{"version":3,"file":"js/chunk-vendors.4f7948c0.js","mappings":"+GAMe,SAASA,EACtBC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGA,IAoBIC,EApBAC,EACuB,oBAAlBT,EAA+BA,EAAcS,QAAUT,EAuDhE,GApDIC,IACFQ,EAAQR,OAASA,EACjBQ,EAAQP,gBAAkBA,EAC1BO,EAAQC,WAAY,GAIlBP,IACFM,EAAQE,YAAa,GAInBN,IACFI,EAAQG,SAAW,UAAYP,GAI7BC,GAEFE,EAAO,SAAUK,GAEfA,EACEA,GACCC,KAAKC,QAAUD,KAAKC,OAAOC,YAC3BF,KAAKG,QAAUH,KAAKG,OAAOF,QAAUD,KAAKG,OAAOF,OAAOC,WAEtDH,GAA0C,qBAAxBK,sBACrBL,EAAUK,qBAGRd,GACFA,EAAae,KAAKL,KAAMD,GAGtBA,GAAWA,EAAQO,uBACrBP,EAAQO,sBAAsBC,IAAIf,EAEtC,EAGAG,EAAQa,aAAed,GACdJ,IACTI,EAAOD,EACH,WACEH,EAAae,KACXL,MACCL,EAAQE,WAAaG,KAAKG,OAASH,MAAMS,MAAMC,SAASC,WAE7D,EACArB,GAGFI,EACF,GAAIC,EAAQE,WAAY,CAGtBF,EAAQiB,cAAgBlB,EAExB,IAAImB,EAAiBlB,EAAQR,OAC7BQ,EAAQR,OAAS,SAAkC2B,EAAGf,GAEpD,OADAL,EAAKW,KAAKN,GACHc,EAAeC,EAAGf,EAC3B,CACF,KAAO,CAEL,IAAIgB,EAAWpB,EAAQqB,aACvBrB,EAAQqB,aAAeD,EAAW,GAAGE,OAAOF,EAAUrB,GAAQ,CAACA,EACjE,CAGF,MAAO,CACLwB,QAAShC,EACTS,QAASA,EAEb,C,uDC/FA,EAAQ,OACRwB,EAAOD,QAAU,EAAjB,oB,wBCDA,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACRC,EAAOD,QAAU,EAAjB,a,uBCJA,EAAQ,OACR,EAAQ,OACRC,EAAOD,QAAU,WAAoC,W,oBCFrDC,EAAOD,QAAU,SAAUE,GACzB,GAAiB,mBAANA,EAAkB,MAAMC,UAAUD,EAAK,uBAClD,OAAOA,CACT,C,oBCHAD,EAAOD,QAAU,WAA0B,C,wBCA3C,IAAII,EAAW,EAAQ,OACvBH,EAAOD,QAAU,SAAUE,GACzB,IAAKE,EAASF,GAAK,MAAMC,UAAUD,EAAK,sBACxC,OAAOA,CACT,C,wBCFA,IAAIG,EAAY,EAAQ,OACpBC,EAAW,EAAQ,OACnBC,EAAkB,EAAQ,MAC9BN,EAAOD,QAAU,SAAUQ,GACzB,OAAO,SAAUC,EAAOC,EAAIC,GAC1B,IAGIC,EAHAC,EAAIR,EAAUI,GACdK,EAASR,EAASO,EAAEC,QACpBC,EAAQR,EAAgBI,EAAWG,GAIvC,GAAIN,GAAeE,GAAMA,GAAI,MAAOI,EAASC,EAG3C,GAFAH,EAAQC,EAAEE,KAENH,GAASA,EAAO,OAAO,OAEtB,KAAME,EAASC,EAAOA,IAAS,IAAIP,GAAeO,KAASF,IAC5DA,EAAEE,KAAWL,EAAI,OAAOF,GAAeO,GAAS,EACpD,OAAQP,IAAgB,CAC5B,CACF,C,oBCtBA,IAAIQ,EAAW,CAAC,EAAEA,SAElBf,EAAOD,QAAU,SAAUE,GACzB,OAAOc,EAAS7B,KAAKe,GAAIe,MAAM,GAAI,EACrC,C,oBCJA,IAAIC,EAAOjB,EAAOD,QAAU,CAAEmB,QAAS,UACrB,iBAAPC,MAAiBA,IAAMF,E,wBCAlC,IAAIG,EAAY,EAAQ,OACxBpB,EAAOD,QAAU,SAAUsB,EAAIC,EAAMT,GAEnC,GADAO,EAAUC,QACGE,IAATD,EAAoB,OAAOD,EAC/B,OAAQR,GACN,KAAK,EAAG,OAAO,SAAUW,GACvB,OAAOH,EAAGnC,KAAKoC,EAAME,EACvB,EACA,KAAK,EAAG,OAAO,SAAUA,EAAGC,GAC1B,OAAOJ,EAAGnC,KAAKoC,EAAME,EAAGC,EAC1B,EACA,KAAK,EAAG,OAAO,SAAUD,EAAGC,EAAGC,GAC7B,OAAOL,EAAGnC,KAAKoC,EAAME,EAAGC,EAAGC,EAC7B,EAEF,OAAO,WACL,OAAOL,EAAGM,MAAML,EAAMM,UACxB,CACF,C,oBClBA5B,EAAOD,QAAU,SAAUE,GACzB,QAAUsB,GAANtB,EAAiB,MAAMC,UAAU,yBAA2BD,GAChE,OAAOA,CACT,C,wBCHAD,EAAOD,SAAW,EAAQ,MAAR,EAAoB,WACpC,OAA+E,GAAxE8B,OAAOC,eAAe,CAAC,EAAG,IAAK,CAAEC,IAAK,WAAc,OAAO,CAAG,IAAKP,CAC5E,G,wBCHA,IAAIrB,EAAW,EAAQ,OACnB6B,EAAW,kBAEXC,EAAK9B,EAAS6B,IAAa7B,EAAS6B,EAASE,eACjDlC,EAAOD,QAAU,SAAUE,GACzB,OAAOgC,EAAKD,EAASE,cAAcjC,GAAM,CAAC,CAC5C,C,oBCLAD,EAAOD,QAAU,gGAEfoC,MAAM,I,wBCFR,IAAIC,EAAU,EAAQ,OAClBC,EAAO,EAAQ,OACfC,EAAM,EAAQ,OAClBtC,EAAOD,QAAU,SAAUE,GACzB,IAAIsC,EAASH,EAAQnC,GACjBuC,EAAaH,EAAKI,EACtB,GAAID,EAAY,CACd,IAGIE,EAHAC,EAAUH,EAAWvC,GACrB2C,EAASN,EAAIG,EACbI,EAAI,EAER,MAAOF,EAAQ9B,OAASgC,EAAOD,EAAO1D,KAAKe,EAAIyC,EAAMC,EAAQE,OAAON,EAAOO,KAAKJ,EAClF,CAAE,OAAOH,CACX,C,wBCdA,IAAIQ,EAAS,EAAQ,OACjB9B,EAAO,EAAQ,OACf+B,EAAM,EAAQ,OACdC,EAAO,EAAQ,OACfC,EAAM,EAAQ,MACdC,EAAY,YAEZC,EAAU,SAAUC,EAAMC,EAAMC,GAClC,IASIb,EAAKc,EAAKC,EATVC,EAAYL,EAAOD,EAAQO,EAC3BC,EAAYP,EAAOD,EAAQS,EAC3BC,EAAYT,EAAOD,EAAQW,EAC3BC,EAAWX,EAAOD,EAAQa,EAC1BC,EAAUb,EAAOD,EAAQe,EACzBC,EAAUf,EAAOD,EAAQiB,EACzBtE,EAAU6D,EAAY3C,EAAOA,EAAKqC,KAAUrC,EAAKqC,GAAQ,CAAC,GAC1DgB,EAAWvE,EAAQoD,GACnBoB,EAASX,EAAYb,EAASe,EAAYf,EAAOO,IAASP,EAAOO,IAAS,CAAC,GAAGH,GAGlF,IAAKT,KADDkB,IAAWL,EAASD,GACZC,EAEVC,GAAOE,GAAaa,QAA0BhD,IAAhBgD,EAAO7B,GACjCc,GAAON,EAAInD,EAAS2C,KAExBe,EAAMD,EAAMe,EAAO7B,GAAOa,EAAOb,GAEjC3C,EAAQ2C,GAAOkB,GAAmC,mBAAfW,EAAO7B,GAAqBa,EAAOb,GAEpEwB,GAAWV,EAAMR,EAAIS,EAAKV,GAE1BqB,GAAWG,EAAO7B,IAAQe,EAAM,SAAWe,GAC3C,IAAIb,EAAI,SAAUnC,EAAGC,EAAGC,GACtB,GAAI7C,gBAAgB2F,EAAG,CACrB,OAAQ5C,UAAUf,QAChB,KAAK,EAAG,OAAO,IAAI2D,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAEhD,GACrB,KAAK,EAAG,OAAO,IAAIgD,EAAEhD,EAAGC,GACxB,OAAO,IAAI+C,EAAEhD,EAAGC,EAAGC,EACvB,CAAE,OAAO8C,EAAE7C,MAAM9C,KAAM+C,UACzB,EAEA,OADA+B,EAAER,GAAaqB,EAAErB,GACVQ,CAER,CAbiC,CAa/BF,GAAOO,GAA0B,mBAAPP,EAAoBT,EAAIyB,SAASvF,KAAMuE,GAAOA,EAEvEO,KACDjE,EAAQ2E,UAAY3E,EAAQ2E,QAAU,CAAC,IAAIhC,GAAOe,EAE/CJ,EAAOD,EAAQuB,GAAKL,IAAaA,EAAS5B,IAAMO,EAAKqB,EAAU5B,EAAKe,IAG9E,EAEAL,EAAQO,EAAI,EACZP,EAAQS,EAAI,EACZT,EAAQW,EAAI,EACZX,EAAQa,EAAI,EACZb,EAAQe,EAAI,GACZf,EAAQiB,EAAI,GACZjB,EAAQwB,EAAI,GACZxB,EAAQuB,EAAI,IACZ3E,EAAOD,QAAUqD,C,oBC7DjBpD,EAAOD,QAAU,SAAU8E,GACzB,IACE,QAASA,GACX,CAAE,MAAOC,GACP,OAAO,CACT,CACF,C,oBCLA,IAAI/B,EAAS/C,EAAOD,QAA2B,oBAAVgF,QAAyBA,OAAOC,MAAQA,KACzED,OAAwB,oBAARE,MAAuBA,KAAKD,MAAQA,KAAOC,KAE3DR,SAAS,cAATA,GACc,iBAAPS,MAAiBA,IAAMnC,E,mBCLlC,IAAIoC,EAAiB,CAAC,EAAEA,eACxBnF,EAAOD,QAAU,SAAUE,EAAIyC,GAC7B,OAAOyC,EAAejG,KAAKe,EAAIyC,EACjC,C,wBCHA,IAAI0C,EAAK,EAAQ,OACbC,EAAa,EAAQ,OACzBrF,EAAOD,QAAU,EAAQ,OAAoB,SAAUuF,EAAQ5C,EAAK/B,GAClE,OAAOyE,EAAG3C,EAAE6C,EAAQ5C,EAAK2C,EAAW,EAAG1E,GACzC,EAAI,SAAU2E,EAAQ5C,EAAK/B,GAEzB,OADA2E,EAAO5C,GAAO/B,EACP2E,CACT,C,wBCPA,IAAItD,EAAW,kBACfhC,EAAOD,QAAUiC,GAAYA,EAASuD,e,wBCDtCvF,EAAOD,SAAW,EAAQ,SAAsB,EAAQ,MAAR,EAAoB,WAClE,OAA4G,GAArG8B,OAAOC,eAAe,EAAQ,MAAR,CAAyB,OAAQ,IAAK,CAAEC,IAAK,WAAc,OAAO,CAAG,IAAKP,CACzG,G,wBCDA,IAAIgE,EAAM,EAAQ,OAElBxF,EAAOD,QAAU8B,OAAO,KAAK4D,qBAAqB,GAAK5D,OAAS,SAAU5B,GACxE,MAAkB,UAAXuF,EAAIvF,GAAkBA,EAAGkC,MAAM,IAAMN,OAAO5B,EACrD,C,wBCJA,IAAIuF,EAAM,EAAQ,OAClBxF,EAAOD,QAAU2F,MAAMC,SAAW,SAAiBC,GACjD,MAAmB,SAAZJ,EAAII,EACb,C,oBCJA5F,EAAOD,QAAU,SAAUE,GACzB,MAAqB,kBAAPA,EAAyB,OAAPA,EAA4B,oBAAPA,CACvD,C,qCCDA,IAAI4F,EAAS,EAAQ,OACjBC,EAAa,EAAQ,OACrBC,EAAiB,EAAQ,OACzBC,EAAoB,CAAC,EAGzB,EAAQ,MAAR,CAAmBA,EAAmB,EAAQ,MAAR,CAAkB,aAAa,WAAc,OAAOnH,IAAM,IAEhGmB,EAAOD,QAAU,SAAUkG,EAAaC,EAAMC,GAC5CF,EAAYG,UAAYP,EAAOG,EAAmB,CAAEG,KAAML,EAAW,EAAGK,KACxEJ,EAAeE,EAAaC,EAAO,YACrC,C,qCCXA,IAAIG,EAAU,EAAQ,OAClBjD,EAAU,EAAQ,OAClBkD,EAAW,EAAQ,OACnBrD,EAAO,EAAQ,OACfsD,EAAY,EAAQ,OACpBC,EAAc,EAAQ,OACtBT,EAAiB,EAAQ,OACzBU,EAAiB,EAAQ,OACzBC,EAAW,EAAQ,MAAR,CAAkB,YAC7BC,IAAU,GAAGC,MAAQ,QAAU,GAAGA,QAClCC,EAAc,aACdC,EAAO,OACPC,EAAS,SAETC,EAAa,WAAc,OAAOnI,IAAM,EAE5CmB,EAAOD,QAAU,SAAUkH,EAAMf,EAAMD,EAAaE,EAAMe,EAASC,EAAQC,GACzEZ,EAAYP,EAAaC,EAAMC,GAC/B,IAeIkB,EAAS3E,EAAKsD,EAfdsB,EAAY,SAAUC,GACxB,IAAKZ,GAASY,KAAQC,EAAO,OAAOA,EAAMD,GAC1C,OAAQA,GACN,KAAKT,EAAM,OAAO,WAAkB,OAAO,IAAIb,EAAYpH,KAAM0I,EAAO,EACxE,KAAKR,EAAQ,OAAO,WAAoB,OAAO,IAAId,EAAYpH,KAAM0I,EAAO,EAC5E,OAAO,WAAqB,OAAO,IAAItB,EAAYpH,KAAM0I,EAAO,CACpE,EACIE,EAAMvB,EAAO,YACbwB,EAAaR,GAAWH,EACxBY,GAAa,EACbH,EAAQP,EAAKb,UACbwB,EAAUJ,EAAMd,IAAac,EAAMX,IAAgBK,GAAWM,EAAMN,GACpEW,EAAWD,GAAWN,EAAUJ,GAChCY,EAAWZ,EAAWQ,EAAwBJ,EAAU,WAArBO,OAAkCtG,EACrEwG,EAAqB,SAAR7B,GAAkBsB,EAAMQ,SAAqBJ,EAwB9D,GArBIG,IACF/B,EAAoBS,EAAesB,EAAW7I,KAAK,IAAI+H,IACnDjB,IAAsBnE,OAAOuE,WAAaJ,EAAkBG,OAE9DJ,EAAeC,EAAmByB,GAAK,GAElCpB,GAAiD,mBAA/BL,EAAkBU,IAAyBzD,EAAK+C,EAAmBU,EAAUM,KAIpGU,GAAcE,GAAWA,EAAQtE,OAASyD,IAC5CY,GAAa,EACbE,EAAW,WAAoB,OAAOD,EAAQ1I,KAAKL,KAAO,GAGtDwH,IAAWe,IAAYT,IAASgB,GAAeH,EAAMd,IACzDzD,EAAKuE,EAAOd,EAAUmB,GAGxBtB,EAAUL,GAAQ2B,EAClBtB,EAAUkB,GAAOT,EACbE,EAMF,GALAG,EAAU,CACRY,OAAQP,EAAaG,EAAWP,EAAUP,GAC1CH,KAAMO,EAASU,EAAWP,EAAUR,GACpCkB,QAASF,GAEPV,EAAQ,IAAK1E,KAAO2E,EAChB3E,KAAO8E,GAAQlB,EAASkB,EAAO9E,EAAK2E,EAAQ3E,SAC7CU,EAAQA,EAAQa,EAAIb,EAAQO,GAAKgD,GAASgB,GAAazB,EAAMmB,GAEtE,OAAOA,CACT,C,oBCpEArH,EAAOD,QAAU,SAAUmI,EAAMvH,GAC/B,MAAO,CAAEA,MAAOA,EAAOuH,OAAQA,EACjC,C,oBCFAlI,EAAOD,QAAU,CAAC,C,oBCAlBC,EAAOD,SAAU,C,wBCAjB,IAAIoI,EAAO,EAAQ,KAAR,CAAkB,QACzBhI,EAAW,EAAQ,OACnB+C,EAAM,EAAQ,MACdkF,EAAU,WACVC,EAAK,EACLC,EAAezG,OAAOyG,cAAgB,WACxC,OAAO,CACT,EACIC,GAAU,EAAQ,MAAR,EAAoB,WAChC,OAAOD,EAAazG,OAAO2G,kBAAkB,CAAC,GAChD,IACIC,EAAU,SAAUxI,GACtBmI,EAAQnI,EAAIkI,EAAM,CAAExH,MAAO,CACzBkC,EAAG,OAAQwF,EACXK,EAAG,CAAC,IAER,EACIC,EAAU,SAAU1I,EAAI4F,GAE1B,IAAK1F,EAASF,GAAK,MAAoB,iBAANA,EAAiBA,GAAmB,iBAANA,EAAiB,IAAM,KAAOA,EAC7F,IAAKiD,EAAIjD,EAAIkI,GAAO,CAElB,IAAKG,EAAarI,GAAK,MAAO,IAE9B,IAAK4F,EAAQ,MAAO,IAEpB4C,EAAQxI,EAEV,CAAE,OAAOA,EAAGkI,GAAMtF,CACpB,EACI+F,EAAU,SAAU3I,EAAI4F,GAC1B,IAAK3C,EAAIjD,EAAIkI,GAAO,CAElB,IAAKG,EAAarI,GAAK,OAAO,EAE9B,IAAK4F,EAAQ,OAAO,EAEpB4C,EAAQxI,EAEV,CAAE,OAAOA,EAAGkI,GAAMO,CACpB,EAEIG,EAAW,SAAU5I,GAEvB,OADIsI,GAAUO,EAAKC,MAAQT,EAAarI,KAAQiD,EAAIjD,EAAIkI,IAAOM,EAAQxI,GAChEA,CACT,EACI6I,EAAO9I,EAAOD,QAAU,CAC1BiJ,IAAKb,EACLY,MAAM,EACNJ,QAASA,EACTC,QAASA,EACTC,SAAUA,E,qCCjDZ,IAAII,EAAc,EAAQ,OACtB7G,EAAU,EAAQ,OAClBC,EAAO,EAAQ,OACfC,EAAM,EAAQ,OACd4G,EAAW,EAAQ,OACnBC,EAAU,EAAQ,OAClBC,EAAUvH,OAAOwH,OAGrBrJ,EAAOD,SAAWqJ,GAAW,EAAQ,MAAR,EAAoB,WAC/C,IAAIE,EAAI,CAAC,EACLnF,EAAI,CAAC,EAELJ,EAAIwF,SACJC,EAAI,uBAGR,OAFAF,EAAEvF,GAAK,EACPyF,EAAErH,MAAM,IAAIsH,SAAQ,SAAUC,GAAKvF,EAAEuF,GAAKA,CAAG,IACjB,GAArBN,EAAQ,CAAC,EAAGE,GAAGvF,IAAWlC,OAAO+E,KAAKwC,EAAQ,CAAC,EAAGjF,IAAIwF,KAAK,KAAOH,CAC3E,IAAK,SAAgBjF,EAAQhB,GAC3B,IAAIqG,EAAIV,EAAS3E,GACbsF,EAAOjI,UAAUf,OACjBC,EAAQ,EACR0B,EAAaH,EAAKI,EAClBG,EAASN,EAAIG,EACjB,MAAOoH,EAAO/I,EAAO,CACnB,IAII4B,EAJAqB,EAAIoF,EAAQvH,UAAUd,MACtB8F,EAAOpE,EAAaJ,EAAQ2B,GAAGjE,OAAO0C,EAAWuB,IAAM3B,EAAQ2B,GAC/DlD,EAAS+F,EAAK/F,OACdiJ,EAAI,EAER,MAAOjJ,EAASiJ,EACdpH,EAAMkE,EAAKkD,KACNb,IAAerG,EAAO1D,KAAK6E,EAAGrB,KAAMkH,EAAElH,GAAOqB,EAAErB,GAExD,CAAE,OAAOkH,CACX,EAAIR,C,wBCpCJ,IAAIW,EAAW,EAAQ,OACnBC,EAAM,EAAQ,OACdC,EAAc,EAAQ,OACtBC,EAAW,EAAQ,MAAR,CAAyB,YACpCC,EAAQ,WAA0B,EAClChH,EAAY,YAGZiH,EAAa,WAEf,IAIIC,EAJAC,EAAS,EAAQ,MAAR,CAAyB,UAClCzH,EAAIoH,EAAYpJ,OAChB0J,EAAK,IACLC,EAAK,IAETF,EAAOG,MAAMC,QAAU,OACvB,qBAA+BJ,GAC/BA,EAAOK,IAAM,cAGbN,EAAiBC,EAAOM,cAAc5I,SACtCqI,EAAeQ,OACfR,EAAeS,MAAMP,EAAK,SAAWC,EAAK,oBAAsBD,EAAK,UAAYC,GACjFH,EAAeU,QACfX,EAAaC,EAAe1G,EAC5B,MAAOd,WAAYuH,EAAWjH,GAAW8G,EAAYpH,IACrD,OAAOuH,GACT,EAEApK,EAAOD,QAAU8B,OAAOgE,QAAU,SAAgBjF,EAAGoK,GACnD,IAAIzI,EAQJ,OAPU,OAAN3B,GACFuJ,EAAMhH,GAAa4G,EAASnJ,GAC5B2B,EAAS,IAAI4H,EACbA,EAAMhH,GAAa,KAEnBZ,EAAO2H,GAAYtJ,GACd2B,EAAS6H,SACM7I,IAAfyJ,EAA2BzI,EAASyH,EAAIzH,EAAQyI,EACzD,C,wBCxCA,IAAIjB,EAAW,EAAQ,OACnBkB,EAAiB,EAAQ,OACzBC,EAAc,EAAQ,OACtB9F,EAAKvD,OAAOC,eAEhB/B,EAAQ0C,EAAI,EAAQ,OAAoBZ,OAAOC,eAAiB,SAAwBlB,EAAGqD,EAAGkH,GAI5F,GAHApB,EAASnJ,GACTqD,EAAIiH,EAAYjH,GAAG,GACnB8F,EAASoB,GACLF,EAAgB,IAClB,OAAO7F,EAAGxE,EAAGqD,EAAGkH,EAClB,CAAE,MAAOrG,GAAiB,CAC1B,GAAI,QAASqG,GAAc,QAASA,EAAY,MAAMjL,UAAU,4BAEhE,MADI,UAAWiL,IAAYvK,EAAEqD,GAAKkH,EAAWxK,OACtCC,CACT,C,wBCfA,IAAIwE,EAAK,EAAQ,OACb2E,EAAW,EAAQ,OACnB3H,EAAU,EAAQ,OAEtBpC,EAAOD,QAAU,EAAQ,OAAoB8B,OAAOuJ,iBAAmB,SAA0BxK,EAAGoK,GAClGjB,EAASnJ,GACT,IAGIqD,EAHA2C,EAAOxE,EAAQ4I,GACfnK,EAAS+F,EAAK/F,OACdgC,EAAI,EAER,MAAOhC,EAASgC,EAAGuC,EAAG3C,EAAE7B,EAAGqD,EAAI2C,EAAK/D,KAAMmI,EAAW/G,IACrD,OAAOrD,CACT,C,wBCZA,IAAI0B,EAAM,EAAQ,OACd+C,EAAa,EAAQ,OACrBjF,EAAY,EAAQ,OACpB8K,EAAc,EAAQ,OACtBhI,EAAM,EAAQ,MACd+H,EAAiB,EAAQ,OACzBI,EAAOxJ,OAAOyJ,yBAElBvL,EAAQ0C,EAAI,EAAQ,OAAoB4I,EAAO,SAAkCzK,EAAGqD,GAGlF,GAFArD,EAAIR,EAAUQ,GACdqD,EAAIiH,EAAYjH,GAAG,GACfgH,EAAgB,IAClB,OAAOI,EAAKzK,EAAGqD,EACjB,CAAE,MAAOa,GAAiB,CAC1B,GAAI5B,EAAItC,EAAGqD,GAAI,OAAOoB,GAAY/C,EAAIG,EAAEvD,KAAK0B,EAAGqD,GAAIrD,EAAEqD,GACxD,C,wBCdA,IAAI7D,EAAY,EAAQ,OACpBmL,EAAO,WACPxK,EAAW,CAAC,EAAEA,SAEdyK,EAA+B,iBAAVzG,QAAsBA,QAAUlD,OAAO4J,oBAC5D5J,OAAO4J,oBAAoB1G,QAAU,GAErC2G,EAAiB,SAAUzL,GAC7B,IACE,OAAOsL,EAAKtL,EACd,CAAE,MAAO6E,GACP,OAAO0G,EAAYxK,OACrB,CACF,EAEAhB,EAAOD,QAAQ0C,EAAI,SAA6BxC,GAC9C,OAAOuL,GAAoC,mBAArBzK,EAAS7B,KAAKe,GAA2ByL,EAAezL,GAAMsL,EAAKnL,EAAUH,GACrG,C,wBCjBA,IAAI0L,EAAQ,EAAQ,OAChBC,EAAa,gBAAmC,SAAU,aAE9D7L,EAAQ0C,EAAIZ,OAAO4J,qBAAuB,SAA6B7K,GACrE,OAAO+K,EAAM/K,EAAGgL,EAClB,C,sBCNA7L,EAAQ0C,EAAIZ,OAAOgK,qB,wBCCnB,IAAI3I,EAAM,EAAQ,MACdgG,EAAW,EAAQ,OACnBgB,EAAW,EAAQ,MAAR,CAAyB,YACpC4B,EAAcjK,OAAOuE,UAEzBpG,EAAOD,QAAU8B,OAAO4E,gBAAkB,SAAU7F,GAElD,OADAA,EAAIsI,EAAStI,GACTsC,EAAItC,EAAGsJ,GAAkBtJ,EAAEsJ,GACH,mBAAjBtJ,EAAEmL,aAA6BnL,aAAaA,EAAEmL,YAChDnL,EAAEmL,YAAY3F,UACdxF,aAAaiB,OAASiK,EAAc,IAC/C,C,wBCZA,IAAI5I,EAAM,EAAQ,MACd9C,EAAY,EAAQ,OACpB4L,EAAe,EAAQ,MAAR,EAA6B,GAC5C9B,EAAW,EAAQ,MAAR,CAAyB,YAExClK,EAAOD,QAAU,SAAUuF,EAAQ2G,GACjC,IAGIvJ,EAHA9B,EAAIR,EAAUkF,GACdzC,EAAI,EACJN,EAAS,GAEb,IAAKG,KAAO9B,EAAO8B,GAAOwH,GAAUhH,EAAItC,EAAG8B,IAAQH,EAAOO,KAAKJ,GAE/D,MAAOuJ,EAAMpL,OAASgC,EAAOK,EAAItC,EAAG8B,EAAMuJ,EAAMpJ,SAC7CmJ,EAAazJ,EAAQG,IAAQH,EAAOO,KAAKJ,IAE5C,OAAOH,CACT,C,wBCfA,IAAIoJ,EAAQ,EAAQ,OAChB1B,EAAc,EAAQ,OAE1BjK,EAAOD,QAAU8B,OAAO+E,MAAQ,SAAchG,GAC5C,OAAO+K,EAAM/K,EAAGqJ,EAClB,C,sBCNAlK,EAAQ0C,EAAI,CAAC,EAAEgD,oB,oBCAfzF,EAAOD,QAAU,SAAUmM,EAAQvL,GACjC,MAAO,CACLwL,aAAuB,EAATD,GACdE,eAAyB,EAATF,GAChBG,WAAqB,EAATH,GACZvL,MAAOA,EAEX,C,wBCPAX,EAAOD,QAAU,EAAjB,M,wBCAA,IAAIuM,EAAM,WACNpJ,EAAM,EAAQ,MACduE,EAAM,EAAQ,MAAR,CAAkB,eAE5BzH,EAAOD,QAAU,SAAUE,EAAIsM,EAAKC,GAC9BvM,IAAOiD,EAAIjD,EAAKuM,EAAOvM,EAAKA,EAAGmG,UAAWqB,IAAM6E,EAAIrM,EAAIwH,EAAK,CAAE2E,cAAc,EAAMzL,MAAO4L,GAChG,C,wBCNA,IAAIE,EAAS,EAAQ,MAAR,CAAqB,QAC9BC,EAAM,EAAQ,MAClB1M,EAAOD,QAAU,SAAU2C,GACzB,OAAO+J,EAAO/J,KAAS+J,EAAO/J,GAAOgK,EAAIhK,GAC3C,C,wBCJA,IAAIzB,EAAO,EAAQ,OACf8B,EAAS,EAAQ,OACjB4J,EAAS,qBACTC,EAAQ7J,EAAO4J,KAAY5J,EAAO4J,GAAU,CAAC,IAEhD3M,EAAOD,QAAU,SAAU2C,EAAK/B,GAC/B,OAAOiM,EAAMlK,KAASkK,EAAMlK,QAAiBnB,IAAVZ,EAAsBA,EAAQ,CAAC,EACpE,GAAG,WAAY,IAAImC,KAAK,CACtB5B,QAASD,EAAKC,QACd2L,KAAM,EAAQ,OAAgB,OAAS,SACvCC,UAAW,wC,uBCVb,IAAIC,EAAY,EAAQ,OACpBC,EAAU,EAAQ,OAGtBhN,EAAOD,QAAU,SAAUkN,GACzB,OAAO,SAAU3L,EAAM4L,GACrB,IAGI1L,EAAGC,EAHH0L,EAAIC,OAAOJ,EAAQ1L,IACnBuB,EAAIkK,EAAUG,GACdG,EAAIF,EAAEtM,OAEV,OAAIgC,EAAI,GAAKA,GAAKwK,EAAUJ,EAAY,QAAK1L,GAC7CC,EAAI2L,EAAEG,WAAWzK,GACVrB,EAAI,OAAUA,EAAI,OAAUqB,EAAI,IAAMwK,IAAM5L,EAAI0L,EAAEG,WAAWzK,EAAI,IAAM,OAAUpB,EAAI,MACxFwL,EAAYE,EAAEI,OAAO1K,GAAKrB,EAC1ByL,EAAYE,EAAEnM,MAAM6B,EAAGA,EAAI,GAA2BpB,EAAI,OAAzBD,EAAI,OAAU,IAAqB,MAC1E,CACF,C,uBChBA,IAAIuL,EAAY,EAAQ,OACpBS,EAAMxI,KAAKwI,IACXC,EAAMzI,KAAKyI,IACfzN,EAAOD,QAAU,SAAUe,EAAOD,GAEhC,OADAC,EAAQiM,EAAUjM,GACXA,EAAQ,EAAI0M,EAAI1M,EAAQD,EAAQ,GAAK4M,EAAI3M,EAAOD,EACzD,C,oBCLA,IAAI6M,EAAO1I,KAAK0I,KACZC,EAAQ3I,KAAK2I,MACjB3N,EAAOD,QAAU,SAAUE,GACzB,OAAO2N,MAAM3N,GAAMA,GAAM,GAAKA,EAAK,EAAI0N,EAAQD,GAAMzN,EACvD,C,wBCJA,IAAIkJ,EAAU,EAAQ,OAClB6D,EAAU,EAAQ,OACtBhN,EAAOD,QAAU,SAAUE,GACzB,OAAOkJ,EAAQ6D,EAAQ/M,GACzB,C,wBCJA,IAAI8M,EAAY,EAAQ,OACpBU,EAAMzI,KAAKyI,IACfzN,EAAOD,QAAU,SAAUE,GACzB,OAAOA,EAAK,EAAIwN,EAAIV,EAAU9M,GAAK,kBAAoB,CACzD,C,wBCJA,IAAI+M,EAAU,EAAQ,OACtBhN,EAAOD,QAAU,SAAUE,GACzB,OAAO4B,OAAOmL,EAAQ/M,GACxB,C,wBCHA,IAAIE,EAAW,EAAQ,OAGvBH,EAAOD,QAAU,SAAUE,EAAI8D,GAC7B,IAAK5D,EAASF,GAAK,OAAOA,EAC1B,IAAIoB,EAAIwM,EACR,GAAI9J,GAAkC,mBAArB1C,EAAKpB,EAAGc,YAA4BZ,EAAS0N,EAAMxM,EAAGnC,KAAKe,IAAM,OAAO4N,EACzF,GAAgC,mBAApBxM,EAAKpB,EAAG6N,WAA2B3N,EAAS0N,EAAMxM,EAAGnC,KAAKe,IAAM,OAAO4N,EACnF,IAAK9J,GAAkC,mBAArB1C,EAAKpB,EAAGc,YAA4BZ,EAAS0N,EAAMxM,EAAGnC,KAAKe,IAAM,OAAO4N,EAC1F,MAAM3N,UAAU,0CAClB,C,mBCXA,IAAImI,EAAK,EACL0F,EAAK/I,KAAKgJ,SACdhO,EAAOD,QAAU,SAAU2C,GACzB,MAAO,UAAU5C,YAAeyB,IAARmB,EAAoB,GAAKA,EAAK,QAAS2F,EAAK0F,GAAIhN,SAAS,IACnF,C,wBCJA,IAAIgC,EAAS,EAAQ,OACjB9B,EAAO,EAAQ,OACfoF,EAAU,EAAQ,OAClB4H,EAAS,EAAQ,OACjBnM,EAAiB,WACrB9B,EAAOD,QAAU,SAAUuD,GACzB,IAAI4K,EAAUjN,EAAKsI,SAAWtI,EAAKsI,OAASlD,EAAU,CAAC,EAAItD,EAAOwG,QAAU,CAAC,GACvD,KAAlBjG,EAAKiK,OAAO,IAAejK,KAAQ4K,GAAUpM,EAAeoM,EAAS5K,EAAM,CAAE3C,MAAOsN,EAAOxL,EAAEa,IACnG,C,wBCRAvD,EAAQ0C,EAAI,EAAZ,M,wBCAA,IAAImK,EAAQ,EAAQ,MAAR,CAAqB,OAC7BF,EAAM,EAAQ,MACdnD,EAAS,gBACT4E,EAA8B,mBAAV5E,EAEpB6E,EAAWpO,EAAOD,QAAU,SAAUuD,GACxC,OAAOsJ,EAAMtJ,KAAUsJ,EAAMtJ,GAC3B6K,GAAc5E,EAAOjG,KAAU6K,EAAa5E,EAASmD,GAAK,UAAYpJ,GAC1E,EAEA8K,EAASxB,MAAQA,C,qCCTjB,IAAIyB,EAAmB,EAAQ,OAC3BC,EAAO,EAAQ,OACf/H,EAAY,EAAQ,OACpBnG,EAAY,EAAQ,OAMxBJ,EAAOD,QAAU,EAAQ,MAAR,CAA0B2F,MAAO,SAAS,SAAU6I,EAAUhH,GAC7E1I,KAAK2P,GAAKpO,EAAUmO,GACpB1P,KAAK4P,GAAK,EACV5P,KAAK6P,GAAKnH,CAEZ,IAAG,WACD,IAAI3G,EAAI/B,KAAK2P,GACTjH,EAAO1I,KAAK6P,GACZ5N,EAAQjC,KAAK4P,KACjB,OAAK7N,GAAKE,GAASF,EAAEC,QACnBhC,KAAK2P,QAAKjN,EACH+M,EAAK,IAEaA,EAAK,EAApB,QAAR/G,EAA+BzG,EACvB,UAARyG,EAAiC3G,EAAEE,GACxB,CAACA,EAAOF,EAAEE,IAC3B,GAAG,UAGHyF,EAAUoI,UAAYpI,EAAUb,MAEhC2I,EAAiB,QACjBA,EAAiB,UACjBA,EAAiB,U,wBChCjB,IAAIjL,EAAU,EAAQ,OAEtBA,EAAQA,EAAQW,EAAIX,EAAQO,EAAG,SAAU,CAAE0F,OAAQ,EAAQ,Q,uDCF3D,IAAIuF,EAAM,EAAQ,KAAR,EAAwB,GAGlC,EAAQ,MAAR,CAA0BxB,OAAQ,UAAU,SAAUmB,GACpD1P,KAAK2P,GAAKpB,OAAOmB,GACjB1P,KAAK4P,GAAK,CAEZ,IAAG,WACD,IAEII,EAFAjO,EAAI/B,KAAK2P,GACT1N,EAAQjC,KAAK4P,GAEjB,OAAI3N,GAASF,EAAEC,OAAe,CAAEF,WAAOY,EAAW2G,MAAM,IACxD2G,EAAQD,EAAIhO,EAAGE,GACfjC,KAAK4P,IAAMI,EAAMhO,OACV,CAAEF,MAAOkO,EAAO3G,MAAM,GAC/B,G,qCCdA,IAAInF,EAAS,EAAQ,OACjBG,EAAM,EAAQ,MACd+F,EAAc,EAAQ,OACtB7F,EAAU,EAAQ,OAClBkD,EAAW,EAAQ,OACnB6B,EAAO,aACP2G,EAAS,EAAQ,OACjBrC,EAAS,EAAQ,OACjB1G,EAAiB,EAAQ,OACzB2G,EAAM,EAAQ,MACdqC,EAAM,EAAQ,OACdd,EAAS,EAAQ,OACjBe,EAAY,EAAQ,OACpBC,EAAW,EAAQ,OACnBtJ,EAAU,EAAQ,OAClBoE,EAAW,EAAQ,OACnB5J,EAAW,EAAQ,OACnB+I,EAAW,EAAQ,OACnB9I,EAAY,EAAQ,OACpB8K,EAAc,EAAQ,OACtB7F,EAAa,EAAQ,OACrB6J,EAAU,EAAQ,OAClBC,EAAU,EAAQ,OAClBC,EAAQ,EAAQ,OAChBC,EAAQ,EAAQ,OAChBC,EAAM,EAAQ,OACd3D,EAAQ,EAAQ,OAChBN,EAAO+D,EAAM3M,EACb2C,EAAKkK,EAAI7M,EACT8I,EAAO4D,EAAQ1M,EACfyL,EAAUnL,EAAOwG,OACjBgG,EAAQxM,EAAOyM,KACfC,EAAaF,GAASA,EAAMG,UAC5BvM,EAAY,YACZwM,EAASZ,EAAI,WACba,EAAeb,EAAI,eACnBnM,EAAS,CAAC,EAAE6C,qBACZoK,EAAiBpD,EAAO,mBACxBqD,EAAarD,EAAO,WACpBsD,EAAYtD,EAAO,cACnBX,EAAcjK,OAAOsB,GACrB6M,EAA+B,mBAAX9B,KAA2BmB,EAAM5M,EACrDwN,EAAUlN,EAAOkN,QAEjBC,GAAUD,IAAYA,EAAQ9M,KAAe8M,EAAQ9M,GAAWgN,UAGhEC,EAAgBnH,GAAe6F,GAAO,WACxC,OAES,GAFFI,EAAQ9J,EAAG,CAAC,EAAG,IAAK,CACzBrD,IAAK,WAAc,OAAOqD,EAAGvG,KAAM,IAAK,CAAE8B,MAAO,IAAKa,CAAG,KACvDA,CACN,IAAK,SAAUvB,EAAIyC,EAAK2N,GACtB,IAAIC,EAAYjF,EAAKS,EAAapJ,GAC9B4N,UAAkBxE,EAAYpJ,GAClC0C,EAAGnF,EAAIyC,EAAK2N,GACRC,GAAarQ,IAAO6L,GAAa1G,EAAG0G,EAAapJ,EAAK4N,EAC5D,EAAIlL,EAEAmL,EAAO,SAAUhE,GACnB,IAAIiE,EAAMV,EAAWvD,GAAO2C,EAAQhB,EAAQ/K,IAE5C,OADAqN,EAAI9B,GAAKnC,EACFiE,CACT,EAEIC,EAAWT,GAAyC,iBAApB9B,EAAQwC,SAAuB,SAAUzQ,GAC3E,MAAoB,iBAANA,CAChB,EAAI,SAAUA,GACZ,OAAOA,aAAciO,CACvB,EAEIyC,EAAkB,SAAwB1Q,EAAIyC,EAAK2N,GAKrD,OAJIpQ,IAAO6L,GAAa6E,EAAgBZ,EAAWrN,EAAK2N,GACxDtG,EAAS9J,GACTyC,EAAMwI,EAAYxI,GAAK,GACvBqH,EAASsG,GACLnN,EAAI4M,EAAYpN,IACb2N,EAAElE,YAIDjJ,EAAIjD,EAAI0P,IAAW1P,EAAG0P,GAAQjN,KAAMzC,EAAG0P,GAAQjN,IAAO,GAC1D2N,EAAInB,EAAQmB,EAAG,CAAElE,WAAY9G,EAAW,GAAG,OAJtCnC,EAAIjD,EAAI0P,IAASvK,EAAGnF,EAAI0P,EAAQtK,EAAW,EAAG,CAAC,IACpDpF,EAAG0P,GAAQjN,IAAO,GAIX0N,EAAcnQ,EAAIyC,EAAK2N,IACzBjL,EAAGnF,EAAIyC,EAAK2N,EACvB,EACIO,EAAoB,SAA0B3Q,EAAIgE,GACpD8F,EAAS9J,GACT,IAGIyC,EAHAkE,EAAOqI,EAAShL,EAAI7D,EAAU6D,IAC9BpB,EAAI,EACJwK,EAAIzG,EAAK/F,OAEb,MAAOwM,EAAIxK,EAAG8N,EAAgB1Q,EAAIyC,EAAMkE,EAAK/D,KAAMoB,EAAEvB,IACrD,OAAOzC,CACT,EACI4Q,EAAU,SAAgB5Q,EAAIgE,GAChC,YAAa1C,IAAN0C,EAAkBiL,EAAQjP,GAAM2Q,EAAkB1B,EAAQjP,GAAKgE,EACxE,EACI6M,EAAwB,SAA8BpO,GACxD,IAAIqO,EAAInO,EAAO1D,KAAKL,KAAM6D,EAAMwI,EAAYxI,GAAK,IACjD,QAAI7D,OAASiN,GAAe5I,EAAI4M,EAAYpN,KAASQ,EAAI6M,EAAWrN,QAC7DqO,IAAM7N,EAAIrE,KAAM6D,KAASQ,EAAI4M,EAAYpN,IAAQQ,EAAIrE,KAAM8Q,IAAW9Q,KAAK8Q,GAAQjN,KAAOqO,EACnG,EACIC,GAA4B,SAAkC/Q,EAAIyC,GAGpE,GAFAzC,EAAKG,EAAUH,GACfyC,EAAMwI,EAAYxI,GAAK,GACnBzC,IAAO6L,IAAe5I,EAAI4M,EAAYpN,IAASQ,EAAI6M,EAAWrN,GAAlE,CACA,IAAI2N,EAAIhF,EAAKpL,EAAIyC,GAEjB,OADI2N,IAAKnN,EAAI4M,EAAYpN,IAAUQ,EAAIjD,EAAI0P,IAAW1P,EAAG0P,GAAQjN,KAAO2N,EAAElE,YAAa,GAChFkE,CAHuE,CAIhF,EACIY,GAAuB,SAA6BhR,GACtD,IAGIyC,EAHAuJ,EAAQV,EAAKnL,EAAUH,IACvBsC,EAAS,GACTM,EAAI,EAER,MAAOoJ,EAAMpL,OAASgC,EACfK,EAAI4M,EAAYpN,EAAMuJ,EAAMpJ,OAASH,GAAOiN,GAAUjN,GAAOyF,GAAM5F,EAAOO,KAAKJ,GACpF,OAAOH,CACX,EACI2O,GAAyB,SAA+BjR,GAC1D,IAIIyC,EAJAyO,EAAQlR,IAAO6L,EACfG,EAAQV,EAAK4F,EAAQpB,EAAY3P,EAAUH,IAC3CsC,EAAS,GACTM,EAAI,EAER,MAAOoJ,EAAMpL,OAASgC,GAChBK,EAAI4M,EAAYpN,EAAMuJ,EAAMpJ,OAAUsO,IAAQjO,EAAI4I,EAAapJ,IAAcH,EAAOO,KAAKgN,EAAWpN,IACxG,OAAOH,CACX,EAGKyN,IACH9B,EAAU,WACR,GAAIrP,gBAAgBqP,EAAS,MAAMhO,UAAU,gCAC7C,IAAIqM,EAAMG,EAAI9K,UAAUf,OAAS,EAAIe,UAAU,QAAKL,GAChD6P,EAAO,SAAUzQ,GACf9B,OAASiN,GAAasF,EAAKlS,KAAK6Q,EAAWpP,GAC3CuC,EAAIrE,KAAM8Q,IAAWzM,EAAIrE,KAAK8Q,GAASpD,KAAM1N,KAAK8Q,GAAQpD,IAAO,GACrE6D,EAAcvR,KAAM0N,EAAKlH,EAAW,EAAG1E,GACzC,EAEA,OADIsI,GAAeiH,GAAQE,EAActE,EAAaS,EAAK,CAAEH,cAAc,EAAMiF,IAAKD,IAC/Eb,EAAKhE,EACd,EACAjG,EAAS4H,EAAQ/K,GAAY,YAAY,WACvC,OAAOtE,KAAK6P,EACd,IAEAU,EAAM3M,EAAIuO,GACV1B,EAAI7M,EAAIkO,EACR,WAA8BxB,EAAQ1M,EAAIwO,GAC1C,WAA6BH,EAC7BzB,EAAM5M,EAAIyO,GAENjI,IAAgB,EAAQ,QAC1B3C,EAASwF,EAAa,uBAAwBgF,GAAuB,GAGvE7C,EAAOxL,EAAI,SAAUa,GACnB,OAAOiN,EAAKxB,EAAIzL,GAClB,GAGFF,EAAQA,EAAQS,EAAIT,EAAQiB,EAAIjB,EAAQO,GAAKqM,EAAY,CAAEzG,OAAQ2E,IAEnE,IAAK,IAAIoD,GAAa,iHAGpBnP,MAAM,KAAM2H,GAAI,EAAGwH,GAAWzQ,OAASiJ,IAAGiF,EAAIuC,GAAWxH,OAE3D,IAAK,IAAIyH,GAAmB5F,EAAMoD,EAAInC,OAAQlD,GAAI,EAAG6H,GAAiB1Q,OAAS6I,IAAIsF,EAAUuC,GAAiB7H,OAE9GtG,EAAQA,EAAQW,EAAIX,EAAQO,GAAKqM,EAAY,SAAU,CAErD,IAAO,SAAUtN,GACf,OAAOQ,EAAI2M,EAAgBnN,GAAO,IAC9BmN,EAAenN,GACfmN,EAAenN,GAAOwL,EAAQxL,EACpC,EAEA8O,OAAQ,SAAgBhB,GACtB,IAAKC,EAASD,GAAM,MAAMtQ,UAAUsQ,EAAM,qBAC1C,IAAK,IAAI9N,KAAOmN,EAAgB,GAAIA,EAAenN,KAAS8N,EAAK,OAAO9N,CAC1E,EACA+O,UAAW,WAAcvB,GAAS,CAAM,EACxCwB,UAAW,WAAcxB,GAAS,CAAO,IAG3C9M,EAAQA,EAAQW,EAAIX,EAAQO,GAAKqM,EAAY,SAAU,CAErDnK,OAAQgL,EAER/O,eAAgB6O,EAEhBvF,iBAAkBwF,EAElBtF,yBAA0B0F,GAE1BvF,oBAAqBwF,GAErBpF,sBAAuBqF,KAKzB,IAAIS,GAAsB7C,GAAO,WAAcO,EAAM5M,EAAE,EAAI,IAE3DW,EAAQA,EAAQW,EAAIX,EAAQO,EAAIgO,GAAqB,SAAU,CAC7D9F,sBAAuB,SAA+B5L,GACpD,OAAOoP,EAAM5M,EAAEyG,EAASjJ,GAC1B,IAIFsP,GAASnM,EAAQA,EAAQW,EAAIX,EAAQO,IAAMqM,GAAclB,GAAO,WAC9D,IAAI/K,EAAImK,IAIR,MAA0B,UAAnBuB,EAAW,CAAC1L,KAA2C,MAAxB0L,EAAW,CAAEjO,EAAGuC,KAAyC,MAAzB0L,EAAW5N,OAAOkC,GAC1F,KAAK,OAAQ,CACX2L,UAAW,SAAmBzP,GAC5B,IAEI2R,EAAUC,EAFVC,EAAO,CAAC7R,GACR4C,EAAI,EAER,MAAOjB,UAAUf,OAASgC,EAAGiP,EAAKhP,KAAKlB,UAAUiB,MAEjD,GADAgP,EAAYD,EAAWE,EAAK,IACvB3R,EAASyR,SAAoBrQ,IAAPtB,KAAoBwQ,EAASxQ,GAMxD,OALK0F,EAAQiM,KAAWA,EAAW,SAAUlP,EAAK/B,GAEhD,GADwB,mBAAbkR,IAAyBlR,EAAQkR,EAAU3S,KAAKL,KAAM6D,EAAK/B,KACjE8P,EAAS9P,GAAQ,OAAOA,CAC/B,GACAmR,EAAK,GAAKF,EACHnC,EAAW9N,MAAM4N,EAAOuC,EACjC,IAIF5D,EAAQ/K,GAAWyM,IAAiB,EAAQ,MAAR,CAAmB1B,EAAQ/K,GAAYyM,EAAc1B,EAAQ/K,GAAW2K,SAE5G/H,EAAemI,EAAS,UAExBnI,EAAef,KAAM,QAAQ,GAE7Be,EAAehD,EAAOyM,KAAM,QAAQ,E,wBCrPpC,EAAQ,MAAR,CAAyB,gB,wBCAzB,EAAQ,MAAR,CAAyB,a,wBCAzB,EAAQ,OAYR,IAXA,IAAIzM,EAAS,EAAQ,OACjBE,EAAO,EAAQ,OACfsD,EAAY,EAAQ,OACpBwL,EAAgB,EAAQ,MAAR,CAAkB,eAElCC,EAAe,wbAIU7P,MAAM,KAE1BU,EAAI,EAAGA,EAAImP,EAAanR,OAAQgC,IAAK,CAC5C,IAAIqD,EAAO8L,EAAanP,GACpBoP,EAAalP,EAAOmD,GACpBsB,EAAQyK,GAAcA,EAAW7L,UACjCoB,IAAUA,EAAMuK,IAAgB9O,EAAKuE,EAAOuK,EAAe7L,GAC/DK,EAAUL,GAAQK,EAAUb,KAC9B,C,qCCjBA,IAAIwM,EAAa,EAAQ,OACrBC,EAAc,EAAQ,OAEtBC,EAAalS,UAGjBF,EAAOD,QAAU,SAAUsS,GACzB,GAAIH,EAAWG,GAAW,OAAOA,EACjC,MAAMD,EAAWD,EAAYE,GAAY,qBAC3C,C,qCCTA,IAAIH,EAAa,EAAQ,OAErBI,EAAUlF,OACVgF,EAAalS,UAEjBF,EAAOD,QAAU,SAAUsS,GACzB,GAAuB,iBAAZA,GAAwBH,EAAWG,GAAW,OAAOA,EAChE,MAAMD,EAAW,aAAeE,EAAQD,GAAY,kBACtD,C,qCCRA,IAAIE,EAAgB,EAAQ,OAExBH,EAAalS,UAEjBF,EAAOD,QAAU,SAAUE,EAAIuS,GAC7B,GAAID,EAAcC,EAAWvS,GAAK,OAAOA,EACzC,MAAMmS,EAAW,uBACnB,C,qCCPA,IAAIjS,EAAW,EAAQ,OAEnBmS,EAAUlF,OACVgF,EAAalS,UAGjBF,EAAOD,QAAU,SAAUsS,GACzB,GAAIlS,EAASkS,GAAW,OAAOA,EAC/B,MAAMD,EAAWE,EAAQD,GAAY,oBACvC,C,iCCRArS,EAAOD,QAAgC,oBAAf0S,aAAiD,oBAAZC,Q,qCCD7D,IAmCIxM,EAAMD,EAAauM,EAnCnBG,EAAsB,EAAQ,OAC9B1J,EAAc,EAAQ,OACtBlG,EAAS,EAAQ,OACjBmP,EAAa,EAAQ,OACrB/R,EAAW,EAAQ,OACnByS,EAAS,EAAQ,OACjBC,EAAU,EAAQ,OAClBV,EAAc,EAAQ,OACtBW,EAA8B,EAAQ,OACtCC,EAAgB,EAAQ,OACxBC,EAAwB,EAAQ,OAChCT,EAAgB,EAAQ,OACxB9L,EAAiB,EAAQ,OACzBwM,EAAiB,EAAQ,OACzBC,EAAkB,EAAQ,MAC1BxG,EAAM,EAAQ,OACdyG,EAAsB,EAAQ,OAE9BC,EAAuBD,EAAoBE,QAC3CC,EAAmBH,EAAoBpR,IACvCwR,EAAYxQ,EAAOwQ,UACnBC,EAAqBD,GAAaA,EAAUnN,UAC5CqN,EAAoB1Q,EAAO0Q,kBAC3BC,EAA6BD,GAAqBA,EAAkBrN,UACpEuN,EAAaJ,GAAa9M,EAAe8M,GACzCK,EAAsBJ,GAAsB/M,EAAe+M,GAC3DK,EAAkBhS,OAAOuE,UACzBlG,EAAY6C,EAAO7C,UAEnB6R,EAAgBmB,EAAgB,eAChCY,EAAkBpH,EAAI,mBACtBqH,EAA0B,wBAE1BC,EAA4BrB,KAAyBM,GAA4C,UAA1BJ,EAAQ9P,EAAOkR,OACtFC,GAA2B,EAG3BC,EAA6B,CAC/BZ,UAAW,EACXa,WAAY,EACZX,kBAAmB,EACnBY,WAAY,EACZC,YAAa,EACbC,WAAY,EACZC,YAAa,EACbC,aAAc,EACdC,aAAc,GAGZC,EAA8B,CAChCC,cAAe,EACfC,eAAgB,GAGdC,EAAS,SAAgB7U,GAC3B,IAAKE,EAASF,GAAK,OAAO,EAC1B,IAAI8U,EAAQlC,EAAQ5S,GACpB,MAAiB,aAAV8U,GACFnC,EAAOuB,EAA4BY,IACnCnC,EAAO+B,EAA6BI,EAC3C,EAEIC,EAA2B,SAAU/U,GACvC,IAAIuH,EAAQf,EAAexG,GAC3B,GAAKE,EAASqH,GAAd,CACA,IAAIyN,EAAQ3B,EAAiB9L,GAC7B,OAAQyN,GAASrC,EAAOqC,EAAOlB,GAA4BkB,EAAMlB,GAA2BiB,EAAyBxN,EAFzF,CAG9B,EAEI0N,EAAe,SAAUjV,GAC3B,IAAKE,EAASF,GAAK,OAAO,EAC1B,IAAI8U,EAAQlC,EAAQ5S,GACpB,OAAO2S,EAAOuB,EAA4BY,IACrCnC,EAAO+B,EAA6BI,EAC3C,EAEII,EAAc,SAAUlV,GAC1B,GAAIiV,EAAajV,GAAK,OAAOA,EAC7B,MAAMC,EAAU,8BAClB,EAEIkV,EAAyB,SAAU5Q,GACrC,GAAI0N,EAAW1N,MAAQyO,GAAkBV,EAAcoB,EAAYnP,IAAK,OAAOA,EAC/E,MAAMtE,EAAUiS,EAAY3N,GAAK,oCACnC,EAEI6Q,EAAyB,SAAUrM,EAAKsM,EAAUC,EAAQ/W,GAC5D,GAAKyK,EAAL,CACA,GAAIsM,EAAQ,IAAK,IAAIC,KAASrB,EAA4B,CACxD,IAAIsB,EAAwB1S,EAAOyS,GACnC,GAAIC,GAAyB7C,EAAO6C,EAAsBrP,UAAW4C,GAAM,WAClEyM,EAAsBrP,UAAU4C,EACzC,CAAE,MAAO0M,GAEP,IACED,EAAsBrP,UAAU4C,GAAOsM,CACzC,CAAE,MAAOK,GAAsB,CACjC,CACF,CACK/B,EAAoB5K,KAAQuM,GAC/BxC,EAAca,EAAqB5K,EAAKuM,EAASD,EAC7CtB,GAA6BR,EAAmBxK,IAAQsM,EAAU9W,EAdhD,CAgB1B,EAEIoX,EAA+B,SAAU5M,EAAKsM,EAAUC,GAC1D,IAAIC,EAAOC,EACX,GAAKxM,EAAL,CACA,GAAIgK,EAAgB,CAClB,GAAIsC,EAAQ,IAAKC,KAASrB,EAExB,GADAsB,EAAwB1S,EAAOyS,GAC3BC,GAAyB7C,EAAO6C,EAAuBzM,GAAM,WACxDyM,EAAsBzM,EAC/B,CAAE,MAAO0M,GAAqB,CAEhC,GAAK/B,EAAW3K,KAAQuM,EAKjB,OAHL,IACE,OAAOxC,EAAcY,EAAY3K,EAAKuM,EAASD,EAAWtB,GAA6BL,EAAW3K,IAAQsM,EAC5G,CAAE,MAAOI,GAAqB,CAElC,CACA,IAAKF,KAASrB,EACZsB,EAAwB1S,EAAOyS,IAC3BC,GAA2BA,EAAsBzM,KAAQuM,GAC3DxC,EAAc0C,EAAuBzM,EAAKsM,EAlBtB,CAqB1B,EAEA,IAAKpP,KAAQiO,EACXlO,EAAclD,EAAOmD,GACrBsM,EAAYvM,GAAeA,EAAYG,UACnCoM,EAAWY,EAAqBZ,GAAWuB,GAA2B9N,EACrE+N,GAA4B,EAGnC,IAAK9N,KAAQyO,EACX1O,EAAclD,EAAOmD,GACrBsM,EAAYvM,GAAeA,EAAYG,UACnCoM,IAAWY,EAAqBZ,GAAWuB,GAA2B9N,GAI5E,KAAK+N,IAA8B9B,EAAWyB,IAAeA,IAAelP,SAAS2B,aAEnFuN,EAAa,WACX,MAAMzT,EAAU,uBAClB,EACI8T,GAA2B,IAAK9N,KAAQiO,EACtCpR,EAAOmD,IAAO+M,EAAelQ,EAAOmD,GAAOyN,GAInD,KAAKK,IAA8BJ,GAAuBA,IAAwBC,KAChFD,EAAsBD,EAAWvN,UAC7B4N,GAA2B,IAAK9N,KAAQiO,EACtCpR,EAAOmD,IAAO+M,EAAelQ,EAAOmD,GAAME,UAAWwN,GAS7D,GAJII,GAA6BvN,EAAeiN,KAAgCE,GAC9EX,EAAeS,EAA4BE,GAGzC3K,IAAgB2J,EAAOgB,EAAqB7B,GAQ9C,IAAK7L,KAPLgO,GAA2B,EAC3BlB,EAAsBY,EAAqB7B,EAAe,CACxD3F,cAAc,EACdrK,IAAK,WACH,OAAO5B,EAAStB,MAAQA,KAAKiV,QAAmBvS,CAClD,IAEW4S,EAAgCpR,EAAOmD,IAClD4M,EAA4B/P,EAAOmD,GAAO4N,EAAiB5N,GAI/DlG,EAAOD,QAAU,CACfiU,0BAA2BA,EAC3BF,gBAAiBI,GAA4BJ,EAC7CqB,YAAaA,EACbC,uBAAwBA,EACxBC,uBAAwBA,EACxBO,6BAA8BA,EAC9BZ,yBAA0BA,EAC1BF,OAAQA,EACRI,aAAcA,EACdvB,WAAYA,EACZC,oBAAqBA,E,qCC9LvB,IAAIiC,EAAoB,EAAQ,OAEhC7V,EAAOD,QAAU,SAAUkG,EAAa6P,GACtC,IAAIhV,EAAQ,EACRD,EAASgV,EAAkBC,GAC3BvT,EAAS,IAAI0D,EAAYpF,GAC7B,MAAOA,EAASC,EAAOyB,EAAOzB,GAASgV,EAAKhV,KAC5C,OAAOyB,CACT,C,qCCRA,IAAIwT,EAAkB,EAAQ,OAC1BzV,EAAkB,EAAQ,OAC1BuV,EAAoB,EAAQ,OAG5BG,EAAe,SAAUzV,GAC3B,OAAO,SAAUC,EAAOC,EAAIC,GAC1B,IAGIC,EAHAC,EAAImV,EAAgBvV,GACpBK,EAASgV,EAAkBjV,GAC3BE,EAAQR,EAAgBI,EAAWG,GAIvC,GAAIN,GAAeE,GAAMA,GAAI,MAAOI,EAASC,EAG3C,GAFAH,EAAQC,EAAEE,KAENH,GAASA,EAAO,OAAO,OAEtB,KAAME,EAASC,EAAOA,IAC3B,IAAKP,GAAeO,KAASF,IAAMA,EAAEE,KAAWL,EAAI,OAAOF,GAAeO,GAAS,EACnF,OAAQP,IAAgB,CAC5B,CACF,EAEAP,EAAOD,QAAU,CAGfkW,SAAUD,GAAa,GAGvBE,QAASF,GAAa,G,qCC9BxB,IAAI/M,EAAc,EAAQ,OACtBtD,EAAU,EAAQ,OAElByM,EAAalS,UAEboL,EAA2BzJ,OAAOyJ,yBAGlC6K,EAAoClN,IAAgB,WAEtD,QAAa1H,IAAT1C,KAAoB,OAAO,EAC/B,IAEEgD,OAAOC,eAAe,GAAI,SAAU,CAAEuK,UAAU,IAASxL,OAAS,CACpE,CAAE,MAAO6U,GACP,OAAOA,aAAiBxV,SAC1B,CACF,CATwD,GAWxDF,EAAOD,QAAUoW,EAAoC,SAAUvV,EAAGC,GAChE,GAAI8E,EAAQ/E,KAAO0K,EAAyB1K,EAAG,UAAUyL,SACvD,MAAM+F,EAAW,gCACjB,OAAOxR,EAAEC,OAASA,CACtB,EAAI,SAAUD,EAAGC,GACf,OAAOD,EAAEC,OAASA,CACpB,C,qCCzBA,IAAIuV,EAAc,EAAQ,MAE1BpW,EAAOD,QAAUqW,EAAY,GAAGpV,M,qCCFhC,IAAI6U,EAAoB,EAAQ,OAIhC7V,EAAOD,QAAU,SAAUa,EAAG4D,GAI5B,IAHA,IAAI6R,EAAMR,EAAkBjV,GACxB0I,EAAI,IAAI9E,EAAE6R,GACV3M,EAAI,EACDA,EAAI2M,EAAK3M,IAAKJ,EAAEI,GAAK9I,EAAEyV,EAAM3M,EAAI,GACxC,OAAOJ,CACT,C,qCCVA,IAAIuM,EAAoB,EAAQ,OAC5BS,EAAsB,EAAQ,OAE9BC,EAAcC,WAIlBxW,EAAOD,QAAU,SAAUa,EAAG4D,EAAG1D,EAAOH,GACtC,IAAI0V,EAAMR,EAAkBjV,GACxB6V,EAAgBH,EAAoBxV,GACpC4V,EAAcD,EAAgB,EAAIJ,EAAMI,EAAgBA,EAC5D,GAAIC,GAAeL,GAAOK,EAAc,EAAG,MAAMH,EAAY,mBAG7D,IAFA,IAAIjN,EAAI,IAAI9E,EAAE6R,GACV3M,EAAI,EACDA,EAAI2M,EAAK3M,IAAKJ,EAAEI,GAAKA,IAAMgN,EAAc/V,EAAQC,EAAE8I,GAC1D,OAAOJ,CACT,C,qCChBA,IAAI8M,EAAc,EAAQ,MAEtBrV,EAAWqV,EAAY,CAAC,EAAErV,UAC1B4V,EAAcP,EAAY,GAAGpV,OAEjChB,EAAOD,QAAU,SAAUE,GACzB,OAAO0W,EAAY5V,EAASd,GAAK,GAAI,EACvC,C,qCCPA,IAAI2W,EAAwB,EAAQ,OAChC1E,EAAa,EAAQ,OACrB2E,EAAa,EAAQ,OACrB3D,EAAkB,EAAQ,MAE1BnB,EAAgBmB,EAAgB,eAChC4D,EAAUjV,OAGVkV,EAAuE,aAAnDF,EAAW,WAAc,OAAOjV,SAAW,CAAhC,IAG/BoV,EAAS,SAAU/W,EAAIyC,GACzB,IACE,OAAOzC,EAAGyC,EACZ,CAAE,MAAOgT,GAAqB,CAChC,EAGA1V,EAAOD,QAAU6W,EAAwBC,EAAa,SAAU5W,GAC9D,IAAIW,EAAG2L,EAAKhK,EACZ,YAAchB,IAAPtB,EAAmB,YAAqB,OAAPA,EAAc,OAEO,iBAAjDsM,EAAMyK,EAAOpW,EAAIkW,EAAQ7W,GAAK8R,IAA8BxF,EAEpEwK,EAAoBF,EAAWjW,GAEH,WAA3B2B,EAASsU,EAAWjW,KAAmBsR,EAAWtR,EAAEqW,QAAU,YAAc1U,CACnF,C,qCC5BA,IAAIqQ,EAAS,EAAQ,OACjBsE,EAAU,EAAQ,OAClBC,EAAiC,EAAQ,OACzCC,EAAuB,EAAQ,MAEnCpX,EAAOD,QAAU,SAAUwE,EAAQhB,EAAQ8T,GAIzC,IAHA,IAAIzQ,EAAOsQ,EAAQ3T,GACfzB,EAAiBsV,EAAqB3U,EACtC6I,EAA2B6L,EAA+B1U,EACrDI,EAAI,EAAGA,EAAI+D,EAAK/F,OAAQgC,IAAK,CACpC,IAAIH,EAAMkE,EAAK/D,GACV+P,EAAOrO,EAAQ7B,IAAU2U,GAAczE,EAAOyE,EAAY3U,IAC7DZ,EAAeyC,EAAQ7B,EAAK4I,EAAyB/H,EAAQb,GAEjE,CACF,C,qCCfA,IAAI4U,EAAQ,EAAQ,OAEpBtX,EAAOD,SAAWuX,GAAM,WACtB,SAAS3T,IAAkB,CAG3B,OAFAA,EAAEyC,UAAU2F,YAAc,KAEnBlK,OAAO4E,eAAe,IAAI9C,KAASA,EAAEyC,SAC9C,G,qCCPA,IAAI6C,EAAc,EAAQ,OACtBmO,EAAuB,EAAQ,MAC/BG,EAA2B,EAAQ,OAEvCvX,EAAOD,QAAUkJ,EAAc,SAAU3D,EAAQ5C,EAAK/B,GACpD,OAAOyW,EAAqB3U,EAAE6C,EAAQ5C,EAAK6U,EAAyB,EAAG5W,GACzE,EAAI,SAAU2E,EAAQ5C,EAAK/B,GAEzB,OADA2E,EAAO5C,GAAO/B,EACP2E,CACT,C,iCCTAtF,EAAOD,QAAU,SAAUmM,EAAQvL,GACjC,MAAO,CACLwL,aAAuB,EAATD,GACdE,eAAyB,EAATF,GAChBG,WAAqB,EAATH,GACZvL,MAAOA,EAEX,C,qCCPA,IAAI6W,EAAc,EAAQ,OACtB1V,EAAiB,EAAQ,MAE7B9B,EAAOD,QAAU,SAAUwE,EAAQjB,EAAMwC,GAGvC,OAFIA,EAAW/D,KAAKyV,EAAY1R,EAAW/D,IAAKuB,EAAM,CAAEmU,QAAQ,IAC5D3R,EAAWuL,KAAKmG,EAAY1R,EAAWuL,IAAK/N,EAAM,CAAE4M,QAAQ,IACzDpO,EAAeW,EAAE8B,EAAQjB,EAAMwC,EACxC,C,qCCPA,IAAIoM,EAAa,EAAQ,OACrBkF,EAAuB,EAAQ,MAC/BI,EAAc,EAAQ,OACtBE,EAAuB,EAAQ,OAEnC1X,EAAOD,QAAU,SAAUa,EAAG8B,EAAK/B,EAAOnC,GACnCA,IAASA,EAAU,CAAC,GACzB,IAAImZ,EAASnZ,EAAQ2N,WACjB7I,OAAwB/B,IAAjB/C,EAAQ8E,KAAqB9E,EAAQ8E,KAAOZ,EAEvD,GADIwP,EAAWvR,IAAQ6W,EAAY7W,EAAO2C,EAAM9E,GAC5CA,EAAQuE,OACN4U,EAAQ/W,EAAE8B,GAAO/B,EAChB+W,EAAqBhV,EAAK/B,OAC1B,CACL,IACOnC,EAAQoZ,OACJhX,EAAE8B,KAAMiV,GAAS,UADE/W,EAAE8B,EAEhC,CAAE,MAAOgT,GAAqB,CAC1BiC,EAAQ/W,EAAE8B,GAAO/B,EAChByW,EAAqB3U,EAAE7B,EAAG8B,EAAK,CAClC/B,MAAOA,EACPwL,YAAY,EACZC,cAAe5N,EAAQqZ,gBACvBxL,UAAW7N,EAAQsZ,aAEvB,CAAE,OAAOlX,CACX,C,qCC1BA,IAAImC,EAAS,EAAQ,OAGjBjB,EAAiBD,OAAOC,eAE5B9B,EAAOD,QAAU,SAAU2C,EAAK/B,GAC9B,IACEmB,EAAeiB,EAAQL,EAAK,CAAE/B,MAAOA,EAAOyL,cAAc,EAAMC,UAAU,GAC5E,CAAE,MAAOqJ,GACP3S,EAAOL,GAAO/B,CAChB,CAAE,OAAOA,CACX,C,qCCXA,IAAI2W,EAAQ,EAAQ,OAGpBtX,EAAOD,SAAWuX,GAAM,WAEtB,OAA8E,GAAvEzV,OAAOC,eAAe,CAAC,EAAG,EAAG,CAAEC,IAAK,WAAc,OAAO,CAAG,IAAK,EAC1E,G,gCCNA,IAAIgW,EAAiC,iBAAZ/V,UAAwBA,SAASgW,IAItDC,EAAmC,oBAAfF,QAA8CxW,IAAhBwW,EAEtD/X,EAAOD,QAAU,CACfiY,IAAKD,EACLE,WAAYA,E,qCCRd,IAAIlV,EAAS,EAAQ,OACjB5C,EAAW,EAAQ,OAEnB6B,EAAWe,EAAOf,SAElBkW,EAAS/X,EAAS6B,IAAa7B,EAAS6B,EAASE,eAErDlC,EAAOD,QAAU,SAAUE,GACzB,OAAOiY,EAASlW,EAASE,cAAcjC,GAAM,CAAC,CAChD,C,gCCTA,IAAImS,EAAalS,UACbiY,EAAmB,iBAEvBnY,EAAOD,QAAU,SAAUE,GACzB,GAAIA,EAAKkY,EAAkB,MAAM/F,EAAW,kCAC5C,OAAOnS,CACT,C,iCCNAD,EAAOD,QAAU,CACfqY,eAAgB,CAAEjL,EAAG,iBAAkBzL,EAAG,EAAG2W,EAAG,GAChDC,mBAAoB,CAAEnL,EAAG,qBAAsBzL,EAAG,EAAG2W,EAAG,GACxDE,sBAAuB,CAAEpL,EAAG,wBAAyBzL,EAAG,EAAG2W,EAAG,GAC9DG,mBAAoB,CAAErL,EAAG,qBAAsBzL,EAAG,EAAG2W,EAAG,GACxDI,sBAAuB,CAAEtL,EAAG,wBAAyBzL,EAAG,EAAG2W,EAAG,GAC9DK,mBAAoB,CAAEvL,EAAG,sBAAuBzL,EAAG,EAAG2W,EAAG,GACzDM,2BAA4B,CAAExL,EAAG,8BAA+BzL,EAAG,EAAG2W,EAAG,GACzEO,cAAe,CAAEzL,EAAG,gBAAiBzL,EAAG,EAAG2W,EAAG,GAC9CQ,kBAAmB,CAAE1L,EAAG,oBAAqBzL,EAAG,EAAG2W,EAAG,GACtDS,oBAAqB,CAAE3L,EAAG,sBAAuBzL,EAAG,GAAI2W,EAAG,GAC3DU,kBAAmB,CAAE5L,EAAG,oBAAqBzL,EAAG,GAAI2W,EAAG,GACvDW,YAAa,CAAE7L,EAAG,aAAczL,EAAG,GAAI2W,EAAG,GAC1CY,yBAA0B,CAAE9L,EAAG,2BAA4BzL,EAAG,GAAI2W,EAAG,GACrEa,eAAgB,CAAE/L,EAAG,gBAAiBzL,EAAG,GAAI2W,EAAG,GAChDc,mBAAoB,CAAEhM,EAAG,qBAAsBzL,EAAG,GAAI2W,EAAG,GACzDe,gBAAiB,CAAEjM,EAAG,iBAAkBzL,EAAG,GAAI2W,EAAG,GAClDgB,kBAAmB,CAAElM,EAAG,oBAAqBzL,EAAG,GAAI2W,EAAG,GACvDiB,cAAe,CAAEnM,EAAG,eAAgBzL,EAAG,GAAI2W,EAAG,GAC9CkB,aAAc,CAAEpM,EAAG,cAAezL,EAAG,GAAI2W,EAAG,GAC5CmB,WAAY,CAAErM,EAAG,YAAazL,EAAG,GAAI2W,EAAG,GACxCoB,iBAAkB,CAAEtM,EAAG,mBAAoBzL,EAAG,GAAI2W,EAAG,GACrDqB,mBAAoB,CAAEvM,EAAG,qBAAsBzL,EAAG,GAAI2W,EAAG,GACzDsB,aAAc,CAAExM,EAAG,cAAezL,EAAG,GAAI2W,EAAG,GAC5CuB,qBAAsB,CAAEzM,EAAG,wBAAyBzL,EAAG,GAAI2W,EAAG,GAC9DwB,eAAgB,CAAE1M,EAAG,iBAAkBzL,EAAG,GAAI2W,EAAG,G,iCCxBnDrY,EAAOD,QAAwB,mBAAP+Z,KAAqBA,KAA6B,iBAAfA,IAAI5Y,O,oCCD/D,IAAI6Y,EAAY,EAAQ,OAGxB/Z,EAAOD,QAAU,qCAAqCia,KAAKD,E,qCCH3D,IAAIlH,EAAU,EAAQ,OAEtB7S,EAAOD,QAA4B,oBAAXka,SAA8C,WAApBpH,EAAQoH,Q,iCCF1Dja,EAAOD,QAA8B,oBAAbma,WAA4B9M,OAAO8M,UAAUH,YAAc,E,oCCAnF,IAOII,EAAOjZ,EAPP6B,EAAS,EAAQ,OACjBgX,EAAY,EAAQ,OAEpBE,EAAUlX,EAAOkX,QACjBG,EAAOrX,EAAOqX,KACdC,EAAWJ,GAAWA,EAAQI,UAAYD,GAAQA,EAAKlZ,QACvDoZ,EAAKD,GAAYA,EAASC,GAG1BA,IACFH,EAAQG,EAAGnY,MAAM,KAGjBjB,EAAUiZ,EAAM,GAAK,GAAKA,EAAM,GAAK,EAAI,IAAMA,EAAM,GAAKA,EAAM,MAK7DjZ,GAAW6Y,IACdI,EAAQJ,EAAUI,MAAM,iBACnBA,GAASA,EAAM,IAAM,MACxBA,EAAQJ,EAAUI,MAAM,iBACpBA,IAAOjZ,GAAWiZ,EAAM,MAIhCna,EAAOD,QAAUmB,C,iCCzBjBlB,EAAOD,QAAU,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,U,qCCRF,IAAIqW,EAAc,EAAQ,MAEtBmE,EAASC,MACTC,EAAUrE,EAAY,GAAGqE,SAEzBC,EAAO,SAAW9U,GAAO,OAAOwH,OAAOmN,EAAO3U,GAAK+U,MAAS,CAArD,CAAuD,UAE9DC,EAA2B,uBAC3BC,EAAwBD,EAAyBZ,KAAKU,GAE1D1a,EAAOD,QAAU,SAAU4a,EAAOG,GAChC,GAAID,GAAyC,iBAATF,IAAsBJ,EAAOQ,kBAC/D,MAAOD,IAAeH,EAAQF,EAAQE,EAAOC,EAA0B,IACvE,OAAOD,CACX,C,qCCdA,IAAI5X,EAAS,EAAQ,OACjBuI,EAA2B,WAC3BwH,EAA8B,EAAQ,OACtCC,EAAgB,EAAQ,OACxB2E,EAAuB,EAAQ,OAC/BsD,EAA4B,EAAQ,OACpCC,EAAW,EAAQ,OAiBvBjb,EAAOD,QAAU,SAAUvB,EAAS+E,GAClC,IAGI6D,EAAQ7C,EAAQ7B,EAAKwY,EAAgBC,EAAgBrV,EAHrDsV,EAAS5c,EAAQ+F,OACjB8W,EAAS7c,EAAQuE,OACjBuY,EAAS9c,EAAQgO,KASrB,GANEjI,EADE8W,EACOtY,EACAuY,EACAvY,EAAOqY,IAAW1D,EAAqB0D,EAAQ,CAAC,IAE/CrY,EAAOqY,IAAW,CAAC,GAAGhV,UAE9B7B,EAAQ,IAAK7B,KAAOa,EAAQ,CAQ9B,GAPA4X,EAAiB5X,EAAOb,GACpBlE,EAAQ+c,gBACVzV,EAAawF,EAAyB/G,EAAQ7B,GAC9CwY,EAAiBpV,GAAcA,EAAWnF,OACrCua,EAAiB3W,EAAO7B,GAC/B0E,EAAS6T,EAASI,EAAS3Y,EAAM0Y,GAAUE,EAAS,IAAM,KAAO5Y,EAAKlE,EAAQ+W,SAEzEnO,QAA6B7F,IAAnB2Z,EAA8B,CAC3C,UAAWC,UAAyBD,EAAgB,SACpDF,EAA0BG,EAAgBD,EAC5C,EAEI1c,EAAQgd,MAASN,GAAkBA,EAAeM,OACpD1I,EAA4BqI,EAAgB,QAAQ,GAEtDpI,EAAcxO,EAAQ7B,EAAKyY,EAAgB3c,EAC7C,CACF,C,iCCrDAwB,EAAOD,QAAU,SAAU8E,GACzB,IACE,QAASA,GACX,CAAE,MAAO6Q,GACP,OAAO,CACT,CACF,C,qCCNA,IAAI+F,EAAc,EAAQ,OAEtBC,EAAoBjX,SAAS2B,UAC7BzE,EAAQ+Z,EAAkB/Z,MAC1BzC,EAAOwc,EAAkBxc,KAG7Bc,EAAOD,QAA4B,iBAAX4b,SAAuBA,QAAQha,QAAU8Z,EAAcvc,EAAK0c,KAAKja,GAAS,WAChG,OAAOzC,EAAKyC,MAAMA,EAAOC,UAC3B,E,qCCTA,IAAIwU,EAAc,EAAQ,OACtByF,EAAY,EAAQ,OACpBJ,EAAc,EAAQ,OAEtBG,EAAOxF,EAAYA,EAAYwF,MAGnC5b,EAAOD,QAAU,SAAUsB,EAAIC,GAE7B,OADAua,EAAUxa,QACME,IAATD,EAAqBD,EAAKoa,EAAcG,EAAKva,EAAIC,GAAQ,WAC9D,OAAOD,EAAGM,MAAML,EAAMM,UACxB,CACF,C,qCCZA,IAAI0V,EAAQ,EAAQ,OAEpBtX,EAAOD,SAAWuX,GAAM,WAEtB,IAAI0C,EAAO,WAA4B,EAAE4B,OAEzC,MAAsB,mBAAR5B,GAAsBA,EAAK7U,eAAe,YAC1D,G,qCCPA,IAAIsW,EAAc,EAAQ,OAEtBvc,EAAOuF,SAAS2B,UAAUlH,KAE9Bc,EAAOD,QAAU0b,EAAcvc,EAAK0c,KAAK1c,GAAQ,WAC/C,OAAOA,EAAKyC,MAAMzC,EAAM0C,UAC1B,C,qCCNA,IAAIqH,EAAc,EAAQ,OACtB2J,EAAS,EAAQ,OAEjB8I,EAAoBjX,SAAS2B,UAE7B0V,EAAgB7S,GAAepH,OAAOyJ,yBAEtC4M,EAAStF,EAAO8I,EAAmB,QAEnCK,EAAS7D,GAA0D,cAAhD,WAAqC,EAAE5U,KAC1D0Y,EAAe9D,KAAYjP,GAAgBA,GAAe6S,EAAcJ,EAAmB,QAAQtP,cAEvGpM,EAAOD,QAAU,CACfmY,OAAQA,EACR6D,OAAQA,EACRC,aAAcA,E,qCCfhB,IAAI5F,EAAc,EAAQ,MACtByF,EAAY,EAAQ,OAExB7b,EAAOD,QAAU,SAAUuF,EAAQ5C,EAAKuZ,GACtC,IAEE,OAAO7F,EAAYyF,EAAUha,OAAOyJ,yBAAyBhG,EAAQ5C,GAAKuZ,IAC5E,CAAE,MAAOvG,GAAqB,CAChC,C,qCCRA,IAAImB,EAAa,EAAQ,OACrBT,EAAc,EAAQ,MAE1BpW,EAAOD,QAAU,SAAUsB,GAIzB,GAAuB,aAAnBwV,EAAWxV,GAAoB,OAAO+U,EAAY/U,EACxD,C,oCCRA,IAAIoa,EAAc,EAAQ,OAEtBC,EAAoBjX,SAAS2B,UAC7BlH,EAAOwc,EAAkBxc,KACzBgd,EAAsBT,GAAeC,EAAkBE,KAAKA,KAAK1c,EAAMA,GAE3Ec,EAAOD,QAAU0b,EAAcS,EAAsB,SAAU7a,GAC7D,OAAO,WACL,OAAOnC,EAAKyC,MAAMN,EAAIO,UACxB,CACF,C,qCCVA,IAAImB,EAAS,EAAQ,OACjBmP,EAAa,EAAQ,OAErB9Q,EAAY,SAAUiR,GACxB,OAAOH,EAAWG,GAAYA,OAAW9Q,CAC3C,EAEAvB,EAAOD,QAAU,SAAUoc,EAAWF,GACpC,OAAOra,UAAUf,OAAS,EAAIO,EAAU2B,EAAOoZ,IAAcpZ,EAAOoZ,IAAcpZ,EAAOoZ,GAAWF,EACtG,C,qCCTA,IAAIJ,EAAY,EAAQ,OACpBO,EAAoB,EAAQ,OAIhCpc,EAAOD,QAAU,SAAUsc,EAAGpY,GAC5B,IAAIqY,EAAOD,EAAEpY,GACb,OAAOmY,EAAkBE,QAAQ/a,EAAYsa,EAAUS,EACzD,C,qCCRA,IAAIC,EAAQ,SAAUtc,GACpB,OAAOA,GAAMA,EAAG+E,MAAQA,MAAQ/E,CAClC,EAGAD,EAAOD,QAELwc,EAA2B,iBAAdC,YAA0BA,aACvCD,EAAuB,iBAAVxX,QAAsBA,SAEnCwX,EAAqB,iBAARtX,MAAoBA,OACjCsX,EAAuB,iBAAV,EAAAE,GAAsB,EAAAA,IAEnC,WAAe,OAAO5d,IAAO,CAA7B,IAAoCA,MAAQ4F,SAAS,cAATA,E,qCCb9C,IAAI2R,EAAc,EAAQ,MACtBlN,EAAW,EAAQ,OAEnB/D,EAAiBiR,EAAY,CAAC,EAAEjR,gBAKpCnF,EAAOD,QAAU8B,OAAO+Q,QAAU,SAAgB3S,EAAIyC,GACpD,OAAOyC,EAAe+D,EAASjJ,GAAKyC,EACtC,C,gCCVA1C,EAAOD,QAAU,CAAC,C,qCCAlB,IAAI2c,EAAa,EAAQ,OAEzB1c,EAAOD,QAAU2c,EAAW,WAAY,kB,qCCFxC,IAAIzT,EAAc,EAAQ,OACtBqO,EAAQ,EAAQ,OAChBpV,EAAgB,EAAQ,OAG5BlC,EAAOD,SAAWkJ,IAAgBqO,GAAM,WAEtC,OAEQ,GAFDzV,OAAOC,eAAeI,EAAc,OAAQ,IAAK,CACtDH,IAAK,WAAc,OAAO,CAAG,IAC5BP,CACL,G,qCCVA,IAAI4U,EAAc,EAAQ,MACtBkB,EAAQ,EAAQ,OAChBzE,EAAU,EAAQ,OAElBiE,EAAUjV,OACVM,EAAQiU,EAAY,GAAGjU,OAG3BnC,EAAOD,QAAUuX,GAAM,WAGrB,OAAQR,EAAQ,KAAKrR,qBAAqB,EAC5C,IAAK,SAAUxF,GACb,MAAsB,UAAf4S,EAAQ5S,GAAkBkC,EAAMlC,EAAI,IAAM6W,EAAQ7W,EAC3D,EAAI6W,C,qCCdJ,IAAI5E,EAAa,EAAQ,OACrB/R,EAAW,EAAQ,OACnB8S,EAAiB,EAAQ,OAG7BjT,EAAOD,QAAU,SAAUS,EAAOmc,EAAOC,GACvC,IAAIC,EAAWC,EAUf,OAPE7J,GAEAf,EAAW2K,EAAYF,EAAM5Q,cAC7B8Q,IAAcD,GACdzc,EAAS2c,EAAqBD,EAAUzW,YACxC0W,IAAuBF,EAAQxW,WAC/B6M,EAAezS,EAAOsc,GACjBtc,CACT,C,qCCjBA,IAAI4V,EAAc,EAAQ,MACtBlE,EAAa,EAAQ,OACrBtF,EAAQ,EAAQ,MAEhBmQ,EAAmB3G,EAAY3R,SAAS1D,UAGvCmR,EAAWtF,EAAMoQ,iBACpBpQ,EAAMoQ,cAAgB,SAAU/c,GAC9B,OAAO8c,EAAiB9c,EAC1B,GAGFD,EAAOD,QAAU6M,EAAMoQ,a,qCCbvB,IAYI3L,EAAKtP,EAAKmB,EAZV+Z,EAAkB,EAAQ,OAC1Bla,EAAS,EAAQ,OACjB5C,EAAW,EAAQ,OACnB2S,EAA8B,EAAQ,OACtCF,EAAS,EAAQ,OACjBnG,EAAS,EAAQ,MACjByQ,EAAY,EAAQ,MACpBtR,EAAa,EAAQ,MAErBuR,EAA6B,6BAC7Bjd,EAAY6C,EAAO7C,UACnBkd,EAAUra,EAAOqa,QAGjB/J,EAAU,SAAUpT,GACtB,OAAOiD,EAAIjD,GAAM8B,EAAI9B,GAAMoR,EAAIpR,EAAI,CAAC,EACtC,EAEIod,EAAY,SAAUC,GACxB,OAAO,SAAUrd,GACf,IAAIgV,EACJ,IAAK9U,EAASF,KAAQgV,EAAQlT,EAAI9B,IAAKoD,OAASia,EAC9C,MAAMpd,EAAU,0BAA4Bod,EAAO,aACnD,OAAOrI,CACX,CACF,EAEA,GAAIgI,GAAmBxQ,EAAOwI,MAAO,CACnC,IAAIrI,EAAQH,EAAOwI,QAAUxI,EAAOwI,MAAQ,IAAImI,GAEhDxQ,EAAM7K,IAAM6K,EAAM7K,IAClB6K,EAAM1J,IAAM0J,EAAM1J,IAClB0J,EAAMyE,IAAMzE,EAAMyE,IAElBA,EAAM,SAAUpR,EAAIsd,GAClB,GAAI3Q,EAAM1J,IAAIjD,GAAK,MAAMC,EAAUid,GAGnC,OAFAI,EAASC,OAASvd,EAClB2M,EAAMyE,IAAIpR,EAAIsd,GACPA,CACT,EACAxb,EAAM,SAAU9B,GACd,OAAO2M,EAAM7K,IAAI9B,IAAO,CAAC,CAC3B,EACAiD,EAAM,SAAUjD,GACd,OAAO2M,EAAM1J,IAAIjD,EACnB,CACF,KAAO,CACL,IAAIwd,EAAQP,EAAU,SACtBtR,EAAW6R,IAAS,EACpBpM,EAAM,SAAUpR,EAAIsd,GAClB,GAAI3K,EAAO3S,EAAIwd,GAAQ,MAAMvd,EAAUid,GAGvC,OAFAI,EAASC,OAASvd,EAClB6S,EAA4B7S,EAAIwd,EAAOF,GAChCA,CACT,EACAxb,EAAM,SAAU9B,GACd,OAAO2S,EAAO3S,EAAIwd,GAASxd,EAAGwd,GAAS,CAAC,CAC1C,EACAva,EAAM,SAAUjD,GACd,OAAO2S,EAAO3S,EAAIwd,EACpB,CACF,CAEAzd,EAAOD,QAAU,CACfsR,IAAKA,EACLtP,IAAKA,EACLmB,IAAKA,EACLmQ,QAASA,EACTgK,UAAWA,E,qCCpEb,IAAIxK,EAAU,EAAQ,OAKtB7S,EAAOD,QAAU2F,MAAMC,SAAW,SAAiB0M,GACjD,MAA4B,SAArBQ,EAAQR,EACjB,C,qCCPA,IAAIQ,EAAU,EAAQ,OAEtB7S,EAAOD,QAAU,SAAUE,GACzB,IAAI8U,EAAQlC,EAAQ5S,GACpB,MAAgB,iBAAT8U,GAAqC,kBAATA,CACrC,C,qCCLA,IAAI2I,EAAe,EAAQ,MAEvB3F,EAAc2F,EAAa1F,IAI/BhY,EAAOD,QAAU2d,EAAazF,WAAa,SAAU5F,GACnD,MAA0B,mBAAZA,GAA0BA,IAAa0F,CACvD,EAAI,SAAU1F,GACZ,MAA0B,mBAAZA,CAChB,C,qCCVA,IAAIiF,EAAQ,EAAQ,OAChBpF,EAAa,EAAQ,OAErByL,EAAc,kBAEd1C,EAAW,SAAU2C,EAASC,GAChC,IAAIld,EAAQmd,EAAKC,EAAUH,IAC3B,OAAOjd,GAASqd,GACZrd,GAASsd,IACT/L,EAAW2L,GAAavG,EAAMuG,KAC5BA,EACR,EAEIE,EAAY9C,EAAS8C,UAAY,SAAUG,GAC7C,OAAO9Q,OAAO8Q,GAAQzD,QAAQkD,EAAa,KAAKQ,aAClD,EAEIL,EAAO7C,EAAS6C,KAAO,CAAC,EACxBG,EAAShD,EAASgD,OAAS,IAC3BD,EAAW/C,EAAS+C,SAAW,IAEnChe,EAAOD,QAAUkb,C,iCCnBjBjb,EAAOD,QAAU,SAAUE,GACzB,OAAc,OAAPA,QAAsBsB,IAAPtB,CACxB,C,qCCJA,IAAIiS,EAAa,EAAQ,OACrBwL,EAAe,EAAQ,MAEvB3F,EAAc2F,EAAa1F,IAE/BhY,EAAOD,QAAU2d,EAAazF,WAAa,SAAUhY,GACnD,MAAoB,iBAANA,EAAwB,OAAPA,EAAciS,EAAWjS,IAAOA,IAAO8X,CACxE,EAAI,SAAU9X,GACZ,MAAoB,iBAANA,EAAwB,OAAPA,EAAciS,EAAWjS,EAC1D,C,iCCTAD,EAAOD,SAAU,C,qCCAjB,IAAI2c,EAAa,EAAQ,OACrBxK,EAAa,EAAQ,OACrBK,EAAgB,EAAQ,OACxB6L,EAAoB,EAAQ,OAE5BtH,EAAUjV,OAEd7B,EAAOD,QAAUqe,EAAoB,SAAUne,GAC7C,MAAoB,iBAANA,CAChB,EAAI,SAAUA,GACZ,IAAIiO,EAAUwO,EAAW,UACzB,OAAOxK,EAAWhE,IAAYqE,EAAcrE,EAAQ9H,UAAW0Q,EAAQ7W,GACzE,C,qCCZA,IAAII,EAAW,EAAQ,OAIvBL,EAAOD,QAAU,SAAUse,GACzB,OAAOhe,EAASge,EAAIxd,OACtB,C,qCCNA,IAAIuV,EAAc,EAAQ,MACtBkB,EAAQ,EAAQ,OAChBpF,EAAa,EAAQ,OACrBU,EAAS,EAAQ,OACjB3J,EAAc,EAAQ,OACtBqV,EAA6B,sBAC7BtB,EAAgB,EAAQ,OACxB7J,EAAsB,EAAQ,OAE9BC,EAAuBD,EAAoBE,QAC3CC,EAAmBH,EAAoBpR,IACvCuQ,EAAUlF,OAEVtL,EAAiBD,OAAOC,eACxB6U,EAAcP,EAAY,GAAGpV,OAC7ByZ,EAAUrE,EAAY,GAAGqE,SACzB9Q,EAAOyM,EAAY,GAAGzM,MAEtB4U,EAAsBtV,IAAgBqO,GAAM,WAC9C,OAAsF,IAA/ExV,GAAe,WAA0B,GAAG,SAAU,CAAEnB,MAAO,IAAKE,MAC7E,IAEI2d,EAAWpR,OAAOA,QAAQjL,MAAM,UAEhCqV,EAAcxX,EAAOD,QAAU,SAAUY,EAAO2C,EAAM9E,GACf,YAArCmY,EAAYrE,EAAQhP,GAAO,EAAG,KAChCA,EAAO,IAAMmX,EAAQnI,EAAQhP,GAAO,qBAAsB,MAAQ,KAEhE9E,GAAWA,EAAQiZ,SAAQnU,EAAO,OAASA,GAC3C9E,GAAWA,EAAQ0R,SAAQ5M,EAAO,OAASA,KAC1CsP,EAAOjS,EAAO,SAAY2d,GAA8B3d,EAAM2C,OAASA,KACtE2F,EAAanH,EAAenB,EAAO,OAAQ,CAAEA,MAAO2C,EAAM8I,cAAc,IACvEzL,EAAM2C,KAAOA,GAEhBib,GAAuB/f,GAAWoU,EAAOpU,EAAS,UAAYmC,EAAME,SAAWrC,EAAQigB,OACzF3c,EAAenB,EAAO,SAAU,CAAEA,MAAOnC,EAAQigB,QAEnD,IACMjgB,GAAWoU,EAAOpU,EAAS,gBAAkBA,EAAQuN,YACnD9C,GAAanH,EAAenB,EAAO,YAAa,CAAE0L,UAAU,IAEvD1L,EAAMyF,YAAWzF,EAAMyF,eAAY7E,EAChD,CAAE,MAAOmU,GAAqB,CAC9B,IAAIT,EAAQ7B,EAAqBzS,GAG/B,OAFGiS,EAAOqC,EAAO,YACjBA,EAAM1R,OAASoG,EAAK6U,EAAyB,iBAARlb,EAAmBA,EAAO,KACxD3C,CACX,EAIA8D,SAAS2B,UAAUrF,SAAWyW,GAAY,WACxC,OAAOtF,EAAWrT,OAASyU,EAAiBzU,MAAM0E,QAAUyZ,EAAcne,KAC5E,GAAG,W,iCCrDH,IAAI6O,EAAO1I,KAAK0I,KACZC,EAAQ3I,KAAK2I,MAKjB3N,EAAOD,QAAUiF,KAAK0Z,OAAS,SAAeC,GAC5C,IAAIC,GAAKD,EACT,OAAQC,EAAI,EAAIjR,EAAQD,GAAMkR,EAChC,C,qCCTA,IAAI7d,EAAW,EAAQ,OAEvBf,EAAOD,QAAU,SAAUsS,EAAUxK,GACnC,YAAoBtG,IAAb8Q,EAAyBzQ,UAAUf,OAAS,EAAI,GAAKgH,EAAW9G,EAASsR,EAClF,C,oCCJA,IAAIpJ,EAAc,EAAQ,OACtBgC,EAAiB,EAAQ,OACzB4T,EAA0B,EAAQ,MAClC9U,EAAW,EAAQ,OACnB+U,EAAgB,EAAQ,OAExB1M,EAAalS,UAEbyQ,EAAkB9O,OAAOC,eAEzBkP,EAA4BnP,OAAOyJ,yBACnCyT,EAAa,aACb/C,EAAe,eACfgD,EAAW,WAIfjf,EAAQ0C,EAAIwG,EAAc4V,EAA0B,SAAwBje,EAAGqD,EAAGkH,GAIhF,GAHApB,EAASnJ,GACTqD,EAAI6a,EAAc7a,GAClB8F,EAASoB,GACQ,oBAANvK,GAA0B,cAANqD,GAAqB,UAAWkH,GAAc6T,KAAY7T,IAAeA,EAAW6T,GAAW,CAC5H,IAAIC,EAAUjO,EAA0BpQ,EAAGqD,GACvCgb,GAAWA,EAAQD,KACrBpe,EAAEqD,GAAKkH,EAAWxK,MAClBwK,EAAa,CACXiB,aAAc4P,KAAgB7Q,EAAaA,EAAW6Q,GAAgBiD,EAAQjD,GAC9E7P,WAAY4S,KAAc5T,EAAaA,EAAW4T,GAAcE,EAAQF,GACxE1S,UAAU,GAGhB,CAAE,OAAOsE,EAAgB/P,EAAGqD,EAAGkH,EACjC,EAAIwF,EAAkB,SAAwB/P,EAAGqD,EAAGkH,GAIlD,GAHApB,EAASnJ,GACTqD,EAAI6a,EAAc7a,GAClB8F,EAASoB,GACLF,EAAgB,IAClB,OAAO0F,EAAgB/P,EAAGqD,EAAGkH,EAC/B,CAAE,MAAOuK,GAAqB,CAC9B,GAAI,QAASvK,GAAc,QAASA,EAAY,MAAMiH,EAAW,2BAEjE,MADI,UAAWjH,IAAYvK,EAAEqD,GAAKkH,EAAWxK,OACtCC,CACT,C,qCC1CA,IAAIqI,EAAc,EAAQ,OACtB/J,EAAO,EAAQ,OACfggB,EAA6B,EAAQ,OACrC3H,EAA2B,EAAQ,OACnCxB,EAAkB,EAAQ,OAC1B+I,EAAgB,EAAQ,OACxBlM,EAAS,EAAQ,OACjB3H,EAAiB,EAAQ,OAGzB+F,EAA4BnP,OAAOyJ,yBAIvCvL,EAAQ0C,EAAIwG,EAAc+H,EAA4B,SAAkCpQ,EAAGqD,GAGzF,GAFArD,EAAImV,EAAgBnV,GACpBqD,EAAI6a,EAAc7a,GACdgH,EAAgB,IAClB,OAAO+F,EAA0BpQ,EAAGqD,EACtC,CAAE,MAAOyR,GAAqB,CAC9B,GAAI9C,EAAOhS,EAAGqD,GAAI,OAAOsT,GAA0BrY,EAAKggB,EAA2Bzc,EAAG7B,EAAGqD,GAAIrD,EAAEqD,GACjG,C,oCCrBA,IAAIkb,EAAqB,EAAQ,OAC7BlV,EAAc,EAAQ,OAEtB2B,EAAa3B,EAAYnK,OAAO,SAAU,aAK9CC,EAAQ0C,EAAIZ,OAAO4J,qBAAuB,SAA6B7K,GACrE,OAAOue,EAAmBve,EAAGgL,EAC/B,C,mCCTA7L,EAAQ0C,EAAIZ,OAAOgK,qB,qCCDnB,IAAI+G,EAAS,EAAQ,OACjBV,EAAa,EAAQ,OACrBhJ,EAAW,EAAQ,OACnBgU,EAAY,EAAQ,MACpBkC,EAA2B,EAAQ,OAEnClV,EAAWgT,EAAU,YACrBpG,EAAUjV,OACVgS,EAAkBiD,EAAQ1Q,UAK9BpG,EAAOD,QAAUqf,EAA2BtI,EAAQrQ,eAAiB,SAAU7F,GAC7E,IAAI0E,EAAS4D,EAAStI,GACtB,GAAIgS,EAAOtN,EAAQ4E,GAAW,OAAO5E,EAAO4E,GAC5C,IAAI6B,EAAczG,EAAOyG,YACzB,OAAImG,EAAWnG,IAAgBzG,aAAkByG,EACxCA,EAAY3F,UACZd,aAAkBwR,EAAUjD,EAAkB,IACzD,C,qCCpBA,IAAIuC,EAAc,EAAQ,MAE1BpW,EAAOD,QAAUqW,EAAY,CAAC,EAAE7D,c,qCCFhC,IAAI6D,EAAc,EAAQ,MACtBxD,EAAS,EAAQ,OACjBmD,EAAkB,EAAQ,OAC1BG,EAAU,iBACVtK,EAAa,EAAQ,MAErB9I,EAAOsT,EAAY,GAAGtT,MAE1B9C,EAAOD,QAAU,SAAUuF,EAAQ2G,GACjC,IAGIvJ,EAHA9B,EAAImV,EAAgBzQ,GACpBzC,EAAI,EACJN,EAAS,GAEb,IAAKG,KAAO9B,GAAIgS,EAAOhH,EAAYlJ,IAAQkQ,EAAOhS,EAAG8B,IAAQI,EAAKP,EAAQG,GAE1E,MAAOuJ,EAAMpL,OAASgC,EAAO+P,EAAOhS,EAAG8B,EAAMuJ,EAAMpJ,SAChDqT,EAAQ3T,EAAQG,IAAQI,EAAKP,EAAQG,IAExC,OAAOH,CACT,C,mCCnBA,IAAIuO,EAAwB,CAAC,EAAErL,qBAE3B6F,EAA2BzJ,OAAOyJ,yBAGlC+T,EAAc/T,IAA6BwF,EAAsB5R,KAAK,CAAE,EAAG,GAAK,GAIpFa,EAAQ0C,EAAI4c,EAAc,SAA8BhD,GACtD,IAAIvW,EAAawF,EAAyBzM,KAAMwd,GAChD,QAASvW,GAAcA,EAAWqG,UACpC,EAAI2E,C,qCCXJ,IAAIwO,EAAsB,EAAQ,OAC9BvV,EAAW,EAAQ,OACnBwV,EAAqB,EAAQ,OAMjCvf,EAAOD,QAAU8B,OAAOoR,iBAAmB,aAAe,CAAC,EAAI,WAC7D,IAEI/C,EAFAsP,GAAiB,EACjBxF,EAAO,CAAC,EAEZ,IACE9J,EAASoP,EAAoBzd,OAAOuE,UAAW,YAAa,OAC5D8J,EAAO8J,EAAM,IACbwF,EAAiBxF,aAAgBtU,KACnC,CAAE,MAAOgQ,GAAqB,CAC9B,OAAO,SAAwB9U,EAAG4G,GAKhC,OAJAuC,EAASnJ,GACT2e,EAAmB/X,GACfgY,EAAgBtP,EAAOtP,EAAG4G,GACzB5G,EAAE6e,UAAYjY,EACZ5G,CACT,CACF,CAhB+D,QAgBzDW,E,qCCzBN,IAAIrC,EAAO,EAAQ,OACfgT,EAAa,EAAQ,OACrB/R,EAAW,EAAQ,OAEnBiS,EAAalS,UAIjBF,EAAOD,QAAU,SAAU2f,EAAOC,GAChC,IAAIte,EAAIwM,EACR,GAAa,WAAT8R,GAAqBzN,EAAW7Q,EAAKqe,EAAM3e,YAAcZ,EAAS0N,EAAM3O,EAAKmC,EAAIqe,IAAS,OAAO7R,EACrG,GAAIqE,EAAW7Q,EAAKqe,EAAM5R,WAAa3N,EAAS0N,EAAM3O,EAAKmC,EAAIqe,IAAS,OAAO7R,EAC/E,GAAa,WAAT8R,GAAqBzN,EAAW7Q,EAAKqe,EAAM3e,YAAcZ,EAAS0N,EAAM3O,EAAKmC,EAAIqe,IAAS,OAAO7R,EACrG,MAAMuE,EAAW,0CACnB,C,qCCdA,IAAIsK,EAAa,EAAQ,OACrBtG,EAAc,EAAQ,MACtBwJ,EAA4B,EAAQ,MACpCC,EAA8B,EAAQ,OACtC9V,EAAW,EAAQ,OAEnBjK,EAASsW,EAAY,GAAGtW,QAG5BE,EAAOD,QAAU2c,EAAW,UAAW,YAAc,SAAiBzc,GACpE,IAAI2G,EAAOgZ,EAA0Bnd,EAAEsH,EAAS9J,IAC5C4L,EAAwBgU,EAA4Bpd,EACxD,OAAOoJ,EAAwB/L,EAAO8G,EAAMiF,EAAsB5L,IAAO2G,CAC3E,C,qCCbA,IAAIwV,EAAoB,EAAQ,OAE5BhK,EAAalS,UAIjBF,EAAOD,QAAU,SAAUE,GACzB,GAAImc,EAAkBnc,GAAK,MAAMmS,EAAW,wBAA0BnS,GACtE,OAAOA,CACT,C,qCCTA,IAAI8C,EAAS,EAAQ,OACjBpB,EAAQ,EAAQ,OAChBuQ,EAAa,EAAQ,OACrB4N,EAAgB,EAAQ,OACxBC,EAAa,EAAQ,OACrBC,EAAa,EAAQ,OACrBC,EAA0B,EAAQ,OAElCxb,EAAW1B,EAAO0B,SAElByb,EAAO,WAAWlG,KAAK+F,IAAeD,GAAiB,WACzD,IAAI5e,EAAU6B,EAAO+W,IAAI5Y,QAAQiB,MAAM,KACvC,OAAOjB,EAAQL,OAAS,GAAmB,GAAdK,EAAQ,KAAYA,EAAQ,GAAK,GAAmB,GAAdA,EAAQ,IAAyB,GAAdA,EAAQ,GAC/F,CAH0D,GAQ3DlB,EAAOD,QAAU,SAAUogB,EAAWC,GACpC,IAAIC,EAAkBD,EAAa,EAAI,EACvC,OAAOF,EAAO,SAAUI,EAASC,GAC/B,IAAIC,EAAYP,EAAwBre,UAAUf,OAAQ,GAAKwf,EAC3Dhf,EAAK6Q,EAAWoO,GAAWA,EAAU7b,EAAS6b,GAC9CG,EAASD,EAAYR,EAAWpe,UAAWye,GAAmB,GAC9DK,EAAWF,EAAY,WACzB7e,EAAMN,EAAIxC,KAAM4hB,EAClB,EAAIpf,EACJ,OAAO+e,EAAaD,EAAUO,EAAUH,GAAWJ,EAAUO,EAC/D,EAAIP,CACN,C,oCC7BA,IAAI1T,EAAS,EAAQ,OACjBC,EAAM,EAAQ,OAEd9F,EAAO6F,EAAO,QAElBzM,EAAOD,QAAU,SAAU2C,GACzB,OAAOkE,EAAKlE,KAASkE,EAAKlE,GAAOgK,EAAIhK,GACvC,C,oCCPA,IAAIK,EAAS,EAAQ,OACjB2U,EAAuB,EAAQ,OAE/B/K,EAAS,qBACTC,EAAQ7J,EAAO4J,IAAW+K,EAAqB/K,EAAQ,CAAC,GAE5D3M,EAAOD,QAAU6M,C,qCCNjB,IAAI+T,EAAU,EAAQ,OAClB/T,EAAQ,EAAQ,OAEnB5M,EAAOD,QAAU,SAAU2C,EAAK/B,GAC/B,OAAOiM,EAAMlK,KAASkK,EAAMlK,QAAiBnB,IAAVZ,EAAsBA,EAAQ,CAAC,EACpE,GAAG,WAAY,IAAImC,KAAK,CACtB5B,QAAS,SACT2L,KAAM8T,EAAU,OAAS,SACzB7T,UAAW,4CACX8T,QAAS,2DACTrd,OAAQ,uC,qCCTV,IAAIsd,EAAa,EAAQ,MACrBvJ,EAAQ,EAAQ,OAChBvU,EAAS,EAAQ,OAEjBuP,EAAUvP,EAAOqK,OAGrBpN,EAAOD,UAAY8B,OAAOgK,wBAA0ByL,GAAM,WACxD,IAAIwJ,EAASvX,SAKb,OAAQ+I,EAAQwO,MAAajf,OAAOif,aAAmBvX,UAEpDA,OAAOiS,MAAQqF,GAAcA,EAAa,EAC/C,G,qCCjBA,IAuBIE,EAAWC,EAAOC,EAASC,EAvB3Bne,EAAS,EAAQ,OACjBpB,EAAQ,EAAQ,OAChBia,EAAO,EAAQ,OACf1J,EAAa,EAAQ,OACrBU,EAAS,EAAQ,OACjB0E,EAAQ,EAAQ,OAChB6J,EAAO,EAAQ,OACfnB,EAAa,EAAQ,OACrB9d,EAAgB,EAAQ,OACxB+d,EAA0B,EAAQ,OAClCmB,EAAS,EAAQ,MACjBC,EAAU,EAAQ,OAElBhQ,EAAMtO,EAAOue,aACbC,EAAQxe,EAAOye,eACfvH,EAAUlX,EAAOkX,QACjBwH,EAAW1e,EAAO0e,SAClBhd,EAAW1B,EAAO0B,SAClBid,EAAiB3e,EAAO2e,eACxBtU,EAASrK,EAAOqK,OAChBuU,EAAU,EACVC,EAAQ,CAAC,EACTC,EAAqB,qBAGzBvK,GAAM,WAEJyJ,EAAYhe,EAAO+e,QACrB,IAEA,IAAIC,EAAM,SAAU1Z,GAClB,GAAIuK,EAAOgP,EAAOvZ,GAAK,CACrB,IAAIhH,EAAKugB,EAAMvZ,UACRuZ,EAAMvZ,GACbhH,GACF,CACF,EAEI2gB,EAAS,SAAU3Z,GACrB,OAAO,WACL0Z,EAAI1Z,EACN,CACF,EAEI4Z,EAAgB,SAAUC,GAC5BH,EAAIG,EAAMpE,KACZ,EAEIqE,EAAyB,SAAU9Z,GAErCtF,EAAOqf,YAAYhV,EAAO/E,GAAK0Y,EAAUsB,SAAW,KAAOtB,EAAUuB,KACvE,EAGKjR,GAAQkQ,IACXlQ,EAAM,SAAsBiP,GAC1BL,EAAwBre,UAAUf,OAAQ,GAC1C,IAAIQ,EAAK6Q,EAAWoO,GAAWA,EAAU7b,EAAS6b,GAC9CxO,EAAOkO,EAAWpe,UAAW,GAKjC,OAJAggB,IAAQD,GAAW,WACjBhgB,EAAMN,OAAIE,EAAWuQ,EACvB,EACAkP,EAAMW,GACCA,CACT,EACAJ,EAAQ,SAAwBlZ,UACvBuZ,EAAMvZ,EACf,EAEIgZ,EACFL,EAAQ,SAAU3Y,GAChB4R,EAAQsI,SAASP,EAAO3Z,GAC1B,EAESoZ,GAAYA,EAASe,IAC9BxB,EAAQ,SAAU3Y,GAChBoZ,EAASe,IAAIR,EAAO3Z,GACtB,EAGSqZ,IAAmBN,GAC5BH,EAAU,IAAIS,EACdR,EAAOD,EAAQwB,MACfxB,EAAQyB,MAAMC,UAAYV,EAC1BjB,EAAQpF,EAAKsF,EAAKkB,YAAalB,IAI/Bne,EAAO6f,kBACP1Q,EAAWnP,EAAOqf,eACjBrf,EAAO8f,eACR9B,GAAoC,UAAvBA,EAAUsB,WACtB/K,EAAM6K,IAEPnB,EAAQmB,EACRpf,EAAO6f,iBAAiB,UAAWX,GAAe,IAGlDjB,EADSa,KAAsB3f,EAAc,UACrC,SAAUmG,GAChB8Y,EAAK2B,YAAY5gB,EAAc,WAAW2f,GAAsB,WAC9DV,EAAK4B,YAAYlkB,MACjBkjB,EAAI1Z,EACN,CACF,EAGQ,SAAUA,GAChB2a,WAAWhB,EAAO3Z,GAAK,EACzB,GAIJrI,EAAOD,QAAU,CACfsR,IAAKA,EACLkQ,MAAOA,E,qCClHT,IAAIjL,EAAsB,EAAQ,OAE9B9I,EAAMxI,KAAKwI,IACXC,EAAMzI,KAAKyI,IAKfzN,EAAOD,QAAU,SAAUe,EAAOD,GAChC,IAAIoiB,EAAU3M,EAAoBxV,GAClC,OAAOmiB,EAAU,EAAIzV,EAAIyV,EAAUpiB,EAAQ,GAAK4M,EAAIwV,EAASpiB,EAC/D,C,qCCXA,IAAIqK,EAAc,EAAQ,OAEtBkH,EAAalS,UAIjBF,EAAOD,QAAU,SAAUsS,GACzB,IAAI6Q,EAAOhY,EAAYmH,EAAU,UACjC,GAAmB,iBAAR6Q,EAAkB,MAAM9Q,EAAW,kCAE9C,OAAO+Q,OAAOD,EAChB,C,qCCVA,IAAIE,EAAgB,EAAQ,OACxBC,EAAyB,EAAQ,OAErCrjB,EAAOD,QAAU,SAAUE,GACzB,OAAOmjB,EAAcC,EAAuBpjB,GAC9C,C,qCCNA,IAAIye,EAAQ,EAAQ,OAIpB1e,EAAOD,QAAU,SAAUsS,GACzB,IAAIiR,GAAUjR,EAEd,OAAOiR,IAAWA,GAAqB,IAAXA,EAAe,EAAI5E,EAAM4E,EACvD,C,qCCRA,IAAIhN,EAAsB,EAAQ,OAE9B7I,EAAMzI,KAAKyI,IAIfzN,EAAOD,QAAU,SAAUsS,GACzB,OAAOA,EAAW,EAAI5E,EAAI6I,EAAoBjE,GAAW,kBAAoB,CAC/E,C,qCCRA,IAAIgR,EAAyB,EAAQ,OAEjCvM,EAAUjV,OAId7B,EAAOD,QAAU,SAAUsS,GACzB,OAAOyE,EAAQuM,EAAuBhR,GACxC,C,qCCRA,IAAInT,EAAO,EAAQ,OACfiB,EAAW,EAAQ,OACnBsQ,EAAW,EAAQ,OACnBnJ,EAAY,EAAQ,OACpBic,EAAsB,EAAQ,OAC9BrQ,EAAkB,EAAQ,MAE1Bd,EAAalS,UACb0P,EAAesD,EAAgB,eAInClT,EAAOD,QAAU,SAAU2f,EAAOC,GAChC,IAAKxf,EAASuf,IAAUjP,EAASiP,GAAQ,OAAOA,EAChD,IACInd,EADAihB,EAAelc,EAAUoY,EAAO9P,GAEpC,GAAI4T,EAAc,CAGhB,QAFajiB,IAAToe,IAAoBA,EAAO,WAC/Bpd,EAASrD,EAAKskB,EAAc9D,EAAOC,IAC9Bxf,EAASoC,IAAWkO,EAASlO,GAAS,OAAOA,EAClD,MAAM6P,EAAW,0CACnB,CAEA,YADa7Q,IAAToe,IAAoBA,EAAO,UACxB4D,EAAoB7D,EAAOC,EACpC,C,qCCxBA,IAAIzU,EAAc,EAAQ,OACtBuF,EAAW,EAAQ,OAIvBzQ,EAAOD,QAAU,SAAUsS,GACzB,IAAI3P,EAAMwI,EAAYmH,EAAU,UAChC,OAAO5B,EAAS/N,GAAOA,EAAMA,EAAM,EACrC,C,qCCRA,IAAIwQ,EAAkB,EAAQ,MAE1BnB,EAAgBmB,EAAgB,eAChC8G,EAAO,CAAC,EAEZA,EAAKjI,GAAiB,IAEtB/R,EAAOD,QAA2B,eAAjBqN,OAAO4M,E,qCCPxB,IAAInH,EAAU,EAAQ,OAElBP,EAAUlF,OAEdpN,EAAOD,QAAU,SAAUsS,GACzB,GAA0B,WAAtBQ,EAAQR,GAAwB,MAAMnS,UAAU,6CACpD,OAAOoS,EAAQD,EACjB,C,iCCPA,IAAIC,EAAUlF,OAEdpN,EAAOD,QAAU,SAAUsS,GACzB,IACE,OAAOC,EAAQD,EACjB,CAAE,MAAOqD,GACP,MAAO,QACT,CACF,C,qCCRA,IAAIU,EAAc,EAAQ,MAEtB/N,EAAK,EACLob,EAAUze,KAAKgJ,SACfjN,EAAWqV,EAAY,GAAIrV,UAE/Bf,EAAOD,QAAU,SAAU2C,GACzB,MAAO,gBAAqBnB,IAARmB,EAAoB,GAAKA,GAAO,KAAO3B,IAAWsH,EAAKob,EAAS,GACtF,C,qCCPA,IAAIC,EAAgB,EAAQ,OAE5B1jB,EAAOD,QAAU2jB,IACXna,OAAOiS,MACkB,iBAAnBjS,OAAOmH,Q,oCCLnB,IAAIzH,EAAc,EAAQ,OACtBqO,EAAQ,EAAQ,OAIpBtX,EAAOD,QAAUkJ,GAAeqO,GAAM,WAEpC,OAGgB,IAHTzV,OAAOC,gBAAe,WAA0B,GAAG,YAAa,CACrEnB,MAAO,GACP0L,UAAU,IACTjG,SACL,G,iCCXA,IAAIgM,EAAalS,UAEjBF,EAAOD,QAAU,SAAU4jB,EAAQC,GACjC,GAAID,EAASC,EAAU,MAAMxR,EAAW,wBACxC,OAAOuR,CACT,C,qCCLA,IAAI5gB,EAAS,EAAQ,OACjBmP,EAAa,EAAQ,OAErBkL,EAAUra,EAAOqa,QAErBpd,EAAOD,QAAUmS,EAAWkL,IAAY,cAAcpD,KAAK5M,OAAOgQ,G,oCCLlE,IAAIra,EAAS,EAAQ,OACjB0J,EAAS,EAAQ,OACjBmG,EAAS,EAAQ,OACjBlG,EAAM,EAAQ,OACdgX,EAAgB,EAAQ,OACxBtF,EAAoB,EAAQ,OAE5B7U,EAASxG,EAAOwG,OAChBsa,EAAwBpX,EAAO,OAC/BqX,EAAwB1F,EAAoB7U,EAAO,QAAUA,EAASA,GAAUA,EAAOwa,eAAiBrX,EAE5G1M,EAAOD,QAAU,SAAUuD,GAKvB,OAJGsP,EAAOiR,EAAuBvgB,KACjCugB,EAAsBvgB,GAAQogB,GAAiB9Q,EAAOrJ,EAAQjG,GAC1DiG,EAAOjG,GACPwgB,EAAsB,UAAYxgB,IAC/BugB,EAAsBvgB,EACjC,C,qCCjBA,IAAI0gB,EAAI,EAAQ,OACZ9a,EAAW,EAAQ,OACnB2M,EAAoB,EAAQ,OAC5BoO,EAAiB,EAAQ,OACzBC,EAA2B,EAAQ,MACnC5M,EAAQ,EAAQ,OAEhB6M,EAAsB7M,GAAM,WAC9B,OAAoD,aAA7C,GAAGxU,KAAK5D,KAAK,CAAE2B,OAAQ,YAAe,EAC/C,IAIIujB,EAAiC,WACnC,IAEEviB,OAAOC,eAAe,GAAI,SAAU,CAAEuK,UAAU,IAASvJ,MAC3D,CAAE,MAAO4S,GACP,OAAOA,aAAiBxV,SAC1B,CACF,EAEIkH,EAAS+c,IAAwBC,IAIrCJ,EAAE,CAAEzf,OAAQ,QAASiD,OAAO,EAAMiX,MAAO,EAAGlJ,OAAQnO,GAAU,CAE5DtE,KAAM,SAAcuhB,GAClB,IAAIzjB,EAAIsI,EAASrK,MACbwX,EAAMR,EAAkBjV,GACxB0jB,EAAW1iB,UAAUf,OACzBqjB,EAAyB7N,EAAMiO,GAC/B,IAAK,IAAIzhB,EAAI,EAAGA,EAAIyhB,EAAUzhB,IAC5BjC,EAAEyV,GAAOzU,UAAUiB,GACnBwT,IAGF,OADA4N,EAAerjB,EAAGyV,GACXA,CACT,G,oCCvCF,IAAIkO,EAAkB,EAAQ,OAC1BC,EAAsB,EAAQ,OAE9BrP,EAAcqP,EAAoBrP,YAClCE,EAAyBmP,EAAoBnP,uBAC7CL,EAA2BwP,EAAoBxP,yBAInDK,EAAuB,cAAc,WACnC,OAAOkP,EAAgBpP,EAAYtW,MAAOmW,EAAyBnW,MACrE,G,qCCXA,IAAI2lB,EAAsB,EAAQ,OAC9BpO,EAAc,EAAQ,MACtByF,EAAY,EAAQ,OACpB4I,EAA8B,EAAQ,OAEtCtP,EAAcqP,EAAoBrP,YAClCH,EAA2BwP,EAAoBxP,yBAC/CK,EAAyBmP,EAAoBnP,uBAC7CqP,EAAOtO,EAAYoO,EAAoB5Q,oBAAoB8Q,MAI/DrP,EAAuB,YAAY,SAAkBsP,QACjCpjB,IAAdojB,GAAyB9I,EAAU8I,GACvC,IAAI/jB,EAAIuU,EAAYtW,MAChByK,EAAImb,EAA4BzP,EAAyBpU,GAAIA,GACjE,OAAO8jB,EAAKpb,EAAGqb,EACjB,G,qCCjBA,IAAIC,EAAY,EAAQ,OACpBJ,EAAsB,EAAQ,OAC9BK,EAAgB,EAAQ,OACxBvO,EAAsB,EAAQ,OAC9BwO,EAAW,EAAQ,OAEnB3P,EAAcqP,EAAoBrP,YAClCH,EAA2BwP,EAAoBxP,yBAC/CK,EAAyBmP,EAAoBnP,uBAE7C0P,IAAiB,WACnB,IAEE,IAAIxR,UAAU,GAAG,QAAQ,EAAG,CAAEzF,QAAS,WAAc,MAAM,CAAG,GAChE,CAAE,MAAO4H,GAGP,OAAiB,IAAVA,CACT,CACF,CATqB,GAarBL,EAAuB,OAAQ,CAAE,KAAQ,SAAUvU,EAAOH,GACxD,IAAIC,EAAIuU,EAAYtW,MAChB4X,EAAgBH,EAAoBxV,GACpCkkB,EAAcH,EAAcjkB,GAAKkkB,EAASnkB,IAAUA,EACxD,OAAOikB,EAAUhkB,EAAGoU,EAAyBpU,GAAI6V,EAAeuO,EAClE,GAAI,SAAUD,E,qCC5Bd,IAAIf,EAAI,EAAQ,OACZjhB,EAAS,EAAQ,OACjBye,EAAiB,eAIrBwC,EAAE,CAAEjhB,QAAQ,EAAM6Y,MAAM,EAAMzP,YAAY,EAAMoJ,OAAQxS,EAAOye,iBAAmBA,GAAkB,CAClGA,eAAgBA,G,qCCPlB,IAAIwC,EAAI,EAAQ,OACZjhB,EAAS,EAAQ,OACjB2Z,EAAa,EAAQ,OACrBnF,EAA2B,EAAQ,OACnCzV,EAAiB,UACjB8Q,EAAS,EAAQ,OACjBqS,EAAa,EAAQ,OACrBC,EAAoB,EAAQ,OAC5BC,EAA0B,EAAQ,OAClCC,EAAwB,EAAQ,OAChCC,EAAkB,EAAQ,OAC1Bpc,EAAc,EAAQ,OACtB0X,EAAU,EAAQ,OAElB2E,EAAgB,eAChB9K,EAAQkC,EAAW,SACnB6I,EAAqB7I,EAAW4I,GAEhCE,EAAgB,WAClBP,EAAWpmB,KAAM4mB,GACjB,IAAIC,EAAkB9jB,UAAUf,OAC5B8kB,EAAUR,EAAwBO,EAAkB,OAAInkB,EAAYK,UAAU,IAC9E0B,EAAO6hB,EAAwBO,EAAkB,OAAInkB,EAAYK,UAAU,GAAI,SAC/EN,EAAO,IAAIikB,EAAmBI,EAASriB,GACvCoS,EAAQ8E,EAAMmL,GAIlB,OAHAjQ,EAAMpS,KAAOgiB,EACbxjB,EAAeR,EAAM,QAASiW,EAAyB,EAAG8N,EAAgB3P,EAAMiF,MAAO,KACvFuK,EAAkB5jB,EAAMzC,KAAM2mB,GACvBlkB,CACT,EAEImkB,EAAwBD,EAAcpf,UAAYmf,EAAmBnf,UAErEwf,EAAkB,UAAWpL,EAAM8K,GACnCO,EAA0B,UAAW,IAAIN,EAAmB,EAAG,GAG/Dzf,EAAayf,GAAsBtc,GAAepH,OAAOyJ,yBAAyBvI,EAAQuiB,GAI1FQ,IAAqBhgB,KAAgBA,EAAWuG,UAAYvG,EAAWsG,cAEvE2Z,EAAqBH,IAAoBE,IAAqBD,EAIlE7B,EAAE,CAAEjhB,QAAQ,EAAMgJ,aAAa,EAAMwJ,OAAQoL,GAAWoF,GAAsB,CAC5EC,aAAcD,EAAqBP,EAAgBD,IAGrD,IAAIU,EAAyBvJ,EAAW4I,GACpCY,EAAkCD,EAAuB7f,UAE7D,GAAI8f,EAAgCna,cAAgBka,EAKlD,IAAK,IAAIvjB,KAJJie,GACH7e,EAAeokB,EAAiC,cAAe3O,EAAyB,EAAG0O,IAG7Eb,EAAuB,GAAIxS,EAAOwS,EAAuB1iB,GAAM,CAC7E,IAAIyjB,EAAWf,EAAsB1iB,GACjC0jB,EAAeD,EAAShZ,EACvByF,EAAOqT,EAAwBG,IAClCtkB,EAAemkB,EAAwBG,EAAc7O,EAAyB,EAAG4O,EAASzkB,GAE9F,C,qCChEF,EAAQ,OACR,EAAQ,M,qCCFR,IAAIsiB,EAAI,EAAQ,OACZjhB,EAAS,EAAQ,OACjBsjB,EAAU,aACVC,EAAgB,EAAQ,OAGxBhF,EAAeve,EAAOue,aAAegF,EAAcD,GAAS,GAASA,EAIzErC,EAAE,CAAEjhB,QAAQ,EAAM6Y,MAAM,EAAMzP,YAAY,EAAMoJ,OAAQxS,EAAOue,eAAiBA,GAAgB,CAC9FA,aAAcA,G,qCCXhB,IAAIvO,EAAgB,EAAQ,OACxBqD,EAAc,EAAQ,MACtBrV,EAAW,EAAQ,OACnBkf,EAA0B,EAAQ,OAElCsG,EAAmBC,gBACnBC,EAA2BF,EAAiBngB,UAC5CsgB,EAAStQ,EAAYqQ,EAAyBC,QAC9CC,EAAUvQ,EAAYqQ,EAAyB,WAC/Chd,EAAU2M,EAAYqQ,EAAyBhd,SAC/C3G,EAAOsT,EAAY,GAAGtT,MACtB2d,EAAS,IAAI8F,EAAiB,eAElC9F,EAAO,UAAU,IAAK,GAGtBA,EAAO,UAAU,SAAKlf,GAElBkf,EAAS,KAAO,OAClB1N,EAAc0T,EAA0B,UAAU,SAAUnjB,GAC1D,IAAIzC,EAASe,UAAUf,OACnB+lB,EAAS/lB,EAAS,OAAIU,EAAYK,UAAU,GAChD,GAAIf,QAAqBU,IAAXqlB,EAAsB,OAAOD,EAAQ9nB,KAAMyE,GACzD,IAAI0E,EAAU,GACdyB,EAAQ5K,MAAM,SAAUgoB,EAAGnd,GACzB5G,EAAKkF,EAAS,CAAEtF,IAAKgH,EAAG/I,MAAOkmB,GACjC,IACA5G,EAAwBpf,EAAQ,GAChC,IAMIimB,EANApkB,EAAM3B,EAASuC,GACf3C,EAAQI,EAAS6lB,GACjB9lB,EAAQ,EACRimB,EAAS,EACTC,GAAQ,EACRC,EAAgBjf,EAAQnH,OAE5B,MAAOC,EAAQmmB,EACbH,EAAQ9e,EAAQlH,KACZkmB,GAASF,EAAMpkB,MAAQA,GACzBskB,GAAQ,EACRL,EAAQ9nB,KAAMioB,EAAMpkB,MACfqkB,IAET,MAAOA,EAASE,EACdH,EAAQ9e,EAAQ+e,KACVD,EAAMpkB,MAAQA,GAAOokB,EAAMnmB,QAAUA,GAAQ+lB,EAAO7nB,KAAMioB,EAAMpkB,IAAKokB,EAAMnmB,MAErF,GAAG,CAAEwL,YAAY,EAAMyL,QAAQ,G,qCC9CjC,IAAI7E,EAAgB,EAAQ,OACxBqD,EAAc,EAAQ,MACtBrV,EAAW,EAAQ,OACnBkf,EAA0B,EAAQ,OAElCsG,EAAmBC,gBACnBC,EAA2BF,EAAiBngB,UAC5C8gB,EAAS9Q,EAAYqQ,EAAyBS,QAC9CC,EAAO/Q,EAAYqQ,EAAyBvjB,KAC5Cud,EAAS,IAAI8F,EAAiB,QAI9B9F,EAAOvd,IAAI,IAAK,IAAOud,EAAOvd,IAAI,SAAK3B,IACzCwR,EAAc0T,EAA0B,OAAO,SAAanjB,GAC1D,IAAIzC,EAASe,UAAUf,OACnB+lB,EAAS/lB,EAAS,OAAIU,EAAYK,UAAU,GAChD,GAAIf,QAAqBU,IAAXqlB,EAAsB,OAAOO,EAAKtoB,KAAMyE,GACtD,IAAI2E,EAASif,EAAOroB,KAAMyE,GAC1B2c,EAAwBpf,EAAQ,GAChC,IAAIF,EAAQI,EAAS6lB,GACjB9lB,EAAQ,EACZ,MAAOA,EAAQmH,EAAOpH,OACpB,GAAIoH,EAAOnH,OAAaH,EAAO,OAAO,EACtC,OAAO,CACX,GAAG,CAAEwL,YAAY,EAAMyL,QAAQ,G,qCCzBjC,IAAI3O,EAAc,EAAQ,OACtBmN,EAAc,EAAQ,MACtBpD,EAAwB,EAAQ,OAEhCyT,EAA2BD,gBAAgBpgB,UAC3CqD,EAAU2M,EAAYqQ,EAAyBhd,SAI/CR,KAAiB,SAAUwd,IAC7BzT,EAAsByT,EAA0B,OAAQ,CACtD1kB,IAAK,WACH,IAAIqlB,EAAQ,EAEZ,OADA3d,EAAQ5K,MAAM,WAAcuoB,GAAS,IAC9BA,CACT,EACAhb,cAAc,EACdD,YAAY,G,oCClBHkb,EAAA,OAEb,IAAIC,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQwnB,sBAAwBA,EAChCxnB,EAAQynB,qBAAuBA,EAC/BznB,EAAQ,gBAAa,EAErB,IAAI0nB,EAAkBH,EAAuBD,EAAQ,QAEjDK,EAAsBJ,EAAuBD,EAAQ,QAErDM,EAAO3iB,KAAK2iB,KACZC,EAAM5iB,KAAK4iB,IACXla,EAAO1I,KAAK0I,KACZma,EAAM7iB,KAAK6iB,IAEXC,EAA0B,GAwB9B,SAASC,EAA8BC,GACrC,IAAIC,EAAYrmB,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,EAChFsmB,EAAcF,EAAYnnB,OAAS,EACnCsnB,EAAaH,EAAY,GACzBI,EAAWJ,EAAYE,GAAa,GACpCG,EAAWL,EAAYhnB,MAAM,GAC7BsnB,EAAuBD,EAASE,KAAI,SAAUC,EAAK3lB,GACrD,IAAI4lB,EAAmB,IAAN5lB,EAAUslB,EAAaE,EAASxlB,EAAI,GAAG,GACxD,OAAO6lB,EAA8B/mB,WAAM,EAAQ,CAAC8mB,GAAY3oB,QAAO,EAAI4nB,EAAoB,YAAYc,IAC7G,IAEIG,EAAmB,IAAIjjB,MAAMwiB,GAAaU,KAAKd,GAC/Ce,EAAgBC,EAAsBR,EAAsBK,GAE5DpmB,EAASwmB,EAA6BF,EAAeP,EAAsBD,EAAUJ,GAEzF,OADA1lB,EAAOsmB,cAAc/lB,KAAKslB,GACnB7lB,CACT,CAWA,SAASmmB,EAA8BD,EAAYO,EAAeC,EAAeb,GAC/E,OAAO,SAAUc,GACf,IAAIC,EAAU,EAAID,EACdE,EAAcxB,EAAIuB,EAAS,GAC3BE,EAAczB,EAAIuB,EAAS,GAC3BG,EAAQ1B,EAAIsB,EAAG,GACfK,EAAQ3B,EAAIsB,EAAG,GACnB,MAAO,CAACT,EAAW,GAAKW,EAAc,EAAIJ,EAAc,GAAKE,EAAIG,EAAc,EAAIJ,EAAc,GAAKM,EAAQJ,EAAUf,EAAS,GAAKkB,EAAOb,EAAW,GAAKW,EAAc,EAAIJ,EAAc,GAAKE,EAAIG,EAAc,EAAIJ,EAAc,GAAKM,EAAQJ,EAAUf,EAAS,GAAKkB,EAC7Q,CACF,CASA,SAASE,EAAoBC,EAAMC,GACjC,IAAIC,GAAQ,EAAIlC,EAAgB,YAAYgC,EAAM,GAC9CG,EAAKD,EAAM,GACXE,EAAKF,EAAM,GAEXG,GAAQ,EAAIrC,EAAgB,YAAYiC,EAAO,GAC/CK,EAAKD,EAAM,GACXE,EAAKF,EAAM,GAEf,OAAOnC,EAAKC,EAAIgC,EAAKG,EAAI,GAAKnC,EAAIiC,EAAKG,EAAI,GAC7C,CAQA,SAASC,EAAWC,GAClB,OAAOA,EAAKC,QAAO,SAAUC,EAAKC,GAChC,OAAOD,EAAMC,CACf,GAAG,EACL,CAQA,SAASC,EAAyBzB,GAChC,OAAOA,EAAcN,KAAI,SAAUgC,EAAQ1nB,GACzC,OAAO,IAAI6C,MAAM6kB,EAAO1pB,OAAS,GAAG+nB,KAAK,GAAGL,KAAI,SAAUiC,EAAM1gB,GAC9D,OAAO0f,EAAoBe,EAAOzgB,GAAIygB,EAAOzgB,EAAI,GACnD,GACF,GACF,CAQA,SAASgf,EAAsBR,EAAsBK,GACnD,OAAOL,EAAqBC,KAAI,SAAUkC,EAAqB5nB,GAC7D,IAAI6nB,EAAO,EAAI/B,EAAiB9lB,GAChC,OAAO,IAAI6C,MAAMijB,EAAiB9lB,IAAI+lB,KAAK,IAAIL,KAAI,SAAUoC,EAAK7gB,GAChE,OAAO2gB,EAAoB3gB,EAAI4gB,EACjC,GACF,GACF,CASA,SAASE,EAAiBC,EAAuBC,GAC/C,OAAOD,EAAsBtC,KAAI,SAAUC,GACzC,OAAOA,EAAID,KAAI,SAAUpb,GACvB,OAAO0a,EAAI1a,EAAI2d,EACjB,GACF,IAAGvC,KAAI,SAAUC,GACf,OAAOyB,EAAWzB,EACpB,IAAG2B,QAAO,SAAUY,EAAOlE,GACzB,OAAOkE,EAAQlE,CACjB,GAAG,EACL,CAcA,SAASkC,EAA6BF,EAAeP,EAAsBD,EAAUJ,GAEnF,IAAI+C,EAAS,EAETC,EAAS,EAETC,EAAQ,WAEV,IAAIC,EAAiBtC,EAAcsB,QAAO,SAAUY,EAAOvC,GACzD,OAAOuC,EAAQvC,EAAI3nB,MACrB,GAAG,GAEHgoB,EAAcpf,SAAQ,SAAU+e,EAAK3lB,GACnC,OAAO2lB,EAAI1lB,KAAKulB,EAASxlB,GAAG,GAC9B,IACA,IAAIgoB,EAAwBP,EAAyBzB,GACjDuC,EAAiBP,EAAsBV,QAAO,SAAUY,EAAOvC,GACjE,OAAOuC,EAAQvC,EAAI3nB,MACrB,GAAG,GACCwqB,EAAgBR,EAAsBtC,KAAI,SAAUC,GACtD,OAAOyB,EAAWzB,EACpB,IACI8C,EAAcrB,EAAWoB,GACzBP,EAAYQ,EAAcF,EAE1BG,EAAgBX,EAAiBC,EAAuBC,GAC5D,GAAIS,GAAiBtD,EAAW,MAAO,QACvCkD,EAAiBzd,EAAKod,EAAY7C,EAAYkD,EAAiB,KAC/D,IAAIxC,EAAmB0C,EAAc9C,KAAI,SAAU1nB,GACjD,OAAO6M,EAAK7M,EAASyqB,EAAcH,EACrC,IAEAtC,EAAgBC,EAAsBR,EAAsBK,GAC5DwC,EAAiBtC,EAAcsB,QAAO,SAAUY,EAAOvC,GACrD,OAAOuC,EAAQvC,EAAI3nB,MACrB,GAAG,GACH,IAAI2qB,EAAyBhc,KAAKic,MAAMjc,KAAKE,UAAUmZ,IACvD2C,EAAuB/hB,SAAQ,SAAU+e,EAAK3lB,GAC5C,OAAO2lB,EAAI1lB,KAAKulB,EAASxlB,GAAG,GAC9B,IACAgoB,EAAwBP,EAAyBkB,GACjDJ,EAAiBP,EAAsBV,QAAO,SAAUY,EAAOvC,GAC7D,OAAOuC,EAAQvC,EAAI3nB,MACrB,GAAG,GACHwqB,EAAgBR,EAAsBtC,KAAI,SAAUC,GAClD,OAAOyB,EAAWzB,EACpB,IACA8C,EAAcrB,EAAWoB,GACzBP,EAAYQ,EAAcF,EAC1B,IAAIM,EAAW,EAAIP,EAAiB,GAEpC7C,EAAqB7e,SAAQ,SAAUghB,EAAqB5nB,GAM1D,IALA,IAAI8oB,EAA0BhD,EAAiB9lB,GAC3CqmB,EAAI,IAAIxjB,MAAMimB,GAAyB/C,KAAK,IAAIL,KAAI,SAAUoC,EAAK7gB,GACrE,OAAOA,EAAI6e,EAAiB9lB,EAC9B,IAES+oB,EAAI,EAAGA,EAAIZ,EAAQY,IAO1B,IANA,IAAIC,EAAWvB,EAAyB,CAACzB,EAAchmB,KAAK,GACxDipB,EAAaD,EAAStD,KAAI,SAAUwD,GACtC,OAAOA,EAAIjB,CACb,IACIkB,EAAS,EAEJliB,EAAI,EAAGA,EAAI6hB,EAAyB7hB,IAAK,CAChD,GAAU,IAANA,EAAS,OACbkiB,GAAUF,EAAWhiB,EAAI,GACzBof,EAAEpf,IAAM4hB,EAAWM,EACf9C,EAAEpf,GAAK,IAAGof,EAAEpf,GAAK,GACjBof,EAAEpf,GAAK,IAAGof,EAAEpf,GAAK,GACrB+e,EAAchmB,GAAGiH,GAAK2gB,EAAoBvB,EAAEpf,GAC9C,CAEJ,IACAkhB,GAAU,EACVC,GACF,EAEA,EAAG,CACD,IAAIgB,EAAOf,IAEX,GAAa,UAATe,EAAkB,KACxB,OAASjB,GAAU,MAKnB,OAHAnC,EAAgBA,EAAcsB,QAAO,SAAUnS,EAAKwQ,GAClD,OAAOxQ,EAAIlY,OAAO0oB,EACpB,GAAG,IACI,CACLK,cAAeA,EACfoC,OAAQA,EACRD,OAAQA,EAEZ,CASA,SAASzD,EAAsBS,GAC7B,IAAIC,EAAYrmB,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,EAEpF,IAAKomB,EAEH,OADAkE,QAAQxW,MAAM,+CACP,EAGT,KAAMsS,aAAuBtiB,OAE3B,OADAwmB,QAAQxW,MAAM,mEACP,EAGT,GAAyB,kBAAduS,EAET,OADAiE,QAAQxW,MAAM,iEACP,EAGT,IAAIyW,EAAwBpE,EAA8BC,EAAaC,GACnEY,EAAgBsD,EAAsBtD,cAE1C,OAAOA,CACT,CASA,SAASrB,EAAqBQ,GAC5B,IAAIC,EAAYrmB,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,EAEpF,IAAKomB,EAEH,OADAkE,QAAQxW,MAAM,8CACP,EAGT,KAAMsS,aAAuBtiB,OAE3B,OADAwmB,QAAQxW,MAAM,kEACP,EAGT,GAAyB,kBAAduS,EAET,OADAiE,QAAQxW,MAAM,gEACP,EAGT,IAAI0W,EAAyBrE,EAA8BC,EAAaC,GACpEY,EAAgBuD,EAAuBvD,cAGvCwD,EAAiB/B,EAAyB,CAACzB,IAAgB,GAC3DhoB,EAASopB,EAAWoC,GACxB,OAAOxrB,CACT,CAEA,IAAIyrB,EAAW/E,EACfxnB,EAAQ,WAAausB,C,qCC9URjF,EAAA,OAEb,IAAIC,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQ,gBAAa,EAErB,IAAI0nB,EAAkBH,EAAuBD,EAAQ,QAEjDK,EAAsBJ,EAAuBD,EAAQ,QAUzD,SAASkF,EAAsBC,GAC7B,IAAIzhB,EAAQnJ,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GACvE6qB,EAAU7qB,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,IAC9E8qB,EAAU9qB,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,IAElF,KAAM4qB,aAAoB9mB,OAExB,OADAwmB,QAAQxW,MAAM,gEACP,EAGT,GAAI8W,EAAS3rB,QAAU,EAErB,OADAqrB,QAAQxW,MAAM,6EACP,EAGT,IAAIyS,EAAaqE,EAAS,GACtBG,EAAqBH,EAAS3rB,OAAS,EACvC+rB,EAAoB,IAAIlnB,MAAMinB,GAAoB/D,KAAK,GAAGL,KAAI,SAAUoC,EAAK9nB,GAC/E,MAAO,GAAG/C,QAAO,EAAI4nB,EAAoB,YAAYmF,EAAgCL,EAAU3pB,EAAGkI,EAAO0hB,EAASC,IAAW,CAACF,EAAS3pB,EAAI,IAC7I,IAGA,OAFIkI,GAAO+hB,EAAiBF,EAAmBzE,GAC/CyE,EAAkBG,QAAQP,EAAS,IAC5BI,CACT,CAYA,SAASC,EAAgCL,EAAU1rB,GACjD,IAAIiK,EAAQnJ,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GACvE6qB,EAAU7qB,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,IAC9E8qB,EAAU9qB,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,IAC9EorB,EAAWR,EAAS3rB,OACxB,KAAImsB,EAAW,GAAKlsB,GAASksB,GAA7B,CACA,IAAIC,EAAmBnsB,EAAQ,EAC3BmsB,EAAmB,IAAGA,EAAmBliB,EAAQiiB,EAAWC,EAAmB,GACnF,IAAIC,EAAkBpsB,EAAQ,EAC1BosB,GAAmBF,IAAUE,EAAkBniB,EAAQmiB,EAAkBF,EAAWA,EAAW,GACnG,IAAIG,EAAsBrsB,EAAQ,EAC9BqsB,GAAuBH,IAAUG,EAAsBpiB,EAAQoiB,EAAsBH,EAAWA,EAAW,GAC/G,IAAII,EAAcZ,EAASS,GACvBI,EAAcb,EAAS1rB,GACvBwsB,EAAad,EAASU,GACtBK,EAAiBf,EAASW,GAC9B,MAAO,CAAC,CAACE,EAAY,GAAKZ,GAAWa,EAAW,GAAKF,EAAY,IAAKC,EAAY,GAAKZ,GAAWa,EAAW,GAAKF,EAAY,KAAM,CAACE,EAAW,GAAKZ,GAAWa,EAAe,GAAKF,EAAY,IAAKC,EAAW,GAAKZ,GAAWa,EAAe,GAAKF,EAAY,KAXnN,CAY/C,CASA,SAASP,EAAiB9E,EAAaG,GACrC,IAAIqF,EAAgBxF,EAAY,GAC5ByF,EAAezF,EAAYhnB,OAAO,GAAG,GAEzC,OADAgnB,EAAYllB,KAAK,CAAC4qB,EAAiBD,EAAa,GAAIA,EAAa,IAAKC,EAAiBF,EAAc,GAAIrF,GAAaA,IAC/GH,CACT,CASA,SAAS0F,EAAiB7e,EAAO8e,GAC/B,IAAIC,GAAS,EAAInG,EAAgB,YAAY5Y,EAAO,GAChDd,EAAK6f,EAAO,GACZC,EAAKD,EAAO,GAEZE,GAAe,EAAIrG,EAAgB,YAAYkG,EAAa,GAC5DI,EAAKD,EAAa,GAClBE,EAAKF,EAAa,GAElBG,EAASF,EAAKhgB,EACdmgB,EAASF,EAAKH,EAClB,MAAO,CAACE,EAAKE,EAAQD,EAAKE,EAC5B,CAEA,IAAI5B,EAAWC,EACfxsB,EAAQ,WAAausB,C,qCC7GrB,IAAIhF,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETkB,OAAOC,eAAe/B,EAAS,wBAAyB,CACtDoM,YAAY,EACZpK,IAAK,WACH,OAAOosB,EAAuB5G,qBAChC,IAEF1lB,OAAOC,eAAe/B,EAAS,uBAAwB,CACrDoM,YAAY,EACZpK,IAAK,WACH,OAAOosB,EAAuB3G,oBAChC,IAEF3lB,OAAOC,eAAe/B,EAAS,wBAAyB,CACtDoM,YAAY,EACZpK,IAAK,WACH,OAAOqsB,EAAuB,UAChC,IAEFruB,EAAQ,gBAAa,EAErB,IAAIouB,EAAyB9G,EAAQ,MAEjC+G,EAAyB9G,EAAuBD,EAAQ,QAExDiF,EAAW,CACb/E,sBAAuB4G,EAAuB5G,sBAC9CC,qBAAsB2G,EAAuB3G,qBAC7C+E,sBAAuB6B,EAAuB,YAEhDruB,EAAQ,WAAausB,C,qCCpCRjF,EAAA,OAEb,IAAIC,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQ,gBAAa,EAErB,IAAIsuB,EAAmB/G,EAAuBD,EAAQ,QAElDK,EAAsBJ,EAAuBD,EAAQ,QAErDiH,EAAmBhH,EAAuBD,EAAQ,QAElDkH,EAASjH,EAAuBD,EAAQ,OAExCmH,EAAelH,EAAuBD,EAAQ,QAE9CoH,EAAQpH,EAAQ,OAEhBqH,EAAUpH,EAAuBD,EAAQ,QAEzCsH,EAASrH,EAAuBD,EAAQ,QAE5C,SAASnQ,EAAQ5R,EAAQspB,GAAkB,IAAIhoB,EAAO/E,OAAO+E,KAAKtB,GAAS,GAAIzD,OAAOgK,sBAAuB,CAAE,IAAIlJ,EAAUd,OAAOgK,sBAAsBvG,GAAaspB,IAAgBjsB,EAAUA,EAAQksB,QAAO,SAAUre,GAAO,OAAO3O,OAAOyJ,yBAAyBhG,EAAQkL,GAAKrE,UAAY,KAAIvF,EAAK9D,KAAKnB,MAAMiF,EAAMjE,EAAU,CAAE,OAAOiE,CAAM,CAEpV,SAASkoB,EAAcvqB,GAAU,IAAK,IAAI1B,EAAI,EAAGA,EAAIjB,UAAUf,OAAQgC,IAAK,CAAE,IAAIU,EAAyB,MAAhB3B,UAAUiB,GAAajB,UAAUiB,GAAK,CAAC,EAAOA,EAAI,EAAKqU,EAAQ3T,GAAQ,GAAMkG,SAAQ,SAAU/G,IAAO,EAAI2rB,EAAiB,YAAY9pB,EAAQ7B,EAAKa,EAAOb,GAAO,IAAeb,OAAOktB,0BAA6BltB,OAAOuJ,iBAAiB7G,EAAQ1C,OAAOktB,0BAA0BxrB,IAAmB2T,EAAQ3T,GAAQkG,SAAQ,SAAU/G,GAAOb,OAAOC,eAAeyC,EAAQ7B,EAAKb,OAAOyJ,yBAAyB/H,EAAQb,GAAO,GAAM,CAAE,OAAO6B,CAAQ,CAOthB,IAAIyqB,EAAU,SAASA,EAAQC,GAG7B,IAFA,EAAIX,EAAiB,YAAYzvB,KAAMmwB,GAElCC,EAAL,CAKA,IAAIjsB,EAAMisB,EAAOC,WAAW,MACxBC,EAAcF,EAAOE,YACrBC,EAAeH,EAAOG,aACtBC,EAAO,CAACF,EAAaC,GACzBH,EAAOK,aAAa,QAASH,GAC7BF,EAAOK,aAAa,SAAUF,GAO9BvwB,KAAKmE,IAAMA,EAOXnE,KAAKwwB,KAAOA,EAOZxwB,KAAK0wB,iBAAkB,EAOvB1wB,KAAK2wB,OAAS,GAOd3wB,KAAK4wB,MAAQlB,EAAO,WAOpB1vB,KAAKmpB,YAAcwG,EAAa,WAEhCS,EAAOrM,iBAAiB,YAAa8M,EAAU9T,KAAK/c,OACpDowB,EAAOrM,iBAAiB,YAAa+M,EAAU/T,KAAK/c,OACpDowB,EAAOrM,iBAAiB,UAAWgN,EAAQhU,KAAK/c,MArDhD,MAFEqtB,QAAQxW,MAAM,8BAwDlB,EAyIA,SAASma,EAAUnP,EAAUoP,GAC3B,IAAIN,EAAS3wB,KAAK2wB,OAEbO,EAAcP,IAKnBA,EAAO/lB,SAAQ,SAAUumB,GACvB,OAAOA,EAAMC,uBAAuBH,EACtC,IACAjxB,KAAKqxB,eACLC,sBAAsBN,EAAUjU,KAAK/c,KAAM6hB,EAAUoP,KARnDpP,GASJ,CAQA,SAASqP,EAAcP,GACrB,OAAOA,EAAOY,MAAK,SAAUJ,GAC3B,OAAQA,EAAMK,gBAAkBL,EAAMM,oBAAoBzvB,MAC5D,GACF,CAOA,SAAS6uB,EAAU5qB,GACjB,IAAI0qB,EAAS3wB,KAAK2wB,OACde,EAAaf,EAAOY,MAAK,SAAUJ,GACrC,MAAwB,UAAjBA,EAAMQ,MACf,IACKD,IACLA,EAAWC,OAAS,SACtB,CAOA,SAASb,EAAU7qB,GACjB,IAAI2rB,EAAU3rB,EAAE2rB,QACZC,EAAU5rB,EAAE4rB,QACZC,EAAW,CAACF,EAASC,GACrBlB,EAAS3wB,KAAK2wB,OACdoB,EAAcpB,EAAOY,MAAK,SAAUJ,GACtC,MAAwB,WAAjBA,EAAMQ,QAAwC,SAAjBR,EAAMQ,MAC5C,IAEA,GAAII,EAAa,CACf,IAAKA,EAAYC,KAAM,OAEvB,MAAgC,oBAArBD,EAAYE,UACrB5E,QAAQxW,MAAM,mDAIhBkb,EAAYG,cAAcjsB,QAC1B8rB,EAAYJ,OAAS,QAEvB,CAEA,IAAID,EAAaf,EAAOY,MAAK,SAAUJ,GACrC,MAAwB,UAAjBA,EAAMQ,MACf,IACIQ,EAAkBxB,EAAOX,QAAO,SAAUmB,GAC5C,OAAOA,EAAMiB,QAAsC,oBAArBjB,EAAMkB,YAA6BlB,EAAMmB,UACzE,IACIC,EAAeJ,EAAgBZ,MAAK,SAAUJ,GAChD,OAAOA,EAAMqB,oBAAoBV,EAAUX,EAC7C,IAGEhuB,SAASsvB,KAAK7mB,MAAM8mB,OADlBH,EAC2BA,EAAa3mB,MAAM+mB,YAEnB,UAG/B,IAAIC,GAA4B,EAC5BC,GAA8B,EAGlC,GAFInB,IAAYkB,EAA6D,oBAA1BlB,EAAWoB,YAC1DP,IAAcM,EAAiE,oBAA5BN,EAAaQ,YAC/DR,GAAiBb,EAAtB,CAEA,IAAKa,GAAgBb,EAGnB,OAFIkB,GAA2BlB,EAAWoB,WAAW7sB,EAAGyrB,QACxDA,EAAWC,OAAS,UAItB,IAAIY,GAAgBA,IAAiBb,EAErC,OAAIa,IAAiBb,GACfmB,GAA6BN,EAAaQ,WAAW9sB,EAAGssB,QAC5DA,EAAaZ,OAAS,eAIpBY,GAAgBb,GAAca,IAAiBb,IAC7CkB,GAA2BlB,EAAWoB,WAAW7sB,EAAGyrB,GACxDA,EAAWC,OAAS,SAChBkB,GAA6BN,EAAaQ,WAAW9sB,EAAGssB,GAC5DA,EAAaZ,OAAS,SApBgB,CAsB1C,CAOA,SAASZ,EAAQ9qB,GACf,IAAI0qB,EAAS3wB,KAAK2wB,OACdoB,EAAcpB,EAAOY,MAAK,SAAUJ,GACtC,MAAwB,WAAjBA,EAAMQ,MACf,IACIqB,EAAYrC,EAAOY,MAAK,SAAUJ,GACpC,MAAwB,SAAjBA,EAAMQ,MACf,IACII,GAA4C,oBAAtBA,EAAYkB,OAAsBlB,EAAYkB,MAAMhtB,EAAG8rB,GACjFpB,EAAO/lB,SAAQ,SAAUumB,GACvB,OAAOA,IAAUA,EAAMQ,OAAS,SAClC,IACII,IAAaA,EAAYJ,OAAS,SAClCqB,IAAWA,EAAUrB,OAAS,QACpC,CArQAzwB,EAAQ,WAAaivB,EAErBA,EAAQ5oB,UAAU2rB,UAAY,WAC5B,IAAIC,EAEA3C,EAAOxwB,KAAKwwB,MAEf2C,EAAYnzB,KAAKmE,KAAKivB,UAAUtwB,MAAMqwB,EAAW,CAAC,EAAG,GAAGlyB,QAAO,EAAI4nB,EAAoB,YAAY2H,IACtG,EAQAL,EAAQ5oB,UAAUhH,IAAM,WACtB,IAAI8yB,EAAStwB,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E0B,EAAO4uB,EAAO5uB,KAElB,GAAKA,EAAL,CAKA,IAAI6uB,EAAczD,EAAQ,WAAW3sB,IAAIuB,GAEzC,GAAK6uB,EAAL,CAKA,IAAInC,EAAQ,IAAIrB,EAAO,WAAWwD,EAAaD,GAC/C,GAAKlC,EAAMoC,UAAUpC,GAKrB,OAJAA,EAAMhyB,OAASa,KACfA,KAAK2wB,OAAO1sB,KAAKktB,GACjBnxB,KAAKwzB,oBACLxzB,KAAKqxB,eACEF,CARP,MAFE9D,QAAQoG,KAAK,8CALf,MAFEpG,QAAQxW,MAAM,0BAkBlB,EAOAsZ,EAAQ5oB,UAAUisB,kBAAoB,WACpC,IAAI7C,EAAS3wB,KAAK2wB,OAClBA,EAAO9K,MAAK,SAAUljB,EAAGC,GACvB,OAAID,EAAEV,MAAQW,EAAEX,MAAc,EAC1BU,EAAEV,QAAUW,EAAEX,MAAc,EAC5BU,EAAEV,MAAQW,EAAEX,OAAe,OAA/B,CACF,GACF,EAQAkuB,EAAQ5oB,UAAUmsB,SAAW,SAAUvC,GACH,oBAAvBA,EAAMwC,eACjBxC,EAAMwC,aAAa3zB,MACnBA,KAAK2wB,OAAS3wB,KAAK2wB,OAAOX,QAAO,SAAUmB,GACzC,OAAOA,CACT,IACAnxB,KAAKqxB,eACP,EAOAlB,EAAQ5oB,UAAUqsB,YAAc,WAC9B,IAAIC,EAAQ7zB,KAEZA,KAAK2wB,OAAO/lB,SAAQ,SAAUumB,GAC5B,OAAOA,EAAMwC,aAAaE,EAC5B,IACA7zB,KAAK2wB,OAAS3wB,KAAK2wB,OAAOX,QAAO,SAAUmB,GACzC,OAAOA,CACT,IACAnxB,KAAKqxB,cACP,EAOAlB,EAAQ5oB,UAAU8pB,aAAe,WAC/B,IAAIyC,EAAS9zB,KAEbA,KAAKkzB,YACLlzB,KAAK2wB,OAAOX,QAAO,SAAUmB,GAC3B,OAAOA,GAASA,EAAM4C,OACxB,IAAGnpB,SAAQ,SAAUumB,GACnB,OAAOA,EAAM6C,cAAcF,EAAQ3C,EACrC,GACF,EAQAhB,EAAQ5oB,UAAU0sB,gBAAkB,WAClC,IAAIC,EAASl0B,KAET0wB,EAAkB1wB,KAAK0wB,gBAC3B,IAAIA,EAEJ,OADA1wB,KAAK0wB,iBAAkB,EAChB,IAAIyD,SAAQ,SAAUC,GAC3BpD,EAAU3wB,KAAK6zB,GAAQ,WACrBA,EAAOxD,iBAAkB,EACzB0D,GACF,GAAGC,KAAK1Q,MACV,GACF,EAoJAwM,EAAQ5oB,UAAU+sB,MAAQ,SAAUnD,GAClC,IAAIvlB,EAAQulB,EAAMvlB,MAAM2oB,WAEpBC,EAAcvE,EAAc,CAAC,EAAGkB,EAAO,CACzCvlB,MAAOA,IAKT,cAFO4oB,EAAYr1B,OACnBq1B,GAAc,EAAI5E,EAAM6E,WAAWD,GAAa,GACzCx0B,KAAKO,IAAIi0B,EAClB,C,qCC5XahM,EAAA,OAEb,IAAIC,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQ,gBAAa,EAErB,IAAIwzB,EAAejM,EAAuBD,EAAQ,QAE9CmM,EAAqBlM,EAAuBD,EAAQ,QAEpDoM,EAAWnM,EAAuBD,EAAQ,QAE1CK,EAAsBJ,EAAuBD,EAAQ,QAErDiH,EAAmBhH,EAAuBD,EAAQ,QAElDqM,EAASpM,EAAuBD,EAAQ,QAExCsM,EAAcrM,EAAuBD,EAAQ,QAE7CoH,EAAQpH,EAAQ,OAQhBuM,EAAQ,SAASA,EAAM5D,EAAOkC,IAChC,EAAI5D,EAAiB,YAAYzvB,KAAM+0B,GACvC1B,GAAS,EAAIzD,EAAM6E,WAAWpB,GAAQ,GACtC,IAAI2B,EAAgB,CAMlBjB,SAAS,EAOT/B,MAAM,EAONI,OAAO,EAQPnwB,MAAO,EAOPgzB,eAAgB,EAOhBC,eAAgB,GAQhBC,eAAgB,SAOhB3D,gBAAgB,EAShBc,UAAW,KAOXS,WAAY,KAOZD,WAAY,KAOZG,MAAO,MAELmC,EAAgB,CAClBzD,OAAQ,SACR0D,cAAe,GACfC,cAAe,GACf7D,oBAAqB,GACrB8D,MAAO,CAAC,GAELlC,EAAOmC,QAAOnC,EAAOmC,MAAQ,CAAC,GAC9BnC,EAAOznB,QAAOynB,EAAOznB,MAAQ,CAAC,GACnC,IAAI4pB,EAAQxyB,OAAOwH,OAAO,CAAC,EAAG2mB,EAAMqE,MAAOnC,EAAOmC,OAClDxyB,OAAOwH,OAAOwqB,EAAe3B,EAAQ+B,GACrCpyB,OAAOwH,OAAOxK,KAAMmxB,EAAO6D,GAC3Bh1B,KAAKw1B,MAAQA,EACbx1B,KAAK4L,MAAQ,IAAIipB,EAAO,WAAWxB,EAAOznB,OAC1C5L,KAAKy1B,gBACP,EA0VA,SAASC,EAAMC,GACb,OAAO,IAAIxB,SAAQ,SAAUC,GAC3BjQ,WAAWiQ,EAASuB,EACtB,GACF,CAvVAz0B,EAAQ,WAAa6zB,EAErBA,EAAMxtB,UAAUkuB,eAAiB,WACI,oBAAxBz1B,KAAK41B,gBAA+B51B,KAAK41B,eAAe,KAAM51B,MAE/C,oBAAfA,KAAK61B,OAAsB71B,KAAK61B,MAAM71B,KACnD,EASA+0B,EAAMxtB,UAAUysB,cAAgB,SAAU70B,EAAQgyB,GAChD,IAAIhtB,EAAMhF,EAAOgF,IACjBgtB,EAAMvlB,MAAMkqB,UAAU3xB,GACS,oBAApBnE,KAAK+1B,YAA2B/1B,KAAK+1B,WAAW/1B,KAAMb,GACjEgyB,EAAM6E,KAAK72B,EAAQgyB,GACQ,oBAAhBnxB,KAAKi2B,QAAuBj2B,KAAKi2B,OAAOj2B,KAAMb,GACzDgyB,EAAMvlB,MAAMsqB,iBAAiB/xB,EAC/B,EASA4wB,EAAMxtB,UAAUirB,oBAAsB,SAAUV,EAAUlH,GACxD,IAAI0H,EAAY1H,EAAK0H,UACjB1mB,EAAQgf,EAAKhf,MACbymB,EAAazH,EAAKyH,WAClB8D,EAAcvqB,EAAMuqB,YACpBC,EAASxqB,EAAMwqB,OACfC,EAAQzqB,EAAMyqB,MACdC,EAAY1qB,EAAM0qB,UAYtB,OAVIH,IACEC,IAAQtE,GAAW,EAAIlC,EAAM2G,oBAAoBH,EAAQtE,EAAUqE,IACnEE,IAAOvE,GAAW,EAAIlC,EAAM4G,kBAAkBH,EAAM3M,KAAI,SAAUpb,GACpE,OAAO,EAAIA,CACb,IAAIwjB,EAAUqE,IACVG,IAAWxE,GAAW,EAAIlC,EAAM6G,sBAAsBH,EAAU5M,KAAI,SAAU1B,GAChF,OAAY,EAALA,CACT,IAAI8J,KAGFQ,EAAkB1C,EAAM8G,mBAAmB5zB,WAAM,EAAQ,CAACgvB,GAAU7wB,QAAO,EAAI4nB,EAAoB,YAAYyJ,KAC5GD,EAAWP,EAAU9xB,KAC9B,EAQA+0B,EAAMxtB,UAAU2qB,cAAgB,SAAUjsB,GACxCjG,KAAKiyB,KAAKhsB,EAAGjG,MACkB,oBAApBA,KAAK22B,YAA2B32B,KAAK22B,WAAW1wB,EAAGjG,MAC3B,oBAAxBA,KAAK41B,gBAA+B51B,KAAK41B,eAAe3vB,EAAGjG,MAC5C,oBAAfA,KAAK42B,OAAsB52B,KAAK42B,MAAM3wB,EAAGjG,KACtD,EASA+0B,EAAMxtB,UAAUsvB,KAAO,SAAUC,GAC/B,IAAIC,EAASh0B,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,QAAKL,EACjF,IAAKo0B,QAAuBp0B,IAAXq0B,EAAsB,OAAO,EAC9C,IAAIz1B,EAAwD,YAA7C,EAAIszB,EAAS,YAAY50B,KAAK82B,IACzCx1B,IAAUy1B,GAAS,EAAInH,EAAM6E,WAAWsC,GAAQ,IACpD,IAAI53B,EAASa,KAAKb,OAED,UAAb23B,EACF92B,KAAK4L,MAAMorB,OAAOD,GACTz1B,EACT0B,OAAOwH,OAAOxK,KAAK82B,GAAWC,GAE9B/2B,KAAK82B,GAAYC,EAGF,UAAbD,GAAsB33B,EAAOq0B,oBACjCr0B,EAAOkyB,cACT,EAYA0D,EAAMxtB,UAAUypB,UAEhB,WACE,IAAInG,GAAQ,EAAI8J,EAAmB,YAEnCD,EAAa,WAAWuC,MAAK,SAASC,EAASJ,EAAUC,GACvD,IAAII,EACAC,EACAC,EACAC,EACApC,EACAC,EACAF,EACAxD,EACAtyB,EACAo4B,EAASx0B,UACb,OAAO2xB,EAAa,WAAWhjB,MAAK,SAAmB8lB,GACrD,MAAO,EACL,OAAQA,EAAUC,KAAOD,EAAUlwB,MACjC,KAAK,EAGH,GAFA6vB,EAAOI,EAAOv1B,OAAS,QAAmBU,IAAd60B,EAAO,IAAmBA,EAAO,GAE1C,UAAbT,GAAqC,UAAbA,EAAuB,CACnDU,EAAUlwB,KAAO,EACjB,KACF,CAGA,OADA+lB,QAAQxW,MAAM,6CACP2gB,EAAUE,OAAO,UAE1B,KAAK,EAeH,GAdAX,GAAS,EAAInH,EAAM6E,WAAWsC,GAAQ,GACrB,UAAbD,GAAsB92B,KAAK4L,MAAM+rB,eAAeZ,GACpDK,EAAap3B,KAAK82B,GAClBO,EAAar0B,OAAO+E,KAAKgvB,GACzBO,EAAc,CAAC,EACfD,EAAWzsB,SAAQ,SAAU/G,GAC3B,OAAOyzB,EAAYzzB,GAAOuzB,EAAWvzB,EACvC,IACAqxB,EAAiBl1B,KAAKk1B,eAAgBC,EAAiBn1B,KAAKm1B,eAAgBF,EAAiBj1B,KAAKi1B,eAClGxD,GAAsB,EAAIqD,EAAY,YAAYK,EAAgBmC,EAAaP,EAAQ7B,GAAgB,GACvGl1B,KAAKq1B,cAAcpxB,KAAKmzB,GACxBp3B,KAAKs1B,cAAcrxB,KAAKozB,GACxBr3B,KAAKyxB,oBAAoBxtB,KAAKwtB,IAEzB0F,EAAM,CACTK,EAAUlwB,KAAO,GACjB,KACF,CAEA,OAAOkwB,EAAUE,OAAO,UAE1B,KAAK,GACH,KAAMzC,EAAiB,GAAI,CACzBuC,EAAUlwB,KAAO,GACjB,KACF,CAGA,OADAkwB,EAAUlwB,KAAO,GACVouB,EAAMT,GAEf,KAAK,GAEH,OADA91B,EAASa,KAAKb,OACPq4B,EAAUE,OAAO,SAAU,IAAIvD,QAEtC,WACE,IAAIrJ,GAAQ,EAAI6J,EAAmB,YAEnCD,EAAa,WAAWuC,MAAK,SAASW,EAAQxD,GAC5C,OAAOM,EAAa,WAAWhjB,MAAK,SAAkBmmB,GACpD,MAAO,EACL,OAAQA,EAASJ,KAAOI,EAASvwB,MAC/B,KAAK,EAEH,OADAuwB,EAASvwB,KAAO,EACTnI,EAAO80B,kBAEhB,KAAK,EACHG,IAEF,KAAK,EACL,IAAK,MACH,OAAOyD,EAASC,OAGxB,GAAGF,EACL,KAEA,OAAO,SAAUG,GACf,OAAOjN,EAAMhoB,MAAM9C,KAAM+C,UAC3B,CACF,CAzBA,KA2BF,KAAK,GACL,IAAK,MACH,OAAOy0B,EAAUM,OAGzB,GAAGZ,EAAUl3B,KACf,KAEA,OAAO,SAAUg4B,EAAIC,GACnB,OAAOpN,EAAM/nB,MAAM9C,KAAM+C,UAC3B,CACF,CArGA,GA6GAgyB,EAAMxtB,UAAU6pB,uBAAyB,SAAUH,GACjD,IAAIgE,EAAiBj1B,KAAKi1B,eACtBI,EAAgBr1B,KAAKq1B,cACrBC,EAAgBt1B,KAAKs1B,cACrB7D,EAAsBzxB,KAAKyxB,oBAC3BD,EAAiBxxB,KAAKwxB,eACtBA,GACA6C,KAAK1Q,MAAQsN,EAAYgE,IAC7BI,EAAczqB,SAAQ,SAAUstB,EAAMl0B,GACpCsxB,EAActxB,GAAG4G,SAAQ,SAAU/G,GACjCq0B,EAAKr0B,GAAO4tB,EAAoBztB,GAAG,GAAGH,EACxC,GACF,IACA4tB,EAAoB7mB,SAAQ,SAAUutB,EAAWn0B,GAC/Cm0B,EAAUC,QACV,IAAIC,EAA+B,IAArBF,EAAUn2B,OACpBq2B,IAAShD,EAAcrxB,GAAK,MAC5Bq0B,IAAS/C,EAActxB,GAAK,KAClC,IACAhE,KAAKyxB,oBAAsBA,EAAoBzB,QAAO,SAAU5Z,GAC9D,OAAOA,EAAMpU,MACf,IACAhC,KAAKq1B,cAAgBA,EAAcrF,QAAO,SAAUkI,GAClD,OAAOA,CACT,IACAl4B,KAAKs1B,cAAgBA,EAActF,QAAO,SAAUjoB,GAClD,OAAOA,CACT,IACF,EAOAgtB,EAAMxtB,UAAU+wB,aAAe,WAC7B,IAAI7G,EAAsBzxB,KAAKyxB,oBAC3B6D,EAAgBt1B,KAAKs1B,cACrBD,EAAgBr1B,KAAKq1B,cACrBl2B,EAASa,KAAKb,OAWlB,OAVAk2B,EAAczqB,SAAQ,SAAUstB,EAAMl0B,GACpC,IAAIu0B,EAAcjD,EAActxB,GAC5Bw0B,EAAY/G,EAAoBztB,GAAGy0B,MACvCF,EAAY3tB,SAAQ,SAAU/G,GAC5B,OAAOq0B,EAAKr0B,GAAO20B,EAAU30B,EAC/B,GACF,IACA7D,KAAKyxB,oBAAsB,GAC3BzxB,KAAKs1B,cAAgB,GACrBt1B,KAAKq1B,cAAgB,GACdl2B,EAAOkyB,cAChB,EAOA0D,EAAMxtB,UAAUmxB,eAAiB,WAC/B14B,KAAK62B,KAAK,kBAAkB,EAC9B,EAOA9B,EAAMxtB,UAAUoxB,cAAgB,WAC9B,IAAIx5B,EAASa,KAAKb,OAElB,OADAa,KAAK62B,KAAK,kBAAkB,GACrB,IAAI1C,QAEX,WACE,IAAIlJ,GAAQ,EAAI0J,EAAmB,YAEnCD,EAAa,WAAWuC,MAAK,SAAS2B,EAASxE,GAC7C,OAAOM,EAAa,WAAWhjB,MAAK,SAAmBmnB,GACrD,MAAO,EACL,OAAQA,EAAUpB,KAAOoB,EAAUvxB,MACjC,KAAK,EAEH,OADAuxB,EAAUvxB,KAAO,EACVnI,EAAO80B,kBAEhB,KAAK,EACHG,IAEF,KAAK,EACL,IAAK,MACH,OAAOyE,EAAUf,OAGzB,GAAGc,EACL,KAEA,OAAO,SAAUE,GACf,OAAO7N,EAAMnoB,MAAM9C,KAAM+C,UAC3B,CACF,CAzBA,GA0BF,EAQAgyB,EAAMxtB,UAAUosB,aAAe,SAAUx0B,GACvC,IAAI00B,EAAQ7zB,KAER2wB,EAASxxB,EAAOwxB,OAChB1uB,EAAQ0uB,EAAOoI,WAAU,SAAU5H,GACrC,OAAOA,IAAU0C,CACnB,KACe,IAAX5xB,IAC6B,oBAAtBjC,KAAKg5B,cAA6Bh5B,KAAKg5B,aAAah5B,MAC/D2wB,EAAOsI,OAAOh3B,EAAO,EAAG,MACI,oBAAjBjC,KAAKk5B,SAAwBl5B,KAAKk5B,QAAQl5B,MACvD,C,qCC1dA,IAAIyoB,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQ,gBAAa,EAErB,IAAI2nB,EAAsBJ,EAAuBD,EAAQ,QAErDiH,EAAmBhH,EAAuBD,EAAQ,QAElDkH,EAASlH,EAAQ,MAEjBoH,EAAQpH,EAAQ,OAOhB2Q,EAAQ,SAASA,EAAMvtB,IACzB,EAAI6jB,EAAiB,YAAYzvB,KAAMm5B,GACvCn5B,KAAK23B,eAAe/rB,GACpB,IAAIwtB,EAAe,CAMjBrP,KAAM,CAAC,EAAG,EAAG,EAAG,GAOhBsP,OAAQ,CAAC,EAAG,EAAG,EAAG,GAOlBC,QAAS,EAQTC,QAAS,KAQTC,SAAU,KAQVC,SAAU,KAQVC,eAAgB,KAOhBC,WAAY,EAOZC,YAAa,CAAC,EAAG,EAAG,EAAG,GAOvBC,cAAe,EAOfC,cAAe,EAOfC,UAAW,EAQX5D,YAAa,KAQbE,MAAO,KAQPD,OAAQ,KAQRE,UAAW,KAQX3D,YAAa,UAQbqH,UAAW,SAQXC,YAAa,SAQbC,WAAY,SAOZC,SAAU,GAOVC,WAAY,QAQZC,UAAW,SAQXC,aAAc,SAQdC,cAAe,KAQfC,aAAc,SASdC,eAAgB,KAQhBC,aAAc,SAQdC,cAAe,OASfC,OAAQ,MAEV53B,OAAOwH,OAAOxK,KAAMo5B,EAAcxtB,EACpC,EAyDA,SAASivB,EAAc12B,EAAKyH,GAC1BzH,EAAI22B,OACJ,IAAI3E,EAAcvqB,EAAMuqB,YACpBC,EAASxqB,EAAMwqB,OACfC,EAAQzqB,EAAMyqB,MACdC,EAAY1qB,EAAM0qB,UAChBH,aAAuBtvB,QAC7B1C,EAAImyB,UAAUxzB,MAAMqB,GAAK,EAAI0kB,EAAoB,YAAYsN,IACzDC,GAAQjyB,EAAIiyB,OAAOA,EAASjwB,KAAK40B,GAAK,KACtC1E,aAAiBxvB,OAAO1C,EAAIkyB,MAAMvzB,MAAMqB,GAAK,EAAI0kB,EAAoB,YAAYwN,IACjFC,GAAWnyB,EAAImyB,UAAUxzB,MAAMqB,GAAK,EAAI0kB,EAAoB,YAAYyN,IAC5EnyB,EAAImyB,WAAWH,EAAY,IAAKA,EAAY,IAC9C,CA5DAj1B,EAAQ,WAAai4B,EAErBA,EAAM5xB,UAAUowB,eAAiB,SAAU/rB,GACzC,IAAIovB,EAAUj4B,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GACzEk4B,EAAYD,EAAUtL,EAAOwL,qBAAuBxL,EAAOyL,aAC3DC,EAAqB,CAAC,OAAQ,SAAU,eACxCC,EAAUr4B,OAAO+E,KAAK6D,GACtB0vB,EAAYD,EAAQrL,QAAO,SAAUnsB,GACvC,OAAOu3B,EAAmB7J,MAAK,SAAU1mB,GACvC,OAAOA,IAAMhH,CACf,GACF,IACAy3B,EAAU1wB,SAAQ,SAAU/G,GAC1B,OAAO+H,EAAM/H,GAAOo3B,EAAUrvB,EAAM/H,GACtC,IACA,IAAI02B,EAAgB3uB,EAAM2uB,cACtBK,EAAShvB,EAAMgvB,OAKnB,GAJIL,IAAe3uB,EAAM2uB,cAAgBA,EAAc7Q,KAAI,SAAU7mB,GACnE,OAAOo4B,EAAUp4B,EACnB,KAEI+3B,EAAQ,CACV,IAAIW,EAAav4B,OAAO+E,KAAK6yB,GAC7BW,EAAW3wB,SAAQ,SAAU/G,GAC3B,OAAO+2B,EAAO/2B,GAAOo3B,EAAUL,EAAO/2B,GACxC,GACF,CACF,EAQAs1B,EAAM5xB,UAAUuuB,UAAY,SAAU3xB,GACpC02B,EAAc12B,EAAKnE,MACnBw7B,EAAer3B,EAAKnE,MACpBy7B,EAAat3B,EAAKnE,KACpB,EAuBA,IAAI07B,EAAmB,CAAC,UAAW,WAAY,iBAAkB,gBAAiB,gBAAiB,YAAa,YAAa,gBAQ7H,SAASF,EAAer3B,EAAKyH,GAC3B,IAAIme,EAAOne,EAAMme,KACbsP,EAASztB,EAAMytB,OACfO,EAAchuB,EAAMguB,YACpBN,EAAU1tB,EAAM0tB,QACpBoC,EAAiB9wB,SAAQ,SAAU/G,IAC7BA,GAAsB,kBAARA,KAAkBM,EAAIN,GAAO+H,EAAM/H,GACvD,IACAkmB,GAAO,EAAIlB,EAAoB,YAAYkB,GAC3CsP,GAAS,EAAIxQ,EAAoB,YAAYwQ,GAC7CO,GAAc,EAAI/Q,EAAoB,YAAY+Q,GAClD7P,EAAK,IAAMuP,EACXD,EAAO,IAAMC,EACbM,EAAY,IAAMN,EAClBn1B,EAAIw3B,WAAY,EAAIjM,EAAOwL,sBAAsBnR,GACjD5lB,EAAIy3B,aAAc,EAAIlM,EAAOwL,sBAAsB7B,GACnDl1B,EAAIy1B,aAAc,EAAIlK,EAAOwL,sBAAsBtB,GACnD,IAAIH,EAAW7tB,EAAM6tB,SACjBE,EAAa/tB,EAAM+tB,WAEnBF,IACFA,EAAWA,EAAS/P,KAAI,SAAU1B,GAChC,OAAOA,GAAK,EAAIA,EAAI,CACtB,IACA7jB,EAAI03B,YAAYpC,IAGQ,kBAAfE,IAAyBx1B,EAAIw1B,WAAaA,EAAa,EAAIA,EAAa,MACnF,IAAIK,EAAYpuB,EAAMouB,UAClBC,EAAcruB,EAAMquB,YACpBC,EAAatuB,EAAMsuB,WACnBC,EAAWvuB,EAAMuuB,SACjBC,EAAaxuB,EAAMwuB,WACvBj2B,EAAI23B,KAAO9B,EAAY,IAAMC,EAAc,IAAMC,EAAa,IAAMC,EAAzDH,MAAiFI,CAC9F,CASA,SAASqB,EAAat3B,EAAKyH,GACzB,GAAKmwB,EAAkBnwB,GAAvB,CACA,IAAI2uB,EAAgB3uB,EAAM2uB,cACtBE,EAAiB7uB,EAAM6uB,eACvBD,EAAe5uB,EAAM4uB,aACrBE,EAAe9uB,EAAM8uB,aACrBC,EAAgB/uB,EAAM+uB,cACtBrB,EAAU1tB,EAAM0tB,QACpBiB,EAAgBA,EAAc7Q,KAAI,SAAUkH,GAC1C,IAAIoL,EAAepL,EAAM,GAAK0I,EAC1B2C,GAAc,EAAIpT,EAAoB,YAAY+H,GAEtD,OADAqL,EAAY,GAAKD,EACVC,CACT,IACA1B,EAAgBA,EAAc7Q,KAAI,SAAU7mB,GAC1C,OAAO,EAAI6sB,EAAOwL,sBAAsBr4B,EAC1C,IACsB,SAAlB83B,IAA0BA,EAAgBuB,EAAkB3B,IAChE,IAAI4B,EAAWh4B,EAAI,SAASlD,OAAOu5B,EAAar4B,MAAM,EAAG,GAAGi6B,cAAgB5B,EAAar4B,MAAM,GAAI,aAAaW,MAAMqB,GAAK,EAAI0kB,EAAoB,YAAY4R,IAC/JE,EAAc/vB,SAAQ,SAAUktB,EAAM9zB,GACpC,OAAOm4B,EAASE,aAAavE,EAAMyC,EAAcv2B,GACnD,IACAG,EAAI,GAAGlD,OAAOy5B,EAAc,UAAYyB,CArBH,CAsBvC,CAQA,SAASJ,EAAkBnwB,GACzB,IAAI2uB,EAAgB3uB,EAAM2uB,cACtBE,EAAiB7uB,EAAM6uB,eACvBD,EAAe5uB,EAAM4uB,aACrBE,EAAe9uB,EAAM8uB,aACrBC,EAAgB/uB,EAAM+uB,cAC1B,IAAKJ,IAAkBE,EAAgB,OAAO,EAE9C,GAA6B,IAAzBF,EAAcv4B,OAEhB,OADAqrB,QAAQoG,KAAK,sDACN,EAGT,GAAqB,WAAjB+G,GAA8C,WAAjBA,EAE/B,OADAnN,QAAQoG,KAAK,iEAAmE+G,IACzE,EAGT,IAAI8B,EAAuB7B,EAAez4B,OAE1C,MAAqB,WAAjBw4B,GAAsD,IAAzB8B,GAA+C,WAAjB9B,GAAsD,IAAzB8B,GAC1FjP,QAAQoG,KAAK,6CAAgE,WAAjB+G,EAA4B,IAAM,OACvF,GAGY,SAAjBE,GAA4C,WAAjBA,GAC7BrN,QAAQoG,KAAK,+DAAiEiH,IACvE,GAGa,SAAlBC,GAA8BA,aAAyB9zB,QACzDwmB,QAAQoG,KAAK,qFAAuFkH,IAC7F,EAIX,CAQA,SAASuB,EAAkBtL,GACzB,IAAI2L,EAAU,GAAK3L,EAAM5uB,OAAS,GAClC,OAAO4uB,EAAMlH,KAAI,SAAUoC,EAAK9nB,GAC9B,OAAOu4B,EAAUv4B,CACnB,GACF,CAQAm1B,EAAM5xB,UAAU2uB,iBAAmB,SAAU/xB,GAC3CA,EAAIq4B,SACN,EAQArD,EAAM5xB,UAAUyvB,OAAS,SAAUD,GACjC/2B,KAAK23B,eAAeZ,GACpB/zB,OAAOwH,OAAOxK,KAAM+2B,EACtB,EAOAoC,EAAM5xB,UAAUgtB,SAAW,WACzB,IAAIkI,GAAc,EAAI7M,EAAM6E,WAAWz0B,MAAM,GAE7C,OADAA,KAAK23B,eAAe8E,GAAa,GAC1BA,CACT,C,qCC3eA,IAAIhU,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQw7B,eAAiBA,EACzBx7B,EAAQ,WAAaA,EAAQy7B,KAAOz7B,EAAQioB,YAAcjoB,EAAQ07B,WAAa17B,EAAQysB,SAAWzsB,EAAQ27B,WAAa37B,EAAQ47B,OAAS57B,EAAQ67B,IAAM77B,EAAQ87B,KAAO97B,EAAQ+7B,KAAO/7B,EAAQg8B,QAAUh8B,EAAQi8B,YAAS,EAEvN,IAAItU,EAAsBJ,EAAuBD,EAAQ,QAErDI,EAAkBH,EAAuBD,EAAQ,QAEjD4U,EAAgB3U,EAAuBD,EAAQ,QAE/CoH,EAAQpH,EAAQ,OAEhB6U,EAAU7U,EAAQ,OAElBkF,EAAwB0P,EAAc,WAAW1P,sBACjDhF,EAAwB0U,EAAc,WAAW1U,sBACjDyU,EAAS,CACX3H,MAAO,CACL8H,GAAI,EACJC,GAAI,EACJxQ,EAAG,GAELwG,UAAW,SAAmB3I,GAC5B,IAAI4K,EAAQ5K,EAAK4K,MACb8H,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACXxQ,EAAIyI,EAAMzI,EAEd,MAAkB,kBAAPuQ,GAAiC,kBAAPC,GAAgC,kBAANxQ,IAC7DM,QAAQxW,MAAM,4CACP,EAIX,EACAmf,KAAM,SAAcnL,EAAOC,GACzB,IAAI3mB,EAAM0mB,EAAM1mB,IACZqxB,EAAQ1K,EAAM0K,MAClBrxB,EAAIq5B,YACJ,IAAIF,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACXxQ,EAAIyI,EAAMzI,EACd5oB,EAAI44B,IAAIO,EAAIC,EAAIxQ,EAAI,EAAIA,EAAI,IAAM,EAAa,EAAV5mB,KAAK40B,IAC1C52B,EAAI4lB,OACJ5lB,EAAIk1B,SACJl1B,EAAIs5B,WACN,EACApL,WAAY,SAAoBP,EAAU7G,GACxC,IAAIuK,EAAQvK,EAAMuK,MACd8H,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACXxQ,EAAIyI,EAAMzI,EACd,OAAO,EAAI6C,EAAM8N,sBAAsB5L,EAAUwL,EAAIC,EAAIxQ,EAC3D,EACA6I,eAAgB,SAAwB3vB,EAAG03B,GACzC,IAAInI,EAAQmI,EAAMnI,MACd5pB,EAAQ+xB,EAAM/xB,MACd0xB,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACf3xB,EAAMuqB,YAAc,CAACmH,EAAIC,EAC3B,EACAtL,KAAM,SAAc2L,EAAOC,GACzB,IAAIC,EAAYF,EAAME,UAClBC,EAAYH,EAAMG,UAClBvI,EAAQqI,EAAMrI,MAClBx1B,KAAK62B,KAAK,QAAS,CACjByG,GAAI9H,EAAM8H,GAAKQ,EACfP,GAAI/H,EAAM+H,GAAKQ,GAEnB,GAEF78B,EAAQi8B,OAASA,EACjB,IAAID,EAAU,CACZ1H,MAAO,CACL8H,GAAI,EACJC,GAAI,EACJS,GAAI,EACJC,GAAI,GAEN1K,UAAW,SAAmB2K,GAC5B,IAAI1I,EAAQ0I,EAAM1I,MACd8H,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACXS,EAAKxI,EAAMwI,GACXC,EAAKzI,EAAMyI,GAEf,MAAkB,kBAAPX,GAAiC,kBAAPC,GAAiC,kBAAPS,GAAiC,kBAAPC,IACvF5Q,QAAQxW,MAAM,6CACP,EAIX,EACAmf,KAAM,SAAcmI,EAAOC,GACzB,IAAIj6B,EAAMg6B,EAAMh6B,IACZqxB,EAAQ4I,EAAO5I,MACnBrxB,EAAIq5B,YACJ,IAAIF,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACXS,EAAKxI,EAAMwI,GACXC,EAAKzI,EAAMyI,GACf95B,EAAI+4B,QAAQI,EAAIC,EAAIS,EAAK,EAAIA,EAAK,IAAMC,EAAK,EAAIA,EAAK,IAAM,EAAG,EAAa,EAAV93B,KAAK40B,IACvE52B,EAAI4lB,OACJ5lB,EAAIk1B,SACJl1B,EAAIs5B,WACN,EACApL,WAAY,SAAoBP,EAAUuM,GACxC,IAAI7I,EAAQ6I,EAAO7I,MACf8H,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACXS,EAAKxI,EAAMwI,GACXC,EAAKzI,EAAMyI,GACXt7B,EAAIwD,KAAKwI,IAAIqvB,EAAIC,GACjBr7B,EAAIuD,KAAKyI,IAAIovB,EAAIC,GACjBp7B,EAAIsD,KAAK2iB,KAAKnmB,EAAIA,EAAIC,EAAIA,GAC1B07B,EAAiB,CAAChB,EAAKz6B,EAAG06B,GAC1BgB,EAAkB,CAACjB,EAAKz6B,EAAG06B,GAC3BvQ,GAAW,EAAI4C,EAAMjF,qBAAqBmH,EAAUwM,IAAkB,EAAI1O,EAAMjF,qBAAqBmH,EAAUyM,GACnH,OAAOvR,GAAY,EAAIrqB,CACzB,EACAizB,eAAgB,SAAwB3vB,EAAGu4B,GACzC,IAAIhJ,EAAQgJ,EAAOhJ,MACf5pB,EAAQ4yB,EAAO5yB,MACf0xB,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACf3xB,EAAMuqB,YAAc,CAACmH,EAAIC,EAC3B,EACAtL,KAAM,SAAcwM,EAAQC,GAC1B,IAAIZ,EAAYW,EAAOX,UACnBC,EAAYU,EAAOV,UACnBvI,EAAQkJ,EAAOlJ,MACnBx1B,KAAK62B,KAAK,QAAS,CACjByG,GAAI9H,EAAM8H,GAAKQ,EACfP,GAAI/H,EAAM+H,GAAKQ,GAEnB,GAEF78B,EAAQg8B,QAAUA,EAClB,IAAID,EAAO,CACTzH,MAAO,CACL1V,EAAG,EACH6e,EAAG,EACH90B,EAAG,EACH/I,EAAG,GAELyyB,UAAW,SAAmBqL,GAC5B,IAAIpJ,EAAQoJ,EAAOpJ,MACf1V,EAAI0V,EAAM1V,EACV6e,EAAInJ,EAAMmJ,EACV90B,EAAI2rB,EAAM3rB,EACV/I,EAAI00B,EAAM10B,EAEd,MAAiB,kBAANgf,GAA+B,kBAAN6e,GAA+B,kBAAN90B,GAA+B,kBAAN/I,IACpFusB,QAAQxW,MAAM,0CACP,EAIX,EACAmf,KAAM,SAAc6I,EAAQC,GAC1B,IAAI36B,EAAM06B,EAAO16B,IACbqxB,EAAQsJ,EAAOtJ,MACnBrxB,EAAIq5B,YACJ,IAAI1d,EAAI0V,EAAM1V,EACV6e,EAAInJ,EAAMmJ,EACV90B,EAAI2rB,EAAM3rB,EACV/I,EAAI00B,EAAM10B,EACdqD,EAAI84B,KAAKnd,EAAG6e,EAAG90B,EAAG/I,GAClBqD,EAAI4lB,OACJ5lB,EAAIk1B,SACJl1B,EAAIs5B,WACN,EACApL,WAAY,SAAoBP,EAAUiN,GACxC,IAAIvJ,EAAQuJ,EAAOvJ,MACf1V,EAAI0V,EAAM1V,EACV6e,EAAInJ,EAAMmJ,EACV90B,EAAI2rB,EAAM3rB,EACV/I,EAAI00B,EAAM10B,EACd,OAAO,EAAI8uB,EAAM8G,oBAAoB5E,EAAUhS,EAAG6e,EAAG90B,EAAG/I,EAC1D,EACA80B,eAAgB,SAAwB3vB,EAAG+4B,GACzC,IAAIxJ,EAAQwJ,EAAOxJ,MACf5pB,EAAQozB,EAAOpzB,MACfkU,EAAI0V,EAAM1V,EACV6e,EAAInJ,EAAMmJ,EACV90B,EAAI2rB,EAAM3rB,EACV/I,EAAI00B,EAAM10B,EACd8K,EAAMuqB,YAAc,CAACrW,EAAIjW,EAAI,EAAG80B,EAAI79B,EAAI,EAC1C,EACAmxB,KAAM,SAAcgN,EAAQC,GAC1B,IAAIpB,EAAYmB,EAAOnB,UACnBC,EAAYkB,EAAOlB,UACnBvI,EAAQ0J,EAAO1J,MACnBx1B,KAAK62B,KAAK,QAAS,CACjB/W,EAAG0V,EAAM1V,EAAIge,EACba,EAAGnJ,EAAMmJ,EAAIZ,GAEjB,GAEF78B,EAAQ+7B,KAAOA,EACf,IAAID,EAAO,CACTxH,MAAO,CACL8H,GAAI,EACJC,GAAI,EACJxQ,EAAG,GAELwG,UAAW,SAAmB4L,GAC5B,IAAI3J,EAAQ2J,EAAO3J,MACf8H,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACXxQ,EAAIyI,EAAMzI,EAEd,MAAkB,kBAAPuQ,GAAiC,kBAAPC,GAAgC,kBAANxQ,IAC7DM,QAAQxW,MAAM,0CACP,EAIX,EACAmf,KAAM,SAAcoJ,EAAQC,GAC1B,IAAIl7B,EAAMi7B,EAAOj7B,IACbqxB,EAAQ6J,EAAO7J,MACnBrxB,EAAIq5B,YACJ,IAAIF,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACXxQ,EAAIyI,EAAMzI,EACd5oB,EAAI44B,IAAIO,EAAIC,EAAIxQ,EAAI,EAAIA,EAAI,IAAM,EAAa,EAAV5mB,KAAK40B,IAC1C52B,EAAIk1B,SACJl1B,EAAIs5B,WACN,EACApL,WAAY,SAAoBP,EAAUwN,GACxC,IAAI9J,EAAQ8J,EAAO9J,MACf5pB,EAAQ0zB,EAAO1zB,MACf0xB,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACXxQ,EAAIyI,EAAMzI,EACVgN,EAAYnuB,EAAMmuB,UAClBwF,EAAgBxF,EAAY,EAC5ByF,EAAczS,EAAIwS,EAClBE,EAAc1S,EAAIwS,EAClBvS,GAAW,EAAI4C,EAAMjF,qBAAqBmH,EAAU,CAACwL,EAAIC,IAC7D,OAAOvQ,GAAYwS,GAAexS,GAAYyS,CAChD,EACA7J,eAAgB,SAAwB3vB,EAAGy5B,GACzC,IAAIlK,EAAQkK,EAAOlK,MACf5pB,EAAQ8zB,EAAO9zB,MACf0xB,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACf3xB,EAAMuqB,YAAc,CAACmH,EAAIC,EAC3B,EACAtL,KAAM,SAAc0N,EAAQC,GAC1B,IAAI9B,EAAY6B,EAAO7B,UACnBC,EAAY4B,EAAO5B,UACnBvI,EAAQoK,EAAOpK,MACnBx1B,KAAK62B,KAAK,QAAS,CACjByG,GAAI9H,EAAM8H,GAAKQ,EACfP,GAAI/H,EAAM+H,GAAKQ,GAEnB,GAEF78B,EAAQ87B,KAAOA,EACf,IAAID,EAAM,CACRvH,MAAO,CACL8H,GAAI,EACJC,GAAI,EACJxQ,EAAG,EACH8S,WAAY,EACZC,SAAU,EACVC,WAAW,GAEbxM,UAAW,SAAmByM,GAC5B,IAAIxK,EAAQwK,EAAOxK,MACfztB,EAAO,CAAC,KAAM,KAAM,IAAK,aAAc,YAE3C,OAAIA,EAAKwpB,MAAK,SAAU1tB,GACtB,MAA6B,kBAAf2xB,EAAM3xB,EACtB,MACEwpB,QAAQxW,MAAM,yCACP,EAIX,EACAmf,KAAM,SAAciK,EAAQC,GAC1B,IAAI/7B,EAAM87B,EAAO97B,IACbqxB,EAAQ0K,EAAO1K,MACnBrxB,EAAIq5B,YACJ,IAAIF,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACXxQ,EAAIyI,EAAMzI,EACV8S,EAAarK,EAAMqK,WACnBC,EAAWtK,EAAMsK,SACjBC,EAAYvK,EAAMuK,UACtB57B,EAAI44B,IAAIO,EAAIC,EAAIxQ,EAAI,EAAIA,EAAI,KAAO8S,EAAYC,GAAWC,GAC1D57B,EAAIk1B,SACJl1B,EAAIs5B,WACN,EACApL,WAAY,SAAoBP,EAAUqO,GACxC,IAAI3K,EAAQ2K,EAAO3K,MACf5pB,EAAQu0B,EAAOv0B,MACf0xB,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACXxQ,EAAIyI,EAAMzI,EACV8S,EAAarK,EAAMqK,WACnBC,EAAWtK,EAAMsK,SACjBC,EAAYvK,EAAMuK,UAClBhG,EAAYnuB,EAAMmuB,UAClBwF,EAAgBxF,EAAY,EAC5BqG,EAAerT,EAAIwS,EACnBc,EAAgBtT,EAAIwS,EACxB,QAAQ,EAAI3P,EAAM0Q,sBAAsBxO,EAAUwL,EAAIC,EAAI6C,EAAcP,EAAYC,EAAUC,KAAc,EAAInQ,EAAM0Q,sBAAsBxO,EAAUwL,EAAIC,EAAI8C,EAAeR,EAAYC,EAAUC,EACrM,EACAnK,eAAgB,SAAwB3vB,EAAGs6B,GACzC,IAAI/K,EAAQ+K,EAAO/K,MACf5pB,EAAQ20B,EAAO30B,MACf0xB,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACf3xB,EAAMuqB,YAAc,CAACmH,EAAIC,EAC3B,EACAtL,KAAM,SAAcuO,EAAQC,GAC1B,IAAI3C,EAAY0C,EAAO1C,UACnBC,EAAYyC,EAAOzC,UACnBvI,EAAQiL,EAAOjL,MACnBx1B,KAAK62B,KAAK,QAAS,CACjByG,GAAI9H,EAAM8H,GAAKQ,EACfP,GAAI/H,EAAM+H,GAAKQ,GAEnB,GAEF78B,EAAQ67B,IAAMA,EACd,IAAID,EAAS,CACXtH,MAAO,CACL8H,GAAI,EACJC,GAAI,EACJxQ,EAAG,EACH8S,WAAY,EACZC,SAAU,EACVC,WAAW,GAEbxM,UAAW,SAAmBmN,GAC5B,IAAIlL,EAAQkL,EAAOlL,MACfztB,EAAO,CAAC,KAAM,KAAM,IAAK,aAAc,YAE3C,OAAIA,EAAKwpB,MAAK,SAAU1tB,GACtB,MAA6B,kBAAf2xB,EAAM3xB,EACtB,MACEwpB,QAAQxW,MAAM,4CACP,EAIX,EACAmf,KAAM,SAAc2K,EAAQC,GAC1B,IAAIz8B,EAAMw8B,EAAOx8B,IACbqxB,EAAQoL,EAAOpL,MACnBrxB,EAAIq5B,YACJ,IAAIF,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACXxQ,EAAIyI,EAAMzI,EACV8S,EAAarK,EAAMqK,WACnBC,EAAWtK,EAAMsK,SACjBC,EAAYvK,EAAMuK,UACtB57B,EAAI44B,IAAIO,EAAIC,EAAIxQ,EAAI,EAAIA,EAAI,IAAM8S,EAAYC,GAAWC,GACzD57B,EAAI08B,OAAOvD,EAAIC,GACfp5B,EAAIs5B,YACJt5B,EAAIk1B,SACJl1B,EAAI4lB,MACN,EACAsI,WAAY,SAAoBP,EAAUgP,GACxC,IAAItL,EAAQsL,EAAOtL,MACf8H,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACXxQ,EAAIyI,EAAMzI,EACV8S,EAAarK,EAAMqK,WACnBC,EAAWtK,EAAMsK,SACjBC,EAAYvK,EAAMuK,UACtB,OAAO,EAAInQ,EAAM0Q,sBAAsBxO,EAAUwL,EAAIC,EAAIxQ,EAAG8S,EAAYC,EAAUC,EACpF,EACAnK,eAAgB,SAAwB3vB,EAAG86B,GACzC,IAAIvL,EAAQuL,EAAOvL,MACf5pB,EAAQm1B,EAAOn1B,MACf0xB,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACf3xB,EAAMuqB,YAAc,CAACmH,EAAIC,EAC3B,EACAtL,KAAM,SAAc+O,EAAQC,GAC1B,IAAInD,EAAYkD,EAAOlD,UACnBC,EAAYiD,EAAOjD,UACnBvI,EAAQyL,EAAOzL,MACf8H,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACfv9B,KAAK62B,KAAK,QAAS,CACjByG,GAAIA,EAAKQ,EACTP,GAAIA,EAAKQ,GAEb,GAEF78B,EAAQ47B,OAASA,EACjB,IAAID,EAAa,CACfrH,MAAO,CACL8H,GAAI,EACJC,GAAI,EACJxQ,EAAG,EACHmU,KAAM,GAER3N,UAAW,SAAmB4N,GAC5B,IAAI3L,EAAQ2L,EAAO3L,MACf0L,EAAO1L,EAAM0L,KACbn5B,EAAO,CAAC,KAAM,KAAM,IAAK,QAE7B,OAAIA,EAAKwpB,MAAK,SAAU1tB,GACtB,MAA6B,kBAAf2xB,EAAM3xB,EACtB,KACEwpB,QAAQxW,MAAM,gDACP,KAGLqqB,EAAO,KACT7T,QAAQxW,MAAM,gCACP,EAIX,EACAmf,KAAM,SAAcoL,EAAQC,GAC1B,IAAIl9B,EAAMi9B,EAAOj9B,IACbqxB,EAAQ6L,EAAO7L,MACfD,EAAQ8L,EAAO9L,MACnBpxB,EAAIq5B,YACJ,IAAIF,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACXxQ,EAAIyI,EAAMzI,EACVmU,EAAO1L,EAAM0L,KAEjB,IAAK3L,EAAM7J,QAAU6J,EAAM+H,KAAOA,GAAM/H,EAAMgI,KAAOA,GAAMhI,EAAMxI,IAAMA,GAAKwI,EAAM2L,OAASA,EAAM,CAC/F,IAAII,GAAU,EAAI1R,EAAM2R,yBAAyBjE,EAAIC,EAAIxQ,EAAGmU,GAE5Dl+B,OAAOwH,OAAO+qB,EAAO,CACnB7J,OAAQ4V,EACRhE,GAAIA,EACJC,GAAIA,EACJxQ,EAAGA,EACHmU,KAAMA,GAEV,CAEA,IAAIxV,EAAS6J,EAAM7J,QACnB,EAAI2R,EAAQmE,kBAAkBr9B,EAAKunB,GACnCvnB,EAAIs5B,YACJt5B,EAAIk1B,SACJl1B,EAAI4lB,MACN,EACAsI,WAAY,SAAoBP,EAAU2P,GACxC,IAAIlM,EAAQkM,EAAOlM,MACf7J,EAAS6J,EAAM7J,OACnB,OAAO,EAAIkE,EAAM8R,uBAAuB5P,EAAUpG,EACpD,EACAkK,eAAgB,SAAwB3vB,EAAG07B,GACzC,IAAInM,EAAQmM,EAAOnM,MACf5pB,EAAQ+1B,EAAO/1B,MACf0xB,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACf3xB,EAAMuqB,YAAc,CAACmH,EAAIC,EAC3B,EACAtL,KAAM,SAAc2P,EAAQC,GAC1B,IAAI/D,EAAY8D,EAAO9D,UACnBC,EAAY6D,EAAO7D,UACnBvI,EAAQqM,EAAOrM,MACfD,EAAQsM,EAAOtM,MACf+H,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACfhI,EAAM+H,IAAMQ,EACZvI,EAAMgI,IAAMQ,EACZ/9B,KAAK62B,KAAK,QAAS,CACjByG,GAAIA,EAAKQ,EACTP,GAAIA,EAAKQ,IAEXxI,EAAM7J,OAAS6J,EAAM7J,OAAOhC,KAAI,SAAUoY,GACxC,IAAIC,GAAS,EAAInZ,EAAgB,YAAYkZ,EAAQ,GACjDhiB,EAAIiiB,EAAO,GACXpD,EAAIoD,EAAO,GAEf,MAAO,CAACjiB,EAAIge,EAAWa,EAAIZ,EAC7B,GACF,GAEF78B,EAAQ27B,WAAaA,EACrB,IAAIlP,EAAW,CACb6H,MAAO,CACL9J,OAAQ,GACRxf,OAAO,GAETqnB,UAAW,SAAmByO,GAC5B,IAAIxM,EAAQwM,EAAOxM,MACf9J,EAAS8J,EAAM9J,OAEnB,OAAMA,aAAkB7kB,QACtBwmB,QAAQxW,MAAM,wCACP,EAIX,EACAmf,KAAM,SAAciM,EAAQC,GAC1B,IAAI/9B,EAAM89B,EAAO99B,IACbqxB,EAAQ0M,EAAO1M,MACfuE,EAAYmI,EAAOt2B,MAAMmuB,UAC7B51B,EAAIq5B,YACJ,IAAI9R,EAAS8J,EAAM9J,OACfxf,EAAQspB,EAAMtpB,MACA,IAAd6tB,IAAiBrO,GAAS,EAAIkE,EAAMuS,eAAezW,KACvD,EAAI2R,EAAQmE,kBAAkBr9B,EAAKunB,GAE/Bxf,GACF/H,EAAIs5B,YACJt5B,EAAI4lB,OACJ5lB,EAAIk1B,UAEJl1B,EAAIk1B,QAER,EACAhH,WAAY,SAAoBP,EAAUsQ,GACxC,IAAI5M,EAAQ4M,EAAO5M,MACf5pB,EAAQw2B,EAAOx2B,MACf8f,EAAS8J,EAAM9J,OACfxf,EAAQspB,EAAMtpB,MACd6tB,EAAYnuB,EAAMmuB,UAEtB,OAAI7tB,GACK,EAAI0jB,EAAM8R,uBAAuB5P,EAAUpG,IAE3C,EAAIkE,EAAMyS,0BAA0BvQ,EAAUpG,EAAQqO,EAEjE,EACAnE,eAAgB,SAAwB3vB,EAAGq8B,GACzC,IAAI9M,EAAQ8M,EAAO9M,MACf5pB,EAAQ02B,EAAO12B,MACf8f,EAAS8J,EAAM9J,OACnB9f,EAAMuqB,YAAczK,EAAO,EAC7B,EACAuG,KAAM,SAAcsQ,EAAQC,GAC1B,IAAI1E,EAAYyE,EAAOzE,UACnBC,EAAYwE,EAAOxE,UACnBvI,EAAQgN,EAAOhN,MACf9J,EAAS8J,EAAM9J,OACf+W,EAAkB/W,EAAOhC,KAAI,SAAUgZ,GACzC,IAAIC,GAAS,EAAI/Z,EAAgB,YAAY8Z,EAAQ,GACjD5iB,EAAI6iB,EAAO,GACXhE,EAAIgE,EAAO,GAEf,MAAO,CAAC7iB,EAAIge,EAAWa,EAAIZ,EAC7B,IACA/9B,KAAK62B,KAAK,QAAS,CACjBnL,OAAQ+W,GAEZ,GAEFvhC,EAAQysB,SAAWA,EACnB,IAAIiP,EAAa,CACfpH,MAAO,CACL9J,OAAQ,GACRxf,OAAO,GAETqnB,UAAW,SAAmBqP,GAC5B,IAAIpN,EAAQoN,EAAOpN,MACf9J,EAAS8J,EAAM9J,OAEnB,OAAMA,aAAkB7kB,QACtBwmB,QAAQxW,MAAM,0CACP,EAIX,EACAmf,KAAM,SAAc6M,EAAQC,GAC1B,IAAI3+B,EAAM0+B,EAAO1+B,IACbqxB,EAAQsN,EAAOtN,MACfD,EAAQuN,EAAOvN,MACf7J,EAAS8J,EAAM9J,OACfxf,EAAQspB,EAAMtpB,MAElB,IAAKqpB,EAAM7J,QAAU6J,EAAM7J,OAAOxpB,aAAewpB,EAAOxpB,WAAY,CAClE,IAAIytB,EAAejC,EAAsBhC,EAAQxf,GAE7C62B,EAAcra,EAAsBiH,GACxC3sB,OAAOwH,OAAO+qB,EAAO,CACnB7J,QAAQ,EAAIkE,EAAM6E,WAAW/I,GAAQ,GACrCvC,YAAawG,EACboT,YAAaA,GAEjB,CAEA,IAAI5Z,EAAcoM,EAAMpM,YACxBhlB,EAAIq5B,aACJ,EAAIH,EAAQ2F,qBAAqB7+B,EAAKglB,EAAYhnB,MAAM,GAAIgnB,EAAY,IAEpEjd,GACF/H,EAAIs5B,YACJt5B,EAAI4lB,OACJ5lB,EAAIk1B,UAEJl1B,EAAIk1B,QAER,EACAhH,WAAY,SAAoBP,EAAUmR,GACxC,IAAI1N,EAAQ0N,EAAO1N,MACfC,EAAQyN,EAAOzN,MACf5pB,EAAQq3B,EAAOr3B,MACfm3B,EAAcxN,EAAMwN,YACpB72B,EAAQspB,EAAMtpB,MACd6tB,EAAYnuB,EAAMmuB,UAEtB,OAAI7tB,GACK,EAAI0jB,EAAM8R,uBAAuB5P,EAAUiR,IAE3C,EAAInT,EAAMyS,0BAA0BvQ,EAAUiR,EAAahJ,EAEtE,EACAnE,eAAgB,SAAwB3vB,EAAGi9B,GACzC,IAAI1N,EAAQ0N,EAAO1N,MACf5pB,EAAQs3B,EAAOt3B,MACf8f,EAAS8J,EAAM9J,OACnB9f,EAAMuqB,YAAczK,EAAO,EAC7B,EACAuG,KAAM,SAAckR,EAAQC,GAC1B,IAAItF,EAAYqF,EAAOrF,UACnBC,EAAYoF,EAAOpF,UACnBvI,EAAQ4N,EAAO5N,MACfD,EAAQ6N,EAAO7N,MACf7J,EAAS8J,EAAM9J,OACf+W,EAAkB/W,EAAOhC,KAAI,SAAU2Z,GACzC,IAAIC,GAAS,EAAI1a,EAAgB,YAAYya,EAAQ,GACjDvjB,EAAIwjB,EAAO,GACX3E,EAAI2E,EAAO,GAEf,MAAO,CAACxjB,EAAIge,EAAWa,EAAIZ,EAC7B,IACAxI,EAAM7J,OAAS+W,EAEf,IAAIc,GAAsB,EAAI3a,EAAgB,YAAY2M,EAAMpM,YAAY,GAAI,GAC5Eqa,EAAKD,EAAoB,GACzBE,EAAKF,EAAoB,GAEzBG,EAASnO,EAAMpM,YAAYhnB,MAAM,GACrCozB,EAAMpM,YAAc,CAAC,CAACqa,EAAK1F,EAAW2F,EAAK1F,IAAY98B,QAAO,EAAI4nB,EAAoB,YAAY6a,EAAOha,KAAI,SAAUia,GACrH,OAAOA,EAAMja,KAAI,SAAUka,GACzB,IAAIC,GAAS,EAAIjb,EAAgB,YAAYgb,EAAQ,GACjD9jB,EAAI+jB,EAAO,GACXlF,EAAIkF,EAAO,GAEf,MAAO,CAAC/jB,EAAIge,EAAWa,EAAIZ,EAC7B,GACF,MACAxI,EAAMwN,YAAcxN,EAAMwN,YAAYrZ,KAAI,SAAUoa,GAClD,IAAIC,GAAS,EAAInb,EAAgB,YAAYkb,EAAQ,GACjDhkB,EAAIikB,EAAO,GACXpF,EAAIoF,EAAO,GAEf,MAAO,CAACjkB,EAAIge,EAAWa,EAAIZ,EAC7B,IACA/9B,KAAK62B,KAAK,QAAS,CACjBnL,OAAQ+W,GAEZ,GAEFvhC,EAAQ07B,WAAaA,EACrB,IAAIzT,EAAc,CAChBqM,MAAO,CACL9J,OAAQ,GACRxf,OAAO,GAETqnB,UAAW,SAAmByQ,GAC5B,IAAIxO,EAAQwO,EAAOxO,MACf9J,EAAS8J,EAAM9J,OAEnB,OAAMA,aAAkB7kB,QACtBwmB,QAAQxW,MAAM,2CACP,EAIX,EACAmf,KAAM,SAAciO,EAAQC,GAC1B,IAAI//B,EAAM8/B,EAAO9/B,IACbqxB,EAAQ0O,EAAO1O,MACfD,EAAQ2O,EAAO3O,MACf7J,EAAS8J,EAAM9J,OACfxf,EAAQspB,EAAMtpB,MAElB,IAAKqpB,EAAM7J,QAAU6J,EAAM7J,OAAOxpB,aAAewpB,EAAOxpB,WAAY,CAClE,IAAI6gC,EAAcra,EAAsBgD,EAAQ,IAChD1oB,OAAOwH,OAAO+qB,EAAO,CACnB7J,QAAQ,EAAIkE,EAAM6E,WAAW/I,GAAQ,GACrCqX,YAAaA,GAEjB,CAEA5+B,EAAIq5B,aACJ,EAAIH,EAAQ2F,qBAAqB7+B,EAAKunB,EAAOvpB,MAAM,GAAIupB,EAAO,IAE1Dxf,GACF/H,EAAIs5B,YACJt5B,EAAI4lB,OACJ5lB,EAAIk1B,UAEJl1B,EAAIk1B,QAER,EACAhH,WAAY,SAAoBP,EAAUqS,GACxC,IAAI5O,EAAQ4O,EAAO5O,MACfC,EAAQ2O,EAAO3O,MACf5pB,EAAQu4B,EAAOv4B,MACfm3B,EAAcxN,EAAMwN,YACpB72B,EAAQspB,EAAMtpB,MACd6tB,EAAYnuB,EAAMmuB,UAEtB,OAAI7tB,GACK,EAAI0jB,EAAM8R,uBAAuB5P,EAAUiR,IAE3C,EAAInT,EAAMyS,0BAA0BvQ,EAAUiR,EAAahJ,EAEtE,EACAnE,eAAgB,SAAwB3vB,EAAGm+B,GACzC,IAAI5O,EAAQ4O,EAAO5O,MACf5pB,EAAQw4B,EAAOx4B,MACf8f,EAAS8J,EAAM9J,OACnB9f,EAAMuqB,YAAczK,EAAO,EAC7B,EACAuG,KAAM,SAAcoS,EAAQC,GAC1B,IAAIxG,EAAYuG,EAAOvG,UACnBC,EAAYsG,EAAOtG,UACnBvI,EAAQ8O,EAAO9O,MACfD,EAAQ+O,EAAO/O,MACf7J,EAAS8J,EAAM9J,OAEf6Y,GAAW,EAAI3b,EAAgB,YAAY8C,EAAO,GAAI,GACtD8X,EAAKe,EAAS,GACdd,EAAKc,EAAS,GAEdb,EAAShY,EAAOvpB,MAAM,GACtBgnB,EAAc,CAAC,CAACqa,EAAK1F,EAAW2F,EAAK1F,IAAY98B,QAAO,EAAI4nB,EAAoB,YAAY6a,EAAOha,KAAI,SAAUia,GACnH,OAAOA,EAAMja,KAAI,SAAU8a,GACzB,IAAIC,GAAS,EAAI7b,EAAgB,YAAY4b,EAAQ,GACjD1kB,EAAI2kB,EAAO,GACX9F,EAAI8F,EAAO,GAEf,MAAO,CAAC3kB,EAAIge,EAAWa,EAAIZ,EAC7B,GACF,MACAxI,EAAM7J,OAASvC,EACfoM,EAAMwN,YAAcxN,EAAMwN,YAAYrZ,KAAI,SAAUgb,GAClD,IAAIC,GAAS,EAAI/b,EAAgB,YAAY8b,EAAQ,GACjD5kB,EAAI6kB,EAAO,GACXhG,EAAIgG,EAAO,GAEf,MAAO,CAAC7kB,EAAIge,EAAWa,EAAIZ,EAC7B,IACA/9B,KAAK62B,KAAK,QAAS,CACjBnL,OAAQvC,GAEZ,GAEFjoB,EAAQioB,YAAcA,EACtB,IAAIwT,EAAO,CACTnH,MAAO,CACLoP,QAAS,GACT9S,SAAU,GACV+S,cAAUniC,EACVoiC,OAAQ,GAEVvR,UAAW,SAAmBwR,GAC5B,IAAIvP,EAAQuP,EAAOvP,MACfoP,EAAUpP,EAAMoP,QAChB9S,EAAW0D,EAAM1D,SACjBgT,EAAStP,EAAMsP,OAEnB,MAAuB,kBAAZF,GACTvX,QAAQxW,MAAM,qCACP,GAGHib,aAAoBjrB,MAKJ,kBAAXi+B,IACTzX,QAAQxW,MAAM,oCACP,IANPwW,QAAQxW,MAAM,sCACP,EASX,EACAmf,KAAM,SAAcgP,EAAQC,GAC1B,IAAI9gC,EAAM6gC,EAAO7gC,IACbqxB,EAAQyP,EAAOzP,MACfoP,EAAUpP,EAAMoP,QAChB9S,EAAW0D,EAAM1D,SACjB+S,EAAWrP,EAAMqP,SACjBC,EAAStP,EAAMsP,OACfxK,EAAen2B,EAAIm2B,aACnBwB,EAAO33B,EAAI23B,KACX3B,EAAW+K,SAASpJ,EAAKlgB,QAAQ,MAAO,KAExCupB,EAAYrT,EACZsT,GAAa,EAAIxc,EAAgB,YAAYuc,EAAW,GACxDrlB,EAAIslB,EAAW,GACfzG,EAAIyG,EAAW,GAEnBR,EAAUA,EAAQthC,MAAM,MACxB,IAAI+hC,EAAST,EAAQ5iC,OACjBsjC,EAAanL,EAAW2K,EACxBS,EAAYF,EAASC,EAAaR,EAClC3X,EAAS,EAEQ,WAAjBmN,IACFnN,EAASoY,EAAY,EACrB5G,GAAKxE,EAAW,GAGG,WAAjBG,IACFnN,EAASoY,EACT5G,GAAKxE,GAGPrI,EAAW,IAAIjrB,MAAMw+B,GAAQtb,KAAK,GAAGL,KAAI,SAAUoC,EAAK9nB,GACtD,MAAO,CAAC8b,EAAG6e,EAAI36B,EAAIshC,EAAanY,EAClC,IACAhpB,EAAIq5B,YACJoH,EAAQh6B,SAAQ,SAAU+xB,EAAM34B,GAC9BG,EAAIqhC,SAAS1iC,MAAMqB,EAAK,CAACw4B,GAAM17B,QAAO,EAAI4nB,EAAoB,YAAYiJ,EAAS9tB,IAAK,CAAC6gC,KACzF1gC,EAAIshC,WAAW3iC,MAAMqB,EAAK,CAACw4B,GAAM17B,QAAO,EAAI4nB,EAAoB,YAAYiJ,EAAS9tB,IAAK,CAAC6gC,IAC7F,IACA1gC,EAAIs5B,WACN,EACApL,WAAY,SAAoBP,EAAU4T,GAC5BA,EAAOlQ,MACPkQ,EAAO95B,MACnB,OAAO,CACT,EACAgqB,eAAgB,SAAwB3vB,EAAG0/B,GACzC,IAAInQ,EAAQmQ,EAAOnQ,MACf5pB,EAAQ+5B,EAAO/5B,MACfkmB,EAAW0D,EAAM1D,SACrBlmB,EAAMuqB,aAAc,EAAItN,EAAoB,YAAYiJ,EAC1D,EACAG,KAAM,SAAc2T,EAAQC,GAC1B,IAAI/H,EAAY8H,EAAO9H,UACnBC,EAAY6H,EAAO7H,UACnBvI,EAAQqQ,EAAOrQ,MAEfsQ,GAAkB,EAAIld,EAAgB,YAAY4M,EAAM1D,SAAU,GAClEhS,EAAIgmB,EAAgB,GACpBnH,EAAImH,EAAgB,GAExB9lC,KAAK62B,KAAK,QAAS,CACjB/E,SAAU,CAAChS,EAAIge,EAAWa,EAAIZ,IAElC,GAEF78B,EAAQy7B,KAAOA,EACf,IAAIhM,EAAS,IAAIoV,IAAI,CAAC,CAAC,SAAU5I,GAAS,CAAC,UAAWD,GAAU,CAAC,OAAQD,GAAO,CAAC,OAAQD,GAAO,CAAC,MAAOD,GAAM,CAAC,SAAUD,GAAS,CAAC,aAAcD,GAAa,CAAC,WAAYlP,GAAW,CAAC,aAAciP,GAAa,CAAC,cAAezT,GAAc,CAAC,OAAQwT,KACrPlP,EAAWkD,EAUf,SAAS+L,EAAej4B,EAAM4uB,GACvB5uB,GAAS4uB,EAKTA,EAAOmC,MAKPnC,EAAOE,UAKPF,EAAO2C,KAKZrF,EAAOne,IAAI/N,EAAM4uB,GAJfhG,QAAQxW,MAAM,gDALdwW,QAAQxW,MAAM,qDALdwW,QAAQxW,MAAM,kDALdwW,QAAQxW,MAAM,qCAoBlB,CAxBA3V,EAAQ,WAAausB,C,qCC12BrB,IAAIhF,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETkB,OAAOC,eAAe/B,EAAS,UAAW,CACxCoM,YAAY,EACZpK,IAAK,WACH,OAAO8iC,EAAS,UAClB,IAEFhjC,OAAOC,eAAe/B,EAAS,iBAAkB,CAC/CoM,YAAY,EACZpK,IAAK,WACH,OAAO2sB,EAAQ6M,cACjB,IAEFx7B,EAAQ,gBAAa,EAErB,IAAI8kC,EAAWvd,EAAuBD,EAAQ,QAE1CqH,EAAUrH,EAAQ,OAElBiF,EAAWuY,EAAS,WACxB9kC,EAAQ,WAAausB,C,qCCxBrB,IAAIhF,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQsgC,iBAAmBA,EAC3BtgC,EAAQ8hC,oBAAsBA,EAC9B9hC,EAAQ,gBAAa,EAErB,IAAI2nB,EAAsBJ,EAAuBD,EAAQ,QAUzD,SAASgZ,EAAiBr9B,EAAKunB,GAC7B,IAAI8R,EAAYz6B,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GAC3E06B,EAAY16B,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GAC/E,IAAKoB,GAAOunB,EAAO1pB,OAAS,EAAG,OAAO,EAClCw7B,GAAWr5B,EAAIq5B,YACnB9R,EAAO9gB,SAAQ,SAAUoF,EAAOhM,GAC9B,OAAOgM,IAAgB,IAANhM,EAAUG,EAAI8hC,OAAOnjC,MAAMqB,GAAK,EAAI0kB,EAAoB,YAAY7Y,IAAU7L,EAAI08B,OAAO/9B,MAAMqB,GAAK,EAAI0kB,EAAoB,YAAY7Y,IAC3J,IACIytB,GAAWt5B,EAAIs5B,WACrB,CAYA,SAASuF,EAAoB7+B,EAAKunB,GAChC,IAAIua,EAASljC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GACxEy6B,EAAYz6B,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GAC3E06B,EAAY16B,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GAC/E,IAAKoB,IAAQunB,EAAQ,OAAO,EACxB8R,GAAWr5B,EAAIq5B,YACfyI,GAAQ9hC,EAAI8hC,OAAOnjC,MAAMqB,GAAK,EAAI0kB,EAAoB,YAAYod,IACtEva,EAAO9gB,SAAQ,SAAU4a,GACvB,OAAOA,GAAQrhB,EAAI+hC,cAAcpjC,MAAMqB,GAAK,EAAI0kB,EAAoB,YAAYrD,EAAK,IAAIvkB,QAAO,EAAI4nB,EAAoB,YAAYrD,EAAK,KAAK,EAAIqD,EAAoB,YAAYrD,EAAK,KACzL,IACIiY,GAAWt5B,EAAIs5B,WACrB,CAEA,IAAIhQ,EAAW,CACb+T,iBAAkBA,EAClBwB,oBAAqBA,GAEvB9hC,EAAQ,WAAausB,C,qCCzDrB,IAAIhF,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQuzB,UAAYA,EACpBvzB,EAAQihC,cAAgBA,EACxBjhC,EAAQw8B,qBAAuBA,EAC/Bx8B,EAAQypB,oBAAsBA,EAC9BzpB,EAAQwgC,sBAAwBA,EAChCxgC,EAAQo/B,qBAAuBA,EAC/Bp/B,EAAQmhC,yBAA2BA,EACnCnhC,EAAQw1B,mBAAqBA,EAC7Bx1B,EAAQq1B,kBAAoBA,EAC5Br1B,EAAQs1B,iBAAmBA,EAC3Bt1B,EAAQu1B,qBAAuBA,EAC/Bv1B,EAAQilC,+BAAiCA,EACzCjlC,EAAQklC,qBAAuBA,EAC/BllC,EAAQqgC,wBAA0BA,EAClCrgC,EAAQ,gBAAa,EAErB,IAAI2nB,EAAsBJ,EAAuBD,EAAQ,QAErDI,EAAkBH,EAAuBD,EAAQ,QAEjDoM,EAAWnM,EAAuBD,EAAQ,QAE1CQ,EAAM7iB,KAAK6iB,IACXF,EAAO3iB,KAAK2iB,KACZud,EAAMlgC,KAAKkgC,IACXC,EAAMngC,KAAKmgC,IACX33B,EAAMxI,KAAKwI,IACXC,EAAMzI,KAAKyI,IACXmsB,EAAK50B,KAAK40B,GAQd,SAAStG,EAAUhuB,GACjB,IAAI8/B,EAAYxjC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GAC/E,IAAK0D,EAAQ,OAAOA,EACpB,IAAImmB,EAAQjc,KAAKic,MACb/b,EAAYF,KAAKE,UACrB,IAAK01B,EAAW,OAAO3Z,EAAM/b,EAAUpK,IACvC,IAAI+/B,EAAY//B,aAAkBI,MAAQ,GAAK,CAAC,EAEhD,GAAIJ,GAA+C,YAArC,EAAImuB,EAAS,YAAYnuB,GACrC,IAAK,IAAI5C,KAAO4C,EACVA,EAAOH,eAAezC,KACpB4C,EAAO5C,IAAkD,YAA1C,EAAI+wB,EAAS,YAAYnuB,EAAO5C,IACjD2iC,EAAU3iC,GAAO4wB,EAAUhuB,EAAO5C,IAAM,GAExC2iC,EAAU3iC,GAAO4C,EAAO5C,IAMhC,OAAO2iC,CACT,CAQA,SAASrE,EAAczW,GACrB,OAAOA,EAAOhC,KAAI,SAAUkB,GAC1B,IAAIC,GAAQ,EAAIjC,EAAgB,YAAYgC,EAAM,GAC9C9K,EAAI+K,EAAM,GACV8T,EAAI9T,EAAM,GAEd,MAAO,CAACqa,SAASplB,GAAK,GAAKolB,SAASvG,GAAK,GAC3C,GACF,CAWA,SAASjB,EAAqB1tB,EAAOstB,EAAIC,EAAIxQ,GAC3C,OAAOpC,EAAoB3a,EAAO,CAACstB,EAAIC,KAAQxQ,CACjD,CASA,SAASpC,EAAoBG,EAAOG,GAClC,IAAI0S,GAAQ,EAAI/U,EAAgB,YAAYkC,EAAO,GAC/C2b,EAAK9I,EAAM,GACX+I,EAAK/I,EAAM,GAEXC,GAAQ,EAAIhV,EAAgB,YAAYqC,EAAO,GAC/C0b,EAAK/I,EAAM,GACXgJ,EAAKhJ,EAAM,GAEXxO,EAASpG,EAAIyd,EAAKE,GAClBtX,EAASrG,EAAI0d,EAAKE,GACtB,OAAO9d,EAAKsG,EAASA,EAASC,EAASA,EACzC,CASA,SAASqS,EAAsB1xB,EAAO62B,GASpC,IARA,IAAI/jB,EAAU,EAEViM,GAAS,EAAInG,EAAgB,YAAY5Y,EAAO,GAChD8P,EAAIiP,EAAO,GACX4P,EAAI5P,EAAO,GAEXZ,EAAW0Y,EAAQ7kC,OAEdgC,EAAI,EAAG8iC,EAAKD,EAAQ,GAAI7iC,GAAKmqB,EAAUnqB,IAAK,CACnD,IAAI+iC,EAAKF,EAAQ7iC,EAAImqB,GAErB,GAAIrO,EAAIlR,EAAIk4B,EAAG,GAAIC,EAAG,KAAOjnB,GAAKnR,EAAIm4B,EAAG,GAAIC,EAAG,KAC1CpI,GAAKhwB,EAAIm4B,EAAG,GAAIC,EAAG,KACjBD,EAAG,KAAOC,EAAG,GAAI,CACnB,IAAIC,GAAWlnB,EAAIgnB,EAAG,KAAOC,EAAG,GAAKD,EAAG,KAAOC,EAAG,GAAKD,EAAG,IAAMA,EAAG,IAE/DA,EAAG,KAAOC,EAAG,IAAMpI,GAAKqI,IAC1BlkB,GAEJ,CAIJgkB,EAAKC,CACP,CAEA,OAAOjkB,EAAU,IAAM,CACzB,CAcA,SAASwd,EAAqBtwB,EAAOstB,EAAIC,EAAIxQ,EAAG8S,EAAYC,EAAUC,GACpE,IAAK/vB,EAAO,OAAO,EACnB,GAAI2a,EAAoB3a,EAAO,CAACstB,EAAIC,IAAOxQ,EAAG,OAAO,EAErD,IAAKgT,EAAW,CACd,IAAIkH,EAAaxS,EAAU,CAACqL,EAAUD,IAElCqH,GAAc,EAAIte,EAAgB,YAAYqe,EAAY,GAE9DpH,EAAaqH,EAAY,GACzBpH,EAAWoH,EAAY,EACzB,CAEA,IAAIC,EAAYtH,EAAaC,EAE7B,GAAIqH,EAAW,CACb,IAAItJ,EAAQ,CAACiC,EAAUD,GACvBA,EAAahC,EAAM,GACnBiC,EAAWjC,EAAM,EACnB,CAEA,IAAIuJ,EAAQtH,EAAWD,EACvB,GAAIuH,GAAc,EAALrM,EAAQ,OAAO,EAE5B,IAAIsM,GAAU,EAAIze,EAAgB,YAAY5Y,EAAO,GACjD8P,EAAIunB,EAAQ,GACZ1I,EAAI0I,EAAQ,GAEZC,EAAwBlB,EAAqB9I,EAAIC,EAAIxQ,EAAG8S,GACxD0H,GAAyB,EAAI3e,EAAgB,YAAY0e,EAAuB,GAChFpc,EAAKqc,EAAuB,GAC5Bpc,EAAKoc,EAAuB,GAE5BC,EAAyBpB,EAAqB9I,EAAIC,EAAIxQ,EAAG+S,GACzD2H,GAAyB,EAAI7e,EAAgB,YAAY4e,EAAwB,GACjFE,EAAKD,EAAuB,GAC5BE,EAAKF,EAAuB,GAE5BG,EAAS,CAAC9nB,EAAIwd,EAAIqB,EAAIpB,GACtBsK,EAAQ,CAAC3c,EAAKoS,EAAInS,EAAKoS,GACvBuK,EAAQ,CAACJ,EAAKpK,EAAIqK,EAAKpK,GACvBvC,EAAUoM,EAAQrM,EAEtB,GAAIC,EAAS,CACX,IAAI+M,EAActT,EAAU,CAACqT,EAAOD,IAEhCG,GAAc,EAAIpf,EAAgB,YAAYmf,EAAa,GAE/DF,EAAQG,EAAY,GACpBF,EAAQE,EAAY,EACtB,CAEA,IAAIC,EAAWC,EAAYL,EAAOD,KAAYM,EAAYJ,EAAOF,GAGjE,OAFI5M,IAASiN,GAAYA,GACrBd,IAAWc,GAAYA,GACpBA,CACT,CASA,SAASC,EAAYC,EAAMP,GACzB,IAAIQ,GAAQ,EAAIxf,EAAgB,YAAYuf,EAAM,GAC9Cpd,EAAKqd,EAAM,GACXpd,EAAKod,EAAM,GAEXC,GAAU,EAAIzf,EAAgB,YAAYgf,EAAQ,GAClD14B,EAAKm5B,EAAQ,GACbrZ,EAAKqZ,EAAQ,GAEjB,OAAQrd,EAAK9b,EAAK6b,EAAKiE,EAAK,CAC9B,CAUA,SAASqT,EAAyBryB,EAAO2d,EAAUoM,GACjD,IAAIwF,EAAgBxF,EAAY,EAC5BuO,EAAiB3a,EAASjE,KAAI,SAAUwU,GAC1C,IAAIC,GAAQ,EAAIvV,EAAgB,YAAYsV,EAAO,GAC/Cpe,EAAIqe,EAAM,GACVQ,EAAIR,EAAM,GAEd,MAAO,CAACre,EAAG6e,EAAIY,EACjB,IACIgJ,EAAmB5a,EAASjE,KAAI,SAAU0U,GAC5C,IAAIC,GAAS,EAAIzV,EAAgB,YAAYwV,EAAQ,GACjDte,EAAIue,EAAO,GACXM,EAAIN,EAAO,GAEf,MAAO,CAACve,EAAG6e,EAAIY,EACjB,IACIsH,EAAU,GAAG5lC,QAAO,EAAI4nB,EAAoB,YAAYyf,IAAiB,EAAIzf,EAAoB,YAAY0f,EAAiBvN,YAClI,OAAO0G,EAAsB1xB,EAAO62B,EACtC,CAYA,SAASnQ,EAAmB8H,EAAQ1e,EAAG6e,EAAG6J,EAAOC,GAC/C,IAAIhK,GAAS,EAAI7V,EAAgB,YAAY4V,EAAQ,GACjDtvB,EAAKuvB,EAAO,GACZzP,EAAKyP,EAAO,GAEhB,QAAIvvB,EAAK4Q,OACLkP,EAAK2P,OACLzvB,EAAK4Q,EAAI0oB,MACTxZ,EAAK2P,EAAI8J,IAEf,CAWA,SAASlS,IACP,IAAIH,EAASrzB,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,EAC7EiN,EAAQjN,UAAUf,OAAS,EAAIe,UAAU,QAAKL,EAC9CgmC,EAAS3lC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAAG,GACrF,IAAKiN,EAAO,OAAO,EACnB,GAAIomB,EAAS,MAAQ,EAAG,OAAOpmB,EAE/B,IAAI24B,GAAU,EAAI/f,EAAgB,YAAY5Y,EAAO,GACjD8P,EAAI6oB,EAAQ,GACZhK,EAAIgK,EAAQ,GAEZC,GAAU,EAAIhgB,EAAgB,YAAY8f,EAAQ,GAClDG,EAAKD,EAAQ,GACbE,EAAKF,EAAQ,GAGjB,OADAxS,GAAU2E,EAAK,IACR,EAAEjb,EAAI+oB,GAAMvC,EAAIlQ,IAAWuI,EAAImK,GAAMzC,EAAIjQ,GAAUyS,GAAK/oB,EAAI+oB,GAAMxC,EAAIjQ,IAAWuI,EAAImK,GAAMxC,EAAIlQ,GAAU0S,EAClH,CAUA,SAAStS,IACP,IAAIH,EAAQtzB,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAAG,GAChFiN,EAAQjN,UAAUf,OAAS,EAAIe,UAAU,QAAKL,EAC9CgmC,EAAS3lC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAAG,GACrF,IAAKiN,EAAO,OAAO,EACnB,GAAc,IAAVqmB,EAAa,OAAOrmB,EAExB,IAAI+4B,GAAU,EAAIngB,EAAgB,YAAY5Y,EAAO,GACjD8P,EAAIipB,EAAQ,GACZpK,EAAIoK,EAAQ,GAEZC,GAAW,EAAIpgB,EAAgB,YAAY8f,EAAQ,GACnDG,EAAKG,EAAS,GACdF,EAAKE,EAAS,GAEdC,GAAS,EAAIrgB,EAAgB,YAAYyN,EAAO,GAChD6S,EAAKD,EAAO,GACZE,EAAKF,EAAO,GAEZG,EAAetpB,EAAI+oB,EACnBQ,EAAe1K,EAAImK,EACvB,MAAO,CAACM,EAAeF,EAAKL,EAAIQ,EAAeF,EAAKL,EACtD,CASA,SAASrS,EAAqBH,EAAWtmB,GACvC,IAAKsmB,IAActmB,EAAO,OAAO,EAEjC,IAAIs5B,GAAU,EAAI1gB,EAAgB,YAAY5Y,EAAO,GACjD8P,EAAIwpB,EAAQ,GACZ3K,EAAI2K,EAAQ,GAEZC,GAAa,EAAI3gB,EAAgB,YAAY0N,EAAW,GACxDkT,EAAKD,EAAW,GAChBE,EAAKF,EAAW,GAEpB,MAAO,CAACzpB,EAAI0pB,EAAI7K,EAAI8K,EACtB,CAUA,SAAStD,EAA+Bn2B,EAAO05B,EAAWC,GACxD,IAAK35B,IAAU05B,IAAcC,EAAS,OAAO,EAE7C,IAAIC,GAAU,EAAIhhB,EAAgB,YAAY5Y,EAAO,GACjD8P,EAAI8pB,EAAQ,GACZjL,EAAIiL,EAAQ,GAEZC,GAAa,EAAIjhB,EAAgB,YAAY8gB,EAAW,GACxDI,EAAKD,EAAW,GAChBE,EAAKF,EAAW,GAEhBG,GAAW,EAAIphB,EAAgB,YAAY+gB,EAAS,GACpDM,EAAKD,EAAS,GACdE,EAAKF,EAAS,GAEdrnC,EAAIunC,EAAKH,EACTnnC,EAAIknC,EAAKG,EACTpnC,EAAIknC,GAAME,EAAKH,GAAMA,GAAMI,EAAKH,GAChCI,EAAWnhB,EAAIrmB,EAAImd,EAAIld,EAAI+7B,EAAI97B,GAC/BunC,EAActhB,EAAKnmB,EAAIA,EAAIC,EAAIA,GACnC,OAAOunC,EAAWC,CACpB,CAWA,SAAShE,EAAqBtmB,EAAG6e,EAAG0L,EAAQC,GAC1C,MAAO,CAACxqB,EAAIwmB,EAAIgE,GAAUD,EAAQ1L,EAAI0H,EAAIiE,GAAUD,EACtD,CAYA,SAAS9I,EAAwBjE,EAAIC,EAAIxQ,EAAGmU,GAC1C,IAAIkG,EAAQrkC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,IAAW,GAANg4B,EAC5EwP,EAAiB,EAALxP,EAASmG,EACrBsJ,EAAU,IAAI3jC,MAAMq6B,GAAMnX,KAAK,IAAIL,KAAI,SAAUW,EAAGrmB,GACtD,OAAOA,EAAIumC,EAAYnD,CACzB,IACA,OAAOoD,EAAQ9gB,KAAI,SAAU4gB,GAC3B,OAAOlE,EAAqB9I,EAAIC,EAAIxQ,EAAGud,EACzC,GACF,CAEA,IAAI7c,EAAW,CACbgH,UAAWA,EACX0N,cAAeA,EACfzE,qBAAsBA,EACtBgE,sBAAuBA,EACvBpB,qBAAsBA,EACtB+B,yBAA0BA,EAC1B1X,oBAAqBA,EACrB4L,kBAAmBA,EACnBC,iBAAkBA,EAClBC,qBAAsBA,EACtB2P,qBAAsBA,EACtB7E,wBAAyBA,EACzB4E,+BAAgCA,GAElCjlC,EAAQ,WAAausB,C,oCCncrB,IAAIhF,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQ,gBAAa,EAErB,IAAI0zB,EAAWnM,EAAuBD,EAAQ,QAE1CiH,EAAmBhH,EAAuBD,EAAQ,QAEtDA,EAAQ,MAER,IAAIiiB,EAAWhiB,EAAuBD,EAAQ,QAE1CoH,EAAQpH,EAAQ,OAEhBkiB,EAAQliB,EAAQ,OAEhBmiB,EAAS,SAASA,EAAOC,GAG3B,IAFA,EAAInb,EAAiB,YAAYzvB,KAAM2qC,IAElCC,EAEH,OADAvd,QAAQxW,MAAM,+BACP,EAGT,IAAIyZ,EAAcsa,EAAIta,YAClBC,EAAeqa,EAAIra,aACnBH,EAASjtB,SAASE,cAAc,UACpC+sB,EAAOK,aAAa,QAASH,GAC7BF,EAAOK,aAAa,SAAUF,GAC9Bqa,EAAI3mB,YAAYmM,GAChB,IAAIya,EAAY,CACdC,UAAWF,EACXxa,OAAQA,EACRjxB,OAAQ,IAAIsrC,EAAS,WAAWra,GAChC2a,OAAQ,MAEV/nC,OAAOwH,OAAOxK,KAAM6qC,EACtB,EASA3pC,EAAQ,WAAaypC,EAErBA,EAAOpjC,UAAUyjC,UAAY,SAAUD,GACrC,IAAIzS,EAAev1B,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GAElF,IAAKgoC,GAA+C,YAArC,EAAInW,EAAS,YAAYmW,GAEtC,OADA1d,QAAQxW,MAAM,kCACP,EAGLyhB,GAAct4B,KAAKb,OAAOwxB,OAAO/lB,SAAQ,SAAUumB,GACrD,OAAOA,EAAMmH,cACf,IACA,IAAI2S,GAAe,EAAIrb,EAAM6E,WAAWsW,GAAQ,IAChD,EAAIL,EAAMQ,YAAYlrC,KAAMirC,IAC5B,EAAIP,EAAMS,MAAMnrC,KAAMirC,IACtB,EAAIP,EAAMU,MAAMprC,KAAMirC,IACtB,EAAIP,EAAMW,WAAWrrC,KAAMirC,IAC3B,EAAIP,EAAMY,OAAOtrC,KAAMirC,IACvB,EAAIP,EAAMa,KAAKvrC,KAAMirC,IACrB,EAAIP,EAAMc,MAAMxrC,KAAMirC,IACtB,EAAIP,EAAMe,KAAKzrC,KAAMirC,IACrB,EAAIP,EAAMgB,OAAO1rC,KAAMirC,IACvB,EAAIP,EAAMiB,OAAO3rC,KAAMirC,IACvB,EAAIP,EAAMkB,QAAQ5rC,KAAMirC,GACxBjrC,KAAK+qC,OAASA,EACd/qC,KAAKb,OAAO80B,iBACd,EAOA0W,EAAOpjC,UAAUskC,OAAS,WACxB,IAAIf,EAAY9qC,KAAK8qC,UACjB1a,EAASpwB,KAAKowB,OACdjxB,EAASa,KAAKb,OACd4rC,EAAS/qC,KAAK+qC,OACdza,EAAcwa,EAAUxa,YACxBC,EAAeua,EAAUva,aAC7BH,EAAOK,aAAa,QAASH,GAC7BF,EAAOK,aAAa,SAAUF,GAC9BpxB,EAAOqxB,KAAO,CAACF,EAAaC,GAC5BvwB,KAAKgrC,UAAUD,EACjB,C,qCChGaviB,EAAA,OAEb,IAAIC,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQ4qC,SAAWA,EACnB5qC,EAAQ6qC,aAAU,EAElB,IAAIljB,EAAsBJ,EAAuBD,EAAQ,QAErDoM,EAAWnM,EAAuBD,EAAQ,QAE1CiH,EAAmBhH,EAAuBD,EAAQ,QAElDujB,EAAU,SAASA,EAAQ1Y,EAAQ2Y,IACrC,EAAIvc,EAAiB,YAAYzvB,KAAM+rC,GACvC,IAAIE,EAAQ5Y,EAAO4Y,MACfpoC,EAAMwvB,EAAOxvB,IACbqoC,EAAiB7Y,EAAO6Y,eAEE,oBAAnBA,GAKND,EAAMpoC,KAAM7D,KAAK2wB,OAASsb,EAAMpoC,GAAO,IAC5Cb,OAAOwH,OAAOxK,KAAMqzB,GACpBrzB,KAAKg3B,OAAOgV,IANV3e,QAAQoG,KAAK,wCAOjB,EAwBA,SAAS0Y,EAAmBC,EAASJ,GACnC,IAAIrb,EAASyb,EAAQzb,OACjBxxB,EAASitC,EAAQH,MAAM9sC,OACvBktC,EAAgB1b,EAAO3uB,OACvBsqC,EAAeN,EAAOhqC,OAE1B,GAAIqqC,EAAgBC,EAAc,CAChC,IAAIC,EAAgB5b,EAAOsI,OAAOqT,GAClCC,EAAc3hC,SAAQ,SAAU4a,GAC9B,OAAOA,EAAK5a,SAAQ,SAAUgT,GAC5B,OAAOze,EAAOu0B,SAAS9V,EACzB,GACF,GACF,CACF,CAEA,SAAS4uB,EAAajX,EAAOkX,EAAYzoC,EAAGooC,GAC1C,IAAIF,EAAiBE,EAAQF,eACzB/sC,EAASitC,EAAQH,MAAM9sC,OACvButC,EAAeN,EAAQM,aACvBC,EAAUT,EAAeO,EAAYL,GACzCQ,EAAiBrX,EAAOoX,EAASxtC,GACjCo2B,EAAM3qB,SAAQ,SAAUumB,EAAOlmB,GAC7B,IAAIooB,EAASsZ,EAAQ1hC,GACO,oBAAjByhC,GAA6BA,EAAavb,EAAOkC,GAC5DwZ,EAAuB1b,EAAOkC,EAChC,GACF,CAEA,SAASuZ,EAAiBjc,EAAQ2C,EAAan0B,GAC7C,IAAIktC,EAAgB1b,EAAO3uB,OACvBsqC,EAAehZ,EAAYtxB,OAE/B,GAAIsqC,EAAeD,EAAe,CAChC,IAAIS,EAAiBnc,EAAOxuB,OAAO,GAAG,GAClC4qC,EAAkBT,EAAeD,EACjCW,EAAgB,IAAInmC,MAAMkmC,GAAiBhjB,KAAK,GAAGL,KAAI,SAAUoC,GACnE,OAAO3sB,EAAOm1B,MAAMwY,EACtB,IACAnc,EAAO1sB,KAAKnB,MAAM6tB,GAAQ,EAAI9H,EAAoB,YAAYmkB,GAChE,MAAO,GAAIV,EAAeD,EAAe,CACvC,IAAIY,EAAetc,EAAOsI,OAAOqT,GACjCW,EAAariC,SAAQ,SAAUgT,GAC7B,OAAOze,EAAOu0B,SAAS9V,EACzB,GACF,CACF,CAEA,SAASsvB,EAAUvc,EAAQ8b,EAAYzoC,EAAGooC,GACxC,IAAIF,EAAiBE,EAAQF,eACzBiB,EAAsBf,EAAQe,oBAC9BlB,EAAQG,EAAQH,MAChB9sC,EAAS8sC,EAAM9sC,OACfiuC,EAAe,KACgB,oBAAxBD,IAAoCC,EAAeD,EAAoBV,EAAYL,IAC9F,IAAIO,EAAUT,EAAeO,EAAYL,GACzC,GAAKO,EAAQ3qC,OAAb,CAEIorC,GACFzc,EAAO3sB,GAAKopC,EAAa1jB,KAAI,SAAU2J,GACrC,OAAOl0B,EAAOoB,IAAI8yB,EACpB,IACA1C,EAAO3sB,GAAG4G,SAAQ,SAAUumB,EAAOntB,GACjC,IAAIqvB,EAASsZ,EAAQ3oC,GACrB6oC,EAAuB1b,EAAOkC,EAChC,KAEA1C,EAAO3sB,GAAK2oC,EAAQjjB,KAAI,SAAU2J,GAChC,OAAOl0B,EAAOoB,IAAI8yB,EACpB,IAGF,IAAIga,EAAgBjB,EAAQiB,cACC,oBAAlBA,GAA8BA,EAAc1c,EAAO3sB,GAjBnC,CAkB7B,CAEA,SAAS6oC,EAAuB1b,EAAOkC,GACrC,IAAItrB,EAAO/E,OAAO+E,KAAKsrB,GACvBtrB,EAAK6C,SAAQ,SAAU/G,GACT,UAARA,GAA2B,UAARA,EACrBstB,EAAMH,UAAUntB,EAAKwvB,EAAOxvB,IAAM,GAElCstB,EAAMttB,GAAOwvB,EAAOxvB,EAExB,GACF,CAEA,SAASioC,IACP,IAAIlhB,EAAO7nB,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC5EkpC,EAAQrhB,EAAKqhB,MACbD,EAASphB,EAAKohB,OACdnoC,EAAM+mB,EAAK/mB,IACXqoC,EAAiBthB,EAAKshB,eACtBiB,EAAsBviB,EAAKuiB,oBAC3BT,EAAe9hB,EAAK8hB,aACpBY,EAAe1iB,EAAK0iB,aACpBD,EAAgBziB,EAAKyiB,cAErBpB,EAAMpoC,GACRooC,EAAMpoC,GAAKmzB,OAAOgV,GAElBC,EAAMpoC,GAAO,IAAIkoC,EAAQ,CACvBE,MAAOA,EACPpoC,IAAKA,EACLqoC,eAAgBA,EAChBiB,oBAAqBA,EACrBT,aAAcA,EACdY,aAAcA,EACdD,cAAeA,GACdrB,EAEP,CArIA9qC,EAAQ6qC,QAAUA,EAElBA,EAAQxkC,UAAUyvB,OAAS,SAAUgV,GACnC,IAAInY,EAAQ7zB,KAER2wB,EAAS3wB,KAAK2wB,OACd2c,EAAettC,KAAKstC,aAExB,GADAnB,EAAmBnsC,KAAMgsC,GACpBA,EAAOhqC,OAAZ,CACA,IAAIurC,GAAmB,EAAI3Y,EAAS,YAAY0Y,GAChDtB,EAAOphC,SAAQ,SAAU6hC,EAAYzoC,GACV,aAArBupC,GAAiCD,EAAa3c,EAAQ8b,EAAYzoC,EAAG6vB,GACzE,IAAI0B,EAAQ5E,EAAO3sB,GAEfuxB,EACFiX,EAAajX,EAAOkX,EAAYzoC,EAAG6vB,GAEnCqZ,EAAUvc,EAAQ8b,EAAYzoC,EAAG6vB,EAErC,GAX0B,CAY5B,C,mCClDA7wB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQssC,YAActsC,EAAQusC,iBAAc,EAC5C,IAAIA,EAAc,CAMhBhpC,KAAM,GAONipC,MAAM,EAQN5b,SAAU,SAOV6b,QAAS,GAQTC,aAAc,MAOdC,cAAe,CACb9jB,KAAM,OACNoQ,SAAU,IASZvrB,IAAK,MAQLD,IAAK,MAQLm/B,SAAU,KAQVC,YAAa,KAQbC,YAAa,KAQbC,YAAa,KAObC,YAAa,EAMbC,SAAU,CAMRT,MAAM,EAON9hC,MAAO,CACLytB,OAAQ,OACRU,UAAW,IAQfqU,SAAU,CAMRV,MAAM,EAON9hC,MAAO,CACLytB,OAAQ,OACRU,UAAW,IAQfsU,UAAW,CAMTX,MAAM,EASNY,UAAW,KAOX1iC,MAAO,CACLme,KAAM,OACNoQ,SAAU,GACV/D,OAAQ,IAQZmY,UAAW,CAMTb,MAAM,EAON9hC,MAAO,CACLytB,OAAQ,UACRU,UAAW,IAUfyU,QAAS,GAOTrZ,eAAgB,eAOhBD,eAAgB,IAElBh0B,EAAQusC,YAAcA,EACtB,IAAID,EAAc,CAMhB/oC,KAAM,GAONipC,MAAM,EAQN5b,SAAU,OAOV6b,QAAS,GAQTC,aAAc,MAOdC,cAAe,CACb9jB,KAAM,OACNoQ,SAAU,IASZvrB,IAAK,MAQLD,IAAK,MAQLm/B,SAAU,KAQVC,YAAa,KAQbC,YAAa,KAQbC,YAAa,KAObC,YAAa,EAMbC,SAAU,CAMRT,MAAM,EAON9hC,MAAO,CACLytB,OAAQ,OACRU,UAAW,IAQfqU,SAAU,CAMRV,MAAM,EAON9hC,MAAO,CACLytB,OAAQ,OACRU,UAAW,IAQfsU,UAAW,CAMTX,MAAM,EASNY,UAAW,KAOX1iC,MAAO,CACLme,KAAM,OACNoQ,SAAU,GACV/D,OAAQ,IAQZmY,UAAW,CAMTb,MAAM,EAON9hC,MAAO,CACLytB,OAAQ,UACRU,UAAW,IAUfyU,QAAS,GAOTrZ,eAAgB,eAOhBD,eAAgB,IAElBh0B,EAAQssC,YAAcA,C,mCC3ctBxqC,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQutC,eAAY,EACpB,IAAIA,EAAY,CAMdf,MAAM,EAONjpC,KAAM,GASNqX,MAAO,GAQP4yB,UAAW,SAOXC,cAAe,GAWfC,SAAU,OAWVC,OAAQ,MAWRC,eAAgB,MAQhBC,WAAY,EAQZC,WAAY,EAQZ/vB,KAAM,GAMNgwB,cAAe,CAMbvB,MAAM,EAQNlF,MAAO,OAOP58B,MAAO,CACLme,KAAM,4BAQVmlB,MAAO,CAMLxB,MAAM,EAQN5b,SAAU,MAOV3E,OAAQ,CAAC,GAAI,IASbmhB,UAAW,KAOX1iC,MAAO,CACLuuB,SAAU,KAQdgC,SAAU,CAMRvL,MAAO,GAOPue,OAAO,GAQTC,SAAU,CAAC,EAQXC,kBAAkB,EAWlBC,kBAAmB,GAQnBd,OAAQ,EAORrZ,eAAgB,eAOhBD,eAAgB,IAElBh0B,EAAQutC,UAAYA,C,mCCpPpBzrC,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQquC,iBAAc,EACtB,IAAIA,EAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACvJruC,EAAQquC,YAAcA,C,mCCLtBvsC,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQsuC,iBAAc,EACtB,IAAIA,EAAc,CAMhB9B,MAAM,EAONjpC,KAAM,GAQN4lC,OAAQ,MAQRoF,OAAQ,CAAC,MAAO,OAQhB5P,YAAc15B,KAAK40B,GAAK,EAAK,EAQ7B+E,SAAU35B,KAAK40B,GAAK,EAOpBnsB,IAAK,EAOLD,IAAK,IAOL+gC,SAAU,EAOVC,aAAc,GAOd1wB,KAAM,GAON2wB,cAAe,CAAC,EAMhBxB,SAAU,CAMRV,MAAM,EAONmC,WAAY,EAOZjkC,MAAO,CACLytB,OAAQ,OACRU,UAAW,IAQfsU,UAAW,CAMTX,MAAM,EAONzuB,KAAM,GASNqvB,UAAW,KAOXwB,SAAU,EAOVlkC,MAAO,CAAC,GAOVmkC,QAAS,CAMPrC,MAAM,EAONsC,WAAY,EAOZpkC,MAAO,CACLyqB,MAAO,CAAC,EAAG,GACXtM,KAAM,YAQVkmB,QAAS,CAMPvC,MAAM,EAUNY,UAAW,KAQXnhB,OAAQ,CAAC,EAAG,GAOZ+iB,aAAc,EAQdpe,SAAU,SAOVlmB,MAAO,CACLuuB,SAAU,GACVD,WAAY,OACZG,UAAW,SACXC,aAAc,WAQlB6V,cAAe,CAMbzC,MAAM,EAON9hC,MAAO,CACLytB,OAAQ,YAUZmV,OAAQ,GAORrZ,eAAgB,eAOhBD,eAAgB,IAElBh0B,EAAQsuC,YAAcA,C,mCC1StBxsC,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQkvC,gBAAa,EACrB,IAAIA,EAAa,CAOfC,KAAM,MAQNC,MAAO,MAQPC,IAAK,GAQLC,OAAQ,GAOR5kC,MAAO,CACLme,KAAM,oBASRykB,QAAS,GAOTrZ,eAAgB,eAOhBD,eAAgB,IAElBh0B,EAAQkvC,WAAaA,C,qCCpErBptC,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQuvC,oBAAsBA,EAC9BztC,OAAOC,eAAe/B,EAAS,cAAe,CAC5CoM,YAAY,EACZpK,IAAK,WACH,OAAOwsB,EAAO6f,WAChB,IAEFvsC,OAAOC,eAAe/B,EAAS,aAAc,CAC3CoM,YAAY,EACZpK,IAAK,WACH,OAAOwtC,EAAMN,UACf,IAEFptC,OAAOC,eAAe/B,EAAS,cAAe,CAC5CoM,YAAY,EACZpK,IAAK,WACH,OAAOytC,EAAMlD,WACf,IAEFzqC,OAAOC,eAAe/B,EAAS,cAAe,CAC5CoM,YAAY,EACZpK,IAAK,WACH,OAAOytC,EAAMnD,WACf,IAEFxqC,OAAOC,eAAe/B,EAAS,cAAe,CAC5CoM,YAAY,EACZpK,IAAK,WACH,OAAO0tC,EAAOC,WAChB,IAEF7tC,OAAOC,eAAe/B,EAAS,aAAc,CAC3CoM,YAAY,EACZpK,IAAK,WACH,OAAO4tC,EAAMC,UACf,IAEF/tC,OAAOC,eAAe/B,EAAS,YAAa,CAC1CoM,YAAY,EACZpK,IAAK,WACH,OAAO8tC,EAAKvC,SACd,IAEFzrC,OAAOC,eAAe/B,EAAS,YAAa,CAC1CoM,YAAY,EACZpK,IAAK,WACH,OAAO+tC,EAAKC,SACd,IAEFluC,OAAOC,eAAe/B,EAAS,kBAAmB,CAChDoM,YAAY,EACZpK,IAAK,WACH,OAAOiuC,EAAWC,eACpB,IAEFpuC,OAAOC,eAAe/B,EAAS,cAAe,CAC5CoM,YAAY,EACZpK,IAAK,WACH,OAAOmuC,EAAOC,WAChB,IAEFtuC,OAAOC,eAAe/B,EAAS,cAAe,CAC5CoM,YAAY,EACZpK,IAAK,WACH,OAAOquC,EAAO/B,WAChB,IAEFxsC,OAAOC,eAAe/B,EAAS,eAAgB,CAC7CoM,YAAY,EACZpK,IAAK,WACH,OAAOsuC,EAAQC,YACjB,IAEFvwC,EAAQ6G,UAAO,EAEf,IAAI2nB,EAASlH,EAAQ,OAEjBkoB,EAAQloB,EAAQ,OAEhBmoB,EAAQnoB,EAAQ,OAEhBooB,EAASpoB,EAAQ,OAEjBsoB,EAAQtoB,EAAQ,OAEhBwoB,EAAOxoB,EAAQ,OAEfyoB,EAAOzoB,EAAQ,OAEf2oB,EAAa3oB,EAAQ,OAErB6oB,EAAS7oB,EAAQ,OAEjB+oB,EAAS/oB,EAAQ,OAEjBgpB,EAAUhpB,EAAQ,OAElBoH,EAAQpH,EAAQ,OAEhBkpB,EAAY,CACdnC,YAAa7f,EAAO6f,YACpBa,WAAYM,EAAMN,WAClB3C,YAAakD,EAAMlD,YACnBD,YAAamD,EAAMnD,YACnBqD,YAAaD,EAAOC,YACpBE,WAAYD,EAAMC,WAClBtC,UAAWuC,EAAKvC,UAChByC,UAAWD,EAAKC,UAChBE,gBAAiBD,EAAWC,gBAC5BE,YAAaD,EAAOC,YACpB9B,YAAa+B,EAAO/B,YACpBiC,aAAcD,EAAQC,cASxB,SAAShB,EAAoB5sC,EAAKwvB,GAC3Bqe,EAAU,GAAGzwC,OAAO4C,EAAK,YAK9B,EAAI+rB,EAAM+hB,WAAWD,EAAU,GAAGzwC,OAAO4C,EAAK,WAAYwvB,GAJxDhG,QAAQoG,KAAK,6CAKjB,CAEA,IAAI1rB,EAAO,CAAC,QAAS,QAAS,SAAU,QAAS,QAAS,OAAQ,YAAa,OAAQ,MAAO,MAAO,QAAS,SAC9G7G,EAAQ6G,KAAOA,C,mCCrIf/E,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQuwC,kBAAe,EACvB,IAAIA,EAAe,CAMjB/D,MAAM,EAQNkE,OAAQ,aAQRvB,KAAM,OAQNC,MAAO,OAQPC,IAAK,OAQLC,OAAQ,OAORqB,QAAS,GAOTC,UAAW,GAOXC,WAAY,GAOZC,YAAY,EAOZ/yB,KAAM,GAONgzB,UAAW,CACT7X,WAAY,QACZD,SAAU,GACVpQ,KAAM,QAQRmoB,UAAW,CAAC,EAOZC,oBAAqB,CACnB/X,WAAY,QACZD,SAAU,GACVpQ,KAAM,QAQRqoB,oBAAqB,CACnBroB,KAAM,QASRykB,OAAQ,GAORrZ,eAAgB,eAOhBD,eAAgB,IAElBh0B,EAAQuwC,aAAeA,C,mCCnJvBzuC,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQ6vC,gBAAa,EACrB,IAAIA,EAAa,CAMfrD,MAAM,EAONjpC,KAAM,GASNqX,MAAO,GAOPu2B,QAAQ,EAQRtD,WAAY,EAQZC,WAAY,EAQZ/vB,KAAM,GAONqzB,UAAW,CACTvY,UAAW,GAObwY,UAAW,CAMT7E,MAAM,EAONrD,OAAQ,EAORz+B,MAAO,CACLme,KAAM,OACNgQ,UAAW,IAQfyY,SAAU,CAMR9E,MAAM,EAONvR,SAAU,GAOVvwB,MAAO,CACL0tB,QAAS,KAQb4V,MAAO,CAMLxB,MAAM,EAQN5b,SAAU,MAOV3E,OAAQ,CAAC,GAAI,IASbmhB,UAAW,KAOX1iC,MAAO,CACLuuB,SAAU,KAUdqU,OAAQ,GAORrZ,eAAgB,eAOhBD,eAAgB,IAElBh0B,EAAQ6vC,WAAaA,C,mCCnMrB/tC,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQgwC,eAAY,EACpB,IAAIA,EAAY,CAMdxD,MAAM,EAONjpC,KAAM,GAQN4lC,OAAQ,MAQRoF,OAAQ,CAAC,MAAO,OAQhB5P,YAAa15B,KAAK40B,GAAK,EAOvB0X,UAAU,EAOVC,UAAU,EAQVC,cAAe,OAOf1zB,KAAM,GAMN2zB,YAAa,CAMXlF,MAAM,EASNY,UAAW,aAOX1iC,MAAO,CACLuuB,SAAU,GACVpQ,KAAM,OACNsQ,UAAW,SACXC,aAAc,WAQlBuY,aAAc,CAMZnF,MAAM,EASNY,UAAW,SAOX1iC,MAAO,CACLuuB,SAAU,IASZ2Y,iBAAkB,MAOlBC,mBAAoB,GAOpBC,eAAgB,CACdjZ,UAAW,IASfkZ,SAAU,CAAC,EAOXC,eAAgB,EAQhB1E,OAAQ,GAOR2E,kBAAmB,GAOnBhe,eAAgB,eAOhBie,oBAAqB,cAOrBle,eAAgB,IAElBh0B,EAAQgwC,UAAYA,C,mCCnNpBluC,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQowC,iBAAc,EACtB,IAAIA,EAAc,CAMhB5D,MAAM,EAONjpC,KAAM,GAQNwa,KAAM,GAONo0B,WAAY,CACVtZ,UAAW,GAOb/pB,MAAO,CAML09B,MAAM,EAONrD,OAAQ,EAORz+B,MAAO,CACLme,KAAM,SAQVmlB,MAAO,CAMLxB,MAAM,EAONvgB,OAAQ,CAAC,EAAG,GAOZ2iB,SAAU,EASVxB,UAAW,KAOX1iC,MAAO,CACLuuB,SAAU,KAUdqU,OAAQ,GAORrZ,eAAgB,eAOhBme,eAAgB,IAElBpyC,EAAQowC,YAAcA,C,mCCpItBtuC,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQkwC,qBAAkB,EAC1B,IAAIA,EAAkB,CAMpB1D,MAAM,EAQN+B,OAAQ,CAAC,MAAO,OAQhBpF,OAAQ,MAQRxK,YAAa15B,KAAK40B,GAAK,EAOvB2U,SAAU,EAOV7I,SAAS,EAMTwH,UAAW,CAMTX,MAAM,EAONoC,SAAU,GAOVlf,MAAO,GAOPhlB,MAAO,CACLme,KAAM,SAQVokB,SAAU,CAMRT,MAAM,EAON9c,MAAO,GAOPhlB,MAAO,CACLytB,OAAQ,OACRU,UAAW,IAQfwU,UAAW,CAMTb,MAAM,EAON9c,MAAO,GAOPhlB,MAAO,CACLytB,OAAQ,UACRU,UAAW,IAQfwZ,UAAW,CAMT7F,MAAM,EAON9c,MAAO,CAAC,UAAW,WAOnBhlB,MAAO,CAAC,GASV4iC,QAAS,GAOTrZ,eAAgB,eAOhBme,eAAgB,IAElBpyC,EAAQkwC,gBAAkBA,C,mCCnM1BpuC,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQ2vC,iBAAc,EACtB,IAAIA,EAAc,CAMhBnD,MAAM,EAON/Q,KAAM,GAONxP,OAAQ,CAAC,GAAI,IAObvhB,MAAO,CACLme,KAAM,OACNoQ,SAAU,GACVD,WAAY,OACZG,UAAW,SACXC,aAAc,UAShBkU,OAAQ,GAORrZ,eAAgB,eAOhBD,eAAgB,IAElBh0B,EAAQ2vC,YAAcA,C,qCC/DTroB,EAAA,OAEb,IAAIC,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQkqC,KAAOA,EAEf,IAAIxW,EAAWnM,EAAuBD,EAAQ,QAE1CI,EAAkBH,EAAuBD,EAAQ,QAEjDgH,EAAmB/G,EAAuBD,EAAQ,QAElDK,EAAsBJ,EAAuBD,EAAQ,QAErDgrB,EAAWhrB,EAAQ,OAEnBirB,EAAUjrB,EAAQ,OAElBoH,EAAQpH,EAAQ,OAEhBkrB,EAASlrB,EAAQ,OAErB,SAASnQ,EAAQ5R,EAAQspB,GAAkB,IAAIhoB,EAAO/E,OAAO+E,KAAKtB,GAAS,GAAIzD,OAAOgK,sBAAuB,CAAE,IAAIlJ,EAAUd,OAAOgK,sBAAsBvG,GAAaspB,IAAgBjsB,EAAUA,EAAQksB,QAAO,SAAUre,GAAO,OAAO3O,OAAOyJ,yBAAyBhG,EAAQkL,GAAKrE,UAAY,KAAIvF,EAAK9D,KAAKnB,MAAMiF,EAAMjE,EAAU,CAAE,OAAOiE,CAAM,CAEpV,SAASkoB,EAAcvqB,GAAU,IAAK,IAAI1B,EAAI,EAAGA,EAAIjB,UAAUf,OAAQgC,IAAK,CAAE,IAAIU,EAAyB,MAAhB3B,UAAUiB,GAAajB,UAAUiB,GAAK,CAAC,EAAOA,EAAI,EAAKqU,EAAQrV,OAAO0B,IAAS,GAAMkG,SAAQ,SAAU/G,IAAO,EAAI2rB,EAAiB,YAAY9pB,EAAQ7B,EAAKa,EAAOb,GAAO,IAAeb,OAAOktB,0BAA6BltB,OAAOuJ,iBAAiB7G,EAAQ1C,OAAOktB,0BAA0BxrB,IAAmB2T,EAAQrV,OAAO0B,IAASkG,SAAQ,SAAU/G,GAAOb,OAAOC,eAAeyC,EAAQ7B,EAAKb,OAAOyJ,yBAAyB/H,EAAQb,GAAO,GAAM,CAAE,OAAO6B,CAAQ,CAEtiB,IAAIiuC,EAAa,CACflG,YAAagG,EAAQhG,YACrBD,YAAaiG,EAAQjG,aAInBxkB,GAFM7iB,KAAKyI,IACLzI,KAAKwI,IACLxI,KAAK6iB,KACXD,EAAM5iB,KAAK4iB,IAEf,SAASqiB,EAAKa,GACZ,IAAIlB,EAAShoC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E6wC,EAAQ7I,EAAO6I,MACfC,EAAQ9I,EAAO8I,MACf7H,EAASjB,EAAOiB,OAChB8H,EAAU,GAEVF,GAASC,GAAS7H,IACpB8H,EAAUC,EAAWH,EAAOC,GAC5BC,EAAUE,EAAuBF,GACjCA,EAAUA,EAAQ9jB,QAAO,SAAUpF,GACjC,IAAI8iB,EAAO9iB,EAAK8iB,KAChB,OAAOA,CACT,IACAoG,EAAUG,EAAwBH,GAClCA,EAAUI,EAAkBJ,EAAS9H,GACrC8H,EAAUK,EAAgBL,GAC1BA,EAAUM,EAAqBN,EAAS7H,GACxC6H,EAAUO,EAAqBP,EAAS7H,GACxC6H,EAAUQ,EAAqBR,EAAS7H,GACxC6H,EAAUS,EAAsBT,EAAS7H,KAG3C,EAAIuH,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQ8H,EACRjwC,IAAK,WACLqoC,eAAgBsI,KAElB,EAAIhB,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQ8H,EACRjwC,IAAK,WACLqoC,eAAgBuI,KAElB,EAAIjB,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQ8H,EACRjwC,IAAK,YACLqoC,eAAgBwI,KAElB,EAAIlB,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQ8H,EACRjwC,IAAK,WACLqoC,eAAgByI,KAElB,EAAInB,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQ8H,EACRjwC,IAAK,YACLqoC,eAAgB0I,KAElB3I,EAAM4I,SAAWf,CACnB,CAEA,SAASC,EAAWH,EAAOC,GACzB,IAIMiB,EAQAC,EAZFC,EAAW,GACXC,EAAW,GAEXrB,aAAiB/sC,OAGlBiuC,EAAYE,GAAU/wC,KAAKnB,MAAMgyC,GAAW,EAAIjsB,EAAoB,YAAY+qB,IAEjFoB,EAAS/wC,KAAK2vC,GAGZC,aAAiBhtC,OAGlBkuC,EAAYE,GAAUhxC,KAAKnB,MAAMiyC,GAAW,EAAIlsB,EAAoB,YAAYgrB,IAEjFoB,EAAShxC,KAAK4vC,GAiBhB,OAdAmB,EAAS/b,OAAO,GAChBgc,EAAShc,OAAO,GAChB+b,EAAWA,EAAStrB,KAAI,SAAU0hB,EAAMpnC,GACtC,OAAOisB,EAAcA,EAAc,CAAC,EAAGmb,GAAO,CAAC,EAAG,CAChDnpC,MAAO+B,EACPonC,KAAM,KAEV,IACA6J,EAAWA,EAASvrB,KAAI,SAAU0hB,EAAMpnC,GACtC,OAAOisB,EAAcA,EAAc,CAAC,EAAGmb,GAAO,CAAC,EAAG,CAChDnpC,MAAO+B,EACPonC,KAAM,KAEV,IACO,GAAGnqC,QAAO,EAAI4nB,EAAoB,YAAYmsB,IAAW,EAAInsB,EAAoB,YAAYosB,GACtG,CAEA,SAASjB,EAAuBF,GAC9B,IAAIF,EAAQE,EAAQ9jB,QAAO,SAAUnF,GACnC,IAAIugB,EAAOvgB,EAAMugB,KACjB,MAAgB,MAATA,CACT,IACIyI,EAAQC,EAAQ9jB,QAAO,SAAUlF,GACnC,IAAIsgB,EAAOtgB,EAAMsgB,KACjB,MAAgB,MAATA,CACT,IAOA,OANAwI,EAAQA,EAAMlqB,KAAI,SAAU0hB,GAC1B,OAAO,EAAIxb,EAAM+hB,YAAW,EAAI+B,EAAOjf,WAAWgf,EAAQhG,aAAcrC,EAC1E,IACAyI,EAAQA,EAAMnqB,KAAI,SAAU0hB,GAC1B,OAAO,EAAIxb,EAAM+hB,YAAW,EAAI+B,EAAOjf,WAAWgf,EAAQjG,aAAcpC,EAC1E,IACO,GAAGnqC,QAAO,EAAI4nB,EAAoB,YAAY+qB,IAAQ,EAAI/qB,EAAoB,YAAYgrB,GACnG,CAEA,SAASI,EAAwBH,GAC/B,IAAIoB,EAAYpB,EAAQ9jB,QAAO,SAAU/E,GACvC,IAAIhM,EAAOgM,EAAMhM,KACjB,MAAgB,UAATA,CACT,IACIk2B,EAAYrB,EAAQ9jB,QAAO,SAAU2N,GACvC,IAAI1e,EAAO0e,EAAM1e,KACjB,MAAgB,UAATA,CACT,IASA,OARAi2B,EAAUtqC,SAAQ,SAAUwgC,GACM,mBAArBA,EAAK6C,cAChB7C,EAAK6C,aAAc,EACrB,IACAkH,EAAUvqC,SAAQ,SAAUwgC,GACM,mBAArBA,EAAK6C,cAChB7C,EAAK6C,aAAc,EACrB,IACO,GAAGhtC,QAAO,EAAI4nB,EAAoB,YAAYqsB,IAAY,EAAIrsB,EAAoB,YAAYssB,GACvG,CAEA,SAASjB,EAAkBJ,EAAS9H,GAClC,IAAIkJ,EAAYpB,EAAQ9jB,QAAO,SAAU4N,GACvC,IAAI3e,EAAO2e,EAAM3e,KACjB,MAAgB,UAATA,CACT,IACIk2B,EAAYrB,EAAQ9jB,QAAO,SAAU6N,GACvC,IAAI5e,EAAO4e,EAAM5e,KACjB,OAAOA,aAAgBpY,KACzB,IAGA,OAFAquC,EAAYE,EAAuBF,EAAWlJ,GAC9CmJ,EAAYE,EAAuBF,GAC5B,GAAGl0C,QAAO,EAAI4nB,EAAoB,YAAYqsB,IAAY,EAAIrsB,EAAoB,YAAYssB,GACvG,CAEA,SAASC,EAAuBF,EAAWlJ,GACzC,OAAOkJ,EAAUxrB,KAAI,SAAU0hB,GAC7B,IAAIkK,EAAcC,EAAwBnK,EAAMY,GAE5CwJ,EAAiBC,EAAcrK,EAAMkK,GACrCI,GAAkB,EAAI9sB,EAAgB,YAAY4sB,EAAgB,GAClE5mC,EAAM8mC,EAAgB,GACtB/mC,EAAM+mC,EAAgB,GAEtB5H,EAAW6H,EAAiB/mC,EAAKD,EAAKy8B,GACtCkD,EAAYlD,EAAKiD,UAAUC,UAC3BY,EAAQ,GAWZ,OAREA,EADEtgC,EAAM,GAAKD,EAAM,EACXinC,EAA0BhnC,EAAKD,EAAKm/B,GAEpC+H,EAAyBjnC,EAAKD,EAAKm/B,GAG7CoB,EAAQA,EAAMxlB,KAAI,SAAUlb,GAC1B,OAAOsnC,WAAWtnC,EAAEunC,QAAQ,GAC9B,IACO9lB,EAAcA,EAAc,CAAC,EAAGmb,GAAO,CAAC,EAAG,CAChD4K,SAAU9G,EAAM/sC,OAAO,GAAG,GAC1B8zC,SAAU/G,EAAM,GAChBA,MAAOgH,EAAuBhH,EAAOZ,IAEzC,GACF,CAEA,SAASiH,EAAwBnK,EAAMY,GAQrC,GAPAA,EAASA,EAAOhc,QAAO,SAAUkO,GAC/B,IAAIwP,EAAOxP,EAAMwP,KACblpC,EAAO05B,EAAM15B,KACjB,OAAa,IAATkpC,GACS,QAATlpC,CAEN,IACsB,IAAlBwnC,EAAOhqC,OAAc,MAAO,CAAC,EAAG,GACpC,IAAIC,EAAQmpC,EAAKnpC,MACbk0C,EAAW/K,EAAKA,KACpBY,EAASoK,EAAepK,GACxB,IAAIqK,EAAWF,EAAW,OACtBG,EAActK,EAAOhc,QAAO,SAAU1hB,GACxC,OAAOA,EAAE+nC,KAAcp0C,CACzB,IAEA,OADKq0C,EAAYt0C,SAAQs0C,EAActK,GAChCuK,EAAqBD,EAC9B,CAEA,SAASC,EAAqBvK,GAC5B,GAAKA,EAAL,CACA,IAAIiK,EAAW9vC,KAAKyI,IAAI9L,MAAMqD,MAAM,EAAI0iB,EAAoB,YAAYmjB,EAAOtiB,KAAI,SAAUyU,GAC3F,IAAIlf,EAAOkf,EAAMlf,KACjB,OAAO9Y,KAAKyI,IAAI9L,MAAMqD,MAAM,EAAI0iB,EAAoB,aAAY,EAAI+G,EAAM4mB,iBAAiBv3B,IAC7F,MACI+2B,EAAW7vC,KAAKwI,IAAI7L,MAAMqD,MAAM,EAAI0iB,EAAoB,YAAYmjB,EAAOtiB,KAAI,SAAU0U,GAC3F,IAAInf,EAAOmf,EAAOnf,KAClB,OAAO9Y,KAAKwI,IAAI7L,MAAMqD,MAAM,EAAI0iB,EAAoB,aAAY,EAAI+G,EAAM4mB,iBAAiBv3B,IAC7F,MACA,MAAO,CAACg3B,EAAUD,EATC,CAUrB,CAEA,SAASI,EAAepK,GACtB,IAAIyK,GAAe,EAAI/C,EAAOjf,WAAWuX,GAAQ,GAKjD,OAJAA,EAAOphC,SAAQ,SAAU4a,EAAMxhB,GAC7B,IAAIib,GAAO,EAAI2Q,EAAM8mB,oBAAoBlxB,EAAMwmB,GAC/CyK,EAAazyC,GAAGib,KAAOA,CACzB,IACOw3B,CACT,CAEA,SAAShB,EAAcpX,EAAQG,GAC7B,IAAI5vB,EAAMyvB,EAAOzvB,IACbD,EAAM0vB,EAAO1vB,IACby8B,EAAO/M,EAAO+M,KAEd3M,GAAS,EAAI7V,EAAgB,YAAY4V,EAAQ,GACjDyX,EAAWxX,EAAO,GAClBuX,EAAWvX,EAAO,GAElBkY,GAAU,EAAI/hB,EAAS,YAAYhmB,GACnCgoC,GAAU,EAAIhiB,EAAS,YAAYjmB,GAYvC,GAVKkoC,EAAejoC,KAClBA,EAAM+kC,EAAWvI,EAAO,cAAcx8B,IACtC+nC,EAAU,UAGPE,EAAeloC,KAClBA,EAAMglC,EAAWvI,EAAO,cAAcz8B,IACtCioC,EAAU,UAGI,WAAZD,EAAsB,CACxB/nC,EAAMs2B,SAAS+Q,EAAWjtB,EAAIitB,EAAWH,WAAWlnC,GAAO,MAC3D,IAAIkoC,EAAQC,EAAcnoC,GAC1BA,EAAMknC,YAAYlnC,EAAMkoC,EAAQ,IAAKf,QAAQ,IAAMe,CACrD,CAEA,GAAgB,WAAZF,EAAsB,CACxBjoC,EAAMu2B,SAAS8Q,EAAWhtB,EAAIgtB,EAAWF,WAAWnnC,GAAO,MAE3D,IAAIqoC,EAASD,EAAcpoC,GAE3BA,EAAMmnC,YAAYnnC,EAAMqoC,EAAS,IAAKjB,QAAQ,IAAMiB,CACtD,CAEA,MAAO,CAACpoC,EAAKD,EACf,CAEA,SAASooC,EAAcj1C,GACrB,IAAIm1C,EAAcjuB,EAAIlnB,GAAOI,WACzBg1C,EAAcD,EAAYj1C,OAC1Bm1C,EAAiBF,EAAYr7B,QAAQ,OAAQ,IAAIvE,QAAQ,KACzD+/B,EAAWF,EAAc,EAE7B,OADwB,IAApBC,IAAuBC,GAAYD,GAChCpuB,EAAI,GAAIquB,EACjB,CAEA,SAASP,EAAe7nC,GACtB,IAAIqoC,GAAU,EAAIziB,EAAS,YAAY5lB,GACnCsoC,EAA4B,WAAZD,GAAwB,SAASl8B,KAAKnM,GACtDuoC,EAA4B,WAAZF,EACpB,OAAOC,GAAiBC,CAC1B,CAEA,SAAS3B,EAA0BhnC,EAAKD,EAAKm/B,GAC3C,IAAI0J,EAAW,GACXC,EAAW,GACXC,EAAkB,EAClBC,EAAkB,EAEtB,GACEH,EAASvzC,KAAKyzC,GAAmB5J,SAC1B4J,EAAkB9oC,GAE3B,GACE6oC,EAASxzC,KAAK0zC,GAAmB7J,SAC1B6J,EAAkBhpC,GAE3B,MAAO,GAAG1N,QAAO,EAAI4nB,EAAoB,YAAY2uB,EAASxc,WAAY,CAAC,IAAI,EAAInS,EAAoB,YAAY4uB,GACrH,CAEA,SAAS5B,EAAyBjnC,EAAKD,EAAKm/B,GAC1C,IAAIoB,EAAQ,CAACtgC,GACTgpC,EAAehpC,EAEnB,GACEsgC,EAAMjrC,KAAK2zC,GAAgB9J,SACpB8J,EAAejpC,GAExB,OAAOugC,CACT,CAEA,SAASgH,EAAuBhH,EAAOZ,GACrC,OAAKA,GACoB,kBAAdA,IAAwBY,EAAQA,EAAMxlB,KAAI,SAAUlb,GAC7D,OAAO8/B,EAAU1yB,QAAQ,UAAWpN,EACtC,KACyB,oBAAd8/B,IAA0BY,EAAQA,EAAMxlB,KAAI,SAAU5nB,EAAOG,GACtE,OAAOqsC,EAAU,CACfxsC,MAAOA,EACPG,MAAOA,GAEX,KACOitC,GAVgBA,CAWzB,CAEA,SAASmG,EAAuBF,GAC9B,OAAOA,EAAUzrB,KAAI,SAAU0hB,GAC7B,IAAInsB,EAAOmsB,EAAKnsB,KACZqvB,EAAYlD,EAAKiD,UAAUC,UAC/B,OAAOre,EAAcA,EAAc,CAAC,EAAGmb,GAAO,CAAC,EAAG,CAChD8D,MAAOgH,EAAuBj3B,EAAMqvB,IAExC,GACF,CAEA,SAASqH,EAAiB/mC,EAAKD,EAAKy8B,GAClC,IAAI0C,EAAW1C,EAAK0C,SAChBC,EAAc3C,EAAK2C,YACnBC,EAAc5C,EAAK4C,YACnBE,EAAc9C,EAAK8C,YACnBiI,EAAW/K,EAAKA,KAChB/X,EAASsgB,EAAWwC,EAAW,cAKnC,GAJwB,kBAAbrI,IAAuBA,EAAWza,EAAOya,UACzB,kBAAhBC,IAA0BA,EAAc1a,EAAO0a,aAC/B,kBAAhBC,IAA0BA,EAAc3a,EAAO2a,aAC/B,kBAAhBE,IAA0BA,EAAc7a,EAAO6a,aAClC,kBAAbJ,EAAuB,OAAOA,EACzC,IAAI+J,EAAgB3S,UAAUv2B,EAAMC,IAAQs/B,EAAc,IAG1D,OAFI2J,EAAc31C,WAAWF,OAAS,IAAG61C,EAAgB3S,SAAS2S,EAAc31C,WAAW0Z,QAAQ,MAAO,OACpF,IAAlBi8B,IAAqBA,EAAgB,GACd,kBAAhB9J,GAA4B8J,EAAgB9J,EAAoBA,EAChD,kBAAhBC,GAA4B6J,EAAgB7J,EAAoBA,EACpE6J,CACT,CAEA,SAAS1D,EAAgBL,GACvB,IAAIF,EAAQE,EAAQ9jB,QAAO,SAAU0O,GACnC,IAAI0M,EAAO1M,EAAO0M,KAClB,MAAgB,MAATA,CACT,IACIyI,EAAQC,EAAQ9jB,QAAO,SAAU4O,GACnC,IAAIwM,EAAOxM,EAAOwM,KAClB,MAAgB,MAATA,CACT,IAaA,OAZIwI,EAAM,KAAOA,EAAM,GAAG9hB,WAAU8hB,EAAM,GAAG9hB,SAAW2hB,EAAQhG,YAAY3b,UAExE8hB,EAAM,KAAOA,EAAM,GAAG9hB,WACxB8hB,EAAM,GAAG9hB,SAAiC,WAAtB8hB,EAAM,GAAG9hB,SAAwB,MAAQ,UAG3D+hB,EAAM,KAAOA,EAAM,GAAG/hB,WAAU+hB,EAAM,GAAG/hB,SAAW2hB,EAAQjG,YAAY1b,UAExE+hB,EAAM,KAAOA,EAAM,GAAG/hB,WACxB+hB,EAAM,GAAG/hB,SAAiC,SAAtB+hB,EAAM,GAAG/hB,SAAsB,QAAU,QAGxD,GAAG7wB,QAAO,EAAI4nB,EAAoB,YAAY+qB,IAAQ,EAAI/qB,EAAoB,YAAYgrB,GACnG,CAEA,SAASO,EAAqBN,EAAS7H,GACrC,IAAI6L,EAAkB7L,EAAM8L,SACxBj4B,EAAIg4B,EAAgBh4B,EACpB6e,EAAImZ,EAAgBnZ,EACpB90B,EAAIiuC,EAAgBjuC,EACpB/I,EAAIg3C,EAAgBh3C,EAmBxB,OAlBAgzC,EAAUA,EAAQpqB,KAAI,SAAU0hB,GAC9B,IAAItZ,EAAWsZ,EAAKtZ,SAChBkmB,EAAe,GAYnB,MAViB,SAAblmB,EACFkmB,EAAe,CAAC,CAACl4B,EAAG6e,GAAI,CAAC7e,EAAG6e,EAAI79B,IAAIk6B,UACd,UAAblJ,EACTkmB,EAAe,CAAC,CAACl4B,EAAIjW,EAAG80B,GAAI,CAAC7e,EAAIjW,EAAG80B,EAAI79B,IAAIk6B,UACtB,QAAblJ,EACTkmB,EAAe,CAAC,CAACl4B,EAAG6e,GAAI,CAAC7e,EAAIjW,EAAG80B,IACV,WAAb7M,IACTkmB,EAAe,CAAC,CAACl4B,EAAG6e,EAAI79B,GAAI,CAACgf,EAAIjW,EAAG80B,EAAI79B,KAGnCmvB,EAAcA,EAAc,CAAC,EAAGmb,GAAO,CAAC,EAAG,CAChD4M,aAAcA,GAElB,IACOlE,CACT,CAEA,SAASO,EAAqBP,EAAS7H,GACrC,OAAO6H,EAAQpqB,KAAI,SAAUuuB,GAC3B,IAAI7M,EAAO6M,EAAS7M,KAChB4M,EAAeC,EAASD,aACxBlmB,EAAWmmB,EAASnmB,SACpBod,EAAQ+I,EAAS/I,MACjBjB,EAAcgK,EAAShK,YACA,mBAAhBA,IAA2BA,EAAc0F,EAAWvI,EAAO,cAAc6C,aACpF,IAAIiK,EAAWhJ,EAAMltC,OAEjBm2C,GAAgB,EAAIvvB,EAAgB,YAAYovB,EAAc,GAC9DI,GAAiB,EAAIxvB,EAAgB,YAAYuvB,EAAc,GAAI,GACnEE,EAASD,EAAe,GACxBE,EAASF,EAAe,GACxBG,GAAkB,EAAI3vB,EAAgB,YAAYuvB,EAAc,GAAI,GACpEK,EAAOD,EAAgB,GACvBE,EAAOF,EAAgB,GAEvBG,EAAqB,MAATtN,EAAeoN,EAAOH,EAASI,EAAOH,EAClDK,EAAMD,GAAazK,EAAciK,EAAWA,EAAW,GACvDU,EAAe,IAAI/xC,MAAMqxC,GAAUnuB,KAAK,GAAGL,KAAI,SAAUoC,EAAK9nB,GAChE,MAAa,MAATonC,EACK,CAACiN,EAASM,GAAO1K,EAAcjqC,EAAI,GAAMA,GAAIs0C,GAG/C,CAACD,EAAQC,EAASK,GAAO1K,EAAcjqC,EAAI,GAAMA,GAC1D,IACI60C,EAAmBC,EAAoB1N,EAAM6C,EAAanc,EAAU8mB,EAAcD,GACtF,OAAO1oB,EAAcA,EAAc,CAAC,EAAGgoB,GAAW,CAAC,EAAG,CACpDW,aAAcA,EACdC,iBAAkBA,EAClBE,QAASJ,GAEb,GACF,CAEA,SAASG,EAAoB3C,EAAUlI,EAAanc,EAAU8mB,EAAcD,GAC1E,IAAI12C,EAAqB,MAAbk0C,EAAmB,EAAI,EAC/B6C,EAAO,EACM,MAAb7C,GAAiC,QAAbrkB,IAAoBknB,GAAQ,GACnC,MAAb7C,GAAiC,SAAbrkB,IAAqBknB,GAAQ,GACrD,IAAIH,EAAmBD,EAAalvB,KAAI,SAAUuvB,GAChD,IAAItP,GAAU,EAAI+J,EAAOjf,WAAWwkB,GAEpC,OADAtP,EAAQ1nC,IAAU+2C,EACX,EAAC,EAAItF,EAAOjf,WAAWwkB,GAAYtP,EAC5C,IACA,OAAKsE,GACLhsC,EAAqB,MAAbk0C,EAAmB,EAAI,EAC/B6C,EAAOL,EAAM,EACbE,EAAiBjuC,SAAQ,SAAUi0B,GACjC,IAAIC,GAAS,EAAIlW,EAAgB,YAAYiW,EAAQ,GACjDoa,EAAYna,EAAO,GACnB6K,EAAU7K,EAAO,GAErBma,EAAUh3C,IAAU+2C,EACpBrP,EAAQ1nC,IAAU+2C,CACpB,IACOH,GAXkBA,CAY3B,CAEA,SAASvE,EAAqBR,EAAS7H,GACrC,OAAO6H,EAAQpqB,KAAI,SAAUuuB,GAC3B,IAAItK,EAAUsK,EAAStK,QACnBC,EAAeqK,EAASrK,aACxB9b,EAAWmmB,EAASnmB,SACpBkmB,EAAeC,EAASD,aAExBkB,GAAiB,EAAItwB,EAAgB,YAAYovB,EAAc,GAC/DiB,EAAYC,EAAe,GAC3BvP,EAAUuP,EAAe,GAEzBC,GAAe,EAAItwB,EAAoB,YAAYowB,GAClC,QAAjBrL,IAAwBuL,GAAe,EAAItwB,EAAoB,YAAY8gB,IAE1D,WAAjBiE,IACFuL,EAAa,IAAMF,EAAU,GAAKtP,EAAQ,IAAM,EAChDwP,EAAa,IAAMF,EAAU,GAAKtP,EAAQ,IAAM,GAGlD,IAAI1nC,EAAQ,EACK,QAAb6vB,GAAuC,WAAjB8b,IAA2B3rC,EAAQ,GAC5C,WAAb6vB,GAA0C,WAAjB8b,IAA2B3rC,EAAQ,GAC/C,SAAb6vB,GAAwC,WAAjB8b,IAA2B3rC,EAAQ,GAC7C,UAAb6vB,GAAyC,WAAjB8b,IAA2B3rC,EAAQ,GAC/D,IAAI+2C,EAAOrL,EAMX,MALiB,QAAb7b,GAAuC,QAAjB8b,IAAwBoL,IAAS,GAC1C,SAAblnB,GAAwC,UAAjB8b,IAA0BoL,IAAS,GAC7C,WAAblnB,GAA0C,UAAjB8b,IAA0BoL,IAAS,GAC/C,UAAblnB,GAAyC,QAAjB8b,IAAwBoL,IAAS,GAC7DG,EAAal3C,IAAU+2C,EAChB/oB,EAAcA,EAAc,CAAC,EAAGgoB,GAAW,CAAC,EAAG,CACpDkB,aAAcA,GAElB,GACF,CAEA,SAAS5E,EAAsBT,EAAS7H,GACtC,IAAImN,EAAmBnN,EAAM8L,SACzBluC,EAAIuvC,EAAiBvvC,EACrB/I,EAAIs4C,EAAiBt4C,EACzB,OAAOgzC,EAAQpqB,KAAI,SAAUuuB,GAC3B,IAAIY,EAAmBZ,EAASY,iBAC5B/mB,EAAWmmB,EAASnmB,SACpBmc,EAAcgK,EAAShK,YACvBhsC,EAAQ,EACR+2C,EAAOnvC,EACM,QAAbioB,GAAmC,WAAbA,IAAuB7vB,EAAQ,GACxC,QAAb6vB,GAAmC,WAAbA,IAAuBknB,EAAOl4C,GACvC,UAAbgxB,GAAqC,WAAbA,IAAuBknB,IAAS,GAC5D,IAAIK,EAAoBR,EAAiBnvB,KAAI,SAAUqV,GACrD,IAAIC,GAAS,EAAIpW,EAAgB,YAAYmW,EAAQ,GACjDzV,EAAa0V,EAAO,GAEpBzV,GAAW,EAAIV,EAAoB,YAAYS,GAEnD,OADAC,EAAStnB,IAAU+2C,EACZ,EAAC,EAAInwB,EAAoB,YAAYS,GAAaC,EAC3D,IAEA,OADK0kB,GAAaoL,EAAkBjhB,QAC7BnI,EAAcA,EAAc,CAAC,EAAGgoB,GAAW,CAAC,EAAG,CACpDoB,kBAAmBA,GAEvB,GACF,CAEA,SAAS7E,EAAcyD,GACrB,IAAI9iB,EAAiB8iB,EAAS9iB,eAC1BD,EAAiB+iB,EAAS/iB,eAC1BsZ,EAASyJ,EAASzJ,OACtB,MAAO,CAAC,CACN/pC,KAAM,WACNxC,MAAOusC,EACPza,QAASkkB,EAAS9J,SAAST,KAC3BvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAO8jB,EAAarB,GACpBrsC,MAAO2tC,EAAatB,IAExB,CAEA,SAASqB,EAAarB,GACpB,IAAID,EAAeC,EAASD,aAC5B,MAAO,CACLtsB,OAAQssB,EAEZ,CAEA,SAASuB,EAAatB,GACpB,OAAOA,EAAS9J,SAASviC,KAC3B,CAEA,SAAS6oC,EAAcwD,GACrB,IAAI9iB,EAAiB8iB,EAAS9iB,eAC1BD,EAAiB+iB,EAAS/iB,eAC1BsZ,EAASyJ,EAASzJ,OAClBgL,EAASC,EAAcxB,GACvBrsC,EAAQ8tC,EAAazB,GACzB,OAAOuB,EAAO9vB,KAAI,SAAU8L,GAC1B,MAAO,CACL/wB,KAAM,WACNxC,MAAOusC,EACPza,QAASkkB,EAAS7J,SAASV,KAC3BvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOA,EACP5pB,MAAOA,EAEX,GACF,CAEA,SAAS6tC,EAAcxB,GACrB,IAAIY,EAAmBZ,EAASY,iBAChC,OAAOA,EAAiBnvB,KAAI,SAAUgC,GACpC,MAAO,CACLA,OAAQA,EAEZ,GACF,CAEA,SAASguB,EAAazB,GACpB,OAAOA,EAAS7J,SAASxiC,KAC3B,CAEA,SAAS8oC,EAAeuD,GACtB,IAAI9iB,EAAiB8iB,EAAS9iB,eAC1BD,EAAiB+iB,EAAS/iB,eAC1BsZ,EAASyJ,EAASzJ,OAClBgL,EAASG,EAAe1B,GACxB2B,EAASC,EAAc5B,EAAUuB,GACrC,OAAOA,EAAO9vB,KAAI,SAAU8L,EAAOxxB,GACjC,MAAO,CACLS,KAAM,OACNxC,MAAOusC,EACPza,QAASkkB,EAAS5J,UAAUX,KAC5BvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOA,EACP5pB,MAAOguC,EAAO51C,GACd4xB,eAAgB,WAEhB,EAEJ,GACF,CAEA,SAAS+jB,EAAe1B,GACtB,IAAI/I,EAAQ+I,EAAS/I,MACjB0J,EAAeX,EAASW,aACxB9mB,EAAWmmB,EAASnmB,SACxB,OAAO8mB,EAAalvB,KAAI,SAAU1Z,EAAOhM,GACvC,MAAO,CACL8tB,SAAUgoB,EAAqB9pC,EAAO8hB,GACtC8S,QAASsK,EAAMlrC,GAAG9B,WAEtB,GACF,CAEA,SAAS43C,EAAqBpuB,EAAQoG,GACpC,IAAI7vB,EAAQ,EACR+2C,EAAO,GAKX,MAJiB,QAAblnB,GAAmC,WAAbA,IAAuB7vB,EAAQ,GACxC,QAAb6vB,GAAmC,SAAbA,IAAqBknB,GAAQ,IACvDttB,GAAS,EAAIgoB,EAAOjf,WAAW/I,GAC/BA,EAAOzpB,IAAU+2C,EACVttB,CACT,CAEA,SAASmuB,EAAc5B,EAAUuB,GAC/B,IAAI1nB,EAAWmmB,EAASnmB,SACpBlmB,EAAQqsC,EAAS5J,UAAUziC,MAC3BmuC,EAAQC,EAAsBloB,GAClClmB,GAAQ,EAAIgkB,EAAM+hB,WAAWoI,EAAOnuC,GACpC,IAAIguC,EAASJ,EAAO9vB,KAAI,SAAUuV,GAChC,IAAInN,EAAWmN,EAAOnN,SACtB,OAAO7B,EAAcA,EAAc,CAAC,EAAGrkB,GAAQ,CAAC,EAAG,CACjDuqB,YAAarE,GAEjB,IACA,OAAO8nB,CACT,CAEA,SAASI,EAAsBloB,GAC7B,MAAiB,SAAbA,EAA4B,CAC9BuI,UAAW,QACXC,aAAc,UAEC,UAAbxI,EAA6B,CAC/BuI,UAAW,OACXC,aAAc,UAEC,QAAbxI,EAA2B,CAC7BuI,UAAW,SACXC,aAAc,UAEC,WAAbxI,EAA8B,CAChCuI,UAAW,SACXC,aAAc,YAFhB,CAIF,CAEA,SAASqa,EAAcsD,GACrB,IAAI9iB,EAAiB8iB,EAAS9iB,eAC1BD,EAAiB+iB,EAAS/iB,eAC1BsZ,EAASyJ,EAASzJ,OACtB,MAAO,CAAC,CACN/pC,KAAM,OACNxC,MAAOusC,EACPrZ,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOykB,EAAahC,GACpBrsC,MAAOsuC,EAAajC,IAExB,CAEA,SAASgC,EAAahC,GACpB,IAAIxzC,EAAOwzC,EAASxzC,KAChB00C,EAAelB,EAASkB,aAC5B,MAAO,CACLvU,QAASngC,EACTqtB,SAAUqnB,EAEd,CAEA,SAASe,EAAajC,GACpB,IAAIrK,EAAeqK,EAASrK,aACxB9b,EAAWmmB,EAASnmB,SACpBlmB,EAAQqsC,EAASpK,cACjBkM,EAAQI,GAAiBroB,EAAU8b,GACvC,OAAO,EAAIhe,EAAM+hB,WAAWoI,EAAOnuC,EACrC,CAEA,SAASuuC,GAAiBroB,EAAU7O,GAClC,MAAiB,QAAb6O,GAAmC,UAAb7O,GAAqC,WAAb6O,GAAsC,UAAb7O,GAAqC,SAAb6O,GAAoC,WAAb7O,EAA8B,CACtJoX,UAAW,QACXC,aAAc,UAEC,QAAbxI,GAAmC,QAAb7O,GAAmC,WAAb6O,GAAsC,QAAb7O,GAAmC,UAAb6O,GAAqC,WAAb7O,EAA8B,CACnJoX,UAAW,OACXC,aAAc,UAEC,QAAbxI,GAAmC,WAAb7O,GAAsC,SAAb6O,GAAoC,QAAb7O,GAAmC,UAAb6O,GAAqC,QAAb7O,EAA2B,CACjJoX,UAAW,SACXC,aAAc,UAEC,WAAbxI,GAAsC,WAAb7O,GAAsC,SAAb6O,GAAoC,UAAb7O,GAAqC,UAAb6O,GAAqC,UAAb7O,EAA6B,CACxJoX,UAAW,SACXC,aAAc,YAFhB,CAIF,CAEA,SAASsa,GAAmBqD,GAC1B,IAAI9iB,EAAiB8iB,EAAS9iB,eAC1BD,EAAiB+iB,EAAS/iB,eAC1BsZ,EAASyJ,EAASzJ,OAClBgL,EAASY,GAAmBnC,GAC5BrsC,EAAQyuC,GAAkBpC,GAC9B,OAAOuB,EAAO9vB,KAAI,SAAU8L,GAC1B,MAAO,CACL/wB,KAAM,WACNxC,MAAOusC,EACPza,QAASkkB,EAAS1J,UAAUb,KAC5BvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOA,EACP5pB,MAAOA,EAEX,GACF,CAEA,SAASwuC,GAAmBnC,GAC1B,IAAIoB,EAAoBpB,EAASoB,kBACjC,OAAOA,EAAkB3vB,KAAI,SAAUgC,GACrC,MAAO,CACLA,OAAQA,EAEZ,GACF,CAEA,SAAS2uB,GAAkBpC,GACzB,OAAOA,EAAS1J,UAAU3iC,KAC5B,C,qCCpwBa4c,EAAA,OAEb,IAAIC,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQqqC,IAAMA,EAEd,IAAI3W,EAAWnM,EAAuBD,EAAQ,QAE1CgH,EAAmB/G,EAAuBD,EAAQ,QAElDI,EAAkBH,EAAuBD,EAAQ,QAEjDK,EAAsBJ,EAAuBD,EAAQ,QAErDgrB,EAAWhrB,EAAQ,OAEnBirB,EAAUjrB,EAAQ,OAElBoH,EAAQpH,EAAQ,OAEhBkrB,EAASlrB,EAAQ,OAErB,SAASnQ,EAAQ5R,EAAQspB,GAAkB,IAAIhoB,EAAO/E,OAAO+E,KAAKtB,GAAS,GAAIzD,OAAOgK,sBAAuB,CAAE,IAAIlJ,EAAUd,OAAOgK,sBAAsBvG,GAAaspB,IAAgBjsB,EAAUA,EAAQksB,QAAO,SAAUre,GAAO,OAAO3O,OAAOyJ,yBAAyBhG,EAAQkL,GAAKrE,UAAY,KAAIvF,EAAK9D,KAAKnB,MAAMiF,EAAMjE,EAAU,CAAE,OAAOiE,CAAM,CAEpV,SAASkoB,EAAcvqB,GAAU,IAAK,IAAI1B,EAAI,EAAGA,EAAIjB,UAAUf,OAAQgC,IAAK,CAAE,IAAIU,EAAyB,MAAhB3B,UAAUiB,GAAajB,UAAUiB,GAAK,CAAC,EAAOA,EAAI,EAAKqU,EAAQrV,OAAO0B,IAAS,GAAMkG,SAAQ,SAAU/G,IAAO,EAAI2rB,EAAiB,YAAY9pB,EAAQ7B,EAAKa,EAAOb,GAAO,IAAeb,OAAOktB,0BAA6BltB,OAAOuJ,iBAAiB7G,EAAQ1C,OAAOktB,0BAA0BxrB,IAAmB2T,EAAQrV,OAAO0B,IAASkG,SAAQ,SAAU/G,GAAOb,OAAOC,eAAeyC,EAAQ7B,EAAKb,OAAOyJ,yBAAyB/H,EAAQb,GAAO,GAAM,CAAE,OAAO6B,CAAQ,CAEtiB,SAAS6lC,EAAIU,GACX,IAAIlB,EAAShoC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E6wC,EAAQ7I,EAAO6I,MACfC,EAAQ9I,EAAO8I,MACf7H,EAASjB,EAAOiB,OAChBsO,EAAO,GAEP1G,GAASC,GAAS7H,IACpBsO,GAAO,EAAI5G,EAAO6G,gBAAgBvO,EAAQyH,EAAQhF,UAAW,OAC7D6L,EAAOE,EAAWF,EAAMrO,GACxBqO,EAAOG,EAAmBH,EAAMrO,GAChCqO,EAAOI,EAAiBJ,EAAMrO,KAGhC,EAAIuH,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQsO,EAAKn4C,OAAO,GACpB0B,IAAK,gBACLqoC,eAAgByO,IAElBL,EAAKtf,WACL,EAAIwY,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQsO,EACRz2C,IAAK,MACLqoC,eAAgB0O,EAChBzN,oBAAqB0N,EACrBvN,aAAcwN,KAEhB,EAAItH,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQsO,EACRz2C,IAAK,WACLqoC,eAAgBwI,GAEpB,CAEA,SAAS8F,EAAWF,EAAMrO,GACxB,IAAI4I,EAAW5I,EAAM4I,SAwBrB,OAvBAyF,EAAK1vC,SAAQ,SAAU2gC,GACrB,IAAIwD,EAAaxD,EAAIwD,WACjBC,EAAazD,EAAIyD,WACK,kBAAfD,IAAyBA,EAAa,GACvB,kBAAfC,IAAyBA,EAAa,GACjD,IAAI4E,EAAQiB,EAAStjB,MAAK,SAAU3G,GAClC,IAAIwgB,EAAOxgB,EAAKwgB,KACZnpC,EAAQ2oB,EAAK3oB,MACjB,MAAO,GAAGhB,OAAOmqC,GAAMnqC,OAAOgB,KAAW,IAAIhB,OAAO8tC,EACtD,IACI8E,EAAQgB,EAAStjB,MAAK,SAAU1G,GAClC,IAAIugB,EAAOvgB,EAAMugB,KACbnpC,EAAQ4oB,EAAM5oB,MAClB,MAAO,GAAGhB,OAAOmqC,GAAMnqC,OAAOgB,KAAW,IAAIhB,OAAO+tC,EACtD,IACI5D,EAAO,CAACwI,EAAOC,GACfkH,EAAiB3P,EAAKrS,WAAU,SAAUjO,GAC5C,IAAI7L,EAAO6L,EAAM7L,KACjB,MAAgB,UAATA,CACT,IACAssB,EAAI2J,UAAY9J,EAAK2P,GACrBxP,EAAI4J,UAAY/J,EAAK,EAAI2P,EAC3B,IACOT,CACT,CAEA,SAASG,EAAmBH,EAAMrO,GAChC,IAAI+O,EAAgBC,EAAoBX,GAQxC,OAPAU,EAAcpwC,SAAQ,SAAUswC,GAC9BC,EAAYD,GACZE,EAAUF,GACVG,EAAoBH,EAAOjP,GAC3BqP,EAAkBJ,GAClBK,EAAqBL,EACvB,IACOZ,CACT,CAEA,SAASa,EAAYb,GACnB,IAAIkB,EAASC,EAAYnB,GACzBkB,EAASA,EAAO9xB,KAAI,SAAU5N,GAC5B,MAAO,CACLA,MAAOA,EACP7Z,OAAQ,EAEZ,IACA,IAAIy5C,EAAe,EACnBpB,EAAK1vC,SAAQ,SAAU2gC,GACrB,IAAIzvB,EAAQyvB,EAAIzvB,MAEhB,GAAKA,EAGE,CACL,IAAI6/B,EAAYH,EAAOjqB,MAAK,SAAUtG,GACpC,IAAI3c,EAAI2c,EAAMnP,MACd,OAAOxN,IAAMwN,CACf,KAEyB,IAArB6/B,EAAU15C,QACZ05C,EAAU15C,MAAQy5C,EAClBA,KAGFnQ,EAAIqQ,SAAWD,EAAU15C,KAC3B,MAdEspC,EAAIqQ,SAAWF,EACfA,GAcJ,GACF,CAEA,SAAST,EAAoBX,GAC3B,IAAInF,EAAYmF,EAAK5wB,KAAI,SAAUiU,GACjC,IAAIke,EAAkBle,EAAMwX,UACxB/J,EAAOyQ,EAAgBzQ,KACvBnpC,EAAQ45C,EAAgB55C,MAC5B,OAAOmpC,EAAOnpC,CAChB,IAEA,OADAkzC,GAAY,EAAItsB,EAAoB,YAAY,IAAIizB,IAAI3G,IACjDA,EAAUzrB,KAAI,SAAUqyB,GAC7B,OAAOzB,EAAKtqB,QAAO,SAAU4N,GAC3B,IAAIoe,EAAkBpe,EAAMuX,UACxB/J,EAAO4Q,EAAgB5Q,KACvBnpC,EAAQ+5C,EAAgB/5C,MAC5B,OAAOmpC,EAAOnpC,IAAU85C,CAC1B,GACF,GACF,CAEA,SAASN,EAAYnB,GACnB,IAAIkB,EAAS,GAKb,OAJAlB,EAAK1vC,SAAQ,SAAUizB,GACrB,IAAI/hB,EAAQ+hB,EAAM/hB,MACdA,GAAO0/B,EAAOv3C,KAAK6X,EACzB,KACO,EAAI+M,EAAoB,YAAY,IAAIizB,IAAIN,GACrD,CAEA,SAASJ,EAAUd,GACjB,IAAI2B,GAAS,EAAIpzB,EAAoB,YAAY,IAAIizB,IAAIxB,EAAK5wB,KAAI,SAAUwU,GAC1E,IAAI0d,EAAW1d,EAAM0d,SACrB,OAAOA,CACT,MAAK55C,OACLs4C,EAAK1vC,SAAQ,SAAU2gC,GACrB,OAAOA,EAAI0Q,OAASA,CACtB,GACF,CAEA,SAASZ,EAAoBf,GAC3B,IAAI4B,EAAU5B,EAAKn4C,OAAO,GAAG,GACzB2sC,EAAiBoN,EAAQpN,eACzBiK,EAAUmD,EAAQ/G,UAAU4D,QAC5BoD,EAAmB,EAGrBA,EAD4B,kBAAnBrN,EACUA,GAEC,EAAI5J,SAAS4J,GAAkB,KAAOiK,EAG5DuB,EAAK1vC,SAAQ,SAAU2gC,GACrB,OAAOA,EAAI4Q,iBAAmBA,CAChC,GACF,CAEA,SAASb,EAAkBhB,GACzB,IAAI8B,EAAe9B,EAAKn4C,OAAO,GAAG,GAC9Bg6C,EAAmBC,EAAaD,iBAChCvN,EAAWwN,EAAaxN,SACxBC,EAASuN,EAAavN,OACtBoN,EAASG,EAAaH,OACtBI,EAAc,GAEM,kBAAbzN,GAAsC,SAAbA,EAClCyN,EAAcC,EAAqCH,EAAkBvN,EAAUC,EAAQoN,GACjE,SAAbrN,IACTyN,EAAcE,EAA2BJ,EAAkBvN,EAAUC,EAAQoN,IAG/E,IAAIO,EAAeH,EACfI,GAAgB,EAAI7zB,EAAgB,YAAY4zB,EAAc,GAC9DhU,EAAQiU,EAAc,GACtB9D,EAAM8D,EAAc,GAExBnC,EAAK1vC,SAAQ,SAAU2gC,GACrBA,EAAIqD,SAAWpG,EACf+C,EAAIsD,OAAS8J,CACf,GACF,CAEA,SAAS2D,EAAqCH,EAAkBvN,EAAUC,GACxE,IAAIrG,EAAQ,EACRmQ,EAAM,EAcV,OAXEnQ,EADsB,kBAAboG,EACDA,EAEA1J,SAAS0J,GAAY,IAAMuN,EAInCxD,EADoB,kBAAX9J,EACHA,EAEA3J,SAAS2J,GAAU,IAAMrG,EAG1B,CAACA,EAAOmQ,EACjB,CAEA,SAAS4D,EAA2BJ,EAAkBvN,EAAUC,EAAQoN,GACtE,IAAIzT,EAAQ,EACRmQ,EAAM,EACN+D,EAAeP,EAAmBF,EAEtC,GAAsB,kBAAXpN,EACT8J,EAAM9J,EACNrG,EAAQkU,EAAe/D,MAClB,CACL,IAAIgE,EAAU,GAAKzX,SAAS2J,GAAU,GAEtB,IAAZ8N,GACFnU,EAAuB,EAAfkU,EACR/D,GAAOnQ,IAEPA,EAAQkU,EAAeC,EAAU,GACjChE,EAAM+D,EAAelU,EAEzB,CAEA,MAAO,CAACA,EAAOmQ,EACjB,CAEA,SAAS4C,EAAqBjB,GAC5B,IAAIsC,EAAgBtC,EAAKn4C,OAAO,GAAG,GAC/B0sC,EAAS+N,EAAc/N,OACvBD,EAAWgO,EAAchO,SACzBqN,EAASW,EAAcX,OACvBY,GAAqBhO,EAASD,GAAYqN,EAASpN,EACvDyL,EAAK1vC,SAAQ,SAAU2gC,GACrB,OAAOA,EAAIsR,kBAAoBA,CACjC,GACF,CAEA,SAASnC,EAAiBJ,EAAMrO,GAK9B,OAJAqO,EAAOwC,EAA2BxC,GAClCA,EAAOyC,EAA2BzC,GAClCA,EAAO0C,EAA0B1C,GACjCA,EAAO2C,EAA6B3C,GAC7BA,CACT,CAEA,SAASyC,EAA2BzC,GAClC,OAAOA,EAAK5wB,KAAI,SAAU6hB,GACxB,IAAI4J,EAAY5J,EAAI4J,UAChB0H,EAAoBtR,EAAIsR,kBACxBhO,EAAStD,EAAIsD,OACbD,EAAWrD,EAAIqD,SACfgN,EAAWrQ,EAAIqQ,SACf7C,EAAU5D,EAAU4D,QACpBH,EAAezD,EAAUyD,aACzBxN,EAAO+J,EAAU/J,KACjB8R,EAA2B,MAAT9R,EAAe,EAAI,EACrC+R,EAAkBvE,EAAalvB,KAAI,SAAU0zB,EAAMp5C,GACrD,IAAIq5C,EAAsBzE,EAAa50C,GAAGk5C,GAAmBnE,EAAU,EACnEuE,EAAmBD,GAAuBtE,EAAU8D,GAAqB,EAC7E,OAAOS,GAAoB1B,EAAW,IAAOhN,EAAWgN,EAAW/M,CACrE,IACA,OAAO5e,EAAcA,EAAc,CAAC,EAAGsb,GAAM,CAAC,EAAG,CAC/C4R,gBAAiBA,GAErB,GACF,CAEA,SAASL,EAA2BxC,GAClC,OAAOA,EAAK5wB,KAAI,SAAU6hB,GACxB,IAAItsB,GAAO,EAAIy0B,EAAOgD,oBAAoBnL,EAAK+O,GAC/Cr7B,EAAOs+B,EAAuBhS,EAAKtsB,GACnC,IAAIu+B,EAAiBjS,EAAI2J,UACrB9J,EAAOoS,EAAepS,KACtB6K,EAAWuH,EAAevH,SAC1BD,EAAWwH,EAAexH,SAC1BgC,EAAewF,EAAexF,aAC9ByF,EAAWC,EAAYzH,EAAUD,EAAUC,EAAW,EAAI,EAAIA,EAAU+B,EAAc5M,GACtFuS,EAAS1+B,EAAKyK,KAAI,SAAU1B,GAC9B,OAAO01B,EAAYzH,EAAUD,EAAUhuB,EAAGgwB,EAAc5M,EAC1D,IACIwS,EAAkBD,EAAOj0B,KAAI,SAAUm0B,GACzC,MAAO,CAACJ,EAAUI,EACpB,IACA,OAAO5tB,EAAcA,EAAc,CAAC,EAAGsb,GAAM,CAAC,EAAG,CAC/CqS,gBAAiBA,GAErB,GACF,CAEA,SAASL,EAAuBO,EAASC,GACvC,IAAI9+B,EAAO6+B,EAAQ7+B,KACnB,OAAO8+B,EAAQr0B,KAAI,SAAU1B,EAAGhkB,GAC9B,MAA0B,kBAAZib,EAAKjb,GAAkBgkB,EAAI,IAC3C,IAAGgI,QAAO,SAAU9C,GAClB,OAAa,OAANA,CACT,GACF,CAEA,SAAS8vB,EAA0B1C,GACjC,OAAOA,EAAK5wB,KAAI,SAAU6hB,GACxB,IAAI4R,EAAkB5R,EAAI4R,gBACtBl+B,EAAOssB,EAAItsB,KAKf,OAJAA,EAAKrU,SAAQ,SAAUsiB,EAAGlpB,GACP,kBAANkpB,IACXiwB,EAAgBn5C,GAAK,KACvB,IACOisB,EAAcA,EAAc,CAAC,EAAGsb,GAAM,CAAC,EAAG,CAC/C4R,gBAAiBA,EAAgBntB,QAAO,SAAU6tB,GAChD,OAAa,OAANA,CACT,KAEJ,GACF,CAEA,SAASZ,EAA6B3C,GAepC,OAdAA,EAAK1vC,SAAQ,SAAU2gC,GACrB,IAAItsB,EAAOssB,EAAItsB,KACXk+B,EAAkB5R,EAAI4R,gBACtBS,EAAkBrS,EAAIqS,gBACtBI,EAAU/+B,EAAK+Q,QAAO,SAAU9C,GAClC,MAAoB,kBAANA,CAChB,IAAGlrB,OACCi8C,EAAad,EAAgBn7C,OAE7Bi8C,EAAaD,IACfb,EAAgBlkB,OAAO+kB,GACvBJ,EAAgB3kB,OAAO+kB,GAE3B,IACO1D,CACT,CAEA,SAASoD,EAAY9uC,EAAKD,EAAK7M,EAAOk2C,EAAc5M,GAClD,GAAqB,kBAAVtpC,EAAoB,OAAO,KACtC,IAAIo8C,EAAavvC,EAAMC,EACnBsuC,EAA2B,MAAT9R,EAAe,EAAI,EACrC+S,EAAWnG,EAAa,GAAGkF,GAAmBlF,EAAa,GAAGkF,GAC9DP,GAAW76C,EAAQ8M,GAAOsvC,EACX,IAAfA,IAAkBvB,EAAU,GAChC,IAAItuC,EAAMsuC,EAAUwB,EACpB,OAAO9vC,EAAM2pC,EAAa,GAAGkF,EAC/B,CAEA,SAASvC,EAAuBmD,GAC9B,IAAI3oB,EAAiB2oB,EAAQ3oB,eACzBD,EAAiB4oB,EAAQ5oB,eACzBsZ,EAASsP,EAAQtP,OACjBgL,EAAS4E,EAAuBN,GAChClyC,EAAQyyC,EAAsBP,GAClC,OAAOtE,EAAO9vB,KAAI,SAAU8L,GAC1B,MAAO,CACL/wB,KAAM,OACNxC,MAAOusC,EACPza,QAAS+pB,EAAQ7O,cAAcvB,KAC/BvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOA,EACP5pB,MAAOA,EAEX,GACF,CAEA,SAASwyC,EAAuBN,GAC9B,IAAI3I,EAAY2I,EAAQ3I,UACpBD,EAAY4I,EAAQ5I,UACpB0D,EAAezD,EAAUyD,aACzBxN,EAAO8J,EAAU9J,KACjB4M,EAAe9C,EAAU8C,aACzBxP,EAAQ8V,EAAsBR,GAC9BS,EAAY/V,EAAQ,EACpBgW,EAAoB,MAATpT,EAAe,EAAI,EAC9BqT,EAAY7F,EAAalvB,KAAI,SAAUm0B,GACzC,OAAOA,EAAE,EAAIW,EACf,IACIrgB,EAAQ,CAAC6Z,EAAa,GAAGwG,GAAWxG,EAAa,GAAGwG,IACpDE,EAAQvgB,EAAM,GACdwgB,EAAMxgB,EAAM,GAChB,OAAOsgB,EAAU/0B,KAAI,SAAU+lB,GAC7B,MAAa,MAATrE,EACK,CACLtrB,EAAG4+B,EACH/f,EAAG8Q,EAAS8O,EACZ10C,EAAG80C,EAAMD,EACT59C,EAAG0nC,GAGE,CACL1oB,EAAG2vB,EAAS8O,EACZ5f,EAAGggB,EACH90C,EAAG2+B,EACH1nC,EAAG49C,EAAQC,EAGjB,GACF,CAEA,SAASL,EAAsBR,GAC7B,IAAIjB,EAAoBiB,EAAQjB,kBAC5BV,EAAmB2B,EAAQ3B,iBAC3BlN,EAAgB6O,EAAQ7O,cACxBzG,EAAQyG,EAAczG,MAC1B,MAAqB,kBAAVA,EAA2BA,EACxB,SAAVA,EAAyBqU,EACtB3X,SAASsD,GAAS,IAAM2T,CACjC,CAEA,SAASkC,EAAsBP,GAC7B,OAAOA,EAAQ7O,cAAcrjC,KAC/B,CAEA,SAASgvC,EAAakD,GACpB,IAAIX,EAAkBW,EAAQX,gBAC1BhoB,EAAiB2oB,EAAQ3oB,eACzBD,EAAiB4oB,EAAQ5oB,eACzBsZ,EAASsP,EAAQtP,OACjB/pC,EAAOm6C,EAAWd,GACtB,OAAOX,EAAgBzzB,KAAI,SAAUoC,EAAK9nB,GACxC,MAAO,CACLS,KAAMA,EACNxC,MAAOusC,EACPrZ,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOqpB,EAAYf,EAAS95C,GAC5B4H,MAAOkzC,EAAYhB,EAAS95C,GAEhC,GACF,CAEA,SAAS46C,EAAWd,GAClB,IAAIpP,EAAYoP,EAAQpP,UACxB,MAAkB,gBAAdA,GAA6C,iBAAdA,EAAqC,WACjE,MACT,CAEA,SAASmQ,EAAYf,EAAS95C,GAC5B,IAAI0qC,EAAYoP,EAAQpP,UAExB,MAAkB,gBAAdA,EACKqQ,EAAoBjB,EAAS95C,GACb,iBAAd0qC,EACFsQ,EAAqBlB,EAAS95C,GAE9Bi7C,EAAkBnB,EAAS95C,EAEtC,CAEA,SAAS+6C,EAAoBjB,EAAS95C,GACpC,IAAI45C,EAAkBE,EAAQF,gBAC1BT,EAAkBW,EAAQX,gBAC1BvO,EAAWkP,EAAQlP,SACnBD,EAAgBmP,EAAQnP,cAExBuQ,GAAqB,EAAIt2B,EAAgB,YAAYg1B,EAAgB55C,GAAI,GACzE06C,EAAQQ,EAAmB,GAC3BP,EAAMO,EAAmB,GAEzBC,EAAehC,EAAgBn5C,GAC/Bo7C,EAAYxQ,EAAW,EACvBsG,EAAY4I,EAAQ5I,UAAU9J,KAC9B1f,EAAS,GAgBb,MAdkB,MAAdwpB,GACFxpB,EAAO,GAAK,CAACizB,EAAKQ,EAAeC,GACjC1zB,EAAO,GAAK,CAACizB,EAAKQ,EAAeC,GACjC1zB,EAAO,GAAK,CAACgzB,EAAOS,EAAeC,GACnC1zB,EAAO,GAAK,CAACgzB,EAAQ/P,EAAewQ,EAAeC,GAC/CT,EAAMD,EAAQ/P,GAAejjB,EAAOuN,OAAO,EAAG,KAElDvN,EAAO,GAAK,CAACyzB,EAAeC,EAAWT,GACvCjzB,EAAO,GAAK,CAACyzB,EAAeC,EAAWT,GACvCjzB,EAAO,GAAK,CAACyzB,EAAeC,EAAWV,GACvChzB,EAAO,GAAK,CAACyzB,EAAeC,EAAWV,EAAQ/P,GAC3C+P,EAAQC,EAAMhQ,GAAejjB,EAAOuN,OAAO,EAAG,IAG7C,CACLvN,OAAQA,EACRxf,OAAO,EAEX,CAEA,SAAS8yC,EAAqBlB,EAAS95C,GACrC,IAAI45C,EAAkBE,EAAQF,gBAC1BT,EAAkBW,EAAQX,gBAC1BvO,EAAWkP,EAAQlP,SACnBD,EAAgBmP,EAAQnP,cAExB0Q,GAAsB,EAAIz2B,EAAgB,YAAYg1B,EAAgB55C,GAAI,GAC1E06C,EAAQW,EAAoB,GAC5BV,EAAMU,EAAoB,GAE1BF,EAAehC,EAAgBn5C,GAC/Bo7C,EAAYxQ,EAAW,EACvBsG,EAAY4I,EAAQ5I,UAAU9J,KAC9B1f,EAAS,GAgBb,MAdkB,MAAdwpB,GACFxpB,EAAO,GAAK,CAACizB,EAAKQ,EAAeC,GACjC1zB,EAAO,GAAK,CAACizB,EAAKQ,EAAeC,GACjC1zB,EAAO,GAAK,CAACgzB,EAAOS,EAAeC,GACnC1zB,EAAO,GAAK,CAACgzB,EAAQ/P,EAAewQ,EAAeC,GAC/CT,EAAMD,EAAQ/P,GAAejjB,EAAOuN,OAAO,EAAG,KAElDvN,EAAO,GAAK,CAACyzB,EAAeC,EAAWT,GACvCjzB,EAAO,GAAK,CAACyzB,EAAeC,EAAWT,GACvCjzB,EAAO,GAAK,CAACyzB,EAAeC,EAAWV,GACvChzB,EAAO,GAAK,CAACyzB,EAAeC,EAAWV,EAAQ/P,GAC3C+P,EAAQC,EAAMhQ,GAAejjB,EAAOuN,OAAO,EAAG,IAG7C,CACLvN,OAAQA,EACRxf,OAAO,EAEX,CAEA,SAAS+yC,EAAkBnB,EAAS95C,GAClC,IAAI45C,EAAkBE,EAAQF,gBAC1BT,EAAkBW,EAAQX,gBAC1BvO,EAAWkP,EAAQlP,SAEnB0Q,GAAsB,EAAI12B,EAAgB,YAAYg1B,EAAgB55C,GAAI,GAC1E06C,EAAQY,EAAoB,GAC5BX,EAAMW,EAAoB,GAE1BH,EAAehC,EAAgBn5C,GAC/BkxC,EAAY4I,EAAQ5I,UAAU9J,KAC9B5V,EAAQ,CAAC,EAcb,MAZkB,MAAd0f,GACF1f,EAAM1V,EAAI4+B,EACVlpB,EAAMmJ,EAAIwgB,EAAevQ,EAAW,EACpCpZ,EAAM3rB,EAAI80C,EAAMD,EAChBlpB,EAAM10B,EAAI8tC,IAEVpZ,EAAM1V,EAAIq/B,EAAevQ,EAAW,EACpCpZ,EAAMmJ,EAAIggB,EACVnpB,EAAM3rB,EAAI+kC,EACVpZ,EAAM10B,EAAI49C,EAAQC,GAGbnpB,CACT,CAEA,SAASspB,EAAYhB,EAAS95C,GAC5B,IAAIorC,EAAW0O,EAAQ1O,SACnBjT,EAAW2hB,EAAQ3hB,SACnBvL,EAAQktB,EAAQltB,MAChBye,EAAmByO,EAAQzO,iBAC3BC,EAAoBwO,EAAQxO,kBAC5BiQ,EAAY,CAACnQ,EAASrlB,MAAQ6G,GAC9B2J,GAAgB,EAAImZ,EAAO/B,WAAW4N,EAAWpjB,EAASvL,OAE9D,GAAIye,EAAkB,CACpB,IAAImQ,EAAWlQ,EAAkBtrC,EAAIsrC,EAAkBttC,QACvDu4B,EAAgBilB,aAAoB34C,MAAQ24C,EAAW,CAACA,EAC1D,CAE6B,IAAzBjlB,EAAcv4B,QAAcu4B,EAAct2B,KAAKs2B,EAAc,IACjE,IAAIE,EAAiBglB,EAAkB3B,EAAS95C,GAChD,OAAO,EAAI0vC,EAAO/B,WAAW,CAC3BpX,cAAeA,EACfE,eAAgBA,EAChBD,aAAc,SACdE,aAAc,QACb0U,EACL,CAEA,SAASqQ,EAAkB3B,EAAS95C,GAClC,IAAI45C,EAAkBE,EAAQF,gBAC1BT,EAAkBW,EAAQX,gBAC1Bl+B,EAAO6+B,EAAQ7+B,KACfygC,EAAqB5B,EAAQ5I,UAC7B8C,EAAe0H,EAAmB1H,aAClC5M,EAAOsU,EAAmBtU,KAE1BuU,GAAsB,EAAI/2B,EAAgB,YAAYg1B,EAAgB55C,GAAI,GAC1E06C,EAAQiB,EAAoB,GAC5BhB,EAAMgB,EAAoB,GAE1BR,EAAehC,EAAgBn5C,GAC/BlC,EAAQmd,EAAKjb,GAEbm0C,GAAgB,EAAIvvB,EAAgB,YAAYovB,EAAc,GAC9DiB,EAAYd,EAAc,GAC1BxO,EAAUwO,EAAc,GAExB4C,EAA0B,MAAT3P,EAAe,EAAI,EACpCuS,EAASgB,EAMb,OAJKb,EAAQ3hB,SAASgT,QACpBwO,EAAS77C,EAAQ,EAAIm3C,EAAU8B,GAAkBpR,EAAQoR,IAG9C,MAAT3P,EACK,CAAC+T,EAAcxB,EAAQwB,EAAcT,GAErC,CAACf,EAAQwB,EAAcT,EAAOS,EAEzC,CAEA,SAAStE,EAAkBiD,GACzB,IAAInR,EAAUiO,EAAakD,GACvBpP,EAAYoP,EAAQpP,UAcxB,OAbA/B,EAAQ/hC,SAAQ,SAAUyoB,GACxB,IAAImC,EAAQnC,EAAOmC,MAGjBA,EADgB,gBAAdkZ,EACMkR,EAAyBpqB,EAAOsoB,GACjB,iBAAdpP,EACDmR,EAA0BrqB,EAAOsoB,GAEjCgC,EAAuBtqB,EAAOsoB,GAGxCzqB,EAAOmC,MAAQA,CACjB,IACOmX,CACT,CAEA,SAASiT,EAAyBpqB,EAAOsoB,GACvC,IAAI1S,EAAO0S,EAAQ5I,UAAU9J,KAC7B5V,GAAQ,EAAI5F,EAAM6E,WAAWe,GAC7B,IAAIuqB,EAASvqB,EACT9J,EAASq0B,EAAOr0B,OAChBzpB,EAAiB,MAATmpC,EAAe,EAAI,EAC3BsT,EAAQhzB,EAAO,GAAGzpB,GAItB,OAHAypB,EAAO9gB,SAAQ,SAAUoF,GACvB,OAAOA,EAAM/N,GAASy8C,CACxB,IACOlpB,CACT,CAEA,SAASqqB,EAA0BrqB,EAAOsoB,GACxC,IAAI1S,EAAO0S,EAAQ5I,UAAU9J,KAC7B5V,GAAQ,EAAI5F,EAAM6E,WAAWe,GAC7B,IAAIwqB,EAAUxqB,EACV9J,EAASs0B,EAAQt0B,OACjBzpB,EAAiB,MAATmpC,EAAe,EAAI,EAC3BsT,EAAQhzB,EAAO,GAAGzpB,GAItB,OAHAypB,EAAO9gB,SAAQ,SAAUoF,GACvB,OAAOA,EAAM/N,GAASy8C,CACxB,IACOlpB,CACT,CAEA,SAASsqB,EAAuBtqB,EAAOsoB,GACrC,IAAI1S,EAAO0S,EAAQ5I,UAAU9J,KACzBtrB,EAAI0V,EAAM1V,EACV6e,EAAInJ,EAAMmJ,EACV90B,EAAI2rB,EAAM3rB,EACV/I,EAAI00B,EAAM10B,EASd,MAPa,MAATsqC,EACFvhC,EAAI,GAEJ80B,GAAQ79B,EACRA,EAAI,GAGC,CACLgf,EAAGA,EACH6e,EAAGA,EACH90B,EAAGA,EACH/I,EAAGA,EAEP,CAEA,SAASg6C,EAAgBnqB,EAAQmtB,EAAS95C,EAAGooC,GAC3C,IAAIjtC,EAASitC,EAAQH,MAAM9sC,OACvBsF,EAAOm6C,EAAWd,GAElBntB,EAAO3sB,IAAM2sB,EAAO3sB,GAAG,GAAGS,OAASA,IACrCksB,EAAO3sB,GAAG4G,SAAQ,SAAUgT,GAC1B,OAAOze,EAAOu0B,SAAS9V,EACzB,IACA+S,EAAO3sB,GAAK,KAEhB,CAEA,SAAS0wC,EAAeoJ,GACtB,IAAI3oB,EAAiB2oB,EAAQ3oB,eACzBD,EAAiB4oB,EAAQ5oB,eACzBsZ,EAASsP,EAAQtP,OACjBgL,EAASG,EAAemE,GACxBlyC,EAAQiuC,GAAciE,GAC1B,OAAOtE,EAAO9vB,KAAI,SAAU8L,GAC1B,MAAO,CACL/wB,KAAM,OACNxC,MAAOusC,EACPza,QAAS+pB,EAAQ5O,MAAMxB,KACvBvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOA,EACP5pB,MAAOA,EAEX,GACF,CAEA,SAAS+tC,EAAemE,GACtB,IAAImC,EAAWC,EAAmBpC,GAC9BhsB,EAAWquB,EAAkBrC,GACjC,OAAOhsB,EAASpI,KAAI,SAAUrb,EAAKrK,GACjC,MAAO,CACL8tB,SAAUzjB,EACVu2B,QAASqb,EAASj8C,GAEtB,GACF,CAEA,SAASk8C,EAAmBpC,GAC1B,IAAI7+B,EAAO6+B,EAAQ7+B,KACfiwB,EAAQ4O,EAAQ5O,MAChBZ,EAAYY,EAAMZ,UAMtB,GALArvB,EAAOA,EAAK+Q,QAAO,SAAU9C,GAC3B,MAAoB,kBAANA,CAChB,IAAGxD,KAAI,SAAUwD,GACf,OAAOA,EAAEhrB,UACX,KACKosC,EAAW,OAAOrvB,EACvB,IAAIza,GAAO,EAAIowB,EAAS,YAAY0Z,GACpC,MAAa,WAAT9pC,EAA0Bya,EAAKyK,KAAI,SAAUwD,GAC/C,OAAOohB,EAAU1yB,QAAQ,UAAWsR,EACtC,IACa,aAAT1oB,EAA4Bya,EAAKyK,KAAI,SAAUwD,EAAGlpB,GACpD,OAAOsqC,EAAU,CACfxsC,MAAOorB,EACPjrB,MAAO+B,GAEX,IACOib,CACT,CAEA,SAASkhC,EAAkBrC,GACzB,IAAI5O,EAAQ4O,EAAQ5O,MAChB0O,EAAkBE,EAAQF,gBAC1BT,EAAkBW,EAAQX,gBAC1BrrB,EAAWod,EAAMpd,SACjB3E,EAAS+hB,EAAM/hB,OACfie,EAAO0S,EAAQ5I,UAAU9J,KAC7B,OAAOwS,EAAgBl0B,KAAI,SAAU0U,EAAQp6B,GAC3C,IAAIq6B,GAAS,EAAIzV,EAAgB,YAAYwV,EAAQ,GACjDsgB,EAAQrgB,EAAO,GACfsgB,EAAMtgB,EAAO,GAEb8gB,EAAehC,EAAgBn5C,GAC/BqK,EAAM,CAACswC,EAAKQ,GAWhB,MATiB,WAAbrtB,IACFzjB,EAAM,CAACqwC,EAAOS,IAGC,WAAbrtB,IACFzjB,EAAM,EAAEqwC,EAAQC,GAAO,EAAGQ,IAGf,MAAT/T,GAAc/8B,EAAI2sB,UACfolB,GAAiB/xC,EAAK8e,EAC/B,GACF,CAEA,SAASizB,GAAiB5hB,EAAQC,GAChC,IAAIC,GAAS,EAAI9V,EAAgB,YAAY4V,EAAQ,GACjD1e,EAAI4e,EAAO,GACXC,EAAID,EAAO,GAEXE,GAAS,EAAIhW,EAAgB,YAAY6V,EAAQ,GACjDoK,EAAKjK,EAAO,GACZkK,EAAKlK,EAAO,GAEhB,MAAO,CAAC9e,EAAI+oB,EAAIlK,EAAImK,EACtB,CAEA,SAAS+Q,GAAciE,GACrB,IAAIltB,EAAQktB,EAAQltB,MAChBhlB,EAAQkyC,EAAQ5O,MAAMtjC,MACtBy0C,EAAKvC,EAAQ3hB,SAASvL,MAK1B,OAJIyvB,EAAGr+C,SAAQ4uB,EAAQyvB,EAAG,IAC1Bz0C,GAAQ,EAAI8nC,EAAO/B,WAAW,CAC5B5nB,KAAM6G,GACLhlB,GACIA,CACT,C,qCC9yBa4c,EAAA,OAEb,IAAIC,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQyqC,MAAQA,EAEhB,IAAInc,EAAmB/G,EAAuBD,EAAQ,QAElDoM,EAAWnM,EAAuBD,EAAQ,QAE1CI,EAAkBH,EAAuBD,EAAQ,QAEjDK,EAAsBJ,EAAuBD,EAAQ,QAErDgrB,EAAWhrB,EAAQ,OAEnB+oB,EAAS/oB,EAAQ,OAEjBoH,EAAQpH,EAAQ,OAEhBkrB,EAASlrB,EAAQ,OAEjBkH,EAASlH,EAAQ,MAErB,SAASnQ,EAAQ5R,EAAQspB,GAAkB,IAAIhoB,EAAO/E,OAAO+E,KAAKtB,GAAS,GAAIzD,OAAOgK,sBAAuB,CAAE,IAAIlJ,EAAUd,OAAOgK,sBAAsBvG,GAAaspB,IAAgBjsB,EAAUA,EAAQksB,QAAO,SAAUre,GAAO,OAAO3O,OAAOyJ,yBAAyBhG,EAAQkL,GAAKrE,UAAY,KAAIvF,EAAK9D,KAAKnB,MAAMiF,EAAMjE,EAAU,CAAE,OAAOiE,CAAM,CAEpV,SAASkoB,EAAcvqB,GAAU,IAAK,IAAI1B,EAAI,EAAGA,EAAIjB,UAAUf,OAAQgC,IAAK,CAAE,IAAIU,EAAyB,MAAhB3B,UAAUiB,GAAajB,UAAUiB,GAAK,CAAC,EAAOA,EAAI,EAAKqU,EAAQrV,OAAO0B,IAAS,GAAMkG,SAAQ,SAAU/G,IAAO,EAAI2rB,EAAiB,YAAY9pB,EAAQ7B,EAAKa,EAAOb,GAAO,IAAeb,OAAOktB,0BAA6BltB,OAAOuJ,iBAAiB7G,EAAQ1C,OAAOktB,0BAA0BxrB,IAAmB2T,EAAQrV,OAAO0B,IAASkG,SAAQ,SAAU/G,GAAOb,OAAOC,eAAeyC,EAAQ7B,EAAKb,OAAOyJ,yBAAyB/H,EAAQb,GAAO,GAAM,CAAE,OAAO6B,CAAQ,CAEtiB,SAASimC,EAAMM,GACb,IAAIlB,EAAShoC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9EipC,EAASjB,EAAOiB,OACfA,IAAQA,EAAS,IACtB,IAAIsU,GAAS,EAAI5M,EAAO6G,gBAAgBvO,EAAQuF,EAAO/B,YAAa,SACpE8Q,EAASC,EAAiBD,EAAQrU,GAClCqU,EAASE,EAAiBF,EAAQrU,GAClCqU,EAASG,EAAiCH,EAAQrU,GAClDqU,EAASI,EAAqBJ,EAAQrU,GACtCqU,EAASK,EAAuBL,EAAQrU,GACxCqU,EAASM,EAA2BN,EAAQrU,GAC5CqU,EAASO,EAAgCP,EAAQrU,GACjDqU,EAASQ,EAAoBR,EAAQrU,GACrCqU,EAASS,EAA0BT,EAAQrU,GAC3CqU,EAASU,EAAyBV,EAAQrU,IAC1C,EAAIuH,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQsU,EACRz8C,IAAK,gBACLqoC,eAAgB+U,KAElB,EAAIzN,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQsU,EACRz8C,IAAK,iBACLqoC,eAAgBgV,KAElB,EAAI1N,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQsU,EACRz8C,IAAK,qBACLqoC,eAAgBiV,EAChBhU,oBAAqBiU,KAEvB,EAAI5N,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQsU,EACRz8C,IAAK,WACLqoC,eAAgBmV,EAChBlU,oBAAqBmU,EACrB5U,aAAc6U,KAEhB,EAAI/N,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQsU,EACRz8C,IAAK,eACLqoC,eAAgBsV,EAChBrU,oBAAqBsU,KAEvB,EAAIjO,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQsU,EACRz8C,IAAK,eACLqoC,eAAgBwV,GAEpB,CAEA,SAASnB,EAAiBD,EAAQrU,GAChC,IAAIzb,EAAOyb,EAAM9sC,OAAOqxB,KASxB,OARA8vB,EAAO11C,SAAQ,SAAU+2C,GACvB,IAAIlS,EAASkS,EAAUlS,OACvBA,EAASA,EAAO/lB,KAAI,SAAUrb,EAAKrK,GACjC,MAAmB,kBAARqK,EAAyBA,EAC7B62B,SAAS72B,GAAO,IAAMmiB,EAAKxsB,EACpC,IACA29C,EAAUlS,OAASA,CACrB,IACO6Q,CACT,CAEA,SAASE,EAAiBF,EAAQrU,GAChC,IAAIzb,EAAOyb,EAAM9sC,OAAOqxB,KACpBoxB,EAAYz7C,KAAKyI,IAAI9L,MAAMqD,MAAM,EAAI0iB,EAAoB,YAAY2H,IAAS,EAUlF,OATA8vB,EAAO11C,SAAQ,SAAU+2C,GACvB,IAAItX,EAASsX,EAAUtX,OAED,kBAAXA,IACTA,EAASnF,SAASmF,GAAU,IAAMuX,GAGpCD,EAAUtX,OAASA,CACrB,IACOiW,CACT,CAEA,SAASG,EAAiCH,EAAQrU,GAChD,IAAIzb,EAAOyb,EAAM9sC,OAAOqxB,KACpBoxB,EAAYz7C,KAAKyI,IAAI9L,MAAMqD,MAAM,EAAI0iB,EAAoB,YAAY2H,IAAS,EAelF,OAdA8vB,EAAO11C,SAAQ,SAAU+2C,GACvB,IAAItX,EAASsX,EAAUtX,OACnBprB,EAAO0iC,EAAU1iC,KACjB0wB,EAAegS,EAAUhS,aAC7B1wB,EAAKrU,SAAQ,SAAU4a,GACrB,IAAIq8B,EAAYr8B,EAAK6kB,OACjBtQ,EAAYvU,EAAKuU,UAChB8nB,IAAWA,EAAYxX,GACH,kBAAdwX,IAAwBA,EAAY3c,SAAS2c,GAAa,IAAMD,GAC3Ep8B,EAAK6kB,OAASwX,EACT9nB,IAAWA,EAAY4V,GAC5BnqB,EAAKuU,UAAYA,CACnB,GACF,IACOumB,CACT,CAEA,SAASI,EAAqBJ,EAAQrU,GAgBpC,OAfAqU,EAAO11C,SAAQ,SAAU+2C,GACvB,IAAI9hB,EAAa8hB,EAAU9hB,WACvBC,EAAW6hB,EAAU7hB,SACrB7gB,EAAO0iC,EAAU1iC,KACjBrQ,EAAM+yC,EAAU/yC,IAChBD,EAAMgzC,EAAUhzC,IAChBmzC,EAAahiB,EAAWD,EACxBqe,EAAavvC,EAAMC,EACvBqQ,EAAKrU,SAAQ,SAAU4a,GACrB,IAAI1jB,EAAQ0jB,EAAK1jB,MACbigD,EAAY57C,KAAK6iB,KAAKlnB,EAAQ8M,GAAOsvC,EAAa4D,GACtDt8B,EAAKqa,WAAaA,EAClBra,EAAKsa,SAAWD,EAAakiB,CAC/B,GACF,IACOzB,CACT,CAEA,SAASK,EAAuBL,EAAQrU,GAWtC,OAVAqU,EAAO11C,SAAQ,SAAU+2C,GACvB,IAAI1iC,EAAO0iC,EAAU1iC,KACrBA,EAAKrU,SAAQ,SAAU4a,GACrB,IAAIoL,EAAQpL,EAAKoL,MACbuL,EAAW3W,EAAK2W,SACfA,GAAaA,EAASn6B,SAAQm6B,EAAWvL,GACxCuL,aAAoBt1B,QAAQs1B,EAAW,CAACA,IAC9C3W,EAAK2W,SAAWA,CAClB,GACF,IACOmkB,CACT,CAEA,SAASM,EAA2BN,EAAQrU,GA4B1C,OA3BAqU,EAAO11C,SAAQ,SAAU+2C,GACvB,IAAI9hB,EAAa8hB,EAAU9hB,WACvBC,EAAW6hB,EAAU7hB,SACrB4P,EAAWiS,EAAUjS,SACrBD,EAASkS,EAAUlS,OACnBpF,EAASsX,EAAUtX,OACnBsF,EAAegS,EAAUhS,aACzBvB,EAAWuT,EAAUvT,SACrByB,EAAazB,EAASyB,WACtB9V,EAAYqU,EAASxiC,MAAMmuB,UAC3BioB,EAASliB,EAAWD,EACpBoiB,EAAc5X,EAASsF,EAAe,EACtCuS,EAAcD,EAAcpS,EAC5BsS,EAAWH,GAAUtS,EAAW,GAChC0S,EAAY,EAAIj8C,KAAK40B,GAAKsP,EAAS2X,GAAoB,EAAV77C,KAAK40B,IAClD5N,EAAShnB,KAAK0I,KAAKkrB,EAAY,GAAKqoB,EAAYJ,EACpDL,EAAUU,WAAa,GACvBV,EAAUW,gBAAkB,GAC5BX,EAAU/I,aAAe,IAAI/xC,MAAM6oC,GAAU3lB,KAAK,GAAGL,KAAI,SAAUoC,EAAK9nB,GACtE,IAAIu+C,EAAQ1iB,EAAasiB,EAAWn+C,EAKpC,OAJU,IAANA,IAASu+C,GAASp1B,GAClBnpB,IAAM0rC,EAAW,IAAG6S,GAASp1B,GACjCw0B,EAAUU,WAAWr+C,GAAKu+C,EAC1BZ,EAAUW,gBAAgBt+C,GAAKk+C,EACxB,CAACtyB,EAAMwW,qBAAqBtjC,WAAM,GAAQ,EAAI+lB,EAAoB,YAAY4mB,GAAQxuC,OAAO,CAACghD,EAAaM,KAAU3yB,EAAMwW,qBAAqBtjC,WAAM,GAAQ,EAAI+lB,EAAoB,YAAY4mB,GAAQxuC,OAAO,CAACihD,EAAaK,KACxO,GACF,IACOjC,CACT,CAEA,SAASO,EAAgCP,EAAQrU,GAsB/C,OArBAqU,EAAO11C,SAAQ,SAAU+2C,GACvB,IAAIlS,EAASkS,EAAUlS,OACnB6S,EAAkBX,EAAUW,gBAC5BD,EAAaV,EAAUU,WACvBvS,EAAW6R,EAAUtT,UAAUyB,SAC/Bhe,EAAWuwB,EAAW34B,KAAI,SAAU64B,EAAOv+C,GAC7C,OAAO4rB,EAAMwW,qBAAqBtjC,WAAM,GAAQ,EAAI+lB,EAAoB,YAAY4mB,GAAQxuC,OAAO,CAACqhD,EAAgBt+C,GAAK8rC,EAAUuS,EAAWr+C,KAChJ,IACI+1C,EAAQjoB,EAASpI,KAAI,SAAUkB,GACjC,IAAIC,GAAQ,EAAIjC,EAAgB,YAAYgC,EAAM,GAC9C9K,EAAI+K,EAAM,GACV8T,EAAI9T,EAAM,GAEd,MAAO,CACLwP,UAAWva,EAAI2vB,EAAO,GAAK,QAAU,OACrCnV,aAAcqE,EAAI8Q,EAAO,GAAK,SAAW,MAE7C,IACAkS,EAAUa,cAAgB1wB,EAC1B6vB,EAAUc,WAAa1I,CACzB,IACOuG,CACT,CAEA,SAASQ,EAAoBR,EAAQrU,GA+BnC,OA9BAqU,EAAO11C,SAAQ,SAAU+2C,GACvB,IAAItT,EAAYsT,EAAUtT,UACtBz/B,EAAM+yC,EAAU/yC,IAChBD,EAAMgzC,EAAUhzC,IAChB+gC,EAAWiS,EAAUjS,SACrBzwB,EAAOovB,EAAUpvB,KACjBqvB,EAAYD,EAAUC,UACtBoU,GAAY/zC,EAAMC,IAAQ8gC,EAAW,GACrC5tC,EAAQ,IAAI+E,MAAM6oC,GAAU3lB,KAAK,GAAGL,KAAI,SAAUoC,EAAK9nB,GACzD,OAAOkhC,SAASt2B,EAAM8zC,EAAW1+C,EACnC,IACI2+C,GAAgB,EAAI/tB,EAAS,YAAY0Z,GAC7CrvB,GAAO,EAAIy0B,EAAO/B,WAAW7vC,EAAOmd,GAAMyK,KAAI,SAAU1B,EAAGhkB,GACzD,IAAIkrC,EAAQlnB,EAaZ,MAXsB,WAAlB26B,IACFzT,EAAQZ,EAAU1yB,QAAQ,UAAWoM,IAGjB,aAAlB26B,IACFzT,EAAQZ,EAAU,CAChBxsC,MAAOkmB,EACP/lB,MAAO+B,KAIJkrC,CACT,IACAb,EAAUpvB,KAAOA,CACnB,IACOqhC,CACT,CAEA,SAASS,EAA0BT,EAAQrU,GAyBzC,OAxBAqU,EAAO11C,SAAQ,SAAU+2C,GACvB,IAAI1iC,EAAO0iC,EAAU1iC,KACjBgxB,EAAU0R,EAAU1R,QACpBR,EAASkS,EAAUlS,OACnB3d,EAAWme,EAAQne,SACnB3E,EAAS8iB,EAAQ9iB,OACjBy1B,EAAkB3jC,EAAKyK,KAAI,SAAUoB,GACvC,IAAI+U,EAAa/U,EAAM+U,WACnBC,EAAWhV,EAAMgV,SACjBuK,EAASvf,EAAMuf,OACfr6B,EAAQ,KAUZ,MARiB,WAAb8hB,EACF9hB,EAAQy/B,EACc,UAAb3d,EACT9hB,EAAQ4f,EAAMwW,qBAAqBtjC,WAAM,GAAQ,EAAI+lB,EAAoB,YAAY4mB,GAAQxuC,OAAO,CAACopC,EAAQxK,KACvF,QAAb/N,IACT9hB,EAAQ4f,EAAMwW,qBAAqBtjC,WAAM,GAAQ,EAAI+lB,EAAoB,YAAY4mB,GAAQxuC,OAAO,CAACopC,EAAQvK,MAGxGsgB,EAAiBpwC,EAAOmd,EACjC,IACAw0B,EAAUiB,gBAAkBA,CAC9B,IACOtC,CACT,CAEA,SAASU,EAAyBV,EAAQrU,GAmBxC,OAlBAqU,EAAO11C,SAAQ,SAAU+2C,GACvB,IAAI1iC,EAAO0iC,EAAU1iC,KACjBgxB,EAAU0R,EAAU1R,QACpB3B,EAAY2B,EAAQ3B,UACpBqU,GAAgB,EAAI/tB,EAAS,YAAY0Z,GACzC2R,EAAWhhC,EAAKyK,KAAI,SAAUm5B,GAChC,IAAIje,EAAUie,EAAS/gD,MAQvB,MANsB,WAAlB6gD,IACF/d,EAAU0J,EAAU1yB,QAAQ,UAAW,QACvCgpB,EAAUA,EAAQhpB,QAAQ,SAAUinC,EAASp+C,OAGzB,aAAlBk+C,IAA8B/d,EAAU0J,EAAUuU,IAC/Cje,EAAQ1iC,UACjB,IACAy/C,EAAUmB,eAAiB7C,CAC7B,IACOK,CACT,CAEA,SAASF,EAAiBn1B,EAAO0S,GAC/B,IAAIC,GAAQ,EAAIhV,EAAgB,YAAYqC,EAAO,GAC/CnL,EAAI8d,EAAM,GACVe,EAAIf,EAAM,GAEVC,GAAQ,EAAIjV,EAAgB,YAAY+U,EAAO,GAC/CkL,EAAKhL,EAAM,GACXiL,EAAKjL,EAAM,GAEf,MAAO,CAAC/d,EAAI+oB,EAAIlK,EAAImK,EACtB,CAEA,SAASmY,EAAkBU,GACzB,IAAI/I,EAAe+I,EAAU/I,aACzBzjB,EAAiBwsB,EAAUxsB,eAC3BD,EAAiBysB,EAAUzsB,eAC3BsZ,EAASmT,EAAUnT,OACvB,OAAOoK,EAAalvB,KAAI,SAAUoC,EAAK9nB,GACrC,MAAO,CACLS,KAAM,WACNxC,MAAOusC,EACPza,QAAS4tB,EAAUvT,SAASV,KAC5BvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOutB,EAAiBpB,EAAW39C,GACnC4H,MAAOo3C,EAAiBrB,EAAW39C,GAEvC,GACF,CAEA,SAAS++C,EAAiBpB,EAAW39C,GACnC,IAAI40C,EAAe+I,EAAU/I,aAC7B,MAAO,CACLltB,OAAQktB,EAAa50C,GAEzB,CAEA,SAASg/C,EAAiBrB,EAAW39C,GACnC,IAAI4H,EAAQ+1C,EAAUvT,SAASxiC,MAC/B,OAAOA,CACT,CAEA,SAASs1C,EAAmBS,GAC1B,IAAIa,EAAgBb,EAAUa,cAC1BrtB,EAAiBwsB,EAAUxsB,eAC3BD,EAAiBysB,EAAUzsB,eAC3BsZ,EAASmT,EAAUnT,OACvB,OAAOgU,EAAc94B,KAAI,SAAUoC,EAAK9nB,GACtC,MAAO,CACLS,KAAM,OACNxC,MAAOusC,EACPza,QAAS4tB,EAAUtT,UAAUX,KAC7BvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOytB,EAAkBtB,EAAW39C,GACpC4H,MAAOs3C,EAAkBvB,EAAW39C,GAExC,GACF,CAEA,SAASi/C,EAAkBtB,EAAW39C,GACpC,IAAIw+C,EAAgBb,EAAUa,cAC1BvjC,EAAO0iC,EAAUtT,UAAUpvB,KAC/B,MAAO,CACL2lB,QAAS3lB,EAAKjb,GAAG9B,WACjB4vB,SAAU0wB,EAAcx+C,GAE5B,CAEA,SAASk/C,EAAkBvB,EAAW39C,GACpC,IAAIy+C,EAAad,EAAUc,WACvBpU,EAAYsT,EAAUtT,UACtBziC,EAAQyiC,EAAUziC,MACtB,OAAO,EAAI8nC,EAAO/B,WAAW1hB,EAAc,CAAC,EAAGwyB,EAAWz+C,IAAK4H,EACjE,CAEA,SAASu1C,EAAuBQ,GAC9B,IAAIxsB,EAAiBwsB,EAAUxsB,eAC3BD,EAAiBysB,EAAUzsB,eAC3BsZ,EAASmT,EAAUnT,OACvB,MAAO,CAAC,CACN/pC,KAAM,MACNxC,MAAOusC,EACPza,QAAS4tB,EAAUxR,cAAczC,KACjCvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAO2tB,EAA2BxB,GAClC/1C,MAAOw3C,EAA2BzB,IAEtC,CAEA,SAASwB,EAA2BxB,GAClC,IAAI9hB,EAAa8hB,EAAU9hB,WACvBC,EAAW6hB,EAAU7hB,SACrB2P,EAASkS,EAAUlS,OACnBpF,EAASsX,EAAUtX,OACvB,MAAO,CACL/M,GAAImS,EAAO,GACXlS,GAAIkS,EAAO,GACX1iB,EAAGsd,EACHxK,WAAYA,EACZC,SAAUA,EAEd,CAEA,SAASsjB,EAA2BzB,GAClC,IAAIxR,EAAgBwR,EAAUxR,cAC1BR,EAAegS,EAAUhS,aACzB/jC,EAAQukC,EAAcvkC,MAC1B,OAAO,EAAI8nC,EAAO/B,WAAW,CAC3B5X,UAAW4V,GACV/jC,EACL,CAEA,SAASw1C,EAA4BO,GACnC,IAAItuB,EAAS8tB,EAAuBQ,GAAW,GAE3CnsB,EAAQvF,EAAc,CAAC,EAAGoD,EAAOmC,OAIrC,OAFAA,EAAMsK,SAAWzM,EAAOmC,MAAMqK,WAC9BxM,EAAOmC,MAAQA,EACR,CAACnC,EACV,CAEA,SAASguB,EAAaM,GACpB,IAAI1iC,EAAO0iC,EAAU1iC,KACjBkW,EAAiBwsB,EAAUxsB,eAC3BD,EAAiBysB,EAAUzsB,eAC3BsZ,EAASmT,EAAUnT,OACvB,OAAOvvB,EAAKyK,KAAI,SAAUoC,EAAK9nB,GAC7B,MAAO,CACLS,KAAM,QACNxC,MAAOusC,EACPrZ,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAO6tB,EAAiB1B,EAAW39C,GACnC4H,MAAO03C,EAAiB3B,EAAW39C,GAEvC,GACF,CAEA,SAASq/C,EAAiB1B,EAAW39C,GACnC,IAAIib,EAAO0iC,EAAU1iC,KACjBwwB,EAASkS,EAAUlS,OACnB8T,EAAmB5B,EAAU7hB,SAC7B0jB,EAAUvkC,EAAKjb,GACfqmC,EAASmZ,EAAQnZ,OACjBxK,EAAa2jB,EAAQ3jB,WACrBC,EAAW0jB,EAAQ1jB,SACnB2jB,EAAgBD,EAAQC,cAE5B,OADIA,IAAeF,EAAmBzjB,GAC/B,CACLxC,GAAImS,EAAO,GACXlS,GAAIkS,EAAO,GACX1iB,EAAGsd,EACHxK,WAAYA,EACZC,SAAUA,EACVyjB,iBAAkBA,EAEtB,CAEA,SAASD,EAAiB3B,EAAW39C,GACnC,IAAIib,EAAO0iC,EAAU1iC,KACjB2wB,EAAgB+R,EAAU/R,cAC1B8T,EAAWzkC,EAAKjb,GAChB+1B,EAAY2pB,EAAS3pB,UACrBoC,EAAWunB,EAASvnB,SAIxB,OAHAA,EAAWA,EAASzS,KAAI,SAAU7mB,GAChC,OAAO,EAAI6sB,EAAOyL,cAAct4B,EAClC,KACO,EAAI6wC,EAAO/B,WAAW,CAC3B5X,UAAWA,EACXoC,SAAUA,GACTyT,EACL,CAEA,SAAS0R,EAAkBK,GACzB,IAAIhV,EAAU0U,EAAaM,GAO3B,OANAhV,EAAQjjB,KAAI,SAAU2J,GACpB,IAAImC,EAAQvF,EAAc,CAAC,EAAGoD,EAAOmC,OAErCA,EAAMsK,SAAWzM,EAAOmC,MAAMqK,WAC9BxM,EAAOmC,MAAQA,CACjB,IACOmX,CACT,CAEA,SAAS4U,EAAgBpwB,EAAOkC,GAC9B,IAAIswB,EAAgBxyB,EAAMvlB,MAAMuwB,SAC5BynB,EAAWD,EAAc3hD,OACzB6hD,EAAUxwB,EAAOznB,MAAMuwB,SAASn6B,OAEpC,GAAI4hD,EAAWC,EACbF,EAAc1qB,OAAO4qB,OAChB,CACL,IAAIC,EAAOH,EAAcxhD,OAAO,GAAG,GACnCwhD,EAAc1/C,KAAKnB,MAAM6gD,GAAe,EAAI96B,EAAoB,YAAY,IAAIhiB,MAAMg9C,EAAUD,GAAU75B,KAAK,GAAGL,KAAI,SAAUoC,GAC9H,OAAO,EAAIjD,EAAoB,YAAYi7B,EAC7C,KACF,CACF,CAEA,SAAStC,EAAiBG,GACxB,IAAIxsB,EAAiBwsB,EAAUxsB,eAC3BD,EAAiBysB,EAAUzsB,eAC3Bua,EAASkS,EAAUlS,OACnBjB,EAASmT,EAAUnT,OACvB,MAAO,CAAC,CACN/pC,KAAM,WACNxC,MAAOusC,EACPza,QAAS4tB,EAAU5R,QAAQrC,KAC3BvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOuuB,EAAgBpC,GACvB/1C,MAAOo4C,EAAgBrC,GACvB/rB,eAAgB,SAAwB9J,EAAKqF,GAC3CA,EAAMvlB,MAAMuqB,YAAcsZ,CAC5B,GAEJ,CAEA,SAASsU,EAAgBpC,GACvB,IAAIlS,EAASkS,EAAUlS,OACvB,MAAO,CACL/jB,OAAQu4B,EAAiBxU,GACzBvjC,OAAO,EAEX,CAEA,SAAS83C,EAAgBrC,GACvB,IAAI9hB,EAAa8hB,EAAU9hB,WACvBC,EAAW6hB,EAAU7hB,SACrBlxB,EAAM+yC,EAAU/yC,IAChBD,EAAMgzC,EAAUhzC,IAChBsQ,EAAO0iC,EAAU1iC,KACjB8wB,EAAU4R,EAAU5R,QACpBN,EAASkS,EAAUlS,OACnBO,EAAaD,EAAQC,WACrBpkC,EAAQmkC,EAAQnkC,MAChB9J,EAAQmd,EAAK+wB,GAAc/wB,EAAK+wB,GAAYluC,MAAQ,EACpDygD,GAASzgD,EAAQ8M,IAAQD,EAAMC,IAAQkxB,EAAWD,GAAcA,EAAa15B,KAAK40B,GAAK,EAC3F,OAAO,EAAI2Y,EAAO/B,WAAW,CAC3Bvb,QAAQ,EAAIsd,EAAOwQ,eAAe3B,GAClClsB,MAAO,CAAC,EAAG,GACXF,YAAasZ,GACZ7jC,EACL,CAEA,SAASq4C,EAAiB/lB,GACxB,IAAIC,GAAQ,EAAIvV,EAAgB,YAAYsV,EAAO,GAC/Cpe,EAAIqe,EAAM,GACVQ,EAAIR,EAAM,GAEVgmB,EAAS,CAACrkC,EAAG6e,EAAI,IACjBylB,EAAS,CAACtkC,EAAI,EAAG6e,GACjB0lB,EAAS,CAACvkC,EAAG6e,EAAI,IACjB2lB,EAAS,CAACxkC,EAAI,EAAG6e,GACrB,MAAO,CAACwlB,EAAQC,EAAQC,EAAQC,EAClC,CAEA,SAAS7C,EAAsBE,GAC7B,IAAI9hB,EAAa8hB,EAAU9hB,WACvBxM,EAASmuB,EAAiBG,GAAW,GAEzC,OADAtuB,EAAOznB,MAAMwqB,QAAS,EAAIsd,EAAOwQ,eAAerkB,EAAa15B,KAAK40B,GAAK,GAChE,CAAC1H,EACV,CAEA,SAASquB,EAAiBC,GACxB,IAAIiB,EAAkBjB,EAAUiB,gBAC5BztB,EAAiBwsB,EAAUxsB,eAC3BD,EAAiBysB,EAAUzsB,eAC3BsZ,EAASmT,EAAUnT,OACnBza,EAAU4tB,EAAU1R,QAAQvC,KAChC,OAAOkV,EAAgBl5B,KAAI,SAAUoC,EAAK9nB,GACxC,MAAO,CACLS,KAAM,aACNxC,MAAOusC,EACPza,QAASA,EACToB,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAO+uB,EAAgB5C,EAAW39C,GAClC4H,MAAO44C,EAAgB7C,EAAW39C,GAEtC,GACF,CAEA,SAASugD,EAAgB5C,EAAW39C,GAClC,IAAI4+C,EAAkBjB,EAAUiB,gBAC5BE,EAAiBnB,EAAUmB,eAC3B7jC,EAAO0iC,EAAU1iC,KACjBgxB,EAAU0R,EAAU1R,QACpBne,EAAW8wB,EAAgB5+C,GAC3B4gC,EAAUke,EAAe9+C,GACzBygD,EAAYxlC,EAAKjb,GAAGlC,MACpBi0C,EAAU9F,EAAQC,aACtB,MAAO,CACLzrB,OAAQ,CAACggC,GACT7f,QAASA,EACT9S,SAAUA,EACVikB,QAASA,EAEb,CAEA,SAASyO,EAAgB7C,EAAW39C,GAClC,IAAIisC,EAAU0R,EAAU1R,QACpBhxB,EAAO0iC,EAAU1iC,KACjBrT,EAAQqkC,EAAQrkC,MAChBglB,EAAQ3R,EAAKjb,GAAG4sB,MACpB,OAAO,EAAI8iB,EAAO/B,WAAW,CAC3B5nB,KAAM6G,GACLhlB,EACL,C,qCC5mBa4c,EAAA,OAEb,IAAIC,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQiqC,KAAOA,EAEf,IAAIviB,EAAkBH,EAAuBD,EAAQ,QAEjDgH,EAAmB/G,EAAuBD,EAAQ,QAElDgrB,EAAWhrB,EAAQ,OAEnBoH,EAAQpH,EAAQ,OAEhBirB,EAAUjrB,EAAQ,OAElBkrB,EAASlrB,EAAQ,OAErB,SAASnQ,EAAQ5R,EAAQspB,GAAkB,IAAIhoB,EAAO/E,OAAO+E,KAAKtB,GAAS,GAAIzD,OAAOgK,sBAAuB,CAAE,IAAIlJ,EAAUd,OAAOgK,sBAAsBvG,GAAaspB,IAAgBjsB,EAAUA,EAAQksB,QAAO,SAAUre,GAAO,OAAO3O,OAAOyJ,yBAAyBhG,EAAQkL,GAAKrE,UAAY,KAAIvF,EAAK9D,KAAKnB,MAAMiF,EAAMjE,EAAU,CAAE,OAAOiE,CAAM,CAEpV,SAASkoB,EAAcvqB,GAAU,IAAK,IAAI1B,EAAI,EAAGA,EAAIjB,UAAUf,OAAQgC,IAAK,CAAE,IAAIU,EAAyB,MAAhB3B,UAAUiB,GAAajB,UAAUiB,GAAK,CAAC,EAAOA,EAAI,EAAKqU,EAAQrV,OAAO0B,IAAS,GAAMkG,SAAQ,SAAU/G,IAAO,EAAI2rB,EAAiB,YAAY9pB,EAAQ7B,EAAKa,EAAOb,GAAO,IAAeb,OAAOktB,0BAA6BltB,OAAOuJ,iBAAiB7G,EAAQ1C,OAAOktB,0BAA0BxrB,IAAmB2T,EAAQrV,OAAO0B,IAASkG,SAAQ,SAAU/G,GAAOb,OAAOC,eAAeyC,EAAQ7B,EAAKb,OAAOyJ,yBAAyB/H,EAAQb,GAAO,GAAM,CAAE,OAAO6B,CAAQ,CAEtiB,SAASylC,EAAKc,GACZ,IAAIlB,EAAShoC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9EooC,EAAOJ,EAAOI,KAClBA,GAAO,EAAIuI,EAAO/B,YAAW,EAAI/hB,EAAM6E,WAAWgf,EAAQrD,YAAY,GAAOjF,GAAQ,CAAC,IACtF,EAAIqI,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQ,CAACb,GACTtnC,IAAK,OACLqoC,eAAgBwY,GAEpB,CAEA,SAASA,EAAcC,EAAUvY,GAC/B,IAAIjX,EAAiBwvB,EAASxvB,eAC1BD,EAAiByvB,EAASzvB,eAC1BsZ,EAASmW,EAASnW,OAClBhZ,EAAQovB,EAAaD,EAAUvY,GAC/BxgC,EAAQi5C,EAAaF,GAEzB,OADAvY,EAAQH,MAAM8L,SAAW9nB,EAAc,CAAC,EAAGuF,GACpC,CAAC,CACN/wB,KAAM,OACNxC,MAAOusC,EACPrZ,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOA,EACP5pB,MAAOA,GAEX,CAEA,SAASg5C,EAAaD,EAAUvY,GAC9B,IAAI0Y,GAAwB,EAAIl8B,EAAgB,YAAYwjB,EAAQH,MAAM9sC,OAAOqxB,KAAM,GACnF3mB,EAAIi7C,EAAsB,GAC1BhkD,EAAIgkD,EAAsB,GAE1BzU,EAAO0U,EAAeJ,EAAStU,KAAMxmC,GACrCymC,EAAQyU,EAAeJ,EAASrU,MAAOzmC,GACvC0mC,EAAMwU,EAAeJ,EAASpU,IAAKzvC,GACnC0vC,EAASuU,EAAeJ,EAASnU,OAAQ1vC,GACzC0nC,EAAQ3+B,EAAIwmC,EAAOC,EACnB7H,EAAS3nC,EAAIyvC,EAAMC,EACvB,MAAO,CACL1wB,EAAGuwB,EACH1R,EAAG4R,EACH1mC,EAAG2+B,EACH1nC,EAAG2nC,EAEP,CAEA,SAASsc,EAAe/1C,EAAKmK,GAC3B,MAAmB,kBAARnK,EAAyBA,EACjB,kBAARA,EAAyB,EAC7BmK,EAAM+rB,SAASl2B,GAAO,GAC/B,CAEA,SAAS61C,EAAaF,GACpB,IAAI/4C,EAAQ+4C,EAAS/4C,MACrB,OAAOA,CACT,C,qCChFA5I,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETkB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CoM,YAAY,EACZpK,IAAK,WACH,OAAO8hD,EAAY9Z,UACrB,IAEFloC,OAAOC,eAAe/B,EAAS,QAAS,CACtCoM,YAAY,EACZpK,IAAK,WACH,OAAO0tC,EAAOtF,KAChB,IAEFtoC,OAAOC,eAAe/B,EAAS,OAAQ,CACrCoM,YAAY,EACZpK,IAAK,WACH,OAAOwtC,EAAMvF,IACf,IAEFnoC,OAAOC,eAAe/B,EAAS,OAAQ,CACrCoM,YAAY,EACZpK,IAAK,WACH,OAAOytC,EAAMvF,IACf,IAEFpoC,OAAOC,eAAe/B,EAAS,OAAQ,CACrCoM,YAAY,EACZpK,IAAK,WACH,OAAO4tC,EAAMtF,IACf,IAEFxoC,OAAOC,eAAe/B,EAAS,MAAO,CACpCoM,YAAY,EACZpK,IAAK,WACH,OAAO8tC,EAAKzF,GACd,IAEFvoC,OAAOC,eAAe/B,EAAS,MAAO,CACpCoM,YAAY,EACZpK,IAAK,WACH,OAAO+tC,EAAKxF,GACd,IAEFzoC,OAAOC,eAAe/B,EAAS,YAAa,CAC1CoM,YAAY,EACZpK,IAAK,WACH,OAAOiuC,EAAW9F,SACpB,IAEFroC,OAAOC,eAAe/B,EAAS,QAAS,CACtCoM,YAAY,EACZpK,IAAK,WACH,OAAOmuC,EAAO3F,KAChB,IAEF1oC,OAAOC,eAAe/B,EAAS,QAAS,CACtCoM,YAAY,EACZpK,IAAK,WACH,OAAOquC,EAAO5F,KAChB,IAEF3oC,OAAOC,eAAe/B,EAAS,SAAU,CACvCoM,YAAY,EACZpK,IAAK,WACH,OAAOsuC,EAAQ5F,MACjB,IAGF,IAAIoZ,EAAcx8B,EAAQ,OAEtBooB,EAASpoB,EAAQ,OAEjBkoB,EAAQloB,EAAQ,OAEhBmoB,EAAQnoB,EAAQ,OAEhBsoB,EAAQtoB,EAAQ,OAEhBwoB,EAAOxoB,EAAQ,OAEfyoB,EAAOzoB,EAAQ,OAEf2oB,EAAa3oB,EAAQ,OAErB6oB,EAAS7oB,EAAQ,OAEjB+oB,EAAS/oB,EAAQ,OAEjBgpB,EAAUhpB,EAAQ,M,qCC5FTA,EAAA,OAEb,IAAIC,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQ0qC,OAASA,EAEjB,IAAIpc,EAAmB/G,EAAuBD,EAAQ,QAElDI,EAAkBH,EAAuBD,EAAQ,QAEjDoM,EAAWnM,EAAuBD,EAAQ,QAE1CgrB,EAAWhrB,EAAQ,OAEnBoH,EAAQpH,EAAQ,OAEhBirB,EAAUjrB,EAAQ,OAElBkrB,EAASlrB,EAAQ,OAErB,SAASojB,EAAOK,GACd,IAAIlB,EAAShoC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E6oC,EAASb,EAAOa,OAEhBA,GACFA,GAAS,EAAI8H,EAAO/B,YAAW,EAAI/hB,EAAM6E,WAAWgf,EAAQhC,cAAc,GAAO7F,GACjFA,EAASqZ,EAAerZ,GACxBA,EAASsZ,EAAkBtZ,EAAQb,EAAQkB,GAC3CL,EAASuZ,EAAoBvZ,EAAQK,GACrCL,EAASwZ,EAAmBxZ,EAAQK,GACpCL,EAAS,CAACA,IAEVA,EAAS,IAGX,EAAI4H,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQJ,EACR/nC,IAAK,aACLqoC,eAAgBmZ,KAElB,EAAI7R,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQJ,EACR/nC,IAAK,aACLqoC,eAAgBoZ,GAEpB,CAEA,SAASL,EAAerZ,GACtB,IAAI3sB,EAAO2sB,EAAO3sB,KAgBlB,OAfA2sB,EAAO3sB,KAAOA,EAAKyK,KAAI,SAAUlE,GAC/B,IAAI+/B,GAAW,EAAI3wB,EAAS,YAAYpP,GAExC,MAAiB,WAAb+/B,EACK,CACL9gD,KAAM+gB,GAEc,WAAb+/B,EACF//B,EAGF,CACL/gB,KAAM,GAEV,IACOmnC,CACT,CAEA,SAASsZ,EAAkBtZ,EAAQb,EAAQkB,GACzC,IAAID,EAASjB,EAAOiB,OAChBwZ,EAAevZ,EAAMuZ,aACrBvmC,EAAO2sB,EAAO3sB,KAAK+Q,QAAO,SAAUxK,GACtC,IAAI/gB,EAAO+gB,EAAK/gB,KACZf,EAASsoC,EAAOza,MAAK,SAAU3G,GACjC,IAAI66B,EAAK76B,EAAKnmB,KACd,OAAOA,IAASghD,CAClB,IACA,QAAK/hD,IACA8hB,EAAKoL,QAAOpL,EAAKoL,MAAQltB,EAAOktB,OAChCpL,EAAKkgC,OAAMlgC,EAAKkgC,KAAOhiD,EAAOc,MAC5BghB,EACT,IAOA,OANKggC,GAAgBA,EAAaxjD,SAAW4pC,EAAO3sB,KAAKjd,SAAQwjD,EAAe,IAAI3+C,MAAM+kC,EAAO3sB,KAAKjd,QAAQ+nB,MAAK,IACnH9K,EAAKrU,SAAQ,SAAU4a,EAAMxhB,GAC3B,OAAOwhB,EAAKmM,OAAS6zB,EAAaxhD,EACpC,IACA4nC,EAAO3sB,KAAOA,EACdgtB,EAAMuZ,aAAeA,EACd5Z,CACT,CAEA,SAASuZ,EAAoBvZ,EAAQK,GACnC,IAAI9nC,EAAM8nC,EAAM9sC,OAAOgF,IACnB8a,EAAO2sB,EAAO3sB,KACdgzB,EAAYrG,EAAOqG,UACnBE,EAAsBvG,EAAOuG,oBAMjC,OALAlzB,EAAKrU,SAAQ,SAAU4a,GACrB,IAAImM,EAASnM,EAAKmM,OACdltB,EAAO+gB,EAAK/gB,KAChB+gB,EAAKmgC,UAAYC,EAAazhD,EAAKM,EAAMktB,EAASsgB,EAAYE,EAChE,IACOvG,CACT,CAEA,SAASga,EAAazhD,EAAKw4B,EAAM/wB,GAE/B,OADAzH,EAAI23B,KAAO+pB,EAAcj6C,GAClBzH,EAAI2hD,YAAYnpB,GAAM6L,KAC/B,CAEA,SAASqd,EAAcj6C,GACrB,IAAIwuB,EAAaxuB,EAAMwuB,WACnBD,EAAWvuB,EAAMuuB,SACrB,MAAO,GAAGl5B,OAAOk5B,EAAU,OAAOl5B,OAAOm5B,EAC3C,CAEA,SAASgrB,EAAmBxZ,EAAQK,GAClC,IAAI2F,EAAShG,EAAOgG,OAQpB,MANe,aAAXA,EACFmU,EAAqBna,EAAQK,GAE7B+Z,EAAuBpa,EAAQK,GAG1BL,CACT,CAEA,SAASoa,EAAuBpa,EAAQK,GACtC,IAAI8F,EAAanG,EAAOmG,WACpBF,EAAUjG,EAAOiG,QACjBoU,EAAQC,EAA8Bta,EAAQK,GAC9Cka,EAAWF,EAAMv8B,KAAI,SAAU8hB,GACjC,OAAO4a,EAAqB5a,EAAMI,EAAQK,EAC5C,IACIoa,EAAUC,EAAqB1a,EAAQK,GACvC8N,EAAQ,CACV1f,UAAW,OACXC,aAAc,UAEhB2rB,EAAMr7C,SAAQ,SAAU4gC,EAAMxnC,GAC5B,OAAOwnC,EAAK5gC,SAAQ,SAAU4a,GAC5B,IAAI+gC,EAAe/gC,EAAK+gC,aACpBC,EAAehhC,EAAKghC,aACpBC,EAAUN,EAASniD,GACnB0iD,EAAcL,EAAUriD,GAAK6tC,EAAUE,GAC3CvsB,EAAK+gC,aAAeI,EAAYJ,EAAc,CAACE,EAASC,IACxDlhC,EAAKghC,aAAeG,EAAYH,EAAc,CAACC,EAASC,IACxDlhC,EAAKu0B,MAAQA,CACf,GACF,GACF,CAEA,SAASmM,EAA8Bta,EAAQK,GAC7C,IAAIhtB,EAAO2sB,EAAO3sB,KACd6yB,EAAYlG,EAAOkG,UACnBjoC,EAAIoiC,EAAM9sC,OAAOqxB,KAAK,GACtBo2B,EAAa,EACbX,EAAQ,CAAC,IAeb,OAdAhnC,EAAKrU,SAAQ,SAAU4a,EAAMxhB,GAC3B,IAAI6iD,EAAcC,EAAeF,EAAY5iD,EAAG4nC,GAC5Cmb,EAAUF,EAAc/U,EAAY,EAAItsB,EAAKmgC,UAE7CoB,GAAWl9C,IACb+8C,EAAa5iD,EACb6iD,EAAcC,EAAeF,EAAY5iD,EAAG4nC,GAC5Cqa,EAAMhiD,KAAK,KAGbuhB,EAAK+gC,aAAe,CAACM,EAAa,GAClCrhC,EAAKghC,aAAe,CAACK,EAAc/U,EAAY,EAAG,GAClDmU,EAAM9jD,OAAO,GAAG,GAAG8B,KAAKuhB,EAC1B,IACOygC,CACT,CAEA,SAASa,EAAeF,EAAYlL,EAAc9P,GAChD,IAAI3sB,EAAO2sB,EAAO3sB,KACd6yB,EAAYlG,EAAOkG,UACnBD,EAAUjG,EAAOiG,QACjBmV,EAAa/nC,EAAK9c,MAAMykD,EAAYlL,GACxC,OAAO,EAAIhI,EAAOuT,QAAQD,EAAWt9B,KAAI,SAAUmB,GACjD,IAAI86B,EAAY96B,EAAM86B,UACtB,OAAOA,CACT,MAAOjK,EAAekL,IAAe/U,EAAU,EAAIC,EACrD,CAEA,SAASsU,EAAqBnnC,EAAM2sB,EAAQK,GAC1C,IAAIoE,EAAOzE,EAAOyE,KACdC,EAAQ1E,EAAO0E,MACfwB,EAAYlG,EAAOkG,UACnBD,EAAUjG,EAAOiG,QACjBhoC,EAAIoiC,EAAM9sC,OAAOqxB,KAAK,GACtBwtB,EAAU/+B,EAAKjd,OACfklD,GAAW,EAAIxT,EAAOuT,QAAQhoC,EAAKyK,KAAI,SAAUoB,GACnD,IAAI66B,EAAY76B,EAAM66B,UACtB,OAAOA,CACT,KAAM3H,GAAW,EAAIlM,IAAckM,EAAU,GAAKnM,EAC9CsV,EAAa,CAAC9W,EAAMC,GAAOvX,WAAU,SAAU1qB,GACjD,MAAe,SAARA,CACT,IAEA,OAAoB,IAAhB84C,GACMt9C,EAAIq9C,GAAY,EACA,IAAfC,EACW,kBAAT9W,EAA0BA,EAC9BnL,SAASmL,GAAQ,IAAMxmC,GAET,kBAAVymC,IAAoBA,EAAQpL,SAASoL,GAAS,IAAMzmC,GACxDA,GAAKq9C,EAAW5W,GAE3B,CAEA,SAASgW,EAAqB1a,EAAQK,GACpC,IAAIsE,EAAM3E,EAAO2E,IACbC,EAAS5E,EAAO4E,OAChBuB,EAAanG,EAAOmG,WACpBjxC,EAAImrC,EAAM9sC,OAAOqxB,KAAK,GACtB42B,EAAW,CAAC7W,EAAKC,GAAQzX,WAAU,SAAU1qB,GAC/C,MAAe,SAARA,CACT,IACIg5C,EAAiBtV,EAAa,EAElC,IAAkB,IAAdqV,EAAiB,CACnB,IAAItP,EAAkB7L,EAAM8L,SACxBpZ,EAAImZ,EAAgBnZ,EACpB8J,EAASqP,EAAgBh3C,EAC7B,OAAO69B,EAAI8J,EAAS,GAAK4e,CAC3B,CAAO,OAAiB,IAAbD,EACU,kBAAR7W,EAAyBA,EAAM8W,EACnCniB,SAASqL,GAAO,IAAMzvC,EAAIumD,GAEX,kBAAX7W,IAAqBA,EAAStL,SAASsL,GAAU,IAAM1vC,GAC3DA,EAAI0vC,EAAS6W,EAExB,CAEA,SAASV,EAAY17B,EAAO0S,GAC1B,IAAIC,GAAQ,EAAIhV,EAAgB,YAAYqC,EAAO,GAC/CnL,EAAI8d,EAAM,GACVe,EAAIf,EAAM,GAEVC,GAAQ,EAAIjV,EAAgB,YAAY+U,EAAO,GAC/CkL,EAAKhL,EAAM,GACXiL,EAAKjL,EAAM,GAEf,MAAO,CAAC/d,EAAI+oB,EAAIlK,EAAImK,EACtB,CAEA,SAASid,EAAqBna,EAAQK,GACpC,IAAIqb,EAAsBC,EAAmB3b,EAAQK,GACjDub,GAAuB,EAAI5+B,EAAgB,YAAY0+B,EAAqB,GAC5EG,EAAUD,EAAqB,GAC/Bf,EAAUe,EAAqB,GAE/BnB,EAAUqB,EAAmB9b,EAAQK,GACzC0b,EAA4B/b,EAAQ6b,GACpC,IAAI1N,EAAQ,CACV1f,UAAW,OACXC,aAAc,UAEhBsR,EAAO3sB,KAAKrU,SAAQ,SAAU4a,GAC5B,IAAIghC,EAAehhC,EAAKghC,aACpBD,EAAe/gC,EAAK+gC,aACxB/gC,EAAKghC,aAAeG,EAAYH,EAAc,CAACC,EAASJ,IACxD7gC,EAAK+gC,aAAeI,EAAYJ,EAAc,CAACE,EAASJ,IACxD7gC,EAAKu0B,MAAQA,CACf,GACF,CAEA,SAASwN,EAAmB3b,EAAQK,GAClC,IAAIoE,EAAOzE,EAAOyE,KACdC,EAAQ1E,EAAO0E,MACfzmC,EAAIoiC,EAAM9sC,OAAOqxB,KAAK,GACtB22B,EAAa,CAAC9W,EAAMC,GAAOvX,WAAU,SAAU1qB,GACjD,MAAe,SAARA,CACT,IAEA,IAAoB,IAAhB84C,EACF,MAAO,EAAC,EAAMt9C,EAAI,IAElB,IAAIsjB,EAAS,CAACkjB,EAAMC,GAAO6W,GAE3B,MADsB,kBAAXh6B,IAAqBA,EAAS+X,SAAS/X,GAAU,IAAMtjB,GAC3D,CAAC+9C,QAAQT,GAAah6B,EAEjC,CAEA,SAASu6B,EAAmB9b,EAAQK,GAClC,IAAI8F,EAAanG,EAAOmG,WACpBF,EAAUjG,EAAOiG,QACjB5yB,EAAO2sB,EAAO3sB,KACdsxB,EAAM3E,EAAO2E,IACbC,EAAS5E,EAAO4E,OAChB1vC,EAAImrC,EAAM9sC,OAAOqxB,KAAK,GACtBwtB,EAAU/+B,EAAKjd,OACfujC,EAAYyY,EAAUjM,GAAciM,EAAU,GAAKnM,EACnDuV,EAAW,CAAC7W,EAAKC,GAAQzX,WAAU,SAAU1qB,GAC/C,MAAe,SAARA,CACT,IAEA,IAAkB,IAAd+4C,EACF,OAAQtmD,EAAIykC,GAAa,EAEzB,IAAIpY,EAAS,CAACojB,EAAKC,GAAQ4W,GAG3B,MAFsB,kBAAXj6B,IAAqBA,EAAS+X,SAAS/X,GAAU,IAAMrsB,GACjD,IAAbsmD,IAAgBj6B,EAASrsB,EAAIqsB,EAASoY,GACnCpY,CAEX,CAEA,SAASw6B,EAA4B/b,EAAQ6b,GAC3C,IAAIxoC,EAAO2sB,EAAO3sB,KACd6yB,EAAYlG,EAAOkG,UACnBC,EAAanG,EAAOmG,WACpBF,EAAUjG,EAAOiG,QACjBwV,EAAiBtV,EAAa,EAClC9yB,EAAKrU,SAAQ,SAAU4a,EAAMxhB,GAC3B,IAAI2hD,EAAYngC,EAAKmgC,UACjBkC,GAAQ9V,EAAaF,GAAW7tC,EAAIqjD,EACpCS,EAAWL,EAAU,EAAI3V,EAAY,EACrCiW,EAAWN,EAAUK,EAAW,EAAInC,EAAY7T,EAAY,EAChEtsB,EAAK+gC,aAAe,CAACuB,EAAUD,GAC/BriC,EAAKghC,aAAe,CAACuB,EAAUF,EACjC,GACF,CAEA,SAASxC,EAAc2C,EAAY5b,GACjC,IAAIntB,EAAO+oC,EAAW/oC,KAClB+yB,EAAagW,EAAWhW,WACxB7c,EAAiB6yB,EAAW7yB,eAC5BD,EAAiB8yB,EAAW9yB,eAC5BsZ,EAASwZ,EAAWxZ,OACxB,OAAOvvB,EAAKyK,KAAI,SAAUlE,EAAMxhB,GAC9B,OAAO,EAAIwrB,EAAiB,YAAY,CACtC/qB,KAAoB,SAAd+gB,EAAKkgC,KAAkB,WAAa,OAC1CzjD,MAAOusC,EACPza,QAASi0B,EAAWta,KACpBtb,MAAO4f,EACP/e,MAAO+e,EACP7c,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOyyB,EAAaD,EAAYhkD,GAChC4H,MAAOs8C,EAAaF,EAAYhkD,IAC/B,QAASmkD,EAAoBH,EAAYhkD,EAAGooC,GACjD,GACF,CAEA,SAAS6b,EAAaD,EAAYhkD,GAChC,IAAIib,EAAO+oC,EAAW/oC,KAClB6yB,EAAYkW,EAAWlW,UACvBC,EAAaiW,EAAWjW,WAExBqW,GAAuB,EAAIx/B,EAAgB,YAAY3J,EAAKjb,GAAGuiD,aAAc,GAC7EzmC,EAAIsoC,EAAqB,GACzBzpB,EAAIypB,EAAqB,GAEzBf,EAAiBtV,EAAa,EAClC,MAAO,CACLjyB,EAAGA,EACH6e,EAAGA,EAAI0oB,EACPx9C,EAAGioC,EACHhxC,EAAGixC,EAEP,CAEA,SAASmW,EAAaF,EAAYhkD,GAChC,IAAIib,EAAO+oC,EAAW/oC,KAClBizB,EAAY8V,EAAW9V,UACvBE,EAAsB4V,EAAW5V,oBACjCoR,EAAUvkC,EAAKjb,GACf2tB,EAAS6xB,EAAQ7xB,OACjBf,EAAQ4yB,EAAQ5yB,MAChBhlB,EAAQ+lB,EAASugB,EAAYE,EACjC,OAAO,EAAIsB,EAAO/B,WAAW,CAC3B5nB,KAAM6G,GACLhlB,EACL,CAEA,SAAS05C,EAAc0C,EAAY5b,GACjC,IAAIntB,EAAO+oC,EAAW/oC,KAClB+yB,EAAagW,EAAWhW,WACxB7c,EAAiB6yB,EAAW7yB,eAC5BD,EAAiB8yB,EAAW9yB,eAC5BsZ,EAASwZ,EAAWxZ,OACxB,OAAOvvB,EAAKyK,KAAI,SAAUoC,EAAK9nB,GAC7B,MAAO,CACLS,KAAM,OACNxC,MAAOusC,EACPza,QAASi0B,EAAWta,KACpBtb,MAAO4f,EACP7c,eAAgBA,EAChBD,eAAgBA,EAChB5C,UAAW+1B,EAAiBL,EAAYhkD,GACxCwxB,MAAO8yB,EAAaN,EAAYhkD,GAChC4H,MAAO28C,EAAaP,EAAYhkD,GAChCivB,MAAOk1B,EAAoBH,EAAYhkD,EAAGooC,GAE9C,GACF,CAEA,SAASkc,EAAaN,EAAYhkD,GAChC,IAAIwkD,EAAqBR,EAAW/oC,KAAKjb,GACrCwiD,EAAegC,EAAmBhC,aAClC/hD,EAAO+jD,EAAmB/jD,KAC9B,MAAO,CACLmgC,QAASngC,EACTqtB,SAAU00B,EAEd,CAEA,SAAS+B,EAAaP,EAAYhkD,GAChC,IAAIiuC,EAAY+V,EAAW/V,UACvBE,EAAsB6V,EAAW7V,oBACjCsW,EAAsBT,EAAW/oC,KAAKjb,GACtC2tB,EAAS82B,EAAoB92B,OAC7BooB,EAAQ0O,EAAoB1O,MAC5BnuC,EAAQ+lB,EAASsgB,EAAYE,EACjC,OAAO,EAAIuB,EAAO/B,YAAW,EAAI/hB,EAAM6E,WAAW7oB,GAAO,GAAOmuC,EAClE,CAEA,SAASsO,EAAiBL,EAAYhkD,GACpC,IAAIiuC,EAAY+V,EAAW/V,UACvBE,EAAsB6V,EAAW7V,oBAEjCuW,EAAsBV,EAAW/oC,KAAKjb,GACtC2tB,EAAS+2B,EAAoB/2B,OAC7Bg3B,GAAwB,EAAI//B,EAAgB,YAAY8/B,EAAoBlC,aAAc,GAC1F1mC,EAAI6oC,EAAsB,GAC1BhqB,EAAIgqB,EAAsB,GAC1BhD,EAAY+C,EAAoB/C,UAEhC/5C,EAAQ+lB,EAASsgB,EAAYE,EAC7BhY,EAAWvuB,EAAMuuB,SACrB,MAAO,CAACra,EAAG6e,EAAIxE,EAAW,EAAGwrB,EAAWxrB,EAC1C,CAEA,SAASguB,EAAoBH,EAAY/lD,EAAOmqC,GAC9C,IAAI3nC,EAAOujD,EAAW/oC,KAAKhd,GAAOwC,KAClC,OAAO,WACL,IAAImkD,EAAiBxc,EAAQH,MACzBuZ,EAAeoD,EAAepD,aAC9Bza,EAAS6d,EAAe7d,OACxBpZ,GAAU6zB,EAAavjD,GACvB80B,EAASgU,EAAOiB,OAAOza,MAAK,SAAU4M,GACxC,IAAIsnB,EAAKtnB,EAAM15B,KACf,OAAOghD,IAAOhhD,CAChB,IACAsyB,EAAO2W,KAAO/b,EACd6zB,EAAavjD,GAAS0vB,EACtBya,EAAQH,MAAMjB,UAAUD,EAC1B,CACF,C,qCCtcaviB,EAAA,OAEb,IAAIC,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQsqC,KAAOA,EAEf,IAAI5W,EAAWnM,EAAuBD,EAAQ,QAE1CI,EAAkBH,EAAuBD,EAAQ,QAEjDK,EAAsBJ,EAAuBD,EAAQ,QAErDgH,EAAmB/G,EAAuBD,EAAQ,QAElDgrB,EAAWhrB,EAAQ,OAEnBirB,EAAUjrB,EAAQ,OAElBmH,EAAelH,EAAuBD,EAAQ,QAE9CoH,EAAQpH,EAAQ,OAEpB,SAASnQ,EAAQ5R,EAAQspB,GAAkB,IAAIhoB,EAAO/E,OAAO+E,KAAKtB,GAAS,GAAIzD,OAAOgK,sBAAuB,CAAE,IAAIlJ,EAAUd,OAAOgK,sBAAsBvG,GAAaspB,IAAgBjsB,EAAUA,EAAQksB,QAAO,SAAUre,GAAO,OAAO3O,OAAOyJ,yBAAyBhG,EAAQkL,GAAKrE,UAAY,KAAIvF,EAAK9D,KAAKnB,MAAMiF,EAAMjE,EAAU,CAAE,OAAOiE,CAAM,CAEpV,SAASkoB,EAAcvqB,GAAU,IAAK,IAAI1B,EAAI,EAAGA,EAAIjB,UAAUf,OAAQgC,IAAK,CAAE,IAAIU,EAAyB,MAAhB3B,UAAUiB,GAAajB,UAAUiB,GAAK,CAAC,EAAOA,EAAI,EAAKqU,EAAQrV,OAAO0B,IAAS,GAAMkG,SAAQ,SAAU/G,IAAO,EAAI2rB,EAAiB,YAAY9pB,EAAQ7B,EAAKa,EAAOb,GAAO,IAAeb,OAAOktB,0BAA6BltB,OAAOuJ,iBAAiB7G,EAAQ1C,OAAOktB,0BAA0BxrB,IAAmB2T,EAAQrV,OAAO0B,IAASkG,SAAQ,SAAU/G,GAAOb,OAAOC,eAAeyC,EAAQ7B,EAAKb,OAAOyJ,yBAAyB/H,EAAQb,GAAO,GAAM,CAAE,OAAO6B,CAAQ,CAEtiB,IAAIgoB,EAAwBiC,EAAa,WAAWjC,sBAChD/E,EAAuBgH,EAAa,WAAWhH,qBAEnD,SAAS6iB,EAAKS,GACZ,IAAIlB,EAAShoC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E6wC,EAAQ7I,EAAO6I,MACfC,EAAQ9I,EAAO8I,MACf7H,EAASjB,EAAOiB,OAChBia,EAAQ,GAERrS,GAASC,GAAS7H,IACpBia,GAAQ,EAAIr2B,EAAM2qB,gBAAgBvO,EAAQyH,EAAQ1C,WAAY,QAC9DkV,EAAQ4C,EAAkB5C,EAAOha,KAGnC,EAAIuH,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQia,EACRpiD,IAAK,WACLqoC,eAAgB4c,EAChB3b,oBAAqB4b,EACrBzb,aAAc0b,EACdtc,aAAcuc,KAEhB,EAAIzV,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQia,EACRpiD,IAAK,OACLqoC,eAAgBsI,EAChBrH,oBAAqB+b,EACrB5b,aAAc0b,EACdtc,aAAcuc,KAEhB,EAAIzV,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQia,EACRpiD,IAAK,YACLqoC,eAAgBid,EAChBhc,oBAAqBic,KAEvB,EAAI5V,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQia,EACRpiD,IAAK,YACLqoC,eAAgBwI,GAEpB,CAEA,SAASmU,EAAkB5C,EAAOha,GAChC,IAAI4I,EAAW5I,EAAM4I,SACrB,OAAOoR,EAAMv8B,KAAI,SAAU2/B,GACzB,IAAIC,GAAW,EAAI15B,EAAM8mB,oBAAoB2S,EAAUpD,GACvDqD,EAAWC,EAAeF,EAAUC,GACpC,IAAIE,EAAWC,EAAYJ,EAAUxU,GACjCmD,EAAe0R,EAAgBJ,EAAUE,GACzCG,EAAoBC,EAAqBJ,GAC7C,OAAOv5B,EAAcA,EAAc,CAAC,EAAGo5B,GAAW,CAAC,EAAG,CACpDrR,aAAcA,EAAahoB,QAAO,SAAU6tB,GAC1C,OAAOA,CACT,IACA8L,kBAAmBA,GAEvB,GACF,CAEA,SAASJ,EAAeF,EAAUC,GAChC,IAAIrqC,EAAOoqC,EAASpqC,KACpB,OAAOqqC,EAAS5/B,KAAI,SAAU1B,EAAGhkB,GAC/B,MAA0B,kBAAZib,EAAKjb,GAAkBgkB,EAAI,IAC3C,GACF,CAEA,SAASyhC,EAAYje,EAAMqJ,GACzB,IAAI9F,EAAavD,EAAKuD,WAClBC,EAAaxD,EAAKwD,WAClB4E,EAAQiB,EAAStjB,MAAK,SAAU3G,GAClC,IAAIwgB,EAAOxgB,EAAKwgB,KACZnpC,EAAQ2oB,EAAK3oB,MACjB,MAAgB,MAATmpC,GAAgBnpC,IAAU8sC,CACnC,IACI8E,EAAQgB,EAAStjB,MAAK,SAAU1G,GAClC,IAAIugB,EAAOvgB,EAAMugB,KACbnpC,EAAQ4oB,EAAM5oB,MAClB,MAAgB,MAATmpC,GAAgBnpC,IAAU+sC,CACnC,IACA,MAAO,CAAC4E,EAAOC,EACjB,CAEA,SAAS6V,EAAgBJ,EAAUE,GACjC,IAAIzO,EAAiByO,EAASzwB,WAAU,SAAUjO,GAChD,IAAI7L,EAAO6L,EAAM7L,KACjB,MAAgB,UAATA,CACT,IACIi2B,EAAYsU,EAASzO,GACrB5F,EAAYqU,EAAS,EAAIzO,GACzB/C,EAAe9C,EAAU8C,aACzB5M,EAAO8J,EAAU9J,KACjBwN,EAAezD,EAAUyD,aACzBiR,EAAUjR,EAAa52C,OACvB8nD,EAA6B,MAAT1e,EAAe,EAAI,EACvC2e,EAAoB/R,EAAa,GAAG8R,GACpCE,EAAkBhS,EAAa,GAAG8R,GAClCG,EAAoBD,EAAkBD,EACtC/T,EAAWd,EAAUc,SACrBC,EAAWf,EAAUe,SACrBiI,EAAalI,EAAWC,EACxBnkB,EAAW,IAAIjrB,MAAMgjD,GAAS9/B,KAAK,GAAGL,KAAI,SAAUoC,EAAK9nB,GAC3D,IAAIgkB,EAAIshC,EAAStlD,GACjB,GAAiB,kBAANgkB,EAAgB,OAAO,KAClC,IAAIkiC,GAAgBliC,EAAIiuB,GAAYiI,EAEpC,OADmB,IAAfA,IAAkBgM,EAAe,GAC9BA,EAAeD,EAAoBF,CAC5C,IACA,OAAOj4B,EAASpI,KAAI,SAAUygC,EAAMnmD,GAClC,GAAIA,GAAK6lD,GAA2B,kBAATM,EAAmB,OAAO,KACrD,IAAI97C,EAAM,CAAC87C,EAAMvR,EAAa50C,GAAG,EAAI8lD,IACrC,OAA0B,IAAtBA,GACJz7C,EAAI2sB,UADgC3sB,CAGtC,GACF,CAEA,SAASu7C,EAAqBJ,GAC5B,IAAItU,EAAYsU,EAASj4B,MAAK,SAAUtG,GACtC,IAAIhM,EAAOgM,EAAMhM,KACjB,MAAgB,UAATA,CACT,IACImsB,EAAO8J,EAAU9J,KACjB4M,EAAe9C,EAAU8C,aACzB/B,EAAWf,EAAUe,SACrBD,EAAWd,EAAUc,SACrBoU,EAAuB,MAAThf,EAAe,EAAI,EACjCif,EAAcrS,EAAa,GAAGoS,GAElC,GAAInU,EAAW,GAAKD,EAAW,EAAG,CAChC,IAAIkI,EAAalI,EAAWC,EACxBkI,EAAWh4C,KAAK6iB,IAAIgvB,EAAa,GAAGoS,GAAepS,EAAa,GAAGoS,IACnEj9B,EAAShnB,KAAK6iB,IAAIitB,GAAYiI,EAAaC,EAClC,MAAT/S,IAAcje,IAAW,GAC7Bk9B,GAAel9B,CACjB,CAEA,MAAO,CACLi9B,YAAaA,EACbC,YAAaA,EAEjB,CAEA,SAASvB,EAAkBO,GACzB,IAAIl0B,EAAiBk0B,EAASl0B,eAC1BD,EAAiBm0B,EAASn0B,eAC1By0B,EAAoBN,EAASM,kBAC7Bnb,EAAS6a,EAAS7a,OACtB,MAAO,CAAC,CACN/pC,KAAM6lD,EAAiBjB,GACvBpnD,MAAOusC,EACPrZ,eAAgBA,EAChBD,eAAgBA,EAChBnB,QAASs1B,EAAS7W,SAAS9E,KAC3Bic,kBAAmBA,EACnBn0B,MAAO+0B,EAAoBlB,GAC3Bz9C,MAAO4+C,EAAiBnB,GACxBpzB,OAAQw0B,GAEZ,CAEA,SAASF,EAAoBlB,GAC3B,IAAIrR,EAAeqR,EAASrR,aAC5B,MAAO,CACLtsB,OAAQssB,EAEZ,CAEA,SAASwS,EAAiBnB,GACxB,IAAI7W,EAAW6W,EAAS7W,SACpB5hB,EAAQy4B,EAASz4B,MACjBuL,EAAWqW,EAASrW,SACpBvwB,EAAQ4mC,EAAS5mC,MACjB2zC,EAAY,CAAC3zC,EAAMme,MAAQ6G,GAC3B2J,GAAgB,EAAI3K,EAAM+hB,WAAW4N,EAAWpjB,GACvB,IAAzB5B,EAAcv4B,QAAcu4B,EAAct2B,KAAKs2B,EAAc,IACjE,IAAIE,EAAiBglB,EAAkB4J,GAIvC,OAHAz9C,EAAQqkB,EAAcA,EAAc,CAAC,EAAGrkB,GAAQ,CAAC,EAAG,CAClDytB,OAAQ,sBAEH,EAAIzJ,EAAM+hB,WAAW,CAC1BpX,cAAeA,EACfE,eAAgBA,EAChBD,aAAc,SACdE,aAAc,QACb9uB,EACL,CAEA,SAAS6zC,EAAkB4J,GACzB,IAAIM,EAAoBN,EAASM,kBAC7B3R,EAAeqR,EAASrR,aACxBoS,EAAcT,EAAkBS,YAChCC,EAAcV,EAAkBU,YAChCK,EAAU1S,EAAatuB,KAAI,SAAUm0B,GACvC,OAAOA,EAAEuM,EACX,IACIO,EAASxkD,KAAKwI,IAAI7L,MAAMqD,MAAM,EAAI0iB,EAAoB,YAAY6hC,IAClEE,EAASzkD,KAAKyI,IAAI9L,MAAMqD,MAAM,EAAI0iB,EAAoB,YAAY6hC,IAClEG,EAAWF,EAGf,OAFoB,IAAhBP,IAAmBS,EAAWD,GAEd,IAAhBR,EACK,CAAC,EAAGS,EAAU,EAAGR,GAEjB,CAACQ,EAAU,EAAGR,EAAa,EAEtC,CAEA,SAASI,EAAe9sB,EAAOC,GAC7B,IAAI+rB,EAAoBhsB,EAAMgsB,kBAC1Bn0B,EAAQmI,EAAMnI,MACdrxB,EAAMy5B,EAAMz5B,IACZunB,EAAS8J,EAAM9J,OACf0+B,EAAcT,EAAkBS,YAChCC,EAAcV,EAAkBU,YAChCS,GAAa,EAAIjiC,EAAoB,YAAY6C,EAAOA,EAAO1pB,OAAS,IACxE+oD,GAAa,EAAIliC,EAAoB,YAAY6C,EAAO,IAC5Do/B,EAAWV,GAAeC,EAC1BU,EAAWX,GAAeC,EAC1BlmD,EAAI08B,OAAO/9B,MAAMqB,GAAK,EAAI0kB,EAAoB,YAAYiiC,IAC1D3mD,EAAI08B,OAAO/9B,MAAMqB,GAAK,EAAI0kB,EAAoB,YAAYkiC,IAC1D5mD,EAAIs5B,YACJt5B,EAAI4lB,MACN,CAEA,SAASg/B,EAAuBM,GAC9B,IAAIh2B,EAASy1B,EAAkBO,GAAU,GAErCz9C,EAAQqkB,EAAc,CAAC,EAAGoD,EAAOznB,OAIrC,OAFAA,EAAM0tB,QAAU,EAChBjG,EAAOznB,MAAQA,EACR,CAACynB,EACV,CAEA,SAAS21B,EAAwBr4B,EAAQ04B,EAAUrlD,EAAGooC,GACpD,IAAI7W,EAAQ5E,EAAO3sB,GACnB,GAAKuxB,EAAL,CACA,IAAIy1B,EAAcV,EAAiBjB,GAC/BlqD,EAASitC,EAAQH,MAAM9sC,OACvBsF,EAAO8wB,EAAM,GAAG9wB,KAChBwmD,EAASD,IAAgBvmD,EACxBwmD,IACL11B,EAAM3qB,SAAQ,SAAUgT,GACtB,OAAOze,EAAOu0B,SAAS9V,EACzB,IACA+S,EAAO3sB,GAAK,KATM,CAUpB,CAEA,SAASilD,EAAwB93B,EAAOkC,GACtC,IAAI3H,EAAS2H,EAAOmC,MAAM9J,OACtBw/B,EAAc/5B,EAAMqE,MAAM9J,OAC1By/B,EAAiBD,EAAYlpD,OAC7BopD,EAAY1/B,EAAO1pB,OAEvB,GAAIopD,EAAYD,EAAgB,CAC9B,IAAIE,EAAYH,EAAY/oD,OAAO,GAAG,GAClCmpD,EAAe,IAAIzkD,MAAMukD,EAAYD,GAAgBphC,KAAK,GAAGL,KAAI,SAAUoC,GAC7E,OAAO,EAAIjD,EAAoB,YAAYwiC,EAC7C,IACAH,EAAYjnD,KAAKnB,MAAMooD,GAAa,EAAIriC,EAAoB,YAAYyiC,GAC1E,MAAWF,EAAYD,GACrBD,EAAYjyB,OAAOmyB,EAEvB,CAEA,SAAS5W,EAAc6U,GACrB,IAAIl0B,EAAiBk0B,EAASl0B,eAC1BD,EAAiBm0B,EAASn0B,eAC1BsZ,EAAS6a,EAAS7a,OACtB,MAAO,CAAC,CACN/pC,KAAM6lD,EAAiBjB,GACvBpnD,MAAOusC,EAAS,EAChBrZ,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAO+0B,EAAoBlB,GAC3Bz9C,MAAO2tC,EAAa8P,IAExB,CAEA,SAASiB,EAAiBjB,GACxB,IAAIhX,EAASgX,EAAShX,OACtB,OAAOA,EAAS,aAAe,UACjC,CAEA,SAASkH,EAAa8P,GACpB,IAAI/W,EAAY+W,EAAS/W,UACrB1hB,EAAQy4B,EAASz4B,MACjByhB,EAASgX,EAAShX,OAClB2F,EAAeqR,EAASrR,aACxBuT,EAAaC,EAAcxT,EAAc3F,GAC7C,OAAO,EAAIziB,EAAM+hB,WAAW,CAC1BtY,OAAQzI,EACR6I,SAAU,CAAC8xB,EAAY,IACtBjZ,EACL,CAEA,SAASkZ,EAAc9/B,GACrB,IAAI2mB,EAAStvC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GAC5E,IAAKsvC,EAAQ,OAAO,EAAIziB,EAAM67B,mBAAmB//B,GACjD,IAAIiY,EAAQjW,EAAsBhC,GAClC,OAAO/C,EAAqBgb,EAC9B,CAEA,SAASulB,EAAmBG,GAC1B,IAAI5vB,EAAW4vB,EAAS/W,UAAU7Y,SAC9BpG,EAASmhB,EAAc6U,GAAU,GACjCqC,EAAer4B,EAAOznB,MAAM6tB,SAShC,OANEiyB,EADEjyB,EACa,CAAC,EAAG,IAEJ,EAAI5Q,EAAoB,YAAY6iC,GAAc1wB,UAGnE3H,EAAOznB,MAAM6tB,SAAWiyB,EACjB,CAACr4B,EACV,CAEA,SAAS81B,EAAeE,GACtB,IAAIl0B,EAAiBk0B,EAASl0B,eAC1BD,EAAiBm0B,EAASn0B,eAC1BsZ,EAAS6a,EAAS7a,OAClBgL,EAASmS,EAAetC,GACxBz9C,EAAQggD,EAAcvC,GAC1B,OAAO7P,EAAO9vB,KAAI,SAAU8L,GAC1B,MAAO,CACL/wB,KAAM,SACNxC,MAAOusC,EAAS,EAChBza,QAASs1B,EAAS9W,UAAU7E,KAC5BvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOA,EACP5pB,MAAOA,EAEX,GACF,CAEA,SAAS+/C,EAAetC,GACtB,IAAIrR,EAAeqR,EAASrR,aACxB3N,EAASgf,EAAS9W,UAAUlI,OAChC,OAAO2N,EAAatuB,KAAI,SAAUmU,GAChC,IAAIK,GAAQ,EAAItV,EAAgB,YAAYiV,EAAO,GAC/CP,EAAKY,EAAM,GACXX,EAAKW,EAAM,GAEf,MAAO,CACLnR,EAAGsd,EACH/M,GAAIA,EACJC,GAAIA,EAER,GACF,CAEA,SAASquB,EAAcvC,GACrB,IAAIz4B,EAAQy4B,EAASz4B,MACjBhlB,EAAQy9C,EAAS9W,UAAU3mC,MAC/B,OAAO,EAAIgkB,EAAM+hB,WAAW,CAC1BtY,OAAQzI,GACPhlB,EACL,CAEA,SAASw9C,EAAoBC,GAC3B,IAAI1c,EAAUwc,EAAeE,GAI7B,OAHA1c,EAAQ/hC,SAAQ,SAAUyoB,GACxBA,EAAOmC,MAAMzI,EAAI,EACnB,IACO4f,CACT,CAEA,SAAS+H,EAAe2U,GACtB,IAAIl0B,EAAiBk0B,EAASl0B,eAC1BD,EAAiBm0B,EAASn0B,eAC1BsZ,EAAS6a,EAAS7a,OAClBgL,EAASG,EAAe0P,GACxBz9C,EAAQiuC,EAAcwP,GAC1B,OAAO7P,EAAO9vB,KAAI,SAAU8L,EAAOxxB,GACjC,MAAO,CACLS,KAAM,OACNxC,MAAOusC,EAAS,EAChBza,QAASs1B,EAASna,MAAMxB,KACxBvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOA,EACP5pB,MAAOA,EAEX,GACF,CAEA,SAAS+tC,EAAe0P,GACtB,IAAIpJ,EAAW4L,EAAexC,GAC1Bv3B,EAAWg6B,EAAiBzC,GAChC,OAAOpJ,EAASv2B,KAAI,SAAUkb,EAAS5gC,GACrC,MAAO,CACL4gC,QAASA,EACT9S,SAAUA,EAAS9tB,GAEvB,GACF,CAEA,SAAS8nD,EAAiBzC,GACxB,IAAIrR,EAAeqR,EAASrR,aACxB2R,EAAoBN,EAASM,kBAC7Bza,EAAQma,EAASna,MACjBpd,EAAWod,EAAMpd,SACjB3E,EAAS+hB,EAAM/hB,OACfi9B,EAAcT,EAAkBS,YAChCC,EAAcV,EAAkBU,YACpC,OAAOrS,EAAatuB,KAAI,SAAUrb,GAMhC,GALiB,WAAbyjB,IACFzjB,GAAM,EAAIwa,EAAoB,YAAYxa,GAC1CA,EAAI+7C,GAAeC,GAGJ,WAAbv4B,EAAuB,CACzB,IAAI0e,GAAS,EAAI3nB,EAAoB,YAAYxa,GACjDmiC,EAAO4Z,GAAeC,EACtBh8C,EAAM09C,EAAoB19C,EAAKmiC,EACjC,CAEA,OAAO4P,EAAiB/xC,EAAK8e,EAC/B,GACF,CAEA,SAASizB,EAAiBjiB,EAAOC,GAC/B,IAAIC,GAAS,EAAIzV,EAAgB,YAAYuV,EAAO,GAChDre,EAAIue,EAAO,GACXM,EAAIN,EAAO,GAEXG,GAAS,EAAI5V,EAAgB,YAAYwV,EAAQ,GACjDyK,EAAKrK,EAAO,GACZsK,EAAKtK,EAAO,GAEhB,MAAO,CAAC1e,EAAI+oB,EAAIlK,EAAImK,EACtB,CAEA,SAASijB,EAAoBttB,EAAQC,GACnC,IAAIE,GAAS,EAAIhW,EAAgB,YAAY6V,EAAQ,GACjD1T,EAAK6T,EAAO,GACZ5T,EAAK4T,EAAO,GAEZC,GAAS,EAAIjW,EAAgB,YAAY8V,EAAQ,GACjDxT,EAAK2T,EAAO,GACZ1T,EAAK0T,EAAO,GAEhB,MAAO,EAAE9T,EAAKG,GAAM,GAAIF,EAAKG,GAAM,EACrC,CAEA,SAAS0gC,EAAexC,GACtB,IAAIpqC,EAAOoqC,EAASpqC,KAChBqvB,EAAY+a,EAASna,MAAMZ,UAM/B,GALArvB,EAAOA,EAAK+Q,QAAO,SAAU9C,GAC3B,MAAoB,kBAANA,CAChB,IAAGxD,KAAI,SAAUwD,GACf,OAAOA,EAAEhrB,UACX,KACKosC,EAAW,OAAOrvB,EACvB,IAAIza,GAAO,EAAIowB,EAAS,YAAY0Z,GACpC,MAAa,WAAT9pC,EAA0Bya,EAAKyK,KAAI,SAAUwD,GAC/C,OAAOohB,EAAU1yB,QAAQ,UAAWsR,EACtC,IACa,aAAT1oB,EAA4Bya,EAAKyK,KAAI,SAAU5nB,EAAOG,GACxD,OAAOqsC,EAAU,CACfxsC,MAAOA,EACPG,MAAOA,GAEX,IACOgd,CACT,CAEA,SAAS46B,EAAcwP,GACrB,IAAIz4B,EAAQy4B,EAASz4B,MACjBhlB,EAAQy9C,EAASna,MAAMtjC,MAC3B,OAAO,EAAIgkB,EAAM+hB,WAAW,CAC1B5nB,KAAM6G,GACLhlB,EACL,C,qCC5fA5I,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQgqC,WAAaA,EAErB,IAAIuI,EAAUjrB,EAAQ,OAElBoH,EAAQpH,EAAQ,OAEhBkrB,EAASlrB,EAAQ,OAErB,SAAS0iB,EAAWe,GAClB,IAAIlB,EAAShoC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9EipD,GAAe,EAAIp8B,EAAM6E,WAAWgf,EAAQlE,aAAa,GACzD3e,EAAQma,EAAOna,MACfob,EAASjB,EAAOiB,OAIpB,GAHKA,IAAQA,EAAS,IACjBpb,IAAOA,EAAQ,IACpBma,EAAOna,MAAQA,GAAQ,EAAI8iB,EAAO/B,WAAWqa,EAAcp7B,GACtDob,EAAOhqC,OAAZ,CACA,IAAIiqD,EAAWr7B,EAAM5uB,OACrBgqC,EAAOphC,SAAQ,SAAU4a,EAAMxhB,GACzBwhB,EAAKoL,QACTpL,EAAKoL,MAAQA,EAAM5sB,EAAIioD,GACzB,IACA,IAAIC,EAAOlgB,EAAOhc,QAAO,SAAUpF,GACjC,IAAIpmB,EAAOomB,EAAKpmB,KAChB,MAAgB,QAATA,CACT,IACA0nD,EAAKthD,SAAQ,SAAU6gC,GACrB,OAAOA,EAAIxsB,KAAKrU,SAAQ,SAAUuhD,EAAInoD,GACpC,OAAOmoD,EAAGv7B,MAAQA,EAAM5sB,EAAIioD,EAC9B,GACF,IACA,IAAI3L,EAAStU,EAAOhc,QAAO,SAAUnF,GACnC,IAAIrmB,EAAOqmB,EAAMrmB,KACjB,MAAgB,UAATA,CACT,IACA87C,EAAO11C,SAAQ,SAAU+gC,GACvB,OAAOA,EAAM1sB,KAAKrU,SAAQ,SAAUuhD,EAAInoD,GACtC,OAAOmoD,EAAGv7B,MAAQA,EAAM5sB,EAAIioD,EAC9B,GACF,IACA,IAAIG,EAA0BpgB,EAAOhc,QAAO,SAAUlF,GACpD,IAAItmB,EAAOsmB,EAAMtmB,KACb6qC,EAAmBvkB,EAAMukB,iBAC7B,MAAgB,QAAT7qC,GAAkB6qC,CAC3B,IACA+c,EAAwBxhD,SAAQ,SAAU2gC,GACpCA,EAAI+D,oBACR/D,EAAI+D,kBAAoB1e,EAC1B,GAhC0B,CAiC5B,C,qCCtDapI,EAAA,OAEb,IAAIC,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQuqC,IAAMA,EAEd,IAAIjc,EAAmB/G,EAAuBD,EAAQ,QAElDoM,EAAWnM,EAAuBD,EAAQ,QAE1CI,EAAkBH,EAAuBD,EAAQ,QAEjDK,EAAsBJ,EAAuBD,EAAQ,QAErDgrB,EAAWhrB,EAAQ,OAEnByoB,EAAOzoB,EAAQ,OAEfoH,EAAQpH,EAAQ,OAEhBkrB,EAASlrB,EAAQ,OAErB,SAASnQ,EAAQ5R,EAAQspB,GAAkB,IAAIhoB,EAAO/E,OAAO+E,KAAKtB,GAAS,GAAIzD,OAAOgK,sBAAuB,CAAE,IAAIlJ,EAAUd,OAAOgK,sBAAsBvG,GAAaspB,IAAgBjsB,EAAUA,EAAQksB,QAAO,SAAUre,GAAO,OAAO3O,OAAOyJ,yBAAyBhG,EAAQkL,GAAKrE,UAAY,KAAIvF,EAAK9D,KAAKnB,MAAMiF,EAAMjE,EAAU,CAAE,OAAOiE,CAAM,CAEpV,SAASkoB,EAAcvqB,GAAU,IAAK,IAAI1B,EAAI,EAAGA,EAAIjB,UAAUf,OAAQgC,IAAK,CAAE,IAAIU,EAAyB,MAAhB3B,UAAUiB,GAAajB,UAAUiB,GAAK,CAAC,EAAOA,EAAI,EAAKqU,EAAQrV,OAAO0B,IAAS,GAAMkG,SAAQ,SAAU/G,IAAO,EAAI2rB,EAAiB,YAAY9pB,EAAQ7B,EAAKa,EAAOb,GAAO,IAAeb,OAAOktB,0BAA6BltB,OAAOuJ,iBAAiB7G,EAAQ1C,OAAOktB,0BAA0BxrB,IAAmB2T,EAAQrV,OAAO0B,IAASkG,SAAQ,SAAU/G,GAAOb,OAAOC,eAAeyC,EAAQ7B,EAAKb,OAAOyJ,yBAAyB/H,EAAQb,GAAO,GAAM,CAAE,OAAO6B,CAAQ,CAEtiB,SAAS+lC,EAAIQ,GACX,IAAIlB,EAAShoC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9EipC,EAASjB,EAAOiB,OACfA,IAAQA,EAAS,IACtB,IAAIkgB,GAAO,EAAIxY,EAAO6G,gBAAgBvO,EAAQiF,EAAKC,UAAW,OAC9Dgb,EAAOG,EAAeH,EAAMjgB,GAC5BigB,EAAOI,EAAeJ,EAAMjgB,GAC5BigB,EAAOK,EAAmBL,EAAMjgB,GAChCigB,EAAOM,EAAgBN,GACvBA,EAAOO,EAAcP,EAAMjgB,GAC3BigB,EAAOQ,EAAuBR,GAC9BA,EAAOS,EAAsBT,GAC7BA,EAAOU,EAAwBV,IAC/B,EAAI1Y,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQkgB,EACRroD,IAAK,MACLqoC,eAAgB2gB,EAChB1f,oBAAqB2f,EACrBpgB,aAAcqgB,KAEhB,EAAIvZ,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQkgB,EACRroD,IAAK,iBACLqoC,eAAgB8gB,KAElB,EAAIxZ,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQkgB,EACRroD,IAAK,sBACLqoC,eAAgB+gB,EAChB9f,oBAAqB+f,KAEvB,EAAI1Z,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQkgB,EACRroD,IAAK,kBACLqoC,eAAgBihB,EAChBhgB,oBAAqBigB,GAEzB,CAEA,SAASf,EAAeH,EAAMjgB,GAC5B,IAAIzb,EAAOyb,EAAM9sC,OAAOqxB,KASxB,OARA07B,EAAKthD,SAAQ,SAAU6gC,GACrB,IAAIgE,EAAShE,EAAIgE,OACjBA,EAASA,EAAO/lB,KAAI,SAAUrb,EAAKrK,GACjC,MAAmB,kBAARqK,EAAyBA,EAC7B62B,SAAS72B,GAAO,IAAMmiB,EAAKxsB,EACpC,IACAynC,EAAIgE,OAASA,CACf,IACOyc,CACT,CAEA,SAASI,EAAeJ,EAAMjgB,GAC5B,IAAI2V,EAAYz7C,KAAKyI,IAAI9L,MAAMqD,MAAM,EAAI0iB,EAAoB,YAAYojB,EAAM9sC,OAAOqxB,OAAS,EAa/F,OAZA07B,EAAKthD,SAAQ,SAAU6gC,GACrB,IAAIpB,EAASoB,EAAIpB,OACbprB,EAAOwsB,EAAIxsB,KACforB,EAASgjB,EAAgBhjB,EAAQuX,GACjC3iC,EAAKrU,SAAQ,SAAU4a,GACrB,IAAI8nC,EAAa9nC,EAAK6kB,OACjBijB,IAAYA,EAAajjB,GAC9BijB,EAAaD,EAAgBC,EAAY1L,GACzCp8B,EAAK6kB,OAASijB,CAChB,IACA7hB,EAAIpB,OAASA,CACf,IACO6hB,CACT,CAEA,SAASmB,EAAgBhjB,EAAQuX,GAM/B,OALMvX,aAAkBxjC,QAAQwjC,EAAS,CAAC,EAAGA,IAC7CA,EAASA,EAAO3gB,KAAI,SAAUqD,GAC5B,MAAiB,kBAANA,EAAuBA,EAC3BmY,SAASnY,GAAK,IAAM60B,CAC7B,IACOvX,CACT,CAEA,SAASkiB,EAAmBL,EAAMjgB,GAChC,IAAIshB,EAAUrB,EAAKl8B,QAAO,SAAUpF,GAClC,IAAI6nB,EAAW7nB,EAAK6nB,SACpB,OAAOA,CACT,IAoBA,OAnBA8a,EAAQ3iD,SAAQ,SAAU6gC,GACxB,IAAIpB,EAASoB,EAAIpB,OACbprB,EAAOwsB,EAAIxsB,KACXyzB,EAAWjH,EAAIiH,SACfC,EAAgB6a,EAAiB/hB,GACjCgiB,GAAW,EAAI5kC,EAAoB,YAAY5J,GACnDA,EAAOyuC,EAASzuC,GAChBA,EAAKrU,SAAQ,SAAU4a,EAAMxhB,GAC3BwhB,EAAK6kB,OAAO,GAAKA,EAAO,GAAKsI,EAAgB3uC,CAC/C,IAEI0uC,EACFzzB,EAAK+b,UAELyQ,EAAIxsB,KAAOwuC,EAGbhiB,EAAIkH,cAAgBA,CACtB,IACOuZ,CACT,CAEA,SAASwB,EAASzuC,GAChB,OAAOA,EAAK4G,MAAK,SAAUgF,EAAOC,GAChC,IAAInoB,EAAIkoB,EAAM/oB,MACVc,EAAIkoB,EAAMhpB,MACd,OAAIa,IAAMC,EAAU,EAChBD,EAAIC,GAAW,EACfD,EAAIC,EAAU,OAAlB,CACF,GACF,CAEA,SAAS4qD,EAAiB/hB,GACxB,IAAIpB,EAASoB,EAAIpB,OACbsI,EAAgBlH,EAAIkH,cACxB,GAA6B,kBAAlBA,EAA4B,OAAOA,EAE9C,GAAsB,SAAlBA,EAA0B,CAC5B,IAAI1zB,EAAOwsB,EAAIxsB,KACX0uC,EAAY1uC,EAAKqM,QAAO,SAAUnS,EAAK8R,GACzC,IAAIof,EAASpf,EAAMof,OACnB,MAAO,GAAGppC,QAAO,EAAI4nB,EAAoB,YAAY1P,IAAM,EAAI0P,EAAoB,YAAYwhB,GACjG,GAAG,IACCujB,EAAYznD,KAAKyI,IAAI9L,MAAMqD,MAAM,EAAI0iB,EAAoB,YAAY8kC,IACrE/L,EAAYz7C,KAAKwI,IAAI7L,MAAMqD,MAAM,EAAI0iB,EAAoB,YAAY8kC,IACzE,MAAiC,IAAzB/L,EAAYgM,IAAoB3uC,EAAKjd,OAAS,GAAK,EAC7D,CAEA,OAAOkjC,SAASyN,GAAiB,IAAMtI,EAAO,EAChD,CAEA,SAASmiB,EAAgBN,GAiBvB,OAhBAA,EAAKthD,SAAQ,SAAU6gC,GACrB,IAAIxsB,EAAOwsB,EAAIxsB,KACXi0B,EAAiBzH,EAAIyH,eACrB3nB,EAAMsiC,EAAW5uC,GACrBA,EAAKrU,SAAQ,SAAU4a,GACrB,IAAI1jB,EAAQ0jB,EAAK1jB,MACjB0jB,EAAKm3B,QAAU76C,EAAQypB,EAAM,IAC7B/F,EAAKsoC,gBAAkBC,EAAcjsD,EAAQypB,EAAM,IAAK2nB,EAC1D,IACA,IAAI8a,GAAmB,EAAIta,EAAOuT,QAAQhoC,EAAK9c,MAAM,GAAI,GAAGunB,KAAI,SAAUiU,GACxE,IAAIgf,EAAUhf,EAAMgf,QACpB,OAAOA,CACT,KACA19B,EAAK9c,OAAO,GAAG,GAAGw6C,QAAU,IAAMqR,EAClC/uC,EAAK9c,OAAO,GAAG,GAAG2rD,gBAAkBC,EAAc,IAAMC,EAAkB9a,EAC5E,IACOgZ,CACT,CAEA,SAAS6B,EAActpC,GACrB,IAAIsxB,EAAUhzC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,EAC9EkrD,EAAexpC,EAAOviB,WACtBgsD,EAAgBD,EAAa3qD,MAAM,KACnC6qD,EAAUD,EAAc,IAAM,IAC9BE,EAAeD,EAAQhsD,MAAM,EAAG4zC,GAEpC,OADAmY,EAAc,GAAKE,EACZtY,WAAWoY,EAAcpjD,KAAK,KACvC,CAEA,SAAS+iD,EAAW5uC,GAClB,OAAO,EAAIy0B,EAAOuT,QAAQhoC,EAAKyK,KAAI,SAAUkU,GAC3C,IAAI97B,EAAQ87B,EAAM97B,MAClB,OAAOA,CACT,IACF,CAEA,SAAS2qD,EAAcP,GAcrB,OAbAA,EAAKthD,SAAQ,SAAU6gC,GACrB,IAAIiT,EAAQjT,EAAI5L,WACZ5gB,EAAOwsB,EAAIxsB,KACfA,EAAKrU,SAAQ,SAAU4a,EAAMxhB,GAC3B,IAAIqqD,EAAgBC,EAAarvC,EAAMjb,GACnCuqD,GAAiB,EAAI3lC,EAAgB,YAAYylC,EAAe,GAChExuB,EAAa0uB,EAAe,GAC5BzuB,EAAWyuB,EAAe,GAE9B/oC,EAAKqa,WAAa6e,EAAQ7e,EAC1Bra,EAAKsa,SAAW4e,EAAQ5e,CAC1B,GACF,IACOosB,CACT,CAEA,SAASoC,EAAarvC,EAAMjb,GAC1B,IAAIwqD,EAAsB,EAAVroD,KAAK40B,GACjB0zB,EAAcxvC,EAAK9c,MAAM,EAAG6B,EAAI,GAChC0qD,GAAa,EAAIhb,EAAOuT,QAAQwH,EAAY/kC,KAAI,SAAUmU,GAC5D,IAAI8e,EAAU9e,EAAM8e,QACpB,OAAOA,CACT,KACIA,EAAU19B,EAAKjb,GAAG24C,QAClBgS,EAAeD,EAAa/R,EAChC,MAAO,CAAC6R,EAAYG,EAAe,IAAKH,EAAYE,EAAa,IACnE,CAEA,SAAShC,EAAuBR,GAO9B,OANAA,EAAKthD,SAAQ,SAAUgkD,GACrB,IAAI3vC,EAAO2vC,EAAQ3vC,KACnBA,EAAKrU,SAAQ,SAAU4a,GACrBA,EAAKqpC,eAAiBC,EAAqBF,EAASppC,EACtD,GACF,IACO0mC,CACT,CAEA,SAAS4C,EAAqBF,EAAS/L,GACrC,IAAIpT,EAASmf,EAAQnf,OAEjB5P,EAAagjB,EAAShjB,WACtBC,EAAW+iB,EAAS/iB,SACpBivB,GAAmB,EAAInmC,EAAgB,YAAYi6B,EAASxY,OAAQ,GACpE2kB,EAAKD,EAAiB,GACtBE,EAAKF,EAAiB,GAEtB1kB,GAAU2kB,EAAKC,GAAM,EACrB1M,GAAS1iB,EAAaC,GAAY,EACtC,OAAOlQ,EAAMwW,qBAAqBtjC,WAAM,GAAQ,EAAI+lB,EAAoB,YAAY4mB,GAAQxuC,OAAO,CAACopC,EAAQkY,IAC9G,CAEA,SAASoK,EAAsBT,GAe7B,OAdAA,EAAKthD,SAAQ,SAAU6gC,GACrB,IAAIxsB,EAAOwsB,EAAIxsB,KACXwwB,EAAShE,EAAIgE,OACjBxwB,EAAKrU,SAAQ,SAAU4a,GACrB,IAAIqa,EAAara,EAAKqa,WAClBC,EAAWta,EAAKsa,SAChBuK,EAAS7kB,EAAK6kB,OACd6kB,GAAervB,EAAaC,GAAY,EAExCzxB,EAAMuhB,EAAMwW,qBAAqBtjC,WAAM,GAAQ,EAAI+lB,EAAoB,YAAY4mB,GAAQxuC,OAAO,CAACopC,EAAO,GAAI6kB,KAElH1pC,EAAK2pC,cAAgB9gD,CACvB,GACF,IACO69C,CACT,CAEA,SAASU,EAAwBV,GAS/B,OARAA,EAAKthD,SAAQ,SAAUgkD,GACrB,IAAIQ,EAAmBC,EAA2BT,GAC9CU,EAAoBD,EAA2BT,GAAS,GAC5DQ,EAAmBG,EAAwBH,GAC3CE,EAAoBC,EAAwBD,GAC5CE,EAAqBJ,EAAkBR,GACvCY,EAAqBF,EAAmBV,GAAS,EACnD,IACO1C,CACT,CAEA,SAASuD,EAAuBb,GAC9B,IAAI9b,EAAmB8b,EAAQ/b,aAAaC,iBACxC8O,EAAY8N,EAAgBd,GAMhC,MAJgC,kBAArB9b,IACTA,EAAmB5N,SAAS4N,GAAoB,IAAM8O,GAGjD9O,EAAmB8O,CAC5B,CAEA,SAAS8N,EAAgBd,GACvB,IAAI3vC,EAAO2vC,EAAQ3vC,KACforB,EAASprB,EAAKyK,KAAI,SAAUwU,GAC9B,IAAIyxB,GAAe,EAAI/mC,EAAgB,YAAYsV,EAAMmM,OAAQ,GAE7Dtd,GADM4iC,EAAa,GACfA,EAAa,IAErB,OAAO5iC,CACT,IACA,OAAO5mB,KAAKwI,IAAI7L,MAAMqD,MAAM,EAAI0iB,EAAoB,YAAYwhB,GAClE,CAEA,SAASglB,EAA2BT,GAClC,IAAIve,IAAOttC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GACtEkc,EAAO2vC,EAAQ3vC,KACfwwB,EAASmf,EAAQnf,OACjBmgB,EAAangB,EAAO,GACxB,OAAOxwB,EAAK+Q,QAAO,SAAUmO,GAC3B,IAAIgxB,EAAgBhxB,EAAMgxB,cACtBU,EAAOV,EAAc,GACzB,OAAI9e,EAAawf,GAAQD,EAClBC,EAAOD,CAChB,GACF,CAEA,SAASL,EAAwB1M,GAc/B,OAbAA,EAASh9B,MAAK,SAAUuY,EAAQC,GAC9B,IAAIyxB,GAAuB,EAAIlnC,EAAgB,YAAYwV,EAAO+wB,cAAe,GAE7EnkC,GADI8kC,EAAqB,GACpBA,EAAqB,IAE1BC,GAAuB,EAAInnC,EAAgB,YAAYyV,EAAO8wB,cAAe,GAE7EhkC,GADK4kC,EAAqB,GACrBA,EAAqB,IAE9B,OAAI/kC,EAAKG,EAAW,EAChBH,EAAKG,GAAY,EACjBH,IAAOG,EAAW,OAAtB,CACF,IACO03B,CACT,CAEA,SAAS2M,EAAqB3M,EAAU+L,GACtC,IAAIve,IAAOttC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GACtE0sC,EAASmf,EAAQnf,OACjBoD,EAAe+b,EAAQ/b,aACvBxI,EAASolB,EAAuBb,GACpC/L,EAASj4C,SAAQ,SAAU4a,GACzB,IAAI2pC,EAAgB3pC,EAAK2pC,cACrBtvB,EAAara,EAAKqa,WAClBC,EAAWta,EAAKsa,SAChBiT,EAAqBF,EAAaE,mBAClCwP,GAAS1iB,EAAaC,GAAY,EAElCkwB,EAAYpgC,EAAMwW,qBAAqBtjC,WAAM,GAAQ,EAAI+lB,EAAoB,YAAY4mB,GAAQxuC,OAAO,CAACopC,EAAQkY,KAEjHh5B,GAAW,EAAIV,EAAoB,YAAYmnC,GACnDzmC,EAAS,IAAMwpB,GAAsB1C,GAAQ,EAAI,GACjD7qB,EAAKyqC,UAAY,CAACd,EAAea,EAAWzmC,GAC5C/D,EAAK0qC,iBAAkB,EAAIxc,EAAO+X,mBAAmBjmC,EAAKyqC,WAC1DzqC,EAAKu0B,MAAQ,CACX1f,UAAW,OACXC,aAAc,UAEZ+V,IAAM7qB,EAAKu0B,MAAM1f,UAAY,QACnC,GACF,CAEA,SAASwyB,EAAa+B,GACpB,IAAI3vC,EAAO2vC,EAAQ3vC,KACfkW,EAAiBy5B,EAAQz5B,eACzBD,EAAiB05B,EAAQ15B,eACzBsZ,EAASogB,EAAQpgB,OACrB,OAAOvvB,EAAKyK,KAAI,SAAUoC,EAAK9nB,GAC7B,MAAO,CACLS,KAAM,MACNxC,MAAOusC,EACPrZ,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAO26B,EAAYvB,EAAS5qD,GAC5B4H,MAAOwkD,EAAYxB,EAAS5qD,GAEhC,GACF,CAEA,SAAS8oD,EAAkB8B,GACzB,IAAIzb,EAAoByb,EAAQzb,kBAC5BC,EAAsBwb,EAAQxb,oBAC9BzG,EAAUkgB,EAAa+B,GAM3B,OALAjiB,EAAQ/hC,SAAQ,SAAUyoB,EAAQrvB,GAChCqvB,EAAO8B,eAAiBie,EACxB/f,EAAO4B,eAAiBjxB,EAAImvC,EAC5B9f,EAAOmC,MAAMy5B,GAAK57B,EAAOmC,MAAMw5B,EACjC,IACOriB,CACT,CAEA,SAASogB,EAAgB57B,GACvBA,EAAM8D,eAAiB,CACzB,CAEA,SAASk7B,EAAYvB,EAAS5qD,GAC5B,IAAIyrC,EAASmf,EAAQnf,OACjBxwB,EAAO2vC,EAAQ3vC,KACf4jC,EAAW5jC,EAAKjb,GAChBqmC,EAASwY,EAASxY,OAClBxK,EAAagjB,EAAShjB,WACtBC,EAAW+iB,EAAS/iB,SACxB,MAAO,CACLD,WAAYA,EACZC,SAAUA,EACVkvB,GAAI3kB,EAAO,GACX4kB,GAAI5kB,EAAO,GACX/M,GAAImS,EAAO,GACXlS,GAAIkS,EAAO,GAEf,CAEA,SAAS2gB,EAAYxB,EAAS5qD,GAC5B,IAAIivC,EAAW2b,EAAQ3b,SACnBh0B,EAAO2vC,EAAQ3vC,KACf4jC,EAAW5jC,EAAKjb,GAChB4sB,EAAQiyB,EAASjyB,MACrB,OAAO,EAAI8iB,EAAO/B,WAAW,CAC3B5nB,KAAM6G,GACLqiB,EACL,CAEA,SAAS+Z,EAAqB4B,GAC5B,IAAIz5B,EAAiBy5B,EAAQz5B,eACzBD,EAAiB05B,EAAQ15B,eACzBjW,EAAO2vC,EAAQ3vC,KACfuvB,EAASogB,EAAQpgB,OACrB,OAAOvvB,EAAKyK,KAAI,SAAUoC,EAAK9nB,GAC7B,MAAO,CACLS,KAAM,OACNxC,MAAOusC,EACPza,QAAS66B,EAAQhc,YAAYlF,KAC7BvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAO66B,EAAoBzB,EAAS5qD,GACpC4H,MAAO0kD,EAAoB1B,EAAS5qD,GAExC,GACF,CAEA,SAASqsD,EAAoBzB,EAAS5qD,GACpC,IAAI4uC,EAAcgc,EAAQhc,YACtB3zB,EAAO2vC,EAAQ3vC,KACfqvB,EAAYsE,EAAYtE,UACxBuU,EAAW5jC,EAAKjb,GAChB2+C,GAAgB,EAAI/tB,EAAS,YAAY0Z,GACzCY,EAAQ,GAYZ,MAVsB,WAAlByT,IACFzT,EAAQZ,EAAU1yB,QAAQ,SAAUinC,EAASp+C,MAC7CyqC,EAAQA,EAAMtzB,QAAQ,YAAainC,EAASiL,iBAC5C5e,EAAQA,EAAMtzB,QAAQ,UAAWinC,EAAS/gD,QAGtB,aAAlB6gD,IACFzT,EAAQZ,EAAUuU,IAGb,CACLje,QAASsK,EACTpd,SAAU+wB,EAASgM,eAEvB,CAEA,SAASyB,EAAoB1B,EAAS5qD,GACpC,IAAI4H,EAAQgjD,EAAQhc,YAAYhnC,MAChC,OAAOA,CACT,CAEA,SAASqhD,EAA0B2B,GACjC,IAAIz5B,EAAiBy5B,EAAQz5B,eACzBD,EAAiB05B,EAAQ15B,eACzBjW,EAAO2vC,EAAQ3vC,KACfuvB,EAASogB,EAAQpgB,OACrB,OAAOvvB,EAAKyK,KAAI,SAAUoC,EAAK9nB,GAC7B,MAAO,CACLS,KAAM,WACNxC,MAAOusC,EACPza,QAAS66B,EAAQ/b,aAAanF,KAC9BvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAO+6B,EAAyB3B,EAAS5qD,GACzC4H,MAAO4kD,EAAyB5B,EAAS5qD,GAE7C,GACF,CAEA,SAASkpD,EAA+B0B,GACtC,IAAI3vC,EAAO2vC,EAAQ3vC,KACf0tB,EAAUsgB,EAA0B2B,GAIxC,OAHAjiB,EAAQ/hC,SAAQ,SAAUyoB,EAAQrvB,GAChCqvB,EAAOznB,MAAM6tB,SAAW,CAAC,EAAGxa,EAAKjb,GAAGksD,gBACtC,IACOvjB,CACT,CAEA,SAAS4jB,EAAyB3B,EAAS5qD,GACzC,IAAIib,EAAO2vC,EAAQ3vC,KACf4jC,EAAW5jC,EAAKjb,GACpB,MAAO,CACL0nB,OAAQm3B,EAASoN,UAErB,CAEA,SAASO,EAAyB5B,EAAS5qD,GACzC,IAAI6uC,EAAe+b,EAAQ/b,aACvB5zB,EAAO2vC,EAAQ3vC,KACf+zB,EAAiBH,EAAaG,eAC9BpiB,EAAQ3R,EAAKjb,GAAG4sB,MACpB,OAAO,EAAI8iB,EAAO/B,WAAW,CAC3BtY,OAAQzI,EACR6I,SAAU,CAACxa,EAAKjb,GAAGksD,gBAAiB,IACnCld,EACL,CAEA,SAASma,EAAsByB,GAC7B,IAAIz5B,EAAiBy5B,EAAQz5B,eACzBD,EAAiB05B,EAAQ15B,eACzBjW,EAAO2vC,EAAQ3vC,KACfuvB,EAASogB,EAAQpgB,OACrB,OAAOvvB,EAAKyK,KAAI,SAAUoC,EAAK9nB,GAC7B,MAAO,CACLS,KAAM,OACNxC,MAAOusC,EACPza,QAAS66B,EAAQ/b,aAAanF,KAC9BvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOi7B,EAAqB7B,EAAS5qD,GACrC4H,MAAO8kD,EAAqB9B,EAAS5qD,GAEzC,GACF,CAEA,SAASopD,EAA2BwB,GAClC,IAAI3vC,EAAO2vC,EAAQ3vC,KACf0tB,EAAUwgB,EAAsByB,GAIpC,OAHAjiB,EAAQ/hC,SAAQ,SAAUyoB,EAAQrvB,GAChCqvB,EAAOmC,MAAM1D,SAAW7S,EAAKjb,GAAGisD,UAAU,EAC5C,IACOtjB,CACT,CAEA,SAAS8jB,EAAqB7B,EAAS5qD,GACrC,IAAI6uC,EAAe+b,EAAQ/b,aACvB5zB,EAAO2vC,EAAQ3vC,KACfqvB,EAAYuE,EAAavE,UACzBkV,EAAUvkC,EAAKjb,GACfisD,EAAYzM,EAAQyM,UACpBxrD,EAAO++C,EAAQ/+C,KACfqpD,EAAkBtK,EAAQsK,gBAC1BhsD,EAAQ0hD,EAAQ1hD,MAChB6gD,GAAgB,EAAI/tB,EAAS,YAAY0Z,GACzCY,EAAQ,GAYZ,MAVsB,WAAlByT,IACFzT,EAAQZ,EAAU1yB,QAAQ,SAAUnX,GACpCyqC,EAAQA,EAAMtzB,QAAQ,YAAakyC,GACnC5e,EAAQA,EAAMtzB,QAAQ,UAAW9Z,IAGb,aAAlB6gD,IACFzT,EAAQZ,EAAUrvB,EAAKjb,KAGlB,CACL4gC,QAASsK,EACTpd,SAAUm+B,EAAU,GAExB,CAEA,SAASS,EAAqB9B,EAAS5qD,GACrC,IAAI6uC,EAAe+b,EAAQ/b,aACvB5zB,EAAO2vC,EAAQ3vC,KACfykC,EAAWzkC,EAAKjb,GAChB4sB,EAAQ8yB,EAAS9yB,MACjBmpB,EAAQ2J,EAAS3J,MACjBnuC,EAAQinC,EAAajnC,MACzB,OAAO,EAAI8nC,EAAO/B,WAAW1hB,EAAc,CACzClG,KAAM6G,GACLmpB,GAAQnuC,EACb,C,qCCxkBa4c,EAAA,OAEb,IAAIC,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQwqC,MAAQA,EAEhB,IAAIlc,EAAmB/G,EAAuBD,EAAQ,QAElDoM,EAAWnM,EAAuBD,EAAQ,QAE1CI,EAAkBH,EAAuBD,EAAQ,QAEjDK,EAAsBJ,EAAuBD,EAAQ,QAErDgrB,EAAWhrB,EAAQ,OAEnBmoC,EAASnoC,EAAQ,OAEjBoH,EAAQpH,EAAQ,OAEhBkH,EAASlH,EAAQ,MAEjBkrB,EAASlrB,EAAQ,OAErB,SAASnQ,EAAQ5R,EAAQspB,GAAkB,IAAIhoB,EAAO/E,OAAO+E,KAAKtB,GAAS,GAAIzD,OAAOgK,sBAAuB,CAAE,IAAIlJ,EAAUd,OAAOgK,sBAAsBvG,GAAaspB,IAAgBjsB,EAAUA,EAAQksB,QAAO,SAAUre,GAAO,OAAO3O,OAAOyJ,yBAAyBhG,EAAQkL,GAAKrE,UAAY,KAAIvF,EAAK9D,KAAKnB,MAAMiF,EAAMjE,EAAU,CAAE,OAAOiE,CAAM,CAEpV,SAASkoB,EAAcvqB,GAAU,IAAK,IAAI1B,EAAI,EAAGA,EAAIjB,UAAUf,OAAQgC,IAAK,CAAE,IAAIU,EAAyB,MAAhB3B,UAAUiB,GAAajB,UAAUiB,GAAK,CAAC,EAAOA,EAAI,EAAKqU,EAAQrV,OAAO0B,IAAS,GAAMkG,SAAQ,SAAU/G,IAAO,EAAI2rB,EAAiB,YAAY9pB,EAAQ7B,EAAKa,EAAOb,GAAO,IAAeb,OAAOktB,0BAA6BltB,OAAOuJ,iBAAiB7G,EAAQ1C,OAAOktB,0BAA0BxrB,IAAmB2T,EAAQrV,OAAO0B,IAASkG,SAAQ,SAAU/G,GAAOb,OAAOC,eAAeyC,EAAQ7B,EAAKb,OAAOyJ,yBAAyB/H,EAAQb,GAAO,GAAM,CAAE,OAAO6B,CAAQ,CAEtiB,SAASgmC,EAAMO,GACb,IAAIlB,EAAShoC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9EipC,EAASjB,EAAOiB,OACfA,IAAQA,EAAS,IACtB,IAAI4kB,GAAS,EAAIld,EAAO6G,gBAAgBvO,EAAQ2kB,EAAOrf,YAAa,SACpEsf,EAASC,EAAkBD,EAAQ3kB,GACnC2kB,EAASE,EAAuBF,EAAQ3kB,GACxC2kB,EAASG,EAAoBH,EAAQ3kB,IACrC,EAAIuH,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQ4kB,EACR/sD,IAAK,QACLqoC,eAAgB8kB,EAChB7jB,oBAAqB8jB,EACrBvkB,aAAcwkB,KAEhB,EAAI1d,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQ4kB,EACR/sD,IAAK,aACLqoC,eAAgBid,EAChBhc,oBAAqBic,KAEvB,EAAI5V,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQ4kB,EACR/sD,IAAK,aACLqoC,eAAgBwI,GAEpB,CAEA,SAASmc,EAAkBD,EAAQ3kB,GACjC,IAAIZ,EAAYY,EAAMZ,UACtB,IAAKA,EAAW,MAAO,GACvB,IAAI8lB,EAAY9lB,EAAU8lB,UACtBC,EAAiB/lB,EAAU+lB,eAC3B/mB,EAASgB,EAAUhB,OACnBoU,EAAYpT,EAAUoT,UAgB1B,OAfAmS,EAAOhmD,SAAQ,SAAUymD,GACvB,IAAIpyC,EAAOoyC,EAAUpyC,KACrBoyC,EAAUC,WAAa,GACvBD,EAAUE,cAAgBJ,EAAUznC,KAAI,SAAUkB,EAAM5mB,GACtD,IAAI2K,EAAMic,EAAKjc,IACXC,EAAMgc,EAAKhc,IACXoZ,EAAI/I,EAAKjb,GACM,kBAAR2K,IAAkBA,EAAMqZ,GAChB,kBAARpZ,IAAkBA,EAAM,GAClB,kBAANoZ,IAAgBA,EAAIpZ,GAC/B,IAAI0iD,GAActpC,EAAIpZ,IAAQD,EAAMC,GAAOy7B,EAE3C,OADAgnB,EAAUC,WAAWttD,GAAKstD,EACnB1hC,EAAMwW,qBAAqBtjC,WAAM,GAAQ,EAAI+lB,EAAoB,YAAY41B,GAAWx9C,OAAO,CAACqwD,EAAYF,EAAeptD,KACpI,GACF,IACO4sD,CACT,CAEA,SAASE,EAAuBF,EAAQ3kB,GACtC,IAAIZ,EAAYY,EAAMZ,UACtB,IAAKA,EAAW,MAAO,GACvB,IAAIoT,EAAYpT,EAAUoT,UACtB2S,EAAiB/lB,EAAU+lB,eAS/B,OARAR,EAAOhmD,SAAQ,SAAUymD,GACvB,IAAIC,EAAaD,EAAUC,WACvBpiB,EAAQmiB,EAAUniB,MAClBY,EAAWZ,EAAMY,SACrBuhB,EAAU7O,cAAgB8O,EAAW5nC,KAAI,SAAUqD,EAAG/oB,GACpD,OAAO4rB,EAAMwW,qBAAqBtjC,WAAM,GAAQ,EAAI+lB,EAAoB,YAAY41B,GAAWx9C,OAAO,CAAC8rB,EAAI+iB,EAAUshB,EAAeptD,KACtI,GACF,IACO4sD,CACT,CAEA,SAASG,EAAoBH,EAAQ3kB,GACnC,IAAIZ,EAAYY,EAAMZ,UACtB,IAAKA,EAAW,MAAO,GAEvB,IAAImmB,GAAuB,EAAI5oC,EAAgB,YAAYyiB,EAAUoT,UAAW,GAC5E3+B,EAAI0xC,EAAqB,GACzB7yB,EAAI6yB,EAAqB,GAkB7B,OAhBAZ,EAAOhmD,SAAQ,SAAUymD,GACvB,IAAI7O,EAAgB6O,EAAU7O,cAC1BC,EAAaD,EAAc94B,KAAI,SAAUmB,GAC3C,IAAIC,GAAQ,EAAIlC,EAAgB,YAAYiC,EAAO,GAC/C4mC,EAAK3mC,EAAM,GACX4mC,EAAK5mC,EAAM,GAEXuP,EAAYo3B,EAAK3xC,EAAI,OAAS,QAC9Bwa,EAAeo3B,EAAK/yB,EAAI,MAAQ,SACpC,MAAO,CACLtE,UAAWA,EACXC,aAAcA,EAElB,IACA+2B,EAAU5O,WAAaA,CACzB,IACOmO,CACT,CAEA,SAASI,EAAeK,GACtB,IAAIl8B,EAAiBk8B,EAAUl8B,eAC3BD,EAAiBm8B,EAAUn8B,eAC3BsZ,EAAS6iB,EAAU7iB,OACvB,MAAO,CAAC,CACN/pC,KAAM,WACNxC,MAAOusC,EACPrZ,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOm8B,EAAcN,GACrBzlD,MAAOgmD,EAAcP,IAEzB,CAEA,SAASJ,EAAoBI,EAAWjlB,GACtC,IAAIqS,EAAYrS,EAAQH,MAAMZ,UAAUoT,UACpCprB,EAAS29B,EAAeK,GAAW,GACnCljC,EAAWkF,EAAOmC,MAAM9J,OAAO1pB,OAC/B0pB,EAAS,IAAI7kB,MAAMsnB,GAAUpE,KAAK,GAAGL,KAAI,SAAUoC,GACrD,OAAO,EAAIjD,EAAoB,YAAY41B,EAC7C,IAEA,OADAprB,EAAOmC,MAAM9J,OAASA,EACf,CAAC2H,EACV,CAEA,SAASs+B,EAAcN,GACrB,IAAIE,EAAgBF,EAAUE,cAC9B,MAAO,CACL7lC,OAAQ6lC,EACRrlD,OAAO,EAEX,CAEA,SAAS0lD,EAAcP,GACrB,IAAIhe,EAAage,EAAUhe,WACvBziB,EAAQygC,EAAUzgC,MAClBihC,GAAiB,EAAIniC,EAAOyL,cAAcvK,GAC9CihC,EAAe,GAAK,GACpB,IAAIC,EAAoB,CACtBz4B,OAAQzI,EACR7G,MAAM,EAAI2F,EAAOwL,sBAAsB22B,IAEzC,OAAO,EAAIne,EAAO/B,WAAWmgB,EAAmBze,EAClD,CAEA,SAAS6d,EAAkB//B,EAAOlG,GAChC,IAAIuK,EAAQvK,EAAMuK,MACd01B,EAAc/5B,EAAMqE,MAAM9J,OAC1By/B,EAAiBD,EAAYlpD,OAC7BopD,EAAY51B,EAAM9J,OAAO1pB,OAE7B,GAAIopD,EAAYD,EAAgB,CAC9B,IAAIE,EAAYH,EAAY/oD,OAAO,GAAG,GAClCmpD,EAAe,IAAIzkD,MAAMukD,EAAYD,GAAgBphC,KAAK,GAAGL,KAAI,SAAUoC,GAC7E,OAAO,EAAIjD,EAAoB,YAAYwiC,EAC7C,IACAH,EAAYjnD,KAAKnB,MAAMooD,GAAa,EAAIriC,EAAoB,YAAYyiC,GAC1E,MAAWF,EAAYD,GACrBD,EAAYjyB,OAAOmyB,EAEvB,CAEA,SAASjC,EAAekI,GACtB,IAAIE,EAAgBF,EAAUE,cAC1Bp8B,EAAiBk8B,EAAUl8B,eAC3BD,EAAiBm8B,EAAUn8B,eAC3BsZ,EAAS6iB,EAAU7iB,OACvB,OAAO+iB,EAAc7nC,KAAI,SAAUoC,EAAK9nB,GACtC,MAAO,CACLS,KAAM,SACNxC,MAAOusC,EACPrZ,eAAgBA,EAChBD,eAAgBA,EAChBnB,QAASs9B,EAAUrhD,MAAM09B,KACzBlY,MAAOu8B,EAAcV,EAAWrtD,GAChC4H,MAAOggD,EAAcyF,EAAWrtD,GAEpC,GACF,CAEA,SAASolD,EAAoBiI,GAC3B,IAAI1kB,EAAUwc,EAAekI,GAI7B,OAHA1kB,EAAQ/hC,SAAQ,SAAUyoB,GACxB,OAAOA,EAAOmC,MAAMzI,EAAI,GAC1B,IACO4f,CACT,CAEA,SAASolB,EAAcV,EAAWrtD,GAChC,IAAIutD,EAAgBF,EAAUE,cAC1BvhD,EAAQqhD,EAAUrhD,MAClBq6B,EAASr6B,EAAMq6B,OACfvY,EAAWy/B,EAAcvtD,GAC7B,MAAO,CACLs5B,GAAIxL,EAAS,GACbyL,GAAIzL,EAAS,GACb/E,EAAGsd,EAEP,CAEA,SAASuhB,EAAcyF,EAAWrtD,GAChC,IAAIgM,EAAQqhD,EAAUrhD,MAClB4gB,EAAQygC,EAAUzgC,MAClBhlB,EAAQoE,EAAMpE,MAClB,OAAO,EAAI8nC,EAAO/B,WAAW,CAC3BtY,OAAQzI,GACPhlB,EACL,CAEA,SAAS8oC,EAAe2c,GACtB,IAAI7O,EAAgB6O,EAAU7O,cAC1BrtB,EAAiBk8B,EAAUl8B,eAC3BD,EAAiBm8B,EAAUn8B,eAC3BsZ,EAAS6iB,EAAU7iB,OACvB,OAAOgU,EAAc94B,KAAI,SAAUoC,EAAK9nB,GACtC,MAAO,CACLS,KAAM,OACNxC,MAAOusC,EACPza,QAASs9B,EAAUniB,MAAMxB,KACzBvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOw8B,EAAcX,EAAWrtD,GAChC4H,MAAOiuC,EAAcwX,EAAWrtD,GAEpC,GACF,CAEA,SAASguD,EAAcX,EAAWrtD,GAChC,IAAIw+C,EAAgB6O,EAAU7O,cAC1BtT,EAAQmiB,EAAUniB,MAClBjwB,EAAOoyC,EAAUpyC,KACjBkO,EAAS+hB,EAAM/hB,OACfmhB,EAAYY,EAAMZ,UAClBxc,EAAWmgC,EAAiBzP,EAAcx+C,GAAImpB,GAC9C+kC,EAAYjzC,EAAKjb,GAAKib,EAAKjb,GAAG9B,WAAa,IAC3CygD,GAAgB,EAAI/tB,EAAS,YAAY0Z,GAG7C,MAFsB,WAAlBqU,IAA4BuP,EAAY5jB,EAAU1yB,QAAQ,UAAWs2C,IACnD,aAAlBvP,IAA8BuP,EAAY5jB,EAAU4jB,IACjD,CACLttB,QAASstB,EACTpgC,SAAUA,EAEd,CAEA,SAASmgC,EAAiBt0B,EAAOC,GAC/B,IAAIC,GAAQ,EAAIjV,EAAgB,YAAY+U,EAAO,GAC/C7d,EAAI+d,EAAM,GACVc,EAAId,EAAM,GAEVK,GAAQ,EAAItV,EAAgB,YAAYgV,EAAO,GAC/CiL,EAAK3K,EAAM,GACX4K,EAAK5K,EAAM,GAEf,MAAO,CAACpe,EAAI+oB,EAAIlK,EAAImK,EACtB,CAEA,SAAS+Q,EAAcwX,EAAWrtD,GAChC,IAAIkrC,EAAQmiB,EAAUniB,MAClBte,EAAQygC,EAAUzgC,MAClB6xB,EAAa4O,EAAU5O,WACvB72C,EAAQsjC,EAAMtjC,MAEdumD,EAAuBliC,EAAc,CACvClG,KAAM6G,GACL6xB,EAAWz+C,IAEd,OAAO,EAAI0vC,EAAO/B,WAAWwgB,EAAsBvmD,EACrD,C,qCCzSa4c,EAAA,OAEb,IAAIC,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQmqC,UAAYA,EAEpB,IAAIziB,EAAkBH,EAAuBD,EAAQ,QAEjDgH,EAAmB/G,EAAuBD,EAAQ,QAElDK,EAAsBJ,EAAuBD,EAAQ,QAErDgrB,EAAWhrB,EAAQ,OAEnBmoC,EAASnoC,EAAQ,OAEjBoH,EAAQpH,EAAQ,OAEhBkrB,EAASlrB,EAAQ,OAErB,SAASnQ,EAAQ5R,EAAQspB,GAAkB,IAAIhoB,EAAO/E,OAAO+E,KAAKtB,GAAS,GAAIzD,OAAOgK,sBAAuB,CAAE,IAAIlJ,EAAUd,OAAOgK,sBAAsBvG,GAAaspB,IAAgBjsB,EAAUA,EAAQksB,QAAO,SAAUre,GAAO,OAAO3O,OAAOyJ,yBAAyBhG,EAAQkL,GAAKrE,UAAY,KAAIvF,EAAK9D,KAAKnB,MAAMiF,EAAMjE,EAAU,CAAE,OAAOiE,CAAM,CAEpV,SAASkoB,EAAcvqB,GAAU,IAAK,IAAI1B,EAAI,EAAGA,EAAIjB,UAAUf,OAAQgC,IAAK,CAAE,IAAIU,EAAyB,MAAhB3B,UAAUiB,GAAajB,UAAUiB,GAAK,CAAC,EAAOA,EAAI,EAAKqU,EAAQrV,OAAO0B,IAAS,GAAMkG,SAAQ,SAAU/G,IAAO,EAAI2rB,EAAiB,YAAY9pB,EAAQ7B,EAAKa,EAAOb,GAAO,IAAeb,OAAOktB,0BAA6BltB,OAAOuJ,iBAAiB7G,EAAQ1C,OAAOktB,0BAA0BxrB,IAAmB2T,EAAQrV,OAAO0B,IAASkG,SAAQ,SAAU/G,GAAOb,OAAOC,eAAeyC,EAAQ7B,EAAKb,OAAOyJ,yBAAyB/H,EAAQb,GAAO,GAAM,CAAE,OAAO6B,CAAQ,CAEtiB,SAAS2lC,EAAUY,GACjB,IAAIlB,EAAShoC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E2oC,EAAQX,EAAOW,MACfL,EAAY,GAEZK,IACFL,EAAY+mB,EAA4B1mB,GACxCL,EAAYgnB,EAAoBhnB,EAAWY,GAC3CZ,EAAYinB,EAAwBjnB,EAAWY,GAC/CZ,EAAYknB,EAA0BlnB,GACtCA,EAAYmnB,EAAwBnnB,GACpCA,EAAYonB,EAA2BpnB,GACvCA,EAAY,CAACA,IAGf,IAAIqnB,EAAqBrnB,EACrBA,EAAUrpC,SAAWqpC,EAAU,GAAGqC,OAAMglB,EAAqB,KACjE,EAAIlf,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQ0mB,EACR7uD,IAAK,qBACLqoC,eAAgBymB,EAChBrlB,aAAcslB,EACdlmB,aAAcmmB,KAEhB,EAAIrf,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQ0mB,EACR7uD,IAAK,qBACLqoC,eAAgB0I,EAChBtH,aAAcwlB,EACdpmB,aAAcqmB,KAEhB,EAAIvf,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQ0mB,EACR7uD,IAAK,gBACLqoC,eAAgB8mB,KAElB,EAAIxf,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQ0mB,EACR7uD,IAAK,iBACLqoC,eAAgBgV,IAElBjV,EAAMZ,UAAYA,EAAU,EAC9B,CAEA,SAAS+mB,EAA4B1mB,GACnC,OAAO,EAAIgI,EAAO/B,YAAW,EAAI/hB,EAAM6E,WAAWk8B,EAAOvf,iBAAkB1F,EAC7E,CAEA,SAAS2mB,EAAoBhnB,EAAWY,GACtC,IAAIzb,EAAOyb,EAAM9sC,OAAOqxB,KACpBif,EAASpE,EAAUoE,OAKvB,OAJApE,EAAUoT,UAAYhP,EAAO/lB,KAAI,SAAU1B,EAAGhkB,GAC5C,MAAiB,kBAANgkB,EAAuBA,EAC3Bkd,SAASld,GAAK,IAAMwI,EAAKxsB,EAClC,IACOqnC,CACT,CAEA,SAASinB,EAAwBjnB,EAAWY,GAC1C,IAAIzb,EAAOyb,EAAM9sC,OAAOqxB,KACpBkf,EAAWrE,EAAUqE,SACrBrF,EAASgB,EAAUhB,OACnBuX,EAAYz7C,KAAKyI,IAAI9L,MAAMqD,MAAM,EAAI0iB,EAAoB,YAAY2H,IAAS,EAC5D,kBAAX6Z,IAAqBA,EAASnF,SAASmF,GAAU,IAAMuX,GAClE,IAAIqR,EAAW5oB,EAASqF,EAKxB,OAJArE,EAAU6nB,WAAa,IAAIrsD,MAAM6oC,GAAU3lB,KAAK,GAAGL,KAAI,SAAUoC,EAAK9nB,GACpE,OAAOivD,GAAYjvD,EAAI,EACzB,IACAqnC,EAAUhB,OAASA,EACZgB,CACT,CAEA,SAASknB,EAA0BlnB,GACjC,IAAI8lB,EAAY9lB,EAAU8lB,UACtB1S,EAAYpT,EAAUoT,UACtBpU,EAASgB,EAAUhB,OACnBxK,EAAawL,EAAUxL,WACvB2uB,EAAsB,EAAVroD,KAAK40B,GACjBo4B,EAAehC,EAAUnvD,OACzBoxD,EAAe5E,EAAY2E,EAC3BnR,EAAS,IAAIn7C,MAAMssD,GAAcppC,KAAK,GAAGL,KAAI,SAAUoC,EAAK9nB,GAC9D,OAAOovD,EAAepvD,EAAI67B,CAC5B,IAKA,OAJAwL,EAAU+lB,eAAiBpP,EAC3B3W,EAAUgoB,iBAAmBrR,EAAOt4B,KAAI,SAAU9L,GAChD,OAAOgS,EAAMwW,qBAAqBtjC,WAAM,GAAQ,EAAI+lB,EAAoB,YAAY41B,GAAWx9C,OAAO,CAACopC,EAAQzsB,IACjH,IACOytB,CACT,CAEA,SAASmnB,EAAwBnnB,GAC/B,IAAI6nB,EAAa7nB,EAAU6nB,WACvBI,EAAYJ,EAAW,GAAK,EAIhC,OAHA7nB,EAAUkoB,WAAaL,EAAWxpC,KAAI,SAAUqD,GAC9C,OAAOA,EAAIumC,CACb,IACOjoB,CACT,CAEA,SAASonB,EAA2BpnB,GAClC,IAAI+lB,EAAiB/lB,EAAU+lB,eAC3B3S,EAAYpT,EAAUoT,UACtBpU,EAASgB,EAAUhB,OACnBgE,EAAYhD,EAAUgD,UAK1B,OAJAhE,GAAUgE,EAAUyB,SACpBzE,EAAUmoB,kBAAoBpC,EAAe1nC,KAAI,SAAU64B,GACzD,OAAO3yB,EAAMwW,qBAAqBtjC,WAAM,GAAQ,EAAI+lB,EAAoB,YAAY41B,GAAWx9C,OAAO,CAACopC,EAAQkY,IACjH,IACOlX,CACT,CAEA,SAASsnB,EAAmBtnB,GAC1B,IAAIkoB,EAAaloB,EAAUkoB,WACvB1sB,EAAUwE,EAAUxE,QACpB1R,EAAiBkW,EAAUlW,eAC3BD,EAAiBmW,EAAUnW,eAC3BsZ,EAASnD,EAAUmD,OACnB/pC,EAAOoiC,EAAU,aAAe,OACpC,OAAO0sB,EAAW7pC,KAAI,SAAUoC,EAAK9nB,GACnC,MAAO,CACLS,KAAMA,EACNxC,MAAOusC,EACPza,QAASsX,EAAUkI,UAAU7F,KAC7BvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOi+B,EAAkBpoB,EAAWrnC,GACpC4H,MAAO8nD,EAAkBroB,EAAWrnC,GAExC,GACF,CAEA,SAASyvD,EAAkBpoB,EAAWrnC,GACpC,IAAI6iC,EAAUwE,EAAUxE,QACpB0sB,EAAaloB,EAAUkoB,WACvBpC,EAAY9lB,EAAU8lB,UACtB1S,EAAYpT,EAAUoT,UACtB0U,EAAehC,EAAUnvD,OACzBwzB,EAAQ,CACV8H,GAAImhB,EAAU,GACdlhB,GAAIkhB,EAAU,GACd1xB,EAAGwmC,EAAWvvD,IAGhB,OADI6iC,IAASrR,EAAM0L,KAAOiyB,GACnB39B,CACT,CAEA,SAASk+B,EAAkBroB,EAAWrnC,GACpC,IAAIuvC,EAAYlI,EAAUkI,UACtB2f,EAAa7nB,EAAU6nB,WACvB9B,EAAiB/lB,EAAU+lB,eAC3BvqB,EAAUwE,EAAUxE,QACpB4X,EAAYpT,EAAUoT,UACtB7tB,EAAQ2iB,EAAU3iB,MAClBhlB,EAAQ2nC,EAAU3nC,MACtBA,EAAQqkB,EAAc,CACpBlG,KAAM,oBACLne,GACH,IAAImuB,EAAYm5B,EAAW,GAAK,EAEhC,GAAIrsB,EAAS,CACX,IAAIsd,EAASv0B,EAAMwW,qBAAqBtjC,WAAM,GAAQ,EAAI+lB,EAAoB,YAAY41B,GAAWx9C,OAAO,CAACiyD,EAAW,GAAI9B,EAAe,MAEvIhN,EAASx0B,EAAMwW,qBAAqBtjC,WAAM,GAAQ,EAAI+lB,EAAoB,YAAY41B,GAAWx9C,OAAO,CAACiyD,EAAW,GAAI9B,EAAe,MAE3Ir3B,GAAY,EAAI2Z,EAAOigB,wBAAwBlV,EAAW0F,EAAQC,EACpE,CAKA,GAHAx4C,GAAQ,EAAI8nC,EAAO/B,YAAW,EAAI/hB,EAAM6E,WAAW7oB,GAAO,GAAO,CAC/DmuB,UAAWA,KAERnJ,EAAM5uB,OAAQ,OAAO4J,EAC1B,IAAIqgD,EAAWr7B,EAAM5uB,OACrB,OAAO,EAAI0xC,EAAO/B,WAAW/lC,EAAO,CAClCytB,OAAQzI,EAAM5sB,EAAIioD,IAEtB,CAEA,SAAS2G,EAAsBjiC,EAAQ0a,EAAWrnC,EAAGooC,GACnD,IAAI7W,EAAQ5E,EAAO3sB,GACnB,GAAKuxB,EAAL,CACA,IAAIp2B,EAASitC,EAAQH,MAAM9sC,OACvB0nC,EAAUwE,EAAUxE,QACpBpiC,EAAO8wB,EAAM,GAAG9wB,KAChBumD,EAAcnkB,EAAU,aAAe,OACvCokB,EAASD,IAAgBvmD,EACxBwmD,IACL11B,EAAM3qB,SAAQ,SAAUgT,GACtB,OAAOze,EAAOu0B,SAAS9V,EACzB,IACA+S,EAAO3sB,GAAK,KAVM,CAWpB,CAEA,SAAS6uD,EAAsB1hC,EAAOkC,GACpC,IAAI6N,EAAO7N,EAAOmC,MAAM0L,KACJ,kBAATA,IACX/P,EAAMqE,MAAM0L,KAAOA,EACrB,CAEA,SAAS0T,EAAmBvJ,GAC1B,IAAI6nB,EAAa7nB,EAAU6nB,WACvBrsB,EAAUwE,EAAUxE,QACpB1R,EAAiBkW,EAAUlW,eAC3BD,EAAiBmW,EAAUnW,eAC3BsZ,EAASnD,EAAUmD,OACnB/pC,EAAOoiC,EAAU,aAAe,OACpC,OAAOqsB,EAAWxpC,KAAI,SAAUoC,EAAK9nB,GACnC,MAAO,CACLS,KAAMA,EACNxC,MAAOusC,EACPrZ,eAAgBA,EAChBD,eAAgBA,EAChBnB,QAASsX,EAAUkD,UAAUb,KAC7BlY,MAAOo+B,EAAkBvoB,EAAWrnC,GACpC4H,MAAOyuC,EAAkBhP,EAAWrnC,GAExC,GACF,CAEA,SAAS4vD,EAAkBvoB,EAAWrnC,GACpC,IAAIkvD,EAAa7nB,EAAU6nB,WACvBzU,EAAYpT,EAAUoT,UACtB0S,EAAY9lB,EAAU8lB,UACtBtqB,EAAUwE,EAAUxE,QACpBrR,EAAQ,CACV8H,GAAImhB,EAAU,GACdlhB,GAAIkhB,EAAU,GACd1xB,EAAGmmC,EAAWlvD,IAEZmvD,EAAehC,EAAUnvD,OAE7B,OADI6kC,IAASrR,EAAM0L,KAAOiyB,GACnB39B,CACT,CAEA,SAAS6kB,EAAkBhP,EAAWrnC,GACpC,IAAIuqC,EAAYlD,EAAUkD,UACtB3d,EAAQ2d,EAAU3d,MAClBhlB,EAAQ2iC,EAAU3iC,MAItB,GAHAA,EAAQqkB,EAAc,CACpBlG,KAAM,oBACLne,IACEglB,EAAM5uB,OAAQ,OAAO4J,EAC1B,IAAIqgD,EAAWr7B,EAAM5uB,OACrB,OAAO,EAAI0xC,EAAO/B,WAAW/lC,EAAO,CAClCytB,OAAQzI,EAAM5sB,EAAIioD,IAEtB,CAEA,SAAS6G,EAAsBniC,EAAQ0a,EAAWrnC,EAAGooC,GACnD,IAAI7W,EAAQ5E,EAAO3sB,GACnB,GAAKuxB,EAAL,CACA,IAAIp2B,EAASitC,EAAQH,MAAM9sC,OACvB0nC,EAAUwE,EAAUxE,QACpBpiC,EAAO8wB,EAAM,GAAG9wB,KAChBovD,EAAahtB,EAAU,aAAe,OACtCokB,EAAS4I,IAAepvD,EACvBwmD,IACL11B,EAAM3qB,SAAQ,SAAUgT,GACtB,OAAOze,EAAOu0B,SAAS9V,EACzB,IACA+S,EAAO3sB,GAAK,KAVM,CAWpB,CAEA,SAAS+uD,EAAsB5hC,EAAOkC,GACpC,IAAI6N,EAAO7N,EAAOmC,MAAM0L,KACJ,kBAATA,IACX/P,EAAMqE,MAAM0L,KAAOA,EACrB,CAEA,SAAS8xB,EAAkB3nB,GACzB,IAAIgoB,EAAmBhoB,EAAUgoB,iBAC7Bl+B,EAAiBkW,EAAUlW,eAC3BD,EAAiBmW,EAAUnW,eAC3BsZ,EAASnD,EAAUmD,OACvB,OAAO6kB,EAAiB3pC,KAAI,SAAUoC,EAAK9nB,GACzC,MAAO,CACLS,KAAM,WACNxC,MAAOusC,EACPza,QAASsX,EAAU8C,SAAST,KAC5BvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOs+B,EAAiBzoB,EAAWrnC,GACnC4H,MAAOmoD,EAAiB1oB,EAAWrnC,GAEvC,GACF,CAEA,SAAS8vD,EAAiBzoB,EAAWrnC,GACnC,IAAIy6C,EAAYpT,EAAUoT,UACtB4U,EAAmBhoB,EAAUgoB,iBAC7B3nC,EAAS,CAAC+yB,EAAW4U,EAAiBrvD,IAC1C,MAAO,CACL0nB,OAAQA,EAEZ,CAEA,SAASqoC,EAAiB1oB,EAAWrnC,GACnC,IAAImqC,EAAW9C,EAAU8C,SACrBvd,EAAQud,EAASvd,MACjBhlB,EAAQuiC,EAASviC,MACrB,IAAKglB,EAAM5uB,OAAQ,OAAO4J,EAC1B,IAAIqgD,EAAWr7B,EAAM5uB,OACrB,OAAO,EAAI0xC,EAAO/B,WAAW/lC,EAAO,CAClCytB,OAAQzI,EAAM5sB,EAAIioD,IAEtB,CAEA,SAAS/K,EAAmB7V,GAC1B,IAAImoB,EAAoBnoB,EAAUmoB,kBAC9Br+B,EAAiBkW,EAAUlW,eAC3BD,EAAiBmW,EAAUnW,eAC3BsZ,EAASnD,EAAUmD,OACvB,OAAOglB,EAAkB9pC,KAAI,SAAUoC,EAAK9nB,GAC1C,MAAO,CACLS,KAAM,OACNxC,MAAOusC,EACPza,QAASsX,EAAUgD,UAAUX,KAC7BvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOw+B,EAAkB3oB,EAAWrnC,GACpC4H,MAAOqoD,EAAkB5oB,EAAWrnC,GAExC,GACF,CAEA,SAASgwD,EAAkB3oB,EAAWrnC,GACpC,IAAIwvD,EAAoBnoB,EAAUmoB,kBAC9BrC,EAAY9lB,EAAU8lB,UAC1B,MAAO,CACLvsB,QAASusB,EAAUntD,GAAGS,KACtBqtB,SAAU0hC,EAAkBxvD,GAEhC,CAEA,SAASiwD,EAAkB5oB,EAAWrnC,GACpC,IAAIqqC,EAAYhD,EAAUgD,UACtBmjB,GAAuB,EAAI5oC,EAAgB,YAAYyiB,EAAUoT,UAAW,GAC5E3+B,EAAI0xC,EAAqB,GACzB7yB,EAAI6yB,EAAqB,GACzBgC,EAAoBnoB,EAAUmoB,kBAE9B5iC,EAAQyd,EAAUzd,MAClBhlB,EAAQyiC,EAAUziC,MAElBsoD,GAAuB,EAAItrC,EAAgB,YAAY4qC,EAAkBxvD,GAAI,GAC7EmwD,EAAYD,EAAqB,GACjCE,EAAYF,EAAqB,GAEjC75B,EAAY85B,EAAYr0C,EAAI,OAAS,QACrCwa,EAAe85B,EAAYz1B,EAAI,MAAQ,SAK3C,GAJA/yB,GAAQ,EAAI8nC,EAAO/B,WAAW,CAC5BtX,UAAWA,EACXC,aAAcA,GACb1uB,IACEglB,EAAM5uB,OAAQ,OAAO4J,EAC1B,IAAIqgD,EAAWr7B,EAAM5uB,OACrB,OAAO,EAAI0xC,EAAO/B,WAAW/lC,EAAO,CAClCme,KAAM6G,EAAM5sB,EAAIioD,IAEpB,C,qCCnYA,IAAIxjC,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQoqC,MAAQA,EAEhB,IAAI1iB,EAAkBH,EAAuBD,EAAQ,QAEjDgrB,EAAWhrB,EAAQ,OAEnBoH,EAAQpH,EAAQ,OAEhBirB,EAAUjrB,EAAQ,OAElBkrB,EAASlrB,EAAQ,OAErB,SAAS8iB,EAAMW,GACb,IAAIlB,EAAShoC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9EuoC,EAAQ,GAERP,EAAOO,QACTA,EAAM,IAAK,EAAIoI,EAAO/B,YAAW,EAAI/hB,EAAM6E,WAAWgf,EAAQ5C,aAAa,GAAO9F,EAAOO,SAG3F,EAAIkI,EAAS1H,UAAU,CACrBG,MAAOA,EACPD,OAAQV,EACRznC,IAAK,QACLqoC,eAAgBmoB,GAEpB,CAEA,SAASA,EAAeC,EAAWloB,GACjC,IAAIjX,EAAiBse,EAAQ5C,YAAY1b,eACrCD,EAAiBue,EAAQ5C,YAAY3b,eACrCsZ,EAASiF,EAAQ5C,YAAYrC,OAC7BhZ,EAAQ++B,EAAcD,EAAWloB,GACjCxgC,EAAQ4oD,EAAcF,GAC1B,MAAO,CAAC,CACN7vD,KAAM,OACNxC,MAAOusC,EACPza,QAASugC,EAAU5mB,KACnBvY,eAAgBA,EAChBD,eAAgBA,EAChBM,MAAOA,EACP5pB,MAAOA,GAEX,CAEA,SAAS2oD,EAAcD,EAAWloB,GAChC,IAAIjf,EAASmnC,EAAUnnC,OACnBwP,EAAO23B,EAAU33B,KACjB83B,EAAwBroB,EAAQH,MAAM8L,SACtCj4B,EAAI20C,EAAsB30C,EAC1B6e,EAAI81B,EAAsB91B,EAC1B90B,EAAI4qD,EAAsB5qD,EAE1B6qD,GAAU,EAAI9rC,EAAgB,YAAYuE,EAAQ,GAClD0b,EAAK6rB,EAAQ,GACb5rB,EAAK4rB,EAAQ,GAEjB,MAAO,CACL9vB,QAASjI,EACT7K,SAAU,CAAChS,EAAIjW,EAAI,EAAIg/B,EAAIlK,EAAImK,GAEnC,CAEA,SAAS0rB,EAAcF,GACrB,IAAI1oD,EAAQ0oD,EAAU1oD,MACtB,OAAOA,CACT,C,oCCzEa4c,EAAA,OAEb,IAAIC,EAAyBD,EAAQ,OAEjCgH,EAAmB/G,EAAuBD,EAAQ,QAElDK,EAAsBJ,EAAuBD,EAAQ,QAErDiiB,EAAWjiB,EAAQ,OAEnBqH,EAAUrH,EAAQ,OAElBoH,EAAQpH,EAAQ,OAEhBkH,EAASlH,EAAQ,MAEjBmoC,EAASnoC,EAAQ,OAErB,SAASnQ,EAAQ5R,EAAQspB,GAAkB,IAAIhoB,EAAO/E,OAAO+E,KAAKtB,GAAS,GAAIzD,OAAOgK,sBAAuB,CAAE,IAAIlJ,EAAUd,OAAOgK,sBAAsBvG,GAAaspB,IAAgBjsB,EAAUA,EAAQksB,QAAO,SAAUre,GAAO,OAAO3O,OAAOyJ,yBAAyBhG,EAAQkL,GAAKrE,UAAY,KAAIvF,EAAK9D,KAAKnB,MAAMiF,EAAMjE,EAAU,CAAE,OAAOiE,CAAM,CAEpV,SAASkoB,EAAcvqB,GAAU,IAAK,IAAI1B,EAAI,EAAGA,EAAIjB,UAAUf,OAAQgC,IAAK,CAAE,IAAIU,EAAyB,MAAhB3B,UAAUiB,GAAajB,UAAUiB,GAAK,CAAC,EAAOA,EAAI,EAAKqU,EAAQrV,OAAO0B,IAAS,GAAMkG,SAAQ,SAAU/G,IAAO,EAAI2rB,EAAiB,YAAY9pB,EAAQ7B,EAAKa,EAAOb,GAAO,IAAeb,OAAOktB,0BAA6BltB,OAAOuJ,iBAAiB7G,EAAQ1C,OAAOktB,0BAA0BxrB,IAAmB2T,EAAQrV,OAAO0B,IAASkG,SAAQ,SAAU/G,GAAOb,OAAOC,eAAeyC,EAAQ7B,EAAKb,OAAOyJ,yBAAyB/H,EAAQb,GAAO,GAAM,CAAE,OAAO6B,CAAQ,CAEtiB,IAAI+lC,EAAM,CACRjW,MAAO,CACL8H,GAAI,EACJC,GAAI,EACJyxB,GAAI,EACJC,GAAI,EACJpvB,WAAY,EACZC,SAAU,EACVC,WAAW,GAEbxM,UAAW,SAAmB3I,GAC5B,IAAI4K,EAAQ5K,EAAK4K,MACbztB,EAAO,CAAC,KAAM,KAAM,KAAM,KAAM,aAAc,YAElD,OAAIA,EAAKwpB,MAAK,SAAU1tB,GACtB,MAA6B,kBAAf2xB,EAAM3xB,EACtB,MACEwpB,QAAQxW,MAAM,yCACP,EAIX,EACAmf,KAAM,SAAcnL,EAAOC,GACzB,IAAI3mB,EAAM0mB,EAAM1mB,IACZqxB,EAAQ1K,EAAM0K,MAClBrxB,EAAIq5B,YACJ,IAAIF,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACXyxB,EAAKx5B,EAAMw5B,GACXC,EAAKz5B,EAAMy5B,GACXpvB,EAAarK,EAAMqK,WACnBC,EAAWtK,EAAMsK,SACjBC,EAAYvK,EAAMuK,UACtBzC,EAAK4H,SAAS5H,GAAM,GACpBC,EAAK2H,SAAS3H,GAAM,GACpBp5B,EAAI44B,IAAIO,EAAIC,EAAIyxB,EAAK,EAAIA,EAAK,EAAGnvB,EAAYC,GAAWC,GACxD,IAAI40B,GAAgB,EAAI/kC,EAAMwW,sBAAsB9I,EAAIC,EAAI0xB,EAAInvB,GAAUpW,KAAI,SAAUm0B,GACtF,OAAO3Y,SAAS2Y,GAAK,EACvB,IACI+W,GAAgB,EAAIhlC,EAAMwW,sBAAsB9I,EAAIC,EAAIyxB,EAAInvB,GAAYnW,KAAI,SAAUm0B,GACxF,OAAO3Y,SAAS2Y,GAAK,EACvB,IACA15C,EAAI08B,OAAO/9B,MAAMqB,GAAK,EAAI0kB,EAAoB,YAAY8rC,IAC1DxwD,EAAI44B,IAAIO,EAAIC,EAAI0xB,EAAK,EAAIA,EAAK,EAAGnvB,EAAUD,EAAYE,GACvD57B,EAAI08B,OAAO/9B,MAAMqB,GAAK,EAAI0kB,EAAoB,YAAY+rC,IAC1DzwD,EAAIs5B,YACJt5B,EAAIk1B,SACJl1B,EAAI4lB,MACN,GAEE8qC,EAAQ,CACVr/B,MAAO,CACL8H,GAAI,EACJC,GAAI,EACJxQ,EAAG,EACH8S,WAAY,EACZC,SAAU,EACVg1B,mBAAoB,KACpBvR,iBAAkB,MAEpBhwB,UAAW,SAAmBtI,GAC5B,IAAIuK,EAAQvK,EAAMuK,MACdztB,EAAO,CAAC,KAAM,KAAM,IAAK,aAAc,YAE3C,OAAIA,EAAKwpB,MAAK,SAAU1tB,GACtB,MAA6B,kBAAf2xB,EAAM3xB,EACtB,MACEwpB,QAAQxW,MAAM,2CACP,EAIX,EACAmf,KAAM,SAAc2H,EAAOC,GACzB,IAAIz5B,EAAMw5B,EAAMx5B,IACZqxB,EAAQoI,EAAMpI,MACd5pB,EAAQgyB,EAAMhyB,MACduwB,EAAWvwB,EAAMuwB,SACrBA,EAAWA,EAASzS,KAAI,SAAUqrC,GAChC,OAAO,EAAIrlC,EAAOwL,sBAAsB65B,EAC1C,IAEwB,IAApB54B,EAASn6B,SACXm6B,EAAW,CAACA,EAAS,GAAIA,EAAS,KAGpC,IAAI64B,EAAiB74B,EAASn6B,OAAS,EACnC8yD,EAAqBt/B,EAAMs/B,mBAC3BvR,EAAmB/tB,EAAM+tB,iBACzB1jB,EAAarK,EAAMqK,WACnBC,EAAWtK,EAAMsK,SACjB/S,EAAIyI,EAAMzI,EACVuQ,EAAK9H,EAAM8H,GACXC,EAAK/H,EAAM+H,GACY,OAAvBu3B,IAA6BA,EAAqBj1B,GAC7B,OAArB0jB,IAA2BA,EAAmBzjB,GAClD,IAAIqiB,GAAYoB,EAAmBuR,GAAsBE,EACrD7S,IAAuB,EAAVh8C,KAAK40B,KAAQonB,EAAqB,EAAVh8C,KAAK40B,GAAS,MAEvD,IAAK,IAAI/2B,EAAI,EAAGA,EAAIgxD,EAAgBhxD,IAAK,CACvCG,EAAIq5B,YACJ,IAAIlU,GAAa,EAAIsG,EAAMwW,sBAAsB9I,EAAIC,EAAIxQ,EAAG8S,EAAasiB,EAAWn+C,GAChFulB,GAAW,EAAIqG,EAAMwW,sBAAsB9I,EAAIC,EAAIxQ,EAAG8S,EAAasiB,GAAYn+C,EAAI,IACnF4sB,GAAQ,EAAI+/B,EAAOsE,wBAAwB9wD,EAAKmlB,EAAYC,EAAU,CAAC4S,EAASn4B,GAAIm4B,EAASn4B,EAAI,KACjGkxD,EAAgBr1B,EAAasiB,EAAWn+C,EACxCmxD,EAAct1B,EAAasiB,GAAYn+C,EAAI,GAC3CoxD,GAAU,EAUd,GARID,EAAcr1B,IAChBq1B,EAAcr1B,EACds1B,GAAU,GAGZjxD,EAAI44B,IAAIO,EAAIC,EAAIxQ,EAAGmoC,EAAeC,GAClChxD,EAAIy3B,YAAchL,EAClBzsB,EAAIk1B,SACA+7B,EAAS,KACf,CACF,GAEEC,EAAa,CACf7/B,MAAO,CACL/Q,OAAQ,GACRmgB,QAAS,GACT9S,SAAU,CAAC,EAAG,GACdikB,QAAS,EACTjR,OAAQ,EACRwJ,UAAW,MAEb/a,UAAW,SAAmBsK,GAC5B,IAAIrI,EAAQqI,EAAMrI,MACd/Q,EAAS+Q,EAAM/Q,OACfmgB,EAAUpP,EAAMoP,QAChB9S,EAAW0D,EAAM1D,SAErB,OAAMrN,aAAkB5d,OAA6B,kBAAZ+9B,GAA0B9S,aAAoBjrB,QACrFwmB,QAAQxW,MAAM,gDACP,EAIX,EACAmf,KAAM,SAAckI,EAAOC,GACzB,IAAIh6B,EAAM+5B,EAAM/5B,IACZqxB,EAAQ2I,EAAM3I,MACd/Q,EAAS+Q,EAAM/Q,OACfmgB,EAAUpP,EAAMoP,QAChBmR,EAAUvgB,EAAMugB,QAChBjR,EAAStP,EAAMsP,OACfwJ,EAAY9Y,EAAM8Y,UAClBgnB,EAAe1wB,EAAQthC,MAAM,QAC7BiyD,EAAa,GACjBD,EAAa1qD,SAAQ,SAAUyf,EAAGrmB,GAChC,IAAIwxD,EAAgB/wC,EAAOzgB,GACE,kBAAlBwxD,IAA4BA,EAAgB,IAE1B,kBAAlBA,IACTA,EAAgBA,EAAczf,QAAQA,GACb,oBAAdzH,IAA0BknB,EAAgBlnB,EAAUknB,KAGjED,GAAclrC,GAAKmrC,GAAiB,GACtC,IAEA3lC,EAAQ8M,KAAK3G,KAAK,CAChB7xB,IAAKA,GACJ,CACDqxB,MAAOvF,EAAcA,EAAc,CAAC,EAAGuF,GAAQ,CAAC,EAAG,CACjDoP,QAAS2wB,EACTzwB,OAAQA,KAGd,GAEE2wB,EAAW,CACbjgC,MAAO,CACL1V,EAAG,EACH6e,EAAG,EACH90B,EAAG,EACH/I,EAAG,GAELyyB,UAAW,SAAmB6K,GAC5B,IAAI5I,EAAQ4I,EAAO5I,MACf1V,EAAI0V,EAAM1V,EACV6e,EAAInJ,EAAMmJ,EACV90B,EAAI2rB,EAAM3rB,EACV/I,EAAI00B,EAAM10B,EAEd,MAAiB,kBAANgf,GAA+B,kBAAN6e,GAA+B,kBAAN90B,GAA+B,kBAAN/I,IACpFusB,QAAQxW,MAAM,8CACP,EAIX,EACAmf,KAAM,SAAcqI,EAAQG,GAC1B,IAAIr6B,EAAMk6B,EAAOl6B,IACbqxB,EAAQgJ,EAAOhJ,MACnBrxB,EAAIq5B,YACJ,IAAI1d,EAAI0V,EAAM1V,EACV6e,EAAInJ,EAAMmJ,EACV90B,EAAI2rB,EAAM3rB,EACV/I,EAAI00B,EAAM10B,EACV40D,EAAQ50D,EAAI,EAChBqD,EAAIy3B,YAAcz3B,EAAIw3B,UACtBx3B,EAAI8hC,OAAOnmB,EAAG6e,EAAI+2B,GAClBvxD,EAAI08B,OAAO/gB,EAAIjW,EAAG80B,EAAI+2B,GACtBvxD,EAAI41B,UAAY,EAChB51B,EAAIk1B,SACJl1B,EAAIq5B,YACJ,IAAI6M,EAASqrB,EAAQ,GACjBrrB,GAAU,IAAGA,EAAS,GAC1BlmC,EAAI44B,IAAIjd,EAAIjW,EAAI,EAAG80B,EAAI+2B,EAAOrrB,EAAQ,EAAa,EAAVlkC,KAAK40B,IAC9C52B,EAAI41B,UAAY,EAChB51B,EAAIk1B,SACJl1B,EAAIw3B,UAAY,OAChBx3B,EAAI4lB,MACN,EACAsI,WAAY,SAAoBP,EAAU2M,GACxC,IAAIjJ,EAAQiJ,EAAOjJ,MACf1V,EAAI0V,EAAM1V,EACV6e,EAAInJ,EAAMmJ,EACV90B,EAAI2rB,EAAM3rB,EACV/I,EAAI00B,EAAM10B,EACd,OAAO,EAAI8uB,EAAM8G,oBAAoB5E,EAAUhS,EAAG6e,EAAG90B,EAAG/I,EAC1D,EACA80B,eAAgB,SAAwB3vB,EAAGy4B,GACzC,IAAIlJ,EAAQkJ,EAAOlJ,MACf5pB,EAAQ8yB,EAAO9yB,MACfkU,EAAI0V,EAAM1V,EACV6e,EAAInJ,EAAMmJ,EACV90B,EAAI2rB,EAAM3rB,EACV/I,EAAI00B,EAAM10B,EACd8K,EAAMuqB,YAAc,CAACrW,EAAIjW,EAAI,EAAG80B,EAAI79B,EAAI,EAC1C,IAEF,EAAI2pC,EAAS/N,gBAAgB,MAAO+O,IACpC,EAAIhB,EAAS/N,gBAAgB,QAASm4B,IACtC,EAAIpqB,EAAS/N,gBAAgB,aAAc24B,IAC3C,EAAI5qB,EAAS/N,gBAAgB,WAAY+4B,E,yCCpQrChtC,EAAyBD,EAAQ,OAWrCtnB,EAAAA,QAAqB,EAErB,IAAIy0D,EAAUltC,EAAuBD,EAAQ,OAEzCirB,EAAUjrB,EAAQ,OAElBiF,EAAWkoC,EAAQ,WACvBz0D,EAAAA,GAAqBusB,C,qCClBrB,IAAIhF,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQs1C,gBAAkBA,EAC1Bt1C,EAAQywC,UAAYA,EACpBzwC,EAAQ+lD,OAASA,EACjB/lD,EAAQw1C,mBAAqBA,EAC7Bx1C,EAAQypB,oBAAsBA,EAC9BzpB,EAAQ+zD,uBAAyBA,EACjC/zD,EAAQuqD,kBAAoBA,EAC5BvqD,EAAQyyD,uBAAyBA,EACjCzyD,EAAQq5C,eAAiBA,EACzBr5C,EAAQgjD,cAAgBA,EAExB,IAAIr7B,EAAsBJ,EAAuBD,EAAQ,QAErDoM,EAAWnM,EAAuBD,EAAQ,QAE1CoH,EAAQpH,EAAQ,OAEpB,SAASguB,EAAgBof,GACvB,OAAOA,EAAM5lC,QAAO,SAAUjQ,GAC5B,MAAoB,kBAANA,CAChB,GACF,CAEA,SAAS4xB,EAAUjsC,EAAQmwD,GACzB,IAAK,IAAIhyD,KAAOgyD,EACVnwD,EAAO7B,IAAkD,YAA1C,EAAI+wB,EAAS,YAAYlvB,EAAO7B,IACjD8tC,EAAUjsC,EAAO7B,GAAMgyD,EAAOhyD,IAIc,YAA1C,EAAI+wB,EAAS,YAAYihC,EAAOhyD,IAKpC6B,EAAO7B,GAAOgyD,EAAOhyD,GAJnB6B,EAAO7B,IAAO,EAAI+rB,EAAM6E,WAAWohC,EAAOhyD,IAAM,GAOpD,OAAO6B,CACT,CAEA,SAASuhD,EAAO57B,GAEd,OADAA,EAAOmrB,EAAgBnrB,GAChBA,EAAKC,QAAO,SAAUnS,EAAKqS,GAChC,OAAOrS,EAAMqS,CACf,GAAG,EACL,CAEA,SAASkrB,EAAmBlxB,EAAMwmB,GAChC,IAAIlwB,EAAQ0J,EAAK1J,MACjB,IAAKA,EAAO,OAAO,EAAI+M,EAAoB,YAAYrD,EAAKvG,MAC5D,IAAIu8B,EAASxP,EAAOhc,QAAO,SAAUpF,GACnC,IAAItc,EAAIsc,EAAK9O,MACb,OAAOxN,IAAMwN,CACf,IACI7Z,EAAQu5C,EAAOziB,WAAU,SAAUlO,GACrC,IAAIqC,EAAIrC,EAAM5L,KACd,OAAOiO,IAAM1H,EAAKvG,IACpB,IACI62C,EAAQta,EAAOviB,OAAO,EAAGh3B,EAAQ,GAAGynB,KAAI,SAAUoB,GACpD,IAAI7L,EAAO6L,EAAM7L,KACjB,OAAOA,CACT,IACI82C,EAAaD,EAAM,GAAG9zD,OAC1B,OAAO,IAAI6E,MAAMkvD,GAAYhsC,KAAK,GAAGL,KAAI,SAAUoC,EAAK9nB,GACtD,OAAOijD,EAAO6O,EAAMpsC,KAAI,SAAUwD,GAChC,OAAOA,EAAElpB,EACX,IACF,GACF,CAEA,SAAS2mB,EAAoBqrC,EAAUC,GACrC,IAAI7mC,EAASjpB,KAAK6iB,IAAIgtC,EAAS,GAAKC,EAAS,IACzC5mC,EAASlpB,KAAK6iB,IAAIgtC,EAAS,GAAKC,EAAS,IAC7C,OAAO9vD,KAAK2iB,KAAKsG,EAASA,EAASC,EAASA,EAC9C,CAEA,SAAS4lC,EAAuB9wD,EAAK+xD,EAAOvX,EAAK/tB,GAC/C,GAAKzsB,GAAQ+xD,GAAUvX,GAAQ/tB,EAAM5uB,OAArC,CACA,IAAI44B,EAAShK,EACK,kBAAXgK,IAAwBA,EAAS,CAAChK,EAAOA,IAChD,IAAIulC,EAAsBhyD,EAAIiyD,qBAAqBtzD,MAAMqB,GAAK,EAAI0kB,EAAoB,YAAYqtC,GAAOj1D,QAAO,EAAI4nB,EAAoB,YAAY81B,KAChJ0X,EAAW,GAAKz7B,EAAO54B,OAAS,GAIpC,OAHA44B,EAAOhwB,SAAQ,SAAU/H,EAAGmB,GAC1B,OAAOmyD,EAAoB95B,aAAag6B,EAAWryD,EAAGnB,EACxD,IACOszD,CAR4C,CASrD,CAEA,SAAS1K,EAAkB//B,GACzB,IAAI4qC,EAAe,IAAIzvD,MAAM6kB,EAAO1pB,OAAS,GAAG+nB,KAAK,GAAGL,KAAI,SAAUoC,EAAK9nB,GACzE,MAAO,CAAC0nB,EAAO1nB,GAAI0nB,EAAO1nB,EAAI,GAChC,IACIuyD,EAAUD,EAAa5sC,KAAI,SAAUlE,GACvC,OAAOmF,EAAoB7nB,WAAM,GAAQ,EAAI+lB,EAAoB,YAAYrD,GAC/E,IACA,OAAOyhC,EAAOsP,EAChB,CAEA,SAAS5C,EAAuB3jD,EAAOwmD,EAAcC,GACnD,IAAI9zD,EAAIgoB,EAAoB3a,EAAOwmD,GAC/B5zD,EAAI+nB,EAAoB3a,EAAOymD,GAC/B5zD,EAAI8nB,EAAoB6rC,EAAcC,GAC1C,MAAO,GAAMtwD,KAAK2iB,MAAMnmB,EAAIC,EAAIC,IAAMF,EAAIC,EAAIC,IAAMF,EAAIE,EAAID,IAAMA,EAAIC,EAAIF,IAAME,CAClF,CAEA,SAAS03C,EAAevO,EAAQ3Y,EAAQ7uB,GAQtC,OAPAwnC,EAASA,EAAOhc,QAAO,SAAU/E,GAC/B,IAAIyrC,EAAKzrC,EAAMzmB,KACf,OAAOkyD,IAAOlyD,CAChB,IACAwnC,EAASA,EAAOtiB,KAAI,SAAUlE,GAC5B,OAAOmsB,GAAU,EAAI/hB,EAAM6E,WAAWpB,GAAQ,GAAO7N,EACvD,IACOwmB,EAAOhc,QAAO,SAAU2N,GAC7B,IAAI+P,EAAO/P,EAAM+P,KACjB,OAAOA,CACT,GACF,CAEA,SAASwW,EAAc5Z,GACrB,OAAOA,EAASnkC,KAAK40B,GAAK,GAC5B,C,uECjIA,IAAI57B,EAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,wBAAwB,CAACF,EAAG,MAAM,CAACG,IAAI,oBAAoBD,YAAY,gCAAgCF,EAAG,MAAM,CAACE,YAAY,oBAAoB,CAACF,EAAG,kBAAkB,CAACI,MAAM,CAAC,OAASL,EAAIM,eAAeL,EAAG,MAAM,CAACE,YAAY,mBAAmBlrD,MAAO+qD,EAAIx8B,UAAW,CAACw8B,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIS,cAAc,IACpY,EACIh4D,EAAkB,G,WCFlBD,EAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,mBAAmB,CAACF,EAAG,SAAS,CAACG,IAAI,kBAC9H,EACI33D,EAAkB,G,2CCatB,GACAqF,KAAA,gBACA4yD,MAAA,CACAhkC,OAAA,CACA7uB,KAAAxB,OACAs0D,QAAAA,KAAA,MAGAr4C,IAAAA,GACA,OACAs4C,SAAA,KAEAviC,cAAA,CAOAvQ,OAAA,GAOAmgB,QAAA,GAMAmR,QAAA,EAOA1b,UAAA,SAMAyK,OAAA,EAKAl5B,MAAA,CACAuuB,SAAA,GACApQ,KAAA,WAMAukB,eAAA5rC,EAMAyyB,eAAA,eAMAD,eAAA,IAGAsiC,aAAA,KAEArmC,MAAA,KAEA,EACAsmC,MAAA,CACApkC,MAAAA,GACA,aAAA2D,GAAA,KAEAA,GACA,GAEAxuB,QAAA,CACAkvD,IAAAA,GACA,iBAAAC,EAAA,YAAAC,EAAA,UAAAC,GAAA,KAEAF,IAEAC,IAEAC,GACA,EACAF,UAAAA,GACA,YAAAG,GAAA,KAEA,KAAAP,SAAA,IAAApnC,EAAAA,WAAA2nC,EAAA,gBACA,EACAF,WAAAA,GACA,oBAAA5iC,EAAA,OAAA3B,GAAA,KAEA,KAAAmkC,cAAA7lB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAO,GAAA,GAAA3B,GAAA,GACA,EACAwkC,SAAAA,GACA,eAAAE,EAAA,SAAAxjC,EAAA,SAAAgjC,EAAA,aAAAC,GAAA,MAEA,eAAAriC,EAAA,eAAAD,GAAAsiC,EAEAhiC,EAAAuiC,IACAnsD,EAAA2oB,IAEA,KAAApD,MAAAomC,EAAAh3D,IAAA,CACAkE,KAAA,aACA0wB,iBACAD,iBACAM,QACA5pB,SAEA,EACAmsD,QAAAA,GACA,aAAAtzC,EAAA,QAAAmgB,EAAA,QAAAmR,EAAA,UAAA1b,EAAA,OAAAyK,EAAA,UAAAwJ,GAAA,KAAAkpB,cAEA3tD,EAAA/I,GAAA,KAAAy2D,SAAA/mC,KAEAsB,EAAA,CAAAjoB,EAAA,EAAA/I,EAAA,GAKA,MAHA,SAAAu5B,IAAAvI,EAAA,MACA,UAAAuI,IAAAvI,EAAA,GAAAjoB,GAEA,CACA4a,SACAmgB,UACAmR,UACAjkB,WACAgT,SACAwJ,YAEA,EACA/Z,QAAAA,GACA,YAAA3oB,EAAA,UAAAyuB,GAAA,KAAAm9B,aAEA,OAAA7lB,EAAAA,EAAAA,WAAA/lC,EAAA,CACAyuB,YACAC,aAAA,UAEA,EACAtD,MAAAA,GACA,kBAAA4gC,EAAA,WAAAI,EAAA,SAAAD,EAAA,SAAAxjC,EAAA,MAAApD,EAAA,aAAAqmC,GAAA,KAMA,GAJArmC,EAAAmH,eAEAs/B,KAEAzmC,EAAA,OAEA,qBAAAgE,EAAA,eAAAD,GAAAsiC,EAEAhiC,EAAAuiC,IACAnsD,EAAA2oB,IAEAyjC,EAAA7mC,EAAAqE,GAEArE,EAAAgE,eAAAA,EACAhE,EAAA+D,eAAAA,EAEA/D,EAAAH,UAAA,QAAAplB,GAAA,GACAulB,EAAAH,UAAA,QAAAwE,EACA,EACAwiC,UAAAA,CAAA7mC,EAAAqE,GACA,MAAAouB,EAAAzyB,EAAAqE,MAAA/Q,OAAAziB,OACAi2D,EAAAziC,EAAA/Q,OAAAziB,OAEA4hD,IAAAqU,IAAA9mC,EAAAqE,MAAA/Q,OAAA+Q,EAAA/Q,OACA,GAEAyzC,OAAAA,GACA,WAAAR,GAAA,KAEAA,GACA,GCpMgP,I,UCO5OS,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIF,EAAeA,EAAiB,QCChC,GACA1zD,KAAA,oBACA2zD,WAAA,CACAC,cAAAA,GAEAhB,MAAA,CACAhkC,OAAA,CACA7uB,KAAAxB,OACAs0D,QAAAA,KAAA,MAGAr4C,IAAAA,GACA,OACA+V,cAAA,CAOAqV,OAAA,MAOAiuB,aAAA,MAMAr5C,KAAA,EAAAxa,KAAA,GAAA3C,MAAA,IAMAi4B,UAAA,GAMAw+B,cAAA,IAOA3nC,MAAA,GAKA4nC,iBAAA,CACAr+B,SAAA,GACApQ,KAAA,QAMA0uC,mBAAA,EAKAC,gBAAA,GAMAvjC,eAAA,eAMAD,eAAA,GAMAyjC,iBAAA,GAGAnB,aAAA,KAEAvrB,MAAA,KAEA2sB,YAAA,EAEAC,iBAAA,GAEA,EACAC,SAAA,CACA7B,WAAAA,GACA,mBAAAO,EAAA,YAAAoB,GAAA,KAEA,IAAApB,EAAA,SAEA,uBACAgB,EAAA,mBACAC,EAAA,KACAx5C,EAAA,gBACA05C,EAAA,gBACAD,GACAlB,EAEA11D,EAAAmd,EAAAyK,KAAA,EAAA5nB,WAAAA,IAEA,IAAAi3D,EAEA,GAAAJ,EACAI,EAAAj3D,EAAA82D,OACA,CACA,MAAArtC,EAAAzpB,EAAAwpB,QAAA,CAAAnS,EAAA6O,IAAA7O,EAAA6O,GAAA,GAEA20B,EAAA7G,WAAAh0C,EAAA82D,GAAArtC,EAAA,QAEAwtC,EAAApc,CACA,CAEA,OACA/X,QAAA+zB,EAAA,OAAAD,IAAA,OAAAA,GAAA,MACAj0C,OAAA,CAAAs0C,GACAntD,MAAA4sD,EACAziB,QAAA0iB,EAEA,EACArB,QAAAA,GACA,mBAAAI,EAAA,YAAAoB,GAAA,KAEA,OAAApB,EAEAA,EAAAv4C,KAAA25C,GAAAn0D,KAFA,EAGA,EACA01B,QAAAA,GACA,mBAAAq9B,GAAA,KAEA,OAAAA,EAEA,cAAAA,EAAAgB,iBAAAr+B,cAFA,EAGA,GAEAs9B,MAAA,CACApkC,MAAAA,GACA,uBAAAwlC,EAAA,YAAAjB,EAAA,cAAAoB,GAAA,KAEAC,aAAAJ,GAEA,KAAAD,YAAA,EAEAhB,IAEAoB,GACA,GAEAxwD,QAAA,CACAkvD,IAAAA,GACA,gBAAAwB,EAAA,YAAAtB,EAAA,cAAAoB,GAAA,KAEAE,IAEAtB,IAEAoB,GACA,EACAE,SAAAA,GACA,YAAApB,GAAA,KAEA,KAAA7rB,MAAA,IAAAtB,EAAAA,GAAAmtB,EAAA,qBACA,EACAF,WAAAA,GACA,oBAAA5iC,EAAA,OAAA3B,GAAA,KAEA,KAAAmkC,cAAA7lB,EAAAA,EAAAA,YACAld,EAAAA,EAAAA,WAAAO,GAAA,GACA3B,GAAA,GAEA,EACA2lC,aAAAA,GACA,oBAAAG,EAAA,MAAAltB,EAAA,cAAAmtB,GAAA,KAEAruB,EAAAouB,IAEAltB,EAAAjB,UAAAD,GAAA,GAEAquB,GACA,EACAD,aAAAA,GACA,mBAAA3B,EAAA,cAAA6B,GAAA,KAEAhvB,EAAAgvB,IAMA,OAJA7B,EAAAv4C,KAAArU,SAAAi4C,IACAA,EAAAxY,OAAAA,CAAA,IAGA,CACA2B,OAAA,CACA,CACAxnC,KAAA,SACAgzD,EACA3kB,aAAA,CACAnF,MAAA,KAIA9c,MAAA4mC,EAAA5mC,MAEA,EACAyoC,aAAAA,CAAAC,GAAA,GACA,mBAAA9B,EAAA,MAAAvrB,GAAA,MAEA,OAAA5B,EAAA,aAAAiuB,EAAA,UAAAv+B,GAAAy9B,EAEA5V,EAAAz7C,KAAAyI,OAAAq9B,EAAA9sC,OAAAqxB,MAAA,EAEA+O,EAAAxF,EAAA,EAEA,IAAAw/B,EAAAD,EAAAhB,EAAAjuB,EAEA,kBAAAkvB,IACAA,EAAAr0B,SAAAq0B,GAAA,IAAA3X,GAEA,MAAAxhB,EAAAm5B,EAAAh6B,EACAi6B,EAAAD,EAAAh6B,EAEA,OAAAa,EAAAo5B,EACA,EACAJ,aAAAA,GACA,gBAAAR,EAAA,cAAAO,EAAA,MAAAltB,EAAA,cAAAotB,GAAA,KAEA,MAAAhvB,EAAAgvB,IACAC,EAAAD,GAAA,GAEAtuB,EAAAouB,KAEA,KAAAl6C,GAAA8rB,EAAAiB,OAAA,GAEA/sB,EAAArU,SAAA,CAAAi4C,EAAA7+C,KAEA6+C,EAAAxY,OADArmC,IAAA40D,EACAU,EAEAjvB,CACA,IAGA4B,EAAAjB,UAAAD,GAAA,GAEA,oBAAAwtB,GAAAxtB,EAAAiB,OAAA,GAEA,KAAA6sB,iBAAA10C,YAAA2H,IACA8sC,GAAA,EAEAA,GAAA35C,EAAAjd,SAAA42D,EAAA,GAEA,KAAAA,YAAAA,EAEA,KAAAQ,eAAA,GACAb,EACA,GAEAL,OAAAA,GACA,WAAAR,GAAA,KAEAA,GACA,EACA+B,aAAAA,GACA,uBAAAZ,GAAA,KAEAI,aAAAJ,EACA,GCzSgP,ICO5O,GAAY,OACd,EACA15D,EACAC,GACA,EACA,KACA,KACA,MAIF,EAAe,EAAiB,QCfjB,SAAS,EAACs6D,GACvBA,EAAIvB,UAAUwB,EAAgBl1D,KAAMk1D,EACtC,CCLA,IAAIx6D,EAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAACE,YAAY,SAASE,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAIiD,gBAAgB,OAAU,cAAajD,EAAIluB,OAAS,UAAUkuB,EAAIluB,OAAS,UAAUkuB,EAAIluB,OAAS,UAAUkuB,EAAIluB,OAAS,eACvVkuB,EAAIluB,OAAS,UAAUkuB,EAAIluB,OAAS,SAASkuB,EAAIluB,OAAS,SAASkuB,EAAIluB,OAAS,UAAUkuB,EAAIluB,OAAS,eACvGkuB,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,MAAMkuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,WACjIkuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,WAC1GkuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,MAAMkuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,MAAMkuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,WAC5GkuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,MAAMkuB,EAAInuB,MAAQ,UAAUmuB,EAAInuB,MAAQ,UAAUmuB,EAAInuB,MAAQ,eAC9FmuB,EAAInuB,MAAQ,UAAUmuB,EAAInuB,MAAQ,UAAUmuB,EAAInuB,MAAQ,SAASmuB,EAAInuB,MAAQ,SAASmuB,EAAInuB,MAAQ,eAClGmuB,EAAInuB,MAAQ,UAAUmuB,EAAInuB,MAAQ,yEAAyEmuB,EAAIkD,GAAIlD,EAAImD,QAAQ,SAASt0C,GAAM,OAAOoxC,EAAG,MAAM,CAAC/yD,IAAI2hB,EAAKu0C,MAAO,GAAEv0C,WAAcwxC,MAAM,CAAC,MAAQ,QAAQ,OAAS,UAAU,CAACJ,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,OAAS,sIAAsI,CAACpD,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,OAAO,OAAU,GAAEL,EAAIqD,YAAY,MAAMrD,EAAIqD,YAAY,MAAMrD,EAAIqD,YAAY,KAAK,IAAM,OAAO,MAAQ,KAAK,YAAc,kBAAkBpD,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,OAAS,oEAAoE,CAACpD,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,OAAO,OAAU,GAAEL,EAAIqD,YAAY,MAAMrD,EAAIqD,YAAY,MAAMrD,EAAIqD,YAAY,KAAK,IAAM,OAAO,MAAQ,KAAK,YAAc,kBAAkBpD,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,OAAS,oGAAoG,CAACpD,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,OAAO,OAAU,GAAEL,EAAIqD,YAAY,MAAMrD,EAAIqD,YAAY,iBAAiB,IAAM,KAAK,MAAQ,KAAK,YAAc,mBAAmB,IAAGpD,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACH,EAAIhnD,GAAG,YAAY,IAAI,EAC9xC,EACIvQ,EAAkB,GCTf,SAAS66D,EAAcC,EAAQC,GACpC,OAAyB,IAArBp3D,UAAUf,OACLkjC,SAAS/+B,KAAKgJ,SAAW+qD,EAAS,EAAG,IAErCh1B,SAAS/+B,KAAKgJ,UAAYgrD,EAASD,EAAS,GAAKA,EAAQ,GAEpE,CAEO,SAASE,EAAU1kC,EAAO7T,GAC/B,IAAIw4C,EAEJ,OAAO,WACLpB,aAAaoB,GAEb,MAAO53D,EAAMwQ,GAAQ,CAACjT,KAAM+C,WAE5Bs3D,EAAWl2C,YAAW,KACpBtC,EAAS/e,MAAML,EAAMwQ,EAAK,GACzByiB,EACL,CACF,CAEO,SAAS4kC,EAAmB1vB,EAAK/oB,GACtC,MAAM04C,EAAmBr0D,OAAOq0D,kBAAoBr0D,OAAOs0D,wBAA0Bt0D,OAAOu0D,oBAEtFC,EAAW,IAAIH,EAAiB14C,GAItC,OAFA64C,EAASC,QAAQ/vB,EAAK,CAAEgwB,YAAY,EAAMC,gBAAiB,CAAC,SAAUC,mBAAmB,IAElFJ,CACT,CAEO,SAASK,EAAkB/E,EAAUC,GAC1C,MAAM7mC,EAASjpB,KAAK6iB,IAAIgtC,EAAS,GAAKC,EAAS,IAEzC5mC,EAASlpB,KAAK6iB,IAAIgtC,EAAS,GAAKC,EAAS,IAE/C,OAAO9vD,KAAK2iB,KAAKsG,EAASA,EAASC,EAASA,EAC9C,CAEO,SAAS2rC,EAAMC,GACpB,OAAQA,EAAY,uCAAyC,oCAAoCr/C,QAAQ,SAAS,SAAU/Y,GAC5H,MAAMkqB,EAAoB,GAAhB5mB,KAAKgJ,SAAgB,EACzB6Y,EAAS,KAALnlB,EAAWkqB,EAAS,EAAJA,EAAU,EACpC,OAAO/E,EAAE9lB,SAAS,GAClB,GACF,CC5CA,OACE+c,IAAAA,GACE,MAAO,CACL2rB,IAAK,GAELpC,MAAO,EACPC,OAAQ,EAERyyB,kBAAmB,GAEnBC,YAAa,GAEjB,EACA3yD,QAAS,CACP,yBAAM4yD,GACJ,MAAM,OAAEC,EAAM,qBAAEC,EAAoB,sBAAEC,EAAqB,yBAAEC,GAA6Bx7D,WAEpFq7D,GAAO,GAEbC,IAEAC,IAEwC,oBAA7BC,GAAyCA,GACtD,EACAH,MAAAA,CAAQxvB,GAAS,GACf,MAAM,UAAE4vB,EAAS,MAAE3D,EAAK,IAAEf,EAAG,SAAE2E,GAAa17D,KAE5C,OAAO,IAAIm0B,SAAQC,IACjBqnC,GAAUE,IACR,MAAM/wB,EAAM5qC,KAAK4qC,IAAMktB,EAAMf,GAE7B/2D,KAAKwoC,MAAQoC,EAAMA,EAAIta,YAAc,EACrCtwB,KAAKyoC,OAASmC,EAAMA,EAAIra,aAAe,EAElCqa,EAEO5qC,KAAKwoC,OAAUxoC,KAAKyoC,QAC9Bpb,QAAQoG,KAAK,6EAFbpG,QAAQoG,KAAK,uEAKS,oBAAbioC,GAA2B7vB,GAAQ6vB,IAE9CtnC,GAAS,GACT,GAEN,EACAknC,oBAAAA,GACE,MAAM,OAAED,GAAWr7D,KAEnBA,KAAKk7D,kBAAoBd,EAAS,IAAKiB,EACzC,EACAE,qBAAAA,GACE,MAAM,IAAE3wB,EAAG,kBAAEswB,GAAsBl7D,KAEnCA,KAAKm7D,YAAcb,EAAkB1vB,EAAKswB,GAE1Ch1D,OAAO6d,iBAAiB,SAAUm3C,EACpC,EACAU,uBAAAA,GACE,IAAI,YAAET,EAAW,kBAAED,GAAsBl7D,KAEpCm7D,IAELA,EAAYU,aACZV,EAAYW,cACZX,EAAc,KAEdj1D,OAAO61D,oBAAoB,SAAUb,GACvC,GAEFhD,OAAAA,GACE,MAAM,oBAAEkD,GAAwBp7D,KAEhCo7D,GACF,EACA3B,aAAAA,GACE,MAAM,wBAAEmC,GAA4B57D,KAEpC47D,GACF,GCXF,GACAn3D,KAAA,eACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEAsC,gBAAA,CACAp1D,KAAA+J,OACA+oD,QAAA,gBAGAr4C,IAAAA,GACA,OACA83C,IAAA,eAEA+C,OAAA,sDAEA9N,aAAA,sBAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACA0iC,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GCjHgP,ICO5O,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIF,EAAe,EAAiB,QCfjB,SAAS,EAACwuB,GACvBA,EAAIvB,UAAU+D,EAAWz3D,KAAMy3D,EACjC,CCLA,IAAI/8D,EAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmBlrD,MAAQ,kCAAiC+qD,EAAIqD,YAAY,MAAO,CAACpD,EAAG,MAAM,CAACE,YAAY,0BAA0BE,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAIiD,gBAAgB,OAAU,gBACtUjD,EAAInuB,MAAQ,QAAQmuB,EAAInuB,YAAYmuB,EAAInuB,UAAUmuB,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,oBAC5FkuB,EAAIluB,aAAakuB,EAAIluB,OAAS,oBAC9BkuB,EAAIkD,GAAIlD,EAAImD,QAAQ,SAASt0C,GAAM,OAAOoxC,EAAG,MAAM,CAAC/yD,IAAI2hB,EAAKu0C,MAAO,GAAEv0C,4BAA+BwxC,MAAM,CAAC,MAAQ,QAAQ,OAAS,UAAU,CAACJ,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,OAAS,kDAAkD,IAAGpD,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACH,EAAIhnD,GAAG,YAAY,IAAI,EAC5U,EACIvQ,EAAkB,GC8BtB,GACAqF,KAAA,gBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEAsC,gBAAA,CACAp1D,KAAA+J,OACA+oD,QAAA,gBAGAr4C,IAAAA,GACA,OACA83C,IAAA,gBAEA+C,OAAA,sDAEA9N,aAAA,sBAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACA0iC,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GC7EgP,ICO5O,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIF,EAAe,EAAiB,QCfjB,SAAS,EAACwuB,GACvBA,EAAIvB,UAAUgE,EAAY13D,KAAM03D,EAClC,CCLA,IAAIh9D,EAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,oBAAoB,CAACF,EAAG,MAAM,CAACE,YAAY,0BAA0BE,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,OAAO,CAACA,EAAG,SAAS,CAACI,MAAM,CAAC,GAAKL,EAAIyF,SAAS,OAAS,OAAO,MAAQ,OAAO,EAAI,OAAO,EAAI,SAAS,CAACxF,EAAG,eAAe,CAACI,MAAM,CAAC,SAAW,SAAS,OAAS,IAAI,GAAK,cAAc,OAAS,aAAaJ,EAAG,iBAAiB,CAACI,MAAM,CAAC,GAAK,UAAU,aAAe,IAAI,OAAS,aAAaJ,EAAG,UAAU,CAACI,MAAM,CAAC,cAAcL,EAAIqD,YAAY,GAAG,OAAS,eAAepD,EAAG,cAAc,CAACI,MAAM,CAAC,GAAK,YAAY,IAAM,UAAU,SAAW,KAAK,OAAS,qBAAqBJ,EAAG,UAAU,CAACA,EAAG,cAAc,CAACI,MAAM,CAAC,GAAK,qBAAqBJ,EAAG,cAAc,CAACI,MAAM,CAAC,GAAK,oBAAoB,IAAI,KAAKJ,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAIiD,gBAAgB,OAAU,kBAC50B,GAAZjD,EAAInuB,MAAcmuB,EAAI0F,WAAa,SAAqB,GAAZ1F,EAAInuB,MAAcmuB,EAAI0F,WAAa,EAAI,iBAC9E,GAAZ1F,EAAInuB,MAAcmuB,EAAI0F,WAAa,EAAI,UAAsB,GAAZ1F,EAAInuB,MAAcmuB,EAAI0F,WAAa,gBACpF1F,EAAInuB,MAAQ,UAAUmuB,EAAInuB,MAAQ,SAASmuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,MAAMkuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,gBAC5GkuB,EAAIluB,OAAS,QAAQkuB,EAAIluB,OAAS,oBACrCmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,QAAOrD,EAAIyF,YAAY,OAAU,cAC3FzF,EAAInuB,MAAQmuB,EAAI0F,YAAc,kCACf,IAAM1F,EAAIluB,OAAS,KAAO,kBACtC,IAAMkuB,EAAIluB,OAAS,KAAO,SAAS,KAAOkuB,EAAIluB,OAAS,KAAO,iBAC/D,KAAOkuB,EAAIluB,OAAS,KAAO,QAAQkuB,EAAIluB,OAAS,mBAC/CkuB,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,eAC1FkuB,EAAInuB,MAAQ,MAAM,KAAOmuB,EAAIluB,OAAS,KAAO,KAAKkuB,EAAInuB,MAAQ,OAAO,KAAOmuB,EAAIluB,OAAS,KAAO,cAChGkuB,EAAInuB,MAAQ,OAAO,IAAMmuB,EAAIluB,OAAS,KAAO,KAAKkuB,EAAInuB,MAAQ,MAAM,IAAMmuB,EAAIluB,OAAS,KAAO,cAC9FkuB,EAAInuB,MAAQ,SAASmuB,EAAInuB,MAAQ,WAAWmuB,EAAInuB,MAAQmuB,EAAI0F,YAAc,mBACzE1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,UAAU1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,mBAC9E1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,UAAU1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,oBAC1E1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,WAAW1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,mBAC3EzF,EAAG,UAAU,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,KAAO,cAAc,OAAU,cAChFrD,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,UAAU1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,oBAC9E1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,WAAW1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,mBAC/EzF,EAAG,UAAU,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,KAAO,cAAc,OAAU,cAChFrD,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,UAAU1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,oBAC9E1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,WAAW1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,mBAC/EzF,EAAG,UAAU,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,KAAOrD,EAAI2F,KAAK3F,EAAIqD,YAAY,IAAMrD,EAAI3K,aAAa,GAAI,IAAI,OAAU,QAAO2K,EAAIyF,YAAY,OAAU,cAC3JzF,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,WAAW1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,oBAC/E1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,WAAW1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,oBAC/E1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,WAAW1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,oBAC/EzF,EAAG,UAAU,CAACI,MAAM,CAAC,OAAU,QAAOL,EAAIyF,YAAY,KAAOzF,EAAIqD,YAAY,GAAG,QAAU,IAAI,OAAU,cACxGrD,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,WAAW1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,oBAC/E1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,WAAW1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,kBAChF,CAACzF,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,UAAU,OAAS,UAAU,IAAM,KAAK,MAAQ,KAAK,YAAc,kBAAkBJ,EAAG,UAAU,CAACI,MAAM,CAAC,OAAU,QAAOL,EAAIyF,YAAY,KAAOzF,EAAIqD,YAAY,GAAG,QAAU,MAAM,OAAU,cACpOrD,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,WAAW1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,oBAC/E1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,WAAW1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,mBAChF,CAACzF,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,UAAU,OAAS,cAAc,IAAM,KAAK,MAAQ,KAAK,YAAc,kBAAkBJ,EAAG,UAAU,CAACI,MAAM,CAAC,OAAU,QAAOL,EAAIyF,YAAY,KAAOzF,EAAIqD,YAAY,GAAG,QAAU,MAAM,OAAU,cACxOrD,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,WAAW1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,oBAC/E1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,WAAW1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,mBAChF,CAACzF,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,UAAU,OAAS,cAAc,IAAM,KAAK,MAAQ,KAAK,YAAc,kBAAkBJ,EAAG,UAAU,CAACI,MAAM,CAAC,OAAU,QAAOL,EAAIyF,YAAY,KAAOzF,EAAIqD,YAAY,GAAG,QAAU,IAAI,OAAU,cACtOrD,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,WAAW1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,mBAC/E1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,UAAU1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,mBAC/E,CAACzF,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,UAAU,OAAS,UAAU,IAAM,KAAK,MAAQ,KAAK,YAAc,kBAAkBJ,EAAG,UAAU,CAACI,MAAM,CAAC,OAAU,QAAOL,EAAIyF,YAAY,KAAOzF,EAAIqD,YAAY,GAAG,QAAU,MAAM,OAAU,cACpOrD,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,WAAW1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,oBAC/E1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,WAAW1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,mBAChF,CAACzF,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,UAAU,OAAS,cAAc,IAAM,KAAK,MAAQ,KAAK,YAAc,kBAAkBJ,EAAG,UAAU,CAACI,MAAM,CAAC,OAAU,QAAOL,EAAIyF,YAAY,KAAOzF,EAAIqD,YAAY,GAAG,QAAU,MAAM,OAAU,cACxOrD,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,WAAW1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,oBAC/E1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,WAAW1F,EAAInuB,MAAQmuB,EAAI0F,YAAc,EAAI,mBAChF,CAACzF,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,UAAU,OAAS,cAAc,IAAM,KAAK,MAAQ,KAAK,YAAc,kBAAkBJ,EAAG,OAAO,CAACE,YAAY,yBAAyBE,MAAM,CAAC,EAAK,GAAEL,EAAInuB,MAAQ,EAAI,EAAI,KAAK,KAAO,OAAO,YAAY,KAAK,cAAc,SAAS,oBAAoB,WAAW,CAACmuB,EAAIO,GAAG,IAAIP,EAAIQ,GAAGR,EAAIrrB,OAAO,OAAOsrB,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,OAAU,QAAOrD,EAAIyF,YAAY,OAAU,gBACva,IAAMzF,EAAIluB,OAAS,KAAO,SAAS,IAAMkuB,EAAIluB,OAAS,KAAO,kBAC5D,KAAOkuB,EAAIluB,OAAS,KAAO,QAAQ,KAAOkuB,EAAIluB,OAAS,KAAO,eACjEmuB,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,OAAU,QAAOrD,EAAIyF,YAAY,OAAU,aAC3FzF,EAAInuB,MAAQ,MAAM,IAAMmuB,EAAIluB,OAAS,KAAO,KAAKkuB,EAAInuB,MAAQ,OAAO,IAAMmuB,EAAIluB,OAAS,KAAO,cAC9FkuB,EAAInuB,MAAQ,OAAO,KAAOmuB,EAAIluB,OAAS,KAAO,KAAKkuB,EAAInuB,MAAQ,MAAM,KAAOmuB,EAAIluB,OAAS,KAAO,iBAC7FmuB,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACH,EAAIhnD,GAAG,YAAY,IAC7E,EACIvQ,EAAkB,G,UC6KtB,GACAqF,KAAA,gBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEA+E,WAAA,CACA73D,KAAA+3D,OACAjF,QAAA,KAEAhsB,MAAA,CACA9mC,KAAA+J,OACA+oD,QAAA,IAEAsC,gBAAA,CACAp1D,KAAA+J,OACA+oD,QAAA,gBAGAr4C,IAAAA,GACA,MAAAzV,EAAAwxD,IACA,OACAjE,IAAA,gBACAqF,SAAA,0BAAA5yD,IAEAwiD,aAAA,sBAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACA0iC,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,EACA0rC,KAAAA,EAAAA,MAEApE,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GCrRgP,ICO5O,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIF,EAAe,EAAiB,QCfjB,SAAS,EAACwuB,GACvBA,EAAIvB,UAAUqE,EAAY/3D,KAAM+3D,EAClC,CCLA,IAAIr9D,EAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,oBAAoB,CAACF,EAAG,MAAM,CAACE,YAAY,0BAA0BE,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,OAAO,CAACA,EAAG,SAAS,CAACI,MAAM,CAAC,GAAKL,EAAIyF,SAAS,OAAS,OAAO,MAAQ,OAAO,EAAI,OAAO,EAAI,SAAS,CAACxF,EAAG,eAAe,CAACI,MAAM,CAAC,SAAW,SAAS,OAAS,IAAI,GAAK,cAAc,OAAS,aAAaJ,EAAG,iBAAiB,CAACI,MAAM,CAAC,GAAK,UAAU,aAAe,IAAI,OAAS,aAAaJ,EAAG,UAAU,CAACI,MAAM,CAAC,cAAcL,EAAI2F,KAAK3F,EAAIqD,YAAY,IAAMrD,EAAI3K,aAAa,GAAI,IAAI,OAAS,cAAc,CAAC4K,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,cAAc,OAAU,mBAC3pBL,EAAI2F,KAAK3F,EAAIqD,YAAY,IAAMrD,EAAI3K,aAAa,GAAI,uBACpD2K,EAAI2F,KAAK3F,EAAIqD,YAAY,IAAMrD,EAAI3K,aAAa,GAAI,uBACpD2K,EAAI2F,KAAK3F,EAAIqD,YAAY,IAAMrD,EAAI3K,aAAa,GAAI,qBACtD,IAAM,KAAK,MAAQ,KAAK,YAAc,kBAAkB4K,EAAG,cAAc,CAACI,MAAM,CAAC,GAAK,YAAY,IAAM,UAAU,SAAW,KAAK,OAAS,qBAAqBJ,EAAG,UAAU,CAACA,EAAG,cAAc,CAACI,MAAM,CAAC,GAAK,qBAAqBJ,EAAG,cAAc,CAACI,MAAM,CAAC,GAAK,oBAAoB,IAAI,KAAML,EAAInuB,OAASmuB,EAAIluB,OAAQmuB,EAAG,OAAO,CAACI,MAAM,CAAC,KAAOL,EAAIiD,gBAAgB,eAAe,IAAI,OAASjD,EAAIqD,YAAY,GAAG,EAAK,qBACnZrD,EAAInuB,MAAQ,UAAUmuB,EAAInuB,MAAQ,QAAQmuB,EAAInuB,MAAQ,mBAC5DmuB,EAAInuB,MAAQ,KAAKmuB,EAAIluB,OAAS,QAAQkuB,EAAInuB,MAAQ,KAAKmuB,EAAIluB,OAAS,MAAMkuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,oBACrGkuB,EAAIluB,OAAS,SAASkuB,EAAIluB,OAAS,OAAOkuB,EAAIluB,OAAS,2CAE5DkuB,EAAI8F,KAAK7F,EAAG,OAAO,CAACI,MAAM,CAAC,eAAe,IAAI,KAAO,cAAc,iBAAiB,QAAQ,OAAU,QAAOL,EAAIyF,YAAY,OAASzF,EAAIqD,YAAY,GAAG,EAAK,qCAAoCpD,EAAG,OAAO,CAACI,MAAM,CAAC,eAAe,IAAI,KAAO,cAAc,iBAAiB,QAAQ,OAAU,QAAOL,EAAIyF,YAAY,OAASzF,EAAIqD,YAAY,GAAG,EAAK,KAAIrD,EAAInuB,MAAQ,UAAUmuB,EAAInuB,MAAQ,UAAUmuB,EAAInuB,MAAQ,OAAOmuB,EAAInuB,MAAQ,UAAUmuB,EAAInuB,MAAQ,UAAUouB,EAAG,OAAO,CAACI,MAAM,CAAC,eAAe,IAAI,KAAO,cAAc,iBAAiB,QAAQ,OAAU,QAAOL,EAAIyF,YAAY,OAASzF,EAAIqD,YAAY,GAAG,EAAK,eAC1lBrD,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,OAAOkuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,gBACrEkuB,EAAInuB,MAAQ,KAAKmuB,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,KAAKmuB,EAAIluB,OAAS,iBACjEkuB,EAAInuB,MAAQ,KAAKmuB,EAAIluB,OAAS,gBAC/BmuB,EAAG,OAAO,CAACI,MAAM,CAAC,eAAe,IAAI,KAAO,cAAc,iBAAiB,QAAQ,OAAU,QAAOL,EAAIyF,YAAY,OAASzF,EAAIqD,YAAY,GAAG,EAAK,kBACjJrD,EAAIluB,OAAS,UAAUkuB,EAAIluB,OAAS,kBACrCkuB,EAAIluB,OAAS,OAAOkuB,EAAIluB,OAAS,mBACjCkuB,EAAIluB,OAAS,kBACdmuB,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACH,EAAIhnD,GAAG,YAAY,IAC7E,EACIvQ,EAAkB,GCmFtB,GACAqF,KAAA,gBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEAsC,gBAAA,CACAp1D,KAAA+J,OACA+oD,QAAA,gBAGAr4C,IAAAA,GACA,MAAAzV,EAAAwxD,IACA,OACAjE,IAAA,gBACAqF,SAAA,2BAAA5yD,IAEAwiD,aAAA,sBAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACA0iC,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,EACA0rC,KAAAA,EAAAA,MAEApE,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GCjJgP,ICO5O,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIF,GAAe,EAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAUuE,GAAYj4D,KAAMi4D,GAClC,CCLA,IAAIv9D,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,oBAAoB,CAACF,EAAG,MAAM,CAACE,YAAY,0BAA0BE,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,OAAO,CAACI,MAAM,CAAC,KAAOL,EAAIiD,gBAAgB,OAASjD,EAAIqD,YAAY,GAAG,EAAK,6DAE5RrD,EAAInuB,MAAQ,WAAWmuB,EAAInuB,MAAQ,mBACnCmuB,EAAInuB,MAAQ,KAAKmuB,EAAIluB,OAAS,UAAUkuB,EAAIluB,OAAS,kBACnDkuB,EAAIluB,OAAS,uBAChBmuB,EAAG,OAAO,CAACI,MAAM,CAAC,KAAO,cAAc,eAAe,IAAI,iBAAiB,QAAQ,mBAAmB,QAAQ,OAASL,EAAIqD,YAAY,GAAG,EAAK,mBAAkBpD,EAAG,OAAO,CAACI,MAAM,CAAC,KAAO,cAAc,OAASL,EAAIqD,YAAY,GAAG,EAAK,0CAAyCpD,EAAG,OAAO,CAACI,MAAM,CAAC,KAAO,cAAc,OAASL,EAAIqD,YAAY,GAAG,EAAK,KAAIrD,EAAInuB,MAAQ,KAAKmuB,EAAIluB,OAAS,QAAQkuB,EAAInuB,MAAQ,KAAKmuB,EAAIluB,OAAS,OAAOkuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,SAASmuB,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACH,EAAIhnD,GAAG,YAAY,IAC5hB,EACIvQ,GAAkB,GC0CtB,IACAqF,KAAA,gBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEAsC,gBAAA,CACAp1D,KAAA+J,OACA+oD,QAAA,gBAGAr4C,IAAAA,GACA,OACA83C,IAAA,gBAEA/K,aAAA,sBAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACA0iC,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GCzFgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAUwE,GAAYl4D,KAAMk4D,GAClC,CCLA,IAAIx9D,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAACE,YAAY,0BAA0BE,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAIiD,gBAAgB,OAAU,gBACtQjD,EAAInuB,MAAQ,QAAQmuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,QAAQkuB,EAAIluB,OAAS,aAC5EmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,QAAOrD,EAAInuB,MAAQ,QAAQmuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,QAAQkuB,EAAIluB,OAAS,YAAYmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,QAAOrD,EAAInuB,MAAQ,QAAQmuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,QAAQkuB,EAAIluB,OAAS,YAAYmuB,EAAG,SAAS,CAACI,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,GAAK,KAAK,GAAK,KAAK,EAAI,OAAOpD,EAAG,SAAS,CAACI,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,GAAKrD,EAAInuB,MAAQ,GAAG,GAAK,KAAK,EAAI,OAAOouB,EAAG,SAAS,CAACI,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,GAAKrD,EAAInuB,MAAQ,GAAG,GAAKmuB,EAAIluB,OAAS,GAAG,EAAI,OAAOmuB,EAAG,SAAS,CAACI,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,GAAK,KAAK,GAAKrD,EAAIluB,OAAS,GAAG,EAAI,SAASmuB,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACH,EAAIhnD,GAAG,YAAY,IACvtB,EACIvQ,GAAkB,GC8BtB,IACAqF,KAAA,eACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEAsC,gBAAA,CACAp1D,KAAA+J,OACA+oD,QAAA,gBAGAr4C,IAAAA,GACA,OACA83C,IAAA,eAEA/K,aAAA,oCAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACA0iC,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GC1EgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAUyE,GAAWn4D,KAAMm4D,GACjC,CCLA,IAAIz9D,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAACE,YAAY,0BAA0BE,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAIiD,gBAAgB,OAAU,kBACpQjD,EAAInuB,MAAQ,UAAUmuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,UAAUkuB,EAAIluB,OAAS,cACnFmuB,EAAG,WAAW,CAACE,YAAY,eAAeE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,QAAOrD,EAAInuB,MAAQ,SAASmuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,SAASkuB,EAAIluB,OAAS,aAAamuB,EAAG,WAAW,CAACE,YAAY,eAAeE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,UAASrD,EAAInuB,MAAQ,UAAUmuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,UAAUkuB,EAAIluB,OAAS,eAAemuB,EAAG,WAAW,CAACE,YAAY,eAAeE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,UAASrD,EAAInuB,MAAQ,UAAUmuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,UAAUkuB,EAAIluB,OAAS,eAAemuB,EAAG,WAAW,CAACE,YAAY,eAAeE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,UAASrD,EAAInuB,MAAQ,SAASmuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,SAASkuB,EAAIluB,OAAS,gBAAgBmuB,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACH,EAAIhnD,GAAG,YAAY,IACjzB,EACIvQ,GAAkB,GCkCtB,IACAqF,KAAA,eACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEAsC,gBAAA,CACAp1D,KAAA+J,OACA+oD,QAAA,gBAGAr4C,IAAAA,GACA,OACA83C,IAAA,eAEA/K,aAAA,sBAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACA0iC,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GC9EgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAU0E,GAAWp4D,KAAMo4D,GACjC,CCLA,IAAI19D,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAACmD,MAAO,2BAA0BpD,EAAI37B,SAAW,eAAeg8B,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAIiD,gBAAgB,OAAU,WACpSjD,EAAInuB,MAAQ,+DACDmuB,EAAIluB,OAAS,UAAUkuB,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,aACnFmuB,EAAG,WAAW,CAACE,YAAY,gBAAgBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,QAAOrD,EAAIluB,OAAS,SAASkuB,EAAIluB,OAAS,SAASkuB,EAAIluB,OAAS,2CAC3HkuB,EAAInuB,MAAQ,YAAYouB,EAAG,WAAW,CAACE,YAAY,gBAAgBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,QAAOrD,EAAIluB,OAAS,SAASkuB,EAAIluB,OAAS,SAASkuB,EAAIluB,OAAS,mBACxMkuB,EAAIluB,OAAS,SAASmuB,EAAG,WAAW,CAACE,YAAY,gBAAgBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,MAAKrD,EAAIluB,OAAS,SAASkuB,EAAIluB,OAAS,QAAQmuB,EAAG,WAAW,CAACE,YAAY,gBAAgBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,0BAAyBpD,EAAG,WAAW,CAACE,YAAY,gBAAgBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,kBAAiBpD,EAAG,WAAW,CAACE,YAAY,gBAAgBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,oBAAmBpD,EAAG,WAAW,CAACE,YAAY,gBAAgBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,oCAAmCpD,EAAG,WAAW,CAACE,YAAY,gBAAgBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,oBAAmBpD,EAAG,WAAW,CAACE,YAAY,gBAAgBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,WAAUrD,EAAInuB,MAAQ,YAAYouB,EAAG,WAAW,CAACE,YAAY,iBAAiBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,WAAUrD,EAAInuB,MAAQ,cAAcouB,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACH,EAAIhnD,GAAG,YAAY,IAC9gC,EACIvQ,GAAkB,GCmCtB,IACAqF,KAAA,eACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEAt8B,QAAA,CACAx2B,KAAAojD,QACA0P,SAAA,GAEAsC,gBAAA,CACAp1D,KAAA+J,OACA+oD,QAAA,gBAGAr4C,IAAAA,GACA,OACA83C,IAAA,eAEA/K,aAAA,4BAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACA0iC,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GCtFgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAU2E,GAAWr4D,KAAMq4D,GACjC,CCLA,IAAI39D,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAACmD,MAAO,4BAA2BpD,EAAI37B,SAAW,eAAeg8B,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAIiD,gBAAgB,OAAU,kBAC9RjD,EAAInuB,MAAQ,UAAUmuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,MAAMkuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,UAAUkuB,EAAIluB,OAAS,cACzHmuB,EAAG,WAAW,CAACE,YAAY,gBAAgBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,QAAOrD,EAAInuB,MAAQ,QAAQmuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,gBACjJkuB,EAAInuB,MAAQ,QAAQmuB,EAAIluB,OAAS,QAAQkuB,EAAIluB,OAAS,YAAYmuB,EAAG,WAAW,CAACE,YAAY,gBAAgBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,QAAOrD,EAAInuB,MAAQ,SAASmuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,eACtNkuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,QAAQkuB,EAAIluB,OAAS,YAAYmuB,EAAG,WAAW,CAACE,YAAY,gBAAgBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,UAASrD,EAAInuB,MAAQ,YAAYouB,EAAG,WAAW,CAACE,YAAY,gBAAgBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,UAASrD,EAAInuB,MAAQ,YAAYouB,EAAG,WAAW,CAACE,YAAY,gBAAgBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,OAAMrD,EAAIluB,OAAS,MAAMkuB,EAAInuB,MAAQ,QAAQmuB,EAAIluB,OAAS,QAAQmuB,EAAG,WAAW,CAACE,YAAY,gBAAgBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,OAAMrD,EAAIluB,OAAS,MAAMkuB,EAAInuB,MAAQ,QAAQmuB,EAAIluB,OAAS,UAAUmuB,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACH,EAAIhnD,GAAG,YAAY,IACnrB,EACIvQ,GAAkB,GCgCtB,IACAqF,KAAA,eACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEAt8B,QAAA,CACAx2B,KAAAojD,QACA0P,SAAA,GAEAsC,gBAAA,CACAp1D,KAAA+J,OACA+oD,QAAA,gBAGAr4C,IAAAA,GACA,OACA83C,IAAA,eAEA/K,aAAA,0DAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACA0iC,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GClFgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAU4E,GAAWt4D,KAAMs4D,GACjC,CCLA,IAAI59D,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAACE,YAAY,0BAA0BE,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAIiD,gBAAgB,OAAU,gBACtQjD,EAAInuB,MAAQ,QAAQmuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,QAAQkuB,EAAIluB,OAAS,aAC5EmuB,EAAG,SAAS,CAACI,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,GAAK,IAAI,GAAK,IAAI,EAAI,OAAOpD,EAAG,SAAS,CAACI,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,GAAKrD,EAAInuB,MAAQ,EAAE,GAAK,IAAI,EAAI,OAAOouB,EAAG,SAAS,CAACI,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,GAAKrD,EAAInuB,MAAQ,EAAE,GAAKmuB,EAAIluB,OAAS,EAAE,EAAI,OAAOmuB,EAAG,SAAS,CAACI,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,GAAK,IAAI,GAAKrD,EAAIluB,OAAS,EAAE,EAAI,OAAOmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,SAAQrD,EAAInuB,MAAQ,WAAWouB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,OAAMrD,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,OAAOmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,aAAWrD,EAAIluB,OAAS,OAAQmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,GAAErD,EAAInuB,MAAQ,SAASmuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,QAAQmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,kBAAiBpD,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,iBAAgBpD,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,GAAErD,EAAInuB,MAAQ,SAASmuB,EAAInuB,MAAQ,WAAWouB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,GAAErD,EAAInuB,MAAQ,SAASmuB,EAAInuB,MAAQ,WAAWouB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,MAAKrD,EAAIluB,OAAS,SAASkuB,EAAIluB,OAAS,QAAQmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,MAAKrD,EAAIluB,OAAS,SAASkuB,EAAIluB,OAAS,QAAQmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,GAAErD,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,MAAMkuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,QAAQmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,GAAErD,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,MAAMkuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,UAAUmuB,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACH,EAAIhnD,GAAG,YAAY,IACtqD,EACIvQ,GAAkB,GCkCtB,IACAqF,KAAA,eACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEAsC,gBAAA,CACAp1D,KAAA+J,OACA+oD,QAAA,gBAGAr4C,IAAAA,GACA,OACA83C,IAAA,eAEA/K,aAAA,qCAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACA0iC,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GC9EgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAU6E,GAAWv4D,KAAMu4D,GACjC,CCLA,IAAI79D,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,kBAAkBlrD,MAAQ,8BAA6B+qD,EAAIqD,YAAY,yBAAyBrD,EAAIqD,YAAY,yBAAyBrD,EAAIiD,mBAAoB,CAAChD,EAAG,MAAM,CAACE,YAAY,0BAA0BE,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,WAAW,CAACE,YAAY,sBAAsBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,sBAAqBpD,EAAG,WAAW,CAACE,YAAY,sBAAsBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,GAAErD,EAAInuB,MAAQ,SAASmuB,EAAInuB,YAAYmuB,EAAInuB,eAAeouB,EAAG,WAAW,CAACE,YAAY,sBAAsBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,GAAErD,EAAInuB,MAAQ,OAAOmuB,EAAIluB,UAAUkuB,EAAInuB,UAAUmuB,EAAIluB,UAAUkuB,EAAInuB,UAAUmuB,EAAIluB,OAAS,QAAQmuB,EAAG,WAAW,CAACE,YAAY,sBAAsBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,MAAKrD,EAAIluB,OAAS,SAASkuB,EAAIluB,cAAckuB,EAAIluB,YAAYmuB,EAAG,WAAW,CAACE,YAAY,sBAAsBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,sBAAqBpD,EAAG,WAAW,CAACE,YAAY,sBAAsBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,GAAErD,EAAInuB,MAAQ,SAASmuB,EAAInuB,YAAYmuB,EAAInuB,eAAeouB,EAAG,WAAW,CAACE,YAAY,sBAAsBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,GAAErD,EAAInuB,MAAQ,OAAOmuB,EAAIluB,UAAUkuB,EAAInuB,UAAUmuB,EAAIluB,UAAUkuB,EAAInuB,UAAUmuB,EAAIluB,OAAS,QAAQmuB,EAAG,WAAW,CAACE,YAAY,sBAAsBE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAAU,MAAKrD,EAAIluB,OAAS,SAASkuB,EAAIluB,cAAckuB,EAAIluB,cAAcmuB,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACH,EAAIhnD,GAAG,YAAY,IACrnD,EACIvQ,GAAkB,GC8BtB,IACAqF,KAAA,eACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEAsC,gBAAA,CACAp1D,KAAA+J,OACA+oD,QAAA,gBAGAr4C,IAAAA,GACA,OACA83C,IAAA,eAEA/K,aAAA,kDAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACA0iC,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GCxEgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAU8E,GAAWx4D,KAAMw4D,GACjC,CCLA,IAAI99D,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAACE,YAAY,0BAA0BE,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,OAAO,CAACA,EAAG,OAAO,CAACI,MAAM,CAAC,GAAKL,EAAIuG,KAAK,EAAIvG,EAAIwG,MAAM,KAAO,iBAAiBvG,EAAG,iBAAiB,CAACI,MAAM,CAAC,GAAKL,EAAIx6B,SAAS,GAAK,MAAM,GAAK,MAAM,EAAI,QAAQ,CAACy6B,EAAG,OAAO,CAACI,MAAM,CAAC,OAAS,KAAK,aAAa,OAAO,eAAe,OAAOJ,EAAG,OAAO,CAACI,MAAM,CAAC,OAAS,OAAO,aAAa,OAAO,eAAe,QAAQ,GAAGJ,EAAG,OAAO,CAACI,MAAM,CAAC,GAAKL,EAAIyG,OAAO,CAACxG,EAAG,SAAS,CAACI,MAAM,CAAC,GAAK,IAAI,GAAK,IAAI,EAAI,MAAM,KAAQ,QAAOL,EAAIx6B,cAAc,CAACy6B,EAAG,gBAAgB,CAACI,MAAM,CAAC,IAAO,GAAEL,EAAI0G,OAAO,KAAO1G,EAAIwG,MAAM,OAAS,OAAO,YAAc,iBAAiB,MAAM,GAAGvG,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAIiD,gBAAgB,OAAU,QAAOjD,EAAInuB,MAAQ,QAAQmuB,EAAInuB,MAAQ,KAAKmuB,EAAIluB,OAAS,QAAQkuB,EAAIluB,OAAS,OAAOmuB,EAAG,MAAM,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,eAAe,IAAI,aAAc,IAAGrD,EAAIuG,UAAUtG,EAAG,MAAM,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,eAAe,IAAI,aAAc,IAAGrD,EAAIuG,OAAO,KAAQ,QAAOvG,EAAIyG,UAAU,CAACxG,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,mBAAmB,KAAQ,MAAKL,EAAI30D,SAAS,GAAM,GAAE20D,EAAI30D,YAAY,IAAO,GAAE20D,EAAI0G,OAAO,YAAc,oBAAoBzG,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACH,EAAIhnD,GAAG,YAAY,IAC10C,EACIvQ,GAAkB,GCuEtB,IACAqF,KAAA,eACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEA+F,IAAA,CACA74D,KAAA+3D,OACAjF,QAAA,GAEAsC,gBAAA,CACAp1D,KAAA+J,OACA+oD,QAAA,eAEAt8B,QAAA,CACAx2B,KAAAojD,QACA0P,SAAA,IAGAr4C,IAAAA,GACA,MAAAzV,EAAAwxD,IACA,OACAjE,IAAA,eACAmG,KAAA,qBAAA1zD,IACA2yB,SAAA,yBAAA3yB,IACA4zD,KAAA,qBAAA5zD,IAEAwiD,aAAA,sBAEAgO,YAAA,GAEA,EACAlB,SAAA,CACA92D,MAAAA,GACA,YAAAwmC,EAAA,OAAAC,GAAA,KAEA,UAAAD,EAAAC,EAAA,EACA,EACA00B,KAAAA,GACA,cAAAniC,EAAA,MAAAwN,EAAA,OAAAC,GAAA,KAEA,OAAAzN,EAAA,qBAAAyN,EAAA,SAAAD,EAAA,QAAAC,EAAA,SAAAD,EAAA,sBAEA,cAAAA,EAAA,aAAAA,EAAA,QAAAC,EAAA,aAAAA,EAAA,eACA,GAEAgvB,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACA0iC,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GC3IgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAUmF,GAAW74D,KAAM64D,GACjC,CCLA,IAAIn+D,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAACE,YAAY,0BAA0BE,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,OAAO,CAACA,EAAG,iBAAiB,CAACI,MAAM,CAAC,GAAKL,EAAI4G,WAAW,GAAK,KAAK,GAAK,KAAK,GAAK,OAAO,GAAK,SAAS,CAAC3G,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,KAAK,OAAS,aAAa,IAAM,MAAM,MAAQ,KAAK,YAAc,gBAAgBJ,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,KAAK,OAAS,eAAe,IAAM,MAAM,MAAQ,KAAK,YAAc,gBAAgBJ,EAAG,OAAO,CAACI,MAAM,CAAC,OAAS,KAAK,aAAaL,EAAIqD,YAAY,KAAK,CAACpD,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,aAAa,OAAU,GAAEL,EAAIqD,YAAY,MAAMrD,EAAIqD,YAAY,MAAMrD,EAAIqD,YAAY,KAAK,IAAM,MAAM,MAAQ,KAAK,YAAc,kBAAkBpD,EAAG,OAAO,CAACI,MAAM,CAAC,OAAS,OAAO,aAAaL,EAAIqD,YAAY,KAAK,CAACpD,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,aAAa,OAAU,GAAEL,EAAIqD,YAAY,MAAMrD,EAAIqD,YAAY,MAAMrD,EAAIqD,YAAY,KAAK,IAAM,MAAM,MAAQ,KAAK,YAAc,mBAAmB,GAAGpD,EAAG,OAAO,CAACI,MAAM,CAAC,GAAKL,EAAI6G,SAAS,CAAC5G,EAAG,WAAW,CAACI,MAAM,CAAC,OAAS,OAAO,eAAe,IAAI,KAAO,cAAc,OAAU,MAAkB,GAAbL,EAAIluB,gBAAkC,GAAZkuB,EAAInuB,MAAc,UAAUouB,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,OAAO,OAAU,MAAkB,IAAbL,EAAIluB,gBAAmC,GAAZkuB,EAAInuB,MAAc,qBAC7yC,GAAZmuB,EAAInuB,sBAAyC,IAAbmuB,EAAIluB,OAAgB,mBACnDmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAAS,OAAO,eAAe,IAAI,KAAO,cAAc,OAAU,GAAc,GAAZL,EAAInuB,YAAkBmuB,EAAInuB,MAAQ,SAASmuB,EAAInuB,MAAQ,MAAmB,IAAbmuB,EAAIluB,YAAmBmuB,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,OAAO,OAAU,iBACjN,IAAZL,EAAInuB,YAA+B,IAAZmuB,EAAInuB,yBACf,IAAZmuB,EAAInuB,MAAe,QAAoB,IAAZmuB,EAAInuB,MAAe,sBAC7CouB,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,OAAO,OAAU,iBACnC,GAAZL,EAAInuB,YAAkBmuB,EAAInuB,MAAQ,QAAQmuB,EAAInuB,MAAQ,MAAmB,GAAbmuB,EAAIluB,uBAChEkuB,EAAInuB,MAAQ,MAAmB,GAAbmuB,EAAIluB,OAAe,KAAKkuB,EAAInuB,MAAQ,QAAoB,GAAZmuB,EAAInuB,MAAc,sBAC/EouB,EAAG,WAAW,CAACI,MAAM,CAAC,OAAS,OAAO,eAAe,IAAI,KAAO,cAAc,OAAU,MAAkB,GAAbL,EAAIluB,aAAmBkuB,EAAIluB,OAAS,KAAiB,GAAZkuB,EAAInuB,MAAc,MAAMmuB,EAAIluB,OAAS,OAAOmuB,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,OAAO,OAAU,oBACjN,IAAbL,EAAIluB,aAAiC,GAAbkuB,EAAIluB,0BACf,GAAbkuB,EAAIluB,OAAe,QAAqB,IAAbkuB,EAAIluB,OAAgB,mBACjDmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAAS,OAAO,eAAe,IAAI,KAAO,cAAc,OAAU,GAAc,IAAZL,EAAInuB,UAAiBmuB,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,MAAmB,IAAbmuB,EAAIluB,YAAmBmuB,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,OAAO,OAAU,iBACjP,IAAZL,EAAInuB,UAAiBmuB,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,MAAmB,GAAbmuB,EAAIluB,uBACjGkuB,EAAInuB,MAAQ,MAAmB,GAAbmuB,EAAIluB,OAAe,KAAKkuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,KAAiB,IAAZkuB,EAAInuB,MAAe,MAAMmuB,EAAIluB,OAAS,sBAChH,GAAGmuB,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAIiD,gBAAgB,OAAU,iBACrD,GAAZjD,EAAInuB,MAAc,QAAoB,GAAZmuB,EAAInuB,MAAc,QAAoB,IAAZmuB,EAAInuB,MAAe,eACjE,IAAZmuB,EAAInuB,MAAe,SAAqB,IAAZmuB,EAAInuB,MAAe,SAAqB,IAAZmuB,EAAInuB,MAAe,eAC/D,GAAZmuB,EAAInuB,MAAc,QAAoB,GAAZmuB,EAAInuB,MAAc,SAASmuB,EAAInuB,MAAQ,UAAUmuB,EAAInuB,MAAQ,OAAoB,GAAbmuB,EAAIluB,OAAe,YACjHkuB,EAAInuB,MAAQ,MAAmB,GAAbmuB,EAAIluB,OAAe,KAAKkuB,EAAInuB,MAAQ,MAAmB,GAAbmuB,EAAIluB,OAAe,KAAKkuB,EAAInuB,MAAQ,OAAoB,GAAbmuB,EAAIluB,OAAe,YAC1HkuB,EAAInuB,MAAQ,OAAOmuB,EAAIluB,OAAS,MAAkB,IAAZkuB,EAAInuB,MAAe,MAAMmuB,EAAIluB,OAAS,OAAmB,IAAZkuB,EAAInuB,MAAe,MAAMmuB,EAAIluB,OAAS,gBACrHkuB,EAAIluB,OAAS,SAAsB,IAAbkuB,EAAIluB,OAAgB,SAAsB,IAAbkuB,EAAIluB,OAAgB,aAC1EmuB,EAAG,OAAO,CAACI,MAAM,CAAC,EAAI,IAAI,EAAI,IAAI,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,OAAO,KAAQ,QAAOkuB,EAAI4G,cAAc,KAAQ,QAAO5G,EAAI6G,eAAe5G,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACH,EAAIhnD,GAAG,YAAY,IACpN,EACIvQ,GAAkB,GC8GtB,IACAqF,KAAA,eACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEAsC,gBAAA,CACAp1D,KAAA+J,OACA+oD,QAAA,gBAGAr4C,IAAAA,GACA,MAAAzV,EAAAwxD,IACA,OACAjE,IAAA,eAEAwG,WAAA,yBAAA/zD,IACAg0D,OAAA,qBAAAh0D,IAEAwiD,aAAA,sBAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACA0iC,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GCjLgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAUsF,GAAWh5D,KAAMg5D,GACjC,CCLA,IAAIt+D,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,oBAAoB,CAAEH,EAAIa,aAAc,CAACZ,EAAG,MAAM,CAACE,YAAY,gBAAgB,CAACH,EAAIkD,GAAIlD,EAAIa,aAAav4C,MAAM,SAASuG,GAAM,OAAOoxC,EAAG,MAAM,CAAC/yD,IAAI2hB,EAAK/gB,MAAM,CAACkyD,EAAIO,GAAGP,EAAIQ,GAAG3xC,EAAK/gB,QAAQ,IAAGmyD,EAAG,MAAM,CAACD,EAAIO,GAAG,QAAQ,GAAGN,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACH,EAAIkD,GAAIlD,EAAI+G,eAAe,SAASC,EAAQ17D,GAAO,OAAO20D,EAAG,MAAM,CAAC/yD,IAAI5B,EAAM60D,YAAY,gBAAgB,CAACF,EAAG,MAAM,CAACE,YAAY,sBAAsBlrD,MAAQ,UAAmB,IAAV+xD,yBAAqChH,EAAIa,aAAa58B,OAAO34B,EAAQ00D,EAAIa,aAAa58B,OAAO54B,YAAa,CAAE20D,EAAIa,aAAaoG,UAAWhH,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACH,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIkH,aAAa57D,OAAW00D,EAAI8F,QAAQ,IAAG7F,EAAG,MAAM,CAACE,YAAY,cAAcH,EAAIkD,GAAIlD,EAAImH,WAAW,SAAS5uB,EAAMjtC,GAAO,OAAO20D,EAAG,MAAM,CAAC/yD,IAAIqrC,EAAQjtC,GAAO,CAAC00D,EAAIO,GAAGP,EAAIQ,GAAGjoB,KAAS,IAAG,IAAI,GAAIynB,EAAIa,aAAauG,KAAMnH,EAAG,MAAM,CAACE,YAAY,aAAa,CAACH,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIa,aAAauG,SAASpH,EAAI8F,MAAM9F,EAAI8F,MAAM,EACngC,EACIr9D,GAAkB,GCqCtB,IACAqF,KAAA,iBACA4yD,MAAA,CACAhkC,OAAA,CACA7uB,KAAAxB,OACAs0D,QAAAA,KAAA,MAGAr4C,IAAAA,GACA,OACA+V,cAAA,CAOA/V,KAAA,GAOA2b,OAAA,CACA,UACA,UACA,UACA,UACA,UACA,UACA,WAOAmjC,KAAA,GAMAH,WAAA,GAGApG,aAAA,KAEAkG,cAAA,GACAG,aAAA,GACAC,UAAA,GACAE,gBAAA,GAEA,EACAvG,MAAA,CACApkC,MAAAA,GACA,eAAA4qC,GAAA,KAEAA,GACA,GAEAz1D,QAAA,CACAy1D,QAAAA,GACA,kBAAArG,EAAA,8BAAAsG,GAAA,KAEAtG,IAEAsG,GACA,EACAtG,WAAAA,GACA,WAAAvkC,EAAA,cAAA2B,GAAA,KAEA,KAAAwiC,cAAA7lB,EAAAA,EAAAA,YACAld,EAAAA,EAAAA,WAAAO,GAAA,GACA3B,GAAA,GAEA,EACA6qC,6BAAAA,GACA,WAAAj/C,GAAA,KAAAu4C,aAEA,IAAAv4C,EAAAjd,OAAA,OAEA,MAAA67D,EAAA5+C,EAAAyK,KAAA,EAAA5nB,WAAAA,IAEAk0C,EAAA7vC,KAAAwI,OAAAkvD,GAEA,KAAAA,aAAAA,EAEA,KAAAH,cAAAG,EAAAn0C,KAAA1B,GAAAguB,EAAAhuB,EAAAguB,EAAA,IAEA,MAAAmoB,EAAAnoB,EAAA,EAEA8nB,EAAAj3D,MAAAu3D,KACA,IAAAtiB,IAAA,IAAAj1C,MAAA,GAAAkjB,KAAA,GAAAL,KAAA,CAAA1B,EAAAhkB,IAAAmC,KAAA0I,KAAA7K,EAAAm6D,OAGA,KAAAL,UAAAA,EAEA,KAAAE,gBAAAn3D,MAAAu3D,KAAAN,GAAAp0C,KAAA1B,GACAguB,EAAAhuB,EAAAguB,EAAA,GAEA,GAEAkiB,OAAAA,GACA,eAAA+F,GAAA,KAEAA,GACA,GCnJgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACvE,GACvBA,EAAIvB,UAAUkG,GAAa55D,KAAM45D,GACnC,CCLA,IAAIl/D,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,uBAAuB,CAACF,EAAG,MAAM,CAACG,IAAIJ,EAAI2H,SAASxH,YAAY,6BACpK,EACI13D,GAAkB,GCWtB,IACAqF,KAAA,WACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAtsB,OAAA,CACAvmC,KAAAxB,OACAs0D,QAAAA,KAAA,MAGAr4C,IAAAA,GACA,MAAAzV,EAAAwxD,IACA,OACAjE,IAAA,oBAAAvtD,IACA80D,SAAA,SAAA90D,IAEAyiC,MAAA,KAEA,EACAwrB,MAAA,CACA1sB,MAAAA,GACA,UAAAkB,EAAA,OAAAlB,GAAA,KAEAkB,IAEAlB,IAAAA,EAAA,IAEAkB,EAAAjB,UAAAD,GAAA,GACA,GAEAviC,QAAA,CACAgzD,wBAAAA,GACA,gBAAAtC,GAAA,KAEAA,GACA,EACAA,SAAAA,GACA,YAAApB,EAAA,SAAAwG,EAAA,OAAAvzB,GAAA,KAEAkB,EAAA,KAAAA,MAAA,IAAAtB,EAAAA,GAAAmtB,EAAAwG,IAEAvzB,GAEAkB,EAAAjB,UAAAD,EACA,EACA2wB,QAAAA,GACA,YAAAzvB,GAAA,KAEAA,GAEAA,EAAAJ,QACA,IC/DgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAAC6tB,GACvBA,EAAIvB,UAAUxtB,GAAOlmC,KAAMkmC,GAC7B,CCLA,IAAIxrC,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,2BAA2B,CAACF,EAAG,MAAM,CAACI,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAASkuB,EAAIkD,GAAIlD,EAAI4H,QAAQ,SAAS/4C,EAAKxhB,GAAG,OAAO4yD,EAAG,IAAI,CAAC/yD,IAAIG,GAAG,CAAC4yD,EAAG,OAAO,CAACI,MAAM,CAAC,EAAIxxC,EAAK0H,EAAE,KAAOypC,EAAIa,aAAagH,eAAe5H,EAAG,OAAO,CAAChrD,MAAQ,YAAW+qD,EAAIa,aAAar9B,aAAc68B,MAAM,CAAC,KAAOL,EAAIa,aAAaiH,UAAU,EAAIj5C,EAAK1F,EAAE,EAAI62C,EAAIluB,OAAS,IAAI,CAACkuB,EAAIO,GAAG,IAAIP,EAAIQ,GAAG3xC,EAAK/gB,MAAM,OAAQkyD,EAAIa,aAAakH,IAAI18D,OAAQ40D,EAAG,QAAQ,CAACI,MAAM,CAAC,aAAaL,EAAIa,aAAakH,IAAI16D,EAAI2yD,EAAIa,aAAakH,IAAI18D,QAAQ,MAAQ20D,EAAIa,aAAamH,cAAc,OAAShI,EAAIa,aAAamH,cAAc,EAAIn5C,EAAK1F,EAAI62C,EAAIa,aAAamH,cAAgB,EAAE,EAAIn5C,EAAKmZ,EAAIg4B,EAAIa,aAAamH,iBAAiBhI,EAAI8F,KAAM9F,EAAIa,aAAaoG,UAAWhH,EAAG,OAAO,CAAChrD,MAAQ,YAAW+qD,EAAIa,aAAar9B,aAAc68B,MAAM,CAAC,KAAOL,EAAIa,aAAaiH,UAAU,EAAIj5C,EAAK1F,EAAE,EAAI0F,EAAKo5C,QAAQ,CAACjI,EAAIO,GAAG,IAAIP,EAAIQ,GAAG3xC,EAAK1jB,OAAO,OAAO60D,EAAI8F,MAAM,IAAG,IACl+B,EACIr9D,GAAkB,GC8CtB,IACAqF,KAAA,uBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAhkC,OAAA,CACA7uB,KAAAxB,OACAs0D,QAAAA,KAAA,MAGAr4C,IAAAA,GACA,OACA83C,IAAA,uBAEA/hC,cAAA,CAMA/V,KAAA,GAMAy/C,IAAA,GAMAvkC,SAAA,GAMAwkC,cAAA,GAMAH,YAAA,yBAMAC,UAAA,OAMAb,WAAA,GAGApG,aAAA,KAEA+G,OAAA,GAEA,EACA9G,MAAA,CACApkC,MAAAA,GACA,eAAA4qC,GAAA,KAEAA,GACA,GAEAz1D,QAAA,CACAgzD,wBAAAA,GACA,eAAAyC,GAAA,KAEAA,GACA,EACAvC,QAAAA,GACA,eAAAuC,GAAA,KAEAA,GACA,EACAA,QAAAA,GACA,kBAAArG,EAAA,SAAAiH,EAAA,YAAAC,GAAA,KAEAlH,IAEAiH,IAEAC,GACA,EACAlH,WAAAA,GACA,oBAAA5iC,EAAA,OAAA3B,GAAA,KAEA,KAAAmkC,cAAA7lB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAO,GAAA,GAAA3B,GAAA,GACA,EACAwrC,QAAAA,GACA,mBAAArH,GAAA,KACA,SAAAv4C,GAAAu4C,EAEAv4C,GAAAwV,EAAAA,EAAAA,WAAAxV,GAAA,GAEAA,EAAA4G,MAAA,EAAA/jB,MAAAa,IAAAb,MAAAc,KACAD,EAAAC,GAAA,EACAD,EAAAC,EAAA,EACAD,IAAAC,EAAA,WAGA,MAAA+L,EAAAsQ,EAAA,GAAAA,EAAA,GAAAnd,MAAA,GAEAmd,EAAAA,EAAAyK,KAAAlE,IAAA,IACAA,EACAm3B,QAAAn3B,EAAA1jB,MAAA6M,MAGA6oD,EAAAv4C,KAAAA,CACA,EACA6/C,WAAAA,GACA,mBAAAtH,EAAA,MAAAhvB,EAAA,OAAAC,GAAA,MAEA,cAAAk2B,EAAA,SAAAxkC,EAAA,KAAAlb,GAAAu4C,EAEAuH,EAAA9/C,EAAAjd,OACA22C,EAAAnQ,GAAAu2B,EAAA,GAEAC,EAAAv2B,EAAAk2B,EAAAxkC,EAAA,EACA8kC,EAAAx2B,EAAAtO,EAAA,EAEA,KAAAokC,OAAAt/C,EAAAyK,KAAA,CAAAlE,EAAAxhB,KACA,cAAA24C,GAAAn3B,EAEA05C,EAAAvmB,GAAA30C,EAAA,GACAm7D,EAAAxmB,EAAA30C,EACAo7D,EAAAzmB,GAAA30C,EAAA,GAEAq7D,EAAAJ,EAAAD,EAAAriB,EACA2iB,EAAAN,EAAAriB,EAAA,GAAA0iB,EAEAnyC,EAAA,gBACAiyC,MAAAF,iBACAC,MAAAI,KAAAJ,KAAAG,iBACAH,KAAAG,iBACAH,MAAAI,KAAAF,KAAAH,iBACAE,MAAAF,2BAIAL,GAAAK,EAAAI,GAAA,EAAAllC,EAAA,EAEA,UACA3U,EACA0H,IACApN,EAAAo/C,EACAvgC,EAAA0gC,EACAT,QACA,GAEA,IC5MgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAAClF,GACvBA,EAAIvB,UAAUoH,GAAmB96D,KAAM86D,GACzC,CCLA,IAAIpgE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAAChrD,MAAQ,mBAAkB+qD,EAAI6I,SAAS,MAAM7I,EAAI6I,SAAS,OAAQxI,MAAM,CAAC,MAAS,GAAEL,EAAI8I,MAAM,OAAO,OAAU,GAAE9I,EAAI8I,MAAM,SAAS,CAAC9I,EAAIkD,GAAIlD,EAAIjrC,QAAQ,SAAS1b,EAAMhM,GAAG,MAAO,CAAEmC,KAAKgJ,SAAW,GAAKynD,EAAG,OAAO,CAAC/yD,IAAIG,EAAEgzD,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,EAAIhqD,EAAM,GAAK2mD,EAAI+I,oBAAoB,EAAI1vD,EAAM,GAAK2mD,EAAI+I,oBAAoB,MAAQ/I,EAAIgJ,gBAAgB,OAAShJ,EAAIgJ,kBAAkB,CAAEx5D,KAAKgJ,SAAW,GAAKynD,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,OAAO,OAAU,GAAEL,EAAIqD,YAAY,iBAAiB,IAAM,KAAK,MAAwB,EAAhB7zD,KAAKgJ,SAAa,YAAc,gBAAgBwnD,EAAI8F,OAAO9F,EAAI8F,KAAK,IAAI9F,EAAIiJ,MAAM,GAAIhJ,EAAG,OAAO,CAACI,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,EAAIrD,EAAIiJ,MAAM,GAAG,GAAKjJ,EAAIgJ,gBAAgB,EAAIhJ,EAAIiJ,MAAM,GAAG,GAAKjJ,EAAIgJ,gBAAgB,MAA8B,EAAtBhJ,EAAIgJ,gBAAoB,OAA+B,EAAtBhJ,EAAIgJ,kBAAsB,CAAC/I,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,QAAQ,OAAU,KAA0B,EAAtBL,EAAIgJ,gBAAsB,IAAM,KAAK,YAAc,gBAAgB/I,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,SAAS,OAAU,KAA0B,EAAtBL,EAAIgJ,gBAAsB,IAAM,KAAK,YAAc,gBAAgB/I,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,IAAI,OAAU,GAAEL,EAAIiJ,MAAM,GAAG,MAAMjJ,EAAIiJ,MAAM,GAAG,GAAKjJ,EAAIgJ,kBAAkB,IAAM,KAAK,YAAc,gBAAgB/I,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,IAAI,OAAU,GAAEL,EAAIiJ,MAAM,GAAG,MAAMjJ,EAAIiJ,MAAM,GAAG,GAAKjJ,EAAIgJ,kBAAkB,IAAM,KAAK,YAAc,kBAAkBhJ,EAAI8F,KAAM9F,EAAIiJ,MAAM,GAAIhJ,EAAG,OAAO,CAACI,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,EAAIrD,EAAIiJ,MAAM,GAAG,GAAK,GAAG,EAAIjJ,EAAIiJ,MAAM,GAAG,GAAKjJ,EAAIgJ,gBAAgB,MAAQ,GAAG,OAA+B,EAAtBhJ,EAAIgJ,kBAAsB,CAAC/I,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,QAAQ,OAAS,SAAS,IAAM,KAAK,YAAc,gBAAgBJ,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,IAAI,OAAU,GAAEL,EAAIiJ,MAAM,GAAG,MAAMjJ,EAAIiJ,MAAM,GAAG,GAAK,MAAMjJ,EAAIiJ,MAAM,GAAG,KAAK,IAAM,KAAK,YAAc,kBAAkBjJ,EAAI8F,MAAM,IAC15D,EACIr9D,GAAkB,GC2FtB,IACAqF,KAAA,gBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,KAGAr4C,IAAAA,GACA,MAAA0gD,EAAA,IAEA,OACA5I,IAAA,eAEA0I,MAAA,SAEAD,SAAA,MAEAn6B,OAAA,EACAw6B,UAAA,GAEAF,kBACAD,oBAAAC,EAAA,EAEAj0C,OAAA,GAEAk0C,MAAA,GAEA5T,aAAA,mBAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACAgzD,wBAAAA,GACA,kBAAAsE,GAAA,KAEAA,GACA,EACAA,WAAAA,GACA,yBAAAC,EAAA,kBAAAC,EAAA,UAAAC,GAAA,KAEAF,IAEAC,IAEAC,GACA,EACAF,kBAAAA,GACA,YAAAN,EAAA,OAAAp6B,EAAA,UAAAw6B,GAAA,MAEAh2D,EAAA/I,GAAA2+D,EAEAS,EAAAr2D,GAAAg2D,EAAA,GACAM,EAAAr/D,GAAAukC,EAAA,GAEA,IAAA3Z,EAAA,IAAA7kB,MAAAw+B,GAAAtb,KAAA,GAAAL,KAAA,CAAAoC,EAAA9nB,IACA,IAAA6C,MAAAg5D,GAAA91C,KAAA,GAAAL,KAAA,CAAAoC,EAAA7gB,IAAA,CACAi1D,GAAAj1D,EAAA,GAAAk1D,GAAAn8D,EAAA,QAGA,KAAA0nB,OAAAA,EAAAJ,QAAA,CAAAnS,EAAAqM,IAAA,IAAArM,KAAAqM,IAAA,GACA,EACAw6C,iBAAAA,GACA,aAAAt0C,EAAA,UAAAm0C,GAAA,KAEAO,EAAA10C,EAAA,EAAAm0C,EAAA,GACAQ,EAAA30C,EAAA,EAAAm0C,EAAA,GAEA,KAAAD,MAAA,CAAAQ,EAAAC,EACA,EACAJ,SAAAA,GACA,YAAAz3B,EAAA,OAAAC,EAAA,MAAAg3B,GAAA,MAEA51D,EAAA/I,GAAA2+D,EAEA,KAAAD,SAAA,CAAAh3B,EAAA3+B,EAAA4+B,EAAA3nC,EACA,EACA46D,QAAAA,GACA,kBAAAoE,GAAA,KAEAA,GACA,EACA50B,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GClMgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAUmI,GAAY77D,KAAM67D,GAClC,CCLA,IAAInhE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,oBAAoB,CAACF,EAAG,MAAM,CAACI,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,eAAe,IAAI,OAAU,MAAKrD,EAAIluB,OAAS,KAAKkuB,EAAInuB,UAAUmuB,EAAIluB,OAAS,OAAOmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,eAAe,IAAI,OAAU,MAAKrD,EAAIluB,OAAS,KAAiB,GAAZkuB,EAAInuB,MAAc,MAAMmuB,EAAIluB,OAAS,IAAI,mBAAoB,MAAiB,GAAZkuB,EAAInuB,MAAc,KAAO,WAAW,CAACouB,EAAG,UAAU,CAACI,MAAM,CAAC,GAAKL,EAAI4J,aAAa,cAAgB,mBAAmB,OAAU,MAAiB,GAAZ5J,EAAInuB,SAA2B,GAAZmuB,EAAInuB,YAAkB,IAAM,KAAK,MAAS,GAAEmuB,EAAI6J,mBAAmB,KAAO,YAAY5J,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,mBAAmB,OAAU,GAAc,GAAZL,EAAInuB,eAAiC,GAAZmuB,EAAInuB,QAAc,IAAM,QAAQ,MAAS,GAAEmuB,EAAI8J,mBAAmB,KAAO,cAAc7J,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,eAAe,IAAI,OAAU,GAAc,GAAZrD,EAAInuB,MAAc,MAAMmuB,EAAIluB,OAAS,KAAiB,GAAZkuB,EAAInuB,MAAc,MAAMmuB,EAAIluB,OAAS,IAAI,mBAAoB,MAAiB,GAAZkuB,EAAInuB,QAAgB,CAACouB,EAAG,UAAU,CAACI,MAAM,CAAC,GAAKL,EAAI+J,aAAa,cAAgB,mBAAmB,OAAU,MAAiB,GAAZ/J,EAAInuB,SAA2B,GAAZmuB,EAAInuB,WAAiB,IAAM,KAAK,MAAS,GAAEmuB,EAAIgK,wBAAwB,KAAO,YAAY/J,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,mBAAmB,OAAU,GAAc,GAAZL,EAAInuB,eAAiC,GAAZmuB,EAAInuB,QAAc,IAAM,QAAQ,MAAS,GAAEmuB,EAAI8J,mBAAmB,KAAO,cAAc7J,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,eAAe,IAAI,OAAU,GAAc,GAAZrD,EAAInuB,MAAc,MAAMmuB,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,IAAI,mBAAoB,MAAiB,GAAZkuB,EAAInuB,QAAgB,CAACouB,EAAG,UAAU,CAACI,MAAM,CAAC,GAAKL,EAAIiK,aAAa,cAAgB,mBAAmB,OAAU,MAAiB,GAAZjK,EAAInuB,SAA2B,GAAZmuB,EAAInuB,WAAiB,IAAM,KAAK,MAAS,GAAEmuB,EAAIkK,wBAAwB,KAAO,YAAYjK,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,mBAAmB,OAAU,GAAc,GAAZL,EAAInuB,eAAiC,GAAZmuB,EAAInuB,QAAc,IAAM,QAAQ,MAAS,GAAEmuB,EAAI8J,mBAAmB,KAAO,cAAc7J,EAAG,SAAS,CAACI,MAAM,CAAC,GAAK,IAAI,GAAKL,EAAIluB,OAAS,EAAE,EAAI,IAAI,KAAOkuB,EAAIqD,YAAY,KAAK,CAACpD,EAAG,UAAU,CAACI,MAAM,CAAC,GAAKL,EAAI6J,aAAa,cAAgB,OAAO,OAAU,GAAE7J,EAAIqD,YAAY,MAAMrD,EAAIqD,YAAY,KAAK,MAAS,MAAKrD,EAAI8J,mBAAmB,IAAM,OAAO,KAAO,cAAc7J,EAAG,SAAS,CAACI,MAAM,CAAC,GAAiB,GAAZL,EAAInuB,MAAY,GAAKmuB,EAAIluB,OAAS,EAAE,EAAI,IAAI,KAAOkuB,EAAIqD,YAAY,KAAK,CAACpD,EAAG,UAAU,CAACI,MAAM,CAAC,GAAKL,EAAIgK,aAAa,cAAgB,OAAO,OAAU,GAAEhK,EAAIqD,YAAY,MAAMrD,EAAIqD,YAAY,KAAK,MAAS,GAAErD,EAAI4J,mBAAmB,IAAM,OAAO,KAAO,YAAY3J,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,OAAO,OAAU,GAAEL,EAAIqD,YAAY,MAAMrD,EAAIqD,YAAY,KAAK,IAAM,QAAQ,MAAS,GAAErD,EAAI8J,mBAAmB,KAAO,cAAc7J,EAAG,SAAS,CAACI,MAAM,CAAC,GAAiB,GAAZL,EAAInuB,MAAY,GAAKmuB,EAAIluB,OAAS,EAAE,EAAI,IAAI,KAAOkuB,EAAIqD,YAAY,KAAK,CAACpD,EAAG,UAAU,CAACI,MAAM,CAAC,GAAKL,EAAIkK,aAAa,cAAgB,OAAO,OAAU,GAAElK,EAAIqD,YAAY,MAAMrD,EAAIqD,YAAY,KAAK,MAAS,GAAErD,EAAI+J,mBAAmB,IAAM,OAAO,KAAO,YAAY9J,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,OAAO,OAAU,GAAEL,EAAIqD,YAAY,MAAMrD,EAAIqD,YAAY,KAAK,IAAM,QAAQ,MAAS,GAAErD,EAAI8J,mBAAmB,KAAO,cAAc7J,EAAG,SAAS,CAACI,MAAM,CAAC,GAAKL,EAAInuB,MAAQ,EAAE,GAAKmuB,EAAIluB,OAAS,EAAE,EAAI,IAAI,KAAOkuB,EAAIqD,YAAY,KAAK,CAACpD,EAAG,UAAU,CAACI,MAAM,CAAC,GAAKL,EAAI8J,aAAa,cAAgB,OAAO,OAAU,GAAE9J,EAAIqD,YAAY,MAAMrD,EAAIqD,YAAY,KAAK,MAAS,GAAErD,EAAIiK,mBAAmB,IAAM,OAAO,KAAO,YAAYhK,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,OAAO,OAAU,GAAEL,EAAIqD,YAAY,MAAMrD,EAAIqD,YAAY,KAAK,IAAM,QAAQ,MAAS,GAAErD,EAAI8J,mBAAmB,KAAO,iBAClnH,EACIrhE,GAAkB,GCyJtB,IACAqF,KAAA,iBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,KAGAr4C,IAAAA,GACA,MAAAzV,EAAAwxD,IACA,OACAjE,IAAA,gBAEAyJ,aAAA,UAAAh3D,IACA+2D,aAAA,UAAA/2D,IACAm3D,aAAA,UAAAn3D,IACAk3D,aAAA,UAAAl3D,IACAq3D,aAAA,UAAAr3D,IACAo3D,aAAA,UAAAp3D,IACAi3D,aAAA,UAAAj3D,IAEAwiD,aAAA,qCAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACA0iC,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GCxMgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAU2I,GAAar8D,KAAMq8D,GACnC,CCLA,IAAI3hE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,oBAAoB,CAACF,EAAG,MAAM,CAACI,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAI2F,KAAK3F,EAAIqD,YAAY,IAAMrD,EAAI3K,aAAa,GAAI,IAAI,OAAS2K,EAAIqD,YAAY,GAAG,OAAU,6BAA4BpD,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAI2F,KAAK3F,EAAIqD,YAAY,IAAMrD,EAAI3K,aAAa,GAAI,IAAI,OAAS2K,EAAIqD,YAAY,GAAG,OAAU,MAAKrD,EAAIluB,OAAS,UAAUkuB,EAAIluB,OAAS,SAASkuB,EAAIluB,OAAS,QAAQkuB,EAAIluB,OAAS,QAAQmuB,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAI2F,KAAK3F,EAAIqD,YAAY,IAAMrD,EAAI3K,aAAa,GAAI,IAAI,OAAS2K,EAAIqD,YAAY,GAAG,OAAU,GAAErD,EAAInuB,MAAQ,UAAUmuB,EAAInuB,MAAQ,SAASmuB,EAAInuB,MAAQ,QAAQmuB,EAAInuB,MAAQ,WAAWouB,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAI2F,KAAK3F,EAAIqD,YAAY,IAAMrD,EAAI3K,aAAa,GAAI,IAAI,OAAS2K,EAAIqD,YAAY,GAAG,OAAU,GAAErD,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,OAAOkuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,MAAMkuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,QAAQmuB,EAAG,UAAU,CAACI,MAAM,CAAC,KAAOL,EAAI2F,KAAK3F,EAAIqD,YAAY,IAAMrD,EAAI3K,aAAa,GAAI,IAAI,OAAS2K,EAAIqD,YAAY,GAAG,OAAU,sBAC3mCrD,EAAIluB,OAAS,QAAQkuB,EAAIluB,OAAS,eAC3CkuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,MAAMkuB,EAAInuB,MAAQ,KAAKmuB,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,mBACnFouB,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,cAAc,OAASL,EAAI2F,KAAK3F,EAAIqD,YAAY,IAAMrD,EAAI3K,aAAa,GAAI,IAAI,OAAU,aAAY2K,EAAIluB,OAAS,QAAQkuB,EAAIluB,OAAS,QAAQmuB,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,cAAc,OAASL,EAAI2F,KAAK3F,EAAIqD,YAAY,IAAMrD,EAAI3K,aAAa,GAAI,IAAI,OAAU,GAAE2K,EAAInuB,MAAQ,UAAUmuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,KAAKkuB,EAAInuB,MAAQ,MAAMmuB,EAAIluB,OAAS,UAAUmuB,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACH,EAAIhnD,GAAG,YAAY,IACld,EACIvQ,GAAkB,GC2DtB,IACAqF,KAAA,iBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,KAGAr4C,IAAAA,GACA,OACA83C,IAAA,gBAEA/K,aAAA,sBAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACA0iC,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,EACA0rC,KAAAA,EAAAA,MAEApE,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GCrGgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAU4I,GAAat8D,KAAMs8D,GACnC,CCLA,IAAI5hE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,oBAAoB,CAACF,EAAG,MAAM,CAACI,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,OAAO,CAACA,EAAG,IAAI,CAACI,MAAM,CAAC,GAAKL,EAAIqK,MAAMrK,EAAIkD,GAAIlD,EAAIwG,OAAO,SAASjwC,EAAElpB,GAAG,OAAO4yD,EAAG,OAAO,CAAC/yD,IAAIqpB,EAAE8pC,MAAM,CAAC,OAASL,EAAIsK,UAAUj9D,GAAG,eAAe2yD,EAAInuB,MAAQ,EAAE,KAAO,cAAc,EAAItb,IAAI,IAAG,GAAG0pC,EAAG,iBAAiB,CAACI,MAAM,CAAC,GAAKL,EAAI4G,WAAW,GAAK,MAAM,GAAK,MAAM,EAAI,QAAQ,CAAC3G,EAAG,OAAO,CAACI,MAAM,CAAC,OAAS,KAAK,aAAa,cAAc,eAAe,OAAOJ,EAAG,OAAO,CAACI,MAAM,CAAC,OAAS,OAAO,aAAaL,EAAI2F,KAAK3F,EAAIqD,YAAY,IAAMrD,EAAI3K,aAAa,GAAI,IAAI,eAAe,QAAQ,IAAI,GAAG2K,EAAIkD,GAAIlD,EAAIuK,SAAS,SAASn0C,GAAG,OAAO6pC,EAAG,SAAS,CAAC/yD,IAAIkpB,EAAEiqC,MAAM,CAAC,EAAIjqC,EAAE,GAAK4pC,EAAI72C,EAAE,GAAK62C,EAAIh4B,EAAE,OAASg4B,EAAIqD,YAAY,GAAG,eAAe,GAAI,KAAO,gBAAgB,IAAGpD,EAAG,SAAS,CAACI,MAAM,CAAC,EAAI,IAAI,GAAKL,EAAI72C,EAAE,GAAK62C,EAAIh4B,EAAE,OAAS,cAAc,KAAQ,QAAOg4B,EAAI4G,gBAAgB,CAAC3G,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,IAAI,OAAU,KAAIL,EAAInuB,MAAQ,EAAI,IAAO,GAAEmuB,EAAIwK,WAAW,YAAc,gBAAgBvK,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,UAAU,OAAS,MAAM,IAAO,GAAEL,EAAIwK,WAAW,YAAc,kBAAkBvK,EAAG,SAAS,CAACI,MAAM,CAAC,EAAI,IAAI,GAAKL,EAAI72C,EAAE,GAAK62C,EAAIh4B,EAAE,KAAOg4B,EAAIqD,YAAY,MAAOrD,EAAIyK,cAAexK,EAAG,IAAID,EAAIkD,GAAIlD,EAAI0K,iBAAiB,SAASxjB,GAAG,OAAO+Y,EAAG,WAAW,CAAC/yD,IAAIg6C,EAAEmZ,MAAM,CAAC,OAASnZ,EAAE,OAAS8Y,EAAIqD,YAAY,GAAG,eAAe,GAAI,QAAU,QAAQ,IAAG,GAAGrD,EAAI8F,KAAK9F,EAAIkD,GAAIlD,EAAI2K,MAAM,SAASp0C,GAAG,OAAO0pC,EAAG,OAAO,CAAC/yD,IAAIqpB,EAAE8pC,MAAM,CAAC,EAAI9pC,EAAE,OAASypC,EAAIqD,YAAY,GAAG,eAAe,IAAI,KAAO,gBAAgB,IAAGpD,EAAG,MAAM,CAACI,MAAM,CAAC,aAAc,IAAGL,EAAIqK,QAAQ,CAACpK,EAAG,mBAAmB,CAACI,MAAM,CAAC,cAAgB,YAAY,KAAO,SAAS,OAAU,MAAKL,EAAI72C,KAAK62C,EAAIh4B,UAAUg4B,EAAI72C,KAAK62C,EAAIh4B,IAAI,IAAO,GAAEg4B,EAAI4K,WAAW,YAAc,iBAAiB,IAAI,GAAG3K,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACH,EAAIhnD,GAAG,YAAY,IACl3D,EACIvQ,GAAkB,GC4GtB,IACAqF,KAAA,iBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAKAiK,QAAA,CACA/8D,KAAA+3D,OACAjF,QAAA,GAKA6J,QAAA,CACA38D,KAAA+3D,OACAjF,QAAA,IAGAr4C,IAAAA,GACA,MAAAzV,EAAAwxD,IACA,OACAjE,IAAA,gBACAiK,IAAA,mBAAAx3D,IACA+zD,WAAA,0BAAA/zD,IAEAwiD,aAAA,sBAEAgO,YAAA,GAEAmD,MAAA,GAEA8D,UAAA,GAEAC,QAAA,GAEAG,gBAAA,GAEAC,KAAA,GAEAE,QAAA,GAEAC,YAAAt7D,KAAA40B,GAAA,EAEA2mC,QAAA,EAEAC,UAAA,EAEAP,eAAA,EAEA,EACA3J,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA4tB,SAAA,CACAh5C,CAAAA,GACA,YAAA0oB,GAAA,KAEA,OAAAA,EAAA,CACA,EACA7J,CAAAA,GACA,aAAA8J,GAAA,KAEA,OAAAA,EAAA,CACA,GAEAjgC,QAAA,CACAkvD,IAAAA,GACA,iBAAAxsB,EAAA,UAAA02B,EAAA,cAAAC,EAAA,YAAAC,EAAA,oBAAAC,EAAA,SAAAC,GAAA,KAEA92B,IAEA02B,IAEAC,IAEAC,IAEAC,IAEAC,GACA,EACA92B,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,EACAgxC,SAAAA,GACA,QAAA9hD,EAAA,EAAA6e,EAAA,MAAA6J,EAAA,QAAAg5B,EAAA,YAAAC,GAAA,KAEA5hC,GAAA15B,KAAA40B,GAAA,EACAonB,EAAAsf,EAAAD,EACAz0C,EAAAyb,EAAA,EACA,IAAAy5B,GAAA77B,EAAAA,EAAAA,sBAAAtmB,EAAA6e,EAAA5R,EAAA8S,GAEA,KAAAs9B,MAAA,IAAAt2D,MAAA26D,GACAz3C,KAAA,IACAL,KAAA,CAAAiyC,EAAA33D,KACA,MAAAk+D,GAAA97B,EAAAA,EAAAA,sBAAAtmB,EAAA6e,EAAA5R,EAAA8S,GAAA77B,EAAA,GAAAm+C,GAAAz4B,KAAAiyC,GAAAA,EAAA5lB,QAAA,KACA7oB,EAAA,IAAA+0C,EAAAn3D,KAAA,SAAAiiB,MAAAA,WAAAm1C,EAAAp3D,KAAA,OAGA,OAFAm3D,EAAAC,EAEAh1C,CAAA,GAEA,EACA20C,aAAAA,GACA,MAAA7H,aAAAppC,GAAA,QAAA4wC,GAAA,KAEAnL,EAAA,KAAAmL,EAAA,GAEA,KAAAP,UAAA,IAAAp6D,MAAA26D,GACAz3C,KAAA6G,GACAlH,KAAA,CAAAiyC,EAAA33D,KAAAs4D,EAAAA,EAAAA,MAAA1rC,EAAA,IAAA5sB,EAAAqyD,IACA,EACAyL,WAAAA,GACA,cAAAN,EAAA,QAAAE,EAAA,MAAAl5B,EAAA,UAAAm5B,GAAA,KAEAQ,GAAA35B,EAAA,EAAAm5B,EAAA,GAAAD,EAEA,KAAAR,QAAA,IAAAr6D,MAAA66D,GACA33C,KAAA,GACAL,KAAA,CAAAiyC,EAAA33D,IAAAm+D,GAAAn+D,EAAA,IACA,EACA+9D,mBAAAA,GACA,QAAAjiD,EAAA,EAAA6e,EAAA,MAAA6J,GAAA,KAEA2Z,EAAAh8C,KAAA40B,GAAA,EACAhO,EAAAyb,EAAA,EAEA,KAAA64B,gBAAA,IAAAx6D,MAAA,GACAkjB,KAAA,IACAL,KAAA,CAAAiyC,EAAA33D,KACA,MAAA67B,EAAAsiB,GAAAn+C,EAAA,GACA87B,EAAAD,EAAA15B,KAAA40B,GACAzR,GAAA8c,EAAAA,EAAAA,sBAAAtmB,EAAA6e,EAAA5R,EAAA8S,GACAtW,GAAA6c,EAAAA,EAAAA,sBAAAtmB,EAAA6e,EAAA5R,EAAA+S,GAEA,SAAAxW,EAAAxe,KAAA,QAAAye,EAAAze,KAAA,SAEA,EACAk3D,QAAAA,GACA,QAAAliD,EAAA,EAAA6e,EAAA,MAAA6J,GAAA,KAEA2Z,EAAAh8C,KAAA40B,GAAA,EACAhO,EAAAyb,EAAA,IAEA,KAAA84B,KAAA,IAAAz6D,MAAA,GACAkjB,KAAA,IACAL,KAAA,CAAAiyC,EAAA33D,KACA,MAAA67B,EAAAsiB,GAAA,EAAAn+C,EAAA,GACA87B,EAAAD,EAAAsiB,EACA74B,GAAA8c,EAAAA,EAAAA,sBAAAtmB,EAAA6e,EAAA5R,EAAA8S,GACAtW,GAAA6c,EAAAA,EAAAA,sBAAAtmB,EAAA6e,EAAA5R,EAAA+S,GAEA,UAAAxW,EAAAxe,KAAA,SAAAgV,MAAA6e,WAAApV,EAAAze,KAAA,SAEA,EACA0wD,wBAAAA,GACA,WAAA9D,GAAA,KAEAA,GACA,EACA4E,KAAAA,EAAAA,OCxRgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAAC5C,GACvBA,EAAIvB,UAAUiK,GAAa39D,KAAM29D,GACnC,CCLA,IAAIjjE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAACI,MAAM,CAAC,MAAS,GAAEL,EAAInuB,UAAU,OAAU,GAAEmuB,EAAIluB,aAAa,CAACmuB,EAAG,OAAO,CAACI,MAAM,CAAC,EAAIL,EAAI72C,EAAE,EAAI62C,EAAIh4B,EAAE,MAAQg4B,EAAI9sD,EAAE,OAAS8sD,EAAI71D,EAAE,KAAO61D,EAAIqD,YAAY,KAAK,CAACpD,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgBL,EAAI37B,QAAU,SAAW,QAAQ,KAAO,IAAI,GAAK27B,EAAI37B,QAAU27B,EAAIluB,OAASkuB,EAAInuB,MAAM,IAAO,GAAEmuB,EAAI0G,OAAO,SAAW,SAAS,SAAW,MAAM,WAAa,cAAc,YAAc,kBAAkBzG,EAAG,OAAO,CAACI,MAAM,CAAC,EAAIL,EAAI72C,EAAE,EAAI62C,EAAIh4B,EAAE,MAAQ,IAAI,OAAS,IAAI,KAAOg4B,EAAIqD,YAAY,KAAK,CAACpD,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgBL,EAAI37B,QAAU,IAAM,IAAI,KAAO,IAAI,GAAK27B,EAAI37B,QAAU27B,EAAIluB,OAASkuB,EAAInuB,MAAM,IAAO,GAAEmuB,EAAI0G,OAAO,SAAW,SAAS,SAAW,MAAM,WAAa,gBAAgB,YAAc,qBACl0B,EACIj+D,GAAkB,GCqCtB,IACAqF,KAAA,gBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEAt8B,QAAA,CACAx2B,KAAAojD,QACA0P,SAAA,GAEA+F,IAAA,CACA74D,KAAA+3D,OACAjF,QAAA,IAGAr4C,IAAAA,GACA,OACA83C,IAAA,eAEAj3C,EAAA,EACA6e,EAAA,EAEA90B,EAAA,EACA/I,EAAA,EAEAkrD,aAAA,mBAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,EACAlQ,OAAAA,GACA,kBAAA8kC,GAAA,KAEAA,GACA,GAEAt3D,QAAA,CACAgzD,wBAAAA,GACA,kBAAAsE,GAAA,KAEAA,GACA,EACAA,WAAAA,GACA,cAAA9kC,EAAA,MAAAwN,EAAA,OAAAC,GAAA,KAEAzN,GACA,KAAAnxB,EAAA,EACA,KAAA/I,EAAA2nC,EACA,KAAA3oB,EAAA0oB,EAAA,EACA,KAAA7J,EAAA,IAEA,KAAA90B,EAAA2+B,EACA,KAAA1nC,EAAA,EACA,KAAAgf,EAAA,EACA,KAAA6e,EAAA8J,EAAA,EAEA,EACAizB,QAAAA,GACA,kBAAAoE,GAAA,KAEAA,GACA,EACA50B,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GCvHgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAUkK,GAAY59D,KAAM49D,GAClC,CCLA,IAAIljE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAAChrD,MAAQ,mBAAkB+qD,EAAI6I,SAAS,MAAM7I,EAAI6I,SAAS,OAAQxI,MAAM,CAAC,MAAS,GAAEL,EAAI8I,MAAM,OAAO,OAAU,GAAE9I,EAAI8I,MAAM,SAAS,CAAC9I,EAAIkD,GAAIlD,EAAIjrC,QAAQ,SAAS1b,EAAMhM,GAAG,MAAO,CAAC4yD,EAAG,OAAO,CAAC/yD,IAAIG,EAAEgzD,MAAM,CAAC,KAAOL,EAAIqD,YAAY,GAAG,EAAIhqD,EAAM,GAAK2mD,EAAI+I,oBAAoB,EAAI1vD,EAAM,GAAK2mD,EAAI+I,oBAAoB,MAAQ/I,EAAIgJ,gBAAgB,OAAShJ,EAAIgJ,kBAAkB,CAAEx5D,KAAKgJ,SAAW,GAAKynD,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,OAAO,OAAU,GAAEL,EAAIqD,YAAYlvD,KAAK,OAAO,IAAM3E,KAAKgJ,SAAW,EAAI,IAAI,MAAwB,EAAhBhJ,KAAKgJ,SAAa,YAAc,gBAAgBwnD,EAAI8F,OAAO,KAAI,IACjsB,EACIr9D,GAAkB,GCkCtB,IACAqF,KAAA,gBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,KAGAr4C,IAAAA,GACA,MAAA0gD,EAAA,EAEA,OACA5I,IAAA,eAEA0I,MAAA,SAEAD,SAAA,MAEAn6B,OAAA,EACAw6B,UAAA,GAEAF,kBACAD,oBAAAC,EAAA,EAEAj0C,OAAA,GAEAsgC,aAAA,0BAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACAgzD,wBAAAA,GACA,kBAAAsE,GAAA,KAEAA,GACA,EACAA,WAAAA,GACA,yBAAAC,EAAA,UAAAE,GAAA,KAEAF,IAEAE,GACA,EACAF,kBAAAA,GACA,YAAAN,EAAA,OAAAp6B,EAAA,UAAAw6B,GAAA,MAEAh2D,EAAA/I,GAAA2+D,EAEAS,EAAAr2D,GAAAg2D,EAAA,GACAM,EAAAr/D,GAAAukC,EAAA,GAEA,IAAA3Z,EAAA,IAAA7kB,MAAAw+B,GAAAtb,KAAA,GAAAL,KAAA,CAAAoC,EAAA9nB,IACA,IAAA6C,MAAAg5D,GAAA91C,KAAA,GAAAL,KAAA,CAAAoC,EAAA7gB,IAAA,CACAi1D,GAAAj1D,EAAA,GAAAk1D,GAAAn8D,EAAA,QAGA,KAAA0nB,OAAAA,EAAAJ,QAAA,CAAAnS,EAAAqM,IAAA,IAAArM,KAAAqM,IAAA,GACA,EACAy6C,SAAAA,GACA,YAAAz3B,EAAA,OAAAC,EAAA,MAAAg3B,GAAA,MAEA51D,EAAA/I,GAAA2+D,EAEA,KAAAD,SAAA,CAAAh3B,EAAA3+B,EAAA4+B,EAAA3nC,EACA,EACA46D,QAAAA,GACA,kBAAAoE,GAAA,KAEAA,GACA,EACA50B,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GC7HgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAUmK,GAAY79D,KAAM69D,GAClC,CCLA,IAAInjE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAACmD,MAAO,cAAYpD,EAAI37B,QAAU,UAAY,UAAWpvB,MAAO+qD,EAAI37B,QAAW,SAAQ27B,EAAInuB,yCAAyCmuB,EAAI0G,OAAU,oBAAmB1G,EAAIluB,+BAA+BkuB,EAAI0G,QAAS,CAACzG,EAAG,MAAM,CAACI,MAAM,CAAC,MAAQL,EAAI37B,QAAU27B,EAAInuB,MAAQ,EAAE,OAASmuB,EAAI37B,QAAU,EAAI27B,EAAIluB,SAAS,CAACmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,OAASrD,EAAI37B,QAAW,UAAS27B,EAAInuB,aAAgB,eAAcmuB,EAAIluB,YAAYmuB,EAAG,WAAW,CAACE,YAAY,YAAYE,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,eAAe,IAAI,mBAAmB,SAAS,oBAAoB,MAAM,OAASrD,EAAI37B,QAAW,UAAS27B,EAAInuB,aAAgB,eAAcmuB,EAAIluB,iBACrxB,EACIrpC,GAAkB,GC6BtB,IACAqF,KAAA,gBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEAt8B,QAAA,CACAx2B,KAAAojD,QACA0P,SAAA,GAEA+F,IAAA,CACA74D,KAAA+3D,OACAjF,QAAA,IAGAr4C,IAAAA,GACA,OACA83C,IAAA,eAEA/K,aAAA,wDAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACA0iC,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GC3EgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAUoK,GAAY99D,KAAM89D,GAClC,CCLA,IAAIpjE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAACI,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,cAAc,OAASL,EAAIqD,YAAY,GAAG,eAAe,IAAI,OAASrD,EAAI6L,cAAc,CAAC5L,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,mBAAmB,cAAgB,MAAM,KAAQ,MAAKL,EAAI8L,YAAc,SAAS9L,EAAI8L,YAAc,IAAI,GAAM,SAAQ9L,EAAI8L,iBAAiB,IAAO,GAAE9L,EAAI0G,OAAO,MAAQ,KAAK,SAAW,SAAS,SAAW,MAAM,WAAa,kBAAkB,YAAc,kBAAkBzG,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,cAAc,OAASL,EAAIqD,YAAY,GAAG,eAAe,IAAI,OAASrD,EAAI+L,cAAc,CAAC9L,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,mBAAmB,cAAgB,MAAM,KAAQ,MAAKL,EAAIgM,YAAc,SAAShM,EAAIgM,YAAc,IAAI,GAAM,SAAQhM,EAAIgM,iBAAiB,IAAO,GAAEhM,EAAI0G,OAAO,MAAQ,KAAK,SAAW,SAAS,SAAW,MAAM,WAAa,eAAe,YAAc,qBACl/B,EACIj+D,GAAkB,GCoDtB,IACAqF,KAAA,gBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEA+F,IAAA,CACA74D,KAAA+3D,OACAjF,QAAA,MAGAr4C,IAAAA,GACA,OACA83C,IAAA,eAEAyL,YAAA,GACAE,YAAA,GAEAD,YAAA,EACAE,YAAA,EAEA3W,aAAA,sBAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACAgzD,wBAAAA,GACA,kBAAAsE,GAAA,KAEAA,GACA,EACAA,WAAAA,GACA,YAAAt3B,EAAA,OAAAC,GAAA,KAEA,IAAA+5B,EAAA,CACA,MAAA/5B,GAAA,KAAAD,EAAA,GAAAC,GAAA,IAAAD,EAAA,GAAAC,GAAA,KAAAD,EAAA,GAAAC,GACA,KAAAD,EAAA,GAAAC,GAAA,KAAAD,EAAA,GAAAC,GAAA,KAAAD,EAAA,GAAAC,GACA,IAAAD,EAAA,GAAAC,GAAA,KAAAD,EAAA,GAAAC,GAAA,CAAAD,EAAA,GAAAC,IAGAi6B,EAAA,CACA,IAAAl6B,EAAA,GAAAC,GAAA,IAAAD,EAAA,GAAAC,IAGA,MAAAg6B,GAAAhX,EAAAA,EAAAA,mBAAA+W,GACAG,GAAAlX,EAAAA,EAAAA,mBAAAiX,GAEAF,EAAAA,EAAA94C,KAAA1Z,GAAAA,EAAAlF,KAAA,OAAAA,KAAA,KACA43D,EAAAA,EAAAh5C,KAAA1Z,GAAAA,EAAAlF,KAAA,OAAAA,KAAA,KAEA,KAAA03D,YAAAA,EACA,KAAAE,YAAAA,EAEA,KAAAD,YAAAA,EACA,KAAAE,YAAAA,CACA,EACAjH,QAAAA,GACA,kBAAAoE,GAAA,KAEAA,GACA,EACA50B,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GCvIgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAUyK,GAAYn+D,KAAMm+D,GAClC,CCLA,IAAIzjE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAAChrD,MAAQ,mBAAkB+qD,EAAI6I,SAAS,MAAM7I,EAAI6I,SAAS,OAAQxI,MAAM,CAAC,MAAS,GAAEL,EAAI8I,MAAM,OAAO,OAAU,GAAE9I,EAAI8I,MAAM,SAAS,CAAC9I,EAAIkD,GAAIlD,EAAIjrC,QAAQ,SAAS1b,EAAMhM,GAAG,MAAO,CAAC4yD,EAAG,OAAO,CAAC/yD,IAAIG,EAAEgzD,MAAM,CAAC,KAAOL,EAAIqD,YAAY7zD,KAAKgJ,SAAW,GAAM,EAAI,GAAG,EAAIa,EAAM,GAAK2mD,EAAIkM,cAAc,EAAI7yD,EAAM,GAAK2mD,EAAImM,QAAQ9+D,GAAK,EAAE,MAAQ2yD,EAAIoM,UAAU,OAASpM,EAAImM,QAAQ9+D,KAAK,CAAC4yD,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,IAAI,OAAU,GAAEhnD,EAAM,GAAK2mD,EAAIqM,WAAWh/D,GAAK,KAAKgM,EAAM,GAAK2mD,EAAImM,QAAQ9+D,GAAK,KAAKgM,EAAM,GAAK2mD,EAAIqM,WAAWh/D,GAAK,IAAI,IAAO,GAAE2yD,EAAIsM,QAAQj/D,MAAM,SAAW,UAAU,SAAW,SAAS,WAAa,8BAA8B,MAAQ,KAAK,YAAc,gBAAgB4yD,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,SAAS,OAAU,GAAEL,EAAIqM,WAAWh/D,MAAM2yD,EAAImM,QAAQ9+D,MAAM2yD,EAAIqM,WAAWh/D,KAAK,IAAO,GAAE2yD,EAAIsM,QAAQj/D,MAAM,SAAW,UAAU,SAAW,SAAS,WAAa,8BAA8B,MAAQ,KAAK,YAAc,kBAAkB,KAAI,IAClkC,EACI5E,GAAkB,GC+CtB,IACAqF,KAAA,gBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,KAGAr4C,IAAAA,GACA,MAAA8jD,EAAA,EAEA,OACAhM,IAAA,eAEA0I,MAAA,SAEAD,SAAA,MAEAn6B,OAAA,EACAw6B,UAAA,GAEAkD,YACAF,cAAAE,EAAA,EAEAr3C,OAAA,GACAo3C,QAAA,GACAE,WAAA,GACAC,QAAA,GAEAjX,aAAA,sBAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACAgzD,wBAAAA,GACA,kBAAAsE,GAAA,KAEAA,GACA,EACAA,WAAAA,GACA,yBAAAC,EAAA,UAAAE,GAAA,KAEAF,IAEAE,GACA,EACAF,kBAAAA,GACA,YAAAN,EAAA,OAAAp6B,EAAA,UAAAw6B,GAAA,MAEAh2D,EAAA/I,GAAA2+D,EAEAS,EAAAr2D,GAAAg2D,EAAA,GACAM,EAAAr/D,GAAAukC,EAAA,GAEA,IAAA3Z,EAAA,IAAA7kB,MAAAw+B,GAAAtb,KAAA,GAAAL,KAAA,CAAAoC,EAAA9nB,IACA,IAAA6C,MAAAg5D,GAAA91C,KAAA,GAAAL,KAAA,CAAAoC,EAAA7gB,IAAA,CACAi1D,GAAAj1D,EAAA,GAAAk1D,GAAAn8D,EAAA,QAGA,KAAA0nB,OAAAA,EAAAJ,QAAA,CAAAnS,EAAAqM,IAAA,IAAArM,KAAAqM,IAAA,IACA,MAAAs9C,EAAA,KAAAA,QAAA,IAAAj8D,MAAAw+B,EAAAw6B,GACA91C,KAAA,GAAAL,KAAAoC,GACA3lB,KAAAgJ,SAAA,GAAA8qD,EAAA,GAAAn5D,EAAAA,GAAAm5D,EAAA,GAAAn5D,EAAA,GAAAA,KAEA,KAAAkiE,WAAA,IAAAn8D,MAAAw+B,EAAAw6B,GACA91C,KAAA,GAAAL,KAAA,CAAAoC,EAAA9nB,IAAA8+D,EAAA9+D,GAAAmC,KAAAgJ,WAEA,KAAA8zD,QAAA,IAAAp8D,MAAAw+B,EAAAw6B,GACA91C,KAAA,GAAAL,KAAAoC,GAAA3lB,KAAAgJ,SAAA,KACA,EACA8wD,SAAAA,GACA,YAAAz3B,EAAA,OAAAC,EAAA,MAAAg3B,GAAA,MAEA51D,EAAA/I,GAAA2+D,EAEA,KAAAD,SAAA,CAAAh3B,EAAA3+B,EAAA4+B,EAAA3nC,EACA,EACA46D,QAAAA,GACA,kBAAAoE,GAAA,KAEAA,GACA,EACA50B,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GCtJgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAU+K,GAAYz+D,KAAMy+D,GAClC,CCLA,IAAI/jE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAACI,MAAM,CAAC,MAAQ,OAAO,OAAS,SAAS,CAACJ,EAAG,WAAW,CAACI,MAAM,CAAC,eAAe,IAAI,KAAO,cAAc,OAASL,EAAIqD,YAAY,GAAG,OAAS,yBAAyBpD,EAAG,WAAW,CAACI,MAAM,CAAC,eAAe,IAAI,KAAO,cAAc,OAASL,EAAIqD,YAAY,GAAG,OAAS,yBAAyBrD,EAAIhnD,GAAG,WAAWinD,EAAG,MAAM,CAACI,MAAM,CAAC,MAAQ,OAAO,OAAS,SAAS,CAACJ,EAAG,WAAW,CAACI,MAAM,CAAC,eAAe,IAAI,KAAO,cAAc,OAASL,EAAIqD,YAAY,GAAG,OAAS,wBAAwBpD,EAAG,WAAW,CAACI,MAAM,CAAC,eAAe,IAAI,KAAO,cAAc,OAASL,EAAIqD,YAAY,GAAG,OAAS,4BAA4B,EACvtB,EACI56D,GAAkB,GCqCtB,IACAqF,KAAA,gBACA4yD,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,KAGAr4C,IAAAA,GACA,OACA+sC,aAAA,sBAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACA0iC,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GCxEgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAUgL,GAAY1+D,KAAM0+D,GAClC,CCLA,IAAIhkE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAACI,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,eAAe,IAAI,KAAO,cAAc,OAAU,GAAErD,EAAI9G,KAAK,SAAS8G,EAAI9G,KAAK,QAAQ8G,EAAIluB,OAAS,OAAOmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,eAAe,IAAI,KAAO,cAAc,OAAU,GAAErD,EAAI9G,KAAK,UAAU8G,EAAI9G,KAAK,QAAQ8G,EAAIluB,OAAS,KAAKkuB,EAAI9G,KAAK8G,EAAInuB,WAAWmuB,EAAIluB,OAAS,OAAOmuB,EAAG,WAAW,CAACI,MAAM,CAAC,OAASL,EAAIqD,YAAY,GAAG,KAAO,cAAc,eAAe,IAAI,OAAU,GAAErD,EAAI9G,KAAK,OAAO8G,EAAIluB,OAAS,MAAMkuB,EAAI9G,KAAK,SAAS8G,EAAIluB,OAAS,UAChsB,EACIrpC,GAAkB,GCgCtB,IACAqF,KAAA,gBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEAt8B,QAAA,CACAx2B,KAAAojD,QACA0P,SAAA,IAGAr4C,IAAAA,GACA,OACA83C,IAAA,eAEA/K,aAAA,sBAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACAqnD,IAAAA,CAAAxhD,GACA,cAAA2sB,EAAA,MAAAwN,GAAA,KAEA,OAAAxN,EAEAwN,EAAAn6B,EAFAA,CAGA,EACA68B,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,GAEAsnC,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GCjFgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAUiL,GAAY3+D,KAAM2+D,GAClC,CCLA,IAAIjkE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAAChrD,MAAQ,mBAAkB+qD,EAAI6I,SAAS,MAAM7I,EAAI6I,SAAS,OAAQxI,MAAM,CAAC,MAAS,GAAEL,EAAI8I,MAAM,OAAO,OAAU,GAAE9I,EAAI8I,MAAM,SAAS,CAAC7I,EAAG,OAAO,CAACA,EAAG,UAAU,CAACI,MAAM,CAAC,GAAKL,EAAI0M,UAAU,OAAS,8CAA8CzM,EAAG,SAAS,CAACI,MAAM,CAAC,GAAK,KAAK,GAAK,KAAK,EAAI,KAAK,KAAO,cAAc,OAASL,EAAIqD,YAAY,GAAG,eAAe,KAAK,mBAAmB,qBAAqB,CAACpD,EAAG,mBAAmB,CAACI,MAAM,CAAC,cAAgB,YAAY,KAAO,SAAS,OAAS,oBAAoB,IAAO,GAAEL,EAAI0G,OAAO,YAAc,iBAAiB,GAAGzG,EAAG,SAAS,CAACI,MAAM,CAAC,GAAK,KAAK,GAAK,KAAK,EAAI,KAAK,KAAO,cAAc,OAASL,EAAIqD,YAAY,GAAG,eAAe,IAAI,mBAAmB,oBAAoB,CAACpD,EAAG,mBAAmB,CAACI,MAAM,CAAC,cAAgB,YAAY,KAAO,SAAS,OAAS,qBAAqB,IAAO,GAAEL,EAAI0G,OAAO,YAAc,iBAAiB,GAAGzG,EAAG,SAAS,CAACI,MAAM,CAAC,GAAK,KAAK,GAAK,KAAK,EAAI,KAAK,KAAO,cAAc,OAASL,EAAI2F,KAAK3F,EAAIqD,YAAY,IAAMrD,EAAI3K,aAAa,GAAI,IAAI,eAAe,IAAI,mBAAmB,UAAU2K,EAAIkD,GAAI,IAAIhzD,MAAM,IAAIkjB,KAAK,IAAI,SAAS+B,EAAI9nB,GAAG,OAAO4yD,EAAG,MAAM,CAAC/yD,IAAIG,EAAEgzD,MAAM,CAAC,aAAc,IAAGL,EAAI0M,YAAY,OAAS1M,EAAIqD,YAAY,GAAG,KAAO7zD,KAAKgJ,SAAW,GAAM,cAAgBwnD,EAAIqD,YAAY,KAAK,CAACpD,EAAG,mBAAmB,CAACI,MAAM,CAAC,cAAgB,YAAY,KAAO,SAAS,OAAS,oBAAoB,IAAO,GAAEL,EAAI0G,OAAO,MAAWr5D,EAAI2yD,EAAI0G,IAAM,GAAhB,IAAsB,YAAc,iBAAiB,EAAE,IAAGzG,EAAG,SAAS,CAACI,MAAM,CAAC,GAAK,KAAK,GAAK,KAAK,EAAI,KAAK,KAAO,cAAc,OAASL,EAAI2F,KAAK3F,EAAIqD,YAAY,IAAMrD,EAAI3K,aAAa,GAAI,IAAI,eAAe,IAAI,mBAAmB,WAAW,GAAG2K,EAAIhnD,GAAG,YAAY,EACzvD,EACIvQ,GAAkB,GC6FtB,IACAqF,KAAA,gBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAzmC,MAAA,CACApsB,KAAAqC,MACAywD,QAAAA,IAAA,IAEA+F,IAAA,CACA74D,KAAA+3D,OACAjF,QAAA,IAGAr4C,IAAAA,GACA,MAAAzV,EAAAwxD,IACA,OACAjE,IAAA,eAEAsM,UAAA,wBAAA75D,IAEAi2D,MAAA,UAEAD,SAAA,MAEAxT,aAAA,oDAEAgO,YAAA,GAEA,EACAvC,MAAA,CACA7mC,KAAAA,GACA,iBAAAsa,GAAA,KAEAA,GACA,GAEA1iC,QAAA,CACAgzD,wBAAAA,GACA,gBAAAyE,GAAA,KAEAA,GACA,EACAA,SAAAA,GACA,YAAAz3B,EAAA,OAAAC,EAAA,MAAAg3B,GAAA,MAEA51D,EAAA/I,GAAA2+D,EAEA,KAAAD,SAAA,CAAAh3B,EAAA3+B,EAAA4+B,EAAA3nC,EACA,EACA46D,QAAAA,GACA,gBAAAuE,GAAA,KAEAA,GACA,EACA/0B,UAAAA,GACA,YAAAta,EAAA,aAAAo7B,GAAA,KAEA,KAAAgO,aAAAroB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAu3B,GAAA,GAAAp7B,GAAA,GACA,EACA0rC,KAAAA,EAAAA,MAEApE,OAAAA,GACA,iBAAAhtB,GAAA,KAEAA,GACA,GChKgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACwuB,GACvBA,EAAIvB,UAAUmL,GAAY7+D,KAAM6+D,GAClC,CCFe,SAAS,GAAC5J,GACvBA,EAAIvB,UAAUoL,EAAY9+D,KAAM8+D,EAClC,CCLA,IAAIpkE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAI,mBAAmBD,YAAY,mBAAmBlrD,MAAQ,yBAAwB+qD,EAAIa,aAAeb,EAAIa,aAAagM,SAAW,MAAOC,GAAG,CAAC,MAAQ9M,EAAI+M,kBAAkB,CAAE/M,EAAIa,aAAcZ,EAAG,MAAM,CAACI,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,OAAO,CAACA,EAAG,iBAAiB,CAACI,MAAM,CAAC,GAAKL,EAAI4G,WAAW,GAAK,MAAM,GAAK,MAAM,EAAI,QAAQ,CAAC3G,EAAG,OAAO,CAACI,MAAM,CAAC,OAAS,KAAK,aAAa,OAAO,eAAe,OAAOJ,EAAG,OAAO,CAACI,MAAM,CAAC,OAAS,OAAO,aAAa,OAAO,eAAe,QAAQ,GAAGJ,EAAG,iBAAiB,CAACI,MAAM,CAAC,GAAKL,EAAIgN,YAAY,GAAK,MAAM,GAAK,MAAM,EAAI,QAAQ,CAAC/M,EAAG,OAAO,CAACI,MAAM,CAAC,OAAS,KAAK,aAAa,OAAO,eAAe,OAAOJ,EAAG,OAAO,CAACI,MAAM,CAAC,OAAS,OAAO,aAAa,OAAO,eAAe,QAAQ,GAAIL,EAAIiN,MAAM,GAAIhN,EAAG,SAAS,CAACI,MAAM,CAAC,GAAM,SAAQL,EAAIiN,MAAM,GAAG1hE,aAAa,GAAKy0D,EAAIiN,MAAM,GAAG,GAAG,GAAG,GAAKjN,EAAIiN,MAAM,GAAG,GAAG,KAAK,CAAChN,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,IAAI,OAAU,KAAIL,EAAIa,aAAaqM,KAAKx5B,SAAS,IAAMssB,EAAIa,aAAaqM,KAAKC,SAAW,GAAK,IAAI,YAAc,gBAAgBlN,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,UAAU,OAAS,MAAM,IAAML,EAAIa,aAAaqM,KAAKC,SAAW,GAAK,IAAI,YAAc,kBAAkBnN,EAAI8F,MAAM,GAAI9F,EAAIiN,MAAM,GAAIhN,EAAG,QAAQ,CAACI,MAAM,CAAC,aAAaL,EAAIa,aAAauM,eAAeC,IAAI,MAAQrN,EAAIa,aAAauM,eAAev7B,MAAM,OAASmuB,EAAIa,aAAauM,eAAet7B,OAAO,EAAIkuB,EAAIiN,MAAM,GAAG,GAAG,GAAKjN,EAAIa,aAAauM,eAAev7B,MAAQ,EAAE,EAAImuB,EAAIiN,MAAM,GAAG,GAAG,GAAKjN,EAAIa,aAAauM,eAAet7B,OAAS,KAAKkuB,EAAI8F,KAAK7F,EAAG,OAAO,CAACI,MAAM,CAAC,GAAM,WAAUL,EAAIiN,MAAM,GAAG1hE,eAAe,CAAEy0D,EAAIiN,MAAM,GAAIhN,EAAG,MAAM,CAACI,MAAM,CAAC,aAAc,UAASL,EAAIiN,MAAM,GAAG1hE,aAAa,KAAQ,QAAOy0D,EAAIgN,kBAAkBhN,EAAI8F,OAAQ9F,EAAIiN,MAAM,IAAMjN,EAAIa,aAAaqM,KAAKn2B,KAAMkpB,EAAG,MAAM,CAACI,MAAM,CAAC,aAAc,UAASL,EAAIiN,MAAM,GAAG1hE,aAAa,KAAOy0D,EAAIa,aAAaqM,KAAKjzC,MAAM,KAAQ,gBAAe+lC,EAAIiN,MAAM,GAAG1hE,iBAAiBy0D,EAAI8F,KAAK9F,EAAIkD,GAAIlD,EAAIiN,OAAO,SAAS1G,EAAKl5D,GAAG,OAAO4yD,EAAG,IAAI,CAAC/yD,IAAIG,GAAG,CAAC4yD,EAAG,OAAO,CAACA,EAAG,OAAO,CAACG,IAAK,OAAM/yD,IAAIigE,UAAS,EAAKjN,MAAM,CAAC,GAAM,OAAMkG,EAAKh7D,aAAa,EAAK,IAAGg7D,EAAK,GAAGh7D,eAAeg7D,EAAK,GAAGh7D,cAAcg7D,EAAK,GAAGh7D,aAAa,KAAO,mBAAmB00D,EAAG,MAAM,CAACI,MAAM,CAAC,aAAc,QAAOkG,EAAKh7D,aAAa,eAAey0D,EAAIa,aAAaz9B,UAAU,OAAS48B,EAAIa,aAAa0M,cAAevN,EAAIJ,QAAQvyD,GAAI4yD,EAAG,MAAM,CAACI,MAAM,CAAC,aAAc,QAAOkG,EAAKh7D,aAAa,eAAey0D,EAAIa,aAAaz9B,UAAU,OAAS48B,EAAIa,aAAa2M,aAAa,KAAQ,YAAWxN,EAAIyN,SAASlH,EAAKh7D,gBAAgB,CAAC00D,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,mBAAmB,KAAQ,MAAKL,EAAIJ,QAAQvyD,KAAK,GAAM,GAAE2yD,EAAIJ,QAAQvyD,QAAQ,IAAM2yD,EAAI0N,MAAMrgE,IAAM,EAAE,YAAc,kBAAkB2yD,EAAI8F,KAAK7F,EAAG,OAAO,CAACI,MAAM,CAAC,GAAM,OAAML,EAAIyN,SAASlH,EAAKh7D,eAAe,CAAC00D,EAAG,SAAS,CAACI,MAAM,CAAC,GAAK,IAAI,GAAK,IAAI,EAAIL,EAAIa,aAAa8M,cAAc,KAAQ,QAAO3N,EAAI4G,gBAAgB,CAAC3G,EAAG,gBAAgB,CAACI,MAAM,CAAC,IAAML,EAAI0N,MAAMrgE,IAAM,EAAE,KAAQ,IAAGk5D,EAAK,GAAGh7D,eAAeg7D,EAAK,GAAGh7D,cAAcg7D,EAAK,GAAGh7D,aAAa,OAAS,OAAO,YAAc,iBAAiB,KAAK00D,EAAG,QAAQ,CAACI,MAAM,CAAC,aAAaL,EAAIa,aAAa+M,UAAUP,IAAI,MAAQrN,EAAIa,aAAa+M,UAAU/7B,MAAM,OAASmuB,EAAIa,aAAa+M,UAAU97B,OAAO,EAAIy0B,EAAK,GAAG,GAAKvG,EAAIa,aAAa+M,UAAU/7B,MAAQ,EAAE,EAAI00B,EAAK,GAAG,GAAKvG,EAAIa,aAAa+M,UAAU97B,OAAS,KAAKmuB,EAAG,OAAO,CAAChrD,MAAQ,YAAW+qD,EAAIa,aAAa76B,KAAKxC,cAAe68B,MAAM,CAAC,KAAOL,EAAIa,aAAa76B,KAAK/L,MAAM,EAAIssC,EAAK,GAAG,GAAKvG,EAAIa,aAAa76B,KAAKxP,OAAO,GAAG,EAAI+vC,EAAK,GAAG,GAAKvG,EAAIa,aAAa76B,KAAKxP,OAAO,KAAK,CAACwpC,EAAIO,GAAG,IAAIP,EAAIQ,GAAGR,EAAI6N,MAAMxgE,IAAI,QAAQ,KAAI,GAAG2yD,EAAI8F,MAC7iH,EACIr9D,GAAkB,GC6JtB,IACAqF,KAAA,iBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAhkC,OAAA,CACA7uB,KAAAxB,OACAs0D,QAAAA,KAAA,KAEAmN,IAAA,CACAjgE,KAAAojD,QACA0P,SAAA,IAGAr4C,IAAAA,GACA,MAAAzV,EAAAwxD,IACA,OACAjE,IAAA,mBACAqN,OAAAj+D,KAAAgJ,SACAquD,OAAA,mBAAAh0D,IACAk7D,aAAA,kBAAAl7D,IACA+zD,WAAA,eAAA/zD,IACAm6D,YAAA,gBAAAn6D,IAEAwrB,cAAA,CAMAlG,YAAA,MAOApD,OAAA,GAMAqO,UAAA,EAMAmqC,WAAA,0BAMAC,aAAA,UAOAt5D,GAAA,GAMA85D,UAAA,EAMAL,cAAA,IAMAR,SAAA,QAMAc,UAAA,EAOApB,SAAA,GAKA7mC,KAAA,CAMAxP,OAAA,OAMAyD,MAAA,UAMAuJ,SAAA,IAMA0pC,KAAA,CAOAn2B,MAAA,EAMAo2B,SAAA,GAMAlzC,MAAA,UAMAyZ,OAAA,KAMA05B,eAAA,CAMAv7B,MAAA,GAMAC,OAAA,GAMAu7B,IAAA,IAOAO,UAAA,CAMA/7B,MAAA,GAMAC,OAAA,GAMAu7B,IAAA,KAIAxM,aAAA,KAEAoM,MAAA,GACArN,QAAA,GACA8N,MAAA,GACAG,MAAA,GAEA,EACA/M,MAAA,CACApkC,MAAAA,GACA,eAAA4qC,GAAA,KAEAA,GACA,GAEAz1D,QAAA,CACAgzD,wBAAAA,GACA,eAAAyC,GAAA,KAEAA,GACA,EACAvC,QAAAA,GACA,eAAAuC,GAAA,KAEAA,GACA,EACA,cAAAA,GACA,kBAAArG,EAAA,mBAAAiN,EAAA,gBAAAC,GAAA,KAEAlN,IAEAiN,UAEAC,IAEA,gBAAAC,EAAA,UAAAC,GAAA,KAEAD,IAEAC,GACA,EACApN,WAAAA,GACA,WAAAvkC,EAAA,cAAA2B,GAAA,KAEA,MAAAwiC,GAAA7lB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAO,GAAA,GAAA3B,GAAA,KAEA,OAAA3H,GAAA8rC,EAEAA,EAAA9rC,OAAAA,EAAAhC,KAAAlE,GACAA,aAAA3e,MACA,CAAAirB,SAAAtM,EAAAmX,KAAA,IAGAnX,IAGA,KAAAgyC,aAAAA,CACA,EACAqN,kBAAAA,GACA,cAAAI,EAAA,aAAAzN,EAAA,MAAAhvB,EAAA,OAAAC,GAAA,KAEA,gBAAA3Z,EAAA,OAAApD,EAAA,SAAAk5C,GAAApN,EAEA9rC,EAAAA,EAAAhC,KAAA,EAAAoI,cAAAA,IAEA8yC,IACA91C,EAAA,CAAA0Z,EAAA1Z,EAAA,GAAA2Z,EAAA3Z,EAAA,IACApD,EAAAA,EAAAhC,KAAA,EAAA5J,EAAA6e,KAAA,CAAA6J,EAAA1oB,EAAA2oB,EAAA9J,MAGA,KAAAilC,MAAAl4C,EAAAhC,KAAA1Z,GAAAi1D,EAAAn2C,EAAA9e,IACA,EACAi1D,OAAAA,CAAAx1B,EAAAz/B,GACA,sBAAAk1D,GAAA,KAEAC,EAAAD,EAAAz1B,EAAAz/B,GAEA,OAAAA,EAAAm1D,EAAA11B,EACA,EACAy1B,eAAAA,EAAAE,EAAAC,IAAA39B,EAAAC,IACA,uBAAA29B,EAAA,aAAA9N,GAAA,MAEA,UAAAmN,EAAA,EAAA95D,GAAA2sD,GAEA+N,EAAAC,GAAA,EAAAJ,EAAA19B,GAAA,GAAA29B,EAAA19B,GAAA,GAEA3a,EAAA+tC,EAAA,CAAAqK,EAAAC,GAAA,CAAA39B,EAAAC,IAEA89B,EAAAz4C,EAAA23C,EACAe,EAAAD,EAAA,EAEA,IAAAE,EAAAC,GAAA,CAAAL,EAAAC,GAEA,GACAG,GAAAD,EACAE,EAAAN,EAAAz6D,EAAA,CAAA06D,EAAAC,GAAAG,GAAA,SACA5K,EAAA,CAAAwK,EAAAC,GAAA,CAAAG,EAAAC,IAAAH,GAEA,OAAAE,EAAAC,EACA,EACAN,gBAAAA,CAAAz6D,GAAA4mD,EAAAC,GAAA5xC,GACA,MAAA6e,EAAA+yB,EAAA7mD,EAAA4mD,EAAA5mD,EAAAiV,EAEA,OAAAA,EAAA6e,EACA,EACA,qBAAAmmC,GACA,gBAAArJ,EAAA,MAAAmI,EAAA,MAAA9L,GAAA,WAEA2D,IAEA,KAAAlF,QAAAqN,EAAAl6C,KAAA,CAAAoC,EAAA9nB,IAAA8zD,EAAA,OAAA9zD,KAAA,GAAA6hE,kBACA,EACAd,SAAAA,GACA,eAAAjB,EAAA,OAAAp4C,GAAA,KAAA8rC,aAEA,KAAA6M,MAAA34C,EAAAhC,KAAAoC,GAAAmuC,KAAA6J,GAAA,IACA,EACAkB,SAAAA,GACA,aAAAt5C,GAAA,KAAA8rC,aAEA,KAAAgN,MAAA94C,EAAAhC,KAAA,EAAAiT,UAAAA,GACA,EACA+mC,eAAAA,EAAA,QAAA9xC,EAAA,QAAAC,IACA,YAAA2W,EAAA,OAAAC,EAAA,IAAAg8B,GAAA,KAEA,IAAAA,EAAA,OAEA,MAAAqB,GAAAl0C,EAAA4W,GAAAuN,QAAA,GACAgwB,GAAAl0C,EAAA4W,GAAAsN,QAAA,GAEA1oB,QAAAoG,KAAA,+CAAA7B,MAAAC,+BAAAi0C,MAAAC,KACA,ICzegP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACrM,GACvBA,EAAIvB,UAAU6N,GAAavhE,KAAMuhE,GACnC,CCLA,IAAI7mE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,4BAA4BlrD,MAAQ,yBAAwB+qD,EAAIa,aAAeb,EAAIa,aAAayO,SAAW,MAAOxC,GAAG,CAAC,MAAQ9M,EAAI+M,kBAAkB,CAAE/M,EAAIuP,SAASlkE,OAAQ40D,EAAG,MAAM,CAACI,MAAM,CAAC,MAAQL,EAAInuB,MAAM,OAASmuB,EAAIluB,SAAS,CAACmuB,EAAG,OAAO,CAACA,EAAG,iBAAiB,CAACI,MAAM,CAAC,GAAKL,EAAIwP,kBAAkB,GAAK,MAAM,GAAK,MAAM,EAAI,QAAQ,CAACvP,EAAG,OAAO,CAACI,MAAM,CAAC,OAAS,KAAK,aAAa,OAAO,eAAe,OAAOJ,EAAG,OAAO,CAACI,MAAM,CAAC,OAAS,OAAO,aAAa,OAAO,eAAe,QAAQ,GAAGJ,EAAG,iBAAiB,CAACI,MAAM,CAAC,GAAKL,EAAIyP,eAAe,GAAK,MAAM,GAAK,MAAM,EAAI,QAAQ,CAACxP,EAAG,OAAO,CAACI,MAAM,CAAC,OAAS,KAAK,aAAa,OAAO,eAAe,OAAOJ,EAAG,OAAO,CAACI,MAAM,CAAC,OAAS,OAAO,aAAa,OAAO,eAAe,QAAQ,IAAI,GAAGL,EAAIkD,GAAIlD,EAAI0P,eAAe,SAASr2D,GAAO,OAAO4mD,EAAG,IAAI,CAAC/yD,IAAImM,EAAMnM,IAAMsC,KAAKgJ,UAAU,CAACynD,EAAG,OAAO,CAAE5mD,EAAM6zD,KAAKn2B,KAAMkpB,EAAG,SAAS,CAACI,MAAM,CAAC,GAAM,OAAML,EAAIyN,SAASp0D,EAAMnM,MAAM,GAAKmM,EAAMs2D,WAAW,GAAG,GAAKt2D,EAAMs2D,WAAW,KAAK,CAAC1P,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,IAAI,OAAU,KAAIhnD,EAAM6zD,KAAKx5B,SAAS,IAAO,GAAEr6B,EAAM6zD,KAAKluC,QAAQ,YAAc,gBAAgBihC,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,UAAU,OAAS,MAAM,IAAO,GAAEhnD,EAAM6zD,KAAKluC,QAAQ,YAAc,kBAAkBghC,EAAI8F,OAAO7F,EAAG,OAAO,CAACI,MAAM,CAAC,GAAM,OAAML,EAAIyN,SAASp0D,EAAMnM,QAAQ,CAAEmM,EAAM6zD,KAAKn2B,KAAMkpB,EAAG,MAAM,CAACI,MAAM,CAAC,aAAc,QAAOL,EAAIyN,SAASp0D,EAAMnM,MAAM,KAAQ,QAAO8yD,EAAIyP,qBAAqBzP,EAAI8F,OAAQzsD,EAAM6zD,KAAKn2B,KAAMkpB,EAAG,MAAM,CAACI,MAAM,CAAC,aAAc,QAAOL,EAAIyN,SAASp0D,EAAMnM,MAAM,KAAOmM,EAAM6zD,KAAKjzC,MAAM,KAAQ,YAAW+lC,EAAIyN,SAASp0D,EAAMnM,UAAU8yD,EAAI8F,KAAMzsD,EAAM01C,KAAKhY,KAAMkpB,EAAG,QAAQ,CAACI,MAAM,CAAC,aAAahnD,EAAM01C,KAAK55C,IAAI,MAAQkE,EAAM01C,KAAKld,MAAM,OAASx4B,EAAM01C,KAAKjd,OAAO,EAAIz4B,EAAM01C,KAAK5lC,EAAE,EAAI9P,EAAM01C,KAAK/mB,KAAKg4B,EAAI8F,KAAMzsD,EAAM2sB,KAAK+Q,KAAMkpB,EAAG,OAAO,CAAChrD,MAAQ,YAAWoE,EAAM2sB,KAAKxC,oBAAoBnqB,EAAM2sB,KAAK/L,QAASomC,MAAM,CAAC,KAAOhnD,EAAM2sB,KAAK/L,MAAM,EAAI5gB,EAAM2sB,KAAK7c,EAAE,EAAI9P,EAAM2sB,KAAKgC,IAAI,CAACg4B,EAAIO,GAAG,IAAIP,EAAIQ,GAAGnnD,EAAMvL,MAAM,OAAOkyD,EAAI8F,MAAM,IAAG9F,EAAIkD,GAAIlD,EAAIuP,UAAU,SAAS16B,EAAKxnC,GAAG,OAAO4yD,EAAG,IAAI,CAAC/yD,IAAI2nC,EAAK3nC,IAAMsC,KAAKgJ,UAAU,CAACynD,EAAG,OAAO,CAACA,EAAG,OAAO,CAACG,IAAIvrB,EAAK3nC,IAAIogE,UAAS,EAAKjN,MAAM,CAAC,GAAKxrB,EAAK3nC,IAAI,EAAI2nC,EAAKte,EAAE,KAAO,mBAAmB0pC,EAAG,MAAM,CAACI,MAAM,CAAC,aAAc,IAAGxrB,EAAK3nC,MAAM,eAAe2nC,EAAKhD,MAAM,OAASgD,EAAK04B,cAActN,EAAG,OAAO,CAACI,MAAM,CAAC,GAAM,OAAML,EAAIyN,SAAS54B,EAAK3nC,QAAQ,CAAC+yD,EAAG,SAAS,CAACI,MAAM,CAAC,GAAK,IAAI,GAAK,IAAI,EAAIxrB,EAAKnB,OAAO,KAAQ,QAAOssB,EAAIwP,uBAAuB,CAACvP,EAAG,gBAAgB,CAACI,MAAM,CAAC,IAAMxrB,EAAK7V,KAAK,KAAO6V,EAAKte,EAAE,OAAS,OAAO,YAAc,iBAAiB,KAAMypC,EAAI4P,eAAeviE,GAAI4yD,EAAG,MAAM,CAACI,MAAM,CAAC,aAAc,IAAGxrB,EAAK3nC,MAAM,eAAe2nC,EAAKhD,MAAM,OAASgD,EAAK5a,MAAM,KAAQ,YAAW+lC,EAAIyN,SAAS54B,EAAK3nC,SAAS,CAAC+yD,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,mBAAmB,KAAQ,MAAKL,EAAI4P,eAAeviE,KAAK,GAAM,GAAE2yD,EAAI4P,eAAeviE,QAAQ,IAAMwnC,EAAK7V,KAAK,YAAc,kBAAkBghC,EAAI8F,MAAM,KAAI,GAAG9F,EAAI8F,MAC15F,EACIr9D,GAAkB,GC+JtB,IACAqF,KAAA,yBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAhkC,OAAA,CACA7uB,KAAAxB,OACAs0D,QAAAA,KAAA,KAEAmN,IAAA,CACAjgE,KAAAojD,QACA0P,SAAA,IAGAr4C,IAAAA,GACA,MAAAzV,EAAAwxD,IACA,OACAjE,IAAA,4BACAqN,OAAAj+D,KAAAgJ,SACAg3D,kBAAA,uBAAA38D,IACA48D,eAAA,oBAAA58D,IAoDAwrB,cAAA,CAMAtJ,OAAA,GAMAu6B,MAAA,GAKA4d,KAAA,CAMAn2B,MAAA,EAKAo2B,SAAA,QAMAlzC,MAAA,UAMAyZ,OAAA,KAMA1N,KAAA,CAMA+Q,MAAA,EAMAvgB,OAAA,OAMAyD,MAAA,UAMAuJ,SAAA,IAMAurB,KAAA,CAMAhY,MAAA,EAMA5hC,IAAA,GAMA08B,MAAA,GAMAC,OAAA,IAMA+C,KAAA,CAMAhD,MAAA,EAMA5X,MAAA,UAMAszC,WAAA,0BAMAJ,SAAA,QAMAz5B,OAAA,KAOA47B,SAAA,GAOAp7D,GAAA,GAMA85D,UAAA,EAMAC,UAAA,GAOAsB,SAAA,GAMAK,eAAA,GAKAF,cAAA,GAEA7O,aAAA,KAEA,EACAC,MAAA,CACApkC,MAAAA,GACA,eAAA4qC,GAAA,KAEAA,GACA,GAEAz1D,QAAA,CACAgzD,wBAAAA,GACA,eAAAyC,GAAA,KAEAA,GACA,EACAvC,QAAAA,GACA,eAAAuC,GAAA,KAEAA,GACA,EACA,cAAAA,GACA,kBAAArG,EAAA,kBAAA4O,EAAA,cAAAC,GAAA,KAEA7O,IAEA4O,IAEAC,IAEA,sBAAA3B,GAAA,WAEAA,GACA,EACAlN,WAAAA,GACA,WAAAvkC,EAAA,cAAA2B,GAAA,KAEA,MAAAwiC,GAAA7lB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAO,GAAA,GAAA3B,GAAA,KAEA,OAAA3H,EAAA,MAAAu6B,EAAA,KAAA4d,EAAA,KAAAlnC,EAAA,KAAA+oB,EAAA,KAAAla,GAAAgsB,EAEAA,EAAA9rC,OAAAA,EAAAhC,KAAAlE,IACAA,EAAAq+C,MAAAlyB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAovC,GAAA,GAAAr+C,EAAAq+C,MAAA,IACAr+C,EAAAmX,MAAAgV,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAkI,GAAA,GAAAnX,EAAAmX,MAAA,IACAnX,EAAAkgC,MAAA/T,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAixB,GAAA,GAAAlgC,EAAAkgC,MAAA,IAEAlgC,KAGAgyC,EAAAvR,MAAAA,EAAAv8B,KAAAlE,IACAmsB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAA+W,GAAA,GAAAhmB,KAGA,KAAAgyC,aAAAA,CACA,EACAgP,iBAAAA,GACA,mBAAAhP,EAAA,MAAAhvB,EAAA,OAAAC,GAAA,MAEA,SAAAm8B,EAAA,OAAAl5C,GAAA8rC,EAEA,KAAA6O,cAAA36C,EAAAhC,KAAA,CAAAlE,EAAAxhB,KACA,MAAAsiE,YAAAxmD,EAAA6e,GAAA,KAAAklC,EAAA,KAAAne,EAAA,KAAA/oB,GAAAnX,EAEAo/C,IAAAp/C,EAAA8gD,WAAA,CAAAxmD,EAAA0oB,EAAA7J,EAAA8J,IAEAjjB,EAAAq+C,KAAAluC,KAAAskC,KAAA4J,EAAAC,UAAA,GAEA,MAAAt7B,MAAAk+B,EAAAj+B,OAAAk+B,GAAAjhB,EACAlgC,EAAAkgC,KAAA5lC,EAAA0F,EAAA8gD,WAAA,GAAAI,EAAA,EACAlhD,EAAAkgC,KAAA/mB,EAAAnZ,EAAA8gD,WAAA,GAAAK,EAAA,EAEA,MAAA99B,EAAAC,GAAAnM,EAAAxP,OAMA,OALA3H,EAAAmX,KAAA7c,EAAA0F,EAAA8gD,WAAA,GAAAz9B,EACArjB,EAAAmX,KAAAgC,EAAAnZ,EAAA8gD,WAAA,GAAAx9B,EAEAtjB,EAAA3hB,IAAA,GAAA2hB,EAAA8gD,WAAApkE,aAAA8B,IAEAwhB,CAAA,GAEA,EACAihD,aAAAA,GACA,cAAAxB,EAAA,aAAAzN,GAAA,MAEA,OAAA9rC,EAAA,MAAAu6B,GAAAuR,EAEA,KAAA0O,SAAAjgB,EAAAv8B,KAAAlE,IACA,aAAA9gB,EAAA,OAAAgB,EAAA,SAAAo+D,GAAAt+C,EAEAohD,EAAAl7C,EAAA6F,MAAA,EAAA9sB,UAAAA,IAAAC,IAAA4hE,WACAO,EAAAn7C,EAAA6F,MAAA,EAAA9sB,UAAAA,IAAAiB,IAAA4gE,WAEApJ,EAAA+H,EAAA2B,EAAAC,GAAAn9C,KAAAlE,GAAAA,EAAAkE,KAAA1B,GAAA8tB,WAAA9tB,EAAA+tB,QAAA,SACA7oB,EAAA,IAAAgwC,EAAA,GAAAh7D,eAAAg7D,EAAA,GAAAh7D,cAAAg7D,EAAA,GAAAh7D,aACA2B,EAAA,OAAAq5D,EAAAh7D,aACAyzB,EAAAskC,KAAA6J,GAAA,GAEA,UAAAt+C,EAAA03C,OAAAr5D,MAAAqpB,IAAAyI,OAAA,GAEA,EACAsvC,OAAAA,CAAAvmB,EAAAC,GACA,sBAAAumB,GAAA,KAEAC,EAAAD,EAAAxmB,EAAAC,GAEA,OAAAD,EAAAymB,EAAAxmB,EACA,EACAumB,eAAAA,EAAAE,EAAAC,IAAA39B,EAAAC,IACA,uBAAA29B,EAAA,aAAA9N,GAAA,MAEA,UAAAmN,EAAA,EAAA95D,GAAA2sD,GAEA+N,EAAAC,GAAA,EAAAJ,EAAA19B,GAAA,GAAA29B,EAAA19B,GAAA,GAEA3a,EAAA+tC,EAAA,CAAAqK,EAAAC,GAAA,CAAA39B,EAAAC,IAEA89B,EAAAz4C,EAAA23C,EACAe,EAAAD,EAAA,EAEA,IAAAE,EAAAC,GAAA,CAAAL,EAAAC,GAEA,GACAG,GAAAD,EACAE,EAAAN,EAAAz6D,EAAA,CAAA06D,EAAAC,GAAAG,GAAA,SACA5K,EAAA,CAAAwK,EAAAC,GAAA,CAAAG,EAAAC,IAAAH,GAEA,OAAAE,EAAAC,EACA,EACAN,gBAAAA,CAAAz6D,GAAA4mD,EAAAC,GAAA5xC,GACA,MAAA6e,EAAA+yB,EAAA7mD,EAAA4mD,EAAA5mD,EAAAiV,EAEA,OAAAA,EAAA6e,EACA,EACA,qBAAAmmC,GACA,gBAAArJ,EAAA,SAAAyK,EAAA,MAAApO,GAAA,WAEA2D,IAEA,KAAA8K,eAAAL,EAAAx8C,KAAA,EAAA7lB,SAAAi0D,EAAAj0D,GAAA,GAAAgiE,kBACA,EACAnC,eAAAA,EAAA,QAAA9xC,EAAA,QAAAC,IACA,YAAA2W,EAAA,OAAAC,EAAA,IAAAg8B,GAAA,KAEA,IAAAA,EAAA,OAEA,MAAAqB,GAAAl0C,EAAA4W,GAAAuN,QAAA,GACAgwB,GAAAl0C,EAAA4W,GAAAsN,QAAA,GAEA1oB,QAAAoG,KAAA,wDAAA7B,MAAAC,+BAAAi0C,MAAAC,KACA,ICljBgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACrM,GACvBA,EAAIvB,UAAU2O,GAAqBriE,KAAMqiE,GAC3C,CCLA,IAAI3nE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAIC,MAAM,CAAC,GAAK,6BAA6B,CAAEL,EAAIoQ,MAAO,CAACpQ,EAAIhnD,GAAG,YAAYgnD,EAAI8F,MAAM,EAC7K,EACIr9D,GAAkB,GCStB,IACAqF,KAAA,wBACAu3D,OAAA,CAAAC,GACAh9C,IAAAA,GACA,OACA83C,IAAA,wBACA7P,SAAA,EACA7wB,MAAA,EACA2wC,UAAA,GACAD,OAAA,EAEA,EACAv+D,QAAA,CACAgzD,wBAAAA,GACA,iBAAAyL,EAAA,YAAAC,GAAA,KAEAD,IAEAC,IAEA,KAAAH,OAAA,CACA,EACAE,UAAAA,GACA,UAAAr8B,GAAA,MACA,MAAApC,EAAA,OAAAC,GAAA0+B,OAEA,KAAAjgB,SAAA1e,EAEAoC,EAAAh/B,MAAA48B,MAAA,GAAAA,MACAoC,EAAAh/B,MAAA68B,OAAA,GAAAA,KACA,EACAy+B,WAAAA,GACA,eAAAhgB,EAAA,IAAAtc,GAAA,KAEAw8B,EAAAjkE,SAAAsvB,KAAAnC,YAEAsa,EAAAh/B,MAAAy7D,UAAA,SAAAD,EAAAlgB,IACA,EACAwU,QAAAA,GACA,kBAAAwL,GAAA,KAEAA,GACA,ICrDgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACxN,GACvBA,EAAIvB,UAAUmP,GAAoB7iE,KAAM6iE,GAC1C,CCLA,IAAInoE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,MAAM,CAACI,MAAM,CAAC,MAAQ,OAAO,OAAS,SAAS,CAACJ,EAAG,SAAS,CAACI,MAAM,CAAC,GAAK,KAAK,GAAK,KAAK,EAAI,KAAK,KAAO,cAAc,eAAe,IAAI,mBAAmB,iBAAiB,OAAS,UAAU,iBAAiB,UAAU,CAACJ,EAAG,mBAAmB,CAACI,MAAM,CAAC,cAAgB,YAAY,KAAO,SAAS,OAAS,sBAAsB,IAAM,OAAO,YAAc,gBAAgBJ,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,SAAS,OAAS,0BAA0B,IAAM,KAAK,YAAc,iBAAiB,GAAGJ,EAAG,SAAS,CAACI,MAAM,CAAC,GAAK,KAAK,GAAK,KAAK,EAAI,KAAK,KAAO,cAAc,eAAe,IAAI,mBAAmB,aAAa,OAAS,UAAU,iBAAiB,UAAU,CAACJ,EAAG,mBAAmB,CAACI,MAAM,CAAC,cAAgB,YAAY,KAAO,SAAS,OAAS,sBAAsB,IAAM,OAAO,YAAc,gBAAgBJ,EAAG,UAAU,CAACI,MAAM,CAAC,cAAgB,SAAS,OAAS,0BAA0B,IAAM,KAAK,YAAc,iBAAiB,KAAKJ,EAAG,MAAM,CAACE,YAAY,eAAe,CAACH,EAAIhnD,GAAG,YAAY,IAC9kC,EACIvQ,GAAkB,GC0DtB,IACAqF,KAAA,aC7DgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACi1D,GACvBA,EAAIvB,UAAUoP,GAAQ9iE,KAAM8iE,GAC9B,CCLA,IAAIpoE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAI,eAAeD,YAAY,mBAAmB,CAACF,EAAG,MAAM,CAACA,EAAG,OAAO,CAACA,EAAG,iBAAiB,CAACI,MAAM,CAAC,GAAKL,EAAI6Q,YAAY,GAAK,KAAK,GAAK,KAAK,GAAK,OAAO,GAAK,OAAO7Q,EAAIkD,GAAIlD,EAAI8Q,gBAAgB,SAASC,GAAI,OAAO9Q,EAAG,OAAO,CAAC/yD,IAAI6jE,EAAG,GAAG1Q,MAAM,CAAC,OAAU,GAAE0Q,EAAG,MAAM,aAAaA,EAAG,KAAK,IAAG,GAAG9Q,EAAG,iBAAiB,CAACI,MAAM,CAAC,GAAKL,EAAIgR,YAAY,GAAK,KAAK,GAAK,KAAK,GAAKhR,EAAIiR,cAAc,GAAK,OAAOjR,EAAIkD,GAAIlD,EAAI8Q,gBAAgB,SAASC,GAAI,OAAO9Q,EAAG,OAAO,CAAC/yD,IAAI6jE,EAAG,GAAG1Q,MAAM,CAAC,OAAU,GAAE0Q,EAAG,MAAM,aAAaA,EAAG,KAAK,IAAG,IAAI,GAAG9Q,EAAG,OAAO,CAACI,MAAM,CAAC,EAAIL,EAAIa,aAAeb,EAAIa,aAAaqQ,YAAc,EAAI,IAAI,EAAIlR,EAAIa,aAAeb,EAAIa,aAAaqQ,YAAc,EAAI,IAAI,GAAKlR,EAAIa,aAAeb,EAAIa,aAAasQ,aAAe,IAAI,GAAKnR,EAAIa,aAAeb,EAAIa,aAAasQ,aAAe,IAAI,KAAO,cAAc,eAAenR,EAAIa,aAAeb,EAAIa,aAAaqQ,YAAc,IAAI,OAAU,QAAOlR,EAAI6Q,eAAe,MAAQ7Q,EAAIoM,UAAY,EAAIpM,EAAIoM,UAAY,EAAE,OAASpM,EAAIoR,WAAa,EAAIpR,EAAIoR,WAAa,KAAKnR,EAAG,WAAW,CAACI,MAAM,CAAC,eAAeL,EAAIqR,cAAc,mBAAmBrR,EAAIa,aAAeb,EAAIa,aAAa/9B,SAAS3uB,KAAK,KAAO,IAAI,OAAU,QAAO6rD,EAAIsR,oBAAoB,OAAStR,EAAIjrC,UAAUkrC,EAAG,OAAO,CAACI,MAAM,CAAC,OAASL,EAAIa,aAAeb,EAAIa,aAAaiH,UAAY,OAAO,KAAO9H,EAAIa,aAAeb,EAAIa,aAAaiH,UAAY,OAAO,EAAI9H,EAAInuB,MAAQ,EAAE,EAAImuB,EAAIluB,OAAS,IAAI,CAACkuB,EAAIO,GAAG,IAAIP,EAAIQ,GAAGR,EAAI1mB,SAAS,UAC19C,EACI7wC,GAAkB,GCkDtB,IACAqF,KAAA,gBACA4yD,MAAA,CACAhkC,OAAA,CACA7uB,KAAAxB,OACAs0D,QAAAA,KAAA,MAGAr4C,IAAAA,GACA,MAAAzV,EAAAwxD,IACA,OACAwM,YAAA,4BAAAh+D,IACAm+D,YAAA,4BAAAn+D,IAEAg/B,MAAA,EACAC,OAAA,EAEAzT,cAAA,CAMAlzB,MAAA,EAOA84B,OAAA,sBAMAitC,YAAA,EAMAK,UAAA,EAMAzuC,SAAA,MAMAglC,UAAA,OAMAqJ,aAAA,EAOArkB,eAAA,EAMAnV,UAAA,YAGAkpB,aAAA,KAEA,EACAsB,SAAA,CACAiK,SAAAA,GACA,mBAAAvL,EAAA,MAAAhvB,GAAA,KAEA,IAAAgvB,EAAA,SAEA,kBAAAqQ,GAAArQ,EAEA,OAAAhvB,EAAAq/B,CACA,EACAE,UAAAA,GACA,mBAAAvQ,EAAA,OAAA/uB,GAAA,KAEA,IAAA+uB,EAAA,SAEA,kBAAAqQ,GAAArQ,EAEA,OAAA/uB,EAAAo/B,CACA,EACAn8C,MAAAA,GACA,mBAAA8rC,EAAA,MAAAhvB,EAAA,OAAAC,GAAA,KAEA0/B,EAAA1/B,EAAA,EAEA,IAAA+uB,EAAA,YAAA2Q,QAAAA,IAEA,kBAAAN,EAAA,UAAAK,EAAA,MAAApmE,GAAA01D,EAEA4Q,GAAA5/B,EAAA,GAAAq/B,EAAAK,IAAA,IAAApmE,EAEA,mBACA+lE,EAAAK,MAAAC,cACAN,EAAAK,EAAAE,MAAAD,EAAA,cAEA,EACAH,aAAAA,GACA,mBAAAxQ,EAAA,OAAA/uB,GAAA,KAEA,IAAA+uB,EAAA,SAEA,kBAAAqQ,EAAA,UAAAK,GAAA1Q,EAEA,OAAA/uB,EAAA,GAAAo/B,EAAAK,EACA,EACAT,cAAAA,GACA,mBAAAjQ,GAAA,KAEA,IAAAA,EAAA,SAEA,aAAA58B,GAAA48B,EAEAvL,EAAArxB,EAAA54B,OAEAqmE,EAAA,KAAApc,EAAA,GAEA,OAAArxB,EAAAlR,KAAA,CAAA7mB,EAAAmB,IAAA,CAAAqkE,EAAArkE,EAAAnB,IACA,EACAolE,gBAAAA,GACA,kBAAAT,EAAA,YAAAG,EAAA,aAAAnQ,GAAA,KAEA,OAAAA,GAEAA,EAAA/T,cAAA+jB,EAFAG,CAKA,EACAC,aAAAA,GACA,mBAAApQ,GAAA,KAEA,IAAAA,EAAA,aAEA,YAAA11D,GAAA01D,EAEA,WAAA11D,EAAA,GACA,EACAmuC,OAAAA,GACA,mBAAAunB,GAAA,KAEA,IAAAA,EAAA,SAEA,YAAA11D,EAAA,UAAAwsC,GAAAkpB,EAEA,OAAAlpB,EAAA1yB,QAAA,UAAA9Z,EACA,GAEA21D,MAAA,CACApkC,MAAAA,GACA,kBAAAukC,GAAA,KAEAA,GACA,GAEApvD,QAAA,CACA,UAAAkvD,GACA,aAAA2D,EAAA,OAAAhoC,EAAA,YAAAukC,GAAA,WAEAyD,IAEAhoC,GAEAukC,GACA,EACA,YAAAyD,GACA,gBAAAI,EAAA,MAAA3D,GAAA,WAEA2D,IAEA,kBAAAnrC,EAAA,aAAAC,GAAAunC,EAAA,gBAEA,KAAAtvB,MAAAlY,EACA,KAAAmY,OAAAlY,CACA,EACAqnC,WAAAA,GACA,aAAAvkC,EAAA,cAAA2B,GAAA,KAEA,KAAAwiC,cAAA7lB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAO,GAAA,GAAA3B,GAAA,GACA,GAEA6kC,OAAAA,GACA,WAAAR,GAAA,KAEAA,GACA,GC7PgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACgC,GACvBA,EAAIvB,UAAUmQ,GAAY7jE,KAAM6jE,GAClC,CCLA,IAAInpE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,mBAAmB,CAAEH,EAAI4R,OAAOvmE,QAAU20D,EAAIa,aAAcZ,EAAG,MAAM,CAACE,YAAY,SAASlrD,MAAQ,qBAAoB+qD,EAAIa,aAAagR,cAAe7R,EAAIkD,GAAIlD,EAAI4R,QAAQ,SAASE,EAAWzkE,GAAG,OAAO4yD,EAAG,MAAM,CAAC/yD,IAAK,GAAE4kE,IAAazkE,IAAI8yD,YAAY,cAAclrD,MAAQ,qBAChW+qD,EAAIa,aAAakR,yCACZ/R,EAAIa,aAAakR,mCACvB/R,EAAIgS,OAAO3kE,gBACnBgzD,MAAM,CAAC,MAAQL,EAAIiS,OAAO5kE,IAAI6kE,SAAS,CAAC,UAAYlS,EAAIQ,GAAGsR,KAAc,IAAG,GAAG9R,EAAI8F,KAAM9F,EAAIa,aAAcZ,EAAG,MAAM,CAACE,YAAY,OAAOlrD,MAAQ,WAAU+qD,EAAIluB,QAAUkuB,EAAI4R,OAAOvmE,OAAS20D,EAAIa,aAAakR,aAAe,SAAU/R,EAAIkD,GAAIlD,EAAImS,MAAM,SAASC,EAAIC,GAAI,OAAOpS,EAAG,MAAM,CAAC/yD,IAAK,GAAEklE,EAAI7mE,aAAa6mE,EAAIE,SAASnS,YAAY,WAAWlrD,MAAQ,qBACrV+qD,EAAImM,QAAQkG,+BACPrS,EAAImM,QAAQkG,oCACPrS,EAAIa,aAAauR,EAAIG,SAAW,IAAM,EAAI,aAAe,yBAC3EvS,EAAIkD,GAAIkP,EAAII,OAAO,SAASt6D,EAAKu6D,GAAI,OAAOxS,EAAG,MAAM,CAAC/yD,IAAK,GAAEgL,IAAOm6D,IAAKI,IAAKtS,YAAY,OAAOlrD,MAAQ,UAAS+qD,EAAIgS,OAAOS,QAAUpS,MAAM,CAAC,MAAQL,EAAIiS,OAAOQ,IAAKP,SAAS,CAAC,UAAYlS,EAAIQ,GAAGtoD,IAAO40D,GAAG,CAAC,MAAQ,SAAS4F,GAAQ,OAAO1S,EAAI2S,UAAU,QAASN,EAAII,EAAIL,EAAKl6D,EAAK,EAAE,WAAa,SAASw6D,GAAQ,OAAO1S,EAAI4S,aAAY,EAAMP,EAAII,EAAIL,EAAKl6D,EAAK,EAAE,WAAa,SAASw6D,GAAQ,OAAO1S,EAAI4S,aAAY,EAAM,IAAI,IAAG,EAAE,IAAG,GAAG5S,EAAI8F,MAChc,EACIr9D,GAAkB,GC8CtB,I,SAAA,CACAqF,KAAA,gBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAhkC,OAAA,CACA7uB,KAAAxB,OACAs0D,QAAAA,KAAA,MAGAr4C,IAAAA,GACA,OACA83C,IAAA,eAEA/hC,cAAA,CAOAuzC,OAAA,GAMAtpD,KAAA,GAMAomB,OAAA,EAMAmjC,UAAA,UAMAgB,UAAA,UAMAC,WAAA,UAMAC,SAAA,IAMAhB,aAAA,GAMAiB,YAAA,GAOA5vB,MAAA,GAMA93C,OAAA,EAMA2nE,YAAA,IAOAC,SAAA,SAOAC,YAAA,GAGAtS,aAAA,KAEA+Q,OAAA,GAEAwB,SAAA,GAEAjB,KAAA,GAEAH,OAAA,GAEA7F,QAAA,GAEAkH,UAAA,EAEApB,OAAA,GAEAqB,eAAA,EAEApR,iBAAA,GAEAzsB,QAAA,EAEA89B,UAAA,EAEA,EACAzS,MAAA,CACApkC,MAAAA,GACA,oBAAA82C,EAAA,SAAAlM,GAAA,KAEAkM,IAEA,KAAAF,eAAA,EAEAhM,GACA,GAEAz1D,QAAA,CACA+gE,WAAAA,CAAAa,EAAApB,EAAAI,EAAAL,EAAAl6D,GACA,mBAAA2oD,EAAA,UAAA8R,EAAA,cAAAa,EAAA,UAAAn5C,GAAA,KAEAo5C,GAAAd,EAAA,YAAAN,EAAAI,EAAAL,EAAAl6D,GACA2oD,EAAAsS,aAEAM,EACAD,IAEAn5C,GAAA,GAEA,EACAwqC,wBAAAA,GACA,eAAAyC,GAAA,KAEAA,GACA,EACAvC,QAAAA,GACA,mBAAAlE,EAAA,WAAA6S,EAAA,YAAAC,GAAA,KAEA9S,IAEA6S,IAEAC,IACA,EACArM,QAAAA,GACA,kBAAArG,EAAA,eAAA2S,EAAA,aAAAC,GAAA,KAEA5S,IAEA2S,IAEAC,IAEA,iBAAAH,EAAA,YAAAC,EAAA,WAAAG,GAAA,KAEAJ,IAEAC,IAEAG,IAEA,gBAAAz5C,GAAA,KAEAA,GAAA,EACA,EACA4mC,WAAAA,GACA,WAAAvkC,EAAA,cAAA2B,GAAA,KAEA,KAAAwiC,cAAA7lB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAO,GAAA,GAAA3B,GAAA,GACA,EACAk3C,cAAAA,GACA,WAAAhC,EAAA,MAAAtmE,EAAA,YAAA2nE,GAAA,KAAApS,aAEA+Q,EAAAvmE,QAMAumE,EAAA,IAAAA,GAEAtmE,GAAAsmE,EAAAr6C,QAAA07C,GAEA,KAAArB,OAAAA,GATA,KAAAA,OAAA,EAUA,EACAiC,YAAAA,GACA,SAAAvrD,EAAA,MAAAhd,EAAA,UAAAumE,EAAA,OAAAnjC,GAAA,KAAAmyB,aAEAv1D,IACAgd,EAAAA,EAAAyK,KAAA,CAAAq/C,EAAA/kE,KACA+kE,EAAA,IAAAA,GAEA,MAAA2B,EAAA,gDAAAlC,OAAAxkE,EAAA,WAIA,OAFA+kE,EAAA76C,QAAAw8C,GAEA3B,CAAA,KAIA9pD,EAAAA,EAAAyK,KAAA,CAAAy/C,EAAAnlE,KAAA,CAAAmlE,QAAAD,SAAAllE,MAEA,MAAA2mE,EAAA1rD,EAAAjd,OAEA2oE,EAAAtlC,GAAAslC,EAAA,EAAAtlC,IACApmB,EAAA,IAAAA,KAAAA,IAGAA,EAAAA,EAAAyK,KAAA,CAAAwD,EAAAlpB,KAAA,IAAAkpB,EAAA+7C,OAAAjlE,MAEA,KAAA+lE,SAAA9qD,EACA,KAAA6pD,KAAA7pD,CACA,EACAorD,UAAAA,GACA,YAAA7hC,EAAA,aAAAgvB,EAAA,SAAAuS,GAAA,MAEA,YAAAJ,EAAA,OAAApB,GAAA/Q,EAEAoT,EAAAjB,EAAAr+C,QAAA,CAAAnS,EAAAtP,IAAAsP,EAAAtP,GAAA,GAEA,IAAAghE,EAAA,EACAd,EAAA,GACAc,EAAAd,EAAA,GAAAZ,MAAAnnE,OACAumE,EAAAvmE,SACA6oE,EAAAtC,EAAAvmE,QAGA,MAAA8oE,GAAAtiC,EAAAoiC,IAAAC,EAAAlB,EAAA3nE,QAEA2mE,EAAA,IAAA9hE,MAAAgkE,GAAA9gD,KAAA+gD,GAEA,KAAAnC,QAAAh3B,EAAAA,EAAAA,WAAAg3B,EAAAgB,EACA,EACAW,WAAAA,CAAAS,GAAA,GACA,aAAAtiC,EAAA,aAAA+uB,EAAA,OAAA+Q,GAAA,MAEA,aAAAG,EAAA,OAAArjC,EAAA,KAAApmB,GAAAu4C,EAEA,IAAAjyB,EAAAkD,EAEA8/B,EAAAvmE,SAAAujC,GAAAmjC,GAEA,MAAAsB,EAAAzkC,EAAAF,EAEA,KAAA2kC,UAAAA,EAEAe,IAAA,KAAAjI,QAAA,IAAAj8D,MAAAoY,EAAAjd,QAAA+nB,KAAAigD,GACA,EACAS,UAAAA,GACA,aAAAlC,EAAA,aAAA/Q,GAAA,KAEAqT,EAAAtC,EAAAvmE,OAEA,IAAA4mE,EAAA,IAAA/hE,MAAAgkE,GAAA9gD,KAAA,QAEA,YAAAgwB,GAAAyd,EAEA,KAAAoR,QAAAj3B,EAAAA,EAAAA,WAAAi3B,EAAA7uB,EACA,EACA,eAAA/oB,CAAA0tB,GAAA,GACA,eAAAwrB,EAAA,YAAAI,EAAA,aAAAE,GAAA,KAEAN,IACAM,IACAF,IACA,KAAAJ,UAAA,GAGA,cAAAF,EAAA,eAAAC,EAAA,aAAAzS,EAAA,SAAAuS,EAAA,UAAA/4C,EAAA,QAAAob,GAAA,KAEA,eAAAs9B,EAAA,SAAAG,EAAA,OAAAxkC,GAAAmyB,EAEAmT,EAAAZ,EAAA/nE,OAEA,GAAAqjC,GAAAslC,EAAA,OAEA,GAAAjsB,UACA,IAAAvqB,SAAAC,GAAAjQ,WAAAiQ,EAAAs1C,KACAt9B,IAAA,KAAAA,SAAA,OAGA,MAAA4+B,EAAA,WAAAnB,EAAA,EAAAxkC,EAEA,IAAAyjC,EAAAiB,EAAA5nE,MAAA8nE,GAOA,GANAnB,EAAA7kE,QAAA8lE,EAAA5nE,MAAA,EAAA8nE,IAEA,KAAAnB,KAAAA,EAAA3mE,MAAA,WAAA0nE,EAAA,EAAAxkC,EAAAA,EAAA,GACA,KAAAy9B,QAAA,IAAAj8D,MAAA8jE,GAAA5gD,KAAAigD,SAEA,IAAA71C,SAAAC,GAAAjQ,WAAAiQ,EAAA,OACAgY,IAAA,KAAAA,QAAA,OAEA,KAAA02B,QAAA7pC,OAAA,EAAA+xC,KAAA,IAAAnkE,MAAAmkE,GAAAjhD,KAAA,IAEAkgD,GAAAe,EAEA,MAAAC,EAAAhB,EAAAU,EACAM,GAAA,IAAAhB,EAAAgB,GAEA,KAAAhB,eAAAA,EACA,KAAApR,iBAAA10C,WAAA6M,EAAA04C,EAAA,IACA,EACAS,aAAAA,GACA,uBAAAtR,EAAA,QAAAzsB,GAAA,KAEA,KAAAA,SAAAA,EAAA,UAEAysB,GAEAI,aAAAJ,EACA,EACAyQ,SAAAA,CAAA9kE,EAAAwkE,EAAAI,EAAAL,EAAAl6D,GACA,YAAAs6D,EAAA,SAAAD,GAAAH,EAEA,KAAAmC,MAAA1mE,EAAA,CACAukE,IAAAI,EACAt6D,OACAq6D,WACAiC,YAAA/B,GAEA,EACAgC,UAAAA,CAAAtC,EAAAmB,GACA,mBAAAzS,EAAA,iBAAAqB,EAAA,UAAA7nC,GAAA,KAEA,KAAAwmC,aAAA,IACAA,EACAv4C,KAAA,IAAA6pD,IAGA,KAAAoB,UAAA,EAEA,kBAAAD,IAAA,KAAAA,eAAAA,GACApR,GAAA7nC,GAAA,EACA,GAEAq6C,SAAAA,GACA,oBAAAlB,GAAA,KAEAA,GACA,IClagP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACzQ,GACvBA,EAAIvB,UAAUmT,GAAY7mE,KAAM6mE,GAClC,CCLA,IAAInsE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,IAAIJ,EAAII,IAAID,YAAY,2BAA2BH,EAAIkD,GAAIlD,EAAImS,MAAM,SAAStjD,EAAKxhB,GAAG,OAAO4yD,EAAG,MAAM,CAAC/yD,IAAI2hB,EAAKtjB,WAAasjB,EAAKyjD,OAAOnS,YAAY,WAAWlrD,MAAQ,WAAU+qD,EAAImM,QAAQ9+D,SAAU,CAAC4yD,EAAG,MAAM,CAACE,YAAY,gBAAgB,CAACF,EAAG,MAAM,CAACE,YAAY,QAAQ,CAACH,EAAIO,GAAG,MAAMP,EAAIQ,GAAG3xC,EAAK+lD,YAAY3U,EAAG,MAAM,CAACE,YAAY,YAAY+R,SAAS,CAAC,UAAYlS,EAAIQ,GAAG3xC,EAAK/gB,SAASmyD,EAAG,MAAM,CAACE,YAAY,iBAAiB,CAACH,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIa,aAAagU,eAAiB7U,EAAIa,aAAagU,eAAehmD,GAAQA,EAAK1jB,MAAQ60D,EAAIa,aAAauG,WAAWnH,EAAG,MAAM,CAACE,YAAY,kBAAkB,CAACF,EAAG,MAAM,CAACE,YAAY,gBAAgBlrD,MAAQ,UAAS4Z,EAAKm3B,aAAc,CAACia,EAAG,MAAM,CAACE,YAAY,eAAe,IAAG,EACnxB,EACI13D,GAAkB,GC+BtB,IACAqF,KAAA,uBACAu3D,OAAA,CAAAC,GACA5E,MAAA,CACAhkC,OAAA,CACA7uB,KAAAxB,OACAs0D,QAAAA,KAAA,MAGAr4C,IAAAA,GACA,OACA83C,IAAA,uBAEA/hC,cAAA,CAMA/V,KAAA,GAMAomB,OAAA,EAMAqkC,SAAA,IAOAG,SAAA,SAOA9L,KAAA,GAMAl4C,MAAA,EAMA2lD,eAAA,MAGAhU,aAAA,KAEAuS,SAAA,GAEAjB,KAAA,GAEAhG,QAAA,GAEAmH,eAAA,EAEApR,iBAAA,GAEAzsB,QAAA,EAEA,EACAqrB,MAAA,CACApkC,MAAAA,GACA,oBAAA82C,EAAA,SAAAlM,GAAA,KAEAkM,IAEAlM,GACA,GAEAz1D,QAAA,CACAgzD,wBAAAA,GACA,eAAAyC,GAAA,KAEAA,GACA,EACAvC,QAAAA,GACA,mBAAAlE,EAAA,YAAA8S,GAAA,KAEA9S,GAEA8S,GAAA,EACA,EACArM,QAAAA,GACA,kBAAArG,EAAA,aAAA4S,GAAA,KAEA5S,IAEA4S,IAEA,kBAAAF,GAAA,KAEAA,IAEA,gBAAAt5C,GAAA,KAEAA,GAAA,EACA,EACA4mC,WAAAA,GACA,WAAAvkC,EAAA,cAAA2B,GAAA,KAEA,KAAAwiC,cAAA7lB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAO,GAAA,GAAA3B,GAAA,GACA,EACAm3C,YAAAA,GACA,SAAAvrD,EAAA,OAAAomB,EAAA,KAAAxf,GAAA,KAAA2xC,aAEA3xC,GAAA5G,EAAA4G,MAAA,EAAA/jB,MAAAa,IAAAb,MAAAc,KACAD,EAAAC,GAAA,EACAD,EAAAC,EAAA,EACAD,IAAAC,EAAA,WAGA,MAAAd,EAAAmd,EAAAyK,KAAA,EAAA5nB,WAAAA,IAEA8M,EAAAzI,KAAAyI,OAAA9M,IAAA,EAGA2pE,EAAAtlE,KAAA6iB,IAAApa,GAEAD,EAAAxI,KAAAwI,OAAA7M,IAAA,EAKAoqB,GAFA/lB,KAAA6iB,IAAAra,GAEAA,EAAA88D,GAEAxsD,EAAAA,EAAAyK,KAAA,CAAAq/C,EAAA/kE,KAAA,IAAA+kE,EAAAwC,QAAAvnE,EAAA,EAAA24C,SAAAosB,EAAAjnE,MAAA2pE,GAAAv/C,EAAA,QAEA,MAAAy+C,EAAA1rD,EAAAjd,OAEA2oE,EAAAtlC,GAAAslC,EAAA,EAAAtlC,IACApmB,EAAA,IAAAA,KAAAA,IAGAA,EAAAA,EAAAyK,KAAA,CAAAwD,EAAAlpB,KAAA,IAAAkpB,EAAA+7C,OAAAjlE,MAEA,KAAA+lE,SAAA9qD,EACA,KAAA6pD,KAAA7pD,CACA,EACAqrD,WAAAA,CAAAS,GAAA,GACA,aAAAtiC,EAAA,aAAA+uB,GAAA,MAEA,OAAAnyB,EAAA,KAAApmB,GAAAu4C,EAEAwS,EAAAvhC,EAAApD,EAEA,KAAA2kC,UAAAA,EAEAe,IAAA,KAAAjI,QAAA,IAAAj8D,MAAAoY,EAAAjd,QAAA+nB,KAAAigD,GACA,EACA,eAAAh5C,CAAA0tB,GAAA,GACA,cAAAsrB,EAAA,eAAAC,EAAA,aAAAzS,EAAA,SAAAuS,EAAA,UAAA/4C,EAAA,QAAAob,GAAA,KAEA,eAAAs9B,EAAA,SAAAG,EAAA,OAAAxkC,GAAAmyB,EAEAmT,EAAAZ,EAAA/nE,OAEA,GAAAqjC,GAAAslC,EAAA,OAEA,GAAAjsB,UACA,IAAAvqB,SAAAC,GAAAjQ,WAAAiQ,EAAAs1C,KACAt9B,IAAA,KAAAA,SAAA,OAGA,MAAA4+B,EAAA,WAAAnB,EAAA,EAAAxkC,EAEA,IAAAyjC,EAAAiB,EAAA5nE,MAAA8nE,GAOA,GANAnB,EAAA7kE,QAAA8lE,EAAA5nE,MAAA,EAAA8nE,IAEA,KAAAnB,KAAAA,EAAA3mE,MAAA,EAAAkjC,EAAA,GACA,KAAAy9B,QAAA,IAAAj8D,MAAA8jE,GAAA5gD,KAAAigD,SAEA,IAAA71C,SAAAC,GAAAjQ,WAAAiQ,EAAA,OACAgY,IAAA,KAAAA,QAAA,OAEA,KAAA02B,QAAA7pC,OAAA,EAAA+xC,KAAA,IAAAnkE,MAAAmkE,GAAAjhD,KAAA,IAEAkgD,GAAAe,EAEA,MAAAC,EAAAhB,EAAAU,EACAM,GAAA,IAAAhB,EAAAgB,GAEA,KAAAhB,eAAAA,EACA,KAAApR,iBAAA10C,WAAA6M,EAAA04C,EAAA,IACA,EACAS,aAAAA,GACA,uBAAAtR,EAAA,QAAAzsB,GAAA,KAEA,KAAAA,SAAAA,EAAA,UAEAysB,GAEAI,aAAAJ,EACA,GAEAwS,SAAAA,GACA,oBAAAlB,GAAA,KAEAA,GACA,GCtPgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACzQ,GACvBA,EAAIvB,UAAUuT,GAAmBjnE,KAAMinE,GACzC,CCLA,IAAIvsE,GAAS,WAAkB,IAAIw3D,EAAI32D,KAAK42D,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,uBAAuB,CAAEH,EAAIY,SAAUX,EAAG,MAAM,CAACA,EAAG,OAAO,CAACA,EAAG,iBAAiB,CAACI,MAAM,CAAC,GAAKL,EAAI4G,WAAW,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,SAAS5G,EAAIkD,GAAIlD,EAAIgV,mBAAmB,SAASjE,GAAI,OAAO9Q,EAAG,OAAO,CAAC/yD,IAAI6jE,EAAG,GAAG1Q,MAAM,CAAC,OAAS0Q,EAAG,GAAG,aAAaA,EAAG,KAAK,IAAG,IAAI,GAAI/Q,EAAIY,SAAUX,EAAG,OAAO,CAACI,MAAM,CAAC,OAAU,QAAOL,EAAI4G,cAAc,KAAQ,QAAO5G,EAAI4G,cAAc,EAAI5G,EAAIY,SAAS/mC,KAAK,GAAK,EAAI,EAAE,EAAImmC,EAAIY,SAAS/mC,KAAK,GAAK,EAAI,IAAI,CAACmmC,EAAIO,GAAG,IAAIP,EAAIQ,GAAGR,EAAI1mB,SAAS,OAAO0mB,EAAI8F,KAAO9F,EAAInhC,OAAuB,UAAdmhC,EAAInhC,MAAsNohC,EAAG,OAAO,CAACI,MAAM,CAAC,EAAI,IAAI,EAAI,IAAI,GAAmB,cAAdL,EAAInhC,MAAwB,GAAK,EAAE,GAAmB,cAAdmhC,EAAInhC,MAAwB,GAAK,EAAE,MAAQmhC,EAAIY,SAAS/mC,KAAK,GAAK,GAAG,OAASmmC,EAAIY,SAAS/mC,KAAK,GAAK,GAAG,OAAU,QAAOmmC,EAAI4G,iBAA/Y3G,EAAG,UAAU,CAACI,MAAM,CAAC,GAAKL,EAAIY,SAAS/mC,KAAK,GAAK,EAAI,EAAE,GAAKmmC,EAAIY,SAAS/mC,KAAK,GAAK,EAAI,EAAE,GAAKmmC,EAAIY,SAAS/mC,KAAK,GAAK,EAAI,EAAE,GAAKmmC,EAAIY,SAAS/mC,KAAK,GAAK,EAAI,EAAE,OAAU,QAAOmmC,EAAI4G,mBAAgP5G,EAAI8F,KAAK7F,EAAG,SAAS,CAACG,IAAI,mBAAmBnrD,MAAQ,kBAAiB+qD,EAAItsB,aACzlC,EACIjrC,GAAkB,GCgDtB,IACAqF,KAAA,mBACA4yD,MAAA,CACAhkC,OAAArwB,OACAs0D,QAAAA,KAAA,KAEAr4C,IAAAA,GACA,MAAAzV,EAAAwxD,IACA,OACAuC,WAAA,oBAAA/zD,IAEAwrB,cAAA,CAOA/V,KAAA,GAOAuW,MAAA,OAMAo2C,QAAA,EAMAC,WAAA,GAMAC,YAAA,GAOAlxC,OAAA,sBAMA0T,UAAA,YAGAkpB,aAAA,GAEAD,SAAA,KAEAoU,kBAAA,GAEA17B,QAAA,GAEA87B,MAAA,GAEA/6C,WAAA,EAEA,EACA8nC,SAAA,CACAzuB,MAAAA,GACA,YAAA7U,GAAA,KAAAgiC,aAEA,gBAAAhiC,EAAA,MAEA,SAAAA,EAAA,IAEA,cAAAA,EAAA,OAEA,GACA,EACAA,KAAAA,GACA,YAAAA,GAAA,KAAAgiC,aAEA,OAAAhiC,GAAA,MAGA,GAEAiiC,MAAA,CACApkC,MAAAA,GACA,eAAA4qC,EAAA,SAAA1G,GAAA,KAEAA,EAAA3jC,cAEA,KAAAm4C,MAAA,GAEA5nD,WAAA85C,EAAA,EACA,GAEAz1D,QAAA,CACAkvD,IAAAA,GACA,iBAAAC,EAAA,OAAAtkC,EAAA,SAAA4qC,GAAA,KAEAtG,IAEAtkC,GAEA4qC,GACA,EACAtG,UAAAA,GACA,YAAAG,GAAA,KAEA,KAAAP,SAAA,IAAApnC,EAAAA,WAAA2nC,EAAA,oBACA,EACAmG,QAAAA,GACA,kBAAArG,EAAA,sBAAAoU,EAAA,YAAAC,GAAA,KAEArU,IAEAoU,IAEAC,IAEA,cAAAC,EAAA,cAAAC,GAAA,KAEAD,IAEAC,GACA,EACAvU,WAAAA,GACA,aAAAvkC,EAAA,cAAA2B,GAAA,KAEA,KAAAwiC,cAAA7lB,EAAAA,EAAAA,YAAAld,EAAAA,EAAAA,WAAAO,GAAA,GAAA3B,EACA,EACA24C,qBAAAA,GACA,aAAApxC,GAAA,KAAA48B,aAEAvL,EAAArxB,EAAA54B,OAEAqmE,EAAA,KAAApc,EAAA,GAEA,KAAA0f,kBAAA/wC,EAAAlR,KAAA,CAAA7mB,EAAAmB,IAAA,CAAAqkE,EAAArkE,EAAAnB,IACA,EACAopE,WAAAA,GACA,WAAAhtD,EAAA,UAAAqvB,GAAA,KAAAkpB,aAEA,IAAAv4C,EAAAjd,OAGA,YAFA,KAAAiuC,QAAA,IAKA,MAAA+F,EAAA7vC,KAAAwI,OAAAsQ,GAEA,KAAAgxB,QAAA3B,EAAA1yB,QAAA,UAAAo6B,EACA,EACAk2B,OAAAA,GACA,eAAA3U,EAAA,cAAA6U,EAAA,aAAAC,EAAA,OAAAp2C,GAAA,KAEAujB,EAAA4yB,IACAxgE,EAAAygE,IAEA,KAAAN,MAAAvyB,EAAA9vB,KAAA8L,GAAA+hC,EAAAh3D,IAAA,CACAkE,KAAA,aACAywB,eAAA,IACAM,QACA5pB,QACAqqB,YAEA,EACAm2C,aAAAA,GACA,mBAAA5U,EAAA,SAAAD,EAAA,YAAA5Q,GAAA,MAEA,QAAAilB,EAAA,WAAAC,EAAA,KAAA5sD,GAAAu4C,GAEA3tD,EAAA/I,GAAAy2D,EAAA/mC,KAEA46B,EAAA,EAAAwgB,EAAA,EAEAU,EAAAziE,EAAA+hE,EAAA,EAEA,OAAA3sD,EAAAyK,KAAA1B,IACA,IAAA0D,EAAA,IAAA7kB,MAAAukD,GAAArhC,KAAA,GAAAL,KAAA,CAAAoC,EAAA7gB,KACA,MAAA6U,EAAAjW,EAAAyiE,EAAArhE,EAEAqtC,GAAA,EAAAtwB,EAAA,KAAAlnB,EAEA69B,EAAA1zB,EAAA,MAAAqtC,EAAAA,EAAAuzB,EAEA,OAAA/rD,EAAA6e,EAAA,IAKA,OAFAjT,EAAAA,EAAAhC,KAAAm0B,GAAA8I,EAAA9I,EAAA,GAAAyuB,EAAA,MAEA,CAAA5gD,SAAA,GAEA,EACAi7B,WAAAA,EAAA7mC,EAAA6e,IAAAkK,EAAAC,IACA,OAAAhpB,EAAA+oB,EAAAlK,EAAAmK,EACA,EACAujC,YAAAA,GACA,eAAA9U,EAAA,aAAAC,GAAA,KAEA12D,EAAAy2D,EAAA/mC,KAAA,GAEA,OACA+J,cAAAi9B,EAAA58B,OACAJ,aAAA,SACAC,eAAA,OAAA35B,GACA45B,aAAA,OACApB,QAAAk+B,EAAAsU,YACAx1C,UAAA,MAEA,EACAL,MAAAA,EAAAT,OAAA,OAAA9J,KAAA,IAAAvnB,EAAA,KAAAqsB,IACA,MAAA+7C,EAAA7gD,EAAA,GACA2/B,EAAA3/B,EAAAvpB,OAAA,MAEArB,EAAA0vB,EAAA,GAEArsB,EAAA08B,OAAAwqB,EAAA,GAAAvqD,GACAqD,EAAA08B,OAAA0rC,EAAA,GAAAzrE,GAEAqD,EAAAs5B,YAEAt5B,EAAA4lB,MACA,EACA,mBAAAoiD,CAAAK,EAAA,GACA,YAAAT,EAAA,SAAAxU,EAAA,UAAAvmC,GAAA,KAEA,GAAAA,EAAA,OAEA,KAAAA,WAAA,EAEA,MAAAnnB,EAAA0tD,EAAA/mC,KAAA,GAEAu7C,EAAAnhE,SAAAumB,IACAA,EAAA0F,KAAA,SAAAP,UAAA,QAEAnF,EAAAH,UAAA,SACAsF,UAAA,CAAAzsB,EAAA,KACA,YAGA0tD,EAAAtjC,kBAEA,KAAAjD,WAAA,EAEAumC,EAAA5mC,OAAA3uB,QAEA,KAAAmqE,cAAAK,EAAA,EACA,GAEAtU,OAAAA,GACA,WAAAR,GAAA,KAEAA,GACA,EACA+B,aAAAA,GACA,eAAAlC,GAAA,KAEAA,EAAA3jC,cAEA,KAAAm4C,MAAA,EACA,GC9TgP,MCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAAS,GAACrS,GACvBA,EAAIvB,UAAUsU,GAAehoE,KAAMgoE,GACrC,CCwFe,SAAS,GAAC/S,GACvBA,EAAIgT,IAAIC,IACRjT,EAAIgT,IAAIE,IAGRlT,EAAIgT,IAAIG,GACRnT,EAAIgT,IAAII,IACRpT,EAAIgT,IAAIK,IACRrT,EAAIgT,IAAIM,IACRtT,EAAIgT,IAAIO,IACRvT,EAAIgT,IAAIQ,IACRxT,EAAIgT,IAAIS,IACRzT,EAAIgT,IAAIU,IACR1T,EAAIgT,IAAIW,IACR3T,EAAIgT,IAAIY,GACR5T,EAAIgT,IAAIa,GACR7T,EAAIgT,IAAIc,IACR9T,EAAIgT,IAAIe,IAGR/T,EAAIgT,IAAIgB,IACRhU,EAAIgT,IAAIiB,IACRjU,EAAIgT,IAAIkB,IACRlU,EAAIgT,IAAImB,IACRnU,EAAIgT,IAAIoB,IACRpU,EAAIgT,IAAIqB,IACRrU,EAAIgT,IAAIsB,IACRtU,EAAIgT,IAAIuB,IACRvU,EAAIgT,IAAIwB,IACRxU,EAAIgT,IAAIyB,IACRzU,EAAIgT,IAAI0B,IACR1U,EAAIgT,IAAI2B,IAGR3U,EAAIgT,IAAI4B,IAER5U,EAAIgT,IAAI6B,GACR7U,EAAIgT,IAAI8B,IACR9U,EAAIgT,IAAI+B,IACR/U,EAAIgT,IAAIgC,IACRhV,EAAIgT,IAAIiC,IACRjV,EAAIgT,IAAIkC,IACRlV,EAAIgT,IAAImC,IACRnV,EAAIgT,IAAIzV,IACRyC,EAAIgT,IAAIoC,IACRpV,EAAIgT,IAAIqC,GACV,C,mCCzIA/rE,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQ,WAAaA,EAAQ8tE,gBAAkB9tE,EAAQ+tE,cAAgB/tE,EAAQguE,aAAehuE,EAAQiuE,iBAAmBjuE,EAAQkuE,eAAiBluE,EAAQmuE,cAAgBnuE,EAAQouE,cAAgBpuE,EAAQquE,YAAcruE,EAAQsuE,WAAatuE,EAAQuuE,eAAiBvuE,EAAQwuE,aAAexuE,EAAQyuE,YAAczuE,EAAQ0uE,eAAiB1uE,EAAQ2uE,aAAe3uE,EAAQ4uE,YAAc5uE,EAAQ6uE,eAAiB7uE,EAAQ8uE,aAAe9uE,EAAQ+uE,YAAc/uE,EAAQgvE,cAAgBhvE,EAAQivE,YAAcjvE,EAAQkvE,WAAalvE,EAAQmvE,cAAgBnvE,EAAQovE,YAAcpvE,EAAQqvE,WAAarvE,EAAQsvE,YAAS,EACtlB,IAAIA,EAAS,CAAC,CAAC,CAAC,EAAG,GAAI,GAAI,CAAC,IAAM,MAAQ,CAAC,CAAC,EAAG,GAAI,CAAC,IAAM,OAK1DtvE,EAAQsvE,OAASA,EACjB,IAAID,EAAa,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,IAAO,OAAS,CAAC,CAAC,EAAG,KACnFrvE,EAAQqvE,WAAaA,EACrB,IAAID,EAAc,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,CAAC,EAAG,KACnFpvE,EAAQovE,YAAcA,EACtB,IAAID,EAAgB,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,GAAK,IAAM,CAAC,GAAK,GAAI,CAAC,GAAK,IAAK,CAAC,CAAC,EAAG,KAKtEnvE,EAAQmvE,cAAgBA,EACxB,IAAID,EAAa,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,IAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,OAAS,CAAC,CAAC,EAAG,KACnFlvE,EAAQkvE,WAAaA,EACrB,IAAID,EAAc,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,IAAO,MAAQ,CAAC,CAAC,EAAG,KACnFjvE,EAAQivE,YAAcA,EACtB,IAAID,EAAgB,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,GAAK,IAAM,CAAC,GAAK,IAAM,CAAC,GAAK,KAAO,CAAC,CAAC,EAAG,KAK1EhvE,EAAQgvE,cAAgBA,EACxB,IAAID,EAAc,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,OAAS,CAAC,CAAC,EAAG,KACpF/uE,EAAQ+uE,YAAcA,EACtB,IAAID,EAAe,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,OAAS,CAAC,CAAC,EAAG,KACrF9uE,EAAQ8uE,aAAeA,EACvB,IAAID,EAAiB,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,GAAK,IAAM,CAAC,GAAK,GAAI,CAAC,GAAK,IAAK,CAAC,CAAC,EAAG,KAKvE7uE,EAAQ6uE,eAAiBA,EACzB,IAAID,EAAc,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,KAAO,KAAO,CAAC,KAAO,MAAQ,CAAC,MAAO,OAAS,CAAC,CAAC,EAAG,KACnF5uE,EAAQ4uE,YAAcA,EACtB,IAAID,EAAe,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,MAAQ,MAAQ,CAAC,CAAC,EAAG,KACrF3uE,EAAQ2uE,aAAeA,EACvB,IAAID,EAAiB,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,GAAK,IAAM,CAAC,GAAK,GAAI,CAAC,GAAK,IAAK,CAAC,CAAC,EAAG,KAKvE1uE,EAAQ0uE,eAAiBA,EACzB,IAAID,EAAc,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,KAAO,MAAQ,CAAC,KAAO,GAAI,CAAC,EAAG,OAAS,CAAC,CAAC,EAAG,KAC5EzuE,EAAQyuE,YAAcA,EACtB,IAAID,EAAe,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,KAAO,IAAM,CAAC,KAAO,IAAM,CAAC,MAAQ,OAAS,CAAC,CAAC,EAAG,KAClFxuE,EAAQwuE,aAAeA,EACvB,IAAID,EAAiB,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,GAAK,IAAM,CAAC,GAAK,GAAI,CAAC,GAAK,IAAK,CAAC,CAAC,EAAG,KAKvEvuE,EAAQuuE,eAAiBA,EACzB,IAAID,EAAa,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,KAAO,MAAQ,CAAC,IAAO,OAAQ,CAAC,KAAO,OAAS,CAAC,CAAC,EAAG,KACnFtuE,EAAQsuE,WAAaA,EACrB,IAAID,EAAc,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,KAAO,MAAQ,CAAC,KAAO,KAAO,CAAC,MAAQ,MAAQ,CAAC,CAAC,EAAG,KACnFruE,EAAQquE,YAAcA,EACtB,IAAID,EAAgB,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,GAAK,IAAM,CAAC,GAAK,KAAM,CAAC,IAAM,KAAO,CAAC,CAAC,EAAG,KAK3EpuE,EAAQouE,cAAgBA,EACxB,IAAID,EAAgB,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,OAAS,CAAC,CAAC,KAAO,OAAQ,CAAC,KAAO,OAAQ,CAAC,KAAO,OAAQ,CAAC,CAAC,IAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,OAAS,CAAC,CAAC,KAAO,OAAQ,CAAC,KAAO,OAAQ,CAAC,KAAO,OAAQ,CAAC,CAAC,EAAG,KAC1OnuE,EAAQmuE,cAAgBA,EACxB,IAAID,EAAiB,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,MAAQ,KAAO,CAAC,MAAQ,MAAQ,CAAC,MAAQ,OAAS,CAAC,CAAC,KAAO,MAAQ,CAAC,IAAO,KAAO,CAAC,KAAO,MAAQ,CAAC,CAAC,KAAQ,MAAQ,CAAC,KAAQ,MAAQ,CAAC,MAAQ,OAAS,CAAC,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,MAAQ,OAAS,CAAC,CAAC,EAAG,KACjPluE,EAAQkuE,eAAiBA,EACzB,IAAID,EAAmB,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,IAAO,KAAO,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,CAAC,KAAO,OAAQ,CAAC,KAAO,OAAQ,CAAC,KAAO,QAAS,CAAC,CAAC,GAAK,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,OAAS,CAAC,CAAC,MAAQ,MAAQ,CAAC,MAAQ,MAAQ,CAAC,MAAQ,OAAS,CAAC,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,OAAS,CAAC,CAAC,EAAG,KAKhSjuE,EAAQiuE,iBAAmBA,EAC3B,IAAID,EAAe,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,KAAO,GAAI,CAAC,KAAO,MAAQ,CAAC,KAAO,OAAS,CAAC,CAAC,KAAO,GAAI,CAAC,KAAO,MAAQ,CAAC,KAAO,OAAS,CAAC,CAAC,GAAO,GAAI,CAAC,KAAO,MAAQ,CAAC,KAAO,OAAS,CAAC,CAAC,EAAG,KAC7KhuE,EAAQguE,aAAeA,EACvB,IAAID,EAAgB,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,KAAO,MAAQ,CAAC,IAAO,MAAQ,CAAC,KAAO,OAAS,CAAC,CAAC,MAAQ,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,OAAS,CAAC,CAAC,IAAO,GAAI,CAAC,KAAO,MAAQ,CAAC,KAAO,OAAS,CAAC,CAAC,EAAG,KACvL/tE,EAAQ+tE,cAAgBA,EACxB,IAAID,EAAkB,CAAC,CAAC,CAAC,EAAG,IAAK,CAAC,CAAC,KAAO,GAAI,CAAC,IAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,OAAS,CAAC,CAAC,KAAO,MAAQ,CAAC,KAAO,IAAM,CAAC,IAAO,OAAS,CAAC,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,OAAS,CAAC,CAAC,KAAO,GAAI,CAAC,IAAO,IAAM,CAAC,KAAO,OAAS,CAAC,CAAC,MAAQ,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,OAAS,CAAC,CAAC,EAAG,KACtU9tE,EAAQ8tE,gBAAkBA,EAE1B,IAAIvhD,EAAW,IAAIsY,IAAI,CAAC,CAAC,SAAUyqC,GAAS,CAAC,aAAcD,GAAa,CAAC,cAAeD,GAAc,CAAC,gBAAiBD,GAAgB,CAAC,aAAcD,GAAa,CAAC,cAAeD,GAAc,CAAC,gBAAiBD,GAAgB,CAAC,cAAeD,GAAc,CAAC,eAAgBD,GAAe,CAAC,iBAAkBD,GAAiB,CAAC,cAAeD,GAAc,CAAC,eAAgBD,GAAe,CAAC,iBAAkBD,GAAiB,CAAC,cAAeD,GAAc,CAAC,eAAgBD,GAAe,CAAC,iBAAkBD,GAAiB,CAAC,aAAcD,GAAa,CAAC,cAAeD,GAAc,CAAC,gBAAiBD,GAAgB,CAAC,gBAAiBD,GAAgB,CAAC,iBAAkBD,GAAiB,CAAC,mBAAoBD,GAAmB,CAAC,eAAgBD,GAAe,CAAC,gBAAiBD,GAAgB,CAAC,kBAAmBD,KAE1yB9tE,EAAQ,WAAausB,C,qCCzFrB,IAAIhF,EAAyBD,EAAQ,OAErCxlB,OAAOC,eAAe/B,EAAS,aAAc,CAC3CY,OAAO,IAETZ,EAAQuvE,WAAaA,EACrBvvE,EAAQwvE,eAAiBA,EACzBxvE,EAAQ,gBAAa,EAErB,IAAI0nB,EAAkBH,EAAuBD,EAAQ,QAEjDoM,EAAWnM,EAAuBD,EAAQ,QAE1CmoD,EAAUloD,EAAuBD,EAAQ,QAEzCooD,EAAsB,SAY1B,SAASH,EAAWI,GAClB,IAAIC,EAAa/tE,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,KACjFguE,EAAWhuE,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,KAC/EiuE,EAAWjuE,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,GAC/EkuE,EAAOluE,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GAC1E,IAAKmuE,EAAYpuE,WAAM,EAAQC,WAAY,OAAO,EAElD,IAEE,IAAIomB,EAAcgoD,EAAeN,GAE7BO,EAAqBC,EAAsBloD,EAAa6nD,GAE5D,OAAKC,GAA4B,kBAAbF,EACbO,EAAyBR,EAAYC,EAAUK,GADJG,EAAmBT,EAAYC,EAAUK,EAE7F,CAAE,MAAOI,GAEP,OADAnkD,QAAQoG,KAAK,yCACN,CAACs9C,EACV,CACF,CAWA,SAASG,EAAYL,GACnB,IAAIC,EAAa/tE,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GAC5EguE,EAAWhuE,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GAC1EiuE,EAAWjuE,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,GAEnF,IAAK8tE,IAAsB,IAAfC,IAAqC,IAAbC,IAAuBC,EAEzD,OADA3jD,QAAQxW,MAAM,oCACP,EAGT,IAAI,EAAI+d,EAAS,YAAYk8C,MAAgB,EAAIl8C,EAAS,YAAYm8C,GAEpE,OADA1jD,QAAQxW,MAAM,2CACP,EAGT,IAAI46D,GAAY,EAAI78C,EAAS,YAAYm8C,GAEzC,MAAkB,WAAdU,GAAwC,YAAdA,GAA4BZ,EAAI7uE,QAKzD2uE,EAAQ,WAAWtsE,IAAIwsE,IAAUA,aAAehqE,OACnDwmB,QAAQoG,KAAK,wEAGR,IARLpG,QAAQxW,MAAM,gDACP,EAQX,CAQA,SAASs6D,EAAeN,GACtB,IAAI1nD,EAAc,GAUlB,OAPEA,EADEwnD,EAAQ,WAAWtsE,IAAIwsE,GACXF,EAAQ,WAAWztE,IAAI2tE,GAC5BA,aAAehqE,MACVgqE,EAEAF,EAAQ,WAAWztE,IAAI0tE,GAGhCznD,CACT,CASA,SAASkoD,EAAsBloD,EAAa6nD,GAC1C,IAAIU,EAAS,GAAKV,EAAW,GACzBW,EAAS,IAAI9qE,MAAMmqE,GAAUjnD,KAAK,GAAGL,KAAI,SAAUW,EAAGrmB,GACxD,OAAOA,EAAI0tE,CACb,IACIE,EAAaD,EAAOjoD,KAAI,SAAUW,GACpC,OAAOwnD,EAAmB1oD,EAAakB,EACzC,IACA,OAAOunD,CACT,CASA,SAASC,EAAmB1oD,EAAakB,GACvC,IAAIynD,EAAoBC,EAAyB5oD,EAAakB,GAC1D2nD,EAAoBC,EAA4BH,EAAmBznD,GACvE,OAAO6nD,EAAqBJ,EAAmBE,EACjD,CASA,SAASD,EAAyB5oD,EAAakB,GAC7C,IAAI8nD,EAAYhpD,EAAYnnB,OAAS,EACjCk0D,EAAQ,GACRvX,EAAM,GACVx1B,EAAY4P,WAAU,SAAUvT,EAAMxhB,GACpC,GAAIA,IAAMmuE,EAAV,CACAjc,EAAQ1wC,EACRm5B,EAAMx1B,EAAYnlB,EAAI,GACtB,IAAIouE,EAAoBlc,EAAM,GAAG,GAC7Bmc,EAAiB1zB,EAAI,GAAG,GAC5B,OAAOt0B,GAAK+nD,GAAqB/nD,EAAIgoD,CALV,CAM7B,IACA,IAAIC,EAAKpc,EAAM,GACXpvB,EAAKovB,EAAM,IAAMA,EAAM,GACvBnvB,EAAK4X,EAAI,IAAMA,EAAI,GACnB4zB,EAAK5zB,EAAI,GACb,MAAO,CAAC2zB,EAAIxrC,EAAIC,EAAIwrC,EACtB,CASA,SAASN,EAA4B9oD,EAAakB,GAChD,IAAImoD,EAAWrpD,EAAY,GAAG,GAC1BspD,EAAStpD,EAAY,GAAG,GACxBupD,EAASD,EAASD,EAClBd,EAASrnD,EAAImoD,EACjB,OAAOd,EAASgB,CAClB,CASA,SAASR,EAAqBtnD,EAAMP,GAClC,IAAIQ,GAAQ,EAAIjC,EAAgB,YAAYgC,EAAM,GAC9C+nD,GAAS,EAAI/pD,EAAgB,YAAYiC,EAAM,GAAI,GACnDynD,EAAKK,EAAO,GACZC,GAAU,EAAIhqD,EAAgB,YAAYiC,EAAM,GAAI,GACpDic,EAAK8rC,EAAQ,GACbC,GAAU,EAAIjqD,EAAgB,YAAYiC,EAAM,GAAI,GACpDkc,EAAK8rC,EAAQ,GACbC,GAAU,EAAIlqD,EAAgB,YAAYiC,EAAM,GAAI,GACpD0nD,EAAKO,EAAQ,GAEb/pD,EAAM5iB,KAAK4iB,IACX2oD,EAAS,EAAIrnD,EACb0oD,EAAUT,EAAKvpD,EAAI2oD,EAAQ,GAC3BsB,EAAU,EAAIlsC,EAAKzc,EAAItB,EAAI2oD,EAAQ,GACnCuB,EAAU,EAAIlsC,EAAKhe,EAAIsB,EAAG,GAAKqnD,EAC/BwB,EAAUX,EAAKxpD,EAAIsB,EAAG,GAC1B,OAAO,GAAK0oD,EAAUC,EAAUC,EAAUC,EAC5C,CAUA,SAAS3B,EAAmBrb,EAAOvX,EAAKizB,GACtC,IAAIH,EAAY,SAGhB,MAFqB,kBAAVvb,IAAoBub,EAAY,UACvCvb,aAAiBrvD,QAAO4qE,EAAY,SACtB,WAAdA,EAA+B0B,EAAyBjd,EAAOvX,EAAKizB,GACtD,UAAdH,EAA8B2B,EAAwBld,EAAOvX,EAAKizB,GACpD,WAAdH,EAA+B4B,EAAyBnd,EAAOvX,EAAKizB,GACjEA,EAAWloD,KAAI,SAAUW,GAC9B,OAAOs0B,CACT,GACF,CAUA,SAASw0B,EAAyBjd,EAAOvX,EAAKizB,GAC5C,IAAIxqC,EAAQuX,EAAMuX,EAClB,OAAO0b,EAAWloD,KAAI,SAAUpb,GAC9B,OAAO4nD,EAAQ9uB,EAAQ94B,CACzB,GACF,CAUA,SAAS8kE,EAAwBld,EAAOvX,EAAKizB,GAC3C,IAAIxqC,EAAQuX,EAAIj1B,KAAI,SAAU1B,EAAGhkB,GAC/B,MAAiB,kBAANgkB,GACJA,EAAIkuC,EAAMlyD,EACnB,IACA,OAAO4tE,EAAWloD,KAAI,SAAUpb,GAC9B,OAAO84B,EAAM1d,KAAI,SAAU1B,EAAGhkB,GAC5B,OAAU,IAANgkB,EAAoB22B,EAAI36C,GACrBkyD,EAAMlyD,GAAKgkB,EAAI1Z,CACxB,GACF,GACF,CAUA,SAAS+kE,EAAyBnd,EAAOvX,EAAKizB,GAC5C,IAAI7pE,EAAO/E,OAAO+E,KAAK42C,GACnB20B,EAAavrE,EAAK2hB,KAAI,SAAU7e,GAClC,OAAOqrD,EAAMrrD,EACf,IACI0oE,EAAWxrE,EAAK2hB,KAAI,SAAU7e,GAChC,OAAO8zC,EAAI9zC,EACb,IACI2oE,EAAaJ,EAAwBE,EAAYC,EAAU3B,GAC/D,OAAO4B,EAAW9pD,KAAI,SAAUlE,GAC9B,IAAIiuD,EAAY,CAAC,EAIjB,OAHAjuD,EAAK5a,SAAQ,SAAUod,EAAGhkB,GACxB,OAAOyvE,EAAU1rE,EAAK/D,IAAMgkB,CAC9B,IACOyrD,CACT,GACF,CAUA,SAASnC,EAAyBpb,EAAOvX,EAAKizB,GAC5C,IAAIx7D,EAAQm7D,EAAmBrb,EAAOvX,EAAKizB,GAEvCvlD,EAAQ,SAAexoB,GACzB,IAAI6vE,EAAQxd,EAAMryD,GACd8vE,EAAQh1B,EAAI96C,GAChB,GAAwC,YAApC,EAAI+wB,EAAS,YAAY++C,GAAqB,MAAO,WACzD,IAAI10D,EAAOqyD,EAAyBoC,EAAOC,EAAO/B,GAClDx7D,EAAMxL,SAAQ,SAAUgpE,EAAI5vE,GAC1B,OAAO4vE,EAAG/vE,GAAOob,EAAKjb,EACxB,GACF,EAEA,IAAK,IAAIH,KAAO86C,EACHtyB,EAAMxoB,GAKnB,OAAOuS,CACT,CASA,SAASs6D,EAAe7sE,EAAK8/B,GACtB9/B,GAAQ8/B,EAKbgtC,EAAQ,WAAWn+D,IAAI3O,EAAK8/B,GAJ1BtW,QAAQxW,MAAM,qCAKlB,CAEA,IAAI4W,EAAWgjD,EACfvvE,EAAQ,WAAausB,C,sHC9UjBomD,EAAe,WAERC,EAAU,WAAoB,EAelC,SAASC,IACd,IAAK,IAAIC,EAAOjxE,UAAUf,OAAQiR,EAAOpM,MAAMmtE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3EhhE,EAAKghE,GAAQlxE,UAAUkxE,GAGzB,IAAIjwE,EAAI,EACJJ,EAAIqP,EAAK,GACTuE,EAAMvE,EAAKjR,OACf,GAAiB,oBAAN4B,EACT,OAAOA,EAAEd,MAAM,KAAMmQ,EAAK9Q,MAAM,IAElC,GAAiB,kBAANyB,EAAgB,CAwBzB,IAvBA,IAAIswE,EAAM3lE,OAAO3K,GAAGgY,QAAQi4D,GAAc,SAAU/zD,GAClD,GAAU,OAANA,EACF,MAAO,IAET,GAAI9b,GAAKwT,EACP,OAAOsI,EAET,OAAQA,GACN,IAAK,KACH,OAAOvR,OAAO0E,EAAKjP,MACrB,IAAK,KACH,OAAOu4D,OAAOtpD,EAAKjP,MACrB,IAAK,KACH,IACE,OAAO2M,KAAKE,UAAUoC,EAAKjP,KAC7B,CAAE,MAAO23D,GACP,MAAO,YACT,CACA,MACF,QACE,OAAO77C,EAEb,IACS/Y,EAAMkM,EAAKjP,GAAIA,EAAIwT,EAAKzQ,EAAMkM,IAAOjP,GAC5CkwE,GAAO,IAAMntE,EAEf,OAAOmtE,CACT,CACA,OAAOtwE,CACT,CAEA,SAASuwE,EAAmB3vE,GAC1B,MAAgB,WAATA,GAA8B,QAATA,GAA2B,QAATA,GAA2B,UAATA,GAA6B,YAATA,CACtF,CAEO,SAAS4vE,EAAatyE,EAAO0C,GAClC,YAAc9B,IAAVZ,GAAiC,OAAVA,MAGd,UAAT0C,IAAoBqC,MAAMC,QAAQhF,IAAWA,EAAME,YAGnDmyE,EAAmB3vE,IAA0B,kBAAV1C,GAAuBA,GAIhE,CAMA,SAASuyE,EAAmBC,EAAK72D,EAAMoE,GACrC,IAAI0yD,EAAU,GACVroD,EAAQ,EACRsoD,EAAYF,EAAItyE,OAEpB,SAASumB,EAAMksD,GACbF,EAAQtwE,KAAKnB,MAAMyxE,EAASE,GAC5BvoD,IACIA,IAAUsoD,GACZ3yD,EAAS0yD,EAEb,CAEAD,EAAI1pE,SAAQ,SAAUjI,GACpB8a,EAAK9a,EAAG4lB,EACV,GACF,CAEA,SAASmsD,EAAiBJ,EAAK72D,EAAMoE,GACnC,IAAI5f,EAAQ,EACRuyE,EAAYF,EAAItyE,OAEpB,SAASsF,EAAKmtE,GACZ,GAAIA,GAAUA,EAAOzyE,OACnB6f,EAAS4yD,OADX,CAIA,IAAIE,EAAW1yE,EACfA,GAAgB,EACZ0yE,EAAWH,EACb/2D,EAAK62D,EAAIK,GAAWrtE,GAEpBua,EAAS,GANX,CAQF,CAEAva,EAAK,GACP,CAEA,SAASstE,EAAcC,GACrB,IAAIC,EAAM,GAIV,OAHA9xE,OAAO+E,KAAK8sE,GAAQjqE,SAAQ,SAAUC,GACpCiqE,EAAI7wE,KAAKnB,MAAMgyE,EAAKD,EAAOhqE,GAC7B,IACOiqE,CACT,CAEO,SAASC,EAASF,EAAQ9pC,EAAQttB,EAAMoE,GAC7C,GAAIkpB,EAAOiqC,MAAO,CAChB,IAAIC,EAAaL,EAAcC,GAC/B,OAAOH,EAAiBO,EAAYx3D,EAAMoE,EAC5C,CACA,IAAIqzD,EAAcnqC,EAAOmqC,aAAe,IACpB,IAAhBA,IACFA,EAAclyE,OAAO+E,KAAK8sE,IAE5B,IAAIM,EAAanyE,OAAO+E,KAAK8sE,GACzBO,EAAeD,EAAWnzE,OAC1BkqB,EAAQ,EACRqoD,EAAU,GACVjtE,EAAO,SAAcmtE,GACvBF,EAAQtwE,KAAKnB,MAAMyxE,EAASE,GAC5BvoD,IACIA,IAAUkpD,GACZvzD,EAAS0yD,EAEb,EACAY,EAAWvqE,SAAQ,SAAU/G,GAC3B,IAAIywE,EAAMO,EAAOhxE,IACiB,IAA9BqxE,EAAY79D,QAAQxT,GACtB6wE,EAAiBJ,EAAK72D,EAAMnW,GAE5B+sE,EAAmBC,EAAK72D,EAAMnW,EAElC,GACF,CAEO,SAAS+tE,EAAgBC,GAC9B,OAAO,SAAUC,GACf,OAAIA,GAAMA,EAAGzuD,SACXyuD,EAAGC,MAAQD,EAAGC,OAASF,EAAKG,UACrBF,GAEF,CACLzuD,QAASyuD,EACTC,MAAOD,EAAGC,OAASF,EAAKG,UAE5B,CACF,CAEO,SAAS9jC,EAAUjsC,EAAQhB,GAChC,GAAIA,EACF,IAAK,IAAI4J,KAAK5J,EACZ,GAAIA,EAAO4B,eAAegI,GAAI,CAC5B,IAAIxM,EAAQ4C,EAAO4J,GACmD,YAAhD,qBAAVxM,EAAwB,aAAc4zE,EAAAA,EAAAA,GAAQ5zE,KAA+C,YAAvB4zE,EAAAA,EAAAA,GAAQhwE,EAAO4I,IAC/F5I,EAAO4I,IAAKqnE,EAAAA,EAAAA,GAAS,CAAC,EAAGjwE,EAAO4I,GAAIxM,GAEpC4D,EAAO4I,GAAKxM,CAEhB,CAGJ,OAAO4D,CACT,CC9KA,SAASqf,EAASuwD,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,EAAS6E,IAClD8wE,EAAKvwD,UAAcrgB,EAAO4B,eAAegvE,EAAKE,SAAUI,EAAkB9zE,EAAO0C,GAAQ8wE,EAAK9wE,OAChGiwE,EAAOxwE,KAAK2xE,EAAYj2E,EAAQk2E,SAAS9wD,SAAUuwD,EAAKG,WAE5D,CAEA,QCNA,SAASK,EAAWR,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,IAC3C,QAAQwb,KAAKrZ,IAAoB,KAAVA,IACzB2yE,EAAOxwE,KAAK2xE,EAAYj2E,EAAQk2E,SAASC,WAAYR,EAAKG,WAE9D,CAEA,QCbIM,EAAU,CAEZC,MAAO,yJACPhS,IAAK,IAAIiS,OAAO,iZAAkZ,KAClaC,IAAK,kCAGHC,EAAQ,CACV/xD,QAAS,SAAiBtiB,GACxB,OAAOq0E,EAAM1xD,OAAO3iB,IAAUojC,SAASpjC,EAAO,MAAQA,CACxD,EACAs0E,MAAO,SAAet0E,GACpB,OAAOq0E,EAAM1xD,OAAO3iB,KAAWq0E,EAAM/xD,QAAQtiB,EAC/C,EACA8zD,MAAO,SAAe9zD,GACpB,OAAO+E,MAAMC,QAAQhF,EACvB,EACAu0E,OAAQ,SAAgBv0E,GACtB,GAAIA,aAAiBm0E,OACnB,OAAO,EAET,IACE,QAAS,IAAIA,OAAOn0E,EACtB,CAAE,MAAOmE,GACP,OAAO,CACT,CACF,EACAqwE,KAAM,SAAcx0E,GAClB,MAAgC,oBAAlBA,EAAMy0E,SAAoD,oBAAnBz0E,EAAM00E,UAAoD,oBAAlB10E,EAAM20E,OACrG,EACAhyD,OAAQ,SAAgB3iB,GACtB,OAAIiN,MAAMjN,IAGc,kBAAVA,CAChB,EACA2E,OAAQ,SAAgB3E,GACtB,MAAyE,YAAhD,qBAAVA,EAAwB,aAAc4zE,EAAAA,EAAAA,GAAQ5zE,MAAyBq0E,EAAMvgB,MAAM9zD,EACpG,EACAsb,OAAQ,SAAgBtb,GACtB,MAAwB,oBAAVA,CAChB,EACAk0E,MAAO,SAAel0E,GACpB,MAAwB,kBAAVA,KAAwBA,EAAMwZ,MAAMy6D,EAAQC,QAAUl0E,EAAME,OAAS,GACrF,EACAgiE,IAAK,SAAaliE,GAChB,MAAwB,kBAAVA,KAAwBA,EAAMwZ,MAAMy6D,EAAQ/R,IAC5D,EACAkS,IAAK,SAAap0E,GAChB,MAAwB,kBAAVA,KAAwBA,EAAMwZ,MAAMy6D,EAAQG,IAC5D,GAcF,SAAS1xE,EAAK8wE,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GACzC,GAAI21E,EAAKvwD,eAAsBriB,IAAVZ,EACnBijB,EAASuwD,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,OADxC,CAIA,IAAI+2E,EAAS,CAAC,UAAW,QAAS,QAAS,SAAU,SAAU,SAAU,QAAS,SAAU,OAAQ,MAAO,OACvGC,EAAWrB,EAAK9wE,KAChBkyE,EAAOr/D,QAAQs/D,IAAa,EACzBR,EAAMQ,GAAU70E,IACnB2yE,EAAOxwE,KAAK2xE,EAAYj2E,EAAQk2E,SAASM,MAAMQ,GAAWrB,EAAKG,UAAWH,EAAK9wE,OAGxEmyE,IAA8B,qBAAV70E,EAAwB,aAAc4zE,EAAAA,EAAAA,GAAQ5zE,MAAYwzE,EAAK9wE,MAC5FiwE,EAAOxwE,KAAK2xE,EAAYj2E,EAAQk2E,SAASM,MAAMQ,GAAWrB,EAAKG,UAAWH,EAAK9wE,MATjF,CAWF,CAEA,QC1EA,SAASoyE,EAAMtB,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GAC1C,IAAI6X,EAA0B,kBAAb89D,EAAK99D,IAClB5I,EAA0B,kBAAb0mE,EAAK1mE,IAClBD,EAA0B,kBAAb2mE,EAAK3mE,IAElBkoE,EAAW,kCACX7nE,EAAMlN,EACN+B,EAAM,KACN2nB,EAAuB,kBAAV1pB,EACboyE,EAAuB,kBAAVpyE,EACbwyE,EAAMztE,MAAMC,QAAQhF,GAWxB,GAVI0pB,EACF3nB,EAAM,SACGqwE,EACTrwE,EAAM,SACGywE,IACTzwE,EAAM,UAKHA,EACH,OAAO,EAELywE,IACFtlE,EAAMlN,EAAME,QAEVkyE,IAEFllE,EAAMlN,EAAM8Z,QAAQi7D,EAAU,KAAK70E,QAEjCwV,EACExI,IAAQsmE,EAAK99D,KACfi9D,EAAOxwE,KAAK2xE,EAAYj2E,EAAQk2E,SAAShyE,GAAK2T,IAAK89D,EAAKG,UAAWH,EAAK99D,MAEjE5I,IAAQD,GAAOK,EAAMsmE,EAAK1mE,IACnC6lE,EAAOxwE,KAAK2xE,EAAYj2E,EAAQk2E,SAAShyE,GAAK+K,IAAK0mE,EAAKG,UAAWH,EAAK1mE,MAC/DD,IAAQC,GAAOI,EAAMsmE,EAAK3mE,IACnC8lE,EAAOxwE,KAAK2xE,EAAYj2E,EAAQk2E,SAAShyE,GAAK8K,IAAK2mE,EAAKG,UAAWH,EAAK3mE,MAC/DC,GAAOD,IAAQK,EAAMsmE,EAAK1mE,KAAOI,EAAMsmE,EAAK3mE,MACrD8lE,EAAOxwE,KAAK2xE,EAAYj2E,EAAQk2E,SAAShyE,GAAK+yE,MAAOtB,EAAKG,UAAWH,EAAK1mE,IAAK0mE,EAAK3mE,KAExF,CAEA,QCxDImoE,EAAO,OAaX,SAASxpE,EAAWgoE,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GAC/C21E,EAAKwB,GAAQjwE,MAAMC,QAAQwuE,EAAKwB,IAASxB,EAAKwB,GAAQ,IACnB,IAA/BxB,EAAKwB,GAAMz/D,QAAQvV,IACrB2yE,EAAOxwE,KAAK2xE,EAAYj2E,EAAQk2E,SAASiB,GAAOxB,EAAKG,UAAWH,EAAKwB,GAAMhsE,KAAK,OAEpF,CAEA,QCRA,SAASirE,EAAQT,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GAC5C,GAAI21E,EAAKS,QACP,GAAIT,EAAKS,mBAAmBE,OAI1BX,EAAKS,QAAQ5D,UAAY,EACpBmD,EAAKS,QAAQ56D,KAAKrZ,IACrB2yE,EAAOxwE,KAAK2xE,EAAYj2E,EAAQk2E,SAASE,QAAQgB,SAAUzB,EAAKG,UAAW3zE,EAAOwzE,EAAKS,eAEpF,GAA4B,kBAAjBT,EAAKS,QAAsB,CAC3C,IAAIiB,EAAW,IAAIf,OAAOX,EAAKS,SAC1BiB,EAAS77D,KAAKrZ,IACjB2yE,EAAOxwE,KAAK2xE,EAAYj2E,EAAQk2E,SAASE,QAAQgB,SAAUzB,EAAKG,UAAW3zE,EAAOwzE,EAAKS,SAE3F,CAEJ,CAEA,QCzBA,GACEhxD,SAAUA,EACV+wD,WAAYA,EACZtxE,KAAMA,EACNoyE,MAAOA,EACP,KAAQK,EACRlB,QAASA,GCAX,SAAS12D,EAAOi2D,EAAMxzE,EAAO+f,EAAUnd,EAAQ/E,GAC7C,IAAI80E,EAAS,GACTyC,EAAW5B,EAAKvwD,WAAauwD,EAAKvwD,UAAYrgB,EAAO4B,eAAegvE,EAAKE,OAC7E,GAAI0B,EAAU,CACZ,GAAI9C,EAAatyE,EAAO,YAAcwzE,EAAKvwD,SACzC,OAAOlD,IAETs1D,EAAMpyD,SAASuwD,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,EAAS,UAChDy0E,EAAatyE,EAAO,YACvBq1E,EAAM3yE,KAAK8wE,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GACxCw3E,EAAMP,MAAMtB,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GACzCw3E,EAAMpB,QAAQT,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,IACnB,IAApB21E,EAAKQ,YACPqB,EAAMrB,WAAWR,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GAGpD,CACAkiB,EAAS4yD,EACX,CAEA,QCpBA,SAASr3D,EAAOk4D,EAAMxzE,EAAO+f,EAAUnd,EAAQ/E,GAC7C,IAAI80E,EAAS,GACTyC,EAAW5B,EAAKvwD,WAAauwD,EAAKvwD,UAAYrgB,EAAO4B,eAAegvE,EAAKE,OAC7E,GAAI0B,EAAU,CACZ,GAAI9C,EAAatyE,KAAWwzE,EAAKvwD,SAC/B,OAAOlD,IAETs1D,EAAMpyD,SAASuwD,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,QAC9B+C,IAAVZ,GACFq1E,EAAM3yE,KAAK8wE,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,EAE5C,CACAkiB,EAAS4yD,EACX,CAEA,QCfA,SAAShwD,EAAO6wD,EAAMxzE,EAAO+f,EAAUnd,EAAQ/E,GAC7C,IAAI80E,EAAS,GACTyC,EAAW5B,EAAKvwD,WAAauwD,EAAKvwD,UAAYrgB,EAAO4B,eAAegvE,EAAKE,OAC7E,GAAI0B,EAAU,CACZ,GAAI9C,EAAatyE,KAAWwzE,EAAKvwD,SAC/B,OAAOlD,IAETs1D,EAAMpyD,SAASuwD,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,QAC9B+C,IAAVZ,IACFq1E,EAAM3yE,KAAK8wE,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GACxCw3E,EAAMP,MAAMtB,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GAE7C,CACAkiB,EAAS4yD,EACX,CAEA,QChBA,SAAS2C,EAAQ9B,EAAMxzE,EAAO+f,EAAUnd,EAAQ/E,GAC9C,IAAI80E,EAAS,GACTyC,EAAW5B,EAAKvwD,WAAauwD,EAAKvwD,UAAYrgB,EAAO4B,eAAegvE,EAAKE,OAC7E,GAAI0B,EAAU,CACZ,GAAI9C,EAAatyE,KAAWwzE,EAAKvwD,SAC/B,OAAOlD,IAETs1D,EAAMpyD,SAASuwD,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,QAC9B+C,IAAVZ,GACFq1E,EAAM3yE,KAAK8wE,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,EAE5C,CACAkiB,EAAS4yD,EACX,CAEA,QCfA,SAAS4B,EAAOf,EAAMxzE,EAAO+f,EAAUnd,EAAQ/E,GAC7C,IAAI80E,EAAS,GACTyC,EAAW5B,EAAKvwD,WAAauwD,EAAKvwD,UAAYrgB,EAAO4B,eAAegvE,EAAKE,OAC7E,GAAI0B,EAAU,CACZ,GAAI9C,EAAatyE,KAAWwzE,EAAKvwD,SAC/B,OAAOlD,IAETs1D,EAAMpyD,SAASuwD,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GACvCy0E,EAAatyE,IAChBq1E,EAAM3yE,KAAK8wE,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,EAE5C,CACAkiB,EAAS4yD,EACX,CAEA,QCfA,SAASrwD,EAAQkxD,EAAMxzE,EAAO+f,EAAUnd,EAAQ/E,GAC9C,IAAI80E,EAAS,GACTyC,EAAW5B,EAAKvwD,WAAauwD,EAAKvwD,UAAYrgB,EAAO4B,eAAegvE,EAAKE,OAC7E,GAAI0B,EAAU,CACZ,GAAI9C,EAAatyE,KAAWwzE,EAAKvwD,SAC/B,OAAOlD,IAETs1D,EAAMpyD,SAASuwD,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,QAC9B+C,IAAVZ,IACFq1E,EAAM3yE,KAAK8wE,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GACxCw3E,EAAMP,MAAMtB,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GAE7C,CACAkiB,EAAS4yD,EACX,CAEA,QChBA,SAAS4C,EAAQ/B,EAAMxzE,EAAO+f,EAAUnd,EAAQ/E,GAC9C,IAAI80E,EAAS,GACTyC,EAAW5B,EAAKvwD,WAAauwD,EAAKvwD,UAAYrgB,EAAO4B,eAAegvE,EAAKE,OAC7E,GAAI0B,EAAU,CACZ,GAAI9C,EAAatyE,KAAWwzE,EAAKvwD,SAC/B,OAAOlD,IAETs1D,EAAMpyD,SAASuwD,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,QAC9B+C,IAAVZ,IACFq1E,EAAM3yE,KAAK8wE,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GACxCw3E,EAAMP,MAAMtB,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GAE7C,CACAkiB,EAAS4yD,EACX,CAEA,QCjBA,SAAS7e,EAAM0f,EAAMxzE,EAAO+f,EAAUnd,EAAQ/E,GAC5C,IAAI80E,EAAS,GACTyC,EAAW5B,EAAKvwD,WAAauwD,EAAKvwD,UAAYrgB,EAAO4B,eAAegvE,EAAKE,OAC7E,GAAI0B,EAAU,CACZ,GAAI9C,EAAatyE,EAAO,WAAawzE,EAAKvwD,SACxC,OAAOlD,IAETs1D,EAAMpyD,SAASuwD,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,EAAS,SAChDy0E,EAAatyE,EAAO,WACvBq1E,EAAM3yE,KAAK8wE,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GACxCw3E,EAAMP,MAAMtB,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GAE7C,CACAkiB,EAAS4yD,EACX,CAEA,QCfA,SAAShuE,EAAO6uE,EAAMxzE,EAAO+f,EAAUnd,EAAQ/E,GAC7C,IAAI80E,EAAS,GACTyC,EAAW5B,EAAKvwD,WAAauwD,EAAKvwD,UAAYrgB,EAAO4B,eAAegvE,EAAKE,OAC7E,GAAI0B,EAAU,CACZ,GAAI9C,EAAatyE,KAAWwzE,EAAKvwD,SAC/B,OAAOlD,IAETs1D,EAAMpyD,SAASuwD,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,QAC9B+C,IAAVZ,GACFq1E,EAAM3yE,KAAK8wE,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,EAE5C,CACAkiB,EAAS4yD,EACX,CAEA,QC1BIqC,EAAO,OAYX,SAASxpE,EAAWgoE,EAAMxzE,EAAO+f,EAAUnd,EAAQ/E,GACjD,IAAI80E,EAAS,GACTyC,EAAW5B,EAAKvwD,WAAauwD,EAAKvwD,UAAYrgB,EAAO4B,eAAegvE,EAAKE,OAC7E,GAAI0B,EAAU,CACZ,GAAI9C,EAAatyE,KAAWwzE,EAAKvwD,SAC/B,OAAOlD,IAETs1D,EAAMpyD,SAASuwD,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GACxCmC,GACFq1E,EAAML,GAAMxB,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,EAE7C,CACAkiB,EAAS4yD,EACX,CAEA,QCbA,SAASsB,EAAQT,EAAMxzE,EAAO+f,EAAUnd,EAAQ/E,GAC9C,IAAI80E,EAAS,GACTyC,EAAW5B,EAAKvwD,WAAauwD,EAAKvwD,UAAYrgB,EAAO4B,eAAegvE,EAAKE,OAC7E,GAAI0B,EAAU,CACZ,GAAI9C,EAAatyE,EAAO,YAAcwzE,EAAKvwD,SACzC,OAAOlD,IAETs1D,EAAMpyD,SAASuwD,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,GACvCy0E,EAAatyE,EAAO,WACvBq1E,EAAMpB,QAAQT,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,EAE/C,CACAkiB,EAAS4yD,EACX,CAEA,SC5BA,SAAS6B,GAAKhB,EAAMxzE,EAAO+f,EAAUnd,EAAQ/E,GAE3C,IAAI80E,EAAS,GACTyC,EAAW5B,EAAKvwD,WAAauwD,EAAKvwD,UAAYrgB,EAAO4B,eAAegvE,EAAKE,OAE7E,GAAI0B,EAAU,CACZ,GAAI9C,EAAatyE,KAAWwzE,EAAKvwD,SAC/B,OAAOlD,IAGT,GADAs1D,EAAMpyD,SAASuwD,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,IACvCy0E,EAAatyE,GAAQ,CACxB,IAAIw1E,OAAa,EAGfA,EADmB,kBAAVx1E,EACI,IAAIuyB,KAAKvyB,GAETA,EAGfq1E,EAAM3yE,KAAK8wE,EAAMgC,EAAY5yE,EAAQ+vE,EAAQ90E,GACzC23E,GACFH,EAAMP,MAAMtB,EAAMgC,EAAWf,UAAW7xE,EAAQ+vE,EAAQ90E,EAE5D,CACF,CACAkiB,EAAS4yD,EACX,CAEA,UC5BA,SAAS1vD,GAASuwD,EAAMxzE,EAAO+f,EAAUnd,EAAQ/E,GAC/C,IAAI80E,EAAS,GACTjwE,EAAOqC,MAAMC,QAAQhF,GAAS,QAA2B,qBAAVA,EAAwB,aAAc4zE,EAAAA,EAAAA,GAAQ5zE,GACjGq1E,EAAMpyD,SAASuwD,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,EAAS6E,GACrDqd,EAAS4yD,EACX,CAEA,UCPA,SAASjwE,GAAK8wE,EAAMxzE,EAAO+f,EAAUnd,EAAQ/E,GAC3C,IAAIg3E,EAAWrB,EAAK9wE,KAChBiwE,EAAS,GACTyC,EAAW5B,EAAKvwD,WAAauwD,EAAKvwD,UAAYrgB,EAAO4B,eAAegvE,EAAKE,OAC7E,GAAI0B,EAAU,CACZ,GAAI9C,EAAatyE,EAAO60E,KAAcrB,EAAKvwD,SACzC,OAAOlD,IAETs1D,EAAMpyD,SAASuwD,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,EAASg3E,GAChDvC,EAAatyE,EAAO60E,IACvBQ,EAAM3yE,KAAK8wE,EAAMxzE,EAAO4C,EAAQ+vE,EAAQ90E,EAE5C,CACAkiB,EAAS4yD,EACX,CAEA,UCJA,IACEp1D,OAAQA,EACRjC,OAAQA,EACRqH,OAAQA,EACR2yD,QAASA,EACTf,OAAQA,EACRjyD,QAASA,EACTgyD,MAAOA,EACPxgB,MAAOA,EACPnvD,OAAQA,EACR,KAAQ8wE,EACRxB,QAASA,GACTO,KAAMA,GACNtS,IAAKx/D,GACL0xE,IAAK1xE,GACLwxE,MAAOxxE,GACPugB,SAAUA,IC/BL,SAASyyD,KACd,MAAO,CACL,QAAW,+BACXzyD,SAAU,iBACV,KAAQ,uBACR+wD,WAAY,qBACZQ,KAAM,CACJvC,OAAQ,sCACRnnD,MAAO,8CACP6qD,QAAS,yBAEXtB,MAAO,CACL92D,OAAQ,iBACRjC,OAAQ,4BACRw4C,MAAO,kBACPnvD,OAAQ,kBACRge,OAAQ,iBACR6xD,KAAM,iBACNc,QAAS,iBACThzD,QAAS,kBACTgyD,MAAO,iBACPC,OAAQ,uBACRL,MAAO,uBACPhS,IAAK,uBACLkS,IAAK,wBAEP72D,OAAQ,CACN7H,IAAK,mCACL5I,IAAK,oCACLD,IAAK,yCACLioE,MAAO,2CAETnyD,OAAQ,CACNjN,IAAK,mBACL5I,IAAK,4BACLD,IAAK,+BACLioE,MAAO,gCAEThhB,MAAO,CACLp+C,IAAK,kCACL5I,IAAK,sCACLD,IAAK,yCACLioE,MAAO,0CAETb,QAAS,CACPgB,SAAU,yCAEZziD,MAAO,WACL,IAAIojD,EAAS/mE,KAAKic,MAAMjc,KAAKE,UAAU7Q,OAEvC,OADA03E,EAAOpjD,MAAQt0B,KAAKs0B,MACbojD,CACT,EAEJ,CAEO,IAAI7B,GAAW2B,KC3CtB,SAASG,GAAO1wE,GACdjH,KAAKm3E,MAAQ,KACbn3E,KAAK43E,UAAYC,GACjB73E,KAAK83E,OAAO7wE,EACd,CAEA0wE,GAAOpwE,UAAY,CACjBsuE,SAAU,SAAkB+B,GAI1B,OAHIA,IACF53E,KAAK43E,UAAYjmC,EAAU6lC,KAAeI,IAErC53E,KAAK43E,SACd,EACAE,OAAQ,SAAgBX,GACtB,IAAKA,EACH,MAAM,IAAIx7D,MAAM,2CAElB,GAAsE,YAAhD,qBAAVw7D,EAAwB,aAAczB,EAAAA,EAAAA,GAAQyB,KAAwBtwE,MAAMC,QAAQqwE,GAC9F,MAAM,IAAIx7D,MAAM,2BAElB3b,KAAKm3E,MAAQ,CAAC,EACd,IAAIY,OAAI,EACJvyD,OAAO,EACX,IAAKuyD,KAAKZ,EACJA,EAAM7wE,eAAeyxE,KACvBvyD,EAAO2xD,EAAMY,GACb/3E,KAAKm3E,MAAMY,GAAKlxE,MAAMC,QAAQ0e,GAAQA,EAAO,CAACA,GAGpD,EACA0xD,SAAU,SAAkBc,GAC1B,IAAInkD,EAAQ7zB,KAERi4E,EAAIl1E,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACzEm1E,EAAKn1E,UAAU,GAEf2B,EAASszE,EACTr4E,EAAUs4E,EACVp2D,EAAWq2D,EAKf,GAJuB,oBAAZv4E,IACTkiB,EAAWliB,EACXA,EAAU,CAAC,GAERK,KAAKm3E,OAA4C,IAAnCn0E,OAAO+E,KAAK/H,KAAKm3E,OAAOn1E,OAA3C,CAoCA,GAAIrC,EAAQk2E,SAAU,CACpB,IAAIA,EAAW71E,KAAK61E,WAChBA,IAAagC,KACfhC,EAAW2B,MAEb7lC,EAAUkkC,EAAUl2E,EAAQk2E,UAC5Bl2E,EAAQk2E,SAAWA,CACrB,MACEl2E,EAAQk2E,SAAW71E,KAAK61E,WAE1B,IAAIvB,OAAM,EACNxyE,OAAQ,EACRkqC,EAAS,CAAC,EACVjkC,EAAOpI,EAAQoI,MAAQ/E,OAAO+E,KAAK/H,KAAKm3E,OAC5CpvE,EAAK6C,SAAQ,SAAUmtE,GACrBzD,EAAMzgD,EAAMsjD,MAAMY,GAClBj2E,EAAQ4C,EAAOqzE,GACfzD,EAAI1pE,SAAQ,SAAUmiB,GACpB,IAAIuoD,EAAOvoD,EACmB,oBAAnBuoD,EAAKjO,YACV3iE,IAAWszE,IACbtzE,GAASixE,EAAAA,EAAAA,GAAS,CAAC,EAAGjxE,IAExB5C,EAAQ4C,EAAOqzE,GAAKzC,EAAKjO,UAAUvlE,IAGnCwzE,EADkB,oBAATA,EACF,CACL/hD,UAAW+hD,IAGNK,EAAAA,EAAAA,GAAS,CAAC,EAAGL,GAEtBA,EAAK/hD,UAAYM,EAAMskD,oBAAoB7C,GAC3CA,EAAKE,MAAQuC,EACbzC,EAAKG,UAAYH,EAAKG,WAAasC,EACnCzC,EAAK9wE,KAAOqvB,EAAMukD,QAAQ9C,GACrBA,EAAK/hD,YAGVyY,EAAO+rC,GAAK/rC,EAAO+rC,IAAM,GACzB/rC,EAAO+rC,GAAG9zE,KAAK,CACbqxE,KAAMA,EACNxzE,MAAOA,EACP4C,OAAQA,EACR8wE,MAAOuC,IAEX,GACF,IACA,IAAIM,EAAc,CAAC,EACnBtD,EAAS/oC,EAAQrsC,GAAS,SAAUsf,EAAMq5D,GACxC,IAAIhD,EAAOr2D,EAAKq2D,KACZrE,GAAsB,WAAdqE,EAAK9wE,MAAmC,UAAd8wE,EAAK9wE,QAA+C,YAAzBkxE,EAAAA,EAAAA,GAAQJ,EAAKiD,SAAuD,YAA/B7C,EAAAA,EAAAA,GAAQJ,EAAKkD,eAGnH,SAASC,EAAa50E,EAAK60E,GACzB,OAAO/C,EAAAA,EAAAA,GAAS,CAAC,EAAG+C,EAAQ,CAC1BjD,UAAWH,EAAKG,UAAY,IAAM5xE,GAEtC,CAEA,SAAS80E,IACP,IAAI1yE,EAAIlD,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,GAExE0xE,EAASxuE,EAab,GAZKY,MAAMC,QAAQ2tE,KACjBA,EAAS,CAACA,IAERA,EAAOzyE,QACT8xE,EAAQ,mBAAoBW,GAE1BA,EAAOzyE,QAAUszE,EAAKxuD,UACxB2tD,EAAS,GAAGxzE,OAAOq0E,EAAKxuD,UAG1B2tD,EAASA,EAAO/qD,IAAI2rD,EAAgBC,IAEhC31E,EAAQq1E,OAASP,EAAOzyE,OAE1B,OADAq2E,EAAY/C,EAAKE,OAAS,EACnB8C,EAAK7D,GAEd,GAAKxD,EAEE,CAIL,GAAIqE,EAAKvwD,WAAa9F,EAAKnd,MAQzB,OANE2yE,EADEa,EAAKxuD,QACE,GAAG7lB,OAAOq0E,EAAKxuD,SAAS4C,IAAI2rD,EAAgBC,IAC5C31E,EAAQkX,MACR,CAAClX,EAAQkX,MAAMy+D,EAAMvB,EAAOp0E,EAAQk2E,SAAS9wD,SAAUuwD,EAAKE,SAE5D,GAEJ8C,EAAK7D,GAGd,IAAImE,EAAe,CAAC,EACpB,GAAItD,EAAKkD,aACP,IAAK,IAAI3tE,KAAKoU,EAAKnd,MACbmd,EAAKnd,MAAMwE,eAAeuE,KAC5B+tE,EAAa/tE,GAAKyqE,EAAKkD,cAK7B,IAAK,IAAI50E,KADTg1E,GAAejD,EAAAA,EAAAA,GAAS,CAAC,EAAGiD,EAAc35D,EAAKq2D,KAAKiD,QACtCK,EACZ,GAAIA,EAAatyE,eAAe1C,GAAI,CAClC,IAAIi1E,EAAchyE,MAAMC,QAAQ8xE,EAAah1E,IAAMg1E,EAAah1E,GAAK,CAACg1E,EAAah1E,IACnFg1E,EAAah1E,GAAKi1E,EAAYnvD,IAAI+uD,EAAa17D,KAAK,KAAMnZ,GAC5D,CAEF,IAAI80E,EAAS,IAAIf,GAAOiB,GACxBF,EAAO7C,SAASl2E,EAAQk2E,UACpB52D,EAAKq2D,KAAK31E,UACZsf,EAAKq2D,KAAK31E,QAAQk2E,SAAWl2E,EAAQk2E,SACrC52D,EAAKq2D,KAAK31E,QAAQkX,MAAQlX,EAAQkX,OAEpC6hE,EAAOxB,SAASj4D,EAAKnd,MAAOmd,EAAKq2D,KAAK31E,SAAWA,GAAS,SAAUm5E,GAClER,EAAKQ,GAAQA,EAAK92E,OAASyyE,EAAOxzE,OAAO63E,GAAQA,EACnD,GACF,MAxCER,EAAK7D,EAyCT,CAtEAxD,EAAOA,IAASqE,EAAKvwD,WAAauwD,EAAKvwD,UAAY9F,EAAKnd,OACxDwzE,EAAKE,MAAQv2D,EAAKu2D,MAuElB,IAAIuD,EAAMzD,EAAK/hD,UAAU+hD,EAAMr2D,EAAKnd,MAAO62E,EAAI15D,EAAKva,OAAQ/E,GACxDo5E,GAAOA,EAAIC,MACbD,EAAIC,MAAK,WACP,OAAOL,GACT,IAAG,SAAU1yE,GACX,OAAO0yE,EAAG1yE,EACZ,GAEJ,IAAG,SAAUsuE,GACX0E,EAAS1E,EACX,GArKA,MAJM1yD,GACFA,IAIJ,SAASo3D,EAAS1E,GAChB,IAAIvwE,OAAI,EACJwxE,OAAQ,EACRf,EAAS,GACT8D,EAAS,CAAC,EAEd,SAASh4E,EAAI0F,GACPY,MAAMC,QAAQb,GAChBwuE,EAASA,EAAOxzE,OAAO6B,MAAM2xE,EAAQxuE,GAErCwuE,EAAOxwE,KAAKgC,EAEhB,CAEA,IAAKjC,EAAI,EAAGA,EAAIuwE,EAAQvyE,OAAQgC,IAC9BzD,EAAIg0E,EAAQvwE,IAEd,GAAKywE,EAAOzyE,OAIV,IAAKgC,EAAI,EAAGA,EAAIywE,EAAOzyE,OAAQgC,IAC7BwxE,EAAQf,EAAOzwE,GAAGwxE,MAClB+C,EAAO/C,GAAS+C,EAAO/C,IAAU,GACjC+C,EAAO/C,GAAOvxE,KAAKwwE,EAAOzwE,SAN5BywE,EAAS,KACT8D,EAAS,KAQX12D,EAAS4yD,EAAQ8D,EACnB,CAyIF,EACAH,QAAS,SAAiB9C,GAIxB,QAHkB5yE,IAAd4yE,EAAK9wE,MAAsB8wE,EAAKS,mBAAmBE,SACrDX,EAAK9wE,KAAO,WAEgB,oBAAnB8wE,EAAK/hD,WAA4B+hD,EAAK9wE,OAAS00E,GAAW5yE,eAAegvE,EAAK9wE,MACvF,MAAM,IAAImX,MAAMo4D,EAAO,uBAAwBuB,EAAK9wE,OAEtD,OAAO8wE,EAAK9wE,MAAQ,QACtB,EACA2zE,oBAAqB,SAA6B7C,GAChD,GAA8B,oBAAnBA,EAAK/hD,UACd,OAAO+hD,EAAK/hD,UAEd,IAAIxrB,EAAO/E,OAAO+E,KAAKutE,GACnB6D,EAAepxE,EAAKsP,QAAQ,WAIhC,OAHsB,IAAlB8hE,GACFpxE,EAAKkxB,OAAOkgD,EAAc,GAER,IAAhBpxE,EAAK/F,QAA4B,aAAZ+F,EAAK,GACrBmxE,GAAWn0D,SAEbm0D,GAAWl5E,KAAKo4E,QAAQ9C,MAAU,CAC3C,GAGFqC,GAAOyB,SAAW,SAAkB50E,EAAM+uB,GACxC,GAAyB,oBAAdA,EACT,MAAM,IAAI5X,MAAM,oEAElBu9D,GAAW10E,GAAQ+uB,CACrB,EAEAokD,GAAO9B,SAAWgC,GAElB,S,oBCrQA,IAAIwB,EAAS,+CA4Cb,SAASC,EAAS32E,EAAGC,GACnB,OAAO,WACLD,GAAKA,EAAEG,MAAM9C,KAAM+C,WACnBH,GAAKA,EAAEE,MAAM9C,KAAM+C,UACrB,CACF,CA/CA5B,EAAOD,QAAU,SAAwBq4E,GACvC,OAAOA,EAAKjuD,QAAO,SAAU3oB,EAAGC,GAC9B,IAAI42E,EAAIC,EAAI51E,EAAK61E,EAAW/tD,EAC5B,IAAK9nB,KAAOjB,EAGV,GAFA42E,EAAK72E,EAAEkB,GACP41E,EAAK72E,EAAEiB,GACH21E,GAAMH,EAAOl+D,KAAKtX,GAcpB,GAZY,UAARA,IACgB,kBAAP21E,IACT7tD,EAAO6tD,EACP72E,EAAEkB,GAAO21E,EAAK,CAAC,EACfA,EAAG7tD,IAAQ,GAEK,kBAAP8tD,IACT9tD,EAAO8tD,EACP72E,EAAEiB,GAAO41E,EAAK,CAAC,EACfA,EAAG9tD,IAAQ,IAGH,OAAR9nB,GAAwB,aAARA,GAA8B,SAARA,EAExC,IAAK61E,KAAaD,EAChBD,EAAGE,GAAaJ,EAAQE,EAAGE,GAAYD,EAAGC,SAEvC,GAAI7yE,MAAMC,QAAQ0yE,GACvB72E,EAAEkB,GAAO21E,EAAGv4E,OAAOw4E,QACd,GAAI5yE,MAAMC,QAAQ2yE,GACvB92E,EAAEkB,GAAO,CAAC21E,GAAIv4E,OAAOw4E,QAErB,IAAKC,KAAaD,EAChBD,EAAGE,GAAaD,EAAGC,QAIvB/2E,EAAEkB,GAAOjB,EAAEiB,GAGf,OAAOlB,CACT,GAAG,CAAC,EACN,C,wBC1CAxB,EAAOD,QAAU,CAAE,QAAWsnB,EAAQ,OAAqCmxD,YAAY,E,wBCAvFx4E,EAAOD,QAAU,CAAE,QAAWsnB,EAAQ,OAA8BmxD,YAAY,E,wBCAhFx4E,EAAOD,QAAU,CAAE,QAAWsnB,EAAQ,MAAuCmxD,YAAY,E,qCCIzF,IAAIC,EAAUpxD,EAAQ,OAElBqxD,EAAWpxD,EAAuBmxD,GAEtC,SAASnxD,EAAuBjJ,GAAO,OAAOA,GAAOA,EAAIm6D,WAAan6D,EAAM,CAAE83C,QAAS93C,EAAO,CAE9Fte,EAAQ,EAAU24E,EAASviB,SAAW,SAAU5xD,GAC9C,IAAK,IAAI1B,EAAI,EAAGA,EAAIjB,UAAUf,OAAQgC,IAAK,CACzC,IAAIU,EAAS3B,UAAUiB,GAEvB,IAAK,IAAIH,KAAOa,EACV1B,OAAOuE,UAAUjB,eAAejG,KAAKqE,EAAQb,KAC/C6B,EAAO7B,GAAOa,EAAOb,GAG3B,CAEA,OAAO6B,CACT,C,qCClBA,IAAIo0E,EAAYtxD,EAAQ,OAEpBuxD,EAAatxD,EAAuBqxD,GAEpCE,EAAUxxD,EAAQ,OAElByxD,EAAWxxD,EAAuBuxD,GAElCtE,EAAsC,oBAArBuE,EAAS3iB,SAAwD,kBAAvByiB,EAAWziB,QAAuB,SAAU93C,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAmC,oBAArBy6D,EAAS3iB,SAA0B93C,EAAItS,cAAgB+sE,EAAS3iB,SAAW93C,IAAQy6D,EAAS3iB,QAAQ/vD,UAAY,gBAAkBiY,CAAK,EAEtT,SAASiJ,EAAuBjJ,GAAO,OAAOA,GAAOA,EAAIm6D,WAAan6D,EAAM,CAAE83C,QAAS93C,EAAO,CAE9Fte,EAAQ,EAAsC,oBAArB+4E,EAAS3iB,SAA0D,WAAhCoe,EAAQqE,EAAWziB,SAAwB,SAAU93C,GAC/G,MAAsB,qBAARA,EAAsB,YAAck2D,EAAQl2D,EAC5D,EAAI,SAAUA,GACZ,OAAOA,GAAmC,oBAArBy6D,EAAS3iB,SAA0B93C,EAAItS,cAAgB+sE,EAAS3iB,SAAW93C,IAAQy6D,EAAS3iB,QAAQ/vD,UAAY,SAA0B,qBAARiY,EAAsB,YAAck2D,EAAQl2D,EACrM,C,qCClBA,IAAI06D,EAAe1xD,EAAQ,MAEvB2xD,EAAW3xD,EAAQ,OAEnB4xD,EAAWD,EAASD,EAAa,6BAErC/4E,EAAOD,QAAU,SAA4BuD,EAAM41E,GAClD,IAAIC,EAAYJ,EAAaz1E,IAAQ41E,GACrC,MAAyB,oBAAdC,GAA4BF,EAAS31E,EAAM,gBAAkB,EAChE01E,EAASG,GAEVA,CACR,C,qCCZA,IAAIv9D,EAAOyL,EAAQ,OACf0xD,EAAe1xD,EAAQ,MAEvB+xD,EAASL,EAAa,8BACtBM,EAAQN,EAAa,6BACrBO,EAAgBP,EAAa,mBAAmB,IAASn9D,EAAK1c,KAAKm6E,EAAOD,GAE1EG,EAAQR,EAAa,qCAAqC,GAC1DpoE,EAAkBooE,EAAa,2BAA2B,GAC1DS,EAAOT,EAAa,cAExB,GAAIpoE,EACH,IACCA,EAAgB,CAAC,EAAG,IAAK,CAAEhQ,MAAO,GACnC,CAAE,MAAOmE,GAER6L,EAAkB,IACnB,CAGD3Q,EAAOD,QAAU,SAAkB05E,GAClC,IAAIn9D,EAAOg9D,EAAc19D,EAAMy9D,EAAOz3E,WACtC,GAAI23E,GAAS5oE,EAAiB,CAC7B,IAAI+oE,EAAOH,EAAMj9D,EAAM,UACnBo9D,EAAKttE,cAERuE,EACC2L,EACA,SACA,CAAE3b,MAAO,EAAI64E,EAAK,EAAGC,EAAiB54E,QAAUe,UAAUf,OAAS,KAGtE,CACA,OAAOyb,CACR,EAEA,IAAIq9D,EAAY,WACf,OAAOL,EAAc19D,EAAMw9D,EAAQx3E,UACpC,EAEI+O,EACHA,EAAgB3Q,EAAOD,QAAS,QAAS,CAAEY,MAAOg5E,IAElD35E,EAAOD,QAAQ4B,MAAQg4E,C,mHC7CjB,MAAMC,EAA2C,CACtDjpD,SAAU,WACVue,KAAM,IACNE,IAAK,IACLyqC,WAAY,OACZC,aAAc,OACdzyC,MAAO,OACPC,OAAQ,QAGV,SAAS3Q,EAAK7xB,GACZA,EAAEi1E,iBACJ,CAEM,SAAUC,EAAWC,GACzBA,EAAKr3D,iBAAiB,QAAS+T,GAC/BsjD,EAAKr3D,iBAAiB,YAAa+T,GACnCsjD,EAAKr3D,iBAAiB,UAAW+T,GACjCsjD,EAAKr3D,iBAAiB,YAAa+T,EACrC,C,MCMsBujD,EAKpBnuE,WAAAA,CAA6BouE,GAAA,KAAOA,QAAPA,EAJrB,KAAqBC,uBAAG,EAExB,KAAyBC,2BAAG,EAgCpC,KAAkBC,mBAAG,KACf,KAAKD,4BAGT,KAAKA,2BAA4B,EACjC,KAAKrsD,GAAGusD,IAAI,UAAU,KACpB,KAAKF,2BAA4B,EACjC,KAAKxkD,QAAQ,IACb,C,CApCJ2kD,eAAAA,CAAgB99B,GACd,OAAO,KAAKy9B,QAAQK,gBAAgB99B,E,CAGtC+9B,cAAAA,GACE,OAAO,C,CAGTC,UAAAA,CAAWC,GAA8B,CAIzC,kBAAIC,GACF,OAAO,KAAKR,qB,CAGd,kBAAIQ,CAAej6E,GACb,KAAKy5E,wBAA0Bz5E,IAGnC,KAAKy5E,sBAAwBz5E,EACzBA,EACF,KAAKqtB,GAAGs0C,GAAG,SAAU,KAAKzsC,QAE1B,KAAK7H,GAAG6sD,IAAI,SAAU,KAAKhlD,Q,CAiB/B,MAAI7H,GACF,OAAO,KAAKmsD,QAAQnsD,E,CAGtB8sD,MAAAA,GACE,KAAKX,QAAQrpD,KAAK,MAAO,E,CAG3BiqD,QAAAA,GACE,KAAKZ,QAAQrpD,KAAK,KAAM,E,CAG1BkqD,QAAAA,GACE,KAAKb,QAAQrpD,KAAK,KAAMsqC,OAAO6f,kB,CAGjCC,SAAAA,GACE,KAAKf,QAAQrpD,KAAK,KAAMsqC,OAAO+f,kB,CASjCC,YAAAA,CACE/3E,EACA7E,GAEA,OAAO,KAAK27E,QAAQkB,OAAO,SAAU,KAAMh4E,EAAM7E,E,CASnD88E,WAAAA,CACEj4E,EACA7E,GAEA,OAAO,KAAK27E,QAAQkB,OAAO,QAAS,KAAMh4E,EAAM7E,E,EC/G9C,MAAgB+8E,UAA0DrB,EAK9EnuE,WAAAA,CAAYouE,EAAwBpjD,GAClC,MAAMojD,GAHC,KAASqB,UAA4B,GAUrC,KAAM3lD,OAAG,KAChB,IAAK,MAAMihD,KAAK,KAAK0E,UACnB1E,EAAE,KAAKmD,KACR,EATD,KAAKljD,KAAOA,EACZl1B,OAAOwH,OAAO,KAAK0tB,KAAKtsB,MAAOmvE,E,CAWjC,WAAIhnD,GACF,MAAmC,SAA5B,KAAKmE,KAAKtsB,MAAMC,O,CAGzB,WAAIkoB,CAAQjyB,GACN,KAAKiyB,UAAYjyB,IAGrB,KAAKo2B,KAAKtsB,MAAMC,QAAU/J,EAAQ,GAAK,O,CAGzC4rC,IAAAA,GACE,KAAK3Z,SAAU,C,CAGjB3vB,IAAAA,GACE,KAAK2vB,SAAU,C,CAGjBlS,QAAAA,CAASA,GAGP,OAFA,KAAK86D,UAAU14E,KAAK4d,GACpB,KAAKmV,SACE,I,CAGT6U,MAAAA,GAAM,CAIN+wC,MAAAA,GACE,KAAK1kD,KAAK0kD,Q,EChDP,MAAMC,EAAS,6BAEhB,MAAOC,UAAiBJ,EAO5BxvE,WAAAA,CAAYouE,EAAwByB,EAAep9E,EAA4B,IAC7E,MAAM27E,EAASyB,EAAIC,gBAAgBH,EAAQ,QAPpC,KAAIr4E,KAAG,MAIhB,KAAiBy4E,mBAAG,EAIlB,KAAK/kD,KAAKglD,WAAa,KACvB,KAAK9B,KAAO2B,EAAIC,gBAAgBH,EAAQ,KACxC,KAAKzB,KAAK8B,WAAa,KACvB,KAAKhlD,KAAKjU,YAAY,KAAKm3D,MACvBz7E,EAAQw7E,YACVA,EAAW,KAAKC,K,CAIpB+B,WAAAA,CAAY3zC,EAAYC,EAAY2zC,GAClC,KAAKhC,KAAK3qD,aAAa,YAA0B,aAAA+Y,KAAMC,WAAY2zC,MAC/D,KAAKH,mBACP,KAAKjmD,Q,CAIT4kD,cAAAA,GACE,OAAuC,IAAhC,KAAKR,KAAKiC,iB,EAIf,MAAOC,UAAuBZ,EAKlCxvE,WAAAA,CAAYouE,EAAwByB,EAAep9E,EAA4B,IAC7E,MAAM27E,EAASyB,EAAIC,gBAAgBH,EAAQ,QALpC,KAAIr4E,KAAG,aAMd,KAAK0zB,KAAKglD,WAAa,KACvB,KAAK9B,KAAO2B,EAAIC,gBAAgBH,EAAQ,KACxC,KAAKzB,KAAK8B,WAAa,KACvB,KAAKhlD,KAAKjU,YAAY,KAAKm3D,MACvBz7E,EAAQw7E,YACVA,EAAW,KAAKC,K,CAIpB+B,WAAAA,GAAW,ECjDP,MAAOI,UAAwBlC,EAenCnuE,WAAAA,CAAYouE,EAAwByB,EAAep9E,EAA+B,I,QAChF,MAAM27E,GATC,KAASqB,UAAsB,GAErB,KAAAtV,UAAsD,CACvE79B,GAAI,EACJC,GAAI,EACJ2zC,KAAM,GAyCC,KAAMpmD,OAAG,IAAM,KAAKhB,OApC3B,KAAKolD,KAAO2B,EAAI15E,cAAc,UAC9BL,OAAOwH,OAAO,KAAK4wE,KAAKxvE,MAAOmvE,GAC3Bp7E,EAAQw7E,YACVA,EAAW,KAAKC,MAElB,KAAKoC,WAAsE,QAAzDC,EAAkB,QAAlBC,EAAA/9E,EAAQ69E,kBAAU,IAAAE,EAAAA,GAAW,OAANx3E,aAAM,IAANA,OAAAA,OAAU,IAAIy3E,wBAAoB,IAAAF,EAAAA,EAAA,EAC3E,KAAKt5E,IAAM,KAAKi3E,KAAK/qD,WAAW,KAAM1wB,GACtC,KAAKwE,IAAIy5E,gB,CAGX,WAAI7pD,GACF,MAAmC,SAA5B,KAAKqnD,KAAKxvE,MAAMC,O,CAGzB,WAAIkoB,CAAQjyB,GACV,KAAKs5E,KAAKxvE,MAAMC,QAAU/J,EAAQ,GAAK,M,CAGzC4rC,IAAAA,GACE,KAAK3Z,SAAU,C,CAGjB3vB,IAAAA,GACE,KAAK2vB,SAAU,C,CAGjB,QAAImE,GACF,OAAO,KAAKkjD,I,CAGdv5D,QAAAA,CAASA,GAGP,OAFA,KAAK86D,UAAU14E,KAAK4d,GACpB,KAAKmV,SACE,I,CAKTtU,KAAAA,GACE,MAAMve,EAAM,KAAKA,IACX05E,EAAM15E,EAAI25E,eAChB35E,EAAIy5E,iBACJz5E,EAAIivB,UAAU,EAAG,EAAGjvB,EAAIisB,OAAOoY,MAAOrkC,EAAIisB,OAAOqY,QACjDtkC,EAAI45E,aAAaF,E,CAGnB7nD,IAAAA,GACE,KAAKtT,QACL,KAAKs7D,SAAS,KAAK75E,I,CAGb65E,QAAAA,CAAS75E,EAA+BkyB,EAAQ,GACtDlyB,EAAI22B,OACJ32B,EAAIy5E,iBACJz5E,EAAIkyB,MAAM,KAAKmnD,WAAY,KAAKA,YAChCr5E,EAAImyB,UAAU,KAAK+wC,UAAU79B,GAAKnT,EAAO,KAAKgxC,UAAU59B,GAAKpT,GAC7DlyB,EAAIkyB,MAAM,KAAKgxC,UAAU+V,KAAO/mD,EAAO,KAAKgxC,UAAU+V,KAAO/mD,GAE7D,IAAK,MAAMtJ,KAAK,KAAK4vD,UACnB5vD,EAAE5oB,EAAK,IAGTA,EAAIq4B,S,CAGNo/C,cAAAA,GACE,OAAO,C,CAGTC,UAAAA,CAAW13E,GACT,IAAK,MAAM4oB,KAAK,KAAK4vD,UACnB5vD,EAAE5oB,EAAK,CAAE85E,WAAW,G,CAIxBpyC,MAAAA,CAAOrD,EAAeC,GACpB,KAAK2yC,KAAK5yC,MAAQA,EAAQ,KAAKg1C,WAC/B,KAAKpC,KAAK3yC,OAASA,EAAS,KAAK+0C,WACjC,KAAKxmD,Q,CAGPmmD,WAAAA,CAAYe,EAAaC,EAAaC,GAAa,CAInDxB,MAAAA,GACE,KAAKxB,KAAKwB,Q,EAIR,MAAOyB,UAAoBd,EAG/BrwE,WAAAA,CAAYouE,EAAwByB,EAAep9E,EAA+B,IAChF,MAAM27E,EAASyB,EAAKp9E,GAHb,KAAI6E,KAAG,SAId,KAAK42E,KAAK8B,WAAa,I,CAGzBC,WAAAA,CAAY3zC,EAAYC,EAAY2zC,GAClC,KAAK/V,UAAU79B,GAAKA,EACpB,KAAK69B,UAAU59B,GAAKA,EACpB,KAAK49B,UAAU+V,KAAOA,EACtB,KAAKpmD,Q,EAIH,MAAOsnD,UAA0Bf,EAGrCrwE,WAAAA,CAAYouE,EAAwByB,EAAep9E,EAA+B,IAChF,MAAM27E,EAASyB,EAAKp9E,GAHb,KAAI6E,KAAG,gBAId,KAAK42E,KAAK8B,WAAa,I,EC/HrB,MAAOqB,UAAkB7B,EAO7BxvE,WAAAA,CAAYouE,EAAwByB,EAAep9E,EAA6B,IAC9E,MAAM27E,EAASyB,EAAI15E,cAAc,QAP1B,KAAImB,KAAG,OAIhB,KAAiBy4E,mBAAG,EAIlB,KAAK/kD,KAAKglD,WAAa,KACvB,KAAK9B,KAAO2B,EAAI15E,cAAc,OAC9B,KAAK+3E,KAAK8B,WAAa,KACvB,KAAK9B,KAAKxvE,MAAMkmB,SAAW,WAC3B,KAAKspD,KAAKxvE,MAAMykC,KAAO,MACvB,KAAK+qC,KAAKxvE,MAAM2kC,IAAM,MACtB,KAAKrY,KAAKjU,YAAY,KAAKm3D,MACvBz7E,EAAQw7E,YACVA,EAAW,KAAKC,K,CAIpB+B,WAAAA,CAAY3zC,EAAYC,EAAY2zC,GAClC,KAAKhC,KAAKxvE,MAAMy7D,UAAyB,aAAA79B,OAAQC,aAAc2zC,KAC3D,KAAKH,mBACP,KAAKjmD,Q,CAIT4kD,cAAAA,GACE,OAAuC,IAAhC,KAAKR,KAAKiC,iB,EAIf,MAAOmB,UAAwB9B,EAGnCxvE,WAAAA,CAAYouE,EAAwByB,EAAep9E,EAA6B,IAC9E,MAAM27E,EAASyB,EAAI15E,cAAc,QAH1B,KAAImB,KAAG,cAId,KAAK42E,KAAK8B,WAAa,KACnBv9E,EAAQw7E,YACVA,EAAW,KAAKC,K,CAIpB,QAAIA,GACF,OAAO,KAAKljD,I,CAGdilD,WAAAA,GAAW,EC7CP,MAAOsB,UAA2BpD,EAGtCnuE,WAAAA,CAAYouE,EAAwBF,GAClC,MAAME,GAQC,KAAMtkD,OAAG,OAPhB,KAAKokD,KAAOA,C,CAGd,QAAIljD,GACF,OAAO,KAAKkjD,I,CAOdvvC,MAAAA,GAAM,CAINsxC,WAAAA,GAAW,CAIXP,MAAAA,GAAM,CAINhB,cAAAA,GACE,OAAO,C,EAIL,MAAO8C,UAA2BD,EAGtCvxE,WAAAA,CAAYouE,EAAwBF,GAClC,MAAME,EAASF,GAHR,KAAI52E,KAAG,OAId,KAAK42E,KAAK8B,WAAa,I,EAIrB,MAAOyB,UAA2BF,EAGtCvxE,WAAAA,CAAYouE,EAAwBF,GAClC,MAAME,EAASF,GAHR,KAAI52E,KAAG,OAId,KAAK42E,KAAK8B,WAAa,I,EAIrB,MAAO0B,UAAgCH,EAG3CvxE,WAAAA,CAAYouE,EAAwBF,GAClC,MAAME,EAASF,GAHR,KAAI52E,KAAG,aAId,KAAK42E,KAAK8B,WAAa,I,WCvDX2B,EACd3mD,EACA4mD,EACAn/E,GAEA,MAAM20E,EAAMztE,MAAMu3D,KAAKlmC,EAAK6mD,UAC5B,IAAKp/E,EAAQq/E,eAAgB,CAC3BF,EAAMl0E,SAASwwE,IACb,GAAIA,EAAK6D,UACP,OAEF,MAAMxF,EAAK95E,EAAQ85E,GAAG2B,GACtB,GAAKz7E,EAAQu/E,UAAUzF,GAGvB,GAAInF,EAAItyE,OAAS,EACfrC,EAAQq3B,OAAOs9C,EAAIl8C,QAAUgjD,EAAM3B,OAC9B,CACL,MAAM0F,EAAOx/E,EAAQyqE,MAAMgR,EAAM3B,GACjCvhD,EAAKjU,YAAYk7D,GACjBx/E,EAAQq3B,OAAOmoD,EAAM/D,EAAM3B,EAC5B,KAEH,IAAK,MAAM2F,KAAQ9K,EACjB8K,EAAKxC,SAEP,MACD,CAED,MAAMlzD,EAAM,IAAIqc,IAAIuuC,EAAI5qD,KAAKwD,GAAM,CAACA,EAAEmyD,QAAQ71E,GAAK0jB,MAEnD,IAAIlpB,GAAK,EACT86E,EAAMl0E,SAASwwE,IACb,GAAIA,EAAK6D,UACP,OAEF,MAAMxF,EAAK95E,EAAQ85E,GAAG2B,GACtB,IAAKz7E,EAAQu/E,UAAUzF,GACrB,OAEFz1E,IACA,MAAMwF,EAAK4xE,EAAK5xE,KACV81E,EAAWhL,EAAItwE,GACfK,EAAMqlB,EAAIxmB,IAAIsG,GACpB,IAAIuW,EACJ,GAAI1b,EAAK,CAGP,GAFA1E,EAAQq3B,OAAO3yB,EAAK+2E,EAAM3B,GAC1B/vD,EAAI61D,OAAO/1E,GACP81E,IAAaj7E,EAEf,OAEF0b,EAAI1b,CACL,MAEC0b,EAAIpgB,EAAQyqE,MAAMgR,EAAM3B,GACxB15D,EAAEs/D,QAAQ71E,GAAKA,EACf7J,EAAQq3B,OAAOjX,EAAGq7D,EAAM3B,GAGhB,IAANz1E,EACFk0B,EAAKsnD,sBAAsB,aAAcz/D,GAEzCu0D,EAAItwE,EAAI,GAAGw7E,sBAAsB,WAAYz/D,GAE/Cu0D,EAAIr7C,OAAOj1B,EAAG,EAAG+b,EAAE,IAGrB2J,EAAI9e,SAASmV,GAAMA,EAAE68D,UACvB,CAMgB,SAAA6C,EACdC,EACAnoB,GAGA,OADAmoB,EAAM79D,SAAS01C,GACR,CACLqlB,OAAQA,KACN8C,EAAM/C,UAAU1jD,OAAOymD,EAAM/C,UAAUtlE,QAAQkgD,GAAW,EAAE,EAGlE,CCrEM,SAAUooB,EAA2B1H,GACzC,MAAO,CACL2H,SAAU,WACVC,SAAe,MAAL5H,GAAaA,EAAE6H,cAAgB,SAAW,WACpDA,eAAe,EACfC,aAAa,EAEjB,C,SCdgBC,EACdN,EACAvgF,EACAQ,GAEA,MAAMs4E,EAAuBj1E,OAAOwH,OAClC,CACEy1E,sBAAuB,EACvBC,eAAgBA,KACjB,GACDP,EAA2BhgF,GAC3BA,GAEF,IAAIwgF,EAAQT,EAAMvwD,GAAGixD,aACjB5E,GAA4B,EAChC,MAAM6E,EAAyBA,KACzB7E,IAGJA,GAA4B,EAC5BkE,EAAMvwD,GAAGusD,IAAI,UAAU,KACrBF,GAA4B,EAC5B2E,EAAQG,EAAqBH,GAC7BT,EAAM1oD,QAAQ,IACd,EAGEspD,EAAwBlgE,IAET,SAAf63D,EAAE4H,UAAsC,WAAf5H,EAAE4H,WAC7Bz/D,EAAQ47D,IAAI/D,EAAE4H,cAAUn9E,EAAWg9E,EAAMjE,oBACzCr7D,EAAQmgE,UAAUvE,IAAI/D,EAAE4H,cAAUn9E,EAAWg9E,EAAMjE,oBACnDr7D,EAAQogE,UAAUxE,IAAI/D,EAAE4H,cAAUn9E,EAAWg9E,EAAMjE,qBAIrD,MAAMgF,EAAWf,EAAMvwD,GAAGgxD,MAAMlI,EAAE2H,UAQlC,OAPA3H,EAAEiI,eAAeO,GACE,SAAfxI,EAAE4H,UAAsC,WAAf5H,EAAE4H,WAC7BY,EAAShd,GAAGwU,EAAE4H,SAAUH,EAAMjE,oBAC9BgF,EAASF,UAAU9c,GAAGwU,EAAE4H,SAAUH,EAAMjE,oBACxCgF,EAASD,UAAU/c,GAAGwU,EAAE4H,SAAUH,EAAMjE,qBAE1CiE,EAAMjE,qBACCgF,CAAQ,EAGE,WAAfxI,EAAE4H,WACJH,EAAM3D,gBAAiB,GAEpB9D,EAAE6H,gBACLK,EAAQG,EAAqBH,GAC7BT,EAAMvwD,GAAGs0C,GAAG,aAAcwU,EAAE2H,SAAUS,IAGxC,MAAM9oB,EAAWA,CAACpzD,EAA+Bu8E,KAC3CzI,EAAE6H,gBACJK,EAAQG,EAAqBH,IAE/BA,EAAMv1E,SAAS+1E,IACb,GAAIA,EAAK1B,UACP,OAEF,MAAM2B,EAAQD,EAAaE,SAASC,SAO9BxyE,EACJsyE,GAAuB,MAAfA,EAAKvoC,QAAiC,MAAfuoC,EAAKtoC,OAAiB,CAAEx4B,EAAG8gE,EAAKvoC,OAAQ1Z,EAAGiiD,EAAKtoC,QAAWqoC,EAAKI,iBAC3F12D,EAAIu2D,GAAqB,MAAbA,EAAKpoC,MAA6B,MAAbooC,EAAKnoC,KAAe,CAAE34B,EAAG8gE,EAAKpoC,KAAM7Z,EAAGiiD,EAAKnoC,MAASkoC,EAAKK,iBAEjG,IACGN,EAAKzC,WACNhG,EAAE8H,aACF9H,EAAEgI,sBAAwB,IACzBgB,EAAWvB,EAAOpxE,EAAG+b,EAAG4tD,EAAEgI,uBAE3B,OAEF,GAAIW,GAAQA,EAAKM,UAEf,YADA/hF,EAAOgF,EAAKw8E,EAAMC,EAAKM,UAAW5yE,EAAG+b,GAGvC,MAAM6yC,EAAO,IAAIikB,OACjBjkB,EAAKj3B,OAAO33B,EAAEwR,EAAGxR,EAAEqwB,GACnBu+B,EAAKr8B,OAAOxW,EAAEvK,EAAGuK,EAAEsU,GACnBx/B,EAAOgF,EAAKw8E,EAAMzjB,EAAM5uD,EAAG+b,EAAE,GAC7B,EAGE0C,EAAI0yD,EAAiBC,EAAOnoB,GAClC,MAAO,CACLmoB,QACAS,QACAvD,OAAQA,KACa,SAAf3E,EAAE4H,UAAsC,WAAf5H,EAAE4H,WAC7BM,EAAMnE,IAAI/D,EAAE4H,cAAUn9E,EAAWg9E,EAAMjE,oBACvC0E,EAAMI,UAAUvE,IAAI/D,EAAE4H,cAAUn9E,EAAWg9E,EAAMjE,oBACjD0E,EAAMK,UAAUxE,IAAI/D,EAAE4H,cAAUn9E,EAAWg9E,EAAMjE,qBAEnDiE,EAAMvwD,GAAG6sD,IAAI,aAAc/D,EAAE2H,SAAUS,GACvCtzD,EAAE6vD,QAAQ,EAGhB,CAEA,SAASqE,EAAWvB,EAAqBpxE,EAAW+b,EAAW9B,GAC7D,MAAM64D,EAAep5D,IAAS,CAC5BlI,EAAGxR,EAAEwR,EAAIkI,EAAIqC,EAAEvK,GAAK,EAAIkI,GACxB2W,EAAGrwB,EAAEqwB,EAAI3W,EAAIqC,EAAEsU,GAAK,EAAI3W,KAE1B,GAAc,IAAVO,EACF,OAAOm3D,EAAM/D,gBAAgByF,EAAY,KAE3C,MAAM3xE,EAAO,EAAI8Y,EACjB,IAAK,IAAIvkB,EAAI,EAAGA,GAAKukB,EAAOvkB,IAC1B,GAAI07E,EAAM/D,gBAAgByF,EAAYp9E,EAAIyL,IACxC,OAAO,EAGX,OAAO,CACT,CCzEM,SAAU4xE,EACd3B,EACAvgF,EACAQ,EAAsE,IAEtE,MAAMs4E,EAAIj1E,OAAOwH,OACf,CACE68D,UAAW,GACXv1C,SAAU,WACVwvD,YAAa,CACXC,eAAe,EACfC,iBAAiB,GAEnBxC,gBAAgB,EAChBkB,eAAgBA,KACjB,GACDP,EAA2BhgF,GAC3BA,GAGF,IAAIm/E,EAAQY,EAAMvwD,GAAGixD,aACjB5E,GAA4B,EAChC,MAAM6E,EAAyBA,KACzB7E,IAGJA,GAA4B,EAC5BkE,EAAMvwD,GAAGusD,IAAI,UAAU,KACrBF,GAA4B,EAC5BsD,EAAQwB,EAAqBxB,GAC7BY,EAAM1oD,QAAQ,IACd,EAGEspD,EAAwBlgE,IAET,SAAf63D,EAAE4H,UAAsC,WAAf5H,EAAE4H,UAC7Bz/D,EAAQ47D,IAAI/D,EAAE4H,cAAUn9E,EAAWg9E,EAAMjE,oBAI3C,MAAMgG,EAAW/B,EAAMvwD,GAAG2vD,MAAM7G,EAAE2H,UAMlC,OALA3H,EAAEiI,eAAeuB,GACE,SAAfxJ,EAAE4H,UAAsC,WAAf5H,EAAE4H,UAC7B4B,EAAShe,GAAGwU,EAAE4H,SAAUH,EAAMjE,oBAEhCiE,EAAMjE,qBACCgG,CAAQ,EAGE,WAAfxJ,EAAE4H,WACJH,EAAM3D,gBAAiB,GAEpB9D,EAAE6H,gBACLhB,EAAQwB,EAAqBxB,GAC7BY,EAAMvwD,GAAGs0C,GAAG,aAAcwU,EAAE2H,SAAUS,IAGxC,MAAMqB,EAAc15D,IAAmB,CACrC03D,QACAZ,QACAlC,OAAQA,KACa,SAAf3E,EAAE4H,UAAsC,WAAf5H,EAAE4H,UAC7Bf,EAAM9C,IAAI/D,EAAE4H,cAAUn9E,EAAWg9E,EAAMjE,oBAEzCiE,EAAMvwD,GAAG6sD,IAAI,aAAc/D,EAAE2H,SAAUS,GACvCr4D,EAAE40D,QAAQ,IAId,GAAmB,WAAf8C,EAAMl7E,KAAmB,CAC3B,MAAMm9E,EAAU1J,EACV1gB,EAAWA,CAACpzD,EAA+Bu8E,KAC/C,MAAMr2D,EAAIlmB,EAAI25E,eACV7F,EAAE6H,gBACJhB,EAAQwB,EAAqBxB,IAE/BA,EAAMl0E,SAASwwE,IACb,GAAIA,EAAK6D,UACP,OAEF,MAAMxF,EAAK2B,EAAKkG,YAAYrJ,EAAEqJ,aAC9B,GAAKZ,EAAKzC,YAAa0D,EAAQ5B,aAAgBL,EAAM/D,gBAAgBlC,GAArE,CAGA,GAAyB,aAArBkI,EAAQ7vD,SACV3tB,EAAImyB,UAAUmjD,EAAG3vC,GAAI2vC,EAAG1vC,SACnB,GAAyB,WAArB43C,EAAQ7vD,SAAuB,CACxC,MAAMzjB,EAAM+sE,EAAKtpD,WACjB3tB,EAAImyB,UAAUjoB,EAAIyR,EAAGzR,EAAIswB,EAC1B,CACDx/B,EAAOgF,EAAKi3E,EAAM3B,GACO,SAArBkI,EAAQ7vD,UACV3tB,EAAI45E,aAAa1zD,EATlB,CAUA,GACD,EAEJ,OAAOq3D,EAAWjC,EAAiBC,EAAOnoB,GAC3C,CAED,MAAMqqB,EAAO3J,EAEP4J,EAAc,CAClBpI,GAAK2B,GAA0BA,EAAKkG,YAAYM,EAAKN,aACrDpC,UAAW0C,EAAK7B,YAAetG,GAA4CiG,EAAM/D,gBAAgBlC,GAAM,KAAM,EAC7GuF,gBAAwC,IAAxB4C,EAAK5C,gBAMvB,GAJI4C,EAAK7B,cACPL,EAAMzC,mBAAoB,GAGT,SAAfyC,EAAMl7E,KAAiB,CACzB,MAAMs9E,EAA2C,IAC5CD,EACHzX,MAAOA,CAACgR,EAAuB3B,KAC7B,MAAM1sD,EAAI2yD,EAAMtE,KAAK2G,cAAc1+E,cAAc,OAKjD,OAJA0pB,EAAEnhB,MAAMkmB,SAAW,WACf8vD,EAAKlqB,MACPkqB,EAAKlqB,KAAK3qC,EAAGquD,EAAM3B,GAEd1sD,CAAC,EAEViK,OAAQA,CAACmoD,EAAM/D,EAAM3B,KACnB,GAAsB,aAAlBmI,EAAK9vD,SACPqtD,EAAKvzE,MAAMy7D,UAAY,GAAGua,EAAKva,wBAAwBoS,EAAG3vC,QAAQ2vC,EAAG1vC,eAChE,GAAsB,WAAlB63C,EAAK9vD,SAAuB,CACrC,MAAMzjB,EAAM+sE,EAAKtpD,WACjBqtD,EAAKvzE,MAAMy7D,UAAY,GAAGua,EAAKva,wBAAwBh5D,EAAIyR,OAAOzR,EAAIswB,QACvE,CACDx/B,EAAOggF,EAAM/D,EAAM3B,EAAG,GAGpBliB,EAAYr/B,IACZ+/C,EAAE6H,gBACJhB,EAAQwB,EAAqBxB,IAE/BD,EAAW3mD,EAAM4mD,EAAOgD,EAAa,EAEvC,OAAOJ,EAAWjC,EAAiBC,EAAOnoB,GAC3C,CAGD,MAAMuqB,EAA0C,IAC3CD,EACHzX,MAAOA,CAACgR,EAAuB3B,KAC7B,MAAM1sD,EAAI2yD,EAAMtE,KAAK2G,cAAc/E,gBAAgBH,EAAQ,KAI3D,OAHI+E,EAAKlqB,MACPkqB,EAAKlqB,KAAK3qC,EAAGquD,EAAM3B,GAEd1sD,CAAC,EAEViK,OAAQA,CAACmoD,EAAM/D,EAAM3B,KACnB,GAAsB,aAAlBmI,EAAK9vD,SACPqtD,EAAK1uD,aAAa,YAAa,GAAGmxD,EAAKva,wBAAwBoS,EAAG3vC,MAAM2vC,EAAG1vC,cACtE,GAAsB,WAAlB63C,EAAK9vD,SAAuB,CACrC,MAAMzjB,EAAM+sE,EAAKtpD,WACjBqtD,EAAK1uD,aAAa,YAAa,GAAGmxD,EAAKva,wBAAwBh5D,EAAIyR,KAAKzR,EAAIswB,OAC7E,CACDx/B,EAAOggF,EAAM/D,EAAM3B,EAAG,GAGpBliB,EAAYr/B,IACZ+/C,EAAE6H,gBACJhB,EAAQwB,EAAqBxB,IAE/BD,EAAW3mD,EAAM4mD,EAAOgD,EAAa,EAEvC,OAAOJ,EAAWjC,EAAiBC,EAAOnoB,GAC5C,CCvNA,SAASyqB,EAAUC,EAAaC,GAC9B,MAAMC,EAAQC,KAAKH,GACbI,EAAO,IAAIzuE,YAAYuuE,EAAMngF,QAC7BsgF,EAAY,IAAI/sE,WAAW8sE,GAEjC,IAAK,IAAIr+E,EAAI,EAAGA,EAAIm+E,EAAMngF,OAAQgC,IAChCs+E,EAAUt+E,GAAKm+E,EAAM1zE,WAAWzK,GAGlC,OAAO,IAAIu+E,KAAK,CAACF,GAAO,CACtB79E,KAAM09E,GAEV,CAEA,SAASM,EAAYC,GACnB,MAAMz+E,EAAIy+E,EAAOprE,QAAQ,KACzB,OAAOorE,EAAOC,UAAU1+E,EAAI,EAC9B,C,SAEgB2+E,EACdhjF,EACAywB,EACA8xD,GAEA,MAAMU,EAAY,WAChB,OAAOxyD,EAAOyyD,UAAUX,EAAUviF,EAAQmjF,QAC5C,EAEA,OAAQnjF,EAAQgjF,QACd,IAAK,eACH,OAAO,IAAIxuD,SAAQ,CAACC,EAAS2uD,KAC3B,IACE3yD,EAAO4yD,QACL,SAAUC,GACI,MAARA,EACF7uD,EAAQ6uD,GAERF,EAAO,IAAIpnE,MAAM,uDAErB,GACAumE,EACAviF,EAAQmjF,QAEX,CAAC,MAAOI,GACPH,EAAOG,EACR,KAGL,IAAK,OACH,OAAOlB,EAAUQ,EAAYI,KAAcV,GAE7C,IAAK,SACH,OAAOM,EAAYI,KAErB,IAAK,YACL,QACE,OAAOA,IAEb,CC/CA,SAASO,EAAQtlC,GACf,OAA0B,MAAlBA,EAAa/9B,CACvB,CAOM,MAAOsjE,UAA6BznE,OAE5B,MAAO0nE,EAenBn2E,WAAAA,CAAYiiB,GAZJ,KAAG0uD,IAAwB,GA2HlB,KAAMhyC,OAAG,KACxB,MAAMrD,EAAQ,KAAKrZ,GAAGqZ,QAChBC,EAAS,KAAKtZ,GAAGsZ,SACvB,KAAK66C,SAAS96C,MAAQA,EACtB,KAAK86C,SAAS76C,OAASA,EAEvB,IAAK,MAAMi3C,KAAS,KAAK6D,OACvB7D,EAAM7zC,OAAOrD,EAAOC,EACrB,EAGc,KAAO+6C,QAAG,KACzB,IAAK,MAAM9D,KAAS,KAAK6D,OACvB7D,EAAM9C,SAGR,KAAKztD,GAAG6sD,IAAI,UAAW,KAAKwH,SAC5B,KAAKr0D,GAAG6sD,IAAI,WAAY,KAAKyH,QAC7B,KAAKt0D,GAAG6sD,IAAI,SAAU,KAAKnwC,QAC3B,KAAK1c,GAAGu0D,QAAQ,eAAWhhF,GAE3B,KAAKysB,GAAGw0D,IAAM,KAAK9F,IAAI8F,IACvB,KAAKx0D,GAAGy0D,IAAM,KAAK/F,IAAI+F,IACvB,KAAKz0D,GAAG00D,KAAO,KAAKhG,IAAIgG,KAExB,KAAKhG,IAAM,EAAE,EAGE,KAAM4F,OAAG,KACxB,MAAMK,EAAM,KAAK30D,GAAG20D,MACd1G,EAAO,KAAKjuD,GAAGiuD,OACrB,KAAKkG,SAAS95C,GAAKs6C,EAAIhkE,EACvB,KAAKwjE,SAAS75C,GAAKq6C,EAAInlD,EACvB,KAAK2kD,SAASlG,KAAOA,EAErB,IAAK,MAAMsC,KAAS,KAAK6D,OACvB7D,EAAMvC,YAAY2G,EAAIhkE,EAAGgkE,EAAInlD,EAAGy+C,EACjC,EA0NM,KAAa4C,cAAGA,EAEhB,KAAaqB,cAAGA,EA/WvB,KAAKlyD,GAAKA,EACV,KAAKmsD,QAAU,CACbnsD,GAAI,KAAKA,GACTqtD,OAAQA,CAACuH,EAA2BrE,EAAuBl7E,IACzD,KAAKg4E,OAAOuH,EAAOrE,EAA8Bl7E,GACnDytB,KAAMA,CAACytD,EAAuBvyD,IAAW,KAAK8E,KAAKytD,EAA8BvyD,GACjFwuD,gBAAkB99B,IAChB,MAAM71B,EAAI,KAAKs7D,SACTU,EAAOlkE,IACX,MAAMmkE,EAAKnkE,EAAIkI,EAAEo1D,KAAOp1D,EAAEwhB,GAC1B,OAAOy6C,GAAM,GAAKA,GAAMj8D,EAAEwgB,KAAK,EAE3B07C,EAAOvlD,IACX,MAAMwlD,EAAKxlD,EAAI3W,EAAEo1D,KAAOp1D,EAAEyhB,GAC1B,OAAO06C,GAAM,GAAKA,GAAMn8D,EAAEygB,MAAM,EAElC,OAAI06C,EAAQtlC,GACHmmC,EAAInmC,EAAE/9B,IAAMokE,EAAIrmC,EAAElf,GAIxBqlD,EAAInmC,EAAE/T,KAAOo6C,EAAIrmC,EAAE9T,KACnBi6C,EAAInmC,EAAE5T,KAAOi6C,EAAIrmC,EAAE9T,KACnBi6C,EAAInmC,EAAE5T,KAAOi6C,EAAIrmC,EAAE3T,KACnB85C,EAAInmC,EAAE/T,KAAOo6C,EAAIrmC,EAAE3T,KACnB85C,GAAKnmC,EAAE/T,GAAK+T,EAAE5T,IAAM,IAAMi6C,GAAKrmC,EAAE9T,GAAK8T,EAAE3T,IAAM,EAAG,GAKxD,MAAMY,EAAY3b,EAAG2b,YAEfs5C,EAAY,IAAI1F,EACpB,KAAKpD,QACLxwC,EAAUu5C,cAAiC,4BAE7C,KAAKD,UAAYA,EAEjB,MAAME,EAAY,IAAI3F,EACpB,KAAKrD,QACLxwC,EAAUu5C,cAAiC,4BAE7C,KAAKC,UAAYA,EAEjB,MAAMC,EAAiB,IAAI3F,EACzB,KAAKtD,QACLxwC,EAAUu5C,cAAiC,iCAE7C,KAAKE,eAAiBA,EAEtBH,EAAUlsD,KAAKtsB,MAAM44E,OAAS,GAC9BF,EAAUpsD,KAAKtsB,MAAM44E,OAAS,GAC9BD,EAAersD,KAAKtsB,MAAM44E,OAAS,GACnCJ,EAAUlsD,KAAKsnD,sBAAsB,WAAY8E,EAAUpsD,MAC3DosD,EAAUpsD,KAAKsnD,sBAAsB,WAAY+E,EAAersD,MAEhE/I,EAAGs0C,GAAG,WAAY,KAAKggB,QACvBt0D,EAAGs0C,GAAG,SAAU,KAAK53B,QACrB1c,EAAGs0C,GAAG,UAAW,KAAK+f,SAEtB,KAAK3F,IAAM,CACT8F,IAAKx0D,EAAGw0D,IACRC,IAAKz0D,EAAGy0D,IACRC,KAAM10D,EAAG00D,MAEX10D,EAAGw0D,IAAM,KAAKA,IAAI5mE,KAAK,MACvBoS,EAAGy0D,IAAM,KAAKA,IAAI7mE,KAAK,MACvBoS,EAAG00D,KAAO,KAAKA,KAAK9mE,KAAK,MAEzB,KAAKumE,SAAW,CACd96C,MAAO,KAAKrZ,GAAGqZ,QACfC,OAAQ,KAAKtZ,GAAGsZ,SAChBe,GAAI,KAAKra,GAAG20D,MAAMhkE,EAClB2pB,GAAI,KAAKta,GAAG20D,MAAMnlD,EAClBy+C,KAAM,KAAKjuD,GAAGiuD,O,CAIVnrD,IAAAA,CAAKytD,EAA4BvyD,GACvC,MAAM3e,EAAI,KAAK+0E,OACTthF,EAAQuM,EAAE6I,QAAQqoE,GAClBh6E,EAASS,KAAKwI,IAAIxI,KAAKyI,IAAI3M,EAAQkrB,EAAQ3e,EAAExM,OAAQ,IACvD0D,IAAWzD,IAGXA,GAASuM,EAAExM,OAAS,EACtB,KAAKk2B,KAAKjU,YAAYy7D,EAAMxnD,MAE5B,KAAKA,KAAKqkD,aAAamD,EAAMxnD,KAAM1pB,EAAE9I,GAAQwyB,M,CAIjD,YAAI/0B,GACF,OAAO,KAAKgsB,GAAG2b,YAAai3C,a,CAG9B,QAAI7pD,GACF,OAAO,KAAKksD,UAAUhJ,KAAKqJ,a,CAG7B,UAAYlB,GACV,OAAO18E,MAAMu3D,KAAK,KAAKlmC,KAAK6mD,UACzBr1D,KAAKwD,GAAOA,EAA+BgwD,aAC3CltD,QAAQ9C,GAAW,MAALA,G,CAGnBw3D,SAAAA,GACE,OAAO,KAAKnB,M,CA2CN7rB,IAAAA,CAAoCgoB,GAG1C,OAFAA,EAAM7zC,OAAO,KAAKy3C,SAAS96C,MAAO,KAAK86C,SAAS76C,QAChDi3C,EAAMvC,YAAY,KAAKmG,SAAS95C,GAAI,KAAK85C,SAAS75C,GAAI,KAAK65C,SAASlG,MAC7DsC,C,CAGT1oD,MAAAA,GACE,KAAKysD,SACL,IAAK,MAAM/D,KAAS,KAAK6D,OACnB7D,aAAiBrB,GACnBqB,EAAM1pD,M,CAKJ2uD,WAAAA,CACNngF,EACA7E,GAEA,OAAQ6E,GACN,IAAK,MACH,OAAO,KAAKkzD,KAAK,IAAIolB,EAAS,KAAKxB,QAAS,KAAKn4E,SAAUxD,IAC7D,IAAK,OACH,OAAO,KAAK+3D,KAAK,IAAI6mB,EAAU,KAAKjD,QAAS,KAAKn4E,SAAUxD,IAC9D,IAAK,SACH,OAAO,KAAK+3D,KAAK,IAAI2mB,EAAY,KAAK/C,QAAS,KAAKn4E,SAAUxD,IAChE,IAAK,cACH,OAAO,KAAK+3D,KAAK,IAAI8mB,EAAgB,KAAKlD,QAAS,KAAKn4E,SAAUxD,IACpE,IAAK,aACH,OAAO,KAAK+3D,KAAK,IAAI4lB,EAAe,KAAKhC,QAAS,KAAKn4E,SAAUxD,IACnE,IAAK,gBACH,OAAO,KAAK+3D,KAAK,IAAI4mB,EAAkB,KAAKhD,QAAS,KAAKn4E,SAAUxD,I,CAU1EkoB,MAAAA,CACErjB,EACA7E,GAEA,MAAM+/E,EAAQ,KAAKiF,YAAYngF,EAAM7E,GAErC,OADA,KAAKu4B,KAAKjU,YAAYy7D,EAAMxnD,MACrBwnD,C,CAmCTlD,MAAAA,CACEuH,EACAhtB,EACAvyD,EACA7E,GAEA,MAAM+/E,EAAQ,KAAKiF,YAAYngF,EAAM7E,GAErC,OADAo3D,EAAI7+B,KAAKsnD,sBAAgC,WAAVuE,EAAqB,cAAgB,WAAYrE,EAAMxnD,MAC/EwnD,C,CAGTkF,OAAAA,G,MACE,MAAMrB,EAAS,KAAKA,OACpB,OAAoC,QAA7B7F,EAAA6F,EAAOA,EAAOvhF,OAAS,UAAM,IAAA07E,EAAAA,EAAA,I,CAGtCmH,QAAAA,G,MACE,MAAMtB,EAAS,KAAKA,OACpB,OAAgB,QAAT7F,EAAA6F,EAAO,UAAE,IAAA7F,EAAAA,EAAI,I,CAGdoH,cAAAA,GACN,OAAO,KAAKvB,OAAOwB,MAAM73D,KAAQA,aAAauxD,I,CAGxCuG,QAAAA,CACNrlF,GAEA,MAAM4jF,EAAS,KAAKA,OAEpB,GAAIA,EAAOwB,MAAM73D,IAAOA,EAAE0uD,mBAAoBj8E,EAAQslF,wBACpD,MAAM,IAAI7B,EACR,8FAIJ,MAAM8B,EAAY3B,EAAOlsE,QAAQ,KAAK+sE,WAChCe,EAAY5B,EAAOlsE,QAAQ,KAAKitE,WAChCc,EAAiB7B,EAAOlsE,QAAQ,KAAKktE,gBAE3C,IAAKW,IAAcC,EAAY,GAAKA,IAAcC,EAAiB,KAAOzlF,EAAQ0lF,4BAChF,MAAM,IAAIjC,EACR,+FAIJ,MAAMkC,EAAS/B,EACZphF,MAAM,EAAG+iF,GACTlqD,UACAhL,QAAQ9C,GAAMA,EAAE0uD,kBAAoB1uD,IAAM,KAAKo3D,WAAap3D,IAAM,KAAKq3D,iBAEpEgB,EAAQhC,EACXphF,MAAM+iF,EAAY,GAClBl1D,QAAQ9C,GAAMA,EAAE0uD,kBAAoB1uD,IAAM,KAAKo3D,WAAap3D,IAAM,KAAKq3D,iBAEpEhtB,EACJ,KAAKpoC,GAQLooC,WAEIiuB,EAAejuB,EAASiuB,aAE9BjuB,EAASiuB,aAAe,SAAUrhF,EAAKshF,GACrC,IAAK,MAAMj3E,KAAK82E,EACd92E,EAAEqtE,WAAW13E,GAEfqhF,EAAanlF,KAAK,KAAM8D,EAAKshF,GAC7B,IAAK,MAAMj3E,KAAK+2E,EACd/2E,EAAEqtE,WAAW13E,EAEjB,EACA,MAAMisB,EAASmnC,EAASmuB,kBAAkB/lF,GAE1C,OADA43D,EAASiuB,aAAeA,EACjBp1D,C,CAUTuzD,GAAAA,CACEhkF,GAEA,OAAK,KAAKmlF,iBAGHnC,EAAO,OAAAhjF,QAAO,IAAPA,EAAAA,EAAW,GAAI,KAAKqlF,SAAS,OAAArlF,QAAA,IAAAA,EAAAA,EAAW,IAAK,aAFlD,KAAKk+E,IAAI8F,IAAItjF,KAAK,KAAK8uB,GAAIxvB,E,CAYtCikF,GAAAA,CACEjkF,GAGA,IAAK,KAAKmlF,iBACR,OAAO,KAAKjH,IAAI+F,IAAIvjF,KAAK,KAAK8uB,GAAIxvB,GAEpC,MAAMs4E,EAAI,CACR0N,GAAI,UACA,OAAAhmF,QAAO,IAAPA,EAAAA,EAAW,IAEjB,OAAOgjF,EAAO1K,EAAG,KAAK+M,SAAS/M,GAAI,Y,CAUrC4L,IAAAA,CAAKlkF,GACH,OAAK,KAAKmlF,iBAGH,KAAKlB,IAAIjkF,GAFP,KAAKk+E,IAAIgG,KAAKxjF,KAAK,KAAK8uB,GAAIxvB,E,EAYzB,SAAA4jF,EAAsBp0D,EAAc,MAClD,IAAKA,EAAG2b,YACN,MAAM,IAAInvB,MAAM,wDAGlB,MAAMiqE,EAAYz2D,EAAGu0D,QAAQ,WAC7B,GAAIkC,EACF,OAAOA,EAET,MAAMC,EAAS,IAAIxC,EAAal0D,GAEhC,OADAA,EAAGu0D,QAAQ,UAAWmC,GACfA,CACT,CCvbwB,SAAAzM,EACtB0M,GAEAA,EAAU,OAAQ,SAAUvC,EAC9B,CCVgB,SAAAwC,EAAgBC,EAAaC,EAAaC,EAAaC,EAAarmE,EAAW6e,GAE7F,MAAMmL,EAAKk8C,EACLj8C,EAAKk8C,EACLh8C,EAAKi8C,EAAMp8C,EACXI,EAAKi8C,EAAMp8C,EACjB,IAAI76B,EAAK4Q,EAAIgqB,EACT9a,EAAK2P,EAAIoL,EACTq8C,EAAUl3E,EAAK+6B,EAAKjb,EAAKkb,EACzBm8C,EAAY,EAEZD,GAAW,EACbC,EAAY,GAEZn3E,EAAK+6B,EAAK/6B,EACV8f,EAAKkb,EAAKlb,EACVo3D,EAAUl3E,EAAK+6B,EAAKjb,EAAKkb,EAEvBm8C,EADED,GAAW,EACD,EAECA,EAAUA,GAAYn8C,EAAKA,EAAKC,EAAKA,IAItD,MAAMo8C,EAAQp3E,EAAKA,EAAK8f,EAAKA,EAAKq3D,EAClC,OAAIC,EAAQ,EACH,EAEFA,CACT,CAEM,SAAUC,EAAcz8C,EAAYC,EAAYE,EAAYC,GAChE,OAAQJ,EAAKG,IAAOH,EAAKG,IAAOF,EAAKG,IAAOH,EAAKG,EACnD,CAEM,SAAUs8C,EAAkB18C,EAAYC,EAAYE,EAAYC,EAAYu8C,GAChF,OAAOF,EAAcz8C,EAAIC,EAAIE,EAAIC,GAAMu8C,EAAQA,CACjD,CAEM,SAAUC,EAAMC,GACpB,IAAKpqB,OAAOqqB,SAASD,GACnB,OAAQ3+D,GAAcA,EAExB,GAAe,IAAX2+D,EACF,OAAOxgF,KAAKugF,MAEd,MAAMG,EAAS1gF,KAAK4iB,IAAI,GAAI49D,GAC5B,OAAQ3+D,GAAc7hB,KAAKugF,MAAM1+D,EAAI6+D,GAAUA,CACjD,CC7CM,SAAUC,EAAgBt7C,GAC9B,MAAMu7C,EAAO5gF,KAAKyI,IAAI48B,EAAK1B,GAAI0B,EAAKvB,IAC9B+8C,EAAO7gF,KAAKwI,IAAI68B,EAAK1B,GAAI0B,EAAKvB,IAC9Bg9C,EAAO9gF,KAAKyI,IAAI48B,EAAKzB,GAAIyB,EAAKtB,IAC9Bg9C,EAAO/gF,KAAKwI,IAAI68B,EAAKzB,GAAIyB,EAAKtB,IAEpC,MAAO,CACLpqB,EAAGinE,EACHpoD,EAAGsoD,EACHh9C,GAAI+8C,EACJ98C,GAAIg9C,EACJ1+C,MAAOw+C,EAAOD,EACdt+C,OAAQy+C,EAAOD,EAEnB,CFHyC,qBAA7B/gF,OAAe4/E,WAEzB1M,EAAUlzE,OAAe4/E,W,MEGdqB,EACXj6E,WAAAA,CAAmB48B,EAAmBC,EAAmBE,EAAmBC,GAAzD,KAAEJ,GAAFA,EAAmB,KAAEC,GAAFA,EAAmB,KAAEE,GAAFA,EAAmB,KAAEC,GAAFA,C,CAE5Ek9C,MAAAA,CAAO3kF,GACL,OAAO,KAAKqnC,KAAOrnC,EAAKqnC,IAAM,KAAKC,KAAOtnC,EAAKsnC,IAAM,KAAKE,KAAOxnC,EAAKwnC,IAAM,KAAKC,KAAOznC,EAAKynC,E,CAG/FlU,IAAAA,CAAK7xB,GACHA,EAAI8hC,OAAO,KAAK6D,GAAI,KAAKC,IACzB5lC,EAAI08B,OAAO,KAAKoJ,GAAI,KAAKC,G,CAG3BhoC,QAAAA,GACE,MAAO,cAAc,KAAK4nC,MAAM,KAAKC,WAAW,KAAKE,MAAM,KAAKC,M,CAGlE,WAAOk0B,CAAK5vD,GACV,OAAO,IAAI24E,EAAK34E,EAAEs7B,GAAIt7B,EAAEu7B,GAAIv7B,EAAEy7B,GAAIz7B,EAAE07B,G,CAItCm9C,IAAAA,CAAKn4E,EAAY8f,GACf,GAAI,KAAK+a,KAAO,KAAKG,GACnB,OAAO,EAET,GAAKlb,EAAK,KAAK+a,IAAM/a,GAAM,KAAKkb,IAAQlb,EAAK,KAAK+a,IAAM/a,GAAM,KAAKkb,GACjE,OAAO,EAET,GAAIh7B,EAAK,KAAK46B,IAAM56B,GAAM,KAAK+6B,GAC7B,OAAO,EAET,GAAI/6B,EAAK,KAAK46B,IAAM56B,GAAM,KAAK+6B,GAC7B,OAAO,EAET,MAAMq9C,EAAQ,KAAKx9C,IAAO9a,EAAK,KAAK+a,KAAO,KAAKE,GAAK,KAAKH,KAAQ,KAAKI,GAAK,KAAKH,IACjF,OAAO76B,GAAMo4E,C,CAGfC,UAAAA,CAAWznE,EAAW6e,GACpB,OAAOonD,EAAgB,KAAKj8C,GAAI,KAAKC,GAAI,KAAKE,GAAI,KAAKC,GAAIpqB,EAAG6e,E,CAGhE6oD,OAAAA,CAAQ1nE,EAAW6e,EAAW5R,GAE5B,GAAI,KAAK+c,GAAK,KAAKG,IACjB,GAAInqB,EAAI,KAAKgqB,GAAK/c,GAAKjN,EAAI,KAAKmqB,GAAKld,EACnC,OAAO,OAGT,GAAIjN,EAAI,KAAKmqB,GAAKld,GAAKjN,EAAI,KAAKgqB,GAAK/c,EACnC,OAAO,EAGX,GAAI,KAAKgd,GAAK,KAAKG,IACjB,GAAIvL,EAAI,KAAKoL,GAAKhd,GAAK4R,EAAI,KAAKuL,GAAKnd,EACnC,OAAO,OAGT,GAAI4R,EAAI,KAAKuL,GAAKnd,GAAK4R,EAAI,KAAKoL,GAAKhd,EACnC,OAAO,EAGX,OAAO,C,EC9EX,IAAY06D,EAoEAC,GApEZ,SAAYD,GACVA,EAAAA,EAAA,oBACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,8BACAA,EAAAA,EAAA,iBACD,EALD,CAAYA,IAAAA,EAKX,K,MAEYE,EACXz6E,WAAAA,CAA4BkJ,EAA+B0J,EAAI,EAAmB6e,EAAI,GAA1D,KAAKvoB,MAALA,EAA+B,KAAC0J,EAADA,EAAuB,KAAC6e,EAADA,C,EAGpE,SAAAipD,EAAkBC,EAAWC,GAC3C,MAAMC,GAAOD,EAAG79C,GAAK69C,EAAGh+C,KAAO+9C,EAAG99C,GAAK+9C,EAAG/9C,KAAO+9C,EAAG59C,GAAK49C,EAAG/9C,KAAO89C,EAAG/9C,GAAKg+C,EAAGh+C,IACxEk+C,GAAOH,EAAG59C,GAAK49C,EAAG/9C,KAAO+9C,EAAG99C,GAAK+9C,EAAG/9C,KAAO89C,EAAG39C,GAAK29C,EAAG99C,KAAO89C,EAAG/9C,GAAKg+C,EAAGh+C,IACxEm+C,GAAMH,EAAG59C,GAAK49C,EAAG/9C,KAAO89C,EAAG59C,GAAK49C,EAAG/9C,KAAOg+C,EAAG79C,GAAK69C,EAAGh+C,KAAO+9C,EAAG39C,GAAK29C,EAAG99C,IAC7E,GAAIk+C,EAAI,CACN,MAAMC,EAAKH,EAAME,EACXE,EAAKH,EAAMC,EACjB,OAAI,GAAKC,GAAMA,GAAM,GAAK,GAAKC,GAAMA,GAAM,EAClC,IAAIR,EAAaF,EAAOW,MAAOP,EAAG/9C,GAAKo+C,GAAML,EAAG59C,GAAK49C,EAAG/9C,IAAK+9C,EAAG99C,GAAKm+C,GAAML,EAAG39C,GAAK29C,EAAG99C,KAExF,IAAI49C,EAAaF,EAAOY,KAChC,CACD,OAAO,IAAIV,EAAqB,IAARI,GAAqB,IAARC,EAAYP,EAAOa,WAAab,EAAOc,SAC9E,CAEgB,SAAAC,EAAmBX,EAAWC,GAC5C,MAAMC,GAAOD,EAAG79C,GAAK69C,EAAGh+C,KAAO+9C,EAAG99C,GAAK+9C,EAAG/9C,KAAO+9C,EAAG59C,GAAK49C,EAAG/9C,KAAO89C,EAAG/9C,GAAKg+C,EAAGh+C,IACxEk+C,GAAOH,EAAG59C,GAAK49C,EAAG/9C,KAAO+9C,EAAG99C,GAAK+9C,EAAG/9C,KAAO89C,EAAG39C,GAAK29C,EAAG99C,KAAO89C,EAAG/9C,GAAKg+C,EAAGh+C,IACxEm+C,GAAMH,EAAG59C,GAAK49C,EAAG/9C,KAAO89C,EAAG59C,GAAK49C,EAAG/9C,KAAOg+C,EAAG79C,GAAK69C,EAAGh+C,KAAO+9C,EAAG39C,GAAK29C,EAAG99C,IAC7E,GAAIk+C,EAAI,CACN,MAAMC,EAAKH,EAAME,EACXE,EAAKH,EAAMC,EACjB,GAAI,GAAKC,GAAMA,GAAM,GAAK,GAAKC,GAAMA,GAAM,EACzC,OAAOD,CAEV,CACD,OAAO3rB,OAAO+f,iBAChB,CAEgB,SAAAmM,EAAwBC,EAAqBl9C,GAC3D,SAASm9C,EAASliD,EAAYC,EAAYC,EAAYC,GACpD,IAAIgiD,EAAeJ,EAAmBh9C,EAAM,IAAI27C,EAAK1gD,EAAIC,EAAIC,EAAIC,IAEjE,OADAgiD,EAAeziF,KAAK6iB,IAAI4/D,EAAe,IACnCA,GAAgB,GAAKA,GAAgB,EAChC,EAEF,C,CAIT,IAAIC,EAAqBF,EAASD,EAAO5oE,EAAG4oE,EAAO/pD,EAAG+pD,EAAOz+C,GAAIy+C,EAAO/pD,GAGxE,OADAkqD,GAAsBF,EAASD,EAAO5oE,EAAG4oE,EAAO/pD,EAAG+pD,EAAO5oE,EAAG4oE,EAAOx+C,IAChE2+C,EAAqB,IAIzBA,GAAsBF,EAASD,EAAO5oE,EAAG4oE,EAAOx+C,GAAIw+C,EAAOz+C,GAAIy+C,EAAOx+C,IAClE2+C,EAAqB,IAIzBA,GAAsBF,EAASD,EAAOz+C,GAAIy+C,EAAO/pD,EAAG+pD,EAAOz+C,GAAIy+C,EAAOx+C,IAE/D2+C,EAAqB,GAC9B,C,SASgBC,EAAQJ,EAAoBx5E,EAAY8f,GAEtD,MAAMpqB,EAAM,IAAIk3C,IAiBhB,OAhBI4sC,EAAOlgD,OAAS,GAClB5jC,EAAIrE,IAAImnF,EAAQqB,MAChBnkF,EAAIrE,IAAImnF,EAAQsB,QACP95E,EAAKw5E,EAAO5oE,EACrBlb,EAAIrE,IAAImnF,EAAQqB,MACP75E,EAAKw5E,EAAO5oE,EAAI4oE,EAAOlgD,OAChC5jC,EAAIrE,IAAImnF,EAAQsB,OAEdN,EAAOjgD,QAAU,GACnB7jC,EAAIrE,IAAImnF,EAAQuB,KAChBrkF,EAAIrE,IAAImnF,EAAQwB,SACPl6D,EAAK05D,EAAO/pD,EACrB/5B,EAAIrE,IAAImnF,EAAQuB,KACPj6D,EAAK05D,EAAO/pD,EAAI+pD,EAAOjgD,QAChC7jC,EAAIrE,IAAImnF,EAAQwB,QAEXtkF,CACT,CAEgB,SAAAukF,EAAeT,EAAoBl9C,GACjD,IAAI1B,EAAK0B,EAAK1B,GACVC,EAAKyB,EAAKzB,GACd,MAAME,EAAKuB,EAAKvB,GACVC,EAAKsB,EAAKtB,GAEVk/C,EAAOviF,MAAMu3D,KAAK0qB,EAAQJ,EAAQz+C,EAAIC,IAC5C,GAAoB,IAAhBk/C,EAAKpnF,OACP,OAAO,EAET,IAAIqnF,EAAOP,EAAQJ,EAAQ5+C,EAAIC,GAC/B,MAAqB,IAAds/C,EAAKC,KAAY,CACtB,IAAK,MAAM3mF,KAAKymF,EACd,GAAIC,EAAKhlF,IAAI1B,GACX,OAAO,EAGX,GAAI0mF,EAAKhlF,IAAIqjF,EAAQsB,QAAUK,EAAKhlF,IAAIqjF,EAAQqB,MAAO,CACrD,IAAIjpE,EAAI4oE,EAAO5oE,EACXupE,EAAKhlF,IAAIqjF,EAAQsB,SACnBlpE,GAAK4oE,EAAOlgD,OAEduB,IAAYjqB,EAAIgqB,IAAOI,EAAKH,IAAQE,EAAKH,GACzCA,EAAKhqB,CACN,KAAM,CACL,IAAI6e,EAAI+pD,EAAO/pD,EACX0qD,EAAKhlF,IAAIqjF,EAAQwB,UACnBvqD,GAAK+pD,EAAOjgD,QAEdqB,IAAYnL,EAAIoL,IAAOE,EAAKH,IAAQI,EAAKH,GACzCA,EAAKpL,CACN,CACD0qD,EAAOP,EAAQJ,EAAQ5+C,EAAIC,EAC5B,CACD,OAAO,CACT,CAEgB,SAAAw/C,EAAqBb,EAAqBl9C,GACxD,IAAIhM,EAAc+8B,OAAO+f,kBACrBuM,EAAqB,EAEzB,SAASF,EAASliD,EAAYC,EAAYC,EAAYC,GACpD,IAAIgiD,EAAeJ,EAAmBh9C,EAAM,IAAI27C,EAAK1gD,EAAIC,EAAIC,EAAIC,IACjEgiD,EAAeziF,KAAK6iB,IAAI4/D,EAAe,IACnCA,GAAgB,GAAKA,GAAgB,IACvCC,IACID,EAAeppD,IACjBA,EAAcopD,G,CASpB,OAHAD,EAASD,EAAO5oE,EAAG4oE,EAAO/pD,EAAG+pD,EAAOz+C,GAAIy+C,EAAO/pD,GAE/CgqD,EAASD,EAAO5oE,EAAG4oE,EAAO/pD,EAAG+pD,EAAO5oE,EAAG4oE,EAAOx+C,IAC1C2+C,EAAqB,EAChBrpD,GAGTmpD,EAASD,EAAO5oE,EAAG4oE,EAAOx+C,GAAIw+C,EAAOz+C,GAAIy+C,EAAOx+C,IAC5C2+C,EAAqB,EAChBrpD,GAGTmpD,EAASD,EAAOz+C,GAAIy+C,EAAO/pD,EAAG+pD,EAAOz+C,GAAIy+C,EAAOx+C,IAErB,IAAvB2+C,GACM,EAEHrpD,GACT,CAqCgB,SAAAgqD,EAAiBh+C,EAAak9C,GAC5C,IAAIngE,EAAQ,EAEZ,MAAMgoB,EAAMq3C,EAAkBp8C,EAAM,IAAI27C,EAAKuB,EAAO5oE,EAAG4oE,EAAO/pD,EAAG+pD,EAAOz+C,GAAIy+C,EAAO/pD,IACnFpW,GAASgoB,EAAIn6B,QAAUqxE,EAAOW,MAAQ,EAAI,EAE1C,MAAM/3C,EAAOu3C,EAAkBp8C,EAAM,IAAI27C,EAAKuB,EAAO5oE,EAAG4oE,EAAO/pD,EAAG+pD,EAAO5oE,EAAG4oE,EAAOx+C,KACnF3hB,GAAS8nB,EAAKj6B,QAAUqxE,EAAOW,MAAQ,EAAI,EAE3C,MAAM53C,EAASo3C,EAAkBp8C,EAAM,IAAI27C,EAAKuB,EAAO5oE,EAAG4oE,EAAOx+C,GAAIw+C,EAAOz+C,GAAIy+C,EAAOx+C,KACvF3hB,GAASioB,EAAOp6B,QAAUqxE,EAAOW,MAAQ,EAAI,EAE7C,MAAM93C,EAAQs3C,EAAkBp8C,EAAM,IAAI27C,EAAKuB,EAAOz+C,GAAIy+C,EAAO/pD,EAAG+pD,EAAOz+C,GAAIy+C,EAAOx+C,KAGtF,OAFA3hB,GAAS+nB,EAAMl6B,QAAUqxE,EAAOW,MAAQ,EAAI,EAErC,CAAE73C,MAAKF,OAAMG,SAAQF,QAAO/nB,QACrC,EAzJA,SAAYm/D,GACVA,EAAAA,EAAA,kBACAA,EAAAA,EAAA,gBACAA,EAAAA,EAAA,oBACAA,EAAAA,EAAA,qBACD,EALD,CAAYA,IAAAA,EAKX,K,MCxEY+B,EACXv8E,WAAAA,CAAmB4S,EAAkB6e,EAAkB6J,EAAsBC,GAA1D,KAAC3oB,EAADA,EAAkB,KAAC6e,EAADA,EAAkB,KAAK6J,MAALA,EAAsB,KAAMC,OAANA,C,CAE7E,MAAIwB,GACF,OAAO,KAAKnqB,EAAI,KAAK0oB,K,CAGvB,MAAI0B,GACF,OAAO,KAAKvL,EAAI,KAAK8J,M,CAGvB,MAAIvZ,GACF,OAAO,KAAKpP,EAAI,KAAK0oB,MAAQ,C,CAG/B,MAAIrZ,GACF,OAAO,KAAKwP,EAAI,KAAK8J,OAAS,C,CAGhC,UAAI4B,GACF,OAAOlkC,KAAKwI,IAAI,KAAK65B,MAAO,KAAKC,QAAU,C,CAG7C,WAAO21B,CAAKrxC,GACV,OAAO,IAAI08D,EAAU18D,EAAEjN,EAAGiN,EAAE4R,EAAG5R,EAAEyb,MAAOzb,EAAE0b,O,CAG5C2+C,MAAAA,CAAO3kF,GACL,OAAO,KAAKqd,IAAMrd,EAAKqd,GAAK,KAAK6e,IAAMl8B,EAAKk8B,GAAK,KAAK6J,QAAU/lC,EAAK+lC,OAAS,KAAKC,SAAWhmC,EAAKgmC,M,CAGrGnU,KAAAA,GACE,OAAO,IAAIm1D,EAAU,KAAK3pE,EAAG,KAAK6e,EAAG,KAAK6J,MAAO,KAAKC,O,CAGxDloC,GAAAA,CAAIkC,GACF,MAAMqd,EAAI3Z,KAAKyI,IAAI,KAAKkR,EAAGrd,EAAKqd,GAC1B6e,EAAIx4B,KAAKyI,IAAI,KAAK+vB,EAAGl8B,EAAKk8B,GAC1BsL,EAAK9jC,KAAKwI,IAAI,KAAKs7B,GAAIxnC,EAAKqd,EAAIrd,EAAK+lC,OACrC0B,EAAK/jC,KAAKwI,IAAI,KAAKu7B,GAAIznC,EAAKk8B,EAAIl8B,EAAKgmC,QAC3C,KAAK3oB,EAAIA,EACT,KAAK6e,EAAIA,EACT,KAAK6J,MAAQyB,EAAKnqB,EAClB,KAAK2oB,OAASyB,EAAKvL,C,CAGrB+qD,QAAAA,CAAS7rC,GACP,MAAM/9B,EAAI3Z,KAAKyI,IAAI,KAAKkR,EAAG+9B,EAAE/9B,GACvB6e,EAAIx4B,KAAKyI,IAAI,KAAK+vB,EAAGkf,EAAElf,GACvBsL,EAAK9jC,KAAKwI,IAAI,KAAKs7B,GAAI4T,EAAE/9B,GACzBoqB,EAAK/jC,KAAKwI,IAAI,KAAKu7B,GAAI2T,EAAElf,GAC/B,KAAK7e,EAAIA,EACT,KAAK6e,EAAIA,EACT,KAAK6J,MAAQyB,EAAKnqB,EAClB,KAAK2oB,OAASyB,EAAKvL,C,CAGrBz8B,QAAAA,GACE,MAAO,eAAe,KAAK4d,QAAQ,KAAK6e,QAAQ,KAAK6J,YAAY,KAAKC,S,CAGxEzS,IAAAA,CAAK7xB,GACHA,EAAI84B,KAAK,KAAKnd,EAAG,KAAK6e,EAAG,KAAK6J,MAAO,KAAKC,O,CAG5CkhD,UAAAA,CAAWz6E,EAAY8f,GACrB,OAAO9f,GAAM,KAAK4Q,GAAK5Q,GAAM,KAAK+6B,IAAMjb,GAAM,KAAK2P,GAAK3P,GAAM,KAAKkb,E,CAGrE,QAAI1Z,GACF,OAAO,KAAKgY,MAAQ,KAAKC,M,CAG3BmhD,UAAAA,CAAWnnF,GACT,QAAI,KAAK+tB,MAAQ,GAAK/tB,EAAK+lC,OAAS,GAAK/lC,EAAKgmC,QAAU,KAGjDhmC,EAAKqd,EAAIrd,EAAK+lC,MAAQ,KAAK1oB,GAAKrd,EAAKk8B,EAAIl8B,EAAKgmC,OAAS,KAAK9J,GAAKl8B,EAAKqd,EAAI,KAAKmqB,IAAMxnC,EAAKk8B,EAAI,KAAKuL,G,CAG5Gq9C,UAAAA,CAAWsC,EAAeC,GAExB,GAAI,KAAKH,WAAWE,EAAOC,GACzB,OAAO,EAGT,MAAMC,EAAOjB,EAAQ,KAAMe,EAAOC,GAElC,OAAIC,EAAK1lF,IAAIqjF,EAAQuB,KAEfc,EAAK1lF,IAAIqjF,EAAQqB,MAEZxC,EAAcsD,EAAOC,EAAO,KAAKhqE,EAAG,KAAK6e,GAE9CorD,EAAK1lF,IAAIqjF,EAAQsB,OAGZzC,EAAcsD,EAAOC,EAAO,KAAK7/C,GAAI,KAAKtL,IAG3C,KAAKA,EAAImrD,IAAU,KAAKnrD,EAAImrD,GAGlCC,EAAK1lF,IAAIqjF,EAAQwB,QAEfa,EAAK1lF,IAAIqjF,EAAQqB,MAEZxC,EAAcsD,EAAOC,EAAO,KAAKhqE,EAAG,KAAKoqB,IAG9C6/C,EAAK1lF,IAAIqjF,EAAQsB,OAEZzC,EAAcsD,EAAOC,EAAO,KAAK7/C,GAAI,KAAKC,KAG3C4/C,EAAQ,KAAK5/C,KAAO4/C,EAAQ,KAAK5/C,IAGvC6/C,EAAK1lF,IAAIqjF,EAAQqB,OAEX,KAAKjpE,EAAI+pE,IAAU,KAAK/pE,EAAI+pE,GAGlCE,EAAK1lF,IAAIqjF,EAAQsB,QAEXa,EAAQ,KAAK5/C,KAAO4/C,EAAQ,KAAK5/C,IAEpC,C,EAIL,SAAUq3C,EAAYpkB,GAC1B,GAAoB,IAAhBA,EAAKl7D,OACP,OAAO,KAET,MAAMgzE,EAAQ9X,EAAK,GACbuc,EAAK,IAAIgQ,EAAUzU,EAAMl1D,EAAGk1D,EAAMr2C,EAAG,EAAG,GAC9C,IAAK,MAAM3uB,KAASktD,EAClBuc,EAAGiQ,SAAS15E,GAEd,OAAOypE,CACT,C,MC9IauQ,EACX98E,WAAAA,CAAmBgiB,EAAmBC,EAAmBkb,GAAtC,KAAEnb,GAAFA,EAAmB,KAAEC,GAAFA,EAAmB,KAAMkb,OAANA,C,CAEzD,KAAIvqB,GACF,OAAO,KAAKoP,GAAK,KAAKmb,M,CAGxB,MAAIJ,GACF,OAAO,KAAK/a,GAAK,KAAKmb,M,CAGxB,SAAI7B,GACF,OAAqB,EAAd,KAAK6B,M,CAGd,KAAI1L,GACF,OAAO,KAAKxP,GAAK,KAAKkb,M,CAGxB,MAAIH,GACF,OAAO,KAAK/a,GAAK,KAAKkb,M,CAGxB,UAAI5B,GACF,OAAqB,EAAd,KAAK4B,M,CAGd,WAAO+zB,CAAKrxC,GACV,OAAO,IAAIi9D,EAAOj9D,EAAEmC,GAAInC,EAAEoC,GAAIpC,EAAEsd,O,CAGlCs/C,UAAAA,CAAW7pE,EAAW6e,GACpB,OAAO4nD,EAAc,KAAKr3D,GAAI,KAAKC,GAAIrP,EAAG6e,GAAK,KAAK0L,OAAS,KAAKA,M,CAGpEk9C,UAAAA,CAAWsC,EAAeC,GACxB,MAAMG,EAAO1D,EAAc,KAAKr3D,GAAI,KAAKC,GAAI06D,EAAOC,GACpD,GAAIG,EAAO,KAAK5/C,OAAS,KAAKA,OAE5B,OAAO,EAET,MAAMld,EAAShnB,KAAK2iB,KAAKmhE,GAAQ,KAAK5/C,OACtC,OAAOld,EAASA,C,CAGlB6I,IAAAA,CAAK7xB,GACHA,EAAI+4B,QAAQ,KAAKhO,GAAI,KAAKC,GAAI,KAAKkb,OAAQ,KAAKA,OAAQ,EAAG,EAAa,EAAVlkC,KAAK40B,G,QC9C1DmvD,EAGXh9E,WAAAA,CACkBi9E,EACAnmF,EAAI,EACJiH,EAAI,EACJm/E,EAAS,EACTC,EAAS,EACT7hD,EAAgB,GAChBC,EAAiB,GACjC6hD,EAAS,IAAI10E,aAAazP,KAAKwI,IAAI,EAAG65B,EAAQC,IAAS1e,KAAK,IAP5C,KAAUogE,WAAVA,EACA,KAACnmF,EAADA,EACA,KAACiH,EAADA,EACA,KAAMm/E,OAANA,EACA,KAAMC,OAANA,EACA,KAAK7hD,MAALA,EACA,KAAMC,OAANA,EAGhB,KAAKjY,KAAO85D,C,CAGdC,SAAAA,CAAUttD,EAAkButD,GAC1B,OAAO,IAAIN,EAAK,KAAKC,WAAYltD,EAAKnd,EAAGmd,EAAK0B,EAAG6rD,EAAS1qE,EAAG0qE,EAAS7rD,EAAG1B,EAAKuL,MAAOvL,EAAKwL,O,CAG5F,sBAAOgiD,CAAgBC,EAAuBP,GAC5C,OAAO,IAAID,EACTC,EACA,EACA,EACAO,EAAU5qE,EACV4qE,EAAU/rD,EACVx4B,KAAK0I,KAAK67E,EAAUliD,MAAQ2hD,GAC5BhkF,KAAK0I,KAAK67E,EAAUjiD,OAAS0hD,G,CAIjCQ,IAAAA,CAAKC,EAAWC,GACd,OAAO,IAAIX,EACT,KAAKC,WACL,KAAKW,OAAOD,EAAW/qE,GACvB,KAAKirE,OAAOF,EAAWlsD,GACvBksD,EAAW/qE,EACX+qE,EAAWlsD,EACXisD,EAAIpiD,MACJoiD,EAAIniD,OACJmiD,EAAIp6D,K,CAIRw6D,MAAAA,CAAO38E,GACL,OAAIA,EAAM,KAAKrK,EACN,KAAKA,EAEVqK,GAAO,KAAKm6B,MACP,KAAKA,MAAQ,EAEfn6B,C,CAGT48E,MAAAA,CAAO58E,GACL,OAAIA,EAAM,KAAKpD,EACN,KAAKA,EAEVoD,GAAO,KAAKo6B,OACP,KAAKA,OAAS,EAEhBp6B,C,CAGTy8E,MAAAA,CAAOI,GACL,OAAO,KAAKF,OAAO7kF,KAAK2I,OAAOo8E,EAAQ,KAAKd,QAAU,KAAKD,Y,CAG7DY,MAAAA,CAAOG,GACL,OAAO,KAAKD,OAAO9kF,KAAK2I,OAAOo8E,EAAQ,KAAKb,QAAU,KAAKF,Y,CAG7D9zD,KAAAA,CAAMq0D,GACJ,MAAM5qE,EAAI,KAAKgrE,OAAOJ,EAAU5qE,GAC1B6e,EAAI,KAAKosD,OAAOL,EAAU/rD,GAC1BsL,EAAK,KAAK+gD,OAAO7kF,KAAK0I,MAAM67E,EAAU5qE,EAAI4qE,EAAUliD,MAAQ,KAAK4hD,QAAU,KAAKD,aAChFjgD,EAAK,KAAK+gD,OAAO9kF,KAAK0I,MAAM67E,EAAU/rD,EAAI+rD,EAAUjiD,OAAS,KAAK4hD,QAAU,KAAKF,aACjF3hD,EAAQyB,EAAKnqB,EACb2oB,EAASyB,EAAKvL,EACpB,OAAO,IAAI8qD,EAAU3pE,EAAG6e,EAAG6J,EAAOC,E,CAGpC0iD,YAAAA,CAAanjE,GACX,OAAO7hB,KAAKugF,MAAM1+D,EAAI,KAAKmiE,WAAa,KAAKC,O,CAG/CgB,YAAAA,CAAapjE,GACX,OAAO7hB,KAAKugF,MAAM1+D,EAAI,KAAKmiE,WAAa,KAAKE,O,CAG/CgB,UAAAA,CAAWpuD,EAAiBquD,GAC1B,MAAMC,EAAUplF,KAAK0I,KAAKy8E,EAAe,KAAKnB,YACxCrqE,EAAI,KAAKkrE,OAAO/tD,EAAKnd,EAAIyrE,GACzB5sD,EAAI,KAAKssD,OAAOhuD,EAAK0B,EAAI4sD,GACzBthD,EAAK,KAAK+gD,OAAO/tD,EAAKgN,GAAKshD,GAC3BrhD,EAAK,KAAK+gD,OAAOhuD,EAAKiN,GAAKqhD,GAC3B/iD,EAAQyB,EAAKnqB,EACb2oB,EAASyB,EAAKvL,EACpB,OAAO,IAAI8qD,EAAU3pE,EAAG6e,EAAG6J,EAAOC,E,CAGpCvlC,GAAAA,CAAIc,EAAWiH,GACb,OAAIjH,EAAI,GAAKiH,EAAI,GAAKjH,GAAK,KAAKwkC,OAASv9B,GAAK,KAAKw9B,OAC1C8zB,OAAOivB,IAET,KAAKh7D,KAAKxsB,EAAIiH,EAAI,KAAKu9B,M,CAGhCijD,GAAAA,CAAIznF,EAAWiH,EAAW+c,GACpBhkB,EAAI,GAAKiH,EAAI,GAAKjH,GAAK,KAAKwkC,OAASv9B,GAAK,KAAKw9B,SAGnD,KAAKjY,KAAKxsB,EAAIiH,EAAI,KAAKu9B,QAAUxgB,E,CAGnCxV,GAAAA,CAAIxO,EAAWiH,EAAW+c,GACpBhkB,EAAI,GAAKiH,EAAI,GAAKjH,GAAK,KAAKwkC,OAASv9B,GAAK,KAAKw9B,SAGnD,KAAKjY,KAAKxsB,EAAIiH,EAAI,KAAKu9B,OAASxgB,E,CAGlC0jE,OAAAA,CAAQd,EAAW/D,GACjB,GAAI+D,EAAIpiD,OAAS,GAAKoiD,EAAIniD,QAAU,GAAgB,IAAXo+C,EACvC,OAGF,MAAMh9E,EAAI,KAAK2+B,MACTmjD,EAAKf,EAAIpiD,MACTojD,EAAKzlF,KAAKwI,IAAI,EAAGi8E,EAAI5mF,GACrB6nF,EAAK1lF,KAAKwI,IAAI,EAAGi8E,EAAI3/E,GACrB6gF,EAAK3lF,KAAKyI,IAAIg8E,EAAI5mF,EAAI4mF,EAAIpiD,MAAO3+B,GACjCkiF,EAAK5lF,KAAKyI,IAAIg8E,EAAI3/E,EAAI2/E,EAAIniD,OAAQ,KAAKA,QAE7C,KAAIsjD,GAAM,GAAKD,GAAM,GAAKF,GAAM/hF,GAAKkiF,GAAM,KAAKtjD,QAIhD,IAAK,IAAIx9B,EAAI4gF,EAAI5gF,EAAI8gF,EAAI9gF,IAAK,CAC5B,MAAM+gF,GAAU/gF,EAAI2/E,EAAI3/E,GAAK0gF,EACvB5iB,EAAM99D,EAAIpB,EAChB,IAAK,IAAI7F,EAAI4nF,EAAI5nF,EAAI8nF,EAAI9nF,IAAK,CAC5B,MAAMgkB,EAAI4iE,EAAIp6D,KAAKxsB,EAAI4mF,EAAI5mF,EAAIgoF,GACrB,IAANhkE,IAGJ,KAAKwI,KAAKxsB,EAAI+kE,IAAQ8d,EAAS7+D,EAChC,CACF,C,CAGH+B,IAAAA,CAAKjoB,GACH,KAAK0uB,KAAKzG,KAAKjoB,E,CAGjBmqF,QAAAA,CAAShvD,EAAkBn7B,GACzB,MAAMqrB,EAAS8P,EAAKnd,EAAImd,EAAK0B,EAAI,KAAK6J,MACtC,IAAK,IAAIv9B,EAAI,EAAGA,EAAIgyB,EAAKwL,OAAQx9B,IAAK,CACpC,MAAMoD,EAAM8e,EAASliB,EAAI,KAAKu9B,MAC9B,KAAKhY,KAAKzG,KAAKjoB,EAAOuM,EAAKA,EAAM4uB,EAAKuL,MACvC,C,CAGH0jD,kBAAAA,CAAmBloF,EAAWiH,EAAWu9B,EAAe1mC,GACtD,MAAMqrB,EAASnpB,EAAIiH,EAAI,KAAKu9B,MAC5B,KAAKhY,KAAKzG,KAAKjoB,EAAOqrB,EAAQA,EAASqb,E,CAGzC2jD,gBAAAA,CAAiBnoF,EAAWiH,EAAWw9B,EAAgB3mC,GACrD,MAAMqrB,EAASnpB,EAAIiH,EAAI,KAAKu9B,MAC5B,IAAK,IAAI39B,EAAI,EAAGA,EAAI49B,EAAQ59B,IAC1B,KAAK2lB,KAAKrD,EAAStiB,EAAI,KAAK29B,OAAS1mC,C,CAIzC4gB,KAAAA,GACE,KAAK8N,KAAKzG,KAAK,E,CAGjB7nB,QAAAA,GACE,IAAI6qB,EAAI,GACR,IAAK,IAAI9hB,EAAI,EAAGA,EAAI,KAAKw9B,OAAQx9B,IAAK,CACpC,MAAM89D,EAAM99D,EAAI,KAAKu9B,MACrB,IAAK,IAAIxkC,EAAI,EAAGA,EAAI,KAAKwkC,MAAOxkC,IAAK,CACnC,MAAMgkB,EAAI,KAAKwI,KAAKu4C,EAAM/kE,GAC1B+oB,GAAK/E,EAAE+tB,QAAQ,GAAGq2C,SAAS,GAC3Br/D,GAAK,GACN,CACDA,GAAK,IACN,CACD,OAAOA,C,CAGTiJ,IAAAA,CAAK7xB,EAA+BgpB,GAAS,GAC3C,GAAI,KAAKqb,OAAS,GAAK,KAAKC,QAAU,EACpC,OAEFtkC,EAAI22B,OACA3N,GACFhpB,EAAImyB,UAAU,KAAK8zD,OAAQ,KAAKC,QAElC,MAAMz7E,EAAM,KAAK4hB,KAAKlF,QAAO,CAAC+gE,EAAKrkE,IAAM7hB,KAAKyI,IAAIy9E,EAAKrkE,IAAIu0C,OAAO+f,mBAC5D3tE,EAAM,KAAK6hB,KAAKlF,QAAO,CAAC+gE,EAAKrkE,IAAM7hB,KAAKwI,IAAI09E,EAAKrkE,IAAIu0C,OAAO6f,mBAE5D/lD,EAASrO,IAAeA,EAAIpZ,IAAQD,EAAMC,GAChDzK,EAAIkyB,MAAM,KAAK8zD,WAAY,KAAKA,YAChC,IAAK,IAAInmF,EAAI,EAAGA,EAAI,KAAKwkC,MAAOxkC,IAC9B,IAAK,IAAIiH,EAAI,EAAGA,EAAI,KAAKw9B,OAAQx9B,IAAK,CACpC,MAAM+c,EAAI,KAAKwI,KAAKxsB,EAAIiH,EAAI,KAAKu9B,OACjCrkC,EAAIw3B,UAAY,iBAAiBtF,EAAMrO,MACvC7jB,EAAImoF,SAAStoF,EAAGiH,EAAG,EAAG,EACvB,CAEH9G,EAAIq4B,S,CAGN+vD,aAAAA,CAAcpoF,EAA+BqoF,EAAmBr/D,GAAS,GACvE,KAAI,KAAKqb,OAAS,GAAK,KAAKC,QAAU,GAAtC,CAGAtkC,EAAI22B,OACA3N,GACFhpB,EAAImyB,UAAU,KAAK8zD,OAAQ,KAAKC,QAElClmF,EAAIkyB,MAAM,KAAK8zD,WAAY,KAAKA,YAChC,IAAK,IAAInmF,EAAI,EAAGA,EAAI,KAAKwkC,MAAOxkC,IAC9B,IAAK,IAAIiH,EAAI,EAAGA,EAAI,KAAKw9B,OAAQx9B,IAAK,CACpC,MAAM+c,EAAI,KAAKwI,KAAKxsB,EAAIiH,EAAI,KAAKu9B,OACjCrkC,EAAIw3B,UAAY3T,EAAIwkE,EAAY,QAAU,QAC1CroF,EAAImoF,SAAStoF,EAAGiH,EAAG,EAAG,EACvB,CAEH9G,EAAIq4B,SAbH,C,EC3NW,SAAA6uD,GACdpuD,EACAsuD,GAEA,MAAM7hE,EAAOqD,IAAa,CACxBjN,EAAGiN,EAAEjN,EAAIyrE,EACT5sD,EAAG5R,EAAE4R,EAAI4sD,EACT/iD,MAAOzb,EAAEyb,MAAQ,EAAI+iD,EACrB9iD,OAAQ1b,EAAE0b,OAAS,EAAI8iD,IAEzB,OAAI1kF,MAAMC,QAAQm2B,GACTA,EAAKvT,IAAIA,GAEXA,EAAIuT,EACb,C,SCZgBwvD,GAAwBjhD,EAAakhD,EAAqBnB,GACxE,OAAOoB,GACL3pF,OAAOwH,OAAOs8E,EAAgBt7C,GAAO,CACnC+7C,WAAYA,CAACznE,EAAW6e,IAAconD,EAAgBv6C,EAAK1B,GAAI0B,EAAKzB,GAAIyB,EAAKvB,GAAIuB,EAAKtB,GAAIpqB,EAAG6e,KAE/F+tD,EACAnB,EAEJ,C,SAEgBoB,GACdn3D,EACAk3D,EACAnB,GAEA,MAAMqB,EAAKvB,GAAW71D,EAAO+1D,GACvBsB,EAASH,EAAcr2D,MAAMu2D,GAC7Bp8D,EAAOk8D,EAAcnC,UAAUsC,EAAQD,GAE7C,OADAE,GAAOt8D,EAAMk8D,EAAenB,GAAS,CAACzrE,EAAG6e,IAAMnJ,EAAM+xD,WAAWznE,EAAG6e,KAC5DnO,CACT,CAEA,SAASs8D,GAAOt8D,EAAYk8D,EAAqBnB,EAAiBwB,GAChE,MAAMC,EAAWzB,EAAUA,EAM3B,IAAK,IAAI5sD,EAAI,EAAGA,EAAInO,EAAKiY,OAAQ9J,IAC/B,IAAK,IAAI7e,EAAI,EAAGA,EAAI0Q,EAAKgY,MAAO1oB,IAAK,CAEnC,MAAM+pE,EAAQ6C,EAAcvB,aAAa36D,EAAKxsB,EAAI8b,GAC5CgqE,EAAQ4C,EAActB,aAAa56D,EAAKvlB,EAAI0zB,GAC5CsuD,EAAaF,EAAiBlD,EAAOC,GAC3C,GAAmB,IAAfmD,GAKJ,GAAIA,EAAaD,EAAU,CACzB,MAAME,EAAK3B,EAAUplF,KAAK2iB,KAAKmkE,GAC/Bz8D,EAAKhe,IAAIsN,EAAG6e,EAAGuuD,EAAKA,EACrB,OAPC18D,EAAKhe,IAAIsN,EAAG6e,EAAGquD,EAQlB,CAEH,OAAOx8D,CACT,C,SAEgB28D,GACdlwD,EACAyvD,EACAnB,GAEA,MAAMsB,EAASH,EAAcr2D,MAAM4G,GAC7BmwD,EAASV,EAAcrB,WAAWwB,EAAQtB,GAC1C/6D,EAAOk8D,EAAcnC,UAAU6C,EAAQ,CAAEttE,EAAGmd,EAAKnd,EAAIyrE,EAAS5sD,EAAG1B,EAAK0B,EAAI4sD,IAC1E8B,EAAcR,EAAO/sE,EAAIstE,EAAOttE,EAChCwtE,EAAaT,EAAOluD,EAAIyuD,EAAOzuD,EAC/B4uD,EAAeH,EAAOnjD,GAAK4iD,EAAO5iD,GAClCujD,EAAgBJ,EAAOljD,GAAK2iD,EAAO3iD,GACnCujD,EAAaL,EAAO5kD,MAAQ6kD,EAAcE,EAC1CG,EAAcN,EAAO3kD,OAAS6kD,EAAaE,EAO3CR,EAAWzB,EAAUA,EAE3B/6D,EAAKy7D,SACH,CACEnsE,EAAGutE,EACH1uD,EAAG2uD,EACH9kD,MAAOilD,EAAa,EACpBhlD,OAAQilD,EAAc,GAExBV,GAGF,MAAMW,EAA8B,CAAC,GAC/BC,EAAaznF,KAAKwI,IAAI2+E,EAAYD,EAAaE,EAAcC,GACnE,CACE,MAAM3D,EAAQ6C,EAAcvB,aAAa0B,EAAO/sE,EAAI+sE,EAAOrkD,MAAQ,GACnE,IAAK,IAAIxkC,EAAI,EAAGA,EAAI4pF,EAAY5pF,IAAK,CACnC,MAAM8lF,EAAQ4C,EAActB,aAAayB,EAAOluD,EAAI36B,GAC9CipF,EAAahwD,EAAKsqD,WAAWsC,EAAOC,GAE1C,KAAImD,EAAaD,GAIf,MAJyB,CACzB,MAAME,EAAK3B,EAAUplF,KAAK2iB,KAAKmkE,GAC/BU,EAAkB1pF,KAAKipF,EAAKA,EAC7B,CAGF,CACF,CACD,MAAMW,EAA8B,GAC9BC,EAAuB3nF,KAAKwI,IAAI0+E,EAAaE,GAC7CQ,EAAqB5nF,KAAKwI,IAAI2+E,EAAYC,GAChD,IAAK,IAAIvpF,EAAI,EAAGA,EAAI8pF,EAAsB9pF,IAAK,CAC7C,MAAM6lF,EAAQ6C,EAAcvB,aAAa0B,EAAO/sE,EAAI9b,GAC9C+kE,EAAgB,GACtB,IAAK,IAAI99D,EAAI,EAAGA,EAAI8iF,EAAoB9iF,IAAK,CAC3C,MAAM6+E,EAAQ4C,EAActB,aAAayB,EAAOluD,EAAI1zB,GAC9CgiF,EAAahwD,EAAKsqD,WAAWsC,EAAOC,GAE1C,GAAImD,EAAaD,EAAU,CACzB,MAAME,EAAK3B,EAAUplF,KAAK2iB,KAAKmkE,GAC/BlkB,EAAI9kE,KAAKipF,EAAKA,EACf,MACCnkB,EAAI9kE,KAAK,EAEZ,CACD4pF,EAAgB5pF,KAAK8kE,EACtB,CAGD,IAAK,IAAIpqC,EAAI,EAAGA,EAAIx4B,KAAKyI,IAAI0+E,EAAYK,EAAkB3rF,QAAS28B,IAAK,CACvE,MAAM78B,EAAQ6rF,EAAkBhvD,GAChCnO,EAAK07D,mBAAmBmB,EAAaC,EAAa3uD,EAAG8uD,EAAa,EAAG3rF,EACtE,CAED,IAAK,IAAI68B,EAAI,EAAGA,EAAIx4B,KAAKyI,IAAI4+E,EAAeG,EAAkB3rF,QAAS28B,IAAK,CAC1E,MAAM78B,EAAQ6rF,EAAkBhvD,GAChCnO,EAAK07D,mBAAmBmB,EAAaC,EAAaI,EAAc/uD,EAAG8uD,EAAa,EAAG3rF,EACpF,CAED,IAAK,IAAIge,EAAI,EAAGA,EAAI3Z,KAAKyI,IAAIy+E,EAAaM,EAAkB3rF,QAAS8d,IAAK,CACxE,MAAMhe,EAAQ6rF,EAAkB7tE,GAChC0Q,EAAK27D,iBAAiBkB,EAAcvtE,EAAGwtE,EAAYI,EAAc,EAAG5rF,EACrE,CAED,IAAK,IAAIge,EAAI,EAAGA,EAAI3Z,KAAKyI,IAAI4+E,EAAeG,EAAkB3rF,QAAS8d,IAAK,CAC1E,MAAMhe,EAAQ6rF,EAAkB7tE,GAChC0Q,EAAK27D,iBAAiBkB,EAAcI,EAAa3tE,EAAGwtE,EAAYI,EAAc,EAAG5rF,EAClF,CAED,IAAK,IAAIkC,EAAI,EAAGA,EAAIqpF,EAAarpF,IAAK,CACpC,MAAM+kE,EAAM8kB,EAAgB7pF,EAAI,GAC1BgqF,EAAKX,EAAcrpF,EACzB,IAAK,IAAIiH,EAAI,EAAGA,EAAIqiF,EAAYriF,IAC9BulB,EAAKhe,IAAIw7E,EAAIV,EAAariF,EAAG89D,EAAI99D,EAAI,IAEvC,IAAK,IAAIA,EAAI,EAAGA,EAAIuiF,EAAeviF,IACjCulB,EAAKhe,IAAIw7E,EAAIV,EAAaI,EAAcziF,EAAG89D,EAAI99D,EAAI,GAEtD,CAED,IAAK,IAAIjH,EAAI,EAAGA,EAAIupF,EAAcvpF,IAAK,CACrC,MAAM+kE,EAAM8kB,EAAgB7pF,EAAI,GAC1BgqF,EAAKX,EAAcI,EAAazpF,EACtC,IAAK,IAAIiH,EAAI,EAAGA,EAAIqiF,EAAYriF,IAC9BulB,EAAKhe,IAAIw7E,EAAIV,EAAariF,EAAG89D,EAAI99D,EAAI,IAEvC,IAAK,IAAIA,EAAI,EAAGA,EAAIuiF,EAAeviF,IACjCulB,EAAKhe,IAAIw7E,EAAIV,EAAaI,EAAcziF,EAAG89D,EAAI99D,EAAI,GAEtD,CAKD,OAAOulB,CACT,CClIgB,SAAAxgB,GAAM8P,EAAW6e,GAC/B,MAAO,CAAE7e,IAAG6e,IACd,CC9BM,SAAUsvD,GACdC,EACAC,EACAC,EACAC,GAEA,GAAqB,IAAjBH,EAAMlsF,OACR,MAAO,GAET,MAAMssF,EAASC,GAAyBL,GAExC,OAAOI,EACJ5kE,KAAI,CAACwD,EAAGlpB,KACP,MAAMwqF,EAAUF,EAAOnsF,MAAM,EAAG6B,GAChC,OAAOyqF,GAAYN,EAAYjhE,EAAGshE,EAASJ,EAAsBC,EAAY,IAE9EK,MACL,CAEA,SAASD,GACPN,EACA3oE,EACAgpE,EACAJ,EACAC,GAEA,MAAMM,EAAa3+E,GAAMwV,EAAK0J,GAAI1J,EAAK2J,IAGjCy/D,EAAkBC,GAAyBF,EAAYH,EAASL,GACtE,GAAuB,MAAnBS,EACF,MAAO,GAIT,MAAME,EAAa,IAAI3H,EAAKwH,EAAW7uE,EAAG6uE,EAAWhwD,EAAGiwD,EAAgB1/D,GAAI0/D,EAAgBz/D,IAGtF4/D,EAAeC,GAAaF,EAAYX,EAAYC,EAAsBC,GAEhF,OAAOY,GAAWF,EAAcZ,EAClC,CAEA,SAASa,GACPF,EACAX,EACAC,EACAC,GAGA,MAAMU,EAAuB,GACvBG,EAAuB,GAC7BA,EAAajrF,KAAK6qF,GAElB,IAAIK,GAAkB,EAEtB,IAAK,IAAIC,EAAa,EAAGA,EAAahB,GAAwBe,EAAiBC,IAAc,CAC3FD,GAAkB,EAClB,OAAQA,GAAmBD,EAAaltF,OAAS,EAAG,CAClD,MAAMwpC,EAAO0jD,EAAaz2D,MAEpB42D,EAAcC,GAAcnB,EAAY3iD,GACxC+jD,EAAgBF,EAAc7F,EAAiBh+C,EAAM6jD,GAAe,KAG1E,IAAKA,IAAgBE,GAAyC,IAAxBA,EAAchnE,MAAa,CAE1D4mE,GACHJ,EAAa9qF,KAAKunC,GAEpB,QACD,CAED,IAAIgkD,EAAkBnB,EAClBoB,EAAYC,GAAYL,EAAaG,EAAiBD,GAAe,GAErEI,EAAaC,GAAYH,EAAWP,IAAiBU,GAAYH,EAAWV,GAC5Ec,EAAcC,GAAoBL,EAAWtB,GAEjD,OAAQwB,GAAcE,GAAeL,GAAmB,EAEtDA,GAAmB,IACnBC,EAAYC,GAAYL,EAAaG,EAAiBD,GAAe,GACrEI,EAAaC,GAAYH,EAAWP,IAAiBU,GAAYH,EAAWV,GAC5Ec,EAAcC,GAAoBL,EAAWtB,GAW/C,IARIsB,GAAcE,GAAeE,IAE/BX,EAAajrF,KAAK,IAAIkjF,EAAK37C,EAAK1B,GAAI0B,EAAKzB,GAAI0lD,EAAU3vE,EAAG2vE,EAAU9wD,IACpEuwD,EAAajrF,KAAK,IAAIkjF,EAAKsI,EAAU3vE,EAAG2vE,EAAU9wD,EAAG6M,EAAKvB,GAAIuB,EAAKtB,KAEnEilD,GAAkB,GAGhBA,EACF,SAKFK,EAAkBnB,EAClBoB,EAAYC,GAAYL,EAAaG,EAAiBD,GAAe,GACrE,IAAIQ,EAAcH,GAAYH,EAAWP,IAAiBU,GAAYH,EAAWV,GACjFc,EAAcC,GAAoBL,EAAWtB,GAE7C,OAAQ4B,GAAeF,GAAeL,GAAmB,EAEvDA,GAAmB,IACnBC,EAAYC,GAAYL,EAAaG,EAAiBD,GAAe,GACrEQ,EAAcH,GAAYH,EAAWP,IAAiBU,GAAYH,EAAWV,GAC7Ec,EAAcC,GAAoBL,EAAWtB,GAG3CsB,IAAcM,IAEhBb,EAAajrF,KAAK,IAAIkjF,EAAK37C,EAAK1B,GAAI0B,EAAKzB,GAAI0lD,EAAU3vE,EAAG2vE,EAAU9wD,IACpEuwD,EAAajrF,KAAK,IAAIkjF,EAAKsI,EAAU3vE,EAAG2vE,EAAU9wD,EAAG6M,EAAKvB,GAAIuB,EAAKtB,KAEnEilD,GAAkB,GAGfA,GACHJ,EAAa9qF,KAAKunC,EAErB,CACF,CAGD,MAAO0jD,EAAaltF,OAAS,EAC3B+sF,EAAa9qF,KAAKirF,EAAaz2D,OAGjC,OAAOs2D,CACT,CAEA,SAASE,GAAWF,EAAsBZ,GACxC,MAAM6B,EAAqB,GAE3B,MAAOjB,EAAa/sF,OAAS,EAAG,CAC9B,MAAMiuF,EAAQlB,EAAat2D,MAC3B,GAA4B,IAAxBs2D,EAAa/sF,OAAc,CAC7BguF,EAAW/rF,KAAKgsF,GAChB,KACD,CACD,MAAMC,EAAQnB,EAAat2D,MACrB03D,EAAY,IAAIhJ,EAAK8I,EAAMnmD,GAAImmD,EAAMlmD,GAAImmD,EAAMjmD,GAAIimD,EAAMhmD,IAEzDmlD,EAAcC,GAAcnB,EAAYgC,GAEzCd,GAGHW,EAAW/rF,KAAKgsF,GAChBlB,EAAa9qF,KAAKisF,IAHlBnB,EAAa9qF,KAAKksF,EAKrB,CACD,OAAOH,CACT,CAEA,SAASnB,GACPF,EACAH,EACAL,GAEA,IAAIiC,EAAc7zB,OAAO+f,kBACzB,OAAOkS,EAAQljE,QAAO,CAACsjE,EAAiByB,KACtC,MAAMpD,EAAa1G,EAAcoI,EAAW7uE,EAAG6uE,EAAWhwD,EAAG0xD,EAAanhE,GAAImhE,EAAalhE,IAC3F,GAAI89D,EAAamD,EAEf,OAAOxB,EAGT,MAAME,EAAa,IAAI3H,EAAKwH,EAAW7uE,EAAG6uE,EAAWhwD,EAAG0xD,EAAanhE,GAAImhE,EAAalhE,IAEhFmhE,EAA0BC,GAAiBpC,EAAYW,GAO7D,OAJI7B,GAAcqD,EAA0B,IAAMA,EAA0B,GAAKF,IAC/ExB,EAAkByB,EAClBD,EAAcnD,GAAcqD,EAA0B,IAAMA,EAA0B,IAEjF1B,CAAe,GACrB,KACL,CAEA,SAASL,GAA4CL,GACnD,GAAIA,EAAMlsF,OAAS,EACjB,OAAOksF,EAET,IAAIsC,EAAS,EACTC,EAAS,EAOb,OANAvC,EAAMtjF,SAAS4a,IACbgrE,GAAUhrE,EAAK0J,GACfuhE,GAAUjrE,EAAK2J,EAAE,IAEnBqhE,GAAUtC,EAAMlsF,OAChByuF,GAAUvC,EAAMlsF,OACTksF,EACJxkE,KAAKlE,IACJ,MAAMkrE,EAAQF,EAAShrE,EAAK0J,GACtByhE,EAAQF,EAASjrE,EAAK2J,GACtB86D,EAAOyG,EAAQA,EAAQC,EAAQA,EACrC,MAAO,CAACnrE,EAAMykE,EAAoB,IAEnCpkE,MAAK,CAACljB,EAAGC,IAAMD,EAAE,GAAKC,EAAE,KACxB8mB,KAAKwD,GAAMA,EAAE,IAClB,CAEA,SAAS4iE,GAAoBjyC,EAAW+hB,GACtC,OAAOA,EAAMmlB,MAAMh4D,GAAMA,EAAE48D,WAAW9rC,EAAE/9B,EAAG+9B,EAAElf,IAC/C,CAEA,SAASixD,GAAYgB,EAAsB3qC,GACzC,OAAOA,EAAM8+B,MAAM8L,KACbrK,EAAkBqK,EAAmB/mD,GAAI+mD,EAAmB9mD,GAAI6mD,EAAa9wE,EAAG8wE,EAAajyD,EAAG,SAGhG6nD,EAAkBqK,EAAmB5mD,GAAI4mD,EAAmB3mD,GAAI0mD,EAAa9wE,EAAG8wE,EAAajyD,EAAG,OAKxG,CAEA,SAAS2wD,GAAcpB,EAAmCvF,GACxD,IAAInpD,EAAc+8B,OAAO+f,kBACrB+S,EAAkC,KAEtC,IAAK,MAAM7pE,KAAQ0oE,EAAO,CACxB,IAAK/E,EAAe3jE,EAAMmjE,GACxB,SAEF,MAAM37D,EAAWu8D,EAAqB/jE,EAAMmjE,GAExC37D,GAAY,GAAKA,EAAWwS,IAC9B6vD,EAAc7pE,EACdga,EAAcxS,EAEjB,CACD,OAAOqiE,CACT,CAEA,SAASkB,GAAiBrC,EAAmCvF,GAC3D,OAAOuF,EAAM5iE,QAAO,CAAC/C,EAAO/C,IACtB2jE,EAAe3jE,EAAMmjE,IAAaF,EAAwBjjE,EAAMmjE,GAC3DpgE,EAAQ,EAEVA,GACN,EACL,CAEA,SAASmnE,GACPlqE,EACAsrE,EACAvB,EACAwB,GAEA,MAAMC,EAAezB,EAAch/C,IAC7B0gD,EAAgB1B,EAAcl/C,KAC9B6gD,EAAkB3B,EAAc/+C,OAChC2gD,EAAiB5B,EAAcj/C,MAGrC,GAAIygD,EAAY,CAEd,GAAIE,EAAc76E,QAAUqxE,EAAOW,MAAO,CACxC,GAAI4I,EAAa56E,QAAUqxE,EAAOW,MAEhC,OAAOp4E,GAAMwV,EAAK1F,EAAIgxE,EAAetrE,EAAKmZ,EAAImyD,GAChD,GAAII,EAAgB96E,QAAUqxE,EAAOW,MAEnC,OAAOp4E,GAAMwV,EAAK1F,EAAIgxE,EAAetrE,EAAK0kB,GAAK4mD,GAEjD,MAAMM,EAAY5rE,EAAKgjB,MAAQhjB,EAAKijB,OAE9B4oD,EAAU7rE,EAAKgjB,OAAoE,IAA1DyoD,EAActyD,EAAInZ,EAAKmZ,GAAKwyD,EAAexyD,EAAInZ,EAAKmZ,KACnF,OAAI0yD,EAAsB,GAAZD,EAERH,EAActyD,EAAIwyD,EAAexyD,EAE5B3uB,GAAMwV,EAAK1F,EAAIgxE,EAAetrE,EAAKmZ,EAAImyD,GAEzC9gF,GAAMwV,EAAKykB,GAAK6mD,EAAetrE,EAAKmZ,EAAImyD,GAG7CG,EAActyD,EAAIwyD,EAAexyD,EAE5B3uB,GAAMwV,EAAK1F,EAAIgxE,EAAetrE,EAAK0kB,GAAK4mD,GAE1C9gF,GAAMwV,EAAKykB,GAAK6mD,EAAetrE,EAAK0kB,GAAK4mD,EACjD,CAED,GAAIK,EAAe/6E,QAAUqxE,EAAOW,MAAO,CACzC,GAAI4I,EAAa56E,QAAUqxE,EAAOW,MAEhC,OAAOp4E,GAAMwV,EAAKykB,GAAK6mD,EAAetrE,EAAKmZ,EAAImyD,GACjD,GAAII,EAAgB96E,QAAUqxE,EAAOW,MAEnC,OAAOp4E,GAAMwV,EAAKykB,GAAK6mD,EAAetrE,EAAK0kB,GAAK4mD,EACnD,CAED,MAAMM,EAAY5rE,EAAKijB,OAASjjB,EAAKgjB,MAC/B8oD,EAAW9rE,EAAKijB,QAAoE,IAAzDuoD,EAAalxE,EAAI0F,EAAK1F,GAAKqxE,EAAerxE,EAAI0F,EAAK1F,KACpF,OAAIwxE,EAAuB,GAAZF,EAETJ,EAAalxE,EAAIoxE,EAAgBpxE,EAE5B9P,GAAMwV,EAAK1F,EAAIgxE,EAAetrE,EAAKmZ,EAAImyD,GAEzC9gF,GAAMwV,EAAK1F,EAAIgxE,EAAetrE,EAAK0kB,GAAK4mD,GAG7CE,EAAalxE,EAAIoxE,EAAgBpxE,EAE5B9P,GAAMwV,EAAKykB,GAAK6mD,EAAetrE,EAAKmZ,EAAImyD,GAE1C9gF,GAAMwV,EAAKykB,GAAK6mD,EAAetrE,EAAK0kB,GAAK4mD,EACjD,CAED,GAAIG,EAAc76E,QAAUqxE,EAAOW,MAAO,CACxC,GAAI4I,EAAa56E,QAAUqxE,EAAOW,MAEhC,OAAOp4E,GAAMwV,EAAKykB,GAAK6mD,EAAetrE,EAAK0kB,GAAK4mD,GAClD,GAAII,EAAgB96E,QAAUqxE,EAAOW,MAEnC,OAAOp4E,GAAMwV,EAAKykB,GAAK6mD,EAAetrE,EAAKmZ,EAAImyD,GAEjD,MAAMM,EAAY5rE,EAAKijB,OAASjjB,EAAKgjB,MAC/B6oD,EAAU7rE,EAAKgjB,OAAoE,IAA1DyoD,EAActyD,EAAInZ,EAAKmZ,GAAKwyD,EAAexyD,EAAInZ,EAAKmZ,KACnF,OAAI0yD,EAAsB,GAAZD,EAERH,EAActyD,EAAIwyD,EAAexyD,EAE5B3uB,GAAMwV,EAAKykB,GAAK6mD,EAAetrE,EAAK0kB,GAAK4mD,GAE3C9gF,GAAMwV,EAAK1F,EAAIgxE,EAAetrE,EAAK0kB,GAAK4mD,GAG7CG,EAActyD,EAAIwyD,EAAexyD,EAE5B3uB,GAAMwV,EAAKykB,GAAK6mD,EAAetrE,EAAKmZ,EAAImyD,GAE1C9gF,GAAMwV,EAAK1F,EAAIgxE,EAAetrE,EAAKmZ,EAAImyD,EAC/C,CACD,GAAIK,EAAe/6E,QAAUqxE,EAAOW,MAAO,CACzC,GAAI4I,EAAa56E,QAAUqxE,EAAOW,MAEhC,OAAOp4E,GAAMwV,EAAK1F,EAAIgxE,EAAetrE,EAAK0kB,GAAK4mD,GACjD,GAAII,EAAgB96E,QAAUqxE,EAAOW,MAEnC,OAAOp4E,GAAMwV,EAAK1F,EAAIgxE,EAAetrE,EAAKmZ,EAAImyD,EACjD,CAED,MAAMM,EAAY5rE,EAAKijB,OAASjjB,EAAKgjB,MAC/B8oD,EAAW9rE,EAAKijB,QAAoE,IAAzDuoD,EAAalxE,EAAI0F,EAAK1F,GAAKqxE,EAAerxE,EAAI0F,EAAK1F,KACpF,OAAIwxE,EAAuB,GAAZF,EAETJ,EAAalxE,EAAIoxE,EAAgBpxE,EAE5B9P,GAAMwV,EAAKykB,GAAK6mD,EAAetrE,EAAK0kB,GAAK4mD,GAE3C9gF,GAAMwV,EAAKykB,GAAK6mD,EAAetrE,EAAKmZ,EAAImyD,GAG7CE,EAAalxE,EAAIoxE,EAAgBpxE,EAE5B9P,GAAMwV,EAAK1F,EAAIgxE,EAAetrE,EAAK0kB,GAAK4mD,GAE1C9gF,GAAMwV,EAAK1F,EAAIgxE,EAAetrE,EAAKmZ,EAAImyD,EAChD,CC1XA,SAASS,GAAYr0B,EAAiBxe,EAAeC,EAAa6yC,GAChE,MAAMC,EAAWv0B,EAAKw0B,OAAS/yC,EAAMue,EAAKl7D,OAAS28C,EAAMue,EAAKl7D,OAAS,EACvE,IAAKyvF,EACH,OAAO,EAGT,MAAMnjF,EAAI4uD,EAAKh6D,IAAIw7C,GACbz4C,EAAIi3D,EAAKh6D,IAAIy7C,EAAM,GAEzB,IAAK,IAAI18C,EAAQy8C,EAAQ,EAAGz8C,GAAS08C,EAAK18C,IAAS,CACjD,MAAM47C,EAAIqf,EAAKh6D,IAAIjB,GACbuV,EAAMuuE,EAAgBz3E,EAAEwR,EAAGxR,EAAEqwB,EAAG14B,EAAE6Z,EAAG7Z,EAAE04B,EAAGkf,EAAE/9B,EAAG+9B,EAAElf,GACvD,GAAInnB,EAAMg6E,EACR,OAAO,CAEV,CACD,OAAO,CACT,CAEgB,SAAAG,GAAgBC,EAAY,GAC1C,OAAQ10B,IACN,GAAI00B,EAAY,GAAK10B,EAAKl7D,OAAS,EACjC,OAAOk7D,EAET,MAAMxxC,EAAmB,GACzB,IAAIgzB,EAAQ,EACZ,MAAM8yC,EAAmBI,EAAYA,EACrC,MAAOlzC,EAAQwe,EAAKl7D,OAAQ,CAC1B,IAAI28C,EAAMD,EAAQ,EAClB,MAAO6yC,GAAYr0B,EAAMxe,EAAOC,EAAK6yC,GACnC7yC,IAEFjzB,EAAOznB,KAAKi5D,EAAKh6D,IAAIw7C,IACrBA,EAAQC,CACT,CACD,OAAO,IAAIkzC,GAAUnmE,EAAO,CAEhC,CCtCA,SAASomE,GAAc9tF,EAAWqmB,GAEhC,OAAQrmB,GACN,KAAM,EACJ,SAAe,EAAJqmB,GAAWA,EAAI,GAAOA,EAAI,GAAO,EAC9C,KAAM,EACJ,QAAS,EAAMA,EAAI,GAAOA,EAAIA,EAAI,GAAO,EAC3C,KAAK,EACH,UAAW,EAAMA,EAAI,GAAOA,EAAI,GAAOA,EAAI,GAAO,EACpD,KAAK,EACH,OAAQA,EAAIA,EAAIA,EAAK,EACvB,QACE,MAAM,IAAI1O,MAAM,iBAEtB,CAEgB,SAAAo2E,GAAsBC,EAAc,GAClD,MAAMC,EAAQ,EACRC,EAAcD,EAAQ,EACtBE,EAAU,EACVC,EAAYD,EAAUF,EAE5B,SAASI,EAAUn1B,EAAiBl5D,EAAWqmB,GAC7C,IAAInb,EAAK,EACL8f,EAAK,EACT,IAAK,IAAI/jB,EAAImnF,EAAWnnF,GAAKknF,EAASlnF,IAAK,CACzC,MAAM4yC,EAAIqf,EAAKh6D,IAAIc,EAAIiH,GACjBqnF,EAAKR,GAAc7mF,EAAGof,GAC5Bnb,GAAMojF,EAAKz0C,EAAE/9B,EACbkP,GAAMsjE,EAAKz0C,EAAElf,CACd,CACD,MAAO,CAAE7e,EAAG5Q,EAAIyvB,EAAG3P,E,CAGrB,OAAQkuC,IAEN,GAAIA,EAAKl7D,OAAS,EAChB,OAAOk7D,EAGT,MAAM6b,EAAgB,GAChB2Y,EAASx0B,EAAKw0B,OACdnpE,EAAQ20C,EAAKl7D,OAASiwF,EAAQ,GAAKP,EAAS,EAAI,GACtD3Y,EAAI90E,KAAKouF,EAAUn1B,EAAMg1B,GAAeR,EAAS,EAAI,GAAI,IACzD,IAAK,IAAIa,EAAKL,GAAeR,EAAS,EAAI,GAAIa,EAAKhqE,EAAOgqE,IACxD,IAAK,IAAI1nF,EAAI,EAAGA,GAAKmnF,EAAannF,IAChCkuE,EAAI90E,KAAKouF,EAAUn1B,EAAMq1B,EAAI1nF,EAAImnF,IAGrC,OAAO,IAAIH,GAAU9Y,EAAI,CAE7B,CCnDgB,SAAAyZ,GAAWC,EAAO,GAChC,OAAQv1B,IAEN,IAAIw1B,EAAUD,EAEVnJ,EAAOpsB,EAAKl7D,OAEhB,GAAI0wF,EAAU,EAAG,CACfpJ,EAAOnjF,KAAK2I,MAAMouD,EAAKl7D,OAAS0wF,GAEhC,MAAOpJ,EAAO,GAAKoJ,EAAU,EAC3BA,GAAW,EACXpJ,EAAOnjF,KAAK2I,MAAMouD,EAAKl7D,OAAS0wF,EAEnC,CAED,MAAMC,EAAsB,GAE5B,IAAK,IAAI3uF,EAAI,EAAGiH,EAAI,EAAGA,EAAIq+E,EAAMr+E,IAAKjH,GAAK0uF,EACzCC,EAAU1uF,KAAKi5D,EAAKh6D,IAAIc,IAE1B,OAAO,IAAI6tF,GAAUc,EAAU,CAEnC,C,MCrBad,GAKX3kF,WAAAA,CAAYwe,EAAgC,GAAIgmE,GAAS,GACvD,KAAKhmE,OAASA,EACd,KAAKgmE,OAASA,C,CAGhBxuF,GAAAA,CAAIjB,GACF,MAAM+B,EAAI/B,EACJuM,EAAI,KAAKkd,OAAO1pB,OACtB,OAAIC,EAAQ,EACH,KAAKyvF,OAAS,KAAKxuF,IAAIjB,EAAQuM,GAAK,KAAKkd,OAAO,GAC9CzpB,GAASuM,EACX,KAAKkjF,OAAS,KAAKxuF,IAAIjB,EAAQuM,GAAK,KAAKkd,OAAOld,EAAI,GAEtD,KAAKkd,OAAO1nB,E,CAGrB,UAAIhC,GACF,OAAO,KAAK0pB,OAAO1pB,M,CAGrBE,QAAAA,CAAS0wF,EAAkDC,KACzD,MAAMnnE,EAAS,KAAKA,OACpB,GAAsB,IAAlBA,EAAO1pB,OACT,MAAO,GAET,MAAM8wF,EAAmC,oBAAlBF,EAA+BA,EAAgBlM,EAAMkM,GAC5E,IAAI7lE,EAAI,IACR,IAAK,MAAM8wB,KAAKnyB,EACdqB,GAAQ,GAAA+lE,EAAQj1C,EAAE/9B,MAAMgzE,EAAQj1C,EAAElf,OAMpC,OAJA5R,EAAIA,EAAE5qB,MAAM,GAAI,GACZ,KAAKuvF,SACP3kE,GAAK,MAEAA,C,CAGTiJ,IAAAA,CAAK7xB,GACH,MAAMunB,EAAS,KAAKA,OACpB,GAAsB,IAAlBA,EAAO1pB,OAAX,CAGAmC,EAAIq5B,YAEJr5B,EAAI8hC,OAAOva,EAAO,GAAG5L,EAAG4L,EAAO,GAAGiT,GAElC,IAAK,MAAMkf,KAAKnyB,EACdvnB,EAAI08B,OAAOgd,EAAE/9B,EAAG+9B,EAAElf,GAGhB,KAAK+yD,QACPvtF,EAAIs5B,WAVL,C,CAcHqvD,MAAAA,CAAO2F,GACL,OAAOD,GAAWC,EAAXD,CAAiB,K,CAG1BO,QAAAA,CAASnB,GACP,OAAOD,GAAgBC,EAAhBD,CAA2B,K,CAGpCqB,QAAAA,CAAShB,GACP,OAAOD,GAAsBC,EAAtBD,CAAmC,K,CAG5CjvF,KAAAA,CAAMmwF,GACJ,OAAOA,EAAY,K,CAGrBC,gBAAAA,CAAiBC,GACf,MAAM1Z,EAAK6H,EAAY,KAAK51D,QAC5B,QAAK+tD,GAGE0Z,EAAQC,OAAOC,GACb5Z,EAAGkQ,WAAW0J,EAAOnkE,GAAImkE,EAAOlkE,KAAO,KAAKmkE,WAAWD,EAAOnkE,GAAImkE,EAAOlkE,K,CAIpFmkE,UAAAA,CAAWpkF,EAAY8f,GACrB,GAAoB,IAAhB,KAAKhtB,OACP,OAAO,EAET,IAAIuxF,EAAY,EAChB,MAAMve,EAAQ,KAAKtpD,OAAO,GACpB8f,EAAO,IAAI27C,EAAKnS,EAAMl1D,EAAGk1D,EAAMr2C,EAAGq2C,EAAMl1D,EAAGk1D,EAAMr2C,GAEvD,IAAK,IAAI36B,EAAI,EAAGA,EAAI,KAAK0nB,OAAO1pB,OAAQgC,IAAK,CAC3C,MAAMwvF,EAAM,KAAK9nE,OAAO1nB,GACxBwnC,EAAK1B,GAAK0B,EAAKvB,GACfuB,EAAKzB,GAAKyB,EAAKtB,GACfsB,EAAKvB,GAAKupD,EAAI1zE,EACd0rB,EAAKtB,GAAKspD,EAAI70D,EAEV6M,EAAK67C,KAAKn4E,EAAI8f,IAChBukE,GAEH,CAWD,OATA/nD,EAAK1B,GAAK0B,EAAKvB,GACfuB,EAAKzB,GAAKyB,EAAKtB,GACfsB,EAAKvB,GAAK+qC,EAAMl1D,EAChB0rB,EAAKtB,GAAK8qC,EAAMr2C,EAEZ6M,EAAK67C,KAAKn4E,EAAI8f,IAChBukE,IAGKA,EAAY,IAAM,C,QCpHhBE,GAOXvmF,WAAAA,CAAYo8E,EAAO,GANX,KAAK/gE,MAAG,EAEC,KAAG+rD,IAAa,GAEhB,KAAA9hE,IAAM,IAAIspC,IAGzB,KAAKw4B,IAAItyE,OAASsnF,C,CAGpB/oF,GAAAA,CAAIs9C,GACF,KAAKrrC,IAAIjS,IAAO,GAAAs9C,EAAE/9B,KAAK+9B,EAAElf,KACzB,KAAK21C,IAAI,KAAK/rD,SAAWs1B,C,CAG3B61C,QAAAA,CAAS71C,GACP,OAAO,KAAKrrC,IAAInO,IAAO,GAAAw5C,EAAE/9B,KAAK+9B,EAAElf,I,CAGlCg1D,OAAAA,CAAQ91C,GACN,GAAmB,IAAf,KAAKt1B,MACP,OAAO,EAET,MAAM0vD,EAAI,KAAK3D,IAAI,GACnB,OAAY,MAAL2D,GAAaA,EAAEn4D,IAAM+9B,EAAE/9B,GAAKm4D,EAAEt5C,IAAMkf,EAAElf,C,CAG/Cu+B,IAAAA,GACE,OAAO,IAAI20B,GAAU,KAAKvd,IAAInyE,MAAM,EAAG,KAAKomB,O,CAG9C7F,KAAAA,GAIE,KAAKlQ,IAAIkQ,QACT,KAAK6F,MAAQ,C,CAGfrlB,GAAAA,CAAIqvF,GACF,OAAO,KAAKje,IAAIie,E,CAGlB,UAAIvwF,GACF,OAAO,KAAKumB,K,EC9ChB,MAAMqrE,GAAI,EACJ1uF,GAAI,EACJgN,GAAI,EACJ1M,GAAI,EAEM,SAAAquF,GAAgBnH,EAAqBF,GACnD,MAAMsH,EAAmF,GAAtE3tF,KAAK2I,MAAM49E,EAAclkD,OAASriC,KAAK2I,MAAM49E,EAAcjkD,SACxEsrD,EAAU,IAAIN,GAAUK,GAE9B,SAASE,EAAUl0E,EAAW6e,EAAWs1D,EAAalb,GACpD,MAAM/wD,EAAI0kE,EAAcxpF,IAAI4c,EAAG6e,GAC/B,OAAI49B,OAAOxtD,MAAMiZ,GACRu0C,OAAOivB,IAEZxjE,EAAIwkE,EACCyH,EAAMlb,EAERkb,C,CAGT,SAASC,EAASp0E,EAAW6e,GAC3B,IAAIs1D,EAAML,GAKV,OAJAK,EAAMD,EAAUl0E,EAAG6e,EAAGs1D,EAAK,GAC3BA,EAAMD,EAAUl0E,EAAI,EAAG6e,EAAGs1D,EAAK,GAC/BA,EAAMD,EAAUl0E,EAAG6e,EAAI,EAAGs1D,EAAK,GAC/BA,EAAMD,EAAUl0E,EAAI,EAAG6e,EAAI,EAAGs1D,EAAK,GAC/B13B,OAAOxtD,MAAMklF,IAIP,EAEHA,C,CAGT,IAAIE,EAAYjvF,GAEhB,SAASkvF,EAAQvkC,EAAchI,GAC7B,IAAI/nC,EAAI+vC,EACJlxB,EAAIkpB,EACJwsC,EAAS3H,EAAcvB,aAAarrE,GACpCw0E,EAAS5H,EAActB,aAAazsD,GAExC,IAAK,IAAI36B,EAAI,EAAGA,EAAI0oF,EAAclkD,MAAQkkD,EAAcjkD,OAAQzkC,IAAK,CAEnE,MAAM65C,EAAI,CAAE/9B,EAAGu0E,EAAQ11D,EAAG21D,GAE1B,GAAIP,EAAQL,SAAS71C,IACnB,GAAKk2C,EAAQJ,QAAQ91C,GAInB,OAAO,OAGTk2C,EAAQxzF,IAAIs9C,GAEd,MAAMznC,EAAQ89E,EAASp0E,EAAG6e,GAE1B,OAAQvoB,GACN,KAAM,EACJ,OAAO,EACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH+9E,EAAYjiF,GACZ,MACF,KAAK,GACL,KAAK,GACL,KAAK,EACHiiF,EAAY3uF,GACZ,MACF,KAAK,EACH2uF,EAAYA,IAAcP,GAAIpuF,GAAI0M,GAClC,MACF,KAAK,EACL,KAAK,GACL,KAAK,EACHiiF,EAAYP,GACZ,MACF,KAAK,EACHO,EAAYA,IAAcjiF,GAAI0hF,GAAI1uF,GAClC,MACF,KAAK,GACL,KAAK,EACL,KAAK,GACHivF,EAAYjvF,GACZ,MACF,QAEE,OADAmoB,QAAQoG,KAAK,mCAAqCrd,IAC3C,EAGX,OAAQ+9E,GACN,KAAKP,GACHj1D,IACA21D,GAAU5H,EAAcvC,WACxB,MACF,KAAKjlF,GACHy5B,IACA21D,GAAU5H,EAAcvC,WACxB,MACF,KAAK3kF,GACHsa,IACAu0E,GAAU3H,EAAcvC,WACxB,MACF,KAAKj4E,GACH4N,IACAu0E,GAAU3H,EAAcvC,WACxB,MACF,QAEE,OADA98D,QAAQoG,KAAK,mCAAqCrd,IAC3C,EAEZ,CACD,OAAO,C,CAGT,IAAK,IAAI0J,EAAI,EAAGA,EAAI4sE,EAAclkD,MAAO1oB,IACvC,IAAK,IAAI6e,EAAI,EAAGA,EAAI+tD,EAAcjkD,OAAQ9J,IAAK,CAC7C,GAAI+tD,EAAcxpF,IAAI4c,EAAG6e,IAAM6tD,EAC7B,SAEF,MAAMp2E,EAAQ89E,EAASp0E,EAAG6e,GAC1B,KAAIvoB,EAAQ,GAAe,KAAVA,IAGbg+E,EAAQt0E,EAAG6e,GACb,OAAOo1D,EAAQ72B,MAElB,CAEH,OAAO,IACT,CCxFa,MAAAq3B,GAAwD,CACnEnG,qBAAsB,IACtBoG,sBAAuB,GACvBrK,WAAY,EACZsK,OAAQ,GACRC,OAAQ,GACRC,OAAQ,GACRC,OAAQ,GACRvG,YAAa,GAEb7B,UAAW,EACXqI,sBAAuB,EACvBC,oBAAqB,EACrBC,0BAA2B,GAE3BC,cAAc,GAmBhB,IAAKC,IAAL,SAAKA,GACHA,EAAAA,EAAA,wBACAA,EAAAA,EAAA,gCACAA,EAAAA,EAAA,mBACD,EAJD,CAAKA,KAAAA,GAIJ,KAsQe,SAAAC,GACdxI,EACAyG,EACAhT,EACAgO,EACAgH,EACAx1F,EAA2B,IAE3B,MAAMs4E,EAAIj1E,OAAOwH,OAAO,GAAI+pF,GAAgB50F,GAC5C,IAAI6sF,EAAYvU,EAAEuU,UACdqI,EAAwB5c,EAAE4c,sBAC1BC,EAAsB7c,EAAE6c,oBACxBC,EAA2B9c,EAAE8c,yBAGjC,MAAMK,GAAYnd,EAAE0c,OAAS1c,EAAE2c,SAAW3c,EAAE0c,OAAS1c,EAAE2c,QACjDS,GAAYpd,EAAEwc,OAASxc,EAAEyc,SAAWzc,EAAEwc,OAASxc,EAAEyc,QAGvD,IAAK,IAAItF,EAAa,EAAGA,EAAanX,EAAEuc,sBAAuBpF,IAAc,CAK3E,GAJA1C,EAAchqE,QAIgB,IAA1BmyE,EAA6B,CAC/B,MAAMjxF,EAAIixF,EAAwBO,EAClC,IAAK,MAAM5vE,KAAQ2tE,EAEjBzG,EAAchB,QAAQlmE,EAAM5hB,EAE/B,CAED,GAA4B,IAAxBkxF,EAA2B,CAE7B,MAAMlxF,EAAIkxF,EAAsBO,EAChC,IAAK,MAAM7kE,KAAQ2vD,EACjBuM,EAAchB,QAAQl7D,EAAM5sB,EAE/B,CAGD,GAAiC,IAA7BmxF,EAAgC,CAClC,MAAMnxF,EAAImxF,EAA2BK,EACrC,IAAK,MAAM5kE,KAAQ29D,EAEjBzB,EAAchB,QAAQl7D,EAAM5sB,EAE/B,CAGD,MAAMmwF,EAAUF,GAAgBnH,EAAeF,GAC/C,GAAIuH,GAAWoB,EAAUpB,GAEvB,OAAOA,EAQT,GADAvH,GAAa,IACT4C,GAAwC,GAA1BnX,EAAEuc,sBAClBK,GAAyB,IACzBC,GAAuB,QAClB,MAAiC,IAA7BC,GAAkC5G,EAAWnsF,OAAS,GAI/D,MAFA+yF,GAA4B,EAG7B,CACF,CAED,OAAO,IAAIlD,GAAU,GACvB,C,mDC/LO,SAASyD,GAAuBC,EAAUn/E,EAAO1N,EAAM9E,GAC1D,GAAa,MAAT8E,IAAiB9E,EAAG,MAAM,IAAIvC,UAAU,iDAC5C,GAAqB,oBAAV+U,EAAuBm/E,IAAan/E,IAAUxS,GAAKwS,EAAM/R,IAAIkxF,GAAW,MAAM,IAAIl0F,UAAU,4EACvG,MAAgB,MAATqH,EAAe9E,EAAa,MAAT8E,EAAe9E,EAAEvD,KAAKk1F,GAAY3xF,EAAIA,EAAE9B,MAAQsU,EAAMlT,IAAIqyF,EACxF,CAEO,SAASC,GAAuBD,EAAUn/E,EAAOtU,EAAO4G,EAAM9E,GACjE,GAAa,MAAT8E,EAAc,MAAM,IAAIrH,UAAU,kCACtC,GAAa,MAATqH,IAAiB9E,EAAG,MAAM,IAAIvC,UAAU,iDAC5C,GAAqB,oBAAV+U,EAAuBm/E,IAAan/E,IAAUxS,GAAKwS,EAAM/R,IAAIkxF,GAAW,MAAM,IAAIl0F,UAAU,2EACvG,MAAiB,MAATqH,EAAe9E,EAAEvD,KAAKk1F,EAAUzzF,GAAS8B,EAAIA,EAAE9B,MAAQA,EAAQsU,EAAM5D,IAAI+iF,EAAUzzF,GAASA,CACxG,CCpMA,SAAS2zF,GAAOztE,GACd,OAAO7hB,KAAKugF,MAAU,IAAJ1+D,GAAW,GAC/B,CAEA,MAAM0tE,GAAc,aACdC,GAAe,CAAC,UAAW,UAAW,UAAW,WAAY,UAAW,UAAW,WAAY,UAAW,QAC1GC,GAAW,IAAI95C,IAAI65C,GAAa10F,OAAO00F,GAAajsE,KAAK1B,GAAM,SAASA,QAE9E,SAAS6tE,GAAcrgE,GACrB,OAAOogE,GAASvxF,IAAImxB,EACtB,CAEA,SAASsgE,GAAU72E,GACjB,MAAO,GAAGw2E,GAAOx2E,EAAKuW,MAAMgT,UAAUitD,GAAOx2E,EAAKuW,MAAMiT,WAAWxpB,EAAK82E,UAC1E,CACA,SAASC,GAAUxqD,GACjB,MAAU,GAAAiqD,GAAOjqD,EAAK1B,OAAO2rD,GAAOjqD,EAAKzB,OAAO0rD,GAAOjqD,EAAKvB,OAAOwrD,GAAOjqD,EAAKtB,KACjF,CAEA,SAAS+rD,GAAYtzF,EAAYC,GAC/B,OAAOD,EAAEX,SAAWY,EAAEZ,QAAUW,EAAEywF,OAAM,CAAC8C,EAAIlyF,IAAMgyF,GAAUE,KAAQF,GAAUpzF,EAAEoB,KACnF,CAEA,SAASmyF,GAAYJ,EAAmBtc,GACtC,OAAOsc,EACH,IAAI/L,EAAOvQ,EAAG3vC,GAAK2vC,EAAG5vE,EAAI,EAAG4vE,EAAG1vC,GAAK0vC,EAAG34E,EAAI,EAAGqF,KAAKwI,IAAI8qE,EAAG5vE,EAAG4vE,EAAG34E,GAAK,GACtE,IAAI2oF,EAAUhQ,EAAG3vC,GAAI2vC,EAAG1vC,GAAI0vC,EAAG5vE,EAAG4vE,EAAG34E,EAC3C,CAEc,MAAOs1F,GAiBnBlpF,WAAAA,CACEouE,EACgBF,EACA0D,EACAqB,EACAkW,EAChB12F,EAAiC,IAJjB,KAAIy7E,KAAJA,EACA,KAAK0D,MAALA,EACA,KAAKqB,MAALA,EACA,KAAUkW,WAAVA,EArBlBC,GAAA9jF,IAAA,KAA0B,CAAEsN,EAAG,EAAG6e,EAAG,EAAG6J,MAAO,EAAGC,OAAQ,IAE1D8tD,GAAA/jF,IAAA,KAAuB,IAAI03E,EAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAElDsM,GAAmDhkF,IAAA,aAEnDikF,GAA6BjkF,IAAA,SAAIuzB,KAEjC2wD,GAAsClkF,IAAA,aAEtCmkF,GAA6CnkF,IAAA,aAE7CokF,GAA+CpkF,IAAA,aAE/CqkF,GAA4DrkF,IAAA,aAkE5D,KAAAwkB,OAAS,CAAC8/D,GAAc,KACtB,MAAMrd,EAAK,KAAKqF,MAAMiY,MAAM,KAAK5W,OAAOmB,YAAYgU,GAAA,KAAIkB,GAAA,MACxD,IAAIQ,GAAqB,EACzB,MAAMzL,EAAUplF,KAAKwI,IAAI2mF,GAAA,KAAakB,GAAA,KAAC9B,OAAQY,GAAA,KAAIkB,GAAA,KAAU5B,QAAUU,GAAA,KAAIkB,GAAA,KAAUnI,YAC/E4I,EAA8B,CAClCn3E,EAAG25D,EAAG3vC,GAAKyhD,EACX5sD,EAAG86C,EAAG1vC,GAAKwhD,EACX/iD,MAAOixC,EAAG5vE,EAAc,EAAV0hF,EACd9iD,OAAQgxC,EAAG34E,EAAc,EAAVyqF,GAEbuL,GAAexB,GAAA,KAAIgB,GAAA,KAAax2E,IAAMm3E,EAAgBn3E,GAAKw1E,GAAA,KAAgBgB,GAAA,KAAC33D,IAAMs4D,EAAgBt4D,GACpGq4D,GAAqB,EACrBxB,GAAA,KAAIe,GAAkBrM,EAAKO,gBAAgBwM,EAAiB3B,GAAA,KAAakB,GAAA,KAACrM,YAAW,MAC5EmL,GAAA,KAAIgB,GAAA,KAAa9tD,QAAUyuD,EAAgBzuD,OAAS8sD,GAAA,KAAIgB,GAAA,KAAa7tD,SAAWwuD,EAAgBxuD,QAEzG+sD,GAAA,KAAIe,GAAkBrM,EAAKO,gBAAgBwM,EAAiB3B,GAAA,KAAakB,GAAA,KAACrM,YAAW,KAEvFqL,GAAA,KAAIc,GAAeW,EAAe,KAClC,MAAMvK,EAAgB4I,GAAA,KAAIiB,GAAA,KAEpBhhE,EAAQ,IAAIwQ,IAEbixD,GACH,KAAKlY,MAAMl0E,SAASmV,I,MAClB,MAAMd,EAAkC,QAA1By+D,EAAA39D,EAAE2jE,QAAQgS,WAAgB,IAAAhY,EAAAA,EAAA,KACpCz+D,GAAQA,EAAKuR,MACf+E,EAAM/iB,IAAIsjF,GAAU72E,GAAOA,EAAKuR,KACjC,IAIL,IAAI0mE,GAAc,EAClB,MAAMC,EAAkBp3E,I,MACtB,MAAMq3E,EAASr3E,EAAEuhE,YAAYgU,GAAA,KAAakB,GAAA,MAC1C,IAAIv3E,EAAkC,QAA1By+D,EAAA39D,EAAE2jE,QAAQgS,WAAgB,IAAAhY,EAAAA,EAAA,KACtC,MAAMqY,EAAWF,GAAc91E,EAAEnU,MAAM,UACvC,GACGqT,IACD+3E,GACC/3E,EAAKuR,MACNvR,EAAK82E,WAAaA,GAClB92E,EAAKuW,MAAMgT,QAAU4uD,EAAOvtF,GAC5BoV,EAAKuW,MAAMiT,SAAW2uD,EAAOt2F,EAsBpBme,EAAKuW,MAAM1V,IAAMs3E,EAAOttD,IAAM7qB,EAAKuW,MAAMmJ,IAAMy4D,EAAOrtD,KAC/DmtD,GAAc,EACdj4E,EAAKuW,MAAQ2gE,GAAYJ,EAAUqB,GACnCn4E,EAAKuR,KAAO8kE,GAAA,KAAIiB,GAAA,KAAgB5L,KAAK1rE,EAAKuR,KAAM,CAC9C1Q,EAAGs3E,EAAOttD,GAAKwrD,GAAA,KAAakB,GAAA,KAAC5B,OAC7Bj2D,EAAGy4D,EAAOrtD,GAAKurD,GAAA,KAAakB,GAAA,KAAC5B,cA1B/B,CAEAsC,GAAc,EACdj4E,EAAO,CACL82E,WACAvgE,MAAO2gE,GAAYJ,EAAUqB,IAE/B,MAAMvzF,EAAMiyF,GAAU72E,GAChBo4E,EAAS9hE,EAAMryB,IAAIW,GACX,MAAVwzF,EACFp4E,EAAKuR,KAAO8kE,GAAA,KAAIiB,GAAA,KAAgB5L,KAAK0M,EAAQ,CAC3Cv3E,EAAGs3E,EAAOttD,GAAKwrD,GAAA,KAAakB,GAAA,KAAC5B,OAC7Bj2D,EAAGy4D,EAAOrtD,GAAKurD,GAAA,KAAakB,GAAA,KAAC5B,UAG/B31E,EAAKuR,KAAOvR,EAAK82E,SACbpJ,GAA2B1tE,EAAKuW,MAAOk3D,EAAe4I,GAAA,KAAakB,GAAA,KAAC5B,QACpEzH,GAA6BluE,EAAKuW,MAAOk3D,EAAe4I,GAAA,KAAIkB,GAAA,KAAU5B,QAC1Er/D,EAAM/iB,IAAI3O,EAAKob,EAAKuR,OAEtBzQ,EAAE2jE,QAAQgS,GAAaz2E,EACxB,CASD,OAAOA,CAAI,EAGPk0E,EAAU,KAAKrU,MAAMp1D,IAAIytE,GACzBhJ,EAAa,KAAKkI,WAAW3sE,IAAIytE,GAEjCG,EAAY,IAAIvxD,IAEjBixD,IACH1B,GAAA,KAAImB,GAAA,KAAmB7rF,SAAQ,CAAC9I,EAAO+B,IAAQyzF,EAAU9kF,IAAI3O,EAAK/B,KAClE,KAAKq+E,MAAMv1E,SAASmV,I,MAClB,MAAMd,EAAkC,QAA1By+D,EAAA39D,EAAE2jE,QAAQgS,WAAgB,IAAAhY,EAAAA,EAAA,KACpCz+D,GAAQA,EAAKgnC,OACfhnC,EAAKgnC,MAAMr7C,SAAQ,CAAC4gC,EAAMxnC,KACxB,MAAMwsB,EAAOvR,EAAKs4E,MAAMvzF,GACpBwsB,GACF+E,EAAM/iB,IAAIwjF,GAAUxqD,GAAOhb,EAC5B,GAEJ,KAGL,MAAMgnE,EAAkBhsD,IACtB,MAAM3nC,EAAMmyF,GAAUxqD,GAChB6rD,EAASC,EAAUp0F,IAAIW,GAC7B,GAAc,MAAVwzF,EACF,OAAOA,EAET,MAAMtqE,EAAI0/D,GAAwBjhD,EAAM8pD,GAAA,KAAmBiB,GAAA,KAAEjB,GAAA,KAAIkB,GAAA,KAAU9B,QAE3E,OADA4C,EAAU9kF,IAAI3O,EAAKkpB,GACZA,CAAC,EAEJozD,EAAgB,GAEtB,KAAKA,MAAMv1E,SAAS3E,I,QAClB,MAAMwxF,GAA2B,QAArB/Z,EAAAz3E,EAAE+jB,uBAAmB,IAAA0zD,EAAAA,EAAA,CAACz3E,EAAE86E,iBAAkB96E,EAAE+6E,mBAAmBt3D,KAAKwD,IAAC,IAAWA,MAC5F,GAAkB,IAAduqE,EAAGz1F,OACL,OAEF,MAAMikD,EAAQwxC,EAAGt1F,MAAM,GAAGunB,KAAI,CAACpiB,EAAMtD,KACnC,MAAMyzB,EAAOggE,EAAGzzF,GAChB,OAAOmjF,EAAK/oB,KAAK,CACft0B,GAAIrS,EAAK3X,EACTiqB,GAAItS,EAAKkH,EACTsL,GAAI3iC,EAAKwY,EACToqB,GAAI5iC,EAAKq3B,GACT,IAEJ,IAAI1f,EAAkC,QAA1Bw+D,EAAAx3E,EAAEy9E,QAAQgS,WAAgB,IAAAjY,EAAAA,EAAA,KACjCx+D,IAAQ+3E,GAAuBf,GAAYh3E,EAAKgnC,MAAOA,KAC1DhnC,EAAO,CACLgnC,QACAsxC,MAAOtxC,EAAMv8B,IAAI8tE,IAEnBvxF,EAAEy9E,QAAQgS,GAAaz2E,IAEzBkhE,EAAMl8E,QAAQgb,EAAKs4E,MAAM,IAG3B,MAAMG,EAAevE,EAAQzpE,KAAKwD,GAAMA,EAAEsI,QAC1C,GAAI8/D,GAAA,KAAakB,GAAA,KAACxB,aAChB,GAAIkC,EAAa,CACf,MAAMS,EAAmBxJ,EAAWzkE,KAAKwD,GAAMA,EAAEsI,QAC3CywB,EAAQgoC,GACZyJ,EACAC,EACArC,GAAA,KAAIkB,GAAA,KAAUpI,qBACdkH,GAAA,KAAIkB,GAAA,KAAUnI,aAEhBiH,GAAA,KAAImB,GAAA,KAAmB/zE,QACvBujC,EAAMr7C,SAAS4gC,IACb,MAAMhb,EAAOgnE,EAAehsD,GACtB3nC,EAAMmyF,GAAUxqD,GACtB8pD,GAAA,KAAImB,GAAA,KAAmBjkF,IAAI3O,EAAK2sB,GAChC2vD,EAAMl8E,KAAKusB,EAAK,GAEnB,MACC8kE,GAAA,KAAsBmB,GAAA,KAAC7rF,SAAS4lB,GAAS2vD,EAAMl8E,KAAKusB,KAIxD,MAAMonE,EAAczE,EAAQnjE,QAAQ9C,GAAgD,MAAVA,EAAEsD,OAAc9G,KAAKwD,GAAMA,EAAEsD,OACjGqnE,EAAiB1J,EAAWn+D,QAAQ9C,GAAgD,MAAVA,EAAEsD,OAAc9G,KAAKwD,GAAMA,EAAEsD,OACvG0sC,EAAOg4B,GACXxI,EACAkL,EACAzX,EACA0X,GACCh6C,GAAMA,EAAEq1C,iBAAiBwE,IAC1BpC,GAAA,KAAakB,GAAA,MAGf,KAAKpb,KAAK3qD,aAAa,IAAKysC,EAAK4vB,OAAO,GAAGiG,SAAS,GAAGC,WAAWD,SAAS,GAAG7wF,SAAS,GAAG,EA7N1FszF,GAAA,KAAIqB,GAAYvb,EAAO,KACvBka,GAAA,KAAgBgB,GAAA,IACXjC,GACH3oF,MAAO,CACLytB,OAAQ,QACRtP,KAAM,QACN+tE,YAAa,QAEfC,UAAW,GACXC,SAAU,IACVhD,cAAc,EACdiD,aAAa,EACb1W,eAAe,EACf2W,mBAAmB,EACnB1W,iBAAiB,EACjB2W,qBAAqB,EACrBC,qBAAqB,KAClBz4F,GACJ,KAEDqD,OAAOwH,OAAO,KAAK4wE,KAAKxvE,MAAO0pF,GAAA,KAAIkB,GAAA,KAAU5qF,OACzC0pF,GAAA,KAAakB,GAAA,KAACuB,WAChB,KAAK3c,KAAKid,UAAU93F,IAAI+0F,GAAA,KAAIkB,GAAA,KAAUuB,WAGpCzC,GAAA,KAAakB,GAAA,KAACyB,aAChB,KAAK7c,KAAKr3D,iBAAiB,YAAY,KACrC,KAAK+6D,MAAMwZ,QAAQ,IAIvB9C,GAAA,KAAIkB,GAAoBsB,MAAS,KAC/B,KAAKhhE,QAAQ,GACZs+D,GAAA,KAAIkB,GAAA,KAAUwB,UAAS,KAC1BxC,GAAA,KAAImB,IAAW1wF,IACbA,EAAEP,OAAO+9D,GAAG,MAAO6xB,GAAA,KAAWqB,GAAA,MAC9B1wF,EAAEP,OAAO+9D,GAAG,SAAU6xB,GAAA,KAAasB,GAAA,MACnCtB,GAAA,KAAIoB,GAAA,KAAJr2F,KAAA,KAAuB,GACxB,KACDm1F,GAAA,KAAIoB,IAAa3wF,IACfA,EAAEP,OAAOs2E,IAAI,WAAOt5E,EAAW4yF,GAAA,KAAIqB,GAAA,MACnC1wF,EAAEP,OAAOs2E,IAAI,cAAUt5E,EAAW4yF,GAAA,KAAIsB,GAAA,MACtCtB,GAAA,KAAIoB,GAAA,KAAJr2F,KAAA,KAAuB,GACxB,KAEDy+E,EAAMrb,GAAG,WAAY6xB,GAAA,KAAqBoB,GAAA,MAC1C5X,EAAMrb,GAAG,MAAO6xB,GAAA,KAAWqB,GAAA,MAC3B7X,EAAMrb,GAAG,SAAU6xB,GAAA,KAAasB,GAAA,MAChCP,EAAW5yB,GAAG,WAAY6xB,GAAA,KAAqBoB,GAAA,MAC/CL,EAAW5yB,GAAG,MAAO6xB,GAAA,KAAWqB,GAAA,MAChCN,EAAW5yB,GAAG,SAAU6xB,GAAA,KAAasB,GAAA,MACrCzW,EAAM1c,GAAG,gBAAiB6xB,GAAA,KAAqBoB,GAAA,MAC/CvW,EAAM1c,GAAG,MAAO6xB,GAAA,KAAWqB,GAAA,MAC3BxW,EAAM1c,GAAG,SAAU6xB,GAAA,KAAasB,GAAA,K,CA2KlCha,MAAAA,GACE,IAAK,MAAMpqE,IAAO,CAAC,KAAKssE,MAAO,KAAKqB,MAAO,KAAKkW,YAC9C7jF,EAAIwpE,IAAI,qBAAiBt5E,EAAW4yF,GAAA,KAAqBoB,GAAA,MACzDlkF,EAAIwpE,IAAI,WAAOt5E,EAAW4yF,GAAA,KAAWqB,GAAA,MACrCnkF,EAAIwpE,IAAI,cAAUt5E,EAAW4yF,GAAA,KAAasB,GAAA,MAC1CpkF,EAAI5H,SAASsiB,IACXA,EAAEw2D,QAAQgS,GAAa,GAAG,IAK9B,OADA,KAAKta,KAAKwB,SACH0Y,GAAA,KAAauB,GAAA,KAACja,OAAO,K,0ICvUhC,MAAM2b,GAAgB,6BAER,MAAOC,GAoBnBtrF,WAAAA,CAAYurF,EAAoB94F,EAAoC,I,MAjBpE+4F,GAAAlmF,IAAA,KAAoC,IAEpCmmF,GAAoBnmF,IAAA,MAClBoqE,OAAS1f,IACP,MAAMj7D,EAAQqzF,GAAA,KAAIoD,GAAA,KAASrhF,QAAQ6lD,GACnC,QAAIj7D,EAAQ,KAGZqzF,GAAA,KAAIoD,GAAA,KAASz/D,OAAOh3B,EAAO,IACpB,EAAI,IAIf22F,GAAsBpmF,IAAA,aAEtBqmF,GAA4CrmF,IAAA,aAG1CgjF,GAAA,KAAIoD,GAAOH,EAAS,KACpBjD,GAAA,KAAIqD,GAAYl5F,EAAO,KACvB,KAAK+/E,MAAyB,QAAjBhC,EAAA/9E,EAAQ+/E,aAAS,IAAAhC,EAAAA,EAAA6F,EAAOkV,GAAWrU,UAAU7H,aAAa,M,CAGzEiH,OAAAA,GACE,IAAK,MAAMtmB,KAAQo4B,GAAA,KAAIoD,GAAA,KACrBx7B,EAAK0f,SAEP,KAAK8C,MAAM9C,Q,CAGbkc,OAAAA,CACEha,EACAqB,EAAkCmV,GAAA,KAAIsD,GAAA,KAAKxY,aAC3CiW,EAAuCf,GAAA,KAAQsD,GAAA,KAACxY,aAChDzgF,EAAiC,IAEjC,MAAMy7E,EAAO,KAAKsE,MAAMtE,KAAK2G,cAAc/E,gBAAgBub,GAAe,QAC1E,KAAK7Y,MAAMtE,KAAKn3D,YAAYm3D,GAC5B,MAAMle,EAAO,IAAIk5B,GACfd,GAAA,KAAaqD,GAAA,KACbvd,EACA0D,EACK,OAALqB,QAAK,IAALA,EAAAA,EAASmV,GAAA,KAAIsD,GAAA,KAAKxY,aACR,OAAViW,QAAU,IAAVA,EAAAA,EAAcf,GAAA,KAAIsD,GAAA,KAAKxY,aACvB,IAAKkV,GAAA,KAAIuD,GAAA,QAAcl5F,IAIzB,OAFA21F,GAAA,KAAYoD,GAAA,KAACz0F,KAAKi5D,GAClBA,EAAKlmC,SACEkmC,C,CAGT67B,QAAAA,GACE,OAAOzD,GAAA,KAAIoD,GAAA,KAASv2F,O,CAGtB62F,UAAAA,CAAW97B,GACT,MAAMl5D,EAAIsxF,GAAA,KAAIoD,GAAA,KAASrhF,QAAQ6lD,GAC/B,QAAIl5D,EAAI,IAGDk5D,EAAK0f,Q,CAGd5lD,MAAAA,CAAO8/D,GAAc,GACnBxB,GAAA,KAAYoD,GAAA,KAAC9tF,SAASizC,GAAMA,EAAE7mB,OAAO8/D,I,EAIzB,SAAAmC,GAA0Bt5F,EAAoC,IAC5E,OAAO,IAAI64F,GAAiB,KAAM74F,EACpC,CpBxEwB,SAAAy5E,GAAS0M,GAC/BA,EAAU,OAAQ,aAAcmT,GAClC,CAEA,SAASC,GAAa15E,GACpB,MAAsE,oBAAvDA,EAAyCsmE,SAC1D,C,4DAGIoT,GAAahzF,SACfkzE,GAASlzE,OAAO4/E,U,iCqBrBlB,SAA2C5tD,EAAMihE,GAE/Ch4F,EAAOD,QAAUi4F,GAOlB,CATD,CASGn5F,GAAM,WACT,OAAiB,SAASo5F,GAEhB,IAAIC,EAAmB,CAAC,EAGxB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUr4F,QAGnC,IAAIC,EAASk4F,EAAiBE,GAAY,CACzCv1F,EAAGu1F,EACH/qF,GAAG,EACHtN,QAAS,CAAC,GAUX,OANAk4F,EAAQG,GAAUl5F,KAAKc,EAAOD,QAASC,EAAQA,EAAOD,QAASo4F,GAG/Dn4F,EAAOqN,GAAI,EAGJrN,EAAOD,OACf,CAuCA,OAnCAo4F,EAAoB9/E,EAAI4/E,EAGxBE,EAAoBz2F,EAAIw2F,EAGxBC,EAAoBt1F,EAAI,SAASlC,GAAS,OAAOA,CAAO,EAGxDw3F,EAAoBpsE,EAAI,SAAShsB,EAASuD,EAAMmU,GAC3C0gF,EAAoBrhB,EAAE/2E,EAASuD,IAClCzB,OAAOC,eAAe/B,EAASuD,EAAM,CACpC8I,cAAc,EACdD,YAAY,EACZpK,IAAK0V,GAGR,EAGA0gF,EAAoBv5E,EAAI,SAAS5e,GAChC,IAAIyX,EAASzX,GAAUA,EAAOw4E,WAC7B,WAAwB,OAAOx4E,EAAO,UAAY,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADAm4F,EAAoBpsE,EAAEtU,EAAQ,IAAKA,GAC5BA,CACR,EAGA0gF,EAAoBrhB,EAAI,SAASxxE,EAAQgQ,GAAY,OAAOzT,OAAOuE,UAAUjB,eAAejG,KAAKoG,EAAQgQ,EAAW,EAGpH6iF,EAAoBz7C,EAAI,GAGjBy7C,EAAoBA,EAAoBhrF,EAAI,EACpD,CAlEF,CAoEG,CAEH,SAASnN,EAAQD,EAASo4F,GAEjC,aAGA,IAAIE,EAAWF,EAAoB,GAC/B9uF,EAAS8uF,EAAoB,GAE7BG,EAAWH,EAAoB,GAC/BI,EAAaD,EAASC,WACtBC,EAAYF,EAASE,UACrBt2F,EAAgBo2F,EAASp2F,cACzBu2F,EAAgBH,EAASG,cACzBC,EAAYJ,EAASI,UAErBC,EAAU,SAAiBl4E,GAC7B,IAAIjiB,EAAU6K,EAAO,CAAC,EAAGgvF,EAAU53E,GAC/BuN,EAAKnvB,KACL8qC,EAAY3b,EAAG2b,YACfplC,OAAS,EAETuZ,EAAO,CACTtf,QAASA,EACTo6F,SAAU,GACVjvD,UAAWznC,EAAc,CAAE02D,MAAO,aAGhCigC,EAAU/6E,EAAK6rB,UACf3qC,EAASkD,IACT+sB,EAAS/sB,EAAc,CAAEqK,IAAK,WAC9BusF,EAAW,GACXC,EAAM9pE,EAAOC,WAAW,MAExBtD,EAAI,IACJotE,EAA8C,GAA7BptE,EAAIptB,EAAQy6F,eAC7BC,OAAiB,EACjBltE,OAAS,EAoCb,SAASmtE,EAAgBvtE,EAAGwtE,GAC1Bb,EAAW,gBAAiBv5F,GAK5B,IAJA,IAAIq6F,EAAS,EAAIr0F,KAAK40B,GAAKk/D,EAASj4F,OAChCy4F,EAASt0F,KAAK40B,GAAK,EACnB2/D,EAASD,EAASD,EAEbx2F,EAAI,EAAGA,EAAIi2F,EAASj4F,OAAQgC,IAAK,CACxC,IAAI22F,EAAUV,EAASj2F,GAEnB42F,GAAYH,EAASC,GAAU,EAC/BG,GAAO9tE,EAAIwtE,GAAM,EAAIp0F,KAAKmgC,IAAIs0D,GAC9BE,GAAO/tE,EAAIwtE,GAAM,EAAIp0F,KAAKkgC,IAAIu0D,GAI9BpyD,EAAQ,EAAIriC,KAAK6iB,KAAK+D,EAAIwtE,GAAMp0F,KAAKmgC,IAAIs0D,IACzCnyD,EAAS,EAAItiC,KAAK6iB,KAAK+D,EAAIwtE,GAAMp0F,KAAKkgC,IAAIu0D,IAC9CpyD,EAAQriC,KAAKwI,IAAI65B,EAAOC,GAExB,IAAIjjB,EAAOniB,EAAc,CAAE02D,MAAO,iBAClC4/B,EAAUn0E,EAAM,CACdoL,MAAOjxB,EAAQo7F,UACfroE,OAAQ,UACR7mB,QAAS,QACT,aAAc,SAEdimB,SAAU,WACV,cAAe,iBAAmBnyB,EAAQq7F,oBAAsB,kBAAoBr7F,EAAQq7F,oBAAsB,kBAAoBr7F,EAAQq7F,oBAAsB,iBAAmBr7F,EAAQq7F,oBAC/L3qD,KAAM,MACNE,IAAK,MACL,aAAc/H,EAAQ,KACtBA,MAAOA,EAAQ,KACfC,OAAQD,EAAQ,KAChByyD,WAAYJ,EAAMryD,EAAQ,EAAI,KAC9B0yD,WAAYJ,EAAMtyD,EAAQ,EAAI,OAGhC,IAAI5D,EAAUvhC,EAAc,CAAE02D,MAAO,oBAEjC4gC,EAAQ/1D,mBAAmBu2D,YAC7Bv2D,EAAQ3gB,YAAY02E,EAAQ/1D,SAE5BA,EAAQw2D,UAAYT,EAAQ/1D,QAG9B+0D,EAAU/0D,EAAS,CACjB,MAAS4D,EAAQ,KACjB,OAAUA,EAAQ,KAClB,iBAAkB,SAClB,QAAW,eAGbmxD,EAAU/0D,EAAS+1D,EAAQU,cAAgB,CAAC,IAEnB,IAArBV,EAAQW,WAAyC,IAApBX,EAAQY,SACvC32D,EAAQnU,aAAa,QAAS,oCAGhCtwB,EAAO8jB,YAAYuB,GACnBA,EAAKvB,YAAY2gB,GAEjB61D,GAAUD,EACVE,GAAUF,CACZ,CACF,CAEA,SAASgB,EAAYnxD,EAAQoxD,GAC3BC,EAAYC,OAAS,CAACtxD,EAAQoxD,EAChC,CAEA,SAASE,EAAOtxD,EAAQoxD,GACtBvB,EAAI0B,yBAA2B,cAE/B1B,EAAI9mE,UAAU,EAAG,EAAG+mE,EAAeA,GAGnCD,EAAIv+D,UAAYh8B,EAAQ4/C,UAKxB,IAJA,IAAIi7C,EAAS,EAAIr0F,KAAK40B,GAAKk/D,EAASj4F,OAChCy4F,EAASt0F,KAAK40B,GAAK,EACnB2/D,EAASD,EAASD,EAEbv4F,EAAQ,EAAGA,EAAQg4F,EAASj4F,OAAQC,IAAS,CACpD,IAAI04F,EAAUV,EAASh4F,GAEnB04F,EAAQp7C,YACV26C,EAAIv+D,UAAYg/D,EAAQp7C,WAE1B26C,EAAI18D,YACJ08D,EAAIj0D,OAAOoE,EAAS1qC,EAAQy6F,cAAe/vD,EAAS1qC,EAAQy6F,eAC5DF,EAAIn9D,IAAIsN,EAAS1qC,EAAQy6F,cAAe/vD,EAAS1qC,EAAQy6F,cAAe/vD,EAAQ,EAAIlkC,KAAK40B,GAAK0/D,EAAQ,EAAIt0F,KAAK40B,GAAK2/D,GAAQ,GAC5HR,EAAIz8D,YACJy8D,EAAInwE,OAEJ0wE,GAAUD,EACVE,GAAUF,EAEVN,EAAIv+D,UAAYh8B,EAAQ4/C,SAC1B,CAGA26C,EAAI0B,yBAA2B,kBAC/B1B,EAAIt+D,YAAc,QAClBs+D,EAAIngE,UAAYp6B,EAAQk8F,eACxBpB,EAASt0F,KAAK40B,GAAK,EACnB2/D,EAASD,EAASD,EAElB,IAAK,IAAIx2F,EAAI,EAAGA,EAAIi2F,EAASj4F,OAAQgC,IAAK,CACxC,IAAI62F,EAAMxwD,EAASlkC,KAAKmgC,IAAIm0D,GACxBK,EAAMzwD,EAASlkC,KAAKkgC,IAAIo0D,GAC5BP,EAAI18D,YACJ08D,EAAIj0D,OAAOoE,EAAS1qC,EAAQy6F,cAAe/vD,EAAS1qC,EAAQy6F,eAC5DF,EAAIr5D,OAAOwJ,EAAS1qC,EAAQy6F,cAAgBS,EAAKxwD,EAAS1qC,EAAQy6F,cAAgBU,GAClFZ,EAAIz8D,YACJy8D,EAAI7gE,SAEJohE,GAAUD,EACVE,GAAUF,CACZ,CAEAN,EAAIv+D,UAAY,QAChBu+D,EAAI0B,yBAA2B,kBAC/B1B,EAAI18D,YACJ08D,EAAIn9D,IAAIsN,EAAS1qC,EAAQy6F,cAAe/vD,EAAS1qC,EAAQy6F,cAAeqB,EAAa97F,EAAQm8F,iBAAkB,EAAa,EAAV31F,KAAK40B,IAAQ,GAC/Hm/D,EAAIz8D,YACJy8D,EAAInwE,OAEJmwE,EAAI0B,yBAA2B,aACjC,CAEA,SAASG,EAAkBz+D,EAAIC,EAAI8M,EAAQ2xD,EAAOP,GAChDC,EAAYO,aAAe,CAAC3+D,EAAIC,EAAI8M,EAAQ2xD,EAAOP,EACrD,CAEA,SAASQ,EAAa3+D,EAAIC,EAAI8M,EAAQ2xD,EAAOzB,GAC3C,IAAIC,EAAS,EAAIr0F,KAAK40B,GAAKk/D,EAASj4F,OAChCy4F,EAASt0F,KAAK40B,GAAK,EACnB2/D,EAASD,EAASD,EAEtBC,GAAUD,EAASH,EACnBK,GAAUF,EAASH,EAEnBH,EAAIv+D,UAAYh8B,EAAQu8F,gBACxBhC,EAAIt+D,YAAc,QAClBs+D,EAAIngE,UAAY,EAChBmgE,EAAI18D,YACJ08D,EAAIj0D,OAAOoE,EAAS1qC,EAAQy6F,cAAe/vD,EAAS1qC,EAAQy6F,eAC5DF,EAAIn9D,IAAIsN,EAAS1qC,EAAQy6F,cAAe/vD,EAAS1qC,EAAQy6F,cAAe/vD,EAAS1qC,EAAQy6F,cAAe,EAAIj0F,KAAK40B,GAAK0/D,EAAQ,EAAIt0F,KAAK40B,GAAK2/D,GAAQ,GACpJR,EAAIz8D,YACJy8D,EAAInwE,OAEJmwE,EAAIv+D,UAAY,QAChBu+D,EAAI0B,yBAA2B,kBAE/B,IAAIpyD,EAAKa,EAAS1qC,EAAQy6F,cAAgB98D,EAAK+M,GAAUkwD,EAAK56F,EAAQm8F,iBAAmBn8F,EAAQw8F,cAAgB,GAC7G1yD,EAAKY,EAAS1qC,EAAQy6F,cAAgB78D,EAAK8M,GAAUkwD,EAAK56F,EAAQm8F,iBAAmBn8F,EAAQw8F,cAAgB,GAC7GC,EAAMj2F,KAAK40B,GAAK,EAAIihE,EAExB9B,EAAI5jE,UAAUkT,EAAIC,GAClBywD,EAAI9jE,OAAOgmE,GAKX,IAAID,EAAgBx8F,EAAQw8F,cAAgB5B,EAAK56F,EAAQm8F,iBAAmBvB,EAAK56F,EAAQm8F,iBAAmBn8F,EAAQw8F,cACpHjC,EAAI18D,YACJ08D,EAAI5N,UAAU6P,EAAgB,GAAIA,EAAgB,EAAGA,EAAeA,GACpEjC,EAAIz8D,YACJy8D,EAAInwE,OAEJmwE,EAAI9jE,QAAQgmE,GACZlC,EAAI5jE,WAAWkT,GAAKC,GAKpBywD,EAAI18D,YACJ08D,EAAIn9D,IAAIsN,EAAS1qC,EAAQy6F,cAAe/vD,EAAS1qC,EAAQy6F,cAAeG,EAAK56F,EAAQm8F,iBAAkB,EAAa,EAAV31F,KAAK40B,IAAQ,GACvHm/D,EAAIz8D,YACJy8D,EAAInwE,OAEJmwE,EAAI0B,yBAA2B,aACjC,CAEA,SAASS,IACP,IAAIC,EAAM1C,IACN/vF,EAAIswF,EACJr5F,EAAIq5F,EAER/pE,EAAOoY,MAAQ3+B,EAAIyyF,EACnBlsE,EAAOqY,OAAS3nC,EAAIw7F,EAEpBlsE,EAAOxkB,MAAM48B,MAAQ3+B,EAAI,KACzBumB,EAAOxkB,MAAM68B,OAAS3nC,EAAI,KAE1Bo5F,EAAInc,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAChCmc,EAAI7jE,MAAMimE,EAAKA,EACjB,CAtOAxxD,EAAUyxC,aAAayd,EAASlvD,EAAUyxD,YAC1CvC,EAAQ/1E,YAAY9jB,GACpBA,EAAO8jB,YAAYmM,GAEnBupE,EAAUK,EAAS,CACjBloE,SAAU,WACV0yD,OAAQ7kF,EAAQ6kF,OAChBxJ,WAAY,OACZwhB,cAAe,SAIjB,CAAC,YAAa,YAAa,UAAW,eAAe5xF,SAAQ,SAAU6xF,GACrEzC,EAAQj2E,iBAAiB04E,GAAK,SAAUx2F,GAGtC,OAFAA,EAAEy2F,kBAEK,CACT,GACF,IAEA/C,EAAUx5F,EAAQ,CAChB0L,QAAS,OACT28B,MAAO2xD,EAAgB,KACvB1xD,OAAQ0xD,EAAgB,KACxBroE,SAAU,WACV0yD,OAAQ,EACRyW,YAAat7F,EAAQy6F,cAAgB,KACrCc,WAAYv7F,EAAQy6F,cAAgB,KACpCpf,WAAY,SAGd5qD,EAAOoY,MAAQ2xD,EACf/pE,EAAOqY,OAAS0xD,EAwMhB,IAAIwC,GAAY,EACZjB,EAAc,CAAC,EAEfkB,EAAM12F,OAAOorB,uBAAyBprB,OAAO22F,6BAA+B32F,OAAO42F,0BAA4B52F,OAAO62F,yBAA2B,SAAUv6F,GAC7J,OAAO2hB,WAAW3hB,EAAI,GACxB,EAEIw6F,EAAS,SAASA,IAChBtB,EAAYC,QACdA,EAAO74F,MAAM,KAAM44F,EAAYC,QAG7BD,EAAYO,cACdA,EAAan5F,MAAM,KAAM44F,EAAYO,cAGvCP,EAAc,CAAC,EAEXiB,GACFC,EAAII,EAER,EAGAX,IACAW,IAEA,IAAIC,OAAO,EACPC,OAAO,EACP3C,OAAK,EAEL4C,EAAW,CACb15B,GAAI,SAAY25B,EAAQxd,EAAUp9E,GAEhC,IAAI66F,EAAM76F,EAsBV,MArBiB,SAAbo9E,IACFyd,EAAM,SAAap3F,GACjB,GAAIA,EAAEq3F,WAAanuE,GAAMlpB,EAAEP,SAAWypB,EAEpC,OAAO3sB,EAAGM,MAAM9C,KAAM,CAACiG,GAE3B,GAGFgZ,EAAK86E,SAAS91F,KAAK,CACjBm5F,OAAQA,EACRxd,SAAUA,EACVp9E,GAAI66F,IAGW,SAAbzd,EACFzwD,EAAGs0C,GAAG25B,EAAQC,GAEdluE,EAAGs0C,GAAG25B,EAAQxd,EAAUyd,GAGnBr9F,IACT,GAGF,SAASu9F,IACP,IAAIC,OAAY,EACZC,GAAY,EACZC,OAAc,EACdC,OAAc,EACdC,OAAa,EACbC,OAAa,EACbC,OAAoB,EACpBC,OAAU,EAEVC,EAAc,WACZL,GACFxuE,EAAG8uE,oBAAmB,EAE1B,EAEIC,EAAc,WACZV,GACF93F,EAAOy4F,SAEX,EAEIC,EAAa,WACXR,GACFzuE,EAAGkvE,oBAAmB,EAE1B,EAEIC,EAAiB,WACfT,GACF1uE,EAAGovE,qBAAoB,EAE3B,EAEIC,EAAkB,WACpBN,IACAF,IACAI,IACAE,GACF,EAEAp4F,OAAO6d,iBAAiB,SAAUs4E,GAElCc,EAAS15B,GAAG,UAAU,WACpB44B,GACF,IAAG54B,GAAG9jE,EAAQ8+F,eAAgB9+F,EAAQigF,UAAU,SAAU35E,GACxDP,EAAS1F,KACT,IAAI0+F,EAAM1+F,KACN2+F,EAAO3+F,OAASmvB,EAUpB,GARIsuE,IACFt9F,EAAOyL,MAAMC,QAAU,OAEvB4xF,GAAY,EAEZe,KAG8B,oBAArB7+F,EAAQs6F,SAAyB,CAC1C,IAAIlhB,EAAMp5E,EAAQs6F,SAASv0F,GACvBqzE,EAAIC,KACND,EAAIC,MAAK,SAAU4lB,GACjB3E,EAAW2E,EACXC,GACF,KAEA5E,EAAWlhB,EACX8lB,IAEJ,MACE5E,EAAWt6F,EAAQs6F,SACnB4E,IAGF,SAASA,IACP,GAAK5E,GAAgC,IAApBA,EAASj4F,OAA1B,CAIA27F,EAAcxuE,EAAG8uE,qBACjB9uE,EAAG8uE,oBAAmB,GAEtBL,EAAazuE,EAAGkvE,qBAChBlvE,EAAGkvE,oBAAmB,GAEtBR,EAAa1uE,EAAGovE,sBAChBpvE,EAAGovE,qBAAoB,GAEvBf,EAAY93F,EAAO83F,WAAa93F,EAAO83F,YACnCA,GACF93F,EAAOo5F,YAGT,IAAIC,OAAK,EACLC,OAAK,EAELzE,OAAK,GACJoE,GAAQD,GAAOA,EAAIO,kBAAkBr5F,UAAY84F,EAAIO,WAAaP,EAAIQ,aAAev/F,EAAQw/F,SAEhGJ,EAAKL,EAAIU,mBACTJ,EAAKN,EAAIW,qBACJX,EAAIY,sBACT/E,EAAKyE,EAAK,EAEVzE,GAAM56F,EAAQ4/F,+BAAiC5/F,EAAQ6/F,mBAAqBr5F,KAAKwI,IAAI4rF,EAAI56F,EAAQ6/F,oBAAsBjF,EACvHA,GAAM56F,EAAQ4/F,+BAAiC5/F,EAAQ8/F,mBAAqBt5F,KAAKyI,IAAI2rF,EAAI56F,EAAQ8/F,oBAAsBlF,IAGvHwE,EAAK94F,EAAEm5F,kBAAoBn5F,EAAEy5F,mBAC7BV,EAAK,EACA,EACLzE,EAAKyE,EAAK,EACVzE,EAAK56F,EAAQ6/F,mBAAqBr5F,KAAKwI,IAAI4rF,EAAI56F,EAAQ6/F,oBAAsBjF,EAC7EA,EAAK56F,EAAQ8/F,mBAAqBt5F,KAAKyI,IAAI2rF,EAAI56F,EAAQ8/F,oBAAsBlF,GAG/EptE,EAAS0sE,EAAU/uD,GAEnBmyD,EAAO8B,EAAGj/E,EACVo9E,EAAO6B,EAAGpgE,EACV5R,EAAIiyE,EAAK,GAAKr/F,EAAQggG,sBAAsB/5F,SAAWjG,EAAQggG,WAAWj6F,GAAU62D,OAAO58D,EAAQggG,aACnGxF,EAA8C,GAA7BptE,EAAIptB,EAAQy6F,eAC7BiC,IAEA1C,EAAUx5F,EAAQ,CAChBqoC,MAAO2xD,EAAgB,KACvB1xD,OAAQ0xD,EAAgB,KACxBtuF,QAAS,QACTwkC,KAAM0uD,EAAGj/E,EAAIiN,EAAI,KACjBwjB,IAAKwuD,EAAGpgE,EAAI5R,EAAI,OAElButE,EAAgBvtE,EAAGwtE,GACnBiB,EAAYzuE,EAAGwtE,GAEfF,OAAiB33F,EAEjB+6F,GAAY,EACZK,EAAoB73F,CA5DpB,CA6DF,CACF,IAAGw9D,GAAG,kBAAmB9jE,EAAQigF,SAAU8d,EAAc,SAAqBz3F,GAE5E,GAAKw3F,EAAL,CAGAx3F,EAAEy2F,iBAEF,IAAIkD,EAAQ35F,EAAE45F,cACVC,EAAUF,EAAMG,SAAWH,EAAMG,QAAQ/9F,OAAS,EAElDg+F,GAASF,EAAUF,EAAMG,QAAQ,GAAGC,MAAQJ,EAAMI,OAAS95F,OAAO+5F,YAClEC,GAASJ,EAAUF,EAAMG,QAAQ,GAAGG,MAAQN,EAAMM,OAASh6F,OAAOi6F,YAEtE9F,OAAiB33F,EAEjB,IAAIijE,EAAKq6B,EAAQ7yE,EAAOkjB,KAAO4sD,EAC3Br3B,EAAKs6B,EAAQ/yE,EAAOojB,IAAM2sD,EAEnB,IAAPv3B,IACFA,EAAK,KAGP,IAAIz4C,EAAI/mB,KAAK2iB,KAAK68C,EAAKA,EAAKC,EAAKA,GAC7Bw6B,GAAYx6B,EAAKA,EAAK14C,EAAIA,EAAIy4C,EAAKA,KAAQ,EAAIz4C,EAAIy4C,GACnDq2B,EAAQ71F,KAAKk6F,KAAKD,GAElBpB,OAAK,EAiBT,GAhBIt5F,GAAUA,EAAOu5F,kBAAkBr5F,UAAYF,EAAOu5F,WAAav5F,EAAOw5F,aAAev/F,EAAQw/F,SAEnGH,EAAKt5F,EAAO25F,qBACZ9E,EAAKyE,EAAK,EAEVzE,GAAM56F,EAAQ4/F,+BAAiC5/F,EAAQ6/F,mBAAqBr5F,KAAKwI,IAAI4rF,EAAI56F,EAAQ6/F,oBAAsBjF,EACvHA,GAAM56F,EAAQ4/F,+BAAiC5/F,EAAQ8/F,mBAAqBt5F,KAAKyI,IAAI2rF,EAAI56F,EAAQ8/F,oBAAsBlF,IAGvHyE,EAAK,EACLzE,EAAKyE,EAAK,EACVzE,EAAK56F,EAAQ6/F,mBAAqBr5F,KAAKwI,IAAI4rF,EAAI56F,EAAQ6/F,oBAAsBjF,EAC7EA,EAAK56F,EAAQ8/F,mBAAqBt5F,KAAKyI,IAAI2rF,EAAI56F,EAAQ8/F,oBAAsBlF,GAG/ExtE,EAAIiyE,EAAK,GAAKr/F,EAAQggG,sBAAsB/5F,SAAWjG,EAAQggG,WAAWj6F,GAAU62D,OAAO58D,EAAQggG,aAC/FzyE,EAAIqtE,EAAK56F,EAAQm8F,kBAAyD,kBAA9Bn8F,EAAQ2gG,mBAAkCpzE,EAAIH,EAAIptB,EAAQy6F,cAAgBz6F,EAAQ2gG,kBAGhI9E,EAAYzuE,EAAGwtE,OAHjB,CAMAiB,EAAYzuE,EAAGwtE,GAEf,IAAIj9D,EAAKqoC,EAAK54C,EAAIG,EACdqQ,EAAKqoC,EAAK74C,EAAIG,EAEd04C,EAAK,IACPo2B,EAAQ71F,KAAK40B,GAAK50B,KAAK6iB,IAAIgzE,EAAQ71F,KAAK40B,KAO1C,IAJA,IAAIy/D,EAAS,EAAIr0F,KAAK40B,GAAKk/D,EAASj4F,OAChCy4F,EAASt0F,KAAK40B,GAAK,EACnB2/D,EAASD,EAASD,EAEbx2F,EAAI,EAAGA,EAAIi2F,EAASj4F,OAAQgC,IAAK,CACxC,IAAI22F,EAAUV,EAASj2F,GAEnBu8F,EAAgB9F,GAAUuB,GAASA,GAAStB,GAAUD,GAAUuB,EAAQ,EAAI71F,KAAK40B,IAAMihE,EAAQ,EAAI71F,KAAK40B,IAAM2/D,EAMlH,IAJyB,IAArBC,EAAQW,WAAyC,IAApBX,EAAQY,UACvCgF,GAAgB,GAGdA,EAAe,CACjBlG,EAAiBr2F,EACjB,KACF,CAEAy2F,GAAUD,EACVE,GAAUF,CACZ,CACAuB,EAAkBz+D,EAAIC,EAAIxQ,EAAGivE,EAAOzB,EA/BpC,CA5CA,CA4EF,GAAG92B,GAAG,UAAWi6B,GAAaj6B,GAAG,aAAa,WAC5C,QAAuB/gE,IAAnB23F,EAA8B,CAChC,IAAImG,EAAUvG,EAASI,GAAgBjoE,MACnCouE,IACEzC,IAAY1D,GACdmG,EAAQ19F,MAAM4C,EAAQ,CAACA,EAAQo4F,IAEjCC,EAAU1D,EAEd,CACF,IAAG52B,GAAG,oBAAoB,WAExB,GADAtjE,EAAOyL,MAAMC,QAAU,YACAnJ,IAAnB23F,EAA8B,CAChC,IAAI/B,EAAS2B,EAASI,GAAgB/B,OAElCA,IACFA,EAAOx1F,MAAM4C,EAAQ,CAACA,EAAQo4F,IAC9BzD,OAAiB33F,EAErB,CAEAq7F,OAAUr7F,EAEV+6F,GAAY,EAEZe,GACF,GACF,CAEA,SAASiC,IAGP,IAFA,IAAI1G,EAAW96E,EAAK86E,SAEX/1F,EAAI,EAAGA,EAAI+1F,EAAS/3F,OAAQgC,IAAK,CACxC,IAAIlD,EAAIi5F,EAAS/1F,GAEE,SAAflD,EAAE8+E,SACJzwD,EAAG6sD,IAAIl7E,EAAEs8F,OAAQt8F,EAAE0B,IAEnB2sB,EAAG6sD,IAAIl7E,EAAEs8F,OAAQt8F,EAAE8+E,SAAU9+E,EAAE0B,GAEnC,CAEA0D,OAAO61D,oBAAoB,SAAUsgC,EACvC,CAEA,SAASqE,IACP/D,GAAY,EAEZ8D,IAEAzG,EAAQpd,QACV,CAIA,OAFA2gB,IAEO,CACL/Z,QAAS,WACPkd,GACF,EAEJ,EAEAv/F,EAAOD,QAAU44F,CAEX,EAEC,SAAS34F,EAAQD,EAASo4F,GAEjC,aAKAn4F,EAAOD,QAA2B,MAAjB8B,OAAOwH,OAAiBxH,OAAOwH,OAAOuS,KAAK/Z,QAAU,SAAU29F,GAC9E,IAAK,IAAI3sB,EAAOjxE,UAAUf,OAAQ4+F,EAAO/5F,MAAMmtE,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9F2sB,EAAK3sB,EAAO,GAAKlxE,UAAUkxE,GAW7B,OARA2sB,EAAK5wE,QAAO,SAAUlkB,GACpB,OAAc,MAAPA,CACT,IAAGlB,SAAQ,SAAUkB,GACnB9I,OAAO+E,KAAK+D,GAAKlB,SAAQ,SAAUC,GACjC,OAAO81F,EAAI91F,GAAKiB,EAAIjB,EACtB,GACF,IAEO81F,CACT,CAEM,EAEC,SAASx/F,EAAQD,EAASo4F,GAEjC,aAGA,IAAIE,EAAW,CACbmG,WAAY,SAAoBjB,GAC9B,OAAO,GACT,EACA9e,SAAU,OACVqa,SAAU,GAgBV16C,UAAW,sBACX28C,gBAAiB,0BACjB9B,cAAe,GACf+B,cAAe,GACfN,eAAgB,EAChBC,iBAAkB,EAClByD,+BAA+B,EAC/BC,mBAAoB,GACpBC,mBAAoB,GACpBhB,eAAgB,sBAChB1D,UAAW,QACXC,oBAAqB,cACrBxW,OAAQ,KACR2a,SAAS,EACTmB,mBAAmB,GAGrBn/F,EAAOD,QAAUs4F,CAEX,EAEC,SAASr4F,EAAQD,EAASo4F,GAEjC,aAGA,IAAII,EAAa,SAAoBmH,GAKnC,IAJA,IAAIC,EAAW/9F,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAKI,SAE/E49F,EAAMD,EAASE,iBAAiBH,GAE3B78F,EAAI,EAAGA,EAAI+8F,EAAI/+F,OAAQgC,IAAK,CACnC,IAAIpC,EAAKm/F,EAAI/8F,GAEbpC,EAAGq/F,WAAW/8E,YAAYtiB,EAC5B,CACF,EAEI+3F,EAAY,SAAmB/3F,EAAIgK,GAGrC,IAFA,IAAIyrD,EAAQr0D,OAAO+E,KAAK6D,GAEf5H,EAAI,EAAGwK,EAAI6oD,EAAMr1D,OAAQgC,EAAIwK,EAAGxK,IACvCpC,EAAGgK,MAAMyrD,EAAMrzD,IAAM4H,EAAMyrD,EAAMrzD,GAErC,EAEIX,EAAgB,SAAuB1D,GACzCA,EAAUA,GAAW,CAAC,EAEtB,IAAIiC,EAAKuB,SAASE,cAAc1D,EAAQ+N,KAAO,OAQ/C,OANA9L,EAAGm2F,UAAYp4F,EAAQo6D,OAAS,GAE5Bp6D,EAAQiM,OACV+tF,EAAU/3F,EAAIjC,EAAQiM,OAGjBhK,CACT,EAEIg4F,EAAgB,WAClB,OAAO1zF,OAAOy3E,kBAAoB,CACpC,EAEIkc,EAAY,SAAmBj4F,GACjC,IAAIurB,EAASvrB,EAAGs/F,wBAEhB,MAAO,CACL7wD,KAAMljB,EAAOkjB,KAAOltC,SAASsvB,KAAK0uE,WAAarrD,WAAWsrD,iBAAiBj+F,SAASsvB,MAAM,iBAAmBqjB,WAAWsrD,iBAAiBj+F,SAASsvB,MAAM,sBACxJ8d,IAAKpjB,EAAOojB,IAAMptC,SAASsvB,KAAK4uE,UAAYvrD,WAAWsrD,iBAAiBj+F,SAASsvB,MAAM,gBAAkBqjB,WAAWsrD,iBAAiBj+F,SAASsvB,MAAM,qBAExJ,EAEAtxB,EAAOD,QAAU,CAAEw4F,WAAYA,EAAYC,UAAWA,EAAWt2F,cAAeA,EAAeu2F,cAAeA,EAAeC,UAAWA,EAElI,EAEC,SAAS14F,EAAQD,EAASo4F,GAEjC,aAGA,IAAIQ,EAAUR,EAAoB,GAG9BlgB,EAAW,SAAkB0M,GAC1BA,GAILA,EAAU,OAAQ,UAAWgU,EAC/B,EAEyB,qBAAdhU,WAET1M,EAAS0M,WAGX3kF,EAAOD,QAAUk4E,CAEX,GAEN,G,iCCh1BA,SAAAlhD,EAAAihE,GAEAh4F,EAAAD,QAAAi4F,GAOC,CATD,CASGn5F,GAAM,WACT,mBCTA,IAAAq5F,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAr4F,QAGA,IAAAC,EAAAk4F,EAAAE,GAAA,CACAv1F,EAAAu1F,EACA/qF,GAAA,EACAtN,QAAA,IAUA,OANAk4F,EAAAG,GAAAl5F,KAAAc,EAAAD,QAAAC,EAAAA,EAAAD,QAAAo4F,GAGAn4F,EAAAqN,GAAA,EAGArN,EAAAD,OACA,CAuCA,OAnCAo4F,EAAA9/E,EAAA4/E,EAGAE,EAAAz2F,EAAAw2F,EAGAC,EAAAt1F,EAAA,SAAAlC,GAA2C,OAAAA,CAAc,EAGzDw3F,EAAApsE,EAAA,SAAAhsB,EAAAuD,EAAAmU,GACA0gF,EAAArhB,EAAA/2E,EAAAuD,IACAzB,OAAAC,eAAA/B,EAAAuD,EAAA,CACA8I,cAAA,EACAD,YAAA,EACApK,IAAA0V,GAGA,EAGA0gF,EAAAv5E,EAAA,SAAA5e,GACA,IAAAyX,EAAAzX,GAAAA,EAAAw4E,WACA,WAA2B,OAAAx4E,EAAA,UAA0B,EACrD,WAAiC,OAAAA,CAAe,EAEhD,OADAm4F,EAAApsE,EAAAtU,EAAA,IAAAA,GACAA,CACA,EAGA0gF,EAAArhB,EAAA,SAAAxxE,EAAAgQ,GAAsD,OAAAzT,OAAAuE,UAAAjB,eAAAjG,KAAAoG,EAAAgQ,EAA+D,EAGrH6iF,EAAAz7C,EAAA,GAGAy7C,EAAAA,EAAAhrF,EAAA,G,CDtDO,C,8BEVPnN,EAAOD,QAA2B,MAAjB8B,OAAOwH,OAAiBxH,OAAOwH,OAAOuS,KAAM/Z,QAAW,SAAU29F,GAAc,QAAA3sB,EAAAjxE,UAAAf,OAAN4+F,EAAM/5F,MAAAmtE,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAN2sB,EAAM3sB,EAAA,GAAAlxE,UAAAkxE,GAK9F,OAJA2sB,EAAKh2F,SAAS,SAAAkB,GACZ9I,OAAO+E,KAAM+D,GAAMlB,SAAS,SAAAC,GAAA,OAAK81F,EAAI91F,GAAKiB,EAAIjB,EAAlB,GAC7B,IAEM81F,CACR,C,+BCND,IAAMn2F,EAAS8uF,EAAQ,GAEjBE,EAAWx2F,OAAOs+F,OAAO,CAC7B58F,OAAQ,KACRgB,OAAQ,KACR1D,OAAQ,GACRu/F,MAAO,KACPC,OAAQ,IAGV,SAASC,EAAYC,GACnB,OAAOl3F,EAAQ,CAAC,EAAGgvF,EAAUkI,EAC9B,CAED,SAASC,EAAaD,GACpB,IAAIE,EAAQF,EAAOh9F,OACfm9F,EAAQH,EAAOh8F,OACf1D,EAAS0/F,EAAO1/F,OAAS,EAAIw3F,EAASx3F,OAAS0/F,EAAO1/F,OACtD2jE,EAAKk8B,EAAMxzF,IAAIyR,EAAI8hF,EAAMvzF,IAAIyR,EAC7B8lD,EAAKi8B,EAAMxzF,IAAIswB,EAAIijE,EAAMvzF,IAAIswB,EAC7B5R,EAAI5mB,KAAK2iB,KAAK68C,EAAKA,EAAKC,EAAKA,GAEvB,IAAN74C,IACA44C,GAAMx/D,KAAKgJ,SAAW,IAAO,GAC7By2D,GAAMz/D,KAAKgJ,SAAW,IAAO,GAC7B4d,EAAI5mB,KAAK2iB,KAAK68C,EAAKA,EAAKC,EAAKA,IAGjC,IAAI14C,EAAIH,EAAI/qB,EACRu/F,IAAWG,EAAOH,OAASG,EAAOH,MAAQ,EAAK/H,EAASsI,YAAcJ,EAAOH,OAASr0E,EAAIH,EAAI20E,EAAOF,OAEzGI,EAAMG,MAAMjiF,GAAKyhF,EAAQ57B,EACzBi8B,EAAMG,MAAMpjE,GAAK4iE,EAAQ37B,EAEzBi8B,EAAME,MAAMjiF,GAAKyhF,EAAQ57B,EACzBk8B,EAAME,MAAMpjE,GAAK4iE,EAAQ37B,CAC1B,CAEDzkE,EAAOD,QAAU,CAAEugG,WAAAA,EAAYE,YAAAA,E,u1BClC/B,IAAMK,EAAS1I,EAAQ,IACjB9uF,EAAS8uF,EAAQ,GACjBE,EAAWF,EAAQ,G,EACRA,EAAQ,IAAjB2I,EAAAA,EAAA7kD,K,EACiBk8C,EAAQ,GAAzB4I,EAAAA,EAAAA,a,EACa5I,EAAQ,GAArB6I,EAAAA,EAAAA,S,EACe7I,EAAQ,GAAvBmI,EAAAA,EAAAA,WACFW,EAAO,SAAA5/F,GAAA,MAAoB,oBAAPA,CAAb,EACP08F,EAAW,SAAAn/E,GAAA,OAAKA,EAAEm/E,UAAP,EACXmD,EAAc,SAAAtiF,GAAA,OAAMm/E,EAASn/E,EAAf,EAGduiF,EAAe,SAAAr8F,GAAA,OAAKi5F,EAAUj5F,EAAEvB,WAAcw6F,EAAUj5F,EAAEP,SAA3C,EACf68F,EAAkB,SAAAt8F,GAAA,OAAMq8F,EAAar8F,EAAnB,EAClBu8F,EAAU,SAAAziF,GAAA,OAAKA,EAAE2jE,QAAQ,SAASjxD,IAAxB,EACVgwE,EAA0B,SAAA1iF,GAAA,OAAKm/E,EAASn/E,GAAKA,EAAE2iF,cAAc1yE,OAAQqyE,GAAgBtiF,CAA3D,EAE1B4iF,EAAa,SAAA/gG,GACjB,IAAI8hF,EAAU9hF,EAAG8hF,QAAQ,SAQzB,OANKA,IACHA,EAAU,CAAC,EAEX9hF,EAAG8hF,QAAQ,QAASA,IAGfA,CACR,EAEKkf,EAAQ,SAAEC,EAAKnE,GACnB,OAAI0D,EAAMS,GACDA,EAAKnE,GAELmE,CAEV,EAEKC,EAAAA,SAAAA,GACJ,SAAAA,EAAanjG,GAAS,OAAAojG,EAAA,KAAAD,GAAAE,EAAA,MAAAF,EAAAliF,WAAA5d,OAAA4E,eAAAk7F,IAAAziG,KAAA,KACbmK,EAAQ,CAAC,EAAGgvF,EAAU75F,IAC9B,C,gDAEOyW,GACN,IAAI9H,EAAI8H,EAER9H,EAAE20F,SAAWf,IAEb,IAAIgB,EAAS50F,EAAE40F,OAAS,GAGxB50F,EAAEwwE,MAAM9uD,QAAQ,SAAAjQ,GAAA,OAAKsiF,EAAYtiF,EAAjB,IAAsBnV,SAAS,SAAAmV,GAC7C,IAAI2jE,EAAUif,EAAY5iF,GAEtB0S,EAAO0vE,EAAS,CAClB9zF,IAAK,CAAEyR,EAAG4jE,EAAQ5jE,EAAG6e,EAAG+kD,EAAQ/kD,GAChCwkE,KAAMP,EAAOt0F,EAAE60F,KAAMpjF,GACrBqjF,OAAQ1f,EAAQ0f,SAGlB3wE,EAAK4wE,QAAUtjF,EAEf2jE,EAAQjxD,KAAOA,EAEfA,EAAK6wE,SAAW5f,EAEhBwf,EAAOj/F,KAAMwuB,EACd,IAED,IAAI8wE,EAAUj1F,EAAEi1F,QAAU,GAG1Bj1F,EAAE6xE,MAAMnwD,OAAQuyE,GAAkB33F,SAAS,SAAA3E,GACzC,IAAIy7F,EAASD,EAAW,CACtB/8F,OAAQ89F,EAASv8F,EAAEvB,UACnBgB,OAAQ88F,EAASv8F,EAAEP,UACnB1D,OAAQ4gG,EAAOt0F,EAAEk1F,aAAcv9F,GAC/Bs7F,MAAOqB,EAAOt0F,EAAEwzF,YAAa77F,KAG/By7F,EAAO+B,QAAUx9F,EAEjB,IAAIy9E,EAAUif,EAAY18F,GAE1By7F,EAAO4B,SAAW5f,EAElBA,EAAQge,OAASA,EAEjB6B,EAAQt/F,KAAMy9F,EACf,IAGDpzF,EAAE6xE,MAAMnwD,OAAQsyE,GAAe13F,SAAS,SAAA3E,GACtC,IAAIs6E,EAAUkiB,EAAyBx8F,EAAEvB,UACrC87E,EAAUiiB,EAAyBx8F,EAAEP,UAGzC66E,EAAU,CAAEA,EAAQ,IACpBC,EAAU,CAAEA,EAAQ,IAEpBD,EAAQ31E,SAAS,SAAAkB,GACf00E,EAAQ51E,SAAS,SAAA+1F,GACf4C,EAAQt/F,KAAMw9F,EAAW,CACvB/8F,OAAQ89F,EAAS12F,GACjBpG,OAAQ88F,EAAS7B,GACjB3+F,OAAQ4gG,EAAOt0F,EAAEk1F,aAAcv9F,GAC/Bs7F,MAAOqB,EAAOt0F,EAAEwzF,YAAa77F,KAEhC,GACF,GACF,GACF,G,2BAEKmQ,GACJ,IAAIstF,EAAWzB,EAAM7rF,GAEjButF,EAASD,GAAYttF,EAAMwtF,kBAE/B,OAAOD,CACR,K,EAjFGb,CAAcd,GAoFpB7gG,EAAOD,QAAU4hG,C,+BC7HjB,IAAMtJ,EAAWx2F,OAAOs+F,OAAO,CAC7BjzF,IAAK,CAAEyR,EAAG,EAAG6e,EAAG,GAChBklE,QAAS,CAAE/jF,EAAG,EAAG6e,EAAG,GACpBojE,MAAO,CAAEjiF,EAAG,EAAG6e,EAAG,GAClBmlE,SAAU,CAAEhkF,EAAG,EAAG6e,EAAG,GACrBwkE,KAAM,IAGFY,EAAU,SAAA/7E,GAAA,MAAM,CAAElI,EAAGkI,EAAElI,EAAG6e,EAAG3W,EAAE2W,EAArB,EACVqlE,EAAW,SAAEh1F,EAAKvB,GAAP,OAAuB,MAAPuB,EAAcA,EAAMvB,CAApC,EACXw2F,EAAS,SAAEC,EAAKz2F,GAAP,OAAgBs2F,EAASC,EAAUE,EAAKz2F,GAAxC,EAEf,SAAS00F,EAAUgC,GACjB,IAAIvhG,EAAI,CAAC,EAST,OAPAA,EAAEyL,IAAM41F,EAAQE,EAAK91F,IAAKmrF,EAASnrF,KACnCzL,EAAEihG,QAAUI,EAAQE,EAAKN,QAASjhG,EAAEyL,KACpCzL,EAAEm/F,MAAQkC,EAAQE,EAAKpC,MAAOvI,EAASuI,OACvCn/F,EAAEkhG,SAAWG,EAAQE,EAAKL,SAAUtK,EAASsK,UAC7ClhG,EAAEugG,KAAoB,MAAbgB,EAAKhB,KAAegB,EAAKhB,KAAO3J,EAAS2J,KAClDvgG,EAAEwgG,OAASe,EAAKf,OAETxgG,CACR,CAEDzB,EAAOD,QAAU,CAAEihG,SAAAA,E,+BCzBnB,IAAM3I,EAAWx2F,OAAOs+F,OAAO,CAI7BkC,aAAc,SAAA7iB,GAAA,OAAQ,EAAR,EAMdmhB,YAAa,SAAAnhB,GAAA,OAAQ,IAAR,EAIbwiB,KAAM,SAAA/nB,GAAA,OAAQ,CAAR,EAKNgpB,SAAU,IAIVC,KAAM,KAMNrI,MAAO,KAGPsI,UAAW,IAGXV,kBAAmB,EAKnBW,SAAU,KAGZpjG,EAAOD,QAAUs4F,C,+BC3CjB,IAAMgL,EAAe,IAErB,SAASC,EAAWhyE,EAAMiyE,GACxB,IAAIJ,OAAA,EAGFA,EADqB,MAAnBI,EACUA,EACe,MAAlBjyE,EAAK6xE,UACF7xE,EAAK6xE,UAELE,EAGd/xE,EAAKsvE,MAAMjiF,GAAKwkF,EAAY7xE,EAAKqxE,SAAShkF,EAC1C2S,EAAKsvE,MAAMpjE,GAAK2lE,EAAY7xE,EAAKqxE,SAASnlE,CAC3C,CAEDx9B,EAAOD,QAAU,CAAEujG,UAAAA,E,+BCfnB,SAASE,EAAWzB,EAAQqB,GAC1B,IAEIvgG,EAFA2hE,EAAK,EAAGn8B,EAAK,EACbo8B,EAAK,EAAGn8B,EAAK,EAEb96B,EAAMu0F,EAAOlhG,OAEjB,GAAY,IAAR2M,EACF,OAAO,EAGT,IAAK3K,EAAI,EAAGA,EAAI2K,IAAO3K,EAAG,CACxB,IAAIyuB,EAAOywE,EAAOl/F,GACdu9F,EAAQgD,EAAW9xE,EAAK0wE,KAE5B,IAAI1wE,EAAKmyE,QAAT,CAEInyE,EAAK2wE,QACP3wE,EAAKqxE,SAAShkF,EAAI,EAClB2S,EAAKqxE,SAASnlE,EAAI,IAElBlM,EAAKqxE,SAAShkF,GAAKyhF,EAAQ9uE,EAAKsvE,MAAMjiF,EACtC2S,EAAKqxE,SAASnlE,GAAK4iE,EAAQ9uE,EAAKsvE,MAAMpjE,GAGxC,IAAIkmE,EAAKpyE,EAAKqxE,SAAShkF,EACnBglF,EAAKryE,EAAKqxE,SAASnlE,EACnB3W,EAAI7hB,KAAK2iB,KAAK+7E,EAAKA,EAAKC,EAAKA,GAE7B98E,EAAI,IACNyK,EAAKqxE,SAAShkF,EAAI+kF,EAAK78E,EACvByK,EAAKqxE,SAASnlE,EAAImmE,EAAK98E,GAGzB29C,EAAK4+B,EAAW9xE,EAAKqxE,SAAShkF,EAC9B8lD,EAAK2+B,EAAW9xE,EAAKqxE,SAASnlE,EAE9BlM,EAAKpkB,IAAIyR,GAAK6lD,EACdlzC,EAAKpkB,IAAIswB,GAAKinC,EAEdp8B,GAAMrjC,KAAK6iB,IAAI28C,GAAKl8B,GAAMtjC,KAAK6iB,IAAI48C,EAzBJ,CA0BhC,CAED,OAAQp8B,EAAKA,EAAKC,EAAKA,GAAI96B,CAC5B,CAEDxN,EAAOD,QAAU,CAAEyjG,UAAAA,E,+BC3CnB,IAAMI,EAAOzL,EAAQ,GACf0L,EAAc1L,EAAQ,GAEtB2L,EAAW,SAAAj9E,GAAOA,EAAElI,EAAI,EAAGkI,EAAE2W,EAAI,CAAI,EAErCumE,EAAiB,SAACp+D,EAAIC,GAC1B,IAAIylD,EAAY,KACZ7mB,EAAKx/D,KAAK6iB,IAAI8d,EAAGhnB,EAAIinB,EAAGjnB,GACxB8lD,EAAKz/D,KAAK6iB,IAAI8d,EAAGnI,EAAIoI,EAAGpI,GAE5B,OAAOgnC,EAAK6mB,GAAa5mB,EAAK4mB,CAC/B,EAED,SAAS0V,IACP,IAAIiD,EAAc,GAChBC,EAAc,IAAIJ,EAClBK,EAAa,GACbC,EAAiB,EACjBptE,EAAOqtE,IAET,SAASA,IAEP,IAAInqB,EAAOiqB,EAAWC,GAetB,OAdIlqB,GACFA,EAAKoqB,MAAQ,KACbpqB,EAAKqqB,MAAQ,KACbrqB,EAAKsqB,MAAQ,KACbtqB,EAAKuqB,MAAQ,KACbvqB,EAAK3oD,KAAO,KACZ2oD,EAAK+nB,KAAO/nB,EAAKwqB,MAAQxqB,EAAKyqB,MAAQ,EACtCzqB,EAAK/qC,KAAO+qC,EAAK9qC,MAAQ8qC,EAAK7qC,IAAM6qC,EAAK5qC,OAAS,IAElD4qC,EAAO,IAAI2pB,EACXM,EAAWC,GAAkBlqB,KAG7BkqB,EACKlqB,CACR,CAED,SAASpkD,EAAQ8uE,EAAY1B,EAASpI,EAAOqI,GAC3C,IAAIthF,EAAQoiF,EACVn9E,OAAA,EACA29C,OAAA,EACAC,OAAA,EACA74C,OAAA,EAAGyW,EAAK,EACRC,EAAK,EACLsiE,EAAc,EACdC,EAAW,EACXC,EAAU,EAEZljF,EAAM,GAAKmV,EAEX+sE,EAAUa,EAAW/D,OAErB,IAAI7yF,GAAM42F,EAAWz3F,IAAIyR,EACrBkP,GAAM82E,EAAWz3F,IAAIswB,EACrBunE,EAAK//F,KAAK2iB,KAAK5Z,EAAKA,EAAK8f,EAAKA,GAC9Bm3E,EAAKL,EAAW3C,KAAOkB,EAAO6B,EAElC1iE,GAAM2iE,EAAKj3F,EACXu0B,GAAM0iE,EAAKn3E,EAEX,MAAO+2E,EAAa,CAClB,IAAI3qB,EAAOr4D,EAAMijF,GACfvzE,EAAO2oD,EAAK3oD,KAEdszE,GAAe,EACfC,GAAY,EACZ,IAAII,EAAiB3zE,IAASqzE,EAC1BrzE,GAAQ2zE,GAIVzgC,EAAKlzC,EAAKpkB,IAAIyR,EAAIgmF,EAAWz3F,IAAIyR,EACjC8lD,EAAKnzC,EAAKpkB,IAAIswB,EAAImnE,EAAWz3F,IAAIswB,EACjC5R,EAAI5mB,KAAK2iB,KAAK68C,EAAKA,EAAKC,EAAKA,GAEnB,IAAN74C,IAEF44C,GAAMx/D,KAAKgJ,SAAW,IAAO,GAC7By2D,GAAMz/D,KAAKgJ,SAAW,IAAO,GAC7B4d,EAAI5mB,KAAK2iB,KAAK68C,EAAKA,EAAKC,EAAKA,IAK/B59C,EAAIo8E,EAAU3xE,EAAK0wE,KAAO2C,EAAW3C,MAAQp2E,EAAIA,EAAIA,GACrDyW,GAAMxb,EAAI29C,EACVliC,GAAMzb,EAAI49C,GACDwgC,IAITzgC,EAAKyV,EAAKwqB,MAAQxqB,EAAK+nB,KAAO2C,EAAWz3F,IAAIyR,EAC7C8lD,EAAKwV,EAAKyqB,MAAQzqB,EAAK+nB,KAAO2C,EAAWz3F,IAAIswB,EAC7C5R,EAAI5mB,KAAK2iB,KAAK68C,EAAKA,EAAKC,EAAKA,GAEnB,IAAN74C,IAGF44C,GAAMx/D,KAAKgJ,SAAW,IAAO,GAC7By2D,GAAMz/D,KAAKgJ,SAAW,IAAO,GAC7B4d,EAAI5mB,KAAK2iB,KAAK68C,EAAKA,EAAKC,EAAKA,KAI1BwV,EAAK9qC,MAAQ8qC,EAAK/qC,MAAQtjB,EAAIivE,GAIjCh0E,EAAIo8E,EAAUhpB,EAAK+nB,KAAO2C,EAAW3C,MAAQp2E,EAAIA,EAAIA,GACrDyW,GAAMxb,EAAI29C,EACVliC,GAAMzb,EAAI49C,IAKNwV,EAAKoqB,QACPziF,EAAMkjF,GAAW7qB,EAAKoqB,MACtBO,GAAe,EACfE,GAAW,GAET7qB,EAAKqqB,QACP1iF,EAAMkjF,GAAW7qB,EAAKqqB,MACtBM,GAAe,EACfE,GAAW,GAET7qB,EAAKsqB,QACP3iF,EAAMkjF,GAAW7qB,EAAKsqB,MACtBK,GAAe,EACfE,GAAW,GAET7qB,EAAKuqB,QACP5iF,EAAMkjF,GAAW7qB,EAAKuqB,MACtBI,GAAe,EACfE,GAAW,IAIlB,CAEDH,EAAW/D,MAAMjiF,GAAK0jB,EACtBsiE,EAAW/D,MAAMpjE,GAAK8E,CACvB,CAED,SAAS4iE,EAAanD,GACpB,GAAsB,IAAlBA,EAAOlhG,OAAX,CAEA,IAAI8nC,EAAKyyB,OAAO+pC,UACdv8D,EAAKwyB,OAAO+pC,UACZr8D,EAAKsyB,OAAOgqC,UACZr8D,EAAKqyB,OAAOgqC,UACZviG,OAAA,EACA2K,EAAMu0F,EAAOlhG,OAGfgC,EAAI2K,EACJ,MAAO3K,IAAK,CACV,IAAI8b,EAAIojF,EAAOl/F,GAAGqK,IAAIyR,EAClB6e,EAAIukE,EAAOl/F,GAAGqK,IAAIswB,EAClB7e,EAAIgqB,IACNA,EAAKhqB,GAEHA,EAAImqB,IACNA,EAAKnqB,GAEH6e,EAAIoL,IACNA,EAAKpL,GAEHA,EAAIuL,IACNA,EAAKvL,EAER,CAGD,IAAIgnC,EAAK17B,EAAKH,EACZ87B,EAAK17B,EAAKH,EACR47B,EAAKC,EACP17B,EAAKH,EAAK47B,EAEV17B,EAAKH,EAAK87B,EAGZ0/B,EAAiB,EACjBptE,EAAOqtE,IACPrtE,EAAKmY,KAAOvG,EACZ5R,EAAKoY,MAAQrG,EACb/R,EAAKqY,IAAMxG,EACX7R,EAAKsY,OAAStG,EAEdlmC,EAAI2K,EAAM,EACN3K,GAAK,IACPk0B,EAAKzF,KAAOywE,EAAOl/F,IAErB,MAAOA,IACLw4E,EAAO0mB,EAAOl/F,GAAIk0B,EAjDgB,CAmDrC,CAED,SAASskD,EAAOgqB,GACdpB,EAAYqB,QACZrB,EAAYnhG,KAAKi0B,EAAMsuE,GAEvB,OAAQpB,EAAYsB,UAAW,CAC7B,IAAIC,EAAYvB,EAAY3sE,MAC1B2iD,EAAOurB,EAAUvrB,KACjB3oD,EAAOk0E,EAAUl0E,KAEnB,GAAK2oD,EAAK3oD,KA2CH,CAIL,IAAIm0E,EAAUxrB,EAAK3oD,KAGnB,GAFA2oD,EAAK3oD,KAAO,KAERyyE,EAAe0B,EAAQv4F,IAAKokB,EAAKpkB,KAAM,CAGzC,IAAIw4F,EAAe,EACnB,EAAG,CACD,IAAI15E,EAAShnB,KAAKgJ,SACdw2D,GAAMyV,EAAK9qC,MAAQ8qC,EAAK/qC,MAAQljB,EAChCy4C,GAAMwV,EAAK5qC,OAAS4qC,EAAK7qC,KAAOpjB,EAEpCy5E,EAAQv4F,IAAIyR,EAAIs7D,EAAK/qC,KAAOs1B,EAC5BihC,EAAQv4F,IAAIswB,EAAIy8C,EAAK7qC,IAAMq1B,EAC3BihC,GAAgB,CAEjB,OAAQA,EAAe,GAAK3B,EAAe0B,EAAQv4F,IAAKokB,EAAKpkB,MAE9D,GAAqB,IAAjBw4F,GAAsB3B,EAAe0B,EAAQv4F,IAAKokB,EAAKpkB,KAKzD,MAEH,CAED+2F,EAAYnhG,KAAKm3E,EAAMwrB,GACvBxB,EAAYnhG,KAAKm3E,EAAM3oD,EACxB,KA5Ee,CAEd,IAAI3S,EAAI2S,EAAKpkB,IAAIyR,EACb6e,EAAIlM,EAAKpkB,IAAIswB,EACjBy8C,EAAK+nB,KAAO/nB,EAAK+nB,KAAO1wE,EAAK0wE,KAC7B/nB,EAAKwqB,MAAQxqB,EAAKwqB,MAAQnzE,EAAK0wE,KAAOrjF,EACtCs7D,EAAKyqB,MAAQzqB,EAAKyqB,MAAQpzE,EAAK0wE,KAAOxkE,EAItC,IAAImoE,EAAU,EACZz2D,EAAO+qC,EAAK/qC,KACZC,GAAS8qC,EAAK9qC,MAAQD,GAAQ,EAC9BE,EAAM6qC,EAAK7qC,IACXC,GAAU4qC,EAAK5qC,OAASD,GAAO,EAE7BzwB,EAAIwwB,IACNw2D,GAAoB,EACpBz2D,EAAOC,EACPA,EAAQ8qC,EAAK9qC,OAEX3R,EAAI6R,IACNs2D,GAAoB,EACpBv2D,EAAMC,EACNA,EAAS4qC,EAAK5qC,QAGhB,IAAIu2D,EAAQC,EAAS5rB,EAAM0rB,GACtBC,EAaH3B,EAAYnhG,KAAK8iG,EAAOt0E,IAVxBs0E,EAAQxB,IACRwB,EAAM12D,KAAOA,EACb02D,EAAMx2D,IAAMA,EACZw2D,EAAMz2D,MAAQA,EACdy2D,EAAMv2D,OAASA,EACfu2D,EAAMt0E,KAAOA,EAEbw0E,EAAS7rB,EAAM0rB,EAASC,GAK3B,CAkCF,CACF,CAED,MAAO,CACLV,aAAcA,EACda,gBAAiBlwE,EAEpB,CAED,SAASgwE,EAAS5rB,EAAM+rB,GACtB,OAAY,IAARA,EAAkB/rB,EAAKoqB,MACf,IAAR2B,EAAkB/rB,EAAKqqB,MACf,IAAR0B,EAAkB/rB,EAAKsqB,MACf,IAARyB,EAAkB/rB,EAAKuqB,MACpB,IACR,CAED,SAASsB,EAAS7rB,EAAM+rB,EAAKJ,GACf,IAARI,EAAW/rB,EAAKoqB,MAAQuB,EACX,IAARI,EAAW/rB,EAAKqqB,MAAQsB,EAChB,IAARI,EAAW/rB,EAAKsqB,MAAQqB,EAChB,IAARI,IAAW/rB,EAAKuqB,MAAQoB,EAClC,CAED5lG,EAAOD,QAAU,CAAEghG,aAAAA,E,+BCnTnB,SAAS8C,IACLhlG,KAAK8b,MAAQ,GACb9b,KAAKonG,OAAS,CACjB,CA4BD,SAASC,EAAmBjsB,EAAM3oD,GAC9BzyB,KAAKo7E,KAAOA,EACZp7E,KAAKyyB,KAAOA,CACf,CAzCDtxB,EAAOD,QAAU8jG,EAYjBA,EAAYz9F,UAAY,CACpBm/F,QAAS,WACL,OAAuB,IAAhB1mG,KAAKonG,MACf,EACDnjG,KAAM,SAAUm3E,EAAM3oD,GAClB,IAAIjN,EAAOxlB,KAAK8b,MAAM9b,KAAKonG,QACtB5hF,GAKDA,EAAK41D,KAAOA,EACZ51D,EAAKiN,KAAOA,GAHZzyB,KAAK8b,MAAM9b,KAAKonG,QAAU,IAAIC,EAAmBjsB,EAAM3oD,KAKzDzyB,KAAKonG,MACV,EACD3uE,IAAK,WACD,GAAIz4B,KAAKonG,OAAS,EACd,OAAOpnG,KAAK8b,QAAQ9b,KAAKonG,OAEhC,EACDX,MAAO,WACHzmG,KAAKonG,OAAS,CACjB,E,+BChCLjmG,EAAOD,QAAU,WAGflB,KAAKyyB,KAAO,KAMZzyB,KAAKwlG,MAAQ,KACbxlG,KAAKylG,MAAQ,KACbzlG,KAAK0lG,MAAQ,KACb1lG,KAAK2lG,MAAQ,KAGb3lG,KAAKmjG,KAAO,EAGZnjG,KAAK4lG,MAAQ,EACb5lG,KAAK6lG,MAAQ,EAGb7lG,KAAKqwC,KAAO,EACZrwC,KAAKuwC,IAAM,EACXvwC,KAAKwwC,OAAS,EACdxwC,KAAKswC,MAAQ,CACd,C,qCC7BqBgpD,EAAQ,GAAtBqL,EAAAA,EAAAA,U,EACcrL,EAAQ,GAAtBmL,EAAAA,EAAAA,U,EACgBnL,EAAQ,GAAxBqI,EAAAA,EAAAA,YAER,SAASvkD,EAATxyB,GAAuF,IAAvEs4E,EAAuEt4E,EAAvEs4E,OAAQK,EAA+D34E,EAA/D24E,QAASN,EAAsDr4E,EAAtDq4E,SAAUsB,EAA4C35E,EAA5C25E,SAAUH,EAAkCx5E,EAAlCw5E,QAASpI,EAAyBpxE,EAAzBoxE,MAAOsI,EAAkB15E,EAAlB05E,UAAWD,EAAOz5E,EAAPy5E,KAE9EnB,EAAOt4F,SAAS,SAAA6nB,GACd,IAAIorB,EAAIprB,EAAK6wE,SAERzlD,IAELprB,EAAK2wE,OAASvlD,EAAEulD,OAChB3wE,EAAKmyE,QAAU/mD,EAAE+mD,QACjBnyE,EAAKpkB,IAAIyR,EAAI+9B,EAAE/9B,EACf2S,EAAKpkB,IAAIswB,EAAIkf,EAAElf,EAChB,IAEDskE,EAASoD,aAAcnD,GAEvB,IAAK,IAAIl/F,EAAI,EAAGA,EAAIk/F,EAAOlhG,OAAQgC,IAAK,CACtC,IAAIyuB,EAAOywE,EAAOl/F,GAElBi/F,EAASiE,gBAAiBz0E,EAAM2xE,EAASpI,EAAOqI,GAChDI,EAAWhyE,EAAM6xE,EAClB,CAED,IAAK,IAAI10F,EAAI,EAAGA,EAAI2zF,EAAQvhG,OAAQ4N,IAAK,CACvC,IAAI8xF,EAAS6B,EAAQ3zF,GAErB+xF,EAAaD,EACd,CAED,IAAIgC,EAAWiB,EAAWzB,EAAQqB,GAYlC,OATArB,EAAOt4F,SAAS,SAAA6nB,GACd,IAAIorB,EAAIprB,EAAK6wE,SAERzlD,IAELA,EAAE/9B,EAAI2S,EAAKpkB,IAAIyR,EACf+9B,EAAElf,EAAIlM,EAAKpkB,IAAIswB,EAChB,IAEM+kE,CACR,CAEDviG,EAAOD,QAAU,CAAEk8C,KAAAA,E,+BC/CnB,IAAM0lD,EAAQxJ,EAAQ,GAGlBlgB,EAAW,SAAU0M,GAClBA,GAELA,EAAW,SAAU,QAASgd,EAC/B,EAEwB,qBAAdhd,WACT1M,EAAU0M,WAGZ3kF,EAAOD,QAAUk4E,C,+BCXjBj4E,EAAOD,QAAU8B,OAAOs+F,OAAO,CAC7BgG,SAAS,EACTC,QAAS,GACTC,cAAe,IACfC,kBAAmB,IACnBC,0BAA0B,EAC1BC,KAAK,EACLpc,QAAS,GACTjK,iBAAa5+E,EAGbqkE,MAAO,WAAY,EACnBjvC,KAAM,WAAY,EAGlB8vE,WAAW,EAGXC,UAAU,G,sXChBZ,IAAMr9F,EAAS8uF,EAAQ,GACjBE,EAAWF,EAAQ,IACnBwO,EAAkBxO,EAAQ,I,EAC2CA,EAAQ,IAA3EyO,EAAAA,EAAAA,wBAAyBC,EAAAA,EAAAA,iBAAkBC,EAAAA,EAAAA,oB,EAC7B3O,EAAQ,IAAtB4O,EAAAA,EAAAA,UAEFlG,EAAAA,WACJ,SAAAA,EAAariG,GAASojG,EAAA,KAAAf,GACpB,IAAI/pB,EAAIj4E,KAAKL,QAAU6K,EAAQ,CAAC,EAAGgvF,EAAU75F,GAEzC2O,EAAItO,KAAKoW,MAAQ5L,EAAQ,CAAC,EAAGytE,EAAG,CAClCkwB,OAAQnoG,KACR8+E,MAAO7G,EAAEmwB,KAAKtpB,QACdqB,MAAOlI,EAAEmwB,KAAKjoB,QACdkoB,UAAW,EACXC,aAAa,IAGfh6F,EAAEi6F,WAAatwB,EAAEqvB,SAAyB,QAAdrvB,EAAEqvB,QAC9Bh5F,EAAEk6F,oBAAsBvwB,EAAEqvB,UAAYh5F,EAAEi6F,UACzC,C,wCAGC,IAAI/5F,EAAIxO,KACJsO,EAAItO,KAAKoW,MAgBb,GAdA9H,EAAE+5F,UAAY,EACd/5F,EAAEg6F,aAAc,EAChBh6F,EAAEm6F,UAAYp0E,KAAK1Q,MACnBrV,EAAEo6F,SAAU,EAEZp6F,EAAEq6F,mBAAqBb,EAAiBx5F,EAAEgzE,YAAahzE,EAAE6gB,IAErD7gB,EAAEy4D,OAASv4D,EAAEktE,IAAK,QAASptE,EAAEy4D,OAC7Bz4D,EAAEwpB,MAAQtpB,EAAEktE,IAAK,OAAQptE,EAAEwpB,MAE/BxpB,EAAEwwE,MAAMl0E,SAAS,SAAAmV,GAAA,OAAKgoF,EAAyBhoF,EAAGzR,EAAjC,IAEjBE,EAAEo6F,OAAQt6F,GAENA,EAAEk6F,oBAAqB,CACzB,IAAI1J,EAAY,SAAA1jB,GACd,GAAK9sE,EAAEo5F,yBAAP,CAEA,IAAIlK,EAAYyK,EAAqB7sB,EAAM9sE,GAAIkvF,UAAYpiB,EAAKoiB,YAE5DA,GACFpiB,EAAK0jB,WALqC,CAO7C,EAEG+J,EAAY,SAAAztB,GACd,GAAK9sE,EAAEo5F,yBAAP,CAEA,IAAIlK,EAAYyK,EAAqB7sB,EAAM9sE,GAAIkvF,UAE3CA,GACFpiB,EAAK+iB,SALqC,CAO7C,EAEG2K,EAAkB,SAAA1tB,GAAA,OAAQ6sB,EAAqB7sB,EAAM9sE,GAAIs2F,QAAUxpB,EAAKwpB,SAAtD,EAElBmE,EAAS,SAAAn+E,GAAoB,IAATllB,EAASklB,EAATllB,OACtBojG,EAAiBpjG,EAClB,EAEGsjG,EAASD,EAETE,EAAS,SAAAp+E,GAAoB,IAATnlB,EAASmlB,EAATnlB,OAClBm4C,EAAIoqD,EAAqBviG,EAAQ4I,GACjC46F,EAAKxjG,EAAOosB,WAEhB+rB,EAAE/9B,EAAIopF,EAAGppF,EACT+9B,EAAElf,EAAIuqE,EAAGvqE,CACV,EAEGwqE,EAAe,SAAA/tB,GACjBA,EAAK3X,GAAG,OAAQslC,GAChB3tB,EAAK3X,GAAG,OAAQulC,GAChB5tB,EAAK3X,GAAG,OAAQwlC,EACjB,EAEGG,EAAiB,SAAAhuB,GACnBA,EAAKiuB,eAAe,OAAQN,GAC5B3tB,EAAKiuB,eAAe,OAAQL,GAC5B5tB,EAAKiuB,eAAe,OAAQJ,EAC7B,EAEGtB,EAAM,WACJr5F,EAAEq5F,KAAOr5F,EAAEk6F,qBACbl6F,EAAE6gB,GAAGw4E,IAAKr5F,EAAEi9E,QAEf,EAEG+d,EAAY,WACdtB,EAAkB15F,EAAEwwE,MAAOxwE,GAC3Bq5F,IAEAr2E,sBAAuBi4E,EACxB,EAEGA,EAAQ,WACVrB,EAAW55F,EAAGg7F,EAAWE,EAC1B,EAEGA,EAAS,WACXxB,EAAkB15F,EAAEwwE,MAAOxwE,GAC3Bq5F,IAEAr5F,EAAEwwE,MAAMl0E,SAAS,SAAAmV,GACf8oF,EAAW9oF,GACXqpF,EAAgBrpF,EACjB,IAEDzR,EAAEo6F,SAAU,EAEZl6F,EAAEi7F,KAAK,aACR,EAEDj7F,EAAEi7F,KAAK,eAEPn7F,EAAEwwE,MAAMl0E,SAAS,SAAAmV,GACf++E,EAAW/+E,GACXopF,EAAcppF,EACf,IAEDwpF,GACD,KAAM,CACL,IAAIlgG,GAAO,EACPqgG,EAAY,WAAQ,EACpBC,EAAS,kBAAMtgG,GAAO,CAAb,EAEb,OAAQA,EACN6+F,EAAW55F,EAAGo7F,EAAWC,GAG3Br7F,EAAE85F,KAAKwB,gBAAiB5pG,KAAMsO,GAAG,SAAA8sE,GAC/B,IAAIyuB,EAAK5B,EAAqB7sB,EAAM9sE,GAEpC,MAAO,CAAEwR,EAAG+pF,EAAG/pF,EAAG6e,EAAGkrE,EAAGlrE,EACzB,GACF,CAID,OAFAnwB,EAAEs7F,QAASx7F,GAEJtO,IACR,G,+BAES,G,gCACC,G,6BACH,G,6BAKN,OAFAA,KAAKoW,MAAMsyF,SAAU,EAEd1oG,IACR,G,gCAGC,OAAOA,IACR,K,EA3JGgiG,GA8JN7gG,EAAOD,QAAU8gG,C,+BCxKjB7gG,EAAOD,QAAU,SAAUu4E,EAAItqD,GAY7B,OAVEsqD,EADQ,MAANA,EACG,CAAE3vC,GAAI,EAAGC,GAAI,EAAGlgC,EAAGslB,EAAGqZ,QAAS1nC,EAAGquB,EAAGsZ,UAErC,CAAEqB,GAAI2vC,EAAG3vC,GAAIG,GAAIwvC,EAAGxvC,GAAIF,GAAI0vC,EAAG1vC,GAAIG,GAAIuvC,EAAGvvC,GAAIrgC,EAAG4vE,EAAG5vE,EAAG/I,EAAG24E,EAAG34E,GAGvD,MAAT24E,EAAGxvC,KAAcwvC,EAAGxvC,GAAKwvC,EAAG3vC,GAAK2vC,EAAG5vE,GAC5B,MAAR4vE,EAAG5vE,IAAa4vE,EAAG5vE,EAAI4vE,EAAGxvC,GAAKwvC,EAAG3vC,IACzB,MAAT2vC,EAAGvvC,KAAcuvC,EAAGvvC,GAAKuvC,EAAG1vC,GAAK0vC,EAAG34E,GAC5B,MAAR24E,EAAG34E,IAAa24E,EAAG34E,EAAI24E,EAAGvvC,GAAKuvC,EAAG1vC,IAE/B0vC,CACR,C,+BCbD,IAAMjvE,EAAS8uF,EAAQ,GAEnByO,EAA0B,SAAU3sB,EAAMhlE,GAC5C,IAAIynC,EAAIu9B,EAAKtpD,WACT2nD,EAAKrjE,EAAMuyF,mBACXjlB,EAAUtI,EAAKsI,QAASttE,EAAM3R,MAEnB,MAAXi/E,IACFA,EAAU,CAAC,EAEXtI,EAAKsI,QAASttE,EAAM3R,KAAMi/E,IAG5Bl5E,EAAQk5E,EAASttE,EAAMwxF,UAAY,CACjC9nF,EAAG25D,EAAG3vC,GAAK3jC,KAAKgJ,SAAWsqE,EAAG5vE,EAC9B80B,EAAG86C,EAAG1vC,GAAK5jC,KAAKgJ,SAAWsqE,EAAG34E,GAC5B,CACFgf,EAAG+9B,EAAE/9B,EACL6e,EAAGkf,EAAElf,IAGP+kD,EAAQ0f,OAAShoB,EAAKgoB,QACvB,EAEG6E,EAAsB,SAAU7sB,EAAMhlE,GACxC,OAAOglE,EAAKsI,QAASttE,EAAM3R,KAC5B,EAEGujG,EAAmB,SAAUlpB,EAAO1oE,GACtC0oE,EAAMirB,WAAU,SAAU3uB,GACxB,IAAIsI,EAAUtI,EAAKsI,QAASttE,EAAM3R,MAElC,MAAO,CACLqb,EAAG4jE,EAAQ5jE,EACX6e,EAAG+kD,EAAQ/kD,EAEd,GACF,EAEDx9B,EAAOD,QAAU,CAAE6mG,wBAAAA,EAAyBE,oBAAAA,EAAqBD,iBAAAA,E,+BCvCjE,IAAMgC,EAAM,WAAY,EAEpB5sD,EAAO,SAAUhnC,GACnB,IAAI9H,EAAI8H,EACJ5H,EAAI4H,EAAM+xF,OAEV8B,EAAoBz7F,EAAE4uC,KAAM9uC,GAE5BA,EAAEg6F,cACAh6F,EAAEk6F,qBACJl6F,EAAE65F,OAAOsB,KAAK,eAEhBn7F,EAAEg6F,aAAc,GAGlBh6F,EAAE+5F,YAEF,IAAIvkC,EAAWzvC,KAAK1Q,MAAQrV,EAAEm6F,UAE9B,OAAQn6F,EAAEu5F,WAAcoC,GAAqB37F,EAAE+5F,WAAa/5F,EAAEk5F,eAAiB1jC,GAAYx1D,EAAEm5F,kBAC9F,EAEGS,EAAY,SAAU9xF,GAIxB,IAJ8D,IAA/BkzF,EAA+BvmG,UAAAf,OAAA,QAAAU,IAAAK,UAAA,GAAAA,UAAA,GAAnBinG,EAAKE,EAAcnnG,UAAAf,OAAA,QAAAU,IAAAK,UAAA,GAAAA,UAAA,GAALinG,EACrD3gG,GAAO,EACPiF,EAAI8H,EAECpS,EAAI,EAAGA,EAAIsK,EAAEi5F,QAASvjG,IAG7B,GAFAqF,GAAQiF,EAAEo6F,SAAWtrD,EAAM9uC,GAEvBjF,EAAQ,MAGTA,EAGH6gG,IAFAZ,GAIH,EAEDnoG,EAAOD,QAAU,CAAEk8C,KAAAA,EAAM8qD,UAAAA,E,kECvCzB,SAAAtkG,GAAAzC,EAAAD,QAAA0C,GAAA,kBAAAk0E,EAAA,gBAAA7xE,EAAAokB,EAAAtK,EAAAgN,GAAA,SAAAze,EAAA2pE,EAAAkyB,GAAA,IAAApqF,EAAAk4D,GAAA,KAAA5tD,EAAA4tD,GAAA,KAAAt1E,OAAA,MAAAwnG,GAAAxnG,EAAA,OAAAA,QAAAs1E,GAAA,MAAAj0E,EAAA,OAAAA,EAAAi0E,GAAA,OAAAr0E,EAAA,IAAA+X,MAAC,uBAADs8D,EAAA,WAAAr0E,EAAAmmF,KAAA,mBAAAnmF,CAAA,KAAA4K,EAAAuR,EAAAk4D,GAAA,CAAA/2E,QAAA,IAAAmpB,EAAA4tD,GAAA,GAAA53E,KAAAmO,EAAAtN,SAAA,SAAA+E,GAAA,IAAA8Z,EAAAsK,EAAA4tD,GAAA,GAAAhyE,GAAA,OAAAqI,EAAAyR,GAAA9Z,EAAA,GAAAuI,EAAAA,EAAAtN,QAAA+E,EAAAokB,EAAAtK,EAAAgN,EAAA,QAAAhN,EAAAk4D,GAAA/2E,OAAA,SAAA8C,OAAA,EAAAi0E,EAAA,EAAAA,EAAAlrD,EAAA/qB,OAAAi2E,IAAA3pE,EAAAye,EAAAkrD,IAAA,OAAA3pE,CAAA,eAAA87F,EAAAjpG,EAAAD,GCAA,IAAAmpG,EAAA,CACAC,mBAAA,SAAAC,EAAAC,GACA,OAAAD,EAAAzgE,IAAA0gE,EAAA1gE,IAAAygE,EAAAtgE,IAAAugE,EAAAvgE,IAAAsgE,EAAAxgE,IAAAygE,EAAAzgE,IAAAwgE,EAAArgE,IAAAsgE,EAAAtgE,EACA,EACAugE,SAAA,SAAAF,EAAAC,GACA,IAAAzT,EAAA,CACAjtD,GAAA3jC,KAAAyI,IAAA27F,EAAAzgE,GAAA0gE,EAAA1gE,IACAG,GAAA9jC,KAAAwI,IAAA47F,EAAAtgE,GAAAugE,EAAAvgE,IACAF,GAAA5jC,KAAAyI,IAAA27F,EAAAxgE,GAAAygE,EAAAzgE,IACAG,GAAA/jC,KAAAwI,IAAA47F,EAAArgE,GAAAsgE,EAAAtgE,KAMA,OAHA6sD,EAAAltF,EAAAktF,EAAA9sD,GAAA8sD,EAAAjtD,GACAitD,EAAAj2F,EAAAi2F,EAAA7sD,GAAA6sD,EAAAhtD,GAEAgtD,CACA,GAGA51F,EAAAD,QAAAmpG,C,yBCnBA,IAAAjwC,EAAAgwC,EAAA,cACAM,EAAAN,EAAA,eAEAjpG,EAAAD,QAAA,SAAA0gB,EAAAuN,EAAAw7E,GACA,IAAAC,EACApoG,EAAAof,EACA,MAAAipF,EAAA,IACA,IAAAC,EAEA,MAAAC,EAAA,WACA,IAAArnB,EAAAv0D,EAAAu0D,QAAA,qBACA,OAAAA,GAAAA,EAAAsnB,YACA,EAEAC,EAAA,SAAAhsF,GACA,IAAAykE,EAAAv0D,EAAAu0D,QAAA,qBACA,MAAAA,IACAA,EAAA,IAGAA,EAAAsnB,aAAA/rF,EACAkQ,EAAAu0D,QAAA,oBAAAA,EACA,EAEA,IAAAwnB,EAAA,CACAxzC,KAAA,WACA,IAAAyzC,EAAAhoG,SAAAE,cAAA,UACA8nG,EAAA9S,UAAA93F,IAAA,0BACA,IAAA6qG,EAAAj8E,EAAA2b,YACA3mC,EAAAgnG,EAAA96E,WAAA,MACA+6E,EAAAvjF,OAAAsjF,GAEAP,EAAAR,EAAA,qBAAAA,CAAAj7E,GAEA,IAAAhC,EAAA,SAAAk+E,GACA,IAAApuE,EAAAouE,EAAAnK,wBAEA,OACA3wD,IAAAtT,EAAAsT,IAAAptC,SAAAuD,gBAAA26F,UACAhxD,KAAApT,EAAAoT,KAAAltC,SAAAuD,gBAAAy6F,WAEA,EAEAmK,EAAAlxC,GAAA,WACA+wC,EAAA1iE,OAAAtZ,EAAA2b,YAAAygE,aACAJ,EAAA3iE,MAAArZ,EAAA2b,YAAA0gE,YACAL,EAAAv/F,MAAAkmB,SAAA,WACAq5E,EAAAv/F,MAAA2kC,IAAA,EACA46D,EAAAv/F,MAAAykC,KAAA,EACA86D,EAAAv/F,MAAA44E,OAAA7kF,IAAA6kF,OAEArgE,YAAA,WACA,IAAAsnF,EAAAt+E,EAAAg+E,GACAO,EAAAv+E,EAAAi+E,GACAD,EAAAv/F,MAAA2kC,MAAAk7D,EAAAl7D,IAAAm7D,EAAAn7D,KACA46D,EAAAv/F,MAAAykC,OAAAo7D,EAAAp7D,KAAAq7D,EAAAr7D,MAGAlhB,GACAw8E,GAAA,EAEA,KAEA,QAEA,SAAAC,IACAN,GACA,CAEAM,IAEA,IAAA3sF,EAAA,GAQA,SAAAtf,IACA,OAAAwvB,EAAAu0D,QAAA,qBAAA/jF,OACA,CAEA,SAAAgsG,IACA,IAAA9hG,EAAAslB,EAAAqZ,QACA1nC,EAAAquB,EAAAsZ,SAEAtkC,EAAAivB,UAAA,IAAAvpB,EAAA/I,GACAgqG,EAAA,IACA,CAEA,SAAAe,EAAAzwB,GACA,IAAA2D,EAAA3D,EAAA2D,WACA+sB,EAAA1wB,EAAAn8D,KAAA,qBACA8sF,EAAA,MAAAhtB,QAAAr8E,GAAAq8E,GAAAA,EAAA/8E,OAAA,EAEA,GAAA+pG,GAAAD,EAAA,CAIA,IAMAE,EANAC,EAAA7wB,EAAA8wB,SAAA,qCAGAC,EAAAxsG,IAAAysG,sBACAC,EAAA1sG,IAAA2sG,0BAIA,gBAAA3sG,IAAA4sG,0BAAA,CACA,IAAAp/E,EAAA,EACAm8D,EAAAn6D,EAAAiuD,OAAA,EAAA+uB,GAAA,EAAAh9E,EAAAiuD,QAAA+uB,EAAA,EACAK,EAAA12D,WAAAslC,EAAAqxB,IAAA,iBACA3sF,EAAAs7D,EAAAtpD,SAAA,KAAAspD,EAAA5yC,QAAA,EAAAsN,WAAAslC,EAAAqxB,IAAA,iBACAD,EAAAljB,EAAAn8D,EACAwR,EAAAy8C,EAAAtpD,SAAA,KAAAspD,EAAA3yC,SAAA,EAAAqN,WAAAslC,EAAAqxB,IAAA,gBACAD,EAAAljB,EAAAn8D,EAEA6+E,EAAA,CAAAlsF,EAAAA,EAAA6e,EAAAA,EACA,MACA,IAAAoM,EAAAprC,IAAA4sG,0BACAP,EAAA,oBAAAjhE,EAAAA,EAAA1qC,KAAA,KAAA+6E,GAAArwC,CACA,CAEA,IAAA2hE,EAAA9B,EAAA+B,0BAAAX,GAGAG,EAAAhmG,KAAAwI,IAAAw9F,EAAAA,EAAAh9E,EAAAiuD,QACAivB,EAAAlmG,KAAAwI,IAAA09F,EAAAA,EAAAl9E,EAAAiuD,QACA,IAAAwvB,GAAAT,EAAAE,GAAA,EAEAQ,EAAAH,EAAA5sF,EACAgtF,EAAAJ,EAAA/tE,EAEAouE,EAAAF,EAAAV,EAAA,EACAa,EAAAF,EAAAX,EAAA,EACAc,EAAAd,EAGA,GAAAF,GAAAtsG,IAAAutG,eACAC,EAAAxtG,IAAAutG,eAAAH,EAAAC,EAAAb,EAAAA,QAEA,IAAAF,GAAAtsG,IAAAytG,iBACAD,EAAAxtG,IAAAytG,iBAAAL,EAAAC,EAAAb,EAAAA,OAEA,CACA,IAAAkB,EAAAlpG,EAAAw3B,UACA2xE,EAAAnpG,EAAA41B,UACAwzE,EAAAppG,EAAAy3B,YAEAz3B,EAAAw3B,UAAA,QACAx3B,EAAAy3B,YAAA,QAEAz3B,EAAA+4B,QAAA2vE,EAAAC,EAAAX,EAAA,EAAAA,EAAA,QAAAhmG,KAAA40B,IACA52B,EAAA4lB,OAEA5lB,EAAAq5B,YAEAr5B,EAAAy3B,YAAA,QACAz3B,EAAA41B,UAAA5zB,KAAAwI,IAAA,QAAAwgB,EAAAiuD,QAEAj5E,EAAA8hC,OAAA8mE,EAAAH,EAAAI,EAAAb,EAAA,GACAhoG,EAAA08B,OAAAksE,EAAAV,EAAAO,EAAAI,EAAAb,EAAA,GAEAF,IACA9nG,EAAA8hC,OAAA8mE,EAAAZ,EAAA,EAAAa,EAAAJ,GACAzoG,EAAA08B,OAAAksE,EAAAZ,EAAA,EAAAa,EAAAX,EAAAO,IAGAzoG,EAAAs5B,YACAt5B,EAAAk1B,SAEAl1B,EAAAy3B,YAAA2xE,EACAppG,EAAAw3B,UAAA0xE,EACAlpG,EAAA41B,UAAAuzE,CACA,CAEAlyB,EAAAyF,SAAA5hE,KAAAuuF,6BAAAT,EACA3xB,EAAAyF,SAAA5hE,KAAAwuF,6BAAAT,EACA5xB,EAAAyF,SAAA5hE,KAAAyuF,8BAAAT,EAEAnC,EAAA1vB,CAlFA,CAmFA,CAEA,SAAA+xB,EAAAQ,EAAA7tF,EAAA6e,EAAA90B,EAAA/I,GACA,IAAA49D,EAAA,IAAAkvC,MAAA/jG,EAAA/I,GACA49D,EAAA5yD,IAAA6hG,EACAjvC,EAAAmvC,OAAA,KACA1pG,EAAA2pG,UAAApvC,EAAA5+C,EAAA6e,EAAA90B,EAAA/I,EAAA,CAEA,CAEAquB,EAAAs0C,GAAA,SAAAxkD,EAAA8uF,UAAA,WACAnC,GACA,GAEAz8E,EAAAs0C,GAAA,4CACAqnC,GACAa,GAEA,IAEA,IAgBAqC,EAhBAC,EAAA,KAAAC,EAAA,KACA/+E,EAAAs0C,GAAA,YAAAxkD,EAAAkvF,WAAA,SAAAloG,GACAgoG,EAAAhoG,EAAAm5F,kBAAAn5F,EAAAy5F,kBACA,GAEAvwE,EAAAs0C,GAAA,UAAAxkD,EAAAmvF,SAAA,SAAAnoG,GACAioG,EAAAjoG,EAAAm5F,kBAAAn5F,EAAAy5F,kBACA,GAEAvwE,EAAAs0C,GAAA,gBAAAxkD,EAAAovF,QAAA,SAAA5R,GACA,MAAArhB,EAAAqhB,EAAA/2F,OACA01E,GAAA0vB,GACAa,GAEA,GAGAx8E,EAAAs0C,GAAA,kBAAAxkD,EAAAqvF,QAAA,WACAxD,GACAa,IAEA,IAAA4C,EAAAp/E,EAAA2vD,MAAA,aACA,OAAAyvB,EAAAvsG,OAAA,CAGA,IAAAwsG,EAAAD,EAAA,IAEAC,EAAAtP,YAAAsP,EAAAtC,SAAA,uCACAL,EAAA2C,EAJA,CAMA,GAEAr/E,EAAAs0C,GAAA,MAAAxkD,EAAAwvF,KAAA,SAAAprF,GACA,IAAA+3D,EAAA0vB,EACA,GAAA1vB,EAAA,CAGA,IAAAoyB,EAAApyB,EAAAn8D,KAAA,gCACAwuF,EAAAryB,EAAAn8D,KAAA,gCACAyvF,EAAAtzB,EAAAn8D,KAAA,iCACA0vF,EAAAnB,EAAAkB,EACAE,EAAAnB,EAAAiB,EAEAG,EAAAxrF,EAAA+7E,kBAAA/7E,EAAAq8E,mBACAoP,EAAAD,EAAA/uF,EACAivF,EAAAF,EAAAlwE,EACAwlE,EAAAxkG,IACAknF,GAAAsd,EAAA6K,6BAAA,KAEA7oG,KAAA6iB,IAAAilF,EAAAnuF,EAAAouF,EAAApuF,GAAA,GAAA3Z,KAAA6iB,IAAAilF,EAAAtvE,EAAAuvE,EAAAvvE,GAAA,GACAmwE,GAAAtB,EAAAkB,EAAA7nB,GACAioB,GAAAH,EAAAD,EAAA7nB,GACAkoB,GAAAtB,EAAAiB,EAAA7nB,GACAkoB,GAAAH,EAAAF,EAAA7nB,IACAsd,EAAA8K,WAAAjB,IACAA,EAAA7+E,EAAA+/E,SAAA,CAAAC,gBAAA,KAGAxE,EAAAyE,cAAAh0B,IACAuwB,IACAxH,EAAA8K,SACAjB,EAAAqB,GAAA,YACAvwB,MAAA1D,EACAz7E,QAAAwkG,IAIAwG,EAAA2E,SAAAl0B,EAAA+oB,IAGAwG,EAAA4E,aAAAn0B,KACAuwB,IACAxH,EAAA8K,SACAjB,EAAAqB,GAAA,UAAAvwB,MAAA1D,EAAAz7E,QAAAwkG,IAGAwG,EAAA6E,OAAAp0B,EAAA+oB,IAGA/oB,EAAAq0B,eACAr0B,EAAAs0B,cACAvgF,EAAAu0D,QAAA,qBAAAisB,mBAAA,GA7CA,CAgDA,GAEAxgF,EAAAs0C,GAAA,sBAAAxkD,EAAA2wF,UAAA3wF,EAAAqvF,SAEAn/E,EAAAs0C,GAAA,kBAAAxkD,EAAA4wF,UAAAnF,EAAAzrF,EAAAqvF,QAAAzD,EAAAc,IAEAx8E,EAAAs0C,GAAA,WAAAxkD,EAAA4wF,WAGA5wF,EAAA6wF,gBAAA,EACA7E,EAAAhsF,EACA,EACA8wF,OAAA,WAEA,IAAA9wF,EAAA8rF,IAEA9rF,EAAA6wF,gBAKA3gF,EAAA6gF,QAAA,iCAEA7gF,EAAA6sD,IAAA,mBAAA/8D,EAAAkvF,YACAnyB,IAAA,iBAAA/8D,EAAAmvF,UACApyB,IAAA,gBAAA/8D,EAAAovF,SACAryB,IAAA,aAAA/8D,EAAAwvF,MACAzyB,IAAA,aAAA/8D,EAAAgxF,MACAj0B,IAAA,kBAAA/8D,EAAA4wF,WACA7zB,IAAA,WAAA/8D,EAAA4wF,WACA7zB,IAAA,kBAAA/8D,EAAAqvF,SACAtyB,IAAA,cAAA/8D,EAAAixF,OACAl0B,IAAA,SAAA/8D,EAAA8uF,WACA/xB,IAAA,sBAAA/8D,EAAA2wF,YAhBAviF,QAAA8iF,IAAA,kCAiBA,EACAC,OAAA,WACA,IAAAnxF,EAAA8rF,IAEA9rF,EAAA6wF,eAKA3gF,EAAAs0C,GAAA,mBAAAxkD,EAAAkvF,YACA1qC,GAAA,iBAAAxkD,EAAAmvF,UACA3qC,GAAA,gBAAAxkD,EAAAovF,SACA5qC,GAAA,aAAAxkD,EAAAwvF,MACAhrC,GAAA,aAAAxkD,EAAAgxF,MACAxsC,GAAA,kBAAAxkD,EAAA4wF,WACApsC,GAAA,WAAAxkD,EAAA4wF,WACApsC,GAAA,kBAAAxkD,EAAAqvF,SACA7qC,GAAA,cAAAxkD,EAAAixF,OACAzsC,GAAA,SAAAxkD,EAAA8uF,WACAtqC,GAAA,sBAAAxkD,EAAA2wF,WAdAviF,QAAA8iF,IAAA,kCAeA,GAGA,GAAAjF,EAAA1oG,GACA,OAAA0oG,EAAA1oG,GAAAM,MAAAqsB,EAAA2b,YAAAjkC,MAAAU,UAAApF,MAAA9B,KAAA0C,UAAA,IACA,oBAAAP,IAAAA,EACA,OAAA0oG,EAAAxzC,KAAA50D,MAAAqsB,EAAA2b,YAAA/nC,WAEA,UAAA4Y,MAAA,qBAAAnZ,EAAA,qCAEA,C,8EC7VA,IAAA43D,EAAA,WAUA,IAAAi2C,EAAA,sBAGAC,EAAAnqG,KAAAwI,IACA4hG,EAAAl8E,KAAA1Q,IAgBAA,EAAA4sF,GAAA,WACA,WAAAl8E,MAAAkiD,SACA,EAiEA,SAAAnc,EAAA38C,EAAA0Z,EAAAx3B,GACA,IAAAsT,EACAu9F,EACA9sG,EACA+sG,EACAC,EACAC,EACAC,EACAC,EAAA,EACAC,GAAA,EACAC,GAAA,EAEA,sBAAAtzF,EACA,UAAApc,UAAAgvG,GAGA,GADAl5E,EAAAA,EAAA,KAAAA,GAAA,GACA,IAAAx3B,EAAA,CACA,IAAAqxG,GAAA,EACAD,GAAA,CACA,MAAAzvG,EAAA3B,KACAqxG,IAAArxG,EAAAqxG,QACAF,EAAA,YAAAnxG,GAAA2wG,GAAA3wG,EAAAmxG,SAAA,EAAA35E,GACA45E,EAAA,aAAApxG,IAAAA,EAAAoxG,SAAAA,GAGA,SAAAE,IACAN,GACA13C,aAAA03C,GAEAH,GACAv3C,aAAAu3C,GAEAK,EAAA,EACAL,EAAAG,EAAAC,OAAAluG,CACA,CAEA,SAAAu2E,EAAAi4B,EAAA1nG,GACAA,GACAyvD,aAAAzvD,GAEAgnG,EAAAG,EAAAC,OAAAluG,EACAwuG,IACAL,EAAAltF,IACAjgB,EAAA+Z,EAAA3a,MAAA4tG,EAAAz9F,GACA09F,GAAAH,IACAv9F,EAAAy9F,OAAAhuG,GAGA,CAEA,SAAAyuG,IACA,IAAAC,EAAAj6E,GAAAxT,IAAA8sF,GACAW,GAAA,GAAAA,EAAAj6E,EACA8hD,EAAA23B,EAAAJ,GAEAG,EAAAxsF,WAAAgtF,EAAAC,EAEA,CAEA,SAAAC,IACAp4B,EAAA83B,EAAAJ,EACA,CAEA,SAAAW,IAMA,GALAr+F,EAAAlQ,UACA0tG,EAAA9sF,IACA+sF,EAAA,KACAE,EAAAG,IAAAJ,IAAAK,IAEA,IAAAF,EACA,IAAAS,EAAAP,IAAAL,MACA,CACAH,GAAAQ,IACAH,EAAAJ,GAEA,IAAAW,EAAAN,GAAAL,EAAAI,GACAK,EAAAE,GAAA,GAAAA,EAAAN,EAEAI,GACAV,IACAA,EAAAv3C,aAAAu3C,IAEAK,EAAAJ,EACA/sG,EAAA+Z,EAAA3a,MAAA4tG,EAAAz9F,IAEAu9F,IACAA,EAAArsF,WAAAktF,EAAAD,GAEA,CAcA,OAbAF,GAAAP,EACAA,EAAA13C,aAAA03C,GAEAA,GAAAx5E,IAAA25E,IACAH,EAAAxsF,WAAAgtF,EAAAh6E,IAEAo6E,IACAL,GAAA,EACAxtG,EAAA+Z,EAAA3a,MAAA4tG,EAAAz9F,KAEAi+F,GAAAP,GAAAH,IACAv9F,EAAAy9F,OAAAhuG,GAEAgB,CACA,CAGA,OADA4tG,EAAAL,OAAAA,EACAK,CACA,CAsBA,SAAAhwG,EAAAQ,GAGA,IAAA0C,SAAA1C,EACA,QAAAA,IAAA,UAAA0C,GAAA,YAAAA,EACA,CAEA,OAAA41D,CAEA,CA3OA,GA6OAj5D,EAAAD,QAAAk5D,C,yBC7OA,IAAAswC,EAAA,WAUA,SAAAA,EAAA8G,EAAAr6E,EAAAs6E,GACA,IAAA/vF,EACAgwF,GAAA,EACA,kBACA,MAAA3xG,EAAA,KAAAkT,EAAAlQ,UACA4uG,EAAA,WACAjwF,EAAA,KACA8vF,EAAA1uG,MAAA/C,EAAAkT,GACAy+F,GAAA,CACA,EACAz4C,aAAAv3C,GACAA,EAAAyC,WAAAwtF,EAAAx6E,GACAu6E,IACAD,EAAA3uG,MAAA/C,EAAAkT,GACAy+F,GAAA,EAEA,CACA,CACA,OAAAhH,CACA,CA7BA,GA+BAvpG,EAAAD,QAAAwpG,C,yBC/BA,SAAAE,EAAAz7E,GACA,OACAyiF,UAAA,SAAAC,EAAA/yB,EAAAgzB,GACA,IAAAC,EAAAD,EAAAhzB,EAAA,KAAAkzB,gBAAAlzB,GACAmzB,EAAAF,EAAAG,IAAA,WAEAD,EAAAlI,WAAA,SAAArL,EAAA16F,GACA,OACA8b,EAAAmyF,EAAAjuG,GAAA8tB,SAAA,KAAA+/E,EAAA/xF,EACA6e,EAAAszE,EAAAjuG,GAAA8tB,SAAA,KAAA+/E,EAAAlzE,EAEA,IACA,QAAA36B,EAAA,EAAAA,EAAA+tG,EAAA/vG,OAAAgC,IAAA,CACA,IAAAo3E,EAAA22B,EAAA/tG,GACA+6E,EAAA3D,EAAA2D,WACA,KAAA6yB,UAAAC,EAAA9yB,GAAA,EACA,CACA,EACAizB,gBAAA,SAAAlzB,GAEA,IADA,IAAAqzB,EAAA,GACAnuG,EAAA,EAAAA,EAAA86E,EAAA98E,OAAAgC,IACAmuG,EAAArzB,EAAA96E,GAAAwF,OAAA,EAEA,IAAA4oG,EAAAtzB,EAAA9uD,QAAA,SAAA0uE,EAAA16F,GACA,kBAAA06F,IACAA,EAAA16F,GAGA,IAAA7D,EAAAu+F,EAAAv+F,SAAA,GACA,YAAAA,EAAA,CACA,GAAAgyG,EAAAhyG,EAAAqJ,MACA,SAEArJ,EAAAA,EAAAA,SAAA,EACA,CACA,QACA,IAEA,OAAAiyG,CACA,EACAC,UAAA,SAAAC,GACA,uBAAAA,EACAA,SACA,SAAAA,EAAA,CACA,IAAAnK,EAAAh5E,EAAAg5E,OAAAmK,GACAnK,GAAAA,EAAAjlF,KACAilF,EAAAjlF,KAEA,CACA,EACAypF,0BAAA,SAAA4F,GACA,IAAAzuB,EAAA30D,EAAA20D,MACA1G,EAAAjuD,EAAAiuD,OAEAt9D,EAAAyyF,EAAAzyF,EAAAs9D,EAAA0G,EAAAhkE,EACA6e,EAAA4zE,EAAA5zE,EAAAy+C,EAAA0G,EAAAnlD,EAEA,OACA7e,EAAAA,EACA6e,EAAAA,EAEA,EAEA,CAEAx9B,EAAAD,QAAA0pG,C,yBCjEA,IAAAP,EAAAD,EAAA,0BAGA,SAAAoI,EAAArjF,GACA,IAAAy7E,EAAAR,EAAA,qBAAAA,CAAAj7E,GACA,MAAO,CAEPsjF,0BAAA,EAMAC,uBAAA,SAAAt3B,EAAAu3B,EAAAL,GACA,GAAAl3B,EAAAyF,SAAA5hE,KAAA6sF,kBAAA,CAKA,IAAA+F,EAAA,CACA/xF,EAAAs7D,EAAAyF,SAAA/uD,SAAAhS,EAAAs7D,EAAAyF,SAAA5hE,KAAA,4BAAAa,EACA6e,EAAAy8C,EAAAyF,SAAA/uD,SAAA6M,EAAAy8C,EAAAyF,SAAA5hE,KAAA,4BAAA0f,GAGAy8C,EAAAw3B,WAAA,aACAx3B,EAAAy3B,YAAA,qCAEAz3B,EAAA40B,QAAA,+BACA,IAAA8C,EAAA13B,EAAAyF,SAAA5hE,KAAA6sF,kBACAgH,EAAAt2E,UAEA,IADA,IAAAu2E,EAAA5jF,EAAAu0D,QAAA,qBAAAqvB,WACA/uG,EAAA,EAAAA,EAAA8uG,EAAA9wG,OAAAgC,WACA+uG,EAAAD,EAAA9uG,GAAAwF,MAEA2lB,EAAAu0D,QAAA,qBAAAqvB,WAAAA,EACA,KAAAC,YAAA53B,GACAA,EAAAyF,SAAA5hE,KAAA6sF,kBAAA,KAEAlB,EAAAgH,UAAAC,EAAAz2B,EAAA2D,YACA3D,EAAAw3B,WAAA,4BAEAx3B,EAAA40B,QAAA,YACA50B,EAAA40B,QAAA,8BAGA2C,GACA,KAAAM,aAAAX,EAAAl3B,EA9BA,CAgCA,EAKA83B,yBAAA,SAAAp0B,GACAA,EAAA7/D,KAAA,eAEA,IADA,IAAAmzF,EAAAxH,EAAAoH,gBAAAlzB,GACA96E,EAAA,EAAAA,EAAAouG,EAAApwG,OAAAgC,IAAA,CACA,IAAAk0B,EAAAk6E,EAAApuG,GAGA,KAAAmvG,iBAAAj7E,EACA,CAEA,OAAA4mD,CACA,EAKAs0B,uBAAA,SAAAt0B,EAAAu0B,GACAv0B,EAAA7/D,KAAA,aAEA,IADA,IAAAmzF,EAAAxH,EAAAoH,gBAAAlzB,GACA96E,EAAA,EAAAA,EAAAouG,EAAApwG,OAAAgC,IAAA,CACA,IAAAk0B,EAAAk6E,EAAApuG,GACA,KAAAsvG,cAAAp7E,EAAAm7E,EACA,CACA,OAAAv0B,CACA,EAIAy0B,qBAAA,SAAAz0B,EAAAu0B,GAIA,IAAAG,OAHA9wG,IAAAo8E,IACAA,EAAA3vD,EAAA2vD,SAGA00B,EAAA5I,EAAAoH,gBAAAlzB,GAEA,IADA,IAAA20B,EAAA,GACAzvG,EAAA,EAAAA,EAAAwvG,EAAAxxG,OAAAgC,IAAA,CACA,IAAAk0B,EAAAs7E,EAAAxvG,GACA,KAAA0vG,iBAAAx7E,EAAAu7E,EAAAJ,EACA,CACA,OAAAI,CACA,EAIAR,aAAA,SAAAX,EAAAxzB,GAEA3vD,EAAA43C,OAAA,WACA5iD,YAAA,WACAymF,EAAAyH,UAAAC,GACAnjF,EAAAu0D,QAAA,qBAAAisB,oBACA7wB,EAAA60B,YACAxkF,EAAAu0D,QAAA,qBAAAisB,mBAAA,EAEA,KAEA,GACA,EAIAiE,eAAA,SAAA90B,EAAAn/E,GACA,IAAAk0G,EAAA,KAAAN,qBAAAz0B,EAAAn/E,EAAAm0G,SAOA,OALA,KAAAb,aAAAtzG,EAAA2yG,SAAAxzB,GAKA+0B,CACA,EAIAH,iBAAA,SAAAx7E,EAAAu7E,EAAAJ,GACA,MAAAn7E,EAAA2oD,SAAA5hE,KAAA6sF,oBACA2H,EAAAxvG,KAAAi0B,GACA,KAAA67E,WAAA77E,EAAAm7E,IAGA,IADA,IAAAt0B,EAAA7mD,EAAA6mD,WACA/6E,EAAA,EAAAA,EAAA+6E,EAAA/8E,OAAAgC,IAAA,CACA,IAAAo3E,EAAA2D,EAAA/6E,GACA,KAAA0vG,iBAAAt4B,EAAAq4B,EAAAJ,EACA,CACA,EAEAW,iBAAA,SAAAl1B,EAAAn/E,GAEA,OAAAm/E,EAAA98E,OAAA,CAEA,IAAAo5E,EAAA0D,EAAA,GACA,MAAA1D,EAAAyF,SAAA5hE,KAAA6sF,mBAEA,KAAAiI,WAAA34B,EAAAz7E,EAAAm0G,SAAA,EAAAn0G,EAAA2nG,QAAA3nG,EAAA2yG,SAAA3yG,EAAAs0G,kBAEA,MAGA,KAAAb,uBAAAt0B,EAAAn/E,EAAAm0G,SACA,KAAAb,aAAAtzG,EAAA2yG,SAAAxzB,GAMA,OAAAA,CACA,EAEAo1B,mBAAA,SAAAp1B,EAAAn/E,GAkBA,OAbAwvB,EAAAglF,aACA,KAAAjB,yBAAAp0B,GACA3vD,EAAAilF,WAEAt1B,EAAAkxB,QAAA,YACA,KAAAiD,aAAAtzG,EAAA2yG,SAAAxzB,GAGA3vD,EAAAvjB,QAAAorB,SAKA8nD,CACA,EAEAq0B,iBAAA,SAAAj7E,GAEA,IADA,IAAA6mD,EAAA7mD,EAAA6mD,WACA/6E,EAAA,EAAAA,EAAA+6E,EAAA/8E,OAAAgC,IAAA,CACA,IAAAo3E,EAAA2D,EAAA/6E,GACA,KAAAmvG,iBAAA/3B,EACA,CAEAljD,EAAAjZ,KAAA,aAAAiZ,EAAA6mD,WAAA/8E,OAAA,IACA,KAAAqyG,aAAAn8E,GACAA,EAAA06E,WAAA,YAEA,EAEAU,cAAA,SAAAp7E,EAAAm7E,GACAn7E,EAAAjZ,KAAA,iBAAAiZ,EAAA2oD,SAAA5hE,KAAA6sF,oBAEA,KAAAiI,WAAA77E,EAAAm7E,GACAn7E,EAAA06E,WAAA,WAIA,IADA,IAAA7zB,EAAA7mD,EAAA6mD,WACA/6E,EAAA,EAAAA,EAAA+6E,EAAA/8E,OAAAgC,IAAA,CACA,IAAAo3E,EAAA2D,EAAA/6E,GACA,KAAAsvG,cAAAl4B,EACA,CACA,EAEAk5B,uBAAA,SAAAlV,GACA,IAAAtb,EAAA30D,EAAA20D,MACA1G,EAAAjuD,EAAAiuD,OAEAt9D,GAAAs/E,EAAAt/E,EAAAgkE,EAAAhkE,GAAAs9D,EACAz+C,GAAAygE,EAAAzgE,EAAAmlD,EAAAnlD,GAAAy+C,EAEA,OACAt9D,EAAAA,EACA6e,EAAAA,EAEA,EAOAo1E,WAAA,SAAA34B,EAAAm5B,EAAA5B,EAAArL,EAAAgL,EAAA2B,GACA,IAAA7tG,EAAA,KAEAouG,EAAA,SAAAp5B,EAAAm5B,EAAA5B,EAAArL,EAAAgL,EAAA2B,GACAM,IAEAn5B,EAAAyF,SAAA5hE,KAAA,wBAAAm8D,EAAAyF,SAAA5hE,KAAA,wBAAApV,EACAuxE,EAAAyF,SAAA5hE,KAAA,yBAAAm8D,EAAAyF,SAAA5hE,KAAA,wBAAAne,EAKAsF,EAAAquG,2BAAAr5B,EAAAu3B,EAAAv3B,EAAAksB,EAAAgL,EAAA2B,IAKAtB,GAAA4B,GAAAjN,GACAlhG,EAAAssG,uBAAAt3B,EAAAu3B,EAAAL,EAEA,EAEA,SAAAl3B,EAAAyF,SAAA5hE,KAAA6sF,kBAAA,CACA,KAAA4I,iBAAAt5B,GACA,IAAAu5B,GAAA,EAIA,GAAAJ,GAAA5B,EAAA,CACA,IAAAiC,EAAA,KAAAN,uBAAA,CAAAx0F,EAAA,EAAA6e,EAAA,IACAk2E,EAAA,KAAAP,uBAAA,CAAAx0F,EAAAqP,EAAAqZ,QAAA7J,EAAAxP,EAAAsZ,WACA8iD,EAAA,GACA9R,EAAA,CACA3vC,GAAA8qE,EAAA90F,EACAmqB,GAAA4qE,EAAA/0F,EACAiqB,GAAA6qE,EAAAj2E,EACAuL,GAAA2qE,EAAAl2E,GAGAy4D,EAAA,CACAttD,GAAAsxC,EAAAyF,SAAA/uD,SAAAhS,EAAAs7D,EAAAyF,SAAA5hE,KAAA,wBAAApV,EAAA,EAAA0hF,EACAthD,GAAAmxC,EAAAyF,SAAA/uD,SAAAhS,EAAAs7D,EAAAyF,SAAA5hE,KAAA,wBAAApV,EAAA,EAAA0hF,EACAxhD,GAAAqxC,EAAAyF,SAAA/uD,SAAA6M,EAAAy8C,EAAAyF,SAAA5hE,KAAA,wBAAAne,EAAA,EAAAyqF,EACArhD,GAAAkxC,EAAAyF,SAAA/uD,SAAA6M,EAAAy8C,EAAAyF,SAAA5hE,KAAA,wBAAAne,EAAA,EAAAyqF,GAGAupB,EAAAzK,EAAAI,SAAArT,EAAA3d,GAGA,IAAA4wB,EAAAC,mBAAAwK,EAAAr7B,GAAA,CACA,IAAAs7B,EAAA5lF,EAAA6lF,eAAAF,EAAA,IACA1uG,EAAA,KACAuuG,EAAArN,EAEAA,EACAn4E,EAAAm4E,QAAA,CACAxjB,IAAAixB,EAAAjxB,IACA1G,KAAA23B,EAAA33B,KACAnE,SAAA,WACAu7B,EAAAp5B,EAAAm5B,EAAA5B,EAAArL,EAAAgL,EAAA2B,EACA,GACA,CACAnwC,SAAAmwC,GAAA,OAIA9kF,EAAAiuD,KAAA23B,EAAA33B,MACAjuD,EAAA20D,IAAAixB,EAAAjxB,KAEA,CACA,CAQA,OALA6wB,GACAH,EAAAp5B,EAAAm5B,EAAA5B,EAAArL,EAAAgL,EAAA2B,GAIA74B,CACA,CACA,EAEAi5B,aAAA,SAAAj5B,GACA,SAAAA,EAAAyF,SAAA5hE,KAAA6sF,kBAAA,CACA1wB,EAAAn8D,KAAA,4BACAa,EAAAs7D,EAAAtpD,WAAAhS,EACA6e,EAAAy8C,EAAAtpD,WAAA6M,IAGAy8C,EAAAn8D,KAAA,wBACApV,EAAAuxE,EAAA65B,aACAn0G,EAAAs6E,EAAA85B,gBAGA,IAAAn2B,EAAA3D,EAAA2D,WAgBA,OAdAA,EAAAo2B,WACAp2B,EAAAq2B,iBAAAD,WAEA/5B,EAAA40B,QAAA,iCAEA,KAAAqF,+BAAAj6B,GACA,KAAAk6B,eAAAl6B,EAAAA,GACAA,EAAAm6B,SAAA,qCAEAn6B,EAAA40B,QAAA,gCAEA50B,EAAAtpD,SAAAspD,EAAAn8D,KAAA,6BAGAm8D,CACA,CACA,EACAs5B,iBAAA,SAAAt5B,GACA,MAAAA,IACAA,EAAAyF,SAAA5hE,KAAA,yBAAAu2F,kBAAAp6B,GACAA,EAAAyF,SAAA5hE,KAAA,yBAAAw2F,kBAAAr6B,GACAA,EAAAyF,SAAA5hE,KAAA,wBAAAm8D,EAAA65B,aACA75B,EAAAyF,SAAA5hE,KAAA,yBAAAm8D,EAAA85B,cAEA,MAAA95B,EAAAj7E,SAAA,IACA,KAAAu0G,iBAAAt5B,EAAAj7E,SAAA,IAIA,EAKAs0G,2BAAA,SAAAr5B,EAAAu3B,EAAA+C,EAAApO,EAAAgL,EAAA2B,GACA,IAAA0B,EAAA,KAAAC,YAAAx6B,GAEAy6B,EAAA,KAAAL,kBAAAp6B,GACA06B,EAAA,KAAAL,kBAAAr6B,GAEA26B,EAAA5vG,KAAA6iB,KAAAoyD,EAAAyF,SAAA5hE,KAAA,wBAAAm8D,EAAA65B,cAAA,GACAe,EAAA7vG,KAAA6iB,KAAAoyD,EAAAyF,SAAA5hE,KAAA,wBAAAm8D,EAAA65B,cAAA,GACAgB,EAAA9vG,KAAA6iB,KAAAoyD,EAAAyF,SAAA5hE,KAAA,yBAAAm8D,EAAA85B,eAAA,GACAgB,EAAA/vG,KAAA6iB,KAAAoyD,EAAAyF,SAAA5hE,KAAA,yBAAAm8D,EAAA85B,eAAA,GAEAiB,EAAAhwG,KAAA6iB,IAAAoyD,EAAAyF,SAAA5hE,KAAA,oBAAA42F,GACAO,EAAAjwG,KAAA6iB,IAAAoyD,EAAAyF,SAAA5hE,KAAA,oBAAA62F,GAGA16B,EAAAyF,SAAA5hE,KAAA,oBAAA42F,GACAE,GAAAI,EACAH,GAAAG,IAIAJ,GAAAI,EACAH,GAAAG,GAIA/6B,EAAAyF,SAAA5hE,KAAA,oBAAA62F,GACAG,GAAAG,EACAF,GAAAE,IAIAH,GAAAG,EACAF,GAAAE,GAMA,IAHA,IAAAC,EAAA,GACAC,EAAA,GAEAtyG,EAAA,EAAAA,EAAA2xG,EAAA3zG,OAAAgC,IACAqyG,EAAApyG,KAAA,KAAAuxG,kBAAAG,EAAA3xG,KACAsyG,EAAAryG,KAAA,KAAAwxG,kBAAAE,EAAA3xG,KAGA,IAAAA,EAAA,EAAAA,EAAA2xG,EAAA3zG,OAAAgC,IAAA,CACA,IAAAuyG,EAAAZ,EAAA3xG,GAEAwyG,EAAAH,EAAAryG,GACAyyG,EAAAH,EAAAtyG,GAEA0yG,GAAAD,EAAAX,IAAAU,EAAAX,GAEAc,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EAIAH,EADAd,EAAAW,EACAT,EAIAC,EAIAY,EADAd,EAAAW,EACAR,EAIAC,EAGAtvB,SAAA8vB,KACAG,EAAA1wG,KAAAyI,IAAA+nG,EAAAC,EAAAzwG,KAAA6iB,IAAA0tF,KAGA,IAAAA,IACAI,EAAA3wG,KAAAyI,IAAAgoG,EAAAD,EAAAxwG,KAAA6iB,IAAA0tF,KAGAb,EAAAW,IACAK,IAAA,GAGAf,EAAAW,IACAK,IAAA,GAIA,KAAAC,oBAAAR,EAAAM,EAAAC,EAAApB,EAAA/C,EAAArL,EAAAgL,EAAA2B,EACA,CAYA,OATA,GAAA0B,EAAA3zG,QAAAo5E,EAAA47B,KAAAtB,IACA,KAAAhD,uBAAAgD,EAAA/C,EAAAL,GAGA,MAAAl3B,EAAAj7E,SAAA,IAEA,KAAAs0G,2BAAAr5B,EAAAj7E,SAAA,GAAAwyG,EAAA+C,EAAApO,EAAAgL,EAAA2B,GAGA74B,CACA,EACAw6B,YAAA,SAAAx6B,GACA,IAAAu6B,EAEA,SAAAv6B,EAAAj7E,SAAA,IACA,IAAAqzG,EAAArkF,EAAA2vD,MAAA,YAAA00B,UACAmC,EAAAnC,EAAAyD,WAAA77B,EACA,MACAu6B,EAAAv6B,EAAAu6B,SAAA,YAGA,OAAAA,CACA,EAKAoB,oBAAA,SAAA37B,EAAAy7B,EAAAC,EAAApB,EAAA/C,EAAArL,EAAAgL,EAAA2B,GACA,IAAAiD,EAAA/nF,EAAAixD,aACAhF,EAAA8jB,aACAgY,EAAA97B,EAAA2D,SAAA,aAEA,IAAA34E,EAAA,KAKA,MAAA8wG,EAAAl1G,OAAA,CACA,IAAAm1G,EAAA,CAAAr3F,EAAAs7D,EAAAyF,SAAA/uD,SAAAhS,EAAA+2F,EAAAl4E,EAAAy8C,EAAAyF,SAAA/uD,SAAA6M,EAAAm4E,GACAnE,GAAArL,GAIA,KAAAmL,4BACAr3B,EAAAksB,QAAA,CACAx1E,SAAAqlF,EACAl+B,SAAA,WACA7yE,EAAAqsG,4BACArsG,EAAAqsG,0BAAA,IAAAiD,EAAAxJ,SAAA,sCAMA9lG,EAAAssG,uBAAAgD,EAAA/C,EAAAL,EAEA,GACA,CACAxuC,SAAAmwC,GAAA,OAlBA74B,EAAAtpD,SAAAqlF,EAqBA,MAEA,QAAAnzG,EAAA,EAAAA,EAAAkzG,EAAAl1G,OAAAgC,IACA,KAAA+yG,oBAAAG,EAAAlzG,GAAA6yG,EAAAC,EAAApB,EAAA/C,EAAArL,EAAAgL,EAAA2B,EAGA,EACAuB,kBAAA,SAAAp6B,GACA,IAAAj7E,EAAAi7E,EAAAj7E,SAAA,GACA01G,EAAA,EAYA,OARAA,EADA,MAAA11G,EACAi7E,EAAAg8B,iBAAA,KAAAj3G,EAAAqoC,QAAA,EAKA4yC,EAAAtpD,SAAA,KAGA+jF,CACA,EACAJ,kBAAA,SAAAr6B,GACA,IAAAj7E,EAAAi7E,EAAAj7E,SAAA,GAEA21G,EAAA,EAYA,OARAA,EADA,MAAA31G,EACAi7E,EAAAg8B,iBAAA,KAAAj3G,EAAAsoC,SAAA,EAKA2yC,EAAAtpD,SAAA,KAGAgkF,CACA,EASAR,eAAA,SAAAl6B,EAAAljD,GAEA,IADA,IAAA6mD,EAAA3D,EAAA2D,WACA/6E,EAAA,EAAAA,EAAA+6E,EAAA/8E,OAAAgC,IAAA,CACA,IAAA+iG,EAAAhoB,EAAA/6E,GACA,KAAAsxG,eAAAvO,EAAA7uE,GACA,IAAA66E,EAAA5jF,EAAAu0D,QAAA,qBAAAqvB,WACAA,EAAAhM,EAAAv9F,MAAAu9F,EAAA5mG,SACAgvB,EAAAu0D,QAAA,qBAAAqvB,WAAAA,EACA,IAAAsE,EAAAtQ,EAAAnqB,SACA,MAAA1kD,EAAA2oD,SAAA5hE,KAAA6sF,kBACA5zE,EAAA2oD,SAAA5hE,KAAA6sF,kBAAAuL,EAGAn/E,EAAA2oD,SAAA5hE,KAAA6sF,kBAAA5zE,EAAA2oD,SAAA5hE,KAAA6sF,kBAAA/U,MAAAsgB,EAEA,CACA,EACAC,WAAA,SAAA32B,GACA,OAAAA,EAAAurB,SAAA,+BACA,EACAmJ,+BAAA,SAAAj6B,GACA,IAAAm8B,EAAAn8B,EAAAsnB,cACAviB,EAAAo3B,EAAAC,UAAAroF,EAAA2vD,QAAAozB,IAAAqF,EAAAxgB,MAAA3b,KAEAq8B,EAAA,GAEAF,EAAAG,MAAA,SAAAhZ,EAAA16F,GACA,kBAAA06F,IACAA,EAAA16F,GAEAyzG,EAAA/Y,EAAAl1F,OAAA,CACA,IAEA,QAAAxF,EAAA,EAAAA,EAAAm8E,EAAAn+E,OAAAgC,IAAA,CACA,IAAA28E,EAAAR,EAAAn8E,GACAU,EAAAi8E,EAAAj8E,SACAgB,EAAAi7E,EAAAj7E,SAEA,SAAA4xG,WAAA32B,GAAA,CACA,IAAAg3B,EAAA,CACAjzG,OAAAA,EACAgB,OAAAA,GAGAi7E,EAAA40B,SAAA,gCACA50B,EAAA1hE,KAAA,eAAA04F,EACA,CAEAh3B,EAAA1uD,KAAA,CACAvsB,OAAA+xG,EAAA/xG,EAAA8D,MAAA4xE,EAAA5xE,KAAA9D,EAAA8D,KACA9E,OAAA+yG,EAAA/yG,EAAA8E,MAAA4xE,EAAA5xE,KAAA9E,EAAA8E,MAEA,CACA,EACAouG,WAAA,SAAAx8B,GACA,IAAAh7D,EAAAg7D,EACA23B,EAAA5jF,EAAAu0D,QAAA,qBAAAqvB,WACA5yG,EAAA4yG,EAAA3yF,EAAA5W,MAEA,OAAA4W,EAAAy3F,SACAz3F,EAAAjgB,EACAA,EAAA4yG,EAAA5yG,EAAAqJ,MAGA,OAAA4W,CACA,EACA4yF,YAAA,SAAA53B,GAGA,IAFA,IAAA08B,EAAA18B,EAAAg6B,eAAA,iCAEApxG,EAAA,EAAAA,EAAA8zG,EAAA91G,OAAAgC,IAAA,CACA,IAAA28E,EAAAm3B,EAAA9zG,GACA+zG,EAAAp3B,EAAA1hE,KAAA,gBACA+4F,EAAAr3B,EAAA1hE,KAAA,UACA0hE,EAAA1hE,KAAA,UAGA0hE,EADAq3B,IAAA58B,EAAA5xE,KACAm3E,EAAA1uD,KAAA,CACAvtB,OAAA,KAAAkzG,WAAAG,EAAArzG,QAAA8E,OAGAm3E,EAAA1uD,KAAA,CACAvsB,OAAA,KAAAkyG,WAAAG,EAAAryG,QAAA8D,OAIAm3E,EAAA1hE,KAAA,YAAA84F,EAAArzG,OAAA8E,MAAAm3E,EAAA1hE,KAAA,YAAA84F,EAAAryG,OAAA8D,OACAm3E,EAAAkyB,YAAA,gCACAlyB,EAAAiyB,WAAA,gBAEA,CACA,EAIAqF,YAAA,SAAA78B,EAAAljD,GACA,IAAAvM,EAAAyvD,EACA,YAAAzvD,EAAA,CACA,GAAAA,GAAAuM,EACA,SAEAvM,EAAAA,EAAAxrB,SAAA,EACA,CACA,QACA,EAOA+3G,gCAAA,SAAA98B,EAAA0wB,GACA,IACA9nG,EADA+6E,EAAA3D,EAAAn8D,KAAA,yBAEA,IAAAjb,EAAA,EAAAA,EAAA+6E,EAAA/8E,OAAAgC,IACA+6E,EAAA/6E,GAAAib,KAAA,uBACA6sF,EAAAA,EAAA/U,MAAA,KAAAmhB,gCAAAn5B,EAAA/6E,GAAA8nG,KAEAA,EAAAA,EAAA/U,MAAAhY,EAAA/6E,IAEA,OAAA8nG,CACA,EAEAqM,mBAAA,SAAAh4B,EAAAxgF,GACAwgF,EAAAg1B,WACA,IAAAr2B,EAAAqB,EAAAi4B,iBACAC,EAAA,GAEA,GAAA14G,EAAA24G,+BACAn4B,EAAAv1E,SAAA,SAAA+1E,GACA,IAAA43B,EAAA,UAIA,QAHA71G,IAAA/C,EAAA64G,eACAD,EAAA54G,EAAA64G,wBAAA5yG,SAAAjG,EAAA64G,aAAAn4G,KAAAsgF,GAAAA,EAAA1hE,OAAAtf,EAAA64G,eAEAH,EAAA/xG,eAAAiyG,GACAF,EAAAE,GAAAp4B,MAAAk4B,EAAAE,GAAAp4B,MAAA5/E,IAAAogF,GAEA,gBAAA03B,EAAAE,GAAAE,eAAAJ,EAAAE,GAAA7zG,QAAAi8E,EAAAj8E,SAAA8E,MAAA6uG,EAAAE,GAAA7yG,QAAAi7E,EAAAj7E,SAAA8D,OACA6uG,EAAAE,GAAAE,cAAA,mBAEA,CACA,IAAAC,EAAAvpF,EAAAixD,aACAs4B,EAAAA,EAAAn4G,IAAAogF,GACA03B,EAAAE,GAAA,CAAAp4B,MAAAu4B,EAAAD,cAAA,eAAA/zG,OAAAi8E,EAAAj8E,SAAA8E,KAAA9D,OAAAi7E,EAAAj7E,SAAA8D,KACA,CACA,QACA,CACA6uG,EAAA,YAAAl4B,MAAAA,EAAAs4B,cAAA,eAAA/zG,OAAAy7E,EAAA,GAAAz7E,SAAA8E,KAAA9D,OAAAy6E,EAAA,GAAAz6E,SAAA8D,MACA,QAAAxF,EAAA,EAAAA,EAAAm8E,EAAAn+E,OAAAgC,IACA,mBAAAq0G,EAAA,WAAAI,gBAAAJ,EAAA,WAAA3zG,QAAAy7E,EAAAn8E,GAAAU,SAAA8E,MAAA6uG,EAAA,WAAA3yG,QAAAy6E,EAAAn8E,GAAA0B,SAAA8D,MAAA,CACA6uG,EAAA,WAAAI,cAAA,cACA,KACA,CAEA,CAEA,IAAA/0G,EAAA,CAAAy8E,MAAAhxD,EAAAixD,aAAAu4B,SAAAxpF,EAAAixD,cACAK,EAAA,GACA,UAAAm4B,KAAAP,EACA,KAAAA,EAAAO,GAAAz4B,MAAAn+E,OAAA,IAGAm+E,EAAA6vB,QAAA,qCACAtsG,EAAAi1G,SAAAj1G,EAAAi1G,SAAAp4G,IAAA83G,EAAAO,GAAAz4B,OACA,IAAA04B,EAAA,CACAA,MAAA,QACAA,KAAA,IACAA,EAAA55F,KAAAva,OAAA2zG,EAAAO,GAAAl0G,OACAm0G,EAAA55F,KAAAvZ,OAAA2yG,EAAAO,GAAAlzG,OACA,IAAAozG,EAAAh6B,EAAA,GAAAt1E,KACAuvG,EAAAD,EACAh6B,EAAA,KACAi6B,EAAAj6B,EAAA,GAAAt1E,MAEAqvG,EAAA55F,KAAAzV,GAAA,iBAAAsvG,EAAA,IAAAC,EAAA,IAAAH,EAAA,IAAAzyG,KAAA2I,MAAA3I,KAAAgJ,SAAAklB,KAAA1Q,OACAk1F,EAAA55F,KAAA+5F,eAAA7pF,EAAAixD,aAEAi4B,EAAAO,GAAAz4B,MAAAv1E,SAAA,SAAA+1E,GACAk4B,EAAA55F,KAAA+5F,eAAAH,EAAA55F,KAAA+5F,eAAAz4G,IAAAogF,EACA,IAEAk4B,EAAA55F,KAAA+5F,eAAA,KAAAC,qBAAAJ,EAAA55F,KAAA+5F,eAAAr5G,GAEA,IAAAu5G,EAAA,gBACAx2G,IAAA/C,EAAA64G,eACAU,EAAAv5G,EAAA64G,wBAAA5yG,SAAAuzG,cAAAx5G,EAAA64G,cAEAK,EAAA55F,KAAAi6F,GAAAN,EAEAC,EAAA55F,KAAA,iBAAAo5F,EAAAO,GAAAH,cACAI,EAAAO,QAAA,oCAEA34B,EAAAx8E,KAAA40G,GACA1pF,EAAAytD,OAAAy7B,EAAAO,GAAAz4B,OACAA,EAAA6vB,QAAA,mCAjCA,CAqCA,OADAtsG,EAAAy8E,MAAAhxD,EAAA5uB,IAAAkgF,GACA/8E,CACA,EAEAu1G,qBAAA,SAAAI,EAAA15G,GACA,GAAAA,EAAA25G,wBACA,OAAAD,EAEA,IAAAtsF,EAAAoC,EAAAixD,aACA,QAAAp8E,EAAA,EAAAA,EAAAq1G,EAAAr3G,OAAAgC,IAAA,CACA,IAAAu1G,EAAAF,EAAAr1G,GACAg1G,EAAAO,EAAAt6F,KAAA,kBAEA8N,EADAisF,GAAAA,EAAAh3G,OAAA,EACA+qB,EAAAxsB,IAAAy4G,GAEAjsF,EAAAxsB,IAAAg5G,EAEA,CACA,OAAAxsF,CACA,EAEAysF,WAAA,SAAA74B,GACAA,EAAAw0B,WACA,IAAAzxG,EAAA,CAAAy8E,MAAAhxD,EAAAixD,aAAAu4B,SAAAxpF,EAAAixD,cACAD,EAAAQ,EAAA1hE,KAAA,kBAQA,YAPAvc,IAAAy9E,GAAAA,EAAAn+E,OAAA,IACA2+E,EAAAqvB,QAAA,mCACAtsG,EAAAi1G,SAAAj1G,EAAAi1G,SAAAp4G,IAAAogF,GACAxxD,EAAAytD,OAAA+D,GACAj9E,EAAAy8E,MAAAhxD,EAAA5uB,IAAA4/E,GACAQ,EAAAqvB,QAAA,mCAEAtsG,CACA,EAGA+1G,wBAAA,SAAAt5B,GACA,IAAAje,EAAA,KAAAw3C,0BAAAv5B,GACA,UAAAje,EAAAlgE,QAGAkgE,CAEA,EAGAw3C,0BAAA,SAAAv5B,GACA,IAAAje,EAAA,GAWA,OAVAie,EAAAv1E,QAAA,SAAA+1E,GACA,KAAAg5B,gBAAAz3C,EAAAye,EAAAj8E,WACAw9D,EAAAj+D,KAAA08E,EAAAj8E,UAEA,KAAAi1G,gBAAAz3C,EAAAye,EAAAj7E,WACAw8D,EAAAj+D,KAAA08E,EAAAj7E,SAGA,EAAAqX,KAAA,OAEAmlD,CACA,EAGAy3C,gBAAA,SAAAC,EAAAC,GAEA,IADA,IAAAC,GAAA,EACA91G,EAAA,EAAAA,EAAA41G,EAAA53G,OAAAgC,IACA,GAAA41G,EAAA51G,GAAAwF,MAAAqwG,EAAArwG,KAAA,CACAswG,GAAA,EACA,KACA,CAEA,OAAAA,CACA,EAIA,CAEA34G,EAAAD,QAAAsxG,C,2ECj0BA,WACA,aAGA,IAAAp5B,EAAA,SAAA0M,GAEA,GAAAA,EAAA,CAIA,IAAAi0B,EAAA3P,EAAA,uBACAY,EAAAZ,EAAA,kBACA4P,EAAA,KA6XAl0B,EAAA,kCAAAqe,GACA,IAAAh1E,EAAA,KAEAxvB,EAAAgjG,EAAAxzE,EAAA,aACAmjF,SAAA,KACAwB,SAAA,EACAxM,SAAA,EACA2M,kBAAA,IACAltC,MAAA,aACAkoC,UAAA,EAEAgL,YAAA,EACA1N,0BAAA,WACAH,sBAAA,GACAE,0BAAA,EACAY,oBAAAxqG,EACA0qG,sBAAA1qG,EACAssG,6BAAA,EAEAwJ,aAAA,WACAF,gCAAA,EACAgB,yBAAA,EACA90B,OAAA,KAIA,WAAA2f,EAAA,CACAxkG,EAAAu6G,EAAAv6G,EAAAwkG,GAEA,IAAAqO,EAAApI,EAAA,4BAAAA,CAAAj7E,GACAw7E,EAAAwP,EAAAhrF,EAAAqjF,GACAwH,EAAA5P,EAAA,sBAAAA,CAAAj7E,EAAAw7E,GACAyP,EAAAjrF,EAAA,MAAAw7E,GAEAoP,EAAA5qF,EAAAw7E,GAEAK,EAAArrG,EAAAwvB,EAAAw7E,GAGAhrG,EAAAs6G,YACAjP,EAAA,SAAA77E,EAAAw7E,GAGAhrG,EAAAonE,OACApnE,EAAAonE,QAGAqzC,EAAAjrF,EAAA,UAAAxvB,GAEA,IAAAozG,EAAA,GACAqH,EAAAjrF,EAAA,aAAA4jF,EACA,CAEA,OAAApQ,EAAAxzE,EAAA,MACA,GAvbA,CAMA,SAAA+qF,EAAAv6G,EAAA06G,GACA,IAAAC,EAAA,GACA,QAAAz2G,KAAAlE,EACA26G,EAAAz2G,GAAAlE,EAAAkE,GAEA,QAAAA,KAAAw2G,EACAC,EAAAh0G,eAAAzC,KACAy2G,EAAAz2G,GAAAw2G,EAAAx2G,IACA,OAAAy2G,CACA,CAGA,SAAAC,EAAA56G,GACA,IAAA2nG,EAAA,oBAAA3nG,EAAA2nG,QAAA3nG,EAAA2nG,QAAAjnG,OAAAV,EAAA2nG,QACAwM,EAAA,oBAAAn0G,EAAAm0G,QAAAn0G,EAAAm0G,QAAAzzG,OAAAV,EAAAm0G,QAEAn0G,EAAA2nG,QAAAA,EACA3nG,EAAAm0G,QAAAA,CACA,CAGA,SAAAqG,EAAAhrF,EAAAqjF,GACA,IAAA7H,EAAA,GAGA,SAAA6P,EAAArW,GACA,IAAAsW,EAAA9X,EAAAxzE,EAAA,WACAg1E,EAAA8V,aAAAQ,EAAAR,WACAtP,EAAA+P,aAEAvW,EAAA8V,YAAAQ,EAAAR,YACAtP,EAAAgQ,YAEA,CAEA,SAAAC,EAAAz6B,GACA,IAAA06B,EAAA,GACA,QAAA72G,EAAA,EAAAA,EAAAm8E,EAAAn+E,OAAAgC,IAAA,CACA,MAAA82G,EAAA36B,EAAAn8E,GAAAU,SAAA8E,KACAuxG,EAAA56B,EAAAn8E,GAAA0B,SAAA8D,KACAgW,EAAA,GACAA,EAAAs7F,IAAA,EACAt7F,EAAAu7F,IAAA,EACAF,EAAA52G,KAAAub,EACA,CACA,QAAAxb,EAAA,EAAAA,EAAA62G,EAAA74G,OAAAgC,IACA,QAAAiH,EAAAjH,EAAA,EAAAiH,EAAA4vG,EAAA74G,OAAAiJ,IAAA,CACA,MAAA+vG,EAAAh4G,OAAA+E,KAAA8yG,EAAA72G,IACAi3G,EAAAj4G,OAAA+E,KAAA8yG,EAAA5vG,IACAowB,EAAA,IAAAygB,IAAAk/D,EAAA/5G,OAAAg6G,IACA,GAAA5/E,EAAAiuD,MAAA0xB,EAAAh5G,QAAAq5B,EAAAiuD,MAAA2xB,EAAAj5G,OACA,QAEA,CAEA,QACA,CA+SA,OA5SA2oG,EAAAuQ,WAAA,SAAA/W,GACAqW,EAAArW,GACAiW,EAAAjrF,EAAA,UAAAg1E,EACA,EAEAwG,EAAAuP,cAAA,SAAA/V,GACA,IAAAxkG,EAAAgjG,EAAAxzE,EAAA,WACAgsF,EAAAjB,EAAAv6G,EAAAwkG,GACAqW,EAAAW,GACAf,EAAAjrF,EAAA,UAAAgsF,EACA,EAGAxQ,EAAA3/D,UAAA,SAAAvmC,EAAA3C,GACA,IAAAqiG,EAAA,GACAA,EAAA1/F,GAAA3C,EAEA,IAAAnC,EAAAgjG,EAAAxzE,EAAA,WACAgsF,EAAAjB,EAAAv6G,EAAAwkG,GAEAqW,EAAAW,GACAf,EAAAjrF,EAAA,UAAAgsF,EACA,EAKAxQ,EAAA2E,SAAA,SAAA8L,EAAAjX,GACA,IAAAiE,EAAA,KAAAiT,iBAAAD,GACAz7G,EAAAgjG,EAAAxzE,EAAA,WACAmsF,EAAApB,EAAAv6G,EAAAwkG,GAGA,OAFAoW,EAAAe,GAEA9I,EAAA0B,mBAAA9L,EAAAkT,EACA,EAGA3Q,EAAA4Q,oBAAA,SAAAH,EAAAjX,GACA,IAAAiE,EAAA,KAAAiT,iBAAAD,GACAz7G,EAAAgjG,EAAAxzE,EAAA,WACAmsF,EAAApB,EAAAv6G,EAAAwkG,GAGA,OAFAoW,EAAAe,GAEA,KAAAhM,SAAAlH,EAAArR,MAAAqR,EAAA1F,eAAA4Y,EACA,EAGA3Q,EAAA6E,OAAA,SAAA4L,EAAAjX,GACA,IAAAiE,EAAA,KAAAoT,gBAAAJ,GACAz7G,EAAAgjG,EAAAxzE,EAAA,WACAmsF,EAAApB,EAAAv6G,EAAAwkG,GAGA,OAFAoW,EAAAe,GAEA9I,EAAAwB,iBAAA5L,EAAAkT,EACA,EAGA3Q,EAAA8Q,kBAAA,SAAAL,EAAAjX,GACA,IAAAiE,EAAA,KAAAoT,gBAAAJ,GACAz7G,EAAAgjG,EAAAxzE,EAAA,WACAmsF,EAAApB,EAAAv6G,EAAAwkG,GAGA,OAFAoW,EAAAe,GAEA9I,EAAAoB,eAAAxL,EAAAkT,EACA,EAMA3Q,EAAA+Q,YAAA,SAAAvX,GACA,IAAAxkG,EAAAgjG,EAAAxzE,EAAA,WACAmsF,EAAApB,EAAAv6G,EAAAwkG,GAGA,OAFAoW,EAAAe,GAEA,KAAAC,oBAAA,KAAAF,mBAAAC,EACA,EAGA3Q,EAAAgR,UAAA,SAAAxX,GACA,IAAAxkG,EAAAgjG,EAAAxzE,EAAA,WACAmsF,EAAApB,EAAAv6G,EAAAwkG,GAGA,OAFAoW,EAAAe,GAEA,KAAAG,kBAAA,KAAAD,kBAAAF,EACA,EAMA3Q,EAAA4E,aAAA,SAAAn0B,GACA,OAAAA,EAAA8wB,SAAA,oCACA,EAGAvB,EAAAyE,cAAA,SAAAh0B,GACA,YAAAm0B,aAAAn0B,IAAAA,EAAA8jB,UACA,EAGAyL,EAAA0Q,iBAAA,SAAAO,GACA,IAAAx1G,EAAA,KACA04E,EAAA88B,GAAAzsF,EAAA2vD,QACA,OAAAA,EAAA9uD,QAAA,SAAA0uE,EAAA16F,GAIA,MAHA,kBAAA06F,IACAA,EAAA16F,GAEAoC,EAAAgpG,cAAA1Q,EACA,GACA,EAGAiM,EAAA6Q,gBAAA,SAAAI,GACA,IAAAx1G,EAAA,KACA04E,EAAA88B,GAAAzsF,EAAA2vD,QACA,OAAAA,EAAA9uD,QAAA,SAAA0uE,EAAA16F,GAIA,MAHA,kBAAA06F,IACAA,EAAA16F,GAEAoC,EAAAmpG,aAAA7Q,EACA,GACA,EAGAiM,EAAAkR,qBAAA,SAAAzgC,GACA,OAAAA,EAAAn8D,KAAA,oBACA,EAOA0rF,EAAAuN,gCAAA,SAAA98B,GACA,IAAA0wB,EAAA38E,EAAAixD,aACA,OAAAoyB,EAAA0F,gCAAA98B,EAAA0wB,EACA,EAMAnB,EAAAmR,mCAAA,WACA,IAEA7wG,EAFA6gG,EAAA38E,EAAAixD,aACA27B,EAAA5sF,EAAA2vD,MAAA,sCAEA,IAAA7zE,EAAA,EAAAA,EAAA8wG,EAAA/5G,OAAAiJ,IACA6gG,EAAAA,EAAA/U,MAAA,KAAAmhB,gCAAA6D,EAAA9wG,KAEA,OAAA6gG,CACA,EAEAnB,EAAAqR,eAAA,SAAA5gC,GACAjsD,EAAA6gF,QAAA,gCACA,EAEArF,EAAAgQ,WAAA,WACA,IAAAh7G,EAAAgjG,EAAAxzE,EAAA,WACAxvB,EAAAs6G,aACAjP,EAAA,SAAA77E,EAAAw7E,GACAhrG,EAAAs6G,YAAA,EAEA,EAEAtP,EAAA+P,UAAA,WACA,IAAA/6G,EAAAgjG,EAAAxzE,EAAA,WACAxvB,EAAAs6G,aACAjP,EAAA,SAAA77E,EAAAw7E,GACAhrG,EAAAs6G,YAAA,EAEA,EAEAtP,EAAAsR,UAAA,SAAAC,GACA,QAAAx5G,IAAAysB,EAAAgtF,eAAAD,GAAA,IACA,IAAAnJ,EAAApQ,EAAAxzE,EAAA,cACA,OAAA4jF,EAAAmJ,EACA,CAEA,OAAA/sF,EAAAgtF,eAAAD,GAAA/7G,QAEA,EAEAwqG,EAAAyR,cAAA,SAAAj8B,EAAAgkB,GACA,IAAAzgG,EAAA,CAAAy8E,MAAAhxD,EAAAixD,aAAAu4B,SAAAxpF,EAAAixD,cACA,GAAAD,EAAAn+E,OAAA,SAAA0B,EACA,IAAAk3G,EAAAz6B,GAAA,OAAAz8E,EACA,IAAA/D,EAAAgjG,EAAAxzE,EAAA,WACAmsF,EAAApB,EAAAv6G,EAAAwkG,GACA,OAAAqO,EAAA2F,mBAAAh4B,EAAAm7B,EACA,EAEA3Q,EAAA0R,YAAA,SAAAl8B,GACA,IAAAz8E,EAAA,CAAAy8E,MAAAhxD,EAAAixD,aAAAu4B,SAAAxpF,EAAAixD,cACA,YAAA19E,IAAAy9E,GAGAA,EAAAv1E,SAAA,SAAA+1E,GACA,IAAA27B,EAAA9J,EAAAgH,WAAA74B,GACAj9E,EAAAy8E,MAAAz8E,EAAAy8E,MAAA5/E,IAAA+7G,EAAAn8B,OACAz8E,EAAAi1G,SAAAj1G,EAAAi1G,SAAAp4G,IAAA+7G,EAAA3D,SAEA,IARAj1G,CAgBA,EAEAinG,EAAA4R,0BAAA,SAAAz9B,EAAAqlB,GACA,IAAAxkG,EAAAgjG,EAAAxzE,EAAA,WACAmsF,EAAApB,EAAAv6G,EAAAwkG,GACA,SAAAqY,EAAAvlG,GACA,IAAAwlG,EAAA,GASA,OARAxlG,EACA9U,MAAA,EAAA8U,EAAAjV,OAAA,GACA4I,SAAA,SAAAoqE,EAAAj1D,GACA,IAAA28F,EAAAzlG,EAAA9U,MAAA4d,EAAA,EAAA9I,EAAAjV,QACA06G,EAAA9xG,SAAA,SAAA4a,GACAi3F,EAAAx4G,KAAA,CAAA+wE,EAAAxvD,GACA,GACA,IACAi3F,CACA,CACA,IAAAE,EAAAH,EAAA19B,GAEA69B,EAAA14G,QAAA66E,EAAAp1D,KAAA5J,GAAA,CAAAA,EAAAA,MACA,IAAApc,EAAA,CAAAy8E,MAAAhxD,EAAAixD,aAAAu4B,SAAAxpF,EAAAixD,cAgBA,OAfAu8B,EAAA/xG,QAAA,SAAAgyG,GACA,MAAA9D,EAAA8D,EAAA,GAAApzG,KACA,IAAA22E,EAAAy8B,EAAA,GAAAxH,eAAA,cAAA0D,EAAA,iBAAAA,EAAA,MAKA,GAHA8D,EAAA,GAAApzG,OAAAsvG,IACA34B,EAAAy8B,EAAA,GAAAxH,eAAA,cAAA0D,EAAA,gBAAAA,EAAA,OAEA34B,EAAAn+E,QAAA,GACA,IAAAs6G,EAAA9J,EAAA2F,mBAAAh4B,EAAAm7B,GACA53G,EAAAi1G,SAAAj1G,EAAAi1G,SAAAp4G,IAAA+7G,EAAA3D,UACAj1G,EAAAy8E,MAAAz8E,EAAAy8E,MAAA5/E,IAAA+7G,EAAAn8B,MACA,CAEA,EAAApjE,KAAA,OAEArZ,CAEA,EAEAinG,EAAAkS,wBAAA,SAAA/9B,GACA,IAAAg+B,EAAA3tF,EAAAixD,aACA,SAAAo8B,EAAAvlG,GACA,IAAAwlG,EAAA,GASA,OARAxlG,EACA9U,MAAA,EAAA8U,EAAAjV,OAAA,GACA4I,SAAA,SAAAoqE,EAAAj1D,GACA,IAAA28F,EAAAzlG,EAAA9U,MAAA4d,EAAA,EAAA9I,EAAAjV,QACA06G,EAAA9xG,SAAA,SAAA4a,GACAi3F,EAAAx4G,KAAA,CAAA+wE,EAAAxvD,GACA,GACA,IACAi3F,CACA,CACA,IAAAE,EAAAH,EAAA19B,GAYA,OAVA69B,EAAA14G,QAAA66E,EAAAp1D,KAAA5J,GAAA,CAAAA,EAAAA,MACA68F,EAAA/xG,QAAA,SAAAgyG,GACA,MAAA9D,EAAA8D,EAAA,GAAApzG,KACA,IAAA22E,EAAAy8B,EAAA,GAAAxH,eAAA,gDAAA0D,EAAA,iBAAAA,EAAA,MAEA8D,EAAA,GAAApzG,OAAAsvG,IACA34B,EAAAy8B,EAAA,GAAAxH,eAAA,cAAA0D,EAAA,gBAAAA,EAAA,OAEAgE,EAAAA,EAAA/lB,MAAA5W,EACA,EAAApjE,KAAA,OACA,KAAAs/F,YAAAS,EACA,EAEAnS,EAAAoS,iBAAA,SAAA5Y,GACA,YAAAoY,0BAAAptF,EAAAgxD,QAAAi4B,iBAAAjU,EACA,EAEAwG,EAAAqS,eAAA,WACA,IAAA78B,EAAAhxD,EAAAgxD,MAAA,sCACAz8E,EAAA,CAAAy8E,MAAAhxD,EAAAixD,aAAAu4B,SAAAxpF,EAAAixD,cACAk8B,EAAA,KAAAD,YAAAl8B,GAGA,OAFAz8E,EAAAi1G,SAAAj1G,EAAAi1G,SAAAp4G,IAAA+7G,EAAA3D,UACAj1G,EAAAy8E,MAAAz8E,EAAAy8E,MAAA5/E,IAAA+7G,EAAAn8B,OACAz8E,CACA,EAEAinG,EAAAsS,SAAA,SAAAC,GACAlD,EAAAiD,SAAAC,EACA,EAEAvS,EAAAwS,SAAA,SAAA13B,EAAA23B,GACApD,EAAAmD,SAAA13B,EAAA23B,EACA,EAEAzS,CACA,CAGA,SAAAhI,EAAA0a,EAAA54G,QACA/B,IAAA26G,EAAA35B,QAAA,sBACA25B,EAAA35B,QAAA,wBAGA,IAAAA,EAAA25B,EAAA35B,QAAA,qBACA45B,OAAA56G,IAAA+B,EAAAi/E,EAAAA,EAAAj/E,GACA,OAAA64G,CACA,CAGA,SAAAlD,EAAAiD,EAAA54G,EAAAuK,GACA2zF,EAAA0a,GAAA54G,GAAAuK,CACA,CA0DA,EAEA,qBAAA7N,GAAAA,EAAAD,UACAC,EAAAD,QAAAk4E,GAGA,qBAAAtB,GAAAA,EAAAylC,KACAzlC,EAAA,wCACA,OAAAsB,CACA,IAGA,qBAAA0M,WACA1M,EAAA0M,UAGC,EAhdD,E,yHCAA,SAAA03B,EAAAruF,EAAAw7E,GAQA,SAAA8S,EAAAC,EAAAC,EAAAC,EAAAC,GAEAH,EAAA73F,MAAAljB,GACA,UAAAA,EAAAu4C,MACA,GAEA,IAIA,IAAA4iE,EAAA3uF,EAAAixD,aACA,QAAAp8E,EAAA,EAAAA,EAAA05G,EAAA17G,OAAAgC,IAAA,CACA,MAAA+5G,EAAAL,EAAA15G,GACAkpB,EAAA6wF,EAAA9+F,KACAiO,EAAA/sB,SACA09G,EAAA3wF,EAAA1jB,IAAA0jB,EAAA/sB,QAEA,MAAAkO,EAAA,CAAAyR,EAAAi+F,EAAAjsF,SAAAhS,EAAA6e,EAAAo/E,EAAAjsF,SAAA6M,GACA14B,EAAAkpB,EAAA5uB,IAAAw9G,GAKA,GAJA93G,EAAAg5F,UACA0e,EAAAK,MAAA/3G,GAGAinB,EAAA6qF,aAAA,CAEA,IAAAjsG,EAAA6xG,EAAAM,IAAA/wF,EAAA6qF,aAAArzG,OAAAua,KAAAzV,IACA0jB,EAAA6qF,aAAArzG,OAAAua,KAAA9e,SACA09G,EAAA3wF,EAAA6qF,aAAArzG,OAAAua,KAAAzV,IAAA0jB,EAAA6qF,aAAArzG,OAAAua,KAAA9e,QAEA,IAAAwgG,EAAAgd,EAAAM,IAAA/wF,EAAA6qF,aAAAryG,OAAAuZ,KAAAzV,IACA0jB,EAAA6qF,aAAAryG,OAAAuZ,KAAA9e,SACA09G,EAAA3wF,EAAA6qF,aAAAryG,OAAAuZ,KAAAzV,IAAA0jB,EAAA6qF,aAAAryG,OAAAuZ,KAAA9e,QAEA8F,EAAAgZ,KAAA,gBAAAva,OAAAoH,EAAApG,OAAAi7F,GACA,CACAzzE,EAAA4+E,mBACA8R,EAAAI,MAAA/3G,GACAw3G,EAAAvwF,EAAA4+E,kBAAA6R,EAAAC,EAAAC,GACAK,EAAAj4G,IACAinB,EAAA8rF,iBACA/yG,EAAAgZ,KAAA,iBAAAw+F,EAAAvwF,EAAA8rF,eAAA2E,EAAAC,EAAAC,IAEA1uF,EAAAytD,OAAA32E,EAAAgZ,KAAA,oBAEAhZ,EAAA6rB,SAAAzjB,GACAyvG,EAAAE,MAAA/3G,EACA,CACA,OAAA63G,CACA,CAKA,SAAAI,EAAAj4G,GACAA,EAAAgZ,KAAA,0BACAhZ,EAAA4sG,YAAA,qCACA5sG,EAAAgZ,KAAA,iCACAhZ,EAAAgZ,KAAA,6BACAhZ,EAAAgZ,KAAA,qCACAhZ,EAAAgZ,KAAA,qCACAhZ,EAAAgZ,KAAA,qCACA,CAKA,SAAAk/F,EAAA14B,GACA,IAAA14D,EAAA,GACA,QAAA/oB,EAAA,EAAAA,EAAAyhF,EAAAzjF,OAAAgC,IAAA,CACA,MAAAm7E,EAAAsG,EAAAzhF,GACA,IAAAo6G,EAAA,KAaA,GAZAj/B,EAAA2sB,mBAAA3sB,EAAA65B,eAGA75B,EAAA2sB,mBACA3sB,EAAA2sB,kBAAAqS,EAAAE,EAAAl/B,EAAA2sB,oBACAsS,EAAAj/B,EAAAhwD,GAAA4uF,OACAK,EAAAn/F,KAAA6sF,kBAAA3sB,EAAA2sB,mBACA3sB,EAAA65B,iBACA75B,EAAA65B,eAAAmF,EAAAE,EAAAl/B,EAAA65B,iBACAoF,EAAAj/B,EAAAhwD,GAAA4uF,OACAK,EAAAn/F,KAAA+5F,eAAA75B,EAAA65B,gBATAoF,EAAAj/B,EAAAhwD,GAAA4uF,OAWA5+B,EAAA44B,aAAA,CACA,MAAAjsG,EAAAqzE,EAAA44B,aAAArzG,OAAAq5G,OACApd,EAAAxhB,EAAA44B,aAAAryG,OAAAq4G,OACAjyG,EAAAmT,KAAA6sF,oBACAhgG,EAAAmT,KAAA6sF,kBAAAqS,EAAAE,EAAAvyG,EAAAmT,KAAA6sF,qBAEAnL,EAAA1hF,KAAA6sF,oBACAnL,EAAA1hF,KAAA6sF,kBAAAqS,EAAAE,EAAA1d,EAAA1hF,KAAA6sF,qBAEAsS,EAAAn/F,KAAA84F,aAAA,CAAArzG,OAAAoH,EAAApG,OAAAi7F,EACA,CACA5zE,EAAA9oB,KAAAm6G,EACA,CACA,OAAArxF,CACA,CAMA,SAAAsxF,EAAAC,GACA,IAAAhqC,EAAA,GACA,QAAAtwE,EAAA,EAAAA,EAAAs6G,EAAAt8G,OAAAgC,IACAswE,EAAArwE,KAAA,CAAAkrB,GAAAmvF,EAAAt6G,GAAAg1G,eAAAsF,EAAAt6G,GAAAib,KAAA,kBAAA6sF,kBAAAwS,EAAAt6G,GAAAib,KAAA,qBAAA84F,aAAAuG,EAAAt6G,GAAAib,KAAA,kBAEA,OAAAq1D,CACA,CAMA,SAAAiqC,EAAArqC,EAAAsqC,GACA,MAAAv7B,EAAA,IAAAV,KAAA,CAAArO,GAAA,CAAA1vE,KAAA,eACAi6G,EAAAt7G,SAAAE,cAAA,KAEAo7G,EAAAC,SAAAF,EACAC,EAAAE,KAAAz4G,OAAA04G,IAAAC,gBAAA57B,GACAw7B,EAAAp/B,QAAAy/B,YACA,cAAAL,EAAAC,SAAAD,EAAAE,MAAA7zG,KAAA,KACA2zG,EAAAxrF,OACA,CAkBA,OAQAgqF,SAAA,SAAA8B,GACA,MAAAC,EAAAruG,KAAAic,MAAAmyF,GAEAE,EAAA,GACAtB,EAAAxuF,EAAAixD,aACAw9B,EAAAzuF,EAAAixD,aACAy9B,EAAA,GACA,UAAA99F,KAAAi/F,EAAAlgC,MAAA,CACAmgC,EAAAl/F,EAAAd,KAAAzV,IAAA,CAAAsW,EAAAC,EAAA+R,SAAAhS,EAAA6e,EAAA5e,EAAA+R,SAAA6M,GACA5e,EAAAd,KAAA9e,SACA09G,EAAA99F,EAAAd,KAAAzV,IAAAuW,EAAAd,KAAA9e,QAEA,MAAAi7E,EAAAjsD,EAAA5uB,IAAAwf,GACA49F,EAAAK,MAAA5iC,GACAA,EAAAn8D,KAAA,uBACAw+F,EAAAriC,EAAAn8D,KAAA,qBAAA0+F,EAAAC,EAAAC,GACAD,EAAAI,MAAA5iC,GACA8iC,EAAA9iC,GAEA,CACA,UAAAn1E,KAAA+4G,EAAA7+B,MAAA,CACA,MAAAQ,EAAAxxD,EAAA5uB,IAAA0F,GAKA,GAJA06E,EAAA1hE,KAAA,oBACA0hE,EAAA1hE,KAAA,iBAAAw+F,EAAAx3G,EAAAgZ,KAAA+5F,eAAA2E,EAAAC,EAAAC,IACA1uF,EAAAytD,OAAA+D,EAAA1hE,KAAA,oBAEA0hE,EAAA1hE,KAAA,iBACA,MAAA67F,EAAA70G,EAAAgZ,KAAA84F,aAAArzG,OAAAua,KAAAzV,GACA01G,EAAAj5G,EAAAgZ,KAAA84F,aAAAryG,OAAAuZ,KAAAzV,GACAvD,EAAAgZ,KAAA84F,aAAA,CAAArzG,OAAAi5G,EAAA3tF,OAAA,IAAA8qF,GAAAp1G,OAAAi4G,EAAA3tF,OAAA,IAAAkvF,GACA,CACA,CAEA,QAAA9jC,KAAAyiC,EAAA,CACA,MAAA1+B,EAAAw+B,EAAAM,IAAA7iC,GACA,IAAA+D,EAAAn9E,QACAm9E,EAAAltD,KAAA,CAAA9xB,OAAA09G,EAAAziC,IAEA,CAEAuvB,EAAA2E,SAAAsO,EAAA,CAAAtL,SAAA,KAAAwB,SAAA,EAAAxM,SAAA,IAGA,UAAAvnF,KAAAi/F,EAAAlgC,MAAA,CACA,MAAA1D,EAAAjsD,EAAA8uF,IAAAl+F,EAAAd,KAAAzV,IACA4xE,EAAA+jC,eACAhwF,EAAA8uF,IAAAl+F,EAAAd,KAAAzV,IAAAsoB,SAAAmtF,EAAAl/F,EAAAd,KAAAzV,IAEA,CACA2lB,EAAAw4E,KACA,EAQAwV,SAAA,SAAA13B,EAAA23B,GACA33B,IACAA,EAAAt2D,EAAAhK,KAEA,MAAA25D,EAAAu/B,EAAA54B,EAAA3G,SACAqB,EAAAk+B,EAAA54B,EAAAtF,SACA,GAAAA,EAAAn+E,OAAA88E,EAAA98E,OAAA,EACA,OAIA,MAAAi2E,EAAA,CAAA6G,MAAA,GAAAqB,MAAA,IACA,UAAAl6E,KAAAk6E,EAAA,CAIA,GAHAl6E,EAAA+yG,iBACA/yG,EAAA+yG,eAAAmF,EAAAE,EAAAp4G,EAAA+yG,kBAEA/yG,EAAA8xG,aAAA,CACA,MAAAjsG,EAAA7F,EAAA8xG,aAAArzG,OAAAq5G,OACApd,EAAA16F,EAAA8xG,aAAAryG,OAAAq4G,OACAjyG,EAAAmT,KAAA6sF,oBAEAhgG,EAAAmT,KAAA6sF,kBAAAqS,EAAAE,EAAAvyG,EAAAmT,KAAA6sF,qBAEAnL,EAAA1hF,KAAA6sF,oBACAnL,EAAA1hF,KAAA6sF,kBAAAqS,EAAAE,EAAA1d,EAAA1hF,KAAA6sF,qBAEA7lG,EAAA8xG,aAAA,CAAArzG,OAAAoH,EAAApG,OAAAi7F,EACA,CACA,MAAAyd,EAAAn4G,EAAAkpB,GAAA4uF,OACAK,EAAAn/F,KAAA+5F,eAAA/yG,EAAA+yG,eACAoF,EAAAn/F,KAAA84F,aAAA9xG,EAAA8xG,aACA9/B,EAAAkI,MAAAl8E,KAAAm6G,EACA,CACA,UAAAr+F,KAAA++D,EAAA,CACA/+D,EAAA+rF,oBACA/rF,EAAA+rF,kBAAAqS,EAAAE,EAAAt+F,EAAA+rF,qBAEA,MAAAsS,EAAAr+F,EAAAoP,GAAA4uF,OACAK,EAAAn/F,KAAA6sF,kBAAA/rF,EAAA+rF,kBACA7zB,EAAA6G,MAAA76E,KAAAm6G,EACA,CAEAhB,IACAA,EAAA,+BAEAmB,EAAA5tG,KAAAE,UAAAonE,GAAAmlC,EACA,EAEA,CAEAj8G,EAAAD,QAAAs8G,C,yBC1QAr8G,EAAAD,QAAA,SAAAiuB,EAAAw7E,GACA,SAAAx7E,EAAA+/E,SAAA,CAqEA,IAlEA,IAAAlB,EAAA7+E,EAAA+/E,SAAA,OAyCAkQ,EAAA,CACA9M,SAAA,KACAhL,SAAA,EACAwM,SAAA,GAoBAuL,EAAA,0FAEAr7G,EAAA,EAAAA,EAAAq7G,EAAAr9G,OAAAgC,IACA,GAAAA,EACAgqG,EAAAsR,OAAA,cAAAhnC,EAAA,eAAAA,EAAA,sBACA,GAAAt0E,EACAgqG,EAAAsR,OAAA,YAAAhnC,EAAA,aAAAA,EAAA,wBAEA01B,EAAAsR,OAAAD,EAAAr7G,GAAAs0E,EAAA+mC,EAAAr7G,IAAAs0E,EAAA+mC,GAAAr7G,EAAA,QAyIAgqG,EAAAsR,OAAA,gBAAAlD,EAAAC,GACArO,EAAAsR,OAAA,cAAAjD,EAAAD,GAEApO,EAAAsR,OAAA,4BAAA/C,EAAAM,GACA7O,EAAAsR,OAAA,0BAAAzC,EAAAN,GAEAvO,EAAAsR,OAAA,mBAAAvC,EAAAC,GACAhP,EAAAsR,OAAA,iBAAAtC,EAAAD,EA1NA,CAIA,SAAAwC,EAAAnE,GACA,wBAAAA,EAAAjsF,EAAAhK,EAAAi2F,GAAAA,CACA,CAEA,SAAAoE,IAIA,IAHA,IAAAzV,EAAA,GACAjrB,EAAA3vD,EAAA2vD,QAEA96E,EAAA,EAAAA,EAAA86E,EAAA98E,OAAAgC,IAAA,CACA,IAAA06F,EAAA5f,EAAA96E,GACA+lG,EAAArL,EAAAl1F,MAAA,CACAsW,EAAA4+E,EAAA5sE,SAAA,KACA6M,EAAA+/D,EAAA5sE,SAAA,KAEA,CAEA,OAAAi4E,CACA,CAEA,SAAA0V,EAAA1V,GACA,IAAA2V,EAAA,GAgBA,OAfAvwF,EAAA2vD,QAAAozB,IAAA,WAAAnI,WAAA,SAAArL,EAAA16F,GACA,kBAAA06F,IACAA,EAAA16F,GAEA07G,EAAAhhB,EAAAl1F,MAAA,CACAsW,EAAA4+E,EAAA5sE,SAAA,KACA6M,EAAA+/D,EAAA5sE,SAAA,MAEA,IAAAzjB,EAAA07F,EAAArL,EAAAl1F,MACA,OACAsW,EAAAzR,EAAAyR,EACA6e,EAAAtwB,EAAAswB,EAEA,IAEA+gF,CACA,CAQA,SAAApnC,EAAA76D,GACA,gBAAAxK,GACA,IAAAvP,EAAA,GACAo7E,EAAAygC,EAAAtsG,EAAA6rE,OAUA,OATA7rE,EAAA0sG,WACAj8G,EAAAk8G,QAAAJ,IACA97G,EAAAo7E,MAAArhE,EAAApG,QAAA,SAAAszF,EAAAltF,GAAAxK,EAAAtT,SAAAgrG,EAAAltF,GAAAqhE,EAAA7rE,EAAAtT,WAEA+D,EAAAk8G,QAAAJ,IACA97G,EAAAo7E,MAAArhE,EAAApG,QAAA,SAAAszF,EAAAltF,GAAA2hG,GAAAzU,EAAAltF,GAAA0R,EAAAixD,WAAAtB,GAAAsgC,GACAK,EAAAxsG,EAAA2sG,UAGAl8G,CACA,CACA,CAaA,SAAA04G,EAAAnpG,GACA,IAAAtT,EAAAsT,EAAAtT,QACAwgF,EAAAltE,EAAAktE,MACAz8E,EAAA,GAGA,GADAA,EAAA/D,QAAAA,EACAsT,EAAA0sG,UAAA,CACA,IAAAE,EAAAlV,EAAAyR,cAAAj8B,EAAAxgF,GACA+D,EAAAy8E,MAAA0/B,EAAA1/B,MACAz8E,EAAAi1G,SAAAkH,EAAAlH,SACAj1G,EAAAi8G,WAAA,CACA,MACAj8G,EAAAi1G,SAAAx4B,EACAz8E,EAAAy8E,MAAAltE,EAAA0lG,SACA1lG,EAAAktE,MAAAn+E,OAAA,GAAAiR,EAAA0lG,SAAA32G,OAAA,IACAmtB,EAAAytD,OAAA3pE,EAAAktE,OACAhxD,EAAA5uB,IAAA0S,EAAA0lG,WAMA,OAAAj1G,CACA,CACA,SAAA64G,EAAAtpG,GACA,IAAAtT,EAAAsT,EAAAtT,QACA+D,EAAA,GAEA,GADAA,EAAA/D,QAAAA,EACAsT,EAAA0sG,UAAA,CACA,IAAAG,EAAAnV,EAAA4R,0BAAAtpG,EAAA6rE,MAAAn/E,GACA+D,EAAAy8E,MAAA2/B,EAAA3/B,MACAz8E,EAAAi1G,SAAAmH,EAAAnH,SACAj1G,EAAAi8G,WAAA,CACA,MACAj8G,EAAAy8E,MAAAltE,EAAA0lG,SACAj1G,EAAAi1G,SAAA1lG,EAAAktE,MACAltE,EAAAktE,MAAAn+E,OAAA,GAAAiR,EAAA0lG,SAAA32G,OAAA,IACAmtB,EAAAytD,OAAA3pE,EAAAktE,OACAhxD,EAAA5uB,IAAA0S,EAAA0lG,WAKA,OAAAj1G,CAEA,CACA,SAAAq5G,EAAA9pG,GACA,IAAAtT,EAAAsT,EAAAtT,QACA+D,EAAA,GAEA,GADAA,EAAA/D,QAAAA,EACAsT,EAAA0sG,UAAA,CACA,IAAAG,EAAAnV,EAAAoS,iBAAAp9G,GACA+D,EAAAy8E,MAAA2/B,EAAA3/B,MACAz8E,EAAAi1G,SAAAmH,EAAAnH,SACAj1G,EAAAi8G,WAAA,CACA,MACAj8G,EAAAy8E,MAAAltE,EAAA0lG,SACAj1G,EAAAi1G,SAAA1lG,EAAAktE,MACAltE,EAAAktE,MAAAn+E,OAAA,GAAAiR,EAAA0lG,SAAA32G,OAAA,IACAmtB,EAAAytD,OAAA3pE,EAAAktE,OACAhxD,EAAA5uB,IAAA0S,EAAA0lG,WAKA,OAAAj1G,CACA,CACA,SAAA24G,EAAAppG,GACA,IAAAtT,EAAAsT,EAAAtT,QACA+D,EAAA,GAGA,GADAA,EAAA/D,QAAAA,EACAsT,EAAA0sG,UAAA,CACA,IAAAI,EAAApV,EAAA0R,YAAAppG,EAAAktE,OACAz8E,EAAAy8E,MAAA4/B,EAAA5/B,MACAz8E,EAAAi1G,SAAAoH,EAAApH,SACAj1G,EAAAi8G,WAAA,CAEA,MACAj8G,EAAAi1G,SAAA1lG,EAAAktE,MACAz8E,EAAAy8E,MAAAltE,EAAA0lG,SACA1lG,EAAAktE,MAAAn+E,OAAA,GAAAiR,EAAA0lG,SAAA32G,OAAA,IACAmtB,EAAAytD,OAAA3pE,EAAAktE,OACAhxD,EAAA5uB,IAAA0S,EAAA0lG,WAKA,OAAAj1G,CACA,CACA,SAAAm5G,EAAA5pG,GACA,IAAAtT,EAAAsT,EAAAtT,QACA+D,EAAA,GAEA,GADAA,EAAA/D,QAAAA,EACAsT,EAAA0sG,UAAA,CACA,IAAAG,EAAAnV,EAAAkS,wBAAA5pG,EAAA6rE,MAAAn/E,GACA+D,EAAAy8E,MAAA2/B,EAAA3/B,MACAz8E,EAAAi1G,SAAAmH,EAAAnH,SACAj1G,EAAAi8G,WAAA,CACA,MACAj8G,EAAAy8E,MAAAltE,EAAA0lG,SACAj1G,EAAAi1G,SAAA1lG,EAAAktE,MACAltE,EAAAktE,MAAAn+E,OAAA,GAAAiR,EAAA0lG,SAAA32G,OAAA,IACAmtB,EAAAytD,OAAA3pE,EAAAktE,OACAhxD,EAAA5uB,IAAA0S,EAAA0lG,WAKA,OAAAj1G,CACA,CACA,SAAAs5G,EAAA/pG,GACA,IAAAtT,EAAAsT,EAAAtT,QACA+D,EAAA,GAEA,GADAA,EAAA/D,QAAAA,EACAsT,EAAA0sG,UAAA,CACA,IAAAI,EAAApV,EAAAqS,eAAAr9G,GACA+D,EAAAy8E,MAAA4/B,EAAA5/B,MACAz8E,EAAAi1G,SAAAoH,EAAApH,SACAj1G,EAAAi8G,WAAA,CACA,MACAj8G,EAAAy8E,MAAAltE,EAAA0lG,SACAj1G,EAAAi1G,SAAA1lG,EAAAktE,MACAltE,EAAAktE,MAAAn+E,OAAA,GAAAiR,EAAA0lG,SAAA32G,OAAA,IACAmtB,EAAAytD,OAAA3pE,EAAAktE,OACAhxD,EAAA5uB,IAAA0S,EAAA0lG,WAKA,OAAAj1G,CACA,CAkBA,C,cTpOA,C,0CUsBa8kB,EAAA,OAAAA,EAAA,OAAAA,EAAA,MAAAA,EAAA,OAAAA,EAAA,OAAAA,EAAA,OAEb,IAAI4xC,EAAW5xC,EAAQ,OACnBw3F,EAAOx3F,EAAQ,OACftlB,EAAMslB,EAAQ,OACdhW,EAAMgW,EAAQ,OACdy3F,EAASz3F,EAAQ,OAErB,SAAS03F,EAAuBj6G,GAAK,OAAOA,GAAkB,kBAANA,GAAkB,YAAaA,EAAIA,EAAI,CAAE,QAAWA,EAAK,CAEjH,IAAIk6G,EAAiCD,EAAsB9lD,GACvDgmD,EAA6BF,EAAsBF,GACnDK,EAA4BH,EAAsBh9G,GAClDo9G,EAA4BJ,EAAsB1tG,GAClD+tG,EAA+BL,EAAsBD,GAEzD,SAASvqC,EAAQl2D,GAGf,OAAOk2D,EAAU,mBAAqBhrE,QAAU,iBAAmBA,OAAOmH,SAAW,SAAU2N,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqB9U,QAAU8U,EAAItS,cAAgBxC,QAAU8U,IAAQ9U,OAAOnD,UAAY,gBAAkBiY,CAC1H,EAAGk2D,EAAQl2D,EACb,CACA,SAASujF,EAAgByd,EAAUp5G,GACjC,KAAMo5G,aAAoBp5G,GACxB,MAAM,IAAI/F,UAAU,oCAExB,CACA,SAASo/G,EAAkB/6G,EAAQ2xD,GACjC,IAAK,IAAIrzD,EAAI,EAAGA,EAAIqzD,EAAMr1D,OAAQgC,IAAK,CACrC,IAAIiD,EAAaowD,EAAMrzD,GACvBiD,EAAWqG,WAAarG,EAAWqG,aAAc,EACjDrG,EAAWsG,cAAe,EACtB,UAAWtG,IAAYA,EAAWuG,UAAW,GACjDxK,OAAOC,eAAeyC,EAAQuB,EAAWpD,IAAKoD,EAChD,CACF,CACA,SAASy5G,EAAat5G,EAAau5G,EAAYC,GAM7C,OALID,GAAYF,EAAkBr5G,EAAYG,UAAWo5G,GACrDC,GAAaH,EAAkBr5G,EAAaw5G,GAChD59G,OAAOC,eAAemE,EAAa,YAAa,CAC9CoG,UAAU,IAELpG,CACT,CACA,SAASy5G,EAAgBrhG,EAAK3b,EAAK/B,GAWjC,OAVI+B,KAAO2b,EACTxc,OAAOC,eAAeuc,EAAK3b,EAAK,CAC9B/B,MAAOA,EACPwL,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZgS,EAAI3b,GAAO/B,EAEN0d,CACT,CACA,SAASshG,EAAexsC,EAAKtwE,GAC3B,OAAO+8G,EAAgBzsC,IAAQ0sC,EAAsB1sC,EAAKtwE,IAAMi9G,EAA4B3sC,EAAKtwE,IAAMk9G,GACzG,CACA,SAASH,EAAgBzsC,GACvB,GAAIztE,MAAMC,QAAQwtE,GAAM,OAAOA,CACjC,CACA,SAAS0sC,EAAsB1sC,EAAKtwE,GAClC,IAAI4L,EAAY,MAAP0kE,EAAc,KAAyB,qBAAX5pE,QAA0B4pE,EAAI5pE,OAAOmH,WAAayiE,EAAI,cAC3F,GAAU,MAAN1kE,EAAJ,CACA,IAGIunD,EAAIsF,EAHJ0kD,EAAO,GACPC,GAAK,EACLC,GAAK,EAET,IACE,IAAKzxG,EAAKA,EAAGvP,KAAKi0E,KAAQ8sC,GAAMjqD,EAAKvnD,EAAGtI,QAAQ+B,MAAO+3G,GAAK,EAE1D,GADAD,EAAKl9G,KAAKkzD,EAAGr1D,OACTkC,GAAKm9G,EAAKn/G,SAAWgC,EAAG,KAEhC,CAAE,MAAOk/E,GACPm+B,GAAK,EACL5kD,EAAKymB,CACP,CAAC,QACC,IACOk+B,GAAsB,MAAhBxxG,EAAG,WAAmBA,EAAG,WACtC,CAAC,QACC,GAAIyxG,EAAI,MAAM5kD,CAChB,CACF,CACA,OAAO0kD,CApBe,CAqBxB,CACA,SAASF,EAA4BhpC,EAAGqpC,GACtC,GAAKrpC,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAOspC,EAAkBtpC,EAAGqpC,GACvD,IAAIvhG,EAAI/c,OAAOuE,UAAUrF,SAAS7B,KAAK43E,GAAG91E,MAAM,GAAI,GAEpD,MADU,WAAN4d,GAAkBk4D,EAAE/qE,cAAa6S,EAAIk4D,EAAE/qE,YAAYzI,MAC7C,QAANsb,GAAqB,QAANA,EAAoBlZ,MAAMu3D,KAAK6Z,GACxC,cAANl4D,GAAqB,2CAA2C5E,KAAK4E,GAAWwhG,EAAkBtpC,EAAGqpC,QAAzG,CALc,CAMhB,CACA,SAASC,EAAkBjtC,EAAK98D,IACnB,MAAPA,GAAeA,EAAM88D,EAAItyE,UAAQwV,EAAM88D,EAAItyE,QAC/C,IAAK,IAAIgC,EAAI,EAAGw9G,EAAO,IAAI36G,MAAM2Q,GAAMxT,EAAIwT,EAAKxT,IAAKw9G,EAAKx9G,GAAKswE,EAAItwE,GACnE,OAAOw9G,CACT,CACA,SAASN,IACP,MAAM,IAAI7/G,UAAU,4IACtB,CAEA,IAAIogH,EAA4B,qBAAXv7G,OAAyB,KAAOA,OAEjDmV,EAAYomG,EAAUA,EAAQpmG,UAAY,KAC9ComG,GAAUA,EAAQt+G,SAClB,IAAIu+G,EAAYhsC,EAAQ,IACpBisC,EAAYjsC,EAAQ,CAAC,GACrBksC,EAAWlsC,GAAQ,WAAa,IAChCmsC,EAAuC,qBAAhB1mB,YAA8B,YAAczlB,EAAQylB,aAC3E2mB,EAAc,SAAqBtiG,GACrC,OAAOA,GAAOA,EAAIuiG,gBAAkBC,EAAKxiG,EAAIuiG,gBAAkBviG,EAAIuiG,iBAAmB,IACxF,EAEI1iG,EAAS,SAAgBG,GAC3B,OAAc,MAAPA,GAAek2D,EAAQl2D,IAAQkiG,CACxC,EACIM,EAAO,SAAYxiG,GACrB,OAAc,MAAPA,GAAek2D,EAAQl2D,KAASoiG,CACzC,EACIhsD,EAAQ,SAAep2C,GACzB,OAAQyiG,EAAoBziG,KAAS3Y,MAAMC,QAAUD,MAAMC,QAAQ0Y,GAAc,MAAPA,GAAeA,aAAe3Y,MAC1G,EACIq7G,EAAc,SAAqB1iG,GACrC,OAAc,MAAPA,GAAek2D,EAAQl2D,KAASmiG,IAAc/rD,EAAMp2C,IAAQA,EAAItS,cAAgBlK,MACzF,EACIyD,EAAS,SAAgB+Y,GAC3B,OAAc,MAAPA,GAAek2D,EAAQl2D,KAASmiG,CACzC,EACIQ,EAAW,SAAgB3iG,GAC7B,OAAc,MAAPA,GAAek2D,EAAQl2D,KAASk2D,EAAQ,KAAO3mE,MAAMyQ,EAC9D,EACI4E,EAAU,SAAiB5E,GAC7B,OAAO2iG,EAAS3iG,IAAQrZ,KAAK2I,MAAM0Q,KAASA,CAC9C,EACI4iG,EAAc,SAAqB5iG,GACrC,MAAI,cAAgBqiG,OAClB,EAEO,MAAQriG,GAAOA,aAAe27E,WAEzC,EACI8mB,EAAsB,SAA6BziG,GACrD,OAAOq6F,EAAQr6F,IAAQ4gE,EAAW5gE,EACpC,EACIq6F,EAAU,SAAiBr6F,GAC7B,MAA4B,eAArBsiG,EAAYtiG,IAAyBA,EAAIqhE,SAAS8xB,MAC3D,EACIvyB,EAAa,SAAoB5gE,GACnC,MAA4B,eAArBsiG,EAAYtiG,KAA0BA,EAAIqhE,SAAS8xB,MAC5D,EACIvwG,EAAO,SAAcod,GACvB,MAA4B,SAArBsiG,EAAYtiG,EACrB,EACI6iG,EAAa,SAAoB7iG,GACnC,MAA4B,eAArBsiG,EAAYtiG,EACrB,EACI6D,EAAQ,SAAe7D,GACzB,MAA4B,UAArBsiG,EAAYtiG,EACrB,EACI8iG,EAAc,SAAqB9iG,GACrC,YAAY9c,IAAR8c,GAA6B,OAARA,KAGN,KAARA,IAAcA,EAAIlE,MAAM,SAKrC,EACIinG,EAAa,SAAoB/iG,GACnC,MAA2B,qBAAhB27E,aAGF37E,aAAe27E,WAE1B,EACI7Z,EAAc,SAAqB9hE,GACrC,OAAO0iG,EAAY1iG,IAAQ2iG,EAAS3iG,EAAIsqB,KAAOq4E,EAAS3iG,EAAIyqB,KAAOk4E,EAAS3iG,EAAIuqB,KAAOo4E,EAAS3iG,EAAI0qB,GACtG,EACIs4E,EAAU,SAAiBhjG,GAC7B,OAAO/Y,EAAO+Y,IAAQwiG,EAAKxiG,EAAIw5D,KACjC,EACIypC,EAAK,WACP,OAAOpnG,GAAaA,EAAUH,UAAUI,MAAM,qBAChD,EAEIonG,EAAU,SAAiBlgH,EAAImgH,GAC5BA,IACHA,EAAQ,WACN,GAAyB,IAArB5/G,UAAUf,OACZ,OAAOe,UAAU,GACZ,GAAyB,IAArBA,UAAUf,OACnB,MAAO,YAGT,IADA,IAAIiR,EAAO,GACFjP,EAAI,EAAGA,EAAIjB,UAAUf,OAAQgC,IACpCiP,EAAKhP,KAAKlB,UAAUiB,IAEtB,OAAOiP,EAAKnI,KAAK,IACnB,GAEF,IAAI83G,EAAa,SAASA,IACxB,IAEI9tC,EAFA1uE,EAAOpG,KACPiT,EAAOlQ,UAEP8H,EAAI83G,EAAM7/G,MAAMsD,EAAM6M,GACtBsiB,EAAQqtF,EAAWrtF,MAIvB,OAHMu/C,EAAMv/C,EAAM1qB,MAChBiqE,EAAMv/C,EAAM1qB,GAAKrI,EAAGM,MAAMsD,EAAM6M,IAE3B6hE,CACT,EAEA,OADA8tC,EAAWrtF,MAAQ,CAAC,EACbqtF,CACT,EAEIC,EAAaH,GAAQ,SAAUxuC,GACjC,OAAOA,EAAIt4D,QAAQ,YAAY,SAAUoM,GACvC,MAAO,IAAMA,EAAE1I,aACjB,GACF,IACIwjG,EAAaJ,GAAQ,SAAUxuC,GACjC,OAAOA,EAAIt4D,QAAQ,UAAU,SAAUoM,GACrC,OAAOA,EAAE,GAAGoU,aACd,GACF,IACI2mF,GAAeL,GAAQ,SAAUM,EAAQ9uC,GAC3C,OAAO8uC,EAAS9uC,EAAI,GAAG93C,cAAgB83C,EAAIwO,UAAU,EACvD,IAAG,SAAUsgC,EAAQ9uC,GACnB,OAAO8uC,EAAS,IAAM9uC,CACxB,IACI+uC,GAAa,SAAoB/uC,GACnC,OAAIouC,EAAYpuC,GACPA,EAEFA,EAAIxlE,OAAO,GAAG0tB,cAAgB83C,EAAIwO,UAAU,EACrD,EAEIj+D,GAAS,sDACTy+F,GAAO,cAAgBz+F,GAAS,kBAAoBA,GAAS,kBAAoBA,GAAS,qBAAuBA,GAAS,SAC1H0+F,GAAiB,gBAAkB1+F,GAAS,oBAAsBA,GAAS,oBAAsBA,GAAS,uBAAyBA,GAAS,SAC5I2+F,GAAO,cAAgB3+F,GAAS,cAAgBA,GAAS,iBAAmBA,GAAS,oBAAsBA,GAAS,SACpH4+F,GAAiB,gBAAkB5+F,GAAS,gBAAkBA,GAAS,mBAAqBA,GAAS,sBAAwBA,GAAS,SACtI6+F,GAAO,oBACPC,GAAO,oBAEPC,GAAY,SAAmB7gH,EAAGC,GACpC,OAAID,EAAIC,GACE,EACCD,EAAIC,EACN,EAEA,CAEX,EACI6gH,GAAa,SAAoB9gH,EAAGC,GACtC,OAAQ,EAAI4gH,GAAU7gH,EAAGC,EAC3B,EAEI8gH,GAA0B,MAAjB1gH,OAAOwH,OAAiBxH,OAAOwH,OAAOuS,KAAK/Z,QAAU,SAAU29F,GAE1E,IADA,IAAI1tF,EAAOlQ,UACFiB,EAAI,EAAGA,EAAIiP,EAAKjR,OAAQgC,IAAK,CACpC,IAAIwb,EAAMvM,EAAKjP,GACf,GAAW,MAAPwb,EAIJ,IADA,IAAIzX,EAAO/E,OAAO+E,KAAKyX,GACdvU,EAAI,EAAGA,EAAIlD,EAAK/F,OAAQiJ,IAAK,CACpC,IAAIJ,EAAI9C,EAAKkD,GACb01F,EAAI91F,GAAK2U,EAAI3U,EACf,CACF,CACA,OAAO81F,CACT,EAGIgjB,GAAY,SAAmBztC,GACjC,IAAqB,IAAfA,EAAIl0E,QAA+B,IAAfk0E,EAAIl0E,SAA4B,MAAXk0E,EAAI,GAAnD,CAGA,IACInpD,EAAGnP,EAAGhb,EADNghH,EAA0B,IAAf1tC,EAAIl0E,OAEf6hH,EAAO,GAUX,OATID,GACF72F,EAAImY,SAASgxC,EAAI,GAAKA,EAAI,GAAI2tC,GAC9BjmG,EAAIsnB,SAASgxC,EAAI,GAAKA,EAAI,GAAI2tC,GAC9BjhH,EAAIsiC,SAASgxC,EAAI,GAAKA,EAAI,GAAI2tC,KAE9B92F,EAAImY,SAASgxC,EAAI,GAAKA,EAAI,GAAI2tC,GAC9BjmG,EAAIsnB,SAASgxC,EAAI,GAAKA,EAAI,GAAI2tC,GAC9BjhH,EAAIsiC,SAASgxC,EAAI,GAAKA,EAAI,GAAI2tC,IAEzB,CAAC92F,EAAGnP,EAAGhb,EAbd,CAcF,EAGIkhH,GAAY,SAAmBC,GACjC,IAAIjvC,EACAh0E,EAAGwN,EAAGE,EAAG7L,EAAGoqB,EAAGnP,EAAGhb,EACtB,SAASohH,EAAQnmE,EAAGomE,EAAG55F,GAGrB,OAFIA,EAAI,IAAGA,GAAK,GACZA,EAAI,IAAGA,GAAK,GACZA,EAAI,EAAI,EAAUwzB,EAAc,GAATomE,EAAIpmE,GAASxzB,EACpCA,EAAI,GAAc45F,EAClB55F,EAAI,EAAI,EAAUwzB,GAAKomE,EAAIpmE,IAAM,EAAI,EAAIxzB,GAAK,EAC3CwzB,CACT,CACA,IAAIrkC,EAAI,IAAIy8D,OAAO,IAAMmtC,GAAO,KAAKp9G,KAAK+9G,GAC1C,GAAIvqG,EAAG,CAWL,GATA1Y,EAAIokC,SAAS1rB,EAAE,IACX1Y,EAAI,EACNA,GAAK,MAAO,EAAIA,EAAI,KAAO,IAClBA,EAAI,MACbA,GAAQ,KAEVA,GAAK,IAELwN,EAAIwnC,WAAWt8B,EAAE,IACblL,EAAI,GAAKA,EAAI,IACf,OAKF,GAHAA,GAAQ,IAERE,EAAIsnC,WAAWt8B,EAAE,IACbhL,EAAI,GAAKA,EAAI,IACf,OAKF,GAHAA,GAAQ,IAER7L,EAAI6W,EAAE,QACI9W,IAANC,IACFA,EAAImzC,WAAWnzC,GACXA,EAAI,GAAKA,EAAI,GACf,OAMJ,GAAU,IAAN2L,EACFye,EAAInP,EAAIhb,EAAIuD,KAAKugF,MAAU,IAAJl4E,OAClB,CACL,IAAIy1G,EAAIz1G,EAAI,GAAMA,GAAK,EAAIF,GAAKE,EAAIF,EAAIE,EAAIF,EACxCuvC,EAAI,EAAIrvC,EAAIy1G,EAChBl3F,EAAI5mB,KAAKugF,MAAM,IAAMs9B,EAAQnmE,EAAGomE,EAAGnjH,EAAI,EAAI,IAC3C8c,EAAIzX,KAAKugF,MAAM,IAAMs9B,EAAQnmE,EAAGomE,EAAGnjH,IACnC8B,EAAIuD,KAAKugF,MAAM,IAAMs9B,EAAQnmE,EAAGomE,EAAGnjH,EAAI,EAAI,GAC7C,CACAg0E,EAAM,CAAC/nD,EAAGnP,EAAGhb,EAAGD,EAClB,CACA,OAAOmyE,CACT,EAGIovC,GAAY,SAAmBC,GACjC,IAAIrvC,EACAt7D,EAAI,IAAIy8D,OAAO,IAAMitC,GAAO,KAAKl9G,KAAKm+G,GAC1C,GAAI3qG,EAAG,CACLs7D,EAAM,GAEN,IADA,IAAIsvC,EAAQ,GACHpgH,EAAI,EAAGA,GAAK,EAAGA,IAAK,CAC3B,IAAIoe,EAAU5I,EAAExV,GAShB,GARoC,MAAhCoe,EAAQA,EAAQpgB,OAAS,KAC3BoiH,EAAMpgH,IAAK,GAEboe,EAAU0zB,WAAW1zB,GACjBgiG,EAAMpgH,KACRoe,EAAUA,EAAU,IAAM,KAGxBA,EAAU,GAAKA,EAAU,IAC3B,OAGF0yD,EAAI7wE,KAAKkC,KAAK2I,MAAMsT,GACtB,CACA,IAAIiiG,EAAkBD,EAAM,IAAMA,EAAM,IAAMA,EAAM,GAChDE,EAAYF,EAAM,IAAMA,EAAM,IAAMA,EAAM,GAC9C,GAAIC,IAAoBC,EACtB,OAGF,IAAIC,EAAQ/qG,EAAE,GACd,QAAc9W,IAAV6hH,EAAqB,CAEvB,GADAA,EAAQzuE,WAAWyuE,GACfA,EAAQ,GAAKA,EAAQ,EACvB,OAGFzvC,EAAI7wE,KAAKsgH,EACX,CACF,CACA,OAAOzvC,CACT,EACI0vC,GAAkB,SAAyB5zF,GAC7C,OAAOgK,GAAOhK,EAAMtR,cACtB,EACImlG,GAAc,SAAqB7zF,GACrC,OAAQglC,EAAMhlC,GAASA,EAAQ,OAAS4zF,GAAgB5zF,IAAU+yF,GAAU/yF,IAAUszF,GAAUtzF,IAAUkzF,GAAUlzF,EACtH,EACIgK,GAAS,CAEX8pF,YAAa,CAAC,EAAG,EAAG,EAAG,GAIvBC,UAAW,CAAC,IAAK,IAAK,KACtBC,aAAc,CAAC,IAAK,IAAK,KACzBC,KAAM,CAAC,EAAG,IAAK,KACfC,WAAY,CAAC,IAAK,IAAK,KACvBC,MAAO,CAAC,IAAK,IAAK,KAClBC,MAAO,CAAC,IAAK,IAAK,KAClBC,OAAQ,CAAC,IAAK,IAAK,KACnBC,MAAO,CAAC,EAAG,EAAG,GACdC,eAAgB,CAAC,IAAK,IAAK,KAC3BC,KAAM,CAAC,EAAG,EAAG,KACbC,WAAY,CAAC,IAAK,GAAI,KACtBC,MAAO,CAAC,IAAK,GAAI,IACjBC,UAAW,CAAC,IAAK,IAAK,KACtBC,UAAW,CAAC,GAAI,IAAK,KACrBC,WAAY,CAAC,IAAK,IAAK,GACvBC,UAAW,CAAC,IAAK,IAAK,IACtBC,MAAO,CAAC,IAAK,IAAK,IAClBC,eAAgB,CAAC,IAAK,IAAK,KAC3BC,SAAU,CAAC,IAAK,IAAK,KACrBC,QAAS,CAAC,IAAK,GAAI,IACnBC,KAAM,CAAC,EAAG,IAAK,KACfC,SAAU,CAAC,EAAG,EAAG,KACjBC,SAAU,CAAC,EAAG,IAAK,KACnBC,cAAe,CAAC,IAAK,IAAK,IAC1BC,SAAU,CAAC,IAAK,IAAK,KACrBC,UAAW,CAAC,EAAG,IAAK,GACpBC,SAAU,CAAC,IAAK,IAAK,KACrBC,UAAW,CAAC,IAAK,IAAK,KACtBC,YAAa,CAAC,IAAK,EAAG,KACtBC,eAAgB,CAAC,GAAI,IAAK,IAC1BC,WAAY,CAAC,IAAK,IAAK,GACvBC,WAAY,CAAC,IAAK,GAAI,KACtBC,QAAS,CAAC,IAAK,EAAG,GAClBC,WAAY,CAAC,IAAK,IAAK,KACvBC,aAAc,CAAC,IAAK,IAAK,KACzBC,cAAe,CAAC,GAAI,GAAI,KACxBC,cAAe,CAAC,GAAI,GAAI,IACxBC,cAAe,CAAC,GAAI,GAAI,IACxBC,cAAe,CAAC,EAAG,IAAK,KACxBC,WAAY,CAAC,IAAK,EAAG,KACrBC,SAAU,CAAC,IAAK,GAAI,KACpBC,YAAa,CAAC,EAAG,IAAK,KACtBC,QAAS,CAAC,IAAK,IAAK,KACpBC,QAAS,CAAC,IAAK,IAAK,KACpBC,WAAY,CAAC,GAAI,IAAK,KACtBC,UAAW,CAAC,IAAK,GAAI,IACrBC,YAAa,CAAC,IAAK,IAAK,KACxBC,YAAa,CAAC,GAAI,IAAK,IACvBC,QAAS,CAAC,IAAK,EAAG,KAClBC,UAAW,CAAC,IAAK,IAAK,KACtBC,WAAY,CAAC,IAAK,IAAK,KACvBC,KAAM,CAAC,IAAK,IAAK,GACjBC,UAAW,CAAC,IAAK,IAAK,IACtBC,KAAM,CAAC,IAAK,IAAK,KACjBC,KAAM,CAAC,IAAK,IAAK,KACjBC,MAAO,CAAC,EAAG,IAAK,GAChBC,YAAa,CAAC,IAAK,IAAK,IACxBC,SAAU,CAAC,IAAK,IAAK,KACrBC,QAAS,CAAC,IAAK,IAAK,KACpBC,UAAW,CAAC,IAAK,GAAI,IACrBC,OAAQ,CAAC,GAAI,EAAG,KAChBC,MAAO,CAAC,IAAK,IAAK,KAClBC,MAAO,CAAC,IAAK,IAAK,KAClBC,SAAU,CAAC,IAAK,IAAK,KACrBC,cAAe,CAAC,IAAK,IAAK,KAC1BC,UAAW,CAAC,IAAK,IAAK,GACtBC,aAAc,CAAC,IAAK,IAAK,KACzBC,UAAW,CAAC,IAAK,IAAK,KACtBC,WAAY,CAAC,IAAK,IAAK,KACvBC,UAAW,CAAC,IAAK,IAAK,KACtBC,qBAAsB,CAAC,IAAK,IAAK,KACjCC,UAAW,CAAC,IAAK,IAAK,KACtBC,WAAY,CAAC,IAAK,IAAK,KACvBC,UAAW,CAAC,IAAK,IAAK,KACtBC,UAAW,CAAC,IAAK,IAAK,KACtBC,YAAa,CAAC,IAAK,IAAK,KACxBC,cAAe,CAAC,GAAI,IAAK,KACzBC,aAAc,CAAC,IAAK,IAAK,KACzBC,eAAgB,CAAC,IAAK,IAAK,KAC3BC,eAAgB,CAAC,IAAK,IAAK,KAC3BC,eAAgB,CAAC,IAAK,IAAK,KAC3BC,YAAa,CAAC,IAAK,IAAK,KACxBC,KAAM,CAAC,EAAG,IAAK,GACfC,UAAW,CAAC,GAAI,IAAK,IACrBC,MAAO,CAAC,IAAK,IAAK,KAClBC,QAAS,CAAC,IAAK,EAAG,KAClBC,OAAQ,CAAC,IAAK,EAAG,GACjBC,iBAAkB,CAAC,IAAK,IAAK,KAC7BC,WAAY,CAAC,EAAG,EAAG,KACnBC,aAAc,CAAC,IAAK,GAAI,KACxBC,aAAc,CAAC,IAAK,IAAK,KACzBC,eAAgB,CAAC,GAAI,IAAK,KAC1BC,gBAAiB,CAAC,IAAK,IAAK,KAC5BC,kBAAmB,CAAC,EAAG,IAAK,KAC5BC,gBAAiB,CAAC,GAAI,IAAK,KAC3BC,gBAAiB,CAAC,IAAK,GAAI,KAC3BC,aAAc,CAAC,GAAI,GAAI,KACvBC,UAAW,CAAC,IAAK,IAAK,KACtBC,UAAW,CAAC,IAAK,IAAK,KACtBC,SAAU,CAAC,IAAK,IAAK,KACrBC,YAAa,CAAC,IAAK,IAAK,KACxBC,KAAM,CAAC,EAAG,EAAG,KACbC,QAAS,CAAC,IAAK,IAAK,KACpBC,MAAO,CAAC,IAAK,IAAK,GAClBC,UAAW,CAAC,IAAK,IAAK,IACtBC,OAAQ,CAAC,IAAK,IAAK,GACnBC,UAAW,CAAC,IAAK,GAAI,GACrBC,OAAQ,CAAC,IAAK,IAAK,KACnBC,cAAe,CAAC,IAAK,IAAK,KAC1BC,UAAW,CAAC,IAAK,IAAK,KACtBC,cAAe,CAAC,IAAK,IAAK,KAC1BC,cAAe,CAAC,IAAK,IAAK,KAC1BC,WAAY,CAAC,IAAK,IAAK,KACvBC,UAAW,CAAC,IAAK,IAAK,KACtBC,KAAM,CAAC,IAAK,IAAK,IACjBC,KAAM,CAAC,IAAK,IAAK,KACjBC,KAAM,CAAC,IAAK,IAAK,KACjBC,WAAY,CAAC,IAAK,IAAK,KACvBC,OAAQ,CAAC,IAAK,EAAG,KACjBC,IAAK,CAAC,IAAK,EAAG,GACdC,UAAW,CAAC,IAAK,IAAK,KACtBC,UAAW,CAAC,GAAI,IAAK,KACrBC,YAAa,CAAC,IAAK,GAAI,IACvBC,OAAQ,CAAC,IAAK,IAAK,KACnBC,WAAY,CAAC,IAAK,IAAK,IACvBC,SAAU,CAAC,GAAI,IAAK,IACpBC,SAAU,CAAC,IAAK,IAAK,KACrBC,OAAQ,CAAC,IAAK,GAAI,IAClBC,OAAQ,CAAC,IAAK,IAAK,KACnBC,QAAS,CAAC,IAAK,IAAK,KACpBC,UAAW,CAAC,IAAK,GAAI,KACrBC,UAAW,CAAC,IAAK,IAAK,KACtBC,UAAW,CAAC,IAAK,IAAK,KACtBC,KAAM,CAAC,IAAK,IAAK,KACjBC,YAAa,CAAC,EAAG,IAAK,KACtBC,UAAW,CAAC,GAAI,IAAK,KACrBC,IAAK,CAAC,IAAK,IAAK,KAChBC,KAAM,CAAC,EAAG,IAAK,KACfC,QAAS,CAAC,IAAK,IAAK,KACpBC,OAAQ,CAAC,IAAK,GAAI,IAClBC,UAAW,CAAC,GAAI,IAAK,KACrBC,OAAQ,CAAC,IAAK,IAAK,KACnBC,MAAO,CAAC,IAAK,IAAK,KAClBC,MAAO,CAAC,IAAK,IAAK,KAClBC,WAAY,CAAC,IAAK,IAAK,KACvBC,OAAQ,CAAC,IAAK,IAAK,GACnBC,YAAa,CAAC,IAAK,IAAK,KAItBC,GAAS,SAAgBnuH,GAI3B,IAHA,IAAI6f,EAAM7f,EAAQ+pB,IACd3hB,EAAOpI,EAAQoI,KACfyG,EAAIzG,EAAK/F,OACJgC,EAAI,EAAGA,EAAIwK,EAAGxK,IAAK,CAC1B,IAAIH,EAAMkE,EAAK/D,GACf,GAAIk+G,EAAYr+G,GACd,MAAM8X,MAAM,oCAEV3X,EAAI+D,EAAK/F,OAAS,GAEJ,MAAZwd,EAAI3b,KACN2b,EAAI3b,GAAO,CAAC,GAEd2b,EAAMA,EAAI3b,IAGV2b,EAAI3b,GAAOlE,EAAQmC,KAEvB,CACF,EAGIisH,GAAS,SAAgBpuH,GAI3B,IAHA,IAAI6f,EAAM7f,EAAQ+pB,IACd3hB,EAAOpI,EAAQoI,KACfyG,EAAIzG,EAAK/F,OACJgC,EAAI,EAAGA,EAAIwK,EAAGxK,IAAK,CAC1B,IAAIH,EAAMkE,EAAK/D,GACf,GAAIk+G,EAAYr+G,GACd,MAAM8X,MAAM,oCAGd,GADA6D,EAAMA,EAAI3b,GACC,MAAP2b,EACF,OAAOA,CAEX,CACA,OAAOA,CACT,EAEIwuG,GAAcvM,EAAUA,EAAQuM,YAAc,KAC9CC,GAAOD,IAAeA,GAAYrqG,IAAM,WAC1C,OAAOqqG,GAAYrqG,KACrB,EAAI,WACF,OAAO0Q,KAAK1Q,KACd,EACIi5E,GAAM,WACR,GAAI6kB,EAAS,CACX,GAAIA,EAAQnwF,sBACV,OAAO,SAAU9uB,GACfi/G,EAAQnwF,sBAAsB9uB,EAChC,EACK,GAAIi/G,EAAQ3kB,yBACjB,OAAO,SAAUt6F,GACfi/G,EAAQ3kB,yBAAyBt6F,EACnC,EACK,GAAIi/G,EAAQ5kB,4BACjB,OAAO,SAAUr6F,GACfi/G,EAAQ5kB,4BAA4Br6F,EACtC,EACK,GAAIi/G,EAAQ1kB,wBACjB,OAAO,SAAUv6F,GACfi/G,EAAQ1kB,wBAAwBv6F,EAClC,CAEJ,CACA,OAAO,SAAUA,GACXA,GACF2hB,YAAW,WACT3hB,EAAGyrH,KACL,GAAG,IAAO,GAEd,CACF,CA3BU,GA4BN38F,GAAwB,SAA+B9uB,GACzD,OAAOo6F,GAAIp6F,EACb,EACI0rH,GAAiBD,GAEjBE,GAAoB,KACpBxjH,GAAI,MACJyjH,GAAwB,KACxBC,GAAmB,SAA0Bx8G,GAK/C,IAJA,IAGIoW,EAHAqmG,EAAOvrH,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAKorH,GAE3EI,EAAOD,IAEF,CAEP,GADArmG,EAAQpW,EAASvK,OACb2gB,EAAM5e,KACR,MAEFklH,EAAOA,EAAO5jH,GAAIsd,EAAMnmB,MAAQ,CAClC,CACA,OAAOysH,CACT,EACIC,GAAU,SAAiBhjG,GAC7B,IAAI8iG,EAAOvrH,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAKorH,GAE/E,OAAOG,EAAO3jH,GAAI6gB,EAAM,CAC1B,EACIijG,GAAa,SAAoBjjG,GACnC,IAAI8iG,EAAOvrH,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAKqrH,GAE/E,OAAQE,GAAQ,GAAKA,EAAO9iG,EAAM,CACpC,EACIkjG,GAAgB,SAAuBC,EAAOC,GAChD,OAAe,QAARD,EAAmBC,CAC5B,EACIC,GAAqB,SAA4BC,GACnD,OAAmB,QAAZA,EAAO,GAAgBA,EAAO,EACvC,EACIC,GAAa,SAAoBC,EAASC,GAC5C,MAAO,CAACT,GAAQQ,EAAQ,GAAIC,EAAQ,IAAKR,GAAWO,EAAQ,GAAIC,EAAQ,IAC1E,EACIC,GAAgB,SAAuBC,EAAMb,GAC/C,IAAIrmG,EAAQ,CACVnmB,MAAO,EACPuH,MAAM,GAEJrF,EAAI,EACJhC,EAASmtH,EAAKntH,OACd6P,EAAW,CACbvK,KAAM,WAMJ,OALItD,EAAIhC,EACNimB,EAAMnmB,MAAQqtH,EAAKnrH,KAEnBikB,EAAM5e,MAAO,EAER4e,CACT,GAEF,OAAOomG,GAAiBx8G,EAAUy8G,EACpC,EACIc,GAAa,SAAoBl7C,EAAKo6C,GACxC,IAAIrmG,EAAQ,CACVnmB,MAAO,EACPuH,MAAM,GAEJrF,EAAI,EACJhC,EAASkyE,EAAIlyE,OACb6P,EAAW,CACbvK,KAAM,WAMJ,OALItD,EAAIhC,EACNimB,EAAMnmB,MAAQoyE,EAAIzlE,WAAWzK,KAE7BikB,EAAM5e,MAAO,EAER4e,CACT,GAEF,OAAOomG,GAAiBx8G,EAAUy8G,EACpC,EACIe,GAAc,WAChB,OAAOC,GAAiBvsH,UAC1B,EACIusH,GAAmB,SAA0BC,GAE/C,IADA,IAAIhB,EACKvqH,EAAI,EAAGA,EAAIurH,EAAKvtH,OAAQgC,IAAK,CACpC,IAAIkwE,EAAMq7C,EAAKvrH,GAEbuqH,EADQ,IAANvqH,EACKorH,GAAWl7C,GAEXk7C,GAAWl7C,EAAKq6C,EAE3B,CACA,OAAOA,CACT,EAGIiB,IAAkB,EAClBC,GAAgC,MAAhBpiG,QAAQoG,KACxBi8F,GAAkC,MAAjBriG,QAAQsiG,MAEzBC,GAAYrzD,OAAOjjD,kBAAoB,iBACvCu2G,GAAU,WACZ,OAAO,CACT,EACIC,GAAU,WACZ,OAAO,CACT,EACIC,GAAU,WACZ,OAAO,CACT,EACIC,GAAS,WAAiB,EAC1Bn5G,GAAQ,SAAeo5G,GACzB,MAAM,IAAIt0G,MAAMs0G,EAClB,EACIC,GAAW,SAAkB30B,GAC/B,QAAgB74F,IAAZ64F,EAGF,OAAOi0B,GAFPA,KAAoBj0B,CAIxB,EACI9nE,GAAO,SAAcw8F,GAElBC,OAGDT,GACFpiG,QAAQoG,KAAKw8F,IAEb5iG,QAAQ8iF,IAAI8f,GACRP,IACFriG,QAAQsiG,SAGd,EAEIr7F,GAAQ,SAAe9U,GACzB,OAAOkkG,GAAO,CAAC,EAAGlkG,EACpB,EAGImrE,GAAO,SAAcnrE,GACvB,OAAW,MAAPA,EACKA,EAELo2C,EAAMp2C,GACDA,EAAIrd,QACF+/G,EAAY1iG,GACd8U,GAAM9U,GAENA,CAEX,EACI2wG,GAAY,SAAmB77C,GACjC,OAAOA,EAAInyE,OACb,EACI64D,GAAO,SAAcr4D,EAAGC,GAC1B,IAEAA,EAAID,EAAI,GAERA,IAAM,GAENC,GAAS,GAAJD,EAAS,IAGT,GAAJA,EAGD,EAAIwD,KAAKgJ,UAAgB,GAAJxM,EAAS,GAAK,GACjC,GACAT,SAAS,IAAM,KAGjB,OAAOU,CACT,EACIwtH,GAAqB,CAAC,EACtBC,GAAoB,WACtB,OAAOD,EACT,EACIE,GAAa,SAAkBC,GACjC,IAAIxoH,EAAO/E,OAAO+E,KAAKwoH,GACvB,OAAO,SAAUpsB,GAEf,IADA,IAAIqsB,EAAa,CAAC,EACTxsH,EAAI,EAAGA,EAAI+D,EAAK/F,OAAQgC,IAAK,CACpC,IAAIH,EAAMkE,EAAK/D,GACXysH,EAAiB,MAARtsB,OAAezhG,EAAYyhG,EAAKtgG,GAC7C2sH,EAAW3sH,QAAkBnB,IAAX+tH,EAAuBF,EAAU1sH,GAAO4sH,CAC5D,CACA,OAAOD,CACT,CACF,EACIE,GAAkB,SAAyBp8C,EAAKoqB,EAAKiyB,GACvD,IAAK,IAAI3sH,EAAIswE,EAAItyE,OAAS,EAAGgC,GAAK,EAAGA,IACnC,GAAIswE,EAAItwE,KAAO06F,IACbpqB,EAAIr7C,OAAOj1B,EAAG,GACV2sH,GACF,KAIR,EACIC,GAAa,SAAoBt8C,GACnCA,EAAIr7C,OAAO,EAAGq7C,EAAItyE,OACpB,EACIiC,GAAO,SAAcqwE,EAAKu8C,GAC5B,IAAK,IAAI7sH,EAAI,EAAGA,EAAI6sH,EAAS7uH,OAAQgC,IAAK,CACxC,IAAIpC,EAAKivH,EAAS7sH,GAClBswE,EAAIrwE,KAAKrC,EACX,CACF,EACIkvH,GAAsB,SAA6BtxG,EAAKuxG,EAAU/N,GAKpE,OAJIA,IACF+N,EAAWhO,GAAaC,EAAQ+N,IAG3BvxG,EAAIuxG,EACb,EACIC,GAAsB,SAA6BxxG,EAAKuxG,EAAU/N,EAAQlhH,GACxEkhH,IACF+N,EAAWhO,GAAaC,EAAQ+N,IAGlCvxG,EAAIuxG,GAAYjvH,CAClB,EAGImvH,GAAyB,WAC3B,SAASA,IACPluB,EAAgB/iG,KAAMixH,GACtBjxH,KAAKkxH,KAAO,CAAC,CACf,CA6BA,OA5BAxQ,EAAauQ,EAAW,CAAC,CACvBptH,IAAK,MACL/B,MAAO,SAAa+B,EAAKmL,GAEvB,OADAhP,KAAKkxH,KAAKrtH,GAAOmL,EACVhP,IACT,GACC,CACD6D,IAAK,SACL/B,MAAO,SAAiB+B,GAEtB,OADA7D,KAAKkxH,KAAKrtH,QAAOnB,EACV1C,IACT,GACC,CACD6D,IAAK,QACL/B,MAAO,WACL9B,KAAKkxH,KAAO,CAAC,CACf,GACC,CACDrtH,IAAK,MACL/B,MAAO,SAAa+B,GAClB,YAA0BnB,IAAnB1C,KAAKkxH,KAAKrtH,EACnB,GACC,CACDA,IAAK,MACL/B,MAAO,SAAa+B,GAClB,OAAO7D,KAAKkxH,KAAKrtH,EACnB,KAEKotH,CACT,CAlC6B,GAmCzBE,GAAuB,qBAARprF,IAAsBA,IAAMkrF,GAI3CG,GAAQ,YACRC,GAAyB,WAC3B,SAASA,EAAUC,GAIjB,GAHAvuB,EAAgB/iG,KAAMqxH,GACtBrxH,KAAKkxH,KAAOluH,OAAOgE,OAAO,MAC1BhH,KAAKspF,KAAO,EACY,MAApBgoC,EAA0B,CAC5B,IAAIh9C,EAEFA,EADqC,MAAnCg9C,EAAiBvP,gBAA0BuP,EAAiBvP,mBAAqB/hH,KAAK+hH,iBAClFuP,EAAiBC,UAEjBD,EAER,IAAK,IAAIttH,EAAI,EAAGA,EAAIswE,EAAItyE,OAAQgC,IAC9BhE,KAAKO,IAAI+zE,EAAItwE,GAEjB,CACF,CAgDA,OA/CA08G,EAAa2Q,EAAW,CAAC,CACvBxtH,IAAK,iBACL/B,MAAO,WACL,MAAO,KACT,GACC,CACD+B,IAAK,MACL/B,MAAO,SAAakN,GAClB,IAAIipE,EAAIj4E,KAAKkxH,KACE,IAAXj5C,EAAEjpE,KACJipE,EAAEjpE,GAAO,EACThP,KAAKspF,OAET,GACC,CACDzlF,IAAK,SACL/B,MAAO,SAAiBkN,GACtB,IAAIipE,EAAIj4E,KAAKkxH,KACE,IAAXj5C,EAAEjpE,KACJipE,EAAEjpE,GAAO,EACThP,KAAKspF,OAET,GACC,CACDzlF,IAAK,QACL/B,MAAO,WACL9B,KAAKkxH,KAAOluH,OAAOgE,OAAO,KAC5B,GACC,CACDnD,IAAK,MACL/B,MAAO,SAAakN,GAClB,OAA0B,IAAnBhP,KAAKkxH,KAAKliH,EACnB,GACC,CACDnL,IAAK,UACL/B,MAAO,WACL,IAAI+xB,EAAQ7zB,KACZ,OAAOgD,OAAO+E,KAAK/H,KAAKkxH,MAAMlhG,QAAO,SAAUnsB,GAC7C,OAAOgwB,EAAMxvB,IAAIR,EACnB,GACF,GACC,CACDA,IAAK,UACL/B,MAAO,SAAiB+f,EAAU6uF,GAChC,OAAO1wG,KAAKuxH,UAAU3mH,QAAQiX,EAAU6uF,EAC1C,KAEK2gB,CACT,CAjE6B,GAkEzBG,IAAwB,qBAAR11E,IAAsB,YAAc45B,EAAQ55B,QAAUs1E,GAAQt1E,IAAMu1E,GAGpFI,GAAU,SAAiBtiG,EAAIvN,GACjC,IAAI4a,IAAUz5B,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GAC7E,QAAWL,IAAPysB,QAA+BzsB,IAAXkf,GAAyBxf,EAAK+sB,GAAtD,CAIA,IAAI+rB,EAAQt5B,EAAOs5B,MAYnB,GATa,MAATA,IAEAA,EADEt5B,EAAO3C,MAA8B,MAAtB2C,EAAO3C,KAAKva,QAAwC,MAAtBkd,EAAO3C,KAAKvZ,OACnD,QAEA,SAKE,UAAVw1C,GAA+B,UAAVA,EAAzB,CAMAl7C,KAAKgC,OAAS,EACdhC,KAAK,GAAKA,KAGV,IAAI0xH,EAAK1xH,KAAK6gF,SAAW,CACvB1xD,GAAIA,EACJwjF,QAAQ,EAER1zF,KAAM2C,EAAO3C,MAAQ,CAAC,EAEtB6S,SAAUlQ,EAAOkQ,UAAY,CAC3BhS,EAAG,EACH6e,EAAG,GAGLgzF,eAAWjvH,EAEXkvH,gBAAYlvH,EACZmvH,iBAAanvH,EACbovH,qBAAqB,EAErBC,UAAW,GAEX72E,MAAOA,EAEPtvC,MAAO,CAAC,EAERomH,OAAQ,CAAC,EAETC,UAAW,GAEXC,UAAW,CAAC,EAEZjzC,SAAS,EAETkzC,WAAUvwG,EAAOuwG,SAEjB1iB,gBAAkC/sG,IAAtBkf,EAAO6tF,cAAkC7tF,EAAO6tF,WAE5DrM,SAAQxhF,EAAOwhF,OAEfwB,SAAS,EAETpH,eAAgC96F,IAArBkf,EAAO47E,aAAiC57E,EAAO47E,UAE1D40B,cAA8B1vH,IAApBkf,EAAOwwG,SAAmC,UAAVl3E,IAAmCt5B,EAAOwwG,SAEpF94D,QAAQ,EAER8/C,QAAS,IAAIoY,GAEbxgG,UAAW,CAET5Q,QAAS,GACT2C,MAAO,IAET+9D,SAAU,CAAC,EAEX4C,QAAS9hE,EAAO8hE,SAAW,CAAC,EAE5BvD,MAAO,GAEPpB,SAAU,GAEV5+E,OAAQyhB,EAAOzhB,QAAUyhB,EAAOzhB,OAAO8+F,SAAWr9E,EAAOzhB,OAAS,KAElEkyH,eAAgB,CAAC,EAEjBC,eAAe,EAEfC,QAAS,KAETC,aAAc,CACZ1yG,EAAG,EACH6e,EAAG,GAGL8zF,WAAY,KAEZC,cAAe,KAEfC,YAAa,CAEXx5G,IAAK,KACLzU,OAAQ,KACRgB,OAAQ,KACRktH,KAAM,MAERC,YAAa,CAEXnuH,OAAQ,KACRgB,OAAQ,KACR,aAAc,KACd,aAAc,OAWlB,GARqB,MAAjBgsH,EAAG5/F,SAAShS,IACd4xG,EAAG5/F,SAAShS,EAAI,GAEG,MAAjB4xG,EAAG5/F,SAAS6M,IACd+yF,EAAG5/F,SAAS6M,EAAI,GAId/c,EAAOw9E,iBAAkB,CAC3B,IAAI0zB,EAAOlxG,EAAOw9E,iBACdtb,EAAM30D,EAAG20D,MACT1G,EAAOjuD,EAAGiuD,OACds0C,EAAG5/F,SAAW,CACZhS,GAAIgzG,EAAKhzG,EAAIgkE,EAAIhkE,GAAKs9D,EACtBz+C,GAAIm0F,EAAKn0F,EAAImlD,EAAInlD,GAAKy+C,EAE1B,CACA,IAAIg8B,EAAU,GACVxjD,EAAMh0C,EAAOw3F,SACfA,EAAUx3F,EAAOw3F,QACR/5F,EAAOuC,EAAOw3F,WACvBA,EAAUx3F,EAAOw3F,QAAQ91G,MAAM,QAEjC,IAAK,IAAIU,EAAI,EAAGwK,EAAI4qG,EAAQp3G,OAAQgC,EAAIwK,EAAGxK,IAAK,CAC9C,IAAI+uH,EAAM3Z,EAAQp1G,GACb+uH,GAAe,KAARA,GAGZrB,EAAGtY,QAAQ74G,IAAIwyH,EACjB,CACA/yH,KAAKgzH,gBACL,IAAIC,EAASrxG,EAAOhW,OAASgW,EAAO6qF,IAChCwmB,IACFx/F,GAAK,mIACLzzB,KAAK4L,MAAMqnH,UAEGvwH,IAAZ85B,GAAyBA,IAC3Bx8B,KAAKw8B,SAxIP,MAFE3lB,GAAM,iEAAmEqkC,EAAQ,IAdnF,MAFErkC,GAAM,2DA4JV,EAEIq8G,GAAe,SAAsBtxG,GAOvC,OANAA,EAAS,CACPuxG,IAAKvxG,EAAOuxG,MAAQvxG,EAAOwxG,IAC3BA,IAAKxxG,EAAOwxG,MAAQxxG,EAAOuxG,KAItB,SAAkB/gB,EAAO5vG,EAAI6wH,GAClC,IAAI1zH,EACAuiH,EAAY9P,KAAW6P,EAAoB7P,KAC7CzyG,EAAUyyG,EACVA,EAAQzyG,EAAQyyG,OAASzyG,EAAQu4B,KACjC11B,EAAK7C,EAAQ2zH,MACbD,EAAW1zH,EAAQ0zH,UAErBA,EAAgC,IAArBtwH,UAAUf,QAAiBggH,EAAKx/G,GAAW6wH,EAAL7wH,EACjDA,EAAKw/G,EAAKx/G,GAAMA,EAAK,WAAa,EAelC,IAdA,IAQI2lB,EARAgH,EAAKnvB,KAAK6gF,SAAS1xD,GACnBnH,EAAIoqF,EAAQ/yF,EAAO+yF,GAASpyG,KAAKgwB,OAAOoiF,GAASA,EACjDmhB,EAAI,GACJnb,EAAiB,GACjBob,EAAc,CAAC,EACfC,EAAW,CAAC,EACZj2G,EAAI,CAAC,EACLvS,EAAI,EAEJyoH,EAAgB1zH,KAAK2zH,UACvB70C,EAAQ40C,EAAc50C,MACtBqB,EAAQuzC,EAAcvzC,MAGfn8E,EAAI,EAAGA,EAAIgkB,EAAEhmB,OAAQgC,IAAK,CACjC,IAAI4vH,EAAK5rG,EAAEhkB,GACP6vH,EAAOD,EAAGpqH,KACVoqH,EAAG30B,WACLs0B,EAAErlG,QAAQ0lG,GACNhyG,EAAOuxG,MACT31G,EAAEq2G,IAAQ,EACVzb,EAAen0G,KAAK2vH,IAEtBH,EAASI,GAAQ,EAErB,CACA,IAAIxnG,EAAQ,WACV,IAAIrE,EAAIpG,EAAOuxG,IAAMI,EAAEn7F,QAAUm7F,EAAE96F,MAC/Bq7F,EAAM9rG,EAAExe,KACZ,GAAIoY,EAAOwxG,IAAK,CACd,GAAI51G,EAAEs2G,GACJ,MAAO,WAETt2G,EAAEs2G,IAAO,EACT1b,EAAen0G,KAAK+jB,EACtB,CACA,IAAI+rG,EAAQN,EAASK,GACjBE,EAAWR,EAAYM,GACvBhoH,EAAkB,MAAZkoH,EAAmBA,EAAStvH,SAAW,KAC7Ci8F,EAAkB,MAAZqzB,EAAmBA,EAAStuH,SAAW,KAC7CuuH,EAAuB,MAAZD,OAAmBtxH,EAAYslB,EAAEgvF,KAAKlrG,GAAO60F,EAAI,GAAK70F,EAAI,GACrEgpE,OAAM,EAEV,GADAA,EAAMtyE,EAAGwlB,EAAGgsG,EAAUC,EAAUhpH,IAAK8oH,IACzB,IAARj/C,EAEF,OADA3sD,EAAQH,EACD,QAET,IAAY,IAAR8sD,EACF,MAAO,QAKT,IAHA,IAAIo/C,EAAUlsG,EAAEotF,iBAAiBplF,QAAO,SAAU/pB,GAChD,QAASotH,GAAYptH,EAAEvB,SAASsyG,KAAKhvF,KAAOm4D,EAAM97E,IAAI4B,EACxD,IACSkuH,EAAM,EAAGA,EAAMD,EAAQlyH,OAAQmyH,IAAO,CAC7C,IAAIluH,EAAIiuH,EAAQC,GACZtqH,EAAI5D,EAAEmyG,iBAAiBpoF,QAAO,SAAUjQ,GAC1C,OAAQA,EAAEi3F,KAAKhvF,IAAM82D,EAAMz6E,IAAI0b,EACjC,IACIq0G,EAAMvqH,EAAEL,KACK,IAAbK,EAAE7H,QAAiBwb,EAAE42G,KACvBvqH,EAAIA,EAAE,GACN0pH,EAAEtvH,KAAK4F,GACH+X,EAAOuxG,MACT31G,EAAE42G,IAAO,EACThc,EAAen0G,KAAK4F,IAEtB2pH,EAAYY,GAAOnuH,EACnBwtH,EAASW,GAAOX,EAASK,GAAO,EAEpC,CACF,EACA,MAAoB,IAAbP,EAAEvxH,OAAc,CACrB,IAAIorB,EAAOf,IACX,GAAa,aAATe,GACS,UAATA,EAAkB,KACxB,CAEA,IADA,IAAIinG,EAAgBllG,EAAGixD,aACdxwE,EAAK,EAAGA,EAAKwoG,EAAep2G,OAAQ4N,IAAM,CACjD,IAAIwrE,EAAOg9B,EAAexoG,GACtB+wE,EAAO6yC,EAAYp4C,EAAK5xE,MAChB,MAARm3E,GACF0zC,EAAcpwH,KAAK08E,GAErB0zC,EAAcpwH,KAAKm3E,EACrB,CACA,MAAO,CACLle,KAAM/tC,EAAGixD,WAAWi0C,GACpBlsG,MAAOgH,EAAGixD,WAAWj4D,GAEzB,CACF,EAGImsG,GAAW,CACbC,mBAAoBrB,GAAa,CAC/BC,KAAK,IAEPqB,iBAAkBtB,GAAa,CAC7BE,KAAK,KAKTkB,GAASnB,IAAMmB,GAASC,mBACxBD,GAASlB,IAAMkB,GAASE,iBAExB,IAAIC,GAAmBnE,GAAW,CAChCp4F,KAAM,KACNspE,OAAQ,SAAgB7gB,GACtB,OAAO,CACT,EACA0yC,UAAU,IAERqB,GAAW,CACbC,SAAU,SAAkBh1H,GAC1B,IAAKuiH,EAAYviH,GAAU,CACzB,IAAIsT,EAAOlQ,UACXpD,EAAU,CACRu4B,KAAMjlB,EAAK,GACXuuF,OAAQvuF,EAAK,GACbogH,SAAUpgH,EAAK,GAEnB,CACA,IAAI2hH,EAAoBH,GAAiB90H,GACvCu4B,EAAO08F,EAAkB18F,KACzBspE,EAASozB,EAAkBpzB,OAC3B6xB,EAAWuB,EAAkBvB,SAC3BjrB,EAAOpoG,KACP60H,EAAWrzB,EACX98F,EAAS2a,EAAO6Y,GAAQl4B,KAAKgwB,OAAOkI,GAAM,GAAKA,EAAK,GACpD+xD,EAAO,CAAC,EACRxyD,EAAO,CAAC,EACRq9F,EAAY,CAAC,EACbpB,EAAgB1zH,KAAK2zH,UACvB70C,EAAQ40C,EAAc50C,MACtBqB,EAAQuzC,EAAcvzC,MACxBA,EAAM40C,WAAU,SAAUr2B,GACxB,OAAOA,EAAIs2B,QACb,IAWA,IAVA,IAAIC,EAAU,SAAiB75C,GAC7B,OAAO6O,EAAK7O,EAAK5xE,KACnB,EACI0rH,EAAU,SAAiB95C,EAAMluD,GACnC+8D,EAAK7O,EAAK5xE,MAAQ0jB,EAClBqmG,EAAE4B,WAAW/5C,EACf,EACIm4C,EAAI,IAAInT,EAAc,YAAW,SAAUz9G,EAAGC,GAChD,OAAOqyH,EAAQtyH,GAAKsyH,EAAQryH,EAC9B,IACSoB,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAAK,CACrC,IAAIo3E,EAAO0D,EAAM96E,GACjBimF,EAAK7O,EAAK5xE,MAAQ4xE,EAAK47B,KAAKtyG,GAAU,EAAImuF,IAC1C0gC,EAAEtvH,KAAKm3E,EACT,CACA,IAAIg6C,EAAc,SAAqBjrB,EAAGniF,GAIxC,IAHA,IAEIqtG,EAFAC,GAAOjC,EAAWlpB,EAAEorB,QAAQvtG,GAAKmiF,EAAEqN,UAAUxvF,IAAIwtG,UAAUr1C,GAC3Ds1C,EAAmB5iC,IAEdjjF,EAAK,EAAGA,EAAK0lH,EAAItzH,OAAQ4N,IAAM,CACtC,IAAI+wE,EAAO20C,EAAI1lH,GACX8lH,EAAUb,EAASl0C,IACnB+0C,EAAUD,IAAqBJ,KACjCI,EAAmBC,EACnBL,EAAe10C,EAEnB,CACA,MAAO,CACLA,KAAM00C,EACNprC,KAAMwrC,EAEV,EACA,MAAOlC,EAAEjqC,OAAS,EAAG,CACnB,IAAI6gB,EAAIopB,EAAE96F,MACNk9F,EAAeV,EAAQ9qB,GACvBt8F,EAAMs8F,EAAE3gG,KAEZ,GADAsrH,EAAUjnH,GAAO8nH,EACbA,IAAiB9iC,IAIrB,IADA,IAAI+iC,EAAYzrB,EAAE0rB,eAAeL,UAAU12C,GAClCq1C,EAAM,EAAGA,EAAMyB,EAAU5zH,OAAQmyH,IAAO,CAC/C,IAAInsG,EAAI4tG,EAAUzB,GACd2B,EAAM9tG,EAAExe,KACRusH,EAAQX,EAAYjrB,EAAGniF,GACvBguG,EAAML,EAAeI,EAAM9rC,KAC3B+rC,EAAMf,EAAQjtG,KAChBktG,EAAQltG,EAAGguG,GACXv+F,EAAKq+F,GAAO,CACV16C,KAAM+uB,EACNxpB,KAAMo1C,EAAMp1C,MAGlB,CACF,CAEA,MAAO,CACLs1C,WAAY,SAAoB76C,GAC9B,IAAI11E,EAAS2Z,EAAO+7D,GAAQ0D,EAAM9uD,OAAOorD,GAAM,GAAKA,EAAK,GACzD,OAAO05C,EAAUpvH,EAAO8D,KAC1B,EACA0sH,OAAQ,SAAgB96C,GACtB,IAAI11E,EAAS2Z,EAAO+7D,GAAQ0D,EAAM9uD,OAAOorD,GAAM,GAAKA,EAAK,GACrDl2E,EAAI,GACJilG,EAAIzkG,EACJmI,EAAMs8F,EAAE3gG,KACZ,GAAI9D,EAAO1D,OAAS,EAAG,CACrBkD,EAAEgpB,QAAQxoB,GACV,MAAO+xB,EAAK5pB,GAAM,CAChB,IAAIgwC,EAAIpmB,EAAK5pB,GACb3I,EAAEgpB,QAAQ2vB,EAAE8iC,MACZz7E,EAAEgpB,QAAQ2vB,EAAEu9B,MACZ+uB,EAAItsD,EAAEu9B,KACNvtE,EAAMs8F,EAAE3gG,IACV,CACF,CACA,OAAO4+F,EAAK+tB,MAAMjxH,EACpB,EAEJ,GAGEkxH,GAAW,CAGbC,QAAS,SAAiBxB,GACxBA,EAAWA,GAAY,SAAUl0C,GAC/B,OAAO,CACT,EAkBA,IAjBA,IAAI+yC,EAAgB1zH,KAAK2zH,UACvB70C,EAAQ40C,EAAc50C,MACtBqB,EAAQuzC,EAAcvzC,MACpBm2C,EAAWx3C,EAAM98E,OACjBu0H,EAAS,IAAI1vH,MAAMyvH,GACnB7rH,EAAIq0E,EAEJ03C,EAAe,SAAsB93B,GACvC,IAAK,IAAI16F,EAAI,EAAGA,EAAIuyH,EAAOv0H,OAAQgC,IAAK,CACtC,IAAIokG,EAAOmuB,EAAOvyH,GAClB,GAAIokG,EAAK/jG,IAAIq6F,GACX,OAAO16F,CAEX,CACF,EAGSA,EAAI,EAAGA,EAAIsyH,EAAUtyH,IAC5BuyH,EAAOvyH,GAAKhE,KAAKm2H,MAAMr3C,EAAM96E,IAK/B,IAHA,IAAIkB,EAAIi7E,EAAMt6D,MAAK,SAAUljB,EAAGC,GAC9B,OAAOiyH,EAASlyH,GAAKkyH,EAASjyH,EAChC,IACSgN,EAAK,EAAGA,EAAK1K,EAAElD,OAAQ4N,IAAM,CACpC,IAAI+wE,EAAOz7E,EAAE0K,GACTu6F,EAAIxpB,EAAKj8E,SAAS,GAClBsjB,EAAI24D,EAAKj7E,SAAS,GAClB+wH,EAAYD,EAAarsB,GACzBusB,EAAYF,EAAaxuG,GACzB2uG,EAAOJ,EAAOE,GACdG,EAAOL,EAAOG,GACdD,IAAcC,IAChBjsH,EAAEuzG,MAAMr9B,GAGRg2C,EAAK3Y,MAAM4Y,GACXL,EAAOt9F,OAAOy9F,EAAW,GAE7B,CACA,OAAOjsH,CACT,GAGEosH,GAAgBvG,GAAW,CAC7Bp4F,KAAM,KACN4+F,KAAM,KACNt1B,OAAQ,SAAgB7gB,GACtB,OAAO,CACT,EACAo2C,UAAW,SAAmBp2C,GAC5B,OAAO,CACT,EACA0yC,UAAU,IAER2D,GAAW,CAEbC,MAAO,SAAet3H,GACpB,IAAIwvB,EAAKnvB,KAAKmvB,KACV+nG,EAAiBL,GAAcl3H,GACjCu4B,EAAOg/F,EAAeh/F,KACtB4+F,EAAOI,EAAeJ,KACtBC,EAAYG,EAAeH,UAC3B1D,EAAW6D,EAAe7D,SAC1B7xB,EAAS01B,EAAe11B,OAC1BtpE,EAAO/I,EAAGixD,WAAWloD,GAAM,GAC3B4+F,EAAO3nG,EAAGixD,WAAW02C,GAAM,GAC3B,IAeIK,EAAMC,EAfNC,EAAMn/F,EAAK1uB,KACX8tH,EAAMR,EAAKttH,KACX+tH,EAAS,CAAC,EACVC,EAAS,CAAC,EACVC,EAAe,CAAC,EAChBC,EAAU,IAAItX,EAAc,YAAW,SAAUz9G,EAAGC,GACtD,OAAO40H,EAAO70H,EAAE6G,MAAQguH,EAAO50H,EAAE4G,KACnC,IACImuH,EAAa,IAAInG,GACjBoG,EAAW,CAAC,EACZC,EAAe,CAAC,EAChBC,EAAe,SAAsBp5B,EAAKl1F,GAC5CkuH,EAAQzzH,KAAKy6F,GACbi5B,EAAWp3H,IAAIiJ,EACjB,EAEIuuH,EAAiB,WACnBZ,EAAOO,EAAQj/F,MACf2+F,EAASD,EAAK3tH,KACdmuH,EAAW,UAAUP,EACvB,EACIY,EAAc,SAAqBxuH,GACrC,OAAOmuH,EAAWtzH,IAAImF,EACxB,EACAsuH,EAAa5/F,EAAMm/F,GACnBE,EAAOF,GAAO,EACdG,EAAOH,GAAON,EAAU7+F,GAGxB,IAAI+/F,EAAQ,EAGZ,MAAOP,EAAQpuC,OAAS,EAAG,CAKzB,GAJAyuC,IACAE,IAGIb,IAAWE,EAAK,CAKlB,IAJA,IAAIp6D,EAAO,GACPg7D,EAAWpB,EACXqB,EAAab,EACbc,EAAWP,EAAaM,KACnB,CAMP,GALAj7D,EAAKhvC,QAAQgqG,GACG,MAAZE,GACFl7D,EAAKhvC,QAAQkqG,GAEfF,EAAWN,EAASO,GACJ,MAAZD,EACF,MAEFC,EAAaD,EAAS1uH,KACtB4uH,EAAWP,EAAaM,EAC1B,CACA,MAAO,CACLhwG,OAAO,EACP6E,SAAUuqG,EAAOH,GACjBl6D,KAAMl9D,KAAKm2H,MAAMj5D,GACjB+6D,MAAOA,EAEX,CAGAR,EAAaL,IAAU,EAKvB,IADA,IAAIlD,EAAUiD,EAAKt2C,SAASV,MACnBn8E,EAAI,EAAGA,EAAIkwH,EAAQlyH,OAAQgC,IAAK,CACvC,IAAIiC,EAAIiuH,EAAQlwH,GAGhB,GAAKhE,KAAKq4H,iBAAiBpyH,EAAEuD,SAKzB6pH,GAAYptH,EAAEgZ,KAAK,YAAcm4G,GAArC,CAGA,IAAIkB,EAAOryH,EAAEvB,SACT6zH,EAAOtyH,EAAEP,SACTmE,EAAIyuH,EAAK9uH,OAAS4tH,EAASkB,EAAOC,EAClCC,EAAM3uH,EAAEL,KAGZ,GAAKxJ,KAAKq4H,iBAAiBG,KAKvBf,EAAae,GAAjB,CAKA,IAAIC,EAAYlB,EAAOH,GAAU51B,EAAOv7F,GAQnC+xH,EAAYQ,GAUbC,EAAYlB,EAAOiB,KACrBjB,EAAOiB,GAAOC,EACdjB,EAAOgB,GAAOC,EAAY1B,EAAUltH,GACpC+tH,EAASY,GAAOrB,EAChBU,EAAaW,GAAOvyH,IAbpBsxH,EAAOiB,GAAOC,EACdjB,EAAOgB,GAAOC,EAAY1B,EAAUltH,GACpCiuH,EAAajuH,EAAG2uH,GAChBZ,EAASY,GAAOrB,EAChBU,EAAaW,GAAOvyH,EAhBtB,CAdA,CAyCF,CACF,CAGA,MAAO,CACLkiB,OAAO,EACP6E,cAAUtqB,EACVw6D,UAAMx6D,EACNu1H,MAAOA,EAEX,GAGES,GAAwBpI,GAAW,CACrC9uB,OAAQ,SAAgB7gB,GACtB,OAAO,CACT,EACA0yC,UAAU,IAERsF,GAAW,CAEbC,cAAe,SAAuBj5H,GAoBpC,IAnBA,IAAIwvB,EAAKnvB,KAAKmvB,KACV0pG,EAAwBH,GAAsB/4H,GAChD6hG,EAASq3B,EAAsBr3B,OAC/B6xB,EAAWwF,EAAsBxF,SAC/BwB,EAAWrzB,EACXkyB,EAAgB1zH,KAAK2zH,UACvB70C,EAAQ40C,EAAc50C,MACtBqB,EAAQuzC,EAAcvzC,MACpByT,EAAI9U,EAAM98E,OACV82H,EAAMllC,EAAIA,EACVv8E,EAAU,SAAiB+jE,GAC7B,OAAO0D,EAAMznE,QAAQ+jE,EACvB,EACI29C,EAAU,SAAiB/0H,GAC7B,OAAO86E,EAAM96E,EACf,EAGIimF,EAAO,IAAIpjF,MAAMiyH,GACZ/4G,EAAI,EAAGA,EAAI+4G,EAAK/4G,IAAK,CAC5B,IAAI9U,EAAI8U,EAAI6zE,EACR5vF,GAAK+b,EAAI9U,GAAK2oF,EAEhB3J,EAAKlqE,GADH/b,IAAMiH,EACE,EAEA4nF,GAEd,CAQA,IAJA,IAAIvrF,EAAO,IAAIT,MAAMiyH,GACjBE,EAAW,IAAInyH,MAAMiyH,GAGhBlpH,EAAK,EAAGA,EAAKuwE,EAAMn+E,OAAQ4N,IAAM,CACxC,IAAI+wE,EAAOR,EAAMvwE,GACb9D,EAAM60E,EAAKj8E,SAAS,GACpBi8F,EAAMhgB,EAAKj7E,SAAS,GACxB,GAAIoG,IAAQ60F,EAAZ,CAIA,IAAIryF,EAAI+I,EAAQvL,GACZue,EAAIhT,EAAQspF,GACZjqC,EAAKpoD,EAAIslF,EAAIvpE,EACbqrG,EAAUb,EAASl0C,GAUvB,GAPIsJ,EAAKvzB,GAAMg/D,IACbzrC,EAAKvzB,GAAMg/D,EACXpuH,EAAKovD,GAAMrsC,EACX2uG,EAAStiE,GAAMiqB,IAIZ0yC,EAAU,CACb,IAAI4F,EAAK5uG,EAAIupE,EAAItlF,GAEZ+kH,GAAYppC,EAAKgvC,GAAMvD,IAC1BzrC,EAAKgvC,GAAMvD,EACXpuH,EAAK2xH,GAAM3qH,EACX0qH,EAASC,GAAMt4C,EAEnB,CAvBA,CAwBF,CAGA,IAAK,IAAI91E,EAAI,EAAGA,EAAI+oF,EAAG/oF,IACrB,IAAK,IAAIspH,EAAM,EAAGA,EAAMvgC,EAAGugC,IAEzB,IADA,IAAI+E,EAAK/E,EAAMvgC,EAAI/oF,EACVsuH,EAAK,EAAGA,EAAKvlC,EAAGulC,IAAM,CAC7B,IAAIC,EAAKjF,EAAMvgC,EAAIulC,EACfE,EAAKxuH,EAAI+oF,EAAIulC,EACblvC,EAAKivC,GAAMjvC,EAAKovC,GAAMpvC,EAAKmvC,KAC7BnvC,EAAKmvC,GAAMnvC,EAAKivC,GAAMjvC,EAAKovC,GAC3B/xH,EAAK8xH,GAAM9xH,EAAK4xH,GAEpB,CAGJ,IAAII,EAAY,SAAmB56B,GACjC,OAAQr/E,EAAOq/E,GAAOvvE,EAAGa,OAAO0uE,GAAOA,GAAK,EAC9C,EACI66B,EAAgB,SAAuB76B,GACzC,OAAOrnF,EAAQiiH,EAAU56B,GAC3B,EACI3lB,EAAM,CACR/rD,SAAU,SAAkBoxC,EAAMo7D,GAChC,IAAIx1H,EAAIu1H,EAAcn7D,GAClBnzD,EAAIsuH,EAAcC,GACtB,OAAOvvC,EAAKjmF,EAAI4vF,EAAI3oF,EACtB,EACAiyD,KAAM,SAAckB,EAAMo7D,GACxB,IAAIx1H,EAAIu1H,EAAcn7D,GAClBnzD,EAAIsuH,EAAcC,GAClBC,EAAWV,EAAQ/0H,GACvB,GAAIA,IAAMiH,EACR,OAAOwuH,EAASr5C,aAElB,GAAuB,MAAnB94E,EAAKtD,EAAI4vF,EAAI3oF,GACf,OAAOkkB,EAAGixD,aAEZ,IAEIO,EAFAzjB,EAAO/tC,EAAGixD,aACV3oD,EAAOzzB,EAEXk5D,EAAK8gD,MAAMyb,GACX,MAAOz1H,IAAMiH,EACXwsB,EAAOzzB,EACPA,EAAIsD,EAAKtD,EAAI4vF,EAAI3oF,GACjB01E,EAAOq4C,EAASvhG,EAAOm8D,EAAI5vF,GAC3Bk5D,EAAK8gD,MAAMr9B,GACXzjB,EAAK8gD,MAAM+a,EAAQ/0H,IAErB,OAAOk5D,CACT,GAEF,OAAO6b,CACT,GAGE2gD,GAAsBpJ,GAAW,CACnC9uB,OAAQ,SAAgB7gB,GACtB,OAAO,CACT,EACA0yC,UAAU,EACVn7F,KAAM,OAEJyhG,GAAW,CAEbC,YAAa,SAAqBj6H,GAChC,IAAIk0B,EAAQ7zB,KACR65H,EAAuBH,GAAoB/5H,GAC7C6hG,EAASq4B,EAAqBr4B,OAC9B6xB,EAAWwG,EAAqBxG,SAChCn7F,EAAO2hG,EAAqB3hG,KAC1B28F,EAAWrzB,EACX4G,EAAOpoG,KACPmvB,EAAKnvB,KAAKmvB,KACVukG,EAAgB1zH,KAAK2zH,UACvBxzC,EAAQuzC,EAAcvzC,MACtBrB,EAAQ40C,EAAc50C,MACpBw3C,EAAWx3C,EAAM98E,OACjB83H,EAAU,IAAI3I,GACd4I,GAAyB,EACzBC,EAAuB,GAC3B9hG,EAAO/I,EAAGixD,WAAWloD,GAAM,GAE3BioD,EAAM40C,WAAU,SAAUp0C,GACxB,OAAOA,EAAKq0C,QACd,IAyCA,IAxCA,IAAIiF,EAAW95C,EAAMn+E,OACjBk4H,EAAU,SAAiB9+C,GAC7B,IAAI57D,EAAMs6G,EAAQ52H,IAAIk4E,EAAK5xE,MAK3B,OAJKgW,IACHA,EAAM,CAAC,EACPs6G,EAAQtnH,IAAI4oE,EAAK5xE,KAAMgW,IAElBA,CACT,EACI26G,EAAgB,SAAuBX,GACzC,OAAQn6G,EAAOm6G,GAAMrqG,EAAGhK,EAAEq0G,GAAMA,GAAI,EACtC,EACIvD,EAAa,SAAoBuD,GACnC,OAAOU,EAAQC,EAAcX,IAAKvvC,IACpC,EACIisC,EAAS,SAAgBsD,GAK3B,IAJA,IAAIY,EAAYr3H,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAKm1B,EAChFymB,EAAMw7E,EAAcX,GACpBt8D,EAAO,GACPke,EAAOz8B,IACF,CACP,GAAY,MAARy8B,EACF,OAAOvnD,EAAMsiG,QAEf,IAAIkE,EAAWH,EAAQ9+C,GACrBuF,EAAO05C,EAAS15C,KAChB25C,EAAOD,EAASC,KAElB,GADAp9D,EAAKhvC,QAAQktD,EAAK,IACdA,EAAK47B,KAAKojB,IAAcl9D,EAAKl7D,OAAS,EACxC,MAEU,MAAR2+E,GACFzjB,EAAKhvC,QAAQyyD,GAEfvF,EAAOk/C,CACT,CACA,OAAOlyB,EAAK+tB,MAAMj5D,EACpB,EAGSl5D,EAAI,EAAGA,EAAIsyH,EAAUtyH,IAAK,CACjC,IAAIo3E,EAAO0D,EAAM96E,GACbu2H,EAAOL,EAAQ9+C,GACfA,EAAK47B,KAAK9+E,GACZqiG,EAAKtwC,KAAO,EAEZswC,EAAKtwC,KAAO4I,IAEd0nC,EAAKD,KAAO,KACZC,EAAK55C,KAAO,IACd,CAaA,IAVA,IAAI65C,GAAe,EACfC,EAA0B,SAAiCC,EAAOC,EAAOh6C,EAAMi6C,EAAOC,EAAOr5B,GAC/F,IAAIvX,EAAO2wC,EAAM3wC,KAAOuX,EACpBvX,EAAO4wC,EAAM5wC,OAAStJ,EAAKq2B,KAAK4jB,EAAMj6C,QACxCk6C,EAAM5wC,KAAOA,EACb4wC,EAAMP,KAAOI,EACbG,EAAMl6C,KAAOA,EACb65C,GAAe,EAEnB,EACS5qH,EAAK,EAAGA,EAAK0mH,EAAU1mH,IAAM,CACpC4qH,GAAe,EACf,IAAK,IAAIv0H,EAAI,EAAGA,EAAIg0H,EAAUh0H,IAAK,CACjC,IAAI06E,EAAOR,EAAMl6E,GACb6F,EAAM60E,EAAKj8E,SACXi8F,EAAMhgB,EAAKj7E,SACXgwH,EAAUb,EAASl0C,GACnBm6C,EAAUZ,EAAQpuH,GAClBivH,EAAUb,EAAQv5B,GACtB85B,EAAwB3uH,EAAK60F,EAAKhgB,EAAMm6C,EAASC,EAASrF,GAGrDrC,GACHoH,EAAwB95B,EAAK70F,EAAK60E,EAAMo6C,EAASD,EAASpF,EAE9D,CACA,IAAK8E,EACH,KAEJ,CACA,GAAIA,EAGF,IADA,IAAIQ,EAAyB,GACpBv+D,EAAK,EAAGA,EAAKw9D,EAAUx9D,IAAM,CACpC,IAAIw+D,EAAQ96C,EAAM1jB,GACdy+D,EAAOD,EAAMv2H,SACby2H,EAAOF,EAAMv1H,SACb01H,EAAWvG,EAASoG,GACpBI,EAAUnB,EAAQgB,GAAMjxC,KACxBqxC,EAAUpB,EAAQiB,GAAMlxC,KAC5B,GAAIoxC,EAAUD,EAAWE,IAAYjI,GAAYiI,EAAUF,EAAWC,EAAS,CAK7E,GAJKtB,IACHtmG,GAAK,2DACLsmG,GAAyB,IAEc,IAArCp6H,EAAQ47H,yBAuCV,MAtCA,IAAIC,EAAgB,GAChBH,EAAUD,EAAWE,GACvBE,EAAcv3H,KAAKi3H,IAEhB7H,GAAYiI,EAAUF,EAAWC,GACpCG,EAAcv3H,KAAKk3H,GAGrB,IADA,IAAIM,EAAmBD,EAAcx5H,OAC5B+d,EAAI,EAAGA,EAAI07G,EAAkB17G,IAAK,CACzC,IAAI2+B,EAAQ88E,EAAcz7G,GACtB27G,EAAQ,CAACh9E,GACbg9E,EAAMz3H,KAAKi2H,EAAQx7E,GAAOiiC,MAC1B,IAAIg7C,EAAQzB,EAAQx7E,GAAO47E,KAC3B,OAAiC,IAA1BoB,EAAMrkH,QAAQskH,GACnBD,EAAMz3H,KAAK03H,GACXD,EAAMz3H,KAAKi2H,EAAQyB,GAAOh7C,MAC1Bg7C,EAAQzB,EAAQyB,GAAOrB,KAEzBoB,EAAQA,EAAMv5H,MAAMu5H,EAAMrkH,QAAQskH,IAGlC,IAFA,IAAIC,EAAaF,EAAM,GAAGlyH,KACtBqyH,EAAgB,EACXh5H,EAAI,EAAGA,EAAI64H,EAAM15H,OAAQa,GAAK,EACjC64H,EAAM74H,GAAG2G,KAAOoyH,IAClBA,EAAaF,EAAM74H,GAAG2G,KACtBqyH,EAAgBh5H,GAGpB64H,EAAQA,EAAMv5H,MAAM05H,GAAe56H,OAAOy6H,EAAMv5H,MAAM,EAAG05H,IACzDH,EAAMz3H,KAAKy3H,EAAM,IACjB,IAAII,EAAUJ,EAAMhyG,KAAI,SAAU9nB,GAChC,OAAOA,EAAG4H,IACZ,IAAGsB,KAAK,MACyC,IAA7CkwH,EAAuB3jH,QAAQykH,KACjC9B,EAAqB/1H,KAAKmkG,EAAK+tB,MAAMuF,IACrCV,EAAuB/2H,KAAK63H,GAEhC,CAIJ,CACF,CAEF,MAAO,CACL7F,WAAYA,EACZC,OAAQA,EACR6D,uBAAwBA,EACxBC,qBAAsBA,EAE1B,GAGE+B,GAAQ51H,KAAK2iB,KAAK,GAKlBwmF,GAAW,SAAkB0sB,EAAWC,EAASC,GACrB,IAA1BA,EAAel6H,QACjB6U,GAAM,sDAUR,IARA,IAAIslH,EAAWD,EAAeF,GAC1BI,EAAWD,EAAS,GACpBE,EAAWF,EAAS,GACpBG,EAAaL,EAAQG,GACrBG,EAAaN,EAAQI,GACrB57C,EAAWy7C,EAGNl4H,EAAIy8E,EAASz+E,OAAS,EAAGgC,GAAK,EAAGA,IAAK,CAC7C,IAAI28E,EAAOF,EAASz8E,GAChB8H,EAAM60E,EAAK,GACXggB,EAAMhgB,EAAK,IACXs7C,EAAQnwH,KAASwwH,GAAcL,EAAQt7B,KAAS47B,GAAcN,EAAQnwH,KAASywH,GAAcN,EAAQt7B,KAAS27B,IAChH77C,EAASxnD,OAAOj1B,EAAG,EAEvB,CAGA,IAAK,IAAI4L,EAAK,EAAGA,EAAK6wE,EAASz+E,OAAQ4N,IAAM,CAC3C,IAAIqrH,EAAQx6C,EAAS7wE,GACjBqrH,EAAM,KAAOsB,GAEf97C,EAAS7wE,GAAMqrH,EAAM94H,QACrBs+E,EAAS7wE,GAAI,GAAK0sH,GACTrB,EAAM,KAAOsB,IAEtB97C,EAAS7wE,GAAMqrH,EAAM94H,QACrBs+E,EAAS7wE,GAAI,GAAK0sH,EAEtB,CAGA,IAAK,IAAInI,EAAM,EAAGA,EAAM8H,EAAQj6H,OAAQmyH,IAClC8H,EAAQ9H,KAASoI,IACnBN,EAAQ9H,GAAOmI,GAGnB,OAAO77C,CACT,EAGI+7C,GAAgB,SAAuBC,EAAaP,EAAgB5yC,EAAMozC,GAC5E,MAAOpzC,EAAOozC,EAAW,CAEvB,IAAIV,EAAY71H,KAAK2I,MAAM3I,KAAKgJ,SAAW+sH,EAAel6H,QAG1Dk6H,EAAiB5sB,GAAS0sB,EAAWS,EAAaP,GAClD5yC,GACF,CACA,OAAO4yC,CACT,EACIS,GAAW,CAGbC,YAAa,WACX,IAAI/oG,EAAQ7zB,KACR0zH,EAAgB1zH,KAAK2zH,UACvB70C,EAAQ40C,EAAc50C,MACtBqB,EAAQuzC,EAAcvzC,MACxBA,EAAM40C,WAAU,SAAUp0C,GACxB,OAAOA,EAAKq0C,QACd,IACA,IAAIsB,EAAWx3C,EAAM98E,OACjBi4H,EAAW95C,EAAMn+E,OACjB66H,EAAU12H,KAAK0I,KAAK1I,KAAK4iB,IAAI5iB,KAAKgqG,IAAImmB,GAAYnwH,KAAK22H,IAAK,IAC5DC,EAAW52H,KAAK2I,MAAMwnH,EAAWyF,IACrC,KAAIzF,EAAW,GAAf,CAQA,IADA,IAAI0G,EAAc,GACTh5H,EAAI,EAAGA,EAAIi2H,EAAUj2H,IAAK,CACjC,IAAIiC,EAAIk6E,EAAMn8E,GACdg5H,EAAY/4H,KAAK,CAACD,EAAG86E,EAAMznE,QAAQpR,EAAEvB,UAAWo6E,EAAMznE,QAAQpR,EAAEP,WAClE,CAiBA,IAdA,IAAIu3H,EAAapqC,IACbqqC,EAAoB,GACpBC,EAAgB,IAAIt2H,MAAMyvH,GAG1BmG,EAAc,IAAI51H,MAAMyvH,GACxB8G,EAAe,IAAIv2H,MAAMyvH,GACzB+G,EAAe,SAAsBj/D,EAAMo7D,GAC7C,IAAK,IAAI8D,EAAM,EAAGA,EAAMhH,EAAUgH,IAChC9D,EAAG8D,GAAOl/D,EAAKk/D,EAEnB,EAGSC,EAAO,EAAGA,GAAQV,EAASU,IAAQ,CAE1C,IAAK,IAAIC,EAAM,EAAGA,EAAMlH,EAAUkH,IAChCf,EAAYe,GAAOA,EAIrB,IAAIC,EAAajB,GAAcC,EAAaO,EAAY76H,QAASm0H,EAAUyG,GACvEW,EAAcD,EAAWt7H,QAG7Bk7H,EAAaZ,EAAaW,GAG1B,IAAIO,EAAOnB,GAAcC,EAAagB,EAAYV,EAAU,GACxDa,EAAOpB,GAAcY,EAAcM,EAAaX,EAAU,GAG1DY,EAAK37H,QAAU47H,EAAK57H,QAAU27H,EAAK37H,OAASi7H,GAC9CA,EAAaU,EAAK37H,OAClBk7H,EAAoBS,EACpBN,EAAaZ,EAAaU,IACjBS,EAAK57H,QAAU27H,EAAK37H,QAAU47H,EAAK57H,OAASi7H,IACrDA,EAAaW,EAAK57H,OAClBk7H,EAAoBU,EACpBP,EAAaD,EAAcD,GAE/B,CAWA,IARA,IAAIU,EAAM79H,KAAKm2H,MAAM+G,EAAkBxzG,KAAI,SAAUzjB,GACnD,OAAOk6E,EAAMl6E,EAAE,GACjB,KACIq2H,EAAat8H,KAAKm2H,QAClBoG,EAAav8H,KAAKm2H,QAGlB2H,EAAuBX,EAAc,GAChCY,EAAM,EAAGA,EAAMZ,EAAcn7H,OAAQ+7H,IAAO,CACnD,IAAIC,EAAcb,EAAcY,GAC5B3iD,EAAO0D,EAAMi/C,GACbC,IAAgBF,EAClBxB,EAAWte,MAAM5iC,GAEjBmhD,EAAWve,MAAM5iC,EAErB,CAGA,IAAI6iD,EAAqB,SAA4BC,GACnD,IAAI/lE,EAAYtkC,EAAMsiG,QAUtB,OATA+H,EAAOtzH,SAAQ,SAAUwwE,GACvBjjB,EAAU6lD,MAAM5iC,GAChBA,EAAKg6B,iBAAiBxqG,SAAQ,SAAU+1E,GAElC9sD,EAAM6/D,SAAS/S,KAAUk9C,EAAInqC,SAAS/S,IACxCxoB,EAAU6lD,MAAMr9B,EAEpB,GACF,IACOxoB,CACT,EACIC,EAAa,CAAC6lE,EAAmB3B,GAAa2B,EAAmB1B,IACjEznD,EAAM,CACR+oD,IAAKA,EACLzlE,WAAYA,EAGZkkE,WAAYA,EACZC,WAAYA,GAEd,OAAOznD,CAhGP,CAFEj+D,GAAM,2DAmGV,GAGEsnH,GAAe,SAAsBtgF,GACvC,MAAO,CACL/9B,EAAG+9B,EAAE/9B,EACL6e,EAAGkf,EAAElf,EAET,EACIy/F,GAA0B,SAAiCvgF,EAAGu/B,EAAM0G,GACtE,MAAO,CACLhkE,EAAG+9B,EAAE/9B,EAAIs9D,EAAO0G,EAAIhkE,EACpB6e,EAAGkf,EAAElf,EAAIy+C,EAAO0G,EAAInlD,EAExB,EACI0/F,GAA0B,SAAiCxgF,EAAGu/B,EAAM0G,GACtE,MAAO,CACLhkE,GAAI+9B,EAAE/9B,EAAIgkE,EAAIhkE,GAAKs9D,EACnBz+C,GAAIkf,EAAElf,EAAImlD,EAAInlD,GAAKy+C,EAEvB,EACIkhD,GAAc,SAAqBhqD,GACrC,MAAO,CACLx0D,EAAGw0D,EAAI,GACP31C,EAAG21C,EAAI,GAEX,EACI1lE,GAAM,SAAa0lE,GAIrB,IAHA,IAAIpe,EAAQnzD,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,EAC5E47C,EAAM57C,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAKuxE,EAAItyE,OAC9E4M,EAAMikF,IACD7uF,EAAIkyD,EAAOlyD,EAAI26C,EAAK36C,IAAK,CAChC,IAAIgL,EAAMslE,EAAItwE,GACV4iF,SAAS53E,KACXJ,EAAMzI,KAAKyI,IAAII,EAAKJ,GAExB,CACA,OAAOA,CACT,EACID,GAAM,SAAa2lE,GAIrB,IAHA,IAAIpe,EAAQnzD,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,EAC5E47C,EAAM57C,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAKuxE,EAAItyE,OAC9E2M,GAAOkkF,IACF7uF,EAAIkyD,EAAOlyD,EAAI26C,EAAK36C,IAAK,CAChC,IAAIgL,EAAMslE,EAAItwE,GACV4iF,SAAS53E,KACXL,EAAMxI,KAAKwI,IAAIK,EAAKL,GAExB,CACA,OAAOA,CACT,EACI4vH,GAAO,SAAcjqD,GAKvB,IAJA,IAAIpe,EAAQnzD,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,EAC5E47C,EAAM57C,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAKuxE,EAAItyE,OAC9EkqB,EAAQ,EACRnM,EAAI,EACC/b,EAAIkyD,EAAOlyD,EAAI26C,EAAK36C,IAAK,CAChC,IAAIgL,EAAMslE,EAAItwE,GACV4iF,SAAS53E,KACXkd,GAASld,EACT+Q,IAEJ,CACA,OAAOmM,EAAQnM,CACjB,EACIy+G,GAAS,SAAgBlqD,GAC3B,IAAIpe,EAAQnzD,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,EAC5E47C,EAAM57C,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAKuxE,EAAItyE,OAC9E2oF,IAAO5nF,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GACtE8iB,IAAO9iB,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GACtE07H,IAAe17H,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GAC9E4nF,EACFrW,EAAMA,EAAInyE,MAAM+zD,EAAOvX,IAEnBA,EAAM21B,EAAItyE,QACZsyE,EAAIr7C,OAAO0lB,EAAK21B,EAAItyE,OAAS28C,GAE3BuX,EAAQ,GACVoe,EAAIr7C,OAAO,EAAGi9B,IAMlB,IADA,IAAI8lB,EAAM,EACDh4E,EAAIswE,EAAItyE,OAAS,EAAGgC,GAAK,EAAGA,IAAK,CACxC,IAAIgkB,EAAIssD,EAAItwE,GACRy6H,EACG73C,SAAS5+D,KACZssD,EAAItwE,IAAM6uF,IACV7W,KAIF1H,EAAIr7C,OAAOj1B,EAAG,EAElB,CACI6hB,GACFyuD,EAAIzuD,MAAK,SAAUljB,EAAGC,GACpB,OAAOD,EAAIC,CACb,IAGF,IAAI4U,EAAM88D,EAAItyE,OACV08H,EAAMv4H,KAAK2I,MAAM0I,EAAM,GAC3B,OAAIA,EAAM,IAAM,EACP88D,EAAIoqD,EAAM,EAAI1iD,IAEb1H,EAAIoqD,EAAM,EAAI1iD,GAAO1H,EAAIoqD,EAAM1iD,IAAQ,CAEnD,EACI2iD,GAAU,SAAiBC,GAC7B,OAAOz4H,KAAK40B,GAAK6jG,EAAM,GACzB,EACIC,GAAmB,SAA0BC,EAAOC,GACtD,OAAO54H,KAAK64H,MAAMD,EAAOD,GAAS34H,KAAK40B,GAAK,CAC9C,EACIkkG,GAAO94H,KAAK84H,MAAQ,SAAUl/G,GAChC,OAAO5Z,KAAKgqG,IAAIpwF,GAAK5Z,KAAKgqG,IAAI,EAChC,EACI+uB,GAAS,SAAgBp/G,GAC3B,OAAIA,EAAI,EACC,EACEA,EAAI,GACL,EAED,CAEX,EACImqE,GAAO,SAAcnjD,EAAIC,GAC3B,OAAO5gC,KAAK2iB,KAAKq2G,GAAOr4F,EAAIC,GAC9B,EACIo4F,GAAS,SAAgBr4F,EAAIC,GAC/B,IAAI4+B,EAAK5+B,EAAGjnB,EAAIgnB,EAAGhnB,EACf8lD,EAAK7+B,EAAGpI,EAAImI,EAAGnI,EACnB,OAAOgnC,EAAKA,EAAKC,EAAKA,CACxB,EACIw5D,GAAsB,SAA6Bp3G,GAKrD,IAJA,IAAIhmB,EAASgmB,EAAEhmB,OAGXkqB,EAAQ,EACHloB,EAAI,EAAGA,EAAIhC,EAAQgC,IAC1BkoB,GAASlE,EAAEhkB,GAIb,IAAK,IAAI4L,EAAK,EAAGA,EAAK5N,EAAQ4N,IAC5BoY,EAAEpY,GAAMoY,EAAEpY,GAAMsc,EAElB,OAAOlE,CACT,EAGIq3G,GAAY,SAAmB/sD,EAAIxrC,EAAIC,EAAI1c,GAC7C,OAAQ,EAAIA,IAAM,EAAIA,GAAKioD,EAAK,GAAK,EAAIjoD,GAAKA,EAAIyc,EAAKzc,EAAIA,EAAI0c,CACjE,EACIu4F,GAAc,SAAqBhtD,EAAIxrC,EAAIC,EAAI1c,GACjD,MAAO,CACLvK,EAAGu/G,GAAU/sD,EAAGxyD,EAAGgnB,EAAGhnB,EAAGinB,EAAGjnB,EAAGuK,GAC/BsU,EAAG0gG,GAAU/sD,EAAG3zC,EAAGmI,EAAGnI,EAAGoI,EAAGpI,EAAGtU,GAEnC,EACIk1G,GAAS,SAAgBjtD,EAAIxrC,EAAIzc,EAAG6C,GACtC,IAAIg3E,EAAM,CACRpkF,EAAGgnB,EAAGhnB,EAAIwyD,EAAGxyD,EACb6e,EAAGmI,EAAGnI,EAAI2zC,EAAG3zC,GAEX6gG,EAAUv1C,GAAK3X,EAAIxrC,GACnB24F,EAAU,CACZ3/G,EAAGokF,EAAIpkF,EAAI0/G,EACX7gG,EAAGulE,EAAIvlE,EAAI6gG,GAIb,OAFAn1G,EAAS,MAALA,EAAY,EAAIA,EACpB6C,EAAS,MAALA,EAAYA,EAAI7C,EAAIm1G,EACjB,CACL1/G,EAAGwyD,EAAGxyD,EAAI2/G,EAAQ3/G,EAAIoN,EACtByR,EAAG2zC,EAAG3zC,EAAI8gG,EAAQ9gG,EAAIzR,EAE1B,EACIwyG,GAAQ,SAAe9wH,EAAKI,EAAKL,GACnC,OAAOxI,KAAKwI,IAAIC,EAAKzI,KAAKyI,IAAID,EAAKK,GACrC,EAGI84F,GAAkB,SAAyBruB,GAC7C,GAAU,MAANA,EACF,MAAO,CACL3vC,GAAI+oD,IACJ9oD,GAAI8oD,IACJ5oD,IAAK4oD,IACL3oD,IAAK2oD,IACLhpF,EAAG,EACH/I,EAAG,GAEA,GAAa,MAAT24E,EAAG3vC,IAAuB,MAAT2vC,EAAG1vC,GAAY,CACzC,GAAa,MAAT0vC,EAAGxvC,IAAuB,MAATwvC,EAAGvvC,IAAcuvC,EAAGxvC,IAAMwvC,EAAG3vC,IAAM2vC,EAAGvvC,IAAMuvC,EAAG1vC,GAClE,MAAO,CACLD,GAAI2vC,EAAG3vC,GACPC,GAAI0vC,EAAG1vC,GACPE,GAAIwvC,EAAGxvC,GACPC,GAAIuvC,EAAGvvC,GACPrgC,EAAG4vE,EAAGxvC,GAAKwvC,EAAG3vC,GACdhpC,EAAG24E,EAAGvvC,GAAKuvC,EAAG1vC,IAEX,GAAY,MAAR0vC,EAAG5vE,GAAqB,MAAR4vE,EAAG34E,GAAa24E,EAAG5vE,GAAK,GAAK4vE,EAAG34E,GAAK,EAC9D,MAAO,CACLgpC,GAAI2vC,EAAG3vC,GACPC,GAAI0vC,EAAG1vC,GACPE,GAAIwvC,EAAG3vC,GAAK2vC,EAAG5vE,EACfqgC,GAAIuvC,EAAG1vC,GAAK0vC,EAAG34E,EACf+I,EAAG4vE,EAAG5vE,EACN/I,EAAG24E,EAAG34E,EAGZ,CACF,EACI6+H,GAAkB,SAAyBlmD,GAC7C,MAAO,CACL3vC,GAAI2vC,EAAG3vC,GACPG,GAAIwvC,EAAGxvC,GACPpgC,EAAG4vE,EAAG5vE,EACNkgC,GAAI0vC,EAAG1vC,GACPG,GAAIuvC,EAAGvvC,GACPppC,EAAG24E,EAAG34E,EAEV,EACI8+H,GAAmB,SAA0BnmD,GAC/CA,EAAG3vC,GAAK+oD,IACRpZ,EAAG1vC,GAAK8oD,IACRpZ,EAAGxvC,IAAM4oD,IACTpZ,EAAGvvC,IAAM2oD,IACTpZ,EAAG5vE,EAAI,EACP4vE,EAAG34E,EAAI,CACT,EACI++H,GAAoB,SAA2Bt1B,EAAKC,GAGtDD,EAAIzgE,GAAK3jC,KAAKyI,IAAI27F,EAAIzgE,GAAI0gE,EAAI1gE,IAC9BygE,EAAItgE,GAAK9jC,KAAKwI,IAAI47F,EAAItgE,GAAIugE,EAAIvgE,IAC9BsgE,EAAI1gG,EAAI0gG,EAAItgE,GAAKsgE,EAAIzgE,GACrBygE,EAAIxgE,GAAK5jC,KAAKyI,IAAI27F,EAAIxgE,GAAIygE,EAAIzgE,IAC9BwgE,EAAIrgE,GAAK/jC,KAAKwI,IAAI47F,EAAIrgE,GAAIsgE,EAAItgE,IAC9BqgE,EAAIzpG,EAAIypG,EAAIrgE,GAAKqgE,EAAIxgE,EACvB,EACI+1F,GAA2B,SAAkCrmD,EAAI35D,EAAG6e,GACtE86C,EAAG3vC,GAAK3jC,KAAKyI,IAAI6qE,EAAG3vC,GAAIhqB,GACxB25D,EAAGxvC,GAAK9jC,KAAKwI,IAAI8qE,EAAGxvC,GAAInqB,GACxB25D,EAAG5vE,EAAI4vE,EAAGxvC,GAAKwvC,EAAG3vC,GAClB2vC,EAAG1vC,GAAK5jC,KAAKyI,IAAI6qE,EAAG1vC,GAAIpL,GACxB86C,EAAGvvC,GAAK/jC,KAAKwI,IAAI8qE,EAAGvvC,GAAIvL,GACxB86C,EAAG34E,EAAI24E,EAAGvvC,GAAKuvC,EAAG1vC,EACpB,EACIg2F,GAAoB,SAA2BtmD,GACjD,IAAI8R,EAAUxoF,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,EAOlF,OANA02E,EAAG3vC,IAAMyhD,EACT9R,EAAGxvC,IAAMshD,EACT9R,EAAG1vC,IAAMwhD,EACT9R,EAAGvvC,IAAMqhD,EACT9R,EAAG5vE,EAAI4vE,EAAGxvC,GAAKwvC,EAAG3vC,GAClB2vC,EAAG34E,EAAI24E,EAAGvvC,GAAKuvC,EAAG1vC,GACX0vC,CACT,EACIumD,GAAyB,SAAgCvmD,GAC3D,IACIlpC,EAAKD,EAAOE,EAAQH,EADpBk7C,EAAUxoF,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAEnF,GAAuB,IAAnBwoF,EAAQvpF,OACVuuC,EAAMD,EAAQE,EAASH,EAAOk7C,EAAQ,QACjC,GAAuB,IAAnBA,EAAQvpF,OACjBuuC,EAAMC,EAAS+6C,EAAQ,GACvBl7C,EAAOC,EAAQi7C,EAAQ,QAClB,GAAuB,IAAnBA,EAAQvpF,OAAc,CAC/B,IAAIi+H,EAAWnf,EAAev1B,EAAS,GACvCh7C,EAAM0vF,EAAS,GACf3vF,EAAQ2vF,EAAS,GACjBzvF,EAASyvF,EAAS,GAClB5vF,EAAO4vF,EAAS,EAClB,CAOA,OANAxmD,EAAG3vC,IAAMuG,EACTopC,EAAGxvC,IAAMqG,EACTmpC,EAAG1vC,IAAMwG,EACTkpC,EAAGvvC,IAAMsG,EACTipC,EAAG5vE,EAAI4vE,EAAGxvC,GAAKwvC,EAAG3vC,GAClB2vC,EAAG34E,EAAI24E,EAAGvvC,GAAKuvC,EAAG1vC,GACX0vC,CACT,EAGIymD,GAAoB,SAA2B31B,EAAKC,GACtDD,EAAIzgE,GAAK0gE,EAAI1gE,GACbygE,EAAIxgE,GAAKygE,EAAIzgE,GACbwgE,EAAItgE,GAAKugE,EAAIvgE,GACbsgE,EAAIrgE,GAAKsgE,EAAItgE,GACbqgE,EAAI1gG,EAAI0gG,EAAItgE,GAAKsgE,EAAIzgE,GACrBygE,EAAIzpG,EAAIypG,EAAIrgE,GAAKqgE,EAAIxgE,EACvB,EACIo2F,GAAyB,SAAgC51B,EAAKC,GAEhE,QAAID,EAAIzgE,GAAK0gE,EAAIvgE,QAGbugE,EAAI1gE,GAAKygE,EAAItgE,QAKbsgE,EAAItgE,GAAKugE,EAAI1gE,QAGb0gE,EAAIvgE,GAAKsgE,EAAIzgE,QAKbygE,EAAIrgE,GAAKsgE,EAAIzgE,QAGbygE,EAAItgE,GAAKqgE,EAAIxgE,QAKbwgE,EAAIxgE,GAAKygE,EAAItgE,OAGbsgE,EAAIzgE,GAAKwgE,EAAIrgE,SAMnB,EACIk2F,GAAgB,SAAuB3mD,EAAI35D,EAAG6e,GAChD,OAAO86C,EAAG3vC,IAAMhqB,GAAKA,GAAK25D,EAAGxvC,IAAMwvC,EAAG1vC,IAAMpL,GAAKA,GAAK86C,EAAGvvC,EAC3D,EACIm2F,GAAqB,SAA4B5mD,EAAI6mD,GACvD,OAAOF,GAAc3mD,EAAI6mD,EAAGxgH,EAAGwgH,EAAG3hG,EACpC,EACI4hG,GAA2B,SAAkCh2B,EAAKC,GACpE,OAAO41B,GAAc71B,EAAKC,EAAI1gE,GAAI0gE,EAAIzgE,KAAOq2F,GAAc71B,EAAKC,EAAIvgE,GAAIugE,EAAItgE,GAC9E,EACIs2F,GAA8B,SAAqC1gH,EAAG6e,EAAG8hG,EAAOC,EAAOl4F,EAAOC,EAAQ8iD,GACxG,IAKIo1C,EALAC,EAAeC,GAAwBr4F,EAAOC,GAC9C2W,EAAY5W,EAAQ,EACpB2/B,EAAa1/B,EAAS,EAOpBq4F,EAAYL,EAAQrhF,EAAYwhF,EAAer1C,EAC/Cw1C,EAAYL,EAAQv4D,EAAaojB,EACjCy1C,EAAUP,EAAQrhF,EAAYwhF,EAAer1C,EAC7C01C,EAAUF,EAEd,GADAJ,EAA4BO,GAAqBphH,EAAG6e,EAAG8hG,EAAOC,EAAOI,EAAWC,EAAWC,EAASC,GAAS,GACzGN,EAA0B3+H,OAAS,EACrC,OAAO2+H,EAMT,IAAIQ,EAAcV,EAAQrhF,EAAYmsC,EAClC61C,EAAcV,EAAQv4D,EAAay4D,EAAer1C,EAClD81C,EAAYF,EACZG,EAAYZ,EAAQv4D,EAAay4D,EAAer1C,EAEpD,GADAo1C,EAA4BO,GAAqBphH,EAAG6e,EAAG8hG,EAAOC,EAAOS,EAAaC,EAAaC,EAAWC,GAAW,GACjHX,EAA0B3+H,OAAS,EACrC,OAAO2+H,EAMT,IAAIY,EAAed,EAAQrhF,EAAYwhF,EAAer1C,EAClDi2C,EAAed,EAAQv4D,EAAaojB,EACpCk2C,EAAahB,EAAQrhF,EAAYwhF,EAAer1C,EAChDm2C,EAAaF,EAEjB,GADAb,EAA4BO,GAAqBphH,EAAG6e,EAAG8hG,EAAOC,EAAOa,EAAcC,EAAcC,EAAYC,GAAY,GACrHf,EAA0B3+H,OAAS,EACrC,OAAO2+H,EAMT,IAWEgB,EAXEC,EAAanB,EAAQrhF,EAAYmsC,EACjCs2C,EAAanB,EAAQv4D,EAAay4D,EAAer1C,EACjDu2C,EAAWF,EACXG,EAAWrB,EAAQv4D,EAAay4D,EAAer1C,EAEnD,GADAo1C,EAA4BO,GAAqBphH,EAAG6e,EAAG8hG,EAAOC,EAAOkB,EAAYC,EAAYC,EAAUC,GAAU,GAC7GpB,EAA0B3+H,OAAS,EACrC,OAAO2+H,EAST,IAAIqB,EAAiBvB,EAAQrhF,EAAYwhF,EACrCqB,EAAiBvB,EAAQv4D,EAAay4D,EAI1C,GAHAe,EAAmBO,GAAoBpiH,EAAG6e,EAAG8hG,EAAOC,EAAOsB,EAAgBC,EAAgBrB,EAAer1C,GAGtGo2C,EAAiB3/H,OAAS,GAAK2/H,EAAiB,IAAMK,GAAkBL,EAAiB,IAAMM,EACjG,MAAO,CAACN,EAAiB,GAAIA,EAAiB,IAMhD,IAAIQ,EAAkB1B,EAAQrhF,EAAYwhF,EACtCwB,EAAkB1B,EAAQv4D,EAAay4D,EAI3C,GAHAe,EAAmBO,GAAoBpiH,EAAG6e,EAAG8hG,EAAOC,EAAOyB,EAAiBC,EAAiBxB,EAAer1C,GAGxGo2C,EAAiB3/H,OAAS,GAAK2/H,EAAiB,IAAMQ,GAAmBR,EAAiB,IAAMS,EAClG,MAAO,CAACT,EAAiB,GAAIA,EAAiB,IAMhD,IAAIU,EAAqB5B,EAAQrhF,EAAYwhF,EACzC0B,EAAqB5B,EAAQv4D,EAAay4D,EAI9C,GAHAe,EAAmBO,GAAoBpiH,EAAG6e,EAAG8hG,EAAOC,EAAO2B,EAAoBC,EAAoB1B,EAAer1C,GAG9Go2C,EAAiB3/H,OAAS,GAAK2/H,EAAiB,IAAMU,GAAsBV,EAAiB,IAAMW,EACrG,MAAO,CAACX,EAAiB,GAAIA,EAAiB,IAMhD,IAAIY,EAAoB9B,EAAQrhF,EAAYwhF,EACxC4B,EAAoB9B,EAAQv4D,EAAay4D,EAI7C,OAHAe,EAAmBO,GAAoBpiH,EAAG6e,EAAG8hG,EAAOC,EAAO6B,EAAmBC,EAAmB5B,EAAer1C,GAG5Go2C,EAAiB3/H,OAAS,GAAK2/H,EAAiB,IAAMY,GAAqBZ,EAAiB,IAAMa,EAC7F,CAACb,EAAiB,GAAIA,EAAiB,IAG3C,EACT,EAEIc,GAAiB,SAAwB3iH,EAAG6e,EAAGqnD,EAAKC,EAAKC,EAAKC,EAAKyL,GACrE,IAAIvnE,EAAIunE,EACJ9nD,EAAK3jC,KAAKyI,IAAIo3E,EAAKE,GACnBj8C,EAAK9jC,KAAKwI,IAAIq3E,EAAKE,GACnBn8C,EAAK5jC,KAAKyI,IAAIq3E,EAAKE,GACnBj8C,EAAK/jC,KAAKwI,IAAIs3E,EAAKE,GACvB,OAAOr8C,EAAKzf,GAAKvK,GAAKA,GAAKmqB,EAAK5f,GAAK0f,EAAK1f,GAAKsU,GAAKA,GAAKuL,EAAK7f,CAChE,EACIq4G,GAAmB,SAA0B5iH,EAAG6e,EAAGmL,EAAIC,EAAIE,EAAIC,EAAIy4F,EAAIC,EAAIhxC,GAC7E,IAAInY,EAAK,CACP3vC,GAAI3jC,KAAKyI,IAAIk7B,EAAI64F,EAAI14F,GAAM2nD,EAC3B3nD,GAAI9jC,KAAKwI,IAAIm7B,EAAI64F,EAAI14F,GAAM2nD,EAC3B7nD,GAAI5jC,KAAKyI,IAAIm7B,EAAI64F,EAAI14F,GAAM0nD,EAC3B1nD,GAAI/jC,KAAKwI,IAAIo7B,EAAI64F,EAAI14F,GAAM0nD,GAI7B,QAAI9xE,EAAI25D,EAAG3vC,IAAMhqB,EAAI25D,EAAGxvC,IAAMtL,EAAI86C,EAAG1vC,IAAMpL,EAAI86C,EAAGvvC,GAOpD,EACI24F,GAAiB,SAAwBlgI,EAAGC,EAAGC,EAAGmM,GACpDnM,GAAKmM,EACL,IAAI+d,EAAInqB,EAAIA,EAAI,EAAID,EAAIE,EACxB,GAAIkqB,EAAI,EACN,MAAO,GAET,IAAI+1G,EAAQ38H,KAAK2iB,KAAKiE,GAClBg2G,EAAQ,EAAIpgI,EACZqgI,IAAUpgI,EAAIkgI,GAASC,EACvBE,IAAUrgI,EAAIkgI,GAASC,EAC3B,MAAO,CAACC,EAAOC,EACjB,EACIC,GAAa,SAAoBvgI,EAAGC,EAAGC,EAAGqqB,EAAGxpB,GAO/C,IASIy/H,EAAclf,EAAGl3F,EAAGq2G,EAAM90H,EAAG+b,EAAGg5G,EAAOC,EATvCC,EAAU,KAgBd,OAbU,IAAN5gI,IACFA,EAAI4gI,GAEN3gI,GAAKD,EACLE,GAAKF,EACLuqB,GAAKvqB,EAELshH,GAAK,EAAMphH,EAAID,EAAIA,GAAK,EACxBmqB,GAAM,GAAOG,EAAKtqB,GAAK,EAAMC,EAAWD,EAAIA,EAAX,GACjCmqB,GAAK,GACLo2G,EAAelf,EAAIA,EAAIA,EAAIl3F,EAAIA,EAC/BrpB,EAAO,GAAK,EACZ2/H,EAAQzgI,EAAI,EACRugI,EAAe,GACjB70H,EAAIye,EAAI5mB,KAAK2iB,KAAKq6G,GAClB70H,EAAIA,EAAI,GAAKnI,KAAK4iB,KAAKza,EAAG,EAAM,GAAOnI,KAAK4iB,IAAIza,EAAG,EAAM,GACzD+b,EAAI0C,EAAI5mB,KAAK2iB,KAAKq6G,GAClB94G,EAAIA,EAAI,GAAKlkB,KAAK4iB,KAAKsB,EAAG,EAAM,GAAOlkB,KAAK4iB,IAAIsB,EAAG,EAAM,GACzD3mB,EAAO,IAAM2/H,EAAQ/0H,EAAI+b,EACzBg5G,IAAU/0H,EAAI+b,GAAK,EACnB3mB,EAAO,GAAKA,EAAO,IAAM2/H,EACzBA,EAAQl9H,KAAK2iB,KAAK,KAASuB,EAAI/b,GAAK,EACpC5K,EAAO,GAAK2/H,OACZ3/H,EAAO,IAAM2/H,KAGf3/H,EAAO,GAAKA,EAAO,GAAK,EACH,IAAjBy/H,GACFG,EAAMv2G,EAAI,GAAK5mB,KAAK4iB,KAAKgE,EAAG,EAAM,GAAO5mB,KAAK4iB,IAAIgE,EAAG,EAAM,GAC3DrpB,EAAO,GAAc,EAAM4/H,EAAdD,OACb3/H,EAAO,GAAKA,EAAO,KAAO4/H,EAAMD,MAGlCpf,GAAKA,EACLmf,EAAOnf,EAAIA,EAAIA,EACfmf,EAAOj9H,KAAKk6F,KAAKtzE,EAAI5mB,KAAK2iB,KAAKs6G,IAC/BE,EAAM,EAAMn9H,KAAK2iB,KAAKm7F,GACtBvgH,EAAO,IAAM2/H,EAAQC,EAAMn9H,KAAKmgC,IAAI88F,EAAO,GAC3C1/H,EAAO,IAAM2/H,EAAQC,EAAMn9H,KAAKmgC,KAAK88F,EAAO,EAAMj9H,KAAK40B,IAAM,QAC7Dr3B,EAAO,IAAM2/H,EAAQC,EAAMn9H,KAAKmgC,KAAK88F,EAAO,EAAMj9H,KAAK40B,IAAM,KAE/D,EACIyoG,GAA0B,SAAiC1jH,EAAG6e,EAAGmL,EAAIC,EAAIE,EAAIC,EAAIy4F,EAAIC,GAQvF,IAAIjgI,EAAI,EAAMmnC,EAAKA,EAAK,EAAIA,EAAKG,EAAK,EAAIH,EAAK64F,EAAK,EAAI14F,EAAKA,EAAK,EAAIA,EAAK04F,EAAKA,EAAKA,EAAK54F,EAAKA,EAAK,EAAIA,EAAKG,EAAK,EAAIH,EAAK64F,EAAK,EAAI14F,EAAKA,EAAK,EAAIA,EAAK04F,EAAKA,EAAKA,EAC7JhgI,EAAI,EAAUknC,EAAKG,EAAK,EAAIH,EAAKA,EAAK,EAAIA,EAAK64F,EAAK,EAAI14F,EAAKA,EAAK,EAAIA,EAAK04F,EAAK,EAAI54F,EAAKG,EAAK,EAAIH,EAAKA,EAAK,EAAIA,EAAK64F,EAAK,EAAI14F,EAAKA,EAAK,EAAIA,EAAK04F,EACjJ//H,EAAI,EAAUinC,EAAKA,EAAK,EAAIA,EAAKG,EAAKH,EAAK64F,EAAK74F,EAAKhqB,EAAI,EAAImqB,EAAKA,EAAK,EAAIA,EAAKnqB,EAAI6iH,EAAK7iH,EAAI,EAAIiqB,EAAKA,EAAK,EAAIA,EAAKG,EAAKH,EAAK64F,EAAK74F,EAAKpL,EAAI,EAAIuL,EAAKA,EAAK,EAAIA,EAAKvL,EAAIikG,EAAKjkG,EAC5KzR,EAAI,EAAM4c,EAAKG,EAAKH,EAAKA,EAAKA,EAAKhqB,EAAImqB,EAAKnqB,EAAIiqB,EAAKG,EAAKH,EAAKA,EAAKA,EAAKpL,EAAIuL,EAAKvL,EAIlFyzE,EAAQ,GAGZ8wB,GAAWvgI,EAAGC,EAAGC,EAAGqqB,EAAGklF,GAGvB,IAFA,IAAIqxB,EAAgB,KAChB7hH,EAAS,GACJ3f,EAAQ,EAAGA,EAAQ,EAAGA,GAAS,EAClCkE,KAAK6iB,IAAIopF,EAAMnwG,EAAQ,IAAMwhI,GAAiBrxB,EAAMnwG,IAAU,GAAKmwG,EAAMnwG,IAAU,GACrF2f,EAAO3d,KAAKmuG,EAAMnwG,IAGtB2f,EAAO3d,KAAK,GACZ2d,EAAO3d,KAAK,GAGZ,IAFA,IACIy/H,EAAMC,EAAMC,EADZC,GAAsB,EAEjB7/H,EAAI,EAAGA,EAAI4d,EAAO5f,OAAQgC,IACjC0/H,EAAOv9H,KAAK4iB,IAAI,EAAMnH,EAAO5d,GAAI,GAAO8lC,EAAK,GAAO,EAAIloB,EAAO5d,IAAM4d,EAAO5d,GAAKimC,EAAKroB,EAAO5d,GAAK4d,EAAO5d,GAAK2+H,EAC9GgB,EAAOx9H,KAAK4iB,IAAI,EAAInH,EAAO5d,GAAI,GAAO+lC,EAAK,GAAK,EAAMnoB,EAAO5d,IAAM4d,EAAO5d,GAAKkmC,EAAKtoB,EAAO5d,GAAK4d,EAAO5d,GAAK4+H,EAC5GgB,EAAcz9H,KAAK4iB,IAAI26G,EAAO5jH,EAAG,GAAK3Z,KAAK4iB,IAAI46G,EAAOhlG,EAAG,GAErDklG,GAAsB,EACpBD,EAAcC,IAChBA,EAAqBD,GAGvBC,EAAqBD,EAGzB,OAAOC,CACT,EACIC,GAAqB,SAA4BhkH,EAAG6e,EAAGmL,EAAIC,EAAIE,EAAIC,GACrE,IAAI/c,EAAS,CAACrN,EAAIgqB,EAAInL,EAAIoL,GACtByB,EAAO,CAACvB,EAAKH,EAAII,EAAKH,GACtBg6F,EAASv4F,EAAK,GAAKA,EAAK,GAAKA,EAAK,GAAKA,EAAK,GAC5Cw4F,EAAQ72G,EAAO,GAAKA,EAAO,GAAKA,EAAO,GAAKA,EAAO,GACnD82G,EAAa92G,EAAO,GAAKqe,EAAK,GAAKre,EAAO,GAAKqe,EAAK,GACpD04F,EAAQD,EAAaA,EAAaF,EACtC,OAAIE,EAAa,EACRD,EAELE,EAAQH,GACFjkH,EAAImqB,IAAOnqB,EAAImqB,IAAOtL,EAAIuL,IAAOvL,EAAIuL,GAExC85F,EAAQE,CACjB,EACIC,GAA2B,SAAkCrkH,EAAG6e,EAAGjT,GAOrE,IANA,IAAIoe,EAAIC,EAAIE,EAAIC,EACZ04F,EAGAwB,EAAK,EAEApgI,EAAI,EAAGA,EAAI0nB,EAAO1pB,OAAS,EAAGgC,IAUrC,GATA8lC,EAAKpe,EAAW,EAAJ1nB,GACZ+lC,EAAKre,EAAW,EAAJ1nB,EAAQ,GAChBA,EAAI,EAAI0nB,EAAO1pB,OAAS,GAC1BioC,EAAKve,EAAiB,GAAT1nB,EAAI,IACjBkmC,EAAKxe,EAAiB,GAAT1nB,EAAI,GAAS,KAE1BimC,EAAKve,EAAqC,GAA7B1nB,EAAI,EAAI0nB,EAAO1pB,OAAS,IACrCkoC,EAAKxe,EAAqC,GAA7B1nB,EAAI,EAAI0nB,EAAO1pB,OAAS,GAAS,IAE5C8nC,GAAMhqB,GAAKmqB,GAAMnqB,OAAU,MAAIgqB,GAAMhqB,GAAKA,GAAKmqB,GAAMH,GAAMhqB,GAAKA,GAAKmqB,GAUvE,SATA24F,GAAM9iH,EAAIgqB,IAAOG,EAAKH,IAAOI,EAAKH,GAAMA,EACpC64F,EAAKjkG,GACPylG,GAQJ,CAEF,OAAIA,EAAK,IAAM,CAKjB,EACIC,GAAqB,SAA4BvkH,EAAG6e,EAAG2lG,EAAYC,EAASC,EAASh8F,EAAOC,EAAQ0rD,EAAW5I,GACjH,IAGIhpC,EAHAkiF,EAAoB,IAAI59H,MAAMy9H,EAAWtiI,QAIzB,MAAhBmyF,EAAU,IACZ5xC,EAAQp8C,KAAKu+H,KAAKvwC,EAAU,GAAKA,EAAU,IACvCA,EAAU,GAAK,EACjB5xC,GAAgBp8C,KAAK40B,GAAK,EAE1BwnB,GAASA,EAAQp8C,KAAK40B,GAAK,GAG7BwnB,EAAQ4xC,EAMV,IAJA,IAUIzoE,EAVA4a,EAAMngC,KAAKmgC,KAAKic,GAChBlc,EAAMlgC,KAAKkgC,KAAKkc,GAGXv+C,EAAI,EAAGA,EAAIygI,EAAkBziI,OAAS,EAAGgC,IAChDygI,EAAsB,EAAJzgI,GAASwkC,EAAQ,GAAK87F,EAAe,EAAJtgI,GAASsiC,EAAMg+F,EAAe,EAAJtgI,EAAQ,GAAKqiC,GAC1Fo+F,EAAsB,EAAJzgI,EAAQ,GAAKykC,EAAS,GAAK67F,EAAe,EAAJtgI,EAAQ,GAAKsiC,EAAMg+F,EAAe,EAAJtgI,GAASqiC,GAC/Fo+F,EAAsB,EAAJzgI,IAAUugI,EAC5BE,EAAsB,EAAJzgI,EAAQ,IAAMwgI,EAGlC,GAAIj5C,EAAU,EAAG,CACf,IAAIo5C,EAAkBC,GAAcH,GAAoBl5C,GACxD7/D,EAASm5G,GAAUF,EACrB,MACEj5G,EAAS+4G,EAEX,OAAON,GAAyBrkH,EAAG6e,EAAGjT,EACxC,EACIo5G,GAA0B,SAAiChlH,EAAG6e,EAAG2lG,EAAYC,EAASC,EAASh8F,EAAOC,GAMxG,IALA,IAAIs8F,EAAmB,IAAIl+H,MAAMy9H,EAAWtiI,QACxCgjI,EAAQx8F,EAAQ,EAChBktB,EAAQjtB,EAAS,EACjBm4F,EAAeqE,GAAsBz8F,EAAOC,GAC5Cy8F,EAAsBtE,EAAeA,EAChC58H,EAAI,EAAGA,EAAIsgI,EAAWtiI,OAAS,EAAGgC,IAAK,CAC9C,IAAImhI,OAAW,EACbC,OAAS,EAETD,EADQ,IAANnhI,EACSsgI,EAAWtiI,OAAS,EAEhB,EAAJgC,EAAQ,EAErBohI,EAAa,EAAJphI,EAAQ,EACjB,IAAIkL,EAAKq1H,EAAUS,EAAQV,EAAe,EAAJtgI,GAClCgrB,EAAKw1G,EAAU9uE,EAAQ4uE,EAAe,EAAJtgI,EAAQ,GAC1Co8F,GAAYkkC,EAAWa,GAAYb,EAAWc,GAAUd,EAAWa,EAAW,GAAKb,EAAWc,EAAS,GACvGj4G,EAASyzG,EAAez6H,KAAKgnH,IAAIhnH,KAAKk6F,KAAKD,GAAY,GACvDilC,EAAOn2H,EAAKie,EAASm3G,EAAWa,GAChCG,EAAOt2G,EAAK7B,EAASm3G,EAAWa,EAAW,GAC3CI,EAAOr2H,EAAKie,EAASm3G,EAAWc,GAChCI,EAAOx2G,EAAK7B,EAASm3G,EAAWc,EAAS,GAC7CL,EAAqB,EAAJ/gI,GAASqhI,EAC1BN,EAAqB,EAAJ/gI,EAAQ,GAAKshI,EAC9BP,EAAqB,EAAJ/gI,EAAQ,GAAKuhI,EAC9BR,EAAqB,EAAJ/gI,EAAQ,GAAKwhI,EAC9B,IAAIC,EAAQnB,EAAWa,EAAW,GAC9BO,GAASpB,EAAWa,GACpBQ,EAAWF,EAAQnB,EAAWc,GAAUM,EAAQpB,EAAWc,EAAS,GACpEO,EAAW,IACbF,IAAU,EACVC,IAAU,GAEZ,IAAIx2G,EAAKm2G,EAAOI,EAAQ7E,EACpBzxG,EAAKm2G,EAAOI,EAAQ9E,EACpBgF,EAAkBz/H,KAAK4iB,IAAImG,EAAKpP,EAAG,GAAK3Z,KAAK4iB,IAAIoG,EAAKwP,EAAG,GAC7D,GAAIinG,GAAmBV,EACrB,OAAO,CAEX,CACA,OAAOf,GAAyBrkH,EAAG6e,EAAGomG,EACxC,EACIF,GAAY,SAAmBgB,GAIjC,IAHA,IACIC,EAAmBC,EAAmBC,EAAiBC,EACvDC,EAAgBC,EAAgBC,EAAcC,EAF9CC,EAAW,IAAIz/H,MAAMg/H,EAAQ7jI,OAAS,GAGjCgC,EAAI,EAAGA,EAAI6hI,EAAQ7jI,OAAS,EAAGgC,IAAK,CAC3C8hI,EAAoBD,EAAY,EAAJ7hI,GAC5B+hI,EAAoBF,EAAY,EAAJ7hI,EAAQ,GACpCgiI,EAAkBH,EAAY,EAAJ7hI,EAAQ,GAClCiiI,EAAkBJ,EAAY,EAAJ7hI,EAAQ,GAC9BA,EAAI6hI,EAAQ7jI,OAAS,EAAI,GAC3BkkI,EAAiBL,EAAkB,GAAT7hI,EAAI,IAC9BmiI,EAAiBN,EAAkB,GAAT7hI,EAAI,GAAS,GACvCoiI,EAAeP,EAAkB,GAAT7hI,EAAI,GAAS,GACrCqiI,EAAeR,EAAkB,GAAT7hI,EAAI,GAAS,KAErCkiI,EAAiBL,EAAQ,GACzBM,EAAiBN,EAAQ,GACzBO,EAAeP,EAAQ,GACvBQ,EAAeR,EAAQ,IAEzB,IAAIU,EAAerF,GAAqB4E,EAAmBC,EAAmBC,EAAiBC,EAAiBC,EAAgBC,EAAgBC,EAAcC,GAAc,GAC5KC,EAAa,EAAJtiI,GAASuiI,EAAa,GAC/BD,EAAa,EAAJtiI,EAAQ,GAAKuiI,EAAa,EACrC,CACA,OAAOD,CACT,EACI1B,GAAgB,SAAuBl5G,EAAQ86G,GAGjD,IAFA,IACIC,EAAeC,EAAeC,EAAYC,EAD1CjC,EAAkB,IAAI99H,MAAsB,EAAhB6kB,EAAO1pB,QAE9BgC,EAAI,EAAGA,EAAI0nB,EAAO1pB,OAAS,EAAGgC,IAAK,CAC1CyiI,EAAgB/6G,EAAW,EAAJ1nB,GACvB0iI,EAAgBh7G,EAAW,EAAJ1nB,EAAQ,GAC3BA,EAAI0nB,EAAO1pB,OAAS,EAAI,GAC1B2kI,EAAaj7G,EAAiB,GAAT1nB,EAAI,IACzB4iI,EAAal7G,EAAiB,GAAT1nB,EAAI,GAAS,KAElC2iI,EAAaj7G,EAAO,GACpBk7G,EAAal7G,EAAO,IAOtB,IAAIkG,EAAUg1G,EAAaF,EACvB70G,IAAY80G,EAAaF,GAGzBI,EAAe1gI,KAAK2iB,KAAK8I,EAAUA,EAAUC,EAAUA,GACvDi1G,EAAoBl1G,EAAUi1G,EAC9BE,EAAoBl1G,EAAUg1G,EAClClC,EAAoB,EAAJ3gI,GAASyiI,EAAgBK,EAAoBN,EAC7D7B,EAAoB,EAAJ3gI,EAAQ,GAAK0iI,EAAgBK,EAAoBP,EACjE7B,EAAoB,EAAJ3gI,EAAQ,GAAK2iI,EAAaG,EAAoBN,EAC9D7B,EAAoB,EAAJ3gI,EAAQ,GAAK4iI,EAAaG,EAAoBP,CAChE,CACA,OAAO7B,CACT,EACIqC,GAAuB,SAA8BlnH,EAAG6e,EAAG4lG,EAASC,EAASyC,EAAgBC,GAC/F,IAAIpI,EAAQyF,EAAUzkH,EAClBi/G,EAAQyF,EAAU7lG,EACtBmgG,GAASmI,EACTlI,GAASmI,EACT,IAAI1vH,EAAMrR,KAAK2iB,KAAKg2G,EAAQA,EAAQC,EAAQA,GACxCoI,EAAY3vH,EAAM,EACtB,GAAI2vH,EAAY,EACd,MAAO,GAET,IAAIC,EAAgBD,EAAY3vH,EAChC,MAAO,EAAE+sH,EAAUzkH,GAAKsnH,EAAgBtnH,GAAI0kH,EAAU7lG,GAAKyoG,EAAgBzoG,EAC7E,EACI0oG,GAAiB,SAAwBvnH,EAAG6e,EAAG6J,EAAOC,EAAQ87F,EAASC,EAASj5C,GAKlF,OAJAzrE,GAAKykH,EACL5lG,GAAK6lG,EACL1kH,GAAK0oB,EAAQ,EAAI+iD,EACjB5sD,GAAK8J,EAAS,EAAI8iD,EACXzrE,EAAIA,EAAI6e,EAAIA,GAAK,CAC1B,EAGIujG,GAAsB,SAA6Bp4F,EAAIC,EAAIE,EAAIC,EAAIq6F,EAASC,EAASn6F,GAEvF,IAAInd,EAAI,CAAC+c,EAAKH,EAAII,EAAKH,GACnBnmC,EAAI,CAACkmC,EAAKy6F,EAASx6F,EAAKy6F,GACxB7hI,EAAIuqB,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAC3BtqB,EAAI,GAAKgB,EAAE,GAAKspB,EAAE,GAAKtpB,EAAE,GAAKspB,EAAE,IAChCrqB,EAAIe,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKymC,EAASA,EACzC84F,EAAevgI,EAAIA,EAAI,EAAID,EAAIE,EACnC,GAAIsgI,EAAe,EACjB,MAAO,GAET,IAAImE,IAAO1kI,EAAIuD,KAAK2iB,KAAKq6G,KAAkB,EAAIxgI,GAC3C4kI,IAAO3kI,EAAIuD,KAAK2iB,KAAKq6G,KAAkB,EAAIxgI,GAC3C6kI,EAAOrhI,KAAKyI,IAAI04H,EAAIC,GACpBE,EAAOthI,KAAKwI,IAAI24H,EAAIC,GACpBG,EAAgB,GAOpB,GANIF,GAAQ,GAAKA,GAAQ,GACvBE,EAAczjI,KAAKujI,GAEjBC,GAAQ,GAAKA,GAAQ,GACvBC,EAAczjI,KAAKwjI,GAEQ,IAAzBC,EAAc1lI,OAChB,MAAO,GAET,IAAI2lI,EAAoBD,EAAc,GAAKx6G,EAAE,GAAK4c,EAC9C89F,EAAoBF,EAAc,GAAKx6G,EAAE,GAAK6c,EAClD,GAAI29F,EAAc1lI,OAAS,EAAG,CAC5B,GAAI0lI,EAAc,IAAMA,EAAc,GACpC,MAAO,CAACC,EAAmBC,GAE3B,IAAIC,EAAmBH,EAAc,GAAKx6G,EAAE,GAAK4c,EAC7Cg+F,EAAmBJ,EAAc,GAAKx6G,EAAE,GAAK6c,EACjD,MAAO,CAAC49F,EAAmBC,EAAmBC,EAAkBC,EAEpE,CACE,MAAO,CAACH,EAAmBC,EAE/B,EACIG,GAAa,SAAoBplI,EAAGC,EAAGC,GACzC,OAAID,GAAKD,GAAKA,GAAKE,GAAKA,GAAKF,GAAKA,GAAKC,EAC9BD,EACEA,GAAKC,GAAKA,GAAKC,GAAKA,GAAKD,GAAKA,GAAKD,EACrCC,EAEAC,CAEX,EAGIq+H,GAAuB,SAA8Bp3F,EAAIC,EAAIE,EAAIC,EAAIy4F,EAAIC,EAAIoF,EAAIC,EAAIC,GACvF,IAAIC,EAAOr+F,EAAK64F,EACZyF,EAAOn+F,EAAKH,EACZu+F,EAAOL,EAAKrF,EACZ2F,EAAOv+F,EAAK64F,EACZ2F,EAAOr+F,EAAKH,EACZy+F,EAAOP,EAAKrF,EACZ6F,EAAOJ,EAAOC,EAAOE,EAAOL,EAC5BO,EAAON,EAAOE,EAAOC,EAAOJ,EAC5BQ,EAAMH,EAAOJ,EAAOC,EAAOE,EAC/B,GAAY,IAARI,EAAW,CACb,IAAIzgD,EAAKugD,EAAOE,EACZxgD,EAAKugD,EAAOC,EACZC,EAAgB,KAChBC,EAAO,EAAID,EACXE,EAAO,EAAIF,EACf,OAAIC,GAAQ3gD,GAAMA,GAAM4gD,GAAQD,GAAQ1gD,GAAMA,GAAM2gD,GAG7CZ,EAFE,CAACp+F,EAAKo+C,EAAKkgD,EAAMr+F,EAAKm+C,EAAKqgD,GAGzB,EAKb,CACE,OAAa,IAATE,GAAuB,IAATC,EAIZX,GAAWj+F,EAAIG,EAAI+9F,KAAQA,EACtB,CAACA,EAAIC,GAIVF,GAAWj+F,EAAIG,EAAI04F,KAAQA,EACtB,CAACA,EAAIC,GAIVmF,GAAWpF,EAAIqF,EAAI/9F,KAAQA,EACtB,CAACA,EAAIC,GAEP,GAGA,EAGb,EAOI6+F,GAAuB,SAA8BjpH,EAAG6e,EAAG2lG,EAAYC,EAASC,EAASh8F,EAAOC,EAAQ8iD,GAC1G,IACIg7C,EAMA76G,EAeAs9G,EAAUC,EAAUC,EAAOC,EAtB3B55C,EAAgB,GAEhBk1C,EAAoB,IAAI59H,MAAMy9H,EAAWtiI,QACzConI,GAAc,EAKlB,GAJa,MAAT5gG,IACF4gG,GAAc,GAGZA,EAAa,CACf,IAAK,IAAIplI,EAAI,EAAGA,EAAIygI,EAAkBziI,OAAS,EAAGgC,IAChDygI,EAAsB,EAAJzgI,GAASsgI,EAAe,EAAJtgI,GAASwkC,EAAQ+7F,EACvDE,EAAsB,EAAJzgI,EAAQ,GAAKsgI,EAAe,EAAJtgI,EAAQ,GAAKykC,EAAS+7F,EAElE,GAAIj5C,EAAU,EAAG,CACf,IAAIo5C,EAAkBC,GAAcH,GAAoBl5C,GACxD7/D,EAASm5G,GAAUF,EACrB,MACEj5G,EAAS+4G,CAEb,MACE/4G,EAAS44G,EAGX,IAAK,IAAInQ,EAAM,EAAGA,EAAMzoG,EAAO1pB,OAAS,EAAGmyH,IACzC6U,EAAWt9G,EAAa,EAANyoG,GAClB8U,EAAWv9G,EAAa,EAANyoG,EAAU,GACxBA,EAAMzoG,EAAO1pB,OAAS,EAAI,GAC5BknI,EAAQx9G,EAAmB,GAAXyoG,EAAM,IACtBgV,EAAQz9G,EAAmB,GAAXyoG,EAAM,GAAS,KAE/B+U,EAAQx9G,EAAO,GACfy9G,EAAQz9G,EAAO,IAEjB66G,EAAerF,GAAqBphH,EAAG6e,EAAG4lG,EAASC,EAASwE,EAAUC,EAAUC,EAAOC,GAC3D,IAAxB5C,EAAavkI,QACfutF,EAActrF,KAAKsiI,EAAa,GAAIA,EAAa,IAGrD,OAAOh3C,CACT,EACI85C,GAA4B,SAAmCvpH,EAAG6e,EAAG2lG,EAAYC,EAASC,EAASh8F,EAAOC,EAAQ8iD,GAOpH,IANA,IACIg7C,EADAh3C,EAAgB,GAEhBtpC,EAAQ,IAAIp/C,MAAMy9H,EAAWtiI,QAC7BgjI,EAAQx8F,EAAQ,EAChBktB,EAAQjtB,EAAS,EACjBm4F,EAAeqE,GAAsBz8F,EAAOC,GACvCzkC,EAAI,EAAGA,EAAIsgI,EAAWtiI,OAAS,EAAGgC,IAAK,CAC9C,IAAImhI,OAAW,EACbC,OAAS,EAETD,EADQ,IAANnhI,EACSsgI,EAAWtiI,OAAS,EAEhB,EAAJgC,EAAQ,EAErBohI,EAAa,EAAJphI,EAAQ,EACjB,IAAIkL,EAAKq1H,EAAUS,EAAQV,EAAe,EAAJtgI,GAClCgrB,EAAKw1G,EAAU9uE,EAAQ4uE,EAAe,EAAJtgI,EAAQ,GAC1Co8F,GAAYkkC,EAAWa,GAAYb,EAAWc,GAAUd,EAAWa,EAAW,GAAKb,EAAWc,EAAS,GACvGj4G,EAASyzG,EAAez6H,KAAKgnH,IAAIhnH,KAAKk6F,KAAKD,GAAY,GACvDilC,EAAOn2H,EAAKie,EAASm3G,EAAWa,GAChCG,EAAOt2G,EAAK7B,EAASm3G,EAAWa,EAAW,GAC3CI,EAAOr2H,EAAKie,EAASm3G,EAAWc,GAChCI,EAAOx2G,EAAK7B,EAASm3G,EAAWc,EAAS,GACnC,IAANphI,GACFiiD,EAAMq+E,EAAWtiI,OAAS,GAAKqjI,EAC/Bp/E,EAAMq+E,EAAWtiI,OAAS,GAAKsjI,IAE/Br/E,EAAU,EAAJjiD,EAAQ,GAAKqhI,EACnBp/E,EAAU,EAAJjiD,EAAQ,GAAKshI,GAErBr/E,EAAU,EAAJjiD,GAASuhI,EACft/E,EAAU,EAAJjiD,EAAQ,GAAKwhI,EACnB,IAAIC,EAAQnB,EAAWa,EAAW,GAC9BO,GAASpB,EAAWa,GACpBQ,EAAWF,EAAQnB,EAAWc,GAAUM,EAAQpB,EAAWc,EAAS,GACpEO,EAAW,IACbF,IAAU,EACVC,IAAU,GAEZ,IAAIx2G,EAAKm2G,EAAOI,EAAQ7E,EACpBzxG,EAAKm2G,EAAOI,EAAQ9E,EACxB2F,EAAerE,GAAoBpiH,EAAG6e,EAAG4lG,EAASC,EAASt1G,EAAIC,EAAIyxG,GACvC,IAAxB2F,EAAavkI,QACfutF,EAActrF,KAAKsiI,EAAa,GAAIA,EAAa,GAErD,CACA,IAAK,IAAIjJ,EAAM,EAAGA,EAAMr3E,EAAMjkD,OAAS,EAAGs7H,IACxCiJ,EAAerF,GAAqBphH,EAAG6e,EAAG4lG,EAASC,EAASv+E,EAAY,EAANq3E,GAAUr3E,EAAY,EAANq3E,EAAU,GAAIr3E,EAAY,EAANq3E,EAAU,GAAIr3E,EAAY,EAANq3E,EAAU,IAAI,GAC5G,IAAxBiJ,EAAavkI,QACfutF,EAActrF,KAAKsiI,EAAa,GAAIA,EAAa,IAGrD,GAAIh3C,EAAcvtF,OAAS,EAAG,CAG5B,IAFA,IAAIsnI,EAAqB,CAAC/5C,EAAc,GAAIA,EAAc,IACtDg6C,EAAwBpjI,KAAK4iB,IAAIugH,EAAmB,GAAKxpH,EAAG,GAAK3Z,KAAK4iB,IAAIugH,EAAmB,GAAK3qG,EAAG,GAChG6+F,EAAM,EAAGA,EAAMjuC,EAAcvtF,OAAS,EAAGw7H,IAAO,CACvD,IAAIoI,EAAkBz/H,KAAK4iB,IAAIwmE,EAAoB,EAANiuC,GAAW19G,EAAG,GAAK3Z,KAAK4iB,IAAIwmE,EAAoB,EAANiuC,EAAU,GAAK7+F,EAAG,GACrGinG,GAAmB2D,IACrBD,EAAmB,GAAK/5C,EAAoB,EAANiuC,GACtC8L,EAAmB,GAAK/5C,EAAoB,EAANiuC,EAAU,GAChD+L,EAAwB3D,EAE5B,CACA,OAAO0D,CACT,CACA,OAAO/5C,CACT,EACIi6C,GAAsB,SAA6BjD,EAAcp5G,EAAQs8G,GAC3E,IAAIC,EAAO,CAACnD,EAAa,GAAKp5G,EAAO,GAAIo5G,EAAa,GAAKp5G,EAAO,IAC9DnrB,EAASmE,KAAK2iB,KAAK4gH,EAAK,GAAKA,EAAK,GAAKA,EAAK,GAAKA,EAAK,IACtDC,GAAY3nI,EAASynI,GAAUznI,EAInC,OAHI2nI,EAAW,IACbA,EAAW,MAEN,CAACx8G,EAAO,GAAKw8G,EAAWD,EAAK,GAAIv8G,EAAO,GAAKw8G,EAAWD,EAAK,GACtE,EACIE,GAAoC,SAA2CC,EAAOC,GACxF,IAAIp+G,EAASq+G,GAAuBF,EAAOC,GAE3C,OADAp+G,EAASs+G,GAAmBt+G,GACrBA,CACT,EACIs+G,GAAqB,SAA4Bt+G,GAOnD,IANA,IAAI5L,EAAG6e,EACHkrG,EAAQn+G,EAAO1pB,OAAS,EACxB+kF,EAAO8L,IACT5L,EAAO4L,IACP7L,GAAQ6L,IACR3L,GAAQ2L,IACD7uF,EAAI,EAAGA,EAAI6lI,EAAO7lI,IACzB8b,EAAI4L,EAAO,EAAI1nB,GACf26B,EAAIjT,EAAO,EAAI1nB,EAAI,GACnB+iF,EAAO5gF,KAAKyI,IAAIm4E,EAAMjnE,GACtBknE,EAAO7gF,KAAKwI,IAAIq4E,EAAMlnE,GACtBmnE,EAAO9gF,KAAKyI,IAAIq4E,EAAMtoD,GACtBuoD,EAAO/gF,KAAKwI,IAAIu4E,EAAMvoD,GAMxB,IAFA,IAAIymC,EAAK,GAAK4hB,EAAOD,GACjB1hB,EAAK,GAAK6hB,EAAOD,GACZ82C,EAAM,EAAGA,EAAM8L,EAAO9L,IAC7Bj+G,EAAI4L,EAAO,EAAIqyG,GAAOryG,EAAO,EAAIqyG,GAAO34D,EACxCzmC,EAAIjT,EAAO,EAAIqyG,EAAM,GAAKryG,EAAO,EAAIqyG,EAAM,GAAK14D,EAChD0hB,EAAO5gF,KAAKyI,IAAIm4E,EAAMjnE,GACtBknE,EAAO7gF,KAAKwI,IAAIq4E,EAAMlnE,GACtBmnE,EAAO9gF,KAAKyI,IAAIq4E,EAAMtoD,GACtBuoD,EAAO/gF,KAAKwI,IAAIu4E,EAAMvoD,GAExB,GAAIsoD,GAAQ,EACV,IAAK,IAAIgjD,EAAM,EAAGA,EAAMJ,EAAOI,IAC7BtrG,EAAIjT,EAAO,EAAIu+G,EAAM,GAAKv+G,EAAO,EAAIu+G,EAAM,KAAO,EAAIhjD,GAG1D,OAAOv7D,CACT,EACIq+G,GAAyB,SAAgCF,EAAOC,GAClE,IAAII,EAAY,EAAML,EAAQ,EAAI1jI,KAAK40B,GACnC8E,EAAagqG,EAAQ,IAAM,EAAI1jI,KAAK40B,GAAK,EAAMmvG,EAAY,EAAM/jI,KAAK40B,GAAK,EAC/E8E,GAAciqG,EAGd,IAFA,IACIK,EADAz+G,EAAS,IAAI7kB,MAAc,EAARgjI,GAEd7lI,EAAI,EAAGA,EAAI6lI,EAAO7lI,IACzBmmI,EAAenmI,EAAIkmI,EAAYrqG,EAC/BnU,EAAO,EAAI1nB,GAAKmC,KAAKmgC,IAAI6jG,GACzBz+G,EAAO,EAAI1nB,EAAI,GAAKmC,KAAKkgC,KAAK8jG,GAGhC,OAAOz+G,CACT,EAGIm1G,GAA0B,SAAiCr4F,EAAOC,GACpE,OAAOtiC,KAAKyI,IAAI45B,EAAQ,EAAGC,EAAS,EAAG,EACzC,EAGIw8F,GAAwB,SAA+Bz8F,EAAOC,GAChE,OAAOtiC,KAAKyI,IAAI45B,EAAQ,GAAIC,EAAS,GAAI,EAC3C,EACI2hG,GAA8B,WAChC,OAAO,CACT,EACIC,GAAuB,SAA8B/3D,EAAIxrC,EAAIC,GAC/D,MAAO,CAACurC,EAAK,EAAIxrC,EAAKC,EAAI,GAAKD,EAAKwrC,GAAKA,EAC3C,EAGIg4D,GAA0B,SAAiC9hG,EAAOC,GACpE,MAAO,CACL8hG,aAAcpkI,KAAKyI,IAAI,GAAI,IAAO65B,GAClC+hG,YAAarkI,KAAKyI,IAAI,IAAK,IAAO45B,GAClCiiG,gBAAiB,IAErB,EAEIC,GAAmBpa,GAAW,CAChCqa,cAAe,GACfvhH,UAAW,KACXgmE,WAAY,IACZoS,OAAQ,SAAgB7gB,GACtB,OAAO,CACT,IAEEiqD,GAAW,CACbC,SAAU,SAAkBlrI,GAsB1B,IArBA,IAAImrI,EAAoBJ,GAAiB/qI,GACvCgrI,EAAgBG,EAAkBH,cAClCvhH,EAAY0hH,EAAkB1hH,UAC9BgmE,EAAa07C,EAAkB17C,WAC/BoS,EAASspC,EAAkBtpC,OACzBryE,EAAKnvB,KAAK6gF,SAAS1xD,GACnBukG,EAAgB1zH,KAAK2zH,UACvB70C,EAAQ40C,EAAc50C,MACtBqB,EAAQuzC,EAAcvzC,MACpBm2C,EAAWx3C,EAAM98E,OACjB+oI,EAAczU,EAAWA,EACzB2D,EAAW95C,EAAMn+E,OAKjBgpI,EAAS,IAAInkI,MAAMkkI,GACnBE,EAAY,IAAIpkI,MAAMyvH,GACtB4U,GAAkB,EAAIP,GAAiBrU,EAGlCtyH,EAAI,EAAGA,EAAIsyH,EAAUtyH,IAAK,CACjC,IAAK,IAAIiH,EAAI,EAAGA,EAAIqrH,EAAUrrH,IAAK,CACjC,IAAI8U,EAAI/b,EAAIsyH,EAAWrrH,EACvB+/H,EAAOjrH,GAAK,CACd,CACAkrH,EAAUjnI,GAAK,CACjB,CAGA,IAAK,IAAI4L,EAAK,EAAGA,EAAKqqH,EAAUrqH,IAAM,CACpC,IAAI+wE,EAAOR,EAAMvwE,GACbkrG,EAAQn6B,EAAK1hE,KAAK,UAClBigG,EAAQv+B,EAAK1hE,KAAK,UAGtB,GAAI67F,IAAUoE,EAAd,CAGA,IAAI5wG,EAAIwwE,EAAMqsD,UAAUrwB,GACpBzwF,EAAIy0D,EAAMqsD,UAAUjsB,GACpBr1G,EAAI23F,EAAO7gB,GACXygC,EAAK/2F,EAAIisG,EAAWhoH,EAGxB08H,EAAO5pB,IAAOv3G,EAGdohI,EAAU38H,IAAMzE,CAVhB,CAWF,CAOA,IAHA,IAAIg0C,EAAI,EAAMy4E,EAAW4U,EAGhB/R,EAAK,EAAGA,EAAK7C,EAAU6C,IAC9B,GAAsB,IAAlB8R,EAAU9R,GAEZ,IAAK,IAAIhF,EAAM,EAAGA,EAAMmC,EAAUnC,IAAO,CACvC,IAAIiX,EAAMjX,EAAMmC,EAAW6C,EAC3B6R,EAAOI,GAAOvtF,CAChB,MAGA,IAAK,IAAIy/E,EAAM,EAAGA,EAAMhH,EAAUgH,IAAO,CACvC,IAAI+N,EAAM/N,EAAMhH,EAAW6C,EAC3B6R,EAAOK,GAAOL,EAAOK,GAAOJ,EAAU9R,GAAM+R,CAC9C,CAWJ,IANA,IAEII,EAFAC,EAAc,IAAI1kI,MAAMyvH,GACxB3qG,EAAO,IAAI9kB,MAAMyvH,GAKZkH,EAAM,EAAGA,EAAMlH,EAAUkH,IAChC+N,EAAY/N,GAAO,EAErB,IAAK,IAAID,EAAO,EAAGA,EAAOnuC,EAAYmuC,IAAQ,CAE5C,IAAK,IAAIQ,EAAM,EAAGA,EAAMzH,EAAUyH,IAChCpyG,EAAKoyG,GAAO,EAId,IAAK,IAAIkM,EAAM,EAAGA,EAAM3T,EAAU2T,IAChC,IAAK,IAAIuB,EAAM,EAAGA,EAAMlV,EAAUkV,IAAO,CACvC,IAAIC,EAAMxB,EAAM3T,EAAWkV,EAC3B7/G,EAAKs+G,IAAQe,EAAOS,GAAOF,EAAYC,EACzC,CAEFpM,GAAoBzzG,GACpB2/G,EAAWC,EACXA,EAAc5/G,EACdA,EAAO2/G,EAGP,IAFA,IAAI1+B,EAAO,EAEF8+B,EAAM,EAAGA,EAAMpV,EAAUoV,IAAO,CACvC,IAAIjlD,EAAQ6kD,EAASI,GAAOH,EAAYG,GACxC9+B,GAAQnmB,EAAQA,CAClB,CAGA,GAAImmB,EAAOxjF,EACT,KAEJ,CAGA,IAAI2vD,EAAM,CACR4yD,KAAM,SAAcvwD,GAElB,OADAA,EAAOjsD,EAAGixD,WAAWhF,GAAM,GACpBmwD,EAAYzsD,EAAMznE,QAAQ+jE,GACnC,GAEF,OAAOrC,CACT,GAGE6yD,GAAatb,GAAW,CAC1Bp4F,KAAM,KACNspE,OAAQ,SAAgB7gB,GACtB,OAAO,CACT,EACA0yC,UAAU,EACV9O,MAAO,IAELsnB,GAAW,CACbC,2BAA4B,SAAoCnsI,GAC9DA,EAAUisI,GAAWjsI,GACrB,IAAIwvB,EAAKnvB,KAAKmvB,KACV2vD,EAAQ9+E,KAAK8+E,QACbw3C,EAAWx3C,EAAM98E,OACrB,GAAKrC,EAAQ0zH,SA0BN,CAKL,IAJA,IAAI0Y,EAAY,CAAC,EACbC,EAAa,CAAC,EACdC,EAAc,EACdC,EAAe,EACVt8H,EAAK,EAAGA,EAAK0mH,EAAU1mH,IAAM,CACpC,IAAI+rH,EAAQ78C,EAAMlvE,GACdpG,EAAKmyH,EAAMnyH,KAGf7J,EAAQu4B,KAAOyjG,EACf,IAAIwQ,EAAcnsI,KAAKosI,iBAAiBzsI,GACpCssI,EAAcE,EAAYE,WAAUJ,EAAcE,EAAYE,UAC9DH,EAAeC,EAAYG,YAAWJ,EAAeC,EAAYG,WACrEP,EAAUviI,GAAM2iI,EAAYE,SAC5BL,EAAWxiI,GAAM2iI,EAAYG,SAC/B,CACA,MAAO,CACLD,SAAU,SAAkBjxD,GAC1B,OAAmB,GAAf6wD,EACK,GAEL5sH,EAAO+7D,KAETA,EAAOjsD,EAAGa,OAAOorD,IAEZ2wD,EAAU3wD,EAAK5xE,MAAQyiI,EAChC,EACAK,UAAW,SAAmBlxD,GAC5B,OAAqB,IAAjB8wD,EACK,GAEL7sH,EAAO+7D,KAETA,EAAOjsD,EAAGa,OAAOorD,IAEZ4wD,EAAW5wD,EAAK5xE,MAAQ0iI,EACjC,EAEJ,CA9DE,IAFA,IAAIK,EAAU,CAAC,EACXC,EAAY,EACPxoI,EAAI,EAAGA,EAAIsyH,EAAUtyH,IAAK,CACjC,IAAIo3E,EAAO0D,EAAM96E,GAGjBrE,EAAQu4B,KAAOkjD,EACf,IAAIqxD,EAAazsI,KAAKosI,iBAAiBzsI,GACnC6sI,EAAYC,EAAWC,SACzBF,EAAYC,EAAWC,QAEzBH,EAAQnxD,EAAK5xE,MAAQijI,EAAWC,MAClC,CACA,MAAO,CACLA,OAAQ,SAAgBtxD,GACtB,OAAkB,IAAdoxD,EACK,GAELntH,EAAO+7D,KAETA,EAAOjsD,EAAGa,OAAOorD,IAEZmxD,EAAQnxD,EAAK5xE,MAAQgjI,EAC9B,EA0CN,EAMAJ,iBAAkB,SAA0BzsI,GAC1CA,EAAUisI,GAAWjsI,GACrB,IAAIwvB,EAAKnvB,KAAKmvB,KACVw9G,EAAc3sI,KACd4sI,EAAWjtI,EACbu4B,EAAO00G,EAAS10G,KAChBspE,EAASorC,EAASprC,OAClB6xB,EAAWuZ,EAASvZ,SACpB9O,EAAQqoB,EAASroB,MAEnB,GADArsF,EAAO/I,EAAGixD,WAAWloD,GAAM,GACtBm7F,EAYE,CAcL,IAbA,IAAIlzC,EAAQjoD,EAAKk9E,iBACby3B,EAAW1sD,EAAMnwD,QAAO,SAAU2wD,GACpC,OAAOA,EAAKj7E,SAASsxG,KAAK9+E,IAASy0G,EAAYtoI,IAAIs8E,EACrD,IACImsD,EAAW3sD,EAAMnwD,QAAO,SAAU2wD,GACpC,OAAOA,EAAKj8E,SAASsyG,KAAK9+E,IAASy0G,EAAYtoI,IAAIs8E,EACrD,IACIosD,EAAOF,EAAS7qI,OAChBgrI,EAAQF,EAAS9qI,OACjBirI,EAAO,EACPC,EAAQ,EAGH/Y,EAAM,EAAGA,EAAM0Y,EAAS7qI,OAAQmyH,IACvC8Y,GAAQzrC,EAAOqrC,EAAS1Y,IAI1B,IAAK,IAAImJ,EAAM,EAAGA,EAAMwP,EAAS9qI,OAAQs7H,IACvC4P,GAAS1rC,EAAOsrC,EAASxP,IAE3B,MAAO,CACL+O,SAAUlmI,KAAK4iB,IAAIgkH,EAAM,EAAIxoB,GAASp+G,KAAK4iB,IAAIkkH,EAAM1oB,GACrD+nB,UAAWnmI,KAAK4iB,IAAIikH,EAAO,EAAIzoB,GAASp+G,KAAK4iB,IAAImkH,EAAO3oB,GAE5D,CAhCE,IALA,IAAI4oB,EAAYj1G,EAAKk9E,iBAAiBmxB,aAAaoG,GAC/C9hI,EAAIsiI,EAAUnrI,OACdsM,EAAI,EAGCtK,EAAI,EAAGA,EAAImpI,EAAUnrI,OAAQgC,IACpCsK,GAAKkzF,EAAO2rC,EAAUnpI,IAExB,MAAO,CACL0oI,OAAQvmI,KAAK4iB,IAAIle,EAAG,EAAI05G,GAASp+G,KAAK4iB,IAAIza,EAAGi2G,GA6BnD,GAIFsnB,GAASuB,GAAKvB,GAASO,iBACvBP,GAASwB,IAAMxB,GAASyB,2BAA6BzB,GAASC,2BAE9D,IAAIyB,GAAajd,GAAW,CAC1Bkd,UAAU,EACVhsC,OAAQ,WACN,OAAO,CACT,EACA6xB,UAAU,EACVn7F,KAAM,OAEJu1G,GAAW,CACbC,8BAA+B,SAAuC/tI,GAepE,IAdA,IAAI4wH,EAAYgd,GAAW5tI,GACzB6tI,EAAWjd,EAAUid,SACrBhsC,EAAS+uB,EAAU/uB,OACnB6xB,EAAW9C,EAAU8C,SACnBlkG,EAAKnvB,KAAKmvB,KACVw+G,EAAc,CAAC,EACfC,EAAe,EACf9uD,EAAQ9+E,KAAK8+E,QACb+uD,EAAK7tI,KAAK44H,cAAc,CAC1Bp3B,OAAQA,EACR6xB,SAAUA,IAIHrvH,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAAK,CAGrC,IAFA,IAAI8pI,EAAgB,EAChBC,EAASjvD,EAAM96E,GACViH,EAAI,EAAGA,EAAI6zE,EAAM98E,OAAQiJ,IAChC,GAAIjH,IAAMiH,EAAG,CACX,IAAIiiB,EAAI2gH,EAAG7gH,SAAS+gH,EAAQjvD,EAAM7zE,IAEhC6iI,GADEN,EACe,EAAItgH,EAEJA,CAErB,CAEGsgH,IACHM,EAAgB,EAAIA,GAElBF,EAAeE,IACjBF,EAAeE,GAEjBH,EAAYI,EAAOvkI,MAAQskI,CAC7B,CACA,MAAO,CACLE,UAAW,SAAmB5yD,GAC5B,OAAoB,GAAhBwyD,EACK,GAIPxyD,EAFE/7D,EAAO+7D,GAEFjsD,EAAGa,OAAOorD,GAAM,GAAG5xE,KAGnB4xE,EAAK5xE,KAEPmkI,EAAYvyD,GAAQwyD,EAC7B,EAEJ,EAEAK,oBAAqB,SAA6BtuI,GAChD,IAAIuuI,EAAaX,GAAW5tI,GAC1Bu4B,EAAOg2G,EAAWh2G,KAClBspE,EAAS0sC,EAAW1sC,OACpB6xB,EAAW6a,EAAW7a,SACtBma,EAAWU,EAAWV,SACxBt1G,EAAOl4B,KAAKgwB,OAAOkI,GAAM,GAUzB,IAPA,IAAIy8F,EAAW30H,KAAK20H,SAAS,CAC3Bz8F,KAAMA,EACNspE,OAAQA,EACR6xB,SAAUA,IAER8a,EAAgB,EAChBrvD,EAAQ9+E,KAAK8+E,QACR96E,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAAK,CACrC,IAAI+b,EAAI++D,EAAM96E,GACd,IAAK+b,EAAEi3F,KAAK9+E,GAAO,CACjB,IAAIhL,EAAIynG,EAASsB,WAAWl2G,GAE1BouH,GADEX,EACe,EAAItgH,EAEJA,CAErB,CACF,CACA,OAAOsgH,EAAWW,EAAgB,EAAIA,CACxC,GAIFV,GAASW,GAAKX,GAASQ,oBACvBR,GAASY,IAAMZ,GAASa,8BAAgCb,GAASC,8BAEjE,IAAIa,GAAaje,GAAW,CAC1B9uB,OAAQ,KACR6xB,UAAU,IAERmb,GAAW,CAEbC,sBAAuB,SAA+B9uI,GAyBpD,IAxBA,IAAI4wH,EAAYge,GAAW5uI,GACzB0zH,EAAW9C,EAAU8C,SACrB7xB,EAAS+uB,EAAU/uB,OACjBktC,EAAqB,MAAVltC,EACXryE,EAAKnvB,KAAKmvB,KAGV3R,EAAIxd,KAAK8+E,QACTr0E,EAAI,CAAC,EACLkkI,EAAK,CAAC,EACNhgI,EAAM,EACNhJ,EAAI,CACN6M,IAAK,SAAa3O,EAAKmL,GACrB2/H,EAAG9qI,GAAOmL,EACNA,EAAML,IACRA,EAAMK,EAEV,EACA9L,IAAK,SAAaW,GAChB,OAAO8qI,EAAG9qI,EACZ,GAIOG,EAAI,EAAGA,EAAIwZ,EAAExb,OAAQgC,IAAK,CACjC,IAAIgkB,EAAIxK,EAAExZ,GACN8xH,EAAM9tG,EAAExe,KAEViB,EAAEqrH,GADAzC,EACOrrG,EAAE4mH,WAAW9vD,QAEb92D,EAAE6mH,mBAAmB/vD,QAGhCn5E,EAAE6M,IAAIsjH,EAAK,EACb,CAmFA,IAlFA,IAAIzpG,EAAQ,SAAe/d,GAWzB,IAVA,IAAI+oH,EAAM75G,EAAElP,GAAG9E,KACXtE,EAAI,GACJE,EAAI,CAAC,EACLwY,EAAI,CAAC,EACLsP,EAAI,CAAC,EACLqmG,EAAI,IAAInT,EAAc,YAAW,SAAUz9G,EAAGC,GAChD,OAAOsqB,EAAEvqB,GAAKuqB,EAAEtqB,EAClB,IAGSgN,EAAK,EAAGA,EAAK4N,EAAExb,OAAQ4N,IAAM,CACpC,IAAIk/H,EAAOtxH,EAAE5N,GAAIpG,KACjBpE,EAAE0pI,GAAQ,GACVlxH,EAAEkxH,GAAQ,EACV5hH,EAAE4hH,GAAQj8C,GACZ,CACAj1E,EAAEy5G,GAAO,EACTnqG,EAAEmqG,GAAO,EAET9D,EAAEtvH,KAAKozH,GACP,OAAQ9D,EAAEwb,QAAS,CACjB,IAAI73E,EAAKq8D,EAAE96F,MAEX,GADAvzB,EAAEjB,KAAKizD,GACHw3E,EACF,IAAK,IAAIzjI,EAAI,EAAGA,EAAIR,EAAEysD,GAAIl1D,OAAQiJ,IAAK,CACrC,IAAIpB,EAAIY,EAAEysD,GAAIjsD,GACV+jI,EAAO7/G,EAAGgtF,eAAejlD,GACzBypB,OAAO,EAETA,EADEquD,EAAKzZ,QAAQ1rH,GAAG7H,OAAS,EACpBgtI,EAAKzZ,QAAQ1rH,GAAG,GAEhBA,EAAE0rH,QAAQyZ,GAAM,GAEzB,IAAIC,EAAaztC,EAAO7gB,GACxB92E,EAAIA,EAAEL,KACF0jB,EAAErjB,GAAKqjB,EAAEgqC,GAAM+3E,IACjB/hH,EAAErjB,GAAKqjB,EAAEgqC,GAAM+3E,EACX1b,EAAEz0C,MAAMznE,QAAQxN,GAAK,EAEvB0pH,EAAEtvH,KAAK4F,GAGP0pH,EAAE4B,WAAWtrH,GAEf+T,EAAE/T,GAAK,EACPzE,EAAEyE,GAAK,IAELqjB,EAAErjB,IAAMqjB,EAAEgqC,GAAM+3E,IAClBrxH,EAAE/T,GAAK+T,EAAE/T,GAAK+T,EAAEs5C,GAChB9xD,EAAEyE,GAAG5F,KAAKizD,GAEd,MAEA,IAAK,IAAIiiE,EAAK,EAAGA,EAAK1uH,EAAEysD,GAAIl1D,OAAQm3H,IAAM,CACxC,IAAI+V,EAAKzkI,EAAEysD,GAAIiiE,GAAI3vH,KACf0jB,EAAEgiH,IAAOr8C,MACX0gC,EAAEtvH,KAAKirI,GACPhiH,EAAEgiH,GAAMhiH,EAAEgqC,GAAM,GAEdhqC,EAAEgiH,IAAOhiH,EAAEgqC,GAAM,IACnBt5C,EAAEsxH,GAAMtxH,EAAEsxH,GAAMtxH,EAAEs5C,GAClB9xD,EAAE8pI,GAAIjrI,KAAKizD,GAEf,CAEJ,CAEA,IADA,IAAIjxD,EAAI,CAAC,EACAkuH,EAAM,EAAGA,EAAM32G,EAAExb,OAAQmyH,IAChCluH,EAAEuX,EAAE22G,GAAK3qH,MAAQ,EAEnB,MAAOtE,EAAElD,OAAS,EAAG,CAEnB,IADA,IAAImtI,EAAMjqI,EAAEuzB,MACH+yG,EAAM,EAAGA,EAAMpmI,EAAE+pI,GAAKntI,OAAQwpI,IAAO,CAC5C,IAAI4D,EAAMhqI,EAAE+pI,GAAK3D,GACjBvlI,EAAEmpI,GAAOnpI,EAAEmpI,GAAOxxH,EAAEwxH,GAAOxxH,EAAEuxH,IAAQ,EAAIlpI,EAAEkpI,GAC7C,CACIA,GAAO3xH,EAAElP,GAAG9E,MACd7D,EAAE6M,IAAI28H,EAAKxpI,EAAEzC,IAAIisI,GAAOlpI,EAAEkpI,GAE9B,CACF,EACS7gI,EAAI,EAAGA,EAAIkP,EAAExb,OAAQsM,IAC5B+d,EAAM/d,GAER,IAAIwmE,EAAM,CACRu6D,YAAa,SAAqBj0D,GAChC,IAAI5xE,EAAK2lB,EAAGixD,WAAWhF,GAAM5xE,KAC7B,OAAO7D,EAAEzC,IAAIsG,EACf,EACA8lI,sBAAuB,SAA+Bl0D,GACpD,GAAW,GAAPzsE,EACF,OAAO,EAET,IAAInF,EAAK2lB,EAAGixD,WAAWhF,GAAM5xE,KAC7B,OAAO7D,EAAEzC,IAAIsG,GAAMmF,CACrB,GAKF,OADAmmE,EAAIy6D,sBAAwBz6D,EAAIw6D,sBACzBx6D,CACT,GAIF05D,GAASgB,GAAKhB,GAASC,sBAKvB,IAAIgB,GAAanf,GAAW,CAC1Bof,aAAc,EAEdC,cAAe,EAEfC,WAAY,EAEZpoC,cAAe,GAEf5sC,WAAY,CAEZ,SAAU+lB,GACR,OAAO,CACT,KAIEkvD,GAAe,SAAoBlwI,GACrC,OAAO8vI,GAAW9vI,EACpB,EAGImwI,GAAkB,SAAuBnvD,EAAM/lB,GAEjD,IADA,IAAI1uC,EAAQ,EACHloB,EAAI,EAAGA,EAAI42D,EAAW54D,OAAQgC,IACrCkoB,GAAS0uC,EAAW52D,GAAG28E,GAEzB,OAAOz0D,CACT,EACI6jH,GAAW,SAAkBC,EAAGjwH,EAAG/Q,GACrC,IAAK,IAAIhL,EAAI,EAAGA,EAAI+b,EAAG/b,IACrBgsI,EAAEhsI,EAAI+b,EAAI/b,GAAKgL,CAEnB,EACIkQ,GAAY,SAAmB8wH,EAAGjwH,GAEpC,IADA,IAAIwL,EACK+yF,EAAM,EAAGA,EAAMv+F,EAAGu+F,IAAO,CAChC/yF,EAAM,EACN,IAAK,IAAIw9C,EAAM,EAAGA,EAAMhpD,EAAGgpD,IACzBx9C,GAAOykH,EAAEjnE,EAAMhpD,EAAIu+F,GAErB,IAAK,IAAI2xB,EAAO,EAAGA,EAAOlwH,EAAGkwH,IAC3BD,EAAEC,EAAOlwH,EAAIu+F,GAAO0xB,EAAEC,EAAOlwH,EAAIu+F,GAAO/yF,CAE5C,CACF,EAGI2kH,GAAQ,SAAezlI,EAAGnF,EAAGya,GAE/B,IADA,IAAIpa,EAAI,IAAIkB,MAAMkZ,EAAIA,GACb/b,EAAI,EAAGA,EAAI+b,EAAG/b,IAAK,CAC1B,IAAK,IAAIiH,EAAI,EAAGA,EAAI8U,EAAG9U,IACrBtF,EAAE3B,EAAI+b,EAAI9U,GAAK,EAEjB,IAAK,IAAIJ,EAAI,EAAGA,EAAIkV,EAAGlV,IACrB,IAAK,IAAIsuH,EAAK,EAAGA,EAAKp5G,EAAGo5G,IACvBxzH,EAAE3B,EAAI+b,EAAIo5G,IAAO1uH,EAAEzG,EAAI+b,EAAIlV,GAAKvF,EAAEuF,EAAIkV,EAAIo5G,EAGhD,CACA,OAAOxzH,CACT,EACI6pG,GAAS,SAAgBwgC,EAAGjwH,EAAG2vH,GAEjC,IADA,IAAIS,EAAKH,EAAE7tI,MAAM,GACR07C,EAAI,EAAGA,EAAI6xF,EAAc7xF,IAChCmyF,EAAIE,GAAMF,EAAGG,EAAIpwH,GAEnB,OAAOiwH,CACT,EACII,GAAU,SAAiBJ,EAAGjwH,EAAG4vH,GAInC,IAHA,IAAIQ,EAAK,IAAItpI,MAAMkZ,EAAIA,GAGd/b,EAAI,EAAGA,EAAI+b,EAAIA,EAAG/b,IACzBmsI,EAAGnsI,GAAKmC,KAAK4iB,IAAIinH,EAAEhsI,GAAI2rI,GAGzB,OADAzwH,GAAUixH,EAAIpwH,GACPowH,CACT,EACIE,GAAe,SAAsBL,EAAGG,EAAIG,EAAIC,GAElD,IAAK,IAAIvsI,EAAI,EAAGA,EAAIssI,EAAItsI,IAAK,CAC3B,IAAIwsI,EAAKrqI,KAAKugF,MAAMspD,EAAEhsI,GAAKmC,KAAK4iB,IAAI,GAAIwnH,IAAgBpqI,KAAK4iB,IAAI,GAAIwnH,GACjEE,EAAKtqI,KAAKugF,MAAMypD,EAAGnsI,GAAKmC,KAAK4iB,IAAI,GAAIwnH,IAAgBpqI,KAAK4iB,IAAI,GAAIwnH,GACtE,GAAIC,IAAOC,EACT,OAAO,CAEX,CACA,OAAO,CACT,EACIC,GAAW,SAAgBV,EAAGjwH,EAAG++D,EAAO3vD,GAE1C,IADA,IAAIwhH,EAAW,GACN3sI,EAAI,EAAGA,EAAI+b,EAAG/b,IAAK,CAE1B,IADA,IAAI4sI,EAAU,GACL3lI,EAAI,EAAGA,EAAI8U,EAAG9U,IAEjB9E,KAAKugF,MAAqB,IAAfspD,EAAEhsI,EAAI+b,EAAI9U,IAAa,IAAO,GAC3C2lI,EAAQ3sI,KAAK66E,EAAM7zE,IAGA,IAAnB2lI,EAAQ5uI,QACV2uI,EAAS1sI,KAAKkrB,EAAGixD,WAAWwwD,GAEhC,CACA,OAAOD,CACT,EACIE,GAAc,SAAqBC,EAAIC,GACzC,IAAK,IAAI/sI,EAAI,EAAGA,EAAI8sI,EAAG9uI,OAAQgC,IAC7B,IAAK+sI,EAAG/sI,IAAM8sI,EAAG9sI,GAAGwF,OAASunI,EAAG/sI,GAAGwF,KACjC,OAAO,EAGX,OAAO,CACT,EACIwnI,GAAmB,SAA0BL,GAC/C,IAAK,IAAI3sI,EAAI,EAAGA,EAAI2sI,EAAS3uI,OAAQgC,IACnC,IAAK,IAAIiH,EAAI,EAAGA,EAAI0lI,EAAS3uI,OAAQiJ,IAC/BjH,GAAKiH,GAAK4lI,GAAYF,EAAS3sI,GAAI2sI,EAAS1lI,KAC9C0lI,EAAS13G,OAAOhuB,EAAG,GAIzB,OAAO0lI,CACT,EACIM,GAAmB,SAA0BtxI,GAU/C,IATA,IAAIm/E,EAAQ9+E,KAAK8+E,QACbqB,EAAQngF,KAAKmgF,QACbhxD,EAAKnvB,KAAKmvB,KAGVg1E,EAAO0rC,GAAalwI,GAGpBuxI,EAAc,CAAC,EACVltI,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAChCktI,EAAYpyD,EAAM96E,GAAGwF,MAAQxF,EAQ/B,IAJA,IAGEmsI,EAHEpwH,EAAI++D,EAAM98E,OACZsuI,EAAKvwH,EAAIA,EACPiwH,EAAI,IAAInpI,MAAMypI,GAET1gI,EAAK,EAAGA,EAAK0gI,EAAI1gI,IACxBogI,EAAEpgI,GAAM,EAEV,IAAK,IAAI3J,EAAI,EAAGA,EAAIk6E,EAAMn+E,OAAQiE,IAAK,CACrC,IAAI06E,EAAOR,EAAMl6E,GACbkuH,EAAM+c,EAAYvwD,EAAKj8E,SAAS8E,MAChCyB,EAAIimI,EAAYvwD,EAAKj7E,SAAS8D,MAC9B2nI,EAAMrB,GAAgBnvD,EAAMwjB,EAAKvpC,YACrCo1E,EAAE7b,EAAMp0G,EAAI9U,IAAMkmI,EAClBnB,EAAE/kI,EAAI8U,EAAIo0G,IAAQgd,CACpB,CAKApB,GAASC,EAAGjwH,EAAGokF,EAAKyrC,YAGpB1wH,GAAU8wH,EAAGjwH,GACb,IAAIqxH,GAAgB,EAChBhiD,EAAa,EACjB,MAAOgiD,GAAiBhiD,EAAa+U,EAAKqD,cACxC4pC,GAAgB,EAGhBjB,EAAK3gC,GAAOwgC,EAAGjwH,EAAGokF,EAAKurC,cAGvBM,EAAII,GAAQD,EAAIpwH,EAAGokF,EAAKwrC,eAGnBU,GAAaL,EAAGG,EAAIG,EAAI,KAC3Bc,GAAgB,GAElBhiD,IAIF,IAAIuhD,EAAWD,GAASV,EAAGjwH,EAAG++D,EAAO3vD,GAIrC,OADAwhH,EAAWK,GAAiBL,GACrBA,CACT,EACIU,GAAqB,CACvBJ,iBAAkBA,GAClBK,IAAKL,IAIHM,GAAW,SAAkBzxH,GAC/B,OAAOA,CACT,EACI0xH,GAAU,SAAiB3zF,EAAGomE,GAChC,OAAO99G,KAAK6iB,IAAIi7F,EAAIpmE,EACtB,EACI4zF,GAAa,SAAoBvlH,EAAO2xB,EAAGomE,GAC7C,OAAO/3F,EAAQslH,GAAQ3zF,EAAGomE,EAC5B,EACIytB,GAAiB,SAAwBxlH,EAAO2xB,EAAGomE,GACrD,OAAO/3F,EAAQ/lB,KAAK4iB,IAAIk7F,EAAIpmE,EAAG,EACjC,EACI/0B,GAAO,SAAchJ,GACvB,OAAO3Z,KAAK2iB,KAAKhJ,EACnB,EACI6xH,GAAa,SAAoBC,EAAY/zF,EAAGomE,GAClD,OAAO99G,KAAKwI,IAAIijI,EAAYJ,GAAQ3zF,EAAGomE,GACzC,EACI4tB,GAAc,SAAqB7vI,EAAQ8vI,EAAMC,EAAMr6E,EAAM47D,GAI/D,IAHA,IAEIz1E,EAAGomE,EAFH+tB,EAAOjvI,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAKwuI,GAC3Ez8D,EAAMpd,EAEDu6E,EAAM,EAAGA,EAAMjwI,EAAQiwI,IAC9Bp0F,EAAIi0F,EAAKG,GACThuB,EAAI8tB,EAAKE,GACTn9D,EAAMw+C,EAAMx+C,EAAKj3B,EAAGomE,GAEtB,OAAO+tB,EAAKl9D,EACd,EACIo9D,GAAY,CACdC,UAAW,SAAmBnwI,EAAQ8vI,EAAMC,GAC1C,OAAI/vI,GAAU,EACL6vI,GAAY7vI,EAAQ8vI,EAAMC,EAAM,EAAGL,GAAgB5oH,IAGnD+oH,GAAY7vI,EAAQ8vI,EAAMC,EAAM,EAAGN,GAE9C,EACAW,iBAAkB,SAA0BpwI,EAAQ8vI,EAAMC,GACxD,OAAOF,GAAY7vI,EAAQ8vI,EAAMC,EAAM,EAAGL,GAC5C,EACAW,UAAW,SAAmBrwI,EAAQ8vI,EAAMC,GAC1C,OAAOF,GAAY7vI,EAAQ8vI,EAAMC,EAAM,EAAGN,GAC5C,EACA9iI,IAAK,SAAa3M,EAAQ8vI,EAAMC,GAC9B,OAAOF,GAAY7vI,EAAQ8vI,EAAMC,GAAOl/C,IAAU8+C,GACpD,GAMF,SAASW,GAAoBl1H,EAAQpb,EAAQ8vI,EAAMC,EAAMQ,EAAOC,GAC9D,IAAI5xD,EAMJ,OAJEA,EADEohC,EAAK5kG,GACAA,EAEA80H,GAAU90H,IAAW80H,GAAUC,UAEzB,IAAXnwI,GAAgBggH,EAAK5kG,GAChBwjE,EAAK2xD,EAAOC,GAEZ5xD,EAAK5+E,EAAQ8vI,EAAMC,EAAMQ,EAAOC,EAE3C,CAdAN,GAAU,qBAAuBA,GAAU,oBAC3CA,GAAU,oBAAsBA,GAAU,oBAe1C,IAAIO,GAAaniB,GAAW,CAC1BzlH,EAAG,EACH2O,EAAG,EACHk5H,qBAAsB,KACtB1lH,SAAU,YACVw6E,cAAe,GACf5sC,WAAY,GACZ+3E,UAAU,EACVC,cAAe,OAEbC,GAAe,SAAoBlzI,GACrC,OAAO8yI,GAAW9yI,EACpB,EAEIs1H,GAAU,SAAiBzwH,EAAM42E,EAAM03D,EAAUl4E,EAAY5sD,GAC/D,IAAI+kI,EAAmB,aAAT/kI,EACV8jI,EAAOiB,EAAU,SAAU/uI,GAC7B,OAAO8uI,EAAS9uI,EAClB,EAAI,SAAUA,GACZ,OAAO42D,EAAW52D,GAAG8uI,EACvB,EACIf,EAAO,SAAc/tI,GACvB,OAAO42D,EAAW52D,GAAGo3E,EACvB,EACIm3D,EAAQO,EACRN,EAAQp3D,EACZ,OAAOk3D,GAAmB9tI,EAAMo2D,EAAW54D,OAAQ8vI,EAAMC,EAAMQ,EAAOC,EACxE,EACIQ,GAAkB,SAAyBl0D,EAAOj0E,EAAG+vD,GAQvD,IAPA,IAAIq4E,EAAOr4E,EAAW54D,OAClB4M,EAAM,IAAI/H,MAAMosI,GAChBtkI,EAAM,IAAI9H,MAAMosI,GAChBC,EAAY,IAAIrsI,MAAMgE,GACtBioI,EAAW,KAGN9uI,EAAI,EAAGA,EAAIivI,EAAMjvI,IACxB4K,EAAI5K,GAAK86E,EAAMlwE,IAAIgsD,EAAW52D,IAAIlC,MAClC6M,EAAI3K,GAAK86E,EAAMnwE,IAAIisD,EAAW52D,IAAIlC,MAIpC,IAAK,IAAIe,EAAI,EAAGA,EAAIgI,EAAGhI,IAAK,CAC1BiwI,EAAW,GACX,IAAK,IAAIljI,EAAK,EAAGA,EAAKqjI,EAAMrjI,IAC1BkjI,EAASljI,GAAMzJ,KAAKgJ,UAAYR,EAAIiB,GAAMhB,EAAIgB,IAAOhB,EAAIgB,GAG3DsjI,EAAUrwI,GAAKiwI,CACjB,CACA,OAAOI,CACT,EACIC,GAAW,SAAkB/3D,EAAM83D,EAAWlmH,EAAU4tC,EAAYp2D,GAGtE,IAFA,IAAIoK,EAAMikF,IACN5wF,EAAQ,EACH+B,EAAI,EAAGA,EAAIkvI,EAAUlxI,OAAQgC,IAAK,CACzC,IAAIimF,EAAOgrC,GAAQjoG,EAAUouD,EAAM83D,EAAUlvI,GAAI42D,EAAYp2D,GACzDylF,EAAOr7E,IACTA,EAAMq7E,EACNhoF,EAAQ+B,EAEZ,CACA,OAAO/B,CACT,EACImxI,GAAe,SAAsBN,EAAUh0D,EAAOu0D,GAGxD,IAFA,IAAIzC,EAAU,GACVx1D,EAAO,KACFr7D,EAAI,EAAGA,EAAI++D,EAAM98E,OAAQ+d,IAChCq7D,EAAO0D,EAAM/+D,GACTszH,EAAWj4D,EAAK5xE,QAAUspI,GAE5BlC,EAAQ3sI,KAAKm3E,GAGjB,OAAOw1D,CACT,EACI0C,GAAsB,SAA6B9C,EAAIC,EAAIiC,GAC7D,OAAOvsI,KAAK6iB,IAAIynH,EAAKD,IAAOkC,CAC9B,EACIa,GAAwB,SAA+B/C,EAAIC,EAAIiC,GACjE,IAAK,IAAI1uI,EAAI,EAAGA,EAAIwsI,EAAGxuI,OAAQgC,IAC7B,IAAK,IAAIiH,EAAI,EAAGA,EAAIulI,EAAGxsI,GAAGhC,OAAQiJ,IAAK,CACrC,IAAI2hG,EAAOzmG,KAAK6iB,IAAIwnH,EAAGxsI,GAAGiH,GAAKwlI,EAAGzsI,GAAGiH,IACrC,GAAI2hG,EAAO8lC,EACT,OAAO,CAEX,CAEF,OAAO,CACT,EACIc,GAAa,SAAoBp4D,EAAMq4D,EAAS1zH,GAClD,IAAK,IAAI/b,EAAI,EAAGA,EAAI+b,EAAG/b,IACrB,GAAIo3E,IAASq4D,EAAQzvI,GAAI,OAAO,EAElC,OAAO,CACT,EACI0vI,GAAgB,SAAuB50D,EAAOj0E,GAChD,IAAI4oI,EAAU,IAAI5sI,MAAMgE,GAIxB,GAAIi0E,EAAM98E,OAAS,GAEjB,IAAK,IAAIgC,EAAI,EAAGA,EAAI6G,EAAG7G,IAAK,CAC1B,IAAIo3E,EAAO0D,EAAM34E,KAAK2I,MAAM3I,KAAKgJ,SAAW2vE,EAAM98E,SAIlD,MAAOwxI,GAAWp4D,EAAMq4D,EAASzvI,GAC/Bo3E,EAAO0D,EAAM34E,KAAK2I,MAAM3I,KAAKgJ,SAAW2vE,EAAM98E,SAEhDyxI,EAAQzvI,GAAKo3E,CACf,MAGA,IAAK,IAAI+4C,EAAM,EAAGA,EAAMtpH,EAAGspH,IACzBsf,EAAQtf,GAAOr1C,EAAM34E,KAAK2I,MAAM3I,KAAKgJ,SAAW2vE,EAAM98E,SAG1D,OAAOyxI,CACT,EACIE,GAAW,SAAkBC,EAAoBhD,EAASh2E,GAE5D,IADA,IAAIi5E,EAAO,EACF9zH,EAAI,EAAGA,EAAI6wH,EAAQ5uI,OAAQ+d,IAClC8zH,GAAQ5e,GAAQ,YAAa2b,EAAQ7wH,GAAI6zH,EAAoBh5E,EAAY,YAE3E,OAAOi5E,CACT,EACIC,GAAS,SAAgBn0I,GAC3B,IAUIuzI,EAVA/jH,EAAKnvB,KAAKmvB,KACV2vD,EAAQ9+E,KAAK8+E,QACb1D,EAAO,KAGP+oB,EAAO0uC,GAAalzI,GAGpBgxI,EAAW,IAAI9pI,MAAMs9F,EAAKt5F,GAC1BwoI,EAAa,CAAC,EAIdlvC,EAAKwuC,SAC2B,kBAAvBxuC,EAAKyuC,eAEdzuC,EAAKyuC,cACLM,EAAYF,GAAgBl0D,EAAOqlB,EAAKt5F,EAAGs5F,EAAKvpC,aAEhDs4E,EADyC,WAAhCx9D,EAAQyuB,EAAKyuC,eACVzuC,EAAKyuC,cAELI,GAAgBl0D,EAAOqlB,EAAKt5F,EAAGs5F,EAAKvpC,YAGlDs4E,EAAYF,GAAgBl0D,EAAOqlB,EAAKt5F,EAAGs5F,EAAKvpC,YAElD,IAAIw2E,GAAgB,EAChBhiD,EAAa,EACjB,MAAOgiD,GAAiBhiD,EAAa+U,EAAKqD,cAAe,CAEvD,IAAK,IAAIznF,EAAI,EAAGA,EAAI++D,EAAM98E,OAAQ+d,IAChCq7D,EAAO0D,EAAM/+D,GAEbszH,EAAWj4D,EAAK5xE,MAAQ2pI,GAAS/3D,EAAM83D,EAAW/uC,EAAKn3E,SAAUm3E,EAAKvpC,WAAY,UAIpFw2E,GAAgB,EAChB,IAAK,IAAIvuI,EAAI,EAAGA,EAAIshG,EAAKt5F,EAAGhI,IAAK,CAE/B,IAAI+tI,EAAUwC,GAAavwI,EAAGi8E,EAAOu0D,GACrC,GAAuB,IAAnBzC,EAAQ5uI,OAAZ,CAUA,IAJA,IAAIixI,EAAO9uC,EAAKvpC,WAAW54D,OACvB8wI,EAAWI,EAAUrwI,GACrBkxI,EAAc,IAAIltI,MAAMosI,GACxB1nH,EAAM,IAAI1kB,MAAMosI,GACX/lH,EAAI,EAAGA,EAAI+lH,EAAM/lH,IAAK,CAC7B3B,EAAI2B,GAAK,EACT,IAAK,IAAIlpB,EAAI,EAAGA,EAAI4sI,EAAQ5uI,OAAQgC,IAClCo3E,EAAOw1D,EAAQ5sI,GACfunB,EAAI2B,IAAMi3E,EAAKvpC,WAAW1tC,GAAGkuD,GAE/B24D,EAAY7mH,GAAK3B,EAAI2B,GAAK0jH,EAAQ5uI,OAG7BsxI,GAAoBS,EAAY7mH,GAAI4lH,EAAS5lH,GAAIi3E,EAAKuuC,wBACzDtB,GAAgB,EAEpB,CACA8B,EAAUrwI,GAAKkxI,EACfpD,EAAS9tI,GAAKssB,EAAGixD,WAAWwwD,EArB5B,CAsBF,CACAxhD,GACF,CACA,OAAOuhD,CACT,EACIqD,GAAW,SAAkBr0I,GAC/B,IAOI8zI,EAEAQ,EATA9kH,EAAKnvB,KAAKmvB,KACV2vD,EAAQ9+E,KAAK8+E,QACb1D,EAAO,KACP+oB,EAAO0uC,GAAalzI,GAGpBgxI,EAAW,IAAI9pI,MAAMs9F,EAAKt5F,GAE1BwoI,EAAa,CAAC,EAEda,EAAW,IAAIrtI,MAAMs9F,EAAKt5F,GAG1Bs5F,EAAKwuC,SAC2B,kBAAvBxuC,EAAKyuC,gBACda,EADqF,WAAhC/9D,EAAQyuB,EAAKyuC,eACxDzuC,EAAKyuC,cAELc,GAAc50D,EAAOqlB,EAAKt5F,IAGtC4oI,EAAUC,GAAc50D,EAAOqlB,EAAKt5F,GAEtC,IAAIumI,GAAgB,EAChBhiD,EAAa,EACjB,MAAOgiD,GAAiBhiD,EAAa+U,EAAKqD,cAAe,CAEvD,IAAK,IAAIznF,EAAI,EAAGA,EAAI++D,EAAM98E,OAAQ+d,IAChCq7D,EAAO0D,EAAM/+D,GAEbszH,EAAWj4D,EAAK5xE,MAAQ2pI,GAAS/3D,EAAMq4D,EAAStvC,EAAKn3E,SAAUm3E,EAAKvpC,WAAY,YAElFw2E,GAAgB,EAGhB,IAAK,IAAI53H,EAAI,EAAGA,EAAIi6H,EAAQzxI,OAAQwX,IAAK,CAEvC,IAAIo3H,EAAUwC,GAAa55H,EAAGslE,EAAOu0D,GACrC,GAAuB,IAAnBzC,EAAQ5uI,OAAZ,CAIAkyI,EAAS16H,GAAKm6H,GAASF,EAAQj6H,GAAIo3H,EAASzsC,EAAKvpC,YAGjD,IAAK,IAAIwmD,EAAK,EAAGA,EAAKwvB,EAAQ5uI,OAAQo/G,IACpC6yB,EAAUN,GAAS/C,EAAQxvB,GAAKwvB,EAASzsC,EAAKvpC,YAC1Cq5E,EAAUC,EAAS16H,KACrB06H,EAAS16H,GAAKy6H,EACdR,EAAQj6H,GAAKo3H,EAAQxvB,GACrBgwB,GAAgB,GAGpBT,EAASn3H,GAAK2V,EAAGixD,WAAWwwD,EAZ5B,CAaF,CACAxhD,GACF,CACA,OAAOuhD,CACT,EACIwD,GAAkB,SAAyBjB,EAAWp0D,EAAO/4E,EAAGy7F,EAAQ2C,GAE1E,IADA,IAAIiwC,EAAWhqG,EACNrqB,EAAI,EAAGA,EAAI++D,EAAM98E,OAAQ+d,IAChC,IAAK,IAAIld,EAAI,EAAGA,EAAIqwI,EAAUlxI,OAAQa,IACpC2+F,EAAOzhF,GAAGld,GAAKsD,KAAK4iB,IAAIhjB,EAAEga,GAAGld,GAAIshG,EAAK3qF,GAG1C,IAAK,IAAIo9C,EAAK,EAAGA,EAAKs8E,EAAUlxI,OAAQ40D,IACtC,IAAK,IAAIq7E,EAAM,EAAGA,EAAM9tC,EAAKvpC,WAAW54D,OAAQiwI,IAAO,CACrDmC,EAAY,EACZhqG,EAAc,EACd,IAAK,IAAIghG,EAAM,EAAGA,EAAMtsD,EAAM98E,OAAQopI,IACpCgJ,GAAa5yC,EAAO4pC,GAAKx0E,GAAMutC,EAAKvpC,WAAWq3E,GAAKnzD,EAAMssD,IAC1DhhG,GAAeo3D,EAAO4pC,GAAKx0E,GAE7Bs8E,EAAUt8E,GAAIq7E,GAAOmC,EAAYhqG,CACnC,CAEJ,EACIiqG,GAAmB,SAA0BtuI,EAAGuuI,EAAIpB,EAAWp0D,EAAOqlB,GAExE,IAAK,IAAIngG,EAAI,EAAGA,EAAI+B,EAAE/D,OAAQgC,IAC5BswI,EAAGtwI,GAAK+B,EAAE/B,GAAG7B,QAIf,IAFA,IAAIopB,EAAK6oH,EAAWhqG,EAChBrhB,EAAM,GAAKo7E,EAAK3qF,EAAI,GACf3W,EAAI,EAAGA,EAAIqwI,EAAUlxI,OAAQa,IACpC,IAAK,IAAIkd,EAAI,EAAGA,EAAI++D,EAAM98E,OAAQ+d,IAAK,CACrCwL,EAAM,EACN,IAAK,IAAI1gB,EAAI,EAAGA,EAAIqoI,EAAUlxI,OAAQ6I,IAEpCupI,EAAYnf,GAAQ9wB,EAAKn3E,SAAU8xD,EAAM/+D,GAAImzH,EAAUrwI,GAAIshG,EAAKvpC,WAAY,UAC5ExwB,EAAc6qF,GAAQ9wB,EAAKn3E,SAAU8xD,EAAM/+D,GAAImzH,EAAUroI,GAAIs5F,EAAKvpC,WAAY,UAC9ErvC,GAAOplB,KAAK4iB,IAAIqrH,EAAYhqG,EAAarhB,GAE3ChjB,EAAEga,GAAGld,GAAK,EAAI0oB,CAChB,CAEJ,EACIgpH,GAAW,SAAgBz1D,EAAO/4E,EAAGo+F,EAAMh1E,GAE7C,IADA,IAIIxgB,EACA1M,EALA0uI,EAAW,IAAI9pI,MAAMs9F,EAAKt5F,GACrBhI,EAAI,EAAGA,EAAI8tI,EAAS3uI,OAAQa,IACnC8tI,EAAS9tI,GAAK,GAIhB,IAAK,IAAIkd,EAAI,EAAGA,EAAIha,EAAE/D,OAAQ+d,IAAK,CAEjCpR,GAAOkkF,IACP5wF,GAAS,EAET,IAAK,IAAIuyI,EAAM,EAAGA,EAAMzuI,EAAE,GAAG/D,OAAQwyI,IAC/BzuI,EAAEga,GAAGy0H,GAAO7lI,IACdA,EAAM5I,EAAEga,GAAGy0H,GACXvyI,EAAQuyI,GAGZ7D,EAAS1uI,GAAOgC,KAAK66E,EAAM/+D,GAC7B,CAGA,IAAK,IAAI00H,EAAM,EAAGA,EAAM9D,EAAS3uI,OAAQyyI,IACvC9D,EAAS8D,GAAOtlH,EAAGixD,WAAWuwD,EAAS8D,IAEzC,OAAO9D,CACT,EACI+D,GAAc,SAAqB/0I,GACrC,IAKIgxI,EACAuC,EACAntI,EACAuuI,EACA9yC,EATAryE,EAAKnvB,KAAKmvB,KACV2vD,EAAQ9+E,KAAK8+E,QACbqlB,EAAO0uC,GAAalzI,GAUxB20I,EAAK,IAAIztI,MAAMi4E,EAAM98E,QACrB,IAAK,IAAIgC,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAEhCswI,EAAGtwI,GAAK,IAAI6C,MAAMs9F,EAAKt5F,GAEzB9E,EAAI,IAAIc,MAAMi4E,EAAM98E,QACpB,IAAK,IAAIs7H,EAAM,EAAGA,EAAMx+C,EAAM98E,OAAQs7H,IAEpCv3H,EAAEu3H,GAAO,IAAIz2H,MAAMs9F,EAAKt5F,GAE1B,IAAK,IAAI2yH,EAAM,EAAGA,EAAM1+C,EAAM98E,OAAQw7H,IAAO,CAE3C,IADA,IAAItxG,EAAQ,EACHjhB,EAAI,EAAGA,EAAIk5F,EAAKt5F,EAAGI,IAC1BlF,EAAEy3H,GAAKvyH,GAAK9E,KAAKgJ,SACjB+c,GAASnmB,EAAEy3H,GAAKvyH,GAElB,IAAK,IAAIkuH,EAAK,EAAGA,EAAKh1B,EAAKt5F,EAAGsuH,IAC5BpzH,EAAEy3H,GAAKrE,GAAMpzH,EAAEy3H,GAAKrE,GAAMjtG,CAE9B,CACAgnH,EAAY,IAAIrsI,MAAMs9F,EAAKt5F,GAC3B,IAAK,IAAIkzH,EAAM,EAAGA,EAAM55B,EAAKt5F,EAAGkzH,IAC9BmV,EAAUnV,GAAO,IAAIl3H,MAAMs9F,EAAKvpC,WAAW54D,QAE7Cw/F,EAAS,IAAI36F,MAAMi4E,EAAM98E,QACzB,IAAK,IAAIioI,EAAM,EAAGA,EAAMnrD,EAAM98E,OAAQioI,IAEpCzoC,EAAOyoC,GAAO,IAAIpjI,MAAMs9F,EAAKt5F,GAI/B,IAAIumI,GAAgB,EAChBhiD,EAAa,EACjB,MAAOgiD,GAAiBhiD,EAAa+U,EAAKqD,cACxC4pC,GAAgB,EAGhB+C,GAAgBjB,EAAWp0D,EAAO/4E,EAAGy7F,EAAQ2C,GAG7CkwC,GAAiBtuI,EAAGuuI,EAAIpB,EAAWp0D,EAAOqlB,GAGrCovC,GAAsBxtI,EAAGuuI,EAAInwC,EAAKuuC,wBACrCtB,GAAgB,GAElBhiD,IAKF,OADAuhD,EAAW4D,GAASz1D,EAAO/4E,EAAGo+F,EAAMh1E,GAC7B,CACLwhH,SAAUA,EACVgE,mBAAoB5uI,EAExB,EACI6uI,GAAc,CAChBd,OAAQA,GACRE,SAAUA,GACVU,YAAaA,GACbG,IAAKH,IAIHI,GAAaxkB,GAAW,CAC1BtjG,SAAU,YAEV+nH,QAAS,MAET/mI,KAAM,YAENw+E,UAAWqG,IAGXmiD,eAAe,EAEfC,gBAAiB,EAEjBr6E,WAAY,KAGVs6E,GAAiB,CACnB,OAAU,MACV,SAAY,OAEVC,GAAe,SAAoBx1I,GACrC,IAAIwkG,EAAO2wC,GAAWn1I,GAClBy1I,EAAiBF,GAAe/wC,EAAK4wC,SAIzC,OAHsB,MAAlBK,IACFjxC,EAAK4wC,QAAUK,GAEVjxC,CACT,EACIkxC,GAAe,SAAsB1E,EAAU1uI,EAAOqzI,EAAOC,EAAMpxC,GAarE,IAXA,IAEIla,EAFAurD,EAAS,EACT5mI,EAAMikF,IAEN77B,EAAQmtC,EAAKvpC,WACbq6D,EAAU,SAAiBwgB,EAAInF,GACjC,OAAOgC,GAAmBnuC,EAAKn3E,SAAUgqC,EAAMh1D,QAAQ,SAAUgC,GAC/D,OAAOgzD,EAAMhzD,GAAGyxI,EAClB,IAAG,SAAUzxI,GACX,OAAOgzD,EAAMhzD,GAAGssI,EAClB,GAAGmF,EAAInF,EACT,EACStsI,EAAI,EAAGA,EAAI2sI,EAAS3uI,OAAQgC,IAAK,CACxC,IAAIH,EAAM8sI,EAAS3sI,GAAGH,IAClB6xI,EAAQJ,EAAMzxI,GAAK0xI,EAAK1xI,IACxB6xI,EAAQ9mI,IACV4mI,EAAS3xI,EACT+K,EAAM8mI,EAEV,CACA,GAAkB,cAAdvxC,EAAKn2F,MAAwBY,GAAOu1F,EAAK3X,WAA2B,eAAd2X,EAAKn2F,MAA6C,IAApB2iI,EAAS3uI,OAC/F,OAAO,EAET,IAEI6zD,EAFAi7E,EAAK7uI,EAAMuzI,GACXzE,EAAK9uI,EAAMszI,EAAKC,IAKlB3/E,EADgB,eAAdsuC,EAAKn2F,KACE,CACPqiC,KAAMygG,EACNxgG,MAAOygG,EACPltI,IAAKitI,EAAGjtI,KAGD,CACP/B,MAAOgvI,EAAGhvI,MAAMb,OAAO8vI,EAAGjvI,OAC1B+B,IAAKitI,EAAGjtI,KAGZ8sI,EAASG,EAAG7uI,OAAS4zD,EACrB86E,EAAS13G,OAAO83G,EAAG9uI,MAAO,GAC1BA,EAAM6uI,EAAGjtI,KAAOgyD,EAGhB,IAAK,IAAIjmD,EAAK,EAAGA,EAAK+gI,EAAS3uI,OAAQ4N,IAAM,CAC3C,IAAI4jF,EAAMm9C,EAAS/gI,GACfkhI,EAAGjtI,MAAQ2vF,EAAI3vF,IACjBomF,EAAO4I,IACmB,QAAjBsR,EAAK4wC,SACd9qD,EAAOqrD,EAAMxE,EAAGjtI,KAAK2vF,EAAI3vF,KACrByxI,EAAMxE,EAAGjtI,KAAK2vF,EAAI3vF,KAAOyxI,EAAMvE,EAAGltI,KAAK2vF,EAAI3vF,OAC7ComF,EAAOqrD,EAAMvE,EAAGltI,KAAK2vF,EAAI3vF,OAED,QAAjBsgG,EAAK4wC,SACd9qD,EAAOqrD,EAAMxE,EAAGjtI,KAAK2vF,EAAI3vF,KACrByxI,EAAMxE,EAAGjtI,KAAK2vF,EAAI3vF,KAAOyxI,EAAMvE,EAAGltI,KAAK2vF,EAAI3vF,OAC7ComF,EAAOqrD,EAAMvE,EAAGltI,KAAK2vF,EAAI3vF,OAG3BomF,EAD0B,SAAjBka,EAAK4wC,SACNO,EAAMxE,EAAGjtI,KAAK2vF,EAAI3vF,KAAOitI,EAAGxnD,KAAOgsD,EAAMvE,EAAGltI,KAAK2vF,EAAI3vF,KAAOktI,EAAGznD,OAASwnD,EAAGxnD,KAAOynD,EAAGznD,MAE3E,eAAd6a,EAAKn2F,KAA8BinH,EAAQzhC,EAAI1xF,MAAOgvI,EAAGhvI,OAAmBmzH,EAAQzhC,EAAI1xF,MAAM,GAAIgvI,EAAGhvI,MAAM,IAEjHwzI,EAAMxE,EAAGjtI,KAAK2vF,EAAI3vF,KAAOyxI,EAAM9hD,EAAI3vF,KAAKitI,EAAGjtI,KAAOomF,CACpD,CAGA,IAAK,IAAIkqC,EAAM,EAAGA,EAAMwc,EAAS3uI,OAAQmyH,IAAO,CAC9C,IAAIwhB,EAAOhF,EAASxc,GAAKtwH,IACzB,GAAI0xI,EAAKI,KAAU7E,EAAGjtI,KAAO0xI,EAAKI,KAAU5E,EAAGltI,IAAK,CAElD,IADA,IAAIglI,EAAO8M,EACF1qI,EAAI,EAAGA,EAAI0lI,EAAS3uI,OAAQiJ,IAAK,CACxC,IAAI2qI,EAAOjF,EAAS1lI,GAAGpH,IACnByxI,EAAMK,GAAMC,GAAQN,EAAMK,GAAM9M,KAClCA,EAAO+M,EAEX,CACAL,EAAKI,GAAQ9M,CACf,CACA8H,EAASxc,GAAKlyH,MAAQkyH,CACxB,CAIA,OADA2c,EAAGjtI,IAAMktI,EAAGltI,IAAMitI,EAAG7uI,MAAQ8uI,EAAG9uI,MAAQ,MACjC,CACT,EACI4zI,GAAiB,SAASA,EAAe39G,EAAMo8C,EAAKnlD,GACjD+I,IACDA,EAAKp2B,MACPwyE,EAAIrwE,KAAKi0B,EAAKp2B,QAEVo2B,EAAKmY,MAAMwlG,EAAe39G,EAAKmY,KAAMikC,GACrCp8C,EAAKoY,OAAOulG,EAAe39G,EAAKoY,MAAOgkC,IAE/C,EACIwhE,GAAkB,SAASA,EAAgB59G,EAAM/I,GACnD,IAAK+I,EAAM,MAAO,GAClB,GAAIA,EAAKmY,MAAQnY,EAAKoY,MAAO,CAC3B,IAAIylG,EAAUD,EAAgB59G,EAAKmY,KAAMlhB,GACrC6mH,EAAWF,EAAgB59G,EAAKoY,MAAOnhB,GACvCisD,EAAOjsD,EAAG5uB,IAAI,CAChB26C,MAAO,QACPj8B,KAAM,CACJzV,GAAIusI,EAAU,IAAMC,KAiBxB,OAdA7mH,EAAG5uB,IAAI,CACL26C,MAAO,QACPj8B,KAAM,CACJva,OAAQqxI,EACRrwI,OAAQ01E,EAAK5xE,QAGjB2lB,EAAG5uB,IAAI,CACL26C,MAAO,QACPj8B,KAAM,CACJva,OAAQsxI,EACRtwI,OAAQ01E,EAAK5xE,QAGV4xE,EAAK5xE,IACd,CAAO,OAAI0uB,EAAKp2B,MACPo2B,EAAKp2B,MAAM0H,UADb,CAGT,EACIysI,GAAwB,SAASA,EAAsB/9G,EAAMrtB,EAAGskB,GAClE,IAAK+I,EAAM,MAAO,GAClB,IAAImY,EAAO,GACTC,EAAQ,GACR4lG,EAAS,GACX,OAAU,IAANrrI,GAEEqtB,EAAKmY,MAAMwlG,GAAe39G,EAAKmY,KAAMA,GACrCnY,EAAKoY,OAAOulG,GAAe39G,EAAKoY,MAAOA,GAC3C4lG,EAAS7lG,EAAKpvC,OAAOqvC,GACd,CAACnhB,EAAGixD,WAAW81D,KACP,IAANrrI,EAGLqtB,EAAKp2B,MAEA,CAACqtB,EAAGixD,WAAWloD,EAAKp2B,SAEvBo2B,EAAKmY,MAAMwlG,GAAe39G,EAAKmY,KAAMA,GACrCnY,EAAKoY,OAAOulG,GAAe39G,EAAKoY,MAAOA,GACpC,CAACnhB,EAAGixD,WAAW/vC,GAAOlhB,EAAGixD,WAAW9vC,KAGzCpY,EAAKp2B,MACA,CAACqtB,EAAGixD,WAAWloD,EAAKp2B,SAEvBo2B,EAAKmY,OAAMA,EAAO4lG,EAAsB/9G,EAAKmY,KAAMxlC,EAAI,EAAGskB,IAC1D+I,EAAKoY,QAAOA,EAAQ2lG,EAAsB/9G,EAAKoY,MAAOzlC,EAAI,EAAGskB,IAC1DkhB,EAAKpvC,OAAOqvC,GAGzB,EAEI6lG,GAAyB,SAAgCx2I,GAsB3D,IArBA,IAAIwvB,EAAKnvB,KAAKmvB,KACV2vD,EAAQ9+E,KAAK8+E,QAGbqlB,EAAOgxC,GAAax1I,GACpBq3D,EAAQmtC,EAAKvpC,WACbq6D,EAAU,SAAiBwgB,EAAInF,GACjC,OAAOgC,GAAmBnuC,EAAKn3E,SAAUgqC,EAAMh1D,QAAQ,SAAUgC,GAC/D,OAAOgzD,EAAMhzD,GAAGyxI,EAClB,IAAG,SAAUzxI,GACX,OAAOgzD,EAAMhzD,GAAGssI,EAClB,GAAGmF,EAAInF,EACT,EAGIK,EAAW,GACX2E,EAAQ,GACRC,EAAO,GACPtzI,EAAQ,GAGH8d,EAAI,EAAGA,EAAI++D,EAAM98E,OAAQ+d,IAAK,CACrC,IAAI6wH,EAAU,CACZ9uI,MAAqB,eAAdqiG,EAAKn2F,KAAwB8wE,EAAM/+D,GAAK,CAAC++D,EAAM/+D,IACtDlc,IAAKkc,EACL9d,MAAO8d,GAET4wH,EAAS5wH,GAAK6wH,EACd3uI,EAAM8d,GAAK6wH,EACX0E,EAAMv1H,GAAK,GACXw1H,EAAKx1H,GAAK,CACZ,CAGA,IAAK,IAAI/b,EAAI,EAAGA,EAAI2sI,EAAS3uI,OAAQgC,IACnC,IAAK,IAAIiH,EAAI,EAAGA,GAAKjH,EAAGiH,IAAK,CAC3B,IAAIg/E,OAAO,EAGTA,EAFgB,eAAdka,EAAKn2F,KAEAhK,IAAMiH,EAAI4nF,IAAWoiC,EAAQ0b,EAAS3sI,GAAGlC,MAAO6uI,EAAS1lI,GAAGnJ,OAE5DkC,IAAMiH,EAAI4nF,IAAWoiC,EAAQ0b,EAAS3sI,GAAGlC,MAAM,GAAI6uI,EAAS1lI,GAAGnJ,MAAM,IAE9EwzI,EAAMtxI,GAAGiH,GAAKg/E,EACdqrD,EAAMrqI,GAAGjH,GAAKimF,EACVA,EAAOqrD,EAAMtxI,GAAGuxI,EAAKvxI,MACvBuxI,EAAKvxI,GAAKiH,EAEd,CAKF,IAIImrI,EAJAvgF,EAASw/E,GAAa1E,EAAU1uI,EAAOqzI,EAAOC,EAAMpxC,GACxD,MAAOtuC,EACLA,EAASw/E,GAAa1E,EAAU1uI,EAAOqzI,EAAOC,EAAMpxC,GAmBtD,MAbkB,eAAdA,EAAKn2F,MACPooI,EAAcH,GAAsBtF,EAAS,GAAIxsC,EAAK8wC,gBAAiB9lH,GACnEg1E,EAAK6wC,eAAec,GAAgBnF,EAAS,GAAIxhH,KAIrDinH,EAAc,IAAIvvI,MAAM8pI,EAAS3uI,QACjC2uI,EAAS/lI,SAAQ,SAAUgmI,EAAS5sI,GAElC4sI,EAAQ/sI,IAAM+sI,EAAQ3uI,MAAQ,KAC9Bm0I,EAAYpyI,GAAKmrB,EAAGixD,WAAWwwD,EAAQ9uI,MACzC,KAEKs0I,CACT,EACIC,GAA2B,CAC7BF,uBAAwBA,GACxBG,IAAKH,IAIHI,GAAajmB,GAAW,CAC1BtjG,SAAU,YAEVwpH,WAAY,SAEZC,QAAS,GAETjvC,cAAe,IAEfkvC,cAAe,IAEf97E,WAAY,KAIVsgD,GAAa,SAAoBv7G,GACnC,IAAIg3I,EAAMh3I,EAAQ82I,QACd31H,EAAOnhB,EAAQ62I,WACb,IAAOG,GAAOA,EAAM,GACxB9/H,GAAM,yCAAyC5V,OAAO01I,IAExD,IAAIC,EAAa,CAAC,SAAU,OAAQ,MAAO,OAQ3C,OAPMA,EAAW7xD,MAAK,SAAU/8D,GAC9B,OAAOA,IAAMlH,CACf,KAAMqhG,EAASrhG,IACbjK,GAAM,8BAA8B5V,OAAO21I,EAAWltH,KAAI,SAAUm0B,GAClE,MAAO,IAAI58C,OAAO48C,EAAG,IACvB,IAAG/yC,KAAK,MAAO,yBAAyB7J,OAAO6f,IAE1Cy1H,GAAW52I,EACpB,EAEIk3I,GAAgB,SAAuBryI,EAAMixI,EAAInF,EAAI11E,GACvD,IAAI/jC,EAAO,SAAc9W,EAAG/b,GAC1B,OAAO42D,EAAW52D,GAAG+b,EACvB,EAGA,OAAQuyH,GAAmB9tI,EAAMo2D,EAAW54D,QAAQ,SAAUgC,GAC5D,OAAO6yB,EAAK4+G,EAAIzxI,EAClB,IAAG,SAAUA,GACX,OAAO6yB,EAAKy5G,EAAItsI,EAClB,GAAGyxI,EAAInF,EACT,EACIwG,GAAgB,SAAuB5xI,EAAGsxI,GAE5C,IAAI34F,EAAI,KAaR,OAXEA,EADiB,WAAf24F,EACEhY,GAAOt5H,GACa,SAAfsxI,EACLjY,GAAKr5H,GACe,QAAfsxI,EACL5nI,GAAI1J,GACgB,QAAfsxI,EACL7nI,GAAIzJ,GAGJsxI,EAEC34F,CACT,EACIk5F,GAAgB,SAAuBh3H,EAAGja,EAAG2E,GAE/C,IADA,IAAIusI,EAAU,GACLhzI,EAAI,EAAGA,EAAI+b,EAAG/b,IACjB8B,EAAE9B,EAAI+b,EAAI/b,GAAKyG,EAAEzG,EAAI+b,EAAI/b,GAAK,GAChCgzI,EAAQ/yI,KAAKD,GAGjB,OAAOgzI,CACT,EACIC,GAAiB,SAAwBl3H,EAAG7a,EAAGgyI,GAEjD,IADA,IAAIvG,EAAW,GACN3sI,EAAI,EAAGA,EAAI+b,EAAG/b,IAAK,CAG1B,IAFA,IAAI/B,GAAS,EACT0M,GAAOkkF,IACFskD,EAAK,EAAGA,EAAKD,EAAUl1I,OAAQm1I,IAAM,CAC5C,IAAIlxI,EAAIixI,EAAUC,GACdjyI,EAAElB,EAAI+b,EAAI9Z,GAAK0I,IACjB1M,EAAQgE,EACR0I,EAAMzJ,EAAElB,EAAI+b,EAAI9Z,GAEpB,CACIhE,EAAQ,GACV0uI,EAAS1sI,KAAKhC,EAElB,CACA,IAAK,IAAIm1I,EAAM,EAAGA,EAAMF,EAAUl1I,OAAQo1I,IACxCzG,EAASuG,EAAUE,IAAQF,EAAUE,GAEvC,OAAOzG,CACT,EACInmI,GAAS,SAAgBuV,EAAG7a,EAAGgyI,GAEjC,IADA,IAAIvG,EAAWsG,GAAel3H,EAAG7a,EAAGgyI,GAC3BC,EAAK,EAAGA,EAAKD,EAAUl1I,OAAQm1I,IAAM,CAE5C,IADA,IAAInpD,EAAK,GACAnrF,EAAI,EAAGA,EAAI8tI,EAAS3uI,OAAQa,IAC/B8tI,EAAS9tI,KAAOq0I,EAAUC,IAC5BnpD,EAAG/pF,KAAKpB,GAKZ,IAFA,IAAIw0I,GAAQ,EACRC,GAAUzkD,IACL7uF,EAAI,EAAGA,EAAIgqF,EAAGhsF,OAAQgC,IAAK,CAElC,IADA,IAAIunB,EAAM,EACDtgB,EAAI,EAAGA,EAAI+iF,EAAGhsF,OAAQiJ,IAC7BsgB,GAAOrmB,EAAE8oF,EAAG/iF,GAAK8U,EAAIiuE,EAAGhqF,IAEtBunB,EAAM+rH,IACRD,EAAOrzI,EACPszI,EAAS/rH,EAEb,CACA2rH,EAAUC,GAAMnpD,EAAGqpD,EACrB,CAEA,OADA1G,EAAWsG,GAAel3H,EAAG7a,EAAGgyI,GACzBvG,CACT,EACI4G,GAAsB,SAA6B53I,GAOrD,IANA,IAYIogB,EACAuwH,EACAprI,EACA24C,EACA/3C,EACA2E,EAjBA0kB,EAAKnvB,KAAKmvB,KACV2vD,EAAQ9+E,KAAK8+E,QACbqlB,EAAO+W,GAAWv7G,GAGlBuxI,EAAc,CAAC,EACVltI,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAChCktI,EAAYpyD,EAAM96E,GAAGwF,MAAQxF,EAY/B+b,EAAI++D,EAAM98E,OACVsuI,EAAKvwH,EAAIA,EAGT7a,EAAI,IAAI2B,MAAMypI,GACd,IAAK,IAAI1gI,EAAK,EAAGA,EAAK0gI,EAAI1gI,IACxB1K,EAAE0K,IAAOijF,IAGX,IAAK,IAAIshC,EAAM,EAAGA,EAAMp0G,EAAGo0G,IACzB,IAAK,IAAIlpH,EAAI,EAAGA,EAAI8U,EAAG9U,IACjBkpH,IAAQlpH,IACV/F,EAAEivH,EAAMp0G,EAAI9U,GAAK4rI,GAAc1yC,EAAKn3E,SAAU8xD,EAAMq1C,GAAMr1C,EAAM7zE,GAAIk5F,EAAKvpC,aAM/E/c,EAAIi5F,GAAc5xI,EAAGi/F,EAAKqyC,YAC1B,IAAK,IAAIlZ,EAAM,EAAGA,EAAMv9G,EAAGu9G,IACzBp4H,EAAEo4H,EAAMv9G,EAAIu9G,GAAOz/E,EAIrB/3C,EAAI,IAAIe,MAAMypI,GACd,IAAK,IAAI9S,EAAM,EAAGA,EAAM8S,EAAI9S,IAC1B13H,EAAE03H,GAAO,EAIX/yH,EAAI,IAAI5D,MAAMypI,GACd,IAAK,IAAIvS,EAAM,EAAGA,EAAMuS,EAAIvS,IAC1BtzH,EAAEszH,GAAO,EAKX,IAHA,IAAIyZ,EAAM,IAAI3wI,MAAMkZ,GAChB03H,EAAK,IAAI5wI,MAAMkZ,GACf23H,EAAK,IAAI7wI,MAAMkZ,GACVkqH,EAAM,EAAGA,EAAMlqH,EAAGkqH,IACzBuN,EAAIvN,GAAO,EACXwN,EAAGxN,GAAO,EACVyN,EAAGzN,GAAO,EAGZ,IADA,IAII1M,EAJAt3H,EAAI,IAAIY,MAAMkZ,EAAIokF,EAAKuyC,eAClBhL,EAAM,EAAGA,EAAMzlI,EAAEjE,OAAQ0pI,IAChCzlI,EAAEylI,GAAO,EAGX,IAAKnO,EAAO,EAAGA,EAAOp5B,EAAKqD,cAAe+1B,IAAQ,CAIhD,IAAK,IAAIoa,EAAM,EAAGA,EAAM53H,EAAG43H,IAAO,CAKhC,IAJA,IAAIhpI,GAAOkkF,IACT+kD,GAAQ/kD,IACRwkD,GAAQ,EACRQ,EAAK,EACE1e,EAAK,EAAGA,EAAKp5G,EAAGo5G,IACvBqe,EAAIre,GAAMrzH,EAAE6xI,EAAM53H,EAAIo5G,GACtB0e,EAAKptI,EAAEktI,EAAM53H,EAAIo5G,GAAMj0H,EAAEyyI,EAAM53H,EAAIo5G,GAC/B0e,GAAMlpI,GACRipI,EAAOjpI,EACPA,EAAMkpI,EACNR,EAAOle,GACE0e,EAAKD,IACdA,EAAOC,GAGX,IAAK,IAAIrM,EAAM,EAAGA,EAAMzrH,EAAGyrH,IACzB1lI,EAAE6xI,EAAM53H,EAAIyrH,IAAQ,EAAIrnC,EAAKsyC,UAAYvxI,EAAEyyI,EAAM53H,EAAIyrH,GAAO78H,GAAOw1F,EAAKsyC,QAAUe,EAAIhM,GAExF1lI,EAAE6xI,EAAM53H,EAAIs3H,IAAS,EAAIlzC,EAAKsyC,UAAYvxI,EAAEyyI,EAAM53H,EAAIs3H,GAAQO,GAAQzzC,EAAKsyC,QAAUe,EAAIH,EAC3F,CAGA,IAAK,IAAIS,EAAM,EAAGA,EAAM/3H,EAAG+3H,IAAO,CAEhC,IADA,IAAIvsH,EAAM,EACDwsH,EAAM,EAAGA,EAAMh4H,EAAGg4H,IACzBP,EAAIO,GAAOttI,EAAEstI,EAAMh4H,EAAI+3H,GACvBL,EAAGM,GAAO5xI,KAAKwI,IAAI,EAAG7I,EAAEiyI,EAAMh4H,EAAI+3H,IAClCvsH,GAAOksH,EAAGM,GAEZxsH,GAAOksH,EAAGK,GACVL,EAAGK,GAAOhyI,EAAEgyI,EAAM/3H,EAAI+3H,GACtBvsH,GAAOksH,EAAGK,GACV,IAAK,IAAIE,EAAM,EAAGA,EAAMj4H,EAAGi4H,IACzBvtI,EAAEutI,EAAMj4H,EAAI+3H,IAAQ,EAAI3zC,EAAKsyC,SAAWtwI,KAAKyI,IAAI,EAAG2c,EAAMksH,EAAGO,IAAQ7zC,EAAKsyC,QAAUe,EAAIQ,GAE1FvtI,EAAEqtI,EAAM/3H,EAAI+3H,IAAQ,EAAI3zC,EAAKsyC,UAAYlrH,EAAMksH,EAAGK,IAAQ3zC,EAAKsyC,QAAUe,EAAIM,EAC/E,CAIA,IADA,IAAIntI,EAAI,EACCstI,EAAO,EAAGA,EAAOl4H,EAAGk4H,IAAQ,CACnC,IAAI/lI,EAAIzH,EAAEwtI,EAAOl4H,EAAIk4H,GAAQnyI,EAAEmyI,EAAOl4H,EAAIk4H,GAAQ,EAAI,EAAI,EAC1DhyI,EAAEs3H,EAAOp5B,EAAKuyC,cAAgB32H,EAAIk4H,GAAQ/lI,EAC1CvH,GAAKuH,CACP,CACA,GAAIvH,EAAI,IAAM4yH,GAAQp5B,EAAKuyC,cAAgB,GAAKnZ,GAAQp5B,EAAKqD,cAAgB,GAAI,CAE/E,IADA,IAAI0wC,EAAO,EACFC,EAAO,EAAGA,EAAOp4H,EAAGo4H,IAAQ,CACnCT,EAAGS,GAAQ,EACX,IAAK,IAAIC,EAAM,EAAGA,EAAMj0C,EAAKuyC,cAAe0B,IAC1CV,EAAGS,IAASlyI,EAAEmyI,EAAMr4H,EAAIo4H,GAET,IAAbT,EAAGS,IAAeT,EAAGS,KAAUh0C,EAAKuyC,eACtCwB,GAEJ,CACA,GAAIA,IAASn4H,EAEX,KAEJ,CACF,CAQA,IALA,IAAIs4H,EAAmBtB,GAAch3H,EAAGja,EAAG2E,GAGvC6tI,EAAiB9tI,GAAOuV,EAAG7a,EAAGmzI,GAC9B1H,EAAW,CAAC,EACP9tI,EAAI,EAAGA,EAAIw1I,EAAiBr2I,OAAQa,IAC3C8tI,EAAS0H,EAAiBx1I,IAAM,GAElC,IAAK,IAAI01I,EAAO,EAAGA,EAAOz5D,EAAM98E,OAAQu2I,IAAQ,CAC9C,IAAIlqI,EAAM6iI,EAAYpyD,EAAMy5D,GAAM/uI,MAC9BgvI,EAAeF,EAAejqI,GACd,MAAhBmqI,GAEF7H,EAAS6H,GAAcv0I,KAAK66E,EAAMy5D,GAEtC,CAEA,IADA,IAAInC,EAAc,IAAIvvI,MAAMwxI,EAAiBr2I,QACpC40D,EAAK,EAAGA,EAAKyhF,EAAiBr2I,OAAQ40D,IAC7Cw/E,EAAYx/E,GAAMznC,EAAGixD,WAAWuwD,EAAS0H,EAAiBzhF,KAE5D,OAAOw/E,CACT,EACIqC,GAAwB,CAC1BlB,oBAAqBA,GACrBmB,GAAInB,IAGFoB,GAAqBroB,GAAW,CAClCp4F,UAAMx1B,EACN2wH,UAAU,IAERulB,GAAW,CACbC,WAAY,SAAoBl5I,GAC9B,IAAKuiH,EAAYviH,GAAU,CACzB,IAAIsT,EAAOlQ,UACXpD,EAAU,CACRu4B,KAAMjlB,EAAK,GACXogH,SAAUpgH,EAAK,GAEnB,CACA,IAKI6lI,EACAC,EACAC,EAPAC,EAAsBN,GAAmBh5I,GAC3Cu4B,EAAO+gH,EAAoB/gH,KAC3Bm7F,EAAW4lB,EAAoB5lB,SAC7BjrB,EAAOpoG,KACPk5I,GAAQ,EAIRhhH,IAAM8gH,EAAc35H,EAAO6Y,GAAQl4B,KAAKgwB,OAAOkI,GAAM,GAAG1uB,KAAO0uB,EAAK,GAAG1uB,MAC3E,IAAIs1E,EAAQ,CAAC,EACTqB,EAAQ,CAAC,EACTkzC,EACFjrB,EAAKx9F,SAAQ,SAAU8zF,GACrB,IAAIl1F,EAAKk1F,EAAIl1F,KACb,GAAIk1F,EAAIO,SAAU,CAChB,IAAIk6C,EAAMz6C,EAAI2tC,UAAS,GACnB+M,EAAO16C,EAAI4tC,WAAU,GACrB+M,EAAKF,EAAMC,EACXE,EAAKF,EAAOD,EACN,GAANE,EACEP,EAAOI,GAAQ,EAAUJ,EAAQtvI,EACtB,GAAN8vI,EACLP,EAAQG,GAAQ,EAAUH,EAASvvI,GAC9B8vI,EAAK,GAAKD,EAAK,KACxBH,GAAQ,GAEVp6D,EAAMt1E,GAAM,GACZk1F,EAAIkwC,WAAWhkI,SAAQ,SAAU3E,GAC3BA,EAAEszI,UAAUz6D,EAAMt1E,GAAIvF,KAAKgC,EAAEuD,KACnC,GACF,MACE22E,EAAM32E,GAAM,MAAC9G,EAAWg8F,EAAIh5F,SAAS8D,KAEzC,IAEA4+F,EAAKx9F,SAAQ,SAAU8zF,GACrB,IAAIl1F,EAAKk1F,EAAIl1F,KACb,GAAIk1F,EAAIO,SAAU,CAChB,IAAI/xE,EAAIwxE,EAAIguC,QAAO,GACfx/G,EAAI,IACD4rH,EAA4BC,EAAyBG,GAAQ,EAAzBH,EAASvvI,EAAtCsvI,EAAQtvI,GAEtBs1E,EAAMt1E,GAAM,GACZk1F,EAAI0W,iBAAiBxqG,SAAQ,SAAU3E,GACrC,OAAO64E,EAAMt1E,GAAIvF,KAAKgC,EAAEuD,KAC1B,GACF,MACE22E,EAAM32E,GAAM,CAACk1F,EAAIh6F,SAAS8E,KAAMk1F,EAAIh5F,SAAS8D,KAEjD,IAEF,IAAI9F,EAAS,CACXykB,OAAO,EACPqxH,WAAO92I,GAET,GAAIw2I,EAAO,OAAOx1I,EAAY,GAAIq1I,GAAUD,EAC1C,GAAIzlB,EAAU,CACZ,GAAI2lB,GAAeD,GAAUC,EAC3B,OAAOt1I,EAETs1I,EAAcD,CAChB,KAAO,CACL,GAAIC,GAAeD,GAAUC,GAAeF,GAASE,EACnD,OAAOt1I,EACGs1I,IACVA,EAAcD,EAElB,MAEKC,IAAaA,EAAc5wC,EAAK,GAAG5+F,MAE1C,IAAIiwI,EAAO,SAAczxH,GACvB,IAEI0xH,EAAKC,EAASC,EAFdC,EAAc7xH,EACd8xH,EAAU,CAAC9xH,GAEf,MAAO82D,EAAM+6D,GAAa73I,OACxB03I,EAAM56D,EAAM+6D,GAAazhH,QACzBuhH,EAAUx5D,EAAMu5D,GAAK,GACrBE,EAAUz5D,EAAMu5D,GAAK,GACjBG,GAAeD,GACjB96D,EAAM86D,GAAW96D,EAAM86D,GAAS5pH,QAAO,SAAU/pB,GAC/C,OAAOA,GAAKyzI,CACd,IACAG,EAAcD,GACJvmB,GAAYwmB,GAAeF,IACrC76D,EAAM66D,GAAW76D,EAAM66D,GAAS3pH,QAAO,SAAU/pB,GAC/C,OAAOA,GAAKyzI,CACd,IACAG,EAAcF,GAEhBG,EAAQ5rH,QAAQwrH,GAChBI,EAAQ5rH,QAAQ2rH,GAElB,OAAOC,CACT,EACIN,EAAQ,GACRM,EAAU,GACdA,EAAUL,EAAKT,GACf,MAAyB,GAAlBc,EAAQ93I,OACmB,GAA5B88E,EAAMg7D,EAAQ,IAAI93I,QACpBw3I,EAAMtrH,QAAQk6E,EAAK+T,eAAe29B,EAAQ1hH,UAC1CohH,EAAMtrH,QAAQk6E,EAAK+T,eAAe29B,EAAQ1hH,WAE1C0hH,EAAUL,EAAKK,EAAQ1hH,SAASn3B,OAAO64I,GAK3C,IAAK,IAAI5sH,KAFTssH,EAAMtrH,QAAQk6E,EAAK+T,eAAe29B,EAAQ1hH,UAE5B0mD,EACZ,GAAIA,EAAM5xD,GAAGlrB,OACX,OAAO0B,EAKX,OAFAA,EAAOykB,OAAQ,EACfzkB,EAAO81I,MAAQx5I,KAAKm2H,MAAMqjB,GAAO,GAC1B91I,CACT,GAGEq2I,GAA4B,WAC9B,IAAI3xC,EAAOpoG,KACP8+E,EAAQ,CAAC,EACTt1E,EAAK,EACLwwI,EAAY,EACZ5hF,EAAa,GACbt8C,EAAQ,GACRm+H,EAAe,CAAC,EAChBC,EAAiB,SAAwBp6H,EAAG6e,GAC9C,IAAI36B,EAAI8X,EAAM9Z,OAAS,EACnBm4I,EAAS,GACThiF,EAAYiwC,EAAK+tB,QACrB,MAAOr6G,EAAM9X,GAAG8b,GAAKA,GAAKhE,EAAM9X,GAAG26B,GAAKA,EACtCw7G,EAAOl2I,KAAK6X,EAAM2c,MAAMkoD,MACxB38E,IAEFm2I,EAAOl2I,KAAK6X,EAAM2c,MAAMkoD,MACxBw5D,EAAOvvI,SAAQ,SAAU+1E,GACvB,IAAIy3B,EAAiBz3B,EAAKy3B,iBAAiBmuB,aAAan+B,GACxDjwC,EAAU6lD,MAAMr9B,GAChBy3B,EAAextG,SAAQ,SAAUwwE,GAC/B,IAAI8gC,EAAS9gC,EAAK5xE,KACd4rG,EAAiBh6B,EAAKg6B,iBAAiBmxB,aAAan+B,GACxDjwC,EAAU6lD,MAAM5iC,GACX0D,EAAMo9B,GAAQk+B,UAGjBjiF,EAAU6lD,MAAM5I,EAAeplF,QAAO,SAAU2wD,GAC9C,OAAOA,EAAKq0C,QACd,KAJA78D,EAAU6lD,MAAM5I,EAMpB,GACF,IACAh9C,EAAWn0D,KAAKk0D,EAClB,EACIkiF,EAAoB,SAASA,EAAkBniH,EAAM2hH,EAAa15I,GAChE+3B,IAAS/3B,IAAQ65I,GAAa,GAClCl7D,EAAM+6D,GAAe,CACnBrwI,GAAIA,EACJ8wI,IAAK9wI,IACL4wI,WAAW,GAEb,IAIMG,EAAUx/B,EAAUy/B,EAAaC,EAJnCt6D,EAAQioB,EAAK+T,eAAe09B,GAAazkC,iBAAiBmxB,aAAan+B,GACtD,IAAjBjoB,EAAMmJ,OACRlxB,EAAWn0D,KAAKmkG,EAAK+tB,MAAM/tB,EAAK+T,eAAe09B,KAG/C15D,EAAMv1E,SAAQ,SAAU+1E,GACtB45D,EAAW55D,EAAKj8E,SAAS8E,KACzBuxG,EAAWp6B,EAAKj7E,SAAS8D,KACzBgxI,EAAcD,IAAaV,EAAc9+B,EAAWw/B,EAChDC,IAAgBr6I,IAClBs6I,EAAS95D,EAAKn3E,KACTywI,EAAaQ,KAChBR,EAAaQ,IAAU,EACvB3+H,EAAM7X,KAAK,CACT6b,EAAG+5H,EACHl7G,EAAG67G,EACH75D,KAAMA,KAGJ65D,KAAe17D,EAQnBA,EAAM+6D,GAAaS,IAAMn0I,KAAKyI,IAAIkwE,EAAM+6D,GAAaS,IAAKx7D,EAAM07D,GAAahxI,KAP7E6wI,EAAkBniH,EAAMsiH,EAAaX,GACrC/6D,EAAM+6D,GAAaS,IAAMn0I,KAAKyI,IAAIkwE,EAAM+6D,GAAaS,IAAKx7D,EAAM07D,GAAaF,KACzEx7D,EAAM+6D,GAAarwI,IAAMs1E,EAAM07D,GAAaF,MAC9Cx7D,EAAM+6D,GAAaO,WAAY,EAC/BF,EAAeL,EAAaW,KAMpC,GAEJ,EACApyC,EAAKx9F,SAAQ,SAAU8zF,GACrB,GAAIA,EAAIO,SAAU,CAChB,IAAIid,EAASxd,EAAIl1F,KACX0yG,KAAUp9B,IACdk7D,EAAY,EACZK,EAAkBn+B,EAAQA,GAC1Bp9B,EAAMo9B,GAAQk+B,UAAYJ,EAAY,EAE1C,CACF,IACA,IAAIU,EAAc13I,OAAO+E,KAAK+2E,GAAO9uD,QAAO,SAAUxmB,GACpD,OAAOs1E,EAAMt1E,GAAI4wI,SACnB,IAAG1wH,KAAI,SAAUlgB,GACf,OAAO4+F,EAAK+T,eAAe3yG,EAC7B,IACA,MAAO,CACLq0H,IAAKz1B,EAAK+tB,MAAMukB,GAChBtiF,WAAYA,EAEhB,EACIuiF,GAA8B,CAChCZ,0BAA2BA,GAC3Ba,KAAMb,GACNc,IAAKd,GACLe,oCAAqCf,IAGnCgB,GAA0B,WAC5B,IAAI3yC,EAAOpoG,KACP8+E,EAAQ,CAAC,EACT78E,EAAQ,EACRm2D,EAAa,GACbt8C,EAAQ,GACR+hH,EAAMz1B,EAAK+tB,MAAM/tB,GACjB4yC,EAA0B,SAASA,EAAwBC,GAC7Dn/H,EAAM7X,KAAKg3I,GACXn8D,EAAMm8D,GAAgB,CACpBh5I,MAAOA,EACPq4I,IAAKr4I,IACLi5I,UAAU,GAEZ,IAAI9lC,EAAiBhN,EAAK+T,eAAe8+B,GAAc7lC,iBAAiBmxB,aAAan+B,GAYrF,GAXAgN,EAAexqG,SAAQ,SAAU+1E,GAC/B,IAAIw6D,EAAex6D,EAAKj7E,SAAS8D,KAC7B2xI,IAAiBF,IACbE,KAAgBr8D,GACpBk8D,EAAwBG,GAErBr8D,EAAMq8D,GAAcD,WACvBp8D,EAAMm8D,GAAcX,IAAMn0I,KAAKyI,IAAIkwE,EAAMm8D,GAAcX,IAAKx7D,EAAMq8D,GAAcb,MAGtF,IACIx7D,EAAMm8D,GAAch5I,QAAU68E,EAAMm8D,GAAcX,IAAK,CAEzD,IADA,IAAIc,EAAiBhzC,EAAK+tB,UACjB,CACP,IAAIja,EAASpgG,EAAM2c,MAInB,GAHA2iH,EAAep9B,MAAM5V,EAAK+T,eAAeD,IACzCp9B,EAAMo9B,GAAQo+B,IAAMx7D,EAAMm8D,GAAch5I,MACxC68E,EAAMo9B,GAAQg/B,UAAW,EACrBh/B,IAAW++B,EACb,KAEJ,CACA,IAAII,EAAiBD,EAAe5jC,UAAU4jC,GAC1CjjF,EAAYijF,EAAep9B,MAAMq9B,GACrCjjF,EAAWn0D,KAAKk0D,GAChB0lE,EAAMA,EAAI5mB,WAAW9+C,EACvB,CACF,EASA,OARAiwC,EAAKx9F,SAAQ,SAAU8zF,GACrB,GAAIA,EAAIO,SAAU,CAChB,IAAIid,EAASxd,EAAIl1F,KACX0yG,KAAUp9B,GACdk8D,EAAwB9+B,EAE5B,CACF,IACO,CACL2hB,IAAKA,EACLzlE,WAAYA,EAEhB,EACIkjF,GAA4B,CAC9BP,wBAAyBA,GACzBQ,IAAKR,GACLS,KAAMT,GACNU,kCAAmCV,IAGjCW,GAAW,CAAC,EAChB,CAACpnB,GAAUI,GAAU0B,GAAUY,GAAU2B,GAAUgB,GAAUgD,GAAUiO,GAAUiB,GAAU4B,GAAUe,GAAU6C,GAAoBuD,GAAayB,GAA0BoC,GAAuBG,GAAU+B,GAA6BW,IAA2B1wI,SAAQ,SAAUysD,GACnRqsD,GAAOg4B,GAAUrkF,EACnB;;;;;EASA,IAAIskF,GAAgB,EAChBC,GAAkB,EAClBC,GAAiB,EAGjBlxC,GAAM,SAASA,EAAImxC,GAErB,KAAM97I,gBAAgB2qG,GAAM,OAAO,IAAIA,EAAImxC,GAG3C97I,KAAKwJ,GAAK,iBACVxJ,KAAKoW,MAAQulI,GACb37I,KAAK+7I,kBAAer5I,EACpB1C,KAAKg8I,kBAAet5I,EACpB1C,KAAKi8I,YAAc,GACnBj8I,KAAKk8I,WAAa,GAGlBl8I,KAAKm8I,MAAQ,CACXnjE,KAAMh5E,KAAKg5E,KAAKj8D,KAAK/c,OAIC,oBAAb87I,GAAyBA,EAASz7I,KAAKL,KAAMA,KAAKo8I,QAAQr/H,KAAK/c,MAAOA,KAAK+iF,OAAOhmE,KAAK/c,MACpG,EAGA2qG,GAAIpjG,UAAY,CAEd60I,QAAS,SAAiBt6I,GACxB,OAAOu6I,GAAQr8I,KAAM47I,GAAiB,eAAgB95I,EACxD,EACAihF,OAAQ,SAAgBjhF,GACtB,OAAOu6I,GAAQr8I,KAAM67I,GAAgB,eAAgB/5I,EACvD,EAEAk3E,KAAM,SAAcijE,EAAaC,GAC/B,IAAI3iC,EAAOv5G,KACPsH,EAAO,IAAIqjG,GAIf,OAHA4O,EAAK0iC,YAAYh4I,KAAKq4I,GAASL,EAAa30I,EAAM,YAClDiyG,EAAK2iC,WAAWj4I,KAAKq4I,GAASJ,EAAY50I,EAAM,WAChDi1I,GAAQhjC,GACDjyG,EAAK60I,KACd,GAIF,IAAIE,GAAU,SAAiB9iC,EAAMnjG,EAAO3R,EAAM3C,GAMhD,OALIy3G,EAAKnjG,QAAUulI,KACjBpiC,EAAKnjG,MAAQA,EACbmjG,EAAK90G,GAAQ3C,EACby6I,GAAQhjC,IAEHA,CACT,EAGIgjC,GAAU,SAAiBhjC,GACzBA,EAAKnjG,QAAUwlI,GAAiBY,GAAiBjjC,EAAM,cAAeA,EAAKwiC,cAAuBxiC,EAAKnjG,QAAUylI,IAAgBW,GAAiBjjC,EAAM,aAAcA,EAAKyiC,aACjL,EAGIQ,GAAmB,SAA0BjjC,EAAM90G,EAAM3C,GAK3D,GAA0B,IAAtBy3G,EAAK90G,GAAMzC,OAAf,CAGA,IAAI+3F,EAAWwf,EAAK90G,GACpB80G,EAAK90G,GAAQ,GACb,IAAIgZ,EAAO,WACT,IAAK,IAAIzZ,EAAI,EAAGA,EAAI+1F,EAAS/3F,OAAQgC,IACnC+1F,EAAS/1F,GAAGlC,EAEhB,EAG4B,oBAAjB2gB,aAA6BA,aAAahF,GAAW0G,WAAW1G,EAAM,EAZ9C,CAarC,EAGI6+H,GAAW,SAAkB3jE,EAAIrxE,EAAM8V,GACzC,OAAO,SAAUtb,GACf,GAAkB,oBAAP62E,EACTrxE,EAAK8V,GAAQ/c,KAAKiH,EAAMxF,OAAmD,CAC3E,IAAI4B,EACJ,IACEA,EAASi1E,EAAG72E,EACd,CAAqD,MAAOmE,GAE1D,YADAqB,EAAKy7E,OAAO98E,EAEd,CACAmuB,GAAQ9sB,EAAM5D,EAChB,CACF,CACF,EAGI0wB,GAAU,SAASA,EAAQouF,EAAS1iG,GAEtC,GAAI0iG,IAAY1iG,GAAK0iG,EAAQ25B,QAAUr8H,EAAvC,CAOA,IAAIk5D,EACJ,GAAmB,WAAftD,EAAQ51D,IAAyB,OAANA,GAA2B,oBAANA,EAClD,IACEk5D,EAAOl5D,EAAEk5D,IACX,CAAqC,MAAO/yE,GAE1C,YADAu8G,EAAQz/B,OAAO98E,EAEjB,CAKF,GAAoB,oBAAT+yE,EAyBXwpC,EAAQ45B,QAAQt8H,OAzBhB,CACE,IAAI28H,GAAW,EACf,IAEEzjE,EAAK34E,KAAKyf,GACV,SAAU6e,GACJ89G,IACJA,GAAW,EACP99G,IAAM7e,EACR0iG,EAAQz/B,OAAO,IAAI1hF,UAAU,4BAAiC+yB,EAAQouF,EAAS7jF,GACnF,IACA,SAAU5R,GACJ0vH,IACJA,GAAW,EACXj6B,EAAQz/B,OAAOh2D,GACjB,GACF,CAAE,MAAO9mB,GACFw2I,GACHj6B,EAAQz/B,OAAO98E,EACnB,CAGF,CAtCA,MAFEu8G,EAAQz/B,OAAO,IAAI1hF,UAAU,sCA4CjC,EAGAspG,GAAIxxF,IAAM,SAAUs+E,GAClB,OAAO,IAAIkT,IAAI,SAAU+xC,EAAYC,GAUnC,IATA,IAAIC,EAAO,IAAI/1I,MAAM4wF,EAAGz1F,QACpB66I,EAAY,EACZT,EAAU,SAAiBp4I,EAAGgL,GAChC4tI,EAAK54I,GAAKgL,EACV6tI,IACIA,IAAcplD,EAAGz1F,QACnB06I,EAAWE,EAEf,EACS54I,EAAI,EAAGA,EAAIyzF,EAAGz1F,OAAQgC,KAC7B,SAAWA,GACT,IAAI65C,EAAI45C,EAAGzzF,GACP84I,EAAiB,MAALj/F,GAAuB,MAAVA,EAAEm7B,KAC/B,GAAI8jE,EACFj/F,EAAEm7B,MAAK,SAAUhqE,GACfotI,EAAQp4I,EAAGgL,EACb,IAAG,SAAUk0E,GACXy5D,EAAUz5D,EACZ,QACK,CACL,IAAIl0E,EAAM6uC,EACVu+F,EAAQp4I,EAAGgL,EACb,CACD,EAbD,CAaGhL,EAEP,GACF,EACA2mG,GAAIv2E,QAAU,SAAUplB,GACtB,OAAO,IAAI27F,IAAI,SAAUv2E,EAAS2uD,GAChC3uD,EAAQplB,EACV,GACF,EACA27F,GAAI5nB,OAAS,SAAU/zE,GACrB,OAAO,IAAI27F,IAAI,SAAUv2E,EAAS2uD,GAChCA,EAAO/zE,EACT,GACF,EACA,IAAI+tI,GAA+B,qBAAZ5oH,QAA0BA,QAAUw2E,GAEvDqyC,GAAY,SAAmBt3I,EAAQy+F,EAAM84C,GAC/C,IAAIC,EAAS96I,EAAKsD,GACdy3I,GAASD,EACTxrB,EAAK1xH,KAAK6gF,SAAW6iC,GAAO,CAC9B5/C,SAAU,KACTqgC,EAAM84C,GAaT,GAZAvrB,EAAGhsH,OAASA,EACZgsH,EAAG9lH,MAAQ8lH,EAAG9lH,OAAS8lH,EAAGjlB,IAC1BilB,EAAG0rB,SAAU,EACb1rB,EAAG2rB,SAAU,EACb3rB,EAAG4rB,QAAS,EACZ5rB,EAAG6rB,UAAW,EACd7rB,EAAG8rB,SAAW,EACd9rB,EAAG+rB,UAAY,GACf/rB,EAAGgsB,OAAS,GACRhsB,EAAGz4C,UAAY+oC,EAAK0P,EAAGz4C,WACzBy4C,EAAG+rB,UAAUx5I,KAAKytH,EAAGz4C,UAEnBkkE,EAAO,CACT,IAAI9uI,EAAM3I,EAAOosB,WACjB4/F,EAAGisB,cAAgBjsB,EAAGisB,eAAiB,CACrC79H,EAAGzR,EAAIyR,EACP6e,EAAGtwB,EAAIswB,GAET+yF,EAAGksB,WAAalsB,EAAGksB,YAAcl4I,EAAOypB,KAAKvjB,QAAQiyI,uBAAuBn4I,EAAQgsH,EAAG9lH,MACzF,CACA,GAAIsxI,EAAQ,CACV,IAAIp5D,EAAMp+E,EAAOo+E,MACjB4tC,EAAGosB,SAAW,CACZh+H,EAAGgkE,EAAIhkE,EACP6e,EAAGmlD,EAAInlD,GAET+yF,EAAGqsB,UAAYr4I,EAAO03E,MACxB,CAGAp9E,KAAKgC,OAAS,EACdhC,KAAK,GAAKA,IACZ,EACIg+I,GAAQhB,GAAUz1I,UACtBm8G,GAAOs6B,GAAO,CACZj8B,eAAgB,WACd,MAAO,WACT,EACAriH,KAAM,WACJ,IAAIgyH,EAAK1xH,KAAK6gF,SACd,IAAK6wC,EAAG4rB,OAAQ,CAEd,IAAIr5B,EACAg6B,EAAOvsB,EAAGhsH,OAAOm7E,SAAS7vD,UAE5BizF,EADEyN,EAAG3uG,MACDk7H,EAAKl7H,MAELk7H,EAAK79H,QAEX6jG,EAAEhgH,KAAKjE,MAGHiiH,EAAoByP,EAAGhsH,SACzBgsH,EAAGhsH,OAAOypB,KAAK+uH,mBAAmBxsB,EAAGhsH,QAEvCgsH,EAAG4rB,QAAS,CACd,CACA,OAAOt9I,IACT,EACAm+I,KAAM,WACJ,IAAIzsB,EAAK1xH,KAAK6gF,SAad,OAVoB,IAAhB6wC,EAAG8rB,WACL9rB,EAAG8rB,SAAW,GAEhB9rB,EAAG2rB,SAAU,EACb3rB,EAAG0rB,SAAU,EACb1rB,EAAG0sB,SAAU,EACbp+I,KAAKN,OAIEM,IACT,EACAq9I,QAAS,WACP,OAAOr9I,KAAK6gF,SAASw8D,OACvB,EACAv6I,MAAO,WACL,IAAI4uH,EAAK1xH,KAAK6gF,SAQd,OAPA6wC,EAAG6rB,UAAW,EACd7rB,EAAG0rB,SAAU,EACb1rB,EAAG0sB,SAAU,EACbp+I,KAAKN,OAIEM,IACT,EACAu9I,SAAU,WACR,OAAOv9I,KAAK6gF,SAAS08D,QACvB,EACAc,MAAO,WACL,IAAI3sB,EAAK1xH,KAAK6gF,SAGd,OAFA6wC,EAAG2rB,SAAU,EACb3rB,EAAG0rB,SAAU,EACNp9I,IACT,EACA83B,KAAM,WACJ,IAAI45F,EAAK1xH,KAAK6gF,SAKd,OAJA6wC,EAAG2rB,SAAU,EACb3rB,EAAG0rB,SAAU,EACb1rB,EAAG0sB,SAAU,EAENp+I,IACT,EACAs+I,OAAQ,WACN,OAAOt+I,KAAKw9I,SAAS,EACvB,EACAe,YAAa,WACX,OAAOv+I,KAAKw9I,SAAS,EACvB,EACA7nH,KAAM,SAActL,GAClB,IAAIqnG,EAAK1xH,KAAK6gF,SACd,YAAUn+E,IAAN2nB,EACKqnG,EAAG8rB,SAAW9rB,EAAG5tD,SAEjB9jE,KAAKw9I,SAASnzH,EAAIqnG,EAAG5tD,SAEhC,EACA05E,SAAU,SAAkB3/F,GAC1B,IAAI6zE,EAAK1xH,KAAK6gF,SACV29D,EAAa9sB,EAAG2rB,QACpB,YAAU36I,IAANm7C,EACK6zE,EAAG8rB,UAENgB,GACFx+I,KAAKq+I,QAEP3sB,EAAG8rB,SAAW3/F,EACd6zE,EAAG0rB,SAAU,EACToB,GACFx+I,KAAKm+I,OAGFn+I,KACT,EACAy+I,UAAW,WACT,OAAkC,IAA3Bz+I,KAAK6gF,SAAS28D,QACvB,EACAxiH,QAAS,WACP,IAAI02F,EAAK1xH,KAAK6gF,SACV29D,EAAa9sB,EAAG2rB,QAChBmB,GACFx+I,KAAKq+I,QAEP3sB,EAAG8rB,SAAW,EAAI9rB,EAAG8rB,SACrB9rB,EAAG0rB,SAAU,EACb,IAAIsB,EAAO,SAAc/7I,EAAGC,GAC1B,IAAI+7I,EAAMjtB,EAAG/uH,GACF,MAAPg8I,IAGJjtB,EAAG/uH,GAAK+uH,EAAG9uH,GACX8uH,EAAG9uH,GAAK+7I,EACV,EAMA,GALAD,EAAK,OAAQ,aACbA,EAAK,MAAO,YACZA,EAAK,WAAY,iBAGbhtB,EAAG9lH,MACL,IAAK,IAAI5H,EAAI,EAAGA,EAAI0tH,EAAG9lH,MAAM5J,OAAQgC,IAAK,CACxC,IAAI46I,EAAOltB,EAAG9lH,MAAM5H,GAChBS,EAAOm6I,EAAKn6I,KACZo6I,EAAiBntB,EAAGksB,WAAWn5I,GACnCitH,EAAGksB,WAAWn5I,GAAQm6I,EACtBltB,EAAG9lH,MAAM5H,GAAK66I,CAChB,CAKF,OAHIL,GACFx+I,KAAKm+I,OAEAn+I,IACT,EACAwiH,QAAS,SAAiBh+G,GACxB,IACI8vE,EADAo9C,EAAK1xH,KAAK6gF,SAEd,OAAQr8E,GACN,IAAK,QACH8vE,EAAMo9C,EAAGgsB,OACT,MACF,QACA,IAAK,WACL,IAAK,YACHppE,EAAMo9C,EAAG+rB,UAEb,OAAO,IAAIV,IAAU,SAAU3oH,EAAS2uD,GACtCzO,EAAIrwE,MAAK,WACPmwB,GACF,GACF,GACF,IAEF4pH,GAAM/kE,SAAW+kE,GAAMS,UACvBT,GAAM96H,IAAM86H,GAAMG,KAClBH,GAAMt1C,QAAUs1C,GAAMX,QAEtB,IAAIyB,GAAW,CACbC,SAAU,WACR,OAAO,WACL,IAAI34I,EAAOpG,KACPg/I,OAAkCt8I,IAAhB0D,EAAKpE,OACvBmX,EAAM6lI,EAAkB54I,EAAO,CAACA,GAChC+oB,EAAKnvB,KAAK6gF,SAAS1xD,IAAMnvB,KAC7B,IAAKmvB,EAAG8vH,eACN,OAAO,EAET,IAAIvgD,EAAMvlF,EAAI,GACd,OAAIulF,EACKA,EAAI7d,SAAS7vD,UAAU5Q,QAAQpe,OAAS,OADjD,CAGF,CACF,EAGAk9I,WAAY,WACV,OAAO,WACL,IAAI94I,EAAOpG,KACPg/I,OAAkCt8I,IAAhB0D,EAAKpE,OACvBmX,EAAM6lI,EAAkB54I,EAAO,CAACA,GAChC+oB,EAAKnvB,KAAK6gF,SAAS1xD,IAAMnvB,KAC7B,IAAKmvB,EAAG8vH,eACN,OAAOj/I,KAET,IAAK,IAAIgE,EAAI,EAAGA,EAAImV,EAAInX,OAAQgC,IAAK,CACnC,IAAI06F,EAAMvlF,EAAInV,GACd06F,EAAI7d,SAAS7vD,UAAUjO,MAAQ,EACjC,CACA,OAAO/iB,IACT,CACF,EAGA01B,MAAO,WACL,OAAO,SAAmBC,EAAMsjD,GAC9B,IAAI9pD,EAAKnvB,KAAK6gF,SAAS1xD,IAAMnvB,KAC7B,OAAKmvB,EAAG8vH,eAGDj/I,KAAKsnG,QAAQ,CAClB5xE,MAAOC,EACPmuC,SAAUnuC,EACVsjD,SAAUA,IALHj5E,IAOX,CACF,EAGAm/I,eAAgB,WACd,OAAO,SAA4BxpH,EAAMsjD,GACvC,IAAI9pD,EAAKnvB,KAAK6gF,SAAS1xD,IAAMnvB,KAC7B,OAAKmvB,EAAG8vH,eAGDj/I,KAAKgxB,UAAU,CACpB0E,MAAOC,EACPmuC,SAAUnuC,EACVsjD,SAAUA,IALHj5E,IAOX,CACF,EAGAgxB,UAAW,WACT,OAAO,SAAuBouH,EAAYx9H,GACxC,IAAIxb,EAAOpG,KACPg/I,OAAkCt8I,IAAhB0D,EAAKpE,OACvBmX,EAAM6lI,EAAkB54I,EAAO,CAACA,GAChC+oB,EAAKnvB,KAAK6gF,SAAS1xD,IAAMnvB,KACzBk9I,GAAU8B,EACVK,GAAUnC,EACd,IAAK/tH,EAAG8vH,eACN,OAAOj/I,KAET,IAAI4L,EAAQujB,EAAGvjB,QACfwzI,EAAa17B,GAAO,CAAC,EAAG07B,EAAYx9H,GACpC,IAAI09H,EAAqD,IAAnCt8I,OAAO+E,KAAKq3I,GAAYp9I,OAC9C,GAAIs9I,EACF,OAAO,IAAItC,GAAU7jI,EAAI,GAAIimI,GAM/B,YAH4B18I,IAAxB08I,EAAWt7E,WACbs7E,EAAWt7E,SAAW,KAEhBs7E,EAAWt7E,UACjB,IAAK,OACHs7E,EAAWt7E,SAAW,IACtB,MACF,IAAK,OACHs7E,EAAWt7E,SAAW,IACtB,MAMJ,GAJIu7E,IACFD,EAAWxzI,MAAQA,EAAM2zI,aAAaH,EAAWxzI,OAASwzI,EAAW3yC,KACrE2yC,EAAW3yC,SAAM/pG,GAEf28I,GAAyC,MAA/BD,EAAWhgD,iBAA0B,CACjD,IAAI0zB,EAAOssB,EAAWhgD,iBAClBtb,EAAM30D,EAAG20D,MACT1G,EAAOjuD,EAAGiuD,OACdgiE,EAAWttH,SAAWusG,GAAwBvL,EAAM11C,EAAM0G,EAC5D,CAGA,GAAIo5D,GAA8B,MAApBkC,EAAWI,MAAe,CACtC,IAAIA,EAAQJ,EAAWI,MACnBC,EAAQtwH,EAAG20D,MACfs7D,EAAWt7D,IAAM,CACfhkE,EAAG2/H,EAAM3/H,EAAI0/H,EAAM1/H,EACnB6e,EAAG8gH,EAAM9gH,EAAI6gH,EAAM7gH,EAEvB,CAGA,IAAI8Q,EAAS2vG,EAAW3vG,QAAU2vG,EAAWM,OAC7C,GAAIxC,GAAoB,MAAVztG,EAAgB,CAC5B,IAAIkwG,EAAYxwH,EAAGywH,aAAanwG,EAAO24D,KAAMg3C,EAAWhiE,MACvC,MAAbuiE,IACFP,EAAWt7D,IAAM67D,EAErB,CAGA,GAAIzC,GAA4B,MAAlBkC,EAAWz3C,IAAa,CACpC,IAAIA,EAAMy3C,EAAWz3C,IACjBk4C,EAAQ1wH,EAAG6lF,eAAerN,EAAIS,MAAQT,EAAIrmB,YAAaqmB,EAAIpc,SAClD,MAATs0D,IACFT,EAAWt7D,IAAM+7D,EAAM/7D,IACvBs7D,EAAWhiE,KAAOyiE,EAAMziE,KAE5B,CAGA,GAAI8/D,GAAUh7B,EAAYk9B,EAAWhiE,MAAO,CAC1C,IAAI0iE,EAAK3wH,EAAG4wH,kBAAkBX,EAAWhiE,MAC/B,MAAN0iE,GACEA,EAAGr8D,SACL27D,EAAWhiE,KAAO0iE,EAAG1iE,MAEnB0iE,EAAGE,SACLZ,EAAWt7D,IAAMg8D,EAAGh8D,MAGtBs7D,EAAWhiE,KAAO,IAEtB,CAEA,OAAO,IAAI4/D,GAAU7jI,EAAI,GAAIimI,EAC/B,CACF,EAGA93C,QAAS,WACP,OAAO,SAAqB83C,EAAYx9H,GACtC,IAAIxb,EAAOpG,KACPg/I,OAAkCt8I,IAAhB0D,EAAKpE,OACvBmX,EAAM6lI,EAAkB54I,EAAO,CAACA,GAChC+oB,EAAKnvB,KAAK6gF,SAAS1xD,IAAMnvB,KAC7B,IAAKmvB,EAAG8vH,eACN,OAAOj/I,KAEL4hB,IACFw9H,EAAa17B,GAAO,CAAC,EAAG07B,EAAYx9H,IAItC,IAAK,IAAI5d,EAAI,EAAGA,EAAImV,EAAInX,OAAQgC,IAAK,CACnC,IAAI06F,EAAMvlF,EAAInV,GACV+e,EAAQ27E,EAAIqgD,kBAAoCr8I,IAArB08I,EAAWr8H,OAAuBq8H,EAAWr8H,OACxEk9H,EAAMvhD,EAAI1tE,UAAUouH,EAAYr8H,EAAQ,CAC1CA,OAAO,QACLrgB,GACJu9I,EAAI9B,MACN,CACA,OAAOn+I,IACT,CACF,EAIA83B,KAAM,WACJ,OAAO,SAAkBonH,EAAYgB,GACnC,IAAI95I,EAAOpG,KACPg/I,OAAkCt8I,IAAhB0D,EAAKpE,OACvBmX,EAAM6lI,EAAkB54I,EAAO,CAACA,GAChC+oB,EAAKnvB,KAAK6gF,SAAS1xD,IAAMnvB,KAC7B,IAAKmvB,EAAG8vH,eACN,OAAOj/I,KAET,IAAK,IAAIgE,EAAI,EAAGA,EAAImV,EAAInX,OAAQgC,IAAK,CAInC,IAHA,IAAI06F,EAAMvlF,EAAInV,GACV0tH,EAAKhzB,EAAI7d,SACTs/D,EAAOzuB,EAAG1gG,UAAU5Q,QACfnV,EAAI,EAAGA,EAAIk1I,EAAKn+I,OAAQiJ,IAAK,CACpC,IAAIg1I,EAAME,EAAKl1I,GACXm1I,EAAQH,EAAIp/D,SACZq/D,IAGFE,EAAMt8E,SAAW,EAErB,CAGIo7E,IACFxtB,EAAG1gG,UAAUjO,MAAQ,IAElBm9H,IACHxuB,EAAG1gG,UAAU5Q,QAAU,GAE3B,CAIA,OADA+O,EAAGkxH,OAAO,QACHrgJ,IACT,CACF,GAGEsgJ,GAAW,CAEbrhI,KAAM,SAAc2C,GAClB,IAAI43E,EAAW,CACbhkB,MAAO,OACP+qE,aAAc,OACdC,cAAc,EACdC,cAAc,EACdC,cAAc,EACdC,aAAc,OACdC,sBAAsB,EACtBC,cAAe,UACfC,cAAe,CAAC,EAEhBC,aAAa,EACbC,UAAW,SAAmB56I,GAAO,EACrC66I,UAAW,SAAmB76I,EAAMoZ,GAAM,EAC1C0hI,MAAO,SAAe96I,GAAO,EAC7B+6I,OAAQ,SAAgB/6I,GACtB,OAAO,CACT,GAGF,OADAwb,EAAS8hG,GAAO,CAAC,EAAGlqB,EAAU53E,GACvB,SAAkBnd,EAAM3C,GAC7B,IAAI+7C,EAAIj8B,EACJxb,EAAOpG,KACPg/I,OAAkCt8I,IAAhB0D,EAAKpE,OACvBmX,EAAM6lI,EAAkB54I,EAAO,CAACA,GAChCusG,EAASqsC,EAAkB54I,EAAK,GAAKA,EAGzC,GAAIiZ,EAAO5a,GAAO,CAEhB,IAOMqwE,EAPFssE,GAAoC,IAAvB38I,EAAK4S,QAAQ,KAC1B6lD,EAAOkkF,GAAc7gC,EAAgB,WAAW97G,GAGpD,GAAIo5C,EAAE6iG,mBAA0Bh+I,IAAVZ,EAcpB,OAVI6wG,IACF90D,EAAEmjG,UAAUruC,GAIV79B,EADE5X,QAA2Cx6D,IAAnCiwG,EAAO9xB,SAAShjC,EAAE23B,OAAO/wE,GAC7B47G,EAAa,WAAW1N,EAAO9xB,SAAShjC,EAAE23B,OAAQtY,GAElDy1C,EAAO9xB,SAAShjC,EAAE23B,OAAO/wE,IAG5BqwE,EAGF,GAAIj3B,EAAE4iG,mBAA0B/9I,IAAVZ,EAAqB,CAEhD,IAAIu/I,GAASxjG,EAAEijG,cAAcr8I,GAC7B,GAAI48I,EAAO,CACT,IAAItqH,EAAS8pF,EAAgB,CAAC,EAAGp8G,EAAM3C,GACvC+7C,EAAEojG,UAAU76I,EAAM2wB,GAClB,IAAK,IAAI/yB,EAAI,EAAGwK,EAAI2K,EAAInX,OAAQgC,EAAIwK,EAAGxK,IAAK,CAC1C,IAAI06F,EAAMvlF,EAAInV,GACV65C,EAAEsjG,OAAOziD,KACPxhC,QAA2Cx6D,IAAnCiwG,EAAO9xB,SAAShjC,EAAE23B,OAAO/wE,GACnC67G,EAAa,WAAW5hB,EAAI7d,SAAShjC,EAAE23B,OAAQtY,EAAMp7D,GAErD48F,EAAI7d,SAAShjC,EAAE23B,OAAO/wE,GAAQ3C,EAGpC,CAGI+7C,EAAEkjG,aACJ36I,EAAK26I,cAIPljG,EAAEqjG,MAAM96I,GACJy3C,EAAE+iG,sBACJx6I,EAAKy3C,EAAEgjG,eAAehjG,EAAE8iG,aAE5B,CACF,CAGF,MAAO,GAAI9iG,EAAE4iG,cAAgBv+B,EAAYz9G,GAAO,CAE9C,IACIoG,EAAGmd,EADHxI,EAAM/a,EAENsD,EAAO/E,OAAO+E,KAAKyX,GACvBq+B,EAAEojG,UAAU76I,EAAMoZ,GAClB,IAAK,IAAI5P,EAAK,EAAGA,EAAK7H,EAAK/F,OAAQ4N,IAAM,CACvC/E,EAAI9C,EAAK6H,GACToY,EAAIxI,EAAI3U,GACR,IAAIy2I,GAAUzjG,EAAEijG,cAAcj2I,GAC9B,GAAIy2I,EACF,IAAK,IAAIr2I,EAAI,EAAGA,EAAIkO,EAAInX,OAAQiJ,IAAK,CACnC,IAAIs2I,EAAOpoI,EAAIlO,GACX4yC,EAAEsjG,OAAOI,KACXA,EAAK1gE,SAAShjC,EAAE23B,OAAO3qE,GAAKmd,EAEhC,CAEJ,CAGI61B,EAAEkjG,aACJ36I,EAAK26I,cAIPljG,EAAEqjG,MAAM96I,GACJy3C,EAAE+iG,sBACJx6I,EAAKy3C,EAAEgjG,eAAehjG,EAAE8iG,aAI5B,MAAO,GAAI9iG,EAAE2iG,cAAgBx+B,EAAKv9G,GAAO,CAEvC,IAAIjC,EAAKiC,EACT2B,EAAKq9D,GAAG5lB,EAAE0iG,aAAc/9I,EAG1B,MAAO,GAAIq7C,EAAE6iG,mBAAyBh+I,IAAT+B,EAAoB,CAE/C,IAAI2oB,EAKJ,OAJIulF,IACF90D,EAAEmjG,UAAUruC,GACZvlF,EAAOulF,EAAO9xB,SAAShjC,EAAE23B,QAEpBpoD,CACT,CACA,OAAOhnB,CACT,CACF,EAKAwsG,WAAY,SAAoBhxF,GAC9B,IAAI43E,EAAW,CACbhkB,MAAO,OACPnyD,MAAO,OACPw9H,cAAe,UACfW,cAAc,EACdV,cAAe,CAAC,GAIlB,OADAl/H,EAAS8hG,GAAO,CAAC,EAAGlqB,EAAU53E,GACvB,SAAwBxU,GAC7B,IAAIywC,EAAIj8B,EACJxb,EAAOpG,KACPg/I,OAAkCt8I,IAAhB0D,EAAKpE,OACvBmX,EAAM6lI,EAAkB54I,EAAO,CAACA,GAGpC,GAAIiZ,EAAOjS,GAAQ,CAIjB,IAFA,IAAIrF,EAAOqF,EAAM9J,MAAM,OACnBkL,EAAIzG,EAAK/F,OACJgC,EAAI,EAAGA,EAAIwK,EAAGxK,IAAK,CAE1B,IAAIH,EAAMkE,EAAK/D,GACf,IAAIs+G,EAAYz+G,GAAhB,CAGA,IAAIw9I,GAASxjG,EAAEijG,cAAcj9I,GAC7B,GAAIw9I,EACF,IAAK,IAAII,EAAM,EAAGC,EAAMvoI,EAAInX,OAAQy/I,EAAMC,EAAKD,IAC7CtoI,EAAIsoI,GAAK5gE,SAAShjC,EAAE23B,OAAO3xE,QAAOnB,CAJtC,CAOF,CACIm7C,EAAE2jG,cACJp7I,EAAKy3C,EAAEgjG,eAAehjG,EAAEx6B,MAI5B,MAAO,QAAc3gB,IAAV0K,EAAqB,CAG9B,IAAK,IAAIu0I,EAAO,EAAGC,EAAOzoI,EAAInX,OAAQ2/I,EAAOC,EAAMD,IAGjD,IAFA,IAAIE,EAAiB1oI,EAAIwoI,GAAM9gE,SAAShjC,EAAE23B,OACtCssE,EAAQ9+I,OAAO+E,KAAK85I,GACf1tB,EAAM,EAAGA,EAAM2tB,EAAM9/I,OAAQmyH,IAAO,CAC3C,IAAIlgD,EAAO6tE,EAAM3tB,GACb4tB,GAAoBlkG,EAAEijG,cAAc7sE,GACpC8tE,IACFF,EAAe5tE,QAAQvxE,EAE3B,CAEEm7C,EAAE2jG,cACJp7I,EAAKy3C,EAAEgjG,eAAehjG,EAAEx6B,MAE5B,CACA,OAAOjd,CACT,CACF,GAGE47I,GAAW,CACbC,eAAgB,SAAwBt5I,GACtC,IAAIk1C,EAAIl1C,EACRk1C,EAAEqkG,YAAcrkG,EAAEskG,OAAStkG,EAAE9gC,KAAO8gC,EAAE4lB,GACtC5lB,EAAEukG,SAAWvkG,EAAEkyD,OAASlyD,EAAEm+B,IAAMn+B,EAAEwrD,eAClCxrD,EAAEmyD,QAAUnyD,EAAE4rD,KAGd5rD,EAAEwkG,IAAMxkG,EAAEykG,UAAY,SAAUllD,EAAQxd,GACtC,IAAIx5E,EAAOpG,KACPiT,EAAOpM,MAAMU,UAAUpF,MAAM9B,KAAK0C,UAAW,GACjD,OAAO,IAAIg6I,IAAU,SAAU3oH,EAAS2uD,GACtC,IAAIlhE,EAAW,SAAkB5b,GAC/BG,EAAK41E,IAAIl5E,MAAMsD,EAAMm8I,GACrBnuH,EAAQnuB,EACV,EACIu8I,EAASvvI,EAAKhS,OAAO,CAAC4gB,IACtB0gI,EAAUC,EAAOvhJ,OAAO,IAC5BmF,EAAKq9D,GAAG3gE,MAAMsD,EAAMo8I,EACtB,GACF,CACF,GAIE1qE,GAAS,CAAC,EACd,CAACgnE,GAAUwB,GAAU0B,IAAUp3I,SAAQ,SAAU4O,GAC/CkqG,GAAO5rC,GAAQt+D,EACjB,IAEA,IAAIipI,GAAW,CACbn7C,QAASxvB,GAAOwvB,UAChBt2E,UAAW8mD,GAAO9mD,YAClB+tH,SAAUjnE,GAAOinE,WACjBG,WAAYpnE,GAAOonE,aACnBxpH,MAAOoiD,GAAOpiD,QACdypH,eAAgBrnE,GAAOqnE,iBACvBrnH,KAAMggD,GAAOhgD,QAGX4qH,GAAW,CACbtpC,QAAS,SAAiBupC,GACxB,IAAIv8I,EAAOpG,KACX,QAAiB0C,IAAbigJ,EAAwB,CAC1B,IAAI7tE,EAAM,GAIV,OAHA1uE,EAAK,GAAGy6E,SAASu4B,QAAQxuG,SAAQ,SAAUmoH,GACzC,OAAOj+C,EAAI7wE,KAAK8uH,EAClB,IACOj+C,CACT,CAAYlf,EAAM+sF,KAEhBA,GAAYA,GAAY,IAAIrnI,MAAM,SAAW,IAM/C,IAJA,IAAIsnI,EAAU,GACVC,EAAa,IAAIrxB,GAAMmxB,GAGlB13I,EAAI,EAAGA,EAAI7E,EAAKpE,OAAQiJ,IAAK,CAOpC,IANA,IAAIyzF,EAAMt4F,EAAK6E,GACXymH,EAAKhzB,EAAI7d,SACTiiE,EAAapxB,EAAGtY,QAChB2pC,GAAa,EAGR/+I,EAAI,EAAGA,EAAI2+I,EAAS3gJ,OAAQgC,IAAK,CACxC,IAAI+uH,EAAM4vB,EAAS3+I,GACfg/I,EAAcF,EAAWz+I,IAAI0uH,GACjC,IAAKiwB,EAAa,CAChBD,GAAa,EACb,KACF,CACF,CAGKA,IACHA,EAAaD,EAAWx5D,OAASq5D,EAAS3gJ,QAExC+gJ,IACFrxB,EAAGtY,QAAUypC,EACbD,EAAQ3+I,KAAKy6F,GAEjB,CAMA,OAHIkkD,EAAQ5gJ,OAAS,GACnBhC,KAAKm2H,MAAMysB,GAAS7B,cAAct3C,KAAK,SAElCrjG,CACT,EACAmvG,SAAU,SAAkB6D,GAC1B,OAAOp5G,KAAKijJ,YAAY7pC,GAAS,EACnC,EACAlN,SAAU,SAAkBnU,GAC1B,IAAI2G,EAAM1+F,KAAK,GACf,OAAc,MAAP0+F,GAAeA,EAAI7d,SAASu4B,QAAQ/0G,IAAI0zF,EACjD,EACAkrD,YAAa,SAAqB7pC,EAAS8pC,GACpCttF,EAAMwjD,KAETA,EAAUA,EAAQ99F,MAAM,SAAW,IAMrC,IAJA,IAAIlV,EAAOpG,KACPmjJ,OAA0BzgJ,IAAXwgJ,EACfN,EAAU,GAEL5+I,EAAI,EAAGo/I,EAAKh9I,EAAKpE,OAAQgC,EAAIo/I,EAAIp/I,IAIxC,IAHA,IAAI06F,EAAMt4F,EAAKpC,GACX8+I,EAAapkD,EAAI7d,SAASu4B,QAC1B2pC,GAAa,EACR93I,EAAI,EAAGA,EAAImuG,EAAQp3G,OAAQiJ,IAAK,CACvC,IAAI8nH,EAAM3Z,EAAQnuG,GACdihG,EAAW42C,EAAWz+I,IAAI0uH,GAC1BswB,GAAa,EACbH,GAAUC,IAAiBj3C,GAC7B42C,EAAWviJ,IAAIwyH,GACfswB,GAAa,KACHH,GAAUC,GAAgBj3C,KACpC42C,EAAW,UAAU/vB,GACrBswB,GAAa,IAEVN,GAAcM,IACjBT,EAAQ3+I,KAAKy6F,GACbqkD,GAAa,EAEjB,CAOF,OAHIH,EAAQ5gJ,OAAS,GACnBhC,KAAKm2H,MAAMysB,GAAS7B,cAAct3C,KAAK,SAElCrjG,CACT,EACAysG,YAAa,SAAqBuG,GAChC,OAAOp5G,KAAKijJ,YAAY7pC,GAAS,EACnC,EACAkqC,WAAY,SAAoBlqC,EAASt1C,GACvC,IAAI19D,EAAOpG,KACX,GAAgB,MAAZ8jE,EACFA,EAAW,SACN,GAAiB,IAAbA,EACT,OAAO19D,EAOT,OAJAA,EAAKmvG,SAAS6D,GACdj1F,YAAW,WACT/d,EAAKysG,YAAYuG,EACnB,GAAGt1C,GACI19D,CACT,GAEFs8I,GAAS3qD,UAAY2qD,GAASa,WAAab,GAAStpC,QAGpD,IAAIoqC,GAAS,CACXC,SAAU,6FAEVC,aAAc,kCAEdC,OAAQ,cAERtkI,OAAQ,0CAERoF,OAAQA,GAERxa,KAAM,4BAEN25I,UAAW,YAEXC,WAAY,OACZ98C,MAAO,YACP+8C,QAAS,MACT5oG,MAAO,gBACP6oG,aAAc,aACdC,eAAgB,eAElBR,GAAOS,SAAW,qBAAuBT,GAAOC,SAAW,MAC3DD,GAAOzrD,UAAY,oBAAsByrD,GAAOC,SAAW,MAC3DD,GAAO1hJ,MAAQ0hJ,GAAOnkI,OAAS,IAAMmkI,GAAO/+H,OAC5C++H,GAAOh6I,GAAKg6I,GAAOS,SAEnB,WACE,IAAIC,EAAKC,EAAIngJ,EAIb,IADAkgJ,EAAMV,GAAOE,aAAapgJ,MAAM,KAC3BU,EAAI,EAAGA,EAAIkgJ,EAAIliJ,OAAQgC,IAC1BmgJ,EAAKD,EAAIlgJ,GACTw/I,GAAOE,cAAgB,KAAOS,EAKhC,IADAD,EAAMV,GAAOE,aAAapgJ,MAAM,KAC3BU,EAAI,EAAGA,EAAIkgJ,EAAIliJ,OAAQgC,IAC1BmgJ,EAAKD,EAAIlgJ,GACLmgJ,EAAG9sI,QAAQ,MAAQ,GAGZ,MAAP8sI,IAIJX,GAAOE,cAAgB,OAASS,EAEnC,CAvBD,GA+BA,IAAIC,GAAW,WACb,MAAO,CACLC,OAAQ,GAEZ,EAMIC,GAAO,CAETC,MAAO,EAEPC,WAAY,EAEZC,OAAQ,EAERC,aAAc,EAEdC,WAAY,EAEZC,UAAW,EAEXC,aAAc,EAEdjmI,MAAO,EAEPkmI,GAAI,EAEJC,MAAO,EAEPC,gBAAiB,GAEjBC,cAAe,GAEfC,YAAa,GAEbC,YAAa,GAEbC,cAAe,GAEfC,MAAO,GAEPC,WAAY,GAEZC,OAAQ,GAERC,SAAU,GAEVC,eAAgB,GAEhBC,KAAM,IAGJC,GAAiB,CAAC,CACpB/lE,SAAU,YACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAIyzB,UACb,GACC,CACDvyC,SAAU,cACVgmE,QAAS,SAAiBlnD,GACxB,OAAQA,EAAIyzB,UACd,GACC,CACDvyC,SAAU,cACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAI+Q,YACb,GACC,CACD7vB,SAAU,gBACVgmE,QAAS,SAAiBlnD,GACxB,OAAQA,EAAI+Q,YACd,GACC,CACD7vB,SAAU,UACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAI0E,QACb,GACC,CACDxjB,SAAU,YACVgmE,QAAS,SAAiBlnD,GACxB,OAAQA,EAAI0E,QACd,GACC,CACDxjB,SAAU,WACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAI3qE,SACb,GACC,CACD6rD,SAAU,UACVgmE,QAAS,SAAiBlnD,GACxB,OAAQA,EAAI3qE,SACd,GACC,CACD6rD,SAAU,eACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAIgmB,aACb,GACC,CACD9kC,SAAU,WACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAIkG,SACb,GACC,CACDhlB,SAAU,QACVgmE,QAAS,SAAiBlnD,GACxB,OAAQA,EAAIkG,SACd,GACC,CACDhlB,SAAU,WACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAIzf,SACb,GACC,CACDW,SAAU,UACVgmE,QAAS,SAAiBlnD,GACxB,OAAQA,EAAIzf,SACd,GACC,CACDW,SAAU,aACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAIlB,WACb,GACC,CACD5d,SAAU,eACVgmE,QAAS,SAAiBlnD,GACxB,OAAQA,EAAIlB,WACd,GACC,CACD5d,SAAU,YACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAIqgD,UACb,GACC,CACDn/D,SAAU,cACVgmE,QAAS,SAAiBlnD,GACxB,OAAQA,EAAIqgD,UACd,GACC,CACDn/D,SAAU,UACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAIQ,UACb,GACC,CACDtf,SAAU,aACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAIygB,aACb,GACC,CACDv/B,SAAU,SACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAImnD,SACb,GACC,CACDjmE,SAAU,UACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAIonD,UACb,GACC,CACDlmE,SAAU,aACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAImnD,SACb,GACC,CACDjmE,SAAU,YACVgmE,QAAS,SAAiBlnD,GACxB,OAAIA,EAAIO,SACCP,EAAIQ,WAEJR,EAAIh6F,SAASw6F,YAAcR,EAAIh5F,SAASw5F,UAEnD,GACC,CACDtf,SAAU,QACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAIs2B,QACb,GACC,CACDp1C,SAAU,UACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAIqnD,UACb,GACC,CACDnmE,SAAU,UACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAIplC,QACb,GACC,CACDsmB,SAAU,YACVgmE,QAAS,SAAiBlnD,GACxB,OAAQA,EAAIplC,QACd,GACC,CACDsmB,SAAU,iBACVgmE,QAAS,SAAiBlnD,GACxB,OAAOA,EAAI4zB,eACb,GACC,CACD1yC,SAAU,oBACVgmE,QAAS,SAAiBlnD,GACxB,OAAQA,EAAI4zB,eACd,IACCzsG,MAAK,SAAUljB,EAAGC,GAEnB,OAAO6gH,GAAW9gH,EAAEi9E,SAAUh9E,EAAEg9E,SAClC,IACIomE,GAAS,WAGX,IAFA,IACI13I,EADA23I,EAAU,CAAC,EAENjiJ,EAAI,EAAGA,EAAI2hJ,GAAe3jJ,OAAQgC,IACzCsK,EAAIq3I,GAAe3hJ,GACnBiiJ,EAAQ33I,EAAEsxE,UAAYtxE,EAAEs3I,QAE1B,OAAOK,CACT,CARa,GASTC,GAAuB,SAA8BC,EAAKznD,GAC5D,OAAOsnD,GAAOG,GAAKznD,EACrB,EACI0nD,GAAqB,IAAMT,GAAej8H,KAAI,SAAUpb,GAC1D,OAAOA,EAAEsxE,QACX,IAAG90E,KAAK,KAAO,IAIXu7I,GAAiB,SAAwBnyE,GAC3C,OAAOA,EAAIt4D,QAAQ,IAAIq6D,OAAO,QAAUutE,GAAOC,SAAW,IAAK,MAAM,SAAUnoI,EAAOgrI,GACpF,OAAOA,CACT,GACF,EACIC,GAAmB,SAA0B3mE,EAAU4mE,EAAgBC,GACzE7mE,EAASA,EAAS59E,OAAS,GAAKykJ,CAClC,EAMIC,GAAQ,CAAC,CACXjiJ,KAAM,QAENo8F,OAAO,EACP8lD,MAAO,IAAMnD,GAAOtoG,MAAQ,IAC5B0rG,SAAU,SAAkBhnE,EAAUihB,EAAOj2E,GAC3C,IAAIC,EAAQi2F,EAAel2F,EAAM,GAC/BswB,EAAQrwB,EAAM,GAChBg2E,EAAMwjD,OAAOpgJ,KAAK,CAChBO,KAAM8/I,GAAKC,MACXziJ,MAAiB,MAAVo5C,EAAgBA,EAAQA,EAAQ,KAE3C,GACC,CACDz2C,KAAM,QACNo8F,OAAO,EACP8lD,MAAOP,GACPQ,SAAU,SAAkBhnE,EAAUihB,EAAO/1E,GAC3C,IAAIG,EAAQ61F,EAAeh2F,EAAO,GAChC1U,EAAQ6U,EAAM,GAChB41E,EAAMwjD,OAAOpgJ,KAAK,CAChBO,KAAM8/I,GAAK1lI,MACX9c,MAAOsU,GAEX,GACC,CACD3R,KAAM,KACNo8F,OAAO,EACP8lD,MAAO,OAASnD,GAAOh6I,GAAK,IAC5Bo9I,SAAU,SAAkBhnE,EAAUihB,EAAOljE,GAC3C,IAAIC,EAAQkjF,EAAenjF,EAAO,GAChCn0B,EAAKo0B,EAAM,GACbijE,EAAMwjD,OAAOpgJ,KAAK,CAChBO,KAAM8/I,GAAKQ,GACXhjJ,MAAOukJ,GAAe78I,IAE1B,GACC,CACD/E,KAAM,YACNo8F,OAAO,EACP8lD,MAAO,OAASnD,GAAOzrD,UAAY,IACnC6uD,SAAU,SAAkBhnE,EAAUihB,EAAOhjE,GAC3C,IAAIK,EAAQ4iF,EAAejjF,EAAO,GAChCk6D,EAAY75D,EAAM,GACpB2iE,EAAMwjD,OAAOpgJ,KAAK,CAChBO,KAAM8/I,GAAKS,MACXjjJ,MAAOukJ,GAAetuD,IAE1B,GACC,CACDtzF,KAAM,aACNo8F,OAAO,EACP8lD,MAAO,WAAanD,GAAOS,SAAW,WACtC2C,SAAU,SAAkBhnE,EAAUihB,EAAO1iE,GAC3C,IAAIC,EAAS0iF,EAAe3iF,EAAO,GACjC8lH,EAAW7lH,EAAO,GACpByiE,EAAMwjD,OAAOpgJ,KAAK,CAChBO,KAAM8/I,GAAKK,WACXnvE,MAAO6wE,GAAepC,IAE1B,GACC,CACDx/I,KAAM,cACNo8F,OAAO,EACP8lD,MAAO,WAAanD,GAAOS,SAAW,SAAWT,GAAOE,aAAe,SAAWF,GAAO1hJ,MAAQ,WACjG8kJ,SAAU,SAAkBhnE,EAAUihB,EAAOxiE,GAC3C,IAAIG,EAASsiF,EAAeziF,EAAQ,GAClC4lH,EAAWzlH,EAAO,GAClBklH,EAAellH,EAAO,GACtB18B,EAAQ08B,EAAO,GACbqoH,EAAqE,MAArD,IAAI5wE,OAAO,IAAMutE,GAAOnkI,OAAS,KAAKrZ,KAAKlE,GAE7DA,EADE+kJ,EACM/kJ,EAAM4gF,UAAU,EAAG5gF,EAAME,OAAS,GAElC8zC,WAAWh0C,GAErB++F,EAAMwjD,OAAOpgJ,KAAK,CAChBO,KAAM8/I,GAAKI,aACXlvE,MAAO6wE,GAAepC,GACtB6C,SAAUpD,EACV5hJ,MAAOA,GAEX,GACC,CACD2C,KAAM,WACNo8F,OAAO,EACP8lD,MAAO,WAAanD,GAAOG,OAAS,SAAWH,GAAOS,SAAW,WACjE2C,SAAU,SAAkBhnE,EAAUihB,EAAOpiE,GAC3C,IAAIC,EAASoiF,EAAeriF,EAAQ,GAClCklH,EAASjlH,EAAO,GAChBulH,EAAWvlH,EAAO,GACpBmiE,EAAMwjD,OAAOpgJ,KAAK,CAChBO,KAAM8/I,GAAKM,UACXpvE,MAAO6wE,GAAepC,GACtB6C,SAAUnD,GAEd,GACC,CACDl/I,KAAM,cACNo8F,OAAO,EACP8lD,MAAO,cAAgBnD,GAAOv5I,KAAO,SAAWu5I,GAAOE,aAAe,SAAWF,GAAO/+H,OAAS,cACjGmiI,SAAU,SAAkBhnE,EAAUihB,EAAOjiE,GAC3C,IAAIC,EAASiiF,EAAeliF,EAAQ,GAClC30B,EAAO40B,EAAO,GACd6kH,EAAe7kH,EAAO,GACtBpa,EAASoa,EAAO,GAClBgiE,EAAMwjD,OAAOpgJ,KAAK,CAChBO,KAAM8/I,GAAKO,aACXrvE,MAAO6wE,GAAep8I,GACtB68I,SAAUpD,EACV5hJ,MAAOg0C,WAAWrxB,IAEtB,GACC,CACDhgB,KAAM,YACNm/I,WAAW,EACX+C,MAAOnD,GAAOI,UACdgD,SAAU,SAAkBhnE,EAAUihB,GACpC,IAAIkmD,EAAiBnnE,EAASmnE,eAC1B/M,EAAYp6D,EAASo6D,UACrBgN,EAAgBpnE,EAASonE,cACzBC,EAAQrnE,EAASA,EAAS59E,OAAS,GACjB,MAAlB+kJ,IACFE,EAAMnD,QAAUiD,EAChBnnE,EAASmnE,eAAiB,MAE5BE,EAAMjN,UAAYA,EAClBiN,EAAMD,cAAgBA,EACtBpnE,EAASo6D,UAAY,EACrBp6D,EAASonE,cAAgB,EAGzB,IAAIE,EAAYtnE,EAASA,EAAS59E,UAAYoiJ,KAC9C,OAAO8C,CACT,GACC,CACDziJ,KAAM,eACNm/I,WAAW,EACX+C,MAAOnD,GAAOO,aACd6C,SAAU,SAAkBhnE,EAAUihB,GACpC,GAA+B,MAA3BjhB,EAASmnE,eAAwB,CAEnC,IAAII,EAAY/C,KACZ1/I,EAASm8F,EACTn7F,EAAS0+I,KAYb,OAXA+C,EAAU9C,OAAOpgJ,KAAK,CACpBO,KAAM8/I,GAAKW,cACXvgJ,OAAQA,EACRgB,OAAQA,IAIV6gJ,GAAiB3mE,EAAUihB,EAAOsmD,GAClCvnE,EAASo6D,YAGFt0I,CACT,CAEE,IAAI0hJ,EAAUhD,KACViD,EAAUxmD,EACVymD,EAAUlD,KAUd,OATAgD,EAAQ/C,OAAOpgJ,KAAK,CAClBO,KAAM8/I,GAAKY,YACXxgJ,OAAQ2iJ,EACR3hJ,OAAQ4hJ,IAIVf,GAAiB3mE,EAAUihB,EAAOumD,GAClCxnE,EAASo6D,YACFsN,CAEX,GACC,CACD7iJ,KAAM,iBACNm/I,WAAW,EACX+C,MAAOnD,GAAOQ,eACd4C,SAAU,SAAkBhnE,EAAUihB,GACpC,GAA+B,MAA3BjhB,EAASmnE,eAAwB,CAEnC,IAAII,EAAY/C,KACZ1/I,EAASm8F,EACTn7F,EAAS0+I,KAWb,OAVA+C,EAAU9C,OAAOpgJ,KAAK,CACpBO,KAAM8/I,GAAKU,gBACXlmE,MAAO,CAACp6E,EAAQgB,KAIlB6gJ,GAAiB3mE,EAAUihB,EAAOsmD,GAClCvnE,EAASo6D,YAGFt0I,CACT,CAEE,IAAI6hJ,EAASnD,KACThpE,EAAOylB,EACP2mD,EAAWpD,KASf,OARAmD,EAAOlD,OAAOpgJ,KAAK,CACjBO,KAAM8/I,GAAKc,cACXhqE,KAAMA,EACNosE,SAAUA,IAIZjB,GAAiB3mE,EAAUihB,EAAO0mD,GAC3BC,CAEX,GACC,CACD/iJ,KAAM,QACNm/I,WAAW,EACX+C,MAAOnD,GAAOz8C,MACd6/C,SAAU,SAAkBhnE,EAAUihB,GACpC,GAA+B,MAA3BjhB,EAASmnE,eAAwB,CAEnC,IAAIU,EAAmBrD,KACnBr9C,EAAQq9C,KACRjkJ,EAASy/E,EAASA,EAAS59E,OAAS,GAYxC,OAXAylJ,EAAiBpD,OAAOpgJ,KAAK,CAC3BO,KAAM8/I,GAAKe,MACXllJ,OAAQA,EACR4mG,MAAOA,IAITw/C,GAAiB3mE,EAAUihB,EAAO4mD,GAClC7nE,EAASonE,gBAGFjgD,CACT,CAAO,GAAInnB,EAASmnE,iBAAmBlmD,EAAO,CAE5C,IAAI6mD,EAAWtD,KACX/zG,EAAOuvC,EAASA,EAAS59E,OAAS,GAClCsuC,EAAQ8zG,KACRN,EAAUM,KACVuD,EAASvD,KACTwD,EAAUxD,KAgCd,OA7BAsD,EAASrD,OAAOpgJ,KAAK,CACnBO,KAAM8/I,GAAKmB,eACXp1G,KAAMA,EACNC,MAAOA,EACPwzG,QAASA,IAIXA,EAAQO,OAASxjD,EAAMwjD,OACvBxjD,EAAMwjD,OAAS,CAAC,CACd7/I,KAAM8/I,GAAKoB,OAIbkC,EAAQvD,OAAOpgJ,KAAK,CAClBO,KAAM8/I,GAAKoB,OAEbp1G,EAAM+zG,OAAOpgJ,KAAK,CAChBO,KAAM8/I,GAAKiB,OAEXplJ,OAAQynJ,EACR7gD,MAAO4gD,IAGTpB,GAAiB3mE,EAAUvvC,EAAMq3G,GAGjC9nE,EAASmnE,eAAiBjD,EAC1BlkE,EAASonE,gBACFW,CACT,CAGE,IAAIE,EAAWzD,KACX0D,EAAU1D,KACV2D,EAAY,CAAC,CACfvjJ,KAAM8/I,GAAKiB,OACXplJ,OAAQ0nJ,EACR9gD,MAAO+gD,IAQT,OAJAD,EAASxD,OAASxjD,EAAMwjD,OACxBxjD,EAAMwjD,OAAS0D,EAEfnoE,EAASonE,gBACFc,CAEX,GACC,CACDrjJ,KAAM,aACNm/I,WAAW,EACX+C,MAAOnD,GAAOK,WACd+C,SAAU,SAAkBhnE,EAAUihB,GACpC,GAA+B,MAA3BjhB,EAASmnE,eAAwB,CAEnC,IAAIiB,EAAa5D,KACbP,EAAaO,KACbtjD,EAAWlhB,EAASA,EAAS59E,OAAS,GAY1C,OAXAgmJ,EAAW3D,OAAOpgJ,KAAK,CACrBO,KAAM8/I,GAAKgB,WACXxkD,SAAUA,EACV+iD,WAAYA,IAId0C,GAAiB3mE,EAAUihB,EAAOmnD,GAClCpoE,EAASonE,gBAGFnD,CACT,CAAO,GAAIjkE,EAASmnE,iBAAmBlmD,EAAO,CAE5C,IAAI6mD,EAAWtD,KACX/zG,EAAOuvC,EAASA,EAAS59E,OAAS,GAClCsuC,EAAQ8zG,KACRN,EAAUM,KACV6D,EAAc7D,KACd8D,EAAY9D,KAgChB,OA7BAsD,EAASrD,OAAOpgJ,KAAK,CACnBO,KAAM8/I,GAAKmB,eACXp1G,KAAMA,EACNC,MAAOA,EACPwzG,QAASA,IAIXA,EAAQO,OAASxjD,EAAMwjD,OACvBxjD,EAAMwjD,OAAS,CAAC,CACd7/I,KAAM8/I,GAAKoB,OAIbwC,EAAU7D,OAAOpgJ,KAAK,CACpBO,KAAM8/I,GAAKoB,OAEbp1G,EAAM+zG,OAAOpgJ,KAAK,CAChBO,KAAM8/I,GAAKkB,SAEX1kD,SAAUonD,EACVrE,WAAYoE,IAGd1B,GAAiB3mE,EAAUvvC,EAAMq3G,GAGjC9nE,EAASmnE,eAAiBjD,EAC1BlkE,EAASonE,gBACFiB,CACT,CAGE,IAAIE,EAAa/D,KACbgE,EAAehE,KACfiE,EAAY,CAAC,CACf7jJ,KAAM8/I,GAAKkB,SACX1kD,SAAUqnD,EACVtE,WAAYuE,IAQd,OAJAD,EAAW9D,OAASxjD,EAAMwjD,OAC1BxjD,EAAMwjD,OAASgE,EAEfzoE,EAASonE,gBACFoB,CAEX,GACC,CACD3jJ,KAAM,UACN6jJ,UAAU,EACV3B,MAAOnD,GAAOM,QACd8C,SAAU,SAAkBhnE,EAAUihB,GACpC,GAA+B,MAA3BjhB,EAASmnE,gBAA0BnnE,EAASmnE,iBAAmBlmD,EAEjE,OADAptE,GAAK,wCAA0CmsD,EAAS19E,WAAa,MAC9D,EAET09E,EAASmnE,eAAiBlmD,EAC1B,IAAI0nD,EAAO3oE,EAASA,EAAS59E,OAAS,GAClCwmJ,EAASD,EAAKlE,OAAO,GACrBoE,EAAoB,MAAVD,EAAiB,KAAOA,EAAOhkJ,KACzCikJ,IAAYnE,GAAKW,cAInBuD,EAAOhkJ,KAAO8/I,GAAKa,YACVsD,IAAYnE,GAAKU,kBAI1BwD,EAAOhkJ,KAAO8/I,GAAKc,cACnBoD,EAAOptE,KAAOotE,EAAO1pE,MAAM,GAC3B0pE,EAAOhB,SAAWgB,EAAO1pE,MAAM,GAG/B0pE,EAAO1pE,MAAQ,KAEnB,IAEF4nE,GAAM97I,SAAQ,SAAU3E,GACtB,OAAOA,EAAEyiJ,SAAW,IAAIzyE,OAAO,IAAMhwE,EAAE0gJ,MACzC,IAOA,IAAIgC,GAAc,SAAqBv3C,GAIrC,IAHA,IAAIw3C,EACAttI,EACA7W,EACKwG,EAAI,EAAGA,EAAIy7I,GAAM1kJ,OAAQiJ,IAAK,CACrC,IAAIhF,EAAIygJ,GAAMz7I,GACV8U,EAAI9Z,EAAExB,KACN+U,EAAI43F,EAAU91F,MAAMrV,EAAEyiJ,UAC1B,GAAS,MAALlvI,EAAW,CACb8B,EAAQ9B,EACRovI,EAAO3iJ,EACPxB,EAAOsb,EACP,IAAI8oI,EAAWrvI,EAAE,GACjB43F,EAAYA,EAAU1uB,UAAUmmE,EAAS7mJ,QACzC,KACF,CACF,CAEA,MAAO,CACL4mJ,KAAMA,EACNttI,MAAOA,EACP7W,KAAMA,EACN2sG,UAAWA,EAEf,EAOI03C,GAAoB,SAA2B13C,GACjD,IAAI91F,EAAQ81F,EAAU91F,MAAM,QAC5B,GAAIA,EAAO,CACT,IAAIutI,EAAWvtI,EAAM,GACrB81F,EAAYA,EAAU1uB,UAAUmmE,EAAS7mJ,OAC3C,CACA,OAAOovG,CACT,EAOIxkF,GAAQ,SAAegzD,GACzB,IAAIx5E,EAAOpG,KACPoxG,EAAYhrG,EAAK2iJ,UAAYnpE,EAC7BopE,EAAe5iJ,EAAK,GAAKg+I,KAI7B,IAHAh+I,EAAKpE,OAAS,EACdovG,EAAY03C,GAAkB13C,KAErB,CACP,IAAI63C,EAAWN,GAAYv3C,GAC3B,GAAqB,MAAjB63C,EAASL,KAEX,OADAn1H,GAAK,iBAAmBmsD,EAAW,gBAC5B,EAEP,IAAI3sE,EAAOg2I,EAAS3tI,MAAMnZ,MAAM,GAG5B2yE,EAAMm0E,EAASL,KAAKhC,SAASxgJ,EAAM4iJ,EAAc/1I,GACrD,IAAY,IAAR6hE,EACF,OAAO,EASX,GARoB,MAAPA,IACTk0E,EAAel0E,GAInBs8B,EAAY63C,EAAS73C,UAGjBA,EAAU91F,MAAM,SAClB,KAEJ,CACA,IAAI2rI,EAAQ7gJ,EAAKA,EAAKpE,OAAS,GACJ,MAAvBoE,EAAK2gJ,iBACPE,EAAMnD,QAAU19I,EAAK2gJ,gBAEvBE,EAAMjN,UAAY5zI,EAAK4zI,UACvBiN,EAAMD,cAAgB5gJ,EAAK4gJ,cAC3B,IAAK,IAAIhjJ,EAAI,EAAGA,EAAIoC,EAAKpE,OAAQgC,IAAK,CACpC,IAAIigH,EAAI79G,EAAKpC,GAGb,GAAIigH,EAAE+iC,cAAgB,GAAK/iC,EAAE+1B,UAAY,EAEvC,OADAvmH,GAAK,iBAAmBmsD,EAAW,+EAC5B,EAET,GAAIqkC,EAAE+1B,UAAY,EAEhB,OADAvmH,GAAK,iBAAmBmsD,EAAW,yDAC5B,EACkB,IAAhBqkC,EAAE+1B,WACXvmH,GAAK,iBAAmBmsD,EAAW,6RAEvC,CACA,OAAO,CACT,EAOI19E,GAAW,WACb,GAA0B,MAAtBlC,KAAKkpJ,cACP,OAAOlpJ,KAAKkpJ,cA4Fd,IA1FA,IAAIC,EAAQ,SAAe3pI,GACzB,OAAW,MAAPA,EACK,GAEAA,CAEX,EACI4pI,EAAW,SAAkBp6I,GAC/B,OAAIqQ,EAAOrQ,GACF,IAAMA,EAAM,IAEZm6I,EAAMn6I,EAEjB,EACIq6I,EAAQ,SAAer6I,GACzB,MAAO,IAAMA,EAAM,GACrB,EACIs6I,EAAgB,SAAuB5rI,EAAOomI,GAChD,IAAIt/I,EAAOkZ,EAAMlZ,KACf1C,EAAQ4b,EAAM5b,MAChB,OAAQ0C,GACN,KAAK8/I,GAAKC,MAEN,IAAIrpG,EAAQiuG,EAAMrnJ,GAClB,OAAOo5C,EAAMwnC,UAAU,EAAGxnC,EAAMl5C,OAAS,GAE7C,KAAKsiJ,GAAKI,aAEN,IAAIlvE,EAAQ93D,EAAM83D,MAChBsxE,EAAWppI,EAAMopI,SACnB,MAAO,IAAMtxE,EAAQ6zE,EAAMF,EAAMrC,IAAasC,EAAStnJ,GAAS,IAEpE,KAAKwiJ,GAAKM,UAEN,IAAI2E,EAAY7rI,EAAMopI,SACpB0C,EAAS9rI,EAAM83D,MACjB,MAAO,IAAM2zE,EAAMI,GAAaC,EAAS,IAE7C,KAAKlF,GAAKK,WAEN,IAAI8E,EAAU/rI,EAAM83D,MACpB,MAAO,IAAMi0E,EAAU,IAE3B,KAAKnF,GAAKO,aAEN,IAAI6E,EAAahsI,EAAMopI,SACrB6C,EAAUjsI,EAAM83D,MAClB,MAAO,KAAOm0E,EAAUN,EAAMF,EAAMO,IAAeN,EAAStnJ,GAAS,KAEzE,KAAKwiJ,GAAK1lI,MAEN,OAAO9c,EAEX,KAAKwiJ,GAAKQ,GAEN,MAAO,IAAMhjJ,EAEjB,KAAKwiJ,GAAKS,MAEN,MAAO,IAAMjjJ,EAEjB,KAAKwiJ,GAAKiB,OACV,KAAKjB,GAAKe,MAEN,OAAOuE,EAAclsI,EAAMvd,OAAQ2jJ,GAAWuF,EAAM,KAAOO,EAAclsI,EAAMqpF,MAAO+8C,GAE1F,KAAKQ,GAAKkB,SACV,KAAKlB,GAAKgB,WAEN,OAAOsE,EAAclsI,EAAMojF,SAAUgjD,GAAW,IAAM8F,EAAclsI,EAAMmmI,WAAYC,GAE1F,KAAKQ,GAAKmB,eAEN,IAAIoE,EAAMD,EAAclsI,EAAM2yB,KAAMyzG,GAChCl5D,EAAMg/D,EAAclsI,EAAMomI,QAASA,GACnCgG,EAAMF,EAAclsI,EAAM4yB,MAAOwzG,GACrC,OAAO+F,GAAOA,EAAI7nJ,OAAS,EAAI,IAAM,IAAM4oF,EAAMk/D,EAErD,KAAKxF,GAAKoB,KAEN,MAAO,GAGf,EACIkE,EAAgB,SAAuB/oD,EAAOijD,GAChD,OAAOjjD,EAAMwjD,OAAO/4H,QAAO,SAAU4oD,EAAK61E,EAAK/lJ,GAC7C,OAAOkwE,GAAO4vE,IAAYjjD,GAAe,IAAN78F,EAAU,IAAM,IAAMslJ,EAAcS,EAAKjG,EAC9E,GAAG,GACL,EACI5vE,EAAM,GACDlwE,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI68F,EAAQ7gG,KAAKgE,GACjBkwE,GAAO01E,EAAc/oD,EAAOA,EAAMijD,SAC9B9jJ,KAAKgC,OAAS,GAAKgC,EAAIhE,KAAKgC,OAAS,IACvCkyE,GAAO,KAEX,CAEA,OADAl0E,KAAKkpJ,cAAgBh1E,EACdA,CACT,EACI81E,GAAU,CACZp9H,MAAOA,GACP1qB,SAAUA,IAGR+nJ,GAAS,SAAgBC,EAAUpD,EAAUhlJ,GAC/C,IAAI8jJ,EAIAuE,EAAUC,EAHVC,EAAahrI,EAAO6qI,GACpBI,EAAanoC,EAAS+nC,GACtBK,EAAWlrI,EAAOvd,GAElB0oJ,GAAkB,EAClBC,GAAU,EACVC,GAAY,EAoBhB,OAnBI5D,EAASzvI,QAAQ,MAAQ,IAC3ByvI,EAAWA,EAASlrI,QAAQ,IAAK,IACjC6uI,GAAU,GAER3D,EAASzvI,QAAQ,MAAQ,IAC3ByvI,EAAWA,EAASlrI,QAAQ,IAAK,IACjC4uI,GAAkB,IAEhBH,GAAcE,GAAYC,KAC5BL,EAAYE,GAAeC,EAAkB,GAAKJ,EAAV,GACxCE,EAAS,GAAKtoJ,GAKZ0oJ,IACFN,EAAWC,EAAWA,EAAS7qI,cAC/Bxd,EAAQsoJ,EAASA,EAAO9qI,eAElBwnI,GACN,IAAK,KACHlB,EAAUuE,EAAS9yI,QAAQ+yI,IAAW,EACtC,MACF,IAAK,KACHxE,EAAUuE,EAAS9yI,QAAQ+yI,EAAQD,EAASnoJ,OAASooJ,EAAOpoJ,SAAW,EACvE,MACF,IAAK,KACH4jJ,EAAuC,IAA7BuE,EAAS9yI,QAAQ+yI,GAC3B,MACF,IAAK,IACHxE,EAAUsE,IAAapoJ,EACvB,MACF,IAAK,IACH4oJ,GAAY,EACZ9E,EAAUsE,EAAWpoJ,EACrB,MACF,IAAK,KACH4oJ,GAAY,EACZ9E,EAAUsE,GAAYpoJ,EACtB,MACF,IAAK,IACH4oJ,GAAY,EACZ9E,EAAUsE,EAAWpoJ,EACrB,MACF,IAAK,KACH4oJ,GAAY,EACZ9E,EAAUsE,GAAYpoJ,EACtB,MACF,QACE8jJ,GAAU,EACV,MAOJ,OAHI6E,GAAwB,MAAZP,GAAqBQ,IACnC9E,GAAWA,GAENA,CACT,EACI+E,GAAU,SAAiBT,EAAUpD,GACvC,OAAQA,GACN,IAAK,IACH,QAAOoD,EACT,IAAK,IACH,OAAOA,EACT,IAAK,IACH,YAAoBxnJ,IAAbwnJ,EAEb,EACIU,GAAW,SAAkBV,GAC/B,YAAoBxnJ,IAAbwnJ,CACT,EACIW,GAAS,SAAcnsD,EAAKlpB,GAC9B,OAAOkpB,EAAIz/E,KAAKu2D,EAClB,EACIvrE,GAAO,SAAcy0F,EAAKlpB,GAC5B,OAAOkpB,EAAIlpB,IACb,EAGIl6D,GAAQ,GAORwvI,GAAY,SAAiBjqD,EAAOnC,GACtC,OAAOmC,EAAMwjD,OAAOjxD,OAAM,SAAU22D,GAClC,OAAOzuI,GAAMyuI,EAAIvlJ,MAAMulJ,EAAKrrD,EAC9B,GACF,EACApjF,GAAMgpI,GAAKC,OAAS,SAAU7mI,EAAOghF,GACnC,IAAIxjD,EAAQx9B,EAAM5b,MAClB,MAAiB,MAAVo5C,GAAiBA,IAAUwjD,EAAIxjD,OACxC,EACA5/B,GAAMgpI,GAAK1lI,OAAS,SAAUlB,EAAOghF,GACnC,IAAIqsD,EAAgBrtI,EAAM5b,MAC1B,OAAOokJ,GAAqB6E,EAAersD,EAC7C,EACApjF,GAAMgpI,GAAKQ,IAAM,SAAUpnI,EAAOghF,GAChC,IAAIl1F,EAAKkU,EAAM5b,MACf,OAAO48F,EAAIl1F,OAASA,CACtB,EACA8R,GAAMgpI,GAAKS,OAAS,SAAUrnI,EAAOghF,GACnC,IAAIq0B,EAAMr1G,EAAM5b,MAChB,OAAO48F,EAAIwN,SAAS6mB,EACtB,EACAz3G,GAAMgpI,GAAKO,cAAgB,SAAUnnI,EAAOghF,GAC1C,IAAIlpB,EAAQ93D,EAAM83D,MAChBsxE,EAAWppI,EAAMopI,SACjBhlJ,EAAQ4b,EAAM5b,MAChB,OAAOmoJ,GAAOhgJ,GAAKy0F,EAAKlpB,GAAQsxE,EAAUhlJ,EAC5C,EACAwZ,GAAMgpI,GAAKI,cAAgB,SAAUhnI,EAAOghF,GAC1C,IAAIlpB,EAAQ93D,EAAM83D,MAChBsxE,EAAWppI,EAAMopI,SACjBhlJ,EAAQ4b,EAAM5b,MAChB,OAAOmoJ,GAAOY,GAAOnsD,EAAKlpB,GAAQsxE,EAAUhlJ,EAC9C,EACAwZ,GAAMgpI,GAAKM,WAAa,SAAUlnI,EAAOghF,GACvC,IAAIlpB,EAAQ93D,EAAM83D,MAChBsxE,EAAWppI,EAAMopI,SACnB,OAAO6D,GAAQE,GAAOnsD,EAAKlpB,GAAQsxE,EACrC,EACAxrI,GAAMgpI,GAAKK,YAAc,SAAUjnI,EAAOghF,GACxC,IAAIlpB,EAAQ93D,EAAM83D,MAElB,OADE93D,EAAMopI,SACD8D,GAASC,GAAOnsD,EAAKlpB,GAC9B,EACAl6D,GAAMgpI,GAAKU,iBAAmB,SAAUtnI,EAAOghF,GAC7C,IAAIssD,EAAKttI,EAAMohE,MAAM,GACjBmsE,EAAKvtI,EAAMohE,MAAM,GACjBhzE,EAAM4yF,EAAIh6F,SACVi8F,EAAMjC,EAAIh5F,SACd,OAAOolJ,GAAUE,EAAIl/I,IAAQg/I,GAAUG,EAAItqD,IAAQmqD,GAAUG,EAAIn/I,IAAQg/I,GAAUE,EAAIrqD,EACzF,EACArlF,GAAMgpI,GAAKc,eAAiB,SAAU1nI,EAAOghF,GAC3C,OAAOosD,GAAUptI,EAAM09D,KAAMsjB,IAAQA,EAAIm3B,eAAe9wC,MAAK,SAAUhlE,GACrE,OAAOA,EAAEk/E,UAAY6rD,GAAUptI,EAAM8pI,SAAUznI,EACjD,GACF,EACAzE,GAAMgpI,GAAKW,eAAiB,SAAUvnI,EAAOghF,GAC3C,OAAOosD,GAAUptI,EAAMhZ,OAAQg6F,EAAIh6F,WAAaomJ,GAAUptI,EAAMhY,OAAQg5F,EAAIh5F,SAC9E,EACA4V,GAAMgpI,GAAKY,aAAe,SAAUxnI,EAAOghF,GACzC,OAAOosD,GAAUptI,EAAMhZ,OAAQg6F,IAAQA,EAAIkwC,WAAW7pD,MAAK,SAAUhlE,GACnE,OAAOA,EAAEk/E,UAAY6rD,GAAUptI,EAAMhY,OAAQqa,EAC/C,GACF,EACAzE,GAAMgpI,GAAKa,aAAe,SAAUznI,EAAOghF,GACzC,OAAOosD,GAAUptI,EAAMhY,OAAQg5F,IAAQA,EAAIwsD,WAAWnmE,MAAK,SAAUhlE,GACnE,OAAOA,EAAEk/E,UAAY6rD,GAAUptI,EAAMhZ,OAAQqb,EAC/C,GACF,EACAzE,GAAMgpI,GAAKe,OAAS,SAAU3nI,EAAOghF,GACnC,OAAOosD,GAAUptI,EAAMqpF,MAAOrI,IAAQosD,GAAUptI,EAAMvd,OAAQu+F,EAAIv+F,SACpE,EACAmb,GAAMgpI,GAAKiB,QAAU,SAAU7nI,EAAOghF,GACpC,OAAOosD,GAAUptI,EAAMvd,OAAQu+F,IAAQA,EAAI3f,WAAWgG,MAAK,SAAUliF,GACnE,OAAOioJ,GAAUptI,EAAMqpF,MAAOlkG,EAChC,GACF,EACAyY,GAAMgpI,GAAKgB,YAAc,SAAU5nI,EAAOghF,GACxC,OAAOosD,GAAUptI,EAAMmmI,WAAYnlD,IAAQA,EAAIysD,YAAYpmE,MAAK,SAAUpiF,GACxE,OAAOmoJ,GAAUptI,EAAMojF,SAAUn+F,EACnC,GACF,EACA2Y,GAAMgpI,GAAKkB,UAAY,SAAU9nI,EAAOghF,GACtC,OAAOosD,GAAUptI,EAAMojF,SAAUpC,IAAQA,EAAIgE,cAAc3d,MAAK,SAAU73D,GACxE,OAAO49H,GAAUptI,EAAMmmI,WAAY32H,EACrC,GACF,EACA5R,GAAMgpI,GAAKmB,gBAAkB,SAAU/nI,EAAOghF,GAC5C,OAAOosD,GAAUptI,EAAMomI,QAASplD,IAAQosD,GAAUptI,EAAM2yB,KAAMquD,IAAQosD,GAAUptI,EAAM4yB,MAAOouD,EAC/F,EACApjF,GAAMgpI,GAAKoB,MAAQ,WACjB,OAAO,CACT,EACApqI,GAAMgpI,GAAKE,YAAc,SAAU9mI,EAAOghF,GACxC,IAAIte,EAAa1iE,EAAM5b,MACvB,OAAOs+E,EAAW/7E,IAAIq6F,EACxB,EACApjF,GAAMgpI,GAAKG,QAAU,SAAU/mI,EAAOghF,GACpC,IAAI1uE,EAAStS,EAAM5b,MACnB,OAAOkuB,EAAO0uE,EAChB,EAGA,IAAI1uE,GAAS,SAAgBowD,GAC3B,IAAIh6E,EAAOpG,KAGX,GAAoB,IAAhBoG,EAAKpE,QAA0C,IAA1BoE,EAAK,GAAGi+I,OAAOriJ,QAAgBoE,EAAK,GAAGi+I,OAAO,GAAG7/I,OAAS8/I,GAAKQ,GACtF,OAAO1kE,EAAW+7B,eAAe/1G,EAAK,GAAGi+I,OAAO,GAAGviJ,OAAOs+E,aAE5D,IAAIgrE,EAAmB,SAA0BvxC,GAC/C,IAAK,IAAI5uG,EAAI,EAAGA,EAAI7E,EAAKpE,OAAQiJ,IAAK,CACpC,IAAI41F,EAAQz6F,EAAK6E,GACjB,GAAI6/I,GAAUjqD,EAAOgZ,GACnB,OAAO,CAEX,CACA,OAAO,CACT,EAMA,OALmB,MAAfzzG,EAAKu2B,SACPyuH,EAAmB,WACjB,OAAO,CACT,GAEKhrE,EAAWpwD,OAAOo7H,EAC3B,EAGIxF,GAAU,SAAiBlnD,GAE7B,IADA,IAAIt4F,EAAOpG,KACFiL,EAAI,EAAGA,EAAI7E,EAAKpE,OAAQiJ,IAAK,CACpC,IAAI41F,EAAQz6F,EAAK6E,GACjB,GAAI6/I,GAAUjqD,EAAOnC,GACnB,OAAO,CAEX,CACA,OAAO,CACT,EAEI2sD,GAAW,CACbzF,QAASA,GACT51H,OAAQA,IAGNs7H,GAAW,SAAkB1rE,GAC/B5/E,KAAK+oJ,UAAYnpE,EACjB5/E,KAAK+mJ,eAAiB,KACtB/mJ,KAAKgnJ,cAAgB,EACrBhnJ,KAAKg6I,UAAY,EACjBh6I,KAAKgC,OAAS,EACE,MAAZ49E,GAAoBvgE,EAAOugE,IAAaA,EAAStkE,MAAM,WAAqB2mG,EAAoBriC,GAClG5/E,KAAKurJ,SAAS,CACZlH,OAAQ,CAAC,CACP7/I,KAAM8/I,GAAKE,WACX1iJ,MAAO89E,EAASQ,iBAGX4hC,EAAKpiC,GACd5/E,KAAKurJ,SAAS,CACZlH,OAAQ,CAAC,CACP7/I,KAAM8/I,GAAKG,OACX3iJ,MAAO89E,MAGFvgE,EAAOugE,GACX5/E,KAAK4sB,MAAMgzD,KACd5/E,KAAKy3E,SAAU,GAGjB5gE,GAAM,oDAEV,EACI20I,GAAQF,GAAS/jJ,UACrB,CAACyiJ,GAASqB,IAAUzgJ,SAAQ,SAAUizC,GACpC,OAAO6lE,GAAO8nC,GAAO3tG,EACvB,IACA2tG,GAAM7uH,KAAO,WACX,OAAO38B,KAAK+oJ,SACd,EACAyC,GAAMliE,KAAO,WACX,OAAOtpF,KAAKgC,MACd,EACAwpJ,GAAMC,GAAK,SAAUznJ,GACnB,OAAOhE,KAAKgE,EACd,EACAwnJ,GAAME,SAAW,SAAUC,GACzB,OAAQ3rJ,KAAKy3E,UAAYk0E,EAASl0E,SAAWz3E,KAAK28B,SAAWgvH,EAAShvH,MACxE,EACA6uH,GAAMD,SAAW,SAAUtnC,GACzBjkH,KAAKA,KAAKgC,UAAYiiH,CACxB,EACAunC,GAAM5rE,SAAW4rE,GAAMtpJ,SAEvB,IAAI0pJ,GAAW,CACbC,OAAQ,SAAgBjsE,GACtB,IAAIksE,EAAS,IAAIR,GAAS1rE,GAC1B,OAAO5/E,KAAKozF,OAAM,SAAUsL,GAC1B,OAAOotD,EAAOlG,QAAQlnD,EACxB,GACF,EACAt7F,GAAI,SAAYw8E,GACd,IAAIksE,EAAS,IAAIR,GAAS1rE,GAC1B,OAAO5/E,KAAK+kF,MAAK,SAAU2Z,GACzB,OAAOotD,EAAOlG,QAAQlnD,EACxB,GACF,EACA3Z,KAAM,SAAcviF,EAAIkuG,GACtB,IAAK,IAAI1sG,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI8wE,EAAO47B,EAAiCluG,EAAGM,MAAM4tG,EAAS,CAAC1wG,KAAKgE,GAAIA,EAAGhE,OAAtDwC,EAAGxC,KAAKgE,GAAIA,EAAGhE,MACpC,GAAI80E,EACF,OAAO,CAEX,CACA,OAAO,CACT,EACAse,MAAO,SAAe5wF,EAAIkuG,GACxB,IAAK,IAAI1sG,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI8wE,EAAO47B,EAAiCluG,EAAGM,MAAM4tG,EAAS,CAAC1wG,KAAKgE,GAAIA,EAAGhE,OAAtDwC,EAAGxC,KAAKgE,GAAIA,EAAGhE,MACpC,IAAK80E,EACH,OAAO,CAEX,CACA,OAAO,CACT,EACAkiC,KAAM,SAAc52B,GAElB,GAAIpgF,OAASogF,EACX,OAAO,EAETA,EAAapgF,KAAKmvB,KAAKixD,WAAWA,GAClC,IAAI2rE,EAAa/rJ,KAAKgC,OAClBgqJ,EAAmB5rE,EAAWp+E,OAGlC,OAAI+pJ,IAAeC,IAKA,IAAfD,EACK/rJ,KAAK,KAAOogF,EAAW,GAEzBpgF,KAAKozF,OAAM,SAAUsL,GAC1B,OAAOte,EAAWi4C,iBAAiB35B,EAAIl1F,KACzC,IACF,EACAyiJ,QAAS,SAAiB7rE,GAExB,OADAA,EAAapgF,KAAKmvB,KAAKixD,WAAWA,GAC3BpgF,KAAK+kF,MAAK,SAAU2Z,GACzB,OAAOte,EAAWi4C,iBAAiB35B,EAAIl1F,KACzC,GACF,EACA0iJ,gBAAiB,SAAyB9rE,GACxCA,EAAapgF,KAAKmvB,KAAKixD,WAAWA,GAClC,IAAI+rE,EAAQnsJ,KAAK61H,eACjB,OAAOz1C,EAAWgT,OAAM,SAAUsL,GAChC,OAAOytD,EAAM9zB,iBAAiB35B,EAAIl1F,KACpC,GACF,EACAkqF,SAAU,SAAkBtT,GAC1BA,EAAapgF,KAAKmvB,KAAKixD,WAAWA,GAClC,IAAIh6E,EAAOpG,KACX,OAAOogF,EAAWgT,OAAM,SAAUsL,GAChC,OAAOt4F,EAAKiyH,iBAAiB35B,EAAIl1F,KACnC,GACF,GAEFoiJ,GAASQ,iBAAmBR,GAASM,gBACrCN,GAASvnJ,IAAMunJ,GAASl4D,SACxBk4D,GAASS,MAAQT,GAASxkE,OAASwkE,GAAS50C,KAE5C,IAsMIs1C,GAAMC,GAtMNh3H,GAAQ,SAAe/yB,EAAIiC,GAC7B,OAAO,SAAwB+nJ,EAAMC,EAAMC,EAAMC,GAC/C,IAEI9oJ,EAFA+oJ,EAAiBJ,EACjBpkD,EAAOpoG,KAOX,GALsB,MAAlB4sJ,EACF/oJ,EAAM,GACGo+G,EAAoB2qC,IAA6C,IAA1BA,EAAe5qJ,SAC/D6B,EAAM+oJ,EAAepjJ,MAEH,IAAhB4+F,EAAKpmG,QAAgB6B,EAAK,CAC5B,IAAI6tH,EAAKtpB,EAAK,GAAGvnB,SACbgsE,EAAMn7B,EAAGW,eAAiBX,EAAGW,gBAAkB,CAAC,EAChDy6B,EAAKD,EAAIpoJ,GAAQooJ,EAAIpoJ,IAAS,GAC9B8pH,EAAOa,GAAWvrH,GAClBkpJ,EAAWD,EAAGv+B,GAClB,OAAIw+B,IAGKD,EAAGv+B,GAAQ/rH,EAAGnC,KAAK+nG,EAAMokD,EAAMC,EAAMC,EAAMC,GAEtD,CACE,OAAOnqJ,EAAGnC,KAAK+nG,EAAMokD,EAAMC,EAAMC,EAAMC,EAE3C,CACF,EAEIK,GAAW,CACb7sJ,OAAQ,SAAgBy/E,GACtB,IAAIqtE,EAAU,GAGd,GAAoB,IAAhBjtJ,KAAKgC,OAAc,CACrB,IAAI7B,EAASH,KAAK,GAAG6gF,SAAS1gF,OAC9B,GAAIA,EACF,OAAOA,CAEX,CACA,IAAK,IAAI6D,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GACX4jJ,EAAUlpD,EAAI7d,SAAS1gF,OACvBynJ,GACFqF,EAAQhpJ,KAAK2jJ,EAEjB,CACA,OAAO5nJ,KAAKm2H,MAAM82B,GAAS,GAAMj9H,OAAO4vD,EAC1C,EACAqtE,QAAS,SAAiBrtE,GACxB,IAAIqtE,EAAU,GACV7kD,EAAOpoG,KAAKG,SAChB,MAAOioG,EAAK8kD,WAAY,CACtB,IAAK,IAAIlpJ,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACfipJ,EAAQhpJ,KAAKy6F,EACf,CACA0J,EAAOA,EAAKjoG,QACd,CACA,OAAOH,KAAKm2H,MAAM82B,GAAS,GAAMj9H,OAAO4vD,EAC1C,EACAutE,gBAAiB,SAAyBvtE,GAExC,IADA,IAAIurE,EACKnnJ,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GACXipJ,EAAUvuD,EAAIuuD,UAClB9B,EAAYA,GAAa8B,EACzB9B,EAAYA,EAAU31B,UAAUy3B,EAClC,CAEA,OAAO9B,EAAUn7H,OAAO4vD,EAC1B,EACA4zB,QAAS,SAAiB5zB,GACxB,OAAO5/E,KAAKotJ,WAAU,SAAU1uD,GAC9B,OAAOA,EAAIonD,UACb,IAAG91H,OAAO4vD,EACZ,EACAytE,WAAY,SAAoBztE,GAC9B,OAAO5/E,KAAKotJ,WAAU,SAAU1uD,GAC9B,OAAOA,EAAImnD,SACb,IAAG71H,OAAO4vD,EACZ,EACAb,SAAUxpD,IAAM,SAAUqqD,GAExB,IADA,IAAIb,EAAW,GACN/6E,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAG/B,IAFA,IAAI06F,EAAM1+F,KAAKgE,GACXspJ,EAAc5uD,EAAI7d,SAAS9B,SACtB9zE,EAAI,EAAGA,EAAIqiJ,EAAYtrJ,OAAQiJ,IACtC8zE,EAAS96E,KAAKqpJ,EAAYriJ,IAG9B,OAAOjL,KAAKm2H,MAAMp3C,GAAU,GAAM/uD,OAAO4vD,EAC3C,GAAG,YACH+1B,SAAU,SAAkB/1B,GAC1B,OAAO5/E,KAAKG,SAAS4+E,WAAWmzB,IAAIlyG,MAAMgwB,OAAO4vD,EACnD,EACAsf,SAAU,WACR,IAAIR,EAAM1+F,KAAK,GACf,GAAI0+F,EACF,OAAOA,EAAIO,UAA6C,IAAjCP,EAAI7d,SAAS9B,SAAS/8E,MAEjD,EACAm9G,YAAa,WACX,IAAIzgB,EAAM1+F,KAAK,GACf,GAAI0+F,EACF,OAAOA,EAAIO,UAA6C,IAAjCP,EAAI7d,SAAS9B,SAAS/8E,MAEjD,EACA6jJ,QAAS,WACP,IAAInnD,EAAM1+F,KAAK,GACf,GAAI0+F,EACF,OAAOA,EAAIO,UAAmC,MAAvBP,EAAI7d,SAAS1gF,MAExC,EACA2lJ,SAAU,WACR,IAAIpnD,EAAM1+F,KAAK,GACf,GAAI0+F,EACF,OAAOA,EAAIO,UAAmC,MAAvBP,EAAI7d,SAAS1gF,MAExC,EACAuiG,YAAa,SAAqB9iB,GAChC,IAAIg6B,EAAW,GACf,SAASr5G,EAAI6nG,GACX,IAAK,IAAIpkG,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACf41G,EAAS31G,KAAKy6F,GACVA,EAAI3f,WAAWmuE,YACjB3sJ,EAAIm+F,EAAI3f,WAEZ,CACF,CAEA,OADAx+E,EAAIP,KAAK++E,YACF/+E,KAAKm2H,MAAMvc,GAAU,GAAM5pF,OAAO4vD,EAC3C,GAEF,SAAS2tE,GAAgBnlD,EAAM5lG,EAAIgrJ,EAAaC,GAK9C,IAJA,IAAIxpC,EAAI,GACJypC,EAAM,IAAIl8B,GACVriG,EAAKi5E,EAAKj5E,KACVw+H,EAAex+H,EAAGy+H,mBACb5pJ,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACXwpJ,EACFvpC,EAAEhgH,KAAKy6F,GACEivD,GACTF,EAAcxpC,EAAGypC,EAAKhvD,EAE1B,CACA,MAAOulB,EAAEjiH,OAAS,EAAG,CACnB,IAAIu/I,EAAOt9B,EAAE7rF,QACb51B,EAAG++I,GACHmM,EAAIntJ,IAAIghJ,EAAK/3I,MACTmkJ,GACFF,EAAcxpC,EAAGypC,EAAKnM,EAE1B,CACA,OAAOn5C,CACT,CACA,SAASylD,GAAY5pC,EAAGypC,EAAKhvD,GAC3B,GAAIA,EAAIQ,WAEN,IADA,IAAIngB,EAAW2f,EAAI7d,SAAS9B,SACnB/6E,EAAI,EAAGA,EAAI+6E,EAAS/8E,OAAQgC,IAAK,CACxC,IAAI+iG,EAAQhoB,EAAS/6E,GAChB0pJ,EAAIrpJ,IAAI0iG,EAAMv9F,OACjBy6G,EAAEhgH,KAAK8iG,EAEX,CAEJ,CAQA,SAAS+mD,GAAU7pC,EAAGypC,EAAKhvD,GACzB,GAAIA,EAAImnD,UAAW,CACjB,IAAI1lJ,EAASu+F,EAAI7d,SAAS1gF,OACrButJ,EAAIrpJ,IAAIlE,EAAOqJ,OAClBy6G,EAAEhgH,KAAK9D,EAEX,CACF,CAKA,SAAS4tJ,GAAqB9pC,EAAGypC,EAAKhvD,GACpCovD,GAAU7pC,EAAGypC,EAAKhvD,GAClBmvD,GAAY5pC,EAAGypC,EAAKhvD,EACtB,CAnBAsuD,GAASgB,YAAc,SAAUxrJ,GAC/B,IAAIgrJ,IAAczqJ,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GACjF,OAAOwqJ,GAAgBvtJ,KAAMwC,EAAIgrJ,EAAaK,GAChD,EASAb,GAASiB,UAAY,SAAUzrJ,GAC7B,IAAIgrJ,IAAczqJ,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GACjF,OAAOwqJ,GAAgBvtJ,KAAMwC,EAAIgrJ,EAAaM,GAChD,EAKAd,GAASkB,iBAAmB,SAAU1rJ,GACpC,IAAIgrJ,IAAczqJ,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GACjF,OAAOwqJ,GAAgBvtJ,KAAMwC,EAAIgrJ,EAAaO,GAChD,EAGAf,GAAS7B,UAAY6B,GAASC,QAG9BX,GAAOC,GAAW,CAChBttI,KAAM64D,GAAO74D,KAAK,CAChBu2D,MAAO,OACP+qE,aAAc,OACdC,cAAc,EACdC,cAAc,EACdE,aAAc,OACdC,sBAAsB,EACtBC,cAAe,UACfH,cAAc,EACdI,cAAe,CACb,IAAM,EACN,QAAU,EACV,QAAU,EACV,QAAU,GAEZC,aAAa,IAEfnuC,WAAY96B,GAAO86B,WAAW,CAC5Bp9B,MAAO,OACPnyD,MAAO,OACPw9H,cAAe,UACfW,cAAc,EACdV,cAAe,CACb,IAAM,EACN,QAAU,EACV,QAAU,EACV,QAAU,GAEZC,aAAa,IAEfr9D,QAAS5L,GAAO74D,KAAK,CACnBu2D,MAAO,UACP+qE,aAAc,UACdC,cAAc,EACdC,cAAc,EACdE,aAAc,UACdC,sBAAsB,EACtBC,cAAe,UACfH,cAAc,EACdK,aAAa,IAEfoN,cAAer2E,GAAO86B,WAAW,CAC/Bp9B,MAAO,UACPnyD,MAAO,UACPw9H,cAAe,UACfW,cAAc,EACdT,aAAa,IAEfjgE,SAAUhJ,GAAO74D,KAAK,CACpBu2D,MAAO,WACPgrE,cAAc,EACdC,cAAc,EACdG,sBAAsB,EACtBF,cAAc,IAEhB0N,eAAgBt2E,GAAO86B,WAAW,CAChCp9B,MAAO,WACPgsE,cAAc,IAEhBh4I,GAAI,WACF,IAAIk1F,EAAM1+F,KAAK,GACf,GAAI0+F,EACF,OAAOA,EAAI7d,SAAS5hE,KAAKzV,EAE7B,GAIF8iJ,GAAKz1H,KAAOy1H,GAAKrtI,KACjBqtI,GAAK+B,WAAa/B,GAAK15C,WACvB,IAiGI07C,GAAMC,GAjGNtvI,GAAOstI,GAEPiC,GAAW,CAAC,EAChB,SAASC,GAAqB5sI,GAC5B,OAAO,SAAU6sI,GACf,IAAItoJ,EAAOpG,KAIX,QAHqB0C,IAAjBgsJ,IACFA,GAAe,GAEG,IAAhBtoJ,EAAKpE,QAGLoE,EAAK64F,WAAa74F,EAAK64E,UAAW,CAIpC,IAHA,IAAIytD,EAAS,EACTtxD,EAAOh1E,EAAK,GACZgvG,EAAiBh6B,EAAKyF,SAASV,MAC1Bn8E,EAAI,EAAGA,EAAIoxG,EAAepzG,OAAQgC,IAAK,CAC9C,IAAI28E,EAAOy0B,EAAepxG,IACrB0qJ,GAAgB/tE,EAAKq0C,WAG1B0X,GAAU7qH,EAASu5D,EAAMuF,GAC3B,CACA,OAAO+rD,CACT,CAGF,CACF,CAwBA,SAASiiB,GAA2BC,EAAU/sI,GAC5C,OAAO,SAAU6sI,GAGf,IAFA,IAAI55E,EACAgK,EAAQ9+E,KAAK8+E,QACR96E,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAAK,CACrC,IAAI06F,EAAM5f,EAAM96E,GACZ0oI,EAAShuC,EAAIkwD,GAAUF,QACZhsJ,IAAXgqI,QAAiChqI,IAARoyE,IAAqBjzD,EAAS6qH,EAAQ53D,KACjEA,EAAM43D,EAEV,CACA,OAAO53D,CACT,CACF,CApCA4uC,GAAO8qC,GAAU,CACf9hB,OAAQ+hB,IAAqB,SAAUrzE,EAAMuF,GAC3C,OAAIA,EAAKj8E,SAASsyG,KAAKr2B,EAAKj7E,UACnB,EAEA,CAEX,IACA2mI,SAAUoiB,IAAqB,SAAUrzE,EAAMuF,GAC7C,OAAIA,EAAKj7E,SAASsxG,KAAK57B,GACd,EAEA,CAEX,IACAkxD,UAAWmiB,IAAqB,SAAUrzE,EAAMuF,GAC9C,OAAIA,EAAKj8E,SAASsyG,KAAK57B,GACd,EAEA,CAEX,MAgBFsoC,GAAO8qC,GAAU,CACfK,UAAWF,GAA2B,UAAU,SAAUjiB,EAAQ99H,GAChE,OAAO89H,EAAS99H,CAClB,IACA49H,UAAWmiB,GAA2B,UAAU,SAAUjiB,EAAQ/9H,GAChE,OAAO+9H,EAAS/9H,CAClB,IACAmgJ,YAAaH,GAA2B,YAAY,SAAUjiB,EAAQ99H,GACpE,OAAO89H,EAAS99H,CAClB,IACAq9H,YAAa0iB,GAA2B,YAAY,SAAUjiB,EAAQ/9H,GACpE,OAAO+9H,EAAS/9H,CAClB,IACAogJ,aAAcJ,GAA2B,aAAa,SAAUjiB,EAAQ99H,GACtE,OAAO89H,EAAS99H,CAClB,IACAs9H,aAAcyiB,GAA2B,aAAa,SAAUjiB,EAAQ/9H,GACtE,OAAO+9H,EAAS/9H,CAClB,MAEF+0G,GAAO8qC,GAAU,CACfQ,YAAa,SAAqBN,GAGhC,IAFA,IAAIxiI,EAAQ,EACR4yD,EAAQ9+E,KAAK8+E,QACR96E,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAChCkoB,GAAS4yD,EAAM96E,GAAG0oI,OAAOgiB,GAE3B,OAAOxiI,CACT,IAIF,IAAI+iI,GAAoB,SAA2B7mD,EAAM8mD,EAAQC,GAC/D,IAAK,IAAInrJ,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACf,IAAK06F,EAAI0E,SAAU,CACjB,IAAIgsD,EAAS1wD,EAAI7d,SAAS/uD,SACtB20D,EAAQ,CACV3mE,EAAe,MAAZovI,EAAOpvI,EAAYovI,EAAOpvI,EAAIsvI,EAAOtvI,EAAI,EAC5C6e,EAAe,MAAZuwH,EAAOvwH,EAAYuwH,EAAOvwH,EAAIywH,EAAOzwH,EAAI,IAE1C+/D,EAAIQ,YAA4B,IAAZzY,EAAM3mE,GAAuB,IAAZ2mE,EAAM9nD,GAC7C+/D,EAAI3f,WAAW3mD,MAAMquD,EAAO0oE,GAE9BzwD,EAAI2wD,uBACN,CACF,CACF,EACIC,GAAc,CAChB95E,MAAO,WACP+qE,aAAc,WACdC,cAAc,EACdC,cAAc,EACdE,aAAc,WACdC,sBAAsB,EACtBC,cAAe,gBACfH,cAAc,EACd6O,UAAW,CAAC,IAAK,KACjBvO,UAAW,SAAmBtiD,GAC5BA,EAAI8wD,sBACN,EACAvO,UAAW,SAAmB74C,EAAM8mD,GAClCD,GAAkB7mD,EAAM8mD,GAAQ,EAClC,EACAhO,MAAO,SAAe94C,GACpBA,EAAKqnD,0BACP,EACAtO,OAAQ,SAAgBziD,GACtB,OAAQA,EAAI0E,QACd,GAEFkrD,GAAOC,GAAW,CAChBz8H,SAAUgmD,GAAO74D,KAAKqwI,IAEtBI,eAAgB53E,GAAO74D,KAAKykG,GAAO,CAAC,EAAG4rC,GAAa,CAClD9O,cAAc,EACdC,cAAc,EACdG,sBAAsB,EACtBF,cAAc,EACdO,UAAW,SAAmB74C,EAAM8mD,GAClCD,GAAkB7mD,EAAM8mD,GAAQ,EAClC,EACAhO,MAAO,SAAe94C,GACpBA,EAAKqnD,0BACP,KAEF1lD,UAAW,SAAmB17F,EAAK8gJ,GACjC,GAAIjtC,EAAY7zG,GACV8gJ,EACFnvJ,KAAK0vJ,eAAerhJ,GAEpBrO,KAAK8xB,SAASzjB,QAEX,GAAI2zG,EAAK3zG,GAAM,CACpB,IAAIgvF,EAAMhvF,EACN8gB,EAAKnvB,KAAKmvB,KACdA,EAAGglF,aACH,IAAK,IAAInwG,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GACX2rJ,OAAO,GACPA,EAAOtyD,EAAIqB,EAAK16F,MACdmrJ,EACFzwD,EAAIgxD,eAAeC,GAEnBjxD,EAAI5sE,SAAS69H,GAGnB,CACAxgI,EAAGilF,UACL,CACA,OAAOp0G,IACT,EAEA4vJ,gBAAiB,SAAyBvhJ,GACxC,OAAOrO,KAAK+pG,UAAU17F,GAAK,EAC7B,EACA+pB,MAAO,SAAe65G,EAAKjjI,EAAKmgJ,GAC9B,IAAI1oE,EAcJ,GAbIy7B,EAAY+vB,IACdxrD,EAAQ,CACN3mE,EAAGqiG,EAAS8vB,EAAInyH,GAAKmyH,EAAInyH,EAAI,EAC7B6e,EAAGwjF,EAAS8vB,EAAItzG,GAAKszG,EAAItzG,EAAI,GAE/BwwH,EAASngJ,GACAqQ,EAAO4yH,IAAQ9vB,EAASnzG,KACjCy3E,EAAQ,CACN3mE,EAAG,EACH6e,EAAG,GAEL8nD,EAAMwrD,GAAOjjI,GAEF,MAATy3E,EAAe,CACjB,IAAIt3D,EAAKnvB,KAAKmvB,KACdA,EAAGglF,aACH,IAAK,IAAInwG,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GAGf,KAAImrB,EAAGy+H,oBAAsBlvD,EAAImnD,WAAannD,EAAIysD,YAAYc,QAAQjsJ,OAAtE,CAGA,IAAIqO,EAAMqwF,EAAI5sE,WACVo9H,EAAS,CACXpvI,EAAGzR,EAAIyR,EAAI2mE,EAAM3mE,EACjB6e,EAAGtwB,EAAIswB,EAAI8nD,EAAM9nD,GAEfwwH,EACFzwD,EAAIgxD,eAAeR,GAEnBxwD,EAAI5sE,SAASo9H,EATf,CAWF,CACA//H,EAAGilF,UACL,CACA,OAAOp0G,IACT,EACA6vJ,YAAa,SAAqB5d,EAAKjjI,GAMrC,OALIkzG,EAAY+vB,GACdjyI,KAAKo4B,MAAM65G,GAAK,GACP5yH,EAAO4yH,IAAQ9vB,EAASnzG,IACjChP,KAAKo4B,MAAM65G,EAAKjjI,GAAK,GAEhBhP,IACT,EAEAo/F,iBAAkB,SAA0B6yC,EAAKjjI,GAC/C,IAAI0vF,EAAM1+F,KAAK,GACXmvB,EAAKnvB,KAAKmvB,KACViuD,EAAOjuD,EAAGiuD,OACV0G,EAAM30D,EAAG20D,MACTgvC,EAAO5Q,EAAY+vB,GAAOA,OAAMvvI,EAChCotJ,OAAmBptJ,IAATowH,QAA8BpwH,IAARsM,GAAqBqQ,EAAO4yH,GAChE,GAAIvzC,GAAOA,EAAIO,SAAU,CAEvB,IAAI6wD,EAWG,CAEL,IAAIzhJ,EAAMqwF,EAAI5sE,WAEd,OADAghG,EAAOsL,GAAwB/vH,EAAK+uE,EAAM0G,QAC9BphF,IAARuvI,EAEKnf,EAGAA,EAAKmf,EAEhB,CArBE,IAAK,IAAIjuI,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAIu9I,EAAOvhJ,KAAKgE,QACJtB,IAARsM,EAEFuyI,EAAKzvH,SAASmgH,GAAMjjI,EAAM80E,EAAImuD,IAAQ70D,QACpB16E,IAATowH,GAETyuB,EAAKzvH,SAASusG,GAAwBvL,EAAM11C,EAAM0G,GAEtD,CAaJ,MAAO,IAAKgsE,EACV,OAGF,OAAO9vJ,IACT,EAGAo3G,iBAAkB,SAA0B66B,EAAKjjI,GAC/C,IAAI0vF,EAAM1+F,KAAK,GACXmvB,EAAKnvB,KAAKmvB,KACV4gI,EAAO7tC,EAAY+vB,GAAOA,OAAMvvI,EAChCotJ,OAAmBptJ,IAATqtJ,QAA8BrtJ,IAARsM,GAAqBqQ,EAAO4yH,GAC5D2b,EAAmBz+H,EAAGy+H,mBAC1B,GAAIlvD,GAAOA,EAAIO,SAAU,CAEvB,IAAI6wD,EAwBG,CAEL,IAAIzhJ,EAAMqwF,EAAI5sE,WACV81H,EAAUgG,EAAmBlvD,EAAIv+F,SAAW,KAC5C6vJ,EAAapI,GAAWA,EAAQ5lJ,OAAS,EACzCiuJ,EAAoBD,EACpBA,IACFpI,EAAUA,EAAQ,IAEpB,IAAIh/G,EAAUqnH,EAAoBrI,EAAQ91H,WAAa,CACrDhS,EAAG,EACH6e,EAAG,GAML,OAJAoxH,EAAO,CACLjwI,EAAGzR,EAAIyR,EAAI8oB,EAAQ9oB,EACnB6e,EAAGtwB,EAAIswB,EAAIiK,EAAQjK,QAETj8B,IAARuvI,EAEK8d,EAGAA,EAAK9d,EAEhB,CA/CE,IAAK,IAAIjuI,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAIksJ,EAAQlwJ,KAAKgE,GACb7D,EAASytJ,EAAmBsC,EAAM/vJ,SAAW,KAC7CgwJ,EAAYhwJ,GAAUA,EAAO6B,OAAS,EACtCouJ,EAAmBD,EACnBA,IACFhwJ,EAASA,EAAO,IAElB,IAAIuoC,EAAS0nH,EAAmBjwJ,EAAO2xB,WAAa,CAClDhS,EAAG,EACH6e,EAAG,QAEOj8B,IAARsM,EAEFkhJ,EAAMp+H,SAASmgH,EAAKjjI,EAAM05B,EAAOupG,SACfvvI,IAATqtJ,GAETG,EAAMp+H,SAAS,CACbhS,EAAGiwI,EAAKjwI,EAAI4oB,EAAO5oB,EACnB6e,EAAGoxH,EAAKpxH,EAAI+J,EAAO/J,GAGzB,CA0BJ,MAAO,IAAKmxH,EACV,OAGF,OAAO9vJ,IACT,GAIFsuJ,GAAK/7C,cAAgB+7C,GAAKt+I,MAAQs+I,GAAKx8H,SACvCw8H,GAAK+B,eAAiB/B,GAAK5iI,OAAS4iI,GAAKvkD,UACzCukD,GAAKgC,cAAgBhC,GAAKlvD,iBAC1BkvD,GAAKiC,cAAgBjC,GAAKl3C,iBAC1B,IAEIo5C,GAAMC,GAFN3+H,GAAWy8H,GAGfiC,GAAOC,GAAW,CAAC,EACnBA,GAASC,oBAAsB,SAAU/wJ,GACvC,IAAI85E,EAAKz5E,KAAKshF,YAAY3hF,GACtBwvB,EAAKnvB,KAAKmvB,KACViuD,EAAOjuD,EAAGiuD,OACV0G,EAAM30D,EAAG20D,MACTh6C,EAAK2vC,EAAG3vC,GAAKszC,EAAO0G,EAAIhkE,EACxBmqB,EAAKwvC,EAAGxvC,GAAKmzC,EAAO0G,EAAIhkE,EACxBiqB,EAAK0vC,EAAG1vC,GAAKqzC,EAAO0G,EAAInlD,EACxBuL,EAAKuvC,EAAGvvC,GAAKkzC,EAAO0G,EAAInlD,EAC5B,MAAO,CACLmL,GAAIA,EACJG,GAAIA,EACJF,GAAIA,EACJG,GAAIA,EACJrgC,EAAGogC,EAAKH,EACRhpC,EAAGopC,EAAKH,EAEZ,EACA0mH,GAAShB,yBAA2B,WAClC,IAAIN,EAASpsJ,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GACxEosB,EAAKnvB,KAAKmvB,KACd,OAAKA,EAAG8vH,gBAAmB9vH,EAAGy+H,oBAG9B5tJ,KAAKiuJ,WAAU,SAAUvvD,GACvB,GAAIA,EAAIQ,WAAY,CAClB,IAAIwyB,EAAKhzB,EAAI7d,SACb6wC,EAAGI,qBAAsB,EACzBJ,EAAGa,QAAU,KACR48B,GACHzwD,EAAIiyD,cAAc,SAEtB,CACF,IACO3wJ,MAZEA,IAaX,EACAywJ,GAASjB,qBAAuB,WAC9B,IAAIztD,EAAQh/F,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GACvEosB,EAAKnvB,KAAKmvB,KAGd,IAAKA,EAAG8vH,iBAAmB9vH,EAAGy+H,mBAC5B,OAAO5tJ,KAIT,IAAK+hG,GAAS5yE,EAAGyhI,WACf,OAAO5wJ,KAET,SAASg3B,EAAO72B,GACd,GAAKA,EAAO++F,WAAZ,CAGA,IAAIwyB,EAAKvxH,EAAO0gF,SACZ9B,EAAW5+E,EAAO4+E,WAClBwC,EAAsE,YAAtDphF,EAAO0wJ,OAAO,8BAA8B/uJ,MAC5D8M,EAAM,CACR45B,MAAO,CACLx5B,IAAK7O,EAAO0wJ,OAAO,aAAaC,QAChCzgH,KAAMlwC,EAAO0wJ,OAAO,uBACpBvgH,MAAOnwC,EAAO0wJ,OAAO,yBAEvBpoH,OAAQ,CACNz5B,IAAK7O,EAAO0wJ,OAAO,cAAcC,QACjCvgH,IAAKpwC,EAAO0wJ,OAAO,uBACnBrgH,OAAQrwC,EAAO0wJ,OAAO,4BAGtBp3E,EAAKsF,EAASuC,YAAY,CAC5BC,cAAeA,EACfC,iBAAiB,EAGjBuvE,UAAU,IAER1iJ,EAAMqjH,EAAG5/F,SAGA,IAAT2nD,EAAG5vE,GAAoB,IAAT4vE,EAAG34E,IACnB24E,EAAK,CACH5vE,EAAG1J,EAAO0wJ,OAAO,SAASC,QAC1BhwJ,EAAGX,EAAO0wJ,OAAO,UAAUC,SAE7Br3E,EAAG3vC,GAAKz7B,EAAIyR,EAAI25D,EAAG5vE,EAAI,EACvB4vE,EAAGxvC,GAAK57B,EAAIyR,EAAI25D,EAAG5vE,EAAI,EACvB4vE,EAAG1vC,GAAK17B,EAAIswB,EAAI86C,EAAG34E,EAAI,EACvB24E,EAAGvvC,GAAK77B,EAAIswB,EAAI86C,EAAG34E,EAAI,GAsCzB,IAAIkwJ,EAAUpiJ,EAAI45B,MAAM6H,KAAKvuC,MACA,OAAzB8M,EAAI45B,MAAM6H,KAAK4gH,OAAkBriJ,EAAI45B,MAAMx5B,IAAM,IACnDgiJ,EAAoB,IAAVA,EAAgBpiJ,EAAI45B,MAAMx5B,KAEtC,IAAIkiJ,EAAWtiJ,EAAI45B,MAAM8H,MAAMxuC,MACD,OAA1B8M,EAAI45B,MAAM8H,MAAM2gH,OAAkBriJ,EAAI45B,MAAMx5B,IAAM,IACpDkiJ,EAAsB,IAAXA,EAAiBtiJ,EAAI45B,MAAMx5B,KAExC,IAAImiJ,EAASviJ,EAAI65B,OAAO8H,IAAIzuC,MACC,OAAzB8M,EAAI65B,OAAO8H,IAAI0gH,OAAkBriJ,EAAI65B,OAAOz5B,IAAM,IACpDmiJ,EAAkB,IAATA,EAAeviJ,EAAI65B,OAAOz5B,KAErC,IAAIoiJ,EAAYxiJ,EAAI65B,OAAO+H,OAAO1uC,MACF,OAA5B8M,EAAI65B,OAAO+H,OAAOygH,OAAkBriJ,EAAI65B,OAAOz5B,IAAM,IACvDoiJ,EAAwB,IAAZA,EAAkBxiJ,EAAI65B,OAAOz5B,KAE3C,IAAIqiJ,EAAiBC,EAAkB1iJ,EAAI45B,MAAMx5B,IAAMyqE,EAAG5vE,EAAGmnJ,EAASE,GAClEK,EAAWF,EAAeG,SAC1BC,EAAYJ,EAAeK,mBAC3BC,EAAkBL,EAAkB1iJ,EAAI65B,OAAOz5B,IAAMyqE,EAAG34E,EAAGqwJ,EAAQC,GACnEQ,EAAUD,EAAgBH,SAC1BK,EAAaF,EAAgBD,mBACjChgC,EAAGG,YAAcigC,EAAqBr4E,EAAG5vE,EAAG4vE,EAAG34E,EAAGX,EAAO0wJ,OAAO,WAAY1wJ,EAAO0wJ,OAAO,uBAAuB/uJ,OACjH4vH,EAAGC,UAAYxrH,KAAKwI,IAAI8qE,EAAG5vE,EAAG+E,EAAI45B,MAAMx5B,KACxCX,EAAIyR,IAAMyxI,EAAW93E,EAAG3vC,GAAK2vC,EAAGxvC,GAAKwnH,GAAa,EAClD//B,EAAGE,WAAazrH,KAAKwI,IAAI8qE,EAAG34E,EAAG8N,EAAI65B,OAAOz5B,KAC1CX,EAAIswB,IAAMizH,EAAUn4E,EAAG1vC,GAAK0vC,EAAGvvC,GAAK2nH,GAAc,CAlGlD,CAoCA,SAASP,EAAkBS,EAAUC,EAAUC,GAC7C,IAAIT,EAAW,EACXE,EAAqB,EACrBQ,EAAYF,EAAWC,EAK3B,OAJIF,EAAW,GAAKG,EAAY,IAC9BV,EAAWQ,EAAWE,EAAYH,EAClCL,EAAqBO,EAAqBC,EAAYH,GAEjD,CACLP,SAAUA,EACVE,mBAAoBA,EAExB,CACA,SAASI,EAAqBtpH,EAAOC,EAAQ0pH,EAAeC,GAE1D,GAA4B,MAAxBD,EAAclB,MAeX,MAA4B,OAAxBkB,EAAclB,MAChBkB,EAAcrB,QAEd,EAjBP,OAAQsB,GACN,IAAK,QACH,OAAO5pH,EAAQ,EAAI2pH,EAAcrB,QAAUtoH,EAAQ,EACrD,IAAK,SACH,OAAOC,EAAS,EAAI0pH,EAAcrB,QAAUroH,EAAS,EACvD,IAAK,UACH,OAAOD,EAAQ,GAAKC,EAAS,EAAI0pH,EAAcrB,SAAWtoH,EAAQC,GAAU,EAAI,EAClF,IAAK,MACH,OAAOD,EAAQ,GAAKC,EAAS,EAAID,EAAQC,EAAS0pH,EAAcrB,QAAUroH,EAAS0pH,EAAcrB,QAAUtoH,EAAQ,EACrH,IAAK,MACH,OAAOA,EAAQ,GAAKC,EAAS,EAAID,EAAQC,EAAS0pH,EAAcrB,QAAUtoH,EAAQ2pH,EAAcrB,QAAUroH,EAAS,EACrH,QACE,OAAO,EAOf,CA4BF,CACA,IAAK,IAAIzkC,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GACX0tH,EAAKhzB,EAAI7d,SACR6wC,EAAGI,sBAAuB/vB,IAC7B/qE,EAAO0nE,GACFvvE,EAAGyhI,aACNl/B,EAAGI,qBAAsB,GAG/B,CACA,OAAO9xH,IACT,EACA,IAAIqyJ,GAAS,SAAgBvyI,GAC3B,OAAIA,IAAM+yE,KAAY/yE,KAAO+yE,IACpB,EAEF/yE,CACT,EACIwyI,GAAe,SAAsB1vJ,EAAGknC,EAAIC,EAAIE,EAAIC,GAElDD,EAAKH,IAAO,GAAKI,EAAKH,IAAO,GAKvB,MAAND,GAAoB,MAANC,GAAoB,MAANE,GAAoB,MAANC,IAG9CtnC,EAAEknC,GAAKA,EAAKlnC,EAAEknC,GAAKA,EAAKlnC,EAAEknC,GAC1BlnC,EAAEqnC,GAAKA,EAAKrnC,EAAEqnC,GAAKA,EAAKrnC,EAAEqnC,GAC1BrnC,EAAEmnC,GAAKA,EAAKnnC,EAAEmnC,GAAKA,EAAKnnC,EAAEmnC,GAC1BnnC,EAAEsnC,GAAKA,EAAKtnC,EAAEsnC,GAAKA,EAAKtnC,EAAEsnC,GAC1BtnC,EAAEiH,EAAIjH,EAAEqnC,GAAKrnC,EAAEknC,GACflnC,EAAE9B,EAAI8B,EAAEsnC,GAAKtnC,EAAEmnC,GACjB,EACIwoH,GAAsB,SAA6B3vJ,EAAG4vJ,GACxD,OAAU,MAANA,EACK5vJ,EAEF0vJ,GAAa1vJ,EAAG4vJ,EAAG1oH,GAAI0oH,EAAGzoH,GAAIyoH,EAAGvoH,GAAIuoH,EAAGtoH,GACjD,EACIuoH,GAAmB,SAA0BjzI,EAAKg2D,EAAOwtC,GAC3D,OAAO8N,GAAoBtxG,EAAKg2D,EAAOwtC,EACzC,EACI0vC,GAAwB,SAA+BhqE,EAAQgW,EAAKskB,GACtE,IAAItkB,EAAIvvE,KAAKwjI,WAAb,CAGA,IAII7yI,EACA6e,EALA+yF,EAAKhzB,EAAI7d,SACTmxC,EAASN,EAAGM,OACZ4gC,EAAU5gC,EAAO6gC,WAAa,EAC9BC,EAAYp0D,EAAImyD,OAAO7tC,EAAS,gBAAgBlhH,MAGpD,GAAkB,SAAdgxJ,EAAsB,CACT,WAAX9vC,GACFljG,EAAIkyG,EAAO+gC,KACXp0H,EAAIqzF,EAAOghC,MACS,WAAXhwC,GACTljG,EAAIkyG,EAAOihC,KACXt0H,EAAIqzF,EAAOkhC,OAEXpzI,EAAIkyG,EAAOmhC,KACXx0H,EAAIqzF,EAAOohC,MAIb,IAAIC,EAAM3hC,EAAGmB,YAAcnB,EAAGmB,aAAe,CAAC,EAC1Cp5C,EAAK45E,EAAIrwC,GAAUqwC,EAAIrwC,IAAW,CAAC,EACvCvpC,EAAG3vC,GAAKhqB,EAAI8yI,EACZn5E,EAAG1vC,GAAKpL,EAAIi0H,EACZn5E,EAAGxvC,GAAKnqB,EAAI8yI,EACZn5E,EAAGvvC,GAAKvL,EAAIi0H,EACZn5E,EAAG5vE,EAAI4vE,EAAGxvC,GAAKwvC,EAAG3vC,GAClB2vC,EAAG34E,EAAI24E,EAAGvvC,GAAKuvC,EAAG1vC,GAClBg2F,GAAkBtmD,EAAI,GACtB64E,GAAa5pE,EAAQjP,EAAG3vC,GAAI2vC,EAAG1vC,GAAI0vC,EAAGxvC,GAAIwvC,EAAGvvC,GAC/C,CA9BA,CA+BF,EACIopH,GAAwB,SAA+B5qE,EAAQgW,EAAKskB,GACtE,IAAItkB,EAAIvvE,KAAKwjI,WAAb,CAGA,IAAIY,EAEFA,EADEvwC,EACWA,EAAS,IAET,GAEf,IAAI0O,EAAKhzB,EAAI7d,SACTmxC,EAASN,EAAGM,OACZ9iF,EAAQwvD,EAAImyD,OAAO0C,EAAa,SAASC,SAC7C,GAAItkH,EAAO,CACT,IAoBI82C,EAAKE,EAAKD,EAAKE,EApBfstE,EAAS/0D,EAAImyD,OAAO,eACpB6C,EAASh1D,EAAImyD,OAAO,eACpB8C,EAAalB,GAAiBzgC,EAAQ,aAAchP,GACpD4wC,EAAcnB,GAAiBzgC,EAAQ,cAAehP,GACtD6wC,EAASpB,GAAiBzgC,EAAQ,SAAUhP,GAC5C8wC,EAASrB,GAAiBzgC,EAAQ,SAAUhP,GAC5C+wC,EAAUr1D,EAAImyD,OAAO0C,EAAa,iBAAiBzC,QACnDkD,EAAUt1D,EAAImyD,OAAO0C,EAAa,iBAAiBzC,QACnDvX,EAAS76C,EAAI66C,SACb0a,EAAWv1D,EAAImyD,OAAO0C,EAAa,iBACnCW,EAAex1D,EAAImyD,OAAO,sBAAsBC,QAChDjpF,EAAc62B,EAAImyD,OAAO,qBAAqBC,QAC9CqD,EAAkBtsF,EAAc,EAChC0jB,EAAUmT,EAAImyD,OAAO,2BAA2BC,QAChDsD,EAAgB,EAEhBC,EAAKT,EACLU,EAAKX,EACLY,EAAOD,EAAK,EACZE,EAAOH,EAAK,EAEhB,GAAI9a,EACFvzD,EAAM6tE,EAASU,EACfruE,EAAM2tE,EAASU,EACftuE,EAAM6tE,EAASU,EACfruE,EAAM2tE,EAASU,MACV,CACL,OAAQf,EAAO3xJ,OACb,IAAK,OACHkkF,EAAM6tE,EAASS,EACfpuE,EAAM2tE,EACN,MACF,IAAK,SACH7tE,EAAM6tE,EAASU,EACfruE,EAAM2tE,EAASU,EACf,MACF,IAAK,QACHvuE,EAAM6tE,EACN3tE,EAAM2tE,EAASS,EACf,MAEJ,OAAQZ,EAAO5xJ,OACb,IAAK,MACHmkF,EAAM6tE,EAASO,EACfluE,EAAM2tE,EACN,MACF,IAAK,SACH7tE,EAAM6tE,EAASU,EACfruE,EAAM2tE,EAASU,EACf,MACF,IAAK,SACHvuE,EAAM6tE,EACN3tE,EAAM2tE,EAASO,EACf,MAEN,CAGAruE,GAAO+tE,EAAU5tJ,KAAKwI,IAAIulJ,EAAcC,GAAmB5oE,EAAU6oE,EACrEluE,GAAO6tE,EAAU5tJ,KAAKwI,IAAIulJ,EAAcC,GAAmB5oE,EAAU6oE,EACrEnuE,GAAO+tE,EAAU7tJ,KAAKwI,IAAIulJ,EAAcC,GAAmB5oE,EAAU6oE,EACrEjuE,GAAO6tE,EAAU7tJ,KAAKwI,IAAIulJ,EAAcC,GAAmB5oE,EAAU6oE,EAGrE,IAAIK,EAAWzxC,GAAU,OACrBqwC,EAAM3hC,EAAGiB,YACTl5C,EAAK45E,EAAIoB,GAAYpB,EAAIoB,IAAa,CAAC,EAC3Ch7E,EAAG3vC,GAAKk8C,EACRvM,EAAG1vC,GAAKk8C,EACRxM,EAAGxvC,GAAKi8C,EACRzM,EAAGvvC,GAAKi8C,EACR1M,EAAG5vE,EAAIq8E,EAAMF,EACbvM,EAAG34E,EAAIqlF,EAAMF,EACb,IAAIyuE,EAAenb,GAAgC,eAAtB0a,EAAST,SAClCmB,EAAgC,MAApBV,EAASnD,SAAwC,IAArBmD,EAASnD,QACrD,GAAI4D,GAAgBC,EAAW,CAC7B,IAAI34D,EAAQ04D,EAAejC,GAAiB/gC,EAAGM,OAAQ,aAAchP,GAAUixC,EAASnD,QACpFxqH,EAAMngC,KAAKmgC,IAAI01D,GACf31D,EAAMlgC,KAAKkgC,IAAI21D,GAGf44D,GAAM5uE,EAAME,GAAO,EACnB2uE,GAAM5uE,EAAME,GAAO,EACvB,IAAKozD,EAAQ,CACX,OAAQka,EAAO3xJ,OACb,IAAK,OACH8yJ,EAAK1uE,EACL,MACF,IAAK,QACH0uE,EAAK5uE,EACL,MAEJ,OAAQ0tE,EAAO5xJ,OACb,IAAK,MACH+yJ,EAAK1uE,EACL,MACF,IAAK,SACH0uE,EAAK5uE,EACL,MAEN,CACA,IAAI7vD,EAAS,SAAgBtW,EAAG6e,GAG9B,OAFA7e,GAAQ80I,EACRj2H,GAAQk2H,EACD,CACL/0I,EAAGA,EAAIwmB,EAAM3H,EAAI0H,EAAMuuH,EACvBj2H,EAAG7e,EAAIumB,EAAM1H,EAAI2H,EAAMuuH,EAE3B,EACIC,EAAQ1+H,EAAO4vD,EAAKC,GACpB8uE,EAAQ3+H,EAAO4vD,EAAKG,GACpB6uE,EAAQ5+H,EAAO8vD,EAAKD,GACpBgvE,EAAQ7+H,EAAO8vD,EAAKC,GACxBH,EAAM7/E,KAAKyI,IAAIkmJ,EAAMh1I,EAAGi1I,EAAMj1I,EAAGk1I,EAAMl1I,EAAGm1I,EAAMn1I,GAChDomE,EAAM//E,KAAKwI,IAAImmJ,EAAMh1I,EAAGi1I,EAAMj1I,EAAGk1I,EAAMl1I,EAAGm1I,EAAMn1I,GAChDmmE,EAAM9/E,KAAKyI,IAAIkmJ,EAAMn2H,EAAGo2H,EAAMp2H,EAAGq2H,EAAMr2H,EAAGs2H,EAAMt2H,GAChDwnD,EAAMhgF,KAAKwI,IAAImmJ,EAAMn2H,EAAGo2H,EAAMp2H,EAAGq2H,EAAMr2H,EAAGs2H,EAAMt2H,EAClD,CACA,IAAIu2H,EAAcT,EAAW,MACzBU,EAAQ9B,EAAI6B,GAAe7B,EAAI6B,IAAgB,CAAC,EACpDC,EAAMrrH,GAAKk8C,EACXmvE,EAAMprH,GAAKk8C,EACXkvE,EAAMlrH,GAAKi8C,EACXivE,EAAMjrH,GAAKi8C,EACXgvE,EAAMtrJ,EAAIq8E,EAAMF,EAChBmvE,EAAMr0J,EAAIqlF,EAAMF,EAChBqsE,GAAa5pE,EAAQ1C,EAAKC,EAAKC,EAAKC,GACpCmsE,GAAa5gC,EAAGiB,YAAYx5G,IAAK6sE,EAAKC,EAAKC,EAAKC,EAClD,CACA,OAAOuC,CA5IP,CA6IF,EAGI0sE,GAAkB,SAAyB12D,EAAK/+F,GAClD,IAOI01J,EAAKC,EAAKC,EAAKC,EACf11I,EAAG6e,EARHxP,EAAKuvE,EAAI7d,SAAS1xD,GAClB8vH,EAAe9vH,EAAG8vH,eAClB0T,EAAWxjI,EAAGwjI,WACdjqE,EAASof,KACT4pB,EAAKhzB,EAAI7d,SACToe,EAASP,EAAIO,SACbs6C,EAAS76C,EAAI66C,SAGbvnB,EAASN,EAAGM,OACZyjC,EAAkBx2D,GAAUggD,EAAevgD,EAAImyD,OAAO,oBAAoBC,QAAU,CAAC,GAIrF4E,EAAc,SAAqBh3D,GACrC,MAAuC,SAAhCA,EAAImyD,OAAO,WAAW/uJ,KAC/B,EACI6zJ,GAAa1W,GAAgByW,EAAYh3D,MAGxC66C,GAAUmc,EAAYh3D,EAAIh6F,WAAagxJ,EAAYh3D,EAAIh5F,WAC5D,GAAIiwJ,EAAW,CAEb,IAAIC,EAAiB,EACjBC,EAAiB,EACjB5W,GAAgBt/I,EAAQ6hF,kBAC1Bo0E,EAAiBl3D,EAAImyD,OAAO,mBAAmB/uJ,MACxB,IAAnB8zJ,IACFC,EAAiBn3D,EAAImyD,OAAO,mBAAmB/uJ,QAGnD,IAAIg0J,EAAkB,EAClBC,EAAkB,EAClB9W,GAAgBt/I,EAAQq2J,mBAC1BF,EAAkBp3D,EAAImyD,OAAO,oBAAoB/uJ,MACzB,IAApBg0J,IACFC,EAAkBr3D,EAAImyD,OAAO,oBAAoB/uJ,QAGrD,IAAIypF,EAAUplF,KAAKwI,IAAIknJ,EAAgBE,GACnClsJ,EAAI,EACJosJ,EAAQ,EAKZ,GAJIhX,IACFp1I,EAAI60F,EAAImyD,OAAO,SAASC,QACxBmF,EAAQpsJ,EAAI,GAEVo1F,GAAUt/F,EAAQu2J,aAAc,CAClC,IAAI7nJ,EAAMqwF,EAAI5sE,WACdhS,EAAIzR,EAAIyR,EACR6e,EAAItwB,EAAIswB,EACR,IAAIuwG,EAAKxwC,EAAIuW,aACT+vB,EAAQkK,EAAK,EACbpuI,EAAI49F,EAAIwW,cACRx/C,EAAQ50D,EAAI,EAKhBu0J,EAAMv1I,EAAIklH,EACVswB,EAAMx1I,EAAIklH,EACVuwB,EAAM52H,EAAI+2B,EACV8/F,EAAM72H,EAAI+2B,EACV48F,GAAa5pE,EAAQ2sE,EAAKE,EAAKD,EAAKE,EACtC,MAAO,GAAIjc,GAAU55I,EAAQw2J,aAC3B,GAAIlX,IAAiB0T,EAAU,CAC7B,IAAIyD,EAAa13D,EAAImyD,OAAO,eAAe2C,SAoB3C,GAfA6B,EAAMlvJ,KAAKyI,IAAIojH,EAAO+gC,KAAM/gC,EAAOmhC,KAAMnhC,EAAOihC,MAChDqC,EAAMnvJ,KAAKwI,IAAIqjH,EAAO+gC,KAAM/gC,EAAOmhC,KAAMnhC,EAAOihC,MAChDsC,EAAMpvJ,KAAKyI,IAAIojH,EAAOghC,KAAMhhC,EAAOohC,KAAMphC,EAAOkhC,MAChDsC,EAAMrvJ,KAAKwI,IAAIqjH,EAAOghC,KAAMhhC,EAAOohC,KAAMphC,EAAOkhC,MAGhDmC,GAAOY,EACPX,GAAOW,EACPV,GAAOU,EACPT,GAAOS,EACP3D,GAAa5pE,EAAQ2sE,EAAKE,EAAKD,EAAKE,GAKjB,aAAfY,EAA2B,CAC7B,IAAIC,EAAOrkC,EAAOskC,YAClB,GAAID,GAAwB,IAAhBA,EAAKr0J,OAAc,CAK7B,GAJAqzJ,EAAMgB,EAAK,GAAGv2I,EACdy1I,EAAMc,EAAK,GAAG13H,EACd22H,EAAMe,EAAK,GAAGv2I,EACd01I,EAAMa,EAAK,GAAG13H,EACV02H,EAAMC,EAAK,CACb,IAAI3pI,EAAO0pI,EACXA,EAAMC,EACNA,EAAM3pI,CACR,CACA,GAAI4pI,EAAMC,EAAK,CACb,IAAIe,EAAQhB,EACZA,EAAMC,EACNA,EAAMe,CACR,CACAjE,GAAa5pE,EAAQ2sE,EAAMY,EAAOV,EAAMU,EAAOX,EAAMW,EAAOT,EAAMS,EACpE,CACF,MAAO,GAAmB,WAAfG,GAA0C,qBAAfA,GAAoD,aAAfA,GAA4C,SAAfA,EAAuB,CAC7H,IAAII,EACJ,OAAQJ,GACN,IAAK,SACL,IAAK,mBACHI,EAAMxkC,EAAOykC,UACb,MACF,IAAK,WACL,IAAK,OACHD,EAAMxkC,EAAO0kC,QACb,MAEJ,GAAW,MAAPF,EACF,IAAK,IAAIvrJ,EAAI,EAAGA,EAAIurJ,EAAIx0J,OAAQiJ,IAAK,CACnC,IAAIq1H,EAAKk2B,EAAIvrJ,GACboqJ,EAAM/0B,EAAGxgH,EAAIm2I,EACbX,EAAMh1B,EAAGxgH,EAAIm2I,EACbV,EAAMj1B,EAAG3hG,EAAIs3H,EACbT,EAAMl1B,EAAG3hG,EAAIs3H,EACb3D,GAAa5pE,EAAQ2sE,EAAKE,EAAKD,EAAKE,EACtC,CAEJ,CACF,KAAO,CAML,IAAI/f,EAAK/2C,EAAIh6F,SACTiyJ,EAAQlhB,EAAG3jH,WACXw+G,EAAK5xC,EAAIh5F,SACTkxJ,EAAQtmB,EAAGx+G,WAKf,GAJAujI,EAAMsB,EAAM72I,EACZw1I,EAAMsB,EAAM92I,EACZy1I,EAAMoB,EAAMh4H,EACZ62H,EAAMoB,EAAMj4H,EACR02H,EAAMC,EAAK,CACb,IAAIuB,EAASxB,EACbA,EAAMC,EACNA,EAAMuB,CACR,CACA,GAAItB,EAAMC,EAAK,CACb,IAAIsB,EAASvB,EACbA,EAAMC,EACNA,EAAMsB,CACR,CAGAzB,GAAOY,EACPX,GAAOW,EACPV,GAAOU,EACPT,GAAOS,EACP3D,GAAa5pE,EAAQ2sE,EAAKE,EAAKD,EAAKE,EACtC,CAgBF,GAVIvW,GAAgBt/I,EAAQw2J,cAAgB5c,IAC1CmZ,GAAsBhqE,EAAQgW,EAAK,cACnCg0D,GAAsBhqE,EAAQgW,EAAK,cACnCg0D,GAAsBhqE,EAAQgW,EAAK,UACnCg0D,GAAsBhqE,EAAQgW,EAAK,WAMjCugD,EAAc,CAChB,IAAI8X,EAAsC,QAA9Br4D,EAAImyD,OAAO,SAAS/uJ,MAChC,GAAIi1J,EAAO,CACT,IAAIC,EAAKt4D,EAAImyD,OAAO,kBAAkBC,QAClCmG,EAAKv4D,EAAImyD,OAAO,kBAAkBC,QACtCwB,GAAa5pE,EAAQA,EAAO5+C,GAAKktH,EAAItuE,EAAO3+C,GAAKktH,EAAIvuE,EAAOz+C,GAAK+sH,EAAItuE,EAAOx+C,GAAK+sH,EACnF,CACF,CAGA,IAAIC,EAASxlC,EAAGe,WAAaf,EAAGe,YAAc,CAAC,EAC/CyN,GAAkBg3B,EAAQxuE,GAC1Bs3C,GAAuBk3B,EAAQzB,GAC/B11B,GAAkBm3B,EAAQ,GAKtBjY,IACFoW,EAAM3sE,EAAO5+C,GACbwrH,EAAM5sE,EAAOz+C,GACbsrH,EAAM7sE,EAAO3+C,GACbyrH,EAAM9sE,EAAOx+C,GACbooH,GAAa5pE,EAAQ2sE,EAAM9pE,EAASgqE,EAAMhqE,EAAS+pE,EAAM/pE,EAASiqE,EAAMjqE,IAI1E,IAAI4rE,EAAYzlC,EAAGgB,cAAgBhB,EAAGgB,eAAiB,CAAC,EACxDwN,GAAkBi3B,EAAWzuE,GAC7Bs3C,GAAuBm3B,EAAW1B,GAClC11B,GAAkBo3B,EAAW,GAK7B,IAAIC,EAAW1lC,EAAGiB,YAAcjB,EAAGiB,aAAe,CAAC,EAC/B,MAAhBykC,EAASj+I,IACXymH,GAAiBw3B,EAASj+I,KAE1Bi+I,EAASj+I,IAAM2uF,KAEbm3C,GAAgBt/I,EAAQ4hF,gBACtB5hF,EAAQu4F,mBACVo7D,GAAsB5qE,EAAQgW,EAAK,MAEjC66C,IACE55I,EAAQw4F,qBACVm7D,GAAsB5qE,EAAQgW,EAAK,UAEjC/+F,EAAQy4F,qBACVk7D,GAAsB5qE,EAAQgW,EAAK,WAI3C,CAcA,OAZAhW,EAAO5+C,GAAKuoH,GAAO3pE,EAAO5+C,IAC1B4+C,EAAO3+C,GAAKsoH,GAAO3pE,EAAO3+C,IAC1B2+C,EAAOz+C,GAAKooH,GAAO3pE,EAAOz+C,IAC1By+C,EAAOx+C,GAAKmoH,GAAO3pE,EAAOx+C,IAC1Bw+C,EAAO7+E,EAAIwoJ,GAAO3pE,EAAOz+C,GAAKy+C,EAAO5+C,IACrC4+C,EAAO5nF,EAAIuxJ,GAAO3pE,EAAOx+C,GAAKw+C,EAAO3+C,IACjC2+C,EAAO7+E,EAAI,GAAK6+E,EAAO5nF,EAAI,GAAK60J,IAClC31B,GAAuBt3C,EAAQ+sE,GAG/B11B,GAAkBr3C,EAAQ,IAErBA,CACT,EACI2uE,GAAS,SAAgBlzD,GAC3B,IAAIngG,EAAI,EACJszJ,EAAK,SAAYtoJ,GACnB,OAAQA,EAAM,EAAI,IAAMhL,GAC1B,EACIH,EAAM,EAQV,OAPAA,GAAOyzJ,EAAGnzD,EAAKozD,aACf1zJ,GAAOyzJ,EAAGnzD,EAAKgyD,cACftyJ,GAAOyzJ,EAAGnzD,EAAK5iB,eACf19E,GAAOyzJ,EAAGnzD,EAAKjM,mBACfr0F,GAAOyzJ,EAAGnzD,EAAKhM,qBACft0F,GAAOyzJ,EAAGnzD,EAAK/L,qBACfv0F,GAAOyzJ,EAAGnzD,EAAK3iB,iBACR39E,CACT,EACI2zJ,GAAuB,SAA8B94D,GACvD,GAAIA,EAAI66C,SAAU,CAChB,IAAIzyG,EAAK43D,EAAIh6F,SAASotB,WAClBiV,EAAK23D,EAAIh5F,SAASosB,WAClB/E,EAAI,SAAWjN,GACjB,OAAO3Z,KAAKugF,MAAM5mE,EACpB,EACA,OAAOovG,GAAc,CAACniG,EAAE+Z,EAAGhnB,GAAIiN,EAAE+Z,EAAGnI,GAAI5R,EAAEga,EAAGjnB,GAAIiN,EAAEga,EAAGpI,IACxD,CACE,OAAO,CAEX,EACI84H,GAAwB,SAA+B/4D,EAAKyF,GAC9D,IACI1qB,EADAi4C,EAAKhzB,EAAI7d,SAET04D,EAAS76C,EAAI66C,SACb11I,EAAc,MAARsgG,EAAeuzD,GAAeL,GAAOlzD,GAC3CwzD,EAAe9zJ,IAAQ6zJ,GACvBE,EAAaJ,GAAqB94D,GAClCm5D,EAAenmC,EAAGomC,gBAAkBF,EACpC7G,EAAW5sD,EAAK4sD,UAAY8G,EAC5BE,EAAU,SAAiBr5D,GAC7B,OAA+B,MAAxBA,EAAI7d,SAAS0xC,SAAmB7zB,EAAI7d,SAASm3E,UACtD,EACIC,GAAclH,GAAYgH,EAAQr5D,IAAQ66C,GAAUwe,EAAQr5D,EAAIh6F,WAAaqzJ,EAAQr5D,EAAIh5F,UAa7F,GAZIuyJ,GACGJ,GACHn5D,EAAIw5D,yBAAyBnH,GAE/Bt3E,EAAK27E,GAAgB12D,EAAKy5D,IAC1BzmC,EAAGa,QAAU94C,EACbi4C,EAAGomC,cAAgBF,GAEnBn+E,EAAKi4C,EAAGa,SAILolC,EAAc,CACjB,IAAI14D,EAASP,EAAIO,SACjBxlB,EAAKquB,MACD3D,EAAK+xD,cAAgBj3D,GAAUkF,EAAKgyD,eAAiBl3D,KACnDkF,EAAK3iB,gBACP+wE,GAAoB94E,EAAIi4C,EAAGgB,eAE3B6/B,GAAoB94E,EAAIi4C,EAAGe,aAG3BtuB,EAAK5iB,gBACH4iB,EAAKjM,qBAAuBqhD,GAAUp1C,EAAKhM,qBAAuBgM,EAAK/L,qBACzEm6D,GAAoB94E,EAAIi4C,EAAGiB,YAAYx5G,MAEnCgrF,EAAKjM,mBACPq6D,GAAoB94E,EAAIi4C,EAAGiB,YAAYylC,SAErCj0D,EAAKhM,qBACPo6D,GAAoB94E,EAAIi4C,EAAGiB,YAAY0lC,WAErCl0D,EAAK/L,qBACPm6D,GAAoB94E,EAAIi4C,EAAGiB,YAAY2lC,aAI7C7+E,EAAG5vE,EAAI4vE,EAAGxvC,GAAKwvC,EAAG3vC,GAClB2vC,EAAG34E,EAAI24E,EAAGvvC,GAAKuvC,EAAG1vC,EACpB,CACA,OAAO0vC,CACT,EACI0+E,GAAY,CACdjC,cAAc,EACdC,cAAc,EACd50E,eAAe,EACf2W,mBAAmB,EACnBC,qBAAqB,EACrBC,qBAAqB,EACrB5W,iBAAiB,EACjBw0E,kBAAkB,EAClBjF,UAAU,GAER2G,GAAeL,GAAOc,IACtBI,GAAejoC,GAAW6nC,IAC9B1H,GAASnvE,YAAc,SAAU3hF,GAC/B,IAAI+oF,EAKJ,GAAoB,IAAhB1oF,KAAKgC,QAA4C,MAA5BhC,KAAK,GAAG6gF,SAAS0xC,SAAoBvyH,KAAK,GAAG6gF,SAASm3E,iBAA2Bt1J,IAAZ/C,QAA8C+C,IAArB/C,EAAQoxJ,WAA+C,IAArBpxJ,EAAQoxJ,SAO1J,CACLroE,EAASof,KACTnoG,EAAUA,GAAWw4J,GACrB,IAAIh0D,EAAOo0D,GAAa54J,GACpByoG,EAAOpoG,KACPmvB,EAAKi5E,EAAKj5E,KACV8vH,EAAe9vH,EAAG8vH,eACtB,GAAIA,EACF,IAAK,IAAIj7I,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACX0tH,EAAKhzB,EAAI7d,SACT+2E,EAAaJ,GAAqB94D,GAClCm5D,EAAenmC,EAAGomC,gBAAkBF,EACpC7G,EAAW5sD,EAAK4sD,UAAY8G,IAAiBnmC,EAAGsmC,WACpDt5D,EAAIw5D,yBAAyBnH,EAC/B,CAEF/wJ,KAAKwvJ,sBAAsB7vJ,EAAQoxJ,UACnC,IAAK,IAAInhJ,EAAK,EAAGA,EAAKw4F,EAAKpmG,OAAQ4N,IAAM,CACvC,IAAI2xI,EAAOn5C,EAAKx4F,GAChB2iJ,GAAoB7pE,EAAQ+uE,GAAsBlW,EAAMp9C,GAC1D,CACF,MA3BIxkG,OADc+C,IAAZ/C,EACQw4J,GAEAI,GAAa54J,GAEzB+oF,EAAS+uE,GAAsBz3J,KAAK,GAAIL,GA8B1C,OANA+oF,EAAO5+C,GAAKuoH,GAAO3pE,EAAO5+C,IAC1B4+C,EAAO3+C,GAAKsoH,GAAO3pE,EAAO3+C,IAC1B2+C,EAAOz+C,GAAKooH,GAAO3pE,EAAOz+C,IAC1By+C,EAAOx+C,GAAKmoH,GAAO3pE,EAAOx+C,IAC1Bw+C,EAAO7+E,EAAIwoJ,GAAO3pE,EAAOz+C,GAAKy+C,EAAO5+C,IACrC4+C,EAAO5nF,EAAIuxJ,GAAO3pE,EAAOx+C,GAAKw+C,EAAO3+C,IAC9B2+C,CACT,EACA+nE,GAASpB,sBAAwB,WAC/B,IAAK,IAAIrrJ,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI0tH,EAAK1xH,KAAKgE,GAAG68E,SACjB6wC,EAAGa,QAAU,KACbb,EAAGomC,cAAgB,KACnBpmC,EAAGe,WAAa,KAChBf,EAAGgB,cAAgB,KACnBhB,EAAGiB,YAAYx5G,IAAM,KACrBu4G,EAAGiB,YAAYjuH,OAAS,KACxBgtH,EAAGiB,YAAYjtH,OAAS,KACxBgsH,EAAGiB,YAAYC,KAAO,KACtBlB,EAAGiB,YAAY0lC,UAAY,KAC3B3mC,EAAGiB,YAAY2lC,UAAY,KAC3B5mC,EAAGiB,YAAYylC,QAAU,KACzB1mC,EAAGmB,YAAYnuH,OAAS,KACxBgtH,EAAGmB,YAAYntH,OAAS,KACxBgsH,EAAGmB,YAAY,cAAgB,KAC/BnB,EAAGmB,YAAY,cAAgB,IACjC,CAEA,OADA7yH,KAAK2wJ,cAAc,UACZ3wJ,IACT,EAMAywJ,GAAS+H,cAAgB,SAAUh2J,GACjC,IAAIs8E,EAAQ9+E,KAAK8+E,QACb3vD,EAAKnvB,KAAKmvB,KACVy+H,EAAmBz+H,EAAGy+H,mBACtBX,EAAU99H,EAAGixD,aAOjB,GANIwtE,IACFX,EAAUnuE,EAAM9uD,QAAO,SAAUorD,GAC/B,OAAOA,EAAK8jB,UACd,IACApgB,EAAQA,EAAMozB,IAAI+6C,IAEhB/qC,EAAY1/G,GAAK,CACnB,IAAIgd,EAAMhd,EACVA,EAAK,WACH,OAAOgd,CACT,CACF,CACA,IAAIi5I,EAAc,SAAqBr9E,EAAMp3E,GAC3C,OAAOo3E,EAAKyF,SAAS63E,WAAal2J,EAAG44E,EAAMp3E,EAC7C,EACI20J,EAAY,SAAmBv9E,GACjC,OAAOA,EAAKyF,SAAS63E,UACvB,EACAvpI,EAAGglF,aACHr1B,EAAMl0E,QAAQ6tJ,GAAa7I,gBAAgBptJ,GACvCorJ,IACFX,EAAQwC,2BACRxC,EAAQoC,wBACRpC,EAAQuC,sBAAqB,IAG/B,IAAI/1E,EAAKkmD,GAAgB3/H,KAAKshF,YAAY,CACxCyvE,UAAU,KAUZ,OARAjyE,EAAM8wE,gBAAgB+I,GAClB/K,IACFX,EAAQwC,2BACRxC,EAAQoC,wBACRpC,EAAQuC,sBAAqB,IAG/BrgI,EAAGilF,WACI36B,CACT,EACA+2E,GAAKoI,YAAcpI,GAAK/2E,GAAK+2E,GAAKlvE,YAClCkvE,GAAKqI,oBAAsBrI,GAAKE,oBAChC,IAEIoI,GAAMC,GAFNrwE,GAAS+nE,GAGbqI,GAAOC,GAAW,CAAC,EACnB,IAAIC,GAAe,SAAsB70D,GACvCA,EAAK80D,cAAgBh2C,GAAW9e,EAAK1/F,MACrC0/F,EAAK+0D,SAAW,OAAS/0D,EAAK80D,cAC9B90D,EAAKg1D,UAAY,QAAUh1D,EAAK80D,cAChC90D,EAAKi1D,UAAY,QAAUj1D,EAAK80D,cAChC90D,EAAKk1D,mBAAqBp2C,GAAW9e,EAAKi1D,WAC1CN,GAAK30D,EAAK1/F,MAAQ,WAChB,IAAIi6F,EAAM1+F,KAAK,GACX0xH,EAAKhzB,EAAI7d,SACT1xD,EAAKuiG,EAAGviG,GACR8vH,EAAe9vH,EAAG0xD,SAASo+D,aAC/B,GAAIvgD,EAAK,CACP,IAAIugD,EAcF,OAAO,EAbP,GAAIvgD,EAAIQ,WAEN,OADAR,EAAI8wD,uBACG99B,EAAGvtB,EAAK+0D,WAAa,EAE9B,IAAIhsI,EAAIwxE,EAAImyD,OAAO1sD,EAAK1/F,MACxB,OAAQyoB,EAAEsmI,UACR,IAAK,QAEH,OADA90D,EAAIw5D,2BACGxmC,EAAGM,OAAO7tB,EAAKg1D,YAAc,EACtC,QACE,OAAOjsI,EAAE4jI,QAKjB,CACF,EACAgI,GAAK,QAAU30D,EAAK80D,eAAiB,WACnC,IAAIv6D,EAAM1+F,KAAK,GACX0xH,EAAKhzB,EAAI7d,SACT1xD,EAAKuiG,EAAGviG,GACR8vH,EAAe9vH,EAAG0xD,SAASo+D,aAC/B,GAAIvgD,EAAK,CACP,GAAIugD,EAAc,CAChB,IAAIhN,EAAMvzC,EAAIyF,EAAK1/F,QACfq1D,EAAS4kC,EAAImyD,OAAO,gBAAgBC,QACpCvlE,EAAU,EAAImT,EAAInT,UACtB,OAAO0mD,EAAMn4E,EAASyxB,CACxB,CACE,OAAO,CAEX,CACF,EACAutE,GAAK,WAAa30D,EAAK80D,eAAiB,WACtC,IAAIv6D,EAAM1+F,KAAK,GACf,GAAI0+F,EAAK,CACP,IAAIxxE,EAAIwxE,EAAIyF,EAAK1/F,QACjB,OAAOyoB,EAAIltB,KAAKmvB,KAAKiuD,MACvB,CACF,EACA07E,GAAK,WAAa30D,EAAKk1D,oBAAsB,WAC3C,IAAI36D,EAAM1+F,KAAK,GACf,GAAI0+F,EAAK,CACP,IAAI46D,EAAK56D,EAAIyF,EAAKi1D,aAClB,OAAOE,EAAKt5J,KAAKmvB,KAAKiuD,MACxB,CACF,CACF,EACA47E,GAAa,CACXv0J,KAAM,UAERu0J,GAAa,CACXv0J,KAAM,WAERs0J,GAASxtE,QAAU,WACjB,IAAImT,EAAM1+F,KAAK,GACX0xH,EAAKhzB,EAAI7d,SACb,OAAI6d,EAAIQ,YACNR,EAAI8wD,4BACmB9sJ,IAAnBgvH,EAAGG,YACEH,EAAGG,YAEHnzB,EAAImyD,OAAO,WAAWC,SAGxBpyD,EAAImyD,OAAO,WAAWC,OAEjC,EACAiI,GAASQ,aAAe,WACtB,IAAI76D,EAAM1+F,KAAK,GACf,OAAO0+F,EAAIj2D,SAAW,EAAIi2D,EAAInT,SAChC,EACAwtE,GAASS,YAAc,WACrB,IAAI96D,EAAM1+F,KAAK,GACf,OAAO0+F,EAAIl2D,QAAU,EAAIk2D,EAAInT,SAC/B,EACA,IAAIkuE,GAAcV,GAEdW,GAAS,SAAgBh7D,EAAKsF,GAChC,GAAItF,EAAI66C,SACN,OAAOv1C,EAAStF,EAEpB,EACIi7D,GAAyB,SAAgCj7D,EAAKk7D,GAChE,GAAIl7D,EAAI66C,SAAU,CAChB,IAAIpqH,EAAKuvE,EAAIvvE,KACb,OAAOivG,GAAwBw7B,EAASl7D,GAAMvvE,EAAGiuD,OAAQjuD,EAAG20D,MAC9D,CACF,EACI+1E,GAA0B,SAAiCn7D,EAAKo7D,GAClE,GAAIp7D,EAAI66C,SAAU,CAChB,IAAIpqH,EAAKuvE,EAAIvvE,KACT20D,EAAM30D,EAAG20D,MACT1G,EAAOjuD,EAAGiuD,OACd,OAAO08E,EAAUp7D,GAAKh1E,KAAI,SAAUm0B,GAClC,OAAOugF,GAAwBvgF,EAAGu/B,EAAM0G,EAC1C,GACF,CACF,EACIi2E,GAAgB,SAAuBr7D,GACzC,OAAOA,EAAInnC,WAAWyiG,iBAAiBt7D,EACzC,EACI10E,GAAgB,SAAuB00E,GACzC,OAAOA,EAAInnC,WAAW0iG,iBAAiBv7D,EACzC,EACI3d,GAAiB,SAAwB2d,GAC3C,OAAOA,EAAInnC,WAAW2iG,kBAAkBx7D,EAC1C,EACI1d,GAAiB,SAAwB0d,GAC3C,OAAOA,EAAInnC,WAAW4iG,kBAAkBz7D,EAC1C,EACI07D,GAAW,SAAkB17D,GAC/B,OAAOA,EAAInnC,WAAW8iG,gBAAgB37D,EACxC,EACI83D,GAAM,CACRuD,cAAe,CACb72J,IAAK62J,GACLO,MAAM,GAERtwI,cAAe,CACb9mB,IAAK8mB,GACLswI,MAAM,GAERv5E,eAAgB,CACd79E,IAAK69E,IAEPC,eAAgB,CACd99E,IAAK89E,IAEPo5E,SAAU,CACRl3J,IAAKk3J,KAGLG,GAAe,SAAsB91J,GACvC,MAAO,WAAaA,EAAK,GAAG23B,cAAgB33B,EAAK+1J,OAAO,EAC1D,EACIC,GAAaz3J,OAAO+E,KAAKyuJ,IAAKlrI,QAAO,SAAU9L,EAAK/a,GACtD,IAAIi2J,EAAOlE,GAAI/xJ,GACXk2J,EAAQJ,GAAa91J,GAazB,OAZA+a,EAAI/a,GAAQ,WACV,OAAOi1J,GAAO15J,KAAM06J,EAAKx3J,IAC3B,EACIw3J,EAAKJ,KACP96I,EAAIm7I,GAAS,WACX,OAAOd,GAAwB75J,KAAM06J,EAAKx3J,IAC5C,EAEAsc,EAAIm7I,GAAS,WACX,OAAOhB,GAAuB35J,KAAM06J,EAAKx3J,IAC3C,EAEKsc,CACT,GAAG,CAAC,GAEAo7I,GAAal3C,GAAO,CAAC,EAAG5xF,GAAU42D,GAAQ+wE,GAAagB,IAUvDI,GAAQ,SAAe/uJ,EAAKurD,GAC9Br3D,KAAK86J,QAAQhvJ,EAAKurD,EACpB,EACA,SAAS0jG,KACP,OAAO,CACT,CACA,SAASC,KACP,OAAO,CACT,CAGAH,GAAMtzJ,UAAY,CAChBw6G,eAAgB,WACd,MAAO,OACT,EACA+4C,QAAS,SAAiBhvJ,EAAKurD,GA6B7B,GA5BAr3D,KAAKi7J,8BAAgCj7J,KAAKk7J,qBAAuBl7J,KAAKm7J,mBAAqBJ,GAChF,MAAPjvJ,GAAeA,EAAI4wF,gBAErB18F,KAAKwE,KAAOsH,EAAItH,KAIhBxE,KAAKm7J,mBAAqBrvJ,EAAIsvJ,iBAAmBJ,GAAaD,IAC9C,MAAPjvJ,GAAeA,EAAItH,KAE5B6yD,EAAQvrD,EAGR9L,KAAKwE,KAAOsH,EAID,MAATurD,IAEFr3D,KAAK6/F,cAAgBxoC,EAAMwoC,cAC3B7/F,KAAKwE,KAAqB,MAAd6yD,EAAM7yD,KAAe6yD,EAAM7yD,KAAOxE,KAAKwE,KACnDxE,KAAKmvB,GAAKkoC,EAAMloC,GAChBnvB,KAAK0F,OAAS2xD,EAAM3xD,OACpB1F,KAAK8xB,SAAWulC,EAAMvlC,SACtB9xB,KAAKo/F,iBAAmB/nC,EAAM+nC,iBAC9Bp/F,KAAKsd,UAAY+5C,EAAM/5C,UACvBtd,KAAKmoG,OAAS9wC,EAAM8wC,QAEP,MAAXnoG,KAAKmvB,IAA+B,MAAjBnvB,KAAK8xB,UAA6C,MAAzB9xB,KAAKo/F,iBAA0B,CAE7E,IAAI/wF,EAAMrO,KAAK8xB,SACXsrD,EAAOp9E,KAAKmvB,GAAGiuD,OACf0G,EAAM9jF,KAAKmvB,GAAG20D,MAClB9jF,KAAKo/F,iBAAmB,CACtBt/E,EAAGzR,EAAIyR,EAAIs9D,EAAO0G,EAAIhkE,EACtB6e,EAAGtwB,EAAIswB,EAAIy+C,EAAO0G,EAAInlD,EAE1B,CAGA3+B,KAAKixB,UAAYnlB,GAAOA,EAAImlB,WAAaoD,KAAK1Q,KAChD,EACA+4E,eAAgB,WACd18F,KAAKm7J,mBAAqBH,GAC1B,IAAI/0J,EAAIjG,KAAK6/F,cACR55F,GAKDA,EAAEy2F,gBACJz2F,EAAEy2F,gBAEN,EACAxhB,gBAAiB,WACfl7E,KAAKk7J,qBAAuBF,GAC5B,IAAI/0J,EAAIjG,KAAK6/F,cACR55F,GAKDA,EAAEi1E,iBACJj1E,EAAEi1E,iBAEN,EACAmgF,yBAA0B,WACxBr7J,KAAKi7J,8BAAgCD,GACrCh7J,KAAKk7E,iBACP,EACAigF,mBAAoBJ,GACpBG,qBAAsBH,GACtBE,8BAA+BF,IAGjC,IAAIO,GAAa,0BACbC,GAAqB,KAErBC,GAAa,CACfC,iBAAkB,SAA0BC,EAAIC,GAC9C,OAAOD,IAAOC,CAChB,EACAC,aAAc,WAEZ,OAAO,CACT,EACAC,eAAgB,WACb,EACHC,gBAAiB,SAAyB/7J,GACxC,OAAOA,CACT,EACAg8J,WAAY,WACT,EACHC,UAAW,WACR,EACHC,OAAQ,WAEN,OAAO,CACT,EACA97J,OAAQ,WAEN,OAAO,IACT,EACAJ,QAAS,MAEPm8J,GAAel5J,OAAO+E,KAAKyzJ,IAC3BW,GAAY,CAAC,EACjB,SAASC,KAIP,IAHA,IAAIj4D,EAAOphG,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAKo5J,GAC3Ep8J,EAAUgD,UAAUf,OAAS,EAAIe,UAAU,QAAKL,EAE3CsB,EAAI,EAAGA,EAAIk4J,GAAal6J,OAAQgC,IAAK,CAC5C,IAAIH,EAAMq4J,GAAal4J,GACvBhE,KAAK6D,GAAOsgG,EAAKtgG,IAAQ23J,GAAW33J,EACtC,CACA7D,KAAKD,QAAUA,GAAWC,KAAKD,QAC/BC,KAAK+xH,UAAY,GACjB/xH,KAAKq8J,SAAW,CAClB,CACA,IAAIx+G,GAAIu+G,GAAQ70J,UACZ+0J,GAAe,SAAsBl2J,EAAMqb,EAAS27E,EAAQm/D,EAAW16I,EAAU26I,EAAMC,GACrFz6C,EAAKu6C,KACP16I,EAAW06I,EACXA,EAAY,MAEVE,IAEAD,EADU,MAARA,EACKC,EAEA/4C,GAAO,CAAC,EAAG84C,EAAMC,IAI5B,IADA,IAAIC,EAAY9mG,EAAMwnC,GAAUA,EAASA,EAAO95F,MAAM,OAC7CU,EAAI,EAAGA,EAAI04J,EAAU16J,OAAQgC,IAAK,CACzC,IAAIy4F,EAAMigE,EAAU14J,GACpB,IAAIs+G,EAAY7lB,GAAhB,CAGA,IAAInhF,EAAQmhF,EAAInhF,MAAMggJ,IAEtB,GAAIhgJ,EAAO,CACT,IAAI9W,EAAO8W,EAAM,GACbgC,EAAYhC,EAAM,GAAKA,EAAM,GAAK,KAClCw5D,EAAMrzD,EAAQrb,EAAMq2F,EAAKj4F,EAAM8Y,EAAWi/I,EAAW16I,EAAU26I,GACnE,IAAY,IAAR1nF,EACF,KAEJ,CAVA,CAWF,CACF,EAEI6nF,GAAe,SAAsBv2J,EAAMoZ,GAE7C,OADApZ,EAAKy1J,eAAez1J,EAAKrG,QAASyf,GAC3B,IAAIq7I,GAAMr7I,EAAIhb,KAAMgb,EAC7B,EACIo9I,GAAkB,SAAyBx2J,EAAMqb,EAAS27E,GAC5D,GAAI/5E,EAAM+5E,GACR37E,EAAQrb,EAAMg3F,QAET,GAAI8kB,EAAY9kB,GACrB37E,EAAQrb,EAAMu2J,GAAav2J,EAAMg3F,SAInC,IADA,IAAIs/D,EAAY9mG,EAAMwnC,GAAUA,EAASA,EAAO95F,MAAM,OAC7CU,EAAI,EAAGA,EAAI04J,EAAU16J,OAAQgC,IAAK,CACzC,IAAIy4F,EAAMigE,EAAU14J,GACpB,IAAIs+G,EAAY7lB,GAAhB,CAGA,IAAInhF,EAAQmhF,EAAInhF,MAAMggJ,IAEtB,GAAIhgJ,EAAO,CACT,IAAI9W,EAAO8W,EAAM,GACbgC,EAAYhC,EAAM,GAAKA,EAAM,GAAK,KAClCuhJ,EAAWF,GAAav2J,EAAM,CAChC5B,KAAMA,EACN8Y,UAAWA,EACX5X,OAAQU,EAAKrG,UAEf0hB,EAAQrb,EAAMy2J,EAChB,CAZA,CAaF,CACF,EACAh/G,GAAE4lB,GAAK5lB,GAAEqkG,YAAc,SAAU9kD,EAAQm/D,EAAW16I,EAAU26I,EAAMC,GAkBlE,OAjBAH,GAAat8J,MAAM,SAAUoG,EAAMid,EAAO7e,EAAM8Y,EAAWi/I,EAAW16I,EAAU26I,GAC1Ex6C,EAAKngG,IACPzb,EAAK2rH,UAAU9tH,KAAK,CAClBof,MAAOA,EAEPxB,SAAUA,EAEVrd,KAAMA,EAEN8Y,UAAWA,EAEXi/I,UAAWA,EAEXC,KAAMA,GAGZ,GAAGp/D,EAAQm/D,EAAW16I,EAAU26I,EAAMC,GAC/Bz8J,IACT,EACA69C,GAAE69B,IAAM,SAAU0hB,EAAQm/D,EAAW16I,EAAU26I,GAC7C,OAAOx8J,KAAKyjE,GAAG25B,EAAQm/D,EAAW16I,EAAU26I,EAAM,CAChD9gF,KAAK,GAET,EACA79B,GAAEwrD,eAAiBxrD,GAAEm+B,IAAM,SAAUohB,EAAQm/D,EAAW16I,EAAU26I,GAChE,IAAI3oI,EAAQ7zB,KACU,IAAlBA,KAAKq8J,WACPr8J,KAAK+xH,UAAY5B,GAAUnwH,KAAK+xH,YAYlC,IAVA,IAAIA,EAAY/xH,KAAK+xH,UACjB1lG,EAAQ,SAAeroB,GACzB,IAAI84J,EAAW/qC,EAAU/tH,GACzBs4J,GAAazoI,GAAO,SAAUztB,EAAMid,EAAO7e,EAAM8Y,EAAWi/I,EAAW16I,GACrE,IAAKi7I,EAASt4J,OAASA,GAAmB,MAAX44F,MAAqB9/E,GAAoC,OAAvBw/I,EAASx/I,WAAsBw/I,EAASx/I,YAAcA,MAAgBi/I,GAAan2J,EAAKq1J,iBAAiBqB,EAASP,UAAWA,OAAiB16I,GAAYi7I,EAASj7I,WAAaA,GAE/O,OADAkwG,EAAU94F,OAAOj1B,EAAG,IACb,CAEX,GAAGo5F,EAAQm/D,EAAW16I,EAAU26I,EAClC,EACSx4J,EAAI+tH,EAAU/vH,OAAS,EAAGgC,GAAK,EAAGA,IACzCqoB,EAAMroB,GAER,OAAOhE,IACT,EACA69C,GAAEk/G,mBAAqB,WACrB,OAAO/8J,KAAKqpG,eAAe,IAC7B,EACAxrD,GAAE4rD,KAAO5rD,GAAEmyD,QAAU,SAAU5S,EAAQ4/D,EAAaC,GAClD,IAAIlrC,EAAY/xH,KAAK+xH,UACjBmrC,EAAyBnrC,EAAU/vH,OA8CvC,OA7CAhC,KAAKq8J,WACAzmG,EAAMonG,KACTA,EAAc,CAACA,IAEjBJ,GAAgB58J,MAAM,SAAUoG,EAAMy2J,GACd,MAAlBI,IACFlrC,EAAY,CAAC,CACX1uG,MAAOw5I,EAASx5I,MAChB7e,KAAMq4J,EAASr4J,KACf8Y,UAAWu/I,EAASv/I,UACpBuE,SAAUo7I,IAEZC,EAAyBnrC,EAAU/vH,QAwBrC,IAtBA,IAAIm7J,EAAS,SAAgBn5J,GAC3B,IAAI84J,EAAW/qC,EAAU/tH,GACzB,GAAI84J,EAASt4J,OAASq4J,EAASr4J,QAAUs4J,EAASx/I,WAAaw/I,EAASx/I,YAAcu/I,EAASv/I,WAAaw/I,EAASx/I,YAAci+I,KAAuBn1J,EAAKw1J,aAAax1J,EAAKrG,QAAS+8J,EAAUD,GAAW,CAC7M,IAAI5pJ,EAAO,CAAC4pJ,GACO,MAAfG,GACF/4J,GAAKgP,EAAM+pJ,GAEb52J,EAAK21J,WAAW31J,EAAKrG,QAAS+8J,EAAUD,GACpCC,EAASN,MAAQM,EAASN,KAAK9gF,MACjCt1E,EAAK2rH,UAAY3rH,EAAK2rH,UAAU/hG,QAAO,SAAUxhB,GAC/C,OAAOA,IAAMsuJ,CACf,KAEF,IAAI/8J,EAAUqG,EAAK01J,gBAAgB11J,EAAKrG,QAAS+8J,EAAUD,GACvD/nF,EAAMgoF,EAASj7I,SAAS/e,MAAM/C,EAASkT,GAC3C7M,EAAK41J,UAAU51J,EAAKrG,QAAS+8J,EAAUD,IAC3B,IAAR/nF,IACF+nF,EAAS3hF,kBACT2hF,EAASngE,iBAEb,CACF,EACS14F,EAAI,EAAGA,EAAIk5J,EAAwBl5J,IAC1Cm5J,EAAOn5J,GAGLoC,EAAK61J,OAAO71J,EAAKrG,WAAa88J,EAAS3B,wBACzC90J,EAAKjG,OAAOiG,EAAKrG,SAAS0pG,KAAKozD,EAAUG,EAE7C,GAAG5/D,GACHp9F,KAAKq8J,WACEr8J,IACT,EAEA,IAAIo9J,GAAmB,CACrB3B,iBAAkB,SAA0B4B,EAAWC,GACrD,OAAiB,MAAbD,GAAkC,MAAbC,EACH,MAAbD,GAAkC,MAAbC,EAErBD,EAAU3R,SAAS4R,EAE9B,EACA1B,aAAc,SAAsBl9D,EAAKo+D,EAAUD,GACjD,IAAIj9E,EAAWk9E,EAASP,UACxB,OAAgB,MAAZ38E,GACK8e,IAAQm+D,EAASn3J,QAAUm0G,EAAQgjD,EAASn3J,SAAWk6E,EAASgmE,QAAQiX,EAASn3J,OAG5F,EACAm2J,eAAgB,SAAwBn9D,EAAKjC,GAC3CA,EAAIttE,GAAKuvE,EAAIvvE,KACbstE,EAAI/2F,OAASg5F,CACf,EACAo9D,gBAAiB,SAAyBp9D,EAAKo+D,EAAUD,GACvD,OAA6B,MAAtBC,EAASP,UAAoBM,EAASn3J,OAASg5F,CACxD,EACAq9D,WAAY,SAAoBh8J,EAAS+8J,GACnCA,EAASN,MAAQM,EAASN,KAAKe,MACjCT,EAASN,KAAKgB,eAAen0D,eAAeyzD,EAASz5I,MAAOy5I,EAASP,UAAWO,EAASj7I,SAE7F,EACAo6I,OAAQ,WACN,OAAO,CACT,EACA97J,OAAQ,SAAgBu+F,GACtB,OAAOA,EAAImnD,UAAYnnD,EAAIv+F,SAAWu+F,EAAIvvE,IAC5C,GAEEsuI,GAAgB,SAAqB12J,GACvC,OAAIsY,EAAOtY,GACF,IAAIukJ,GAASvkJ,GAEbA,CAEX,EACI22J,GAAW,CACb1qC,cAAe,WACb,IAAK,IAAIhvH,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GACX0tH,EAAKhzB,EAAI7d,SACR6wC,EAAGisC,UACNjsC,EAAGisC,QAAU,IAAIvB,GAAQgB,GAAkB1+D,GAE/C,CACA,OAAO1+F,IACT,EACA29J,QAAS,WACP,OAAO39J,KAAK6gF,SAAS88E,OACvB,EACAl6F,GAAI,SAAY25B,EAAQxd,EAAU/9D,GAEhC,IADA,IAAI+7I,EAASH,GAAc79E,GAClB57E,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GACf06F,EAAIi/D,UAAUl6F,GAAG25B,EAAQwgE,EAAQ/7I,EACnC,CACA,OAAO7hB,IACT,EACAqpG,eAAgB,SAAwBjM,EAAQxd,EAAU/9D,GAExD,IADA,IAAI+7I,EAASH,GAAc79E,GAClB57E,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GACf06F,EAAIi/D,UAAUt0D,eAAejM,EAAQwgE,EAAQ/7I,EAC/C,CACA,OAAO7hB,IACT,EACA+8J,mBAAoB,WAClB,IAAK,IAAI/4J,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GACf06F,EAAIi/D,UAAUZ,oBAChB,CACA,OAAO/8J,IACT,EACA07E,IAAK,SAAa0hB,EAAQxd,EAAU/9D,GAElC,IADA,IAAI+7I,EAASH,GAAc79E,GAClB57E,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GACf06F,EAAIi/D,UAAUjiF,IAAI0hB,EAAQwgE,EAAQ/7I,EACpC,CACA,OAAO7hB,IACT,EACAu9J,KAAM,SAAcngE,EAAQxd,EAAU/9D,GAEpC,IADA,IAAI+7I,EAASH,GAAc79E,GAClB57E,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GACf06F,EAAIi/D,UAAUl6F,GAAG25B,EAAQwgE,EAAQ/7I,EAAU,CACzC07I,MAAM,EACNC,eAAgBx9J,MAEpB,CACF,EACAypG,KAAM,SAAcrM,EAAQ4/D,GAC1B,IAAK,IAAIh5J,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GACf06F,EAAIi/D,UAAUl0D,KAAKrM,EAAQ4/D,EAC7B,CACA,OAAOh9J,IACT,EACA2wJ,cAAe,SAAuBttI,EAAO25I,GAE3C,GAAoB,IAAhBh9J,KAAKgC,OAOT,OAFAhC,KAAKmvB,KAAKkxH,OAAOh9H,EAAOrjB,MACxBA,KAAKypG,KAAKpmF,EAAO25I,GACVh9J,IACT,GAEF83E,GAAOmqE,eAAeyb,IAEtB,IAAIG,GAAW,CACb/+E,MAAO,SAAec,GACpB,OAAO5/E,KAAKgwB,QAAO,SAAU0uE,GAC3B,OAAOA,EAAIO,QACb,IAAGjvE,OAAO4vD,EACZ,EACAO,MAAO,SAAeP,GACpB,OAAO5/E,KAAKgwB,QAAO,SAAU0uE,GAC3B,OAAOA,EAAI66C,QACb,IAAGvpH,OAAO4vD,EACZ,EAEA+zC,QAAS,WAGP,IAFA,IAAI70C,EAAQ9+E,KAAKm2H,QACbh2C,EAAQngF,KAAKm2H,QACRnyH,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GACX06F,EAAIO,SACNngB,EAAM76E,KAAKy6F,GAEXve,EAAMl8E,KAAKy6F,EAEf,CACA,MAAO,CACL5f,MAAOA,EACPqB,MAAOA,EAEX,EACAnwD,OAAQ,SAAgB8tI,EAASptD,GAC/B,QAAgBhuG,IAAZo7J,EAEF,OAAO99J,KACF,GAAIqf,EAAOy+I,IAAY77C,EAAoB67C,GAChD,OAAO,IAAIxS,GAASwS,GAAS9tI,OAAOhwB,MAC/B,GAAIgiH,EAAK87C,GAAU,CAGxB,IAFA,IAAIC,EAAa/9J,KAAKm2H,QAClB/tB,EAAOpoG,KACFgE,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACXg6J,EAAUttD,EAAUotD,EAAQh7J,MAAM4tG,EAAS,CAAChS,EAAK16F,EAAGokG,IAAS01D,EAAQp/D,EAAK16F,EAAGokG,GAC7E41D,GACFD,EAAW95J,KAAKy6F,EAEpB,CACA,OAAOq/D,CACT,CACA,OAAO/9J,KAAKm2H,OACd,EAEAjkB,IAAK,SAAa+rD,GAChB,GAAKA,EAEE,CACD5+I,EAAO4+I,KACTA,EAAWj+J,KAAKgwB,OAAOiuI,IAGzB,IADA,IAAIrkD,EAAW55G,KAAKm2H,QACXnyH,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI61G,EAAU75G,KAAKgE,GACf44E,EAASqhF,EAAS55J,IAAIw1G,GACrBj9B,GACHg9B,EAAS31G,KAAK41G,EAElB,CACA,OAAOD,CACT,CAdE,OAAO55G,IAeX,EACAk+J,mBAAoB,WAClB,IAAI/uI,EAAKnvB,KAAKmvB,KACd,OAAOA,EAAGgvI,kBAAkBjsD,IAAIlyG,KAClC,EACAw1H,UAAW,SAAmB4oC,GAE5B,GAAI/+I,EAAO++I,GAAQ,CACjB,IAAIx+E,EAAWw+E,EACf,OAAOp+J,KAAKgwB,OAAO4vD,EACrB,CAOA,IANA,IAAIg6B,EAAW55G,KAAKm2H,QAChBkoC,EAAOr+J,KACPs+J,EAAOF,EACPG,EAAcv+J,KAAKgC,OAASo8J,EAAMp8J,OAClCw8J,EAAOD,EAAcF,EAAOC,EAC5BG,EAAOF,EAAcD,EAAOD,EACvBr6J,EAAI,EAAGA,EAAIw6J,EAAKx8J,OAAQgC,IAAK,CACpC,IAAI06F,EAAM8/D,EAAKx6J,GACXy6J,EAAKp6J,IAAIq6F,IACXkb,EAAS31G,KAAKy6F,EAElB,CACA,OAAOkb,CACT,EACA8kD,IAAK,SAAaN,GAChB,IAAIjvI,EAAKnvB,KAAK6gF,SAAS1xD,GACnB9P,EAAO++I,KACTA,EAAQjvI,EAAGhK,EAAEi5I,IAEf,IAAIxkD,EAAW55G,KAAKm2H,QAChBkoC,EAAOr+J,KACPs+J,EAAOF,EACP79J,EAAM,SAAa+9G,EAAK8/C,GAC1B,IAAK,IAAIp6J,EAAI,EAAGA,EAAIs6G,EAAIt8G,OAAQgC,IAAK,CACnC,IAAI06F,EAAM4f,EAAIt6G,GACVwF,EAAKk1F,EAAI7d,SAAS5hE,KAAKzV,GACvBm1J,EAAUP,EAAM/lC,iBAAiB7uH,GAChCm1J,GACH/kD,EAAS31G,KAAKy6F,EAElB,CACF,EAGA,OAFAn+F,EAAI89J,EAAMC,GACV/9J,EAAI+9J,EAAMD,GACHzkD,CACT,EACAhN,KAAM,SAAcwxD,GAClB,IAAIjvI,EAAKnvB,KAAK6gF,SAAS1xD,GACnB9P,EAAO++I,KACTA,EAAQjvI,EAAGhK,EAAEi5I,IAEf,IAAI/tH,EAAOrwC,KAAKm2H,QACZ7lF,EAAQtwC,KAAKm2H,QACbyoC,EAAO5+J,KAAKm2H,QACZkoC,EAAOr+J,KACPs+J,EAAOF,EACP79J,EAAM,SAAa+9G,EAAK8/C,EAAOS,GACjC,IAAK,IAAI76J,EAAI,EAAGA,EAAIs6G,EAAIt8G,OAAQgC,IAAK,CACnC,IAAI06F,EAAM4f,EAAIt6G,GACVwF,EAAKk1F,EAAI7d,SAAS5hE,KAAKzV,GACvBm1J,EAAUP,EAAM/lC,iBAAiB7uH,GACjCm1J,EACFC,EAAK5gD,MAAMtf,GAEXmgE,EAAQ56J,KAAKy6F,EAEjB,CACF,EAGA,OAFAn+F,EAAI89J,EAAMC,EAAMjuH,GAChB9vC,EAAI+9J,EAAMD,EAAM/tH,GACT,CACLD,KAAMA,EACNC,MAAOA,EACPsuH,KAAMA,EAEV,EACAr+J,IAAK,SAAau+J,GAChB,IAAI3vI,EAAKnvB,KAAK6gF,SAAS1xD,GACvB,IAAK2vI,EACH,OAAO9+J,KAET,GAAIqf,EAAOy/I,GAAQ,CACjB,IAAIl/E,EAAWk/E,EACfA,EAAQ3vI,EAAGgvI,kBAAkBnuI,OAAO4vD,EACtC,CAEA,IADA,IAAIg6B,EAAW55G,KAAK++J,YACX/6J,EAAI,EAAGA,EAAI86J,EAAM98J,OAAQgC,IAAK,CACrC,IAAI06F,EAAMogE,EAAM96J,GACZzD,GAAOP,KAAKqE,IAAIq6F,GAChBn+F,GACFq5G,EAAS31G,KAAKy6F,EAElB,CACA,OAAOkb,CACT,EAEAoE,MAAO,SAAe8gD,GACpB,IAAIptC,EAAK1xH,KAAK6gF,SACV1xD,EAAKuiG,EAAGviG,GACZ,IAAK2vI,EACH,OAAO9+J,KAET,GAAI8+J,GAASz/I,EAAOy/I,GAAQ,CAC1B,IAAIl/E,EAAWk/E,EACfA,EAAQ3vI,EAAGgvI,kBAAkBnuI,OAAO4vD,EACtC,CAEA,IADA,IAAIl2D,EAAMgoG,EAAGhoG,IACJ1lB,EAAI,EAAGA,EAAI86J,EAAM98J,OAAQgC,IAAK,CACrC,IAAIg7J,EAAWF,EAAM96J,GACjBwF,EAAKw1J,EAASn+E,SAAS5hE,KAAKzV,GAC5BjJ,GAAOmpB,EAAIrlB,IAAImF,GACnB,GAAIjJ,EAAK,CACP,IAAI0B,EAAQjC,KAAKgC,SACjBhC,KAAKiC,GAAS+8J,EACdt1I,EAAIlX,IAAIhJ,EAAI,CACVk1F,IAAKsgE,EACL/8J,MAAOA,GAEX,CACF,CACA,OAAOjC,IACT,EAEAi/J,UAAW,SAAmBj7J,GAC5B,IAAI06F,EAAM1+F,KAAKgE,GACXwF,EAAKk1F,EAAIl1F,KACTkoH,EAAK1xH,KAAK6gF,SACVn3D,EAAMgoG,EAAGhoG,IAGb1pB,KAAKgE,QAAKtB,EACVgnB,EAAI,UAAUlgB,GACd,IAAI01J,EAAkBl7J,IAAMhE,KAAKgC,OAAS,EAG1C,GAAIhC,KAAKgC,OAAS,IAAMk9J,EAAiB,CACvC,IAAIC,EAAWn/J,KAAKgC,OAAS,EACzBo9J,EAAUp/J,KAAKm/J,GACfE,EAAYD,EAAQv+E,SAAS5hE,KAAKzV,GACtCxJ,KAAKm/J,QAAYz8J,EACjB1C,KAAKgE,GAAKo7J,EACV11I,EAAIlX,IAAI6sJ,EAAW,CACjB3gE,IAAK0gE,EACLn9J,MAAO+B,GAEX,CAIA,OADAhE,KAAKgC,SACEhC,IACT,EAEAs/J,WAAY,SAAoB5gE,GAC9BA,EAAMA,EAAI,GACV,IAAIgzB,EAAK1xH,KAAK6gF,SACVr3E,EAAKk1F,EAAI7d,SAAS5hE,KAAKzV,GACvBkgB,EAAMgoG,EAAGhoG,IACTzB,EAAQyB,EAAIxmB,IAAIsG,GACpB,IAAKye,EACH,OAAOjoB,KAGT,IAAIgE,EAAIikB,EAAMhmB,MAEd,OADAjC,KAAKi/J,UAAUj7J,GACRhE,IACT,EAEAu/J,QAAS,SAAiBtB,GACxB,IAAI9uI,EAAKnvB,KAAK6gF,SAAS1xD,GACvB,IAAK8uI,EACH,OAAOj+J,KAET,GAAIi+J,GAAY5+I,EAAO4+I,GAAW,CAChC,IAAIr+E,EAAWq+E,EACfA,EAAW9uI,EAAGgvI,kBAAkBnuI,OAAO4vD,EACzC,CACA,IAAK,IAAI57E,EAAI,EAAGA,EAAIi6J,EAASj8J,OAAQgC,IACnChE,KAAKs/J,WAAWrB,EAASj6J,IAE3B,OAAOhE,IACT,EAEA+0H,UAAW,SAAmByqC,GAC5B,IAAK,IAAIx7J,EAAIhE,KAAKgC,OAAS,EAAGgC,GAAK,EAAGA,IAAK,CACzC,IAAI06F,EAAM1+F,KAAKgE,GACXw7J,EAAO9gE,IACT1+F,KAAKi/J,UAAUj7J,EAEnB,CACA,OAAOhE,IACT,EACA0pB,IAAK,SAAa+1I,EAAO/uD,GAGvB,IAFA,IAAIp8B,EAAM,GACN8zB,EAAOpoG,KACFgE,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACX8wE,EAAM47B,EAAU+uD,EAAM38J,MAAM4tG,EAAS,CAAChS,EAAK16F,EAAGokG,IAASq3D,EAAM/gE,EAAK16F,EAAGokG,GACzE9zB,EAAIrwE,KAAK6wE,EACX,CACA,OAAOR,CACT,EACAhpD,OAAQ,SAAgB9oB,EAAIk9J,GAG1B,IAFA,IAAI1wJ,EAAM0wJ,EACNt3D,EAAOpoG,KACFgE,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAC/BgL,EAAMxM,EAAGwM,EAAKo5F,EAAKpkG,GAAIA,EAAGokG,GAE5B,OAAOp5F,CACT,EACAL,IAAK,SAAagxJ,EAAOjvD,GAIvB,IAHA,IACIkvD,EADAjxJ,GAAOkkF,IAEPuV,EAAOpoG,KACFgE,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACXgL,EAAM0hG,EAAUivD,EAAM78J,MAAM4tG,EAAS,CAAChS,EAAK16F,EAAGokG,IAASu3D,EAAMjhE,EAAK16F,EAAGokG,GACrEp5F,EAAML,IACRA,EAAMK,EACN4wJ,EAASlhE,EAEb,CACA,MAAO,CACL58F,MAAO6M,EACP+vF,IAAKkhE,EAET,EACAhxJ,IAAK,SAAa+wJ,EAAOjvD,GAIvB,IAHA,IACImvD,EADAjxJ,EAAMikF,IAENuV,EAAOpoG,KACFgE,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACXgL,EAAM0hG,EAAUivD,EAAM78J,MAAM4tG,EAAS,CAAChS,EAAK16F,EAAGokG,IAASu3D,EAAMjhE,EAAK16F,EAAGokG,GACrEp5F,EAAMJ,IACRA,EAAMI,EACN6wJ,EAASnhE,EAEb,CACA,MAAO,CACL58F,MAAO8M,EACP8vF,IAAKmhE,EAET,GAIEC,GAAOjC,GACXiC,GAAK,KAAOA,GAAK,KAAOA,GAAK,KAAOA,GAAK/oE,MAAQ+oE,GAAK7wG,GAAK6wG,GAAKv/J,IAChEu/J,GAAK,MAAQA,GAAK,KAAOA,GAAK,KAAOA,GAAK7oD,WAAa6oD,GAAKC,mBAAqBD,GAAKE,SAAWF,GAAK5tD,IACtG4tD,GAAK,KAAOA,GAAK,KAAOA,GAAK,KAAOA,GAAKG,IAAMH,GAAKv5B,aAAeu5B,GAAKtqC,UACxEsqC,GAAK,KAAOA,GAAK,OAASA,GAAK,OAASA,GAAKI,oBAAsBJ,GAAKK,QAAUL,GAAKpB,IACvFoB,GAAKM,SAAWN,GAAKO,SAAWP,GAAK1S,UAAY0S,GAAK9vI,OACtD8vI,GAAKQ,WAAaR,GAAKS,QAAUT,GAAK5B,mBAEtC,IAAIsC,GAAW,CACbvhE,OAAQ,WACN,MAAwB,UAAjBj/F,KAAKk7C,OACd,EACAq+F,OAAQ,WACN,MAAwB,UAAjBv5I,KAAKk7C,OACd,EACA85E,OAAQ,WACN,OAAOh1H,KAAKu5I,UAAYv5I,KAAK0E,SAAS,KAAO1E,KAAK0F,SAAS,EAC7D,EACAqgJ,SAAU,WACR,OAAO/lJ,KAAKu5I,UAAYv5I,KAAK0E,SAAS,KAAO1E,KAAK0F,SAAS,EAC7D,EACAw1C,MAAO,WACL,IAAIwjD,EAAM1+F,KAAK,GACf,GAAI0+F,EACF,OAAOA,EAAI7d,SAAS3lC,KAExB,GAeEulH,GAAa,SAAoB99J,EAAGC,GACtC,IAAIusB,EAAKxsB,EAAEwsB,KACPy+H,EAAmBz+H,EAAGy+H,mBAC1B,SAAS8S,EAAShiE,GAChB,IAAI9yF,EAAQ8yF,EAAImyD,OAAO,oBACvB,MAAoB,SAAhBjlJ,EAAM9J,MACD8rJ,EAAmBlvD,EAAIiiE,SAAW,EAChB,WAAhB/0J,EAAM9J,OACP,EACiB,QAAhB8J,EAAM9J,MACR8tH,GAGF,CACT,CACA,IAAIgxC,EAAYF,EAAS/9J,GAAK+9J,EAAS99J,GACvC,GAAkB,IAAdg+J,EACF,OAAOA,EAET,SAASC,EAAYniE,GACnB,IAAI9yF,EAAQ8yF,EAAImyD,OAAO,mBACvB,MAAoB,SAAhBjlJ,EAAM9J,OACD48F,EAAIO,SAAW,EAGjB,CACT,CACA,IAAI6hE,EAAUD,EAAYl+J,GAAKk+J,EAAYj+J,GAC3C,GAAgB,IAAZk+J,EACF,OAAOA,EAET,IAAIC,EAAQp+J,EAAEkuJ,OAAO,WAAW/uJ,MAAQc,EAAEiuJ,OAAO,WAAW/uJ,MAC5D,OAAc,IAAVi/J,EACKA,EAGFp+J,EAAEq+J,YAAcp+J,EAAEo+J,WAC3B,EAEIC,GAAW,CACbr2J,QAAS,SAAiBpI,EAAIkuG,GAC5B,GAAIsR,EAAKx/G,GAEP,IADA,IAAIoxF,EAAI5zF,KAAKgC,OACJgC,EAAI,EAAGA,EAAI4vF,EAAG5vF,IAAK,CAC1B,IAAI06F,EAAM1+F,KAAKgE,GACX8wE,EAAM47B,EAAUluG,EAAGM,MAAM4tG,EAAS,CAAChS,EAAK16F,EAAGhE,OAASwC,EAAGk8F,EAAK16F,EAAGhE,MACnE,IAAY,IAAR80E,EACF,KAEJ,CAGF,OAAO90E,IACT,EACAuxH,QAAS,WAEP,IADA,IAAI37D,EAAQ,GACH5xD,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAC/B4xD,EAAM3xD,KAAKjE,KAAKgE,IAElB,OAAO4xD,CACT,EACAzzD,MAAO,SAAeu8C,EAAOC,GAC3B,IAAIiX,EAAQ,GACRsrG,EAAWlhK,KAAKgC,OACT,MAAP28C,IACFA,EAAMuiH,GAEK,MAATxiH,IACFA,EAAQ,GAENA,EAAQ,IACVA,EAAQwiH,EAAWxiH,GAEjBC,EAAM,IACRA,EAAMuiH,EAAWviH,GAEnB,IAAK,IAAI36C,EAAI06C,EAAO16C,GAAK,GAAKA,EAAI26C,GAAO36C,EAAIk9J,EAAUl9J,IACrD4xD,EAAM3xD,KAAKjE,KAAKgE,IAElB,OAAOhE,KAAKm2H,MAAMvgE,EACpB,EACA0zB,KAAM,WACJ,OAAOtpF,KAAKgC,MACd,EACAypJ,GAAI,SAAYznJ,GACd,OAAOhE,KAAKgE,IAAMhE,KAAKm2H,OACzB,EACAnhD,MAAO,WACL,OAAOh1E,KAAK,IAAMA,KAAKm2H,OACzB,EACAryE,KAAM,WACJ,OAAO9jD,KAAKA,KAAKgC,OAAS,IAAMhC,KAAKm2H,OACvC,EACA4Y,MAAO,WACL,OAAuB,IAAhB/uI,KAAKgC,MACd,EACAkrJ,SAAU,WACR,OAAQltJ,KAAK+uI,OACf,EACAlpH,KAAM,SAAcs7I,GAClB,IAAKn/C,EAAKm/C,GACR,OAAOnhK,KAET,IAAIsuF,EAAStuF,KAAKuxH,UAAU1rG,KAAKs7I,GACjC,OAAOnhK,KAAKm2H,MAAM7nC,EACpB,EACA8yE,aAAc,WACZ,OAAOphK,KAAK6lB,KAAK46I,GACnB,EACAE,OAAQ,WACN,IAAIjiE,EAAM1+F,KAAK,GACf,GAAK0+F,EAAL,CAKA,IAAIgzB,EAAKhzB,EAAI7d,SACT3lC,EAAQw2E,EAAGx2E,MACf,GAAc,UAAVA,EAAmB,CACrB,IAAI64E,EAAQrC,EAAGzyG,KAAK9e,OAASu+F,EAAIuuD,UAAU3jE,OAAS,EACpD,OAAKoV,EAAIQ,WAIF60B,EAHEnE,GAAY,CAIvB,CACE,IAAI9jH,EAAM4lH,EAAGhtH,OACTi8F,EAAM+wB,EAAGhsH,OACT27J,EAAWv1J,EAAI60J,SACfW,EAAW3gE,EAAIggE,SACnB,OAAOx6J,KAAKwI,IAAI0yJ,EAAUC,EAAU,EAjBtC,CAmBF,GAGFL,GAASvpD,KAAOupD,GAASr2J,QACzB,IAAI22J,GAAuB,WACzB,IAAIC,EAAc,YACdC,GAAyC,qBAAX/2J,OAAyB,YAAcgrE,EAAQhrE,UAAY82J,GAAe9rF,EAAQhrE,OAAOmH,WAAa2vJ,EAEpIC,IACFR,GAASv2J,OAAOmH,UAAY,WAC1B,IAAIgiB,EAAQ7zB,KAERioB,EAAQ,CACVnmB,WAAOY,EACP2G,MAAM,GAEJrF,EAAI,EACJhC,EAAShC,KAAKgC,OAClB,OAAO6+G,EAAgB,CACrBv5G,KAAM,WAOJ,OANItD,EAAIhC,EACNimB,EAAMnmB,MAAQ+xB,EAAM7vB,MAEpBikB,EAAMnmB,WAAQY,EACdulB,EAAM5e,MAAO,GAER4e,CACT,GACCvd,OAAOmH,UAAU,WAElB,OAAO7R,IACT,GACF,EAEJ,EACAuhK,KAEA,IAAIG,GAA4BpxC,GAAW,CACzCqxC,6BAA6B,IAE3BC,GAAW,CAEbC,iBAAkB,SAA0BliK,GAE1C,IAAImiK,EACJ,GAFAniK,EAAU+hK,GAA0B/hK,GAE/BK,KAAK+hK,eAKH,GAAIpiK,EAAQgiK,4BAA6B,CAC9C,IAAIK,EAAQhiK,KAAKshF,cACjBwgF,EAAO,CACLj4J,EAAGm4J,EAAMn4J,EACT/I,EAAGkhK,EAAMlhK,EAEb,MACEghK,EAAO,CACLj4J,EAAG7J,KAAKi1G,aACRn0G,EAAGd,KAAKk1G,oBAbV4sD,EAAO,CACLj4J,EAAG,EACH/I,EAAG,GAmBP,OAHe,IAAXghK,EAAKj4J,GAAsB,IAAXi4J,EAAKhhK,IACvBghK,EAAKj4J,EAAIi4J,EAAKhhK,EAAI,GAEbghK,CACT,EAEAl4D,gBAAiB,SAAyBzB,EAAQxoG,EAAS6C,GACzD,IAAIs8E,EAAQ9+E,KAAK8+E,QAAQ9uD,QAAO,SAAUjQ,GACxC,OAAQA,EAAEm/E,UACZ,IACI/vE,EAAKnvB,KAAKmvB,KACV8yI,EAAatiK,EAAQyoG,KACrB85D,EAAgB,SAAuB9mF,GACzC,OAAOA,EAAK5xE,IACd,EACI24J,EAAQz/C,EAAQlgH,EAAI0/J,GAExB/5D,EAAOsB,KAAK,CACVjlG,KAAM,cACN2jG,OAAQA,IAEVA,EAAOi6D,WAAa,GACpB,IAAIC,EAAmB,SAA0BC,EAASC,EAASl0J,GACjE,IAAIohC,EAAS,CACX3vB,EAAGyiJ,EAAQz4H,GAAKy4H,EAAQ14J,EAAI,EAC5B80B,EAAG4jI,EAAQx4H,GAAKw4H,EAAQzhK,EAAI,GAE1B0hK,EAAgB,CAElB1iJ,GAAIzR,EAAIyR,EAAI2vB,EAAO3vB,GAAKwiJ,EACxB3jI,GAAItwB,EAAIswB,EAAI8Q,EAAO9Q,GAAK2jI,GAE1B,MAAO,CACLxiJ,EAAG2vB,EAAO3vB,EAAI0iJ,EAAc1iJ,EAC5B6e,EAAG8Q,EAAO9Q,EAAI6jI,EAAc7jI,EAEhC,EACI8jI,EAAmB9iK,EAAQ+iK,eAA2C,IAA1B/iK,EAAQ+iK,cACpDC,EAAY,WACd,IAAKF,EACH,OAAO,KAGT,IADA,IAAIhpF,EAAKquB,KACA9jG,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAAK,CACrC,IAAIo3E,EAAO0D,EAAM96E,GACbqK,EAAM8zJ,EAAM/mF,EAAMp3E,GACtB87H,GAAyBrmD,EAAIprE,EAAIyR,EAAGzR,EAAIswB,EAC1C,CACA,OAAO86C,CACT,EACIA,EAAKkpF,IACLC,EAAclgD,GAAQ,SAAUtnC,EAAMp3E,GACxC,IAAIkrJ,EAASiT,EAAM/mF,EAAMp3E,GACzB,GAAIy+J,EAAkB,CACpB,IAAIH,EAAUn8J,KAAK6iB,IAAIrpB,EAAQ+iK,eAC/BxT,EAASmT,EAAiBC,EAAS7oF,EAAIy1E,EACzC,CAIA,OAHyB,MAArBvvJ,EAAQ0nE,YACV6nF,EAASvvJ,EAAQ0nE,UAAU+T,EAAM8zE,IAE5BA,CACT,GAAGgT,GACH,GAAIviK,EAAQ2nG,QAAS,CACnB,IAAK,IAAItjG,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAAK,CACrC,IAAIo3E,EAAO0D,EAAM96E,GACbkrJ,EAAS0T,EAAYxnF,EAAMp3E,GAC3B6+J,EAAuC,MAAzBljK,EAAQmjK,eAAyBnjK,EAAQmjK,cAAc1nF,EAAMp3E,GAC/E,GAAI6+J,EAAa,CACf,IAAI5iB,EAAM7kE,EAAKpqD,UAAU,CACvBc,SAAUo9H,EACVprF,SAAUnkE,EAAQs0G,kBAClB8uD,OAAQpjK,EAAQqjK,kBAElB76D,EAAOi6D,WAAWn+J,KAAKg8I,EACzB,MACE7kE,EAAKtpD,SAASo9H,EAElB,CACA,GAAIvvJ,EAAQgoG,IAAK,CACf,IAAIs7D,EAAS9zI,EAAG6B,UAAU,CACxB22E,IAAK,CACHrmB,YAAa2gF,EAAWzJ,cAAcoK,GACtCr3E,QAAS5rF,EAAQ4rF,SAEnBznB,SAAUnkE,EAAQs0G,kBAClB8uD,OAAQpjK,EAAQqjK,kBAElB76D,EAAOi6D,WAAWn+J,KAAKg/J,EACzB,MAAO,QAAqBvgK,IAAjB/C,EAAQy9E,WAAsC16E,IAAhB/C,EAAQmkF,IAAmB,CAClE,IAAIo/E,EAAa/zI,EAAG6B,UAAU,CAC5BosD,KAAMz9E,EAAQy9E,KACd0G,IAAKnkF,EAAQmkF,IACbhgB,SAAUnkE,EAAQs0G,kBAClB8uD,OAAQpjK,EAAQqjK,kBAElB76D,EAAOi6D,WAAWn+J,KAAKi/J,EACzB,CACA/6D,EAAOi6D,WAAWx3J,SAAQ,SAAUq1I,GAClC,OAAOA,EAAI9B,MACb,IACAh2C,EAAOzsB,IAAI,cAAe/7E,EAAQonE,OAClCohC,EAAOsB,KAAK,CACVjlG,KAAM,cACN2jG,OAAQA,IAEV40C,GAAU5jI,IAAIgvF,EAAOi6D,WAAW14I,KAAI,SAAUu2H,GAC5C,OAAOA,EAAIz9B,SACb,KAAIxpC,MAAK,WACPmvB,EAAOzsB,IAAI,aAAc/7E,EAAQm4B,MACjCqwE,EAAOsB,KAAK,CACVjlG,KAAM,aACN2jG,OAAQA,GAEZ,GACF,MACErpB,EAAMirB,UAAU64D,GACZjjK,EAAQgoG,KACVx4E,EAAGw4E,IAAIhoG,EAAQyoG,KAAMzoG,EAAQ4rF,SAEX,MAAhB5rF,EAAQy9E,MACVjuD,EAAGiuD,KAAKz9E,EAAQy9E,MAEdz9E,EAAQmkF,KACV30D,EAAG20D,IAAInkF,EAAQmkF,KAEjBqkB,EAAOzsB,IAAI,cAAe/7E,EAAQonE,OAClCohC,EAAOsB,KAAK,CACVjlG,KAAM,cACN2jG,OAAQA,IAEVA,EAAOzsB,IAAI,aAAc/7E,EAAQm4B,MACjCqwE,EAAOsB,KAAK,CACVjlG,KAAM,aACN2jG,OAAQA,IAGZ,OAAOnoG,IACT,EAEAmoG,OAAQ,SAAgBxoG,GACtB,IAAIwvB,EAAKnvB,KAAKmvB,KACd,OAAOA,EAAGg0I,WAAWz/C,GAAO,CAAC,EAAG/jH,EAAS,CACvCyoG,KAAMpoG,OAEV,GAMF,SAASojK,GAAWv/J,EAAKrB,EAAIk8F,GAC3B,IAEI1vF,EAFA0iH,EAAKhzB,EAAI7d,SACTtrD,EAAQm8F,EAAG0xC,WAAa1xC,EAAG0xC,YAAc,GAE7C,OAA0B,OAArBp0J,EAAMumB,EAAM1xB,MAGfmL,EAAMumB,EAAM1xB,GAAOrB,EAAGk8F,IAFf1vF,CAKX,CACA,SAASq0J,GAAmBx/J,EAAKrB,GAE/B,OADAqB,EAAMurH,GAAWvrH,GACV,SAA6B66F,GAClC,OAAO0kE,GAAWv/J,EAAKrB,EAAIk8F,EAC7B,CACF,CACA,SAAS4kE,GAA4Bz/J,EAAKrB,GACxCqB,EAAMurH,GAAWvrH,GACjB,IAAI0/J,EAAS,SAAgB7kE,GAC3B,OAAOl8F,EAAGnC,KAAKq+F,EACjB,EACA,OAAO,WACL,IAAIA,EAAM1+F,KAAK,GACf,GAAI0+F,EACF,OAAO0kE,GAAWv/J,EAAK0/J,EAAQ7kE,EAEnC,CACF,CA9BAkjE,GAAS4B,aAAe5B,GAASuB,WAAavB,GAASz5D,OA+BvD,IAAIs7D,GAAW,CACbvL,yBAA0B,SAAkCnH,GAC1D,IAAI5hI,EAAKnvB,KAAKmvB,KACVooC,EAAWpoC,EAAGooC,WACd0nF,EAAe9vH,EAAG8vH,eAItB,OAHI1nF,GAAY0nF,GACd1nF,EAAS2gG,yBAAyBl4J,KAAM+wJ,GAEnC/wJ,IACT,EACA0jK,gBAAiB,WACf,IAKMt7D,EALFj5E,EAAKnvB,KAAKmvB,KACVw0I,EAAQ,SAAejlE,GACzB,OAAOA,EAAI7d,SAASuiF,WAAa,IACnC,EACIj0I,EAAGy+H,oBAELxlD,EAAOpoG,KAAK++J,YAAY/gD,MAAMh+G,KAAK0iG,eAAesb,MAAMh+G,KAAKitJ,WAC7D7kD,EAAK4V,MAAM5V,EAAKgN,kBAChBhN,EAAKx9F,QAAQ+4J,IAEb3jK,KAAK4K,SAAQ,SAAU8zF,GACrBilE,EAAMjlE,GACNA,EAAI0W,iBAAiBxqG,QAAQ+4J,EAC/B,IAEF,OAAO3jK,IACT,EAEA+gJ,YAAa,SAAqB6iB,GAChC,IAAIz0I,EAAKnvB,KAAK6gF,SAAS1xD,GACvB,IAAKA,EAAG8vH,eACN,OAAOj/I,KAET,GAAImvB,EAAGyhI,WAAY,CACjB,IAAIiT,EAAQ10I,EAAG0xD,SAASijF,eAExB,OADAD,EAAM7lD,MAAMh+G,MACLA,IACT,CAEA,IAAI2tJ,EAAex+H,EAAGy+H,mBAClBmW,EAAc/jK,KAClB4jK,KAAiBA,QAAqClhK,IAAnBkhK,GAC/BjW,IAEFoW,EAAc/jK,KAAK++J,YAAY/gD,MAAMh+G,KAAK0iG,eAAesb,MAAMh+G,KAAKitJ,YAItE,IAAI+W,EAAcD,EAUlB,OATIH,EACFI,EAAYrT,cAAc,SAE1BqT,EAAYv6D,KAAK,SAGnBs6D,EAAYn5J,SAAQ,SAAU8zF,GAC5B,OAAOA,EAAI7d,SAASm3E,YAAa,CACnC,IACOh4J,IACT,EAGAikK,WAAY,WACV,IAAI90I,EAAKnvB,KAAKmvB,KACd,GAAKA,EAAG8vH,eAGR,IAAK,IAAIj7I,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GACX06F,EAAI7d,SAASm3E,aAEft5D,EAAI7d,SAASm3E,YAAa,EAC1B7oI,EAAGvjB,QAAQ9I,MAAM47F,GAErB,CACF,EAEAwlE,YAAa,SAAqBztJ,GAChC,IAAI0tJ,IAAoBphK,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GACnF27F,EAAM1+F,KAAK,GACXmvB,EAAKuvE,EAAIvvE,KACb,GAAKA,EAAG8vH,gBAGJvgD,EAAK,CACP1+F,KAAKikK,aACL,IAAIG,EAAkB1lE,EAAI7d,SAASj1E,MAAM6K,GACzC,OAAuB,MAAnB2tJ,EACKA,EACED,EACFh1I,EAAGvjB,QAAQy4J,mBAAmB5tJ,GAE9B,IAEX,CACF,EACA6tJ,aAAc,SAAsB7tJ,GAClC,IAAIioF,EAAM1+F,KAAK,GACf,GAAK0+F,EAAIvvE,KAAK8vH,gBAGVvgD,EAAK,CACP,IAAImyD,EAASnyD,EAAImyD,OAAOp6I,GACxB,YAA0B/T,IAAnBmuJ,EAAOC,QAAwBD,EAAOC,QAAUD,EAAO/uJ,KAChE,CACF,EACAyiK,kBAAmB,SAA2B9tJ,GAC5C,IAAIioF,EAAM1+F,KAAK,GACf,GAAK0+F,EAAIvvE,KAAK8vH,eAGd,OAAIvgD,EACKA,EAAImyD,OAAOp6I,GAAUw6I,WAD9B,CAGF,EAGAuT,cAAe,SAAuB/tJ,GACpC,IAAI0Y,EAAKnvB,KAAKmvB,KACd,IAAKA,EAAG8vH,eACN,OAAOj/I,KAET,IAAI0+F,EAAM1+F,KAAK,GACf,OAAI0+F,EACKvvE,EAAGvjB,QAAQ64J,iBAAiB/lE,EAAKjoF,QAD1C,CAGF,EAEA7K,MAAO,SAAenH,EAAM3C,GAC1B,IAAIqtB,EAAKnvB,KAAKmvB,KACd,IAAKA,EAAG8vH,eACN,OAAOj/I,KAET,IAAI0kK,GAAoB,EACpB94J,EAAQujB,EAAGvjB,QACf,GAAIs2G,EAAYz9G,GAAO,CAErB,IAAI4yD,EAAQ5yD,EACZmH,EAAM+4J,YAAY3kK,KAAMq3D,EAAOqtG,GAC/B1kK,KAAK2wJ,cAAc,QACrB,MAAO,GAAItxI,EAAO5a,GAAO,CACvB,QAAc/B,IAAVZ,EAAqB,CAEvB,IAAI48F,EAAM1+F,KAAK,GACf,OAAI0+F,EACK9yF,EAAMg5J,sBAAsBlmE,EAAKj6F,QAGxC,CAEJ,CAEEmH,EAAM+4J,YAAY3kK,KAAMyE,EAAM3C,EAAO4iK,GACrC1kK,KAAK2wJ,cAAc,QAEvB,MAAO,QAAajuJ,IAAT+B,EAAoB,CAC7B,IAAI88I,EAAOvhJ,KAAK,GAChB,OAAIuhJ,EACK31I,EAAMi5J,YAAYtjB,QAGzB,CAEJ,CACA,OAAOvhJ,IACT,EAEA8kK,YAAa,SAAqB13J,GAChC,IAAI+hB,EAAKnvB,KAAKmvB,KACd,IAAKA,EAAG8vH,eACN,OAAOj/I,KAET,IAAI0kK,GAAoB,EACpB94J,EAAQujB,EAAGvjB,QACXw8F,EAAOpoG,KACX,QAAc0C,IAAV0K,EACF,IAAK,IAAIpJ,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACf4H,EAAMm5J,kBAAkBrmE,EAAKgmE,EAC/B,KACK,CACLt3J,EAAQA,EAAM9J,MAAM,OACpB,IAAK,IAAIsM,EAAK,EAAGA,EAAKw4F,EAAKpmG,OAAQ4N,IAAM,CACvC,IAAIsgJ,EAAQ9nD,EAAKx4F,GACjBhE,EAAMo5J,eAAe9U,EAAO9iJ,EAAOs3J,EACrC,CACF,CAGA,OAFA1kK,KAAK2wJ,cAAc,SAEZ3wJ,IACT,EAEA0tC,KAAM,WAEJ,OADA1tC,KAAKysG,IAAI,UAAW,WACbzsG,IACT,EAEAoE,KAAM,WAEJ,OADApE,KAAKysG,IAAI,UAAW,QACbzsG,IACT,EAEAilK,iBAAkB,WAChB,IAAI91I,EAAKnvB,KAAKmvB,KACd,IAAKA,EAAG8vH,eACN,OAAO,EAET,IAAI2O,EAAmBz+H,EAAGy+H,mBACtBlvD,EAAM1+F,KAAK,GACf,GAAI0+F,EAAK,CACP,IAAIgzB,EAAKhzB,EAAI7d,SACTqkF,EAAgBxmE,EAAImyD,OAAO,WAAW/uJ,MAC1C,IAAK8rJ,EACH,OAAOsX,EAET,IAAIjY,EAAWv7B,EAAGzyG,KAAK9e,OAAgBu+F,EAAIuuD,UAAX,KAChC,GAAIA,EACF,IAAK,IAAIjpJ,EAAI,EAAGA,EAAIipJ,EAAQjrJ,OAAQgC,IAAK,CACvC,IAAI7D,EAAS8sJ,EAAQjpJ,GACjBs1B,EAAUn5B,EAAO0wJ,OAAO,WAAW/uJ,MACvCojK,GAAgB5rI,CAClB,CAEF,OAAO4rI,CACT,CACF,EACAxgD,YAAa,WACX,IAAIv1F,EAAKnvB,KAAKmvB,KACd,IAAKA,EAAG8vH,eACN,OAAO,EAET,IAAIvgD,EAAM1+F,KAAK,GACX4tJ,EAAmBlvD,EAAIvvE,KAAKy+H,mBAChC,OAAIlvD,EACGkvD,EAG+B,IAA3BlvD,EAAIumE,mBAF4B,IAAhCvmE,EAAImyD,OAAO,WAAW/uJ,WAFjC,CAOF,EACAwwH,cAAe,WACb,IAAInjG,EAAKnvB,KAAKmvB,KACd,IAAKA,EAAG8vH,eACN,OAAO,EAET,IAAIvgD,EAAM1+F,KAAK,GACf,QAAO0+F,EAAI7d,SAASyxC,aACtB,GAEF,SAAS6yC,GAAczmE,EAAK0mE,GAC1B,IAAI1zC,EAAKhzB,EAAI7d,SACTosE,EAAUv7B,EAAGzyG,KAAK9e,OAASu+F,EAAIuuD,UAAY,KAC/C,GAAIA,EACF,IAAK,IAAIjpJ,EAAI,EAAGA,EAAIipJ,EAAQjrJ,OAAQgC,IAAK,CACvC,IAAI7D,EAAS8sJ,EAAQjpJ,GACrB,IAAKohK,EAASjlK,GACZ,OAAO,CAEX,CAEF,OAAO,CACT,CACA,SAASklK,GAA2BC,GAClC,IAAIC,EAAKD,EAAMC,GACXC,EAAgBF,EAAME,eAAiBF,EAAMC,GAC7CH,EAAWE,EAAMF,UAAYE,EAAMC,GACvC,OAAO,WACL,IAAIp2I,EAAKnvB,KAAKmvB,KACd,IAAKA,EAAG8vH,eACN,OAAO,EAET,IAAIvgD,EAAM1+F,KAAK,GACX4tJ,EAAmBz+H,EAAGy+H,mBAC1B,GAAIlvD,EAAK,CACP,IAAIgzB,EAAKhzB,EAAI7d,SACb,IAAK0kF,EAAG7mE,GACN,OAAO,EAET,GAAIA,EAAIO,SACN,OAAQ2uD,GAAoBuX,GAAczmE,EAAK0mE,GAE/C,IAAIt5J,EAAM4lH,EAAGhtH,OACTi8F,EAAM+wB,EAAGhsH,OACb,OAAO8/J,EAAc15J,MAAU8hJ,GAAoBuX,GAAcr5J,EAAK05J,MAAoB15J,IAAQ60F,GAAO6kE,EAAc7kE,MAAUitD,GAAoBuX,GAAcxkE,EAAK6kE,IAE5K,CACF,CACF,CACA,IAAIC,GAAkBpC,GAAmB,mBAAmB,SAAU3kE,GACpE,MAAuC,YAAhCA,EAAImyD,OAAO,WAAW/uJ,OAAuC,IAAhB48F,EAAIl2D,WAAkBk2D,EAAIO,UAA4B,IAAjBP,EAAIj2D,SAC/F,IACAg7H,GAAS1B,aAAeuB,GAA4B,eAAgB+B,GAA2B,CAC7FE,GAAIE,MAEN,IAAIC,GAAiBrC,GAAmB,kBAAkB,SAAU3kE,GAClE,MAAsC,QAA/BA,EAAImyD,OAAO,UAAU/uJ,OAAsD,YAAnC48F,EAAImyD,OAAO,cAAc/uJ,OAAuB2jK,GAAgB/mE,EACjH,IACIinE,GAAoBtC,GAAmB,qBAAqB,SAAUljK,GACxE,MAA6C,YAAtCA,EAAO0wJ,OAAO,cAAc/uJ,OAAuB2jK,GAAgBtlK,EAC5E,IACAsjK,GAASxrE,YAAcqrE,GAA4B,cAAe+B,GAA2B,CAC3FE,GAAIG,GACJN,SAAUO,GACVH,cAAeC,MAEjBhC,GAASmC,eAAiB,WACxB,IAAIlnE,EAAM1+F,KAAK,GACf,GAAI0+F,EACF,OAAQA,EAAIzG,aAEhB,EACA,IAAI4tE,GAAaxC,GAAmB,cAAc,SAAU3kE,GAC1D,MAA0C,YAAnCA,EAAImyD,OAAO,cAAc/uJ,OAAyD,IAAlC48F,EAAImyD,OAAO,WAAWC,SAAiB2U,GAAgB/mE,EAChH,IACIonE,GAAqBL,GACzBhC,GAAS1vI,QAAUuvI,GAA4B,UAAW+B,GAA2B,CACnFE,GAAIM,GACJL,cAAeM,MAEjBrC,GAASsC,OAAS,WAChB,IAAIrnE,EAAM1+F,KAAK,GACf,GAAI0+F,EACF,OAAQA,EAAI3qE,SAEhB,EACA0vI,GAASuC,gBAAkB1C,GAA4B,mBAAmB,WACxE,QAAKtjK,KAAKmvB,KAAK8vH,kBAGPj/I,KAAKi/E,WAAkD,WAArCj/E,KAAK6wJ,OAAO,eAAe/uJ,OAAsB9B,KAAK+hK,eAClF,IACA0B,GAASxwC,OAASwwC,GAASh3D,IAAMg3D,GAAS73J,MAC1C63J,GAASwC,YAAcxC,GAASe,cAChCf,GAASyC,aAAezC,GAAS0C,UAAY1C,GAASqB,YACtDrB,GAAS5S,OAAS4S,GAASS,YAE3B,IAAIkC,GAAW,CAAC,EAChB,SAASC,GAAqBzkJ,GAC5B,OAAO,WACL,IAAI3O,EAAOlQ,UACPihK,EAAc,GAGlB,GAAoB,IAAhB/wJ,EAAKjR,OAAc,CACrB,IAAIid,EAAOhM,EAAK,GACZwO,EAAUxO,EAAK,GACnBjT,KAAKyjE,GAAG7hD,EAAOyB,MAAOpE,EAAMwC,EAC9B,MAGK,GAAoB,IAAhBxO,EAAKjR,QAAgBggH,EAAK/uG,EAAK,IAAK,CAC3C,IAAIqzJ,EAAWrzJ,EAAK,GACpBjT,KAAKyjE,GAAG7hD,EAAOyB,MAAOijJ,EACxB,MAIK,GAAoB,IAAhBrzJ,EAAKjR,QAAgC,IAAhBiR,EAAKjR,QAAgB4zD,EAAM3iD,EAAK,IAAK,CAEjE,IADA,IAAIszJ,EAA6B,IAAhBtzJ,EAAKjR,OAAeiR,EAAK,GAAK,KACtCjP,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GACXwiK,GAAQ5kJ,EAAO6kJ,WAAa/nE,EAAI7d,SAASj/D,EAAO6kJ,WAChD7jB,EAAUlkD,EAAI7d,SAASj/D,EAAO4zD,QAAU5zD,EAAO9f,MACnD,GAAI8f,EAAO8kJ,aAAc,CACvB,IAAIA,EAAe9kJ,EAAO8kJ,aAAahoE,GACvC,QAAqBh8F,IAAjBgkK,IACFF,EAAOE,GACFA,GACH,OAAO1mK,IAGb,CAEIwmK,IACF9nE,EAAI7d,SAASj/D,EAAO4zD,OAAS5zD,EAAO9f,MAChC8gJ,GACFohB,EAAY//J,KAAKy6F,GAGvB,CACA,IAAIioE,EAAc3mK,KAAKm2H,MAAM6tC,GAC7B2C,EAAY5lB,cACZ4lB,EAAYl9D,KAAK7nF,EAAOyB,OACpBkjJ,GACFI,EAAYl9D,KAAK88D,EAErB,CACA,OAAOvmK,IACT,CACF,CACA,SAAS4mK,GAAgBhlJ,GACvBwkJ,GAASxkJ,EAAO4zD,OAAS,WACvB,IAAIkpB,EAAM1+F,KAAK,GACf,GAAI0+F,EAAK,CACP,GAAI98E,EAAOilJ,cAAe,CACxB,IAAI73J,EAAM4S,EAAOilJ,cAAcnoE,GAC/B,QAAYh8F,IAARsM,EACF,OAAOA,CAEX,CACA,OAAO0vF,EAAI7d,SAASj/D,EAAO4zD,MAC7B,CACF,EACA4wF,GAASxkJ,EAAO6hD,IAAM4iG,GAAqB,CACzChjJ,MAAOzB,EAAO6hD,GACd+R,MAAO5zD,EAAO4zD,MACdixF,UAAW7kJ,EAAO6kJ,UAClBC,aAAc9kJ,EAAO8kJ,aACrB5kK,OAAO,IAETskK,GAASxkJ,EAAOo6D,KAAOqqF,GAAqB,CAC1ChjJ,MAAOzB,EAAOo6D,IACdxG,MAAO5zD,EAAO4zD,MACdixF,UAAW7kJ,EAAO6kJ,UAClBC,aAAc9kJ,EAAO8kJ,aACrB5kK,OAAO,GAEX,CACA8kK,GAAgB,CACdpxF,MAAO,SACPqxF,cAAe,SAAuBnoE,GACpC,QAAOA,EAAIvvE,KAAK23I,iBAAoBpkK,CACtC,EACA+gE,GAAI,OACJuY,IAAK,WAEP4qF,GAAgB,CACdpxF,MAAO,YACPqxF,cAAe,SAAuBnoE,GACpC,OAAOA,EAAIvvE,KAAK43I,kBAAmBroE,EAAI0zB,iBAAqB1vH,CAC9D,EACA+gE,GAAI,UACJuY,IAAK,cAEP4qF,GAAgB,CACdpxF,MAAO,WACPixF,UAAW,aACXC,aAAc,SAAsBhoE,GAClC,OAAOA,EAAIvvE,KAAK63I,wBAA4BtkK,CAC9C,EACA+gE,GAAI,SACJuY,IAAK,aAEP4qF,GAAgB,CACdpxF,MAAO,aACPqxF,cAAe,SAAuBnoE,GACpC,OAAOA,EAAIvvE,KAAK63I,wBAA4BtkK,CAC9C,EACA+gE,GAAI,YACJuY,IAAK,gBAEPoqF,GAASa,SAAWb,GAASjxD,SAC7BixD,GAASxhE,QAAU,WACjB,IAAIlG,EAAM1+F,KAAK,GACf,GAAI0+F,EACF,OAAOA,EAAI7d,SAAS+jB,OAExB,EACAgiE,GAAgB,CACdpxF,MAAO,SACP/R,GAAI,WACJuY,IAAK,eAEP4qF,GAAgB,CACdpxF,MAAO,WACP/R,GAAI,SACJuY,IAAK,aAEPoqF,GAASc,SAAW,WAClB,IAAIxoE,EAAM1+F,KAAK,GACf,GAAI0+F,EACF,OAAQA,EAAI7d,SAASvnB,MAEzB,EAEA,IAAI6tG,GAAW,CAAC,EAKZC,GAAqB,SAA4BxlJ,GACnD,OAAO,SAA0Bg+D,GAG/B,IAFA,IAAIwoB,EAAOpoG,KACP80E,EAAM,GACD9wE,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACf,GAAK06F,EAAIO,SAAT,CAKA,IAFA,IAAIooE,GAAe,EACflnF,EAAQue,EAAI0W,iBACPnqG,EAAI,EAAGA,EAAIk1E,EAAMn+E,OAAQiJ,IAAK,CACrC,IAAI01E,EAAOR,EAAMl1E,GACba,EAAM60E,EAAKj8E,SACXi8F,EAAMhgB,EAAKj7E,SACf,GAAIkc,EAAO0lJ,iBAAmB3mE,IAAQjC,GAAO5yF,IAAQ4yF,GAAO98E,EAAO2lJ,iBAAmBz7J,IAAQ4yF,GAAOiC,IAAQjC,EAAK,CAChH2oE,GAAe,EACf,KACF,CACF,CACKA,GACHvyF,EAAI7wE,KAAKy6F,EAbX,CAeF,CACA,OAAO1+F,KAAKm2H,MAAMrhD,GAAK,GAAM9kD,OAAO4vD,EACtC,CACF,EACI4nF,GAAkB,SAAyB5lJ,GAC7C,OAAO,SAAUg+D,GAGf,IAFA,IAAIwoB,EAAOpoG,KACPynK,EAAQ,GACHzjK,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACf,GAAK06F,EAAIO,SAIT,IADA,IAAI9e,EAAQue,EAAI0W,iBACPnqG,EAAI,EAAGA,EAAIk1E,EAAMn+E,OAAQiJ,IAAK,CACrC,IAAI01E,EAAOR,EAAMl1E,GACba,EAAM60E,EAAKj8E,SACXi8F,EAAMhgB,EAAKj7E,SACXkc,EAAOkrH,UAAYhhI,IAAQ4yF,GAC7B+oE,EAAMxjK,KAAK08E,GACX8mF,EAAMxjK,KAAK08F,IACF/+E,EAAOirH,UAAYlsC,IAAQjC,IACpC+oE,EAAMxjK,KAAK08E,GACX8mF,EAAMxjK,KAAK6H,GAEf,CACF,CACA,OAAO9L,KAAKm2H,MAAMsxC,GAAO,GAAMz3I,OAAO4vD,EACxC,CACF,EACI8nF,GAAmB,SAA0B9lJ,GAC/C,OAAO,SAAUg+D,GAIf,IAHA,IAAIwoB,EAAOpoG,KACP2nK,EAAQ,GACRC,EAAW,CAAC,IACP,CACP,IAAItgK,EAAOsa,EAAOkrH,SAAW1kC,EAAKwmC,WAAaxmC,EAAK8iD,WACpD,GAAoB,IAAhB5jJ,EAAKtF,OACP,MAIF,IADA,IAAI6lK,GAAU,EACL7jK,EAAI,EAAGA,EAAIsD,EAAKtF,OAAQgC,IAAK,CACpC,IAAI+b,EAAIzY,EAAKtD,GACT8jK,EAAM/nJ,EAAEvW,KACPo+J,EAASE,KACZF,EAASE,IAAO,EAChBH,EAAM1jK,KAAK8b,GACX8nJ,GAAU,EAEd,CACA,IAAKA,EACH,MAGFz/D,EAAO9gG,CACT,CACA,OAAOtH,KAAKm2H,MAAMwxC,GAAO,GAAM33I,OAAO4vD,EACxC,CACF,EAyGA,SAASmoF,GAAqBnmJ,GAC5B,OAAO,SAAoBg+D,GAEzB,IADA,IAAIW,EAAU,GACLv8E,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GACX8H,EAAM4yF,EAAI7d,SAASj/D,EAAOiV,MAC1B/qB,GACFy0E,EAAQt8E,KAAK6H,EAEjB,CACA,OAAO9L,KAAKm2H,MAAM51C,GAAS,GAAMvwD,OAAO4vD,EAC1C,CACF,CAOA,SAASooF,GAAwBpmJ,GAC/B,OAAO,SAAuBqmJ,GAC5B,IAAIruD,EAAW,GACXzqF,EAAKnvB,KAAK6gF,SAAS1xD,GACnB0uB,EAAIj8B,GAAU,CAAC,EAGfvC,EAAO4oJ,KACTA,EAAa94I,EAAGhK,EAAE8iJ,IAEpB,IAAK,IAAInnK,EAAI,EAAGA,EAAImnK,EAAWjmK,OAAQlB,IAErC,IADA,IAAIq/E,EAAQ8nF,EAAWnnK,GAAG+/E,SAASV,MAC1Bn8E,EAAI,EAAGA,EAAIm8E,EAAMn+E,OAAQgC,IAAK,CACrC,IAAI28E,EAAOR,EAAMn8E,GACbkkK,EAAWvnF,EAAKE,SAAS5hE,KACzBkpJ,EAAcnoK,KAAKq4H,iBAAiB6vC,EAASxjK,SAAWujK,EAAW5vC,iBAAiB6vC,EAASxiK,QAC7F0iK,EAAcH,EAAW5vC,iBAAiB6vC,EAASxjK,SAAW1E,KAAKq4H,iBAAiB6vC,EAASxiK,QAC7F2iK,EAA2BF,GAAeC,EAC9C,GAAKC,EAAL,CAGA,GAAIxqH,EAAEyqH,WAAazqH,EAAE0qH,UAAW,CAC9B,GAAI1qH,EAAEyqH,YAAcH,EAClB,SAEF,GAAItqH,EAAE0qH,YAAcH,EAClB,QAEJ,CACAxuD,EAAS31G,KAAK08E,EATd,CAUF,CAEF,OAAO3gF,KAAKm2H,MAAMvc,GAAU,EAC9B,CACF,CAoCA,SAAS4uD,GAA4B5mJ,GACnC,IAAI43E,EAAW,CACbivE,YAAY,GAGd,OADA7mJ,EAAS8hG,GAAO,CAAC,EAAGlqB,EAAU53E,GACvB,SAA2Bg+D,GAOhC,IALA,IAAIg6B,EAAW,GACXz5B,EAAQngF,KAAKmgF,QACbtiC,EAAIj8B,EAGC5d,EAAI,EAAGA,EAAIm8E,EAAMn+E,OAAQgC,IAShC,IARA,IAAI0kK,EAAQvoF,EAAMn8E,GACd2kK,EAAUD,EAAM7nF,SAChB+nF,EAAOD,EAAQjkK,OACfmkK,EAASD,EAAK/nF,SAAS5hE,KAAKzV,GAC5Bs/J,EAASH,EAAQ1pJ,KAAKvZ,OACtBqjK,EAAYH,EAAK/nF,SAASV,MAGrBl1E,EAAI,EAAGA,EAAI89J,EAAU/mK,OAAQiJ,IAAK,CACzC,IAAI+9J,EAAQD,EAAU99J,GAClBg+J,EAAYD,EAAMnoF,SAAS5hE,KAC3BiqJ,EAASD,EAAUvjK,OACnByjK,EAASF,EAAUvkK,OACnB+jK,EAAaS,IAAWJ,GAAUK,IAAWN,EAC7CO,EAAcP,IAAWK,GAAUJ,IAAWK,GAC9CtrH,EAAE4qH,YAAcA,IAAe5qH,EAAE4qH,aAAeA,GAAcW,KAChExvD,EAAS31G,KAAK+kK,EAElB,CAEF,OAAOhpK,KAAKm2H,MAAMvc,GAAU,GAAM5pF,OAAO4vD,EAC3C,CACF,CApOAunF,GAASkC,oBAAsB,WAC7B,IAAK,IAAIrlK,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAC/BhE,KAAKgE,GAAG68E,SAASwxC,eAAiB,IAEtC,EACA3O,GAAOyjD,GAAU,CAEf/0D,MAAOg1D,GAAmB,CACxBE,iBAAiB,IAGnBpxB,OAAQkxB,GAAmB,CACzBG,iBAAiB,IAInB34B,SAAUr5G,GAAMiyI,GAAgB,CAC9B16B,UAAU,IACR,YAEJw8B,WAAY5B,GAAiB,CAC3B56B,UAAU,IAIZoe,SAAU31H,GAAMiyI,GAAgB,CAC9B36B,UAAU,IACR,YAEJ08B,aAAc7B,GAAiB,CAC7B76B,UAAU,MAOdnpB,GAAOyjD,GAAU,CACftxC,aAActgG,IAAM,SAAUqqD,GAG5B,IAFA,IAAIg6B,EAAW,GACX96B,EAAQ9+E,KAAK8+E,QACR96E,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAMhC,IAJA,IAAIo3E,EAAO0D,EAAM96E,GACboxG,EAAiBh6B,EAAKg6B,iBAGjBnqG,EAAI,EAAGA,EAAImqG,EAAepzG,OAAQiJ,IAAK,CAC9C,IAAI01E,EAAOy0B,EAAenqG,GACtBa,EAAM60E,EAAKj8E,SACXi8F,EAAMhgB,EAAKj7E,SACX8jK,EAAYpuF,IAAStvE,EAAM60F,EAAM70F,EAGjC09J,EAAUxnK,OAAS,GACrB43G,EAAS31G,KAAKulK,EAAU,IAI1B5vD,EAAS31G,KAAK08E,EAAK,GACrB,CAEF,OAAO3gF,KAAKm2H,MAAMvc,GAAU,GAAM5pF,OAAO4vD,EAC3C,GAAG,gBACH6pF,mBAAoB,SAA4B7pF,GAC9C,OAAO5/E,KAAK61H,eAAet1H,IAAIP,MAAMgwB,OAAO4vD,EAC9C,EACAivD,iBAAkB,SAA0BjvD,GAC1C,OAAO5/E,KAAK61H,aAAaj2C,EAC3B,IAIFunF,GAASuC,cAAgBvC,GAAStxC,aAClCsxC,GAASwC,oBAAsBxC,GAASsC,mBACxCtC,GAASyC,kBAAoBzC,GAASt4B,iBAKtCnrB,GAAOyjD,GAAU,CACfziK,OAAQ6wB,IAAM,SAAoBqqD,GAChC,IACI9zE,EADA4yF,EAAM1+F,KAAK,GAKf,OAHI0+F,IACF5yF,EAAM4yF,EAAI7d,SAASn8E,QAAUg6F,EAAIvvE,KAAKixD,cAEjCt0E,GAAO8zE,EAAW9zE,EAAIkkB,OAAO4vD,GAAY9zE,CAClD,GAAG,UACHpG,OAAQ6vB,IAAM,SAAoBqqD,GAChC,IACI+gB,EADAjC,EAAM1+F,KAAK,GAKf,OAHI0+F,IACFiC,EAAMjC,EAAI7d,SAASn7E,QAAUg5F,EAAIvvE,KAAKixD,cAEjCugB,GAAO/gB,EAAW+gB,EAAI3wE,OAAO4vD,GAAY+gB,CAClD,GAAG,UACHpgB,QAASwnF,GAAqB,CAC5BlxI,KAAM,WAER2pD,QAASunF,GAAqB,CAC5BlxI,KAAM,aAgBV6sF,GAAOyjD,GAAU,CACf3vD,UAAWjiF,GAAMyyI,KAA2B,aAC5CzyC,QAAShgG,GAAMyyI,GAAwB,CACrCM,WAAW,IACT,aAqCN5kD,GAAOyjD,GAAU,CACf/xD,eAAgB7/E,IAAM,SAAUqqD,GAG9B,IAFA,IAAIi/E,EAAU,GACVz2D,EAAOpoG,KACFgE,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAIo3E,EAAOgtB,EAAKpkG,GAChB,GAAKo3E,EAAK6jB,SAIV,IADA,IAAI9e,EAAQ/E,EAAKyF,SAASV,MACjBl1E,EAAI,EAAGA,EAAIk1E,EAAMn+E,OAAQiJ,IAAK,CACrC,IAAI01E,EAAOR,EAAMl1E,GACjB4zJ,EAAQ56J,KAAK08E,EACf,CACF,CACA,OAAO3gF,KAAKm2H,MAAM0oC,GAAS,GAAM7uI,OAAO4vD,EAC1C,GAAG,kBACHw4B,eAAgB7iF,IAAM,SAAUqqD,GAG9B,IAFA,IAAIi/E,EAAU,GACVz2D,EAAOpoG,KACFgE,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI28E,EAAOynB,EAAKpkG,GACX28E,EAAK44D,WAGVslB,EAAQ56J,KAAK08E,EAAKj8E,SAAS,IAC3Bm6J,EAAQ56J,KAAK08E,EAAKj7E,SAAS,IAC7B,CACA,OAAO1F,KAAKm2H,MAAM0oC,GAAS,GAAM7uI,OAAO4vD,EAC1C,GAAG,kBACHiqF,cAAet0I,GAAMizI,KAA+B,iBACpDsB,gBAAiBv0I,GAAMizI,GAA4B,CACjDC,YAAY,IACV,qBA0CN/kD,GAAOyjD,GAAU,CACf/uG,WAAY,SAAoBlgC,GAC9B,IAAI9xB,EAAOpG,KACPmvB,EAAK/oB,EAAK+oB,KACVq/D,EAAUr/D,EAAGixD,aACb2pF,EAAoB,MAAR7xI,EAAe9xB,EAAK04E,QAAU5mD,EAAK4mD,QAC/C1mB,EAAa,GACL,MAARlgC,GAAgB6xI,EAAUh7B,UAE5Bg7B,EAAY7xI,EAAKqoD,WAGnB,IAAIypF,EAAmB,SAA0B5uF,EAAMjjB,GACrDq2B,EAAQwvB,MAAM5iC,GACd2uF,EAAUxK,QAAQnkF,GAClBjjB,EAAU6lD,MAAM5iC,EAClB,EACA,GAAI2uF,EAAUh7B,QACZ,OAAO3oI,EAAK+vH,QAEd,IAAI9pG,EAAQ,WAEV,IAAI49I,EAAO96I,EAAGixD,aACdhoB,EAAWn0D,KAAKgmK,GAChB,IAAI/xI,EAAO6xI,EAAU,GACrBC,EAAiB9xI,EAAM+xI,GACvB7jK,EAAK+sH,IAAI,CACPE,UAAU,EACVjhB,MAAOl6E,EACPo7F,MAAO,SAAetrG,GACpB,OAAOgiJ,EAAiBhiJ,EAAGiiJ,EAC7B,IAEFA,EAAKr/J,SAAQ,SAAUwwE,GACrBA,EAAKg6B,iBAAiBxqG,SAAQ,SAAU3E,GAElCG,EAAK/B,IAAI4B,IAAMgkK,EAAK5lK,IAAI4B,EAAEvB,WAAaulK,EAAK5lK,IAAI4B,EAAEP,WAEpDukK,EAAKjsD,MAAM/3G,EAEf,GACF,GACF,EACA,GACEomB,UACO09I,EAAU/nK,OAAS,GAC5B,OAAOo2D,CACT,EACAD,UAAW,WACT,IAAIumC,EAAM1+F,KAAK,GACf,OAAO0+F,EAAIvvE,KAAKgvI,kBAAkB/lG,WAAWsmC,GAAK,EACpD,IAEFyoE,GAAS+C,aAAe/C,GAAS/uG,WAGjC,IAAIhlD,GAAa,SAAoB+b,EAAIyqF,GACvC,IAAIx1C,EAASrhE,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GACxEk8E,EAAUl8E,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GAC7E,QAAWL,IAAPysB,EAAJ,CAIA,IAAIzF,EAAM,IAAIynG,GACVg5C,GAAkB,EACtB,GAAKvwD,GAEE,GAAIA,EAAS53G,OAAS,GAAKkgH,EAAYtI,EAAS,MAAQC,EAAQD,EAAS,IAAK,CACnFuwD,GAAkB,EAKlB,IAFA,IAAI/hE,EAAO,GACPgiE,EAAU,IAAI54C,GACTxtH,EAAI,EAAGwK,EAAIorG,EAAS53G,OAAQgC,EAAIwK,EAAGxK,IAAK,CAC/C,IAAI+5G,EAAOnE,EAAS51G,GACH,MAAb+5G,EAAK9+F,OACP8+F,EAAK9+F,KAAO,CAAC,GAEf,IAAIorJ,EAAQtsD,EAAK9+F,KAGjB,GAAgB,MAAZorJ,EAAM7gK,GACR6gK,EAAM7gK,GAAKwxD,UACN,GAAI7rC,EAAGkpG,iBAAiBgyC,EAAM7gK,KAAO4gK,EAAQ/lK,IAAIgmK,EAAM7gK,IAC5D,SAGF,IAAIk1F,EAAM,IAAI+yB,GAAQtiG,EAAI4uF,GAAM,GAChC3V,EAAKnkG,KAAKy6F,GACV0rE,EAAQ7pK,IAAI8pK,EAAM7gK,GACpB,CACAowG,EAAWxR,CACb,OA1BEwR,EAAW,GA2Bb55G,KAAKgC,OAAS,EACd,IAAK,IAAI4N,EAAK,EAAGiqD,EAAK+/C,EAAS53G,OAAQ4N,EAAKiqD,EAAIjqD,IAAM,CACpD,IAAI06J,EAAY1wD,EAAShqG,GAAI,GAC7B,GAAiB,MAAb06J,EAAJ,CAGA,IAAI9gK,EAAK8gK,EAAUzpF,SAAS5hE,KAAKzV,GAC5B46D,GAAW16C,EAAIrlB,IAAImF,KAClB46D,GACF16C,EAAIlX,IAAIhJ,EAAI,CACVvH,MAAOjC,KAAKgC,OACZ08F,IAAK4rE,IAGTtqK,KAAKA,KAAKgC,QAAUsoK,EACpBtqK,KAAKgC,SAVP,CAYF,CACAhC,KAAK6gF,SAAW,CACdunB,KAAMpoG,KACNmvB,GAAIA,EACJ,OAAIzF,GAIF,OAHoB,MAAhB1pB,KAAKuqK,SACPvqK,KAAKwqK,aAEAxqK,KAAKuqK,OACd,EACA,OAAI7gJ,CAAIlQ,GACNxZ,KAAKuqK,QAAU/wJ,CACjB,EACAgxJ,WAAY,WAGV,IAFA,IAAIhxJ,EAAIxZ,KAAKuqK,QAAU,IAAIp5C,GACvB/oB,EAAOpoG,KAAKooG,KACP+rB,EAAM,EAAGA,EAAM/rB,EAAKpmG,OAAQmyH,IAAO,CAC1C,IAAIotB,EAAOn5C,EAAK+rB,GAChB36G,EAAEhH,IAAI+uI,EAAK/3I,KAAM,CACfvH,MAAOkyH,EACPz1B,IAAK6iD,GAET,CACF,GAEEn9E,IACFpkE,KAAK6gF,SAASn3D,IAAMA,GAIlBygJ,IAAoBlrF,GACtBj/E,KAAKw8B,SA/EP,MAFE3lB,GAAM,iDAmFV,EAOI4zJ,GAAWh5C,GAAQlqH,UAAY6L,GAAW7L,UAAYvE,OAAOgE,OAAOH,MAAMU,WAC9EkjK,GAAS1oD,eAAiB,WACxB,MAAO,YACT,EACA0oD,GAASt0C,MAAQ,SAAU/tB,EAAMhkC,GAC/B,OAAO,IAAIhxD,GAAWpT,KAAKmvB,KAAMi5E,EAAMhkC,EACzC,EACAqmG,GAAS1L,UAAY,WACnB,OAAO/+J,KAAKm2H,MAAMn2H,KACpB,EACAyqK,GAASt7I,GAAK,WACZ,OAAOnvB,KAAK6gF,SAAS1xD,EACvB,EACAs7I,GAASlzG,SAAW,WAClB,OAAOv3D,KAAK6gF,SAAS1xD,GAAGooC,UAC1B,EACAkzG,GAAS5wD,QAAU,WACjB,OAAO75G,KAAK,EACd,EACAyqK,GAASrqF,WAAa,WACpB,OAAIA,EAAWpgF,MACNA,KAGA,IAAIoT,GAAWpT,KAAK6gF,SAAS1xD,GAAI,CAACnvB,MAE7C,EACAyqK,GAASrmG,OAAS,WAChB,OAAO,IAAIhxD,GAAWpT,KAAK6gF,SAAS1xD,GAAInvB,MAAM,EAChD,EACAyqK,GAASpyC,iBAAmB,SAAU7uH,GAGpC,OAFAA,EAAK,GAAKA,EAEHxJ,KAAK6gF,SAASn3D,IAAIrlB,IAAImF,EAC/B,EACAihK,GAAStuD,eAAiB,SAAU3yG,GAClCA,EAAK,GAAKA,EAEV,IAAI2lB,EAAKnvB,KAAK6gF,SAAS1xD,GACnBlH,EAAQjoB,KAAK6gF,SAASn3D,IAAIxmB,IAAIsG,GAClC,OAAOye,EAAQA,EAAMy2E,IAAM,IAAItrF,GAAW+b,EAC5C,EAEAs7I,GAASxsD,IAAMwsD,GAAStuD,eACxBsuD,GAASzJ,UAAY,WACnB,IAAI7xI,EAAKnvB,KAAK6gF,SAAS1xD,GACnBi5E,EAAOj5E,EAAG0xD,SAAS+4B,SACnBpwG,EAAKxJ,KAAK,GAAG6gF,SAAS5hE,KAAKzV,GAC/B,OAAO4+F,EAAKvnB,SAASn3D,IAAIxmB,IAAIsG,GAAIvH,KACnC,EACAwoK,GAASpzJ,QAAU,SAAUqnF,GAC3B,IAAIl1F,EAAKk1F,EAAI,GAAG7d,SAAS5hE,KAAKzV,GAC9B,OAAOxJ,KAAK6gF,SAASn3D,IAAIxmB,IAAIsG,GAAIvH,KACnC,EACAwoK,GAASt/B,UAAY,SAAU3hI,GAG7B,OAFAA,EAAK,GAAKA,EAEHxJ,KAAK6gF,SAASn3D,IAAIxmB,IAAIsG,GAAIvH,KACnC,EACAwoK,GAAS1sD,KAAO,SAAUv+F,GACxB,IAAIk/E,EAAM1+F,KAAK65G,UACX1qF,EAAKnvB,KAAKmvB,KACd,GAAW,MAAPuvE,GAAel/E,EACjB,OAAOxf,KAGT,GAAW,MAAP0+F,EAAJ,CAIA,IAAI7gD,EAAI6gD,EAAI7d,SACZ,GAAIqhC,EAAY1iG,GAAM,CAIpB,GADA2P,EAAGglF,aACC30F,EAAIP,KAAM,CACZy/E,EAAIz/E,KAAKO,EAAIP,MACb,IAAIyrJ,EAAS7sH,EAAE5+B,KACf,GAAIy/E,EAAI66C,SAAU,CAEhB,IAAItnH,GAAO,EACPyoI,EAAO,CAAC,EACR5uJ,EAAM0T,EAAIP,KAAKva,OACfi8F,EAAMnhF,EAAIP,KAAKvZ,OACR,MAAPoG,GAAeA,GAAO4+J,EAAOhmK,SAC/Bg2J,EAAKh2J,OAAS,GAAKoH,EACnBmmB,GAAO,GAEE,MAAP0uE,GAAeA,GAAO+pE,EAAOhlK,SAC/Bg1J,EAAKh1J,OAAS,GAAKi7F,EACnB1uE,GAAO,GAELA,IACFysE,EAAMA,EAAIzsE,KAAKyoI,GAEnB,KAAO,CAEL,IAAIiQ,EAAqB,WAAYnrJ,EAAIP,KACrC9e,EAASqf,EAAIP,KAAK9e,QAClBwqK,GAAgC,MAAVxqK,GAAmC,MAAjBuqK,EAAOvqK,QAAmBA,GAAUuqK,EAAOvqK,cACtEuC,IAAXvC,IAEFA,EAAS,MAEG,MAAVA,IACFA,EAAS,GAAKA,GAGhBu+F,EAAMA,EAAIzsE,KAAK,CACb9xB,OAAQA,IAGd,CACF,CACIqf,EAAIsS,UACN4sE,EAAI5sE,SAAStS,EAAIsS,UAKnB,IAAI84I,EAAc,SAAqB//J,EAAGggK,EAAYC,GACpD,IAAIC,EAAQvrJ,EAAI3U,GACH,MAATkgK,GAAiBA,IAAUltH,EAAEhzC,KAC3BkgK,EACFrsE,EAAImsE,KAEJnsE,EAAIosE,KAGV,EAWA,OAVAF,EAAY,UAAW,SAAU,WACjCA,EAAY,WAAY,SAAU,YAClCA,EAAY,aAAc,YAAa,eACvCA,EAAY,SAAU,OAAQ,UAC9BA,EAAY,YAAa,UAAW,aACpCA,EAAY,WAAY,SAAU,YACf,MAAfprJ,EAAI45F,SACN1a,EAAI0a,QAAQ55F,EAAI45F,SAElBjqF,EAAGilF,WACIp0G,IACT,CAAO,QAAY0C,IAAR8c,EAAmB,CAG5B,IAAIu+F,EAAO,CACT9+F,KAAM0rE,GAAK9sC,EAAE5+B,MACb6S,SAAU64D,GAAK9sC,EAAE/rB,UACjBopB,MAAO2C,EAAE3C,MACT+jC,QAASphC,EAAEohC,QACXkzC,SAAUt0E,EAAEs0E,SACZ1iB,WAAY5xD,EAAE4xD,WACdrM,OAAQvlD,EAAEulD,OACV5F,UAAW3/C,EAAE2/C,UACb40B,SAAUv0E,EAAEu0E,SACZhZ,QAAS,MAEX2E,EAAK3E,QAAU,GACf,IAAIp1G,EAAI,EAIR,OAHA65C,EAAEu7D,QAAQxuG,SAAQ,SAAUmoH,GAC1B,OAAOhV,EAAK3E,SAAmB,IAARp1G,IAAY+uH,EAAM,IAAMA,CACjD,IACOhV,CACT,CA9FA,CA+FF,EACA0sD,GAASO,MAAQ,WAEf,IADA,IAAIA,EAAQ,GACHhnK,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GACX+5G,EAAOrf,EAAIqf,OACfitD,EAAM/mK,KAAK85G,EACb,CACA,OAAOitD,CACT,EACAP,GAASn2I,MAAQ,WAGf,IAFA,IAAInF,EAAKnvB,KAAKmvB,KACV87I,EAAU,GACLjnK,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAI06F,EAAM1+F,KAAKgE,GACX+5G,EAAOrf,EAAIqf,OACXzpF,EAAQ,IAAIm9F,GAAQtiG,EAAI4uF,GAAM,GAElCktD,EAAQhnK,KAAKqwB,EACf,CACA,OAAO,IAAIlhB,GAAW+b,EAAI87I,EAC5B,EACAR,GAAS9/E,KAAO8/E,GAASn2I,MACzBm2I,GAASjuI,QAAU,WAYjB,IAXA,IAUIo9E,EAkBA51G,EA5BA4/J,IAAiB7gK,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GAChFmoK,IAAYnoK,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GAC3EqD,EAAOpG,KACPmvB,EAAK/oB,EAAK+oB,KACVg8I,EAAOh8I,EAAG0xD,SAIV/B,EAAQ,GACRqB,EAAQ,GAEHm9C,EAAM,EAAG9uH,EAAIpI,EAAKpE,OAAQs7H,EAAM9uH,EAAG8uH,IAAO,CACjD,IAAI5+B,EAAMt4F,EAAKk3H,GACX4tC,IAAcxsE,EAAIzf,YAMlByf,EAAIO,SAENngB,EAAM76E,KAAKy6F,GAGXve,EAAMl8E,KAAKy6F,GAEf,CACAkb,EAAW96B,EAAM79E,OAAOk/E,GAExB,IAAIirF,EAAqB,WACvBxxD,EAAS3gF,OAAOj1B,EAAG,GACnBA,GACF,EAGA,IAAKA,EAAI,EAAGA,EAAI41G,EAAS53G,OAAQgC,IAAK,CACpC,IAAIksJ,EAAQt2C,EAAS51G,GACjB68E,EAAWqvE,EAAMrvE,SACjBwqF,EAASxqF,EAAS5hE,KAMtB,GAHAixI,EAAMmZ,sBAGD6B,GAAcrqF,EAAS5B,QAAgB,QAAkBv8E,IAAd2oK,EAAO7hK,GACrD6hK,EAAO7hK,GAAKwxD,UACP,GAAImnD,EAASkpD,EAAO7hK,IACzB6hK,EAAO7hK,GAAK,GAAK6hK,EAAO7hK,OACnB,IAAI84G,EAAY+oD,EAAO7hK,MAAQ6V,EAAOgsJ,EAAO7hK,IAAK,CACvDqN,GAAM,kDAAoDw0J,EAAO7hK,GAAK,KAGtE4hK,IACA,QACF,CAAO,GAAIj8I,EAAGkpG,iBAAiBgzC,EAAO7hK,IAAK,CACzCqN,GAAM,0CAA4Cw0J,EAAO7hK,GAAK,KAG9D4hK,IACA,QACF,OACA,IAAI5hK,EAAK6hK,EAAO7hK,GAEhB,GAAI0mJ,EAAMjxD,SAAU,CAElB,IAAI5wF,EAAMwyE,EAAS/uD,SAIN,MAATzjB,EAAIyR,IACNzR,EAAIyR,EAAI,GAEG,MAATzR,EAAIswB,IACNtwB,EAAIswB,EAAI,EAEZ,CACA,GAAIuxH,EAAM3W,SAAU,CAOlB,IAJA,IAAI54D,EAAOuvE,EACP33E,EAAS,CAAC,SAAU,UACpB+yF,EAAe/yF,EAAOv2E,OACtBupK,GAAoB,EACftgK,EAAI,EAAGA,EAAIqgK,EAAcrgK,IAAK,CACrC,IAAIuqE,EAAQ+C,EAAOttE,GACf+D,EAAMq8J,EAAO71F,GACb2sC,EAASnzG,KACXA,EAAMq8J,EAAO71F,GAAS,GAAK61F,EAAO71F,IAGzB,MAAPxmE,GAAuB,KAARA,GAEjB6H,GAAM,wBAA0BrN,EAAK,sBAAwBgsE,GAC7D+1F,GAAoB,GACVp8I,EAAGkpG,iBAAiBrpH,KAE9B6H,GAAM,wBAA0BrN,EAAK,sBAAwBgsE,EAAQ,KAAOxmE,EAAM,KAClFu8J,GAAoB,EAExB,CACA,GAAIA,EAAmB,CACrBH,IACA,QACF,CAEA,IAAIt/J,EAAMqjB,EAAGgtF,eAAekvD,EAAO3mK,QAC/Bi8F,EAAMxxE,EAAGgtF,eAAekvD,EAAO3lK,QAG/BoG,EAAIkrG,KAAKrW,GACX70F,EAAI+0E,SAASV,MAAMl8E,KAAK08E,IAExB70E,EAAI+0E,SAASV,MAAMl8E,KAAK08E,GACxBggB,EAAI9f,SAASV,MAAMl8E,KAAK08E,IAE1BA,EAAKE,SAASn8E,OAASoH,EACvB60E,EAAKE,SAASn7E,OAASi7F,CACzB,CAGA9f,EAASn3D,IAAM,IAAIynG,GACnBtwC,EAASn3D,IAAIlX,IAAIhJ,EAAI,CACnBk1F,IAAKwxD,EACLjuJ,MAAO,IAET4+E,EAAS5B,SAAU,EACfisF,GACF/7I,EAAG+7I,UAAUhb,EAEjB,CAGA,IAAK,IAAI1yB,EAAM,EAAGA,EAAM1+C,EAAM98E,OAAQw7H,IAAO,CAE3C,IAAIpiD,EAAO0D,EAAM0+C,GACbguC,EAASpwF,EAAKyF,SAAS5hE,KACvBkjG,EAASqpD,EAAOrrK,UAElBqrK,EAAOrrK,OAAS,GAAKqrK,EAAOrrK,QAE9B,IAAIsrK,EAAWD,EAAOrrK,OAClBurK,EAA8B,MAAZD,EACtB,GAAIC,GAAmBtwF,EAAKyF,SAAS1gF,OAAQ,CAC3C,IAAIA,EAASi7E,EAAKyF,SAAS1gF,OAASgvB,EAAGixD,aAAa49B,MAAM5iC,EAAKyF,SAAS1gF,QAAUgvB,EAAGgtF,eAAesvD,GACpG,GAAItrK,EAAO4uI,QAETy8B,EAAOrrK,YAASuC,OACX,GAAIvC,EAAO,GAAG8+E,UACnBxrD,GAAK,+DACL+3I,EAAOrrK,YAASuC,EAChB04E,EAAKyF,SAAS1gF,OAAS,SAClB,CACL,IAAIwrK,GAAe,EACf7qE,EAAW3gG,EACf,OAAQ2gG,EAASiuC,QAAS,CACxB,GAAI3zD,EAAK47B,KAAKlW,GAAW,CAEvB6qE,GAAe,EACfH,EAAOrrK,YAASuC,EAGhB,KACF,CACAo+F,EAAWA,EAAS3gG,QACtB,CACKwrK,IAEHxrK,EAAO,GAAG0gF,SAAS9B,SAAS96E,KAAKm3E,GACjCA,EAAKyF,SAAS1gF,OAASA,EAAO,GAG9BgrK,EAAKvd,kBAAmB,EAE5B,CACF,CACF,CAEA,GAAIh0C,EAAS53G,OAAS,EAAG,CAEvB,IADA,IAcI4pK,EAdAC,EAAWjyD,EAAS53G,SAAWoE,EAAKpE,OAASoE,EAAO,IAAIgN,GAAW+b,EAAIyqF,GAClEmkB,EAAM,EAAGA,EAAM8tC,EAAS7pK,OAAQ+7H,IAAO,CAC9C,IAAI+tC,EAAQD,EAAS9tC,GACjB+tC,EAAM7sE,WAKV6sE,EAAMjC,gBAAgBR,sBAGtByC,EAAMpnK,SAAS2kK,sBACfyC,EAAMpmK,SAAS2jK,sBACjB,CAGEuC,EADET,EAAKvd,iBACSz+H,EAAGixD,aAAa49B,MAAM6tD,GAAU7tD,MAAM6tD,EAASzzD,kBAAkB4F,MAAM6tD,EAAS1rK,UAEhF0rK,EAElBD,EAAcnc,2BAA2BJ,wBAAwBtO,YAAY6iB,GACzEA,EACFiI,EAASlb,cAAc,OACdua,GACTW,EAASpiE,KAAK,MAElB,CACA,OAAOrjG,CACT,EAEAqkK,GAASxrF,QAAU,WACjB,IAAIyf,EAAM1+F,KAAK,GACf,OAAO0+F,GAAOA,EAAI7d,SAAS5B,OAC7B,EACAwrF,GAAS5yD,OAAS,WAChB,IAAInZ,EAAM1+F,KAAK,GACf,OAAO0+F,IAAQA,EAAI7d,SAAS5B,OAC9B,EACAwrF,GAAS7tF,OAAS,WAChB,IAAIgnF,IAAiB7gK,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GAChFgpK,IAAiBhpK,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GAChFqD,EAAOpG,KACPgsK,EAAe,GACfC,EAAkB,CAAC,EACnB98I,EAAK/oB,EAAKy6E,SAAS1xD,GAGvB,SAAS+8I,EAAkB9wF,GAEzB,IADA,IAAI+E,EAAQ/E,EAAKyF,SAASV,MACjBn8E,EAAI,EAAGA,EAAIm8E,EAAMn+E,OAAQgC,IAChCzD,EAAI4/E,EAAMn8E,GAEd,CAGA,SAAS6pJ,EAAYzyE,GAEnB,IADA,IAAI2D,EAAW3D,EAAKyF,SAAS9B,SACpB/6E,EAAI,EAAGA,EAAI+6E,EAAS/8E,OAAQgC,IACnCzD,EAAIw+E,EAAS/6E,GAEjB,CACA,SAASzD,EAAIm+F,GACX,IAAIytE,EAAeF,EAAgBvtE,EAAIl1F,MACnCuiK,GAAkBrtE,EAAIzf,WAAaktF,IAGrCF,EAAgBvtE,EAAIl1F,OAAQ,EAE1Bk1F,EAAIO,UACN+sE,EAAa/nK,KAAKy6F,GAElBwtE,EAAkBxtE,GAClBmvD,EAAYnvD,IAEZstE,EAAa99I,QAAQwwE,GAEzB,CAKA,IAAK,IAAI16F,EAAI,EAAGwK,EAAIpI,EAAKpE,OAAQgC,EAAIwK,EAAGxK,IAAK,CAC3C,IAAI06F,EAAMt4F,EAAKpC,GACfzD,EAAIm+F,EACN,CACA,SAAS0tE,EAAchxF,EAAMuF,GAC3B,IAAIy0B,EAAiBh6B,EAAKyF,SAASV,MACnCuwC,GAAgBtb,EAAgBz0B,GAGhCvF,EAAKiuF,qBACP,CACA,SAASgD,EAAkBC,GAEzBA,EAAQjD,qBACV,CACA,IAAIkD,EAAiB,GAErB,SAASC,EAAersK,EAAQu+F,GAC9BA,EAAMA,EAAI,GACVv+F,EAASA,EAAO,GAChB,IAAI4+E,EAAW5+E,EAAO0gF,SAAS9B,SAC3B0tF,EAAMtsK,EAAOqJ,KACjBknH,GAAgB3xC,EAAU2f,GAE1BA,EAAI7d,SAAS1gF,OAAS,KAEjBosK,EAAeG,IAAID,KACtBF,EAAeG,IAAID,IAAO,EAC1BF,EAAetoK,KAAK9D,GAExB,CAdAosK,EAAeG,IAAM,CAAC,EAetBtmK,EAAKqpJ,2BACDsc,GACF58I,EAAG48I,eAAeC,GAGpB,IAAK,IAAI/hC,EAAM,EAAGA,EAAM+hC,EAAahqK,OAAQioI,IAAO,CAClD,IAAI0iC,EAAQX,EAAa/hC,GACzB,GAAI0iC,EAAMpzB,SAAU,CAElB,IAAIztI,EAAM6gK,EAAMjoK,SAAS,GACrBi8F,EAAMgsE,EAAMjnK,SAAS,GACzB0mK,EAActgK,EAAK6gK,GACnBP,EAAczrE,EAAKgsE,GAEnB,IADA,IAAIC,EAAWD,EAAM9C,gBACZ5+J,EAAI,EAAGA,EAAI2hK,EAAS5qK,OAAQiJ,IAAK,CACxC,IAAIqhK,EAAUM,EAAS3hK,GACvBohK,EAAkBC,GACdA,EAAQtG,mBACVsG,EAAQjd,uBAEZ,CACF,KAAO,CAEL,IAAIlvJ,EAASwsK,EAAMxsK,SACG,IAAlBA,EAAO6B,QACTwqK,EAAersK,EAAQwsK,EAE3B,CACIZ,IAEFY,EAAM9rF,SAAS5B,SAAU,EAE7B,CAGA,IAAI4tF,EAAkB19I,EAAG0xD,SAAS+4B,SAClCzqF,EAAG0xD,SAAS+sE,kBAAmB,EAC/B,IAAK,IAAIliB,EAAM,EAAGA,EAAMmhC,EAAgB7qK,OAAQ0pI,IAAO,CACrD,IAAIohC,EAAQD,EAAgBnhC,GAC5B,GAAIohC,EAAM5tE,WAAY,CACpB/vE,EAAG0xD,SAAS+sE,kBAAmB,EAC/B,KACF,CACF,CACA,IAAImf,EAAkB,IAAI35J,GAAWpT,KAAKmvB,KAAM68I,GAC5Ce,EAAgBzjF,OAAS,IAGvBs6E,EACFmJ,EAAgBpc,cAAc,UACrBob,GACTgB,EAAgBtjE,KAAK,WAKzB,IAAK,IAAIkuC,EAAM,EAAGA,EAAM40B,EAAevqK,OAAQ21I,IAAO,CACpD,IAAIq1B,EAAQT,EAAe50B,GACtBo0B,GAAmBiB,EAAM/tF,WAC5B+tF,EAAMjsB,aAEV,CACA,OAAOgsB,CACT,EACAtC,GAASx4I,KAAO,SAAUg7I,GACxB,IAAI99I,EAAKnvB,KAAK6gF,SAAS1xD,GACnBi5E,EAAOpoG,KAIP4jK,GAAiB,EACjBsJ,GAAa,EACbhrK,EAAW,SAAkBsH,GAC/B,OAAa,MAANA,EAAaA,EAAK,GAAKA,CAChC,EAEA,QAAsB9G,IAAlBuqK,EAAOvoK,aAA0ChC,IAAlBuqK,EAAOvnK,OAAsB,CAC9D,IAAIo1G,EAAQ54G,EAAS+qK,EAAOvoK,QACxBw6G,EAAQh9G,EAAS+qK,EAAOvnK,QACxBynK,EAAqB,MAATryD,GAAiB3rF,EAAGkpG,iBAAiBvd,GACjDsyD,EAAqB,MAATluD,GAAiB/vF,EAAGkpG,iBAAiBnZ,IACjDiuD,GAAaC,KACfj+I,EAAGk+I,OAAM,WAEPjlE,EAAKxrB,OAAOgnF,EAAgBsJ,GAC5B9kE,EAAKuoD,cAAc,WACnB,IAAK,IAAI3sJ,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACXspK,EAAS5uE,EAAI7d,SAAS5hE,KACtBy/E,EAAI66C,WACF4zB,IACFG,EAAO5oK,OAASo2G,GAEdsyD,IACFE,EAAO5nK,OAASw5G,GAGtB,CACA9W,EAAK5rE,QAAQonI,EAAgBsJ,EAC/B,IAEA9kE,EAAKuoD,cAAc,QAEvB,MAAO,QAAsBjuJ,IAAlBuqK,EAAO9sK,OAAsB,CAEtC,IAAIsrK,EAAWvpK,EAAS+qK,EAAO9sK,QAC3BotK,EAA4B,OAAb9B,GAAqBt8I,EAAGkpG,iBAAiBozC,GAC5D,GAAI8B,EAAc,CAChB,IAAIC,EAA2B,OAAb/B,OAAoB/oK,EAAY+oK,EAClDt8I,EAAGk+I,OAAM,WAEP,IAAII,EAAUrlE,EAAKxrB,OAAOgnF,EAAgBsJ,GAC1CO,EAAQ9c,cAAc,WACtB,IAAK,IAAI3sJ,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACX0pK,EAAShvE,EAAI7d,SAAS5hE,KACtBy/E,EAAIO,WACNyuE,EAAOvtK,OAASqtK,EAEpB,CACAC,EAAQjxI,QAAQonI,EAAgBsJ,EAClC,IAEA9kE,EAAKuoD,cAAc,OACrB,CACF,CACA,OAAO3wJ,IACT,EACA,CAAC07I,GAAU+G,GAAUC,GAAUkJ,GAAUoB,GAAU/tI,GAAMuvI,GAAUoM,GAAY8C,GAAUG,GAAU2C,GAAUS,GAAUW,GAAU6B,GAAU2C,GAAUe,IAAUv8J,SAAQ,SAAUysD,GAC/KqsD,GAAO+mD,GAAUpzG,EACnB,IAEA,IAAIs2G,GAAW,CACbptK,IAAK,SAAa4jG,GAChB,IAAIyV,EACAzqF,EAAKnvB,KAGT,GAAIiiH,EAAoB9d,GAAO,CAC7B,IAAIiE,EAAOjE,EACX,GAAIiE,EAAKvnB,SAAS1xD,KAAOA,EAEvByqF,EAAWxR,EAAK5rE,cACX,CAGL,IADA,IAAIwuI,EAAQ,GACHhnK,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACfgnK,EAAM/mK,KAAKy6F,EAAIqf,OACjB,CACAnE,EAAW,IAAIxmG,GAAW+b,EAAI67I,EAChC,CACF,MAGK,GAAIp1G,EAAMuuC,GAAO,CACpB,IAAIypE,EAASzpE,EACbyV,EAAW,IAAIxmG,GAAW+b,EAAIy+I,EAChC,MAGK,GAAI1rD,EAAY/d,KAAUvuC,EAAMuuC,EAAKrlB,QAAUlpB,EAAMuuC,EAAKhkB,QAAS,CAItE,IAHA,IAAI0tF,EAAc1pE,EACd2pE,EAAU,GACVC,EAAM,CAAC,QAAS,SACXn+J,EAAK,EAAGwzI,EAAK2qB,EAAI/rK,OAAQ4N,EAAKwzI,EAAIxzI,IAAM,CAC/C,IAAIsrC,EAAQ6yH,EAAIn+J,GACZo+J,EAAYH,EAAY3yH,GAC5B,GAAI0a,EAAMo4G,GACR,IAAK,IAAI/iK,EAAI,EAAGgjK,EAAKD,EAAUhsK,OAAQiJ,EAAIgjK,EAAIhjK,IAAK,CAClD,IAAI8yG,EAAO2F,GAAO,CAChBxoE,MAAOA,GACN8yH,EAAU/iK,IACb6iK,EAAQ7pK,KAAK85G,EACf,CAEJ,CACAnE,EAAW,IAAIxmG,GAAW+b,EAAI2+I,EAChC,KAGK,CACH,IAAII,EAAQ/pE,EACZyV,EAAW,IAAI6X,GAAQtiG,EAAI++I,GAAO9tF,YACpC,CACA,OAAOw5B,CACT,EACAh9B,OAAQ,SAAgBwD,GACtB,GAAI6hC,EAAoB7hC,SAAoB,GAAI/gE,EAAO+gE,GAAa,CAClE,IAAIR,EAAWQ,EACfA,EAAapgF,KAAKmlB,EAAEy6D,EACtB,CACA,OAAOQ,EAAWxD,QACpB,4HAMF,SAASuxF,GAAoBC,EAAKC,EAAKC,EAAKC,GAC1C,IAAIC,EAAoB,EACtBC,EAAmB,KACnBC,EAAwB,KACxBC,EAA6B,GAC7BC,EAAmB,GACnBC,EAAkB,GAAOD,EAAmB,GAC5CE,EAAgD,qBAAjBl5J,aAGjC,GAAyB,IAArB7S,UAAUf,OACZ,OAAO,EAIT,IAAK,IAAIgC,EAAI,EAAGA,EAAI,IAAKA,EACvB,GAA4B,kBAAjBjB,UAAUiB,IAAmB+K,MAAMhM,UAAUiB,MAAQ4iF,SAAS7jF,UAAUiB,IACjF,OAAO,EAKXoqK,EAAMjoK,KAAKyI,IAAIw/J,EAAK,GACpBE,EAAMnoK,KAAKyI,IAAI0/J,EAAK,GACpBF,EAAMjoK,KAAKwI,IAAIy/J,EAAK,GACpBE,EAAMnoK,KAAKwI,IAAI2/J,EAAK,GACpB,IAAIS,EAAgBD,EAAwB,IAAIl5J,aAAag5J,GAAoB,IAAI/nK,MAAM+nK,GAC3F,SAASnkK,EAAEukK,EAAKC,GACd,OAAO,EAAM,EAAMA,EAAM,EAAMD,CACjC,CACA,SAAS1pK,EAAE0pK,EAAKC,GACd,OAAO,EAAMA,EAAM,EAAMD,CAC3B,CACA,SAASrpK,EAAEqpK,GACT,OAAO,EAAMA,CACf,CACA,SAASE,EAAWC,EAAIH,EAAKC,GAC3B,QAASxkK,EAAEukK,EAAKC,GAAOE,EAAK7pK,EAAE0pK,EAAKC,IAAQE,EAAKxpK,EAAEqpK,IAAQG,CAC5D,CACA,SAASC,EAASD,EAAIH,EAAKC,GACzB,OAAO,EAAMxkK,EAAEukK,EAAKC,GAAOE,EAAKA,EAAK,EAAM7pK,EAAE0pK,EAAKC,GAAOE,EAAKxpK,EAAEqpK,EAClE,CACA,SAASK,EAAqBC,EAAIC,GAChC,IAAK,IAAI3/J,EAAK,EAAGA,EAAK4+J,IAAqB5+J,EAAI,CAC7C,IAAI4/J,EAAeJ,EAASG,EAASnB,EAAKE,GAC1C,GAAqB,IAAjBkB,EACF,OAAOD,EAET,IAAIvmC,EAAWkmC,EAAWK,EAASnB,EAAKE,GAAOgB,EAC/CC,GAAWvmC,EAAWwmC,CACxB,CACA,OAAOD,CACT,CACA,SAASE,IACP,IAAK,IAAIt7C,EAAM,EAAGA,EAAMy6C,IAAoBz6C,EAC1C46C,EAAc56C,GAAO+6C,EAAW/6C,EAAM06C,EAAiBT,EAAKE,EAEhE,CACA,SAASoB,EAAgBJ,EAAIK,EAAIC,GAC/B,IAAI5mC,EACF6mC,EACA7rK,EAAI,EACN,GACE6rK,EAAWF,GAAMC,EAAKD,GAAM,EAC5B3mC,EAAWkmC,EAAWW,EAAUzB,EAAKE,GAAOgB,EACxCtmC,EAAW,EACb4mC,EAAKC,EAELF,EAAKE,QAEA1pK,KAAK6iB,IAAIggH,GAAY0lC,KAA2B1qK,EAAI2qK,GAC7D,OAAOkB,CACT,CACA,SAASC,EAASR,GAIhB,IAHA,IAAIS,EAAgB,EAClBC,EAAgB,EAChBC,EAAarB,EAAmB,EAC3BoB,IAAkBC,GAAclB,EAAciB,IAAkBV,IAAMU,EAC3ED,GAAiBlB,IAEjBmB,EACF,IAAI/lF,GAAQqlF,EAAKP,EAAciB,KAAmBjB,EAAciB,EAAgB,GAAKjB,EAAciB,IACjGE,EAAYH,EAAgB9lF,EAAO4kF,EACnCsB,EAAef,EAASc,EAAW9B,EAAKE,GAC1C,OAAI6B,GAAgB1B,EACXY,EAAqBC,EAAIY,GACN,IAAjBC,EACFD,EAEAR,EAAgBJ,EAAIS,EAAeA,EAAgBlB,EAE9D,CACA,IAAIuB,GAAe,EACnB,SAASC,IACPD,GAAe,EACXhC,IAAQC,GAAOC,IAAQC,GACzBkB,GAEJ,CACA,IAAI7rK,EAAI,SAAW0rK,GAIjB,OAHKc,GACHC,IAEEjC,IAAQC,GAAOC,IAAQC,EAClBe,EAEE,IAAPA,EACK,EAEE,IAAPA,EACK,EAEFJ,EAAWY,EAASR,GAAKjB,EAAKE,EACvC,EACA3qK,EAAEo2J,iBAAmB,WACnB,MAAO,CAAC,CACNl6I,EAAGsuJ,EACHzvI,EAAG0vI,GACF,CACDvuJ,EAAGwuJ,EACH3vI,EAAG4vI,GAEP,EACA,IAAIr6F,EAAM,kBAAoB,CAACk6F,EAAKC,EAAKC,EAAKC,GAAO,IAIrD,OAHA3qK,EAAE1B,SAAW,WACX,OAAOgyE,CACT,EACOtwE,CACT,wJAKA,IAAI0sK,GAAoB,WACtB,SAASC,EAA2Bn6J,GAClC,OAAQA,EAAMo6J,QAAUp6J,EAAM0J,EAAI1J,EAAMq6J,SAAWr6J,EAAM4R,CAC3D,CACA,SAAS0oJ,EAAkCC,EAAcC,EAAIC,GAC3D,IAAIz6J,EAAQ,CACV0J,EAAG6wJ,EAAa7wJ,EAAI+wJ,EAAWlrG,GAAKirG,EACpC5oJ,EAAG2oJ,EAAa3oJ,EAAI6oJ,EAAWC,GAAKF,EACpCJ,QAASG,EAAaH,QACtBC,SAAUE,EAAaF,UAEzB,MAAO,CACL9qG,GAAIvvD,EAAM4R,EACV8oJ,GAAIP,EAA2Bn6J,GAEnC,CACA,SAAS26J,EAAqB36J,EAAOw6J,GACnC,IAAIjuK,EAAI,CACJgjE,GAAIvvD,EAAM4R,EACV8oJ,GAAIP,EAA2Bn6J,IAEjCxT,EAAI8tK,EAAkCt6J,EAAY,GAALw6J,EAAUjuK,GACvDE,EAAI6tK,EAAkCt6J,EAAY,GAALw6J,EAAUhuK,GACvDsqB,EAAIwjJ,EAAkCt6J,EAAOw6J,EAAI/tK,GACjDmuK,EAAO,EAAM,GAAOruK,EAAEgjE,GAAK,GAAO/iE,EAAE+iE,GAAK9iE,EAAE8iE,IAAMz4C,EAAEy4C,IACnDsrG,EAAO,EAAM,GAAOtuK,EAAEmuK,GAAK,GAAOluK,EAAEkuK,GAAKjuK,EAAEiuK,IAAM5jJ,EAAE4jJ,IAGrD,OAFA16J,EAAM0J,EAAI1J,EAAM0J,EAAIkxJ,EAAOJ,EAC3Bx6J,EAAM4R,EAAI5R,EAAM4R,EAAIipJ,EAAOL,EACpBx6J,CACT,CACA,OAAO,SAAS86J,EAAiBV,EAASC,EAAU3sG,GAClD,IAUEqtG,EACAP,EACAQ,EAZEC,EAAY,CACZvxJ,GAAI,EACJkI,EAAG,EACHwoJ,QAAS,KACTC,SAAU,MAEZvzG,EAAO,CAAC,GACRo0G,EAAc,EACd1/E,EAAY,KACZ2/E,EAAK,KAoBP,IAhBAf,EAAU16H,WAAW06H,IAAY,IACjCC,EAAW36H,WAAW26H,IAAa,GACnC3sG,EAAWA,GAAY,KACvButG,EAAUb,QAAUA,EACpBa,EAAUZ,SAAWA,EACrBU,EAA6B,OAAbrtG,EAGZqtG,GAEFG,EAAcJ,EAAiBV,EAASC,GAExCG,EAAKU,EAAcxtG,EAAWytG,GAE9BX,EAAKW,IASL,GALAH,EAAaL,EAAqBK,GAAcC,EAAWT,GAE3D1zG,EAAKj5D,KAAK,EAAImtK,EAAWtxJ,GACzBwxJ,GAAe,KAETnrK,KAAK6iB,IAAIooJ,EAAWtxJ,GAAK8xE,GAAazrF,KAAK6iB,IAAIooJ,EAAWppJ,GAAK4pE,GACnE,MAMJ,OAAQu/E,EAA8B,SAAUK,GAC9C,OAAOt0G,EAAKs0G,GAAmBt0G,EAAKl7D,OAAS,GAAK,EACpD,EAFwBsvK,CAG1B,CACF,CA9EwB,GAgFpBG,GAAc,SAAqBnqC,EAAIxgG,EAAIygG,EAAIxgG,GACjD,IAAI2qI,EAASvD,GAAoB7mC,EAAIxgG,EAAIygG,EAAIxgG,GAC7C,OAAO,SAAU2X,EAAOC,EAAKhC,GAC3B,OAAO+B,GAASC,EAAMD,GAASgzH,EAAO/0H,EACxC,CACF,EACIg1H,GAAU,CACZ,OAAU,SAAgBjzH,EAAOC,EAAKhC,GACpC,OAAO+B,GAASC,EAAMD,GAAS/B,CACjC,EAEA,KAAQ80H,GAAY,IAAM,GAAK,IAAM,GACrC,UAAWA,GAAY,IAAM,EAAG,EAAG,GACnC,WAAYA,GAAY,EAAG,EAAG,IAAM,GACpC,cAAeA,GAAY,IAAM,EAAG,IAAM,GAE1C,eAAgBA,GAAY,IAAM,EAAG,KAAO,MAC5C,gBAAiBA,GAAY,IAAM,KAAO,KAAO,GACjD,mBAAoBA,GAAY,KAAO,IAAM,IAAM,KAEnD,eAAgBA,GAAY,IAAM,KAAO,IAAM,KAC/C,gBAAiBA,GAAY,IAAM,IAAM,IAAM,KAC/C,mBAAoBA,GAAY,KAAO,IAAM,KAAO,MAEpD,gBAAiBA,GAAY,IAAM,KAAO,KAAO,KACjD,iBAAkBA,GAAY,KAAO,IAAM,KAAO,GAClD,oBAAqBA,GAAY,KAAO,KAAO,KAAO,GAEtD,gBAAiBA,GAAY,KAAO,IAAM,KAAO,KACjD,iBAAkBA,GAAY,KAAO,IAAM,IAAM,GACjD,oBAAqBA,GAAY,IAAM,EAAG,KAAO,GAEjD,gBAAiBA,GAAY,KAAO,IAAM,KAAO,KACjD,iBAAkBA,GAAY,IAAM,EAAG,IAAM,GAC7C,oBAAqBA,GAAY,IAAM,EAAG,IAAM,GAEhD,eAAgBA,GAAY,IAAM,IAAM,KAAO,MAC/C,gBAAiBA,GAAY,IAAM,EAAG,IAAM,GAC5C,mBAAoBA,GAAY,EAAG,EAAG,EAAG,GAEzC,eAAgBA,GAAY,GAAK,IAAM,IAAM,MAC7C,gBAAiBA,GAAY,KAAO,IAAM,KAAO,GACjD,mBAAoBA,GAAY,KAAO,KAAO,IAAM,KAGpD,OAAU,SAAgBjB,EAASC,EAAU3sG,GAC3C,GAAiB,IAAbA,EAEF,OAAO6tG,GAAQnhG,OAGjB,IAAIkxB,EAAS4uE,GAAkBE,EAASC,EAAU3sG,GAClD,OAAO,SAAUplB,EAAOC,EAAKhC,GAC3B,OAAO+B,GAASC,EAAMD,GAASgjD,EAAO/kD,EACxC,CACF,EACA,eAAgB80H,IAGlB,SAASG,GAAcptK,EAAMk6C,EAAOC,EAAKhC,EAASk1H,GAChD,GAAgB,IAAZl1H,EACF,OAAOgC,EAET,GAAID,IAAUC,EACZ,OAAOA,EAET,IAAI3vC,EAAM6iK,EAASnzH,EAAOC,EAAKhC,GAC/B,OAAY,MAARn4C,KAGAA,EAAKstK,YAActtK,EAAKosB,SAC1B5hB,EAAM7I,KAAKugF,MAAM13E,SAEFtM,IAAb8B,EAAKoK,MACPI,EAAM7I,KAAKwI,IAAIK,EAAKxK,EAAKoK,WAEVlM,IAAb8B,EAAKmK,MACPK,EAAM7I,KAAKyI,IAAII,EAAKxK,EAAKmK,OATlBK,CAYX,CACA,SAASg1F,GAAS46C,EAAM8b,GACtB,OAAoB,MAAhB9b,EAAKkS,SAAiC,MAAdlS,EAAK98I,MACX,MAAhB88I,EAAKkS,SAA4B,MAAR4J,GAAoC,MAApBA,EAAKl2J,KAAKysJ,MAG9CrS,EAAK98I,MAFL88I,EAAKkS,QAKPlS,CAEX,CACA,SAASmzB,GAAKC,EAAWC,EAASt1H,EAASk1H,EAAUK,GACnD,IAAI1tK,EAAmB,MAAZ0tK,EAAmBA,EAAS1tK,KAAO,KAC1Cm4C,EAAU,EACZA,EAAU,EACDA,EAAU,IACnBA,EAAU,GAEZ,IAAI+B,EAAQslD,GAASguE,EAAWE,GAC5BvzH,EAAMqlD,GAASiuE,EAASC,GAC5B,GAAI/vD,EAASzjE,IAAUyjE,EAASxjE,GAC9B,OAAOizH,GAAcptK,EAAMk6C,EAAOC,EAAKhC,EAASk1H,GAC3C,GAAIj8G,EAAMlX,IAAUkX,EAAMjX,GAAM,CAErC,IADA,IAAIwzH,EAAW,GACNnuK,EAAI,EAAGA,EAAI26C,EAAI38C,OAAQgC,IAAK,CACnC,IAAIouK,EAAK1zH,EAAM16C,GACXmzI,EAAKx4F,EAAI36C,GACb,GAAU,MAANouK,GAAoB,MAANj7B,EAAY,CAC5B,IAAInoI,EAAM4iK,GAAcptK,EAAM4tK,EAAIj7B,EAAIx6F,EAASk1H,GAC/CM,EAASluK,KAAK+K,EAChB,MACEmjK,EAASluK,KAAKkzI,EAElB,CACA,OAAOg7B,CACT,CAEF,CAEA,SAASE,GAAOjsK,EAAM65I,EAAKt8H,EAAKu5H,GAC9B,IAAImC,GAAUnC,EACVxrB,EAAKtrH,EAAKy6E,SACVu/D,EAAQH,EAAIp/D,SACZyxF,EAAUlyB,EAAM2iB,OAChBt6D,EAAY23C,EAAM33C,UAClBt5E,EAAK+tH,EAAS92I,EAAOA,EAAK+oB,KAC1BvjB,EAAQujB,EAAGvjB,QACf,IAAKw0I,EAAMmyB,WACT,GAAe,MAAXD,EAEFlyB,EAAMmyB,WAAaZ,GAAQ,cACtB,CAEL,IAAIa,EAQA/tK,EAAMwO,EAPV,GAAIoM,EAAOizJ,GAAU,CACnB,IAAIG,EAAa7mK,EAAMghB,MAAM,6BAA8B0lJ,GAC3DE,EAAaC,EAAW3wK,KAC1B,MAEE0wK,EAAaF,EAGXjzJ,EAAOmzJ,IACT/tK,EAAO+tK,EACPv/J,EAAO,KAEPxO,EAAO+tK,EAAW,GAClBv/J,EAAOu/J,EAAWrwK,MAAM,GAAGunB,KAAI,SAAU3J,GACvC,OAAQA,CACV,KAEE9M,EAAKjR,OAAS,GAEH,WAATyC,GACFwO,EAAKhP,KAAKm8I,EAAMt8E,UAGlBs8E,EAAMmyB,WAAaZ,GAAQltK,GAAM3B,MAAM,KAAMmQ,IAG7CmtI,EAAMmyB,WAAaZ,GAAQltK,EAE/B,CAEF,IACIk4C,EADAomH,EAAS3iB,EAAMmyB,WAenB,GAZE51H,EADqB,IAAnByjG,EAAMt8E,SACE,GAECngD,EAAM8kF,GAAa23C,EAAMt8E,SAElCs8E,EAAM7C,WACR5gG,EAAUyjG,EAAM5C,UAEd7gG,EAAU,EACZA,EAAU,EACDA,EAAU,IACnBA,EAAU,GAEO,MAAfyjG,EAAM1qH,MAAe,CAGvB,IAAI+nB,EAAW2iG,EAAMzC,cACjBhgG,EAASyiG,EAAMtuH,SACnB,GAAI6rB,GAAU0hG,IAAWj5I,EAAKg9F,SAAU,CACtC,IAAI8rD,EAAS,CAAC,EACV7N,GAAM5jG,EAAS39B,EAAG69B,EAAO79B,KAC3BovI,EAAOpvI,EAAIiyJ,GAAKt0H,EAAS39B,EAAG69B,EAAO79B,EAAG68B,EAASomH,IAE7C1hB,GAAM5jG,EAAS9e,EAAGgf,EAAOhf,KAC3BuwH,EAAOvwH,EAAIozI,GAAKt0H,EAAS9e,EAAGgf,EAAOhf,EAAGge,EAASomH,IAEjD38J,EAAK0rB,SAASo9H,EAChB,CACA,IAAIpR,EAAWsC,EAAMtC,SACjB40B,EAAStyB,EAAMt8D,IACfA,EAAM4tC,EAAG5tC,IACT6uF,EAAyB,MAAVD,GAAkBx1B,EACjCy1B,IACEtxB,GAAMvD,EAASh+H,EAAG4yJ,EAAO5yJ,KAC3BgkE,EAAIhkE,EAAIiyJ,GAAKj0B,EAASh+H,EAAG4yJ,EAAO5yJ,EAAG68B,EAASomH,IAE1C1hB,GAAMvD,EAASn/G,EAAG+zI,EAAO/zI,KAC3BmlD,EAAInlD,EAAIozI,GAAKj0B,EAASn/G,EAAG+zI,EAAO/zI,EAAGge,EAASomH,IAE9C38J,EAAKqjG,KAAK,QAEZ,IAAIs0C,EAAYqC,EAAMrC,UAClB60B,EAAUxyB,EAAMhjE,KAChBy1F,EAA2B,MAAXD,GAAmB11B,EACnC21B,IACExxB,GAAMtD,EAAW60B,KACnBlhD,EAAGt0C,KAAOsiD,GAAMhO,EAAGohD,QAASf,GAAKh0B,EAAW60B,EAASj2H,EAASomH,GAASrxC,EAAGqhD,UAE5E3sK,EAAKqjG,KAAK,UAERkpE,GAAgBE,IAClBzsK,EAAKqjG,KAAK,YAEZ,IAAIpyC,EAAQ+oF,EAAMx0I,MAClB,GAAIyrD,GAASA,EAAMr1D,OAAS,GAAKq9I,EAAQ,CACvC,IAAK,IAAIr7I,EAAI,EAAGA,EAAIqzD,EAAMr1D,OAAQgC,IAAK,CACrC,IAAI46I,EAAOvnF,EAAMrzD,GACbgvK,EAAQp0B,EAAKn6I,KACbk6C,EAAMigG,EACNlgG,EAAQ0hG,EAAMxC,WAAWo1B,GACzBd,EAAWtmK,EAAMwzI,WAAW1gG,EAAMj6C,MAClCwuK,EAAWlB,GAAKrzH,EAAOC,EAAKhC,EAASomH,EAAQmP,GACjDtmK,EAAMsnK,eAAe9sK,EAAM4sK,EAAOC,EACpC,CAEA7sK,EAAKqjG,KAAK,QACZ,CACF,CAGA,OADA22C,EAAM5C,SAAW7gG,EACVA,CACT,CACA,SAAS0kG,GAAM3iG,EAAOC,GACpB,OAAa,MAATD,GAAwB,MAAPC,OAGjBwjE,EAASzjE,KAAUyjE,EAASxjE,QAErBD,IAASC,GAItB,CAEA,SAASw0H,GAAe/sK,EAAM65I,EAAKt8H,EAAKu5H,GACtC,IAAIkD,EAAQH,EAAIp/D,SAChBu/D,EAAMhD,SAAU,EAChBgD,EAAM33C,UAAY9kF,EAAMy8H,EAAM5C,SAAW4C,EAAMt8E,QACjD,CAEA,SAASsvG,GAAQzvJ,EAAKwL,GACpB,IAAIi5E,EAAOj5E,EAAG0xD,SAASwyF,QACnBC,EAAW,GACf,SAASC,EAAQ70E,EAAKw+C,GACpB,IAAIxrB,EAAKhzB,EAAI7d,SACTzgE,EAAUsxG,EAAG1gG,UAAU5Q,QACvB2C,EAAQ2uG,EAAG1gG,UAAUjO,MACrBywJ,GAAU,EAGd,GAAuB,IAAnBpzJ,EAAQpe,OAAc,CACxB,IAAIsF,EAAOyb,EAAMqV,QACb9wB,GACF8Y,EAAQnc,KAAKqD,EAEjB,CAUA,IATA,IAAIq1E,EAAY,SAAmB82F,GACjC,IAAK,IAAIxoK,EAAIwoK,EAAWzxK,OAAS,EAAGiJ,GAAK,EAAGA,IAAK,CAC/C,IAAI0tE,EAAK86F,EAAWxoK,GACpB0tE,GACF,CACA86F,EAAWx6I,OAAO,EAAGw6I,EAAWzxK,OAClC,EAGSgC,EAAIoc,EAAQpe,OAAS,EAAGgC,GAAK,EAAGA,IAAK,CAC5C,IAAIi8I,EAAM7/H,EAAQpc,GACdo8I,EAAQH,EAAIp/D,SACZu/D,EAAMhC,SACRh+H,EAAQ6Y,OAAOj1B,EAAG,GAClBo8I,EAAM9C,QAAS,EACf8C,EAAM/C,SAAU,EAChB+C,EAAMhD,SAAU,EAChBzgE,EAAUyjE,EAAM1C,UAGb0C,EAAM/C,SAAY+C,EAAM7C,YAKzB6C,EAAM/C,SAAW+C,EAAM7C,WACzB6C,EAAM7C,UAAW,GAEd6C,EAAMhD,SACT+1B,GAAez0E,EAAKuhD,EAAKt8H,GAE3B0uJ,GAAO3zE,EAAKuhD,EAAKt8H,EAAKu5H,GAClBkD,EAAM7C,WACR6C,EAAM7C,UAAW,GAEnB5gE,EAAUyjE,EAAM1C,QACE,MAAd0C,EAAM3wI,MACR2wI,EAAM3wI,KAAKkU,GAETs8H,EAAIxB,cACNr+H,EAAQ6Y,OAAOj1B,EAAG,GAClBo8I,EAAM9C,QAAS,EACf8C,EAAM/C,SAAU,EAChB+C,EAAMhD,SAAU,EAChBzgE,EAAUyjE,EAAM3C,YAElB+1B,GAAU,EACZ,CAIA,OAHKt2B,GAA6B,IAAnB98H,EAAQpe,QAAiC,IAAjB+gB,EAAM/gB,QAC3CsxK,EAASrvK,KAAKy6F,GAET80E,CACT,CAIA,IADA,IAAIE,GAAY,EACPztK,EAAI,EAAGA,EAAImiG,EAAKpmG,OAAQiE,IAAK,CACpC,IAAIy4F,EAAM0J,EAAKniG,GACX0tK,EAAiBJ,EAAQ70E,GAC7Bg1E,EAAYA,GAAaC,CAC3B,CAEA,IAAIC,EAAaL,EAAQpkJ,GAAI,IAGzBukJ,GAAaE,KACXxrE,EAAKpmG,OAAS,EAChBmtB,EAAGkxH,OAAO,OAAQj4C,GAElBj5E,EAAGkxH,OAAO,SAKdj4C,EAAKm3D,QAAQ+T,GACbnkJ,EAAGs6E,KAAK,OACV,CAEA,IAAIoqE,GAAW,CAEbvsE,QAASxvB,GAAOwvB,UAChBt2E,UAAW8mD,GAAO9mD,YAClB+tH,SAAUjnE,GAAOinE,WACjBG,WAAYpnE,GAAOonE,aACnBxpH,MAAOoiD,GAAOpiD,QACdypH,eAAgBrnE,GAAOqnE,iBACvBrnH,KAAMggD,GAAOhgD,OACbomH,mBAAoB,SAA4B91C,GAC9C,IAAIj5E,EAAKnvB,KACJmvB,EAAG8vH,gBAIR9vH,EAAG0xD,SAASwyF,QAAQr1D,MAAM5V,EAC5B,EACA0rE,kBAAmB,WACjB9zK,KAAK6gF,SAASkzF,mBAAoB,CACpC,EACAC,mBAAoB,WAClB,IAAI7kJ,EAAKnvB,KAET,GADAmvB,EAAG0xD,SAASkzF,mBAAoB,EAC3B5kJ,EAAG8vH,eAAR,CAgBA,IAAI1nF,EAAWpoC,EAAGooC,WACdA,GAAYA,EAAS08G,aAEvB18G,EAAS08G,cAAa,SAA+BC,EAAUvwJ,GAC7DyvJ,GAAQzvJ,EAAKwL,EACf,GAAGooC,EAAS48G,uBAAuB/R,YAGnCgS,GAtBF,CAKA,SAASA,IACFjlJ,EAAG0xD,SAASkzF,mBAGjBziJ,IAAsB,SAAuB3N,GAC3CyvJ,GAAQzvJ,EAAKwL,GACbilJ,GACF,GACF,CAWF,GAGEC,GAAiB,CACnB5Y,iBAAkB,SAA0B4B,EAAWC,GACrD,OAAiB,MAAbD,GAAkC,MAAbC,EACH,MAAbD,GAAkC,MAAbC,EAErBD,EAAU3R,SAAS4R,EAE9B,EACA1B,aAAc,SAAsBzsI,EAAI2tI,EAAUD,GAChD,IAAIj9E,EAAWk9E,EAASP,UACxB,OAAgB,MAAZ38E,GACKzwD,IAAO0tI,EAASn3J,QAAUm0G,EAAQgjD,EAASn3J,SAAWk6E,EAASgmE,QAAQiX,EAASn3J,OAG3F,EACAm2J,eAAgB,SAAwB1sI,EAAIstE,GAC1CA,EAAIttE,GAAKA,EACTstE,EAAI/2F,OAASypB,CACf,EACA2sI,gBAAiB,SAAyB3sI,EAAI2tI,EAAUD,GACtD,OAA6B,MAAtBC,EAASP,UAAoBM,EAASn3J,OAASypB,CACxD,GAEEmlJ,GAAc,SAAqBvtK,GACrC,OAAIsY,EAAOtY,GACF,IAAIukJ,GAASvkJ,GAEbA,CAEX,EACIwtK,GAAS,CACXvhD,cAAe,WACb,IAAItB,EAAK1xH,KAAK6gF,SAId,OAHK6wC,EAAGisC,UACNjsC,EAAGisC,QAAU,IAAIvB,GAAQiY,GAAgBr0K,OAEpCA,IACT,EACA29J,QAAS,WACP,OAAO39J,KAAK6gF,SAAS88E,OACvB,EACAl6F,GAAI,SAAY25B,EAAQxd,EAAU/9D,GAEhC,OADA7hB,KAAK29J,UAAUl6F,GAAG25B,EAAQk3E,GAAY10F,GAAW/9D,GAC1C7hB,IACT,EACAqpG,eAAgB,SAAwBjM,EAAQxd,EAAU/9D,GAExD,OADA7hB,KAAK29J,UAAUt0D,eAAejM,EAAQk3E,GAAY10F,GAAW/9D,GACtD7hB,IACT,EACA+8J,mBAAoB,WAElB,OADA/8J,KAAK29J,UAAUZ,qBACR/8J,IACT,EACA07E,IAAK,SAAa0hB,EAAQxd,EAAU/9D,GAElC,OADA7hB,KAAK29J,UAAUjiF,IAAI0hB,EAAQk3E,GAAY10F,GAAW/9D,GAC3C7hB,IACT,EACAu9J,KAAM,SAAcngE,EAAQxd,EAAU/9D,GAEpC,OADA7hB,KAAK29J,UAAUjiF,IAAI0hB,EAAQk3E,GAAY10F,GAAW/9D,GAC3C7hB,IACT,EACAypG,KAAM,SAAcrM,EAAQ4/D,GAE1B,OADAh9J,KAAK29J,UAAUl0D,KAAKrM,EAAQ4/D,GACrBh9J,IACT,EACA2wJ,cAAe,SAAuBttI,EAAO+kF,GAG3C,OAFApoG,KAAKypG,KAAKpmF,GACVrjB,KAAKqgJ,OAAOh9H,EAAO+kF,GACZpoG,IACT,GAEF83E,GAAOmqE,eAAesyB,IAEtB,IAAIC,GAAW,CACb7wF,IAAK,SAAahkF,GAChB,IAAI43D,EAAWv3D,KAAK6gF,SAAStpB,SAE7B,OADA53D,EAAUA,GAAW,CAAC,EACf43D,EAASosB,IAAIhkF,EACtB,EACAikF,IAAK,SAAajkF,GAChB,IAAI43D,EAAWv3D,KAAK6gF,SAAStpB,SAG7B,OAFA53D,EAAUA,GAAW,CAAC,EACtBA,EAAQgmF,GAAKhmF,EAAQgmF,IAAM,OACpBpuB,EAASqsB,IAAIjkF,EACtB,GAEF60K,GAAS3wF,KAAO2wF,GAAS5wF,IAEzB,IAAI6wF,GAAW,CACbtsE,OAAQ,SAAgBxoG,GACtB,IAAIwvB,EAAKnvB,KACT,GAAe,MAAXL,EAIJ,GAAoB,MAAhBA,EAAQ8E,KAAZ,CAIA,IAAIA,EAAO9E,EAAQ8E,KACfu9F,EAAS7yE,EAAGulJ,UAAU,SAAUjwK,GACpC,GAAc,MAAVu9F,EAAJ,CAIA,IAAIoG,EAEFA,EADE/oF,EAAO1f,EAAQyoG,MACVj5E,EAAGhK,EAAExlB,EAAQyoG,MAEG,MAAhBzoG,EAAQyoG,KAAezoG,EAAQyoG,KAAOj5E,EAAGhK,IAElD,IAAIgjF,EAAS,IAAInG,EAAO0hB,GAAO,CAAC,EAAG/jH,EAAS,CAC1CwvB,GAAIA,EACJi5E,KAAMA,KAER,OAAOD,CAXP,CAFEtxF,GAAM,mBAAqBpS,EAAO,kEAJpC,MAFEoS,GAAM,oDAJNA,GAAM,oDAwBV,GAEF49J,GAASjR,aAAeiR,GAAStR,WAAasR,GAAStsE,OAEvD,IAAIwsE,GAAW,CACbt0B,OAAQ,SAAgBu0B,EAAWC,GACjC,IAAInjD,EAAK1xH,KAAK6gF,SACd,GAAI7gF,KAAK4wJ,WAAT,CACEl/B,EAAGojD,mBAAqBpjD,EAAGojD,oBAAsB,CAAC,EAClD,IAAI1sE,EAAOspB,EAAGojD,mBAAmBF,GAAaljD,EAAGojD,mBAAmBF,IAAc50K,KAAKogF,aACtE,MAAby0F,GACFzsE,EAAK4V,MAAM62D,EAGf,MAEA,GAAKnjD,EAAGqjD,qBAAR,CAIA,IAAIx9G,EAAWv3D,KAAKu3D,YAGhBv3D,KAAKqrE,aAAgB9T,GAGzBA,EAAS8oF,OAAOu0B,EAAWC,EAR3B,CASF,EACAG,cAAe,SAAuBC,GACpC,IAAIp3H,EAAI79C,KAAK6gF,SACb,YAAan+E,IAATuyK,EACKp3H,EAAEk3H,sBAETl3H,EAAEk3H,uBAAuBE,EAEpBj1K,KACT,EACAk1K,gBAAiB,SAAyBrzJ,GACxC7hB,KAAKg1K,eAAc,GACnBnzJ,IACA7hB,KAAKg1K,eAAc,EACrB,EACApkB,SAAU,WACR,OAAO5wJ,KAAK6gF,SAASs0F,WAAa,CACpC,EACAhhE,WAAY,WACV,IAAIud,EAAK1xH,KAAK6gF,SASd,OARqB,MAAjB6wC,EAAGyjD,aACLzjD,EAAGyjD,WAAa,GAEI,IAAlBzjD,EAAGyjD,aACLzjD,EAAGoyC,eAAiB9jK,KAAKogF,aACzBsxC,EAAGojD,mBAAqB,CAAC,GAE3BpjD,EAAGyjD,aACIn1K,IACT,EACAo0G,SAAU,WACR,IAAIsd,EAAK1xH,KAAK6gF,SACd,GAAsB,IAAlB6wC,EAAGyjD,WACL,OAAOn1K,KAGT,GADA0xH,EAAGyjD,aACmB,IAAlBzjD,EAAGyjD,WAAkB,CAEvBzjD,EAAGoyC,eAAe/iB,cAClB,IAAIxpF,EAAWv3D,KAAKu3D,WAGpBv0D,OAAO+E,KAAK2pH,EAAGojD,oBAAoBlqK,SAAQ,SAAUgqK,GACnD,IAAIxsE,EAAOspB,EAAGojD,mBAAmBF,GAC7BxsE,EAAK2mC,QACPx3E,EAAS8oF,OAAOu0B,GAEhBr9G,EAAS8oF,OAAOu0B,EAAWxsE,EAE/B,GACF,CACA,OAAOpoG,IACT,EACAqtK,MAAO,SAAexrJ,GAIpB,OAHA7hB,KAAKm0G,aACLtyF,IACA7hB,KAAKo0G,WACEp0G,IACT,EAEAo1K,UAAW,SAAmB1rJ,GAC5B,IAAIyF,EAAKnvB,KACT,OAAOA,KAAKqtK,OAAM,WAEhB,IADA,IAAIX,EAAM1pK,OAAO+E,KAAK2hB,GACb1lB,EAAI,EAAGA,EAAI0oK,EAAI1qK,OAAQgC,IAAK,CACnC,IAAIwF,EAAKkjK,EAAI1oK,GACTib,EAAOyK,EAAIlgB,GACXk1F,EAAMvvE,EAAGgtF,eAAe3yG,GAC5Bk1F,EAAIz/E,KAAKA,EACX,CACF,GACF,GAGEo2J,GAAmB/kD,GAAW,CAChCglD,qBAAqB,EACrBC,mBAAmB,EACnBC,YAAY,EACZC,kBAAmB,IACnBj4F,gBAAY96E,EACZgzK,oBAAqB,EACrBC,kBAAmB,EACnBC,iBAAkB,EAClBC,OAAO,EACPC,SAAS,IAEPC,GAAW,CACbC,SAAU,SAAkBj2K,EAASq9E,EAAM0G,EAAKmyF,GAC9C,IAAIlpJ,EAAI/sB,KAAK6gF,SAAStpB,SAEtB,OADAxqC,EAAEipJ,SAASj2K,EAASq9E,EAAM0G,EAAKmyF,GACxBj2K,IACT,EACAu3D,SAAU,WACR,OAAOv3D,KAAK6gF,SAAStpB,QACvB,EACA2+G,YAAa,WAEX,OADAl2K,KAAKqgJ,OAAO,QACLrgJ,IACT,EACA6rC,OAAQ,WAGN,OAFA7rC,KAAKm2K,iBACLn2K,KAAK2wJ,cAAc,UACZ3wJ,IACT,EACAo2K,aAAc,SAAsBz2K,GAClC,IAAIwvB,EAAKnvB,KACLq2K,EAAgBlnJ,EAAGulJ,UAAU,WAAY/0K,EAAQ8E,MACrD,GAAqB,MAAjB4xK,EAAJ,MAIiC3zK,IAA7B/C,EAAQi2K,kBACVniJ,GAAK,wRAEP,IAAI6iJ,EAAQjB,GAAiB11K,GAC7B22K,EAAMnnJ,GAAKA,EACXA,EAAG0xD,SAAStpB,SAAW,IAAI8+G,EAAcC,GACzCt2K,KAAKqgJ,OAAO,OAPZ,MAFExpI,GAAM,yCAAyC5V,OAAOtB,EAAQ8E,KAAM,kEAUxE,EACA8xK,gBAAiB,WACf,IAAIpnJ,EAAKnvB,KACTmvB,EAAGkxH,OAAO,WAEV,IAAIm2B,EAASrnJ,EAAG2b,YAChB,GAAI0rI,EAAQ,CACVA,EAAOC,OAAS,KAChB,MAAOD,EAAOE,WAAW10K,OAAS,EAChCw0K,EAAOtyJ,YAAYsyJ,EAAOE,WAAW,GAEzC,CACAvnJ,EAAG0xD,SAAStpB,SAAW,KACvBpoC,EAAGgvI,kBAAkBvzJ,SAAQ,SAAU8zF,GACrC,IAAIgzB,EAAKhzB,EAAI7d,SACb6wC,EAAG5wC,SAAW,CAAC,EACf4wC,EAAGM,OAAS,CAAC,EACbN,EAAG1gG,UAAU5Q,QAAU,GACvBsxG,EAAG1gG,UAAUjO,MAAQ,EACvB,GACF,EACA4zJ,SAAU,SAAkBn0K,GAC1B,OAAOxC,KAAKyjE,GAAG,SAAUjhE,EAC3B,EACAo0K,UAAW,SAAmBp0K,GAC5B,OAAOxC,KAAKg8E,IAAI,SAAUx5E,EAC5B,GAEFuzK,GAASc,qBAAuBd,GAASlqI,OAEzC,IAAIirI,GAAW,CAKb12F,WAAY,SAAoBgoB,EAAMjE,GACpC,OAAI9kF,EAAO+oF,GACFpoG,KAAKmlB,EAAEijF,GACL6Z,EAAoB7Z,GACtBA,EAAKhoB,aACHxqB,EAAMwyC,IACVjE,IACHA,EAAO,CAAC,GAEH,IAAI/wF,GAAWpT,KAAMooG,EAAMjE,EAAK//B,OAAQ+/B,EAAKllB,UAE/C,IAAI7rE,GAAWpT,KACxB,EACA8+E,MAAO,SAAec,GACpB,IAAId,EAAQ9+E,KAAKmlB,GAAE,SAAUu5E,GAC3B,OAAOA,EAAIO,QACb,IACA,OAAIrf,EACKd,EAAM9uD,OAAO4vD,GAEfd,CACT,EACAqB,MAAO,SAAeP,GACpB,IAAIO,EAAQngF,KAAKmlB,GAAE,SAAUu5E,GAC3B,OAAOA,EAAI66C,QACb,IACA,OAAI35D,EACKO,EAAMnwD,OAAO4vD,GAEfO,CACT,EAEAh7D,EAAG,SAAWy6D,GACZ,IAAIwoB,EAAOpoG,KAAK6gF,SAAS+4B,SACzB,OAAIh6B,EACKwoB,EAAKp4E,OAAO4vD,GAEZwoB,EAAK22D,WAEhB,EACAZ,gBAAiB,WACf,OAAOn+J,KAAK6gF,SAAS+4B,QACvB,GAIFk9D,GAASl9D,SAAWk9D,GAAS9mJ,OAAS8mJ,GAAS3xJ,EAE/C,IAAI4xJ,GAAU,CAAC,EAGXrxB,GAAO,IACPsxB,GAAQ,IAMZD,GAAQj0K,MAAQ,SAAUslG,GAKxB,IAJA,IAAIhiG,EAAOpG,KACP0xH,EAAKtrH,EAAKy6E,SACV1xD,EAAKuiG,EAAGviG,GACR40I,EAAc50I,EAAGixD,aACZ62F,EAAK,EAAGA,EAAK7uE,EAAKpmG,OAAQi1K,IAAM,CACvC,IAAIv4E,EAAM0J,EAAK6uE,GACXC,EAAU9wK,EAAK+wK,eAAez4E,GAClC,IAAIw4E,EAAQnoC,MAAZ,CAGA,IAAIqoC,EAAWhxK,EAAKixK,gBAAgBH,GAChCI,EAAMlxK,EAAKmxK,kBAAkBL,EAASE,EAAU14E,GAChDA,EAAI7d,SAAS22F,iBACfpxK,EAAKs+J,kBAAkBhmE,EAAK44E,EAAIG,WAEhC/4E,EAAI7d,SAAS22F,kBAAmB,EAElC,IAAIE,EAAYtxK,EAAKuxK,iBAAiBj5E,GAClCg5E,GACF3T,EAAY9/J,KAAKy6F,EAVnB,CAYF,CAEA,OAAOqlE,CACT,EACAgT,GAAQa,kBAAoB,SAAUC,EAAWC,GAC/C,IAAI1xK,EAAOpG,KACPu1B,EAAQnvB,EAAKy6E,SAASk3F,UAAY3xK,EAAKy6E,SAASk3F,WAAa,CAAC,EAC9DC,EAAaH,EAAY,IAAMC,EAC/BG,EAAY1iJ,EAAMyiJ,GACtB,GAAIC,EACF,OAAOA,EAIT,IAFA,IAAIR,EAAY,GACZS,EAAY,CAAC,EACRl0K,EAAI,EAAGA,EAAIoC,EAAKpE,OAAQgC,IAAK,CACpC,IAAIm0K,EAAM/xK,EAAKpC,GACXo0K,EAAYP,EAAU7zK,KAAO0hJ,GAC7B2yB,EAAYP,EAAU9zK,KAAO0hJ,GAC7B4yB,EAAeF,IAAcC,EAC7BE,EAAoBJ,EAAIK,iBAAiBx2K,OAAS,EACtD,GAAIs2K,GAAgBD,GAAaE,EAAmB,CAClD,IAAIlhH,OAAQ,EACRihH,GAAgBC,GAETD,EADTjhH,EAAQ8gH,EAAI/4B,WAGHm5B,IACTlhH,EAAQ8gH,EAAIK,kBAGd,IAAK,IAAIvtK,EAAI,EAAGA,EAAIosD,EAAMr1D,OAAQiJ,IAAK,CAQrC,IAPA,IAAI2zI,EAAOvnF,EAAMpsD,GACbxG,EAAOm6I,EAAKn6I,KAKZg0K,GAAoB,EACf5tK,EAAI7G,EAAI,EAAG6G,EAAIzE,EAAKpE,OAAQ6I,IAAK,CACxC,IAAI6tK,EAAWtyK,EAAKyE,GAChB8tK,EAAcb,EAAUjtK,KAAO66I,GACnC,GAAKizB,IAILF,EAAsD,MAAlCC,EAASt5B,WAAWR,EAAKn6I,MACzCg0K,GACF,KAEJ,CAEKP,EAAUzzK,IAAUg0K,IACvBP,EAAUzzK,IAAQ,EAClBgzK,EAAUxzK,KAAKQ,GAEnB,CACF,CACF,CAGA,OADA8wB,EAAMyiJ,GAAcP,EACbA,CACT,EACAV,GAAQI,eAAiB,SAAUz4E,GAOjC,IANA,IAEI+4E,EAFArxK,EAAOpG,KACP44K,EAAS,GAETC,EAAUn6E,EAAI7d,SAASi4F,aAAe,GAGjC90K,EAAI,EAAGA,EAAIoC,EAAKpE,OAAQgC,IAAK,CACpC,IAAIjE,EAAUqG,EAAKpC,GACf+0K,EAAyBh5K,EAAQ6/E,UAAY7/E,EAAQ6/E,SAASgmE,QAAQlnD,GAGxEk6E,GADEG,EACQrzB,GAEAsxB,EAEd,CAIA,OAFAS,EAAYrxK,EAAKwxK,kBAAkBiB,EAASD,GAC5Cl6E,EAAI7d,SAASi4F,YAAcF,EACpB,CACL/0K,IAAK+0K,EACLI,cAAevB,EACf1oC,MAA4B,IAArB0oC,EAAUz1K,OAErB,EAGA+0K,GAAQM,gBAAkB,SAAUH,GAClC,IAAI0B,EAAS1B,EAAQrzK,IACjBuC,EAAOpG,KACPi5K,EAAYj5K,KAAK6gF,SAASq4F,cAAgBl5K,KAAK6gF,SAASq4F,eAAiB,CAAC,EAG9E,GAAID,EAAUL,GACZ,OAAOK,EAAUL,GAOnB,IALA,IAAIhtK,EAAQ,CACVi1E,SAAU,CACRh9E,IAAK+0K,IAGA50K,EAAI,EAAGA,EAAIoC,EAAKpE,OAAQgC,IAAK,CACpC,IAAIm0K,EAAM/xK,EAAKpC,GACXm1K,EAASP,EAAO50K,KAAO0hJ,GAC3B,GAAKyzB,EAGL,IAAK,IAAIluK,EAAI,EAAGA,EAAIktK,EAAI/4B,WAAWp9I,OAAQiJ,IAAK,CAC9C,IAAI2zI,EAAOu5B,EAAI/4B,WAAWn0I,GAC1BW,EAAMgzI,EAAKn6I,MAAQm6I,CACrB,CACF,CAEA,OADAq6B,EAAUL,GAAUhtK,EACbA,CACT,EACAmrK,GAAQQ,kBAAoB,SAAUL,EAASE,EAAU14E,GAKvD,IAJA,IAAIt4F,EAAOpG,KACPy3K,EAAYP,EAAQ8B,cACpBI,EAAe,CAAC,EAChBjjG,EAAQ/vE,EAAK+vE,MACRnyE,EAAI,EAAGA,EAAIyzK,EAAUz1K,OAAQgC,IAAK,CACzC,IAAIq1K,EAAe5B,EAAUzzK,GACzBs1K,EAAUlC,EAASiC,GACnBE,EAAU76E,EAAImyD,OAAOwoB,GACzB,IAAKC,EAAS,CAEZ,IAAKC,EACH,SAGAD,EADSC,EAAQtmD,OACP,CACRxuH,KAAM40K,EACNG,gBAAgB,GAGR,CACR/0K,KAAM40K,EACN,QAAU,EAGhB,CAGA,GAAIE,IAAYD,EAAhB,CAKA,GAAIA,EAAQG,SAAWtjG,EAAM3zE,IACf,MAAX+2K,GACmB,MAAnBA,EAAQG,SACRH,EAAQG,QAAQ53K,QAAUw3K,EAAQx3K,MACnC,CAEA,IAAI43K,EAAUH,EAAQG,QAClBC,EAAUD,EAAQC,QAAUL,EAAQx3K,MAAM48F,GAE9C,GAAIi7E,IAAYD,EAAQE,YACtB,QAEJ,CACA,IAAIC,EAAcT,EAAaC,GAAgB,CAC7C5hJ,KAAM8hJ,GAERnzK,EAAK0zK,oBAAoBp7E,EAAK46E,GAC9BO,EAAYvyK,KAAOo3F,EAAImyD,OAAOwoB,GAC1BQ,EAAYvyK,MAAQuyK,EAAYvyK,KAAK2rH,SACvC4mD,EAAYvyK,KAAOuyK,EAAYvyK,KAAKyyK,SAtBtC,CAwBF,CACA,MAAO,CACLtC,UAAW2B,EAEf,EACArC,GAAQY,iBAAmB,SAAUj5E,GACnC,IAAIgzB,EAAKhzB,EAAI7d,SACTz6E,EAAOpG,KACPg6K,EAAY5zK,EAAK6zK,mBACjBC,EAAa9zK,EAAK+zK,kBAClBC,EAAW,SAAkB17E,EAAKs7E,EAAWK,GAC/C,OAAOj0K,EAAKk0K,kBAAkB57E,EAAKs7E,EAAWK,EAChD,EACIE,EAAc7oD,EAAG8oD,SACrB,GAAI97E,EAAIzf,UACN,OAAO,EAET,IAAIggB,EAAsB,UAAbyyB,EAAGx2E,MAMZu/H,EAAmB/7E,EAAI7d,SAASj1E,MACpCouK,EAAYh3K,OAAO+E,KAAK0yK,GACxB,IAAK,IAAIz2K,EAAI,EAAGA,EAAIk2K,EAAWl4K,OAAQgC,IAAK,CAC1C,IAAI02K,EAAQR,EAAWl2K,GACvB0tH,EAAGQ,UAAUwoD,GAAS,CAACvsD,GAAmBC,GAC5C,CA4BA,IA3BA,IAAIusD,EAAe,SAAsB3rK,EAAK0rK,GAC5C,OAAOhpD,EAAGQ,UAAUwoD,GAAO,GAAKlsD,GAAQx/G,EAAK0iH,EAAGQ,UAAUwoD,GAAO,GACnE,EACIE,EAAe,SAAsB5rK,EAAK0rK,GAC5C,OAAOhpD,EAAGQ,UAAUwoD,GAAO,GAAKjsD,GAAWz/G,EAAK0iH,EAAGQ,UAAUwoD,GAAO,GACtE,EACIG,EAAc,SAAqB7rK,EAAK0rK,GAC1CC,EAAa3rK,EAAK0rK,GAClBE,EAAa5rK,EAAK0rK,EACpB,EACII,EAAkB,SAAyBC,EAAQL,GACrD,IAAK,IAAIzvK,EAAI,EAAGA,EAAI8vK,EAAO/4K,OAAQiJ,IAAK,CACtC,IAAI6hJ,EAAKiuB,EAAOtsK,WAAWxD,GAC3B0vK,EAAa7tB,EAAI4tB,GACjBE,EAAa9tB,EAAI4tB,EACnB,CACF,EAOI9mF,EAAI,IACJonF,EAAW,SAAkBhsK,GAC/B,OAAQ,IAAMA,GAAOA,EAAM,KAAO7I,KAAK2I,MAAME,KAASA,EAAM4kF,GAAW,KAAN5kF,EAAa,GAAKA,CACrF,EACSY,EAAK,EAAGA,EAAKoqK,EAAUh4K,OAAQ4N,IAAM,CAC5C,IAAInL,EAAOu1K,EAAUpqK,GACjBqrK,EAAaR,EAAiBh2K,GAClC,GAAkB,MAAdw2K,EAAJ,CAGA,IAAIC,EAAWl7K,KAAKo/I,WAAW36I,GAC3BD,EAAO02K,EAAS12K,KAChB22K,EAASD,EAASE,SAClBC,OAAsB,EACG,MAAzBH,EAASI,aACXD,EAAsBH,EAASI,aAAa58E,EAAKu8E,GAClB,MAAtBA,EAAWnqB,UACpBuqB,EAAsBJ,EAAWnqB,SAInC,IAAIyqB,EAA8B,MAAlBL,EAASM,MAAgBP,EAAWn5K,MAAQ,KACxD25K,EAAqC,MAAvBJ,EACdK,EAA6B,MAAbH,EAChBI,EAAUF,GAAeC,EACzBzqB,EAAQgqB,EAAWhqB,MAIvB,GAAIzsJ,EAAKigB,QAAUk3J,IAAYn3K,EAAKo3K,SAAU,CAC5C,IAAI5zJ,EAAIyzJ,EAAcJ,EAAsBE,EAC5CV,EAAYG,EAAShzJ,GAAImzJ,GACpBM,GAAwB,MAATxqB,GAClB6pB,EAAgB7pB,EAAOkqB,EAE3B,MACEL,EAAgBG,EAAWznB,SAAU2nB,EA3BvC,CA6BF,CAMA,IADA,IAAI5sD,EAAO,CAACJ,GAAmBC,IACtB+F,EAAM,EAAGA,EAAM+lD,EAAWl4K,OAAQmyH,IAAO,CAChD,IAAI0nD,EAAU3B,EAAW/lD,GACrB2nD,EAASpqD,EAAGQ,UAAU2pD,GAC1BttD,EAAK,GAAKC,GAAQstD,EAAO,GAAIvtD,EAAK,IAClCA,EAAK,GAAKE,GAAWqtD,EAAO,GAAIvtD,EAAK,GACvC,CACAmD,EAAG8oD,SAAW9rD,GAAcH,EAAK,GAAIA,EAAK,IAK1C,IAAIwtD,EAAKrqD,EAAGQ,UACZR,EAAGsqD,aAAentD,GAAmBktD,EAAGE,iBACxC,IAAIC,EAAY9B,EAAS17E,EAAK,CAAC,SAAUq9E,EAAGE,iBAG5C,GAFAvqD,EAAGyqD,SAAWttD,GAAmBqtD,GACjCxqD,EAAG0qD,cAAgBvtD,GAAmBE,GAAWgtD,EAAGM,YAAaH,KAC5Dj9E,EAAQ,CACX,IAAIq9E,EAAkBlC,EAAS17E,EAAK,CAAC,gBAAiBq9E,EAAGE,iBACzDvqD,EAAG6qD,eAAiB1tD,GAAmBytD,GACvC5qD,EAAG8qD,oBAAsB3tD,GAAmBE,GAAWgtD,EAAGM,YAAaC,IACvE,IAAIG,EAAkBrC,EAAS17E,EAAK,CAAC,gBAAiBq9E,EAAGE,iBACzDvqD,EAAGgrD,eAAiB7tD,GAAmB4tD,GACvC/qD,EAAGirD,oBAAsB9tD,GAAmBE,GAAWgtD,EAAGM,YAAaI,GACzE,CAKA,GAAIx9E,EAAQ,CACV,IAAI29E,EAAelrD,EAAGQ,UACpB2qD,EAAWD,EAAaC,SACxBC,EAAaF,EAAaE,WAC1BC,EAAkBH,EAAaG,gBAC/Br1B,EAAWk1B,EAAal1B,SACxBj8G,EAAMmxI,EAAanxI,IACjBuxI,EAAW,CAACH,EAAUC,EAAYC,EAAiBr1B,EAAUj8G,GAAKzb,QAAO,SAAUnlB,GACrF,OAAY,MAALA,CACT,IAAGygB,OAAOyjG,GAAY,CAACZ,GAAmBC,KAC1CsD,EAAGurD,QAAUpuD,GAAmBmuD,GAChCtrD,EAAGwrD,OAAgB,MAAPzxI,GAAeA,EAAI,KAAO0iF,IAAqB1iF,EAAI,KAAO2iF,EACxE,CACA,OAAOmsD,IAAgB7oD,EAAG8oD,QAC5B,EACAzD,GAAQoG,gBAAkB,SAAUz+E,GAClC,IAAIgzB,EAAKhzB,EAAI7d,SACb6wC,EAAGonD,YAAc,GACjBpnD,EAAGQ,UAAY,CAAC,EAChBR,EAAG8oD,SAAW,KACd9oD,EAAGyqD,SAAW,KACdzqD,EAAG0qD,cAAgB,KACnB1qD,EAAG6qD,eAAiB,KACpB7qD,EAAG8qD,oBAAsB,KACzB9qD,EAAGgrD,eAAiB,KACpBhrD,EAAGirD,oBAAsB,KACzBjrD,EAAGurD,QAAU,KACbvrD,EAAGwrD,OAAS,IACd,EAkBAnG,GAAQ+C,oBAAsB,SAAUp7E,EAAKu8E,GAC3C,IAGImC,EAHAh3K,EAAOpG,KACP4+I,EAAOq8B,EACPrvK,EAAQ8yF,EAAI7d,SAASj1E,MAErBuqE,EAAQ/vE,EAAK+vE,MACb3xE,EAAO4B,EAAKg5I,WAAWR,EAAKn6I,MAAMD,KAClC64K,EAAez+B,EAAK3rB,OACpBqqD,EAAW1xK,EAAMgzI,EAAKn6I,MACtB84K,EAAmBD,GAAYA,EAASrqD,OACxCvB,EAAKhzB,EAAI7d,SACT28F,EAAkB,UAClBC,EAAS,SAAgB5/H,GAC3B,OAAS,MAALA,EACK,KACe,MAAbA,EAAEizG,QACJjzG,EAAEizG,QAEFjzG,EAAE/7C,KAEb,EACI47K,EAAgB,WAClB,IAAIC,EAAUF,EAAOH,GACjBM,EAAQH,EAAO7+B,GACnBx4I,EAAKs3K,cAAch/E,EAAKkgD,EAAKn6I,KAAMk5K,EAASC,EAC9C,EAaA,GAZIh/B,GAAmC,QAA3BA,EAAKn6I,KAAK+1J,OAAO,EAAG,IAC9B/mI,GAAK,4FAIiB,gBAApBwnJ,EAAWx2K,MAA0Bi6F,EAAI66C,WAExB,WAArB0hC,EAAWn5K,OAAsB48F,EAAIs2B,UAEhB,aAArBimD,EAAWn5K,QAAyB48F,EAAIh6F,SAASw6F,YAAcR,EAAIh5F,SAASw5F,eAC1E0/C,EAAOq8B,EAAaj7K,KAAK4sB,MAAMquJ,EAAWx2K,KAAM,SAAU44K,IAExDz+B,EAAK,UAIP,OAFAhzI,EAAMgzI,EAAKn6I,WAAQ/B,EACnBg7K,KACO,EAET,GAAI9+B,EAAK46B,eAEP,OAAK8D,IAGMA,EAASrqD,SAElBqqD,EAASvD,cAAWr3K,EACpBg7K,KACO,IANPA,KACO,GAYX,GAAI9+B,EAAKi/B,aAEP,OAAKP,IAGMA,EAASrqD,SAGlBrnH,EAAMgzI,EAAKn6I,MAAQ64K,EAASvD,SAC5B2D,KACO,IAPPA,KACO,GAYX,IAAII,EAAkB,WACpBrqJ,GAAK,4EAA8EirE,EAAIl1F,KAAO,kCAAoCo1I,EAAKn6I,KAAO,sBAAwBm6I,EAAKppE,MAAQ,eAAiBopE,EAAKppE,MAAQ,gDAAkDopE,EAAKppE,MAAQ,YAClR,EAGA,OAAQopE,EAAK66B,QAEX,KAAKtjG,EAAM4nG,QAKP,IAFA,IAUIphI,EAVA47B,EAASqmE,EAAKppE,MAAMlyE,MAAM,KAC1B4mJ,EAAWx4B,EAAGzyG,KACTjb,EAAI,EAAGA,EAAIu0E,EAAOv2E,QAAUkoJ,EAAUlmJ,IAAK,CAClD,IAAIwxE,EAAQ+C,EAAOv0E,GACnBkmJ,EAAWA,EAAS10E,EACtB,CACA,GAAgB,MAAZ00E,EAEF,OADA4zB,KACO,EAGT,IAAK37D,EAAS+nC,GAGZ,OADAz2H,GAAK,wEAA0EmrH,EAAKppE,MAAQ,KAAO00E,EAAW,UAAYxrD,EAAIl1F,KAAO,sBAC9H,EAEP,IAAIw0K,EAAap/B,EAAKq/B,SAAWr/B,EAAKs/B,SAexC,GAZIvhI,EAFiB,IAAfqhI,EAEQ,GAEC9zB,EAAWtL,EAAKs/B,UAAYF,EAKvCrhI,EAAU,EACZA,EAAU,EACDA,EAAU,IACnBA,EAAU,GAERn4C,EAAKosB,MAAO,CACd,IAAIutJ,EAAKv/B,EAAKw/B,SAAS,GACnBC,EAAKz/B,EAAK0/B,SAAS,GACnBC,EAAK3/B,EAAKw/B,SAAS,GACnBI,EAAK5/B,EAAK0/B,SAAS,GACnBG,EAAK7/B,EAAKw/B,SAAS,GACnB5rB,EAAK5T,EAAK0/B,SAAS,GACnBI,EAAyB,MAApB9/B,EAAKw/B,SAAS,GAAa,EAAIx/B,EAAKw/B,SAAS,GAClDO,EAAyB,MAApB//B,EAAK0/B,SAAS,GAAa,EAAI1/B,EAAK0/B,SAAS,GAClDM,EAAM,CAACz4K,KAAKugF,MAAMy3F,GAAME,EAAKF,GAAMxhI,GAAUx2C,KAAKugF,MAAM63F,GAAMC,EAAKD,GAAM5hI,GAAUx2C,KAAKugF,MAAM+3F,GAAMjsB,EAAKisB,GAAM9hI,GAAUx2C,KAAKugF,MAAMg4F,GAAMC,EAAKD,GAAM/hI,IACzJygI,EAAW,CAETnqD,OAAQ2rB,EAAK3rB,OAEbxuH,KAAMm6I,EAAKn6I,KACX3C,MAAO88K,EACPprB,SAAU,OAASorB,EAAI,GAAK,KAAOA,EAAI,GAAK,KAAOA,EAAI,GAAK,IAEhE,KAAO,KAAIp6K,EAAKigB,OAId,OAAO,EAHP,IAAIo6J,EAAYjgC,EAAKw/B,UAAYx/B,EAAK0/B,SAAW1/B,EAAKw/B,UAAYzhI,EAClEygI,EAAWp9K,KAAK4sB,MAAMgyH,EAAKn6I,KAAMo6K,EAAWjgC,EAAK3rB,OAAQuqD,EAG3D,CAEA,IAAKJ,EAGH,OADAU,KACO,EAETV,EAAS1D,QAAU96B,EACnBA,EAAOw+B,EAEP,MAIJ,KAAKjnG,EAAMl3D,KAKP,IAFA,IAAI6/J,EAAUlgC,EAAKppE,MAAMlyE,MAAM,KAC3By7K,EAAYrtD,EAAGzyG,KACVq+G,EAAM,EAAGA,EAAMwhD,EAAQ98K,QAAU+8K,EAAWzhD,IAAO,CAC1D,IAAIksB,EAASs1B,EAAQxhD,GACrByhD,EAAYA,EAAUv1B,EACxB,CAIA,GAHiB,MAAbu1B,IACF3B,EAAWp9K,KAAK4sB,MAAMgyH,EAAKn6I,KAAMs6K,EAAWngC,EAAK3rB,OAAQuqD,KAEtDJ,EAGH,OADAU,KACO,EAETV,EAAS1D,QAAU96B,EACnBA,EAAOw+B,EAEP,MAEJ,KAAKjnG,EAAM3zE,GAEP,IAAIA,EAAKo8I,EAAK98I,MACVk9K,EAA2B,MAAhBpgC,EAAK+6B,QAAkB/6B,EAAK+6B,QAAUn3K,EAAGk8F,GAGxD,GADAkgD,EAAKg7B,YAAcoF,EACH,MAAZA,EAEF,OADAvrJ,GAAK,sDAAwDmrH,EAAKn6I,KAAO,cAAgBi6F,EAAIl1F,KAAO,eAC7F,EAGT,GADA4zK,EAAWp9K,KAAK4sB,MAAMgyH,EAAKn6I,KAAMu6K,EAAUpgC,EAAK3rB,OAAQuqD,IACnDJ,EAEH,OADA3pJ,GAAK,sFAAwFmrH,EAAKn6I,KAAO,cAAgBi6F,EAAIl1F,KAAO,kBAC7H,EAET4zK,EAAS1D,QAAU/uF,GAAKi0D,GACxBA,EAAOw+B,EAEP,MAEJ,UAAK16K,EACH,MAGF,QACE,OAAO,EAyBX,OApBI26K,GAGAz+B,EAAKm7B,SAFHwD,EAEcD,EAASvD,SAGTuD,EAElB1xK,EAAMgzI,EAAKn6I,MAAQm6I,GAGf2+B,EAEFD,EAASvD,SAAWn7B,EAGpBhzI,EAAMgzI,EAAKn6I,MAAQm6I,EAGvB8+B,KACO,CACT,EACA3G,GAAQkI,cAAgB,SAAU72E,EAAM82E,GACtC,IAAK,IAAIl7K,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GAIf,GAHAhE,KAAKm9K,gBAAgBz+E,GACrBA,EAAI+wD,2BACJ/wD,EAAI2wD,wBACC6vB,EAKH,IAFA,IAAItzK,EAAQ8yF,EAAI7d,SAASj1E,MACrBouK,EAAYh3K,OAAO+E,KAAK6D,GACnBX,EAAI,EAAGA,EAAI+uK,EAAUh4K,OAAQiJ,IAAK,CACzC,IAAI8lH,EAAWipD,EAAU/uK,GACrBsuK,EAAU3tK,EAAMmlH,GACL,MAAXwoD,IACEA,EAAQtmD,OACVsmD,EAAQQ,SAAW,KAEnBnuK,EAAMmlH,GAAY,KAGxB,MAdAryB,EAAI7d,SAASj1E,MAAQ,CAAC,CAgB1B,CACF,EAGAmrK,GAAQ//I,OAAS,WACf,IAAI7H,EAAKnvB,KAAK6gF,SAAS1xD,GACnBi5E,EAAOj5E,EAAGgvI,kBACd/1D,EAAK24C,aACP,EAGAg2B,GAAQrS,kBAAoB,SAAUhmE,EAAK+4E,GACzC,IAAIrxK,EAAOpG,KACP0xH,EAAKhzB,EAAI7d,SACTxpB,EAAQqnC,EAAImyD,OAAO,uBAAuB/uJ,MAC1CgiE,EAAW46B,EAAImyD,OAAO,uBAAuBC,QAC7Cp7H,EAAQgpE,EAAImyD,OAAO,oBAAoBC,QAC3C,GAAIz5F,EAAMr1D,OAAS,GAAK8hE,EAAW,EAAG,CAKpC,IAJA,IAAIl4D,EAAQ,CAAC,EAGTuzK,GAAU,EACLn7K,EAAI,EAAGA,EAAIqzD,EAAMr1D,OAAQgC,IAAK,CACrC,IAAI46I,EAAOvnF,EAAMrzD,GACbo7K,EAAU1gF,EAAImyD,OAAOjS,GACrBygC,EAAW5H,EAAU74B,GACzB,GAAKygC,EAAL,CAGA,IAAIC,EAAWD,EAAS5nJ,KACpB8nJ,EAAWD,EACXE,EAA0B,MAAjBH,EAAS/3K,KAAe+3K,EAAS/3K,KAAO83K,EACjDxyE,GAAO,EACP6yE,OAAU,EACVC,EAAS,KAERH,IAKDp9D,EAASo9D,EAASzuB,UAAY3uC,EAASq9D,EAAO1uB,UAChDlkD,EAAO4yE,EAAO1uB,QAAUyuB,EAASzuB,QACjC2uB,EAAUF,EAASzuB,QAAU4uB,EAAS9yE,GAG7BuV,EAASo9D,EAASz9K,QAAUqgH,EAASq9D,EAAO19K,QACrD8qG,EAAO4yE,EAAO19K,MAAQy9K,EAASz9K,MAC/B29K,EAAUF,EAASz9K,MAAQ49K,EAAS9yE,GAG3Bh3C,EAAM2pH,EAASz9K,QAAU8zD,EAAM4pH,EAAO19K,SAC/C8qG,EAAO2yE,EAASz9K,MAAM,KAAO09K,EAAO19K,MAAM,IAAMy9K,EAASz9K,MAAM,KAAO09K,EAAO19K,MAAM,IAAMy9K,EAASz9K,MAAM,KAAO09K,EAAO19K,MAAM,GAC5H29K,EAAUF,EAAS/rB,UAIjB5mD,IACFhhG,EAAMgzI,GAAQ4gC,EAAOhsB,SACrBxzJ,KAAK2kK,YAAYjmE,EAAKkgD,EAAM6gC,GAC5BN,GAAU,GAhCZ,CAkCF,CAGA,IAAKA,EACH,OAEFztD,EAAGiuD,eAAgB,EACnB,IAAI5iC,IAAU,SAAU3oH,GAClBsB,EAAQ,EACVgpE,EAAIygD,eAAezpH,GAAOyoH,OAAO37B,UAAUxpC,KAAK5kD,GAEhDA,GAEJ,IAAG4kD,MAAK,WACN,OAAO0lB,EAAI1tE,UAAU,CACnBplB,MAAOA,EACPk4D,SAAUA,EACVi/F,OAAQrkE,EAAImyD,OAAO,8BAA8B/uJ,MACjDihB,OAAO,IACNo7H,OAAO37B,SACZ,IAAGxpC,MAAK,WAEN5yE,EAAK4+J,eAAetmE,EAAKrnC,GACzBqnC,EAAIiyD,cAAc,SAGlBj/B,EAAGiuD,eAAgB,CACrB,GACF,MAAWjuD,EAAGiuD,gBACZ3/K,KAAKglK,eAAetmE,EAAKrnC,GACzBqnC,EAAIiyD,cAAc,SAClBj/B,EAAGiuD,eAAgB,EAEvB,EACA5I,GAAQ6I,aAAe,SAAUlhF,EAAKj6F,EAAMo7K,EAAWC,EAASC,EAAYC,GAC1E,IAAIphC,EAAO5+I,KAAKo/I,WAAW36I,GACvBw7K,EAAeF,EAAWnhC,GACV,MAAhBqhC,GAAwBA,EAAaJ,EAAWC,IAClDE,EAAUphC,EAEd,EACAm4B,GAAQmJ,mBAAqB,SAAUxhF,EAAKj6F,EAAMo7K,EAAWC,GAC3D,IAAIjsJ,EAAQ7zB,KACZA,KAAK4/K,aAAalhF,EAAKj6F,EAAMo7K,EAAWC,GAAS,SAAUlhC,GACzD,OAAOA,EAAKuhC,cACd,IAAG,WACDtsJ,EAAMgtD,SAAS1xD,GAAGkxH,OAAO,SAAU3hD,EACrC,GACF,EACAq4E,GAAQqJ,mBAAqB,SAAU1hF,EAAKj6F,EAAMo7K,EAAWC,GAC3D9/K,KAAK4/K,aAAalhF,EAAKj6F,EAAMo7K,EAAWC,GAAS,SAAUlhC,GACzD,OAAOA,EAAKyhC,cACd,IAAG,SAAUzhC,GACXlgD,EAAI+wD,2BACJ/wD,EAAI2wD,yBAMJzQ,EAAK0hC,kCAA6C,gBAAT77K,GAAyC,WAAdo7K,GAAsC,WAAZC,KAAkC,YAATr7K,GAAqC,SAAdo7K,GAAoC,SAAZC,IACpKphF,EAAImrE,gBAAgBj/J,SAAQ,SAAU0hK,GAChCA,EAAQtG,mBACVsG,EAAQjd,uBAEZ,GAEJ,GACF,EACA0nB,GAAQ2G,cAAgB,SAAUh/E,EAAKj6F,EAAMo7K,EAAWC,GACtDphF,EAAIglE,kBACJ1jK,KAAKkgL,mBAAmBxhF,EAAKj6F,EAAMo7K,EAAWC,GAC9C9/K,KAAKogL,mBAAmB1hF,EAAKj6F,EAAMo7K,EAAWC,EAChD,EAEA,IAAIS,GAAU,CAIdA,YAAsB,SAAUn4E,EAAM3jG,EAAM3C,EAAO4iK,GACjD,IAAIt+J,EAAOpG,KACPq3D,EAAQ,GACRmpH,GAAW,EAGf,GAAa,MAAT/7K,GAAyB,OAATA,GAGlB,QAAc/B,IAAVZ,EACF,IAAK,IAAIkC,EAAI,EAAGA,EAAIoC,EAAKg5I,WAAWp9I,OAAQgC,IAAK,CAC/C,IAAI46I,EAAOx4I,EAAKg5I,WAAWp7I,GACvBgvK,EAAQp0B,EAAKn6I,KACbw2K,EAAaj7K,KAAK4sB,MAAMomJ,EAAOlxK,GAAO,GACtCm5K,GACF5jH,EAAMpzD,KAAKg3K,EAEf,OAEG,GAAI57J,EAAO5a,GAAO,CAEvB,IAAIg8K,EAAczgL,KAAK4sB,MAAMnoB,EAAM3C,GAAO,GACtC2+K,GACFppH,EAAMpzD,KAAKw8K,EAEf,KAAO,KAAIv+D,EAAYz9G,GAqBrB,OAAO,EAnBP,IAAIi8K,EAAiBj8K,EACrBigK,EAAoB5iK,EAEpB,IADA,IAAIsL,EAAQpK,OAAO+E,KAAK24K,GACf9wK,EAAK,EAAGA,EAAKxC,EAAMpL,OAAQ4N,IAAM,CACxC,IAAI+wK,EAASvzK,EAAMwC,GACfgxK,EAASF,EAAeC,GAK5B,QAJej+K,IAAXk+K,IAEFA,EAASF,EAAe59D,EAAW69D,UAEtBj+K,IAAXk+K,EAAsB,CACxB,IAAIC,EAAe7gL,KAAK4sB,MAAM+zJ,EAAQC,GAAQ,GAC1CC,GACFxpH,EAAMpzD,KAAK48K,EAEf,CACF,CAIF,CAGA,GAAqB,IAAjBxpH,EAAMr1D,OACR,OAAO,EAKT,IADA,IAAI8yE,GAAM,EACDq/C,EAAM,EAAGA,EAAM/rB,EAAKpmG,OAAQmyH,IAAO,CAK1C,IAHA,IAAIz1B,EAAM0J,EAAK+rB,GACXsjD,EAAY,CAAC,EACb4H,OAAW,EACNp0K,EAAI,EAAGA,EAAIosD,EAAMr1D,OAAQiJ,IAAK,CAErC,IAAI61K,EAAQzpH,EAAMpsD,GAClB,GAAIy5J,EAAmB,CACrB,IAAI4a,EAAW5gF,EAAImyD,OAAOiwB,EAAMr8K,MAChC46K,EAAW5H,EAAUqJ,EAAMr8K,MAAQ,CACjCgzB,KAAM6nJ,EAEV,CACAxqG,EAAM90E,KAAK85K,oBAAoBp7E,EAAK/T,GAAKm2F,KAAWhsG,EAChD4vF,IACF2a,EAAS/3K,KAAOo3F,EAAImyD,OAAOiwB,EAAMr8K,MAErC,CAEIqwE,GACF90E,KAAK23K,iBAAiBj5E,GAEpBgmE,GACF1kK,KAAK0kK,kBAAkBhmE,EAAK+4E,EAAW+I,EAE3C,CAEA,OAAO1rG,CACT,EAGAyrG,eAAyB,SAAUn4E,EAAM3jG,EAAM3C,GAC7C2C,EAAOo+G,EAAWp+G,GAClB,IAAK,IAAIT,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACX46I,EAAOlgD,EAAI7d,SAASj1E,MAAMnH,GAC1BD,EAAOxE,KAAKo/I,WAAW36I,GAAMD,KAC7Bu8K,EAAUv8K,EAAKosB,MACfowJ,EAAUx8K,EAAKy8K,QACfC,EAAYtiC,EAA8B,MAAhBA,EAAKkS,QAAkBlS,EAAKkS,QAAUlS,EAAK98I,MAAlD,KAClB88I,GAASA,EAAK3rB,QAIjB2rB,EAAK98I,MAAQA,EACO,MAAhB88I,EAAKkS,UACPlS,EAAKkS,QAAUhvJ,GAGf88I,EAAK4U,SADHutB,EACc,OAASj/K,EAAMgJ,KAAK,KAAO,IAClCk2K,EACOl/K,EAAMgJ,KAAK,KAEX,GAAKhJ,EAEvB9B,KAAK23K,iBAAiBj5E,IAbtB1+F,KAAK2kK,YAAYjmE,EAAKj6F,EAAM3C,GAe9B9B,KAAK09K,cAAch/E,EAAKj6F,EAAMy8K,EAAUp/K,EAC1C,CACF,EACAy+K,kBAA4B,SAAUn4E,EAAMs8D,GAC1C,OAAO1kK,KAAKglK,eAAe58D,EAAMpoG,KAAKmhL,cAAezc,EACvD,EACA6b,eAAyB,SAAUn4E,EAAM/wC,EAAOqtG,GAE9C,IADA,IAAI8b,GAAW,EACNv1K,EAAI,EAAGA,EAAIm9F,EAAKpmG,OAAQiJ,IAAK,CAGpC,IAFA,IAAIyzF,EAAM0J,EAAKn9F,GACXwsK,EAAY,CAAC,EACRzzK,EAAI,EAAGA,EAAIqzD,EAAMr1D,OAAQgC,IAAK,CACrC,IAAIS,EAAO4yD,EAAMrzD,GACb46I,EAAO5+I,KAAKo/I,WAAW36I,GACvB66K,EAAW5gF,EAAImyD,OAAOjS,EAAKn6I,MAC/B,GAAK66K,GAAaA,EAASrsD,OAA3B,CAIA,IAAInxH,EAAQ,GACRm5K,EAAaj7K,KAAK4sB,MAAMnoB,EAAM3C,GAAO,GACrCu9K,EAAW5H,EAAU74B,EAAKn6I,MAAQ,CACpCgzB,KAAM6nJ,GAERt/K,KAAK85K,oBAAoBp7E,EAAKu8E,GAC9BoE,EAAS/3K,KAAOo3F,EAAImyD,OAAOjS,EAAKn6I,KAPhC,CAQF,CAEAzE,KAAK23K,iBAAiBj5E,GAClBgmE,GACF1kK,KAAK0kK,kBAAkBhmE,EAAK+4E,EAAW+I,EAE3C,CACF,GAEIY,GAAU,CAGdA,kBAA4B,WAC1B,IAAIlyK,EAAKlP,KAAKqhL,aAAa,aAC3B,OAAU,MAANnyK,EACK4mC,WAAW5mC,GAEX,CAEX,EAGAkyK,aAAuB,SAAUrwD,GAC/B,IAAI5hG,EAAKnvB,KAAK6gF,SAAS1xD,GACnBozF,EAAapzF,EAAG2b,YAChBw2I,EAAkBnyJ,EAAGjpB,SACzB,GAAIo7K,GAAmB/+D,GAAc++D,EAAgBlgF,iBACnD,OAAOkgF,EAAgBlgF,iBAAiBmhB,GAAYg/D,iBAAiBxwD,EAEzE,GAEIywD,GAAU,CAGdA,iBAA2B,SAAU9iF,EAAKkgD,GACxC,OAAIA,EACK5+I,KAAK4kK,sBAAsBlmE,EAAKkgD,GAAM,GAEtC5+I,KAAK6kK,YAAYnmE,GAAK,EAEjC,EAGA8iF,YAAsB,SAAU9iF,EAAK+iF,GACnC,IAAIr7K,EAAOpG,KAGX,GAFA0+F,EAAMA,EAAI,GAENA,EAAK,CAEP,IADA,IAAIszB,EAAS,CAAC,EACLhuH,EAAI,EAAGA,EAAIoC,EAAKg5I,WAAWp9I,OAAQgC,IAAK,CAC/C,IAAI46I,EAAOx4I,EAAKg5I,WAAWp7I,GACvBgL,EAAM5I,EAAKw+J,sBAAsBlmE,EAAKkgD,EAAKn6I,KAAMg9K,GAC1C,MAAPzyK,IACFgjH,EAAO4sB,EAAKn6I,MAAQuK,EACpBgjH,EAAOlP,EAAW87B,EAAKn6I,OAASuK,EAEpC,CACA,OAAOgjH,CACT,CACF,EACAwvD,gBAA0B,SAAU9iF,EAAKjoF,EAAUirK,EAAaz/K,GAC9D,IAAI4uJ,EAASnyD,EAAImyD,OAAOp6I,GAAUirK,GAAaz/K,GAC/C,OAAiB,MAAV4uJ,EAAiBA,EAASnyD,EAAIvvE,KAAKvjB,QAAQy4J,mBAAmB5tJ,GAAUirK,GAAa,EAC9F,EACAF,sBAAgC,SAAU9iF,EAAKqyB,EAAU0wD,GACvD,IAAIr7K,EAAOpG,KAGX,GAFA0+F,EAAMA,EAAI,GAENA,EAAK,CACP,IAAIkgD,EAAOx4I,EAAKg5I,WAAWruB,GACvB6tB,EAAK+iC,QACP/iC,EAAOA,EAAKgjC,UAEd,IAAIp9K,EAAOo6I,EAAKp6I,KACZq9K,EAAYnjF,EAAImyD,OAAOjS,EAAKn6I,MAChC,GAAIo9K,EAAW,CACb,IAAI//K,EAAQ+/K,EAAU//K,MACpBmvJ,EAAQ4wB,EAAU5wB,MAClBuC,EAAWquB,EAAUruB,SACvB,GAAIiuB,GAAiBj9K,EAAKigB,QAAmB,MAAT3iB,GAAiBqgH,EAASrgH,GAAQ,CACpE,IAAIs7E,EAAOshB,EAAIvvE,KAAKiuD,OAChB0kG,EAAmB,SAA0B9yK,GAC/C,OAAOA,EAAMouE,CACf,EACI2kG,EAA0B,SAAiC/yK,EAAKiiJ,GAClE,OAAO6wB,EAAiB9yK,GAAOiiJ,CACjC,EACI+wB,EAAepsH,EAAM9zD,GACrBmgL,EAAYD,EAAe/wB,EAAM79D,OAAM,SAAU+W,GACnD,OAAY,MAALA,CACT,IAAc,MAAT8mD,EACL,OAAIgxB,EACED,EACKlgL,EAAM4nB,KAAI,SAAU1B,EAAGhkB,GAC5B,OAAO+9K,EAAwB/5J,EAAGipI,EAAMjtJ,GAC1C,IAAG8G,KAAK,KAEDi3K,EAAwBjgL,EAAOmvJ,GAGpC+wB,EACKlgL,EAAM4nB,KAAI,SAAU1B,GACzB,OAAO3I,EAAO2I,GAAKA,EAAI,GAAK85J,EAAiB95J,EAC/C,IAAGld,KAAK,KAED,GAAKg3K,EAAiBhgL,EAGnC,CAAO,GAAgB,MAAZ0xJ,EACT,OAAOA,CAEX,CACA,OAAO,IACT,CACF,EACAguB,uBAAiC,SAAU9iF,EAAKwjF,GAE9C,IADA,IAAIlwD,EAAS,CAAC,EACLhuH,EAAI,EAAGA,EAAIk+K,EAASlgL,OAAQgC,IAAK,CACxC,IAAIm+K,EAAUD,EAASl+K,GACnBS,EAAO09K,EAAQ19K,KACfo9K,EAAYnjF,EAAImyD,OAAOpsJ,QACT/B,IAAdm/K,IAGAA,EADE3/D,EAAY2/D,GACF7hL,KAAK4sB,MAAMnoB,EAAMo9K,EAAUruB,UAE3BxzJ,KAAK4sB,MAAMnoB,EAAMo9K,IAG7BA,IACF7vD,EAAOvtH,GAAQo9K,EAEnB,CACA,OAAO7vD,CACT,EACAwvD,aAAuB,SAAUY,GAC/B,IAAIh8K,EAAOpG,KACPgyH,EAAS,GACTpmH,EAAQw2K,EACR/qH,EAAQjxD,EAAKg5I,WACjB,GAAIxzI,EAEF,IADA,IAAIwB,EAAQpK,OAAO+E,KAAK6D,GACf5H,EAAI,EAAGA,EAAIoJ,EAAMpL,OAAQgC,IAAK,CACrC,IAAIS,EAAO2I,EAAMpJ,GACbgL,EAAMpD,EAAMnH,GACZm6I,EAAOvnF,EAAM5yD,IAAS4yD,EAAMwrD,EAAWp+G,IACvCo9K,EAAY7hL,KAAK4sB,MAAMgyH,EAAKn6I,KAAMuK,GAClC6yK,GACF7vD,EAAO/tH,KAAK49K,EAEhB,CAEF,OAAO7vD,CACT,EACAwvD,4BAAsC,SAAU9iF,EAAKs7E,EAAW1rD,GAC9D,IACI7pH,EAAMuK,EAAK+rK,EAAQsH,EACnBr+K,EAAGiH,EAFHsjH,EAAOD,EAAKnsH,QAGhB,IAAK6B,EAAI,EAAGA,EAAIg2K,EAAUh4K,OAAQgC,IAGhC,GAFAS,EAAOu1K,EAAUh2K,GACjBgL,EAAM0vF,EAAImyD,OAAOpsJ,GAAM,GACZ,MAAPuK,EAEG,GAAmB,MAAfA,EAAI8hJ,QACbviC,EAAK,GAAKC,GAAQ6zD,EAAO9zD,EAAK,IAC9BA,EAAK,GAAKE,GAAW4zD,EAAO9zD,EAAK,SAGjC,IADAwsD,EAAS/rK,EAAIwkJ,SACRvoJ,EAAI,EAAGA,EAAI8vK,EAAO/4K,OAAQiJ,IAC7Bo3K,EAAQtH,EAAOtsK,WAAWxD,GAC1BsjH,EAAK,GAAKC,GAAQ6zD,EAAO9zD,EAAK,IAC9BA,EAAK,GAAKE,GAAW4zD,EAAO9zD,EAAK,IAIvC,OAAOA,CACT,GACAizD,GAAQlH,kBAAoBkH,GAAQc,4BAEpC,IAAIC,GAAU,CACdA,eAAyB,SAAUxkE,GAEjC,IADA,IAAInyG,EAAQ5L,KACHgE,EAAI,EAAGA,EAAI+5G,EAAK/7G,OAAQgC,IAAK,CACpC,IAAIjE,EAAUg+G,EAAK/5G,GACf47E,EAAW7/E,EAAQ6/E,SACnBvoB,EAAQt3D,EAAQ6L,OAAS7L,EAAQ0sG,IACjCr/F,EAAQpK,OAAO+E,KAAKsvD,GACxBzrD,EAAMg0E,SAASA,GAEf,IAAK,IAAI30E,EAAI,EAAGA,EAAImC,EAAMpL,OAAQiJ,IAAK,CACrC,IAAIxG,EAAO2I,EAAMnC,GACbnJ,EAAQu1D,EAAM5yD,GAClBmH,EAAM6gG,IAAIhoG,EAAM3C,EAClB,CACF,CAEA,OAAO8J,CACT,EAGA22K,SAAmB,SAAUxkE,GAC3B,IAAInyG,EAAQ5L,KAGZ,OAFA4L,EAAM42K,iBACN52K,EAAM62K,eAAe1kE,GACdnyG,CACT,EAGA22K,KAAe,WAEb,IADA,IAAIxkE,EAAO,GACF/5G,EAAIhE,KAAK0iL,cAAe1+K,EAAIhE,KAAKgC,OAAQgC,IAAK,CAKrD,IAJA,IAAIm0K,EAAMn4K,KAAKgE,GACX47E,EAAWu4F,EAAIv4F,SACfvoB,EAAQ8gH,EAAI/4B,WACZ3yC,EAAM,CAAC,EACFxhG,EAAI,EAAGA,EAAIosD,EAAMr1D,OAAQiJ,IAAK,CACrC,IAAI2zI,EAAOvnF,EAAMpsD,GACjBwhG,EAAImyC,EAAKn6I,MAAQm6I,EAAK4U,QACxB,CACAz1C,EAAK95G,KAAK,CACR27E,SAAWA,EAAoBA,EAAS19E,WAAlB,OACtB0J,MAAO6gG,GAEX,CACA,OAAOsR,CACT,GAEI4kE,GAAU,CACdA,iBAA2B,SAAUtjK,GACnC,IAGIujK,EACAC,EACAC,EALA18K,EAAOpG,KACP4L,EAAQ5L,KACRoxG,EAAY,GAAK/xF,EAOrB,SAAS0jK,IAGL3xE,EADEA,EAAUpvG,OAAS4gL,EAAe5gL,OACxBovG,EAAUopD,OAAOooB,EAAe5gL,QAEhC,EAEhB,CACA,SAASghL,IAGLH,EADEA,EAAS7gL,OAAS8gL,EAAc9gL,OACvB6gL,EAASroB,OAAOsoB,EAAc9gL,QAE9B,EAEf,CACA,IAjBAovG,EAAYA,EAAUx1F,QAAQ,wBAAyB,MAiB9C,CACP,IAAIqnK,EAAqB7xE,EAAU91F,MAAM,SACzC,GAAI2nK,EACF,MAEF,IAAIC,EAAc9xE,EAAU91F,MAAM,uCAClC,IAAK4nK,EAAa,CAChBzvJ,GAAK,4GAA8G29E,GACnH,KACF,CACAwxE,EAAiBM,EAAY,GAG7B,IAAIC,EAAcD,EAAY,GAC9B,GAAoB,SAAhBC,EAAwB,CAC1B,IAAIvjG,EAAW,IAAI0rE,GAAS63B,GAC5B,GAAIvjG,EAASnI,QAAS,CACpBhkD,GAAK,2EAA6E0vJ,GAGlFJ,IACA,QACF,CACF,CAGA,IAAIK,EAAWF,EAAY,GACvBG,GAAe,EACnBR,EAAWO,EAEX,IADA,IAAI/rH,EAAQ,KACH,CACP,IAAIisH,EAAsBT,EAASvnK,MAAM,SACzC,GAAIgoK,EACF,MAEF,IAAIC,EAAaV,EAASvnK,MAAM,sCAChC,IAAKioK,EAAY,CACf9vJ,GAAK,kGAAoG2vJ,GACzGC,GAAe,EACf,KACF,CACAP,EAAgBS,EAAW,GAC3B,IAAIC,EAAUD,EAAW,GACrBn5B,EAASm5B,EAAW,GACpB3kC,EAAOx4I,EAAKg5I,WAAWokC,GAC3B,GAAK5kC,EAAL,CAOA,IAAIq8B,EAAarvK,EAAMghB,MAAM42J,EAASp5B,GACjC6wB,GAOL5jH,EAAMpzD,KAAK,CACTQ,KAAM++K,EACNx0K,IAAKo7I,IAEP44B,MAVEvvJ,GAAK,sDAAwDqvJ,GAG7DE,IANF,MALEvvJ,GAAK,gDAAkDqvJ,GAGvDE,GAgBJ,CACA,GAAIK,EAAc,CAChBN,IACA,KACF,CAGAn3K,EAAMg0E,SAASujG,GACf,IAAK,IAAIn/K,EAAI,EAAGA,EAAIqzD,EAAMr1D,OAAQgC,IAAK,CACrC,IAAI88K,EAAQzpH,EAAMrzD,GAClB4H,EAAM6gG,IAAIq0E,EAAMr8K,KAAMq8K,EAAM9xK,IAC9B,CACA+zK,GACF,CACA,OAAOn3K,CACT,EACA+2K,WAAqB,SAAUtjK,GAC7B,IAAIzT,EAAQ5L,KAGZ,OAFA4L,EAAM42K,iBACN52K,EAAM63K,iBAAiBpkK,GAChBzT,CACT,GAEI83K,GAAU,CAAC,GACf,WACE,IAAIvhE,EAAW19F,GACXy+F,EAAOC,GACPC,EAAOC,GACPsgE,EAASrgE,GACTsgE,EAASrgE,GACTtkG,EAAO,SAAc+jG,GACvB,MAAO,IAAMA,EAAS,gCACxB,EACI+6D,EAAU,SAAiB/6D,GAC7B,IAAI6gE,EAAS1hE,EAAW,SAAWe,EAAO,IAAME,EAAO,IAAMugE,EAAS,IAAMC,EAC5E,MAAO,IAAM5gE,EAAS,iCAAmCb,EAAW,gBAAkBA,EAAW,cAAgB0hE,EAAS,gBAAkBA,EAAS,OACvJ,EACIC,EAAa,CAAC,2CAA4C,WAAY,UAG1EJ,GAAQvtG,MAAQ,CACdxgD,KAAM,CACJlR,QAAQ,EACR7V,IAAK,EACLqiJ,MAAO,OACP8yB,cAAe,MAEjBpnI,QAAS,CACPl4B,QAAQ,EACR7V,IAAK,EACLD,IAAK,IACLsiJ,MAAO,IACP8yB,cAAe,KAEjBC,YAAa,CACXv/J,QAAQ,EACR7V,IAAK,EACLD,IAAK,IACLsiJ,MAAO,IACP8yB,cAAe,IACfnI,UAAU,GAEZqI,cAAe,CACbx/J,QAAQ,EACR7V,IAAK,EACLD,IAAK,EACLu1K,UAAU,GAEZC,eAAgB,CACd1/J,QAAQ,EACR7V,IAAK,EACLD,IAAK,EACLu1K,UAAU,EACVtI,UAAU,GAEZwI,cAAe,CACb3/J,QAAQ,EACR7V,KAAM,EACND,IAAK,EACLu1K,UAAU,GAEZG,eAAgB,CACd5/J,QAAQ,EACR7V,IAAK,EACLwV,SAAS,EACT8/J,UAAU,GAEZI,kBAAmB,CACjB7/J,QAAQ,EACR7V,IAAK,EACLs1K,UAAU,GAEZpyJ,SAAU,CACR0pJ,MAAO,CAAC,SAAU,WAEpB+I,SAAU,CACR9/J,QAAQ,EACR7V,IAAK,EACL4sK,MAAO,CAAC,UAEV/2J,OAAQ,CACNA,QAAQ,EACRy/J,UAAU,GAEZM,QAAS,CACP//J,QAAQ,EACRy/J,UAAU,EACVtI,UAAU,GAEZ6I,eAAgB,CACdhgK,QAAQ,EACRy/J,UAAU,EACVt1K,IAAK,EACL81K,WAAW,GAEbp7F,KAAM,CACJ7kE,QAAQ,EACR7V,IAAK,GAEP+1K,kBAAmB,CACjBlgK,QAAQ,GAGVmgK,8BAA+B,CAC7BngK,QAAQ,EACRogK,cAAc,GAGhBC,mBAAoB,CAClBrgK,QAAQ,EACRm3J,UAAU,GAGZmJ,iBAAkB,CAChBtgK,QAAQ,EACR7V,IAAK,EACLi2K,cAAc,GAEhBG,cAAe,CACbxJ,MAAO,CAAC,aAAc,WAAY,YAAa,WAAY,SAAU,WAAY,SAEnFyJ,kBAAmB,CACjBzJ,MAAO,CAAC,QAAS,SAAU,UAAW,MAAO,QAE/C0J,KAAM,CACJzgK,QAAQ,EACR7V,IAAK,EACLi2K,cAAc,EACdrJ,MAAO,CAAC,QACRI,UAAU,GAEZuJ,MAAO,CACL1gK,QAAQ,EACRogK,cAAc,EACdjJ,UAAU,GAEZwJ,aAAc,CACZ5J,MAAO,CAAC,QAAS,mBACjBI,UAAU,GAEZyJ,SAAU,CACR7J,MAAO,CAAC,SAAU,WAAY,WAAY,aAC1CI,UAAU,GAEZ0J,MAAO,CACL9J,MAAO,CAAC,OAAQ,UAAW,SAC3BI,UAAU,GAEZ2J,cAAe,CACb/J,MAAO,CAAC,YAAa,kBAAmB,QACxCI,UAAU,GAEZ4J,OAAQ,CACNhK,MAAO,CAAC,OAAQ,QAChBI,UAAU,GAEZ6J,cAAe,CACbjK,MAAO,CAAC,SAAU,QAClBI,UAAU,GAEZhrJ,MAAO,CACLA,OAAO,GAETgK,OAAQ,CACNhK,OAAO,EACPgrJ,UAAU,GAEZ7xJ,KAAM,CACJyxJ,MAAO,CAAC,QAAS,kBAAmB,oBAEtCvG,KAAM,CACJuG,MAAO,CAAC,MAAO,OAEjBkK,MAAO,CACLlK,MAAO,CAAC,MAAO,MACfI,UAAU,GAEZtpI,UAAW,CACTkpI,MAAO,CAAC,QAAS,SAAU,WAE7BjiJ,QAAS,CACPiiJ,MAAO,CAAC,OAAQ,QAAS,WAE3BmK,YAAa,CACXnK,MAAO,CAAC,QAAS,SAAU,SAAU,WAEvCplB,WAAY,CACVolB,MAAO,CAAC,SAAU,mBAAoB,WAAY,WAAY,WAAY,oBAAqB,SAEjGphJ,WAAY,CACVusH,MAAO,4CAET3sH,UAAW,CACTwhJ,MAAO,CAAC,SAAU,SAAU,YAE9BthJ,WAAY,CACVshJ,MAAO,CAAC,SAAU,OAAQ,SAAU,UAAW,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEjJoK,eAAgB,CACdpK,MAAO,CAAC,OAAQ,YAAa,WAAY,iBAE3CqK,cAAe,CACbrK,MAAO,CAAC,OAAQ,YAAa,cAE/BsK,SAAU,CACRtK,MAAO,CAAC,OAAQ,OAAQ,aAE1BuK,iBAAkB,CAChBvK,MAAO,CAAC,aAAc,aAExBwK,oBAAqB,CACnBxK,MAAO,CAAC,YAAa,iBAAkB,oBAEzCyK,UAAW,CACTzK,MAAO,CAAC,YAAa,iBAAkB,kBAAmB,eAAgB,gBAAiB,uBAAwB,yBAA0B,SAAU,UAAW,WAAY,iBAAkB,SAAU,WAAY,iBAAkB,UAAW,gBAAiB,iBAAkB,kBAAmB,WAAY,iBAAkB,UAAW,gBAAiB,MAAO,YAAa,OAAQ,UAAW,gBAAiB,MAAO,WAAY,iBAAkB,YAElc0K,aAAc,CACZ1K,MAAO,CAAC,iBAAkB,kBAAmB,YAE/C2K,sBAAuB,CACrB3K,MAAO,CAAC,UAAW,YAErB4K,WAAY,CACV5K,MAAO,CAAC,MAAO,WAAY,eAAgB,kBAAmB,iBAAkB,qBAAsB,MAAO,SAAU,SAAU,UAAW,UAAW,SAEzJ6K,UAAW,CACT7K,MAAO,CAAC,SAAU,WAEpB3vK,QAAS,CACP2vK,MAAO,CAAC,UAAW,SAErB8K,WAAY,CACV9K,MAAO,CAAC,SAAU,YAEpB+K,eAAgB,CACd/K,MAAO,CAAC,SAAU,SAAU,OAAQ,QAEtCgL,cAAe,CACbhL,MAAO,CAAC,OAAQ,WAElB9nB,OAAQ,CACN8nB,MAAO,CAAC,MAAO,SAAU,WAE3B/nB,OAAQ,CACN+nB,MAAO,CAAC,OAAQ,SAAU,UAE5BiL,cAAe,CACbjL,MAAO,CAAC,OAAQ,SAAU,QAAS,SAErC7+I,KAAM,CACJtd,QAAQ,GAEVJ,KAAM,CACJy6J,SAAS,EACT/yB,MAAO1nI,EAAK,SAEdynK,WAAY,CACVhN,SAAS,EACT/yB,MAAO1nI,EAAK,eAEdykE,QAAS,CACPg2F,SAAS,EACT/yB,MAAO1nI,EAAK,YAEd8+J,QAAS,CACPrE,SAAS,EACT/yB,MAAOo3B,EAAQ,YAEjB4I,cAAe,CACbjN,SAAS,EACT/yB,MAAOo3B,EAAQ,kBAEjB6I,WAAY,CACVlN,SAAS,EACT/yB,MAAOo3B,EAAQ,eAEjBv7K,GAAI,CACFk3K,SAAS,EACTl3K,IAAI,GAENwhE,IAAK,CACH6iH,QAAS/C,EACTgD,uBAAuB,GAEzBC,KAAM,CACJF,QAAS/C,EACTgD,uBAAuB,EACvBlL,UAAU,GAEZoL,SAAU,CACRA,UAAU,GAEZzkI,MAAO,CACL99B,QAAQ,EACRwsI,MAAO,UACP8yB,cAAe,OAEjBkD,aAAc,CACZxiK,QAAQ,EACRwsI,MAAO,UACP8yB,cAAe,MACfvI,MAAO,CAAC,OAAQ,eAElB0L,iBAAkB,CAChBziK,QAAQ,EACRm3J,UAAU,EACVuL,cAAc,EACdv4K,KAAM,EACND,IAAK,EACLu1K,UAAU,GAEZkD,cAAe,CACb5L,MAAO,CAAC,eAAgB,gBAAiB,cAE3C6L,aAAc,CACZ5iK,QAAQ,EACRm3J,UAAU,EACV3qB,MAAO,kBACP8yB,cAAe,KACfvI,MAAO,CAAC,iBAAkB,kBAAmB,2BAA4B,kBAAmB,4BAC5F8L,YAAY,EACZpwG,SAAU,SAAkBqwG,EAAQC,GAClC,OAAQD,EAAOvlL,QACb,KAAK,EAEH,MAAuB,QAAhBwlL,EAAS,IAAgC,QAAhBA,EAAS,IAAgC,QAAhBA,EAAS,IAAgC,QAAhBA,EAAS,GAC7F,KAAK,EAEH,OAAOnoK,EAAOkoK,EAAO,KAAuB,QAAhBC,EAAS,IAAgC,QAAhBA,EAAS,GAChE,QACE,OAAO,EAEb,GAEFzkB,OAAQ,CACN8jB,QAAS,CAAC,wBAA0B1kE,EAAW,cAAgBA,EAAW,YAAa,8BAAgCA,EAAW,cAAgBA,EAAW,cAAgBA,EAAW,cAAgBA,EAAW,aACnNq5D,MAAO,CAAC,SAAU,OAAQ,UAAW,WAAY,cAAe,eAAgB,gBAAiB,mBAAoB,eAAgB,gBAAiB,mBAAoB,gBAAiB,iBAAkB,oBAAqB,gBAAiB,iBAAkB,oBAAqB,gBAAiB,iBAAkB,oBAAqB,eAAgB,gBAAiB,mBAAoB,eAAgB,gBAAiB,qBAE1aiM,kBAAmB,CACjBjM,MAAO,CAAC,YAAa,SAAU,UAAW,WAAY,kBAAmB,iBAAkB,eAAgB,cAAe,kBAAmB,iBAAkB,eAAgB,gBAIjLkM,gBAAiB,CACfjjK,QAAQ,EACRm3J,UAAU,EACVhtK,IAAK,EACLsoE,SAAU,SAAkBqwG,GAC1B,IAAIvlL,EAASulL,EAAOvlL,OACpB,OAAkB,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,CACzC,IAGJ,IAAI4qG,EAAO,CACT+6E,YAAa,SAAqBC,EAAMC,GACtC,OAAa,MAARD,GAAwB,MAARC,IAAiBD,IAASC,IAGnC,GAARD,GAAqB,GAARC,GAEE,GAARD,GAAqB,GAARC,EAK1B,EACAC,IAAK,SAAaF,EAAMC,GACtB,OAAOD,GAAQC,CACjB,EACAE,cAAe,SAAuBC,EAAMC,GAC1C,IAAIC,EAAS5lE,EAAY0lE,GACrBG,EAAS7lE,EAAY2lE,GACzB,OAAOC,IAAWC,IAAWD,GAAUC,CACzC,GAQE99J,EAAIq5J,GAAQvtG,MACZiyG,EAAY,CAAC,CACf3jL,KAAM,QACND,KAAM6lB,EAAEsS,KACR0jJ,eAAgBzzE,EAAKk7E,IACrB3H,eAAgBvzE,EAAKm7E,eACpB,CACDtjL,KAAM,gBACND,KAAM6lB,EAAE48J,aACR5G,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,gBACND,KAAM6lB,EAAEs6J,kBACRtE,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,gBACND,KAAM6lB,EAAEs6J,kBACRtE,eAAgBzzE,EAAKk7E,MAEnBO,EAAc,CAAC,CACjB5jL,KAAM,eACND,KAAM6lB,EAAEsS,KACR0jJ,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,uBACND,KAAM6lB,EAAE48J,aACR5G,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,uBACND,KAAM6lB,EAAEs6J,kBACRtE,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,uBACND,KAAM6lB,EAAEs6J,kBACRtE,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,qBACND,KAAM6lB,EAAEi/D,KACR+2F,eAAgBzzE,EAAKk7E,MAEnBQ,EAAc,CAAC,CACjB7jL,KAAM,eACND,KAAM6lB,EAAEsS,KACR0jJ,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,uBACND,KAAM6lB,EAAE48J,aACR5G,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,uBACND,KAAM6lB,EAAEs6J,kBACRtE,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,uBACND,KAAM6lB,EAAEs6J,kBACRtE,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,qBACND,KAAM6lB,EAAEi/D,KACR+2F,eAAgBzzE,EAAKk7E,MAEnB7L,EAAkB,CAAC,CACrBx3K,KAAM,cACND,KAAM6lB,EAAE+P,WACRimJ,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,aACND,KAAM6lB,EAAE2P,UACRqmJ,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,cACND,KAAM6lB,EAAE6P,WACRmmJ,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,YACND,KAAM6lB,EAAEi/D,KACR+2F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,iBACND,KAAM6lB,EAAEw7J,cACRxF,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,YACND,KAAM6lB,EAAEy7J,SACRzF,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,qBACND,KAAM6lB,EAAE07J,iBACR1F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,iBACND,KAAM6lB,EAAEi/D,KACR+2F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,qBACND,KAAM6lB,EAAEi/D,KACR+2F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,cACND,KAAM6lB,EAAEo6J,eACRpE,eAAgBzzE,EAAKk7E,MAEnBzL,EAAc,CAAC,CACjB53K,KAAM,cACND,KAAM6lB,EAAEqpI,OACR2sB,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,cACND,KAAM6lB,EAAEopI,OACR4sB,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,QACND,KAAM6lB,EAAEuG,OACP,CACDnsB,KAAM,qBACND,KAAM6lB,EAAEuG,OACP,CACDnsB,KAAM,uBACND,KAAM6lB,EAAE45J,eACP,CACDx/K,KAAM,wBACND,KAAM6lB,EAAEuG,OACP,CACDnsB,KAAM,0BACND,KAAM6lB,EAAE45J,eACP,CACDx/K,KAAM,0BACND,KAAM6lB,EAAEi/D,KACR+2F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,sBACND,KAAM6lB,EAAE45J,eACP,CACDx/K,KAAM,oBACND,KAAM6lB,EAAEuG,OACP,CACDnsB,KAAM,oBACND,KAAM6lB,EAAEi/D,KACR+2F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,oBACND,KAAM6lB,EAAEs7J,YACRtF,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,wBACND,KAAM6lB,EAAE27J,oBACR3F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,qBACND,KAAM6lB,EAAEo8J,gBAEN8B,EAAW,CAAC,CACd9jL,KAAM,SACND,KAAM6lB,EAAE4qJ,KACRkL,eAAgBvzE,EAAKk7E,KACpB,CACDrjL,KAAM,cACND,KAAM6lB,EAAE4qJ,KACRkL,eAAgBvzE,EAAKk7E,MAEnBxB,EAAa,CAAC,CAChB7hL,KAAM,UACND,KAAM6lB,EAAExe,QACRs0K,eAAgBvzE,EAAKk7E,IACrBzH,eAAgBzzE,EAAKk7E,IACrBxH,iCAAiC,GAChC,CACD77K,KAAM,aACND,KAAM6lB,EAAEi8J,WACRnG,eAAgBvzE,EAAKk7E,KACpB,CACDrjL,KAAM,UACND,KAAM6lB,EAAE45J,cACR9D,eAAgBvzE,EAAK+6E,aACpB,CACDljL,KAAM,eACND,KAAM6lB,EAAE45J,eACP,CACDx/K,KAAM,uBACND,KAAM6lB,EAAEi/D,MACP,CACD7kF,KAAM,mBACND,KAAM6lB,EAAEk8J,eACRpG,eAAgBvzE,EAAKk7E,KACpB,CACDrjL,KAAM,kBACND,KAAM6lB,EAAEm8J,cACRrG,eAAgBvzE,EAAKk7E,KACpB,CACDrjL,KAAM,UACND,KAAM6lB,EAAE5F,OACR07J,eAAgBvzE,EAAKk7E,MAEnBU,EAAU,CAAC,CACb/jL,KAAM,kBACND,KAAM6lB,EAAEi/D,KACR+2F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,gBACND,KAAM6lB,EAAEuG,OACP,CACDnsB,KAAM,kBACND,KAAM6lB,EAAE45J,cACR5D,eAAgBzzE,EAAK+6E,aACpB,CACDljL,KAAM,gBACND,KAAM6lB,EAAE67J,aACR7F,eAAgBzzE,EAAKk7E,MAEnBW,EAAW,CAAC,CACdhkL,KAAM,mBACND,KAAM6lB,EAAEi/D,KACR+2F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,iBACND,KAAM6lB,EAAEuG,OACP,CACDnsB,KAAM,mBACND,KAAM6lB,EAAE45J,cACR5D,eAAgBzzE,EAAK+6E,aACpB,CACDljL,KAAM,iBACND,KAAM6lB,EAAE67J,aACR7F,eAAgBzzE,EAAKk7E,MAEnBr3G,EAAa,CAAC,CAChBhsE,KAAM,sBACND,KAAM6lB,EAAE28J,UACP,CACDviL,KAAM,sBACND,KAAM6lB,EAAEsL,MACP,CACDlxB,KAAM,mBACND,KAAM6lB,EAAEsL,MACP,CACDlxB,KAAM,6BACND,KAAM6lB,EAAE04I,SAEN2lB,EAAuB,SAA8BhqF,EAAKu8E,GAC5D,MAAyB,UAArBA,EAAWn5K,OACL48F,EAAIsiE,YAELia,EAAWnqB,OAEtB,EACI+rB,EAAW,CAAC,CACdp4K,KAAM,SACND,KAAM6lB,EAAEk6J,SACRlE,eAAgBzzE,EAAKk7E,IACrBxM,aAAcoN,GACb,CACDjkL,KAAM,QACND,KAAM6lB,EAAEk6J,SACRlE,eAAgBzzE,EAAKk7E,IACrBxM,aAAcoN,GACb,CACDjkL,KAAM,QACND,KAAM6lB,EAAE47J,UACR5F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,uBACND,KAAM6lB,EAAE68J,iBACR7G,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,mBACND,KAAM6lB,EAAEuG,OACP,CACDnsB,KAAM,kBACND,KAAM6lB,EAAEN,MACP,CACDtlB,KAAM,qBACND,KAAM6lB,EAAE45J,eACP,CACDx/K,KAAM,qBACND,KAAM6lB,EAAE+5J,eACP,CACD3/K,KAAM,kCACND,KAAM6lB,EAAEuQ,QACP,CACDn2B,KAAM,qCACND,KAAM6lB,EAAE25J,aACP,CACDv/K,KAAM,gCACND,KAAM6lB,EAAEo9J,mBACP,CACDhjL,KAAM,UACND,KAAM6lB,EAAE06J,iBACR1E,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,sBACND,KAAM6lB,EAAE46J,kBACR5E,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,mBACND,KAAM6lB,EAAEq9J,gBACRrH,eAAgBzzE,EAAKk7E,MAEnBhL,EAAa,CAAC,CAChBr4K,KAAM,eACND,KAAM6lB,EAAEuG,OACP,CACDnsB,KAAM,iBACND,KAAM6lB,EAAE45J,eACP,CACDx/K,KAAM,eACND,KAAM6lB,EAAEi/D,KACR+2F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,eACND,KAAM6lB,EAAEs7J,cAEN5I,EAAkB,CAAC,CACrBt4K,KAAM,mBACND,KAAM6lB,EAAE08J,MACP,CACDtiL,KAAM,+BACND,KAAM6lB,EAAEk7J,eACP,CACD9gL,KAAM,2BACND,KAAM6lB,EAAE85J,gBACP,CACD1/K,KAAM,+BACND,KAAM6lB,EAAEo7J,eACP,CACDhhL,KAAM,6BACND,KAAM6lB,EAAEq7J,OACP,CACDjhL,KAAM,wBACND,KAAM6lB,EAAE86J,OACP,CACD1gL,KAAM,wBACND,KAAM6lB,EAAE86J,OACP,CACD1gL,KAAM,+BACND,KAAM6lB,EAAE+6J,cACP,CACD3gL,KAAM,gCACND,KAAM6lB,EAAE+6J,cACP,CACD3gL,KAAM,oBACND,KAAM6lB,EAAEg7J,UACP,CACD5gL,KAAM,iBACND,KAAM6lB,EAAEi7J,OACP,CACD7gL,KAAM,kBACND,KAAM6lB,EAAEm7J,QACP,CACD/gL,KAAM,mBACND,KAAM6lB,EAAE66J,MACP,CACDzgL,KAAM,oBACND,KAAM6lB,EAAE66J,MACP,CACDzgL,KAAM,sBACND,KAAM6lB,EAAE86J,OACP,CACD1gL,KAAM,sBACND,KAAM6lB,EAAE86J,QAENz9B,EAAW,CAAC,CACdjjJ,KAAM,WACND,KAAM6lB,EAAEyH,SACRuuJ,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,6BACND,KAAM6lB,EAAE87J,sBACR9F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,YACND,KAAM6lB,EAAEi/D,KACR+2F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,sBACND,KAAM6lB,EAAE06J,iBACR1E,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,uBACND,KAAM6lB,EAAE06J,iBACR1E,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,aACND,KAAM6lB,EAAEi/D,KACR+2F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,sBACND,KAAM6lB,EAAE06J,iBACR1E,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,yBACND,KAAM6lB,EAAE06J,iBACR1E,eAAgBzzE,EAAKk7E,MAEnBa,EAAW,CAAC,CACdlkL,KAAM,aACND,KAAM6lB,EAAEioB,WACP,CACD7tC,KAAM,aACND,KAAM6lB,EAAEuG,OACP,CACDnsB,KAAM,YACND,KAAM6lB,EAAEN,MACP,CACDtlB,KAAM,WACND,KAAM6lB,EAAEkP,SACP,CACD90B,KAAM,eACND,KAAM6lB,EAAE45J,eACP,CACDx/K,KAAM,oBACND,KAAM6lB,EAAEm6J,SACP,CACD//K,KAAM,mBACND,KAAM6lB,EAAE5F,QACP,CACDhgB,KAAM,4BACND,KAAM6lB,EAAEuQ,QACP,CACDn2B,KAAM,+BACND,KAAM6lB,EAAE25J,aACP,CACDv/K,KAAM,cACND,KAAM6lB,EAAE+rI,WACRiqB,eAAgBzzE,EAAKk7E,IACrBxH,iCAAiC,GAChC,CACD77K,KAAM,kBACND,KAAM6lB,EAAE45J,cACR5D,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,kBACND,KAAM6lB,EAAEg9J,aACRhH,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,kBACND,KAAM6lB,EAAEg9J,aACRhH,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,0BACND,KAAM6lB,EAAEi/D,KACR+2F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,0BACND,KAAM6lB,EAAEy6J,mBACRzE,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,wBACND,KAAM6lB,EAAEm6J,QACRnE,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,oBACND,KAAM6lB,EAAEy6J,mBACRzE,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,kBACND,KAAM6lB,EAAEm6J,QACRnE,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,YACND,KAAM6lB,EAAEu6J,8BACRvE,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,yBACND,KAAM6lB,EAAEi/D,KACR+2F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,iBACND,KAAM6lB,EAAE26J,cACR3E,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,iBACND,KAAM6lB,EAAE+8J,cACR/G,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,cACND,KAAM6lB,EAAEo6J,eACRpE,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,iBACND,KAAM6lB,EAAEk4B,MACR89H,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,aACND,KAAM6lB,EAAEk4B,MACR89H,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,4BACND,KAAM6lB,EAAEi/D,KACR+2F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,4BACND,KAAM6lB,EAAEi/D,KACR+2F,eAAgBzzE,EAAKk7E,MAEnB/wB,EAAQ,CAAC,CACXtyJ,KAAM,QACND,KAAM6lB,EAAE4qJ,KACRoL,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,iBACND,KAAM6lB,EAAEs6J,kBACRtE,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,iBACND,KAAM6lB,EAAEs6J,kBACRtE,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,gBACND,KAAM6lB,EAAE45J,gBAEN7hL,EAAO,CAAC,CACVqC,KAAM,sBACND,KAAM6lB,EAAEuG,OACP,CACDnsB,KAAM,wBACND,KAAM6lB,EAAE45J,eACP,CACDx/K,KAAM,6BACND,KAAM6lB,EAAEuG,OACP,CACDnsB,KAAM,6BACND,KAAM6lB,EAAEi/D,MACP,CACD7kF,KAAM,kBACND,KAAM6lB,EAAEuG,OACP,CACDnsB,KAAM,oBACND,KAAM6lB,EAAE45J,eACP,CACDx/K,KAAM,iBACND,KAAM6lB,EAAEi/D,MACP,CACD7kF,KAAM,2BACND,KAAM6lB,EAAEuG,OACP,CACDnsB,KAAM,6BACND,KAAM6lB,EAAE45J,gBAINx4I,EAAM,GACVi4I,GAAQkF,eAAiB,GACzBn9I,EAAIxnC,KAAK,CACPQ,KAAM,WACND,KAAM6lB,EAAE06J,mBAEV,IAAK,IAAI/gL,EAAI,EAAGA,GAAK0/K,GAAQkF,eAAgB5kL,IAC3CynC,EAAIxnC,KAAK,CACPQ,KAAM,OAAST,EAAI,oBACnBQ,KAAM6lB,EAAEuG,QAEV6a,EAAIxnC,KAAK,CACPQ,KAAM,OAAST,EAAI,mBACnBQ,KAAM6lB,EAAEsyB,UAEVlR,EAAIxnC,KAAK,CACPQ,KAAM,OAAST,EAAI,sBACnBQ,KAAM6lB,EAAE45J,gBAKZ,IAAI4E,EAAY,GACZC,EAAgBpF,GAAQoF,cAAgB,CAAC,SAAU,aAAc,SAAU,cAC/E,CAAC,CACCrkL,KAAM,cACND,KAAM6lB,EAAE+7J,WACR/F,eAAgBzzE,EAAKk7E,KACpB,CACDrjL,KAAM,cACND,KAAM6lB,EAAEuG,OACP,CACDnsB,KAAM,aACND,KAAM6lB,EAAEg8J,YACPz7K,SAAQ,SAAUg0I,GACnBkqC,EAAcl+K,SAAQ,SAAUo4G,GAC9B,IAAIv+G,EAAOu+G,EAAS,IAAM47B,EAAKn6I,KAC3BD,EAAOo6I,EAAKp6I,KACd67K,EAAiBzhC,EAAKyhC,eACxBwI,EAAU5kL,KAAK,CACbQ,KAAMA,EACND,KAAMA,EACN67K,eAAgBA,GAEpB,GACF,GAAG,CAAC,GACJ,IAAIhpH,EAAQqsH,GAAQtkC,WAAa,GAAGn+I,OAAOsnL,EAAU93G,EAAY61G,EAAYkC,EAASC,EAAU1xB,EAAOslB,EAAaJ,EAAiBmM,EAAWC,EAAaC,EAAazL,EAAUC,EAAYC,EAAiBtxI,EAAKi8G,EAAUihC,EAAUE,EAAWzmL,GACjP2mL,EAAarF,GAAQsF,eAAiB,CAExCT,SAAUA,EACV93G,WAAYA,EACZ61G,WAAYA,EACZkC,QAASA,EACTC,SAAUA,EACV1xB,MAAOA,EAEPslB,YAAaA,EACbJ,gBAAiBA,EACjBmM,UAAWA,EACXC,YAAaA,EACbC,YAAaA,EAEbzL,SAAUA,EACVC,WAAYA,EACZC,gBAAiBA,EACjBtxI,IAAKA,EACLi8G,SAAUA,EAEVihC,SAAUA,EACVE,UAAWA,EACXzmL,KAAMA,GAEJ6mL,EAAiBvF,GAAQzJ,mBAAqB,CAAC,EAC/CiP,EAAgBxF,GAAQvJ,kBAAoBn3K,OAAO+E,KAAKghL,GAC5DG,EAAct+K,SAAQ,SAAU/G,GAC9BolL,EAAeplL,GAAOklL,EAAWllL,GAAK6lB,KAAI,SAAUk1H,GAClD,OAAOA,EAAKn6I,IACd,IACAskL,EAAWllL,GAAK+G,SAAQ,SAAUg0I,GAChC,OAAOA,EAAKw8B,SAAWv3K,CACzB,GACF,IAGA,IAAIslL,EAAUzF,GAAQyF,QAAU,CAAC,CAC/B1kL,KAAM,UACNm9K,SAAU,SACT,CACDn9K,KAAM,yBACNm9K,SAAU,2BACT,CACDn9K,KAAM,uBACNm9K,SAAU,yBACT,CACDn9K,KAAM,qBACNm9K,SAAU,iBACT,CACDn9K,KAAM,eACNm9K,SAAU,WACT,CACDn9K,KAAM,gBACNm9K,SAAU,WACT,CACDn9K,KAAM,cACNm9K,SAAU,WACT,CACDn9K,KAAM,iBACNm9K,SAAU,YAIZ8B,GAAQvC,cAAgB9pH,EAAM3tC,KAAI,SAAUm0B,GAC1C,OAAOA,EAAEp5C,IACX,IAGA,IAAK,IAAImL,EAAK,EAAGA,EAAKynD,EAAMr1D,OAAQ4N,IAAM,CACxC,IAAIgvI,EAAOvnF,EAAMznD,GACjBynD,EAAMunF,EAAKn6I,MAAQm6I,CACrB,CAGA,IAAK,IAAIzqB,EAAM,EAAGA,EAAMg1D,EAAQnnL,OAAQmyH,IAAO,CAC7C,IAAIwtD,EAAQwH,EAAQh1D,GAChBi1D,EAAe/xH,EAAMsqH,EAAMC,UAC3ByH,EAAY,CACd5kL,KAAMk9K,EAAMl9K,KACZk9K,OAAO,EACPC,SAAUwH,GAIZ/xH,EAAMpzD,KAAKolL,GACXhyH,EAAMsqH,EAAMl9K,MAAQ4kL,CACtB,CACD,EA5hCD,GA8hCA3F,GAAQrf,mBAAqB,SAAU5/J,GACrC,OAAOzE,KAAKspL,uBAAuB7kL,EACrC,EACAi/K,GAAQ4F,qBAAuB,WAC7B,IAAI53D,EAAK1xH,KAAK6gF,SACd,GAA4B,MAAxB6wC,EAAG63D,kBACL,OAAO73D,EAAG63D,kBA8LZ,IA5LA,IAAIC,EAAW9lE,GAAO,CAEpB,sBAAuB,OACvB,wBAAyB,IACzB,6BAA8B,OAC9B,6BAA8B,EAC9B,kBAAmB,QACnB,oBAAqB,IACrB,iBAAkB,GAClB,2BAA4B,OAC5B,6BAA8B,KAE9B,OAAU,MACV,cAAe,KACf,cAAe,MACf,cAAe,SACf,qBAAsB,OACtB,cAAe,EACf,MAAS,OACT,qBAAsB,OACtB,qBAAsB,EACtB,uBAAwB,EACxB,eAAgB,EAChB,kBAAmB,OACnB,iBAAkB,OAClB,YAAa,OACb,qBAAsB,aACtB,iBAAkB,KAClB,wBAAyB,OACzB,0BAA2B,EAC3B,wBAAyB,YACzB,0BAA2B,EAC3B,sBAAuB,EACvB,oBAAqB,EACrB,oBAAqB,QACrB,oBAAqB,OACrB,cAAe,wCACf,aAAc,SACd,cAAe,SACf,YAAa,GACb,uBAAwB,EACxB,gBAAiB,OACjB,uBAAwB,OACxB,uBAAwB,OACxB,WAAc,UACd,QAAW,UACX,QAAW,EACX,mBAAoB,OACpB,kBAAmB,OACnB,UAAW,EACX,MAAS,GACT,gBAAiB,EACjB,gBAAiB,EACjB,eAAgB,GAChB,qBAAsB,EACtB,uBAAwB,EACxB,uBAAwB,EACxB,eAAgB,GAChB,qBAAsB,EACtB,uBAAwB,EACxB,uBAAwB,EACxB,kBAAmB,EACnB,gBAAiB,OACjB,kBAAmB,GACnB,gBAAiB,kBACjB,mBAAoB,EACpB,iBAAkB,OAClB,mBAAoB,GACpB,iBAAkB,kBAClB,sBAAuB,OACvB,sBAAuB,EACvB,mBAAoB,EACpB,6BAA8B,SAE9B,qBAAsB,EACtB,mBAAoB,OACpB,kBAAmB,QACnB,qBAAsB,EACtB,mBAAoB,OACpB,+BAAgC,YAChC,2BAA4B,EAC5B,+BAAgC,SAChC,6BAA8B,MAC9B,wBAAyB,MACzB,wBAAyB,MACzB,sBAAuB,EACvB,sBAAuB,EACvB,+BAAgC,kBAChC,gCAAiC,kBACjC,oBAAqB,YACrB,iBAAkB,OAClB,kBAAmB,OACnB,mBAAoB,OACpB,oBAAqB,OACrB,eAAgB,OAChB,iBAAkB,EAClB,eAAgB,EAChB,eAAgB,QAChB,OAAU,GACV,MAAS,GACT,MAAS,UACT,uBAAwB,mCACxB,mBAAoB,EAEpB,gCAAiC,YACjC,kCAAmC,OACnC,qCAAsC,KAEtC,MAAS,KACT,iBAAkB,EAClB,iBAAkB,EAClB,gBAAiB,EAEjB,QAAW,EACX,sBAAuB,QACvB,SAAY,SACZ,6BAA8B,UAC9B,YAAa,EACb,sBAAuB,EACvB,uBAAwB,EACxB,aAAc,EACd,sBAAuB,EACvB,yBAA0B,GACzB,CAED,WAAY,QACX,CAAC,CACFj/G,KAAM,6BACN3C,MAAO,SACN,CACD2C,KAAM,4BACN3C,MAAO,MACN,CACD2C,KAAM,+BACN3C,MAAO,IACNwpB,QAAO,SAAUmhF,EAAKmyC,GACvB,IAAK,IAAI56I,EAAI,EAAGA,GAAK0/K,GAAQkF,eAAgB5kL,IAAK,CAChD,IAAIS,EAAOm6I,EAAKn6I,KAAKmX,QAAQ,QAAS5X,GAClCgL,EAAM4vI,EAAK98I,MACf2qG,EAAIhoG,GAAQuK,CACd,CACA,OAAOy9F,CACT,GAAG,CAAC,GAAI,CAEN,aAAc,QACd,aAAc,OACd,YAAa,QACb,WAAY,OACZ,eAAgB,EAChB,4BAA6B,OAC7B,+BAAgC,KAChC,0BAA2B,GAC3B,wBAAyB,GACzB,kBAAmB,GACnB,oBAAqB,GACrB,YAAa,MACb,yBAA0B,GAC1B,iBAAkB,OAClB,iBAAkB,eAClB,cAAe,WACf,kBAAmB,EACnB,cAAe,EACf,iBAAkB,SAClB,aAAc,SACd,4BAA6B,EAC7B,4BAA6B,EAC7B,kBAAmB,kBACnB,kBAAmB,kBACnB,oBAAqB,CAAC,EAAG,GACzB,mBAAoB,GACnB,CAAC,CACFhoG,KAAM,cACN3C,MAAO,QACN,CACD2C,KAAM,cACN3C,MAAO,QACN,CACD2C,KAAM,aACN3C,MAAO,WACNwpB,QAAO,SAAUmhF,EAAKmyC,GAMvB,OALA8kC,GAAQoF,cAAcl+K,SAAQ,SAAUo4G,GACtC,IAAIv+G,EAAOu+G,EAAS,IAAM47B,EAAKn6I,KAC3BuK,EAAM4vI,EAAK98I,MACf2qG,EAAIhoG,GAAQuK,CACd,IACOy9F,CACT,GAAG,CAAC,IACAg9E,EAAc,CAAC,EACVzlL,EAAI,EAAGA,EAAIhE,KAAKo/I,WAAWp9I,OAAQgC,IAAK,CAC/C,IAAI46I,EAAO5+I,KAAKo/I,WAAWp7I,GAC3B,IAAI46I,EAAKgjC,SAAT,CAGA,IAAIn9K,EAAOm6I,EAAKn6I,KACZuK,EAAMw6K,EAAS/kL,GACfw2K,EAAaj7K,KAAK4sB,MAAMnoB,EAAMuK,GAClCy6K,EAAYhlL,GAAQw2K,CAJpB,CAKF,CAEA,OADAvpD,EAAG63D,kBAAoBE,EAChB/3D,EAAG63D,iBACZ,EACA7F,GAAQgG,qBAAuB,WAC7B1pL,KAAK4/E,SAAS,WAAW6sB,IAAI,CAC3B,MAAS,YACT,QAAW,GACX,mBAAoB,OACpB,eAAgB,OAChB,eAAgB,IACf7sB,SAAS,QAAQ6sB,IAAI,CACtB,MAAS,IACR7sB,SAAS,SAAS6sB,IAAI,CACvB,cAAe,WACd7sB,SAAS,iBAAiB6sB,IAAI,CAC/B,cAAe,SACf,kBAAmB,kBACnB,kBAAmB,oBAClB7sB,SAAS,aAAa6sB,IAAI,CAC3B,mBAAoB,UACpB,aAAc,UACd,qBAAsB,UACtB,qBAAsB,UACtB,yBAA0B,UAC1B,yBAA0B,YACzB7sB,SAAS,oBAAoB6sB,IAAI,CAClC,mBAAoB,UACpB,eAAgB,YACf7sB,SAAS,WAAW6sB,IAAI,CACzB,gBAAiB,QACjB,kBAAmB,GACnB,kBAAmB,MAErBzsG,KAAK0iL,cAAgB1iL,KAAKgC,MAC5B,EAEA,IAAI2nL,GAAU,CAGdA,MAAgB,SAAUllL,EAAM3C,EAAOu7K,EAAcuM,GACnD,IAAIxjL,EAAOpG,KAGX,GAAIgiH,EAAKlgH,GACP,OAAOsE,EAAKyjL,cAAcplL,EAAM3C,EAAOu7K,EAAcuM,GAEvD,IAKI90G,EALAg1G,EAAyB,YAAfF,IAA2C,IAAfA,IAAsC,IAAfA,GAAsC,MAAdA,EAAqB,WAAaA,EACvHG,EAAY1M,EAAe,IAAM,IACjC2M,EAAW,GAAKloL,EAChBmoL,EAAU56D,GAAY5qH,EAAMulL,EAAUD,EAAWD,GACjDI,EAAY9jL,EAAK8jL,UAAY9jL,EAAK8jL,WAAa,GAgBnD,OAdMp1G,EAAMo1G,EAAUD,MACpBn1G,EAAMo1G,EAAUD,GAAW7jL,EAAKyjL,cAAcplL,EAAM3C,EAAOu7K,EAAcuM,KAKvEvM,GAA+B,YAAfuM,KAElB90G,EAAM6V,GAAK7V,GACPA,IACFA,EAAIhzE,MAAQ6oF,GAAK7V,EAAIhzE,SAIlBgzE,CACT,EACA60G,cAAwB,SAAUllL,EAAM3C,EAAOu7K,EAAcuM,GAC3D,IAAIhrC,EAAO5+I,KAAKmqL,UAAU1lL,EAAM3C,EAAOu7K,EAAcuM,GAOrD,OANKhrC,GAAiB,MAAT98I,GACX2xB,GAAK,uBAAuBxyB,OAAOwD,EAAM,MAAMxD,OAAOa,EAAO,kBAE3D88I,GAAuB,UAAdA,EAAKn6I,MAAkC,WAAdm6I,EAAKn6I,MAAgC,UAAV3C,GAC/D2xB,GAAK,iDAAmDmrH,EAAKn6I,KAAO,KAE/Dm6I,CACT,EAQA+qC,UAAoB,SAAUllL,EAAM3C,EAAOu7K,EAAcuM,GACvD,IAAIxjL,EAAOpG,KACXyE,EAAOo+G,EAAWp+G,GAElB,IAAIgS,EAAWrQ,EAAKg5I,WAAW36I,GAC3B2lL,EAActoL,EACdq0E,EAAQ/vE,EAAK+vE,MACjB,IAAK1/D,EACH,OAAO,KAET,QAAc/T,IAAVZ,EACF,OAAO,KAIL2U,EAASkrK,QACXlrK,EAAWA,EAASmrK,SACpBn9K,EAAOgS,EAAShS,MAElB,IAAIoiJ,EAAgBxnI,EAAOvd,GACvB+kJ,IAEF/kJ,EAAQA,EAAMuoL,QAEhB,IA2BIprK,EAAM8+J,EA3BNv5K,EAAOiS,EAASjS,KACpB,IAAKA,EACH,OAAO,KAIT,GAAI64K,IAA2B,KAAVv7K,GAA0B,OAAVA,GACnC,MAAO,CACL2C,KAAMA,EACN3C,MAAOA,EACPmxH,QAAQ,EACR4qD,cAAc,GAKlB,GAAI77D,EAAKlgH,GACP,MAAO,CACL2C,KAAMA,EACN3C,MAAOA,EACP0xJ,SAAU,KACVimB,OAAQtjG,EAAM3zE,GACdywH,OAAQoqD,GAMZ,IAAKx2B,GAAiB+iC,GAAc9nL,EAAME,OAAS,GAAkB,MAAbF,EAAM,QAAmB,IAAIA,EAAME,QAAU,GAAkB,MAAbF,EAAM,KAAemd,EAAO,IAAIg3D,OAAOE,EAAMl3D,KAAK0nI,OAAO3gJ,KAAKlE,IAAS,CAC/K,GAAIu7K,EACF,OAAO,EAGT,IAAI5D,EAAStjG,EAAMl3D,KACnB,MAAO,CACLxa,KAAMA,EACN3C,MAAOmd,EACPu0I,SAAU,GAAK1xJ,EACf23K,OAAQA,EACRjkG,MAAOv2D,EAAK,GACZg0G,OAAQoqD,EAEZ,CAAO,GAAIv7K,EAAME,QAAU,IAAmB,MAAbF,EAAM,KAAei8K,EAAU,IAAI9nG,OAAOE,EAAM4nG,QAAQp3B,OAAO3gJ,KAAKlE,IAAS,CAC5G,GAAIu7K,EACF,OAAO,EAET,GAAI74K,EAAKo3K,SACP,OAAO,EAGT,IAAI0O,EAAUn0G,EAAM4nG,QAGpB,IAAMv5K,EAAKosB,QAASpsB,EAAKigB,OACvB,OAAO,EAET,IAAI25J,EAAWp+K,KAAK4sB,MAAMnoB,EAAMs5K,EAAQ,IACxC,IAAKK,GAAYA,EAAS3E,OACxB,OAAO,EAGT,IAAI6E,EAAWt+K,KAAK4sB,MAAMnoB,EAAMs5K,EAAQ,IACxC,IAAKO,GAAYA,EAAS7E,OACxB,OAAO,EAIT,GAAI2E,EAASttB,UAAYwtB,EAASxtB,SAAWstB,EAAS5qB,WAAa8qB,EAAS9qB,SAE1E,OADA//H,GAAK,IAAMhvB,EAAO,KAAO3C,EAAQ,4EAA8E2C,EAAO,KAAO25K,EAAS5qB,SAAW,KAC1IxzJ,KAAK4sB,MAAMnoB,EAAM25K,EAAS5qB,UAC5B,GAAIhvJ,EAAKosB,MAAO,CACrB,IAAIkgH,EAAKstC,EAASt8K,MACdivI,EAAKutC,EAASx8K,MACdk1G,EAAO85B,EAAG,KAAOC,EAAG,IACrBD,EAAG,KAAOC,EAAG,IACbD,EAAG,KAAOC,EAAG,KAGhBD,EAAG,KAAOC,EAAG,KACA,MAATD,EAAG,IAAwB,IAAVA,EAAG,MACT,MAATC,EAAG,IAAwB,IAAVA,EAAG,KAG1B,GAAI/5B,EACF,OAAO,CAEX,CAEA,MAAO,CACLvyG,KAAMA,EACN3C,MAAOi8K,EACPvqB,SAAU,GAAK1xJ,EACf23K,OAAQ6Q,EACR90G,MAAOuoG,EAAQ,GACfG,SAAUpoI,WAAWioI,EAAQ,IAE7BE,SAAUnoI,WAAWioI,EAAQ,IAC7BK,SAAUA,EAASt8K,MACnBw8K,SAAUA,EAASx8K,MACnBmxH,OAAQoqD,EAEZ,EACA,GAAI74K,EAAKo3K,UAA2B,aAAfgO,EAA2B,CAC9C,IAAIhtC,EAQJ,GANEA,EADEiK,EACK/kJ,EAAMwB,MAAM,OACVsyD,EAAM9zD,GACRA,EAEA,CAACA,GAEN0C,EAAK2iL,cAAgBvqC,EAAK56I,OAAS,IAAM,EAC3C,OAAO,KAOT,IALA,IAAIulL,EAAS,GACTC,EAAW,GACX+C,EAAW,GACXxP,EAAS,GACTyP,GAAU,EACLxmL,EAAI,EAAGA,EAAI44I,EAAK56I,OAAQgC,IAAK,CACpC,IAAI65C,EAAIz3C,EAAKwmB,MAAMnoB,EAAMm4I,EAAK54I,GAAIq5K,EAAc,YAChDmN,EAAUA,GAAWnrK,EAAOw+B,EAAE/7C,OAC9BylL,EAAOtjL,KAAK45C,EAAE/7C,OACdyoL,EAAStmL,KAAkB,MAAb45C,EAAEizG,QAAkBjzG,EAAEizG,QAAUjzG,EAAE/7C,OAChD0lL,EAASvjL,KAAK45C,EAAEozG,OAChB8pB,IAAW/2K,EAAI,EAAI,IAAM,IAAM65C,EAAE21G,QACnC,CACA,OAAIhvJ,EAAK0yE,WAAa1yE,EAAK0yE,SAASqwG,EAAQC,GACnC,KAELhjL,EAAK8iL,YAAckD,EACC,IAAlBjD,EAAOvlL,QAAgBqd,EAAOkoK,EAAO,IAChC,CACL9iL,KAAMA,EACN3C,MAAOylL,EAAO,GACd/zB,SAAU+zB,EAAO,GACjBt0D,OAAQoqD,GAGH,KAGJ,CACL54K,KAAMA,EACN3C,MAAOylL,EACPz2B,QAASy5B,EACT/2B,SAAUunB,EACV9nD,OAAQoqD,EACRpsB,MAAOu2B,EAEX,CAGA,IAAIiD,EAAa,WACf,IAAK,IAAI76K,EAAK,EAAGA,EAAKpL,EAAKg3K,MAAMx5K,OAAQ4N,IAAM,CAC7C,IAAI86K,EAAKlmL,EAAKg3K,MAAM5rK,GACpB,GAAI86K,IAAO5oL,EACT,MAAO,CACL2C,KAAMA,EACN3C,MAAOA,EACP0xJ,SAAU,GAAK1xJ,EACfmxH,OAAQoqD,EAGd,CACA,OAAO,IACT,EAGA,GAAI74K,EAAKigB,OAAQ,CACf,IAAIwsI,EACA8yB,EAAgB,KASpB,GAPIv/K,EAAKysJ,QAEPA,EAAQzsJ,EAAKysJ,OAEXzsJ,EAAKu/K,gBACPA,EAAgBv/K,EAAKu/K,gBAElBv/K,EAAK0/K,SACR,GAAIr9B,EAAe,CACjB,IAAI8jC,EAAa,SAAWnmL,EAAKqgL,aAAe,OAAS,IACrD5zB,IACF05B,EAAa15B,GAEf,IAAI31I,EAAQxZ,EAAMwZ,MAAM,KAAOmJ,GAAS,KAAOkmK,EAAvB,OACpBrvK,IACFxZ,EAAQwZ,EAAM,GACd21I,EAAQ31I,EAAM,IAAMyoK,EAExB,MAAY9yB,IAASzsJ,EAAKu/K,gBACxB9yB,EAAQ8yB,GAOZ,GAHAjiL,EAAQg0C,WAAWh0C,GAGfiN,MAAMjN,SAAyBY,IAAf8B,EAAKg3K,MACvB,OAAO,KAKT,GAAIzsK,MAAMjN,SAAyBY,IAAf8B,EAAKg3K,MAEvB,OADA15K,EAAQsoL,EACDK,IAIT,GAAIjmL,EAAK4f,UAAYA,EAAQtiB,GAC3B,OAAO,KAIT,QAAiBY,IAAb8B,EAAKoK,MAAsB9M,EAAQ0C,EAAKoK,KAAOpK,EAAKkgL,WAAa5iL,IAAU0C,EAAKoK,WAAqBlM,IAAb8B,EAAKmK,MAAsB7M,EAAQ0C,EAAKmK,KAAOnK,EAAKomL,WAAa9oL,IAAU0C,EAAKmK,KAC1K,OAAO,KAET,IAAImmE,EAAM,CACRrwE,KAAMA,EACN3C,MAAOA,EACP0xJ,SAAU,GAAK1xJ,GAASmvJ,GAAgB,IACxCA,MAAOA,EACPh+B,OAAQoqD,GAwBV,OApBI74K,EAAK0/K,UAAsB,OAAVjzB,GAA4B,OAAVA,EACrCn8E,EAAIg8E,QAAUhvJ,EAEdgzE,EAAIg8E,QAAoB,OAAVG,GAAmBA,EAAgBjxJ,KAAK6qL,oBAAsB/oL,EAAnCA,EAI7B,OAAVmvJ,GAA4B,MAAVA,IACpBn8E,EAAIg8E,QAAoB,OAAVG,EAAiBnvJ,EAAQ,IAAOA,GAIlC,QAAVmvJ,GAA6B,QAAVA,IACrBn8E,EAAIg8E,QAAoB,QAAVG,EAAkBnvJ,EAAQ68H,GAAQ78H,IAIpC,MAAVmvJ,IACFn8E,EAAIg8E,QAAUhvJ,EAAQ,KAEjBgzE,CACT,CAAO,GAAItwE,EAAKwiL,SAAU,CACxB,IAAI3vH,EAAQ,GACRyzH,EAAW,GAAKhpL,EACpB,GAAiB,SAAbgpL,OAA4B,CAI9B,IADA,IAAIC,EAAaD,EAASxnL,MAAM,eACvB6wH,EAAM,EAAGA,EAAM42D,EAAW/oL,OAAQmyH,IAAO,CAChD,IAAIpD,EAAWg6D,EAAW52D,GAAKk2D,OAC3BjkL,EAAKg5I,WAAWruB,GAClB15D,EAAMpzD,KAAK8sH,GAEXt9F,GAAK,IAAMs9F,EAAW,iCAE1B,CACA,GAAqB,IAAjB15D,EAAMr1D,OACR,OAAO,IAEX,CACA,MAAO,CACLyC,KAAMA,EACN3C,MAAOu1D,EACPm8F,SAA2B,IAAjBn8F,EAAMr1D,OAAe,OAASq1D,EAAMvsD,KAAK,KACnDmoH,OAAQoqD,EAEZ,CAAO,GAAI74K,EAAKosB,MAAO,CACrB,IAAIo6J,EAAQvmE,GAAY3iH,GACxB,OAAKkpL,EAGE,CACLvmL,KAAMA,EACN3C,MAAOkpL,EACPl6B,QAASk6B,EACTx3B,SAAU,OAASw3B,EAAM,GAAK,IAAMA,EAAM,GAAK,IAAMA,EAAM,GAAK,IAEhE/3D,OAAQoqD,GARD,IAUX,CAAO,GAAI74K,EAAKmiJ,OAASniJ,EAAKqiL,QAAS,CAErC,GAAIriL,EAAKg3K,MAAO,CACd,IAAIyP,EAAWR,IACf,GAAIQ,EACF,OAAOA,CAEX,CAEA,IADA,IAAIpE,EAAUriL,EAAKqiL,QAAUriL,EAAKqiL,QAAU,CAACriL,EAAKmiJ,OACzCrpB,EAAM,EAAGA,EAAMupD,EAAQ7kL,OAAQs7H,IAAO,CAC7C,IAAIqpB,EAAQ,IAAI1wE,OAAO4wG,EAAQvpD,IAC3B9jH,EAAImtI,EAAM3gJ,KAAKlE,GACnB,GAAI0X,EAEF,MAAO,CACL/U,KAAMA,EACN3C,MAAO0C,EAAKsiL,sBAAwBttK,EAAE,GAAKA,EAC3Cg6I,SAAU,GAAK1xJ,EACfmxH,OAAQoqD,EAGd,CACA,OAAO,IACT,CAAO,OAAI74K,EAAK6a,OAEP,CACL5a,KAAMA,EACN3C,MAAO,GAAKA,EACZ0xJ,SAAU,GAAK1xJ,EACfmxH,OAAQoqD,GAED74K,EAAKg3K,MAEPiP,IAEA,IAEX,GAEItxJ,GAAQ,SAASA,EAAMhK,GACzB,KAAMnvB,gBAAgBm5B,GACpB,OAAO,IAAIA,EAAMhK,GAEd/sB,EAAK+sB,IAIVnvB,KAAK6gF,SAAW,CACd1xD,GAAIA,EACJ+7J,UAAW,CAAC,GAEdlrL,KAAKgC,OAAS,EACdhC,KAAKwiL,kBARH3rK,GAAM,qCASV,EACIs0K,GAAQhyJ,GAAM5xB,UAClB4jL,GAAMppE,eAAiB,WACrB,MAAO,OACT,EAGAopE,GAAMzoK,MAAQ,WAIZ,IAHA,IAAIgvG,EAAK1xH,KAAK6gF,SACV1xD,EAAKuiG,EAAGviG,GACRi5E,EAAOj5E,EAAGyqF,WACL51G,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAC/BhE,KAAKgE,QAAKtB,EAWZ,OATA1C,KAAKgC,OAAS,EACd0vH,EAAGwnD,cAAgB,CAAC,EACpBxnD,EAAGqmD,UAAY,CAAC,EAChB/3K,KAAKi/K,cAAc72E,GAAM,GACzBA,EAAKx9F,SAAQ,SAAU8zF,GACrB,IAAI0sF,EAAQ1sF,EAAI,GAAG7d,SACnBuqG,EAAMpzB,YAAa,EACnBozB,EAAM5T,kBAAmB,CAC3B,IACOx3K,IACT,EAEAmrL,GAAM3I,eAAiB,WAGrB,OAFAxiL,KAAK0iB,QACL1iB,KAAK0pL,uBACE1pL,IACT,EAGAmrL,GAAM/oL,KAAO,SAAU2uH,GACrB,OAAO/wH,KAAK6gF,SAASqqG,UAAUn6D,IAAa/wH,KAAKqkK,mBAAmBtzC,EACtE,EAGAo6D,GAAMvrG,SAAW,SAAUujG,GAEzB,IAAIvjG,EAA2B,SAAhBujG,EAAyB,KAAO,IAAI73B,GAAS63B,GACxDn/K,EAAIhE,KAAKgC,SAOb,OANAhC,KAAKgE,GAAK,CACR47E,SAAUA,EACVw/D,WAAY,GACZo5B,iBAAkB,GAClBv2K,MAAO+B,GAEFhE,IACT,EAGAmrL,GAAM1+E,IAAM,WACV,IAAIrmG,EAAOpG,KACPiT,EAAOlQ,UACX,GAAoB,IAAhBkQ,EAAKjR,OAEP,IADA,IAAI0nB,EAAMzW,EAAK,GACNjP,EAAI,EAAGA,EAAIoC,EAAKg5I,WAAWp9I,OAAQgC,IAAK,CAC/C,IAAI46I,EAAOx4I,EAAKg5I,WAAWp7I,GACvBqnL,EAAS3hK,EAAIk1H,EAAKn6I,WACP/B,IAAX2oL,IACFA,EAAS3hK,EAAIo5F,EAAW87B,EAAKn6I,aAEhB/B,IAAX2oL,GACFrrL,KAAKsrL,QAAQ1sC,EAAKn6I,KAAM4mL,EAE5B,MACyB,IAAhBp4K,EAAKjR,QACdhC,KAAKsrL,QAAQr4K,EAAK,GAAIA,EAAK,IAK7B,OAAOjT,IACT,EAEAmrL,GAAMv/K,MAAQu/K,GAAM1+E,IAGpB0+E,GAAMG,QAAU,SAAU7mL,EAAM3C,GAE9B,IAAI2U,EAAWzW,KAAK4sB,MAAMnoB,EAAM3C,GAGhC,GAAI2U,EAAU,CACZ,IAAIzS,EAAIhE,KAAKgC,OAAS,EACtBhC,KAAKgE,GAAGo7I,WAAWn7I,KAAKwS,GACxBzW,KAAKgE,GAAGo7I,WAAW3oI,EAAShS,MAAQgS,EAEhCA,EAAShS,KAAK6W,MAAM,8BAAgC7E,EAAS3U,QAC/D9B,KAAK6gF,SAASq8F,QAAS,GAErBzmK,EAASgjK,QACXz5K,KAAKgE,GAAGw0K,iBAAiBv0K,KAAKwS,GAIhC,IAAI80K,GAAyBvrL,KAAKgE,GAAG47E,SACjC2rG,IACFvrL,KAAK6gF,SAASqqG,UAAUz0K,EAAShS,MAAQgS,EAE7C,CACA,OAAOzW,IACT,EAEAmrL,GAAMtjK,OAAS,SAAUjc,GASvB,OARIy2G,EAAWz2G,GACbA,EAAM4/K,cAAcxrL,MACX41D,EAAMhqD,GACf5L,KAAKyiL,eAAe72K,GACXyT,EAAOzT,IAChB5L,KAAKyjL,iBAAiB73K,GAGjB5L,IACT,EAGAm5B,GAAMsyJ,SAAW,SAAUt8J,EAAI4uF,GAC7B,IAAInyG,EAAQ,IAAIutB,GAAMhK,GAEtB,OADAvjB,EAAM6/K,SAAS1tE,GACRnyG,CACT,EACAutB,GAAMuyJ,WAAa,SAAUv8J,EAAI9P,GAC/B,OAAO,IAAI8Z,GAAMhK,GAAIu8J,WAAWrsK,EAClC,EACA,CAAC03J,GAASwJ,GAASa,GAASI,GAASe,GAASI,GAASe,GAASiG,IAAS/+K,SAAQ,SAAUysD,GACzFqsD,GAAOynE,GAAO9zH,EAChB,IACAl+B,GAAMg9C,MAAQg1G,GAAMh1G,MACpBh9C,GAAMimH,WAAa+rC,GAAM/rC,WACzBjmH,GAAM6vJ,eAAiBmC,GAAMnC,eAC7B7vJ,GAAM8gJ,mBAAqBkR,GAAMlR,mBACjC9gJ,GAAMghJ,kBAAoBgR,GAAMhR,kBAEhC,IAAIwR,GAAW,CACb//K,MAAO,SAAeggL,GACpB,GAAIA,EAAU,CACZ,IAAIt9K,EAAItO,KAAK6rL,SAASD,GACtBt9K,EAAE0oB,QACJ,CACA,OAAOh3B,KAAK6gF,SAASj1E,KACvB,EACAigL,SAAU,SAAkBjgL,GAC1B,IAAI8lH,EAAK1xH,KAAK6gF,SAUd,OATIwhC,EAAWz2G,GACb8lH,EAAG9lH,MAAQA,EAAMkgL,cAAc9rL,MACtB41D,EAAMhqD,GACf8lH,EAAG9lH,MAAQutB,GAAMsyJ,SAASzrL,KAAM4L,GACvByT,EAAOzT,GAChB8lH,EAAG9lH,MAAQutB,GAAMuyJ,WAAW1rL,KAAM4L,GAElC8lH,EAAG9lH,MAAQutB,GAAMn5B,MAEZ0xH,EAAG9lH,KACZ,EAEAm1I,YAAa,WACX/gJ,KAAKm+J,kBAAkBpd,aACzB,GAGEgrC,GAAuB,SACvBC,GAAW,CACbllB,SAAU,SAAkBmO,GAC1B,YAAavyK,IAATuyK,EAGKj1K,KAAK6gF,SAASimF,UAFrB9mK,KAAK6gF,SAASimF,WAAWmO,EAIpBj1K,KACT,EAEA+mK,cAAe,SAAuBkO,GACpC,YAAavyK,IAATuyK,EAGKj1K,KAAK6gF,SAASkmF,eAFrB/mK,KAAK6gF,SAASkmF,gBAAgBkO,EAIzBj1K,KACT,EAEAgnK,gBAAiB,SAAyBiO,GACxC,YAAavyK,IAATuyK,EAGKj1K,KAAK6gF,SAASmmF,iBAFrBhnK,KAAK6gF,SAASmmF,kBAAkBiO,EAI3Bj1K,KACT,EAEAisL,cAAe,SAAuBC,GACpC,IAAIx6D,EAAK1xH,KAAK6gF,SAId,OAHwB,MAApB6wC,EAAGu6D,gBACLv6D,EAAGu6D,cAAgBF,SAELrpL,IAAZwpL,EAKKx6D,EAAGu6D,eAJM,aAAZC,GAAsC,WAAZA,IAC5Bx6D,EAAGu6D,cAAgBC,GAKhBlsL,KACT,EACAmsL,eAAgB,SAAwBlX,GACtC,YAAavyK,IAATuyK,EAGKj1K,KAAK6gF,SAASsrG,gBAFrBnsL,KAAK6gF,SAASsrG,iBAAiBlX,EAI1Bj1K,KACT,EAEAq+F,mBAAoB,SAA4B42E,GAC9C,YAAavyK,IAATuyK,EAGKj1K,KAAK6gF,SAASwd,oBAFrBr+F,KAAK6gF,SAASwd,qBAAqB42E,EAI9Bj1K,KACT,EAEAosL,eAAgB,SAAwBnX,GACtC,YAAavyK,IAATuyK,EAGKj1K,KAAK6gF,SAASurG,gBAFrBpsL,KAAK6gF,SAASurG,iBAAiBnX,EAI1Bj1K,KACT,EAEAi+F,mBAAoB,SAA4Bg3E,GAC9C,YAAavyK,IAATuyK,EAGKj1K,KAAK6gF,SAASod,oBAFrBj+F,KAAK6gF,SAASod,qBAAqBg3E,EAI9Bj1K,KACT,EAEAu+F,oBAAqB,SAA6B02E,GAChD,YAAavyK,IAATuyK,EAGKj1K,KAAK6gF,SAAS0d,qBAFrBv+F,KAAK6gF,SAAS0d,sBAAsB02E,EAI/Bj1K,KACT,EAEA8jF,IAAK,WACH,IAEImuD,EAAKjjI,EAAK8yJ,EAAMhiJ,EAAG6e,EAFnB1rB,EAAOlQ,UACP+gF,EAAM9jF,KAAK6gF,SAASiD,IAExB,OAAQ7wE,EAAKjR,QACX,KAAK,EAEH,OAAO8hF,EACT,KAAK,EACH,GAAIzkE,EAAOpM,EAAK,IAGd,OADAg/H,EAAMh/H,EAAK,GACJ6wE,EAAImuD,GACN,GAAI/vB,EAAYjvG,EAAK,IAAK,CAE/B,IAAKjT,KAAK6gF,SAASsrG,eACjB,OAAOnsL,KAET8hK,EAAO7uJ,EAAK,GACZ6M,EAAIgiJ,EAAKhiJ,EACT6e,EAAImjI,EAAKnjI,EACLwjF,EAASriG,KACXgkE,EAAIhkE,EAAIA,GAENqiG,EAASxjF,KACXmlD,EAAInlD,EAAIA,GAEV3+B,KAAKypG,KAAK,eACZ,CACA,MACF,KAAK,EAEH,IAAKzpG,KAAK6gF,SAASsrG,eACjB,OAAOnsL,KAETiyI,EAAMh/H,EAAK,GACXjE,EAAMiE,EAAK,GACE,MAARg/H,GAAuB,MAARA,IAAgB9vB,EAASnzG,KAC3C80E,EAAImuD,GAAOjjI,GAEbhP,KAAKypG,KAAK,gBACV,MAKJ,OADAzpG,KAAKqgJ,OAAO,YACLrgJ,IACT,EAEAw/I,MAAO,SAAe6sC,EAAM7/B,GAC1B,IAEIva,EAAKjjI,EAAK8yJ,EAAMhiJ,EAAG6e,EAFnB1rB,EAAOlQ,UACP+gF,EAAM9jF,KAAK6gF,SAASiD,IAExB,IAAK9jF,KAAK6gF,SAASsrG,eACjB,OAAOnsL,KAET,OAAQiT,EAAKjR,QACX,KAAK,EACCkgH,EAAYmqE,KAEdvqB,EAAO7uJ,EAAK,GACZ6M,EAAIgiJ,EAAKhiJ,EACT6e,EAAImjI,EAAKnjI,EACLwjF,EAASriG,KACXgkE,EAAIhkE,GAAKA,GAEPqiG,EAASxjF,KACXmlD,EAAInlD,GAAKA,GAEX3+B,KAAKypG,KAAK,iBAEZ,MACF,KAAK,EAEHwoC,EAAMo6C,EACNr9K,EAAMw9I,EACO,MAARva,GAAuB,MAARA,IAAgB9vB,EAASnzG,KAC3C80E,EAAImuD,IAAQjjI,GAEdhP,KAAKypG,KAAK,gBACV,MAKJ,OADAzpG,KAAKqgJ,OAAO,YACLrgJ,IACT,EAEA2nG,IAAK,SAAaiS,EAAUruB,GAC1B,IAAI+gG,EAAgBtsL,KAAKg1G,eAAe4E,EAAUruB,GAClD,GAAI+gG,EAAe,CACjB,IAAI56D,EAAK1xH,KAAK6gF,SACd6wC,EAAGt0C,KAAOkvG,EAAclvG,KACxBs0C,EAAG5tC,IAAMwoG,EAAcxoG,IACvB9jF,KAAKypG,KAAK,qBACVzpG,KAAKqgJ,OAAO,WACd,CACA,OAAOrgJ,IACT,EAEAg1G,eAAgB,SAAwB4E,EAAUruB,GAMhD,GALI42B,EAASvI,SAAyBl3G,IAAZ6oF,IAExBA,EAAUquB,EACVA,OAAWl3G,GAER1C,KAAK6gF,SAASsrG,gBAAmBnsL,KAAK6gF,SAASurG,eAApD,CAGA,IAAI3yG,EACJ,GAAIp6D,EAAOu6F,GAAW,CACpB,IAAIusC,EAAMvsC,EACVA,EAAW55G,KAAKmlB,EAAEghI,EACpB,MAAO,GAAI7kE,EAAYs4B,GAAW,CAEhC,IAAI2yE,EAAM3yE,EACVngC,EAAK,CACH3vC,GAAIyiJ,EAAIziJ,GACRC,GAAIwiJ,EAAIxiJ,GACRE,GAAIsiJ,EAAItiJ,GACRC,GAAIqiJ,EAAIriJ,IAEVuvC,EAAG5vE,EAAI4vE,EAAGxvC,GAAKwvC,EAAG3vC,GAClB2vC,EAAG34E,EAAI24E,EAAGvvC,GAAKuvC,EAAG1vC,EACpB,MAAYk4E,EAAoBrI,KAC9BA,EAAW55G,KAAKm+J,mBAElB,IAAIl8C,EAAoBrI,KAAaA,EAASm1B,QAA9C,CAIAt1D,EAAKA,GAAMmgC,EAASt4B,cACpB,IAEIlE,EAFAvzE,EAAI7J,KAAKwoC,QACT1nC,EAAId,KAAKyoC,SAGb,GADA8iD,EAAU42B,EAAS52B,GAAWA,EAAU,GACnCx8E,MAAMlF,KAAOkF,MAAMjO,IAAM+I,EAAI,GAAK/I,EAAI,IAAMiO,MAAM0qE,EAAG5vE,KAAOkF,MAAM0qE,EAAG34E,IAAM24E,EAAG5vE,EAAI,GAAK4vE,EAAG34E,EAAI,EAAG,CACpGs8E,EAAOj3E,KAAKyI,KAAK/E,EAAI,EAAI0hF,GAAW9R,EAAG5vE,GAAI/I,EAAI,EAAIyqF,GAAW9R,EAAG34E,GAGjEs8E,EAAOA,EAAOp9E,KAAK6gF,SAASkyF,QAAU/yK,KAAK6gF,SAASkyF,QAAU31F,EAC9DA,EAAOA,EAAOp9E,KAAK6gF,SAASiyF,QAAU9yK,KAAK6gF,SAASiyF,QAAU11F,EAC9D,IAAI0G,EAAM,CAERhkE,GAAIjW,EAAIuzE,GAAQ3D,EAAG3vC,GAAK2vC,EAAGxvC,KAAO,EAClCtL,GAAI79B,EAAIs8E,GAAQ3D,EAAG1vC,GAAK0vC,EAAGvvC,KAAO,GAEpC,MAAO,CACLkzC,KAAMA,EACN0G,IAAKA,EAET,CAtBA,CArBA,CA6CF,EACA0oG,UAAW,SAAmB59K,EAAKD,GACjC,IAAI+iH,EAAK1xH,KAAK6gF,SACd,GAAW,MAAPlyE,EAAa,CACf,IAAIw1F,EAAOv1F,EACXA,EAAMu1F,EAAKv1F,IACXD,EAAMw1F,EAAKx1F,GACb,CASA,OARIwzG,EAASvzG,IAAQuzG,EAASxzG,IAAQC,GAAOD,GAC3C+iH,EAAGohD,QAAUlkK,EACb8iH,EAAGqhD,QAAUpkK,GACJwzG,EAASvzG,SAAgBlM,IAARiM,GAAqBC,GAAO8iH,EAAGqhD,QACzDrhD,EAAGohD,QAAUlkK,EACJuzG,EAASxzG,SAAgBjM,IAARkM,GAAqBD,GAAO+iH,EAAGohD,UACzDphD,EAAGqhD,QAAUpkK,GAER3O,IACT,EACA8yK,QAAS,SAAiB11F,GACxB,YAAa16E,IAAT06E,EACKp9E,KAAK6gF,SAASiyF,QAEd9yK,KAAKwsL,UAAU,CACpB59K,IAAKwuE,GAGX,EACA21F,QAAS,SAAiB31F,GACxB,YAAa16E,IAAT06E,EACKp9E,KAAK6gF,SAASkyF,QAEd/yK,KAAKwsL,UAAU,CACpB79K,IAAKyuE,GAGX,EACA2iE,kBAAmB,SAA2Bn+H,GAC5C,IAGIvT,EACA+uE,EAJAs0C,EAAK1xH,KAAK6gF,SACV4rG,EAAa/6D,EAAG5tC,IAChB4oG,EAAch7D,EAAGt0C,KAGjBuvG,GAAO,EA2BX,GA1BKj7D,EAAG06D,iBAENO,GAAO,GAELxqE,EAASvgG,GAEXw7D,EAAOx7D,EACEsgG,EAAYtgG,KAErBw7D,EAAOx7D,EAAOgrK,MACS,MAAnBhrK,EAAOkQ,SACTzjB,EAAM+vH,GAAwBx8G,EAAOkQ,SAAU46J,EAAaD,GACxB,MAA3B7qK,EAAOw9E,mBAChB/wF,EAAMuT,EAAOw9E,kBAEJ,MAAP/wF,GAAgBqjH,EAAGy6D,iBAErBQ,GAAO,IAKXvvG,EAAOA,EAAOs0C,EAAGqhD,QAAUrhD,EAAGqhD,QAAU31F,EACxCA,EAAOA,EAAOs0C,EAAGohD,QAAUphD,EAAGohD,QAAU11F,EAGpCuvG,IAASxqE,EAAS/kC,IAASA,IAASsvG,GAAsB,MAAPr+K,KAAiB8zG,EAAS9zG,EAAIyR,KAAOqiG,EAAS9zG,EAAIswB,IACvG,OAAO,KAET,GAAW,MAAPtwB,EAAa,CAEf,IAAIw+K,EAAOJ,EACPK,EAAQJ,EACRK,EAAQ3vG,EACR4vG,EAAO,CACTltK,GAAIitK,EAAQD,GAASz+K,EAAIyR,EAAI+sK,EAAK/sK,GAAKzR,EAAIyR,EAC3C6e,GAAIouJ,EAAQD,GAASz+K,EAAIswB,EAAIkuJ,EAAKluJ,GAAKtwB,EAAIswB,GAE7C,MAAO,CACL8kD,QAAQ,EACRu8D,QAAQ,EACR5iE,KAAM2vG,EACNjpG,IAAKkpG,EAET,CAEE,MAAO,CACLvpG,QAAQ,EACRu8D,QAAQ,EACR5iE,KAAMA,EACN0G,IAAK2oG,EAGX,EACArvG,KAAM,SAAcx7D,GAClB,QAAelf,IAAXkf,EAEF,OAAO5hB,KAAK6gF,SAASzD,KAGrB,IAAI0iE,EAAK9/I,KAAK+/I,kBAAkBn+H,GAC5B8vG,EAAK1xH,KAAK6gF,SACd,OAAU,MAANi/D,GAAeA,EAAGr8D,QAGtBiuC,EAAGt0C,KAAO0iE,EAAG1iE,KACT0iE,EAAGE,SACLtuB,EAAG5tC,IAAIhkE,EAAIggI,EAAGh8D,IAAIhkE,EAClB4xG,EAAG5tC,IAAInlD,EAAImhH,EAAGh8D,IAAInlD,GAEpB3+B,KAAKypG,KAAK,QAAUq2C,EAAGE,OAAS,OAAS,IAAM,aAC/ChgJ,KAAKqgJ,OAAO,YACLrgJ,MATEA,IAWb,EAEAsjF,SAAU,SAAkB6gB,GAC1B,IAAIutB,EAAK1xH,KAAK6gF,SACVosG,GAAW,EACXC,GAAU,EACV9vF,EAAS,GACT+vF,GAAa,EACbC,GAAY,EAChB,IAAKjpF,EACH,OAAOnkG,KAQT,GANKmiH,EAAShe,EAAK/mB,QACjB6vG,GAAW,GAER/qE,EAAY/d,EAAKrgB,OACpBopG,GAAU,IAEPD,IAAaC,EAChB,OAAOltL,KAET,GAAIitL,EAAU,CACZ,IAAIl1G,EAAIosB,EAAK/mB,KACTrF,EAAI25C,EAAGohD,SAAW/6F,EAAI25C,EAAGqhD,UAAYrhD,EAAG06D,eAC1Ce,GAAa,GAEbz7D,EAAGt0C,KAAOrF,EACVqlB,EAAOn5F,KAAK,QAEhB,CACA,GAAIipL,KAAaC,IAAehpF,EAAKkpF,qBAAuB37D,EAAGy6D,eAAgB,CAC7E,IAAItuI,EAAIsmD,EAAKrgB,IACTq+B,EAAStkE,EAAE/9B,KACb4xG,EAAG5tC,IAAIhkE,EAAI+9B,EAAE/9B,EACbstK,GAAY,GAEVjrE,EAAStkE,EAAElf,KACb+yF,EAAG5tC,IAAInlD,EAAIkf,EAAElf,EACbyuJ,GAAY,GAETA,GACHhwF,EAAOn5F,KAAK,MAEhB,CAMA,OALIm5F,EAAOp7F,OAAS,IAClBo7F,EAAOn5F,KAAK,YACZjE,KAAKypG,KAAKrM,EAAOtyF,KAAK,MACtB9K,KAAKqgJ,OAAO,aAEPrgJ,IACT,EAEAyvC,OAAQ,SAAgBmqE,GACtB,IAAI91B,EAAM9jF,KAAK4/I,aAAahmC,GAM5B,OALI91B,IACF9jF,KAAK6gF,SAASiD,IAAMA,EACpB9jF,KAAKypG,KAAK,gBACVzpG,KAAKqgJ,OAAO,aAEPrgJ,IACT,EAEA4/I,aAAc,SAAsBhmC,EAAUx8B,GAC5C,GAAKp9E,KAAK6gF,SAASsrG,eAAnB,CAGA,GAAI9sK,EAAOu6F,GAAW,CACpB,IAAIh6B,EAAWg6B,EACfA,EAAW55G,KAAKm+J,kBAAkBnuI,OAAO4vD,EAC3C,MAAYqiC,EAAoBrI,KAC9BA,EAAW55G,KAAKm+J,mBAElB,GAAwB,IAApBvkD,EAAS53G,OAAb,CAIA,IAAIy3E,EAAKmgC,EAASt4B,cACdz3E,EAAI7J,KAAKwoC,QACT1nC,EAAId,KAAKyoC,SACb20C,OAAgB16E,IAAT06E,EAAqBp9E,KAAK6gF,SAASzD,KAAOA,EACjD,IAAI0G,EAAM,CAERhkE,GAAIjW,EAAIuzE,GAAQ3D,EAAG3vC,GAAK2vC,EAAGxvC,KAAO,EAClCtL,GAAI79B,EAAIs8E,GAAQ3D,EAAG1vC,GAAK0vC,EAAGvvC,KAAO,GAEpC,OAAO45C,CAXP,CATA,CAqBF,EACA2iB,MAAO,WACL,OAAKzmG,KAAK6gF,SAASsrG,gBAAmBnsL,KAAK6gF,SAASurG,gBAGpDpsL,KAAKsjF,SAAS,CACZQ,IAAK,CACHhkE,EAAG,EACH6e,EAAG,GAELy+C,KAAM,IAEDp9E,MATEA,IAUX,EAEAm2K,eAAgB,WACdn2K,KAAK6gF,SAASysG,UAAY,IAC5B,EACAhkG,KAAM,WACJ,IAAIooC,EAAK1xH,KAAK6gF,SACV/1C,EAAY4mF,EAAG5mF,UACf3b,EAAKnvB,KACT,OAAO0xH,EAAG47D,UAAY57D,EAAG47D,YAAcxiJ,EAAY,WACjD,IAAIl/B,EAAQujB,EAAGjpB,SAASk7F,iBAAiBt2D,GACrC97B,EAAM,SAAavK,GACrB,OAAOqxC,WAAWlqC,EAAM21K,iBAAiB98K,GAC3C,EACA,MAAO,CACL+jC,MAAOsC,EAAUxa,YAActhB,EAAI,gBAAkBA,EAAI,iBACzDy5B,OAAQqC,EAAUva,aAAevhB,EAAI,eAAiBA,EAAI,kBAE9D,CATmD,GAS7C,CAEJw5B,MAAO,EACPC,OAAQ,GAEZ,EACAD,MAAO,WACL,OAAOxoC,KAAKspF,OAAO9gD,KACrB,EACAC,OAAQ,WACN,OAAOzoC,KAAKspF,OAAO7gD,MACrB,EACA8kJ,OAAQ,WACN,IAAIzpG,EAAM9jF,KAAK6gF,SAASiD,IACpB1G,EAAOp9E,KAAK6gF,SAASzD,KACrBowG,EAAKxtL,KAAKytL,iBACV7qL,EAAI,CACNknC,IAAK0jJ,EAAG1jJ,GAAKg6C,EAAIhkE,GAAKs9D,EACtBnzC,IAAKujJ,EAAGvjJ,GAAK65C,EAAIhkE,GAAKs9D,EACtBrzC,IAAKyjJ,EAAGzjJ,GAAK+5C,EAAInlD,GAAKy+C,EACtBlzC,IAAKsjJ,EAAGtjJ,GAAK45C,EAAInlD,GAAKy+C,GAIxB,OAFAx6E,EAAEiH,EAAIjH,EAAEqnC,GAAKrnC,EAAEknC,GACflnC,EAAE9B,EAAI8B,EAAEsnC,GAAKtnC,EAAEmnC,GACRnnC,CACT,EACA6qL,eAAgB,WACd,IAAIjlJ,EAAQxoC,KAAKwoC,QACbC,EAASzoC,KAAKyoC,SAClB,MAAO,CACLqB,GAAI,EACJC,GAAI,EACJE,GAAIzB,EACJ0B,GAAIzB,EACJ5+B,EAAG2+B,EACH1nC,EAAG2nC,EAEP,EACAilJ,uBAAwB,SAAgCC,GACtD,OAAIA,GAAM3tL,KAAK6gF,SAAS6sG,uBAAyBC,EAC1C3tL,MAD2DA,KAAK6gF,SAAS6sG,sBAElF,GAIF1B,GAAStsC,OAASssC,GAASv8I,OAG3Bu8I,GAAS4B,cAAgB5B,GAASllB,SAClCklB,GAAS6B,mBAAqB7B,GAASjlB,cAEvC,IAAIvkK,GAAK,CACPyc,KAAM64D,GAAO74D,KAAK,CAChBu2D,MAAO,OACP+qE,aAAc,OACdC,cAAc,EACdC,cAAc,EACdE,aAAc,OACdC,sBAAsB,EACtBC,cAAe,UACfH,cAAc,EACdK,aAAa,IAEfnuC,WAAY96B,GAAO86B,WAAW,CAC5Bp9B,MAAO,OACPnyD,MAAO,OACPw9H,cAAe,UACfW,cAAc,EACdT,aAAa,IAEfr9D,QAAS5L,GAAO74D,KAAK,CACnBu2D,MAAO,UACP+qE,aAAc,UACdC,cAAc,EACdC,cAAc,EACdE,aAAc,UACdC,sBAAsB,EACtBC,cAAe,UACfH,cAAc,EACdK,aAAa,IAEfoN,cAAer2E,GAAO86B,WAAW,CAC/Bp9B,MAAO,UACPnyD,MAAO,UACPw9H,cAAe,UACfW,cAAc,EACdT,aAAa,KAKjBv+I,GAAGq0B,KAAOr0B,GAAGyc,KACbzc,GAAG6rJ,WAAa7rJ,GAAGowG,WAEnB,IAAIk7E,GAAO,SAAc3pF,GACvB,IAAIh1E,EAAKnvB,KACTmkG,EAAOuf,GAAO,CAAC,EAAGvf,GAClB,IAAIr5D,EAAYq5D,EAAKr5D,UAIjBA,IAAcs3E,EAAYt3E,IAAcs3E,EAAYt3E,EAAU,MAChEA,EAAYA,EAAU,IAExB,IAAIijJ,EAAMjjJ,EAAYA,EAAU2rI,OAAS,KACzCsX,EAAMA,GAAO,CAAC,EACVA,GAAOA,EAAI5+J,KACb4+J,EAAI5+J,GAAGq0D,UACPuqG,EAAM,CAAC,GAGT,IAAIC,EAAUD,EAAIC,QAAUD,EAAIC,SAAW,GACvCljJ,IACFA,EAAU2rI,OAASsX,GAErBA,EAAI5+J,GAAKA,EACT,IAAI8+J,OAAmBvrL,IAAZ++G,QAAuC/+G,IAAdooC,IAA4Bq5D,EAAKwuD,SACjEhzJ,EAAUwkG,EACdxkG,EAAQwoG,OAASub,GAAO,CACtBj/G,KAAMwpL,EAAO,OAAS,QACrBtuL,EAAQwoG,QACXxoG,EAAQ43D,SAAWmsD,GAAO,CACxBj/G,KAAMwpL,EAAO,SAAW,QACvBtuL,EAAQ43D,UACX,IAAI22H,EAAS,SAAgBzgL,EAAKuB,EAAKm/K,GACrC,YAAYzrL,IAARsM,EACKA,OACatM,IAAXyrL,EACFA,EAEA1gL,CAEX,EACIikH,EAAK1xH,KAAK6gF,SAAW,CACvB/1C,UAAWA,EAEXi8B,OAAO,EAEPpnE,QAASA,EAETi6G,SAAU,IAAIxmG,GAAWpT,MAEzB+xH,UAAW,GAEXshD,QAAS,IAAIjgK,GAAWpT,MAExBif,KAAMtf,EAAQsf,MAAQ,CAAC,EAEvBykE,QAAS,CAAC,EAEVykB,OAAQ,KACR5wC,SAAU,KACV8T,WAAW,EAEX0pG,sBAAsB,EAEtBjC,QAAS,MACTC,QAAS,KACTqZ,eAAgB8B,GAAO,EAAMvuL,EAAQysL,gBACrCnuF,mBAAoBiwF,GAAO,EAAMvuL,EAAQs+F,oBACzCkuF,eAAgB+B,GAAO,EAAMvuL,EAAQwsL,gBACrC9tF,mBAAoB6vF,GAAO,EAAMvuL,EAAQ0+F,oBACzCE,oBAAqB2vF,GAAO,EAAMvuL,EAAQ4+F,qBAC1CuoE,SAAUonB,GAAO,EAAOvuL,EAAQmnK,SAAUnnK,EAAQiuL,eAClD7mB,cAAemnB,GAAO,EAAOvuL,EAAQonK,cAAepnK,EAAQkuL,oBAC5D7mB,gBAAiBknB,GAAO,EAAOvuL,EAAQqnK,iBACvC/nB,kBAAuCv8I,IAAzB/C,EAAQs/I,aAA6BgvC,EAAOtuL,EAAQs/I,aAClE7hE,KAAM+kC,EAASxiH,EAAQy9E,MAAQz9E,EAAQy9E,KAAO,EAC9C0G,IAAK,CACHhkE,EAAGoiG,EAAYviH,EAAQmkF,MAAQq+B,EAASxiH,EAAQmkF,IAAIhkE,GAAKngB,EAAQmkF,IAAIhkE,EAAI,EACzE6e,EAAGujF,EAAYviH,EAAQmkF,MAAQq+B,EAASxiH,EAAQmkF,IAAInlD,GAAKh/B,EAAQmkF,IAAInlD,EAAI,GAE3E3N,UAAW,CAET5Q,QAAS,GACT2C,MAAO,IAET6qI,kBAAkB,EAClB8/B,uBAAwBQ,EAAO,IAAKvuL,EAAQ+tL,yBAE9C1tL,KAAKgzH,gBAGLhzH,KAAKisL,cAActsL,EAAQssL,eAG3BjsL,KAAKwsL,UAAU,CACb59K,IAAKjP,EAAQmzK,QACbnkK,IAAKhP,EAAQozK,UAEf,IAAIqb,EAAc,SAAqBC,EAAS/mL,GAC9C,IAAIgnL,EAAeD,EAAQtpG,KAAKy9B,GAChC,GAAI8rE,EACF,OAAOvxC,GAAU5jI,IAAIk1K,GAASr1G,KAAK1xE,GAEnCA,EAAK+mL,EAET,EAGI38D,EAAGutB,cACL9vH,EAAG08J,SAAS,IAId,IAAI0C,EAAkB7qE,GAAO,CAAC,EAAG/jH,EAASA,EAAQ43D,UAClDpoC,EAAGinJ,aAAamY,GAChB,IAAIC,EAAmB,SAA0B50E,EAAU/L,EAAQ4gF,GACjEt/J,EAAG6lJ,eAAc,GAGjB,IAAI0Z,EAAUv/J,EAAGgvI,kBACbuwB,EAAQ1sL,OAAS,GACnB0sL,EAAQ9xG,SAEM,MAAZg9B,IACEsI,EAAYtI,IAAahkD,EAAMgkD,KACjCzqF,EAAG5uB,IAAIq5G,GAGXzqF,EAAGusD,IAAI,eAAe,SAAUz1E,GAC9BkpB,EAAG6lJ,eAAc,GACjB7lJ,EAAGs6E,KAAKxjG,GAERkpB,EAAGusD,IAAI,OAAQmyB,GACf1+E,EAAGwhI,cAAc,OACnB,IAAGj1E,IAAI,cAAc,WACnBvsD,EAAGusD,IAAI,OAAQ+yG,GACft/J,EAAGs6E,KAAK,OACV,IACA,IAAIklF,EAAajrE,GAAO,CAAC,EAAGv0F,EAAG0xD,SAASlhF,QAAQwoG,QAChDwmF,EAAWvmF,KAAOj5E,EAAGyqF,WACrBzqF,EAAGg5E,OAAOwmF,GAAYzrK,KACxB,EACAkrK,EAAY,CAACzuL,EAAQiM,MAAOjM,EAAQi6G,WAAW,SAAUg1E,GACvD,IAAI94J,EAAY84J,EAAM,GAClBC,EAAWD,EAAM,GAGjBl9D,EAAGutB,cACL9vH,EAAGvjB,QAAQic,OAAOiO,GAIpB04J,EAAiBK,GAAU,WAEzB1/J,EAAG6kJ,qBACHtiD,EAAG3qD,OAAQ,EAGPi7C,EAAKriH,EAAQonE,QACf53C,EAAGs0C,GAAG,QAAS9jE,EAAQonE,OAIzB,IAAK,IAAI/iE,EAAI,EAAGA,EAAIgqL,EAAQhsL,OAAQgC,IAAK,CACvC,IAAIxB,EAAKwrL,EAAQhqL,GACjBmrB,EAAGs0C,GAAG,QAASjhE,EACjB,CACIurL,IACFA,EAAIC,QAAU,IAGhB7+J,EAAGs6E,KAAK,QACV,GAAG9pG,EAAQ0J,KACb,GACF,EACIylL,GAAShB,GAAKvmL,UAElBm8G,GAAOorE,GAAQ,CACb/sE,eAAgB,WACd,MAAO,MACT,EACAgtE,QAAS,WACP,OAAO/uL,KAAK6gF,SAAS9Z,KACvB,EACAsE,UAAW,WACT,OAAOrrE,KAAK6gF,SAASxV,SACvB,EACAtE,MAAO,SAAevkE,GAMpB,OALIxC,KAAK+uL,UACP/uL,KAAK29J,UAAUl0D,KAAK,QAAS,GAAIjnG,GAEjCxC,KAAKyjE,GAAG,QAASjhE,GAEZxC,IACT,EACAwjF,QAAS,WACP,IAAIr0D,EAAKnvB,KACT,IAAImvB,EAAGk8C,YAKP,OAJAl8C,EAAG2kJ,oBACH3kJ,EAAGonJ,kBACHv2K,KAAKypG,KAAK,WACVt6E,EAAG0xD,SAASxV,WAAY,EACjBl8C,CACT,EACAkpG,iBAAkB,SAA0B7uH,GAC1C,OAAOxJ,KAAK6gF,SAAS+4B,SAASye,iBAAiB7uH,EACjD,EACA2yG,eAAgB,SAAwB3yG,GACtC,OAAOxJ,KAAK6gF,SAAS+4B,SAASuC,eAAe3yG,EAC/C,EACAokJ,iBAAkB,WAChB,OAAO5tJ,KAAK6gF,SAAS+sE,gBACvB,EACA+E,SAAU,WACR,OAAO3yJ,KAAK6gF,SAAStpB,SAASy3H,YAChC,EACA/vC,aAAc,WACZ,OAAOj/I,KAAK6gF,SAASo+D,YACvB,EACAisB,UAAW,SAAmB9iE,GAE5B,OADApoG,KAAK6gF,SAAS+4B,SAASoE,MAAM5V,GACtBpoG,IACT,EAEA+rK,eAAgB,SAAwB3jE,GAEtC,OADApoG,KAAK6gF,SAAS+4B,SAAS2lD,QAAQn3D,GACxBpoG,IACT,EACA8qC,UAAW,WACT,OAAO9qC,KAAK6gF,SAAS/1C,WAAa,IACpC,EACA5kC,OAAQ,WACN,IAAI4kC,EAAY9qC,KAAK6gF,SAAS/1C,UAC9B,GAAiB,MAAbA,EAAmB,OAAO22E,EAC9B,IAAI1/B,EAAgB/hF,KAAK6gF,SAAS/1C,UAAUi3C,cAC5C,YAAsBr/E,IAAlBq/E,GAAgD,MAAjBA,EAC1B0/B,EAEF1/B,EAAcktG,aAAextE,CACtC,EACAytE,MAAO,SAAepkJ,GACpB,GAAiB,MAAbA,EAAJ,CAGA,IAAI3b,EAAKnvB,KACL0xH,EAAKviG,EAAG0xD,SACRlhF,EAAU+xH,EAAG/xH,QAgBjB,OAfKyiH,EAAYt3E,IAAcs3E,EAAYt3E,EAAU,MACnDA,EAAYA,EAAU,IAExB3b,EAAG2kJ,oBACH3kJ,EAAGonJ,kBACH7kD,EAAG5mF,UAAYA,EACf4mF,EAAGutB,cAAe,EAClB9vH,EAAGgnJ,iBACHhnJ,EAAGinJ,aAAa1yD,GAAO,CAAC,EAAG/jH,EAASA,EAAQ43D,SAAU,CAEpD9yD,KAAgC,SAA1B9E,EAAQ43D,SAAS9yD,KAAkB,SAAW9E,EAAQ43D,SAAS9yD,QAEvE0qB,EAAG6kJ,qBACH7kJ,EAAGvjB,MAAMjM,EAAQiM,OACjBujB,EAAGs6E,KAAK,SACDt6E,CAnBP,CAoBF,EACAggK,QAAS,WACP,IAAIhgK,EAAKnvB,KAOT,OANAmvB,EAAG2kJ,oBACH3kJ,EAAGonJ,kBACHpnJ,EAAGinJ,aAAa,CACd3xK,KAAM,SAER0qB,EAAGs6E,KAAK,WACDt6E,CACT,EACAxvB,QAAS,WACP,OAAOgrF,GAAK3qF,KAAK6gF,SAASlhF,QAC5B,EACAo+G,KAAM,SAAcv+F,GAClB,IAAI2P,EAAKnvB,KACL0xH,EAAKviG,EAAG0xD,SACRunB,EAAOj5E,EAAGgvI,kBACVixB,EAAc,SAAqB1wF,GACrC,OAAOvvE,EAAGgtF,eAAezd,EAAIl1F,KAC/B,EACA,GAAI04G,EAAY1iG,GAAM,CAIpB,GADA2P,EAAGglF,aACC30F,EAAIo6F,SAAU,CAChB,IAAIy1E,EAAW,CAAC,EACZC,EAAa,SAAoBtkB,EAAOukB,GAG1C,IAFA,IAAIzwB,EAAQ,GACR0wB,EAAQ,GACHxrL,EAAI,EAAGA,EAAIgnK,EAAMhpK,OAAQgC,IAAK,CACrC,IAAI+5G,EAAOitD,EAAMhnK,GACjB,GAAK+5G,EAAK9+F,KAAKzV,GAAf,CAIA,IAAIA,EAAK,GAAKu0G,EAAK9+F,KAAKzV,GACpBk1F,EAAMvvE,EAAGgtF,eAAe3yG,GAC5B6lL,EAAS7lL,IAAM,EACI,IAAfk1F,EAAI18F,OAENwtL,EAAMvrL,KAAK,CACTy6F,IAAKA,EACLqf,KAAMA,IAIJwxE,GACFxxE,EAAK7iE,MAAQq0I,EACbzwB,EAAM76J,KAAK85G,IAEX+gD,EAAM76J,KAAK85G,EAhBf,MAFEtqF,GAAK,2DAqBT,CACAtE,EAAG5uB,IAAIu+J,GACP,IAAK,IAAIlvJ,EAAK,EAAGA,EAAK4/K,EAAMxtL,OAAQ4N,IAAM,CACxC,IAAI6/K,EAAYD,EAAM5/K,GACpB2xI,EAAOkuC,EAAU/wF,IACjBwvE,EAAQuhB,EAAU1xE,KACpBwjC,EAAKxjC,KAAKmwD,EACZ,CACF,EACA,GAAIt4G,EAAMp2C,EAAIo6F,UAEZ01E,EAAW9vK,EAAIo6F,eAIf,IADA,IAAIm0D,EAAM,CAAC,QAAS,SACX/pK,EAAI,EAAGA,EAAI+pK,EAAI/rK,OAAQgC,IAAK,CACnC,IAAIurL,EAAKxhB,EAAI/pK,GACT41G,EAAWp6F,EAAIo6F,SAAS21E,GACxB35H,EAAMgkD,IACR01E,EAAW11E,EAAU21E,EAEzB,CAEF,IAAIG,EAAkBvgK,EAAGixD,aACzBgoB,EAAKp4E,QAAO,SAAU0uE,GACpB,OAAQ2wF,EAAS3wF,EAAIl1F,KACvB,IAAGoB,SAAQ,SAAU8zF,GACfA,EAAIQ,WACNwwF,EAAgB1xE,MAAMtf,GAEtBA,EAAI9hB,QAER,IAGA8yG,EAAgB9kL,SAAQ,SAAU8zF,GAChC,OAAOA,EAAI3f,WAAW9sD,KAAK,CACzB9xB,OAAQ,MAEZ,IAGAuvL,EAAgB9kL,SAAQ,SAAU8zF,GAChC,OAAO0wF,EAAY1wF,GAAK9hB,QAC1B,GACF,CACIp9D,EAAI5T,OACNujB,EAAGvjB,MAAM4T,EAAI5T,OAEC,MAAZ4T,EAAI49D,MAAgB59D,EAAI49D,OAASs0C,EAAGt0C,MACtCjuD,EAAGiuD,KAAK59D,EAAI49D,MAEV59D,EAAIskE,MACFtkE,EAAIskE,IAAIhkE,IAAM4xG,EAAG5tC,IAAIhkE,GAAKN,EAAIskE,IAAInlD,IAAM+yF,EAAG5tC,IAAInlD,GACjDxP,EAAG20D,IAAItkE,EAAIskE,MAGXtkE,EAAIP,MACNkQ,EAAGlQ,KAAKO,EAAIP,MAGd,IADA,IAAIs5D,EAAS,CAAC,UAAW,UAAW,iBAAkB,qBAAsB,iBAAkB,qBAAsB,sBAAuB,WAAY,gBAAiB,kBAAmB,0BAClL47C,EAAM,EAAGA,EAAM57C,EAAOv2E,OAAQmyH,IAAO,CAC5C,IAAIvwH,EAAI20E,EAAO47C,GACD,MAAV30G,EAAI5b,IACNurB,EAAGvrB,GAAG4b,EAAI5b,GAEd,CAEA,OADAurB,EAAGilF,WACIp0G,IACT,CAEE,IAAI0uF,IAASlvE,EACTu+F,EAAO,CAAC,EACRrvB,EACFqvB,EAAKnE,SAAW55G,KAAK45G,WAAWlwF,KAAI,SAAUg1E,GAC5C,OAAOA,EAAIqf,MACb,KAEAA,EAAKnE,SAAW,CAAC,EACjBxR,EAAKx9F,SAAQ,SAAU8zF,GACrB,IAAIxjD,EAAQwjD,EAAIxjD,QACX6iE,EAAKnE,SAAS1+D,KACjB6iE,EAAKnE,SAAS1+D,GAAS,IAEzB6iE,EAAKnE,SAAS1+D,GAAOj3C,KAAKy6F,EAAIqf,OAChC,KAEE/9G,KAAK6gF,SAASo+D,eAChBlhC,EAAKnyG,MAAQujB,EAAGvjB,QAAQmyG,QAE1BA,EAAK9+F,KAAO0rE,GAAKx7D,EAAGlQ,QACpB,IAAItf,EAAU+xH,EAAG/xH,QAgBjB,OAfAo+G,EAAKquE,eAAiB16D,EAAG06D,eACzBruE,EAAK9f,mBAAqByzB,EAAGzzB,mBAC7B8f,EAAK3gC,KAAOs0C,EAAGt0C,KACf2gC,EAAK+0D,QAAUphD,EAAGohD,QAClB/0D,EAAKg1D,QAAUrhD,EAAGqhD,QAClBh1D,EAAKouE,eAAiBz6D,EAAGy6D,eACzBpuE,EAAK1f,mBAAqBqzB,EAAGrzB,mBAC7B0f,EAAKj6B,IAAM6G,GAAK+mC,EAAG5tC,KACnBi6B,EAAKxf,oBAAsBmzB,EAAGnzB,oBAC9Bwf,EAAKxmD,SAAWozB,GAAKhrF,EAAQ43D,UAC7BwmD,EAAKu3D,oBAAsB31K,EAAQ21K,oBACnCv3D,EAAKw3D,kBAAoB51K,EAAQ41K,kBACjCx3D,EAAK63D,iBAAmBj2K,EAAQi2K,iBAChC73D,EAAKy3D,WAAa71K,EAAQ61K,WAC1Bz3D,EAAK2vE,uBAAyB/tL,EAAQ+tL,uBAC/B3vE,CAEX,IAEF+wE,GAAO7wE,IAAM6wE,GAAO3yE,eACpB,CAACwxD,GAAUkG,GAAUU,GAAQC,GAAUC,GAAUE,GAAUoB,GAAUe,GAAU6U,GAAUK,GAAUxpL,IAAIoI,SAAQ,SAAUysD,GACvHqsD,GAAOorE,GAAQz3H,EACjB,IAGA,IAAIs4H,GAAa,CACfhoF,KAAK,EAEL0rB,UAAU,EAEV9nC,QAAS,GAETpuD,QAAQ,EAERgO,MAAM,EAENu3H,cAAe,KAEfphF,iBAAa5+E,EAEbktL,cAAc,EAEdjuB,6BAA6B,EAE7BvvD,WAAO1vG,EAEPmtL,eAAWntL,EAEX4kG,SAAS,EAET2M,kBAAmB,IAEnB+uD,qBAAiBtgK,EAEjBogK,cAAe,SAAuB1nF,EAAMp3E,GAC1C,OAAO,CACT,EAEA+iE,WAAOrkE,EAEPo1B,UAAMp1B,EAEN2kE,UAAW,SAAmB+T,EAAMtpD,GAClC,OAAOA,CACT,GAGEg+J,GAA2B,CAC7BC,SAAS,EAETC,SAAS,GAKP91D,GAAU,SAAiBx7B,GAC7B,OAAOA,EAAIhb,QAAQ,eACrB,EACIusG,GAAU,SAAiBvxF,EAAKl/E,GAClC,OAAOk/E,EAAIhb,QAAQ,eAAgBlkE,EACrC,EACA,SAAS0wK,GAAmBvwL,GAC1BK,KAAKL,QAAU+jH,GAAO,CAAC,EAAGisE,GAAYG,GAA0BnwL,EAClE,CACAuwL,GAAmB3oL,UAAU2b,IAAM,WACjC,IAiBIkvF,EAjBAxwF,EAAS5hB,KAAKL,QACdA,EAAUiiB,EACVuN,EAAKvN,EAAOuN,GACZi5E,EAAOzoG,EAAQyoG,KACftpB,EAAQspB,EAAKtpB,QAAQ9uD,QAAO,SAAUjQ,GACxC,OAAQA,EAAEm/E,UACZ,IACI/tE,EAAQi3E,EACRirB,EAAW1zH,EAAQ0zH,SACnB08D,EAAUpwL,EAAQqwL,SAAWrwL,EAAQowL,SAAWpwL,EAAQwwL,mBAAqB,EAE7E12G,EAAKquB,GAAgBnoG,EAAQ2hF,YAAc3hF,EAAQ2hF,YAAc,CACnEx3C,GAAI,EACJC,GAAI,EACJlgC,EAAGslB,EAAGqZ,QACN1nC,EAAGquB,EAAGsZ,WAGR,GAAIw5E,EAAoBtiH,EAAQyyG,OAC9BA,EAAQzyG,EAAQyyG,WACX,GAAIx8C,EAAMj2D,EAAQyyG,OAAQ,CAE/B,IADA,IAAIg+E,EAAa,GACRpsL,EAAI,EAAGA,EAAIrE,EAAQyyG,MAAMpwG,OAAQgC,IAAK,CAC7C,IAAIwF,EAAK7J,EAAQyyG,MAAMpuG,GACnB06F,EAAMvvE,EAAGgtF,eAAe3yG,GAC5B4mL,EAAWnsL,KAAKy6F,EAClB,CACA0T,EAAQjjF,EAAGixD,WAAWgwG,EACxB,MAAO,GAAI/wK,EAAO1f,EAAQyyG,OACxBA,EAAQjjF,EAAGhK,EAAExlB,EAAQyyG,YAErB,GAAIihB,EACFjhB,EAAQtzB,EAAMszB,YACT,CACL,IAAIh6C,EAAagwC,EAAKhwC,aACtBg6C,EAAQjjF,EAAGixD,aASX,IARA,IAAI/zD,EAAQ,SAAezc,GACzB,IAAIygL,EAAOj4H,EAAWxoD,GAClB48H,EAAY6jD,EAAK7jD,WAAU,GAC3B8jD,EAAYD,EAAKrgK,QAAO,SAAU0uE,GACpC,OAAOA,EAAIguC,QAAO,KAAWF,CAC/B,IACAp6B,EAAQA,EAAM7xG,IAAI+vL,EACpB,EACS1gL,EAAK,EAAGA,EAAKwoD,EAAWp2D,OAAQ4N,IACvCyc,EAAMzc,EAEV,CAEF,IAAI2gL,EAAS,GACTC,EAAa,CAAC,EACdC,EAAa,SAAoB/xF,EAAKxxE,GACvB,MAAbqjK,EAAOrjK,KACTqjK,EAAOrjK,GAAK,IAEd,IAAIlpB,EAAIusL,EAAOrjK,GAAGlrB,OAClBuuL,EAAOrjK,GAAGjpB,KAAKy6F,GACfuxF,GAAQvxF,EAAK,CACXz8F,MAAO+B,EACP+vH,MAAO7mG,GAEX,EACIwjK,EAAc,SAAqBhyF,EAAKiyF,GAC1C,IAAIt2D,EAAWH,GAAQx7B,GACrBq1B,EAAQsG,EAAStG,MACjB9xH,EAAQo4H,EAASp4H,MACnBsuL,EAAOx8D,GAAO9xH,GAAS,KACvBwuL,EAAW/xF,EAAKiyF,EAClB,EAGAx/J,EAAMgiG,IAAI,CACR/gB,MAAOA,EACPihB,SAAU1zH,EAAQ0zH,SAClBC,MAAO,SAAel4C,EAAMuF,EAAMiwG,EAAO5sL,EAAG+vH,GAC1C,IAAIr1B,EAAMtjB,EAAK,GACX5xE,EAAKk1F,EAAIl1F,KACbinL,EAAW/xF,EAAKq1B,GAChBy8D,EAAWhnL,IAAM,CACnB,IAKF,IADA,IAAIqnL,EAAc,GACT18D,EAAM,EAAGA,EAAMr1C,EAAM98E,OAAQmyH,IAAO,CAC3C,IAAIotB,EAAOziE,EAAMq1C,GACbq8D,EAAWjvC,EAAK/3I,OAGlBqnL,EAAY5sL,KAAKs9I,EAErB,CAIA,IAAIuvC,EAAiB,SAAwB9sL,GAE3C,IADA,IAAIokG,EAAOmoF,EAAOvsL,GACTiH,EAAI,EAAGA,EAAIm9F,EAAKpmG,OAAQiJ,IAAK,CACpC,IAAIilJ,EAAQ9nD,EAAKn9F,GACJ,MAATilJ,EAKJ+/B,GAAQ//B,EAAO,CACbn8B,MAAO/vH,EACP/B,MAAOgJ,KANPm9F,EAAKnvE,OAAOhuB,EAAG,GACfA,IAOJ,CACF,EACI8lL,EAAe,WACjB,IAAK,IAAIzzD,EAAM,EAAGA,EAAMizD,EAAOvuL,OAAQs7H,IACrCwzD,EAAexzD,EAEnB,EACI0zD,EAAkB,SAAyBtyF,EAAKuyF,GAOlD,IANA,IAAIC,EAAQh3D,GAAQx7B,GAChBwsD,EAAWxsD,EAAIwsD,WAAWl7H,QAAO,SAAUpuB,GAC7C,OAAOA,EAAGq9F,UAAYmJ,EAAK/jG,IAAIzC,EACjC,IACIuvL,GAAY,EACZ3nL,EAAKk1F,EAAIl1F,KACJqB,EAAI,EAAGA,EAAIqgJ,EAASlpJ,OAAQ6I,IAAK,CACxC,IAAIumL,EAAQlmC,EAASrgJ,GACjBwmL,EAAQn3D,GAAQk3D,GACpBD,EAAWhrL,KAAKwI,IAAIwiL,EAAUE,EAAMt9D,MACtC,CACA,GAAIm9D,EAAMn9D,OAASo9D,EAAU,CAC3B,IAAKxxL,EAAQqwL,SAAWiB,EAAQznL,GAC9B,OAAO,KAET,IAAImnL,EAAWQ,EAAW,EAG1B,OAFAT,EAAYhyF,EAAKiyF,GACjBM,EAAQznL,GAAMmnL,GACP,CACT,CACA,OAAO,CACT,EAGA,GAAIt9D,GAAY08D,EAAS,CACvB,IAAIx8D,EAAI,GACJ09D,EAAU,CAAC,EACXK,EAAU,SAAiBvxK,GAC7B,OAAOwzG,EAAEtvH,KAAK8b,EAChB,EACIwxK,EAAU,WACZ,OAAOh+D,EAAEn7F,OACX,EACA0mD,EAAMl0E,SAAQ,SAAUmV,GACtB,OAAOwzG,EAAEtvH,KAAK8b,EAChB,IACA,MAAOwzG,EAAEvxH,OAAS,EAAG,CACnB,IAAI8pK,EAAQylB,IACRC,EAAWR,EAAgBllB,EAAOmlB,GACtC,GAAIO,EACF1lB,EAAMl9B,WAAW5+G,QAAO,SAAUpuB,GAChC,OAAOA,EAAGq9F,UAAYmJ,EAAK/jG,IAAIzC,EACjC,IAAGgJ,QAAQ0mL,QACN,GAAiB,OAAbE,EAAmB,CAC5B/9J,GAAK,2CAA6Cq4I,EAAMtiK,KAAO,2FAC/D,KACF,CACF,CACF,CAEAunL,IAGA,IAAIvxJ,EAAc,EAClB,GAAI7/B,EAAQiwL,aACV,IAAK,IAAIpyD,EAAM,EAAGA,EAAM1+C,EAAM98E,OAAQw7H,IAAO,CAC3C,IAAIz9G,EAAI++D,EAAM0+C,GACVi0D,EAAM1xK,EAAE8hJ,iBAAiBliK,GACzBkK,EAAI4nL,EAAI5nL,EACR/I,EAAI2wL,EAAI3wL,EACZ0+B,EAAcr5B,KAAKwI,IAAI6wB,EAAa31B,EAAG/I,EACzC,CAIF,IAAI4wL,EAAwB,CAAC,EACzBC,EAAqB,SAA4BjzF,GACnD,GAAIgzF,EAAsBhzF,EAAIl1F,MAC5B,OAAOkoL,EAAsBhzF,EAAIl1F,MAMnC,IAJA,IAAIooL,EAAW13D,GAAQx7B,GAAKq1B,MACxB6B,EAAYl3B,EAAIm3B,eAChBl5E,EAAU,EACVk1I,EAAU,EACL9zD,EAAM,EAAGA,EAAMnI,EAAU5zH,OAAQ+7H,IAAO,CAC/C,IAAIypB,EAAW5xB,EAAUmI,GACzB,IAAIypB,EAASjO,WAAYiO,EAAStoD,YAAepgB,EAAMz6E,IAAImjJ,GAA3D,CAGA,IAAIl1D,EAAK4nC,GAAQstB,GACjB,GAAU,MAANl1D,EAAJ,CAGA,IAAIrwF,EAAQqwF,EAAGrwF,MACX8xH,EAAQzhC,EAAGyhC,MAGf,GAAa,MAAT9xH,GAA0B,MAAT8xH,EAArB,CAGA,IAAI+9D,EAASvB,EAAOx8D,GAAO/xH,OACvB+xH,EAAQ69D,IAEVj1I,GAAW16C,EAAQ6vL,EACnBD,IALF,CAPA,CAJA,CAkBF,CAQA,OAPAA,EAAU1rL,KAAKwI,IAAI,EAAGkjL,GACtBl1I,GAAoBk1I,EACJ,IAAZA,IAEFl1I,EAAU,GAEZ+0I,EAAsBhzF,EAAIl1F,MAAQmzC,EAC3BA,CACT,EAIIwkH,EAAS,SAAgBx+J,EAAGC,GAC9B,IAAImvL,EAAOJ,EAAmBhvL,GAC1BqvL,EAAOL,EAAmB/uL,GAC1BgqG,EAAOmlF,EAAOC,EAClB,OAAa,IAATplF,EACK4W,GAAU7gH,EAAE6G,KAAM5G,EAAE4G,MAEpBojG,CAEX,OAC0BlqG,IAAtB/C,EAAQkwL,YACV1uB,EAASxhK,EAAQkwL,WAInB,IAAK,IAAI5lD,EAAM,EAAGA,EAAMsmD,EAAOvuL,OAAQioI,IACrCsmD,EAAOtmD,GAAKpkH,KAAKs7I,GACjB2vB,EAAe7mD,GAKjB,IADA,IAAIgoD,EAAc,GACTvmD,EAAM,EAAGA,EAAMmlD,EAAY7uL,OAAQ0pI,IAC1CumD,EAAYhuL,KAAK4sL,EAAYnlD,IAE/B6kD,EAAOriK,QAAQ+jK,GACflB,IAEA,IADA,IAAImB,EAAmB,EACdv6C,EAAM,EAAGA,EAAM44C,EAAOvuL,OAAQ21I,IACrCu6C,EAAmB/rL,KAAKwI,IAAI4hL,EAAO54C,GAAK31I,OAAQkwL,GAElD,IAAIziJ,EAAS,CACX3vB,EAAG25D,EAAG3vC,GAAK2vC,EAAG5vE,EAAI,EAClB80B,EAAG86C,EAAG3vC,GAAK2vC,EAAG34E,EAAI,GAEhBqxL,EAAe5B,EAAOjlK,QAAO,SAAU3c,EAAKy5F,GAC9C,OAAOjiG,KAAKwI,IAAIA,EAAKy5F,EAAKpmG,OAC5B,GAAG,GACCowL,EAAc,SAAqB1zF,GACrC,IAAI2zF,EAAYn4D,GAAQx7B,GACtBq1B,EAAQs+D,EAAUt+D,MAClB9xH,EAAQowL,EAAUpwL,MAChBqwL,EAAY/B,EAAOx8D,GAAO/xH,OAC1BuwL,EAAYpsL,KAAKwI,IAAI8qE,EAAG5vE,IAAMlK,EAAQwrC,KAAOgnJ,EAAeG,GAAa,GAAI9yJ,GAC7EgzJ,EAAYrsL,KAAKwI,IAAI8qE,EAAG34E,GAAKyvL,EAAOvuL,OAAS,GAAIw9B,GACjDizJ,EAAiBtsL,KAAKyI,IAAI6qE,EAAG5vE,EAAI,EAAI0mL,EAAOvuL,OAAQy3E,EAAG34E,EAAI,EAAIyvL,EAAOvuL,QAE1E,GADAywL,EAAiBtsL,KAAKwI,IAAI8jL,EAAgBjzJ,GACrC7/B,EAAQw9B,OAMN,CACL,IAAIkN,EAASooJ,EAAiB1+D,EAAQ0+D,GAAkBlC,EAAOvuL,OAAS,GAAKuuL,EAAO,GAAGvuL,QAAU,EAAIywL,EAAiB,EAAI,GACtHz2F,EAAQ,EAAI71F,KAAK40B,GAAKw1J,EAAOx8D,GAAO/xH,OAASC,EAIjD,OAHc,IAAV8xH,GAAoC,IAArBw8D,EAAO,GAAGvuL,SAC3BqoC,EAAS,GAEJ,CACLvqB,EAAG2vB,EAAO3vB,EAAIuqB,EAASlkC,KAAKmgC,IAAI01D,GAChCr9D,EAAG8Q,EAAO9Q,EAAI0L,EAASlkC,KAAKkgC,IAAI21D,GAEpC,CAfE,IAAI02F,EAAO,CACT5yK,EAAG2vB,EAAO3vB,GAAK7d,EAAQ,GAAKqwL,EAAY,GAAK,GAAKC,EAClD5zJ,GAAIo1F,EAAQ,GAAKy+D,GAEnB,OAAOE,CAYX,EAEA,OADAtqF,EAAKtpB,QAAQ8qB,gBAAgB5pG,KAAML,EAASyyL,GACrCpyL,IACT,EAEA,IAAI2yL,GAAa,CACfhrF,KAAK,EAELpc,QAAS,GAETjK,iBAAa5+E,EAEbktL,cAAc,EAEdjuB,6BAA6B,EAE7Be,mBAAehgK,EAEf2nC,YAAQ3nC,EAERm9B,WAAY,IAAQ15B,KAAK40B,GAEzB63J,WAAOlwL,EAEPmwL,WAAW,EAEXhtK,UAAMnjB,EAEN4kG,SAAS,EAET2M,kBAAmB,IAEnB+uD,qBAAiBtgK,EAEjBogK,cAAe,SAAuB1nF,EAAMp3E,GAC1C,OAAO,CACT,EAEA+iE,WAAOrkE,EAEPo1B,UAAMp1B,EAEN2kE,UAAW,SAAmB+T,EAAMtpD,GAClC,OAAOA,CACT,GAGF,SAASghK,GAAanzL,GACpBK,KAAKL,QAAU+jH,GAAO,CAAC,EAAGivE,GAAYhzL,EACxC,CACAmzL,GAAavrL,UAAU2b,IAAM,WAC3B,IAAItB,EAAS5hB,KAAKL,QACdA,EAAUiiB,EACVuN,EAAKvN,EAAOuN,GACZi5E,EAAOzoG,EAAQyoG,KACfyqF,OAAyCnwL,IAA7B/C,EAAQozL,kBAAkCpzL,EAAQozL,iBAAmBpzL,EAAQkzL,UACzF/zG,EAAQspB,EAAKtpB,QAAQozB,IAAI,WACzBvyG,EAAQkmB,OACVi5D,EAAQA,EAAMj5D,KAAKlmB,EAAQkmB,OAgB7B,IAdA,IAYIkH,EAZA0sD,EAAKquB,GAAgBnoG,EAAQ2hF,YAAc3hF,EAAQ2hF,YAAc,CACnEx3C,GAAI,EACJC,GAAI,EACJlgC,EAAGslB,EAAGqZ,QACN1nC,EAAGquB,EAAGsZ,WAEJgH,EAAS,CACX3vB,EAAG25D,EAAG3vC,GAAK2vC,EAAG5vE,EAAI,EAClB80B,EAAG86C,EAAG1vC,GAAK0vC,EAAG34E,EAAI,GAEhB8xL,OAA0BlwL,IAAlB/C,EAAQizL,MAAsB,EAAIzsL,KAAK40B,GAAK,EAAI50B,KAAK40B,GAAK+jD,EAAM98E,OAASrC,EAAQizL,MACzFI,EAASJ,EAAQzsL,KAAKwI,IAAI,EAAGmwE,EAAM98E,OAAS,GAE5Cw9B,EAAc,EACTx7B,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAAK,CACrC,IAAI+b,EAAI++D,EAAM96E,GACVytL,EAAM1xK,EAAE8hJ,iBAAiBliK,GACzBkK,EAAI4nL,EAAI5nL,EACR/I,EAAI2wL,EAAI3wL,EACZ0+B,EAAcr5B,KAAKwI,IAAI6wB,EAAa31B,EAAG/I,EACzC,CAUA,GAREisB,EADEo1F,EAASxiH,EAAQ0qC,QACf1qC,EAAQ0qC,OACHy0C,EAAM98E,QAAU,EACrB,EAEAmE,KAAKyI,IAAI6qE,EAAG34E,EAAG24E,EAAG5vE,GAAK,EAAI21B,EAI7Bs/C,EAAM98E,OAAS,GAAKrC,EAAQiwL,aAAc,CAE5CpwJ,GAAe,KAEf,IAAIyzJ,EAAO9sL,KAAKmgC,IAAI0sJ,GAAU7sL,KAAKmgC,IAAI,GACnC4sJ,EAAO/sL,KAAKkgC,IAAI2sJ,GAAU7sL,KAAKkgC,IAAI,GACnC8sJ,EAAOhtL,KAAK2iB,KAAK0W,EAAcA,GAAeyzJ,EAAOA,EAAOC,EAAOA,IACvEnmK,EAAI5mB,KAAKwI,IAAIwkL,EAAMpmK,EACrB,CACA,IAAIqmK,EAAS,SAAgB10F,EAAK16F,GAChC,IAAIg4F,EAAQr8F,EAAQkgC,WAAa77B,EAAIgvL,GAAUH,EAAY,GAAK,GAC5Dv1J,EAAKvQ,EAAI5mB,KAAKmgC,IAAI01D,GAClBz+D,EAAKxQ,EAAI5mB,KAAKkgC,IAAI21D,GAClB3tF,EAAM,CACRyR,EAAG2vB,EAAO3vB,EAAIwd,EACdqB,EAAG8Q,EAAO9Q,EAAIpB,GAEhB,OAAOlvB,CACT,EAEA,OADA+5F,EAAKtpB,QAAQ8qB,gBAAgB5pG,KAAML,EAASyzL,GACrCpzL,IACT,EAEA,IA8MIqzL,GA9MAC,GAAa,CACf3rF,KAAK,EAELpc,QAAS,GAET1rD,WAAY,IAAQ15B,KAAK40B,GAEzB63J,WAAOlwL,EAEPmwL,WAAW,EAEXU,aAAa,EAEbC,eAAgB,GAEhBlyG,iBAAa5+E,EAEbktL,cAAc,EAEdjuB,6BAA6B,EAE7Bl5H,YAAQ/lC,EAER8lC,WAAO9lC,EAEPggK,mBAAehgK,EAEf+wL,WAAY,SAAoBr4G,GAE9B,OAAOA,EAAKsxD,QACd,EACAgnD,WAAY,SAAoB50G,GAE9B,OAAOA,EAAM0tD,YAAc,CAC7B,EACAllC,SAAS,EAET2M,kBAAmB,IAEnB+uD,qBAAiBtgK,EAEjBogK,cAAe,SAAuB1nF,EAAMp3E,GAC1C,OAAO,CACT,EAEA+iE,WAAOrkE,EAEPo1B,UAAMp1B,EAEN2kE,UAAW,SAAmB+T,EAAMtpD,GAClC,OAAOA,CACT,GAGF,SAAS6hK,GAAiBh0L,GACxBK,KAAKL,QAAU+jH,GAAO,CAAC,EAAG4vE,GAAY3zL,EACxC,CACAg0L,GAAiBpsL,UAAU2b,IAAM,WAmB/B,IAlBA,IAAItB,EAAS5hB,KAAKL,QACdA,EAAUiiB,EACVixK,OAAyCnwL,IAA7B/C,EAAQozL,kBAAkCpzL,EAAQozL,iBAAmBpzL,EAAQkzL,UACzF1jK,EAAKvN,EAAOuN,GACZi5E,EAAOzoG,EAAQyoG,KACftpB,EAAQspB,EAAKtpB,QAAQozB,IAAI,WACzBz4B,EAAKquB,GAAgBnoG,EAAQ2hF,YAAc3hF,EAAQ2hF,YAAc,CACnEx3C,GAAI,EACJC,GAAI,EACJlgC,EAAGslB,EAAGqZ,QACN1nC,EAAGquB,EAAGsZ,WAEJgH,EAAS,CACX3vB,EAAG25D,EAAG3vC,GAAK2vC,EAAG5vE,EAAI,EAClB80B,EAAG86C,EAAG1vC,GAAK0vC,EAAG34E,EAAI,GAEhB8yL,EAAa,GACbC,EAAc,EACT7vL,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAAK,CACrC,IAAIo3E,EAAO0D,EAAM96E,GACblC,OAAQ,EAGZA,EAAQnC,EAAQ8zL,WAAWr4G,GAC3Bw4G,EAAW3vL,KAAK,CACdnC,MAAOA,EACPs5E,KAAMA,IAIRA,EAAKyF,SAAS6C,QAAQ+vG,WAAa3xL,CACrC,CAGAg9E,EAAMiiE,cAGN,IAAK,IAAInxI,EAAK,EAAGA,EAAKkvE,EAAM98E,OAAQ4N,IAAM,CACxC,IAAI+rH,EAAQ78C,EAAMlvE,GACd6hL,EAAM91D,EAAMkmC,iBAAiBliK,GACjCk0L,EAAc1tL,KAAKwI,IAAIklL,EAAapC,EAAI5nL,EAAG4nL,EAAI3wL,EACjD,CAGA8yL,EAAW/tK,MAAK,SAAUljB,EAAGC,GAC3B,OAAOA,EAAEd,MAAQa,EAAEb,KACrB,IAMA,IALA,IAAI4xL,EAAa/zL,EAAQ+zL,WAAW50G,GAGhCg1G,EAAS,CAAC,IACVC,EAAeD,EAAO,GACjB3/D,EAAM,EAAGA,EAAMy/D,EAAW5xL,OAAQmyH,IAAO,CAChD,IAAInlH,EAAM4kL,EAAWz/D,GACrB,GAAI4/D,EAAa/xL,OAAS,EAAG,CAC3B,IAAI4qG,EAAOzmG,KAAK6iB,IAAI+qK,EAAa,GAAGjyL,MAAQkN,EAAIlN,OAC5C8qG,GAAQ8mF,IACVK,EAAe,GACfD,EAAO7vL,KAAK8vL,GAEhB,CACAA,EAAa9vL,KAAK+K,EACpB,CAIA,IAAIglL,EAAUH,EAAcl0L,EAAQ6zL,eAEpC,IAAK7zL,EAAQiwL,aAAc,CAEzB,IAAIqE,EAAmBH,EAAO9xL,OAAS,GAAK8xL,EAAO,GAAG9xL,OAAS,EAC3DkyL,EAAO/tL,KAAKyI,IAAI6qE,EAAG5vE,EAAG4vE,EAAG34E,GAAK,EAAIkzL,EAClCG,EAAQD,GAAQJ,EAAO9xL,OAASiyL,EAAmB,EAAI,GAC3DD,EAAU7tL,KAAKyI,IAAIolL,EAASG,EAC9B,CAIA,IADA,IAAIpnK,EAAI,EACCuwG,EAAM,EAAGA,EAAMw2D,EAAO9xL,OAAQs7H,IAAO,CAC5C,IAAIsvD,EAAQkH,EAAOx2D,GACfs1D,OAA0BlwL,IAAlB/C,EAAQizL,MAAsB,EAAIzsL,KAAK40B,GAAK,EAAI50B,KAAK40B,GAAK6xJ,EAAM5qL,OAASrC,EAAQizL,MACzFI,EAASpG,EAAMoG,OAASJ,EAAQzsL,KAAKwI,IAAI,EAAGi+K,EAAM5qL,OAAS,GAG/D,GAAI4qL,EAAM5qL,OAAS,GAAKrC,EAAQiwL,aAAc,CAE5C,IAAIqD,EAAO9sL,KAAKmgC,IAAI0sJ,GAAU7sL,KAAKmgC,IAAI,GACnC4sJ,EAAO/sL,KAAKkgC,IAAI2sJ,GAAU7sL,KAAKkgC,IAAI,GACnC8sJ,EAAOhtL,KAAK2iB,KAAKkrK,EAAUA,GAAWf,EAAOA,EAAOC,EAAOA,IAE/DnmK,EAAI5mB,KAAKwI,IAAIwkL,EAAMpmK,EACrB,CACA6/J,EAAM7/J,EAAIA,EACVA,GAAKinK,CACP,CACA,GAAIr0L,EAAQ4zL,YAAa,CAGvB,IAFA,IAAIa,EAAY,EACZC,EAAK,EACA72D,EAAM,EAAGA,EAAMs2D,EAAO9xL,OAAQw7H,IAAO,CAC5C,IAAI82D,EAASR,EAAOt2D,GAChB+2D,EAASD,EAAOvnK,EAAIsnK,EACxBD,EAAYjuL,KAAKwI,IAAIylL,EAAWG,EAClC,CACAF,EAAK,EACL,IAAK,IAAIt2D,EAAM,EAAGA,EAAM+1D,EAAO9xL,OAAQ+7H,IAAO,CAC5C,IAAIy2D,EAAUV,EAAO/1D,GACT,IAARA,IACFs2D,EAAKG,EAAQznK,GAEfynK,EAAQznK,EAAIsnK,EACZA,GAAMD,CACR,CACF,CAIA,IADA,IAAI/lL,EAAM,CAAC,EACF47H,EAAM,EAAGA,EAAM6pD,EAAO9xL,OAAQioI,IAIrC,IAHA,IAAIwqD,EAAUX,EAAO7pD,GACjByqD,EAAUD,EAAQzB,OAClB2B,EAAMF,EAAQ1nK,EACT9hB,EAAI,EAAGA,EAAIwpL,EAAQzyL,OAAQiJ,IAAK,CACvC,IAAI2pL,EAAOH,EAAQxpL,GACf+wF,EAAQr8F,EAAQkgC,YAAcgzJ,EAAY,GAAK,GAAK6B,EAAUzpL,EAC9D4yC,EAAI,CACN/9B,EAAG2vB,EAAO3vB,EAAI60K,EAAMxuL,KAAKmgC,IAAI01D,GAC7Br9D,EAAG8Q,EAAO9Q,EAAIg2J,EAAMxuL,KAAKkgC,IAAI21D,IAE/B3tF,EAAIumL,EAAKx5G,KAAK5xE,MAAQq0C,CACxB,CAQF,OAJAuqD,EAAKtpB,QAAQ8qB,gBAAgB5pG,KAAML,GAAS,SAAU++F,GACpD,IAAIl1F,EAAKk1F,EAAIl1F,KACb,OAAO6E,EAAI7E,EACb,IACOxJ,IACT,EAgBA,IAAI60L,GAAa,CAEf9tH,MAAO,WAAkB,EAEzBjvC,KAAM,WAAiB,EAKvBwvE,SAAS,EAET07D,qBAAiBtgK,EAEjBuxG,uBAAmBvxG,EAInBogK,cAAe,SAAuB1nF,EAAMp3E,GAC1C,OAAO,CACT,EAGA8wL,mBAAoB,IAEpBvtF,QAAS,GAETI,KAAK,EAELpc,QAAS,GAETjK,iBAAa5+E,EAEbi/J,6BAA6B,EAE7B/5D,WAAW,EAEXmtF,iBAAkB,GAElBC,cAAe,SAAuB55G,GACpC,OAAO,IACT,EAEA65G,YAAa,EAEbC,gBAAiB,SAAyBv0G,GACxC,OAAO,EACT,EAEAw0G,eAAgB,SAAwBx0G,GACtC,OAAO,EACT,EAEAy0G,cAAe,IAEfhxF,QAAS,EAETy4B,QAAS,IAETw4D,YAAa,IAEbC,cAAe,IAEfC,QAAS,GAOX,SAASC,GAAW71L,GAClBK,KAAKL,QAAU+jH,GAAO,CAAC,EAAGmxE,GAAYl1L,GACtCK,KAAKL,QAAQwoG,OAASnoG,KAGtB,IAAI8+E,EAAQ9+E,KAAKL,QAAQyoG,KAAKtpB,QAC1BqB,EAAQngF,KAAKL,QAAQyoG,KAAKjoB,QAC1Bs1G,EAAWt1G,EAAMnwD,QAAO,SAAU/pB,GACpC,IAAIs0I,EAAWt0I,EAAEvB,SAASua,KAAK,MAC3B87F,EAAW90G,EAAEP,SAASuZ,KAAK,MAC3By2K,EAAY52G,EAAMiG,MAAK,SAAUhlE,GACnC,OAAOA,EAAEd,KAAK,QAAUs7H,CAC1B,IACIo7C,EAAY72G,EAAMiG,MAAK,SAAUhlE,GACnC,OAAOA,EAAEd,KAAK,QAAU87F,CAC1B,IACA,OAAQ26E,IAAcC,CACxB,IACA31L,KAAKL,QAAQyoG,KAAOpoG,KAAKL,QAAQyoG,KAAK8J,IAAIujF,EAC5C,CAKAD,GAAWjuL,UAAU2b,IAAM,WACzB,IAAIvjB,EAAUK,KAAKL,QACfwvB,EAAKxvB,EAAQwvB,GACbg5E,EAASnoG,KACbmoG,EAAOi2C,SAAU,GACO,IAApBz+I,EAAQ2nG,UAAwC,IAApB3nG,EAAQ2nG,SACtCa,EAAOsB,KAAK,CACVjlG,KAAM,cACN2jG,OAAQA,IAMVkrF,IADE,IAAS1zL,EAAQk2K,MAOrB,IAAI+f,EAAaC,GAAiB1mK,EAAIg5E,EAAQxoG,GAG1C0zL,IACFyC,GAAgBF,GAIdj2L,EAAQioG,WACVmuF,GAAmBH,GAErB,IAAIntF,EAAYylB,KACZ3mB,EAAU,WACZS,GAAiB4tF,EAAYzmK,EAAIxvB,IAG7B,IAASA,EAAQgoG,KACnBx4E,EAAGw4E,IAAIhoG,EAAQ4rF,QAEnB,EACIyqG,EAAW,SAAkBhyL,GAC/B,QAAImkG,EAAOi2C,SAAWp6I,GAAKrE,EAAQk9H,WAMnCptH,GAAKmmL,EAAYj2L,GAGjBi2L,EAAWK,YAAcL,EAAWK,YAAct2L,EAAQ21L,gBAGtDM,EAAWK,YAAct2L,EAAQ41L,SAKvC,EACIlsL,EAAO,WACT,IAAwB,IAApB1J,EAAQ2nG,UAAwC,IAApB3nG,EAAQ2nG,QACtCC,IAGAY,EAAOzsB,IAAI,aAAc/7E,EAAQm4B,MACjCqwE,EAAOsB,KAAK,CACVjlG,KAAM,aACN2jG,OAAQA,QAEL,CACL,IAAIrpB,EAAQn/E,EAAQyoG,KAAKtpB,QACrBo3G,EAAeC,GAAmBP,EAAYj2L,EAASm/E,GAC3DA,EAAM8qB,gBAAgBzB,EAAQxoG,EAASu2L,EACzC,CACF,EACIlyL,EAAI,EACJoyL,GAAU,EACd,IAAwB,IAApBz2L,EAAQ2nG,QAAkB,CAC5B,IAAI+uF,EAAQ,SAASA,IACnB,IAAIzyL,EAAI,EACR,MAAOwyL,GAAWxyL,EAAIjE,EAAQ4nG,QAC5B6uF,EAAUJ,EAAShyL,GACnBA,IACAJ,IAEF,GAAKwyL,EAIE,CACL,IAAIzyK,EAAMuqG,KACNvqG,EAAM8kF,GAAa9oG,EAAQm1L,oBAC7BvtF,IAEFj2E,GAAsB+kK,EACxB,MAREC,GAAmBV,EAAYj2L,GAC/B0J,GAQJ,EACAgtL,GACF,KAAO,CACL,MAAOD,EACLA,EAAUJ,EAAShyL,GACnBA,IAEFsyL,GAAmBV,EAAYj2L,GAC/B0J,GACF,CACA,OAAOrJ,IACT,EAKAw1L,GAAWjuL,UAAUuwB,KAAO,WAM1B,OALA93B,KAAKo+I,SAAU,EACXp+I,KAAKu2L,QACPv2L,KAAKu2L,OAAOz+J,OAEd93B,KAAKypG,KAAK,cACHzpG,IACT,EAEAw1L,GAAWjuL,UAAUi8E,QAAU,WAI7B,OAHIxjF,KAAKu2L,QACPv2L,KAAKu2L,OAAOz+J,OAEP93B,IACT,EAQA,IAoQI81L,GApQAD,GAAmB,SAA0B1mK,EAAIg5E,EAAQxoG,GA0B3D,IAxBA,IAAIwgF,EAAQxgF,EAAQyoG,KAAKjoB,QACrBrB,EAAQn/E,EAAQyoG,KAAKtpB,QACrBrF,EAAKquB,GAAgBnoG,EAAQ2hF,YAAc3hF,EAAQ2hF,YAAc,CACnEx3C,GAAI,EACJC,GAAI,EACJlgC,EAAGslB,EAAGqZ,QACN1nC,EAAGquB,EAAGsZ,WAEJmtJ,EAAa,CACfY,WAAYrnK,EAAGy+H,mBACf6oC,YAAa,GACbC,UAAW,CAAC,EACZnS,SAAUzlG,EAAMwK,OAChBqtG,SAAU,GACVC,aAAc,GACdC,YAAa,GACbC,SAAU32G,EAAMmJ,OAChB2sG,YAAat2L,EAAQ01L,YACrB/kK,YAAampD,EAAG5vE,EAChB0mB,aAAckpD,EAAG34E,EACjBwgF,YAAa7H,GAEXrhB,EAAaz4D,EAAQyoG,KAAKhwC,aAC1B2+H,EAAY,CAAC,EACR/yL,EAAI,EAAGA,EAAIo0D,EAAWp2D,OAAQgC,IAErC,IADA,IAAIm0D,EAAYC,EAAWp0D,GAClBiH,EAAI,EAAGA,EAAIktD,EAAUn2D,OAAQiJ,IAAK,CACzC,IAAImwE,EAAOjjB,EAAUltD,GACrB8rL,EAAU37G,EAAK5xE,MAAQxF,CACzB,CAIF,IAASA,EAAI,EAAGA,EAAI4xL,EAAWrR,SAAUvgL,IAAK,CAC5C,IAAI+b,EAAI++D,EAAM96E,GACVytL,EAAM1xK,EAAE8hJ,iBAAiBliK,GACzBq3L,EAAW,CAAC,EAChBA,EAASC,SAAWl3K,EAAEqjF,SACtB4zF,EAASxtL,GAAKuW,EAAEd,KAAK,MACrB+3K,EAASvrB,SAAW1rJ,EAAEd,KAAK,UAC3B+3K,EAASE,OAASH,EAAUh3K,EAAEvW,MAC9BwtL,EAASj4G,SAAW,GACpBi4G,EAASG,UAAYp3K,EAAE+R,SAAS,KAChCklK,EAASI,UAAYr3K,EAAE+R,SAAS,KAChCklK,EAASplK,QAAU,EACnBolK,EAASnlK,QAAU,EACnBmlK,EAASvuJ,OAASgpJ,EAAI5nL,EACtBmtL,EAASxuJ,MAAQipJ,EAAI3wL,EACrBk2L,EAAShwG,KAAOgwG,EAASG,UAAYH,EAASxuJ,MAAQ,EACtDwuJ,EAASjwG,KAAOiwG,EAASG,UAAYH,EAASxuJ,MAAQ,EACtDwuJ,EAAS9vG,KAAO8vG,EAASI,UAAYJ,EAASvuJ,OAAS,EACvDuuJ,EAAS/vG,KAAO+vG,EAASI,UAAYJ,EAASvuJ,OAAS,EACvDuuJ,EAASK,QAAUvhJ,WAAW/1B,EAAEnU,MAAM,YACtCorL,EAASM,SAAWxhJ,WAAW/1B,EAAEnU,MAAM,YACvCorL,EAASO,OAASzhJ,WAAW/1B,EAAEnU,MAAM,YACrCorL,EAASQ,UAAY1hJ,WAAW/1B,EAAEnU,MAAM,YAGxCorL,EAAShC,cAAgBhzE,EAAKriH,EAAQq1L,eAAiBr1L,EAAQq1L,cAAcj1K,GAAKpgB,EAAQq1L,cAG1FY,EAAWa,YAAYxyL,KAAK+yL,GAE5BpB,EAAWc,UAAUM,EAASxtL,IAAMxF,CACtC,CAGA,IAAI+e,EAAQ,GACR27B,EAAQ,EACRC,GAAO,EAEP84I,EAAY,GAIhB,IAASzzL,EAAI,EAAGA,EAAI4xL,EAAWrR,SAAUvgL,IAAK,CACxC+b,EAAI61K,EAAWa,YAAYzyL,GAA/B,IACI0zL,EAAO33K,EAAE0rJ,SAET,MAAQisB,EAEV9B,EAAWa,YAAYb,EAAWc,UAAUgB,IAAO34G,SAAS96E,KAAK8b,EAAEvW,KAGnEuZ,IAAQ47B,GAAO5+B,EAAEvW,GACjBiuL,EAAUxzL,KAAK8b,EAAEvW,IAErB,CAGAosL,EAAWe,SAAS1yL,KAAKwzL,GAGzB,MAAO/4I,GAASC,EAAK,CAEnB,IAAIg5I,EAAU50K,EAAM27B,KAChBk5I,EAAUhC,EAAWc,UAAUiB,GAE/B54G,GADA3D,EAAOw6G,EAAWa,YAAYmB,GACnBx8G,EAAK2D,UACpB,GAAIA,EAAS/8E,OAAS,EAAG,CAEvB4zL,EAAWe,SAAS1yL,KAAK86E,GAEzB,IAAS/6E,EAAI,EAAGA,EAAI+6E,EAAS/8E,OAAQgC,IACnC+e,IAAQ47B,GAAOogC,EAAS/6E,EAE5B,CACF,CAGA,IAASA,EAAI,EAAGA,EAAI4xL,EAAWe,SAAS30L,OAAQgC,IAC9C,KAAImtB,EAAQykK,EAAWe,SAAS3yL,GAChC,IAASiH,EAAI,EAAGA,EAAIkmB,EAAMnvB,OAAQiJ,IAAK,CACrC,IAAIhJ,EAAQ2zL,EAAWc,UAAUvlK,EAAMlmB,IACvC2qL,EAAWgB,aAAa30L,GAAS+B,CACnC,CAJkC,CAQpC,IAASA,EAAI,EAAGA,EAAI4xL,EAAWkB,SAAU9yL,IAAK,CAC5C,IAAIiC,EAAIk6E,EAAMn8E,GACV6zL,EAAW,CAAC,EAChBA,EAASruL,GAAKvD,EAAEgZ,KAAK,MACrB44K,EAASt9C,SAAWt0I,EAAEgZ,KAAK,UAC3B44K,EAAS98E,SAAW90G,EAAEgZ,KAAK,UAG3B,IAAI64K,EAAc91E,EAAKriH,EAAQu1L,iBAAmBv1L,EAAQu1L,gBAAgBjvL,GAAKtG,EAAQu1L,gBACnF6C,EAAa/1E,EAAKriH,EAAQw1L,gBAAkBx1L,EAAQw1L,eAAelvL,GAAKtG,EAAQw1L,eAGhF6C,EAAWpC,EAAWc,UAAUmB,EAASt9C,UACzC09C,EAAWrC,EAAWc,UAAUmB,EAAS98E,UACzCm9E,EAActC,EAAWgB,aAAaoB,GACtCG,EAAcvC,EAAWgB,aAAaqB,GAC1C,GAAIC,GAAeC,EAAa,CAE9B,IAAIC,EAAMC,GAAQR,EAASt9C,SAAUs9C,EAAS98E,SAAU66E,GAGpD0C,EAAW1C,EAAWe,SAASyB,GAC/BrkE,EAAQ,EAGRijE,EAAWpB,EAAWa,YAAYuB,GACtC,OAAQ,IAAMM,EAASjhL,QAAQ2/K,EAASxtL,IACtCwtL,EAAWpB,EAAWa,YAAYb,EAAWc,UAAUM,EAASvrB,WAChE13C,IAIFijE,EAAWpB,EAAWa,YAAYwB,GAClC,OAAQ,IAAMK,EAASjhL,QAAQ2/K,EAASxtL,IACtCwtL,EAAWpB,EAAWa,YAAYb,EAAWc,UAAUM,EAASvrB,WAChE13C,IAQF+jE,GAAe/jE,EAAQp0H,EAAQy1L,aACjC,CACAyC,EAASC,YAAcA,EACvBD,EAASE,WAAaA,EACtBnC,EAAWiB,YAAY5yL,KAAK4zL,EAC9B,CAGA,OAAOjC,CACT,EAaIyC,GAAU,SAAiB39D,EAAOC,EAAOi7D,GAE3C,IAAI78G,EAAMw/G,GAAY79D,EAAOC,EAAO,EAAGi7D,GACvC,OAAI,EAAI78G,EAAIxwD,MAGH,EAEAwwD,EAAI5nD,KAEf,EAgBIonK,GAAc,SAASA,EAAY79D,EAAOC,EAAO69D,EAAS5C,GAC5D,IAAIzkK,EAAQykK,EAAWe,SAAS6B,GAEhC,IAAK,EAAIrnK,EAAM9Z,QAAQqjH,KAAW,EAAIvpG,EAAM9Z,QAAQsjH,GAClD,MAAO,CACLpyG,MAAO,EACP4I,MAAOqnK,GAMX,IADA,IAAI31L,EAAI,EACCmB,EAAI,EAAGA,EAAImtB,EAAMnvB,OAAQgC,IAAK,CACrC,IAAIk4G,EAAS/qF,EAAMntB,GACfy0L,EAAS7C,EAAWc,UAAUx6E,GAC9Bn9B,EAAW62G,EAAWa,YAAYgC,GAAQ15G,SAG9C,GAAI,IAAMA,EAAS/8E,OAAnB,CAGA,IAAI02L,EAAe9C,EAAWgB,aAAahB,EAAWc,UAAU33G,EAAS,KACrEr7E,EAAS60L,EAAY79D,EAAOC,EAAO+9D,EAAc9C,GACrD,GAAI,IAAMlyL,EAAO6kB,MAAjB,CAGO,GAAI,IAAM7kB,EAAO6kB,MAStB,OAAO7kB,EANP,GADAb,IACI,IAAMA,EAER,KAKJ,CAhBA,CAiBF,CACA,MAAO,CACL0lB,MAAO1lB,EACPsuB,MAAOqnK,EAEX,EAWIzC,GAAqB,SAA4BH,EAAYzmK,GAG/D,IAFA,IAAIqZ,EAAQotJ,EAAWtlK,YACnBmY,EAASmtJ,EAAWrlK,aACfvsB,EAAI,EAAGA,EAAI4xL,EAAWrR,SAAUvgL,IAAK,CAC5C,IAAI+b,EAAI61K,EAAWa,YAAYzyL,GAG3B,IAAM+b,EAAEg/D,SAAS/8E,QAAW+d,EAAEk3K,WAChCl3K,EAAEo3K,UAAYhxL,KAAKgJ,SAAWq5B,EAC9BzoB,EAAEq3K,UAAYjxL,KAAKgJ,SAAWs5B,EAElC,CACF,EACI0tJ,GAAqB,SAA4BP,EAAYj2L,EAASm/E,GACxE,IAAIrF,EAAKm8G,EAAWt0G,YAChBq3G,EAAS,CACX7uJ,GAAI+oD,IACJ5oD,IAAK4oD,IACL9oD,GAAI8oD,IACJ3oD,IAAK2oD,KAaP,OAXIlzF,EAAQ2hF,cACVxC,EAAMl0E,SAAQ,SAAUwwE,GACtB,IAAIw9G,EAAQhD,EAAWa,YAAYb,EAAWc,UAAUt7G,EAAKn8D,KAAK,QAClE05K,EAAO7uJ,GAAK3jC,KAAKyI,IAAI+pL,EAAO7uJ,GAAI8uJ,EAAMzB,WACtCwB,EAAO1uJ,GAAK9jC,KAAKwI,IAAIgqL,EAAO1uJ,GAAI2uJ,EAAMzB,WACtCwB,EAAO5uJ,GAAK5jC,KAAKyI,IAAI+pL,EAAO5uJ,GAAI6uJ,EAAMxB,WACtCuB,EAAOzuJ,GAAK/jC,KAAKwI,IAAIgqL,EAAOzuJ,GAAI0uJ,EAAMxB,UACxC,IACAuB,EAAO9uL,EAAI8uL,EAAO1uJ,GAAK0uJ,EAAO7uJ,GAC9B6uJ,EAAO73L,EAAI63L,EAAOzuJ,GAAKyuJ,EAAO5uJ,IAEzB,SAAU20D,EAAK16F,GACpB,IAAI40L,EAAQhD,EAAWa,YAAYb,EAAWc,UAAUh4F,EAAIz/E,KAAK,QACjE,GAAItf,EAAQ2hF,YAAa,CAEvB,IAAIu3G,GAAQD,EAAMzB,UAAYwB,EAAO7uJ,IAAM6uJ,EAAO9uL,EAC9CivL,GAAQF,EAAMxB,UAAYuB,EAAO5uJ,IAAM4uJ,EAAO73L,EAClD,MAAO,CACLgf,EAAG25D,EAAG3vC,GAAK+uJ,EAAOp/G,EAAG5vE,EACrB80B,EAAG86C,EAAG1vC,GAAK+uJ,EAAOr/G,EAAG34E,EAEzB,CACE,MAAO,CACLgf,EAAG84K,EAAMzB,UACTx4J,EAAGi6J,EAAMxB,UAGf,CACF,EAQIpvF,GAAmB,SAA0B4tF,EAAYzmK,EAAIxvB,GAI/D,IAAIwoG,EAASxoG,EAAQwoG,OACjBrpB,EAAQn/E,EAAQyoG,KAAKtpB,QACrBo3G,EAAeC,GAAmBP,EAAYj2L,EAASm/E,GAC3DA,EAAMirB,UAAUmsF,IAGZ,IAASN,EAAW7uH,QAGtB6uH,EAAW7uH,OAAQ,EACnBohC,EAAOzsB,IAAI,cAAe/7E,EAAQonE,OAClCohC,EAAOsB,KAAK,CACVjlG,KAAM,cACN2jG,OAAQnoG,OAGd,EAiBIyP,GAAO,SAAcmmL,EAAYj2L,EAASo5L,GAO5CC,GAAoBpD,EAAYj2L,GAEhCs5L,GAAoBrD,GAEpBsD,GAAuBtD,EAAYj2L,GAEnCw5L,GAAgBvD,GAEhBwD,GAAgBxD,EAClB,EAKIoD,GAAsB,SAA6BpD,EAAYj2L,GAKjE,IAAK,IAAIqE,EAAI,EAAGA,EAAI4xL,EAAWe,SAAS30L,OAAQgC,IAS9C,IARA,IAAImtB,EAAQykK,EAAWe,SAAS3yL,GAC5BsyH,EAAWnlG,EAAMnvB,OAOZiJ,EAAI,EAAGA,EAAIqrH,EAAUrrH,IAE5B,IADA,IAAIyvH,EAAQk7D,EAAWa,YAAYb,EAAWc,UAAUvlK,EAAMlmB,KACrDJ,EAAII,EAAI,EAAGJ,EAAIyrH,EAAUzrH,IAAK,CACrC,IAAI8vH,EAAQi7D,EAAWa,YAAYb,EAAWc,UAAUvlK,EAAMtmB,KAC9DmqL,GAAct6D,EAAOC,EAAOi7D,EAAYj2L,EAC1C,CAGN,EACI05L,GAAiB,SAAwB1qL,GAC3C,OAAQA,EAAM,EAAIA,EAAMxI,KAAKgJ,QAC/B,EAKI6lL,GAAgB,SAAuBt6D,EAAOC,EAAOi7D,EAAYj2L,GAGnE,IAAI25L,EAAU5+D,EAAMw8D,OAChBqC,EAAU5+D,EAAMu8D,OACpB,GAAIoC,IAAYC,GAAY3D,EAAWY,WAAvC,CAKA,IAAIgD,EAAa7+D,EAAMw8D,UAAYz8D,EAAMy8D,UACrCsC,EAAa9+D,EAAMy8D,UAAY18D,EAAM08D,UACrCsC,EAAc,EAId,IAAMF,GAAc,IAAMC,IAC5BD,EAAaH,GAAeK,GAC5BD,EAAaJ,GAAeK,IAE9B,IAAIC,EAAUC,GAAal/D,EAAOC,EAAO6+D,EAAYC,GACrD,GAAIE,EAAU,EAKZ,IAAI53F,EAAQpiG,EAAQs1L,YAAc0E,EAG9B3sK,EAAW7mB,KAAK2iB,KAAK0wK,EAAaA,EAAaC,EAAaA,GAE5DI,EAAS93F,EAAQy3F,EAAaxsK,EAC9B8sK,EAAS/3F,EAAQ03F,EAAazsK,MAOlC,KAAIm3B,EAAS41I,GAAkBr/D,EAAO8+D,EAAYC,GAC9Cr1I,EAAS21I,GAAkBp/D,GAAQ,EAAI6+D,GAAa,EAAIC,GAGxDlH,EAAYnuI,EAAOtkC,EAAIqkC,EAAOrkC,EAC9B0yK,EAAYpuI,EAAOzlB,EAAIwlB,EAAOxlB,EAC9Bq7J,EAAczH,EAAYA,EAAYC,EAAYA,EAClDxlK,EAAW7mB,KAAK2iB,KAAKkxK,GAIrBj4F,GAAS24B,EAAMs6D,cAAgBr6D,EAAMq6D,eAAiBgF,EACtDH,EAAS93F,EAAQwwF,EAAYvlK,EAC7B8sK,EAAS/3F,EAAQywF,EAAYxlK,CAb4B,CAiB1D0tG,EAAMu8D,WACTv8D,EAAM9oG,SAAWioK,EACjBn/D,EAAM7oG,SAAWioK,GAEdn/D,EAAMs8D,WACTt8D,EAAM/oG,SAAWioK,EACjBl/D,EAAM9oG,SAAWioK,EAvDnB,CA8DF,EAMIF,GAAe,SAAsBl/D,EAAOC,EAAOs/D,EAAIC,GACzD,GAAID,EAAK,EACP,IAAIE,EAAWz/D,EAAM1zC,KAAO2zC,EAAM5zC,UAE9BozG,EAAWx/D,EAAM3zC,KAAO0zC,EAAM3zC,KAEpC,GAAImzG,EAAK,EACP,IAAIE,EAAW1/D,EAAMxzC,KAAOyzC,EAAM1zC,UAE9BmzG,EAAWz/D,EAAMzzC,KAAOwzC,EAAMzzC,KAEpC,OAAIkzG,GAAY,GAAKC,GAAY,EACxBj0L,KAAK2iB,KAAKqxK,EAAWA,EAAWC,EAAWA,GAE3C,CAEX,EAMIL,GAAoB,SAA2B3+G,EAAM6+G,EAAIC,GAE3D,IAAIG,EAAIj/G,EAAK+7G,UACTmD,EAAIl/G,EAAKg8G,UACTmD,EAAIn/G,EAAK3yC,QAAU,EACnBjjC,EAAI41E,EAAK5yC,OAAS,EAClBgyJ,EAAWN,EAAKD,EAChBQ,EAAYF,EAAI/0L,EAOhBuzE,EAAM,CAAC,EAGX,OAAI,IAAMkhH,GAAM,EAAIC,GAQhB,IAAMD,GAAM,EAAIC,GAPlBnhH,EAAIj5D,EAAIu6K,EAERthH,EAAIp6C,EAAI27J,EAAIC,EAAI,EACTxhH,GAaL,EAAIkhH,IAAO,EAAIQ,GAAaD,GAAYA,GAAYC,GACtD1hH,EAAIj5D,EAAIu6K,EAAI70L,EAAI,EAChBuzE,EAAIp6C,EAAI27J,EAAI90L,EAAI00L,EAAK,EAAID,EAGlBlhH,GAIL,EAAIkhH,IAAO,EAAIQ,GAAaD,GAAYA,GAAYC,GACtD1hH,EAAIj5D,EAAIu6K,EAAI70L,EAAI,EAChBuzE,EAAIp6C,EAAI27J,EAAI90L,EAAI00L,EAAK,EAAID,EAGlBlhH,GAIL,EAAImhH,IAAOM,IAAa,EAAIC,GAAaD,GAAYC,IACvD1hH,EAAIj5D,EAAIu6K,EAAIE,EAAIN,EAAK,EAAIC,EACzBnhH,EAAIp6C,EAAI27J,EAAIC,EAAI,EAGTxhH,GAIL,EAAImhH,IAAOM,IAAa,EAAIC,GAAaD,GAAYC,IACvD1hH,EAAIj5D,EAAIu6K,EAAIE,EAAIN,EAAK,EAAIC,EACzBnhH,EAAIp6C,EAAI27J,EAAIC,EAAI,EAGTxhH,GAKFA,CACT,EAKIkgH,GAAsB,SAA6BrD,EAAYj2L,GAEjE,IAAK,IAAIqE,EAAI,EAAGA,EAAI4xL,EAAWkB,SAAU9yL,IAAK,CAE5C,IAAI28E,EAAOi1G,EAAWiB,YAAY7yL,GAC9Bg0L,EAAWpC,EAAWc,UAAU/1G,EAAK45D,UACrC71I,EAASkxL,EAAWa,YAAYuB,GAChCC,EAAWrC,EAAWc,UAAU/1G,EAAKo6B,UACrCr1G,EAASkwL,EAAWa,YAAYwB,GAGhCuB,EAAa9zL,EAAOyxL,UAAYzyL,EAAOyyL,UACvCsC,EAAa/zL,EAAO0xL,UAAY1yL,EAAO0yL,UAI3C,GAAI,IAAMoC,GAAc,IAAMC,EAA9B,CAKA,IAAIt1I,EAAS41I,GAAkBr1L,EAAQ80L,EAAYC,GAC/Cr1I,EAAS21I,GAAkBr0L,GAAS,EAAI8zL,GAAa,EAAIC,GACzDhoI,EAAKrN,EAAOtkC,EAAIqkC,EAAOrkC,EACvB4xC,EAAKtN,EAAOzlB,EAAIwlB,EAAOxlB,EACvBnwB,EAAIrI,KAAK2iB,KAAK2oC,EAAKA,EAAKC,EAAKA,GAC7BqwC,EAAQ57F,KAAK4iB,IAAI43D,EAAKm3G,YAActpL,EAAG,GAAKmyE,EAAKo3G,WACrD,GAAI,IAAMvpL,EACR,IAAIqrL,EAAS93F,EAAQtwC,EAAKjjD,EACtBsrL,EAAS/3F,EAAQrwC,EAAKljD,OAEtBqrL,EAAS,EACTC,EAAS,EAIVp1L,EAAOuyL,WACVvyL,EAAOktB,SAAWioK,EAClBn1L,EAAOmtB,SAAWioK,GAEfp0L,EAAOuxL,WACVvxL,EAAOksB,SAAWioK,EAClBn0L,EAAOmsB,SAAWioK,EAxBpB,CA8BF,CACF,EAKIZ,GAAyB,SAAgCtD,EAAYj2L,GACvE,GAAwB,IAApBA,EAAQykG,QAOZ,IAJA,IAAIs2F,EAAgB,EAIX12L,EAAI,EAAGA,EAAI4xL,EAAWe,SAAS30L,OAAQgC,IAAK,CACnD,IAAImtB,EAAQykK,EAAWe,SAAS3yL,GAC5BsyH,EAAWnlG,EAAMnvB,OAMrB,GAAI,IAAMgC,EACR,IAAIugI,EAAUqxD,EAAWrlK,aAAe,EACpCi0G,EAAUoxD,EAAWtlK,YAAc,MAGvC,KAAI3E,EAAOiqK,EAAWa,YAAYb,EAAWc,UAAUvlK,EAAM,KACzDhxB,EAASy1L,EAAWa,YAAYb,EAAWc,UAAU/qK,EAAK8/I,WAC1DlnC,EAAUpkI,EAAOg3L,UACjB3yD,EAAUrkI,EAAOi3L,SAH4C,CASnE,IAAK,IAAInsL,EAAI,EAAGA,EAAIqrH,EAAUrrH,IAAK,CACjC,IAAImwE,EAAOw6G,EAAWa,YAAYb,EAAWc,UAAUvlK,EAAMlmB,KAG7D,IAAImwE,EAAK67G,SAAT,CAGA,IAAItxH,EAAK4+D,EAAUnpD,EAAK+7G,UACpBvxH,EAAK4+D,EAAUppD,EAAKg8G,UACpBlqK,EAAI/mB,KAAK2iB,KAAK68C,EAAKA,EAAKC,EAAKA,GACjC,GAAI14C,EAAIwtK,EAAe,CACrB,IAAIl3J,EAAK7jC,EAAQykG,QAAUz+B,EAAKz4C,EAC5BuW,EAAK9jC,EAAQykG,QAAUx+B,EAAK14C,EAChCkuD,EAAKxpD,SAAW4R,EAChB43C,EAAKvpD,SAAW4R,CAElB,CAVA,CAYF,CACF,CACF,EASI01J,GAAkB,SAAyBvD,EAAYj2L,GAEzD,IAAIojB,EAAQ,GACR27B,EAAQ,EACRC,GAAO,EAKX57B,EAAM9e,KAAKnB,MAAMigB,EAAO6yK,EAAWe,SAAS,IAC5Ch4I,GAAOi3I,EAAWe,SAAS,GAAG30L,OAG9B,MAAO08C,GAASC,EAAK,CAEnB,IAAIu9D,EAASn5F,EAAM27B,KACfwmC,EAAY0wG,EAAWc,UAAUx6E,GACjC9gC,EAAOw6G,EAAWa,YAAYvxG,GAC9BnG,EAAW3D,EAAK2D,SAGpB,GAAI,EAAIA,EAAS/8E,SAAWo5E,EAAK67G,SAAU,CASzC,IARA,IAAI0D,EAAOv/G,EAAKxpD,QACZgpK,EAAOx/G,EAAKvpD,QAOP7tB,EAAI,EAAGA,EAAI+6E,EAAS/8E,OAAQgC,IAAK,CACxC,IAAI62L,EAAYjF,EAAWa,YAAYb,EAAWc,UAAU33G,EAAS/6E,KAErE62L,EAAUjpK,SAAW+oK,EACrBE,EAAUhpK,SAAW+oK,EAErB73K,IAAQ47B,GAAOogC,EAAS/6E,EAC1B,CAGAo3E,EAAKxpD,QAAU,EACfwpD,EAAKvpD,QAAU,CACjB,CACF,CACF,EAMIunK,GAAkB,SAAyBxD,EAAYj2L,GAKzD,IAAK,IAAIqE,EAAI,EAAGA,EAAI4xL,EAAWrR,SAAUvgL,IAAK,CAC5C,IAAI+b,EAAI61K,EAAWa,YAAYzyL,GAC3B,EAAI+b,EAAEg/D,SAAS/8E,SAEjB+d,EAAEinE,UAAOtkF,EACTqd,EAAEgnE,UAAOrkF,EACTqd,EAAEmnE,UAAOxkF,EACTqd,EAAEknE,UAAOvkF,EAEb,CACA,IAASsB,EAAI,EAAGA,EAAI4xL,EAAWrR,SAAUvgL,IAAK,CACxC+b,EAAI61K,EAAWa,YAAYzyL,GAC/B,KAAI,EAAI+b,EAAEg/D,SAAS/8E,QAAU+d,EAAEk3K,UAA/B,CASA,IAAI6D,EAAYC,GAAWh7K,EAAE6R,QAAS7R,EAAE8R,QAAS+jK,EAAWK,aAC5Dl2K,EAAEo3K,WAAa2D,EAAUh7K,EACzBC,EAAEq3K,WAAa0D,EAAUn8J,EACzB5e,EAAE6R,QAAU,EACZ7R,EAAE8R,QAAU,EACZ9R,EAAEgnE,KAAOhnE,EAAEo3K,UAAYp3K,EAAEyoB,MACzBzoB,EAAEinE,KAAOjnE,EAAEo3K,UAAYp3K,EAAEyoB,MACzBzoB,EAAEknE,KAAOlnE,EAAEq3K,UAAYr3K,EAAE0oB,OACzB1oB,EAAEmnE,KAAOnnE,EAAEq3K,UAAYr3K,EAAE0oB,OAKzBuyJ,GAAyBj7K,EAAG61K,EAlB5B,CAmBF,CAGA,IAAS5xL,EAAI,EAAGA,EAAI4xL,EAAWrR,SAAUvgL,IAAK,CACxC+b,EAAI61K,EAAWa,YAAYzyL,GAC3B,EAAI+b,EAAEg/D,SAAS/8E,SAAW+d,EAAEk3K,WAC9Bl3K,EAAEo3K,WAAap3K,EAAEinE,KAAOjnE,EAAEgnE,MAAQ,EAClChnE,EAAEq3K,WAAar3K,EAAEmnE,KAAOnnE,EAAEknE,MAAQ,EAClClnE,EAAEyoB,MAAQzoB,EAAEinE,KAAOjnE,EAAEgnE,KACrBhnE,EAAE0oB,OAAS1oB,EAAEmnE,KAAOnnE,EAAEknE,KAM1B,CACF,EAOI8zG,GAAa,SAAoBlB,EAAQC,EAAQnrL,GAEnD,IAAIozF,EAAQ57F,KAAK2iB,KAAK+wK,EAASA,EAASC,EAASA,GACjD,GAAI/3F,EAAQpzF,EACV,IAAIoqE,EAAM,CACRj5D,EAAGnR,EAAMkrL,EAAS93F,EAClBpjE,EAAGhwB,EAAMmrL,EAAS/3F,QAGhBhpB,EAAM,CACRj5D,EAAG+5K,EACHl7J,EAAGm7J,GAOP,OAAO/gH,CACT,EAMIiiH,GAA2B,SAASA,EAAyB5/G,EAAMw6G,GAErE,IAAInqB,EAAWrwF,EAAKqwF,SACpB,GAAI,MAAQA,EAAZ,CAQA,IAAI5tH,EAAI+3I,EAAWa,YAAYb,EAAWc,UAAUjrB,IAChDwvB,GAAO,EA+BX,OA5BI,MAAQp9I,EAAEmpC,MAAQ5L,EAAK4L,KAAOnpC,EAAEy5I,SAAWz5I,EAAEmpC,QAC/CnpC,EAAEmpC,KAAO5L,EAAK4L,KAAOnpC,EAAEy5I,SACvB2D,GAAO,IAKL,MAAQp9I,EAAEkpC,MAAQ3L,EAAK2L,KAAOlpC,EAAEw5I,QAAUx5I,EAAEkpC,QAC9ClpC,EAAEkpC,KAAO3L,EAAK2L,KAAOlpC,EAAEw5I,QACvB4D,GAAO,IAKL,MAAQp9I,EAAEqpC,MAAQ9L,EAAK8L,KAAOrpC,EAAE25I,UAAY35I,EAAEqpC,QAChDrpC,EAAEqpC,KAAO9L,EAAK8L,KAAOrpC,EAAE25I,UACvByD,GAAO,IAKL,MAAQp9I,EAAEopC,MAAQ7L,EAAK6L,KAAOppC,EAAE05I,OAAS15I,EAAEopC,QAC7CppC,EAAEopC,KAAO7L,EAAK6L,KAAOppC,EAAE05I,OACvB0D,GAAO,GAKLA,EAEKD,EAAyBn9I,EAAG+3I,QAFrC,CAnCA,CA2CF,EACIU,GAAqB,SAA4BV,EAAYj2L,GAG/D,IAFA,IAAIm/E,EAAQ82G,EAAWa,YACnBr+H,EAAa,GACRp0D,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAAK,CACrC,IAAIo3E,EAAO0D,EAAM96E,GACbk3L,EAAM9/G,EAAK87G,OACX/+H,EAAYC,EAAW8iI,GAAO9iI,EAAW8iI,IAAQ,GACrD/iI,EAAUl0D,KAAKm3E,EACjB,CACA,IAAI+/G,EAAS,EACb,IAASn3L,EAAI,EAAGA,EAAIo0D,EAAWp2D,OAAQgC,IAAK,CAC1C,IAAInB,EAAIu1D,EAAWp0D,GACnB,GAAKnB,EAAL,CAGAA,EAAEinC,GAAK+oD,IACPhwF,EAAEonC,IAAM4oD,IACRhwF,EAAEknC,GAAK8oD,IACPhwF,EAAEqnC,IAAM2oD,IACR,IAAK,IAAI5nF,EAAI,EAAGA,EAAIpI,EAAEb,OAAQiJ,IAAK,CACjC,IAAI8U,EAAIld,EAAEoI,GACVpI,EAAEinC,GAAK3jC,KAAKyI,IAAI/L,EAAEinC,GAAI/pB,EAAEo3K,UAAYp3K,EAAEyoB,MAAQ,GAC9C3lC,EAAEonC,GAAK9jC,KAAKwI,IAAI9L,EAAEonC,GAAIlqB,EAAEo3K,UAAYp3K,EAAEyoB,MAAQ,GAC9C3lC,EAAEknC,GAAK5jC,KAAKyI,IAAI/L,EAAEknC,GAAIhqB,EAAEq3K,UAAYr3K,EAAE0oB,OAAS,GAC/C5lC,EAAEqnC,GAAK/jC,KAAKwI,IAAI9L,EAAEqnC,GAAInqB,EAAEq3K,UAAYr3K,EAAE0oB,OAAS,EACjD,CACA5lC,EAAEgH,EAAIhH,EAAEonC,GAAKpnC,EAAEinC,GACfjnC,EAAE/B,EAAI+B,EAAEqnC,GAAKrnC,EAAEknC,GACfoxJ,GAAUt4L,EAAEgH,EAAIhH,EAAE/B,CAdlB,CAeF,CACAs3D,EAAWvyC,MAAK,SAAUirH,EAAIC,GAC5B,OAAOA,EAAGlnI,EAAIknI,EAAGjwI,EAAIgwI,EAAGjnI,EAAIinI,EAAGhwI,CACjC,IACA,IAAIgf,EAAI,EACJ6e,EAAI,EACJy8J,EAAQ,EACRC,EAAO,EACPC,EAAUn1L,KAAK2iB,KAAKqyK,GAAUvF,EAAWtlK,YAAcslK,EAAWrlK,aACtE,IAASvsB,EAAI,EAAGA,EAAIo0D,EAAWp2D,OAAQgC,IAAK,CACtCnB,EAAIu1D,EAAWp0D,GACnB,GAAKnB,EAAL,CAGA,IAASoI,EAAI,EAAGA,EAAIpI,EAAEb,OAAQiJ,IAAK,CAC7B8U,EAAIld,EAAEoI,GACL8U,EAAEk3K,WACLl3K,EAAEo3K,WAAar3K,EAAIjd,EAAEinC,GACrB/pB,EAAEq3K,WAAaz4J,EAAI97B,EAAEknC,GAEzB,CACAjqB,GAAKjd,EAAEgH,EAAIlK,EAAQo1L,iBACnBqG,GAASv4L,EAAEgH,EAAIlK,EAAQo1L,iBACvBsG,EAAOl1L,KAAKwI,IAAI0sL,EAAMx4L,EAAE/B,GACpBs6L,EAAQE,IACV38J,GAAK08J,EAAO17L,EAAQo1L,iBACpBj1K,EAAI,EACJs7K,EAAQ,EACRC,EAAO,EAfT,CAiBF,CACF,EAEIE,GAAa,CACf5zF,KAAK,EAELpc,QAAS,GAETjK,iBAAa5+E,EAEbktL,cAAc,EAEd4L,oBAAqB,GAErB75B,6BAA6B,EAE7Be,mBAAehgK,EAEf+4L,UAAU,EAEV3yH,UAAMpmE,EAENg5L,UAAMh5L,EAENovB,SAAU,SAAkBspD,GAAO,EAEnCv1D,UAAMnjB,EAEN4kG,SAAS,EAET2M,kBAAmB,IAEnB+uD,qBAAiBtgK,EAEjBogK,cAAe,SAAuB1nF,EAAMp3E,GAC1C,OAAO,CACT,EAEA+iE,WAAOrkE,EAEPo1B,UAAMp1B,EAEN2kE,UAAW,SAAmB+T,EAAMtpD,GAClC,OAAOA,CACT,GAGF,SAAS6pK,GAAWh8L,GAClBK,KAAKL,QAAU+jH,GAAO,CAAC,EAAG63E,GAAY57L,EACxC,CACAg8L,GAAWp0L,UAAU2b,IAAM,WACzB,IAAItB,EAAS5hB,KAAKL,QACdA,EAAUiiB,EACVuN,EAAKvN,EAAOuN,GACZi5E,EAAOzoG,EAAQyoG,KACftpB,EAAQspB,EAAKtpB,QAAQozB,IAAI,WACzBvyG,EAAQkmB,OACVi5D,EAAQA,EAAMj5D,KAAKlmB,EAAQkmB,OAE7B,IAAI4zD,EAAKquB,GAAgBnoG,EAAQ2hF,YAAc3hF,EAAQ2hF,YAAc,CACnEx3C,GAAI,EACJC,GAAI,EACJlgC,EAAGslB,EAAGqZ,QACN1nC,EAAGquB,EAAGsZ,WAER,GAAa,IAATgxC,EAAG34E,GAAoB,IAAT24E,EAAG5vE,EACnBu+F,EAAKtpB,QAAQ8qB,gBAAgB5pG,KAAML,GAAS,SAAU++F,GACpD,MAAO,CACL5+E,EAAG25D,EAAG3vC,GACNnL,EAAG86C,EAAG1vC,GAEV,QACK,CAEL,IAAI6xJ,EAAQ98G,EAAMwK,OACduyG,EAAS11L,KAAK2iB,KAAK8yK,EAAQniH,EAAG34E,EAAI24E,EAAG5vE,GACrCi/D,EAAO3iE,KAAKugF,MAAMm1G,GAClBH,EAAOv1L,KAAKugF,MAAMjN,EAAG5vE,EAAI4vE,EAAG34E,EAAI+6L,GAChCC,EAAQ,SAAe9sL,GACzB,GAAW,MAAPA,EACF,OAAO7I,KAAKyI,IAAIk6D,EAAM4yH,GAEtB,IAAI9sL,EAAMzI,KAAKyI,IAAIk6D,EAAM4yH,GACrB9sL,GAAOk6D,EACTA,EAAO95D,EAEP0sL,EAAO1sL,CAGb,EACI+sL,EAAQ,SAAe/sL,GACzB,GAAW,MAAPA,EACF,OAAO7I,KAAKwI,IAAIm6D,EAAM4yH,GAEtB,IAAI/sL,EAAMxI,KAAKwI,IAAIm6D,EAAM4yH,GACrB/sL,GAAOm6D,EACTA,EAAO95D,EAEP0sL,EAAO1sL,CAGb,EACIgtL,EAAQr8L,EAAQmpE,KAChBmzH,EAAwB,MAAhBt8L,EAAQ+7L,KAAe/7L,EAAQ+7L,KAAO/7L,EAAQu8L,QAG1D,GAAa,MAATF,GAA0B,MAATC,EACnBnzH,EAAOkzH,EACPN,EAAOO,OACF,GAAa,MAATD,GAA0B,MAATC,EAC1BnzH,EAAOkzH,EACPN,EAAOv1L,KAAK0I,KAAK+sL,EAAQ9yH,QACpB,GAAa,MAATkzH,GAA0B,MAATC,EAC1BP,EAAOO,EACPnzH,EAAO3iE,KAAK0I,KAAK+sL,EAAQF,QAMtB,GAAIA,EAAO5yH,EAAO8yH,EAAO,CAC5B,IAAIO,EAAKL,IACLM,EAAKL,KAGJI,EAAK,GAAKC,GAAMR,EACnBE,EAAMK,EAAK,IACDC,EAAK,GAAKD,GAAMP,GAC1BG,EAAMK,EAAK,EAEf,MAEE,MAAOV,EAAO5yH,EAAO8yH,EAAO,CAC1B,IAAIS,EAAMP,IACNQ,EAAMP,KAGLO,EAAM,GAAKD,GAAOT,EACrBG,EAAMO,EAAM,GAEZR,EAAMO,EAAM,EAEhB,CAEF,IAAIE,EAAY9iH,EAAG5vE,EAAI6xL,EACnBc,EAAa/iH,EAAG34E,EAAIgoE,EAKxB,GAJInpE,EAAQ87L,WACVc,EAAY,EACZC,EAAa,GAEX78L,EAAQiwL,aACV,IAAK,IAAI5rL,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAAK,CACrC,IAAIo3E,EAAO0D,EAAM96E,GACbqK,EAAM+sE,EAAKyF,SAAS/uD,SACX,MAATzjB,EAAIyR,GAAsB,MAATzR,EAAIswB,IAEvBtwB,EAAIyR,EAAI,EACRzR,EAAIswB,EAAI,GAEV,IAAI8yJ,EAAMr2G,EAAKymF,iBAAiBliK,GAC5Bk+C,EAAIl+C,EAAQ67L,oBACZ3xL,EAAI4nL,EAAI5nL,EAAIg0C,EACZ/8C,EAAI2wL,EAAI3wL,EAAI+8C,EAChB0+I,EAAYp2L,KAAKwI,IAAI4tL,EAAW1yL,GAChC2yL,EAAar2L,KAAKwI,IAAI6tL,EAAY17L,EACpC,CAwBF,IAtBA,IAAI27L,EAAW,CAAC,EAEZC,EAAO,SAAc3zH,EAAKu1C,GAC5B,QAAOm+E,EAAS,KAAO1zH,EAAM,IAAMu1C,EACrC,EACI5xC,EAAM,SAAa3D,EAAKu1C,GAC1Bm+E,EAAS,KAAO1zH,EAAM,IAAMu1C,IAAO,CACrC,EAGIv1C,EAAM,EACNu1C,EAAM,EACNq+E,EAAiB,WACnBr+E,IACIA,GAAOo9E,IACTp9E,EAAM,EACNv1C,IAEJ,EAGI6zH,EAAY,CAAC,EACRhtL,EAAK,EAAGA,EAAKkvE,EAAM98E,OAAQ4N,IAAM,CACxC,IAAI+rH,EAAQ78C,EAAMlvE,GACditL,EAAQl9L,EAAQmyB,SAAS6pG,GAC7B,GAAIkhE,SAAwBn6L,IAAdm6L,EAAM9zH,UAAmCrmE,IAAdm6L,EAAMv+E,KAAoB,CAEjE,IAAIqxC,EAAO,CACT5mF,IAAK8zH,EAAM9zH,IACXu1C,IAAKu+E,EAAMv+E,KAEb,QAAiB57G,IAAbitJ,EAAKrxC,IAAmB,CAE1BqxC,EAAKrxC,IAAM,EACX,MAAOo+E,EAAK/sC,EAAK5mF,IAAK4mF,EAAKrxC,KACzBqxC,EAAKrxC,KAET,MAAO,QAAiB57G,IAAbitJ,EAAK5mF,IAAmB,CAEjC4mF,EAAK5mF,IAAM,EACX,MAAO2zH,EAAK/sC,EAAK5mF,IAAK4mF,EAAKrxC,KACzBqxC,EAAK5mF,KAET,CACA6zH,EAAUjhE,EAAMnyH,MAAQmmJ,EACxBjjF,EAAIijF,EAAK5mF,IAAK4mF,EAAKrxC,IACrB,CACF,CACA,IAAI80E,EAAS,SAAgBv5E,EAAS71G,GACpC,IAAI8b,EAAG6e,EACP,GAAIk7E,EAAQzW,UAAYyW,EAAQ3a,WAC9B,OAAO,EAIT,IAAI29F,EAAQD,EAAU/iF,EAAQrwG,MAC9B,GAAIqzL,EACF/8K,EAAI+8K,EAAMv+E,IAAMi+E,EAAYA,EAAY,EAAI9iH,EAAG3vC,GAC/CnL,EAAIk+J,EAAM9zH,IAAMyzH,EAAaA,EAAa,EAAI/iH,EAAG1vC,OAC5C,CAGL,MAAO2yJ,EAAK3zH,EAAKu1C,GACfq+E,IAEF78K,EAAIw+F,EAAMi+E,EAAYA,EAAY,EAAI9iH,EAAG3vC,GACzCnL,EAAIoqC,EAAMyzH,EAAaA,EAAa,EAAI/iH,EAAG1vC,GAC3C2iC,EAAI3D,EAAKu1C,GACTq+E,GACF,CACA,MAAO,CACL78K,EAAGA,EACH6e,EAAGA,EAEP,EACAmgD,EAAM8qB,gBAAgB5pG,KAAML,EAASyzL,EACvC,CACA,OAAOpzL,IACT,EAGA,IAAI88L,GAAa,CACf/1H,MAAO,WAAkB,EAEzBjvC,KAAM,WAAiB,GAKzB,SAASilK,GAAWp9L,GAClBK,KAAKL,QAAU+jH,GAAO,CAAC,EAAGo5E,GAAYn9L,EACxC,CAGAo9L,GAAWx1L,UAAU2b,IAAM,WACzB,IAAIvjB,EAAUK,KAAKL,QACfyoG,EAAOzoG,EAAQyoG,KACfD,EAASnoG,KAwBb,OAnBAL,EAAQwvB,GACRg5E,EAAOsB,KAAK,eAIZrB,EAAKtpB,QAAQirB,WAAU,WACrB,MAAO,CACLjqF,EAAG,EACH6e,EAAG,EAEP,IAGAwpE,EAAOzsB,IAAI,cAAe/7E,EAAQonE,OAClCohC,EAAOsB,KAAK,eAGZtB,EAAOzsB,IAAI,aAAc/7E,EAAQm4B,MACjCqwE,EAAOsB,KAAK,cACLzpG,IACT,EAGA+8L,GAAWx1L,UAAUuwB,KAAO,WAC1B,OAAO93B,IACT,EAEA,IAAIg9L,GAAa,CACfjzF,eAAWrnG,EAEX06E,UAAM16E,EAENohF,SAAKphF,EAELilG,KAAK,EAELpc,QAAS,GAETm3E,mBAAehgK,EAEf4kG,SAAS,EAET2M,kBAAmB,IAEnB+uD,qBAAiBtgK,EAEjBogK,cAAe,SAAuB1nF,EAAMp3E,GAC1C,OAAO,CACT,EAEA+iE,WAAOrkE,EAEPo1B,UAAMp1B,EAEN2kE,UAAW,SAAmB+T,EAAMtpD,GAClC,OAAOA,CACT,GAGF,SAASmrK,GAAat9L,GACpBK,KAAKL,QAAU+jH,GAAO,CAAC,EAAGs5E,GAAYr9L,EACxC,CACAs9L,GAAa11L,UAAU2b,IAAM,WAC3B,IAAIvjB,EAAUK,KAAKL,QACfyoG,EAAOzoG,EAAQyoG,KACftpB,EAAQspB,EAAKtpB,QACbo+G,EAAUl7E,EAAKriH,EAAQoqG,WAC3B,SAASqoF,EAAYh3G,GACnB,GAAyB,MAArBz7E,EAAQoqG,UACV,OAAOo0B,GAAa/iD,EAAKtpD,YAE3B,GAAIorK,EACF,OAAOv9L,EAAQoqG,UAAU3uB,GAE3B,IAAI/sE,EAAM1O,EAAQoqG,UAAU3uB,EAAKyF,SAAS5hE,KAAKzV,IAC/C,OAAW,MAAP6E,EACK,KAEFA,CACT,CAQA,OAPAywE,EAAM8qB,gBAAgB5pG,KAAML,GAAS,SAAUy7E,EAAMp3E,GACnD,IAAI8tB,EAAWsgK,EAAYh3G,GAC3B,OAAIA,EAAKgoB,UAAwB,MAAZtxE,GAGdA,CACT,IACO9xB,IACT,EAEA,IAAIw5F,GAAW,CACbmO,KAAK,EAELpc,QAAS,GAETjK,iBAAa5+E,EAEb4kG,SAAS,EAET2M,kBAAmB,IAEnB+uD,qBAAiBtgK,EAEjBogK,cAAe,SAAuB1nF,EAAMp3E,GAC1C,OAAO,CACT,EAEA+iE,WAAOrkE,EAEPo1B,UAAMp1B,EAEN2kE,UAAW,SAAmB+T,EAAMtpD,GAClC,OAAOA,CACT,GAGF,SAASqrK,GAAax9L,GACpBK,KAAKL,QAAU+jH,GAAO,CAAC,EAAGlqB,GAAU75F,EACtC,CACAw9L,GAAa51L,UAAU2b,IAAM,WAC3B,IAAIvjB,EAAUK,KAAKL,QACfwvB,EAAKxvB,EAAQwvB,GACbi5E,EAAOzoG,EAAQyoG,KACf3uB,EAAKquB,GAAgBnoG,EAAQ2hF,YAAc3hF,EAAQ2hF,YAAc,CACnEx3C,GAAI,EACJC,GAAI,EACJlgC,EAAGslB,EAAGqZ,QACN1nC,EAAGquB,EAAGsZ,WAEJ2qJ,EAAS,SAAgBh4G,EAAMp3E,GACjC,MAAO,CACL8b,EAAG25D,EAAG3vC,GAAK3jC,KAAKugF,MAAMvgF,KAAKgJ,SAAWsqE,EAAG5vE,GACzC80B,EAAG86C,EAAG1vC,GAAK5jC,KAAKugF,MAAMvgF,KAAKgJ,SAAWsqE,EAAG34E,GAE7C,EAEA,OADAsnG,EAAKtpB,QAAQ8qB,gBAAgB5pG,KAAML,EAASyzL,GACrCpzL,IACT,EAEA,IAAImoG,GAAS,CAAC,CACZ1jG,KAAM,eACNm8E,KAAMsvG,IACL,CACDzrL,KAAM,SACNm8E,KAAMkyG,IACL,CACDruL,KAAM,aACNm8E,KAAM+yG,IACL,CACDlvL,KAAM,OACNm8E,KAAM40G,IACL,CACD/wL,KAAM,OACNm8E,KAAM+6G,IACL,CACDl3L,KAAM,OACNm8E,KAAMm8G,IACL,CACDt4L,KAAM,SACNm8E,KAAMq8G,IACL,CACDx4L,KAAM,SACNm8E,KAAMu8G,KAGR,SAASC,GAAaz9L,GACpBK,KAAKL,QAAUA,EACfK,KAAKg1K,cAAgB,CACvB,CAEA,IAAIqoB,GAAO,WAAiB,EACxBC,GAAc,WAChB,MAAM,IAAI3hL,MAAM,4CAClB,EACAyhL,GAAa71L,UAAY,CACvB2wJ,yBAA0BmlC,GAC1Bh9C,OAAQ,WACNrgJ,KAAKg1K,eACP,EACAt9G,KAAM2lI,GACNrO,WAAY,WACV,OAAO,CACT,EACArrG,IAAK25G,GACL15G,IAAK05G,IAGP,IAAIC,GAAQ,CACZA,gBAAwB,GACxBA,oBAA4B,WAC1B,IAAIC,EAAcx9L,KAAKw9L,YAAc,CAAC,EAClCjmI,EAAWv3D,KAcXy9L,EAAY,SAAmB39K,EAAG6e,EAAG2qD,EAAM/mC,EAAOm7I,EAAaC,EAAWpyG,GAC5E,IAAIzhD,EAAK4zJ,EAAY59K,EAAIwpE,EAAO,EAAIiC,EAChCthD,EAAKyzJ,EAAY59K,EAAIwpE,EAAO,EAAIiC,EAChCxhD,EAAK2zJ,EAAY/+J,EAAI2qD,EAAO,EAAIiC,EAChCrhD,EAAKwzJ,EAAY/+J,EAAI2qD,EAAO,EAAIiC,EAChCssB,EAAS/tE,GAAMhqB,GAAKA,GAAKmqB,GAAMF,GAAMpL,GAAKA,GAAKuL,EACnD,OAAO2tE,CACT,EACIxwC,EAAY,SAAmBvnD,EAAG6e,EAAG2qD,EAAM/mC,EAAOm7I,GACpD,IAAIE,EAAW99K,EAAI3Z,KAAKmgC,IAAIic,GAAS5jB,EAAIx4B,KAAKkgC,IAAIkc,GAC9Cs7I,EAAW/9K,EAAI3Z,KAAKkgC,IAAIkc,GAAS5jB,EAAIx4B,KAAKmgC,IAAIic,GAC9Cu7I,EAAUF,EAAWt0G,EACrBy0G,EAAUF,EAAWv0G,EACrB00G,EAAcF,EAAUJ,EAAY59K,EACpCm+K,EAAcF,EAAUL,EAAY/+J,EACxC,MAAO,CACL7e,EAAGk+K,EACHr/J,EAAGs/J,EAEP,EACIC,EAAkB,SAAyB1nC,EAAKltE,EAAM/mC,EAAOm7I,GAE/D,IADA,IAAIS,EAAS,GACJn6L,EAAI,EAAGA,EAAIwyJ,EAAIx0J,OAAQgC,GAAK,EAAG,CACtC,IAAI8b,EAAI02I,EAAIxyJ,GACR26B,EAAI63H,EAAIxyJ,EAAI,GAChBm6L,EAAOl6L,KAAKojE,EAAUvnD,EAAG6e,EAAG2qD,EAAM/mC,EAAOm7I,GAC3C,CACA,OAAOS,CACT,EACIC,EAAc,SAAqB5nC,GAErC,IADA,IAAI1hF,EAAM,GACD9wE,EAAI,EAAGA,EAAIwyJ,EAAIx0J,OAAQgC,IAAK,CACnC,IAAI65C,EAAI24G,EAAIxyJ,GACZ8wE,EAAI7wE,KAAK45C,EAAE/9B,EAAG+9B,EAAElf,EAClB,CACA,OAAOm2C,CACT,EACIupH,EAAc,SAAqB19G,GACrC,OAAOA,EAAKkwE,OAAO,SAASC,QAAUnwE,EAAKkwE,OAAO,eAAeC,QAAU,CAC7E,EACIwtC,EAAmB,SAA0B75L,EAAM85L,GACjDl/K,EAAOk/K,KACTA,EAAOf,EAAYe,IAErBf,EAAY/4L,GAAQi/G,GAAO,CACzBj/G,KAAMA,EACNinB,OAAQ,EAAE,KAAO,GAAK,KAAO,GAAK,IAAM,IAAM,IAAM,IACpD8yK,QAAS,SAAiB1+K,EAAG6e,EAAG2qD,EAAM/mC,EAAOm7I,EAAanyG,GACxD,IAAI7/D,EAAS0yK,EAAYF,EAAgBl+L,KAAK0rB,OAAQ49D,EAAO,EAAIiC,EAAShpC,EAAOm7I,IAC7E7lF,EAASssB,GAAyBrkH,EAAG6e,EAAGjT,GAC5C,OAAOmsF,CACT,EACA4mF,aAAchB,EACdznK,KAAM,SAAcj2B,EAASupF,EAAM/mC,EAAOm7I,GACxC,IAAIhyK,EAASwyK,EAAgBl+L,KAAK0rB,OAAQ49D,EAAM/mC,EAAOm7I,GACvDnmI,EAASmnI,eAAe,UAAxBnnI,CAAmCx3D,EAAS2rB,EAC9C,EACA42I,QAAS,SAAiB3hF,GACxB,OAAO,CACT,EACAhoC,IAAK0lJ,GACJE,EACL,EACAD,EAAiB,OAAQ,CACvBE,QAAS1uE,GACT2uE,aAAc3uE,GACd95F,KAAMg6F,GACNsyC,QAASvyC,GACTp3E,IAAKo3E,KAEPuuE,EAAiB,WAAY,CAC3B5yK,OAAQ,EAAE,KAAO,GAAK,EAAG,EAAG,KAAO,MAErC4yK,EAAiB,QAAS,YAC1BA,EAAiB,qBAAsB,CACrC5yK,OAAQ8xK,EAAY,YAAY9xK,OAChCy5C,aAAc,CAAC,GAAI,KACnBs5H,aAAchB,EACdznK,KAAM,SAAcj2B,EAASupF,EAAM/mC,EAAOm7I,EAAaC,GACrD,IAAIgB,EAAWT,EAAgBl+L,KAAK0rB,OAAQ49D,EAAM/mC,EAAOm7I,GACrDkB,EAAS5+L,KAAKmlE,aACd05H,EAAcx3H,EAAUu3H,EAAO,GAAIA,EAAO,GAAIt1G,EAAM/mC,EAAOm7I,GAC/DnmI,EAASmnI,eAAe1+L,KAAKyE,KAA7B8yD,CAAmCx3D,EAAS4+L,EAAUE,EACxD,EACAlmJ,IAAK,SAAagoC,GAChB,MAA2B,GAApB09G,EAAY19G,EACrB,IAEF29G,EAAiB,eAAgB,CAC/B5yK,OAAQ,CAAC,EAAG,EAAG,KAAO,IAAM,KAAO,GAAK,EAAG,GAC3CozK,UAAW,EAAE,KAAO,IAAM,KAAO,GAAK,KAAO,GAAK,KAAO,IACzDN,QAAS,SAAiB1+K,EAAG6e,EAAG2qD,EAAM/mC,EAAOm7I,EAAaC,EAAWpyG,GACnE,IAAIwzG,EAASX,EAAYF,EAAgBl+L,KAAK0rB,OAAQ49D,EAAO,EAAIiC,EAAShpC,EAAOm7I,IAC7EsB,EAASZ,EAAYF,EAAgBl+L,KAAK8+L,UAAWx1G,EAAO,EAAIiC,EAAShpC,EAAOm7I,IAChF7lF,EAASssB,GAAyBrkH,EAAG6e,EAAGogK,IAAW56D,GAAyBrkH,EAAG6e,EAAGqgK,GACtF,OAAOnnF,CACT,EACA7hF,KAAM,SAAcj2B,EAASupF,EAAM/mC,EAAOm7I,EAAaC,GACrD,IAAIoB,EAASb,EAAgBl+L,KAAK0rB,OAAQ49D,EAAM/mC,EAAOm7I,GACnDsB,EAASd,EAAgBl+L,KAAK8+L,UAAWx1G,EAAM/mC,EAAOm7I,GAC1DnmI,EAASmnI,eAAe1+L,KAAKyE,KAA7B8yD,CAAmCx3D,EAASg/L,EAAQC,EACtD,IAEFV,EAAiB,kBAAmB,CAClCj0J,OAAQ,IACR40J,SAAU,CAAC,GAAI,IAAM,KAAO,KAAO,KAAO,IAAM,GAAI,KACpDT,QAAS,SAAiB1+K,EAAG6e,EAAG2qD,EAAM/mC,EAAOm7I,EAAaC,EAAWpyG,GACnE,IAAIlhE,EAAIqzK,EACJwB,EAAe/4L,KAAK4iB,IAAIsB,EAAEvK,EAAIA,EAAG,GAAK3Z,KAAK4iB,IAAIsB,EAAEsU,EAAIA,EAAG,IAAMx4B,KAAK4iB,KAAKugE,EAAO,EAAIiC,GAAWvrF,KAAKqqC,OAAQ,GAC3G00J,EAASX,EAAYF,EAAgBl+L,KAAK0rB,OAAQ49D,EAAO,EAAIiC,EAAShpC,EAAOm7I,IACjF,OAAOv5D,GAAyBrkH,EAAG6e,EAAGogK,IAAWG,CACnD,EACAlpK,KAAM,SAAcj2B,EAASupF,EAAM/mC,EAAOm7I,EAAaC,GACrD,IAAIoB,EAASb,EAAgBl+L,KAAKi/L,SAAU31G,EAAM/mC,EAAOm7I,GACzDnmI,EAASmnI,eAAe1+L,KAAKyE,KAA7B8yD,CAAmCx3D,EAASg/L,EAAQrB,EAAY59K,EAAG49K,EAAY/+J,EAAG3+B,KAAKqqC,OAASi/C,EAClG,EACAg5E,QAAS,SAAiB3hF,GACxB,OAAOppB,EAAS4nI,cAAcx+G,EAAKkwE,OAAO,SAASC,QAASnwE,EAAKkwE,OAAO,eAAe/uJ,OAAS9B,KAAKqqC,MACvG,IAEFi0J,EAAiB,iBAAkB,CACjC5yK,OAAQ,CAAC,EAAG,EAAG,KAAO,IAAM,KAAO,GAAK,EAAG,GAC3C0zK,iBAAkB,EAAE,KAAO,IAE1B,KAAO,GAAK,KAAO,GAEpB,KAAO,IACPC,aAAc,SAAsB/1G,EAAMq0G,GAExC,IAAI9/I,EAAI79C,KAAKo/L,iBAAiBj9L,QAC1Bm9L,EAAc3B,EAAYr0G,EAC1Bi2G,EAAK,EACLx1J,EAAK,EAGT,OAFA8T,EAAE0hJ,GAAM1hJ,EAAE0hJ,GAAMD,EAChBzhJ,EAAE9T,GAAM8T,EAAE9T,GAAMu1J,EACTzhJ,CACT,EACA2gJ,QAAS,SAAiB1+K,EAAG6e,EAAG2qD,EAAM/mC,EAAOm7I,EAAaC,EAAWpyG,GACnE,IAAIwzG,EAASX,EAAYF,EAAgBl+L,KAAK0rB,OAAQ49D,EAAO,EAAIiC,EAAShpC,EAAOm7I,IAC7EsB,EAASZ,EAAYF,EAAgBl+L,KAAKq/L,aAAa/1G,EAAMq0G,GAAYr0G,EAAO,EAAIiC,EAAShpC,EAAOm7I,IACpG7lF,EAASssB,GAAyBrkH,EAAG6e,EAAGogK,IAAW56D,GAAyBrkH,EAAG6e,EAAGqgK,GACtF,OAAOnnF,CACT,EACA7hF,KAAM,SAAcj2B,EAASupF,EAAM/mC,EAAOm7I,EAAaC,GACrD,IAAIoB,EAASb,EAAgBl+L,KAAK0rB,OAAQ49D,EAAM/mC,EAAOm7I,GACnD2B,EAAenB,EAAgBl+L,KAAKq/L,aAAa/1G,EAAMq0G,GAAYr0G,EAAM/mC,EAAOm7I,GACpFnmI,EAASmnI,eAAe1+L,KAAKyE,KAA7B8yD,CAAmCx3D,EAASg/L,EAAQM,EACtD,IAEFf,EAAiB,MAAO,CACtB5yK,OAAQ,EAAE,KAAO,GAAK,EAAG,EAAG,KAAO,GAAK,GAAI,KAC5CitB,IAAK,SAAagoC,GAChB,MAA2B,KAApB09G,EAAY19G,EACrB,IAEF29G,EAAiB,SAAU,CACzBj0J,OAAQ,IACRm0J,QAAS,SAAiB1+K,EAAG6e,EAAG2qD,EAAM/mC,EAAOm7I,EAAaC,EAAWpyG,GACnE,IAAIlhE,EAAIqzK,EACJ7lF,EAAS1xG,KAAK4iB,IAAIsB,EAAEvK,EAAIA,EAAG,GAAK3Z,KAAK4iB,IAAIsB,EAAEsU,EAAIA,EAAG,IAAMx4B,KAAK4iB,KAAKugE,EAAO,EAAIiC,GAAWvrF,KAAKqqC,OAAQ,GACzG,OAAOwtE,CACT,EACA7hF,KAAM,SAAcj2B,EAASupF,EAAM/mC,EAAOm7I,EAAaC,GACrDpmI,EAASmnI,eAAe1+L,KAAKyE,KAA7B8yD,CAAmCx3D,EAAS29L,EAAY59K,EAAG49K,EAAY/+J,EAAG3+B,KAAKqqC,OAASi/C,EAC1F,EACAg5E,QAAS,SAAiB3hF,GACxB,OAAOppB,EAAS4nI,cAAcx+G,EAAKkwE,OAAO,SAASC,QAASnwE,EAAKkwE,OAAO,eAAe/uJ,OAAS9B,KAAKqqC,MACvG,IAEFi0J,EAAiB,MAAO,CACtB5yK,OAAQ,EAAE,IAAM,GAAI,KAAO,GAAK,KAAO,GAAK,IAAM,GAClD42I,QAAS,SAAiB3hF,GACxB,OAAO,CACT,EACAhoC,IAAK,SAAagoC,GAChB,OAAO,CACT,IAEF29G,EAAiB,SAAU,CACzB5yK,OAAQ,EAAE,IAAM,EAAM,IAAM,EAAM,KAAO,IAAM,KAAO,MAExD4yK,EAAiB,UAAW,CAC1B5yK,OAAQ,EAAE,KAAO,IAAM,GAAI,GAAK,KAAO,IAAM,EAAG,GAChDitB,IAAK,SAAagoC,GAChB,OAAOA,EAAKkwE,OAAO,SAASC,QAAUnwE,EAAKkwE,OAAO,eAAe/uJ,KACnE,IAEFw8L,EAAiB,UAAW,CAC1B5yK,OAAQ,CAAC,EAAG,GAAI,KAAO,KAAO,IAAM,GAAK,GAAI,GAAK,IAAM,GAAK,KAAO,KACpEitB,IAAK,SAAagoC,GAChB,MAAO,IAAOA,EAAKkwE,OAAO,SAASC,QAAUnwE,EAAKkwE,OAAO,eAAe/uJ,KAC1E,GAEJ,GAEI09L,GAAQ,CAGZA,oBAA4B,SAAUC,EAASC,GAC7C,IAAIvwK,EAAKnvB,KAAKmvB,GACVwwK,EAAU3/L,KAAK4/L,4BACfC,EAAaF,EAAQ,GACrBG,EAAYH,EAAQ,GACpBtpK,EAAQspK,EAAQ,GAChB77G,EAAM30D,EAAG20D,MACT1G,EAAOjuD,EAAGiuD,OACVt9D,IAAM2/K,EAAUI,GAAcxpK,EAAQytD,EAAIhkE,GAAKs9D,EAC/Cz+C,IAAM+gK,EAAUI,GAAazpK,EAAQytD,EAAInlD,GAAKy+C,EAClD,MAAO,CAACt9D,EAAG6e,EACb,EACA6gK,0BAAkC,WAChC,GAAIx/L,KAAK+/L,YACP,OAAO//L,KAAK+/L,YAEd,IAAIj1J,EAAY9qC,KAAK8qC,UACjB7N,EAAO6N,EAAUo2D,wBACjBt1F,EAAQ5L,KAAKmvB,GAAGjpB,SAASk7F,iBAAiBt2D,GAC1Ck1J,EAAa,SAAoBv7L,GACnC,OAAOqxC,WAAWlqC,EAAM21K,iBAAiB98K,GAC3C,EACI8mF,EAAU,CACZl7C,KAAM2vJ,EAAW,gBACjB1vJ,MAAO0vJ,EAAW,iBAClBzvJ,IAAKyvJ,EAAW,eAChBxvJ,OAAQwvJ,EAAW,mBAEjBlmI,EAAS,CACXzpB,KAAM2vJ,EAAW,qBACjB1vJ,MAAO0vJ,EAAW,sBAClBzvJ,IAAKyvJ,EAAW,oBAChBxvJ,OAAQwvJ,EAAW,wBAEjB1vK,EAAcwa,EAAUxa,YACxBC,EAAeua,EAAUva,aACzB0vK,EAAa10G,EAAQl7C,KAAOk7C,EAAQj7C,MACpC4vJ,EAAa30G,EAAQh7C,IAAMg7C,EAAQ/6C,OACnC2vJ,EAAYrmI,EAAOzpB,KAAOypB,EAAOxpB,MACjCja,EAAQ4G,EAAKuL,OAASlY,EAAc6vK,GACpCC,EAAY9vK,EAAc2vK,EAC1BI,EAAY9vK,EAAe2vK,EAC3B7vJ,EAAOpT,EAAKoT,KAAOk7C,EAAQl7C,KAAOypB,EAAOzpB,KACzCE,EAAMtT,EAAKsT,IAAMg7C,EAAQh7C,IAAMupB,EAAOvpB,IAC1C,OAAOvwC,KAAK+/L,YAAc,CAAC1vJ,EAAME,EAAK6vJ,EAAWC,EAAWhqK,EAC9D,EACAmpK,qCAA6C,WAC3Cx/L,KAAK+/L,YAAc,IACrB,EACAP,mBAA2B,SAAU1/K,EAAG6e,EAAG2hK,EAAyBxgG,GAClE,OAAO9/F,KAAKugM,oBAAoBzgL,EAAG6e,EAAG2hK,EAAyBxgG,GAAS,EAC1E,EACA0/F,oBAA4B,SAAU1/K,EAAG6e,EAAG2hK,EAAyBxgG,GACnE,IAUI0gG,EACAC,EAXAr6L,EAAOpG,KACP+sB,EAAI/sB,KACJooG,EAAOr7E,EAAE2zK,uBACTC,EAAO,GACPvjH,EAAOrwD,EAAEoC,GAAGiuD,OACZuwE,EAAe5gI,EAAEoC,GAAGy+H,mBACpBgzC,GAAiB9gG,EAAU,GAAK,GAAK1iB,EACrCyjH,GAAiB/gG,EAAU,EAAI,GAAK1iB,EACpC0jH,GAAkBhhG,EAAU,EAAI,GAAK1iB,EACrC2jH,EAAYluG,IAMhB,SAASmuG,EAAOtiG,EAAKuiG,GACnB,GAAIviG,EAAIO,SAAU,CAChB,GAAIwhG,EACF,OAEAA,EAAW/hG,EACXiiG,EAAK18L,KAAKy6F,EAEd,CACA,GAAIA,EAAI66C,WAAuB,MAAV0nD,GAAkBA,EAASF,GAC9C,GAAIP,GAGF,GAAIA,EAAS3vC,OAAO,oBAAoB/uJ,QAAU48F,EAAImyD,OAAO,oBAAoB/uJ,OAAS0+L,EAAS3vC,OAAO,oBAAoB/uJ,QAAU48F,EAAImyD,OAAO,oBAAoB/uJ,MACrK,IAAK,IAAIkC,EAAI,EAAGA,EAAI28L,EAAK3+L,OAAQgC,IAC/B,GAAI28L,EAAK38L,GAAGu1I,SAAU,CACpBonD,EAAK38L,GAAK06F,EACV8hG,EAAW9hG,EACXqiG,EAAsB,MAAVE,EAAiBA,EAASF,EACtC,KACF,OAIJJ,EAAK18L,KAAKy6F,GACV8hG,EAAW9hG,EACXqiG,EAAsB,MAAVE,EAAiBA,EAASF,CAG5C,CACA,SAASG,EAAU9lH,GACjB,IAAI5yC,EAAQ4yC,EAAK65B,aAAe,EAAI4rF,EAChCp4J,EAAS2yC,EAAK85B,cAAgB,EAAI2rF,EAClCM,EAAK34J,EAAQ,EACb44J,EAAK34J,EAAS,EACdp6B,EAAM+sE,EAAKtpD,WACf,GAAIzjB,EAAIyR,EAAIqhL,GAAMrhL,GAAKA,GAAKzR,EAAIyR,EAAIqhL,GACjC9yL,EAAIswB,EAAIyiK,GAAMziK,GAAKA,GAAKtwB,EAAIswB,EAAIyiK,EACjC,CACA,IAAI5rK,EAAQzI,EAAEs0K,WAAWj7L,EAAKk7L,aAAalmH,IAC3C,GAAI5lD,EAAM+rK,WAAWzhL,EAAG6e,EAAG,EAAG6J,EAAOC,EAAQp6B,EAAIyR,EAAGzR,EAAIswB,GAEtD,OADAqiK,EAAO5lH,EAAM,IACN,CAEX,CACF,CACA,SAASomH,EAAU7gH,GACjB,IASIsgH,EATAvvE,EAAK/wC,EAAKE,SACV0Z,EAAKm3B,EAAG5wC,SACR2gH,EAAa9gH,EAAKkwE,OAAO,SAASC,QAClCz6H,EAAQsqD,EAAKkwE,OAAO,eAAe/uJ,MACnC0mC,EAAQi5J,EAAa,EAAIb,EACzBc,EAAUl5J,EAAQA,EAClBm5J,EAAiB,EAARn5J,EACT18B,EAAM4lH,EAAGhtH,OACTi8F,EAAM+wB,EAAGhsH,OAEb,GAAoB,aAAhB60F,EAAGge,UAA2C,aAAhBhe,EAAGge,UAA2C,aAAhBhe,EAAGge,UAEjE,IADA,IAAIi+C,EAAMj8D,EAAGqnG,OACJ59L,EAAI,EAAGA,EAAI,EAAIwyJ,EAAIx0J,OAAQgC,GAAK,EACvC,GAAIy+H,GAAe3iH,EAAG6e,EAAG63H,EAAIxyJ,GAAIwyJ,EAAIxyJ,EAAI,GAAIwyJ,EAAIxyJ,EAAI,GAAIwyJ,EAAIxyJ,EAAI,GAAI29L,IAAWD,GAAWT,EAASn9D,GAAmBhkH,EAAG6e,EAAG63H,EAAIxyJ,GAAIwyJ,EAAIxyJ,EAAI,GAAIwyJ,EAAIxyJ,EAAI,GAAIwyJ,EAAIxyJ,EAAI,KAEnK,OADAg9L,EAAOrgH,EAAMsgH,IACN,OAGN,GAAoB,WAAhB1mG,EAAGge,UAAyC,gBAAhBhe,EAAGge,UAA8C,SAAhBhe,EAAGge,UAAuC,aAAhBhe,EAAGge,SAEnG,IADIi+C,EAAMj8D,EAAGqnG,OACJ59L,EAAI,EAAGA,EAAI,EAAIu2F,EAAGqnG,OAAO5/L,OAAQgC,GAAK,EAC7C,GAAI0+H,GAAiB5iH,EAAG6e,EAAG63H,EAAIxyJ,GAAIwyJ,EAAIxyJ,EAAI,GAAIwyJ,EAAIxyJ,EAAI,GAAIwyJ,EAAIxyJ,EAAI,GAAIwyJ,EAAIxyJ,EAAI,GAAIwyJ,EAAIxyJ,EAAI,GAAI29L,IAAWD,GAAWT,EAASz9D,GAAwB1jH,EAAG6e,EAAG63H,EAAIxyJ,GAAIwyJ,EAAIxyJ,EAAI,GAAIwyJ,EAAIxyJ,EAAI,GAAIwyJ,EAAIxyJ,EAAI,GAAIwyJ,EAAIxyJ,EAAI,GAAIwyJ,EAAIxyJ,EAAI,KAE1N,OADAg9L,EAAOrgH,EAAMsgH,IACN,EAOTn1L,EAAMA,GAAO4lH,EAAGhtH,OAChBi8F,EAAMA,GAAO+wB,EAAGhsH,OADpB,IAEIm8L,EAASz7L,EAAK+4L,cAAcsC,EAAYprK,GACxCyrK,EAAS,CAAC,CACZr9L,KAAM,SACNqb,EAAGy6E,EAAGwnG,YACNpjK,EAAG47D,EAAGynG,YACNz/I,MAAOg4C,EAAG0nG,eACT,CACDx9L,KAAM,SACNqb,EAAGy6E,EAAG2nG,UACNvjK,EAAG47D,EAAG4nG,UACN5/I,MAAOg4C,EAAG6nG,eACT,CACD39L,KAAM,aACNqb,EAAGy6E,EAAG44D,KACNx0H,EAAG47D,EAAG64D,KACN7wG,MAAOg4C,EAAG8nG,kBACT,CACD59L,KAAM,aACNqb,EAAGy6E,EAAG44D,KACNx0H,EAAG47D,EAAG64D,KACN7wG,MAAOg4C,EAAG+nG,mBAEZ,IAASt+L,EAAI,EAAGA,EAAI89L,EAAO9/L,OAAQgC,IAAK,CACtC,IAAIu+L,EAAKT,EAAO99L,GACZwxB,EAAQzI,EAAEywK,YAAY78G,EAAKkwE,OAAO0xC,EAAG99L,KAAO,gBAAgB3C,OAC5D67L,EAAYh9G,EAAKkwE,OAAO,SAASC,QACrC,GAAIt7H,EAAMipK,aAAa3+K,EAAG6e,EAAGkjK,EAAQU,EAAGhgJ,MAAO,CAC7CziC,EAAGyiL,EAAGziL,EACN6e,EAAG4jK,EAAG5jK,GACLg/J,EAAWiD,IAAkBprK,EAAMgpK,QAAQ1+K,EAAG6e,EAAGkjK,EAAQU,EAAGhgJ,MAAO,CACpEziC,EAAGyiL,EAAGziL,EACN6e,EAAG4jK,EAAG5jK,GACLg/J,EAAWiD,GAEZ,OADAI,EAAOrgH,IACA,CAEX,CAGIgtE,GAAgBgzC,EAAK3+L,OAAS,IAChCk/L,EAAUp1L,GACVo1L,EAAUvgG,GAEd,CACA,SAAS6hG,EAAQhjL,EAAK/a,EAAMg+L,GAC1B,OAAO3xE,GAAoBtxG,EAAK/a,EAAMg+L,EACxC,CACA,SAASC,EAAWhkG,EAAKskB,GACvB,IAEIuwC,EAFA7hC,EAAKhzB,EAAI7d,SACT8hH,EAAK7B,EAGPvtC,EADEvwC,EACWA,EAAS,IAET,GAEftkB,EAAIpd,cACJ,IAAI7H,EAAKi4C,EAAGiB,YAAY3P,GAAU,QAC9BrmF,EAAO+hE,EAAImyD,OAAO0C,EAAa,SAASzxJ,MACxC8gM,EAAuD,QAAvClkG,EAAImyD,OAAO,eAAe2C,SAC9C,GAAKovC,GAAkBjmK,EAAvB,CAGA,IAAI80B,EAAK+wI,EAAQ9wE,EAAG5wC,SAAU,SAAUkiC,GACpCtxD,EAAK8wI,EAAQ9wE,EAAG5wC,SAAU,SAAUkiC,GACpChnB,EAAQwmG,EAAQ9wE,EAAG5wC,SAAU,aAAckiC,GAC3Cn6E,EAAK61D,EAAImyD,OAAO0C,EAAa,iBAAiBzC,QAC9ChoH,EAAK41D,EAAImyD,OAAO0C,EAAa,iBAAiBzC,QAC9C9qE,EAAMvM,EAAG3vC,GAAK64J,EAAK95J,EACnBq9C,EAAMzM,EAAGxvC,GAAK04J,EAAK95J,EACnBo9C,EAAMxM,EAAG1vC,GAAK44J,EAAK75J,EACnBq9C,EAAM1M,EAAGvvC,GAAKy4J,EAAK75J,EACvB,GAAIkzD,EAAO,CACT,IAAI11D,EAAMngC,KAAKmgC,IAAI01D,GACf31D,EAAMlgC,KAAKkgC,IAAI21D,GACf5lE,EAAS,SAAgBtW,EAAG6e,GAG9B,OAFA7e,GAAQ2xC,EACR9yB,GAAQ+yB,EACD,CACL5xC,EAAGA,EAAIwmB,EAAM3H,EAAI0H,EAAMorB,EACvB9yB,EAAG7e,EAAIumB,EAAM1H,EAAI2H,EAAMorB,EAE3B,EACIojG,EAAQ1+H,EAAO4vD,EAAKC,GACpB8uE,EAAQ3+H,EAAO4vD,EAAKG,GACpB6uE,EAAQ5+H,EAAO8vD,EAAKD,GACpBgvE,EAAQ7+H,EAAO8vD,EAAKC,GACpBz6D,EAAS,CAEbopI,EAAMh1I,EAAI+oB,EAAIisH,EAAMn2H,EAAImK,EAAIksH,EAAMl1I,EAAI+oB,EAAImsH,EAAMr2H,EAAImK,EAAImsH,EAAMn1I,EAAI+oB,EAAIosH,EAAMt2H,EAAImK,EAAIisH,EAAMj1I,EAAI+oB,EAAIksH,EAAMp2H,EAAImK,GAC5G,GAAIq7F,GAAyBrkH,EAAG6e,EAAGjT,GAEjC,OADAs1K,EAAOtiG,IACA,CAEX,MAEE,GAAI0hC,GAAc3mD,EAAI35D,EAAG6e,GAEvB,OADAqiK,EAAOtiG,IACA,CApCX,CAuCF,CAvLI4hG,IACFl4F,EAAOA,EAAKnQ,aAuLd,IAAK,IAAIj0F,EAAIokG,EAAKpmG,OAAS,EAAGgC,GAAK,EAAGA,IAAK,CAEzC,IAAI06F,EAAM0J,EAAKpkG,GACX06F,EAAIO,SACNiiG,EAAUxiG,IAAQgkG,EAAWhkG,GAG7B8iG,EAAU9iG,IAAQgkG,EAAWhkG,IAAQgkG,EAAWhkG,EAAK,WAAagkG,EAAWhkG,EAAK,SAEtF,CACA,OAAOiiG,CACT,EAGAnB,YAAoB,SAAU11J,EAAIC,EAAIE,EAAIC,GACxC,IAAIk+D,EAAOpoG,KAAK0gM,uBAAuBzoG,YACnC4qG,EAAM,GACNC,EAAM38L,KAAKyI,IAAIk7B,EAAIG,GACnB84J,EAAM58L,KAAKwI,IAAIm7B,EAAIG,GACnB+4J,EAAM78L,KAAKyI,IAAIm7B,EAAIG,GACnB+4J,EAAM98L,KAAKwI,IAAIo7B,EAAIG,GACvBJ,EAAKg5J,EACL74J,EAAK84J,EACLh5J,EAAKi5J,EACL94J,EAAK+4J,EAOL,IANA,IAAIC,EAAQp7F,GAAgB,CAC1Bh+D,GAAIA,EACJC,GAAIA,EACJE,GAAIA,EACJC,GAAIA,IAEGjkC,EAAI,EAAGA,EAAImiG,EAAKpmG,OAAQiE,IAAK,CACpC,IAAIy4F,EAAM0J,EAAKniG,GACf,GAAIy4F,EAAIO,SAAU,CAChB,IAAI7jB,EAAOsjB,EACPykG,EAAS/nH,EAAKkG,YAAY,CAC5B40E,cAAc,EACdC,cAAc,EACd50E,eAAe,IAEb4+C,GAAuB+iE,EAAOC,KAAY5iE,GAAyB4iE,EAAQD,IAC7EL,EAAI5+L,KAAKm3E,EAEb,KAAO,CACL,IAAIuF,EAAO+d,EACPgzB,EAAK/wC,EAAKE,SACV0Z,EAAKm3B,EAAG5wC,SACZ,GAAiB,MAAbyZ,EAAGliD,QAA+B,MAAbkiD,EAAGjiD,SAAmB8nF,GAAc8iE,EAAO3oG,EAAGliD,OAAQkiD,EAAGjiD,QAChF,SAEF,GAAe,MAAXiiD,EAAG/hD,MAA2B,MAAX+hD,EAAG9hD,OAAiB2nF,GAAc8iE,EAAO3oG,EAAG/hD,KAAM+hD,EAAG9hD,MAC1E,SAEF,GAAoB,WAAhB8hD,EAAGge,UAAyC,gBAAhBhe,EAAGge,UAA8C,SAAhBhe,EAAGge,UAAuC,aAAhBhe,EAAGge,UAA2C,aAAhBhe,EAAGge,UAA2C,aAAhBhe,EAAGge,SAAyB,CAGjL,IAFA,IAAIi+C,EAAM9kC,EAAGM,OAAOykC,WAAa/kC,EAAGM,OAAO0kC,SAAWhlC,EAAGM,OAAOskC,YAC5D8sC,GAAY,EACPp/L,EAAI,EAAGA,EAAIwyJ,EAAIx0J,OAAQgC,IAC9B,IAAKq8H,GAAmB6iE,EAAO1sC,EAAIxyJ,IAAK,CACtCo/L,GAAY,EACZ,KACF,CAEEA,GACFP,EAAI5+L,KAAK08E,EAEb,KAA2B,aAAhB4Z,EAAGge,UAA2C,aAAhBhe,EAAGge,UAC1CsqF,EAAI5+L,KAAK08E,EAEb,CACF,CACA,OAAOkiH,CACT,GAEIQ,GAAQ,CACZA,qBAA6B,SAAU1iH,GACrC,IASIm+C,EAAOC,EACP1mF,EAAQC,EAAQE,EAAMC,EAVtB8hD,EAAK5Z,EAAKE,SAASC,SACnBwiH,EAA6B,aAAhB/oG,EAAGge,SAChBgrF,EAA2B,WAAhBhpG,EAAGge,SACdirF,EAAgC,gBAAhBjpG,EAAGge,SACnBkrF,EAA6B,aAAhBlpG,EAAGge,SAChBi+E,EAA6B,aAAhBj8F,EAAGge,SAChBmrF,EAAyB,SAAhBnpG,EAAGge,SAsBhB,GAjBI+qF,GACFjrJ,EAASkiD,EAAG+7D,YAAY,GACxBh+G,EAASiiD,EAAG+7D,YAAY,GACxB99G,EAAO+hD,EAAG+7D,YAAY,GACtB79G,EAAO8hD,EAAG+7D,YAAY,KAEtBj+G,EAASkiD,EAAGwnG,YACZzpJ,EAASiiD,EAAGynG,YACZxpJ,EAAO+hD,EAAG2nG,UACVzpJ,EAAO8hD,EAAG4nG,WAEZhvC,EAAO54D,EAAG44D,KACVC,EAAO74D,EAAG64D,KAKNqwC,EACF3kE,EAAQzmF,EAASkiD,EAAGopG,OAAO,GAC3B5kE,EAAQzmF,EAASiiD,EAAGopG,OAAO,QACtB,GAAIH,GAAiBhN,GAAckN,GAAUH,EAAU,CAC5D,IAAI/sC,EAAMj8D,EAAGqnG,OACTgC,EAAKvkE,GAAUm3B,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAI,IACvCqtC,EAAKxkE,GAAUm3B,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAI,IAC3C13B,EAAQzmF,EAASurJ,EACjB7kE,EAAQzmF,EAASurJ,CACnB,MACE/kE,EAAQzmF,EAAS86G,EACjBp0B,EAAQzmF,EAAS86G,EAEnB74D,EAAG0nG,cAAgBpjE,GAAiBC,EAAOC,GAK3C,IAAIo0B,EAAO54D,EAAG44D,KACVC,EAAO74D,EAAG64D,KAOd,GANIkwC,IACFnwC,GAAQ96G,EAASG,GAAQ,EACzB46G,GAAQ96G,EAASG,GAAQ,GAE3BqmF,EAAQtmF,EAAOH,EACf0mF,EAAQtmF,EAAOH,EACXmrJ,EAAY,CACVjtC,EAAMj8D,EAAGqnG,OACb,GAAIprC,EAAIx0J,OAAS,EAAI,IAAM,EAAG,CAC5B,IAAI8pF,EAAK0qE,EAAIx0J,OAAS,EAClB4pF,EAAKE,EAAK,EACdgzC,EAAQ03B,EAAI1qE,GAAM0qE,EAAI5qE,GACtBmzC,EAAQy3B,EAAI1qE,EAAK,GAAK0qE,EAAI5qE,EAAK,EACjC,KAAO,CACDE,EAAK0qE,EAAIx0J,OAAS,EAAI,EACtB4pF,EAAKE,EAAK,EADd,IAEIg4G,EAAKh4G,EAAK,EACdgzC,EAAQ03B,EAAI1qE,GAAM0qE,EAAI5qE,GACtBmzC,EAAQy3B,EAAI1qE,EAAK,GAAK0qE,EAAI5qE,EAAK,EACjC,CACF,MAAO,GAAI43G,GAAiBhN,GAAckN,EAAQ,CAC5CltC,EAAMj8D,EAAGqnG,OAAb,IAEImC,EAAMC,EACNC,EAAMC,EAFNC,EAAO5pG,EAAG6pG,QAGd,GAAID,EAAKniM,OAAS,EAAI,IAAM,EAAG,CAC7B,IAAIswE,EAAKkkF,EAAIx0J,OAAS,EAAI,EACtBqiM,EAAK/xH,EAAK,EACVxrC,EAAKu9J,EAAK,EACdN,EAAO1kE,GAAUm3B,EAAIlkF,GAAKkkF,EAAI6tC,GAAK7tC,EAAI1vH,GAAK,GAC5Ck9J,EAAO3kE,GAAUm3B,EAAIlkF,EAAK,GAAIkkF,EAAI6tC,EAAK,GAAI7tC,EAAI1vH,EAAK,GAAI,GACxDm9J,EAAO5kE,GAAUm3B,EAAIlkF,GAAKkkF,EAAI6tC,GAAK7tC,EAAI1vH,GAAK,MAC5Co9J,EAAO7kE,GAAUm3B,EAAIlkF,EAAK,GAAIkkF,EAAI6tC,EAAK,GAAI7tC,EAAI1vH,EAAK,GAAI,KAC1D,KAAO,CACDu9J,EAAK7tC,EAAIx0J,OAAS,EAAI,EACtBswE,EAAK+xH,EAAK,EACVv9J,EAAKu9J,EAAK,EAEdN,EAAO1kE,GAAUm3B,EAAIlkF,GAAKkkF,EAAI6tC,GAAK7tC,EAAI1vH,GAAK,OAC5Ck9J,EAAO3kE,GAAUm3B,EAAIlkF,EAAK,GAAIkkF,EAAI6tC,EAAK,GAAI7tC,EAAI1vH,EAAK,GAAI,OACxDm9J,EAAO5kE,GAAUm3B,EAAIlkF,GAAKkkF,EAAI6tC,GAAK7tC,EAAI1vH,GAAK,IAC5Co9J,EAAO7kE,GAAUm3B,EAAIlkF,EAAK,GAAIkkF,EAAI6tC,EAAK,GAAI7tC,EAAI1vH,EAAK,GAAI,GAC1D,CACAg4F,EAAQmlE,EAAOF,EACfhlE,EAAQmlE,EAAOF,CACjB,CAUA,GATAzpG,EAAG+nG,iBAAmBzjE,GAAiBC,EAAOC,GAC9CxkC,EAAG+pG,SAAWxlE,EACdvkC,EAAGgqG,SAAWxlE,EAKdD,IAAU,EACVC,IAAU,EACN0kE,EAAY,CACVjtC,EAAMj8D,EAAGqnG,OACb,GAAIprC,EAAIx0J,OAAS,EAAI,IAAM,OAAU,CAC/B8pF,EAAK0qE,EAAIx0J,OAAS,EAAI,EACtB8hM,EAAKh4G,EAAK,EACdgzC,IAAU03B,EAAIstC,GAAMttC,EAAI1qE,IACxBizC,IAAUy3B,EAAIstC,EAAK,GAAKttC,EAAI1qE,EAAK,GACnC,CACF,CAMA,GALAyO,EAAG8nG,iBAAmBxjE,GAAiBC,EAAOC,GAK1C0kE,EACF3kE,EAAQtmF,EAAO+hD,EAAGopG,OAAOppG,EAAGopG,OAAO3hM,OAAS,GAC5C+8H,EAAQtmF,EAAO8hD,EAAGopG,OAAOppG,EAAGopG,OAAO3hM,OAAS,QACvC,GAAIwhM,GAAiBhN,GAAckN,GAAUH,EAAU,CACxD/sC,EAAMj8D,EAAGqnG,OAAb,IACIpzL,EAAIgoJ,EAAIx0J,OACR4hM,EAAKvkE,GAAUm3B,EAAIhoJ,EAAI,GAAIgoJ,EAAIhoJ,EAAI,GAAIgoJ,EAAIhoJ,EAAI,GAAI,IACnDq1L,EAAKxkE,GAAUm3B,EAAIhoJ,EAAI,GAAIgoJ,EAAIhoJ,EAAI,GAAIgoJ,EAAIhoJ,EAAI,GAAI,IACvDswH,EAAQtmF,EAAOorJ,EACf7kE,EAAQtmF,EAAOorJ,CACjB,MACE/kE,EAAQtmF,EAAO26G,EACfp0B,EAAQtmF,EAAO26G,EAEjB74D,EAAG6nG,cAAgBvjE,GAAiBC,EAAOC,EAC7C,GACAskE,GAAMlE,cAAgBkE,GAAMmB,eAAiB,SAAU7G,EAAWtnK,GAChE,IAAId,EAAQv1B,KAAKykM,gBAAkBzkM,KAAKykM,iBAAmB,CAAC,EACxDxsB,EAAY1iJ,EAAMooK,EAAY,KAAOtnK,GACzC,OAAI4hJ,IAGJA,EAAY9xK,KAAKwI,IAAIxI,KAAK4iB,IAAgB,MAAZ40K,EAAmB,IAAM,IAAMtnK,EAC7Dd,EAAMooK,EAAY,KAAOtnK,GAAS4hJ,EAC3BA,EACT,EAEA,IAAIysB,GAAQ,CAAC,EA8wBb,SAASC,GAAOnuC,GACd,IAAI2nC,EAAS,GACb,GAAW,MAAP3nC,EAAJ,CAGA,IAAK,IAAIxyJ,EAAI,EAAGA,EAAIwyJ,EAAIx0J,OAAQgC,GAAK,EAAG,CACtC,IAAI8b,EAAI02I,EAAIxyJ,GACR26B,EAAI63H,EAAIxyJ,EAAI,GAChBm6L,EAAOl6L,KAAK,CACV6b,EAAGA,EACH6e,EAAGA,GAEP,CACA,OAAOw/J,CATP,CAUF,CA3xBAuG,GAAME,gBAAkB,SAAUjkH,EAAMkkH,GACtC,IAGIC,EAHAC,EAASF,EAASE,OACpBC,EAAkBH,EAASG,gBAC3BC,EAAoBJ,EAASI,kBAI3BC,EAAcvkH,EAAKkwE,OAAO,mBAC1Bs0C,EAAcxkH,EAAKkwE,OAAO,mBAC1Bu0C,EAAwC,MAArBF,EAAYj0C,OAAsC,MAArBk0C,EAAYl0C,MAC5Do0C,EAA0B,SAAiCv7J,EAAIC,EAAIE,EAAIC,GACzE,IAAI07B,EAAK17B,EAAKH,EACV47B,EAAK17B,EAAKH,EACVt7B,EAAIrI,KAAK2iB,KAAK68C,EAAKA,EAAKC,EAAKA,GACjC,MAAO,CACL9lD,GAAI8lD,EAAKp3D,EACTmwB,EAAGgnC,EAAKn3D,EAEZ,EACI44K,EAAgBzmG,EAAKkwE,OAAO,kBAAkB/uJ,MAClD,OAAQslL,GACN,IAAK,gBACH0d,EAAWC,EACX,MACF,IAAK,eACHD,EAAWE,EACX,MACF,IAAK,YAED,GAAII,EAAkB,CACpB,IAAIE,EAAwBtlM,KAAKulM,gBAAgB5kH,EAAKj8E,SAAS,GAAIwgM,GACjEM,EAAyB1kF,EAAewkF,EAAuB,GAC/Dx7J,EAAK07J,EAAuB,GAC5Bz7J,EAAKy7J,EAAuB,GAC1BC,EAAyBzlM,KAAKulM,gBAAgB5kH,EAAKj7E,SAAS,GAAIy/L,GAClEO,EAAyB5kF,EAAe2kF,EAAwB,GAChEx7J,EAAKy7J,EAAuB,GAC5Bx7J,EAAKw7J,EAAuB,GAC1BC,EAAS,CACX77J,GAAIA,EACJC,GAAIA,EACJE,GAAIA,EACJC,GAAIA,GAEN+6J,EAAoBI,EAAwBv7J,EAAIC,EAAIE,EAAIC,GACxD46J,EAAWa,CACb,MACElyK,GAAK,QAAQxyB,OAAO0/E,EAAKn3E,KAAM,gLAC/Bs7L,EAAWE,EAGb,MAGN,MAAO,CACLF,SAAUA,EACVG,kBAAmBA,EAEvB,EACAP,GAAMkB,mBAAqB,SAAUzlH,GACnC,IAAK,IAAIn8E,EAAI,EAAGA,EAAIm8E,EAAMn+E,OAAQgC,IAAK,CACrC,IAAI28E,EAAOR,EAAMn8E,GACb0tH,EAAK/wC,EAAKE,SACV0Z,EAAKm3B,EAAG5wC,SACZ,IAAKyZ,EAAGsrG,SAAU,CAChB,IAAItjJ,EAAwB,EAAhBp8C,KAAKgJ,SAAehJ,KAAK40B,GACrCw/D,EAAG71F,OAAS,CACVob,EAAG3Z,KAAKmgC,IAAIic,GACZ5jB,EAAGx4B,KAAKkgC,IAAIkc,IAEdA,EAAwB,EAAhBp8C,KAAKgJ,SAAehJ,KAAK40B,GACjCw/D,EAAG70F,OAAS,CACVoa,EAAG3Z,KAAKmgC,IAAIic,GACZ5jB,EAAGx4B,KAAKkgC,IAAIkc,GAEhB,CACA,IAAIz2C,EAAM4lH,EAAGhtH,OACTi8F,EAAM+wB,EAAGhsH,OACTogM,EAASh6L,EAAIgmB,WACbi0K,EAASplG,EAAI7uE,WACbk0K,EAAOl6L,EAAI08B,QACXy9J,EAAOtlG,EAAIn4D,QACX09J,EAAOp6L,EAAI28B,SACX09J,EAAOxlG,EAAIl4D,SACX4B,EAASs2C,EAAKkwE,OAAO,mBAAmB/uJ,MACxCskM,EAAa/7J,EAAS,EAE1BkwD,EAAG+7D,YAAc/7D,EAAGqnG,OAAS,CAACrnG,EAAG71F,OAAOob,EAAIkmL,EAAOI,EAAaN,EAAOhmL,EAAGy6E,EAAG71F,OAAOi6B,EAAIunK,EAAOE,EAAaN,EAAOnnK,EAAG47D,EAAG70F,OAAOoa,EAAImmL,EAAOG,EAAaL,EAAOjmL,EAAGy6E,EAAG70F,OAAOi5B,EAAIwnK,EAAOC,EAAaL,EAAOpnK,GAC3M47D,EAAG44D,MAAQ54D,EAAGqnG,OAAO,GAAKrnG,EAAGqnG,OAAO,IAAM,EAC1CrnG,EAAG64D,MAAQ74D,EAAGqnG,OAAO,GAAKrnG,EAAGqnG,OAAO,IAAM,EAG1CrnG,EAAGge,SAAW,WACdhe,EAAGsrG,UAAW,EACd7lM,KAAKqmM,qBAAqB1lH,GAC1B3gF,KAAKsmM,qBAAqB3lH,GAC1B3gF,KAAKumM,gCAAgC5lH,GACrC3gF,KAAKwmM,qBAAqB7lH,EAC5B,CACF,EACA+jH,GAAM+B,mBAAqB,SAAU9lH,EAAMkkH,GAGzC,IAAItqG,EAAK5Z,EAAKE,SAASC,SACnB4lH,EAAY/lH,EAAKkwE,OAAO,mBACxB81C,EAAYhmH,EAAKkwE,OAAO,qBACxB+1C,EAAYzgM,KAAKyI,IAAI83L,EAAU51C,QAAQ9uJ,OAAQ2kM,EAAU71C,QAAQ9uJ,QACrEu4F,EAAGge,SAAW,WACdhe,EAAGopG,OAAS,GACZ,IAAK,IAAIr1L,EAAI,EAAGA,EAAIs4L,EAAWt4L,IAAK,CAClC,IAAIzE,EAAI68L,EAAU51C,QAAQxiJ,GACtB4e,EAAIy5K,EAAU71C,QAAQxiJ,GACtBu4L,EAAK,EAAIh9L,EACTi9L,EAAKj9L,EACLk9L,EAAwB/mM,KAAK4kM,gBAAgBjkH,EAAMkkH,GACrDC,EAAWiC,EAAsBjC,SACjCG,EAAoB8B,EAAsB9B,kBACxC+B,EAAgB,CAClBlnL,EAAGglL,EAASh7J,GAAK+8J,EAAK/B,EAAS76J,GAAK68J,EACpCnoK,EAAGmmK,EAAS/6J,GAAK88J,EAAK/B,EAAS56J,GAAK48J,GAEtCvsG,EAAGopG,OAAO1/L,KAAK+iM,EAAclnL,EAAImlL,EAAkBnlL,EAAIoN,EAAG85K,EAAcroK,EAAIsmK,EAAkBtmK,EAAIzR,EACpG,CACF,EACAw3K,GAAMuC,eAAiB,SAAUtmH,EAAMkkH,EAAU7gM,EAAGkjM,GAGlD,IAAI3sG,EAAK5Z,EAAKE,SAASC,SACnBqmH,EAAYtC,EAASsC,UACvBrB,EAASjB,EAASiB,OAChBsB,EAAczmH,EAAKkwE,OAAO,2BAC1Bw2C,EAAaD,EAAcA,EAAYt2C,QAAQ,QAAKpuJ,EACpD4kM,EAAU3mH,EAAKkwE,OAAO,kBAAkBC,QACxCy2C,EAAU5mH,EAAKkwE,OAAO,cAAcC,QACpCjkI,EAAW8zD,EAAKkwE,OAAO,2BAA2BC,QACtDv2D,EAAGge,SAAW,OACd,IAAIttG,EAAIjH,EACJwjM,EAAW36K,EACXq6K,IACFj8L,EAAI,EACJu8L,EAAWH,GAEb,IAAII,EAAYH,EAAUnhM,KAAK40B,GAAK,EAChC2sK,EAAWD,EAAYF,EAAU,EACjCI,EAAUF,EAAYF,EAAU,EAGhCn6D,EAAK7+H,OAAO+4L,EAAU,IAAMC,GAChCt8L,OAAsBvI,IAAlBykM,EAAU/5D,GAAoB+5D,EAAU/5D,GAAM,IAAM+5D,EAAU/5D,GAClE7yC,EAAG6pG,QAAU,CAAC0B,EAAOhmL,EAAyB,IAArB3Z,KAAKmgC,IAAIohK,GAAkBF,GAAYv8L,EAAI,EAAI,GAAI66L,EAAOnnK,EAAyB,IAArBx4B,KAAKkgC,IAAIqhK,GAAkBF,GAAYv8L,EAAI,EAAI,GAAI66L,EAAOhmL,EAAwB,IAApB3Z,KAAKmgC,IAAIqhK,GAAiBH,GAAYv8L,EAAI,EAAI,GAAI66L,EAAOnnK,EAAwB,IAApBx4B,KAAKkgC,IAAIshK,GAAiBH,GAAYv8L,EAAI,EAAI,GAClQ,EACAy5L,GAAMkD,uBAAyB,SAAUjnH,EAAMkkH,EAAU7gM,EAAGkjM,GAG1D,IAAI3sG,EAAK5Z,EAAKE,SAASC,SACvByZ,EAAGge,SAAW,WACd,IAAIutF,EAASjB,EAASiB,OACpBC,EAASlB,EAASkB,OAClBC,EAAOnB,EAASmB,KAChBE,EAAOrB,EAASqB,KAChBD,EAAOpB,EAASoB,KAChBE,EAAOtB,EAASsB,KACdt5K,EAAW8zD,EAAKkwE,OAAO,2BAA2BC,QAClDs2C,EAAczmH,EAAKkwE,OAAO,2BAC1Bw2C,EAAaD,EAAcA,EAAYt2C,QAAQ,QAAKpuJ,EACpDuI,EAAIjH,EACJwjM,EAAW36K,EACXq6K,IACFj8L,EAAI,EACJu8L,EAAWH,GAEb,IAAIQ,EAAQ,GACRC,EAAW,CACbhoL,EAAGgmL,EAAOhmL,EAAIkmL,EAAO,EACrBrnK,EAAGmnK,EAAOnnK,EAAIunK,EAAO,GAEnB6B,EAAW,CACbjoL,EAAGimL,EAAOjmL,EAAImmL,EAAO,EACrBtnK,EAAGonK,EAAOpnK,EAAIwnK,EAAO,GAEnB6B,EAAU,CACZloL,EAAG3Z,KAAKyI,IAAIk5L,EAAShoL,EAAGioL,EAASjoL,GACjC6e,EAAGx4B,KAAKyI,IAAIk5L,EAASnpK,EAAGopK,EAASppK,IAI/BspK,EAAqB,GACrBC,EAAmB/hM,KAAKwI,IAAIs5L,EAAoB9hM,KAAKgqG,IAAW,IAAP61F,IACzDmC,EAAmBhiM,KAAKwI,IAAIs5L,EAAoB9hM,KAAKgqG,IAAW,IAAP81F,IAC7D1rG,EAAG6pG,QAAU,CAAC4D,EAAQloL,EAAGkoL,EAAQrpK,GAAK,EAAIx4B,KAAK4iB,IAAI8+K,EAAO,MAAQ,KAAOL,GAAYv8L,EAAI,EAAI,GAAKi9L,EAAkBF,EAAQloL,GAAK,EAAI3Z,KAAK4iB,IAAI8+K,EAAO,MAAQ,KAAOL,GAAYv8L,EAAI,EAAI,GAAKk9L,EAAkBH,EAAQrpK,EACzN,EACA+lK,GAAM0D,uBAAyB,SAAUznH,GAGvCA,EAAKE,SAASC,SAASy3B,SAAW,UACpC,EACAmsF,GAAM2D,iBAAmB,SAAU1nH,EAAMkkH,EAAU7gM,EAAGkjM,EAAiBoB,GACrE,IAAI/tG,EAAK5Z,EAAKE,SAASC,SACnBj0D,EAAW8zD,EAAKkwE,OAAO,2BAA2BC,QAClDs2C,EAAczmH,EAAKkwE,OAAO,2BAC1B03C,EAAW5nH,EAAKkwE,OAAO,yBACvB23C,EAAUpB,GAAemB,EAAWpiM,KAAKyI,IAAIw4L,EAAYtlM,MAAME,OAAQumM,EAASzmM,MAAME,QAAU,EAChGqlM,EAAaD,EAAcA,EAAYt2C,QAAQ,QAAKpuJ,EACpD+lM,EAAeF,EAASzmM,MAAM,GAI9B4mM,EAAQxB,EACZ3sG,EAAGge,SAAWmwF,EAAQ,cAAgB,SACtCnuG,EAAG6pG,QAAU,GACb,IAAK,IAAIxhM,EAAI,EAAGA,EAAI4lM,EAAS5lM,IAAK,CAChC,IAAI+lM,GAAkB,GAAM9D,EAASz8F,KAAKpmG,OAAS,EAAIgC,GAAK6oB,GAAYy7K,GAAiB,EAAI,GACzFM,OAAgB,EAChBC,EAAO3pE,GAAOypE,GACdD,IACFrB,EAAaD,EAAcA,EAAYt2C,QAAQluJ,GAAKiqB,EACpD47K,EAAeF,EAASzmM,MAAMc,IAI9BgmM,EAFE1B,EAEcG,OAEe3kM,IAAf2kM,EAA2BwB,EAAOxB,OAAa3kM,EAEjE,IAAIomM,OAAyCpmM,IAAlBkmM,EAA8BA,EAAgBD,EACrE9B,EAAK,EAAI4B,EACT3B,EAAK2B,EACLM,EAAyB/oM,KAAK4kM,gBAAgBjkH,EAAMkkH,GACtDC,EAAWiE,EAAuBjE,SAClCG,EAAoB8D,EAAuB9D,kBACzC+B,EAAgB,CAClBlnL,EAAGglL,EAASh7J,GAAK+8J,EAAK/B,EAAS76J,GAAK68J,EACpCnoK,EAAGmmK,EAAS/6J,GAAK88J,EAAK/B,EAAS56J,GAAK48J,GAEtCvsG,EAAG6pG,QAAQngM,KAAK+iM,EAAclnL,EAAImlL,EAAkBnlL,EAAIgpL,EAAsB9B,EAAcroK,EAAIsmK,EAAkBtmK,EAAImqK,EACxH,CACF,EACApE,GAAMsE,eAAiB,SAAUroH,EAAMkkH,GAGrC,IAAItqG,EAAK5Z,EAAKE,SAASC,SACvByZ,EAAGge,SAAW,WACd,IAAI0wF,EAAW,WACXC,EAAa,aACbC,EAAW,WACXC,EAAY,YACZC,EAAW,WACXC,EAAS,SACTC,EAAO,OACPxE,EAASF,EAASE,OACpBiB,EAAOnB,EAASmB,KAChBE,EAAOrB,EAASqB,KAChBD,EAAOpB,EAASoB,KAChBE,EAAOtB,EAASsB,KACd/e,EAAgBzmG,EAAKkwE,OAAO,kBAAkB/uJ,MAC9C0nM,EAAsC,kBAAlBpiB,EACpBqiB,EAAU9oH,EAAKkwE,OAAO,kBAAkB/uJ,MACxC4nM,EAAaD,EACbE,EAAWhpH,EAAKkwE,OAAO,aACvB+4C,EAAmC,MAAnBD,EAAS14C,MACzB44C,EAAgBF,EAAS74C,QACzBg5C,EAAiBD,EAAgB,EACjCE,EAAOppH,EAAKkwE,OAAO,0BAA0BC,QAC7Ck5C,EAAKR,GAAqBxD,EAAOC,GAAQ,EAAI,EAC7CgE,EAAKT,GAAqBtD,EAAOC,GAAQ,EAAI,EAC7C+D,EAAMnF,EAAO96J,GAAK86J,EAAOj7J,GACzBqgK,EAAMpF,EAAO76J,GAAK66J,EAAOh7J,GAGzBqgK,EAAS,SAAgBC,EAAKC,GAChC,OAAID,EAAM,EACDlkM,KAAKwI,IAAI07L,EAAMC,EAAK,GAEpBnkM,KAAKyI,IAAIy7L,EAAMC,EAAK,EAE/B,EACI3kI,EAAKykI,EAAOF,EAAKF,GACjBpkI,EAAKwkI,EAAOD,EAAKF,GACjBM,GAAgB,EAChBb,IAAeH,EACjBE,EAAUtjM,KAAK6iB,IAAI28C,GAAMx/D,KAAK6iB,IAAI48C,GAAMsjI,EAAaD,EAC5CS,IAAeJ,GAAUI,IAAeL,GACjDI,EAAUR,EACVsB,GAAgB,GACPb,IAAeP,GAAYO,IAAeN,IACnDK,EAAUP,EACVqB,GAAgB,GAElB,IAWIr9K,EAXAs9K,EAASf,IAAYR,EACrBz6L,EAAIg8L,EAAS5kI,EAAKD,EAClB8kI,EAAKD,EAASL,EAAMD,EACpBQ,EAAOxrE,GAAOurE,GACdE,GAAY,EAQhB,GAPMJ,IAAkBX,GAAiBE,MACrCJ,IAAeL,GAAYoB,EAAK,GAAKf,IAAeJ,GAAUmB,EAAK,GAAKf,IAAeP,GAAYsB,EAAK,GAAKf,IAAeN,GAAaqB,EAAK,KAChJC,IAAS,EACTl8L,EAAIk8L,EAAOvkM,KAAK6iB,IAAIxa,GACpBm8L,GAAY,GAGVf,EAAe,CACjB,IAAI/rJ,EAAIgsJ,EAAgB,EAAI,EAAIA,EAAgBA,EAChD38K,EAAI2wB,EAAIrvC,CACV,KAAO,CACL,IAAI3D,EAAIg/L,EAAgB,EAAIr7L,EAAI,EAChC0e,EAAIriB,EAAIg/L,EAAgBa,CAC1B,CACA,IAAIE,EAAgB,SAAuB19K,GACzC,OAAO/mB,KAAK6iB,IAAIkE,GAAK68K,GAAQ5jM,KAAK6iB,IAAIkE,IAAM/mB,KAAK6iB,IAAIxa,EACvD,EACIq8L,EAAgBD,EAAc19K,GAC9B49K,EAAgBF,EAAczkM,KAAK6iB,IAAIxa,GAAKrI,KAAK6iB,IAAIkE,IACrD69K,EAAaF,GAAiBC,EAClC,GAAIC,IAAeJ,EAEjB,GAAIH,EAAQ,CAEV,IAAIQ,EAAkB7kM,KAAK6iB,IAAIyhL,IAAOvE,EAAO,EACzC+E,EAAkB9kM,KAAK6iB,IAAIkhL,IAAQjE,EAAO,EAC9C,GAAI+E,EAAiB,CAEnB,IAAIlrL,GAAKilL,EAAOj7J,GAAKi7J,EAAO96J,IAAM,EAC9BF,EAAKg7J,EAAOh7J,GACdG,EAAK66J,EAAO76J,GACdqwD,EAAGopG,OAAS,CAAC7jL,EAAGiqB,EAAIjqB,EAAGoqB,EACzB,MAAO,GAAI+gK,EAAiB,CAE1B,IAAItsK,GAAKomK,EAAOh7J,GAAKg7J,EAAO76J,IAAM,EAC9BJ,EAAKi7J,EAAOj7J,GACdG,EAAK86J,EAAO96J,GACdswD,EAAGopG,OAAS,CAAC75J,EAAInL,EAAGsL,EAAItL,EAC1B,MAEE47D,EAAGopG,OAAS,CAACoB,EAAOj7J,GAAIi7J,EAAO76J,GAEnC,KAAO,CAEL,IAAIghK,EAAmB/kM,KAAK6iB,IAAIyhL,IAAOzE,EAAO,EAC1CmF,EAAmBhlM,KAAK6iB,IAAImhL,IAAQhE,EAAO,EAC/C,GAAI+E,EAAkB,CAEpB,IAAIE,IAAMrG,EAAOh7J,GAAKg7J,EAAO76J,IAAM,EAC/BlS,GAAK+sK,EAAOj7J,GACd7R,GAAM8sK,EAAO96J,GACfswD,EAAGopG,OAAS,CAAC3rK,GAAIozK,GAAInzK,GAAKmzK,GAC5B,MAAO,GAAID,EAAkB,CAE3B,IAAIpzK,IAAOgtK,EAAOj7J,GAAKi7J,EAAO96J,IAAM,EAChCohK,GAAMtG,EAAOh7J,GACfuhK,GAAMvG,EAAO76J,GACfqwD,EAAGopG,OAAS,CAAC5rK,GAAKszK,GAAKtzK,GAAKuzK,GAC9B,MAEE/wG,EAAGopG,OAAS,CAACoB,EAAO96J,GAAI86J,EAAOh7J,GAEnC,MAGA,GAAIygK,EAAQ,CACV,IAAIe,GAAMxG,EAAOh7J,GAAK7c,GAAKs8K,EAAoBtD,EAAO,EAAIwE,EAAO,GAC7D5xK,GAAMisK,EAAOj7J,GACf0hK,GAAMzG,EAAO96J,GACfswD,EAAGopG,OAAS,CAAC7qK,GAAKyyK,GAAKC,GAAKD,GAC9B,KAAO,CAEL,IAAIE,GAAM1G,EAAOj7J,GAAK5c,GAAKs8K,EAAoBxD,EAAO,EAAI0E,EAAO,GAC7DgB,GAAM3G,EAAOh7J,GACf4hK,GAAM5G,EAAO76J,GACfqwD,EAAGopG,OAAS,CAAC8H,GAAKC,GAAKD,GAAKE,GAC9B,CAEJ,EACAjH,GAAMkH,0BAA4B,SAAUjrH,EAAMkkH,GAChD,IAAItqG,EAAK5Z,EAAKE,SAASC,SAGvB,GAAoB,WAAhByZ,EAAGge,SAAuB,CAC5B,IAAIutF,EAASjB,EAASiB,OACpBC,EAASlB,EAASkB,OAClBC,EAAOnB,EAASmB,KAChBE,EAAOrB,EAASqB,KAChBD,EAAOpB,EAASoB,KAChBE,EAAOtB,EAASsB,KAChB0F,EAAWhH,EAASgH,SACpBC,EAAWjH,EAASiH,SAClBC,GAAY5pF,EAAS5nB,EAAGliD,UAAY8pE,EAAS5nB,EAAGjiD,QAChD0zJ,GAAa7pF,EAAS5nB,EAAGwnG,eAAiB5/E,EAAS5nB,EAAGynG,aACtDiK,GAAU9pF,EAAS5nB,EAAG/hD,QAAU2pE,EAAS5nB,EAAG9hD,MAC5CyzJ,GAAW/pF,EAAS5nB,EAAG2nG,aAAe//E,EAAS5nB,EAAG4nG,WAClDgK,EAAmB,EACnBC,EAASpsM,KAAKm/L,cAAcx+G,EAAKkwE,OAAO,SAASC,QAASnwE,EAAKkwE,OAAO,eAAe/uJ,OAAS9B,KAAKqsM,gBACnGC,EAAaH,EAAmBC,EAChCG,EAAetiH,GAAK,CACtBnqE,EAAGy6E,EAAG6pG,QAAQ,GACdzlK,EAAG47D,EAAG6pG,QAAQ,IACb,CACDtkL,EAAGy6E,EAAGliD,OACN1Z,EAAG47D,EAAGjiD,SAEJk0J,EAAgBD,EAAeD,EAC/BG,EAAaxiH,GAAK,CACpBnqE,EAAGy6E,EAAG6pG,QAAQ,GACdzlK,EAAG47D,EAAG6pG,QAAQ,IACb,CACDtkL,EAAGy6E,EAAG/hD,KACN7Z,EAAG47D,EAAG9hD,OAEJi0J,EAAcD,EAAaH,EAC3BK,GAAc,EAClB,GAAIZ,GAAYC,GAAaQ,EAAe,CAC1CG,GAAc,EAId,IAAIC,EAAM,CAER9sL,EAAGy6E,EAAG6pG,QAAQ,GAAK0B,EAAOhmL,EAC1B6e,EAAG47D,EAAG6pG,QAAQ,GAAK0B,EAAOnnK,GAExBkuK,EAAM1mM,KAAK2iB,KAAK8jL,EAAI9sL,EAAI8sL,EAAI9sL,EAAI8sL,EAAIjuK,EAAIiuK,EAAIjuK,GAC5CmuK,EAAM,CAERhtL,EAAG8sL,EAAI9sL,EAAI+sL,EACXluK,EAAGiuK,EAAIjuK,EAAIkuK,GAETxiK,EAASlkC,KAAKwI,IAAIq3L,EAAME,GACxB6G,EAAS,CAEXjtL,EAAGy6E,EAAG6pG,QAAQ,GAAa,EAAR0I,EAAIhtL,EAAQuqB,EAC/B1L,EAAG47D,EAAG6pG,QAAQ,GAAa,EAAR0I,EAAInuK,EAAQ0L,GAE7B2iK,EAAgBnB,EAASoB,cAAcnH,EAAOhmL,EAAGgmL,EAAOnnK,EAAGqnK,EAAME,EAAM6G,EAAOjtL,EAAGitL,EAAOpuK,EAAG,GAC3F6tK,GACFjyG,EAAG6pG,QAAQ,GAAK7pG,EAAG6pG,QAAQ,GAAK0I,EAAIhtL,GAAKwsL,EAAaC,GACtDhyG,EAAG6pG,QAAQ,GAAK7pG,EAAG6pG,QAAQ,GAAK0I,EAAInuK,GAAK2tK,EAAaC,KAEtDhyG,EAAG6pG,QAAQ,GAAK4I,EAAc,GAAKF,EAAIhtL,EAAIwsL,EAC3C/xG,EAAG6pG,QAAQ,GAAK4I,EAAc,GAAKF,EAAInuK,EAAI2tK,EAE/C,CACA,GAAIL,GAAUC,GAAWQ,EAAa,CACpCC,GAAc,EAId,IAAIO,EAAO,CAETptL,EAAGy6E,EAAG6pG,QAAQ,GAAK2B,EAAOjmL,EAC1B6e,EAAG47D,EAAG6pG,QAAQ,GAAK2B,EAAOpnK,GAExBwuK,EAAOhnM,KAAK2iB,KAAKokL,EAAKptL,EAAIotL,EAAKptL,EAAIotL,EAAKvuK,EAAIuuK,EAAKvuK,GACjDyuK,EAAO,CAETttL,EAAGotL,EAAKptL,EAAIqtL,EACZxuK,EAAGuuK,EAAKvuK,EAAIwuK,GAEVE,EAAUlnM,KAAKwI,IAAIq3L,EAAME,GACzBoH,EAAU,CAEZxtL,EAAGy6E,EAAG6pG,QAAQ,GAAc,EAATgJ,EAAKttL,EAAQutL,EAChC1uK,EAAG47D,EAAG6pG,QAAQ,GAAc,EAATgJ,EAAKzuK,EAAQ0uK,GAE9BE,EAAgBzB,EAASmB,cAAclH,EAAOjmL,EAAGimL,EAAOpnK,EAAGsnK,EAAME,EAAMmH,EAAQxtL,EAAGwtL,EAAQ3uK,EAAG,GAC7F+tK,GACFnyG,EAAG6pG,QAAQ,GAAK7pG,EAAG6pG,QAAQ,GAAKgJ,EAAKttL,GAAKwsL,EAAaG,GACvDlyG,EAAG6pG,QAAQ,GAAK7pG,EAAG6pG,QAAQ,GAAKgJ,EAAKzuK,GAAK2tK,EAAaG,KAEvDlyG,EAAG6pG,QAAQ,GAAKmJ,EAAc,GAAKH,EAAKttL,EAAIwsL,EAC5C/xG,EAAG6pG,QAAQ,GAAKmJ,EAAc,GAAKH,EAAKzuK,EAAI2tK,EAEhD,CACIK,GAEF3sM,KAAKwtM,cAAc7sH,EAEvB,CACF,EACA+jH,GAAM+I,YAAc,SAAU9sH,GAC5B,IAAI4Z,EAAK5Z,EAAKE,SAASC,SACvB,GAAoB,gBAAhByZ,EAAGge,UAA8C,WAAhBhe,EAAGge,UAAyC,SAAhBhe,EAAGge,UAAuC,aAAhBhe,EAAGge,SAAyB,CACrHhe,EAAGqnG,OAAS,GACZrnG,EAAGqnG,OAAO39L,KAAKs2F,EAAGliD,OAAQkiD,EAAGjiD,QAC7B,IAAK,IAAI11C,EAAI,EAAGA,EAAI,EAAI23F,EAAG6pG,QAAQpiM,OAAQY,GAAK,EAE9C23F,EAAGqnG,OAAO39L,KAAKs2F,EAAG6pG,QAAQxhM,GAAI23F,EAAG6pG,QAAQxhM,EAAI,IAGzCA,EAAI,EAAI23F,EAAG6pG,QAAQpiM,QACrBu4F,EAAGqnG,OAAO39L,MAAMs2F,EAAG6pG,QAAQxhM,GAAK23F,EAAG6pG,QAAQxhM,EAAI,IAAM,GAAI23F,EAAG6pG,QAAQxhM,EAAI,GAAK23F,EAAG6pG,QAAQxhM,EAAI,IAAM,GAItG,IAAI4W,EAAGk0L,EADPnzG,EAAGqnG,OAAO39L,KAAKs2F,EAAG/hD,KAAM+hD,EAAG9hD,MAEvB8hD,EAAG6pG,QAAQpiM,OAAS,EAAI,IAAM,GAChCwX,EAAI+gF,EAAGqnG,OAAO5/L,OAAS,EAAI,EAC3Bu4F,EAAG44D,KAAO54D,EAAGqnG,OAAOpoL,GACpB+gF,EAAG64D,KAAO74D,EAAGqnG,OAAOpoL,EAAI,KAExBA,EAAI+gF,EAAGqnG,OAAO5/L,OAAS,EAAI,EAC3B0rM,EAAK,GACLnzG,EAAG44D,KAAO9zB,GAAU9kC,EAAGqnG,OAAOpoL,GAAI+gF,EAAGqnG,OAAOpoL,EAAI,GAAI+gF,EAAGqnG,OAAOpoL,EAAI,GAAIk0L,GACtEnzG,EAAG64D,KAAO/zB,GAAU9kC,EAAGqnG,OAAOpoL,EAAI,GAAI+gF,EAAGqnG,OAAOpoL,EAAI,GAAI+gF,EAAGqnG,OAAOpoL,EAAI,GAAIk0L,GAE9E,MAAO,GAAoB,aAAhBnzG,EAAGge,SAEZhe,EAAGqnG,OAAS,CAACrnG,EAAGliD,OAAQkiD,EAAGjiD,OAAQiiD,EAAG/hD,KAAM+hD,EAAG9hD,MAG/C8hD,EAAG44D,MAAQ54D,EAAGliD,OAASkiD,EAAG/hD,KAAO+hD,EAAGwnG,YAAcxnG,EAAG2nG,WAAa,EAClE3nG,EAAG64D,MAAQ74D,EAAGjiD,OAASiiD,EAAG9hD,KAAO8hD,EAAGynG,YAAcznG,EAAG4nG,WAAa,OAC7D,GAAoB,aAAhB5nG,EAAGge,SAKZ,GAJAhe,EAAGqnG,OAAS,GACZrnG,EAAGqnG,OAAO39L,KAAKs2F,EAAGliD,OAAQkiD,EAAGjiD,QAC7BiiD,EAAGqnG,OAAO39L,KAAKnB,MAAMy3F,EAAGqnG,OAAQrnG,EAAGopG,QACnCppG,EAAGqnG,OAAO39L,KAAKs2F,EAAG/hD,KAAM+hD,EAAG9hD,MACvB8hD,EAAGopG,OAAO3hM,OAAS,IAAM,EAAG,CAC9B,IAAI8pF,EAAKyO,EAAGopG,OAAO3hM,OAAS,EACxB4pF,EAAKE,EAAK,EACdyO,EAAG44D,MAAQ54D,EAAGopG,OAAO/3G,GAAM2O,EAAGopG,OAAO73G,IAAO,EAC5CyO,EAAG64D,MAAQ74D,EAAGopG,OAAO/3G,EAAK,GAAK2O,EAAGopG,OAAO73G,EAAK,IAAM,CACtD,KAAO,CACL,IAAIl8E,EAAK2qF,EAAGopG,OAAO3hM,OAAS,EAAI,EAChCu4F,EAAG44D,KAAO54D,EAAGopG,OAAO/zL,GACpB2qF,EAAG64D,KAAO74D,EAAGopG,OAAO/zL,EAAK,EAC3B,CAEJ,EACA80L,GAAMiJ,2BAA6B,SAAUhtH,GAC3C,IAAI4Z,EAAK5Z,EAAK,GAAGE,SAASC,SACtByZ,EAAGq/F,cAAgBz3E,EAAS5nB,EAAGliD,SAAW8pE,EAAS5nB,EAAGjiD,SAAW6pE,EAAS5nB,EAAG/hD,OAAS2pE,EAAS5nB,EAAG9hD,MACpG8hD,EAAGqzG,WAAY,EAEVrzG,EAAGqzG,YACNrzG,EAAGqzG,WAAY,EACfn6K,GAAK,SAAWktD,EAAKn3E,KAAO,qOAGlC,EACAk7L,GAAMmJ,sBAAwB,SAAU1tH,GACtC,IAAItsD,EAAQ7zB,KACZ,GAAKmgF,GAA0B,IAAjBA,EAAMn+E,OAApB,CA6BA,IA1BA,IAAI+qB,EAAI/sB,KACJmvB,EAAKpC,EAAEoC,GACPw+H,EAAex+H,EAAGy+H,mBAClBkgD,EAAY,CACdpkL,IAAK,IAAIynG,GACTjuH,IAAK,SAAa6qM,GAChB,IAAIC,EAAOhuM,KAAK0pB,IAAIxmB,IAAI6qM,EAAO,IAC/B,OAAY,MAARC,EACKA,EAAK9qM,IAAI6qM,EAAO,IAEhB,IAEX,EACAv7L,IAAK,SAAau7L,EAAQ/+L,GACxB,IAAIg/L,EAAOhuM,KAAK0pB,IAAIxmB,IAAI6qM,EAAO,IACnB,MAARC,IACFA,EAAO,IAAI78E,GACXnxH,KAAK0pB,IAAIlX,IAAIu7L,EAAO,GAAIC,IAE1BA,EAAKx7L,IAAIu7L,EAAO,GAAI/+L,EACtB,GAEEi/L,EAAU,GACVC,EAAgB,GAGXlqM,EAAI,EAAGA,EAAIm8E,EAAMn+E,OAAQgC,IAAK,CACrC,IAAI28E,EAAOR,EAAMn8E,GACb0tH,EAAK/wC,EAAKE,SACVu1E,EAAaz1E,EAAKkwE,OAAO,eAAe/uJ,MAI5C,IAAI6+E,EAAK1B,WAAc0B,EAAKohF,eAG5B,GAAmB,aAAf3L,EAAJ,CAIA,IAAI8wC,EAAiC,qBAAf9wC,GAAoD,aAAfA,GAA4C,aAAfA,GAA4C,sBAAfA,GAAqD,SAAfA,EACvJ+3C,EAA8B,qBAAf/3C,GAAoD,WAAfA,EACpDtqJ,EAAM4lH,EAAGhtH,OACTi8F,EAAM+wB,EAAGhsH,OACT0oM,EAAWtiM,EAAIk1J,YACfqtC,EAAW1tG,EAAIqgE,YACf+sC,EAAS,CAACK,EAAUC,GAAUxoL,OAC9ByoL,EAAaR,EAAU5qM,IAAI6qM,GACb,MAAdO,IACFA,EAAa,CACXlmG,KAAM,IAER0lG,EAAUt7L,IAAIu7L,EAAQO,GACtBL,EAAQhqM,KAAK8pM,IAEfO,EAAWlmG,KAAKnkG,KAAK08E,GACjBumH,IACFoH,EAAWC,cAAe,GAExBJ,IACFG,EAAWE,WAAY,EArBzB,MAFEN,EAAcjqM,KAAK08E,EAyBvB,CAyKA,IArKA,IAAIt0D,EAAQ,SAAewxB,GACzB,IAAIkwJ,EAASE,EAAQpwJ,GACjBgnJ,EAAWiJ,EAAU5qM,IAAI6qM,GACzBU,OAAkB,EACtB,IAAK5J,EAAS0J,aAAc,CAC1B,IAAI3hC,EAAWi4B,EAASz8F,KAAK,GAAGyhE,gBAAgB75I,QAAO,SAAU/pB,GAC/D,OAAOA,EAAE+/J,iBACX,IACAp1C,GAAWi0E,EAASz8F,MACpBwkE,EAAShiK,SAAQ,SAAU+1E,GACzB,OAAOkkH,EAASz8F,KAAKnkG,KAAK08E,EAC5B,IAGAkkH,EAASz8F,KAAKviF,MAAK,SAAU6iJ,EAAOM,GAClC,OAAON,EAAM1H,YAAcgI,EAAMhI,WACnC,GACF,CACA,IAAI0tC,EAAY7J,EAASz8F,KAAK,GAC1Bt8F,EAAM4iM,EAAUhqM,SAChBi8F,EAAM+tG,EAAUhpM,SAGpB,GAAIoG,EAAIk1J,YAAcrgE,EAAIqgE,YAAa,CACrC,IAAIr1I,EAAO7f,EACXA,EAAM60F,EACNA,EAAMh1E,CACR,CACA,IAAIm6K,EAASjB,EAASiB,OAASh6L,EAAIgmB,WAC/Bi0K,EAASlB,EAASkB,OAASplG,EAAI7uE,WAC/Bk0K,EAAOnB,EAASmB,KAAOl6L,EAAImpG,aAC3BixF,EAAOrB,EAASqB,KAAOp6L,EAAIopG,cAC3B+wF,EAAOpB,EAASoB,KAAOtlG,EAAIsU,aAC3BkxF,EAAOtB,EAASsB,KAAOxlG,EAAIuU,cAC3B22F,EAAWhH,EAASgH,SAAW9+K,EAAEs0K,WAAWxtK,EAAMytK,aAAax1L,IAC/DggM,EAAWjH,EAASiH,SAAW/+K,EAAEs0K,WAAWxtK,EAAMytK,aAAa3gG,IACnEkkG,EAASsC,UAAY,CACnB,MAAS,EACT,KAAQ,EACR,MAAS,EACT,KAAQ,EACR,UAAa,EACb,UAAa,EACb,UAAa,EACb,UAAa,GAEf,IAAK,IAAIhzE,EAAM,EAAGA,EAAM0wE,EAASz8F,KAAKpmG,OAAQmyH,IAAO,CACnD,IAAI8G,EAAQ4pE,EAASz8F,KAAK+rB,GACtB55B,EAAK0gC,EAAM,GAAGp6C,SAASC,SACvB6tH,EAAc1zE,EAAM41B,OAAO,eAAe/uJ,MAC1C8sM,EAAmC,qBAAhBD,GAAsD,aAAhBA,GAA8C,SAAhBA,EAGvFrG,GAAiBx8L,EAAIkrG,KAAKikB,EAAMv2H,UACpC,IAAKmgM,EAASgK,wBAA0B/iM,IAAQ60F,IAAQkkG,EAAS2J,WAAa3J,EAAS0J,cAAe,CACpG1J,EAASgK,wBAAyB,EAGlC,IAAIC,EAAajD,EAASoB,cAAcnH,EAAOhmL,EAAGgmL,EAAOnnK,EAAGqnK,EAAME,EAAMH,EAAOjmL,EAAGimL,EAAOpnK,EAAG,GACxFowK,EAAUlK,EAASkK,QAAUD,EAG7BE,EAAalD,EAASmB,cAAclH,EAAOjmL,EAAGimL,EAAOpnK,EAAGsnK,EAAME,EAAML,EAAOhmL,EAAGgmL,EAAOnnK,EAAG,GACxFswK,EAAUpK,EAASoK,QAAUD,EAC7BhK,EAAkBH,EAASG,gBAAkB,CAC/Cl7J,GAAIglK,EAAW,GACf7kK,GAAI+kK,EAAW,GACfjlK,GAAI+kK,EAAW,GACf5kK,GAAI8kK,EAAW,IAEbjK,EAASF,EAASE,OAAS,CAC7Bj7J,GAAIg8J,EAAOhmL,EACXmqB,GAAI87J,EAAOjmL,EACXiqB,GAAI+7J,EAAOnnK,EACXuL,GAAI67J,EAAOpnK,GAETinC,EAAKopI,EAAW,GAAKF,EAAW,GAChCnpI,EAAKqpI,EAAW,GAAKF,EAAW,GAChCtgM,EAAIrI,KAAK2iB,KAAK68C,EAAKA,EAAKC,EAAKA,GAC7BspI,EAASrK,EAASqK,OAAS,CAC7BpvL,EAAG6lD,EACHhnC,EAAGinC,GAEDupI,EAAatK,EAASsK,WAAa,CACrCrvL,EAAGovL,EAAOpvL,EAAItR,EACdmwB,EAAGuwK,EAAOvwK,EAAInwB,GAEZy2L,EAAoB,CACtBnlL,GAAIqvL,EAAWxwK,EACfA,EAAGwwK,EAAWrvL,GAIhB+kL,EAASjL,cAAgBz3E,EAAS3zG,IAAMs9L,EAASvK,WAAWuN,EAAW,GAAIA,EAAW,GAAI,EAAG7I,EAAME,EAAMJ,EAAOjmL,EAAGimL,EAAOpnK,IAAMktK,EAAStK,WAAWyN,EAAW,GAAIA,EAAW,GAAI,EAAGhJ,EAAME,EAAMJ,EAAOhmL,EAAGgmL,EAAOnnK,GAClNkmK,EAASI,kBAAoBA,EAC7BwJ,EAAkB,CAChB7U,aAAciL,EAASjL,aACvBuN,UAAWtC,EAASsC,UACpB0H,wBAAwB,EACxBL,UAAW3J,EAAS2J,UACpBD,aAAc1J,EAAS0J,aACvBnmG,KAAMy8F,EAASz8F,KACf09F,OAAQC,EACRA,OAAQD,EACRE,KAAMC,EACNC,KAAMC,EACNF,KAAMD,EACNG,KAAMD,EACN6I,QAASE,EACTA,QAASF,EACTlD,SAAUC,EACVA,SAAUD,EACV9G,OAAQ,CACNj7J,GAAIi7J,EAAO96J,GACXF,GAAIg7J,EAAO76J,GACXD,GAAI86J,EAAOj7J,GACXI,GAAI66J,EAAOh7J,IAEbi7J,gBAAiB,CACfl7J,GAAIk7J,EAAgB/6J,GACpBF,GAAIi7J,EAAgB96J,GACpBD,GAAI+6J,EAAgBl7J,GACpBI,GAAI86J,EAAgBj7J,IAEtBmlK,OAAQ,CACNpvL,GAAIovL,EAAOpvL,EACX6e,GAAIuwK,EAAOvwK,GAEbwwK,WAAY,CACVrvL,GAAIqvL,EAAWrvL,EACf6e,GAAIwwK,EAAWxwK,GAEjBsmK,kBAAmB,CACjBnlL,GAAImlL,EAAkBnlL,EACtB6e,GAAIsmK,EAAkBtmK,GAG5B,CACA,IAAIywK,EAAiB9G,EAAgBmG,EAAkB5J,EACvDtqG,EAAGq/F,aAAewV,EAAexV,aACjCr/F,EAAGw0G,QAAUK,EAAeL,QAC5Bx0G,EAAG00G,QAAUG,EAAeH,QACxBthD,IAAiB7hJ,EAAIozF,YAAcpzF,EAAI+5I,WAAallD,EAAIzB,YAAcyB,EAAIklD,aAAe/5I,EAAImhJ,UAAUhB,QAAQtrD,IAAQA,EAAIssD,UAAUhB,QAAQngJ,IAAQA,EAAIkrG,KAAKrW,IAAQ70F,EAAIozF,YAC5KrrE,EAAM+zK,uBAAuB3sE,EAAOm0E,EAAgBj7E,EAAKy6E,GAChD9iM,IAAQ60F,EACjB9sE,EAAMozK,eAAehsE,EAAOm0E,EAAgBj7E,EAAKy6E,GACxB,aAAhBD,EACT96K,EAAM4yK,mBAAmBxrE,EAAOm0E,GACP,SAAhBT,EACT96K,EAAMm1K,eAAe/tE,EAAOm0E,GACH,aAAhBT,IAA+BC,GAAoB/J,EAASz8F,KAAKpmG,OAAS,IAAM,GAAKmyH,IAAQhuH,KAAK2I,MAAM+1L,EAASz8F,KAAKpmG,OAAS,GACxI6xB,EAAMu0K,uBAAuBntE,GAE7BpnG,EAAMw0K,iBAAiBptE,EAAOm0E,EAAgBj7E,EAAKy6E,EAAkBtG,GAEvEz0K,EAAM25K,cAAcvyE,GACpBpnG,EAAM+3K,0BAA0B3wE,EAAOm0E,GACvCv7K,EAAM85K,2BAA2B1yE,GACjCpnG,EAAM45K,YAAYxyE,GAClBpnG,EAAMwyK,qBAAqBprE,GAC3BpnG,EAAMyyK,qBAAqBrrE,GAC3BpnG,EAAM0yK,gCAAgCtrE,GACtCpnG,EAAM2yK,qBAAqBvrE,EAC7B,CACF,EACSp9E,EAAI,EAAGA,EAAIowJ,EAAQjsM,OAAQ67C,IAClCxxB,EAAMwxB,GAIR79C,KAAK4lM,mBAAmBsI,EA7OxB,CA8OF,EAgBAxJ,GAAMzqC,iBAAmB,SAAUt5E,GACjC,IAAI4Z,EAAK5Z,EAAK,GAAGE,SAASC,SACtBt8E,EAAO+1F,EAAGge,SACd,GAAa,aAAT/zG,EAEF,OADAxE,KAAKk4J,yBAAyBv3E,GACvBgkH,GAAOpqG,EAAGopG,OAErB,EACAe,GAAM1qC,iBAAmB,SAAUr5E,GACjC,IAAI4Z,EAAK5Z,EAAK,GAAGE,SAASC,SACtBt8E,EAAO+1F,EAAGge,SACd,GAAa,WAAT/zG,GAA8B,gBAATA,GAAmC,SAATA,GAA4B,aAATA,EAEpE,OADAxE,KAAKk4J,yBAAyBv3E,GACvBgkH,GAAOpqG,EAAG6pG,QAErB,EACAM,GAAMrqC,gBAAkB,SAAU15E,GAChC,IAAI4Z,EAAK5Z,EAAK,GAAGE,SAASC,SAE1B,OADA9gF,KAAKk4J,yBAAyBv3E,GACvB,CACL7gE,EAAGy6E,EAAG44D,KACNx0H,EAAG47D,EAAG64D,KAEV,EAEA,IAAIi8C,GAAQ,CACZA,gBAAwB,SAAUj0H,EAAMwjE,GACtC,IAAI7xH,EAAI/sB,KACJsvM,EAAOl0H,EAAKtpD,WACZjoB,EAAIuxE,EAAK65B,aACTn0G,EAAIs6E,EAAK85B,cACb,GAA0B,IAAtB0pC,EAAK98I,MAAME,OAAc,CAC3B,IAAI67C,EAAI,CAAC+gG,EAAKkS,QAAQ,GAAIlS,EAAKkS,QAAQ,IASvC,MARsB,MAAlBlS,EAAKqS,MAAM,KACbpzG,EAAE,GAAKA,EAAE,GAAKh0C,GAEM,MAAlB+0I,EAAKqS,MAAM,KACbpzG,EAAE,GAAKA,EAAE,GAAK/8C,GAEhB+8C,EAAE,IAAMyxJ,EAAKxvL,EACb+9B,EAAE,IAAMyxJ,EAAK3wK,EACNkf,CACT,CACE,IAAI0E,EAAQq8F,EAAKkS,QAAQ,GACzBvuG,GAASp8C,KAAK40B,GAAK,EAAIwnB,EAEvB,IAAI/zC,EAAI,EAAIrI,KAAKwI,IAAI9E,EAAG/I,GACpB4wH,EAAK,CAAC49E,EAAKxvL,EAAI3Z,KAAKmgC,IAAIic,GAAS/zC,EAAG8gM,EAAK3wK,EAAIx4B,KAAKkgC,IAAIkc,GAAS/zC,GACnE,OAAOue,EAAEs0K,WAAWrhM,KAAKshM,aAAalmH,IAAO6xH,cAAcqC,EAAKxvL,EAAGwvL,EAAK3wK,EAAG90B,EAAG/I,EAAG4wH,EAAG,GAAIA,EAAG,GAAI,EAEnG,EACA29E,cAAsB,SAAU1uH,GAC9B,IACI60C,EA0BA1uF,EACAC,EAEAwoK,EACAC,EA/BAziL,EAAI/sB,KAEJ0E,EAASi8E,EAAKj8E,SAAS,GACvBgB,EAASi7E,EAAKj7E,SAAS,GACvBogM,EAASphM,EAAOotB,WAChBi0K,EAASrgM,EAAOosB,WAChB29K,EAAa9uH,EAAKkwE,OAAO,sBAAsB/uJ,MAC/C4tM,EAAa/uH,EAAKkwE,OAAO,sBAAsB/uJ,MAC/Cw5H,EAAU36C,EAAKkwE,OAAO,6BAA6BC,QACnDz1B,EAAU16C,EAAKkwE,OAAO,6BAA6BC,QACnDsF,EAAaz1E,EAAKkwE,OAAO,eAAe/uJ,MACxCy4F,EAAK5Z,EAAKE,SAASC,SACnB6uH,EAAKp1G,EAAGge,SACRq3F,EAAsB,SAAfx5C,EACPhwJ,EAAc,SAAPupM,GAAwB,aAAPA,EACxBj+B,EAAgB,WAAPi+B,GAA0B,gBAAPA,GAAwBvpM,EACpDsiM,EAAe,WAAPiH,EACR1pJ,EAAe,aAAP0pJ,GAA4B,aAAPA,EAC7BnmL,EAAkB,aAAPmmL,EACXE,EAAYn+B,GAAUg3B,GAASziJ,EAC/B6pJ,EAAiB1pM,GAAQwpM,EACzB1K,EAAcvkH,EAAKkwE,OAAO,mBAC1Bk/C,EAAiBD,EAAiB,kBAAoB5K,EAAYpjM,MAClEqjM,EAAcxkH,EAAKkwE,OAAO,mBAC1Bm/C,EAAiBF,EAAiB,kBAAoB3K,EAAYrjM,MAStE,GARAy4F,EAAG2qG,YAAcA,EACjB3qG,EAAG4qG,YAAcA,EAObzzB,EAAQ,CACV,IAAIu+B,EAAU,CAAC11G,EAAG6pG,QAAQ,GAAI7pG,EAAG6pG,QAAQ,IACrC8L,EAAQxH,EAAQ,CAACnuG,EAAG6pG,QAAQ7pG,EAAG6pG,QAAQpiM,OAAS,GAAIu4F,EAAG6pG,QAAQ7pG,EAAG6pG,QAAQpiM,OAAS,IAAMiuM,EAC7FnpK,EAAKopK,EACLnpK,EAAKkpK,CACP,MAAO,GAAIhqJ,EAAO,CAChB,IAAIkqJ,EAAkB3mL,EAAkC+wE,EAAGopG,OAAOxhM,MAAM,EAAG,GAA1C,CAAC4jM,EAAOjmL,EAAGimL,EAAOpnK,GAC/CyxK,EAAkB5mL,EAAkC+wE,EAAGopG,OAAOxhM,MAAMo4F,EAAGopG,OAAO3hM,OAAS,GAA1D,CAAC8jM,EAAOhmL,EAAGgmL,EAAOnnK,GACnDmI,EAAKspK,EACLrpK,EAAKopK,CACP,CACA,GAAuB,mBAAnBH,EACFx6E,EAAY,CAACuwE,EAAOjmL,EAAGimL,EAAOpnK,QACzB,GAAIwmK,EAAYl0C,MACrBz7B,EAAYx1H,KAAKulM,gBAAgB7/L,EAAQy/L,QACpC,GAAuB,oBAAnB6K,EACTx6E,EAAYj7B,EAAG00G,aAQf,GANuB,oBAAnBe,GAA2D,6BAAnBA,EAC1CT,EAAOzoK,EACqB,oBAAnBkpK,GAA2D,6BAAnBA,IACjDT,EAAO,CAACzJ,EAAOhmL,EAAGgmL,EAAOnnK,IAE3B62F,EAAYzoG,EAAEs0K,WAAWrhM,KAAKshM,aAAa57L,IAASunM,cAAclH,EAAOjmL,EAAGimL,EAAOpnK,EAAGj5B,EAAOuvG,aAAcvvG,EAAOwvG,cAAeq6F,EAAK,GAAIA,EAAK,GAAI,GAC5H,6BAAnBS,GAAoE,6BAAnBA,EAA+C,CAClG,IAAIK,EAAM3qM,EAAOm7E,SAASC,SACtBwzE,EAAK+7C,EAAI18C,WACTU,EAAKg8C,EAAIz8C,YACTniG,EAAK4+I,EAAIx8C,OACTniG,EAAK2+I,EAAIv8C,OACTw8C,EAAMh8C,EAAK,EACXi8C,EAAMl8C,EAAK,EACXm8C,EAAK9qM,EAAOmrJ,OAAO,eAAe/uJ,MAC3B,QAAP0uM,EACF9+I,GAAM6+I,EACU,WAAPC,IACT9+I,GAAM6+I,GAER,IAAIE,EAAK/qM,EAAOmrJ,OAAO,eAAe/uJ,MAC3B,SAAP2uM,EACFh/I,GAAM6+I,EACU,UAAPG,IACTh/I,GAAM6+I,GAER,IAAII,EAAiB3nE,GAAqBwmE,EAAK,GAAIA,EAAK,GAAI,CAAC99I,EAAK6+I,EAAK5+I,EAAK6+I,EAAK9+I,EAAK6+I,EAAK5+I,EAAK6+I,EAAK9+I,EAAK6+I,EAAK5+I,EAAK6+I,EAAK9+I,EAAK6+I,EAAK5+I,EAAK6+I,GAAMxK,EAAOjmL,EAAGimL,EAAOpnK,GAC/J,GAAI+xK,EAAe1uM,OAAS,EAAG,CAC7B,IAAI2uM,EAAQ7K,EACR8K,EAAYzxE,GAAOwxE,EAAOryE,GAAY9I,IACtCq7E,EAAe1xE,GAAOwxE,EAAOryE,GAAYoyE,IACzC3P,EAAY6P,EAKhB,GAJIC,EAAeD,IACjBp7E,EAAYk7E,EACZ3P,EAAY8P,GAEVH,EAAe1uM,OAAS,EAAG,CAC7B,IAAI8uM,EAAgB3xE,GAAOwxE,EAAO,CAChC7wL,EAAG4wL,EAAe,GAClB/xK,EAAG+xK,EAAe,KAEhBI,EAAgB/P,IAClBvrE,EAAY,CAACk7E,EAAe,GAAIA,EAAe,IAEnD,CACF,CACF,CAEF,IAAIK,EAAWvnE,GAAoBhU,EAAW1uF,EAAI/Z,EAAEywK,YAAYiS,GAAYntC,QAAQ3hF,GAAQ26C,GACxF01E,EAAUxnE,GAAoBhU,EAAW1uF,EAAI/Z,EAAEywK,YAAYiS,GAAY92J,IAAIgoC,GAAQ26C,GAKvF,GAJA/gC,EAAG/hD,KAAOw4J,EAAQ,GAClBz2G,EAAG9hD,KAAOu4J,EAAQ,GAClBz2G,EAAG2nG,UAAY6O,EAAS,GACxBx2G,EAAG4nG,UAAY4O,EAAS,GACD,mBAAnBhB,EACFv6E,EAAY,CAACswE,EAAOhmL,EAAGgmL,EAAOnnK,QACzB,GAAIumK,EAAYj0C,MACrBz7B,EAAYx1H,KAAKulM,gBAAgB7gM,EAAQwgM,QACpC,GAAuB,oBAAnB6K,EACTv6E,EAAYj7B,EAAGw0G,aAQf,GANuB,oBAAnBgB,GAA2D,6BAAnBA,EAC1CP,EAAOzoK,EACqB,oBAAnBgpK,GAA2D,6BAAnBA,IACjDP,EAAO,CAACzJ,EAAOjmL,EAAGimL,EAAOpnK,IAE3B62F,EAAYzoG,EAAEs0K,WAAWrhM,KAAKshM,aAAa58L,IAASuoM,cAAcnH,EAAOhmL,EAAGgmL,EAAOnnK,EAAGj6B,EAAOuwG,aAAcvwG,EAAOwwG,cAAes6F,EAAK,GAAIA,EAAK,GAAI,GAC5H,6BAAnBO,GAAoE,6BAAnBA,EAA+C,CAClG,IAAIkB,EAAMvsM,EAAOm8E,SAASC,SACtBowH,EAAMD,EAAIt9C,WACVw9C,GAAMF,EAAIr9C,YACVw9C,GAAMH,EAAIp9C,OACVw9C,GAAMJ,EAAIn9C,OACVw9C,GAAOJ,EAAM,EACbK,GAAOJ,GAAM,EACbK,GAAM9sM,EAAOmsJ,OAAO,eAAe/uJ,MAC3B,QAAR0vM,GACFH,IAAOE,GACU,WAARC,KACTH,IAAOE,IAET,IAAIE,GAAM/sM,EAAOmsJ,OAAO,eAAe/uJ,MAC3B,SAAR2vM,GACFL,IAAOE,GACU,UAARG,KACTL,IAAOE,IAET,IAAII,GAAkB3oE,GAAqBymE,EAAK,GAAIA,EAAK,GAAI,CAAC4B,GAAME,GAAMD,GAAME,GAAMH,GAAME,GAAMD,GAAME,GAAMH,GAAME,GAAMD,GAAME,GAAMH,GAAME,GAAMD,GAAME,IAAOzL,EAAOhmL,EAAGgmL,EAAOnnK,GAChL,GAAI+yK,GAAgB1vM,OAAS,EAAG,CAC9B,IAAI2vM,GAAS5L,EACT6L,GAAazyE,GAAOwyE,GAAQrzE,GAAY9I,IACxCq8E,GAAgB1yE,GAAOwyE,GAAQrzE,GAAYozE,KAC3CI,GAAaF,GAKjB,GAJIC,GAAgBD,KAClBp8E,EAAY,CAACk8E,GAAgB,GAAIA,GAAgB,IACjDI,GAAaD,IAEXH,GAAgB1vM,OAAS,EAAG,CAC9B,IAAI+vM,GAAiB5yE,GAAOwyE,GAAQ,CAClC7xL,EAAG4xL,GAAgB,GACnB/yK,EAAG+yK,GAAgB,KAEjBK,GAAiBD,KACnBt8E,EAAY,CAACk8E,GAAgB,GAAIA,GAAgB,IAErD,CACF,CACF,CAEF,IAAIM,GAAaxoE,GAAoBhU,EAAWzuF,EAAIha,EAAEywK,YAAYkS,GAAYptC,QAAQ3hF,GAAQ06C,GAC1F42E,GAAYzoE,GAAoBhU,EAAWzuF,EAAIha,EAAEywK,YAAYkS,GAAY/2J,IAAIgoC,GAAQ06C,GACzF9gC,EAAGliD,OAAS45J,GAAU,GACtB13G,EAAGjiD,OAAS25J,GAAU,GACtB13G,EAAGwnG,YAAciQ,GAAW,GAC5Bz3G,EAAGynG,YAAcgQ,GAAW,GACxBnC,IACG1tF,EAAS5nB,EAAGliD,SAAY8pE,EAAS5nB,EAAGjiD,SAAY6pE,EAAS5nB,EAAG/hD,OAAU2pE,EAAS5nB,EAAG9hD,MAGrF8hD,EAAG23G,SAAU,EAFb33G,EAAG23G,SAAU,EAKnB,EACA7C,kBAA0B,SAAU1uH,GAClC,IAAI4Z,EAAK5Z,EAAK,GAAGE,SAASC,SAE1B,OADA9gF,KAAKk4J,yBAAyBv3E,GACtB4Z,EAAGge,UACT,IAAK,WACH,MAAO,CACLz4F,EAAGy6E,EAAG+7D,YAAY,GAClB33H,EAAG47D,EAAG+7D,YAAY,IAEtB,QACE,MAAO,CACLx2I,EAAGy6E,EAAGwnG,YACNpjK,EAAG47D,EAAGynG,aAGd,EACAqN,kBAA0B,SAAU1uH,GAClC,IAAI4Z,EAAK5Z,EAAK,GAAGE,SAASC,SAE1B,OADA9gF,KAAKk4J,yBAAyBv3E,GACtB4Z,EAAGge,UACT,IAAK,WACH,MAAO,CACLz4F,EAAGy6E,EAAG+7D,YAAY,GAClB33H,EAAG47D,EAAG+7D,YAAY,IAEtB,QACE,MAAO,CACLx2I,EAAGy6E,EAAG2nG,UACNvjK,EAAG47D,EAAG4nG,WAGd,GAEIgQ,GAAQ,CAAC,EACb,SAASC,GAAcrlL,EAAG4zD,EAAM61E,GAM9B,IALA,IAAI67C,EAAc,SAAqBvrK,EAAIC,EAAIwrC,EAAIloD,GACjD,OAAOg1G,GAAUv4F,EAAIC,EAAIwrC,EAAIloD,EAC/B,EACIqnG,EAAK/wC,EAAKE,SACVyxH,EAAO5gF,EAAGM,OAAOykC,UACZzyJ,EAAI,EAAGA,EAAI+oB,EAAEwlL,eAAevwM,OAAQgC,IAAK,CAChD,IAAI65C,EAAI9wB,EAAEwlL,eAAevuM,GACzBsuM,EAAKruM,KAAK,CACR6b,EAAGuyL,EAAY77C,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAI34G,GACvClf,EAAG0zK,EAAY77C,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAI34G,IAE3C,CACF,CACAs0J,GAAM9L,qBAAuB,SAAU1lH,GACrC,IAAI+wC,EAAK/wC,EAAKE,SACV0Z,EAAKm3B,EAAG5wC,SACR6uH,EAAKp1G,EAAGge,SAMZ,GAHAmZ,EAAGM,OAAOykC,UAAY,KACtB/kC,EAAGM,OAAO0kC,QAAU,KACpBhlC,EAAGM,OAAOskC,YAAc,KACb,gBAAPq5C,GAA+B,WAAPA,GAA0B,SAAPA,GAAwB,aAAPA,EAAmB,CACjFj+E,EAAGM,OAAOykC,UAAY,GACtB,IAAK,IAAIzyJ,EAAI,EAAGA,EAAI,EAAIu2F,EAAGqnG,OAAO5/L,OAAQgC,GAAK,EAC7CouM,GAAcpyM,KAAM2gF,EAAM4Z,EAAGqnG,OAAOz/L,MAAM6B,EAAGA,EAAI,GAErD,MAAO,GAAW,aAAP2rM,EACT,KAAI6C,EAAO9gF,EAAGM,OAAO0kC,QAAU,GAC/B,IAAS1yJ,EAAI,EAAGA,EAAI,EAAIu2F,EAAGqnG,OAAO5/L,OAAQgC,GAAK,EAC7CwuM,EAAKvuM,KAAK,CACR6b,EAAGy6E,EAAGqnG,OAAO59L,GACb26B,EAAG47D,EAAGqnG,OAAO59L,EAAI,IAJY,MAO5B,GAAW,aAAP2rM,EAAmB,CAC5B,IAAIt5C,EAAO97D,EAAG+7D,YACd5kC,EAAGM,OAAOskC,YAAc,CAAC,CACvBx2I,EAAGu2I,EAAK,GACR13H,EAAG03H,EAAK,IACP,CACDv2I,EAAGu2I,EAAK,GACR13H,EAAG03H,EAAK,IAEZ,CACA3kC,EAAGM,OAAO6gC,WAAa7yJ,KAAKm/L,cAAcx+G,EAAKkwE,OAAO,SAASC,QAASnwE,EAAKkwE,OAAO,eAAe/uJ,OAAS9B,KAAKqsM,eACnH,EACA8F,GAAMM,2BAA6B,SAAUtyH,GAC3CngF,KAAK6tM,sBAAsB1tH,EAC7B,EAIA,IAAIuyH,GAAQ,CACZA,+BAAuC,SAAUt3H,GAC/C,IAAIx2C,EAAUw2C,EAAKy1E,OAAO,SAAS2C,SACnC,IAAIlxC,EAAY19E,GAAhB,CAGA,IAAI+tK,EAAO/zI,EACP8yD,EAAKt2C,EAAKyF,SACV+xH,EAAYx3H,EAAK5yC,QACjBqqK,EAAaz3H,EAAK3yC,SAClB8iD,EAAUnQ,EAAKmQ,UACfunH,EAAU13H,EAAKtpD,WACfihL,EAAa33H,EAAKy1E,OAAO,eAAe2C,SACxCw/C,EAAa53H,EAAKy1E,OAAO,eAAe2C,SACxCj5D,EAAKm3B,EAAG5wC,SACRkxC,EAASN,EAAGM,OAChB,OAAQ+gF,GACN,IAAK,OACHJ,EAAQG,EAAQhzL,EAAI8yL,EAAY,EAAIrnH,EACpC,MACF,IAAK,QACHonH,EAAQG,EAAQhzL,EAAI8yL,EAAY,EAAIrnH,EACpC,MACF,QAEEonH,EAAQG,EAAQhzL,EAEpB,OAAQkzL,GACN,IAAK,MACHp0I,EAAQk0I,EAAQn0K,EAAIk0K,EAAa,EAAItnH,EACrC,MACF,IAAK,SACH3sB,EAAQk0I,EAAQn0K,EAAIk0K,EAAa,EAAItnH,EACrC,MACF,QAEE3sB,EAAQk0I,EAAQn0K,EAEpB47D,EAAGs5D,OAAS8+C,EACZp4G,EAAGu5D,OAASl1F,EACZozD,EAAO6hC,OAAS8+C,EAChB3gF,EAAO8hC,OAASl1F,EAChB5+D,KAAKwmM,qBAAqBprH,GAC1Bp7E,KAAKizM,qBAAqB73H,EAtC1B,CAuCF,GACI83H,GAAqB,SAA4BvtI,EAAIC,GACvD,IAAIrjB,EAAQp8C,KAAKu+H,KAAK9+D,EAAKD,GAI3B,OAHW,IAAPA,GAAYpjB,EAAQ,IACtBA,IAAiB,GAEZA,CACT,EACI4wJ,GAAY,SAAmB7gI,EAAIxrC,GACrC,IAAI6+B,EAAK7+B,EAAGhnB,EAAIwyD,EAAGxyD,EACf8lD,EAAK9+B,EAAGnI,EAAI2zC,EAAG3zC,EACnB,OAAOu0K,GAAmBvtI,EAAIC,EAChC,EACIwtI,GAAc,SAAqB9gI,EAAIxrC,EAAIC,EAAI1c,GACjD,IAAIgpL,EAAK3zE,GAAM,EAAGr1G,EAAI,KAAO,GACzBi9G,EAAK5H,GAAM,EAAGr1G,EAAI,KAAO,GACzBipL,EAAMh0E,GAAYhtD,EAAIxrC,EAAIC,EAAIssK,GAC9BE,EAAMj0E,GAAYhtD,EAAIxrC,EAAIC,EAAIugG,GAClC,OAAO6rE,GAAUG,EAAKC,EACxB,EACAb,GAAMnM,gCAAkC,SAAU5lH,GAChD,IAAI9iC,EACA6zE,EAAK/wC,EAAKE,SACV0Z,EAAKm3B,EAAG5wC,SACR/zD,EAAI/sB,KACJ4kC,EAAU,CACZ85F,IAAK/9C,EAAKkwE,OAAO,SAAS2C,SAC1B9uJ,OAAQi8E,EAAKkwE,OAAO,gBAAgB2C,SACpC9tJ,OAAQi7E,EAAKkwE,OAAO,gBAAgB2C,UAEtC,GAAI5uH,EAAQ85F,KAAO95F,EAAQlgC,QAAUkgC,EAAQl/B,OAA7C,CAMAm4C,EAAI,CACF/9B,EAAGy6E,EAAG44D,KACNx0H,EAAG47D,EAAG64D,MAER,IAAIogD,EAAQ,SAAeziF,EAAU/N,EAAQlhH,GAC3CkvH,GAAoBU,EAAG5wC,SAAUiwC,EAAU/N,EAAQlhH,GACnDkvH,GAAoBU,EAAGM,OAAQjB,EAAU/N,EAAQlhH,EACnD,EACA0xM,EAAM,SAAU,KAAM31J,EAAE/9B,GACxB0zL,EAAM,SAAU,KAAM31J,EAAElf,GACxB,IAAI80K,EAAWP,GAAmB34G,EAAG+pG,SAAU/pG,EAAGgqG,UAClDiP,EAAM,iBAAkB,KAAMC,GAC9B,IAAIC,EAAyB,SAASA,IACpC,GAAIA,EAAuBn+K,MACzB,OAAOm+K,EAAuBn+K,MAMhC,IAHA,IAAI6uK,EAAU,GAGLpgM,EAAI,EAAGA,EAAI,EAAIu2F,EAAGqnG,OAAO5/L,OAAQgC,GAAK,EAAG,CAChD,IAAIsuE,EAAK,CACPxyD,EAAGy6E,EAAGqnG,OAAO59L,GACb26B,EAAG47D,EAAGqnG,OAAO59L,EAAI,IAEf8iC,EAAK,CACPhnB,EAAGy6E,EAAGqnG,OAAO59L,EAAI,GACjB26B,EAAG47D,EAAGqnG,OAAO59L,EAAI,IAEf+iC,EAAK,CACPjnB,EAAGy6E,EAAGqnG,OAAO59L,EAAI,GACjB26B,EAAG47D,EAAGqnG,OAAO59L,EAAI,IAEnBogM,EAAQngM,KAAK,CACXquE,GAAIA,EACJxrC,GAAIA,EACJC,GAAIA,EACJ4sK,UAAW,EACX3xM,OAAQ,EACRwnB,SAAU,IAEd,CACA,IAAI8oL,EAAO5gF,EAAGM,OAAOykC,UACjBm9C,EAAS7mL,EAAEwlL,eAAevwM,OAC9B,SAAS6xM,EAAWC,EAAIxhI,EAAIxrC,EAAIusK,EAAI/rE,GAClC,IAAItlI,EAASioF,GAAK3X,EAAIxrC,GAClBitK,EAAcD,EAAGtqL,SAASsqL,EAAGtqL,SAASxnB,OAAS,GAC/Cw/D,EAAU,CACZ8Q,GAAIA,EACJxrC,GAAIA,EACJusK,GAAIA,EACJ/rE,GAAIA,EACJqsE,UAAWI,EAAcA,EAAYJ,UAAYI,EAAY/xM,OAAS,EACtEA,OAAQA,GAEV8xM,EAAGtqL,SAASvlB,KAAKu9D,GACjBsyI,EAAG9xM,QAAUA,CACf,CAGA,IAAK,IAAI4N,EAAK,EAAGA,EAAKw0L,EAAQpiM,OAAQ4N,IAAM,CAC1C,IAAIkkM,EAAK1P,EAAQx0L,GACbokM,EAAS5P,EAAQx0L,EAAK,GACtBokM,IACFF,EAAGH,UAAYK,EAAOL,UAAYK,EAAOhyM,QAE3C6xM,EAAWC,EAAIA,EAAGxhI,GAAIggI,EAAK1iM,EAAKgkM,GAAS,EAAG7mL,EAAEwlL,eAAe,IAE7D,IAAK,IAAItnM,EAAI,EAAGA,EAAI2oM,EAAS,EAAG3oM,IAC9B4oM,EAAWC,EAAIxB,EAAK1iM,EAAKgkM,EAAS3oM,GAAIqnM,EAAK1iM,EAAKgkM,EAAS3oM,EAAI,GAAI8hB,EAAEwlL,eAAetnM,GAAI8hB,EAAEwlL,eAAetnM,EAAI,IAE7G4oM,EAAWC,EAAIxB,EAAK1iM,EAAKgkM,EAASA,EAAS,GAAIE,EAAG/sK,GAAIha,EAAEwlL,eAAeqB,EAAS,GAAI,EACtF,CAEA,OAAOF,EAAuBn+K,MAAQ6uK,CACxC,EACI6P,EAAyB,SAAgCjxF,GAC3D,IAAIzgE,EACA2xJ,EAAmB,WAAXlxF,EACZ,GAAKp+E,EAAQo+E,GAAb,CAGA,IAAI71F,EAASwzD,EAAKkwE,OAAO7tC,EAAS,gBAAgB8tC,QAClD,OAAQv2D,EAAGge,UACT,IAAK,OACL,IAAK,WACL,IAAK,SACL,IAAK,cAQD,IANA,IACI4Z,EADAgiF,EAAMT,IAENC,EAAY,EACZS,EAAY,EAGPpwM,EAAI,EAAGA,EAAImwM,EAAInyM,OAAQgC,IAAK,CAEnC,IADA,IAAIqwM,EAAMF,EAAID,EAAQlwM,EAAImwM,EAAInyM,OAAS,EAAIgC,GAClCiH,EAAI,EAAGA,EAAIopM,EAAI7qL,SAASxnB,OAAQiJ,IAAK,CAC5C,IAAIqpM,EAAOD,EAAI7qL,SAAS0qL,EAAQjpM,EAAIopM,EAAI7qL,SAASxnB,OAAS,EAAIiJ,GAC1DspM,EAAUvwM,IAAMmwM,EAAInyM,OAAS,GAAKiJ,IAAMopM,EAAI7qL,SAASxnB,OAAS,EAGlE,GAFA2xM,EAAYS,EACZA,GAAaE,EAAKtyM,OACdoyM,GAAajnL,GAAUonL,EAAS,CAClCpiF,EAAW,CACT2hF,GAAIO,EACJ7yI,QAAS8yI,GAEX,KACF,CACF,CACA,GAAIniF,EACF,KAEJ,CACA,IAAI2hF,EAAK3hF,EAAS2hF,GACdnqL,EAAMwoG,EAAS3wD,QACfgzI,GAAYrnL,EAASwmL,GAAahqL,EAAI3nB,OACtCyyM,EAAQ9qL,EAAI29G,GAAK39G,EAAI0pL,GACrBhpL,EAAI6pL,EAAQvqL,EAAI0pL,GAAKoB,EAAQD,EAAW7qL,EAAI29G,GAAKmtE,EAAQD,EAC7DnqL,EAAIq1G,GAAM,EAAGr1G,EAAG,GAChBwzB,EAAIyhF,GAAYw0E,EAAGxhI,GAAIwhI,EAAGhtK,GAAIgtK,EAAG/sK,GAAI1c,GACrCk4B,EAAQ6wJ,GAAYU,EAAGxhI,GAAIwhI,EAAGhtK,GAAIgtK,EAAG/sK,GAAI1c,GACzC,MAEJ,IAAK,WACL,IAAK,WACL,IAAK,WAOD,IALA,IACE8hC,EACAuoJ,EACEpiI,EAAIxrC,EAHJ5Z,EAAI,EAIJ1e,EAAI+rF,EAAGqnG,OAAO5/L,OACTmyH,EAAM,EAAGA,EAAM,EAAI3lH,EAAG2lH,GAAO,EAuBpC,GAtBI+/E,GACF5hI,EAAK,CACHxyD,EAAGy6E,EAAGqnG,OAAOztE,GACbx1F,EAAG47D,EAAGqnG,OAAOztE,EAAM,IAErBrtF,EAAK,CACHhnB,EAAGy6E,EAAGqnG,OAAOztE,EAAM,GACnBx1F,EAAG47D,EAAGqnG,OAAOztE,EAAM,MAGrB7hD,EAAK,CACHxyD,EAAGy6E,EAAGqnG,OAAOpzL,EAAI,EAAI2lH,GACrBx1F,EAAG47D,EAAGqnG,OAAOpzL,EAAI,EAAI2lH,IAEvBrtF,EAAK,CACHhnB,EAAGy6E,EAAGqnG,OAAOpzL,EAAI,EAAI2lH,GACrBx1F,EAAG47D,EAAGqnG,OAAOpzL,EAAI,EAAI2lH,KAGzBhoE,EAAK89B,GAAK3X,EAAIxrC,GACd4tK,EAAKxnL,EACLA,GAAKi/B,EACDj/B,GAAKC,EACP,MAGJ,IAAIwnL,EAAKxnL,EAASunL,EACd/kM,EAAKglM,EAAKxoJ,EACdx8C,EAAK+vH,GAAM,EAAG/vH,EAAI,GAClBkuC,EAAI0hF,GAAOjtD,EAAIxrC,EAAIn3B,GACnB4yC,EAAQ4wJ,GAAU7gI,EAAIxrC,GACtB,MAGN0sK,EAAM,SAAUxwF,EAAQnlE,EAAE/9B,GAC1B0zL,EAAM,SAAUxwF,EAAQnlE,EAAElf,GAC1B60K,EAAM,iBAAkBxwF,EAAQzgE,EAzFhC,CA0FF,EACA0xJ,EAAuB,UACvBA,EAAuB,UACvBj0M,KAAKizM,qBAAqBtyH,EAlL1B,CAmLF,EACA+xH,GAAMO,qBAAuB,SAAUv0G,GACrC1+F,KAAK40M,6BAA6Bl2G,GAC9BA,EAAI66C,WACNv5I,KAAK40M,6BAA6Bl2G,EAAK,UACvC1+F,KAAK40M,6BAA6Bl2G,EAAK,UAE3C,EACAg0G,GAAMkC,6BAA+B,SAAUl2G,EAAKskB,GAClD,IAAI0O,EAAKhzB,EAAI7d,SACTlkD,EAAO38B,KAAK60M,aAAan2G,EAAKskB,GAC9B8xF,EAAY90M,KAAK+0M,yBAAyBr2G,EAAK/hE,GAC/C2I,EAAao5D,EAAImyD,OAAO,eAAeC,QACvCg1B,EAAWpnF,EAAImyD,OAAO,aAAa2C,SACnCvtG,EAAQ6qE,GAAoBY,EAAG5wC,SAAU,uBAAwBkiC,IAAW,GAC5EgyF,EAAwB,SAAblvB,EAAsB,EAAI3/K,KAAKwI,IAAIs3C,EAAMjkD,OAAQ,GAC5DizM,EAAoBH,EAAUrsK,OAASusK,EACvCE,EAAkBD,EAAoB3vK,EACtCkD,EAAQssK,EAAUtsK,MAClBC,EAASqsK,EAAUrsK,QAAUusK,EAAW,IAAM1vK,EAAa,GAAK2vK,EACpEjkF,GAAoBU,EAAGM,OAAQ,aAAchP,EAAQx6E,GACrDwoF,GAAoBU,EAAG5wC,SAAU,aAAckiC,EAAQx6E,GACvDwoF,GAAoBU,EAAGM,OAAQ,cAAehP,EAAQv6E,GACtDuoF,GAAoBU,EAAG5wC,SAAU,cAAekiC,EAAQv6E,GACxDuoF,GAAoBU,EAAG5wC,SAAU,kBAAmBkiC,EAAQkyF,EAC9D,EACAxC,GAAMmC,aAAe,SAAUn2G,EAAKskB,GAClC,IAAI0O,EAAKhzB,EAAI7d,SACTs0H,EAAMnyF,EAASA,EAAS,IAAM,GAC9BrmF,EAAO+hE,EAAImyD,OAAOskD,EAAM,SAAS3hD,SACjCqyB,EAAgBnnF,EAAImyD,OAAO,kBAAkB/uJ,MAC7Cg/E,EAAW,SAAkBiwC,EAAUjvH,GACzC,OAAIA,GACFkvH,GAAoBU,EAAG5wC,SAAUiwC,EAAU/N,EAAQlhH,GAC5CA,GAEAgvH,GAAoBY,EAAG5wC,SAAUiwC,EAAU/N,EAEtD,EAGA,IAAKrmF,EACH,MAAO,GAEY,QAAjBkpJ,IAAqD,aAAjBA,EACtClpJ,EAAOA,EAAKP,cACc,aAAjBypJ,IACTlpJ,EAAOA,EAAKrd,gBAEd,IAAI81L,EAAY12G,EAAImyD,OAAO,aAAa/uJ,MACxC,GAAkB,SAAdszM,EAAsB,CACxB,IAAIj5B,EAAWr7F,EAAS,YAGxB,GAAgB,MAAZq7F,GAAoBr7F,EAAS,kBAAoBq7F,EACnD,OAAOr7F,EAAS,uBAUlB,IARA,IAAIu0H,EAAO,IACPpvJ,EAAQtpB,EAAKr5B,MAAM,MACnBgyM,EAAO52G,EAAImyD,OAAO,kBAAkBC,QACpCykD,EAAW72G,EAAImyD,OAAO,sBAAsB/uJ,MAC5C0zM,EAA2B,aAAbD,EACdE,EAAe,GACfC,EAAa,cACbC,EAAgBH,EAAc,GAAK,IAC9BhnM,EAAI,EAAGA,EAAIy3C,EAAMjkD,OAAQwM,IAAK,CACrC,IAAIg9B,EAAOya,EAAMz3C,GACbonM,EAAW51M,KAAK+0M,yBAAyBr2G,EAAKlzD,GAC9CqqK,EAAQD,EAASptK,MACrB,GAAIgtK,EAAa,CACf,IAAIM,EAAgBtqK,EAAKloC,MAAM,IAAIwH,KAAKuqM,GACxC7pK,EAAOsqK,CACT,CACA,GAAID,EAAQP,EAAM,CAIhB,IAFA,IAAIS,EAAQvqK,EAAKloC,MAAMoyM,GACnBM,EAAU,GACLnsM,EAAI,EAAGA,EAAIksM,EAAM/zM,OAAQ6H,IAAK,CACrC,IAAIosM,EAAOF,EAAMlsM,GACb8+E,EAA8B,IAAnBqtH,EAAQh0M,OAAei0M,EAAOD,EAAUL,EAAgBM,EACnEC,EAAWl2M,KAAK+0M,yBAAyBr2G,EAAK/V,GAC9CwtH,EAAQD,EAAS1tK,MACjB2tK,GAASb,EAEXU,GAAWC,EAAON,GAGdK,GACFP,EAAaxxM,KAAK+xM,GAEpBA,EAAUC,EAAON,EAErB,CAGKK,EAAQ16L,MAAM,kBACjBm6L,EAAaxxM,KAAK+xM,EAEtB,MAEEP,EAAaxxM,KAAKunC,EAEtB,CAEAs1C,EAAS,uBAAwB20H,GACjC94K,EAAOmkD,EAAS,sBAAuB20H,EAAa3qM,KAAK,OACzDg2E,EAAS,eAAgBq7F,EAC3B,MAAO,GAAkB,aAAdi5B,EAA0B,CACnC,IAAIgB,EAAQ13G,EAAImyD,OAAO,kBAAkBC,QACrCulD,EAAa,GACbC,EAAW,IACXC,GAAY,EAChB,GAAIv2M,KAAK+0M,yBAAyBr2G,EAAK/hE,GAAM6L,MAAQ4tK,EAEnD,OAAOz5K,EAET,IAAK,IAAI34B,EAAI,EAAGA,EAAI24B,EAAK36B,OAAQgC,IAAK,CACpC,IAAIwyM,EAAkBx2M,KAAK+0M,yBAAyBr2G,EAAK23G,EAAa15K,EAAK34B,GAAKsyM,GAAU9tK,MAC1F,GAAIguK,EAAkBJ,EACpB,MAEFC,GAAc15K,EAAK34B,GACfA,IAAM24B,EAAK36B,OAAS,IACtBu0M,GAAY,EAEhB,CAIA,OAHKA,IACHF,GAAcC,GAETD,CACT,CAEA,OAAO15K,CACT,EACA+1K,GAAM+D,sBAAwB,SAAU/3G,GACtC,IAAI+nF,EAAgB/nF,EAAImyD,OAAO,sBAAsB2C,SACjDu/C,EAAar0G,EAAImyD,OAAO,eAAe2C,SAC3C,GAAsB,SAAlBizB,EAcF,OAAOA,EAbP,IAAI/nF,EAAIO,SAUN,MAAO,SATP,OAAQ8zG,GACN,IAAK,OACH,MAAO,QACT,IAAK,QACH,MAAO,OACT,QACE,MAAO,SAQjB,EACAL,GAAMqC,yBAA2B,SAAUr2G,EAAK/hE,GAC9C,IAAI5P,EAAI/sB,KACJ02M,EAAWtnF,GAAWzyF,EAAM+hE,EAAI7d,SAASm7F,cACzCzmJ,EAAQxI,EAAE4pL,gBAAkB5pL,EAAE4pL,cAAgB,IAC9CC,EAAcrhL,EAAMmhL,GACxB,GAAmB,MAAfE,EACF,OAAOA,EAET,IAAIrrH,EAAU,EACVsrH,EAASn4G,EAAImyD,OAAO,cAAc2C,SAClClqE,EAAOoV,EAAImyD,OAAO,aAAaC,QAC/BgmD,EAASp4G,EAAImyD,OAAO,eAAe2C,SACnChyD,EAAS9C,EAAImyD,OAAO,eAAe2C,SACnCpjI,EAASpwB,KAAK+2M,gBACd78G,EAAMl6F,KAAKg3M,uBACf,IAAK5mL,EAAQ,CACXA,EAASpwB,KAAK+2M,gBAAkB5zM,SAASE,cAAc,UACvD62F,EAAMl6F,KAAKg3M,uBAAyB5mL,EAAOC,WAAW,MACtD,IAAI4mL,EAAK7mL,EAAOxkB,MAChBqrM,EAAGnlL,SAAW,WACdmlL,EAAG5mK,KAAO,UACV4mK,EAAG1mK,IAAM,UACT0mK,EAAGzyH,OAAS,KACZyyH,EAAG3wB,WAAa,SAChB2wB,EAAGz6G,cAAgB,MACrB,CACAtC,EAAIp+D,KAAO,GAAG76B,OAAO41M,EAAQ,KAAK51M,OAAOugG,EAAQ,KAAKvgG,OAAOqoF,EAAM,OAAOroF,OAAO61M,GAIjF,IAHA,IAAItuK,EAAQ,EACRC,EAAS,EACTwd,EAAQtpB,EAAKr5B,MAAM,MACdU,EAAI,EAAGA,EAAIiiD,EAAMjkD,OAAQgC,IAAK,CACrC,IAAIwnC,EAAOya,EAAMjiD,GACbkzM,EAAUh9G,EAAIp0C,YAAYta,GAC1B3hC,EAAI1D,KAAK0I,KAAKqoM,EAAQ1uK,OACtB1nC,EAAIwoF,EACR9gD,EAAQriC,KAAKwI,IAAI9E,EAAG2+B,GACpBC,GAAU3nC,CACZ,CAGA,OAFA0nC,GAAS+iD,EACT9iD,GAAU8iD,EACHh2D,EAAMmhL,GAAY,CACvBluK,MAAOA,EACPC,OAAQA,EAEZ,EACAiqK,GAAMyE,oBAAsB,SAAUz4G,EAAKskB,GACzC,IAAI0O,EAAKhzB,EAAI7d,SACT0Z,EAAKm3B,EAAG5wC,SACRy4D,EAAS76C,EAAI66C,SACbga,EAAavwC,EAASA,EAAS,IAAM,GACrC5mB,EAAMsC,EAAImyD,OAAO0C,EAAa,iBAC9B6jD,EAASh7G,EAAIo3D,SACjB,MAAe,SAAX4jD,EACK,EACE79D,GAAqB,eAAX69D,EACZ78G,EAAG88G,eACU,eAAXD,EACF,EAEAh7G,EAAI00D,OAEf,EACA4hD,GAAMlM,qBAAuB,SAAU9nG,GACrC,IAAI3xE,EAAI/sB,KACJu5I,EAAS76C,EAAI66C,SACb7nB,EAAKhzB,EAAI7d,SACT0Z,EAAKm3B,EAAG5wC,SACZyZ,EAAG+8G,WAAavqL,EAAEoqL,oBAAoBz4G,GAClC66C,IACFh/C,EAAGg9G,iBAAmBxqL,EAAEoqL,oBAAoBz4G,EAAK,UACjDnE,EAAGi9G,iBAAmBzqL,EAAEoqL,oBAAoBz4G,EAAK,UAErD,EAEA,IAAI+4G,GAAQ,CAAC,EACTC,GAAqB,GACrBC,IAAgB,EACpBF,GAAMnW,aAAe,SAAUlmH,GAC7B,IAAIruD,EAAI/sB,KACJw1B,EAAQ4lD,EAAKy1E,OAAO,SAAS/uJ,MACjC,GAAc,iBAAV0zB,IAA6B4lD,EAAK5yC,QAAUkvK,IAAsBt8H,EAAK3yC,SAAWivK,IAKpF,OAJKC,KACHlkL,GAAK,+FACLkkL,IAAgB,GAEX,YAET,GAAIv8H,EAAK8jB,WACP,MAAc,cAAV1pE,GAAmC,mBAAVA,GAAwC,oBAAVA,GAAyC,iBAAVA,GAAsC,kBAAVA,GAAuC,WAAVA,EAC1IA,EAEA,YAGX,GAAc,YAAVA,EAAqB,CACvB,IAAI9J,EAAS0vD,EAAKy1E,OAAO,wBAAwB/uJ,MACjD,OAAOirB,EAAEs0K,WAAWuW,YAAYlsL,GAAQjnB,IAC1C,CACA,OAAO+wB,CACT,EAEA,IAAIqiL,GAAQ,CACZA,6BAAqC,WACnC,IAAI1oL,EAAKnvB,KAAKmvB,GACV2oL,EAAe3oL,EAAGixD,aAClBrzD,EAAI/sB,KACJsxL,EAAU,SAAiBlpF,GAC7B,IAAI2vG,IAAmBh1M,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GAEtF,GADA+0M,EAAa95F,MAAM5V,GACf2vG,EACF,IAAK,IAAI/zM,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACX0tH,EAAKhzB,EAAI7d,SACTmxC,EAASN,EAAGM,OAChBA,EAAOm3B,OAAQ,EACfn3B,EAAOgmF,gBAAiB,CAC1B,CAEJ,EACAjrL,EAAEkrL,OAAO9oL,GAAIs0C,GAAG,oBAAoB,SAAuBx9D,GACzD,IAAIy4F,EAAMz4F,EAAEP,OACZ4rL,EAAQ5yF,EACV,IAAGj7B,GAAG,wBAAwB,SAAsBx9D,GAClD,IAAIy4F,EAAMz4F,EAAEP,OACZ4rL,EAAQ5yF,GAAK,EACf,IACA,IAAIw5G,EAAiB,SAAwBhkC,GAC3C,GAAIA,EAAU,CACZ,IAAIikC,EAAMprL,EAAEqrL,oBAIZN,EAAa7zC,aACb,IAAK,IAAIjgK,EAAI,EAAGA,EAAI8zM,EAAa91M,OAAQgC,IAAK,CAC5C,IAAI06F,EAAMo5G,EAAa9zM,GACnBguH,EAAStzB,EAAI7d,SAASmxC,OACtBtzB,EAAIO,WAAa+yB,EAAOgmF,iBAC1B1mB,EAAQ5yF,EAAI0W,kBACZ4c,EAAOgmF,gBAAiB,EAE5B,CACA,GAAIG,EACF,IAAK,IAAIvoM,EAAK,EAAGA,EAAKuoM,EAAIn2M,OAAQ4N,IAAM,CACtC,IAAIpN,EAAK21M,EAAIvoM,GACbpN,EAAG0xK,EAAU4jC,EACf,CAEF/qL,EAAEmrI,yBAAyB4/C,GAC3BA,EAAe3oL,EAAGixD,YACpB,CACF,EACArzD,EAAEsrL,wBAA0B,WAC1BH,GAAe,EACjB,EACAnrL,EAAEknJ,aAAaikC,EAAgBnrL,EAAEonJ,uBAAuBmkC,SAC1D,EACAT,iBAAyB,SAAUr1M,GACjC,IAAI21M,EAAMn4M,KAAKo4M,oBAAsBp4M,KAAKo4M,qBAAuB,GACjED,EAAIl0M,KAAKzB,EACX,EACAq1M,yBAAiC,SAAUzvG,EAAM2oD,GAC/C,IAAIwnD,EAAmB,SAA0B75G,GAC/C,OAAOA,EAAI7d,SAASmxC,OAAOgmF,cAC7B,EACI73H,EAAQ,GACRrB,EAAQ,GAGZ,IAAI9+E,KAAKqrE,UAAT,MAKiB3oE,IAAbquJ,IACFA,GAAW,GAEb,IAAK,IAAI/sJ,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACX0tH,EAAKhzB,EAAI7d,SACTmxC,EAASN,EAAGM,QAIZtzB,EAAI66C,UAAcg/D,EAAiB75G,EAAIh6F,WAAc6zM,EAAiB75G,EAAIh5F,YAC5EssH,EAAOm3B,OAAQ,GAIb4H,GAAY/+B,EAAOm3B,OAASzqD,EAAIzf,WAKA,SAAhCyf,EAAImyD,OAAO,WAAW/uJ,QAGT,UAAb4vH,EAAGx2E,MACL4jC,EAAM76E,KAAKy6F,GAGXve,EAAMl8E,KAAKy6F,GAEbszB,EAAOm3B,OAAQ,EACjB,CAGA,IAAK,IAAIh1B,EAAM,EAAGA,EAAMr1C,EAAM98E,OAAQmyH,IAAO,CAC3C,IAAIotB,EAAOziE,EAAMq1C,GACbqkF,EAAMj3D,EAAK1gE,SACX43H,EAAUD,EAAIxmF,OACd3jH,EAAMkzI,EAAKzvH,WACf9xB,KAAK04M,+BAA+Bn3D,GACpCk3D,EAAQh4E,MAAQpyH,EAAIyR,EACpB24L,EAAQ/3E,MAAQryH,EAAIswB,EACpB85K,EAAQE,MAAQp3D,EAAKsP,OAAO,SAASC,QACrC2nD,EAAQG,MAAQr3D,EAAKsP,OAAO,UAAUC,OACxC,CACA9wJ,KAAKyyM,2BAA2BtyH,GAGhC,IAAK,IAAIm9C,EAAM,EAAGA,EAAMn9C,EAAMn+E,OAAQs7H,IAAO,CAC3C,IAAI4yB,EAAQ/vE,EAAMm9C,GACdu7E,EAAM3oD,EAAMrvE,SACZi4H,EAAWD,EAAI7mF,OACfz3B,EAAKs+G,EAAI/3H,SAGbg4H,EAAS/lD,KAAOx4D,EAAGwnG,YACnB+W,EAAS9lD,KAAOz4D,EAAGynG,YACnB8W,EAAS7lD,KAAO14D,EAAG2nG,UACnB4W,EAAS5lD,KAAO34D,EAAG4nG,UACnB2W,EAAS3lD,KAAO54D,EAAG44D,KACnB2lD,EAAS1lD,KAAO74D,EAAG64D,KACnB0lD,EAASxB,WAAa/8G,EAAG+8G,WACzBwB,EAASvB,iBAAmBh9G,EAAGg9G,iBAC/BuB,EAAStB,iBAAmBj9G,EAAGi9G,gBACjC,CAlEA,CAmEF,GAEIuB,GAAQ,CACZA,wBAAgC,WAC9B,IAAI3wG,EAAOpoG,KAAKg5M,kBAChB,GAAK5wG,EAAL,CAIAA,EAAKp2E,KAAO,GACZo2E,EAAK6wG,QAAU,GAEf,IADA,IAAIC,EAAc,GACTl1M,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACXu2F,EAAKmE,EAAI7d,SAASC,SAClB4d,EAAIkG,YAAclG,EAAIQ,WACxBg6G,EAAYj1M,KAAKy6F,GACRnE,EAAG4+G,YACZ/wG,EAAKp2E,KAAK/tB,KAAKy6F,GAEf0J,EAAK6wG,QAAQh1M,KAAKy6F,EAEtB,CAGA,IAAS16F,EAAI,EAAGA,EAAIk1M,EAAYl3M,OAAQgC,IAAK,CACvC06F,EAAMw6G,EAAYl1M,GACtBokG,EAAKp2E,KAAK/tB,KAAKy6F,EACjB,CApBA,CAqBF,EACAq6G,4BAAoC,WAClC/4M,KAAKg5M,kBAAoB,IAC3B,EACAD,qBAA6B,SAAUK,GACrC,GAAIA,IAAgBp5M,KAAKg5M,kBAAmB,CAC1C,IAAI5wG,EAAOpoG,KAAKmvB,GAAGgvI,kBAAkB5sC,UACrCnpB,EAAKviF,KAAK46I,IACVr4D,EAAKnQ,YAAcmQ,EAAKp4E,QAAO,SAAU0uE,GACvC,OAAOA,EAAIzG,aACb,IACAj4F,KAAKg5M,kBAAoB5wG,EACzBpoG,KAAKq5M,yBACP,MACEjxG,EAAOpoG,KAAKg5M,kBAEd,OAAO5wG,CACT,GAEIkxG,GAAQ,CAAC,EACb,CAAC9Z,GAAO6D,GAAOqB,GAAO2K,GAAO8C,GAAOO,GAAO+E,GAAOI,GAAOkB,IAAOnuM,SAAQ,SAAUysD,GAChFqsD,GAAO41F,GAAOjiJ,EAChB,IAEA,IAAIkiJ,GAAQ,CACZA,eAAuB,SAAUv1I,EAAKw1I,EAAaC,GACjD,IAAI1sL,EAAI/sB,KACJ05M,EAAa3sL,EAAE2sL,WAAa3sL,EAAE2sL,YAAc,CAAC,EAC7CnkL,EAAQmkL,EAAW11I,GACvB,GAAIzuC,EAIF,OAHKA,EAAMokL,MAAM1gI,UACf1jD,EAAMokL,MAAM51L,iBAAiB,OAAQ01L,GAEhClkL,EAAMokL,MAEbpkL,EAAQmkL,EAAW11I,GAAO01I,EAAW11I,IAAQ,CAAC,EAC9C,IAAI21I,EAAQpkL,EAAMokL,MAAQ,IAAI/rG,MAE9B+rG,EAAM51L,iBAAiB,OAAQ01L,GAC/BE,EAAM51L,iBAAiB,SAAS,WAC9B41L,EAAM9iM,OAAQ,CAChB,IAIA,IAAI+iM,EAAgB,QAChBC,EAAY71I,EAAI0e,UAAU,EAAGk3H,EAAc53M,QAAQsd,gBAAkBs6L,EAQzE,OAPKC,IAEHL,EAA8B,SAAhBA,EAAyB,KAAOA,EAC9CG,EAAMH,YAAcA,GAGtBG,EAAM7tM,IAAMk4D,EACL21I,CAEX,GAEIG,GAAQ,CAIZA,gBAAwB,SAAUp0M,EAAQ2d,EAAO5B,EAASs4L,GAExD,IAAI9mM,EAAOpM,MAAMU,UAAUpF,MAAMW,MAAMC,UAAW,CAAC,IAC/CH,EAAI5C,KAAKi4M,OAAOvyM,GACpB,OAAO9C,EAAE6gE,GAAG3gE,MAAMF,EAAGqQ,EACvB,EACA6mM,OAAe,SAAUn5G,GACvB,IAAI5zE,EAAI/sB,KACJshL,EAAkBv0J,EAAEoC,GAAGjpB,SACvB8zM,EAAWr5G,IAAQ2gF,GAAmB3gF,IAAQ2gF,EAAgBn+K,UAAYw9F,IAAQ2gF,EAAgBn+K,SAASsvB,MAAQ8vF,EAAW5hB,GAClI,GAA+B,MAA3B5zE,EAAEktL,sBAA+B,CAEnC,IAAIC,GAAkB,EACtB,IACE,IAAI/1G,EAAOnhG,OAAOC,eAAe,CAAC,EAAG,UAAW,CAC9CC,IAAK,WAEH,OADAg3M,GAAkB,GACX,CACT,IAEF54B,EAAgBv9J,iBAAiB,OAAQ,KAAMogF,EACjD,CAAE,MAAOjhB,GACP,CAEFn2D,EAAEktL,sBAAwBC,CAC5B,CACA,IAAIz2I,EAAK,SAAYpgD,EAAO5B,EAASs4L,GACnC,IAAI9mM,EAAOpM,MAAMU,UAAUpF,MAAM9B,KAAK0C,WActC,OAbIi3M,GAAYjtL,EAAEktL,wBAEhBhnM,EAAK,GAAK,CACRknM,QAAuB,MAAdJ,GAAqBA,EAC9BK,SAAS,EACT78C,MAAM,IAGVxwI,EAAEowE,SAASl5F,KAAK,CACdyB,OAAQi7F,EACR1tF,KAAMA,KAEP0tF,EAAI58E,kBAAoB48E,EAAIl9B,IAAI3gE,MAAM69F,EAAK1tF,GACrCjT,IACT,EACA,MAAO,CACLyjE,GAAIA,EACJ1/C,iBAAkB0/C,EAClBy+E,YAAaz+E,EACb1mD,KAAM0mD,EAEV,EACAq2I,gBAAwB,SAAU1+H,GAChC,OAAOA,GAAQA,EAAK6jB,WAAa7jB,EAAKgoB,UAAYhoB,EAAKoiB,WACzD,EACAs8G,gBAAwB,SAAU1+H,GAChC,OAAOp7E,KAAKq6M,gBAAgBj/H,IAASA,EAAK6c,aAC5C,EACA6hH,KAAa,WACX,IAAI/sL,EAAI/sB,KACJshL,EAAkBv0J,EAAEoC,GAAGjpB,SACvBo0M,EAAa,SAAoB57G,GACnC,OAAOA,EAAIyzB,UACb,EACIooF,EAAgB,SAAuB70M,EAAQ0H,EAAOnH,EAAG6rB,GAC7C,MAAVpsB,IACFA,EAASqnB,EAAEoC,IAEb,IAAK,IAAInrB,EAAI,EAAGA,EAAIoJ,EAAMpL,OAAQgC,IAAK,CACrC,IAAIS,EAAO2I,EAAMpJ,GACjB0B,EAAO+jG,KAAK,CACV5J,cAAe55F,EACfzB,KAAMC,EACNqtB,SAAUA,GAEd,CACF,EACI0oL,EAAmB,SAA0Bv0M,GAC/C,OAAOA,EAAEw0M,UAAYx0M,EAAEy0M,SAAWz0M,EAAE00M,OACtC,EAEIC,EAA0B,SAAiCC,EAAMC,GACnE,IAAIC,GAAmB,EACvB,GAAIhuL,EAAEoC,GAAGy+H,oBAAsBitD,GAAQA,EAAKzoF,WAE1C,IAAK,IAAIpuH,EAAI,EAAG82M,GAAS92M,EAAI82M,EAAM94M,OAAQgC,IAAK,CAC1C62M,EAAOC,EAAM92M,GAGjB,GAAI62M,EAAK57G,UAAY47G,EAAK37G,aAAe27G,EAAKzoF,WAAY,CACxD2oF,GAAmB,EACnB,KACF,CACF,MAEAA,GAAmB,EAErB,OAAOA,CACT,EACIC,EAAa,SAAoBt8G,GACnCA,EAAI,GAAG7d,SAAS+jB,SAAU,CAC5B,EACIq2G,EAAW,SAAkBv8G,GAC/BA,EAAI,GAAG7d,SAAS+jB,SAAU,CAC5B,EACIs2G,EAAiB,SAAwBx8G,GAC3CA,EAAI,GAAG7d,SAASC,SAASq4H,aAAc,CACzC,EACIgC,EAAkB,SAAyBz8G,GAC7CA,EAAI,GAAG7d,SAASC,SAASq4H,aAAc,CACzC,EACIiC,EAAgB,SAAuB18G,GACzCA,EAAI,GAAG7d,SAASC,SAASu6H,cAAe,CAC1C,EACIC,EAAmB,SAA0B58G,GAC/CA,EAAI,GAAG7d,SAASC,SAASu6H,cAAe,CAC1C,EACIE,EAAgB,SAAuB78G,EAAKyF,GAC9C,IAAIltF,EAAOktF,EAAKq3G,UACZC,EAAaxkM,EAAK5S,IAAIq6F,GACrB+8G,IAAc/8G,EAAIlB,aAAgBkB,EAAI0E,WACzCnsF,EAAK+mG,MAAMtf,GACXs8G,EAAWt8G,GAEf,EAIIg9G,EAAuB,SAA8BtgI,EAAM+oB,GAC7D,GAAK/oB,EAAKjsD,KAAKy+H,qBAGS,MAApBzpD,EAAKg1G,aAAyC,MAAlBh1G,EAAKq3G,WAArC,CAIA,IAAIG,EAAavgI,EAAKsnB,cAClByB,EAAKg1G,cACPwC,EAAW/wM,QAAQswM,GACnBS,EAAWvmG,iBAAiBxqG,QAAQswM,IAElC/2G,EAAKq3G,WACPD,EAAcI,EAAYx3G,EAR5B,CAUF,EAGIy3G,EAAiB,SAAwB98H,EAAOqlB,GAClDA,EAAOA,GAAQ,CAAC,EAChB,IAAIypD,EAAmB9uE,EAAM3vD,KAAKy+H,mBAC9BzpD,EAAKg1G,cACPr6H,EAAMl0E,QAAQswM,GACdp8H,EAAM+2C,eAAeu3B,WAAU,SAAU1uD,GACvC,OAAQkvD,GAAoBlvD,EAAI66C,QAClC,IAAG3uI,QAAQswM,IAET/2G,EAAKq3G,WACP18H,EAAMl0E,SAAQ,SAAU8zF,GACtB68G,EAAc78G,EAAKyF,EACrB,IAEFu3G,EAAqB58H,EAAOqlB,GAG5B03G,EAA2B/8H,EAAO,CAChCq6H,YAAah1G,EAAKg1G,cAEpBpsL,EAAEssL,yBACJ,EACIyC,EAAgBF,EAChBG,EAAsB,SAA6BC,GAChDA,IAKLjvL,EAAE2zK,uBAAuB91L,SAAQ,SAAU8zF,GACzCu8G,EAASv8G,GACTy8G,EAAgBz8G,GAChB48G,EAAiB58G,EACnB,IACA3xE,EAAEssL,0BACJ,EAIIwC,EAA6B,SAAoCzgI,EAAM+oB,GACzE,IAAwB,MAApBA,EAAKg1G,aAAyC,MAAlBh1G,EAAKq3G,YAIhCpgI,EAAKjsD,KAAKy+H,mBAAf,CAKA,IAAIztJ,EAASi7E,EAAK+vE,YAAY33C,UAG9B,IAAIrzG,EAAO62G,KAAK57B,GAAhB,CAGA,IAAI0D,EAAQ3+E,EAAOuiG,cAAcq8D,YAAY/gD,MAAM79G,GAAQo/J,QAAQnkF,GAAMmkF,QAAQnkF,EAAKsnB,eAClFviB,EAAQrB,EAAMs2B,iBACdjR,EAAKg1G,cACPh5H,EAAMv1E,QAAQswM,GACdp8H,EAAMl0E,QAAQswM,IAEZ/2G,EAAKq3G,WACP18H,EAAMl0E,SAAQ,SAAU8zF,GACtB68G,EAAc78G,EAAKyF,EACrB,GAVF,CARA,CAoBF,EACI83G,EAAuB,WACK,MAA1B94M,SAAS+4M,eAAwD,MAA/B/4M,SAAS+4M,cAAcC,MAC3Dh5M,SAAS+4M,cAAcC,MAE3B,EACIC,EAA+C,qBAArB7hJ,iBAC1B8hJ,EAAkD,qBAAnBC,eAG/BF,GACFrvL,EAAEwvL,eAAiB,IAAIhiJ,kBAAiB,SAAUiiJ,GAEhD,IAAK,IAAIx4M,EAAI,EAAGA,EAAIw4M,EAAMx6M,OAAQgC,IAAK,CACrC,IAAIy4M,EAAOD,EAAMx4M,GACb04M,EAASD,EAAKE,aAClB,GAAID,EACF,IAAK,IAAIzxM,EAAI,EAAGA,EAAIyxM,EAAO16M,OAAQiJ,IAAK,CACtC,IAAI2xM,EAAQF,EAAOzxM,GACnB,GAAI2xM,IAAU7vL,EAAE+d,UAAW,CACzB/d,EAAEy2D,UACF,KACF,CACF,CAEJ,CACF,IACIz2D,EAAE+d,UAAUm2D,YACdl0E,EAAEwvL,eAAe5hJ,QAAQ5tC,EAAE+d,UAAUm2D,WAAY,CAC/C47G,WAAW,KAIf9vL,EAAE+vL,gBAAgB/vL,EAAE+d,UAAW,kBAAkB,SAAU7kC,GAEzD8mB,EAAEy2D,SACJ,IAEF,IAAI9nB,EAAWykD,EAAkB,YAAW,WAC1CpzF,EAAEoC,GAAG0c,QACP,GAAG,KACCuwK,IACFrvL,EAAEgwL,cAAgB,IAAIxiJ,iBAAiBmB,GAEvC3uC,EAAEgwL,cAAcpiJ,QAAQ5tC,EAAE+d,UAAW,CACnC8vB,YAAY,KAKhB7tC,EAAE+vL,gBAAgBx7B,EAAiB,SAAU5lH,GAEzC2gJ,IACFtvL,EAAEiwL,eAAiB,IAAIV,eAAe5gJ,GAEtC3uC,EAAEiwL,eAAeriJ,QAAQ5tC,EAAE+d,YAE7B,IAAImjH,EAAY,SAAmBuoB,EAAQh0K,GACzC,MAAiB,MAAVg0K,EACLh0K,EAAGg0K,GACHA,EAASA,EAAOv1E,UAEpB,EACIg8G,EAAmB,WACrBlwL,EAAEmwL,sCACJ,EACAjvD,EAAUlhI,EAAE+d,WAAW,SAAU0rI,GAC/BzpJ,EAAE+vL,gBAAgBtmC,EAAQ,gBAAiBymC,GAC3ClwL,EAAE+vL,gBAAgBtmC,EAAQ,eAAgBymC,GAC1ClwL,EAAE+vL,gBAAgBtmC,EAAQ,SAAUymC,EACtC,IAGAlwL,EAAE+vL,gBAAgB/vL,EAAE+d,UAAW,eAAe,SAAU7kC,GACtDA,EAAEy2F,gBACJ,IACA,IA0aIygH,EAAcC,EAAgBC,EA1a9BC,EAAiB,WACnB,OAA0B,IAAnBvwL,EAAEwwL,UAAU,EACrB,EACIC,EAAmB,SAA0Bv3M,GAS/C,IAPA,IAAIw3M,EAAsB1wL,EAAE6yK,4BACxB9/K,EAAI29L,EAAoB,GACxB9+K,EAAI8+K,EAAoB,GACxBj1K,EAAQi1K,EAAoB,GAC5Bh1K,EAASg1K,EAAoB,GAC7B1zG,EAAY9jG,EAAE85F,QAAU95F,EAAE85F,QAAU,CAAC95F,GACrCy3M,GAAsB,EACjB15M,EAAI,EAAGA,EAAI+lG,EAAU/nG,OAAQgC,IAAK,CACzC,IAAI65C,EAAIksD,EAAU/lG,GAClB,GAAI8b,GAAK+9B,EAAE4hJ,SAAW5hJ,EAAE4hJ,SAAW3/K,EAAI0oB,GAAS7J,GAAKkf,EAAE6hJ,SAAW7hJ,EAAE6hJ,SAAW/gK,EAAI8J,EAAQ,CACzFi1K,GAAsB,EACtB,KACF,CACF,CACA,IAAKA,EACH,OAAO,EAET,IAAI5yK,EAAY/d,EAAE+d,UACdplC,EAASO,EAAEP,OACXi4M,EAAUj4M,EAAOu7F,WACjB28G,GAAoB,EACxB,MAAOD,EAAS,CACd,GAAIA,IAAY7yK,EAAW,CACzB8yK,GAAoB,EACpB,KACF,CACAD,EAAUA,EAAQ18G,UACpB,CACA,QAAK28G,CAKP,EAGA7wL,EAAE+vL,gBAAgB/vL,EAAE+d,UAAW,aAAa,SAA0B7kC,GACpE,GAAKu3M,EAAiBv3M,GAAtB,CAGAA,EAAEy2F,iBACFu/G,IACAlvL,EAAE8wL,UAAU1D,SAAU,EACtBptL,EAAE8wL,UAAUC,MAAQ73M,EAAE63M,MACtB,IAAI3uL,EAAKpC,EAAEoC,GACP4uL,EAAO,CAAC93M,EAAEw5L,QAASx5L,EAAEy5L,SACrBrxL,EAAM0e,EAAEixL,oBAAoBD,EAAK,GAAIA,EAAK,IAC1CzlH,EAASvrE,EAAEwwL,UACXU,EAAQlxL,EAAEwzK,oBAAoBlyL,EAAI,GAAIA,EAAI,IAAI,GAAM,GACpDsyL,EAAOsd,EAAM,GACbC,EAAkBnxL,EAAEoxL,SAASC,qBACjCrxL,EAAE8wL,UAAUQ,SAAWhwM,EACvB0e,EAAE8wL,UAAUS,UAAYP,EACxB,IAAIQ,EAAkB,WACpBxxL,EAAE8wL,UAAUW,kBAAmB,EAC/BvlJ,aAAalsC,EAAE8wL,UAAUY,gBACzB1xL,EAAE8wL,UAAUY,eAAiBt6L,YAAW,WACtC,IAAI4I,EAAE8wL,UAAUW,iBAAhB,CAGE,IAAI9/G,EAAM3xE,EAAE8wL,UAAUhD,KAClBn8G,EACFA,EAAI+K,KAAK,CACP5J,cAAe55F,EACfzB,KAAM,UACNstB,SAAU,CACRhS,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,MAIX8gB,EAAGs6E,KAAK,CACN5J,cAAe55F,EACfzB,KAAM,UACNstB,SAAU,CACRhS,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,KAIf,CACF,GAAG0e,EAAE2xL,gBACP,EAGA,GAAe,GAAXz4M,EAAE63M,MAAY,CAChB/wL,EAAE8wL,UAAUc,YAAa,EACzB,IAAIC,EAAS,CACX/+G,cAAe55F,EACfzB,KAAM,cACNstB,SAAU,CACRhS,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,KAGPsyL,GACFA,EAAKke,WACLle,EAAKl3F,KAAKm1G,GACV7xL,EAAE8wL,UAAUhD,KAAOla,GAEnBxxK,EAAGs6E,KAAKm1G,GAEV7xL,EAAE8wL,UAAUiB,UAAW,IAAIzqL,MAAOkiD,UAClCxpD,EAAE8wL,UAAUkB,YAAa,CAG3B,MAAO,GAAe,GAAX94M,EAAE63M,MAAY,CAQrB,GAPEnd,GACFA,EAAKke,WAMO,MAARle,GACE5zK,EAAEiyL,gBAAgBre,GAAO,CAC3B,IAAIse,EAAY,SAAmBz6M,GACjC,MAAO,CACLq7F,cAAe55F,EACfzB,KAAMA,EACNstB,SAAU,CACRhS,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,IAGb,EACI6wM,EAAc,SAAqBxgH,GACrCA,EAAI+K,KAAKw1G,EAAU,QACrB,EAEA,GADA7D,EAAcza,GACTA,EAAKxuE,WAMH,CACL+rF,EAAkBnxL,EAAEoxL,SAASC,qBAAuBjvL,EAAGixD,aACvD,IAAImuB,EAAgBp/E,EAAGhK,GAAE,SAAUu5E,GACjC,OAAOA,EAAIO,UAAYP,EAAIyzB,YAAcplG,EAAEiyL,gBAAgBtgH,EAC7D,IACAk9G,EAAertG,EAAe,CAC5BitG,UAAW0C,IAEbvd,EAAKl3F,KAAKw1G,EAAU,WACpB1wG,EAAc3jG,QAAQs0M,EACxB,MAfEhB,EAAkBnxL,EAAEoxL,SAASC,qBAAuBjvL,EAAGixD,aACvD07H,EAAcnb,EAAM,CAClB6a,UAAW0C,IAEbvd,EAAKl3F,KAAKw1G,EAAU,WAAWx1G,KAAKw1G,EAAU,SAYhDlyL,EAAEoyL,WAAW,QAAQ,GACrBpyL,EAAEoyL,WAAW,QAAQ,EACvB,CAEFpyL,EAAE8wL,UAAUhD,KAAOla,EACnB5zK,EAAE8wL,UAAU/C,MAAQmD,EACpBlxL,EAAE8wL,UAAUiB,UAAW,IAAIzqL,MAAOkiD,UAEpCgkI,EAAc5Z,EAAM,CAAC,YAAa,WAAY,cAAe16L,EAAG,CAC9D6Z,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,KAEG,MAARsyL,GACFroG,EAAO,GAAK,EACZvrE,EAAE9N,KAAKmgM,kBAAoB,CACzBt/L,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,IAET0e,EAAEoyL,WAAW,UAAU,GACvBpyL,EAAEiwE,UACO2jG,EAAKvuE,aACd95B,EAAO,GAAK,GAGdimH,GACF,CAGAjmH,EAAO,GAAKA,EAAO,GAAKjqF,EAAI,GAC5BiqF,EAAO,GAAKA,EAAO,GAAKjqF,EAAI,EAzI5B,CA0IF,IAAG,GACH0e,EAAE+vL,gBAAgBx7B,EAAiB,aAAa,SAA0Br7K,GAExE,IAAIk0M,EAAUptL,EAAE8wL,UAAU1D,QAC1B,GAAKA,GAAYqD,EAAiBv3M,GAAlC,CAGA,IAAIy2F,GAAiB,EACjBvtE,EAAKpC,EAAEoC,GACPiuD,EAAOjuD,EAAGiuD,OACV2gI,EAAO,CAAC93M,EAAEw5L,QAASx5L,EAAEy5L,SACrBrxL,EAAM0e,EAAEixL,oBAAoBD,EAAK,GAAIA,EAAK,IAC1CM,EAAWtxL,EAAE8wL,UAAUQ,SACvBC,EAAYvxL,EAAE8wL,UAAUS,UACxBhmH,EAASvrE,EAAEwwL,UACX5c,EAAO,KACN5zK,EAAE8wL,UAAUwB,cAAiBtyL,EAAE8wL,UAAUyB,UAAavyL,EAAE8wL,UAAU0B,YACrE5e,EAAO5zK,EAAEyyL,mBAAmBnxM,EAAI,GAAIA,EAAI,IAAI,GAAM,IAEpD,IAIIoxM,EAJA37J,EAAO/2B,EAAE8wL,UAAU/5J,KACnB+2J,EAAO9tL,EAAE8wL,UAAUhD,KACnBnxE,EAAO,CAACr7H,EAAI,GAAKiqF,EAAO,GAAIjqF,EAAI,GAAKiqF,EAAO,IAC5C4lH,EAAkBnxL,EAAEoxL,SAASC,qBAEjC,GAAIE,EAAW,CACb,IAAI34I,EAAKo4I,EAAK,GAAKO,EAAU,GACzBoB,EAAM/5I,EAAKA,EACXC,EAAKm4I,EAAK,GAAKO,EAAU,GACzBqB,EAAM/5I,EAAKA,EACXg6I,EAAQF,EAAMC,EAClB5yL,EAAE8wL,UAAU4B,oBAAsBA,EAAsBG,GAAS7yL,EAAE8yL,oBACrE,CACA,IAAIC,EAAiBtF,EAAiBv0M,GAClCw5M,IACF1yL,EAAE8wL,UAAUW,kBAAmB,GAEjC,IAAIuB,EAAkB,WACpB,IAAIC,EAAYjzL,EAAE8wL,UAAUmC,UAAYjzL,EAAE8wL,UAAUmC,WAAa,GACxC,IAArBA,EAAUh+M,QACZg+M,EAAU/7M,KAAKylI,EAAK,IACpBs2E,EAAU/7M,KAAKylI,EAAK,MAEpBs2E,EAAU,IAAMt2E,EAAK,GACrBs2E,EAAU,IAAMt2E,EAAK,GAEzB,EACAhtC,GAAiB,EACjB69G,EAAc5Z,EAAM,CAAC,YAAa,aAAc,WAAY16L,EAAG,CAC7D6Z,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,KAET,IAAI4xM,EAAgB,WAClBlzL,EAAE9N,KAAKmgM,uBAAoB18M,EACtBqqB,EAAE8wL,UAAU0B,WACfpwL,EAAGs6E,KAAK,CACN5J,cAAe55F,EACfzB,KAAM,WACNstB,SAAU,CACRhS,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,MAIbiqF,EAAO,GAAK,EACZvrE,EAAE8wL,UAAU0B,WAAY,EACxBxyL,EAAEoyL,WAAW,UAAU,GACvBpyL,EAAEiwE,QACJ,EAGA,GAA0B,IAAtBjwE,EAAE8wL,UAAUC,OAEd,GAAI2B,EAAqB,CACvB,IAAIb,EAAS,CACX/+G,cAAe55F,EACfzB,KAAM,UACNstB,SAAU,CACRhS,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,KAGPwsM,EACFA,EAAKpxG,KAAKm1G,GAEVzvL,EAAGs6E,KAAKm1G,GAEV7xL,EAAE8wL,UAAUkB,YAAa,EACpBhyL,EAAE8wL,UAAUqC,SAAWvf,IAAS5zK,EAAE8wL,UAAUqC,UAC3CnzL,EAAE8wL,UAAUqC,SACdnzL,EAAE8wL,UAAUqC,QAAQz2G,KAAK,CACvB5J,cAAe55F,EACfzB,KAAM,aACNstB,SAAU,CACRhS,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,MAIb0e,EAAE8wL,UAAUqC,QAAUvf,EAClBA,GACFA,EAAKl3F,KAAK,CACR5J,cAAe55F,EACfzB,KAAM,cACNstB,SAAU,CACRhS,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,MAKjB,OAGK,GAAI0e,EAAE8wL,UAAUyB,SAAU,CAE/B,GADA5iH,GAAiB,EACbvtE,EAAGg9J,kBAAoBh9J,EAAGkvE,qBAAsB,CAClD,IAAI8hH,EACJ,GAAIpzL,EAAE8wL,UAAUuC,eAAgB,CAC9B,IAAIC,EAAQtzL,EAAE8wL,UAAUQ,SACxB8B,EAAS,CACPrgM,GAAIzR,EAAI,GAAKgyM,EAAM,IAAMjjI,EACzBz+C,GAAItwB,EAAI,GAAKgyM,EAAM,IAAMjjI,GAE3BrwD,EAAE8wL,UAAUuC,gBAAiB,CAC/B,MACED,EAAS,CACPrgM,EAAG4pH,EAAK,GAAKtsD,EACbz+C,EAAG+qG,EAAK,GAAKtsD,GAGjBjuD,EAAGqwH,MAAM2gE,GACThxL,EAAGs6E,KAAK,WACR18E,EAAE8wL,UAAUyC,SAAU,CACxB,CAGAjyM,EAAM0e,EAAEixL,oBAAoB/3M,EAAEw5L,QAASx5L,EAAEy5L,QAG3C,MAAO,GAAiB,GAAbpnG,EAAO,IAAoB,MAARuiH,IAAgBA,EAAKzoF,WAmB5C,CAmBL,GAlBIyoF,GAAQA,EAAKzoF,YAAcyoF,EAAKvhJ,UAClCuhJ,EAAK0F,aAED1F,GAASA,EAAKj2G,WAAc+7F,GAAQ78I,IACpCA,GACFy2J,EAAcz2J,EAAM,CAAC,WAAY,cAAe79C,EAAG,CACjD6Z,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,KAGPsyL,GACF4Z,EAAc5Z,EAAM,CAAC,YAAa,eAAgB16L,EAAG,CACnD6Z,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,KAGX0e,EAAE8wL,UAAU/5J,KAAO68I,GAEjBka,EACF,GAAI4E,GAGF,GAAItwL,EAAGovE,uBAAyBuhH,EAE1BjF,GAAQA,EAAKj2G,YACfm3G,EAAoBmC,GACpBrD,EAAKpxG,KAAK,UACVy0G,EAAgBz0G,KAAK,QACjB18E,EAAEoxL,SAASqC,UACb3F,EAAKpxG,KAAK,cACVy0G,EAAgBz0G,KAAK,cAGzBw2G,SACK,GAAIpF,GAAQA,EAAKj2G,WAAa73E,EAAEstL,gBAAgBQ,GAAO,CAE5D,IAAI4F,GAAmB1zL,EAAEoxL,SAASqC,QAC9BC,GACF1zL,EAAEoyL,WAAW,QAAQ,GAEvBpyL,EAAEoxL,SAASqC,SAAU,EAGhBzzL,EAAE8wL,UAAUwB,cACfzD,EAAesC,EAAiB,CAC9B/E,aAAa,IAGjB,IAAIuH,EAAa,CACf5gM,EAAG,EACH6e,EAAG,GAEL,GAAIwjF,EAASunB,EAAK,KAAOvnB,EAASunB,EAAK,MACrCg3E,EAAW5gM,GAAK4pH,EAAK,GACrBg3E,EAAW/hL,GAAK+qG,EAAK,GACjB+2E,GAAiB,CACnB,IAAIT,EAAYjzL,EAAE8wL,UAAUmC,UACxBA,GAAa79F,EAAS69F,EAAU,KAAO79F,EAAS69F,EAAU,MAC5DU,EAAW5gM,GAAKkgM,EAAU,GAC1BU,EAAW/hL,GAAKqhL,EAAU,GAE9B,CAEFjzL,EAAE8wL,UAAUwB,cAAe,EAC3BnB,EAAgBruD,YAAY6wD,GAAYj3G,KAAK,iBAC7C18E,EAAEoyL,WAAW,QAAQ,GACrBpyL,EAAEiwE,QACJ,OAGA+iH,IAKJrjH,GAAiB,CACnB,MA/FE,GAAI+iH,EAAqB,CACvB,GAAK1yL,EAAE8wL,UAAUyB,WAAYnwL,EAAGovE,wBAA0BuhH,GAAmB3wL,EAAGg9J,kBAAqBh9J,EAAGkvE,sBAEjG,IAAKtxE,EAAE8wL,UAAU0B,WAAapwL,EAAGg9J,kBAAoBh9J,EAAGkvE,qBAAsB,CACnF,IAAI08G,EAAmBH,EAAwBC,EAAM9tL,EAAE8wL,UAAU/C,OAC7DC,IACFhuL,EAAE8wL,UAAUyB,UAAW,EACvBvyL,EAAE8wL,UAAUuC,gBAAiB,EAC7B9nH,EAAO,GAAK,EACZvrE,EAAE9N,KAAKmgM,kBAAoB9gF,GAAY+/E,GACvCtxL,EAAEoyL,WAAW,UAAU,GACvBpyL,EAAEiwE,SAEN,OAXEijH,IAYEpF,GAAQA,EAAKzoF,YAAcyoF,EAAKvhJ,UAClCuhJ,EAAK0F,YAET,CAiFF,OAFAjoH,EAAO,GAAKjqF,EAAI,GAChBiqF,EAAO,GAAKjqF,EAAI,GACZquF,GACEz2F,EAAEi1E,iBAAiBj1E,EAAEi1E,kBACrBj1E,EAAEy2F,gBAAgBz2F,EAAEy2F,kBACjB,QAHT,CAxOA,CA6OF,IAAG,GAEH3vE,EAAE+vL,gBAAgBx7B,EAAiB,WAAW,SAAwBr7K,GAEpE,IAAIk0M,EAAUptL,EAAE8wL,UAAU1D,QAC1B,GAAKA,EAAL,CAGAptL,EAAE8wL,UAAU1D,SAAU,EACtB,IAAIhrL,EAAKpC,EAAEoC,GACP9gB,EAAM0e,EAAEixL,oBAAoB/3M,EAAEw5L,QAASx5L,EAAEy5L,SACzCpnG,EAASvrE,EAAEwwL,UACX5c,EAAO5zK,EAAEyyL,mBAAmBnxM,EAAI,GAAIA,EAAI,IAAI,GAAM,GAClD6vM,EAAkBnxL,EAAEoxL,SAASC,qBAC7BvD,EAAO9tL,EAAE8wL,UAAUhD,KACnBiF,EAAiBtF,EAAiBv0M,GAWtC,GAVI8mB,EAAE9N,KAAKmgM,oBACTryL,EAAEoyL,WAAW,UAAU,GACvBpyL,EAAEiwE,UAEJjwE,EAAE8wL,UAAUW,kBAAmB,EAC/BzxL,EAAE9N,KAAKmgM,uBAAoB18M,EAEvBm4M,GACFA,EAAK0F,aAEmB,IAAtBxzL,EAAE8wL,UAAUC,MAAa,CAC3B,IAAIc,EAAS,CACX/+G,cAAe55F,EACfzB,KAAM,YACNstB,SAAU,CACRhS,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,KAQX,GALIwsM,EACFA,EAAKpxG,KAAKm1G,GAEVzvL,EAAGs6E,KAAKm1G,IAEL7xL,EAAE8wL,UAAUkB,WAAY,CAC3B,IAAI4B,EAAS,CACX9gH,cAAe55F,EACfzB,KAAM,SACNstB,SAAU,CACRhS,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,KAGPwsM,EACFA,EAAKpxG,KAAKk3G,GAEVxxL,EAAGs6E,KAAKk3G,EAEZ,CACA5zL,EAAE8wL,UAAUkB,YAAa,EACzBhyL,EAAE8wL,UAAUC,MAAQ,IACtB,MAAO,GAA0B,IAAtB/wL,EAAE8wL,UAAUC,MAAa,CAqElC,GApEAvD,EAAc5Z,EAAM,CAAC,UAAW,SAAU,YAAa16L,EAAG,CACxD6Z,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,KAEJ0e,EAAEoxL,SAASqC,SAEfzzL,EAAE8wL,UAAUyC,SAEZvzL,EAAE8wL,UAAU0B,WAEZxyL,EAAE8wL,UAAU4B,sBAEXlF,EAAcM,EAAM,CAAC,QAAS,MAAO,UAAW50M,EAAG,CACjD6Z,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,KAET+uM,GAAiB,EACbn3M,EAAEgrB,UAAYosL,GAAsBluL,EAAGu+J,0BACzCyvB,GAAgBlkJ,aAAakkJ,GAC7BC,GAAiB,EACjBC,EAAqB,KACrB9C,EAAcM,EAAM,CAAC,WAAY,SAAU,aAAc50M,EAAG,CAC1D6Z,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,OAGT8uM,EAAeh5L,YAAW,WACpBi5L,GACJ7C,EAAcM,EAAM,CAAC,WAAY,SAAU,aAAc50M,EAAG,CAC1D6Z,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,IAEX,GAAG8gB,EAAGu+J,0BACN2vB,EAAqBp3M,EAAEgrB,YAKf,MAAR4pL,GACA9tL,EAAEoxL,SAASqC,SACXzzL,EAAE8wL,UAAU0B,WACZxyL,EAAE8wL,UAAUyC,SACZ9F,EAAiBv0M,KACnBkpB,EAAGhK,EAAEm1L,GAAYnlG,SAAS,CAAC,gBACvB+oG,EAAgBl8M,OAAS,GAC3B+qB,EAAEoyL,WAAW,QAAQ,GAEvBpyL,EAAEoxL,SAASC,qBAAuBF,EAAkB/uL,EAAGixD,cAIrDugH,GAAQka,GAAS9tL,EAAEoxL,SAASqC,SAAYzzL,EAAE8wL,UAAU0B,WAC1C,MAAR5e,GAAgBA,EAAK9/G,SAAS4uB,aAC5B1iF,EAAE8wL,UAAUyB,WAA4C,aAAvBnwL,EAAG88J,iBAAkC6zB,EACpEnf,EAAKxuE,WACPwuE,EAAKxrF,SAAS,CAAC,gBAEfwrF,EAAKroG,OAAO,CAAC,cAGVwnH,IACH3wL,EAAGhK,EAAEm1L,GAAY/6C,QAAQohC,GAAMxrF,SAAS,CAAC,gBACzCwrF,EAAKroG,OAAO,CAAC,gBAGjBvrE,EAAEoyL,WAAW,QAAQ,IAGrBpyL,EAAE8wL,UAAU0B,UAAW,CACzB,IAAI1c,EAAM1zK,EAAGixD,WAAWrzD,EAAE6zL,YAAYtoH,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,KAC9EvrE,EAAEoyL,WAAW,UAAU,GACnBtc,EAAI7gM,OAAS,GACf+qB,EAAEoyL,WAAW,QAAQ,GAEvBhwL,EAAGs6E,KAAK,CACNjlG,KAAM,SACNq7F,cAAe55F,EACf6rB,SAAU,CACRhS,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,MAGX,IAAIwyM,EAAqB,SAA4BniH,GACnD,OAAOA,EAAI+Q,eAAiB/Q,EAAIyzB,UAClC,EAC2B,aAAvBhjG,EAAG88J,iBAGA6zB,GACH3wL,EAAGhK,EAAEm1L,GAAY/6C,QAAQsjC,GAAK1tF,WAHhC0tF,EAAIp5F,KAAK,OAAO2jD,UAAUyzD,GAAoBvoH,SAASmR,KAAK,aAS9D18E,EAAEiwE,QACJ,CASA,GANIjwE,EAAE8wL,UAAUyB,WACdvyL,EAAE8wL,UAAUyB,UAAW,EACvBvyL,EAAEoyL,WAAW,UAAU,GACvBpyL,EAAEoyL,WAAW,QAAQ,GACrBpyL,EAAEiwE,WAEC1E,EAAO,GAAI,CACdvrE,EAAEoyL,WAAW,QAAQ,GACrBpyL,EAAEoyL,WAAW,QAAQ,GACrB,IAAI2B,EAAiBjG,GAAQA,EAAKj2G,UAClCm3G,EAAoBmC,GAChB4C,IACFjG,EAAKpxG,KAAK,UACVy0G,EAAgBz0G,KAAK,QACjB18E,EAAEoxL,SAASqC,UACb3F,EAAKpxG,KAAK,cACVy0G,EAAgBz0G,KAAK,aAG3B,CACF,CAEAnR,EAAO,GAAK,EACZvrE,EAAE8wL,UAAUhD,KAAO,KACnB9tL,EAAE8wL,UAAUc,YAAa,EACzB5xL,EAAE8wL,UAAUwB,cAAe,EAC3BtyL,EAAE8wL,UAAU0B,WAAY,EACxBxyL,EAAE8wL,UAAU4B,qBAAsB,EAClC1yL,EAAEoxL,SAASqC,SAAU,EACrBzzL,EAAE8wL,UAAUyC,SAAU,EACtBvzL,EAAE8wL,UAAUmC,UAAY,GACxBjzL,EAAE8wL,UAAUQ,SAAW,KACvBtxL,EAAE8wL,UAAUS,UAAY,IAtLxB,CAuLF,IAAG,GACH,IA8GIyC,EAAMC,EAAMC,EAAMC,EAClBC,EAAWC,EACXC,EAASC,EACTzhB,EAAYC,EACZyhB,EAAgBC,EAChBC,EAnHAC,EAAe,SAAsBz7M,GACvC,IAAI8mB,EAAE40L,cAAN,CAIA,IAAIxyL,EAAKpC,EAAEoC,GACPiuD,EAAOjuD,EAAGiuD,OACV0G,EAAM30D,EAAG20D,MACTz1E,EAAM0e,EAAEixL,oBAAoB/3M,EAAEw5L,QAASx5L,EAAEy5L,SACzC5sE,EAAO,CAACzkH,EAAI,GAAK+uE,EAAO0G,EAAIhkE,EAAGzR,EAAI,GAAK+uE,EAAO0G,EAAInlD,GACvD,GAAI5R,EAAE8wL,UAAUwB,cAAgBtyL,EAAE8wL,UAAUyB,UAAYvyL,EAAE8wL,UAAUc,YAAcrB,IAEhFr3M,EAAEy2F,sBAGJ,GAAIvtE,EAAGg9J,kBAAoBh9J,EAAGkvE,sBAAwBlvE,EAAGi9J,kBAAoBj9J,EAAG8uE,qBAAsB,CASpG,IAAI2O,EARJ3mG,EAAEy2F,iBACF3vE,EAAE9N,KAAK2iM,cAAe,EACtB3oJ,aAAalsC,EAAE9N,KAAK4iM,cACpB90L,EAAE9N,KAAK4iM,aAAe19L,YAAW,WAC/B4I,EAAE9N,KAAK2iM,cAAe,EACtB70L,EAAEoyL,WAAW,QAAQ,GACrBpyL,EAAEiwE,QACJ,GAAG,KAGD4P,EADc,MAAZ3mG,EAAE67M,OACG77M,EAAE67M,QAAU,IACO,MAAjB77M,EAAE87M,YACJ97M,EAAE87M,YAAc,IAEhB97M,EAAE+7M,WAAa,IAExBp1G,GAAc7/E,EAAE6oJ,iBAChB,IAAIqsC,EAAgC,IAAhBh8M,EAAEi8M,UAClBD,IAEFr1G,GAAQ,IAEV,IAAIu1G,EAAUhzL,EAAGiuD,OAASj3E,KAAK4iB,IAAI,GAAI6jF,GACxB,kBAAX3mG,EAAEzB,OACJ29M,EAAUp1L,EAAEq1L,iBAAmBn8M,EAAEowB,OAEnClH,EAAGiuD,KAAK,CACNwvG,MAAOu1B,EACP/iH,iBAAkB,CAChBt/E,EAAGgzG,EAAK,GACRn0F,EAAGm0F,EAAK,MAGZ3jG,EAAGs6E,KAAgB,kBAAXxjG,EAAEzB,KAA2B,YAAc,aACrD,CA/CA,CAgDF,EAIAuoB,EAAE+vL,gBAAgB/vL,EAAE+d,UAAW,QAAS42K,GAAc,GAOtD30L,EAAE+vL,gBAAgBx7B,EAAiB,UAAU,SAAuBr7K,GAElE8mB,EAAE40L,eAAgB,EAClB1oJ,aAAalsC,EAAEs1L,sBACft1L,EAAEs1L,qBAAuBl+L,YAAW,WAClC4I,EAAE40L,eAAgB,CACpB,GAAG,IACL,IAAG,GAGH50L,EAAE+vL,gBAAgB/vL,EAAE+d,UAAW,gBAAgB,SAA6B7kC,GAC1E8mB,EAAEq1L,iBAAmBr1L,EAAEoC,GAAGiuD,OACrBrwD,EAAEu1L,iBAELr8M,EAAEy2F,gBAEN,IAAG,GACH3vE,EAAE+vL,gBAAgB/vL,EAAE+d,UAAW,iBAAiB,SAAU7kC,GACnD8mB,EAAEu1L,iBAELZ,EAAaz7M,EAEjB,IAAG,GAIH8mB,EAAE+vL,gBAAgB/vL,EAAE+d,UAAW,YAAY,SAAyB7kC,GAClE,IAAIoI,EAAM0e,EAAEixL,oBAAoB/3M,EAAEw5L,QAASx5L,EAAEy5L,SAC7C3yK,EAAEoC,GAAGs6E,KAAK,CACR5J,cAAe55F,EACfzB,KAAM,WACNstB,SAAU,CACRhS,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,KAGb,IAAG,GACH0e,EAAE+vL,gBAAgB/vL,EAAE+d,UAAW,aAAa,SAA0B7kC,GACpE,IAAIoI,EAAM0e,EAAEixL,oBAAoB/3M,EAAEw5L,QAASx5L,EAAEy5L,SAC7C3yK,EAAEoC,GAAGs6E,KAAK,CACR5J,cAAe55F,EACfzB,KAAM,YACNstB,SAAU,CACRhS,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,KAGb,IAAG,GAOH,IAMIk0M,EA4LAC,EA8YAC,EASAC,EAAiBC,EAAgBC,EAAcC,EAzlB/C71L,EAAW,SAAkB8c,EAAIC,EAAIE,EAAIC,GAC3C,OAAO/jC,KAAK2iB,MAAMmhB,EAAKH,IAAOG,EAAKH,IAAOI,EAAKH,IAAOG,EAAKH,GAC7D,EACIkjD,EAAa,SAAoBnjD,EAAIC,EAAIE,EAAIC,GAC/C,OAAQD,EAAKH,IAAOG,EAAKH,IAAOI,EAAKH,IAAOG,EAAKH,EACnD,EAgzBA,GA9yBAhd,EAAE+vL,gBAAgB/vL,EAAE+d,UAAW,aAAcy3K,EAAoB,SAA2Bt8M,GAE1F,GADA8mB,EAAEu1L,iBAAkB,EACf9E,EAAiBv3M,GAAtB,CAGAg2M,IACAlvL,EAAE+1L,UAAU3I,SAAU,EACtBptL,EAAE9N,KAAKmgM,uBAAoB18M,EAC3B,IAAIysB,EAAKpC,EAAEoC,GACPxL,EAAMoJ,EAAE+1L,UAAUn/L,IAClBo/L,EAAUh2L,EAAE+1L,UAAUC,QAC1B,GAAI98M,EAAE85F,QAAQ,GAAI,CAChB,IAAI1xF,EAAM0e,EAAEixL,oBAAoB/3M,EAAE85F,QAAQ,GAAG0/F,QAASx5L,EAAE85F,QAAQ,GAAG2/F,SACnE/7K,EAAI,GAAKtV,EAAI,GACbsV,EAAI,GAAKtV,EAAI,EACf,CACA,GAAIpI,EAAE85F,QAAQ,GAAI,CACZ1xF,EAAM0e,EAAEixL,oBAAoB/3M,EAAE85F,QAAQ,GAAG0/F,QAASx5L,EAAE85F,QAAQ,GAAG2/F,SACnE/7K,EAAI,GAAKtV,EAAI,GACbsV,EAAI,GAAKtV,EAAI,EACf,CACA,GAAIpI,EAAE85F,QAAQ,GAAI,CACZ1xF,EAAM0e,EAAEixL,oBAAoB/3M,EAAE85F,QAAQ,GAAG0/F,QAASx5L,EAAE85F,QAAQ,GAAG2/F,SACnE/7K,EAAI,GAAKtV,EAAI,GACbsV,EAAI,GAAKtV,EAAI,EACf,CAGA,GAAIpI,EAAE85F,QAAQ,GAAI,CAChBhzE,EAAE+1L,UAAUE,kBAAmB,EAC/BjH,EAAoBhvL,EAAEoxL,SAAS8E,eAC/B,IAAItjB,EAAU5yK,EAAE6yK,4BAChBC,EAAaF,EAAQ,GACrBG,EAAYH,EAAQ,GACpB4hB,EAAiB5hB,EAAQ,GACzB6hB,EAAkB7hB,EAAQ,GAC1BohB,EAAO96M,EAAE85F,QAAQ,GAAG0/F,QAAUI,EAC9BmhB,EAAO/6M,EAAE85F,QAAQ,GAAG2/F,QAAUI,EAC9BmhB,EAAOh7M,EAAE85F,QAAQ,GAAG0/F,QAAUI,EAC9BqhB,EAAOj7M,EAAE85F,QAAQ,GAAG2/F,QAAUI,EAC9B2hB,EAAwB,GAAKV,GAAQA,GAAQQ,GAAkB,GAAKN,GAAQA,GAAQM,GAAkB,GAAKP,GAAQA,GAAQQ,GAAmB,GAAKN,GAAQA,GAAQM,EACnK,IAAI19H,EAAM30D,EAAG20D,MACT1G,EAAOjuD,EAAGiuD,OACd+jI,EAAYn0L,EAAS+zL,EAAMC,EAAMC,EAAMC,GACvCE,EAAcn0H,EAAW8zH,EAAMC,EAAMC,EAAMC,GAC3CG,EAAU,EAAEN,EAAOE,GAAQ,GAAID,EAAOE,GAAQ,GAC9CI,EAAe,EAAED,EAAQ,GAAKv9H,EAAIhkE,GAAKs9D,GAAOikI,EAAQ,GAAKv9H,EAAInlD,GAAKy+C,GAGpE,IAAI8lI,EAAmB,IACnBC,EAAqBD,EAAmBA,EAC5C,GAAI9B,EAAc+B,IAAuBl9M,EAAE85F,QAAQ,GAAI,CACrD,IAAIqjH,EAAQr2L,EAAEyyL,mBAAmB77L,EAAI,GAAIA,EAAI,IAAI,GAAM,GACnD0/L,EAAQt2L,EAAEyyL,mBAAmB77L,EAAI,GAAIA,EAAI,IAAI,GAAM,GAsCvD,OArCIy/L,GAASA,EAAMnkH,UACjBmkH,EAAMvE,WAAWp1G,KAAK,CACpB5J,cAAe55F,EACfzB,KAAM,cACNstB,SAAU,CACRhS,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,MAGXoJ,EAAE+1L,UAAUpkK,MAAQ0kK,GACXC,GAASA,EAAMpkH,UACxBokH,EAAMxE,WAAWp1G,KAAK,CACpB5J,cAAe55F,EACfzB,KAAM,cACNstB,SAAU,CACRhS,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,MAGXoJ,EAAE+1L,UAAUpkK,MAAQ2kK,GAEpBl0L,EAAGs6E,KAAK,CACN5J,cAAe55F,EACfzB,KAAM,cACNstB,SAAU,CACRhS,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,MAIToJ,EAAE+1L,UAAUpkK,QACd3xB,EAAE+1L,UAAUpkK,MAAMmiC,SAAS+jB,SAAU,GAEvC73E,EAAE+1L,UAAU3qC,KAAM,EAClBprJ,EAAE+1L,UAAU/D,YAAa,EACzBhyL,EAAE9N,KAAKmgM,uBAAoB18M,OAC3BqqB,EAAEiwE,QAEJ,CACF,CACA,GAAI/2F,EAAE85F,QAAQ,GAIR5wE,EAAGovE,uBACLt4F,EAAEy2F,sBAEC,GAAIz2F,EAAE85F,QAAQ,SAAW,GAAI95F,EAAE85F,QAAQ,GAAI,CAChD,IAAIk+G,EAAQlxL,EAAEwzK,oBAAoB58K,EAAI,GAAIA,EAAI,IAAI,GAAM,GACpDg9K,EAAOsd,EAAM,GACjB,GAAY,MAARtd,IACFA,EAAKke,WACL9xL,EAAE+1L,UAAUpkK,MAAQiiJ,EACpB5zK,EAAE+1L,UAAUQ,OAASrF,EACjBlxL,EAAEiyL,gBAAgBre,IAAO,CAC3B,IAAI4iB,EAAcx2L,EAAEoxL,SAAS8E,cAAgB9zL,EAAGixD,aAC5CmuB,EAAgB,KACpBxhF,EAAEoyL,WAAW,QAAQ,GACrBpyL,EAAEoyL,WAAW,QAAQ,GACjBxe,EAAKxuE,YAGP5jB,EAAgBp/E,EAAGhK,GAAE,SAAUu5E,GAC7B,OAAOA,EAAIyzB,YAAcplG,EAAEiyL,gBAAgBtgH,EAC7C,IACAk9G,EAAertG,EAAe,CAC5BitG,UAAW+H,KAGbzH,EAAcnb,EAAM,CAClB6a,UAAW+H,IAGfnI,EAAcza,GACd,IAAIse,EAAY,SAAmBz6M,GACjC,MAAO,CACLq7F,cAAe55F,EACfzB,KAAMA,EACNstB,SAAU,CACRhS,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,IAGb,EACAg9K,EAAKl3F,KAAKw1G,EAAU,WAChB1wG,EACFA,EAAc3jG,SAAQ,SAAUmV,GAC9BA,EAAE0pF,KAAKw1G,EAAU,QACnB,IAEAte,EAAKl3F,KAAKw1G,EAAU,QAExB,CAEF1E,EAAc5Z,EAAM,CAAC,aAAc,WAAY,cAAe16L,EAAG,CAC/D6Z,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,KAEG,MAARg9K,IACF5zK,EAAE9N,KAAKmgM,kBAAoB,CACzBt/L,EAAGzR,EAAI,GACPswB,EAAGtwB,EAAI,IAET0e,EAAEoyL,WAAW,UAAU,GACvBpyL,EAAEiwE,UAMJjwE,EAAE+1L,UAAUE,kBAAmB,EAC/Bj2L,EAAE+1L,UAAUU,sBAAwB,IAAInvL,KACxC4kC,aAAalsC,EAAE+1L,UAAUrE,gBACzB1xL,EAAE+1L,UAAUrE,eAAiBt6L,YAAW,YACD,IAAjC4I,EAAE+1L,UAAUE,kBAA+Bj2L,EAAE02L,UAC7C12L,EAAE+1L,UAAUvD,WAEdhF,EAAcxtL,EAAE+1L,UAAUpkK,MAAO,CAAC,WAAYz4C,EAAG,CAC/C6Z,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,IAGb,GAAGoJ,EAAE2xL,gBACP,CACA,GAAIz4M,EAAE85F,QAAQ/9F,QAAU,EAAG,CAEzB,IADA,IAAI0hN,EAAO32L,EAAE+1L,UAAUnlE,cAAgB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MAC7D35I,EAAI,EAAGA,EAAI2f,EAAI3hB,OAAQgC,IAC9B0/M,EAAK1/M,GAAK++M,EAAQ/+M,GAAK2f,EAAI3f,GAE7B,IAAI2/M,EAAS19M,EAAE85F,QAAQ,GACvBhzE,EAAE+1L,UAAUc,eAAiB,CAACD,EAAOlkB,QAASkkB,EAAOjkB,QACvD,CArLA,CAsLF,GAAG,GAEH3yK,EAAE+vL,gBAAgB52M,OAAQ,YAAas8M,EAAmB,SAA0Bv8M,GAElF,IAAIk0M,EAAUptL,EAAE+1L,UAAU3I,QAC1B,GAAKA,GAAYqD,EAAiBv3M,GAAlC,CAGA,IAAIqyF,EAASvrE,EAAEwwL,UACXpuL,EAAKpC,EAAEoC,GACPxL,EAAMoJ,EAAE+1L,UAAUn/L,IAClBo/L,EAAUh2L,EAAE+1L,UAAUC,QACtB3lI,EAAOjuD,EAAGiuD,OACd,GAAIn3E,EAAE85F,QAAQ,GAAI,CAChB,IAAI1xF,EAAM0e,EAAEixL,oBAAoB/3M,EAAE85F,QAAQ,GAAG0/F,QAASx5L,EAAE85F,QAAQ,GAAG2/F,SACnE/7K,EAAI,GAAKtV,EAAI,GACbsV,EAAI,GAAKtV,EAAI,EACf,CACA,GAAIpI,EAAE85F,QAAQ,GAAI,CACZ1xF,EAAM0e,EAAEixL,oBAAoB/3M,EAAE85F,QAAQ,GAAG0/F,QAASx5L,EAAE85F,QAAQ,GAAG2/F,SACnE/7K,EAAI,GAAKtV,EAAI,GACbsV,EAAI,GAAKtV,EAAI,EACf,CACA,GAAIpI,EAAE85F,QAAQ,GAAI,CACZ1xF,EAAM0e,EAAEixL,oBAAoB/3M,EAAE85F,QAAQ,GAAG0/F,QAASx5L,EAAE85F,QAAQ,GAAG2/F,SACnE/7K,EAAI,GAAKtV,EAAI,GACbsV,EAAI,GAAKtV,EAAI,EACf,CACA,IACIoxM,EADAoE,EAAY92L,EAAE+1L,UAAUc,eAE5B,GAAIzJ,GAAWl0M,EAAE85F,QAAQ,IAAM8jH,EAAW,CAExC,IADA,IAAIn6E,EAAO,GACFz+H,EAAI,EAAGA,EAAI0Y,EAAI3hB,OAAQiJ,IAC9By+H,EAAKz+H,GAAK0Y,EAAI1Y,GAAK83M,EAAQ93M,GAE7B,IAAI06D,EAAK1/D,EAAE85F,QAAQ,GAAG0/F,QAAUokB,EAAU,GACtCnE,EAAM/5I,EAAKA,EACXC,EAAK3/D,EAAE85F,QAAQ,GAAG2/F,QAAUmkB,EAAU,GACtClE,EAAM/5I,EAAKA,EACXg6I,EAAQF,EAAMC,EAClBF,EAAsBG,GAAS7yL,EAAE+2L,kBACnC,CAGA,GAAI3J,GAAWptL,EAAE+1L,UAAU3qC,IAAK,CAC9BlyK,EAAEy2F,iBACF,IAAIqnH,EAAO99M,EAAE85F,QAAQ,GAAG0/F,QAAUI,EAChCmkB,EAAO/9M,EAAE85F,QAAQ,GAAG2/F,QAAUI,EAC5BmkB,EAAOh+M,EAAE85F,QAAQ,GAAG0/F,QAAUI,EAChCqkB,EAAOj+M,EAAE85F,QAAQ,GAAG2/F,QAAUI,EAE5BqkB,EAAcl3H,EAAW82H,EAAMC,EAAMC,EAAMC,GAC3CE,EAAWD,EAAc/C,EACzB1mB,EAAgB,IAChB2pB,EAAkB3pB,EAAgBA,EAClC4pB,EAAkB,IAClBC,EAAoBD,EAAkBA,EAG1C,GAAIF,GAAYG,GAAqBJ,GAAeE,EAAiB,CACnEt3L,EAAE+1L,UAAU3qC,KAAM,EAClBprJ,EAAE9N,KAAKmgM,uBAAoB18M,EAC3BqqB,EAAEoyL,WAAW,UAAU,GACvB,IAAIP,EAAS,CACX/+G,cAAe55F,EACfzB,KAAM,YACNstB,SAAU,CACRhS,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,KAGPoJ,EAAE+1L,UAAUpkK,OACd3xB,EAAE+1L,UAAUpkK,MAAM6hK,aAAa92G,KAAKm1G,GACpC7xL,EAAE+1L,UAAUpkK,MAAQ,MAEpBvvB,EAAGs6E,KAAKm1G,EAEZ,CACF,CAGA,GAAIzE,GAAWptL,EAAE+1L,UAAU3qC,IAAK,CAC1BymC,EAAS,CACX/+G,cAAe55F,EACfzB,KAAM,UACNstB,SAAU,CACRhS,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,KAGXoJ,EAAE9N,KAAKmgM,uBAAoB18M,EAC3BqqB,EAAEoyL,WAAW,UAAU,GACnBpyL,EAAE+1L,UAAUpkK,MACd3xB,EAAE+1L,UAAUpkK,MAAM+qD,KAAKm1G,GAEvBzvL,EAAGs6E,KAAKm1G,GAEN7xL,EAAE+1L,UAAUpkK,QACd3xB,EAAE+1L,UAAUpkK,MAAMmiC,SAAS+jB,SAAU,GAEvC73E,EAAE+1L,UAAU/D,YAAa,EACzB,IAAIpe,EAAO5zK,EAAEyyL,mBAAmB77L,EAAI,GAAIA,EAAI,IAAI,GAAM,GACjDoJ,EAAE+1L,UAAU5C,SAAWvf,IAAS5zK,EAAE+1L,UAAU5C,UAC3CnzL,EAAE+1L,UAAU5C,SACdnzL,EAAE+1L,UAAU5C,QAAQz2G,KAAK,CACvB5J,cAAe55F,EACfzB,KAAM,aACNstB,SAAU,CACRhS,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,MAIboJ,EAAE+1L,UAAU5C,QAAUvf,EAClBA,GACFA,EAAKl3F,KAAK,CACR5J,cAAe55F,EACfzB,KAAM,cACNstB,SAAU,CACRhS,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,MAOjB,MAAO,GAAIw2L,GAAWl0M,EAAE85F,QAAQ,IAAM5wE,EAAGovE,sBACvCt4F,EAAEy2F,iBACF3vE,EAAE9N,KAAKmgM,uBAAoB18M,EAC3B1C,KAAKwkN,gBAAkB,IAAInwL,KACtBtH,EAAE+1L,UAAUvD,WACfpwL,EAAGs6E,KAAK,CACN5J,cAAe55F,EACfzB,KAAM,WACNstB,SAAU,CACRhS,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,MAIboJ,EAAE+1L,UAAUvD,WAAY,EACxBxyL,EAAE+1L,UAAU2B,WAAY,EACxBnsH,EAAO,GAAK,EACPA,GAA4B,IAAlBA,EAAOt2F,aAA8BU,IAAd41F,EAAO,IAM3CA,EAAO,IAAM30E,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAAM,EACzC20E,EAAO,IAAM30E,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAAM,IANzC20E,EAAO,IAAM30E,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAAM,EACzC20E,EAAO,IAAM30E,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAAM,EACzC20E,EAAO,IAAM30E,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAAM,EAAI,EAC7C20E,EAAO,IAAM30E,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAAM,EAAI,GAK/CoJ,EAAEoyL,WAAW,UAAU,GACvBpyL,EAAEiwE,cAGG,GAAIm9G,GAAWl0M,EAAE85F,QAAQ,KAAOhzE,EAAE+1L,UAAU2B,WAChDt1L,EAAGi9J,kBAAoBj9J,EAAGg9J,kBAAoBh9J,EAAG8uE,sBAAwB9uE,EAAGkvE,qBAAsB,CAEnGp4F,EAAEy2F,iBACF3vE,EAAE9N,KAAKmgM,uBAAoB18M,EAC3BqqB,EAAEoyL,WAAW,UAAU,GACvB,IAAIoE,EAAcx2L,EAAEoxL,SAAS8E,cAC7B,GAAIM,EAAa,CACfx2L,EAAEoyL,WAAW,QAAQ,GACrB,IAAK,IAAIn7M,EAAI,EAAGA,EAAIu/M,EAAYvhN,OAAQgC,IAAK,CAC3C,IAAI0gN,EAAOnB,EAAYv/M,GAAG68E,SAC1B6jI,EAAK9/G,SAAU,EACf8/G,EAAK5jI,SAASq4H,aAAc,CAC9B,CACF,CACA,IAAIwL,EAAS53L,EAAE+1L,UAAUpkK,MAOrBkmK,GAJAb,EAAO99M,EAAE85F,QAAQ,GAAG0/F,QAAUI,EAChCmkB,EAAO/9M,EAAE85F,QAAQ,GAAG2/F,QAAUI,EAC5BmkB,EAAOh+M,EAAE85F,QAAQ,GAAG0/F,QAAUI,EAChCqkB,EAAOj+M,EAAE85F,QAAQ,GAAG2/F,QAAUI,EAChB9yK,EAAS+2L,EAAMC,EAAMC,EAAMC,IAGvCr9H,EAAS+9H,EAAYzD,EACzB,GAAIM,EAAuB,CAEzB,IAAIoD,GAAOd,EAAOhD,EACd+D,GAAOd,EAAOhD,EAGd+D,GAAOd,EAAOhD,EACd+D,GAAOd,EAAOhD,EAId13K,IAAMq7K,GAAOE,IAAQ,EACrBt7K,IAAMq7K,GAAOE,IAAQ,EAGrBl4B,GAAQ39J,EAAGiuD,OACX2vG,GAAQD,GAAQjmG,EAChBgmG,GAAO19J,EAAG20D,MAGVmZ,GAAOqkH,EAAa,GAAKx0B,GAAQD,GAAK/sK,EACtCo9E,GAAOokH,EAAa,GAAKx0B,GAAQD,GAAKluJ,EACtCquJ,GAAO,CACTltK,GAAIitK,GAAQD,IAAS7vF,GAAO4vF,GAAK/sK,EAAI0pB,IAAMyzD,GAC3Ct+D,GAAIouJ,GAAQD,IAAS5vF,GAAO2vF,GAAKluJ,EAAI8K,IAAMyzD,IAI7C,GAAIynH,GAAUA,EAAOrrJ,SAAU,CACzBiqJ,EAAcx2L,EAAEoxL,SAAS8E,cAC7BlH,EAAoBwH,GACpBx2L,EAAEoyL,WAAW,QAAQ,GACrBpyL,EAAEoyL,WAAW,QAAQ,GACrBwF,EAAOpE,aAAa92G,KAAK,UACzB85G,EAAY95G,KAAK,QACb18E,EAAEoxL,SAASqC,UACbmE,EAAOl7G,KAAK,cACZ85G,EAAY95G,KAAK,YAErB,CACAt6E,EAAGm0D,SAAS,CACVlG,KAAM2vG,GACNjpG,IAAKkpG,GACLK,oBAAoB,IAEtBl+J,EAAGs6E,KAAK,aACR03G,EAAYyD,EACZ7D,EAAOgD,EACP/C,EAAOgD,EACP/C,EAAOgD,EACP/C,EAAOgD,EACPn3L,EAAE02L,UAAW,CACf,CAGA,GAAIx9M,EAAE85F,QAAQ,GAAI,CACZ1xF,EAAM0e,EAAEixL,oBAAoB/3M,EAAE85F,QAAQ,GAAG0/F,QAASx5L,EAAE85F,QAAQ,GAAG2/F,SACnE/7K,EAAI,GAAKtV,EAAI,GACbsV,EAAI,GAAKtV,EAAI,EACf,CACA,GAAIpI,EAAE85F,QAAQ,GAAI,CACZ1xF,EAAM0e,EAAEixL,oBAAoB/3M,EAAE85F,QAAQ,GAAG0/F,QAASx5L,EAAE85F,QAAQ,GAAG2/F,SACnE/7K,EAAI,GAAKtV,EAAI,GACbsV,EAAI,GAAKtV,EAAI,EACf,CACA,GAAIpI,EAAE85F,QAAQ,GAAI,CACZ1xF,EAAM0e,EAAEixL,oBAAoB/3M,EAAE85F,QAAQ,GAAG0/F,QAASx5L,EAAE85F,QAAQ,GAAG2/F,SACnE/7K,EAAI,GAAKtV,EAAI,GACbsV,EAAI,GAAKtV,EAAI,EACf,CACF,MAAO,GAAIpI,EAAE85F,QAAQ,KAAOhzE,EAAE+1L,UAAU2B,UACtC,CACA,IAAI/lK,GAAQ3xB,EAAE+1L,UAAUpkK,MACpBoF,GAAO/2B,EAAE+1L,UAAUh/J,KAUvB,GARK/2B,EAAE8wL,UAAUwB,cAAiBtyL,EAAEk4L,eAClCtkB,EAAO5zK,EAAEyyL,mBAAmB77L,EAAI,GAAIA,EAAI,IAAI,GAAM,IAEhDw2L,GAAoB,MAATz7J,IACbz4C,EAAEy2F,iBAIAy9G,GAAoB,MAATz7J,IAAiB3xB,EAAEstL,gBAAgB37J,IAChD,GAAI+gK,EAAqB,CAEnB8D,EAAcx2L,EAAEoxL,SAAS8E,cAA7B,IACIxC,IAAmB1zL,EAAEoxL,SAASqC,QAC9BC,IACF7E,EAAe2H,EAAa,CAC1BpK,aAAa,IAGjBpsL,EAAEoxL,SAASqC,SAAU,EACrB,IAAIE,GAAa,CACf5gM,EAAG,EACH6e,EAAG,GAEL,GAAIwjF,EAASunB,EAAK,KAAOvnB,EAASunB,EAAK,MACrCg3E,GAAW5gM,GAAK4pH,EAAK,GACrBg3E,GAAW/hL,GAAK+qG,EAAK,GACjB+2E,IAAiB,CACnB1zL,EAAEoyL,WAAW,QAAQ,GACrB,IAAIa,GAAYjzL,EAAE+1L,UAAU9C,UACxBA,IAAa79F,EAAS69F,GAAU,KAAO79F,EAAS69F,GAAU,MAC5DU,GAAW5gM,GAAKkgM,GAAU,GAC1BU,GAAW/hL,GAAKqhL,GAAU,GAE9B,CAEFjzL,EAAE8wL,UAAUwB,cAAe,EAC3BkE,EAAY1zD,YAAY6wD,IAAYj3G,KAAK,iBACzC18E,EAAEoyL,WAAW,QAAQ,GACjBpyL,EAAE+1L,UAAUnlE,cAAc,IAAMolE,EAAQ,IAAMh2L,EAAE+1L,UAAUnlE,cAAc,IAAMolE,EAAQ,IACxFh2L,EAAEoyL,WAAW,QAAQ,GAEvBpyL,EAAEiwE,QACJ,KAAO,CAEDgjH,GAAYjzL,EAAE+1L,UAAU9C,UAAYjzL,EAAE+1L,UAAU9C,WAAa,GACxC,IAArBA,GAAUh+M,QACZg+M,GAAU/7M,KAAKylI,EAAK,IACpBs2E,GAAU/7M,KAAKylI,EAAK,MAEpBs2E,GAAU,IAAMt2E,EAAK,GACrBs2E,GAAU,IAAMt2E,EAAK,GAEzB,CAmCF,GA9BE6wE,EAAc77J,IAASiiJ,EAAM,CAAC,YAAa,UAAW,cAAe16L,EAAG,CACtE6Z,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,KAEH+6B,IAAUA,GAAMkmD,WAAc+7F,GAAQ78I,KACtCA,IACFA,GAAK2lD,KAAK,CACR5J,cAAe55F,EACfzB,KAAM,aACNstB,SAAU,CACRhS,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,MAITg9K,GACFA,EAAKl3F,KAAK,CACR5J,cAAe55F,EACfzB,KAAM,cACNstB,SAAU,CACRhS,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,OAKfoJ,EAAE+1L,UAAUh/J,KAAO68I,EAIjBwZ,EACF,IAASn2M,EAAI,EAAGA,EAAI2f,EAAI3hB,OAAQgC,IAC1B2f,EAAI3f,IAAM+oB,EAAE+1L,UAAUnlE,cAAc35I,IAAMy7M,IAC5C1yL,EAAE+1L,UAAUE,kBAAmB,GAMrC,GAAI7I,IAAqB,MAATz7J,IAAiBA,GAAM0zE,aAAejjG,EAAGg9J,kBAAoBh9J,EAAGkvE,qBAAsB,CACpG,IAAI08G,GAAmBH,EAAwBl8J,GAAO3xB,EAAE+1L,UAAUQ,QAC9DvI,KACF90M,EAAEy2F,iBACG3vE,EAAE9N,KAAKmgM,oBACVryL,EAAE9N,KAAKmgM,kBAAoB9gF,GAAYvxG,EAAE+1L,UAAUnlE,gBAEjD5wH,EAAEk4L,cACJ91L,EAAGqwH,MAAM,CACP1/H,EAAG4pH,EAAK,GAAKtsD,EACbz+C,EAAG+qG,EAAK,GAAKtsD,IAEfjuD,EAAGs6E,KAAK,YACCg2G,IACT1yL,EAAEk4L,cAAe,EACjB91L,EAAGqwH,MAAM,CACP1/H,EAAG6lD,EAAKyX,EACRz+C,EAAGinC,EAAKwX,IAEVjuD,EAAGs6E,KAAK,WACJ/qD,KACFA,GAAM6hK,aACNxzL,EAAEoyL,WAAW,UAAU,GACvBpyL,EAAE+1L,UAAUpkK,MAAQ,QAMtBrwC,EAAM0e,EAAEixL,oBAAoB/3M,EAAE85F,QAAQ,GAAG0/F,QAASx5L,EAAE85F,QAAQ,GAAG2/F,SACnE/7K,EAAI,GAAKtV,EAAI,GACbsV,EAAI,GAAKtV,EAAI,EACf,CACF,CACA,IAASpD,EAAI,EAAGA,EAAI0Y,EAAI3hB,OAAQiJ,IAC9B83M,EAAQ93M,GAAK0Y,EAAI1Y,GAIfkvM,GAAWl0M,EAAE85F,QAAQ/9F,OAAS,IAAM+qB,EAAE8wL,UAAUwB,eAAiBtyL,EAAEk4L,cAA4C,MAA5Bl4L,EAAE9N,KAAKmgM,oBAC5FryL,EAAE9N,KAAKmgM,uBAAoB18M,EAC3BqqB,EAAEoyL,WAAW,UAAU,GACvBpyL,EAAEiwE,SArYJ,CAuYF,GAAG,GAEHjwE,EAAE+vL,gBAAgBx7B,EAAiB,cAAemhC,EAAqB,SAA4Bx8M,GAEjG,IAAIy4C,EAAQ3xB,EAAE+1L,UAAUpkK,MACxB3xB,EAAE+1L,UAAU3I,SAAU,EAClBz7J,GACFA,EAAM6hK,YAEV,GAEAxzL,EAAE+vL,gBAAgBx7B,EAAiB,WAAYohC,EAAkB,SAAyBz8M,GAExF,IAAIy4C,EAAQ3xB,EAAE+1L,UAAUpkK,MACpBy7J,EAAUptL,EAAE+1L,UAAU3I,QAC1B,GAAIA,EAAJ,CAC2B,IAArBl0M,EAAE85F,QAAQ/9F,SACZ+qB,EAAE+1L,UAAU3I,SAAU,GAExBl0M,EAAEy2F,iBAIJ,IAAIpE,EAASvrE,EAAEwwL,UACfxwL,EAAEk4L,cAAe,EACjBl4L,EAAE8wL,UAAUwB,cAAe,EAC3B,IAsBI6F,EAtBA/1L,EAAKpC,EAAEoC,GACPiuD,EAAOjuD,EAAGiuD,OACVz5D,EAAMoJ,EAAE+1L,UAAUn/L,IAClBo/L,EAAUh2L,EAAE+1L,UAAUC,QAC1B,GAAI98M,EAAE85F,QAAQ,GAAI,CAChB,IAAI1xF,EAAM0e,EAAEixL,oBAAoB/3M,EAAE85F,QAAQ,GAAG0/F,QAASx5L,EAAE85F,QAAQ,GAAG2/F,SACnE/7K,EAAI,GAAKtV,EAAI,GACbsV,EAAI,GAAKtV,EAAI,EACf,CACA,GAAIpI,EAAE85F,QAAQ,GAAI,CACZ1xF,EAAM0e,EAAEixL,oBAAoB/3M,EAAE85F,QAAQ,GAAG0/F,QAASx5L,EAAE85F,QAAQ,GAAG2/F,SACnE/7K,EAAI,GAAKtV,EAAI,GACbsV,EAAI,GAAKtV,EAAI,EACf,CACA,GAAIpI,EAAE85F,QAAQ,GAAI,CACZ1xF,EAAM0e,EAAEixL,oBAAoB/3M,EAAE85F,QAAQ,GAAG0/F,QAASx5L,EAAE85F,QAAQ,GAAG2/F,SACnE/7K,EAAI,GAAKtV,EAAI,GACbsV,EAAI,GAAKtV,EAAI,EACf,CAKA,GAJIqwC,GACFA,EAAM6hK,aAGJxzL,EAAE+1L,UAAU3qC,IAAK,CAcnB,GAbA+sC,EAAY,CACVrlH,cAAe55F,EACfzB,KAAM,YACNstB,SAAU,CACRhS,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,KAGP+6B,EACFA,EAAM+qD,KAAKy7G,GAEX/1L,EAAGs6E,KAAKy7G,IAELn4L,EAAE+1L,UAAU/D,WAAY,CAC3B,IAAIoG,EAAS,CACXtlH,cAAe55F,EACfzB,KAAM,SACNstB,SAAU,CACRhS,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,KAGP+6B,EACFA,EAAM+qD,KAAK07G,GAEXh2L,EAAGs6E,KAAK07G,EAEZ,CAOA,OANIp4L,EAAE+1L,UAAUpkK,QACd3xB,EAAE+1L,UAAUpkK,MAAMmiC,SAAS+jB,SAAU,GAEvC73E,EAAE+1L,UAAU3qC,KAAM,EAClBprJ,EAAE+1L,UAAUpkK,MAAQ,UACpB3xB,EAAEiwE,QAEJ,CAGA,IAAK/2F,EAAE85F,QAAQ,IAAM5wE,EAAGovE,uBAAyBxxE,EAAE+1L,UAAUvD,UAAW,CACtExyL,EAAE+1L,UAAUvD,WAAY,EACxB,IAAI1c,EAAM1zK,EAAGixD,WAAWrzD,EAAE6zL,YAAYtoH,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,KAC9EA,EAAO,QAAK51F,EACZ41F,EAAO,QAAK51F,EACZ41F,EAAO,QAAK51F,EACZ41F,EAAO,QAAK51F,EACZ41F,EAAO,GAAK,EACZvrE,EAAEoyL,WAAW,UAAU,GACvBhwL,EAAGs6E,KAAK,CACNjlG,KAAM,SACNq7F,cAAe55F,EACf6rB,SAAU,CACRhS,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,MAGX,IAAIk9L,EAAqB,SAA4BniH,GACnD,OAAOA,EAAI+Q,eAAiB/Q,EAAIyzB,UAClC,EACA0wE,EAAIp5F,KAAK,OAAO2jD,UAAUyzD,GAAoBvoH,SAASmR,KAAK,aACxDo5F,EAAI31C,YACNngI,EAAEoyL,WAAW,QAAQ,GAEvBpyL,EAAEiwE,QACJ,CAIA,GAHa,MAATt+C,GACFA,EAAM6hK,aAEJt6M,EAAE85F,QAAQ,GACZhzE,EAAE9N,KAAKmgM,uBAAoB18M,EAC3BqqB,EAAEoyL,WAAW,UAAU,QAClB,GAAIl5M,EAAE85F,QAAQ,SAAW,GAAI95F,EAAE85F,QAAQ,SAAW,IAAK95F,EAAE85F,QAAQ,GAAI,CAC1EhzE,EAAE9N,KAAKmgM,uBAAoB18M,EAC3BqqB,EAAEoyL,WAAW,UAAU,GACvB,IAAIoE,EAAcx2L,EAAEoxL,SAAS8E,cAC7B,GAAa,MAATvkK,EAAe,CACjB,IAAI0mK,EAAkB1mK,EAAMmiC,SAAS+jB,QACrCm3G,EAAoBwH,GACpBx2L,EAAEoyL,WAAW,QAAQ,GACrBpyL,EAAEoyL,WAAW,QAAQ,GACjBiG,IACF1mK,EAAM+qD,KAAK,UACX85G,EAAY95G,KAAK,QACb18E,EAAEoxL,SAASqC,UACb9hK,EAAM+qD,KAAK,cACX85G,EAAY95G,KAAK,cAGrB8wG,EAAc77J,EAAO,CAAC,WAAY,SAAU,WAAY,cAAez4C,EAAG,CACxE6Z,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,KAET+6B,EAAM6hK,aACNxzL,EAAE+1L,UAAUpkK,MAAQ,IACtB,KAAO,CACL,IAAIiiJ,EAAO5zK,EAAEyyL,mBAAmB77L,EAAI,GAAIA,EAAI,IAAI,GAAM,GACtD42L,EAAc5Z,EAAM,CAAC,WAAY,SAAU,WAAY,cAAe16L,EAAG,CACvE6Z,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,IAEX,CACA,IAAIgiD,EAAK54C,EAAE+1L,UAAUnlE,cAAc,GAAKh6H,EAAI,GACxC+7L,EAAM/5I,EAAKA,EACXC,EAAK74C,EAAE+1L,UAAUnlE,cAAc,GAAKh6H,EAAI,GACxCg8L,EAAM/5I,EAAKA,EACXg6I,EAAQF,EAAMC,EACd0F,EAASzF,EAAQxiI,EAAOA,EAGvBrwD,EAAE+1L,UAAUE,mBACVtkK,GACHvvB,EAAGhK,EAAE,aAAagwF,SAAS,CAAC,gBAE9BolG,EAAc77J,EAAO,CAAC,MAAO,UAAWz4C,EAAG,CACzC6Z,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,KAETg/L,GAAiB,EACb18M,EAAEgrB,UAAY4xL,GAAsB1zL,EAAGu+J,0BACzCk1B,GAAgB3pJ,aAAa2pJ,GAC7BD,GAAiB,EACjBE,EAAqB,KACrBtI,EAAc77J,EAAO,CAAC,SAAU,aAAcz4C,EAAG,CAC/C6Z,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,OAGTi/L,EAAez+L,YAAW,WACpBw+L,GACJpI,EAAc77J,EAAO,CAAC,SAAU,aAAcz4C,EAAG,CAC/C6Z,EAAG6D,EAAI,GACPgb,EAAGhb,EAAI,IAEX,GAAGwL,EAAGu+J,0BACNm1B,EAAqB58M,EAAEgrB,YAKd,MAATytB,IAAkB3xB,EAAEoxL,SAASqC,SAC9B9hK,EAAMmiC,SAAS4uB,YAAc41G,EAASt4L,EAAE+2L,qBAAuB/2L,EAAE02L,WAEvC,WAAvBt0L,EAAG88J,iBACL98J,EAAGhK,EAAEm1L,GAAY/6C,QAAQ7gH,GAAOy2D,SAAS,CAAC,gBAC1Cz2D,EAAM45C,OAAO,CAAC,eAEV55C,EAAMyzE,WACRzzE,EAAMy2D,SAAS,CAAC,gBAEhBz2D,EAAM45C,OAAO,CAAC,cAGlBvrE,EAAEoyL,WAAW,QAAQ,IAEvBpyL,EAAE+1L,UAAUE,kBAAmB,CACjC,CACA,IAAK,IAAI/3M,EAAI,EAAGA,EAAI0Y,EAAI3hB,OAAQiJ,IAC9B83M,EAAQ93M,GAAK0Y,EAAI1Y,GAEnB8hB,EAAEoxL,SAASqC,SAAU,EAEI,IAArBv6M,EAAE85F,QAAQ/9F,SACZ+qB,EAAE+1L,UAAU9C,UAAY,GACxBjzL,EAAE+1L,UAAUnlE,cAAgB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MAC3D5wH,EAAE+1L,UAAUc,eAAiB,KAC7B72L,EAAE+1L,UAAU2B,WAAY,GAEtBx+M,EAAE85F,QAAQ/9F,OAAS,IACI,IAArBiE,EAAE85F,QAAQ/9F,SAEZ+qB,EAAE+1L,UAAUc,eAAiB,CAAC39M,EAAE85F,QAAQ,GAAG0/F,QAASx5L,EAAE85F,QAAQ,GAAG2/F,UAEnE3yK,EAAE02L,UAAW,EACb12L,EAAEoyL,WAAW,QAAQ,GACrBpyL,EAAEiwE,SAzMJ,CA6MF,GAAG,GAGuB,qBAAfsoH,WAA4B,CACrC,IAAIC,GAAW,GACXC,GAAY,SAAmBv/M,GACjC,MAAO,CACLw5L,QAASx5L,EAAEw5L,QACXC,QAASz5L,EAAEy5L,QACX39F,MAAO,EACP0jH,WAAYx/M,EAAEy/M,UACd1lH,MAAO/5F,EAAE+5F,MACTE,MAAOj6F,EAAEi6F,MACTylH,QAAS1/M,EAAEuiC,MAAQ,EACnBo9K,QAAS3/M,EAAEwiC,OAAS,EACpBo9K,QAAS5/M,EAAE4/M,QACXC,QAAS7/M,EAAE6/M,QACXpgN,OAAQO,EAAEP,OAEd,EACIqgN,GAAc,SAAqB9/M,GACrC,MAAO,CACLod,MAAOpd,EACP+/M,MAAOR,GAAUv/M,GAErB,EACIggN,GAAa,SAAoBhgN,GACnCs/M,GAASthN,KAAK8hN,GAAY9/M,GAC5B,EACIigN,GAAgB,SAAuBjgN,GACzC,IAAK,IAAIjC,EAAI,EAAGA,EAAIuhN,GAASvjN,OAAQgC,IAAK,CACxC,IAAI65C,EAAI0nK,GAASvhN,GACjB,GAAI65C,EAAEx6B,MAAMqiM,YAAcz/M,EAAEy/M,UAE1B,YADAH,GAAStsL,OAAOj1B,EAAG,EAGvB,CACF,EACImiN,GAAgB,SAAuBlgN,GACzC,IAAI43C,EAAI0nK,GAASv1L,QAAO,SAAU6tB,GAChC,OAAOA,EAAEx6B,MAAMqiM,YAAcz/M,EAAEy/M,SACjC,IAAG,GACH7nK,EAAEx6B,MAAQpd,EACV43C,EAAEmoK,MAAQR,GAAUv/M,EACtB,EACImgN,GAAoB,SAA2BngN,GACjDA,EAAE85F,QAAUwlH,GAAS77L,KAAI,SAAUm0B,GACjC,OAAOA,EAAEmoK,KACX,GACF,EACIK,GAAiB,SAAwBpgN,GAC3C,MAAyB,UAAlBA,EAAEqgN,aAA6C,IAAlBrgN,EAAEqgN,WACxC,EACAv5L,EAAE+vL,gBAAgB/vL,EAAE+d,UAAW,eAAe,SAAU7kC,GAClDogN,GAAepgN,KAInBA,EAAEy2F,iBACFupH,GAAWhgN,GACXmgN,GAAkBngN,GAClBs8M,EAAkBt8M,GACpB,IACA8mB,EAAE+vL,gBAAgB/vL,EAAE+d,UAAW,aAAa,SAAU7kC,GAChDogN,GAAepgN,KAInBigN,GAAcjgN,GACdmgN,GAAkBngN,GAClBy8M,EAAgBz8M,GAClB,IACA8mB,EAAE+vL,gBAAgB/vL,EAAE+d,UAAW,iBAAiB,SAAU7kC,GACpDogN,GAAepgN,KAInBigN,GAAcjgN,GACdmgN,GAAkBngN,GAClBw8M,EAAmBx8M,GACrB,IACA8mB,EAAE+vL,gBAAgB/vL,EAAE+d,UAAW,eAAe,SAAU7kC,GAClDogN,GAAepgN,KAInBA,EAAEy2F,iBACFypH,GAAclgN,GACdmgN,GAAkBngN,GAClBu8M,EAAiBv8M,GACnB,GACF,CACF,GAEIsgN,GAAQ,CACZA,gBAAwB,SAAU9hN,EAAMinB,GACtC,OAAO1rB,KAAKqhM,WAAW58L,GAAQ,CAC7B8yD,SAAUv3D,KACVyE,KAAMA,EACNinB,OAAQA,EACRsK,KAAM,SAAcj2B,EAASwkI,EAASC,EAASh8F,EAAOC,GACpDzoC,KAAKu3D,SAASivJ,cAAc,UAAWzmN,EAASwkI,EAASC,EAASh8F,EAAOC,EAAQzoC,KAAK0rB,OACxF,EACAuhL,cAAe,SAAuBxsE,EAAOC,EAAOl4F,EAAOC,EAAQ3oB,EAAG6e,EAAG4sD,GACvE,OAAOw9C,GAAqBjpH,EAAG6e,EAAG3+B,KAAK0rB,OAAQ+0G,EAAOC,EAAOl4F,EAAQ,EAAGC,EAAS,EAAG8iD,EACtF,EACAg2G,WAAY,SAAoBzhL,EAAG6e,EAAG4sD,EAAS/iD,EAAOC,EAAQ87F,EAASC,GACrE,OAAOH,GAAmBvkH,EAAG6e,EAAG3+B,KAAK0rB,OAAQ64G,EAASC,EAASh8F,EAAOC,EAAQ,CAAC,GAAI,GAAI8iD,EACzF,EAEJ,EACAg7H,gBAAwB,WACtB,OAAOvmN,KAAKqhM,WAAW,WAAa,CAClC9pI,SAAUv3D,KACVyE,KAAM,UACNuxB,KAAM,SAAcj2B,EAASwkI,EAASC,EAASh8F,EAAOC,GACpDzoC,KAAKu3D,SAASivJ,cAAcxmN,KAAKyE,KAAM1E,EAASwkI,EAASC,EAASh8F,EAAOC,EAC3E,EACAwkK,cAAe,SAAuBxsE,EAAOC,EAAOl4F,EAAOC,EAAQ3oB,EAAG6e,EAAG4sD,GACvE,OAAOy7C,GAAqBlnH,EAAG6e,EAAG8hG,EAAOC,EAAOl4F,EAAQ,EAAI+iD,EAAS9iD,EAAS,EAAI8iD,EACpF,EACAg2G,WAAY,SAAoBzhL,EAAG6e,EAAG4sD,EAAS/iD,EAAOC,EAAQ87F,EAASC,GACrE,OAAO6C,GAAevnH,EAAG6e,EAAG6J,EAAOC,EAAQ87F,EAASC,EAASj5C,EAC/D,EAEJ,EACAg7H,qBAA6B,SAAU9hN,EAAMinB,GAO3C,IADA,IAAI+6L,EAAY,IAAI5/M,MAAsB,EAAhB6kB,EAAO1pB,QACxBgC,EAAI,EAAGA,EAAI0nB,EAAO1pB,OAAS,EAAGgC,IAAK,CAC1C,IAAI0iN,EAAkB,EAAJ1iN,EACd2iN,OAAY,EAEdA,EADE3iN,EAAI0nB,EAAO1pB,OAAS,EAAI,EACJ,GAATgC,EAAI,GAEL,EAEdyiN,EAAc,EAAJziN,GAAS0nB,EAAOg7L,GAC1BD,EAAc,EAAJziN,EAAQ,GAAK0nB,EAAOg7L,EAAc,GAC5C,IAAIE,EAAQl7L,EAAOi7L,GAAaj7L,EAAOg7L,GACnCG,EAAQn7L,EAAOi7L,EAAY,GAAKj7L,EAAOg7L,EAAc,GACrDI,EAAO3gN,KAAK2iB,KAAK89L,EAAQA,EAAQC,EAAQA,GAC7CJ,EAAc,EAAJziN,EAAQ,GAAK4iN,EAAQE,EAC/BL,EAAc,EAAJziN,EAAQ,GAAK6iN,EAAQC,CACjC,CACA,OAAO9mN,KAAKqhM,WAAW58L,GAAQ,CAC7B8yD,SAAUv3D,KACVyE,KAAMA,EACNinB,OAAQ+6L,EACRzwL,KAAM,SAAcj2B,EAASwkI,EAASC,EAASh8F,EAAOC,GACpDzoC,KAAKu3D,SAASivJ,cAAc,gBAAiBzmN,EAASwkI,EAASC,EAASh8F,EAAOC,EAAQzoC,KAAK0rB,OAC9F,EACAuhL,cAAe,SAAuBxsE,EAAOC,EAAOl4F,EAAOC,EAAQ3oB,EAAG6e,EAAG4sD,GACvE,OAAO89C,GAA0BvpH,EAAG6e,EAAG3+B,KAAK0rB,OAAQ+0G,EAAOC,EAAOl4F,EAAOC,EAC3E,EACA84J,WAAY,SAAoBzhL,EAAG6e,EAAG4sD,EAAS/iD,EAAOC,EAAQ87F,EAASC,GACrE,OAAOM,GAAwBhlH,EAAG6e,EAAG3+B,KAAK0rB,OAAQ64G,EAASC,EAASh8F,EAAOC,EAC7E,EAEJ,EACA89K,uBAA+B,WAC7B,OAAOvmN,KAAKqhM,WAAW,mBAAqBrhM,KAAKqhM,WAAW,kBAAoB,CAC9E9pI,SAAUv3D,KACVyE,KAAM,kBACNinB,OAAQk+G,GAAkC,EAAG,GAC7C5zG,KAAM,SAAcj2B,EAASwkI,EAASC,EAASh8F,EAAOC,GACpDzoC,KAAKu3D,SAASivJ,cAAcxmN,KAAKyE,KAAM1E,EAASwkI,EAASC,EAASh8F,EAAOC,EAC3E,EACAwkK,cAAe,SAAuBxsE,EAAOC,EAAOl4F,EAAOC,EAAQ3oB,EAAG6e,EAAG4sD,GACvE,OAAOi1C,GAA4B1gH,EAAG6e,EAAG8hG,EAAOC,EAAOl4F,EAAOC,EAAQ8iD,EACxE,EACAg2G,WAAY,SAAoBzhL,EAAG6e,EAAG4sD,EAAS/iD,EAAOC,EAAQ87F,EAASC,GACrE,IAAI5D,EAAeC,GAAwBr4F,EAAOC,GAC9Cs+K,EAAsB,EAAfnmF,EAGX,QAAIyD,GAAmBvkH,EAAG6e,EAAG3+B,KAAK0rB,OAAQ64G,EAASC,EAASh8F,EAAOC,EAASs+K,EAAM,CAAC,GAAI,GAAIx7H,OAKvF84C,GAAmBvkH,EAAG6e,EAAG3+B,KAAK0rB,OAAQ64G,EAASC,EAASh8F,EAAQu+K,EAAMt+K,EAAQ,CAAC,GAAI,GAAI8iD,OAKvF87C,GAAevnH,EAAG6e,EAAGooL,EAAMA,EAAMxiF,EAAU/7F,EAAQ,EAAIo4F,EAAc4D,EAAU/7F,EAAS,EAAIm4F,EAAcr1C,OAK1G87C,GAAevnH,EAAG6e,EAAGooL,EAAMA,EAAMxiF,EAAU/7F,EAAQ,EAAIo4F,EAAc4D,EAAU/7F,EAAS,EAAIm4F,EAAcr1C,OAK1G87C,GAAevnH,EAAG6e,EAAGooL,EAAMA,EAAMxiF,EAAU/7F,EAAQ,EAAIo4F,EAAc4D,EAAU/7F,EAAS,EAAIm4F,EAAcr1C,MAK1G87C,GAAevnH,EAAG6e,EAAGooL,EAAMA,EAAMxiF,EAAU/7F,EAAQ,EAAIo4F,EAAc4D,EAAU/7F,EAAS,EAAIm4F,EAAcr1C,MAIhH,EAEJ,EACAg7H,qBAA6B,WAC3B,OAAOvmN,KAAKqhM,WAAW,iBAAmBrhM,KAAKqhM,WAAW,gBAAkB,CAC1E9pI,SAAUv3D,KACVyE,KAAM,gBACNuiN,aAAc58E,KACd1+G,OAAQk+G,GAAkC,EAAG,GAC7C5zG,KAAM,SAAcj2B,EAASwkI,EAASC,EAASh8F,EAAOC,GACpDzoC,KAAKu3D,SAASivJ,cAAcxmN,KAAKyE,KAAM1E,EAASwkI,EAASC,EAASh8F,EAAOC,EAC3E,EACAw+K,uBAAwB,SAAgCz+K,EAAOC,EAAQ87F,EAASC,GAC9E,IAAI0iF,EAAKlnN,KAAKgnN,aACV5lB,EAAK34J,EAAS,EACd04J,EAAK34J,EAAQ,EACb2+K,EAAS5iF,EAAU48D,EACnBimB,EAAO7iF,EAAU48D,EACjBkmB,EAAS7iF,EAAU48D,EACnBkmB,EAAO9iF,EAAU48D,EAGrB,MAAO,CACLmmB,QAAS,CAACJ,EAAQE,EAASH,EAAIC,EAASD,EAAIG,EAAQF,EAASD,EAAIG,EAASH,GAC1EM,SAAU,CAACJ,EAAOF,EAAIG,EAAQD,EAAMC,EAASH,EAAIE,EAAOF,EAAIG,EAASH,GACrEO,YAAa,CAACL,EAAME,EAAOJ,EAAIE,EAAOF,EAAII,EAAMF,EAAOF,EAAII,EAAOJ,GAClEQ,WAAY,CAACP,EAASD,EAAII,EAAMH,EAAQG,EAAOJ,EAAIC,EAASD,EAAII,EAAOJ,GAE3E,EACAja,cAAe,SAAuBxsE,EAAOC,EAAOl4F,EAAOC,EAAQ3oB,EAAG6e,EAAG4sD,GACvE,IAAIo8H,EAAO3nN,KAAKinN,uBAAuBz+K,EAAQ,EAAI+iD,EAAS9iD,EAAS,EAAI8iD,EAASk1C,EAAOC,GACrF81B,EAAM,GAAGv1J,OAAO6B,MAAM,GAAI,CAAC6kN,EAAKJ,QAAQtuL,OAAO,EAAG,GAAI0uL,EAAKH,SAASvuL,OAAO,EAAG,GAAI0uL,EAAKF,YAAYxuL,OAAO,EAAG,GAAI0uL,EAAKD,WAAWzuL,OAAO,EAAG,KAC/I,OAAO8vG,GAAqBjpH,EAAG6e,EAAG63H,EAAK/1B,EAAOC,EAChD,EACA6gE,WAAY,SAAoBzhL,EAAG6e,EAAG4sD,EAAS/iD,EAAOC,EAAQ87F,EAASC,GAErE,GAAIH,GAAmBvkH,EAAG6e,EAAG3+B,KAAK0rB,OAAQ64G,EAASC,EAASh8F,EAAOC,EAAS,EAAIzoC,KAAKgnN,aAAc,CAAC,GAAI,GAAIz7H,GAC1G,OAAO,EAIT,GAAI84C,GAAmBvkH,EAAG6e,EAAG3+B,KAAK0rB,OAAQ64G,EAASC,EAASh8F,EAAQ,EAAIxoC,KAAKgnN,aAAcv+K,EAAQ,CAAC,GAAI,GAAI8iD,GAC1G,OAAO,EAET,IAAIq8H,EAAiB5nN,KAAKinN,uBAAuBz+K,EAAOC,EAAQ87F,EAASC,GACzE,OAAOL,GAAyBrkH,EAAG6e,EAAGipL,EAAeL,UAAYpjF,GAAyBrkH,EAAG6e,EAAGipL,EAAeJ,WAAarjF,GAAyBrkH,EAAG6e,EAAGipL,EAAeH,cAAgBtjF,GAAyBrkH,EAAG6e,EAAGipL,EAAeF,WAC1O,EAEJ,EACAnB,eAAuB,WACrB,OAAOvmN,KAAKqhM,WAAW,UAAY,CACjC9pI,SAAUv3D,KACVyE,KAAM,SACNinB,OAAQk+G,GAAkC,EAAG,GAC7C5zG,KAAM,SAAcj2B,EAASwkI,EAASC,EAASh8F,EAAOC,GACpDzoC,KAAKu3D,SAASivJ,cAAcxmN,KAAKyE,KAAM1E,EAASwkI,EAASC,EAASh8F,EAAOC,EAC3E,EACAwkK,cAAe,SAAuBxsE,EAAOC,EAAOl4F,EAAOC,EAAQ3oB,EAAG6e,EAAG4sD,GAGvE,IAAI8nH,EAAK,IACL/rE,EAAK,GACLC,EAAK,IACLsgF,EAAO7nN,KAAK8nN,wBAAwBt/K,EAAQ,EAAI+iD,EAAS9iD,EAAS,EAAI8iD,EAASk1C,EAAOC,GACtFqnF,EAA4B,SAAmCvxD,GAEjE,IAAIwxD,EAAK1oF,GAAY,CACnBx/G,EAAG02I,EAAI,GACP73H,EAAG63H,EAAI,IACN,CACD12I,EAAG02I,EAAI,GACP73H,EAAG63H,EAAI,IACN,CACD12I,EAAG02I,EAAI,GACP73H,EAAG63H,EAAI,IACN68C,GACC4U,EAAK3oF,GAAY,CACnBx/G,EAAG02I,EAAI,GACP73H,EAAG63H,EAAI,IACN,CACD12I,EAAG02I,EAAI,GACP73H,EAAG63H,EAAI,IACN,CACD12I,EAAG02I,EAAI,GACP73H,EAAG63H,EAAI,IACNlvB,GACC4gF,EAAK5oF,GAAY,CACnBx/G,EAAG02I,EAAI,GACP73H,EAAG63H,EAAI,IACN,CACD12I,EAAG02I,EAAI,GACP73H,EAAG63H,EAAI,IACN,CACD12I,EAAG02I,EAAI,GACP73H,EAAG63H,EAAI,IACNjvB,GACH,MAAO,CAACivB,EAAI,GAAIA,EAAI,GAAIwxD,EAAGloM,EAAGkoM,EAAGrpL,EAAGspL,EAAGnoM,EAAGmoM,EAAGtpL,EAAGupL,EAAGpoM,EAAGooM,EAAGvpL,EAAG63H,EAAI,GAAIA,EAAI,GAC1E,EACIA,EAAM,GAAGv1J,OAAO8mN,EAA0BF,EAAKN,SAAUQ,EAA0BF,EAAKL,UAAWO,EAA0BF,EAAKJ,aAAcM,EAA0BF,EAAKH,aACnL,OAAO3+E,GAAqBjpH,EAAG6e,EAAG63H,EAAK/1B,EAAOC,EAChD,EACAonF,wBAAyB,SAAiCt/K,EAAOC,EAAQ87F,EAASC,GAChF,IAAI48D,EAAK34J,EAAS,EACd04J,EAAK34J,EAAQ,EACb2+K,EAAS5iF,EAAU48D,EACnBimB,EAAO7iF,EAAU48D,EACjBkmB,EAAS7iF,EAAU48D,EACnBkmB,EAAO9iF,EAAU48D,EACjB+mB,EAAiB79E,GAAwB9hG,EAAOC,GAChD2/K,EAAUD,EAAe59E,aACzB89E,EAAUF,EAAe39E,YACzB89E,EAAgBH,EAAe19E,gBAAkBjiG,EAGjDguH,EAAM,CACR+wD,QAAS,CAACJ,EAAQE,EAASe,EAASjB,EAASmB,EAAejB,EAAQF,EAASkB,EAAShB,GACtFG,SAAU,CAACJ,EAAOiB,EAAShB,EAAQD,EAAOkB,EAAejB,EAAQD,EAAMC,EAASe,GAChFX,YAAa,CAACL,EAAME,EAAOc,EAAShB,EAAOkB,EAAehB,EAAMF,EAAOiB,EAASf,GAChFI,WAAY,CAACP,EAASkB,EAASf,EAAMH,EAASmB,EAAehB,EAAMH,EAAQG,EAAOc,IAMpF,OAJA5xD,EAAI+wD,QAAQgB,OAAQ,EACpB/xD,EAAIgxD,SAASe,OAAQ,EACrB/xD,EAAIkxD,WAAWc,UAAW,EAC1BhyD,EAAIixD,YAAYe,UAAW,EACpBhyD,CACT,EACA+qC,WAAY,SAAoBzhL,EAAG6e,EAAG4sD,EAAS/iD,EAAOC,EAAQ87F,EAASC,GACrE,IAAI2jF,EAAiB79E,GAAwB9hG,EAAOC,GAChD2/K,EAAUD,EAAe59E,aACzB89E,EAAUF,EAAe39E,YAG7B,GAAInG,GAAmBvkH,EAAG6e,EAAG3+B,KAAK0rB,OAAQ64G,EAASC,EAASh8F,EAAOC,EAAS,EAAI2/K,EAAS,CAAC,GAAI,GAAI78H,GAChG,OAAO,EAIT,GAAI84C,GAAmBvkH,EAAG6e,EAAG3+B,KAAK0rB,OAAQ64G,EAASC,EAASh8F,EAAQ,EAAI6/K,EAAS5/K,EAAQ,CAAC,GAAI,GAAI8iD,GAChG,OAAO,EA2BT,IAzBA,IAAIk9H,EAAiBzoN,KAAK8nN,wBAAwBt/K,EAAOC,EAAQ87F,EAASC,GACtEkkF,EAAY,SAAmB5oM,EAAG6e,EAAGgqL,GACvC,IAAIC,EAAKD,EAAS,GACd7+K,EAAK6+K,EAAS,GACd1+K,EAAK0+K,EAAS,GACdppB,EAAKopB,EAAS,GAEdz+K,EAAKy+K,EAAS,GACdE,EAAO1iN,KAAKyI,IAAIg6M,EAAI3+K,GACpB6+K,EAAO3iN,KAAKwI,IAAIi6M,EAAI3+K,GACpB8+K,EAAO5iN,KAAKyI,IAAI2wL,EAAIr1J,GACpB8+K,EAAO7iN,KAAKwI,IAAI4wL,EAAIr1J,GACxB,GAAI2+K,GAAQ/oM,GAAKA,GAAKgpM,GAAQC,GAAQpqL,GAAKA,GAAKqqL,EAAM,CACpD,IAAIznH,EAAQ8oC,GAAqBu+E,EAAI9+K,EAAIG,GACrCmoE,EAAQywB,GAAethC,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIzhF,GACrDmpM,EAAa72G,EAAMpiF,QAAO,SAAUjD,GACtC,OAAO,GAAKA,GAAKA,GAAK,CACxB,IACA,GAAIk8L,EAAWjnN,OAAS,EACtB,OAAOinN,EAAW,EAEtB,CACA,OAAO,IACT,EACIC,EAAelmN,OAAO+E,KAAK0gN,GACtBzkN,EAAI,EAAGA,EAAIklN,EAAalnN,OAAQgC,IAAK,CAC5C,IAAImlN,EAASD,EAAallN,GACtBolN,EAAYX,EAAeU,GAC3B9+L,EAAIq+L,EAAU5oM,EAAG6e,EAAGyqL,GACxB,GAAS,MAAL/+L,EAAJ,CAGA,IAAIk1K,EAAK6pB,EAAU,GACfr/K,EAAKq/K,EAAU,GACfl/K,EAAKk/K,EAAU,GACfC,EAAOhqF,GAAUkgE,EAAIx1J,EAAIG,EAAI7f,GACjC,GAAI++L,EAAUb,OAASc,GAAQ1qL,EAC7B,OAAO,EAET,GAAIyqL,EAAUZ,UAAY7pL,GAAK0qL,EAC7B,OAAO,CATT,CAWF,CACA,OAAO,CACT,EAEJ,EACA9C,6BAAqC,WACnC,OAAOvmN,KAAKqhM,WAAW,0BAA4BrhM,KAAKqhM,WAAW,wBAA0B,CAC3F9pI,SAAUv3D,KACVyE,KAAM,yBACNinB,OAAQk+G,GAAkC,EAAG,GAC7C5zG,KAAM,SAAcj2B,EAASwkI,EAASC,EAASh8F,EAAOC,GACpDzoC,KAAKu3D,SAASivJ,cAAcxmN,KAAKyE,KAAM1E,EAASwkI,EAASC,EAASh8F,EAAOC,EAC3E,EACAwkK,cAAe,SAAuBxsE,EAAOC,EAAOl4F,EAAOC,EAAQ3oB,EAAG6e,EAAG4sD,GACvE,IAAIu1C,EAAYL,GAASj4F,EAAQ,EAAI+iD,GACjCw1C,EAAYL,GAASj4F,EAAS,EAAI8iD,GAClC01C,EAAUF,EACVC,EAAUP,GAASj4F,EAAQ,EAAI+iD,GAC/B+9H,EAAmBpoF,GAAqBphH,EAAG6e,EAAG8hG,EAAOC,EAAOI,EAAWC,EAAWC,EAASC,GAAS,GACxG,OAAIqoF,EAAiBtnN,OAAS,EACrBsnN,EAEF9oF,GAA4B1gH,EAAG6e,EAAG8hG,EAAOC,EAAOl4F,EAAOC,EAAQ8iD,EACxE,EACAg2G,WAAY,SAAoBzhL,EAAG6e,EAAG4sD,EAAS/iD,EAAOC,EAAQ87F,EAASC,GACrE,IAAI5D,EAAeC,GAAwBr4F,EAAOC,GAC9Cs+K,EAAO,EAAInmF,EAGf,GAAIyD,GAAmBvkH,EAAG6e,EAAG3+B,KAAK0rB,OAAQ64G,EAASC,EAASh8F,EAAOC,EAASs+K,EAAM,CAAC,GAAI,GAAIx7H,GACzF,OAAO,EAIT,GAAI84C,GAAmBvkH,EAAG6e,EAAG3+B,KAAK0rB,OAAQ64G,EAASC,EAASh8F,EAAQu+K,EAAMt+K,EAAQ,CAAC,GAAI,GAAI8iD,GACzF,OAAO,EAIT,IAAI0pB,EAAazsE,EAAQ,EAAI,EAAI+iD,EAC7B2pB,EAAczsE,EAAS,EAAI,EAAI8iD,EAC/B7/D,EAAS,CAAC64G,EAAUtvB,EAAYuvB,EAAUtvB,EAAaqvB,EAAUtvB,EAAYuvB,EAASD,EAAUtvB,EAAYuvB,EAASD,EAAUtvB,EAAYuvB,EAAUtvB,GACzJ,QAAIivB,GAAyBrkH,EAAG6e,EAAGjT,OAK/B27G,GAAevnH,EAAG6e,EAAGooL,EAAMA,EAAMxiF,EAAU/7F,EAAQ,EAAIo4F,EAAc4D,EAAU/7F,EAAS,EAAIm4F,EAAcr1C,MAK1G87C,GAAevnH,EAAG6e,EAAGooL,EAAMA,EAAMxiF,EAAU/7F,EAAQ,EAAIo4F,EAAc4D,EAAU/7F,EAAS,EAAIm4F,EAAcr1C,GAIhH,EAEJ,EACAg7H,mBAA2B,WACzB,IAAIllB,EAAarhM,KAAKqhM,WAAa,CAAC,EAChC9pI,EAAWv3D,KACfA,KAAKupN,kBACLvpN,KAAKwpN,gBAAgB,WAAY5/E,GAAkC,EAAG,IACtE5pI,KAAKypN,qBAAqB,iBAAkB7/E,GAAkC,EAAG,IACjF5pI,KAAKwpN,gBAAgB,YAAa5/E,GAAkC,EAAG,IACvEy3D,EAAW,UAAYA,EAAW,aAClCrhM,KAAK0pN,yBACL1pN,KAAK2pN,uBACL3pN,KAAK4pN,iBACL5pN,KAAK6pN,+BAEH,IAAIC,EAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAC5C9pN,KAAKwpN,gBAAgB,UAAWM,GAChC9pN,KAAKypN,qBAAqB,gBAAiBK,GAE7C9pN,KAAKwpN,gBAAgB,WAAY5/E,GAAkC,EAAG,IACtE5pI,KAAKypN,qBAAqB,iBAAkB7/E,GAAkC,EAAG,IACjF5pI,KAAKwpN,gBAAgB,UAAW5/E,GAAkC,EAAG,IACrE5pI,KAAKypN,qBAAqB,gBAAiB7/E,GAAkC,EAAG,IAChF5pI,KAAKwpN,gBAAgB,WAAY5/E,GAAkC,EAAG,IACtE5pI,KAAKypN,qBAAqB,iBAAkB7/E,GAAkC,EAAG,IACjF5pI,KAAKwpN,gBAAgB,UAAW5/E,GAAkC,EAAG,IACrE5pI,KAAKypN,qBAAqB,gBAAiB7/E,GAAkC,EAAG,IAChF,IAAImgF,EAAc,IAAIljN,MAAM,IAEtBmjN,EAAcjgF,GAAuB,EAAG,GACxCkgF,EAAclgF,GAAuB,EAAG5jI,KAAK40B,GAAK,GAGlDmnB,EAAc,IAAO,EAAI/7C,KAAK2iB,KAAK,IACvCo5B,GAAe,KACf,IAAK,IAAIl+C,EAAI,EAAGA,EAAIimN,EAAYjoN,OAAS,EAAGgC,IAC1CimN,EAAgB,EAAJjmN,IAAUk+C,EACtB+nK,EAAgB,EAAJjmN,EAAQ,IAAMk+C,EAE5B,IAASl+C,EAAI,EAAGA,EAAI,EAAQA,IAC1B+lN,EAAgB,EAAJ/lN,GAASgmN,EAAgB,EAAJhmN,GACjC+lN,EAAgB,EAAJ/lN,EAAQ,GAAKgmN,EAAgB,EAAJhmN,EAAQ,GAC7C+lN,EAAgB,EAAJ/lN,EAAQ,GAAKimN,EAAgB,EAAJjmN,GACrC+lN,EAAgB,EAAJ/lN,EAAQ,GAAKimN,EAAgB,EAAJjmN,EAAQ,GAGjD+lN,EAAc//E,GAAmB+/E,GACjC/pN,KAAKwpN,gBAAgB,OAAQO,GAC7B/pN,KAAKwpN,gBAAgB,MAAO,EAAE,GAAI,EAAG,GAAI,KAAO,GAAI,EAAG,EAAG,IAC1DxpN,KAAKwpN,gBAAgB,WAAY,EAAE,GAAI,EAAG,MAAQ,EAAG,EAAG,GAAI,KAAO,IACnExpN,KAAKwpN,gBAAgB,iBAAkB,EAAE,MAAQ,EAAG,GAAI,EAAG,KAAO,GAAI,EAAG,IACzExpN,KAAKqhM,WAAW,kBAAoBrhM,KAAKwpN,gBAAgB,kBAAmB,EAAE,GAAI,KAAO,IAAM,GAAI,EAAG,IAAM,EAAG,IAAM,IAAM,EAAG,GAAI,MAEhI,IAAIU,EAAY,EAAE,GAAI,EAAG,KAAO,EAAG,EAAG,EAAG,IAAM,GAAI,EAAG,GACtDlqN,KAAKwpN,gBAAgB,MAAOU,GAC5BlqN,KAAKypN,qBAAqB,YAAaS,GAEzC7oB,EAAWuW,YAAc,SAAUlsL,GAGjC,IAEI8J,EAFA3xB,EAAM6nB,EAAO5gB,KAAK,KAClBrG,EAAO,WAAaZ,EAExB,OAAI2xB,EAAQx1B,KAAKyE,IAER+wB,EAIF+hC,EAASiyJ,gBAAgB/kN,EAAMinB,EACxC,CACF,GAEIy+L,GAAQ,CACZA,aAAqB,WACnB,OAAOnqN,KAAKoqN,gBAAkBpqN,KAAKqqN,WACrC,EACAF,OAAe,SAAUxqN,GACvBA,EAAUA,GAAW0wH,KACrB,IAAItjG,EAAI/sB,UACoB0C,IAAxBqqB,EAAEu9L,oBACJv9L,EAAEu9L,kBAAoB,QAEC5nN,IAArBqqB,EAAEw9L,iBACJx9L,EAAEw9L,eAAiB,QAEE7nN,IAAnBqqB,EAAEy9L,eACJz9L,EAAEy9L,aAAe,GAEnBz9L,EAAE09L,gBAAiB,EACnB19L,EAAE29L,cAAgB/qN,CACpB,EACAwqN,aAAqB,SAAU3nN,EAAImoN,GAEjC,IAAI3qN,KAAKqrE,UAAT,CAGgB,MAAZs/I,GACF9zM,GAAM,6CAER,IAAI+zM,EAAM5qN,KAAK6qN,sBACfD,EAAI3mN,KAAK,CACPzB,GAAIA,EACJmoN,SAAUA,IAIZC,EAAI/kM,MAAK,SAAUljB,EAAGC,GACpB,OAAOA,EAAE+nN,SAAWhoN,EAAEgoN,QACxB,GAbA,CAcF,GACIE,GAAwB,SAA+B99L,EAAGmnJ,EAAUzrE,GAEtE,IADA,IAAImiH,EAAM79L,EAAE89L,sBACH7mN,EAAI,EAAGA,EAAI4mN,EAAI5oN,OAAQgC,IAC9B4mN,EAAI5mN,GAAGxB,GAAG0xK,EAAUzrE,EAExB,EACA0hH,GAAMW,gBAAkB,WACtB,IAAI/9L,EAAI/sB,KACJmvB,EAAKpC,EAAEoC,GACX,IAAIpC,EAAEg+L,kBAAN,CAGEh+L,EAAEg+L,mBAAoB,EAExB,IAAIC,EAAW,SAASA,EAASC,GAC/B,IAAIl+L,EAAEs+C,UAAN,CAGA,GAAIl8C,EAAGyhI,iBAAmB,GAAI7jI,EAAE09L,iBAAmB19L,EAAEm+L,UAAW,CAC9DL,GAAsB99L,GAAG,EAAMk+L,GAC/B,IAAIxiH,EAAYylB,KAChBnhG,EAAE5tB,OAAO4tB,EAAE29L,eACX,IAAIS,EAAUp+L,EAAEy9L,aAAet8F,UACHxrH,IAAxBqqB,EAAEu9L,oBACJv9L,EAAEu9L,kBAAoBa,EAAU1iH,QAEZ/lG,IAAlBqqB,EAAEs9L,cACJt9L,EAAEs9L,YAAc,GAElBt9L,EAAEs9L,mBACwB3nN,IAAtBqqB,EAAEq9L,kBACJr9L,EAAEq9L,gBAAkB,GAEtB,IAAItmJ,EAAWqnJ,EAAU1iH,EACzB17E,EAAEq9L,iBAAmBtmJ,EACrB/2C,EAAEw9L,eAAiBzmJ,EAGnB/2C,EAAEu9L,kBAAoBv9L,EAAEu9L,kBAAoB,EAAIxmJ,EAAW,EAC3D/2C,EAAE09L,gBAAiB,CACrB,MACEI,GAAsB99L,GAAG,EAAOk+L,GAElCl+L,EAAEm+L,WAAY,EACd55L,GAAsB05L,EA3BtB,CA4BF,EACA15L,GAAsB05L,EAjCtB,CAkCF,EAEA,IAAII,GAAe,SAAsBzrN,GACvCK,KAAK03D,KAAK/3D,EACZ,EACI0rN,GAAKD,GACLE,GAAMD,GAAG9jN,UACb+jN,GAAIC,gBAAkB,CAAC,aAAc,SAAU,WAAY,kBAAmB,gBAAiB,kBAC/FD,GAAI5zJ,KAAO,SAAU/3D,GACnB,IAAIotB,EAAI/sB,KACR+sB,EAAEptB,QAAUA,EACZotB,EAAEoC,GAAKxvB,EAAQwvB,GACf,IAAIq8L,EAAMz+L,EAAE+d,UAAYnrC,EAAQwvB,GAAG2b,YAC/Bw2I,EAAkBv0J,EAAEoC,GAAGjpB,SAG3B,GAAIo7K,EAAiB,CACnB,IAAIn+K,EAAWm+K,EAAgBn+K,SAC3B8qL,EAAO9qL,EAAS8qL,KAChBw9B,EAAe,iCACf1zH,EAAY,gCACZ2zH,EAAmE,MAAzCvoN,EAASg5G,eAAesvG,GAItD,GAHID,EAAIzzH,UAAU1gF,QAAQ0gF,GAAa,IACrCyzH,EAAIzzH,WAAayzH,EAAIzzH,WAAa,IAAM,IAAMA,IAE3C2zH,EAAyB,CAC5B,IAAIrpG,EAAal/G,EAASE,cAAc,SACxCg/G,EAAW74G,GAAKiiN,EAChBppG,EAAWspG,YAAc,IAAM5zH,EAAY,2BAC3Ck2F,EAAK1xG,aAAa8lC,EAAY4rE,EAAKlvG,SAAS,GAC9C,CAEA,IAAI6sI,EAAgBtqC,EAAgBlgF,iBAAiBoqH,GACjD15L,EAAW85L,EAAcrqC,iBAAiB,YAC7B,WAAbzvJ,GACF2B,GAAK,4FAET,CACA1G,EAAEwwL,UAAY,MAAC76M,OAAWA,OAAWA,OAAWA,EAAW,GAE3DqqB,EAAEwlL,eAAiB,CAAC,IAAM,KAAO,GAAK,GAAK,GAAK,KAAO,KAGvDxlL,EAAE8wL,UAAY,CACZhD,KAAM,KACN/2J,KAAM,KACNg7J,SAAU,KACV+M,YAAa,KACbvM,UAAU,EACVwM,WAAY,CAAC,KAAM,MACnB3R,SAAS,GAEXptL,EAAEoxL,SAAW,CACXC,qBAAsB,IAExBrxL,EAAE+1L,UAAY,CACZpkK,MAAO,KACPy7J,SAAS,EAETx8D,cAAe,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MAC9C6lE,qBAAsB,KACtBR,kBAAkB,EAClBr/L,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpCo/L,QAAS,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,OAE1Ch2L,EAAEg/L,QAAU,EACZh/L,EAAE+oJ,QAAUn2K,EAAQm2K,QACpB/oJ,EAAE8oJ,MAAQl2K,EAAQk2K,MAClB9oJ,EAAEuoJ,oBAAsB31K,EAAQ21K,oBAChCvoJ,EAAEwoJ,kBAAoB51K,EAAQ41K,kBAC9BxoJ,EAAE6oJ,iBAAmBj2K,EAAQi2K,iBAC7B7oJ,EAAEi/L,kBAAoBrsN,EAAQ61K,WAC9BzoJ,EAAEk/L,iBAAmB9pG,EAASxiH,EAAQ69E,YAAc79E,EAAQ69E,WAAa,KACzEzwD,EAAEyoJ,WAAa71K,EAAQ61K,WACvBzoJ,EAAE0oJ,kBAAoB91K,EAAQ81K,kBAC9B1oJ,EAAEm/L,uBAAyB,EAAIn/L,EAAE0oJ,kBACjC1oJ,EAAEo/L,kBAAoB,EACtBp/L,EAAEq/L,YAAc,EAChBr/L,EAAEs/L,mBAAqB,EACvBt/L,EAAEu/L,eAAgB,EAClBv/L,EAAEw/L,qBAAuB,GACzBx/L,EAAE2oJ,oBAAsB/1K,EAAQ+1K,oBAChC3oJ,EAAE8yL,qBAAuBlgN,EAAQ+1K,oBAAsB/1K,EAAQ+1K,oBAC/D3oJ,EAAE4oJ,kBAAoBh2K,EAAQg2K,kBAC9B5oJ,EAAE+2L,mBAAqBnkN,EAAQg2K,kBAAoBh2K,EAAQg2K,kBAC3D5oJ,EAAE2xL,gBAAkB,IACpB3xL,EAAEowE,SAAW,GACbpwE,EAAE89L,sBAAwB,GAC1B99L,EAAEonJ,uBAAyB,CAEzB/R,WAAY,IACZk2C,SAAU,IACVkU,UAAW,IACXC,UAAW,IACXC,WAAY,KAEd3/L,EAAE4/L,qBACF5/L,EAAE6/L,sBACF7/L,EAAE8/L,8BACJ,EACAvB,GAAIjrE,OAAS,SAAUu0B,EAAWxsE,GAChC,IAAIr7E,EAAI/sB,KACJmvB,EAAKpC,EAAEoC,GAGPnvB,KAAKqrE,YAGS,SAAdupG,EAIc,YAAdA,IAIc,QAAdA,GAAqC,WAAdA,GAAwC,SAAdA,GAAwBzlJ,EAAGy+H,oBAAoC,SAAdgnB,GAAsC,WAAdA,GAAwC,UAAdA,IACtJ7nJ,EAAE+/L,8BAEc,aAAdl4C,GACF7nJ,EAAEoyL,WAAW,UAAU,GAEP,SAAdvqC,GAAsC,WAAdA,GAAwC,UAAdA,IACpD7nJ,EAAEmwL,uCACFnwL,EAAEggM,gBAAgBhgM,EAAE+d,YAEtB/d,EAAEoyL,WAAW,QAAQ,GACrBpyL,EAAEoyL,WAAW,QAAQ,GACrBn/M,KAAK8qN,kBACL9qN,KAAKg9F,UAhBHjwE,EAAEy2D,UAJFz2D,EAAEigM,OAqBN,EACA1B,GAAI9nI,QAAU,WACZ,IAAIz2D,EAAI/sB,KACR+sB,EAAEs+C,WAAY,EACdt+C,EAAEoC,GAAG2kJ,oBACL,IAAK,IAAI9vK,EAAI,EAAGA,EAAI+oB,EAAEowE,SAASn7F,OAAQgC,IAAK,CAC1C,IAAIipN,EAAUlgM,EAAEowE,SAASn5F,GACrBpB,EAAIqqN,EACJtsH,EAAM/9F,EAAE8C,QACXi7F,EAAI3kB,KAAO2kB,EAAI5kC,qBAAqBj5D,MAAM69F,EAAK/9F,EAAEqQ,KACpD,CAaA,GAZA8Z,EAAEowE,SAAW,GACbpwE,EAAE89L,sBAAwB,GAC1B99L,EAAEqrL,oBAAsB,GACpBrrL,EAAEwvL,gBACJxvL,EAAEwvL,eAAe1gJ,aAEf9uC,EAAEgwL,eACJhwL,EAAEgwL,cAAclhJ,aAEd9uC,EAAEiwL,gBACJjwL,EAAEiwL,eAAenhJ,aAEf9uC,EAAEmgM,aACJ,IACE/pN,SAASsvB,KAAKvO,YAAY6I,EAAEmgM,aAC9B,CAAE,MAAOjnN,GACP,CAGN,EACAqlN,GAAIt8B,WAAa,WACf,OAAO,CACT,EACA,CAACuO,GAAO+b,GAAOC,GAAOO,GAAOyM,GAAO4D,IAAOv/M,SAAQ,SAAUysD,GAC3DqsD,GAAO4nG,GAAKj0J,EACd,IAEA,IAAI81J,GAAc,IAAO,GAErBC,GAAO,CACTC,gBAAiB,SAAyBlpH,GACxC,OAAO,WACL,IAAI/9F,EAAOpG,KACP+sB,EAAI/sB,KAAKu3D,SACb,IAAInxD,EAAKknN,gBAAT,CAGElnN,EAAKknN,iBAAkB,EAEzB,IAAIC,EAAcptG,EAAkB,YAAW,WAC7CpzF,EAAEoyL,WAAW,QAAQ,GACrBpyL,EAAEoyL,WAAW,QAAQ,GACrBpyL,EAAEiwE,QACJ,GAAGmH,EAAKqpH,oBACJj8B,EAAU,SAAiBrd,EAAUu5C,GACvC,IAAIhlH,EAAYylB,KACZw/F,EAAgB3gM,EAAEu9L,kBAClBqD,EAAa5gM,EAAEw9L,eACfqD,EAAO,GACPrgC,EAASxgK,EAAEoC,GAAGo+J,SACd/vG,EAAazwD,EAAE6sE,gBAIds6E,GACHnnJ,EAAEsrL,0BAEJ,MAAO,EAAM,CAEX,IAAI10L,EAAMuqG,KACNpqD,EAAWngD,EAAM8kF,EACjBolH,EAAgBlqM,EAAM8pM,EAC1B,GAAIE,EAAaR,GAAa,CAI5B,IAAIW,EAAgBX,IAAej5C,EAAWw5C,EAAgB,GAC9D,GAAIG,GAAiB1pH,EAAK4pH,YAAcD,EACtC,KAEJ,MACE,GAAI55C,GACF,GAAIpwG,GAAYqgC,EAAK6pH,QAAUL,GAAc7pJ,GAAYqgC,EAAK8pH,WAAaP,EACzE,WAEG,GAAIG,GAAiB1pH,EAAK+pH,cAAgBf,GAC/C,MAGJ,IAAIgB,EAAWhqH,EAAKiqH,IAAIhoN,EAAMo3E,EAAY+vG,GAC1C,KAAI4gC,EAASnsN,OAAS,GAKpB,MAJA,IAAK,IAAIgC,EAAI,EAAGA,EAAImqN,EAASnsN,OAAQgC,IACnC4pN,EAAK3pN,KAAKkqN,EAASnqN,GAKzB,CAGI4pN,EAAK5rN,OAAS,IAChBmiG,EAAKkqH,OAAOjoN,EAAMwnN,IACb15C,GAAY/vE,EAAKmqH,aAAaloN,EAAMwnN,EAAMpwI,EAAY+vG,IACzDggC,IAGN,EACI5C,EAAWxmH,EAAKwmH,UAAY36F,GAChCjjG,EAAEknJ,aAAasd,EAASo5B,EAASvkN,GA5DjC,CA6DF,CACF,GAKEmoN,GAAyC,WAC3C,SAASA,EAA0Bl3D,GACjC,IAAIm3D,EAAuBzrN,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK+sH,GAC/F/sB,EAAgB/iG,KAAMuuN,GACtBvuN,KAAKyuN,SAAW,IAAIt9F,GACpBnxH,KAAK0uN,SAAW,IAAIv9F,GACpBnxH,KAAK2uN,YAAc,IAAIx9F,GACvBnxH,KAAK4uN,KAAO,GACZ5uN,KAAKq3J,OAASA,EACdr3J,KAAKwuN,qBAAuBA,CAC9B,CAsKA,OArKA9tG,EAAa6tG,EAA2B,CAAC,CACvC1qN,IAAK,YACL/B,MAAO,SAAmB+B,GACb,MAAPA,GACFgT,GAAM,oCAER,IAAI43M,EAAWzuN,KAAKyuN,SAChB/hD,EAAM1sK,KAAKyuN,SAASvrN,IAAIW,GAK5B,OAJK6oK,IACHA,EAAM,IAAIl7C,GACVi9F,EAASj8M,IAAI3O,EAAK6oK,IAEbA,CACT,GACC,CACD7oK,IAAK,cACL/B,MAAO,SAAqB+B,EAAK2F,GACpB,MAAP3F,GACF7D,KAAK6uN,UAAUhrN,GAAKtD,IAAIiJ,EAE5B,GACC,CACD3F,IAAK,iBACL/B,MAAO,SAAwB+B,EAAK2F,GACvB,MAAP3F,GACF7D,KAAK6uN,UAAUhrN,GAAK,UAAU2F,EAElC,GACC,CACD3F,IAAK,uBACL/B,MAAO,SAA8B+B,GACnC,OAAW,MAAPA,EACK,EAEA7D,KAAK6uN,UAAUhrN,GAAKylF,IAE/B,GACC,CACDzlF,IAAK,sBACL/B,MAAO,SAA6B48F,GAClC,IAAIl1F,EAAKk1F,EAAIl1F,KACTqvK,EAAU74K,KAAK0uN,SAASxrN,IAAIsG,GAC5BslN,EAAU9uN,KAAKq3J,OAAO34D,GAC1B1+F,KAAK+uN,eAAel2C,EAASrvK,GAC7BxJ,KAAKgvN,YAAYF,EAAStlN,GAC1BxJ,KAAK0uN,SAASl8M,IAAIhJ,EAAIslN,EACxB,GACC,CACDjrN,IAAK,sBACL/B,MAAO,SAA6B48F,GAClC,IAAIl1F,EAAKk1F,EAAIl1F,KACTqvK,EAAU74K,KAAK0uN,SAASxrN,IAAIsG,GAChCxJ,KAAK+uN,eAAel2C,EAASrvK,GAC7BxJ,KAAK0uN,SAAS,UAAUllN,EAC1B,GACC,CACD3F,IAAK,mBACL/B,MAAO,SAA0B48F,GAC/B,IAAIl1F,EAAKk1F,EAAIl1F,KACTqvK,EAAU74K,KAAK0uN,SAASxrN,IAAIsG,GAC5BylN,EAASjvN,KAAKq3J,OAAO34D,GACzB,OAAOm6E,IAAYo2C,CACrB,GACC,CACDprN,IAAK,YACL/B,MAAO,SAAmB48F,GACxB,OAAO1+F,KAAKkvN,iBAAiBxwH,IAAQ1+F,KAAKwuN,qBAAqB9vH,EACjE,GACC,CACD76F,IAAK,cACL/B,MAAO,SAAqBqtN,GAC1B,IAAIR,EAAc3uN,KAAK2uN,YACrBC,EAAO5uN,KAAK4uN,KACVQ,EAAST,EAAYzrN,IAAIisN,GAM7B,OALKC,IACHA,EAAS,IAAIj+F,GACbw9F,EAAYn8M,IAAI28M,EAAKC,GACrBR,EAAK3qN,KAAKkrN,IAELC,CACT,GACC,CACDvrN,IAAK,WACL/B,MAAO,SAAkB+B,EAAKsrN,GAC5B,OAAOnvN,KAAKqvN,YAAYF,GAAKjsN,IAAIW,EACnC,GACC,CACDA,IAAK,MACL/B,MAAO,SAAa48F,EAAKywH,GACvB,IAAItrN,EAAM7D,KAAKq3J,OAAO34D,GAClBnpE,EAAQv1B,KAAKsvN,SAASzrN,EAAKsrN,GAM/B,OAHa,MAAT55L,GACFv1B,KAAKuvN,oBAAoB7wH,GAEpBnpE,CACT,GACC,CACD1xB,IAAK,kBACL/B,MAAO,SAAyB48F,EAAKywH,GACnC,IAAItrN,EAAM7D,KAAK0uN,SAASxrN,IAAIw7F,EAAIl1F,MAC5B+rB,EAAQv1B,KAAKsvN,SAASzrN,EAAKsrN,GAC/B,OAAO55L,CACT,GACC,CACD1xB,IAAK,WACL/B,MAAO,SAAkB+B,EAAKsrN,GAC5B,OAAOnvN,KAAKqvN,YAAYF,GAAK9qN,IAAIR,EACnC,GACC,CACDA,IAAK,MACL/B,MAAO,SAAa48F,EAAKywH,GACvB,IAAItrN,EAAM7D,KAAKq3J,OAAO34D,GACtB,OAAO1+F,KAAKwvN,SAAS3rN,EAAKsrN,EAC5B,GACC,CACDtrN,IAAK,WACL/B,MAAO,SAAkB+B,EAAKsrN,EAAK55L,GACjCA,EAAM1xB,IAAMA,EACZ7D,KAAKqvN,YAAYF,GAAK38M,IAAI3O,EAAK0xB,EACjC,GACC,CACD1xB,IAAK,MACL/B,MAAO,SAAa48F,EAAKywH,EAAK55L,GAC5B,IAAI1xB,EAAM7D,KAAKq3J,OAAO34D,GACtB1+F,KAAKyvN,SAAS5rN,EAAKsrN,EAAK55L,GACxBv1B,KAAKuvN,oBAAoB7wH,EAC3B,GACC,CACD76F,IAAK,cACL/B,MAAO,SAAqB+B,EAAKsrN,GAC/BnvN,KAAKqvN,YAAYF,GAAK,UAAUtrN,EAClC,GACC,CACDA,IAAK,SACL/B,MAAO,SAAiB48F,EAAKywH,GAC3B,IAAItrN,EAAM7D,KAAKq3J,OAAO34D,GACtB1+F,KAAK0vN,YAAY7rN,EAAKsrN,EACxB,GACC,CACDtrN,IAAK,gBACL/B,MAAO,SAAuB+B,GAC5B,IAAIgwB,EAAQ7zB,KACZA,KAAK4uN,KAAKhkN,SAAQ,SAAUukN,GAC1B,OAAOt7L,EAAM67L,YAAY7rN,EAAKsrN,EAChC,GACF,GAGC,CACDtrN,IAAK,aACL/B,MAAO,SAAoB48F,GACzB,IAAIl1F,EAAKk1F,EAAIl1F,KACT3F,EAAM7D,KAAK0uN,SAASxrN,IAAIsG,GAE5BxJ,KAAK2vN,oBAAoBjxH,GACzB,IAAIkxH,EAAuB5vN,KAAKwuN,qBAAqB9vH,GAKrD,OAJIkxH,GAEF5vN,KAAK6vN,cAAchsN,GAEd+rN,GAA2D,IAAnC5vN,KAAK8vN,qBAAqBjsN,EAC3D,KAEK0qN,CACT,CAjL6C,GAmLzCwB,GAAU,GACVC,GAAW,GACXC,IAAY,EACZC,GAAW,EACXC,GAAY,KACZC,GAAgB,EAChBC,GAAc,KACdC,GAAU,KACVC,GAAU,KACVC,GAAa,GACbC,GAAc,GACdC,GAAoB,GACpBC,GAAY,IACZC,GAAe,GACfC,GAAkB,GAClBC,GAAgB,GAChBC,GAAuB,IACvBC,GAAe,EAEfC,GAAgB,CAClB1/B,QAAS,UACT2/B,UAAW,YACXC,YAAa,eAEXC,GAAe9gG,GAAW,CAC5B+mC,OAAQ,KACRm3D,qBAAsB1+F,GACtBuhG,YAAa,KACbC,eAAgB,KAChBC,iBAAkB,KAClBC,kBAAmB,KACnBtyI,UAAW2wC,GACX4hG,qBAAqB,EACrBC,uBAAuB,IAErBC,GAAsB,SAA6Bp6J,EAAUq6J,GAC/D,IAAIxrN,EAAOpG,KACXoG,EAAKmxD,SAAWA,EAChBnxD,EAAKyrN,WAAa,GAClB,IAAI1tH,EAAOitH,GAAaQ,GACxBluG,GAAOt9G,EAAM+9F,GACb/9F,EAAK4/I,OAAS,IAAIuoE,GAA0BpqH,EAAKkzD,OAAQlzD,EAAKqqH,sBAC9DpoN,EAAKinN,iBACP,EACIyE,GAAOH,GAAoBpqN,UAC/BuqN,GAAKC,QAAUd,GAGfa,GAAKE,gBAAkB,SAAUC,GAC/B,IAAI7rN,EAAOpG,KAEX,OADAoG,EAAK8rN,aAAe9rN,EAAK8rN,cAAgB,CAAC,EACnC9rN,EAAK8rN,aAAaD,GAAQ7rN,EAAK8rN,aAAaD,IAAS,EAC9D,EAGAH,GAAKK,uBAAyB,SAAUF,GACtC,IAAI7rN,EAAOpG,KACPoyN,EAAUhsN,EAAK8rN,aAAaG,QAAUjsN,EAAK8rN,aAAaG,SAAW,CAAC,EACpEC,EAASF,EAAQH,GAAQG,EAAQH,IAAS,GAC9C,OAAOK,CACT,EAGAR,GAAKS,gBAAkB,WACrB,IAAInsN,EAAOpG,KACPikH,EAAI79G,EAAKosN,cAAgBpsN,EAAKosN,eAAiB,IAAIpyG,EAAc,YAAW,SAAUz9G,EAAGC,GAC3F,OAAOA,EAAE6vN,KAAO9vN,EAAE8vN,IACpB,IACA,OAAOxuG,CACT,EAGA6tG,GAAKY,qBAAuB,WAC1B,IAAItsN,EAAOpG,KACP2yN,EAAMvsN,EAAKwsN,mBAAqBxsN,EAAKwsN,oBAAsB,CAAC,EAChE,OAAOD,CACT,EACAb,GAAKe,WAAa,SAAUn0H,EAAKjlB,EAAIw8F,EAASk5C,EAAK2D,GACjD,IAAI1sN,EAAOpG,KACP+sB,EAAI/sB,KAAKu3D,SACT6lB,EAAOrwD,EAAEoC,GAAGiuD,OACZ4oE,EAAShmJ,KAAKgmJ,OAClB,IAAKvsE,GAAe,IAATA,EAAG5vE,GAAoB,IAAT4vE,EAAG34E,GAAWiO,MAAM0qE,EAAG5vE,IAAMkF,MAAM0qE,EAAG34E,KAAO49F,EAAI3qE,WAAa2qE,EAAIzf,UACzF,OAAO,KAET,IAAK74E,EAAKqrN,qBAAuB/yH,EAAI66C,WAAanzI,EAAKsrN,uBAAyBhzH,EAAIQ,WAClF,OAAO,KAKT,GAHW,MAAPiwH,IACFA,EAAMhpN,KAAK0I,KAAKowH,GAAK7hD,EAAO64F,KAE1Bk5C,EAAMc,GACRd,EAAMc,QACD,GAAI7yI,GAAQ+yI,IAAahB,EAAMe,GACpC,OAAO,KAET,IAAI75L,EAAQlwB,KAAK4iB,IAAI,EAAGomM,GACpB4D,EAAat5I,EAAG34E,EAAIu1B,EACpB28L,EAAav5I,EAAG5vE,EAAIwsB,EACpB48L,EAAmBlmM,EAAEmmM,qBAAqBx0H,EAAKroE,GACnD,IAAKr2B,KAAKk/E,UAAUwf,EAAKu0H,GACvB,OAAO,KAET,IAUIhB,EAVAkB,EAAWntE,EAAO9iJ,IAAIw7F,EAAKywH,GAO/B,GAJIgE,GAAYA,EAASC,cACvBD,EAASC,aAAc,EACvBD,EAASE,QAAQC,kBAAoBH,EAAS3qL,OAE5C2qL,EACF,OAAOA,EAWT,GANElB,EADEc,GAAchD,GACTA,GACEgD,GAAc/C,GAChBA,GAEA7pN,KAAK0I,KAAKkkN,EAAa/C,IAAYA,GAExC+C,EAAaxC,IAAWyC,EAAa1C,GACvC,OAAO,KAGT,IAAIiD,EAAOntN,EAAK4rN,gBAAgBC,GAG5BuB,EAAMD,EAAKA,EAAKvxN,OAAS,GACzByxN,EAAY,WACd,OAAOrtN,EAAKstN,eAAezB,EAAMe,IAAe5sN,EAAKutN,WAAW1B,EAAMe,EACxE,EAGKQ,IACHA,EAAMD,EAAKA,EAAKvxN,OAAS,IAItBwxN,IACHA,EAAMC,KAIJD,EAAIhrL,MAAQgrL,EAAI5oJ,UAAYooJ,IAC9BQ,EAAMC,KASR,IAPA,IAMIG,EANAC,EAAe,SAAsBC,GACvC,OAAOA,GAAcA,EAAWb,mBAAqBA,CACvD,EACIc,EAASjB,GAAUA,IAAW7B,GAAc1/B,QAC5CyiC,EAAiBlB,GAAUA,IAAW7B,GAAcE,YACpD8C,EAAenB,GAAUA,IAAW7B,GAAcC,UAE7C1iN,EAAI2gN,EAAM,EAAG3gN,GAAK0hN,GAAU1hN,IAAK,CACxC,IAAI3L,EAAImjJ,EAAO9iJ,IAAIw7F,EAAKlwF,GACxB,GAAI3L,EAAG,CACL+wN,EAAc/wN,EACd,KACF,CACF,CACA,IAAIqxN,EAAaN,GAAeA,EAAYhnC,QAAUuiC,EAAM,EAAIyE,EAAc,KAC1E1C,EAAY,WACdsC,EAAIzzN,QAAQ+tG,UAAUomH,EAAWb,QAAQjjM,OAAQ8jM,EAAWp0M,EAAG,EAAGo0M,EAAW1rL,MAAO0rL,EAAWzrL,OAAQ+qL,EAAI5oJ,UAAW,EAAGooJ,EAAYD,EACvI,EAKA,GAFAS,EAAIzzN,QAAQg+E,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACxCy1I,EAAIzzN,QAAQqzB,UAAUogM,EAAI5oJ,UAAW,EAAGooJ,EAAYf,GAChD4B,EAAaK,GAEfhD,SACK,GAAI2C,EAAaD,GAAc,CAIpC,IAAII,EAOF,OADA5tN,EAAK+tN,aAAaz1H,EAAKk1H,EAAYhnC,MAAQ,GACpCgnC,EANP,IAAK,IAAI/5J,EAAK+5J,EAAYhnC,MAAO/yH,EAAKs1J,EAAKt1J,IACzCq6J,EAAa9tN,EAAKysN,WAAWn0H,EAAKjlB,EAAIw8F,EAASp8G,EAAIo3J,GAAcC,WAEnEA,GAKJ,KAAO,CACL,IAAIkD,EACJ,IAAKL,IAAWC,IAAmBC,EACjC,IAAK,IAAII,EAAMlF,EAAM,EAAGkF,GAAOpE,GAAUoE,IAAO,CAC9C,IAAIz9J,EAAKovF,EAAO9iJ,IAAIw7F,EAAK21H,GACzB,GAAIz9J,EAAI,CACNw9J,EAAax9J,EACb,KACF,CACF,CAEF,GAAIi9J,EAAaO,GAIf,OADAhuN,EAAK+tN,aAAaz1H,EAAKywH,GAChBiF,EAETZ,EAAIzzN,QAAQu2B,UAAUk9L,EAAI5oJ,UAAW,GACrC4oJ,EAAIzzN,QAAQs2B,MAAMA,EAAOA,GACzBr2B,KAAKqxN,YAAYmC,EAAIzzN,QAAS2+F,EAAKjlB,EAAIw5I,GAAkB,GACzDO,EAAIzzN,QAAQs2B,MAAM,EAAIA,EAAO,EAAIA,GACjCm9L,EAAIzzN,QAAQu2B,WAAWk9L,EAAI5oJ,UAAW,EACxC,CAcA,OAbAuoJ,EAAW,CACTrzM,EAAG0zM,EAAI5oJ,UACPyoJ,QAASG,EACT5mC,MAAOuiC,EACP94L,MAAOA,EACPmS,MAAOwqL,EACPvqL,OAAQsqL,EACRE,iBAAkBA,GAEpBO,EAAI5oJ,WAAazkE,KAAK0I,KAAKmkN,EAAa5C,IACxCoD,EAAIc,UAAUrwN,KAAKkvN,GACnBntE,EAAOxzI,IAAIksF,EAAKywH,EAAKgE,GACrB/sN,EAAKmuN,qBAAqBf,GACnBL,CACT,EACArB,GAAK0C,mBAAqB,SAAUpsH,GAClC,IAAK,IAAIpkG,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAC/BhE,KAAKy0N,kBAAkBrsH,EAAKpkG,GAEhC,EACA8tN,GAAK2C,kBAAoB,SAAU/1H,GACjC,IAAIt4F,EAAOpG,KACPgmJ,EAAS5/I,EAAK4/I,OACdopE,EAAS,GACT33I,EAAUuuE,EAAO0uE,UAAUh2H,GAC/B,GAAKjnB,EAAL,CAIA,IAAK,IAAI03I,EAAMc,GAAUd,GAAOe,GAAUf,IAAO,CAC/C,IAAI55L,EAAQywH,EAAO2uE,gBAAgBj2H,EAAKywH,GACpC55L,GACF65L,EAAOnrN,KAAKsxB,EAEhB,CACA,IAAIq/L,EAAsB5uE,EAAO6uE,WAAWn2H,GAC5C,GAAIk2H,EACF,IAAK,IAAI5wN,EAAI,EAAGA,EAAIorN,EAAOptN,OAAQgC,IAAK,CACtC,IAAI8wN,EAAS1F,EAAOprN,GAChBwvN,EAAMsB,EAAOzB,QAGjBG,EAAIF,kBAAoBwB,EAAOtsL,MAG/BssL,EAAO1B,aAAc,EAGrBhtN,EAAK2uN,oBAAoBvB,EAC3B,CAIFptN,EAAK4uN,gBAAgBt2H,EA1BrB,CA2BF,EACAozH,GAAKiD,oBAAsB,SAAUvB,GAE/BA,EAAIF,kBAAoB9C,GAAagD,EAAIhrL,OAC3CxoC,KAAKi1N,cAAczB,EAEvB,EACA1B,GAAKyC,qBAAuB,SAAUf,GAIpC,IAAIptN,EAAOpG,KACPuzN,EAAOntN,EAAK4rN,gBAAgBwB,EAAI/qL,QAChC+qL,EAAI5oJ,UAAY4oJ,EAAIhrL,MAAQioL,IAAe+C,EAAI0B,gBAAkBxE,GACnEhgG,GAAgB6iG,EAAMC,GAEtBA,EAAI0B,gBAER,EACApD,GAAKmD,cAAgB,SAAUzB,GAC7B,IAAIptN,EAAOpG,KACPiyN,EAAOuB,EAAI/qL,OACX8qL,EAAOntN,EAAK4rN,gBAAgBC,GAC5BjsE,EAAShmJ,KAAKgmJ,OAIlBt1B,GAAgB6iG,EAAMC,GACtBA,EAAInB,SAAU,EAKd,IADA,IAAIiC,EAAYd,EAAIc,UACXtwN,EAAI,EAAGA,EAAIswN,EAAUtyN,OAAQgC,IAAK,CACzC,IAAImvN,EAAWmB,EAAUtwN,GACzBgiJ,EAAO0pE,YAAYyD,EAAStvN,IAAKsvN,EAASvmC,MAC5C,CACAh8D,GAAW0jG,GAIX,IAAIhC,EAASlsN,EAAK+rN,uBAAuBF,GACzCK,EAAOruN,KAAKuvN,EACd,EACA1B,GAAK6B,WAAa,SAAU1B,EAAMkD,GAChC,IAAI/uN,EAAOpG,KACPuzN,EAAOntN,EAAK4rN,gBAAgBC,GAC5BuB,EAAM,CAAC,EAUX,OATAD,EAAKtvN,KAAKuvN,GACVA,EAAIc,UAAY,GAChBd,EAAI/qL,OAASwpL,EACbuB,EAAIhrL,MAAQriC,KAAKwI,IAAI0hN,GAAa8E,GAClC3B,EAAI5oJ,UAAY,EAChB4oJ,EAAIF,iBAAmB,EACvBE,EAAI0B,eAAiB,EACrB1B,EAAIpjM,OAAShqB,EAAKmxD,SAAS69J,oBAAoB5B,EAAIhrL,MAAOgrL,EAAI/qL,QAC9D+qL,EAAIzzN,QAAUyzN,EAAIpjM,OAAOC,WAAW,MAC7BmjM,CACT,EACA1B,GAAK4B,eAAiB,SAAUzB,EAAMkD,GAIpC,IAHA,IAAI/uN,EAAOpG,KACPuzN,EAAOntN,EAAK4rN,gBAAgBC,GAC5BK,EAASlsN,EAAK+rN,uBAAuBF,GAChCjuN,EAAI,EAAGA,EAAIsuN,EAAOtwN,OAAQgC,IAAK,CACtC,IAAIwvN,EAAMlB,EAAOtuN,GACjB,GAAIwvN,EAAIhrL,OAAS2sL,EAUf,OATA3B,EAAInB,SAAU,EACdmB,EAAI5oJ,UAAY,EAChB4oJ,EAAIF,iBAAmB,EACvBE,EAAI0B,eAAiB,EACrBtkG,GAAW4iG,EAAIc,WACfd,EAAIzzN,QAAQg+E,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACxCy1I,EAAIzzN,QAAQqzB,UAAU,EAAG,EAAGogM,EAAIhrL,MAAOgrL,EAAI/qL,QAC3CioF,GAAgB4hG,EAAQkB,GACxBD,EAAKtvN,KAAKuvN,GACHA,CAEX,CACF,EACA1B,GAAKqC,aAAe,SAAUz1H,EAAKywH,GACjC,IAAI/oN,EAAOpG,KACPikH,EAAI79G,EAAKmsN,kBACTI,EAAMvsN,EAAKssN,uBACX7uN,EAAM7D,KAAKq3J,OAAO34D,GAClB22H,EAAc1C,EAAI9uN,GACtB,GAAIwxN,EAEFA,EAAYzoC,MAAQzmL,KAAKwI,IAAI0mN,EAAYzoC,MAAOuiC,GAChDkG,EAAYjtH,KAAK4V,MAAMtf,GACvB22H,EAAY5C,OACZxuG,EAAEkR,WAAWkgG,OACR,CACL,IAAIC,EAAM,CACRltH,KAAM1J,EAAIy3B,QAAQnY,MAAMtf,GACxBkuF,MAAOuiC,EACPsD,KAAM,EACN5uN,IAAKA,GAEPogH,EAAEhgH,KAAKqxN,GACP3C,EAAI9uN,GAAOyxN,CACb,CACF,EACAxD,GAAKvgC,QAAU,SAAUtb,GAMvB,IALA,IAAI7vK,EAAOpG,KACPikH,EAAI79G,EAAKmsN,kBACTI,EAAMvsN,EAAKssN,uBACX6C,EAAW,GACXvvE,EAAS5/I,EAAK4/I,OACThiJ,EAAI,EAAGA,EAAIgtN,GAAchtN,IAAK,CACrC,KAAIigH,EAAE36B,OAAS,GAiBb,MAhBA,IAAIgsI,EAAMrxG,EAAExrF,MACR50B,EAAMyxN,EAAIzxN,IACV66F,EAAM42H,EAAIltH,KAAK,GACfotH,EAAcxvE,EAAOwpE,SAAS9wH,EAAK42H,EAAI1oC,OAM3C,GAHA+lC,EAAI9uN,GAAO,MAGP2xN,EAAJ,CAGAD,EAAStxN,KAAKqxN,GACd,IAAI77I,EAAKrzE,EAAKkrN,eAAe5yH,GAC7Bt4F,EAAKysN,WAAWn0H,EAAKjlB,EAAIw8F,EAASq/C,EAAI1oC,MAAOqkC,GAAc1/B,QAH3D,CAOJ,CACA,OAAOgkC,CACT,EACAzD,GAAKkD,gBAAkB,SAAUt2H,GAC/B,IAAIt4F,EAAOpG,KACPikH,EAAI79G,EAAKmsN,kBACTI,EAAMvsN,EAAKssN,uBACX7uN,EAAM7D,KAAKq3J,OAAO34D,GAClB42H,EAAM3C,EAAI9uN,GACH,MAAPyxN,IACsB,IAApBA,EAAIltH,KAAKpmG,QAGXszN,EAAI7C,KAAO7iG,GACX3L,EAAEkR,WAAWmgG,GACbrxG,EAAExrF,MAEFk6L,EAAI9uN,GAAO,MAGXyxN,EAAIltH,KAAKm3D,QAAQ7gE,GAGvB,EACAozH,GAAK2D,UAAY,SAAUjzN,GACzBxC,KAAK6xN,WAAW5tN,KAAKzB,EACvB,EACAsvN,GAAK4D,WAAa,SAAUlzN,GAC1BkuH,GAAgB1wH,KAAK6xN,WAAYrvN,EACnC,EACAsvN,GAAKzE,gBAAkBD,GAAKC,gBAAgB,CAC1CG,mBAAoBuD,GACpB/C,QAAS2C,GACT1C,WAAY2C,GACZ1C,cAAe2C,GACf9C,YAAa+C,GACb1C,IAAK,SAAahoN,EAAM6vK,EAASsX,GAC/B,OAAOnnL,EAAKmrL,QAAQtb,EAASsX,EAC/B,EACA8gC,OAAQ,SAAgBjoN,EAAMwnN,GAC5B,IAAK,IAAI5pN,EAAI,EAAGA,EAAIoC,EAAKyrN,WAAW7vN,OAAQgC,IAAK,CAC/C,IAAIxB,EAAK4D,EAAKyrN,WAAW7tN,GACzBxB,EAAGorN,EACL,CACF,EACAU,aAAc,SAAsBloN,EAAMwnN,EAAM33C,EAASsX,GACvD,IAAK,IAAIvpL,EAAI,EAAGA,EAAI4pN,EAAK5rN,OAAQgC,IAE/B,IADA,IAAIokG,EAAOwlH,EAAK5pN,GAAGokG,KACVn9F,EAAI,EAAGA,EAAIm9F,EAAKpmG,OAAQiJ,IAAK,CACpC,IAAIwuE,EAAK2uB,EAAKn9F,GAAGq2E,cACjB,GAAI6+C,GAAuB1mD,EAAI8zG,GAC7B,OAAO,CAEX,CAEF,OAAO,CACT,EACAo9B,SAAU,SAAkBvkN,GAC1B,OAAOA,EAAKmxD,SAAS48G,uBAAuBq4C,SAC9C,IAGF,IAAImJ,GAAe,EACfC,IAAU,EACVC,GAAS,EACT9iD,GAAU,KACVy6C,GAAqB,GACrBsI,GAAwB,GACxB9H,GAAU,IACVC,GAAa,GACbC,GAAgB,GAChBH,GAAc,GACdgI,GAAa,EACbC,GAAmB,IACnBC,GAAe,KACfC,IAA2B,EAI3BC,GAAsB,SAA6B5+J,GACrD,IAAInxD,EAAOpG,KACP+sB,EAAI3mB,EAAKmxD,SAAWA,EACpBpoC,EAAKpC,EAAEoC,GACX/oB,EAAKgwN,cAAgB,CAAC,EAEtBhwN,EAAKiwN,UAAW,EAChBjwN,EAAKkwN,qBAAuBpoG,KAAmB,EAAI8nG,GACnD5vN,EAAKmwN,UAAW,EAChBnwN,EAAKowN,WAAarnM,EAAGixD,aACrBh6E,EAAKqwN,0BAA4Bt2G,EAAkB,YAAW,WAC5D/5G,EAAKswN,sBAAsBtwN,EAAKowN,YAChCpwN,EAAKowN,WAAWj3D,QAAQn5J,EAAKowN,WAC/B,GAAGV,IACH/oM,EAAEknJ,cAAa,SAAUC,EAAUvwJ,GAC7BA,EAAMvd,EAAKkwN,sBAAwBN,GACrC5vN,EAAKmwN,UAAW,EAEhBnwN,EAAKmwN,UAAW,CAEpB,GAAGxpM,EAAEonJ,uBAAuBu4C,YAC5B,IAAIiK,EAAQ,SAAeh0N,EAAGC,GAC5B,OAAOA,EAAE6vN,KAAO9vN,EAAE8vN,IACpB,EACArsN,EAAKwwN,YAAc,IAAIx2G,EAAc,WAAWu2G,GAChDvwN,EAAKinN,iBACP,EACIwJ,GAAOV,GAAoB5uN,UAC3BuvN,GAAc,EACdC,GAAU5wN,KAAK4iB,IAAI,EAAG,IAAM,EAChC8tM,GAAKG,UAAY,SAAUv9I,EAAI01I,GAC7B,IAAI94L,EAAQlwB,KAAK4iB,IAAI,EAAGomM,GACpBtlN,EAAI1D,KAAK0I,KAAK4qE,EAAG5vE,EAAIwsB,GACrBv1B,EAAIqF,KAAK0I,KAAK4qE,EAAG34E,EAAIu1B,GACrBjG,EAASpwB,KAAKu3D,SAAS69J,oBAAoBvrN,EAAG/I,GAC9C4+E,EAAQ,CACVl2E,GAAIstN,KAAgBA,GAAcC,GAClCt9I,GAAIA,EACJmzG,MAAOuiC,EACP3mL,MAAO3+B,EACP4+B,OAAQ3nC,EACRsvB,OAAQA,EACRrwB,QAASqwB,EAAOC,WAAW,MAC3B+3E,KAAM,GACN6uH,UAAW,GACXxE,KAAM,GAKJt6C,EAAMz4F,EAAM3/E,QACZ4lE,GAAM+Z,EAAMjG,GAAG3vC,GACf87B,GAAM8Z,EAAMjG,GAAG1vC,GAKnB,OAFAouI,EAAI9hJ,MAAMA,EAAOA,GACjB8hJ,EAAI7hJ,UAAUqvC,EAAIC,GACX8Z,CACT,EACAm3I,GAAKnyI,UAAY,SAAU0jB,EAAM6tE,EAASk5C,GACxC,IAAI/oN,EAAOpG,KACP+sB,EAAI3mB,EAAKmxD,SACTpoC,EAAKpC,EAAEoC,GACPiuD,EAAOjuD,EAAGiuD,OACVi5I,EAAWjwN,EAAKiwN,SAMpB,GALAjwN,EAAKiwN,UAAW,EAKL,MAAPlH,EAEF,GADAA,EAAMhpN,KAAK0I,KAAKowH,GAAK7hD,EAAO64F,IACxBk5C,EAAMyG,GACRzG,EAAMyG,QACD,GAAIx4I,GAAQ21F,IAAWo8C,EAAM0G,GAClC,OAAO,KAGXzvN,EAAK8wN,2BAA2B/H,EAAK/mH,GACrC,IAGI3uB,EAEA09I,EALAC,EAAchxN,EAAKgwN,cACnB//L,EAAQlwB,KAAK4iB,IAAI,EAAGomM,GACpB5rI,EAAS6zI,EAAYjI,GAAOiI,EAAYjI,IAAQ,GAEhDkI,EAAcjxN,EAAKkxN,gBAAgBnI,EAAK/mH,GAExCmvH,EAAkB,WACpB,IAAIC,EAAiB,SAAwBhpN,GAE3C,GADApI,EAAK8wN,2BAA2B1oN,EAAG45F,GAC/BhiG,EAAKkxN,gBAAgB9oN,EAAG45F,GAE1B,OADA+uH,EAAYC,EAAY5oN,IACjB,CAEX,EACIipN,EAAY,SAAmBxjI,GACjC,IAAIkjI,EAGJ,IAAK,IAAI3oN,EAAI2gN,EAAMl7H,EAAK2hI,IAAUpnN,GAAKA,GAAKqnN,GAAQrnN,GAAKylF,EACvD,GAAIujI,EAAehpN,GACjB,KAGN,EACAipN,EAAU,GACVA,GAAW,GAGX,IAAK,IAAIzzN,EAAIu/E,EAAOvhF,OAAS,EAAGgC,GAAK,EAAGA,IAAK,CAC3C,IAAI07E,EAAQ6D,EAAOv/E,GACf07E,EAAMjI,SACRi5C,GAAgBntC,EAAQ7D,EAE5B,CACF,EACA,GAAK23I,EAOH,OAAO9zI,EAHPg0I,IAKF,IAAIG,EAAQ,WACV,IAAKj+I,EAAI,CACPA,EAAKquB,KACL,IAAK,IAAI9jG,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAC/B67H,GAAkBpmD,EAAI2uB,EAAKpkG,GAAGs9E,cAElC,CACA,OAAO7H,CACT,EACIu9I,EAAY,SAAmB7yH,GACjCA,EAAOA,GAAQ,CAAC,EAChB,IAAI5e,EAAQ4e,EAAK5e,MACjBmyI,IACA,IAAIlnM,EAAOipD,EAAG5vE,EAAIwsB,GAASojD,EAAG34E,EAAIu1B,GAClC,GAAI7F,EAAOylM,GACT,OAAO,KAET,IAAIv2I,EAAQt5E,EAAK4wN,UAAUv9I,EAAI01I,GAC/B,GAAa,MAAT5pI,EAAe,CACjB,IAAItjF,EAAQshF,EAAOlsE,QAAQkuE,GAAS,EACpChC,EAAOtqD,OAAOh3B,EAAO,EAAGy9E,EAC1B,WAA2Bh9E,IAAhByhG,EAAK3nB,QAAwB2nB,EAAK3nB,SAE3C+G,EAAOr1D,QAAQwxD,GAOjB,OAAOA,CACT,EACA,GAAIt5E,EAAKmwN,WAAaF,EAEpB,OAAO,KAQT,IAHA,IAAI32I,EAAQ,KACRi4I,EAAkBvvH,EAAKpmG,OAAS2zN,GAChCiC,GAAqBvB,EAChBryN,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACXu2F,EAAKmE,EAAI7d,SAASC,SAClBsuI,EAAS70H,EAAGs9H,eAAiBt9H,EAAGs9H,gBAAkB,CAAC,EAInDC,EAAgB1I,EAAOD,GAC3B,GAAI2I,EAGFp4I,EAAQo4I,MAHV,CAMA,KAAKp4I,GAASA,EAAM0oB,KAAKpmG,QAAU21N,IAAoBp3F,GAAyB7gD,EAAMjG,GAAIilB,EAAIpd,kBAG5F5B,EAAQs3I,EAAU,CAChBx6I,QAAQ,EACR+I,MAAO7F,KAIJA,GACH,OAAO,KAMPy3I,GAAaS,EAEfxxN,EAAK2xN,WAAWr4I,EAAOgf,GAGvBt4F,EAAK4xN,eAAet4I,EAAOgf,EAAKywH,EAAKl5C,GAEvCv2F,EAAM0oB,KAAKnkG,KAAKy6F,GAChB0wH,EAAOD,GAAOzvI,CAzBd,CA0BF,CAIA,OAAIy3I,IAIAS,EAEK,KAEFr0I,EACT,EAIAszI,GAAKoB,yBAA2B,SAAU9I,EAAKl5C,GAC7C,OAAOk5C,CACT,EACA0H,GAAKmB,eAAiB,SAAUt4I,EAAOgf,EAAKywH,EAAKl5C,GAC/C,IAAI7vK,EAAOpG,KACP+sB,EAAI/sB,KAAKu3D,SACTx3D,EAAU2/E,EAAM3/E,QAChB05E,EAAKilB,EAAIpd,cACA,IAAT7H,EAAG5vE,GAAoB,IAAT4vE,EAAG34E,GAAY49F,EAAI3qE,YAGrCo7L,EAAM/oN,EAAK6xN,yBAAyB9I,EAAKl5C,GAEvClpJ,EAAEmrM,gBAAgBn4N,GAAS,GAG3BgtB,EAAEorM,kBAAkBp4N,EAAS2+F,EAAK,KAAM,KAAMywH,EAAK+G,IAGnDnpM,EAAEmrM,gBAAgBn4N,GAAS,GAE/B,EACA82N,GAAKS,gBAAkB,SAAUnI,EAAK/mH,GACpC,IAAIhiG,EAAOpG,KACPujF,EAASn9E,EAAKgwN,cAAcjH,GAChC,IAAK5rI,GAA4B,IAAlBA,EAAOvhF,OACpB,OAAO,EAGT,IADA,IAAIo2N,EAAkB,EACbp0N,EAAI,EAAGA,EAAIu/E,EAAOvhF,OAAQgC,IAAK,CACtC,IAAI07E,EAAQ6D,EAAOv/E,GAGnB,GAAI07E,EAAM+yI,KAAO,EACf,OAAO,EAIT,GAAI/yI,EAAMjI,QACR,OAAO,EAET2gJ,GAAmB14I,EAAM0oB,KAAKpmG,MAChC,CAGA,OAAIo2N,IAAoBhwH,EAAKpmG,MAI/B,EACA60N,GAAKK,2BAA6B,SAAU/H,EAAK/mH,GAC/C,IAAI7kB,EAASvjF,KAAKo2N,cAAcjH,GAChC,GAAK5rI,EAOL,IAAK,IAAIv/E,EAAI,EAAGA,EAAIu/E,EAAOvhF,OAAQgC,IAAK,CAKtC,IAJA,IAAI07E,EAAQ6D,EAAOv/E,GACfmpB,GAAU,EAGLliB,EAAI,EAAGA,EAAIm9F,EAAKpmG,OAAQiJ,IAC/B,GAAIy0E,EAAM0oB,KAAK,KAAOA,EAAKn9F,GAAI,CAC7BkiB,EAASliB,EACT,KACF,CAEF,GAAIkiB,EAAS,EAEXntB,KAAKq4N,gBAAgB34I,OAMvB,KAAIzH,EAAI9qD,EACR,IAASliB,EAAI,EAAGA,EAAIy0E,EAAM0oB,KAAKpmG,OAAQiJ,IACrC,GAAIy0E,EAAM0oB,KAAKn9F,KAAOm9F,EAAKnwB,EAAIhtE,GAAI,CAGjCjL,KAAKq4N,gBAAgB34I,GACrB,KACF,CAPY,CAShB,CACF,EACAm3I,GAAKyB,uBAAyB,SAAUlwH,EAAMpxE,GAM5C,IALA,IAAI5wB,EAAOpG,KACPq/I,EAASxlC,EAAQzR,EAAK,IAIjBpkG,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAK/B,IAJA,IAAIsxN,EAAMj2E,EAAS,KAAOj3C,EAAKpkG,GAC3B06F,EAAM2gD,EAASj3C,EAAKpkG,GAAKokG,EAAKpkG,GAAG06F,IACjCnE,EAAKmE,EAAI7d,SAASC,SAClBsuI,EAAS70H,EAAGs9H,eAAiBt9H,EAAGs9H,gBAAkB,CAAC,EAC9CrpN,EAAIonN,GAAQpnN,GAAKqnN,GAAQrnN,IAAK,CACrC,IAAIkxE,EAAQ0vI,EAAO5gN,GACdkxE,IAMD41I,GAAOlvN,EAAK6xN,yBAAyBv4I,EAAMktG,SAAW0oC,EAAI1oC,OAG9D51J,EAAO0oD,EAAOgf,EAAK42H,GACrB,CAEJ,EACAuB,GAAK0B,WAAa,WAGhB,IAFA,IAAInyN,EAAOpG,KACPu4N,GAAa,EACR/pN,EAAIonN,GAAQpnN,GAAKqnN,GAAQrnN,IAAK,CACrC,IAAI+0E,EAASn9E,EAAKgwN,cAAc5nN,GAChC,GAAI+0E,GAAUA,EAAOvhF,OAAS,EAAG,CAC/Bu2N,GAAa,EACb,KACF,CACF,CACA,OAAOA,CACT,EACA1B,GAAKrC,mBAAqB,SAAUpsH,GAClC,IAAIhiG,EAAOpG,KACS,IAAhBooG,EAAKpmG,SAGToE,EAAKkwN,qBAAuBpoG,KAIR,IAAhB9lB,EAAKpmG,QAAiBoE,EAAKmyN,cAG/BnyN,EAAKkyN,uBAAuBlwH,GAAM,SAA0B1oB,EAAOgf,EAAK42H,GACtElvN,EAAKiyN,gBAAgB34I,EACvB,IACF,EACAm3I,GAAKwB,gBAAkB,SAAU34I,GAI/B,GADA1/E,KAAKs2N,qBAAuBpoG,MACxBxuC,EAAMjI,QAAV,CAIA,IAAI03I,EAAMzvI,EAAMktG,MACZxkF,EAAO1oB,EAAM0oB,KACb7kB,EAASvjF,KAAKo2N,cAAcjH,GAIhCz+F,GAAgBntC,EAAQ7D,GAGxBA,EAAMu3I,UAAY,GAClBv3I,EAAMjI,SAAU,EACZiI,EAAM5gE,cACR4gE,EAAM5gE,YAAY24D,SAAU,GAE9B,IAAK,IAAIzzE,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAIorN,EAAShnH,EAAKpkG,GAAG68E,SAASC,SAAS+2I,eACnCzI,IACFA,EAAOD,GAAO,KAElB,CArBA,CAsBF,EACA0H,GAAKH,sBAAwB,SAAUtuH,GACrC,IAAIhiG,EAAOpG,KAIXoG,EAAKkyN,uBAAuBlwH,GAAM,SAAuB1oB,EAAOgf,EAAK42H,GACnE,IAAIkD,EAAO94I,EAAM5gE,YASjB,GARK05M,IACHA,EAAO94I,EAAM5gE,YAAc1Y,EAAK4wN,UAAUt3I,EAAMjG,GAAIiG,EAAMktG,OAC1D4rC,EAAKC,SAAW/4I,EAChB84I,EAAKpwH,KAAO1oB,EAAM0oB,OAKfowH,EAAK/F,KACR,IAAK,IAAIzuN,EAAI,EAAGA,EAAIw0N,EAAKpwH,KAAKpmG,OAAQgC,IACpCoC,EAAK2xN,WAAWS,EAAMA,EAAKpwH,KAAKpkG,GAKtC,GACF,EAEA6yN,GAAK6B,yBAA2B,SAAUh6H,GACxC1+F,KAAKw2N,WAAWx4G,MAAMtf,GACtB1+F,KAAKy2N,2BACP,EACAI,GAAKkB,WAAa,SAAUr4I,EAAOgf,GACjC,IAAIt4F,EAAOpG,KACPikH,EAAI79G,EAAKwwN,YACT+B,EAAQj5I,EAAMu3I,UACd2B,EAAQD,EAAMC,MAAQD,EAAMC,OAAS,CAAC,EAG1C,IAAIl5I,EAAM5gE,YAAV,CAGA,GAAI4/E,EAAK,CACP,GAAIk6H,EAAMl6H,EAAIl1F,MACZ,OAEFmvN,EAAM10N,KAAKy6F,GACXk6H,EAAMl6H,EAAIl1F,OAAQ,CACpB,CACIk2E,EAAM+yI,MACR/yI,EAAM+yI,OACNxuG,EAAEkR,WAAWz1C,KAEbA,EAAM+yI,KAAO,EACbxuG,EAAEhgH,KAAKy7E,GAbT,CAeF,EACAm3I,GAAKtlC,QAAU,SAAUtb,GACvB,IAAI7vK,EAAOpG,KACPikH,EAAI79G,EAAKwwN,YACThJ,EAAO,GACPiL,EAAU,EACd,MAAOA,EAAU9C,GAAY,CAC3B,GAAiB,IAAb9xG,EAAE36B,OACJ,MAEF,IAAI5J,EAAQukC,EAAE60G,OAGd,GAAIp5I,EAAM5gE,YAERmlG,EAAExrF,WAKJ,GAAIinD,EAAM+4I,UAAY/4I,IAAUA,EAAM+4I,SAAS35M,YAE7CmlG,EAAExrF,WAGJ,GAAIinD,EAAMjI,QAERwsC,EAAExrF,UAFJ,CAKA,IAAIimE,EAAMhf,EAAMu3I,UAAU7+L,QACtBsmE,IAGFt4F,EAAK4xN,eAAet4I,EAAOgf,EAAKhf,EAAMktG,MAAO3W,GAC7C4iD,KAEkB,IAAhBjL,EAAK5rN,QAEP4rN,EAAK3pN,MAAK,GAImB,IAA3By7E,EAAMu3I,UAAUj1N,SAClBiiH,EAAExrF,MACFinD,EAAM+yI,KAAO,EAKT/yI,EAAM+4I,UACRryN,EAAK2yN,sBAAsBr5I,GAE7Bt5E,EAAK4yN,gBAxBP,CA0BF,CACA,OAAOpL,CACT,EACAiJ,GAAKkC,sBAAwB,SAAUr5I,GACrC,IAAIt5E,EAAOpG,KACPi5N,EAAgB7yN,EAAKgwN,cAAc12I,EAAMktG,OACzCssC,EAAWx5I,EAAM+4I,SACjBx2N,EAAQg3N,EAAc5hN,QAAQ6hN,GAIlC,KAAIj3N,EAAQ,GAAKi3N,EAASzhJ,SAA1B,CAIAwhJ,EAAch3N,GAASy9E,EAGvB,IAAK,IAAI17E,EAAI,EAAGA,EAAI07E,EAAM0oB,KAAKpmG,OAAQgC,IAAK,CAC1C,IAAI0tH,EAAKhyC,EAAM0oB,KAAKpkG,GAAG68E,SACnBtrD,EAAQm8F,EAAGmmG,eAAiBnmG,EAAGmmG,gBAAkB,CAAC,EAClDtiM,IACFA,EAAMmqD,EAAMktG,OAASltG,EAEzB,CAIAt5E,EAAK4yN,eAdL,CAeF,EACAnC,GAAKmC,cAAgB74G,EAAkB,YAAW,WAChD,IAAIpzF,EAAI/sB,KAAKu3D,SACbxqC,EAAEoyL,WAAW,QAAQ,GACrBpyL,EAAEoyL,WAAW,QAAQ,GACrBpyL,EAAEiwE,QACJ,GAAG,KACH65H,GAAKxJ,gBAAkBD,GAAKC,gBAAgB,CAC1CG,mBAAoBA,GACpBQ,QAASA,GACTC,WAAYA,GACZC,cAAeA,GACfH,YAAaA,GACbK,IAAK,SAAahoN,EAAM6vK,GACtB,OAAO7vK,EAAKmrL,QAAQtb,EACtB,EACAo4C,OAAQr+F,GACRs+F,aAAcz+F,GACd86F,SAAU,SAAkBvkN,GAC1B,OAAOA,EAAKmxD,SAAS48G,uBAAuBs4C,SAC9C,IAGF,IACI7rI,GADAu4I,GAAQ,CAAC,EAEb,SAAStyL,GAAQ9mC,EAAS2rB,GACxB,IAAK,IAAI1nB,EAAI,EAAGA,EAAI0nB,EAAO1pB,OAAQgC,IAAK,CACtC,IAAIs8H,EAAK50G,EAAO1nB,GAChBjE,EAAQ8gC,OAAOy/F,EAAGxgH,EAAGwgH,EAAG3hG,EAC1B,CACF,CACA,SAASy6L,GAAkBr5N,EAAS2rB,EAAQy5C,GAE1C,IADA,IAAIk0J,EACKr1N,EAAI,EAAGA,EAAI0nB,EAAO1pB,OAAQgC,IAAK,CACtC,IAAIs8H,EAAK50G,EAAO1nB,GACN,IAANA,IACFq1N,EAAU/4F,GAEZvgI,EAAQ8gC,OAAOy/F,EAAGxgH,EAAGwgH,EAAG3hG,EAC1B,CACA5+B,EAAQu5N,iBAAiBn0J,EAAarlD,EAAGqlD,EAAaxmC,EAAG06L,EAAQv5M,EAAGu5M,EAAQ16L,EAC9E,CACA,SAAS46L,GAAYx5N,EAASy5N,EAAgBC,GACxC15N,EAAQy9B,WACVz9B,EAAQy9B,YAGV,IADA,IAAIuhK,EAASy6B,EACJx1N,EAAI,EAAGA,EAAI+6L,EAAO/8L,OAAQgC,IAAK,CACtC,IAAIs8H,EAAKy+D,EAAO/6L,GAChBjE,EAAQ8gC,OAAOy/F,EAAGxgH,EAAGwgH,EAAG3hG,EAC1B,CACA,IAAIqgK,EAASy6B,EACTC,EAAaD,EAAU,GAC3B15N,EAAQkmC,OAAOyzL,EAAW55M,EAAG45M,EAAW/6L,GACxC,IAAS36B,EAAI,EAAGA,EAAIg7L,EAAOh9L,OAAQgC,IAAK,CAClCs8H,EAAK0+D,EAAOh7L,GAChBjE,EAAQ8gC,OAAOy/F,EAAGxgH,EAAGwgH,EAAG3hG,EAC1B,CACI5+B,EAAQ09B,WACV19B,EAAQ09B,WAEZ,CACA,SAASk8L,GAAe55N,EAASy5N,EAAgBl8L,EAAIC,EAAIxQ,GACnDhtB,EAAQy9B,WACVz9B,EAAQy9B,YAEVz9B,EAAQg9B,IAAIO,EAAIC,EAAIxQ,EAAG,EAAa,EAAV5mB,KAAK40B,IAAQ,GACvC,IAAIgkK,EAASy6B,EACTI,EAAY76B,EAAO,GACvBh/L,EAAQkmC,OAAO2zL,EAAU95M,EAAG85M,EAAUj7L,GACtC,IAAK,IAAI36B,EAAI,EAAGA,EAAI+6L,EAAO/8L,OAAQgC,IAAK,CACtC,IAAIs8H,EAAKy+D,EAAO/6L,GAChBjE,EAAQ8gC,OAAOy/F,EAAGxgH,EAAGwgH,EAAG3hG,EAC1B,CACI5+B,EAAQ09B,WACV19B,EAAQ09B,WAEZ,CACA,SAASN,GAAOp9B,EAASu9B,EAAIC,EAAIxQ,GAC/BhtB,EAAQg9B,IAAIO,EAAIC,EAAIxQ,EAAG,EAAa,EAAV5mB,KAAK40B,IAAQ,EACzC,CACAo+L,GAAMz6B,eAAiB,SAAUj6L,GAC/B,OAAQm8E,KAASA,GAAO,CACtB,QAAW/5C,GACX,qBAAsBuyL,GACtB,eAAgBG,GAChB,kBAAmBI,GACnB,iBAAkBJ,GAClB,OAAUp8L,MACR14B,EACN,EAEA,IAAIo1N,GAAQ,CACZA,YAAoB,SAAU95N,EAAS2+F,EAAKo7H,EAAqBC,EAAWC,EAAaC,GACvF,IAAIltM,EAAI/sB,KACJ0+F,EAAIO,SACNlyE,EAAEmtM,SAASn6N,EAAS2+F,EAAKo7H,EAAqBC,EAAWC,EAAaC,GAEtEltM,EAAEotM,SAASp6N,EAAS2+F,EAAKo7H,EAAqBC,EAAWC,EAAaC,EAE1E,EACAJ,mBAA2B,SAAU95N,EAAS2+F,GAC5C,IAAI3xE,EAAI/sB,KACJ0+F,EAAIO,SACNlyE,EAAEqtM,gBAAgBr6N,EAAS2+F,GAE3B3xE,EAAEstM,gBAAgBt6N,EAAS2+F,EAE/B,EACAm7H,oBAA4B,SAAU95N,EAAS2+F,GAC7C,IAAI3xE,EAAI/sB,KACJ0+F,EAAIO,SACNlyE,EAAEutM,iBAAiBv6N,EAAS2+F,GAE5B3xE,EAAEwtM,iBAAiBx6N,EAAS2+F,EAEhC,EACAm7H,yBAAiC,SAAU95N,EAAS2+F,EAAK87H,EAAavkD,EAASk5C,EAAK2D,EAAQ2H,EAAaC,GACvG,IAAI3tM,EAAI/sB,KACJy5E,EAAK+gJ,EAAYlJ,eAAe5yH,GACpC,GAAa,IAATjlB,EAAG5vE,GAAoB,IAAT4vE,EAAG34E,EAArB,CAIA,IAAIqyN,EAAWqH,EAAY3H,WAAWn0H,EAAKjlB,EAAIw8F,EAASk5C,EAAK2D,GAC7D,GAAgB,MAAZK,EAAkB,CACpB,IAAI75L,EAAUohM,EAAW3tM,EAAG2xE,GAC5B,GAAgB,IAAZplE,EACF,OAEF,IAKIxZ,EAAG6e,EAAGymC,EAAIC,EAAIhzB,EAkBdsoL,EAvBA3+H,EAAQy+H,EAAY1tM,EAAG2xE,GACvB50D,EAAK2vC,EAAG3vC,GACVC,EAAK0vC,EAAG1vC,GACRlgC,EAAI4vE,EAAG5vE,EACP/I,EAAI24E,EAAG34E,EAET,GAAc,IAAVk7F,EAAa,CACf,IAAI4+H,EAAQJ,EAAYjJ,iBAAiB7yH,GACzCt5B,EAAKw1J,EAAM96M,EACXulD,EAAKu1J,EAAMj8L,EACX5+B,EAAQu2B,UAAU8uC,EAAIC,GACtBtlE,EAAQq2B,OAAO4lE,GACf3pD,EAAStlB,EAAE8tM,gBAAgB96N,GACtBsyC,GACHtlB,EAAEmrM,gBAAgBn4N,GAAS,GAE7B,IAAIi8E,EAAMw+I,EAAYhJ,kBAAkB9yH,GACxC5+E,EAAIk8D,EAAIl8D,EACR6e,EAAIq9C,EAAIr9C,CACV,MACE7e,EAAIgqB,EACJnL,EAAIoL,EAGU,IAAZzQ,IACFqhM,EAAiB56N,EAAQ+6N,YACzB/6N,EAAQ+6N,YAAcH,EAAiBrhM,GAEzCv5B,EAAQ+tG,UAAUqlH,EAASE,QAAQjjM,OAAQ+iM,EAASrzM,EAAG,EAAGqzM,EAAS3qL,MAAO2qL,EAAS1qL,OAAQ3oB,EAAG6e,EAAG90B,EAAG/I,GACpF,IAAZw4B,IACFv5B,EAAQ+6N,YAAcH,GAEV,IAAV3+H,IACFj8F,EAAQq2B,QAAQ4lE,GAChBj8F,EAAQu2B,WAAW8uC,GAAKC,GACnBhzB,GACHtlB,EAAEmrM,gBAAgBn4N,GAAS,GAGjC,MACEy6N,EAAYnJ,YAAYtxN,EAAS2+F,EAhDnC,CAkDF,GAEIq8H,GAAkB,WACpB,OAAO,CACT,EACIC,GAAmB,SAA0BjuM,EAAG2xE,GAClD,OAAO3xE,EAAEkuM,aAAav8H,EAAK,KAC7B,EACIw8H,GAAyB,SAAgCnuM,EAAG2xE,GAC9D,OAAO3xE,EAAEkuM,aAAav8H,EAAK,SAC7B,EACIy8H,GAAyB,SAAgCpuM,EAAG2xE,GAC9D,OAAO3xE,EAAEkuM,aAAav8H,EAAK,SAC7B,EACIg8H,GAAa,SAAoB3tM,EAAG2xE,GACtC,OAAOA,EAAIumE,kBACb,EACIm2D,GAAiB,SAAwBn1N,EAAGy4F,GAC9C,OAAOA,EAAImyD,OAAO,gBAAgBC,QAAUpyD,EAAIumE,kBAClD,EACA40D,GAAM1B,kBAAoB,SAAUp4N,EAAS2+F,EAAKu3E,EAASsX,EAAQ4hC,EAAKkM,GACtE,IAAItuM,EAAI/sB,KACJs7N,EAAUvuM,EAAE9N,KACdu7M,EAAcc,EAAQd,YACtBe,EAAcD,EAAQC,YACtBC,EAAcF,EAAQE,YACtBC,EAAcH,EAAQG,YACpBhiJ,EAAKilB,EAAIpd,cACTwxI,GAAgC,IAAvBuI,EAA8Bb,EAAYzI,QAAQZ,YAAc,KAC7E,GAAa,IAAT13I,EAAG5vE,GAAoB,IAAT4vE,EAAG34E,GAAY49F,EAAI3qE,aAGhCw5J,GAAUptD,GAAuB1mD,EAAI8zG,IAAS,CACjD,IAAIh0C,EAAS76C,EAAI66C,SACb24D,EAAUxzG,EAAImb,UAAUh5B,SAASC,SAASoxH,QAC9CnlL,EAAE2uM,oBAAoB37N,EAAS2+F,GAC/B3xE,EAAE4uM,yBAAyB57N,EAAS2+F,EAAK87H,EAAavkD,EAASk5C,EAAK2D,EAAQiI,GAAiBL,IACxFnhF,GAAW24D,GACdnlL,EAAE4uM,yBAAyB57N,EAAS2+F,EAAK68H,EAAatlD,EAASk5C,EAAK2D,EAAQkI,GAAkBI,IAE5F7hF,IAAW24D,IACbnlL,EAAE4uM,yBAAyB57N,EAAS2+F,EAAK88H,EAAavlD,EAASk5C,EAAK2D,EAAQoI,GAAwBE,IACpGruM,EAAE4uM,yBAAyB57N,EAAS2+F,EAAK+8H,EAAaxlD,EAASk5C,EAAK2D,EAAQqI,GAAwBC,KAEtGruM,EAAE6uM,mBAAmB77N,EAAS2+F,EAChC,CACF,EACAm7H,GAAMr0I,aAAe,SAAUzlF,EAASqoG,GAEtC,IADA,IAAIr7E,EAAI/sB,KACCgE,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACf+oB,EAAEskM,YAAYtxN,EAAS2+F,EACzB,CACF,EACAm7H,GAAMgC,mBAAqB,SAAU97N,EAASqoG,EAAM6tE,EAASsX,GAE3D,IADA,IAAIxgK,EAAI/sB,KACCgE,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACf+oB,EAAEorM,kBAAkBp4N,EAAS2+F,EAAKu3E,EAASsX,EAC7C,CACF,EACAssC,GAAMiC,gBAAkB,SAAU/7N,EAASqoG,EAAM6tE,EAASsX,GAExD,IADA,IAAIxgK,EAAI/sB,KACCgE,EAAI,EAAGA,EAAIokG,EAAKpmG,OAAQgC,IAAK,CACpC,IAAI06F,EAAM0J,EAAKpkG,GACV06F,EAAIO,UAGTlyE,EAAEorM,kBAAkBp4N,EAAS2+F,EAAKu3E,EAASsX,EAC7C,CACF,EACAssC,GAAMkC,oBAAsB,SAAUh8N,EAASqoG,EAAM6tE,EAASsX,GAC5D,IAAIxgK,EAAI/sB,KACJujF,EAASx2D,EAAE9N,KAAK+8M,YAAYt3I,UAAU0jB,EAAM6tE,GAChD,GAAI1yF,EACF,IAAK,IAAIv/E,EAAI,EAAGA,EAAIu/E,EAAOvhF,OAAQgC,IAAK,CACtC,IAAI07E,EAAQ6D,EAAOv/E,GACfy1E,EAAKiG,EAAMjG,GACF,IAATA,EAAG5vE,GAAoB,IAAT4vE,EAAG34E,GAGrBf,EAAQ+tG,UAAUpuB,EAAMtvD,OAAQqpD,EAAG3vC,GAAI2vC,EAAG1vC,GAAI0vC,EAAG5vE,EAAG4vE,EAAG34E,EACzD,MAGAisB,EAAE8uM,mBAAmB97N,EAASqoG,EAAM6tE,EAASsX,EAEjD,EAGA,IAAI0uC,GAAQ,CACZA,SAAiB,SAAUl8N,EAAS4gF,EAAMm5I,GACxC,IAAIoC,IAAYn5N,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GAC3Eo5N,IAAoBp5N,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GACnFq5N,IAAoBr5N,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GACnFgqB,EAAI/sB,KACJu6F,EAAK5Z,EAAKE,SAASC,SACvB,KAAIs7I,GAAsBz7I,EAAK5sD,aAK3BwmE,EAAG23G,SAAwB,MAAb33G,EAAGqnG,SAAkB7yL,MAAMwrF,EAAGqnG,OAAO,IAAvD,CAIA,IAAInoH,EACAqgJ,IACFrgJ,EAAKqgJ,EACL/5N,EAAQu2B,WAAWmjD,EAAG3vC,IAAK2vC,EAAG1vC,KAEhC,IAAIzQ,EAAU8iM,EAAoBz7I,EAAKkwE,OAAO,WAAW/uJ,MAAQ,EAC7Du6N,EAAcD,EAAoBz7I,EAAKkwE,OAAO,gBAAgB/uJ,MAAQ,EACtEs0J,EAAaz1E,EAAKkwE,OAAO,eAAe/uJ,MACxCwwC,EAAYquC,EAAKkwE,OAAO,cAAc/uJ,MACtC67L,EAAYh9G,EAAKkwE,OAAO,SAASC,QACjCv3H,EAAUonD,EAAKkwE,OAAO,YAAY/uJ,MAClCw6N,EAAuBhjM,EAAU+iM,EAEjCE,EAAwBjjM,EAAU+iM,EAClCG,EAAW,WACb,IAAIC,EAAgB15N,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAKu5N,EACrE,sBAAflmE,GACFrpI,EAAE2vM,eAAe38N,EAAS4gF,EAAM87I,GAChC1vM,EAAE4vM,qBAAqBh8I,EAAM5gF,EAASw6F,EAAGqnG,UAEzC7hM,EAAQg6B,UAAY4jK,EACpB59L,EAAQw5B,QAAUA,EAClBxM,EAAE2vM,eAAe38N,EAAS4gF,EAAM87I,GAChC1vM,EAAE6vM,aAAaj8I,EAAM5gF,EAASw6F,EAAGqnG,OAAQtvJ,GACzCvyC,EAAQw5B,QAAU,OAEtB,EAEIsjM,EAAc,WACXV,GAGLpvM,EAAEstM,gBAAgBt6N,EAAS4gF,EAC7B,EACIm8I,EAAe,WACZX,GAGLpvM,EAAEwtM,iBAAiBx6N,EAAS4gF,EAC9B,EACIo8I,EAAa,WACf,IAAIC,EAAej6N,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAKw5N,EACvFxvM,EAAEkwM,eAAel9N,EAAS4gF,EAAMq8I,EAClC,EACIE,EAAW,WACbnwM,EAAEowM,gBAAgBp9N,EAAS4gF,EAAM,KAAMu7I,EACzC,EACAn8N,EAAQy5B,SAAW,QACnB,IAAIu9H,EAAuC,QAA/Bp2E,EAAKkwE,OAAO,SAAS/uJ,MACjC,GAAIi1J,EAAO,CACT,IAAIC,EAAKr2E,EAAKkwE,OAAO,kBAAkBC,QACnCmG,EAAKt2E,EAAKkwE,OAAO,kBAAkBC,QACnCssE,EAAez8I,EAAKkwE,OAAO,iBAAiB/uJ,MAC5Cu7N,EAAwBf,EAAuBc,EACnDr9N,EAAQu2B,UAAU0gI,EAAIC,GACtBulE,EAASa,GACTN,EAAWM,GACXt9N,EAAQu2B,WAAW0gI,GAAKC,EAC1B,CACA6lE,IACAN,IACAO,IACAF,IACAK,IACIpD,GACF/5N,EAAQu2B,UAAUmjD,EAAG3vC,GAAI2vC,EAAG1vC,GAlE9B,CAoEF,GACIuzL,GAA0B,SAAiCC,GAC7D,IAAK,CAAC,UAAW,YAAYnmN,SAASmmN,GACpC,MAAM,IAAI5hN,MAAM,iBAElB,OAAO,SAAU5b,EAAS4gF,GACxB,GAAKA,EAAK5sD,UAAV,CAGA,IAAIuF,EAAUqnD,EAAKkwE,OAAO,GAAG5vJ,OAAOs8N,EAAmB,aAAaz7N,MACpE,GAAgB,IAAZw3B,EAAJ,CAGA,IAAIvM,EAAI/sB,KACJw9N,EAAWzwM,EAAEywM,WACbjjI,EAAK5Z,EAAKE,SAASC,SACnByK,EAAU5K,EAAKkwE,OAAO,GAAG5vJ,OAAOs8N,EAAmB,aAAazsE,QAChEtoH,EAAQ,EAAI+iD,EACZ36D,EAAQ+vD,EAAKkwE,OAAO,GAAG5vJ,OAAOs8N,EAAmB,WAAWz7N,MAChE/B,EAAQg6B,UAAYyO,EACA,SAAhB+xD,EAAGge,UAAwBilH,EAG7Bz9N,EAAQw5B,QAAU,QAFlBx5B,EAAQw5B,QAAU,OAIpBxM,EAAE0wM,iBAAiB19N,EAAS6wB,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAI0I,GAC1DvM,EAAE6vM,aAAaj8I,EAAM5gF,EAASw6F,EAAGqnG,OAAQ,QAdzC,CAJA,CAmBF,CACF,EACAq6B,GAAM5B,gBAAkBiD,GAAwB,WAChDrB,GAAM1B,iBAAmB+C,GAAwB,YACjDrB,GAAMW,aAAe,SAAUj8I,EAAM5gF,EAASy2J,EAAKhyJ,GACjD,IAEI04D,EAFAq9B,EAAK5Z,EAAKE,SAASC,SACnB48I,EAAY39N,EAEZ49N,GAAe,EACfH,EAAWx9N,KAAKw9N,WAChBI,EAAkBj9I,EAAKkwE,OAAO,qBAAqBC,QACnDp3H,EAAiBinD,EAAKkwE,OAAO,oBAAoBC,QACrD,GAAI0sE,EAAU,CACZ,IAAIK,EAAernE,EAAI1rJ,KAAK,KACxBgzN,EAAavjI,EAAGsjI,cAAgBtjI,EAAGsjI,eAAiBA,EACpDC,GACF5gK,EAAOn9D,EAAUw6F,EAAGrZ,UACpBy8I,GAAe,IAEfzgK,EAAOn9D,EAAU,IAAIohF,OACrBoZ,EAAGsjI,aAAeA,EAClBtjI,EAAGrZ,UAAYhkB,EAEnB,CACA,GAAIwgK,EAAU7hM,YAEZ,OAAQr3B,GACN,IAAK,SACHk5N,EAAU7hM,YAAY,CAAC,EAAG,IAC1B,MACF,IAAK,SACH6hM,EAAU7hM,YAAY+hM,GACtBF,EAAUhkM,eAAiBA,EAC3B,MACF,IAAK,QACHgkM,EAAU7hM,YAAY,IACtB,MAGN,IAAK8hM,IAAiBpjI,EAAG23G,QAKvB,OAJInyM,EAAQy9B,WACVz9B,EAAQy9B,YAEVz9B,EAAQkmC,OAAOuwH,EAAI,GAAIA,EAAI,IACnBj8D,EAAGge,UACT,IAAK,SACL,IAAK,OACL,IAAK,WACL,IAAK,cACH,IAAK,IAAIv0G,EAAI,EAAGA,EAAI,EAAIwyJ,EAAIx0J,OAAQgC,GAAK,EACvCjE,EAAQu5N,iBAAiB9iE,EAAIxyJ,GAAIwyJ,EAAIxyJ,EAAI,GAAIwyJ,EAAIxyJ,EAAI,GAAIwyJ,EAAIxyJ,EAAI,IAEnE,MACF,IAAK,WACL,IAAK,WACL,IAAK,WACH,IAAK,IAAI4L,EAAK,EAAGA,EAAK,EAAI4mJ,EAAIx0J,OAAQ4N,GAAM,EAC1C7P,EAAQ8gC,OAAO21H,EAAI5mJ,GAAK4mJ,EAAI5mJ,EAAK,IAEnC,MAGN7P,EAAU29N,EACNF,EACFz9N,EAAQs5B,OAAO6jC,GAEfn9D,EAAQs5B,SAINt5B,EAAQ87B,aAEV97B,EAAQ87B,YAAY,GAExB,EACAogM,GAAMU,qBAAuB,SAAUh8I,EAAM5gF,EAASy2J,GAEpDz2J,EAAQ47B,UAAY57B,EAAQ67B,YAE5B,IADA,IAAI+hK,EAAYh9G,EAAKkwE,OAAO,SAASC,QAC5B9sJ,EAAI,EAAGA,EAAI,EAAIwyJ,EAAIx0J,OAAQgC,GAAK,EAAG,CAC1C,IAAIkrM,EAAS,CAAC14C,EAAIxyJ,EAAI,GAAKwyJ,EAAIxyJ,GAAIwyJ,EAAIxyJ,EAAI,GAAKwyJ,EAAIxyJ,EAAI,IACpDhC,EAASmE,KAAK2iB,KAAKomL,EAAO,GAAKA,EAAO,GAAKA,EAAO,GAAKA,EAAO,IAC9D6uB,EAAS,CAAC7uB,EAAO,GAAKltM,GAASktM,EAAO,GAAKltM,GAC3Cg8N,EAAe,CAACD,EAAO,GAAKpgC,EAAY,EAAGogC,EAAO,GAAKpgC,EAAY,GACvE59L,EAAQy9B,YACRz9B,EAAQkmC,OAAOuwH,EAAIxyJ,GAAKg6N,EAAa,GAAIxnE,EAAIxyJ,EAAI,GAAKg6N,EAAa,IACnEj+N,EAAQ8gC,OAAO21H,EAAIxyJ,GAAKg6N,EAAa,GAAIxnE,EAAIxyJ,EAAI,GAAKg6N,EAAa,IACnEj+N,EAAQ8gC,OAAO21H,EAAIxyJ,EAAI,GAAIwyJ,EAAIxyJ,EAAI,IACnCjE,EAAQ09B,YACR19B,EAAQgqB,MACV,CACF,EACAkyM,GAAMgB,eAAiB,SAAUl9N,EAAS4gF,EAAMrnD,GAC9C,IAAIihE,EAAK5Z,EAAKE,SAASC,SACnBwiH,EAA6B,aAAhB/oG,EAAGge,SACf+qF,GACHtjM,KAAKi+N,cAAcl+N,EAAS4gF,EAAM,SAAU4Z,EAAGwnG,YAAaxnG,EAAGynG,YAAaznG,EAAG0nG,cAAe3oK,GAEhGt5B,KAAKi+N,cAAcl+N,EAAS4gF,EAAM,aAAc4Z,EAAG44D,KAAM54D,EAAG64D,KAAM74D,EAAG+nG,iBAAkBhpK,GACvFt5B,KAAKi+N,cAAcl+N,EAAS4gF,EAAM,aAAc4Z,EAAG44D,KAAM54D,EAAG64D,KAAM74D,EAAG8nG,iBAAkB/oK,GAClFgqK,GACHtjM,KAAKi+N,cAAcl+N,EAAS4gF,EAAM,SAAU4Z,EAAG2nG,UAAW3nG,EAAG4nG,UAAW5nG,EAAG6nG,cAAe9oK,EAE9F,EACA2iM,GAAMgC,cAAgB,SAAUl+N,EAAS4gF,EAAMqiC,EAAQljG,EAAG6e,EAAG4jB,EAAOjpB,GAClE,KAAIvqB,MAAM+Q,IAAW,MAALA,GAAa/Q,MAAM4vB,IAAW,MAALA,GAAa5vB,MAAMwzC,IAAmB,MAATA,GAAtE,CAGA,IAAIn8C,EAAOpG,KACPomL,EAAazlG,EAAKkwE,OAAO7tC,EAAS,gBAAgBlhH,MACtD,GAAmB,SAAfskL,EAAJ,CAGA,IAAI83C,EAA+D,WAA9Cv9I,EAAKkwE,OAAO7tC,EAAS,eAAelhH,MAAqB,OAAS,SACnFukL,EAAY1lG,EAAKkwE,OAAO7tC,EAAS,eAAelhH,MAChD67L,EAAYh9G,EAAKkwE,OAAO,SAASC,QACjCqtE,EAAcx9I,EAAKkwE,OAAO,WAAW/uJ,WACzBY,IAAZ42B,IACFA,EAAU6kM,GAEZ,IAAIC,EAAMr+N,EAAQ67F,yBACF,IAAZtiE,GAA+B,WAAd+sJ,IAEnBtmL,EAAQ67F,yBAA2B,kBACnCx1F,EAAKi4N,eAAet+N,EAAS,IAAK,IAAK,IAAK,GAC5CqG,EAAKq3N,iBAAiB19N,EAAS,IAAK,IAAK,IAAK,GAC9CqG,EAAKk4N,eAAe39I,EAAM5gF,EAASm+N,EAAgBvgC,EAAWvX,EAAYtmK,EAAG6e,EAAG4jB,GAChFxiD,EAAQ67F,yBAA2BwiI,GAGrC,IAAIxtM,EAAQ+vD,EAAKkwE,OAAO7tC,EAAS,gBAAgBlhH,MACjDsE,EAAKi4N,eAAet+N,EAAS6wB,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAI0I,GAC3DlzB,EAAKq3N,iBAAiB19N,EAAS6wB,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAI0I,GAC7DlzB,EAAKk4N,eAAe39I,EAAM5gF,EAASsmL,EAAWsX,EAAWvX,EAAYtmK,EAAG6e,EAAG4jB,EArB3E,CALA,CA2BF,EACA05K,GAAMqC,eAAiB,SAAU39I,EAAM5gF,EAASgqB,EAAM4zK,EAAWnoK,EAAO1V,EAAG6e,EAAG4jB,GAC5E,IAGI2a,EAHAnwC,EAAI/sB,KACJw9N,EAAWx9N,KAAKw9N,YAAwB,mBAAVhoM,EAC9BmoM,GAAe,EAEfY,EAAgBx+N,EAChB29L,EAAc,CAChB59K,EAAGA,EACH6e,EAAGA,GAEDtI,EAAQsqD,EAAKkwE,OAAO,eAAe/uJ,MACnCwnF,EAAOtpF,KAAKm/L,cAAcxB,EAAWtnK,GACrCmoM,EAAYzxM,EAAEywK,YAAYhoK,GAC9B,GAAIgoM,EAAU,CACZ,IAAIjoM,EAAQxI,EAAE0xM,eAAiB1xM,EAAE0xM,gBAAkB,GAC/C56N,EAAMurH,GAAW55F,GACjBkpM,EAAanpM,EAAM1xB,GACL,MAAd66N,GACFxhK,EAAOn9D,EAAU2+N,EACjBf,GAAe,IAEfzgK,EAAOn9D,EAAU,IAAIohF,OACrB5rD,EAAM1xB,GAAOq5D,EAEjB,CACKygK,IACC59N,EAAQy9B,WACVz9B,EAAQy9B,YAENggM,EAEFgB,EAAUxoM,KAAKj2B,EAAS,EAAG,EAAG,CAC5B+f,EAAG,EACH6e,EAAG,GACF,GAEH6/L,EAAUxoM,KAAKj2B,EAASupF,EAAM/mC,EAAOm7I,EAAaC,GAEhD59L,EAAQ09B,WACV19B,EAAQ09B,aAGZ19B,EAAUw+N,EACNf,IAEFz9N,EAAQu2B,UAAUxW,EAAG6e,GACrB5+B,EAAQq2B,OAAOmsB,GACfxiD,EAAQs2B,MAAMizD,EAAMA,IAET,WAATv/D,GAA8B,SAATA,IACnByzM,EACFz9N,EAAQgqB,KAAKmzC,GAEbn9D,EAAQgqB,QAGC,WAATA,GAA8B,SAATA,IACvBhqB,EAAQg6B,WAAaykM,EAAUG,eAAiBhhC,EAAY,IAAM6/B,EAAWl0I,EAAO,GACpFvpF,EAAQy5B,SAAW,QACfgkM,EACFz9N,EAAQs5B,OAAO6jC,GAEfn9D,EAAQs5B,UAGRmkM,IAEFz9N,EAAQs2B,MAAM,EAAIizD,EAAM,EAAIA,GAC5BvpF,EAAQq2B,QAAQmsB,GAChBxiD,EAAQu2B,WAAWxW,GAAI6e,GAE3B,EAEA,IAAIigM,GAAQ,CACZA,cAAsB,SAAU7+N,EAAS2+D,EAAK6zB,EAAIssI,EAAIn4J,EAAIC,EAAI7mD,EAAG6e,EAAG90B,EAAG/I,GAErE,KAAI4lE,GAAM,GAAKC,GAAM,GAAK98D,GAAK,GAAK/I,GAAK,GAGzC,IACEf,EAAQ+tG,UAAUpvC,EAAK6zB,EAAIssI,EAAIn4J,EAAIC,EAAI7mD,EAAG6e,EAAG90B,EAAG/I,EAClD,CAAE,MAAOmF,GACPwtB,GAAKxtB,EACP,CACF,EACA24N,mBAA2B,SAAU7+N,EAAS2+D,EAAK0c,EAAMn5E,EAAO68N,GAC9D,IAAI/xM,EAAI/sB,KACJqO,EAAM+sE,EAAKtpD,WACX2uG,EAAQpyH,EAAIyR,EACZ4gH,EAAQryH,EAAIswB,EACZogM,EAAW3jJ,EAAKjsD,KAAKvjB,QACrBozN,EAAkBD,EAASC,gBAAgBjiN,KAAKgiN,GAChDp3H,EAAMq3H,EAAgB5jJ,EAAM,iBAAkB,QAASn5E,GACvDuqE,EAASwyJ,EAAgB5jJ,EAAM,oBAAqB,QAASn5E,GAC7D02M,EAAQv9H,EAAK5yC,QACbowK,EAAQx9H,EAAK3yC,SACbw2L,EAA6B,EAAjB7jJ,EAAKmQ,UACjB2zI,EAASvmB,GAAmF,UAA1EqmB,EAAgB5jJ,EAAM,+BAAgC,QAASn5E,GAAqB,EAAIg9N,GAC1GE,EAASvmB,GAAoF,UAA3EomB,EAAgB5jJ,EAAM,gCAAiC,QAASn5E,GAAqB,EAAIg9N,GAC3G1kI,EAAKnf,EAAKyF,SAASC,SACnBs+I,EAAOJ,EAAgB5jJ,EAAM,kBAAmB,QAASn5E,GACzDo9N,EAAsB,SAATD,EACbE,EAAaN,EAAgB5jJ,EAAM,2BAA4B,QAASn5E,GAAS68N,EACjFzsL,EAAS2sL,EAAgB5jJ,EAAM,6BAA8B,QAASn5E,GACtEs9N,EAAO7gK,EAAIl2B,OAASk2B,EAAI8gK,QACxBC,EAAO/gK,EAAIj2B,QAAUi2B,EAAIghK,QAGzB,MAAQH,GAAQ,MAAQE,IAC1Bt8N,SAASsvB,KAAKxO,YAAYy6C,GAE1B6gK,EAAO7gK,EAAI8gK,QAAU9gK,EAAIl2B,OAASk2B,EAAI8sC,YACtCi0H,EAAO/gK,EAAIghK,QAAUhhK,EAAIj2B,QAAUi2B,EAAI6sC,aACvCpoG,SAASsvB,KAAKvO,YAAYw6C,IAG5B,IAAI70D,EAAI01N,EACJz+N,EAAI2+N,EAeR,GAdkE,SAA9DT,EAAgB5jJ,EAAM,mBAAoB,QAASn5E,KAEnD4H,EADgE,MAA9Dm1N,EAAgB5jJ,EAAM,mBAAoB,QAASn5E,GACjD+8N,EAAgB5jJ,EAAM,mBAAoB,UAAWn5E,GAASi9N,EAE9DF,EAAgB5jJ,EAAM,mBAAoB,UAAWn5E,IAGM,SAA/D+8N,EAAgB5jJ,EAAM,oBAAqB,QAASn5E,KAEpDnB,EADiE,MAA/Dk+N,EAAgB5jJ,EAAM,oBAAqB,QAASn5E,GAClD+8N,EAAgB5jJ,EAAM,oBAAqB,UAAWn5E,GAASk9N,EAE/DH,EAAgB5jJ,EAAM,oBAAqB,UAAWn5E,IAGpD,IAAN4H,GAAiB,IAAN/I,EAAf,CAIA,GAAY,YAAR6mG,EAAmB,CACrB,IAAItxE,EAAQlwB,KAAKyI,IAAIswN,EAASr1N,EAAGs1N,EAASr+N,GAC1C+I,GAAKwsB,EACLv1B,GAAKu1B,CACP,MAAO,GAAY,UAARsxE,EAAiB,CACtBtxE,EAAQlwB,KAAKwI,IAAIuwN,EAASr1N,EAAGs1N,EAASr+N,GAC1C+I,GAAKwsB,EACLv1B,GAAKu1B,CACP,CACA,IAAIvW,EAAI2gH,EAAQy+F,EAAS,EACrBS,EAAYX,EAAgB5jJ,EAAM,wBAAyB,QAASn5E,GACpE29N,EAAYZ,EAAgB5jJ,EAAM,wBAAyB,UAAWn5E,GAExE6d,GADgB,MAAd6/M,GACIT,EAASr1N,GAAK+1N,EAEfA,EAEP,IAAIC,EAAYb,EAAgB5jJ,EAAM,sBAAuB,QAASn5E,GAClE69N,EAAYd,EAAgB5jJ,EAAM,sBAAuB,UAAWn5E,GAEtE6d,GADgB,MAAd+/M,GACIX,EAASr1N,GAAKi2N,EAEfA,EAEP,IAAInhM,EAAI+hG,EAAQy+F,EAAS,EACrBY,EAAYf,EAAgB5jJ,EAAM,wBAAyB,QAASn5E,GACpE+9N,EAAYhB,EAAgB5jJ,EAAM,wBAAyB,UAAWn5E,GAExE08B,GADgB,MAAdohM,GACIZ,EAASr+N,GAAKk/N,EAEfA,EAEP,IAAIC,EAAYjB,EAAgB5jJ,EAAM,sBAAuB,QAASn5E,GAClEi+N,EAAYlB,EAAgB5jJ,EAAM,sBAAuB,UAAWn5E,GAEtE08B,GADgB,MAAdshM,GACId,EAASr+N,GAAKo/N,EAEfA,EAEH3lI,EAAGrZ,YACLphE,GAAK2gH,EACL9hG,GAAK+hG,EACLD,EAAQ,EACRC,EAAQ,GAEV,IAAIy/F,EAASpgO,EAAQ+6N,YACrB/6N,EAAQ+6N,YAAcwE,EACtB,IAAIc,EAAmBrzM,EAAE8tM,gBAAgB96N,GACrCsgO,GAAsB,EAQ1B,GAPe,OAAXhuL,GAAmB+tL,GACrBrzM,EAAEmrM,gBAAgBn4N,GAAS,GAC3BsgO,GAAsB,GACF,QAAXhuL,GAAqB+tL,IAC9BrzM,EAAEmrM,gBAAgBn4N,GAAS,GAC3BsgO,GAAsB,GAET,cAAX7zJ,EACE6yJ,IACFt/N,EAAQ+6B,OACJy/D,EAAGrZ,UACLnhF,EAAQq/N,KAAK7kI,EAAGrZ,YAEhBn0D,EAAEs0K,WAAWt0K,EAAEu0K,aAAalmH,IAAOplD,KAAKj2B,EAAS0gI,EAAOC,EAAOw+F,EAAQC,GACvEp/N,EAAQq/N,SAGZryM,EAAEuzM,cAAcvgO,EAAS2+D,EAAK,EAAG,EAAG6gK,EAAME,EAAM3/M,EAAG6e,EAAG90B,EAAG/I,GACrDu+N,GACFt/N,EAAQy8B,cAEL,CACL,IAAIu5C,EAAUh2E,EAAQwgO,cAAc7hK,EAAK8N,GACzCzsE,EAAQ47B,UAAYo6C,EACpBhpD,EAAEs0K,WAAWt0K,EAAEu0K,aAAalmH,IAAOplD,KAAKj2B,EAAS0gI,EAAOC,EAAOw+F,EAAQC,GACvEp/N,EAAQu2B,UAAUxW,EAAG6e,GACrB5+B,EAAQgqB,OACRhqB,EAAQu2B,WAAWxW,GAAI6e,EACzB,CACA5+B,EAAQ+6N,YAAcqF,EAClBE,GACFtzM,EAAEmrM,gBAAgBn4N,EAASqgO,EAlF7B,CAoFF,GAEII,GAAQ,CAAC,EAqGb,SAASC,GAAUt8N,EAAK2b,EAAG6e,EAAG6J,EAAOC,GACnC,IAAI4B,EAAStnC,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK,EACjFoB,EAAIq5B,YACJr5B,EAAI8hC,OAAOnmB,EAAIuqB,EAAQ1L,GACvBx6B,EAAI08B,OAAO/gB,EAAI0oB,EAAQ6B,EAAQ1L,GAC/Bx6B,EAAIm1N,iBAAiBx5M,EAAI0oB,EAAO7J,EAAG7e,EAAI0oB,EAAO7J,EAAI0L,GAClDlmC,EAAI08B,OAAO/gB,EAAI0oB,EAAO7J,EAAI8J,EAAS4B,GACnClmC,EAAIm1N,iBAAiBx5M,EAAI0oB,EAAO7J,EAAI8J,EAAQ3oB,EAAI0oB,EAAQ6B,EAAQ1L,EAAI8J,GACpEtkC,EAAI08B,OAAO/gB,EAAIuqB,EAAQ1L,EAAI8J,GAC3BtkC,EAAIm1N,iBAAiBx5M,EAAG6e,EAAI8J,EAAQ3oB,EAAG6e,EAAI8J,EAAS4B,GACpDlmC,EAAI08B,OAAO/gB,EAAG6e,EAAI0L,GAClBlmC,EAAIm1N,iBAAiBx5M,EAAG6e,EAAG7e,EAAIuqB,EAAQ1L,GACvCx6B,EAAIs5B,YACJt5B,EAAI4lB,MACN,CAlHAy2M,GAAMtN,qBAAuB,SAAUx0H,EAAKroE,GAC1C,IAAKA,EAAO,CACV,IAAI+mD,EAAOshB,EAAIvvE,KAAKiuD,OAChB64F,EAAUj2K,KAAK45F,gBACfu1H,EAAMhpN,KAAK0I,KAAKowH,GAAK7hD,EAAO64F,IAEhC5/I,EAAQlwB,KAAK4iB,IAAI,EAAGomM,EACtB,CACA,IAAIuR,EAAehiI,EAAImyD,OAAO,aAAaC,QAAUz6H,EACjDsqM,EAAUjiI,EAAImyD,OAAO,wBAAwBC,QACjD,QAAI4vE,EAAeC,EAIrB,EACAH,GAAMrD,gBAAkB,SAAUp9N,EAAS2+F,EAAKo7H,EAAqB/3H,EAAOihB,GAC1E,IAAI49G,IAAgB79N,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GAC/EgqB,EAAI/sB,KACR,GAAa,MAAT+hG,GACF,GAAI6+H,IAAkB7zM,EAAEmmM,qBAAqBx0H,GAC3C,YAEG,IAAc,IAAVqD,EACT,OAEF,GAAIrD,EAAIO,SAAU,CAChB,IAAI/vD,EAAQwvD,EAAImyD,OAAO,SACvB,IAAK3hH,IAAUA,EAAMptC,MACnB,OAEF,IAAI2kL,EAAgB15J,EAAE0pL,sBAAsB/3G,GAC5C3+F,EAAQs6B,UAAYosJ,EACpB1mL,EAAQu6B,aAAe,QACzB,KAAO,CACL,IAAI43K,EAAUxzG,EAAImb,UAAUh5B,SAASC,SAASoxH,QAC1C2uB,EAASniI,EAAImyD,OAAO,SACpBiwE,EAAWpiI,EAAImyD,OAAO,gBACtBkwE,EAAWriI,EAAImyD,OAAO,gBAC1B,GAAIqhD,KAAa2uB,IAAWA,EAAO/+N,UAAYg/N,IAAaA,EAASh/N,UAAYi/N,IAAaA,EAASj/N,OACrG,OAEF/B,EAAQs6B,UAAY,SACpBt6B,EAAQu6B,aAAe,QACzB,CACA,IACIm/C,EADAunJ,GAAiBlH,EAEjBA,IACFrgJ,EAAKqgJ,EACL/5N,EAAQu2B,WAAWmjD,EAAG3vC,IAAK2vC,EAAG1vC,KAElB,MAAVi5E,GACFj2F,EAAEmwM,SAASn9N,EAAS2+F,EAAK,KAAMsiI,EAAeJ,GAC1CliI,EAAI66C,WACNxsH,EAAEmwM,SAASn9N,EAAS2+F,EAAK,SAAUsiI,EAAeJ,GAClD7zM,EAAEmwM,SAASn9N,EAAS2+F,EAAK,SAAUsiI,EAAeJ,KAGpD7zM,EAAEmwM,SAASn9N,EAAS2+F,EAAKskB,EAAQg+G,EAAeJ,GAE9C9G,GACF/5N,EAAQu2B,UAAUmjD,EAAG3vC,GAAI2vC,EAAG1vC,GAEhC,EACAy2L,GAAMS,aAAe,SAAUlhO,GAC7B,IAAIw1B,EACJv1B,KAAKkhO,WAAalhO,KAAKkhO,YAAc,GACrC,IAAK,IAAIl9N,EAAI,EAAGA,EAAIhE,KAAKkhO,WAAWl/N,OAAQgC,IAE1C,GADAuxB,EAAQv1B,KAAKkhO,WAAWl9N,GACpBuxB,EAAMx1B,UAAYA,EACpB,OAAOw1B,EAOX,OAJAA,EAAQ,CACNx1B,QAASA,GAEXC,KAAKkhO,WAAWj9N,KAAKsxB,GACdA,CACT,EAIAirM,GAAMW,eAAiB,SAAUphO,EAAS2+F,GACxC,IAAIkiI,IAAgB79N,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GAE/Eq+N,EAAa1iI,EAAImyD,OAAO,cAAc2C,SACtC6tE,EAAY3iI,EAAImyD,OAAO,aAAaC,QAAU,KAC9CwwE,EAAc5iI,EAAImyD,OAAO,eAAe2C,SACxC+tE,EAAc7iI,EAAImyD,OAAO,eAAe2C,SACxCl6H,EAAUsnM,EAAgBliI,EAAIumE,mBAAqBvmE,EAAImyD,OAAO,gBAAgB/uJ,MAAQ,EACtF0/N,EAAiB9iI,EAAImyD,OAAO,wBAAwB/uJ,MAAQw3B,EAC5D1I,EAAQ8tE,EAAImyD,OAAO,SAAS/uJ,MAC5B2/N,EAAe/iI,EAAImyD,OAAO,sBAAsB/uJ,MACpD/B,EAAQ+7B,KAAOslM,EAAa,IAAMG,EAAc,IAAMF,EAAY,IAAMC,EACxEvhO,EAAQy5B,SAAW,QAEnBx5B,KAAKq+N,eAAet+N,EAAS6wB,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAI0I,GAC3Dt5B,KAAKy9N,iBAAiB19N,EAAS0hO,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAID,EACpF,EAkBAhB,GAAMvF,aAAe,SAAUv8H,EAAKskB,GAClC,IAAIhnB,EACA01B,EAAKhzB,EAAI7d,SACTC,EAAW4wC,EAAG5wC,SACd4gJ,EAAQ1+G,EAASA,EAAS,IAAM,GAChCixC,EAAWv1D,EAAImyD,OAAO6wE,EAAQ,iBAC9BC,EAAY7wG,GAAoBhwC,EAAU,aAAckiC,GAQ5D,OANEhnB,EADwB,eAAtBi4D,EAAST,SACH90D,EAAI66C,SAAWooF,EAAY,EACJ,SAAtB1tE,EAAST,SACV,EAEAS,EAASnD,QAEZ90D,CACT,EACAwkI,GAAMtD,SAAW,SAAUn9N,EAAS2+F,EAAKskB,GACvC,IAAIg+G,IAAgBj+N,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GAC/E69N,IAAgB79N,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GAC/E2uH,EAAKhzB,EAAI7d,SACTC,EAAW4wC,EAAG5wC,SACdokF,EAAgB07D,EAAgBliI,EAAIumE,mBAAqB,EAC7D,IAAI27D,GAAoC,IAAlB17D,GAA4D,IAArCxmE,EAAImyD,OAAO,gBAAgB/uJ,MAAxE,CAKe,SAAXkhH,IACFA,EAAS,MAEX,IAEI4+G,EAAUC,EAFVlvB,EAAQ7hF,GAAoBhwC,EAAU,SAAUkiC,GAChDpkD,EAAQkyD,GAAoBhwC,EAAU,SAAUkiC,GAEhDrmF,EAAO38B,KAAK60M,aAAan2G,EAAKskB,GAClC,GAAY,MAARrmF,GAAyB,KAATA,IAAgB5tB,MAAM4jM,KAAW5jM,MAAM6vD,GAAQ,CACjE5+D,KAAKmhO,eAAephO,EAAS2+F,EAAKkiI,GAClC,IAcI5kI,EAdA0lI,EAAQ1+G,EAASA,EAAS,IAAM,GAChC8+G,EAAQhxG,GAAoBhwC,EAAU,aAAckiC,GACpD++G,EAAQjxG,GAAoBhwC,EAAU,cAAekiC,GACrD+wC,EAAUr1D,EAAImyD,OAAO6wE,EAAQ,iBAAiB5wE,QAC9CkD,EAAUt1D,EAAImyD,OAAO6wE,EAAQ,iBAAiB5wE,QAC9CvX,EAAS76C,EAAI66C,SACbka,EAAS/0D,EAAImyD,OAAO,eAAe/uJ,MACnC4xJ,EAASh1D,EAAImyD,OAAO,eAAe/uJ,MAqBvC,OApBIy3I,IACFka,EAAS,SACTC,EAAS,UAEXi/C,GAAS5+C,EACTn1F,GAASo1F,EAKPh4D,EAHGglI,EAGKhhO,KAAKi7N,aAAav8H,EAAKskB,GAFvB,EAII,IAAVhnB,IACF4lI,EAAWjvB,EACXkvB,EAAWjjK,EACX7+D,EAAQu2B,UAAUsrM,EAAUC,GAC5B9hO,EAAQq2B,OAAO4lE,GACf22G,EAAQ,EACR/zI,EAAQ,GAEF80F,GACN,IAAK,MACH,MACF,IAAK,SACH90F,GAASmjK,EAAQ,EACjB,MACF,IAAK,SACHnjK,GAASmjK,EACT,MAEJ,IAAIC,EAAoBtjI,EAAImyD,OAAO,2BAA2B/uJ,MAC1DmgO,EAAgBvjI,EAAImyD,OAAO,uBAAuB/uJ,MAClDogO,EAAkBxjI,EAAImyD,OAAO,qBAAqBC,QAClDqxE,EAAoBzjI,EAAImyD,OAAO,2BAA2BC,QAC9D,GAAIkxE,EAAoB,GAAKE,EAAkB,GAAKD,EAAgB,EAAG,CACrE,IAAIG,EAAMzvB,EAAQwvB,EAClB,OAAQ1uE,GACN,IAAK,OACH2uE,GAAON,EACP,MACF,IAAK,SACHM,GAAON,EAAQ,EACf,MAEJ,IAAIO,EAAMzjK,EAAQmjK,EAAQI,EACtBG,EAAMR,EAAQ,EAAIK,EAClBI,EAAMR,EAAQ,EAAII,EACtB,GAAIH,EAAoB,EAAG,CACzB,IAAIQ,EAAWziO,EAAQ47B,UACnB8mM,EAAsB/jI,EAAImyD,OAAO,yBAAyB/uJ,MAC9D/B,EAAQ47B,UAAY,QAAU8mM,EAAoB,GAAK,IAAMA,EAAoB,GAAK,IAAMA,EAAoB,GAAK,IAAMT,EAAoB98D,EAAgB,IAC/J,IAAIw9D,EAAahkI,EAAImyD,OAAO,yBAAyB2C,SACjB,IAAhCkvE,EAAWrrN,QAAQ,SACrBopN,GAAU1gO,EAASqiO,EAAKC,EAAKC,EAAKC,EAAK,GAEvCxiO,EAAQusF,SAAS81I,EAAKC,EAAKC,EAAKC,GAElCxiO,EAAQ47B,UAAY6mM,CACtB,CACA,GAAIN,EAAkB,GAAKD,EAAgB,EAAG,CAC5C,IAAIU,EAAa5iO,EAAQ67B,YACrBgnM,EAAgB7iO,EAAQg6B,UACxB8oM,EAAkBnkI,EAAImyD,OAAO,qBAAqB/uJ,MAClDghO,EAAkBpkI,EAAImyD,OAAO,qBAAqB/uJ,MAGtD,GAFA/B,EAAQ67B,YAAc,QAAUinM,EAAgB,GAAK,IAAMA,EAAgB,GAAK,IAAMA,EAAgB,GAAK,IAAMZ,EAAgB/8D,EAAgB,IACjJnlK,EAAQg6B,UAAYmoM,EAChBniO,EAAQ87B,YAEV,OAAQinM,GACN,IAAK,SACH/iO,EAAQ87B,YAAY,CAAC,EAAG,IACxB,MACF,IAAK,SACH97B,EAAQ87B,YAAY,CAAC,EAAG,IACxB,MACF,IAAK,SACH97B,EAAQg6B,UAAYmoM,EAAkB,EACtCniO,EAAQ87B,YAAY,IACpB,MACF,IAAK,QACH97B,EAAQ87B,YAAY,IACpB,MAIN,GADA97B,EAAQgjO,WAAWX,EAAKC,EAAKC,EAAKC,GACV,WAApBO,EAA8B,CAChC,IAAIE,EAAad,EAAkB,EACnCniO,EAAQgjO,WAAWX,EAAMY,EAAYX,EAAMW,EAAYV,EAAmB,EAAbU,EAAgBT,EAAmB,EAAbS,EACrF,CACIjjO,EAAQ87B,aAEV97B,EAAQ87B,YAAY,IAEtB97B,EAAQg6B,UAAY6oM,EACpB7iO,EAAQ67B,YAAc+mM,CACxB,CACF,CACA,IAAI5oM,EAAY,EAAI2kE,EAAImyD,OAAO,sBAAsBC,QAKrD,GAHI/2H,EAAY,IACdh6B,EAAQg6B,UAAYA,GAEgB,SAAlC2kE,EAAImyD,OAAO,aAAa/uJ,MAAkB,CAC5C,IAAImkD,EAAQ6qE,GAAoBhwC,EAAU,uBAAwBkiC,GAC9D19E,EAAawrF,GAAoBhwC,EAAU,kBAAmBkiC,GAC9DigH,EAAYnB,EAAQ,EACpBr7C,EAAgBzmL,KAAKy2M,sBAAsB/3G,GAwB/C,OAvBsB,SAAlB+nF,IAAgD,SAAXhzB,EAEjB,SAAlBgzB,EACFksB,IAAUmvB,EACiB,WAAlBr7C,IACTksB,IAAUswB,GAEQ,WAAXxvE,EAEa,SAAlBgzB,EACFksB,IAAUswB,EACiB,UAAlBx8C,IACTksB,GAASswB,GAES,UAAXxvE,IAEa,WAAlBgzB,EACFksB,GAASswB,EACkB,UAAlBx8C,IACTksB,GAASmvB,KAILpuE,GACN,IAAK,MACH90F,IAAU3Y,EAAMjkD,OAAS,GAAKsjC,EAC9B,MACF,IAAK,SACL,IAAK,SACHs5B,IAAU3Y,EAAMjkD,OAAS,GAAKsjC,EAC9B,MAEJ,IAAK,IAAI92B,EAAI,EAAGA,EAAIy3C,EAAMjkD,OAAQwM,IAC5BurB,EAAY,GACdh6B,EAAQ0lC,WAAWwgB,EAAMz3C,GAAImkM,EAAO/zI,GAEtC7+D,EAAQylC,SAASygB,EAAMz3C,GAAImkM,EAAO/zI,GAClCA,GAASt5B,CAEb,MACMvL,EAAY,GACdh6B,EAAQ0lC,WAAW9I,EAAMg2K,EAAO/zI,GAElC7+D,EAAQylC,SAAS7I,EAAMg2K,EAAO/zI,GAElB,IAAVo9B,IACFj8F,EAAQq2B,QAAQ4lE,GAChBj8F,EAAQu2B,WAAWsrM,GAAWC,GAElC,CAhLA,CAiLF,EAGA,IAAIqB,GAAQ,CACZA,SAAiB,SAAUnjO,EAASq7E,EAAM0+I,GACxC,IAIIlnB,EAAWC,EAJXqpB,IAAYn5N,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GAC3Eo5N,IAAoBp5N,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GACnFq5N,IAAoBr5N,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GACnFgqB,EAAI/sB,KAEJ0xH,EAAKt2C,EAAKyF,SACV0Z,EAAKm3B,EAAG5wC,SACRzyE,EAAM+sE,EAAKtpD,WACf,GAAKqwF,EAAS9zG,EAAIyR,IAAOqiG,EAAS9zG,EAAIswB,MAIlCy9L,GAAsBhhJ,EAAKrnD,WAA/B,CAGA,IAEImpC,EASAuc,EAXA0pJ,EAAa/G,EAAoBhhJ,EAAK6pF,mBAAqB,EAC3Du4D,EAAWzwM,EAAEywM,WAEbG,GAAe,EACfpyI,EAAUnQ,EAAKmQ,UACnBqnH,EAAYx3H,EAAK5yC,QAAU,EAAI+iD,EAC/BsnH,EAAaz3H,EAAK3yC,SAAW,EAAI8iD,EAM7BuuI,IACFrgJ,EAAKqgJ,EACL/5N,EAAQu2B,WAAWmjD,EAAG3vC,IAAK2vC,EAAG1vC,KAWhC,IALA,IAAIq5L,EAAYhoJ,EAAKy1E,OAAO,oBACxBk2B,EAAOq8C,EAAUthO,MACjBuhO,EAAa,IAAIx8N,MAAMkgL,EAAK/kL,QAC5B23M,EAAQ,IAAI9yM,MAAMkgL,EAAK/kL,QACvBshO,EAAY,EACPt/N,EAAI,EAAGA,EAAI+iL,EAAK/kL,OAAQgC,IAAK,CACpC,IAAIggE,EAAM+iH,EAAK/iL,GACXu/N,EAAOF,EAAWr/N,GAAY,MAAPggE,GAAuB,SAARA,EAC1C,GAAIu/J,EAAM,CACR,IAAIC,EAAmBpoJ,EAAKjsD,KAAKvjB,QAAQozN,gBAAgB5jJ,EAAM,+BAAgC,QAASp3E,GACxGs/N,IAGA3pB,EAAM31M,GAAK+oB,EAAE02M,eAAez/J,EAAKw/J,GAAkB,WACjD9xG,EAAGgyG,oBAAsBrvM,KAAK1Q,MAC9By3D,EAAKu1E,cAAc,aACrB,GACF,CACF,CAKA,IAAIgzE,EAAWvoJ,EAAKy1E,OAAO,sBAAsB/uJ,MAC7C+lE,EAAcuT,EAAKy1E,OAAO,gBAAgBC,QAC1C8yE,EAAYxoJ,EAAKy1E,OAAO,sBAAsB/uJ,MAAQqhO,EACtDU,EAAczoJ,EAAKy1E,OAAO,gBAAgB/uJ,MAC1C6jL,EAAcvqG,EAAKy1E,OAAO,gBAAgB/uJ,MAC1CmgO,EAAgB7mJ,EAAKy1E,OAAO,kBAAkB/uJ,MAAQqhO,EAC1DpjO,EAAQy5B,SAAW,QAEnB,IAAIsqM,EAAkB,WACpB,IAAIC,EAAQhhO,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAK6gO,EAChF72M,EAAEi3M,aAAajkO,EAASq7E,EAAM2oJ,EAChC,EACIE,EAAmB,WACrB,IAAIC,EAASnhO,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAKk/N,EACjFl1M,EAAE0wM,iBAAiB19N,EAAS8jO,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIK,EAC9E,EAKIxB,EAAatnJ,EAAKy1E,OAAO,SAAS2C,SAClC2wE,EAAW/oJ,EAAKy1E,OAAO,wBAAwBC,QACnD,GAAI0sE,EAAU,CACZz9N,EAAQu2B,UAAUjoB,EAAIyR,EAAGzR,EAAIswB,GAC7B,IAAIuiD,EAAYn0D,EAAEq3M,cAAgBr3M,EAAEq3M,eAAiB,GACjDvgO,EAAMwrH,GAA2B,YAAfqzG,EAA2BA,EAAa,IAAMyB,EAASr5N,KAAK,KAAO43N,EAAY,GAAK7vB,EAAY,GAAKD,GACvH8rB,EAAax9I,EAAUr9E,GACT,MAAd66N,GACFxhK,EAAOwhK,EACPf,GAAe,EACfpjI,EAAGrZ,UAAYhkB,IAEfA,EAAO,IAAIikB,OACXD,EAAUr9E,GAAO02F,EAAGrZ,UAAYhkB,EAEpC,CACA,IAAImnK,EAAY,WACd,IAAK1G,EAAc,CACjB,IAAIruB,EAAOjhM,EACPmvN,IACFluB,EAAO,CACLxvL,EAAG,EACH6e,EAAG,IAGP5R,EAAEs0K,WAAWt0K,EAAEu0K,aAAalmH,IAAOplD,KAAKknC,GAAQn9D,EAASuvM,EAAKxvL,EAAGwvL,EAAK3wK,EAAGi0K,EAAWC,EACtF,CACI2qB,EACFz9N,EAAQgqB,KAAKmzC,GAEbn9D,EAAQgqB,MAEZ,EACIu6M,EAAa,WAKf,IAJA,IAAIxF,EAAc/7N,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAKogO,EAClFtrH,IAAS90G,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GACxEwhO,EAAY7yG,EAAGY,cACfkyG,EAAiB,EACZ50N,EAAK,EAAGA,EAAK+pM,EAAM33M,OAAQ4N,IAAM,CACxC,IAAI61K,EAAgBrqG,EAAKjsD,KAAKvjB,QAAQozN,gBAAgB5jJ,EAAM,+BAAgC,QAASxrE,GACjGioG,GAA4B,SAAlB4tE,IAA6B5tE,GAA4B,WAAlB4tE,EACnD++C,IAGEnB,EAAWzzN,IAAO+pM,EAAM/pM,GAAIqpE,WAAa0gI,EAAM/pM,GAAIiH,QACrD2tN,IACAz3M,EAAE03M,mBAAmB1kO,EAAS45M,EAAM/pM,GAAKwrE,EAAMxrE,EAAIkvN,GAEvD,CACAptG,EAAGY,gBAAkBkyG,IAAmBlB,GACpCiB,IAAc7yG,EAAGY,eAEnBl3C,EAAK2lE,aAAY,EAErB,EACI2jF,EAAU,WACZ,IAAIC,EAAc5hO,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,IAAmBA,UAAU,GAC7E6hO,EAAa7hO,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAKogO,EACjFp2M,EAAEmwJ,OAAO9hG,KACXruD,EAAE23M,QAAQ3kO,EAASq7E,EAAMwpJ,GAGrBD,IACGnH,GACHzwM,EAAEs0K,WAAWt0K,EAAEu0K,aAAalmH,IAAOplD,KAAKj2B,EAASsO,EAAIyR,EAAGzR,EAAIswB,EAAGi0K,EAAWC,IAIlF,EACIgyB,EAAS,WACX,IAAIC,EAAgB/hO,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,GAAmBA,UAAU,GAAKogO,EACpF7pM,GAAWqqM,EAAW,EAAIA,GAAYA,GAAYmB,EAClDjiO,EAAI8gO,EAAW,EAAI,EAAI,IACV,IAAbA,IACF52M,EAAEsxM,eAAet+N,EAAS8C,EAAGA,EAAGA,EAAGy2B,GAC/BkkM,EACFz9N,EAAQgqB,KAAKmzC,GAEbn9D,EAAQgqB,OAGd,EACIg7M,EAAa,WACf,GAAIl9J,EAAc,EAAG,CAGnB,GAFA9nE,EAAQg6B,UAAY8tC,EACpB9nE,EAAQw5B,QAAU,OACdx5B,EAAQ87B,YAEV,OAAQ8pJ,GACN,IAAK,SACH5lL,EAAQ87B,YAAY,CAAC,EAAG,IACxB,MACF,IAAK,SACH97B,EAAQ87B,YAAY,CAAC,EAAG,IACxB,MACF,IAAK,QACL,IAAK,SACH97B,EAAQ87B,YAAY,IACpB,MAQN,GALI2hM,EACFz9N,EAAQs5B,OAAO6jC,GAEfn9D,EAAQs5B,SAEU,WAAhBssJ,EAA0B,CAC5B5lL,EAAQg6B,UAAY8tC,EAAc,EAClC,IAAIu2J,EAAMr+N,EAAQ67F,yBAClB77F,EAAQ67F,yBAA2B,kBAC/B4hI,EACFz9N,EAAQs5B,OAAO6jC,GAEfn9D,EAAQs5B,SAEVt5B,EAAQ67F,yBAA2BwiI,CACrC,CAGIr+N,EAAQ87B,aAEV97B,EAAQ87B,YAAY,GAExB,CACF,EACIghM,EAAc,WACZV,GACFpvM,EAAEqtM,gBAAgBr6N,EAASq7E,EAAM/sE,EAAKukM,EAAWC,EAErD,EACIiqB,EAAe,WACbX,GACFpvM,EAAEutM,iBAAiBv6N,EAASq7E,EAAM/sE,EAAKukM,EAAWC,EAEtD,EACIqqB,EAAW,WACbnwM,EAAEowM,gBAAgBp9N,EAASq7E,EAAM,KAAM8gJ,EACzC,EACInlE,EAAuC,QAA/B37E,EAAKy1E,OAAO,SAAS/uJ,MACjC,GAAIi1J,EAAO,CACT,IAAIC,EAAK57E,EAAKy1E,OAAO,kBAAkBC,QACnCmG,EAAK77E,EAAKy1E,OAAO,kBAAkBC,QACnCssE,EAAehiJ,EAAKy1E,OAAO,iBAAiB/uJ,MAC5CkjO,EAAkB5H,EAAe+F,EACrCpjO,EAAQu2B,UAAU0gI,EAAIC,GACtB6sE,EAAgB1G,EAAewG,GAC/BS,IACAC,EAAWU,GAAiB,GAC5Bf,EAAiB7G,EAAe6E,GAChC8C,IACAL,EAAqB,IAAbf,GAAkC,IAAhB97J,GAC1By8J,EAAWU,GAAiB,GAC5BH,EAAOG,GACPjlO,EAAQu2B,WAAW0gI,GAAKC,EAC1B,CACIumE,GACFz9N,EAAQu2B,WAAWjoB,EAAIyR,GAAIzR,EAAIswB,GAEjCm+L,IACIU,GACFz9N,EAAQu2B,UAAUjoB,EAAIyR,EAAGzR,EAAIswB,GAE/BmlM,IACAO,IACAC,EAAWnB,GAAY,GACvBc,IACAc,IACAL,EAAqB,IAAbf,GAAkC,IAAhB97J,GAC1By8J,EAAWnB,GAAY,GACvB0B,IACIrH,GACFz9N,EAAQu2B,WAAWjoB,EAAIyR,GAAIzR,EAAIswB,GAEjCu+L,IACAL,IAKI/C,GACF/5N,EAAQu2B,UAAUmjD,EAAG3vC,GAAI2vC,EAAG1vC,GApP9B,CAsPF,GACIk7L,GAA0B,SAAiC1H,GAC7D,IAAK,CAAC,UAAW,YAAYnmN,SAASmmN,GACpC,MAAM,IAAI5hN,MAAM,iBAElB,OAAO,SAAU5b,EAASq7E,EAAM/sE,EAAKukM,EAAWC,GAC9C,IAAI9lL,EAAI/sB,KACR,GAAKo7E,EAAKrnD,UAAV,CAGA,IAAIw3D,EAAUnQ,EAAKy1E,OAAO,GAAG5vJ,OAAOs8N,EAAmB,aAAazsE,QAChEx3H,EAAU8hD,EAAKy1E,OAAO,GAAG5vJ,OAAOs8N,EAAmB,aAAaz7N,MAChE8uB,EAAQwqD,EAAKy1E,OAAO,GAAG5vJ,OAAOs8N,EAAmB,WAAWz7N,MAC5D0zB,EAAQ4lD,EAAKy1E,OAAO,GAAG5vJ,OAAOs8N,EAAmB,WAAWz7N,MAChE,GAAIw3B,EAAU,EAAG,CAEf,GADAjrB,EAAMA,GAAO+sE,EAAKtpD,WACD,MAAb8gL,GAAmC,MAAdC,EAAoB,CAC3C,IAAI5yE,EAAW7kD,EAAKmQ,UACpBqnH,EAAYx3H,EAAK5yC,QAAU,EAAIy3F,EAC/B4yE,EAAaz3H,EAAK3yC,SAAW,EAAIw3F,CACnC,CACAlzG,EAAEsxM,eAAet+N,EAAS6wB,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAI0I,GACxDvM,EAAEs0K,WAAW7rK,GAAOQ,KAAKj2B,EAASsO,EAAIyR,EAAGzR,EAAIswB,EAAGi0K,EAAsB,EAAVrnH,EAAasnH,EAAuB,EAAVtnH,GACtFxrF,EAAQgqB,MACV,CAfA,CAgBF,CACF,EACAm5M,GAAM9I,gBAAkB6K,GAAwB,WAChD/B,GAAM5I,iBAAmB2K,GAAwB,YAGjD/B,GAAMhmD,OAAS,SAAU9hG,GAGvB,OAFAA,EAAOA,EAAK,GAELA,EAAKyF,SAASq8F,MACvB,EACAgmD,GAAMwB,QAAU,SAAU3kO,EAASq7E,EAAM0jJ,EAAazwN,GACpD+sE,EAAOA,EAAK,GACZ/sE,EAAMA,GAAO+sE,EAAKtpD,WAClB,IAAIozM,EAAU9pJ,EAAKjsD,KAAKvjB,QACpBu5N,EAAU/pJ,EAAKy1E,OAAO,YACtB/wI,EAAIzR,EAAIyR,EACR6e,EAAItwB,EAAIswB,EACRg6K,EAAQv9H,EAAK5yC,QACbowK,EAAQx9H,EAAK3yC,SACb4B,EAASlkC,KAAKyI,IAAI+pM,EAAOC,GAAS,EAClCwsB,EAAc,EACd5H,EAAWx9N,KAAKw9N,WAChBA,IACF19M,EAAI,EACJ6e,EAAI,GAEgB,MAAlBwmM,EAAQl0E,MACV5mH,GAAkB86L,EAAQr0E,aACGpuJ,IAApByiO,EAAQr0E,UACjBzmH,EAAS86L,EAAQr0E,QAAU,GAE7B,IAAK,IAAI9sJ,EAAI,EAAGA,GAAKkhO,EAAQt8C,eAAgB5kL,IAAK,CAEhD,IAAIslF,EAAOlO,EAAKy1E,OAAO,OAAS7sJ,EAAI,oBAAoBlC,MACpD8uB,EAAQwqD,EAAKy1E,OAAO,OAAS7sJ,EAAI,qBAAqBlC,MACtDw3B,EAAU8hD,EAAKy1E,OAAO,OAAS7sJ,EAAI,uBAAuBlC,MAAQg9N,EAClEniL,EAAU2sC,EAAO,IAGjB3sC,EAAUyoL,EAAc,IAC1BzoL,EAAU,EAAIyoL,GAEhB,IAAIC,EAAa,IAAMl/N,KAAK40B,GAAK,EAAI50B,KAAK40B,GAAKqqM,EAC3CE,EAAa,EAAIn/N,KAAK40B,GAAK4hB,EAC3B4oL,EAAWF,EAAaC,EAMf,IAATh8I,GAAc87I,GAAe,GAAKA,EAAczoL,EAAU,IAG9D58C,EAAQy9B,YACRz9B,EAAQkmC,OAAOnmB,EAAG6e,GAClB5+B,EAAQg9B,IAAIjd,EAAG6e,EAAG0L,EAAQg7L,EAAYE,GACtCxlO,EAAQ09B,YACRz9B,KAAKq+N,eAAet+N,EAAS6wB,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAI0I,GAC3Dv5B,EAAQgqB,OACRq7M,GAAezoL,EACjB,CACF,EAEA,IAAI6oL,GAAQ,CAAC,EACTC,GAAkB,IAItBD,GAAM5rI,cAAgB,WACpB,IAAI75F,EAAUC,KAAKif,KAAKymN,SAAS,GACjC,GAA6B,MAAzB1lO,KAAKisN,iBACP,OAAOjsN,KAAKisN,iBAEd,IAAI0Z,EAAe5lO,EAAQ6lO,wBAA0B7lO,EAAQ8lO,8BAAgC9lO,EAAQ+lO,2BAA6B/lO,EAAQgmO,0BAA4BhmO,EAAQimO,yBAA2BjmO,EAAQ6lO,wBAA0B,EAC3O,OAAQ1/N,OAAOy3E,kBAAoB,GAAKgoJ,CAC1C,EAEAH,GAAMS,WAAa,SAAUlmO,GAI3B,IAHA,IAEIw1B,EAFA65L,EAASpvN,KAAKkmO,YAAclmO,KAAKkmO,aAAe,GAChDC,GAAoB,EAEfniO,EAAI,EAAGA,EAAIorN,EAAOptN,OAAQgC,IAEjC,GADAuxB,EAAQ65L,EAAOprN,GACXuxB,EAAMx1B,UAAYA,EAAS,CAC7BomO,GAAoB,EACpB,KACF,CAQF,OANIA,IACF5wM,EAAQ,CACNx1B,QAASA,GAEXqvN,EAAOnrN,KAAKsxB,IAEPA,CACT,EACAiwM,GAAMY,uBAAyB,SAAUrmO,EAASsmO,EAAgB3nI,EAAK30E,EAAMuP,GAC3E,IAAIgtM,EACA9I,EAAWx9N,KAAKw9N,WAChB5iM,EAAS8jE,EAAImyD,OAAOw1E,EAAiB,yBAAyBvkO,MAChEioG,EAAYrL,EAAImyD,OAAOw1E,EAAiB,4BAA4Bv1E,QACtE,GAAa,oBAAT/mI,EACF,GAAI20E,EAAI66C,SAAU,CAChB,IAAI76F,EAAQggD,EAAI3d,iBACdpiC,EAAM+/C,EAAI1d,iBACV09C,EAAMhgC,EAAI07D,WACR/gB,EAAKpvD,GAAKvrC,EAAOggF,GACjB4a,EAAKrvD,GAAKtrC,EAAK+/E,GACnB4nG,EAAgBvmO,EAAQwmO,qBAAqB7nG,EAAI5+G,EAAG4+G,EAAI//F,EAAG,EAAG+/F,EAAI5+G,EAAG4+G,EAAI//F,EAAGx4B,KAAKwI,IAAI0qI,EAAIC,GAC3F,KAAO,CACL,IAAIjrI,EAAMmvN,EAAW,CACjB19M,EAAG,EACH6e,EAAG,GACD+/D,EAAI5sE,WACR0W,EAAQk2D,EAAI86D,cACZ/wH,EAASi2D,EAAI66D,eACf+sE,EAAgBvmO,EAAQwmO,qBAAqBl4N,EAAIyR,EAAGzR,EAAIswB,EAAG,EAAGtwB,EAAIyR,EAAGzR,EAAIswB,EAAGx4B,KAAKwI,IAAI65B,EAAOC,GAC9F,MAEA,GAAIi2D,EAAI66C,SAAU,CAChB,IAAIorE,EAASjmH,EAAI3d,iBACfylJ,EAAO9nI,EAAI1d,iBACbslJ,EAAgBvmO,EAAQq2D,qBAAqBuuJ,EAAO7kM,EAAG6kM,EAAOhmL,EAAG6nM,EAAK1mN,EAAG0mN,EAAK7nM,EAChF,KAAO,CACL,IAAIgxH,EAAO6tE,EAAW,CAClB19M,EAAG,EACH6e,EAAG,GACD+/D,EAAI5sE,WACR20M,EAAS/nI,EAAI86D,cACbktE,EAAUhoI,EAAI66D,eACdn6G,EAAYqnL,EAAS,EACrBt+J,EAAau+J,EAAU,EACrBvyI,EAAYuK,EAAImyD,OAAO,iCAAiC/uJ,MAC5D,OAAQqyF,GACN,IAAK,YACHmyI,EAAgBvmO,EAAQq2D,qBAAqBu5F,EAAK7vI,EAAG6vI,EAAKhxH,EAAIwpC,EAAYwnF,EAAK7vI,EAAG6vI,EAAKhxH,EAAIwpC,GAC3F,MACF,IAAK,SACHm+J,EAAgBvmO,EAAQq2D,qBAAqBu5F,EAAK7vI,EAAG6vI,EAAKhxH,EAAIwpC,EAAYwnF,EAAK7vI,EAAG6vI,EAAKhxH,EAAIwpC,GAC3F,MACF,IAAK,UACHm+J,EAAgBvmO,EAAQq2D,qBAAqBu5F,EAAK7vI,EAAIs/B,EAAWuwG,EAAKhxH,EAAGgxH,EAAK7vI,EAAIs/B,EAAWuwG,EAAKhxH,GAClG,MACF,IAAK,WACH2nM,EAAgBvmO,EAAQq2D,qBAAqBu5F,EAAK7vI,EAAIs/B,EAAWuwG,EAAKhxH,EAAGgxH,EAAK7vI,EAAIs/B,EAAWuwG,EAAKhxH,GAClG,MACF,IAAK,kBACL,IAAK,kBACH2nM,EAAgBvmO,EAAQq2D,qBAAqBu5F,EAAK7vI,EAAIs/B,EAAWuwG,EAAKhxH,EAAIwpC,EAAYwnF,EAAK7vI,EAAIs/B,EAAWuwG,EAAKhxH,EAAIwpC,GACnH,MACF,IAAK,eACL,IAAK,eACHm+J,EAAgBvmO,EAAQq2D,qBAAqBu5F,EAAK7vI,EAAIs/B,EAAWuwG,EAAKhxH,EAAIwpC,EAAYwnF,EAAK7vI,EAAIs/B,EAAWuwG,EAAKhxH,EAAIwpC,GACnH,MACF,IAAK,iBACL,IAAK,iBACHm+J,EAAgBvmO,EAAQq2D,qBAAqBu5F,EAAK7vI,EAAIs/B,EAAWuwG,EAAKhxH,EAAIwpC,EAAYwnF,EAAK7vI,EAAIs/B,EAAWuwG,EAAKhxH,EAAIwpC,GACnH,MACF,IAAK,cACL,IAAK,cACHm+J,EAAgBvmO,EAAQq2D,qBAAqBu5F,EAAK7vI,EAAIs/B,EAAWuwG,EAAKhxH,EAAIwpC,EAAYwnF,EAAK7vI,EAAIs/B,EAAWuwG,EAAKhxH,EAAIwpC,GACnH,MAEN,CAEF,IAAKm+J,EAAe,OAAO,KAI3B,IAFA,IAAIK,EAAe58H,EAAU/nG,SAAW44B,EAAO54B,OAC3CA,EAAS44B,EAAO54B,OACXgC,EAAI,EAAGA,EAAIhC,EAAQgC,IAC1BsiO,EAAcjqM,aAAasqM,EAAe58H,EAAU/lG,GAAKA,GAAKhC,EAAS,GAAI,QAAU44B,EAAO52B,GAAG,GAAK,IAAM42B,EAAO52B,GAAG,GAAK,IAAM42B,EAAO52B,GAAG,GAAK,IAAMs1B,EAAU,KAEhK,OAAOgtM,CACT,EACAd,GAAMoB,kBAAoB,SAAU7mO,EAAS2+F,EAAK30E,EAAMuP,GACtD,IAAIgtM,EAAgBtmO,KAAKomO,uBAAuBrmO,EAAS,aAAc2+F,EAAK30E,EAAMuP,GAClF,IAAKgtM,EAAe,OAAO,KAC3BvmO,EAAQ47B,UAAY2qM,CACtB,EACAd,GAAMnH,eAAiB,SAAUt+N,EAASgtB,EAAGnP,EAAGhb,EAAGD,GACjD5C,EAAQ47B,UAAY,QAAU5O,EAAI,IAAMnP,EAAI,IAAMhb,EAAI,IAAMD,EAAI,GAUlE,EAEA6iO,GAAMxB,aAAe,SAAUjkO,EAAS2+F,EAAKplE,GAC3C,IAAIutM,EAAiBnoI,EAAImyD,OAAO,mBAAmB/uJ,MACnD,GAAuB,oBAAnB+kO,GAA2D,oBAAnBA,EAC1C7mO,KAAK4mO,kBAAkB7mO,EAAS2+F,EAAKmoI,EAAgBvtM,OAChD,CACL,IAAIsgC,EAAkB8kC,EAAImyD,OAAO,oBAAoB/uJ,MACrD9B,KAAKq+N,eAAet+N,EAAS65D,EAAgB,GAAIA,EAAgB,GAAIA,EAAgB,GAAItgC,EAC3F,CACF,EACAksM,GAAMsB,oBAAsB,SAAU/mO,EAAS2+F,EAAK30E,EAAMuP,GACxD,IAAIgtM,EAAgBtmO,KAAKomO,uBAAuBrmO,EAAS,OAAQ2+F,EAAK30E,EAAMuP,GAC5E,IAAKgtM,EAAe,OAAO,KAC3BvmO,EAAQ67B,YAAc0qM,CACxB,EACAd,GAAM/H,iBAAmB,SAAU19N,EAASgtB,EAAGnP,EAAGhb,EAAGD,GACnD5C,EAAQ67B,YAAc,QAAU7O,EAAI,IAAMnP,EAAI,IAAMhb,EAAI,IAAMD,EAAI,GAUpE,EAEA6iO,GAAM9I,eAAiB,SAAU38N,EAAS2+F,EAAKplE,GAC7C,IAAIytM,EAAWroI,EAAImyD,OAAO,aAAa/uJ,MACvC,GAAiB,oBAAbilO,GAA+C,oBAAbA,EACpC/mO,KAAK8mO,oBAAoB/mO,EAAS2+F,EAAKqoI,EAAUztM,OAC5C,CACL,IAAI0tM,EAAYtoI,EAAImyD,OAAO,cAAc/uJ,MACzC9B,KAAKy9N,iBAAiB19N,EAASinO,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAI1tM,EAC3E,CACF,EAGAksM,GAAMzY,gBAAkB,SAAUjiL,GAChC,IAAI/d,EAAI/sB,KACJif,EAAO8N,EAAE9N,KACTw6D,EAAK1sD,EAAE6yK,4BACPp3J,EAAQixC,EAAG,GACXhxC,EAASgxC,EAAG,GACZ+D,EAAazwD,EAAE6sE,gBACfqtI,EAAYl6M,EAAEo/L,kBACdrhL,IAAc/d,EAAE9N,KAAKioN,eAAen6M,EAAEo6M,yBAA2Br8L,IAAc/d,EAAE9N,KAAKioN,eAAen6M,EAAEq6M,0BACzG5pJ,EAAaypJ,GAEf,IAEI72M,EAFAi3M,EAAc7+L,EAAQg1C,EACtB8pJ,EAAe7+L,EAAS+0C,EAE5B,GAAI6pJ,IAAgBt6M,EAAEs6M,aAAeC,IAAiBv6M,EAAEu6M,aAAxD,CAIAv6M,EAAEm0M,WAAa,KAEf,IAAIqG,EAAkBtoN,EAAKsoN,gBAC3BA,EAAgB37N,MAAM48B,MAAQA,EAAQ,KACtC++L,EAAgB37N,MAAM68B,OAASA,EAAS,KACxC,IAAK,IAAIzkC,EAAI,EAAGA,EAAI+oB,EAAEy6M,cAAexjO,IACnCosB,EAASnR,EAAKwoN,SAASzjO,GACvBosB,EAAOoY,MAAQ6+L,EACfj3M,EAAOqY,OAAS6+L,EAChBl3M,EAAOxkB,MAAM48B,MAAQA,EAAQ,KAC7BpY,EAAOxkB,MAAM68B,OAASA,EAAS,KAEjC,IAASzkC,EAAI,EAAGA,EAAI+oB,EAAE26M,aAAc1jO,IAClCosB,EAASnR,EAAKioN,eAAeljO,GAC7BosB,EAAOoY,MAAQ6+L,EACfj3M,EAAOqY,OAAS6+L,EAChBl3M,EAAOxkB,MAAM48B,MAAQA,EAAQ,KAC7BpY,EAAOxkB,MAAM68B,OAASA,EAAS,KAEjC1b,EAAE46M,YAAc,EACZnqJ,GAAc,IAChBptD,EAASnR,EAAKioN,eAAen6M,EAAE66M,gBAC/B76M,EAAE46M,YAAc,EAChBv3M,EAAOoY,MAAQ6+L,EAAct6M,EAAE46M,YAC/Bv3M,EAAOqY,OAAS6+L,EAAev6M,EAAE46M,aAEnC56M,EAAEs6M,YAAcA,EAChBt6M,EAAEu6M,aAAeA,CA7BjB,CA8BF,EACA9B,GAAMxvD,SAAW,SAAUmC,EAAK/6F,EAAM0G,EAAKmyF,GACzCj2K,KAAKb,OAAO,CACV0oO,cAAe1vD,EACf2vD,WAAY1qJ,EACZ2qJ,UAAWjkJ,EACXkkJ,eAAe,EACfC,cAAehyD,GAEnB,EACAuvD,GAAMrmO,OAAS,SAAUQ,GACvBA,EAAUA,GAAW0wH,KACrB,IAAIw3G,EAAgBloO,EAAQkoO,cACxBG,EAAgBroO,EAAQqoO,cACxBE,EAAoBvoO,EAAQuoO,kBAC5BJ,EAAanoO,EAAQmoO,WACrBC,EAAYpoO,EAAQooO,UACpBh7M,EAAI/sB,KACJw9E,OAAuC96E,IAA1B/C,EAAQsoO,cAA8BjoO,KAAK45F,gBAAkBj6F,EAAQsoO,cAClF94M,EAAKpC,EAAEoC,GACPlQ,EAAO8N,EAAE9N,KACTkpN,EAAWlpN,EAAKmpN,kBAChBC,EAAct7M,EAAEwoJ,oBAAsBsyD,IAAkB96M,EAAE02L,UAAY12L,EAAE8wL,UAAUyB,UAAYvyL,EAAEk4L,cAAgBl4L,EAAE9N,KAAK2iM,cACvHpsC,OAAoC9yK,IAAvB/C,EAAQ61K,WAA2B71K,EAAQ61K,WAAazoJ,EAAEyoJ,WACvEyxD,EAAYl6M,EAAEo/L,kBACdv+D,EAAmBz+H,EAAGy+H,mBACtB06E,EAAoBv7M,EAAE8wL,UAAUwB,aAChC/B,KAAiBvwL,EAAE8wL,UAAU0B,YAAaxyL,EAAE+1L,UAAUvD,WAC1D/pC,EAAaA,IAAeqyD,GAAiB96M,EAAEi/L,oBAAsB1O,EACrE,IAAIirB,EAAuB/yD,EACtBqyD,IACC96M,EAAEy7M,cAAgBhrJ,IACpBzwD,EAAEmwL,uCACFnwL,EAAEggM,gBAAgBhgM,EAAE+d,WACpB/d,EAAEoyL,WAAW,QAAQ,GACrBpyL,EAAEoyL,WAAW,QAAQ,IAEvBpyL,EAAEy7M,YAAchrJ,IAEbqqJ,GAAiB96M,EAAE07M,mBACtBxvK,aAAalsC,EAAE07M,mBAEbjzD,IACgB,MAAdzoJ,EAAE27M,WACJ37M,EAAE27M,SAAW,GAEf37M,EAAE27M,WACE37M,EAAE27M,SAAW,IAEfH,GAAuB,GAIrBx7M,EAAE27M,SAAW37M,EAAEs/L,qBAEjBt/L,EAAEo/L,kBAAoBp/L,EAAEq/L,cAGxBr/L,EAAE47M,qBACJ57M,EAAEo/L,kBAAoB,GAKpBp/L,EAAE67M,uBAAyBP,IAC7BF,EAASp7M,EAAE87M,OAAQ,EACnBV,EAASp7M,EAAE+7M,aAAc,GAE3B,IAAIl9N,EAAQujB,EAAGvjB,QACXwxE,EAAOjuD,EAAGiuD,OACV2rJ,OAA+BrmO,IAAfolO,EAA2BA,EAAa1qJ,EACxD0G,EAAM30D,EAAG20D,MACTklJ,EAAe,CACjBlpN,EAAGgkE,EAAIhkE,EACP6e,EAAGmlD,EAAInlD,GAELmhH,EAAK,CACP1iE,KAAMA,EACN0G,IAAK,CACHhkE,EAAGgkE,EAAIhkE,EACP6e,EAAGmlD,EAAInlD,IAGPsqM,EAASl8M,EAAEm8M,aACXC,OAA4BzmO,IAAXumO,GAAwBnpF,EAAG1iE,OAAS6rJ,EAAO7rJ,MAAQ0iE,EAAGh8D,IAAIhkE,IAAMmpN,EAAOnlJ,IAAIhkE,GAAKggI,EAAGh8D,IAAInlD,IAAMsqM,EAAOnlJ,IAAInlD,EAGxHwqM,GAAoBb,IAAsB16E,IAC7C7gI,EAAEo/L,kBAAoB,GAEpB4b,IACFiB,EAAejB,GAKjBgB,GAAiBvrJ,EACjBwrJ,EAAalpN,GAAK09D,EAClBwrJ,EAAarqM,GAAK6+C,EAClB,IAAI4qB,EAAOr7E,EAAE2zK,uBACb,SAAS0oC,EAAQrpO,EAAS+f,EAAG6e,EAAG90B,EAAG/I,GACjC,IAAIs9N,EAAMr+N,EAAQ67F,yBAClB77F,EAAQ67F,yBAA2B,kBACnC7uE,EAAEsxM,eAAet+N,EAAS,IAAK,IAAK,IAAKgtB,EAAEm/L,wBAC3CnsN,EAAQusF,SAASxsE,EAAG6e,EAAG90B,EAAG/I,GAC1Bf,EAAQ67F,yBAA2BwiI,CACrC,CACA,SAASiL,EAAoBtpO,EAAS2iB,GACpC,IAAI4mN,EAAMC,EAAO1/N,EAAG/I,EACfisB,EAAE47M,oBAAuB5oO,IAAYkf,EAAKuqN,eAAez8M,EAAEo6M,yBAA2BpnO,IAAYkf,EAAKuqN,eAAez8M,EAAEq6M,yBAS3HkC,EAAON,EACPO,EAAQR,EACRl/N,EAAIkjB,EAAEs6M,YACNvmO,EAAIisB,EAAEu6M,eAXNgC,EAAO,CACLxpN,EAAGgkE,EAAIhkE,EAAImnN,EACXtoM,EAAGmlD,EAAInlD,EAAIsoM,GAEbsC,EAAQnsJ,EAAO6pJ,EACfp9N,EAAIkjB,EAAEs6M,YAAcJ,EACpBnmO,EAAIisB,EAAEu6M,aAAeL,GAOvBlnO,EAAQg+E,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACtB,eAAVr7D,EACF0mN,EAAQrpO,EAAS,EAAG,EAAG8J,EAAG/I,GAChB+mO,QAA4BnlO,IAAVggB,IAAuBA,GACnD3iB,EAAQqzB,UAAU,EAAG,EAAGvpB,EAAG/I,GAExBknO,IACHjoO,EAAQu2B,UAAUgzM,EAAKxpN,EAAGwpN,EAAK3qM,GAC/B5+B,EAAQs2B,MAAMkzM,EAAOA,IAEnBxB,GACFhoO,EAAQu2B,UAAUyxM,EAAUjoN,EAAGioN,EAAUppM,GAEvCmpM,GACF/nO,EAAQs2B,MAAMyxM,EAAYA,EAE9B,CAIA,GAHKO,IACHt7M,EAAE67M,sBAAuB,GAEvBP,EAAa,CAEf,GADAt7M,EAAE67M,sBAAuB,GACpB77M,EAAE08M,aAAc,CACnB18M,EAAE08M,aAAe,CAAC,EAClB18M,EAAE08M,aAAahwJ,GAAKtqD,EAAGgvI,kBAAkB78E,cACzCv0D,EAAE08M,aAAapW,QAAUtmM,EAAE9N,KAAKioN,eAAen6M,EAAE66M,gBACjD,IAAIzvD,EAAMprJ,EAAE9N,KAAKuqN,eAAez8M,EAAE66M,gBAClCzvD,EAAIp6F,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAChCo6F,EAAI/kJ,UAAU,EAAG,EAAGrG,EAAEs6M,YAAct6M,EAAE46M,YAAa56M,EAAEu6M,aAAev6M,EAAE46M,aACtE56M,EAAE5tB,OAAO,CACP0oO,cAAe1vD,EACf+vD,mBAAmB,EACnBD,cAAezqJ,EAAazwD,EAAE46M,cAE5B7nF,EAAK/yH,EAAE08M,aAAanmJ,SAAW,CACjClG,KAAMjuD,EAAGiuD,OACT0G,IAAK30D,EAAG20D,MACRt7C,MAAOzb,EAAEs6M,YACT5+L,OAAQ1b,EAAEu6M,cAEZxnF,EAAG4pF,KAAO,CACR5pN,GAAI,EAAIggI,EAAGh8D,IAAIhkE,GAAKggI,EAAG1iE,KACvBz+C,GAAI,EAAImhH,EAAGh8D,IAAInlD,GAAKmhH,EAAG1iE,KAE3B,CACA+qJ,EAASp7M,EAAE48M,OAAQ,EACnBxB,EAASp7M,EAAE87M,OAAQ,EACnB,IAAI9oO,EAAUkf,EAAKymN,SAAS34M,EAAE87M,MAC1BxV,EAAUtmM,EAAE08M,aAAapW,QACzBvzE,EAAK/yH,EAAE08M,aAAanmJ,SACxBvjF,EAAQg+E,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAChCy3F,EACF4zD,EAAQrpO,EAAS,EAAG,EAAG+/I,EAAGt3G,MAAOs3G,EAAGr3G,QAEpC1oC,EAAQqzB,UAAU,EAAG,EAAG0sH,EAAGt3G,MAAOs3G,EAAGr3G,QAEvC,IAAImhM,EAAiBh+N,EAAMxJ,KAAK,4BAA4BN,MACxD+nO,EAAmBj+N,EAAMxJ,KAAK,8BAA8BN,MAChEirB,EAAEsxM,eAAet+N,EAAS6pO,EAAe,GAAIA,EAAe,GAAIA,EAAe,GAAIC,GACnF9pO,EAAQusF,SAAS,EAAG,EAAGwzD,EAAGt3G,MAAOs3G,EAAGr3G,QAChC20C,EAAOjuD,EAAGiuD,OACdisJ,EAAoBtpO,GAAS,GAC7BA,EAAQqzB,UAAU0sH,EAAG4pF,KAAK5pN,EAAGggI,EAAG4pF,KAAK/qM,EAAGmhH,EAAGt3G,MAAQs3G,EAAG1iE,KAAOI,EAAYsiE,EAAGr3G,OAASq3G,EAAG1iE,KAAOI,GAC/Fz9E,EAAQ+tG,UAAUulH,EAASvzE,EAAG4pF,KAAK5pN,EAAGggI,EAAG4pF,KAAK/qM,EAAGmhH,EAAGt3G,MAAQs3G,EAAG1iE,KAAOI,EAAYsiE,EAAGr3G,OAASq3G,EAAG1iE,KAAOI,EAC1G,MAAWzwD,EAAEwoJ,oBAAsBsyD,IAEjC96M,EAAE08M,aAAe,MAEnB,IAAIl8C,EAASp+J,EAAGo+J,SACZu8C,EAAU/8M,EAAE02L,UAAY12L,EAAE8wL,UAAUyB,UAAYvyL,EAAEk4L,cAAgBl4L,EAAE9N,KAAK2iM,cAAgB70L,EAAE8wL,UAAUwB,cAAgBtyL,EAAEoC,GAAG4vH,WAC1HgrF,EAAYh9M,EAAEuoJ,qBAAuBw0D,EACrCE,EAAc,GASlB,GARAA,EAAYj9M,EAAE87M,OAASV,EAASp7M,EAAE87M,OAASrzD,IAAezoJ,EAAEw/L,qBAAqBx/L,EAAE87M,OAAS97M,EAAE47M,mBAC1FqB,EAAYj9M,EAAE87M,QAChB97M,EAAEw/L,qBAAqBx/L,EAAE87M,OAAQ,GAEnCmB,EAAYj9M,EAAE48M,OAASxB,EAASp7M,EAAE48M,OAASn0D,IAAezoJ,EAAEw/L,qBAAqBx/L,EAAE48M,OAAS58M,EAAE47M,mBAC1FqB,EAAYj9M,EAAE48M,QAChB58M,EAAEw/L,qBAAqBx/L,EAAE48M,OAAQ,GAE/BxB,EAASp7M,EAAE87M,OAASb,GAAiBE,GAAqB8B,EAAYj9M,EAAE87M,MAAO,CACjF,IAAIoB,EAAYz0D,IAAew0D,EAAYj9M,EAAE87M,OAAuB,IAAd5B,EAElDvkN,GADA3iB,EAAU8nO,IAAkBoC,EAAYl9M,EAAE9N,KAAKuqN,eAAez8M,EAAEo6M,wBAA0BloN,EAAKymN,SAAS34M,EAAE87M,OAClGrzD,IAAey0D,EAAY,kBAAevnO,GACtD2mO,EAAoBtpO,EAAS2iB,GACzBqnN,EACFh9M,EAAE+uM,gBAAgB/7N,EAASqoG,EAAK6wG,QAASz7H,EAAY+vG,GAErDxgK,EAAEgvM,oBAAoBh8N,EAASqoG,EAAK6wG,QAASz7H,EAAY+vG,GAEvDxgK,EAAE8oJ,OACJ9oJ,EAAEm9M,gBAAgBnqO,EAASqoG,EAAK6wG,SAE7B+uB,GAAkBxyD,IACrB2yD,EAASp7M,EAAE87M,OAAQ,EAEvB,CACA,IAAKX,IAAsBC,EAASp7M,EAAE48M,OAAS3B,GAAiBgC,EAAYj9M,EAAE48M,OAAQ,CAChFM,EAAYz0D,IAAew0D,EAAYj9M,EAAE48M,OAAuB,IAAd1C,EAClDlnO,EAAU8nO,IAAkBoC,EAAYl9M,EAAE9N,KAAKuqN,eAAez8M,EAAEq6M,wBAA0BnoN,EAAKymN,SAAS34M,EAAE48M,OAC9GN,EAAoBtpO,EAASy1K,IAAey0D,EAAY,kBAAevnO,GACnEqnO,EACFh9M,EAAE+uM,gBAAgB/7N,EAASqoG,EAAKp2E,KAAMwrD,EAAY+vG,GAElDxgK,EAAE8uM,mBAAmB97N,EAASqoG,EAAKp2E,KAAMwrD,EAAY+vG,GAEnDxgK,EAAE8oJ,OACJ9oJ,EAAEm9M,gBAAgBnqO,EAASqoG,EAAKp2E,MAE7Bg2M,GAAkBxyD,IACrB2yD,EAASp7M,EAAE48M,OAAQ,EAEvB,CACA,GAAI58M,EAAE+oJ,UAAYoyD,GAAqBC,EAASp7M,EAAE+7M,cAAgBd,EAAe,CAC3EjoO,EAAU8nO,GAAiB5oN,EAAKymN,SAAS34M,EAAE+7M,YAE/C,GADAO,EAAoBtpO,GACE,GAAlBgtB,EAAEwwL,UAAU,KAAYxwL,EAAE8wL,UAAU0B,WAAaxyL,EAAE+1L,UAAUvD,WAAY,CACvEniI,EAAOrwD,EAAEoC,GAAGiuD,OAAhB,IACIvV,EAAcj8D,EAAMxJ,KAAK,8BAA8BN,MAAQs7E,EACnEr9E,EAAQg6B,UAAY8tC,EACpB9nE,EAAQ47B,UAAY,QAAU/vB,EAAMxJ,KAAK,uBAAuBN,MAAM,GAAK,IAAM8J,EAAMxJ,KAAK,uBAAuBN,MAAM,GAAK,IAAM8J,EAAMxJ,KAAK,uBAAuBN,MAAM,GAAK,IAAM8J,EAAMxJ,KAAK,yBAAyBN,MAAQ,IACnO/B,EAAQusF,SAASv/D,EAAEwwL,UAAU,GAAIxwL,EAAEwwL,UAAU,GAAIxwL,EAAEwwL,UAAU,GAAKxwL,EAAEwwL,UAAU,GAAIxwL,EAAEwwL,UAAU,GAAKxwL,EAAEwwL,UAAU,IAC3G11I,EAAc,IAChB9nE,EAAQ67B,YAAc,QAAUhwB,EAAMxJ,KAAK,8BAA8BN,MAAM,GAAK,IAAM8J,EAAMxJ,KAAK,8BAA8BN,MAAM,GAAK,IAAM8J,EAAMxJ,KAAK,8BAA8BN,MAAM,GAAK,IAAM8J,EAAMxJ,KAAK,yBAAyBN,MAAQ,IAC1P/B,EAAQgjO,WAAWh2M,EAAEwwL,UAAU,GAAIxwL,EAAEwwL,UAAU,GAAIxwL,EAAEwwL,UAAU,GAAKxwL,EAAEwwL,UAAU,GAAIxwL,EAAEwwL,UAAU,GAAKxwL,EAAEwwL,UAAU,IAErH,CACA,GAAIt+L,EAAKmgM,oBAAsBryL,EAAE8wL,UAAU0B,UAAW,CAChDniI,EAAOrwD,EAAEoC,GAAGiuD,OAAhB,IACI/uE,EAAM4Q,EAAKmgM,kBACfr/M,EAAQ47B,UAAY,QAAU/vB,EAAMxJ,KAAK,mBAAmBN,MAAM,GAAK,IAAM8J,EAAMxJ,KAAK,mBAAmBN,MAAM,GAAK,IAAM8J,EAAMxJ,KAAK,mBAAmBN,MAAM,GAAK,IAAM8J,EAAMxJ,KAAK,qBAAqBN,MAAQ,IACnN/B,EAAQy9B,YACRz9B,EAAQg9B,IAAI1uB,EAAIyR,EAAGzR,EAAIswB,EAAG/yB,EAAMxJ,KAAK,kBAAkB0uJ,QAAU1zE,EAAM,EAAG,EAAIj3E,KAAK40B,IACnFh7B,EAAQgqB,MACV,CACA,IAAIogN,EAAep9M,EAAEw9L,eACrB,GAAIx9L,EAAE+oJ,SAAWq0D,EAAc,CAC7BA,EAAehkO,KAAKugF,MAAMyjJ,GAC1B,IAAIC,EAAMjkO,KAAKugF,MAAM,IAAOyjJ,GAC5BpqO,EAAQg+E,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACpCh+E,EAAQ47B,UAAY,wBACpB57B,EAAQ67B,YAAc,wBACtB77B,EAAQg6B,UAAY,EACpBh6B,EAAQylC,SAAS,aAAe2kM,EAAe,SAAWC,EAAM,OAAQ,EAAG,IAC3E,IAAIC,EAAS,GACbtqO,EAAQgjO,WAAW,EAAG,GAAI,IAAK,IAC/BhjO,EAAQusF,SAAS,EAAG,GAAI,IAAMnmF,KAAKyI,IAAIw7N,EAAMC,EAAQ,GAAI,GAC3D,CACKrC,IACHG,EAASp7M,EAAE+7M,aAAc,EAE7B,CAGA,GAAItzD,GAA4B,IAAdyxD,EAAiB,CACjC,IAAIqD,EAAUrrN,EAAKymN,SAAS34M,EAAE87M,MAC1B0B,EAAUx9M,EAAE9N,KAAKioN,eAAen6M,EAAEo6M,wBAClCqD,EAAUvrN,EAAKymN,SAAS34M,EAAE48M,MAC1Bc,EAAU19M,EAAE9N,KAAKioN,eAAen6M,EAAEq6M,wBAClCsD,EAAiB,SAAwBvyD,EAAKp5D,EAAK4rH,GACrDxyD,EAAIp6F,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAC5B4sJ,IAAcpC,EAChBpwD,EAAI/kJ,UAAU,EAAG,EAAGrG,EAAEs6M,YAAat6M,EAAEu6M,cAErC8B,EAAQjxD,EAAK,EAAG,EAAGprJ,EAAEs6M,YAAat6M,EAAEu6M,cAEtC,IAAIhrI,EAAM2qI,EACV9uD,EAAIrqE,UAAUiR,EAEd,EAAG,EAEHhyF,EAAEs6M,YAAc/qI,EAAKvvE,EAAEu6M,aAAehrI,EAEtC,EAAG,EAEHvvE,EAAEs6M,YAAat6M,EAAEu6M,aAEnB,GAEIa,EAASp7M,EAAE87M,OAASmB,EAAYj9M,EAAE87M,SACpC6B,EAAeJ,EAASC,EAASP,EAAYj9M,EAAE87M,OAC/CV,EAASp7M,EAAE87M,OAAQ,IAEjBV,EAASp7M,EAAE48M,OAASK,EAAYj9M,EAAE48M,SACpCe,EAAeF,EAASC,EAAST,EAAYj9M,EAAE48M,OAC/CxB,EAASp7M,EAAE48M,OAAQ,EAEvB,CACA58M,EAAEm8M,aAAeppF,EACb/yH,EAAE47M,qBACJ57M,EAAE47M,oBAAqB,EACvB57M,EAAE69M,mBAAoB,EACtB79M,EAAEyoJ,YAAa,GAEbA,IACFzoJ,EAAE07M,kBAAoBtkN,YAAW,WAC/B4I,EAAE07M,kBAAoB,KACtB17M,EAAEw/L,qBAAqBx/L,EAAE87M,OAAQ,EACjC97M,EAAEw/L,qBAAqBx/L,EAAE48M,OAAQ,EACjC58M,EAAEyoJ,YAAa,EACfzoJ,EAAE47M,oBAAsBN,EACxBt7M,EAAE27M,SAAW,EACbP,EAASp7M,EAAE87M,OAAQ,EACnBV,EAASp7M,EAAE48M,OAAQ,EACnB58M,EAAEiwE,QACJ,GAAGyoI,KAEAoC,GACH14M,EAAGs6E,KAAK,SAEZ,EA2IA,IAzIA,IAAIohI,GAAQ,CAGZA,gBAAwB,SAAU9qO,EAAS+f,EAAG6e,EAAG6J,EAAOC,EAAQ/c,GAC9D,IAAIs5G,EAAQx8F,EAAQ,EAChBktB,EAAQjtB,EAAS,EACjB1oC,EAAQy9B,WACVz9B,EAAQy9B,YAEVz9B,EAAQkmC,OAAOnmB,EAAIklH,EAAQt5G,EAAO,GAAIiT,EAAI+2B,EAAQhqC,EAAO,IACzD,IAAK,IAAI1nB,EAAI,EAAGA,EAAI0nB,EAAO1pB,OAAS,EAAGgC,IACrCjE,EAAQ8gC,OAAO/gB,EAAIklH,EAAQt5G,EAAW,EAAJ1nB,GAAQ26B,EAAI+2B,EAAQhqC,EAAW,EAAJ1nB,EAAQ,IAEvEjE,EAAQ09B,WACV,EACAotM,qBAA6B,SAAU9qO,EAAS+f,EAAG6e,EAAG6J,EAAOC,EAAQ/c,GACnE,IAAIs5G,EAAQx8F,EAAQ,EAChBktB,EAAQjtB,EAAS,EACjBm4F,EAAeqE,GAAsBz8F,EAAOC,GAC5C1oC,EAAQy9B,WACVz9B,EAAQy9B,YAEV,IAAK,IAAI5tB,EAAK,EAAGA,EAAK8b,EAAO1pB,OAAS,EAAG4N,IAAM,CAC7C,IAAIu1H,OAAW,EACbC,OAAS,EAETD,EADS,IAAPv1H,EACS8b,EAAO1pB,OAAS,EAEX,EAAL4N,EAAS,EAEtBw1H,EAAc,EAALx1H,EAAS,EAClB,IAAIV,EAAK4Q,EAAIklH,EAAQt5G,EAAY,EAAL9b,GACxBof,EAAK2P,EAAI+2B,EAAQhqC,EAAY,EAAL9b,EAAS,GACjCwwF,GAAY10E,EAAOy5G,GAAYz5G,EAAO05G,GAAU15G,EAAOy5G,EAAW,GAAKz5G,EAAO05G,EAAS,GACvFj4G,EAASyzG,EAAez6H,KAAKgnH,IAAIhnH,KAAKk6F,KAAKD,GAAY,GACvDilC,EAAOn2H,EAAKie,EAASzB,EAAOy5G,GAC5BG,EAAOt2G,EAAK7B,EAASzB,EAAOy5G,EAAW,GACvCI,EAAOr2H,EAAKie,EAASzB,EAAO05G,GAC5BI,EAAOx2G,EAAK7B,EAASzB,EAAO05G,EAAS,GAC9B,IAAPx1H,EACF7P,EAAQkmC,OAAOo/F,EAAMC,GAErBvlI,EAAQ8gC,OAAOwkG,EAAMC,GAEvBvlI,EAAQ+qO,MAAM57N,EAAI8f,EAAIu2G,EAAMC,EAAM5E,EACpC,CACA7gI,EAAQ09B,WACV,EAGAotM,uBAA+B,SAAU9qO,EAAS+f,EAAG6e,EAAG6J,EAAOC,GAC7D,IAAI2W,EAAY5W,EAAQ,EACpB2/B,EAAa1/B,EAAS,EACtBm4F,EAAeC,GAAwBr4F,EAAOC,GAC9C1oC,EAAQy9B,WACVz9B,EAAQy9B,YAIVz9B,EAAQkmC,OAAOnmB,EAAG6e,EAAIwpC,GAEtBpoE,EAAQ+qO,MAAMhrN,EAAIs/B,EAAWzgB,EAAIwpC,EAAYroD,EAAIs/B,EAAWzgB,EAAGiiG,GAE/D7gI,EAAQ+qO,MAAMhrN,EAAIs/B,EAAWzgB,EAAIwpC,EAAYroD,EAAG6e,EAAIwpC,EAAYy4D,GAEhE7gI,EAAQ+qO,MAAMhrN,EAAIs/B,EAAWzgB,EAAIwpC,EAAYroD,EAAIs/B,EAAWzgB,EAAGiiG,GAE/D7gI,EAAQ+qO,MAAMhrN,EAAIs/B,EAAWzgB,EAAIwpC,EAAYroD,EAAG6e,EAAIwpC,EAAYy4D,GAEhE7gI,EAAQ8gC,OAAO/gB,EAAG6e,EAAIwpC,GACtBpoE,EAAQ09B,WACV,EACAotM,6BAAqC,SAAU9qO,EAAS+f,EAAG6e,EAAG6J,EAAOC,GACnE,IAAI2W,EAAY5W,EAAQ,EACpB2/B,EAAa1/B,EAAS,EACtBm4F,EAAeC,GAAwBr4F,EAAOC,GAC9C1oC,EAAQy9B,WACVz9B,EAAQy9B,YAIVz9B,EAAQkmC,OAAOnmB,EAAG6e,EAAIwpC,GACtBpoE,EAAQ8gC,OAAO/gB,EAAIs/B,EAAWzgB,EAAIwpC,GAClCpoE,EAAQ8gC,OAAO/gB,EAAIs/B,EAAWzgB,GAC9B5+B,EAAQ+qO,MAAMhrN,EAAIs/B,EAAWzgB,EAAIwpC,EAAYroD,EAAG6e,EAAIwpC,EAAYy4D,GAChE7gI,EAAQ+qO,MAAMhrN,EAAIs/B,EAAWzgB,EAAIwpC,EAAYroD,EAAIs/B,EAAWzgB,EAAGiiG,GAC/D7gI,EAAQ8gC,OAAO/gB,EAAIs/B,EAAWzgB,EAAIwpC,GAClCpoE,EAAQ8gC,OAAO/gB,EAAG6e,EAAIwpC,GACtBpoE,EAAQ09B,WACV,EACAotM,qBAA6B,SAAU9qO,EAAS+f,EAAG6e,EAAG6J,EAAOC,GAC3D,IAAI2W,EAAY5W,EAAQ,EACpB2/B,EAAa1/B,EAAS,EACtBu+K,EAAe58E,KACfrqI,EAAQy9B,WACVz9B,EAAQy9B,YAEVz9B,EAAQkmC,OAAOnmB,EAAIs/B,EAAY4nK,EAAcroL,EAAIwpC,GACjDpoE,EAAQ8gC,OAAO/gB,EAAIs/B,EAAY4nK,EAAcroL,EAAIwpC,GACjDpoE,EAAQ8gC,OAAO/gB,EAAIs/B,EAAWzgB,EAAIwpC,EAAa6+I,GAC/CjnN,EAAQ8gC,OAAO/gB,EAAIs/B,EAAWzgB,EAAIwpC,EAAa6+I,GAC/CjnN,EAAQ8gC,OAAO/gB,EAAIs/B,EAAY4nK,EAAcroL,EAAIwpC,GACjDpoE,EAAQ8gC,OAAO/gB,EAAIs/B,EAAY4nK,EAAcroL,EAAIwpC,GACjDpoE,EAAQ8gC,OAAO/gB,EAAIs/B,EAAWzgB,EAAIwpC,EAAa6+I,GAC/CjnN,EAAQ8gC,OAAO/gB,EAAIs/B,EAAWzgB,EAAIwpC,EAAa6+I,GAC/CjnN,EAAQ09B,WACV,EACAotM,eAAuB,SAAU9qO,EAAS+f,EAAG6e,EAAG6J,EAAOC,GACrD,IAAI2W,EAAY5W,EAAQ,EACpB2/B,EAAa1/B,EAAS,EACtB0+K,EAASrnM,EAAIs/B,EACbgoK,EAAOtnM,EAAIs/B,EACXioK,EAAS1oL,EAAIwpC,EACbm/I,EAAO3oL,EAAIwpC,EACX4iK,EAAuBzgG,GAAwB9hG,EAAOC,GACtD4/K,EAAU0iB,EAAqBvgG,YAC/B49E,EAAU2iB,EAAqBxgG,aAC/B+9E,EAAgByiB,EAAqBtgG,gBAAkB49E,EACvDtoN,EAAQy9B,WACVz9B,EAAQy9B,YAEVz9B,EAAQkmC,OAAOkhL,EAAQE,EAASe,GAChCroN,EAAQ8gC,OAAOsmL,EAAQG,EAAOc,GAC9BroN,EAAQu5N,iBAAiBnS,EAASmB,EAAehB,EAAMH,EAASkB,EAASf,GACzEvnN,EAAQ8gC,OAAOumL,EAAOiB,EAASf,GAC/BvnN,EAAQu5N,iBAAiBlS,EAAOkB,EAAehB,EAAMF,EAAME,EAAOc,GAClEroN,EAAQ8gC,OAAOumL,EAAMC,EAASe,GAC9BroN,EAAQu5N,iBAAiBlS,EAAOkB,EAAejB,EAAQD,EAAOiB,EAAShB,GACvEtnN,EAAQ8gC,OAAOsmL,EAASkB,EAAShB,GACjCtnN,EAAQu5N,iBAAiBnS,EAASmB,EAAejB,EAAQF,EAAQE,EAASe,GAC1EroN,EAAQ09B,WACV,GACIutM,GAAO7kO,KAAKkgC,IAAI,GAChB4kM,GAAO9kO,KAAKmgC,IAAI,GAChBD,GAAM,CAAC,EACPC,GAAM,CAAC,EACP4kM,GAAkB/kO,KAAK40B,GAAK,GACvB/2B,GAAI,EAAImC,KAAK40B,GAAI/2B,GAAI,EAAImC,KAAK40B,GAAI/2B,IAAKknO,GAC9C7kM,GAAIriC,IAAKmC,KAAKkgC,IAAIriC,IAClBsiC,GAAItiC,IAAKmC,KAAKmgC,IAAItiC,IAEpB6mO,GAAMM,gBAAkB,SAAUprO,EAASwkI,EAASC,EAASh8F,EAAOC,GAIlE,GAHI1oC,EAAQy9B,WACVz9B,EAAQy9B,YAENz9B,EAAQm9B,QACVn9B,EAAQm9B,QAAQqnG,EAASC,EAASh8F,EAAQ,EAAGC,EAAS,EAAG,EAAG,EAAG,EAAItiC,KAAK40B,SAKxE,IAHA,IAAI80B,EAAMhI,EACNm3C,EAAKx2D,EAAQ,EACb4iM,EAAK3iM,EAAS,EACTzkC,EAAI,EAAImC,KAAK40B,GAAI/2B,EAAI,EAAImC,KAAK40B,GAAI/2B,GAAKknO,GAC9Cr7K,EAAO00E,EAAUvlC,EAAK34D,GAAIriC,GAAKgnO,GAAOhsI,EAAK14D,GAAItiC,GAAKinO,GACpDpjL,EAAO28E,EAAU4mG,EAAK9kM,GAAItiC,GAAKgnO,GAAOI,EAAK/kM,GAAIriC,GAAKinO,GAC1C,IAANjnO,EACFjE,EAAQkmC,OAAO4pB,EAAMhI,GAErB9nD,EAAQ8gC,OAAOgvB,EAAMhI,GAI3B9nD,EAAQ09B,WACV,EAGA,IAAI4tM,GAAQ,CAAC,EAoFb,SAASrpJ,GAAUC,EAAKC,GAItB,IAHA,IAAIC,EAAQC,KAAKH,GACbI,EAAO,IAAIzuE,YAAYuuE,EAAMngF,QAC7BsgF,EAAY,IAAI/sE,WAAW8sE,GACtBr+E,EAAI,EAAGA,EAAIm+E,EAAMngF,OAAQgC,IAChCs+E,EAAUt+E,GAAKm+E,EAAM1zE,WAAWzK,GAElC,OAAO,IAAIu+E,KAAK,CAACF,GAAO,CACtB79E,KAAM09E,GAEV,CACA,SAASM,GAAYC,GACnB,IAAIz+E,EAAIy+E,EAAOprE,QAAQ,KACvB,OAAOorE,EAAO+3E,OAAOx2J,EAAI,EAC3B,CACA,SAAS2+E,GAAOhjF,EAASywB,EAAQ8xD,GAC/B,IAAIU,EAAY,WACd,OAAOxyD,EAAOyyD,UAAUX,EAAUviF,EAAQmjF,QAC5C,EACA,OAAQnjF,EAAQgjF,QACd,IAAK,eACH,OAAO,IAAIo6D,IAAU,SAAU3oH,EAAS2uD,GACtC,IACE3yD,EAAO4yD,QAAO,SAAUC,GACV,MAARA,EACF7uD,EAAQ6uD,GAERF,EAAO,IAAIpnE,MAAM,uDAErB,GAAGumE,EAAUviF,EAAQmjF,QACvB,CAAE,MAAOI,GACPH,EAAOG,EACT,CACF,IACF,IAAK,OACH,OAAOlB,GAAUQ,GAAYI,KAAcV,GAC7C,IAAK,SACH,OAAOM,GAAYI,KACrB,IAAK,YACL,QACE,OAAOA,IAEb,CA7HAyoJ,GAAMC,aAAe,SAAUzhO,EAAG/I,GAChC,IAAIyqO,EAASpoO,SAASE,cAAc,UAGpC,OAFAkoO,EAAO/iM,MAAQ3+B,EACf0hO,EAAO9iM,OAAS3nC,EACT,CAACyqO,EAAQA,EAAOl7M,WAAW,MACpC,EACAg7M,GAAM3lJ,kBAAoB,SAAU/lF,GAClC,IAAIwvB,EAAKnvB,KAAKmvB,GACVi5E,EAAOj5E,EAAGgvI,kBACV1kF,EAAK2uB,EAAK9mB,cACVkqJ,EAAUxrO,KAAK4/L,4BACfp3J,EAAQ7oC,EAAQ8rO,KAAOtlO,KAAK0I,KAAK4qE,EAAG5vE,GAAK2hO,EAAQ,GACjD/iM,EAAS9oC,EAAQ8rO,KAAOtlO,KAAK0I,KAAK4qE,EAAG34E,GAAK0qO,EAAQ,GAClDE,EAAevpH,EAASxiH,EAAQklC,WAAas9E,EAASxiH,EAAQgsO,WAC9D11D,EAAUj2K,KAAK45F,gBACfvjE,EAAQ,EACZ,QAAsB3zB,IAAlB/C,EAAQ02B,MACVmS,GAAS7oC,EAAQ02B,MACjBoS,GAAU9oC,EAAQ02B,MAClBA,EAAQ12B,EAAQ02B,WACX,GAAIq1M,EAAc,CACvB,IAAIE,EAAY/4I,IACZg5I,EAAYh5I,IACZsvB,EAASxiH,EAAQklC,YACnB+mM,EAAYv1M,EAAQ12B,EAAQklC,SAAW2D,GAErC25E,EAASxiH,EAAQgsO,aACnBE,EAAYx1M,EAAQ12B,EAAQgsO,UAAYljM,GAE1CpS,EAAQlwB,KAAKyI,IAAIg9N,EAAWC,GAC5BrjM,GAASnS,EACToS,GAAUpS,CACZ,CACKq1M,IACHljM,GAASytI,EACTxtI,GAAUwtI,EACV5/I,GAAS4/I,GAEX,IAAI61D,EAAa3oO,SAASE,cAAc,UAExCyoO,EAAWtjM,MAAQA,EACnBsjM,EAAWrjM,OAASA,EACpBqjM,EAAWlgO,MAAM48B,MAAQA,EAAQ,KACjCsjM,EAAWlgO,MAAM68B,OAASA,EAAS,KACnC,IAAIsjM,EAAUD,EAAWz7M,WAAW,MAGpC,GAAImY,EAAQ,GAAKC,EAAS,EAAG,CAC3BsjM,EAAQ34M,UAAU,EAAG,EAAGoV,EAAOC,GAC/BsjM,EAAQnwI,yBAA2B,cACnC,IAAIowI,EAAchsO,KAAK0gM,uBACvB,GAAI/gM,EAAQ8rO,KAEVM,EAAQz1M,WAAWmjD,EAAG3vC,GAAKzT,GAAQojD,EAAG1vC,GAAK1T,GAC3C01M,EAAQ11M,MAAMA,EAAOA,GACrBr2B,KAAKwlF,aAAaumJ,EAASC,GAC3BD,EAAQ11M,MAAM,EAAIA,EAAO,EAAIA,GAC7B01M,EAAQz1M,UAAUmjD,EAAG3vC,GAAKzT,EAAOojD,EAAG1vC,GAAK1T,OACpC,CAEL,IAAIytD,EAAM30D,EAAG20D,MACT45G,EAAc,CAChB59K,EAAGgkE,EAAIhkE,EAAIuW,EACXsI,EAAGmlD,EAAInlD,EAAItI,GAEbA,GAASlH,EAAGiuD,OACZ2uJ,EAAQz1M,UAAUonK,EAAY59K,EAAG49K,EAAY/+J,GAC7CotM,EAAQ11M,MAAMA,EAAOA,GACrBr2B,KAAKwlF,aAAaumJ,EAASC,GAC3BD,EAAQ11M,MAAM,EAAIA,EAAO,EAAIA,GAC7B01M,EAAQz1M,WAAWonK,EAAY59K,GAAI49K,EAAY/+J,EACjD,CAGIh/B,EAAQgmF,KACVomJ,EAAQnwI,yBAA2B,mBACnCmwI,EAAQpwM,UAAYh8B,EAAQgmF,GAC5BomJ,EAAQ9uM,KAAK,EAAG,EAAGuL,EAAOC,GAC1BsjM,EAAQhiN,OAEZ,CACA,OAAO+hN,CACT,EA4CAT,GAAM1nJ,IAAM,SAAUhkF,GACpB,OAAOgjF,GAAOhjF,EAASK,KAAK0lF,kBAAkB/lF,GAAU,YAC1D,EACA0rO,GAAMznJ,IAAM,SAAUjkF,GACpB,OAAOgjF,GAAOhjF,EAASK,KAAK0lF,kBAAkB/lF,GAAU,aAC1D,EAEA,IAAIssO,GAAQ,CACZA,cAAsB,SAAUxnO,EAAM1E,EAASwkI,EAASC,EAASh8F,EAAOC,EAAQ/c,GAC9E,OAAQjnB,GACN,IAAK,UACH,OAAOzE,KAAKmrO,gBAAgBprO,EAASwkI,EAASC,EAASh8F,EAAOC,GAChE,IAAK,UACH,OAAOzoC,KAAKksO,gBAAgBnsO,EAASwkI,EAASC,EAASh8F,EAAOC,EAAQ/c,GACxE,IAAK,gBACH,OAAO1rB,KAAKmsO,qBAAqBpsO,EAASwkI,EAASC,EAASh8F,EAAOC,EAAQ/c,GAC7E,IAAK,iBACL,IAAK,kBACH,OAAO1rB,KAAKosO,uBAAuBrsO,EAASwkI,EAASC,EAASh8F,EAAOC,GACvE,IAAK,eACL,IAAK,gBACH,OAAOzoC,KAAKqsO,qBAAqBtsO,EAASwkI,EAASC,EAASh8F,EAAOC,GACrE,IAAK,uBACL,IAAK,yBACH,OAAOzoC,KAAKssO,6BAA6BvsO,EAASwkI,EAASC,EAASh8F,EAAOC,GAC7E,IAAK,SACH,OAAOzoC,KAAKusO,eAAexsO,EAASwkI,EAASC,EAASh8F,EAAOC,GAEnE,GAEI+jM,GAAKC,GACLC,GAAMD,GAAellO,UAWzB,SAASklO,GAAe9sO,GACtB,IAAIotB,EAAI/sB,KACR+sB,EAAE9N,KAAO,CACPwoN,SAAU,IAAI5gO,MAAM6lO,GAAIlF,eACxB9B,SAAU,IAAI7+N,MAAM6lO,GAAIlF,eACxBY,kBAAmB,IAAIvhO,MAAM6lO,GAAIlF,eACjCN,eAAgB,IAAIrgO,MAAM6lO,GAAIhF,cAC9B8B,eAAgB,IAAI3iO,MAAM6lO,GAAIlF,gBAEhC,IAAImF,EAAe,8BACfC,EAAgB,gBACpB7/M,EAAE9N,KAAKsoN,gBAAkBpkO,SAASE,cAAc,OAChD,IAAIwpO,EAAiB9/M,EAAE9N,KAAKsoN,gBAAgB37N,MAC5CmhB,EAAE9N,KAAKsoN,gBAAgB37N,MAAM+gO,GAAgBC,EAC7CC,EAAe/6M,SAAW,WAC1B+6M,EAAeroJ,OAAS,IACxBqoJ,EAAet3B,SAAW,SAC1B,IAAIzqK,EAAYnrC,EAAQwvB,GAAG2b,YAC3BA,EAAU7mB,YAAY8I,EAAE9N,KAAKsoN,iBAC7Bz8L,EAAUl/B,MAAM+gO,GAAgBC,EAChC,IAAIE,EAAW,CACb,sBAAuB,OACvB,mBAAoB,YACpB,cAAe,OACf,8BAA+B,gBAC/B,gBAAiB,QAEfrqH,MACFqqH,EAAS,oBAAsB,OAC/BA,EAAS,gBAAkB,QAE7B,IAAK,IAAI9oO,EAAI,EAAGA,EAAI0oO,GAAIlF,cAAexjO,IAAK,CAC1C,IAAIosB,EAASrD,EAAE9N,KAAKwoN,SAASzjO,GAAKb,SAASE,cAAc,UACzD0pB,EAAE9N,KAAKymN,SAAS1hO,GAAKosB,EAAOC,WAAW,MACvCrtB,OAAO+E,KAAK+kO,GAAUliO,SAAQ,SAAUC,GACtCulB,EAAOxkB,MAAMf,GAAKiiO,EAASjiO,EAC7B,IACAulB,EAAOxkB,MAAMkmB,SAAW,WACxB1B,EAAOK,aAAa,UAAW,QAAUzsB,GACzCosB,EAAOxkB,MAAM44E,OAASj2E,OAAOm+N,GAAIlF,cAAgBxjO,GACjD+oB,EAAE9N,KAAKsoN,gBAAgBtjN,YAAYmM,GACnCrD,EAAE9N,KAAKmpN,kBAAkBpkO,IAAK,CAChC,CACA+oB,EAAE9N,KAAK8tN,UAAYhgN,EAAE9N,KAAKwoN,SAAS,GACnC16M,EAAE9N,KAAKwoN,SAASiF,GAAI7D,MAAMp4M,aAAa,UAAW,QAAUi8M,GAAI7D,KAAO,SACvE97M,EAAE9N,KAAKwoN,SAASiF,GAAI5D,YAAYr4M,aAAa,UAAW,QAAUi8M,GAAI5D,WAAa,cACnF/7M,EAAE9N,KAAKwoN,SAASiF,GAAI/C,MAAMl5M,aAAa,UAAW,QAAUi8M,GAAI/C,KAAO,SACvE,IAAS3lO,EAAI,EAAGA,EAAI0oO,GAAIhF,aAAc1jO,IACpC+oB,EAAE9N,KAAKioN,eAAeljO,GAAKb,SAASE,cAAc,UAClD0pB,EAAE9N,KAAKuqN,eAAexlO,GAAK+oB,EAAE9N,KAAKioN,eAAeljO,GAAGqsB,WAAW,MAC/DtD,EAAE9N,KAAKioN,eAAeljO,GAAG4H,MAAMkmB,SAAW,WAC1C/E,EAAE9N,KAAKioN,eAAeljO,GAAGysB,aAAa,UAAW,SAAWzsB,GAC5D+oB,EAAE9N,KAAKioN,eAAeljO,GAAG4H,MAAM44E,OAASj2E,QAAQvK,EAAI,GACpD+oB,EAAE9N,KAAKioN,eAAeljO,GAAG4H,MAAM06K,WAAa,SAI9Cv5J,EAAEigN,cAAe,EACjB,IAAIC,EAAUnlI,KACVolI,EAAe,SAAsBzzJ,GACvC,MAAO,CACL35D,GAAI25D,EAAG3vC,GAAK2vC,EAAGxvC,IAAM,EACrBtL,GAAI86C,EAAG1vC,GAAK0vC,EAAGvvC,IAAM,EAEzB,EACIijM,EAAkB,SAAyB1zJ,GAC7C,MAAO,CACL35D,GAAI25D,EAAG5vE,EAAI,EACX80B,GAAI86C,EAAG34E,EAAI,EAEf,EACIssO,EAAgC,SAAuC1uI,GACzE,IAAIgzB,EAAKhzB,EAAI,GAAG7d,SACZm2B,EAAO0a,EAAG27G,yBAA2B37G,EAAGgyG,oBAC5C,OAAQ1sH,CACV,EACIs2H,EAAc,SAAqB5uI,GACrC,OAAOA,EAAI,GAAG7d,SAASo8F,OACzB,EACIswD,EAAc,SAAqB7uI,GACrC,OAAOA,EAAI,GAAG7d,SAASu7F,aACzB,EACIoxD,EAAoB,SAA2B9uI,GACjD,OAAOA,EAAI,GAAG7d,SAAS27F,mBACzB,EACIixD,EAAoB,SAA2B/uI,GACjD,OAAOA,EAAI,GAAG7d,SAAS87F,mBACzB,EACI00C,EAAc,SAAqBtxN,EAAS2+F,EAAKjlB,EAAIw5I,EAAkB2N,GACzE,OAAO7zM,EAAEskM,YAAYtxN,EAAS2+F,EAAKjlB,GAAI,GAAO,EAAOmnJ,EACvD,EACI1E,EAAY,SAAmBn8N,EAAS2+F,EAAKjlB,EAAIw5I,EAAkB2N,GACrE,OAAO7zM,EAAEowM,gBAAgBp9N,EAAS2+F,EAAKjlB,EAAIw5I,EAAkB,OAAQ2N,EACvE,EACI8M,EAAkB,SAAyB3tO,EAAS2+F,EAAKjlB,EAAIw5I,EAAkB2N,GACjF,OAAO7zM,EAAEowM,gBAAgBp9N,EAAS2+F,EAAKjlB,EAAIw5I,EAAkB,SAAU2N,EACzE,EACI+M,EAAkB,SAAyB5tO,EAAS2+F,EAAKjlB,EAAIw5I,EAAkB2N,GACjF,OAAO7zM,EAAEowM,gBAAgBp9N,EAAS2+F,EAAKjlB,EAAIw5I,EAAkB,SAAU2N,EACzE,EACIgN,EAAgB,SAAuBlvI,GAEzC,OADAA,EAAIpd,cACGod,EAAI,GAAG7d,SAAS4xC,UACzB,EACIo7G,EAAc,SAAqBnvI,GAErC,OADAA,EAAIpd,cACGod,EAAI,GAAG7d,SAAS8xC,YAAYC,MAAQq6G,CAC7C,EACIa,EAAoB,SAA2BpvI,GAEjD,OADAA,EAAIpd,cACGod,EAAI,GAAG7d,SAAS8xC,YAAYjuH,QAAUuoO,CAC/C,EACIc,EAAoB,SAA2BrvI,GAEjD,OADAA,EAAIpd,cACGod,EAAI,GAAG7d,SAAS8xC,YAAYjtH,QAAUunO,CAC/C,EACIe,EAAwB,SAA+BtvI,EAAKu0H,GAC9D,OAAOA,CACT,EACIgb,EAA0B,SAAiCvvI,GAC7D,OAAOwuI,EAAaU,EAAclvI,GACpC,EACIwvI,EAAgB,SAAuBlrH,EAAQsd,EAAI5hC,GACrD,IAAI+jG,EAAMz/E,EAASA,EAAS,IAAM,GAClC,MAAO,CACLljG,EAAGwgH,EAAGxgH,EAAI4+E,EAAImyD,OAAO4xC,EAAM,iBAAiB3xC,QAC5CnyH,EAAG2hG,EAAG3hG,EAAI+/D,EAAImyD,OAAO4xC,EAAM,iBAAiB3xC,QAEhD,EACIq9E,EAAU,SAAiBzvI,EAAK5+E,EAAG6e,GACrC,IAAI47D,EAAKmE,EAAI,GAAG7d,SAASC,SACzB,MAAO,CACLhhE,EAAGy6E,EAAGz6E,GACN6e,EAAG47D,EAAG57D,GAEV,EACIyvM,EAAwB,SAA+B1vI,GACzD,OAAOwvI,EAAc,GAAIC,EAAQzvI,EAAK,SAAU,UAAWA,EAC7D,EACI2vI,EAA8B,SAAqC3vI,GACrE,OAAOwvI,EAAc,SAAUC,EAAQzvI,EAAK,eAAgB,gBAAiBA,EAC/E,EACI4vI,EAA8B,SAAqC5vI,GACrE,OAAOwvI,EAAc,SAAUC,EAAQzvI,EAAK,eAAgB,gBAAiBA,EAC/E,EACI6vI,EAA2B,SAAkC7vI,GAC/D,OAAOyuI,EAAgBS,EAAclvI,GACvC,EACI8vI,EAA+B,SAAsC9vI,GACvE,OAAOyuI,EAAgBW,EAAkBpvI,GAC3C,EACI+vI,EAA+B,SAAsC/vI,GACvE,OAAOyuI,EAAgBY,EAAkBrvI,GAC3C,EACIgwI,EAAyB,SAAgChwI,GAC3D,IAAIjlB,EAAKo0J,EAAYnvI,GACjB7gD,EAAIsvL,EAAgBU,EAAYnvI,IACpC,GAAIA,EAAIO,SAAU,CAChB,OAAQP,EAAImyD,OAAO,eAAe/uJ,OAChC,IAAK,OACH+7C,EAAE/9B,GAAK25D,EAAG5vE,EACV,MACF,IAAK,QACHg0C,EAAE/9B,EAAI,EACN,MAEJ,OAAQ4+E,EAAImyD,OAAO,eAAe/uJ,OAChC,IAAK,MACH+7C,EAAElf,GAAK86C,EAAG34E,EACV,MACF,IAAK,SACH+8C,EAAElf,EAAI,EACN,MAEN,CACA,OAAOkf,CACT,EACI28K,EAAcztM,EAAE9N,KAAKu7M,YAAc,IAAI7I,GAAoB5kM,EAAG,CAChEsqI,OAAQi2E,EACR9e,qBAAsB4e,EACtB/b,YAAaA,EACbC,eAAgBsc,EAChBrc,iBAAkB0c,EAClBzc,kBAAmB+c,EACnB9c,qBAAqB,EACrBC,uBAAuB,IAErB6J,EAAcxuM,EAAE9N,KAAKs8M,YAAc,IAAI5J,GAAoB5kM,EAAG,CAChEsqI,OAAQk2E,EACRlc,YAAa6K,EACb5K,eAAgBuc,EAChBtc,iBAAkB6c,EAClB5c,kBAAmBkd,EACnBxvJ,UAAW8uJ,IAETxS,EAAczuM,EAAE9N,KAAKu8M,YAAc,IAAI7J,GAAoB5kM,EAAG,CAChEsqI,OAAQm2E,EACRnc,YAAaqc,EACbpc,eAAgBwc,EAChBvc,iBAAkB8c,EAClB7c,kBAAmBgd,EACnBtvJ,UAAW8uJ,IAETvS,EAAc1uM,EAAE9N,KAAKw8M,YAAc,IAAI9J,GAAoB5kM,EAAG,CAChEsqI,OAAQo2E,EACRpc,YAAasc,EACbrc,eAAgByc,EAChBxc,iBAAkB+c,EAClB9c,kBAAmBid,EACnBvvJ,UAAW8uJ,IAEThS,EAAcjvM,EAAE9N,KAAK+8M,YAAc,IAAI7F,GAAoBppM,GAC/DA,EAAE4hN,kBAAiB,SAAiCz6D,EAAU9rE,GAE5DoyH,EAAYhG,mBAAmBpsH,GAC/BmzH,EAAY/G,mBAAmBpsH,GAC/BozH,EAAYhH,mBAAmBpsH,GAC/BqzH,EAAYjH,mBAAmBpsH,GAG/B4zH,EAAYxH,mBAAmBpsH,GAG/B,IAAK,IAAIx4F,EAAK,EAAGA,EAAKw4F,EAAKpmG,OAAQ4N,IAAM,CACvC,IAAI8hH,EAAKtpB,EAAKx4F,GAAIixE,SAClB6wC,EAAG27G,uBAAyB37G,EAAGgyG,mBACjC,CACF,IACA,IAAIkL,EAAiB,SAAwBnc,GAC3C,IAAK,IAAIzuN,EAAI,EAAGA,EAAIyuN,EAAKzwN,OAAQgC,IAC/Bg4N,EAAYtD,yBAAyBjG,EAAKzuN,GAAG06F,IAEjD,EACA87H,EAAY/E,UAAUmZ,GACtBrT,EAAY9F,UAAUmZ,GACtBpT,EAAY/F,UAAUmZ,GACtBnT,EAAYhG,UAAUmZ,EACxB,CAvPAlC,GAAIlF,cAAgB,EAEpBkF,GAAI5D,WAAa,EACjB4D,GAAI/C,KAAO,EACX+C,GAAI7D,KAAO,EACX6D,GAAIhF,aAAe,EAEnBgF,GAAI9E,eAAiB,EACrB8E,GAAIvF,uBAAyB,EAC7BuF,GAAItF,uBAAyB,EA+O7BsF,GAAIvtB,WAAa,SAAUjkK,EAAO+5H,GAChC,IAAIloJ,EAAI/sB,KACR,OAAQk7C,GACN,IAAK,OACHnuB,EAAE9N,KAAKmpN,kBAAkBsE,GAAI7D,MAAQ5zD,EACrC,MACF,IAAK,OACHloJ,EAAE9N,KAAKmpN,kBAAkBsE,GAAI/C,MAAQ10D,EACrC,MACF,IAAK,SACHloJ,EAAE9N,KAAKmpN,kBAAkBsE,GAAI5D,YAAc7zD,EAC3C,MAEN,EAGA,IAAI45D,GAA+B,qBAAX1tJ,OACxBurJ,GAAIoC,cAAgB,SAAUrrK,GAC5B,QAAW/gE,IAAP+gE,EACF,OAAOzjE,KAAKgtO,aAEdhtO,KAAKgtO,eAAevpK,CACtB,EACAipK,GAAIlP,SAAW,WACb,OAAOqR,IAAc7uO,KAAKgtO,YAC5B,EACAN,GAAIxU,gBAAkB,SAAUn4N,EAASk1K,GACF,MAAjCl1K,EAAQgvO,sBACVhvO,EAAQgvO,sBAAwB95D,GAEhCl1K,EAAQivO,4BAA8B/5D,EACtCl1K,EAAQkvO,yBAA2Bh6D,EACnCl1K,EAAQmvO,wBAA0Bj6D,EAEtC,EACAy3D,GAAI7R,gBAAkB,SAAU96N,GAC9B,OAAqC,MAAjCA,EAAQgvO,sBACHhvO,EAAQgvO,sBAERhvO,EAAQivO,6BAA+BjvO,EAAQkvO,0BAA4BlvO,EAAQmvO,uBAE9F,EACAxC,GAAItX,oBAAsB,SAAU5sL,EAAOC,GACzC,IAAIrY,EAQJ,MAP2F,eAA3D,qBAApB++M,gBAAkC,YAAcz5J,EAAQy5J,kBAClE/+M,EAAS,IAAI++M,gBAAgB3mM,EAAOC,IAEpCrY,EAASjtB,SAASE,cAAc,UAChC+sB,EAAOoY,MAAQA,EACfpY,EAAOqY,OAASA,GAEXrY,CACT,EACA,CAAC+oM,GAAOU,GAAOoC,GAAO2C,GAAO4B,GAAO0C,GAAOsC,GAAOqF,GAAOQ,GAAOY,IAAOrhO,SAAQ,SAAUysD,GACvFqsD,GAAOgpH,GAAKr1K,EACd,IAEA,IAAIE,GAAW,CAAC,CACd9yD,KAAM,OACNm8E,KAAMw8G,IACL,CACD34L,KAAM,OACNm8E,KAAMyqI,IACL,CACD5mN,KAAM,SACNm8E,KAAM4rJ,KAGJ4C,GAAU,CAAC,CACb5qO,KAAM,SACN6qO,WAAYlnI,IACX,CACD3jG,KAAM,WACN6qO,WAAY93K,KAIV83K,GAAa,CAAC,EAGdj2I,GAAU,CAAC,EACf,SAASk2I,GAAa9qO,EAAMC,EAAM8qO,GAChC,IAAIC,EAAMD,EACNE,EAAc,SAAqBj6J,GACrC/hD,GAAK,qBAAuBhvB,EAAO,UAAYD,EAAO,YAAcgxE,EAAQ,8DAC9E,EACA,GAAa,SAAThxE,EAAiB,CACnB,GAAIspL,GAAKvmL,UAAU9C,GACjB,OAAOgrO,EAAYhrO,GAEnBqpL,GAAKvmL,UAAU9C,GAAQ8qO,CAE3B,MAAO,GAAa,eAAT/qO,EAAuB,CAChC,GAAI4O,GAAW7L,UAAU9C,GACvB,OAAOgrO,EAAYhrO,GAEnB2O,GAAW7L,UAAU9C,GAAQ8qO,CAEjC,MAAO,GAAa,WAAT/qO,EAAmB,CAiB5B,IAdA,IAAIw9F,EAAS,SAAgBriG,GAC3BK,KAAKL,QAAUA,EACf4vO,EAAWlvO,KAAKL,KAAML,GAGjBuiH,EAAYliH,KAAK6gF,YACpB7gF,KAAK6gF,SAAW,CAAC,GAEnB7gF,KAAK6gF,SAAS1xD,GAAKxvB,EAAQwvB,GAC3BnvB,KAAK6gF,SAASkxC,UAAY,GAC1B/xH,KAAKgzH,eACP,EACI08G,EAAc1tI,EAAOz6F,UAAYvE,OAAOgE,OAAOuoO,EAAWhoO,WAC1DooO,EAAe,GACV3rO,EAAI,EAAGA,EAAI2rO,EAAa3tO,OAAQgC,IAAK,CAC5C,IAAI4rO,EAASD,EAAa3rO,GAC1B0rO,EAAYE,GAAUF,EAAYE,IAAW,WAC3C,OAAO5vO,IACT,CACF,CAGI0vO,EAAYhxL,QAAUgxL,EAAYxsN,IACpCwsN,EAAYxsN,IAAM,WAEhB,OADAljB,KAAK0+C,QACE1+C,IACT,GACU0vO,EAAYhxL,OAASgxL,EAAYxsN,MAC3CwsN,EAAYhxL,MAAQ,WAElB,OADA1+C,KAAKkjB,MACEljB,IACT,GAEF,IAAI6vO,EAAUN,EAAWhoO,UAAUuwB,KACnC43M,EAAY53M,KAAO,WACjB,IAAIqsE,EAAOnkG,KAAKL,QAChB,GAAIwkG,GAAQA,EAAKmD,QAAS,CACxB,IAAI64C,EAAOngJ,KAAKoiK,WAChB,GAAIjiB,EACF,IAAK,IAAIvwI,EAAK,EAAGA,EAAKuwI,EAAKn+I,OAAQ4N,IACjCuwI,EAAKvwI,GAAIkoB,MAGf,CAMA,OALI+3M,EACFA,EAAQxvO,KAAKL,MAEbA,KAAKypG,KAAK,cAELzpG,IACT,EACK0vO,EAAYlsJ,UACfksJ,EAAYlsJ,QAAU,WACpB,OAAOxjF,IACT,GAEF0vO,EAAYvgN,GAAK,WACf,OAAOnvB,KAAK6gF,SAAS1xD,EACvB,EACA,IAAI2gN,EAAQ,SAAe3nI,GACzB,OAAOA,EAAOtnB,SAAS1xD,EACzB,EACI4gN,EAAc,CAChBl0E,eAAgB,SAAwB1zD,EAAQ1L,GAC9CA,EAAI0L,OAASA,EACb1L,EAAIttE,GAAK2gN,EAAM3nI,GACf1L,EAAI/2F,OAASyiG,CACf,EACA8zD,OAAQ,WACN,OAAO,CACT,EACA97J,OAAQ,SAAgBgoG,GACtB,OAAO2nI,EAAM3nI,EACf,GAEFub,GAAOgsH,EAAa,CAClB18G,cAAe,WAEb,OADAhzH,KAAK6gF,SAAS88E,QAAU,IAAIvB,GAAQ2zE,EAAa/vO,MAC1CA,IACT,EACA29J,QAAS,WACP,OAAO39J,KAAK6gF,SAAS88E,OACvB,EACAl6F,GAAI,SAAYg5B,EAAK9jB,GAEnB,OADA34E,KAAK29J,UAAUl6F,GAAGg5B,EAAK9jB,GAChB34E,IACT,EACA07E,IAAK,SAAa+gB,EAAK9jB,GAErB,OADA34E,KAAK29J,UAAUjiF,IAAI+gB,EAAK9jB,GACjB34E,IACT,EACAu9J,KAAM,SAAc9gE,EAAK9jB,GAEvB,OADA34E,KAAK29J,UAAUjiF,IAAI+gB,EAAK9jB,GACjB34E,IACT,EACAqpG,eAAgB,SAAwB5M,EAAK9jB,GAE3C,OADA34E,KAAK29J,UAAUt0D,eAAe5M,EAAK9jB,GAC5B34E,IACT,EACA+8J,mBAAoB,WAElB,OADA/8J,KAAK29J,UAAUZ,qBACR/8J,IACT,EACAypG,KAAM,SAAchN,EAAK76E,GAEvB,OADA5hB,KAAK29J,UAAUl0D,KAAKhN,EAAK76E,GAClB5hB,IACT,IAEF83E,GAAOmqE,eAAeytF,GACtBF,EAAMxtI,CACR,MAAO,GAAa,aAATx9F,GAAgC,SAATC,GAA4B,SAATA,EAAiB,CAGpE,IAAI2mN,EAAe4kB,GAAa,WAAY,QACxCC,EAAS7kB,EAAa7jN,UACtB2oO,EAAqBX,EACrBY,EAASZ,EAAWhoO,UACpB6oO,EAAW,WACbhlB,EAAatoN,MAAM9C,KAAM+C,WACzBmtO,EAAmBptO,MAAM9C,KAAM+C,UACjC,EACI4F,EAAQynO,EAAS7oO,UACrB,IAAK,IAAI8oO,KAASJ,EAAQ,CACxB,IAAIK,EAAOL,EAAOI,GACdE,EAA6B,MAAjBJ,EAAOE,GACvB,GAAIE,EACF,OAAOd,EAAYY,GAErB1nO,EAAM0nO,GAASC,CACjB,CAEA,IAAK,IAAIE,KAAUL,EACjBxnO,EAAM6nO,GAAUL,EAAOK,GAGzBP,EAAO1kB,gBAAgB3gN,SAAQ,SAAUnG,GACvCkE,EAAMlE,GAAQkE,EAAMlE,IAAS,WAC3BoS,GAAM,yCAA2CpS,EAAO,uBAC1D,CACF,IACA+qO,EAAMY,CACR,MAAO,GAAa,cAAT5rO,GAAiC,gBAATA,GAAmC,cAATA,EAE3D,OAAOqS,GAAMrS,EAAO,+EAEtB,OAAOspH,GAAO,CACZpkG,IAAK2lN,GACLtnO,KAAM,CAACvD,EAAMC,GACb3C,MAAO0tO,GAEX,CACA,SAASQ,GAAaxrO,EAAMC,GAC1B,OAAOspH,GAAO,CACZrkG,IAAK2lN,GACLtnO,KAAM,CAACvD,EAAMC,IAEjB,CACA,SAASgsO,GAAUjsO,EAAMC,EAAMisO,EAAYC,EAAYpB,GACrD,OAAOzhH,GAAO,CACZpkG,IAAK0vE,GACLrxF,KAAM,CAACvD,EAAMC,EAAMisO,EAAYC,GAC/B7uO,MAAOytO,GAEX,CACA,SAASqB,GAAUpsO,EAAMC,EAAMisO,EAAYC,GACzC,OAAO5iH,GAAO,CACZrkG,IAAK0vE,GACLrxF,KAAM,CAACvD,EAAMC,EAAMisO,EAAYC,IAEnC,CACA,IAAIj8D,GAAY,WAEd,OAAyB,IAArB3xK,UAAUf,OACLguO,GAAaltO,MAAM,KAAMC,WAIJ,IAArBA,UAAUf,OACVstO,GAAaxsO,MAAM,KAAMC,WAIJ,IAArBA,UAAUf,OACV4uO,GAAU9tO,MAAM,KAAMC,WAID,IAArBA,UAAUf,OACVyuO,GAAU3tO,MAAM,KAAMC,gBAE7B8T,GAAM,kCAEV,EAGAi3K,GAAKvmL,UAAUmtK,UAAYA,GAG3B06D,GAAQxkO,SAAQ,SAAUswC,GACxBA,EAAMm0L,WAAWzkO,SAAQ,SAAU4kO,GACjCF,GAAap0L,EAAM12C,KAAMgrO,EAAI/qO,KAAM+qO,EAAI5uJ,KACzC,GACF,IAIA,IAAIiwJ,GAAa,SAASA,IACxB,KAAM7wO,gBAAgB6wO,GACpB,OAAO,IAAIA,EAEb7wO,KAAKgC,OAAS,CAChB,EACI8uO,GAAUD,GAAWtpO,UACzBupO,GAAQ/uH,eAAiB,WACvB,MAAO,YACT,EAGA+uH,GAAQlxJ,SAAW,SAAUA,GAC3B,IAAI57E,EAAIhE,KAAKgC,SAKb,OAJAhC,KAAKgE,GAAK,CACR47E,SAAUA,EACVw/D,WAAY,IAEPp/I,IACT,EAGA8wO,GAAQrkI,IAAM,SAAUhoG,EAAM3C,GAC5B,IAAIkC,EAAIhE,KAAKgC,OAAS,EACtB,GAAIqd,EAAO5a,GACTzE,KAAKgE,GAAGo7I,WAAWn7I,KAAK,CACtBQ,KAAMA,EACN3C,MAAOA,SAEJ,GAAIogH,EAAYz9G,GAGrB,IAFA,IAAIilB,EAAMjlB,EACNu1K,EAAYh3K,OAAO+E,KAAK2hB,GACnBze,EAAI,EAAGA,EAAI+uK,EAAUh4K,OAAQiJ,IAAK,CACzC,IAAIpH,EAAMm2K,EAAU/uK,GAChBogL,EAAS3hK,EAAI7lB,GACjB,GAAc,MAAVwnL,EAAJ,CAGA,IAAIzsC,EAAOzlH,GAAMimH,WAAWv7I,IAAQs1B,GAAMimH,WAAWt8B,EAAWj/G,IAChE,GAAY,MAAR+6I,EAAJ,CAGA,IAAIo0B,EAAQp0B,EAAKn6I,KACbm8K,EAASyK,EACbrrL,KAAKgE,GAAGo7I,WAAWn7I,KAAK,CACtBQ,KAAMuuK,EACNlxK,MAAO8+K,GALT,CAJA,CAWF,CAEF,OAAO5gL,IACT,EAEA8wO,GAAQllO,MAAQklO,GAAQrkI,IAGxBqkI,GAAQhlD,cAAgB,SAAU38J,GAChC,IAAIvjB,EAAQ,IAAIutB,GAAMhK,GACtB,OAAOnvB,KAAKwrL,cAAc5/K,EAC5B,EAGAklO,GAAQtlD,cAAgB,SAAU5/K,GAChC,IAAK,IAAI5H,EAAI,EAAGA,EAAIhE,KAAKgC,OAAQgC,IAAK,CACpC,IAAIjE,EAAUC,KAAKgE,GACf47E,EAAW7/E,EAAQ6/E,SACnBvoB,EAAQt3D,EAAQq/I,WACpBxzI,EAAMg0E,SAASA,GAEf,IAAK,IAAI30E,EAAI,EAAGA,EAAIosD,EAAMr1D,OAAQiJ,IAAK,CACrC,IAAI2zI,EAAOvnF,EAAMpsD,GACjBW,EAAM6gG,IAAImyC,EAAKn6I,KAAMm6I,EAAK98I,MAC5B,CACF,CAEA,OAAO8J,CACT,EAEA,IAAIvJ,GAAU,SAEVyjF,GAAY,SAAmBnmF,GAOjC,YALgB+C,IAAZ/C,IACFA,EAAU,CAAC,GAITuiH,EAAYviH,GACP,IAAImuL,GAAKnuL,GAIT0f,EAAO1f,GACP+0K,GAAU5xK,MAAM4xK,GAAW3xK,gBAD/B,CAGP,EAGA+iF,GAAUpZ,IAAM,SAAU8iK,GACxB,IAAIv8N,EAAOpM,MAAMU,UAAUpF,MAAM9B,KAAK0C,UAAW,GAKjD,OAHAkQ,EAAKib,QAAQ43D,IAEb0pJ,EAAI1sO,MAAM,KAAMmQ,GACTjT,IACT,EACA8lF,GAAUoqC,SAAW,SAAU+kD,GAC7B,OAAO/kD,GAAS+kD,EAClB,EAGAnvF,GAAUzjF,QAAUA,GAGpByjF,GAAUu8B,WAAav8B,GAAU+qJ,WAAaA,GAE9C1vO,EAAOD,QAAU4kF,E,oCCr83BJt9D,EAAA,OAEb,IAAIuoN,EAAoB,SAA2BjvO,GAClD,OAAOkvO,EAAgBlvO,KAClBmvO,EAAUnvO,EAChB,EAEA,SAASkvO,EAAgBlvO,GACxB,QAASA,GAA0B,kBAAVA,CAC1B,CAEA,SAASmvO,EAAUnvO,GAClB,IAAIovO,EAAcluO,OAAOuE,UAAUrF,SAAS7B,KAAKyB,GAEjD,MAAuB,oBAAhBovO,GACa,kBAAhBA,GACAC,EAAervO,EACpB,CAGA,IAAIsvO,EAAiC,oBAAX1mO,QAAyBA,OAAO2mO,IACtDC,EAAqBF,EAAe1mO,OAAO2mO,IAAI,iBAAmB,MAEtE,SAASF,EAAervO,GACvB,OAAOA,EAAMyvO,WAAaD,CAC3B,CAEA,SAASE,EAAYxiO,GACjB,OAAOnI,MAAMC,QAAQkI,GAAO,GAAK,CAAC,CACtC,CAEA,SAASyiO,EAAiB3vO,EAAO4vO,GAC7B,IAAIp9M,EAAQo9M,IAA6C,IAA1BA,EAAgBp9M,MAC/C,OAAQA,GAASy8M,EAAkBjvO,GAAU6vO,EAAUH,EAAY1vO,GAAQA,EAAO4vO,GAAmB5vO,CACzG,CAEA,SAAS8vO,EAAkBlsO,EAAQhB,EAAQgtO,GACvC,IAAIG,EAAcnsO,EAAOvD,QAUzB,OATAuC,EAAOkG,SAAQ,SAAS3E,EAAGjC,GACO,qBAAnB6tO,EAAY7tO,GACnB6tO,EAAY7tO,GAAKytO,EAAiBxrO,EAAGyrO,GAC9BX,EAAkB9qO,GACzB4rO,EAAY7tO,GAAK2tO,EAAUjsO,EAAO1B,GAAIiC,EAAGyrO,IACX,IAAvBhsO,EAAO2R,QAAQpR,IACtB4rO,EAAY5tO,KAAKwtO,EAAiBxrO,EAAGyrO,GAE7C,IACOG,CACX,CAEA,SAASC,EAAYpsO,EAAQhB,EAAQgtO,GACjC,IAAIG,EAAc,CAAC,EAanB,OAZId,EAAkBrrO,IAClB1C,OAAO+E,KAAKrC,GAAQkF,SAAQ,SAAS/G,GACjCguO,EAAYhuO,GAAO4tO,EAAiB/rO,EAAO7B,GAAM6tO,EACrD,IAEJ1uO,OAAO+E,KAAKrD,GAAQkG,SAAQ,SAAS/G,GAC5BktO,EAAkBrsO,EAAOb,KAAU6B,EAAO7B,GAG3CguO,EAAYhuO,GAAO8tO,EAAUjsO,EAAO7B,GAAMa,EAAOb,GAAM6tO,GAFvDG,EAAYhuO,GAAO4tO,EAAiB/sO,EAAOb,GAAM6tO,EAIzD,IACOG,CACX,CAEA,SAASF,EAAUjsO,EAAQhB,EAAQgtO,GAC/B,IAAIK,EAAgBlrO,MAAMC,QAAQpC,GAC9BstO,EAAgBnrO,MAAMC,QAAQpB,GAC9B/F,EAAU+xO,GAAmB,CAAEO,WAAYL,GAC3CM,EAA4BH,IAAkBC,EAElD,GAAKE,EAEE,IAAIH,EAAe,CACtB,IAAIE,EAAatyO,EAAQsyO,YAAcL,EACvC,OAAOK,EAAWvsO,EAAQhB,EAAQgtO,EACtC,CACI,OAAOI,EAAYpsO,EAAQhB,EAAQgtO,EACvC,CANI,OAAOD,EAAiB/sO,EAAQgtO,EAOxC,CAEAC,EAAUx4N,IAAM,SAAsBy8C,EAAO87K,GACzC,IAAK7qO,MAAMC,QAAQ8uD,IAAUA,EAAM5zD,OAAS,EACxC,MAAM,IAAI2Z,MAAM,gEAIpB,OAAOi6C,EAAMtqC,QAAO,SAASmM,EAAMnwB,GAC/B,OAAOqqO,EAAUl6M,EAAMnwB,EAAMoqO,EACjC,GACJ,EAEA,IAAIS,EAAcR,EAElBxwO,EAAOD,QAAUixO,C,uBC5EjB,IAAIC,EAAW5pN,EAAQ,QAEvB,WACE,IAAK,IAAI3kB,KAAOuuO,EAAU,CACxB,GAAgB,MAAZA,IAAqBA,EAAS9rO,eAAezC,IAAgB,YAARA,GAA6B,eAARA,EAAsB,OACpG3C,EAAQ2C,GAAOuuO,EAASvuO,EAC1B,CACD,EALD,GAOA,IAAIwuO,EAAU7pN,EAAQ,QAEtB,WACE,IAAK,IAAI3kB,KAAOwuO,EAAS,CACvB,GAAe,MAAXA,IAAoBA,EAAQ/rO,eAAezC,IAAgB,YAARA,GAA6B,eAARA,EAAsB,OAClG3C,EAAQ2C,GAAOwuO,EAAQxuO,EACzB,CACD,EALD,GAOA2kB,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,MAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,MAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,MAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,KAERA,EAAQ,MAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,MAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,KAERA,EAAQ,OAERA,EAAQ,MAERA,EAAQ,OAERA,EAAQ,M,wBClHR,IAAI8pN,EAAS9pN,EAAQ,OAoBjB+pN,EAA2B,CAAC,EAEhC,SAASC,IACPxyO,KAAKyyO,mBAAqB,EAC5B,CAEAD,EAAwBjrO,UAAY,CAClC2F,YAAaslO,EACbxrO,OAAQ,SAAU0rO,EAAS/nI,GACzB,IAAIgoI,EAAoB,GACxBL,EAAO56H,KAAK66H,GAA0B,SAAUK,EAASpuO,GACvD,IAAIyS,EAAO27N,EAAQ5rO,OAAO0rO,EAAS/nI,GACnCgoI,EAAoBA,EAAkB1xO,OAAOgW,GAAQ,GACvD,IACAjX,KAAKyyO,mBAAqBE,CAC5B,EACA37M,OAAQ,SAAU07M,EAAS/nI,GACzB2nI,EAAO56H,KAAK13G,KAAKyyO,oBAAoB,SAAUI,GAC7CA,EAAS77M,QAAU67M,EAAS77M,OAAO07M,EAAS/nI,EAC9C,GACF,EACAmoI,qBAAsB,WACpB,OAAO9yO,KAAKyyO,mBAAmBtwO,OACjC,GAGFqwO,EAAwBp5J,SAAW,SAAU50E,EAAMuuO,GACjDR,EAAyB/tO,GAAQuuO,CACnC,EAEAP,EAAwBtvO,IAAM,SAAUsB,GACtC,OAAO+tO,EAAyB/tO,EAClC,EAEA,IAAIipB,EAAW+kN,EACfrxO,EAAOD,QAAUusB,C,wBCvDjB,IAAI6kN,EAAS9pN,EAAQ,OAoBjBwqN,EAAiB,CAAC,SAAU,QAAS,WAAY,YAAa,sBAAuB,iBAAkB,aAAc,KAAM,MAAO,aAAc,sBAAuB,WAAY,YAAa,0BAA2B,wBAE/N,SAASC,EAAaC,GACpBZ,EAAO56H,KAAKs7H,GAAgB,SAAUvuO,GACpCzE,KAAKyE,GAAQ6tO,EAAOv1N,KAAKm2N,EAAczuO,GAAOyuO,EAChD,GAAGlzO,KACL,CAEA,IAAIytB,EAAWwlN,EACf9xO,EAAOD,QAAUusB,C,wBC7BjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAoBrB,SAASiF,EAAS2lN,EAAYC,GAC5Bf,EAAO56H,KAAK27H,GAAa,SAAUC,GACjCA,EAAWt8M,OAAS,aAOpBm8M,EAAQI,eAAeD,GAAY,SAAUE,EAASd,GACpD,IAAIvgH,EAAW,CAAC,EAiBhB,OAhBAugH,EAAQe,cAAc,CACpBC,SAAU,SACVC,QAASP,EACTvyI,MAAO2yI,IACN,SAAUI,GACPA,EAAYN,EAAWl2N,SACzBw2N,EAAYN,EAAWl2N,QAAQo2N,EAAQ/uO,KAAM+uO,EAAQK,WAGvD,IAAI50N,EAAO20N,EAAY7oI,UAEvB9rF,EAAKy4F,MAAK,SAAUvQ,GAClB,IAAI1iG,EAAOwa,EAAK60N,QAAQ3sI,GACxBgrB,EAAS1tH,GAAQmvO,EAAYt5B,WAAW71M,KAAS,CACnD,GACF,IACO,CACLA,KAAM+uO,EAAQ/uO,KACd0tH,SAAUA,EACV4hH,SAAUP,EAAQO,SAEtB,GACF,GACF,CAEA5yO,EAAOD,QAAUusB,C,wBC1DjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBwrN,EAAcxrN,EAAQ,OAEtByrN,EAAsBD,EAAYC,oBA8BtCd,EAAQI,eAAe,CACrB/uO,KAAM,UACN6e,MAAO,UACP2T,OAAQ,oBACP,SAAUw8M,EAASd,GACpB,IAAIwB,EAAgBV,EAAQU,eAAiB,SAC7CxB,EAAQe,cAAc,CACpBC,SAAUQ,EACVrzI,MAAO2yI,IACN,SAAUW,GACX,IAAIC,EAAMD,EAAeE,iBAEzB,GAAiB,QAAbD,EAAI5vO,KAAR,CAIA,IAAIu0E,EAAMk7J,EAAoBG,EAAKZ,EAASW,EAAejxO,IAAI,eAC/DixO,EAAeG,WAAaH,EAAeG,UAAUv7J,EAAItpC,QACzD0kM,EAAeI,SAAWJ,EAAeI,QAAQx7J,EAAIqE,MAG/B,WAAlB82J,GACF5B,EAAO56H,KAAKy8H,EAAeK,aAAa,SAAUZ,GAChDA,EAAYU,UAAUv7J,EAAItpC,QAC1BmkM,EAAYW,QAAQx7J,EAAIqE,KAC1B,GAXF,CAaF,GACF,G,sBCxCA,SAAS62J,EAAoBQ,EAAMjB,EAASkB,GAC1C,IAAIC,EAAeF,EAAKG,UACpBnlM,EAASglM,EAAKI,YACdz3J,EAAOo2J,EAAQp2J,KACfptE,EAAQykO,EAAKK,YAAYrlM,GAE7B,GAAkB,MAAd+jM,EAAQ7tK,IAA4B,MAAd6tK,EAAQ5tK,GAAY,CAC5C51D,EAAM,IAAMwjO,EAAQ7tK,GACpB31D,EAAM,IAAMwjO,EAAQ5tK,GAChBn2B,EAASglM,EAAKM,YAAY/kO,GAC9BykO,EAAKH,UAAU7kM,EACjB,CAEA,GAAY,MAAR2tC,EAAc,CAChB,GAAIs3J,EAAW,CACb,IAAIM,EAAUN,EAAU9lO,KAAO,EAC3BqmO,EAAUP,EAAU/lO,KAAOkkF,IAC/BzV,EAAOj3E,KAAKwI,IAAIxI,KAAKyI,IAAI+lO,EAAev3J,EAAM63J,GAAUD,GAAWL,CACrE,CAGAF,EAAKp+M,MAAM,IAAM+mD,EACjBq3J,EAAKp+M,MAAM,IAAM+mD,EACjB,IAAItrD,EAAW2iN,EAAK3iN,SAChBojN,GAAQ1B,EAAQ2B,QAAUrjN,EAAS,KAAOsrD,EAAO,GACjDg4J,GAAQ5B,EAAQ6B,QAAUvjN,EAAS,KAAOsrD,EAAO,GACrDtrD,EAAS,IAAMojN,EACfpjN,EAAS,IAAMsjN,EACfX,EAAKa,kBAED7lM,EAASglM,EAAKM,YAAY/kO,GAC9BykO,EAAKH,UAAU7kM,GACfglM,EAAKF,QAAQn3J,EAAOu3J,EACtB,CAEA,MAAO,CACLllM,OAAQglM,EAAKI,YACbz3J,KAAMq3J,EAAKG,UAEf,CAEA1zO,EAAQ+yO,oBAAsBA,C,wBCjE9B,IAAId,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjB+sN,EAAW/sN,EAAQ,OAEnB2/E,EAASotI,EAASptI,OAClBqtI,EAAcD,EAASC,YAE3BhtN,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAqBR2qN,EAAQsC,eAAetC,EAAQuC,SAASC,OAAOC,OAAQtD,EAAOuD,MAAM1tI,EAAQ,QAG5EgrI,EAAQsC,eAAetC,EAAQuC,SAASC,OAAOG,mBAAoBN,GACnErC,EAAQ4C,eAAe,CACrB3C,WAAY,MACZ3sI,MAAO,SAAUmtI,GAEfA,EAAY7oI,UAAUirI,UAAU,eAAgB,YAClD,G,wBC7CF,IAAIC,EAAgBztN,EAAQ,OAoBxBiF,EAAWwoN,EAAcvyH,OAAO,CAClCl/G,KAAM,aACN0xO,aAAc,CAAC,OAAQ,SACvBC,cAAe,OAKfC,eAAgB,WAEd,QAAOp2O,KAAKkD,IAAI,UAAWlD,KAAKkD,IAAI,cACtC,EAKAmzO,wBAAyB,WAEvB,IAAIC,EAAuBt2O,KAAKkD,IAAI,wBAChCqzO,EAAiBv2O,KAAKkD,IAAI,kBAM9B,OAJIqzO,EAAiBD,IACnBA,EAAuBC,GAGlBD,CACT,EACAE,cAAe,CAGbpX,MAAM,EAGNqX,UAAU,EACVC,gBAAgB,EAChBC,gBAAiB,CACf/lN,MAAO,2BACPizM,YAAa,KACbh8J,YAAa,EACb+uK,WAAY,QACZ9uK,aAAc,EACdnuC,WAAY,EACZC,YAAa,KACbC,cAAe,EACfC,cAAe,EACfR,QAAS,MAKfn4B,EAAOD,QAAUusB,C,wBCtEjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB2qN,GAFU1/L,EAAQojM,QAERruN,EAAQ,QAElB8pN,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAElBuuN,EAAUvuN,EAAQ,OAElBwuN,EAAWD,EAAQC,SAEnBC,EAAQzuN,EAAQ,OAEhB0uN,EAAe1uN,EAAQ,OAEvB2uN,EAAO3uN,EAAQ,OAEf4uN,EAAQ5uN,EAAQ,OAEhB6uN,EAAY7uN,EAAQ,OAEpBwvE,EAAWq/I,EAAUr/I,SAErBs/I,EAA8B9uN,EAAQ,OAEtC+uN,EAAiBD,EAA4BC,eAE7CC,EAAUhvN,EAAQ,OAoBlBivN,EAAyB,CAAC,YAAa,kBACvCC,EAAY,CAAC,EAAG,GAKpB,SAASC,EAAYC,EAAO34N,GAC1B,IAAI44N,EAAmBD,EAAME,SAAWF,EAAME,UAE9C,GAAmB,gBAAfF,EAAMpzO,KAAwB,CAChC,IAAIuzO,EAAWH,EAAMI,cAIrB,GAAsB,aAAlBD,EAASvzO,OAAwBuzO,EAASE,OAAQ,CACpD,IAAIC,EAAcj5N,EAAKk5N,UAAU,aAE7BJ,EAASK,gBACXP,EAAiB/3N,GAAKo4N,EACtBL,EAAiBrvM,OAAuB,EAAd0vM,IAE1BL,EAAiBl5M,GAAKu5M,EACtBL,EAAiBpvM,QAAwB,EAAdyvM,EAE/B,CACF,CAEA,OAAOL,CACT,CAxBAvF,EAAO5uH,OAAOuzH,EAAM1vO,UAAW2vO,GA0B/B,IAAIzpN,EAAW0lN,EAAQkF,gBAAgB,CACrC7zO,KAAM,MACNrF,OAAQ,SAAUy0O,EAAalB,EAAS/nI,GACtC3qG,KAAKs4O,gBAAgB1E,GAErB,IAAI2E,EAAuB3E,EAAY1wO,IAAI,oBAM3C,MAJ6B,gBAAzBq1O,GAAmE,UAAzBA,IAC5Cv4O,KAAKw4O,aAAex4O,KAAKy4O,aAAa7E,EAAalB,EAAS/nI,GAAO3qG,KAAK04O,cAAc9E,EAAalB,EAAS/nI,IAGvG3qG,KAAKk7C,KACd,EACAy9L,yBAA0B,SAAU/E,EAAalB,EAAS/nI,GACxD3qG,KAAK44O,SAEL54O,KAAKs4O,gBAAgB1E,EACvB,EACAiF,kBAAmB,SAAUj3N,EAAQgyN,EAAalB,EAAS/nI,GAEzD3qG,KAAK84O,wBAAwBl3N,EAAQgyN,EACvC,EACA0E,gBAAiB,SAAU1E,GACzB,IAAImF,EAAcnF,EAAYoF,gBAAgBj9C,OAErB,MAArB/7L,KAAKw4O,cAAwBO,EAAc/4O,KAAKw4O,gBAClDx4O,KAAKw4O,aAAeO,EAEpB/4O,KAAK44O,SAET,EACAF,cAAe,SAAU9E,EAAalB,EAAS/nI,GAC7C,IAKIsuI,EALA/9L,EAAQl7C,KAAKk7C,MACbj8B,EAAO20N,EAAY7oI,UACnB6U,EAAU5/G,KAAKqqK,MACfutE,EAAQhE,EAAYS,iBACpB0D,EAAWH,EAAMI,cAGF,gBAAfJ,EAAMpzO,KACRy0O,EAAuBlB,EAASK,eACR,UAAfR,EAAMpzO,OACfy0O,EAAwC,UAAjBlB,EAAS9lG,KAGlC,IAAIinG,EAAiBtF,EAAYuF,qBAAuBvF,EAAc,KAClEwF,EAAYxF,EAAY1wO,IAAI,QAAQ,GACpC20O,EAAmBF,EAAYC,EAAO34N,GAE1Ci8B,EAAMm+L,iBAGN,IAAI5C,EAAW7C,EAAY1wO,IAAI,YAAY,GACvCo2O,EAAiB1F,EAAY1wO,IAAI,kBAAkB,GACnDq2O,EAAkB3F,EAAY4F,SAAS,mBACvCC,EAAkBF,EAAgBr2O,IAAI,oBAAsB,EAC5Dw2O,EAAQ,GACRC,EAAW35O,KAAK45O,gBAAkB,GAElCC,EAAmB,SAAUhG,GAC/B,IAAIiG,EAAW3B,EAAUP,EAAMpzO,MAAMya,EAAM40N,GACvCkG,EAAOC,EAAmBpC,EAAOqB,EAAsBa,GAQ3D,OAPAC,EAAKE,SAASV,EAAgBW,mBAEX,gBAAftC,EAAMpzO,MACRu1O,EAAKI,SAAS,IAAKV,GAGrBC,EAAM7F,GAAakG,EACZA,CACT,EAEA96N,EAAK2tF,KAAKgT,GAASr/G,KAAI,SAAUszO,GAC/B,IAAIuG,EAAYn7N,EAAKo7N,aAAaxG,GAC9B1rI,EAASgwI,EAAUP,EAAMpzO,MAAMya,EAAM40N,EAAWuG,GAOpD,GALId,GACFO,EAAiBhG,GAId50N,EAAKq7N,SAASzG,GAAnB,CAIA,GAAIuF,EAAW,CAGb,IAAImB,EAAYnb,EAAKwY,EAAMpzO,MAAMqzO,EAAkB1vI,GAEnD,GAAIoyI,EAEF,YADAr/L,EAAM0hC,OAAOh7E,EAGjB,CAEA,IAAIA,EAAK44O,EAAe5C,EAAMpzO,MAAMqvO,EAAW1rI,EAAQ8wI,EAAsBC,GAAgB,EAAOzC,GACpGx3N,EAAKw7N,iBAAiB5G,EAAWjyO,GACjCs5C,EAAM36C,IAAIqB,GACVm/I,EAAYn/I,EAAIqd,EAAM40N,EAAWuG,EAAWjyI,EAAQyrI,EAAaqF,EAAqC,UAAfrB,EAAMpzO,KAhB7F,CAiBF,IAAGwyB,QAAO,SAAU0jN,EAAUC,GAC5B,IAAIP,EAAYn7N,EAAKo7N,aAAaK,GAC9BvyI,EAASgwI,EAAUP,EAAMpzO,MAAMya,EAAMy7N,EAAUN,GAEnD,GAAId,EAAgB,CAClB,IAAIS,EAEoB,IAApBJ,EAAS33O,OACX+3O,EAAOF,EAAiBc,IAExBZ,EAAOJ,EAASgB,GAChBZ,EAAKE,SAASV,EAAgBW,mBAEX,gBAAftC,EAAMpzO,MACRu1O,EAAKI,SAAS,IAAKV,GAGrBC,EAAMgB,GAAYX,GAGpB,IAAID,EAAW3B,EAAUP,EAAMpzO,MAAMya,EAAMy7N,GACvCllN,EAAQolN,EAAsB3B,EAAsBa,EAAUlC,GAClEd,EAAQ+D,YAAYd,EAAM,CACxBvkN,MAAOA,GACN0jN,EAAgBwB,EACrB,CAEA,IAAI94O,EAAKg+G,EAAQk7H,iBAAiBH,GAElC,GAAK17N,EAAKq7N,SAASI,GAAnB,CAKA,GAAItB,EAAW,CACb,IAAImB,EAAYnb,EAAKwY,EAAMpzO,MAAMqzO,EAAkB1vI,GAEnD,GAAIoyI,EAEF,YADAr/L,EAAM0hC,OAAOh7E,EAGjB,CAEIA,EACFk1O,EAAQ+D,YAAYj5O,EAAI,CACtB4zB,MAAO2yE,GACN+wI,EAAgBwB,GAEnB94O,EAAK44O,EAAe5C,EAAMpzO,MAAMk2O,EAAUvyI,EAAQ8wI,EAAsBC,GAAgB,EAAMzC,GAGhGx3N,EAAKw7N,iBAAiBC,EAAU94O,GAEhCs5C,EAAM36C,IAAIqB,GACVm/I,EAAYn/I,EAAIqd,EAAMy7N,EAAUN,EAAWjyI,EAAQyrI,EAAaqF,EAAqC,UAAfrB,EAAMpzO,KAtB5F,MAFE02C,EAAM0hC,OAAOh7E,EAyBjB,IAAGg7E,QAAO,SAAUi3J,GAClB,IAAIjyO,EAAKg+G,EAAQk7H,iBAAiBjH,GAEf,gBAAf+D,EAAMpzO,KACR5C,GAAMm5O,EAAWlH,EAAWqF,EAAgBt3O,GAE5CA,GAAMo5O,EAAanH,EAAWqF,EAAgBt3O,EAElD,IAAG26I,UACH,IAAI0+F,EAAUj7O,KAAKk7O,mBAAqBl7O,KAAKk7O,iBAAmB,IAAI9D,GACpE6D,EAAQE,YAER,IAAK,IAAIn3O,EAAI,EAAGA,EAAI01O,EAAM13O,SAAUgC,EAClCi3O,EAAQ16O,IAAIm5O,EAAM11O,IAGpBk3C,EAAM36C,IAAI06O,GACVj7O,KAAK45O,eAAiBF,EACtB15O,KAAKqqK,MAAQprJ,CACf,EACAw5N,aAAc,SAAU7E,EAAalB,EAAS/nI,GAC5C3qG,KAAK44O,SAELwC,EAAYxH,EAAa5zO,KAAKk7C,OAE9B,IAAImgM,EAAWzH,EAAY1wO,IAAI,QAAQ,GAAQq0O,EAAe3D,EAAYS,kBAAkB,EAAOT,GAAe,KAE9GyH,EACFr7O,KAAKk7C,MAAMogM,YAAYD,GAEvBr7O,KAAKk7C,MAAMm+L,gBAEf,EACAP,wBAAyB,SAAUl3N,EAAQgyN,GACzC5zO,KAAKu7O,oBAELH,EAAYxH,EAAa5zO,KAAKk7C,OAAO,EACvC,EACAsgM,QAASlJ,EAAOj1C,KAChBzgH,OAAQ,SAAU81J,GAChB1yO,KAAK44O,OAAOlG,EACd,EACAkG,OAAQ,SAAUlG,GAChB,IAAIx3L,EAAQl7C,KAAKk7C,MACbj8B,EAAOjf,KAAKqqK,MAEZqoE,GAAWA,EAAQxvO,IAAI,cAAgB+b,IAASjf,KAAKw4O,cACvDx4O,KAAKu7O,oBAELv7O,KAAK45O,eAAiB,GACtB36N,EAAKw8N,mBAAkB,SAAU75O,GACf,WAAZA,EAAG4C,KACLw2O,EAAap5O,EAAGiyO,UAAWnB,EAAS9wO,GAEpCm5O,EAAWn5O,EAAGiyO,UAAWnB,EAAS9wO,EAEtC,KAEAs5C,EAAMigM,YAGRn7O,KAAKqqK,MAAQ,IACf,EACAkxE,kBAAmB,WACjBv7O,KAAKk7C,MAAM0hC,OAAO58E,KAAKk7O,kBACvBl7O,KAAKk7O,iBAAmB,IAC1B,IAGEQ,EAAUv1O,KAAKwI,IACfgtO,EAAUx1O,KAAKyI,IACfwwN,EAAO,CACTwc,YAAa,SAAUC,EAAsB1zI,GAC3C,IAAI2zI,EAAY3zI,EAAO3/D,MAAQ,GAAK,EAAI,EACpCuzM,EAAa5zI,EAAO1/D,OAAS,GAAK,EAAI,EAEtCqzM,EAAY,IACd3zI,EAAOroF,GAAKqoF,EAAO3/D,MACnB2/D,EAAO3/D,OAAS2/D,EAAO3/D,OAGrBuzM,EAAa,IACf5zI,EAAOxpE,GAAKwpE,EAAO1/D,OACnB0/D,EAAO1/D,QAAU0/D,EAAO1/D,QAG1B,IAAI3oB,EAAI47N,EAAQvzI,EAAOroF,EAAG+7N,EAAqB/7N,GAC3CmqB,EAAK0xM,EAAQxzI,EAAOroF,EAAIqoF,EAAO3/D,MAAOqzM,EAAqB/7N,EAAI+7N,EAAqBrzM,OACpF7J,EAAI+8M,EAAQvzI,EAAOxpE,EAAGk9M,EAAqBl9M,GAC3CuL,EAAKyxM,EAAQxzI,EAAOxpE,EAAIwpE,EAAO1/D,OAAQozM,EAAqBl9M,EAAIk9M,EAAqBpzM,QACzF0/D,EAAOroF,EAAIA,EACXqoF,EAAOxpE,EAAIA,EACXwpE,EAAO3/D,MAAQyB,EAAKnqB,EACpBqoF,EAAO1/D,OAASyB,EAAKvL,EACrB,IAAIq9M,EAAU7zI,EAAO3/D,MAAQ,GAAK2/D,EAAO1/D,OAAS,EAYlD,OAVIqzM,EAAY,IACd3zI,EAAOroF,GAAKqoF,EAAO3/D,MACnB2/D,EAAO3/D,OAAS2/D,EAAO3/D,OAGrBuzM,EAAa,IACf5zI,EAAOxpE,GAAKwpE,EAAO1/D,OACnB0/D,EAAO1/D,QAAU0/D,EAAO1/D,QAGnBuzM,CACT,EACAC,MAAO,SAAUpE,EAAkB1vI,GACjC,IAAI+zI,EAAQ/zI,EAAOg0I,IAAMh0I,EAAOp7E,EAAI,GAAK,EAEzC,GAAImvN,EAAQ,EAAG,CACb,IAAInvN,EAAIo7E,EAAOp7E,EACfo7E,EAAOp7E,EAAIo7E,EAAOg0I,GAClBh0I,EAAOg0I,GAAKpvN,CACd,CAEIA,EAAI4uN,EAAQxzI,EAAOp7E,EAAG8qN,EAAiB9qN,GAA3C,IACIovN,EAAKT,EAAQvzI,EAAOg0I,GAAItE,EAAiBsE,IAC7Ch0I,EAAOp7E,EAAIA,EACXo7E,EAAOg0I,GAAKA,EACZ,IAAIH,EAAUjvN,EAAIovN,EAAK,EAEvB,GAAID,EAAQ,EAAG,CACTnvN,EAAIo7E,EAAOp7E,EACfo7E,EAAOp7E,EAAIo7E,EAAOg0I,GAClBh0I,EAAOg0I,GAAKpvN,CACd,CAEA,OAAOivN,CACT,GAEExB,EAAiB,CACnBoB,YAAa,SAAU/H,EAAW1rI,EAAQiwI,EAAcc,EAAgBkD,GACtE,IAAIn/M,EAAO,IAAI65M,EAAQuF,KAAK,CAC1B7mN,MAAO88M,EAAO5uH,OAAO,CAAC,EAAGvb,GACzBm0I,GAAI,IAIN,GAFAr/M,EAAKx4B,KAAO,OAERy0O,EAAgB,CAClB,IAAIqD,EAAYt/M,EAAKzH,MACjBgnN,EAAkBpE,EAAe,SAAW,QAC5CqE,EAAgB,CAAC,EACrBF,EAAUC,GAAmB,EAC7BC,EAAcD,GAAmBr0I,EAAOq0I,GACxC1F,EAAQsF,EAAW,cAAgB,aAAan/M,EAAM,CACpDzH,MAAOinN,GACNvD,EAAgBrF,EACrB,CAEA,OAAO52M,CACT,EACAg/M,MAAO,SAAUpI,EAAW1rI,EAAQu0I,EAAUxD,EAAgBkD,EAAU3F,GAKtE,IAAI5jD,EAAY1qF,EAAOtoE,WAAasoE,EAAOroE,SACvC68M,GAAcD,GAAYjG,EAAWe,EAAUV,EAAQ8F,OACvD9/M,EAAS,IAAI6/M,EAAW,CAC1BnnN,MAAO88M,EAAO94I,SAAS,CACrBq5F,UAAWA,GACV1qF,GACHm0I,GAAI,IAIN,GAFAx/M,EAAOr4B,KAAO,OAEVy0O,EAAgB,CAClB,IAAI2D,EAAc//M,EAAOtH,MACrBgnN,EAAkBE,EAAW,IAAM,WACnCD,EAAgB,CAAC,EACrBI,EAAYL,GAAmBE,EAAW,EAAIv0I,EAAOtoE,WACrD48M,EAAcD,GAAmBr0I,EAAOq0I,GACxC1F,EAAQsF,EAAW,cAAgB,aAAat/M,EAAQ,CACtDtH,MAAOinN,GACNvD,EAAgBrF,EACrB,CAEA,OAAO/2M,CACT,GAGF,SAASi+M,EAAWlH,EAAWqF,EAAgBt3O,GAE7CA,EAAGgK,MAAM+wB,KAAO,KAChBm6M,EAAQ+D,YAAYj5O,EAAI,CACtB4zB,MAAO,CACLgT,MAAO,IAER0wM,EAAgBrF,GAAW,WAC5BjyO,EAAGzB,QAAUyB,EAAGzB,OAAOy8E,OAAOh7E,EAChC,GACF,CAEA,SAASo5O,EAAanH,EAAWqF,EAAgBt3O,GAE/CA,EAAGgK,MAAM+wB,KAAO,KAChBm6M,EAAQ+D,YAAYj5O,EAAI,CACtB4zB,MAAO,CACLzI,EAAGnrB,EAAG4zB,MAAM2mN,KAEbjD,EAAgBrF,GAAW,WAC5BjyO,EAAGzB,QAAUyB,EAAGzB,OAAOy8E,OAAOh7E,EAChC,GACF,CAEA,IAAIu2O,EAAY,CAGdyD,YAAa,SAAU38N,EAAM40N,EAAWuG,GACtC,IAAIjyI,EAASlpF,EAAK69N,cAAcjJ,GAC5BkJ,EAAiB3C,EAAY4C,EAAa5C,EAAWjyI,GAAU,EAE/D80I,EAAQ90I,EAAO3/D,MAAQ,EAAI,GAAK,EAChC00M,EAAQ/0I,EAAO1/D,OAAS,EAAI,GAAK,EACrC,MAAO,CACL3oB,EAAGqoF,EAAOroF,EAAIm9N,EAAQF,EAAiB,EACvCp+M,EAAGwpE,EAAOxpE,EAAIu+M,EAAQH,EAAiB,EACvCv0M,MAAO2/D,EAAO3/D,MAAQy0M,EAAQF,EAC9Bt0M,OAAQ0/D,EAAO1/D,OAASy0M,EAAQH,EAEpC,EACAd,MAAO,SAAUh9N,EAAM40N,EAAWuG,GAChC,IAAIjyI,EAASlpF,EAAK69N,cAAcjJ,GAChC,MAAO,CACL3kN,GAAIi5E,EAAOj5E,GACXC,GAAIg5E,EAAOh5E,GACXgtN,GAAIh0I,EAAOg0I,GACXpvN,EAAGo7E,EAAOp7E,EACV8S,WAAYsoE,EAAOtoE,WACnBC,SAAUqoE,EAAOroE,SAErB,GAGF,SAASq9M,EAAch1I,GACrB,OAA4B,MAArBA,EAAOtoE,YAAyC,MAAnBsoE,EAAOroE,UAAoBqoE,EAAOtoE,aAAesoE,EAAOroE,QAC9F,CAEA,SAASihH,EAAYn/I,EAAIqd,EAAM40N,EAAWuG,EAAWjyI,EAAQyrI,EAAawE,EAAcgF,GACtF,IAAIxsN,EAAQ3R,EAAKo+N,cAAcxJ,EAAW,SACtCv6M,EAAUra,EAAKo+N,cAAcxJ,EAAW,WACxCx6M,EAASpa,EAAKq+N,UAAU,eACxBC,EAAiBnD,EAAUZ,SAAS,aACpCgE,EAAapD,EAAUZ,SAAS,sBAAsBU,kBAErDkD,GACHx7O,EAAGu4O,SAAS,IAAKoD,EAAer6O,IAAI,oBAAsB,GAG5DtB,EAAGq4O,SAAS3H,EAAO94I,SAAS,CAC1BngE,OAAQ8jN,EAAch1I,GAAU,OAAS9uE,EACzCtP,KAAMozN,EAAch1I,GAAU,OAASv3E,EACvC0I,QAASA,GACRikN,EAAerD,oBAClB,IAAIuD,EAAcrD,EAAUsD,WAAW,UACvCD,GAAe77O,EAAGi1B,KAAK,SAAU4mN,GACjC,IAAIE,EAAuBvF,EAAejwI,EAAO1/D,OAAS,EAAI,SAAW,MAAQ0/D,EAAO3/D,MAAQ,EAAI,OAAS,QAExG40M,GACHpG,EAASp1O,EAAGgK,MAAO4xO,EAAYpD,EAAWxpN,EAAOgjN,EAAaC,EAAW8J,GAGvER,EAAch1I,KAChBq1I,EAAWzzN,KAAOyzN,EAAWnkN,OAAS,QAGxCy9M,EAAQ8G,cAAch8O,EAAI47O,EAC5B,CAGA,SAASR,EAAa5C,EAAWyD,GAC/B,IAAI9jN,EAAYqgN,EAAUl3O,IAAIu0O,IAA2B,EAErDjvM,EAAQz5B,MAAM8uO,EAAUr1M,OAAS+zB,OAAO+pC,UAAYngG,KAAK6iB,IAAI60N,EAAUr1M,OACvEC,EAAS15B,MAAM8uO,EAAUp1M,QAAU8zB,OAAO+pC,UAAYngG,KAAK6iB,IAAI60N,EAAUp1M,QAC7E,OAAOtiC,KAAKyI,IAAImrB,EAAWyO,EAAOC,EACpC,CAEA,IAAIq1M,EAAY3G,EAAKzzH,OAAO,CAC1Bl/G,KAAM,WACNgxB,MAAO,CACL9J,OAAQ,IAEVqyN,UAAW,SAAU55O,EAAKqxB,GAOxB,IAJA,IAAI9J,EAAS8J,EAAM9J,OACfpC,EAAatpB,KAAKg+O,aAClBC,EAAaj+O,KAAKk+O,aAEbl6O,EAAI,EAAGA,EAAI0nB,EAAO1pB,OAAQgC,GAAK,EACtCslB,EAAW20N,GAAcvyN,EAAO1nB,EAAIi6O,GACpC95O,EAAI8hC,OAAO3c,EAAW,GAAIA,EAAW,IACrCnlB,EAAI08B,OAAOnV,EAAO1nB,GAAI0nB,EAAO1nB,EAAI,GAErC,IAGF,SAASo3O,EAAYxH,EAAa14L,EAAOijM,GAEvC,IAAIl/N,EAAO20N,EAAY7oI,UACnBzhF,EAAa,GACb20N,EAAah/N,EAAKk5N,UAAU,uBAAyB,EAAI,EAC7D7uN,EAAW,EAAI20N,GAAch/N,EAAKk5N,UAAU,kBAC5C,IAAIiG,EAAmBn/N,EAAKk5N,UAAU,oBAClCvpM,EAAW3vB,EAAKk5N,UAAU,YAC1BoB,EAAkB3F,EAAY4F,SAAS,mBACvCF,EAAiB1F,EAAY1wO,IAAI,kBAAkB,GAEvD,GAAIo2O,EAAgB,CAClB,IAAI5tN,EAASzM,EAAKk5N,UAAU,yBACxBkG,EAAuB,GAC3BA,EAAqB,EAAIJ,GAAch/N,EAAKk5N,UAAU,mBACtD,IAAI4B,EAAO,IAAI+D,EAAU,CACvBtoN,MAAO,CACL9J,OAAQA,GAEVyyN,cAAeA,EACfH,aAAcK,EACdH,aAAcD,EACdK,mBAAoBF,EACpBG,WAAY3vM,EACZugH,QAAQ,EACRmtF,GAAI,IAENkC,EAAwBzE,EAAMR,EAAiBt6N,GAC/Ci8B,EAAM36C,IAAIw5O,EACZ,CAEA,IAAIn4O,EAAK,IAAIk8O,EAAU,CACrBtoN,MAAO,CACL9J,OAAQzM,EAAKk5N,UAAU,gBAEzBgG,cAAeA,EACfH,aAAc10N,EACd40N,aAAcD,EACdK,mBAAoBF,EACpBG,WAAY3vM,IAEdsM,EAAM36C,IAAIqB,GACV68O,EAAc78O,EAAIgyO,EAAa30N,GAE/Brd,EAAG88O,YAAc9K,EAAY8K,YAExB9K,EAAY1wO,IAAI,YACnBtB,EAAG6hE,GAAG,YAAak7K,GACnB/8O,EAAG6hE,GAAG,YAAak7K,GAEvB,CAGA,IAAIA,EAA2B3mJ,GAAS,SAAU30E,GAChD,IAAIu7N,EAAY5+O,KACZ6zO,EAAYgL,EAAuBD,EAAWv7N,EAAMuO,QAASvO,EAAMwO,SACvE+sN,EAAU/K,UAAYA,GAAa,EAAIA,EAAY,IACrD,GAAG,IAAI,GAEP,SAASgL,EAAuBD,EAAW9+N,EAAG6e,GAC5C,IAAIs/M,EAAaW,EAAUV,aACvBY,EAAc,EAAIb,EAClBvyN,EAASkzN,EAAUppN,MAAM9J,OACzB0yN,EAAmBQ,EAAUN,mBAC7BS,EAAe54O,KAAK6iB,IAAI41N,EAAUL,WAAa,GAC/CS,EAAgBJ,EAAUZ,aAAac,GAC3CpH,EAAU,GAAK53N,EACf43N,EAAU,GAAK/4M,EAMf,IALA,IAAIsgN,EAAiBvH,EAAUuG,GAC3BiB,EAAkBxH,EAAU,EAAIuG,GAChCkB,EAAiBF,EAAiBF,EAClCK,EAAiBH,EAAiBF,EAE7B/6O,EAAI,EAAGwT,EAAMkU,EAAO1pB,OAAS,EAAGgC,EAAIwT,EAAKxT,IAAK,CACrD,IAAIgqF,EAAS,EAAJhqF,EACLq7O,EAAa3zN,EAAOsiE,EAAKiwJ,GACzBqB,EAAc5zN,EAAOsiE,EAAK8wJ,GAE9B,GAAIO,GAAcF,GAAkBE,GAAcD,IAAmBJ,GAAiBM,EAAcJ,GAAmBF,GAAiBE,GAAmBI,EAAcJ,GAAmBI,GAAeJ,GAAmBF,GAC5N,OAAOZ,EAAiBp6O,EAE5B,CAEA,OAAQ,CACV,CAEA,SAASy6O,EAAc78O,EAAIgyO,EAAa30N,GACtC,IAAI4kN,EAAc5kN,EAAKq+N,UAAU,gBAAkBr+N,EAAKq+N,UAAU,SAC9DiC,EAAY3L,EAAY4F,SAAS,aAAagG,aAAa,CAAC,QAAS,gBACzE59O,EAAGq4O,SAASsF,GACZ39O,EAAGgK,MAAMme,KAAO,KAChBnoB,EAAGgK,MAAMytB,OAASwqM,EAClBjiO,EAAGgK,MAAMmuB,UAAY9a,EAAKk5N,UAAU,WACtC,CAEA,SAASqG,EAAwB58O,EAAI23O,EAAiBt6N,GACpD,IAAI4kN,EAAc0V,EAAgBr2O,IAAI,gBAAkBq2O,EAAgBr2O,IAAI,SACxEq8O,EAAYhG,EAAgBiG,aAAa,CAAC,QAAS,gBACvD59O,EAAGq4O,SAASsF,GACZ39O,EAAGgK,MAAMme,KAAO,KAChBnoB,EAAGgK,MAAMytB,OAASwqM,EAClBjiO,EAAGgK,MAAMmuB,UAAY9a,EAAKk5N,UAAU,WACtC,CAEA,SAASyC,EAAsB3B,EAAsB9wI,EAAQyvI,GAC3D,IAAI6H,EACArC,EAAyB,UAAfxF,EAAMpzO,KAQpB,OALEi7O,EADErC,EACYxF,EAAME,UAENF,EAAMzsM,KAAKu0M,UAGvBtC,EACK,CACLluN,GAAIuwN,EAAYvwN,GAChBC,GAAIswN,EAAYtwN,GAChBgtN,GAAIlD,EAAuBwG,EAAYtD,GAAKh0I,EAAOg0I,GACnDpvN,EAAGksN,EAAuBwG,EAAY1yN,EAAIo7E,EAAOp7E,EACjD8S,WAAYo5M,EAAuB9wI,EAAOtoE,WAAa,EACvDC,SAAUm5M,EAAuB9wI,EAAOroE,SAAqB,EAAV35B,KAAK40B,IAGnD,CACLjb,EAAGm5N,EAAuB9wI,EAAOroF,EAAI2/N,EAAY3/N,EACjD6e,EAAGs6M,EAAuBwG,EAAY9gN,EAAIwpE,EAAOxpE,EACjD6J,MAAOywM,EAAuB9wI,EAAO3/D,MAAQi3M,EAAYj3M,MACzDC,OAAQwwM,EAAuBwG,EAAYh3M,OAAS0/D,EAAO1/D,OAGjE,CAEA,SAASuxM,EAAmBpC,EAAOqB,EAAsB9wI,GACvD,IAAIw3I,EAA4B,UAAf/H,EAAMpzO,KAAmBsyO,EAAQ8F,OAAS9F,EAAQuF,KACnE,OAAO,IAAIsD,EAAW,CACpBnqN,MAAOolN,EAAsB3B,EAAsB9wI,EAAQyvI,GAC3DzoF,QAAQ,EACRmtF,GAAI,GAER,CAEAn7O,EAAOD,QAAUusB,C,wBCrqBjB,IAAImyN,EAAcp3N,EAAQ,OAEtBq3N,EAAsBr3N,EAAQ,OAoB9BiF,EAAWmyN,EAAYl8H,OAAO,CAChCl/G,KAAM,sBACNs7O,eAAgB,SAAU/0M,EAAQ2nM,GAChC,OAAOmN,EAAoB7/O,KAAK+/O,YAAa//O,KAAM,CACjDggP,oBAAoB,GAExB,EACAC,kBAAmB,SAAUn+O,GAC3B,IAAI+wO,EAAW7yO,KAAKq0O,iBAEpB,GAAIxB,EAAU,CAEZ,IAAIvyG,EAAKuyG,EAASiC,YAAYjC,EAASqN,UAAUp+O,IAC7Cmd,EAAOjf,KAAK+qG,UACZ59E,EAASlO,EAAKk5N,UAAU,UACxB7uJ,EAAOrqE,EAAKk5N,UAAU,QACtBgI,EAActN,EAASmF,cAAcI,eAAiB,EAAI,EAE9D,OADA93G,EAAG6/G,IAAgBhzN,EAASm8D,EAAO,EAC5Bg3C,CACT,CAEA,MAAO,CAAC90C,IAAKA,IACf,EACAgrJ,cAAe,CACb4J,OAAQ,EAERroK,EAAG,EAEHs8J,iBAAkB,cAClBgM,iBAAiB,EAMjBC,aAAc,EAEdC,YAAa,EAEbxkD,OAAO,EACPw6C,eAAgB,IAChBiK,YAAa,IACbC,qBAAsB,MAatBlB,UAAW,CAAC,EACZmB,SAAU,CAAC,KAIfv/O,EAAOD,QAAUusB,C,wBClFjB,IAAIwoN,EAAgBztN,EAAQ,OAoBxBm4N,EAAqB1K,EAAcvyH,OAAO,CAC5Cl/G,KAAM,sBACN0xO,aAAc,CAAC,QACfM,cAAe,CACbv0N,OAAQ,SAER2+N,WAAY,KAEZC,aAAc,KACdC,eAAgB,KAEhBC,aAAc,KACdC,aAAc,KAGdC,cAAc,EAKdC,sBAAuB,MAEvBC,YAAY,EACZC,mBAAoB,KAEpBC,kBAAmB,IAEnBxyM,OAAQ,QAIR2xM,YAAa,EACbc,gBAAgB,GAGlBxB,eAAgB,SAAU/0M,GAGxB,OADAA,EAAOjvB,MAAQ,KACR6kO,EAAmBY,WAAWvhP,KAAM,iBAAkB+C,UAC/D,IAEE0qB,EAAWkzN,EACfx/O,EAAOD,QAAUusB,C,iCC9DjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAElBwxD,EAAUxxD,EAAQ,OAElBg5N,EAAexnK,EAAQwnK,aAEvBC,EAAUj5N,EAAQ,OAElBk5N,EAAeD,EAAQC,aACvBC,EAAYF,EAAQE,UAEpB5K,EAAUvuN,EAAQ,OAElBwuN,EAAWD,EAAQC,SAoBnBS,EAAyB,CAAC,YAAa,eAEvCmK,EAAe,CAAC,CAClBC,GAAI,IACJC,GAAI,QACJ7/O,MAAO,EACP8/O,QAAS,CAAC,OAAQ,UACjB,CACDF,GAAI,IACJC,GAAI,SACJ7/O,MAAO,EACP8/O,QAAS,CAAC,MAAO,YAEfC,EAAmB,IAAIlL,EAAQ9sJ,OAC/Bi4J,EAAU9O,EAAQkF,gBAAgB,CACpC7zO,KAAM,eACNrF,OAAQ,SAAUy0O,EAAalB,EAAS/nI,GACtC,IAAIzvD,EAAQl7C,KAAKk7C,MACbj8B,EAAO20N,EAAY7oI,UACnB6U,EAAU5/G,KAAKqqK,MACf63E,EAAYtO,EAAYS,iBACxB0D,EAAWmK,EAAUlK,cACrBI,IAAiBL,EAASK,eAC1B+J,EAAeD,EAAU/2M,KAAKu0M,UAC9B78I,EAAM,CACRu/I,OAAQ,CACN55M,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,aAEd1O,YAAaA,EACbf,SAAUqP,EACVK,eAAgB,CAAC,CAACJ,EAAariO,EAAGqiO,EAAariO,EAAIqiO,EAAa35M,OAAQ,CAAC25M,EAAaxjN,EAAGwjN,EAAaxjN,EAAIwjN,EAAa15M,SACvH2vM,aAAcA,EACdoK,SAAUZ,GAAcxJ,GACxBqK,YAAab,EAAa,EAAIxJ,IA+ChC,OA7CAn5N,EAAK2tF,KAAKgT,GAASr/G,KAAI,SAAUszO,GAC/B,GAAK50N,EAAKq7N,SAASzG,GAAnB,CAIA,IAAIuG,EAAYC,EAAap7N,EAAM40N,GAC/B6O,EAAaC,EAAc1jO,EAAM40N,EAAWuG,EAAWv3I,GACvDt3D,EAAMq3M,EAAU3jO,EAAM4jF,EAAK6/I,GAC/BzjO,EAAKw7N,iBAAiB5G,EAAWtoM,GACjC2P,EAAM36C,IAAIgrC,GACVs3M,EAAat3M,EAAKs3D,EAAK6/I,EAPvB,CAQF,IAAG1rN,QAAO,SAAU0jN,EAAUC,GAC5B,IAAIpvM,EAAMq0E,EAAQk7H,iBAAiBH,GAEnC,GAAK17N,EAAKq7N,SAASI,GAAnB,CAKA,IAAIN,EAAYC,EAAap7N,EAAMy7N,GAC/BgI,EAAaC,EAAc1jO,EAAMy7N,EAAUN,EAAWv3I,GACtDigJ,EAAoBC,EAAY9jO,EAAMyjO,GAEtCn3M,GAAOu3M,IAAsBv3M,EAAIy3M,sBACnC9nM,EAAM0hC,OAAOrxC,GACbtsB,EAAKw7N,iBAAiBC,EAAU,MAChCnvM,EAAM,MAGJA,EACF03M,EAAU13M,EAAKs3D,EAAK6/I,GAEpBn3M,EAAMq3M,EAAU3jO,EAAM4jF,EAAK6/I,GAAY,GAGzCzjO,EAAKw7N,iBAAiBC,EAAUnvM,GAChCA,EAAI23M,sBAAwBR,EAE5BxnM,EAAM36C,IAAIgrC,GACVs3M,EAAat3M,EAAKs3D,EAAK6/I,EAtBvB,MAFExnM,EAAM0hC,OAAOrxC,EAyBjB,IAAGqxC,QAAO,SAAUi3J,GAClB,IAAItoM,EAAMq0E,EAAQk7H,iBAAiBjH,GACnCtoM,GAAO43M,EAAUvjI,EAASi0H,EAAWtoM,EAAI23M,sBAAsBhK,eAAgB3tM,EACjF,IAAGgxG,UACHv8I,KAAKqqK,MAAQprJ,EACNjf,KAAKk7C,KACd,EACAsgM,QAASlJ,EAAOj1C,KAChBzgH,OAAQ,SAAU81J,EAAS/nI,GACzB,IAAIzvD,EAAQl7C,KAAKk7C,MACbj8B,EAAOjf,KAAKqqK,MAEZqoE,EAAQxvO,IAAI,aACV+b,GACFA,EAAKw8N,mBAAkB,SAAUlwM,GAC/B43M,EAAUlkO,EAAMssB,EAAIsoM,UAAWnB,EAASnnM,EAC1C,IAGF2P,EAAMigM,WAEV,IAGF,SAASwH,EAAc1jO,EAAM40N,EAAWuG,EAAWv3I,GACjD,IAAIsF,EAASlpF,EAAK69N,cAAcjJ,GAC5BoN,EAAe7G,EAAUl3O,IAAI,gBAC7Bi+O,EAAa/G,EAAUl3O,IAAI,cAC3B49O,EAAiB1G,EAAUl3O,IAAI,mBAAqB,QACpD29O,EAAezG,EAAUl3O,IAAI,gBAC7B+wJ,GAAY4sF,GAAgB,GAAK16O,KAAK40B,GAAK,KAAO,EAClDsmN,EAAoBjH,EAAUl3O,IAAI,sBAAwB,EAC1Di2O,EAAqBiB,EAAUjB,qBAC/BuJ,EAAa,CACf7O,UAAWA,EACX1rI,OAAQA,EACRiyI,UAAWA,EACXgJ,WAAYnkO,EAAKo+N,cAAcxJ,EAAW,WAAa,SACvDjjN,MAAO3R,EAAKo+N,cAAcxJ,EAAW,SACrCsN,WAAYA,EACZF,aAAcA,EACdC,sBAAuB9G,EAAUl3O,IAAI,yBACrCm+O,kBAAmBA,EACnBptF,SAAUA,EACVilF,eAAgBC,EAAqBiB,EAAY,KACjDkH,eAAgBnI,GAAsBiB,EAAUl3O,IAAI,kBACpDo5O,GAAIlC,EAAUsD,WAAW,KAAK,IAAS,GAEzC2F,EAAiBjJ,EAAW6G,EAAc94I,EAAQtF,EAAK6/I,GACvDY,EAAkBrkO,EAAM40N,EAAW1rI,EAAQ84I,EAAcE,EAAYuB,EAAWa,eAAgBb,EAAWc,OAAQnC,EAAmBx+I,EAAK6/I,GAC3Ie,EAAiBrJ,EAAWsI,EAAWgB,YAAazvF,EAAUpxD,EAAK6/I,GACnE,IAAI9B,EAAa8B,EAAW9B,WACxBG,EAAe3G,EAAUl3O,IAAI,gBAOjC,OALIovO,EAAOxrO,QAAQi6O,KACjBA,EAAe,CAACW,EAAaX,EAAa,GAAIH,EAAW,IAAKc,EAAaX,EAAa,GAAIH,EAAW,MAGzG+C,EAAkBvJ,EAAWwG,EAAYz4I,EAAQ84I,EAAcE,EAAYJ,EAAcD,EAAgB4B,EAAWkB,eAAgBlB,EAAWa,eAAgBb,EAAWmB,gBAAiBhhJ,EAAK6/I,GACzLA,CACT,CAGA,SAASW,EAAiBjJ,EAAW6G,EAAc94I,EAAQtF,EAAKlgB,GAC9D,IAKI4gK,EALAf,EAAW3/I,EAAI2/I,SACfpB,EAAqBhH,EAAUl3O,IAAI,sBACnCgyC,EAAY2tD,EAAIgwI,SAASiR,aAAajhJ,EAAIgwI,SAASmF,eACnD+L,EAAS7uM,EAAU8uM,cAAc9uM,EAAU+uM,YAAY,IACvDC,EAAY,IAAM/7I,EAAOq6I,EAASV,KAAO,GAG7C,GAAIxP,EAAOxrO,QAAQs6O,GAAqB,CACtC,IAAI+C,EAAuB,CAACC,EAAqBlvM,EAAWksM,EAAmB,IAAM2C,EAAQK,EAAqBlvM,EAAWksM,EAAmB,IAAM2C,GACtJI,EAAqB,GAAKA,EAAqB,IAAMA,EAAqBnpN,UAC1EuoN,EAAiBY,EAAqBD,EACxC,MACEX,EAD+B,MAAtBnC,EACQgD,EAAqBlvM,EAAWksM,GAAsB2C,EAC9D9C,EACQp+I,EAAI0/I,eAAeC,EAASvgP,OAAOiiP,GAAaH,EAEhD57I,EAAOq6I,EAASV,IAGnCn/J,EAAO4gK,eAAiBA,EAEpBtC,IACFt+J,EAAOkhK,gBAAkB17I,EAAOq6I,EAASV,KAG3Cn/J,EAAO6gK,OAASD,EAAiB,EAAI,EAAIA,EAAiB,GAAK,EAAI,CACrE,CAEA,SAASa,EAAqBh5M,EAAMtpC,GAClC,OAAOspC,EAAK44M,cAAc54M,EAAK64M,YAAY74M,EAAK/U,MAAMzJ,MAAM9qB,IAC9D,CAGA,SAASwhP,EAAkBrkO,EAAM40N,EAAW1rI,EAAQ84I,EAAcE,EAAYoC,EAAgBC,EAAQnC,EAAmBx+I,EAAKlgB,GAC5H,IAAI6/J,EAAW3/I,EAAI2/I,SACfC,EAAc5/I,EAAI4/I,YAClB4B,EAAel+O,KAAK6iB,IAAIm/E,EAAOs6I,EAAYX,KAC3ClB,EAAa3hO,EAAKo+N,cAAcxJ,EAAW,cAE3CvB,EAAOxrO,QAAQ85O,GACjBA,EAAaA,EAAWz+O,SAEN,MAAdy+O,IACFA,EAAa,QAGfA,EAAa,CAACA,EAAYA,IAO5BA,EAAW6B,EAAYxgP,OAASy/O,EAAad,EAAW6B,EAAYxgP,OAAQoiP,GAC5EzD,EAAW4B,EAASvgP,OAASy/O,EAAad,EAAW4B,EAASvgP,OAAQg/O,EAAeoD,EAAel+O,KAAK6iB,IAAIu6N,IAC7G5gK,EAAOi+J,WAAaA,EAEpB,IAAI8C,EAAc/gK,EAAO+gK,YAAc,CAAC9C,EAAW,GAAKS,EAAmBT,EAAW,GAAKS,GAE3FqC,EAAYlB,EAASvgP,SAAW4gG,EAAIu1I,cAAgB,EAAI,GAAKoL,CAC/D,CAEA,SAASC,EAAiBrJ,EAAWsJ,EAAazvF,EAAUpxD,EAAKlgB,GAI/D,IAAIihK,EAAiBxJ,EAAUl3O,IAAIu0O,IAA2B,EAE1DmM,IACF5B,EAAiBnrN,KAAK,CACpBR,MAAOqtN,EAAYvhP,QACnB8xJ,SAAUA,IAEZ+tF,EAAiB1M,kBACjBsO,GAAkB5B,EAAiBsC,eACnCV,GAAkBF,EAAY7gJ,EAAI2/I,SAASvgP,QAG7C0gF,EAAOihK,eAAiBA,CAC1B,CAEA,SAASD,EAAkBvJ,EAAWwG,EAAYz4I,EAAQ84I,EAAcE,EAAYJ,EAAcD,EAAgB8C,EAAgBL,EAAgBM,EAAiBhhJ,EAAKlgB,GACtK,IAAI8/J,EAAc5/I,EAAI4/I,YAClBD,EAAW3/I,EAAI2/I,SACfgB,EAAS7gK,EAAO6gK,OAChBe,EAAap+O,KAAKwI,IAAIiyO,EAAW4B,EAASvgP,OAAS2hP,EAAgB,GACnEY,EAAUD,EAId,GAAItD,EAAc,CAChB,IAAIwD,EAAoBt+O,KAAK6iB,IAAIu6N,GAC7BvC,EAAe1O,EAAOoS,SAAStK,EAAUl3O,IAAI,gBAAiB,OAAS,GACvEyhP,GAAY,EAEZ3D,EAAa4D,YAAY,OAAS5D,EAAah/O,OAAS,IAC1D2iP,GAAY,EACZ3D,EAAeA,EAAa7+O,MAAM,EAAG6+O,EAAah/O,OAAS,IAG7Dg/O,EAAeU,EAAaV,EAAcJ,EAAW4B,EAASvgP,QAC9D,IAAI4iP,EAAiB1+O,KAAKwI,IAAI41O,EAA4B,EAAfvD,EAAkB,GAGzD8D,EAASH,EAAY,EAAmB,EAAf3D,EAGzB+D,EAAkBpD,EAAUV,GAC5B+D,EAAcD,EAAkB9D,EAAegE,GAAYR,EAAoBK,GAAUD,GAGzFK,EAAQT,EAAoBO,EAAcT,EAC9CvD,EAAekE,EAAQ,GAAKP,EAAYK,EAAcA,EAAc,GACpEH,EAAiBN,EAA4B,EAAfvD,EAC9B8D,EAASH,EAAY,EAAmB,EAAf3D,EAEpB+D,GAAoC,UAAjB9D,IACtB+D,EAAcnB,EAAkBoB,GAAY9+O,KAAK6iB,IAAI66N,GAAmBiB,GAAUD,GAAkB,GAGtGL,EAAUQ,EAAcH,EAAiBC,EACzCniK,EAAOqiK,YAAcA,EACrBriK,EAAOq+J,aAAeA,CACxB,CAEA,IAAImE,EAAU3B,GAAUgB,EAAU,GAC9BY,EAAeziK,EAAOyiK,aAAe,GACzCA,EAAa3C,EAAYxgP,OAASkmG,EAAOs6I,EAAYX,IAAM,EAC3DsD,EAAa5C,EAASvgP,OAA4B,UAAnB6+O,EAA6BqE,EAA6B,QAAnBrE,EAA2ByC,EAAiB4B,EAAU5B,EAAiB,EAEzIxC,IACFqE,EAAa,IAAMrE,EAAa,GAChCqE,EAAa,IAAMrE,EAAa,IAGlC,IAAIsE,EAAiB1iK,EAAO0iK,eAAiB,GAC7CA,EAAe5C,EAAYxgP,OAASkmG,EAAOs6I,EAAYZ,IACvDwD,EAAe7C,EAASvgP,OAASkmG,EAAOq6I,EAASX,IACjD,IAAIyD,EAAe3iK,EAAO2iK,aAAehT,EAAO5uH,OAAO,CAAC,EAAGvb,GAC3Dm9I,EAAa9C,EAASV,IAAM0B,EAASr9O,KAAKwI,IAAIxI,KAAK6iB,IAAIm/E,EAAOq6I,EAASV,KAAM37O,KAAK6iB,IAAIo8N,EAAa5C,EAASvgP,OAASkjP,IACrHG,EAAa7C,EAAYX,IAAM35I,EAAOs6I,EAAYX,IAClD,IAAIyD,EAAY5iK,EAAO4iK,UAAY,CAAC,EAEpCA,EAAU9C,EAAYZ,KAAO15I,EAAOs6I,EAAYZ,IAChD0D,EAAU9C,EAAYX,IAAMj/I,EAAIu/I,OAAOK,EAAYX,IACnDyD,EAAU/C,EAASX,IAAM,EACzB0D,EAAU/C,EAASV,IAAM35I,EAAOq6I,EAASV,GAC3C,CAEA,SAAS0D,EAAW9C,GAClB,IAAIrB,EAAoBqB,EAAWrB,kBAC/BnkL,EAAOskL,EACXkB,EAAWU,YAAa/B,EAAoB,GAAIA,EAAoB,EAAGA,EAAmBA,EAAmBqB,EAAW9xN,OAOxH,OANAssC,EAAKrmC,KAAK,CACR4uN,SAAS,IAEG,UAAdvoL,EAAK14D,MAAoB04D,EAAK2uH,SAAS,CACrC65D,eAAe,IAEVxoL,CACT,CAEA,SAASyoL,EAA4Bp6M,EAAKs3D,EAAK6/I,EAAYtG,GACzD,IAAIwJ,EAASr6M,EAAIs6M,kBACbjF,EAAa8B,EAAW9B,WACxBgD,EAAiBlB,EAAWkB,eAC5BwB,EAAe1C,EAAW0C,aAC1B5C,EAAW3/I,EAAI2/I,SACfwC,EAActC,EAAWsC,aAAe,EACxC/iP,EAAQ,EACR87D,EAAO6iL,EAAW/9I,EAAI2/I,SAASvgP,OAAS2hP,EAA2C,EAA1BlB,EAAW1B,aAmBxE,IAlBA8E,EAASv6M,GAAK,SAAU2xB,GACtBA,EAAK6oL,0BAA4B9jP,EACjCi7D,EAAK8oL,uBAAyBhB,EAE1B/iP,EAAQ+iP,EACViB,EAAW/oL,EAAM,KAAMgpL,EAAWjkP,GAAQygP,EAAYtG,GAEtD6J,EAAW/oL,EAAM,KAAM,CACrB7mC,MAAO,CAAC,EAAG,IACVqsN,EAAYtG,GAAU,WACvBwJ,EAAOhpK,OAAO1f,EAChB,IAGFipL,EAAqBjpL,EAAMwlL,GAC3BzgP,GACF,IAEOA,EAAQ+iP,EAAa/iP,IAAS,CACnC,IAAIi7D,EAAOsoL,EAAW9C,GACtBxlL,EAAK6oL,0BAA4B9jP,EACjCi7D,EAAK8oL,uBAAyBhB,EAC9BY,EAAOrlP,IAAI28D,GACX,IAAIx3D,EAASwgP,EAAWjkP,GACxBgkP,EAAW/oL,EAAM,CACfprC,SAAUpsB,EAAOosB,SACjBuE,MAAO,CAAC,EAAG,IACV,CACDA,MAAO3wB,EAAO2wB,MACd49H,SAAUvuJ,EAAOuuJ,UAChByuF,EAAYtG,GAGfl/K,EAAKuG,GAAG,YAAa2iL,GAAa3iL,GAAG,WAAY4iL,GACjDF,EAAqBjpL,EAAMwlL,EAC7B,CAEA,SAASwD,EAAWjkP,GAClB,IAAI6vB,EAAWszN,EAAajjP,QAGxBqhP,EAASd,EAAWc,OACpBx/O,EAAI/B,EAOR,OALyC,UAArCygP,EAAWxB,sBAAoCsC,EAAS,EAAIA,EAAS,KACvEx/O,EAAIghP,EAAc,EAAI/iP,GAGxB6vB,EAAS0wN,EAASvgP,OAAS87D,GAAQ/5D,EAAIghP,EAAc,EAAI,IAAOI,EAAa5C,EAASvgP,OAC/E,CACL6vB,SAAUA,EACVuE,MAAOqsN,EAAWgB,YAAYvhP,QAC9B8xJ,SAAUyuF,EAAWzuF,SAEzB,CAEA,SAASmyF,IACPN,EAASv6M,GAAK,SAAU2xB,GACtBA,EAAK8yC,QAAQ,WACf,GACF,CAEA,SAASq2I,IACPP,EAASv6M,GAAK,SAAU2xB,GACtBA,EAAK8yC,QAAQ,SACf,GACF,CACF,CAEA,SAASs2I,EAA2B/6M,EAAKs3D,EAAK6/I,EAAYtG,GACxD,IAAIwJ,EAASr6M,EAAIs6M,kBACbU,EAAWh7M,EAAIi7M,oBAuBnB,SAASJ,IACPpmP,KAAKgwG,QAAQ,WACf,CAEA,SAASq2I,IACPrmP,KAAKgwG,QAAQ,SACf,CA3BKu2I,EAYHN,EAAWM,EAAU,KAAM,CACzBz0N,SAAU4wN,EAAW0C,aAAajjP,QAClCk0B,MAAOqsN,EAAWgB,YAAYvhP,QAC9B8xJ,SAAUyuF,EAAWzuF,UACpByuF,EAAYtG,IAffmK,EAAWh7M,EAAIi7M,oBAAsBhB,EAAW9C,GAChDkD,EAAOrlP,IAAIgmP,GACXN,EAAWM,EAAU,CACnBz0N,SAAU4wN,EAAW0C,aAAajjP,QAClCk0B,MAAO,CAAC,EAAG,GACX49H,SAAUyuF,EAAWzuF,UACpB,CACD59H,MAAOqsN,EAAWgB,YAAYvhP,SAC7BugP,EAAYtG,GACfmK,EAAS9iL,GAAG,YAAa2iL,GAAa3iL,GAAG,WAAY4iL,IASvDF,EAAqBI,EAAU7D,EASjC,CAGA,SAAS+D,EAAsBl7M,EAAKm3M,EAAYtG,GAC9C,IAAIG,EAAYjK,EAAO5uH,OAAO,CAAC,EAAGg/H,EAAW4C,cACzCoB,EAAUn7M,EAAIo7M,mBAEbD,EAaHT,EAAWS,EAAS,KAAM,CACxBlxN,MAAO+mN,GACNmG,EAAYtG,IAdfsK,EAAUn7M,EAAIo7M,mBAAqB,IAAI7P,EAAQuF,KAAK,CAClDC,GAAI,EACJ9mN,MAAO+mN,EACPptF,QAAQ,EACRvjJ,MAAO,CACLytB,OAAQ,cACRtP,KAAM,cACNgQ,UAAW,KAGfwR,EAAIhrC,IAAImmP,GAMZ,CAEA,SAASE,EAAmBr7M,EAAKs3D,EAAK6/I,EAAYtG,GAEhD,GAAIsG,EAAWvB,WAAY,CACzB,IAAI9F,EAAW9vM,EAAIs7M,oBACftB,EAAYjT,EAAO5uH,OAAO,CAAC,EAAGg/H,EAAW6C,WACzC/C,EAAW3/I,EAAI2/I,SACftJ,EAAiBwJ,EAAWxJ,eAC5BrF,EAAY6O,EAAW7O,UAE3B,GAAIwH,EACFvE,EAAQ+D,YAAYQ,EAAU,CAC5B7lN,MAAO+vN,GACNrM,EAAgBrF,OACd,CACL0R,EAAU/C,EAASV,IAAM,EACzBzG,EAAW,IAAIvE,EAAQuF,KAAK,CAC1B7mN,MAAO+vN,IAGTh6M,EAAIs6M,kBAAkBvK,YAAYD,GAElC9vM,EAAIs7M,oBAAsBxL,EAC1B,IAAI31O,EAAS,CAAC,EACdA,EAAO88O,EAASV,IAAMY,EAAW6C,UAAU/C,EAASV,IACpDhL,EAAQsF,EAAW,cAAgB,aAAaf,EAAU,CACxD7lN,MAAO9vB,GACNwzO,EAAgBrF,EACrB,CACF,CACF,CAEA,SAASwG,EAAap7N,EAAM40N,GAC1B,IAAIuG,EAAYn7N,EAAKo7N,aAAaxG,GAGlC,OAFAuG,EAAU0M,wBAA0BA,EACpC1M,EAAUjB,mBAAqBA,EACxBiB,CACT,CAEA,SAAS0M,EAAwB5pL,GAE/B,MAAO,CACLj7D,MAAOi7D,EAAK6oL,0BACZx9N,MAAO20C,EAAK8oL,uBAEhB,CAEA,SAAS7M,IAEP,OAAOn5O,KAAK+mP,YAAY5N,wBAA0Bn5O,KAAK09O,WAAW,YACpE,CAEA,SAASyI,EAAqBjpL,EAAMwlL,GAClCxlL,EAAK8e,IAAI,YAAYA,IAAI,UACzB,IAAI3lD,EAAQqsN,EAAWgB,YAAYvhP,QACnCugP,EAAWpB,gBAAkBpkL,EAAKuG,GAAG,YAAY,WAC/CzjE,KAAKgnP,UAAU,CACb3wN,MAAO,CAAY,IAAXA,EAAM,GAAqB,IAAXA,EAAM,KAC7B,IAAK,aACV,IAAGotC,GAAG,UAAU,WACdzjE,KAAKgnP,UAAU,CACb3wN,MAAOA,EAAMl0B,SACZ,IAAK,aACV,GACF,CAEA,SAASygP,EAAU3jO,EAAM4jF,EAAK6/I,EAAYtG,GAExC,IAAI7wM,EAAM,IAAIurM,EAAQM,MAElBwO,EAAS,IAAI9O,EAAQM,MAezB,OAdA7rM,EAAIhrC,IAAIqlP,GACRr6M,EAAIs6M,kBAAoBD,EACxBA,EAAO/uN,KAAK,WAAY6rN,EAAW2C,eAAeljP,SAE9CugP,EAAWzB,aACb0E,EAA4Bp6M,EAAKs3D,EAAK6/I,GAEtC4D,EAA2B/6M,EAAKs3D,EAAK6/I,GAGvC+D,EAAsBl7M,EAAKm3M,EAAYtG,GACvCwK,EAAmBr7M,EAAKs3D,EAAK6/I,EAAYtG,GACzC7wM,EAAIy3M,oBAAsBD,EAAY9jO,EAAMyjO,GAC5Cn3M,EAAI23M,sBAAwBR,EACrBn3M,CACT,CAEA,SAAS03M,EAAU13M,EAAKs3D,EAAK6/I,GAC3B,IAAIxJ,EAAiBwJ,EAAWxJ,eAC5BrF,EAAY6O,EAAW7O,UACvB+R,EAASr6M,EAAIs6M,kBACjB/O,EAAQ+D,YAAY+K,EAAQ,CAC1B9zN,SAAU4wN,EAAW2C,eAAeljP,SACnC+2O,EAAgBrF,GAEf6O,EAAWzB,aACb0E,EAA4Bp6M,EAAKs3D,EAAK6/I,GAAY,GAElD4D,EAA2B/6M,EAAKs3D,EAAK6/I,GAAY,GAGnD+D,EAAsBl7M,EAAKm3M,GAAY,GACvCkE,EAAmBr7M,EAAKs3D,EAAK6/I,GAAY,EAC3C,CAEA,SAASS,EAAUlkO,EAAM40N,EAAWqF,EAAgB3tM,GAElD,IAAI07M,EAAY17M,EAAIo7M,mBACpBM,IAAcA,EAAUr7O,MAAM+wB,KAAO,MACrC,IAAIuqN,EAAS,GACbpB,EAASv6M,GAAK,SAAU2xB,GACtBgqL,EAAOjjP,KAAKi5D,EACd,IACA3xB,EAAIi7M,qBAAuBU,EAAOjjP,KAAKsnC,EAAIi7M,qBAE3Cj7M,EAAIs7M,sBAAwB3N,EAAiB,MAC7C5G,EAAO56H,KAAKwvI,GAAQ,SAAUhqL,GAC5B45K,EAAQ+D,YAAY39K,EAAM,CACxB7mC,MAAO,CAAC,EAAG,IACV6iN,EAAgBrF,GAAW,WAC5BtoM,EAAIprC,QAAUorC,EAAIprC,OAAOy8E,OAAOrxC,EAClC,GACF,IACAtsB,EAAKw7N,iBAAiB5G,EAAW,KACnC,CAEA,SAASkP,EAAY9jO,EAAMyjO,GACzB,MAAO,CAACzjO,EAAKo+N,cAAcqF,EAAW7O,UAAW,WAAa,SAAU6O,EAAWzB,eAAgByB,EAAWvB,YAAYr2O,KAAK,IACjI,CAEA,SAASg7O,EAASv6M,EAAKotC,EAAI54E,GAEzBuyO,EAAO56H,KAAKnsE,EAAIs6M,kBAAkB9mK,YAAY,SAAUn9E,GACtDA,IAAO2pC,EAAIo7M,oBAAsBhuK,EAAGt4E,KAAKN,EAAS6B,EACpD,GACF,CAEA,SAASqkP,EAAWrkP,EAAIulP,EAAgBC,EAAgB1E,EAAYtG,EAAUzjK,GAC5EwuK,GAAkBvlP,EAAGi1B,KAAKswN,GAEtBzE,EAAWvB,aAAe/E,EAC5BgL,GAAkBxlP,EAAGi1B,KAAKuwN,GAE1BA,GAAkBtQ,EAAQsF,EAAW,cAAgB,aAAax6O,EAAIwlP,EAAgB1E,EAAWxJ,eAAgBwJ,EAAW7O,UAAWl7J,EAE3I,CAEA,SAASkqK,EAAat3M,EAAKs3D,EAAK6/I,GAC9B,IAAI9xN,EAAQ8xN,EAAW9xN,MACnBijN,EAAY6O,EAAW7O,UACvBuG,EAAYsI,EAAWtI,UAGvBiN,EAAcjN,EAAUZ,SAAS,aAAagG,aAAa,CAAC,UAC5DhC,EAAapD,EAAUZ,SAAS,sBAAsBgG,eACtD/B,EAAcrD,EAAUsD,WAAW,UACvCoI,EAASv6M,GAAK,SAAU2xB,GAEtBA,EAAKoqL,SAAS12N,GACdssC,EAAK2uH,SAASymD,EAAO94I,SAAS,CAC5BzvE,KAAM6G,EACN0I,QAASopN,EAAWppN,SACnB+tN,IACHvQ,EAAQ8G,cAAc1gL,EAAMsgL,GAC5BC,IAAgBvgL,EAAKxqC,OAAS+qN,GAC9BvgL,EAAKo/K,GAAKoG,EAAWpG,EACvB,IACA,IAAIiL,EAAoB,CAAC,EACrBC,EAAqB3kJ,EAAI2/I,SAAST,UAAUW,EAAWa,eAAiB,IACxEmD,EAAUn7M,EAAIo7M,mBAClB3P,EAAS0P,EAAQ96O,MAAO27O,EAAmBnN,EAAWxpN,EAAOiyE,EAAI+wI,YAAaC,EAAW2T,GACzF1Q,EAAQ8G,cAAc8I,EAASa,EACjC,CAEA,SAAStC,EAAW5gL,GAClB,IAAIojL,EAAethP,KAAKugF,MAAMriB,GAE9B,OAAOl+D,KAAK6iB,IAAIq7C,EAAQojL,GAAgB,KAAOA,EAAethP,KAAK0I,KAAKw1D,EAC1E,CAEA,IAAI52C,EAAWw0N,EACf9gP,EAAOD,QAAUusB,C,wBChpBjB,IAAIi6N,EAAkBl/N,EAAQ,OAoB1B0xN,EAAkBwN,EAAgB,CAAC,CAAC,OAAQ,SAAU,CAAC,SAAU,eAAgB,CAAC,YAAa,eACnG,CAAC,SAAU,kBAAmB,CAAC,YAAa,kBAAmB,CAAC,WAAY,CAAC,cAAe,CAAC,iBAAkB,CAAC,iBAAkB,CAAC,iBAC/Hj6N,EAAW,CACbysN,gBAAiB,SAAUyN,GACzB,IAAI/7O,EAAQsuO,EAAgBl6O,KAAM2nP,GAElC,GAAI3nP,KAAK4nP,kBAAmB,CAC1B,IAAInuN,EAAWz5B,KAAK4nP,oBACpBnuN,IAAa7tB,EAAM6tB,SAAWA,EAChC,CAEA,OAAO7tB,CACT,GAEFzK,EAAOD,QAAUusB,C,wBClCjB,IAAIqpN,EAAUtuN,EAAQ,OAElBq/N,EAAer/N,EAAQ,OAEvBs/N,EAAkBD,EAAaC,gBAoBnC,SAAS9Q,EAASqQ,EAAa7J,EAAYpD,EAAWxpN,EAAOgjN,EAAaC,EAAW8J,GACnF,IAAIoK,EAAa3N,EAAUZ,SAAS,SAChCwO,EAAkB5N,EAAUZ,SAAS,kBACzC1C,EAAQmR,cAAcZ,EAAa7J,EAAYuK,EAAYC,EAAiB,CAC1EE,aAActU,EACduU,eAAgBtU,EAChBuU,YAAaN,EAAgBlU,EAAY7oI,UAAW8oI,GACpDwU,YAAY,EACZC,UAAW13N,IAEb23N,EAAYlB,GACZkB,EAAY/K,EACd,CAEA,SAAS+K,EAAY38O,EAAO+xO,GACC,YAAvB/xO,EAAM46C,eACR56C,EAAM46C,aAAem3L,EAEzB,CAEAz8O,EAAQ81O,SAAWA,C,wBC5CnB,IAAI7D,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAER,IAAIggO,EAAgBhgO,EAAQ,OAExBigO,EAAgBjgO,EAAQ,OAoB5B2qN,EAAQ4C,eAAeyS,GACvBrV,EAAQsC,eAAegT,E,wBC7BvB,IAAInW,EAAS9pN,EAAQ,OAEjBo3N,EAAcp3N,EAAQ,OAEtBkgO,EAAoBlgO,EAAQ,OAE5BmgO,EAAmBD,EAAkBC,iBAoBrCC,EAAgBhJ,EAAYl8H,OAAO,CACrCl/G,KAAM,iBACN0xO,aAAc,CAAC,QAAS,QAAS,QAUjC2S,uBAAwB,CAAC,CACvBpkP,KAAM,MACNqkP,gBAAgB,GACf,CACDrkP,KAAM,KACNqkP,gBAAgB,GACf,CACDrkP,KAAM,SACNqkP,gBAAgB,GACf,CACDrkP,KAAM,KACNqkP,gBAAgB,GACf,CACDrkP,KAAM,MACNqkP,gBAAgB,IAOlBluF,WAAY,KAKZ47E,cAAe,CACb4J,OAAQ,EAERroK,EAAG,EAEHs8J,iBAAkB,cAClBgM,iBAAiB,EACjBiB,gBAAgB,EAGhBn5I,OAAQ,KAER4gJ,SAAU,CAAC,EAAG,IAEdxJ,UAAW,CACT3uN,MAAO,OACPi3C,YAAa,GAEf64K,SAAU,CACRnB,UAAW,CACT13K,YAAa,EACbluC,WAAY,EACZE,cAAe,EACfC,cAAe,EACfF,YAAa,oBAGjBopI,gBAAiB,aACjB/uD,kBAAmB,OAGvBq+H,EAAO0W,MAAMJ,EAAeD,GAAkB,GAC9C,IAAIl7N,EAAWm7N,EACfznP,EAAOD,QAAUusB,C,wBCjGjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBygO,EAAYzgO,EAAQ,OAEpBsuN,EAAUtuN,EAAQ,OAElB2uN,EAAO3uN,EAAQ,OAqBf0gO,EAAyB,CAAC,aAC1BC,EAA2B,CAAC,WAAY,aACxCC,EAAcH,EAAUvlI,OAAO,CACjCl/G,KAAM,UACNrF,OAAQ,SAAUy0O,EAAalB,EAAS/nI,GACtC,IAAI1rF,EAAO20N,EAAY7oI,UACnB7vD,EAAQl7C,KAAKk7C,MACb0kE,EAAU5/G,KAAKqqK,MAGdrqK,KAAKqqK,OACRnvH,EAAMigM,YAGR,IAAIkO,EAAyC,eAA9BzV,EAAY1wO,IAAI,UAA6B,EAAI,EAChE+b,EAAK2tF,KAAKgT,GAASr/G,KAAI,SAAU+oP,GAC/B,GAAIrqO,EAAKq7N,SAASgP,GAAS,CACzB,IAAIC,EAAatqO,EAAK69N,cAAcwM,GAChCE,EAAWC,EAAgBF,EAAYtqO,EAAMqqO,EAAQD,GAAU,GACnEpqO,EAAKw7N,iBAAiB6O,EAAQE,GAC9BtuM,EAAM36C,IAAIipP,EACZ,CACF,IAAGxyN,QAAO,SAAUsyN,EAAQI,GAC1B,IAAIF,EAAW5pI,EAAQk7H,iBAAiB4O,GAExC,GAAKzqO,EAAKq7N,SAASgP,GAAnB,CAKA,IAAIC,EAAatqO,EAAK69N,cAAcwM,GAE/BE,EAGHG,EAAoBJ,EAAYC,EAAUvqO,EAAMqqO,GAFhDE,EAAWC,EAAgBF,EAAYtqO,EAAMqqO,EAAQD,GAKvDnuM,EAAM36C,IAAIipP,GACVvqO,EAAKw7N,iBAAiB6O,EAAQE,EAX9B,MAFEtuM,EAAM0hC,OAAO4sK,EAcjB,IAAG5sK,QAAO,SAAU8sK,GAClB,IAAI9nP,EAAKg+G,EAAQk7H,iBAAiB4O,GAClC9nP,GAAMs5C,EAAM0hC,OAAOh7E,EACrB,IAAG26I,UACHv8I,KAAKqqK,MAAQprJ,CACf,EACA29D,OAAQ,SAAU81J,GAChB,IAAIx3L,EAAQl7C,KAAKk7C,MACbj8B,EAAOjf,KAAKqqK,MAChBrqK,KAAKqqK,MAAQ,KACbprJ,GAAQA,EAAKw8N,mBAAkB,SAAU75O,GACvCA,GAAMs5C,EAAM0hC,OAAOh7E,EACrB,GACF,EACA45O,QAASlJ,EAAOj1C,OAEdusD,EAAUzS,EAAKzzH,OAAO,CACxBl/G,KAAM,iBACNgxB,MAAO,CAAC,EACRuoN,UAAW,SAAU55O,EAAKqxB,GACxB,IAAIq0N,EAAOr0N,EAAM9J,OACb1nB,EAAI,EAIR,IAHAG,EAAI8hC,OAAO4jN,EAAK7lP,GAAG,GAAI6lP,EAAK7lP,GAAG,IAC/BA,IAEOA,EAAI,EAAGA,IACZG,EAAI08B,OAAOgpN,EAAK7lP,GAAG,GAAI6lP,EAAK7lP,GAAG,IAKjC,IAFAG,EAAIs5B,YAEGz5B,EAAI6lP,EAAK7nP,OAAQgC,IACtBG,EAAI8hC,OAAO4jN,EAAK7lP,GAAG,GAAI6lP,EAAK7lP,GAAG,IAC/BA,IACAG,EAAI08B,OAAOgpN,EAAK7lP,GAAG,GAAI6lP,EAAK7lP,GAAG,GAEnC,IAGF,SAASylP,EAAgBF,EAAYtqO,EAAM40N,EAAWwV,EAAU33I,GAC9D,IAAIm4I,EAAON,EAAWM,KAClBjoP,EAAK,IAAIgoP,EAAQ,CACnBp0N,MAAO,CACL9J,OAAQgmF,EAASo4I,EAAUD,EAAMR,EAAUE,GAAcM,KAI7D,OADAF,EAAoBJ,EAAY3nP,EAAIqd,EAAM40N,EAAWniI,GAC9C9vG,CACT,CAEA,SAAS+nP,EAAoBJ,EAAY3nP,EAAIqd,EAAM40N,EAAWniI,GAC5D,IAAIkiI,EAAc30N,EAAK8qO,UACnBC,EAAelT,EAAQplI,EAAS,YAAc,eAClDs4I,EAAapoP,EAAI,CACf4zB,MAAO,CACL9J,OAAQ69N,EAAWM,OAEpBjW,EAAaC,GAChB,IAAIuG,EAAYn7N,EAAKo7N,aAAaxG,GAC9BoW,EAAuB7P,EAAUZ,SAAS0P,GAC1CrlB,EAAc5kN,EAAKo+N,cAAcxJ,EAAW,SAE5C0L,EAAY0K,EAAqBzK,aAAa,CAAC,gBACnDD,EAAUlmN,OAASwqM,EACnB0b,EAAUmG,eAAgB,EAC1B9jP,EAAGq4O,SAASsF,GACZ39O,EAAG06O,GAAK,IACR,IAAIkB,EAAapD,EAAUZ,SAAS2P,GAA0B3J,eAC9D1I,EAAQ8G,cAAch8O,EAAI47O,EAC5B,CAEA,SAASsM,EAAUp+N,EAAQumH,EAAKs3G,GAC9B,OAAOjX,EAAO5oN,IAAIgC,GAAQ,SAAU1b,GAGlC,OAFAA,EAAQA,EAAM7N,QACd6N,EAAMiiI,GAAOs3G,EAAWW,aACjBl6O,CACT,GACF,CAEA,IAAIyd,EAAW27N,EACfjoP,EAAOD,QAAUusB,C,iCCnJjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBi5N,EAAUj5N,EAAQ,OAElBk5N,EAAeD,EAAQC,aAoBvBhqI,EAAO46H,EAAO56H,KAElB,SAASjqF,EAASilN,GAChB,IAAIyX,EAAcC,EAAkB1X,GACpCh7H,EAAKyyI,GAAa,SAAUE,GAC1B,IAAIC,EAAeD,EAAUC,aAExBA,EAAatoP,SAIlBuoP,EAAcF,GACd3yI,EAAK4yI,GAAc,SAAU1W,EAAazsI,GACxCqjJ,EAAmB5W,EAAayW,EAAUI,cAActjJ,GAAMkjJ,EAAUK,aAAavjJ,GACvF,IACF,GACF,CAMA,SAASijJ,EAAkB1X,GACzB,IAAIhvO,EAAS,GACTinP,EAAW,GAgBf,OAfAjY,EAAQkY,iBAAiB,WAAW,SAAUhX,GAC5C,IAAImE,EAAWnE,EAAYoE,cACvB7wI,EAAMmrI,EAAOj7N,QAAQszO,EAAU5S,GAE/B5wI,EAAM,IACRA,EAAMwjJ,EAAS3oP,OACf2oP,EAASxjJ,GAAO4wI,EAChBr0O,EAAOyjG,GAAO,CACZ/7D,KAAM2sM,EACNuS,aAAc,KAIlB5mP,EAAOyjG,GAAKmjJ,aAAarmP,KAAK2vO,EAChC,IACOlwO,CACT,CAMA,SAAS6mP,EAAcF,GACrB,IAAI98D,EAOAs9D,EANA9S,EAAWsS,EAAUj/M,KACrBk/M,EAAeD,EAAUC,aACzBQ,EAAcR,EAAatoP,OAC3B0oP,EAAeL,EAAUK,aAAe,GACxCD,EAAgBJ,EAAUI,cAAgB,GAC1CM,EAAY,GAGhB,GAAsB,aAAlBhT,EAASvzO,KACXqmP,EAAY9S,EAASiT,mBAChB,CACL,IAAIC,EAAe,EACnBvzI,EAAK4yI,GAAc,SAAU1W,GAC3BqX,EAAe9kP,KAAKwI,IAAIs8O,EAAcrX,EAAY7oI,UAAUxiF,QAC9D,IACAglK,EAASwqD,EAASmT,YAAa/kP,KAAK6iB,IAAIukK,EAAO,GAAKA,EAAO,GAC7D,CAEA71E,EAAK4yI,GAAc,SAAU1W,GAC3B,IAAIuX,EAAgBvX,EAAY1wO,IAAI,YAE/BovO,EAAOxrO,QAAQqkP,KAClBA,EAAgB,CAACA,EAAeA,IAGlCJ,EAAU9mP,KAAK,CAACy9O,EAAayJ,EAAc,GAAIN,IAAc,EAAGnJ,EAAayJ,EAAc,GAAIN,IAAc,GAC/G,IACA,IAAIO,EAA6B,GAAZP,EAAkB,EACnCQ,EAASD,EAAiBN,EAAc,GACxC/B,GAAYqC,EAAiBC,GAAUP,EAAc,IAAMA,EAC3DjnI,EAAOklI,EAAW,EAAIqC,EAAiB,EAC3C1zI,EAAK4yI,GAAc,SAAU1W,EAAazsI,GACxCsjJ,EAAcxmP,KAAK4/G,GACnBA,GAAQwnI,EAAStC,EACjB2B,EAAazmP,KAAKkC,KAAKyI,IAAIzI,KAAKwI,IAAIo6O,EAAUgC,EAAU5jJ,GAAK,IAAK4jJ,EAAU5jJ,GAAK,IACnF,GACF,CAMA,SAASqjJ,EAAmB5W,EAAazmN,EAAQ47N,GAC/C,IAAIlW,EAAWe,EAAYS,iBACvBp1N,EAAO20N,EAAY7oI,UACnB3rD,EAAY2pM,EAAW,EACvBuC,EAAwC,eAA9B1X,EAAY1wO,IAAI,UAA6B,EAAI,EAC3DqoP,EAAU,EAAID,EACdE,EAAY,CAAC,IAAK,KAClBC,EAAOxsO,EAAKysO,aAAaF,EAAUF,IACnCK,EAAQ1sO,EAAKysO,aAAaF,EAAUD,IAAU,GAElD,KAAY,MAARE,GAAgBE,EAAM3pP,OAAS,GAInC,IAAK,IAAI6xO,EAAY,EAAGA,EAAY50N,EAAKsJ,QAASsrN,IAAa,CAC7D,IAAI+X,EAAa3sO,EAAK/b,IAAIuoP,EAAM5X,GAC5Br1G,EAASo7B,EAASgyF,EAAYD,EAAM,GAAI9X,GACxCgY,EAAOjyF,EAASgyF,EAAYD,EAAM,GAAI9X,GACtCiY,EAAOlyF,EAASgyF,EAAYD,EAAM,GAAI9X,GACtCkY,EAAOnyF,EAASgyF,EAAYD,EAAM,GAAI9X,GACtCmY,EAAOpyF,EAASgyF,EAAYD,EAAM,GAAI9X,GACtCgW,EAAO,GACXoC,EAAWpC,EAAMiC,EAAM,GACvBG,EAAWpC,EAAMkC,EAAM,GACvBlC,EAAK5lP,KAAK4nP,EAAMC,EAAME,EAAMD,GAC5BG,EAAWrC,EAAMgC,GACjBK,EAAWrC,EAAMmC,GACjBE,EAAWrC,EAAMrrH,GACjBv/G,EAAKktO,cAActY,EAAW,CAC5BqW,aAAc1rH,EAAO+sH,GACrB1B,KAAMA,GAEV,CAEA,SAASjwF,EAASgyF,EAAYQ,EAAQvY,GACpC,IAII7jO,EAJAhB,EAAMiQ,EAAK/b,IAAIkpP,EAAQvY,GACvBh2L,EAAI,GAYR,OAXAA,EAAEytM,GAAWM,EACb/tM,EAAE0tM,GAAWv8O,EAGTD,MAAM68O,IAAe78O,MAAMC,GAC7BgB,EAAQ,CAACw7E,IAAKA,MAEdx7E,EAAQ6iO,EAASiC,YAAYj3L,GAC7B7tC,EAAMs7O,IAAYn+N,GAGbnd,CACT,CAEA,SAASi8O,EAAWpC,EAAM75O,EAAO0uC,GAC/B,IAAIyF,EAASn0C,EAAM7N,QACfiiD,EAASp0C,EAAM7N,QACnBgiD,EAAOmnM,IAAYlsM,EACnBgF,EAAOknM,IAAYlsM,EACnBV,EAAQmrM,EAAK5lP,KAAKkgD,EAAQC,GAAUylM,EAAK5lP,KAAKmgD,EAAQD,EACxD,CAEA,SAAS+nM,EAAWrC,EAAMwC,GACxB,IAAIjuL,EAAOiuL,EAAUlqP,QACjBq3H,EAAK6yH,EAAUlqP,QACnBi8D,EAAKktL,IAAYlsM,EACjBo6E,EAAG8xH,IAAYlsM,EACfyqM,EAAK5lP,KAAKm6D,EAAMo7D,EAClB,CACF,CAEAr4H,EAAOD,QAAUusB,C,oBCrKjB,IAAI6+N,EAAmB,CAAC,YAAa,eAErC,SAAS7+N,EAASilN,EAAS/nI,GACzB,IAAI4hJ,EAAe7Z,EAAQxvO,IAAI,SAC/BwvO,EAAQ8Z,oBAAoB,WAAW,SAAU5Y,GAC/C,IAAI6Y,EAAcF,EAAa3Y,EAAY8K,YAAc6N,EAAavqP,QAClEid,EAAO20N,EAAY7oI,UACvB9rF,EAAK+2N,UAAU,CACb0W,aAAc,YAGd97N,MAAOgjN,EAAY1wO,IAAIopP,IAAqBG,IAGzC/Z,EAAQia,iBAAiB/Y,IAC5B30N,EAAKy4F,MAAK,SAAUvQ,GAClB,IAAIizI,EAAYn7N,EAAKo7N,aAAalzI,GAClCloF,EAAK2tO,cAAczlJ,EAAK,CACtBv2E,MAAOwpN,EAAUl3O,IAAIopP,GAAkB,IAE3C,GAEJ,GACF,CAEAnrP,EAAOD,QAAUusB,C,wBC3CjB,IAAI0lN,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAER,IAAIqkO,EAAerkO,EAAQ,OAEvBskO,EAAoBtkO,EAAQ,OAE5BukO,EAAoBvkO,EAAQ,OAoBhC2qN,EAAQ6Z,qBAAqBH,GAC7B1Z,EAAQ4C,eAAe+W,GACvB3Z,EAAQsC,eAAesX,E,wBChCvB,IAAIza,EAAS9pN,EAAQ,OAEjBo3N,EAAcp3N,EAAQ,OAEtBkgO,EAAoBlgO,EAAQ,OAE5BmgO,EAAmBD,EAAkBC,iBAoBrCsE,EAAoBrN,EAAYl8H,OAAO,CACzCl/G,KAAM,qBACN0xO,aAAc,CAAC,QAAS,QAAS,QAKjC2S,uBAAwB,CAAC,CACvBpkP,KAAM,OACNqkP,gBAAgB,GACf,CACDrkP,KAAM,QACNqkP,gBAAgB,GACf,CACDrkP,KAAM,SACNqkP,gBAAgB,GACf,CACDrkP,KAAM,UACNqkP,gBAAgB,IAOlBluF,WAAY,KAKZ47E,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EACHs8J,iBAAkB,cAClBgM,iBAAiB,EACjBiB,gBAAgB,EAGhBn5I,OAAQ,KAERi3H,MAAM,EACNmgB,UAAW,CACT3uN,MAAO,UAEPs8N,OAAQ,UAERrlL,YAAa,EAGbg8J,YAAa,UACbspB,aAAc,WAEhBzM,SAAU,CACRnB,UAAW,CACT13K,YAAa,IAGjBulL,YAAa,KACbC,YAAa,KACbz+M,SAAU,KACVmtJ,OAAO,EACPw6C,eAAgB,IAChBiK,YAAa,IACblK,qBAAsB,IACtBmK,qBAAsB,MACtB6M,iBAAiB,EACjBtqF,gBAAiB,SACjB/uD,kBAAmB,KAOrBs5I,aAAc,WACZ,MAAO,MACT,EACApX,cAAe,SAAUtC,EAAW50N,EAAMuuO,GACxC,IAAIjE,EAAatqO,EAAK69N,cAAcjJ,GACpC,OAAO0V,GAAciE,EAAUvwN,KAAKssN,EAAWkE,UACjD,IAEFnb,EAAO0W,MAAMiE,EAAmBtE,GAAkB,GAClD,IAAIl7N,EAAWw/N,EACf9rP,EAAOD,QAAUusB,C,wBC9GjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBygO,EAAYzgO,EAAQ,OAEpBsuN,EAAUtuN,EAAQ,OAElB2uN,EAAO3uN,EAAQ,OAEf8uN,EAA8B9uN,EAAQ,OAEtC+uN,EAAiBD,EAA4BC,eAoB7C2R,EAAyB,CAAC,aAC1BC,EAA2B,CAAC,WAAY,aACxCuE,EAAa,CAAC,QAAS,SAAU,cAAe,gBAChDC,EAAkB1E,EAAUvlI,OAAO,CACrCl/G,KAAM,cACNrF,OAAQ,SAAUy0O,EAAalB,EAAS/nI,GAEtC3qG,KAAKk7C,MAAMm+L,iBAEXr5O,KAAKs4O,gBAAgB1E,GAErB5zO,KAAKw4O,aAAex4O,KAAKy4O,aAAa7E,GAAe5zO,KAAK04O,cAAc9E,EAC1E,EACA+E,yBAA0B,SAAU/E,EAAalB,EAAS/nI,GACxD3qG,KAAK44O,SAEL54O,KAAKs4O,gBAAgB1E,EACvB,EACAiF,kBAAmB,SAAUj3N,EAAQgyN,EAAalB,EAAS/nI,GACzD3qG,KAAKw4O,aAAex4O,KAAK84O,wBAAwBl3N,EAAQgyN,GAAe5zO,KAAK4tP,yBAAyBhsO,EAAQgyN,EAChH,EACA0E,gBAAiB,SAAU1E,GACzB,IAAImF,EAAcnF,EAAYoF,gBAAgBj9C,OAErB,MAArB/7L,KAAKw4O,cAAwBO,EAAc/4O,KAAKw4O,gBAClDx4O,KAAKw4O,aAAeO,EAEpB/4O,KAAK44O,SAET,EACAF,cAAe,SAAU9E,GACvB,IAAI30N,EAAO20N,EAAY7oI,UACnB6U,EAAU5/G,KAAKqqK,MACfnvH,EAAQl7C,KAAKk7C,MACb2yM,EAAc5uO,EAAKk5N,UAAU,eAC7BiB,EAAYxF,EAAY1wO,IAAI,QAAQ,GACpC00O,EAAQhE,EAAYS,iBACpByZ,EAAWlW,EAAME,SAAWF,EAAME,UAGjC93O,KAAKqqK,OACRnvH,EAAMigM,YAGRl8N,EAAK2tF,KAAKgT,GAASr/G,KAAI,SAAU+oP,GAC/B,GAAIrqO,EAAKq7N,SAASgP,GAAS,CACzB,IAAI1nP,EACA2nP,EAAatqO,EAAK69N,cAAcwM,GAEpC,GAAIlQ,GAAa2U,EAAmBD,EAAUvE,GAC5C,OAGF3nP,EAAK6nP,EAAgBF,EAAYD,GAAQ,GACzCxS,EAAQkX,UAAUpsP,EAAI,CACpB4zB,MAAO,CACL9J,OAAQ69N,EAAWM,OAEpBjW,EAAa0V,GAChB2E,EAAarsP,EAAIqd,EAAMqqO,EAAQuE,GAC/B3yM,EAAM36C,IAAIqB,GACVqd,EAAKw7N,iBAAiB6O,EAAQ1nP,EAChC,CACF,IAAGo1B,QAAO,SAAUsyN,EAAQI,GAC1B,IAAI9nP,EAAKg+G,EAAQk7H,iBAAiB4O,GAElC,GAAKzqO,EAAKq7N,SAASgP,GAAnB,CAKA,IAAIC,EAAatqO,EAAK69N,cAAcwM,GAEhClQ,GAAa2U,EAAmBD,EAAUvE,GAC5CruM,EAAM0hC,OAAOh7E,IAIVA,EAGHk1O,EAAQ+D,YAAYj5O,EAAI,CACtB4zB,MAAO,CACL9J,OAAQ69N,EAAWM,OAEpBjW,EAAa0V,GANhB1nP,EAAK6nP,EAAgBF,EAAYD,GASnC2E,EAAarsP,EAAIqd,EAAMqqO,EAAQuE,GAC/B3yM,EAAM36C,IAAIqB,GACVqd,EAAKw7N,iBAAiB6O,EAAQ1nP,GArB9B,MAFEs5C,EAAM0hC,OAAOh7E,EAwBjB,IAAGg7E,QAAO,SAAU8sK,GAClB,IAAI9nP,EAAKg+G,EAAQk7H,iBAAiB4O,GAClC9nP,GAAMs5C,EAAM0hC,OAAOh7E,EACrB,IAAG26I,UACHv8I,KAAKqqK,MAAQprJ,CACf,EACAw5N,aAAc,SAAU7E,GACtB5zO,KAAK44O,SAELwC,EAAYxH,EAAa5zO,KAAKk7C,OAC9B,IAAImgM,EAAWzH,EAAY1wO,IAAI,QAAQ,GAAQq0O,EAAe3D,EAAYS,kBAAkB,EAAOT,GAAe,KAE9GyH,EACFr7O,KAAKk7C,MAAMogM,YAAYD,GAEvBr7O,KAAKk7C,MAAMm+L,gBAEf,EACAuU,yBAA0B,SAAUhsO,EAAQgyN,GAC1C,IAEIC,EAFA50N,EAAO20N,EAAY7oI,UACnB8iJ,EAAc5uO,EAAKk5N,UAAU,eAGjC,MAAsC,OAA9BtE,EAAYjyN,EAAOta,QAAiB,CAC1C,IAAI1F,EACA2nP,EAAatqO,EAAK69N,cAAcjJ,GACpCjyO,EAAK6nP,EAAgBF,EAAY1V,GACjCoa,EAAarsP,EAAIqd,EAAM40N,EAAWga,GAClCjsP,EAAGu8O,aAAc,EACjBn+O,KAAKk7C,MAAM36C,IAAIqB,EACjB,CACF,EACAk3O,wBAAyB,SAAUl3N,EAAQgyN,GACzCwH,EAAYxH,EAAa5zO,KAAKk7C,OAAO,EACvC,EACA0hC,OAAQ,SAAU81J,GAChB1yO,KAAK44O,QACP,EACAA,OAAQ,WACN54O,KAAKk7C,MAAMigM,YACXn7O,KAAKqqK,MAAQ,IACf,EACAmxE,QAASlJ,EAAOj1C,OAEd6wD,EAAgB/W,EAAKzzH,OAAO,CAC9Bl/G,KAAM,uBACNgxB,MAAO,CAAC,EACRuoN,UAAW,SAAU55O,EAAKqxB,GACxB,IAAIq0N,EAAOr0N,EAAM9J,OAEb1rB,KAAKmuP,aACPhqP,EAAI8hC,OAAO4jN,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC/B1lP,EAAI08B,OAAOgpN,EAAK,GAAG,GAAIA,EAAK,GAAG,MAE/B1lP,EAAI8hC,OAAO4jN,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC/B1lP,EAAI08B,OAAOgpN,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC/B1lP,EAAI08B,OAAOgpN,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC/B1lP,EAAI08B,OAAOgpN,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC/B1lP,EAAIs5B,YACJt5B,EAAI8hC,OAAO4jN,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC/B1lP,EAAI08B,OAAOgpN,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC/B1lP,EAAI8hC,OAAO4jN,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC/B1lP,EAAI08B,OAAOgpN,EAAK,GAAG,GAAIA,EAAK,GAAG,IAEnC,IAGF,SAASJ,EAAgBF,EAAY1V,EAAWniI,GAC9C,IAAIm4I,EAAON,EAAWM,KACtB,OAAO,IAAIqE,EAAc,CACvB14N,MAAO,CACL9J,OAAQgmF,EAASo4I,EAAUD,EAAMN,GAAcM,GAEjDvN,GAAI,KAER,CAEA,SAASyR,EAAmBD,EAAUvE,GAGpC,IAFA,IAAIvN,GAAU,EAELh4O,EAAI,EAAGA,EAAIulP,EAAWM,KAAK7nP,OAAQgC,IAE1C,GAAI8pP,EAASM,QAAQ7E,EAAWM,KAAK7lP,GAAG,GAAIulP,EAAWM,KAAK7lP,GAAG,IAAK,CAClEg4O,GAAU,EACV,KACF,CAGF,OAAOA,CACT,CAEA,SAASiS,EAAarsP,EAAIqd,EAAM40N,EAAWga,GACzC,IAAIzT,EAAYn7N,EAAKo7N,aAAaxG,GAC9BoW,EAAuB7P,EAAUZ,SAAS0P,GAC1Ct4N,EAAQ3R,EAAKo+N,cAAcxJ,EAAW,SACtChQ,EAAc5kN,EAAKo+N,cAAcxJ,EAAW,gBAAkBjjN,EAG9D2uN,EAAY0K,EAAqBzK,aAAakO,GAClD9rP,EAAGq4O,SAASsF,GACZ39O,EAAGgK,MAAM85O,eAAgB,EACzB9jP,EAAGgK,MAAMme,KAAO6G,EAChBhvB,EAAGgK,MAAMytB,OAASwqM,EAClBjiO,EAAGusP,YAAcN,EACjB,IAAIrQ,EAAapD,EAAUZ,SAAS2P,GAA0B3J,eAC9D1I,EAAQ8G,cAAch8O,EAAI47O,EAC5B,CAEA,SAASsM,EAAUp+N,EAAQ69N,GACzB,OAAOjX,EAAO5oN,IAAIgC,GAAQ,SAAU1b,GAGlC,OAFAA,EAAQA,EAAM7N,QACd6N,EAAM,GAAKu5O,EAAWW,aACfl6O,CACT,GACF,CAEA,IAAIq+O,EAAelX,EAAKzzH,OAAO,CAC7Bl/G,KAAM,sBACNgxB,MAAO,CAAC,EACRuoN,UAAW,SAAU55O,EAAKqxB,GAKxB,IAFA,IAAI9J,EAAS8J,EAAM9J,OAEV1nB,EAAI,EAAGA,EAAI0nB,EAAO1pB,QACzB,GAAIhC,KAAKsuP,SAAW5iO,EAAO1nB,KAAM,CAC/B,IAAI8b,EAAI4L,EAAO1nB,KACfG,EAAI8hC,OAAOnmB,EAAG4L,EAAO1nB,MACrBG,EAAI08B,OAAO/gB,EAAG4L,EAAO1nB,KACvB,MACEA,GAAK,CAGX,IAGF,SAASo3O,EAAYxH,EAAa14L,EAAOijM,GACvC,IAAIl/N,EAAO20N,EAAY7oI,UACnBwjJ,EAActvO,EAAKk5N,UAAU,eAC7BqW,EAAM,IAAIH,EAAa,CACzB74N,MAAO,CACL9J,OAAQ6iO,GAEVD,OAAQ,IAEVpzM,EAAM36C,IAAIiuP,GACV,IAAIC,EAAM,IAAIJ,EAAa,CACzB74N,MAAO,CACL9J,OAAQ6iO,GAEVD,QAAS,IAEXpzM,EAAM36C,IAAIkuP,GACVhQ,EAAc,EAAG+P,EAAK5a,EAAa30N,GACnCw/N,GAAe,EAAGgQ,EAAK7a,EAAa30N,GAEhCk/N,IACFqQ,EAAIrQ,aAAc,EAClBsQ,EAAItQ,aAAc,EAEtB,CAEA,SAASM,EAAc51C,EAAMjnM,EAAIgyO,EAAa30N,GAC5C,IAAIyvO,EAAS7lD,EAAO,EAAI,IAAM,IAC1Bg7B,EAAc5kN,EAAKq+N,UAAU,cAAgBoR,IAAWzvO,EAAKq+N,UAAU,QAAUoR,GAGjFnP,EAAY3L,EAAY4F,SAAS0P,GAAwB1J,aAAakO,GAC1E9rP,EAAGq4O,SAASsF,GACZ39O,EAAGgK,MAAMme,KAAO,KAChBnoB,EAAGgK,MAAMytB,OAASwqM,CAEpB,CAEA,IAAIp2M,EAAWkgO,EACfxsP,EAAOD,QAAUusB,C,2DCxSjB,IAAIkhO,EAAWnmO,EAAQ,OAEnBomO,EAAmBD,EAASC,iBAE5BC,EAAsBrmO,EAAQ,MAE9Bi5N,EAAUj5N,EAAQ,OAElBk5N,EAAeD,EAAQC,aAEvB9xN,EAAQpH,EAAQ,OAEhBsmO,EAAYl/N,EAAMk/N,UAsBlBC,EAAmC,qBAAjBn5O,aAA+BA,aAAe/O,MAChE4mB,EAAW,CACb2lN,WAAY,cACZ4b,KAAMH,IACNpoJ,MAAO,SAAUmtI,GACf,IAAIf,EAAWe,EAAYS,iBACvBp1N,EAAO20N,EAAY7oI,UACnBkkJ,EAAcC,EAAqBtb,EAAa30N,GAChDqsO,EAAU,EACVC,EAAU,EACVC,EAAY,CAAC,IAAK,KAClBC,EAAOxsO,EAAKysO,aAAaF,EAAUF,IACnCK,EAAQ1sO,EAAKysO,aAAaF,EAAUD,IAAU,GAC9C4D,EAAUxD,EAAM,GAChByD,EAAWzD,EAAM,GACjB0D,EAAY1D,EAAM,GAClB2D,EAAa3D,EAAM,GAOvB,GANA1sO,EAAKswO,UAAU,CACbN,YAAaA,EAEbpB,YAAaoB,GAAe,QAGlB,MAARxD,GAAgBE,EAAM3pP,OAAS,GAInC,MAAO,CACLw7I,SAAUo2F,EAAYoF,gBAAgBj9C,MAAQyzD,EAAgBC,GAGhE,SAASA,EAAe7tO,EAAQ3C,GAC9B,IAAI40N,EAEJ,MAAsC,OAA9BA,EAAYjyN,EAAOta,QAAiB,CAC1C,IAAIskP,EAAa3sO,EAAK/b,IAAIuoP,EAAM5X,GAC5B6b,EAAUzwO,EAAK/b,IAAIisP,EAAStb,GAC5B8b,EAAW1wO,EAAK/b,IAAIksP,EAAUvb,GAC9B+b,EAAY3wO,EAAK/b,IAAImsP,EAAWxb,GAChCgc,EAAa5wO,EAAK/b,IAAIosP,EAAYzb,GAClCic,EAAQ3pP,KAAKyI,IAAI8gP,EAASC,GAC1BI,EAAS5pP,KAAKwI,IAAI+gP,EAASC,GAC3BK,EAAap2F,EAASk2F,EAAOlE,GAC7BqE,EAAcr2F,EAASm2F,EAAQnE,GAC/BsE,EAAct2F,EAASg2F,EAAWhE,GAClCuE,EAAev2F,EAASi2F,EAAYjE,GACpC/B,EAAO,GACXoC,EAAWpC,EAAMoG,EAAa,GAC9BhE,EAAWpC,EAAMmG,EAAY,GAC7BnG,EAAK5lP,KAAKmsP,EAAsBD,GAAeC,EAAsBH,GAAcG,EAAsBF,GAAcE,EAAsBJ,IAC7I/wO,EAAKktO,cAActY,EAAW,CAC5BhrC,KAAMwnD,EAAQpxO,EAAM40N,EAAW6b,EAASC,EAAUP,GAClDlF,aAAcwF,EAAUC,EAAWM,EAAY1E,GAAWyE,EAAWzE,GAErE1B,KAAMA,EACN4D,UAAW6C,EAAcV,EAAWC,EAAYjE,IAEpD,CAEA,SAAShyF,EAAS5qJ,EAAK48O,GACrB,IAAI/tM,EAAI,GAGR,OAFAA,EAAEytM,GAAWM,EACb/tM,EAAE0tM,GAAWv8O,EACND,MAAM68O,IAAe78O,MAAMC,GAAO,CAACw8E,IAAKA,KAAOqnJ,EAASiC,YAAYj3L,EAC7E,CAEA,SAASouM,EAAWpC,EAAM75O,EAAO0uC,GAC/B,IAAIyF,EAASn0C,EAAM7N,QACfiiD,EAASp0C,EAAM7N,QACnBgiD,EAAOmnM,GAAWsD,EAAiBzqM,EAAOmnM,GAAW2D,EAAc,EAAG,GAAG,GACzE7qM,EAAOknM,GAAWsD,EAAiBxqM,EAAOknM,GAAW2D,EAAc,EAAG,GAAG,GACzEvwM,EAAQmrM,EAAK5lP,KAAKkgD,EAAQC,GAAUylM,EAAK5lP,KAAKmgD,EAAQD,EACxD,CAEA,SAASmsM,EAAcV,EAAWC,EAAYjE,GAC5C,IAAI2E,EAAO32F,EAASg2F,EAAWhE,GAC3B4E,EAAO52F,EAASi2F,EAAYjE,GAGhC,OAFA2E,EAAKjF,IAAY2D,EAAc,EAC/BuB,EAAKlF,IAAY2D,EAAc,EACxB,CACLnvO,EAAGywO,EAAK,GACR5xN,EAAG4xN,EAAK,GACR/nN,MAAO+iN,EAAU0D,EAAcuB,EAAK,GAAKD,EAAK,GAC9C9nN,OAAQ8iN,EAAUiF,EAAK,GAAKD,EAAK,GAAKtB,EAE1C,CAEA,SAASmB,EAAsBpgP,GAE7B,OADAA,EAAMs7O,GAAWsD,EAAiB5+O,EAAMs7O,GAAU,GAC3Ct7O,CACT,CACF,CAEA,SAASw/O,EAAc5tO,EAAQ3C,GAE7B,IAEIjP,EAGA6jO,EALAnoN,EAAS,IAAIqjO,EAAwB,EAAfntO,EAAO2G,OAC7B4E,EAAS,EAETsjO,EAAQ,GACRC,EAAS,GAGb,MAAsC,OAA9B7c,EAAYjyN,EAAOta,QAAiB,CAC1C,IAAIskP,EAAa3sO,EAAK/b,IAAIuoP,EAAM5X,GAC5B6b,EAAUzwO,EAAK/b,IAAIisP,EAAStb,GAC5B8b,EAAW1wO,EAAK/b,IAAIksP,EAAUvb,GAC9B+b,EAAY3wO,EAAK/b,IAAImsP,EAAWxb,GAChCgc,EAAa5wO,EAAK/b,IAAIosP,EAAYzb,GAElC9kO,MAAM68O,IAAe78O,MAAM6gP,IAAc7gP,MAAM8gP,IACjDnkO,EAAOyB,KAAYq+D,IACnBr+D,GAAU,IAIZzB,EAAOyB,KAAYkjO,EAAQpxO,EAAM40N,EAAW6b,EAASC,EAAUP,GAC/DqB,EAAMnF,GAAWM,EACjB6E,EAAMlF,GAAWqE,EACjB5/O,EAAQ6iO,EAASiC,YAAY2b,EAAO,KAAMC,GAC1ChlO,EAAOyB,KAAYnd,EAAQA,EAAM,GAAKw7E,IACtC9/D,EAAOyB,KAAYnd,EAAQA,EAAM,GAAKw7E,IACtCilK,EAAMlF,GAAWsE,EACjB7/O,EAAQ6iO,EAASiC,YAAY2b,EAAO,KAAMC,GAC1ChlO,EAAOyB,KAAYnd,EAAQA,EAAM,GAAKw7E,IACxC,CAEAvsE,EAAKswO,UAAU,cAAe7jO,EAChC,CACF,GAGF,SAAS2kO,EAAQpxO,EAAM40N,EAAW6b,EAASC,EAAUP,GACnD,IAAIvmD,EAYJ,OATEA,EADE6mD,EAAUC,GACJ,EACCD,EAAUC,EACZ,EAEA9b,EAAY,EACjB50N,EAAK/b,IAAIksP,EAAUvb,EAAY,IAAM8b,EAAW,GAAK,EACvD,EAGK9mD,CACT,CAEA,SAASqmD,EAAqBtb,EAAa30N,GACzC,IACIsuK,EADAwqD,EAAWnE,EAAYoE,cAEvB6S,EAA8B,aAAlB9S,EAASvzO,KAAsBuzO,EAASiT,gBAAkBz9D,EAASwqD,EAASmT,YAAa/kP,KAAK6iB,IAAIukK,EAAO,GAAKA,EAAO,IAAMtuK,EAAKsJ,SAC5I6kO,EAAc1L,EAAaoN,EAAUlb,EAAY1wO,IAAI,eAAgB2nP,GAAYA,GACjFwC,EAAc3L,EAAaoN,EAAUlb,EAAY1wO,IAAI,eAAgB,GAAI2nP,GACzEj8M,EAAWglM,EAAY1wO,IAAI,YAC/B,OAAmB,MAAZ0rC,EAAmB8yM,EAAa9yM,EAAUi8M,GAC/C1kP,KAAKwI,IAAIxI,KAAKyI,IAAIi8O,EAAY,EAAGuC,GAAcC,EACnD,CAEAlsP,EAAOD,QAAUusB,C,wBChMjB,IAAIohO,EAAsBrmO,EAAQ,MAoB9BmoO,EAA2B,CAAC,YAAa,eACzCC,EAA2B,CAAC,YAAa,gBACzCC,EAAqB,CAAC,YAAa,SACnCC,EAAqB,CAAC,YAAa,UACnCrjO,EAAW,CACb2lN,WAAY,cACZ4b,KAAMH,IAENkC,kBAAkB,EAClBtqJ,MAAO,SAAUmtI,EAAalB,GAC5B,IAAIzzN,EAAO20N,EAAY7oI,UASvB,GARA9rF,EAAK+2N,UAAU,CACb0W,aAAc,YACdsE,OAAQC,EAAS,EAAGrd,GACpBsd,OAAQD,GAAU,EAAGrd,GACrBud,aAAcC,EAAe,EAAGxd,GAChCyd,aAAcD,GAAgB,EAAGxd,MAG/BlB,EAAQia,iBAAiB/Y,GAA7B,CAIA,IAAI0d,EAAgB1d,EAAYoF,gBAAgBj9C,MAChD,OAAQu1D,GAAiB,CACvB9zG,SAAUA,EAJZ,CAOA,SAASA,EAAS57H,EAAQ3C,GACxB,IAAI40N,EAEJ,MAAsC,OAA9BA,EAAYjyN,EAAOta,QAAiB,CAC1C,IAAI8yO,EAAYn7N,EAAKo7N,aAAaxG,GAC9BhrC,EAAO5pL,EAAK69N,cAAcjJ,GAAWhrC,KACzC5pL,EAAK2tO,cAAc/Y,EAAW,CAC5BjjN,MAAOqgO,EAASpoD,EAAMuxC,GACtBvW,YAAautB,EAAevoD,EAAMuxC,IAEtC,CACF,CAEA,SAAS6W,EAASpoD,EAAM0oD,GACtB,OAAOA,EAAMruP,IAAI2lM,EAAO,EAAIgoD,EAAqBC,EACnD,CAEA,SAASM,EAAevoD,EAAM0oD,GAC5B,OAAOA,EAAMruP,IAAI2lM,EAAO,EAAI8nD,EAA2BC,EACzD,CACF,GAEFzvP,EAAOD,QAAUusB,C,wBCtEjB,IAAI6kN,EAAS9pN,EAAQ,OAoBrB,SAASiF,EAASsd,GACXA,GAAWunM,EAAOxrO,QAAQikC,EAAOiB,SAKtCsmM,EAAO56H,KAAK3sE,EAAOiB,QAAQ,SAAUS,GAC/B6lM,EAAOhxO,SAASmrC,IAAmC,MAApBA,EAAWjoC,OAC5CioC,EAAWjoC,KAAO,cAEtB,GACF,CAEArD,EAAOD,QAAUusB,C,wBCjCjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB8pN,GAFU7+L,EAAQojM,QAETruN,EAAQ,QAEjBgpO,EAAchpO,EAAQ,OAEtBq/N,EAAer/N,EAAQ,OAEvBs/N,EAAkBD,EAAaC,gBAE/BjI,EAAsBr3N,EAAQ,OAE9B+sN,EAAW/sN,EAAQ,OAEnBipO,EAAkBlc,EAASkc,gBAE3BC,EAAalpO,EAAQ,OAErBo3N,EAAcp3N,EAAQ,OAEtByuN,EAAQzuN,EAAQ,OAEhBygO,EAAYzgO,EAAQ,OAEpB8uN,EAA8B9uN,EAAQ,OAEtC+uN,EAAiBD,EAA4BC,eAE7Coa,EAAqBnpO,EAAQ,OAE7BopO,EAAappO,EAAQ,OAErBqpO,EAAoBrpO,EAAQ,OAE5BspO,EAAetpO,EAAQ,OAEvBupO,EAAkBvpO,EAAQ,OAoB1BwpO,EAAgCR,EAAYQ,8BAC5CC,EAAyB,CAAC,aAC1BC,EAA2B,CAAC,WAAY,aACxCC,EAAe,CAAC,SAChBC,EAAiB,CAAC,WAAY,SAG9BC,EAAoB,QAapBC,EAAiB,CACnB1W,YAAa+V,EACbvd,IAAKwd,EACLW,WAAYV,EACZ5V,MAAO6V,EACPU,SAAUT,GA4IZ,SAASU,EAASC,GAChB,IACI9wP,EADA+wP,EAAcD,EAASluP,KAI3B,GAAoB,SAAhBmuP,EAAwB,CAC1B,IAAIn9N,EAAQk9N,EAASl9N,MAEjBo9N,EAA0B,MAAfp9N,EAAMgT,OAAiC,MAAhBhT,EAAMiT,OAAiB,CAC3D3oB,EAAG0V,EAAM1V,GAAK,EACd6e,EAAGnJ,EAAMmJ,GAAK,EACd6J,MAAOhT,EAAMgT,MACbC,OAAQjT,EAAMiT,QACZ,KACAoqN,EAAWC,EAAYt9N,GAE3B5zB,EAAK4vP,EAAYuB,SAASF,EAAU,KAAMD,EAAUp9N,EAAM2yE,QAAU,UACpEvmG,EAAGoxP,iBAAmBH,CACxB,MAAO,GAAoB,UAAhBF,EACT/wP,EAAK,IAAI4vP,EAAY5jJ,MAAM,CAAC,GAC5BhsG,EAAGqxP,kBAAoBP,EAAS9mP,MAAM+tM,WACjC,GAAoB,SAAhBg5C,EACT/wP,EAAK,IAAI4vP,EAAY0B,KAAK,CAAC,GAC3BtxP,EAAGuxP,aAAeT,EAAS9mP,MAAM+wB,UAC5B,GAAoB,UAAhBg2N,EACT/wP,EAAK,IAAI4vP,EAAYpa,UAChB,IAAoB,iBAAhBub,EACT,MAAM,IAAIh3O,MAAM,wCAEhB,IAAIy3O,EAAM5B,EAAY6B,cAAcV,GACpC/wP,EAAK,IAAIwxP,CACX,CAIA,OAFAxxP,EAAG0xP,oBAAsBX,EACzB/wP,EAAG6C,KAAOiuP,EAASjuP,KACZ7C,CACT,CAEA,SAAS2xP,EAAS3xP,EAAIiyO,EAAW6e,EAAUc,EAAiBv0O,EAAMyyF,EAAQ+hJ,GACxE,IAAIC,EAAkB,CAAC,EACnBC,EAAgBjB,EAAS9mP,OAAS,CAAC,EAOvC,GANA8mP,EAASl9N,QAAUk+N,EAAgBl+N,MAAQ88M,EAAOh+M,MAAMo+N,EAASl9N,QACjEk9N,EAAS5gO,WAAa4hO,EAAgB5hO,SAAW4gO,EAAS5gO,SAAS3vB,SACnEuwP,EAASr8N,QAAUq9N,EAAgBr9N,MAAQq8N,EAASr8N,MAAMl0B,SAC1DuwP,EAAShqN,SAAWgrN,EAAgBhrN,OAASgqN,EAAShqN,OAAOvmC,SAC7DuwP,EAASz+F,WAAay/F,EAAgBz/F,SAAWy+F,EAASz+F,UAE1C,UAAZryJ,EAAG4C,MAAoBkuP,EAAS9mP,MAAO,CACzC,IAAIgoP,EAAcF,EAAgB9nP,MAAQ,CAAC,EAC3C0mO,EAAO56H,KAAK,CAAC,IAAK,IAAK,QAAS,WAAW,SAAUknC,GACnDi1G,EAAuBj1G,EAAMg1G,EAAaD,EAAe/xP,EAAGgK,MAAO8lG,EACrE,GACF,CAEA,GAAgB,SAAZ9vG,EAAG4C,MAAmBkuP,EAAS9mP,MAAO,CACpCgoP,EAAcF,EAAgB9nP,MAAQ,CAAC,EAC3C0mO,EAAO56H,KAAK,CAAC,IAAK,MAAM,SAAUknC,GAChCi1G,EAAuBj1G,EAAMg1G,EAAaD,EAAe/xP,EAAGgK,MAAO8lG,EACrE,KAGCiiJ,EAAcrtP,eAAe,aAAeqtP,EAAc5pO,OAAS4pO,EAAcnxB,SAAWmxB,EAAc5pO,OAC1G4pO,EAAcrtP,eAAe,eAAiBqtP,EAAct6N,SAAWs6N,EAAchxB,WAAagxB,EAAct6N,OACnH,CAEA,GAAgB,UAAZz3B,EAAG4C,OACL5C,EAAGq4O,SAAS0Z,GAERjiJ,GAAQ,CACV9vG,EAAGgK,MAAM0tB,QAAU,EACnB,IAAIw6N,EAAgBH,EAAcr6N,QACjB,MAAjBw6N,IAA0BA,EAAgB,GAC1CtC,EAAYxD,UAAUpsP,EAAI,CACxBgK,MAAO,CACL0tB,QAASw6N,IAEVN,EAAiB3f,EACtB,CAGEniI,EACF9vG,EAAGi1B,KAAK68N,GAERlC,EAAY3W,YAAYj5O,EAAI8xP,EAAiBF,EAAiB3f,GAKhE6e,EAASpsP,eAAe,OAAS1E,EAAGi1B,KAAK,KAAM67N,EAASpW,IAAM,GAC9DoW,EAASpsP,eAAe,WAAa1E,EAAGi1B,KAAK,SAAU67N,EAASvjG,QAChEujG,EAASpsP,eAAe,cAAgB1E,EAAGi1B,KAAK,YAAa67N,EAASqB,WACtErB,EAASpsP,eAAe,WAAa1E,EAAGi1B,KAAK,SAAU67N,EAASsB,QAIhEtB,EAASpsP,eAAe,SAAW1E,EAAGi1B,KAAK,OAAQ67N,EAASn4H,MAG5D,IAAI05H,EAAgBvB,EAASuB,cAG7BzC,EAAY0C,qBAAqBtyP,EAAIqyP,GAEjCR,GACFjC,EAAY2C,wBAAwBvyP,GAAsB,IAAlBqyP,EAE5C,CAEA,SAASJ,EAAuBj1G,EAAMg1G,EAAaD,EAAeS,EAAY1iJ,GACjD,MAAvBiiJ,EAAc/0G,IAAkBltC,IAClCkiJ,EAAYh1G,GAAQ+0G,EAAc/0G,GAClC+0G,EAAc/0G,GAAQw1G,EAAWx1G,GAErC,CAEA,SAASy1G,EAAeC,EAAcr1O,EAAMyzN,EAAS/nI,GACnD,IAAI4pJ,EAAaD,EAAapxP,IAAI,cAC9B2vO,EAAWyhB,EAAajgB,iBACxBmgB,EAAgB,CAAC,EAEjB3hB,IACF2hB,EAAgB3hB,EAASyf,eAAiBzf,EAASyf,iBAAmBA,EAAezf,EAASruO,MAAMquO,IAGtG,IA0BI4hB,EAEAC,EACAC,EACAC,EACAC,EA/BAC,EAAUxiB,EAAO94I,SAAS,CAC5B6oJ,SAAU13I,EAAI03I,SACdC,UAAW33I,EAAI23I,UACfyS,MAAOpqJ,EAAIoqJ,MACXC,oBAAqBrqJ,EAAIqqJ,oBACzBlzP,MAAOA,EACP8J,MAAOA,EACPqoP,cAAeA,EACfgB,OAAQA,EACRC,UAAWA,EACXC,qBAAsBA,EACtBr5N,KAAMA,GACL04N,EAAc7pJ,KAAO,CAAC,GACrByqJ,EAAa,CAIfr1P,QAAS,CAAC,EACVg0O,SAAUugB,EAAa9qP,GACvB6rP,WAAYf,EAAa7vP,KACzBi6O,YAAa4V,EAAa5V,YAC1B7L,SAAU2hB,EAAc3hB,SACxByiB,iBAAkBr2O,EAAKsJ,QACvBgtO,OAAQC,EAAclB,EAAavpJ,YAIjC0qJ,GAAY,EAKhB,OAAO,SAAUC,EAAiBliB,GAGhC,OAFAihB,EAAsBiB,EACtBD,GAAY,EACLlB,GAAcA,EAAWjiB,EAAO94I,SAAS,CAC9Ck8J,gBAAiBA,EACjB7hB,UAAW50N,EAAK02O,YAAYD,GAE5BE,WAAYpiB,EAAUA,EAAQhvO,KAAO,MACpC4wP,GAAaN,EAClB,EAEA,SAASe,EAAYH,GACA,MAAnBA,IAA4BA,EAAkBjB,GAE1CgB,IACFf,EAAgBz1O,EAAKo7N,aAAaqb,GAClCf,EAAuBD,EAAclb,SAAS2Y,GAC9CyC,EAAyBF,EAAclb,SAAS4Y,GAChDyC,EAAkB51O,EAAKo+N,cAAcqY,EAAiB,SACtDD,GAAY,EAEhB,CASA,SAAS3zP,EAAMmwI,EAAKyjH,GAElB,OADmB,MAAnBA,IAA4BA,EAAkBjB,GACvCx1O,EAAK/b,IAAI+b,EAAK62O,aAAa7jH,GAAO,GAAIyjH,EAC/C,CAYA,SAAS9pP,EAAMmqP,EAAOL,GACD,MAAnBA,IAA4BA,EAAkBjB,GAC9CoB,EAAYH,GACZ,IAAInW,EAAYmV,EAAclb,SAASyY,GAAwBzS,eAC5C,MAAnBqV,IAA4BtV,EAAUx1N,KAAO8qO,GAC7C,IAAIv7N,EAAUra,EAAKo+N,cAAcqY,EAAiB,WACvC,MAAXp8N,IAAoBimN,EAAUjmN,QAAUA,GACxC,IAAIyuN,EAAagO,EAAQC,EAAiBD,EAAOpB,GAAwBA,EAOzE,OANAnD,EAAYyE,aAAa1W,EAAWwI,EAAY,KAAM,CACpDO,UAAWuM,EACXxM,YAAY,IAEd9I,EAAU5iN,KAAOorN,EAAWrK,WAAW,QAAUpL,EAAOwc,UAAUwF,EAAa4B,kBAAkBR,EAAiB,UAAW5N,EAAgB7oO,EAAMy2O,IAAoB,KACvKK,GAASI,EAAgB5W,EAAWwW,GAC7BxW,CACT,CAQA,SAAS0U,EAAc8B,EAAOL,GACT,MAAnBA,IAA4BA,EAAkBjB,GAC9CoB,EAAYH,GACZ,IAAInW,EAAYmV,EAAclb,SAAS0Y,GAA0B1S,eAC7DuI,EAAagO,EAAQC,EAAiBD,EAAOnB,GAA0BA,EAM3E,OALApD,EAAYyE,aAAa1W,EAAWwI,EAAY,KAAM,CACpDM,YAAY,IACX,GACH9I,EAAU5iN,KAAOorN,EAAWrK,WAAW,QAAUpL,EAAO8jB,UAAU9B,EAAa4B,kBAAkBR,EAAiB,YAAapB,EAAa4B,kBAAkBR,EAAiB,UAAW5N,EAAgB7oO,EAAMy2O,IAAoB,KACpOK,GAASI,EAAgB5W,EAAWwW,GAC7BxW,CACT,CAQA,SAAS0V,EAAOoB,EAAYX,GAE1B,OADmB,MAAnBA,IAA4BA,EAAkBjB,GACvCx1O,EAAKo+N,cAAcqY,EAAiBW,EAC7C,CAaA,SAASnB,EAAUryJ,GACjB,GAAIgwI,EAASmF,YAAa,CACxB,IAAID,EAAWlF,EAASmF,cACxB,OAAOyZ,EAAgBnf,EAAO94I,SAAS,CACrCpuD,KAAM2sM,GACLl1I,GAAM8H,EACX,CACF,CAOA,SAASwqJ,IACP,OAAOziB,EAAQ4jB,yBACjB,CAYA,SAASx6N,EAAK+mE,GACZ,OAAO2uJ,EAAY+E,QAAQ1zJ,EAAK6vI,EAClC,CACF,CAEA,SAAS8iB,EAAcv2O,GACrB,IAAIu3O,EAAY,CAAC,EAUjB,OATAlkB,EAAO56H,KAAKz4F,EAAK27I,YAAY,SAAU67F,EAASC,GAC9C,IAAIC,EAAU13O,EAAK23O,iBAAiBH,GAEpC,IAAKE,EAAQE,aAAc,CACzB,IAAIC,EAAWH,EAAQG,SACnBC,EAAWP,EAAUM,GAAYN,EAAUM,IAAa,GAC5DC,EAASJ,EAAQK,eAAiBN,CACpC,CACF,IACOF,CACT,CAEA,SAASS,EAAer1P,EAAIiyO,EAAW6e,EAAUc,EAAiBt4M,EAAOj8B,GAGvE,OAFArd,EAAKs1P,EAAiBt1P,EAAIiyO,EAAW6e,EAAUc,EAAiBt4M,EAAOj8B,GAAM,GAC7Erd,GAAMqd,EAAKw7N,iBAAiB5G,EAAWjyO,GAChCA,CACT,CAEA,SAASs1P,EAAiBt1P,EAAIiyO,EAAW6e,EAAUc,EAAiBt4M,EAAOj8B,EAAMw0O,GAU/E,IAAI0D,GAAgBzE,EAEpBA,EAAWA,GAAY,CAAC,EACxB,IAAI0E,EAAe1E,EAASluP,KACxB6yP,EAAgB3E,EAASl9N,MACzBm+N,EAAgBjB,EAAS9mP,MAW7B,GATIhK,IAAOu1P,GAEQ,MAAhBC,GAAwBA,IAAiBx1P,EAAG0xP,qBAAwC,SAAjB8D,GAA2BE,EAAeD,IAAkBvE,EAAYuE,KAAmBz1P,EAAGoxP,kBAAqC,UAAjBoE,GAA4BrjP,EAAO4/O,EAAe,UAAYA,EAAch6C,QAAU/3M,EAAGqxP,mBAC7P,SAAjBmE,GAA2BrjP,EAAOsjP,EAAe,SAAW1D,EAAch3N,OAAS/6B,EAAGuxP,gBACvFj4M,EAAM0hC,OAAOh7E,GACbA,EAAK,OAIHu1P,EAAJ,CAIA,IAAIzlJ,GAAU9vG,EAUd,OATCA,IAAOA,EAAK6wP,EAASC,IACtBa,EAAS3xP,EAAIiyO,EAAW6e,EAAUc,EAAiBv0O,EAAMyyF,EAAQ+hJ,GAE5C,UAAjB2D,GACFG,EAAc31P,EAAIiyO,EAAW6e,EAAUc,EAAiBv0O,GAI1Di8B,EAAM36C,IAAIqB,GACHA,CAZP,CAaF,CAkBA,SAAS21P,EAAc31P,EAAIiyO,EAAW6e,EAAUc,EAAiBv0O,GAC/D,IAAIu4O,EAAc9E,EAAS3zK,SACvB04K,EAASD,EAAcA,EAAYx1P,OAAS,EAC5Cu1P,EAAgB7E,EAASgF,eAEzBC,EAA2B,WAAlBJ,GAA8B7E,EAASkF,mBAChDC,GAA6B,IAAlBN,EAEf,GAAKE,GAAWE,GAAWE,EAI3B,GAAIF,EACFG,EAAkB,CAChBC,YAAan2P,EAAGm9E,YAAc,GAC9By4K,YAAaA,GAAe,GAC5B3jB,UAAWA,EACX2f,gBAAiBA,EACjBt4M,MAAOt5C,EACPqd,KAAMA,QAPV,CAYA44O,GAAYj2P,EAAGu5O,YAKf,IAFA,IAAIl5O,EAAQ,EAELA,EAAQw1P,EAAQx1P,IACrBu1P,EAAYv1P,IAAUi1P,EAAiBt1P,EAAGo2P,QAAQ/1P,GAAQ4xO,EAAW2jB,EAAYv1P,GAAQuxP,EAAiB5xP,EAAIqd,EARhH,CAUF,CAEA,SAAS64O,EAAkB/3P,GACzB,IAAI2xP,EAAW3xP,EAAQg4P,YAAah4P,EAAQy3P,YAAangG,EAAQA,EAAQt3J,GAASQ,IAAI03P,GAAkBjhO,OAAOihO,GAAkBr7K,OAAOs7K,GAAe37G,SACzJ,CAEA,SAAS8a,EAAO7xI,EAAM2hF,GACpB,IAAI1iG,EAAO+gB,GAAQA,EAAK/gB,KACxB,OAAe,MAARA,EAAeA,EAAO4tP,EAAoBlrJ,CACnD,CAEA,SAAS8wJ,EAAiBvd,EAAUC,GAClC,IAAI56O,EAAUC,KAAKD,QACfo4P,EAA0B,MAAZzd,EAAmB36O,EAAQy3P,YAAY9c,GAAY,KACjE3zI,EAAoB,MAAZ4zI,EAAmB56O,EAAQg4P,YAAYpd,GAAY,KAC/Duc,EAAiBnwJ,EAAOhnG,EAAQ8zO,UAAWskB,EAAap4P,EAAQyzP,gBAAiBzzP,EAAQm7C,MAAOn7C,EAAQkf,KAC1G,CAKA,SAAS+2O,EAAiBD,EAAOxE,GAC/B,IAAI6G,EAAa,IAAInhB,EAAM,CAAC,EAAGsa,GAM/B,OALAjf,EAAO56H,KAAKs6I,GAA+B,SAAUqG,EAAeC,GAC9DvC,EAAMzvP,eAAe+xP,KACvBD,EAAWrtN,OAAOutN,GAAiBvC,EAAMsC,GAE7C,IACOD,CACT,CAEA,SAASjC,EAAgB5W,EAAWwW,GAClC,IAAK,IAAIlyP,KAAOkyP,GACVA,EAAMzvP,eAAezC,IAASmuP,EAA8B1rP,eAAezC,KAC7E07O,EAAU17O,GAAOkyP,EAAMlyP,GAG7B,CAEA,SAASq0P,EAAcvd,GACrB,IAAI56O,EAAUC,KAAKD,QACfgnG,EAAQhnG,EAAQg4P,YAAYpd,GAChC5zI,GAAShnG,EAAQm7C,MAAM0hC,OAAOmqB,EAChC,CAEA,SAAS+rJ,EAAYt9N,GAEnB,OAAOA,IAAUA,EAAMq9N,UAAYr9N,EAAMtI,EAC3C,CAEA,SAASoqO,EAAe9hO,GACtB,OAAOA,IAAUA,EAAMlvB,eAAe,aAAekvB,EAAMlvB,eAAe,KAC5E,CAEA,SAASyN,EAAO0P,EAAMm7H,GACpB,OAAOn7H,GAAQA,EAAKnd,eAAes4I,EACrC,CAllBAghG,EAAYl8H,OAAO,CACjBl/G,KAAM,gBACN0xO,aAAc,CAAC,OAAQ,QAAS,MAAO,aAAc,YACrDM,cAAe,CACbnC,iBAAkB,cAElB+L,OAAQ,EACRroK,EAAG,EACHsoK,iBAAiB,EACjBkY,cAAc,EAKdn5B,MAAM,GAeR0gB,eAAgB,SAAU/0M,EAAQ2nM,GAChC,OAAOmN,EAAoB7/O,KAAK+/O,YAAa//O,KAC/C,EAKAw4P,cAAe,SAAU3kB,EAAW4kB,EAAU72P,GAC5C,IAAIggB,EAASg+N,EAAYr4O,UAAUixP,cAAc11P,MAAM9C,KAAM+C,WAE7D,OADAnB,IAAOggB,EAAO24G,KAAO34H,EAAG24H,MACjB34G,CACT,IAKFqnO,EAAUvlI,OAAO,CACfl/G,KAAM,SAMN6lK,MAAO,KAKPlrK,OAAQ,SAAUm1P,EAAc5hB,EAAS/nI,EAAK6oI,GAC5C,IAAI5zH,EAAU5/G,KAAKqqK,MACfprJ,EAAOq1O,EAAavpJ,UACpB7vD,EAAQl7C,KAAKk7C,MACbq5M,EAAaF,EAAeC,EAAcr1O,EAAMyzN,EAAS/nI,GAM7D1rF,EAAK2tF,KAAKgT,GAASr/G,KAAI,SAAU+oP,GAC/B2N,EAAe,KAAM3N,EAAQiL,EAAWjL,EAAQ9V,GAAU8gB,EAAcp5M,EAAOj8B,EACjF,IAAG+X,QAAO,SAAUsyN,EAAQI,GAC1B,IAAI9nP,EAAKg+G,EAAQk7H,iBAAiB4O,GAClCuN,EAAer1P,EAAI0nP,EAAQiL,EAAWjL,EAAQ9V,GAAU8gB,EAAcp5M,EAAOj8B,EAC/E,IAAG29D,QAAO,SAAU8sK,GAClB,IAAI9nP,EAAKg+G,EAAQk7H,iBAAiB4O,GAClC9nP,GAAMs5C,EAAM0hC,OAAOh7E,EACrB,IAAG26I,UAEH,IAAI8+F,EAAWiZ,EAAapxP,IAAI,QAAQ,GAAQq0O,EAAe+c,EAAajgB,kBAAkB,EAAOigB,GAAgB,KAEjHjZ,EACFngM,EAAMogM,YAAYD,GAElBngM,EAAMm+L,iBAGRr5O,KAAKqqK,MAAQprJ,CACf,EACA05N,yBAA0B,SAAU2b,EAAc5hB,EAAS/nI,GACzD3qG,KAAKk7C,MAAMigM,YACXn7O,KAAKqqK,MAAQ,IACf,EACAwuE,kBAAmB,SAAUj3N,EAAQ0yO,EAAc5hB,EAAS/nI,EAAK6oI,GAC/D,IAAIv0N,EAAOq1O,EAAavpJ,UACpBwpJ,EAAaF,EAAeC,EAAcr1O,EAAMyzN,EAAS/nI,GAE7D,SAAS+tJ,EAA4B92P,GAC9BA,EAAG+2P,UACN/2P,EAAGu8O,aAAc,EACjBv8O,EAAGg3P,eAAgB,EAEvB,CAEA,IAAK,IAAIzxJ,EAAMvlF,EAAO88B,MAAOyoD,EAAMvlF,EAAO+8B,IAAKwoD,IAAO,CACpD,IAAIvlG,EAAKq1P,EAAe,KAAM9vJ,EAAKotJ,EAAWptJ,EAAKqsI,GAAU8gB,EAAct0P,KAAKk7C,MAAOj8B,GACvFrd,EAAGi3P,SAASH,EACd,CACF,EAKAld,QAASlJ,EAAOj1C,KAKhBy7D,sBAAuB,SAAUC,EAAWl4J,EAAOm4J,EAAUC,GAC3D,IAAIC,EAAcr4J,EAAMgZ,QAExB,GAAmB,MAAfq/I,GAAuBF,EAASv0P,OAASy0P,EAC3C,OAAO,EAKT,OAAQF,EAAWA,EAAS74P,SAAW64P,IAAah5P,KAAKk7C,MACvD,GAAI89M,EAASv0P,OAASy0P,EACpB,OAAO,EAIX,OAAO,CACT,G,uBC5NF,IAAI/lB,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAER,IAAI2wO,EAAe3wO,EAAQ,OAEvB4wO,EAAe5wO,EAAQ,OAoB3B2qN,EAAQ4C,eAAeojB,EAAa,gBAAiB,WACrDhmB,EAAQsC,eAAe2jB,EAAa,iB,wBC7BpC,IAAIvZ,EAAsBr3N,EAAQ,OAE9Bo3N,EAAcp3N,EAAQ,OAoBtBiF,EAAWmyN,EAAYl8H,OAAO,CAChCl/G,KAAM,uBACN0xO,aAAc,CAAC,OAAQ,SACvB4J,eAAgB,SAAU/0M,EAAQ2nM,GAChC,OAAOmN,EAAoB7/O,KAAK+/O,YAAa//O,KAAM,CACjDggP,oBAAoB,GAExB,EACA7J,cAAe,QACfK,cAAe,CACbnC,iBAAkB,cAClB+L,OAAQ,EACRroK,EAAG,EACHsoK,iBAAiB,EACjBgZ,WAAY,SACZ7Y,YAAa,EAEb8Y,aAAc,SAEdC,aAAc,CACZC,OAAQ,EAERnjO,MAAO,IAEPojO,UAAW,QAUb7Y,WAAY,MAYhBz/O,EAAOD,QAAUusB,C,wBCpEjB,IAAI0lN,EAAU3qN,EAAQ,OAElBkxO,EAAalxO,EAAQ,OAErBmxO,EAAenxO,EAAQ,OAEvBwiH,EAASxiH,EAAQ,OAEjBoxO,EAAepxO,EAAQ,OAoBvBiF,EAAW0lN,EAAQkF,gBAAgB,CACrC7zO,KAAM,gBACNkzD,KAAM,WACJ13D,KAAK65P,YAAc,IAAIH,EAAWC,EACpC,EACAx6P,OAAQ,SAAUy0O,EAAalB,EAAS/nI,GACtC,IAAI1rF,EAAO20N,EAAY7oI,UACnB+uJ,EAAmB95P,KAAK65P,YAC5BC,EAAiBC,WAAW96O,GAC5Bjf,KAAKk7C,MAAM36C,IAAIu5P,EAAiB5+M,MAClC,EACAo6L,gBAAiB,SAAU1B,EAAalB,EAAS/nI,GAC/C,IAAI1rF,EAAO20N,EAAY7oI,UACvB/qG,KAAKk7C,MAAMyoH,QACX,IAAI5qF,EAAM6gL,IAAenzJ,MAAMmtI,GAE3B76J,EAAIykE,UACNzkE,EAAIykE,SAAS,CACX9+F,MAAO,EACPC,IAAK1/B,EAAKsJ,SACTtJ,GAGLjf,KAAK65P,YAAYG,aAAa/6O,EAChC,EACAg7O,sBAAuB,SAAUrmB,GAC/B,IAAIf,EAAWe,EAAYS,iBAEvBxB,GAAYA,EAASqnB,mBACvBl6P,KAAKk7C,MAAMmsB,UAAY2jE,EAAO12G,MAAMu+M,EAASqnB,oBAC7Cl6P,KAAKk7C,MAAMi/M,qBAEf,EACAv9K,OAAQ,SAAU81J,EAAS/nI,GACzB3qG,KAAK65P,aAAe75P,KAAK65P,YAAYj9K,OAAO+tB,EAC9C,EACA6wI,QAAS,WAAa,IAGxBr6O,EAAOD,QAAUusB,C,wBCnEjB,IAAI0lN,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAER,IAAI4xO,EAAY5xO,EAAQ,OAEpB6xO,EAAe7xO,EAAQ,OAEvB8xO,EAAa9xO,EAAQ,OAoBzB2qN,EAAQ4C,eAAeqkB,EAAU,WACjCjnB,EAAQsC,eAAe4kB,GACvBlnB,EAAQonB,kBAAkBD,EAAW,U,iCChCrC,IAAInnB,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBgyO,EAAmBhyO,EAAQ,OAE3BiyO,EAASjyO,EAAQ,OAEjBkyO,EAAkBD,EAAOC,gBAEzBC,EAAgBnyO,EAAQ,MAExBoyO,EAA+BD,EAAcC,6BAE7CC,EAAuBryO,EAAQ,OAoB/BsyO,EAAe3nB,EAAQ4nB,kBAAkB,CAC3Cv2P,KAAM,gBACNkzD,KAAM,SAAU3sB,GACd+vN,EAAavZ,WAAWvhP,KAAM,OAAQ+C,WAGtC/C,KAAKg7P,qBAAuB,IAAIH,EAAqBvoB,EAAOv1N,KAAK/c,KAAK+qG,QAAS/qG,MAAOsyO,EAAOv1N,KAAK/c,KAAKi7P,WAAYj7P,OAEnHA,KAAKk7P,kBAAkBnwN,EACzB,EACA+0M,eAAgB,SAAU/0M,EAAQ2nM,GAChC,OAAO8nB,EAAiBx6P,KAAM,CAC5Bm7P,gBAAiB,CAAC,SAClBC,gBAAiB9oB,EAAOuD,MAAM+kB,EAA8B56P,OAEhE,EACAk7P,kBAAmB,SAAUnwN,GAE3B2vN,EAAgB3vN,EAAQ,YAAa,CAAC,SACtC,IAAIswN,EAAqBtwN,EAAOklB,UAC5BqrM,EAAuBvwN,EAAO21M,SAASzwL,UAE3CorM,EAAmB3tN,KAAO2tN,EAAmB3tN,MAAQ3C,EAAOmE,MAAMxB,KAClE4tN,EAAqB5tN,KAAO4tN,EAAqB5tN,MAAQ3C,EAAO21M,SAASxxM,MAAMxB,IACjF,EAEA8qN,cAAe,SAAU3kB,GACvB,IAAI50N,EAAOjf,KAAK+qG,UACZnpF,EAASk5O,EAAaS,UAAUv7P,KAAM,gBAAiB6zO,GACvD2O,EAAWvjO,EAAKysO,aAAa,SAC7BngO,EAAMtM,EAAKu8O,OAAOhZ,GAItB,OAFA5gO,EAAO+6B,QAAWpxB,IAAYtM,EAAK/b,IAAIs/O,EAAU3O,GAAatoN,EAAM,KAAKwqB,QAAQ,GAAzD,EACxBn0B,EAAO65O,MAAMx3P,KAAK,WACX2d,CACT,EACA40N,cAAe,CACb4J,OAAQ,EAERroK,EAAG,EAEHsoK,iBAAiB,EACjBhwM,KAAM,GACNE,IAAK,GACLD,MAAO,GACPE,OAAQ,GAMRmwL,QAAS,KACT+6B,QAAS,OACT71O,KAAM,aAEN+rB,OAAQ,WACR+G,IAAK,EACLgjN,YAAa,SACbzsN,MAAO,CACLxB,MAAM,EACN5b,SAAU,SAGZm+B,UAAW,CACTviB,MAAM,EACN1rC,OAAQ,GACRswC,UAAW,CAET9J,MAAO,EACPhkC,KAAM,UAGV+6O,UAAW,CAET1b,YAAa,OACbh8J,YAAa,GAEf64K,SAAU,CACRxxM,MAAO,CACLxB,MAAM,OAKVjgB,EAAWqtO,EACf35P,EAAOD,QAAUusB,C,wBCvHjB,IAAIqpN,EAAUtuN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBygO,EAAYzgO,EAAQ,OA0BxB,SAASozO,EAAY38O,EAAMkoF,GACzB2vI,EAAQM,MAAM/2O,KAAKL,MACnB,IAAI6mC,EAAU,IAAIiwM,EAAQ+kB,QACtB5rM,EAAY,IAAI6mL,EAAQglB,SACxBn/N,EAAO,IAAIm6M,EAAQoc,KACvBlzP,KAAKO,IAAIsmC,GACT7mC,KAAKO,IAAI0vD,GACTjwD,KAAKO,IAAIo8B,GAET38B,KAAK+7P,iBAAmB,SAAUC,EAAWC,GAC3B,aAAZA,GACFhsM,EAAU+jM,OAAS/jM,EAAUisM,YAC7Bv/N,EAAKq3N,OAASr3N,EAAKu/N,cAEnBjsM,EAAU+jM,OAAS/jM,EAAUksM,aAC7Bx/N,EAAKq3N,OAASr3N,EAAKw/N,aAEvB,EAEAn8P,KAAK+5P,WAAW96O,EAAMkoF,GAAK,EAC7B,CAEA,IAAIi1J,EAAmBR,EAAYr0P,UAC/B80P,EAAoB,CAAC,YAAa,WAEtCD,EAAiBrC,WAAa,SAAU96O,EAAMkoF,EAAKm1J,GACjD,IAAIz1N,EAAU7mC,KAAKg4P,QAAQ,GACvBpkB,EAAc30N,EAAK8qO,UACnB3P,EAAYn7N,EAAKo7N,aAAalzI,GAC9BgB,EAASlpF,EAAK69N,cAAc31I,GAC5B7tE,EAAUra,EAAKo7N,aAAalzI,GAAKjkG,IAAIm5P,GACzC/iO,EAAqB,MAAXA,EAAkB,EAAIA,EAEhCuN,EAAQozM,SAAS,CAAC,GAEdqiB,GACFz1N,EAAQszM,SAAS,CACfzuN,OAAQy8E,EAAOz8E,SAEjBmb,EAAQglJ,SAAS,CACfvyJ,QAAS,IAEXw9M,EAAQkX,UAAUnnN,EAAS,CACzBj7B,MAAO,CACL0tB,QAASA,IAEVs6M,EAAazsI,IAEhB2vI,EAAQ+D,YAAYh0M,EAAS,CAC3Bj7B,MAAO,CACL0tB,QAASA,GAEX9D,MAAO,CACL9J,OAAQy8E,EAAOz8E,SAEhBkoN,EAAazsI,GAIlB,IAAIo2I,EAAiBnD,EAAUZ,SAAS,aACpC+iB,EAAct9O,EAAKo+N,cAAcl2I,EAAK,SAC1CtgE,EAAQglJ,SAASymD,EAAO94I,SAAS,CAC/BhgE,SAAU,QACVzP,KAAMwyO,GACLhf,EAAeiC,aAAa,CAAC,cAChC34M,EAAQ22M,WAAaD,EAAe/D,SAAS,YAAYgG,eAEzDx/O,KAAKw8P,aAAav9O,EAAMkoF,GAExB2vI,EAAQ8G,cAAc59O,KACxB,EAEAo8P,EAAiBI,aAAe,SAAUv9O,EAAMkoF,GAC9C,IAAIl3C,EAAYjwD,KAAKg4P,QAAQ,GACzB9lM,EAAYlyD,KAAKg4P,QAAQ,GACzBpkB,EAAc30N,EAAK8qO,UACnB3P,EAAYn7N,EAAKo7N,aAAalzI,GAC9BgB,EAASlpF,EAAK69N,cAAc31I,GAC5Bs1J,EAAct0J,EAAOj5D,MACrBqtN,EAAct9O,EAAKo+N,cAAcl2I,EAAK,SAC1C2vI,EAAQ+D,YAAY5qL,EAAW,CAC7Bz6B,MAAO,CACL9J,OAAQ+wO,EAAYC,YAAcD,EAAYC,aAE/C9oB,EAAazsI,GAChB2vI,EAAQ+D,YAAY3oL,EAAW,CAC7BtmD,MAAO,CACLkU,EAAG28O,EAAY38O,EACf6e,EAAG89N,EAAY99N,IAEhBi1M,EAAazsI,GAChBj1C,EAAUr7B,KAAK,CACbo9H,SAAUwoG,EAAYxoG,SACtBvrH,OAAQ,CAAC+zN,EAAY38O,EAAG28O,EAAY99N,GACpC29M,GAAI,KAEN,IAAIyL,EAAa3N,EAAUZ,SAAS,SAChCmjB,EAAkBviB,EAAUZ,SAAS,kBACrCojB,EAAiBxiB,EAAUZ,SAAS,aACpCqjB,EAAsBziB,EAAUZ,SAAS,sBACzC+iB,EAAct9O,EAAKo+N,cAAcl2I,EAAK,SAC1C2vI,EAAQmR,cAAc/1L,EAAUtmD,MAAOsmD,EAAUsrL,WAAa,CAAC,EAAGuK,EAAY4U,EAAiB,CAC7FzU,aAAcjpO,EAAK8qO,UACnB5B,eAAgBhhJ,EAChBihJ,YAAanpO,EAAK60N,QAAQ3sI,GAC1BmhJ,UAAWiU,EACXO,iBAAkBL,EAAY5kJ,QAC7B,CACDx9E,UAAWoiO,EAAYpiO,UACvB0iO,kBAAmBN,EAAYO,gBAEjC9qM,EAAU8hM,OAAS9hM,EAAUiqM,cAAgBpU,EAAW7kP,IAAI,QAC5DgvD,EAAUgqM,aAAeS,EAAgBz5P,IAAI,QAC7C+sD,EAAU+jM,OAAS/jM,EAAUksM,cAAgBS,EAAe15P,IAAI,QAChE+sD,EAAUisM,aAAeW,EAAoB35P,IAAI,QAEjD+sD,EAAU47H,SAAS,CACjBxyJ,OAAQkjO,IAEVtsM,EAAU47H,SAAS+wE,EAAepjB,SAAS,aAAajgM,gBACxD0W,EAAUutL,WAAaqf,EAAoBrjB,SAAS,aAAajgM,cACnE,EAEA+4L,EAAO2qB,SAASrB,EAAa9kB,EAAQM,OACrC,IAAI8lB,EAAajU,EAAUvlI,OAAO,CAChCl/G,KAAM,SACNrF,OAAQ,SAAUy0O,EAAalB,EAAS/nI,GACtC,IAAI1rF,EAAO20N,EAAY7oI,UACnB6U,EAAU5/G,KAAKqqK,MACfnvH,EAAQl7C,KAAKk7C,MACjBj8B,EAAK2tF,KAAKgT,GAASr/G,KAAI,SAAU4mG,GAC/B,IAAIg2J,EAAc,IAAIvB,EAAY38O,EAAMkoF,GACxCloF,EAAKw7N,iBAAiBtzI,EAAKg2J,GAC3BjiN,EAAM36C,IAAI48P,EACZ,IAAGnmO,QAAO,SAAUsyN,EAAQI,GAC1B,IAAI0T,EAAWx9I,EAAQk7H,iBAAiB4O,GACxC0T,EAASrD,WAAW96O,EAAMqqO,GAC1BpuM,EAAM36C,IAAI68P,GACVn+O,EAAKw7N,iBAAiB6O,EAAQ8T,EAChC,IAAGxgL,QAAO,SAAUuqB,GAClB,IAAIi2J,EAAWx9I,EAAQk7H,iBAAiB3zI,GACxCjsD,EAAM0hC,OAAOwgL,EACf,IAAG7gH,UACHv8I,KAAKqqK,MAAQprJ,CACf,EACA29D,OAAQ,WACN58E,KAAKk7C,MAAMigM,YACXn7O,KAAKqqK,MAAQ,IACf,EACAmxE,QAAS,WAAa,IAEpB/tN,EAAWyvO,EACf/7P,EAAOD,QAAUusB,C,wBCtLjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB2/E,GAFU10D,EAAQojM,QAETruN,EAAQ,OAEjBi5N,EAAUj5N,EAAQ,OAElBk5N,EAAeD,EAAQC,aACvB2b,EAAY5b,EAAQ4b,UAoBxB,SAASC,EAAY1pB,EAAajpI,GAChC,OAAOxC,EAAOo1J,cAAc3pB,EAAY4pB,qBAAsB,CAC5Dh1N,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,aAEhB,CAEA,SAASmb,EAAiBx+O,EAAM4G,GAQ9B,IAPA,IAAI28N,EAAWvjO,EAAKysO,aAAa,SAC7BgS,EAAWz+O,EAAK0+O,SAASnb,GAAU,SAAUxzO,GAC/C,OAAOA,CACT,IACIgoI,EAAU,GACV4mH,EAAuB,cAAT/3O,EAET7hB,EAAI,EAAGwT,EAAMyH,EAAKsJ,QAASvkB,EAAIwT,EAAKxT,IAC3CgzI,EAAQhzI,GAAKA,EAYf,MARoB,oBAAT6hB,EACTmxH,EAAQnxH,KAAKA,GACK,SAATA,GACTmxH,EAAQnxH,MAAK,SAAUljB,EAAGC,GACxB,OAAOg7P,EAAcF,EAAS/6P,GAAK+6P,EAAS96P,GAAK86P,EAAS96P,GAAK86P,EAAS/6P,EAC1E,IAGKq0I,CACT,CAEA,SAASylH,EAAYx9O,GACnBA,EAAKy4F,MAAK,SAAUvQ,GAClB,IAQI9sE,EACAs4K,EACA/zI,EACA89L,EAXAtiB,EAAYn7N,EAAKo7N,aAAalzI,GAC9B4gJ,EAAa3N,EAAUZ,SAAS,SAChCh3L,EAAgBulM,EAAW7kP,IAAI,YAC/B0uC,EAASwoM,EAAUl3O,IAAI,UACvB05P,EAAiBxiB,EAAUZ,SAAS,aACpCrxI,EAASlpF,EAAK69N,cAAc31I,GAC5Bz7E,EAASy8E,EAAOz8E,OAChBmyO,EAAkC,UAAlBr7M,GAA+C,WAAlBA,GAAgD,WAAlBA,GAAgD,eAAlBA,GAAoD,gBAAlBA,EAM/I,GAAIq7M,EACoB,eAAlBr7M,GACFmwJ,GAASjnL,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EAAI,EAC5CkzC,GAASlzC,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACxC2O,EAAY,QACe,gBAAlBmoB,GACTmwJ,GAASjnL,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EAAI,EAC5CkzC,GAASlzC,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACxC2O,EAAY,UAEZs4K,GAASjnL,EAAO,GAAG,GAAKA,EAAO,GAAG,GAAKA,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACtEkzC,GAASlzC,EAAO,GAAG,GAAKA,EAAO,GAAG,GAAKA,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACtE2O,EAAY,UAGdqiO,EAAa,CAAC,CAAC/pD,EAAO/zI,GAAQ,CAAC+zI,EAAO/zI,QACjC,CACL,IAAI90B,EACAC,EACAE,EACAC,EACA4zN,EAAelB,EAAe15P,IAAI,UAEhB,SAAlBs/C,GAEF1Y,GAAMpe,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACrCqe,GAAMre,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACrCue,EAAKH,EAAKg0N,EACVnrD,EAAQ1oK,EAAK,EACb5P,EAAY,SACe,UAAlBmoB,GAET1Y,GAAMpe,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACrCqe,GAAMre,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACrCue,EAAKH,EAAKg0N,EACVnrD,EAAQ1oK,EAAK,EACb5P,EAAY,QACe,QAAlBmoB,GAET1Y,GAAMpe,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACrCqe,GAAMre,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACrCwe,EAAKH,EAAK+zN,EACVl/L,EAAQ10B,EAAK,EACb7P,EAAY,UACe,WAAlBmoB,GAET1Y,GAAMpe,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACrCqe,GAAMre,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACrCwe,EAAKH,EAAK+zN,EACVl/L,EAAQ10B,EAAK,EACb7P,EAAY,UACe,aAAlBmoB,GAET1Y,EAAgB,eAAX8H,EAA0BlmB,EAAO,GAAG,GAAKA,EAAO,GAAG,GACxDqe,EAAgB,eAAX6H,EAA0BlmB,EAAO,GAAG,GAAKA,EAAO,GAAG,GAEzC,eAAXkmB,GACF1H,EAAKH,EAAK+zN,EACVl/L,EAAQ10B,EAAK,EACb7P,EAAY,WAEZ4P,EAAKH,EAAKg0N,EACVnrD,EAAQ1oK,EAAK,EACb5P,EAAY,QAEa,gBAAlBmoB,GAET1Y,EAAKpe,EAAO,GAAG,GACfqe,EAAKre,EAAO,GAAG,GAEA,eAAXkmB,GACF1H,EAAKH,EAAK+zN,EACVl/L,EAAQ10B,EAAK,EACb7P,EAAY,WAEZ4P,EAAKH,EAAKg0N,EACVnrD,EAAQ1oK,EAAK,EACb5P,EAAY,WAEa,YAAlBmoB,GAET1Y,EAAKpe,EAAO,GAAG,GACfqe,EAAgB,eAAX6H,EAA0BlmB,EAAO,GAAG,GAAKA,EAAO,GAAG,GAEzC,eAAXkmB,GACF1H,EAAKH,EAAK+zN,EACVl/L,EAAQ10B,EAAK,EACb7P,EAAY,WAEZ4P,EAAKH,EAAKg0N,EACVnrD,EAAQ1oK,EAAK,EACb5P,EAAY,UAEa,eAAlBmoB,GAET1Y,EAAgB,eAAX8H,EAA0BlmB,EAAO,GAAG,GAAKA,EAAO,GAAG,GACxDqe,EAAgB,eAAX6H,EAA0BlmB,EAAO,GAAG,GAAKA,EAAO,GAAG,GAEzC,eAAXkmB,GACF1H,EAAKH,EAAK+zN,EACVl/L,EAAQ10B,EAAK,EACb7P,EAAY,WAEZ4P,EAAKH,EAAKg0N,EACVnrD,EAAQ1oK,EAAK,EACb5P,EAAY,WAIdyP,GAAMpe,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACrCqe,GAAMre,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EAEtB,eAAXkmB,GACF1H,EAAKH,EAAK+zN,EACVl/L,EAAQ10B,EAAK,EACb7P,EAAY,WAEZ4P,EAAKH,EAAKg0N,EACVnrD,EAAQ1oK,EAAK,EACb5P,EAAY,SAID,eAAXuX,GACF3H,EAAKH,EACL6oK,EAAQ1oK,IAERC,EAAKH,EACL60B,EAAQ10B,GAGVwyN,EAAa,CAAC,CAAC5yN,EAAIC,GAAK,CAACE,EAAIC,GAC/B,CAEAi+D,EAAOj5D,MAAQ,CACbwtN,WAAYA,EACZ58O,EAAG6yL,EACHh0K,EAAGigC,EACHo+L,cAAe,SACf3iO,UAAWA,EACXw9E,OAAQgmJ,EAEZ,GACF,CAEA,SAASpwO,EAASilN,EAAS/nI,EAAK6oI,GAC9Bd,EAAQkY,iBAAiB,UAAU,SAAUhX,GAC3C,IAAI30N,EAAO20N,EAAY7oI,UACnBy3I,EAAWvjO,EAAKysO,aAAa,SAC7B7lO,EAAO+tN,EAAY1wO,IAAI,QACvB66P,EAAWT,EAAY1pB,EAAajpI,GACpCqsC,EAAUymH,EAAiBx+O,EAAM4G,GACjC+rB,EAASgiM,EAAY1wO,IAAI,UACzB86P,EAAYD,EAASv1N,MACrBy1N,EAAaF,EAASt1N,OACtB3oB,EAAIi+O,EAASj+O,EACb6e,EAAIo/N,EAASp/N,EACbu/N,EAAwB,eAAXtsN,EAA0B,CAAC8vM,EAAa9N,EAAY1wO,IAAI,WAAY+6P,GAAavc,EAAa9N,EAAY1wO,IAAI,WAAY+6P,IAAe,CAACvc,EAAa9N,EAAY1wO,IAAI,WAAY86P,GAAYtc,EAAa9N,EAAY1wO,IAAI,WAAY86P,IACrPG,EAAal/O,EAAKm/O,cAAc5b,GAChC5zO,EAAMglO,EAAY1wO,IAAI,OACtByL,EAAMilO,EAAY1wO,IAAI,OAEf,MAAP0L,IACFA,EAAMzI,KAAKyI,IAAIuvP,EAAW,GAAI,IAGrB,MAAPxvP,IACFA,EAAMwvP,EAAW,IAGnB,IAAIxC,EAAc/nB,EAAY1wO,IAAI,eAC9By1C,EAAMi7L,EAAY1wO,IAAI,OACtBm7P,EAAsB,eAAXzsN,EAA0BosN,EAAYC,EACjDK,GAAYD,EAAW1lN,GAAO15B,EAAKsJ,QAAU,IAAMtJ,EAAKsJ,QAExDg2O,EAAgB,SAAUp3J,EAAKh6E,GAEjC,GAAe,eAAXykB,EAAyB,CAC3B,IAEI2tJ,EAFAvwL,EAAMiQ,EAAK/b,IAAIs/O,EAAUr7I,IAAQ,EACjCq3J,EAAanB,EAAUruP,EAAK,CAACJ,EAAKD,GAAMuvP,GAAY,GAGxD,OAAQvC,GACN,IAAK,MACHp8D,EAAK5gK,EACL,MAEF,IAAK,SACH4gK,EAAK5gK,GAAKs/N,EAAaO,GAAc,EACrC,MAEF,IAAK,SACHj/D,EAAK5gK,GAAKs/N,EAAaO,GACvB,MAGJ,MAAO,CAAC,CAACrxO,EAAQoyK,GAAK,CAACpyK,EAAQoyK,EAAKi/D,GACtC,CAEIxvP,EAAMiQ,EAAK/b,IAAIs/O,EAAUr7I,IAAQ,EAArC,IAEIyhH,EADA61C,EAAYpB,EAAUruP,EAAK,CAACJ,EAAKD,GAAMuvP,GAAY,GAGvD,OAAQvC,GACN,IAAK,OACH/yC,EAAK9oM,EACL,MAEF,IAAK,SACH8oM,EAAK9oM,GAAKk+O,EAAYS,GAAa,EACnC,MAEF,IAAK,QACH71C,EAAK9oM,EAAIk+O,EAAYS,EACrB,MAGJ,MAAO,CAAC,CAAC71C,EAAIz7L,GAAS,CAACy7L,EAAK61C,EAAWtxO,GACzC,EAEa,cAATtH,IAEFy4O,GAAYA,EACZ3lN,GAAOA,EAEQ,eAAX/G,EACF9xB,GAAKk+O,EAELr/N,GAAKs/N,EAGPjnH,EAAUA,EAAQh8G,WAGpB,IAAK,IAAIh3B,EAAI,EAAGA,EAAIgzI,EAAQh1I,OAAQgC,IAAK,CACvC,IAAImjG,EAAM6vC,EAAQhzI,GACd06P,EAAU1nH,EAAQhzI,EAAI,GACtBo2O,EAAYn7N,EAAKo7N,aAAalzI,GAElC,GAAe,eAAXv1D,EAAyB,CAC3B,IAAIpJ,EAAQ4xM,EAAUl3O,IAAI,mBAEb,MAATslC,EACFA,EAAQ81N,GAER91N,EAAQk5M,EAAal5M,EAAOw1N,GAEf,cAATn4O,IACF2iB,GAASA,IAIb,IAAIkW,EAAQ6/M,EAAcp3J,EAAKrnF,GAC3B6+B,EAAM4/M,EAAcG,EAAS5+O,EAAI0oB,GACrC1oB,GAAK0oB,EAAQmQ,EACb15B,EAAKktO,cAAchlJ,EAAK,CACtBz7E,OAAQgzB,EAAMz9C,OAAO09C,EAAIx8C,QAAQ64B,YAErC,KAAO,CACL,IAAIyN,EAAS2xM,EAAUl3O,IAAI,oBAEb,MAAVulC,EACFA,EAAS61N,GAET71N,EAASi5M,EAAaj5M,EAAQw1N,GAEjB,cAATp4O,IACF4iB,GAAUA,IAIViW,EAAkC6/M,EAAcp3J,EAA7B,eAAXv1D,EAA6C9xB,EAAwB6e,GAC7EggB,EAAgC4/M,EAAcG,EAA7B,eAAX9sN,EAAiD9xB,EAAI0oB,EAAgC7J,EAAI8J,GACnG9J,GAAK8J,EAASkQ,EACd15B,EAAKktO,cAAchlJ,EAAK,CACtBz7E,OAAQgzB,EAAMz9C,OAAO09C,EAAIx8C,QAAQ64B,YAErC,CACF,CAEAyhO,EAAYx9O,EACd,GACF,CAEA9d,EAAOD,QAAUusB,C,wBCvWjBjF,EAAQ,OAERA,EAAQ,M,wBCFR,IAAIgyO,EAAmBhyO,EAAQ,OAE3Bo3N,EAAcp3N,EAAQ,OAoBtBm2O,EAAc/e,EAAYl8H,OAAO,CACnCl/G,KAAM,eACNs7O,eAAgB,SAAU/0M,EAAQ2nM,GAChC,OAAO8nB,EAAiBx6P,KAAM,CAAC,SACjC,EACAw2O,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EAEHtoC,OAAQ,CAAC,MAAO,OAChB4wM,iBAAiB,EACjBh2M,OAAQ,MACRxK,WAAY,IACZC,UAAW,GACX+yJ,WAAW,EAEXjkL,IAAK,EAELD,IAAK,IAELu/B,YAAa,GAEbC,SAAU,CAERT,MAAM,EACN4E,UAAW,CAET1hB,MAAO,CAAC,CAAC,GAAK,WAAY,CAAC,GAAK,WAAY,CAAC,EAAG,YAChD4X,MAAO,KAIX+F,UAAW,CAETb,MAAM,EAEN1rC,OAAQ,GAERswC,UAAW,CACT1hB,MAAO,OACP4X,MAAO,EACPhkC,KAAM,UAIV4pC,SAAU,CAERV,MAAM,EAENQ,YAAa,EAEblsC,OAAQ,EAERswC,UAAW,CACT1hB,MAAO,OACP4X,MAAO,EACPhkC,KAAM,UAGV6pC,UAAW,CACTX,MAAM,EACN1gB,SAAU,EAEV4D,MAAO,QAETmf,QAAS,CACPrC,MAAM,EACN1rC,OAAQ,MACRwmC,MAAO,GAET+2M,UAAW,CACT3uN,MAAO,QAET0a,MAAO,CACLoC,MAAM,EAENkxN,aAAc,CAAC,EAAG,QAElBhuO,MAAO,OACPuJ,SAAU,IAEZ0kO,OAAQ,CACNnxN,MAAM,EACNksB,gBAAiB,gBACjBiO,YAAa,EACbg8J,YAAa,OACbr7L,MAAO,IACPC,OAAQ,KAER8iD,QAAS,CAAC,EAAG,IAEbqzK,aAAc,CAAC,EAAG,OAGlBhuO,MAAO,OACPuJ,SAAU,OAIZ1M,EAAWkxO,EACfx9P,EAAOD,QAAUusB,C,wBC1HjB,IAAIqxO,EAAct2O,EAAQ,OAEtBsuN,EAAUtuN,EAAQ,OAElBygO,EAAYzgO,EAAQ,OAEpBi5N,EAAUj5N,EAAQ,OAElBk5N,EAAeD,EAAQC,aACvBh7J,EAAQ+6J,EAAQ/6J,MAChB22K,EAAY5b,EAAQ4b,UAoBxB,SAAS0B,EAAcnrB,EAAajpI,GAClC,IAAIl7D,EAASmkM,EAAY1wO,IAAI,UACzBslC,EAAQmiE,EAAI03I,WACZ55M,EAASkiE,EAAI23I,YACbh5J,EAAOnjF,KAAKyI,IAAI45B,EAAOC,GACvBvZ,EAAKwyN,EAAajyM,EAAO,GAAIk7D,EAAI03I,YACjClzN,EAAKuyN,EAAajyM,EAAO,GAAIk7D,EAAI23I,aACjCv1N,EAAI20N,EAAa9N,EAAY1wO,IAAI,UAAWomF,EAAO,GACvD,MAAO,CACLp6D,GAAIA,EACJC,GAAIA,EACJpC,EAAGA,EAEP,CAEA,SAASiyO,EAAY9vN,EAAO+vN,GAS1B,OARIA,IAC4B,kBAAnBA,EACT/vN,EAAQ+vN,EAAerjP,QAAQ,UAAoB,MAATszB,EAAgBA,EAAQ,IAC/B,oBAAnB+vN,IAChB/vN,EAAQ+vN,EAAe/vN,KAIpBA,CACT,CAEA,IAAIgwN,EAAgB,EAAV/4P,KAAK40B,GACXokO,EAAYlW,EAAUvlI,OAAO,CAC/Bl/G,KAAM,QACNrF,OAAQ,SAAUy0O,EAAalB,EAAS/nI,GACtC3qG,KAAKk7C,MAAMigM,YACX,IAAIikB,EAAYxrB,EAAY1wO,IAAI,4BAC5Bm8P,EAAUN,EAAcnrB,EAAajpI,GAEzC3qG,KAAKs/P,YAAY1rB,EAAalB,EAAS/nI,EAAKy0J,EAAWC,EACzD,EACA7jB,QAAS,WAAa,EACtB8jB,YAAa,SAAU1rB,EAAalB,EAAS/nI,EAAKy0J,EAAWC,GAY3D,IAXA,IAAInkN,EAAQl7C,KAAKk7C,MACbqkN,EAAgB3rB,EAAY4F,SAAS,YACrCgmB,EAAiBD,EAAc/lB,SAAS,aACxC3mD,EAAY+gD,EAAY1wO,IAAI,aAC5B28B,GAAc+zM,EAAY1wO,IAAI,cAAgB,IAAMiD,KAAK40B,GACzD+E,GAAY8zM,EAAY1wO,IAAI,YAAc,IAAMiD,KAAK40B,GACrD0kO,GAAkB3/N,EAAWD,GAAcq/N,EAC3CQ,EAAe7/N,EACf8/N,EAAgBH,EAAet8P,IAAI,SACnC08P,EAAWL,EAAcr8P,IAAI,QAExBc,EAAI,EAAG47P,GAAY57P,EAAIo7P,EAAUp9P,OAAQgC,IAAK,CAErD,IAAI24C,EAAUx2C,KAAKyI,IAAIzI,KAAKwI,IAAIywP,EAAUp7P,GAAG,GAAI,GAAI,GAEjD84B,GADAgD,EAAWD,EAAa4/N,EAAiB9iN,EAChC,IAAIm6L,EAAQ8F,OAAO,CAC9BpnN,MAAO,CACLqK,WAAY6/N,EACZ5/N,SAAUA,EACV5Q,GAAImwO,EAAQnwO,GACZC,GAAIkwO,EAAQlwO,GACZ0jK,UAAWA,EACXspD,GAAIkjB,EAAQtyO,EAAI4yO,EAChB5yO,EAAGsyO,EAAQtyO,GAEboiI,QAAQ,KAEVryH,EAAO+uJ,SAAS,CACd9hK,KAAMq1O,EAAUp7P,GAAG,KAErB84B,EAAO+uJ,SAAS2zE,EAAejmN,aAE/B,CAAC,QAAS,cAAe,iBACzB2B,EAAM36C,IAAIu8B,GACV4iO,EAAe5/N,CACjB,CAEA,IAAImxN,EAAW,SAAUt0M,GAEvB,GAAIA,GAAW,EACb,OAAOyiN,EAAU,GAAG,GAGtB,IAAK,IAAIp7P,EAAI,EAAGA,EAAIo7P,EAAUp9P,OAAQgC,IACpC,GAAIo7P,EAAUp7P,GAAG,IAAM24C,IAAkB,IAAN34C,EAAU,EAAIo7P,EAAUp7P,EAAI,GAAG,IAAM24C,EACtE,OAAOyiN,EAAUp7P,GAAG,GAKxB,OAAOo7P,EAAUp7P,EAAI,GAAG,EAC1B,EAEA,IAAK6uL,EAAW,CACd,IAAIgtE,EAAMhgO,EACVA,EAAaC,EACbA,EAAW+/N,CACb,CAEA7/P,KAAK8/P,aAAalsB,EAAalB,EAAS/nI,EAAKsmJ,EAAUoO,EAASx/N,EAAYC,EAAU+yJ,GAEtF7yL,KAAK+/P,eAAensB,EAAalB,EAAS/nI,EAAKsmJ,EAAUoO,EAASx/N,EAAYC,EAAU+yJ,GAExF7yL,KAAKggQ,aAAapsB,EAAalB,EAAS/nI,EAAKsmJ,EAAUoO,GAEvDr/P,KAAKigQ,cAAcrsB,EAAalB,EAAS/nI,EAAKsmJ,EAAUoO,EAC1D,EACAS,aAAc,SAAUlsB,EAAalB,EAAS/nI,EAAKsmJ,EAAUoO,EAASx/N,EAAYC,EAAU+yJ,GAoB1F,IAnBA,IAAI33I,EAAQl7C,KAAKk7C,MACbhsB,EAAKmwO,EAAQnwO,GACbC,EAAKkwO,EAAQlwO,GACbpC,EAAIsyO,EAAQtyO,EACZmzO,GAAUtsB,EAAY1wO,IAAI,OAC1Bi9P,GAAUvsB,EAAY1wO,IAAI,OAC1Bk9P,EAAiBxsB,EAAY4F,SAAS,aACtC6mB,EAAYzsB,EAAY4F,SAAS,YACjCuO,EAAanU,EAAY4F,SAAS,aAClCtrM,EAAc0lM,EAAY1wO,IAAI,eAC9Bo9P,EAAiBD,EAAUn9P,IAAI,eAC/Bq9P,EAAe7e,EAAa0e,EAAel9P,IAAI,UAAW6pB,GAC1DyzO,EAAU9e,EAAa2e,EAAUn9P,IAAI,UAAW6pB,GAChDw1B,EAAQ1iB,EACRpwB,GAAQqwB,EAAWD,GAAcqO,EACjCuyN,EAAUhxP,EAAO6wP,EACjBI,EAAiBN,EAAe5mB,SAAS,aAAajgM,eACtDonN,EAAgBN,EAAU7mB,SAAS,aAAajgM,eAE3Cv1C,EAAI,EAAGA,GAAKkqC,EAAalqC,IAAK,CACrC,IAAI48P,EAAQz6P,KAAKmgC,IAAIic,GACjBs+M,EAAQ16P,KAAKkgC,IAAIkc,GAErB,GAAI69M,EAAel9P,IAAI,QAAS,CAC9B,IAAIqrC,EAAY,IAAIuoM,EAAQ3vJ,KAAK,CAC/B3xD,MAAO,CACLsU,GAAI82N,EAAQ7zO,EAAImC,EAChB6a,GAAI82N,EAAQ9zO,EAAIoC,EAChB8a,GAAI22N,GAAS7zO,EAAIwzO,GAAgBrxO,EACjCgb,GAAI22N,GAAS9zO,EAAIwzO,GAAgBpxO,GAEnCvjB,MAAO80P,EACPvxG,QAAQ,IAGoB,SAA1BuxG,EAAernO,QACjBkV,EAAUs9I,SAAS,CACjBxyJ,OAAQ43N,EAASjtP,EAAIkqC,KAIzBgN,EAAM36C,IAAIguC,EACZ,CAGA,GAAIw5M,EAAW7kP,IAAI,QAAS,CAC1B,IAAIgsC,EAAQ8vN,EAAYt4K,EAAM1iF,EAAIkqC,GAAeiyN,EAASD,GAAUA,GAASnY,EAAW7kP,IAAI,cACxF8pB,EAAW+6N,EAAW7kP,IAAI,YAC1BolP,EAAY2I,EAASjtP,EAAIkqC,GAC7BgN,EAAM36C,IAAI,IAAIu2O,EAAQoc,KAAK,CACzBtnP,MAAOkrO,EAAQmf,aAAa,CAAC,EAAGlO,EAAY,CAC1CprN,KAAMuS,EACNpvB,EAAG8gP,GAAS7zO,EAAIwzO,EAAevzO,GAAYkC,EAC3CyP,EAAGkiO,GAAS9zO,EAAIwzO,EAAevzO,GAAYmC,EAC3C4tO,kBAAmB8D,GAAS,GAAM,MAAQA,EAAQ,GAAM,SAAW,SACnExmO,UAAWumO,GAAS,GAAM,OAASA,EAAQ,GAAM,QAAU,UAC1D,CACDtY,UAAWA,IAEbn5F,QAAQ,IAEZ,CAGA,GAAIkxG,EAAUn9P,IAAI,SAAWc,IAAMkqC,EAAa,CAC9C,IAAK,IAAIjjC,EAAI,EAAGA,GAAKq1P,EAAgBr1P,IAAK,CACpC21P,EAAQz6P,KAAKmgC,IAAIic,GACjBs+M,EAAQ16P,KAAKkgC,IAAIkc,GADrB,IAEIu+M,EAAW,IAAIhqB,EAAQ3vJ,KAAK,CAC9B3xD,MAAO,CACLsU,GAAI82N,EAAQ7zO,EAAImC,EAChB6a,GAAI82N,EAAQ9zO,EAAIoC,EAChB8a,GAAI22N,GAAS7zO,EAAIyzO,GAAWtxO,EAC5Bgb,GAAI22N,GAAS9zO,EAAIyzO,GAAWrxO,GAE9BggI,QAAQ,EACRvjJ,MAAO+0P,IAGoB,SAAzBA,EAActnO,QAChBynO,EAASj1E,SAAS,CAChBxyJ,OAAQ43N,GAAUjtP,EAAIiH,EAAIq1P,GAAkBpyN,KAIhDgN,EAAM36C,IAAIugQ,GACVv+M,GAASk+M,CACX,CAEAl+M,GAASk+M,CACX,MACEl+M,GAAS9yC,CAEb,CACF,EACAswP,eAAgB,SAAUnsB,EAAalB,EAAS/nI,EAAKsmJ,EAAUoO,EAASx/N,EAAYC,EAAU+yJ,GAC5F,IAAI33I,EAAQl7C,KAAKk7C,MACb0kE,EAAU5/G,KAAKqqK,MAEnB,GAAKupE,EAAY1wO,IAAI,gBAArB,CAQA,IAAI69P,EAAc,EAAEntB,EAAY1wO,IAAI,QAAS0wO,EAAY1wO,IAAI,QACzD89P,EAAc,CAACnhO,EAAYC,GAC3B7gB,EAAO20N,EAAY7oI,UACnBy3I,EAAWvjO,EAAKysO,aAAa,SACjCzsO,EAAK2tF,KAAKgT,GAASr/G,KAAI,SAAU4mG,GAC/B,IAAIp3D,EAAU,IAAI+uN,EAAY,CAC5BtpO,MAAO,CACL+sB,MAAO1iB,KAGXi3M,EAAQkX,UAAUj+M,EAAS,CACzBva,MAAO,CACL+sB,MAAO86M,EAAUp+O,EAAK/b,IAAIs/O,EAAUr7I,GAAM45J,EAAaC,GAAa,KAErEptB,GACH14L,EAAM36C,IAAIwvC,GACV9wB,EAAKw7N,iBAAiBtzI,EAAKp3D,EAC7B,IAAG/Y,QAAO,SAAUsyN,EAAQI,GAC1B,IAAI35M,EAAU6vE,EAAQk7H,iBAAiB4O,GACvC5S,EAAQ+D,YAAY9qM,EAAS,CAC3Bva,MAAO,CACL+sB,MAAO86M,EAAUp+O,EAAK/b,IAAIs/O,EAAU8G,GAASyX,EAAaC,GAAa,KAExEptB,GACH14L,EAAM36C,IAAIwvC,GACV9wB,EAAKw7N,iBAAiB6O,EAAQv5M,EAChC,IAAG6sC,QAAO,SAAUuqB,GAClB,IAAIp3D,EAAU6vE,EAAQk7H,iBAAiB3zI,GACvCjsD,EAAM0hC,OAAO7sC,EACf,IAAGwsG,UACHt9H,EAAKw8N,mBAAkB,SAAU1rM,EAASo3D,GACxC,IAAIizI,EAAYn7N,EAAKo7N,aAAalzI,GAC9B85J,EAAe7mB,EAAUZ,SAAS,WACtCzpM,EAAQoqM,SAAS,CACfr6N,EAAGu/O,EAAQnwO,GACXyP,EAAG0gO,EAAQlwO,GACXqZ,MAAOk5M,EAAauf,EAAa/9P,IAAI,SAAUm8P,EAAQtyO,GACvDA,EAAG20N,EAAauf,EAAa/9P,IAAI,UAAWm8P,EAAQtyO,KAEtDgjB,EAAQkqM,SAASG,EAAUZ,SAAS,aAAagG,gBAEtB,SAAvBzvM,EAAQnkC,MAAMme,MAChBgmB,EAAQ87I,SAAS,OAAQolE,EAASoM,EAAUp+O,EAAK/b,IAAIs/O,EAAUr7I,GAAM45J,EAAa,CAAC,EAAG,IAAI,KAG5FjqB,EAAQ8G,cAAc7tM,EAASqqM,EAAUZ,SAAS,sBAAsBgG,eAC1E,IACAx/O,KAAKqqK,MAAQprJ,CAjDb,MAJE2gG,GAAWA,EAAQ67H,mBAAkB,SAAU75O,GAC7Cs5C,EAAM0hC,OAAOh7E,EACf,GAoDJ,EACAo+P,aAAc,SAAUpsB,EAAalB,EAAS/nI,EAAKsmJ,EAAUoO,GAC3D,IAAIpgP,EAAO20N,EAAY7oI,UACnBy3I,EAAWvjO,EAAKysO,aAAa,SAC7BwV,EAAattB,EAAY4F,SAAS,SAEtC,GAAI0nB,EAAWh+P,IAAI,QAAS,CAC1B,IAAI07P,EAAesC,EAAWh+P,IAAI,gBAC9B4c,EAAIu/O,EAAQnwO,GAAKwyN,EAAakd,EAAa,GAAIS,EAAQtyO,GACvD4R,EAAI0gO,EAAQlwO,GAAKuyN,EAAakd,EAAa,GAAIS,EAAQtyO,GACvDmzO,GAAUtsB,EAAY1wO,IAAI,OAC1Bi9P,GAAUvsB,EAAY1wO,IAAI,OAC1BpB,EAAQ8xO,EAAY7oI,UAAU7nG,IAAIs/O,EAAU,GAC5C8F,EAAY2I,EAASoM,EAAUv7P,EAAO,CAACo+P,EAAQC,GAAS,CAAC,EAAG,IAAI,IACpEngQ,KAAKk7C,MAAM36C,IAAI,IAAIu2O,EAAQoc,KAAK,CAC9B/jG,QAAQ,EACRvjJ,MAAOkrO,EAAQmf,aAAa,CAAC,EAAGiL,EAAY,CAC1CphP,EAAGA,EACH6e,EAAGA,EAEHhC,KAAM1d,EAAK60N,QAAQ,GACnBz5M,UAAW,SACX0iO,kBAAmB,UAClB,CACDzU,UAAWA,EACX6Y,WAAW,MAGjB,CACF,EACAlB,cAAe,SAAUrsB,EAAalB,EAAS/nI,EAAKsmJ,EAAUoO,GAC5D,IAAI+B,EAAcxtB,EAAY4F,SAAS,UACnC0mB,GAAUtsB,EAAY1wO,IAAI,OAC1Bi9P,GAAUvsB,EAAY1wO,IAAI,OAE9B,GAAIk+P,EAAYl+P,IAAI,QAAS,CAC3B,IAAI07P,EAAewC,EAAYl+P,IAAI,gBAC/B4c,EAAIu/O,EAAQnwO,GAAKwyN,EAAakd,EAAa,GAAIS,EAAQtyO,GACvD4R,EAAI0gO,EAAQlwO,GAAKuyN,EAAakd,EAAa,GAAIS,EAAQtyO,GACvDyb,EAAQk5M,EAAa0f,EAAYl+P,IAAI,SAAUm8P,EAAQtyO,GACvD0b,EAASi5M,EAAa0f,EAAYl+P,IAAI,UAAWm8P,EAAQtyO,GACzD9N,EAAO20N,EAAY7oI,UACnBjpG,EAAQmd,EAAK/b,IAAI+b,EAAKysO,aAAa,SAAU,GAC7CpD,EAAY2I,EAASoM,EAAUv7P,EAAO,CAACo+P,EAAQC,GAAS,CAAC,EAAG,IAAI,IACpEngQ,KAAKk7C,MAAM36C,IAAI,IAAIu2O,EAAQoc,KAAK,CAC9B/jG,QAAQ,EACRvjJ,MAAOkrO,EAAQmf,aAAa,CAAC,EAAGmL,EAAa,CAC3CthP,EAAGA,EACH6e,EAAGA,EACHhC,KAAMqiO,EACNl9P,EAAOs/P,EAAYl+P,IAAI,cACvByiD,UAAW52C,MAAMy5B,GAAS,KAAOA,EACjC64N,WAAYtyP,MAAM05B,GAAU,KAAOA,EACnCpO,UAAW,SACX0iO,kBAAmB,UAClB,CACDzU,UAAWA,EACX6Y,WAAW,MAGjB,CACF,IAEE1zO,EAAW0xO,EACfh+P,EAAOD,QAAUusB,C,wBCpWjB,IAAI0pN,EAAO3uN,EAAQ,OAoBfiF,EAAW0pN,EAAKzzH,OAAO,CACzBl/G,KAAM,sBACNgxB,MAAO,CACL+sB,MAAO,EACP/Z,MAAO,GACPzb,EAAG,GACHjN,EAAG,EACH6e,EAAG,GAELo/M,UAAW,SAAU55O,EAAKqxB,GACxB,IAAI8rO,EAAUn7P,KAAKmgC,IACfi7N,EAAUp7P,KAAKkgC,IACftZ,EAAIyI,EAAMzI,EACVyb,EAAQhT,EAAMgT,MACd+Z,EAAQ/sB,EAAM+sB,MACdziC,EAAI0V,EAAM1V,EAAIwhP,EAAQ/+M,GAAS/Z,GAASA,GAASzb,EAAI,EAAI,EAAI,GAC7D4R,EAAInJ,EAAMmJ,EAAI4iO,EAAQh/M,GAAS/Z,GAASA,GAASzb,EAAI,EAAI,EAAI,GACjEw1B,EAAQ/sB,EAAM+sB,MAAQp8C,KAAK40B,GAAK,EAChC52B,EAAI8hC,OAAOnmB,EAAG6e,GACdx6B,EAAI08B,OAAOrL,EAAM1V,EAAIwhP,EAAQ/+M,GAAS/Z,EAAOhT,EAAMmJ,EAAI4iO,EAAQh/M,GAAS/Z,GACxErkC,EAAI08B,OAAOrL,EAAM1V,EAAIwhP,EAAQ9rO,EAAM+sB,OAASx1B,EAAGyI,EAAMmJ,EAAI4iO,EAAQ/rO,EAAM+sB,OAASx1B,GAChF5oB,EAAI08B,OAAOrL,EAAM1V,EAAIwhP,EAAQ/+M,GAAS/Z,EAAOhT,EAAMmJ,EAAI4iO,EAAQh/M,GAAS/Z,GACxErkC,EAAI08B,OAAO/gB,EAAG6e,EAEhB,IAGFx9B,EAAOD,QAAUusB,C,wBC/CjB,IAAI0lN,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAER,IAAIg5O,EAAiBh5O,EAAQ,OAEzB2wO,EAAe3wO,EAAQ,OAEvBi5O,EAAiBj5O,EAAQ,OAEzBk5O,EAAal5O,EAAQ,OAErBm5O,EAAen5O,EAAQ,OAEvBo5O,EAAiBp5O,EAAQ,OAEzBq5O,EAAcr5O,EAAQ,OAEtBs5O,EAAat5O,EAAQ,OAoBzB2qN,EAAQonB,kBAAkBiH,GAC1BruB,EAAQ4C,eAAeojB,EAAa,QAAS,SAAU,OACvDhmB,EAAQ4C,eAAe0rB,GACvBtuB,EAAQ4C,eAAe2rB,GACvBvuB,EAAQsC,eAAeksB,GACvBxuB,EAAQsC,eAAetC,EAAQuC,SAASC,OAAOosB,kBAAmBH,GAClEzuB,EAAQsC,eAAeosB,GAEvB1uB,EAAQ6uB,yBAAyB,YAAa,CAC5Ch7P,OAAQ86P,G,iCCnDV,IAAI3uB,EAAU3qN,EAAQ,OAElBy5O,EAAOz5O,EAAQ,OAEf8pN,EAAS9pN,EAAQ,OAEjBiyO,EAASjyO,EAAQ,OAEjBkyO,EAAkBD,EAAOC,gBAEzBzjB,EAAQzuN,EAAQ,OAEhB05O,EAAU15O,EAAQ,OAElB25O,EAAaD,EAAQC,WAErBC,EAA0B55O,EAAQ,OAElCqyO,EAAuBryO,EAAQ,OAE/B65O,EAA2B75O,EAAQ,OAEnC85O,EAAoBD,EAAyBC,kBAC7CC,EAA4BF,EAAyBE,0BAoBrDC,EAAcrvB,EAAQ4nB,kBAAkB,CAC1Cv2P,KAAM,eACNkzD,KAAM,SAAU3sB,GACdy3N,EAAYjhB,WAAWvhP,KAAM,OAAQ+C,WACrC,IAAIqD,EAAOpG,KAEX,SAASyiQ,IACP,OAAOr8P,EAAKs8P,eACd,CAGA1iQ,KAAKg7P,qBAAuB,IAAIH,EAAqB4H,EAAmBA,GACxEziQ,KAAK2iQ,kBAAkB53N,EAAOo1C,OAASp1C,EAAO63N,OAE9C5iQ,KAAK6iQ,uBACP,EACAC,YAAa,SAAU/3N,GACrBy3N,EAAYjhB,WAAWvhP,KAAM,cAAe+C,WAC5C/C,KAAK2iQ,kBAAkB53N,EAAOo1C,OAASp1C,EAAO63N,OAE9C5iQ,KAAK6iQ,uBACP,EACAE,qBAAsB,SAAUh4N,GAC9By3N,EAAYjhB,WAAWvhP,KAAM,uBAAwB+C,WACrD23P,EAAgB3vN,EAAQ,CAAC,aAAc,CAAC,QAC1C,EACA+0M,eAAgB,SAAU/0M,EAAQ2nM,GAChC,IAAIvyJ,EAAQp1C,EAAOo1C,OAASp1C,EAAO63N,OAAS,GACxC9jL,EAAQ/zC,EAAO9rB,MAAQ8rB,EAAO+zC,OAAS,GACvC14E,EAAOpG,KAEX,GAAI8+E,GAASqB,EAAO,CAElBmiL,EAAkBtiQ,MAClB,IAAImxB,EAAQixO,EAAwBtjL,EAAOqB,EAAOngF,MAAM,EAAMgjQ,GAI9D,OAHA1wB,EAAO56H,KAAKvmF,EAAMgvD,OAAO,SAAUQ,GACjC4hL,EAA0B5hL,EAAK+5C,MAAO/5C,EAAKg6C,MAAO36H,KAAM2gF,EAAKkzJ,UAC/D,GAAG7zO,MACImxB,EAAMlS,IACf,CAEA,SAAS+jP,EAAWC,EAAU/6F,GAE5B+6F,EAASC,WAAW,gBAAgB,SAAU3R,GAC5C,IAAI4R,EAAmB/8P,EAAKg9P,kBACxBC,EAAc9R,EAAM7T,WAAW,YAC/B4lB,EAAgBH,EAAiBE,GAOrC,OALIC,IACFA,EAAcvc,YAAcwK,EAAMxK,YAClCwK,EAAMxK,YAAcuc,GAGf/R,CACT,IACA,IAAIgS,EAAiBn9P,EAAKozO,SAAS,aAE/BgqB,EAAkB,IAAIvsB,EAAM,CAC9B/nM,MAAOq0N,EAAex4N,QACrBw4N,EAAexc,YAAarU,GAC3B+wB,EAAyBr9P,EAAKozO,SAAS,sBACvCkqB,EAA0B,IAAIzsB,EAAM,CACtCyJ,SAAU,CACRxxM,MAAOu0N,EAAuB14N,SAE/B04N,EAAuB1c,YAAarU,GAMvC,SAASixB,EAAczmM,GAErB,OADAA,EAAOl9D,KAAK4jQ,UAAU1mM,GACfA,GAAoB,UAAZA,EAAK,GAAiBsmM,EAAkBtmM,GAAoB,aAAZA,EAAK,IAAiC,UAAZA,EAAK,GAAiBwmM,EAA0B1jQ,KAAK+mP,WAChJ,CARA7+E,EAASg7F,WAAW,gBAAgB,SAAU3R,GAE5C,OADAA,EAAMsS,mBAAmBF,GAClBpS,CACT,GAMF,CACF,EAKAuS,SAAU,WACR,OAAO9jQ,KAAK+qG,UAAU55E,KACxB,EAKA4yO,YAAa,WACX,OAAO/jQ,KAAK8jQ,WAAW57F,QACzB,EAKAu6F,kBAAmB,WACjB,OAAOziQ,KAAK0iQ,eACd,EAKAsB,cAAe,SAAUnwB,EAAWowB,EAAgBxL,GAClD,GAAiB,SAAbA,EAAqB,CACvB,IAAIwK,EAAWjjQ,KAAK+qG,UAChBnpF,EAAS5hB,KAAKw4P,cAAc3kB,EAAW4kB,GACvC93K,EAAOsiL,EAAS9xO,MAAM+yO,eAAerwB,GACrCswB,EAAalB,EAASnvB,QAAQnzJ,EAAK+5C,MAAMm5G,WACzCuwB,EAAanB,EAASnvB,QAAQnzJ,EAAKg6C,MAAMk5G,WACzCvxN,EAAO,GASX,OARc,MAAd6hP,GAAsB7hP,EAAKre,KAAKkgQ,GAClB,MAAdC,GAAsB9hP,EAAKre,KAAKmgQ,GAChC9hP,EAAO6/O,EAAW7/O,EAAKxX,KAAK,QAExB8W,EAAO9f,QACTwgB,GAAQ,MAAQ6/O,EAAWvgP,EAAO9f,QAG7BwgB,CACT,CAEE,OAAOkgP,EAAYjhB,WAAWvhP,KAAM,gBAAiB+C,UAEzD,EACA8/P,sBAAuB,WACrB,IAAIwB,EAAa/xB,EAAO5oN,IAAI1pB,KAAK+qC,OAAOs5N,YAAc,IAAI,SAAUC,GAElE,OAAyB,MAAlBA,EAASxiQ,MAAgBwiQ,EAAWhyB,EAAO5uH,OAAO,CACvD5hH,MAAO,GACNwiQ,EACL,IACIC,EAAiB,IAAItC,EAAK,CAAC,SAAUjiQ,MACzCukQ,EAAe1lM,SAASwlM,GACxBrkQ,KAAK0iQ,gBAAkB6B,EACvBvkQ,KAAKojQ,kBAAoBmB,EAAe5G,UAAS,SAAUx2J,GACzD,OAAOo9J,EAAelqB,aAAalzI,GAAK,EAC1C,GACF,EACAotI,QAAS,SAAUn3J,GACjBp9E,KAAK+qC,OAAOqyC,KAAOA,CACrB,EACAk3J,UAAW,SAAU7kM,GACnBzvC,KAAK+qC,OAAO0E,OAASA,CACvB,EACA0pM,mBAAoB,WAClB,OAAOqpB,EAAYjH,UAAUv7P,KAAM,yBACP,UAAvBA,KAAKkD,IAAI,WAAyBlD,KAAKkD,IAAI,yBAClD,EACAszO,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EACHs8J,iBAAkB,OAMlBgM,iBAAiB,EACjBiB,gBAAgB,EAChBn5I,OAAQ,KACRq8J,oBAAoB,EAEpB5uK,SAAU,CACR6uK,aAAa,GAGf1iK,MAAO,CACL2iK,WAAY,KAEZC,UAAW,CAAC,EAAG,IACfvgK,QAAS,GAETqsE,SAAU,GAEVm0F,WAAY,GACZC,iBAAiB,GAEnBx0N,KAAM,SACNE,IAAK,SAKLtuB,OAAQ,SACR2+N,WAAY,GACZkkB,WAAY,CAAC,OAAQ,QACrBC,eAAgB,GAChBC,UAAW,CACTlzO,SAAU,SACV9E,SAAU,GAEZi4O,WAAW,EACXC,MAAM,EAENz1N,OAAQ,KACR2tC,KAAM,EAEN+nL,eAAgB,GAUhBj2N,MAAO,CACLxB,MAAM,EACNY,UAAW,OAEbixM,UAAW,CAAC,EACZjtM,UAAW,CACT1hB,MAAO,OACP4X,MAAO,EACPlP,QAAS,IAEXonN,SAAU,CACRxxM,MAAO,CACLxB,MAAM,OAKVjgB,EAAW+0O,EACfrhQ,EAAOD,QAAUusB,C,wBC5QjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBkxO,EAAalxO,EAAQ,OAErB48O,EAAW58O,EAAQ,OAEnB68O,EAAiB78O,EAAQ,OAEzB88O,EAAa98O,EAAQ,OAErB+8O,EAAgB/8O,EAAQ,OAExBg9O,EAAsBD,EAAcC,oBAEpC1uB,EAAUtuN,EAAQ,OAElBi9O,EAAaj9O,EAAQ,OAErBk9O,EAAel9O,EAAQ,OAEvBm9O,EAAqBD,EAAaC,mBAoBlCC,EAAkB,uBAClBC,EAAoB,yBACpBC,EAAkB,CAAC,YAAa,WAChCC,EAAkB,CAAC,YAAa,WAEpC,SAASC,EAAexgP,EAAMygP,GAC5B,IAAI3sO,EAAU9T,EAAK83N,UAAU,WAC7B,OAAkB,MAAXhkN,EAAkBA,EAAU9T,EAAKg0N,WAAWt2O,IAAI+iQ,EACzD,CAEA,SAASC,EAAY1gP,EAAMygP,EAAaE,GACtC,IAAIvkQ,EAAK4jB,EAAK4gP,eACV9sO,EAAU0sO,EAAexgP,EAAMygP,GAEf,MAAhBE,IACS,MAAX7sO,IAAoBA,EAAU,GAC9BA,GAAW6sO,GAGbvkQ,EAAGykQ,UAAYzkQ,EAAGykQ,WAClBzkQ,EAAGi3P,UAAS,SAAU9xJ,GACpB,IAAKA,EAAM4xJ,QAAS,CAClB,IAAI2N,EAAOv/J,EAAMw/J,yBAEL,MAARD,GAAgC,MAAhBH,IAClBG,EAAOhtO,GAGTytE,EAAM8kF,SAAS,UAAWy6E,EAC5B,CACF,GACF,CAEA,SAASE,EAAWhhP,EAAMygP,GACxB,IAAI3sO,EAAU0sO,EAAexgP,EAAMygP,GAC/BrkQ,EAAK4jB,EAAK4gP,eAIdxkQ,EAAGi3P,UAAS,SAAU9xJ,IACnBA,EAAM4xJ,SAAW5xJ,EAAM8kF,SAAS,UAAWvyJ,EAC9C,IACA13B,EAAG6kQ,WAAa7kQ,EAAG6kQ,WACrB,CAEA,IAAIh5O,EAAW0lN,EAAQkF,gBAAgB,CACrC7zO,KAAM,QACNkzD,KAAM,SAAUg7K,EAAS/nI,GACvB,IAAI+7J,EAAa,IAAIhN,EACjBiN,EAAW,IAAIvB,EACflqN,EAAQl7C,KAAKk7C,MACjBl7C,KAAK4mQ,YAAc,IAAIvB,EAAe16J,EAAIoqJ,SAC1C/0P,KAAK6mQ,gBAAkB,CACrBnhQ,OAAQw1C,GAEVA,EAAM36C,IAAImmQ,EAAWxrN,OACrBA,EAAM36C,IAAIomQ,EAASzrN,OACnBl7C,KAAK65P,YAAc6M,EACnB1mQ,KAAK8mQ,UAAYH,EACjB3mQ,KAAK+mQ,cAAe,CACtB,EACA5nQ,OAAQ,SAAUy0O,EAAalB,EAAS/nI,GACtC,IAAIq8J,EAAYhnQ,KACZ6yO,EAAWe,EAAYS,iBAC3Br0O,KAAKy6P,OAAS7mB,EACd,IAAI8yB,EAAa1mQ,KAAK65P,YAClB8M,EAAW3mQ,KAAK8mQ,UAChB5rN,EAAQl7C,KAAKk7C,MAEjB,GAAsB,SAAlB23L,EAASruO,KAAiB,CAC5B,IAAIyiQ,EAAe,CACjBn1O,SAAU+gN,EAAS/gN,SACnBuE,MAAOw8M,EAASx8M,OAGdr2B,KAAK+mQ,aACP7rN,EAAMrkB,KAAKowO,GAEXnwB,EAAQ+D,YAAY3/L,EAAO+rN,EAAcrzB,EAE7C,CAGA6xB,EAAW7xB,EAAYkwB,WAAY6B,EAAmB/xB,IACtD,IAAI30N,EAAO20N,EAAY7oI,UACvB27J,EAAW3M,WAAW96O,GACtB,IAAIipJ,EAAW0rE,EAAYmwB,cAC3B4C,EAAS5M,WAAW7xF,GAEpBloK,KAAKknQ,0BAELlnQ,KAAKmnQ,kBAAkBvzB,EAAalB,EAAS/nI,GAE7C1xC,aAAaj5D,KAAKonQ,gBAClB,IAAIvF,EAAcjuB,EAAYiuB,YAC1BgD,EAAkBjxB,EAAY1wO,IAAI,yBAElC2+P,GACF7hQ,KAAKqnQ,2BAA2BxF,EAAagD,GAG/C5lP,EAAKw8N,mBAAkB,SAAU75O,EAAIulG,GACnC,IAAIizI,EAAYn7N,EAAKo7N,aAAalzI,GAElCvlG,EAAGo6E,IAAI,QAAQA,IAAI,WACnB,IAAIipL,EAAY7qB,EAAUl3O,IAAI,aAE1B+hQ,GACFrjQ,EAAG6hE,GAAG,QAAQ,WACRo+L,IACFA,EAAYyF,UACXtnQ,KAAKunQ,YAAcvnQ,KAAKqnQ,2BAA2BxF,EAAagD,GACjEhD,EAAY2F,SAASrgK,GAErBloF,EAAKktO,cAAchlJ,EAAKvlG,EAAGkwB,UAE/B,GAAG9xB,MAAMyjE,GAAG,WAAW,WACjBo+L,GACFA,EAAY4F,WAAWtgK,EAE3B,GAAGnnG,MAGL4B,EAAG8lQ,aAAazC,GAAapD,GAC7BjgQ,EAAGgkQ,IAAoBhkQ,EAAGo6E,IAAI,YAAap6E,EAAGgkQ,IAC9ChkQ,EAAGikQ,IAAsBjkQ,EAAGo6E,IAAI,WAAYp6E,EAAGikQ,IAE3CzrB,EAAUl3O,IAAI,wBAChBtB,EAAG6hE,GAAG,YAAa7hE,EAAGgkQ,GAAmB,WACvCoB,EAAUW,cAEVh9J,EAAIi9J,eAAe,CACjBpjQ,KAAM,qBACNuvO,SAAUH,EAAYpqO,GACtBqqO,UAAWjyO,EAAGiyO,WAElB,GACAjyO,EAAG6hE,GAAG,WAAY7hE,EAAGikQ,GAAqB,WACxCmB,EAAUa,iBAAiBl9J,EAC7B,GAEJ,GAAG3qG,MACHif,EAAKkS,MAAM22O,UAAS,SAAUnnL,GAC5B,IAAI/+E,EAAK++E,EAAKylL,eACdxkQ,EAAGgkQ,IAAoBhkQ,EAAGo6E,IAAI,YAAap6E,EAAGgkQ,IAC9ChkQ,EAAGikQ,IAAsBjkQ,EAAGo6E,IAAI,WAAYp6E,EAAGikQ,IAE3CllL,EAAK64J,WAAWt2O,IAAI,wBACtBtB,EAAG6hE,GAAG,YAAa7hE,EAAGgkQ,GAAmB,WACvCoB,EAAUW,cAEVh9J,EAAIi9J,eAAe,CACjBpjQ,KAAM,qBACNuvO,SAAUH,EAAYpqO,GACtBu+P,cAAepnL,EAAKkzJ,WAExB,GACAjyO,EAAG6hE,GAAG,WAAY7hE,EAAGikQ,GAAqB,WACxCmB,EAAUa,iBAAiBl9J,EAC7B,GAEJ,IACA,IAAIq9J,EAAoD,aAA9Bp0B,EAAY1wO,IAAI,WAA4B0wO,EAAY1wO,IAAI,wBAClFgsB,EAAKjQ,EAAKk5N,UAAU,MACpBhpN,EAAKlQ,EAAKk5N,UAAU,MACxBl5N,EAAKw8N,mBAAkB,SAAU75O,EAAIulG,GACnC,IAAIizI,EAAYn7N,EAAKo7N,aAAalzI,GAC9B8gK,EAAc7tB,EAAUl3O,IAAI,iBAAmB,EAC/CglQ,EAAatmQ,EAAGumQ,gBAEpB,GAAIH,EAAqB,CACvB,IAAI35P,EAAM4Q,EAAK69N,cAAc31I,GACzBihK,EAAMjiQ,KAAK64H,MAAM3wH,EAAI,GAAK8gB,EAAI9gB,EAAI,GAAK6gB,GAEvCk5O,EAAM,IACRA,EAAgB,EAAVjiQ,KAAK40B,GAASqtO,GAGtB,IAAIC,EAASh6P,EAAI,GAAK6gB,EAElBm5O,IACFD,GAAYjiQ,KAAK40B,IAGnB,IAAIyrB,EAAe6hN,EAAS,OAAS,QACrCvxB,EAAQwxB,iBAAiBJ,EAAY,CACnCjhF,cAAemhF,EACf5hN,aAAcA,EACd+hN,WAAY,UACX,CACD/hN,aAAcA,GAElB,MACEswL,EAAQwxB,iBAAiBJ,EAAY,CACnCjhF,aAAcghF,GAAe9hQ,KAAK40B,GAAK,KAG7C,IACA/6B,KAAK+mQ,cAAe,CACtB,EACAvrB,QAAS,WACPx7O,KAAK4mQ,aAAe5mQ,KAAK4mQ,YAAYprB,UACrCx7O,KAAK6mQ,gBAAkB,CAAC,EAExB7mQ,KAAK2nQ,aACP,EACAE,iBAAkB,SAAUl9J,EAAK9H,GAC/B,IAAIz8F,EAAOpG,KAEXA,KAAK2nQ,cAEL3nQ,KAAKwoQ,mBAAqBrkP,YAAW,WACnC/d,EAAKoiQ,mBAAqB,KAC1B79J,EAAIi9J,eAAe,CACjBpjQ,KAAM,uBACNuvO,SAAU3tO,EAAKq0P,OAAOjxP,IAE1B,GAAG,IACL,EACAm+P,YAAa,WACP3nQ,KAAKwoQ,qBACPvvM,aAAaj5D,KAAKwoQ,oBAClBxoQ,KAAKwoQ,mBAAqB,KAE9B,EACAhE,mBAAoB,SAAU5wB,EAAalB,EAAS/nI,EAAK6oI,GACvD,IAAIv0N,EAAO20N,EAAY7oI,UACnB55E,EAAQlS,EAAKkS,MACb0iN,EAAYL,EAAQK,UACpBk0B,EAAgBv0B,EAAQu0B,cACxB3sL,EAAOjqD,EAAMs3O,eAAe50B,GAC5BlzJ,EAAOxvD,EAAM+yO,eAAe6D,IAE3B3sL,GAASuF,KAIdxvD,EAAMu3O,UAAS,SAAUttL,GACvB8qL,EAAY9qL,EAAM0qL,EAAiB,GACrC,IACA30O,EAAM22O,UAAS,SAAUnnL,GACvBulL,EAAYvlL,EAAMolL,EAAiB,GACrC,IAEI3qL,IACForL,EAAWprL,EAAM0qL,GACjBxzB,EAAO56H,KAAKt8B,EAAK+E,OAAO,SAAUwoL,GAC5BA,EAAa90B,UAAY,IAI7B2yB,EAAWmC,EAAc5C,GACzBS,EAAWmC,EAAajuI,MAAOorI,GAC/BU,EAAWmC,EAAahuI,MAAOmrI,GACjC,KAGEnlL,IACF6lL,EAAW7lL,EAAMolL,GACjBS,EAAW7lL,EAAK+5C,MAAOorI,GACvBU,EAAW7lL,EAAKg6C,MAAOmrI,IAE3B,EACA8C,qBAAsB,SAAUh1B,EAAalB,EAAS/nI,EAAK6oI,GACzD,IAAIriN,EAAQyiN,EAAY7oI,UAAU55E,MAClCA,EAAMu3O,UAAS,SAAUttL,GACvB8qL,EAAY9qL,EAAM0qL,EACpB,IACA30O,EAAM22O,UAAS,SAAUnnL,GACvBulL,EAAYvlL,EAAMolL,EACpB,GACF,EACAsB,2BAA4B,SAAUxF,EAAagD,GACjD,IAAIz+P,EAAOpG,MAEX,SAAUyP,IACRoyP,EAAYpyP,MAAK,SAAU2uI,GACzBh4I,EAAK4zP,aAAa5zP,EAAKq0P,SACtBr0P,EAAKmhQ,YAAcnpH,KAAaymH,EAAkBz+P,EAAKghQ,eAAiBjjP,WAAW1U,EAAM,IAAMA,IAClG,GACD,EALD,EAMF,EACA03P,kBAAmB,SAAUvzB,EAAalB,EAAS/nI,GACjD,IAAIk+J,EAAa7oQ,KAAK4mQ,YAClBkC,EAAiB9oQ,KAAK6mQ,gBACtB3rN,EAAQl7C,KAAKk7C,MACjB2tN,EAAWE,mBAAkB,SAAU9iQ,EAAG6Z,EAAG6e,GAC3C,IAAI1B,EAAOie,EAAM8tN,kBAEjB,OADA/rO,EAAKgsO,eAAe/tN,EAAMmsB,WACnBpqC,EAAKmxN,QAAQtuO,EAAG6e,KAAO6mO,EAAoBv/P,EAAG0kG,EAAKipI,EAC5D,IAE0C,SAAtCA,EAAYS,iBAAiB7vO,MAKjCqkQ,EAAWK,OAAOt1B,EAAY1wO,IAAI,SAClC4lQ,EAAep0B,UAAYd,EAAY1wO,IAAI,cAC3C4lQ,EAAe1rL,KAAOw2J,EAAYS,iBAAiBO,UACnDi0B,EAAW7sL,IAAI,OAAOA,IAAI,QAAQvY,GAAG,OAAO,SAAUx9D,GACpDq/P,EAAW6D,gBAAgBL,EAAgB7iQ,EAAE0/D,GAAI1/D,EAAE2/D,IACnD+kC,EAAIi9J,eAAe,CACjB7zB,SAAUH,EAAYpqO,GACtBhF,KAAM,YACNmhE,GAAI1/D,EAAE0/D,GACNC,GAAI3/D,EAAE2/D,IAEV,IAAGnC,GAAG,QAAQ,SAAUx9D,GACtBq/P,EAAW8D,iBAAiBN,EAAgB7iQ,EAAEowB,MAAOpwB,EAAEkvO,QAASlvO,EAAEovO,SAClE1qI,EAAIi9J,eAAe,CACjB7zB,SAAUH,EAAYpqO,GACtBhF,KAAM,YACN44E,KAAMn3E,EAAEowB,MACR8+M,QAASlvO,EAAEkvO,QACXE,QAASpvO,EAAEovO,UAGbr1O,KAAKknQ,0BAELzB,EAAW7xB,EAAYkwB,WAAY6B,EAAmB/xB,IAEtD5zO,KAAK8mQ,UAAU9M,cACjB,GAAGh6P,OA9BD6oQ,EAAWQ,SA+Bf,EACAnC,wBAAyB,WACvB,IAAItzB,EAAc5zO,KAAKy6P,OACnBx7O,EAAO20N,EAAY7oI,UACnBu+J,EAAY3D,EAAmB/xB,GAC/B21B,EAAW,CAACD,EAAWA,GAC3BrqP,EAAKw8N,mBAAkB,SAAU75O,EAAIulG,GACnCvlG,EAAGi1B,KAAK,QAAS0yO,EACnB,GACF,EACAvP,aAAc,SAAUpmB,GACtB6xB,EAAW7xB,EAAYkwB,WAAY6B,EAAmB/xB,IAEtD5zO,KAAK65P,YAAYG,eAEjBh6P,KAAK8mQ,UAAU9M,cACjB,EACAp9K,OAAQ,SAAU81J,EAAS/nI,GACzB3qG,KAAK65P,aAAe75P,KAAK65P,YAAYj9K,SACrC58E,KAAK8mQ,WAAa9mQ,KAAK8mQ,UAAUlqL,QACnC,IAGFz7E,EAAOD,QAAUusB,C,iCCrYjB,IAAI+7O,EAAYhhP,EAAQ,OAEpBihP,EAAOjhP,EAAQ,OAEfk9O,EAAel9O,EAAQ,OAEvBkhP,EAAgBhE,EAAagE,cAoB7Bl5H,EAAK,GACLC,EAAK,GACLk5H,EAAK,GACLC,EAAcJ,EAAUI,YACxBC,EAAeJ,EAAKliL,WACpBuiL,EAAU3jQ,KAAK6iB,IAEnB,SAAS+gP,EAAqBC,EAAav6N,EAAQpF,GASjD,IARA,IAIIhgB,EAJAioD,EAAK03L,EAAY,GACjBljO,EAAKkjO,EAAY,GACjBjjO,EAAKijO,EAAY,GACjB98O,EAAI2lE,IAEJo3K,EAAe5/N,EAASA,EACxByD,EAAW,GAENn+B,EAAK,GAAKA,GAAM,GAAKA,GAAM,GAAK,CACvC6gI,EAAG,GAAKo5H,EAAYt3L,EAAG,GAAIxrC,EAAG,GAAIC,EAAG,GAAIp3B,GACzC6gI,EAAG,GAAKo5H,EAAYt3L,EAAG,GAAIxrC,EAAG,GAAIC,EAAG,GAAIp3B,GACzC,IAAIi9F,EAAOk9J,EAAQD,EAAar5H,EAAI/gG,GAAUw6N,GAE1Cr9J,EAAO1/E,IACTA,EAAI0/E,EACJviF,EAAI1a,EAER,CAIA,IAAK,IAAI3L,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAE3B,IAAIsD,EAAO+iB,EAAIyjB,EAGf2iG,EAAG,GAAKm5H,EAAYt3L,EAAG,GAAIxrC,EAAG,GAAIC,EAAG,GAAI1c,GACzComH,EAAG,GAAKm5H,EAAYt3L,EAAG,GAAIxrC,EAAG,GAAIC,EAAG,GAAI1c,GACzCs/O,EAAG,GAAKC,EAAYt3L,EAAG,GAAIxrC,EAAG,GAAIC,EAAG,GAAIz/B,GACzCqiQ,EAAG,GAAKC,EAAYt3L,EAAG,GAAIxrC,EAAG,GAAIC,EAAG,GAAIz/B,GACrCslG,EAAOi9J,EAAap5H,EAAIhhG,GAAUw6N,EAEtC,GAAIH,EAAQl9J,GAAQ,IAClB,MAIF,IAAIs9J,EAAWL,EAAaF,EAAIl6N,GAAUw6N,EAC1Cn8N,GAAY,EAER8+D,EAAO,EACLs9J,GAAY,EACd7/O,GAAQyjB,EAERzjB,GAAQyjB,EAGNo8N,GAAY,EACd7/O,GAAQyjB,EAERzjB,GAAQyjB,CAGd,CAEA,OAAOzjB,CACT,CAGA,SAASoD,EAAS0D,EAAOkF,GACvB,IAAI8zO,EAAO,GACPC,EAAqBZ,EAAUY,mBAC/B5zG,EAAM,CAAC,GAAI,GAAI,IACf6zG,EAAO,CAAC,GAAI,IACZriP,EAAI,GACRqO,GAAS,EACTlF,EAAM22O,UAAS,SAAUnnL,EAAMwmB,GAC7B,IAAIu1J,EAAa/7K,EAAKw3J,YAClBmyB,EAAa3pL,EAAK28J,UAAU,cAC5BitB,EAAW5pL,EAAK28J,UAAU,YAEzBof,EAAW8N,aACd9N,EAAW8N,WAAa,CAACf,EAAKn1O,MAAMooO,EAAW,IAAK+M,EAAKn1O,MAAMooO,EAAW,KAEtEA,EAAW,IACbA,EAAW8N,WAAWvmQ,KAAKwlQ,EAAKn1O,MAAMooO,EAAW,MAIrD,IAAI+N,EAAiB/N,EAAW8N,WAEhC,GAAqB,MAAjB9N,EAAW,GAAY,CAKzB,GAJA+M,EAAK9+K,KAAK6rE,EAAI,GAAIi0G,EAAe,IACjChB,EAAK9+K,KAAK6rE,EAAI,GAAIi0G,EAAe,IACjChB,EAAK9+K,KAAK6rE,EAAI,GAAIi0G,EAAe,IAE7BH,GAA6B,SAAfA,EAAuB,CACvC,IAAI1pB,EAAa8oB,EAAc/oL,EAAK+5C,OAChCrwG,EAAI0/O,EAAqBvzG,EAAKi0G,EAAe,GAAI7pB,EAAavqN,GAElE+zO,EAAmB5zG,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAInsI,EAAG8/O,GACvD3zG,EAAI,GAAG,GAAK2zG,EAAK,GACjB3zG,EAAI,GAAG,GAAK2zG,EAAK,GACjBC,EAAmB5zG,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAInsI,EAAG8/O,GACvD3zG,EAAI,GAAG,GAAK2zG,EAAK,GACjB3zG,EAAI,GAAG,GAAK2zG,EAAK,EACnB,CAEA,GAAII,GAAyB,SAAbA,EAAqB,CAC/B3pB,EAAa8oB,EAAc/oL,EAAKg6C,OAChCtwG,EAAI0/O,EAAqBvzG,EAAKi0G,EAAe,GAAI7pB,EAAavqN,GAElE+zO,EAAmB5zG,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAInsI,EAAG8/O,GACvD3zG,EAAI,GAAG,GAAK2zG,EAAK,GACjB3zG,EAAI,GAAG,GAAK2zG,EAAK,GACjBC,EAAmB5zG,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAInsI,EAAG8/O,GACvD3zG,EAAI,GAAG,GAAK2zG,EAAK,GACjB3zG,EAAI,GAAG,GAAK2zG,EAAK,EACnB,CAGAV,EAAK9+K,KAAK+xK,EAAW,GAAIlmG,EAAI,IAC7BizG,EAAK9+K,KAAK+xK,EAAW,GAAIlmG,EAAI,IAC7BizG,EAAK9+K,KAAK+xK,EAAW,GAAIlmG,EAAI,GAC/B,KACK,CAMD,GALAizG,EAAK9+K,KAAK0/K,EAAK,GAAII,EAAe,IAClChB,EAAK9+K,KAAK0/K,EAAK,GAAII,EAAe,IAClChB,EAAK7+K,IAAI5iE,EAAGqiP,EAAK,GAAIA,EAAK,IAC1BZ,EAAKvqP,UAAU8I,EAAGA,GAEdsiP,GAA6B,SAAfA,EAAuB,CACnC1pB,EAAa8oB,EAAc/oL,EAAK+5C,OACpC+uI,EAAKiB,YAAYL,EAAK,GAAIA,EAAK,GAAIriP,EAAG44N,EAAavqN,EACrD,CAEA,GAAIk0O,GAAyB,SAAbA,EAAqB,CAC/B3pB,EAAa8oB,EAAc/oL,EAAKg6C,OACpC8uI,EAAKiB,YAAYL,EAAK,GAAIA,EAAK,GAAIriP,GAAI44N,EAAavqN,EACtD,CAEAozO,EAAK9+K,KAAK+xK,EAAW,GAAI2N,EAAK,IAC9BZ,EAAK9+K,KAAK+xK,EAAW,GAAI2N,EAAK,GAChC,CACJ,GACF,CAEAlpQ,EAAOD,QAAUusB,C,oBCzJjB,SAASA,EAASilN,GAChB,IAAIi4B,EAAej4B,EAAQk4B,eAAe,CACxCl3B,SAAU,WAGPi3B,GAAiBA,EAAa3oQ,QAInC0wO,EAAQkY,iBAAiB,SAAS,SAAUigB,GAC1C,IAAItG,EAAiBsG,EAAYpI,oBAC7BtxO,EAAQ05O,EAAY/G,WACpB7kP,EAAOkS,EAAMlS,KACb6rP,EAAgBvG,EAAe5G,SAAS4G,EAAezwB,SAC3D70N,EAAK8rP,YAAW,SAAU5jK,GACxB,IAAIoqJ,EAAQtyO,EAAKo7N,aAAalzI,GAC1Bm9J,EAAW/S,EAAM7T,WAAW,YAEhC,GAAgB,MAAZ4mB,EAAkB,CACI,kBAAbA,IACTA,EAAWwG,EAAcxG,IAI3B,IAAK,IAAItgQ,EAAI,EAAGA,EAAI2mQ,EAAa3oQ,OAAQgC,IACvC,IAAK2mQ,EAAa3mQ,GAAGs2M,WAAWgqD,GAC9B,OAAO,CAGb,CAEA,OAAO,CACT,GACF,GAAGtkQ,KACL,CAEAmB,EAAOD,QAAUusB,C,oBCpCjB,SAASA,EAASilN,GAChB,IAAIs4B,EAAe,CAAC,EACpBt4B,EAAQkY,iBAAiB,SAAS,SAAUhX,GAC1C,IAAI2wB,EAAiB3wB,EAAY6uB,oBAC7BxjP,EAAO20N,EAAY7oI,UACnBkgK,EAAqB,CAAC,EAC1B1G,EAAe7sJ,MAAK,SAAUvQ,GAC5B,IAAI1iG,EAAO8/P,EAAezwB,QAAQ3sI,GAElC8jK,EAAmB,MAAQxmQ,GAAQ0iG,EACnC,IAAIizI,EAAYmqB,EAAelqB,aAAalzI,GACxCv2E,EAAQwpN,EAAUl3O,IAAI,oBAAsB0wO,EAAYs3B,oBAAoBzmQ,EAAMumQ,GACtFzG,EAAe3X,cAAczlJ,EAAK,QAASv2E,GAG3C,IAFA,IAAIu6O,EAAgB,CAAC,UAAW,SAAU,aAAc,oBAE/CnnQ,EAAI,EAAGA,EAAImnQ,EAAcnpQ,OAAQgC,IAAK,CAC7C,IAAIu7O,EAAYnF,EAAUsD,WAAWytB,EAAcnnQ,IAAI,GAEtC,MAAbu7O,GACFglB,EAAe3X,cAAczlJ,EAAKgkK,EAAcnnQ,GAAIu7O,EAExD,CACF,IAEIglB,EAAeh8O,SACjBtJ,EAAKy4F,MAAK,SAAUvQ,GAClB,IAAIoqJ,EAAQtyO,EAAKo7N,aAAalzI,GAC1Bm9J,EAAW/S,EAAM7T,WAAW,YAEhC,GAAgB,MAAZ4mB,EAAkB,CACI,kBAAbA,IACTA,EAAW2G,EAAmB,MAAQ3G,IAKxC,IAFA,IAAI6G,EAAgB,CAAC,QAAS,UAAW,SAAU,aAAc,oBAExDnnQ,EAAI,EAAGA,EAAImnQ,EAAcnpQ,OAAQgC,IACe,MAAnDib,EAAKo+N,cAAcl2I,EAAKgkK,EAAcnnQ,IAAI,IAC5Cib,EAAK2tO,cAAczlJ,EAAKgkK,EAAcnnQ,GAAIugQ,EAAelnB,cAAcinB,EAAU6G,EAAcnnQ,IAGrG,CACF,GAEJ,GACF,CAEA7C,EAAOD,QAAUusB,C,wBCjEjB,IAAI29O,EAAwB5iP,EAAQ,OAEhCo5O,EAAiBwJ,EAAsBxJ,eAoB3C,SAASn0O,EAASilN,GAChBA,EAAQkY,iBAAiB,SAAS,SAAUhX,GACR,aAA9BA,EAAY1wO,IAAI,WAClB0+P,EAAehuB,EAAa,aAEhC,GACF,CAEAzyO,EAAOD,QAAUusB,C,wBC9BjB,IAAIg8O,EAAOjhP,EAAQ,OAEfk9O,EAAel9O,EAAQ,OAEvBkhP,EAAgBhE,EAAagE,cAC7B/D,EAAqBD,EAAaC,mBAElCrzB,EAAS9pN,EAAQ,OAEjB65O,EAA2B75O,EAAQ,OAEnC6iP,EAAsBhJ,EAAyBgJ,oBAoB/CtwO,EAAK50B,KAAK40B,GACVuwO,EAAqB,GAwBzB,SAAS1J,EAAehuB,EAAa23B,GACnC,IAAI14B,EAAWe,EAAYS,iBAE3B,IAAIxB,GAA8B,SAAlBA,EAASruO,KAAzB,CAIA,IAAIy4B,EAAO41M,EAASm2B,kBAChB/F,EAAWrvB,EAAY7oI,UACvB55E,EAAQ8xO,EAAS9xO,MACjBjC,EAAK+N,EAAKuL,MAAQ,EAAIvL,EAAKnd,EAC3BqP,EAAK8N,EAAKwL,OAAS,EAAIxL,EAAK0B,EAC5B5R,EAAI5mB,KAAKyI,IAAIquB,EAAKuL,MAAOvL,EAAKwL,QAAU,EACxClgB,EAAQ06O,EAAS16O,QACrB06O,EAAS1T,UAAU,CACjBrgO,GAAIA,EACJC,GAAIA,IAGD5G,IAILijP,EAAoBD,GAAS33B,EAAaf,EAAU1hN,EAAO8xO,EAAUl2O,EAAGmC,EAAIC,EAAI5G,GAEhF4I,EAAM22O,UAAS,SAAUnnL,EAAM1+E,GAC7B,IAGIwpQ,EAHAC,EAAYp5B,EAAO8jB,UAAUz1K,EAAK64J,WAAWt2O,IAAI,uBAAwBmoQ,EAAoB1qL,EAAMizJ,EAAa3xO,GAAQ,GACxH6kC,EAAK2iO,EAAKn1O,MAAMqsD,EAAK+5C,MAAMy9G,aAC3BpxM,EAAK0iO,EAAKn1O,MAAMqsD,EAAKg6C,MAAMw9G,aAE3BwzB,GAAO7kO,EAAG,GAAKC,EAAG,IAAM,EACxB6kO,GAAO9kO,EAAG,GAAKC,EAAG,IAAM,GAEvB2kO,IACHA,GAAa,EACbD,EAAM,CAACv8O,EAAKw8O,EAAYC,GAAO,EAAID,GAAYv8O,EAAKu8O,EAAYE,GAAO,EAAIF,KAG7E/qL,EAAK4uK,UAAU,CAACzoN,EAAIC,EAAI0kO,GAC1B,IAlCA,CAmCF,CAEA,IAAID,EAAsB,CACxB1pQ,MAAO,SAAU8xO,EAAaf,EAAU1hN,EAAO8xO,EAAUl2O,EAAGmC,EAAIC,EAAI5G,GAClE,IAAIg6B,EAAQ,EACRh3B,EAAM03O,EAASzH,OAAO,SACtBqQ,EAAsB,EAAV1lQ,KAAK40B,IAAUxP,GAAOhD,GACtC4I,EAAMu3O,UAAS,SAAUttL,GACvB,IAAIt5E,EAAQs5E,EAAK4oB,SAAS,SACtB8nK,EAAaD,GAAatgP,EAAMzpB,EAAQ,GAAK,EACjDygD,GAASupN,EACT1wL,EAAKm0K,UAAU,CAACxiO,EAAI5mB,KAAKmgC,IAAIic,GAASrzB,EAAInC,EAAI5mB,KAAKkgC,IAAIkc,GAASpzB,IAChEozB,GAASupN,CACX,GACF,EACAlrB,WAAY,SAAUhN,EAAaf,EAAU1hN,EAAO8xO,EAAUl2O,EAAGmC,EAAIC,EAAI5G,GACvE,IAAIwjP,EAAY,EAChBT,EAAmBtpQ,OAASumB,EAC5B,IAAI+gP,EAAY3D,EAAmB/xB,GACnCziN,EAAMu3O,UAAS,SAAUttL,GACvB,IAAIwlK,EAAa8oB,EAActuL,GAG/BrsE,MAAM6xO,KAAgBA,EAAa,GACnCA,EAAa,IAAMA,EAAa,GAChCA,GAAc0oB,EACd,IAAI0C,EAAmB7lQ,KAAK8lQ,KAAKrrB,EAAa,EAAI7zN,GAElDhe,MAAMi9P,KAAsBA,EAAmBjxO,EAAK,GACpDuwO,EAAmBlwL,EAAKy4J,WAAam4B,EACrCD,GAAgC,EAAnBC,CACf,IACA,IAAIE,GAAoB,EAAInxO,EAAKgxO,GAAaxjP,EAAQ,EAClDg6B,EAAQ,EACZpxB,EAAMu3O,UAAS,SAAUttL,GACvB,IAAI0wL,EAAaI,EAAmBZ,EAAmBlwL,EAAKy4J,WAC5DtxL,GAASupN,EACT1wL,EAAKm0K,UAAU,CAACxiO,EAAI5mB,KAAKmgC,IAAIic,GAASrzB,EAAInC,EAAI5mB,KAAKkgC,IAAIkc,GAASpzB,IAChEozB,GAASupN,CACX,GACF,GAEF5qQ,EAAQ0gQ,eAAiBA,C,iCC1IzB,IAAIuK,EAAO3jP,EAAQ,OAEf4jP,EAAU5jP,EAAQ,MAElB+0O,EAAgB6O,EAAQ7O,cAExB8O,EAAO7jP,EAAQ,MAqBnB,SAAS80O,EAAY1pB,EAAajpI,EAAK2hK,GACrC,IAAIvhO,EAAS6oM,EAAY4pB,qBAEzB,OADAzyN,EAAOuhO,OAASA,EACT/O,EAAcxyN,EAAQ,CAC3BvC,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,aAEhB,CAEA,SAAS70N,EAASilN,EAAS/nI,GACzB,IAAI4hK,EAAW,GA+Cf,OA9CA75B,EAAQkY,iBAAiB,SAAS,SAAUhX,GAC1C,IAAI44B,EAAe54B,EAAY1wO,IAAI,oBAEnC,IAAKspQ,GAAiC,SAAjBA,EAAyB,CAC5C,IAAIvtP,EAAO20N,EAAY7oI,UACnBhB,EAAY9qF,EAAK0+O,UAAS,SAAUx2J,GACtC,IAAIizI,EAAYn7N,EAAKo7N,aAAalzI,GAClC,MAAO,EAAEizI,EAAUl3O,IAAI,MAAOk3O,EAAUl3O,IAAI,KAC9C,IACI0L,EAAM,GACND,EAAM,GACV09P,EAAKI,WAAW1iK,EAAWn7F,EAAKD,GAE5BA,EAAI,GAAKC,EAAI,KAAO,IACtBD,EAAI,IAAM,EACVC,EAAI,IAAM,GAGRD,EAAI,GAAKC,EAAI,KAAO,IACtBD,EAAI,IAAM,EACVC,EAAI,IAAM,GAGZ,IAAI09P,GAAU39P,EAAI,GAAKC,EAAI,KAAOD,EAAI,GAAKC,EAAI,IAE3CmvP,EAAWT,EAAY1pB,EAAajpI,EAAK2hK,GAEzCv9P,MAAMu9P,KACR19P,EAAM,CAACmvP,EAASj+O,EAAGi+O,EAASp/N,GAC5BhwB,EAAM,CAACovP,EAASj+O,EAAIi+O,EAASv1N,MAAOu1N,EAASp/N,EAAIo/N,EAASt1N,SAG5D,IAAIikO,EAAU/9P,EAAI,GAAKC,EAAI,GACvB+9P,EAAWh+P,EAAI,GAAKC,EAAI,GACxBovP,EAAYD,EAASv1N,MACrBy1N,EAAaF,EAASt1N,OACtBmkO,EAAeh5B,EAAYS,iBAAmB,IAAI83B,EACtDS,EAAal4B,UAAYd,EAAY1wO,IAAI,cACzC0pQ,EAAaC,gBAAgBj+P,EAAI,GAAIA,EAAI,GAAI89P,EAASC,GACtDC,EAAaE,YAAY/O,EAASj+O,EAAGi+O,EAASp/N,EAAGq/N,EAAWC,GAE5D2O,EAAat4B,UAAUV,EAAY1wO,IAAI,WACvC0pQ,EAAar4B,QAAQX,EAAY1wO,IAAI,SACrCqpQ,EAAStoQ,KAAK2oQ,EAChB,CACF,IACOL,CACT,CAEAprQ,EAAOD,QAAUusB,C,oBCrEjB,SAASvO,EAAUvc,GAKjB,OAJMA,aAAakE,QACjBlE,EAAI,CAACA,EAAGA,IAGHA,CACT,CAEA,SAAS8qB,EAASilN,GAChBA,EAAQkY,iBAAiB,SAAS,SAAUhX,GAC1C,IAAIziN,EAAQyiN,EAAYkwB,WACpB57F,EAAW0rE,EAAYmwB,cACvB3gB,EAAalkO,EAAU00N,EAAY1wO,IAAI,eACvC09O,EAAa1hO,EAAU00N,EAAY1wO,IAAI,mBACvC6pQ,EAAa,kBAAkBzpQ,MAAM,KACrC0pQ,EAAe,oBAAoB1pQ,MAAM,KAC7C4kK,EAAS8tE,UAAU,aAAcoN,GAAcA,EAAW,IAC1Dl7E,EAAS8tE,UAAU,WAAYoN,GAAcA,EAAW,IACxDl7E,EAAS8tE,UAAU,iBAAkB4K,GAAcA,EAAW,IAC9D14E,EAAS8tE,UAAU,eAAgB4K,GAAcA,EAAW,IAC5D14E,EAAS8tE,UAAU,QAASpC,EAAY1wO,IAAI6pQ,IAC5C7kG,EAAS8tE,UAAU,UAAWpC,EAAY1wO,IAAI8pQ,IAC9C9kG,EAASxwD,MAAK,SAAUvQ,GACtB,IAAIizI,EAAYlyE,EAASmyE,aAAalzI,GAClCxmB,EAAOxvD,EAAM+yO,eAAe/8J,GAC5Bi8I,EAAalkO,EAAUk7N,EAAUsD,WAAW,UAAU,IACtDkD,EAAa1hO,EAAUk7N,EAAUsD,WAAW,cAAc,IAE1D9sN,EAAQwpN,EAAUl3O,IAAI6pQ,GACtBzzO,EAAU8gN,EAAUl3O,IAAI8pQ,GAE5B,OAAQp8O,GACN,IAAK,SACHA,EAAQ+vD,EAAK+5C,MAAM4iH,UAAU,SAC7B,MAEF,IAAK,SACH1sN,EAAQ+vD,EAAKg6C,MAAM2iH,UAAU,SAC7B,MAGJ8F,EAAW,IAAMziK,EAAKq1J,UAAU,aAAcoN,EAAW,IACzDA,EAAW,IAAMziK,EAAKq1J,UAAU,WAAYoN,EAAW,IACvDxC,EAAW,IAAMjgK,EAAKq1J,UAAU,iBAAkB4K,EAAW,IAC7DA,EAAW,IAAMjgK,EAAKq1J,UAAU,eAAgB4K,EAAW,IAC3DjgK,EAAKq1J,UAAU,QAASplN,GACxB+vD,EAAKq1J,UAAU,UAAW18M,EAC5B,GACF,GACF,CAEAn4B,EAAOD,QAAUusB,C,wBCrEjB,IAAIg8O,EAAOjhP,EAAQ,OA8BfkiP,EAAcjB,EAAKiB,YAIvB,SAAS7I,EAAY/iL,EAAOqB,EAAOgkB,GAiBjC,IAhBA,IAAIlnE,EAAOknE,EAAKlnE,KACZuL,EAAQvL,EAAKuL,MACbC,EAASxL,EAAKwL,OACdgH,EAAS,CAACxS,EAAKnd,EAAI0oB,EAAQ,EAAGvL,EAAK0B,EAAI8J,EAAS,GAEhD27D,EAA0B,MAAhBD,EAAKC,QAAkB,GAAMD,EAAKC,QAWvCpgG,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAAK,CACrC,IAAI+b,EAAI++D,EAAM96E,GAET+b,EAAE89B,IACL99B,EAAE89B,EAAI4rN,EAAKziQ,OAAOwhC,GAASriC,KAAKgJ,SAAW,IAAOsgC,EAAO,GAAIhH,GAAUtiC,KAAKgJ,SAAW,IAAOsgC,EAAO,KAGvG1vB,EAAEktP,GAAKxD,EAAKn1O,MAAMvU,EAAE89B,GACpB99B,EAAEogE,MAAQ,IACZ,CAKA,IAAI+sL,EAAmC,MAAjB/oK,EAAKssE,SAAmB,GAAMtsE,EAAKssE,SACrDA,EAAWy8F,EACf,MAAO,CACL5F,OAAQ,WACN72F,EAA6B,GAAlBy8F,CACb,EACA1F,SAAU,SAAUrgK,GAClBroB,EAAMqoB,GAAKgmK,OAAQ,CACrB,EACA1F,WAAY,SAAUtgK,GACpBroB,EAAMqoB,GAAKgmK,OAAQ,CACrB,EAQA19P,KAAM,SAAUkpE,GAId,IAHA,IAAIy0L,EAAM,GACNC,EAAOvuL,EAAM98E,OAERgC,EAAI,EAAGA,EAAIm8E,EAAMn+E,OAAQgC,IAAK,CACrC,IAAIiC,EAAIk6E,EAAMn8E,GAEd,IAAIiC,EAAEqnQ,kBAAN,CAIA,IAAI73H,EAAKxvI,EAAEwvI,GACPnF,EAAKrqI,EAAEqqI,GACXm5H,EAAK7+K,IAAIwiL,EAAK98H,EAAGzyF,EAAG43F,EAAG53F,GACvB,IAAI3wB,EAAIu8O,EAAKjyP,IAAI41P,GAAOnnQ,EAAEinB,EACtBrjB,EAAIymI,EAAGzmI,GAAK4rI,EAAG5rI,EAAIymI,EAAGzmI,GAEtBkF,MAAMlF,KACRA,EAAI,GAGN4/P,EAAKvqP,UAAUkuP,EAAKA,IACnB33H,EAAG03H,OAASzC,EAAYj1H,EAAG53F,EAAG43F,EAAG53F,EAAGuvN,EAAKvjQ,EAAIqjB,EAAIujJ,IACjDngC,EAAG68H,OAASzC,EAAYp6H,EAAGzyF,EAAGyyF,EAAGzyF,EAAGuvN,IAAO,EAAIvjQ,GAAKqjB,EAAIujJ,EAdzD,CAeF,CAGA,IAASzsK,EAAI,EAAGA,EAAIqpQ,EAAMrpQ,IAAK,CAC7B,IAAI+b,EAAI++D,EAAM96E,GAET+b,EAAEotP,QACL1D,EAAK7+K,IAAIwiL,EAAK39N,EAAQ1vB,EAAE89B,GAIxB6sN,EAAY3qP,EAAE89B,EAAG99B,EAAE89B,EAAGuvN,EAAKhpK,EAAUqsE,GAEzC,CAIA,IAASzsK,EAAI,EAAGA,EAAIqpQ,EAAMrpQ,IACxB,CAAIyxI,EAAK32D,EAAM96E,GAEf,IAFA,IAESiH,EAAIjH,EAAI,EAAGiH,EAAIoiQ,EAAMpiQ,IAAK,CAC7BqlI,EAAKxxD,EAAM7zE,GACfw+P,EAAK7+K,IAAIwiL,EAAK98H,EAAGzyF,EAAG43F,EAAG53F,GACnB3wB,EAAIu8O,EAAKjyP,IAAI41P,GAEP,IAANlgP,IAEFu8O,EAAKj3P,IAAI46P,EAAKjnQ,KAAKgJ,SAAW,GAAKhJ,KAAKgJ,SAAW,IACnD+d,EAAI,GAGN,IAAIqgP,GAAW93H,EAAG+3H,IAAMl9H,EAAGk9H,KAAOtgP,EAAIA,GACrCuoH,EAAG03H,OAASzC,EAAYj1H,EAAGw3H,GAAIx3H,EAAGw3H,GAAIG,EAAKG,IAC3Cj9H,EAAG68H,OAASzC,EAAYp6H,EAAG28H,GAAI38H,EAAG28H,GAAIG,GAAMG,EAC/C,CAhBiB,CAmBnB,IAAIvlP,EAAI,GAER,IAAShkB,EAAI,EAAGA,EAAIqpQ,EAAMrpQ,IAAK,CACzB+b,EAAI++D,EAAM96E,GAET+b,EAAEotP,QACL1D,EAAK7+K,IAAI5iE,EAAGjI,EAAE89B,EAAG99B,EAAEktP,IACnBvC,EAAY3qP,EAAE89B,EAAG99B,EAAE89B,EAAG71B,EAAGyoJ,GACzBg5F,EAAK9+K,KAAK5qE,EAAEktP,GAAIltP,EAAE89B,GAEtB,CAEA4yH,GAAsB,KACtB93F,GAAMA,EAAGmG,EAAOqB,EAAOswF,EAAW,IACpC,EAEJ,CAEAvvK,EAAQ2gQ,YAAcA,C,wBCnKtB,IAAI4L,EAAejlP,EAAQ,OAEvBq5O,EAAc4L,EAAa5L,YAE3B6L,EAAsBllP,EAAQ,OAE9Bm5O,EAAe+L,EAAoB/L,aAEnCyJ,EAAwB5iP,EAAQ,OAEhCo5O,EAAiBwJ,EAAsBxJ,eAEvCngB,EAAUj5N,EAAQ,OAElB60O,EAAY5b,EAAQ4b,UAEpBoM,EAAOjhP,EAAQ,OAEf8pN,EAAS9pN,EAAQ,OAEjB65O,EAA2B75O,EAAQ,OAEnC6iP,EAAsBhJ,EAAyBgJ,oBAoBnD,SAAS59O,EAASilN,GAChBA,EAAQkY,iBAAiB,SAAS,SAAUigB,GAC1C,IAAIh4B,EAAWg4B,EAAYx2B,iBAE3B,IAAIxB,GAA8B,SAAlBA,EAASruO,KAIzB,GAAkC,UAA9BqmQ,EAAY3nQ,IAAI,UAAuB,CACzC,IAAIyqQ,EAAkB9C,EAAY8C,iBAAmB,CAAC,EAClDx8O,EAAQ05O,EAAY/G,WACpBb,EAAW9xO,EAAMlS,KACjBipJ,EAAW/2I,EAAM+2I,SACjB0lG,EAAa/C,EAAYrxB,SAAS,SAClCkrB,EAAakJ,EAAW1qQ,IAAI,cAE5B2nQ,EAAY8C,gBACd1K,EAASvrJ,MAAK,SAAUvQ,GACtB,IAAI39F,EAAKy5P,EAAS4K,MAAM1mK,GACxB87J,EAAS9W,cAAchlJ,EAAKwmK,EAAgBnkQ,IAAO,CAACgiF,IAAKA,KAC3D,IACUk5K,GAA6B,SAAfA,EAEA,aAAfA,GACT9C,EAAeiJ,EAAa,SAF5BlJ,EAAakJ,GAKf,IAAIiD,EAAiB7K,EAAS7E,cAAc,SACxC2P,EAAiB7lG,EAASk2F,cAAc,SAExCuG,EAAYiJ,EAAW1qQ,IAAI,aAC3B0hQ,EAAagJ,EAAW1qQ,IAAI,cAE3BovO,EAAOxrO,QAAQ69P,KAClBA,EAAY,CAACA,EAAWA,IAGrBryB,EAAOxrO,QAAQ89P,KAClBA,EAAa,CAACA,EAAYA,IAI5BA,EAAa,CAACA,EAAW,GAAIA,EAAW,IACxC,IAAI9lL,EAAQmkL,EAAStF,SAAS,SAAS,SAAU77P,EAAOqlG,GACtD,IAAIn3F,EAAQizP,EAASnmB,cAAc31I,GAC/BqmK,EAAMnQ,EAAUv7P,EAAOgsQ,EAAgBnJ,GAM3C,OAJI51P,MAAMy+P,KACRA,GAAO7I,EAAU,GAAKA,EAAU,IAAM,GAGjC,CACL96P,EAAG2jQ,EACHA,IAAKA,EACLL,MAAOlK,EAAS5oB,aAAalzI,GAAKjkG,IAAI,SACtC26C,GAAI7tC,GAASjB,MAAMiB,EAAM,KAAOjB,MAAMiB,EAAM,IAAM,KAAOA,EAE7D,IACImwE,EAAQ+nF,EAASy1F,SAAS,SAAS,SAAU77P,EAAOqlG,GACtD,IAAIxmB,EAAOxvD,EAAM+yO,eAAe/8J,GAC5Bj6E,EAAImwO,EAAUv7P,EAAOisQ,EAAgBnJ,GAErC71P,MAAMme,KACRA,GAAK03O,EAAW,GAAKA,EAAW,IAAM,GAGxC,IAAIoJ,EAAYrtL,EAAK64J,WACjBkyB,EAAYp5B,EAAO8jB,UAAU4X,EAAU9qQ,IAAI,wBAAyBmoQ,EAAoB1qL,EAAMkqL,EAAa1jK,GAAK,GAAO,GAC3H,MAAO,CACLsuC,GAAI32D,EAAM6B,EAAK+5C,MAAMm5G,WACrBvjG,GAAIxxD,EAAM6B,EAAKg6C,MAAMk5G,WACrB3mN,EAAGA,EACHw+O,UAAWA,EACX4B,kBAAmBU,EAAU9qQ,IAAI,qBAErC,IAEI+5B,GADA41M,EAAWg4B,EAAYx2B,iBAChBxB,EAASm2B,mBAChBiF,EAAgBpM,EAAY/iL,EAAOqB,EAAO,CAC5CljD,KAAMA,EACNmnE,QAASwpK,EAAW1qQ,IAAI,WACxButK,SAAUm9F,EAAW1qQ,IAAI,cAEvBgrQ,EAAUD,EAAcx+P,KAE5Bw+P,EAAcx+P,KAAO,SAAUkpE,GAC7B,IAAK,IAAI30E,EAAI,EAAGwK,EAAIswE,EAAM98E,OAAQgC,EAAIwK,EAAGxK,IACnC86E,EAAM96E,GAAGmpQ,OAEX1D,EAAK9+K,KAAK7L,EAAM96E,GAAG65C,EAAG1sB,EAAMs3O,eAAezkQ,GAAGm0O,aAIlD+1B,GAAQ,SAAUpvL,EAAOqB,EAAOi+D,GAC9B,IAAK,IAAIp6I,EAAI,EAAGwK,EAAIswE,EAAM98E,OAAQgC,EAAIwK,EAAGxK,IAClC86E,EAAM96E,GAAGmpQ,OACZh8O,EAAMs3O,eAAezkQ,GAAGurP,UAAUzwK,EAAM96E,GAAG65C,GAG7C8vN,EAAgB1K,EAAS4K,MAAM7pQ,IAAM86E,EAAM96E,GAAG65C,EAGhD,IAAS75C,EAAI,EAAGwK,EAAI2xE,EAAMn+E,OAAQgC,EAAIwK,EAAGxK,IAAK,CAC5C,IAAIiC,EAAIk6E,EAAMn8E,GACV28E,EAAOxvD,EAAM+yO,eAAelgQ,GAC5B8iC,EAAK7gC,EAAEwvI,GAAG53F,EACV9W,EAAK9gC,EAAEqqI,GAAGzyF,EACVnyB,EAASi1D,EAAKw3J,YAClBzsN,EAASA,EAASA,EAAOvpB,QAAU,GACnCupB,EAAO,GAAKA,EAAO,IAAM,GACzBA,EAAO,GAAKA,EAAO,IAAM,GACzB+9O,EAAK9+K,KAAKj/D,EAAO,GAAIob,GACrB2iO,EAAK9+K,KAAKj/D,EAAO,GAAIqb,IAEhB9gC,EAAEylQ,YACLhgP,EAAO,GAAK,EAAEob,EAAG,GAAKC,EAAG,IAAM,GAAKD,EAAG,GAAKC,EAAG,IAAM9gC,EAAEylQ,WAAY5kO,EAAG,GAAKC,EAAG,IAAM,GAAKA,EAAG,GAAKD,EAAG,IAAM7gC,EAAEylQ,YAG9G/qL,EAAK4uK,UAAU7jO,EACjB,CAGAitD,GAAMA,EAAGylE,EACX,GACF,EAEAysH,EAAYhJ,YAAcoM,EAC1BpD,EAAY8C,gBAAkBA,EAE9BM,EAAcx+P,MAChB,MAEEo7P,EAAYhJ,YAAc,IAE9B,GACF,CAEA1gQ,EAAOD,QAAUusB,C,wBCnLjB,IAAI0lN,EAAU3qN,EAAQ,OAElBwrN,EAAcxrN,EAAQ,OAEtByrN,EAAsBD,EAAYC,oBAEtCzrN,EAAQ,OAoBR,IAAI8qN,EAAa,CACf9uO,KAAM,YACN6e,MAAO,YACP2T,OAAQ,QAYVm8M,EAAQI,eAAeD,GAAY,SAAUE,EAASd,GACpDA,EAAQe,cAAc,CACpBC,SAAU,SACV7yI,MAAO2yI,IACN,SAAUI,GACX,IAAIf,EAAWe,EAAYS,iBACvBt7J,EAAMk7J,EAAoBpB,EAAUW,GACxCI,EAAYU,WAAaV,EAAYU,UAAUv7J,EAAItpC,QACnDmkM,EAAYW,SAAWX,EAAYW,QAAQx7J,EAAIqE,KACjD,GACF,G,sBCjCA,SAASuoL,EAAmB/xB,GAC1B,IAAIf,EAAWe,EAAYS,iBAE3B,GAAsB,SAAlBxB,EAASruO,KACX,OAAO,EAGT,IAAI2gQ,EAAiBvxB,EAAY7oM,OAAOo6N,eACpCgJ,EAAat7B,EAASx8M,MACtB+3O,EAAYD,GAAcA,EAAW,IAAM,EAE3CE,EAAWx7B,EAAS+B,UACpB00B,GAAa+E,EAAW,GAAKlJ,EAAiB,EAClD,OAAOmE,EAAY8E,CACrB,CAEA,SAAS1E,EAActuL,GACrB,IAAIwlK,EAAaxlK,EAAKkiK,UAAU,cAMhC,OAJIsD,aAAsB/5O,QACxB+5O,GAAcA,EAAW,GAAKA,EAAW,IAAM,IAGzCA,CACV,CAEA1/O,EAAQykQ,mBAAqBA,EAC7BzkQ,EAAQwoQ,cAAgBA,C,iCC7CxB,IAAI95O,EAAQpH,EAAQ,OAEhBkvF,EAAO9nF,EAAM8nF,KAEbg2J,EAAsBllP,EAAQ,OAE9Bm5O,EAAe+L,EAAoB/L,aACnC2M,EAAmBZ,EAAoBY,iBAoB3C,SAAS7gP,EAASilN,EAAS/nI,GACzB+nI,EAAQkY,iBAAiB,SAAS,SAAUhX,GAC1C,IAAIzrI,EAASyrI,EAAY1wO,IAAI,UACzB2vO,EAAWe,EAAYS,iBAE3B,GAAIxB,GAA8B,SAAlBA,EAASruO,KAAiB,CACxC,IAAIya,EAAO20N,EAAY7oI,UACnB6vD,EAAa,GACjBljD,EAAKm7H,EAASj4E,YAAY,SAAUk8F,GAClCl8F,EAAaA,EAAW35J,OAAOge,EAAKysO,aAAaoL,GAAU,GAC7D,IAEA,IAAK,IAAIjjB,EAAY,EAAGA,EAAY50N,EAAKsJ,QAASsrN,IAAa,CAI7D,IAHA,IAAI/xO,EAAQ,GACRw4O,GAAW,EAENt2O,EAAI,EAAGA,EAAI42J,EAAW54J,OAAQgC,IAAK,CAC1C,IAAIgL,EAAMiQ,EAAK/b,IAAI03J,EAAW52J,GAAI6vO,GAE7B9kO,MAAMC,KACTsrO,GAAW,GAGbx4O,EAAMmC,KAAK+K,EACb,CAEIsrO,EACFr7N,EAAKktO,cAActY,EAAWhB,EAASiC,YAAYhzO,IAGnDmd,EAAKktO,cAActY,EAAW,CAACroJ,IAAKA,KAExC,CAEA8iL,EAAiBrvP,EAAKkS,MAAOyiN,EAC/B,MAAYzrI,GAAqB,SAAXA,GACpBw5J,EAAa/tB,EAEjB,GACF,CAEAzyO,EAAOD,QAAUusB,C,iCCpEjB,IAAIg8O,EAAOjhP,EAAQ,OAEf8pN,EAAS9pN,EAAQ,OAEjB65O,EAA2B75O,EAAQ,OAEnC6iP,EAAsBhJ,EAAyBgJ,oBAoBnD,SAAS1J,EAAa/tB,GACpB,IAAIf,EAAWe,EAAYS,iBAE3B,IAAIxB,GAA8B,SAAlBA,EAASruO,KAAzB,CAIA,IAAI2sB,EAAQyiN,EAAYkwB,WACxB3yO,EAAMu3O,UAAS,SAAUttL,GACvB,IAAIm2K,EAAQn2K,EAAKo+J,WACjBp+J,EAAKm0K,UAAU,EAAEgC,EAAMruP,IAAI,MAAOquP,EAAMruP,IAAI,MAC9C,IACAorQ,EAAiBn9O,EAAOyiN,EAPxB,CAQF,CAEA,SAAS06B,EAAiBn9O,EAAOyiN,GAC/BziN,EAAM22O,UAAS,SAAUnnL,EAAM1+E,GAC7B,IAAIypQ,EAAYp5B,EAAO8jB,UAAUz1K,EAAK64J,WAAWt2O,IAAI,wBAAyBmoQ,EAAoB1qL,EAAMizJ,EAAa3xO,GAAO,GAAO,GAC/H6kC,EAAK2iO,EAAKn1O,MAAMqsD,EAAK+5C,MAAMy9G,aAC3BpxM,EAAK0iO,EAAKn1O,MAAMqsD,EAAKg6C,MAAMw9G,aAC3BzsN,EAAS,CAACob,EAAIC,IAEb2kO,GACHhgP,EAAOznB,KAAK,EAAE6iC,EAAG,GAAKC,EAAG,IAAM,GAAKD,EAAG,GAAKC,EAAG,IAAM2kO,GAAY5kO,EAAG,GAAKC,EAAG,IAAM,GAAKA,EAAG,GAAKD,EAAG,IAAM4kO,IAG1G/qL,EAAK4uK,UAAU7jO,EACjB,GACF,CAEAxqB,EAAQygQ,aAAeA,EACvBzgQ,EAAQotQ,iBAAmBA,C,wBCzD3B9lP,EAAQ,OAERA,EAAQ,M,iDCFR,IAAI8pN,EAAS9pN,EAAQ,OAsBjB+lP,EAAkB,IAOtB,SAASC,IACP,IAAIp+O,EAASkiN,EAAOm8B,eACpBzuQ,KAAKowB,OAASA,EACdpwB,KAAK0uQ,SAAW,GAChB1uQ,KAAK2uQ,UAAY,GACjB3uQ,KAAK4uQ,WAAa,EAClB5uQ,KAAK6uQ,WAAa,EAClB7uQ,KAAK8uQ,gBAAkB,CAAC,CAC1B,CAEAN,EAAQjnQ,UAAY,CAOlByvB,OAAQ,SAAU/X,EAAMupB,EAAOC,EAAQvpB,EAAW6vP,EAAWC,GAC3D,IAAIC,EAAQjvQ,KAAKkvQ,YAEbC,EAAkBnvQ,KAAKovQ,aAAanwP,EAAM8vP,EAAW,WAErDM,EAAqBrvQ,KAAKovQ,aAAanwP,EAAM8vP,EAAW,cAExDhiP,EAAI/sB,KAAK2uQ,UAAY3uQ,KAAK0uQ,SAC1Bt+O,EAASpwB,KAAKowB,OACdjsB,EAAMisB,EAAOC,WAAW,MACxB7Y,EAAMyH,EAAKjd,OACfouB,EAAOoY,MAAQA,EACfpY,EAAOqY,OAASA,EAEhB,IAAK,IAAIzkC,EAAI,EAAGA,EAAIwT,IAAOxT,EAAG,CAC5B,IAAI65C,EAAI5+B,EAAKjb,GACT8b,EAAI+9B,EAAE,GACNlf,EAAIkf,EAAE,GACN/7C,EAAQ+7C,EAAE,GAEV0mE,EAAQrlG,EAAUpd,GAEtBqC,EAAI22N,YAAcv2G,EAClBpgH,EAAI2pG,UAAUmhK,EAAOnvP,EAAIiN,EAAG4R,EAAI5R,EAClC,CAEA,IAAKqD,EAAOoY,QAAUpY,EAAOqY,OAG3B,OAAOrY,EAIT,IAAIk/O,EAAYnrQ,EAAIorQ,aAAa,EAAG,EAAGn/O,EAAOoY,MAAOpY,EAAOqY,QACxD6hD,EAASglL,EAAUrwP,KACnBkO,EAAS,EACTqiP,EAAWllL,EAAOtoF,OAClB6sQ,EAAa7uQ,KAAK6uQ,WAClBD,EAAa5uQ,KAAK4uQ,WAClBa,EAAcb,EAAaC,EAE/B,MAAO1hP,EAASqiP,EAAU,CACpBjrJ,EAAQj6B,EAAOn9D,EAAS,GAAK,IAAjC,IACIuiP,EAA6D,EAA5CvpQ,KAAK2I,MAAMy1G,GAASgqJ,EAAkB,IAE3D,GAAIhqJ,EAAQ,EAAG,CACb,IAAIpoF,EAAW6yO,EAAUzqJ,GAAS4qJ,EAAkBE,EAEpD9qJ,EAAQ,IAAMA,EAAQA,EAAQkrJ,EAAcZ,GAC5CvkL,EAAOn9D,KAAYgP,EAASuzO,GAC5BplL,EAAOn9D,KAAYgP,EAASuzO,EAAiB,GAC7CplL,EAAOn9D,KAAYgP,EAASuzO,EAAiB,GAC7CplL,EAAOn9D,KAAYgP,EAASuzO,EAAiB,GAAKnrJ,EAAQ,GAC5D,MACEp3F,GAAU,CAEd,CAGA,OADAhpB,EAAIwrQ,aAAaL,EAAW,EAAG,GACxBl/O,CACT,EAOA8+O,UAAW,WACT,IAAIU,EAAc5vQ,KAAK6vQ,eAAiB7vQ,KAAK6vQ,aAAev9B,EAAOm8B,gBAE/D1hP,EAAI/sB,KAAK2uQ,UAAY3uQ,KAAK0uQ,SAC1BxhP,EAAQ,EAAJH,EACR6iP,EAAYpnO,MAAQtb,EACpB0iP,EAAYnnO,OAASvb,EACrB,IAAI/oB,EAAMyrQ,EAAYv/O,WAAW,MAejC,OAdAlsB,EAAIivB,UAAU,EAAG,EAAGlG,EAAGA,GAIvB/oB,EAAI01B,cAAgB3M,EACpB/oB,EAAIw1B,WAAa35B,KAAK0uQ,SAGtBvqQ,EAAIy1B,YAAc,OAElBz1B,EAAIq5B,YACJr5B,EAAI44B,KAAKhQ,EAAGA,EAAG/sB,KAAK2uQ,UAAW,EAAa,EAAVxoQ,KAAK40B,IAAQ,GAC/C52B,EAAIs5B,YACJt5B,EAAI4lB,OACG6lP,CACT,EAMAR,aAAc,SAAUnwP,EAAM8vP,EAAW34P,GAMvC,IALA,IAAI05P,EAAiB9vQ,KAAK8uQ,gBACtBiB,EAAoBD,EAAe15P,KAAW05P,EAAe15P,GAAS,IAAIxB,kBAAkB,OAC5Fgc,EAAQ,CAAC,EAAG,EAAG,EAAG,GAClBorD,EAAM,EAEDh4E,EAAI,EAAGA,EAAI,IAAKA,IACvB+qQ,EAAU34P,GAAOpS,EAAI,KAAK,EAAM4sB,GAChCm/O,EAAkB/zL,KAASprD,EAAM,GACjCm/O,EAAkB/zL,KAASprD,EAAM,GACjCm/O,EAAkB/zL,KAASprD,EAAM,GACjCm/O,EAAkB/zL,KAASprD,EAAM,GAGnC,OAAOm/O,CACT,GAEF,IAAItiP,EAAW+gP,EACfrtQ,EAAOD,QAAUusB,C,wBChKjB,IAAImyN,EAAcp3N,EAAQ,OAEtBq3N,EAAsBr3N,EAAQ,OAE9BwnP,EAAmBxnP,EAAQ,OAoB3BiF,EAAWmyN,EAAYl8H,OAAO,CAChCl/G,KAAM,iBACNs7O,eAAgB,SAAU/0M,EAAQ2nM,GAChC,OAAOmN,EAAoB7/O,KAAK+/O,YAAa//O,KAAM,CACjDiwQ,cAAe,SAEnB,EACAC,mBAAoB,WAClB,IAAIC,EAAkBH,EAAiB9sQ,IAAIlD,KAAKkD,IAAI,qBAEpD,GAAIitQ,GAAmBA,EAAgBv1G,WACrC,MAAyC,QAAlCu1G,EAAgBv1G,WAAW,IAAkD,QAAlCu1G,EAAgBv1G,WAAW,EAEjF,EACA47E,cAAe,CAEbnC,iBAAkB,cAClB+L,OAAQ,EACRroK,EAAG,EAKHq4L,SAAU,EACV1B,SAAU,GACVC,UAAW,GACXC,WAAY,EACZC,WAAY,KAIhB1tQ,EAAOD,QAAUusB,C,iCCvDjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB2qN,GAFU1/L,EAAQojM,QAERruN,EAAQ,QAElBsuN,EAAUtuN,EAAQ,OAElB6nP,EAAe7nP,EAAQ,MAEvB8pN,EAAS9pN,EAAQ,OAoBrB,SAAS8nP,EAAsBnS,EAAYoS,EAAWp+I,GACpD,IAAIq+I,EAAWrS,EAAW,GAAKA,EAAW,GAC1CoS,EAAYj+B,EAAO5oN,IAAI6mP,GAAW,SAAUE,GAC1C,MAAO,CACL3iO,SAAU,EAAE2iO,EAAM3iO,SAAS,GAAKqwN,EAAW,IAAMqS,GAAWC,EAAM3iO,SAAS,GAAKqwN,EAAW,IAAMqS,GAErG,IACA,IAAIh5P,EAAM+4P,EAAUvuQ,OAChBmwE,EAAY,EAChB,OAAO,SAAUnjE,GAEf,IAAK,IAAIhL,EAAImuE,EAAWnuE,EAAIwT,EAAKxT,IAAK,CACpC,IAAI8pC,EAAWyiO,EAAUvsQ,GAAG8pC,SAE5B,GAAIA,EAAS,IAAM9+B,GAAOA,GAAO8+B,EAAS,GAAI,CAC5CqkC,EAAYnuE,EACZ,KACF,CACF,CAEA,GAAIA,IAAMwT,EAER,IAASxT,EAAImuE,EAAY,EAAGnuE,GAAK,EAAGA,IAAK,CACnC8pC,EAAWyiO,EAAUvsQ,GAAG8pC,SAE5B,GAAIA,EAAS,IAAM9+B,GAAOA,GAAO8+B,EAAS,GAAI,CAC5CqkC,EAAYnuE,EACZ,KACF,CACF,CAGF,OAAOA,GAAK,GAAKA,EAAIwT,GAAO26G,EAASnuH,EACvC,CACF,CAEA,SAAS0sQ,EAAuBvS,EAAYvnL,GAC1C,IAAI45L,EAAWrS,EAAW,GAAKA,EAAW,GAE1C,OADAvnL,EAAQ,EAAEA,EAAM,GAAKunL,EAAW,IAAMqS,GAAW55L,EAAM,GAAKunL,EAAW,IAAMqS,GACtE,SAAUxhQ,GACf,OAAOA,GAAO4nE,EAAM,IAAM5nE,GAAO4nE,EAAM,EACzC,CACF,CAEA,SAAS+5L,EAAc99B,GACrB,IAAIj4E,EAAai4E,EAASj4E,WAE1B,MAAyB,QAAlBA,EAAW,IAAkC,QAAlBA,EAAW,EAC/C,CAEA,IAAIntI,EAAW0lN,EAAQkF,gBAAgB,CACrC7zO,KAAM,UACNrF,OAAQ,SAAUy0O,EAAalB,EAAS/nI,GACtC,IAAIimK,EACJl+B,EAAQe,cAAc,aAAa,SAAUo9B,GAC3CA,EAAUC,kBAAiB,SAAUC,GAC/BA,IAAiBn9B,IACnBg9B,EAAwBC,EAE5B,GACF,IACA7wQ,KAAKk7C,MAAMigM,YACXn7O,KAAKgxQ,wBAA0B,KAC/B,IAAIn+B,EAAWe,EAAYS,iBAEL,gBAAlBxB,EAASruO,MAA4C,aAAlBquO,EAASruO,KAC9CxE,KAAKixQ,8BAA8Br9B,EAAajpI,EAAK,EAAGipI,EAAY7oI,UAAUxiF,SACrEooP,EAAc99B,IACvB7yO,KAAKkxQ,aAAar+B,EAAUe,EAAag9B,EAAuBjmK,EAEpE,EACAguI,yBAA0B,SAAU/E,EAAalB,EAAS/nI,GACxD3qG,KAAKk7C,MAAMigM,WACb,EACAtC,kBAAmB,SAAUj3N,EAAQgyN,EAAalB,EAAS/nI,GACzD,IAAIkoI,EAAWe,EAAYS,iBAEvBxB,GACF7yO,KAAKixQ,8BAA8Br9B,EAAajpI,EAAK/oF,EAAO88B,MAAO98B,EAAO+8B,KAAK,EAEnF,EACAsyN,8BAA+B,SAAUr9B,EAAajpI,EAAKjsD,EAAOC,EAAKw/L,GACrE,IACI31M,EACAC,EAFAoqM,EAAWe,EAAYS,iBAI3B,GAAsB,gBAAlBxB,EAASruO,KAAwB,CACnC,IAAIovC,EAAQi/L,EAASs+B,QAAQ,KACzBt9N,EAAQg/L,EAASs+B,QAAQ,KAC7B3oO,EAAQoL,EAAMo3M,eACdviN,EAASoL,EAAMm3M,cACjB,CAeA,IAbA,IAAI9vM,EAAQl7C,KAAKk7C,MACbj8B,EAAO20N,EAAY7oI,UACnBqmK,EAAiB,YACjBC,EAAsB,qBACtBC,EAAa,QACbC,EAAkB,iBAClB3lQ,EAAQgoO,EAAY4F,SAAS43B,GAAgB5xB,aAAa,CAAC,UAC3DgyB,EAAW59B,EAAY4F,SAAS63B,GAAqB7xB,eACrDuI,EAAanU,EAAY4F,SAAS83B,GAClCtpB,EAAkBpU,EAAY4F,SAAS+3B,GACvC/E,EAAe35B,EAASruO,KACxBuyP,EAA4B,gBAAjByV,EAAiC,CAACvtP,EAAKysO,aAAa,KAAMzsO,EAAKysO,aAAa,KAAMzsO,EAAKysO,aAAa,UAAY,CAACzsO,EAAKysO,aAAa,QAASzsO,EAAKysO,aAAa,UAEpKvkJ,EAAMzoD,EAAOyoD,EAAMxoD,EAAKwoD,IAAO,CACtC,IAAIlqE,EAEJ,GAAqB,gBAAjBuvO,EAAgC,CAElC,GAAIz9P,MAAMkQ,EAAK/b,IAAI6zP,EAAS,GAAI5vJ,IAC9B,SAGF,IAAIn3F,EAAQ6iO,EAASiC,YAAY,CAAC71N,EAAK/b,IAAI6zP,EAAS,GAAI5vJ,GAAMloF,EAAK/b,IAAI6zP,EAAS,GAAI5vJ,KACpFlqE,EAAO,IAAI65M,EAAQuF,KAAK,CACtB7mN,MAAO,CACL1V,EAAG3Z,KAAK2I,MAAM3I,KAAKugF,MAAM12E,EAAM,IAAMw4B,EAAQ,GAC7C7J,EAAGx4B,KAAK2I,MAAM3I,KAAKugF,MAAM12E,EAAM,IAAMy4B,EAAS,GAC9CD,MAAOriC,KAAK0I,KAAK25B,GACjBC,OAAQtiC,KAAK0I,KAAK45B,IAEpB78B,MAAO,CACLme,KAAM9K,EAAKo+N,cAAcl2I,EAAK,SAC9B7tE,QAASra,EAAKo+N,cAAcl2I,EAAK,aAGvC,KAAO,CAEL,GAAIp4F,MAAMkQ,EAAK/b,IAAI6zP,EAAS,GAAI5vJ,IAC9B,SAGFlqE,EAAO,IAAI65M,EAAQuF,KAAK,CACtBC,GAAI,EACJ9mN,MAAOq9M,EAAS4+B,WAAW,CAACxyP,EAAK/b,IAAI6zP,EAAS,GAAI5vJ,KAAOuqK,aACzD9lQ,MAAO,CACLme,KAAM9K,EAAKo+N,cAAcl2I,EAAK,SAC9B7tE,QAASra,EAAKo+N,cAAcl2I,EAAK,aAGvC,CAEA,IAAIizI,EAAYn7N,EAAKo7N,aAAalzI,GAE9BloF,EAAK0yP,gBACP/lQ,EAAQwuO,EAAUZ,SAAS43B,GAAgB5xB,aAAa,CAAC,UACzDgyB,EAAWp3B,EAAUZ,SAAS63B,GAAqB7xB,eACnDuI,EAAa3N,EAAUZ,SAAS83B,GAChCtpB,EAAkB5N,EAAUZ,SAAS+3B,IAGvC,IAAIK,EAAWh+B,EAAYi+B,YAAY1qK,GACnCihJ,EAAc,IAEdwpB,GAA2B,MAAfA,EAAS,KACvBxpB,EAAcwpB,EAAS,IAGzB96B,EAAQmR,cAAcr8O,EAAO4lQ,EAAUzpB,EAAYC,EAAiB,CAClEE,aAActU,EACduU,eAAgBhhJ,EAChBihJ,YAAaA,EACbC,YAAY,IAEdprN,EAAK4uJ,SAASjgL,GACdkrO,EAAQ8G,cAAc3gN,EAAMhe,EAAK0yP,cAAgBH,EAAWl/B,EAAO5uH,OAAO,CAAC,EAAG8tJ,IAC9Ev0O,EAAKkhN,YAAcA,EAEfA,IAEFlhN,EAAK27N,eAAgB,GAGvB19M,EAAM36C,IAAI08B,GACVhe,EAAKw7N,iBAAiBtzI,EAAKlqE,EAC7B,CACF,EACAi0O,aAAc,SAAU98B,EAAKR,EAAak+B,EAAgBnnK,GACxD,IAAIonK,EAAiBD,EAAeE,cAAcC,QAC9CC,EAAoBJ,EAAeE,cAAcG,WAIjDlzP,EAAO20N,EAAY7oI,UACnBqnK,EAAUpyQ,KAAKqyQ,UAAYryQ,KAAKqyQ,UAAY,IAAIhC,EACpD+B,EAAQ1D,SAAW96B,EAAY1wO,IAAI,YACnCkvQ,EAAQzD,UAAY/6B,EAAY1wO,IAAI,aACpCkvQ,EAAQvD,WAAaj7B,EAAY1wO,IAAI,cACrCkvQ,EAAQxD,WAAah7B,EAAY1wO,IAAI,cACrC,IAAI+5B,EAAOm3M,EAAIkpB,cAAchpO,QACzBg+O,EAAgBl+B,EAAI8lB,mBACxBj9N,EAAKgsO,eAAeqJ,GAEpB,IAAIxyP,EAAI3Z,KAAKwI,IAAIsuB,EAAKnd,EAAG,GACrB6e,EAAIx4B,KAAKwI,IAAIsuB,EAAK0B,EAAG,GACrBsL,EAAK9jC,KAAKyI,IAAIquB,EAAKuL,MAAQvL,EAAKnd,EAAG6qF,EAAI03I,YACvCn4M,EAAK/jC,KAAKyI,IAAIquB,EAAKwL,OAASxL,EAAK0B,EAAGgsE,EAAI23I,aACxC95M,EAAQyB,EAAKnqB,EACb2oB,EAASyB,EAAKvL,EACdmjI,EAAO,CAAC7iJ,EAAKysO,aAAa,OAAQzsO,EAAKysO,aAAa,OAAQzsO,EAAKysO,aAAa,UAC9EhgO,EAASzM,EAAK0+O,SAAS77F,GAAM,SAAUywG,EAAKC,EAAK1wQ,GACnD,IAAIw+H,EAAK8zG,EAAIU,YAAY,CAACy9B,EAAKC,IAI/B,OAHAlyI,EAAG,IAAMxgH,EACTwgH,EAAG,IAAM3hG,EACT2hG,EAAGr8H,KAAKnC,GACDw+H,CACT,IACI69H,EAAa2T,EAAe5mB,YAC5B8jB,EAAoC,yBAAxB8C,EAAettQ,KAAkCksQ,EAAuBvS,EAAY2T,EAAe/mO,OAAO6rC,OAAS05L,EAAsBnS,EAAY2T,EAAeW,eAAgBX,EAAe/mO,OAAOonF,UAC1NigJ,EAAQp7O,OAAOtL,EAAQ8c,EAAOC,EAAQspO,EAAenhP,MAAM8hP,gBAAiB,CAC1ET,QAASF,EAAenhP,MAAM+hP,iBAC9BR,WAAYD,EAAkBthP,MAAM+hP,kBACnC3D,GACH,IAAItwM,EAAM,IAAIo4K,EAAQlpI,MAAM,CAC1BhiG,MAAO,CACL48B,MAAOA,EACPC,OAAQA,EACR3oB,EAAGA,EACH6e,EAAGA,EACHg7K,MAAOy4D,EAAQhiP,QAEjB++H,QAAQ,IAEVnvJ,KAAKk7C,MAAM36C,IAAIm+D,EACjB,EACA88K,QAAS,WAAa,IAGxBr6O,EAAOD,QAAUusB,C,uBCpQjB,IAAIqpN,EAAUtuN,EAAQ,OAElB2+D,EAAO3+D,EAAQ,OAEf8pN,EAAS9pN,EAAQ,OAEjBwxD,EAAUxxD,EAAQ,OAElBg5N,EAAexnK,EAAQwnK,aAEvBioB,EAAOjhP,EAAQ,OAEfoqP,EAAYpqP,EAAQ,OA+BxB,SAASqqP,EAAWvpN,EAAU69C,EAAK2rK,GACjCh8B,EAAQM,MAAM/2O,KAAKL,MACnBA,KAAKO,IAAIP,KAAK+yQ,WAAWzpN,EAAU69C,EAAK2rK,IAExC9yQ,KAAKgzQ,oBAAoB1pN,EAAU69C,EACrC,CAEA,IAAI8rK,EAAkBJ,EAAWtrQ,UAEjC0rQ,EAAgBF,WAAa,SAAUzpN,EAAU69C,EAAK2rK,GACpD,OAAO,IAAI3rL,EAAK79B,EAAU69C,EAAK2rK,EACjC,EAEAG,EAAgBD,oBAAsB,SAAU1pN,EAAU69C,GACxD,IAAIizI,EAAY9wL,EAAS+wL,aAAalzI,GAClC+rK,EAAc94B,EAAUZ,SAAS,UACjClwJ,EAAO4pL,EAAYhwQ,IAAI,cACvBkgP,EAAa8vB,EAAYhwQ,IAAI,UAE5BovO,EAAOxrO,QAAQwiF,KAClBA,EAAO,CAACA,EAAMA,IAGhB,IAAI14D,EAAQsiP,EAAYhwQ,IAAI,UAAYomD,EAAS+zL,cAAcl2I,EAAK,SAChEllF,EAASjiB,KAAKg4P,QAAQ,GAEtBh4P,KAAKmzQ,cAAgB/vB,IAEvBpjP,KAAK48E,OAAO36D,GACZA,EAASu/N,EAAa4B,GAAa,IAAM,GAAK,EAAG,EAAGxyN,GACpD3O,EAAOq6N,GAAK,IACZr6N,EAAOwjO,SAAU,EACjBzlP,KAAKO,IAAI0hB,IAINA,IAKLA,EAAO4pK,SAAS,cAAej7J,GAC/B3O,EAAO4pK,SAASqnF,EAAY1zB,aAAa,CAAC,WAC1Cv9N,EAAO4U,KAAK,QAASyyD,GACrBrnE,EAAOqlO,SAAS12N,GAChB3O,EAAO4U,KAAK,QAASyyD,GACrBtpF,KAAKmzQ,YAAc/vB,EACnBpjP,KAAKozQ,aAAe9pL,EAEpBtpF,KAAKqzQ,uBAAuB/pN,EAAU4pN,EAAa/rK,GACrD,EAEA8rK,EAAgBI,uBAAyB,SAAU/pN,EAAU4pN,EAAa/rK,GACxE,IAAIllF,EAASjiB,KAAKg4P,QAAQ,GAE1B,GAAK/1O,EAAL,CAIA,IAAI7b,EAAOpG,KACP0rB,EAAS49B,EAASwzL,cAAc31I,GAChCqyJ,EAAqC,IAA5B0Z,EAAYhwQ,IAAI,UACzBowQ,EAAOJ,EAAYhwQ,IAAI,QACvBqwQ,EAAgBL,EAAYhwQ,IAAI,iBAChCswQ,EAAYlhC,EAAOoS,SAASwuB,EAAYhwQ,IAAI,UAAU,SAAUikG,GAClE,OAAOA,EAAM79C,EAAS/gC,QAAUixO,EAAS,CAC3C,IACIia,EAAmC,oBAAdD,EASzB,GAPAvxP,EAAO+xO,QAAS,EAChBh0P,KAAK0zQ,sBAAsBzxP,EAAQyJ,GAE/B6nP,EAAgB,IAClB/Z,EAASx5P,KAAKwrD,cAAcvpC,GAAUsxP,EAAgB,KAGpD/Z,IAAWx5P,KAAK2zQ,SAAWL,IAAStzQ,KAAKqsB,MAAO,CAClDpK,EAAOkoD,gBACP,IAAIz0C,EAAQ89O,EAERC,IACF/9O,EAAQ89O,EAAUrsK,IAGhBllF,EAAO2xP,IAAM,IACfl+O,GAAS8jO,EAASv3O,EAAO2xP,KAG3B3xP,EAAO2xP,IAAM,EACb,IAAIC,EAAW5xP,EAAOqlF,QAAQ,GAAIgsK,GAAMQ,KAAKta,EAAQ,CACnDoa,IAAK,IACJl+O,MAAMA,GAAOq+O,QAAO,WACrB3tQ,EAAK4tQ,qBAAqB/xP,EAC5B,IAEKqxP,GACHO,EAASxqQ,MAAK,WACZjD,EAAKw2E,OAAO36D,EACd,IAGF4xP,EAASn1N,OACX,CAEA1+C,KAAK2zQ,QAAUna,EACfx5P,KAAKqsB,MAAQinP,CAhDb,CAiDF,EAEAL,EAAgBznN,cAAgB,SAAUvpC,GAExC,OAAOwnP,EAAKx/K,KAAKhoE,EAAOgyP,KAAMhyP,EAAOiyP,OAASzK,EAAKx/K,KAAKhoE,EAAOiyP,MAAOjyP,EAAOkyP,KAC/E,EAEAlB,EAAgBS,sBAAwB,SAAUzxP,EAAQyJ,GACxDzJ,EAAOgyP,KAAOvoP,EAAO,GACrBzJ,EAAOkyP,KAAOzoP,EAAO,GACrBzJ,EAAOiyP,MAAQxoP,EAAO,IAAM,EAAEA,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,GAAIA,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EAClG,EAEAunP,EAAgBlZ,WAAa,SAAUzwM,EAAU69C,EAAK2rK,GACpD9yQ,KAAKg4P,QAAQ,GAAG+B,WAAWzwM,EAAU69C,EAAK2rK,GAE1C9yQ,KAAKgzQ,oBAAoB1pN,EAAU69C,EACrC,EAEA8rK,EAAgBe,qBAAuB,SAAU/xP,GAC/C,IAAI6kB,EAAK7kB,EAAOgyP,KACZltO,EAAK9kB,EAAOkyP,KACZ1I,EAAMxpP,EAAOiyP,MACb7pP,EAAIpI,EAAO2xP,IACXvlQ,EAAM4T,EAAO6P,SACbsiP,EAAU,CAAC/lQ,EAAI,GAAIA,EAAI,IACvBu7P,EAAcgJ,EAAUhJ,YACxByK,EAAwBzB,EAAUyB,sBACtChmQ,EAAI,GAAKu7P,EAAY9iO,EAAG,GAAI2kO,EAAI,GAAI1kO,EAAG,GAAI1c,GAC3Chc,EAAI,GAAKu7P,EAAY9iO,EAAG,GAAI2kO,EAAI,GAAI1kO,EAAG,GAAI1c,GAE3C,IAAImf,EAAK6qO,EAAsBvtO,EAAG,GAAI2kO,EAAI,GAAI1kO,EAAG,GAAI1c,GACjDof,EAAK4qO,EAAsBvtO,EAAG,GAAI2kO,EAAI,GAAI1kO,EAAG,GAAI1c,GAGrD,GAFApI,EAAOgyI,UAAY9tJ,KAAK64H,MAAMv1F,EAAID,GAAMrjC,KAAK40B,GAAK,EAEzB,SAArB/6B,KAAKmzQ,aAA+C,SAArBnzQ,KAAKmzQ,aAA+C,cAArBnzQ,KAAKmzQ,YACrE,QAAuBzwQ,IAAnBuf,EAAOqyP,SAAyBryP,EAAOqyP,QAAUryP,EAAO2xP,IAAK,CAC/D,IAAI7oL,EAAmC,KAA1B0+K,EAAKx/K,KAAKmqL,EAAS/lQ,GAChC4T,EAAO4U,KAAK,QAAS,CAAC5U,EAAOoU,MAAM,GAAI00D,IAE7B,IAAN1gE,IACFhc,EAAI,GAAK+lQ,EAAQ,IAAM/lQ,EAAI,GAAK+lQ,EAAQ,IAAM,EAC9C/lQ,EAAI,GAAK+lQ,EAAQ,IAAM/lQ,EAAI,GAAK+lQ,EAAQ,IAAM,EAElD,MAAO,GAAuB,IAAnBnyP,EAAOqyP,QAAe,CAE3BvpL,EAAS,EAAI0+K,EAAKx/K,KAAKnjD,EAAIz4B,GAC/B4T,EAAO4U,KAAK,QAAS,CAAC5U,EAAOoU,MAAM,GAAI00D,GACzC,MACE9oE,EAAO4U,KAAK,QAAS72B,KAAKozQ,cAI9BnxP,EAAOqyP,QAAUryP,EAAO2xP,IACxB3xP,EAAO+xO,QAAS,CAClB,EAEAif,EAAgBjZ,aAAe,SAAU1wM,EAAU69C,GACjDnnG,KAAKg4P,QAAQ,GAAGgC,aAAa1wM,EAAU69C,GACvC,IAAI+rK,EAAc5pN,EAAS+wL,aAAalzI,GAAKqyI,SAAS,UAEtDx5O,KAAKqzQ,uBAAuB/pN,EAAU4pN,EAAa/rK,EACrD,EAEAmrI,EAAO2qB,SAAS4V,EAAY/7B,EAAQM,OACpC,IAAI3pN,EAAWolP,EACf1xQ,EAAOD,QAAUusB,C,iCCvNjB,IAAIquO,EAAWtzO,EAAQ,MAEnB8pN,EAAS9pN,EAAQ,OAEjBqqP,EAAarqP,EAAQ,MAErBihP,EAAOjhP,EAAQ,OA+BnB,SAAS+rP,EAAejrN,EAAU69C,EAAK2rK,GACrCD,EAAWxyQ,KAAKL,KAAMspD,EAAU69C,EAAK2rK,GACrC9yQ,KAAKw0Q,WAAa,EAClBx0Q,KAAKy0Q,kBAAoB,CAC3B,CAEA,IAAIC,EAAsBH,EAAehtQ,UAEzCmtQ,EAAoB3B,WAAa,SAAUzpN,EAAU69C,EAAK2rK,GACxD,OAAO,IAAIhX,EAASxyM,EAAU69C,EAAK2rK,EACrC,EAGA4B,EAAoBhB,sBAAwB,SAAUzxP,EAAQyJ,GAC5D1rB,KAAKshC,QAAU5V,EAIf,IAHA,IAAIipP,EAAY,CAAC,GACbn9P,EAAM,EAEDxT,EAAI,EAAGA,EAAI0nB,EAAO1pB,OAAQgC,IAAK,CACtC,IAAI8iC,EAAKpb,EAAO1nB,EAAI,GAChB+iC,EAAKrb,EAAO1nB,GAChBwT,GAAOiyP,EAAKx/K,KAAKnjD,EAAIC,GACrB4tO,EAAU1wQ,KAAKuT,EACjB,CAEA,GAAY,IAARA,EAAJ,CAIA,IAASxT,EAAI,EAAGA,EAAI2wQ,EAAU3yQ,OAAQgC,IACpC2wQ,EAAU3wQ,IAAMwT,EAGlBxX,KAAK40Q,SAAWD,EAChB30Q,KAAK60Q,QAAUr9P,CAPf,CAQF,EAGAk9P,EAAoBlpN,cAAgB,SAAUvpC,GAC5C,OAAOjiB,KAAK60Q,OACd,EAGAH,EAAoBV,qBAAuB,SAAU/xP,GACnD,IAAIoI,EAAIpI,EAAO2xP,IACXloP,EAAS1rB,KAAKshC,QACdq+J,EAAU3/L,KAAK40Q,SACfp9P,EAAMkU,EAAO1pB,OAEjB,GAAK29L,EAAL,CAKA,IAAIm1E,EAAY90Q,KAAKw0Q,WAGrB,GAAInqP,EAAIrqB,KAAKy0Q,kBAAmB,CAG9B,IAAI/1N,EAAQv4C,KAAKyI,IAAIkmQ,EAAY,EAAGt9P,EAAM,GAE1C,IAAK6+K,EAAQ33I,EAAO23I,GAAS,EAAGA,IAC9B,GAAIsJ,EAAQtJ,IAAUhsK,EACpB,MAKJgsK,EAAQlwL,KAAKyI,IAAIynL,EAAO7+K,EAAM,EAChC,KAAO,CACL,IAAK,IAAI6+K,EAAQy+E,EAAWz+E,EAAQ7+K,EAAK6+K,IACvC,GAAIsJ,EAAQtJ,GAAShsK,EACnB,MAIJgsK,EAAQlwL,KAAKyI,IAAIynL,EAAQ,EAAG7+K,EAAM,EACpC,CAEAiyP,EAAKsL,KAAK9yP,EAAO6P,SAAUpG,EAAO2qK,GAAQ3qK,EAAO2qK,EAAQ,IAAKhsK,EAAIs1K,EAAQtJ,KAAWsJ,EAAQtJ,EAAQ,GAAKsJ,EAAQtJ,KAClH,IAAI7sJ,EAAK9d,EAAO2qK,EAAQ,GAAG,GAAK3qK,EAAO2qK,GAAO,GAC1C5sJ,EAAK/d,EAAO2qK,EAAQ,GAAG,GAAK3qK,EAAO2qK,GAAO,GAC9Cp0K,EAAOgyI,UAAY9tJ,KAAK64H,MAAMv1F,EAAID,GAAMrjC,KAAK40B,GAAK,EAClD/6B,KAAKw0Q,WAAan+E,EAClBr2L,KAAKy0Q,kBAAoBpqP,EACzBpI,EAAO+xO,QAAS,CAlChB,CAmCF,EAEA1hB,EAAO2qB,SAASsX,EAAgB1B,GAChC,IAAIplP,EAAW8mP,EACfpzQ,EAAOD,QAAUusB,C,wBChIjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBwxD,EAAUxxD,EAAQ,OAElBg5N,EAAexnK,EAAQwnK,aAEvBmN,EAAWnmO,EAAQ,OAEnB4uN,EAAQuX,EAASvX,MAEjBqK,EAAUj5N,EAAQ,OAElBk5N,EAAeD,EAAQC,aAEvBszB,EAAYxsP,EAAQ,MAyBpBysP,EAAuB,EAE3B,SAASC,EAAoBt0B,GAK3B,OAJKtO,EAAOxrO,QAAQ85O,KAClBA,EAAa,EAAEA,GAAaA,IAGvBA,CACT,CAEA,SAASu0B,EAAiBC,EAAaC,GACrC,IAAIzkP,EAAQykP,EAAUC,mBAAqBD,EAAUzkP,MACrDwkP,EAAYG,WAAU,SAAUC,GAC9BA,EAAW3+O,KAAK,CACdkhD,EAAGs9L,EAAUt9L,EACbqoK,OAAQi1B,EAAUj1B,OAClBx0O,MAAO,CACLytB,OAAgC,WAAxBg8O,EAAU5b,UAAyB7oO,EAAQ,KACnD7G,KAA8B,SAAxBsrP,EAAU5b,UAAuB7oO,EAAQ,OAGrD,GACF,CASA,SAAS+oO,EAAa16O,EAAMkoF,GAC1BiwI,EAAM/2O,KAAKL,MACX,IAAIiiB,EAAS,IAAI+yP,EAAU/1P,EAAMkoF,GAC7BiuK,EAAc,IAAIh+B,EACtBp3O,KAAKO,IAAI0hB,GACTjiB,KAAKO,IAAI60Q,GAETA,EAAY9nO,aAAe,WACzBttC,KAAK62B,KAAK5U,EAAOwzP,WACnB,EAEAz1Q,KAAK+5P,WAAW96O,EAAMkoF,EACxB,CAEA,IAAIuuK,EAAoB/b,EAAapyP,UAErCmuQ,EAAkBC,oBAAsB,WACtC31Q,KAAKg4P,QAAQ,GAAG7c,WAClB,EAEAu6B,EAAkBE,qBAAuB,SAAUP,GAKjD,IAJA,IAAIjyB,EAAaiyB,EAAUjyB,WACvBxyN,EAAQykP,EAAUzkP,MAClBwkP,EAAcp1Q,KAAKg4P,QAAQ,GAEtBh0P,EAAI,EAAGA,EAAIixQ,EAAsBjxQ,IAAK,CAI7C,IAAIwxQ,EAAah0B,EAAa4B,GAAa,GAAI,EAAG,EAAG,EAAGxyN,GACxD4kP,EAAW3+O,KAAK,CACdjrB,MAAO,CACL85O,eAAe,GAEjBpJ,GAAI,GACJntF,QAAQ,EACR94H,MAAO,CAAC,GAAK,MAEf,IAAIX,GAAS1xB,EAAIixQ,EAAuBI,EAAU7b,OAAS6b,EAAUQ,aAErEL,EAAWluK,QAAQ,IAAI,GAAMwsK,KAAKuB,EAAU7b,OAAQ,CAClDnjO,MAAO,CAACg/O,EAAUS,YAAc,EAAGT,EAAUS,YAAc,KAC1DpgP,MAAMA,GAAOgpB,QAChB82N,EAAWO,cAAa,GAAMjC,KAAKuB,EAAU7b,OAAQ,CACnDlgO,QAAS,IACR5D,MAAMA,GAAOgpB,QAChB02N,EAAY70Q,IAAIi1Q,EAClB,CAEAL,EAAiBC,EAAaC,EAChC,EAMAK,EAAkBM,sBAAwB,SAAUX,GAMlD,IALA,IAAIY,EAAej2Q,KAAKk2Q,WACpBd,EAAcp1Q,KAAKg4P,QAAQ,GAE3Bme,EAAkB,CAAC,aAAc,SAAU,eAEtCnyQ,EAAI,EAAGA,EAAImyQ,EAAgBn0Q,OAAQgC,IAAK,CAC/C,IAAI+sH,EAAWolJ,EAAgBnyQ,GAE/B,GAAIiyQ,EAAallJ,KAAcskJ,EAAUtkJ,GAGvC,OAFA/wH,KAAK21Q,2BACL31Q,KAAK41Q,qBAAqBP,EAG9B,CAEAF,EAAiBC,EAAaC,EAChC,EAMAK,EAAkBjP,UAAY,WAC5BzmQ,KAAKgwG,QAAQ,WACf,EAMA0lK,EAAkBrP,SAAW,WAC3BrmQ,KAAKgwG,QAAQ,SACf,EAQA0lK,EAAkB3b,WAAa,SAAU96O,EAAMkoF,GAC7C,IAAIysI,EAAc30N,EAAK8qO,UACvB/pP,KAAKg4P,QAAQ,GAAG+B,WAAW96O,EAAMkoF,GACjC,IAAIiuK,EAAcp1Q,KAAKg4P,QAAQ,GAC3B5d,EAAYn7N,EAAKo7N,aAAalzI,GAC9Bi8I,EAAankO,EAAKo+N,cAAcl2I,EAAK,UACrCy5I,EAAas0B,EAAoBj2P,EAAKo+N,cAAcl2I,EAAK,eACzDv2E,EAAQ3R,EAAKo+N,cAAcl2I,EAAK,SACpCiuK,EAAYv+O,KAAK,QAAS+pN,GAC1Bw0B,EAAYvc,UAAS,SAAU2c,GAC7BA,EAAW3+O,KAAK,CACd9M,KAAM6G,GAEV,IACA,IAAImwN,EAAe3G,EAAUsD,WAAW,gBAExC,GAAIqD,EAAc,CAChB,IAAI1yO,EAAM+mQ,EAAYtjP,SACtBzjB,EAAI,GAAKqzO,EAAaX,EAAa,GAAIH,EAAW,IAClDvyO,EAAI,GAAKqzO,EAAaX,EAAa,GAAIH,EAAW,GACpD,CAEA,IAAIC,EAAe5hO,EAAKo+N,cAAcl2I,EAAK,gBAC3CiuK,EAAYnhH,UAAY4sF,GAAgB,GAAK16O,KAAK40B,GAAK,KAAO,EAC9D,IAAIs6O,EAAY,CAAC,EAajB,GAZAA,EAAU/b,aAAe1lB,EAAY1wO,IAAI,gBACzCmyQ,EAAUS,YAAc17B,EAAUl3O,IAAI,sBACtCmyQ,EAAU5b,UAAYrf,EAAUl3O,IAAI,0BACpCmyQ,EAAU7b,OAAgD,IAAvCpf,EAAUl3O,IAAI,uBACjCmyQ,EAAUQ,aAAe1uK,EAAMloF,EAAKsJ,QACpC8sP,EAAUt9L,EAAIqiK,EAAUsD,WAAW,MAAQ,EAC3C23B,EAAUj1B,OAAShG,EAAUsD,WAAW,WAAa,EACrD23B,EAAUjyB,WAAaA,EACvBiyB,EAAUzkP,MAAQA,EAClBykP,EAAUC,kBAAoBl7B,EAAUl3O,IAAI,sBAC5ClD,KAAKg8E,IAAI,aAAaA,IAAI,YAAYA,IAAI,YAAYA,IAAI,UAE3B,WAA3Bq5L,EAAU/b,aACZt5P,KAAKk2Q,WAAal2Q,KAAKg2Q,sBAAsBX,GAAar1Q,KAAK41Q,qBAAqBP,GACpFr1Q,KAAKk2Q,WAAab,MACb,CAELr1Q,KAAKk2Q,WAAa,KAClBl2Q,KAAK21Q,sBACL,IAAI1zP,EAASjiB,KAAKg4P,QAAQ,GAEtBoe,EAAa,WACfn0P,EAAOwkP,YAEwB,WAA3B4O,EAAU/b,cACZt5P,KAAK41Q,qBAAqBP,EAE9B,EAEIgB,EAAW,WACbp0P,EAAOokP,WAEwB,WAA3BgP,EAAU/b,cACZt5P,KAAK21Q,qBAET,EAEA31Q,KAAKyjE,GAAG,YAAa2yM,EAAYp2Q,MAAMyjE,GAAG,WAAY4yM,EAAUr2Q,MAAMyjE,GAAG,WAAY2yM,EAAYp2Q,MAAMyjE,GAAG,SAAU4yM,EAAUr2Q,KAChI,CAEAA,KAAKk2Q,WAAab,CACpB,EAEAK,EAAkBY,QAAU,SAAU39L,GACpC34E,KAAKg8E,IAAI,aAAaA,IAAI,YAAYA,IAAI,YAAYA,IAAI,UAC1DrD,GAAMA,GACR,EAEA25J,EAAO2qB,SAAStD,EAAcviB,GAC9B,IAAI3pN,EAAWksO,EACfx4P,EAAOD,QAAUusB,C,wBClPjB,IAAIqpN,EAAUtuN,EAAQ,OAElB+tP,EAAyB/tP,EAAQ,OAEjCguP,EAAchuP,EAAQ,OAEtBiuP,EAAmBjuP,EAAQ,OAqB3BkuP,EAAiB5/B,EAAQ6/B,YAAY,CACvCnhP,MAAO,CACL7H,UAAU,EACV+9O,UAAW,EACXkL,KAAM,IAER74B,UAAW,SAAU7gL,EAAM1nC,GACzB,IAAIohP,EAAOphP,EAAMohP,KACblL,EAAYl2O,EAAMk2O,UAEtB,GAAIl2O,EAAM7H,SACR,IAAK,IAAI3pB,EAAI,EAAGA,EAAI4yQ,EAAK50Q,QAAS,CAChC,IAAIumB,EAAQquP,EAAK5yQ,KAEjB,GAAIukB,EAAQ,EAAG,CACb20C,EAAKj3B,OAAO2wO,EAAK5yQ,KAAM4yQ,EAAK5yQ,MAE5B,IAAK,IAAI6G,EAAI,EAAGA,EAAI0d,EAAO1d,IACzBqyD,EAAKr8B,OAAO+1O,EAAK5yQ,KAAM4yQ,EAAK5yQ,KAEhC,CACF,MAEA,IAASA,EAAI,EAAGA,EAAI4yQ,EAAK50Q,QAAS,CAChC,IAAI4mN,EAAKguD,EAAK5yQ,KACVu7L,EAAKq3E,EAAK5yQ,KACV8lC,EAAK8sO,EAAK5yQ,KACV+lC,EAAK6sO,EAAK5yQ,KAGd,GAFAk5D,EAAKj3B,OAAO2iL,EAAIrpB,GAEZmsE,EAAY,EAAG,CACjB,IAAIzhO,GAAM2+K,EAAK9+K,GAAM,GAAKy1J,EAAKx1J,GAAM2hO,EACjCxhO,GAAMq1J,EAAKx1J,GAAM,GAAKD,EAAK8+K,GAAM8iD,EACrCxuM,EAAKo8J,iBAAiBrvL,EAAIC,EAAIJ,EAAIC,EACpC,MACEmzB,EAAKr8B,OAAOiJ,EAAIC,EAEpB,CAEJ,EACA8sO,cAAe,SAAU/2P,EAAG6e,GAC1B,IAAInJ,EAAQx1B,KAAKw1B,MACbohP,EAAOphP,EAAMohP,KACblL,EAAYl2O,EAAMk2O,UAEtB,GAAIl2O,EAAM7H,SAGR,IAFA,IAAIkmN,EAAY,EAEP7vO,EAAI,EAAGA,EAAI4yQ,EAAK50Q,QAAS,CAChC,IAAIumB,EAAQquP,EAAK5yQ,KAEjB,GAAIukB,EAAQ,EAIV,IAHA,IAAIqgM,EAAKguD,EAAK5yQ,KACVu7L,EAAKq3E,EAAK5yQ,KAEL6G,EAAI,EAAGA,EAAI0d,EAAO1d,IAAK,CAC9B,IAAIi/B,EAAK8sO,EAAK5yQ,KACV+lC,EAAK6sO,EAAK5yQ,KAEd,GAAIwyQ,EAAYM,cAAcluD,EAAIrpB,EAAIz1J,EAAIC,GACxC,OAAO8pM,CAEX,CAGFA,GACF,MAIA,IAFIA,EAAY,EAEP7vO,EAAI,EAAGA,EAAI4yQ,EAAK50Q,QAAS,CAC5B4mN,EAAKguD,EAAK5yQ,KACVu7L,EAAKq3E,EAAK5yQ,KACV8lC,EAAK8sO,EAAK5yQ,KACV+lC,EAAK6sO,EAAK5yQ,KAEd,GAAI0nQ,EAAY,EAAG,CACjB,IAAIzhO,GAAM2+K,EAAK9+K,GAAM,GAAKy1J,EAAKx1J,GAAM2hO,EACjCxhO,GAAMq1J,EAAKx1J,GAAM,GAAKD,EAAK8+K,GAAM8iD,EAErC,GAAI+K,EAAiBK,cAAcluD,EAAIrpB,EAAIt1J,EAAIC,EAAIJ,EAAIC,GACrD,OAAO8pM,CAEX,MACE,GAAI2iC,EAAYM,cAAcluD,EAAIrpB,EAAIz1J,EAAIC,GACxC,OAAO8pM,EAIXA,GACF,CAGF,OAAQ,CACV,IAGF,SAASkjC,IACP/2Q,KAAKk7C,MAAQ,IAAI47L,EAAQM,KAC3B,CAEA,IAAI4/B,EAAiBD,EAAcxvQ,UAEnCyvQ,EAAeC,aAAe,WAC5B,OAAQj3Q,KAAKk3Q,YACf,EAOAF,EAAejd,WAAa,SAAU96O,GACpCjf,KAAKk7C,MAAMigM,YACX,IAAIg8B,EAAS,IAAIT,EAAe,CAC9BU,WAAW,EACX1kP,OAAQ,YAEVykP,EAAOh9B,SAAS,CACdy8B,KAAM33P,EAAKk5N,UAAU,iBAGvBn4O,KAAKq3Q,WAAWF,EAAQl4P,GAGxBjf,KAAKk7C,MAAM36C,IAAI42Q,GACfn3Q,KAAKk3Q,aAAe,IACtB,EAMAF,EAAeM,yBAA2B,SAAUr4P,GAClDjf,KAAKk7C,MAAMigM,YAEXn7O,KAAKu3Q,oBAEDt4P,EAAKsJ,QAAU,KACZvoB,KAAKk3Q,eACRl3Q,KAAKk3Q,aAAe,IAAIX,EAAuB,CAC7CpnH,QAAQ,KAIZnvJ,KAAKk7C,MAAM36C,IAAIP,KAAKk3Q,eAEpBl3Q,KAAKk3Q,aAAe,IAExB,EAMAF,EAAeQ,kBAAoB,SAAUC,EAAYx4P,GACvD,IAAIk4P,EAAS,IAAIT,EACjBS,EAAOh9B,SAAS,CACdy8B,KAAM33P,EAAKk5N,UAAU,iBAGvBn4O,KAAKq3Q,WAAWF,EAAQl4P,IAAQjf,KAAKk3Q,cAEhCl3Q,KAAKk3Q,aAMRl3Q,KAAKk3Q,aAAaQ,eAAeP,GAAQ,IALzCA,EAAOC,WAAY,EACnBD,EAAOzkP,OAAS,UAChBykP,EAAOQ,aAAeF,EAAW/4N,MACjC1+C,KAAKk7C,MAAM36C,IAAI42Q,GAInB,EAMAH,EAAep6L,OAAS,WACtB58E,KAAKu3Q,oBAELv3Q,KAAKk3Q,aAAe,KACpBl3Q,KAAKk7C,MAAMigM,WACb,EAEA67B,EAAeK,WAAa,SAAUF,EAAQl4P,EAAM24P,GAClD,IAAI7tB,EAAY9qO,EAAK8qO,UACrBotB,EAAOh9B,SAAS,CACdxsN,SAAUo8N,EAAU7mP,IAAI,YACxBwoQ,UAAW3hB,EAAU7mP,IAAI,yBAE3Bi0Q,EAAOl9B,SAAS8P,EAAUvQ,SAAS,aAAajgM,gBAChD49N,EAAOvrQ,MAAM85O,eAAgB,EAC7B,IAAI6W,EAAct9O,EAAKq+N,UAAU,SAE7Bif,GACF4a,EAAOtrF,SAAS,SAAU0wE,GAG5B4a,EAAOtrF,SAAS,QAEX+rF,IAGHT,EAAOz4B,YAAcqL,EAAUrL,YAC/By4B,EAAO1zM,GAAG,aAAa,SAAUx9D,GAC/BkxQ,EAAOtjC,UAAY,KACnB,IAAIA,EAAYsjC,EAAON,cAAc5wQ,EAAE2rB,QAAS3rB,EAAE4rB,SAE9CgiN,EAAY,IAEdsjC,EAAOtjC,UAAYA,EAAYsjC,EAAOQ,aAE1C,IAEJ,EAEAX,EAAeO,kBAAoB,WACjC,IAAIp5B,EAAcn+O,KAAKk3Q,aAEnB/4B,GACFA,EAAY05B,kBAEhB,EAEA,IAAIpqP,EAAWspP,EACf51Q,EAAOD,QAAUusB,C,kDC5PjB,IAAIqpN,EAAUtuN,EAAQ,OAElBwxD,EAAUxxD,EAAQ,OAElBg5N,EAAexnK,EAAQwnK,aAEvB+0B,EAAyB/tP,EAAQ,OAuBjCsvP,EAAuB,EACvBC,EAAkBjhC,EAAQ6/B,YAAY,CACxCnhP,MAAO,CACL9J,OAAQ,MAEVssP,YAAa,KACbC,cAAe,KACfl6B,UAAW,SAAU7gL,EAAM1nC,GACzB,IAAI9J,EAAS8J,EAAM9J,OACf49D,EAAO9zD,EAAM8zD,KACb0uL,EAAch4Q,KAAKg4Q,YACnBE,EAAmBF,EAAYxiP,MAC/BrxB,EAAM+4D,EAAK7sC,WAAa6sC,EAAK7sC,aAAe6sC,EAC5Ci7M,EAAWh0Q,GAAOmlF,EAAK,GAAKwuL,EAEhC,IAAIK,EAIJ,IAAK,IAAIn0Q,EAAI,EAAGA,EAAI0nB,EAAO1pB,QAAS,CAClC,IAAI8d,EAAI4L,EAAO1nB,KACX26B,EAAIjT,EAAO1nB,KAEX+K,MAAM+Q,IAAM/Q,MAAM4vB,KAIlB3+B,KAAKi4Q,gBAAkBj4Q,KAAKi4Q,cAAc7pB,QAAQtuO,EAAG6e,KAIzDu5O,EAAiBp4P,EAAIA,EAAIwpE,EAAK,GAAK,EACnC4uL,EAAiBv5O,EAAIA,EAAI2qD,EAAK,GAAK,EACnC4uL,EAAiB1vO,MAAQ8gD,EAAK,GAC9B4uL,EAAiBzvO,OAAS6gD,EAAK,GAC/B0uL,EAAYj6B,UAAU7gL,EAAMg7M,GAAkB,IAChD,CACF,EACAE,WAAY,SAAUj0Q,GACpB,IAAIqxB,EAAQx1B,KAAKw1B,MACb9J,EAAS8J,EAAM9J,OACf49D,EAAO9zD,EAAM8zD,KACb6uL,EAAW7uL,EAAK,GAAKwuL,EAEzB,GAAKK,EAAL,CAIAn4Q,KAAK+9E,aAAa55E,GAElB,IAAK,IAAIH,EAAI,EAAGA,EAAI0nB,EAAO1pB,QAAS,CAClC,IAAI8d,EAAI4L,EAAO1nB,KACX26B,EAAIjT,EAAO1nB,KAEX+K,MAAM+Q,IAAM/Q,MAAM4vB,KAIlB3+B,KAAKi4Q,gBAAkBj4Q,KAAKi4Q,cAAc7pB,QAAQtuO,EAAG6e,IAMzDx6B,EAAImoF,SAASxsE,EAAIwpE,EAAK,GAAK,EAAG3qD,EAAI2qD,EAAK,GAAK,EAAGA,EAAK,GAAIA,EAAK,IAC/D,CAEAtpF,KAAKk2B,iBAAiB/xB,EArBtB,CAsBF,EACA0yQ,cAAe,SAAU/2P,EAAG6e,GAW1B,IARA,IAAInJ,EAAQx1B,KAAKw1B,MACb9J,EAAS8J,EAAM9J,OACf49D,EAAO9zD,EAAM8zD,KACbz/E,EAAI1D,KAAKwI,IAAI26E,EAAK,GAAI,GACtBxoF,EAAIqF,KAAKwI,IAAI26E,EAAK,GAAI,GAIjB6d,EAAMz7E,EAAO1pB,OAAS,EAAI,EAAGmlG,GAAO,EAAGA,IAAO,CACrD,IAAInjG,EAAU,EAANmjG,EACJyhH,EAAKl9L,EAAO1nB,GAAK6F,EAAI,EACrB01L,EAAK7zK,EAAO1nB,EAAI,GAAKlD,EAAI,EAE7B,GAAIgf,GAAK8oM,GAAMjqL,GAAK4gK,GAAMz/K,GAAK8oM,EAAK/+M,GAAK80B,GAAK4gK,EAAKz+L,EACjD,OAAOqmG,CAEX,CAEA,OAAQ,CACV,IAGF,SAASkxK,IACPr4Q,KAAKk7C,MAAQ,IAAI47L,EAAQM,KAC3B,CAEA,IAAIkhC,EAAmBD,EAAgB9wQ,UAEvC+wQ,EAAiBrB,aAAe,WAC9B,OAAQj3Q,KAAKk3Q,YACf,EASAoB,EAAiBve,WAAa,SAAU96O,EAAM4jF,GAC5C7iG,KAAKk7C,MAAMigM,YACX,IAAIqO,EAAW,IAAIuuB,EAAgB,CACjCX,WAAW,EACX1kP,OAAQ,YAEV82N,EAASrP,SAAS,CAChBzuN,OAAQzM,EAAKk5N,UAAU,kBAGzBn4O,KAAKq3Q,WAAW7tB,EAAUvqO,GAAM,EAAO4jF,GAEvC7iG,KAAKk7C,MAAM36C,IAAIipP,GACfxpP,KAAKk3Q,aAAe,IACtB,EAEAoB,EAAiBte,aAAe,SAAU/6O,GACxC,IAAIjf,KAAKk3Q,aAAT,CAIA,IAAIxrP,EAASzM,EAAKk5N,UAAU,gBAC5Bn4O,KAAKk7C,MAAMq6N,WAAU,SAAUxuK,GAC7B,GAAwB,MAApBA,EAAMngD,WAAoB,CAC5B,IAAIpvC,EAA4C,GAArCuvF,EAAMwxK,SAAWxxK,EAAMngD,YAC9B4xN,EAAgC,EAAnBzxK,EAAMngD,WAAiB,EACxCl7B,EAAS,IAAI9V,aAAa8V,EAAO6/M,OAAQitC,EAAYhhQ,EACvD,CAEAuvF,EAAMozI,SAAS,SAAUzuN,EAC3B,GAXA,CAYF,EAEA4sP,EAAiBhB,yBAA2B,SAAUr4P,GACpDjf,KAAKk7C,MAAMigM,YAEXn7O,KAAKu3Q,oBAIDt4P,EAAKsJ,QAAU,KACZvoB,KAAKk3Q,eACRl3Q,KAAKk3Q,aAAe,IAAIX,EAAuB,CAC7CpnH,QAAQ,KAIZnvJ,KAAKk7C,MAAM36C,IAAIP,KAAKk3Q,eAEpBl3Q,KAAKk3Q,aAAe,IAExB,EAEAoB,EAAiBd,kBAAoB,SAAUC,EAAYx4P,EAAM4jF,GAC/D,IAAI2mJ,EAEAxpP,KAAKk3Q,cACP1tB,EAAW,IAAIuuB,EAEf/3Q,KAAKk3Q,aAAaQ,eAAeluB,GAAU,KAE3CA,EAAW,IAAIuuB,EAAgB,CAC7BX,WAAW,EACX1kP,OAAQ,UACRk0B,WAAY6wN,EAAW/4N,MACvB65N,SAAUd,EAAW94N,MAEvB6qM,EAASrL,aAAc,EACvBn+O,KAAKk7C,MAAM36C,IAAIipP,IAGjBA,EAASrP,SAAS,CAChBzuN,OAAQzM,EAAKk5N,UAAU,kBAGzBn4O,KAAKq3Q,WAAW7tB,EAAUvqO,IAAQjf,KAAKk3Q,aAAcr0K,EACvD,EAEAy1K,EAAiBjB,WAAa,SAAU7tB,EAAUvqO,EAAM24P,EAAe/0K,GACrE,IAAIknJ,EAAY9qO,EAAK8qO,UACrBlnJ,EAAMA,GAAO,CAAC,EAYd,IAAIvZ,EAAOrqE,EAAKq+N,UAAU,cAC1BkM,EAASrP,SAAS,OAAQ7wJ,aAAgBziF,MAAQyiF,EAAO,CAACA,EAAMA,IAEhEkgK,EAASyuB,cAAgBp1K,EAAI0iJ,WAAa,KAE1CiE,EAASwuB,YAAcx2B,EAAaviO,EAAKq+N,UAAU,UAAW,EAAG,EAAG,EAAG,GAEvEkM,EAASlC,SAAWkC,EAASwuB,YAAY1wB,SACzC,IAAImxB,EAAgBjvB,EAASh0N,MAAM8zD,KAAK,GAAKwuL,EAC7CtuB,EAASvP,SACT8P,EAAUvQ,SAAS,aAAagG,aAAai5B,EAAgB,CAAC,QAAS,aAAc,eAAiB,CAAC,WACvG,IAAIlc,EAAct9O,EAAKq+N,UAAU,SAE7Bif,GACF/S,EAASlC,SAASiV,GAGfqb,IAGHpuB,EAAS9K,YAAcqL,EAAUrL,YACjC8K,EAAS/lL,GAAG,aAAa,SAAUx9D,GACjCujP,EAAS3V,UAAY,KACrB,IAAIA,EAAY2V,EAASqtB,cAAc5wQ,EAAE2rB,QAAS3rB,EAAE4rB,SAEhDgiN,GAAa,IAEf2V,EAAS3V,UAAYA,GAAa2V,EAAS5iM,YAAc,GAE7D,IAEJ,EAEA0xN,EAAiB17L,OAAS,WACxB58E,KAAKu3Q,oBAELv3Q,KAAKk3Q,aAAe,KACpBl3Q,KAAKk7C,MAAMigM,WACb,EAEAm9B,EAAiBf,kBAAoB,WACnC,IAAIp5B,EAAcn+O,KAAKk3Q,aAEnB/4B,GACFA,EAAY05B,kBAEhB,EAEA,IAAIpqP,EAAW4qP,EACfl3Q,EAAOD,QAAUusB,C,wBCzRjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB0mL,EAAS1mL,EAAQ,OAEjBkwP,EAAalwP,EAAQ,OAErBmwP,EAAWnwP,EAAQ,OAEnBsuN,EAAUtuN,EAAQ,OAElBi5N,EAAUj5N,EAAQ,OAElBk+D,EAAQ+6J,EAAQ/6J,MAwBhBkyL,EAAoB,CAAC,aAAc,YAEvC,SAASC,EAAkBC,GACzB,MAAO,IAAMA,EAAiB,MAChC,CAMA,SAASt3B,EAAa/8O,EAAM6kD,EAAU69C,GACpC,IAAIi8I,EAAa95L,EAAS+zL,cAAcl2I,EAAK1iG,GAE7C,GAAK2+O,GAA6B,SAAfA,EAAnB,CAIA,IAAIxyN,EAAQ04B,EAAS+zL,cAAcl2I,EAAK,SACpCy5I,EAAat3L,EAAS+zL,cAAcl2I,EAAK1iG,EAAO,QAChDo8O,EAAev3L,EAAS+zL,cAAcl2I,EAAK1iG,EAAO,UAEjD6tO,EAAOxrO,QAAQ85O,KAClBA,EAAa,CAACA,EAAYA,IAG5B,IAAIsnB,EAAawQ,EAAWl3B,aAAa4B,GAAaxC,EAAW,GAAK,GAAIA,EAAW,GAAK,EAAGA,EAAW,GAAIA,EAAW,GAAIhwN,GAI3H,OAFAs3O,EAAW6Q,oBAAsC,MAAhBl4B,GAAwB9xO,MAAM8xO,QAAgB,GAAUA,EAAe16O,KAAK40B,GAAK,KAAO,EACzHmtO,EAAWzjQ,KAAOA,EACXyjQ,CAdP,CAeF,CAEA,SAAS6K,EAAWrnP,GAClB,IAAI8f,EAAO,IAAImtO,EAAS,CACtBl0Q,KAAM,OACNmqP,kBAAkB,IAGpB,OADAoqB,EAAcxtO,EAAKhW,MAAO9J,GACnB8f,CACT,CAEA,SAASwtO,EAAcC,EAAavtP,GAClCutP,EAAYnvO,GAAKpe,EAAO,GAAG,GAC3ButP,EAAYlvO,GAAKre,EAAO,GAAG,GAC3ButP,EAAYhvO,GAAKve,EAAO,GAAG,GAC3ButP,EAAY/uO,GAAKxe,EAAO,GAAG,GAC3ButP,EAAYt8N,QAAU,EACtB,IAAI8uN,EAAM//O,EAAO,GAEb+/O,GACFwN,EAAYC,KAAOzN,EAAI,GACvBwN,EAAYE,KAAO1N,EAAI,KAEvBwN,EAAYC,KAAO1tL,IACnBytL,EAAYE,KAAO3tL,IAEvB,CAEA,SAAS4tL,IACP,IAAIC,EAAYr5Q,KACZs5Q,EAAaD,EAAUE,YAAY,cACnCC,EAAWH,EAAUE,YAAY,YACjCrqO,EAAQmqO,EAAUE,YAAY,SAElC,GAAKD,GAAeE,IAAYtqO,EAAM8kN,OAAtC,CAIA,IAAIuV,EAAW,EACXtoK,EAAajhG,KAAKG,OAEtB,MAAO8gG,EACDA,EAAW5qE,QACbkzO,GAAYtoK,EAAW5qE,MAAM,IAG/B4qE,EAAaA,EAAW9gG,OAG1B,IAAIqrC,EAAO6tO,EAAUE,YAAY,QAGjC,GAAKv5Q,KAAKy5Q,SAAYjuO,EAAKiuO,QAA3B,CAIA,IAAI98N,EAAUnR,EAAKhW,MAAMmnB,QACrB+8N,EAAUluO,EAAKmuO,QAAQ,GACvBC,EAAQpuO,EAAKmuO,QAAQh9N,GACrBzvB,EAAIgiL,EAAOtkH,IAAI,GAAIgvL,EAAOF,GAG9B,GAFAxqE,EAAOhwL,UAAUgO,EAAGA,GAEhBosP,EAAY,CACdA,EAAWziP,KAAK,WAAY6iP,GAK5B,IAAIG,EAAoBP,EAAWP,oBAEnC,GAAyB,MAArBc,EAA2B,CAC7B,IAAIC,EAAUtuO,EAAKuuO,UAAU,GAC7BT,EAAWziP,KAAK,WAAY1wB,KAAK40B,GAAK,EAAI50B,KAAK64H,MAAM86I,EAAQ,GAAIA,EAAQ,IAC3E,MACER,EAAWziP,KAAK,WAAYgjP,GAG9BP,EAAWziP,KAAK,QAAS,CAAC0yO,EAAW5sN,EAAS4sN,EAAW5sN,GAC3D,CAEA,GAAI68N,EAAU,CACZA,EAAS3iP,KAAK,WAAY+iP,GAKtBC,EAAoBL,EAAST,oBAEjC,GAAyB,MAArBc,EAA2B,CACzBC,EAAUtuO,EAAKuuO,UAAU,GAC7BP,EAAS3iP,KAAK,YAAa1wB,KAAK40B,GAAK,EAAI50B,KAAK64H,MAAM86I,EAAQ,GAAIA,EAAQ,IAC1E,MACEN,EAAS3iP,KAAK,WAAYgjP,GAG5BL,EAAS3iP,KAAK,QAAS,CAAC0yO,EAAW5sN,EAAS4sN,EAAW5sN,GACzD,CAEA,IAAKzN,EAAM8kN,OAAQ,CAEjB,IAAIxtM,EACAnsB,EACA0iO,EACAwL,EAJJr5N,EAAMrY,KAAK,WAAY+iP,GAKvB,IAAI5sP,EAAWkiB,EAAM8qO,gBACjBznF,EAAYvlK,EAAS,GAAKu8O,EAC1B/2E,EAAYxlK,EAAS,GAAKu8O,EAC1B0Q,EAAct9N,EAAU,EAExB58B,GADA+5P,EAAUtuO,EAAKuuO,UAAUE,GACrB,CAACH,EAAQ,IAAKA,EAAQ,KAC1BhmE,EAAKtoK,EAAKmuO,QAAQM,GAElBl6P,EAAE,GAAK,IACTA,EAAE,IAAMA,EAAE,GACVA,EAAE,IAAMA,EAAE,IAGZ,IAYI6lD,EAZAquB,EAAM6lL,EAAQ,GAAK,GAAK,EAAI,EAEhC,GAAyB,UAArB5qO,EAAMgrO,YAA+C,QAArBhrO,EAAMgrO,WAAsB,CAC9D,IAAIjmH,GAAY9tJ,KAAK64H,MAAM86I,EAAQ,GAAIA,EAAQ,IAE3CF,EAAM,GAAKF,EAAQ,KACrBzlH,EAAW9tJ,KAAK40B,GAAKk5H,GAGvB/kH,EAAMrY,KAAK,WAAYo9H,EACzB,CAIA,OAAQ/kH,EAAMgrO,YACZ,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,SACHt0M,GAAM4sH,EACNuqE,EAAoB,SACpB,MAEF,IAAK,oBACL,IAAK,qBACL,IAAK,kBACHn3L,EAAK4sH,EACLuqE,EAAoB,MACpB,MAEF,QACEn3L,EAAK,EACLm3L,EAAoB,SAGxB,OAAQ7tN,EAAMgrO,YACZ,IAAK,MACH1zN,EAAe,CAACt5B,EAAE,GAAKqlK,EAAYqnF,EAAM,GAAI1sP,EAAE,GAAKslK,EAAYonF,EAAM,IACtEv/O,EAAYnN,EAAE,GAAK,GAAM,OAASA,EAAE,IAAM,GAAM,QAAU,SAC1D6vO,EAAoB7vO,EAAE,GAAK,GAAM,MAAQA,EAAE,IAAM,GAAM,SAAW,SAClE,MAEF,IAAK,QACHs5B,EAAe,EAAEt5B,EAAE,GAAKqlK,EAAYmnF,EAAQ,IAAKxsP,EAAE,GAAKslK,EAAYknF,EAAQ,IAC5Er/O,EAAYnN,EAAE,GAAK,GAAM,QAAUA,EAAE,IAAM,GAAM,OAAS,SAC1D6vO,EAAoB7vO,EAAE,GAAK,GAAM,SAAWA,EAAE,IAAM,GAAM,MAAQ,SAClE,MAEF,IAAK,iBACL,IAAK,cACL,IAAK,oBACHs5B,EAAe,CAAC+rI,EAAYt+F,EAAMylL,EAAQ,GAAIA,EAAQ,GAAK9zM,GAC3DvrC,EAAYy/O,EAAQ,GAAK,EAAI,QAAU,OACvCvR,EAAa,EAAEh2E,EAAYt+F,GAAMruB,GACjC,MAEF,IAAK,kBACL,IAAK,eACL,IAAK,qBACL,IAAK,SACHpf,EAAe,CAACstJ,EAAG,GAAIA,EAAG,GAAKluI,GAC/BvrC,EAAY,SACZkuO,EAAa,CAAC,GAAI3iM,GAClB,MAEF,IAAK,eACL,IAAK,YACL,IAAK,kBACHpf,EAAe,EAAE+rI,EAAYt+F,EAAM2lL,EAAM,GAAIA,EAAM,GAAKh0M,GACxDvrC,EAAYy/O,EAAQ,IAAM,EAAI,QAAU,OACxCvR,EAAa,CAACh2E,EAAYt+F,GAAMruB,GAChC,MAGJ12B,EAAMrY,KAAK,CACTjrB,MAAO,CAELmxP,kBAAmB7tN,EAAMirO,iBAAmBpd,EAC5C1iO,UAAW6U,EAAMkrO,aAAe//O,GAElCvI,SAAU00B,EACVnwB,MAAO,CAACkzO,EAAUA,GAClB7gO,OAAQ6/N,GAEZ,CAnJA,CAlBA,CAsKF,CAQA,SAASphL,EAAK79B,EAAU69C,EAAK2rK,GAC3Bh8B,EAAQM,MAAM/2O,KAAKL,MAEnBA,KAAKq6Q,YAAY/wN,EAAU69C,EAAK2rK,EAClC,CAEA,IAAIwH,EAAYnzL,EAAK5/E,UAErB+yQ,EAAUhtO,aAAe8rO,EAEzBkB,EAAUD,YAAc,SAAU/wN,EAAU69C,EAAK2rK,GAC/C,IAAIl/B,EAActqL,EAASygM,UACvB2S,EAAapzM,EAASwzL,cAAc31I,GACpC37D,EAAOunO,EAAWrW,GACtBlxN,EAAKhW,MAAMmnB,QAAU,EACrBm6L,EAAQkX,UAAUxiN,EAAM,CACtBhW,MAAO,CACLmnB,QAAS,IAEVi3L,EAAazsI,GAChBnnG,KAAKO,IAAIirC,GACT,IAAI0D,EAAQ,IAAI4nM,EAAQoc,KAAK,CAC3BzuP,KAAM,QAIN8hQ,yBAA0B,IAE5BvmQ,KAAKO,IAAI2uC,GACTojM,EAAO56H,KAAKkhK,GAAmB,SAAUE,GACvC,IAAI72P,EAASu/N,EAAas3B,EAAgBxvN,EAAU69C,GAIpDnnG,KAAKO,IAAI0hB,GACTjiB,KAAK64Q,EAAkBC,IAAmBxvN,EAAS+zL,cAAcl2I,EAAK2xK,EACxE,GAAG94Q,MAEHA,KAAKu6Q,iBAAiBjxN,EAAU69C,EAAK2rK,EACvC,EAEAwH,EAAUvgB,WAAa,SAAUzwM,EAAU69C,EAAK2rK,GAC9C,IAAIl/B,EAActqL,EAASygM,UACvBv+M,EAAOxrC,KAAKu5Q,YAAY,QACxB7c,EAAapzM,EAASwzL,cAAc31I,GACpCzhG,EAAS,CACX8vB,MAAO,CAAC,GAEVwjP,EAActzQ,EAAO8vB,MAAOknO,GAC5B5lB,EAAQ+D,YAAYrvM,EAAM9lC,EAAQkuO,EAAazsI,GAC/CmrI,EAAO56H,KAAKkhK,GAAmB,SAAUE,GACvC,IAAI11B,EAAa95L,EAAS+zL,cAAcl2I,EAAK2xK,GACzCj1Q,EAAMg1Q,EAAkBC,GAE5B,GAAI94Q,KAAK6D,KAASu/O,EAAY,CAC5BpjP,KAAK48E,OAAO58E,KAAKu5Q,YAAYT,IAC7B,IAAI72P,EAASu/N,EAAas3B,EAAgBxvN,EAAU69C,GACpDnnG,KAAKO,IAAI0hB,EACX,CAEAjiB,KAAK6D,GAAOu/O,CACd,GAAGpjP,MAEHA,KAAKu6Q,iBAAiBjxN,EAAU69C,EAAK2rK,EACvC,EAEAwH,EAAUC,iBAAmB,SAAUjxN,EAAU69C,EAAK2rK,GACpD,IAAIl/B,EAActqL,EAASygM,UACvBv+M,EAAOxrC,KAAKu5Q,YAAY,QACxBjnO,EAAYwgO,GAAeA,EAAYxgO,UACvCkoO,EAAiB1H,GAAeA,EAAY0H,eAC5CzyB,EAAa+qB,GAAeA,EAAY/qB,WACxCC,EAAkB8qB,GAAeA,EAAY9qB,gBAEjD,IAAK8qB,GAAexpN,EAASqoN,cAAe,CAC1C,IAAIv3B,EAAY9wL,EAAS+wL,aAAalzI,GACtC70D,EAAY8nM,EAAUZ,SAAS,aAAajgM,eAC5CihO,EAAiBpgC,EAAUZ,SAAS,sBAAsBjgM,eAC1DwuM,EAAa3N,EAAUZ,SAAS,SAChCwO,EAAkB5N,EAAUZ,SAAS,iBACvC,CAEA,IAAI+iB,EAAcjzM,EAAS+zL,cAAcl2I,EAAK,SAC1CszK,EAAgBnoC,EAAO8jB,UAAU9sM,EAAS+zL,cAAcl2I,EAAK,WAAY70D,EAAUhZ,QAAS,GAChGkS,EAAKyuM,SAAS3H,EAAO94I,SAAS,CAC5BksJ,eAAe,EACf37N,KAAM,OACNsP,OAAQkjO,EACRjjO,QAASmhP,GACRnoO,IACH9G,EAAKgyM,WAAag9B,EAElBloC,EAAO56H,KAAKkhK,GAAmB,SAAUE,GACvC,IAAI72P,EAASjiB,KAAKu5Q,YAAYT,GAE1B72P,IACFA,EAAOqlO,SAASiV,GAChBt6O,EAAO4pK,SAAS,CACdvyJ,QAASmhP,IAGf,GAAGz6Q,MACH,IAGI06Q,EACAC,EAJA5gD,EAAYguB,EAAWrK,WAAW,QAClCk9B,EAAiB5yB,EAAgBtK,WAAW,QAC5CxuM,EAAQlvC,KAAKu5Q,YAAY,SAI7B,IAAIx/C,GAAa6gD,KACfF,EAAoBne,GAAe,OACnCoe,EAAW/mC,EAAYsiB,kBAAkB/uJ,EAAK,SAAU79C,EAASmvM,UAEjD,MAAZkiB,GAAkB,CACpB,IAAIE,EAASjnC,EAAYi+B,YAAY1qK,GACrCwzK,EAAqB,MAAVE,EAAiBvxN,EAASwqL,QAAQ3sI,GAAOvgB,SAASi0L,GAAUn0L,EAAMm0L,GAAUA,CACzF,CAGF,IAAIC,EAAa/gD,EAAY4gD,EAAW,KACpCI,EAAeH,EAAiBtoC,EAAOwc,UAAUlb,EAAYsiB,kBAAkB/uJ,EAAK,WAAY79C,EAASmvM,UAAWkiB,GAAY,KAChIv5C,EAAalyL,EAAMtjC,MAGvB,GAAkB,MAAdkvQ,GAAsC,MAAhBC,EAAsB,CAC9CjkC,EAAQmf,aAAa/mN,EAAMtjC,MAAOm8O,EAAY,CAC5CprN,KAAMm+O,GACL,CACDxyB,UAAWoyB,IAEbxrO,EAAMkrO,YAAch5C,EAAW/mM,UAC/B6U,EAAMirO,gBAAkB/4C,EAAW27B,kBAEnC7tN,EAAMgrO,WAAanyB,EAAW7kP,IAAI,aAAe,SACjD,IAAI8pB,EAAW+6N,EAAW7kP,IAAI,YAEzBovO,EAAOxrO,QAAQkmB,KAClBA,EAAW,CAACA,EAAUA,IAGxBkiB,EAAM8qO,gBAAkBhtP,CAC1B,CAIEkiB,EAAMsuM,WAFY,MAAhBu9B,EAEiB,CACjBp+O,KAAMo+O,EACNv4C,SAAUwlB,EAAgBgzB,cAAa,GAGvChhP,UAAWguN,EAAgBtK,WAAW,aACtCxjN,WAAY8tN,EAAgBtK,WAAW,cACvCvjN,SAAU6tN,EAAgBtK,WAAW,YACrCtjN,WAAY4tN,EAAgBtK,WAAW,eAGtB,CACjB/gN,KAAM,MAIVuS,EAAM8kN,QAAUj6B,IAAc6gD,EAC9B9jC,EAAQ8G,cAAc59O,KACxB,EAEAs6Q,EAAU7T,UAAY,WACpBzmQ,KAAKgwG,QAAQ,WACf,EAEAsqK,EAAUjU,SAAW,WACnBrmQ,KAAKgwG,QAAQ,SACf,EAEAsqK,EAAUtgB,aAAe,SAAU1wM,EAAU69C,GAC3CnnG,KAAKg5Q,cAAc1vN,EAASwzL,cAAc31I,GAC5C,EAEAmzK,EAAUtB,cAAgB,SAAUttP,GAClC,IAAIuvP,EAAWj7Q,KAAKu5Q,YAAY,QAChCP,EAAciC,EAASzlP,MAAO9J,GAC9BuvP,EAASt3G,OACX,EAEA2uE,EAAO2qB,SAAS91K,EAAM2vJ,EAAQM,OAC9B,IAAI3pN,EAAW05D,EACfhmF,EAAOD,QAAUusB,C,wBC5cjB,IAAIqpN,EAAUtuN,EAAQ,OAElB0yP,EAAY1yP,EAAQ,OA8BxB,SAAS48O,EAAS+V,GAChBn7Q,KAAKo7Q,MAAQD,GAAQD,EACrBl7Q,KAAKk7C,MAAQ,IAAI47L,EAAQM,KAC3B,CAEA,IAAIikC,EAAgBjW,EAAS79P,UA+B7B,SAAS+zQ,EAAM3U,EAAUr9M,EAAU69C,EAAK2rK,GACtC,IAAIvpB,EAAajgM,EAASwzL,cAAc31I,GAExC,GAAKo0K,EAAchyB,GAAnB,CAIA,IAAI3nP,EAAK,IAAI+kQ,EAASyU,MAAM9xN,EAAU69C,EAAK2rK,GAC3CxpN,EAASmxL,iBAAiBtzI,EAAKvlG,GAC/B+kQ,EAASzrN,MAAM36C,IAAIqB,EAJnB,CAKF,CAEA,SAASkqC,EAAS66N,EAAU6U,EAAaC,EAAa/xB,EAAQJ,EAAQwpB,GACpE,IAAI4I,EAASF,EAAY1gC,iBAAiB4O,GAErC6xB,EAAcE,EAAY3+B,cAAcwM,KAKxCoyB,EAGHA,EAAO3hB,WAAW0hB,EAAanyB,EAAQwpB,GAFvC4I,EAAS,IAAI/U,EAASyU,MAAMK,EAAanyB,EAAQwpB,GAKnD2I,EAAYhhC,iBAAiB6O,EAAQoyB,GACrC/U,EAASzrN,MAAM36C,IAAIm7Q,IAXjB/U,EAASzrN,MAAM0hC,OAAO8+L,EAY1B,CAoBA,SAASC,EAAe/5Q,GACtB,OAAOA,EAAGg6Q,WAAah6Q,EAAGg6Q,UAAU55Q,OAAS,CAC/C,CAqBA,SAAS65Q,EAAgBvyN,GACvB,IAAIygM,EAAYzgM,EAASygM,UACzB,MAAO,CACLz3M,UAAWy3M,EAAUvQ,SAAS,aAAajgM,eAC3CihO,eAAgBzwB,EAAUvQ,SAAS,sBAAsBjgM,eACzDwuM,WAAYgC,EAAUvQ,SAAS,SAC/BwO,gBAAiB+B,EAAUvQ,SAAS,kBAExC,CAiBA,SAASsiC,EAAWx7I,GAClB,OAAOvxH,MAAMuxH,EAAG,KAAOvxH,MAAMuxH,EAAG,GAClC,CAEA,SAASi7I,EAAc/kH,GACrB,OAAQslH,EAAWtlH,EAAI,MAAQslH,EAAWtlH,EAAI,GAChD,CAnIA6kH,EAAcpE,aAAe,WAC3B,OAAO,CACT,EAMAoE,EAActhB,WAAa,SAAUzwM,GACnC,IAAIq9M,EAAW3mQ,KACXk7C,EAAQyrN,EAASzrN,MACjBsgO,EAAc7U,EAASoV,UAC3BpV,EAASoV,UAAYzyN,EAGhBkyN,GACHtgO,EAAMigM,YAGR,IAAI23B,EAAc+I,EAAgBvyN,GAClCA,EAASsjD,KAAK4uK,GAAaj7Q,KAAI,SAAU4mG,GACvCm0K,EAAM3U,EAAUr9M,EAAU69C,EAAK2rK,EACjC,IAAG97O,QAAO,SAAUsyN,EAAQI,GAC1B59M,EAAS66N,EAAU6U,EAAalyN,EAAUogM,EAAQJ,EAAQwpB,EAC5D,IAAGl2L,QAAO,SAAUuqB,GAClBjsD,EAAM0hC,OAAO4+L,EAAY1gC,iBAAiB3zI,GAC5C,IAAGo1C,SACL,EAgCA8+H,EAAcrhB,aAAe,WAC3B,IAAI1wM,EAAWtpD,KAAK+7Q,UAEfzyN,GAILA,EAASmyL,mBAAkB,SAAU75O,EAAIulG,GACvCvlG,EAAGo4P,aAAa1wM,EAAU69C,EAC5B,GAAGnnG,KACL,EAEAq7Q,EAAc/D,yBAA2B,SAAUhuN,GACjDtpD,KAAKg8Q,aAAeH,EAAgBvyN,GACpCtpD,KAAK+7Q,UAAY,KACjB/7Q,KAAKk7C,MAAMigM,WACb,EAMAkgC,EAAc7D,kBAAoB,SAAUC,EAAYnuN,GACtD,SAAS2yN,EAA0Br6Q,GAC5BA,EAAG+2P,SAAYgjB,EAAe/5Q,KACjCA,EAAGu8O,YAAcv8O,EAAGg3P,eAAgB,EAExC,CAEA,IAAK,IAAIzxJ,EAAMswK,EAAW/4N,MAAOyoD,EAAMswK,EAAW94N,IAAKwoD,IAAO,CAC5D,IAAIoiJ,EAAajgM,EAASwzL,cAAc31I,GAExC,GAAIo0K,EAAchyB,GAAa,CAC7B,IAAI3nP,EAAK,IAAI5B,KAAKo7Q,MAAM9xN,EAAU69C,EAAKnnG,KAAKg8Q,cAC5Cp6Q,EAAGi3P,SAASojB,GACZj8Q,KAAKk7C,MAAM36C,IAAIqB,GACf0nD,EAASmxL,iBAAiBtzI,EAAKvlG,EACjC,CACF,CACF,EAYAy5Q,EAAcz+L,OAAS,WACrB58E,KAAKu3Q,oBAELv3Q,KAAKk3Q,aAAe,KACpBl3Q,KAAKk7C,MAAMigM,WACb,EAEAkgC,EAAc9D,kBAAoB,WAChC,IAAIp5B,EAAcn+O,KAAKk3Q,aAEnB/4B,GACFA,EAAY05B,kBAEhB,EAUA,IAAIpqP,EAAW23O,EACfjkQ,EAAOD,QAAUusB,C,wBC7KjB,IAAIqpN,EAAUtuN,EAAQ,OAElBihP,EAAOjhP,EAAQ,OAwBf0zP,EAAoBplC,EAAQ3vJ,KAAK5/E,UACjC40Q,EAAmBrlC,EAAQslC,YAAY70Q,UAE3C,SAAS80Q,EAAO7mP,GACd,OAAOzmB,OAAOymB,EAAM0jP,OAASnqQ,OAAOymB,EAAM2jP,KAC5C,CAEA,IAAI1rP,EAAWqpN,EAAQ6/B,YAAY,CACjCnyQ,KAAM,UACNoH,MAAO,CACLytB,OAAQ,OACRtP,KAAM,MAERyL,MAAO,CACLsU,GAAI,EACJC,GAAI,EACJE,GAAI,EACJC,GAAI,EACJyS,QAAS,EACTu8N,KAAM,KACNC,KAAM,MAERp7B,UAAW,SAAU55O,EAAKqxB,GACxBx1B,KAAKq8Q,EAAO7mP,GAAS,iBAAmB,mBAAmBrxB,EAAKqxB,EAClE,EACA8mP,eAAgBJ,EAAkBn+B,UAClCw+B,gBAAiBJ,EAAiBp+B,UAClC47B,QAAS,SAAUtvP,GACjB,OAAOrqB,KAAKq8Q,EAAOr8Q,KAAKw1B,OAAS,eAAiB,iBAAiBnL,EACrE,EACAmyP,aAAcN,EAAkBvC,QAChC8C,cAAeN,EAAiBxC,QAChCI,UAAW,SAAU1vP,GACnB,IAAImL,EAAQx1B,KAAKw1B,MACbqoB,EAAIw+N,EAAO7mP,GAAS,CAACA,EAAMyU,GAAKzU,EAAMsU,GAAItU,EAAM0U,GAAK1U,EAAMuU,IAAM/pC,KAAK08Q,gBAAgBryP,GAC1F,OAAOo/O,EAAKvqP,UAAU2+B,EAAGA,EAC3B,EACA6+N,gBAAiBP,EAAiBpC,YAGpC54Q,EAAOD,QAAUusB,C,uBClEjB,IAAIqpN,EAAUtuN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OA8BrB,SAASszO,EAASxyM,EAAU69C,EAAK2rK,GAC/Bh8B,EAAQM,MAAM/2O,KAAKL,MAEnBA,KAAK28Q,gBAAgBrzN,EAAU69C,EAAK2rK,EACtC,CAEA,IAAI8J,EAAgB9gB,EAASv0P,UAE7Bq1Q,EAAcD,gBAAkB,SAAUrzN,EAAU69C,EAAK2rK,GAEvD,IAAIpnP,EAAS49B,EAASwzL,cAAc31I,GAChC37D,EAAO,IAAIsrM,EAAQglB,SAAS,CAC9BtmO,MAAO,CACL9J,OAAQA,KAGZ1rB,KAAKO,IAAIirC,GAETxrC,KAAKu6Q,iBAAiBjxN,EAAU69C,EAAK2rK,EACvC,EAEA8J,EAAc7iB,WAAa,SAAUzwM,EAAU69C,EAAK2rK,GAClD,IAAIl/B,EAActqL,EAASygM,UACvBv+M,EAAOxrC,KAAKg4P,QAAQ,GACpBtyP,EAAS,CACX8vB,MAAO,CACL9J,OAAQ49B,EAASwzL,cAAc31I,KAGnC2vI,EAAQ+D,YAAYrvM,EAAM9lC,EAAQkuO,EAAazsI,GAE/CnnG,KAAKu6Q,iBAAiBjxN,EAAU69C,EAAK2rK,EACvC,EAEA8J,EAAcrC,iBAAmB,SAAUjxN,EAAU69C,EAAK2rK,GACxD,IAAItnO,EAAOxrC,KAAKg4P,QAAQ,GACpB5d,EAAY9wL,EAAS+wL,aAAalzI,GAClCo1J,EAAcjzM,EAAS+zL,cAAcl2I,EAAK,SAC1C70D,EAAYwgO,GAAeA,EAAYxgO,UACvCkoO,EAAiB1H,GAAeA,EAAY0H,eAE3C1H,IAAexpN,EAASqoN,gBAC3Br/N,EAAY8nM,EAAUZ,SAAS,aAAajgM,eAC5CihO,EAAiBpgC,EAAUZ,SAAS,sBAAsBjgM,gBAG5D/N,EAAKyuM,SAAS3H,EAAO94I,SAAS,CAC5BksJ,eAAe,EACf37N,KAAM,OACNsP,OAAQkjO,GACPjqN,IACH9G,EAAKgyM,WAAag9B,EAClB1jC,EAAQ8G,cAAc59O,KACxB,EAEA48Q,EAAc5iB,aAAe,SAAU1wM,EAAU69C,GAC/C,IAAIx5E,EAAW3tB,KAAKg4P,QAAQ,GAC5BrqO,EAASwsN,SAAS,SAAU7wL,EAASwzL,cAAc31I,GACrD,EAEAmrI,EAAO2qB,SAASnB,EAAUhlB,EAAQM,OAClC,IAAI3pN,EAAWquO,EACf36P,EAAOD,QAAUusB,C,uBC9FjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBwxD,EAAUxxD,EAAQ,OAElBg5N,EAAexnK,EAAQwnK,aAEvB1K,EAAUtuN,EAAQ,OAElBi5N,EAAUj5N,EAAQ,OAElBk5N,EAAeD,EAAQC,aAEvBmG,EAAer/N,EAAQ,OAEvBs/N,EAAkBD,EAAaC,gBAgCnC,SAASktB,EAAU/1P,EAAMkoF,EAAK2rK,GAC5Bh8B,EAAQM,MAAM/2O,KAAKL,MACnBA,KAAK+5P,WAAW96O,EAAMkoF,EAAK2rK,EAC7B,CAEA,IAAI+J,EAAc7H,EAAUztQ,UASxBmiQ,EAAgBsL,EAAUtL,cAAgB,SAAUzqP,EAAMkoF,GAC5D,IAAIy5I,EAAa3hO,EAAKo+N,cAAcl2I,EAAK,cACzC,OAAOy5I,aAAsB/5O,MAAQ+5O,EAAWz+O,QAAU,EAAEy+O,GAAaA,EAC3E,EAEA,SAAS60B,EAAS70B,GAChB,MAAO,CAACA,EAAW,GAAK,EAAGA,EAAW,GAAK,EAC7C,CAEA,SAASk8B,EAAYn3M,EAAIC,GACvB5lE,KAAKG,OAAO48Q,MAAMp3M,EAAIC,EACxB,CAEAi3M,EAAYG,cAAgB,SAAU55B,EAAYnkO,EAAMkoF,EAAKy5I,EAAYq8B,GAEvEj9Q,KAAKm7O,YACL,IAAIvqN,EAAQ3R,EAAKo+N,cAAcl2I,EAAK,SAOhC+gK,EAAa1mB,EAAa4B,GAAa,GAAI,EAAG,EAAG,EAAGxyN,EAAOqsP,GAC/D/U,EAAWrxO,KAAK,CACdylN,GAAI,IACJmJ,SAAS,EACTpvN,MAAOo/O,EAAS70B,KAGlBsnB,EAAW6U,MAAQD,EACnB98Q,KAAKmzQ,YAAc/vB,EACnBpjP,KAAKO,IAAI2nQ,EACX,EAOA2U,EAAYK,oBAAsB,SAAUC,GAC1Cn9Q,KAAKg4P,QAAQ,GAAG7tL,cAAcgzM,EAChC,EAYAN,EAAY1U,cAAgB,WAC1B,OAAOnoQ,KAAKg4P,QAAQ,EACtB,EAOA6kB,EAAYpH,SAAW,WACrB,OAAOz1Q,KAAKg4P,QAAQ,GAAG3hO,KACzB,EAMAwmP,EAAYpW,UAAY,WACtBzmQ,KAAKg4P,QAAQ,GAAGhoJ,QAAQ,WAC1B,EAMA6sK,EAAYxW,SAAW,WACrBrmQ,KAAKg4P,QAAQ,GAAGhoJ,QAAQ,SAC1B,EAOA6sK,EAAYO,KAAO,SAAUh9B,EAAQroK,GACnC,IAAImwL,EAAaloQ,KAAKg4P,QAAQ,GAC9BkQ,EAAW9nB,OAASA,EACpB8nB,EAAWnwL,EAAIA,CACjB,EAEA8kM,EAAYnV,aAAe,SAAUzC,GACnC,IAAIiD,EAAaloQ,KAAKg4P,QAAQ,GAC9BkQ,EAAWjD,UAAYA,EACvBiD,EAAWx1O,OAASuyO,EAAY,OAASiD,EAAWx1O,MACtD,EAoBAmqP,EAAY9iB,WAAa,SAAU96O,EAAMkoF,EAAK2rK,GAC5C9yQ,KAAKmvJ,QAAS,EACd,IAAIi0F,EAAankO,EAAKo+N,cAAcl2I,EAAK,WAAa,SAClDysI,EAAc30N,EAAK8qO,UACnBnJ,EAAa8oB,EAAczqP,EAAMkoF,GACjCuK,EAAS0xI,IAAepjP,KAAKmzQ,YAEjC,GAAIzhK,EAAQ,CACV,IAAIurK,EAAah+P,EAAKo+N,cAAcl2I,EAAK,oBAEzCnnG,KAAKg9Q,cAAc55B,EAAYnkO,EAAMkoF,EAAKy5I,EAAYq8B,EACxD,KAAO,CACL,IAAI/U,EAAaloQ,KAAKg4P,QAAQ,GAC9BkQ,EAAW/4G,QAAS,EACpB2nF,EAAQ+D,YAAYqtB,EAAY,CAC9B7xO,MAAOo/O,EAAS70B,IACfhN,EAAazsI,EAClB,CAIA,GAFAnnG,KAAKq9Q,cAAcp+P,EAAMkoF,EAAKy5I,EAAYkyB,GAEtCphK,EAAQ,CACNw2J,EAAaloQ,KAAKg4P,QAAQ,GAA9B,IACIslB,EAASxK,GAAeA,EAAYwK,OACpC53Q,EAAS,CACX2wB,MAAO6xO,EAAW7xO,MAAMl0B,SAE1Bm7Q,IAAW53Q,EAAOkG,MAAQ,CACxB0tB,QAAS4uO,EAAWt8P,MAAM0tB,UAE5B4uO,EAAW7xO,MAAQ,CAAC,EAAG,GACvBinP,IAAWpV,EAAWt8P,MAAM0tB,QAAU,GACtCw9M,EAAQkX,UAAUka,EAAYxiQ,EAAQkuO,EAAazsI,EACrD,CAEAnnG,KAAKu9Q,aAAe3pC,CACtB,EAGA,IAAI4pC,EAAwB,CAAC,aACzBC,EAA0B,CAAC,WAAY,aACvCC,EAAwB,CAAC,SACzBC,EAA0B,CAAC,WAAY,SAoG3C,SAAS5hB,EAAiBC,EAAWC,GAGnC,IAAIj8P,KAAKm+O,cAAen+O,KAAK44P,cAI7B,GAAgB,aAAZqD,EAAwB,CAC1B,IAAI5lO,EAAQr2B,KAAK49Q,sBACbC,EAAQxnP,EAAM,GAAKA,EAAM,GACzBynP,EAAc,CAChBznP,MAAO,CAAClwB,KAAKwI,IAAe,IAAX0nB,EAAM,GAAUA,EAAM,GAAK,GAAIlwB,KAAKwI,IAAe,IAAX0nB,EAAM,GAAUA,EAAM,GAAK,EAAIwnP,KAM1F79Q,KAAKgnP,UAAU82B,EAAa,IAAK,aACnC,KAAuB,WAAZ7hB,GACTj8P,KAAKgnP,UAAU,CACb3wN,MAAOr2B,KAAK49Q,uBACX,IAAK,aAEZ,CAnHAf,EAAYQ,cAAgB,SAAUp+P,EAAMkoF,EAAKy5I,EAAYkyB,GAC3D,IAAI5K,EAAaloQ,KAAKg4P,QAAQ,GAC1BpkB,EAAc30N,EAAK8qO,UACnBn5N,EAAQ3R,EAAKo+N,cAAcl2I,EAAK,SAEZ,UAApB+gK,EAAW1jQ,KACb0jQ,EAAWjuB,SAAS,CAClByL,eAAe,IAGjBwiB,EAAWr8E,SAAS,CAClBvyJ,QAAS,EACTK,WAAY,KACZE,cAAe,KACfC,cAAe,KACfF,YAAa,OAIjB,IAAI2lN,EAAYuzB,GAAeA,EAAYvzB,UACvCw+B,EAAiBjL,GAAeA,EAAYiL,eAC5Ch9B,EAAe+xB,GAAeA,EAAY/xB,aAC1CgH,EAAa+qB,GAAeA,EAAY/qB,WACxCC,EAAkB8qB,GAAeA,EAAY9qB,gBAC7C1G,EAAiBwxB,GAAeA,EAAYxxB,eAC5C7D,EAAcq1B,GAAeA,EAAYr1B,YAE7C,IAAKq1B,GAAe7zP,EAAK0yP,cAAe,CACtC,IAAIv3B,EAAY04B,GAAeA,EAAY14B,UAAY04B,EAAY14B,UAAYn7N,EAAKo7N,aAAalzI,GAGjGo4I,EAAYnF,EAAUZ,SAASgkC,GAAuBh+B,aAAa,CAAC,UACpEu+B,EAAiB3jC,EAAUZ,SAASikC,GAAyBj+B,eAC7DuB,EAAe3G,EAAUsD,WAAW,gBACpCqK,EAAa3N,EAAUZ,SAASkkC,GAChC11B,EAAkB5N,EAAUZ,SAASmkC,GACrCr8B,EAAiBlH,EAAUsD,WAAW,kBACtCD,EAAcrD,EAAUsD,WAAW,SACrC,MACEqgC,EAAiBzrC,EAAO5uH,OAAO,CAAC,EAAGq6J,GAGrC,IAAIC,EAAU9V,EAAWt8P,MACrBi1O,EAAe5hO,EAAKo+N,cAAcl2I,EAAK,gBAC3C+gK,EAAWrxO,KAAK,YAAagqN,GAAgB,GAAK16O,KAAK40B,GAAK,KAAO,GAE/DgmN,GACFmnB,EAAWrxO,KAAK,WAAY,CAAC6qN,EAAaX,EAAa,GAAIH,EAAW,IAAKc,EAAaX,EAAa,GAAIH,EAAW,MAGtHnD,GAAeyqB,EAAWrxO,KAAK,SAAU4mN,GAEzCyqB,EAAW5gB,SAAS12N,EAAOkiP,GAAeA,EAAYmL,kBACtD/V,EAAWr8E,SAAS0zD,GACpB,IAAIjmN,EAAUra,EAAKo+N,cAAcl2I,EAAK,WAEvB,MAAX7tE,IACF0kP,EAAQ1kP,QAAUA,GAGpB,IAAI4kP,EAAQj/P,EAAKo+N,cAAcl2I,EAAK,SAChCg3K,EAAWjW,EAAWkW,WAEb,MAATF,EACc,MAAZC,IACFjW,EAAWkW,WAAalW,EAAW5rB,GACnC4rB,EAAW5rB,IAAM4hC,GAEE,MAAZC,IACTjW,EAAW5rB,GAAK6hC,EAChBjW,EAAWkW,WAAa,MAG1B,IAAIC,EAAevL,GAAeA,EAAYuL,aAS9C,SAASC,EAAoBn3K,EAAKtE,GAChC,OAAOw7K,EAAep/P,EAAK60N,QAAQ3sI,GAAO2gJ,EAAgB7oO,EAAMkoF,EAClE,CAVA2vI,EAAQmR,cAAc+1B,EAASD,EAAgBh2B,EAAYC,EAAiB,CAC1EE,aAActU,EACduU,eAAgBhhJ,EAChBihJ,YAAak2B,EACbj2B,YAAY,EACZC,UAAW13N,IAObs3O,EAAW0V,sBAAwBnI,EAAS70B,GAC5CsnB,EAAW1qB,WAAaugC,EACxB7V,EAAWnM,iBAAmBza,GAAkB1N,EAAYuF,qBAAuB4iB,EAAmB,KACtGjlB,EAAQ8G,cAAcsqB,EACxB,EAiCA2U,EAAYvG,QAAU,SAAU39L,EAAIkqB,GAClC,IAAIqlK,EAAaloQ,KAAKg4P,QAAQ,GAE9Bh4P,KAAKmvJ,OAAS+4G,EAAW/4G,QAAS,IAEhCtsD,IAAOA,EAAI07K,aAAerW,EAAWt8P,MAAM+wB,KAAO,MACpDm6M,EAAQ+D,YAAYqtB,EAAY,CAC9Bt8P,MAAO,CACL0tB,QAAS,GAEXjD,MAAO,CAAC,EAAG,IACVr2B,KAAKu9Q,aAAcv9Q,KAAK6zO,UAAWl7J,EACxC,EAEA25J,EAAO2qB,SAAS+X,EAAWl+B,EAAQM,OACnC,IAAI3pN,EAAWunP,EACf7zQ,EAAOD,QAAUusB,C,wBC/WjB,IAAIqpN,EAAUtuN,EAAQ,OAElBwsP,EAAYxsP,EAAQ,MAEpBoH,EAAQpH,EAAQ,OAEhBlnB,EAAWsuB,EAAMtuB,SA8BrB,SAASo4P,EAAW8kB,GAClBx+Q,KAAKk7C,MAAQ,IAAI47L,EAAQM,MACzBp3O,KAAKy+Q,YAAcD,GAAcxJ,CACnC,CAEA,IAAI0J,EAAkBhlB,EAAWnyP,UAEjC,SAASo3Q,EAAgB1/P,EAAMjP,EAAOm3F,EAAKtE,GACzC,OAAO7yF,IAAUjB,MAAMiB,EAAM,MAAQjB,MAAMiB,EAAM,OAAS6yF,EAAI+7K,UAAY/7K,EAAI+7K,SAASz3K,OAGlFtE,EAAI0iJ,YAAc1iJ,EAAI0iJ,UAAU6I,QAAQp+O,EAAM,GAAIA,EAAM,MAA8C,SAAtCiP,EAAKo+N,cAAcl2I,EAAK,SAC/F,CAmHA,SAAS03K,EAAmBh8K,GAO1B,OANW,MAAPA,GAAgBvhG,EAASuhG,KAC3BA,EAAM,CACJ+7K,SAAU/7K,IAIPA,GAAO,CAAC,CACjB,CAiBA,SAASg5K,EAAgB58P,GACvB,IAAI20N,EAAc30N,EAAK8qO,UACvB,MAAO,CACLxK,UAAW3L,EAAY4F,SAAS,aAAagG,aAAa,CAAC,UAC3Du+B,eAAgBnqC,EAAY4F,SAAS,sBAAsBgG,eAC3DqB,aAAcjN,EAAY1wO,IAAI,gBAC9B69O,aAAcnN,EAAY1wO,IAAI,gBAC9Bo+O,eAAgB1N,EAAY1wO,IAAI,kBAChC6kP,WAAYnU,EAAY4F,SAAS,SACjCwO,gBAAiBpU,EAAY4F,SAAS,kBACtCiE,YAAa7J,EAAY1wO,IAAI,UAEjC,CA9IAw7Q,EAAgB3kB,WAAa,SAAU96O,EAAM4jF,GAC3CA,EAAMg8K,EAAmBh8K,GACzB,IAAI3nD,EAAQl7C,KAAKk7C,MACb04L,EAAc30N,EAAK8qO,UACnBnqI,EAAU5/G,KAAKqqK,MACfy0G,EAAa9+Q,KAAKy+Q,YAClB3L,EAAc+I,EAAgB58P,GAG7B2gG,GACH1kE,EAAMigM,YAGRl8N,EAAK2tF,KAAKgT,GAASr/G,KAAI,SAAU+oP,GAC/B,IAAIt5O,EAAQiP,EAAK69N,cAAcwM,GAE/B,GAAIq1B,EAAgB1/P,EAAMjP,EAAOs5O,EAAQzmJ,GAAM,CAC7C,IAAI2mJ,EAAW,IAAIs1B,EAAW7/P,EAAMqqO,EAAQwpB,GAC5CtpB,EAAS3yN,KAAK,WAAY7mB,GAC1BiP,EAAKw7N,iBAAiB6O,EAAQE,GAC9BtuM,EAAM36C,IAAIipP,EACZ,CACF,IAAGxyN,QAAO,SAAUsyN,EAAQI,GAC1B,IAAIF,EAAW5pI,EAAQk7H,iBAAiB4O,GACpC15O,EAAQiP,EAAK69N,cAAcwM,GAE1Bq1B,EAAgB1/P,EAAMjP,EAAOs5O,EAAQzmJ,IAKrC2mJ,GAIHA,EAASuQ,WAAW96O,EAAMqqO,EAAQwpB,GAClCh8B,EAAQ+D,YAAY2O,EAAU,CAC5B13N,SAAU9hB,GACT4jO,KANH4V,EAAW,IAAIs1B,EAAW7/P,EAAMqqO,GAChCE,EAAS3yN,KAAK,WAAY7mB,IAS5BkrC,EAAM36C,IAAIipP,GACVvqO,EAAKw7N,iBAAiB6O,EAAQE,IAhB5BtuM,EAAM0hC,OAAO4sK,EAiBjB,IAAG5sK,QAAO,SAAU8sK,GAClB,IAAI9nP,EAAKg+G,EAAQk7H,iBAAiB4O,GAClC9nP,GAAMA,EAAG00Q,SAAQ,WACfp7N,EAAM0hC,OAAOh7E,EACf,GACF,IAAG26I,UACHv8I,KAAKqqK,MAAQprJ,CACf,EAEAy/P,EAAgBzH,aAAe,WAC7B,OAAO,CACT,EAEAyH,EAAgB1kB,aAAe,WAC7B,IAAI/6O,EAAOjf,KAAKqqK,MAEZprJ,GAEFA,EAAKw8N,mBAAkB,SAAU75O,EAAIulG,GACnC,IAAIn3F,EAAQiP,EAAK69N,cAAc31I,GAC/BvlG,EAAGi1B,KAAK,WAAY7mB,EACtB,GAEJ,EAEA0uQ,EAAgBpH,yBAA2B,SAAUr4P,GACnDjf,KAAKg8Q,aAAeH,EAAgB58P,GACpCjf,KAAKqqK,MAAQ,KACbrqK,KAAKk7C,MAAMigM,WACb,EAUAujC,EAAgBlH,kBAAoB,SAAUC,EAAYx4P,EAAM4jF,GAG9D,SAASo5K,EAA0Br6Q,GAC5BA,EAAG+2P,UACN/2P,EAAGu8O,YAAcv8O,EAAGg3P,eAAgB,EAExC,CANA/1J,EAAMg8K,EAAmBh8K,GAQzB,IAAK,IAAIsE,EAAMswK,EAAW/4N,MAAOyoD,EAAMswK,EAAW94N,IAAKwoD,IAAO,CAC5D,IAAIn3F,EAAQiP,EAAK69N,cAAc31I,GAE/B,GAAIw3K,EAAgB1/P,EAAMjP,EAAOm3F,EAAKtE,GAAM,CAC1C,IAAIjhG,EAAK,IAAI5B,KAAKy+Q,YAAYx/P,EAAMkoF,EAAKnnG,KAAKg8Q,cAC9Cp6Q,EAAGi3P,SAASojB,GACZr6Q,EAAGi1B,KAAK,WAAY7mB,GACpBhQ,KAAKk7C,MAAM36C,IAAIqB,GACfqd,EAAKw7N,iBAAiBtzI,EAAKvlG,EAC7B,CACF,CACF,EAYA88Q,EAAgB9hM,OAAS,SAAUmiM,GACjC,IAAI7jO,EAAQl7C,KAAKk7C,MACbj8B,EAAOjf,KAAKqqK,MAEZprJ,GAAQ8/P,EACV9/P,EAAKw8N,mBAAkB,SAAU75O,GAC/BA,EAAG00Q,SAAQ,WACTp7N,EAAM0hC,OAAOh7E,EACf,GACF,IAEAs5C,EAAMigM,WAEV,EAgBA,IAAI1tN,EAAWisO,EACfv4P,EAAOD,QAAUusB,C,wBC3MjB,IAAIqpN,EAAUtuN,EAAQ,OAElBi5N,EAAUj5N,EAAQ,OAElBk+D,EAAQ+6J,EAAQ/6J,MAoBpB,SAASs4L,EAAmB98B,EAAW+8B,EAAcrrC,GACnD,IAAI32M,EAAOilN,EAAUpK,UACjBM,EAAe8J,EAAUlK,cAAcI,eACvCt4N,EAAImd,EAAKnd,EACT6e,EAAI1B,EAAK0B,EACT6J,EAAQvL,EAAKuL,MACbC,EAASxL,EAAKwL,OACd1O,EAAY65M,EAAY1wO,IAAI,oBAAsB,EAEtD4c,GAAKia,EAAY,EACjB4E,GAAK5E,EAAY,EACjByO,GAASzO,EACT0O,GAAU1O,EAEVja,EAAI3Z,KAAK2I,MAAMgR,GACf0oB,EAAQriC,KAAKugF,MAAMl+C,GACnB,IAAI6yM,EAAW,IAAIvE,EAAQuF,KAAK,CAC9B7mN,MAAO,CACL1V,EAAGA,EACH6e,EAAGA,EACH6J,MAAOA,EACPC,OAAQA,KAcZ,OAVIw2O,IACF5jC,EAAS7lN,MAAM4iN,EAAe,QAAU,UAAY,EACpDtB,EAAQkX,UAAU3S,EAAU,CAC1B7lN,MAAO,CACLgT,MAAOA,EACPC,OAAQA,IAETmrM,IAGEyH,CACT,CAEA,SAAS6jC,EAAoBjjC,EAAOgjC,EAAcrrC,GAChD,IAAIurC,EAAaljC,EAAMnE,UAEnBuD,EAAW,IAAIvE,EAAQ8F,OAAO,CAChCpnN,MAAO,CACLtG,GAAIw3D,EAAMu1J,EAAM/sN,GAAI,GACpBC,GAAIu3D,EAAMu1J,EAAM9sN,GAAI,GACpBgtN,GAAIz1J,EAAMy4L,EAAWhjC,GAAI,GACzBpvN,EAAG25D,EAAMy4L,EAAWpyP,EAAG,GACvB8S,WAAYs/O,EAAWt/O,WACvBC,SAAUq/O,EAAWr/O,SACrB+yJ,UAAWssF,EAAWtsF,aAa1B,OATIosF,IACF5jC,EAAS7lN,MAAMsK,SAAWq/O,EAAWt/O,WACrCi3M,EAAQkX,UAAU3S,EAAU,CAC1B7lN,MAAO,CACLsK,SAAUq/O,EAAWr/O,WAEtB8zM,IAGEyH,CACT,CAEA,SAAS9D,EAAe1E,EAAUosC,EAAcrrC,GAC9C,OAAKf,EAEwB,UAAlBA,EAASruO,KACX06Q,EAAoBrsC,EAAUosC,EAAcrrC,GACxB,gBAAlBf,EAASruO,KACXw6Q,EAAmBnsC,EAAUosC,EAAcrrC,GAG7C,KAPE,IAQX,CAEA1yO,EAAQ89Q,mBAAqBA,EAC7B99Q,EAAQg+Q,oBAAsBA,EAC9Bh+Q,EAAQq2O,eAAiBA,C,iCCvGzB,IAAIjF,EAAS9pN,EAAQ,OAEjBy5O,EAAOz5O,EAAQ,OAEfuM,EAAQvM,EAAQ,KAEhB42P,EAAW52P,EAAQ,MAEnB62P,EAAmB72P,EAAQ,OAE3BwnP,EAAmBxnP,EAAQ,OAE3Bq3N,EAAsBr3N,EAAQ,OAoBlC,SAASiF,EAASqxD,EAAOqB,EAAOyzJ,EAAavgH,EAAU2vI,GAKrD,IAFA,IAAI7xO,EAAQ,IAAI4D,EAAMs+F,GAEbrvH,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAChCmtB,EAAMmuP,QAAQhtC,EAAOoS,SACrB5lK,EAAM96E,GAAGwF,GAAIs1E,EAAM96E,GAAGS,KAAMT,GAAIA,GAGlC,IAAIu7Q,EAAe,GACfC,EAAa,GACbC,EAAY,EAEhB,IAASz7Q,EAAI,EAAGA,EAAIm8E,EAAMn+E,OAAQgC,IAAK,CACrC,IAAI07Q,EAAOv/L,EAAMn8E,GACbU,EAASg7Q,EAAKh7Q,OACdgB,EAASg6Q,EAAKh6Q,OAEdyrB,EAAMwuP,QAAQj7Q,EAAQgB,EAAQ+5Q,KAChCD,EAAWv7Q,KAAKy7Q,GAChBH,EAAat7Q,KAAKquO,EAAOoS,SAASg7B,EAAKl2Q,GAAI9E,EAAS,MAAQgB,IAC5D+5Q,IAEJ,CAEA,IACIxc,EADApwB,EAAWe,EAAY1wO,IAAI,oBAG/B,GAAiB,gBAAb2vO,GAA2C,UAAbA,EAChCowB,EAAWpjB,EAAoB/gK,EAAO80J,OACjC,CACL,IAAIgsC,EAAe5P,EAAiB9sQ,IAAI2vO,GACpCsoB,EAAkBykB,GAAsC,SAAtBA,EAAap7Q,MAAkBo7Q,EAAahlH,YAAmB,GAIjG03E,EAAOj7N,QAAQ8jP,EAAiB,SAAW,GAC7CA,EAAgBl6P,OAAO,CAAC,UAG1B,IAAI4+Q,EAAiBR,EAAiBvgM,EAAO,CAC3Cq8K,gBAAiBA,IAEnB8H,EAAW,IAAIhB,EAAK4d,EAAgBjsC,GACpCqvB,EAASpkM,SAASigB,EACpB,CAEA,IAAIopF,EAAW,IAAI+5F,EAAK,CAAC,SAAUruB,GAkBnC,OAjBA1rE,EAASrpG,SAAS2gN,EAAYD,GAC9Bvc,GAAcA,EAAWC,EAAU/6F,GACnCk3G,EAAS,CACPU,SAAU7c,EACVh2F,OAAQ97I,EACR4uP,WAAY,QACZjqN,MAAO,CACLslB,KAAM6nL,EACNtiL,KAAMunF,GAER83G,UAAW,CACT5kM,KAAM,OACNuF,KAAM,cAIVxvD,EAAM6F,SACC7F,CACT,CAEAhwB,EAAOD,QAAUusB,C,wBCrGjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBy5O,EAAOz5O,EAAQ,OAEf62P,EAAmB72P,EAAQ,OAE3By3P,EAAcz3P,EAAQ,OAEtB03P,EAAyBD,EAAYC,uBAErCC,EAAmB33P,EAAQ,OAE3B43P,EAAyBD,EAAiBC,uBAE1C3lB,EAASjyO,EAAQ,OAEjB63P,EAAmB5lB,EAAO4lB,iBAE1BrQ,EAAmBxnP,EAAQ,OAE3B83P,EAAe93P,EAAQ,OAEvB+3P,EAA0BD,EAAaC,wBAEvCC,EAASh4P,EAAQ,OAEjBi4P,EAAmBj4P,EAAQ,OAE3Bk4P,EAAkBD,EAAiBC,gBAEnC/lB,EAAgBnyO,EAAQ,MAExBm4P,EAAkChmB,EAAcgmB,gCA4BpD,SAAS9gC,EAAoBn7O,EAAQkvO,EAAa/wI,GAChDA,EAAMA,GAAO,CAAC,EAET29K,EAAOI,WAAWl8Q,KACrBA,EAAS87Q,EAAOK,mBAAmBn8Q,IAGrC,IAGIo8Q,EAHAC,EAAentC,EAAY1wO,IAAI,oBAC/B89Q,EAAqBhR,EAAiB9sQ,IAAI69Q,GAC1CE,EAAeV,EAAwB3sC,GAGvCqtC,IACFH,EAAkBxuC,EAAO5oN,IAAIu3P,EAAaC,cAAc,SAAUjvI,GAChE,IAAI0kH,EAAU,CACZlyP,KAAMwtI,GAEJkvI,EAAYF,EAAaG,QAAQl+Q,IAAI+uI,GAEzC,GAAIkvI,EAAW,CACb,IAAIhrO,EAAWgrO,EAAUj+Q,IAAI,QAC7ByzP,EAAQnyP,KAAO47Q,EAAuBjqO,EACxC,CAEA,OAAOwgN,CACT,KAGGmqB,IAEHA,EAAkBE,IAAuBA,EAAmBK,kBAAoBL,EAAmBK,oBAAsBL,EAAmBpmH,WAAWz4J,UAAY,CAAC,IAAK,MAG3K,IAKIm/Q,EACAC,EANAC,EAAcnC,EAAiB36Q,EAAQ,CACzCy2P,gBAAiB2lB,EACjB7Q,cAAeptK,EAAIotK,cACnB7U,gBAAiBv4J,EAAIm9I,mBAAqB1N,EAAOuD,MAAM8qC,EAAiCG,EAAiBltC,GAAe,OAI1HqtC,GAAgB3uC,EAAO56H,KAAK8pK,GAAa,SAAU7qB,EAAS8qB,GAC1D,IAAI3qB,EAAWH,EAAQG,SACnB4qB,EAAoBT,EAAaU,gBAAgBz+Q,IAAI4zP,GAErD4qB,IAC2B,MAAzBJ,IACFA,EAAwBG,GAG1B9qB,EAAQirB,YAAcF,EAAkBG,kBAGR,MAA9BlrB,EAAQmrB,UAAUC,WACpBR,GAAgB,EAEpB,IAEKA,GAA0C,MAAzBD,IACpBE,EAAYF,GAAuBQ,UAAUC,SAAW,GAG1D,IAAIC,EAAuBtB,EAAgB9sC,EAAa4tC,GACpDvqQ,EAAO,IAAIgrP,EAAKuf,EAAa5tC,GACjC38N,EAAKgrQ,mBAAmBD,GACxB,IAAIE,EAA0C,MAAzBZ,GAAiCa,EAA0Bz9Q,GAAU,SAAU09Q,EAAS3rB,EAAS5iB,EAAW4tC,GAE/H,OAAOA,IAAaH,EAAwBztC,EAAY7zO,KAAKqiR,sBAAsBD,EAAS3rB,EAAS5iB,EAAW4tC,EAClH,EAAI,KAGJ,OAFAxqQ,EAAK06P,eAAgB,EACrB16P,EAAK4nD,SAASn6D,EAAQ,KAAMw9Q,GACrBjrQ,CACT,CAEA,SAASkrQ,EAA0Bz9Q,GACjC,GAAIA,EAAO49Q,eAAiBpC,EAAwB,CAClD,IAAIqC,EAAaC,EAAiB99Q,EAAOua,MAAQ,IACjD,OAAqB,MAAdsjQ,IAAuBjwC,EAAOxrO,QAAQu5Q,EAAiBkC,GAChE,CACF,CAEA,SAASC,EAAiBvjQ,GACxB,IAAIjb,EAAI,EAER,MAAOA,EAAIib,EAAKjd,QAAqB,MAAXid,EAAKjb,GAC7BA,IAGF,OAAOib,EAAKjb,EACd,CAEA,IAAIypB,EAAWoyN,EACf1+O,EAAOD,QAAUusB,C,wBCvJjB,IAAI4xP,EAAmB72P,EAAQ,OAE3By5O,EAAOz5O,EAAQ,OAEfoH,EAAQpH,EAAQ,OAEhBk7F,EAAS9zF,EAAM8zF,OACf58G,EAAU8oB,EAAM9oB,QAqCpB,SAAS2mB,EAASmmN,EAAa/wI,EAAK4/K,GAClC5/K,EAAM/7F,EAAQ+7F,IAAQ,CACpBs4J,gBAAiBt4J,IACd6gB,EAAO,CAAC,EAAG7gB,GAChB,IAAIn+F,EAASkvO,EAAYmM,YACrB2iC,EAAiBrD,EAAiB36Q,EAAQm+F,GAC1C5rF,EAAO,IAAIgrP,EAAKygB,EAAgB9uC,GAEpC,OADA38N,EAAK4nD,SAASn6D,EAAQ+9Q,GACfxrQ,CACT,CAEA9V,EAAOD,QAAUusB,C,uBCvDjB,IAAIgtO,EAASjyO,EAAQ,OAEjBm6P,EAAYloB,EAAOkoB,UAwBvB,SAASl1P,IACP,IAAIm1P,EAAQD,IACZ,OAAO,SAAU/uC,GACf,IAAIr7J,EAASqqM,EAAMhvC,GACfoF,EAAkBpF,EAAYoF,gBAC9B6pC,EAAgBtqM,EAAOwjH,MACvB+mF,EAAsBvqM,EAAOwqM,kBAI7BhnF,EAAQxjH,EAAOwjH,MAAQi9C,GAAmBA,EAAgBj9C,MAC1DykD,EAAcjoK,EAAOwqM,kBAAoB/pC,GAAmBA,EAAgB+pC,kBAChF,SAAUF,EAAgB9mF,GAAS+mF,EAAsBtiC,IAAgB,OAC3E,CACF,CAEAr/O,EAAOD,QAAUusB,C,wBC1CjB,IAAI0lN,EAAU3qN,EAAQ,OA4BtB2qN,EAAQI,eAAe,CACrB/uO,KAAM,qBACN6e,MAAO,qBACP2T,OAAQ,8BACP,WAAa,IAQhBm8M,EAAQI,eAAe,CACrB/uO,KAAM,uBACN6e,MAAO,uBACP2T,OAAQ,gCACP,WAAa,G,iCC5ChB,IAAIgsP,EAAgBx6P,EAAQ,OAExBy6P,EAAmBD,EAAcC,iBA0BrC,SAASn7B,EAAgB7oO,EAAM40N,GAC7B,IAAI/+B,EAAY71L,EAAKysO,aAAa,kBAAkB,GAChDl0O,EAAMs9L,EAAU9yM,OAEpB,GAAY,IAARwV,EACF,OAAOyrQ,EAAiBhkQ,EAAM40N,EAAW/+B,EAAU,IAC9C,GAAIt9L,EAAK,CAGd,IAFA,IAAIolI,EAAO,GAEF54I,EAAI,EAAGA,EAAI8wM,EAAU9yM,OAAQgC,IAAK,CACzC,IAAIgL,EAAMi0Q,EAAiBhkQ,EAAM40N,EAAW/+B,EAAU9wM,IACtD44I,EAAK34I,KAAK+K,EACZ,CAEA,OAAO4tI,EAAK9xI,KAAK,IACnB,CACF,CAEA5J,EAAQ4mP,gBAAkBA,C,iCC9C1B,IAAIxV,EAAS9pN,EAAQ,OAoBjB06P,EAAgB,SAOhBC,EAAyB,SAAUvvC,GACrC,OAAOA,EAAY1wO,IAAI,kBAAoB,IAC7C,EASIkgR,EAAkB,SAAUxvC,EAAayvC,GAC3C,IAAIC,EAAsBH,EAAuBvvC,GAC7C5xO,EAAS,GACTuhR,EAAgB,GAEpB,GAAmC,kBAAxBD,EACTthR,EAASshR,OACJ,GAAIhxC,EAAOxrO,QAAQw8Q,GAExB,YADA1vC,EAAY4vC,gBAAkBF,GAK5BD,EAAerhR,IACjBA,EAASqhR,GAIX,IAAI7rQ,EAAMxV,EAAS,EAAIA,EAAS,EAAIA,EAAS,EAC7CuhR,EAAgB,GAEhB,IAAK,IAAIv/Q,EAAI,EAAGA,EAAIwT,EAAKxT,IACvBu/Q,EAAct/Q,MAAMD,EAAI,EAAIA,EAAI,EAAIA,GAAK,IAAMA,EAAI,GAAK,EAAI,IAG9D4vO,EAAY4vC,gBAAkBD,CAChC,EAUIE,EAAgB,SAAUhuI,EAAInF,EAAIsjG,GACpC,IAAIlvO,EAAS,CAAC+wI,EAAGjsI,GAAIisI,EAAGo+F,WAAW/oO,KAAK,KACpCpF,EAAS,CAAC4qI,EAAG9mI,GAAI8mI,EAAGujG,WAAW/oO,KAAK,KACxC,MAAO,CAAC8oO,EAAY/lO,IAAKnJ,EAAQgB,GAAQoF,KAAKo4Q,EAChD,EAQIQ,EAAiB,SAAU7/Q,GAC7B,IAAIkE,EAAOlE,EAAIP,MAAM4/Q,GACrB,MAAO,CAACn7Q,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAAI+C,KAAKo4Q,EAC1C,EAQIS,EAAiB,SAAUhjM,EAAMizJ,GACnC,IAAI/vO,EAAM4/Q,EAAc9iM,EAAK+5C,MAAO/5C,EAAKg6C,MAAOi5G,GAChD,OAAOA,EAAYgwC,UAAU//Q,EAC/B,EASIggR,EAA6B,SAAUljM,EAAMizJ,GAC/C,IAAIp8N,EAAMssQ,EAAwBL,EAAc9iM,EAAK+5C,MAAO/5C,EAAKg6C,MAAOi5G,GAAcA,GAClFmwC,EAAOD,EAAwBL,EAAc9iM,EAAKg6C,MAAOh6C,EAAK+5C,MAAOk5G,GAAcA,GACvF,OAAOp8N,EAAMusQ,CACf,EAOID,EAA0B,SAAUjgR,EAAK+vO,GAC3C,IAAIowC,EAAUpwC,EAAYgwC,UAC1B,OAAOI,EAAQngR,GAAOmgR,EAAQngR,GAAK7B,OAAS,CAC9C,EAQA,SAASsgQ,EAAkB1uB,GACpBuvC,EAAuBvvC,KAI5BA,EAAY4vC,gBAAkB,GAC9B5vC,EAAYgwC,UAAY,CAAC,EAEzBR,EAAgBxvC,GAClB,CAUA,SAAS2uB,EAA0B9sH,EAAInF,EAAIsjG,EAAa3xO,GACtD,GAAKkhR,EAAuBvvC,GAA5B,CAIA,IAAI/vO,EAAM4/Q,EAAchuI,EAAInF,EAAIsjG,GAC5BowC,EAAUpwC,EAAYgwC,UACtBK,EAAgBD,EAAQN,EAAe7/Q,IAEvCmgR,EAAQngR,KAASogR,EACnBD,EAAQngR,GAAKqgR,WAAY,EAChBD,GAAiBD,EAAQngR,KAClCogR,EAAcC,WAAY,EAC1BF,EAAQngR,GAAKqgR,WAAY,GAG3BF,EAAQngR,GAAOmgR,EAAQngR,IAAQ,GAC/BmgR,EAAQngR,GAAKI,KAAKhC,EAdlB,CAeF,CASA,SAASopQ,EAAoB1qL,EAAMizJ,EAAa3xO,EAAOkiR,GACrD,IAAIC,EAAsBjB,EAAuBvvC,GAC7CywC,EAAe/xC,EAAOxrO,QAAQs9Q,GAElC,IAAKA,EACH,OAAO,KAGT,IAAIE,EAAYX,EAAehjM,EAAMizJ,GAErC,IAAK0wC,EACH,OAAO,KAKT,IAFA,IAAItoJ,GAAa,EAERh4H,EAAI,EAAGA,EAAIsgR,EAAUtiR,OAAQgC,IACpC,GAAIsgR,EAAUtgR,KAAO/B,EAAO,CAC1B+5H,EAAYh4H,EACZ,KACF,CAIF,IAAIugR,EAAWV,EAA2BljM,EAAMizJ,GAChDwvC,EAAgBxvC,EAAa2wC,GAC7B5jM,EAAKruC,UAAYquC,EAAKruC,WAAa,CAAC,EAEpC,IAAIkyO,EAASf,EAAc9iM,EAAK+5C,MAAO/5C,EAAKg6C,MAAOi5G,GAC/C2vC,EAAgB3vC,EAAY4vC,gBAE5BiB,EAAmBJ,GAAmBE,EAAW,EAAf,EAAuB,EAE7D,GAAKD,EAAUJ,UAqBb,OAAOX,EAAckB,EAAmBzoJ,GAnBxC,IAAI0oJ,EAAchB,EAAec,GAC7BhtQ,EAAMssQ,EAAwBY,EAAa9wC,GAC3C+wC,EAAWpB,EAAcvnJ,EAAYxkH,EAAMitQ,GAE/C,OAAIN,EAEEE,EACED,GAAkD,IAA3BA,EAAoB,IACrC5sQ,EAAMitQ,GAAoB,EAAIE,GAAYA,IAEzCntQ,EAAM,EAAI,EAAI,GAAKitQ,GAAoB,EAAIE,GAAYA,GAG1DntQ,EAAMitQ,GAAoB,EAAIE,GAAYA,EAG7CpB,EAAcvnJ,EAAYxkH,EAAMitQ,EAK7C,CAEAvjR,EAAQohQ,kBAAoBA,EAC5BphQ,EAAQqhQ,0BAA4BA,EACpCrhQ,EAAQmqQ,oBAAsBA,C,iCC7O9B,IAAI/4B,EAAS9pN,EAAQ,OAoBrB,SAASo8P,EAAmBpxC,EAASqxC,EAAmBjxC,GACtD,GAAIJ,GAAWlB,EAAOj7N,QAAQwtQ,EAAmBrxC,EAAQhvO,OAAS,EAAG,CACnE,IAAI0zB,EAAO07M,EAAY7oI,UAAU+5K,KAAK5sP,KAClC6sP,EAAavxC,EAAQuxC,WAMzB,GAJ0B,kBAAfA,IACTA,EAAa7sP,EAAK8sP,YAAYD,IAG5BA,GAAc7sP,EAAKw7D,SAASqxL,GAC9B,MAAO,CACL3pM,KAAM2pM,GAIV,IAAI5pI,EAAeq4F,EAAQr4F,aAE3B,GAAoB,MAAhBA,IAAyB4pI,EAAa7sP,EAAK8sP,YAAY7pI,IACzD,MAAO,CACL//D,KAAM2pM,EAGZ,CACF,CAGA,SAASE,EAAc7pM,GACrB,IAAIle,EAAO,GAEX,MAAOke,EACLA,EAAOA,EAAK6lB,WACZ7lB,GAAQle,EAAKj5D,KAAKm3E,GAGpB,OAAOle,EAAKliC,SACd,CAEA,SAASkqP,EAAcC,EAAU/pM,GAC/B,IAAIgqM,EAAWH,EAAcE,GAC7B,OAAO7yC,EAAOj7N,QAAQ+tQ,EAAUhqM,IAAS,CAC3C,CAGA,SAASiqM,EAAiBjqM,EAAMw4J,GAC9B,IAAI0xC,EAAe,GAEnB,MAAOlqM,EAAM,CACX,IAAImqM,EAAgBnqM,EAAKy4J,UACzByxC,EAAarhR,KAAK,CAChBQ,KAAM22E,EAAK32E,KACXovO,UAAW0xC,EACXzjR,MAAO8xO,EAAYi+B,YAAY0T,KAEjCnqM,EAAOA,EAAK6lB,UACd,CAGA,OADAqkL,EAAatqP,UACNsqP,CACT,CAEApkR,EAAQ0jR,mBAAqBA,EAC7B1jR,EAAQ+jR,cAAgBA,EACxB/jR,EAAQgkR,cAAgBA,EACxBhkR,EAAQmkR,iBAAmBA,C,iCCnF3B,IAAI7qB,EAAmBhyO,EAAQ,OAE3B8pN,EAAS9pN,EAAQ,OAEjB23P,EAAmB33P,EAAQ,OAE3B43P,EAAyBD,EAAiBC,uBAE1CzlB,EAAgBnyO,EAAQ,MAExBm4P,EAAkChmB,EAAcgmB,gCAoBhDh4B,EAAmB,CAKrB68B,aAAc,KAKd1lC,eAAgB,SAAU/0M,EAAQ2nM,GAIhC,IAAIkvC,EAKA6D,EAJAC,EAAahzC,EAAQizC,aAAa,QAAS3lR,KAAKkD,IAAI,eACpD0iR,EAAalzC,EAAQizC,aAAa,QAAS3lR,KAAKkD,IAAI,eACpD2iR,EAAYH,EAAWxiR,IAAI,QAC3B4iR,EAAYF,EAAW1iR,IAAI,QAIb,aAAd2iR,GACF96O,EAAOo9D,OAAS,aAChBy5K,EAAc8D,EAAW7D,iBACzB4D,GAAa,GACU,aAAdK,GACT/6O,EAAOo9D,OAAS,WAChBy5K,EAAcgE,EAAW/D,iBACzB4D,GAAa,GAEb16O,EAAOo9D,OAASp9D,EAAOo9D,QAAU,aAGnC,IAAIqjJ,EAAY,CAAC,IAAK,KAClBu6B,EAAqC,eAAlBh7O,EAAOo9D,OAA0B,EAAI,EACxD69K,EAAchmR,KAAKwlR,aAAeh6B,EAAUu6B,GAC5CE,EAAez6B,EAAU,EAAIu6B,GAC7BG,EAAa,CAACR,EAAYE,GAC1BO,EAAeD,EAAWH,GAAkB7iR,IAAI,QAChDkjR,EAAgBF,EAAW,EAAIH,GAAkB7iR,IAAI,QACrD+b,EAAO8rB,EAAO9rB,KAGlB,GAAIA,GAAQwmQ,EAAY,CACtB,IAAIY,EAAgB,GACpB/zC,EAAO56H,KAAKz4F,GAAM,SAAUuG,EAAMvjB,GAChC,IAAIqkR,EAEA9gQ,EAAK1jB,OAASwwO,EAAOxrO,QAAQ0e,EAAK1jB,QACpCwkR,EAAU9gQ,EAAK1jB,MAAMK,QACrBqjB,EAAK1jB,MAAMosB,QAAQjsB,IACVqwO,EAAOxrO,QAAQ0e,IACxB8gQ,EAAU9gQ,EAAKrjB,QACfqjB,EAAK0I,QAAQjsB,IAEbqkR,EAAU9gQ,EAGZ6gQ,EAAcpiR,KAAKqiR,EACrB,IACAv7O,EAAO9rB,KAAOonQ,CAChB,CAEA,IAAIx9B,EAAyB7oP,KAAK6oP,uBAC9BsS,EAAkB,CAAC,CACrB12P,KAAMuhR,EACNxhR,KAAM47Q,EAAuB+F,GAC7BvE,YAAaA,EACbE,UAAW,CACTyE,SAAS,EACTxE,SAAU,GAEZyE,QAAS,CAAC,SACT,CACD/hR,KAAMwhR,EACNzhR,KAAM47Q,EAAuBgG,GAC7BI,QAAS39B,EAAuB1mP,UAElC,OAAOq4P,EAAiBx6P,KAAM,CAC5Bm7P,gBAAiBA,EACjBsrB,gBAAiB59B,EAAuB7mP,OAAS,EACjDo5P,gBAAiB9oB,EAAOuD,MAAM8qC,EAAiCxlB,EAAiBn7P,OAEpF,EAMAg4O,YAAa,WACX,IAAI/lG,EAAMjyI,KAAKwlR,aACf,OAAOxlR,KAAK0yO,QAAQizC,aAAa1zI,EAAM,OAAQjyI,KAAKkD,IAAI+uI,EAAM,cAAc7mG,IAC9E,GAEFlqC,EAAQynP,iBAAmBA,C,wBC7H3B,IAAIxV,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAER,IAAI2wO,EAAe3wO,EAAQ,OAEvB4wO,EAAe5wO,EAAQ,OAEvBk+P,EAAal+P,EAAQ,OAEzBA,EAAQ,OAqBR2qN,EAAQ4C,eAAeojB,EAAa,OAAQ,SAAU,SACtDhmB,EAAQsC,eAAe2jB,EAAa,SAEpCjmB,EAAQonB,kBAAkBpnB,EAAQuC,SAASixC,UAAUC,UAAWF,EAAW,Q,wBCpC3E,IAAIjzO,EAAUjrB,EAAQ,OAIlBq3N,GAFUpsM,EAAQojM,QAEIruN,EAAQ,QAE9Bo3N,EAAcp3N,EAAQ,OAoBtBiF,EAAWmyN,EAAYl8H,OAAO,CAChCl/G,KAAM,cACN0xO,aAAc,CAAC,OAAQ,SACvB4J,eAAgB,SAAU/0M,EAAQ2nM,GAChC,OAAOmN,EAAoB7/O,KAAK+/O,YAAa//O,KAAM,CACjDggP,oBAAoB,GAExB,EACAxJ,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EACHs8J,iBAAkB,cAClBgM,iBAAiB,EACjBiB,gBAAgB,EAMhBliB,MAAM,EAENlwL,MAAO,CACLpd,SAAU,OAIZwgB,UAAW,CACT9J,MAAO,EACPhkC,KAAM,SAURiL,MAAM,EAEN4iC,QAAQ,EACRw0O,eAAgB,KAChB5kQ,OAAQ,cACR2+N,WAAY,EACZC,aAAc,KACdimC,YAAY,EAKZC,cAAe,OAEfC,cAAc,EAEdC,SAAU,OACVjkH,gBAAiB,SAEjBw9E,YAAa,EACb0mC,oBAAqBr0L,OAIzB1xF,EAAOD,QAAUusB,C,iCCxFjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB8pN,GAFU7+L,EAAQojM,QAETruN,EAAQ,QAEjB2+P,EAAQ3+P,EAAQ,MAEhBikP,EAAa0a,EAAM1a,WAEnB/S,EAAalxO,EAAQ,OAErBwsP,EAAYxsP,EAAQ,MAEpB4+P,EAAoB5+P,EAAQ,OAE5BsuN,EAAUtuN,EAAQ,OAElB6+P,EAAY7+P,EAAQ,OAEpB8+P,EAAQ9+P,EAAQ,MAEhBszO,EAAWwrB,EAAMxrB,SACjBD,EAAUyrB,EAAMzrB,QAEhB5S,EAAYzgO,EAAQ,OAEpBuuN,EAAUvuN,EAAQ,OAElB++P,EAAuBxwC,EAAQwwC,qBAC/BC,EAAoBzwC,EAAQywC,kBAE5BlwC,EAA8B9uN,EAAQ,OAEtCw2P,EAAqB1nC,EAA4B0nC,mBACjDE,EAAsB5nC,EAA4B4nC,oBAqBtD,SAASuI,EAAaC,EAASC,GAC7B,GAAID,EAAQ1lR,SAAW2lR,EAAQ3lR,OAA/B,CAIA,IAAK,IAAIgC,EAAI,EAAGA,EAAI0jR,EAAQ1lR,OAAQgC,IAAK,CACvC,IAAI8iC,EAAK4gP,EAAQ1jR,GACb+iC,EAAK4gP,EAAQ3jR,GAEjB,GAAI8iC,EAAG,KAAOC,EAAG,IAAMD,EAAG,KAAOC,EAAG,GAClC,MAEJ,CAEA,OAAO,CAXP,CAYF,CAEA,SAAS6gP,EAAgBF,EAASC,GAChC,IAAIE,EAAO,GACPC,EAAO,GACPC,EAAO,GACPnwI,EAAO,GAIX,OAHA60H,EAAWib,EAASG,EAAMC,GAC1Brb,EAAWkb,EAASI,EAAMnwI,GAEnBzxI,KAAKwI,IAAIxI,KAAK6iB,IAAI6+P,EAAK,GAAKE,EAAK,IAAK5hR,KAAK6iB,IAAI6+P,EAAK,GAAKE,EAAK,IAAK5hR,KAAK6iB,IAAI8+P,EAAK,GAAKlwI,EAAK,IAAKzxI,KAAK6iB,IAAI8+P,EAAK,GAAKlwI,EAAK,IACjI,CAEA,SAASowI,EAAU31O,GACjB,MAAyB,kBAAXA,EAAsBA,EAASA,EAAS,GAAM,CAC9D,CASA,SAAS41O,EAAmBp1C,EAAU5zN,EAAMipQ,GAC1C,IAAKA,EAAc1lC,SACjB,MAAO,GAKT,IAFA,IAAI92N,EAAS,GAEJy7E,EAAM,EAAG3vF,EAAMyH,EAAKsJ,QAAS4+E,EAAM3vF,EAAK2vF,IAC/Cz7E,EAAOznB,KAAKujR,EAAkBU,EAAer1C,EAAU5zN,EAAMkoF,IAG/D,OAAOz7E,CACT,CAEA,SAASy8P,EAAmBz8P,EAAQmnN,EAAUu1C,GAK5C,IAJA,IAAIrwC,EAAWlF,EAASmF,cACpBqwC,EAA6B,MAAjBtwC,EAAS9lG,KAAgC,WAAjB8lG,EAAS9lG,IAAmB,EAAI,EACpEq2I,EAAa,GAERtkR,EAAI,EAAGA,EAAI0nB,EAAO1pB,OAAS,EAAGgC,IAAK,CAC1C,IAAIukR,EAAS78P,EAAO1nB,EAAI,GACpBs8H,EAAK50G,EAAO1nB,GAChBskR,EAAWrkR,KAAKq8H,GAChB,IAAIkoJ,EAAS,GAEb,OAAQJ,GACN,IAAK,MACHI,EAAOH,GAAaE,EAAOF,GAC3BG,EAAO,EAAIH,GAAa/nJ,EAAG,EAAI+nJ,GAE/BC,EAAWrkR,KAAKukR,GAChB,MAEF,IAAK,SAEH,IAAIC,GAAUnoJ,EAAG+nJ,GAAaE,EAAOF,IAAc,EAC/CK,EAAU,GACdF,EAAOH,GAAaK,EAAQL,GAAaI,EACzCD,EAAO,EAAIH,GAAa/nJ,EAAG,EAAI+nJ,GAC/BK,EAAQ,EAAIL,GAAaE,EAAO,EAAIF,GACpCC,EAAWrkR,KAAKukR,GAChBF,EAAWrkR,KAAKykR,GAChB,MAEF,QACEF,EAAOH,GAAa/nJ,EAAG+nJ,GACvBG,EAAO,EAAIH,GAAaE,EAAO,EAAIF,GAEnCC,EAAWrkR,KAAKukR,GAEtB,CAIA,OADA98P,EAAO1nB,IAAMskR,EAAWrkR,KAAKynB,EAAO1nB,IAC7BskR,CACT,CAEA,SAASK,EAAkB1pQ,EAAM4zN,GAC/B,IAAI+1C,EAAiB3pQ,EAAKq+N,UAAU,cAEpC,GAAKsrC,GAAmBA,EAAe5mR,QAAWid,EAAKsJ,SAKjC,gBAAlBsqN,EAASruO,KAAb,CAOA,IAHA,IAAIsyP,EACA+xB,EAEK7kR,EAAI4kR,EAAe5mR,OAAS,EAAGgC,GAAK,EAAGA,IAAK,CACnD,IAAIy9Q,EAAWmH,EAAe5kR,GAAG8kR,UAC7BryB,EAAUx3O,EAAK27I,WAAW6mH,GAC1B9qB,EAAU13O,EAAK23O,iBAAiBH,GAGpC,GAFAK,EAAWH,GAAWA,EAAQG,SAEb,MAAbA,GAAiC,MAAbA,EAAkB,CACxC+xB,EAAaD,EAAe5kR,GAC5B,KACF,CACF,CAEA,GAAK6kR,EAAL,CAUA,IAAIz9O,EAAOynM,EAASs+B,QAAQra,GAExBiyB,EAAaz2C,EAAO5oN,IAAIm/P,EAAWG,OAAO,SAAUlxP,GACtD,MAAO,CACL8/M,MAAOxsM,EAAK44M,cAAc54M,EAAK64M,YAAYnsN,EAAKh2B,QAChD8uB,MAAOkH,EAAKlH,MAEhB,IACIq4P,EAAUF,EAAW/mR,OACrBknR,EAAcL,EAAWK,YAAY/mR,QAErC8mR,GAAWF,EAAW,GAAGnxC,MAAQmxC,EAAWE,EAAU,GAAGrxC,QAC3DmxC,EAAW/tP,UACXkuP,EAAYluP,WAGd,IAAImuP,EAAa,GAEbC,EAAWL,EAAW,GAAGnxC,MAAQuxC,EACjCE,EAAWN,EAAWE,EAAU,GAAGrxC,MAAQuxC,EAC3CG,EAAYD,EAAWD,EAE3B,GAAIE,EAAY,KACd,MAAO,cAGTh3C,EAAO56H,KAAKqxK,GAAY,SAAUjxP,GAChCA,EAAK3K,QAAU2K,EAAK8/M,MAAQwxC,GAAYE,CAC1C,IACAP,EAAW9kR,KAAK,CACdkpB,OAAQ87P,EAAUF,EAAWE,EAAU,GAAG97P,OAAS,GACnDyD,MAAOs4P,EAAY,IAAM,gBAE3BH,EAAW76P,QAAQ,CAEjBf,OAAQ87P,EAAUF,EAAW,GAAG57P,OAAS,GACzCyD,MAAOs4P,EAAY,IAAM,gBAM3B,IAAI/sP,EAAW,IAAI26M,EAAQyyC,eAAe,EAAG,EAAG,EAAG,EAAGR,GAAY,GAGlE,OAFA5sP,EAAS26N,GAAYsyB,EACrBjtP,EAAS26N,EAAW,KAAOuyB,EACpBltP,CArDP,CAnBA,CAyEF,CAEA,SAASqtP,EAAgB51C,EAAa30N,EAAM4zN,GAC1C,IAAIk0C,EAAgBnzC,EAAY1wO,IAAI,iBAChCumR,EAA2B,SAAlB1C,EAEb,IAAIA,GAAkB0C,EAAtB,CAIA,IAAIC,EAAe72C,EAAS82C,eAAe,WAAW,GAEtD,GAAKD,KAODD,IACDG,EAA4BF,EAAczqQ,IAD7C,CAMA,IAAI4qQ,EAAkB5qQ,EAAKysO,aAAag+B,EAAaz3I,KACjD63I,EAAW,CAAC,EAIhB,OAHAx3C,EAAO56H,KAAKgyK,EAAaK,iBAAiB,SAAUC,GAClDF,EAASE,EAAUC,WAAa,CAClC,IACO,SAAUp2C,GACf,OAAQi2C,EAASxjR,eAAe2Y,EAAK/b,IAAI2mR,EAAiBh2C,GAC5D,CAVA,CAdA,CAyBF,CAEA,SAAS+1C,EAA4BF,EAAczqQ,GAKjD,IAAIirQ,EAAaR,EAAax+B,YAC1Bi/B,EAAYhkR,KAAK6iB,IAAIkhQ,EAAW,GAAKA,EAAW,IAAMR,EAAarzP,MAAM9N,QAC7ExZ,MAAMo7Q,KAAeA,EAAY,GAMjC,IAHA,IAAIC,EAAUnrQ,EAAKsJ,QACf9Y,EAAOtJ,KAAKwI,IAAI,EAAGxI,KAAKugF,MAAM0jM,EAAU,IAEnCv2C,EAAY,EAAGA,EAAYu2C,EAASv2C,GAAapkO,EACxD,GAEE,IAFEulQ,EAAUtL,cAAczqP,EAAM40N,GAChC61C,EAAatxC,eAAiB,EAAI,GAC5B+xC,EACN,OAAO,EAIX,OAAO,CACT,CAEA,SAASE,EAAmBx3C,EAAUosC,EAAcrrC,GAClD,GAAsB,gBAAlBf,EAASruO,KAAwB,CACnC,IAAI4zO,EAAevF,EAASmF,cAAcI,eACtCiD,EAAW2jC,EAAmBnsC,EAAUosC,EAAcrrC,GAE1D,IAAKA,EAAY1wO,IAAI,QAAQ,GAAO,CAClC,IAAIq5O,EAAYlB,EAAS7lN,MACrB80P,EAAankR,KAAKwI,IAAI4tO,EAAU/zM,MAAO+zM,EAAU9zM,QAEjD2vM,GACFmE,EAAU59M,GAAK2rP,EACf/tC,EAAU9zM,QAAuB,EAAb6hP,IAEpB/tC,EAAUz8N,GAAKwqQ,EACf/tC,EAAU/zM,OAAsB,EAAb8hP,EAEvB,CAEA,OAAOjvC,CACT,CACE,OAAO6jC,EAAoBrsC,EAAUosC,EAAcrrC,EAEvD,CAEA,IAAInmN,EAAWw7N,EAAUvlI,OAAO,CAC9Bl/G,KAAM,OACNkzD,KAAM,WACJ,IAAI2hN,EAAY,IAAIviC,EAAQM,MACxBsvB,EAAa,IAAIhN,EACrB15P,KAAKk7C,MAAM36C,IAAImmQ,EAAWxrN,OAC1Bl7C,KAAK65P,YAAc6M,EACnB1mQ,KAAKuqR,WAAalR,CACpB,EACAl6Q,OAAQ,SAAUy0O,EAAalB,EAAS/nI,GACtC,IAAIkoI,EAAWe,EAAYS,iBACvBn5L,EAAQl7C,KAAKk7C,MACbj8B,EAAO20N,EAAY7oI,UACnBy0J,EAAiB5rB,EAAY4F,SAAS,aACtCgxC,EAAiB52C,EAAY4F,SAAS,aACtC9tN,EAASzM,EAAK0+O,SAAS1+O,EAAK69N,eAC5B2tC,EAAoC,UAAlB53C,EAASruO,KAC3BkmR,EAAe1qR,KAAK2qR,UACpBjkB,EAAa1mQ,KAAK65P,YAClBlsO,EAAW3tB,KAAK4qR,UAChB/jP,EAAU7mC,KAAK6qR,SACfxR,EAAYr5Q,KAAKuqR,WACjBtL,EAAerrC,EAAY1wO,IAAI,aAC/B4nR,GAAeN,EAAe9jL,UAC9BqkL,EAAcP,EAAetnR,IAAI,UACjCglR,EAAgBX,EAAqB10C,EAAU5zN,EAAM8rQ,GACrDC,EAAkB/C,EAAmBp1C,EAAU5zN,EAAMipQ,GACrDpB,EAAalzC,EAAY1wO,IAAI,cAC7B+nR,EAAenE,IAAe2D,GAAmBjB,EAAgB51C,EAAa30N,EAAM4zN,GAEpFjzH,EAAU5/G,KAAKqqK,MACnBzqD,GAAWA,EAAQ67H,mBAAkB,SAAU75O,EAAIulG,GAC7CvlG,EAAGspR,SACLhwO,EAAM0hC,OAAOh7E,GACbg+G,EAAQ66H,iBAAiBtzI,EAAK,MAElC,IAEK2/K,GACHpgB,EAAW9pL,SAGb1hC,EAAM36C,IAAI84Q,GAEV,IACI8R,EADA17Q,GAAQg7Q,GAAmB72C,EAAY1wO,IAAI,QAG3C2vO,GAAYA,EAASiF,SAAWlE,EAAY1wO,IAAI,QAAQ,KAC1DioR,EAAqBt4C,EAASiF,UAGE,MAA5BqzC,EAAmB3iP,OACrB2iP,EAAmBrrQ,GAAK,GACxBqrQ,EAAmBxsP,GAAK,GACxBwsP,EAAmB3iP,OAAS,GAC5B2iP,EAAmB1iP,QAAU,IACpB0iP,EAAmBhvC,KAC5BgvC,EAAmBhvC,IAAM,GACzBgvC,EAAmBhtG,IAAM,KAI7Bn+K,KAAKorR,oBAAsBD,EAErBx9P,GAAY+8P,EAAalmR,OAASquO,EAASruO,MAAQiL,IAASzP,KAAK+4L,OAoBjE+xF,IAAgBjkP,EAElBA,EAAU7mC,KAAKqrR,YAAY3/P,EAAQs/P,EAAiBn4C,EAAUosC,GACrDp4O,IAAYikP,IAErBzR,EAAUz8L,OAAO/1C,GACjBA,EAAU7mC,KAAK6qR,SAAW,MAI5BxR,EAAU/9B,YAAY+uC,EAAmBx3C,GAAU,EAAOe,IAG1DkzC,GAAcpgB,EAAW3M,WAAW96O,EAAM,CACxC2/P,SAAUqM,EACV1lC,UAAW4lC,IAIblsQ,EAAKw8N,mBAAkB,SAAU75O,GAC/BA,EAAGuoE,eAAc,EACnB,IAGKs9M,EAAaznR,KAAKsrR,iBAAkBN,IAAqBvD,EAAaznR,KAAKshC,QAAS5V,KACnFuzP,EACFj/Q,KAAKurR,iBAAiBtsQ,EAAM+rQ,EAAiBn4C,EAAUloI,EAAKl7F,EAAMs7Q,IAG9Dt7Q,IAEFic,EAASy8P,EAAmBz8P,EAAQmnN,EAAUpjO,GAC9Cu7Q,EAAkB7C,EAAmB6C,EAAiBn4C,EAAUpjO,IAGlEke,EAASwsN,SAAS,CAChBzuN,OAAQA,IAEVmb,GAAWA,EAAQszM,SAAS,CAC1BzuN,OAAQA,EACRs/P,gBAAiBA,QA3DvBlE,GAAcpgB,EAAW3M,WAAW96O,EAAM,CACxC2/P,SAAUqM,EACV1lC,UAAW4lC,IAGT17Q,IAEFic,EAASy8P,EAAmBz8P,EAAQmnN,EAAUpjO,GAC9Cu7Q,EAAkB7C,EAAmB6C,EAAiBn4C,EAAUpjO,IAGlEke,EAAW3tB,KAAKwrR,aAAa9/P,EAAQmnN,EAAUosC,GAE3C6L,IACFjkP,EAAU7mC,KAAKqrR,YAAY3/P,EAAQs/P,EAAiBn4C,EAAUosC,IAGhE5F,EAAU/9B,YAAY+uC,EAAmBx3C,GAAU,EAAMe,KAgD3D,IAAI2oB,EAAcosB,EAAkB1pQ,EAAM4zN,IAAa5zN,EAAKq+N,UAAU,SACtE3vN,EAASssN,SAAS3H,EAAO94I,SACzBgmK,EAAejmN,eAAgB,CAC7BxvB,KAAM,OACNsP,OAAQkjO,EACR/iO,SAAU,WAEZ,IAAI6Y,EAASuhM,EAAY1wO,IAAI,UAQ7B,GAPAmvC,EAAS21O,EAAUp0C,EAAY1wO,IAAI,WACnCyqB,EAASwsN,SAAS,CAChB9nM,OAAQA,EACRw0O,eAAgBjzC,EAAY1wO,IAAI,kBAChC8jR,aAAcpzC,EAAY1wO,IAAI,kBAG5B2jC,EAAS,CACX,IAAI4kP,EAAkBxsQ,EAAKysQ,mBAAmB,mBAC1CC,EAAkB,EACtB9kP,EAAQozM,SAAS3H,EAAO94I,SAASgxL,EAAeoB,eAAgB,CAC9D7hQ,KAAMwyO,EACNjjO,QAAS,GACTE,SAAU,WAGRiyP,IACFE,EAAkB3D,EAAUyD,EAAgBvoR,IAAI,YAGlD2jC,EAAQszM,SAAS,CACf9nM,OAAQA,EACRs5O,gBAAiBA,EACjB9E,eAAgBjzC,EAAY1wO,IAAI,kBAChC8jR,aAAcpzC,EAAY1wO,IAAI,iBAElC,CAEAlD,KAAKqqK,MAAQprJ,EAEbjf,KAAK2qR,UAAY93C,EACjB7yO,KAAKsrR,iBAAmBN,EACxBhrR,KAAKshC,QAAU5V,EACf1rB,KAAK+4L,MAAQtpL,EACbzP,KAAK6rR,aAAed,CACtB,EACAvvC,QAAS,WAAa,EACtBirB,UAAW,SAAU7yB,EAAalB,EAAS/nI,EAAK6oI,GAC9C,IAAIv0N,EAAO20N,EAAY7oI,UACnB8oI,EAAYwzC,EAAUyE,eAAe7sQ,EAAMu0N,GAE/C,KAAMK,aAAqBhtO,QAAuB,MAAbgtO,GAAqBA,GAAa,EAAG,CACxE,IAAI5xN,EAAShD,EAAK67N,iBAAiBjH,GAEnC,IAAK5xN,EAAQ,CAEX,IAAIq+G,EAAKrhH,EAAK69N,cAAcjJ,GAE5B,IAAKvzG,EAEH,OAIF,GAAItgI,KAAKorR,sBAAwBprR,KAAKorR,oBAAoBh9B,QAAQ9tH,EAAG,GAAIA,EAAG,IAC1E,OAGFr+G,EAAS,IAAI+yP,EAAU/1P,EAAM40N,GAC7B5xN,EAAO6P,SAAWwuG,EAClBr+G,EAAOm7P,KAAKxpC,EAAY1wO,IAAI,UAAW0wO,EAAY1wO,IAAI,MACvD+e,EAAO+xO,OAASjlP,MAAMuxH,EAAG,KAAOvxH,MAAMuxH,EAAG,IACzCr+G,EAAOipQ,QAAS,EAChBjsQ,EAAKw7N,iBAAiB5G,EAAW5xN,GAEjCA,EAAOi7P,qBAAoB,GAC3Bl9Q,KAAKk7C,MAAM36C,IAAI0hB,EACjB,CAEAA,EAAOwkP,WACT,MAEExd,EAAU1hP,UAAUk/P,UAAUpmQ,KAAKL,KAAM4zO,EAAalB,EAAS/nI,EAAK6oI,EAExE,EACA6yB,SAAU,SAAUzyB,EAAalB,EAAS/nI,EAAK6oI,GAC7C,IAAIv0N,EAAO20N,EAAY7oI,UACnB8oI,EAAYwzC,EAAUyE,eAAe7sQ,EAAMu0N,GAE/C,GAAiB,MAAbK,GAAqBA,GAAa,EAAG,CACvC,IAAI5xN,EAAShD,EAAK67N,iBAAiBjH,GAE/B5xN,IACEA,EAAOipQ,QACTjsQ,EAAKw7N,iBAAiB5G,EAAW,MACjC7zO,KAAKk7C,MAAM0hC,OAAO36D,IAElBA,EAAOokP,WAGb,MAIEpd,EAAU1hP,UAAU8+P,SAAShmQ,KAAKL,KAAM4zO,EAAalB,EAAS/nI,EAAK6oI,EAEvE,EAOAg4C,aAAc,SAAU9/P,GACtB,IAAIiC,EAAW3tB,KAAK4qR,UAiBpB,OAfIj9P,GACF3tB,KAAKuqR,WAAW3tM,OAAOjvD,GAGzBA,EAAW,IAAImuO,EAAS,CACtBtmO,MAAO,CACL9J,OAAQA,GAEVyjI,QAAQ,EACRmtF,GAAI,KAGNt8O,KAAKuqR,WAAWhqR,IAAIotB,GAEpB3tB,KAAK4qR,UAAYj9P,EACVA,CACT,EAQA09P,YAAa,SAAU3/P,EAAQs/P,GAC7B,IAAInkP,EAAU7mC,KAAK6qR,SAiBnB,OAfIhkP,GACF7mC,KAAKuqR,WAAW3tM,OAAO/1C,GAGzBA,EAAU,IAAIg1N,EAAQ,CACpBrmO,MAAO,CACL9J,OAAQA,EACRs/P,gBAAiBA,GAEnB77H,QAAQ,IAGVnvJ,KAAKuqR,WAAWhqR,IAAIsmC,GAEpB7mC,KAAK6qR,SAAWhkP,EACTA,CACT,EAMA0kP,iBAAkB,SAAUtsQ,EAAM+rQ,EAAiBn4C,EAAUloI,EAAKl7F,EAAMs7Q,GACtE,IAAIp9P,EAAW3tB,KAAK4qR,UAChB/jP,EAAU7mC,KAAK6qR,SACfj3C,EAAc30N,EAAK8qO,UACnBn9I,EAAOw6K,EAAkBpnR,KAAKqqK,MAAOprJ,EAAMjf,KAAKsrR,iBAAkBN,EAAiBhrR,KAAK2qR,UAAW93C,EAAU7yO,KAAK6rR,aAAcd,GAChI3qQ,EAAUwsF,EAAKxsF,QACf2rQ,EAAmBn/K,EAAKm/K,iBACxBzkR,EAAOslG,EAAKtlG,KACZ0kR,EAAgBp/K,EAAKo/K,cAazB,GAXIv8Q,IAEF2Q,EAAU+nQ,EAAmBv7K,EAAKxsF,QAASyyN,EAAUpjO,GACrDs8Q,EAAmB5D,EAAmBv7K,EAAKm/K,iBAAkBl5C,EAAUpjO,GACvEnI,EAAO6gR,EAAmBv7K,EAAKtlG,KAAMurO,EAAUpjO,GAC/Cu8Q,EAAgB7D,EAAmBv7K,EAAKo/K,cAAen5C,EAAUpjO,IAM/Dm4Q,EAAgBxnQ,EAAS9Y,GAAQ,KAAQu/B,GAAW+gP,EAAgBmE,EAAkBC,GAAiB,IAYzG,OAXAr+P,EAASwsN,SAAS,CAChBzuN,OAAQpkB,SAGNu/B,GACFA,EAAQszM,SAAS,CACfzuN,OAAQpkB,EACR0jR,gBAAiBgB,KAUvBr+P,EAAS6H,MAAMy2P,SAAWr/K,EAAKxsF,QAC/BuN,EAAS6H,MAAM9J,OAAStL,EACxB02N,EAAQ+D,YAAYltN,EAAU,CAC5B6H,MAAO,CACL9J,OAAQpkB,IAETssO,GAEC/sM,IACFA,EAAQszM,SAAS,CACfzuN,OAAQtL,EACR4qQ,gBAAiBe,IAEnBj1C,EAAQ+D,YAAYh0M,EAAS,CAC3BrR,MAAO,CACL9J,OAAQpkB,EACR0jR,gBAAiBgB,IAElBp4C,IAML,IAHA,IAAIs4C,EAAkB,GAClBC,EAAav/K,EAAKj7E,OAEb3tB,EAAI,EAAGA,EAAImoR,EAAWnqR,OAAQgC,IAAK,CAC1C,IAAIooR,EAAMD,EAAWnoR,GAAGooR,IAExB,GAAY,MAARA,EAAa,CACf,IAAIxqR,EAAKqd,EAAK67N,iBAAiBqxC,EAAWnoR,GAAGqoR,MAEzCzqR,GACFsqR,EAAgBjoR,KAAK,CACnBrC,GAAIA,EACJ0qR,MAAOtoR,GAIb,CACF,CAEI2pB,EAASiuP,WAAajuP,EAASiuP,UAAU55Q,QAC3C2rB,EAASiuP,UAAU,GAAG7H,QAAO,WAC3B,IAAK,IAAI/vQ,EAAI,EAAGA,EAAIkoR,EAAgBlqR,OAAQgC,IAAK,CAC/C,IAAIpC,EAAKsqR,EAAgBloR,GAAGpC,GAC5BA,EAAGi1B,KAAK,WAAYlJ,EAAS6H,MAAMy2P,SAASC,EAAgBloR,GAAGsoR,OACjE,CACF,GAEJ,EACA1vM,OAAQ,SAAU81J,GAChB,IAAIx3L,EAAQl7C,KAAKk7C,MACb0kE,EAAU5/G,KAAKqqK,MAEnBrqK,KAAKuqR,WAAWpvC,YAEhBn7O,KAAK65P,YAAYj9K,QAAO,GAGxBgjC,GAAWA,EAAQ67H,mBAAkB,SAAU75O,EAAIulG,GAC7CvlG,EAAGspR,SACLhwO,EAAM0hC,OAAOh7E,GACbg+G,EAAQ66H,iBAAiBtzI,EAAK,MAElC,IACAnnG,KAAK4qR,UAAY5qR,KAAK6qR,SAAW7qR,KAAK2qR,UAAY3qR,KAAKshC,QAAUthC,KAAKsrR,iBAAmBtrR,KAAKqqK,MAAQ,IACxG,IAGFlpK,EAAOD,QAAUusB,C,wBC9sBjB,IAAIgzP,EAAmBj4P,EAAQ,OAE3B+jQ,EAAqB9L,EAAiB8L,mBAEtC38P,EAAQpH,EAAQ,OAEhBkB,EAAMkG,EAAMlG,IA0BhB,SAAS69P,EAAqB10C,EAAU5zN,EAAM8rQ,GAC5C,IAWIyB,EAXAz0C,EAAWlF,EAASmF,cACpB9iM,EAAY29L,EAASiR,aAAa/L,GAClC00C,EAAaC,EAAcx3O,EAAW61O,GACtC/E,EAAcjuC,EAAS9lG,IACvB06I,EAAez3O,EAAU+8F,IACzBuwG,EAAWvjO,EAAKysO,aAAaihC,GAC7BC,EAAU3tQ,EAAKysO,aAAas6B,GAC5B6G,EAAkC,MAAjBF,GAAyC,WAAjBA,EAA4B,EAAI,EACzE7qH,EAAOp4I,EAAImpN,EAASj4E,YAAY,SAAUk8F,GAC5C,OAAO73O,EAAKysO,aAAaoL,EAC3B,IAEIg2B,EAAiB7tQ,EAAKysQ,mBAAmB,wBAgB7C,OAdIc,GAAWD,EAAmBttQ,EAAM6iJ,EAAK,OAI3CA,EAAK,GAAKgrH,IAGRN,GAAWD,EAAmBttQ,EAAM6iJ,EAAK,OAI3CA,EAAK,GAAKgrH,GAGL,CACLC,iBAAkBjrH,EAClB2qH,WAAYA,EACZE,aAAcA,EACd3G,YAAaA,EACbwG,UAAWA,EACXhqC,SAAUA,EACVoqC,QAASA,EACTC,eAAgBA,EAChBG,qBAAsB/tQ,EAAKysQ,mBAAmB,wBAElD,CAEA,SAASgB,EAAcx3O,EAAW61O,GAChC,IAAI0B,EAAa,EACbl/F,EAASr4I,EAAU7e,MAAM60N,YAkB7B,MAhBoB,UAAhB6/B,EACF0B,EAAal/F,EAAO,GACK,QAAhBw9F,EACT0B,EAAal/F,EAAO,GAIdA,EAAO,GAAK,EACdk/F,EAAal/F,EAAO,GAEbA,EAAO,GAAK,IACjBk/F,EAAal/F,EAAO,IAKrBk/F,CACT,CAEA,SAASjF,EAAkBU,EAAer1C,EAAU5zN,EAAMkoF,GACxD,IAAIrlG,EAAQ0pF,IAER08L,EAAcsE,UAChB1qR,EAAQmd,EAAK/b,IAAI+b,EAAKysQ,mBAAmB,wBAAyBvkL,IAGhEp4F,MAAMjN,KACRA,EAAQomR,EAAcuE,YAGxB,IAAII,EAAiB3E,EAAc2E,eAC/BI,EAAc,GAGlB,OAFAA,EAAYJ,GAAkB5tQ,EAAK/b,IAAIglR,EAAc0E,QAASzlL,GAC9D8lL,EAAY,EAAIJ,GAAkB/qR,EAC3B+wO,EAASiC,YAAYm4C,EAC9B,CAEA/rR,EAAQqmR,qBAAuBA,EAC/BrmR,EAAQsmR,kBAAoBA,C,iCCpH5B,IAAIzwC,EAAUvuN,EAAQ,OAElB++P,EAAuBxwC,EAAQwwC,qBAC/BC,EAAoBzwC,EAAQywC,kBA4ChC,SAAS0F,EAASttK,EAASutK,GACzB,IAAIC,EAAa,GAkBjB,OAjBAD,EAAQvgL,KAAKgT,GAASr/G,KAAI,SAAU4mG,GAClCimL,EAAWnpR,KAAK,CACdmoR,IAAK,IACLjlL,IAAKA,GAET,IAAGnwE,QAAO,SAAUsyN,EAAQI,GAC1B0jC,EAAWnpR,KAAK,CACdmoR,IAAK,IACLjlL,IAAKuiJ,EACL2iC,KAAM/iC,GAEV,IAAG1sK,QAAO,SAAUuqB,GAClBimL,EAAWnpR,KAAK,CACdmoR,IAAK,IACLjlL,IAAKA,GAET,IAAGo1C,UACI6wI,CACT,CAEA,SAAS3/P,EAASmyF,EAASutK,EAASE,EAAoBC,EAAoBC,EAAaC,EAAaC,EAAgBC,GAkBpH,IAjBA,IAAI9gL,EAAOsgL,EAASttK,EAASutK,GAMzBQ,EAAa,GACbC,EAAa,GAEbC,EAAoB,GACpBC,EAAoB,GACpBn8P,EAAS,GACTo8P,EAAgB,GAChBC,EAAa,GACbC,EAAsB1G,EAAqBgG,EAAaJ,EAASM,GACjES,EAAsB3G,EAAqBiG,EAAa5tK,EAAS8tK,GAE5D1pR,EAAI,EAAGA,EAAI4oG,EAAK5qG,OAAQgC,IAAK,CACpC,IAAImqR,EAAWvhL,EAAK5oG,GAChBoqR,GAAa,EAGjB,OAAQD,EAAS/B,KACf,IAAK,IACH,IAAIiC,EAAYzuK,EAAQk9H,cAAcqxC,EAAShnL,KAC3CohL,EAAS4E,EAAQrwC,cAAcqxC,EAAS9B,OAExCt9Q,MAAMs/Q,EAAU,KAAOt/Q,MAAMs/Q,EAAU,OACzCA,EAAY9F,EAAOpmR,SAGrBwrR,EAAW1pR,KAAKoqR,GAChBT,EAAW3pR,KAAKskR,GAChBsF,EAAkB5pR,KAAKopR,EAAmBc,EAAShnL,MACnD2mL,EAAkB7pR,KAAKqpR,EAAmBa,EAAS9B,OACnD2B,EAAW/pR,KAAKkpR,EAAQx3B,YAAYw4B,EAAS9B,OAC7C,MAEF,IAAK,IACH,IAAIllL,EAAMgnL,EAAShnL,IACnBwmL,EAAW1pR,KAAKspR,EAAYz4C,YAAY,CAACq4C,EAAQjqR,IAAI+qR,EAAoBlB,iBAAiB,GAAI5lL,GAAMgmL,EAAQjqR,IAAI+qR,EAAoBlB,iBAAiB,GAAI5lL,MACzJymL,EAAW3pR,KAAKkpR,EAAQrwC,cAAc31I,GAAKhlG,SAC3C0rR,EAAkB5pR,KAAKujR,EAAkByG,EAAqBV,EAAaJ,EAAShmL,IACpF2mL,EAAkB7pR,KAAKqpR,EAAmBnmL,IAC1C6mL,EAAW/pR,KAAKkpR,EAAQx3B,YAAYxuJ,IACpC,MAEF,IAAK,IACCA,EAAMgnL,EAAShnL,IAAnB,IACImnL,EAAW1uK,EAAQ+1I,YAAYxuJ,GAG/BmnL,IAAannL,GACfwmL,EAAW1pR,KAAK27G,EAAQk9H,cAAc31I,IACtCymL,EAAW3pR,KAAKupR,EAAY14C,YAAY,CAACl1H,EAAQ18G,IAAIgrR,EAAoBnB,iBAAiB,GAAI5lL,GAAMyY,EAAQ18G,IAAIgrR,EAAoBnB,iBAAiB,GAAI5lL,MACzJ0mL,EAAkB5pR,KAAKopR,EAAmBlmL,IAC1C2mL,EAAkB7pR,KAAKujR,EAAkB0G,EAAqBV,EAAa5tK,EAASzY,IACpF6mL,EAAW/pR,KAAKqqR,IAEhBF,GAAa,EAMfA,IACFz8P,EAAO1tB,KAAKkqR,GACZJ,EAAc9pR,KAAK8pR,EAAc/rR,QAErC,CAIA+rR,EAAcloQ,MAAK,SAAUljB,EAAGC,GAC9B,OAAOorR,EAAWrrR,GAAKqrR,EAAWprR,EACpC,IACA,IAAI2rR,EAAmB,GACnBC,EAAmB,GACnBC,EAA0B,GAC1BC,EAA0B,GAC1BC,EAAe,GAEnB,IAAS3qR,EAAI,EAAGA,EAAI+pR,EAAc/rR,OAAQgC,IAAK,CACzCmjG,EAAM4mL,EAAc/pR,GACxBuqR,EAAiBvqR,GAAK2pR,EAAWxmL,GACjCqnL,EAAiBxqR,GAAK4pR,EAAWzmL,GACjCsnL,EAAwBzqR,GAAK6pR,EAAkB1mL,GAC/CunL,EAAwB1qR,GAAK8pR,EAAkB3mL,GAC/CwnL,EAAa3qR,GAAK2tB,EAAOw1E,EAC3B,CAEA,MAAO,CACL/mF,QAASmuQ,EACTjnR,KAAMknR,EACNzC,iBAAkB0C,EAClBzC,cAAe0C,EACf/8P,OAAQg9P,EAEZ,CAEAxtR,EAAOD,QAAUusB,C,uBC1KjB,IAAI0pN,EAAO3uN,EAAQ,OAEfihP,EAAOjhP,EAAQ,OAEfomQ,EAAoBpmQ,EAAQ,OAqB5BqmQ,EAAUplB,EAAK76P,IACfkgR,EAAUrlB,EAAK96P,IACf+7P,EAAcjB,EAAKiB,YACnBqkB,EAAStlB,EAAK9+K,KAEd3iE,EAAI,GACJgnQ,EAAM,GACNvjB,EAAM,GAEV,SAASwjB,EAAYpxO,GACnB,OAAO9uC,MAAM8uC,EAAE,KAAO9uC,MAAM8uC,EAAE,GAChC,CAEA,SAASqxO,EAAY/qR,EAAKunB,EAAQgzB,EAAOywO,EAAQC,EAAQn7L,EAAKo7L,EAAWC,EAAWj9O,EAAQw0O,EAAgBG,GAoB1G,MAAuB,SAAnBH,GAA8BA,EAGzB0I,EAASzsR,MAAM9C,KAAM+C,WAFrBysR,EAAY1sR,MAAM9C,KAAM+C,UAInC,CA0CA,SAASwsR,EAASprR,EAAKunB,EAAQgzB,EAAOywO,EAAQC,EAAQn7L,EAAKo7L,EAAWC,EAAWj9O,EAAQw0O,EAAgBG,GAIvG,IAHA,IAAIyI,EAAU,EACVtoL,EAAMzoD,EAED7zC,EAAI,EAAGA,EAAIskR,EAAQtkR,IAAK,CAC/B,IAAIgzC,EAAInyB,EAAOy7E,GAEf,GAAIA,GAAOioL,GAAUjoL,EAAM,EACzB,MAGF,GAAI8nL,EAAYpxO,GAAI,CAClB,GAAImpO,EAAc,CAChB7/K,GAAOlT,EACP,QACF,CAEA,KACF,CAEA,GAAIkT,IAAQzoD,EACVv6C,EAAI8vF,EAAM,EAAI,SAAW,UAAUp2C,EAAE,GAAIA,EAAE,SAE3C,GAAIxL,EAAS,EAAG,CACd,IAAIq9O,EAAQhkQ,EAAO+jQ,GACfx9I,EAAyB,MAAnB40I,EAAyB,EAAI,EAEnC8I,GAAW9xO,EAAEo0F,GAAOy9I,EAAMz9I,IAAQ5/F,EACtC08O,EAAOC,EAAKU,GACZV,EAAI/8I,GAAOy9I,EAAMz9I,GAAO09I,EACxBZ,EAAOtjB,EAAK5tN,GACZ4tN,EAAIx5H,GAAOp0F,EAAEo0F,GAAO09I,EACpBxrR,EAAI+hC,cAAc8oP,EAAI,GAAIA,EAAI,GAAIvjB,EAAI,GAAIA,EAAI,GAAI5tN,EAAE,GAAIA,EAAE,GAC5D,MACE15C,EAAI08B,OAAOgd,EAAE,GAAIA,EAAE,IAIvB4xO,EAAUtoL,EACVA,GAAOlT,CACT,CAEA,OAAOppF,CACT,CAQA,SAAS2kR,EAAYrrR,EAAKunB,EAAQgzB,EAAOywO,EAAQC,EAAQn7L,EAAKo7L,EAAWC,EAAWj9O,EAAQw0O,EAAgBG,GAI1G,IAHA,IAAIyI,EAAU,EACVtoL,EAAMzoD,EAED7zC,EAAI,EAAGA,EAAIskR,EAAQtkR,IAAK,CAC/B,IAAIgzC,EAAInyB,EAAOy7E,GAEf,GAAIA,GAAOioL,GAAUjoL,EAAM,EACzB,MAGF,GAAI8nL,EAAYpxO,GAAI,CAClB,GAAImpO,EAAc,CAChB7/K,GAAOlT,EACP,QACF,CAEA,KACF,CAEA,GAAIkT,IAAQzoD,EACVv6C,EAAI8vF,EAAM,EAAI,SAAW,UAAUp2C,EAAE,GAAIA,EAAE,IAC3CkxO,EAAOC,EAAKnxO,QAEZ,GAAIxL,EAAS,EAAG,CACd,IAAIqsN,EAAUv3J,EAAMlT,EAChB27L,EAAQlkQ,EAAOgzO,GAEnB,GAAIsoB,EAEF,MAAO4I,GAASX,EAAYvjQ,EAAOgzO,IACjCA,GAAWzqK,EACX27L,EAAQlkQ,EAAOgzO,GAInB,IAAImxB,EAAe,GACfH,EAAQhkQ,EAAO+jQ,GACfG,EAAQlkQ,EAAOgzO,GAEnB,IAAKkxB,GAASX,EAAYW,GACxBb,EAAOtjB,EAAK5tN,OACP,CAOL,IAAIiyO,EACAC,EAEJ,GARId,EAAYW,KAAW5I,IACzB4I,EAAQ/xO,GAGV4rN,EAAK7+K,IAAI5iE,EAAG4nQ,EAAOF,GAII,MAAnB7I,GAA6C,MAAnBA,EAAwB,CACpD,IAAI50I,EAAyB,MAAnB40I,EAAyB,EAAI,EACvCiJ,EAAa3pR,KAAK6iB,IAAI60B,EAAEo0F,GAAOy9I,EAAMz9I,IACrC89I,EAAa5pR,KAAK6iB,IAAI60B,EAAEo0F,GAAO29I,EAAM39I,GACvC,MACE69I,EAAarmB,EAAKx/K,KAAKpsC,EAAG6xO,GAC1BK,EAAatmB,EAAKx/K,KAAKpsC,EAAG+xO,GAI5BC,EAAeE,GAAcA,EAAaD,GAC1CplB,EAAYe,EAAK5tN,EAAG71B,GAAIqqB,GAAU,EAAIw9O,GACxC,CAGAhB,EAAQG,EAAKA,EAAKM,GAClBR,EAAQE,EAAKA,EAAKK,GAClBR,EAAQpjB,EAAKA,EAAK6jB,GAClBR,EAAQrjB,EAAKA,EAAK4jB,GAClBlrR,EAAI+hC,cAAc8oP,EAAI,GAAIA,EAAI,GAAIvjB,EAAI,GAAIA,EAAI,GAAI5tN,EAAE,GAAIA,EAAE,IAE1D6sN,EAAYskB,EAAKnxO,EAAG71B,EAAGqqB,EAASw9O,EAClC,MACE1rR,EAAI08B,OAAOgd,EAAE,GAAIA,EAAE,IAIvB4xO,EAAUtoL,EACVA,GAAOlT,CACT,CAEA,OAAOppF,CACT,CAEA,SAASymN,EAAe5lM,EAAQskQ,GAC9B,IAAIC,EAAQ,CAACp9L,IAAUA,KACnBq9L,EAAQ,EAAEr9L,KAAWA,KAEzB,GAAIm9L,EACF,IAAK,IAAIhsR,EAAI,EAAGA,EAAI0nB,EAAO1pB,OAAQgC,IAAK,CACtC,IAAIs8H,EAAK50G,EAAO1nB,GAEZs8H,EAAG,GAAK2vJ,EAAM,KAChBA,EAAM,GAAK3vJ,EAAG,IAGZA,EAAG,GAAK2vJ,EAAM,KAChBA,EAAM,GAAK3vJ,EAAG,IAGZA,EAAG,GAAK4vJ,EAAM,KAChBA,EAAM,GAAK5vJ,EAAG,IAGZA,EAAG,GAAK4vJ,EAAM,KAChBA,EAAM,GAAK5vJ,EAAG,GAElB,CAGF,MAAO,CACL1xH,IAAKohR,EAAmBC,EAAQC,EAChCvhR,IAAKqhR,EAAmBE,EAAQD,EAEpC,CAEA,IAAIn0B,EAAW3kB,EAAKzzH,OAAO,CACzBl/G,KAAM,cACNgxB,MAAO,CACL9J,OAAQ,GACR2mB,OAAQ,EACR29O,kBAAkB,EAClBnJ,eAAgB,KAChBG,cAAc,GAEhBp7Q,MAAO,CACLme,KAAM,KACNsP,OAAQ,QAEV41O,MAAO2f,EAAkBz3C,EAAK5vO,UAAU0nQ,OACxClxB,UAAW,SAAU55O,EAAKqxB,GACxB,IAAI9J,EAAS8J,EAAM9J,OACf1nB,EAAI,EACJwT,EAAMkU,EAAO1pB,OACb0B,EAAS4tN,EAAe5lM,EAAQ8J,EAAMw6P,kBAE1C,GAAIx6P,EAAMwxP,aAAc,CAEtB,KAAOxvQ,EAAM,EAAGA,IACd,IAAKy3Q,EAAYvjQ,EAAOlU,EAAM,IAC5B,MAIJ,KAAOxT,EAAIwT,EAAKxT,IACd,IAAKirR,EAAYvjQ,EAAO1nB,IACtB,KAGN,CAEA,MAAOA,EAAIwT,EACTxT,GAAKkrR,EAAY/qR,EAAKunB,EAAQ1nB,EAAGwT,EAAKA,EAAK,EAAG9T,EAAOkL,IAAKlL,EAAOiL,IAAK6mB,EAAM6c,OAAQ7c,EAAMqxP,eAAgBrxP,EAAMwxP,cAAgB,CAEpI,IAEEnrB,EAAU1kB,EAAKzzH,OAAO,CACxBl/G,KAAM,aACNgxB,MAAO,CACL9J,OAAQ,GAERs/P,gBAAiB,GACjB34O,OAAQ,EACRs5O,gBAAiB,EACjBqE,kBAAkB,EAClBnJ,eAAgB,KAChBG,cAAc,GAEhB/X,MAAO2f,EAAkBz3C,EAAK5vO,UAAU0nQ,OACxClxB,UAAW,SAAU55O,EAAKqxB,GACxB,IAAI9J,EAAS8J,EAAM9J,OACfs/P,EAAkBx1P,EAAMw1P,gBACxBhnR,EAAI,EACJwT,EAAMkU,EAAO1pB,OACb6kR,EAAiBrxP,EAAMqxP,eACvBxa,EAAO/6C,EAAe5lM,EAAQ8J,EAAMw6P,kBACpCG,EAAgB7+D,EAAe05D,EAAiBx1P,EAAMw6P,kBAE1D,GAAIx6P,EAAMwxP,aAAc,CAEtB,KAAOxvQ,EAAM,EAAGA,IACd,IAAKy3Q,EAAYvjQ,EAAOlU,EAAM,IAC5B,MAIJ,KAAOxT,EAAIwT,EAAKxT,IACd,IAAKirR,EAAYvjQ,EAAO1nB,IACtB,KAGN,CAEA,MAAOA,EAAIwT,EAAK,CACd,IAAI3M,EAAIqkR,EAAY/qR,EAAKunB,EAAQ1nB,EAAGwT,EAAKA,EAAK,EAAG60P,EAAKz9P,IAAKy9P,EAAK19P,IAAK6mB,EAAM6c,OAAQw0O,EAAgBrxP,EAAMwxP,cACzGkI,EAAY/qR,EAAK6mR,EAAiBhnR,EAAI6G,EAAI,EAAGA,EAAG2M,GAAM,EAAG24Q,EAAcvhR,IAAKuhR,EAAcxhR,IAAK6mB,EAAMm2P,gBAAiB9E,EAAgBrxP,EAAMwxP,cAC5IhjR,GAAK6G,EAAI,EACT1G,EAAIs5B,WACN,CACF,IAEFv8B,EAAQ46P,SAAWA,EACnB56P,EAAQ26P,QAAUA,C,wBCxWlB,IAAI1oB,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,MAER,IAAI4nQ,EAAc5nQ,EAAQ,OAEtB6nQ,EAAc7nQ,EAAQ,OAoB1B2qN,EAAQsC,eAAe26C,GACvBj9C,EAAQ4C,eAAes6C,E,2DC7BvB,IAAI58O,EAAUjrB,EAAQ,OAIlBo3N,GAFUnsM,EAAQojM,QAEJruN,EAAQ,QAEtBy5O,EAAOz5O,EAAQ,OAEfoH,EAAQpH,EAAQ,OAEhB8nQ,EAAc1gQ,EAAM0gQ,YACpBC,EAAW3gQ,EAAM2gQ,SACjB7mQ,EAAMkG,EAAMlG,IAEZw4O,EAAU15O,EAAQ,OAElB25O,EAAaD,EAAQC,WAwBrBquB,GAtBmBhoQ,EAAQ,OAsBQ,qBAAhB7S,YAA8B9O,MAAQ8O,aACzD86Q,EAAqC,qBAAjB56Q,aAA+BhP,MAAQgP,aAE/D,SAAS66Q,EAAUC,GACjB,IAAI1xQ,EAAO0xQ,EAAU1xQ,KAEjBA,GAAQA,EAAK,IAAMA,EAAK,GAAG,IAAMA,EAAK,GAAG,GAAG24N,QAC9C+4C,EAAU1xQ,KAAOyK,EAAIzK,GAAM,SAAUmjQ,GACnC,IAAIwO,EAAS,CAACxO,EAAQ,GAAGxqC,MAAOwqC,EAAQ,GAAGxqC,OACvClyO,EAAS,CACXkrR,OAAQA,GAWV,OARIxO,EAAQ,GAAG39Q,OACbiB,EAAOmrR,SAAWzO,EAAQ,GAAG39Q,MAG3B29Q,EAAQ,GAAG39Q,OACbiB,EAAOorR,OAAS1O,EAAQ,GAAG39Q,MAGtB8rR,EAAS,CAAC7qR,EAAQ08Q,EAAQ,GAAIA,EAAQ,IAC/C,IAEJ,CAEA,IAAI2O,EAAcnxC,EAAYl8H,OAAO,CACnCl/G,KAAM,eACN0xO,aAAc,CAAC,OAAQ,SACvB86C,sBAAuB,kBACvBt5N,KAAM,SAAU3sB,GAEdA,EAAO9rB,KAAO8rB,EAAO9rB,MAAQ,GAE7ByxQ,EAAU3lP,GAEV,IAAIrnC,EAAS1D,KAAKixR,wBAAwBlmP,EAAO9rB,MAEjDjf,KAAKkxR,YAAcxtR,EAAOytR,WAC1BnxR,KAAKoxR,kBAAoB1tR,EAAO2tR,iBAE5B3tR,EAAOytR,aACTpmP,EAAO9rB,KAAO,IAAIrJ,aAAalS,EAAO6kB,QAGxCwoQ,EAAYxvC,WAAWvhP,KAAM,OAAQ+C,UACvC,EACA+/P,YAAa,SAAU/3N,GAGrB,GAFA2lP,EAAU3lP,GAENA,EAAO9rB,KAAM,CAEf,IAAIvb,EAAS1D,KAAKixR,wBAAwBlmP,EAAO9rB,MAEjDjf,KAAKkxR,YAAcxtR,EAAOytR,WAC1BnxR,KAAKoxR,kBAAoB1tR,EAAO2tR,iBAE5B3tR,EAAOytR,aACTpmP,EAAO9rB,KAAO,IAAIrJ,aAAalS,EAAO6kB,OAE1C,CAEAwoQ,EAAYxvC,WAAWvhP,KAAM,cAAe+C,UAC9C,EACAuuR,WAAY,SAAU1vQ,GACpB,IAAIle,EAAS1D,KAAKixR,wBAAwBrvQ,EAAO3C,MAE7Cvb,EAAOytR,aACJnxR,KAAKkxR,aAIRlxR,KAAKkxR,YAAcZ,EAAYtwR,KAAKkxR,YAAaxtR,EAAOytR,YACxDnxR,KAAKoxR,kBAAoBd,EAAYtwR,KAAKoxR,kBAAmB1tR,EAAO2tR,oBAJpErxR,KAAKkxR,YAAcxtR,EAAOytR,WAC1BnxR,KAAKoxR,kBAAoB1tR,EAAO2tR,kBAMlCzvQ,EAAO3C,KAAO,IAAIrJ,aAAalS,EAAO6kB,QAGxCvoB,KAAKi7P,aAAaq2B,WAAW1vQ,EAAO3C,KACtC,EACAsyQ,wBAAyB,SAAUpqL,GACjC,IAAIizI,EAAYp6O,KAAK+qG,UAAUsvI,aAAalzI,GACxCypL,EAASx2C,EAAUrvM,kBAAkBlkC,MAAQuzO,EAAUrvM,OAASqvM,EAAUsD,WAAW,UACzF,OAAOkzC,CACT,EACAY,mBAAoB,SAAUrqL,GAC5B,OAAInnG,KAAKoxR,kBACApxR,KAAKoxR,kBAAwB,EAANjqL,EAAU,GAEjCnnG,KAAKuxR,wBAAwBpqL,GAAKnlG,MAE7C,EACAyvR,cAAe,SAAUtqL,EAAKviG,GAC5B,GAAI5E,KAAKoxR,kBAAmB,CAI1B,IAHA,IAAIjkQ,EAASntB,KAAKoxR,kBAAwB,EAANjqL,GAChC3vF,EAAMxX,KAAKoxR,kBAAwB,EAANjqL,EAAU,GAElCnjG,EAAI,EAAGA,EAAIwT,EAAKxT,IACvBY,EAAIZ,GAAKY,EAAIZ,IAAM,GACnBY,EAAIZ,GAAG,GAAKhE,KAAKkxR,YAAY/jQ,EAAa,EAAJnpB,GACtCY,EAAIZ,GAAG,GAAKhE,KAAKkxR,YAAY/jQ,EAAa,EAAJnpB,EAAQ,GAGhD,OAAOwT,CACT,CACE,IAAIo5Q,EAAS5wR,KAAKuxR,wBAAwBpqL,GAE1C,IAASnjG,EAAI,EAAGA,EAAI4sR,EAAO5uR,OAAQgC,IACjCY,EAAIZ,GAAKY,EAAIZ,IAAM,GACnBY,EAAIZ,GAAG,GAAK4sR,EAAO5sR,GAAG,GACtBY,EAAIZ,GAAG,GAAK4sR,EAAO5sR,GAAG,GAGxB,OAAO4sR,EAAO5uR,MAElB,EACAivR,wBAAyB,SAAUhyQ,GACjC,IAAIyyQ,EAAc,EAQlB,GANI1xR,KAAKkxR,cACPQ,EAAc1xR,KAAKkxR,YAAYlvR,QAKV,kBAAZid,EAAK,GAAiB,CAS/B,IARA,IAAIzH,EAAMyH,EAAKjd,OAEX2vR,EAA4B,IAAInB,EAAUh5Q,GAC1Co6Q,EAAgB,IAAInB,EAAWj5Q,GAC/Bq6Q,EAAe,EACfC,EAAe,EACfC,EAAY,EAEP/tR,EAAI,EAAGA,EAAIwT,GAAM,CACxBu6Q,IACA,IAAIxpQ,EAAQtJ,EAAKjb,KAEjB2tR,EAA0BG,KAAkBD,EAAeH,EAE3DC,EAA0BG,KAAkBvpQ,EAE5C,IAAK,IAAI1d,EAAI,EAAGA,EAAI0d,EAAO1d,IAAK,CAC9B,IAAIiV,EAAIb,EAAKjb,KACT26B,EAAI1f,EAAKjb,KACb4tR,EAAcC,KAAkB/xQ,EAChC8xQ,EAAcC,KAAkBlzP,CAGlC,CACF,CAEA,MAAO,CACL0yP,iBAAkB,IAAI17Q,YAAYg8Q,EAA0BpmD,OAAQ,EAAGumD,GACvEX,WAAYS,EACZrpQ,MAAOwpQ,EAEX,CAEA,MAAO,CACLV,iBAAkB,KAClBF,WAAY,KACZ5oQ,MAAOtJ,EAAKjd,OAEhB,EACA89O,eAAgB,SAAU/0M,EAAQ2nM,GAChC,IAAIppL,EAAW,IAAI24M,EAAK,CAAC,SAAUjiQ,MAenC,OAdAspD,EAASqoN,eAAgB,EACzBroN,EAASuV,SAAS9zB,EAAO9rB,KAAM,IAAI,SAAU4jC,EAAU4zM,EAAS5iB,EAAW4tC,GAEzE,GAAI5+N,aAAoBh8C,MACtB,OAAO2kF,IAEPliC,EAASqoN,eAAgB,EACzB,IAAI7vQ,EAAQ+gD,EAAS/gD,MAErB,OAAa,MAATA,EACKA,aAAiB+E,MAAQ/E,EAAM2/Q,GAAY3/Q,OADpD,CAIJ,IACOwnD,CACT,EACA06M,cAAe,SAAUnwB,GACvB,IAAI50N,EAAOjf,KAAK+qG,UACZqvI,EAAYn7N,EAAKo7N,aAAaxG,GAC9BpvO,EAAO21O,EAAUl3O,IAAI,QAEzB,GAAIuB,EACF,OAAOA,EAGT,IAAIosR,EAAWz2C,EAAUl3O,IAAI,YACzB4tR,EAAS12C,EAAUl3O,IAAI,UACvBof,EAAO,GAGX,OAFY,MAAZuuQ,GAAoBvuQ,EAAKre,KAAK4sR,GACpB,MAAVC,GAAkBxuQ,EAAKre,KAAK6sR,GACrB3uB,EAAW7/O,EAAKxX,KAAK,OAC9B,EACAolQ,mBAAoB,WAClB,QAASlwQ,KAAKkD,IAAI,cACpB,EACAkzO,eAAgB,WACd,IAAIoK,EAAcxgP,KAAK+qC,OAAOy1M,YAE9B,OAAmB,MAAfA,EACKxgP,KAAK+qC,OAAOgxJ,MAAQ,IAAM/7L,KAAKkD,IAAI,eAGrCs9O,CACT,EACAnK,wBAAyB,WACvB,IAAIC,EAAuBt2O,KAAK+qC,OAAOurM,qBAEvC,OAA4B,MAAxBA,EACKt2O,KAAK+qC,OAAOgxJ,MAAQ,IAAM/7L,KAAKkD,IAAI,wBAGrCozO,CACT,EACAE,cAAe,CACbnC,iBAAkB,MAClB+L,OAAQ,EACRroK,EAAG,EACHsoK,iBAAiB,EACjBiB,gBAAgB,EAEhBvyM,WAAY,EACZC,WAAY,EACZ/sB,OAAQ,CAAC,OAAQ,QACjB2+N,WAAY,CAAC,GAAI,IAEjBwvB,SAAU,EACV4hB,OAAQ,CACNtkP,MAAM,EACN8rN,OAAQ,EAKR+Z,cAAe,EACftxP,OAAQ,SACR2+N,WAAY,EACZ0yB,MAAM,EAEN2e,YAAa,IAIfl2F,OAAO,EAEPw6C,eAAgB,IAGhB5oN,UAAU,EAGVyxM,MAAM,EACNlwL,MAAO,CACLxB,MAAM,EACN5b,SAAU,OAIZwgB,UAAW,CACThZ,QAAS,OAIX7L,EAAWsjQ,EACf5vR,EAAOD,QAAUusB,C,uBCvTjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB2qN,GAFU1/L,EAAQojM,QAERruN,EAAQ,QAElB48O,EAAW58O,EAAQ,OAEnBqqP,EAAarqP,EAAQ,MAErB2+D,EAAO3+D,EAAQ,OAEfszO,EAAWtzO,EAAQ,MAEnB+rP,EAAiB/rP,EAAQ,OAEzBuuP,EAAgBvuP,EAAQ,OAExB4nQ,EAAc5nQ,EAAQ,OAEtB8uN,EAA8B9uN,EAAQ,OAEtC+uN,EAAiBD,EAA4BC,eAoB7C9pN,EAAW0lN,EAAQkF,gBAAgB,CACrC7zO,KAAM,QACNkzD,KAAM,WAAa,EACnBv4D,OAAQ,SAAUy0O,EAAalB,EAAS/nI,GACtC,IAAI1rF,EAAO20N,EAAY7oI,UAEnB47J,EAAW3mQ,KAAKkyR,gBAAgBjzQ,EAAM20N,GAEtCwM,EAASxM,EAAY1wO,IAAI,UACzB+uR,EAAcr+C,EAAY1wO,IAAI,sBAC9BivR,EAAKxnL,EAAIoqJ,QAITq9B,EAAiC,QAAzBD,EAAGE,QAAQj6M,UAElBg6M,GACHD,EAAGE,QAAQC,SAASlyC,GAAQ19N,OAAM,GAIZ,MAApB1iB,KAAKuyR,aAAwBH,GAC/BD,EAAGK,YAAYxyR,KAAKuyR,YAAa,CAC/B/8G,YAAY,IAIZx1K,KAAKyyR,YAAY7+C,IAAgBq+C,IAC9BG,GACHD,EAAGK,YAAYpyC,EAAQ,CACrB5qE,YAAY,EACZk9G,eAAgBvsR,KAAKwI,IAAIxI,KAAKyI,IAAIqjR,EAAc,GAAK,GAAK,GAAI,MAKpEtrB,EAAS5M,WAAW96O,GACpB,IAAIo8N,EAAWzH,EAAY1wO,IAAI,QAAQ,IAASq0O,EAAe3D,EAAYS,kBAAkB,EAAOT,GAEhGyH,EACFr7O,KAAKk7C,MAAMogM,YAAYD,GAEvBr7O,KAAKk7C,MAAMm+L,iBAGbr5O,KAAKuyR,YAAcnyC,EACnBpgP,KAAK2yR,WAAY,CACnB,EACAh6C,yBAA0B,SAAU/E,EAAalB,EAAS/nI,GACxD,IAAI1rF,EAAO20N,EAAY7oI,UAEnB47J,EAAW3mQ,KAAKkyR,gBAAgBjzQ,EAAM20N,GAE1C+yB,EAAS2Q,yBAAyBr4P,GAElCjf,KAAK4yR,YAAYjoL,GAEjB3qG,KAAK2yR,WAAY,CACnB,EACA95C,kBAAmB,SAAU4+B,EAAY7jC,EAAalB,GACpD1yO,KAAK8mQ,UAAU0Q,kBAAkBC,EAAY7jC,EAAY7oI,WAEzD/qG,KAAK2yR,UAAYlb,EAAW94N,MAAQi1L,EAAY7oI,UAAUxiF,OAC5D,EACA+sN,gBAAiB,SAAU1B,EAAalB,EAAS/nI,GAC/C,IAAI1rF,EAAO20N,EAAY7oI,UACnBiuI,EAAkBpF,EAAYoF,gBAElC,IAAKh5O,KAAK2yR,WAAa35C,EAAgBj9C,OAASi9C,EAAgB+pC,kBAE9D,MAAO,CACL/rP,QAAQ,GAKV,IAAI+hD,EAAMq3M,EAAY3pL,MAAMmtI,GAExB76J,EAAIykE,UACNzkE,EAAIykE,SAAS,CACX9+F,MAAO,EACPC,IAAK1/B,EAAKsJ,SACTtJ,GAGLjf,KAAK8mQ,UAAU9M,eAEfh6P,KAAK4yR,YAAYjoL,EAErB,EACAunL,gBAAiB,SAAUjzQ,EAAM20N,GAC/B,IAAI+yB,EAAW3mQ,KAAK8mQ,UAEhB+rB,EAAY7yR,KAAKyyR,YAAY7+C,GAE7Bk/C,IAAel/C,EAAY1wO,IAAI,YAC/B81O,EAAkBpF,EAAYoF,gBAC9BD,EAAcC,EAAgBj9C,MAelC,OAbK4qE,GAAYksB,IAAc7yR,KAAK+yR,WAAaD,IAAe9yR,KAAKgzR,aAAej6C,IAAgB/4O,KAAKw4O,eACnGmuB,GACFA,EAAS/pL,SAGX+pL,EAAW3mQ,KAAK8mQ,UAAY/tB,EAAc,IAAIg+B,EAAkB,IAAI3R,EAAS0tB,EAAaD,EAAYte,EAAiBzY,EAAW+2B,EAAYhgB,EAAa1rL,GAC3JnnF,KAAK+yR,UAAYF,EACjB7yR,KAAKgzR,YAAcF,EACnB9yR,KAAKw4O,aAAeO,EACpB/4O,KAAKk7C,MAAMigM,aAGbn7O,KAAKk7C,MAAM36C,IAAIomQ,EAASzrN,OACjByrN,CACT,EACA8rB,YAAa,SAAU7+C,GACrB,QAASA,EAAY1wO,IAAI,cAC3B,EACA0vR,YAAa,SAAUjoL,GAErB,IAAIwnL,EAAKxnL,EAAIoqJ,QACTq9B,EAAiC,QAAzBD,EAAGE,QAAQj6M,UAElBg6M,GAA6B,MAApBpyR,KAAKuyR,aACjBJ,EAAGE,QAAQC,SAAStyR,KAAKuyR,aAAa7vQ,OAAM,EAEhD,EACAk6D,OAAQ,SAAU81J,EAAS/nI,GACzB3qG,KAAK8mQ,WAAa9mQ,KAAK8mQ,UAAUlqL,SACjC58E,KAAK8mQ,UAAY,KAEjB9mQ,KAAK4yR,YAAYjoL,EACnB,EACA6wI,QAAS,WAAa,IAGxBr6O,EAAOD,QAAUusB,C,2DCjLjB,IAAIohO,EAAsBrmO,EAAQ,MAsB9BiF,EAAW,CACb2lN,WAAY,QACZ4b,KAAMH,IACNpoJ,MAAO,SAAUmtI,GACf,IAAIf,EAAWe,EAAYS,iBACvBy+C,EAAal/C,EAAY1wO,IAAI,YAC7B+vR,EAAUr/C,EAAYoF,gBAAgBj9C,MAE1C,SAASv+C,EAAS57H,EAAQ0nC,GACxB,IAAI4pO,EAAa,GAEjB,GAAID,EAAS,CACX,IAAIvnQ,EACAynQ,EAAWvxQ,EAAO+8B,IAAM/8B,EAAO88B,MAEnC,GAAIo0O,EAAY,CAGd,IAFA,IAAIM,EAAmB,EAEdpvR,EAAI4d,EAAO88B,MAAO16C,EAAI4d,EAAO+8B,IAAK36C,IACzCovR,GAAoBx/C,EAAY49C,mBAAmBxtR,GAGrD0nB,EAAS,IAAI9V,aAAau9Q,EAA8B,EAAnBC,EACvC,MACE1nQ,EAAS,IAAI9V,aAAwB,EAAXu9Q,GAG5B,IAAIhmQ,EAAS,EACTmzG,EAAK,GAET,IAASt8H,EAAI4d,EAAO88B,MAAO16C,EAAI4d,EAAO+8B,IAAK36C,IAAK,CAC9C,IAAIwT,EAAMo8N,EAAY69C,cAAcztR,EAAGkvR,GAEnCJ,IACFpnQ,EAAOyB,KAAY3V,GAGrB,IAAK,IAAI3M,EAAI,EAAGA,EAAI2M,EAAK3M,IACvBy1H,EAAKuyG,EAASiC,YAAYo+C,EAAWroR,IAAI,EAAOy1H,GAChD50G,EAAOyB,KAAYmzG,EAAG,GACtB50G,EAAOyB,KAAYmzG,EAAG,EAE1B,CAEAh3E,EAASimM,UAAU,cAAe7jO,EACpC,MACE,IAAS1nB,EAAI4d,EAAO88B,MAAO16C,EAAI4d,EAAO+8B,IAAK36C,IAAK,CAC9C,IAAIo2O,EAAY9wL,EAAS+wL,aAAar2O,GAElCwyJ,GADAh/I,EAAMo8N,EAAY69C,cAAcztR,EAAGkvR,GAC7B,IAEV,GAAIJ,EACF,IAAK,IAAI7nR,EAAI,EAAGA,EAAIuM,EAAKvM,IACvBurJ,EAAIvyJ,KAAK4uO,EAASiC,YAAYo+C,EAAWjoR,SAEtC,CACLurJ,EAAI,GAAKq8E,EAASiC,YAAYo+C,EAAW,IACzC18H,EAAI,GAAKq8E,EAASiC,YAAYo+C,EAAW,IACzC,IAAIxnB,EAAYtxB,EAAUl3O,IAAI,wBAEzBwoQ,IACHl1G,EAAI,GAAK,EAAEA,EAAI,GAAG,GAAKA,EAAI,GAAG,IAAM,GAAKA,EAAI,GAAG,GAAKA,EAAI,GAAG,IAAMk1G,GAAYl1G,EAAI,GAAG,GAAKA,EAAI,GAAG,IAAM,GAAKA,EAAI,GAAG,GAAKA,EAAI,GAAG,IAAMk1G,GAEzI,CAEApiN,EAAS6iM,cAAcnoP,EAAGwyJ,EAC5B,CAEJ,CAEA,MAAO,CACLhZ,SAAUA,EAEd,GAEFr8I,EAAOD,QAAUusB,C,oBC/EjB,SAASvO,EAAUvc,GAKjB,OAJMA,aAAakE,QACjBlE,EAAI,CAACA,EAAGA,IAGHA,CACT,CAEA,IAAIqqQ,EAAe,oBAAoB1pQ,MAAM,KACzCmqB,EAAW,CACb2lN,WAAY,QACZ3sI,MAAO,SAAUmtI,EAAalB,EAAS/nI,GACrC,IAAIy4I,EAAalkO,EAAU00N,EAAY1wO,IAAI,WACvC09O,EAAa1hO,EAAU00N,EAAY1wO,IAAI,eACvC+b,EAAO20N,EAAY7oI,UAOvB,SAASsoL,EAASp0Q,EAAMkoF,GACtB,IAAIizI,EAAYn7N,EAAKo7N,aAAalzI,GAC9Bi8I,EAAalkO,EAAUk7N,EAAUsD,WAAW,UAAU,IACtDkD,EAAa1hO,EAAUk7N,EAAUsD,WAAW,cAAc,IAC1DpkN,EAAU8gN,EAAUl3O,IAAI8pQ,GAC5B5pB,EAAW,IAAMnkO,EAAK2tO,cAAczlJ,EAAK,aAAci8I,EAAW,IAClEA,EAAW,IAAMnkO,EAAK2tO,cAAczlJ,EAAK,WAAYi8I,EAAW,IAChExC,EAAW,IAAM3hO,EAAK2tO,cAAczlJ,EAAK,iBAAkBy5I,EAAW,IACtEA,EAAW,IAAM3hO,EAAK2tO,cAAczlJ,EAAK,eAAgBy5I,EAAW,IACpE3hO,EAAK2tO,cAAczlJ,EAAK,UAAW7tE,EACrC,CAEA,OAlBAra,EAAK+2N,UAAU,aAAcoN,GAAcA,EAAW,IACtDnkO,EAAK+2N,UAAU,WAAYoN,GAAcA,EAAW,IACpDnkO,EAAK+2N,UAAU,iBAAkB4K,GAAcA,EAAW,IAC1D3hO,EAAK+2N,UAAU,eAAgB4K,GAAcA,EAAW,IACxD3hO,EAAK+2N,UAAU,UAAWpC,EAAY1wO,IAAI8pQ,IAcnC,CACLqmB,SAAUp0Q,EAAK0yP,cAAgB0hB,EAAW,KAE9C,GAEFlyR,EAAOD,QAAUusB,C,wBCxDjB,IAAI0lN,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAER,IAAI8qQ,EAAkB9qQ,EAAQ,OAE1B+qQ,EAAY/qQ,EAAQ,OAEpBgrQ,EAAmBhrQ,EAAQ,OAE3BirQ,EAAiBjrQ,EAAQ,OAEzBkrQ,EAAyBlrQ,EAAQ,OAoBrC2qN,EAAQsC,eAAe69C,GACvBngD,EAAQ4C,eAAew9C,GACvBpgD,EAAQonB,kBAAkBpnB,EAAQuC,SAASixC,UAAUC,UAAW4M,GAChErgD,EAAQ6Z,qBAAqBymC,GAC7BC,EAAuB,MAAO,CAAC,CAC7BlvR,KAAM,kBACN6e,MAAO,mBACPjG,OAAQ,kBACP,CACD5Y,KAAM,YACN6e,MAAO,cACPjG,OAAQ,UACP,CACD5Y,KAAM,cACN6e,MAAO,gBACPjG,OAAQ,a,iCCrDV,IAAIk1N,EAAS9pN,EAAQ,OAEjBgyO,EAAmBhyO,EAAQ,OAE3Bo3N,EAAcp3N,EAAQ,OAEtB05O,EAAU15O,EAAQ,OAElB25O,EAAaD,EAAQC,WACrBwxB,EAAYzxB,EAAQyxB,UAEpBC,EAAsBprQ,EAAQ,OAE9Bw6P,EAAgBx6P,EAAQ,OAExBqrQ,EAAkB7Q,EAAc6Q,gBAEhCC,EAAmBtrQ,EAAQ,OAE3BmyO,EAAgBnyO,EAAQ,MAExBoyO,EAA+BD,EAAcC,6BAoB7Cm5B,EAAYn0C,EAAYl8H,OAAO,CACjCl/G,KAAM,aACN0xO,aAAc,CAAC,OACf89C,WAAY,MAMZC,cAAc,EAMdz/C,YAAa,GACbsL,eAAgB,SAAU/0M,GAUxB,IATA,IAAI9rB,EAAOu7O,EAAiBx6P,KAAM,CAChCm7P,gBAAiB,CAAC,SAClBC,gBAAiB9oB,EAAOuD,MAAM+kB,EAA8B56P,QAE1DwiP,EAAWvjO,EAAKysO,aAAa,SAC7BwoC,EAAc5hD,EAAO6hD,gBACrBC,EAAmB,GACnBC,EAAgB,GAEXrwR,EAAI,EAAGwT,EAAMyH,EAAKsJ,QAASvkB,EAAIwT,EAAKxT,IAAK,CAChD,IAAIS,EAAOwa,EAAK60N,QAAQ9vO,GACxBkwR,EAAY1hR,IAAI/N,GAAM,GACtB2vR,EAAiBnwR,KAAK,CACpBQ,KAAMA,EACN3C,MAAOmd,EAAK/b,IAAIs/O,EAAUx+O,GAC1BmuH,SAAU0hK,EAAgB50Q,EAAMjb,EAAG,aAEvC,CAEA,IAAIswR,EAAYR,EAAiB9mE,KAAKhtN,KAAKu0R,aAAcv0R,KAAK+qC,OAAOypP,QAASx0R,KAAK+qC,OAAO0pP,cAgB1F,OAfAniD,EAAO56H,KAAK48K,EAAUI,SAAS,SAAUC,GACvC,IAAIlwR,EAAOkwR,EAAOlwR,KAEbyvR,EAAYhxR,IAAIuB,KACnB2vR,EAAiBnwR,KAAK,CACpBQ,KAAMA,IAER4vR,EAAcpwR,KAAKQ,GAEvB,IACAzE,KAAK40R,kBAAkBR,GAIvBn1Q,EAAK41Q,aAAa,GAAIR,GACfp1Q,CACT,EAMA61Q,gBAAiB,WACf,IAAI1kB,EAAWpwQ,KAAK+qC,OAAOqlO,SAC3B,OAAmB,MAAZA,EAAmBpwQ,KAAK+0R,gBAAgB3gD,IAAIg8B,GAAY,IACjE,EACAmkB,WAAY,WACV,OAAQv0R,KAAK80R,mBAAqB90R,MAAM+qC,OAAOrhB,GACjD,EAOAmoP,YAAa,SAAUh+B,GAGrB,IAAI50N,EAAOjf,KAAK+qG,UAChB,OAAO9rF,EAAK/b,IAAI+b,EAAKysO,aAAa,SAAU7X,EAC9C,EAOAmhD,eAAgB,SAAUC,GACxB,IAAIh2Q,EAAOjf,KAAK+qG,UAChB,OAAO9rF,EAAKo7N,aAAap7N,EAAKi2Q,YAAYD,GAC5C,EAOAjxB,cAAe,SAAUnwB,EAAWowB,EAAgBxL,EAAU08B,GAQ5D,IANA,IAAIl2Q,EAAOjf,KAAK+qG,UACZqqL,EAAiBzB,EAAU3zR,KAAK6xQ,YAAYh+B,IAC5CpvO,EAAOwa,EAAK60N,QAAQD,GACpBW,EAAcx0O,KAAKw0O,YACnB6gD,EAAc,GAETrxR,EAAI,EAAGA,EAAIwwO,EAAYxyO,OAAQgC,IAAK,CAC3C,IAAIsxR,EAAa9gD,EAAYxwO,GAAGuxR,aAAaL,YAAYzwR,GACrD+9O,EAAWvjO,EAAKysO,aAAa,SAE5B38O,MAAMylO,EAAYxwO,GAAGuxR,aAAaryR,IAAIs/O,EAAU8yC,KACnDD,EAAYpxR,KAAKk+P,EAAW3tB,EAAYxwO,GAAGS,MAE/C,CAEA,IAAI+wR,EAAyB,SAAfL,EAAwB,QAAU,KAChD,OAAOE,EAAYvqR,KAAK,MAAQ0qR,EAAUrzB,EAAW19P,EAAO,MAAQ2wR,EACtE,EAKAK,mBAAoB,SAAU5hD,GAC5B,GAAiB,MAAbA,EAAmB,CACrB,IAAIpvO,EAAOzE,KAAK+qG,UAAU+oI,QAAQD,GAC9BO,EAAMp0O,KAAKq0O,iBACXsgD,EAASvgD,EAAIshD,UAAUjxR,GAC3B,OAAOkwR,GAAUvgD,EAAIU,YAAY6/C,EAAOllP,OAC1C,CACF,EACA8kM,QAAS,SAAUn3J,GACjBp9E,KAAK+qC,OAAOqyC,KAAOA,CACrB,EACAk3J,UAAW,SAAU7kM,GACnBzvC,KAAK+qC,OAAO0E,OAASA,CACvB,EACA+mM,cAAe,CAEb4J,OAAQ,EAERroK,EAAG,EACHs8J,iBAAkB,MAElB3qN,IAAK,GAML2mB,KAAM,SAENE,IAAK,SAOLolP,YAAa,IAYbC,kBAAkB,EAGlBC,oBAAoB,EAMpBC,eAAgB,KAEhBrmP,OAAQ,KACR2tC,KAAM,EACN24M,WAAY,KACZ7mP,MAAO,CACLxB,MAAM,EACN9c,MAAO,QAGT2uN,UAAW,CACT13K,YAAa,GACbg8J,YAAa,OACbmyD,UAAW,QAEbt1C,SAAU,CACRxxM,MAAO,CACLxB,MAAM,EACN9c,MAAO,gBAET2uN,UAAW,CACTy2C,UAAW,wBAGfvB,aAAc,UAGlBniD,EAAO0W,MAAM+qC,EAAWH,GACxB,IAAInmQ,EAAWsmQ,EACf5yR,EAAOD,QAAUusB,C,wBCrPjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAElBytQ,EAAUztQ,EAAQ,OAoBlB0tQ,EAAiB,sBACjBC,EAAsB,qBAEtB1oQ,EAAW0lN,EAAQkF,gBAAgB,CACrC7zO,KAAM,MACNrF,OAAQ,SAAUi3R,EAAU1jD,EAAS/nI,EAAK6oI,GAExC,IAAIA,GAA4B,oBAAjBA,EAAQhvO,MAA8BgvO,EAAQp1K,OAASp+D,KAAK6N,IAA3E,CAIA,IAAIqtC,EAAQl7C,KAAKk7C,MAGjB,GAFAA,EAAMigM,aAEFi7C,EAAStB,kBAAb,CAKA,GAAMthD,GAA4B,YAAjBA,EAAQhvO,MAAgD,WAA1BgvO,EAAQU,eAA8BV,EAAQO,WAAaqiD,EAAS5sR,GAW5G,CACD6sR,EAAUr2R,KAAKs2R,SACnBD,GAAWn7O,EAAM36C,IAAI81R,EAAQn7O,MAC/B,MAbE,GAAIk7O,EAASnC,aAAc,CACzB,IAAIoC,EAAUr2R,KAAKs2R,UAAY,IAAIL,EAAQtrL,GAAK,GAChDzvD,EAAM36C,IAAI81R,EAAQn7O,OAClBm7O,EAAQrgQ,KAAKogQ,EAAU1jD,EAAS/nI,EAAK3qG,KAAMwzO,GAC3CxzO,KAAKs2R,SAAWD,CAClB,MAEEr2R,KAAKs2R,UAAYt2R,KAAKs2R,SAAS15M,SAC/B58E,KAAKs2R,SAAW,KAOpBF,EAASlzR,IAAI,qBAAuBwvO,EAAQizC,aAAa,WAAa3lR,KAAKu2R,eAAeH,EAAU1jD,EAAS/nI,EAnB7G,CAPA,CA2BF,EACA/tB,OAAQ,WACN58E,KAAKs2R,UAAYt2R,KAAKs2R,SAAS15M,SAC/B58E,KAAKs2R,SAAW,KAChBt2R,KAAKk7C,MAAMigM,WACb,EACAK,QAAS,WACPx7O,KAAKs2R,UAAYt2R,KAAKs2R,SAAS15M,SAC/B58E,KAAKs2R,SAAW,IAClB,EACAC,eAAgB,SAAUH,EAAU1jD,EAAS/nI,GAC3C,IAAI4qL,EAAea,EAASb,aACxBr6O,EAAQl7C,KAAKk7C,MACjBq6O,EAAa79K,KAAK69K,EAAa7pC,aAAa,UAAU,SAAU5pP,EAAO00R,GACrE,IAAIznR,MAAMjN,GAAV,CAIA,IAAIqmG,EAASotL,EAAaz4C,cAAc05C,GAExC,GAAKruL,GAAWA,EAAOn4F,MAAvB,CAKA,IAAIA,EAAQm4F,EAAOn4F,MACfmd,EAASg7E,EAAOh7E,OAChBgQ,EAAS,IAAI25M,EAAQ9sJ,OAAO,CAC9Bp+E,MAAO,CAMLme,KAAMqsQ,EAASrrL,UAAUuyI,UAAU,UAErC9nN,MAAO,CACLtG,GAAIlf,EAAM,GAAc,EAATmd,EACfgC,GAAInf,EAAM,GACV+c,EAAG,GAELoiI,QAAQ,EAERmtF,GAAI,GAAMnvN,EAAwC,EAA/B2pN,EAAQ2/C,iBAAmB,KAWhD,IAAKtpQ,EAAQ,CACX,IAAIupQ,EAAWN,EAASO,WAAW5rL,UAC/BtmG,EAAO8wR,EAAazhD,QAAQ0iD,GAC5BI,EAAYF,EAASxB,YAAYzwR,GACjC21O,EAAYm7C,EAAal7C,aAAam8C,GACtCzuC,EAAa3N,EAAUZ,SAAS,SAChCwO,EAAkB5N,EAAUZ,SAAS,kBACrCq9C,EAAcH,EAAS57C,iBAAiB87C,GAQxC9b,EAAaxoC,EAAOwc,UAAUsnC,EAASlgC,kBAAkB0gC,EAAW,UAAWnyR,GAC/Es2Q,EAAezoC,EAAOwc,UAAUsnC,EAASlgC,kBAAkB0gC,EAAW,YAAa9b,GACnFgc,EAAiBD,EAAYX,GAC7Ba,EAAgB5wR,KAAKgJ,SAEzB,IAAK2nR,EAAgB,CACnBA,EAAiBD,EAAYX,GAAkB,CAAC,EAChD,IAAI9f,EAAa9jC,EAAOuD,MAAMmhD,GAAkB,GAC5C3gB,EAAW/jC,EAAOuD,MAAMmhD,GAAkB,GAC9CH,EAAYpzN,GAAG,YAAa2yM,GAAY3yM,GAAG,WAAY4yM,GAAU5yM,GAAG,WAAY2yM,GAAY3yM,GAAG,SAAU4yM,EAC3G,CAGAwgB,EAAYV,GAAuBY,EACnCzkD,EAAO5uH,OAAOozK,EAAgB,CAC5BC,cAAeA,EACf55P,OAAQA,EACR4qN,WAAYA,EACZC,gBAAiBA,EACjB+yB,aAAcA,EACdD,WAAYA,IAIdmc,EAAoBH,GAAgB,EACtC,CAEA57O,EAAM36C,IAAI48B,EAzEV,CAPA,CAiFF,GACF,IAGF,SAAS65P,EAAiBE,GACxB,IAAIJ,EAAiB92R,KAAKk2R,GAEtBY,GAAkBA,EAAeC,gBAAkB/2R,KAAKm2R,IAC1Dc,EAAoBH,EAAgBI,EAExC,CAEA,SAASD,EAAoBH,EAAgBI,GAC3C,IAAI/5P,EAAS25P,EAAe35P,OACxB4qN,EAAa+uC,EAAe/uC,WAC5BC,EAAkB8uC,EAAe9uC,gBACjC+yB,EAAe+b,EAAe/b,aAC9BD,EAAagc,EAAehc,WAE5Boc,GACF/5P,EAAOvxB,MAAMurR,WAAWrgD,EAAQmf,aAAa,CAAC,EAAGjO,EAAiB,CAChErrN,KAAMqrN,EAAgB9kP,IAAI,QAAU63Q,EAAe,MAClD,CACD1yB,YAAY,EACZyU,gBAAgB,IACf,IAEH3/N,EAAOi6P,gBAAkBj6P,EAAOm/M,GAChCn/M,EAAOm/M,IAAMxF,EAAQ2/C,mBAErB3/C,EAAQmf,aAAa94N,EAAOvxB,MAAOm8O,EAAY,CAC7CprN,KAAMorN,EAAW7kP,IAAI,QAAU43Q,EAAa,KAC5Ct0N,aAAcuhM,EAAWrK,WAAW,aAAe,UAClD,CACD2K,YAAY,EACZyU,gBAAgB,IAGlB3/N,EAAOwmI,OAAM,GAEiB,MAA1BxmI,EAAOi6P,kBACTj6P,EAAOm/M,GAAKn/M,EAAOi6P,gBACnBj6P,EAAOi6P,gBAAkB,MAG/B,CAEAj2R,EAAOD,QAAUusB,C,iCC9MjB,IAAI6kN,EAAS9pN,EAAQ,OAoBrB,SAASiF,EAASsd,GAEhB,IAAIssP,EAAY,GAChB/kD,EAAO56H,KAAK3sE,EAAOiB,QAAQ,SAAU2kP,GAC/BA,GAAgC,QAAnBA,EAAUnsR,OACzB6yR,EAAUpzR,KAAK0sR,GACfA,EAAUjnQ,IAAMinQ,EAAUjnQ,KAAOinQ,EAAU2G,QAE3ChlD,EAAO94I,SAASm3L,EAAWA,EAAU4G,aAEzC,GACF,CAEAp2R,EAAOD,QAAUusB,C,iCCjCjB,IAAI6kN,EAAS9pN,EAAQ,OA2BrB,SAASgvQ,EAAe1hO,EAAO2hO,GAC7B,IAAIvD,EAAc,CAAC,EAYnB,OAXA5hD,EAAO56H,KAAK5hD,GAAO,SAAU72C,GAC3BA,EAAKy4F,KAAKz4F,EAAKysO,aAAa,UAAU,SAAU5pP,EAAOqlG,GAErD,IAAIuwL,EAAS,MAAQz4Q,EAAK60N,QAAQ3sI,GAClC+sL,EAAYwD,GAAUxD,EAAYwD,IAAW,GAExC3oR,MAAMjN,IACToyR,EAAYwD,GAAQzzR,KAAKnC,EAE7B,GACF,IACOg0D,EAAM,GAAGpsC,IAAIosC,EAAM,GAAG41L,aAAa,UAAU,SAAU5pP,EAAOqlG,GAOnE,IANA,IAYIzjG,EAZAg0R,EAAS,MAAQ5hO,EAAM,GAAGg+K,QAAQ3sI,GAClC57E,EAAM,EACN3c,EAAMikF,IACNlkF,GAAOkkF,IACPr7E,EAAM08Q,EAAYwD,GAAQ11R,OAErBgC,EAAI,EAAGA,EAAIwT,EAAKxT,IACvB4K,EAAMzI,KAAKyI,IAAIA,EAAKslR,EAAYwD,GAAQ1zR,IACxC2K,EAAMxI,KAAKwI,IAAIA,EAAKulR,EAAYwD,GAAQ1zR,IACxCunB,GAAO2oQ,EAAYwD,GAAQ1zR,GAe7B,OATEN,EADoB,QAAlB+zR,EACO7oR,EACkB,QAAlB6oR,EACA9oR,EACkB,YAAlB8oR,EACAlsQ,EAAM/T,EAEN+T,EAGI,IAAR/T,EAAYg0E,IAAM9nF,CAC3B,GACF,CAEA,SAAS+pB,EAASilN,GAChB,IAAIilD,EAAe,CAAC,EACpBjlD,EAAQkY,iBAAiB,OAAO,SAAUhX,GACxC,IAAIgkD,EAAehkD,EAAYkhD,kBAC3BjxR,EAAM+zR,EAAe,IAAMA,EAAapuR,GAAK,IAAMoqO,EAAY2gD,cAClEoD,EAAa9zR,GAAO8zR,EAAa9zR,IAAQ,IAAII,KAAK2vO,EACrD,IACAtB,EAAO56H,KAAKigL,GAAc,SAAUE,EAAYh0R,GAK9C,IAJA,IAAIob,EAAOu4Q,EAAellD,EAAO5oN,IAAImuQ,GAAY,SAAUjkD,GACzD,OAAOA,EAAY7oI,SACrB,IAAI8sL,EAAW,GAAG30R,IAAI,wBAEbc,EAAI,EAAGA,EAAI6zR,EAAW71R,OAAQgC,IACrC6zR,EAAW7zR,GAAGuxR,aAAesC,EAAW7zR,GAAG+mG,UAI7C,IAAS/mG,EAAI,EAAGA,EAAI6zR,EAAW71R,OAAQgC,IACrC6zR,EAAW7zR,GAAGwwO,YAAcqjD,EAC5BA,EAAW7zR,GAAGiwR,aAAqB,IAANjwR,IAAY6zR,EAAW7zR,GAAG8wR,kBACvD+C,EAAW7zR,GAAGinG,QAAQhsF,EAAK64Q,gBAC3BD,EAAW7zR,GAAG2yR,WAAakB,EAAW,EAE1C,GACF,CAEA12R,EAAOD,QAAUusB,C,wBC/FjB,IAAI6kN,EAAS9pN,EAAQ,OAoBrB,SAASiF,EAASilN,GAChB,IAAIqlD,EAAmB,CAAC,EACxBrlD,EAAQkY,iBAAiB,OAAO,SAAUysC,GACxC,IAAIC,EAAUD,EAAU9C,aAExB,IAAI8C,EAAUvC,oBAAqBiD,EAAiBT,GAApD,CAIA,IAAIU,EAAmB,CAAC,EACxB1lD,EAAO56H,KAAK2/K,EAAU7iD,aAAa,SAAUyjD,GAC3C,IAAI7jD,EAAM6jD,EAAa5jD,iBACnBp1N,EAAOg5Q,EAAa1C,aAEpB0C,EAAa/0R,IAAI,qBAAuBwvO,EAAQizC,aAAa,WAC/D1mQ,EAAKy4F,KAAKz4F,EAAKysO,aAAa,UAAU,SAAU5pP,EAAOqlG,GACrD,IAAI1iG,EAAOwa,EAAK60N,QAAQ3sI,GACpBwtL,EAASvgD,EAAIshD,UAAUjxR,GAI3B,GAAKkwR,IAAU5lR,MAAMjN,GAArB,CAIA,IAAIqrB,EAAS6qQ,EAAiBvzR,IAAS,EACnCuL,EAAQokO,EAAIU,YAAY6/C,EAAOllP,QACnCuoP,EAAiBvzR,GAAQ0oB,EAAS,EAClClO,EAAKktO,cAAchlJ,EAAK,CACtBn3F,MAAOA,EACPmd,OAAQA,GAPV,CASF,GAEJ,IAEA,IAAIlO,EAAOo4Q,EAAUtsL,UACrB9rF,EAAKy4F,MAAK,SAAUvQ,GAClB,IAAI1iG,EAAOwa,EAAK60N,QAAQ3sI,GACpBgB,EAASlpF,EAAK69N,cAAc31I,IAAQ,CAAC,EACzCgB,EAAO4xH,WAAai+D,EAAiBvzR,GACrCwa,EAAKktO,cAAchlJ,EAAKgB,EAC1B,IACA4vL,EAAiBT,IAAW,CApC5B,CAqCF,GACF,CAEAn2R,EAAOD,QAAUusB,C,oBCjDjB,SAASA,EAASilN,GAChBA,EAAQkY,iBAAiB,OAAO,SAAUhX,GACxC,IAAIwrB,EAAYxrB,EAAY1wO,IAAI,SAC5Bq6O,EAAiB3J,EAAY4F,SAAS,aACtCw8C,EAAYz4C,EAAer6O,IAAI,aAC/B0tB,EAAQ2sN,EAAer6O,IAAI,UAAYk8P,EAAUxrB,EAAY8K,YAAc0gB,EAAUp9P,QACzF4xO,EAAY7oI,UAAUirI,UAAU,CAC9B,UAAaggD,EACb,MAASplQ,GAEb,GACF,CAEAzvB,EAAOD,QAAUusB,C,wBC/BjB,IAAI0lN,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAER,IAAI0vQ,EAAiB1vQ,EAAQ,OAoB7B2qN,EAAQ4C,eAAemiD,E,iCC5BvB,IAAItoQ,EAAQpH,EAAQ,OAEhBkvF,EAAO9nF,EAAM8nF,KACby8K,EAAgBvkQ,EAAMukQ,cAEtBv0C,EAAcp3N,EAAQ,OAEtBq3N,EAAsBr3N,EAAQ,OAoB9BiF,EAAWmyN,EAAYl8H,OAAO,CAChCl/G,KAAM,kBACN0xO,aAAc,CAAC,YACf86C,sBAAuB,kBACvBlxC,eAAgB,SAAU/0M,EAAQ2nM,GAChC,IAAIhuO,EAAS1E,KAAK+/O,YAElB,OADAo4C,EAAuBzzR,EAAQ1E,MACxB6/O,EAAoBn7O,EAAQ1E,KACrC,EASAo4R,2BAA4B,SAAUC,GACpC,IAAIxlD,EAAW7yO,KAAKq0O,iBAChBp1N,EAAOjf,KAAK+qG,UACZisC,EAAU,GAMd,OALA67F,EAASylD,gBAAgBr5Q,GAAM,SAAUs5Q,EAAgB1kD,GACnDwkD,IAAgBE,GAClBvhJ,EAAQ/yI,KAAKgb,EAAK02O,YAAY9hB,GAElC,IACO78F,CACT,EACAw/F,cAAe,CACb4J,OAAQ,EAERroK,EAAG,EAEHs8J,iBAAkB,WAClBmkD,cAAe,EACftpP,MAAO,CACLxB,MAAM,GAER+qP,gBAAiB,IACjBC,cAAe,EACfpmP,UAAW,CACT9J,MAAO,EACPlP,QAAS,IACT90B,KAAM,SAERk8O,SAAU,CACRxxM,MAAO,CACLxB,MAAM,IAGV8yM,YAAa,IACbnuM,QAAQ,EAER2wH,gBAAiB,YAIrB,SAASm1H,EAAuBzzR,EAAQkvO,GAOtC,IAAIlvO,EAAOi0R,aAAX,CAIA,IAAIC,EAAgBhlD,EAAYlB,QAAQizC,aAAa,WAAY/xC,EAAY1wO,IAAI,kBAEjF,GAAK01R,EAAL,CAIA,IAAID,EAAej0R,EAAOi0R,aAAexE,IACzCz8K,EAAKkhL,EAAch+H,YAAY,SAAUi+H,GACvC,IAAIniC,EAAeoiC,EAAuBD,GAC1CF,EAAanmR,IAAIqmR,EAASniC,EAC5B,GANA,CANA,CAaF,CAEA,SAASoiC,EAAuBriC,GAC9B,OAAQA,EAAQ76O,QAAQ,MAAO,GACjC,CAEAza,EAAOD,QAAUusB,C,iCChHjB,IAAIqpN,EAAUtuN,EAAQ,OAElBygO,EAAYzgO,EAAQ,OAoBpBuwQ,EAAiB,GACjBC,EAAe/vC,EAAUvlI,OAAO,CAClCl/G,KAAM,WACNkzD,KAAM,WAKJ13D,KAAKi5R,WAAa,IAAIniD,EAAQM,MAC9Bp3O,KAAKk7C,MAAM36C,IAAIP,KAAKi5R,YAKpBj5R,KAAKqqK,MAKLrqK,KAAKk5R,YACP,EAKA/5R,OAAQ,SAAUy0O,EAAalB,EAAS/nI,EAAK6oI,GAC3C,IAAI2lD,EAAYn5R,KAAKi5R,WACjBh6Q,EAAO20N,EAAY7oI,UACnB6U,EAAU5/G,KAAKqqK,MACfwoE,EAAWe,EAAYS,iBACvBz5E,EAAai4E,EAASj4E,WACtBk4G,EAAc+I,EAAgBjoC,GAGlC,SAASrzO,EAAI64R,GACX,IAAI5tP,EAAO6tP,EAAMp6Q,EAAMk6Q,EAAWC,EAAcx+H,EAAYi4E,GAC5DymD,EAAe9tP,EAAMvsB,EAAMm6Q,EAActmB,EAC3C,CAEA,SAAS97O,EAAOoiQ,EAAcG,GAC5B,IAAI/tP,EAAOo0E,EAAQk7H,iBAAiBy+C,GAChC7tQ,EAAS8tQ,EAAiBv6Q,EAAMm6Q,EAAcx+H,EAAYi4E,GAC9D5zN,EAAKw7N,iBAAiB2+C,EAAc5tP,GACpC,IAAI0tM,EAAiB1F,IAAiC,IAAtBA,EAAQxiN,UAAsB,KAAO4iN,EACrEkD,EAAQ+D,YAAYrvM,EAAM,CACxBhW,MAAO,CACL9J,OAAQA,IAETwtN,EAAgBkgD,GACnBE,EAAe9tP,EAAMvsB,EAAMm6Q,EAActmB,EAC3C,CAEA,SAASl2L,EAAO28M,GACd,IAAI/tP,EAAOo0E,EAAQk7H,iBAAiBy+C,GACpCJ,EAAUv8M,OAAOpxC,EACnB,CAGA,GA1BAvsB,EAAK2tF,KAAKgT,GAASr/G,IAAIA,GAAKy2B,OAAOA,GAAQ4lD,OAAOA,GAAQ2/D,WA0BrDv8I,KAAKk5R,aAAc,CACtBl5R,KAAKk5R,cAAe,EACpB,IAAI79C,EAAWo+C,EAAoB5mD,EAAUe,GAAa,WAExDzvN,YAAW,WACTg1Q,EAAU9/C,gBACZ,GACF,IACA8/C,EAAU79C,YAAYD,EACxB,CAEAr7O,KAAKqqK,MAAQprJ,CACf,EACA05N,yBAA0B,SAAU/E,EAAalB,EAAS/nI,GACxD3qG,KAAKk5R,cAAe,EACpBl5R,KAAKqqK,MAAQ,KAEbrqK,KAAKi5R,WAAW99C,WAClB,EACAtC,kBAAmB,SAAU4+B,EAAY7jC,EAAalB,GAMpD,IALA,IAAIzzN,EAAO20N,EAAY7oI,UACnB8nI,EAAWe,EAAYS,iBACvBz5E,EAAai4E,EAASj4E,WACtBk4G,EAAc+I,EAAgBjoC,GAEzBC,EAAY4jC,EAAW/4N,MAAOm1L,EAAY4jC,EAAW94N,IAAKk1L,IAAa,CAC9E,IAAIroM,EAAO6tP,EAAMp6Q,EAAMjf,KAAKi5R,WAAYplD,EAAWj5E,EAAYi4E,GAC/DrnM,EAAK2yM,aAAc,EACnBm7C,EAAe9tP,EAAMvsB,EAAM40N,EAAWi/B,EACxC,CACF,EACAt3B,QAAS,WAAa,EA8BtB5+J,OAAQ,WACN58E,KAAKi5R,YAAcj5R,KAAKi5R,WAAW99C,YACnCn7O,KAAKqqK,MAAQ,IACf,IAGF,SAASovH,EAAoB5mD,EAAUe,EAAaj7J,GAClD,IAAIigN,EAAgB/lD,EAAS0e,MACzBt0N,EAAO41M,EAAS6M,UAChBg6C,EAAS,IAAI5iD,EAAQuF,KAAK,CAC5B7mN,MAAO,CACL1V,EAAGmd,EAAKnd,EACR6e,EAAG1B,EAAK0B,EACR6J,MAAOvL,EAAKuL,MACZC,OAAQxL,EAAKwL,UAGbwpG,EAAsC,eAAhC2mJ,EAAc11R,IAAI,UAA6B,QAAU,SAQnE,OAPAw2R,EAAOv/C,SAASloG,EAAK,GACrB6kG,EAAQkX,UAAU0rC,EAAQ,CACxBlkQ,MAAO,CACLgT,MAAOvL,EAAKuL,MACZC,OAAQxL,EAAKwL,SAEdmrM,EAAaj7J,GACT+gN,CACT,CAEA,SAASF,EAAiBv6Q,EAAM40N,EAAWj5E,EAAYi4E,GAGrD,IAFA,IAAInnN,EAAS,GAEJ1nB,EAAI,EAAGA,EAAI42J,EAAW54J,OAAQgC,IAAK,CAC1C,IAAIyyP,EAAU77F,EAAW52J,GACrBlC,EAAQmd,EAAK/b,IAAI+b,EAAKysO,aAAa+K,GAAU5iB,GAE5Cz/J,EAAatyE,EAAO+wO,EAASs+B,QAAQ1a,GAASjyP,OACjDknB,EAAOznB,KAAK4uO,EAASiC,YAAYhzO,EAAO20P,GAE5C,CAEA,OAAO/qO,CACT,CAEA,SAAS2tQ,EAAMp6Q,EAAMk6Q,EAAWtlD,EAAWj5E,EAAYi4E,GACrD,IAAInnN,EAAS8tQ,EAAiBv6Q,EAAM40N,EAAWj5E,EAAYi4E,GACvDrnM,EAAO,IAAIsrM,EAAQglB,SAAS,CAC9BtmO,MAAO,CACL9J,OAAQA,GAEVyjI,QAAQ,EACRmtF,GAAI,KAIN,OAFA68C,EAAU54R,IAAIirC,GACdvsB,EAAKw7N,iBAAiB5G,EAAWroM,GAC1BA,CACT,CAEA,SAASqwO,EAAgBjoC,GACvB,IAAIvhM,EAASuhM,EAAY1wO,IAAI,UAAU,GAEvC,OADW,IAAXmvC,IAAoBA,EAAS0mP,GACtB,CACLzmP,UAAWshM,EAAY4F,SAAS,aAAajgM,eAC7ClH,OAAkB,MAAVA,EAAiBA,EAAS0mP,EAEtC,CAEA,SAASO,EAAe13R,EAAIqd,EAAM40N,EAAWi/B,GAC3C,IAAIxgO,EAAYwgO,EAAYxgO,UAE5B,GAAIrzB,EAAK0yP,cAAe,CACtB,IAAInS,EAAiBvgP,EAAKo7N,aAAaxG,GAAW2F,SAAS,aAC3DlnM,EAAYktN,EAAejmN,cAC7B,CAEA33C,EAAGq4O,SAAS3nM,GACZ,IAAI0rO,EAAUp8Q,EAAGgK,MACjBoyQ,EAAQj0P,KAAO,KAEfi0P,EAAQ3kP,OAASpa,EAAKo+N,cAAcxJ,EAAW,SAE/CmqC,EAAQ1kP,QAAUra,EAAKo+N,cAAcxJ,EAAW,WAChDi/B,EAAYzgO,SAAWzwC,EAAG4zB,MAAM6c,OAASygO,EAAYzgO,OACvD,CAsBA,SAAS+hC,EAAaplE,EAAKmnC,GACzB,MAAoB,aAAbA,EAAiC,MAAPnnC,EAAqB,MAAPA,GAAeD,MAAMC,EACtE,CAEA,IAAIye,EAAWurQ,EACf73R,EAAOD,QAAUusB,C,oBCxOjB,IAAI4uO,EAAoB,CAAC,YAAa,SAAU,WAC5C5uO,EAAW,CACb2lN,WAAY,WACZ3sI,MAAO,SAAUmtI,EAAalB,EAAS/nI,GACrC,IAAI4yI,EAAiB3J,EAAY4F,SAAS,aACtCgmB,EAAiB5rB,EAAY4F,SAAS,aACtC+S,EAAe7Z,EAAQxvO,IAAI,SAC3B0tB,EAAQ4uO,EAAet8P,IAAI,UAAYq6O,EAAer6O,IAAI,UAAYqpP,EAAa3Y,EAAY8K,YAAc6N,EAAavqP,QAC1Hy2R,EAAkB7kD,EAAY1wO,IAAI,mBAClCw1R,EAAgB9kD,EAAY1wO,IAAI,iBAChCovC,EAAYshM,EAAY4F,SAAS,aAAajgM,eAC9Cs5L,EAAWe,EAAYS,iBACvBp1N,EAAO20N,EAAY7oI,UACnB4uL,EAAa,CACf57D,OAAQzrL,EAAUhZ,QAClBggC,OAAQo/N,EACRxxH,SAAUuxH,GAIZ,SAASj7I,EAAS57H,EAAQ3C,GACxB4zN,EAASylD,gBAAgBr5Q,GAAM,SAAUo5Q,EAAaxkD,GACpD,IAAIv6M,EAAUqgQ,EAAWtB,GAEzB,GAAoB,WAAhBA,GAA4Bp5Q,EAAK0yP,cAAe,CAClD,IAAIioB,EAAc36Q,EAAKo7N,aAAaxG,GAAW3wO,IAAIm5P,GAAmB,GACvD,MAAfu9B,IAAwBtgQ,EAAUsgQ,EACpC,CAEA36Q,EAAK2tO,cAAc/Y,EAAW,UAAWv6M,EAC3C,GAAG1X,EAAO88B,MAAO98B,EAAO+8B,IAC1B,CAEA,OAfA1/B,EAAK+2N,UAAU,QAASplN,GAejB,CACL4sH,SAAUA,EAEd,GAEFr8I,EAAOD,QAAUusB,C,wBCxDjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAErBA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAER,IAAI+sN,EAAW/sN,EAAQ,OAEnB2/E,EAASotI,EAASptI,OAElBgxJ,EAAe3wO,EAAQ,OAE3BA,EAAQ,OAqBR2qN,EAAQsC,eAAenD,EAAOuD,MAAM1tI,EAAQ,iBAC5CgrI,EAAQ4C,eAAeojB,EAAa,eAAgB,a,wBCtCpD,IAAIhmB,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAErBA,EAAQ,OAERA,EAAQ,OAER,IAAIkrQ,EAAyBlrQ,EAAQ,OAEjC4xO,EAAY5xO,EAAQ,OAEpBqxQ,EAAYrxQ,EAAQ,MAEpB8xO,EAAa9xO,EAAQ,OAoBzBkrQ,EAAuB,MAAO,CAAC,CAC7BlvR,KAAM,kBACN6e,MAAO,mBACPjG,OAAQ,kBACP,CACD5Y,KAAM,YACN6e,MAAO,cACPjG,OAAQ,UACP,CACD5Y,KAAM,cACN6e,MAAO,gBACPjG,OAAQ,cAEV+1N,EAAQ4C,eAAeqkB,EAAU,QACjCjnB,EAAQsC,eAAenD,EAAOuD,MAAMgkD,EAAW,QAC/C1mD,EAAQonB,kBAAkBD,EAAW,O,iCCjDrC,IAAInnB,EAAU3qN,EAAQ,OAElBgyO,EAAmBhyO,EAAQ,OAE3B8pN,EAAS9pN,EAAQ,OAEjB6+P,EAAY7+P,EAAQ,OAEpBi5N,EAAUj5N,EAAQ,OAElBsxQ,EAA0Br4C,EAAQq4C,wBAElClG,EAAsBprQ,EAAQ,OAE9Bw6P,EAAgBx6P,EAAQ,OAExBqrQ,EAAkB7Q,EAAc6Q,gBAEhCl5B,EAAgBnyO,EAAQ,MAExBoyO,EAA+BD,EAAcC,6BAE7CC,EAAuBryO,EAAQ,OAoB/BuxQ,EAAY5mD,EAAQ4nB,kBAAkB,CACxCv2P,KAAM,aAENkzD,KAAM,SAAU3sB,GACdgvP,EAAUx4C,WAAWvhP,KAAM,OAAQ+C,WAGnC/C,KAAKg7P,qBAAuB,IAAIH,EAAqBvoB,EAAOv1N,KAAK/c,KAAK+qG,QAAS/qG,MAAOsyO,EAAOv1N,KAAK/c,KAAKi7P,WAAYj7P,OACnHA,KAAK40R,kBAAkB50R,KAAKg6R,yBAE5Bh6R,KAAKk7P,kBAAkBnwN,EACzB,EAEA+3N,YAAa,SAAUm3B,GACrBF,EAAUx+B,UAAUv7P,KAAM,cAAei6R,GACzCj6R,KAAK40R,kBAAkB50R,KAAKg6R,wBAC9B,EACAl6C,eAAgB,SAAU/0M,EAAQ2nM,GAChC,OAAO8nB,EAAiBx6P,KAAM,CAC5Bm7P,gBAAiB,CAAC,SAClBC,gBAAiB9oB,EAAOuD,MAAM+kB,EAA8B56P,OAEhE,EACAg6R,sBAAuB,WAKrB,IAJA,IAAI/6Q,EAAOjf,KAAKi7P,aACZzY,EAAWvjO,EAAKysO,aAAa,SAC7BwuC,EAAa,GAERl2R,EAAI,EAAGwT,EAAMyH,EAAKsJ,QAASvkB,EAAIwT,EAAKxT,IAC3Ck2R,EAAWj2R,KAAK,CACdQ,KAAMwa,EAAK60N,QAAQ9vO,GACnBlC,MAAOmd,EAAK/b,IAAIs/O,EAAUx+O,GAC1BmuH,SAAU0hK,EAAgB50Q,EAAMjb,EAAG,cAIvC,OAAOk2R,CACT,EAEA1hC,cAAe,SAAU3kB,GACvB,IAAI50N,EAAOjf,KAAK+qG,UACZnpF,EAASm4Q,EAAUx+B,UAAUv7P,KAAM,gBAAiB6zO,GAEpDsmD,EAAY,GAMhB,OALAl7Q,EAAKy4F,KAAKz4F,EAAKysO,aAAa,UAAU,SAAU5pP,GAC9Cq4R,EAAUl2R,KAAKnC,EACjB,IACA8f,EAAO+6B,QAAUm9O,EAAwBK,EAAWtmD,EAAW50N,EAAK8qO,UAAU7mP,IAAI,qBAClF0e,EAAO65O,MAAMx3P,KAAK,WACX2d,CACT,EACAs5O,kBAAmB,SAAUnwN,GAE3Bs8O,EAAU3sB,gBAAgB3vN,EAAQ,YAAa,CAAC,SAChD,IAAIswN,EAAqBtwN,EAAOklB,UAC5BqrM,EAAuBvwN,EAAO21M,SAASzwL,UAE3CorM,EAAmB3tN,KAAO2tN,EAAmB3tN,MAAQ3C,EAAOmE,MAAMxB,KAClE4tN,EAAqB5tN,KAAO4tN,EAAqB5tN,MAAQ3C,EAAO21M,SAASxxM,MAAMxB,IACjF,EACA8oM,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EACHsoK,iBAAiB,EACjBiB,gBAAgB,EAEhB7xM,OAAQ,CAAC,MAAO,OAChBpF,OAAQ,CAAC,EAAG,OAEZwoJ,WAAW,EACXhzJ,WAAY,GAEZu6P,SAAU,EAGVC,kBAAmB,EAEnBC,eAAgB,GAEhBC,YAAa,GAEbC,mBAAmB,EAKnBC,iBAAkB,EAElBC,kBAAkB,EAElBrqP,KAAM,EACNE,IAAK,EACLD,MAAO,EACPE,OAAQ,EACRhI,MAAO,KACPC,OAAQ,KACRyG,MAAO,CAEL9Y,QAAQ,EACRsX,MAAM,EAEN5b,SAAU,QAEV6oQ,QAAS,OAGTC,OAAQ,MAERC,YAAa,GAEbC,oBAAqB,GAMvB7qO,UAAW,CACTviB,MAAM,EAEN1rC,OAAQ,GAER+4R,QAAS,GACT1oP,QAAQ,EACRC,UAAW,CAET9J,MAAO,EACPhkC,KAAM,UAGV+6O,UAAW,CACT13K,YAAa,GAGfmzN,cAAe,YAEfC,oBAAqB,aACrBj4H,gBAAiB,cAGrBsvE,EAAO0W,MAAM+wC,EAAWnG,GACxB,IAAInmQ,EAAWssQ,EACf54R,EAAOD,QAAUusB,C,wBCvLjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAElBygO,EAAYzgO,EAAQ,OA0BxB,SAAS0yQ,EAAmBrtR,EAAK+lO,EAAaqrC,EAAct0K,GAC1D,IAAI1rF,EAAO20N,EAAY7oI,UACnB8oI,EAAY7zO,KAAK6zO,UACjBpvO,EAAOwa,EAAK60N,QAAQD,GACpBymD,EAAiB1mD,EAAY1wO,IAAI,kBACrCynG,EAAIi9J,eAAe,CACjBpjQ,KAAM,kBACN45D,KAAMvwD,EACNpJ,KAAMA,EACNsvO,SAAUH,EAAYpqO,KAExByV,EAAKy4F,MAAK,SAAUvQ,GAClBg0L,EAAmBl8Q,EAAK67N,iBAAiB3zI,GAAMloF,EAAK69N,cAAc31I,GAAMysI,EAAYt5B,WAAWr7L,EAAK60N,QAAQ3sI,IAAOmzL,EAAgBrb,EACrI,GACF,CAWA,SAASkc,EAAmBv5R,EAAIumG,EAAQmyG,EAAYggF,EAAgBrb,GAClE,IAAIxrE,GAAYtrG,EAAOtoE,WAAasoE,EAAOroE,UAAY,EACnD6lC,EAAKx/D,KAAKmgC,IAAImtK,GACd7tI,EAAKz/D,KAAKkgC,IAAIotK,GACdtmL,EAASmtL,EAAaggF,EAAiB,EACvCxoQ,EAAW,CAAC6zC,EAAKx4C,EAAQy4C,EAAKz4C,GAClC8xP,EACEr9Q,EAAG0lG,UAAUwsK,KAAK,IAAK,CACvBhiP,SAAUA,IACT4sB,MAAM,aAAe98C,EAAGi1B,KAAK,WAAY/E,EAC9C,CAQA,SAASspQ,EAASn8Q,EAAMkoF,GACtB2vI,EAAQM,MAAM/2O,KAAKL,MACnB,IAAI88B,EAAS,IAAIg6M,EAAQ8F,OAAO,CAC9BN,GAAI,IAEF3uN,EAAW,IAAImpN,EAAQglB,SACvBn/N,EAAO,IAAIm6M,EAAQoc,KACvBlzP,KAAKO,IAAIu8B,GACT98B,KAAKO,IAAIotB,GACT3tB,KAAKO,IAAIo8B,GACT38B,KAAK+5P,WAAW96O,EAAMkoF,GAAK,EAC7B,CAEA,IAAIk0L,EAAgBD,EAAS7zR,UAE7B8zR,EAActhC,WAAa,SAAU96O,EAAMkoF,EAAKm1J,GAC9C,IAAIx/N,EAAS98B,KAAKg4P,QAAQ,GACtB/nM,EAAYjwD,KAAKg4P,QAAQ,GACzB9lM,EAAYlyD,KAAKg4P,QAAQ,GACzBpkB,EAAc30N,EAAK8qO,UACnB3P,EAAYn7N,EAAKo7N,aAAalzI,GAC9BgB,EAASlpF,EAAK69N,cAAc31I,GAC5B01I,EAAcvK,EAAO5uH,OAAO,CAAC,EAAGvb,GACpC00I,EAAY3tM,MAAQ,KACpB,IAAI+rP,EAAsBrnD,EAAY8J,WAAW,uBAEjD,GAAI4e,EAAa,CACfx/N,EAAOq9M,SAAS0C,GAChB,IAAIm+C,EAAgBpnD,EAAY8J,WAAW,iBAErB,UAAlBs9C,GACFl+P,EAAOtH,MAAMzI,EAAIo7E,EAAOg0I,GACxBrF,EAAQkX,UAAUlxN,EAAQ,CACxBtH,MAAO,CACLzI,EAAGo7E,EAAOp7E,IAEX6mN,EAAazsI,KAGdrqE,EAAOtH,MAAMsK,SAAWqoE,EAAOtoE,WAC/Bi3M,EAAQ+D,YAAY/9M,EAAQ,CAC1BtH,MAAO,CACLsK,SAAUqoE,EAAOroE,WAElB8zM,EAAazsI,GAEtB,KAC8B,cAAxB8zL,EAEFn+P,EAAOq9M,SAAS0C,GAGhB/F,EAAQ+D,YAAY/9M,EAAQ,CAC1BtH,MAAOqnN,GACNjJ,EAAazsI,GAKpB,IAAIo1J,EAAct9O,EAAKo+N,cAAcl2I,EAAK,SAC1CrqE,EAAOm9M,SAAS3H,EAAO94I,SAAS,CAC9BhgE,SAAU,QACVzP,KAAMwyO,GACLniB,EAAUZ,SAAS,aAAagG,iBACnC1iN,EAAO0gN,WAAapD,EAAUZ,SAAS,sBAAsBgG,eAC7D,IAAI/B,EAAcrD,EAAUsD,WAAW,UACvCD,GAAe3gN,EAAOjG,KAAK,SAAU4mN,GAErC09C,EAAmBn7R,KAAMif,EAAK69N,cAAc31I,GAAMysI,EAAYt5B,WAAWr7L,EAAK60N,QAAQ3sI,IAAOysI,EAAY1wO,IAAI,kBAAmB0wO,EAAY1wO,IAAI,cAEhJ,IAAIo4R,GAAiBh/B,GAAuC,eAAxB2+B,EAEpCj7R,KAAKw8P,aAAav9O,EAAMkoF,EAAKm0L,GAE7Bt7R,KAAK+7P,iBAAoBnoB,EAAY1wO,IAAI,UA6BrC,KA7BiD,SAAU84P,EAAWC,GACxE,IAAIgjB,EAAerrC,EAAYuF,sBAAwBiB,EAAUl3O,IAAI,kBAErD,aAAZ+4P,GACFhsM,EAAU+jM,OAAS/jM,EAAUisM,YAC7BhqM,EAAU8hM,OAAS9hM,EAAUgqM,YAGzB+iB,IACFniP,EAAOqtC,eAAc,GACrBrtC,EAAOkqN,UAAU,CACfxxN,MAAO,CACLzI,EAAGo7E,EAAOp7E,EAAI6mN,EAAY1wO,IAAI,iBAE/B,IAAK,iBAGV+sD,EAAU+jM,OAAS/jM,EAAUksM,aAC7BjqM,EAAU8hM,OAAS9hM,EAAUiqM,aAEzB8iB,IACFniP,EAAOqtC,eAAc,GACrBrtC,EAAOkqN,UAAU,CACfxxN,MAAO,CACLzI,EAAGo7E,EAAOp7E,IAEX,IAAK,eAGd,EACA+pN,EAAQ8G,cAAc59O,KACxB,EAEAq7R,EAAc7+B,aAAe,SAAUv9O,EAAMkoF,EAAKm0L,GAChD,IAAIrrO,EAAYjwD,KAAKg4P,QAAQ,GACzB9lM,EAAYlyD,KAAKg4P,QAAQ,GACzBpkB,EAAc30N,EAAK8qO,UACnB3P,EAAYn7N,EAAKo7N,aAAalzI,GAC9BgB,EAASlpF,EAAK69N,cAAc31I,GAC5Bs1J,EAAct0J,EAAOj5D,MACrBqtN,EAAct9O,EAAKo+N,cAAcl2I,EAAK,SAE1C,IAAKs1J,GAAe1tP,MAAM0tP,EAAY38O,IAAM/Q,MAAM0tP,EAAY99N,GAC5DuzB,EAAU8hM,OAAS9hM,EAAUiqM,aAAejqM,EAAUgqM,YAAcjsM,EAAU+jM,OAAS/jM,EAAUksM,aAAelsM,EAAUisM,aAAc,MAD1I,CAKA,IAAIq/B,EAAkB,CACpB7vQ,OAAQ+wO,EAAYC,YAAc,CAAC,CAACD,EAAY38O,EAAG28O,EAAY99N,GAAI,CAAC89N,EAAY38O,EAAG28O,EAAY99N,GAAI,CAAC89N,EAAY38O,EAAG28O,EAAY99N,KAE7H68P,EAAkB,CACpB17Q,EAAG28O,EAAY38O,EACf6e,EAAG89N,EAAY99N,GAGb28P,GACFxkD,EAAQ+D,YAAY5qL,EAAW,CAC7Bz6B,MAAO+lQ,GACN3nD,EAAazsI,GAChB2vI,EAAQ+D,YAAY3oL,EAAW,CAC7BtmD,MAAO4vR,GACN5nD,EAAazsI,KAEhBl3C,EAAUp5B,KAAK,CACbrB,MAAO+lQ,IAETrpO,EAAUr7B,KAAK,CACbjrB,MAAO4vR,KAIXtpO,EAAUr7B,KAAK,CACbo9H,SAAUwoG,EAAYxoG,SACtBvrH,OAAQ,CAAC+zN,EAAY38O,EAAG28O,EAAY99N,GACpC29M,GAAI,KAEN,IAAIyL,EAAa3N,EAAUZ,SAAS,SAChCmjB,EAAkBviB,EAAUZ,SAAS,kBACrCojB,EAAiBxiB,EAAUZ,SAAS,aACpCqjB,EAAsBziB,EAAUZ,SAAS,sBACzC+iB,EAAct9O,EAAKo+N,cAAcl2I,EAAK,SAC1C2vI,EAAQmR,cAAc/1L,EAAUtmD,MAAOsmD,EAAUsrL,WAAa,CAAC,EAAGuK,EAAY4U,EAAiB,CAC7FzU,aAAcjpO,EAAK8qO,UACnB5B,eAAgBhhJ,EAChBihJ,YAAaqU,EAAY9/N,KACzB2rN,UAAWiU,EACXO,iBAAkBL,EAAY5kJ,QAC7B,CACDx9E,UAAWoiO,EAAYpiO,UACvB0iO,kBAAmBN,EAAYO,cAC/B1jO,QAASra,EAAKo+N,cAAcl2I,EAAK,aAEnCj1C,EAAU8hM,OAAS9hM,EAAUiqM,cAAgBpU,EAAW7kP,IAAI,QAC5DgvD,EAAUgqM,aAAeS,EAAgBz5P,IAAI,QAC7C+sD,EAAU+jM,OAAS/jM,EAAUksM,cAAgBS,EAAe15P,IAAI,QAChE+sD,EAAUisM,aAAeW,EAAoB35P,IAAI,QAEjD+sD,EAAU47H,SAAS,CACjBxyJ,OAAQkjO,EACRjjO,QAASra,EAAKo+N,cAAcl2I,EAAK,aAEnCl3C,EAAU47H,SAAS+wE,EAAepjB,SAAS,aAAajgM,gBACxD0W,EAAUutL,WAAaqf,EAAoBrjB,SAAS,aAAajgM,eACjE,IAAIlH,EAASuqN,EAAe15P,IAAI,UAE5BmvC,IAAqB,IAAXA,IACZA,EAAS,IAGX4d,EAAUkqL,SAAS,CACjB9nM,OAAQA,GAjEV,CAmEF,EAEAigM,EAAO2qB,SAASm+B,EAAUtkD,EAAQM,OAElC,IAAIqkD,EAAUxyC,EAAUvlI,OAAO,CAC7Bl/G,KAAM,MACNkzD,KAAM,WACJ,IAAIgkO,EAAc,IAAI5kD,EAAQM,MAC9Bp3O,KAAK27R,aAAeD,CACtB,EACAv8R,OAAQ,SAAUy0O,EAAalB,EAAS/nI,EAAK6oI,GAC3C,IAAIA,GAAWA,EAAQp1K,OAASp+D,KAAK6N,IAArC,CAIA,IAAIoR,EAAO20N,EAAY7oI,UACnB6U,EAAU5/G,KAAKqqK,MACfnvH,EAAQl7C,KAAKk7C,MACb+jO,EAAevsC,EAAQxvO,IAAI,aAC3B04R,GAAiBh8K,EACjBo7K,EAAgBpnD,EAAY1wO,IAAI,iBAChC+3R,EAAsBrnD,EAAY1wO,IAAI,uBACtC24R,EAAgBvpD,EAAOuD,MAAMqlD,EAAoBl7R,KAAK6N,IAAK+lO,EAAaqrC,EAAct0K,GACtFmxL,EAAeloD,EAAY1wO,IAAI,gBAgCnC,GA/BA+b,EAAK2tF,KAAKgT,GAASr/G,KAAI,SAAU4mG,GAC/B,IAAIi2J,EAAW,IAAIg+B,EAASn8Q,EAAMkoF,GAE9By0L,GAAmC,UAAlBZ,GACnB59B,EAASmY,WAAU,SAAUxuK,GAC3BA,EAAM58B,eAAc,EACtB,IAGF2xN,GAAgB1+B,EAAS35L,GAAG,QAASo4N,GACrC58Q,EAAKw7N,iBAAiBtzI,EAAKi2J,GAC3BliN,EAAM36C,IAAI68P,EACZ,IAAGpmO,QAAO,SAAUsyN,EAAQI,GAC1B,IAAI0T,EAAWx9I,EAAQk7H,iBAAiB4O,GAEnCkyC,GAAyC,eAAxBX,GACpB79B,EAASmY,WAAU,SAAUxuK,GAC3BA,EAAM58B,eAAc,EACtB,IAGFizL,EAASrD,WAAW96O,EAAMqqO,GAC1B8T,EAASphL,IAAI,SACb8/M,GAAgB1+B,EAAS35L,GAAG,QAASo4N,GACrC3gP,EAAM36C,IAAI68P,GACVn+O,EAAKw7N,iBAAiB6O,EAAQ8T,EAChC,IAAGxgL,QAAO,SAAUuqB,GAClB,IAAIi2J,EAAWx9I,EAAQk7H,iBAAiB3zI,GACxCjsD,EAAM0hC,OAAOwgL,EACf,IAAG7gH,UAEC0iI,GAAgBhgQ,EAAKsJ,QAAU,IAAMqzQ,EAAkC,UAAlBZ,EAAoD,eAAxBC,GAAuC,CAG1H,IAFA,IAAIzlQ,EAAQvW,EAAK69N,cAAc,GAEtBxuO,EAAI,EAAGS,MAAMymB,EAAMqK,aAAevxB,EAAI2Q,EAAKsJ,UAAWja,EAC7DknB,EAAQvW,EAAK69N,cAAcxuO,GAG7B,IAAIye,EAAI5mB,KAAKwI,IAAIg8F,EAAI03I,WAAY13I,EAAI23I,aAAe,EAChDjJ,EAAiB/G,EAAOv1N,KAAKm+B,EAAMm+L,eAAgBn+L,GACvDA,EAAMogM,YAAYt7O,KAAK+7R,gBAAgBvmQ,EAAMtG,GAAIsG,EAAMrG,GAAIpC,EAAGyI,EAAMqK,WAAYrK,EAAMq9J,UAAWwmD,EAAgBzF,EAAagoD,GAChI,MAEE1gP,EAAMm+L,iBAGRr5O,KAAKqqK,MAAQprJ,CAzDb,CA0DF,EACAu8N,QAAS,WAAa,EACtBugD,gBAAiB,SAAU7sQ,EAAIC,EAAIpC,EAAG8S,EAAYgzJ,EAAWl6G,EAAIi7J,EAAagoD,GAC5E,IAAIvgD,EAAW,IAAIvE,EAAQ8F,OAAO,CAChCpnN,MAAO,CACLtG,GAAIA,EACJC,GAAIA,EACJgtN,GAAI,EACJpvN,EAAGA,EACH8S,WAAYA,EACZC,SAAUD,EACVgzJ,UAAWA,KAGXmpG,EAAeJ,EAAgB9kD,EAAQkX,UAAYlX,EAAQ+D,YAM/D,OALAmhD,EAAa3gD,EAAU,CACrB7lN,MAAO,CACLsK,SAAUD,GAAcgzJ,EAAY,GAAK,GAAK1sL,KAAK40B,GAAK,IAEzD64M,EAAaj7J,GACT0iK,CACT,EAKA4gD,aAAc,SAAUjsR,EAAO4jO,GAC7B,IAAI30N,EAAO20N,EAAY7oI,UACnBw+I,EAAatqO,EAAK69N,cAAc,GAEpC,GAAIyM,EAAY,CACd,IAAI5jL,EAAK31D,EAAM,GAAKu5O,EAAWr6N,GAC3B02C,EAAK51D,EAAM,GAAKu5O,EAAWp6N,GAC3Bkb,EAASlkC,KAAK2iB,KAAK68C,EAAKA,EAAKC,EAAKA,GACtC,OAAOv7B,GAAUk/M,EAAWx8N,GAAKsd,GAAUk/M,EAAWpN,EACxD,CACF,IAEE1uN,EAAWguQ,EACft6R,EAAOD,QAAUusB,C,iCCjXjB,IAAIyuQ,EAAc1zQ,EAAQ,MAEtBi5N,EAAUj5N,EAAQ,OAElBk5N,EAAeD,EAAQC,aAqBvBy6C,EAASh2R,KAAK40B,GAAK,IAEvB,SAASqhQ,EAAiBnlR,EAAMiY,EAAIC,EAAIpC,EAAGknE,EAAK+pK,EAAWC,EAAYo+B,EAAUC,EAASC,GAKxF,SAASC,EAAU99O,EAAOC,EAAK8nC,EAAOwN,GACpC,IAAK,IAAIhpF,EAAIyzC,EAAOzzC,EAAI0zC,EAAK1zC,IAAK,CAChC,GAAIgM,EAAKhM,GAAG0zB,EAAI8nD,EAAQ61M,EAAUr+B,EAChC,MAKF,GAFAhnP,EAAKhM,GAAG0zB,GAAK8nD,EAETx7E,EAAIyzC,GAASzzC,EAAI,EAAI0zC,GAAO1nC,EAAKhM,EAAI,GAAG0zB,EAAI1nB,EAAKhM,GAAG0zB,EAAI1nB,EAAKhM,GAAGw9B,OAElE,YADAg0P,EAAQxxR,EAAGw7E,EAAQ,EAGvB,CAEAg2M,EAAQ99O,EAAM,EAAG8nC,EAAQ,EAC3B,CAEA,SAASg2M,EAAQ99O,EAAK8nC,GACpB,IAAK,IAAIx7E,EAAI0zC,EAAK1zC,GAAK,EAAGA,IAAK,CAC7B,GAAIgM,EAAKhM,GAAG0zB,EAAI8nD,EAAQ61M,EACtB,MAKF,GAFArlR,EAAKhM,GAAG0zB,GAAK8nD,EAETx7E,EAAI,GAAKgM,EAAKhM,GAAG0zB,EAAI1nB,EAAKhM,EAAI,GAAG0zB,EAAI1nB,EAAKhM,EAAI,GAAGw9B,OACnD,KAEJ,CACF,CAEA,SAASi0P,EAAQzlR,EAAM0lR,EAAYztQ,EAAIC,EAAIpC,EAAGknE,GAQ5C,IAPA,IAAI2oM,EAAuBD,EACzBpgO,OAAO+pC,UACP,EAKOtiG,EAAI,EAAGwK,EAAIyI,EAAKjV,OAAQgC,EAAIwK,EAAGxK,IACtC,GAA6B,SAAzBiT,EAAKjT,GAAG64R,aAAZ,CAIA,IAAI/6E,EAAS37M,KAAK6iB,IAAI/R,EAAKjT,GAAG26B,EAAIxP,GAC9BntB,EAASiV,EAAKjT,GAAGwT,IACjBujR,EAAU9jR,EAAKjT,GAAG84R,KAClBC,EAASj7E,EAAS/0L,EAAI/qB,EAASmE,KAAK2iB,MAAMiE,EAAI/qB,EAAS+4R,IAAYhuQ,EAAI/qB,EAAS+4R,GAAWj5E,EAASA,GAAU37M,KAAK6iB,IAAI/R,EAAKjT,GAAG8b,EAAIoP,GAEnIytQ,GAAcI,GAAUH,IAE1BG,EAASH,EAAa,KAGnBD,GAAcI,GAAUH,IAE3BG,EAASH,EAAa,IAGxB3lR,EAAKjT,GAAG8b,EAAIoP,EAAK6tQ,EAAS9oM,EAC1B2oM,EAAaG,CAlBb,CAoBJ,CAlEA9lR,EAAK4O,MAAK,SAAUljB,EAAGC,GACrB,OAAOD,EAAEg8B,EAAI/7B,EAAE+7B,CACjB,IAwEA,IANA,IACI8nD,EADAu2M,EAAQ,EAERxlR,EAAMP,EAAKjV,OACXi7R,EAAS,GACTC,EAAW,GAENl5R,EAAI,EAAGA,EAAIwT,EAAKxT,IAAK,CAC5B,GAAyB,UAArBiT,EAAKjT,GAAG8tB,UAAiD,cAAzB7a,EAAKjT,GAAG64R,aAA8B,CACxE,IAAIl3N,EAAK1uD,EAAKjT,GAAG8b,EAAIy8Q,EACrBtlR,EAAKjT,GAAG04P,WAAW,GAAG,IAAM/2L,EAC5B1uD,EAAKjT,GAAG8b,EAAIy8Q,CACd,CAEA91M,EAAQxvE,EAAKjT,GAAG26B,EAAIq+P,EAEhBv2M,EAAQ,GACV+1M,EAAUx4R,EAAGwT,GAAMivE,EAAOwN,GAG5B+oM,EAAQ/lR,EAAKjT,GAAG26B,EAAI1nB,EAAKjT,GAAGykC,MAC9B,CAEIw1N,EAAa++B,EAAQ,GACvBP,EAAQjlR,EAAM,EAAGwlR,EAAQ/+B,GAG3B,IAASj6P,EAAI,EAAGA,EAAIwT,EAAKxT,IACnBiT,EAAKjT,GAAG26B,GAAKxP,EACf+tQ,EAASj5R,KAAKgT,EAAKjT,IAEnBi5R,EAAOh5R,KAAKgT,EAAKjT,IAIrB04R,EAAQO,GAAQ,EAAO/tQ,EAAIC,EAAIpC,EAAGknE,GAClCyoM,EAAQQ,GAAU,EAAMhuQ,EAAIC,EAAIpC,EAAGknE,EACrC,CAEA,SAAS27F,EAAautG,EAAiBjuQ,EAAIC,EAAIpC,EAAGixO,EAAWC,EAAYo+B,EAAUC,GAMjF,IALA,IAAIc,EAAW,GACXC,EAAY,GACZC,EAAY/gO,OAAO+pC,UACnBi3L,GAAchhO,OAAO+pC,UAEhBtiG,EAAI,EAAGA,EAAIm5R,EAAgBn7R,OAAQgC,IACtCw5R,EAAiBL,EAAgBn5R,MAIjCm5R,EAAgBn5R,GAAG8b,EAAIoP,GACzBouQ,EAAYn3R,KAAKyI,IAAI0uR,EAAWH,EAAgBn5R,GAAG8b,GACnDs9Q,EAASn5R,KAAKk5R,EAAgBn5R,MAE9Bu5R,EAAap3R,KAAKwI,IAAI4uR,EAAYJ,EAAgBn5R,GAAG8b,GACrDu9Q,EAAUp5R,KAAKk5R,EAAgBn5R,MAInCo4R,EAAiBiB,EAAWnuQ,EAAIC,EAAIpC,EAAG,EAAGixO,EAAWC,EAAYo+B,EAAUC,EAASiB,GACpFnB,EAAiBgB,EAAUluQ,EAAIC,EAAIpC,GAAI,EAAGixO,EAAWC,EAAYo+B,EAAUC,EAASgB,GAEpF,IAASt5R,EAAI,EAAGA,EAAIm5R,EAAgBn7R,OAAQgC,IAAK,CAC/C,IAAImkG,EAASg1L,EAAgBn5R,GAE7B,IAAIw5R,EAAiBr1L,GAArB,CAIA,IAAIu0J,EAAav0J,EAAOu0J,WAExB,GAAIA,EAAY,CACd,IAEI+gC,EAFAC,EAAwC,SAAxBv1L,EAAO00L,aACvBc,EAAgBx1L,EAAOy1L,SAASp1P,MAKhCi1P,EAFAC,EACEv1L,EAAOroF,EAAIoP,EACKwtO,EAAW,GAAG,GAAKv0J,EAAO01L,cAAgBxB,EAAWl0L,EAAO21L,YAE5DzB,EAAWr+B,EAAY71J,EAAO21L,YAAcphC,EAAW,GAAG,GAAKv0J,EAAO01L,cAGtF11L,EAAOroF,EAAIoP,EACKi5E,EAAOroF,EAAIu8Q,EAAWl0L,EAAO0yL,YAE7BwB,EAAWr+B,EAAY71J,EAAOroF,EAAIqoF,EAAO0yL,YAI3D4C,EAAkBt1L,EAAOy1L,SAASp1P,QACpC2/D,EAAOxrE,KAAOu/P,EAAY6B,aAAa51L,EAAOxrE,KAAM8gQ,EAAiBt1L,EAAOrsE,MAEhD,SAAxBqsE,EAAO00L,eACTc,EAAgBzB,EAAY75C,SAASl6I,EAAOxrE,KAAMwrE,EAAOrsE,QAI7D,IAAImuD,EAAOyyK,EAAW,GAAG,GAAKA,EAAW,GAAG,GAExCghC,EACEv1L,EAAOroF,EAAIoP,EACbwtO,EAAW,GAAG,GAAK2/B,EAAWl0L,EAAO21L,YAAcH,EAAgBx1L,EAAO01L,cAE1EnhC,EAAW,GAAG,GAAK2/B,EAAWr+B,EAAY71J,EAAO21L,YAAcH,EAAgBx1L,EAAO01L,eAGpF11L,EAAOroF,EAAIoP,EACbwtO,EAAW,GAAG,GAAKv0J,EAAOroF,EAAIqoF,EAAO01L,cAErCnhC,EAAW,GAAG,GAAKv0J,EAAOroF,EAAIqoF,EAAO01L,cAGvCnhC,EAAW,GAAG,GAAKA,EAAW,GAAG,GAAKzyK,GAGxCyyK,EAAW,GAAG,GAAKA,EAAW,GAAG,GAAKv0J,EAAOxpE,CAC/C,CAlDA,CAmDF,CACF,CAEA,SAAS6+P,EAAiBr1L,GAExB,MAA2B,WAApBA,EAAOr2E,QAChB,CAEA,SAASrE,EAASmmN,EAAa7mN,EAAGixO,EAAWC,EAAYo+B,EAAUC,GACjE,IAEIptQ,EACAC,EAHAlQ,EAAO20N,EAAY7oI,UACnBoyL,EAAkB,GAGlBa,GAAiB,EACjBC,GAAsBrqD,EAAY1wO,IAAI,sBAAwB,GAAKi5R,EACvEl9Q,EAAKy4F,MAAK,SAAUvQ,GAClB,IAAIgB,EAASlpF,EAAK69N,cAAc31I,GAC5BizI,EAAYn7N,EAAKo7N,aAAalzI,GAC9B4gJ,EAAa3N,EAAUZ,SAAS,SAEhCh3L,EAAgBulM,EAAW7kP,IAAI,aAAek3O,EAAUl3O,IAAI,2BAC5D26R,EAAgB91C,EAAW7kP,IAAI,uBAC/B25R,EAAe90C,EAAW7kP,IAAI,WAC9B46R,EAAcp8C,EAAaqG,EAAW7kP,IAAI,UAAW86P,GACrD68B,EAAc9yC,EAAW7kP,IAAI,eAC7B44B,EAAOisN,EAAWwO,UAClBqG,EAAiBxiB,EAAUZ,SAAS,aACpCskB,EAAelB,EAAe15P,IAAI,UACtC46P,EAAepc,EAAaoc,EAAcE,GAC1C,IAAIkgC,EAAgBthC,EAAe15P,IAAI,WAGvC,GAFAg7R,EAAgBx8C,EAAaw8C,EAAelgC,KAExC71J,EAAO5lD,MAAQ07O,GAAnB,CAIA,IAGItrF,EACA/zI,EACA89L,EACAriO,EANAo5K,GAAYtrG,EAAOtoE,WAAasoE,EAAOroE,UAAY,EACnD6lC,EAAKx/D,KAAKmgC,IAAImtK,GACd7tI,EAAKz/D,KAAKkgC,IAAIotK,GAKlBvkL,EAAKi5E,EAAOj5E,GACZC,EAAKg5E,EAAOh5E,GACZ,IAmCI84O,EAnCAtrO,EAAOi3M,EAAYsiB,kBAAkB/uJ,EAAK,WAAaloF,EAAK60N,QAAQ3sI,GACpEy2L,EAAW1B,EAAYlzB,gBAAgBrsO,EAAMb,EAAMzB,EAAW,OAC9DwjO,EAAkC,WAAlBr7M,GAAgD,UAAlBA,EAElD,GAAsB,WAAlBA,EACFmwJ,EAAQxqG,EAAOj5E,GACf0vC,EAAQupC,EAAOh5E,GACfkL,EAAY,aACP,CACL,IAAIyP,GAAM+zN,GAAiB11J,EAAOp7E,EAAIo7E,EAAOg0I,IAAM,EAAIx2K,EAAKwiC,EAAOp7E,EAAI44C,GAAMz2C,EACzE6a,GAAM8zN,GAAiB11J,EAAOp7E,EAAIo7E,EAAOg0I,IAAM,EAAIv2K,EAAKuiC,EAAOp7E,EAAI64C,GAAMz2C,EAI7E,GAHAwjL,EAAQ7oK,EAAU,EAAL67B,EACb/G,EAAQ70B,EAAU,EAAL67B,GAERi4L,EAAe,CAElB,IAAI5zN,EAAKH,EAAK67B,GAAMm4L,EAAe/wO,EAAIo7E,EAAOp7E,GAC1Cmd,EAAKH,EAAK67B,GAAMk4L,EAAe/wO,EAAIo7E,EAAOp7E,GAC1C41G,EAAK14F,GAAM07B,EAAK,GAAK,EAAI,GAAKu4N,EAC9Bt7J,EAAK14F,EAIPyoK,EAFmB,SAAjBkqF,EAEMl3N,EAAK,EAAI02N,EAAWyB,EAAczB,EAAWr+B,EAAY8/B,EAEzDn7J,GAAMh9D,EAAK,GAAKk4N,EAAgBA,GAG1Cj/N,EAAQgkE,EACR85H,EAAa,CAAC,CAAC5yN,EAAIC,GAAK,CAACE,EAAIC,GAAK,CAACy4F,EAAIC,GACzC,CAEAvoG,EAAYwjO,EAAgB,SAA4B,SAAjBg/B,EAA0Bl3N,EAAK,EAAI,QAAU,OAASA,EAAK,EAAI,OAAS,OACjH,CAGA,IAAIvvC,EAAS2xN,EAAW7kP,IAAI,UAG1B+kQ,EADoB,kBAAX7xO,EACKA,GAAUjwB,KAAK40B,GAAK,KAEpB3E,EAASuvC,EAAK,GAAK8tI,EAAWttM,KAAK40B,IAAM04K,EAAW,EAGpEuqF,IAAmB/1B,EACnB9/J,EAAOj5D,MAAQ,CACbpvB,EAAG6yL,EACHh0K,EAAGigC,EACH9sC,SAAU0wB,EACV/Z,OAAQm1P,EAASn1P,OACjBjxB,IAAKsmP,EACLg/B,KAAMoB,EACNxhC,WAAYA,EACZriO,UAAWA,EACX2iO,cAAe,SACf/oG,SAAUg0G,EACVpwJ,OAAQgmJ,EACRggC,cAAeA,EACfhB,aAAcA,EACdiB,YAAaA,EACbjD,YAAaA,EACb+C,SAAUA,EACVjhQ,KAAMA,EACNb,KAAMA,GAGH+hO,GACHs/B,EAAgBl5R,KAAKkkG,EAAOj5D,MA9E9B,CAgFF,KAEK8uP,GAAkBpqD,EAAY1wO,IAAI,sBACrC0sL,EAAautG,EAAiBjuQ,EAAIC,EAAIpC,EAAGixO,EAAWC,EAAYo+B,EAAUC,EAE9E,CAEAn7R,EAAOD,QAAUusB,C,uBC9UjB,IAAIg0N,EAAUj5N,EAAQ,OAElBk5N,EAAeD,EAAQC,aACvB2b,EAAY5b,EAAQ4b,UAEpBl1J,EAAS3/E,EAAQ,MAEjBi0O,EAAcj0O,EAAQ,OAEtB8pN,EAAS9pN,EAAQ,OAoBjB02O,EAAgB,EAAV/4P,KAAK40B,GACXohQ,EAASh2R,KAAK40B,GAAK,IAEvB,SAASuiO,EAAY1pB,EAAajpI,GAChC,OAAOxC,EAAOo1J,cAAc3pB,EAAY4pB,qBAAsB,CAC5Dh1N,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,aAEhB,CAEA,SAAS70N,EAAS2lN,EAAYV,EAAS/nI,EAAK6oI,GAC1Cd,EAAQkY,iBAAiBxX,GAAY,SAAUQ,GAC7C,IAAI30N,EAAO20N,EAAY7oI,UACnBy3I,EAAWvjO,EAAKysO,aAAa,SAC7BqS,EAAWT,EAAY1pB,EAAajpI,GACpCl7D,EAASmkM,EAAY1wO,IAAI,UACzBmnC,EAASupM,EAAY1wO,IAAI,UAExBovO,EAAOxrO,QAAQujC,KAClBA,EAAS,CAAC,EAAGA,IAGVioM,EAAOxrO,QAAQ2oC,KAClBA,EAAS,CAACA,EAAQA,IAGpB,IAAIjH,EAAQk5M,EAAaqc,EAASv1N,MAAOmiE,EAAI03I,YACzC55M,EAASi5M,EAAaqc,EAASt1N,OAAQkiE,EAAI23I,aAC3Ch5J,EAAOnjF,KAAKyI,IAAI45B,EAAOC,GACvBvZ,EAAKwyN,EAAajyM,EAAO,GAAIjH,GAASu1N,EAASj+O,EAC/CqP,EAAKuyN,EAAajyM,EAAO,GAAIhH,GAAUs1N,EAASp/N,EAChDw9M,EAAKuF,EAAar3M,EAAO,GAAIi/C,EAAO,GACpCv8D,EAAI20N,EAAar3M,EAAO,GAAIi/C,EAAO,GACnCzpD,GAAc+zM,EAAY1wO,IAAI,cAAgBi5R,EAC9C/B,EAAWxmD,EAAY1wO,IAAI,YAAci5R,EACzCgC,EAAiB,EACrBl/Q,EAAKy4F,KAAK8qI,GAAU,SAAU1gP,IAC3BiN,MAAMjN,IAAUq8R,GACnB,IACA,IAAI5yQ,EAAMtM,EAAKu8O,OAAOhZ,GAElB47C,EAAaj4R,KAAK40B,IAAMxP,GAAO4yQ,GAAkB,EACjDtrG,EAAY+gD,EAAY1wO,IAAI,aAC5BuvC,EAAWmhM,EAAY1wO,IAAI,YAC3Bw3R,EAAmB9mD,EAAY1wO,IAAI,oBAEnCqqL,EAAStuK,EAAKm/O,cAAc5b,GAChCj1D,EAAO,GAAK,EAEZ,IAAI8wG,EAAYn/B,EACZo/B,EAA6B,EAC7Bn0J,EAAetqG,EACfo0D,EAAM4+F,EAAY,GAAK,EAiD3B,GAhDA5zK,EAAKy4F,KAAK8qI,GAAU,SAAU1gP,EAAOqlG,GACnC,IAAI5kD,EAEJ,GAAIxzC,MAAMjN,GACRmd,EAAKktO,cAAchlJ,EAAK,CACtB5kD,MAAOipC,IACP3rD,WAAY2rD,IACZ1rD,SAAU0rD,IACVqnG,UAAWA,EACX3jK,GAAIA,EACJC,GAAIA,EACJgtN,GAAIA,EACJpvN,EAAG0lB,EAAW+4C,IAAMz+D,EACpBgxO,SAAUA,QAVd,CAiBEx7M,EADe,SAAb9P,EACc,IAARlnB,GAAamvQ,EAAmB0D,EAAat8R,EAAQs8R,EAErDl/B,EAAMi/B,EAGZ57O,EAAQ63O,GACV73O,EAAQ63O,EACRiE,GAAajE,GAEbkE,GAA8Bx8R,EAGhC,IAAIg+B,EAAWqqG,EAAel2C,EAAM1xC,EACpCtjC,EAAKktO,cAAchlJ,EAAK,CACtB5kD,MAAOA,EACP1iB,WAAYsqG,EACZrqG,SAAUA,EACV+yJ,UAAWA,EACX3jK,GAAIA,EACJC,GAAIA,EACJgtN,GAAIA,EACJpvN,EAAG0lB,EAAW4qN,EAAUv7P,EAAOyrL,EAAQ,CAAC4uD,EAAIpvN,IAAMA,EAClDgxO,SAAUA,IAEZ5zH,EAAerqG,CA5Bf,CA6BF,IAGIu+P,EAAYn/B,GAAOi/B,EAGrB,GAAIE,GAAa,KAAM,CACrB,IAAI97O,EAAQ28M,EAAMi/B,EAClBl/Q,EAAKy4F,KAAK8qI,GAAU,SAAU1gP,EAAOqlG,GACnC,IAAKp4F,MAAMjN,GAAQ,CACjB,IAAIqmG,EAASlpF,EAAK69N,cAAc31I,GAChCgB,EAAO5lD,MAAQA,EACf4lD,EAAOtoE,WAAaA,EAAao0D,EAAMkT,EAAM5kD,EAC7C4lD,EAAOroE,SAAWD,EAAao0D,GAAOkT,EAAM,GAAK5kD,CACnD,CACF,GACF,MACE67O,EAAaC,EAAYC,EACzBn0J,EAAetqG,EACf5gB,EAAKy4F,KAAK8qI,GAAU,SAAU1gP,EAAOqlG,GACnC,IAAKp4F,MAAMjN,GAAQ,CACjB,IAAIqmG,EAASlpF,EAAK69N,cAAc31I,GAC5B5kD,EAAQ4lD,EAAO5lD,QAAU63O,EAAWA,EAAWt4R,EAAQs8R,EAC3Dj2L,EAAOtoE,WAAasqG,EACpBhiC,EAAOroE,SAAWqqG,EAAel2C,EAAM1xC,EACvC4nF,GAAgBl2C,EAAM1xC,CACxB,CACF,IAIJk6M,EAAY7oB,EAAa7mN,EAAGgxO,EAASv1N,MAAOu1N,EAASt1N,OAAQs1N,EAASj+O,EAAGi+O,EAASp/N,EACpF,GACF,CAEAx9B,EAAOD,QAAUusB,C,wBClKjB,IAAI0lN,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAER,IAAI4xO,EAAY5xO,EAAQ,OAEpB2wO,EAAe3wO,EAAQ,OAEvB+1Q,EAAc/1Q,EAAQ,MAEtB8xO,EAAa9xO,EAAQ,OAErBirQ,EAAiBjrQ,EAAQ,MAqB7B2qN,EAAQ4C,eAAeqkB,EAAU,UACjCjnB,EAAQ4C,eAAeojB,EAAa,QAAS,WAC7ChmB,EAAQsC,eAAe8oD,GACvBprD,EAAQonB,kBAAkBD,EAAW,UACrCnnB,EAAQ6Z,qBAAqBymC,E,wBCzC7B,IAAI7zC,EAAcp3N,EAAQ,OAEtBgyO,EAAmBhyO,EAAQ,OAE3B8pN,EAAS9pN,EAAQ,OAEjB05O,EAAU15O,EAAQ,OAElB25O,EAAaD,EAAQC,WAErBtH,EAAuBryO,EAAQ,OAoB/Bg2Q,EAAc5+C,EAAYl8H,OAAO,CACnCl/G,KAAM,eACN0xO,aAAc,CAAC,SAEfx+K,KAAM,SAAU3sB,GACdyzP,EAAYj9C,WAAWvhP,KAAM,OAAQ+C,WAGrC/C,KAAKg7P,qBAAuB,IAAIH,EAAqBvoB,EAAOv1N,KAAK/c,KAAK+qG,QAAS/qG,MAAOsyO,EAAOv1N,KAAK/c,KAAKi7P,WAAYj7P,MACrH,EACA8/O,eAAgB,SAAU/0M,EAAQ2nM,GAChC,OAAO8nB,EAAiBx6P,KAAM,CAC5BiwQ,cAAe,aACfwuB,mBAAoB5rM,KAExB,EACAmxK,cAAe,SAAUnwB,EAAWowB,EAAgBxL,EAAU08B,GAC5D,IAAIl2Q,EAAOjf,KAAK+qG,UACZ8nI,EAAW7yO,KAAKq0O,iBAChBqqD,EAAgB7rD,EAAS8rD,mBACzBl6R,EAAOzE,KAAK+qG,UAAU+oI,QAAQD,GAC9B2hD,EAAyB,SAAfL,EAAwB,QAAU,KAChD,OAAOhzB,EAAoB,KAAT19P,EAAczE,KAAKyE,KAAOA,GAAQ+wR,EAAUljD,EAAO5oN,IAAIg1Q,GAAe,SAAUtzP,EAAM+7D,GACtG,IAAIn4F,EAAMiQ,EAAK/b,IAAI+b,EAAKysO,aAAatgN,EAAK6mG,KAAM4hG,GAChD,OAAOsuB,EAAW/2N,EAAK3mC,KAAO,MAAQuK,EACxC,IAAGlE,KAAK0qR,EACV,EAKAC,mBAAoB,SAAU5hD,GAC5B,GAAiB,MAAbA,EAOF,IANA,IAAI50N,EAAOjf,KAAK+qG,UACZ8nI,EAAW7yO,KAAKq0O,iBAChBjrO,EAAS6V,EAAK2/Q,UAAUtsD,EAAO5oN,IAAImpN,EAASj4E,YAAY,SAAU3oB,GACpE,OAAOhzH,EAAKysO,aAAaz5G,EAC3B,IAAI4hG,GAAW,GAEN7vO,EAAI,EAAGwT,EAAMpO,EAAOpH,OAAQgC,EAAIwT,EAAKxT,IAC5C,IAAK+K,MAAM3F,EAAOpF,IAAK,CACrB,IAAI06R,EAAgB7rD,EAAS8rD,mBAC7B,OAAO9rD,EAASgsD,aAAaH,EAAc16R,GAAGigP,YAAY76O,EAAOpF,IAAKA,EACxE,CAGN,EACAwyO,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EACHs8J,iBAAkB,QAClBgM,iBAAiB,EACjBy+C,WAAY,EACZxsP,UAAW,CACT9J,MAAO,EACPhkC,KAAM,SAER0qC,MAAO,CACLpd,SAAU,OAKZ7P,OAAQ,cACR2+N,WAAY,KAIZnzN,EAAW+wQ,EACfr9R,EAAOD,QAAUusB,C,wBCnGjB,IAAI0lN,EAAU3qN,EAAQ,OAElBsuN,EAAUtuN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBkwP,EAAalwP,EAAQ,OAoBzB,SAAS0sP,EAAoBt0B,GAK3B,OAJKtO,EAAOxrO,QAAQ85O,KAClBA,EAAa,EAAEA,GAAaA,IAGvBA,CACT,CAEA,IAAInzN,EAAW0lN,EAAQkF,gBAAgB,CACrC7zO,KAAM,QACNrF,OAAQ,SAAUy0O,EAAalB,EAAS/nI,GACtC,IAAIsxI,EAAQrI,EAAYS,iBACpBn5L,EAAQl7C,KAAKk7C,MACbj8B,EAAO20N,EAAY7oI,UACnB6U,EAAU5/G,KAAKqqK,MAEnB,SAASm3E,EAAaviO,EAAMkoF,GAC1B,IAAIi8I,EAAankO,EAAKo+N,cAAcl2I,EAAK,WAAa,SAClDv2E,EAAQ3R,EAAKo+N,cAAcl2I,EAAK,SAEpC,GAAmB,SAAfi8I,EAAJ,CAIA,IAAIxC,EAAas0B,EAAoBj2P,EAAKo+N,cAAcl2I,EAAK,eACzD+gK,EAAawQ,EAAWl3B,aAAa4B,GAAa,GAAI,EAAG,EAAG,EAAGxyN,GAC/DiwN,EAAe5hO,EAAKo+N,cAAcl2I,EAAK,iBAAmB,EAS9D,OARA+gK,EAAWrxO,KAAK,CACdjrB,MAAO,CACL85O,eAAe,GAEjBpJ,GAAI,IACJjmN,MAAO,CAACuqN,EAAW,GAAK,EAAGA,EAAW,GAAK,GAC3C3sF,SAAU4sF,EAAe16O,KAAK40B,GAAK,KAAO,IAErCmtO,CAbP,CAcF,CAEA,SAAS62B,EAAcC,EAAWC,EAAWC,EAAajgR,EAAMkoF,EAAKuK,GAEnEwtL,EAAY/jD,YAEZ,IAAK,IAAIn3O,EAAI,EAAGA,EAAIi7R,EAAUj9R,OAAS,EAAGgC,IAAK,CAC7C,IAAIkkQ,EAAa1mB,EAAaviO,EAAMkoF,GAEhC+gK,IACFA,EAAWi3B,SAAWn7R,EAElBg7R,EAAUh7R,IACZkkQ,EAAWrxO,KAAK,WAAYmoQ,EAAUh7R,IACtC8yO,EAAQplI,EAAS,YAAc,eAAew2J,EAAY,CACxDp2O,SAAUmtQ,EAAUj7R,IACnB4vO,EAAazsI,IAEhB+gK,EAAWrxO,KAAK,WAAYooQ,EAAUj7R,IAGxCk7R,EAAY3+R,IAAI2nQ,GAEpB,CACF,CAEA,SAASk3B,EAAiB1zQ,GACxB,OAAO4mN,EAAO5oN,IAAIgC,GAAQ,SAAU40G,GAClC,MAAO,CAAC27G,EAAM/sN,GAAI+sN,EAAM9sN,GAC1B,GACF,CAEAlQ,EAAK2tF,KAAKgT,GAASr/G,KAAI,SAAU4mG,GAC/B,IAAIz7E,EAASzM,EAAK69N,cAAc31I,GAEhC,GAAKz7E,EAAL,CAIA,IAAImb,EAAU,IAAIiwM,EAAQ+kB,QACtBluO,EAAW,IAAImpN,EAAQglB,SACvBp2P,EAAS,CACX8vB,MAAO,CACL9J,OAAQA,IAGZmb,EAAQrR,MAAM9J,OAAS0zQ,EAAiB1zQ,GACxCiC,EAAS6H,MAAM9J,OAAS0zQ,EAAiB1zQ,GACzCorN,EAAQkX,UAAUnnN,EAASnhC,EAAQkuO,EAAazsI,GAChD2vI,EAAQkX,UAAUrgO,EAAUjoB,EAAQkuO,EAAazsI,GACjD,IAAIk4L,EAAY,IAAIvoD,EAAQM,MACxB8nD,EAAc,IAAIpoD,EAAQM,MAC9BioD,EAAU9+R,IAAIotB,GACd0xQ,EAAU9+R,IAAIsmC,GACdw4P,EAAU9+R,IAAI2+R,GACdH,EAAcpxQ,EAAS6H,MAAM9J,OAAQA,EAAQwzQ,EAAajgR,EAAMkoF,GAAK,GACrEloF,EAAKw7N,iBAAiBtzI,EAAKk4L,EAnB3B,CAoBF,IAAGroQ,QAAO,SAAUsyN,EAAQI,GAC1B,IAAI21C,EAAYz/K,EAAQk7H,iBAAiB4O,GACrC/7N,EAAW0xQ,EAAUrnC,QAAQ,GAC7BnxN,EAAUw4P,EAAUrnC,QAAQ,GAC5BknC,EAAcG,EAAUrnC,QAAQ,GAChCtyP,EAAS,CACX8vB,MAAO,CACL9J,OAAQzM,EAAK69N,cAAcwM,KAI1B5jP,EAAO8vB,MAAM9J,SAIlBqzQ,EAAcpxQ,EAAS6H,MAAM9J,OAAQhmB,EAAO8vB,MAAM9J,OAAQwzQ,EAAajgR,EAAMqqO,GAAQ,GACrFxS,EAAQ+D,YAAYltN,EAAUjoB,EAAQkuO,GACtCkD,EAAQ+D,YAAYh0M,EAASnhC,EAAQkuO,GACrC30N,EAAKw7N,iBAAiB6O,EAAQ+1C,GAChC,IAAGziN,QAAO,SAAUuqB,GAClBjsD,EAAM0hC,OAAOgjC,EAAQk7H,iBAAiB3zI,GACxC,IAAGo1C,UACHt9H,EAAKw8N,mBAAkB,SAAU4jD,EAAWl4L,GAC1C,IAAIizI,EAAYn7N,EAAKo7N,aAAalzI,GAC9Bx5E,EAAW0xQ,EAAUrnC,QAAQ,GAC7BnxN,EAAUw4P,EAAUrnC,QAAQ,GAC5BknC,EAAcG,EAAUrnC,QAAQ,GAChCpnO,EAAQ3R,EAAKo+N,cAAcl2I,EAAK,SACpCjsD,EAAM36C,IAAI8+R,GACV1xQ,EAASssN,SAAS3H,EAAO94I,SAAS4gJ,EAAUZ,SAAS,aAAajgM,eAAgB,CAChFxvB,KAAM,OACNsP,OAAQzI,KAEVjD,EAAS6vN,WAAapD,EAAUZ,SAAS,sBAAsBjgM,eAC/D,IAAIixO,EAAiBpwC,EAAUZ,SAAS,aACpC8lD,EAAsBllD,EAAUZ,SAAS,sBACzC+lD,EAAgB/U,EAAe9jL,WAAa8jL,EAAezjC,YAAYrgJ,UACvE84L,EAAqBF,EAAoB54L,WAAa44L,EAAoBv4C,YAAYrgJ,UAC1F84L,EAAqBA,GAAsBD,EAC3C14P,EAAQmtN,OAASurC,EACjB14P,EAAQozM,SAAS3H,EAAO94I,SAASgxL,EAAeoB,eAAgB,CAC9D7hQ,KAAM6G,EACN0I,QAAS,MAEXuN,EAAQ22M,WAAa8hD,EAAoB1T,eACzC,IAAIrsC,EAAYnF,EAAUZ,SAAS,aAAagG,aAAa,CAAC,UAC1DigD,EAAiBrlD,EAAUZ,SAAS,sBAAsBgG,eAC1DuI,EAAa3N,EAAUZ,SAAS,SAChCmjB,EAAkBviB,EAAUZ,SAAS,kBACzC0lD,EAAY3pB,WAAU,SAAUrN,GAC9BA,EAAWr8E,SAAS0zD,GACpB2oB,EAAW1qB,WAAalL,EAAOh+M,MAAMmrQ,GACrC,IAAIr3C,EAAcnpO,EAAK/b,IAAI+b,EAAK27I,WAAWstG,EAAWi3B,UAAWh4L,IACjD,MAAfihJ,GAAuBr5O,MAAMq5O,MAAkBA,EAAc,IAC9DtR,EAAQmR,cAAcigB,EAAWt8P,MAAOs8P,EAAW1qB,WAAYuK,EAAY4U,EAAiB,CAC1FzU,aAAcjpO,EAAK8qO,UACnB5B,eAAgBhhJ,EAChBu4L,cAAex3B,EAAWi3B,SAC1B/2C,YAAaA,EACbE,UAAW13N,EACXy3N,YAAY,GAEhB,IAEAg3C,EAAUtjC,iBAAmB,SAAUC,EAAWC,GAChDp1N,EAAQhQ,KAAK,SAAsB,aAAZolO,EAAyBujC,EAAqBD,EACvE,EAEAzoD,EAAQ8G,cAAcyhD,EACxB,IACAr/R,KAAKqqK,MAAQprJ,CACf,EACA29D,OAAQ,WACN58E,KAAKk7C,MAAMigM,YACXn7O,KAAKqqK,MAAQ,IACf,EACAmxE,QAAS,WAAa,IAGxBr6O,EAAOD,QAAUusB,C,gCCtMjB,IAAI6kN,EAAS9pN,EAAQ,OAqBrB,SAASiF,EAASsd,GAChB,IAAI40P,EAAc50P,EAAOkxM,MAEzB,GAAI0jD,EAAa,CACVrtD,EAAOxrO,QAAQ64R,KAClBA,EAAc,CAACA,IAGjB,IAAIC,EAAgB,GACpBttD,EAAO56H,KAAKioL,GAAa,SAAUE,EAAU14L,GACvC04L,EAAS1uO,WACP0uO,EAASr7R,OAASq7R,EAASrqQ,QAC7BqqQ,EAASrqQ,MAAQqqQ,EAASr7R,MAG5BumC,EAAOW,MAAQX,EAAOW,OAAS,GAE1B4mM,EAAOxrO,QAAQikC,EAAOW,SACzBX,EAAOW,MAAQ,CAACX,EAAOW,QAGzBX,EAAOW,MAAMznC,KAAK47R,IAElBD,EAAc37R,KAAK47R,EAEvB,IACA90P,EAAOkxM,MAAQ2jD,CACjB,CAEAttD,EAAO56H,KAAK3sE,EAAOiB,QAAQ,SAAU2kP,GAC/BA,GAAgC,UAAnBA,EAAUnsR,MAAoBmsR,EAAUmP,aACvDnP,EAAUmO,WAAanO,EAAUmP,WAErC,GACF,CAEA3+R,EAAOD,QAAUusB,C,gCCzDjB,IAAI6kN,EAAS9pN,EAAQ,OAoBrB,SAASiF,EAASilN,GAChBA,EAAQkY,iBAAiB,SAAS,SAAUhX,GAC1C,IAAI30N,EAAO20N,EAAY7oI,UACnBr/E,EAAS,GACTmnN,EAAWe,EAAYS,iBAE3B,GAAKxB,EAAL,CAIA,IAAIktD,EAAOltD,EAAS8rD,mBACpBrsD,EAAO56H,KAAKqoL,GAAM,SAAU30P,EAAM2Q,GAChC98B,EAAKy4F,KAAKz4F,EAAKysO,aAAaq0C,EAAKhkP,GAAWk2F,MAAM,SAAUjjI,EAAK6kO,GAC/DnoN,EAAOmoN,GAAanoN,EAAOmoN,IAAc,GACzC,IAAI7jO,EAAQ6iO,EAASiC,YAAY9lO,EAAK+sC,GACtCrwB,EAAOmoN,GAAW93L,GAAaikP,EAAahwR,GAASA,EAAQiwR,EAAqBptD,EACpF,GACF,IAEA5zN,EAAKy4F,MAAK,SAAUvQ,GAIlB,IAAI56B,EAAa+lK,EAAO/gN,KAAK7F,EAAOy7E,IAAM,SAAUn3F,GAClD,OAAOgwR,EAAahwR,EACtB,KAAMiwR,EAAqBptD,GAE3BnnN,EAAOy7E,GAAKljG,KAAKsoE,EAAWpqE,SAC5B8c,EAAKktO,cAAchlJ,EAAKz7E,EAAOy7E,GACjC,GArBA,CAsBF,GACF,CAEA,SAAS64L,EAAahwR,GACpB,OAAQjB,MAAMiB,EAAM,MAAQjB,MAAMiB,EAAM,GAC1C,CAEA,SAASiwR,EAAqBptD,GAG5B,MAAO,CAACA,EAAS3jN,GAAI2jN,EAAS1jN,GAChC,CAEAhuB,EAAOD,QAAUusB,C,wBC/DjB,IAAI0lN,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAER,IAAI03Q,EAAe13Q,EAAQ,OAEvB23Q,EAAe33Q,EAAQ,OAoB3B2qN,EAAQsC,eAAeyqD,GACvB/sD,EAAQ4C,eAAeoqD,E,wBC/BvB,IAAIvgD,EAAcp3N,EAAQ,OAEtB45O,EAA0B55O,EAAQ,OAElC05O,EAAU15O,EAAQ,OAElB25O,EAAaD,EAAQC,WAErBlrB,EAAQzuN,EAAQ,OAEhBirB,EAAUjrB,EAAQ,OAsBlB43Q,GApBU3sP,EAAQojM,QAoBH+I,EAAYl8H,OAAO,CACpCl/G,KAAM,gBACNoxL,WAAY,KACZyqG,YAAa,KAQbvgD,eAAgB,SAAU/0M,EAAQ2nM,GAMhC,IALA,IAAIkwB,EAAQ73N,EAAOo1C,OAASp1C,EAAO63N,MAC/B9jL,EAAQ/zC,EAAO9rB,MAAQ8rB,EAAO+zC,MAC9Bg1G,EAAS/oJ,EAAO+oJ,OAChBusG,EAAcrgS,KAAKqgS,YAAc,CAAC,EAE7Br8R,EAAI,EAAGA,EAAI8vL,EAAO9xL,OAAQgC,IACV,MAAnB8vL,EAAO9vL,GAAG+vH,OAAiB+/D,EAAO9vL,GAAG+vH,OAAS,IAChDssK,EAAYvsG,EAAO9vL,GAAG+vH,OAAS,IAAIkjH,EAAMnjD,EAAO9vL,GAAIhE,KAAM0yO,IAI9D,GAAI5zJ,GAAS8jL,EAAO,CAClB,IAAIzxO,EAAQixO,EAAwBtjL,EAAO8jL,EAAO5iQ,MAAM,EAAMgjQ,GAC9D,OAAO7xO,EAAMlS,IACf,CAEA,SAAS+jP,EAAWC,EAAU/6F,GAC5B+6F,EAASC,WAAW,gBAAgB,SAAU3R,EAAOpqJ,GAOnD,OANAoqJ,EAAMsS,oBAAmB,SAAU3mM,GACjC,IAAI6pL,EAAc/mP,KAAK+mP,YACnBu5C,EAAYv5C,EAAYh8I,UAAU+xI,cAAc31I,GAAK4sB,MACrDwsK,EAAax5C,EAAYs5C,YAAYC,GACzC,OAAOC,GAAcvgS,KAAK+mP,WAC5B,IACOwK,CACT,IACArpF,EAASg7F,WAAW,gBAAgB,SAAU3R,EAAOpqJ,GAQnD,OAPAoqJ,EAAMsS,oBAAmB,SAAU3mM,GACjC,IAAI6pL,EAAc/mP,KAAK+mP,YACnBpmK,EAAOomK,EAAY+c,WAAWI,eAAe/8J,GAC7C4sB,EAAQpzC,EAAK+5C,MAAMy9G,YAAYpkH,MAC/BwsK,EAAax5C,EAAYs5C,YAAYtsK,GACzC,OAAOwsK,GAAcvgS,KAAK+mP,WAC5B,IACOwK,CACT,GACF,CACF,EACAivC,gBAAiB,SAAU3sD,EAAW4sD,GACpC,IAAI59O,EAAW7iD,KAAK+qC,OAAO9rB,KAAK40N,GAChChxL,EAAS69O,OAASD,EAAc,GAChC59O,EAAS89O,OAASF,EAAc,EAClC,EAOA38B,SAAU,WACR,OAAO9jQ,KAAK+qG,UAAU55E,KACxB,EAOA4yO,YAAa,WACX,OAAO/jQ,KAAK8jQ,WAAW57F,QACzB,EAKA87F,cAAe,SAAUnwB,EAAWowB,EAAgBxL,GAElD,GAAiB,SAAbA,EAAqB,CACvB,IAAI72O,EAAS5hB,KAAKw4P,cAAc3kB,EAAW4kB,GACvCmoC,EAAah/Q,EAAO3C,KACpBqD,EAAOs+Q,EAAWl8R,OAAS,OAASk8R,EAAWl7R,OAMnD,OAJIkc,EAAO9f,QACTwgB,GAAQ,MAAQV,EAAO9f,OAGlBqgQ,EAAW7/O,EACpB,CAAO,GAAiB,SAAbm2O,EAAqB,CAC9B,IAAIr9K,EAAOp7E,KAAK8jQ,WAAW2E,eAAe50B,GACtC/xO,EAAQs5E,EAAK+8J,YAAYr2O,MACzB2C,EAAOzE,KAAKw4P,cAAc3kB,EAAW4kB,GAAUx5O,KAAKxa,KAExD,GAAI3C,EACEwgB,EAAO7d,EAAO,MAAQ3C,EAG5B,OAAOqgQ,EAAW7/O,EACpB,CAEA,OAAO89Q,EAAa7kC,UAAUv7P,KAAM,gBAAiB6zO,EAAWowB,EAClE,EACA48B,cAAe,WACb,IAAI91P,EAAS/qC,KAAK+qC,QAEgB,IAA9BA,EAAOy5N,qBACTz5N,EAAOy5N,mBAAqB,WAEhC,EAEAhM,cAAe,SAAU3kB,EAAW4kB,GAClC,IAAI72O,EAASw+Q,EAAa7kC,UAAUv7P,KAAM,gBAAiB6zO,EAAW4kB,GAEtE,GAAoB,MAAhB72O,EAAO9f,OAA8B,SAAb22P,EAAqB,CAC/C,IAAIr9K,EAAOp7E,KAAK8jQ,WAAW2E,eAAe50B,GACtCitD,EAAY1lN,EAAK+8J,YAAYr2O,MACjC8f,EAAO9f,MAAQg/R,CACjB,CAEA,OAAOl/Q,CACT,EACA40N,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EACHs8J,iBAAkB,OAClBlsI,OAAQ,KAER93D,KAAM,KACNE,IAAK,KACLD,MAAO,MACPE,OAAQ,KAERoB,OAAQ,aAERghK,UAAW,GAEXmuF,QAAS,EAET97B,WAAW,EAEXT,oBAAoB,EAEpBw8B,iBAAkB,GAClB9xP,MAAO,CACLxB,MAAM,EACN5b,SAAU,QACVlB,MAAO,OACPuJ,SAAU,IAEZ25J,OAAQ,GAERmtG,UAAW,UACX1hD,UAAW,CACT13K,YAAa,EACbg8J,YAAa,QAEfvxL,UAAW,CACT1hB,MAAO,UACP0I,QAAS,GACToyO,UAAW,IAEbhrB,SAAU,CACRxxM,MAAO,CACLxB,MAAM,GAER4E,UAAW,CACThZ,QAAS,KAGb0pI,gBAAiB,SACjB/uD,kBAAmB,QAGnBxmF,EAAW2yQ,EACfj/R,EAAOD,QAAUusB,C,wBC/MjB,IAAIqpN,EAAUtuN,EAAQ,OAElB2qN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAoBjBs9O,EAAkB,CAAC,YAAa,WAChCo7B,EAAuB,CAAC,WAAY,YAAa,WACjDn7B,EAAkB,CAAC,YAAa,WAChCo7B,EAAuB,CAAC,WAAY,YAAa,WAErD,SAASn7B,EAAexgP,EAAMygP,GAC5B,OAAOzgP,EAAK83N,UAAU,YAAc93N,EAAKg0N,WAAWt2O,IAAI+iQ,EAC1D,CAEA,SAASC,EAAY1gP,EAAMygP,EAAaE,GACtC,IAAIvkQ,EAAK4jB,EAAK4gP,eACV9sO,EAAU0sO,EAAexgP,EAAMygP,GAEf,MAAhBE,IACS,MAAX7sO,IAAoBA,EAAU,GAC9BA,GAAW6sO,GAGbvkQ,EAAGykQ,UAAYzkQ,EAAGykQ,WAClBzkQ,EAAGi3P,UAAS,SAAU9xJ,GACD,UAAfA,EAAMviG,MACRuiG,EAAM8kF,SAAS,UAAWvyJ,EAE9B,GACF,CAEA,SAASktO,EAAWhhP,EAAMygP,GACxB,IAAI3sO,EAAU0sO,EAAexgP,EAAMygP,GAC/BrkQ,EAAK4jB,EAAK4gP,eACdxkQ,EAAGi3P,UAAS,SAAU9xJ,GACD,UAAfA,EAAMviG,MACRuiG,EAAM8kF,SAAS,UAAWvyJ,EAE9B,IAEA13B,EAAG6kQ,WAAa7kQ,EAAG6kQ,WACrB,CAEA,IAAI26B,EAActqD,EAAQ6/B,YAAY,CACpCnhP,MAAO,CACLsU,GAAI,EACJC,GAAI,EACJE,GAAI,EACJC,GAAI,EACJgvO,KAAM,EACNC,KAAM,EACNkoB,KAAM,EACNC,KAAM,EACN/zG,OAAQ,EACR37I,OAAQ,IAEVmsM,UAAW,SAAU55O,EAAKqxB,GACxB,IAAI+3J,EAAS/3J,EAAM+3J,OACnBppL,EAAI8hC,OAAOzQ,EAAMsU,GAAItU,EAAMuU,IAC3B5lC,EAAI+hC,cAAc1Q,EAAM0jP,KAAM1jP,EAAM2jP,KAAM3jP,EAAM6rQ,KAAM7rQ,EAAM8rQ,KAAM9rQ,EAAMyU,GAAIzU,EAAM0U,IAE7D,aAAjB1U,EAAMoc,QACRztC,EAAI08B,OAAOrL,EAAMyU,GAAKsjJ,EAAQ/3J,EAAM0U,IACpC/lC,EAAI+hC,cAAc1Q,EAAM6rQ,KAAO9zG,EAAQ/3J,EAAM8rQ,KAAM9rQ,EAAM0jP,KAAO3rF,EAAQ/3J,EAAM2jP,KAAM3jP,EAAMsU,GAAKyjJ,EAAQ/3J,EAAMuU,MAE7G5lC,EAAI08B,OAAOrL,EAAMyU,GAAIzU,EAAM0U,GAAKqjJ,GAChCppL,EAAI+hC,cAAc1Q,EAAM6rQ,KAAM7rQ,EAAM8rQ,KAAO/zG,EAAQ/3J,EAAM0jP,KAAM1jP,EAAM2jP,KAAO5rF,EAAQ/3J,EAAMsU,GAAItU,EAAMuU,GAAKwjJ,IAG3GppL,EAAIs5B,WACN,EACAgpO,UAAW,WACTzmQ,KAAKgwG,QAAQ,WACf,EACAq2J,SAAU,WACRrmQ,KAAKgwG,QAAQ,SACf,IAGEviF,EAAW0lN,EAAQkF,gBAAgB,CACrC7zO,KAAM,SAMNi2P,OAAQ,KAMR8mC,yBAAyB,EACzBpiS,OAAQ,SAAUy0O,EAAalB,EAAS/nI,GACtC,IAAI62L,EAAaxhS,KACbmxB,EAAQyiN,EAAYkwB,WACpB5oN,EAAQl7C,KAAKk7C,MACb06I,EAAag+C,EAAYh+C,WAEzBptJ,EAAQotJ,EAAWptJ,MAEnBC,EAASmtJ,EAAWntJ,OACpBw6N,EAAWrvB,EAAY7oI,UACvBm9D,EAAW0rE,EAAY7oI,QAAQ,QAC/Bn5D,EAASgiM,EAAY1wO,IAAI,UAC7BlD,KAAKy6P,OAAS7mB,EACd14L,EAAMigM,YACNjgM,EAAMrkB,KAAK,WAAY,CAAC++J,EAAW91K,EAAG81K,EAAWj3J,IAEjDxN,EAAM22O,UAAS,SAAUnnL,GACvB,IAAIh9C,EAAQ,IAAIy9P,EAChBz9P,EAAMkwM,UAAYlzJ,EAAKkzJ,UACvBlwM,EAAM+6M,YAAc9K,EAAY8K,YAChC/6M,EAAM80N,SAAW,OACjB,IAWI3uN,EACAC,EACAE,EACAC,EACAgvO,EACAC,EACAkoB,EACAC,EAlBA9hC,EAAiB7+K,EAAK64J,SAAS,aAC/B70K,EAAY66L,EAAet8P,IAAI,aAC/Bu+R,EAAW9gN,EAAK+5C,MAAMy9G,YACtBupD,EAAa/gN,EAAK+5C,MAAM8+G,WACxBmoD,EAASD,EAAWx+R,IAAI,UACxB0+R,EAASF,EAAWx+R,IAAI,UACxB2+R,EAAWlhN,EAAKg6C,MAAMw9G,YACtB2pD,EAAanhN,EAAKg6C,MAAM6+G,WACxBuoD,EAASD,EAAW5+R,IAAI,UACxB8+R,EAASF,EAAW5+R,IAAI,UACxB++R,EAAathN,EAAKw3J,YA4CtB,OAnCAx0M,EAAMnO,MAAM+3J,OAASpnL,KAAKwI,IAAI,EAAGszR,EAAWr8N,IAC5CjiC,EAAMnO,MAAMoc,OAASA,EAEN,aAAXA,GACF9H,GAAgB,MAAV63P,EAAiBA,EAASn5P,EAAQi5P,EAAS3hR,GAAKmiR,EAAW58N,GACjEt7B,GAAgB,MAAV63P,EAAiBA,EAASn5P,EAASg5P,EAAS9iQ,GAAK8iQ,EAAS77N,GAChE37B,GAAgB,MAAV83P,EAAiBA,EAASv5P,EAAQq5P,EAAS/hR,GAAKmiR,EAAWx4P,GACjES,EAAe,MAAV83P,EAAiBA,EAASv5P,EAASo5P,EAASljQ,EACjDu6O,EAAOpvO,EACPqvO,EAAOpvO,GAAM,EAAI46B,GAAaz6B,EAAKy6B,EACnC08N,EAAOp3P,EACPq3P,EAAOv3P,EAAK46B,EAAYz6B,GAAM,EAAIy6B,KAElC76B,GAAgB,MAAV63P,EAAiBA,EAASn5P,EAAQi5P,EAAS3hR,GAAK2hR,EAAS97N,GAC/D57B,GAAgB,MAAV63P,EAAiBA,EAASn5P,EAASg5P,EAAS9iQ,GAAKsjQ,EAAW58N,GAClEp7B,EAAe,MAAV83P,EAAiBA,EAASv5P,EAAQq5P,EAAS/hR,EAChDoqB,GAAgB,MAAV83P,EAAiBA,EAASv5P,EAASo5P,EAASljQ,GAAKsjQ,EAAWx4P,GAClEyvO,EAAOpvO,GAAM,EAAI66B,GAAa16B,EAAK06B,EACnCw0M,EAAOpvO,EACPs3P,EAAOv3P,EAAK66B,EAAY16B,GAAM,EAAI06B,GAClC28N,EAAOp3P,GAGTvG,EAAMw2M,SAAS,CACbrwM,GAAIA,EACJC,GAAIA,EACJE,GAAIA,EACJC,GAAIA,EACJgvO,KAAMA,EACNC,KAAMA,EACNkoB,KAAMA,EACNC,KAAMA,IAER39P,EAAMkoJ,SAAS2zE,EAAehgB,gBAEtB77M,EAAM/3B,MAAMme,MAClB,IAAK,SACH4Z,EAAM/3B,MAAMme,KAAO42D,EAAK+5C,MAAM4iH,UAAU,SACxC,MAEF,IAAK,SACH35M,EAAM/3B,MAAMme,KAAO42D,EAAKg6C,MAAM2iH,UAAU,SACxC,MAGJxG,EAAQ8G,cAAcj6M,EAAOg9C,EAAK64J,SAAS,sBAAsBgG,gBACjEtkM,EAAM36C,IAAIojC,GACVukI,EAASuyE,iBAAiB95J,EAAKkzJ,UAAWlwM,EAC5C,IAEAxS,EAAMu3O,UAAS,SAAUttL,GACvB,IAAI+sB,EAAS/sB,EAAK+8J,YACdiC,EAAYh/J,EAAKo+J,WACjB0oD,EAAQ9nD,EAAUl3O,IAAI,UACtBi/R,EAAQ/nD,EAAUl3O,IAAI,UACtB6kP,EAAa3N,EAAUZ,SAAS,SAChCmjB,EAAkBviB,EAAUZ,SAAS,kBACrCv8M,EAAO,IAAI65M,EAAQuF,KAAK,CAC1B7mN,MAAO,CACL1V,EAAY,MAAToiR,EAAgBA,EAAQ15P,EAAQ2/D,EAAOroF,EAC1C6e,EAAY,MAATwjQ,EAAgBA,EAAQ15P,EAAS0/D,EAAOxpE,EAC3C6J,MAAO2/D,EAAOxiC,GACdl9B,OAAQ0/D,EAAOviC,IAEjBh6D,MAAOwuO,EAAUZ,SAAS,aAAagG,iBAErChC,EAAapiK,EAAKo+J,SAAS,sBAAsBgG,eACrD1I,EAAQmR,cAAchrN,EAAKrxB,MAAO4xO,EAAYuK,EAAY4U,EAAiB,CACzEzU,aAActU,EACduU,eAAgB/sK,EAAKy4J,UACrBuU,YAAahtK,EAAK5xE,GAClB6+O,YAAY,IAEdprN,EAAK4uJ,SAAS,OAAQzwG,EAAKkiK,UAAU,UACrCxG,EAAQ8G,cAAc3gN,EAAMugN,GAC5BtiM,EAAM36C,IAAI08B,GACVgmO,EAASxoB,iBAAiBr/J,EAAKy4J,UAAW52M,GAC1CA,EAAKw7N,SAAW,MAClB,IACAwK,EAASxnB,mBAAkB,SAAU75O,EAAIiyO,GACvC,IAAIuG,EAAY6oB,EAAS5oB,aAAaxG,GAElCuG,EAAUl3O,IAAI,eAChBtB,EAAGm7Q,MAAQ,SAAUp3M,EAAIC,GACvB47N,EAAWD,yBAA0B,EACrCvhS,KAAKw1B,MAAM1V,GAAK6lD,EAChB3lE,KAAKw1B,MAAMmJ,GAAKinC,EAChB5lE,KAAK2jK,QACLh5D,EAAIi9J,eAAe,CACjBpjQ,KAAM,WACNuvO,SAAUH,EAAYpqO,GACtBqqO,UAAWovB,EAAStN,YAAY9hB,GAChC6sD,OAAQ1gS,KAAKw1B,MAAM1V,EAAI0oB,EACvBm4P,OAAQ3gS,KAAKw1B,MAAMmJ,EAAI8J,GAE3B,EAEA7mC,EAAGwgS,UAAY,WACbZ,EAAWD,yBAA0B,CACvC,EAEA3/R,EAAGqjQ,WAAY,EACfrjQ,EAAG8wB,OAAS,QAGd9wB,EAAG6kQ,UAAY,WACbzmQ,KAAKgwG,QAAQ,WACf,EAEApuG,EAAGykQ,SAAW,WACZrmQ,KAAKgwG,QAAQ,SACf,EAEApuG,EAAGygS,qBAAuBzgS,EAAGo6E,IAAI,YAAap6E,EAAGygS,qBACjDzgS,EAAG0gS,uBAAyB1gS,EAAGo6E,IAAI,WAAYp6E,EAAG0gS,uBAE9CloD,EAAUl3O,IAAI,wBAChBtB,EAAG6hE,GAAG,YAAa7hE,EAAGygS,oBAAsB,WACrCb,EAAWD,0BACdC,EAAW75B,cAEXh9J,EAAIi9J,eAAe,CACjBpjQ,KAAM,qBACNuvO,SAAUH,EAAYpqO,GACtBqqO,UAAWjyO,EAAGiyO,YAGpB,GACAjyO,EAAG6hE,GAAG,WAAY7hE,EAAG0gS,sBAAwB,WACtCd,EAAWD,yBACdC,EAAW35B,iBAAiBl9J,EAEhC,GAEJ,IACAu9D,EAASuzE,mBAAkB,SAAU75O,EAAIiyO,GACvC,IAAIm6B,EAAY9lG,EAASmyE,aAAaxG,GACtCjyO,EAAGygS,qBAAuBzgS,EAAGo6E,IAAI,YAAap6E,EAAGygS,qBACjDzgS,EAAG0gS,uBAAyB1gS,EAAGo6E,IAAI,WAAYp6E,EAAG0gS,uBAE9Ct0B,EAAU9qQ,IAAI,wBAChBtB,EAAG6hE,GAAG,YAAa7hE,EAAGygS,oBAAsB,WACrCb,EAAWD,0BACdC,EAAW75B,cAEXh9J,EAAIi9J,eAAe,CACjBpjQ,KAAM,qBACNuvO,SAAUH,EAAYpqO,GACtBu+P,cAAenmQ,EAAGiyO,YAGxB,GACAjyO,EAAG6hE,GAAG,WAAY7hE,EAAG0gS,sBAAwB,WACtCd,EAAWD,yBACdC,EAAW35B,iBAAiBl9J,EAEhC,GAEJ,KAEK3qG,KAAKqqK,OAASupE,EAAY1wO,IAAI,cACjCg4C,EAAMogM,YAAYm+C,EAAoBv+O,EAAM8tN,kBAAmBp1B,GAAa,WAC1E14L,EAAMm+L,gBACR,KAGFr5O,KAAKqqK,MAAQupE,EAAY7oI,SAC3B,EACAywI,QAAS,WACPx7O,KAAK2nQ,aACP,EACAE,iBAAkB,SAAUl9J,GAC1B,IAAIvkG,EAAOpG,KAEXA,KAAK2nQ,cAEL3nQ,KAAKwoQ,mBAAqBrkP,YAAW,WACnC/d,EAAKoiQ,mBAAqB,KAC1B79J,EAAIi9J,eAAe,CACjBpjQ,KAAM,uBACNuvO,SAAU3tO,EAAKq0P,OAAOjxP,IAE1B,GAAG,IACL,EACAm+P,YAAa,WACP3nQ,KAAKwoQ,qBACPvvM,aAAaj5D,KAAKwoQ,oBAClBxoQ,KAAKwoQ,mBAAqB,KAE9B,EACAhE,mBAAoB,SAAU5wB,EAAalB,EAAS/nI,EAAK6oI,GACvD,IAAIv0N,EAAO20N,EAAY7oI,UACnB55E,EAAQlS,EAAKkS,MACb0iN,EAAYL,EAAQK,UACpBuG,EAAYn7N,EAAKo7N,aAAaxG,GAC9Bk0B,EAAgBv0B,EAAQu0B,cAE5B,GAAiB,MAAbl0B,GAAsC,MAAjBk0B,EAAzB,CAIA,IAAI3sL,EAAOjqD,EAAMs3O,eAAe50B,GAC5BlzJ,EAAOxvD,EAAM+yO,eAAe6D,GAQhC,GAPA52O,EAAMu3O,UAAS,SAAUttL,GACvB8qL,EAAY9qL,EAAM0qL,EAAiB,GACrC,IACA30O,EAAM22O,UAAS,SAAUnnL,GACvBulL,EAAYvlL,EAAMolL,EAAiB,GACrC,IAEI3qL,EAAM,CACRorL,EAAWprL,EAAM8lN,GACjB,IAAIqB,EAAenoD,EAAUl3O,IAAI,sBAEZ,aAAjBq/R,EACFjwD,EAAO56H,KAAKt8B,EAAKonN,UAAU,SAAU7hN,GAC/BA,EAAKkzJ,UAAY,IAIrB2yB,EAAW7lL,EAAMwgN,GACjB36B,EAAW7lL,EAAKg6C,MAAOumK,GACzB,IAC0B,YAAjBqB,EACTjwD,EAAO56H,KAAKt8B,EAAKqnN,SAAS,SAAU9hN,GAC9BA,EAAKkzJ,UAAY,IAIrB2yB,EAAW7lL,EAAMwgN,GACjB36B,EAAW7lL,EAAK+5C,MAAOwmK,GACzB,IAC0B,aAAjBqB,GACTjwD,EAAO56H,KAAKt8B,EAAK+E,OAAO,SAAUQ,GAC5BA,EAAKkzJ,UAAY,IAIrB2yB,EAAW7lL,EAAMwgN,GACjBxgN,EAAK+5C,QAAUt/C,GAAQorL,EAAW7lL,EAAK+5C,MAAOwmK,GAC9CvgN,EAAKg6C,QAAUv/C,GAAQorL,EAAW7lL,EAAKg6C,MAAOumK,GAChD,GAEJ,CAEIvgN,IACF6lL,EAAW7lL,EAAMwgN,GACjB36B,EAAW7lL,EAAK+5C,MAAOwmK,GACvB16B,EAAW7lL,EAAKg6C,MAAOumK,GAjDzB,CAmDF,EACAt4B,qBAAsB,SAAUh1B,EAAalB,EAAS/nI,EAAK6oI,GACzD,IAAIriN,EAAQyiN,EAAYkwB,WACxB3yO,EAAMu3O,UAAS,SAAUttL,GACvB8qL,EAAY9qL,EAAM0qL,EACpB,IACA30O,EAAM22O,UAAS,SAAUnnL,GACvBulL,EAAYvlL,EAAMolL,EACpB,GACF,IAIF,SAAS0zB,EAAoBx8P,EAAM22M,EAAaj7J,GAC9C,IAAI+gN,EAAS,IAAI5iD,EAAQuF,KAAK,CAC5B7mN,MAAO,CACL1V,EAAGmd,EAAKnd,EAAI,GACZ6e,EAAG1B,EAAK0B,EAAI,GACZ6J,MAAO,EACPC,OAAQxL,EAAKwL,OAAS,MAQ1B,OALAquM,EAAQkX,UAAU0rC,EAAQ,CACxBlkQ,MAAO,CACLgT,MAAOvL,EAAKuL,MAAQ,KAErBorM,EAAaj7J,GACT+gN,CACT,CAEAv4R,EAAOD,QAAUusB,C,wBChbjB,IAAI0lN,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAoBR2qN,EAAQI,eAAe,CACrB/uO,KAAM,WACN6e,MAAO,WAEP2T,OAAQ,WACP,SAAUw8M,EAASd,GACpBA,EAAQe,cAAc,CACpBC,SAAU,SACVC,QAAS,SACT9yI,MAAO2yI,IACN,SAAUI,GACXA,EAAY4sD,gBAAgBhtD,EAAQK,UAAW,CAACL,EAAQktD,OAAQltD,EAAQmtD,QAC1E,GACF,G,iCCnCA,IAAIx4L,EAAS3/E,EAAQ,MAEjB8pN,EAAS9pN,EAAQ,OAEjBiyO,EAASjyO,EAAQ,OAEjBk6Q,EAAYjoC,EAAOioC,UAoBvB,SAASj1Q,EAASilN,EAAS/nI,EAAK6oI,GAC9Bd,EAAQkY,iBAAiB,UAAU,SAAUhX,GAC3C,IAAIhhC,EAAYghC,EAAY1wO,IAAI,aAC5B69R,EAAUntD,EAAY1wO,IAAI,WAC1B0yL,EAAa0nE,EAAY1pB,EAAajpI,GAC1CipI,EAAYh+C,WAAaA,EACzB,IAAIptJ,EAAQotJ,EAAWptJ,MACnBC,EAASmtJ,EAAWntJ,OACpBtX,EAAQyiN,EAAYkwB,WACpBhlL,EAAQ3tD,EAAM2tD,MACdqB,EAAQhvD,EAAMgvD,MAClBwiN,EAAkB7jN,GAClB,IAAI8jN,EAAgBtwD,EAAOtiN,OAAO8uD,GAAO,SAAU1D,GACjD,OAAkC,IAA3BA,EAAK+8J,YAAYr2O,KAC1B,IACIstF,EAAsC,IAAzBwzM,EAAc5gS,OAAe,EAAI4xO,EAAY1wO,IAAI,oBAC9D0uC,EAASgiM,EAAY1wO,IAAI,UACzB+9R,EAAYrtD,EAAY1wO,IAAI,aAChC2/R,EAAa/jN,EAAOqB,EAAOyyH,EAAWmuF,EAASv4P,EAAOC,EAAQ2mD,EAAYx9C,EAAQqvP,EACpF,GACF,CAUA,SAAS3jC,EAAY1pB,EAAajpI,GAChC,OAAOxC,EAAOo1J,cAAc3pB,EAAY4pB,qBAAsB,CAC5Dh1N,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,aAEhB,CAEA,SAASugD,EAAa/jN,EAAOqB,EAAOyyH,EAAWmuF,EAASv4P,EAAOC,EAAQ2mD,EAAYx9C,EAAQqvP,GACzF6B,EAAoBhkN,EAAOqB,EAAOyyH,EAAWpqK,EAAOC,EAAQmJ,EAAQqvP,GACpE8B,EAAkBjkN,EAAOqB,EAAO13C,EAAQD,EAAOu4P,EAAS3xM,EAAYx9C,GACpEoxP,EAAkBlkN,EAAOltC,EAC3B,CAQA,SAAS+wP,EAAkB7jN,GACzBwzJ,EAAO56H,KAAK54B,GAAO,SAAU1D,GAC3B,IAAI6nN,EAAS13Q,EAAI6vD,EAAKonN,SAAUU,GAC5BC,EAAS53Q,EAAI6vD,EAAKqnN,QAASS,GAC3BE,EAAehoN,EAAK4oB,YAAc,EAClCliG,EAAQqE,KAAKwI,IAAIs0R,EAAQE,EAAQC,GACrChoN,EAAKm0K,UAAU,CACbztP,MAAOA,IACN,EACL,GACF,CAaA,SAASghS,EAAoBhkN,EAAOqB,EAAOyyH,EAAWpqK,EAAOC,EAAQmJ,EAAQqvP,GAY3E,IATA,IAAIoC,EAAc,GAEdC,EAAc,GAEdC,EAAgB,GAChBC,EAAiB,GACjB1jR,EAAI,EACJ2jR,EAAK,EAEAz/R,EAAI,EAAGA,EAAIm8E,EAAMn+E,OAAQgC,IAChCq/R,EAAYr/R,GAAK,EAGnB,IAAKA,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAC5Bs/R,EAAYt/R,GAAK86E,EAAM96E,GAAGy+R,QAAQzgS,OAEX,IAAnBshS,EAAYt/R,IACdu/R,EAAct/R,KAAK66E,EAAM96E,IAI7B,IAAI0/R,GAAgB,EAIpB,MAAOH,EAAcvhS,OAAQ,CAC3B,IAAK,IAAImlG,EAAM,EAAGA,EAAMo8L,EAAcvhS,OAAQmlG,IAAO,CACnD,IAAI/rB,EAAOmoN,EAAcp8L,GACrB3hF,EAAO41D,EAAKuoN,UAAU1kR,KAAK2kR,eAAexoN,EAAKy4J,WAC/CgwD,EAA4B,MAAdr+Q,EAAKuuG,OAAiBvuG,EAAKuuG,OAAS,EAElD8vK,GAAer+Q,EAAKuuG,MAAQ2vK,IAC9BA,EAAel+Q,EAAKuuG,OAGtB34C,EAAKm0K,UAAU,CACbx7H,MAAO8vK,EAAcr+Q,EAAKuuG,MAAQj0G,IACjC,GACQ,aAAX8xB,EAAwBwpC,EAAKm0K,UAAU,CACrC3pL,GAAIgtI,IACH,GAAQx3H,EAAKm0K,UAAU,CACxB5pL,GAAIitI,IACH,GAEH,IAAK,IAAIkxF,EAAU,EAAGA,EAAU1oN,EAAKonN,SAASxgS,OAAQ8hS,IAAW,CAC/D,IAAInjN,EAAOvF,EAAKonN,SAASsB,GACrBC,EAAY5jN,EAAM9oE,QAAQspE,GAC9B0iN,EAAYU,GAAa,EACzB,IAAIhf,EAAapkM,EAAKg6C,MAClBz1C,EAAYpG,EAAMznE,QAAQ0tQ,GAEG,MAA3Bue,EAAYp+M,IAAoBs+M,EAAensR,QAAQ0tQ,GAAc,GACzEye,EAAev/R,KAAK8gR,EAExB,CACF,GAEEjlQ,EACFyjR,EAAgBC,EAChBA,EAAiB,EACnB,CAEA,IAAKx/R,EAAI,EAAGA,EAAIq/R,EAAYrhS,OAAQgC,IAClC,GAAuB,IAAnBq/R,EAAYr/R,GACd,MAAM,IAAI2X,MAAM,iDAIpB,IAAIw1K,EAAWuyG,EAAe5jR,EAAI,EAAI4jR,EAAe5jR,EAAI,EAErDmhR,GAA2B,SAAdA,GACf+C,EAAwBllN,EAAOmiN,EAAWrvP,EAAQu/I,GAGhDsyG,EAAgB,aAAX7xP,GAAyBnJ,EAASmqK,GAAazhB,GAAY3oJ,EAAQoqK,GAAazhB,EACzF8yG,EAAkBnlN,EAAO2kN,EAAI7xP,EAC/B,CAEA,SAASsyP,EAAY9oN,GACnB,IAAI51D,EAAO41D,EAAKuoN,UAAU1kR,KAAK2kR,eAAexoN,EAAKy4J,WACnD,OAAqB,MAAdruN,EAAKuuG,OAAiBvuG,EAAKuuG,OAAS,CAC7C,CAEA,SAASiwK,EAAwBllN,EAAOmiN,EAAWrvP,EAAQu/I,GACzD,GAAkB,UAAd8vG,EAAuB,CACzB,IAAIkD,EAAiB,GACjBC,EAActlN,EACd+zH,EAAa,EAEjB,MAAOuxF,EAAYpiS,OAAQ,CACzB,IAAK,IAAIgC,EAAI,EAAGA,EAAIogS,EAAYpiS,OAAQgC,IAAK,CAC3C,IAAIo3E,EAAOgpN,EAAYpgS,GACvBo3E,EAAKm0K,UAAU,CACb80C,aAAcxxF,IACb,GAEH,IAAK,IAAI5nM,EAAI,EAAGA,EAAImwE,EAAKqnN,QAAQzgS,OAAQiJ,IAAK,CAC5C,IAAI01E,EAAOvF,EAAKqnN,QAAQx3R,GAEpBk5R,EAAe9sR,QAAQspE,EAAK+5C,OAAS,GACvCypK,EAAelgS,KAAK08E,EAAK+5C,MAE7B,CACF,CAEA0pK,EAAcD,EACdA,EAAiB,KACftxF,CACJ,CAEAy/B,EAAO56H,KAAK54B,GAAO,SAAU1D,GACtB8oN,EAAY9oN,IACfA,EAAKm0K,UAAU,CACbx7H,MAAO5tH,KAAKwI,IAAI,EAAGwiL,EAAW/1G,EAAK+8J,YAAYksD,gBAC9C,EAEP,GACF,KAAyB,YAAdpD,GACTqD,EAAexlN,EAAOqyG,EAE1B,CAUA,SAASmzG,EAAexlN,EAAOqyG,GAC7BmhD,EAAO56H,KAAK54B,GAAO,SAAU1D,GACtB8oN,EAAY9oN,IAAUA,EAAKonN,SAASxgS,QACvCo5E,EAAKm0K,UAAU,CACbx7H,MAAOo9D,IACN,EAEP,GACF,CASA,SAAS8yG,EAAkBnlN,EAAO2kN,EAAI7xP,GACpC0gM,EAAO56H,KAAK54B,GAAO,SAAU1D,GAC3B,IAAIklN,EAAYllN,EAAK+8J,YAAYpkH,MAAQ0vK,EAC9B,aAAX7xP,EAAwBwpC,EAAKm0K,UAAU,CACrC5wN,EAAG2hQ,IACF,GAAQllN,EAAKm0K,UAAU,CACxBzvO,EAAGwgR,IACF,EACL,GACF,CAaA,SAASyC,EAAkBjkN,EAAOqB,EAAO13C,EAAQD,EAAOu4P,EAAS3xM,EAAYx9C,GAC3E,IAAI2yP,EAAiBC,EAAsB1lN,EAAOltC,GAClD6yP,EAAoBF,EAAgBpkN,EAAO13C,EAAQD,EAAOu4P,EAASnvP,GACnE8yP,EAAkBH,EAAgBxD,EAASt4P,EAAQD,EAAOoJ,GAE1D,IAAK,IAAI2yE,EAAQ,EAAGn1B,EAAa,EAAGA,IAGlCm1B,GAAS,IACTogL,EAAiBJ,EAAgBhgL,EAAO3yE,GACxC8yP,EAAkBH,EAAgBxD,EAASt4P,EAAQD,EAAOoJ,GAC1DgzP,EAAiBL,EAAgBhgL,EAAO3yE,GACxC8yP,EAAkBH,EAAgBxD,EAASt4P,EAAQD,EAAOoJ,EAE9D,CAEA,SAAS4yP,EAAsB1lN,EAAOltC,GACpC,IAAI2yP,EAAiB,GACjBM,EAAqB,aAAXjzP,EAAwB,IAAM,IACxCu4M,EAAcu4C,EAAU5jN,GAAO,SAAU1D,GAC3C,OAAOA,EAAK+8J,YAAY0sD,EAC1B,IAOA,OANA16C,EAAYpiP,KAAK8d,MAAK,SAAUljB,EAAGC,GACjC,OAAOD,EAAIC,CACb,IACA0vO,EAAO56H,KAAKyyI,EAAYpiP,MAAM,SAAUlE,GACtC0gS,EAAetgS,KAAKkmP,EAAY26C,QAAQ5hS,IAAIW,GAC9C,IACO0gS,CACT,CAaA,SAASE,EAAoBF,EAAgBpkN,EAAO13C,EAAQD,EAAOu4P,EAASnvP,GAC1E,IAAImzP,EAAQlyM,IACZy/I,EAAO56H,KAAK6sL,GAAgB,SAAUzlN,GACpC,IAAI/+D,EAAI++D,EAAM98E,OACVupB,EAAM,EACV+mN,EAAO56H,KAAK54B,GAAO,SAAU1D,GAC3B7vD,GAAO6vD,EAAK+8J,YAAYr2O,KAC1B,IACA,IAAIkjS,EAAgB,aAAXpzP,GAAyBpJ,GAASzoB,EAAI,GAAKghR,GAAWx1Q,GAAOkd,GAAU1oB,EAAI,GAAKghR,GAAWx1Q,EAEhGy5Q,EAAKD,IACPA,EAAQC,EAEZ,IACA1yD,EAAO56H,KAAK6sL,GAAgB,SAAUzlN,GACpCwzJ,EAAO56H,KAAK54B,GAAO,SAAU1D,EAAMp3E,GACjC,IAAIihS,EAAS7pN,EAAK+8J,YAAYr2O,MAAQijS,EAEvB,aAAXnzP,GACFwpC,EAAKm0K,UAAU,CACbzvO,EAAG9b,IACF,GACHo3E,EAAKm0K,UAAU,CACb5pL,GAAIs/N,IACH,KAEH7pN,EAAKm0K,UAAU,CACb5wN,EAAG36B,IACF,GACHo3E,EAAKm0K,UAAU,CACb3pL,GAAIq/N,IACH,GAEP,GACF,IACA3yD,EAAO56H,KAAKv3B,GAAO,SAAUQ,GAC3B,IAAIukN,GAAUvkN,EAAKqjB,WAAa+gM,EAChCpkN,EAAK4uK,UAAU,CACb3pL,GAAIs/N,IACH,EACL,GACF,CAWA,SAASR,EAAkBH,EAAgBxD,EAASt4P,EAAQD,EAAOoJ,GACjE,IAAIizP,EAAqB,aAAXjzP,EAAwB,IAAM,IAC5C0gM,EAAO56H,KAAK6sL,GAAgB,SAAUzlN,GAIpC,IAAI2hD,EACArlD,EACAxV,EALJkZ,EAAMj5D,MAAK,SAAUljB,EAAGC,GACtB,OAAOD,EAAEw1O,YAAY0sD,GAAWjiS,EAAEu1O,YAAY0sD,EAChD,IAQA,IAJA,IAAItlG,EAAK,EACLx/K,EAAI++D,EAAM98E,OACVmjS,EAAwB,aAAXvzP,EAAwB,KAAO,KAEvC5tC,EAAI,EAAGA,EAAI+b,EAAG/b,IACrBo3E,EAAO0D,EAAM96E,GACb4hE,EAAK25H,EAAKnkH,EAAK+8J,YAAY0sD,GAEvBj/N,EAAK,IACP66D,EAAQrlD,EAAK+8J,YAAY0sD,GAAWj/N,EACzB,aAAXh0B,EAAwBwpC,EAAKm0K,UAAU,CACrCzvO,EAAG2gH,IACF,GAAQrlD,EAAKm0K,UAAU,CACxB5wN,EAAG8hG,IACF,IAGL8+D,EAAKnkH,EAAK+8J,YAAY0sD,GAAWzpN,EAAK+8J,YAAYgtD,GAAcpE,EAGlE,IAAI/iC,EAAuB,aAAXpsN,EAAwBpJ,EAAQC,EAIhD,GAFAm9B,EAAK25H,EAAKwhG,EAAU/iC,EAEhBp4L,EAAK,EASP,IARA66D,EAAQrlD,EAAK+8J,YAAY0sD,GAAWj/N,EACzB,aAAXh0B,EAAwBwpC,EAAKm0K,UAAU,CACrCzvO,EAAG2gH,IACF,GAAQrlD,EAAKm0K,UAAU,CACxB5wN,EAAG8hG,IACF,GACH8+D,EAAK9+D,EAEAz8H,EAAI+b,EAAI,EAAG/b,GAAK,IAAKA,EACxBo3E,EAAO0D,EAAM96E,GACb4hE,EAAKwV,EAAK+8J,YAAY0sD,GAAWzpN,EAAK+8J,YAAYgtD,GAAcpE,EAAUxhG,EAEtE35H,EAAK,IACP66D,EAAQrlD,EAAK+8J,YAAY0sD,GAAWj/N,EACzB,aAAXh0B,EAAwBwpC,EAAKm0K,UAAU,CACrCzvO,EAAG2gH,IACF,GAAQrlD,EAAKm0K,UAAU,CACxB5wN,EAAG8hG,IACF,IAGL8+D,EAAKnkH,EAAK+8J,YAAY0sD,EAG5B,GACF,CAUA,SAASF,EAAiBJ,EAAgBhgL,EAAO3yE,GAC/C0gM,EAAO56H,KAAK6sL,EAAepiS,QAAQ64B,WAAW,SAAU8jD,GACtDwzJ,EAAO56H,KAAK54B,GAAO,SAAU1D,GAC3B,GAAIA,EAAKonN,SAASxgS,OAAQ,CACxB,IAAI28B,EAAIpT,EAAI6vD,EAAKonN,SAAU4C,EAAgBxzP,GAAUrmB,EAAI6vD,EAAKonN,SAAUU,EAActxP,GAEtF,GAAI7iC,MAAM4vB,GAAI,CACZ,IAAInnB,EAAM4jE,EAAKonN,SAASxgS,OACxB28B,EAAInnB,EAAM+T,EAAI6vD,EAAKonN,SAAU6C,EAAczzP,GAAUp6B,EAAM,CAC7D,CAEA,GAAe,aAAXo6B,EAAuB,CACzB,IAAI6uF,EAAQrlD,EAAK+8J,YAAYr4N,GAAK6e,EAAI8Q,EAAO2rC,EAAMxpC,IAAW2yE,EAC9DnpC,EAAKm0K,UAAU,CACbzvO,EAAG2gH,IACF,EACL,KAAO,CACL,IAAIC,EAAQtlD,EAAK+8J,YAAYx5M,GAAKA,EAAI8Q,EAAO2rC,EAAMxpC,IAAW2yE,EAC9DnpC,EAAKm0K,UAAU,CACb5wN,EAAG+hG,IACF,EACL,CACF,CACF,GACF,GACF,CAEA,SAAS0kK,EAAezkN,EAAM/uC,GAC5B,OAAOnC,EAAOkxC,EAAKg6C,MAAO/oF,GAAU+uC,EAAKqjB,UAC3C,CAEA,SAASqhM,EAAa1kN,EAAM/uC,GAC1B,OAAOnC,EAAOkxC,EAAKg6C,MAAO/oF,EAC5B,CAEA,SAAS0zP,EAAe3kN,EAAM/uC,GAC5B,OAAOnC,EAAOkxC,EAAK+5C,MAAO9oF,GAAU+uC,EAAKqjB,UAC3C,CAEA,SAASuhM,EAAa5kN,EAAM/uC,GAC1B,OAAOnC,EAAOkxC,EAAK+5C,MAAO9oF,EAC5B,CAEA,SAASnC,EAAO2rC,EAAMxpC,GACpB,MAAkB,aAAXA,EAAwBwpC,EAAK+8J,YAAYr4N,EAAIs7D,EAAK+8J,YAAYxyK,GAAK,EAAIyV,EAAK+8J,YAAYx5M,EAAIy8C,EAAK+8J,YAAYvyK,GAAK,CAC3H,CAEA,SAASs9N,EAAaviN,GACpB,OAAOA,EAAKqjB,UACd,CAEA,SAASz4E,EAAIqqC,EAAO+iB,EAAI/mC,GACtB,IAAIrmB,EAAM,EACN/T,EAAMo+C,EAAM5zD,OACZgC,GAAK,EAET,QAASA,EAAIwT,EAAK,CAChB,IAAI1V,GAAS62E,EAAGt4E,KAAKu1D,EAAOA,EAAM5xD,GAAI4tC,GAEjC7iC,MAAMjN,KACTypB,GAAOzpB,EAEX,CAEA,OAAOypB,CACT,CAUA,SAASq5Q,EAAiBL,EAAgBhgL,EAAO3yE,GAC/C0gM,EAAO56H,KAAK6sL,GAAgB,SAAUzlN,GACpCwzJ,EAAO56H,KAAK54B,GAAO,SAAU1D,GAC3B,GAAIA,EAAKqnN,QAAQzgS,OAAQ,CACvB,IAAI28B,EAAIpT,EAAI6vD,EAAKqnN,QAAS6C,EAAgB1zP,GAAUrmB,EAAI6vD,EAAKqnN,QAASS,EAActxP,GAEpF,GAAI7iC,MAAM4vB,GAAI,CACZ,IAAInnB,EAAM4jE,EAAKqnN,QAAQzgS,OACvB28B,EAAInnB,EAAM+T,EAAI6vD,EAAKqnN,QAAS8C,EAAc3zP,GAAUp6B,EAAM,CAC5D,CAEA,GAAe,aAAXo6B,EAAuB,CACzB,IAAI6uF,EAAQrlD,EAAK+8J,YAAYr4N,GAAK6e,EAAI8Q,EAAO2rC,EAAMxpC,IAAW2yE,EAC9DnpC,EAAKm0K,UAAU,CACbzvO,EAAG2gH,IACF,EACL,KAAO,CACL,IAAIC,EAAQtlD,EAAK+8J,YAAYx5M,GAAKA,EAAI8Q,EAAO2rC,EAAMxpC,IAAW2yE,EAC9DnpC,EAAKm0K,UAAU,CACb5wN,EAAG+hG,IACF,EACL,CACF,CACF,GACF,GACF,CAQA,SAASsiK,EAAkBlkN,EAAOltC,GAChC,IAAIizP,EAAqB,aAAXjzP,EAAwB,IAAM,IAC5C0gM,EAAO56H,KAAK54B,GAAO,SAAU1D,GAC3BA,EAAKonN,SAAS38Q,MAAK,SAAUljB,EAAGC,GAC9B,OAAOD,EAAEg4H,MAAMw9G,YAAY0sD,GAAWjiS,EAAE+3H,MAAMw9G,YAAY0sD,EAC5D,IACAzpN,EAAKqnN,QAAQ58Q,MAAK,SAAUljB,EAAGC,GAC7B,OAAOD,EAAE+3H,MAAMy9G,YAAY0sD,GAAWjiS,EAAE83H,MAAMy9G,YAAY0sD,EAC5D,GACF,IACAvyD,EAAO56H,KAAK54B,GAAO,SAAU1D,GAC3B,IAAI/V,EAAK,EACL57B,EAAK,EACT6oM,EAAO56H,KAAKt8B,EAAKonN,UAAU,SAAU7hN,GACnCA,EAAK4uK,UAAU,CACblqL,GAAIA,IACH,GACHA,GAAMsb,EAAKw3J,YAAYvyK,EACzB,IACA0sK,EAAO56H,KAAKt8B,EAAKqnN,SAAS,SAAU9hN,GAClCA,EAAK4uK,UAAU,CACb9lN,GAAIA,IACH,GACHA,GAAMk3C,EAAKw3J,YAAYvyK,EACzB,GACF,GACF,CAEAzkE,EAAOD,QAAUusB,C,wBCzjBjB,IAAI+3Q,EAAgBh9Q,EAAQ,OAExB8pN,EAAS9pN,EAAQ,OAoBrB,SAASiF,EAASilN,EAASc,GACzBd,EAAQkY,iBAAiB,UAAU,SAAUhX,GAC3C,IAAIziN,EAAQyiN,EAAYkwB,WACpBhlL,EAAQ3tD,EAAM2tD,MAElB,GAAIA,EAAM98E,OAAQ,CAChB,IAAIi0C,EAAW48C,IACX78C,GAAY68C,IAChBy/I,EAAO56H,KAAK54B,GAAO,SAAU1D,GAC3B,IAAI0lN,EAAY1lN,EAAK+8J,YAAYr2O,MAE7Bg/R,EAAY7qP,IACdA,EAAW6qP,GAGTA,EAAY9qP,IACdA,EAAW8qP,EAEf,IACAxuD,EAAO56H,KAAK54B,GAAO,SAAU1D,GAC3B,IAAIs+F,EAAU,IAAI8rH,EAAc,CAC9BhhS,KAAM,QACNihS,cAAe,SACftnC,WAAY,CAACloN,EAAUD,GACvBi/M,OAAQrhB,EAAY1wO,IAAI,WAEtBwiS,EAAkBhsH,EAAQisH,iBAAiBvqN,EAAK+8J,YAAYr2O,OAC5D8jS,EAAcxqN,EAAKo+J,WAAWt2O,IAAI,mBACvB,MAAf0iS,EAAsBxqN,EAAK46J,UAAU,QAAS4vD,GAAexqN,EAAK46J,UAAU,QAAS0vD,EACvF,GACF,CACF,GACF,CAEAvkS,EAAOD,QAAUusB,C,wBCxDjB,IAAI0lN,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAER,IAAI2wO,EAAe3wO,EAAQ,OAEvB4wO,EAAe5wO,EAAQ,OAE3BA,EAAQ,OAsBR2qN,EAAQ4C,eAAeojB,EAAa,UAAW,WAC/ChmB,EAAQsC,eAAe2jB,EAAa,W,wBCjCpC,IAAIvZ,EAAsBr3N,EAAQ,OAE9Bo3N,EAAcp3N,EAAQ,OAoBtBiF,EAAWmyN,EAAYl8H,OAAO,CAChCl/G,KAAM,iBACN0xO,aAAc,CAAC,OAAQ,QAAS,MAAO,aAAc,YACrD4J,eAAgB,SAAU/0M,EAAQ2nM,GAChC,OAAOmN,EAAoB7/O,KAAK+/O,YAAa//O,KAAM,CACjDggP,oBAAoB,GAExB,EACA7J,cAAe,QACfC,eAAgB,WACd,IAAIoK,EAAcxgP,KAAK+qC,OAAOy1M,YAE9B,OAAmB,MAAfA,EAEKxgP,KAAK+qC,OAAOgxJ,MAAQ,IAAM/7L,KAAKkD,IAAI,eAGrCs9O,CACT,EACAnK,wBAAyB,WACvB,IAAIC,EAAuBt2O,KAAK+qC,OAAOurM,qBAEvC,OAA4B,MAAxBA,EAEKt2O,KAAK+qC,OAAOgxJ,MAAQ,IAAM/7L,KAAKkD,IAAI,wBAGrCozO,CACT,EACAE,cAAe,CACbnC,iBAAkB,cAClB+L,OAAQ,EACRroK,EAAG,EACHsoK,iBAAiB,EACjBiB,gBAAgB,EAShBV,WAAY,GAGZ7kD,OAAO,EAEPw6C,eAAgB,IAUhBgJ,UAAW,CACTjmN,QAAS,IAKX8lM,MAAM,KAKVj+N,EAAOD,QAAUusB,C,wBC3FjB,IAAI0lN,EAAU3qN,EAAQ,OAElBkxO,EAAalxO,EAAQ,OAErB6vP,EAAkB7vP,EAAQ,OAE1BoxO,EAAepxO,EAAQ,OAoB3B2qN,EAAQkF,gBAAgB,CACtB7zO,KAAM,UACNrF,OAAQ,SAAUy0O,EAAalB,EAAS/nI,GACtC,IAAI1rF,EAAO20N,EAAY7oI,UAEnB27J,EAAa1mQ,KAAK6lS,kBAAkB5mR,EAAM20N,GAE9C8yB,EAAW3M,WAAW96O,EAAM,CAK1BsmO,UAAWvlP,KAAK8lS,cAAclyD,KAEhC5zO,KAAK2yR,WAAY,CACnB,EACAh6C,yBAA0B,SAAU/E,EAAalB,EAAS/nI,GACxD,IAAI1rF,EAAO20N,EAAY7oI,UAEnB27J,EAAa1mQ,KAAK6lS,kBAAkB5mR,EAAM20N,GAE9C8yB,EAAW4Q,yBAAyBr4P,GACpCjf,KAAK2yR,WAAY,CACnB,EACA95C,kBAAmB,SAAU4+B,EAAY7jC,EAAalB,GACpD1yO,KAAK65P,YAAY2d,kBAAkBC,EAAY7jC,EAAY7oI,UAAW,CACpEw6I,UAAWvlP,KAAK8lS,cAAclyD,KAGhC5zO,KAAK2yR,UAAYlb,EAAW94N,MAAQi1L,EAAY7oI,UAAUxiF,OAC5D,EACA+sN,gBAAiB,SAAU1B,EAAalB,EAAS/nI,GAC/C,IAAI1rF,EAAO20N,EAAY7oI,UAKvB,GAFA/qG,KAAKk7C,MAAMyoH,SAEN3jK,KAAK2yR,WAAa1zQ,EAAKsJ,QAAU,MAAQvoB,KAAK65P,YAAYod,eAC7D,MAAO,CACLjgP,QAAQ,GAGV,IAAI+hD,EAAM6gL,IAAenzJ,MAAMmtI,GAE3B76J,EAAIykE,UACNzkE,EAAIykE,SAAS,CACX9+F,MAAO,EACPC,IAAK1/B,EAAKsJ,SACTtJ,GAGLjf,KAAK65P,YAAYG,aAAa/6O,EAElC,EACA6mR,cAAe,SAAUlyD,GACvB,IAAIf,EAAWe,EAAYS,iBACvByZ,EAAWjb,GAAYA,EAASiF,SAAWjF,EAASiF,UACxD,OAAOlE,EAAY1wO,IAAI,QAAQ,GAAQ4qP,EAAW,IACpD,EACA+3C,kBAAmB,SAAU5mR,EAAM20N,GACjC,IAAI8yB,EAAa1mQ,KAAK65P,YAClB7gB,EAAkBpF,EAAYoF,gBAC9BD,EAAcC,EAAgBj9C,MAUlC,OARK2qE,GAAc3tB,IAAgB/4O,KAAKw4O,eACtCkuB,GAAcA,EAAW9pL,SACzB8pL,EAAa1mQ,KAAK65P,YAAc9gB,EAAc,IAAIs/B,EAAoB,IAAI3e,EAC1E15P,KAAKw4O,aAAeO,EACpB/4O,KAAKk7C,MAAMigM,aAGbn7O,KAAKk7C,MAAM36C,IAAImmQ,EAAWxrN,OACnBwrN,CACT,EACA9pL,OAAQ,SAAU81J,EAAS/nI,GACzB3qG,KAAK65P,aAAe75P,KAAK65P,YAAYj9K,QAAO,GAC5C58E,KAAK65P,YAAc,IACrB,EACAre,QAAS,WAAa,G,wBCxGxB,IAAIrI,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAErBA,EAAQ,MAERA,EAAQ,OAERA,EAAQ,OAER,IAAI4xO,EAAY5xO,EAAQ,OAEpBu9Q,EAAiBv9Q,EAAQ,OAEzB8xO,EAAa9xO,EAAQ,OAoBzB2qN,EAAQ4C,eAAezD,EAAOuD,MAAMukB,EAAW,aAC/CjnB,EAAQsC,eAAenD,EAAOuD,MAAMkwD,EAAgB,aACpD5yD,EAAQonB,kBAAkBjoB,EAAOuD,MAAMykB,EAAY,Y,uBCpCnD,IAAIhoB,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAoBlBw9Q,EAAsB,CACxB39M,KAAM,OAENi9D,WAAY,aACZE,SAAU,WACVygJ,KAAM,QAEJC,EAAmB,EACnBC,EAAiB,EAOrB,SAASC,EAAchrN,EAAMw4J,EAAalB,GACxCoE,EAAQM,MAAM/2O,KAAKL,MACnB,IAAI88B,EAAS,IAAIg6M,EAAQ8F,OAAO,CAC9BN,GAAI4pD,IAENppQ,EAAO4hN,YAAc9K,EAAY8K,YACjC,IAAI/hN,EAAO,IAAIm6M,EAAQoc,KAAK,CAC1B5W,GAAI6pD,EACJh3I,OAAQ/zE,EAAKo+J,SAAS,SAASt2O,IAAI,YAMrC,SAASkzQ,IACPz5O,EAAKq3N,OAASr3N,EAAKu/N,WACrB,CAEA,SAASma,IACP15O,EAAKq3N,OAASr3N,EAAKw/N,YACrB,CAVAn8P,KAAKO,IAAIu8B,GACT98B,KAAKO,IAAIo8B,GACT38B,KAAK+5P,YAAW,EAAM3+K,EAAM,SAAUw4J,EAAalB,GAUnD1yO,KAAKyjE,GAAG,WAAY2yM,GAAY3yM,GAAG,SAAU4yM,GAAU5yM,GAAG,YAAa2yM,GAAY3yM,GAAG,WAAY4yM,EACpG,CAEA,IAAIgwB,EAAqBD,EAAc7+R,UAEvC8+R,EAAmBtsC,WAAa,SAAUuC,EAAalhL,EAAMhlE,EAAOw9N,EAAalB,GAC/E1yO,KAAKo7E,KAAOA,EACZA,EAAKq1L,MAAQzwQ,KACb4zO,EAAcA,GAAe5zO,KAAKu9Q,aAClC7qC,EAAUA,GAAW1yO,KAAKsmS,SAC1B,IAAIxpQ,EAAS98B,KAAKg4P,QAAQ,GAC1Bl7N,EAAO+2M,UAAYz4J,EAAKy4J,UACxB,IAAIuG,EAAYh/J,EAAKo+J,WACjBrxI,EAAS/sB,EAAK+8J,YAId0E,EAAcvK,EAAO5uH,OAAO,CAAC,EAAGvb,GACpC00I,EAAY3tM,MAAQ,KACpB,IAAIqtN,EAAcgqC,EAAanrN,EAAMw4J,EAAalB,GAClD8zD,EAAiBprN,EAAMw4J,EAAa2oB,GACpC,IACI3wP,EADAy7O,EAAcjN,EAAUZ,SAAS,aAAagG,eAGlD,GAAc,WAAVppO,EACFxK,EAAQy7O,MACH,CACL,IAAIo/C,EAAarsD,EAAUZ,SAASpjO,EAAQ,cAAcopO,eAC1D5zO,EAAQ0mO,EAAOt0H,MAAMyoL,EAAYp/C,EACnC,CAEAz7O,EAAQ0mO,EAAO94I,SAAS,CACtBhgE,SAAU,QACVzP,KAAMne,EAAMme,MAAQwyO,GACnB3wP,GAEC0wP,GACFx/N,EAAOq9M,SAAS0C,GAChB//M,EAAOtH,MAAMzI,EAAIo7E,EAAOg0I,GACxBrF,EAAQ+D,YAAY/9M,EAAQ,CAC1BtH,MAAO,CACLzI,EAAGo7E,EAAOp7E,IAEX6mN,EAAax4J,EAAKy4J,WACrB/2M,EAAOm9M,SAASruO,IACe,kBAAfA,EAAMme,MAAqBne,EAAMme,KAAKvlB,MAAqC,kBAAtBs4B,EAAOlxB,MAAMme,MAAqB+S,EAAOlxB,MAAMme,KAAKvlB,MAGzHsyO,EAAQ+D,YAAY/9M,EAAQ,CAC1BtH,MAAOqnN,GACNjJ,GACH92M,EAAOm9M,SAASruO,IAEhBkrO,EAAQ+D,YAAY/9M,EAAQ,CAC1BtH,MAAOqnN,EACPjxO,MAAOA,GACNgoO,GAGL5zO,KAAKw8P,aAAa5oB,EAAa2oB,EAAanmP,GAE5C,IAAIqnO,EAAcrD,EAAUsD,WAAW,UAGvC,GAFAD,GAAe3gN,EAAOjG,KAAK,SAAU4mN,GAEjC6e,EAAa,CACf,IAAIoqC,EAAkB9yD,EAAY8J,WAAW,mBAE7C19O,KAAK2mS,YAAY7pQ,EAAQs+C,EAAMw4J,EAAa8yD,EAC9C,CAEA1mS,KAAKu9Q,aAAe3pC,GAAe5zO,KAAKu9Q,aACxCv9Q,KAAKsmS,SAAW5zD,GAAW1yO,KAAKsmS,SAChCxvD,EAAQ8G,cAAc59O,KACxB,EAEAqmS,EAAmBjwB,WAAa,SAAUswB,GACxC,IAAIjkS,EAAOzC,KACXA,KAAKo7E,KAAKwrN,SAAS1uQ,KAAKwwO,UAAS,SAAU3oP,GACrCA,EAAE0wP,QACAhuQ,EAAK24E,OAASr7D,EAChBA,EAAE0wP,MAAM1W,YAAW,EAAOh6O,EAAG,YACpB8mR,EAAkB9mR,EAAGtd,EAAK24E,KAAMsrN,GACzC3mR,EAAE0wP,MAAMzY,QAAQ,GAAGhoJ,QAAQ,aAClB02L,IAAoBV,EAAoB39M,MACjDtoE,EAAE0wP,MAAMzY,QAAQ,GAAGhoJ,QAAQ,YAGjC,GACF,EAEAq2L,EAAmBhwB,SAAW,WAC5Br2Q,KAAKo7E,KAAKwrN,SAAS1uQ,KAAKwwO,UAAS,SAAU3oP,GACrCA,EAAE0wP,OACJ1wP,EAAE0wP,MAAM1W,YAAW,EAAOh6O,EAAG,SAEjC,GACF,EAEAsmR,EAAmBS,YAAc,WAC/B9mS,KAAK+5P,YAAW,EAAO/5P,KAAKo7E,KAAM,YACpC,EAEAirN,EAAmBU,WAAa,WAC9B/mS,KAAK+5P,YAAW,EAAO/5P,KAAKo7E,KAAM,WACpC,EAEAirN,EAAmB7pC,aAAe,SAAU5oB,EAAa2oB,EAAanmP,GACpE,IAAIgkO,EAAYp6O,KAAKo7E,KAAKo+J,WACtBwtD,EAAc5sD,EAAUZ,SAAS,SACjCuO,EAAuB,WAAV3xO,GAAgC,aAAVA,EAAuB4wR,EAAc5sD,EAAUZ,SAASpjO,EAAQ,UACnGumP,EAAkBviB,EAAUZ,SAAS,kBACrCylB,EAAiBlX,EAAW7kP,IAAI,aAEhC+jS,EAAahoC,EAAiB7oP,EAAQ,SACtCumB,EAAO21M,EAAOoS,SAAS9Q,EAAYsiB,kBAAkBl2P,KAAKo7E,KAAKy4J,UAAWozD,EAAY,KAAM,KAAM,SAAUjnS,KAAKo7E,KAAK32E,OAE7F,IAAzByiS,EAAa,UACfvqQ,EAAO,IAGT,IAAIwrE,EAASnoG,KAAKo7E,KAAK+8J,YACnBgvD,EAAgBp/C,EAAW7kP,IAAI,YAEd,MAAjBikS,IACFA,EAAgBH,EAAY9jS,IAAI,aAGlCikS,EAAgBA,EAAgB,IAAMhhS,KAAK40B,GAC3C,IAAIwnB,EAAQ4lD,EAAOroE,SAAWqoE,EAAOtoE,WAEhB,MAAjBsnQ,GAAyBhhS,KAAK6iB,IAAIu5B,GAAS4kP,IAE7CxqQ,EAAO,IAGT,IAAIuS,EAAQlvC,KAAKg4P,QAAQ,GACzBlhB,EAAQmR,cAAc/4M,EAAMtjC,MAAOsjC,EAAMsuM,YAAc,CAAC,EAAGwpD,EAAarqC,EAAiB,CACvFvU,YAAaL,EAAWrK,WAAW,QAAU/gN,EAAO,KACpD2rN,UAAWiU,EACXO,gBAAgB,IAElB,IAGI/vO,EAHA0mL,GAAYtrG,EAAOtoE,WAAasoE,EAAOroE,UAAY,EACnD6lC,EAAKx/D,KAAKmgC,IAAImtK,GACd7tI,EAAKz/D,KAAKkgC,IAAIotK,GAEdjxJ,EAAgB0kP,EAAa,YAC7BE,EAAeF,EAAa,aAAe,EAC3C7sQ,EAAY6sQ,EAAa,SAEP,YAAlB1kP,GACFz1B,EAAIo7E,EAAOp7E,EAAIq6Q,EACf/sQ,EAAYo5K,EAAWttM,KAAK40B,GAAK,EAAI,QAAU,QAE1CV,GAA2B,WAAdA,EAGO,SAAdA,GACTtN,EAAIo7E,EAAOg0I,GAAKirD,EAEZ3zF,EAAWttM,KAAK40B,GAAK,IACvBV,EAAY,UAES,UAAdA,IACTtN,EAAIo7E,EAAOp7E,EAAIq6Q,EAEX3zF,EAAWttM,KAAK40B,GAAK,IACvBV,EAAY,UAZdtN,GAAKo7E,EAAOp7E,EAAIo7E,EAAOg0I,IAAM,EAC7B9hN,EAAY,UAgBhB6U,EAAMrY,KAAK,QAAS,CAClB8F,KAAMA,EACNtC,UAAWA,EACX0iO,kBAAmBmqC,EAAa,kBAAoB,SACpD5tQ,QAAS4tQ,EAAa,aAExB,IAAIv0F,EAAQ5lL,EAAI44C,EAAKwiC,EAAOj5E,GACxB0vC,EAAQ7xC,EAAI64C,EAAKuiC,EAAOh5E,GAC5B+f,EAAMrY,KAAK,WAAY,CAAC87K,EAAO/zI,IAC/B,IAAIyoO,EAAaH,EAAa,UAC1B9wQ,EAAS,EAsBb,SAAS8wQ,EAAaziS,GACpB,IAAI6iS,EAAYv/C,EAAW7kP,IAAIuB,GAE/B,OAAiB,MAAb6iS,EACKN,EAAY9jS,IAAIuB,GAEhB6iS,CAEX,CA5BmB,WAAfD,GACFjxQ,GAAUq9K,EAENr9K,GAAUjwB,KAAK40B,GAAK,IACtB3E,GAAUjwB,KAAK40B,KAEO,eAAfssQ,GACTjxQ,EAASjwB,KAAK40B,GAAK,EAAI04K,EAEnBr9K,EAASjwB,KAAK40B,GAAK,EACrB3E,GAAUjwB,KAAK40B,GACN3E,GAAUjwB,KAAK40B,GAAK,IAC7B3E,GAAUjwB,KAAK40B,KAEc,kBAAfssQ,IAChBjxQ,EAASixQ,EAAalhS,KAAK40B,GAAK,KAGlCmU,EAAMrY,KAAK,WAAYT,EAWzB,EAEAiwQ,EAAmBM,YAAc,SAAU7pQ,EAAQs+C,EAAMw4J,EAAa8yD,GACpE5pQ,EAAOk/C,IAAI,aAAaA,IAAI,YAAYA,IAAI,YAAYA,IAAI,UAC5D,IAAIv5E,EAAOzC,KAEPo2Q,EAAa,WACf3zQ,EAAK2zQ,WAAWswB,EAClB,EAEIrwB,EAAW,WACb5zQ,EAAK4zQ,UACP,EAEI0wB,EAAa,WACftkS,EAAKskS,YACP,EAEID,EAAc,WAChBrkS,EAAKqkS,aACP,EAEIlzD,EAAYuF,sBACdr8M,EAAO2mC,GAAG,YAAa2yM,GAAY3yM,GAAG,WAAY4yM,GAAU5yM,GAAG,WAAY2yM,GAAY3yM,GAAG,SAAU4yM,GAAU5yM,GAAG,WAAYsjO,GAAYtjO,GAAG,YAAaqjO,EAE7J,EAEAx0D,EAAO2qB,SAASmpC,EAAetvD,EAAQM,OACvC,IAAI3pN,EAAW24Q,EASf,SAASG,EAAanrN,EAAMw4J,EAAalB,GAEvC,IAAI6pB,EAAcnhL,EAAKkiK,UAAU,SAC7BsrC,EAAiBxtM,EAAKkiK,UAAU,cAE/BsrC,GAA4C,IAA1BA,EAAe5mR,SAEpCu6P,EAAc,MAIhB,IAAI3rO,EAAQwqD,EAAKo+J,SAAS,aAAat2O,IAAI,SAE3C,GAAI0tB,EACF,OAAOA,EACF,GAAI2rO,EAET,OAAOA,EACF,GAAmB,IAAfnhL,EAAK24C,MAEd,OAAO2+G,EAAQ3nM,OAAOna,MAAM,GAG5B,IAAI5uB,EAAS0wO,EAAQ3nM,OAAOna,MAAM5uB,OAIpC,OAHE4uB,EAAQ8hN,EAAQ3nM,OAAOna,MAAM22Q,EAAUnsN,GAAQp5E,GAG1C4uB,CACT,CASA,SAAS22Q,EAAUnsN,GACjB,IAAI0lB,EAAW1lB,EAEf,MAAO0lB,EAASizB,MAAQ,EACtBjzB,EAAWA,EAASG,WAGtB,IAAIumM,EAAcpsN,EAAKqsN,eAAe,GACtC,OAAOn1D,EAAOj7N,QAAQmwR,EAAYzoN,SAAU+hB,EAC9C,CAEA,SAAS+lM,EAAkBzrN,EAAMssN,EAAYC,GAC3C,OAAIA,IAAW3B,EAAoB39M,OAExBs/M,IAAW3B,EAAoBC,KACjC7qN,IAASssN,EACPC,IAAW3B,EAAoBxgJ,SACjCpqE,IAASssN,GAActsN,EAAKwsN,aAAaF,GAEzCtsN,IAASssN,GAActsN,EAAKysN,eAAeH,GAEtD,CAGA,SAASlB,EAAiBprN,EAAMw4J,EAAahjN,GAC3C,IAAI3R,EAAO20N,EAAY7oI,UACvB9rF,EAAK2tO,cAAcxxK,EAAKy4J,UAAW,QAASjjN,EAC9C,CAEAzvB,EAAOD,QAAUusB,C,uBCtXjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBo3N,EAAcp3N,EAAQ,OAEtBs/Q,EAAOt/Q,EAAQ,OAEfyuN,EAAQzuN,EAAQ,OAEhBu/Q,EAAcv/Q,EAAQ,OAEtB68P,EAAmB0iB,EAAY1iB,iBAoB/B53P,EAAWmyN,EAAYl8H,OAAO,CAChCl/G,KAAM,kBAKNwjS,UAAW,KACXloD,eAAgB,SAAU/0M,EAAQ2nM,GAEhC,IAAIx6M,EAAO,CACTzzB,KAAMsmC,EAAOtmC,KACbs6E,SAAUh0C,EAAO9rB,MAEnBgpR,EAAkB/vQ,GAClB,IAAImoQ,EAAc/tD,EAAO5oN,IAAIqhB,EAAO+oJ,QAAU,IAAI,SAAUo0G,GAC1D,OAAO,IAAIjxD,EAAMixD,EAAaloS,KAAM0yO,EACtC,GAAG1yO,MAIC8kR,EAAOgjB,EAAKK,WAAWjwQ,EAAMl4B,KAAMgjQ,GAEvC,SAASA,EAAWC,GAClBA,EAASC,WAAW,gBAAgB,SAAU3R,EAAOpqJ,GACnD,IAAI/rB,EAAO0pM,EAAKsjB,mBAAmBjhM,GAC/Bo5L,EAAaF,EAAYjlN,EAAK24C,OAElC,OADAwsK,IAAehvC,EAAMxK,YAAcw5C,GAC5BhvC,CACT,GACF,CAEA,OAAOuzB,EAAK7lQ,IACd,EACA4hR,cAAe,WACb7gS,KAAKqoS,eACP,EAKA7vC,cAAe,SAAU3kB,GACvB,IAAIjyN,EAASg+N,EAAYr4O,UAAUixP,cAAc11P,MAAM9C,KAAM+C,WACzDq4E,EAAOp7E,KAAK+qG,UAAU+5K,KAAKsjB,mBAAmBv0D,GAElD,OADAjyN,EAAO0jQ,aAAeD,EAAiBjqM,EAAMp7E,MACtC4hB,CACT,EACA40N,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EAEHtoC,OAAQ,CAAC,MAAO,OAChBpF,OAAQ,CAAC,EAAG,OAEZwoJ,WAAW,EACXhzJ,WAAY,GAEZu6P,SAAU,EACVK,iBAAkB,EAElBC,kBAAkB,EAIlBgM,gBAAiB,aAEjB4B,UAAW,aACXC,wBAAwB,EACxBr5P,MAAO,CAEL9Y,OAAQ,SACRsX,MAAM,EACNpU,QAAS,EAGTygB,MAAO,SACPjoB,SAAU,SACV9E,SAAU,EACVmiI,QAAQ,GAEVowF,UAAW,CACT13K,YAAa,EACbg8J,YAAa,QACb+S,WAAY,QACZj9M,WAAY,EACZC,YAAa,qBACbC,cAAe,EACfC,cAAe,EACfR,QAAS,GAEXmtO,UAAW,CACTlnB,UAAW,CACTjmN,QAAS,IAGb+sO,SAAU,CACR9mB,UAAW,CACTjmN,QAAS,IAEX4V,MAAO,CACL5V,QAAS,KAIb0hQ,cAAe,YACf/mL,kBAAmB,IACnBu0L,wBAAyB,IACzBxlI,gBAAiB,WACjB/jJ,KAAM,GACN60K,OAAQ,GAaRjuK,KAAM,QAER4iR,YAAa,WACX,OAAOzoS,KAAKgoS,SACd,EAKAK,cAAe,SAAUljB,GACvBA,EAAWnlR,KAAKgoS,UAAY7iB,EAAWA,EAAWnlR,KAAKgoS,UACvD,IAAI9vQ,EAAOl4B,KAAKi7P,aAAa6pB,KAAK5sP,KAE7BitP,IAAYA,IAAajtP,GAASA,EAAKw7D,SAASyxL,MACnDnlR,KAAKgoS,UAAY9vQ,EAErB,IAOF,SAAS+vQ,EAAkBS,GAIzB,IAAIn9Q,EAAM,EACV+mN,EAAO56H,KAAKgxL,EAAS3pN,UAAU,SAAUgoB,GACvCkhM,EAAkBlhM,GAClB,IAAI4hM,EAAa5hM,EAAMjlG,MACvBwwO,EAAOxrO,QAAQ6hS,KAAgBA,EAAaA,EAAW,IACvDp9Q,GAAOo9Q,CACT,IACA,IAAIC,EAAYF,EAAS5mS,MAErBwwO,EAAOxrO,QAAQ8hS,KACjBA,EAAYA,EAAU,KAGP,MAAbA,GAAqB75R,MAAM65R,MAC7BA,EAAYr9Q,GAIVq9Q,EAAY,IACdA,EAAY,GAGdt2D,EAAOxrO,QAAQ4hS,EAAS5mS,OAAS4mS,EAAS5mS,MAAM,GAAK8mS,EAAYF,EAAS5mS,MAAQ8mS,CACpF,CAEAznS,EAAOD,QAAUusB,C,iCC3MjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBygO,EAAYzgO,EAAQ,OAEpB49Q,EAAgB59Q,EAAQ,MAExBkpO,EAAalpO,EAAQ,OAErB05O,EAAU15O,EAAQ,OAElBqgR,EAAa3mC,EAAQ2mC,WAoBrBC,EAAsB,qBACtBC,EAAe9/C,EAAUvlI,OAAO,CAClCl/G,KAAM,WACNkzD,KAAM,WAAa,EACnBv4D,OAAQ,SAAUy0O,EAAalB,EAAS/nI,EAAK6oI,GAC3C,IAAI/wO,EAAOzC,KACXA,KAAK4zO,YAAcA,EACnB5zO,KAAK2qG,IAAMA,EACX3qG,KAAK0yO,QAAUA,EACf,IAAIzzN,EAAO20N,EAAY7oI,UACnBy8L,EAAcvoR,EAAK6lQ,KAAK5sP,KACxB8wQ,EAAUp1D,EAAY60D,cACtBvtP,EAAQl7C,KAAKk7C,MACbqtP,EAAyB30D,EAAY1wO,IAAI,0BACzCs0P,EAAc,GAClBwxC,EAAQtgC,UAAS,SAAUttL,GACzBo8K,EAAYvzP,KAAKm3E,EACnB,IACA,IAAI28K,EAAc/3P,KAAKipS,cAAgB,GAIvC,GAHAC,EAAW1xC,EAAaO,GACxBoxC,EAAa3B,EAAawB,GAEtBx1D,GAAWA,EAAQizB,WAAajzB,EAAQizB,UAAUgK,MAAO,CAC3D,IAAIi2B,EAAkB9yD,EAAY8J,WAAW,mBAC7ClK,EAAQizB,UAAUgK,MAAM2F,WAAWswB,EACrC,MAAO,GAAIlzD,GAAWA,EAAQ41D,YAAa,CACzC,IAAI34B,EAAQzwQ,KAAKqpS,cAEZ54B,GAAS+2B,EAAYzoN,SAAS/8E,SACjCyuQ,EAAQ+2B,EAAYzoN,SAAS,GAAG0xL,OAG9BA,GACFA,EAAM4F,UAEV,CAMA,SAAS6yB,EAAW1xC,EAAaO,GAO/B,SAAS1gG,EAAOj8E,GACd,OAAOA,EAAKyyL,OACd,CAEA,SAASy7B,EAAYC,EAAOC,GAC1B,IAAIjkM,EAAmB,MAATgkM,EAAgB,KAAO/xC,EAAY+xC,GAC7CE,EAAmB,MAATD,EAAgB,KAAOzxC,EAAYyxC,GACjDE,EAAankM,EAASkkM,EACxB,CAd2B,IAAvBjyC,EAAYx1P,QAAuC,IAAvB+1P,EAAY/1P,QAI5C,IAAI0vP,EAAWqG,EAAaP,EAAangG,EAAQA,GAAQ92J,IAAI+oS,GAAatyQ,OAAOsyQ,GAAa1sN,OAAO01J,EAAOuD,MAAMyzD,EAAa,OAAO/sJ,SAWxI,CAEA,SAASmtJ,EAAankM,EAASkkM,GAM7B,GALKlB,IAA0BhjM,GAAYA,EAAQvB,aAEjDuB,EAAU,MAGRA,IAAYiiM,GAAeiC,IAAYjC,EACzC,GAAIiC,GAAWA,EAAQh5B,MACjBlrK,GAEFkkM,EAAQh5B,MAAM1W,YAAW,EAAOx0J,EAAS,SAAUquI,EAAalB,GAEhEzzN,EAAKw7N,iBAAiBl1I,EAAQsuI,UAAW41D,EAAQh5B,QAGjDk5B,EAAWF,QAER,GAAIlkM,EAAS,CAElB,IAAIkrK,EAAQ,IAAI21B,EAAc7gM,EAASquI,EAAalB,GACpDx3L,EAAM36C,IAAIkwQ,GAEVxxP,EAAKw7N,iBAAiBl1I,EAAQsuI,UAAW48B,EAC3C,CAEJ,CAEA,SAASk5B,EAAWvuN,GACbA,GAIDA,EAAKq1L,QACPv1N,EAAM0hC,OAAOxB,EAAKq1L,OAClBr1L,EAAKq1L,MAAQ,KAEjB,CAEA,SAAS04B,EAAa3B,EAAariB,GACjC,GAAIA,EAASpxJ,MAAQ,EAAG,CAElBtxH,EAAK4mS,aAEP5mS,EAAK4mS,aAAatvC,YAAW,EAAOytC,EAAa,SAAU5zD,EAAalB,IAGxEjwO,EAAK4mS,aAAe,IAAIjD,EAAcoB,EAAa5zD,EAAalB,GAChEx3L,EAAM36C,IAAIkC,EAAK4mS,eAGblkB,EAAS1U,MAAMm5B,eACjBzkB,EAAS1U,MAAMz0L,IAAI,QAASmpM,EAAS1U,MAAMm5B,eAG7C,IAAIvmR,EAAQ,SAAUpd,GACpBxD,EAAKonS,YAAY1kB,EAASlkL,WAC5B,EAEAkkL,EAAS1U,MAAMm5B,cAAgBvmR,EAC/B5gB,EAAK4mS,aAAa5lO,GAAG,QAASpgD,EAChC,MAAW5gB,EAAK4mS,eAEdnuP,EAAM0hC,OAAOn6E,EAAK4mS,cAClB5mS,EAAK4mS,aAAe,KAExB,CAvFArpS,KAAK2mS,cAEL3mS,KAAKipS,aAAezxC,CAsFtB,EACAhc,QAAS,WAAa,EAKtBmrD,YAAa,WACX,IAAIlkS,EAAOzC,KAEPqjB,EAAQ,SAAUpd,GACpB,IAAI6jS,GAAc,EACd3kB,EAAW1iR,EAAKmxO,YAAY60D,cAChCtjB,EAASzc,UAAS,SAAUttL,GAC1B,IAAK0uN,GAAe1uN,EAAKq1L,OAASr1L,EAAKq1L,MAAMzY,QAAQ,KAAO/xP,EAAEP,OAAQ,CACpE,IAAI4iS,EAAYltN,EAAKo+J,WAAWt2O,IAAI,aAEpC,GAAkB,eAAdolS,EACF7lS,EAAKonS,YAAYzuN,QACZ,GAAkB,SAAdktN,EAAsB,CAC/B,IAAIluD,EAAYh/J,EAAKo+J,WACjBkmC,EAAOtlC,EAAUl3O,IAAI,QAEzB,GAAIw8Q,EAAM,CACR,IAAIqqB,EAAa3vD,EAAUl3O,IAAI,UAAU,IAAS,SAClD2lS,EAAWnpB,EAAMqqB,EACnB,CACF,CAEAD,GAAc,CAChB,CACF,GACF,EAEI9pS,KAAKk7C,MAAM0uP,eACb5pS,KAAKk7C,MAAM8gC,IAAI,QAASh8E,KAAKk7C,MAAM0uP,eAGrC5pS,KAAKk7C,MAAMuoB,GAAG,QAASpgD,GACvBrjB,KAAKk7C,MAAM0uP,cAAgBvmR,CAC7B,EAKAwmR,YAAa,SAAUzuN,GACjBA,IAASp7E,KAAK4zO,YAAY60D,eAC5BzoS,KAAK2qG,IAAIi9J,eAAe,CACtBpjQ,KAAMskS,EACN1qO,KAAMp+D,KAAK6N,IACXkmO,SAAU/zO,KAAK4zO,YAAYpqO,GAC3Bu7Q,WAAY3pM,GAGlB,EAKA6gN,aAAc,SAAUjsR,EAAO4jO,GAC7B,IAAIo2D,EAAWp2D,EAAY7oI,UACvBw+I,EAAaygD,EAASltD,cAAc,GAExC,GAAIyM,EAAY,CACd,IAAI5jL,EAAK31D,EAAM,GAAKu5O,EAAWr6N,GAC3B02C,EAAK51D,EAAM,GAAKu5O,EAAWp6N,GAC3Bkb,EAASlkC,KAAK2iB,KAAK68C,EAAKA,EAAKC,EAAKA,GACtC,OAAOv7B,GAAUk/M,EAAWx8N,GAAKsd,GAAUk/M,EAAWpN,EACxD,CACF,IAEE1uN,EAAWs7Q,EACf5nS,EAAOD,QAAUusB,C,wBClOjB,IAAI0lN,EAAU3qN,EAAQ,OAElByhR,EAASzhR,EAAQ,OAwBjBsgR,EAAsB,qBAC1B31D,EAAQI,eAAe,CACrB/uO,KAAMskS,EACN9xQ,OAAQ,eACP,SAAUw8M,EAASd,GAOpB,SAASw3D,EAAiB34C,EAAOtvP,GAC/B,IAAIkoS,EAAaF,EAAOrlB,mBAAmBpxC,EAAS,CAACs1D,GAAsBv3C,GAE3E,GAAI44C,EAAY,CACd,IAAIC,EAAiB74C,EAAMk3C,cAEvB2B,IACF52D,EAAQr/I,UAAY81M,EAAO/kB,cAAcklB,EAAgBD,EAAW/uN,MAAQ,SAAW,aAGzFm2K,EAAM82C,cAAc8B,EAAW/uN,KACjC,CACF,CAlBAs3J,EAAQe,cAAc,CACpBC,SAAU,SACVC,QAAS,WACT9yI,MAAO2yI,GACN02D,EAeL,IACA,IAAIG,EAAmB,oBACvBl3D,EAAQI,eAAe,CACrB/uO,KAAM6lS,EACNrzQ,OAAQ,eACP,SAAUw8M,EAASd,GAOpB,SAAS43D,EAAgB/4C,EAAOtvP,GAC9B,IAAIkoS,EAAaF,EAAOrlB,mBAAmBpxC,EAAS,CAAC62D,GAAmB94C,GAEpE44C,IACF32D,EAAQizB,UAAY0jC,EAAW/uN,KAEnC,CAZAs3J,EAAQe,cAAc,CACpBC,SAAU,SACVC,QAAS,WACT9yI,MAAO2yI,GACN82D,EASL,IACA,IAAIC,EAAqB,sBACzBp3D,EAAQI,eAAe,CACrB/uO,KAAM+lS,EACNvzQ,OAAQ,eACP,SAAUw8M,EAASd,GAOpB,SAAS83D,EAAkBj5C,EAAOtvP,GAChCuxO,EAAQ41D,aAAc,CACxB,CARA12D,EAAQe,cAAc,CACpBC,SAAU,SACVC,QAAS,WACT9yI,MAAO2yI,GACNg3D,EAKL,G,wBCpFA,IAAI/oD,EAAUj5N,EAAQ,OAElBk5N,EAAeD,EAAQC,aAEvBpP,EAAS9pN,EAAQ,OAqBjB2zQ,EAASh2R,KAAK40B,GAAK,IAEvB,SAAStN,EAAS2lN,EAAYV,EAAS/nI,EAAK6oI,GAC1Cd,EAAQkY,iBAAiBxX,GAAY,SAAUQ,GAC7C,IAAInkM,EAASmkM,EAAY1wO,IAAI,UACzBmnC,EAASupM,EAAY1wO,IAAI,UAExBovO,EAAOxrO,QAAQujC,KAClBA,EAAS,CAAC,EAAGA,IAGVioM,EAAOxrO,QAAQ2oC,KAClBA,EAAS,CAACA,EAAQA,IAGpB,IAAIjH,EAAQmiE,EAAI03I,WACZ55M,EAASkiE,EAAI23I,YACbh5J,EAAOnjF,KAAKyI,IAAI45B,EAAOC,GACvBvZ,EAAKwyN,EAAajyM,EAAO,GAAIjH,GAC7BrZ,EAAKuyN,EAAajyM,EAAO,GAAIhH,GAC7B0zM,EAAKuF,EAAar3M,EAAO,GAAIi/C,EAAO,GACpCv8D,EAAI20N,EAAar3M,EAAO,GAAIi/C,EAAO,GACnCzpD,GAAc+zM,EAAY1wO,IAAI,cAAgBi5R,EAC9C/B,EAAWxmD,EAAY1wO,IAAI,YAAci5R,EACzCqL,EAAc5zD,EAAY7oI,UAAU+5K,KAAK5sP,KACzC8xQ,EAAWp2D,EAAY60D,cACvBgC,EAAYT,EAASj2K,MACrBluG,EAAO+tN,EAAY1wO,IAAI,QAEf,MAAR2iB,GACF6kR,EAAaV,EAAUnkR,GAGzB,IAAIs4Q,EAAiB,EACrB7rD,EAAO56H,KAAKsyL,EAASjrN,UAAU,SAAUgoB,IACtCh4F,MAAMg4F,EAAM/C,aAAem6L,GAC9B,IACA,IAAI5yQ,EAAMy+Q,EAAShmM,WAEfo6L,EAAaj4R,KAAK40B,IAAMxP,GAAO4yQ,GAAkB,EACjDwM,EAAmBX,EAASj2K,MAAQ,EACpC+/D,EAASk2G,EAASvhQ,QAAUkiQ,GAAoB,EAAI,GACpDC,GAAa79Q,EAAIovN,IAAOroD,GAAU,GAClCjB,EAAY+gD,EAAY1wO,IAAI,aAC5Bw3R,EAAmB9mD,EAAY1wO,IAAI,oBAInC+wF,EAAM4+F,EAAY,GAAK,EAMvBg4G,EAAa,SAAUzvN,EAAMv7C,GAC/B,GAAKu7C,EAAL,CAIA,IAAIt7C,EAAWD,EAEf,GAAIu7C,IAASosN,EAAa,CAExB,IAAI1lS,EAAQs5E,EAAK4oB,WACbzhD,EAAgB,IAARh3B,GAAamvQ,EAAmB0D,EAAat8R,EAAQs8R,EAE7D77O,EAAQ63O,IACV73O,EAAQ63O,GAMVt6P,EAAWD,EAAao0D,EAAM1xC,EAC9B,IAAIwxE,EAAQ34C,EAAK24C,MAAQ02K,GAAaE,GAAoB,EAAI,GAC1DG,EAAS3uD,EAAKyuD,EAAY72K,EAC1Bg3K,EAAO5uD,EAAKyuD,GAAa72K,EAAQ,GACjCqmH,EAAYh/J,EAAKo+J,WAEM,MAAvBY,EAAUl3O,IAAI,QAChB4nS,EAASppD,EAAatH,EAAUl3O,IAAI,MAAOomF,EAAO,IAG1B,MAAtB8wJ,EAAUl3O,IAAI,OAChB6nS,EAAOrpD,EAAatH,EAAUl3O,IAAI,KAAMomF,EAAO,IAGjDlO,EAAKm0K,UAAU,CACbhtM,MAAOA,EACP1iB,WAAYA,EACZC,SAAUA,EACV+yJ,UAAWA,EACX3jK,GAAIA,EACJC,GAAIA,EACJgtN,GAAI2uD,EACJ/9Q,EAAGg+Q,GAEP,CAGA,GAAI3vN,EAAK2D,UAAY3D,EAAK2D,SAAS/8E,OAAQ,CAEzC,IAAIgpS,EAAe,EACnB14D,EAAO56H,KAAKt8B,EAAK2D,UAAU,SAAU3D,GACnC4vN,GAAgBH,EAAWzvN,EAAMv7C,EAAamrQ,EAChD,GACF,CAEA,OAAOlrQ,EAAWD,CAnDlB,CAoDF,EAGA,GAAI8qQ,EAAkB,CACpB,IAAIG,EAAS3uD,EACT4uD,EAAO5uD,EAAKyuD,EACZroP,EAAkB,EAAVp8C,KAAK40B,GACjBysQ,EAAYj4C,UAAU,CACpBhtM,MAAOA,EACP1iB,WAAYA,EACZC,SAAUD,EAAa0iB,EACvBswI,UAAWA,EACX3jK,GAAIA,EACJC,GAAIA,EACJgtN,GAAI2uD,EACJ/9Q,EAAGg+Q,GAEP,CAEAF,EAAWb,EAAUnqQ,EACvB,GACF,CASA,SAAS6qQ,EAAatvN,EAAM6vN,GAC1B,IAAIlsN,EAAW3D,EAAK2D,UAAY,GAChC3D,EAAK2D,SAAWl5D,EAAKk5D,EAAUksN,GAE3BlsN,EAAS/8E,QACXswO,EAAO56H,KAAKt8B,EAAK2D,UAAU,SAAUgoB,GACnC2jM,EAAa3jM,EAAOkkM,EACtB,GAEJ,CAUA,SAASplR,EAAKk5D,EAAUmsN,GACtB,GAAyB,oBAAdA,EACT,OAAOnsN,EAASl5D,KAAKqlR,GAErB,IAAID,EAAsB,QAAdC,EACZ,OAAOnsN,EAASl5D,MAAK,SAAUljB,EAAGC,GAChC,IAAIgqG,GAAQjqG,EAAEqhG,WAAaphG,EAAEohG,aAAeinM,EAAQ,GAAK,GACzD,OAAgB,IAATr+L,GAAcjqG,EAAEkxO,UAAYjxO,EAAEixO,YAAco3D,GAAS,EAAI,GAAKr+L,CACvE,GAEJ,CAEAzrG,EAAOD,QAAUusB,C,wBCnMjB,IAAI0lN,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAER,IAAI2iR,EAAmB3iR,EAAQ,OAE3B4iR,EAAmB5iR,EAAQ,OAE3B8xO,EAAa9xO,EAAQ,OAoBzB2qN,EAAQsC,eAAe01D,GACvBh4D,EAAQ4C,eAAeq1D,GACvBj4D,EAAQonB,kBAAkBD,EAAW,c,iCClCrC,IAAI1a,EAAcp3N,EAAQ,OAEtB62P,EAAmB72P,EAAQ,OAE3B23P,EAAmB33P,EAAQ,OAE3B43P,EAAyBD,EAAiBC,uBAE1Cne,EAAOz5O,EAAQ,OAEf8pN,EAAS9pN,EAAQ,OAEjBiyO,EAASjyO,EAAQ,OAEjBk6Q,EAAYjoC,EAAOioC,UAEnBxgC,EAAU15O,EAAQ,OAElB25O,EAAaD,EAAQC,WAErBtH,EAAuBryO,EAAQ,OAoB/B6iR,EAAkB,EAClBC,EAAmB1rD,EAAYl8H,OAAO,CACxCl/G,KAAM,oBACN0xO,aAAc,CAAC,cAMfs+C,QAAS,KAKT98N,KAAM,SAAU3sB,GAEdugQ,EAAiB/pD,WAAWvhP,KAAM,OAAQ+C,WAI1C/C,KAAKg7P,qBAAuB,IAAIH,EAAqBvoB,EAAOv1N,KAAK/c,KAAK+qG,QAAS/qG,MAAOsyO,EAAOv1N,KAAK/c,KAAKi7P,WAAYj7P,MACrH,EAQAurS,QAAS,SAAUtsR,GACjB,IAAIusR,EAAgBvsR,EAAKjd,OASrBypS,EAAgB,CAAC,EAEjBthD,EAAcu4C,EAAUzjR,GAAM,SAAUuG,GAK1C,OAJKimR,EAAcnlS,eAAekf,EAAK,MACrCimR,EAAcjmR,EAAK,KAAO,GAGrBA,EAAK,EACd,IACIkmR,EAAU,GACdvhD,EAAY26C,QAAQptL,MAAK,SAAUxpB,EAAOrqF,GACxC6nS,EAAQznS,KAAK,CACXQ,KAAMZ,EACN8nS,SAAUz9M,GAEd,IAGA,IAFA,IAAI09M,EAAWF,EAAQ1pS,OAEd6I,EAAI,EAAGA,EAAI+gS,IAAY/gS,EAAG,CAGjC,IAFA,IAAIpG,EAAOinS,EAAQ7gS,GAAGpG,KAEbwG,EAAI,EAAGA,EAAIygS,EAAQ7gS,GAAG8gS,SAAS3pS,SAAUiJ,EAAG,CACnD,IAAI4gS,EAAYH,EAAQ7gS,GAAG8gS,SAAS1gS,GAAG,GACvCwgS,EAAcI,GAAahhS,CAC7B,CAEA,IAAK,IAAIghS,KAAaJ,EAChBA,EAAcnlS,eAAeulS,IAAcJ,EAAcI,KAAehhS,IAC1E4gS,EAAcI,GAAahhS,EAC3BoU,EAAKusR,GAAiB,GACtBvsR,EAAKusR,GAAe,GAAKK,EACzB5sR,EAAKusR,GAAe,GAAK,EACzBvsR,EAAKusR,GAAe,GAAK/mS,EACzB+mS,IAGN,CAEA,OAAOvsR,CACT,EAQA6gO,eAAgB,SAAU/0M,EAAQ2nM,GAiBhC,IAhBA,IAAIo5D,EAAkBp5D,EAAQq5D,gBAAgB,CAC5Cr4D,SAAU,aACVzxO,MAAOjC,KAAKkD,IAAI,mBAChBsG,GAAIxJ,KAAKkD,IAAI,kBACZ,GACCizC,EAAW21P,EAAgB5oS,IAAI,QAE/B8oS,EAAa15D,EAAOtiN,OAAO+a,EAAO9rB,MAAM,SAAU4jC,GACpD,YAAuBngD,IAAhBmgD,EAAS,EAClB,IAEI5jC,EAAOjf,KAAKurS,QAAQS,GAAc,IAClCvpB,EAAW,GACX+R,EAAUx0R,KAAKw0R,QAAUliD,EAAO6hD,gBAChC5rQ,EAAQ,EAEHvkB,EAAI,EAAGA,EAAIib,EAAKjd,SAAUgC,EACjCy+Q,EAASx+Q,KAAKgb,EAAKjb,GAAGqnS,IAEjB7W,EAAQtxR,IAAI+b,EAAKjb,GAAGqnS,MACvB7W,EAAQhiR,IAAIyM,EAAKjb,GAAGqnS,GAAkB9iR,GACtCA,KAIJ,IAAIm6P,EAAiBrD,EAAiBpgQ,EAAM,CAC1Ck8O,gBAAiB,CAAC,UAClB8wC,iBAAkB,CAAC,CACjBxnS,KAAM,OACND,KAAM47Q,EAAuBjqO,IAC5B,CACD1xC,KAAM,QACND,KAAM,SACL,CACDC,KAAM,OACND,KAAM,YAERm0R,aAAc,CACZhmL,OAAQ,EACR7wG,MAAO,EACPigR,SAAU,KAGV9qQ,EAAO,IAAIgrP,EAAKygB,EAAgB1iR,MAEpC,OADAiX,EAAK4nD,SAAS5/C,GACPhI,CACT,EAQAi1R,eAAgB,WAKd,IAJA,IAAIjtR,EAAOjf,KAAK+qG,UACZohM,EAAWltR,EAAKsJ,QAChB6jR,EAAW,GAENpoS,EAAI,EAAGA,EAAImoS,IAAYnoS,EAC9BooS,EAASpoS,GAAKA,EAGhB,IAAIqoS,EAAUptR,EAAKysO,aAAa,UAE5BvB,EAAcu4C,EAAU0J,GAAU,SAAUnqS,GAC9C,OAAOgd,EAAK/b,IAAI,OAAQjB,EAC1B,IACIqqS,EAAc,GAUlB,OATAniD,EAAY26C,QAAQptL,MAAK,SAAUxpB,EAAOrqF,GACxCqqF,EAAMroE,MAAK,SAAU0mR,EAAQC,GAC3B,OAAOvtR,EAAK/b,IAAImpS,EAASE,GAAUttR,EAAK/b,IAAImpS,EAASG,EACvD,IACAF,EAAYroS,KAAK,CACfQ,KAAMZ,EACNmzI,QAAS9oD,GAEb,IACOo+M,CACT,EAUAG,mBAAoB,SAAUx6J,EAAKnwI,EAAOi2O,GACnCzF,EAAOxrO,QAAQmrI,KAClBA,EAAMA,EAAM,CAACA,GAAO,IAStB,IANA,IAIIy6J,EAJAztR,EAAOjf,KAAK+qG,UACZuhM,EAActsS,KAAKksS,iBACnBl1J,EAAU,GACV40J,EAAWU,EAAYtqS,OAGlBgC,EAAI,EAAGA,EAAI4nS,IAAY5nS,EAAG,CAKjC,IAJA,IAAIgwL,EAAUz3H,OAAO+pC,UACjBqmM,GAAc,EACdx+Q,EAAWm+Q,EAAYtoS,GAAGgzI,QAAQh1I,OAE7BiJ,EAAI,EAAGA,EAAIkjB,IAAYljB,EAAG,CACjC,IAAI2hS,EAAW3tR,EAAK/b,IAAI+uI,EAAI,GAAIq6J,EAAYtoS,GAAGgzI,QAAQ/rI,IACnDg/E,EAAO9jF,KAAK6iB,IAAI4jR,EAAW9qS,GAE3BmoF,GAAQ+pG,IACV04G,EAAeE,EACf54G,EAAU/pG,EACV0iN,EAAaL,EAAYtoS,GAAGgzI,QAAQ/rI,GAExC,CAEA+rI,EAAQ/yI,KAAK0oS,EACf,CAEA,MAAO,CACLE,YAAa71J,EACb01J,aAAcA,EAElB,EAMA1oC,cAAe,SAAUnwB,GACvB,IAAI50N,EAAOjf,KAAK+qG,UACZ+hM,EAAW7tR,EAAK60N,QAAQD,GACxBk5D,EAAY9tR,EAAK/b,IAAI+b,EAAKysO,aAAa,SAAU7X,GAMrD,OAJI9kO,MAAMg+R,IAA2B,MAAbA,KACtBA,EAAY,KAGP5qC,EAAW2qC,EAAW,MAAQC,EACvC,EACAv2D,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EACHs8J,iBAAkB,aAElBpmM,YAAa,CAAC,MAAO,OAErB++P,gBAAiB,EACjBhqI,gBAAiB,SACjB9zH,MAAO,CACL0rP,OAAQ,EACRltP,MAAM,EACN5b,SAAU,OACVlB,MAAO,OACPuJ,SAAU,IAEZumN,SAAU,CACRxxM,MAAO,CACLxB,MAAM,OAKVjgB,EAAW69Q,EACfnqS,EAAOD,QAAUusB,C,iCCnSjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8+P,EAAQ9+P,EAAQ,MAEhBqzO,EAAUyrB,EAAMzrB,QAEhB/kB,EAAUtuN,EAAQ,OAElBoH,EAAQpH,EAAQ,OAEhBzL,EAAO6S,EAAM7S,KACb2mG,EAAS9zF,EAAM8zF,OAEfguI,EAAalpO,EAAQ,OAoBrBiF,EAAW0lN,EAAQkF,gBAAgB,CACrC7zO,KAAM,aACNkzD,KAAM,WACJ13D,KAAKitS,QAAU,EACjB,EACA9tS,OAAQ,SAAUy0O,EAAalB,EAAS/nI,GACtC,IAAI1rF,EAAO20N,EAAY7oI,UACnB7vD,EAAQl7C,KAAKk7C,MACboxP,EAAc14D,EAAYs4D,iBAC1Bt2G,EAAa32K,EAAKk5N,UAAU,cAC5Bl7M,EAAO24J,EAAW34J,KAClBgR,EAAc2nJ,EAAW3nJ,YAG7B,SAASi/P,EAAU1nR,GACjB,OAAOA,EAAK/gB,IACd,CAJAy2C,EAAMrkB,KAAK,WAAY,CAAC,EAAGoG,EAAK0B,EAAIsP,EAAY,KAMhD,IAAIk/P,EAAa,IAAIz7C,EAAW1xP,KAAKotS,eAAiB,GAAId,EAAaY,EAAWA,GAC9EG,EAAkB,CAAC,EAGvB,SAASjyR,EAAQuW,EAAQw1E,EAAKuiJ,GAC5B,IAAI4jD,EAAkBttS,KAAKitS,QAE3B,GAAe,WAAXt7Q,EAAJ,CAUA,IALA,IAEIf,EAaAiW,EACAlK,EAhBA4wQ,EAAU,GACV7lB,EAAU,GAEV1wI,EAAUs1J,EAAYnlM,GAAK6vC,QAEtB/rI,EAAI,EAAGA,EAAI+rI,EAAQh1I,OAAQiJ,IAAK,CACvC,IAAIk9F,EAASlpF,EAAK69N,cAAc9lG,EAAQ/rI,IACpC6U,EAAIqoF,EAAOroF,EACXy/K,EAAKp3F,EAAOo3F,GACZ5gK,EAAIwpE,EAAOxpE,EACf4uQ,EAAQtpS,KAAK,CAAC6b,EAAGy/K,IACjBmoF,EAAQzjR,KAAK,CAAC6b,EAAGy/K,EAAK5gK,IACtB/N,EAAQ3R,EAAKo+N,cAAcrmG,EAAQ/rI,GAAI,QACzC,CAIA,IAAIuiS,EAAavuR,EAAK69N,cAAc9lG,EAAQ,IACxCojG,EAAYn7N,EAAKo7N,aAAarjG,EAAQ/rI,EAAI,IAC1C88O,EAAa3N,EAAUZ,SAAS,SAChCohD,EAAS7yC,EAAW7kP,IAAI,UAE5B,GAAe,QAAXyuB,EAAkB,CACpB,IAAI87Q,EAAaJ,EAAgBlmM,GAAO,IAAI2vI,EAAQM,MACpDvwM,EAAU,IAAIg1N,EAAQ,CACpBrmO,MAAO,CACL9J,OAAQ6hR,EACRviB,gBAAiBtD,EACjBr1O,OAAQ,GACRs5O,gBAAiB,GACjBqE,kBAAkB,GAEpB1zC,GAAI,IAEN3/M,EAAO,IAAIm6M,EAAQoc,KAAK,CACtBtnP,MAAO,CACLkU,EAAG0tR,EAAW1tR,EAAI86Q,EAClBj8P,EAAG6uQ,EAAWjuG,GAAKiuG,EAAW7uQ,EAAI,KAGtC8uQ,EAAWltS,IAAIsmC,GACf4mQ,EAAWltS,IAAIo8B,GACfue,EAAM36C,IAAIktS,GACV5mQ,EAAQy0M,YAAYm+C,EAAoB5yP,EAAQmiO,kBAAmBp1B,GAAa,WAC9E/sM,EAAQwyM,gBACV,IACF,KAAO,CACDo0D,EAAaH,EAAgB5jD,GACjC7iN,EAAU4mQ,EAAWz1C,QAAQ,GAC7Br7N,EAAO8wQ,EAAWz1C,QAAQ,GAC1B98M,EAAM36C,IAAIktS,GACVJ,EAAgBlmM,GAAOsmM,EACvB32D,EAAQ+D,YAAYh0M,EAAS,CAC3BrR,MAAO,CACL9J,OAAQ6hR,EACRviB,gBAAiBtD,IAElB9zC,GACHkD,EAAQ+D,YAAYl+M,EAAM,CACxB/wB,MAAO,CACLkU,EAAG0tR,EAAW1tR,EAAI86Q,EAClBj8P,EAAG6uQ,EAAWjuG,GAAKiuG,EAAW7uQ,EAAI,IAEnCi1M,EACL,CAEA,IAAI85D,EAAsBtzD,EAAUZ,SAAS,sBACzC+D,EAAiBnD,EAAUZ,SAAS,aACxC1C,EAAQmf,aAAat5N,EAAK/wB,MAAOm8O,EAAY,CAC3CprN,KAAMorN,EAAW7kP,IAAI,QAAU0wO,EAAYsiB,kBAAkBl/G,EAAQ/rI,EAAI,GAAI,WAAagU,EAAK60N,QAAQ98F,EAAQ/rI,EAAI,IAAM,KACzH8xP,kBAAmB,WAErBl2N,EAAQglJ,SAASnoE,EAAO,CACtB35F,KAAM6G,GACL2sN,EAAeiC,aAAa,CAAC,YAChC1I,EAAQ8G,cAAc/2M,EAAS6mQ,EAAoBluD,eA7EnD,MAFEtkM,EAAM0hC,OAAO0wN,EAAgBnmM,GAgFjC,CAtFAgmM,EAAW5sS,IAAIwc,EAAK3B,EAASpb,KAAM,QAAQg3B,OAAOja,EAAK3B,EAASpb,KAAM,WAAW48E,OAAO7/D,EAAK3B,EAASpb,KAAM,WAAWu8I,UAwFvHv8I,KAAKotS,cAAgBd,EACrBtsS,KAAKitS,QAAUI,CACjB,EACA7xD,QAAS,WAAa,IAIxB,SAASi+C,EAAoBx8P,EAAM22M,EAAaj7J,GAC9C,IAAI+gN,EAAS,IAAI5iD,EAAQuF,KAAK,CAC5B7mN,MAAO,CACL1V,EAAGmd,EAAKnd,EAAI,GACZ6e,EAAG1B,EAAK0B,EAAI,GACZ6J,MAAO,EACPC,OAAQxL,EAAKwL,OAAS,MAS1B,OANAquM,EAAQkX,UAAU0rC,EAAQ,CACxBlkQ,MAAO,CACLgT,MAAOvL,EAAKuL,MAAQ,GACpBC,OAAQxL,EAAKwL,OAAS,KAEvBmrM,EAAaj7J,GACT+gN,CACT,CAEAv4R,EAAOD,QAAUusB,C,iCCtKjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBmlR,EAAanlR,EAAQ,OAoBzB,SAASiF,EAASilN,EAAS/nI,GACzB+nI,EAAQkY,iBAAiB,cAAc,SAAUhX,GAC/C,IAAI30N,EAAO20N,EAAY7oI,UACnB4H,EAASihI,EAAYS,iBACrBz+C,EAAa,CAAC,EAEd34J,EAAO01E,EAAO+sI,UAClB9pD,EAAW34J,KAAOA,EAClB,IAAIgR,EAAc2lM,EAAY1wO,IAAI,eAC9BkoC,EAAOunE,EAAOw+J,UAGlB,GAFAv7E,EAAW3nJ,YAAcA,EAEL,eAAhB7C,EAAKwG,OAAyB,CAChC3D,EAAY,GAAK0/P,EAAWjsD,aAAazzM,EAAY,GAAIhR,EAAKwL,QAC9DwF,EAAY,GAAK0/P,EAAWjsD,aAAazzM,EAAY,GAAIhR,EAAKwL,QAC9D,IAAIA,EAASxL,EAAKwL,OAASwF,EAAY,GAAKA,EAAY,GACxDk9P,EAAiBlsR,EAAM20N,EAAanrM,EACtC,KAAO,CACLwF,EAAY,GAAK0/P,EAAWjsD,aAAazzM,EAAY,GAAIhR,EAAKuL,OAC9DyF,EAAY,GAAK0/P,EAAWjsD,aAAazzM,EAAY,GAAIhR,EAAKuL,OAC9D,IAAIA,EAAQvL,EAAKuL,MAAQyF,EAAY,GAAKA,EAAY,GACtDk9P,EAAiBlsR,EAAM20N,EAAaprM,EACtC,CAEAvpB,EAAKswO,UAAU,aAAc35D,EAC/B,GACF,CAUA,SAASu1G,EAAiBlsR,EAAM20N,EAAanrM,GAC3C,GAAKxpB,EAAKsJ,QAyBV,IArBA,IAmBIqlR,EAnBA/6D,EAAWe,EAAYS,iBAEvBi4D,EAAc14D,EAAYs4D,iBAE1BG,EAAUptR,EAAKysO,aAAa,UAC5BlJ,EAAWvjO,EAAKysO,aAAa,SAC7BmiD,EAAcv7D,EAAO5oN,IAAI4iR,GAAa,SAAUwB,GAClD,OAAOx7D,EAAO5oN,IAAIokR,EAAY92J,SAAS,SAAU7vC,GAC/C,IAAIm5B,EAAKuyG,EAASiC,YAAY71N,EAAK/b,IAAImpS,EAASllM,IAEhD,OADAm5B,EAAG,GAAKrhH,EAAK/b,IAAIs/O,EAAUr7I,GACpBm5B,CACT,GACF,IACIzc,EAAOkqL,EAAgBF,GACvBG,EAAWnqL,EAAK07E,GAChBylG,EAAKv8P,EAASo7E,EAAKl1G,IAEnBoR,EAAIusR,EAAYtqS,OAChBwX,EAAI8yR,EAAY,GAAGt1J,QAAQh1I,OAGtBiJ,EAAI,EAAGA,EAAIuO,IAAKvO,EAAG,CAC1B2iS,EAASI,EAAS/iS,GAAK+5R,EACvB/lR,EAAKktO,cAAcmgD,EAAY,GAAGt1J,QAAQ/rI,GAAI,CAC5CgjS,WAAY,EACZnuR,EAAG+tR,EAAY,GAAG5iS,GAAG,GACrBs0L,GAAIquG,EACJjvQ,EAAGkvQ,EAAY,GAAG5iS,GAAG,GAAK+5R,IAG5B,IAAK,IAAIhhS,EAAI,EAAGA,EAAI+b,IAAK/b,EACvB4pS,GAAUC,EAAY7pS,EAAI,GAAGiH,GAAG,GAAK+5R,EACrC/lR,EAAKktO,cAAcmgD,EAAYtoS,GAAGgzI,QAAQ/rI,GAAI,CAC5CgjS,WAAYjqS,EACZ8b,EAAG+tR,EAAY7pS,GAAGiH,GAAG,GACrBs0L,GAAIquG,EACJjvQ,EAAGkvQ,EAAY7pS,GAAGiH,GAAG,GAAK+5R,GAGhC,CACF,CAUA,SAAS+I,EAAgB9uR,GASvB,IARA,IAAI2sR,EAAW3sR,EAAKjd,OAChBmsB,EAAWlP,EAAK,GAAGjd,OACnBksS,EAAO,GACP3uG,EAAK,GACL5wL,EAAM,EAENk1G,EAAO,CAAC,EAEH7/G,EAAI,EAAGA,EAAImqB,IAAYnqB,EAAG,CACjC,IAAK,IAAIiH,EAAI,EAAG0gB,EAAO,EAAG1gB,EAAI2gS,IAAY3gS,EACxC0gB,GAAQ1M,EAAKhU,GAAGjH,GAAG,GAGjB2nB,EAAOhd,IACTA,EAAMgd,GAGRuiR,EAAKjqS,KAAK0nB,EACZ,CAEA,IAAK,IAAI9gB,EAAI,EAAGA,EAAIsjB,IAAYtjB,EAC9B00L,EAAG10L,IAAM8D,EAAMu/R,EAAKrjS,IAAM,EAG5B8D,EAAM,EAEN,IAAK,IAAIH,EAAI,EAAGA,EAAI2f,IAAY3f,EAAG,CACjC,IAAI+c,EAAM2iR,EAAK1/R,GAAK+wL,EAAG/wL,GAEnB+c,EAAM5c,IACRA,EAAM4c,EAEV,CAIA,OAFAs4F,EAAK07E,GAAKA,EACV17E,EAAKl1G,IAAMA,EACJk1G,CACT,CAEA1iH,EAAOD,QAAUusB,C,wBCzJjB,IAAImC,EAAQpH,EAAQ,OAEhB2rQ,EAAgBvkQ,EAAMukQ,cAoB1B,SAAS1mQ,EAASilN,GAChBA,EAAQkY,iBAAiB,cAAc,SAAUhX,GAC/C,IAAI30N,EAAO20N,EAAY7oI,UACnBojM,EAAUv6D,EAAYqnB,aACtBmE,EAAYxrB,EAAY1wO,IAAI,SAC5BkrS,EAASja,IACbl1Q,EAAKy4F,MAAK,SAAUvQ,GAClBinM,EAAO57R,IAAIyM,EAAK02O,YAAYxuJ,GAAMA,EACpC,IACAgnM,EAAQz2L,MAAK,SAAU42K,GACrB,IAAI7pR,EAAO0pS,EAAQr6D,QAAQw6C,GACvB19P,EAAQwuO,GAAWxrB,EAAY4gD,QAAQtxR,IAAIuB,GAAQ,GAAK26P,EAAUp9P,QACtEmsS,EAAQvhD,cAAc0hC,EAAU,QAAS19P,GACzC,IAAIu2E,EAAMinM,EAAOlrS,IAAIorR,GAEV,MAAPnnL,GACFloF,EAAK2tO,cAAczlJ,EAAK,QAASv2E,EAErC,GACF,GACF,CAEAzvB,EAAOD,QAAUusB,C,wBC5CjB,IAAI0lN,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAER,IAAI2wO,EAAe3wO,EAAQ,OAEvB6lR,EAAa7lR,EAAQ,OAoBzB2qN,EAAQ4C,eAAeojB,EAAa,OAAQ,WAC5ChmB,EAAQsC,eAAe44D,E,wBC/BvB,IAAIzuD,EAAcp3N,EAAQ,OAEtBs/Q,EAAOt/Q,EAAQ,OAEf05O,EAAU15O,EAAQ,OAElB25O,EAAaD,EAAQC,WAErBlrB,EAAQzuN,EAAQ,OAoBhBiF,EAAWmyN,EAAYl8H,OAAO,CAChCl/G,KAAM,cACNoxL,WAAY,KAGZo+F,WAAY,MAOZl0C,eAAgB,SAAU/0M,GAExB,IAAI7S,EAAO,CACTzzB,KAAMsmC,EAAOtmC,KACbs6E,SAAUh0C,EAAO9rB,MAEfi3H,EAASnrG,EAAOmrG,QAAU,CAAC,EAC3Bo4J,EAAc,IAAIr3D,EAAM/gG,EAAQl2I,KAAMA,KAAK0yO,SAC3CoyC,EAAOgjB,EAAKK,WAAWjwQ,EAAMl4B,KAAMgjQ,GAEvC,SAASA,EAAWC,GAClBA,EAASC,WAAW,gBAAgB,SAAU3R,EAAOpqJ,GACnD,IAAI/rB,EAAO0pM,EAAKsjB,mBAAmBjhM,GAMnC,OAJK/rB,EAAK2D,SAAS/8E,QAAWo5E,EAAKmzN,WACjCh9C,EAAMxK,YAAcunD,GAGf/8C,CACT,GACF,CAEA,IAAIi9C,EAAY,EAChB1pB,EAAKpc,SAAS,YAAY,SAAUttL,GAC9BA,EAAK24C,MAAQy6K,IACfA,EAAYpzN,EAAK24C,MAErB,IACA,IAAI06K,EAAoB1jQ,EAAO0jQ,kBAC3BC,EAAkBD,GAAqB1jQ,EAAO4jQ,kBAAoB,EAAI5jQ,EAAO4jQ,iBAAmBH,EAMpG,OALA1pB,EAAK5sP,KAAKwwO,SAAS,YAAY,SAAUttL,GACvC,IAAI51D,EAAO41D,EAAKwrN,SAAS3nR,KAAK2kR,eAAexoN,EAAKy4J,WAElDz4J,EAAKmzN,SAAW/oR,GAA0B,MAAlBA,EAAKopR,WAAqBppR,EAAKopR,UAAYxzN,EAAK24C,OAAS26K,CACnF,IACO5pB,EAAK7lQ,IACd,EAMA4vR,UAAW,WACT,IAAIj9P,EAAS5xC,KAAKkD,IAAI,UAQtB,MANe,eAAX0uC,EACFA,EAAS,KACW,aAAXA,IACTA,EAAS,MAGJA,CACT,EACA2iM,QAAS,SAAUn3J,GACjBp9E,KAAK+qC,OAAOqyC,KAAOA,CACrB,EACAk3J,UAAW,SAAU7kM,GACnBzvC,KAAK+qC,OAAO0E,OAASA,CACvB,EAMAu0N,cAAe,SAAUnwB,GACvB,IAAIixC,EAAO9kR,KAAK+qG,UAAU+5K,KACtBgqB,EAAWhqB,EAAK5sP,KAAK6mD,SAAS,GAC9B3D,EAAO0pM,EAAKsjB,mBAAmBv0D,GAC/B/xO,EAAQs5E,EAAK4oB,WACbv/F,EAAO22E,EAAK32E,KAEhB,MAAO22E,GAAQA,IAAS0zN,EACtBrqS,EAAO22E,EAAK6lB,WAAWx8F,KAAO,IAAMA,EACpC22E,EAAOA,EAAK6lB,WAGd,OAAOkhK,EAAW19P,GAAQsK,MAAMjN,IAAmB,MAATA,EAAgB,GAAK,MAAQA,GACzE,EACA00O,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EACHs8J,iBAAkB,OAElBhkM,KAAM,MACNE,IAAK,MACLD,MAAO,MACPE,OAAQ,MAER23D,OAAQ,aAER4mM,UAAW,QACXC,iBAAkB,MAElB9pC,MAAM,EAENC,eAAgB,GAEhB11N,OAAQ,KACR2tC,KAAM,EAGNxrC,OAAQ,KACR3vB,OAAQ,cACR2+N,WAAY,EACZ6tD,mBAAmB,EACnBE,iBAAkB,EAClBr8P,UAAW,CACT1hB,MAAO,OACP4X,MAAO,IACPkjO,UAAW,IAEbnsB,UAAW,CACT3uN,MAAO,iBACPizM,YAAa,UACbh8J,YAAa,KAEf34B,MAAO,CACLxB,MAAM,EACN9c,MAAO,QAETslH,OAAQ,CACNhnG,MAAO,CACLxB,MAAM,IAGVs1H,gBAAiB,SACjB/uD,kBAAmB,IACnBu0L,wBAAyB,OAI7BrnS,EAAOD,QAAUusB,C,iCC3KjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAElBwsP,EAAYxsP,EAAQ,MAEpBymR,EAAgBzmR,EAAQ,OAExB0mR,EAAmBD,EAAcC,iBAEjC/7D,EAAU3qN,EAAQ,OAElB6jP,EAAO7jP,EAAQ,MAEf2jP,EAAO3jP,EAAQ,OAEf88O,EAAa98O,EAAQ,OAErB68O,EAAiB78O,EAAQ,OAEzB+8O,EAAgB/8O,EAAQ,OAExBg9O,EAAsBD,EAAcC,oBAEpC/xN,EAAUjrB,EAAQ,OAIlBi5N,GAFUhuM,EAAQojM,QAERruN,EAAQ,QAElBk5N,EAAeD,EAAQC,aAoBvBytD,EAAYr4D,EAAQ6/B,YAAY,CAClCnhP,MAAO,CACL45Q,YAAa,GACbC,YAAa,GACbz9P,OAAQ,GACR09P,aAAc,IAEhB1jS,MAAO,CACLytB,OAAQ,OACRtP,KAAM,MAERg0N,UAAW,SAAU55O,EAAKqxB,GACxB,IAAI65Q,EAAc75Q,EAAM65Q,YACpBE,EAAWF,EAAYrtS,OACvBotS,EAAc55Q,EAAM45Q,YACpBI,EAAgBH,EAAY,GAC5BI,EAAeJ,EAAYE,EAAW,GAE1C,GAAiB,IAAbA,EAGF,OAFAprS,EAAI8hC,OAAOmpQ,EAAY,GAAIA,EAAY,SACvCjrS,EAAI08B,OAAO2uQ,EAAc,GAAIA,EAAc,IAI7C,IAAI59P,EAASpc,EAAMoc,OACf89P,EAAqB,OAAX99P,GAA8B,OAAXA,EAAkB,EAAI,EACnD+9P,EAAW,EAAID,EACfJ,EAAe5tD,EAAalsN,EAAM85Q,aAAc,GAChDM,EAAW,GACfA,EAASF,GAAWN,EAAYM,GAChCE,EAASD,GAAYP,EAAYO,IAAaF,EAAaE,GAAYP,EAAYO,IAAaL,EAChGnrS,EAAI8hC,OAAOmpQ,EAAY,GAAIA,EAAY,IACvCjrS,EAAI08B,OAAO+uQ,EAAS,GAAIA,EAAS,IACjCzrS,EAAI8hC,OAAOupQ,EAAc,GAAIA,EAAc,IAC3CI,EAASF,GAAWF,EAAcE,GAClCvrS,EAAI08B,OAAO+uQ,EAAS,GAAIA,EAAS,IACjCA,EAASF,GAAWD,EAAaC,GACjCvrS,EAAI08B,OAAO+uQ,EAAS,GAAIA,EAAS,IACjCzrS,EAAI08B,OAAO4uQ,EAAa,GAAIA,EAAa,IAEzC,IAAK,IAAIzrS,EAAI,EAAGA,EAAIurS,EAAW,EAAGvrS,IAAK,CACrC,IAAIgM,EAAQq/R,EAAYrrS,GACxBG,EAAI8hC,OAAOj2B,EAAM,GAAIA,EAAM,IAC3B4/R,EAASF,GAAW1/R,EAAM0/R,GAC1BvrS,EAAI08B,OAAO+uQ,EAAS,GAAIA,EAAS,GACnC,CACF,IAGEniR,EAAW0lN,EAAQkF,gBAAgB,CACrC7zO,KAAM,OAQNkzD,KAAM,SAAUg7K,EAAS/nI,GAKvB3qG,KAAK6vS,SAML7vS,KAAK8vS,WAAa,IAAIh5D,EAAQM,MAM9Bp3O,KAAK4mQ,YAAc,IAAIvB,EAAe16J,EAAIoqJ,SAC1C/0P,KAAK6mQ,gBAAkB,CACrBnhQ,OAAQ1F,KAAKk7C,OAEfl7C,KAAKk7C,MAAM36C,IAAIP,KAAK8vS,WACtB,EACA3wS,OAAQ,SAAUy0O,EAAalB,EAAS/nI,EAAK6oI,GAC3C,IAAIv0N,EAAO20N,EAAY7oI,UACnB6qF,EAAag+C,EAAYh+C,WACzB16I,EAAQl7C,KAAK8vS,WACb3nM,EAASyrI,EAAY1wO,IAAI,UAEd,WAAXilG,EACFjtD,EAAMrkB,KAAK,WAAY,CAAC++J,EAAW91K,EAAI81K,EAAWptJ,MAAQ,EAAGotJ,EAAWj3J,EAAIi3J,EAAWntJ,OAAS,IAEhGyS,EAAMrkB,KAAK,WAAY,CAAC++J,EAAW91K,EAAG81K,EAAWj3J,IAGnD3+B,KAAK+vS,oBAAoBn8D,EAAah+C,EAAYztF,GAElDnoG,KAAKmnQ,kBAAkBvzB,EAAalB,EAAS/nI,GAE7C,IAAIiV,EAAU5/G,KAAKqqK,MACfyoG,EAAc,CAChB27B,kBAAmB76D,EAAY1wO,IAAI,qBACnCilG,OAAQA,EACR4mM,UAAWn7D,EAAY1wO,IAAI,aAC3B8rS,iBAAkBp7D,EAAY1wO,IAAI,oBAClC0uC,OAAQgiM,EAAYi7D,YACpBlqO,UAAWivK,EAAY1wO,IAAI,uBAC3B29O,aAAcjN,EAAY1wO,IAAI,gBAC9B69O,aAAcnN,EAAY1wO,IAAI,gBAC9Bo+O,eAAgB1N,EAAY1wO,IAAI,kBAChCm7Q,cAAc,EACdf,QAAQ,GAEVr+P,EAAK2tF,KAAKgT,GAASr/G,KAAI,SAAU+oP,GAC3Bq1B,EAAgB1/P,EAAMqqO,IAExB0mD,EAAW/wR,EAAMqqO,EAAQ,KAAMpuM,EAAO04L,EAAak/B,EAEvD,IAAG97O,QAAO,SAAUsyN,EAAQI,GAC1B,IAAIF,EAAW5pI,EAAQk7H,iBAAiB4O,GAEnCi1B,EAAgB1/P,EAAMqqO,GAM3B0mD,EAAW/wR,EAAMqqO,EAAQE,EAAUtuM,EAAO04L,EAAak/B,GALrDtpB,GAAYmgD,EAAW/pL,EAAS8pI,EAAQF,EAAUtuM,EAAO04L,EAAak/B,EAM1E,IAAGl2L,QAAO,SAAU8sK,GAClB,IAAIF,EAAW5pI,EAAQk7H,iBAAiB4O,GAMpCF,GACFmgD,EAAW/pL,EAAS8pI,EAAQF,EAAUtuM,EAAO04L,EAAak/B,EAE9D,IAAGv2H,UACHv8I,KAAKiwS,gBAAkBr8D,EAAY1wO,IAAI,kBAEvClD,KAAKknQ,wBAAwBtzB,IAES,IAAlCk/B,EAAY27B,mBACdxvR,EAAKw8N,mBAAkB,SAAU75O,EAAIiyO,GACnCjyO,EAAGo6E,IAAI,SAASvY,GAAG,SAAS,WAC1BknC,EAAIi9J,eAAe,CACjBpjQ,KAAM,wBACNuvO,SAAUH,EAAYpqO,GACtBqqO,UAAWA,GAEf,GACF,IAGF7zO,KAAKqqK,MAAQprJ,CACf,EACA8wR,oBAAqB,SAAUn8D,GAC7B,IAAI30N,EAAO20N,EAAY7oI,UACnBr/E,EAAS,GACbzM,EAAKy4F,MAAK,SAAUvQ,GAClB,IAAIgB,EAASlpF,EAAK69N,cAAc31I,IAE5BgB,GAAWp5F,MAAMo5F,EAAOroF,IAAO/Q,MAAMo5F,EAAOxpE,IAC9CjT,EAAOznB,KAAK,EAAEkkG,EAAOroF,GAAIqoF,EAAOxpE,GAEpC,IACA,IAAI/vB,EAAM,GACND,EAAM,GACV09P,EAAKI,WAAW/gP,EAAQ9c,EAAKD,GAG7B,IAAIuhS,EAASlwS,KAAK6oI,KACdsnK,EAASnwS,KAAK8oI,KAEdn6H,EAAI,GAAKC,EAAI,KAAO,IACtBA,EAAI,GAAKshS,EAASA,EAAO,GAAKthS,EAAI,GAAK,EACvCD,EAAI,GAAKwhS,EAASA,EAAO,GAAKxhS,EAAI,GAAK,GAGrCA,EAAI,GAAKC,EAAI,KAAO,IACtBA,EAAI,GAAKshS,EAASA,EAAO,GAAKthS,EAAI,GAAK,EACvCD,EAAI,GAAKwhS,EAASA,EAAO,GAAKxhS,EAAI,GAAK,GAGzC,IAAIi+P,EAAeh5B,EAAYS,iBAAmB,IAAI83B,EACtDS,EAAal4B,UAAYd,EAAY1wO,IAAI,cACzC0pQ,EAAaC,gBAAgBj+P,EAAI,GAAIA,EAAI,GAAID,EAAI,GAAKC,EAAI,GAAID,EAAI,GAAKC,EAAI,IAC3Eg+P,EAAat4B,UAAUV,EAAY1wO,IAAI,WACvC0pQ,EAAar4B,QAAQX,EAAY1wO,IAAI,SAErClD,KAAKk7C,MAAMrkB,KAAK,CACd/E,SAAU86O,EAAa96O,SACvBuE,MAAOu2O,EAAav2O,QAEtBr2B,KAAKowS,cAAgBxjC,EACrB5sQ,KAAK6oI,KAAOj6H,EACZ5O,KAAK8oI,KAAOn6H,CACd,EACAw4P,kBAAmB,SAAUvzB,EAAalB,EAAS/nI,GACjD,IAAIk+J,EAAa7oQ,KAAK4mQ,YAClBkC,EAAiB9oQ,KAAK6mQ,gBACtB3rN,EAAQl7C,KAAKk7C,MACjB2tN,EAAWE,mBAAkB,SAAU9iQ,EAAG6Z,EAAG6e,GAC3C,IAAI1B,EAAOie,EAAM8tN,kBAEjB,OADA/rO,EAAKgsO,eAAe/tN,EAAMmsB,WACnBpqC,EAAKmxN,QAAQtuO,EAAG6e,KAAO6mO,EAAoBv/P,EAAG0kG,EAAKipI,EAC5D,IACAi1B,EAAWK,OAAOt1B,EAAY1wO,IAAI,SAClC4lQ,EAAep0B,UAAYd,EAAY1wO,IAAI,cAC3C4lQ,EAAe1rL,KAAOw2J,EAAYS,iBAAiBO,UACnDi0B,EAAW7sL,IAAI,OAAOA,IAAI,QAAQvY,GAAG,OAAO,SAAUx9D,GACpDq/P,EAAW6D,gBAAgBL,EAAgB7iQ,EAAE0/D,GAAI1/D,EAAE2/D,IACnD+kC,EAAIi9J,eAAe,CACjB7zB,SAAUH,EAAYpqO,GACtBhF,KAAM,WACNmhE,GAAI1/D,EAAE0/D,GACNC,GAAI3/D,EAAE2/D,IAEV,GAAG5lE,MAAMyjE,GAAG,QAAQ,SAAUx9D,GAC5Bq/P,EAAW8D,iBAAiBN,EAAgB7iQ,EAAEowB,MAAOpwB,EAAEkvO,QAASlvO,EAAEovO,SAClE1qI,EAAIi9J,eAAe,CACjB7zB,SAAUH,EAAYpqO,GACtBhF,KAAM,WACN44E,KAAMn3E,EAAEowB,MACR8+M,QAASlvO,EAAEkvO,QACXE,QAASpvO,EAAEovO,UAGbr1O,KAAKknQ,wBAAwBtzB,EAC/B,GAAG5zO,KACL,EACAknQ,wBAAyB,SAAUtzB,GACjC,IAAI30N,EAAO20N,EAAY7oI,UAEnBu+J,EAAYtpQ,KAAKqwS,oBAAoBz8D,GAErC21B,EAAW,CAACD,EAAWA,GAC3BrqP,EAAKw8N,mBAAkB,SAAU75O,EAAIulG,GACnCvlG,EAAGi1B,KAAK,QAAS0yO,EACnB,GACF,EACA8mC,oBAAqB,SAAUz8D,GAC7B,IAAIf,EAAWe,EAAYS,iBAE3B,GAAsB,SAAlBxB,EAASruO,KACX,OAAO,EAGT,IAAI2gQ,EAAiBnlQ,KAAKiwS,gBACtB9hC,EAAat7B,EAASx8M,MACtB+3O,EAAYD,GAAcA,EAAW,IAAM,EAE3CE,EAAWx7B,EAAS+B,UACpB00B,GAAa+E,EAAW,GAAKlJ,EAAiB,EAClD,OAAOmE,EAAY8E,CACrB,EACA5yB,QAAS,WACPx7O,KAAK4mQ,aAAe5mQ,KAAK4mQ,YAAYprB,UACrCx7O,KAAK6mQ,gBAAkB,CAAC,CAC1B,EACAjqL,OAAQ,WACN58E,KAAK8vS,WAAW30D,YAEhBn7O,KAAKqqK,MAAQ,IACf,IAGF,SAASs0G,EAAgB1/P,EAAM40N,GAC7B,IAAI1rI,EAASlpF,EAAK69N,cAAcjJ,GAChC,OAAO1rI,IAAWp5F,MAAMo5F,EAAOroF,KAAO/Q,MAAMo5F,EAAOxpE,IAAkD,SAA5C1f,EAAKo+N,cAAcxJ,EAAW,SACzF,CAEA,SAASy8D,EAAiBl1N,EAAMg/J,EAAW04B,GAczC,OAbAA,EAAY14B,UAAYA,EACxB04B,EAAYvzB,UAAYnF,EAAUZ,SAAS,aAAagG,eACxDszB,EAAYiL,eAAiB3jC,EAAUZ,SAAS,sBAAsBgG,eACtEszB,EAAYxgO,UAAY8nM,EAAUZ,SAAS,aAAajgM,eACxDu5N,EAAY/qB,WAAa3N,EAAUZ,SAAS,SAC5Cs5B,EAAY9qB,gBAAkB5N,EAAUZ,SAAS,mBAE3B,IAAlBp+J,EAAKmzN,UAA+C,IAAzBnzN,EAAK2D,SAAS/8E,OAC3C8wQ,EAAYmL,iBAAmBnL,EAAYvzB,UAAUx1N,KAErD+oP,EAAYmL,iBAAmB,OAG1BnL,CACT,CAEA,SAASk9B,EAAW/wR,EAAM40N,EAAW2V,EAAUtuM,EAAO04L,EAAak/B,GACjE,IAAIphK,GAAU83I,EACVpuK,EAAOn8D,EAAK6lQ,KAAKsjB,mBAAmBv0D,GACpCuG,EAAYh/J,EAAKo+J,WAEjBguD,GADA10B,EAAcw9B,EAAiBl1N,EAAMg/J,EAAW04B,GAClC7zP,EAAK6lQ,KAAK5sP,MACxBxzB,EAAS02E,EAAK6lB,aAAeumM,EAAcpsN,EAAOA,EAAK6lB,YAAc7lB,EACrEm1N,EAAiBtxR,EAAK67N,iBAAiBp2O,EAAOmvO,WAC9C28D,EAAe9rS,EAAOyzO,YACtBs4D,EAAkBF,EAAiB,CACrCzwR,EAAGywR,EAAez+Q,SAAS,GAC3B6M,EAAG4xQ,EAAez+Q,SAAS,GAC3B4+Q,KAAMH,EAAeI,gBACrBC,KAAML,EAAeM,iBACnBL,EACAM,EAAe11N,EAAK+8J,YAEpBzmI,GACF83I,EAAW,IAAIwrB,EAAU/1P,EAAM40N,EAAWi/B,GAC1CtpB,EAAS3yN,KAAK,WAAY,CAAC45Q,EAAgB3wR,EAAG2wR,EAAgB9xQ,KAE9D6qN,EAASuQ,WAAW96O,EAAM40N,EAAWi/B,GAGvCtpB,EAASmnD,gBAAkBnnD,EAASunD,aACpCvnD,EAASqnD,gBAAkBrnD,EAASwnD,aACpCxnD,EAASunD,aAAeD,EAAaJ,KACrClnD,EAASwnD,aAAeF,EAAaF,KACrC11P,EAAM36C,IAAIipP,GACVvqO,EAAKw7N,iBAAiB5G,EAAW2V,GACjC1S,EAAQ+D,YAAY2O,EAAU,CAC5B13N,SAAU,CAACg/Q,EAAahxR,EAAGgxR,EAAanyQ,IACvCi1M,GACH,IAAIs0B,EAAa1e,EAAS2e,gBAE1B,GAA2B,WAAvB2K,EAAY3qK,OAAqB,CACnC,IAGIigK,EACAC,EAJAymC,EAAWtH,EAAYzoN,SAAS,GAChCkyN,EAAanC,EAAS32D,YACtBn2O,EAAS8sS,EAAS/vN,SAAS/8E,OAI/B,GAAI8uS,EAAahxR,IAAMmxR,EAAWnxR,IAAuB,IAAlBs7D,EAAKmzN,SAAmB,CAC7D,IAAI9+P,EAAS,CAAC,EACdA,EAAO3vB,GAAKgvR,EAAS/vN,SAAS,GAAGo5J,YAAYr4N,EAAIgvR,EAAS/vN,SAAS/8E,EAAS,GAAGm2O,YAAYr4N,GAAK,EAChG2vB,EAAO9Q,GAAKmwQ,EAAS/vN,SAAS,GAAGo5J,YAAYx5M,EAAImwQ,EAAS/vN,SAAS/8E,EAAS,GAAGm2O,YAAYx5M,GAAK,EAChGypO,EAAMjiQ,KAAK64H,MAAMvvF,EAAO9Q,EAAIsyQ,EAAWtyQ,EAAG8Q,EAAO3vB,EAAImxR,EAAWnxR,GAE5DsoP,EAAM,IACRA,EAAgB,EAAVjiQ,KAAK40B,GAASqtO,GAGtBC,EAAS54N,EAAO3vB,EAAImxR,EAAWnxR,EAE3BuoP,IACFD,GAAYjiQ,KAAK40B,GAErB,MACEqtO,EAAMjiQ,KAAK64H,MAAM8xK,EAAanyQ,EAAIsyQ,EAAWtyQ,EAAGmyQ,EAAahxR,EAAImxR,EAAWnxR,GAExEsoP,EAAM,IACRA,EAAgB,EAAVjiQ,KAAK40B,GAASqtO,GAGO,IAAzBhtL,EAAK2D,SAAS/8E,QAAyC,IAAzBo5E,EAAK2D,SAAS/8E,SAAkC,IAAlBo5E,EAAKmzN,UACnElmC,EAASyoC,EAAahxR,EAAImxR,EAAWnxR,EAEjCuoP,IACFD,GAAYjiQ,KAAK40B,MAGnBstO,EAASyoC,EAAahxR,EAAImxR,EAAWnxR,EAEhCuoP,IACHD,GAAYjiQ,KAAK40B,KAKvB,IAAIyrB,EAAe6hN,EAAS,OAAS,QACjCjyO,EAAS08O,EAAY/qB,WAAW7kP,IAAI,UACpCguS,EAAoB96Q,GAAUjwB,KAAK40B,GAAK,KAC5CmtO,EAAWr8E,SAAS,CAClBrlI,aAAcssN,EAAY/qB,WAAW7kP,IAAI,aAAesjD,EACxDygI,aAAwB,MAAV7wJ,GAAkBgyO,EAAM8oC,EACtC3oC,WAAY,SACZvL,cAAe,UAEnB,CAEA7iC,EAASyZ,EAAax4J,EAAMosN,EAAah+C,EAAUinD,EAAiBD,EAAcM,EAAc51P,EAAO43N,EACzG,CAEA,SAAS34C,EAASyZ,EAAax4J,EAAMosN,EAAah+C,EAAUinD,EAAiBD,EAAcM,EAAc51P,EAAO43N,GAC9G,IAAIi8B,EAAYj8B,EAAYi8B,UACxBpuN,EAAO6oK,EAAS2nD,OAEpB,GAAkB,UAAdpC,EACE3zN,EAAK6lB,YAAc7lB,EAAK6lB,aAAeumM,IACpC7mN,IACHA,EAAO6oK,EAAS2nD,OAAS,IAAIr6D,EAAQslC,YAAY,CAC/C5mP,MAAO47Q,EAAat+B,EAAa29B,EAAiBA,GAClD7kS,MAAO0mO,EAAO94I,SAAS,CACrBlgE,QAAS,EACTosN,eAAe,GACdotB,EAAYxgO,cAInBwkM,EAAQ+D,YAAYl6J,EAAM,CACxBnrD,MAAO47Q,EAAat+B,EAAa09B,EAAcM,GAC/CllS,MAAO0mO,EAAO94I,SAAS,CACrBlgE,QAAS,GACRw5O,EAAYxgO,YACdshM,SAEA,GAAkB,aAAdm7D,GACkB,eAAvBj8B,EAAY3qK,QACV/sB,IAASosN,GAAepsN,EAAK2D,UAAqC,IAAzB3D,EAAK2D,SAAS/8E,SAAkC,IAAlBo5E,EAAKmzN,SAAmB,CAIjG,IAHA,IAAIxvN,EAAW3D,EAAK2D,SAChBswN,EAAc,GAETrrS,EAAI,EAAGA,EAAI+6E,EAAS/8E,OAAQgC,IAAK,CACxC,IAAIqtS,EAActyN,EAAS/6E,GAAGm0O,YAC9Bk3D,EAAYprS,KAAK,CAACotS,EAAYvxR,EAAGuxR,EAAY1yQ,GAC/C,CAEKgiD,IACHA,EAAO6oK,EAAS2nD,OAAS,IAAIhC,EAAU,CACrC35Q,MAAO,CACL45Q,YAAa,CAAC0B,EAAahxR,EAAGgxR,EAAanyQ,GAC3C0wQ,YAAa,CAAC,CAACyB,EAAahxR,EAAGgxR,EAAanyQ,IAC5CiT,OAAQkhO,EAAYlhO,OACpB09P,aAAcx8B,EAAYk8B,kBAE5BpjS,MAAO0mO,EAAO94I,SAAS,CACrBlgE,QAAS,EACTosN,eAAe,GACdotB,EAAYxgO,cAInBwkM,EAAQ+D,YAAYl6J,EAAM,CACxBnrD,MAAO,CACL45Q,YAAa,CAAC0B,EAAahxR,EAAGgxR,EAAanyQ,GAC3C0wQ,YAAaA,GAEfzjS,MAAO0mO,EAAO94I,SAAS,CACrBlgE,QAAS,GACRw5O,EAAYxgO,YACdshM,EACL,CAIJ14L,EAAM36C,IAAIogF,EACZ,CAEA,SAASgpN,EAAW1qR,EAAM40N,EAAW2V,EAAUtuM,EAAO04L,EAAak/B,GACjE,IAMI09B,EANAp1N,EAAOn8D,EAAK6lQ,KAAKsjB,mBAAmBv0D,GACpC2zD,EAAcvoR,EAAK6lQ,KAAK5sP,KACxBkiN,EAAYh/J,EAAKo+J,WAEjB90O,GADAouQ,EAAcw9B,EAAiBl1N,EAAMg/J,EAAW04B,GACvC13L,EAAK6lB,aAAeumM,EAAcpsN,EAAOA,EAAK6lB,YAAc7lB,GACrE2zN,EAAYj8B,EAAYi8B,UAG5B,MAAOyB,EAAe9rS,EAAOyzO,YAA6B,MAAhBq4D,EACxC9rS,EAASA,EAAOu8F,aAAeumM,EAAc9iS,EAASA,EAAOu8F,YAAcv8F,EAG7EoyO,EAAQ+D,YAAY2O,EAAU,CAC5B13N,SAAU,CAAC0+Q,EAAa1wR,EAAI,EAAG0wR,EAAa7xQ,EAAI,IAC/Ci1M,GAAa,WACd14L,EAAM0hC,OAAO4sK,GACbvqO,EAAKw7N,iBAAiB5G,EAAW,KACnC,IACA2V,EAAS8sB,QAAQ,KAAM,CACrBiI,WAAW,IAEb,IAAIgyB,EAAiBtxR,EAAK67N,iBAAiBp2O,EAAOmvO,WAC9Cy9D,EAAaf,EAAeY,OAK5BxwN,EAAO6oK,EAAS2nD,UAA+B,IAApBzsS,EAAO6pS,UAAiD,IAA3B7pS,EAAOq6E,SAAS/8E,OAAesvS,OAAa5uS,GACpGqsS,EAAYj8B,EAAYi8B,UAExBpuN,IACgB,UAAdouN,EACFj4D,EAAQ+D,YAAYl6J,EAAM,CACxBnrD,MAAO47Q,EAAat+B,EAAa09B,EAAcA,GAC/C5kS,MAAO,CACL0tB,QAAS,IAEVs6M,GAAa,WACd14L,EAAM0hC,OAAO+D,EACf,IACuB,aAAdouN,GAAmD,eAAvBj8B,EAAY3qK,QACjD2uI,EAAQ+D,YAAYl6J,EAAM,CACxBnrD,MAAO,CACL45Q,YAAa,CAACoB,EAAa1wR,EAAG0wR,EAAa7xQ,GAC3C0wQ,YAAa,CAAC,CAACmB,EAAa1wR,EAAG0wR,EAAa7xQ,KAE9C/yB,MAAO,CACL0tB,QAAS,IAEVs6M,GAAa,WACd14L,EAAM0hC,OAAO+D,EACf,IAGN,CAEA,SAASywN,EAAat+B,EAAa09B,EAAcM,GAC/C,IAAI53B,EACAC,EACAkoB,EACAC,EAEAx3P,EACAG,EACAF,EACAG,EAJA0H,EAASkhO,EAAYlhO,OAMzB,GAA2B,WAAvBkhO,EAAY3qK,OAAqB,CACnCr+D,EAAK0mQ,EAAaE,KAClB3mQ,EAAKymQ,EAAaI,KAClB3mQ,EAAK6mQ,EAAaJ,KAClBxmQ,EAAK4mQ,EAAaF,KAClB,IAAIW,EAAcrC,EAAiBplQ,EAAIC,GACnCynQ,EAActC,EAAiBplQ,EAAIC,GAAMG,EAAKH,GAAM+oO,EAAYnuM,WAChE8sO,EAAcvC,EAAiBjlQ,EAAIC,GAAMH,EAAKG,GAAM4oO,EAAYnuM,WAChE+sO,EAAcxC,EAAiBjlQ,EAAIC,GACvC,MAAO,CACLJ,GAAIynQ,EAAYzxR,EAChBiqB,GAAIwnQ,EAAY5yQ,EAChBsL,GAAIynQ,EAAY5xR,EAChBoqB,GAAIwnQ,EAAY/yQ,EAChBu6O,KAAMs4B,EAAY1xR,EAClBq5P,KAAMq4B,EAAY7yQ,EAClB0iQ,KAAMoQ,EAAY3xR,EAClBwhR,KAAMmQ,EAAY9yQ,EAEtB,CAqBA,OApBEmL,EAAK0mQ,EAAa1wR,EAClBiqB,EAAKymQ,EAAa7xQ,EAClBsL,EAAK6mQ,EAAahxR,EAClBoqB,EAAK4mQ,EAAanyQ,EAEH,OAAXiT,GAA8B,OAAXA,IACrBsnO,EAAOpvO,GAAMG,EAAKH,GAAMgpO,EAAYnuM,UACpCw0M,EAAOpvO,EACPs3P,EAAOp3P,GAAMH,EAAKG,GAAM6oO,EAAYnuM,UACpC28N,EAAOp3P,GAGM,OAAX0H,GAA8B,OAAXA,IACrBsnO,EAAOpvO,EACPqvO,EAAOpvO,GAAMG,EAAKH,GAAM+oO,EAAYnuM,UACpC08N,EAAOp3P,EACPq3P,EAAOp3P,GAAMH,EAAKG,GAAM4oO,EAAYnuM,WAIjC,CACL76B,GAAIA,EACJC,GAAIA,EACJE,GAAIA,EACJC,GAAIA,EACJgvO,KAAMA,EACNC,KAAMA,EACNkoB,KAAMA,EACNC,KAAMA,EAEV,CAEAngS,EAAOD,QAAUusB,C,iCCxmBjB,IAAI06E,EAAS3/E,EAAQ,MA0CrB,SAASkvC,EAAKx/B,GACZA,EAAKy5Q,SAAW,CACdC,gBAAiB,KACjB9wM,SAAU5oE,EACV25Q,OAAQ,EACRvpJ,SAAU,EACVvxH,OAAQ,EACRqB,MAAO,EACPp0B,EAAG,EACHuyL,OAAQ,MAEV,IACIn7G,EACA2D,EAFAD,EAAQ,CAAC5mD,GAIb,MAAOkjD,EAAO0D,EAAMrmD,MAIlB,GAFAsmD,EAAW3D,EAAK2D,SAEZ3D,EAAKmzN,UAAYxvN,EAAS/8E,OAG5B,IAFA,IAAI+d,EAAIg/D,EAAS/8E,OAERgC,EAAI+b,EAAI,EAAG/b,GAAK,EAAGA,IAAK,CAC/B,IAAI+iG,EAAQhoB,EAAS/6E,GACrB+iG,EAAM4qM,SAAW,CACfC,gBAAiB,KACjB9wM,SAAUiG,EACV8qM,OAAQ,EACRvpJ,SAAU,EACVvxH,OAAQ,EACRqB,MAAO,EACPp0B,EAAGA,EACHuyL,OAAQ,MAEVz3G,EAAM76E,KAAK8iG,EACb,CAGN,CAiBA,SAAS+qM,EAAU12N,EAAM22N,GACvB,IAAIhzN,EAAW3D,EAAKmzN,SAAWnzN,EAAK2D,SAAW,GAC3C42B,EAAWv6B,EAAK6lB,WAAWliB,SAC3BizN,EAAW52N,EAAKu2N,SAAS3tS,EAAI2xG,EAASv6B,EAAKu2N,SAAS3tS,EAAI,GAAK,KAEjE,GAAI+6E,EAAS/8E,OAAQ,CACnBiwS,EAAc72N,GACd,IAAI82N,GAAYnzN,EAAS,GAAG4yN,SAASE,OAAS9yN,EAASA,EAAS/8E,OAAS,GAAG2vS,SAASE,QAAU,EAE3FG,GACF52N,EAAKu2N,SAASE,OAASG,EAASL,SAASE,OAASE,EAAW32N,EAAM42N,GACnE52N,EAAKu2N,SAASrpJ,SAAWltE,EAAKu2N,SAASE,OAASK,GAEhD92N,EAAKu2N,SAASE,OAASK,CAE3B,MAAWF,IACT52N,EAAKu2N,SAASE,OAASG,EAASL,SAASE,OAASE,EAAW32N,EAAM42N,IAGrE52N,EAAK6lB,WAAW0wM,SAASC,gBAAkBO,EAAU/2N,EAAM42N,EAAU52N,EAAK6lB,WAAW0wM,SAASC,iBAAmBj8L,EAAS,GAAIo8L,EAChI,CAaA,SAASK,EAAWh3N,GAClB,IAAIqlD,EAAQrlD,EAAKu2N,SAASE,OAASz2N,EAAK6lB,WAAW0wM,SAASrpJ,SAC5DltE,EAAKm0K,UAAU,CACbzvO,EAAG2gH,IACF,GACHrlD,EAAKu2N,SAASrpJ,UAAYltE,EAAK6lB,WAAW0wM,SAASrpJ,QACrD,CAEA,SAASypJ,EAAWp5N,GAClB,OAAO51E,UAAUf,OAAS22E,EAAK05N,CACjC,CAUA,SAASnD,EAAiBpvR,EAAG6e,GAC3B,IAAI2zQ,EAAa,CAAC,EAIlB,OAHAxyR,GAAK3Z,KAAK40B,GAAK,EACfu3Q,EAAWxyR,EAAI6e,EAAIx4B,KAAKmgC,IAAIxmB,GAC5BwyR,EAAW3zQ,EAAIA,EAAIx4B,KAAKkgC,IAAIvmB,GACrBwyR,CACT,CAUA,SAASh1C,EAAY1pB,EAAajpI,GAChC,OAAOxC,EAAOo1J,cAAc3pB,EAAY4pB,qBAAsB,CAC5Dh1N,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,aAEhB,CAcA,SAAS2vD,EAAc72N,GACrB,IAAI2D,EAAW3D,EAAK2D,SAChBh/D,EAAIg/D,EAAS/8E,OACbo2B,EAAQ,EACRrB,EAAS,EAEb,QAAShX,GAAK,EAAG,CACf,IAAIgnF,EAAQhoB,EAASh/D,GACrBgnF,EAAM4qM,SAASE,QAAUz5Q,EACzB2uE,EAAM4qM,SAASrpJ,UAAYlwH,EAC3BrB,GAAUgwE,EAAM4qM,SAAS56Q,OACzBqB,GAAS2uE,EAAM4qM,SAASv5Q,MAAQrB,CAClC,CACF,CAuBA,SAASo7Q,EAAUI,EAAUP,EAAUlxM,EAAUixM,GAC/C,GAAIC,EAAU,CACZ,IAAIQ,EAAeD,EACfE,EAAcF,EACdG,EAAcD,EAAYxxM,WAAWliB,SAAS,GAC9C4zN,EAAaX,EACbY,EAAcJ,EAAab,SAASrpJ,SACpCuqJ,EAAaJ,EAAYd,SAASrpJ,SAClCwqJ,EAAaJ,EAAYf,SAASrpJ,SAClCyqJ,EAAYJ,EAAWhB,SAASrpJ,SAEpC,MAAOqqJ,EAAaK,EAAUL,GAAaF,EAAcQ,EAASR,GAAcE,GAAcF,EAAa,CACzGD,EAAeQ,EAAUR,GACzBE,EAAcO,EAASP,GACvBF,EAAab,SAAS7wM,SAAWyxM,EACjC,IAAIn6Q,EAAQu6Q,EAAWhB,SAASE,OAASkB,EAAYN,EAAYd,SAASE,OAASgB,EAAad,EAAWY,EAAYF,GAEnHr6Q,EAAQ,IACV86Q,EAAYC,EAAaR,EAAYJ,EAAUzxM,GAAWyxM,EAAUn6Q,GACpEy6Q,GAAcz6Q,EACdw6Q,GAAex6Q,GAGjB26Q,GAAaJ,EAAWhB,SAASrpJ,SACjCuqJ,GAAcJ,EAAYd,SAASrpJ,SACnCsqJ,GAAeJ,EAAab,SAASrpJ,SACrCwqJ,GAAcJ,EAAYf,SAASrpJ,QACrC,CAEIqqJ,IAAeK,EAAUR,KAC3BA,EAAab,SAASp7G,OAASo8G,EAC/BH,EAAab,SAASrpJ,UAAYyqJ,EAAYH,GAG5CH,IAAgBQ,EAASP,KAC3BA,EAAYf,SAASp7G,OAASk8G,EAC9BC,EAAYf,SAASrpJ,UAAYuqJ,EAAaC,EAC9ChyM,EAAWyxM,EAEf,CAEA,OAAOzxM,CACT,CAWA,SAASkyM,EAAU53N,GACjB,IAAI2D,EAAW3D,EAAK2D,SACpB,OAAOA,EAAS/8E,QAAUo5E,EAAKmzN,SAAWxvN,EAASA,EAAS/8E,OAAS,GAAKo5E,EAAKu2N,SAASp7G,MAC1F,CAWA,SAAS08G,EAAS73N,GAChB,IAAI2D,EAAW3D,EAAK2D,SACpB,OAAOA,EAAS/8E,QAAUo5E,EAAKmzN,SAAWxvN,EAAS,GAAK3D,EAAKu2N,SAASp7G,MACxE,CAYA,SAAS48G,EAAaR,EAAYv3N,EAAM0lB,GACtC,OAAO6xM,EAAWhB,SAAS7wM,SAASG,aAAe7lB,EAAK6lB,WAAa0xM,EAAWhB,SAAS7wM,SAAWA,CACtG,CAgBA,SAASoyM,EAAYE,EAAIC,EAAIj7Q,GAC3B,IAAIrB,EAASqB,GAASi7Q,EAAG1B,SAAS3tS,EAAIovS,EAAGzB,SAAS3tS,GAClDqvS,EAAG1B,SAAS56Q,QAAUA,EACtBs8Q,EAAG1B,SAASv5Q,OAASA,EACrBi7Q,EAAG1B,SAASrpJ,UAAYlwH,EACxBi7Q,EAAG1B,SAASE,QAAUz5Q,EACtBg7Q,EAAGzB,SAAS56Q,QAAUA,CACxB,CASA,SAASs7Q,EAAkB33K,EAAOC,GAChC,OAAOD,EAAMz5B,aAAe05B,EAAM15B,WAAa,EAAI,CACrD,CAEA//F,EAAQw2D,KAAOA,EACfx2D,EAAQ4wS,UAAYA,EACpB5wS,EAAQkxS,WAAaA,EACrBlxS,EAAQ6wS,WAAaA,EACrB7wS,EAAQguS,iBAAmBA,EAC3BhuS,EAAQo8P,YAAcA,C,wBClUtB,SAASg2C,EAAUp7Q,EAAMrW,EAAUkwR,GACjC,IAEI32N,EAFA0D,EAAQ,CAAC5mD,GACT5wB,EAAO,GAGX,MAAO8zE,EAAO0D,EAAMrmD,MAIlB,GAFAnxB,EAAKrD,KAAKm3E,GAENA,EAAKmzN,SAAU,CACjB,IAAIxvN,EAAW3D,EAAK2D,SAEpB,GAAIA,EAAS/8E,OACX,IAAK,IAAIgC,EAAI,EAAGA,EAAI+6E,EAAS/8E,OAAQgC,IACnC86E,EAAM76E,KAAK86E,EAAS/6E,GAG1B,CAGF,MAAOo3E,EAAO9zE,EAAKmxB,MAEjB5W,EAASu5D,EAAM22N,EAEnB,CAQA,SAASwB,EAAWr7Q,EAAMrW,GACxB,IACIu5D,EADA0D,EAAQ,CAAC5mD,GAGb,MAAOkjD,EAAO0D,EAAMrmD,MAIlB,GAFA5W,EAASu5D,GAELA,EAAKmzN,SAAU,CACjB,IAAIxvN,EAAW3D,EAAK2D,SAEpB,GAAIA,EAAS/8E,OACX,IAAK,IAAIgC,EAAI+6E,EAAS/8E,OAAS,EAAGgC,GAAK,EAAGA,IACxC86E,EAAM76E,KAAK86E,EAAS/6E,GAG1B,CAEJ,C,SAEA9C,EAAQoyS,UAAYA,EACpBpyS,EAAQqyS,WAAaA,C,wBC7ErB,IAAIpgE,EAAU3qN,EAAQ,OAElBwrN,EAAcxrN,EAAQ,OAEtByrN,EAAsBD,EAAYC,oBAoBtCd,EAAQI,eAAe,CACrB/uO,KAAM,wBACN6e,MAAO,wBACP2T,OAAQ,WACP,SAAUw8M,EAASd,GACpBA,EAAQe,cAAc,CACpBC,SAAU,SACVC,QAAS,OACT9yI,MAAO2yI,IACN,SAAUI,GACX,IAAIC,EAAYL,EAAQK,UACpBixC,EAAOlxC,EAAY7oI,UAAU+5K,KAC7B1pM,EAAO0pM,EAAKsjB,mBAAmBv0D,GACnCz4J,EAAKmzN,UAAYnzN,EAAKmzN,QACxB,GACF,IACAp7D,EAAQI,eAAe,CACrB/uO,KAAM,WACN6e,MAAO,WAKP2T,OAAQ,SACP,SAAUw8M,EAASd,GACpBA,EAAQe,cAAc,CACpBC,SAAU,SACVC,QAAS,OACT9yI,MAAO2yI,IACN,SAAUI,GACX,IAAIf,EAAWe,EAAYS,iBACvBt7J,EAAMk7J,EAAoBpB,EAAUW,GACxCI,EAAYU,WAAaV,EAAYU,UAAUv7J,EAAItpC,QACnDmkM,EAAYW,SAAWX,EAAYW,QAAQx7J,EAAIqE,KACjD,GACF,G,wBC3DA,IAAIo2N,EAAmBhrR,EAAQ,OAE3B8qR,EAAYE,EAAiBF,UAC7BC,EAAaC,EAAiBD,WAE9BtE,EAAgBzmR,EAAQ,OAExBkvC,EAAOu3O,EAAcv3O,KACrBo6O,EAAY7C,EAAc6C,UAC1BM,EAAanD,EAAcmD,WAC3BqB,EAAMxE,EAAc8C,WACpB7C,EAAmBD,EAAcC,iBACjC5xC,EAAc2xC,EAAc3xC,YAoBhC,SAAS7vO,EAASilN,EAAS/nI,GACzB+nI,EAAQkY,iBAAiB,QAAQ,SAAUhX,GACzC8/D,EAAa9/D,EAAajpI,EAC5B,GACF,CAEA,SAAS+oM,EAAa9/D,EAAajpI,GACjC,IAAIirF,EAAa0nE,EAAY1pB,EAAajpI,GAC1CipI,EAAYh+C,WAAaA,EACzB,IAAIztF,EAASyrI,EAAY1wO,IAAI,UACzBslC,EAAQ,EACRC,EAAS,EACTspQ,EAAa,KAEF,WAAX5pM,GACF3/D,EAAQ,EAAIriC,KAAK40B,GACjB0N,EAAStiC,KAAKyI,IAAIgnL,EAAWntJ,OAAQmtJ,EAAWptJ,OAAS,EACzDupQ,EAAa0B,GAAI,SAAU/4K,EAAOC,GAChC,OAAQD,EAAMz5B,aAAe05B,EAAM15B,WAAa,EAAI,GAAKy5B,EAAM3G,KACjE,MAEAvrF,EAAQotJ,EAAWptJ,MACnBC,EAASmtJ,EAAWntJ,OACpBspQ,EAAa0B,KAGf,IAAIjM,EAAc5zD,EAAY7oI,UAAU+5K,KAAK5sP,KACzC42Q,EAAWtH,EAAYzoN,SAAS,GAEpC,GAAI+vN,EAAU,CACZp3O,EAAK8vO,GACL8L,EAAUxE,EAAUgD,EAAWC,GAC/BvK,EAAYmK,SAASrpJ,UAAYwmJ,EAAS6C,SAASE,OACnD0B,EAAWzE,EAAUsD,GACrB,IAAI/hQ,EAAOy+P,EACPx+P,EAAQw+P,EACRt+P,EAASs+P,EACbyE,EAAWzE,GAAU,SAAU1zN,GAC7B,IAAIt7D,EAAIs7D,EAAK+8J,YAAYr4N,EAErBA,EAAIuwB,EAAK8nM,YAAYr4N,IACvBuwB,EAAO+qC,GAGLt7D,EAAIwwB,EAAM6nM,YAAYr4N,IACxBwwB,EAAQ8qC,GAGNA,EAAK24C,MAAQvjF,EAAOujF,QACtBvjF,EAAS4qC,EAEb,IACA,IAAIqL,EAAQp2C,IAASC,EAAQ,EAAIyhQ,EAAW1hQ,EAAMC,GAAS,EACvD9G,EAAKi9C,EAAQp2C,EAAK8nM,YAAYr4N,EAC9B2jR,EAAK,EACLuB,EAAK,EACL2O,EAAQ,EACRC,EAAQ,EAEZ,GAAe,WAAXzrM,EACFs7L,EAAKj7P,GAAS8H,EAAM6nM,YAAYr4N,EAAI2mE,EAAQj9C,GAE5Cw7P,EAAKv8P,GAAU+H,EAAOujF,MAAQ,GAAK,GACnCw/K,EAAWzE,GAAU,SAAU1zN,GAC7Bu4N,GAASv4N,EAAK+8J,YAAYr4N,EAAI0pB,GAAMi6P,EACpCmQ,GAASx4N,EAAK24C,MAAQ,GAAKixK,EAC3B,IAAI6O,EAAY3E,EAAiByE,EAAOC,GACxCx4N,EAAKm0K,UAAU,CACbzvO,EAAG+zR,EAAU/zR,EACb6e,EAAGk1Q,EAAUl1Q,EACb+xQ,KAAMiD,EACN/C,KAAMgD,IACL,EACL,QACK,CACL,IAAIhiQ,EAASgiM,EAAYi7D,YAEV,OAAXj9P,GAA8B,OAAXA,GACrBozP,EAAKv8P,GAAU6H,EAAM6nM,YAAYr4N,EAAI2mE,EAAQj9C,GAC7Ci6P,EAAKj7P,GAASgI,EAAOujF,MAAQ,GAAK,GAClCw/K,EAAWzE,GAAU,SAAU1zN,GAC7Bw4N,GAASx4N,EAAK+8J,YAAYr4N,EAAI0pB,GAAMw7P,EACpC2O,EAAmB,OAAX/hQ,GAAmBwpC,EAAK24C,MAAQ,GAAK0vK,EAAKj7P,GAAS4yC,EAAK24C,MAAQ,GAAK0vK,EAC7EroN,EAAKm0K,UAAU,CACbzvO,EAAG6zR,EACHh1Q,EAAGi1Q,IACF,EACL,KACoB,OAAXhiQ,GAA8B,OAAXA,IAC5B6xP,EAAKj7P,GAAS8H,EAAM6nM,YAAYr4N,EAAI2mE,EAAQj9C,GAC5Cw7P,EAAKv8P,GAAU+H,EAAOujF,MAAQ,GAAK,GACnCw/K,EAAWzE,GAAU,SAAU1zN,GAC7Bu4N,GAASv4N,EAAK+8J,YAAYr4N,EAAI0pB,GAAMi6P,EACpCmQ,EAAmB,OAAXhiQ,GAAmBwpC,EAAK24C,MAAQ,GAAKixK,EAAKv8P,GAAU2yC,EAAK24C,MAAQ,GAAKixK,EAC9E5pN,EAAKm0K,UAAU,CACbzvO,EAAG6zR,EACHh1Q,EAAGi1Q,IACF,EACL,IAEJ,CACF,CACF,CAEAzyS,EAAOD,QAAUusB,C,wBCxIjB,IAAI0lN,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAER,IAAIsrR,EAAgBtrR,EAAQ,OAExBurR,EAAgBvrR,EAAQ,OAoB5B2qN,EAAQ4C,eAAe+9D,GACvB3gE,EAAQsC,eAAes+D,E,iCC/BvB,IAAIj9D,EAAUtuN,EAAQ,OAElB2/E,EAAS3/E,EAAQ,MAEjB8pN,EAAS9pN,EAAQ,OAEjBu/Q,EAAcv/Q,EAAQ,OAEtB68P,EAAmB0iB,EAAY1iB,iBAoB/B2uB,EAAe,EACfC,EAAW,EACXC,EAAe,EAEnB,SAASC,EAAWC,GAKlBp0S,KAAKk7C,MAAQ,IAAI47L,EAAQM,MACzBg9D,EAAe7zS,IAAIP,KAAKk7C,MAC1B,CA4GA,SAASm5P,EAAev0R,EAAG6e,EAAG8/N,EAAWD,EAAYvwE,EAAMvxE,GACzD,IAAIhxF,EAAS,CAAC,CAACuiK,EAAOnuK,EAAIA,EAAIo0R,EAAcv1Q,GAAI,CAAC7e,EAAI2+O,EAAW9/N,GAAI,CAAC7e,EAAI2+O,EAAW9/N,EAAI6/N,GAAa,CAACvwE,EAAOnuK,EAAIA,EAAIo0R,EAAcv1Q,EAAI6/N,IAGvI,OAFC9hJ,GAAQhxF,EAAOuN,OAAO,EAAG,EAAG,CAACnZ,EAAI2+O,EAAYy1C,EAAcv1Q,EAAI6/N,EAAa,KAC5EvwE,GAAQviK,EAAOznB,KAAK,CAAC6b,EAAG6e,EAAI6/N,EAAa,IACnC9yO,CACT,CAGA,SAAS4oR,EAAc1yS,EAAIgyO,EAAa2gE,GACtC3yS,EAAG4yS,UAAY,CACbtgE,cAAe,SACfugE,iBAAkB,UAClBC,eAAgB9gE,EAAY8gE,eAC5Bh2D,YAAa9K,EAAY8gE,eACzBr/C,WAAYzhB,EAAYnvO,KACxB2uO,WAAY,UACZuhE,SAAU,aAEV1xC,SAAU,CACRpvB,UAAW0gE,GAAYA,EAAS1gE,UAChCpvO,KAAM8vS,GAAYA,EAAS9vS,MAE7B6gR,aAAcivB,GAAYlvB,EAAiBkvB,EAAU3gE,GAEzD,CAlIAugE,EAAW5sS,UAAY,CACrB2F,YAAainS,EACbh1S,OAAQ,SAAUy0O,EAAajpI,EAAKo6K,EAAY6vB,GAC9C,IAAIrjD,EAAQ3d,EAAY4F,SAAS,cAC7Bq7D,EAAY70S,KAAKk7C,MAGrB,GAFA25P,EAAU15D,YAELoW,EAAMruP,IAAI,SAAY6hR,EAA3B,CAIA,IAAI+vB,EAAmBvjD,EAAM/X,SAAS,aAElCu7D,EAAiBD,EAAiBt7D,SAAS,aAC3Cw7D,EAAc,CAChB3mS,IAAK,CACHgiC,KAAMkhN,EAAMruP,IAAI,QAChBotC,MAAOihN,EAAMruP,IAAI,SACjBqtC,IAAKghN,EAAMruP,IAAI,OACfstC,OAAQ+gN,EAAMruP,IAAI,WAEpB2/L,IAAK,CACHr6J,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,aAEd2yD,eAAgB1jD,EAAMruP,IAAI,kBAC1BgyS,WAAY,EACZC,WAAY,IAGdn1S,KAAKo1S,SAASrwB,EAAYiwB,EAAaD,GAEvC/0S,KAAKq1S,eAAezhE,EAAaohE,EAAaF,EAAkBC,EAAgBH,GAEhFzsM,EAAOmtM,gBAAgBT,EAAWG,EAAY3mS,IAAK2mS,EAAYnyG,IAzB/D,CA0BF,EAMAuyG,SAAU,SAAUrwB,EAAYiwB,EAAaD,GAC3C,IAAK,IAAI35N,EAAO2pM,EAAY3pM,EAAMA,EAAOA,EAAK6lB,WAAY,CACxD,IAAItkE,EAAOy+C,EAAKo+J,WAAWt2O,IAAI,QAC3B06R,EAAWmX,EAAeQ,YAAY54Q,GACtC8hO,EAAYt4P,KAAKwI,IAAIivR,EAASp1P,MAAuB,EAAfwrQ,EAAkBgB,EAAYC,gBACxED,EAAYE,YAAcz2C,EAAYw1C,EACtCe,EAAYG,WAAWlxS,KAAK,CAC1Bm3E,KAAMA,EACNz+C,KAAMA,EACN6L,MAAOi2N,GAEX,CACF,EAKA42C,eAAgB,SAAUzhE,EAAaohE,EAAaF,EAAkBC,EAAgBH,GASpF,IAPA,IAAIY,EAAQ,EACRP,EAAiBD,EAAYC,eAC7BxsQ,EAASmrM,EAAY1wO,IAAI,qBACzBuyS,EAAgBttM,EAAOutM,iBAAiBV,EAAY3mS,IAAK2mS,EAAYnyG,KACrEqyG,EAAaF,EAAYE,WACzBC,EAAaH,EAAYG,WAEpBnxS,EAAImxS,EAAWnzS,OAAS,EAAGgC,GAAK,EAAGA,IAAK,CAC/C,IAAIwhB,EAAO2vR,EAAWnxS,GAClBuwS,EAAW/uR,EAAK41D,KAChBqjL,EAAYj5O,EAAKgjB,MACjB7L,EAAOnX,EAAKmX,KAEZu4Q,EAAaO,EAAcjtQ,QAC7B0sQ,GAAcz2C,EAAYw2C,EAC1Bx2C,EAAYw2C,EACZt4Q,EAAO,MAGT,IAAI/6B,EAAK,IAAIk1O,EAAQ+kB,QAAQ,CAC3BrmO,MAAO,CACL9J,OAAQ2oR,EAAemB,EAAO,EAAG/2C,EAAWh2N,EAAQzkC,IAAMmxS,EAAWnzS,OAAS,EAAS,IAANgC,IAEnF4H,MAAO0mO,EAAO94I,SAASs7M,EAAiBt1D,eAAgB,CACtDhmN,SAAU,QACVmD,KAAMA,EACN6lM,SAAUuyE,EAAe/5B,eACzB26B,SAAUZ,EAAex+C,YAE3Bx+K,EAAG,GACH69N,QAAStjE,EAAOuD,MAAM++D,EAAUL,KAElCv0S,KAAKk7C,MAAM36C,IAAIqB,GACf0yS,EAAc1yS,EAAIgyO,EAAa2gE,GAC/BiB,GAAS/2C,EAAYw1C,CACvB,CACF,EAKAr3N,OAAQ,WACN58E,KAAKk7C,MAAMigM,WACb,GA6BF,IAAI1tN,EAAW0mR,EACfhzS,EAAOD,QAAUusB,C,wBC9KjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBo3N,EAAcp3N,EAAQ,OAEtBs/Q,EAAOt/Q,EAAQ,OAEfyuN,EAAQzuN,EAAQ,OAEhB05O,EAAU15O,EAAQ,OAElB25O,EAAaD,EAAQC,WACrBwxB,EAAYzxB,EAAQyxB,UAEpBoU,EAAcv/Q,EAAQ,OAEtB68P,EAAmB0iB,EAAY1iB,iBAoB/B53P,EAAWmyN,EAAYl8H,OAAO,CAChCl/G,KAAM,iBACNwvR,WAAY,MACZ99C,aAAc,CAAC,OAAQ,SACvB2/D,wBAAwB,EAKxB7N,UAAW,KACXxxD,cAAe,CAEbgK,YAAa,EAGbnwM,KAAM,SACNE,IAAK,SACLD,MAAO,KACPE,OAAQ,KACRhI,MAAO,MACPC,OAAQ,MACR5iB,MAAM,EAGNiwR,WAAY,SAEZC,YAAa,IAAO,EAAI5vS,KAAK2iB,KAAK,IAElCktR,UAAW,KAGXC,cAAe,IAGfC,gBAAiB,MAGjBhxC,MAAM,EAENojC,UAAW,aAKXt3Q,WAAW,EACXw3Q,wBAAyB,IACzBxlI,gBAAiB,eACjBmzI,WAAY,CACVzoQ,MAAM,EACNjF,OAAQ,GACR4H,KAAM,SACNE,IAAK,SAGL0kQ,eAAgB,GAEhB11D,UAAW,CACT3uN,MAAO,kBAEPizM,YAAa,wBACbh8J,YAAa,EACbjuC,YAAa,sBACbD,WAAY,EACZE,cAAe,EACfC,cAAe,EACfmY,UAAW,CACTrhB,MAAO,SAGX8vN,SAAU,CACRzuM,UAAW,CAAC,IAGhB/C,MAAO,CACLxB,MAAM,EAEN1gB,SAAU,EACVu+D,QAAS,EACTz5D,SAAU,SAGVlB,MAAO,OACP0lL,UAAU,GAIZ8/F,WAAY,CAEV1oQ,MAAM,EACN5b,SAAU,CAAC,EAAG,OACd2W,OAAQ,GAER7X,MAAO,OACP0lL,UAAU,EAEV0mD,cAAe,UAEjBzd,UAAW,CACT3uN,MAAO,KAEPylR,WAAY,KAEZC,gBAAiB,KAEjBzuO,YAAa,EACb0uO,SAAU,EACV1yE,YAAa,OACb2yE,sBAAuB,MAKzB91D,SAAU,CACR01D,WAAY,CACV1oQ,MAAM,EACN5b,SAAU,CAAC,EAAG,OACdlB,MAAO,OACP0lL,UAAU,EACV0mD,cAAe,WAGnBy5C,gBAAiB,EAEjBC,UAAW,KACXC,UAAW,KACX/lR,MAAO,GAWPylR,WAAY,KAEZC,gBAAiB,KAEjBM,eAAgB,QAEhBC,WAAY,GAGZC,mBAAoB,KAMpBhjH,OAAQ,IAeVgsD,eAAgB,SAAU/0M,EAAQ2nM,GAEhC,IAAIx6M,EAAO,CACTzzB,KAAMsmC,EAAOtmC,KACbs6E,SAAUh0C,EAAO9rB,MAEnBgpR,EAAkB/vQ,GAClB,IAAI47J,EAAS/oJ,EAAO+oJ,QAAU,GAK1BijH,EAA4B/2S,KAAK+2S,0BAA4B,CAAC,EAC9DC,EAAwB,IAAI//D,EAAM,CACpCsI,UAAWw3D,GACV/2S,KAAM0yO,GACT5+C,EAAS/oJ,EAAO+oJ,OAASmjH,EAAWnjH,EAAQ4+C,GAC5C,IAAI2tD,EAAc/tD,EAAO5oN,IAAIoqK,GAAU,IAAI,SAAUo0G,GACnD,OAAO,IAAIjxD,EAAMixD,EAAa8O,EAAuBtkE,EACvD,GAAG1yO,MAIC8kR,EAAOgjB,EAAKK,WAAWjwQ,EAAMl4B,KAAMgjQ,GAEvC,SAASA,EAAWC,GAClBA,EAASC,WAAW,gBAAgB,SAAU3R,EAAOpqJ,GACnD,IAAI/rB,EAAO0pM,EAAKsjB,mBAAmBjhM,GAC/Bo5L,EAAaF,EAAYjlN,EAAK24C,OAGlC,OADAw9H,EAAMxK,YAAcw5C,GAAcyW,EAC3BzlD,CACT,GACF,CAEA,OAAOuzB,EAAK7lQ,IACd,EACA4hR,cAAe,WACb7gS,KAAKqoS,eACP,EAOArkC,cAAe,SAAUnwB,GACvB,IAAI50N,EAAOjf,KAAK+qG,UACZjpG,EAAQ9B,KAAK6xQ,YAAYh+B,GACzBuhD,EAAiB9iD,EAAOxrO,QAAQhF,GAAS6xR,EAAU7xR,EAAM,IAAM6xR,EAAU7xR,GACzE2C,EAAOwa,EAAK60N,QAAQD,GACxB,OAAOsuB,EAAW19P,EAAO,KAAO2wR,EAClC,EASA58B,cAAe,SAAU3kB,GACvB,IAAIjyN,EAASg+N,EAAYr4O,UAAUixP,cAAc11P,MAAM9C,KAAM+C,WACzDq4E,EAAOp7E,KAAK+qG,UAAU+5K,KAAKsjB,mBAAmBv0D,GAElD,OADAjyN,EAAO0jQ,aAAeD,EAAiBjqM,EAAMp7E,MACtC4hB,CACT,EAWAs1R,cAAe,SAAUthH,GAKvB51L,KAAK41L,WAAa51L,KAAK41L,YAAc,CAAC,EACtC08C,EAAO5uH,OAAO1jH,KAAK41L,WAAYA,EACjC,EAMAuhH,aAAc,SAAU3tS,GAatB,IAAI4tS,EAAap3S,KAAKq3S,YAEjBD,IACHA,EAAap3S,KAAKq3S,YAAc/kE,EAAO6hD,gBAMvCn0R,KAAKs3S,iBAAmB,GAG1B,IAAIr1S,EAAQm1S,EAAWl0S,IAAIsG,GAM3B,OAJa,MAATvH,GACFm1S,EAAW5kS,IAAIhJ,EAAIvH,EAAQjC,KAAKs3S,oBAG3Br1S,CACT,EACAwmS,YAAa,WACX,OAAOzoS,KAAKgoS,SACd,EAKAK,cAAe,SAAUljB,GACvBA,EAAWnlR,KAAKgoS,UAAY7iB,EAAWA,EAAWnlR,KAAKgoS,UACvD,IAAI9vQ,EAAOl4B,KAAKi7P,aAAa6pB,KAAK5sP,KAE7BitP,IAAYA,IAAajtP,GAASA,EAAKw7D,SAASyxL,MACnDnlR,KAAKgoS,UAAY9vQ,EAErB,IAOF,SAAS+vQ,EAAkBS,GAIzB,IAAIn9Q,EAAM,EACV+mN,EAAO56H,KAAKgxL,EAAS3pN,UAAU,SAAUgoB,GACvCkhM,EAAkBlhM,GAClB,IAAI4hM,EAAa5hM,EAAMjlG,MACvBwwO,EAAOxrO,QAAQ6hS,KAAgBA,EAAaA,EAAW,IACvDp9Q,GAAOo9Q,CACT,IACA,IAAIC,EAAYF,EAAS5mS,MAErBwwO,EAAOxrO,QAAQ8hS,KACjBA,EAAYA,EAAU,KAGP,MAAbA,GAAqB75R,MAAM65R,MAC7BA,EAAYr9Q,GAIVq9Q,EAAY,IACdA,EAAY,GAGdt2D,EAAOxrO,QAAQ4hS,EAAS5mS,OAAS4mS,EAAS5mS,MAAM,GAAK8mS,EAAYF,EAAS5mS,MAAQ8mS,CACpF,CAMA,SAASqO,EAAWnjH,EAAQ4+C,GAC1B,IAAI6kE,EAAkB7kE,EAAQxvO,IAAI,SAElC,GAAKq0S,EAAL,CAKA,IAAIC,EAUJ,GAXA1jH,EAASA,GAAU,GAEnBw+C,EAAO56H,KAAKo8E,GAAQ,SAAUo0G,GAC5B,IAAI32C,EAAQ,IAAIta,EAAMixD,GAClBuP,EAAalmD,EAAMruP,IAAI,UAEvBquP,EAAMruP,IAAI,oBAAsBu0S,GAA6B,SAAfA,KAChDD,GAAiB,EAErB,KAEKA,EAAgB,CACnB,IAAIE,EAAS5jH,EAAO,KAAOA,EAAO,GAAK,CAAC,GACxC4jH,EAAO9mR,MAAQ2mR,EAAgBp1S,OACjC,CAEA,OAAO2xL,CAlBP,CAmBF,CAEA3yL,EAAOD,QAAUusB,C,iCCpZjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAElBkpO,EAAalpO,EAAQ,OAErByhR,EAASzhR,EAAQ,OAEjB2rR,EAAa3rR,EAAQ,OAErB68O,EAAiB78O,EAAQ,OAEzBmvR,EAAenvR,EAAQ,OAEvBwiH,EAASxiH,EAAQ,OAEjBovR,EAAgBpvR,EAAQ,OAExBk/N,EAAkBl/N,EAAQ,OAE1B05O,EAAU15O,EAAQ,OAElBqgR,EAAa3mC,EAAQ2mC,WAoBrB9rR,EAAOu1N,EAAOv1N,KACdq6N,EAAQN,EAAQM,MAChBiF,EAAOvF,EAAQuF,KACf3kI,EAAO46H,EAAO56H,KACdmgM,EAAiB,EACjBC,EAAoB,CAAC,SACrBC,EAAsB,CAAC,WAAY,SACnCC,EAAyB,CAAC,cAC1BC,EAA2B,CAAC,WAAY,cACxCC,EAAS,GAETC,EAAO,EACPC,EAAY,EACZC,EAAuB3wD,EAAgB,CAAC,CAAC,OAAQ,SAErD,CAAC,SAAU,eAAgB,CAAC,YAAa,eAAgB,CAAC,cAAe,CAAC,iBAAkB,CAAC,iBAAkB,CAAC,iBAE5G4wD,EAAqB,SAAU/mD,GAEjC,IAAIhS,EAAY84D,EAAqB9mD,GAGrC,OADAhS,EAAUlmN,OAASkmN,EAAUx1N,KAAOw1N,EAAUxlN,UAAY,KACnDwlN,CACT,EAEI9xN,EAAW0lN,EAAQkF,gBAAgB,CACrC7zO,KAAM,UAKNkzD,KAAM,SAAUugB,EAAG0yB,GAKjB3qG,KAAKu4S,gBAMLv4S,KAAKw4S,SAAWC,IAMhBz4S,KAAK6vS,SAML7vS,KAAK04S,YAML14S,KAAK4mQ,YAML5mQ,KAAK24S,OAAS,OAChB,EAKAx5S,OAAQ,SAAUy0O,EAAalB,EAAS/nI,EAAK6oI,GAC3C,IAAIolE,EAASlmE,EAAQk4B,eAAe,CAClCl3B,SAAU,SACVC,QAAS,UACT9yI,MAAO2yI,IAGT,KAAIlB,EAAOj7N,QAAQuhS,EAAQhlE,GAAe,GAA1C,CAIA5zO,KAAK4zO,YAAcA,EACnB5zO,KAAK2qG,IAAMA,EACX3qG,KAAK0yO,QAAUA,EACf,IAAIv8J,EAAQ,CAAC,oBAAqB,qBAC9Bg0N,EAAaF,EAAOrlB,mBAAmBpxC,EAASr9J,EAAOy9J,GACvDilE,EAAcrlE,GAAWA,EAAQhvO,KACjCoxL,EAAag+C,EAAYh+C,WACzBlkF,GAAU1xG,KAAK6vS,SACfiJ,EAAc94S,KAAKw4S,SAEnBO,EAAyB,sBAAhBF,GAAuC1O,GAAc2O,EAAc,CAC9EE,cAAeF,EAAYG,UAAU9O,EAAW/uN,KAAKu6K,eACrDxhK,UAAWq/I,EAAQr/I,WACjB,KAEAigN,EAAiBp0S,KAAKk5S,oBAAoBtjH,GAE1CujH,EAAen5S,KAAKo5S,UAAUhF,EAAgBxgE,EAAamlE,GAE9DrnM,GAAYmnM,GAA+B,sBAAhBA,GAAuD,sBAAhBA,EAA8GM,EAAaE,gBAApFr5S,KAAKs5S,aAAalF,EAAgB+E,EAAcvlE,EAAamlE,GAEvK/4S,KAAKu5S,iBAAiB5uM,GAEtB3qG,KAAKw5S,kBAAkB5lE,EAAajpI,EAAKw/L,EAzBzC,CA0BF,EAKA+O,oBAAqB,SAAUtjH,GAC7B,IAAIw+G,EAAiBp0S,KAAKu4S,gBAa1B,OAXKnE,IAGHA,EAAiBp0S,KAAKu4S,gBAAkB,IAAInhE,EAE5Cp3O,KAAK2mS,YAAYyN,GAEjBp0S,KAAKk7C,MAAM36C,IAAI6zS,IAGjBA,EAAev9Q,KAAK,WAAY,CAAC++J,EAAW91K,EAAG81K,EAAWj3J,IACnDy1Q,CACT,EAKAgF,UAAW,SAAUhF,EAAgBxgE,EAAamlE,GAChD,IAAIU,EAAW7lE,EAAY7oI,UAAU+5K,KACjC40B,EAAU15S,KAAK6vS,SAEf8J,EAAoBlB,IACpBK,EAAcL,IACdmB,EAAa55S,KAAKw4S,SAClBqB,EAAmB,GACnBnQ,EAAep3D,EAAOuD,MAAMg1D,EAAYj3D,EAAaklE,EAAac,EAAYb,EAAQY,EAAmBE,GAK7G3Q,EAAWuQ,EAASvhR,KAAO,CAACuhR,EAASvhR,MAAQ,GAAIwhR,GAAWA,EAAQxhR,KAAO,CAACwhR,EAAQxhR,MAAQ,GAAIk8Q,EAAgBqF,IAAaC,IAAYA,EAAS,GAElJ,IAAII,EAAgBC,EAAaH,GAGjC,OAFA55S,KAAK6vS,SAAW4J,EAChBz5S,KAAKw4S,SAAWM,EACT,CACLa,kBAAmBA,EACnBG,cAAeA,EACfT,cAAeA,GAGjB,SAASnQ,EAAW8Q,EAAkBC,EAAiBC,EAAaC,EAAUpmL,GAe5E,SAASsjC,EAAOj8E,GAEd,OAAOA,EAAKyyL,OACd,CAEA,SAASy7B,EAAY5uD,EAAUC,GAC7B,IAAIy/D,EAAuB,MAAZ1/D,EAAmBs/D,EAAiBt/D,GAAY,KAC3D+uD,EAAsB,MAAZ9uD,EAAmBs/D,EAAgBt/D,GAAY,KACzDz/L,EAAQwuP,EAAa0Q,EAAU3Q,EAASyQ,EAAanmL,GACzD74E,GAASguP,EAAWkR,GAAYA,EAASC,cAAgB,GAAI5Q,GAAWA,EAAQ4Q,cAAgB,GAAIn/P,EAAOi/P,EAAUpmL,EAAQ,EAC/H,CArBIomL,GACFF,EAAkBD,EAClBtiM,EAAKsiM,GAAkB,SAAUjzM,EAAO9kG,IACrC8kG,EAAMuzM,aAAehR,EAAYrnS,EAAOA,EAC3C,KAIE,IAAIyvP,EAAWuoD,EAAiBD,EAAkB3iJ,EAAQA,GAAQ92J,IAAI+oS,GAAatyQ,OAAOsyQ,GAAa1sN,OAAO01J,EAAOuD,MAAMyzD,EAAa,OAAO/sJ,SAcrJ,CAEA,SAASw9J,EAAaQ,GACpB,IAAIT,EAAgBrB,IAOpB,OANA8B,GAAW7iM,EAAK6iM,GAAS,SAAUxsS,EAAOysS,GACxC,IAAIC,EAASX,EAAcU,GAC3B9iM,EAAK3pG,GAAO,SAAUnM,GACpBA,IAAO64S,EAAOx2S,KAAKrC,GAAKA,EAAG84S,eAAiB,EAC9C,GACF,IACOZ,CACT,CAEA,SAAST,IACP3hM,EAAKoiM,GAAe,SAAU/4M,GAC5B2W,EAAK3W,GAAK,SAAUn/F,GAClBA,EAAGzB,QAAUyB,EAAGzB,OAAOy8E,OAAOh7E,EAChC,GACF,IACA81G,EAAKmiM,GAAkB,SAAUj4S,GAC/BA,EAAGmyP,WAAY,EAGfnyP,EAAG+hK,OACL,GACF,CACF,EAKA21I,aAAc,SAAUlF,EAAgB+E,EAAcvlE,EAAamlE,GACjE,GAAKnlE,EAAY1wO,IAAI,aAArB,CAIA,IAAI4gE,EAAW8vK,EAAY1wO,IAAI,2BAC3B6/J,EAAS6wE,EAAY1wO,IAAI,mBACzBy3S,EAAgB/C,EAAcgD,aAElCljM,EAAKyhM,EAAaW,eAAe,SAAU/rS,EAAOysS,GAChD9iM,EAAK3pG,GAAO,SAAUnM,EAAI0sR,GACxB,IAAI1sR,EAAGmyP,UAAP,CAIA,IAEIruP,EAFAvF,EAASyB,EAAGzB,OAIhB,GAAI44S,GAA+B,cAArBA,EAAO5kN,UACnBzuF,EAASvF,IAAW44S,EAAOC,cAGzB,CACAxjR,MAAO,CACL1V,EAAG,EACH6e,EAAG,EACH6J,MAAOroC,EAAO06S,cACdpyQ,OAAQtoC,EAAO26S,gBAEjBlvS,MAAO,CACL0tB,QAAS,IAGT,CACF1tB,MAAO,CACL0tB,QAAS,QAGR,CACL,IAAIyhR,EAAU,EACVC,EAAU,EAET76S,EAAOu6S,iBAIVK,EAAU56S,EAAO06S,cAAgB,EACjCG,EAAU76S,EAAO26S,eAAiB,GAGpCp1S,EAAyB,cAAhB80S,EAA8B,CACrC1oR,SAAU,CAACipR,EAASC,GACpBpvS,MAAO,CACL0tB,QAAS,IAET,CACF9D,MAAO,CACL1V,EAAGi7R,EACHp8Q,EAAGq8Q,EACHxyQ,MAAO,EACPC,OAAQ,GAEV78B,MAAO,CACL0tB,QAAS,GAGf,CAEA5zB,GAAUi1S,EAAcp6S,IAAIqB,EAAI8D,EAAQo+D,EAAUi/F,EAxDlD,CAyDF,GACF,IAEArrD,EAAK13G,KAAKw4S,UAAU,SAAUzqS,EAAOysS,GACnC9iM,EAAK3pG,GAAO,SAAUnM,EAAI0sR,GACxB,IAAIxqO,EAAOq1P,EAAaQ,kBAAkBa,GAAalsB,GACnD5oR,EAAS,CAAC,EAETo+C,IAIe,cAAhB02P,EACE12P,EAAK0zF,MACP9xI,EAAOosB,SAAWlwB,EAAGkwB,SAAS3vB,QAC9BP,EAAGi1B,KAAK,WAAYitB,EAAK0zF,OAGvB1zF,EAAK0zF,MACP9xI,EAAO8vB,MAAQ88M,EAAO5uH,OAAO,CAAC,EAAG9hH,EAAG4zB,OACpC5zB,EAAGu4O,SAASr2L,EAAK0zF,MAGf1zF,EAAKm3P,QACPr5S,EAAGiqL,SAAS,UAAW,GACvBnmL,EAAOkG,MAAQ,CACb0tB,QAAS,IAIiB,IAArB13B,EAAGgK,MAAM0tB,UACd5zB,EAAOkG,MAAQ,CACb0tB,QAAS,KAKjBqhR,EAAcp6S,IAAIqB,EAAI8D,EAAQo+D,EAAUi/F,GAC1C,GACF,GAAG/iK,MACHA,KAAK24S,OAAS,YACdgC,EAActxS,KAAK0T,GAAK,WACtB/c,KAAK24S,OAAS,QACdQ,EAAaE,eACf,GAAGr5S,OAAO0+C,OA/GV,CAgHF,EAKA66P,iBAAkB,SAAU5uM,GAC1B,IAAIk+J,EAAa7oQ,KAAK4mQ,YAEjBiC,IACHA,EAAa7oQ,KAAK4mQ,YAAc,IAAIvB,EAAe16J,EAAIoqJ,SACvD8T,EAAWK,OAAOlpQ,KAAK4zO,YAAY1wO,IAAI,SACvC2lQ,EAAWplM,GAAG,MAAO1mD,EAAK/c,KAAKk7S,OAAQl7S,OACvC6oQ,EAAWplM,GAAG,OAAQ1mD,EAAK/c,KAAKm7S,QAASn7S,QAG3C,IAAIi9B,EAAO,IAAI06Q,EAAa,EAAG,EAAGhtM,EAAI03I,WAAY13I,EAAI23I,aACtDumB,EAAWE,mBAAkB,SAAU9iQ,EAAG6Z,EAAG6e,GAC3C,OAAO1B,EAAKmxN,QAAQtuO,EAAG6e,EACzB,GACF,EAKAy8Q,iBAAkB,WAChB,IAAIvyC,EAAa7oQ,KAAK4mQ,YAElBiC,IACFA,EAAWrtB,UACXqtB,EAAa,KAEjB,EAKAqyC,OAAQ,SAAUj1S,GAChB,GAAoB,cAAhBjG,KAAK24S,SAA2BxyS,KAAK6iB,IAAI/iB,EAAE0/D,IAAMkyO,GAAkB1xS,KAAK6iB,IAAI/iB,EAAE2/D,IAAMiyO,GAAiB,CAEvG,IAAI3/Q,EAAOl4B,KAAK4zO,YAAY7oI,UAAU+5K,KAAK5sP,KAE3C,IAAKA,EACH,OAGF,IAAI+4Q,EAAa/4Q,EAAKigN,YAEtB,IAAK84D,EACH,OAGFjxS,KAAK2qG,IAAIi9J,eAAe,CACtBpjQ,KAAM,cACN45D,KAAMp+D,KAAK6N,IACXkmO,SAAU/zO,KAAK4zO,YAAYpqO,GAC3B6xS,SAAU,CACRv7R,EAAGmxR,EAAWnxR,EAAI7Z,EAAE0/D,GACpBhnC,EAAGsyQ,EAAWtyQ,EAAI14B,EAAE2/D,GACpBp9B,MAAOyoQ,EAAWzoQ,MAClBC,OAAQwoQ,EAAWxoQ,SAGzB,CACF,EAKA0yQ,QAAS,SAAUl1S,GACjB,IAAIq1S,EAASr1S,EAAEkvO,QACXomE,EAASt1S,EAAEovO,QAEf,GAAoB,cAAhBr1O,KAAK24S,OAAwB,CAE/B,IAAIzgR,EAAOl4B,KAAK4zO,YAAY7oI,UAAU+5K,KAAK5sP,KAE3C,IAAKA,EACH,OAGF,IAAI+4Q,EAAa/4Q,EAAKigN,YAEtB,IAAK84D,EACH,OAGF,IAAIh0Q,EAAO,IAAI06Q,EAAa1G,EAAWnxR,EAAGmxR,EAAWtyQ,EAAGsyQ,EAAWzoQ,MAAOyoQ,EAAWxoQ,QACjFmtJ,EAAa51L,KAAK4zO,YAAYh+C,WAElC0lH,GAAU1lH,EAAW91K,EACrBy7R,GAAU3lH,EAAWj3J,EAErB,IAAInlB,EAAIwxH,EAAOhkI,SACfgkI,EAAO10G,UAAU9c,EAAGA,EAAG,EAAE8hS,GAASC,IAClCvwK,EAAO30G,MAAM7c,EAAGA,EAAG,CAACvT,EAAEowB,MAAOpwB,EAAEowB,QAC/B20G,EAAO10G,UAAU9c,EAAGA,EAAG,CAAC8hS,EAAQC,IAChCt+Q,EAAKgsO,eAAezvP,GACpBxZ,KAAK2qG,IAAIi9J,eAAe,CACtBpjQ,KAAM,gBACN45D,KAAMp+D,KAAK6N,IACXkmO,SAAU/zO,KAAK4zO,YAAYpqO,GAC3B6xS,SAAU,CACRv7R,EAAGmd,EAAKnd,EACR6e,EAAG1B,EAAK0B,EACR6J,MAAOvL,EAAKuL,MACZC,OAAQxL,EAAKwL,SAGnB,CACF,EAKAk+P,YAAa,SAAUyN,GACrBA,EAAe3wO,GAAG,SAAS,SAAUx9D,GACnC,GAAoB,UAAhBjG,KAAK24S,OAAT,CAIA,IAAIrQ,EAAYtoS,KAAK4zO,YAAY1wO,IAAI,aAAa,GAElD,GAAKolS,EAAL,CAIA,IAAI6B,EAAanqS,KAAKw7S,WAAWv1S,EAAE2rB,QAAS3rB,EAAE4rB,SAE9C,GAAKs4Q,EAAL,CAIA,IAAI/uN,EAAO+uN,EAAW/uN,KAEtB,GAAIA,EAAK+8J,YAAYsjE,WACnBz7S,KAAK6pS,YAAYM,QAEjB,GAAkB,eAAd7B,EACFtoS,KAAK07S,YAAYvR,QACZ,GAAkB,SAAd7B,EAAsB,CAC/B,IAAIluD,EAAYh/J,EAAKwrN,SAAS3nR,KAAKo7N,aAAaj/J,EAAKy4J,WACjD6rC,EAAOtlC,EAAUl3O,IAAI,QAAQ,GAC7B6mS,EAAa3vD,EAAUl3O,IAAI,UAAU,IAAS,QAClDw8Q,GAAQmpB,EAAWnpB,EAAMqqB,EAC3B,CAdF,CANA,CANA,CA4BF,GAAG/pS,KACL,EAKAw5S,kBAAmB,SAAU5lE,EAAajpI,EAAKw/L,GAkB7C,SAASyK,EAASx5N,GACI,cAAhBp7E,KAAK24S,SACP1O,EAAO/kB,cAActxC,EAAY60D,cAAertN,GAAQp7E,KAAK6pS,YAAY,CACvEzuN,KAAMA,IACHp7E,KAAK07S,YAAY,CACpBtgO,KAAMA,IAGZ,CAzBK+uN,IACHA,EAAmD,MAAtCv2D,EAAY1wO,IAAI,aAAa,GAAgB,CACxDk4E,KAAMw4J,EAAY60D,eAIhBzoS,KAAKw7S,WAAW7wM,EAAI03I,WAAa,EAAG13I,EAAI23I,YAAc,GAErD6nD,IACHA,EAAa,CACX/uN,KAAMw4J,EAAY7oI,UAAU+5K,KAAK5sP,SAKtCl4B,KAAK04S,cAAgB14S,KAAK04S,YAAc,IAAIvE,EAAWn0S,KAAKk7C,SAAS/7C,OAAOy0O,EAAajpI,EAAKw/L,EAAW/uN,KAAMr+D,EAAK63R,EAAU50S,MAWjI,EAKA48E,OAAQ,WACN58E,KAAKo7S,mBAELp7S,KAAKu4S,iBAAmBv4S,KAAKu4S,gBAAgBp9D,YAC7Cn7O,KAAKw4S,SAAWC,IAChBz4S,KAAK24S,OAAS,QACd34S,KAAK04S,aAAe14S,KAAK04S,YAAY97N,QACvC,EACA4+J,QAAS,WACPx7O,KAAKo7S,kBACP,EAKAM,YAAa,SAAUvR,GACrBnqS,KAAK2qG,IAAIi9J,eAAe,CACtBpjQ,KAAM,oBACN45D,KAAMp+D,KAAK6N,IACXkmO,SAAU/zO,KAAK4zO,YAAYpqO,GAC3Bu7Q,WAAYolB,EAAW/uN,MAE3B,EAKAyuN,YAAa,SAAUM,GACrBnqS,KAAK2qG,IAAIi9J,eAAe,CACtBpjQ,KAAM,oBACN45D,KAAMp+D,KAAK6N,IACXkmO,SAAU/zO,KAAK4zO,YAAYpqO,GAC3Bu7Q,WAAYolB,EAAW/uN,MAE3B,EAWAogO,WAAY,SAAU17R,EAAG6e,GACvB,IAAIwrQ,EACAhlB,EAAWnlR,KAAK4zO,YAAY60D,cAuBhC,OAtBAtjB,EAASzc,SAAS,CAChB7xO,KAAM,eACN8kR,MAAO,aACN,SAAUvgO,GACX,IAAI2+J,EAAO/5O,KAAKw4S,SAASoD,WAAWxgO,EAAKu6K,eAGzC,GAAI5b,EAAM,CACR,IAAI/pO,EAAQ+pO,EAAK8hE,sBAAsB/7R,EAAG6e,GACtCnJ,EAAQukN,EAAKvkN,MAEjB,KAAIA,EAAM1V,GAAK9P,EAAM,IAAMA,EAAM,IAAMwlB,EAAM1V,EAAI0V,EAAMgT,OAAShT,EAAMmJ,GAAK3uB,EAAM,IAAMA,EAAM,IAAMwlB,EAAMmJ,EAAInJ,EAAMiT,QAOjH,OAAO,EANP0hQ,EAAa,CACX/uN,KAAMA,EACNxpD,QAAS5hB,EAAM,GACf6hB,QAAS7hB,EAAM,GAKrB,CACF,GAAGhQ,MACImqS,CACT,IAOF,SAASsO,IACP,MAAO,CACLQ,UAAW,GACX2C,WAAY,GACZh3Q,QAAS,GAEb,CAOA,SAASimQ,EAAWj3D,EAAaklE,EAAac,EAAYb,EAAQY,EAAmBE,EAAkBO,EAAU3Q,EAASyQ,EAAanmL,GAErI,GAAKqmL,EAAL,CASA,IAAI0B,EAAa1B,EAASjiE,YACtBl5N,EAAO20N,EAAY7oI,UAKvB,GAFA9rF,EAAKw7N,iBAAiB2/D,EAASvmE,UAAW,MAErCioE,GAAeA,EAAWC,SAA/B,CAIA,IAAIC,EAAYF,EAAWtzQ,MACvByzQ,EAAaH,EAAWrzQ,OACxBo/B,EAAci0O,EAAWj0O,YACzBq0O,EAAgBJ,EAAW/nD,UAC3BooD,EAAe/B,EAASzkD,cACxBymD,EAAc3S,GAAWA,EAAQ9zC,cACjCqkD,EAAmBI,EAASC,aAC5BgC,EAAcP,EAAWO,YACzBn9M,EAAW86M,GAAoBA,EAAiBh4S,OAChDs6S,EAAuBlC,EAAS5gE,SAAS,aACzC+iE,EAAyBnC,EAAS5gE,SAAS,sBAI3Ct+L,EAAQshQ,EAAY,YAAaplE,GAErC,GAAKl8L,EAAL,CAUA,GANAg/P,EAAY35S,IAAI26C,GAEhBA,EAAMrkB,KAAK,WAAY,CAACilR,EAAWh8R,GAAK,EAAGg8R,EAAWn9Q,GAAK,IAC3Duc,EAAM2/P,cAAgBmB,EACtB9gQ,EAAM4/P,eAAiBmB,EAEnBH,EAAWW,gBACb,OAAOvhQ,EAGT,IAAIwhQ,EAAYtC,EAAS5gE,WAErB7zJ,EAAK62N,EAAY,aAAcngE,EAAMtoH,EAAOokL,GAGhD,GAFAxyN,GAAMg3N,EAAiBzhQ,EAAOyqC,EAAIuZ,GAAY48M,EAAWc,kBAErD19M,EAIE43I,EAAQ+lE,qBAAqB3hQ,IAC/B47L,EAAQqd,wBAAwBj5M,GAAO,GAGrCyqC,IACFmxJ,EAAQqd,wBAAwBxuK,GAAI,GAEpC1mE,EAAKw7N,iBAAiB2/D,EAASvmE,UAAWluJ,QAEvC,CACL,IAAI/gD,EAAU43Q,EAAY,UAAWngE,EAAMtoH,EAAOqkL,GAClDxzQ,GAAWk4Q,EAAc5hQ,EAAOtW,GAE5B+gD,GAAMmxJ,EAAQ+lE,qBAAqBl3N,IACrCmxJ,EAAQqd,wBAAwBxuK,GAAI,GAGtCmxJ,EAAQqd,wBAAwBj5M,GAAO,GAEvCj8B,EAAKw7N,iBAAiB2/D,EAASvmE,UAAW34L,EAC5C,CAEA,OAAOA,CA3CP,CApBA,CAZA,CA+EA,SAASyhQ,EAAiBzhQ,EAAOyqC,EAAIo3N,GAWnC,GATAp3N,EAAGkuJ,UAAYumE,EAASvmE,UACxBluJ,EAAG+4J,YAAc9K,EAAY8K,YAC7B/4J,EAAGw0J,SAAS,CACVr6N,EAAG,EACH6e,EAAG,EACH6J,MAAOwzQ,EACPvzQ,OAAQwzQ,IAGNC,EAIFc,EAAiBr3N,OACZ,CACLA,EAAGouK,WAAY,EACf,IAAIkpD,EAAoB7C,EAAS98D,UAAU,eAAe,GACtD4/D,EAAsBX,EAAuBr5S,IAAI,eACjDmkP,EAAcixD,EAAmBgE,GACrCj1D,EAAYt9N,KAAOkzR,EACnB,IAAIE,EAAgB9E,EAAqBkE,GAGzC,GAFAY,EAAcpzR,KAAOmzR,EAEjBH,EAAe,CACjB,IAAIK,EAAkBpB,EAAY,EAAIn0O,EACtCw1O,EAAYh2D,EAAa81D,EAAeF,EAAmBG,EAAiBf,EAAa,CACvFv8R,EAAG+nD,EACHlpC,EAAG,EACH6J,MAAO40Q,EACP30Q,OAAQ4zQ,GAEZ,MAEIh1D,EAAY1qN,KAAOwgR,EAAcxgR,KAAO,KAG5CgpD,EAAGkmG,SAASw7D,GACZvQ,EAAQod,qBAAqBvuK,EAAIw3N,EACnC,CAEAjiQ,EAAM36C,IAAIolF,EACZ,CAEA,SAASm3N,EAAc5hQ,EAAOtW,GAE5BA,EAAQivM,UAAYumE,EAASvmE,UAC7BjvM,EAAQ85M,YAAc9K,EAAY8K,YAClC,IAAI4+D,EAAen3S,KAAKwI,IAAIqtS,EAAY,EAAIn0O,EAAa,GACrD01O,EAAgBp3S,KAAKwI,IAAIstS,EAAa,EAAIp0O,EAAa,GAS3D,GARAjjC,EAAQ6gN,SAAU,EAClB7gN,EAAQu1M,SAAS,CACfr6N,EAAG+nD,EACHlpC,EAAGkpC,EACHr/B,MAAO80Q,EACP70Q,OAAQ80Q,IAGNrB,EAIFc,EAAiBp4Q,OACZ,CACLA,EAAQmvN,WAAY,EACpB,IAAIwI,EAAc69C,EAAS98D,UAAU,SAAS,GAC1C+J,EAAcixD,EAAmBgE,GACrCj1D,EAAYt9N,KAAOwyO,EACnB,IAAI4gD,EAAgB9E,EAAqBkE,GACzCc,EAAYh2D,EAAa81D,EAAe5gD,EAAa+gD,EAAcC,GACnE34Q,EAAQinJ,SAASw7D,GACjBvQ,EAAQod,qBAAqBtvN,EAASu4Q,EACxC,CAEAjiQ,EAAM36C,IAAIqkC,EACZ,CAEA,SAASo4Q,EAAiBnjM,IAGvBA,EAAQk6I,WAAa8lD,EAAiB51S,KAAK41G,EAC9C,CAEA,SAASwjM,EAAYh2D,EAAa81D,EAAe5gD,EAAa/zN,EAAOC,EAAQ+0Q,GAC3E,IAAIp1D,EAAcs0D,EAAUx5S,IAAI,QAC5Bu6S,EAAmBf,EAAUljE,SAASgkE,EAAiBxF,EAAyBF,GAChF4F,EAAqBhB,EAAUljE,SAASgkE,EAAiBvF,EAA2BF,GACpF4F,EAASF,EAAiB//D,WAAW,QACzC5G,EAAQmR,cAAcZ,EAAa81D,EAAeM,EAAkBC,EAAoB,CACtFt1D,YAAau1D,EAASv1D,EAAc,KACpCE,UAAWiU,EACXlU,YAAY,EACZH,aAActU,EACduU,eAAgBiyD,EAASvmE,UACzB+pE,UAAWJ,EAAiB,aAAe,UAE7CK,EAAiBx2D,EAAam2D,EAAgB1B,GAC9C+B,EAAiBV,EAAeK,EAAgB1B,GAChD0B,IAAmBn2D,EAAYu2C,SAAWtrD,EAAOh+M,MAAMkpR,IACvDn2D,EAAYy2D,SAAWH,GAAUF,EAAiBv6S,IAAI,YAAc,CAClE+xG,WAAYzsE,EACZ0sE,YAAazsE,EACbs1Q,QAAS,GACP,IACN,CAEA,SAASF,EAAiBjyS,EAAO4xS,EAAgB1B,GAC/C,IAAIn/Q,EAAO/wB,EAAM+wB,KAEjB,IAAK6gR,GAAkB1B,EAAWL,YAAsB,MAAR9+Q,EAAc,CAC5D,IAAIqhR,EAAWpqE,EAAY1wO,IAAI,iBAAiB,GAChD0I,EAAM+wB,KAAOqhR,EAAWA,EAAW,IAAMrhR,EAAOA,CAClD,CACF,CAEA,SAAS6/Q,EAAYhC,EAAayD,EAAMlqL,EAAOh8C,GAC7C,IAAI8hC,EAAyB,MAAfuiM,GAAuBxC,EAAWY,GAAa4B,GACzD8B,EAAQvE,EAAkBa,GAiB9B,OAfI3gM,GAEF+/L,EAAWY,GAAa4B,GAAe,KACvC+B,EAA2BD,EAAOrkM,EAAS2gM,IAEnC0B,IACNriM,EAAU,IAAIokM,EAAK,CACjBlmO,EAAGqmO,EAAWrqL,EAAOh8C,KAEvB8hC,EAAQwkM,UAAYtqL,EACpBla,EAAQykM,gBAAkB9D,EAC1B+D,EAA0BL,EAAOrkM,EAAS2gM,IAIvC1B,EAAY0B,GAAa2B,GAAgBtiM,CAClD,CAEA,SAASskM,EAA2BD,EAAOrkM,EAAS2gM,GAClD,IAAIgE,EAAUN,EAAM/B,GAAgB,CAAC,EACrCqC,EAAQhnK,IAAsB,cAAhBgjK,EAA8B3gM,EAAQ/nF,SAAS3vB,QAAUmwO,EAAO5uH,OAAO,CAAC,EAAG7J,EAAQrkF,MACnG,CAIA,SAAS+oR,EAA0BL,EAAOrkM,EAAS2gM,GACjD,IAAIgE,EAAUN,EAAM/B,GAAgB,CAAC,EACjCl7M,EAAam5M,EAASn5M,WAE1B,GAAIA,KAAgB83M,GAA+B,cAArBA,EAAO5kN,WAA4B,CAC/D,IAAIsqN,EAAa,EACbC,EAAa,EAGbC,EAAchF,EAAkBiC,WAAW36M,EAAW00J,gBAErDojD,GAAU4F,GAAeA,EAAYnnK,MACxCinK,EAAaE,EAAYnnK,IAAIhvG,MAC7Bk2Q,EAAaC,EAAYnnK,IAAI/uG,QAK/B+1Q,EAAQhnK,IAAsB,cAAhBgjK,EAA8B,CAAC,EAAGkE,GAAc,CAC5D5+R,EAAG2+R,EACH9/Q,EAAG+/Q,EACHl2Q,MAAO,EACPC,OAAQ,EAEZ,CAGA+1Q,EAAQvD,OAAyB,cAAhBT,CACnB,CACF,CAQA,SAAS4D,EAAWrqL,EAAO6qL,GACzB,IAAIC,EAAK9qL,EAAQmkL,EAAS0G,EAC1B,OAAQC,EAAK,GAAKA,CACpB,CAEA19S,EAAOD,QAAUusB,C,wBC13BjB,IA9BA,IAAI0lN,EAAU3qN,EAAQ,OAElByhR,EAASzhR,EAAQ,OAwBjB60K,EAAO,WAAa,EAEpByhH,EAAc,CAAC,oBAAqB,gBAAiB,eAEhD96S,EAAI,EAAGA,EAAI86S,EAAY98S,OAAQgC,IACtCmvO,EAAQI,eAAe,CACrB/uO,KAAMs6S,EAAY96S,GAClBgzB,OAAQ,cACPqmK,GAGL81C,EAAQI,eAAe,CACrB/uO,KAAM,oBACNwyB,OAAQ,eACP,SAAUw8M,EAASd,GAOpB,SAASw3D,EAAiB34C,EAAOtvP,GAC/B,IAAIk0E,EAAQ,CAAC,oBAAqB,qBAC9Bg0N,EAAaF,EAAOrlB,mBAAmBpxC,EAASr9J,EAAOo7K,GAE3D,GAAI44C,EAAY,CACd,IAAIC,EAAiB74C,EAAMk3C,cAEvB2B,IACF52D,EAAQr/I,UAAY81M,EAAO/kB,cAAcklB,EAAgBD,EAAW/uN,MAAQ,SAAW,aAGzFm2K,EAAM82C,cAAc8B,EAAW/uN,KACjC,CACF,CAnBAs3J,EAAQe,cAAc,CACpBC,SAAU,SACVC,QAAS,UACT9yI,MAAO2yI,GACN02D,EAgBL,G,iCC7DA,IAAI53D,EAAS9pN,EAAQ,OAEjBmvR,EAAenvR,EAAQ,OAEvBi5N,EAAUj5N,EAAQ,OAElBk5N,EAAeD,EAAQC,aACvBpoO,EAAmBmoO,EAAQnoO,iBAE3B6uF,EAAS3/E,EAAQ,MAEjByhR,EAASzhR,EAAQ,OA8BjBkzN,EAAUv1O,KAAKwI,IACfgtO,EAAUx1O,KAAKyI,IACfmwS,EAAgBzsE,EAAOoS,SACvBhtI,EAAO46H,EAAO56H,KACdsnM,EAAoB,CAAC,YAAa,eAClCC,EAAiB,CAAC,YAAa,YAC/BC,EAAwB,CAAC,aAAc,QACvCC,EAA0B,CAAC,aAAc,UAKzC1xR,EAAW,CACb2lN,WAAY,UACZ3sI,MAAO,SAAUmtI,EAAalB,EAAS/nI,EAAK6oI,GAG1C,IAAI4rE,EAAUz0M,EAAI03I,WACdg9D,EAAW10M,EAAI23I,YACfg9D,EAAe1rE,EAAY7oM,OAC3B6qJ,EAAaztF,EAAOo1J,cAAc3pB,EAAY4pB,qBAAsB,CACtEh1N,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,cAEVh5J,EAAOg2N,EAAah2N,MAAQ,GAE5Bi4H,EAAiBmgC,EAAaq9D,EAAcnpH,EAAWptJ,MAAO8gD,EAAK,IAAK81N,GACxE59F,EAAkBkgC,EAAaq9D,EAAcnpH,EAAWntJ,OAAQ6gD,EAAK,IAAK+1N,GAE1ExG,EAAcrlE,GAAWA,EAAQhvO,KACjC2xE,EAAQ,CAAC,oBAAqB,qBAC9Bg0N,EAAaF,EAAOrlB,mBAAmBpxC,EAASr9J,EAAOy9J,GACvDynE,EAA2B,kBAAhBxC,GAAmD,gBAAhBA,EAAgCrlE,EAAQ6nE,SAAW,KACjGl2B,EAAWvxC,EAAY60D,cACvB8W,EAAgBtV,EAAOhlB,cAAcE,GAEzC,GAAoB,gBAAhB0zB,EAA+B,CACjC,IAAI2G,EAA2B,sBAAhB3G,EAAsC4G,EAAiB7rE,EAAau2D,EAAYhlB,EAAU5jE,EAAgBC,GAAmB65F,EAAW,CAACA,EAAS7yQ,MAAO6yQ,EAAS5yQ,QAAU,CAAC84K,EAAgBC,GACxM37L,EAAOy5R,EAAaz5R,KAEpBA,GAAiB,QAATA,GAA2B,SAATA,IAC5BA,EAAO,QAGT,IAAIlmB,EAAU,CACZo2S,YAAauJ,EAAavJ,YAC1BlwR,KAAMA,EACNmwR,UAAWsJ,EAAatJ,WAG1B7wB,EAASyhB,SAAS8Y,eAKlB,IAAIC,EAAiB,CACnB7/R,EAAG,EACH6e,EAAG,EACH6J,MAAOg3Q,EAAS,GAChB/2Q,OAAQ+2Q,EAAS,GACjBhvR,KAAMgvR,EAAS,GAAKA,EAAS,IAE/Br6B,EAAS51B,UAAUowD,GACnBC,EAASz6B,EAAUxlR,GAAS,EAAO,GAE/BggT,EAAiBx6B,EAAShtC,YAC9BzgI,EAAK6nM,GAAe,SAAUnkO,EAAMn5E,GAClC,IAAI0mS,GAAc4W,EAAct9S,EAAQ,IAAMkjR,GAAUnhL,WACxD5oB,EAAKm0K,UAAUjd,EAAO5uH,OAAO,CAC3By6I,WAAY,CAACwqC,EAAYA,GACzB9gO,YAAa,EACbw0O,YAAa,GACZsD,GACL,GACF,CAEA,IAAI3V,EAAWp2D,EAAY7oI,UAAU+5K,KAAK5sP,KAC1C8xQ,EAASz6C,UAAUswD,EAAsBjqH,EAAYylH,EAAUlR,IAAa,GAC5Ev2D,EAAYsjE,cAActhH,GAG1BkqH,EAAS9V,EACT,IAAI2N,GAAc/hH,EAAW91K,GAAI81K,EAAWj3J,EAAGygR,EAASC,GAAWE,EAAep6B,EAAU,EAC9F,GAqBF,SAASy6B,EAASxkO,EAAMz7E,EAASogT,EAAchsL,GAC7C,IAAIvrF,EACAC,EAEJ,IAAI2yC,EAAKk/N,YAAT,CAIA,IAAIwB,EAAa1gO,EAAK+8J,YACtB3vM,EAAQszQ,EAAWtzQ,MACnBC,EAASqzQ,EAAWrzQ,OAEpB,IAAIi0Q,EAAYthO,EAAKo+J,WACjB3xK,EAAc60O,EAAUx5S,IAAI87S,GAC5BgB,EAAetD,EAAUx5S,IAAI+7S,GAAkB,EAC/CrC,EAAmBqD,EAAoBvD,GACvCL,EAAcl2S,KAAKwI,IAAIk5D,EAAa+0O,GACpCsD,EAAer4O,EAAcm4O,EAC7BG,EAAoB9D,EAAc2D,EAClCtD,EAAYthO,EAAKo+J,WACrBp+J,EAAKm0K,UAAU,CACb1nL,YAAaA,EACbw0O,YAAaA,EACbO,iBAAkBA,IACjB,GACHp0Q,EAAQkzM,EAAQlzM,EAAQ,EAAI03Q,EAAc,GAC1Cz3Q,EAASizM,EAAQjzM,EAASy3Q,EAAeC,EAAmB,GAC5D,IAAI/uN,EAAY5oD,EAAQC,EACpB4xQ,EAAe3P,EAAatvN,EAAMshO,EAAWtrN,EAAWzxF,EAASogT,EAAchsL,GAEnF,GAAKsmL,EAAar4S,OAAlB,CAIA,IAAIi7B,EAAO,CACTnd,EAAGogS,EACHvhR,EAAGwhR,EACH33Q,MAAOA,EACPC,OAAQA,GAEN23Q,EAAiBzkE,EAAQnzM,EAAOC,GAChC43Q,EAAOxtN,IAEP9pB,EAAM,GACVA,EAAIv4C,KAAO,EAEX,IAAK,IAAIxsB,EAAI,EAAGwT,EAAM6iS,EAAar4S,OAAQgC,EAAIwT,GAAM,CACnD,IAAIuvF,EAAQszM,EAAar2S,GACzB+kE,EAAI9kE,KAAK8iG,GACTh+B,EAAIv4C,MAAQu2E,EAAMoxI,YAAY3nN,KAC9B,IAAI8vR,EAAQC,EAAMx3O,EAAKq3O,EAAgBzgT,EAAQo2S,aAE3CuK,GAASD,GACXr8S,IACAq8S,EAAOC,IAGLv3O,EAAIv4C,MAAQu4C,EAAItwC,MAAM0/M,YAAY3nN,KAClCsB,EAASi3C,EAAKq3O,EAAgBnjR,EAAM+iR,GAAc,GAClDI,EAAiBzkE,EAAQ1+M,EAAKuL,MAAOvL,EAAKwL,QAC1CsgC,EAAI/mE,OAAS+mE,EAAIv4C,KAAO,EACxB6vR,EAAOxtN,IAEb,CAMA,GAJI9pB,EAAI/mE,QACN8vB,EAASi3C,EAAKq3O,EAAgBnjR,EAAM+iR,GAAc,IAG/CD,EAAc,CACjB,IAAIjJ,EAAqB4F,EAAUx5S,IAAI,sBAEb,MAAtB4zS,GAA8B1lN,EAAY0lN,IAC5CiJ,GAAe,EAEnB,CAEA,IAAS/7S,EAAI,EAAGwT,EAAM6iS,EAAar4S,OAAQgC,EAAIwT,EAAKxT,IAClD47S,EAASvF,EAAar2S,GAAIrE,EAASogT,EAAchsL,EAAQ,EA9C3D,CA1BA,CA0EF,CAMA,SAAS22K,EAAatvN,EAAMshO,EAAWtrN,EAAWzxF,EAASogT,EAAchsL,GACvE,IAAIsmL,EAAej/N,EAAK2D,UAAY,GAChCyhO,EAAU7gT,EAAQkmB,KACV,QAAZ26R,GAAiC,SAAZA,IAAuBA,EAAU,MACtD,IAAIC,EAAqC,MAArB9gT,EAAQq2S,WAAqBr2S,EAAQq2S,WAAajiL,EAEtE,GAAIgsL,IAAiBU,EACnB,OAAOrlO,EAAKi/N,aAAe,GAI7BA,EAAe/nE,EAAOtiN,OAAOqqR,GAAc,SAAUtzM,GACnD,OAAQA,EAAMuzM,WAChB,IACAz0R,EAAKw0R,EAAcmG,GACnB,IAAIjmL,EAAOmmL,EAAUhE,EAAWrC,EAAcmG,GAE9C,GAAiB,IAAbjmL,EAAKhvG,IACP,OAAO6vD,EAAKi/N,aAAe,GAK7B,GAFA9/K,EAAKhvG,IAAMo1R,EAAkBjE,EAAWtrN,EAAWmpC,EAAKhvG,IAAKi1R,EAASnG,GAErD,IAAb9/K,EAAKhvG,IACP,OAAO6vD,EAAKi/N,aAAe,GAI7B,IAAK,IAAIr2S,EAAI,EAAGwT,EAAM6iS,EAAar4S,OAAQgC,EAAIwT,EAAKxT,IAAK,CACvD,IAAIwsB,EAAO6pR,EAAar2S,GAAGggG,WAAau2B,EAAKhvG,IAAM6lE,EAEnDipN,EAAar2S,GAAGurP,UAAU,CACxB/+N,KAAMA,GAEV,CAaA,OAXIiwR,IACFpG,EAAar4S,QAAUo5E,EAAKm0K,UAAU,CACpCksD,YAAY,IACX,GACHpB,EAAar4S,OAAS,GAGxBo5E,EAAKi/N,aAAeA,EACpBj/N,EAAKm0K,UAAU,CACb4O,WAAY5jI,EAAK4jI,aAChB,GACIk8C,CACT,CAMA,SAASsG,EAAkBjE,EAAWtrN,EAAW7lE,EAAKi1R,EAASI,GAE7D,IAAKJ,EACH,OAAOj1R,EAOT,IAJA,IAAIsrR,EAAa6F,EAAUx5S,IAAI,cAC3BsU,EAAMopS,EAAgB5+S,OACtB6+S,EAAcrpS,EAETxT,EAAIwT,EAAM,EAAGxT,GAAK,EAAGA,IAAK,CACjC,IAAIlC,EAAQ8+S,EAA4B,QAAZJ,EAAoBhpS,EAAMxT,EAAI,EAAIA,GAAGggG,WAE7DliG,EAAQypB,EAAM6lE,EAAYylN,IAC5BgK,EAAc78S,EACdunB,GAAOzpB,EAEX,CAGA,MADY,QAAZ0+S,EAAoBI,EAAgB3nR,OAAO,EAAGzhB,EAAMqpS,GAAeD,EAAgB3nR,OAAO4nR,EAAarpS,EAAMqpS,GACtGt1R,CACT,CAMA,SAAS1F,EAAKw0R,EAAcmG,GAQ1B,OAPIA,GACFnG,EAAax0R,MAAK,SAAUljB,EAAGC,GAC7B,IAAIgqG,EAAmB,QAAZ4zM,EAAoB79S,EAAEqhG,WAAaphG,EAAEohG,WAAaphG,EAAEohG,WAAarhG,EAAEqhG,WAC9E,OAAgB,IAAT4I,EAAyB,QAAZ4zM,EAAoB79S,EAAEkxO,UAAYjxO,EAAEixO,UAAYjxO,EAAEixO,UAAYlxO,EAAEkxO,UAAYjnI,CAClG,IAGKytM,CACT,CAMA,SAASqG,EAAUhE,EAAW39N,EAAUyhO,GAItC,IAFA,IAAIj1R,EAAM,EAEDvnB,EAAI,EAAGwT,EAAMunE,EAAS/8E,OAAQgC,EAAIwT,EAAKxT,IAC9CunB,GAAOwzD,EAAS/6E,GAAGggG,WAOrB,IAAI8kL,EAAY4zB,EAAUx5S,IAAI,mBAG9B,GAAK67E,GAAaA,EAAS/8E,OAEpB,GAAkB,UAAd8mR,GAAyB03B,EAClCriD,EAAa,CAACp/K,EAASA,EAAS/8E,OAAS,GAAGgiG,WAAYjlB,EAAS,GAAGilB,YACxD,QAAZw8M,GAAqBriD,EAAWnjO,cAE7B,CACD,IAAImjO,EAAa,CAACtrK,KAAWA,KAC7B6kB,EAAK34B,GAAU,SAAUgoB,GACvB,IAAIjlG,EAAQilG,EAAM/C,SAAS8kL,GAC3BhnR,EAAQq8P,EAAW,KAAOA,EAAW,GAAKr8P,GAC1CA,EAAQq8P,EAAW,KAAOA,EAAW,GAAKr8P,EAC5C,GACF,MAZAq8P,EAAa,CAAC3yK,IAAKA,KAcrB,MAAO,CACLjgE,IAAKA,EACL4yO,WAAYA,EAEhB,CAOA,SAASoiD,EAAMx3O,EAAKq3O,EAAgBviC,GAIlC,IAHA,IAGgBrtP,EAHZswR,EAAU,EACVC,EAAUluN,IAEL7uF,EAAI,EAASwT,EAAMuxD,EAAI/mE,OAAQgC,EAAIwT,EAAKxT,IAC/CwsB,EAAOu4C,EAAI/kE,GAAGm0O,YAAY3nN,KAEtBA,IACFA,EAAOuwR,IAAYA,EAAUvwR,GAC7BA,EAAOswR,IAAYA,EAAUtwR,IAIjC,IAAIwwR,EAAaj4O,EAAIv4C,KAAOu4C,EAAIv4C,KAC5B5sB,EAAIw8S,EAAiBA,EAAiBviC,EAC1C,OAAOmjC,EAAatlE,EAAQ93O,EAAIk9S,EAAUE,EAAYA,GAAcp9S,EAAIm9S,IAAYluN,GACtF,CAMA,SAAS/gE,EAASi3C,EAAKq3O,EAAgBnjR,EAAM+iR,EAAciB,GASzD,IAAIC,EAAYd,IAAmBnjR,EAAKuL,MAAQ,EAAI,EAChD24Q,EAAY,EAAID,EAChBr/D,EAAK,CAAC,IAAK,KACXC,EAAK,CAAC,QAAS,UACfh+L,EAAO7mB,EAAK4kN,EAAGq/D,IACfE,EAAiBhB,EAAiBr3O,EAAIv4C,KAAO4vR,EAAiB,GAE9Da,GAASG,EAAiBnkR,EAAK6kN,EAAGq/D,OACpCC,EAAiBnkR,EAAK6kN,EAAGq/D,KAG3B,IAAK,IAAIn9S,EAAI,EAAGq9S,EAASt4O,EAAI/mE,OAAQgC,EAAIq9S,EAAQr9S,IAAK,CACpD,IAAIo3E,EAAOrS,EAAI/kE,GACXs9S,EAAa,CAAC,EACd7xS,EAAO2xS,EAAiBhmO,EAAK+8J,YAAY3nN,KAAO4wR,EAAiB,EACjEG,EAAMD,EAAWx/D,EAAGq/D,IAAczlE,EAAQ0lE,EAAiB,EAAIpB,EAAc,GAE7EwB,EAASvkR,EAAK4kN,EAAGq/D,IAAcjkR,EAAK6kN,EAAGo/D,IAAcp9P,EACrD29P,EAAQz9S,IAAMq9S,EAAS,GAAKG,EAAS/xS,EAAO+xS,EAAS/xS,EACrDiyS,EAAMJ,EAAWx/D,EAAGo/D,IAAcxlE,EAAQ+lE,EAAQ,EAAIzB,EAAc,GACxEsB,EAAWz/D,EAAGs/D,IAAclkR,EAAK4kN,EAAGs/D,IAAcxlE,EAAQqkE,EAAcuB,EAAM,GAC9ED,EAAWz/D,EAAGq/D,IAAcp9P,EAAO63L,EAAQqkE,EAAc0B,EAAM,GAC/D59P,GAAQ29P,EACRrmO,EAAKm0K,UAAU+xD,GAAY,EAC7B,CAEArkR,EAAK4kN,EAAGs/D,KAAeC,EACvBnkR,EAAK6kN,EAAGq/D,KAAeC,CACzB,CAGA,SAAS3B,EAAiB7rE,EAAau2D,EAAYhlB,EAAU5jE,EAAgBC,GAG3E,IAOIrhN,EAPAwhT,GAAYxX,GAAc,CAAC,GAAG/uN,KAC9BwmO,EAAc,CAACrgG,EAAgBC,GAEnC,IAAKmgG,GAAYA,IAAax8B,EAC5B,OAAOy8B,EAIT,IAAIC,EAAWtgG,EAAiBC,EAC5BhxL,EAAOqxR,EAAWjuE,EAAY7oM,OAAOmrQ,gBAEzC,MAAO/1S,EAASwhT,EAAS1gN,WAAY,CAKnC,IAHA,IAAI11E,EAAM,EACNoqF,EAAWx1G,EAAO4+E,SAEb/6E,EAAI,EAAGwT,EAAMm+F,EAAS3zG,OAAQgC,EAAIwT,EAAKxT,IAC9CunB,GAAOoqF,EAAS3xG,GAAGggG,WAGrB,IAAI89M,EAAgBH,EAAS39M,WAE7B,GAAsB,IAAlB89M,EACF,OAAOF,EAGTpxR,GAAQjF,EAAMu2R,EAEd,IAAI/6D,EAAc5mP,EAAOq5O,WACrB3xK,EAAck/K,EAAY7jP,IAAI87S,GAC9B3C,EAAcl2S,KAAKwI,IAAIk5D,EAAao4O,EAAoBl5D,EAAal/K,IACzEr3C,GAAQ,EAAIq3C,EAAcA,GAAe,EAAIA,EAAcw0O,GAAel2S,KAAK4iB,IAAIyH,EAAM,IACzFA,EAAOlX,IAAqBkX,EAAOlX,GACnCqoS,EAAWxhT,CACb,CAEAqwB,EAAOqxR,IAAarxR,EAAOqxR,GAC3B,IAAIxrR,EAAQlwB,KAAK4iB,IAAIyH,EAAOqxR,EAAU,IACtC,MAAO,CAACtgG,EAAiBlrL,EAAOmrL,EAAkBnrL,EACpD,CAGA,SAASwpR,EAAsBjqH,EAAYylH,EAAUlR,GACnD,GAAIkR,EACF,MAAO,CACLv7R,EAAGu7R,EAASv7R,EACZ6e,EAAG08Q,EAAS18Q,GAIhB,IAAIojR,EAAkB,CACpBjiS,EAAG,EACH6e,EAAG,GAGL,IAAKwrQ,EACH,OAAO4X,EAMT,IAAIh9B,EAAaolB,EAAW/uN,KACxB+sB,EAAS48K,EAAW5sC,YAExB,IAAKhwI,EACH,OAAO45M,EAIT,IAAIC,EAAe,CAAC75M,EAAO3/D,MAAQ,EAAG2/D,EAAO1/D,OAAS,GAClD2yC,EAAO2pM,EAEX,MAAO3pM,EAAM,CACX,IAAIkmO,EAAalmO,EAAK+8J,YACtB6pE,EAAa,IAAMV,EAAWxhS,EAC9BkiS,EAAa,IAAMV,EAAW3iR,EAC9By8C,EAAOA,EAAK6lB,UACd,CAEA,MAAO,CACLnhF,EAAG81K,EAAWptJ,MAAQ,EAAIw5Q,EAAa,GACvCrjR,EAAGi3J,EAAWntJ,OAAS,EAAIu5Q,EAAa,GAE5C,CAIA,SAASlC,EAAS1kO,EAAM6mO,EAAU1C,EAAep6B,EAAUpxJ,GACzD,IAAIutL,EAAalmO,EAAK+8J,YAClB+pE,EAAsB3C,EAAcxrL,GACpC0oL,EAAkByF,GAAuBA,IAAwB9mO,EAErE,KAAI8mO,IAAwBzF,GAAmB1oL,IAAUwrL,EAAcv9S,QAAUo5E,IAAS+pM,GAA1F,CAIA/pM,EAAKm0K,UAAU,CAEbwsD,UAAU,EAGVhoD,WAAY0oD,IAAoBwF,EAASzsL,UAAU8rL,GACnD7E,gBAAiBA,IAChB,GAEH,IAAI0F,EAAgB,IAAIxK,EAAasK,EAASniS,EAAIwhS,EAAWxhS,EAAGmiS,EAAStjR,EAAI2iR,EAAW3iR,EAAGsjR,EAASz5Q,MAAOy5Q,EAASx5Q,QACpHivE,EAAKt8B,EAAKi/N,cAAgB,IAAI,SAAUtzM,GACtC+4M,EAAS/4M,EAAOo7M,EAAe5C,EAAep6B,EAAUpxJ,EAAQ,EAClE,GAdA,CAeF,CAEA,SAASksL,EAAoB1uD,GAC3B,OAAOA,EAAMruP,IAAIg8S,GAAyB3tD,EAAMruP,IAAIi8S,GAA2B,CACjF,CAEAh+S,EAAOD,QAAUusB,C,wBCriBjB,IAAI+3Q,EAAgBh9Q,EAAQ,OAExB45R,EAAU55R,EAAQ,MAElB8pN,EAAS9pN,EAAQ,OAoBjB1hB,EAAUwrO,EAAOxrO,QACjBu7S,EAAoB,YACpB50R,EAAW,CACb2lN,WAAY,UACZ3sI,MAAO,SAAUmtI,EAAalB,EAAS/nI,EAAK6oI,GAC1C,IAAIsxC,EAAOlxC,EAAY7oI,UAAU+5K,KAC7B5sP,EAAO4sP,EAAK5sP,KAEZA,EAAKoiR,aAITgI,EAAWpqR,EACX,CAAC,EAAG07M,EAAY60D,cAAchB,eAAgB7zD,EAChD,GAGF,SAAS0uE,EAAWlnO,EAAMmnO,EAAkBC,EAAmB5uE,GAC7D,IAAI8oE,EAAYthO,EAAKo+J,WACjB8nE,EAAalmO,EAAK+8J,YAEtB,GAAKmpE,IAAcA,EAAWvtD,WAAcutD,EAAWvF,SAAvD,CAIA,IAKI0G,EALAC,EAAqBtnO,EAAKo+J,SAAS6oE,GACnCM,EAAUC,EAAaF,EAAoBH,EAAkB3uE,GAE7D/P,EAAc6+E,EAAmBx/S,IAAI,eACrCszS,EAAwBkM,EAAmBx/S,IAAI,yBAGtB,MAAzBszS,IAEFiM,EAAgBI,EAAeF,EAASvnO,GACxCyoJ,EAAci/E,EAAqBtM,EAAuBiM,IAG5DrnO,EAAK46J,UAAU,cAAenS,GAC9B,IAAIw2E,EAAej/N,EAAKi/N,aAExB,GAAKA,GAAiBA,EAAar4S,OAI5B,CACL,IAAI03K,EAAUqpI,EAAmB3nO,EAAMshO,EAAW4E,EAAYoB,EAAoBC,EAAStI,GAE3F/nE,EAAO56H,KAAK2iM,GAAc,SAAUtzM,EAAO9kG,GAEzC,GAAI8kG,EAAMgtB,OAASyuL,EAAkBxgT,QAAU+kG,IAAUy7M,EAAkBz7M,EAAMgtB,OAAQ,CACvF,IAAIivL,EAAczvB,EAAUmpB,EAAWiG,EAAS57M,EAAO9kG,EAAOy3K,EAASk6D,GACvE0uE,EAAWv7M,EAAOi8M,EAAaR,EAAmB5uE,EACpD,CACF,GACF,MAbE6uE,EAAgBI,EAAeF,EAASvnO,GAExCA,EAAK46J,UAAU,QAASysE,EArB1B,CAiCF,CAEA,SAASG,EAAaF,EAAoBH,EAAkB3uE,GAC1D,IAAI+uE,EAAUrwE,EAAO5uH,OAAO,CAAC,EAAG6+L,GAC5BxL,EAA4BnjE,EAAYmjE,0BAQ5C,OAPAzkE,EAAO56H,KAAK,CAAC,QAAS,aAAc,oBAAoB,SAAUurM,GAEhElM,EAA0BkM,GAAcV,EAAiBU,GACzD,IAAIj0S,EAAM0zS,EAAmBx/S,IAAI+/S,GACjClM,EAA0BkM,GAAc,KACjC,MAAPj0S,IAAgB2zS,EAAQM,GAAcj0S,EACxC,IACO2zS,CACT,CAEA,SAASE,EAAeF,GACtB,IAAI/xR,EAAQsyR,EAAqBP,EAAS,SAE1C,GAAI/xR,EAAO,CACT,IAAIylR,EAAa6M,EAAqBP,EAAS,cAC3CrM,EAAkB4M,EAAqBP,EAAS,mBAUpD,OARIrM,IACF1lR,EAAQwxR,EAAQe,UAAUvyR,EAAO,KAAM,KAAM0lR,IAG3CD,IACFzlR,EAAQwxR,EAAQgB,YAAYxyR,EAAOylR,IAG9BzlR,CACT,CACF,CAEA,SAASkyR,EAAqBtM,EAAuBiM,GACnD,OAAwB,MAAjBA,EAAwBL,EAAQe,UAAUV,EAAe,KAAM,KAAMjM,GAAyB,IACvG,CAEA,SAAS0M,EAAqBP,EAASl+S,GACrC,IAAI3C,EAAQ6gT,EAAQl+S,GAEpB,GAAa,MAAT3C,GAA2B,SAAVA,EACnB,OAAOA,CAEX,CAEA,SAASihT,EAAmB3nO,EAAMshO,EAAW4E,EAAYoB,EAAoBC,EAAStI,GACpF,GAAKA,GAAiBA,EAAar4S,OAAnC,CAIA,IAAIqhT,EAAcC,EAAe5G,EAAW,UAA6B,MAAjBiG,EAAQ/xR,OAAmC,SAAlB+xR,EAAQ/xR,QAAqB0yR,EAAe5G,EAAW,eAAiB4G,EAAe5G,EAAW,oBAEnL,GAAK2G,EAAL,CAIA,IAAI3M,EAAYgG,EAAUx5S,IAAI,aAC1ByzS,EAAY+F,EAAUx5S,IAAI,aAC1Bi7P,EAAamjD,EAAWnjD,WAAWh8P,QAC1B,MAAbu0S,GAAqBA,EAAYv4C,EAAW,KAAOA,EAAW,GAAKu4C,GACtD,MAAbC,GAAqBA,EAAYx4C,EAAW,KAAOA,EAAW,GAAKw4C,GACnE,IAAIC,EAAiB8F,EAAUx5S,IAAI,kBAC/B2/F,EAAM,CACRr+F,KAAM6+S,EAAY5+S,KAClB05P,WAAYA,EACZlJ,OAAQouD,EAAYzsO,OAGL,UAAbisB,EAAIr+F,MAAwC,UAAnBoyS,GAAiD,OAAnBA,EAIzD/zM,EAAI4iM,cAAgB,UAHpB5iM,EAAI4iM,cAAgB,WACpB5iM,EAAIywK,MAAO,GAKb,IAAI55F,EAAU,IAAI8rH,EAAc3iM,GAEhC,OADA62E,EAAQ6pI,mBAAqB3M,EACtBl9H,CAvBP,CANA,CA8BF,CASA,SAAS4pI,EAAe5G,EAAWj4S,GAGjC,IAAImyE,EAAQ8lO,EAAUx5S,IAAIuB,GAC1B,OAAOqC,EAAQ8vE,IAAUA,EAAM50E,OAAS,CACtCyC,KAAMA,EACNmyE,MAAOA,GACL,IACN,CAEA,SAAS28M,EAAUmpB,EAAWiG,EAAS57M,EAAO9kG,EAAOy3K,EAASk6D,GAC5D,IAAI4vE,EAAelxE,EAAO5uH,OAAO,CAAC,EAAGi/L,GAErC,GAAIjpI,EAAS,CACX,IAAI+pI,EAAc/pI,EAAQl1K,KACtBoyS,EAAiC,UAAhB6M,GAA2B/pI,EAAQ6pI,mBACpDzhT,EAA2B,UAAnB80S,EAA6B30S,EAA2B,OAAnB20S,EAA0BhjE,EAAYujE,aAAapwM,EAAM8mK,SAAW9mK,EAAM/C,SAAS04M,EAAUx5S,IAAI,oBAClJsgT,EAAaC,GAAe/pI,EAAQisH,iBAAiB7jS,EACvD,CAEA,OAAO0hT,CACT,CAEAriT,EAAOD,QAAUusB,C,wBC/LjBjF,EAAQ,OAERA,EAAQ,M,wBCFRA,EAAQ,OAERA,EAAQ,M,wBCFR,IAAI2qN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBk7R,EAAyBl7R,EAAQ,OAEjCm7R,EAAcn7R,EAAQ,OAE1BA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAuBR2qN,EAAQ6Z,sBAAqB,SAAUjiN,GAErC,GAAIA,EAAQ,GACRA,EAAO64Q,aAA6C,IAA9B74Q,EAAO64Q,YAAY5hT,UAAkB+oC,EAAO64Q,YAAc,CAAC,GACnF,IAAIlkC,EAAO30O,EAAO64Q,YAAYlkC,KAI1BA,IAASptC,EAAOxrO,QAAQ44Q,KAC1B30O,EAAO64Q,YAAYlkC,KAAO,CAACA,GAE/B,CACF,IAGAvsC,EAAQonB,kBAAkBpnB,EAAQuC,SAASixC,UAAUC,WAAW,SAAUl0C,EAAS/nI,GAGjF+nI,EAAQizC,aAAa,eAAek+B,iBAAmBH,EAAuBI,QAAQpxE,EAAS/nI,EACjG,IAEAwoI,EAAQI,eAAe,CACrB/uO,KAAM,oBACN6e,MAAO,oBACP2T,OAAQ,sBACP2sR,E,wBC5DH,IAAIxwE,EAAU3qN,EAAQ,OAoBlBu7R,EAAmB5wE,EAAQ6wE,qBAAqB,CAClDx/S,KAAM,cACNq/S,iBAAkB,KAClBrtE,cAAe,CAEb9oM,KAAM,OAENu2Q,UAAW,KAEX7jE,OAAQ,EACRroK,EAAG,GACHvzE,KAAM,OAIN0/S,MAAM,EACNC,gBAAgB,EAChBriT,MAAO,KACP6vB,OAAQ,KAaR+tP,KAAM,GAGN1uP,UAAW,KACXw3Q,wBAAyB,IACzBl2P,UAAW,CACT1hB,MAAO,OACP4X,MAAO,EACPhkC,KAAM,SAER4/S,YAAa,CACXxzR,MAAO,yBAETse,MAAO,CACLxB,MAAM,EACNY,UAAW,KAEXllB,UAAW,OAEXwxQ,OAAQ,EACRhqQ,MAAO,OACP26D,QAAS,CAAC,EAAG,EAAG,EAAG,GACnB3xB,gBAAiB,OAEjBiqK,YAAa,KACbh8J,YAAa,EACbluC,WAAY,EACZC,YAAa,QAMfyqR,OAAQ,CACN32Q,MAAM,EAGNgY,KAAM,2MAIN4jC,KAAM,GAENsxM,OAAQ,GAGRhqQ,MAAO,OACP+I,WAAY,EACZC,YAAa,OACbC,cAAe,EACfC,cAAe,EAEfk+D,SAAU,OAIZvqE,EAAWs2R,EACf5iT,EAAOD,QAAUusB,C,wBC5GjB,IAAI0lN,EAAU3qN,EAAQ,OAElB87R,EAAiB97R,EAAQ,OAoBzB+7R,EAAkBpxE,EAAQqxE,oBAAoB,CAChDhgT,KAAM,cACNrF,OAAQ,SAAUslT,EAAwB/xE,EAAS/nI,GACjD,IAAI+5M,EAAqBhyE,EAAQizC,aAAa,WAC1Cs+B,EAAYQ,EAAuBvhT,IAAI,cAAgBwhT,GAAsBA,EAAmBxhT,IAAI,cAAgB,kBAGxHohT,EAAelrO,SAAS,cAAeuxB,GAAK,SAAUg6M,EAAa1+S,EAAG2hQ,GAElD,SAAdq8C,IAAyC,UAAhBU,GAA2BV,EAAU5sS,QAAQstS,IAAgB,IACxF/8C,EAAe,CACbpjQ,KAAM,oBACNmgT,YAAaA,EACb7kS,EAAG7Z,GAAKA,EAAE2rB,QACV+M,EAAG14B,GAAKA,EAAE4rB,SAGhB,GACF,EAKA+qD,OAAQ,SAAU81J,EAAS/nI,GACzB25M,EAAeM,WAAWj6M,EAAIoqJ,QAAS,eACvCwvD,EAAgBhjE,WAAWvhP,KAAKy6P,OAAQ,SAAU13P,UACpD,EAKAy4O,QAAS,SAAU9I,EAAS/nI,GAC1B25M,EAAeM,WAAW,cAAej6M,GACzC45M,EAAgBhjE,WAAWvhP,KAAKy6P,OAAQ,UAAW13P,UACrD,IAEE0qB,EAAW82R,EACfpjT,EAAOD,QAAUusB,C,wBC3DjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBq8R,EAAYr8R,EAAQ,MAEpBsuN,EAAUtuN,EAAQ,OAElBk7R,EAAyBl7R,EAAQ,OAEjCs8R,EAAYt8R,EAAQ,OAEpBu8R,EAAev8R,EAAQ,OAEvBiyO,EAASjyO,EAAQ,OAEjBm6P,EAAYloB,EAAOkoB,UAoBnBC,EAAQD,IACRruP,EAAQg+M,EAAOh+M,MACfvX,EAAOu1N,EAAOv1N,KAMlB,SAASioS,IAAmB,CAma5B,SAASnqE,EAAY3B,EAAgB+rE,EAAerjT,EAAIy1D,GAEjD6tP,EAAWtiC,EAAMhhR,GAAIujT,SAAU9tP,KAClCurN,EAAMhhR,GAAIujT,SAAW9tP,EACrB4tP,EAAgBnuE,EAAQ+D,YAAYj5O,EAAIy1D,EAAO6hL,IAAmBt3O,EAAGuoE,gBAAiBvoE,EAAGi1B,KAAKwgC,IAElG,CAEA,SAAS6tP,EAAWE,EAAWC,GAC7B,GAAI/yE,EAAOhxO,SAAS8jT,IAAc9yE,EAAOhxO,SAAS+jT,GAAW,CAC3D,IAAIj+N,GAAS,EAIb,OAHAkrJ,EAAO56H,KAAK2tM,GAAU,SAAU7/R,EAAM3hB,GACpCujF,EAASA,GAAU89N,EAAWE,EAAUvhT,GAAM2hB,EAChD,MACS4hE,CACX,CACE,OAAOg+N,IAAcC,CAEzB,CAEA,SAASC,EAAoBC,EAASC,GACpCD,EAAQC,EAAiBtiT,IAAI,cAAgB,OAAS,SACxD,CAEA,SAASuiT,EAAoBC,GAC3B,MAAO,CACL5zR,SAAU4zR,EAAM5zR,SAAS3vB,QACzB8xJ,SAAUyxJ,EAAMzxJ,UAAY,EAEhC,CAEA,SAAS0xJ,EAAqBzqQ,EAAOsqQ,EAAkBr2J,GACrD,IAAIp3E,EAAIytO,EAAiBtiT,IAAI,KACzBk9O,EAASolE,EAAiBtiT,IAAI,UAClCg4C,GAASA,EAAM29M,UAAS,SAAUj3P,GAChB,UAAZA,EAAG4C,OACA,MAALuzE,IAAcn2E,EAAGm2E,EAAIA,GACX,MAAVqoK,IAAmBx+O,EAAGw+O,OAASA,GAC/Bx+O,EAAGutJ,OAASA,EAEhB,GACF,CA1cA61J,EAAgBz9S,UAAY,CAI1Bq+S,OAAQ,KAKRC,gBAAiB,KAKjBC,QAAS,KAKTC,WAAW,EAKXC,WAAY,KAKZC,YAAa,KAKbC,aAAc,KAOdpxH,mBAAoB,GAKpB31L,OAAQ,SAAUgiR,EAAWqkC,EAAkB76M,EAAKurE,GAClD,IAAIp0K,EAAQ0jT,EAAiBtiT,IAAI,SAC7ByuB,EAAS6zR,EAAiBtiT,IAAI,UASlC,GANAlD,KAAKmmT,WAAahlC,EAClBnhR,KAAKomT,kBAAoBZ,EACzBxlT,KAAKqmT,KAAO17M,EAIPurE,GAAel2K,KAAKgmT,aAAelkT,GAAS9B,KAAKimT,cAAgBt0R,EAAtE,CAIA3xB,KAAKgmT,WAAalkT,EAClB9B,KAAKimT,YAAct0R,EACnB,IAAIupB,EAAQl7C,KAAK4lT,OACbvB,EAASrkT,KAAK8lT,QAElB,IAAKn0R,GAAqB,SAAXA,EAIb,OAFAupB,GAASA,EAAM92C,YACfigT,GAAUA,EAAOjgT,QAInB82C,GAASA,EAAMxN,OACf22Q,GAAUA,EAAO32Q,OAEjB,IAAIglN,EAAW,CAAC,EAChB1yP,KAAKsmT,aAAa5zD,EAAU5wP,EAAOq/Q,EAAWqkC,EAAkB76M,GAEhE,IAAI47M,EAAa7zD,EAAS6zD,WAEtBA,IAAevmT,KAAK6lT,iBACtB7lT,KAAK0iB,MAAMioF,GAGb3qG,KAAK6lT,gBAAkBU,EACvB,IAAItB,EAAgBjlT,KAAKwmT,eAAiBxmT,KAAKymT,mBAAmBtlC,EAAWqkC,GAE7E,GAAKtqQ,EAKE,CACL,IAAIwrQ,EAAgBp0E,EAAOuD,MAAMgF,EAAa2qE,EAAkBP,GAChEjlT,KAAK2mT,gBAAgBzrQ,EAAOw3M,EAAUg0D,EAAelB,GACrDxlT,KAAK4mT,cAAc1rQ,EAAOw3M,EAAUg0D,EAAelB,EACrD,MAREtqQ,EAAQl7C,KAAK4lT,OAAS,IAAI9uE,EAAQM,MAClCp3O,KAAK6mT,gBAAgB3rQ,EAAOw3M,EAAUyuB,EAAWqkC,GACjDxlT,KAAK8mT,cAAc5rQ,EAAOw3M,EAAUyuB,EAAWqkC,GAC/C76M,EAAIoqJ,QAAQx0P,IAAI26C,GAOlByqQ,EAAqBzqQ,EAAOsqQ,GAAkB,GAE9CxlT,KAAK+mT,cAAcjlT,EA1CnB,CA2CF,EAKA86E,OAAQ,SAAU+tB,GAChB3qG,KAAK0iB,MAAMioF,EACb,EAKA6wI,QAAS,SAAU7wI,GACjB3qG,KAAK0iB,MAAMioF,EACb,EAKA87M,mBAAoB,SAAUtlC,EAAWqkC,GACvC,IAAIx0R,EAAYw0R,EAAiBtiT,IAAI,aACjCkoC,EAAO+1O,EAAU/1O,KACjB47Q,EAA+B,aAAd57Q,EAAK5mC,KACtByiT,EAAUzB,EAAiBtiT,IAAI,QAEnC,IAAK+jT,IAAYD,EACf,OAAO,EAGT,GAAkB,SAAdh2R,GAAqC,MAAbA,EAAmB,CAC7C,IAAI8jK,EAAqB90L,KAAK80L,mBAE9B,GAAIkyH,GAAkB57Q,EAAK4/M,eAAiBl2D,EAC1C,OAAO,EAMT,GAAImyH,EAAS,CACX,IAAIC,EAAkBxD,EAAuByD,YAAYhmC,GAAW+lC,gBAChEh9B,EAAa9+O,EAAK8/M,YAEtB,OAAO/kP,KAAK6iB,IAAIkhQ,EAAW,GAAKA,EAAW,IAAMg9B,EAAkBpyH,CACrE,CAEA,OAAO,CACT,CAEA,OAAqB,IAAd9jK,CACT,EAMAs1R,aAAc,SAAU5zD,EAAU5wP,EAAOq/Q,EAAWqkC,EAAkB76M,GAAM,EAM5Ek8M,gBAAiB,SAAU3rQ,EAAOw3M,EAAUyuB,EAAWqkC,GACrD,IAAI4B,EAAgB10D,EAAS3iN,QAE7B,GAAIq3Q,EAAe,CACjB,IAAIC,EAAYzkC,EAAM1nO,GAAOmsQ,UAAY,IAAIvwE,EAAQswE,EAAc5iT,MAAM8vB,EAAMo+N,EAAS3iN,UACxFmL,EAAM36C,IAAI8mT,EACZ,CACF,EAKAP,cAAe,SAAU5rQ,EAAOw3M,EAAUyuB,EAAWqkC,GACnD,GAAI9yD,EAASxjN,MAAO,CAClB,IAAIq2Q,EAAU3iC,EAAM1nO,GAAOqqQ,QAAU,IAAIzuE,EAAQuF,KAAK/nN,EAAMo+N,EAASxjN,QACrEgM,EAAM36C,IAAIglT,GACVD,EAAoBC,EAASC,EAC/B,CACF,EAKAmB,gBAAiB,SAAUzrQ,EAAOw3M,EAAU7X,GAC1C,IAAIwsE,EAAYzkC,EAAM1nO,GAAOmsQ,UAEzBA,GAAa30D,EAAS3iN,UACxBs3Q,EAAUx7H,SAAS6mE,EAAS3iN,QAAQnkC,OACpCivO,EAAYwsE,EAAW,CACrB7xR,MAAOk9N,EAAS3iN,QAAQva,QAG9B,EAKAoxR,cAAe,SAAU1rQ,EAAOw3M,EAAU7X,EAAa2qE,GACrD,IAAID,EAAU3iC,EAAM1nO,GAAOqqQ,QAEvBA,IACFA,EAAQ15H,SAAS6mE,EAASxjN,MAAMtjC,OAChCivO,EAAY0qE,EAAS,CAGnB/vR,MAAOk9N,EAASxjN,MAAM1Z,MACtB1D,SAAU4gO,EAASxjN,MAAMpd,WAE3BwzR,EAAoBC,EAASC,GAEjC,EAKAuB,cAAe,SAAUjlT,GACvB,IAAI9B,KAAK+lT,WAAc/lT,KAAKsnT,sBAA5B,CAIA,IAcI51M,EAdA8zM,EAAmBxlT,KAAKomT,kBAExBj0B,EAAKnyR,KAAKqmT,KAAKtxD,QAEfsvD,EAASrkT,KAAK8lT,QACdyB,EAAc/B,EAAiBhsE,SAAS,UACxC7nN,EAAS6zR,EAAiBtiT,IAAI,UAElC,IAAKqkT,EAAYrkT,IAAI,UAAYyuB,GAAqB,SAAXA,EAGzC,OAFA0yR,GAAUlyB,EAAGv1M,OAAOynO,QACpBrkT,KAAK8lT,QAAU,MAMZ9lT,KAAK8lT,UACRp0M,GAAS,EACT2yM,EAASrkT,KAAK8lT,QAAUhvE,EAAQ0wE,WAAWD,EAAYrkT,IAAI,QAAS,CAClEwvB,OAAQ,OACRuyO,WAAW,EACXwiD,YAAa,SAAUxhT,GAErB6+S,EAAUhtR,KAAK7xB,EAAEod,MACnB,EACAqkS,YAAa3qS,EAAK/c,KAAK2nT,kBAAmB3nT,KAAM,EAAG,GACnD+8Q,MAAOhgQ,EAAK/c,KAAK2nT,kBAAmB3nT,MACpCoiS,UAAWrlR,EAAK/c,KAAK4nT,iBAAkB5nT,QAEzCmyR,EAAG5xR,IAAI8jT,IAGTsB,EAAqBtB,EAAQmB,GAAkB,GAE/C,IAAIqC,EAAgB,CAAC,QAAS,cAAe,cAAe,UAAW,cAAe,aAAc,gBAAiB,iBACrHxD,EAAOx4H,SAAS07H,EAAY/nE,aAAa,KAAMqoE,IAE/C,IAAIC,EAAaP,EAAYrkT,IAAI,QAE5BovO,EAAOxrO,QAAQghT,KAClBA,EAAa,CAACA,EAAYA,IAG5BzD,EAAOxtR,KAAK,QAAS,CAACixR,EAAW,GAAK,EAAGA,EAAW,GAAK,IACzD/C,EAAa9tD,eAAej3P,KAAM,yBAA0BunT,EAAYrkT,IAAI,aAAe,EAAG,WAE9FlD,KAAK+nT,mBAAmBjmT,EAAO4vG,EAhD/B,CAiDF,EAKAq2M,mBAAoB,SAAUjmT,EAAO4vG,GACnCmpI,EAAY76O,KAAKomT,mBAAoB10M,GAAU1xG,KAAKwmT,eAAgBxmT,KAAK8lT,QAASL,EAAoBzlT,KAAKgoT,mBAAmBlmT,EAAO9B,KAAKmmT,WAAYnmT,KAAKomT,oBAC7J,EAKAuB,kBAAmB,SAAUhiP,EAAIC,GAC/B,IAAIy+O,EAASrkT,KAAK8lT,QAElB,GAAKzB,EAAL,CAIArkT,KAAK+lT,WAAY,EAEjB,IAAIL,EAAQ1lT,KAAKsnT,sBAAsB7B,EAAoBpB,GAAS,CAAC1+O,EAAIC,GAAK5lE,KAAKmmT,WAAYnmT,KAAKomT,mBACpGpmT,KAAKkmT,aAAeR,EACpBrB,EAAOl6O,gBACPk6O,EAAOxtR,KAAK4uR,EAAoBC,IAChC9iC,EAAMyhC,GAAQc,SAAW,KAEzBnlT,KAAKioT,wBAVL,CAWF,EAMAA,uBAAwB,WACtB,IAAI5D,EAASrkT,KAAK8lT,QAElB,GAAKzB,EAAL,CAIA,IAAI6D,EAAcloT,KAAKkmT,aACnB/kC,EAAYnhR,KAAKmmT,WAErBnmT,KAAKqmT,KAAKz+C,eAAe,CACvBpjQ,KAAM,oBACNsb,EAAGooS,EAAYC,YAAY,GAC3BxpR,EAAGupR,EAAYC,YAAY,GAC3BC,cAAeF,EAAYE,cAC3BC,SAAU,CAAC,CACTxvB,QAAS1X,EAAU/1O,KAAK6mG,IACxBl2F,UAAWolO,EAAUuzB,kBAZzB,CAeF,EAKAkT,iBAAkB,SAAU3C,GAC1BjlT,KAAK+lT,WAAY,EACjB,IAAI1B,EAASrkT,KAAK8lT,QAElB,GAAKzB,EAAL,CAIA,IAAIviT,EAAQ9B,KAAKomT,kBAAkBljT,IAAI,SAKvClD,KAAK+nT,mBAAmBjmT,GAIxB9B,KAAKqmT,KAAKz+C,eAAe,CACvBpjQ,KAAM,WAZR,CAcF,EAUAwjT,mBAAoB,KAWpBV,sBAAuB,KAKvB5kS,MAAO,SAAUioF,GACf3qG,KAAKgmT,WAAa,KAClBhmT,KAAKimT,YAAc,KACnB,IAAI9zB,EAAKxnL,EAAIoqJ,QACT75M,EAAQl7C,KAAK4lT,OACbvB,EAASrkT,KAAK8lT,QAEd3zB,GAAMj3O,IACRl7C,KAAK6lT,gBAAkB,KACvB3qQ,GAASi3O,EAAGv1M,OAAO1hC,GACnBmpQ,GAAUlyB,EAAGv1M,OAAOynO,GACpBrkT,KAAK4lT,OAAS,KACd5lT,KAAK8lT,QAAU,KACf9lT,KAAKkmT,aAAe,KAExB,EAKAoC,QAAS,WAAa,EAStBC,WAAY,SAAU1mE,EAAIC,EAAI0mE,GAE5B,OADAA,EAAYA,GAAa,EAClB,CACL1oS,EAAG+hO,EAAG2mE,GACN7pR,EAAGkjN,EAAG,EAAI2mE,GACVhgR,MAAOs5M,EAAG0mE,GACV//Q,OAAQq5M,EAAG,EAAI0mE,GAEnB,GAEFxD,EAAgBz9S,UAAU2F,YAAc83S,EA6CxCH,EAAU4D,kBAAkBzD,GAC5B,IAAIv3R,EAAWu3R,EACf7jT,EAAOD,QAAUusB,C,wBC1fjB,IAAIu3R,EAAkBx8R,EAAQ,OAE1BkgS,EAAalgS,EAAQ,MAErBmgS,EAAsBngS,EAAQ,OAE9BogS,EAAWpgS,EAAQ,OAoBnBqgS,EAAuB7D,EAAgBthM,OAAO,CAIhD4iM,aAAc,SAAU5zD,EAAU5wP,EAAOq/Q,EAAWqkC,EAAkB76M,GACpE,IAAIv/D,EAAO+1O,EAAU/1O,KACjBD,EAAOC,EAAKD,KACZ29Q,EAAkBtD,EAAiBtiT,IAAI,QACvC6lT,EAAcC,EAAa79Q,EAAMC,GAAM04M,aAAa14M,GAAM69Q,kBAC1DC,EAAa99Q,EAAK44M,cAAc54M,EAAK64M,YAAYniP,GAAO,IAE5D,GAAIgnT,GAAuC,SAApBA,EAA4B,CACjD,IAAI9qC,EAAU0qC,EAAWS,aAAa3D,GAClC4B,EAAgBgC,EAAoBN,GAAiB19Q,EAAM89Q,EAAYH,GAC3E3B,EAAcx7S,MAAQoyQ,EACtBtrB,EAAS6zD,WAAaa,EAAc5iT,KACpCkuP,EAAS3iN,QAAUq3Q,CACrB,CAEA,IAAIxxH,EAAa+yH,EAAoBxgN,OAAOh9D,EAAKomN,MAAO4vB,GACxDunC,EAAWW,kCAAkCvnT,EAAO4wP,EAAU98D,EAAYurF,EAAWqkC,EAAkB76M,EACzG,EAKAq9M,mBAAoB,SAAUlmT,EAAOq/Q,EAAWqkC,GAC9C,IAAI5vH,EAAa+yH,EAAoBxgN,OAAOg5K,EAAU/1O,KAAKD,KAAKomN,MAAO4vB,EAAW,CAChFmoC,aAAa,IAGf,OADA1zH,EAAWkoG,YAAc0nB,EAAiBtiT,IAAI,iBACvC,CACL4uB,SAAU42R,EAAWa,uBAAuBpoC,EAAU/1O,KAAMtpC,EAAO8zL,GACnE3hC,SAAU2hC,EAAW3hC,UAAY2hC,EAAW4zH,eAAiB,EAAIrjT,KAAK40B,GAAK,GAE/E,EAKAusR,sBAAuB,SAAUjgP,EAAWof,EAAO06L,EAAWqkC,GAC5D,IAAIp6Q,EAAO+1O,EAAU/1O,KACjBD,EAAOC,EAAKD,KACZ++O,EAAa9+O,EAAK69Q,iBAAgB,GAClCF,EAAcC,EAAa79Q,EAAMC,GAAM04M,aAAa14M,GAAM69Q,kBAC1DxnC,EAAwB,MAAbr2O,EAAK6mG,IAAc,EAAI,EAClCw3K,EAAepiP,EAAUv1C,SAC7B23R,EAAahoC,IAAah7L,EAAMg7L,GAChCgoC,EAAahoC,GAAYt7Q,KAAKyI,IAAIs7Q,EAAW,GAAIu/B,EAAahoC,IAC9DgoC,EAAahoC,GAAYt7Q,KAAKwI,IAAIu7Q,EAAW,GAAIu/B,EAAahoC,IAC9D,IAAIioC,GAAoBX,EAAY,GAAKA,EAAY,IAAM,EACvDZ,EAAc,CAACuB,EAAkBA,GACrCvB,EAAY1mC,GAAYgoC,EAAahoC,GAErC,IAAIkoC,EAAiB,CAAC,CACpB3sD,cAAe,UACd,CACDjjN,MAAO,WAET,MAAO,CACLjoB,SAAU23R,EACVx1J,SAAU5sF,EAAU4sF,SACpBk0J,YAAaA,EACbC,cAAeuB,EAAeloC,GAElC,IAGF,SAASunC,EAAa79Q,EAAMC,GAC1B,IAAIy3D,EAAM,CAAC,EAEX,OADAA,EAAIz3D,EAAK6mG,IAAM,aAAe7mG,EAAKnpC,MAC5BkpC,EAAK69Q,aAAanmN,EAC3B,CAEA,IAAIumN,EAAsB,CACxB59Q,KAAM,SAAUJ,EAAM89Q,EAAYH,GAChC,IAAI9vC,EAAcyvC,EAAWkB,cAAc,CAACV,EAAYH,EAAY,IAAK,CAACG,EAAYH,EAAY,IAAKc,EAAgBz+Q,IACvH,MAAO,CACL5mC,KAAM,OACNoqP,kBAAkB,EAClBp5N,MAAOyjP,EAEX,EACA6wC,OAAQ,SAAU1+Q,EAAM89Q,EAAYH,GAClC,IAAIl+D,EAAY1kP,KAAKwI,IAAI,EAAGy8B,EAAK4/M,gBAC7B++D,EAAOhB,EAAY,GAAKA,EAAY,GACxC,MAAO,CACLvkT,KAAM,OACNgxB,MAAOkzR,EAAWsB,cAAc,CAACd,EAAar+D,EAAY,EAAGk+D,EAAY,IAAK,CAACl+D,EAAWk/D,GAAOF,EAAgBz+Q,IAErH,GAGF,SAASy+Q,EAAgBz+Q,GACvB,MAAoB,MAAbA,EAAK6mG,IAAc,EAAI,CAChC,CAEA22K,EAASqB,yBAAyB,uBAAwBpB,GAC1D,IAAIp7R,EAAWo7R,EACf1nT,EAAOD,QAAUusB,C,wBC7HjB,IAAIy8R,EAAa1hS,EAAQ,OAErBw8R,EAAkBx8R,EAAQ,OAE1BsuN,EAAUtuN,EAAQ,OAElBkgS,EAAalgS,EAAQ,MAErBwiH,EAASxiH,EAAQ,OAEjB2hS,EAAc3hS,EAAQ,OAEtBogS,EAAWpgS,EAAQ,OAoBnB4hS,EAAmBpF,EAAgBthM,OAAO,CAI5C4iM,aAAc,SAAU5zD,EAAU5wP,EAAOq/Q,EAAWqkC,EAAkB76M,GACpE,IAAIv/D,EAAO+1O,EAAU/1O,KAEJ,UAAbA,EAAK6mG,MACPjyI,KAAK80L,mBAAqB3uL,KAAK40B,GAAK,IAGtC,IAGIsvR,EAHApuE,EAAQ7wM,EAAK6wM,MACbquE,EAAYruE,EAAM6H,aAAa14M,GAC/B29Q,EAAcuB,EAAUp/D,YAE5Bm/D,EAAaj/Q,EAAK,SAAW8+Q,EAAWK,aAAan/Q,EAAK6mG,MAAMnwI,GAChE,IAAIgnT,EAAkBtD,EAAiBtiT,IAAI,QAE3C,GAAI4lT,GAAuC,SAApBA,EAA4B,CACjD,IAAI9qC,EAAU0qC,EAAWS,aAAa3D,GAClC4B,EAAgBgC,EAAoBN,GAAiB19Q,EAAM6wM,EAAOouE,EAAYtB,EAAa/qC,GAC/FopC,EAAcx7S,MAAQoyQ,EACtBtrB,EAAS6zD,WAAaa,EAAc5iT,KACpCkuP,EAAS3iN,QAAUq3Q,CACrB,CAEA,IAAItpB,EAAc0nB,EAAiBtiT,IAAI,gBACnCsnT,EAAW1+P,EAAiBhqD,EAAOq/Q,EAAWqkC,EAAkBvpE,EAAO6hD,GAC3E4qB,EAAW+B,mBAAmB/3D,EAAUyuB,EAAWqkC,EAAkB76M,EAAK6/M,EAC5E,IAIF,SAAS1+P,EAAiBhqD,EAAOq/Q,EAAWqkC,EAAkBvpE,EAAO6hD,GACnE,IAAI1yP,EAAO+1O,EAAU/1O,KACjBwsM,EAAQxsM,EAAK64M,YAAYniP,GACzB4oT,EAAYzuE,EAAM0uE,eAAez/D,YAAY,GACjDw/D,EAAYA,EAAY,IAAMvkT,KAAK40B,GACnC,IACIjJ,EACAioB,EACAijN,EAHA4tD,EAAe3uE,EAAM4uE,gBAAgB3/D,YAKzC,GAAiB,WAAb9/M,EAAK6mG,IAAkB,CACzB,IAAI5qE,EAAY2jE,EAAOhkI,SACvBgkI,EAAO50G,OAAOixC,EAAWA,EAAWqjP,GACpC1/K,EAAO10G,UAAU+wC,EAAWA,EAAW,CAAC40K,EAAM/sN,GAAI+sN,EAAM9sN,KACxD2C,EAAWglN,EAAQmyB,eAAe,CAACrxB,GAAQkmD,GAAcz2N,GACzD,IAAIyjP,EAAgB3pC,EAAU3nC,SAAS,aAAat2O,IAAI,WAAa,EACjEu5P,EAAc0tD,EAAYY,gBAAgBL,EAAWI,EAAgB3kT,KAAK40B,GAAK,KAAM,GACzFgf,EAAQ0iN,EAAYpiO,UACpB2iO,EAAgBP,EAAYM,iBAC9B,KAAO,CAEL,IAAIhwO,EAAI69R,EAAa,GACrB94R,EAAWmqN,EAAM4iD,aAAa,CAAC9xQ,EAAI+wQ,EAAalmD,IAChD,IAAI1oN,EAAK+sN,EAAM/sN,GACXC,EAAK8sN,EAAM9sN,GACf4qB,EAAQ5zC,KAAK6iB,IAAI8I,EAAS,GAAK5C,GAAMnC,EAAI,GAAM,SAAW+E,EAAS,GAAK5C,EAAK,OAAS,QACtF8tO,EAAgB72P,KAAK6iB,IAAI8I,EAAS,GAAK3C,GAAMpC,EAAI,GAAM,SAAW+E,EAAS,GAAK3C,EAAK,MAAQ,QAC/F,CAEA,MAAO,CACL2C,SAAUA,EACVioB,MAAOA,EACPijN,cAAeA,EAEnB,CAEA,IAAIosD,EAAsB,CACxB59Q,KAAM,SAAUJ,EAAM6wM,EAAOouE,EAAYtB,EAAa/qC,GACpD,MAAoB,UAAb5yO,EAAK6mG,IAAkB,CAC5BztI,KAAM,OACNgxB,MAAOkzR,EAAWkB,cAAc3tE,EAAM4iD,aAAa,CAACkqB,EAAY,GAAIsB,IAAcpuE,EAAM4iD,aAAa,CAACkqB,EAAY,GAAIsB,MACpH,CACF7lT,KAAM,SACNgxB,MAAO,CACLtG,GAAI+sN,EAAM/sN,GACVC,GAAI8sN,EAAM9sN,GACVpC,EAAGs9R,GAGT,EACAP,OAAQ,SAAU1+Q,EAAM6wM,EAAOouE,EAAYtB,EAAa/qC,GACtD,IAAInzB,EAAY1kP,KAAKwI,IAAI,EAAGy8B,EAAK4/M,gBAC7B1gN,EAASnkC,KAAK40B,GAAK,IACvB,MAAoB,UAAbqQ,EAAK6mG,IAAkB,CAC5BztI,KAAM,SACNgxB,MAAOkzR,EAAWsC,gBAAgB/uE,EAAM/sN,GAAI+sN,EAAM9sN,GAAI45R,EAAY,GAAIA,EAAY,KAChFsB,EAAax/D,EAAY,GAAKvgN,GAAuBugN,EAAY,EAAzBw/D,GAA8B//Q,IACtE,CACF9lC,KAAM,SACNgxB,MAAOkzR,EAAWsC,gBAAgB/uE,EAAM/sN,GAAI+sN,EAAM9sN,GAAIk7R,EAAax/D,EAAY,EAAGw/D,EAAax/D,EAAY,EAAG,EAAa,EAAV1kP,KAAK40B,IAE1H,GAEF6tR,EAASqB,yBAAyB,mBAAoBG,GACtD,IAAI38R,EAAW28R,EACfjpT,EAAOD,QAAUusB,C,wBClIjB,IAAIu3R,EAAkBx8R,EAAQ,OAE1BkgS,EAAalgS,EAAQ,MAErByiS,EAAmBziS,EAAQ,OAE3BogS,EAAWpgS,EAAQ,OAoBnB0iS,EAAK,CAAC,IAAK,KACXC,EAAK,CAAC,QAAS,UACfC,EAAoBpG,EAAgBthM,OAAO,CAI7C4iM,aAAc,SAAU5zD,EAAU5wP,EAAOq/Q,EAAWqkC,EAAkB76M,GACpE,IAAIv/D,EAAO+1O,EAAU/1O,KACjBynM,EAAWznM,EAAKipM,iBAChB00E,EAAcE,EAAgBp2E,EAAU,EAAIw4E,EAAiBjgR,IAC7D89Q,EAAar2E,EAASiC,YAAYhzO,GAAO,GACzCgnT,EAAkBtD,EAAiBtiT,IAAI,QAE3C,GAAI4lT,GAAuC,SAApBA,EAA4B,CACjD,IAAI9qC,EAAU0qC,EAAWS,aAAa3D,GAClC4B,EAAgBgC,EAAoBN,GAAiB19Q,EAAM89Q,EAAYH,GAC3E3B,EAAcx7S,MAAQoyQ,EACtBtrB,EAAS6zD,WAAaa,EAAc5iT,KACpCkuP,EAAS3iN,QAAUq3Q,CACrB,CAEA,IAAIxxH,EAAaq1H,EAAiB9iN,OAAOg5K,GACzCunC,EAAWW,kCAAkCvnT,EAAO4wP,EAAU98D,EAAYurF,EAAWqkC,EAAkB76M,EACzG,EAKAq9M,mBAAoB,SAAUlmT,EAAOq/Q,EAAWqkC,GAC9C,IAAI5vH,EAAaq1H,EAAiB9iN,OAAOg5K,EAAW,CAClDmoC,aAAa,IAGf,OADA1zH,EAAWkoG,YAAc0nB,EAAiBtiT,IAAI,iBACvC,CACL4uB,SAAU42R,EAAWa,uBAAuBpoC,EAAU/1O,KAAMtpC,EAAO8zL,GACnE3hC,SAAU2hC,EAAW3hC,UAAY2hC,EAAW4zH,eAAiB,EAAIrjT,KAAK40B,GAAK,GAE/E,EAKAusR,sBAAuB,SAAUjgP,EAAWof,EAAO06L,EAAWqkC,GAC5D,IAAIp6Q,EAAO+1O,EAAU/1O,KACjBynM,EAAWznM,EAAKipM,iBAChBotC,EAAW4pC,EAAiBjgR,GAC5B8+O,EAAa++B,EAAgBp2E,EAAU4uC,GACvCgoC,EAAepiP,EAAUv1C,SAC7B23R,EAAahoC,IAAah7L,EAAMg7L,GAChCgoC,EAAahoC,GAAYt7Q,KAAKyI,IAAIs7Q,EAAW,GAAIu/B,EAAahoC,IAC9DgoC,EAAahoC,GAAYt7Q,KAAKwI,IAAIu7Q,EAAW,GAAIu/B,EAAahoC,IAC9D,IAAIsnC,EAAcE,EAAgBp2E,EAAU,EAAI4uC,GAC5CioC,GAAoBX,EAAY,GAAKA,EAAY,IAAM,EACvDZ,EAAc,CAACuB,EAAkBA,GAErC,OADAvB,EAAY1mC,GAAYgoC,EAAahoC,GAC9B,CACL3vP,SAAU23R,EACVx1J,SAAU5sF,EAAU4sF,SACpBk0J,YAAaA,EACbC,cAAe,CACbprD,cAAe,UAGrB,IAEEosD,EAAsB,CACxB59Q,KAAM,SAAUJ,EAAM89Q,EAAYH,GAChC,IAAI9vC,EAAcyvC,EAAWkB,cAAc,CAACV,EAAYH,EAAY,IAAK,CAACG,EAAYH,EAAY,IAAKsC,EAAiBjgR,IACxH,MAAO,CACL5mC,KAAM,OACNoqP,kBAAkB,EAClBp5N,MAAOyjP,EAEX,EACA6wC,OAAQ,SAAU1+Q,EAAM89Q,EAAYH,GAClC,IAAIl+D,EAAYz/M,EAAK4/M,eACjB++D,EAAOhB,EAAY,GAAKA,EAAY,GACxC,MAAO,CACLvkT,KAAM,OACNgxB,MAAOkzR,EAAWsB,cAAc,CAACd,EAAar+D,EAAY,EAAGk+D,EAAY,IAAK,CAACl+D,EAAWk/D,GAAOsB,EAAiBjgR,IAEtH,GAGF,SAASigR,EAAiBjgR,GACxB,OAAOA,EAAKgtM,eAAiB,EAAI,CACnC,CAEA,SAAS6wE,EAAgBp2E,EAAU4uC,GACjC,IAAIxkP,EAAO41M,EAAS6M,UACpB,MAAO,CAACziN,EAAKiuR,EAAGzpC,IAAYxkP,EAAKiuR,EAAGzpC,IAAaxkP,EAAKkuR,EAAG1pC,IAC3D,CAEAmnC,EAASqB,yBAAyB,oBAAqBmB,GACvD,IAAI39R,EAAW29R,EACfjqT,EAAOD,QAAUusB,C,iCCzHjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBiyO,EAASjyO,EAAQ,OAEjBm6P,EAAYloB,EAAOkoB,UAEnB2oC,EAAc9iS,EAAQ,OAEtB+iS,EAAsB/iS,EAAQ,OAoB9BkvF,EAAO46H,EAAO56H,KACdm+H,EAAQvD,EAAOuD,MACf+sC,EAAQD,IA6BZ,SAASl1P,EAAS+lN,EAASd,EAAS/nI,GAClC,IAAIg6M,EAAcnxE,EAAQmxE,YACtB30S,EAAQ,CAACwjO,EAAQ1zN,EAAG0zN,EAAQ70M,GAC5B6sR,EAASh4E,EACTo0B,EAAiBp0B,EAAQo0B,gBAAkBt1B,EAAOv1N,KAAK4tF,EAAIi9J,eAAgBj9J,GAC3Ek5M,EAAmBnxE,EAAQizC,aAAa,eAAek+B,iBAG3D,GAAKA,EAAL,CAII4H,EAAaz7S,KAGfA,EAAQu7S,EAAoB,CAC1B7sE,YAAa8sE,EAAO9sE,YAGpB7K,UAAW23E,EAAO33E,WACjBnB,GAAS1iO,OAGd,IAAI07S,EAAiBD,EAAaz7S,GAK9B27S,EAAgBH,EAAOnD,SACvBA,EAAWxE,EAAiBwE,SAC5BuD,EAA6B,UAAhBjH,GAA2B8G,EAAaz7S,GACrD67S,EAAe,CAAC,EAChBC,EAAe,CAAC,EAChBC,EAAiB,CACnB90S,KAAM,GACNyS,IAAK,CAAC,GAEJsiS,EAAW,CACbC,YAAap2E,EAAMo2E,EAAaH,GAChCI,YAAar2E,EAAMq2E,EAAaH,IAGlCr0M,EAAKmsM,EAAiBsI,aAAa,SAAUt5E,EAAUu5E,GAErD,IAAIC,EAAwBX,GAAkB74E,EAASopD,aAAajsR,GACpE0nG,EAAKmsM,EAAiBA,iBAAiBuI,IAAc,SAAUE,EAAUzoT,GACvE,IAAIunC,EAAOkhR,EAASlhR,KAChBmhR,EAAgBC,EAAkBb,EAAeW,GAErD,IAAKV,GAAcS,KAA2BV,GAAiBY,GAAgB,CAC7E,IAAIv9S,EAAMu9S,GAAiBA,EAAczqT,MAE9B,MAAPkN,GAAgB08S,IAClB18S,EAAMo8B,EAAK2pM,YAAY/kO,IAGlB,MAAPhB,GAAey9S,EAAcH,EAAUt9S,EAAKg9S,GAAU,EAAOH,EAC/D,CACF,GACF,IAEA,IAAIa,EAAe,CAAC,EAsBpB,OArBAh1M,EAAK2wM,GAAU,SAAUsE,EAAaC,GACpC,IAAIC,EAAYF,EAAYE,UAExBA,IAAcf,EAAac,IAC7Bl1M,EAAKm1M,EAAUxE,UAAU,SAAUyE,EAAaC,GAC9C,IAAIC,EAAalB,EAAaiB,GAE9B,GAAID,IAAgBH,GAAeK,EAAY,CAC7C,IAAIh+S,EAAMg+S,EAAWlrT,MACrB+qT,EAAUI,SAAWj+S,EAAM29S,EAAYvhR,KAAK/U,MAAMzJ,MAAMigS,EAAUI,OAAOj+S,EAAKk+S,EAAgBJ,GAAcI,EAAgBP,MAC5HD,EAAaC,EAAY9oT,KAAOmL,CAClC,CACF,GAEJ,IACA0oG,EAAKg1M,GAAc,SAAU19S,EAAK49S,GAChCH,EAAcpE,EAASuE,GAAS59S,EAAKg9S,GAAU,EAAMH,EACvD,IACAsB,EAAoBrB,EAAczD,EAAUwD,GAC5CuB,EAAwBrB,EAAgB/7S,EAAOwjO,EAASo0B,GACxDylD,EAAyBhF,EAAUzgD,EAAgBj9J,GAC5CkhN,CAzEP,CA0EF,CAEA,SAASY,EAAcH,EAAUgB,EAAUtB,EAAUuB,EAAU1B,GAC7D,IAAIzgR,EAAOkhR,EAASlhR,KAEpB,IAAIA,EAAK/U,MAAMm3R,WAAcpiR,EAAKqiR,YAAYH,GAI9C,GAAKhB,EAASoB,cAAd,CAMA,IAAIxF,EAAcyF,EAAsBL,EAAUhB,GAC9CsB,EAAe1F,EAAY0F,aAC3BC,EAAc3F,EAAY2F,YAG1BD,EAAa,IAAkC,MAA5B/B,EAAantE,aAClCpM,EAAO5uH,OAAOmoM,EAAc+B,EAAa,KAKtCL,GAAYjB,EAASpI,MACpB94Q,EAAKqiR,YAAYI,IAA+B,MAAfA,IACnCP,EAAWO,GAIf7B,EAASC,YAAYK,EAAUgB,EAAUM,EAAc/B,GAGvDG,EAASE,YAAYI,EAAUpE,EAAa2F,EAvB5C,MAFE7B,EAASC,YAAYK,EAAUgB,EA0BnC,CAEA,SAASK,EAAsB7rT,EAAOwqT,GACpC,IAAIlhR,EAAOkhR,EAASlhR,KAChB6mG,EAAM7mG,EAAK6mG,IACX47K,EAAc/rT,EACd8rT,EAAe,GACf55H,EAAUz3H,OAAO+pC,UACjBwnN,GAAW,EA+Cf,OA9CAp2M,EAAK40M,EAAShiE,cAAc,SAAUt+M,EAAQm7D,GAC5C,IACI4mN,EACAlhB,EAFAmhB,EAAUhiR,EAAO++D,UAAU2gJ,aAAaz5G,GAAK,GAIjD,GAAIjmG,EAAOygQ,mBAAoB,CAC7B,IAAI/oS,EAASsoC,EAAOygQ,mBAAmBuhB,EAASlsT,EAAOspC,GACvDyhQ,EAAcnpS,EAAOmpS,YACrBkhB,EAAqBrqT,EAAOgpS,YAC9B,KAAO,CAML,GALAG,EAAc7gQ,EAAO++D,UAAUkjN,iBAAiBD,EAAQ,GAAIlsT,EAG9C,aAAdspC,EAAK5mC,KAAsB,GAAM,OAE5BqoS,EAAY7qS,OACf,OAGF+rT,EAAqB/hR,EAAO++D,UAAU7nG,IAAI8qT,EAAQ,GAAInhB,EAAY,GACpE,CAEA,GAA0B,MAAtBkhB,GAA+BnnO,SAASmnO,GAA5C,CAIA,IAAInhN,EAAO9qG,EAAQisT,EACf9jO,EAAO9jF,KAAK6iB,IAAI4jF,GAEhB3iB,GAAQ+pG,KACN/pG,EAAO+pG,GAAWpnF,GAAQ,GAAKkhN,EAAU,KAC3C95H,EAAU/pG,EACV6jO,EAAUlhN,EACVihN,EAAcE,EACdH,EAAa5rT,OAAS,GAGxB01G,EAAKm1L,GAAa,SAAUh5D,GAC1B+5E,EAAa3pT,KAAK,CAChBy6O,YAAa1yM,EAAO0yM,YACpBgX,gBAAiB7hB,EACjBA,UAAW7nM,EAAO++D,UAAU4qJ,YAAY9hB,IAE5C,IAnBF,CAqBF,IACO,CACL+5E,aAAcA,EACdC,YAAaA,EAEjB,CAEA,SAAS5B,EAAYH,EAAcQ,EAAUxqT,EAAO8rT,GAClD9B,EAAaQ,EAASzoT,KAAO,CAC3B/B,MAAOA,EACP8rT,aAAcA,EAElB,CAEA,SAAS1B,EAAYH,EAAgBO,EAAUpE,EAAapmT,GAC1D,IAAI8rT,EAAe1F,EAAY0F,aAC3BxiR,EAAOkhR,EAASlhR,KAChB+1O,EAAY/1O,EAAKmmN,MACjBi0D,EAAmB8G,EAAS9G,iBAGhC,GAAK8G,EAASnI,gBAAmByJ,EAAa5rT,OAA9C,CAIA,IAAIksT,EAAgB5B,EAASz5E,SAAS0e,MAClC66D,EAAcd,EAAY6C,QAAQD,GAClCE,EAAerC,EAAeriS,IAAI0iS,GAEjCgC,IACHA,EAAerC,EAAeriS,IAAI0iS,GAAe,CAC/CiC,WAAYH,EAAc1kT,GAC1B8kT,cAAeJ,EAAcxZ,eAC7BloC,aAAc0hD,EAAc1pT,KAC5B+pT,iBAAkBL,EAAcx6E,SAChC86E,WAAY,IAEdzC,EAAe90S,KAAKhT,KAAKmqT,IAG3BA,EAAaI,WAAWvqT,KAAK,CAC3B40R,QAASztP,EAAK6mG,IACdl2F,UAAWolO,EAAUuzB,eACrBv+P,SAAUgrO,EAAU38Q,KACpBiqT,OAAQttC,EAAU33Q,GAClB1H,MAAOA,EAKP4sT,cAAe,CACbtlS,UAAWo8R,EAAiBtiT,IAAI,mBAChCorC,UAAWk3Q,EAAiBtiT,IAAI,oBAElCyrT,kBAAmBf,EAAazrT,SA/BlC,CAiCF,CAEA,SAASgrT,EAAoBrB,EAAczD,EAAUwD,GACnD,IAAI+C,EAAiB/C,EAAaxD,SAAW,GAE7C3wM,EAAK2wM,GAAU,SAAUiE,EAAUzoT,GACjC,IAAIknC,EAASuhR,EAAS9G,iBAAiBz6Q,OACnC8jR,EAAU/C,EAAajoT,GAEvBgrT,IACDvC,EAASwC,YAAc/jR,EAAOpZ,OAAS,QACxCoZ,EAAOjpC,MAAQ+sT,EAAQ/sT,MAEvBipC,EAAO4jR,mBAAqBE,EAAQjB,cAAgB,IAAIzrT,UAMrDmqT,EAASwC,YAAc/jR,EAAOpZ,OAAS,QAI1B,SAAlBoZ,EAAOpZ,QAAqBi9R,EAAe3qT,KAAK,CAC9C40R,QAASyzB,EAASlhR,KAAK6mG,IACvBl2F,UAAWuwQ,EAASlhR,KAAKmmN,MAAMmjD,eAC/B5yS,MAAOipC,EAAOjpC,OAElB,GACF,CAEA,SAASsrT,EAAwBrB,EAAgB/7S,EAAOwjO,EAASo0B,GAE/D,IAAI6jD,EAAaz7S,IAAW+7S,EAAe90S,KAAKjV,OAAhD,CAWA,IAAIugR,IAAewpC,EAAe90S,KAAK,GAAGu3S,WAAW,IAAM,CAAC,GAAGG,mBAAqB,IAAI,IAAM,CAAC,EAC/F/mD,EAAe,CACbpjQ,KAAM,UACNuqT,eAAe,EACfjvS,EAAG9P,EAAM,GACT2uB,EAAG3uB,EAAM,GACTo4S,cAAe50E,EAAQ40E,cACvBt2R,SAAU0hN,EAAQ1hN,SAClB4jO,gBAAiB6sB,EAAW7sB,gBAC5B7hB,UAAW0uC,EAAW1uC,UACtB6K,YAAa6jC,EAAW7jC,YACxBqtE,eAAgBA,EAAe90S,MAjBjC,MAJE2wP,EAAe,CACbpjQ,KAAM,WAsBZ,CAEA,SAAS6oT,EAAyBhF,EAAUzgD,EAAgBj9J,GAI1D,IAAIwnL,EAAKxnL,EAAIoqJ,QACTi6D,EAAc,4BACdC,EAAiBrsC,EAAMuP,GAAI68B,IAAgB,CAAC,EAC5CE,EAAgBtsC,EAAMuP,GAAI68B,GAAe,CAAC,EAG9Ct3M,EAAK2wM,GAAU,SAAUiE,EAAUzoT,GACjC,IAAIknC,EAASuhR,EAAS9G,iBAAiBz6Q,OACrB,SAAlBA,EAAOpZ,QAAqB+lF,EAAK3sE,EAAO4jR,mBAAmB,SAAUQ,GACnE,IAAItrT,EAAMsrT,EAAUzwE,YAAc,MAAQywE,EAAUt7E,UACpDq7E,EAAcrrT,GAAOsrT,CACvB,GACF,IAEA,IAAIC,EAAc,GACdC,EAAa,GACjB/8E,EAAO56H,KAAKu3M,GAAgB,SAAUE,EAAWtrT,IAC9CqrT,EAAcrrT,IAAQwrT,EAAWprT,KAAKkrT,EACzC,IACA78E,EAAO56H,KAAKw3M,GAAe,SAAUC,EAAWtrT,IAC7CorT,EAAeprT,IAAQurT,EAAYnrT,KAAKkrT,EAC3C,IACAE,EAAWrtT,QAAU2oG,EAAIi9J,eAAe,CACtCpjQ,KAAM,WACNuqT,eAAe,EACf1hJ,MAAOgiJ,IAETD,EAAYptT,QAAU2oG,EAAIi9J,eAAe,CACvCpjQ,KAAM,YACNuqT,eAAe,EACf1hJ,MAAO+hJ,GAEX,CAEA,SAAS5C,EAAkBb,EAAeW,GACxC,IAAK,IAAItoT,EAAI,EAAGA,GAAK2nT,GAAiB,IAAI3pT,OAAQgC,IAAK,CACrD,IAAIuoT,EAAgBZ,EAAc3nT,GAElC,GAAIsoT,EAASlhR,KAAK6mG,MAAQs6K,EAAc1zB,SAAWyzB,EAASlhR,KAAKmmN,MAAMmjD,iBAAmB6X,EAAcxwQ,UACtG,OAAOwwQ,CAEX,CACF,CAEA,SAASW,EAAgBZ,GACvB,IAAInrC,EAAYmrC,EAASlhR,KAAKmmN,MAC1B/rO,EAAO,CAAC,EACRysH,EAAMzsH,EAAKqzQ,QAAUyzB,EAASlhR,KAAK6mG,IAIvC,OAHAzsH,EAAKu2B,UAAYv2B,EAAKysH,EAAM,aAAekvI,EAAUuzB,eACrDlvR,EAAK6wB,SAAW7wB,EAAKysH,EAAM,YAAckvI,EAAU18Q,KACnD+gB,EAAKipS,OAASjpS,EAAKysH,EAAM,UAAYkvI,EAAU33Q,GACxCgc,CACT,CAEA,SAASimS,EAAaz7S,GACpB,OAAQA,GAAqB,MAAZA,EAAM,IAAcjB,MAAMiB,EAAM,KAAmB,MAAZA,EAAM,IAAcjB,MAAMiB,EAAM,GAC1F,CAEA7O,EAAOD,QAAUusB,C,wBC1ZjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB6+P,EAAY7+P,EAAQ,OA0BxB,SAASiF,EAAS+9R,EAAQ94E,GACxB,IAEIkB,EAFA5jO,EAAQ,GACR0uO,EAAc8sE,EAAO9sE,YAGzB,GAAmB,MAAfA,KAAyB9K,EAAclB,EAAQ48E,iBAAiB5wE,IAClE,MAAO,CACL1uO,MAAO,IAIX,IAAIiP,EAAO20N,EAAY7oI,UACnB8oI,EAAYwzC,EAAUyE,eAAe7sQ,EAAMusS,GAE/C,GAAiB,MAAb33E,GAAqBA,EAAY,GAAKvB,EAAOxrO,QAAQ+sO,GACvD,MAAO,CACL7jO,MAAO,IAIX,IAAIpO,EAAKqd,EAAK67N,iBAAiBjH,GAC3BhB,EAAWe,EAAYS,iBAE3B,GAAIT,EAAY6hD,mBACdzlR,EAAQ4jO,EAAY6hD,mBAAmB5hD,IAAc,QAChD,GAAIhB,GAAYA,EAASiC,YAC9B9kO,EAAQ6iO,EAASiC,YAAY71N,EAAK2/Q,UAAUtsD,EAAO5oN,IAAImpN,EAASj4E,YAAY,SAAU3oB,GACpF,OAAOhzH,EAAKysO,aAAaz5G,EAC3B,IAAI4hG,GAAW,KAAU,QACpB,GAAIjyO,EAAI,CAEb,IAAIq7B,EAAOr7B,EAAGonQ,kBAAkB10O,QAChC2I,EAAKgsO,eAAernQ,EAAGylE,WACvBr3D,EAAQ,CAACitB,EAAKnd,EAAImd,EAAKuL,MAAQ,EAAGvL,EAAK0B,EAAI1B,EAAKwL,OAAS,EAC3D,CAEA,MAAO,CACLz4B,MAAOA,EACPpO,GAAIA,EAER,CAEAT,EAAOD,QAAUusB,C,iCCtEjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB+mS,EAAM/mS,EAAQ,OAEdiyO,EAASjyO,EAAQ,OAEjBm6P,EAAYloB,EAAOkoB,UAoBnBC,EAAQD,IACRjrK,EAAO46H,EAAO56H,KASlB,SAASt+B,EAASv1E,EAAK8mG,EAAKlpF,GAC1B,IAAI8tS,EAAIn0O,KAAR,CAIA,IAAI+2M,EAAKxnL,EAAIoqJ,QACb6tB,EAAMuP,GAAIq9B,UAAY5sC,EAAMuP,GAAIq9B,QAAU,CAAC,GAC3CC,EAAoBt9B,EAAIxnL,GACxB,IAAI+kN,EAAS9sC,EAAMuP,GAAIq9B,QAAQ3rT,KAAS++Q,EAAMuP,GAAIq9B,QAAQ3rT,GAAO,CAAC,GAClE6rT,EAAOjuS,QAAUA,CANjB,CAOF,CAEA,SAASguS,EAAoBt9B,EAAIxnL,GAW/B,SAASglN,EAAW52D,EAAWpgL,GAC7Bw5M,EAAG1uN,GAAGs1L,GAAW,SAAU9yP,GACzB,IAAI2pT,EAAMC,EAAmBllN,GAC7B+M,EAAKkrK,EAAMuP,GAAIq9B,SAAS,SAAUE,GAChCA,GAAU/2O,EAAG+2O,EAAQzpT,EAAG2pT,EAAIhoD,eAC9B,IACAkoD,EAAuBF,EAAIG,SAAUplN,EACvC,GACF,CAlBIi4K,EAAMuP,GAAI69B,cAIdptC,EAAMuP,GAAI69B,aAAc,EACxBL,EAAW,QAASr9E,EAAOuD,MAAMo6E,EAAS,UAC1CN,EAAW,YAAar9E,EAAOuD,MAAMo6E,EAAS,cAE9CN,EAAW,YAAaO,GAW1B,CAEA,SAASJ,EAAuBC,EAAUplN,GACxC,IAEIwlN,EAFAC,EAAUL,EAASM,QAAQruT,OAC3BsuT,EAAUP,EAASQ,QAAQvuT,OAG3BouT,EACFD,EAAkBJ,EAASM,QAAQD,EAAU,GACpCE,IACTH,EAAkBJ,EAASQ,QAAQD,EAAU,IAG3CH,IACFA,EAAgBvoD,eAAiB,KACjCj9J,EAAIi9J,eAAeuoD,GAEvB,CAEA,SAASD,EAAQR,EAAQzpT,EAAG2hQ,GAC1B8nD,EAAOjuS,QAAQ,QAAS,KAAMmmP,EAChC,CAEA,SAASqoD,EAAQtL,EAAa+K,EAAQzpT,EAAG2hQ,GACvC8nD,EAAOjuS,QAAQkjS,EAAa1+S,EAAG2hQ,EACjC,CAEA,SAASioD,EAAmBllN,GAC1B,IAAIolN,EAAW,CACbM,QAAS,GACTE,QAAS,IAOP3oD,EAAiB,SAAUp0B,GAC7B,IAAIg9E,EAAcT,EAASv8E,EAAQhvO,MAE/BgsT,EACFA,EAAYvsT,KAAKuvO,IAEjBA,EAAQo0B,eAAiBA,EACzBj9J,EAAIi9J,eAAep0B,GAEvB,EAEA,MAAO,CACLo0B,eAAgBA,EAChBmoD,SAAUA,EAEd,CAOA,SAASnL,EAAW/gT,EAAK8mG,GACvB,IAAI4kN,EAAIn0O,KAAR,CAIA,IAAI+2M,EAAKxnL,EAAIoqJ,QACT26D,GAAU9sC,EAAMuP,GAAIq9B,SAAW,CAAC,GAAG3rT,GAEnC6rT,IACF9sC,EAAMuP,GAAIq9B,QAAQ3rT,GAAO,KAN3B,CAQF,CAEA3C,EAAQk4E,SAAWA,EACnBl4E,EAAQ0jT,WAAaA,C,iCC7IrB,IAAItyE,EAAS9pN,EAAQ,OAEjByuN,EAAQzuN,EAAQ,OAoBhBkvF,EAAO46H,EAAO56H,KACdm+H,EAAQvD,EAAOuD,MAGnB,SAASiuE,EAAQpxE,EAAS/nI,GACxB,IAAIjnG,EAAS,CAcX2kT,SAAU,CAAC,EACXoI,gBAAgB,EAMhB5M,iBAAkB,CAAC,EACnBsI,YAAa,CAAC,GAKhB,OAHAuE,EAAgBhtT,EAAQgvO,EAAS/nI,GAEjCjnG,EAAO+sT,gBAAkBE,EAAkBjtT,EAAQgvO,GAC5ChvO,CACT,CAEA,SAASgtT,EAAgBhtT,EAAQgvO,EAAS/nI,GACxC,IAAI+5M,EAAqBhyE,EAAQizC,aAAa,WAC1C8+B,EAAyB/xE,EAAQizC,aAAa,eAE9CirC,EAAcnM,EAAuBvhT,IAAI,QAAQ,IAAS,GAC1D2tT,EAAa,GAEjBn5M,EAAK/M,EAAImoI,wBAAwB,SAAUD,GAEzC,GAAKA,EAASi+E,mBAAd,CAIA,IAAI1E,EAAc+B,EAAQt7E,EAAS0e,OAC/Bw/D,EAAqBrtT,EAAOmgT,iBAAiBuI,GAAe,CAAC,EACjE1oT,EAAOyoT,YAAYC,GAAev5E,EAGlC,IAAIq7E,EAAgBr7E,EAAS0e,MACzBy/D,EAAmB9C,EAAc10E,SAAS,UAAWkrE,GAIzD,GAHAhtM,EAAKm7H,EAASo+E,UAAWp7E,EAAMq7E,GAAqB,EAAO,OAGvDr+E,EAASs+E,gBAAkBzM,GAE5BsM,EAAiB9tT,IAAI,QAAS,CAG/B,IAAIkuT,EAAkD,SAApCJ,EAAiB9tT,IAAI,WACnCokF,EAAqD,UAA7C0pO,EAAiB9tT,IAAI,oBAC7BmuT,EAAcx+E,EAASs+E,eAAeH,EAAiB9tT,IAAI,sBAE3DkuT,GAAe9pO,IACjBowB,EAAK25M,EAAYC,SAAUz7E,EAAMq7E,GAAqB5pO,GAAQ,QAAgB8pO,IAG5E9pO,GACFowB,EAAK25M,EAAYE,UAAW17E,EAAMq7E,EAAqB,SAAS,GAEpE,CA5BA,CAgCA,SAASA,EAAoBM,EAAarN,EAAgB/4Q,GACxD,IAAIo6Q,EAAmBp6Q,EAAKmmN,MAAM/X,SAAS,cAAeirE,GACtDgN,EAAkBjM,EAAiBtiT,IAAI,QAE3C,GAAKuuT,IAAuC,SAApBA,GAA+BD,GAAgBE,EAAgBlM,IAAvF,CAIsB,MAAlBrB,IACFA,EAAiBqB,EAAiBtiT,IAAI,mBAGxCsiT,EAAmBgM,EAAcG,EAAqBvmR,EAAM4lR,EAAkBvM,EAAwB/xE,EAAS8+E,EAAarN,GAAkBqB,EAC9I,IAAItB,EAAOsB,EAAiBtiT,IAAI,QAC5BW,EAAMsqT,EAAQ/iR,EAAKmmN,OACnBm8D,EAAgBvJ,GAAkBD,GAAsB,aAAd94Q,EAAK5mC,KAE/C8nT,EAAW5oT,EAAO2kT,SAASxkT,GAAO,CACpCA,IAAKA,EACLunC,KAAMA,EACNynM,SAAUA,EACV2yE,iBAAkBA,EAClBrB,eAAgBA,EAChBuJ,cAAeA,EACfxJ,KAAMA,EACN4K,UAAW4C,EAAgBlM,GAC3Bl7D,aAAc,IAEhBymE,EAAmBltT,GAAOyoT,EAC1B5oT,EAAO+sT,gBAAkB/C,EACzB,IAAIkE,EAAaC,EAAkBjB,EAAaxlR,GAEhD,GAAkB,MAAdwmR,EAAoB,CACtB,IAAI/E,EAAYgE,EAAWe,KAAgBf,EAAWe,GAAc,CAClEvJ,SAAU,CAAC,IAEbwE,EAAUxE,SAASxkT,GAAOyoT,EAC1BO,EAAUI,OAAS2D,EAAYgB,GAAY3E,OAC3CX,EAASO,UAAYA,CACvB,CAjCA,CAkCF,CACF,GACF,CAEA,SAAS8E,EAAqBvmR,EAAM4lR,EAAkBvM,EAAwB/xE,EAAS8+E,EAAarN,GAClG,IAAI2N,EAA0Bd,EAAiBx3E,SAAS,eACpDu4E,EAAiB,CAAC,EACtBr6M,EAAK,CAAC,OAAQ,OAAQ,YAAa,cAAe,QAAS,YAAa,0BAA2B,wBAAyB,MAAM,SAAUliC,GAC1Iu8O,EAAev8O,GAAS88J,EAAOh+M,MAAMw9R,EAAwB5uT,IAAIsyE,GACnE,IAIAu8O,EAAe7N,KAAqB,aAAd94Q,EAAK5mC,QAAyB2/S,EAGR,UAAxC2N,EAAwB5uT,IAAI,UAC9B6uT,EAAevtT,KAAO,QAGxB,IAAIwtT,EAAcD,EAAe7iR,QAAU6iR,EAAe7iR,MAAQ,CAAC,GAInE,GAFoB,MAApB8iR,EAAYtkR,OAAiBskR,EAAYtkR,MAAO,GAE5B,UAAhB8jR,EAAyB,CAE3B,IAAIS,EAA8BH,EAAwB5uT,IAAI,cAI9D,GAHA8uT,EAAYtkR,KAAsC,MAA/BukR,GAAsCA,GAGpD9N,EAAgB,CACnB,IAAI+N,EAAaH,EAAez/Q,UAAYw/Q,EAAwB5uT,IAAI,cACxEgvT,GAAc5/E,EAAO94I,SAASw4N,EAAaE,EAAWjgR,UACxD,CACF,CAEA,OAAO7G,EAAKmmN,MAAM/X,SAAS,cAAe,IAAIvC,EAAM86E,EAAgBtN,EAAwB/xE,GAC9F,CAEA,SAASi+E,EAAkBjtT,EAAQgvO,GAEjCA,EAAQy/E,YAAW,SAAUv+E,GAE3B,IAAIf,EAAWe,EAAYS,iBACvB+9E,EAAuBx+E,EAAY1wO,IAAI,mBAAmB,GAC1DmvT,EAAoBz+E,EAAY1wO,IAAI,gBAAgB,GAEnD2vO,GAAqC,SAAzBu/E,IAA4D,IAAzBA,GAA2D,SAAzBA,IAAyD,IAAtBC,IAA6E,IAA9Cz+E,EAAY1wO,IAAI,oBAAoB,IAI5Lw0G,EAAKh0G,EAAOmgT,iBAAiBsK,EAAQt7E,EAAS0e,SAAS,SAAU+6D,GAC/D,IAAIlhR,EAAOkhR,EAASlhR,KAEhBynM,EAASs+B,QAAQ/lO,EAAK6mG,OAAS7mG,IACjCkhR,EAAShiE,aAAarmP,KAAK2vO,GACC,MAA5B04E,EAASpF,kBAA4BoF,EAASpF,gBAAkB,GAChEoF,EAASpF,iBAAmBtzE,EAAY7oI,UAAUxiF,QAEtD,GACF,GAAGvoB,KACL,CAiBA,SAAS6xT,EAAkBjB,EAAaxlR,GAItC,IAHA,IAAI+1O,EAAY/1O,EAAKmmN,MACjBt/G,EAAM7mG,EAAK6mG,IAENjuI,EAAI,EAAGA,EAAI4sT,EAAY5uT,OAAQgC,IAAK,CAC3C,IAAIsuT,EAAa1B,EAAY5sT,IAAM,CAAC,EAEpC,GAAIuuT,EAAgBD,EAAWrgL,EAAM,UAAWkvI,EAAU33Q,KAAO+oT,EAAgBD,EAAWrgL,EAAM,aAAckvI,EAAUuzB,iBAAmB6d,EAAgBD,EAAWrgL,EAAM,YAAakvI,EAAU18Q,MACnM,OAAOT,CAEX,CACF,CAEA,SAASuuT,EAAgBC,EAAeC,GACtC,MAAyB,QAAlBD,GAA2BlgF,EAAOxrO,QAAQ0rT,IAAkBlgF,EAAOj7N,QAAQm7S,EAAeC,IAAkB,GAAKD,IAAkBC,CAC5I,CAEA,SAASC,EAASvxC,GAChB,IAAImrC,EAAWnF,EAAYhmC,GAE3B,GAAKmrC,EAAL,CAIA,IAAI9G,EAAmB8G,EAAS9G,iBAC5BnvR,EAAQi2R,EAASlhR,KAAK/U,MACtB0U,EAASy6Q,EAAiBz6Q,OAC1BpZ,EAAS6zR,EAAiBtiT,IAAI,UAC9BpB,EAAQ0jT,EAAiBtiT,IAAI,SAEpB,MAATpB,IACFA,EAAQu0B,EAAMzJ,MAAM9qB,IAGtB,IAAIgtT,EAAY4C,EAAgBlM,GAGlB,MAAV7zR,IACFoZ,EAAOpZ,OAASm9R,EAAY,OAAS,QAGvC,IAAIvhI,EAASl3J,EAAM60N,YAAY/oP,QAC/BorL,EAAO,GAAKA,EAAO,IAAMA,EAAOvyJ,WAGvB,MAATl5B,GAEGA,EAAQyrL,EAAO,MAEhBzrL,EAAQyrL,EAAO,IAGbzrL,EAAQyrL,EAAO,KACjBzrL,EAAQyrL,EAAO,IAGjBxiJ,EAAOjpC,MAAQA,EAEXgtT,IACF/jR,EAAOpZ,OAAS26R,EAASlhR,KAAK/U,MAAMm3R,UAAY,OAAS,OArC3D,CAuCF,CAEA,SAASrG,EAAYhmC,GACnB,IAAI0iC,GAAoB1iC,EAAUzuC,QAAQizC,aAAa,gBAAkB,CAAC,GAAGk+B,iBAC7E,OAAOA,GAAoBA,EAAiBwE,SAAS8F,EAAQhtC,GAC/D,CAEA,SAASwxC,EAAoBxxC,GAC3B,IAAImrC,EAAWnF,EAAYhmC,GAC3B,OAAOmrC,GAAYA,EAAS9G,gBAC9B,CAEA,SAASkM,EAAgBlM,GACvB,QAASA,EAAiBtiT,IAAI,cAChC,CAOA,SAASirT,EAAQ58D,GACf,OAAOA,EAAM/sP,KAAO,KAAO+sP,EAAM/nP,EACnC,CAEAtI,EAAQ4iT,QAAUA,EAClB5iT,EAAQwxT,SAAWA,EACnBxxT,EAAQimT,YAAcA,EACtBjmT,EAAQyxT,oBAAsBA,EAC9BzxT,EAAQitT,QAAUA,C,gCCpTlB,IAAI77E,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAElB0zQ,EAAc1zQ,EAAQ,MAEtB0hS,EAAa1hS,EAAQ,OAErBwiH,EAASxiH,EAAQ,OAEjBoqS,EAAapqS,EAAQ,MAErB2hS,EAAc3hS,EAAQ,OAwB1B,SAAS2gS,EAAa3D,GACpB,IAEI55S,EAFAk9S,EAAkBtD,EAAiBtiT,IAAI,QACvC2vT,EAAarN,EAAiBhsE,SAASsvE,EAAkB,SAW7D,MARwB,SAApBA,GACFl9S,EAAQinT,EAAWt5Q,eACnB3tC,EAAMme,KAAO,MACgB,WAApB++R,IACTl9S,EAAQinT,EAAWjnC,eACnBhgR,EAAMytB,OAAS,MAGVztB,CACT,CAMA,SAAS6+S,EAAmB/3D,EAAUyuB,EAAWqkC,EAAkB76M,EAAK6/M,GACtE,IAAI1oT,EAAQ0jT,EAAiBtiT,IAAI,SAC7By5B,EAAOm2R,EAAchxT,EAAOq/Q,EAAU/1O,KAAM+1O,EAAUzuC,QAAS8yE,EAAiBtiT,IAAI,qBAAsB,CAC5GkmB,UAAWo8R,EAAiBtiT,IAAI,mBAChCorC,UAAWk3Q,EAAiBtiT,IAAI,qBAE9B6kP,EAAay9D,EAAiBhsE,SAAS,SACvCu5E,EAAW7I,EAAW8I,kBAAkBjrE,EAAW7kP,IAAI,YAAc,GACrE44B,EAAOisN,EAAWwO,UAClBqnC,EAAW1B,EAAYlzB,gBAAgBrsO,EAAMb,GAC7ChK,EAAW04R,EAAS14R,SACpB0W,EAAQo1P,EAASp1P,MAAQuqR,EAAS,GAAKA,EAAS,GAChDtqR,EAASm1P,EAASn1P,OAASsqR,EAAS,GAAKA,EAAS,GAElDh5Q,EAAQywQ,EAASzwQ,MACX,UAAVA,IAAsBjoB,EAAS,IAAM0W,GAC3B,WAAVuR,IAAuBjoB,EAAS,IAAM0W,EAAQ,GAC9C,IAAIw0N,EAAgBwtD,EAASxtD,cACX,WAAlBA,IAA+BlrO,EAAS,IAAM2W,GAC5B,WAAlBu0N,IAA+BlrO,EAAS,IAAM2W,EAAS,GAEvDwqR,EAAmBnhS,EAAU0W,EAAOC,EAAQkiE,GAC5C,IAAIuoN,EAAUnrE,EAAW7kP,IAAI,mBAExBgwT,GAAuB,SAAZA,IACdA,EAAU/xC,EAAUj+Q,IAAI,6BAG1BwvP,EAASxjN,MAAQ,CACf1Z,MAAO,CACL1V,EAAG,EACH6e,EAAG,EACH6J,MAAOA,EACPC,OAAQA,EACR1b,EAAGg7N,EAAW7kP,IAAI,iBAEpB4uB,SAAUA,EAAS3vB,QAEnByJ,MAAO,CACL+wB,KAAMA,EACNg5Q,SAAU75Q,EACV0mM,SAAUulB,EAAWizB,eACrBx0N,aAAc,SACd2sQ,YAAaJ,EACbhpS,KAAMmpS,EACN75R,OAAQ0uN,EAAW7kP,IAAI,gBAAkB,cACzC62B,UAAWguN,EAAW7kP,IAAI,gBAAkB,EAC5Cy2B,WAAYouN,EAAW7kP,IAAI,cAC3B02B,YAAamuN,EAAW7kP,IAAI,eAC5B22B,cAAekuN,EAAW7kP,IAAI,iBAC9B42B,cAAeiuN,EAAW7kP,IAAI,kBAGhCo5O,GAAI,GAER,CAGA,SAAS22E,EAAmBnhS,EAAU0W,EAAOC,EAAQkiE,GACnD,IAAIqzJ,EAAYrzJ,EAAI03I,WAChB4b,EAAatzJ,EAAI23I,YACrBxwN,EAAS,GAAK3rB,KAAKyI,IAAIkjB,EAAS,GAAK0W,EAAOw1N,GAAax1N,EACzD1W,EAAS,GAAK3rB,KAAKyI,IAAIkjB,EAAS,GAAK2W,EAAQw1N,GAAcx1N,EAC3D3W,EAAS,GAAK3rB,KAAKwI,IAAImjB,EAAS,GAAI,GACpCA,EAAS,GAAK3rB,KAAKwI,IAAImjB,EAAS,GAAI,EACtC,CAYA,SAASghS,EAAchxT,EAAOspC,EAAMsnM,EAASi8E,EAAmB9rN,GAC9D/gG,EAAQspC,EAAK/U,MAAMzJ,MAAM9qB,GACzB,IAAI66B,EAAOyO,EAAK/U,MAAM+8R,SAEtBtxT,EAAO,CACLsnB,UAAWy5E,EAAIz5E,YAEbklB,EAAYu0D,EAAIv0D,UAEpB,GAAIA,EAAW,CACb,IAAI1sB,EAAS,CACX9f,MAAO8wT,EAAWS,gBAAgBjoR,EAAMtpC,GACxCwxT,cAAeloR,EAAK6mG,IACpBl2F,UAAW3Q,EAAKnpC,MAChBsxT,WAAY,IAEdjhF,EAAO56H,KAAKi3M,GAAmB,SAAU6E,GACvC,IAAIxnR,EAAS0mM,EAAQ48E,iBAAiBkE,EAAQ90E,aAC1C7K,EAAY2/E,EAAQ99D,gBACpB+9D,EAAaznR,GAAUA,EAAOwsN,cAAc3kB,GAChD4/E,GAAc7xS,EAAO2xS,WAAWtvT,KAAKwvT,EACvC,IAEInhF,EAAOohF,SAASplR,GAClB3R,EAAO2R,EAAU1yB,QAAQ,UAAW+gB,GAC3B21M,EAAOqhF,WAAWrlR,KAC3B3R,EAAO2R,EAAU1sB,GAErB,CAEA,OAAO+a,CACT,CAUA,SAAS4sR,EAAuBn+Q,EAAMtpC,EAAO8zL,GAC3C,IAAIvuH,EAAY2jE,EAAOhkI,SAGvB,OAFAgkI,EAAO50G,OAAOixC,EAAWA,EAAWuuH,EAAW3hC,UAC/CjpB,EAAO10G,UAAU+wC,EAAWA,EAAWuuH,EAAW9jK,UAC3CglN,EAAQmyB,eAAe,CAAC79N,EAAK64M,YAAYniP,IAAS8zL,EAAWg+H,aAAe,IAAMh+H,EAAW4zH,gBAAkB,IAAM5zH,EAAWkoG,aAAe,IAAKz2N,EAC7J,CAEA,SAASgiP,EAAkCvnT,EAAO4wP,EAAU98D,EAAYurF,EAAWqkC,EAAkB76M,GACnG,IAAI6iM,EAAa2c,EAAYY,gBAAgBn1H,EAAW3hC,SAAU,EAAG2hC,EAAW4zH,gBAChF5zH,EAAWkoG,YAAc0nB,EAAiBtiT,IAAI,gBAC9CunT,EAAmB/3D,EAAUyuB,EAAWqkC,EAAkB76M,EAAK,CAC7D74E,SAAUy3R,EAAuBpoC,EAAU/1O,KAAMtpC,EAAO8zL,GACxD77I,MAAOyzP,EAAWnzQ,UAClB2iO,cAAewwC,EAAWzwC,mBAE9B,CAQA,SAAS6sD,EAAc9iR,EAAIC,EAAIyhR,GAE7B,OADAA,EAAYA,GAAa,EAClB,CACL1+Q,GAAIhD,EAAG0hR,GACPz+Q,GAAIjD,EAAG,EAAI0hR,GACXv+Q,GAAIlD,EAAGyhR,GACPt+Q,GAAInD,EAAG,EAAIyhR,GAEf,CAQA,SAASwB,EAAcnoE,EAAIC,EAAI0mE,GAE7B,OADAA,EAAYA,GAAa,EAClB,CACL1oS,EAAG+hO,EAAG2mE,GACN7pR,EAAGkjN,EAAG,EAAI2mE,GACVhgR,MAAOs5M,EAAG0mE,GACV//Q,OAAQq5M,EAAG,EAAI0mE,GAEnB,CAEA,SAASwC,EAAgB97R,EAAIC,EAAIgtN,EAAIpvN,EAAG8S,EAAYC,GAClD,MAAO,CACL5Q,GAAIA,EACJC,GAAIA,EACJgtN,GAAIA,EACJpvN,EAAGA,EACH8S,WAAYA,EACZC,SAAUA,EACV+yJ,WAAW,EAEf,CAEA3xL,EAAQioT,aAAeA,EACvBjoT,EAAQupT,mBAAqBA,EAC7BvpT,EAAQ4xT,cAAgBA,EACxB5xT,EAAQqoT,uBAAyBA,EACjCroT,EAAQmoT,kCAAoCA,EAC5CnoT,EAAQ0oT,cAAgBA,EACxB1oT,EAAQ8oT,cAAgBA,EACxB9oT,EAAQ8pT,gBAAkBA,C,iCClP1B,IAAI14E,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAElByuN,EAAQzuN,EAAQ,OAEhBogS,EAAWpgS,EAAQ,OAEnB2hS,EAAc3hS,EAAQ,OAoBtBqrS,EAAc,CAAC,WAAY,YAAa,WAAY,YAAa,YAAa,iBAAkB,aAEpG,SAAS//P,EAAiBmoL,EAAO63E,EAASvxQ,GACxCuxQ,EAAQ,GAAKA,EAAQ,KAAOA,EAAUA,EAAQ3xT,QAAQ64B,WACtD,IAAI0jB,EAAQu9L,EAAM4iD,aAAa,CAACi1B,EAAQ,GAAIvxQ,IACxC5D,EAAMs9L,EAAM4iD,aAAa,CAACi1B,EAAQ,GAAIvxQ,IAC1C,MAAO,CACLzY,GAAI4U,EAAM,GACV3U,GAAI2U,EAAM,GACVzU,GAAI0U,EAAI,GACRzU,GAAIyU,EAAI,GAEZ,CAEA,SAASo1Q,EAAa93E,GACpB,IAAI+3E,EAAa/3E,EAAM4uE,gBACvB,OAAOmJ,EAAWC,QAAU,EAAI,CAClC,CAGA,SAASC,EAAgBj9S,GACvB,IAAIk9S,EAAYl9S,EAAK,GACjBm9S,EAAWn9S,EAAKA,EAAKjV,OAAS,GAE9BmyT,GAAaC,GAAYjuT,KAAK6iB,IAAI7iB,KAAK6iB,IAAImrS,EAAUv8E,MAAQw8E,EAASx8E,OAAS,KAAO,MACxF3gO,EAAKwhB,KAET,CAEA,IAAIhL,EAAWm7R,EAASllM,OAAO,CAC7Bl/G,KAAM,YACN6vT,iBAAkB,mBAClBl1T,OAAQ,SAAUm1T,EAAgB5hF,GAGhC,GAFA1yO,KAAKk7C,MAAMigM,YAENm5E,EAAepxT,IAAI,QAAxB,CAIA,IAAIqxT,EAAYD,EAAelpR,KAC3B6wM,EAAQs4E,EAAUt4E,MAClB2uE,EAAe3uE,EAAM4uE,gBAAgB3/D,YACrCspE,EAAcD,EAAUE,iBACxBC,EAAkBH,EAAUI,sBAC5BC,EAAStiF,EAAO5oN,IAAI6qS,EAAUxqC,iBAAiB,SAAUC,GACvDA,EAAY13C,EAAOh+M,MAAM01P,GAE7B,OADAA,EAAUpyC,MAAQ28E,EAAUtwE,YAAY+lC,EAAUC,WAC3CD,CACT,IACAkqC,EAAgBU,GAChBV,EAAgBM,GAChBliF,EAAO56H,KAAKm8M,GAAa,SAAUpvT,IAC7B6vT,EAAepxT,IAAIuB,EAAO,UAAc8vT,EAAUl+R,MAAMm3R,WAAsB,aAAT/oT,GACvEzE,KAAK,IAAMyE,GAAM6vT,EAAgBr4E,EAAOu4E,EAAaE,EAAiB9J,EAAcgK,EAExF,GAAG50T,KAlBH,CAmBF,EAKA60T,UAAW,SAAUP,EAAgBr4E,EAAOu4E,EAAaE,EAAiB9J,GACxE,IAIIp1R,EAJAgqO,EAAiB80D,EAAe96E,SAAS,sBAEzCs7E,EAAMf,EAAa93E,GACnB84E,EAAOD,EAAM,EAAI,EAInBt/R,EADyB,IAAvBo1R,EAAamK,GACP,IAAIj+E,EAAQ9sJ,OAAO,CACzBx0D,MAAO,CACLtG,GAAI+sN,EAAM/sN,GACVC,GAAI8sN,EAAM9sN,GACVpC,EAAG69R,EAAakK,IAElBlpT,MAAO4zP,EAAejmN,eACtB+iM,GAAI,EACJntF,QAAQ,IAGF,IAAI2nF,EAAQk+E,KAAK,CACvBx/R,MAAO,CACLtG,GAAI+sN,EAAM/sN,GACVC,GAAI8sN,EAAM9sN,GACVpC,EAAG69R,EAAakK,GAChB34E,GAAIyuE,EAAamK,IAEnBnpT,MAAO4zP,EAAejmN,eACtB+iM,GAAI,EACJntF,QAAQ,IAIZ35H,EAAM5pB,MAAMme,KAAO,KACnB/pB,KAAKk7C,MAAM36C,IAAIi1B,EACjB,EAKAy/R,UAAW,SAAUX,EAAgBr4E,EAAOu4E,EAAaE,EAAiB9J,GACxE,IAAIvqD,EAAYi0D,EAAe96E,SAAS,YACpCgnB,GAAWH,EAAUn9P,IAAI,WAAa,EAAI,GAAKm9P,EAAUn9P,IAAI,UAC7DmnC,EAASugR,EAAamJ,EAAa93E,IACnCh2L,EAAQqsL,EAAO5oN,IAAI8qS,GAAa,SAAUU,GAC5C,OAAO,IAAIp+E,EAAQ3vJ,KAAK,CACtB3xD,MAAOs+B,EAAiBmoL,EAAO,CAAC5xM,EAAQA,EAASm2N,GAAU00D,EAAct9E,QAE7E,IACA53O,KAAKk7C,MAAM36C,IAAIu2O,EAAQq+E,UAAUlvQ,EAAO,CACtCr6C,MAAO0mO,EAAO94I,SAAS6mK,EAAU7mB,SAAS,aAAajgM,eAAgB,CACrElgB,OAAQi7R,EAAepxT,IAAI,gCAGjC,EAKAkyT,WAAY,SAAUd,EAAgBr4E,EAAO55L,EAAYqyQ,EAAiB9J,GACxE,GAAK8J,EAAgB1yT,OAArB,CAUA,IANA,IAAIq+P,EAAYi0D,EAAe96E,SAAS,YACpC67E,EAAiBf,EAAe96E,SAAS,aACzCgnB,GAAWH,EAAUn9P,IAAI,WAAa,EAAI,GAAKmyT,EAAenyT,IAAI,UAClEmnC,EAASugR,EAAamJ,EAAa93E,IACnCh2L,EAAQ,GAEHjiD,EAAI,EAAGA,EAAI0wT,EAAgB1yT,OAAQgC,IAC1C,IAAK,IAAI6G,EAAI,EAAGA,EAAI6pT,EAAgB1wT,GAAGhC,OAAQ6I,IAC7Co7C,EAAMhiD,KAAK,IAAI6yO,EAAQ3vJ,KAAK,CAC1B3xD,MAAOs+B,EAAiBmoL,EAAO,CAAC5xM,EAAQA,EAASm2N,GAAUk0D,EAAgB1wT,GAAG6G,GAAG+sO,UAKvF53O,KAAKk7C,MAAM36C,IAAIu2O,EAAQq+E,UAAUlvQ,EAAO,CACtCr6C,MAAO0mO,EAAO94I,SAAS67N,EAAe77E,SAAS,aAAajgM,eAAgB+4L,EAAO94I,SAAS6mK,EAAU9mN,eAAgB,CACpHlgB,OAAQi7R,EAAepxT,IAAI,iCAlB/B,CAqBF,EAKAoyT,WAAY,SAAUhB,EAAgBr4E,EAAOu4E,EAAaE,EAAiB9J,EAAcgK,GACvF,IAAIW,EAAkBjB,EAAekB,eAAc,GAC/CC,EAAmBnB,EAAe96E,SAAS,aAC3CskD,EAAc23B,EAAiBvyT,IAAI,UACnCs+I,EAAe8yK,EAAepxT,IAAI,gBAEtCovO,EAAO56H,KAAKk9M,GAAQ,SAAU5qC,EAAW7iL,GACvC,IAAI4gJ,EAAa0tE,EACbxrC,EAAYD,EAAUC,UACtBl9P,EAAI69R,EAAamJ,EAAa93E,IAC9Bp+L,EAAIo+L,EAAM4iD,aAAa,CAAC9xQ,EAAI+wQ,EAAa9T,EAAUpyC,QACnD1oN,EAAK+sN,EAAM/sN,GACXC,EAAK8sN,EAAM9sN,GACXumS,EAAiBvvT,KAAK6iB,IAAI60B,EAAE,GAAK3uB,GAAMnC,EAAI,GAAM,SAAW8wB,EAAE,GAAK3uB,EAAK,OAAS,QACjFymS,EAAyBxvT,KAAK6iB,IAAI60B,EAAE,GAAK1uB,GAAMpC,EAAI,GAAM,SAAW8wB,EAAE,GAAK1uB,EAAK,MAAQ,SAExFomS,GAAmBA,EAAgBtrC,IAAcsrC,EAAgBtrC,GAAWh4O,YAC9E81M,EAAa,IAAI9Q,EAAMs+E,EAAgBtrC,GAAWh4O,UAAWwjR,EAAkBA,EAAiB/iF,UAGlG,IAAIkjF,EAAS,IAAI9+E,EAAQoc,KAAK,CAC5B/jG,OAAQg7J,EAAY0L,cAAcvB,KAEpCt0T,KAAKk7C,MAAM36C,IAAIq1T,GACf9+E,EAAQmf,aAAa2/D,EAAOhqT,MAAOm8O,EAAY,CAC7CjoO,EAAG+9B,EAAE,GACLlf,EAAGkf,EAAE,GACL2kL,SAAUulB,EAAWizB,gBAAkBs5C,EAAepxT,IAAI,4BAC1Dy5B,KAAMqtP,EAAU8rC,eAChBz7R,UAAWq7R,EACX34D,kBAAmB44D,IAGjBn0K,IACFo0K,EAAOphB,UAAY2V,EAAY4L,sBAAsBzB,GACrDsB,EAAOphB,UAAUwhB,WAAa,YAC9BJ,EAAOphB,UAAU1yS,MAAQkoR,EAAUisC,SAEvC,GAAGj2T,KACL,EAKAk2T,WAAY,SAAU5B,EAAgBr4E,EAAOu4E,EAAaE,EAAiB9J,GACzE,IAAIxqD,EAAiBk0D,EAAe96E,SAAS,aACzCgmB,EAAiBY,EAAe5mB,SAAS,aACzC28E,EAAa32D,EAAet8P,IAAI,SAChCkzT,EAAY,EAChBD,EAAaA,aAAsBtvT,MAAQsvT,EAAa,CAACA,GAGzD,IAFA,IAAIE,EAAa,GAERryT,EAAI,EAAGA,EAAIwwT,EAAYxyT,OAAQgC,IAAK,CAC3C,IAAIsyT,EAAaF,IAAcD,EAAWn0T,OAC1Cq0T,EAAWC,GAAcD,EAAWC,IAAe,GACnDD,EAAWC,GAAYryT,KAAK,IAAI6yO,EAAQ3vJ,KAAK,CAC3C3xD,MAAOs+B,EAAiBmoL,EAAO2uE,EAAc4J,EAAYxwT,GAAG4zO,SAEhE,CAIA,IAAS5zO,EAAI,EAAGA,EAAIqyT,EAAWr0T,OAAQgC,IACrChE,KAAKk7C,MAAM36C,IAAIu2O,EAAQq+E,UAAUkB,EAAWryT,GAAI,CAC9C4H,MAAO0mO,EAAO94I,SAAS,CACrBngE,OAAQ88R,EAAWnyT,EAAImyT,EAAWn0T,SACjCw9P,EAAejmN,gBAClB41G,QAAQ,EACRp3E,EAAGu8O,EAAepxT,IAAI,OAG5B,EAKAqzT,gBAAiB,SAAUjC,EAAgBr4E,EAAOu4E,EAAaE,EAAiB9J,GAC9E,GAAK8J,EAAgB1yT,OAArB,CAQA,IAJA,IAAIw0T,EAAsBlC,EAAe96E,SAAS,kBAC9CgmB,EAAiBg3D,EAAoBh9E,SAAS,aAC9CvzL,EAAQ,GAEHjiD,EAAI,EAAGA,EAAI0wT,EAAgB1yT,OAAQgC,IAC1C,IAAK,IAAI6G,EAAI,EAAGA,EAAI6pT,EAAgB1wT,GAAGhC,OAAQ6I,IAC7Co7C,EAAMhiD,KAAK,IAAI6yO,EAAQ3vJ,KAAK,CAC1B3xD,MAAOs+B,EAAiBmoL,EAAO2uE,EAAc8J,EAAgB1wT,GAAG6G,GAAG+sO,UAKzE53O,KAAKk7C,MAAM36C,IAAIu2O,EAAQq+E,UAAUlvQ,EAAO,CACtCr6C,MAAO4zP,EAAejmN,eACtB41G,QAAQ,EACRp3E,EAAGu8O,EAAepxT,IAAI,OAjBxB,CAmBF,EAKAuzT,WAAY,SAAUnC,EAAgBr4E,EAAOu4E,EAAaE,EAAiB9J,GACzE,GAAK4J,EAAYxyT,OAAjB,CAIA,IAAI00T,EAAiBpC,EAAe96E,SAAS,aACzCgxC,EAAiBksC,EAAel9E,SAAS,aACzCm9E,EAAansC,EAAetnR,IAAI,SAChCkzT,EAAY,EAChBO,EAAaA,aAAsB9vT,MAAQ8vT,EAAa,CAACA,GAQzD,IAPA,IAAIC,EAAa,GACbz6B,EAASh2R,KAAK40B,GAAK,IACnB87R,GAAarC,EAAY,GAAG58E,MAAQukD,EACpChgD,EAAKh2O,KAAKyI,IAAIg8S,EAAa,GAAIA,EAAa,IAC5CzsI,EAAKh4K,KAAKwI,IAAIi8S,EAAa,GAAIA,EAAa,IAC5C/3H,EAAYyhI,EAAepxT,IAAI,aAE1Bc,EAAI,EAAGA,EAAIwwT,EAAYxyT,OAAQgC,IAAK,CAC3C,IAAIsyT,EAAaF,IAAcO,EAAW30T,OAC1C40T,EAAWN,GAAcM,EAAWN,IAAe,GACnDM,EAAWN,GAAYryT,KAAK,IAAI6yO,EAAQ8F,OAAO,CAC7CpnN,MAAO,CACLtG,GAAI+sN,EAAM/sN,GACVC,GAAI8sN,EAAM9sN,GACVgtN,GAAIA,EACJpvN,EAAGoxJ,EACHt+I,WAAYg3R,EACZ/2R,UAAW00R,EAAYxwT,GAAG4zO,MAAQukD,EAClCtpG,UAAWA,GAEb1jC,QAAQ,KAEV0nK,GAAarC,EAAYxwT,GAAG4zO,MAAQukD,CACtC,CAIA,IAASn4R,EAAI,EAAGA,EAAI4yT,EAAW50T,OAAQgC,IACrChE,KAAKk7C,MAAM36C,IAAIu2O,EAAQq+E,UAAUyB,EAAW5yT,GAAI,CAC9C4H,MAAO0mO,EAAO94I,SAAS,CACrBzvE,KAAM4sS,EAAW3yT,EAAI2yT,EAAW30T,SAC/BwoR,EAAeoB,gBAClBz8H,QAAQ,IAvCZ,CA0CF,IAGFhuJ,EAAOD,QAAUusB,C,iCCvUjB,IAAImC,EAAQpH,EAAQ,OAEhBk8N,EAAW90N,EAAM80N,SACjBlrJ,EAAW5pE,EAAM4pE,SACjBkqB,EAAS9zF,EAAM8zF,OACfhM,EAAO9nF,EAAM8nF,KAEbwyM,EAAa1hS,EAAQ,OAErBsuN,EAAUtuN,EAAQ,OAElByuN,EAAQzuN,EAAQ,OAEhBi5N,EAAUj5N,EAAQ,OAElBsuS,EAAqBr1E,EAAQq1E,mBAC7BC,EAAYt1E,EAAQs1E,UAEpB/8O,EAAUxxD,EAAQ,OAElBg5N,EAAexnK,EAAQwnK,aAEvBw1E,EAAaxuS,EAAQ,OAErByuS,EAAUzuS,EAAQ,OAElB0uS,EAAmBD,EAAQhuD,eAE3BkuD,EAAc3uS,EAAQ,MAEtB4uS,EAAsBD,EAAYC,oBAoBlCr8R,EAAK50B,KAAK40B,GAwCVovR,EAAc,SAAUhpC,EAAWt+K,GAIrC7iG,KAAK6iG,IAAMA,EAKX7iG,KAAKmhR,UAAYA,EAEjB3nL,EAASqJ,EAAK,CACZ+wN,YAAa,EACbyD,cAAe,EACfC,cAAe,EACf9N,eAAgB,EAChBr6J,QAAQ,IAMVnvJ,KAAKk7C,MAAQ,IAAI47L,EAAQM,MAEzB,IAAImgF,EAAY,IAAIzgF,EAAQM,MAAM,CAChCtlN,SAAU+wE,EAAI/wE,SAAS3vB,QACvB8xJ,SAAUpxD,EAAIoxD,WAIhBsjK,EAAUjiF,kBACVt1O,KAAKw3T,WAAaD,EAAUlwP,UAC5BrnE,KAAKy3T,WAAaF,CACpB,EAEApN,EAAY5iT,UAAY,CACtB2F,YAAai9S,EACbuN,WAAY,SAAUjzT,GACpB,QAASkzT,EAASlzT,EACpB,EACAlE,IAAK,SAAUkE,GACbkzT,EAASlzT,GAAMpE,KAAKL,KACtB,EACA43T,SAAU,WACR,OAAO53T,KAAKk7C,KACd,GAEF,IAAIy8Q,EAAW,CAIbxpR,SAAU,WACR,IAAI00D,EAAM7iG,KAAK6iG,IACXs+K,EAAYnhR,KAAKmhR,UAErB,GAAKA,EAAUj+Q,IAAI,iBAAnB,CAIA,IAAIqqL,EAASvtL,KAAKmhR,UAAU/1O,KAAK8/M,YAC7BlgH,EAAShrI,KAAKw3T,WACdK,EAAM,CAACtqI,EAAO,GAAI,GAClBuqI,EAAM,CAACvqI,EAAO,GAAI,GAElBviD,IACFksL,EAAiBW,EAAKA,EAAK7sL,GAC3BksL,EAAiBY,EAAKA,EAAK9sL,IAG7B,IAAI14F,EAAYoxE,EAAO,CACrBnqF,QAAS,SACR4nP,EAAU3nC,SAAS,sBAAsBjgM,gBAC5Cv5C,KAAKk7C,MAAM36C,IAAI,IAAIu2O,EAAQ3vJ,KAAK,CAE9B4wO,KAAM,OACNnpE,kBAAkB,EAClBp5N,MAAO,CACLsU,GAAI+tR,EAAI,GACR9tR,GAAI8tR,EAAI,GACR5tR,GAAI6tR,EAAI,GACR5tR,GAAI4tR,EAAI,IAEVlsT,MAAO0mC,EACP0lR,uBAAwBn1N,EAAIm1N,wBAA0B,EACtD7oK,QAAQ,EACRmtF,GAAI,KAEN,IAAIx6C,EAASq/E,EAAUj+Q,IAAI,mBACvB+0T,EAAY92C,EAAUj+Q,IAAI,uBAC1Bg1T,EAAc/2C,EAAUj+Q,IAAI,0BAA4B,EAM5D,GAJ2B,kBAAhBg1T,IACTA,EAAc,CAACA,EAAaA,IAGhB,MAAVp2H,EAAgB,CACI,kBAAXA,IAETA,EAAS,CAACA,EAAQA,IAGK,kBAAdm2H,GAA+C,kBAAdA,IAE1CA,EAAY,CAACA,EAAWA,IAG1B,IAAIE,EAAcF,EAAU,GACxBG,EAAeH,EAAU,GAC7BvgN,EAAK,CAAC,CACJthF,OAAQysE,EAAIoxD,SAAW9tJ,KAAK40B,GAAK,EACjC5N,OAAQ+qS,EAAY,GACpBnrS,EAAG,GACF,CACDqJ,OAAQysE,EAAIoxD,SAAW9tJ,KAAK40B,GAAK,EACjC5N,OAAQ+qS,EAAY,GACpBnrS,EAAG5mB,KAAK2iB,MAAM+uS,EAAI,GAAKC,EAAI,KAAOD,EAAI,GAAKC,EAAI,KAAOD,EAAI,GAAKC,EAAI,KAAOD,EAAI,GAAKC,EAAI,QACrF,SAAU9nT,EAAO/N,GACnB,GAAsB,SAAlB6/L,EAAO7/L,IAAsC,MAAjB6/L,EAAO7/L,GAAgB,CACrD,IAAIggB,EAASu/N,EAAa1/C,EAAO7/L,IAASk2T,EAAc,GAAIC,EAAe,EAAGD,EAAaC,EAAc9lR,EAAUjZ,QAAQ,GAEvHtM,EAAI/c,EAAM+c,EAAI/c,EAAMmd,OACpB9e,EAAM,CAACwpT,EAAI,GAAK9qS,EAAI5mB,KAAKmgC,IAAIu8D,EAAIoxD,UAAW4jK,EAAI,GAAK9qS,EAAI5mB,KAAKkgC,IAAIw8D,EAAIoxD,WAC1EhyI,EAAO4U,KAAK,CACVo9H,SAAUjkJ,EAAMomB,OAChBtE,SAAUzjB,EACV8gJ,QAAQ,EACRmtF,GAAI,KAENt8O,KAAKk7C,MAAM36C,IAAI0hB,EACjB,CACF,GAAGjiB,KACL,CA1EA,CA2EF,EAKAq4T,cAAe,WACb,IAAIl3C,EAAYnhR,KAAKmhR,UACjBt+K,EAAM7iG,KAAK6iG,IACXy1N,EAAWC,EAAoBv4T,KAAMmhR,EAAWt+K,GAChD21N,EAAWC,EAAez4T,KAAMmhR,EAAWt+K,GAC/C61N,EAAmBv3C,EAAWq3C,EAAUF,GACxCK,EAAoB34T,KAAMmhR,EAAWt+K,EACvC,EAKAxsD,SAAU,WACR,IAAIwsD,EAAM7iG,KAAK6iG,IACXs+K,EAAYnhR,KAAKmhR,UACjB18Q,EAAOigP,EAAS7hJ,EAAIxsD,SAAU8qO,EAAUj+Q,IAAI,SAEhD,GAAKuB,EAAL,CAIA,IASIg4P,EAOAm8D,EAhBAhrR,EAAeuzO,EAAUj+Q,IAAI,gBAC7Bm0T,EAAgBx0N,EAAIw0N,cACpBtiB,EAAiB5zB,EAAU3nC,SAAS,iBACpC7gM,EAAMwoO,EAAUj+Q,IAAI,YAAc,EAClCqqL,EAASvtL,KAAKmhR,UAAU/1O,KAAK8/M,YAC7B2tE,EAAYtrI,EAAO,GAAKA,EAAO,IAAM,EAAI,EACzCl/K,EAAM,CAAkB,UAAjBu/B,EAA2B2/I,EAAO,GAAKsrI,EAAYlgR,EAAuB,QAAjB/K,EAAyB2/I,EAAO,GAAKsrI,EAAYlgR,GAAO40I,EAAO,GAAKA,EAAO,IAAM,EAErJurI,EAAqBlrR,GAAgBi1D,EAAI+wN,YAAcyD,EAAgB1+Q,EAAM,GAEzEogR,EAAe53C,EAAUj+Q,IAAI,cAEb,MAAhB61T,IACFA,EAAeA,EAAeh+R,EAAK,KAKjC+9R,EAAqBlrR,GACvB6uN,EAAcsuD,EAAgBloN,EAAIoxD,SAA0B,MAAhB8kK,EAAuBA,EAAel2N,EAAIoxD,SACtFojK,IAEA56D,EAAcu8D,EAAcn2N,EAAKj1D,EAAcmrR,GAAgB,EAAGxrI,GAClEqrI,EAAyB/1N,EAAI+1N,uBAEC,MAA1BA,IACFA,EAAyBzyT,KAAK6iB,IAAI4vS,EAAyBzyT,KAAKkgC,IAAIo2N,EAAYxoG,YAC/ErtE,SAASgyO,KAA4BA,EAAyB,QAInE,IAAIjjB,EAAWZ,EAAex+C,UAC1B0iE,EAAc93C,EAAUj+Q,IAAI,gBAAgB,IAAS,CAAC,EACtDozM,EAAW2iH,EAAY3iH,SACvBzxK,EAAW6/M,EAAS7hJ,EAAIq2N,qBAAsBD,EAAYp0R,SAAU+zR,GAGpEO,EAA4B,MAAZ7iH,GAAgC,MAAZzxK,EAAmBqlR,EAAWnsB,aAAat5R,EAAMogC,EAAU8wQ,EAAUr/F,EAAU,CACrHynG,QAAS,EACTqb,YAAaH,EAAYG,cACtB30T,EACD40T,EAAal4C,EAAUj+Q,IAAI,WAAW,GACtCwwO,EAAWytC,EAAUztC,SACrB4lF,EAAkB,CACpBplF,cAAeR,EACfjvO,KAAMA,EACNg3P,MAAO,CAAC,SAEV69D,EAAgB5lF,EAAW,SAAWytC,EAAUuzB,eAChD,IAAIkhB,EAAS,IAAI9+E,EAAQoc,KAAK,CAE5B6kE,KAAM,OACNwB,WAAY90T,EACZ+0T,gBAAiBL,EACjBrnS,SAAUzjB,EACV4lJ,SAAUwoG,EAAYxoG,SACtB9E,OAAQ0mK,EAAc10C,GACtB7kC,GAAI,EACJiqC,QAAS8yC,GAAcA,EAAW3rR,KAAOg2E,EAAO,CAC9C9+E,QAASngC,EACT6pC,UAAW,WACT,OAAO7pC,CACT,EACA60T,gBAAiBA,GAChBD,GAAc,OAEnBviF,EAAQmf,aAAa2/D,EAAOhqT,MAAOmpS,EAAgB,CACjDp4Q,KAAMw8R,EACNxjB,SAAUA,EACVnzE,SAAUuyE,EAAe/5B,gBAAkBmG,EAAUj+Q,IAAI,4BACzDm3B,UAAW06Q,EAAe7xS,IAAI,UAAYu5P,EAAYpiO,UACtD0iO,kBAAmBg4C,EAAe7xS,IAAI,kBAAoBu5P,EAAYM,oBAGpEokB,EAAUj+Q,IAAI,kBAChB0yT,EAAOphB,UAAYuhB,EAAsB50C,GACzCy0C,EAAOphB,UAAUwhB,WAAa,WAC9BJ,EAAOphB,UAAU/vS,KAAOA,GAI1BzE,KAAKy3T,WAAWl3T,IAAIq1T,GAEpBA,EAAOtgF,kBACPt1O,KAAKk7C,MAAM36C,IAAIq1T,GACfA,EAAOz7D,oBAvFP,CAwFF,GAGE47D,EAAwB5L,EAAY4L,sBAAwB,SAAU50C,GACxE,IAAIqzB,EAAY,CACdtgE,cAAeitC,EAAUztC,SACzBghE,eAAgBvzB,EAAUuzB,gBAG5B,OADAF,EAAUrzB,EAAUztC,SAAW,SAAWytC,EAAUuzB,eAC7CF,CACT,EAgBIuW,EAAkBZ,EAAYY,gBAAkB,SAAU0O,EAAcxyI,EAAc9yF,GACxF,IACI95D,EACA0iO,EAFA28D,EAAe3C,EAAU9vI,EAAewyI,GAsB5C,OAlBI3C,EAAmB4C,IAErB38D,EAAoB5oK,EAAY,EAAI,MAAQ,SAC5C95D,EAAY,UACHy8R,EAAmB4C,EAAe3+R,IAE3CgiO,EAAoB5oK,EAAY,EAAI,SAAW,MAC/C95D,EAAY,WAEZ0iO,EAAoB,SAGlB1iO,EADEq/R,EAAe,GAAKA,EAAe3+R,EACzBo5D,EAAY,EAAI,QAAU,OAE1BA,EAAY,EAAI,OAAS,SAIlC,CACL8/D,SAAUylK,EACVr/R,UAAWA,EACX0iO,kBAAmBA,EAEvB,EAEA,SAASi8D,EAAcn2N,EAAKr8C,EAAcmzQ,EAAYpsI,GACpD,IACIlzJ,EACA0iO,EAFA28D,EAAe3C,EAAU4C,EAAa92N,EAAIoxD,UAG1CggK,EAAU1mI,EAAO,GAAKA,EAAO,GAC7BqsI,EAA0B,UAAjBpzQ,IAA6BytQ,GAA4B,UAAjBztQ,GAA4BytQ,EAkBjF,OAhBI6C,EAAmB4C,EAAe3+R,EAAK,IACzCgiO,EAAoB68D,EAAS,SAAW,MACxCv/R,EAAY,UACHy8R,EAAmB4C,EAAoB,IAAL3+R,IAC3CgiO,EAAoB68D,EAAS,MAAQ,SACrCv/R,EAAY,WAEZ0iO,EAAoB,SAGlB1iO,EADEq/R,EAAoB,IAAL3+R,GAAY2+R,EAAe3+R,EAAK,EACrC6+R,EAAS,OAAS,QAElBA,EAAS,QAAU,QAI5B,CACL3lK,SAAUylK,EACVr/R,UAAWA,EACX0iO,kBAAmBA,EAEvB,CAEA,IAAI84D,EAAgB1L,EAAY0L,cAAgB,SAAU10C,GACxD,IAAIk4C,EAAal4C,EAAUj+Q,IAAI,WAC/B,OAAOi+Q,EAAUj+Q,IAAI,aAChBi+Q,EAAUj+Q,IAAI,iBAAmBm2T,GAAcA,EAAW3rR,KACjE,EAEA,SAASgrR,EAAmBv3C,EAAWq3C,EAAUqB,GAC/C,IAAIzC,EAAoBj2C,EAAU/1O,MAAlC,CAOA,IAAI0uR,EAAe34C,EAAUj+Q,IAAI,0BAC7B62T,EAAe54C,EAAUj+Q,IAAI,0BAGjCs1T,EAAWA,GAAY,GACvBqB,EAAUA,GAAW,GACrB,IAAIG,EAAaxB,EAAS,GACtByB,EAAYzB,EAAS,GACrB0B,EAAY1B,EAASA,EAASx2T,OAAS,GACvCm4T,EAAY3B,EAASA,EAASx2T,OAAS,GACvCo4T,EAAYP,EAAQ,GACpBn2S,EAAWm2S,EAAQ,GACnBQ,EAAWR,EAAQA,EAAQ73T,OAAS,GACpCs4T,EAAWT,EAAQA,EAAQ73T,OAAS,IAEnB,IAAjB83T,GACFS,EAASP,GACTO,EAASH,IACAI,EAAqBR,EAAYC,KACtCH,GACFS,EAASN,GACTM,EAAS72S,KAET62S,EAASP,GACTO,EAASH,MAIQ,IAAjBL,GACFQ,EAASL,GACTK,EAASF,IACAG,EAAqBL,EAAWD,KACrCH,GACFQ,EAASJ,GACTI,EAASD,KAETC,EAASL,GACTK,EAASF,IA1Cb,CA6CF,CAEA,SAASE,EAAS34T,GAChBA,IAAOA,EAAGoyP,QAAS,EACrB,CAEA,SAASwmE,EAAqBp6S,EAAS9Y,EAAMm1P,GAE3C,IAAIg+D,EAAYr6S,GAAWA,EAAQ4oP,kBAAkB10O,QACjDomS,EAAWpzT,GAAQA,EAAK0hQ,kBAAkB10O,QAE9C,GAAKmmS,GAAcC,EAAnB,CAMA,IAAIC,EAAgB3D,EAAWzlL,SAAS,IAIxC,OAHAylL,EAAW5gS,OAAOukS,EAAeA,GAAgBv6S,EAAQ6zI,UACzDwmK,EAAUxxD,eAAe+tD,EAAW4D,IAAI,GAAID,EAAev6S,EAAQy6S,sBACnEH,EAASzxD,eAAe+tD,EAAW4D,IAAI,GAAID,EAAerzT,EAAKuzT,sBACxDJ,EAAUjlM,UAAUklM,EAR3B,CASF,CAEA,SAAS5B,EAAqBlrR,GAC5B,MAAwB,WAAjBA,GAA8C,WAAjBA,CACtC,CAEA,SAASktR,EAAYC,EAAaC,EAAeC,EAAct6D,EAAeu6D,GAK5E,IAJA,IAAIrB,EAAU,GACVhC,EAAM,GACNC,EAAM,GAED9zT,EAAI,EAAGA,EAAI+2T,EAAY/4T,OAAQgC,IAAK,CAC3C,IAAIm3T,EAAYJ,EAAY/2T,GAAG4zO,MAC/BigF,EAAI,GAAKsD,EACTtD,EAAI,GAAK,EACTC,EAAI,GAAKqD,EACTrD,EAAI,GAAKmD,EAELD,IACF9D,EAAiBW,EAAKA,EAAKmD,GAC3B9D,EAAiBY,EAAKA,EAAKkD,IAI7B,IAAII,EAAS,IAAItkF,EAAQ3vJ,KAAK,CAE5B4wO,KAAMmD,EAAQ,IAAMH,EAAY/2T,GAAGimR,UACnCr7B,kBAAkB,EAClBp5N,MAAO,CACLsU,GAAI+tR,EAAI,GACR9tR,GAAI8tR,EAAI,GACR5tR,GAAI6tR,EAAI,GACR5tR,GAAI4tR,EAAI,IAEVlsT,MAAO+0P,EACPrkB,GAAI,EACJntF,QAAQ,IAEV0qK,EAAQ51T,KAAKm3T,EACf,CAEA,OAAOvB,CACT,CAEA,SAAStB,EAAoB8C,EAAal6C,EAAWt+K,GACnD,IAAIz3D,EAAO+1O,EAAU/1O,KACjBi1N,EAAY8gB,EAAU3nC,SAAS,YAEnC,GAAK6mB,EAAUn9P,IAAI,UAAWkoC,EAAK/U,MAAMm3R,UAAzC,CAWA,IAPA,IAAIhuD,EAAiBa,EAAU7mB,SAAS,aACpCyhF,EAAep4N,EAAIy0N,cAAgBj3D,EAAUn9P,IAAI,UACjD63T,EAAc3vR,EAAKqpR,iBACnB6D,EAAWwC,EAAYC,EAAaM,EAAY7D,WAAYyD,EAAczhO,EAASgmK,EAAejmN,eAAgB,CACpHlgB,OAAQ8nP,EAAUj+Q,IAAI,8BACpB,SAEKc,EAAI,EAAGA,EAAIs0T,EAASt2T,OAAQgC,IACnCq3T,EAAYngR,MAAM36C,IAAI+3T,EAASt0T,IAGjC,OAAOs0T,CAbP,CAcF,CAEA,SAASK,EAAoB0C,EAAal6C,EAAWt+K,GACnD,IAAIz3D,EAAO+1O,EAAU/1O,KACjBiqR,EAAiBl0C,EAAU3nC,SAAS,aAExC,GAAK67E,EAAenyT,IAAI,UAAWkoC,EAAK/U,MAAMm3R,UAA9C,CAIA,IAAI8N,EAAmBlwR,EAAKupR,sBAE5B,GAAK2G,EAAiBt5T,OAUtB,IANA,IAAIw9P,EAAiB61D,EAAe77E,SAAS,aACzCyhF,EAAep4N,EAAIy0N,cAAgBjC,EAAenyT,IAAI,UACtDq4T,EAAqB/hO,EAASgmK,EAAejmN,eAAgBigD,EAAS2nL,EAAU3nC,SAAS,YAAYjgM,eAAgB,CACvHlgB,OAAQ8nP,EAAUj+Q,IAAI,+BAGfc,EAAI,EAAGA,EAAIs3T,EAAiBt5T,OAAQgC,IAG3C,IAFA,IAAIw3T,EAAgBV,EAAYQ,EAAiBt3T,GAAIq3T,EAAY7D,WAAYyD,EAAcM,EAAoB,cAAgBv3T,GAEtH6G,EAAI,EAAGA,EAAI2wT,EAAcx5T,OAAQ6I,IACxCwwT,EAAYngR,MAAM36C,IAAIi7T,EAAc3wT,GAlBxC,CAqBF,CAEA,SAAS4tT,EAAe4C,EAAal6C,EAAWt+K,GAC9C,IAAIz3D,EAAO+1O,EAAU/1O,KACjBsC,EAAOg3M,EAAS7hJ,EAAI44N,cAAet6C,EAAUj+Q,IAAI,mBAErD,GAAKwqC,IAAQtC,EAAK/U,MAAMm3R,UAAxB,CAIA,IAAIzlE,EAAao5B,EAAU3nC,SAAS,aAChCskD,EAAc/1C,EAAW7kP,IAAI,UAC7B0xT,EAASxpR,EAAK2+O,gBAEd+gC,GAAiBpmE,EAAS7hJ,EAAIolK,YAAalgB,EAAW7kP,IAAI,YAAc,GAAK63B,EAAK,IAClF0hO,EAAcsuD,EAAgBloN,EAAIoxD,SAAU62J,EAAejoN,EAAI2mN,gBAC/D+L,EAAkBp0C,EAAUq0C,eAAiBr0C,EAAUq0C,eAAc,GACrEgD,EAAW,GACXrpK,EAAS0mK,EAAc10C,GACvB3/H,EAAe2/H,EAAUj+Q,IAAI,gBAkDjC,OAjDAw0G,EAAKk9M,GAAQ,SAAU5qC,EAAW/nR,GAChC,IAAIgoR,EAAYD,EAAUC,UACtB6rC,EAAiB9rC,EAAU8rC,eAC3BG,EAAWjsC,EAAUisC,SACrByF,EAAiB3zE,EAEjBwtE,GAAmBA,EAAgBtrC,IAAcsrC,EAAgBtrC,GAAWh4O,YAC9EypR,EAAiB,IAAIzkF,EAAMs+E,EAAgBtrC,GAAWh4O,UAAW81M,EAAYo5B,EAAUzuC,UAGzF,IAAIj0K,EAAYi9P,EAAe1gD,gBAAkBmG,EAAUj+Q,IAAI,4BAC3Di4T,EAAY/vR,EAAK64M,YAAYgmC,GAC7B57Q,EAAM,CAAC8sT,EAAWt4N,EAAI+wN,YAAc/wN,EAAI2mN,eAAiB1rB,GACzD83B,EAAS,IAAI9+E,EAAQoc,KAAK,CAE5B6kE,KAAM,SAAW9tC,EACjBn4P,SAAUzjB,EACV4lJ,SAAUwoG,EAAYxoG,SACtB9E,OAAQA,EACRmtF,GAAI,KAENxF,EAAQmf,aAAa2/D,EAAOhqT,MAAO8vT,EAAgB,CACjD/+R,KAAMm5R,EACNz7R,UAAWqhS,EAAeh+E,WAAW,SAAS,IAAS+e,EAAYpiO,UACnE0iO,kBAAmB2+D,EAAeh+E,WAAW,iBAAiB,IAASg+E,EAAeh+E,WAAW,YAAY,IAAS+e,EAAYM,kBAClIv6B,SAA+B,oBAAd/jK,EAA2BA,EAO9B,aAAdrzB,EAAK5mC,KAAsByxT,EAAyB,UAAd7qR,EAAK5mC,KAAmBylR,EAAY,GAAKA,EAAWhoR,GAASw8D,IAGjG+iF,IACFo0K,EAAOphB,UAAYuhB,EAAsB50C,GACzCy0C,EAAOphB,UAAUwhB,WAAa,YAC9BJ,EAAOphB,UAAU1yS,MAAQm0T,GAI3BoF,EAAY5D,WAAWl3T,IAAIq1T,GAE3BA,EAAOtgF,kBACPkjF,EAASv0T,KAAK2xT,GACdyF,EAAYngR,MAAM36C,IAAIq1T,GACtBA,EAAOz7D,oBACT,IACOq+D,CA7DP,CA8DF,CAEA,IAAI/qS,EAAW08R,EACfhpT,EAAOD,QAAUusB,C,wBCtpBjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB2qN,GAFU1/L,EAAQojM,QAERruN,EAAQ,QAElBk7R,EAAyBl7R,EAAQ,OAwBjCogS,EAAWz1E,EAAQqxE,oBAAoB,CACzChgT,KAAM,OAKNm3T,aAAc,KAMdtH,iBAAkB,KAKlBl1T,OAAQ,SAAUgiR,EAAWzuC,EAAS/nI,EAAK6oI,GAMzCxzO,KAAKq0T,kBAAoB3Q,EAAuBgP,SAASvxC,GACzDynC,EAASrnE,WAAWvhP,KAAM,SAAU+C,WACpC64T,EAAkB57T,KAAMmhR,EAAWzuC,EAAS/nI,EAAK6oI,GAAS,EAC5D,EAUAooF,kBAAmB,SAAUz6C,EAAWzuC,EAAS/nI,EAAK6oI,EAASzxI,GAC7D65N,EAAkB57T,KAAMmhR,EAAWzuC,EAAS/nI,EAAK6oI,GAAS,EAC5D,EAKA52J,OAAQ,SAAU81J,EAAS/nI,GACzB,IAAIi5M,EAAc5jT,KAAK27T,aACvB/X,GAAeA,EAAYhnO,OAAO+tB,GAClCi+M,EAASrnE,WAAWvhP,KAAM,SAAU+C,UACtC,EAKAy4O,QAAS,SAAU9I,EAAS/nI,GAC1BkxN,EAAmB77T,KAAM2qG,GACzBi+M,EAASrnE,WAAWvhP,KAAM,UAAW+C,UACvC,IAGF,SAAS64T,EAAkBE,EAAU36C,EAAWzuC,EAAS/nI,EAAK6oI,EAASt9D,GACrE,IAAI6lJ,EAAQnT,EAASoT,oBAAoBF,EAASzH,kBAElD,GAAK0H,EAAL,CAIA,IAAIvW,EAAmB9B,EAAuBiP,oBAAoBxxC,GAClEqkC,GAAoBsW,EAASH,eAAiBG,EAASH,aAAe,IAAII,IAAU58T,OAAOgiR,EAAWqkC,EAAkB76M,EAAKurE,GAAe2lJ,EAAmBC,EAAUnxN,EAHzK,CAIF,CAEA,SAASkxN,EAAmBC,EAAUppF,EAAS/nI,GAC7C,IAAIi5M,EAAckY,EAASH,aAC3B/X,GAAeA,EAAYpoE,QAAQ9I,EAAS/nI,GAC5CmxN,EAASH,aAAe,IAC1B,CAEA,IAAIM,EAAmB,GAEvBrT,EAASqB,yBAA2B,SAAUzlT,EAAM03T,GAClDD,EAAiBz3T,GAAQ03T,CAC3B,EAEAtT,EAASoT,oBAAsB,SAAUx3T,GACvC,OAAOA,GAAQy3T,EAAiBz3T,EAClC,EAEA,IAAIipB,EAAWm7R,EACfznT,EAAOD,QAAUusB,C,wBCpHjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAElB2hS,EAAc3hS,EAAQ,OAEtBogS,EAAWpgS,EAAQ,OAEnBmgS,EAAsBngS,EAAQ,OAE9B2zS,EAAmB3zS,EAAQ,MAE3B4zS,EAA8BD,EAAiBC,4BAC/CC,EAA4BF,EAAiBE,0BAoB7CC,EAAmB,CAAC,WAAY,gBAAiB,YACjDC,EAAmB,CAAC,YAAa,YAAa,kBAC9CC,EAAoB5T,EAASllM,OAAO,CACtCl/G,KAAM,gBACN6vT,iBAAkB,uBAKlBl1T,OAAQ,SAAUgiR,EAAWzuC,EAAS/nI,EAAK6oI,GACzCxzO,KAAKk7C,MAAMigM,YACX,IAAIshF,EAAez8T,KAAK08T,WAIxB,GAHA18T,KAAK08T,WAAa,IAAI5lF,EAAQM,MAC9Bp3O,KAAKk7C,MAAM36C,IAAIP,KAAK08T,YAEfv7C,EAAUj+Q,IAAI,QAAnB,CAIA,IAAIy5T,EAAYx7C,EAAUy7C,mBACtBz0N,EAASwgN,EAAoBxgN,OAAOw0N,EAAWx7C,GAC/Ck6C,EAAc,IAAIlR,EAAYhpC,EAAWh5K,GAC7CmqI,EAAO56H,KAAK4kN,EAAkBjB,EAAY96T,IAAK86T,GAE/Cr7T,KAAK08T,WAAWn8T,IAAI86T,EAAYzD,YAEhCtlF,EAAO56H,KAAK6kN,GAAkB,SAAU93T,GAClC08Q,EAAUj+Q,IAAIuB,EAAO,UACvBzE,KAAK,IAAMyE,GAAM08Q,EAAWw7C,EAEhC,GAAG38T,MACH82O,EAAQ+lF,gBAAgBJ,EAAcz8T,KAAK08T,WAAYv7C,GACvDq7C,EAAkBjhE,UAAUv7P,KAAM,SAAUmhR,EAAWzuC,EAAS/nI,EAAK6oI,EAfrE,CAgBF,EACA52J,OAAQ,WACNy/O,EAA0Br8T,KAC5B,EAOAk2T,WAAY,SAAU/0C,EAAWw7C,GAC/B,IAAIvxR,EAAO+1O,EAAU/1O,KAErB,IAAIA,EAAK/U,MAAMm3R,UAAf,CAIA,IAAIptD,EAAiB+gB,EAAU3nC,SAAS,aACpCgmB,EAAiBY,EAAe5mB,SAAS,aACzC28E,EAAa32D,EAAet8P,IAAI,SACpCizT,EAAa7jF,EAAOxrO,QAAQqvT,GAAcA,EAAa,CAACA,GAWxD,IAVA,IAAI2G,EAAWH,EAAUtoF,iBAAiBqL,UACtCtH,EAAehtM,EAAKgtM,eACpBg+E,EAAY,EACZ2E,EAAc3vR,EAAKqpR,eAAe,CACpCp0D,UAAWD,IAETt5N,EAAK,GACLC,EAAK,GACLuL,EAAYktN,EAAejmN,eAEtBv1C,EAAI,EAAGA,EAAI+2T,EAAY/4T,OAAQgC,IAAK,CAC3C,IAAIm3T,EAAY/vR,EAAK44M,cAAc+2E,EAAY/2T,GAAG4zO,OAE9CQ,GACFtxM,EAAG,GAAKq0R,EACRr0R,EAAG,GAAKg2R,EAASn+R,EACjBoI,EAAG,GAAKo0R,EACRp0R,EAAG,GAAK+1R,EAASn+R,EAAIm+R,EAASr0R,SAE9B3B,EAAG,GAAKg2R,EAASh9S,EACjBgnB,EAAG,GAAKq0R,EACRp0R,EAAG,GAAK+1R,EAASh9S,EAAIg9S,EAASt0R,MAC9BzB,EAAG,GAAKo0R,GAGV,IAAI7E,EAAaF,IAAcD,EAAWn0T,OACtCioR,EAAY8wC,EAAY/2T,GAAGimR,UAE/BjqR,KAAK08T,WAAWn8T,IAAI,IAAIu2O,EAAQ3vJ,KAAK,CACnC4wO,KAAmB,MAAb9tC,EAAoB,QAAU8wC,EAAY/2T,GAAGimR,UAAY,KAC/Dr7B,kBAAkB,EAClBp5N,MAAO,CACLsU,GAAIhD,EAAG,GACPiD,GAAIjD,EAAG,GACPmD,GAAIlD,EAAG,GACPmD,GAAInD,EAAG,IAETn7B,MAAO0mO,EAAO94I,SAAS,CACrBngE,OAAQ88R,EAAWG,IAClBhkR,GACH68G,QAAQ,IAEZ,CAhDA,CAiDF,EAOAonK,gBAAiB,SAAUp1C,EAAWw7C,GACpC,IAAIvxR,EAAO+1O,EAAU/1O,KACjBorR,EAAsBr1C,EAAU3nC,SAAS,kBACzCgmB,EAAiBg3D,EAAoBh9E,SAAS,aAC9CsjF,EAAWH,EAAUtoF,iBAAiBqL,UACtCtH,EAAehtM,EAAKgtM,eACpBkjF,EAAmBlwR,EAAKupR,sBAE5B,GAAK2G,EAAiBt5T,OAQtB,IAJA,IAAI8kC,EAAK,GACLC,EAAK,GACLuL,EAAYktN,EAAejmN,eAEtBv1C,EAAI,EAAGA,EAAIs3T,EAAiBt5T,OAAQgC,IAC3C,IAAK,IAAI6G,EAAI,EAAGA,EAAIywT,EAAiBt3T,GAAGhC,OAAQ6I,IAAK,CACnD,IAAIswT,EAAY/vR,EAAK44M,cAAcs3E,EAAiBt3T,GAAG6G,GAAG+sO,OAEtDQ,GACFtxM,EAAG,GAAKq0R,EACRr0R,EAAG,GAAKg2R,EAASn+R,EACjBoI,EAAG,GAAKo0R,EACRp0R,EAAG,GAAK+1R,EAASn+R,EAAIm+R,EAASr0R,SAE9B3B,EAAG,GAAKg2R,EAASh9S,EACjBgnB,EAAG,GAAKq0R,EACRp0R,EAAG,GAAK+1R,EAASh9S,EAAIg9S,EAASt0R,MAC9BzB,EAAG,GAAKo0R,GAGVn7T,KAAK08T,WAAWn8T,IAAI,IAAIu2O,EAAQ3vJ,KAAK,CACnC4wO,KAAM,cAAgBuD,EAAiBt3T,GAAG6G,GAAGo/Q,UAC7Cr7B,kBAAkB,EAClBp5N,MAAO,CACLsU,GAAIhD,EAAG,GACPiD,GAAIjD,EAAG,GACPmD,GAAIlD,EAAG,GACPmD,GAAInD,EAAG,IAETn7B,MAAO0mC,EACP68G,QAAQ,IAEZ,CAEJ,EAOAsnK,WAAY,SAAUt1C,EAAWw7C,GAC/BP,EAA4Bp8T,KAAMA,KAAK08T,WAAYv7C,EAAWw7C,EAChE,IAEFH,EAAkB94M,OAAO,CACvBl/G,KAAM,UAERg4T,EAAkB94M,OAAO,CACvBl/G,KAAM,S,wBCtMR,IAAI2uO,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjB2hS,EAAc3hS,EAAQ,OAEtBu0S,EAAkBv0S,EAAQ,OAE1Bw0S,EAAcx0S,EAAQ,OAEtBsuN,EAAUtuN,EAAQ,OAoBlBqrS,EAAc,CAAC,WAAY,gBAAiB,YAC5CjL,EAAWz1E,EAAQqxE,oBAAoB,CACzChgT,KAAM,eAKNkzD,KAAM,SAAUg7K,EAAS/nI,GACvBi+M,EAASrnE,WAAWvhP,KAAM,OAAQ+C,YAKjC/C,KAAKi9T,iBAAmB,IAAIF,EAAgBpyN,EAAIoqJ,UAAUtxL,GAAG,QAAS6uK,EAAOv1N,KAAK/c,KAAKk9T,SAAUl9T,MACpG,EAKAb,OAAQ,SAAUgiR,EAAWzuC,EAAS/nI,EAAK6oI,GACzC,IAAI2pF,EAAmBh8C,EAAWzuC,EAASc,GAA3C,CAIAxzO,KAAKmhR,UAAYA,EACjBnhR,KAAK2qG,IAAMA,EACX3qG,KAAKk7C,MAAMigM,YACX,IAAIshF,EAAez8T,KAAK08T,WAIxB,GAHA18T,KAAK08T,WAAa,IAAI5lF,EAAQM,MAC9Bp3O,KAAKk7C,MAAM36C,IAAIP,KAAK08T,YAEfv7C,EAAUj+Q,IAAI,QAAnB,CAIA,IAAIgrT,EAAgB0O,EAAiBz7C,EAAWzuC,GAC5CG,EAAWq7E,EAAc75E,iBACzB+oF,EAAkBj8C,EAAUk8C,qBAC5BC,EAAYF,EAAgB50R,MAC5BypG,EAAMkvI,EAAU/1O,KAAK6mG,IACrBsrL,EAAa1qF,EAAS2qF,cAAcvrL,GACpCwrL,EAAanrF,EAAO5uH,OAAO,CAC7Bs0M,uBAAwBsF,GACvBC,GACClC,EAAc,IAAIlR,EAAYhpC,EAAWs8C,GAC7CnrF,EAAO56H,KAAKm8M,EAAawH,EAAY96T,IAAK86T,GAE1Cr7T,KAAK08T,WAAWn8T,IAAI86T,EAAYzD,YAEhC53T,KAAK09T,wBAAwBD,EAAYL,EAAiBj8C,EAAW+sC,EAAeoP,EAAW3yN,GAE/F,IAAIuuI,EAAiB1F,IAAiC,IAAtBA,EAAQxiN,UAAsB,KAAOmwP,EACrErqC,EAAQ+lF,gBAAgBJ,EAAcz8T,KAAK08T,WAAYxjF,EAnBvD,CAXA,CA+BF,EAQAwkF,wBAAyB,SAAUD,EAAYL,EAAiBj8C,EAAW+sC,EAAeoP,EAAW3yN,GAEnG,IAAI4iF,EAAS4zF,EAAU/1O,KAAK8/M,YACxByyE,EAAYpwI,EAAO,GAAKA,EAAO,GAC/BwoE,EAAQ5vP,KAAKyI,IAAI,GAA0B,GAAtBzI,KAAK6iB,IAAI20S,IAI9B1gS,EAAO65M,EAAQ6gE,aAAa3wS,OAAO,CACrC8Y,EAAGytK,EAAO,GACV5uJ,GAAI2+R,EAAY,EAChB90R,MAAOm1R,EACPl1R,OAAQ60R,IAEVrgS,EAAKnd,GAAKi2O,EACV94N,EAAKuL,OAAS,EAAIutN,EAElB/1P,KAAKi9T,iBAAiB/tI,MAAM,CAC1B0uI,iBAAiB,EACjB3pK,SAAUwpK,EAAWxpK,SACrBniI,SAAU2rS,EAAW3rS,WACpB+rS,UAAU,CAAC,CACZC,QAAS,KACTziF,SAAU2hF,EAAYe,sBAAsB9gS,GAC5C+gS,iBAAkBhB,EAAYiB,yBAAyBhhS,EAAM0tE,EAAKujN,GAClEgQ,0BAA2BlB,EAAYmB,2BAA2BlhS,EAAM,MACtEmhS,YAAY,CACd3kE,UAAW,QACX4kE,WAAYjB,EACZkB,eAAe,IACdC,aAAaC,EAAiBr9C,GACnC,EACA+7C,SAAU,SAAUuB,EAAe57N,GAEjC,IAAIs+K,EAAYnhR,KAAKmhR,UACjB/1O,EAAO+1O,EAAU/1O,KACjBszR,EAAYpsF,EAAO5oN,IAAI+0S,GAAe,SAAUE,GAClD,MAAO,CAACvzR,EAAKwzR,YAAYD,EAAU/nP,MAAM,IAAI,GAAOxrC,EAAKwzR,YAAYD,EAAU/nP,MAAM,IAAI,GAC3F,MAIKuqM,EAAUp2O,OAAO8zR,WAAah8N,EAAIi8N,OAASj8N,EAAIy7N,gBAElDt+T,KAAK2qG,IAAIi9J,eAAe,CACtBpjQ,KAAM,iBACNu6T,eAAgB59C,EAAU33Q,GAC1Bk1T,UAAWA,GAGjB,EAKAljF,QAAS,WACPx7O,KAAKi9T,iBAAiBzhF,SACxB,IAGF,SAAS2hF,EAAmBh8C,EAAWzuC,EAASc,GAC9C,OAAOA,GAA4B,mBAAjBA,EAAQhvO,MAA6BkuO,EAAQk4B,eAAe,CAC5El3B,SAAU,eACV7yI,MAAO2yI,IACN,KAAO2tC,CACZ,CAEA,SAASq9C,EAAiBr9C,GACxB,IAAI/1O,EAAO+1O,EAAU/1O,KACrB,OAAOknM,EAAO5oN,IAAIy3P,EAAU69C,iBAAiB,SAAUlxR,GACrD,MAAO,CACL2rN,UAAW,QACXqkE,QAAS,KACTlnP,MAAO,CAACxrC,EAAK64M,YAAYn2M,EAAS,IAAI,GAAO1C,EAAK64M,YAAYn2M,EAAS,IAAI,IAE/E,GACF,CAEA,SAAS8uR,EAAiBz7C,EAAWzuC,GACnC,OAAOA,EAAQizC,aAAa,WAAYxE,EAAUj+Q,IAAI,iBACxD,CAEA,IAAIuqB,EAAWm7R,EACfznT,EAAOD,QAAUusB,C,iCC9KjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAElB2hS,EAAc3hS,EAAQ,OAEtBogS,EAAWpgS,EAAQ,OAoBnB8zS,EAAmB,CAAC,WAAY,gBAAiB,YACjDC,EAAmB,CAAC,YAAa,YAAa,kBAE9C9uS,EAAWm7R,EAASllM,OAAO,CAC7Bl/G,KAAM,aACN6vT,iBAAkB,mBAClBl1T,OAAQ,SAAU8/T,EAAiBvsF,GAGjC,GAFA1yO,KAAKk7C,MAAMigM,YAEN8jF,EAAgB/7T,IAAI,QAAzB,CAIA,IAAI8wT,EAAaiL,EAAgB7zR,KAC7B6wM,EAAQ+3E,EAAW/3E,MACnBs4E,EAAYt4E,EAAM0uE,eAClBoQ,EAAc/G,EAAWS,iBACzB6G,EAAmBtH,EAAWW,sBAC9BjK,EAAY6J,EAAUrpE,YAAY,GAClC0/D,EAAeoJ,EAAW9oE,YAC1B/iJ,EAAS+2N,EAAWjjF,EAAOgjF,EAAiBvU,GAC5C2Q,EAAc,IAAIlR,EAAY8U,EAAiB92N,GACnDmqI,EAAO56H,KAAK4kN,EAAkBjB,EAAY96T,IAAK86T,GAC/Cr7T,KAAKk7C,MAAM36C,IAAI86T,EAAYzD,YAC3BtlF,EAAO56H,KAAK6kN,GAAkB,SAAU93T,GAClCw6T,EAAgB/7T,IAAIuB,EAAO,WAAauvT,EAAW39R,MAAMm3R,WAC3DxtT,KAAK,IAAMyE,GAAMw6T,EAAiBhjF,EAAOyuE,EAAWE,EAAcmQ,EAAaO,EAEnF,GAAGt7T,KAjBH,CAkBF,EAKAk2T,WAAY,SAAU+I,EAAiBhjF,EAAOyuE,EAAWE,EAAcmQ,GACrE,IAAI36D,EAAiB6+D,EAAgBzlF,SAAS,aAC1CgmB,EAAiBY,EAAe5mB,SAAS,aACzC28E,EAAa32D,EAAet8P,IAAI,SAChCkzT,EAAY,EAChBD,EAAaA,aAAsBtvT,MAAQsvT,EAAa,CAACA,GAGzD,IAFA,IAAIE,EAAa,GAERryT,EAAI,EAAGA,EAAI+2T,EAAY/4T,OAAQgC,IAAK,CAC3C,IAAIsyT,EAAaF,IAAcD,EAAWn0T,OAC1Cq0T,EAAWC,GAAcD,EAAWC,IAAe,GACnDD,EAAWC,GAAYryT,KAAK,IAAI6yO,EAAQ9sJ,OAAO,CAC7Cx0D,MAAO,CACLtG,GAAI+sN,EAAM/sN,GACVC,GAAI8sN,EAAM9sN,GACVpC,EAAGguS,EAAY/2T,GAAG4zO,SAGxB,CAIA,IAAS5zO,EAAI,EAAGA,EAAIqyT,EAAWr0T,OAAQgC,IACrChE,KAAKk7C,MAAM36C,IAAIu2O,EAAQq+E,UAAUkB,EAAWryT,GAAI,CAC9C4H,MAAO0mO,EAAO94I,SAAS,CACrBngE,OAAQ88R,EAAWnyT,EAAImyT,EAAWn0T,QAClC+nB,KAAM,MACLy1O,EAAejmN,gBAClB41G,QAAQ,IAGd,EAKAonK,gBAAiB,SAAU0I,EAAiBhjF,EAAOyuE,EAAWE,EAAcmQ,EAAaO,GACvF,GAAKA,EAAiBt5T,OAAtB,CAQA,IAJA,IAAIw0T,EAAsByI,EAAgBzlF,SAAS,kBAC/CgmB,EAAiBg3D,EAAoBh9E,SAAS,aAC9CvzL,EAAQ,GAEHjiD,EAAI,EAAGA,EAAIs3T,EAAiBt5T,OAAQgC,IAC3C,IAAK,IAAI6G,EAAI,EAAGA,EAAIywT,EAAiBt3T,GAAGhC,OAAQ6I,IAC9Co7C,EAAMhiD,KAAK,IAAI6yO,EAAQ9sJ,OAAO,CAC5Bx0D,MAAO,CACLtG,GAAI+sN,EAAM/sN,GACVC,GAAI8sN,EAAM9sN,GACVpC,EAAGuuS,EAAiBt3T,GAAG6G,GAAG+sO,UAMlC53O,KAAKk7C,MAAM36C,IAAIu2O,EAAQq+E,UAAUlvQ,EAAO,CACtCr6C,MAAO0mO,EAAO94I,SAAS,CACrBzvE,KAAM,MACLy1O,EAAejmN,gBAClB41G,QAAQ,IAtBV,CAwBF,EAKAsnK,WAAY,SAAUwI,EAAiBhjF,EAAOyuE,EAAWE,EAAcmQ,GACrE,GAAKA,EAAY/4T,OAAjB,CAIA,IAAI00T,EAAiBuI,EAAgBzlF,SAAS,aAC1CgxC,EAAiBksC,EAAel9E,SAAS,aACzCm9E,EAAansC,EAAetnR,IAAI,SAChCkzT,EAAY,EAChBO,EAAaA,aAAsB9vT,MAAQ8vT,EAAa,CAACA,GAIzD,IAHA,IAAIC,EAAa,GACbuI,EAAapE,EAAY,GAAGnjF,MAEvB5zO,EAAI,EAAGA,EAAI+2T,EAAY/4T,OAAQgC,IAAK,CAC3C,IAAIsyT,EAAaF,IAAcO,EAAW30T,OAC1C40T,EAAWN,GAAcM,EAAWN,IAAe,GACnDM,EAAWN,GAAYryT,KAAK,IAAI6yO,EAAQ8F,OAAO,CAC7CpnN,MAAO,CACLtG,GAAI+sN,EAAM/sN,GACVC,GAAI8sN,EAAM9sN,GACVgtN,GAAIgjF,EACJpyS,EAAGguS,EAAY/2T,GAAG4zO,MAClB/3M,WAAY,EACZC,SAAoB,EAAV35B,KAAK40B,IAEjBo0H,QAAQ,KAEVgwK,EAAapE,EAAY/2T,GAAG4zO,KAC9B,CAIA,IAAS5zO,EAAI,EAAGA,EAAI4yT,EAAW50T,OAAQgC,IACrChE,KAAKk7C,MAAM36C,IAAIu2O,EAAQq+E,UAAUyB,EAAW5yT,GAAI,CAC9C4H,MAAO0mO,EAAO94I,SAAS,CACrBzvE,KAAM4sS,EAAW3yT,EAAI2yT,EAAW30T,SAC/BwoR,EAAeoB,gBAClBz8H,QAAQ,IAlCZ,CAqCF,IAOF,SAAS+vK,EAAWjjF,EAAOgjF,EAAiBvU,GAC1C,MAAO,CACL54R,SAAU,CAACmqN,EAAM/sN,GAAI+sN,EAAM9sN,IAC3B8kI,SAAUy2J,EAAY,IAAMvkT,KAAK40B,GACjCyuR,gBAAiB,EACjB8N,eAAgB,EAChBD,cAAe,EACfpvD,YAAag3D,EAAgBzlF,SAAS,aAAat2O,IAAI,UAEvDo5O,GAAI,EAER,CAEAn7O,EAAOD,QAAUusB,C,iCC5LjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB2hS,EAAc3hS,EAAQ,OAEtBsuN,EAAUtuN,EAAQ,OAElByiS,EAAmBziS,EAAQ,OAE3BogS,EAAWpgS,EAAQ,OAEnB2zS,EAAmB3zS,EAAQ,MAE3B4zS,EAA8BD,EAAiBC,4BAC/CC,EAA4BF,EAAiBE,0BAoB7CC,EAAmB,CAAC,WAAY,gBAAiB,YACjDC,EAAmB,CAAC,YAAa,aACjC6C,EAAiBxW,EAASllM,OAAO,CACnCl/G,KAAM,aACN6vT,iBAAkB,oBAClBl1T,OAAQ,SAAUgiR,EAAWzuC,EAAS/nI,EAAK6oI,GACzC,IAAIt4L,EAAQl7C,KAAKk7C,MACjBA,EAAMigM,YACN,IAAIshF,EAAez8T,KAAK08T,WACxB18T,KAAK08T,WAAa,IAAI5lF,EAAQM,MAC9B,IAAIjvI,EAAS8iN,EAAiB9iN,OAAOg5K,GACjCk6C,EAAc,IAAIlR,EAAYhpC,EAAWh5K,GAC7CmqI,EAAO56H,KAAK4kN,EAAkBjB,EAAY96T,IAAK86T,GAC/CngR,EAAM36C,IAAIP,KAAK08T,YACfxhR,EAAM36C,IAAI86T,EAAYzD,YACtBtlF,EAAO56H,KAAK6kN,GAAkB,SAAU93T,GAClC08Q,EAAUj+Q,IAAIuB,EAAO,UACvBzE,KAAK,IAAMyE,GAAM08Q,EAErB,GAAGnhR,MACH82O,EAAQ+lF,gBAAgBJ,EAAcz8T,KAAK08T,WAAYv7C,GACvDi+C,EAAe7jE,UAAUv7P,KAAM,SAAUmhR,EAAWzuC,EAAS/nI,EAAK6oI,EACpE,EACA52J,OAAQ,WACNy/O,EAA0Br8T,KAC5B,EACAk2T,WAAY,SAAU/0C,GACpB,IAAI/1O,EAAO+1O,EAAU/1O,KAErB,IAAIA,EAAK/U,MAAMm3R,UAAf,CAIA,IAAIptD,EAAiB+gB,EAAU3nC,SAAS,aACpCgmB,EAAiBY,EAAe5mB,SAAS,aACzCz/M,EAAYylO,EAAet8P,IAAI,SAC/BizT,EAAa32D,EAAet8P,IAAI,SACpCizT,EAAaA,aAAsBtvT,MAAQsvT,EAAa,CAACA,GAWzD,IAVA,IAAI2G,EAAW37C,EAAU9sC,iBAAiBqL,UACtCtH,EAAehtM,EAAKgtM,eACpBi+E,EAAa,GACbD,EAAY,EACZ2E,EAAc3vR,EAAKqpR,eAAe,CACpCp0D,UAAWD,IAETt5N,EAAK,GACLC,EAAK,GAEA/iC,EAAI,EAAGA,EAAI+2T,EAAY/4T,SAAUgC,EAAG,CAC3C,IAAIm3T,EAAY/vR,EAAK44M,cAAc+2E,EAAY/2T,GAAG4zO,OAE9CQ,GACFtxM,EAAG,GAAKq0R,EACRr0R,EAAG,GAAKg2R,EAASn+R,EACjBoI,EAAG,GAAKo0R,EACRp0R,EAAG,GAAK+1R,EAASn+R,EAAIm+R,EAASr0R,SAE9B3B,EAAG,GAAKg2R,EAASh9S,EACjBgnB,EAAG,GAAKq0R,EACRp0R,EAAG,GAAK+1R,EAASh9S,EAAIg9S,EAASt0R,MAC9BzB,EAAG,GAAKo0R,GAGV,IAAI7E,EAAaF,IAAcD,EAAWn0T,OAC1Cq0T,EAAWC,GAAcD,EAAWC,IAAe,GACnDD,EAAWC,GAAYryT,KAAK,IAAI6yO,EAAQ3vJ,KAAK,CAC3CynK,kBAAkB,EAClBp5N,MAAO,CACLsU,GAAIhD,EAAG,GACPiD,GAAIjD,EAAG,GACPmD,GAAIlD,EAAG,GACPmD,GAAInD,EAAG,IAETn7B,MAAO,CACLmuB,UAAWA,GAEbo1H,QAAQ,IAEZ,CAEA,IAASnrJ,EAAI,EAAGA,EAAIqyT,EAAWr0T,SAAUgC,EACvChE,KAAKk7C,MAAM36C,IAAIu2O,EAAQq+E,UAAUkB,EAAWryT,GAAI,CAC9C4H,MAAO,CACLytB,OAAQ88R,EAAWnyT,EAAImyT,EAAWn0T,QAClCy3B,SAAU+lO,EAAe6/D,YAAYtlS,GACrCA,UAAWA,GAEbo1H,QAAQ,IAxDZ,CA2DF,EACAsnK,WAAY,SAAUt1C,GACpBi7C,EAA4Bp8T,KAAMA,KAAK08T,WAAYv7C,EAAWA,EAChE,IAEE1zP,EAAW2xS,EACfj+T,EAAOD,QAAUusB,C,uBCjIjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAoBtB,SAAS4zS,EAA4BN,EAAUwD,EAAWn+C,EAAWw7C,GACnE,IAAIvxR,EAAO+1O,EAAU/1O,KAErB,IAAIA,EAAK/U,MAAMm3R,UAAf,CAIA,IAAIkJ,EAAiBv1C,EAAU3nC,SAAS,aACpCgxC,EAAiBksC,EAAel9E,SAAS,aACzCm9E,EAAansC,EAAetnR,IAAI,SAChC45T,EAAWH,EAAUtoF,iBAAiBqL,UACtCq7E,EAAc3vR,EAAKqpR,eAAe,CACpCp0D,UAAWq2D,EACX6I,OAAO,IAGT,GAAKxE,EAAY/4T,OAAjB,CAMA,IAAIw9T,EAAgB7I,EAAW30T,OAC3By9T,EAAsB3D,EAAS4D,kBAC/BC,EAAqBrtF,EAAO6hD,gBAC5BmiC,EAAa,EAEjB,GAAImJ,EACF,IAAK,IAAIz7T,EAAI,EAAGA,EAAI+2T,EAAY/4T,OAAQgC,IAAK,CAC3C,IAAI47T,EAASH,EAAoBv8T,IAAI63T,EAAY/2T,GAAGimR,WAEpD,GAAc,MAAV21C,EAAgB,CAClBtJ,GAAcsJ,GAAUJ,EAAgB,GAAKx7T,GAAKw7T,EAClD,KACF,CACF,CAGF,IAAI/nS,EAAO2T,EAAK44M,cAAc+2E,EAAY,GAAGnjF,OACzCioF,EAAYr1C,EAAeoB,eAC/B+qC,EAAarkF,EAAOxrO,QAAQ6vT,GAAcA,EAAa,CAACA,GAExD,IAAS3yT,EAAI,EAAGA,EAAI+2T,EAAY/4T,OAAQgC,IAAK,CAC3C,IACI8b,EACA6e,EACA6J,EACAC,EAJA0yR,EAAY/vR,EAAK44M,cAAc+2E,EAAY/2T,GAAG4zO,OAM9CxsM,EAAKgtM,gBACPt4N,EAAI2X,EACJkH,EAAIm+R,EAASn+R,EACb6J,EAAQ2yR,EAAYr7S,EACpB2oB,EAASq0R,EAASr0R,OAClBhR,EAAO3X,EAAI0oB,IAEX1oB,EAAIg9S,EAASh9S,EACb6e,EAAIlH,EACJ+Q,EAAQs0R,EAASt0R,MACjBC,EAAS0yR,EAAYx8R,EACrBlH,EAAOkH,EAAI8J,GAGb,IAAIwhP,EAAY8wC,EAAY/2T,EAAI,GAAGimR,UACtB,MAAbA,GAAqB01C,EAAmBntT,IAAIy3Q,EAAWqsC,GACvDgJ,EAAU/+T,IAAI,IAAIu2O,EAAQuF,KAAK,CAC7B07E,KAAmB,MAAb9tC,EAAoB,QAAUA,EAAY,KAChDz0P,MAAO,CACL1V,EAAGA,EACH6e,EAAGA,EACH6J,MAAOA,EACPC,OAAQA,GAEV78B,MAAO0mO,EAAO94I,SAAS,CACrBzvE,KAAM4sS,EAAWL,IAChBuJ,GACH1wK,QAAQ,KAEVmnK,GAAcA,EAAa,GAAKkJ,CAClC,CAEA1D,EAAS4D,kBAAoBC,CA/D7B,CAbA,CA6EF,CAEA,SAAStD,EAA0BP,GACjCA,EAAS4D,kBAAoB,IAC/B,CAEAx+T,EAAQk7T,4BAA8BA,EACtCl7T,EAAQm7T,0BAA4BA,C,wBC/GpC,IAAIlpF,EAAU3qN,EAAQ,OA0BlB8qN,EAAa,CACf9uO,KAAM,iBACN6e,MAAO,oBAGT8vN,EAAQI,eAAeD,GAAY,SAAUE,EAASd,GACpDA,EAAQe,cAAc,CACpBC,SAAU,eACV7yI,MAAO2yI,IACN,SAAUssF,GACXA,EAAkB10R,KAAKmmN,MAAMwuE,mBAAmBvsF,EAAQkrF,UAC1D,GACF,IAKAvrF,EAAQI,eAAe,sBAAsB,SAAUC,EAASd,GAC9DA,EAAQe,cAAc,CACpBC,SAAU,WACV7yI,MAAO2yI,IACN,SAAUolD,GACXA,EAAconC,cAAcxsF,EAC9B,GACF,G,wBClDA,IAAIL,EAAU3qN,EAAQ,OAElBqkO,EAAerkO,EAAQ,KAE3BA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAwBR2qN,EAAQ6Z,qBAAqBH,E,wBCpC7B,IAAIp5M,EAAUjrB,EAAQ,OAIlB2qN,GAFU1/L,EAAQojM,QAERruN,EAAQ,QAElB8pN,EAAS9pN,EAAQ,OAEjBy3S,EAAiBz3S,EAAQ,OAEzByuN,EAAQzuN,EAAQ,OAoBhB03S,EAA6B,CAAC,QAC9BC,EAAahtF,EAAQ6wE,qBAAqB,CAC5Cx/S,KAAM,QACN0xO,aAAc,CAAC,MAAO,OAAQ,QAAS,QAAS,WAAY,UAK5DM,cAAe,CAGb4pF,QAAS,KAETC,UAAW,KAGX3hF,YAAa,MAEb0xB,SAAU,KAEVrhO,WAAY,KACZC,WAAY,KACZyqN,UAAW,OAEX6mE,UAAW,SAEXC,eAAe,EAEflC,WAAY,CAEVx2P,YAAa,EACbj3C,MAAO,wBACPizM,YAAa,yBAEf28F,aAAc,UAGdC,cAAe,EAIfnC,eAAe,EACfvmP,EAAG,KAOLwf,MAAO,GASPkiK,UAAW,KAQXinE,YAAa,CAAC,EAMdC,cAAe,GACf9/B,cAAe,SAAU5G,EAAWvoL,GAClC,IAAIkvN,EAAa5gU,KAAK+qC,QACrB2mE,GAAUuuN,EAAeY,oBAAoBD,EAAY3mC,EAAW,CAAC,UAAW,eACjF,IAAI6mC,EAAUF,EAAWE,QAAUF,EAAWE,SAAW,CAAC,EAE1DF,EAAWG,WAAaH,EAAWG,YAAc,CAC/CnwS,MAAOsvS,GAGJY,EAAQx6T,eAAe,WAG1Bw6T,EAAQ5iD,MAAQ,EAEpB,EAOA8iD,SAAU,SAAUzpO,GAIbA,IAILv3F,KAAKu3F,MAAQ+6I,EAAO5oN,IAAI6tE,GAAO,SAAU/mE,GACvC,OAAOywS,EAAoBjhU,KAAK+qC,OAAQva,EAC1C,GAAGxwB,MACL,EAMAkhU,eAAgB,SAAUR,GACxB1gU,KAAK0gU,YAAcO,EAAoBjhU,KAAK+qC,OAAQ21R,GACpD1gU,KAAKy5P,UAAYz5P,KAAK0gU,YAAYjnE,SACpC,IAGF,SAASwnE,EAAoBl2R,EAAQ21R,GACnC,OAAOpuF,EAAOt0H,MAAM,CAClBy7I,UAAW1uN,EAAO0uN,UAClB6mE,UAAWv1R,EAAOu1R,UAClBC,cAAex1R,EAAOw1R,cACtBlC,WAAY,IAAIpnF,EAAMlsM,EAAOszR,YAAY7+E,eACzC8+E,cAAevzR,EAAOuzR,cACtBvmP,EAAGhtC,EAAOgtC,GACT2oP,GAAa,EAClB,CAEA,IAAIjzS,EAAW0yS,EACfh/T,EAAOD,QAAUusB,C,wBC/JjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBu0S,EAAkBv0S,EAAQ,OAE1B24S,EAAkB34S,EAAQ,OAE1B44S,EAAeD,EAAgBC,aAoB/B3zS,EAAW0lN,EAAQqxE,oBAAoB,CACzChgT,KAAM,QACNkzD,KAAM,SAAUg7K,EAAS/nI,GAKvB3qG,KAAK0yO,QAAUA,EAMf1yO,KAAK2qG,IAAMA,EAMX3qG,KAAKuxP,OAMJvxP,KAAKi9T,iBAAmB,IAAIF,EAAgBpyN,EAAIoqJ,UAAUtxL,GAAG,QAAS6uK,EAAOv1N,KAAK/c,KAAKk9T,SAAUl9T,OAAOkvL,OAC3G,EAKA/vL,OAAQ,SAAUkiU,GAEhB,OADArhU,KAAKuxP,MAAQ8vE,EACNC,EAAiBx+T,MAAM9C,KAAM+C,UACtC,EAKAuyO,gBAAiB,SAAU+rF,EAAY3uF,GAKrC,OADA0uF,EAAa1uF,GACN4uF,EAAiBx+T,MAAM9C,KAAM+C,UACtC,EAKAw+T,WAAYD,EAaZ9lF,QAAS,WACPx7O,KAAKi9T,iBAAiBzhF,SACxB,EAKA0hF,SAAU,SAAU3lO,EAAOsL,GACzB,IAAI2+N,EAAUxhU,KAAKuxP,MAAM/nP,GACzBxJ,KAAKuxP,MAAMkwE,mBAAmBC,gBAAgBnqO,EAAOv3F,KAAK0yO,WAKxD7vI,EAAIi8N,OAASj8N,EAAIy7N,gBAAkBt+T,KAAK2qG,IAAIi9J,eAAe,CAC3DpjQ,KAAM,QACNm9T,QAASH,EACTjqO,MAAO+6I,EAAOh+M,MAAMijE,GACpBqqO,MAAOJ,IAET3+N,EAAIi8N,OAAS9+T,KAAK2qG,IAAIi9J,eAAe,CACnCpjQ,KAAM,WACNm9T,QAASH,EACTjqO,MAAO+6I,EAAOh+M,MAAMijE,GACpBqqO,MAAOJ,GAEX,IAGF,SAASF,EAAiBD,EAAY3uF,EAAS/nI,EAAK6oI,KAEhDA,GAAWA,EAAQouF,QAAUP,EAAW73T,KAAOxJ,KAAKi9T,iBAAiBY,UAAUwD,EAAWI,mBAAmBI,cAAcl3N,IAAMyzN,YAAYiD,EAAWX,aAAanC,aAAa8C,EAAW9pO,MAAMp1F,QACvM,CAEAhB,EAAOD,QAAUusB,C,wBC7HjB,IAAI0lN,EAAU3qN,EAAQ,OA6BtB2qN,EAAQI,eAAe,CACrB/uO,KAAM,QACN6e,MAAO,UAGN,SAAUmwN,EAASd,GACpBA,EAAQe,cAAc,CACpBC,SAAU,QACV7yI,MAAO2yI,IACN,SAAU6tF,GACXA,EAAWL,SAASxtF,EAAQj8I,MAC9B,GACF,IAuBA47I,EAAQI,eAAe,CACrB/uO,KAAM,cACN6e,MAAO,gBACP2T,OAAQ,SACP,WAAa,IAChBm8M,EAAQI,eAAe,CACrB/uO,KAAM,WACN6e,MAAO,WACP2T,OAAQ,SACP,WAAa,G,+BCzEhB,IAAIs7M,EAAS9pN,EAAQ,OAoBjBs5S,EAAuB,CAAC,OAAQ,UAAW,OAAQ,SAEvD,SAASr0S,EAASsd,EAAQg3R,GACxB,IAAIC,EAAkBj3R,GAAUA,EAAOkkO,MAMvC,GAJK38B,EAAOxrO,QAAQk7T,KAClBA,EAAkBA,EAAkB,CAACA,GAAmB,IAGrDA,EAAgBhgU,OAArB,CAIA,IAAIigU,EAA8B,GAClC3vF,EAAO56H,KAAKsqN,GAAiB,SAAUE,GACrC,IAAIC,EAAMD,EAAS57T,eAAe,WAAa47T,EAAS9B,QAAU,GAE9D+B,aAAet7T,QACjBo7T,EAA8BA,EAA4BhhU,OAAOkhU,GAErE,IACA,IAAI/B,EAAUr1R,GAAUA,EAAOq1R,QAE3B9tF,EAAOxrO,QAAQs5T,KACjBA,EAAUA,EAAQ,IAGfA,IACHA,EAAU,CACRrhT,QAAS,CAAC,GAEZgsB,EAAOq1R,QAAU,CAACA,IAGpB,IAAIgC,EAAiBhC,EAAQrhT,UAAYqhT,EAAQrhT,QAAU,CAAC,GACxDsjT,EAAeD,EAAenzD,QAAUmzD,EAAenzD,MAAQ,CAAC,GAChEqzD,EAAaD,EAAa79T,OAAS69T,EAAa79T,KAAO,IAC3D89T,EAAWr+T,KAAKnB,MAAMw/T,EAAYL,GAClCM,EAAgBD,GAEZP,IAAUO,EAAWtgU,QACvBsgU,EAAWr+T,KAAKnB,MAAMw/T,EAAYR,EA9BpC,CAgCF,CAEA,SAASS,EAAgBjuP,GACvB,IAAI5qD,EAAM,CAAC,EACX4oN,EAAO56H,KAAKpjC,GAAK,SAAUtlE,GACzB0a,EAAI1a,GAAO,CACb,IACAslE,EAAItyE,OAAS,EACbswO,EAAO56H,KAAKhuF,GAAK,SAAUuxK,EAAMjsL,GAC/BslE,EAAIrwE,KAAK+K,EACX,GACF,CAEA7N,EAAOD,QAAUusB,C,wBC5EjB,IAAI+0S,EAAiBh6S,EAAQ,IAEzBmvR,EAAenvR,EAAQ,OAEvBmmO,EAAWnmO,EAAQ,OAEnBi6S,EAAuB9zE,EAAS8zE,qBA6BhC7iP,EAAW,CACb8iP,MAAOC,EAAiB,GACxBC,MAAOD,EAAiB,GACxB1lS,KAAM,CACJjtB,MAAO,SAAUu5O,EAAYiE,EAAWh9N,GACtC,OAAO+4N,GAAc/4N,EAAKqyS,aAAaz0E,QAAQ7E,EAAW,GAAIA,EAAW,GAC3E,EACAtsN,KAAM,SAAUssN,EAAYiE,EAAWh9N,GACrC,OAAO+4N,GAAc/4N,EAAKqyS,aAAartM,UAAU+zH,EACnD,GAEF1iN,QAAS,CACP72B,MAAO,SAAUu5O,EAAYiE,EAAWh9N,GACtC,OAAO+4N,GAAc/4N,EAAKqyS,aAAaz0E,QAAQ7E,EAAW,GAAIA,EAAW,KAAOi5E,EAAep0E,QAAQ59N,EAAKomD,MAAO2yK,EAAW,GAAIA,EAAW,GAC/I,EACAtsN,KAAM,SAAUssN,EAAYiE,EAAWh9N,GACrC,IAAI9E,EAAS8E,EAAKomD,MAElB,IAAK2yK,GAAc79N,EAAO1pB,QAAU,EAClC,OAAO,EAGT,IAAI8d,EAAIypO,EAAWzpO,EACf6e,EAAI4qN,EAAW5qN,EACf6J,EAAQ+gN,EAAW/gN,MACnBC,EAAS8gN,EAAW9gN,OACpBoV,EAAInyB,EAAO,GAEf,SAAI82S,EAAep0E,QAAQ1iO,EAAQ5L,EAAG6e,IAAM6jS,EAAep0E,QAAQ1iO,EAAQ5L,EAAI0oB,EAAO7J,IAAM6jS,EAAep0E,QAAQ1iO,EAAQ5L,EAAG6e,EAAI8J,IAAW+5R,EAAep0E,QAAQ1iO,EAAQ5L,EAAI0oB,EAAO7J,EAAI8J,IAAWkvQ,EAAa3wS,OAAOuiP,GAAY6E,QAAQvwM,EAAE,GAAIA,EAAE,KAAO4kR,EAAqB3iT,EAAG6e,EAAG7e,EAAI0oB,EAAO7J,EAAGjT,IAAW+2S,EAAqB3iT,EAAG6e,EAAG7e,EAAG6e,EAAI8J,EAAQ/c,IAAW+2S,EAAqB3iT,EAAI0oB,EAAO7J,EAAG7e,EAAI0oB,EAAO7J,EAAI8J,EAAQ/c,IAAW+2S,EAAqB3iT,EAAG6e,EAAI8J,EAAQ3oB,EAAI0oB,EAAO7J,EAAI8J,EAAQ/c,UAAte,CAGF,IAIJ,SAASi3S,EAAiBG,GACxB,IAAIjhF,EAAK,CAAC,IAAK,KACXC,EAAK,CAAC,QAAS,UACnB,MAAO,CACL9xO,MAAO,SAAUu5O,EAAYiE,EAAWh9N,GACtC,GAAI+4N,EAAY,CACd,IAAI3yK,EAAQpmD,EAAKomD,MACb/4B,EAAI0rM,EAAWu5E,GACnB,OAAOC,EAAYllR,EAAG+4B,EACxB,CACF,EACA35C,KAAM,SAAUssN,EAAYiE,EAAWh9N,GACrC,GAAI+4N,EAAY,CACd,IAAI3yK,EAAQpmD,EAAKomD,MACbosP,EAAc,CAACz5E,EAAW1H,EAAGihF,IAAWv5E,EAAW1H,EAAGihF,IAAYv5E,EAAWzH,EAAGghF,KAEpF,OADAE,EAAY,GAAKA,EAAY,IAAMA,EAAYhoS,UACxC+nS,EAAYC,EAAY,GAAIpsP,IAAUmsP,EAAYC,EAAY,GAAIpsP,IAAUmsP,EAAYnsP,EAAM,GAAIosP,IAAgBD,EAAYnsP,EAAM,GAAIosP,EACjJ,CACF,EAEJ,CAEA,SAASD,EAAYllR,EAAG+4B,GACtB,OAAOA,EAAM,IAAM/4B,GAAKA,GAAK+4B,EAAM,EACrC,CAEA,IAAInpD,EAAWmyD,EACfz+E,EAAOD,QAAUusB,C,iCCjGjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBmvR,EAAenvR,EAAQ,OAEvBy3S,EAAiBz3S,EAAQ,OAEzBo3D,EAAWp3D,EAAQ,OAEnBu8R,EAAev8R,EAAQ,OAEvBy6S,EAAqBz6S,EAAQ,OAoB7B06S,EAAa,CAAC,UAAW,cACzBC,EAAkB,kBAClBC,EAAgB,yBAChBC,EAAiBlwF,EAAQuC,SAASC,OAAO2tF,MAgB7C,SAASlC,EAAa1uF,GACpBA,EAAQe,cAAc,CACpBC,SAAU,UACT,SAAU2tF,GACX,IAAII,EAAqBJ,EAAWI,mBAAqB,IAAIwB,EAAmB5B,EAAWt2R,OAAQ2nM,GACnG+uF,EAAmB8B,eAAelC,EAAW9pO,MAAOm7I,EACtD,GACF,CAsIA,SAASk1B,EAAej9J,EAAK61N,EAAcC,EAAe+C,EAAehwF,GASvE,GAAKA,EAAL,CAIA,IAAI2+C,EAAKxnL,EAAIoqJ,QAEb,IAAIo9B,EAAGixC,GAAP,CAIKjxC,EAAGgxC,KACNhxC,EAAGgxC,GAAmBM,GAGxB,IAAIjhU,EAAKuiT,EAAa9tD,eAAek7B,EAAIgxC,EAAiB1C,EAAeD,GACzEh+T,EAAGmoG,EAAK64N,EAPR,CANA,CAcF,CAEA,SAASC,EAAW94N,EAAK64N,GACvB,IAAK74N,EAAI+4N,aAAc,CACrB,IAAIvxC,EAAKxnL,EAAIoqJ,QACbo9B,EAAGixC,IAAiB,EACpBz4N,EAAIi9J,eAAe,CACjBpjQ,KAAM,cACN6oK,MAAOm2J,IAETrxC,EAAGixC,IAAiB,CACtB,CACF,CAEA,SAASO,EAAaC,EAAsBC,EAAe5kT,EAAM40N,GAC/D,IAAK,IAAI7vO,EAAI,EAAGwT,EAAMqsT,EAAc7hU,OAAQgC,EAAIwT,EAAKxT,IAAK,CACxD,IAAIwsB,EAAOqzS,EAAc7/T,GAEzB,GAAI4/T,EAAqBpzS,EAAKipO,WAAW5lB,EAAW50N,EAAMuR,EAAKg9N,UAAWh9N,GACxE,OAAO,CAEX,CACF,CAEA,SAASszS,EAAwBlwF,GAC/B,IAAIuC,EAAgBvC,EAAYuC,cAEhC,GAAI7D,EAAOohF,SAASv9E,GAAgB,CAClC,IAAI4tF,EAAO,GAOX,OANAzxF,EAAO56H,KAAK93B,GAAU,SAAUokP,EAAwBvqE,GACtDsqE,EAAKtqE,GAAa,SAAU5lB,EAAW50N,EAAMuuO,EAAWh9N,GACtD,IAAI+4N,EAAatqO,EAAK69N,cAAcjJ,GACpC,OAAOmwF,EAAuB7tF,GAAeoT,EAAYiE,EAAWh9N,EACtE,CACF,IACOuzS,CACT,CAAO,GAAIzxF,EAAOqhF,WAAWx9E,GAAgB,CAC3C,IAAI8tF,EAAY,CAAC,EAIjB,OAHA3xF,EAAO56H,KAAK93B,GAAU,SAAUumE,EAAKszG,GACnCwqE,EAAUxqE,GAAatjB,CACzB,IACO8tF,CACT,CAEA,OAAO9tF,CACT,CAEA,SAAS+tF,EAAsB7C,EAAY3iF,GACzC,IAAIylF,EAAgB9C,EAAWt2R,OAAO2zM,YACtC,OAAwB,MAAjBylF,GAA2C,QAAlBA,IAA4B7xF,EAAOxrO,QAAQq9T,GAAiB7xF,EAAOj7N,QAAQ8sT,EAAezlF,GAAe,EAAIA,IAAgBylF,EAC/J,CAEA,SAASC,EAAa5zS,GACpB,IAAIg9N,EAAYh9N,EAAKg9N,UAAY,CAAC,EAOlC,OANAlb,EAAO56H,KAAK93B,EAASpvD,EAAKipO,YAAY,SAAU4qE,EAAOC,GAErD92E,EAAU82E,GAAU,SAAU/6E,GAC5B,OAAO86E,EAAM96E,EAAYiE,EAAWh9N,EACtC,CACF,IACOA,CACT,CA9OA2iN,EAAQsC,eAAe4tF,GAAgB,SAAU3wF,EAAS/nI,EAAK6oI,GAC7Dd,EAAQe,cAAc,CACpBC,SAAU,UACT,SAAU2tF,GACX7tF,GAA4B,qBAAjBA,EAAQhvO,MAA+B68T,EAAWH,eAA+B,UAAhB1tF,EAAQ3vO,IAAkB2vO,EAAQktF,YAAc,CAC1HjnE,WAAW,GAEf,IACA2nE,EAAa1uF,EACf,IAeAS,EAAQ4C,eAAestF,GAAgB,SAAU3wF,EAAS/nI,EAAK6oI,GAC7D,IACIgtF,EACAC,EAFA+C,EAAgB,GAGpB9wF,EAAQe,cAAc,CACpBC,SAAU,UACT,SAAU2tF,EAAYkD,GACvB,IAAIC,EAAoB,CACtB7C,QAASN,EAAW73T,GACpB+6T,WAAYA,EACZE,UAAWpD,EAAW58T,KACtB8yF,MAAO+6I,EAAOh+M,MAAM+sS,EAAW9pO,OAC/B46B,SAAU,IAIZqxM,EAAcv/T,KAAKugU,GACnB,IAAI9D,EAAcW,EAAWt2R,OACzBs1R,EAAYK,EAAYL,UACxBqE,EAAkB,GAClBC,EAA2B,GAC3BC,EAAoB,GACpBC,EAAiB,EAEhBN,IAEH/D,EAAeE,EAAYF,aAC3BC,EAAgBC,EAAYD,eAI9B,IAAIlpO,EAAQ+6I,EAAO5oN,IAAI23S,EAAW9pO,OAAO,SAAU/mE,GACjD,OAAO4zS,EAAa9xF,EAAO94I,SAAS,CAClCqpO,aAAciC,EAAqBt0S,EAAKipO,WAAWjpO,IAClDA,GACL,IACIu0S,EAAiB9E,EAAe+E,qBAAqB3D,EAAWt2R,OAAQm4R,GAAY,SAAU+B,GAChGA,EAAcx/B,cAAgB,OAChC,IAKA,SAASy/B,EAAWxmF,GAClB,MAAqB,QAAd2hF,GAAuBqE,EAAgBhmF,EAChD,CAIA,SAASymF,EAAQtB,GACf,QAASA,EAAc7hU,MACzB,CAqBA,SAASojU,EAAcxxF,EAAa8K,GAClC,IAAI7L,EAAWe,EAAYS,iBAC3BwwF,GAAkBhyF,EAASwyF,iBAC3BH,EAAWxmF,IAAgB7L,EAASylD,gBAAgB1kD,EAAY7oI,WAAW,SAAUstL,EAAaxkD,GAChF,WAAhBwkD,IAA6BssC,EAAyB9wF,GAAa,EACrE,GACF,CAEA,SAASyxF,EAAY1xF,EAAa8K,EAAamlF,GAC7C,IAAID,EAAuBE,EAAwBlwF,GAEnD,GAAKgwF,IAAwBM,EAAsB7C,EAAY3iF,KAI/DpM,EAAO56H,KAAKngB,GAAO,SAAU/mE,GAC3BozS,EAAqBpzS,EAAKipO,YAAc4nE,EAAWI,mBAAmB8D,cAAc/0S,EAAMojN,EAAalB,IAAYmxF,EAAc5/T,KAAKusB,GACtIq0S,GAAkBM,EAAQtB,EAC5B,IAEIqB,EAAWxmF,IAAgBymF,EAAQtB,IAAgB,CACrD,IAAI5kT,EAAO20N,EAAY7oI,UACvB9rF,EAAKy4F,MAAK,SAAUm8H,GACd8vF,EAAaC,EAAsBC,EAAe5kT,EAAM40N,KAC1D8wF,EAAyB9wF,GAAa,EAE1C,GACF,CACF,CA7DAvB,EAAOxrO,QAAQu5T,IAAc/tF,EAAO56H,KAAK2oN,GAAW,SAAU3hF,GAC5DgmF,EAAgBhmF,GAAe,CACjC,IA0BAhM,EAAQy/E,YAAW,SAAUv+E,EAAa8K,GACxC,IAAImlF,EAAgBe,EAAkBlmF,GAAe,GAC7B,aAAxB9K,EAAYD,QAAyByxF,EAAcxxF,EAAa8K,EAAamlF,GAAiByB,EAAY1xF,EAAa8K,EAAamlF,EACtI,IAiCAnxF,EAAQy/E,YAAW,SAAUv+E,EAAa8K,GACxC,IAAI8mF,EAAsB,CACxBzxF,SAAUH,EAAYpqO,GACtBk1O,YAAaA,EACb2W,WAAYzhB,EAAYnvO,KACxBovO,UAAW,IAIb2wF,EAAkBryM,SAASluH,KAAKuhU,GAChC,IAAI5B,EAAuBE,EAAwBlwF,GAC/CiwF,EAAgBe,EAAkBlmF,GAClCz/N,EAAO20N,EAAY7oI,UACnB06N,EAAgBP,EAAWxmF,GAAe,SAAU7K,GACtD,OAAO8wF,EAAyB9wF,IAAc2xF,EAAoB3xF,UAAU5vO,KAAKgb,EAAK02O,YAAY9hB,IAAa,WAAa,YAC9H,EAAI,SAAUA,GACZ,OAAO8vF,EAAaC,EAAsBC,EAAe5kT,EAAM40N,IAAc2xF,EAAoB3xF,UAAU5vO,KAAKgb,EAAK02O,YAAY9hB,IAAa,WAAa,YAC7J,GAECqxF,EAAWxmF,GAAemmF,EAAiBM,EAAQtB,KAAmB5D,EAAeyF,YAAYxC,EAAY6B,EAAgB9lT,EAAMwmT,EACtI,GACF,IACA79D,EAAej9J,EAAK61N,EAAcC,EAAe+C,EAAehwF,EAClE,IA0FA,IAAIsxF,EAAuB,CACzBpC,MAAOpwF,EAAOj1C,KACdulI,MAAOtwF,EAAOj1C,KACdpgK,KAAM,SAAUzM,GACd,OAAOm1S,EAA0Bn1S,EAAKomD,MACxC,EACA/vC,QAAS,SAAUrW,GAIjB,IAHA,IAAIo1S,EACAhvP,EAAQpmD,EAAKomD,MAER5yE,EAAI,EAAGwT,EAAMo/D,EAAM50E,OAAQgC,EAAIwT,EAAKxT,IAAK,CAChD4hU,EAASA,GAAU,CAAC,CAAC/yO,KAAWA,KAAW,CAACA,KAAWA,MACvD,IAAIgzO,EAAKjvP,EAAM5yE,GACf6hU,EAAG,GAAKD,EAAO,GAAG,KAAOA,EAAO,GAAG,GAAKC,EAAG,IAC3CA,EAAG,GAAKD,EAAO,GAAG,KAAOA,EAAO,GAAG,GAAKC,EAAG,IAC3CA,EAAG,GAAKD,EAAO,GAAG,KAAOA,EAAO,GAAG,GAAKC,EAAG,IAC3CA,EAAG,GAAKD,EAAO,GAAG,KAAOA,EAAO,GAAG,GAAKC,EAAG,GAC7C,CAEA,OAAOD,GAAUD,EAA0BC,EAC7C,GAGF,SAASD,EAA0BC,GACjC,OAAO,IAAIjuB,EAAaiuB,EAAO,GAAG,GAAIA,EAAO,GAAG,GAAIA,EAAO,GAAG,GAAKA,EAAO,GAAG,GAAIA,EAAO,GAAG,GAAKA,EAAO,GAAG,GAC5G,CAEA1kU,EAAQkgU,aAAeA,C,wBCnTvB54S,EAAQ,OAERA,EAAQ,OAERA,EAAQ,M,iCCJR,IAAI2qN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAElB0hS,EAAa1hS,EAAQ,OAErBmlR,EAAanlR,EAAQ,OAoBrBs9S,EAAa,CACfC,GAAI,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAClFC,GAAI,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,QAEtEC,EAAY,CACdF,GAAI,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnCC,GAAI,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAGjCv4S,EAAW0lN,EAAQqxE,oBAAoB,CACzChgT,KAAM,WAMN0hU,UAAW,KAMXC,UAAW,KAMXC,iBAAkB,KAMlBC,gBAAiB,KACjBlnU,OAAQ,SAAUmnU,EAAe5zF,EAAS/nI,GACxC,IAAIzvD,EAAQl7C,KAAKk7C,MACjBA,EAAMigM,YACN,IAAItI,EAAWyzF,EAAcjyF,iBAEzBkyF,EAAY1zF,EAAS2zF,eACrB50R,EAASihM,EAASg8D,YAEtB7uS,KAAKymU,eAAeH,EAAeC,EAAWrrR,GAG9Cl7C,KAAK0mU,aAAaJ,EAAeC,EAAW30R,EAAQsJ,GAEpDl7C,KAAK2mU,gBAAgBL,EAAeC,EAAW30R,EAAQsJ,GAEvDl7C,KAAK4mU,iBAAiBN,EAAe10R,EAAQsJ,GAE7Cl7C,KAAK6mU,gBAAgBP,EAAeC,EAAW30R,EAAQsJ,EACzD,EAEAurR,eAAgB,SAAUH,EAAeC,EAAWrrR,GAMlD,IALA,IAAI23L,EAAWyzF,EAAcjyF,iBACzByyF,EAAqBR,EAAc9sF,SAAS,aAAagG,eACzDunF,EAAKl0F,EAASm0F,eACdC,EAAKp0F,EAASq0F,gBAETljU,EAAIuiU,EAAU7nR,MAAM/oB,KAAM3xB,GAAKuiU,EAAU5nR,IAAIhpB,KAAM3xB,EAAI6uO,EAASs0F,YAAYnjU,EAAG,GAAG2xB,KAAM,CAC/F,IAAI3lB,EAAQ6iO,EAAS4+B,WAAW,CAACztQ,IAAI,GAAOojU,GAExCnqS,EAAO,IAAI65M,EAAQuF,KAAK,CAC1B7mN,MAAO,CACL1V,EAAG9P,EAAM,GACT2uB,EAAG3uB,EAAM,GACTw4B,MAAOu+R,EACPt+R,OAAQw+R,GAEVv0S,OAAQ,UACR9mB,MAAOk7T,IAET5rR,EAAM36C,IAAI08B,EACZ,CACF,EAEAypS,aAAc,SAAUJ,EAAeC,EAAW30R,EAAQsJ,GACxD,IAAI90C,EAAOpG,KACP6yO,EAAWyzF,EAAcjyF,iBACzBmrB,EAAiB8mE,EAAc9sF,SAAS,uBAAuBjgM,eAC/D7L,EAAO44R,EAAcpjU,IAAI,kBACzB62B,EAAYylO,EAAezlO,UAC/B/5B,KAAKkmU,UAAY,GACjBlmU,KAAKmmU,UAAY,GACjBnmU,KAAKomU,iBAAmB,GACxBpmU,KAAKqmU,gBAAkB,GAGvB,IAFA,IAAIgB,EAAWd,EAAU7nR,MAEhB16C,EAAI,EAAGqjU,EAAS1xS,MAAQ4wS,EAAU5nR,IAAIhpB,KAAM3xB,IAAK,CACxDsjU,EAAUD,EAASE,cAET,IAANvjU,IACFqjU,EAAWx0F,EAAS20F,YAAYjB,EAAU7nR,MAAM/f,EAAI,IAAM4nS,EAAU7nR,MAAMllC,IAG5E,IAAI88D,EAAO+wP,EAAS/wP,KACpBA,EAAKmxP,SAASnxP,EAAKE,WAAa,GAChC6wP,EAAWx0F,EAAS20F,YAAYlxP,EAClC,CAIA,SAASgxP,EAAUhxP,GACjBlwE,EAAKggU,iBAAiBniU,KAAK4uO,EAAS20F,YAAYlxP,IAEhDlwE,EAAKigU,gBAAgBpiU,KAAK4uO,EAAS4+B,WAAW,CAACn7L,IAAO,GAAO8wP,IAE7D,IAAI17S,EAAStlB,EAAKshU,wBAAwBpB,EAAehwP,EAAM1kC,GAE/DxrC,EAAK8/T,UAAUjiU,KAAKynB,EAAO,IAE3BtlB,EAAK+/T,UAAUliU,KAAKynB,EAAOA,EAAO1pB,OAAS,IAE3C0rC,GAAQtnC,EAAKuhU,eAAej8S,EAAQ8zO,EAAgBtkN,EACtD,CAdAosR,EAAUz0F,EAASs0F,YAAYZ,EAAU5nR,IAAIhpB,KAAM,GAAG4xS,cAiBtD75R,GAAQ1tC,KAAK2nU,eAAevhU,EAAKwhU,gBAAgBxhU,EAAK8/T,UAAWnsS,EAAW6X,GAAS4tN,EAAgBtkN,GAErGxN,GAAQ1tC,KAAK2nU,eAAevhU,EAAKwhU,gBAAgBxhU,EAAK+/T,UAAWpsS,EAAW6X,GAAS4tN,EAAgBtkN,EACvG,EAEA0sR,gBAAiB,SAAUl8S,EAAQqO,EAAW6X,GAC5C,IAAI2oD,EAAK,CAAC7uE,EAAO,GAAGvpB,QAASupB,EAAOA,EAAO1pB,OAAS,GAAGG,SACnDglG,EAAiB,eAAXv1D,EAA0B,EAAI,EAIxC,OAFA2oD,EAAG,GAAG4M,GAAO5M,EAAG,GAAG4M,GAAOptE,EAAY,EACtCwgE,EAAG,GAAG4M,GAAO5M,EAAG,GAAG4M,GAAOptE,EAAY,EAC/BwgE,CACT,EAEAotO,eAAgB,SAAUj8S,EAAQ8zO,EAAgBtkN,GAChD,IAAI2sR,EAAU,IAAI/wF,EAAQglB,SAAS,CACjCxf,GAAI,GACJ9mN,MAAO,CACL9J,OAAQA,GAEV9f,MAAO4zP,IAETtkN,EAAM36C,IAAIsnU,EACZ,EAEAH,wBAAyB,SAAUpB,EAAehwP,EAAM1kC,GACtD,IAAIihM,EAAWyzF,EAAcjyF,iBAC7B/9J,EAAOu8J,EAAS20F,YAAYlxP,GAG5B,IAFA,IAAI5qD,EAAS,GAEJ1nB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAI8jU,EAAOj1F,EAASs0F,YAAY7wP,EAAK3gD,KAAM3xB,GACvCgM,EAAQ6iO,EAAS4+B,WAAW,CAACq2D,EAAKnyS,OAAO,GAC7CjK,EAAO,EAAIo8S,EAAKC,KAAO/3T,EAAMo3T,GAC7B17S,EAAO,EAAIo8S,EAAKC,IAAM,GAAK/3T,EAAiB,eAAX4hC,EAA0B,KAAO,KACpE,CAEA,OAAOlmB,CACT,EACAs8S,gBAAiB,SAAU15R,EAAW1sB,GACpC,MAAyB,kBAAd0sB,GAA0BA,EAC5B47Q,EAAW+d,gBAAgB35R,EAAW1sB,GAGtB,oBAAd0sB,EACFA,EAAU1sB,GAGZA,EAAO4yQ,OAChB,EACA0zC,yBAA0B,SAAUtS,EAAQ5lT,EAAO4hC,EAAQ9f,EAAU8oQ,GACnE5qR,EAAQA,EAAM7N,QACd,IAAIymE,EAAS,CAAC,SAAU,UAEP,WAAb92C,GACF9hB,EAAM,IAAM4qR,EACZhyN,EAAS,CAAC,SAAU,QACE,SAAb92C,EACT9hB,EAAM,IAAM4qR,EACU,UAAb9oQ,GACT9hB,EAAM,IAAM4qR,EACZhyN,EAAS,CAAC,SAAU,QAGpB54D,EAAM,IAAM4qR,EAGd,IAAIxkQ,EAAS,EAMb,MAJiB,SAAbtE,GAAoC,UAAbA,IACzBsE,EAASjwB,KAAK40B,GAAK,GAGd,CACLk5H,SAAU79H,EACVtE,SAAU9hB,EACVpE,MAAO,CACLyuB,UAAWuuC,EAAO,GAClBm0L,kBAAmBn0L,EAAO,IAGhC,EAEA+9P,gBAAiB,SAAUL,EAAeC,EAAW30R,EAAQsJ,GAC3D,IAAIitR,EAAY7B,EAAc9sF,SAAS,aAEvC,GAAK2uF,EAAUjlU,IAAI,QAAnB,CAIA,IAAI03R,EAASutC,EAAUjlU,IAAI,UACvBmL,EAAM85T,EAAUjlU,IAAI,YAEnBmL,IACHA,EAAiB,eAAXujC,EAA0B,MAAQ,QAG1C,IAAIlmB,EAAS,CAAC1rB,KAAKkmU,UAAUlmU,KAAKkmU,UAAUlkU,OAAS,GAAIhC,KAAKmmU,UAAU,IACpEiC,GAAM18S,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACrC28S,GAAM38S,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACrCy7E,EAAiB,eAAXv1D,EAA0B,EAAI,EACpC02R,EAAY,CACd/3R,IAAK,CAAC63R,EAAI18S,EAAOy7E,GAAK,IACtB32D,OAAQ,CAAC43R,EAAI18S,EAAO,EAAIy7E,GAAK,IAC7B92D,KAAM,CAAC3kB,EAAO,EAAIy7E,GAAK,GAAIkhO,GAC3B/3R,MAAO,CAAC5kB,EAAOy7E,GAAK,GAAIkhO,IAEtB5jU,EAAO8hU,EAAU7nR,MAAM/f,GAEtB4nS,EAAU5nR,IAAIhgB,GAAK4nS,EAAU7nR,MAAM/f,IACtCl6B,EAAOA,EAAO,IAAM8hU,EAAU5nR,IAAIhgB,GAGpC,IAAI2P,EAAY65R,EAAUjlU,IAAI,aAC1B0e,EAAS,CACX88B,MAAO6nR,EAAU7nR,MAAM/f,EACvBggB,IAAK4nR,EAAU5nR,IAAIhgB,EACnB61P,QAAS/vR,GAGPmgC,EAAU5kC,KAAKgoU,gBAAgB15R,EAAW1sB,GAE1C2mT,EAAW,IAAIzxF,EAAQoc,KAAK,CAC9B5W,GAAI,KAENxF,EAAQmf,aAAasyE,EAAS38T,MAAOu8T,EAAW,CAC9CxrS,KAAMiI,IACJ2jS,EAAS1xS,KAAK72B,KAAKkoU,yBAAyBK,EAAUD,EAAUj6T,GAAMujC,EAAQvjC,EAAKusR,IACvF1/O,EAAM36C,IAAIgoU,EAxCV,CAyCF,EACAC,0BAA2B,SAAUx4T,EAAOy4T,EAAU72R,EAAQ9f,EAAU8oQ,GACtE,IAAI7gP,EAAQ,OACR2uR,EAAS,MACT5oT,EAAI9P,EAAM,GACV2uB,EAAI3uB,EAAM,GAwBd,MAtBe,eAAX4hC,GACFjT,GAAQi8P,EAEJ6tC,IACF1uR,EAAQ,UAGO,UAAbjoB,IACF42S,EAAS,YAGX5oT,GAAQ86Q,EAEJ6tC,IACFC,EAAS,UAGM,UAAb52S,IACFioB,EAAQ,UAIL,CACLj6B,EAAGA,EACH6e,EAAGA,EACHtE,UAAW0f,EACXgjN,kBAAmB2rE,EAEvB,EAEA9B,iBAAkB,SAAUN,EAAe10R,EAAQsJ,GACjD,IAAIytR,EAAarC,EAAc9sF,SAAS,cAExC,GAAKmvF,EAAWzlU,IAAI,QAApB,CAIA,IAAIsxR,EAAUm0C,EAAWzlU,IAAI,WACzB03R,EAAS+tC,EAAWzlU,IAAI,UACxBmL,EAAMs6T,EAAWzlU,IAAI,YACrB62C,EAAQ4uR,EAAWzlU,IAAI,SACvB0lU,EAAa,CAAC5oU,KAAKkmU,UAAWlmU,KAAKmmU,WAEnC7zF,EAAOohF,SAASl/B,KAClBA,EAAUsxC,EAAWtxC,EAAQp4P,gBAAkB,IAGjD,IAAI+qE,EAAc,UAAR94F,EAAkB,EAAI,EAC5B+8B,EAAkB,eAAXwG,EAA0B,EAAI,EACzCgpP,EAAiB,UAARvsR,GAAmBusR,EAASA,EAGrC,IAFA,IAAI6tC,EAAqB,WAAV1uR,EAEN/1C,EAAI,EAAGA,EAAI4kU,EAAWzhO,GAAKnlG,OAAS,EAAGgC,IAAK,CACnD,IAAI67P,EAAM+oE,EAAWzhO,GAAKnjG,GAAG7B,QACzBklU,EAAWrnU,KAAKomU,iBAAiBpiU,GAErC,GAAIykU,EAAU,CACZ,IAAII,EAAiB7oU,KAAKqmU,gBAAgBriU,GAC1C67P,EAAIz0N,IAASy9R,EAAez9R,GAAQw9R,EAAW,GAAG5kU,EAAI,GAAGonC,IAAS,CACpE,CAEA,IAAIkD,EAAYq6R,EAAWzlU,IAAI,aAC3BuB,EAAO+vR,GAAS6yC,EAAS7tT,EAAI,GAC7BoI,EAAS,CACXknT,KAAMzB,EAAS1oS,EACfoqS,IAAK1B,EAAS1oS,EAAI,IAAIx8B,MAAM,GAC5B6mU,GAAI3B,EAAS7tT,EACbw2H,GAAIq3L,EAAS7tT,EACbg7Q,QAAS/vR,GAGPmgC,EAAU5kC,KAAKgoU,gBAAgB15R,EAAW1sB,GAE1CqnT,EAAY,IAAInyF,EAAQoc,KAAK,CAC/B5W,GAAI,KAENhK,EAAO5uH,OAAOozH,EAAQmf,aAAagzE,EAAUr9T,MAAO+8T,EAAY,CAC9DhsS,KAAMiI,IACJ5kC,KAAKwoU,0BAA0B3oE,EAAK4oE,EAAU72R,EAAQvjC,EAAKusR,IAC/D1/O,EAAM36C,IAAI0oU,EACZ,CA7CA,CA8CF,EACAC,yBAA0B,SAAUl5T,EAAO4hC,EAAQ9f,EAAU8oQ,EAAQuuC,GACnE,IAAIpvR,EAAQ,SACR2uR,EAAS,SACT5oT,EAAI9P,EAAM,GACV2uB,EAAI3uB,EAAM,GACVo5T,EAAuB,UAAbt3S,EAUd,MARe,eAAX8f,GACF9xB,EAAIA,EAAI86Q,GAAUwuC,EAAU,GAAK,GAAKD,EAAS,GAAK,EACpDpvR,EAAQqvR,EAAU,QAAU,SAE5BzqS,EAAIA,EAAIi8P,GAAUwuC,EAAU,GAAK,GAAKD,EAAS,GAAK,EACpDT,EAASU,EAAU,SAAW,OAGzB,CACLtpT,EAAGA,EACH6e,EAAGA,EACHtE,UAAW0f,EACXgjN,kBAAmB2rE,EAEvB,EAEA7B,gBAAiB,SAAUP,EAAeC,EAAW30R,EAAQsJ,GAC3D,IAAImuR,EAAW/C,EAAc9sF,SAAS,YAEtC,GAAK6vF,EAASnmU,IAAI,QAAlB,CAIA,IAAI2vO,EAAWyzF,EAAcjyF,iBACzBhmO,EAAMg7T,EAASnmU,IAAI,YACnBsxR,EAAU60C,EAASnmU,IAAI,WACvB03R,EAASyuC,EAASnmU,IAAI,UACtBomU,EAAiBz2F,EAAS02F,oBAE1Bj3F,EAAOohF,SAASl/B,KAClBA,EAAUyxC,EAAUzxC,EAAQp4P,gBAAkB,IAGhD,IAAIsiB,EAAQm0L,EAASs0F,YAAYZ,EAAU5nR,IAAIhpB,KAAM,EAAI4wS,EAAUiD,OAAO7zS,KACtEwzS,EAAW,CAACt2F,EAASm0F,eAAgBn0F,EAASq0F,iBAClDtsC,EAAS+S,EAAWjsD,aAAak5C,EAAQuuC,EAAoB,eAAXv3R,EAA0B,EAAI,IAEpE,UAARvjC,IACFqwC,EAAQm0L,EAASs0F,YAAYZ,EAAU7nR,MAAM/oB,OAAQ,EAAI4wS,EAAUkD,QAAQ9zS,KAC3EilQ,GAAUA,GAGZ,IAAK,IAAI52R,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAI8jU,EAAOj1F,EAASs0F,YAAYzoR,EAAO16C,GACnCgM,EAAQ6iO,EAAS4+B,WAAW,CAACq2D,EAAKnyS,OAAO,GAAO8Z,OAChDs4R,EAAM/jU,EACV+jU,EAAM5hU,KAAK6iB,KAAKhlB,EAAIslU,GAAkB,GACtC,IAAII,EAAW,IAAI5yF,EAAQoc,KAAK,CAC9B5W,GAAI,KAENhK,EAAO5uH,OAAOozH,EAAQmf,aAAayzE,EAAS99T,MAAOy9T,EAAU,CAC3D1sS,KAAM63P,EAAQuzC,KACZ/nU,KAAKkpU,yBAAyBl5T,EAAO4hC,EAAQvjC,EAAKusR,EAAQuuC,IAC9DjuR,EAAM36C,IAAImpU,EACZ,CAjCA,CAkCF,IAGFvoU,EAAOD,QAAUusB,C,wBC9ajBjF,EAAQ,OAERA,EAAQ,M,wBCFRA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,M,uBCZRA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,M,wBCZRA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,M,iCCZR,IAAI8pN,EAAS9pN,EAAQ,OAEjBmlR,EAAanlR,EAAQ,OAErByhR,EAASzhR,EAAQ,MAEjBmhT,EAAanhT,EAAQ,OAoBrBkvF,EAAO46H,EAAO56H,KACdkyN,EAAMj8B,EAAWi8B,IAWjBC,EAAY,SAAUpzE,EAAS16M,EAAW+tR,EAAep3F,GAK3D1yO,KAAK+pU,SAAWtzE,EAKhBz2P,KAAKgqU,WAAajuR,EAMlB/7C,KAAKiqU,aAMLjqU,KAAKkqU,eAMLlqU,KAAKmqU,YAOLnqU,KAAKoqU,YAMLpqU,KAAK0yO,QAAUA,EAMf1yO,KAAKqqU,eAAiBP,CAKxB,EAgTA,SAASQ,EAAoBC,EAAW1xC,EAASvuC,GAC/C,IAAI6T,EAAa,CAACtrK,KAAWA,KA2B7B,OA1BA6kB,EAAK4yI,GAAc,SAAU1W,GAC3B,IAAI2/E,EAAa3/E,EAAY7oI,UAEzBwoN,GACF77M,EAAK67M,EAAW7nE,aAAamtC,GAAS,IAAO,SAAU5mJ,GACrD,IAAIu4L,EAAejX,EAAWkX,qBAAqBx4L,GACnDu4L,EAAa,GAAKrsE,EAAW,KAAOA,EAAW,GAAKqsE,EAAa,IACjEA,EAAa,GAAKrsE,EAAW,KAAOA,EAAW,GAAKqsE,EAAa,GACnE,GAEJ,IAEIrsE,EAAW,GAAKA,EAAW,KAC7BA,EAAa,CAAC3yK,IAAKA,MAYrBk/O,EAAgBH,EAAWpsE,GACpBA,CACT,CAEA,SAASusE,EAAgBH,EAAWpsE,GAClC,IAAIgjB,EAAYopD,EAAUI,eACtB/7T,EAAMuyQ,EAAUypD,QAAO,GAGvB5jB,EAA2C,aAA1B7lC,EAAUj+Q,IAAI,QAC/B2nU,EAAc7jB,GAAkB7lC,EAAUq0C,gBAAgBxzT,OAEnD,MAAP4M,GAAuB,YAARA,GAAoC,oBAARA,EAC7CuvP,EAAW,GAAKvvP,EACPo4S,IACT7oD,EAAW,GAAK0sE,EAAc,EAAI,EAAIr/O,KAGxC,IAAI78E,EAAMwyQ,EAAU2pD,QAAO,GAiB3B,OAfW,MAAPn8T,GAAuB,YAARA,GAAoC,oBAARA,EAC7CwvP,EAAW,GAAKxvP,EACPq4S,IACT7oD,EAAW,GAAK0sE,EAAc,EAAIA,EAAc,EAAIr/O,KAGjD21L,EAAUj+Q,IAAI,SAAS,KAC1Bi7P,EAAW,GAAK,IAAMA,EAAW,GAAK,GACtCA,EAAW,GAAK,IAAMA,EAAW,GAAK,IAOjCA,CACT,CAEA,SAAS4sE,EAAaR,EAAWS,GAC/B,IAAI7pD,EAAYopD,EAAUI,eACtBM,EAAgBV,EAAUL,eAC1BgB,EAAcX,EAAUN,aAE5B,GAAKgB,EAAL,CAKA,IAAI7hT,EAAYukR,EAAWw9B,kBAAkBD,EAAa,CAAC,EAAG,MAC9D9hT,EAAYjjB,KAAKyI,IAAIwa,EAAW,IAEhC,IAAIgiT,EAAYJ,GAAkC,IAArBC,EAAc,IAAiC,MAArBA,EAAc,GACrE9pD,EAAUkqD,SAASD,EAAY,MAAQF,EAAY,GAAGn1R,QAAQ3sB,GAAYgiT,EAAY,MAAQF,EAAY,GAAGn1R,QAAQ3sB,GAPrH,CAQF,CAEA,SAASkiT,EAAcf,GACrB,IAAIgB,EAAahB,EAAUH,YAAc,CAAC,EACtCN,EAAgBS,EAAUF,eAC1BlsE,EAAaosE,EAAUJ,YAC3BzyN,EAAK,CAAC,MAAO,QAAQ,SAAUkuN,GAC7B,IAAI4F,EAAc1B,EAAc5mU,IAAI0iU,EAAS,QACzC6F,EAAY3B,EAAc5mU,IAAI0iU,EAAS,aAC9B,MAAb6F,IAAsBA,EAAYlB,EAAUI,eAAev/R,KAAK/U,MAAMzJ,MAAM6+S,IAE3D,MAAbA,EACFD,EAAc79B,EAAWtwC,UAAUc,EAAW,GAAKstE,EAAWttE,EAAY,CAAC,EAAG,MAAM,GAC5D,MAAfqtE,IACTC,EAAY99B,EAAWtwC,UAAUmuE,EAAa,CAAC,EAAG,KAAMrtE,GAAY,GAAQA,EAAW,IAGzFotE,EAAW3F,EAAS,QAAU4F,EAC9BD,EAAW3F,EAAS,aAAe6F,CACrC,GACF,CAlZA5B,EAAUtiU,UAAY,CACpB2F,YAAa28T,EASb6B,SAAU,SAAU5B,GAClB,OAAO9pU,KAAKqqU,iBAAmBP,CACjC,EAKA6B,mBAAoB,WAClB,OAAO3rU,KAAKiqU,aAAa9nU,OAC3B,EAKAypU,qBAAsB,WACpB,OAAO5rU,KAAKkqU,eAAe/nU,OAC7B,EAOA0pU,sBAAuB,WACrB,IAAIvhF,EAAe,GACf5X,EAAU1yO,KAAK0yO,QAenB,OAdAA,EAAQy/E,YAAW,SAAUv+E,GAC3B,GAAIq2D,EAAO6hC,iBAAiBl4F,EAAY1wO,IAAI,qBAAsB,CAChE,IAAIuzP,EAAUz2P,KAAK+pU,SACf5oD,EAAYzuC,EAAQq5D,gBAAgB,CACtCr4D,SAAU+iB,EAAU,OACpBx0P,MAAO2xO,EAAY1wO,IAAIuzP,EAAU,aACjCjtP,GAAIoqO,EAAY1wO,IAAIuzP,EAAU,YAC7B,GAECz2P,KAAKgqU,cAAgB7oD,GAAaA,EAAUuzB,iBAC9CpqD,EAAarmP,KAAK2vO,EAEtB,CACF,GAAG5zO,MACIsqP,CACT,EACAqgF,aAAc,WACZ,OAAO3qU,KAAK0yO,QAAQizC,aAAa3lR,KAAK+pU,SAAW,OAAQ/pU,KAAKgqU,WAChE,EACA+B,kBAAmB,WACjB,IAII9lD,EACA+lD,EAUAC,EAfApzC,EAAU74R,KAAK+pU,SACfr3F,EAAU1yO,KAAK0yO,QACfyuC,EAAYnhR,KAAK2qU,eACjBuB,EAA0B,MAAZrzC,GAA+B,MAAZA,EAkBrC,OAdIqzC,GACFF,EAAoB,YACpB/lD,EAA2B,MAAZ4S,EAAkB,IAAM,MAEvCmzC,EAAoB,aACpB/lD,EAA2B,UAAZ4S,EAAsB,SAAW,SAIlDnmD,EAAQe,cAAcwyC,EAAe,QAAQ,SAAUkmD,IAChDA,EAAejpU,IAAI8oU,IAAsB,MAAQ7qD,EAAUj+Q,IAAI8oU,IAAsB,KACxFC,EAAsBE,EAE1B,IACOF,CACT,EACAG,cAAe,WACb,OAAO95F,EAAOh+M,MAAMt0B,KAAKoqU,YAC3B,EAWAiC,oBAAqB,SAAUxpO,GAC7B,IASIypO,EATAnuE,EAAan+P,KAAKmqU,YAClBhpD,EAAYnhR,KAAK2qU,eACjBt0S,EAAQ8qP,EAAU/1O,KAAK/U,MAEvBk2S,EAAgBvsU,KAAKqqU,eAAemC,mBAEpCC,EAAgB,CAAC,EAAG,KACpBxB,EAAgB,GAChBC,EAAc,GAElBxzN,EAAK,CAAC,QAAS,QAAQ,SAAUknC,EAAMz3C,GACrC,IAAIulO,EAAe7pO,EAAI+7C,GACnB+tL,EAAa9pO,EAAI+7C,EAAO,SAcD,YAAvB2tL,EAAcplO,IACA,MAAhBulO,IAAyBA,EAAeD,EAActlO,IAEtDwlO,EAAat2S,EAAMzJ,MAAM+gR,EAAWtwC,UAAUqvE,EAAcD,EAAetuE,MAE3EmuE,GAAmB,EACnBK,EAA2B,MAAdA,EAAqBxuE,EAAWh3J,GAAO9wE,EAAMzJ,MAAM+/S,GAIhED,EAAe/+B,EAAWtwC,UAAUsvE,EAAYxuE,EAAYsuE,IAK9DvB,EAAY/jO,GAAOwlO,EACnB1B,EAAc9jO,GAAOulO,CACvB,IACA9C,EAAIsB,GACJtB,EAAIqB,GAMJ,IAAI2B,EAAQ5sU,KAAKoqU,YAGjB,SAASyC,EAAYC,EAAYC,EAAUC,EAAYC,EAAUntJ,GAC/D,IAAI4uE,EAAS5uE,EAAU,OAAS,YAChC6pJ,EAAW,EAAGmD,EAAYE,EAAY,MAAOJ,EAAM,MAAQl+E,GAASk+E,EAAM,MAAQl+E,IAElF,IAAK,IAAI1qP,EAAI,EAAGA,EAAI,EAAGA,IACrB+oU,EAAS/oU,GAAK2pS,EAAWtwC,UAAUyvE,EAAW9oU,GAAIgpU,EAAYC,GAAU,GACxEntJ,IAAYitJ,EAAS/oU,GAAKqyB,EAAMzJ,MAAMmgT,EAAS/oU,IAEnD,CAEA,OAZAsoU,EAAmBO,EAAY3B,EAAaD,EAAe9sE,EAAYsuE,GAAe,GAASI,EAAY5B,EAAeC,EAAauB,EAAetuE,GAAY,GAY3J,CACL+sE,YAAaA,EACbD,cAAeA,EAEnB,EASAxkO,MAAO,SAAUqjO,GACf,GAAIA,IAAkB9pU,KAAKqqU,eAA3B,CAIA,IAAIt5D,EAAe/wQ,KAAK6rU,wBAExB7rU,KAAKmqU,YAAcG,EAAoBtqU,KAAMA,KAAK+pU,SAAUh5D,GAW5Du6D,EAActrU,MACd,IAAIktU,EAAaltU,KAAKqsU,oBAAoBvC,EAAcqD,eACxDntU,KAAKiqU,aAAeiD,EAAWhC,YAC/BlrU,KAAKkqU,eAAiBgD,EAAWjC,cAEjCF,EAAa/qU,KApBb,CAqBF,EAKAw8B,QAAS,SAAUstS,GACbA,IAAkB9pU,KAAKqqU,iBAI3BrqU,KAAKiqU,aAAejqU,KAAKkqU,eAAiB,KAC1Ca,EAAa/qU,MAAM,GACrB,EAKAgsS,WAAY,SAAU89B,EAAen/N,GACnC,GAAIm/N,IAAkB9pU,KAAKqqU,eAA3B,CAIA,IAAIxxC,EAAU74R,KAAK+pU,SACfz/E,EAAetqP,KAAK6rU,wBACpBuB,EAAatD,EAAc5mU,IAAI,cAC/BgoU,EAAclrU,KAAKiqU,aAEJ,SAAfmD,GAuBJ11N,EAAK4yI,GAAc,SAAU1W,GAC3B,IAAI2/E,EAAa3/E,EAAY7oI,UACzBgsJ,EAAWw8D,EAAW7nE,aAAamtC,GAAS,GAE3C9hC,EAAS/0P,SAIK,eAAforU,EACF7Z,EAAWxoD,YAAW,SAAUl3B,GAK9B,IAJA,IAAIw5F,EACAC,EACAhzF,EAEKt2O,EAAI,EAAGA,EAAI+yP,EAAS/0P,OAAQgC,IAAK,CACxC,IAAIlC,EAAQyxT,EAAWrwT,IAAI6zP,EAAS/yP,GAAI6vO,GACpC05F,GAAgBx+T,MAAMjN,GACtB0rU,EAAc1rU,EAAQopU,EAAY,GAClCuC,EAAe3rU,EAAQopU,EAAY,GAEvC,GAAIqC,IAAiBC,IAAgBC,EACnC,OAAO,EAGTF,IAAiBjzF,GAAW,GAC5BkzF,IAAgBH,GAAU,GAC1BI,IAAiBH,GAAW,EAC9B,CAGA,OAAOhzF,GAAY+yF,GAAWC,CAChC,IAEA51N,EAAKq/I,GAAU,SAAU9kH,GACvB,GAAmB,UAAfm7L,EACFx5F,EAAY3oI,QAAQsoN,EAAaA,EAAW7pS,IAAIuoH,GAAK,SAAUnwI,GAC7D,OAAQ4rU,EAAW5rU,GAAeA,EAAN0pF,GAC9B,SACK,CACL,IAAI5U,EAAQ,CAAC,EACbA,EAAMq7D,GAAOi5L,EAEb3X,EAAWoa,YAAY/2P,EACzB,CACF,IAGF8gC,EAAKq/I,GAAU,SAAU9kH,GACvBshL,EAAWqa,qBAAqB1C,EAAaj5L,EAC/C,IACF,GAhFA,CAkFA,SAASy7L,EAAW5rU,GAClB,OAAOA,GAASopU,EAAY,IAAMppU,GAASopU,EAAY,EACzD,CACF,GAyGF,IAAIz9S,EAAWo8S,EACf1oU,EAAOD,QAAUusB,C,iCCjfjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB2qN,GAFU1/L,EAAQojM,QAERruN,EAAQ,QAElB8pN,EAAS9pN,EAAQ,OAEjB+mS,EAAM/mS,EAAQ,OAEd6+P,EAAY7+P,EAAQ,OAEpByhR,EAASzhR,EAAQ,MAEjBqhT,EAAYrhT,EAAQ,OAoBpBkvF,EAAO46H,EAAO56H,KACdm2N,EAAc5jC,EAAO4jC,YACrBC,EAAgB36F,EAAQ6wE,qBAAqB,CAC/Cx/S,KAAM,WACN0xO,aAAc,CAAC,QAAS,QAAS,QAAS,aAAc,YAAa,aAAc,UAKnFM,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EAEHnmC,OAAQ,KAER7C,WAAY,KAEZC,WAAY,KAEZo+R,WAAY,SAgBZp1O,SAAU,KAKVt5C,MAAO,EAEPC,IAAK,IAELovR,WAAY,KAEZx6P,SAAU,KAEVy6P,QAAS,KAETC,QAAS,KAETC,aAAc,KAEdC,aAAc,KAEdC,UAAW,MAOb12Q,KAAM,SAAU3sB,EAAQg8M,EAAarU,GAMnC1yO,KAAKquU,oBAAsB,CAAC,EAK5BruU,KAAKsuU,UAAY,CAAC,EAMlBtuU,KAAKuuU,aAAe,CAAC,EAKrBvuU,KAAK+0S,eAKL/0S,KAAKwuU,eAAgB,EAoBrBxuU,KAAKyuU,eAAiB,CAAC,UAAW,WAClC,IAAIC,EAAiBC,EAAkB5jS,GAyBvC/qC,KAAKmtU,cAAgBuB,EACrB1uU,KAAK+iQ,qBAAqBh4N,EAAQ2nM,GAClC1yO,KAAK4uU,OAAOF,EACd,EAKA5rE,YAAa,SAAUm3B,GACrB,IAAIy0C,EAAiBC,EAAkB10C,GAEvC3nD,EAAOt0H,MAAMh+G,KAAK+qC,OAAQkvP,GAAW,GACrC3nD,EAAOt0H,MAAMh+G,KAAKmtU,cAAeuB,GAAgB,GACjD1uU,KAAK4uU,OAAOF,EACd,EAKAE,OAAQ,SAAUF,GAChB,IAAI9N,EAAa5gU,KAAK+qC,OAEjBwkR,EAAIsf,kBACPjO,EAAW/B,UAAW,GAGxB7+T,KAAK8uU,oBAAoBJ,GAEzBK,EAAe/uU,KAAM0uU,GACrB,IAAIvB,EAAgBntU,KAAKmtU,cACzBz1N,EAAK,CAAC,CAAC,QAAS,cAAe,CAAC,MAAO,cAAc,SAAUtqG,EAAOnL,GAIjC,UAA/BjC,KAAKyuU,eAAexsU,KACtB2+T,EAAWxzT,EAAM,IAAM+/T,EAAc//T,EAAM,IAAM,KAGrD,GAAGpN,MACHA,KAAK+0S,eAAiB/0S,KAAKw5O,SAAS,aAEpCx5O,KAAKgvU,eAELhvU,KAAKivU,kBACP,EAKAA,iBAAkB,WAChB,IAAIC,EAAclvU,KAAKuuU,aACvBvuU,KAAKmvU,gBAAe,SAAUC,EAAUrzR,EAAW+tR,EAAep3F,GAChE,IAAIyuC,EAAYnhR,KAAK+0R,gBAAgBq6C,EAAShkS,MAAM2Q,GAEhDwuR,EAAYppD,EAAUkuD,gBAC1BluD,EAAUkuD,cAAgB,IAAIxF,EAAUuF,EAAS3qU,KAAMs3C,EAAW/7C,KAAM0yO,IAGxEw8F,EAAYE,EAAS3qU,KAAO,IAAMs3C,GAAawuR,CACjD,GAAGvqU,KACL,EAKAgvU,aAAc,WACZ,IAAIpO,EAAa5gU,KAAK+qC,OAElBukS,EAAWtvU,KAAKuvU,iBAEpB1B,GAAY,SAAUuB,GACpB,IAAII,EAAgBJ,EAASrzR,UAC7B6kR,EAAW4O,GAAiBnoD,EAAUooD,iBAAiB7O,EAAW4O,GACpE,GAAGxvU,MAEc,cAAbsvU,EACFtvU,KAAK0vU,oBACiB,WAAbJ,GACTtvU,KAAK2vU,gBAET,EAKAJ,eAAgB,WAId,IAAI3O,EAAa5gU,KAAK+qC,OAClB6kS,GAAoB,EACxB/B,GAAY,SAAUuB,GAIkB,MAAlCxO,EAAWwO,EAASrzR,aACtB6zR,GAAoB,EAExB,GAAG5vU,MACH,IAAI4xC,EAASgvR,EAAWhvR,OAExB,OAAc,MAAVA,GAAkBg+R,EACb,SACGA,OAAL,GACS,MAAVh+R,IACFgvR,EAAWhvR,OAAS,cAGf,YAEX,EAKA89R,kBAAmB,WACjB,IAAIG,GAAgB,EAChBj+R,EAAS5xC,KAAKkD,IAAI,UAAU,GAC5B09T,EAAa5gU,KAAK+qC,OAClBgqP,EAAkB/0R,KAAK+0R,gBAE3B,GAAI86C,EAAe,CAEjB,IAAIp5E,EAAqB,aAAX7kN,EAAwB,IAAM,IAExCmjP,EAAgBt+B,EAAU,QAAQz0P,QACpC4+T,EAAWnqE,EAAU,aAAe,CAAC,GACrCo5E,GAAgB,GAEhBn4N,EAAKq9K,EAAgBxiC,YAAY,SAAUu5C,GACrC+jC,GAAiB/jC,EAAgB5oS,IAAI,UAAU,KAAU0uC,IAC3DgvR,EAAW5zB,gBAAkB,CAAClB,EAAgB4I,gBAC9Cm7B,GAAgB,EAEpB,GAEJ,CAEIA,GAEFhC,GAAY,SAAUuB,GACpB,GAAKS,EAAL,CAIA,IAAIC,EAAc,GACd5pD,EAAalmR,KAAK+0R,gBAAgBq6C,EAAShkS,MAE/C,GAAI86O,EAAWlkR,SAAW8tU,EAAY9tU,OACpC,IAAK,IAAIgC,EAAI,EAAGwT,EAAM0uQ,EAAWlkR,OAAQgC,EAAIwT,EAAKxT,IACd,aAA9BkiR,EAAWliR,GAAGd,IAAI,SACpB4sU,EAAY7rU,KAAKD,GAKvB48T,EAAWwO,EAASrzR,WAAa+zR,EAE7BA,EAAY9tU,SACd6tU,GAAgB,EAhBlB,CAkBF,GAAG7vU,MAGD6vU,GAOF7vU,KAAK0yO,QAAQy/E,YAAW,SAAUv+E,GAC5B5zO,KAAK+vU,0BAA0Bn8F,EAAa,UAC9Ci6F,GAAY,SAAUuB,GACpB,IAAIU,EAAclP,EAAWwO,EAASrzR,WAClCA,EAAY63L,EAAY1wO,IAAIksU,EAASrzR,WACrC0yQ,EAAS76E,EAAY1wO,IAAIksU,EAAS3gB,QAClCttC,EAAYvtC,EAAYlB,QAAQq5D,gBAAgB,CAClDr4D,SAAU07F,EAAShkS,KACnBnpC,MAAO85C,EACPvyC,GAAIilT,IACH,GACH1yQ,EAAYolO,EAAUuzB,eAElBpiE,EAAOj7N,QAAQy4T,EAAa/zR,GAAa,GAC3C+zR,EAAY7rU,KAAK83C,EAErB,GAEJ,GAAG/7C,KAEP,EAKA2vU,eAAgB,WACd,IAAI19L,EAEJjyI,KAAKmvU,gBAAe,SAAUC,IAC3Bn9L,IAAQA,EAAMm9L,EAAS3qU,KAC1B,GAAGzE,MACHA,KAAK+qC,OAAO6G,OAAiB,MAARqgG,EAAc,WAAa,YAClD,EAKA89L,0BAA2B,SAAUn8F,EAAaz9L,GAIhD,IAAI/yC,GAAK,EAST,OARAyqU,GAAY,SAAUuB,GACpB,IAAIY,EAAkBp8F,EAAY1wO,IAAIksU,EAASrzR,WAC3ColO,EAAYnhR,KAAK+0R,gBAAgBq6C,EAAShkS,MAAM4kS,GAE/C7uD,GAAaA,EAAUj+Q,IAAI,UAAYizC,IAC1C/yC,GAAK,EAET,GAAGpD,MACIoD,CACT,EAKA0rU,oBAAqB,SAAUJ,GAM7B,GAJIA,EAAepoU,eAAe,cAChCtG,KAAKwuU,eAAgB,GAGnBxuU,KAAKwuU,cAAe,CACtB,IAAIyB,EAAejwU,KAAK0yO,QAAQ3nM,OAChC/qC,KAAK+qC,OAAOitD,SAAWi4O,EAAaj/S,WAAai/S,EAAaznC,wBAA0B,EAAI,IAAM,EACpG,CACF,EAKA0nC,wBAAyB,WACvB,IAAIC,EAUJ,OATAtC,GAAY,SAAUuB,GACpB,GAAsB,MAAlBe,EAAwB,CAC1B,IAAIn5L,EAAUh3I,KAAKkD,IAAIksU,EAASrzR,WAE5Bi7F,EAAQh1I,SACVmuU,EAAiBnwU,KAAK+0R,gBAAgBq6C,EAAShkS,MAAM4rG,EAAQ,IAEjE,CACF,GAAGh3I,MACImwU,CACT,EAMAhB,eAAgB,SAAUttT,EAAU9hB,GAClC,IAAI2yO,EAAU1yO,KAAK0yO,QACnBm7F,GAAY,SAAUuB,GACpB13N,EAAK13G,KAAKkD,IAAIksU,EAASrzR,YAAY,SAAUA,GAC3Cl6B,EAASxhB,KAAKN,EAASqvU,EAAUrzR,EAAW/7C,KAAM0yO,EACpD,GAAG1yO,KACL,GAAGA,KACL,EAOAowU,aAAc,SAAU35E,EAAS16M,GAC/B,OAAO/7C,KAAKuuU,aAAa93E,EAAU,IAAM16M,EAC3C,EAOA4uR,aAAc,SAAUl0E,EAAS16M,GAC/B,IAAIwuR,EAAYvqU,KAAKowU,aAAa35E,EAAS16M,GAC3C,OAAOwuR,GAAaA,EAAUI,cAChC,EAYA0F,YAAa,SAAUxtO,GACrB,IAAI+9N,EAAa5gU,KAAK+qC,OAClBoiS,EAAgBntU,KAAKmtU,cACzBz1N,EAAK,CAAC,CAAC,QAAS,cAAe,CAAC,MAAO,cAAc,SAAUtqG,GAUxC,MAAjBy1F,EAAIz1F,EAAM,KAAgC,MAAjBy1F,EAAIz1F,EAAM,MACrCwzT,EAAWxzT,EAAM,IAAM+/T,EAAc//T,EAAM,IAAMy1F,EAAIz1F,EAAM,IAC3DwzT,EAAWxzT,EAAM,IAAM+/T,EAAc//T,EAAM,IAAMy1F,EAAIz1F,EAAM,IAE/D,GAAGpN,MACH+uU,EAAe/uU,KAAM6iG,EACvB,EAUAytO,mBAAoB,SAAUztO,GAC5B,IAAI93D,EAAS/qC,KAAK+qC,OAClB2sE,EAAK,CAAC,QAAS,aAAc,MAAO,aAAa,SAAUjzG,GACzDsmC,EAAOtmC,GAAQo+F,EAAIp+F,EACrB,GACF,EAMA8rU,gBAAiB,WACf,IAAIhG,EAAYvqU,KAAKwwU,8BAErB,GAAIjG,EACF,OAAOA,EAAUqB,sBAErB,EAUA6E,cAAe,SAAUC,EAAa30R,GACpC,GAAmB,MAAf20R,GAAoC,MAAb30R,EAOzB,OAAO/7C,KAAKowU,aAAaM,EAAa30R,GAAW4vR,qBANjD,IAAIpB,EAAYvqU,KAAKwwU,8BAErB,OAAIjG,EACKA,EAAUoB,0BADnB,CAMJ,EAQA6E,4BAA6B,SAAUrvD,GACrC,GAAIA,EACF,OAAOA,EAAUkuD,cAInB,IAAIH,EAAclvU,KAAKuuU,aAEvB,IAAK,IAAI1qU,KAAOqrU,EACd,GAAIA,EAAY5oU,eAAezC,IAAQqrU,EAAYrrU,GAAK6nU,SAAS1rU,MAC/D,OAAOkvU,EAAYrrU,GASvB,IAAK,IAAIA,KAAOqrU,EACd,GAAIA,EAAY5oU,eAAezC,KAASqrU,EAAYrrU,GAAK6nU,SAAS1rU,MAChE,OAAOkvU,EAAYrrU,EAGzB,EAKA2oU,iBAAkB,WAChB,OAAOxsU,KAAKyuU,eAAetsU,OAC7B,IAQF,SAASwsU,EAAkB5jS,GACzB,IAAI+pC,EAAM,CAAC,EAIX,OAHA4iC,EAAK,CAAC,QAAS,MAAO,aAAc,WAAY,aAAa,SAAUjzG,GACrEsmC,EAAOzkC,eAAe7B,KAAUqwE,EAAIrwE,GAAQsmC,EAAOtmC,GACrD,IACOqwE,CACT,CAEA,SAASi6P,EAAejF,EAAe4E,GACrC,IAAInC,EAAgBzC,EAAc2E,eAC9BkC,EAAoB7G,EAAc5mU,IAAI,aAC1Cw0G,EAAK,CAAC,CAAC,QAAS,cAAe,CAAC,MAAO,cAAc,SAAUtqG,EAAOnL,GACpE,IAAI2uU,EAA+C,MAA5BlC,EAAethU,EAAM,IACxCyjU,EAA6C,MAA5BnC,EAAethU,EAAM,IAEtCwjU,IAAqBC,EACvBtE,EAActqU,GAAS,WACb2uU,GAAoBC,EAC9BtE,EAActqU,GAAS,QACd0uU,EACTpE,EAActqU,GAAS0uU,EAAkB1uU,GAChC2uU,IAETrE,EAActqU,GAAS,UAG3B,GACF,CAEA,IAAIwrB,EAAWqgT,EACf3sU,EAAOD,QAAUusB,C,iCCnmBjB,IAAIqjT,EAAgBtoT,EAAQ,OAoBxBiF,EAAWqjT,EAAcptN,OAAO,CAClCl/G,KAAM,WACNrF,OAAQ,SAAU2qU,EAAep3F,EAAS/nI,EAAK6oI,GAC7CxzO,KAAK8pU,cAAgBA,EACrB9pU,KAAK0yO,QAAUA,EACf1yO,KAAK2qG,IAAMA,CACb,EAoBAomO,mBAAoB,WAClB,IAAIjH,EAAgB9pU,KAAK8pU,cACrBp3F,EAAU1yO,KAAK0yO,QACfs+F,EAAgB,CAAC,EAUrB,SAASl2S,EAAKm2S,EAAY9vD,EAAWpzQ,EAAOmjU,GAG1C,IAFA,IAAI1rT,EAEKxhB,EAAI,EAAGA,EAAI+J,EAAM/L,OAAQgC,IAChC,GAAI+J,EAAM/J,GAAGutP,QAAU0/E,EAAY,CACjCzrT,EAAOzX,EAAM/J,GACb,KACF,CAGGwhB,GACHzX,EAAM9J,KAAKuhB,EAAO,CAChB+rO,MAAO0/E,EACP/qD,WAAY,GACZgrD,WAAYA,IAIhB1rT,EAAK0gQ,WAAWjiR,KAAKk9Q,EACvB,CAEA,OA9BA2oD,EAAcqF,gBAAe,SAAUC,EAAUrzR,GAC/C,IAAIolO,EAAYzuC,EAAQizC,aAAaypD,EAAShkS,KAAM2Q,GAEpD,GAAIolO,EAAW,CACb,IAAI8vD,EAAa9vD,EAAUy7C,mBAC3BqU,GAAcn2S,EAAKm2S,EAAY9vD,EAAW6vD,EAAcC,EAAWv9F,YAAcs9F,EAAcC,EAAWv9F,UAAY,IAAKu9F,EAAWv8B,eACxI,CACF,GAAG10S,MAuBIgxU,CACT,IAGF7vU,EAAOD,QAAUusB,C,wBCpFjB,IAAIqgT,EAAgBtlT,EAAQ,OAoBxBiF,EAAWqgT,EAAcpqN,OAAO,CAClCl/G,KAAM,kBAKNgyO,cAAe,CACbl7I,UAAU,EAEV61O,UAAU,EAEVC,kBAAkB,EAElBC,iBAAiB,EAEjBC,kBAAkB,EAElBC,yBAAyB,KAI7BpwU,EAAOD,QAAUusB,C,wBCzCjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBgpT,EAAehpT,EAAQ,OAEvBmhT,EAAanhT,EAAQ,OAErBipT,EAAQjpT,EAAQ,OAoBhBzL,EAAOu1N,EAAOv1N,KACd20T,EAAiBF,EAAa9tN,OAAO,CACvCl/G,KAAM,kBAKNkzD,KAAM,SAAUg7K,EAAS/nI,GAOvB3qG,KAAK2xU,MACP,EAKAxyU,OAAQ,SAAU2qU,EAAep3F,EAAS/nI,EAAK6oI,GAC7Ck+F,EAAenwF,WAAWvhP,KAAM,SAAU+C,WAI1C/C,KAAK2xU,OAAS7H,EAAcyG,kBAE5Bj+F,EAAO56H,KAAK13G,KAAK+wU,sBAAsB,SAAUpQ,EAAe5/C,GAC9D,IAAI6wD,EAAct/F,EAAO5oN,IAAIi3S,GAAe,SAAUkR,GACpD,OAAOJ,EAAMK,gBAAgBD,EAAUtgF,MACzC,IACAjf,EAAO56H,KAAKipN,GAAe,SAAUkR,GACnC,IAAIZ,EAAaY,EAAUtgF,MACvBwgF,EAAW,CAAC,EAChBz/F,EAAO56H,KAAK,CAAC,MAAO,OAAQ,eAAe,SAAUk9D,GACnDm9J,EAASn9J,GAAa73J,EAAKi1T,EAAap9J,GAAY50K,KAAM6xU,EAAW9wD,EACvE,GAAG/gR,MACHyxU,EAAMr4P,SAASuxB,EAAK,CAClBsnO,QAASR,EAAMK,gBAAgBb,GAC/BW,YAAaA,EACbM,cAAe,SAAUjsU,EAAG6Z,EAAG6e,GAC7B,OAAOsyS,EAAW58F,iBAAiB4nD,aAAa,CAACn8Q,EAAG6e,GACtD,EACAwzS,WAAYrI,EAActgU,GAC1BsgU,cAAeA,EACfiI,SAAUA,GAEd,GAAG/xU,KACL,GAAGA,KACL,EAKAw7O,QAAS,WACPi2F,EAAM7sB,WAAW5kT,KAAK2qG,IAAK3qG,KAAK8pU,cAActgU,IAC9CkoU,EAAenwF,WAAWvhP,KAAM,UAAW+C,WAC3C/C,KAAK2xU,OAAS,IAChB,IAEEK,EAAe,CAIjB50P,KAAM,SAAUy0P,EAAW9wD,EAAclY,EAAY5iQ,GACnD,IAAImsU,EAAYpyU,KAAK2xU,OACjB/6P,EAAQw7P,EAAUjwU,QAElBg/Q,EAAY0wD,EAAU3rD,WAAW,GAErC,GAAK/E,EAAL,CAIA,IAAIkxD,EAAgBC,EAAiBvxD,GAAc,KAAM,CAAC96Q,EAAEkvO,QAASlvO,EAAEovO,SAAU8rC,EAAWtY,EAAYgpE,GACpGU,GAAgBF,EAAcG,OAAS,EAAIH,EAAcI,WAAaJ,EAAcK,YAAcL,EAAcnnP,MAAQmnP,EAAcnnP,MAAQmnP,EAAcI,YAAcJ,EAAcK,aAAe97P,EAAM,GAAKA,EAAM,IAAMA,EAAM,GACpOvgD,EAAQlwB,KAAKwI,IAAI,EAAI1I,EAAEowB,MAAO,GAClCugD,EAAM,IAAMA,EAAM,GAAK27P,GAAgBl8S,EAAQk8S,EAC/C37P,EAAM,IAAMA,EAAM,GAAK27P,GAAgBl8S,EAAQk8S,EAE/C,IAAIhH,EAAavrU,KAAK8pU,cAAc0G,8BAA8BpE,gBAIlE,OAHAzC,EAAW,EAAG/yP,EAAO,CAAC,EAAG,KAAM,EAAG20P,EAAWyC,QAASzC,EAAW0C,SACjEjuU,KAAK2xU,OAAS/6P,EAEVw7P,EAAU,KAAOx7P,EAAM,IAAMw7P,EAAU,KAAOx7P,EAAM,GAC/CA,OADT,CAZA,CAeF,EAKAkN,IAAK6uP,GAAU,SAAU/7P,EAAOuqM,EAAW0wD,EAAW9wD,EAAclY,EAAY5iQ,GAC9E,IAAIosU,EAAgBC,EAAiBvxD,GAAc,CAAC96Q,EAAE2sU,KAAM3sU,EAAE4sU,MAAO,CAAC5sU,EAAE6sU,KAAM7sU,EAAE8sU,MAAO5xD,EAAWtY,EAAYgpE,GAC9G,OAAOQ,EAAcG,QAAU57P,EAAM,GAAKA,EAAM,IAAMy7P,EAAcnnP,MAAQmnP,EAAcK,WAC5F,IAKAM,WAAYL,GAAU,SAAU/7P,EAAOuqM,EAAW0wD,EAAW9wD,EAAclY,EAAY5iQ,GACrF,IAAIosU,EAAgBC,EAAiBvxD,GAAc,CAAC,EAAG,GAAI,CAAC96Q,EAAEgtU,YAAahtU,EAAEgtU,aAAc9xD,EAAWtY,EAAYgpE,GAClH,OAAOQ,EAAcG,QAAU57P,EAAM,GAAKA,EAAM,IAAM3wE,EAAEgtU,WAC1D,KAGF,SAASN,EAAUO,GACjB,OAAO,SAAUrB,EAAW9wD,EAAclY,EAAY5iQ,GACpD,IAAImsU,EAAYpyU,KAAK2xU,OACjB/6P,EAAQw7P,EAAUjwU,QAElBg/Q,EAAY0wD,EAAU3rD,WAAW,GAErC,GAAK/E,EAAL,CAIA,IAAIgyD,EAAeD,EAAgBt8P,EAAOuqM,EAAW0wD,EAAW9wD,EAAclY,EAAY5iQ,GAI1F,OAHA0jU,EAAWwJ,EAAcv8P,EAAO,CAAC,EAAG,KAAM,OAC1C52E,KAAK2xU,OAAS/6P,EAEVw7P,EAAU,KAAOx7P,EAAM,IAAMw7P,EAAU,KAAOx7P,EAAM,GAC/CA,OADT,CANA,CASF,CACF,CAEA,IAAI07P,EAAmB,CACrBnnS,KAAM,SAAUioS,EAAUC,EAAUlyD,EAAWtY,EAAYgpE,GACzD,IAAIzmS,EAAO+1O,EAAU/1O,KACjB0pC,EAAM,CAAC,EACP73C,EAAO40S,EAAUtgF,MAAMld,iBAAiBqL,UAgB5C,OAfA0zF,EAAWA,GAAY,CAAC,EAAG,GAEV,MAAbhoS,EAAK6mG,KACPn9D,EAAIoW,MAAQmoP,EAAS,GAAKD,EAAS,GACnCt+P,EAAI49P,YAAcz1S,EAAKuL,MACvBssC,EAAI29P,WAAax1S,EAAKnd,EACtBg1D,EAAI09P,OAASpnS,EAAK6oR,QAAU,GAAK,IAGjCn/O,EAAIoW,MAAQmoP,EAAS,GAAKD,EAAS,GACnCt+P,EAAI49P,YAAcz1S,EAAKwL,OACvBqsC,EAAI29P,WAAax1S,EAAK0B,EACtBm2C,EAAI09P,OAASpnS,EAAK6oR,SAAW,EAAI,GAG5Bn/O,CACT,EACAmnK,MAAO,SAAUm3F,EAAUC,EAAUlyD,EAAWtY,EAAYgpE,GAC1D,IAAIzmS,EAAO+1O,EAAU/1O,KACjB0pC,EAAM,CAAC,EACPmnK,EAAQ41F,EAAUtgF,MAAMld,iBACxBu2E,EAAe3uE,EAAM4uE,gBAAgB3/D,YACrC8V,EAAc/kB,EAAM0uE,eAAez/D,YAqBvC,OApBAkoF,EAAWA,EAAWn3F,EAAMq3F,aAAaF,GAAY,CAAC,EAAG,GACzDC,EAAWp3F,EAAMq3F,aAAaD,GAEH,eAAvBlyD,EAAUztC,UACZ5+J,EAAIoW,MAAQmoP,EAAS,GAAKD,EAAS,GAGnCt+P,EAAI49P,YAAc9nB,EAAa,GAAKA,EAAa,GACjD91O,EAAI29P,WAAa7nB,EAAa,GAC9B91O,EAAI09P,OAASpnS,EAAK6oR,QAAU,GAAK,IAGjCn/O,EAAIoW,MAAQmoP,EAAS,GAAKD,EAAS,GAGnCt+P,EAAI49P,YAAc1xE,EAAY,GAAKA,EAAY,GAC/ClsL,EAAI29P,WAAazxE,EAAY,GAC7BlsL,EAAI09P,OAASpnS,EAAK6oR,SAAW,EAAI,GAG5Bn/O,CACT,EACAy9K,WAAY,SAAU6gF,EAAUC,EAAUlyD,EAAWtY,EAAYgpE,GAC/D,IAAIzmS,EAAO+1O,EAAU/1O,KACjBnO,EAAO40S,EAAUtgF,MAAMld,iBAAiBqL,UACxC5qK,EAAM,CAAC,EAgBX,OAfAs+P,EAAWA,GAAY,CAAC,EAAG,GAEP,eAAhBhoS,EAAKwG,QACPkjC,EAAIoW,MAAQmoP,EAAS,GAAKD,EAAS,GACnCt+P,EAAI49P,YAAcz1S,EAAKuL,MACvBssC,EAAI29P,WAAax1S,EAAKnd,EACtBg1D,EAAI09P,OAASpnS,EAAK6oR,QAAU,GAAK,IAGjCn/O,EAAIoW,MAAQmoP,EAAS,GAAKD,EAAS,GACnCt+P,EAAI49P,YAAcz1S,EAAKwL,OACvBqsC,EAAI29P,WAAax1S,EAAK0B,EACtBm2C,EAAI09P,OAASpnS,EAAK6oR,SAAW,EAAI,GAG5Bn/O,CACT,GAEErnD,EAAWikT,EACfvwU,EAAOD,QAAUusB,C,wBClOjB,IAAIqgT,EAAgBtlT,EAAQ,OAoBxBiF,EAAWqgT,EAAcpqN,OAAO,CAClCl/G,KAAM,oBAGRrD,EAAOD,QAAUusB,C,wBCxBjB,IAAI+jT,EAAehpT,EAAQ,OAoBvBiF,EAAW+jT,EAAa9tN,OAAO,CACjCl/G,KAAM,oBAGRrD,EAAOD,QAAUusB,C,wBCxBjB,IAAIqgT,EAAgBtlT,EAAQ,OAoBxB+qT,EAAkBzF,EAAcpqN,OAAO,CACzCl/G,KAAM,kBACNwvR,WAAY,MAKZx9C,cAAe,CACb9oM,MAAM,EAGN4C,MAAO,KAEPC,IAAK,KAEL/H,MAAO,KAEPC,OAAQ,KAER4H,KAAM,KAENG,OAAQ,KAERopB,gBAAiB,mBAKjB45Q,eAAgB,CACdlhS,UAAW,CACT1hB,MAAO,UACP4X,MAAO,GACPlP,QAAS,IAEXumS,UAAW,CACTjvS,MAAO,qBACP0I,QAAS,KAGbuqM,YAAa,OAIb4vG,YAAa,wBAMbC,WAAY,0HAIZ5rB,WAAY,OACZ6rB,YAAa,CACX/iT,MAAO,WAETgjT,eAAgB,KAChB30E,eAAgB,KAChB40E,YAAY,EACZC,eAAgB,OAEhBjV,UAAU,EACVsS,UAAU,EAEVl/R,UAAW,CACTrhB,MAAO,WAITnD,EAAW8lT,EACfpyU,EAAOD,QAAUusB,C,iCC3FjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBs8R,EAAYt8R,EAAQ,OAEpBsuN,EAAUtuN,EAAQ,OAElBwvE,EAAWxvE,EAAQ,OAEnBgpT,EAAehpT,EAAQ,OAEvBmlR,EAAanlR,EAAQ,OAErB2/E,EAAS3/E,EAAQ,MAEjBmhT,EAAanhT,EAAQ,OAoBrB6zN,EAAOvF,EAAQuF,KACfghB,EAAYswC,EAAWtwC,UACvBusE,EAAMj8B,EAAWi8B,IACjB7sT,EAAOu1N,EAAOv1N,KACd26F,EAAO46H,EAAO56H,KAEdq8N,EAA4B,EAC5BC,EAA6B,EAC7BC,EAAsB,GACtB/qI,EAAa,aACbD,EAAW,WACXirI,EAAY,EACZC,EAA+B,CAAC,OAAQ,MAAO,cAAe,WAC9DC,EAAiB5C,EAAa9tN,OAAO,CACvCl/G,KAAM,kBACNkzD,KAAM,SAAUg7K,EAAS/nI,GAKvB3qG,KAAKq0U,cAAgB,CAAC,EAMtBr0U,KAAKs0U,QAMLt0U,KAAK2xU,OAML3xU,KAAKu0U,YAOLv0U,KAAKw0U,MAMLx0U,KAAKy0U,aAMLz0U,KAAK00U,cAKL10U,KAAK20U,UAKL30U,KAAK+lT,UAKL/lT,KAAK40U,gBACL50U,KAAK2qG,IAAMA,CACb,EAKAxrG,OAAQ,SAAU2qU,EAAep3F,EAAS/nI,EAAK6oI,GAC7C4gG,EAAe7yF,WAAWvhP,KAAM,SAAU+C,WAC1Ci1F,EAASi/J,eAAej3P,KAAM,sBAAuBA,KAAK8pU,cAAc5mU,IAAI,YAAa,WACzFlD,KAAKs0U,QAAUxK,EAAc5mU,IAAI,WAEM,IAAnClD,KAAK8pU,cAAc5mU,IAAI,SAQtBswO,GAA4B,aAAjBA,EAAQhvO,MAAuBgvO,EAAQp1K,OAASp+D,KAAK6N,KACnE7N,KAAK60U,aAGP70U,KAAK80U,eAXH90U,KAAKk7C,MAAMigM,WAYf,EAKAv+J,OAAQ,WACNw3P,EAAe7yF,WAAWvhP,KAAM,SAAU+C,WAC1Ci1F,EAASt1E,MAAM1iB,KAAM,sBACvB,EAKAw7O,QAAS,WACP44F,EAAe7yF,WAAWvhP,KAAM,UAAW+C,WAC3Ci1F,EAASt1E,MAAM1iB,KAAM,sBACvB,EACA60U,WAAY,WACV,IAAIhgC,EAAY70S,KAAKk7C,MACrB25P,EAAU15D,YAEVn7O,KAAK+0U,iBAEL/0U,KAAKg1U,iBAEL,IAAIC,EAAWj1U,KAAKq0U,cAAcY,SAAW,IAAIn+F,EAAQM,MAEzDp3O,KAAKk1U,oBAELl1U,KAAK+mT,gBAEL/mT,KAAKm1U,oBAELtgC,EAAUt0S,IAAI00U,GAEdj1U,KAAKo1U,gBACP,EAKAL,eAAgB,WACd,IAAIjL,EAAgB9pU,KAAK8pU,cACrBn/N,EAAM3qG,KAAK2qG,IAGX0qO,EAAYr1U,KAAKs1U,iBAEjBlzF,EAAS,CACX55M,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,aAGVizF,EAAev1U,KAAKs0U,UAAYprI,EAAa,CAG/C54J,MAAO8xM,EAAO55M,MAAQ6sS,EAAUv1T,EAAIu1T,EAAU7sS,MAC9C+H,IAAK6xM,EAAO35M,OAASwrS,EAAsBF,EAC3CvrS,MAAO6sS,EAAU7sS,MACjBC,OAAQwrS,GACN,CAEF3jS,MAAOyjS,EACPxjS,IAAK8kS,EAAU12S,EACf6J,MAAOyrS,EACPxrS,OAAQ4sS,EAAU5sS,QAIhB+sS,EAAertO,EAAOstO,gBAAgB3L,EAAc/+R,QAExDunM,EAAO56H,KAAK,CAAC,QAAS,MAAO,QAAS,WAAW,SAAUjzG,GAC9B,OAAvB+wU,EAAa/wU,KACf+wU,EAAa/wU,GAAQ8wU,EAAa9wU,GAEtC,IACA,IAAIixU,EAAavtO,EAAOo1J,cAAci4E,EAAcpzF,EAAQ0nF,EAAcv+O,SAC1EvrF,KAAK20U,UAAY,CACf70T,EAAG41T,EAAW51T,EACd6e,EAAG+2S,EAAW/2S,GAEhB3+B,KAAKw0U,MAAQ,CAACkB,EAAWltS,MAAOktS,EAAWjtS,QAC3CzoC,KAAKs0U,UAAYrrI,GAAYjpM,KAAKw0U,MAAMx5S,SAC1C,EAKAo6S,eAAgB,WACd,IAAIvgC,EAAY70S,KAAKk7C,MACjBj4B,EAAWjjB,KAAK20U,UAChB/iS,EAAS5xC,KAAKs0U,QAEdqB,EAAkB31U,KAAK8pU,cAAcoG,0BACrCjc,EAAU0hB,GAAmBA,EAAgBzyU,IAAI,WACjD+xU,EAAWj1U,KAAKq0U,cAAcY,SAC9BW,GAAoB51U,KAAK40U,iBAAmB,CAAC,GAAGgB,iBAEpDX,EAASp+S,KAAK+a,IAAWs3J,GAAe+qH,EAEpCriR,IAAWs3J,GAAc+qH,EAAU,CACrC59R,MAAOu/S,EAAmB,EAAE,EAAG,GAAK,EAAE,GAAI,IACxChkS,IAAWq3J,GAAagrH,EAIxB,CACF59R,MAAOu/S,EAAmB,EAAE,GAAI,GAAK,EAAE,EAAG,GAC1C3hL,SAAU9tJ,KAAK40B,GAAK,GANgB,CACpC1E,MAAOu/S,EAAmB,CAAC,GAAI,GAAK,CAAC,EAAG,GACxC3hL,SAAU9tJ,KAAK40B,GAAK,GAN4B,CAChD1E,MAAOu/S,EAAmB,CAAC,EAAG,GAAK,CAAC,GAAI,KAY1C,IAAI34S,EAAO43Q,EAAU7rC,gBAAgB,CAACisE,IACtCpgC,EAAUh+Q,KAAK,WAAY,CAAC5T,EAASnD,EAAImd,EAAKnd,EAAGmD,EAAS0b,EAAI1B,EAAK0B,GACrE,EAKAk3S,eAAgB,WACd,MAAO,CAAC,EAAG71U,KAAKw0U,MAAM,GACxB,EACAU,kBAAmB,WACjB,IAAIpL,EAAgB9pU,KAAK8pU,cACrBxgP,EAAOtpF,KAAKw0U,MACZS,EAAWj1U,KAAKq0U,cAAcY,SAClCA,EAAS10U,IAAI,IAAI87O,EAAK,CACpBltF,QAAQ,EACR35H,MAAO,CACL1V,EAAG,EACH6e,EAAG,EACH6J,MAAO8gD,EAAK,GACZ7gD,OAAQ6gD,EAAK,IAEf19E,MAAO,CACLme,KAAM+/S,EAAc5mU,IAAI,oBAE1Bo5O,IAAK,MAGP24F,EAAS10U,IAAI,IAAI87O,EAAK,CACpB7mN,MAAO,CACL1V,EAAG,EACH6e,EAAG,EACH6J,MAAO8gD,EAAK,GACZ7gD,OAAQ6gD,EAAK,IAEf19E,MAAO,CACLme,KAAM,eAERuyN,GAAI,EACJs5D,QAAStjE,EAAOv1N,KAAK/c,KAAK81U,mBAAoB91U,QAElD,EACAm1U,kBAAmB,WACjB,IAAI56M,EAAOv6H,KAAK40U,gBAAkB50U,KAAK+1U,yBAEvC,GAAKx7M,EAAL,CAIA,IAAIjxC,EAAOtpF,KAAKw0U,MACZ5gG,EAAcr5G,EAAKvuF,OACnB/sB,EAAO20N,EAAYqnB,aACnB00C,EAAW/7D,EAAY2Z,aAAe3Z,EAAY2Z,eACpDhzH,EAAKo1K,SAEP,GAAgB,MAAZA,EAAJ,CAIA,IAAIqmC,EAAkB/2T,EAAKm/O,cAAcuxC,GAErCsmC,EAA0D,IAA3CD,EAAgB,GAAKA,EAAgB,IACxDA,EAAkB,CAACA,EAAgB,GAAKC,EAAaD,EAAgB,GAAKC,GAC1E,IAQIC,EARAC,EAAoB,CAAC,EAAG7sP,EAAK,IAC7B8sP,EAAmB,CAAC,EAAG9sP,EAAK,IAC5B+sP,EAAa,CAAC,CAAC/sP,EAAK,GAAI,GAAI,CAAC,EAAG,IAChCozK,EAAa,GACbjtP,EAAO2mU,EAAiB,IAAMn3T,EAAKsJ,QAAU,GAC7C+tT,EAAY,EAEZC,EAASpwU,KAAKugF,MAAMznE,EAAKsJ,QAAU+gE,EAAK,IAE5CrqE,EAAKy4F,KAAK,CAACi4L,IAAW,SAAU7tS,EAAOG,GACrC,GAAIs0U,EAAS,GAAKt0U,EAAQs0U,EACxBD,GAAa7mU,MADf,CASA,IAAIi3F,EAAmB,MAAT5kG,GAAiBiN,MAAMjN,IAAoB,KAAVA,EAE3C00U,EAAa9vO,EAAU,EAAI22J,EAAUv7P,EAAOk0U,EAAiBG,GAAmB,GAEhFzvO,IAAYwvO,GAAej0U,GAC7Bo0U,EAAWpyU,KAAK,CAACoyU,EAAWA,EAAWr0U,OAAS,GAAG,GAAI,IACvD06P,EAAWz4P,KAAK,CAACy4P,EAAWA,EAAW16P,OAAS,GAAG,GAAI,MAC7C0kG,GAAWwvO,IACrBG,EAAWpyU,KAAK,CAACqyU,EAAW,IAC5B55E,EAAWz4P,KAAK,CAACqyU,EAAW,KAG9BD,EAAWpyU,KAAK,CAACqyU,EAAWE,IAC5B95E,EAAWz4P,KAAK,CAACqyU,EAAWE,IAC5BF,GAAa7mU,EACbymU,EAAcxvO,CArBd,CAsBF,IACA,IAAIojO,EAAgB9pU,KAAK8pU,cAEzB9pU,KAAKq0U,cAAcY,SAAS10U,IAAI,IAAIu2O,EAAQ+kB,QAAQ,CAClDrmO,MAAO,CACL9J,OAAQ2qT,GAEVzqU,MAAO0mO,EAAO94I,SAAS,CACrBzvE,KAAM+/S,EAAc5mU,IAAI,wBACvB4mU,EAActwF,SAAS,4BAA4BoyC,gBACtDz8H,QAAQ,EACRmtF,IAAK,MAGPt8O,KAAKq0U,cAAcY,SAAS10U,IAAI,IAAIu2O,EAAQglB,SAAS,CACnDtmO,MAAO,CACL9J,OAAQgxO,GAEV9wP,MAAOk+T,EAActwF,SAAS,4BAA4BjgM,eAC1D41G,QAAQ,EACRmtF,IAAK,KA7DP,CAVA,CAyEF,EACAy5F,uBAAwB,WACtB,IAAIjM,EAAgB9pU,KAAK8pU,cACrBgK,EAAiBhK,EAAc5mU,IAAI,kBAEvC,IAAuB,IAAnB4wU,EAAJ,CAKA,IAAIpwU,EACAgvO,EAAU1yO,KAAK0yO,QA+BnB,OA9BAo3F,EAAcqF,gBAAe,SAAUC,EAAUrzR,GAC/C,IAAIuuM,EAAew/E,EAAcsG,aAAahB,EAAS3qU,KAAMs3C,GAAW8vR,wBACxEv5F,EAAO56H,KAAK4yI,GAAc,SAAU1W,GAClC,IAAIlwO,MAImB,IAAnBowU,GAA2BxhG,EAAOj7N,QAAQ88T,EAA8BvgG,EAAY1wO,IAAI,SAAW,GAAvG,CAIA,IAEI0yU,EAFAa,EAAW/jG,EAAQizC,aAAaypD,EAAShkS,KAAM2Q,GAAW3Q,KAC1DukQ,EAAW+mC,EAAYtH,EAAS3qU,MAEhCouO,EAAWe,EAAYS,iBAEX,MAAZs7D,GAAoB98D,EAASiR,eAC/B8xF,EAAmB/iG,EAASiR,aAAa2yF,GAAUxiB,SAGrDtkB,EAAW/7D,EAAY7oI,UAAU2gJ,aAAaikD,GAC9CjsS,EAAS,CACP+yU,SAAUA,EACVzqS,OAAQ4nM,EACR+iG,QAASvH,EAAS3qU,KAClBkrS,SAAUA,EACVimC,iBAAkBA,EAjBpB,CAmBF,GAAG51U,KACL,GAAGA,MACI0D,CAnCP,CAoCF,EACAqjT,cAAe,WACb,IAAI6vB,EAAc52U,KAAKq0U,cACnBwC,EAAUD,EAAYC,QAAU,GAChCC,EAAeF,EAAYE,aAAe,GAC1C7B,EAAWj1U,KAAKq0U,cAAcY,SAC9B3rP,EAAOtpF,KAAKw0U,MACZ1K,EAAgB9pU,KAAK8pU,cACzBmL,EAAS10U,IAAIq2U,EAAYG,OAAS,IAAI16F,EAAK,CACzC4oB,WAAW,EACXvyO,OAAQskT,EAAUh3U,KAAKs0U,SACvBv3D,MAAOhgQ,EAAK/c,KAAKi3U,YAAaj3U,KAAM,OACpCk3U,YAAan6T,EAAK/c,KAAKm3U,cAAen3U,MAAM,GAC5CoiS,UAAWrlR,EAAK/c,KAAKo3U,WAAYp3U,MACjCq3U,YAAat6T,EAAK/c,KAAKm3U,cAAen3U,MAAM,GAC5Cs3U,WAAYv6T,EAAK/c,KAAKm3U,cAAen3U,MAAM,GAC3C4L,MAAO,CACLme,KAAM+/S,EAAc5mU,IAAI,eACxBsjD,aAAc,aAIlByuR,EAAS10U,IAAI,IAAI87O,EAAK,CACpBltF,QAAQ,EACRy/F,kBAAkB,EAClBp5N,MAAO,CACL1V,EAAG,EACH6e,EAAG,EACH6J,MAAO8gD,EAAK,GACZ7gD,OAAQ6gD,EAAK,IAEf19E,MAAO,CACLytB,OAAQywS,EAAc5mU,IAAI,wBAA0B4mU,EAAc5mU,IAAI,eACtE62B,UAAWi6S,EACXjqT,KAAM,oBAGV2tF,EAAK,CAAC,EAAG,IAAI,SAAU6/N,GACrB,IAAIr6Q,EAAO45K,EAAQ0wE,WAAWsiB,EAAc5mU,IAAI,cAAe,CAC7DwvB,OAAQskT,EAAUh3U,KAAKs0U,SACvBrvE,WAAW,EACX8X,MAAOhgQ,EAAK/c,KAAKi3U,YAAaj3U,KAAMu3U,GACpCn1C,UAAWrlR,EAAK/c,KAAKo3U,WAAYp3U,MACjCq3U,YAAat6T,EAAK/c,KAAKm3U,cAAen3U,MAAM,GAC5Cs3U,WAAYv6T,EAAK/c,KAAKm3U,cAAen3U,MAAM,IAC1C,CACD8f,GAAI,EACJ6e,EAAG,EACH6J,MAAO,EACPC,OAAQ,IAEN+uS,EAAQt6Q,EAAK8rM,kBACjBhpQ,KAAK00U,cAAgB/mC,EAAWjsD,aAAaooF,EAAc5mU,IAAI,cAAelD,KAAKw0U,MAAM,IACzFx0U,KAAKy0U,aAAe+C,EAAMhvS,MAAQgvS,EAAM/uS,OAASzoC,KAAK00U,cACtDx3Q,EAAK2uH,SAASi+I,EAActwF,SAAS,eAAegG,gBACpD,IAAIi4F,EAAc3N,EAAc5mU,IAAI,eAEjB,MAAfu0U,IACFv6Q,EAAKtxD,MAAMme,KAAO0tT,GAGpBxC,EAAS10U,IAAIs2U,EAAQU,GAAer6Q,GACpC,IAAI63O,EAAiB+0B,EAAc/0B,eACnC/0S,KAAKk7C,MAAM36C,IAAIu2U,EAAaS,GAAe,IAAIzgG,EAAQoc,KAAK,CAC1D/jG,QAAQ,EACR4kG,WAAW,EACXnoP,MAAO,CACLkU,EAAG,EACH6e,EAAG,EACHhC,KAAM,GACNogO,kBAAmB,SACnB1iO,UAAW,SACXmoM,SAAUuyE,EAAe/5B,eACzB26B,SAAUZ,EAAex+C,WAE3Bja,GAAI,KAER,GAAGt8O,KACL,EAKAg1U,eAAgB,WACd,IAAIp+P,EAAQ52E,KAAK2xU,OAAS3xU,KAAK8pU,cAAcyG,kBAEzCmH,EAAa13U,KAAK61U,iBAEtB71U,KAAKu0U,YAAc,CAACl3E,EAAUzmL,EAAM,GAAI,CAAC,EAAG,KAAM8gQ,GAAY,GAAOr6E,EAAUzmL,EAAM,GAAI,CAAC,EAAG,KAAM8gQ,GAAY,GACjH,EAQAC,gBAAiB,SAAUJ,EAAa9wP,GACtC,IAAIqjP,EAAgB9pU,KAAK8pU,cACrB8N,EAAa53U,KAAKu0U,YAElBsD,EAAa73U,KAAK61U,iBAElBtK,EAAazB,EAAc0G,8BAA8BpE,gBACzDK,EAAgB,CAAC,EAAG,KACxB9C,EAAWljP,EAAOmxP,EAAYC,EAAY/N,EAAc5mU,IAAI,YAAc,MAAQq0U,EAAmC,MAAtBhM,EAAWyC,QAAkB3wE,EAAUkuE,EAAWyC,QAASvB,EAAeoL,GAAY,GAAQ,KAA4B,MAAtBtM,EAAW0C,QAAkB5wE,EAAUkuE,EAAW0C,QAASxB,EAAeoL,GAAY,GAAQ,MACjS,IAAIzF,EAAYpyU,KAAK2xU,OACjB/6P,EAAQ52E,KAAK2xU,OAAS/H,EAAI,CAACvsE,EAAUu6E,EAAW,GAAIC,EAAYpL,GAAe,GAAOpvE,EAAUu6E,EAAW,GAAIC,EAAYpL,GAAe,KAC9I,OAAQ2F,GAAaA,EAAU,KAAOx7P,EAAM,IAAMw7P,EAAU,KAAOx7P,EAAM,EAC3E,EAKAk+P,YAAa,SAAUgD,GACrB,IAAIlB,EAAc52U,KAAKq0U,cACnBuD,EAAa53U,KAAKu0U,YAClBwD,EAAiBnO,EAAIgO,EAAWz1U,SAChCmnF,EAAOtpF,KAAKw0U,MAChB98N,EAAK,CAAC,EAAG,IAAI,SAAU6/N,GAErB,IAAIlzB,EAASuyB,EAAYC,QAAQU,GAC7BS,EAAeh4U,KAAK00U,cACxBrwB,EAAOxtR,KAAK,CACVR,MAAO,CAAC2hT,EAAe,EAAGA,EAAe,GACzClmT,SAAU,CAAC8lT,EAAWL,GAAcjuP,EAAK,GAAK,EAAI0uP,EAAe,IAErE,GAAGh4U,MAEH42U,EAAYG,OAAO58F,SAAS,CAC1Br6N,EAAGi4T,EAAe,GAClBp5S,EAAG,EACH6J,MAAOuvS,EAAe,GAAKA,EAAe,GAC1CtvS,OAAQ6gD,EAAK,KAGftpF,KAAKi4U,gBAAgBH,EACvB,EAKAG,gBAAiB,SAAUH,GACzB,IAAIhO,EAAgB9pU,KAAK8pU,cACrB8M,EAAc52U,KAAKq0U,cACnByC,EAAeF,EAAYE,aAC3BllS,EAAS5xC,KAAKs0U,QACd4D,EAAa,CAAC,GAAI,IAGtB,GAAIpO,EAAc5mU,IAAI,cAAe,CACnC,IAAIqnU,EAAYT,EAAc0G,8BAE9B,GAAIjG,EAAW,CACb,IAAIn/R,EAAOm/R,EAAUI,eAAev/R,KAChCwrC,EAAQ52E,KAAK2xU,OACbwG,EAAeL,EACjBvN,EAAU8B,oBAAoB,CAC9B3tR,MAAOk4B,EAAM,GACbj4B,IAAKi4B,EAAM,KACVs0P,YAAcX,EAAUoB,qBAC3BuM,EAAa,CAACl4U,KAAKo4U,aAAaD,EAAa,GAAI/sS,GAAOprC,KAAKo4U,aAAaD,EAAa,GAAI/sS,GAC7F,CACF,CAEA,IAAIitS,EAAoBzO,EAAI5pU,KAAKu0U,YAAYpyU,SAI7C,SAAS60O,EAASugG,GAIhB,IAAIe,EAAexhG,EAAQh5J,aAAa84P,EAAYC,QAAQU,GAAap3U,OAAQH,KAAKk7C,OAClFi5C,EAAY2iJ,EAAQyhG,mBAAmC,IAAhBhB,EAAoB,QAAU,OAAQe,GAC7EnrT,EAASntB,KAAKy0U,aAAe,EAAIP,EACjCsE,EAAY1hG,EAAQmyB,eAAe,CAACovE,EAAkBd,IAAgC,IAAhBA,GAAqBpqT,EAASA,GAASntB,KAAKw0U,MAAM,GAAK,GAAI8D,GACrIxB,EAAaS,GAAa1rJ,SAAS,CACjC/rK,EAAG04T,EAAU,GACb75S,EAAG65S,EAAU,GACbz7E,kBAAmBnrN,IAAWs3J,EAAa,SAAW/0G,EACtD95D,UAAWuX,IAAWs3J,EAAa/0G,EAAY,SAC/Cx3D,KAAMu7S,EAAWX,IAErB,CAlBAvgG,EAAS32O,KAAKL,KAAM,GACpBg3O,EAAS32O,KAAKL,KAAM,EAkBtB,EAKAo4U,aAAc,SAAUt2U,EAAOspC,GAC7B,IAAI0+R,EAAgB9pU,KAAK8pU,cACrB7qE,EAAiB6qE,EAAc5mU,IAAI,kBACnC0wU,EAAiB9J,EAAc5mU,IAAI,kBAEjB,MAAlB0wU,GAA6C,SAAnBA,IAC5BA,EAAiBxoS,EAAK+/R,qBAGxB,IAAIsN,EAAoB,MAAT32U,GAAiBiN,MAAMjN,GAAS,GAC/B,aAAdspC,EAAK5mC,MAAqC,SAAd4mC,EAAK5mC,KAAkB4mC,EAAK/U,MAAM+8R,SAASjtT,KAAKugF,MAAM5kF,IAClFA,EAAMi0C,QAAQ5vC,KAAKyI,IAAIglU,EAAgB,KACzC,OAAOthG,EAAOqhF,WAAW10D,GAAkBA,EAAen9P,EAAO22U,GAAYnmG,EAAOohF,SAASz0D,GAAkBA,EAAerjP,QAAQ,UAAW68T,GAAYA,CAC/J,EAMAtB,cAAe,SAAUuB,GAEvBA,EAAa14U,KAAK+lT,WAAa2yB,EAC/B,IAAI5B,EAAe92U,KAAKq0U,cAAcyC,aACtCA,EAAa,GAAGjgT,KAAK,aAAc6hT,GACnC5B,EAAa,GAAGjgT,KAAK,aAAc6hT,EACrC,EACAzB,YAAa,SAAUM,EAAa5xQ,EAAIC,EAAIviD,GAC1CrjB,KAAK+lT,WAAY,EAEjBjB,EAAUhtR,KAAKzU,EAAMA,OAErB,IAAIi1T,EAAet4U,KAAKq0U,cAAcY,SAASpa,oBAE3C8d,EAAS7hG,EAAQmyB,eAAe,CAACtjM,EAAIC,GAAK0yQ,GAAc,GAExD11L,EAAU5iJ,KAAK23U,gBAAgBJ,EAAaoB,EAAO,IAEnD9Z,EAAW7+T,KAAK8pU,cAAc5mU,IAAI,YAEtClD,KAAK80U,aAAajW,GAIlBj8K,GAAWi8K,GAAY7+T,KAAK44U,qBAC9B,EACAxB,WAAY,WACVp3U,KAAK+lT,WAAY,EAEjB/lT,KAAKm3U,eAAc,GAInB,IAAItY,EAAW7+T,KAAK8pU,cAAc5mU,IAAI,aACrC27T,GAAY7+T,KAAK44U,qBACpB,EACA9C,mBAAoB,SAAU7vU,GAC5B,IAAIqjF,EAAOtpF,KAAKw0U,MAEZqE,EAAa74U,KAAKq0U,cAAcY,SAASp5B,sBAAsB51S,EAAE2rB,QAAS3rB,EAAE4rB,SAEhF,KAAIgnT,EAAW,GAAK,GAAKA,EAAW,GAAKvvP,EAAK,IAAMuvP,EAAW,GAAK,GAAKA,EAAW,GAAKvvP,EAAK,IAA9F,CAIA,IAAIsuP,EAAa53U,KAAKu0U,YAClB9kS,GAAUmoS,EAAW,GAAKA,EAAW,IAAM,EAE3Ch1L,EAAU5iJ,KAAK23U,gBAAgB,MAAOkB,EAAW,GAAKppS,GAE1DzvC,KAAK80U,cAELlyL,GAAW5iJ,KAAK44U,qBAThB,CAUF,EAMAA,oBAAqB,WACnB,IAAIhiQ,EAAQ52E,KAAK2xU,OACjB3xU,KAAK2qG,IAAIi9J,eAAe,CACtBpjQ,KAAM,WACN45D,KAAMp+D,KAAK6N,IACXskU,WAAYnyU,KAAK8pU,cAActgU,GAC/Bk1C,MAAOk4B,EAAM,GACbj4B,IAAKi4B,EAAM,IAEf,EAKA0+P,eAAgB,WAEd,IAAIr4S,EAQJ,GAPAy6E,EAAK13G,KAAK+wU,sBAAsB,SAAUpQ,GACxC,IAAK1jS,GAAQ0jS,EAAc3+T,OAAQ,CACjC,IAAI6wO,EAAW8tF,EAAc,GAAGpvE,MAAMld,iBACtCp3M,EAAO41M,EAAS6M,SAAW7M,EAAS6M,SACtC,CACF,KAEKziN,EAAM,CACT,IAAIuL,EAAQxoC,KAAK2qG,IAAI03I,WACjB55M,EAASzoC,KAAK2qG,IAAI23I,YACtBrlN,EAAO,CACLnd,EAAW,GAAR0oB,EACH7J,EAAY,GAAT8J,EACHD,MAAe,GAARA,EACPC,OAAiB,GAATA,EAEZ,CAEA,OAAOxL,CACT,IAGF,SAASy5S,EAAYC,GAGnB,IAAIjtT,EAAM,CACR5J,EAAG,IACH6e,EAAG,IACH0L,OAAQ,QACRkY,MAAO,UAET,OAAO74B,EAAIitT,EACb,CAEA,SAASK,EAAUplS,GACjB,MAAkB,aAAXA,EAAwB,YAAc,WAC/C,CAEA,IAAInkB,EAAW2mT,EACfjzU,EAAOD,QAAUusB,C,iCCztBjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjByhR,EAASzhR,EAAQ,MAoBrB2qN,EAAQI,eAAe,YAAY,SAAUC,EAASd,GACpD,IAAIomG,EAAoB7uC,EAAO8uC,wBAAwBzmG,EAAOv1N,KAAK21N,EAAQe,cAAef,EAAS,YAAau3D,EAAO4jC,aAAa,SAAUt8E,EAAO69E,GACnJ,OAAO79E,EAAMruP,IAAIksU,EAASrzR,UAC5B,IACIi9R,EAAiB,GACrBtmG,EAAQe,cAAc,CACpBC,SAAU,WACV7yI,MAAO2yI,IACN,SAAU+d,EAAOtvP,GAClB+2U,EAAe/0U,KAAKnB,MAAMk2U,EAAgBF,EAAkBvnF,GAAOzyK,MACrE,IACAwzJ,EAAO56H,KAAKshO,GAAgB,SAAUlP,EAAe7nU,GACnD6nU,EAAcuG,YAAY,CACxB3xR,MAAO80L,EAAQ90L,MACfC,IAAK60L,EAAQ70L,IACbovR,WAAYv6F,EAAQu6F,WACpBx6P,SAAUigK,EAAQjgK,UAEtB,GACF,G,wBC3CA,IAAI4/J,EAAU3qN,EAAQ,OAElBoH,EAAQpH,EAAQ,OAEhB2rQ,EAAgBvkQ,EAAMukQ,cACtBz8K,EAAO9nF,EAAM8nF,KAoBjBy7H,EAAQonB,kBAAkB,CAIxB0+E,gBAAiB,SAAUvmG,GACzB,IAAIwmG,EAAiB/kD,IASrB,OARAzhD,EAAQe,cAAc,YAAY,SAAUq2F,GAC1CA,EAAcqF,gBAAe,SAAUC,EAAUrzR,EAAW+tR,GAC1D,IAAIS,EAAYT,EAAcsG,aAAahB,EAAS3qU,KAAMs3C,GAC1D27D,EAAK6yN,EAAUsB,yBAAyB,SAAUj4F,GAChDslG,EAAe1mU,IAAIohO,EAAY/lO,IAAK+lO,EACtC,GACF,GACF,IACOslG,CACT,EACAC,iBAAiB,EAIjBC,aAAc,SAAU1mG,EAAS/nI,GAC/B+nI,EAAQe,cAAc,YAAY,SAAUq2F,GAI1CA,EAAcqF,gBAAe,SAAUC,EAAUrzR,EAAW+tR,GAC1DA,EAAcsG,aAAahB,EAAS3qU,KAAMs3C,GAAW0qD,MAAMqjO,EAAen/N,EAC5E,IAeAm/N,EAAcqF,gBAAe,SAAUC,EAAUrzR,EAAW+tR,GAC1DA,EAAcsG,aAAahB,EAAS3qU,KAAMs3C,GAAWiwP,WAAW89B,EAAen/N,EACjF,GACF,IACA+nI,EAAQe,cAAc,YAAY,SAAUq2F,GAG1C,IAAIS,EAAYT,EAAc0G,8BAC1B6I,EAAe9O,EAAUqB,uBACzB0N,EAAa/O,EAAUoB,qBAC3B7B,EAAcwG,mBAAmB,CAC/B5xR,MAAO26R,EAAa,GACpB16R,IAAK06R,EAAa,GAClBtL,WAAYuL,EAAW,GACvB/lQ,SAAU+lQ,EAAW,IAEzB,GACF,G,gCCpFF,IAAIhnG,EAAS9pN,EAAQ,OAEjB0hS,EAAa1hS,EAAQ,OAoBrB+wT,EAAY,CAAC,IAAK,IAAK,IAAK,SAAU,QAAS,UAE/CC,EAAS,CAAC,cAAe,QAAS,cAMtC,SAAS1N,EAAiB2N,GACxB,OAAOnnG,EAAOj7N,QAAQmiU,EAAQC,IAAc,CAC9C,CAWA,SAASC,EAAetsU,EAAO4pD,GAC7B5pD,EAAQA,EAAMjL,QACd,IAAIw3U,EAAernG,EAAO5oN,IAAItc,EAAO88S,EAAWK,cAChDvzP,GAASA,GAAS,IAAI70D,QACtB,IAAIy3U,EAAetnG,EAAO5oN,IAAIstC,EAAOkzP,EAAWK,cAChD,OAAO,SAAU1oS,EAAU9hB,GACzBuyO,EAAO56H,KAAKtqG,GAAO,SAAU3I,EAAMxC,GAMjC,IALA,IAAI43U,EAAU,CACZp1U,KAAMA,EACNq1U,QAASH,EAAa13U,IAGfgJ,EAAI,EAAGA,EAAI+rD,EAAMh1D,OAAQiJ,IAChC4uU,EAAQ7iR,EAAM/rD,IAAMxG,EAAOm1U,EAAa3uU,GAG1C4W,EAASxhB,KAAKN,EAAS85U,EACzB,GACF,CACF,CAiBA,IAAIhM,EAAc6L,EAAeH,EAAW,CAAC,YAAa,OAAQ,QAAS,OAa3E,SAASR,EAAwBgB,EAAaC,EAAiBC,GAC7D,OAAO,SAAUC,GACf,IAcIC,EAdAz2U,EAAS,CACXo7E,MAAO,GACP0wO,QAAS,CAAC,GAOZ,GAJAwqB,GAAgB,SAAUzhO,GACxB70G,EAAO8rT,QAAQj3M,EAAS9zG,MAAQ,CAAC,CACnC,KAEKy1U,EACH,OAAOx2U,EAGT02U,EAAOF,EAAYx2U,GAGnB,GACEy2U,GAAa,EACbJ,EAAYM,SACLF,GAET,SAASE,EAAkBj/P,IACpBk/P,EAAel/P,EAAM13E,IAAW62U,EAASn/P,EAAM13E,KAClD02U,EAAOh/P,EAAM13E,GACby2U,GAAa,EAEjB,CAEA,OAAOz2U,CACT,EAEA,SAAS42U,EAAel/P,EAAM13E,GAC5B,OAAO4uO,EAAOj7N,QAAQ3T,EAAOo7E,MAAO1D,IAAS,CAC/C,CAEA,SAASm/P,EAASn/P,EAAM13E,GACtB,IAAI82U,GAAU,EAMd,OALAR,GAAgB,SAAUzhO,GACxB+5H,EAAO56H,KAAKuiO,EAAa7+P,EAAMm9B,IAAa,IAAI,SAAUkiC,GACxD/2I,EAAO8rT,QAAQj3M,EAAS9zG,MAAMg2I,KAAY+/L,GAAU,EACtD,GACF,IACOA,CACT,CAEA,SAASJ,EAAOh/P,EAAM13E,GACpBA,EAAOo7E,MAAM76E,KAAKm3E,GAClB4+P,GAAgB,SAAUzhO,GACxB+5H,EAAO56H,KAAKuiO,EAAa7+P,EAAMm9B,IAAa,IAAI,SAAUkiC,GACxD/2I,EAAO8rT,QAAQj3M,EAAS9zG,MAAMg2I,IAAU,CAC1C,GACF,GACF,CACF,CAEAv5I,EAAQ4qU,iBAAmBA,EAC3B5qU,EAAQw4U,eAAiBA,EACzBx4U,EAAQ2sU,YAAcA,EACtB3sU,EAAQ63U,wBAA0BA,C,iCCxJlC,IAAIzmG,EAAS9pN,EAAQ,OAoBjBkvF,EAAO46H,EAAO56H,KACd+iO,EAAO,mBAMX,SAASx2U,EAAKyuO,EAASgoG,GACrB,IAAI3sU,EAAQ4sU,EAAUjoG,GAGtBh7H,EAAKgjO,GAAa,SAAUvrB,EAAWgjB,GAGrC,IAFA,IAAInuU,EAAI+J,EAAM/L,OAAS,EAEhBgC,GAAK,EAAGA,IAAK,CAClB,IAAI42U,EAAW7sU,EAAM/J,GAErB,GAAI42U,EAASzI,GACX,KAEJ,CAEA,GAAInuU,EAAI,EAAG,CAET,IAAI8lU,EAAgBp3F,EAAQq5D,gBAAgB,CAC1Cr4D,SAAU,WACVC,QAAS,SACTnqO,GAAI2oU,IACH,GAEH,GAAIrI,EAAe,CACjB,IAAIuP,EAAevP,EAAcyG,kBACjCxiU,EAAM,GAAGokU,GAAc,CACrBA,WAAYA,EACZzzR,MAAO26R,EAAa,GACpB16R,IAAK06R,EAAa,GAEtB,CACF,CACF,IACAtrU,EAAM9J,KAAKy2U,EACb,CAOA,SAASjiT,EAAIi6M,GACX,IAAI3kO,EAAQ4sU,EAAUjoG,GAClBzkD,EAAOlgL,EAAMA,EAAM/L,OAAS,GAChC+L,EAAM/L,OAAS,GAAK+L,EAAM0qB,MAE1B,IAAImiT,EAAW,CAAC,EAWhB,OAVAljO,EAAKu2E,GAAM,SAAUkhI,EAAWgjB,GAC9B,IAAK,IAAInuU,EAAI+J,EAAM/L,OAAS,EAAGgC,GAAK,EAAGA,IAAK,CACtCmrT,EAAYphT,EAAM/J,GAAGmuU,GAEzB,GAAIhjB,EAAW,CACbyrB,EAASzI,GAAchjB,EACvB,KACF,CACF,CACF,IACOyrB,CACT,CAMA,SAASl4T,EAAMgwN,GACbA,EAAQ+nG,GAAQ,IAClB,CAOA,SAASlyT,EAAMmqN,GACb,OAAOioG,EAAUjoG,GAAS1wO,MAC5B,CASA,SAAS24U,EAAUjoG,GACjB,IAAI3kO,EAAQ2kO,EAAQ+nG,GAMpB,OAJK1sU,IACHA,EAAQ2kO,EAAQ+nG,GAAQ,CAAC,CAAC,IAGrB1sU,CACT,CAEA7M,EAAQ+C,KAAOA,EACf/C,EAAQu3B,IAAMA,EACdv3B,EAAQwhB,MAAQA,EAChBxhB,EAAQqnB,MAAQA,C,iCC5HhB,IAAI+pN,EAAS9pN,EAAQ,OAEjB68O,EAAiB78O,EAAQ,OAEzBu8R,EAAev8R,EAAQ,OAyBvBiyT,EAAO,uBAgBX,SAASrhQ,EAASuxB,EAAKkwO,GACrB,IAAI9sU,EAAQ4sU,EAAUhwO,GAClBmwO,EAAgBD,EAAa1I,WAC7B4I,EAAaF,EAAa5I,QAG9B3/F,EAAO56H,KAAK3pG,GAAO,SAAU2hT,EAAQuiB,GACnC,IAAI+I,EAAgBtrB,EAAOsrB,cAEvBA,EAAcF,IAAkBxoG,EAAOj7N,QAAQwjU,EAAajJ,YAAamJ,GAAc,WAClFC,EAAcF,GACrBprB,EAAOnnS,QAEX,IACA0yT,EAAWltU,GACX,IAAI2hT,EAAS3hT,EAAMgtU,GAEdrrB,IACHA,EAAS3hT,EAAMgtU,GAAc,CAC3B9I,QAAS8I,EACTC,cAAe,CAAC,EAChBzyT,MAAO,GAETmnS,EAAO7mD,WAAaqyE,EAAiBvwO,EAAK+kN,GAC1CA,EAAO9nD,eAAiBt1B,EAAOuD,MAAM+xB,EAAgBj9J,KAItD+kN,EAAOsrB,cAAcF,IAAkBprB,EAAOnnS,QAC/CmnS,EAAOsrB,cAAcF,GAAiBD,EACtC,IAAIM,EAAmBC,EAAsB1rB,EAAOsrB,eACpDtrB,EAAO7mD,WAAWK,OAAOiyE,EAAiBE,YAAaF,EAAiBt4O,KAExE6sN,EAAO7mD,WAAWE,kBAAkB8xE,EAAa3I,eAEjDntB,EAAa9tD,eAAey4D,EAAQ,iBAAkBmrB,EAAa/Q,cAAc5mU,IAAI,YAAY,GAAO,UAC1G,CAQA,SAAS0hT,EAAWj6M,EAAKwnO,GACvB,IAAIpkU,EAAQ4sU,EAAUhwO,GACtB2nI,EAAO56H,KAAK3pG,GAAO,SAAU2hT,GAC3BA,EAAO7mD,WAAWrtB,UAClB,IAAIw/F,EAAgBtrB,EAAOsrB,cAEvBA,EAAc7I,YACT6I,EAAc7I,GACrBziB,EAAOnnS,QAEX,IACA0yT,EAAWltU,EACb,CAMA,SAAS+jU,EAAgBb,GACvB,OAAOA,EAAWzsU,KAAO,MAAQysU,EAAWznU,EAC9C,CAOA,SAASmxU,EAAUhwO,GAGjB,IAAIwnL,EAAKxnL,EAAIoqJ,QACb,OAAOo9B,EAAGsoD,KAAUtoD,EAAGsoD,GAAQ,CAAC,EAClC,CAEA,SAASS,EAAiBvwO,EAAK2wO,GAC7B,IAAIzyE,EAAa,IAAIxD,EAAe16J,EAAIoqJ,SAsBxC,OArBAziB,EAAO56H,KAAK,CAAC,MAAO,OAAQ,eAAe,SAAUk9D,GACnDi0F,EAAWplM,GAAGmxG,GAAW,SAAUvxJ,GACjC,IAAIgqJ,EAAQ,GACZilE,EAAO56H,KAAK4jO,EAAUN,eAAe,SAAUzgN,GAG7C,GAAKl3G,EAAMk4T,oBAAoBhhN,EAAKuvM,cAAc/+R,QAAlD,CAIA,IAAI3tB,GAAUm9G,EAAKw3M,UAAY,CAAC,GAAGn9J,GAC/Bh+F,EAAQx5D,GAAUA,EAAOk+T,EAAUzyE,WAAYxlP,IAClDk3G,EAAKuvM,cAAc5mU,IAAI,YAAY,IAAS0zE,GAASy2F,EAAMppK,KAAK,CAC/DkuU,WAAY53M,EAAK43M,WACjBzzR,MAAOk4B,EAAM,GACbj4B,IAAKi4B,EAAM,IAPb,CASF,IACAy2F,EAAMrrK,QAAUs5U,EAAU1zE,eAAev6F,EAC3C,GACF,IACOw7F,CACT,CAEA,SAASoyE,EAAWltU,GAClBukO,EAAO56H,KAAK3pG,GAAO,SAAU2hT,EAAQuiB,GAC9BviB,EAAOnnS,QACVmnS,EAAO7mD,WAAWrtB,iBACXztO,EAAMkkU,GAEjB,GACF,CAMA,SAASrqE,EAAej9J,EAAK0iE,GAC3B1iE,EAAIi9J,eAAe,CACjBpjQ,KAAM,WACN6oK,MAAOA,GAEX,CAMA,SAAS+tK,EAAsBJ,GAC7B,IAAIK,EAGAr4N,EAAS,QACTw4N,EAAe,CACjB,UAAa,EACb,UAAa,EACb,WAAc,EACd,gBAAmB,GAEjBjK,GAA0B,EAa9B,OAZAj/F,EAAO56H,KAAKsjO,GAAe,SAAUH,GACnC,IAAI/Q,EAAgB+Q,EAAa/Q,cAC7B2R,GAAU3R,EAAc5mU,IAAI,YAAY,MAAgB4mU,EAAc5mU,IAAI,YAAY,IAAQ,QAE9Fs4U,EAAax4N,EAASy4N,GAAWD,EAAax4N,EAASq4N,KACzDA,EAAcI,GAKhBlK,GAA2BzH,EAAc5mU,IAAI,2BAA2B,EAC1E,IACO,CACLm4U,YAAaA,EACbx4O,IAAK,CAIHuuO,kBAAkB,EAClBC,iBAAiB,EACjBC,kBAAkB,EAClBC,0BAA2BA,GAGjC,CAEArwU,EAAQk4E,SAAWA,EACnBl4E,EAAQ0jT,WAAaA,EACrB1jT,EAAQ4wU,gBAAkBA,C,wBCrN1B,IAAI4J,EAAYlzT,EAAQ,OAoBxBkzT,EAAUC,yBAAyB,YAAY,WAE7C,MAAO,QACT,G,wBCvBA,IAAIC,EAAiBpzT,EAAQ,OAEzBsoT,EAAgBtoT,EAAQ,OAExBmyO,EAAgBnyO,EAAQ,MAExBqzT,EAAqBlhF,EAAckhF,mBAEnC57D,EAAcz3P,EAAQ,OAEtBszT,EAA0B77D,EAAY67D,wBA6B1CF,EAAel4N,OAAO,CACpBl/G,KAAM,UAKNgyO,cAAe,CAEbulG,eAAgBD,EAEhBE,aAAc,KACdphL,WAAY,KACZl2J,OAAQ,MAEVm8R,cAAe,WACbg7C,EAAmB77U,KACrB,IAEF8wU,EAAcptN,OAAO,CACnBl/G,KAAM,W,wBC1DR,IAAI2uO,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OA4BrB,SAASyzT,EAAW7+T,EAAQk2N,GAC1BA,EAAWt8M,OAAS,aACpBm8M,EAAQI,eAAeD,GAAY,SAAUE,EAASd,GACpD,IAAIvgH,EAAW,CAAC,EAWhB,OAVAugH,EAAQe,cAAc,CACpBC,SAAU,MACV7yI,MAAO2yI,IACN,SAAU0oG,GACXA,EAAS9+T,GAAQo2N,EAAQ/uO,MACzB,IAAI2vO,EAAM8nG,EAAS7nG,iBACnB/B,EAAO56H,KAAK08H,EAAIsgD,SAAS,SAAUC,GACjCxiK,EAASwiK,EAAOlwR,MAAQy3U,EAAS5hI,WAAWq6E,EAAOlwR,QAAS,CAC9D,GACF,IACO,CACL0tH,SAAUA,EACV1tH,KAAM+uO,EAAQ/uO,KAElB,GACF,CA7CA+jB,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAyCRyzT,EAAW,iBAAkB,CAC3Bz3U,KAAM,kBACN6e,MAAO,qBAET44T,EAAW,SAAU,CACnBz3U,KAAM,YACN6e,MAAO,gBAET44T,EAAW,WAAY,CACrBz3U,KAAM,cACN6e,MAAO,iB,wBC7DT,IAAI4yQ,EAAUztQ,EAAQ,OAElB2qN,EAAU3qN,EAAQ,OAoBlBiF,EAAW0lN,EAAQqxE,oBAAoB,CACzChgT,KAAM,MACNkzD,KAAM,SAAUg7K,EAAS/nI,GACvB,IAAI0rL,EAAU,IAAIJ,EAAQtrL,GAAK,GAC/B3qG,KAAKs2R,SAAWD,EAChBr2R,KAAKk7C,MAAM36C,IAAI81R,EAAQn7O,MACzB,EACA/7C,OAAQ,SAAU+8U,EAAUxpG,EAAS/nI,EAAK6oI,GAExC,IAAIA,GAA4B,oBAAjBA,EAAQhvO,MAA8BgvO,EAAQp1K,OAASp+D,KAAK6N,IAA3E,CAIA,IAAIwoR,EAAUr2R,KAAKs2R,SAEf4lD,EAASh5U,IAAI,QACfmzR,EAAQrgQ,KAAKkmT,EAAUxpG,EAAS/nI,EAAK3qG,KAAMwzO,GAE3CxzO,KAAKs2R,SAASp7O,MAAMigM,YAGtBn7O,KAAKk7C,MAAMi0G,OAAS+sL,EAASh5U,IAAI,SAVjC,CAWF,EACAs4O,QAAS,WACPx7O,KAAKs2R,UAAYt2R,KAAKs2R,SAAS15M,QACjC,IAGFz7E,EAAOD,QAAUusB,C,iCClDjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB2qN,GAFU1/L,EAAQojM,QAERruN,EAAQ,QAElB8pN,EAAS9pN,EAAQ,OAEjB6+P,EAAY7+P,EAAQ,OAEpBgpO,EAAchpO,EAAQ,OAEtB2zT,EAAa3zT,EAAQ,MAErBi5N,EAAUj5N,EAAQ,OAElBk5N,EAAeD,EAAQC,aAoBvB06F,EAA2B,CAE7Bl/Q,KAAM,KACNm/Q,aAAc,KAEdnhS,MAAOs2M,EAAYpa,MACnBz9B,MAAO63C,EAAY5jJ,MACnBjxE,KAAM60N,EAAY0B,MAKpB/f,EAAQ6Z,sBAAqB,SAAUjiN,GACrC,IAAIuxS,EAAgBvxS,EAAO+rM,QAOvBxE,EAAOxrO,QAAQw1U,GACZA,EAAc,IAAOA,EAAc,GAAG1iO,SAOzC7uE,EAAO+rM,QAAU,CAAC/rM,EAAO+rM,QAAQ,IANjC/rM,EAAO+rM,QAAU,CAAC,CAChBl9H,SAAU0iO,IAOLA,IAAkBA,EAAc1iO,WACzC7uE,EAAO+rM,QAAU,CAAC,CAChBl9H,SAAU,CAAC0iO,KAGjB,IAIA,IAAIC,EAAeppG,EAAQ6wE,qBAAqB,CAC9Cx/S,KAAM,UACNgyO,cAAe,CA2Bb58H,SAAU,GACV6xD,SAAU,MAUZ+wK,mBAAoB,KAKpB15E,YAAa,SAAU/3N,GAErB,IAAI6uE,EAAW55G,KAAK+qC,OAAO6uE,SAC3B55G,KAAK+qC,OAAO6uE,SAAW,KACvB2iO,EAAah7F,WAAWvhP,KAAM,cAAe+C,WAC7C/C,KAAK+qC,OAAO6uE,SAAWA,CACzB,EAKAinL,cAAe,SAAU5G,EAAWvoL,GAClC,IAAIkvN,EAAa5gU,KAAK+qC,OAClB0xS,GAAW/qO,EAASkvN,EAAa3mC,GAAWrgL,SAC5C8iO,EAAY9b,EAAWhnN,SAAWlI,EAAS,GAAKkvN,EAAWhnN,SAC3D+iO,EAAgB,GAEpB38U,KAAK48U,SAASH,EAASE,GAEvB,IAAIE,EAAgBx1D,EAAUy1D,gBAAgBJ,EAAWC,GACzDt1D,EAAU01D,cAAcF,GAExB,IAAIG,EAAoBh9U,KAAKw8U,mBAAqB,GAClDlqG,EAAO56H,KAAKmlO,GAAe,SAAUI,EAAYh7U,GAC/C,IAAIi7U,EAAcD,EAAWlyS,OAExBmyS,IAILF,EAAkB/4U,KAAKi5U,GACvBC,EAAwBF,EAAYC,GACpCE,EAAwBV,EAAWz6U,EAAOi7U,GAC1CG,EAAqBX,EAAUz6U,GAAQi7U,GACzC,GAAGl9U,MAEH,IAAK,IAAIgE,EAAI04U,EAAU16U,OAAS,EAAGgC,GAAK,EAAGA,IACrB,MAAhB04U,EAAU14U,GACZ04U,EAAUzjT,OAAOj1B,EAAG,UAIb04U,EAAU14U,GAAGs5U,OAG1B,EAqBAV,SAAU,SAAUW,EAAY75U,EAAQ85U,GACtClrG,EAAO56H,KAAK6lO,GAAY,SAAUxyS,GAChC,GAAKA,EAAL,CAIIyyS,IACFzyS,EAAOyyS,aAAeA,GAGxB95U,EAAOO,KAAK8mC,GACZ,IAAIg0C,EAAWh0C,EAAOg0C,SAEF,UAAhBh0C,EAAOvmC,MAAoBu6E,GAC7B/+E,KAAK48U,SAAS79P,EAAUr7E,EAAQqnC,UAI3BA,EAAOg0C,QAdd,CAeF,GAAG/+E,KACL,EAGAy9U,qBAAsB,WACpB,IAAI18O,EAAM/gG,KAAKw8U,mBAGf,OADAx8U,KAAKw8U,mBAAqB,KACnBz7O,CACT,IA0LF,SAAS0xJ,EAASjpP,EAAIk0U,EAAgBhrF,EAAUirF,GAC9C,IAAIhrF,EAAcD,EAASluP,KACvB4uP,EAAMgpF,EAAyB91U,eAAeqsP,GAEhDypF,EAAyBzpF,GAAenB,EAAY6B,cAAcV,GAChE/wP,EAAK,IAAIwxP,EAAIV,GACjBgrF,EAAen9U,IAAIqB,GACnB+7U,EAAMnrU,IAAIhJ,EAAI5H,GACdA,EAAGg8U,cAAgBp0U,CACrB,CAEA,SAASq0U,EAASC,EAASH,GACzB,IAAII,EAAgBD,GAAWA,EAAQ39U,OAEnC49U,IACe,UAAjBD,EAAQt5U,MAAoBs5U,EAAQjlF,UAAS,SAAUj3P,GACrDi8U,EAASj8U,EAAI+7U,EACf,IACAA,EAAMK,UAAUF,EAAQF,eACxBG,EAAcnhQ,OAAOkhQ,GAEzB,CAGA,SAASG,EAAmBvrF,GAK1B,OAJAA,EAAWpgB,EAAO5uH,OAAO,CAAC,EAAGgvI,GAC7BpgB,EAAO56H,KAAK,CAAC,KAAM,WAAY,UAAW,KAAM,YAAYz2G,OAAOk7U,EAAW+B,kBAAkB,SAAUz5U,UACjGiuP,EAASjuP,EAClB,IACOiuP,CACT,CAEA,SAASyrF,EAAS3+T,EAAK63C,GACrB,IAAI+mR,EAIJ,OAHA9rG,EAAO56H,KAAKrgD,GAAO,SAAUunF,GACd,MAAbp/H,EAAIo/H,IAA+B,SAAdp/H,EAAIo/H,KAAqBw/L,GAAQ,EACxD,IACOA,CACT,CAEA,SAASjB,EAAwBF,EAAYC,GAC3C,IAAImB,EAAgBpB,EAAWqB,MAK/B,GAHApB,EAAY1zU,GAAKyzU,EAAWsB,QAAQ/0U,IACnC0zU,EAAY14U,MAAQ65U,IAAkBnB,EAAY14U,KAAO65U,EAAc75U,MAE5C,MAAxB04U,EAAYzxK,SAAkB,CAChC,IAAI+yK,EAAoBtB,EAAYM,aAEhCgB,EACFtB,EAAYzxK,SAAW+yK,EAAkBh1U,GAChC60U,IACTnB,EAAYzxK,SAAW4yK,EAAc5yK,SAEzC,CAGAyxK,EAAYM,aAAe,IAC7B,CAEA,SAASJ,EAAwBV,EAAWz6U,EAAOi7U,GAEjD,IAAIuB,EAAensG,EAAO5uH,OAAO,CAAC,EAAGw5N,GACjCmB,EAAgB3B,EAAUz6U,GAC1Bq7U,EAAUJ,EAAYI,SAAW,QAErB,UAAZA,EACEe,GAGF/rG,EAAOt0H,MAAMqgO,EAAeI,GAAc,GAE1CtC,EAAWuC,iBAAiBL,EAAeI,EAAc,CACvDE,YAAY,IAGdxC,EAAWyC,iBAAiB1B,EAAamB,IAEzC3B,EAAUz6U,GAASw8U,EAEA,YAAZnB,EACTZ,EAAUz6U,GAASw8U,EACE,WAAZnB,GAETe,IAAkB3B,EAAUz6U,GAAS,KAEzC,CAEA,SAASo7U,EAAqBwB,EAAW3B,GAClC2B,IAILA,EAAUC,GAAK5B,EAAY4B,GAAK,CAChCX,EAASjB,EAAa,CAAC,OAAQ,UAC/BiB,EAASjB,EAAa,CAAC,MAAO,YAEP,UAAnB2B,EAAUr6U,OACO,MAAnBq6U,EAAUr2S,QAAkBq2S,EAAUr2S,MAAQ00S,EAAY10S,MAAQ,GAC9C,MAApBq2S,EAAUp2S,SAAmBo2S,EAAUp2S,OAASy0S,EAAYz0S,OAAS,IAEzE,CAEA,SAASs2S,EAAan9U,EAAIo9U,EAActsF,GACtC,IAAI8hD,EAAY5yS,EAAG4yS,UAEd5yS,EAAGutJ,QAAWvtJ,EAAGoyP,QAAWwgD,IAC/BA,EAAY5yS,EAAG4yS,UAAY,CACzBtgE,cAAe,UACfwgE,eAAgBsqC,EAAatqC,eAC7BjwS,KAAM7C,EAAG6C,OAMT+vS,IACFA,EAAUj6K,KAAO34H,EAAG24H,KAExB,CA5SA44G,EAAQqxE,oBAAoB,CAC1BhgT,KAAM,UAKNkzD,KAAM,SAAUg7K,EAAS/nI,GAKvB3qG,KAAKi/U,OAAS3sG,EAAO6hD,gBAMrBn0R,KAAKk/U,iBACP,EAKA//U,OAAQ,SAAU6/U,EAActsG,EAAS/nI,GAUnCq0O,IAAiBh/U,KAAKk/U,mBACxBl/U,KAAK44O,SAGP54O,KAAKk/U,kBAAoBF,EAEzBh/U,KAAKm/U,gBAAgBH,GAErBh/U,KAAKo/U,UAAUJ,EAAcr0O,EAC/B,EAQAw0O,gBAAiB,SAAUH,GACzB,IAAIhC,EAAoBgC,EAAavB,uBAErC,GAAKT,EAAL,CAIA,IAAIW,EAAQ39U,KAAKi/U,OACbI,EAAYr/U,KAAKk7C,MAErBo3L,EAAO56H,KAAKslO,GAAmB,SAAUtqF,GACvC,IAAI4qF,EAAU5qF,EAAS4qF,QACnB9zU,EAAKkpP,EAASlpP,GACds0U,EAAUH,EAAMz6U,IAAIsG,GACpBiiK,EAAWinF,EAASjnF,SACpBiyK,EAA6B,MAAZjyK,EAAmBkyK,EAAMz6U,IAAIuoK,GAAY4zK,EAC1D1rF,EAAgBjB,EAAS9mP,MAEP,SAAlB8mP,EAASluP,MAAmBmvP,IAG1BjB,EAASosF,IAAMpsF,EAASosF,GAAG,KAC7BnrF,EAAcoJ,kBAAoBpJ,EAAcr5N,aAAe,OAKhEq5N,EAAcrtP,eAAe,aAAeqtP,EAAc5pO,OAAS4pO,EAAcnxB,SAAWmxB,EAAc5pO,OAC1G4pO,EAAcrtP,eAAe,eAAiBqtP,EAAct6N,SAAWs6N,EAAchxB,WAAagxB,EAAct6N,SAInH,IAAIimT,EAAkBrB,EAAmBvrF,GAEpC4qF,GAAuB,UAAZA,EAEO,YAAZA,GACTO,EAASC,EAASH,GAClBlrF,EAASjpP,EAAIk0U,EAAgB4B,EAAiB3B,IACzB,WAAZL,GACTO,EAASC,EAASH,GALlBG,EAAUA,EAAQjnT,KAAKyoT,GAAmB7sF,EAASjpP,EAAIk0U,EAAgB4B,EAAiB3B,GAQ1F,IAAI/7U,EAAK+7U,EAAMz6U,IAAIsG,GAEf5H,IACFA,EAAG29U,uBAAyB7sF,EAASlqN,MACrC5mC,EAAG49U,wBAA0B9sF,EAASjqN,OACtCs2S,EAAan9U,EAAIo9U,EAActsF,GAEnC,GA7CA,CA8CF,EASA0sF,UAAW,SAAUJ,EAAcr0O,GAOjC,IANA,IAAI80O,EAAYT,EAAaj0S,OAAO6uE,SAChCylO,EAAYr/U,KAAKk7C,MACjByiS,EAAQ39U,KAAKi/U,OACbS,EAAW/0O,EAAI03I,WACfs9F,EAAYh1O,EAAI23I,YAEXt+O,EAAI,EAAGA,EAAIy7U,EAAUz9U,OAAQgC,IAAK,CACzC,IAAI0uP,EAAW+sF,EAAUz7U,GACrBpC,EAAK+7U,EAAMz6U,IAAIwvP,EAASlpP,IAE5B,GAAK5H,GAAOA,EAAG+2P,QAAf,CAIA,IAAIinF,EAAWh+U,EAAGzB,OACd0/U,EAAeD,IAAaP,EAEhCz9U,EAAGk+U,iBAAmBp+F,EAAa9/O,EAAG29U,uBAAwBM,EAAeH,EAAWE,EAASE,mBAAqB,EACtHl+U,EAAGm+U,kBAAoBr+F,EAAa9/O,EAAG49U,wBAAyBK,EAAeF,EAAYC,EAASG,oBAAsB,CAN1H,CAOF,CAGA,IAAS/7U,EAAIy7U,EAAUz9U,OAAS,EAAGgC,GAAK,EAAGA,IAAK,CAC1C0uP,EAAW+sF,EAAUz7U,GACrBpC,EAAK+7U,EAAMz6U,IAAIwvP,EAASlpP,IAE5B,GAAK5H,EAAL,CAIIg+U,EAAWh+U,EAAGzB,OAAlB,IACI6/U,EAAgBJ,IAAaP,EAAY,CAC3C72S,MAAOk3S,EACPj3S,OAAQk3S,GACN,CACFn3S,MAAOo3S,EAASE,iBAChBr3S,OAAQm3S,EAASG,mBAMnB5D,EAAW7mC,gBAAgB1zS,EAAI8wP,EAAUstF,EAAe,KAAM,CAC5DlB,GAAIpsF,EAASosF,GACbmB,aAAcvtF,EAASwtF,UAhBzB,CAkBF,CACF,EAOAtnG,OAAQ,WACN,IAAI+kG,EAAQ39U,KAAKi/U,OACjBtB,EAAMjmO,MAAK,SAAU91G,GACnBi8U,EAASj8U,EAAI+7U,EACf,IACA39U,KAAKi/U,OAAS3sG,EAAO6hD,eACvB,EAKA34C,QAAS,WACPx7O,KAAK44O,QACP,G,uBC7YFpwN,EAAQ,OAERA,EAAQ,OAERA,EAAQ,M,wBCJR,IAAI2qN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAqBR2qN,EAAQqxE,oBAAoB,CAC1BhgT,KAAM,OACNrF,OAAQ,SAAUw9T,EAAWjqF,GAC3B1yO,KAAKk7C,MAAMigM,YAEPwhF,EAAUz5T,IAAI,SAChBlD,KAAKk7C,MAAM36C,IAAI,IAAIu2O,EAAQuF,KAAK,CAC9B7mN,MAAOmnS,EAAUtoF,iBAAiBqL,UAClC9zO,MAAO0mO,EAAO94I,SAAS,CACrBzvE,KAAM4yS,EAAUz5T,IAAI,oBACnBy5T,EAAUn9E,gBACbrwF,QAAQ,EACRmtF,IAAK,IAGX,IAEFnJ,EAAQ6Z,sBAAqB,SAAUjiN,GAEjCA,EAAO6I,OAAS7I,EAAO8I,QAAU9I,EAAOI,OAC1CJ,EAAOI,KAAO,CAAC,EAEnB,G,iCCnDA,IAAIsI,EAAUjrB,EAAQ,OAIlB8pN,GAFU7+L,EAAQojM,QAETruN,EAAQ,QAEjB23T,EAAW33T,EAAQ,OAEnBsuN,EAAUtuN,EAAQ,OAElB43T,EAAmB53T,EAAQ,MAE3BkpO,EAAalpO,EAAQ,OAoBrBqtN,EAAQvD,EAAOuD,MACfn+H,EAAO46H,EAAO56H,KACdhuF,EAAM4oN,EAAO5oN,IACbiyN,EAAUx1O,KAAKyI,IACf8sO,EAAUv1O,KAAKwI,IACf0xU,EAAUl6U,KAAK4iB,IACfu3T,EAAU,IACVC,EAAqB,EACrBC,EAAwB,EACxBC,EAAqB,YACrBC,EAAgB,CAClB72U,EAAG,CAAC,EAAG,GACP5D,EAAG,CAAC,EAAG,GACP8Z,EAAG,CAAC,EAAG,GACPzR,EAAG,CAAC,EAAG,IAELqyU,EAAa,CACf92U,EAAG,KACH5D,EAAG,KACH8Z,EAAG,KACHzR,EAAG,KACHsyU,GAAI,OACJ7Z,GAAI,OACJ8Z,GAAI,OACJnpM,GAAI,QAEFopM,EAAoB,CACtBziB,WAAY,CACVtkS,UAAW,EACXV,OAAQ,kBACRtP,KAAM,mBAERw2S,eAAe,EACfD,UAAW,SACXhC,eAAe,GAEbyiB,EAAU,EAiBd,SAAShkB,EAAgB5qC,GACvBguD,EAAS9/U,KAAKL,MAMdA,KAAKghV,IAAM7uD,EAMXnyR,KAAKk7C,MAAQ,IAAI47L,EAAQM,MAUzBp3O,KAAKihV,WAQLjhV,KAAKkhV,aAMLlhV,KAAKmhV,QAMLnhV,KAAKohV,OAAS,GAMdphV,KAAK+lT,UAML/lT,KAAKqhV,QAAU,GAMfrhV,KAAKshV,eAOLthV,KAAKuhV,eAMLvhV,KAAKwhV,iBAULxhV,KAAKyhV,KAAO,mBAAqBV,IAMjC/gV,KAAK0hV,UAAY,CAAC,EAClBhqO,EAAKiqO,IAAiB,SAAUlgU,EAASmzJ,GACvC50K,KAAK0hV,UAAU9sK,GAAa09D,EAAOv1N,KAAK0E,EAASzhB,KACnD,GAAGA,KACL,CA6IA,SAAS4hV,EAAc/4E,EAAY63D,GACjC,IAAIvuC,EAAKtpB,EAAWm4E,IAEfn4E,EAAW24E,kBACdpB,EAAiByB,KAAK1vD,EAAIsuD,EAAoB53E,EAAW44E,MAG3DK,EAAc3vD,EAAItpB,EAAW64E,WAC7B74E,EAAWo4E,WAAavgB,EAAYjnE,UACpCoP,EAAWq4E,aAAe5uG,EAAOt0H,MAAMs0H,EAAOh+M,MAAMwsT,GAAoBpgB,GAAa,EACvF,CAEA,SAASqhB,EAAel5E,GACtB,IAAIspB,EAAKtpB,EAAWm4E,IACpBZ,EAAiB4B,QAAQ7vD,EAAIsuD,EAAoB53E,EAAW44E,MAC5DQ,EAAgB9vD,EAAItpB,EAAW64E,WAC/B74E,EAAWo4E,WAAap4E,EAAWq4E,aAAe,IACpD,CAEA,SAASY,EAAc3vD,EAAIp4L,GACzB2d,EAAK3d,GAAU,SAAUt4E,EAASmzJ,GAChCu9G,EAAG1uN,GAAGmxG,EAAWnzJ,EACnB,GACF,CAEA,SAASwgU,EAAgB9vD,EAAIp4L,GAC3B2d,EAAK3d,GAAU,SAAUt4E,EAASmzJ,GAChCu9G,EAAGn2M,IAAI44F,EAAWnzJ,EACpB,GACF,CAEA,SAASygU,EAAYr5E,EAAY63D,GAC/B,IAAIyhB,EAAQC,GAAe1hB,EAAYjnE,WAAWyoF,YAAYr5E,EAAY63D,GAI1E,OAHAyhB,EAAME,cAAgB3hB,EACtB4hB,EAAQH,EAAOzhB,GACf73D,EAAW3tN,MAAM36C,IAAI4hV,GACdA,CACT,CAEA,SAASI,EAAY15E,EAAY25E,GAC/B,IAAIC,EAAgBC,EAAiBF,GAOrC,OALIC,EAAcF,cAChBE,EAAcF,YAAY15E,EAAY25E,GACtCF,EAAQE,EAAeA,EAAcH,gBAGhCG,CACT,CAEA,SAASG,EAAiB95E,EAAYs5E,GACpC,IAAIzhB,EAAcyhB,EAAME,cACxBK,EAAiBP,GAAOQ,iBAAiB95E,EAAYs5E,EAAOzhB,EAAY9pP,MAAO8pP,EACjF,CAEA,SAAS4hB,EAAQH,EAAOzhB,GACtB,IAAI3oP,EAAI2oP,EAAY3oP,EACf,MAALA,IAAcA,EAAIuoQ,GAClB6B,EAAMtpF,UAAS,SAAUj3P,GACvBA,EAAGm2E,EAAIA,EACPn2E,EAAG06O,GAAKvkK,CACV,GACF,CAEA,SAAS6qQ,EAAyB/5E,EAAYs5E,GAC5CO,EAAiBP,GAAOt/F,aAAagmB,EAAYs5E,GACjDQ,EAAiB95E,EAAYs5E,EAC/B,CAEA,SAASO,EAAiBP,GACxB,OAAOC,GAAeD,EAAME,cAAc5oF,UAC5C,CAGA,SAASopF,EAAgBh6E,EAAY5iQ,EAAG68U,GACtC,IAMIC,EANAC,EAASn6E,EAAWs4E,QAExB,IAAK6B,EACH,OAAO,EAIT,IAAI37Q,EAAYwhM,EAAW2uD,WAI3B,OAHA9/M,EAAKsrO,GAAQ,SAAUC,GACrBA,EAAGjlB,iBAAiB/3T,EAAG68U,EAAkBz7Q,KAAe07Q,EAAQE,EAClE,IACOF,CACT,CAGA,SAASG,EAAgBr6E,EAAYs5E,GACnC,IAAIa,EAASn6E,EAAWs4E,QAExB,IAAK6B,EACH,OAAO,EAGT,IAAIllB,EAAUqkB,EAAME,cAAcvkB,QAGlC,OAAkB,MAAXA,GAAkBklB,EAAOllB,EAClC,CAEA,SAASqlB,EAAYt6E,GACnB,IAAIu6E,EAASv6E,EAAWw4E,QACpBgC,EAAiBD,EAAOphV,OAK5B,OAJA01G,EAAK0rO,GAAQ,SAAUjB,GACrBt5E,EAAW3tN,MAAM0hC,OAAOulQ,EAC1B,GAAGt5E,GACHu6E,EAAOphV,OAAS,IACPqhV,CACX,CAEA,SAASrzO,EAAQ64J,EAAYhmK,GAC3B,IAAItL,EAAQ7tE,EAAIm/O,EAAWw4E,SAAS,SAAUc,GAC5C,IAAIzhB,EAAcyhB,EAAME,cACpBzrQ,EAAQ07J,EAAOh+M,MAAMosS,EAAY9pP,OACrC,MAAO,CACL6iL,UAAWinE,EAAYjnE,UACvBqkE,QAAS4C,EAAY5C,QACrBlnP,MAAOA,EAEX,IACAiyL,EAAW74J,QAAQ,QAASzY,EAAO,CACjCunO,QAASj8N,EAAIi8N,MACbR,gBAAiBz7N,EAAIy7N,eAEzB,CAEA,SAASglB,EAAgBz6E,GACvB,IAAI06E,EAAQ16E,EAAWu4E,OAEvB,IAAKmC,EAAMvhV,OACT,OAAO,EAGT,IAAI+kC,EAAKw8S,EAAMA,EAAMvhV,OAAS,GAC1B8kC,EAAKy8S,EAAM,GACX59Q,EAAK5+B,EAAG,GAAKD,EAAG,GAChB8+B,EAAK7+B,EAAG,GAAKD,EAAG,GAChBmjD,EAAOo2P,EAAQ16Q,EAAKA,EAAKC,EAAKA,EAAI,IACtC,OAAOqkB,EAAOs2P,CAChB,CAEA,SAASiD,EAAaD,GACpB,IAAI7mO,EAAO6mO,EAAMvhV,OAAS,EAE1B,OADA06G,EAAO,IAAMA,EAAO,GACb,CAAC6mO,EAAM,GAAIA,EAAM7mO,GAC1B,CAEA,SAAS+mO,EAAoBC,EAAS76E,EAAY63D,EAAaijB,GAC7D,IAAIxB,EAAQ,IAAIrrG,EAAQM,MA2BxB,OA1BA+qG,EAAM5hV,IAAI,IAAIu2O,EAAQuF,KAAK,CACzB53O,KAAM,OACNmH,MAAOg4U,EAAUljB,GACjBvxK,QAAQ,EACR81G,WAAW,EACXvyO,OAAQ,OACRqqP,MAAOlnC,EAAM6tG,EAAS76E,EAAYs5E,EAAO,QACzC//C,UAAWvsD,EAAM7lI,EAAS64J,EAAY,CACpCi2D,OAAO,OAGXpnN,EAAKisO,GAAW,SAAUl/U,GACxB09U,EAAM5hV,IAAI,IAAIu2O,EAAQuF,KAAK,CACzB53O,KAAMA,EACNmH,MAAO,CACL0tB,QAAS,GAEX2rO,WAAW,EACX91G,QAAQ,EACR4kG,WAAW,EACXgpB,MAAOlnC,EAAM6tG,EAAS76E,EAAYs5E,EAAO19U,GACzC29R,UAAWvsD,EAAM7lI,EAAS64J,EAAY,CACpCi2D,OAAO,MAGb,IACOqjB,CACT,CAEA,SAAS0B,EAAeh7E,EAAYs5E,EAAO2B,EAAYpjB,GACrD,IAAI3mS,EAAY2mS,EAAYrC,WAAWtkS,WAAa,EAChD+tR,EAAapsE,EAAQ3hN,EAAWymT,GAChC1gU,EAAIgkU,EAAW,GAAG,GAClBnlT,EAAImlT,EAAW,GAAG,GAClBr9S,EAAK3mB,EAAIia,EAAY,EACrB2M,EAAK/H,EAAI5E,EAAY,EACrBkQ,EAAK65S,EAAW,GAAG,GACnB55S,EAAK45S,EAAW,GAAG,GACnBC,EAAM95S,EAAK69Q,EAAa/tR,EAAY,EACpCiqT,EAAM95S,EAAK49Q,EAAa/tR,EAAY,EACpCyO,EAAQyB,EAAKnqB,EACb2oB,EAASyB,EAAKvL,EACdslT,EAASz7S,EAAQzO,EACjBmqT,EAAUz7S,EAAS1O,EACvBoqT,EAAgBt7E,EAAYs5E,EAAO,OAAQriU,EAAG6e,EAAG6J,EAAOC,GAEpDi4R,EAAYH,gBACd4jB,EAAgBt7E,EAAYs5E,EAAO,IAAK17S,EAAIC,EAAIohR,EAAYo8B,GAC5DC,EAAgBt7E,EAAYs5E,EAAO,IAAK4B,EAAKr9S,EAAIohR,EAAYo8B,GAC7DC,EAAgBt7E,EAAYs5E,EAAO,IAAK17S,EAAIC,EAAIu9S,EAAQn8B,GACxDq8B,EAAgBt7E,EAAYs5E,EAAO,IAAK17S,EAAIu9S,EAAKC,EAAQn8B,GACzDq8B,EAAgBt7E,EAAYs5E,EAAO,KAAM17S,EAAIC,EAAIohR,EAAYA,GAC7Dq8B,EAAgBt7E,EAAYs5E,EAAO,KAAM4B,EAAKr9S,EAAIohR,EAAYA,GAC9Dq8B,EAAgBt7E,EAAYs5E,EAAO,KAAM17S,EAAIu9S,EAAKl8B,EAAYA,GAC9Dq8B,EAAgBt7E,EAAYs5E,EAAO,KAAM4B,EAAKC,EAAKl8B,EAAYA,GAEnE,CAEA,SAASjlE,EAAagmB,EAAYs5E,GAChC,IAAIzhB,EAAcyhB,EAAME,cACpB9hB,EAAgBG,EAAYH,cAC5B6jB,EAASjC,EAAMnqF,QAAQ,GAC3BosF,EAAOnqG,SAAS2pG,EAAUljB,IAC1B0jB,EAAOvtT,KAAK,CACVs4H,QAASoxK,EACT7tS,OAAQ6tS,EAAgB,OAAS,YAEnC7oN,EAAK,CAAC,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,OAAO,SAAUjzG,GAC3D,IAAI7C,EAAKugV,EAAM5oE,YAAY90Q,GACvB4/U,EAAYC,EAAmBz7E,EAAYpkQ,GAC/C7C,GAAMA,EAAGi1B,KAAK,CACZs4H,QAASoxK,EACTxsE,WAAYwsE,EACZ7tS,OAAQ6tS,EAAgBogB,EAAW0D,GAAa,UAAY,MAEhE,GACF,CAEA,SAASF,EAAgBt7E,EAAYs5E,EAAO19U,EAAMqb,EAAG6e,EAAG90B,EAAG/I,GACzD,IAAIc,EAAKugV,EAAM5oE,YAAY90Q,GAC3B7C,GAAMA,EAAGu4O,SAASoqG,EAAaC,EAAY37E,EAAYs5E,EAAO,CAAC,CAACriU,EAAG6e,GAAI,CAAC7e,EAAIjW,EAAG80B,EAAI79B,MACrF,CAEA,SAAS8iV,EAAUljB,GACjB,OAAOpuF,EAAO94I,SAAS,CACrBksJ,eAAe,GACdg7E,EAAYrC,WACjB,CAEA,SAASomB,EAAgB3kU,EAAG6e,EAAGsL,EAAIC,GACjC,IAAIt7B,EAAM,CAAC+sO,EAAQ77N,EAAGmqB,GAAK0xM,EAAQh9M,EAAGuL,IAClCv7B,EAAM,CAAC+sO,EAAQ57N,EAAGmqB,GAAKyxM,EAAQ/8M,EAAGuL,IACtC,MAAO,CAAC,CAACt7B,EAAI,GAAID,EAAI,IACrB,CAACC,EAAI,GAAID,EAAI,IAEf,CAEA,SAASmvE,EAAa+qL,GACpB,OAAO/xB,EAAQh5J,aAAa+qL,EAAW3tN,MACzC,CAEA,SAASopS,EAAmBz7E,EAAY67E,GACtC,GAAIA,EAAe1iV,OAAS,EAAG,CAC7B0iV,EAAiBA,EAAephV,MAAM,IACtC,IAAI+gV,EAAY,CAACC,EAAmBz7E,EAAY67E,EAAe,IAAKJ,EAAmBz7E,EAAY67E,EAAe,KAElH,OADkB,MAAjBL,EAAU,IAA+B,MAAjBA,EAAU,KAAeA,EAAUrpT,UACrDqpT,EAAUv5U,KAAK,GACxB,CACE,IAAI4e,EAAM,CACR7f,EAAG,OACH5D,EAAG,QACH8Z,EAAG,MACHzR,EAAG,UAEDq2U,EAAa,CACft0S,KAAM,IACNC,MAAO,IACPC,IAAK,IACLC,OAAQ,KAEN6zS,EAAYvtG,EAAQyhG,mBAAmB7uT,EAAIg7T,GAAiB5mQ,EAAa+qL,IAC7E,OAAO87E,EAAWN,EAEtB,CAEA,SAASO,EAAUC,EAAaC,EAAej8E,EAAYs5E,EAAO19U,EAAMkhE,EAAIC,EAAI3/D,GAC9E,IAAIy6T,EAAcyhB,EAAME,cACpB0C,EAAYF,EAAYnkB,EAAY9pP,OACpCouQ,EAAaC,EAAap8E,EAAYljM,EAAIC,GAC9C8xC,EAAKjzG,EAAKnB,MAAM,KAAK,SAAU4hV,GAC7B,IAAI/rM,EAAMunM,EAAcwE,GACxBH,EAAU5rM,EAAI,IAAIA,EAAI,KAAO6rM,EAAW7rM,EAAI,GAC9C,IACAunL,EAAY9pP,MAAQkuQ,EAAcL,EAAgBM,EAAU,GAAG,GAAIA,EAAU,GAAG,GAAIA,EAAU,GAAG,GAAIA,EAAU,GAAG,KAClHnC,EAAyB/5E,EAAYs5E,GACrCnyO,EAAQ64J,EAAY,CAClBi2D,OAAO,GAEX,CAEA,SAASqmB,EAAat8E,EAAYs5E,EAAOx8Q,EAAIC,EAAI3/D,GAC/C,IAAI2wE,EAAQurQ,EAAME,cAAczrQ,MAC5BouQ,EAAaC,EAAap8E,EAAYljM,EAAIC,GAC9C8xC,EAAK9gC,GAAO,SAAU5mE,GACpBA,EAAM,IAAMg1U,EAAW,GACvBh1U,EAAM,IAAMg1U,EAAW,EACzB,IACApC,EAAyB/5E,EAAYs5E,GACrCnyO,EAAQ64J,EAAY,CAClBi2D,OAAO,GAEX,CAEA,SAASmmB,EAAap8E,EAAYljM,EAAIC,GACpC,IAAIivO,EAAYhsC,EAAW3tN,MACvBkqS,EAASvwC,EAAUgH,sBAAsBl2O,EAAIC,GAC7Cy/Q,EAAYxwC,EAAUgH,sBAAsB,EAAG,GACnD,MAAO,CAACupC,EAAO,GAAKC,EAAU,GAAID,EAAO,GAAKC,EAAU,GAC1D,CAEA,SAASb,EAAY37E,EAAYs5E,EAAOljU,GACtC,IAAI8jU,EAAQG,EAAgBr6E,EAAYs5E,GACxC,OAAOY,IAAmB,IAAVA,EAAiBA,EAAM1nG,SAASp8N,EAAM4pP,EAAW2uD,YAAcllF,EAAOh+M,MAAMrV,EAC9F,CAEA,SAASslU,EAAa74T,GACpB,IAAI45T,EAAO3pG,EAAQjwN,EAAO,GAAG,GAAIA,EAAO,GAAG,IACvC65T,EAAO5pG,EAAQjwN,EAAO,GAAG,GAAIA,EAAO,GAAG,IACvC85T,EAAO9pG,EAAQhwN,EAAO,GAAG,GAAIA,EAAO,GAAG,IACvC+5T,EAAO/pG,EAAQhwN,EAAO,GAAG,GAAIA,EAAO,GAAG,IAC3C,MAAO,CACL5L,EAAGwlU,EACH3mT,EAAG4mT,EACH/8S,MAAOg9S,EAAOF,EACd78S,OAAQg9S,EAAOF,EAEnB,CAEA,SAASG,EAAY78E,EAAY5iQ,EAAG68U,GAClC,GACCj6E,EAAWo4E,aAGT0E,GAAgB98E,EAAY5iQ,GAJ/B,CAQA,IAAIksR,EAAKtpB,EAAWm4E,IAChBoC,EAASv6E,EAAWw4E,QACpBuE,EAAY/C,EAAgBh6E,EAAY5iQ,EAAG68U,GAE/C,IAAKj6E,EAAWk9C,UACd,IAAK,IAAI/hT,EAAI,EAAGA,EAAIo/U,EAAOphV,OAAQgC,IAAK,CACtC,IAAI08T,EAAc0iB,EAAOp/U,GAAGq+U,cAE5B,GAAIuD,KAA4B,IAAdA,GAAsBllB,EAAY5C,UAAY8nB,EAAU9nB,UAAYskB,GAAe1hB,EAAYjnE,WAAWrL,QAAQg1F,EAAOp/U,GAAI8+U,EAAiB,GAAIA,EAAiB,IAEnL,MAEJ,CAGF8C,GAAazzD,EAAG0zD,eAAe,YAjB/B,CAkBF,CAEA,SAASnpP,GAAez2F,GACtB,IAAI6/U,EAAO7/U,EAAEod,MACbyiU,EAAKppP,gBAAkBopP,EAAKppP,gBAC9B,CAEA,SAASqpP,GAAiB5D,EAAOriU,EAAG6e,GAClC,OAAOwjT,EAAM5oE,YAAY,QAAQnrB,QAAQtuO,EAAG6e,EAC9C,CAEA,SAASqnT,GAAmBn9E,EAAY5iQ,EAAG68U,EAAkBhkB,GAC3D,IAGImnB,EAHAzD,EAAgB35E,EAAWy4E,eAC3ByB,EAAQl6E,EAAW04E,eACnB2E,EAAkBr9E,EAAWq4E,aAKjC,GAFAr4E,EAAWu4E,OAAOn9U,KAAK6+U,EAAiB3gV,SAEpCmhV,EAAgBz6E,IAAe25E,EAAe,CAChD,GAAIO,IAAUP,EAAe,CACG,WAA9B0D,EAAgB5lB,WAA0B6iB,EAAYt6E,GACtD,IAAI63D,EAAcpuF,EAAOh+M,MAAM4xT,GAC/BxlB,EAAYjnE,UAAY0sF,GAAmBzlB,EAAYjnE,UAAWspF,GAClEriB,EAAY5C,SAAoB,IAAVilB,EAAiB,KAAOA,EAAMjlB,QACpD0kB,EAAgB35E,EAAWy4E,eAAiBY,EAAYr5E,EAAY63D,GAEpE73D,EAAWw4E,QAAQp9U,KAAKu+U,EAC1B,CAEA,GAAIA,EAAe,CACjB,IAAIC,EAAgBL,GAAe+D,GAAmBt9E,EAAWo4E,WAAY8B,IACzEqD,EAAmB5D,EAAcH,cACrC+D,EAAiBxvQ,MAAQ6rQ,EAAc4D,iBAAiB7B,EAAY37E,EAAY25E,EAAe35E,EAAWu4E,SAEtGtiB,IACFyjB,EAAY15E,EAAY25E,GACxBC,EAAc5/F,aAAagmB,EAAY25E,IAGzCG,EAAiB95E,EAAY25E,GAC7ByD,EAAc,CACZnnB,MAAOA,EAEX,CACF,MAAWA,GAAuC,WAA9BonB,EAAgB5lB,WAA0B4lB,EAAgB5nB,eAMxEukB,EAAgBh6E,EAAY5iQ,EAAG68U,IAAqBK,EAAYt6E,KAClEo9E,EAAc,CACZnnB,MAAOA,EACPR,eAAe,IAKrB,OAAO2nB,CACT,CAEA,SAASE,GAAmB1sF,EAAWspF,GACrC,MAAkB,SAAdtpF,EACKspF,EAAMuD,iBAGR7sF,CACT,CAljBAsjE,EAAgBx1T,UAAY,CAC1B2F,YAAa6vT,EAmBbqB,YAAa,SAAUsC,GAGrB,OAFA1gU,KAAKihV,YAAcc,EAAe/hV,MAClC0gU,EAAYjnE,WAAamoF,EAAc5hV,KAAM0gU,GACtC1gU,IACT,EAYA69T,UAAW,SAAU0oB,GACnB,GAAIA,GAAaA,EAAUvkV,OAAQ,CACjC,IAAIghV,EAAShjV,KAAKmhV,QAAU,CAAC,EAC7B7uG,EAAO56H,KAAK6uO,GAAW,SAAUA,GAC/BvD,EAAOuD,EAAUzoB,SAAWxrF,EAAOh+M,MAAMiyT,EAC3C,GACF,MACEvmV,KAAKmhV,QAAU,KAGjB,OAAOnhV,IACT,EAMAkvL,MAAO,SAAUrsF,GACfA,EAAMA,GAAO,CAAC,EACd7iG,KAAKwhV,iBAAmB3+O,EAAI+6N,gBAC5B,IAAI/oB,EAAY70S,KAAKk7C,MAUrB,OARAl7C,KAAKghV,IAAIzgV,IAAIs0S,GAEbA,EAAUh+Q,KAAK,CACb/E,SAAU+wE,EAAI/wE,UAAY,CAAC,EAAG,GAC9BmiI,SAAUpxD,EAAIoxD,UAAY,EAC1B59H,MAAOwsE,EAAIxsE,OAAS,CAAC,EAAG,KAE1Br2B,KAAKw3T,WAAa3iB,EAAUgmB,oBACrB76T,IACT,EACAwmV,UAAW,SAAU7tQ,EAAI54E,GACvB23G,EAAK13G,KAAKqhV,QAAS1oQ,EAAI54E,EACzB,EAeAw+T,aAAc,SAAUkoB,GACtBA,EAAkBn0G,EAAO5oN,IAAI+8T,GAAiB,SAAU/lB,GACtD,OAAOpuF,EAAOt0H,MAAMs0H,EAAOh+M,MAAMwsT,GAAoBpgB,GAAa,EACpE,IACA,IAAIgmB,EAAc,kBACdC,EAAY3mV,KAAKqhV,QACjBuF,EAAY5mV,KAAKqhV,QAAU,GAC3Bx4E,EAAa7oQ,KACbwiV,EAAgBxiV,KAAKshV,eAEzB,OADA,IAAI5vF,EAAWi1F,EAAWF,EAAiBI,EAAWxvL,GAAQ92J,IAAIumV,GAAa9vT,OAAO8vT,GAAalqQ,OAAOA,GAAQ2/D,UAC3Gv8I,KAEP,SAASq3J,EAAOqpK,EAAaz+T,GAC3B,OAA0B,MAAlBy+T,EAAYl3T,GAAak3T,EAAYl3T,GAAKk9U,EAAczkV,GAAS,IAAMy+T,EAAYjnE,SAC7F,CAEA,SAASotF,EAAU1E,EAAOlgV,GACxB,OAAOo1J,EAAO8qL,EAAME,cAAepgV,EACrC,CAEA,SAAS6kV,EAAYpsG,EAAUC,GAC7B,IAAIosG,EAAiBN,EAAgB/rG,GAGrC,GAAgB,MAAZC,GAAoBgsG,EAAUhsG,KAAc6nG,EAC9CoE,EAAUlsG,GAAYisG,EAAUhsG,OAC3B,CACL,IAAIwnG,EAAQyE,EAAUlsG,GAAwB,MAAZC,GAAoBgsG,EAAUhsG,GAAU0nG,cAAgB0E,EAAgBJ,EAAUhsG,IAAa4nG,EAAY15E,EAAYq5E,EAAYr5E,EAAYk+E,IACjLnE,EAAyB/5E,EAAYs5E,EACvC,CACF,CAEA,SAASvlQ,EAAO+9J,GACVgsG,EAAUhsG,KAAc6nG,GAC1B35E,EAAW3tN,MAAM0hC,OAAO+pQ,EAAUhsG,GAEtC,CACF,EACAxrD,QAAS,WAOP,OANAnvL,KAAKo+T,aAAY,GAEjB+kB,EAAYnjV,MAEZA,KAAKghV,IAAIpkQ,OAAO58E,KAAKk7C,OAEdl7C,IACT,EACAw7O,QAAS,WACPx7O,KAAKmvL,UACLnvL,KAAKg8E,KACP,GAEFs2J,EAAO0W,MAAM+zE,EAAiBojB,GA2a9B,IAAIwB,GAAkB,CACpBqF,UAAW,SAAU/gV,GACnB,GAAIjG,KAAK+lT,UAGPkhC,GAAcjnV,KAAMiG,QACf,IAAKA,EAAEP,SAAWO,EAAEP,OAAOu/P,UAAW,CAC3CvoK,GAAez2F,GACf,IAAI68U,EAAmB9iV,KAAKk7C,MAAM2gQ,sBAAsB51S,EAAE2rB,QAAS3rB,EAAE4rB,SACrE7xB,KAAKshV,eAAiB,KACtB,IAAIyB,EAAQ/iV,KAAKuhV,eAAiBsB,EAAgB7iV,KAAMiG,EAAG68U,GAEvDC,IACF/iV,KAAK+lT,WAAY,EACjB/lT,KAAKohV,OAAS,CAAC0B,EAAiB3gV,SAEpC,CACF,EACA+kV,UAAW,SAAUjhV,GACnB,IAAI6Z,EAAI7Z,EAAE2rB,QACN+M,EAAI14B,EAAE4rB,QACNixT,EAAmB9iV,KAAKk7C,MAAM2gQ,sBAAsB/7R,EAAG6e,GAG3D,GAFA+mT,EAAY1lV,KAAMiG,EAAG68U,GAEjB9iV,KAAK+lT,UAAW,CAClBrpN,GAAez2F,GACf,IAAIggV,EAAcD,GAAmBhmV,KAAMiG,EAAG68U,GAAkB,GAChEmD,GAAej2O,EAAQhwG,KAAMimV,EAC/B,CACF,EACAkB,QAAS,SAAUlhV,GACjBghV,GAAcjnV,KAAMiG,EACtB,GAGF,SAASghV,GAAcp+E,EAAY5iQ,GACjC,GAAI4iQ,EAAWk9C,UAAW,CACxBrpN,GAAez2F,GACf,IAAI6Z,EAAI7Z,EAAE2rB,QACN+M,EAAI14B,EAAE4rB,QACNixT,EAAmBj6E,EAAW3tN,MAAM2gQ,sBAAsB/7R,EAAG6e,GAC7DsnT,EAAcD,GAAmBn9E,EAAY5iQ,EAAG68U,GAAkB,GACtEj6E,EAAWk9C,WAAY,EACvBl9C,EAAWu4E,OAAS,GACpBv4E,EAAWy4E,eAAiB,KAE5B2E,GAAej2O,EAAQ64J,EAAYo9E,EACrC,CACF,CAEA,SAASN,GAAgB98E,EAAY/oP,EAAG6e,GACtC,IAAIwzP,EAAKtpB,EAAWm4E,IACpB,OAAOlhU,EAAI,GAAKA,EAAIqyQ,EAAG9vC,YAAc1jN,EAAI,GAAKA,EAAIwzP,EAAG7vC,WACvD,CAOA,IAAI8/F,GAAiB,CACnB1f,MAAO0kB,GAAgB,GACvBxkB,MAAOwkB,GAAgB,GACvBnqT,KAAM,CACJilT,YAAa,SAAUr5E,EAAY63D,GACjC,OAAO+iB,EAAoB5tG,EAAM+uG,GAAW,SAAUhuQ,GACpD,OAAOA,CACT,IAAG,SAAUA,GACX,OAAOA,CACT,IAAIiyL,EAAY63D,EAAa,CAAC,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,MACtE,EACA2lB,iBAAkB,SAAUgB,GAC1B,IAAIx9F,EAAO25F,EAAa6D,GACxB,OAAO5C,EAAgB56F,EAAK,GAAG,GAAIA,EAAK,GAAG,GAAIA,EAAK,GAAG,GAAIA,EAAK,GAAG,GACrE,EACA84F,iBAAkB,SAAU95E,EAAYs5E,EAAO2B,EAAYpjB,GACzDmjB,EAAeh7E,EAAYs5E,EAAO2B,EAAYpjB,EAChD,EACA79E,aAAcA,EACduL,QAAS23F,IAEXl/S,QAAS,CACPq7S,YAAa,SAAUr5E,EAAY63D,GACjC,IAAIyhB,EAAQ,IAAIrrG,EAAQM,MAQxB,OALA+qG,EAAM5hV,IAAI,IAAIu2O,EAAQglB,SAAS,CAC7Br3P,KAAM,OACNmH,MAAOg4U,EAAUljB,GACjBvxK,QAAQ,KAEHgzL,CACT,EACAkE,iBAAkB,SAAUgB,GAC1B,OAAOA,CACT,EACA9E,YAAa,SAAU15E,EAAYs5E,GACjCA,EAAMvlQ,OAAOulQ,EAAMnqF,QAAQ,IAE3BmqF,EAAM5hV,IAAI,IAAIu2O,EAAQ+kB,QAAQ,CAC5Bp3P,KAAM,OACNwgQ,WAAW,EACX8X,MAAOlnC,EAAMsvG,EAAct8E,EAAYs5E,GACvC//C,UAAWvsD,EAAM7lI,EAAS64J,EAAY,CACpCi2D,OAAO,MAGb,EACA6jB,iBAAkB,SAAU95E,EAAYs5E,EAAO2B,EAAYpjB,GACzDyhB,EAAMnqF,QAAQ,GAAG7d,SAAS,CACxBzuN,OAAQ84T,EAAY37E,EAAYs5E,EAAO2B,IAE3C,EACAjhG,aAAcA,EACduL,QAAS23F,KAIb,SAASqB,GAAgBtkB,GACvB,MAAO,CACLof,YAAa,SAAUr5E,EAAY63D,GACjC,OAAO+iB,EAAoB5tG,EAAM+uG,GAAW,SAAUhuQ,GACpD,IAAImuQ,EAAY,CAACnuQ,EAAO,CAAC,EAAG,MAE5B,OADAksP,GAAWiiB,EAAU/pT,UACd+pT,CACT,IAAG,SAAUA,GACX,OAAOA,EAAUjiB,EACnB,IAAIj6D,EAAY63D,EAAa,CAAC,CAAC,IAAK,KAAM,CAAC,IAAK,MAAMoC,GACxD,EACAujB,iBAAkB,SAAUgB,GAC1B,IAAIx9F,EAAO25F,EAAa6D,GACpBz4U,EAAM+sO,EAAQkO,EAAK,GAAGi5E,GAAUj5E,EAAK,GAAGi5E,IACxCn0T,EAAM+sO,EAAQmO,EAAK,GAAGi5E,GAAUj5E,EAAK,GAAGi5E,IAC5C,MAAO,CAACl0T,EAAKD,EACf,EACAg0U,iBAAkB,SAAU95E,EAAYs5E,EAAO2B,EAAYpjB,GACzD,IAAI3X,EAEAg6B,EAAQG,EAAgBr6E,EAAYs5E,GAExC,IAAc,IAAVY,GAAkBA,EAAM7kB,0BAC1BnV,EAAcg6B,EAAM7kB,0BAA0B4E,EAASj6D,EAAW2uD,gBAC7D,CACL,IAAIrlC,EAAKtpB,EAAWm4E,IACpBj4B,EAAc,CAAC,EAAG,CAAC52B,EAAG9vC,WAAY8vC,EAAG7vC,aAAa,EAAIwgF,GACxD,CAEA,IAAIiiB,EAAY,CAACjB,EAAY/6B,GAC7B+Z,GAAWiiB,EAAU/pT,UACrB6oT,EAAeh7E,EAAYs5E,EAAO4C,EAAWrkB,EAC/C,EACA79E,aAAcA,EACduL,QAAS23F,GAEb,CAEA,IAAIt4T,GAAWsvS,EACf57T,EAAOD,QAAUusB,E,iCCt4BjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB8pN,GAFU7+L,EAAQojM,QAETruN,EAAQ,QAEjBsuN,EAAUtuN,EAAQ,OAElB6+P,EAAY7+P,EAAQ,OAEpBw0S,EAAcx0S,EAAQ,OAoBtBkvF,EAAO46H,EAAO56H,KACdrgG,EAAUi7N,EAAOj7N,QACjBw+N,EAAQvD,EAAOuD,MACfyxG,EAAiB,CAAC,cAAe,eAGjCC,EAA4B,CAAC,OAAQ,QAAS,QAAS,MAAO,QAAS,QAAS,aAAc,YAAa,QA4D/G,SAAStkB,EAAmBl4R,EAAQ2nM,EAAS7vI,GAK3C,IAAI2kP,EAAiBxnV,KAAKynV,gBAAkB,GACxCltN,EAAO,CAAC,EACRmtN,EAAYC,EAAYj1G,EAAS3nM,GACrC2sE,EAAKkwO,GAAoB,SAAUC,EAASrjV,KACrCq+F,IAAQA,EAAIm7D,SAAW3mJ,EAAQwrF,EAAIm7D,QAASx5J,IAAS,IACxDqjV,EAAQH,EAAWF,EAAgBjtN,EAEvC,GACF,CAEA,IAAI5xH,EAAQs6T,EAAmB17T,UA6G/B,SAASugV,EAAaliB,GAEpB,OADAA,EAAO,GAAKA,EAAO,IAAMA,EAAO5qS,UACzB4qS,CACT,CAEA,SAAS+hB,EAAYj1G,EAAS3nM,GAC5B,OAAOs8O,EAAUsgE,YAAYj1G,EAAS3nM,EAAQ,CAC5Cg9S,iBAAkBR,GAEtB,CApHA5+U,EAAM+4T,gBAAkB,SAAUnqO,EAAOm7I,GACvC1yO,KAAKgoV,kBAAkBzwP,EAAOm7I,GAAS,SAAUliN,EAAMy3T,EAAYp1G,GAGjE,IAFCriN,EAAK03T,cAAgB13T,EAAK03T,YAAc,KAAKjkV,KAAKgkV,IAE9Cz3T,EAAKy3T,WAAY,CACpBz3T,EAAKy3T,WAAaA,EAMlB,IAAIvkV,EAASykV,EAAa33T,EAAKipO,WAAW,EAAG5mB,EAAUo1G,GACvDz3T,EAAK43T,cAAgB,CACnBj7T,OAAQk7T,EAAc73T,EAAKipO,WAAW/1P,EAAO0F,OAAQonB,EAAKomD,MAAO,CAAC,EAAG,IACrE0xQ,SAAU5kV,EAAO4kV,SAErB,CACF,GACF,EAEA3/U,EAAMq/U,kBAAoB,SAAUzwP,EAAOm7I,EAAS/5J,GAClD++B,EAAKngB,GAAO,SAAU/mE,GACpB,IAAI25Q,EAAanqS,KAAKuoV,eAAe/3T,EAAMkiN,GAEvCy3D,IAA6B,IAAfA,GAChB73D,EAAO56H,KAAKyyL,EAAWq+C,YAAY,SAAU31G,GAC3C,IAAInvO,EAASykV,EAAa33T,EAAKipO,WAAW,EAAG5mB,EAAUriN,EAAKomD,OAC5D+B,EAAGnoD,EAAM9sB,EAAO0F,OAAQypO,EAAUH,EACpC,GAEJ,GAAG1yO,KACL,EAEA2I,EAAM46T,eAAiB,SAAUhsO,EAAOm7I,GACtCh7H,EAAKngB,GAAO,SAAU/mE,GACpB,IAAI25Q,EAAanqS,KAAKuoV,eAAe/3T,EAAMkiN,GAG3C,GAFAliN,EAAKomD,MAAQpmD,EAAKomD,OAAS,GAEvBuzN,IAA6B,IAAfA,EAAqB,CACrC35Q,EAAKstS,QAAU3zB,EAAW2zB,QAO1B,IAAIp6T,EAASykV,EAAa33T,EAAKipO,WAAW,EAAG0wC,EAAWt3D,SAAUriN,EAAKy3T,YACnEQ,EAAcj4T,EAAK43T,cACvB53T,EAAKomD,MAAQ6xQ,EAAcJ,EAAc73T,EAAKipO,WAAW/1P,EAAO0F,OAAQq/U,EAAYt7T,OAAQu7T,EAAUhlV,EAAO4kV,SAAUG,EAAYH,WAAa5kV,EAAO0F,MACzJ,CACF,GAAGpJ,KACL,EAEA2I,EAAMk5T,cAAgB,SAAUl3N,EAAKg+O,GACnC,OAAOr2G,EAAO5oN,IAAI1pB,KAAKynV,iBAAiB,SAAUt9C,GAChD,IAAIltQ,EAAOktQ,EAAWy+C,eACtB,MAAO,CACL9qB,QAAS3zB,EAAW2zB,QACpBwoB,iBAAkBqC,GAAuBA,EAAoBx+C,GAC7D9uD,SAAU2hF,EAAYe,sBAAsB9gS,GAC5C+gS,iBAAkBhB,EAAYiB,yBAAyBhhS,EAAM0tE,EAAKw/L,EAAW+jB,eAC7EgQ,0BAA2BlB,EAAYmB,2BAA2BlhS,GAEtE,GACF,EAEAt0B,EAAM48T,cAAgB,SAAU/0S,EAAMojN,EAAalB,GAGjD,IAAIy3D,EAAanqS,KAAKuoV,eAAe/3T,EAAMkiN,GAC3C,OAAsB,IAAfy3D,GAAuBA,GAAc9yR,EAAQ8yR,EAAWq+C,WAAY50G,EAAYS,mBAAqB,CAC9G,EAYA1rO,EAAM4/U,eAAiB,SAAU/3T,EAAMkiN,GAIrC,IAHA,IAAI80G,EAAiBxnV,KAAKynV,gBACtBC,EAAYC,EAAYj1G,EAASliN,GAE5BxsB,EAAI,EAAGA,EAAIwjV,EAAexlV,OAAQgC,IAAK,CAC9C,IAAImmS,EAAaq9C,EAAexjV,GAC5B6kV,EAAcr4T,EAAKstS,QAEvB,GAAI+qB,GACF,GAAI1+C,EAAW2zB,UAAY+qB,EACzB,OAAO1+C,OAGT,IAASnmS,EAAI,EAAGA,EAAI8kV,EAAmB9mV,OAAQgC,IAC7C,GAAI8kV,EAAmB9kV,GAAG0jV,EAAWv9C,GACnC,OAAOA,CAIf,CAEA,OAAO,CACT,EAaA,IAAIy9C,EAAqB,CACvBz8S,KAAM,SAAUu8S,EAAWF,GACzB,IAAIuB,EAAcrB,EAAUqB,YACxBC,EAActB,EAAUsB,YACxBC,EAAavB,EAAUuB,WAEvBC,EAAe52G,EAAO6hD,gBACtBg1D,EAAW,CAAC,EACZC,EAAW,CAAC,GAEXL,GAAgBC,GAAgBC,KAIrCvxO,EAAKqxO,GAAa,SAAU5nE,GAC1B,IAAIw7C,EAAYx7C,EAAU/1O,KAAKD,KAAKomN,MACpC23F,EAAa12U,IAAImqT,EAAUnzT,GAAImzT,GAC/BwsB,EAASxsB,EAAUnzT,KAAM,CAC3B,IACAkuG,EAAKsxO,GAAa,SAAU7nE,GAC1B,IAAIw7C,EAAYx7C,EAAU/1O,KAAKD,KAAKomN,MACpC23F,EAAa12U,IAAImqT,EAAUnzT,GAAImzT,GAC/BysB,EAASzsB,EAAUnzT,KAAM,CAC3B,IACAkuG,EAAKuxO,GAAY,SAAUtsB,GACzBusB,EAAa12U,IAAImqT,EAAUnzT,GAAImzT,GAC/BwsB,EAASxsB,EAAUnzT,KAAM,EACzB4/U,EAASzsB,EAAUnzT,KAAM,CAC3B,IACA0/U,EAAaxxO,MAAK,SAAUilN,GAC1B,IAAIxxR,EAAOwxR,EAAUtoF,iBACjBg1G,EAAa,GACjB3xO,EAAKvsE,EAAKm+S,iBAAiB,SAAUpnG,EAAWjgP,IAC1CoV,EAAQ0xU,EAAa7mG,EAAUivB,QAAQ,KAAK5f,QAAU,GAAKl6O,EAAQ2xU,EAAa9mG,EAAUivB,QAAQ,KAAK5f,QAAU,IACnH83F,EAAWplV,KAAKi+O,EAEpB,IACAslG,EAAevjV,KAAK,CAClB65T,QAAS,SAAWnB,EAAUnzT,GAC9BmzT,UAAWA,EACXzO,cAAeyO,EAEf9pF,SAAUw2G,EAAW,GACrBb,WAAYa,EACZT,aAAcW,EAAiBp+S,KAC/Bq+S,cAAeL,EAASxsB,EAAUnzT,IAClCigV,cAAeL,EAASzsB,EAAUnzT,KAEtC,IACF,EACA4qO,IAAK,SAAUszG,EAAWF,GACxB9vO,EAAKgwO,EAAUgC,WAAW,SAAUxN,GAClC,IAAIrpG,EAAWqpG,EAAS7nG,iBACxBmzG,EAAevjV,KAAK,CAClB65T,QAAS,QAAUoe,EAAS1yU,GAC5B0yU,SAAUA,EACVhuB,cAAeguB,EACfrpG,SAAUA,EACV21G,WAAY,CAAC31G,GACb+1G,aAAcW,EAAiBn1G,KAEnC,GACF,GAEE00G,EAAqB,CACzB,SAAUpB,EAAWv9C,GACnB,IAAIzkB,EAAagiE,EAAUhiE,WACvBE,EAAa8hE,EAAU9hE,WACvB+2C,EAAY+qB,EAAU/qB,UAG1B,OAFCA,GAAaj3C,IAAei3C,EAAYj3C,EAAWt6O,KAAKD,KAAKomN,QAC7DorE,GAAa/2C,IAAe+2C,EAAY/2C,EAAWx6O,KAAKD,KAAKomN,OACvDorE,GAAaA,IAAcxyB,EAAWwyB,SAC/C,EACA,SAAU+qB,EAAWv9C,GACnB,IAAI+xC,EAAWwL,EAAUxL,SACzB,OAAOA,GAAYA,IAAa/xC,EAAW+xC,QAC7C,GACIqN,EAAmB,CACrBp+S,KAAM,WAEJ,OAAOnrC,KAAK6yO,SAAS1nM,KAAKu0M,UAAUprN,OACtC,EACA8/M,IAAK,WACH,IAAIvB,EAAW7yO,KAAK6yO,SAChB51M,EAAO41M,EAASm2B,kBAAkB10O,QAGtC,OADA2I,EAAKgsO,eAAenyB,EAAQh5J,aAAa+0J,IAClC51M,CACT,GAEEkrT,EAAe,CACjBzlB,MAAO7sF,EAAM8zG,EAAa,GAC1B/mB,MAAO/sF,EAAM8zG,EAAa,GAC1B1sT,KAAM,SAAUu8F,EAAIq5G,EAAU+2G,GAC5B,IAAIC,EAAWh3G,EAASy0G,EAAe9tN,IAAK,CAACowN,EAAkB,GAAG,GAAIA,EAAkB,GAAG,KACvFE,EAAWj3G,EAASy0G,EAAe9tN,IAAK,CAACowN,EAAkB,GAAG,GAAIA,EAAkB,GAAG,KACvFxgV,EAAS,CAAC0+U,EAAa,CAAC+B,EAAS,GAAIC,EAAS,KAAMhC,EAAa,CAAC+B,EAAS,GAAIC,EAAS,MAC5F,MAAO,CACL1gV,OAAQA,EACRk/U,SAAUl/U,EAEd,EACAy9B,QAAS,SAAU2yF,EAAIq5G,EAAU+2G,GAC/B,IAAItB,EAAW,CAAC,CAACz1P,KAAWA,KAAW,CAACA,KAAWA,MAC/CzpF,EAASkpO,EAAO5oN,IAAIkgU,GAAmB,SAAUpkU,GACnD,IAAIq4B,EAAIg1L,EAASy0G,EAAe9tN,IAAKh0G,GAKrC,OAJA8iU,EAAS,GAAG,GAAKniV,KAAKyI,IAAI05U,EAAS,GAAG,GAAIzqS,EAAE,IAC5CyqS,EAAS,GAAG,GAAKniV,KAAKyI,IAAI05U,EAAS,GAAG,GAAIzqS,EAAE,IAC5CyqS,EAAS,GAAG,GAAKniV,KAAKwI,IAAI25U,EAAS,GAAG,GAAIzqS,EAAE,IAC5CyqS,EAAS,GAAG,GAAKniV,KAAKwI,IAAI25U,EAAS,GAAG,GAAIzqS,EAAE,IACrCA,CACT,IACA,MAAO,CACLz0C,OAAQA,EACRk/U,SAAUA,EAEd,GAGF,SAASqB,EAAYI,EAAevwN,EAAIq5G,EAAU+2G,GAChD,IAAIx+S,EAAOynM,EAASs+B,QAAQ,CAAC,IAAK,KAAK44E,IACnC3gV,EAAS0+U,EAAax1G,EAAO5oN,IAAI,CAAC,EAAG,IAAI,SAAU1lB,GACrD,OAAOw1H,EAAKpuF,EAAKwzR,YAAYxzR,EAAK4+S,aAAaJ,EAAkB5lV,KAAOonC,EAAK44M,cAAc54M,EAAK64M,YAAY2lG,EAAkB5lV,IAChI,KACIskV,EAAW,GAGf,OAFAA,EAASyB,GAAiB3gV,EAC1Bk/U,EAAS,EAAIyB,GAAiB,CAACv+P,IAAKA,KAC7B,CACLpiF,OAAQA,EACRk/U,SAAUA,EAEd,CAEA,IAAID,EAAgB,CAClB3lB,MAAO7sF,EAAMo0G,EAAmB,GAChCrnB,MAAO/sF,EAAMo0G,EAAmB,GAChChtT,KAAM,SAAU7zB,EAAQ8gV,EAAOC,GAC7B,MAAO,CAAC,CAAC/gV,EAAO,GAAG,GAAK+gV,EAAO,GAAKD,EAAM,GAAG,GAAI9gV,EAAO,GAAG,GAAK+gV,EAAO,GAAKD,EAAM,GAAG,IAAK,CAAC9gV,EAAO,GAAG,GAAK+gV,EAAO,GAAKD,EAAM,GAAG,GAAI9gV,EAAO,GAAG,GAAK+gV,EAAO,GAAKD,EAAM,GAAG,IACzK,EACArjT,QAAS,SAAUz9B,EAAQ8gV,EAAOC,GAChC,OAAO73G,EAAO5oN,IAAItgB,GAAQ,SAAUoc,EAAM2hF,GACxC,MAAO,CAAC3hF,EAAK,GAAK2kU,EAAO,GAAKD,EAAM/iP,GAAK,GAAI3hF,EAAK,GAAK2kU,EAAO,GAAKD,EAAM/iP,GAAK,GAChF,GACF,GAGF,SAAS8iP,EAAkBF,EAAe3gV,EAAQ8gV,EAAOC,GACvD,MAAO,CAAC/gV,EAAO,GAAK+gV,EAAOJ,GAAiBG,EAAM,GAAI9gV,EAAO,GAAK+gV,EAAOJ,GAAiBG,EAAM,GAClG,CAIA,SAASxB,EAAU0B,EAAcC,GAC/B,IAAIC,EAAWC,EAAQH,GACnBI,EAAaD,EAAQF,GACrBF,EAAS,CAACG,EAAS,GAAKE,EAAW,GAAIF,EAAS,GAAKE,EAAW,IAGpE,OAFAz7U,MAAMo7U,EAAO,MAAQA,EAAO,GAAK,GACjCp7U,MAAMo7U,EAAO,MAAQA,EAAO,GAAK,GAC1BA,CACT,CAEA,SAASI,EAAQjC,GACf,OAAOA,EAAW,CAACA,EAAS,GAAG,GAAKA,EAAS,GAAG,GAAIA,EAAS,GAAG,GAAKA,EAAS,GAAG,IAAM,CAAC98P,IAAKA,IAC/F,CAEA,IAAI/9D,EAAWw1S,EACf9hU,EAAOD,QAAUusB,C,iCC7YjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB68O,EAAiB78O,EAAQ,OAEzB88O,EAAa98O,EAAQ,OAErB+8O,EAAgB/8O,EAAQ,OAExBg9O,EAAsBD,EAAcC,oBAEpC1uB,EAAUtuN,EAAQ,OAElBsrQ,EAAmBtrQ,EAAQ,OAE3BiiU,EAAajiU,EAAQ,MAErBkiU,EAASD,EAAWC,OAEpBC,EAAgBniU,EAAQ,OAoB5B,SAASoiU,EAAkBr5F,GACzB,IAAIhS,EAAYgS,EAAM/R,eAClBw2C,EAAYzkC,EAAMruP,IAAI,aAO1B,OAJiB,MAAb8yR,IACFz2C,EAAUx1N,KAAOisQ,GAGZz2C,CACT,CAEA,SAASsrG,EAAuBx0D,EAASy0D,EAAeC,EAAcpgP,EAAKqgP,GACzED,EAAa/uQ,IAAI,SACjB+uQ,EAAa/uQ,IAAI,aAEb8uQ,EAAc5nV,IAAI,kBACpB6nV,EAAatnR,GAAG,aAAa,WAC3B4yN,EAAQ40D,gBAAiB,CAC3B,IACAF,EAAatnR,GAAG,SAAS,SAAUx9D,GACjC,GAAKowR,EAAQ40D,eAAb,CAIA50D,EAAQ40D,gBAAiB,EACzB,IAAIrpV,EAAKqE,EAAEP,OAEX,OAAQ9D,EAAGspV,UACTtpV,EAAKA,EAAGzB,OAGV,GAAKyB,EAAL,CAIA,IAAI09G,EAAS,CACX96G,MAAkC,QAA3BsmV,EAAcp3G,SAAqB,MAAQ,OAAS,eAC3DrmE,MAAOilE,EAAO5oN,IAAI9nB,EAAGspV,WAAW,SAAUv2D,GACxC,MAAO,CACLlwR,KAAMkwR,EAAOlwR,KACb25D,KAAM4sR,EAASn9U,IAEnB,KAEFyxG,EAAOwrO,EAAcp3G,SAAW,MAAQo3G,EAActhV,GACtDmhG,EAAIi9J,eAAetoJ,GACnB6rO,EAAkBL,EAAeC,EAbjC,CAXA,CAyBF,IAEJ,CAEA,SAASI,EAAkBL,EAAeC,GAExCA,EAAax1E,WAAU,SAAU61E,GAC/B94G,EAAO56H,KAAK0zO,EAAcF,WAAW,SAAUv2D,GAC7Cy2D,EAAcp7O,QAAQ86O,EAAcxwI,WAAWq6E,EAAOlwR,MAAQ,WAAa,SAC7E,GACF,GACF,CAQA,SAASwxR,EAAQtrL,EAAK0gP,GACpB,IAAInwS,EAAQ,IAAI47L,EAAQM,MAMxBp3O,KAAK6N,IAAM68U,EAAO,eAMlB1qV,KAAK4mQ,YAAc,IAAIvB,EAAe16J,EAAIoqJ,SAM1C/0P,KAAK6mQ,gBAAkB,CACrBnhQ,OAAQ2lV,EAAcnwS,EAAQ,MAOhCl7C,KAAKk7C,MAAQA,EAMbl7C,KAAKsrV,aAAeD,EAQpBrrV,KAAKirV,eAKLjrV,KAAKurV,SAKLvrV,KAAKk5R,aAKLh+O,EAAM36C,IAAIP,KAAKwrV,cAAgB,IAAI10G,EAAQM,OAK3Cl8L,EAAM36C,IAAIP,KAAKk7O,iBAAmB,IAAIpE,EAAQM,MAChD,CAEA6+C,EAAQ1uR,UAAY,CAClB2F,YAAa+oR,EACbjgQ,KAAM,SAAU80T,EAAep4G,EAAS/nI,EAAKqgP,EAAUx3G,GACrD,IAAIi4G,EAAmC,QAA3BX,EAAcp3G,SAGtBz0N,EAAO6rU,EAAc//O,SAAW+/O,EAAc//O,UAClD0gP,GAAS/4G,EAAQe,cAAc,CAC7BC,SAAU,SACVC,QAAS,QACR,SAAU0jD,GACNp4Q,GAAQo4Q,EAAUvC,oBAAsBg2D,IAC3C7rU,EAAOo4Q,EAAUtsL,UAErB,IACA,IAAIqpI,EAAM02G,EAAcz2G,iBAExBr0O,KAAK0rV,kBAAkBt3G,GAEvB,IAKIu3G,EALAZ,EAAe/qV,KAAKwrV,cACpBtwS,EAAQl7C,KAAKk7C,MACb0wS,EAAgBx3G,EAAIy3G,mBAEpBC,GAAef,EAAa/yF,QAAQ,IAAMxkB,EAG9C,GAAIs4G,EACF5wS,EAAMmsB,UAAYukR,EAAct5E,cAChCp3N,EAAMi/M,qBACNj/M,EAAMyoH,YACD,CACL,IAAIj+J,EAAS,IAAIilV,EACjBjlV,EAAO2hE,UAAYukR,EAAct5E,cACjC5sQ,EAAOy0P,qBACP,IAAI9iM,EAAQ,CACVhhC,MAAO3wB,EAAO2wB,MACdvE,SAAUpsB,EAAOosB,UAEnB65T,EAAcjmV,EAAO2wB,MACrBygN,EAAQ+D,YAAY3/L,EAAOmc,EAAOyzR,EACpC,CAEA,IAAIz0T,EAAQu1T,EAAcG,SACtBj6T,EAAW85T,EAAcI,YAC7BjB,EAAa5vG,YACb,IAAI8wG,EAAsB,CAAC,aACvBC,EAA2B,CAAC,WAAY,aACxCC,EAAkB,CAAC,SACnBC,EAAuB,CAAC,WAAY,SACpC53D,EAAUliD,EAAO6hD,gBACrB7hD,EAAO56H,KAAK08H,EAAIsgD,SAAS,SAAUC,GAMjC,IAAIkC,EAAcrC,EAAQtxR,IAAIyxR,EAAOlwR,OAAS+vR,EAAQhiR,IAAImiR,EAAOlwR,KAAM,IAAIqyO,EAAQM,OAC/EilG,EAAe,IAAIvlG,EAAQu1G,aAAa,CAC1CC,uBAAwB,EACxB92T,MAAO,CACLouC,MAAO,MAGXizN,EAAYt2R,IAAI87U,GAChB,IAOIkQ,EAPAC,EAAc1B,EAAc91D,eAAeL,EAAOlwR,OAASqmV,EAC3DvtG,EAAiBivG,EAAYhzG,SAASyyG,GACtCv+C,EAAsB8+C,EAAYhzG,SAAS0yG,GAC3C3sG,EAAYqrG,EAAkBrtG,GAC9BwgC,EAAiB6sE,EAAkBl9C,GACnC3lD,EAAaykG,EAAYhzG,SAAS2yG,GAClCnkG,EAAkBwkG,EAAYhzG,SAAS4yG,GAG3C,GAAIntU,EAAM,CACRstU,EAAUttU,EAAKi2Q,YAAYP,EAAOlwR,MAKlC,IAAI83P,EAAct9O,EAAKo+N,cAAckvG,EAAS,SAAS,GAEnDhwF,IACFhd,EAAUx1N,KAAOwyO,EAErB,CAEA,IAAIkwF,EAAiB,SAAUz8U,GAC7B,MAAO,CAACA,EAAM,GAAKqmB,EAAM,GAAKvE,EAAS,GAAI9hB,EAAM,GAAKqmB,EAAM,GAAKvE,EAAS,GAC5E,EAEAwgN,EAAO56H,KAAKi9K,EAAO+3D,YAAY,SAAUC,GACvC,GAAsB,YAAlBA,EAASnoV,KAAb,CAMA,IAFA,IAAIknB,EAAS,GAEJ1nB,EAAI,EAAGA,EAAI2oV,EAASC,SAAS5qV,SAAUgC,EAC9C0nB,EAAOznB,KAAKwoV,EAAeE,EAASC,SAAS5oV,KAG/Cq4U,EAAa7mT,MAAMouC,MAAM3/D,KAAK,IAAI6yO,EAAQ+kB,QAAQ,CAChDywF,uBAAwB,EACxB92T,MAAO,CACL9J,OAAQA,MAIZ,IAAS1nB,EAAI,EAAGA,GAAK2oV,EAASE,UAAYF,EAASE,UAAU7qV,OAAS,KAAMgC,EAAG,CAI7E,IAHA,IAAI8oV,EAAWH,EAASE,UAAU7oV,GAGzBiH,GAFLygB,EAAS,GAEA,GAAGzgB,EAAI6hV,EAAS9qV,SAAUiJ,EACrCygB,EAAOznB,KAAKwoV,EAAeK,EAAS7hV,KAGtCoxU,EAAa7mT,MAAMouC,MAAM3/D,KAAK,IAAI6yO,EAAQ+kB,QAAQ,CAChDywF,uBAAwB,EACxB92T,MAAO,CACL9J,OAAQA,KAGd,CA7BA,CA8BF,IACA2wT,EAAaxwJ,SAAS0zD,GACtB88F,EAAazwU,MAAM85O,eAAgB,EACnC22F,EAAa52F,SAAU,EAEvB,IAAI1rB,EAAYguB,EAAW7kP,IAAI,QAC3B03Q,EAAiB5yB,EAAgB9kP,IAAI,QACrC6pV,EAAY9tU,GAAQlQ,MAAMkQ,EAAK/b,IAAI+b,EAAKysO,aAAa,SAAU6gG,IAC/DhjG,EAAatqO,GAAQA,EAAK69N,cAAcyvG,GAK5C,GAAId,GAASsB,IAAchzH,GAAa6gD,IAAmBrxB,GAAcA,EAAWxvB,UAAW,CAC7F,IACImuB,EADArnJ,EAAS4qP,EAAkB92D,EAAOlwR,KAAjB8nV,IAGhBttU,GAAQstU,GAAW,KACtBrkG,EAAe4iG,GAGjB,IAAIl1B,EAAS,IAAI9+E,EAAQoc,KAAK,CAC5BphO,SAAU26T,EAAe93D,EAAOllP,OAAOttC,SAKvCk0B,MAAO,CAAC,EAAI6kB,EAAM7kB,MAAM,GAAI,EAAI6kB,EAAM7kB,MAAM,IAC5CimN,GAAI,GACJntF,QAAQ,IAYV,GAVA2nF,EAAQmR,cAAc2tE,EAAOhqT,MAAOgqT,EAAOp4E,WAAa,CAAC,EAAGuK,EAAYC,EAAiB,CACvFE,aAAcA,EACdC,eAAgBtnJ,EAChBunJ,YAAausC,EAAOlwR,KACpBq4P,gBAAgB,GACf,CACDziO,UAAW,SACX0iO,kBAAmB,YAGhB+uF,EAAa,CAEhB,IAAIkB,EAAY,CAAC,EAAIrB,EAAY,GAAI,EAAIA,EAAY,IACrD70G,EAAQ+D,YAAY+6E,EAAQ,CAC1Bv/R,MAAO22T,GACNlC,EACL,CAEAj0D,EAAYt2R,IAAIq1T,EAClB,CAIA,GAAI32S,EACFA,EAAKw7N,iBAAiB8xG,EAAS11D,OAC1B,CACD21D,EAAc1B,EAAc91D,eAAeL,EAAOlwR,MAEtD43U,EAAa7nC,UAAY,CACvBtgE,cAAe,MACfwgE,eAAgBo2C,EAAcp2C,eAC9BtkC,SAAU06E,EAAcp2C,eACxBjwS,KAAMkwR,EAAOlwR,KACbkwR,OAAQ63D,GAAeA,EAAYzhT,QAAU,CAAC,EAElD,CAEA,IAAIkiT,EAAep2D,EAAYq0D,YAAcr0D,EAAYq0D,UAAY,IACrE+B,EAAahpV,KAAK0wR,GAClBkC,EAAYq2D,wBAA0BpC,EAAc5nV,IAAI,gBACxD4zO,EAAQ8G,cAAci5C,EAAa9Y,GACnCgtE,EAAaxqV,IAAIs2R,EACnB,IAEA72R,KAAKmnQ,kBAAkB2jF,EAAep4G,EAAS/nI,GAE/CkgP,EAAuB7qV,KAAM8qV,EAAeC,EAAcpgP,EAAKqgP,GAC/DG,EAAkBL,EAAeC,EACnC,EACAnuQ,OAAQ,WACN58E,KAAKwrV,cAAcrwG,YAEnBn7O,KAAKk7O,iBAAiBC,YAEtBn7O,KAAK4mQ,YAAYprB,UAEjBx7O,KAAKurV,UAAYz3D,EAAiBq5D,cAAcntV,KAAKurV,SAAUvrV,KAAK6N,KACpE7N,KAAKurV,SAAW,KAChBvrV,KAAK6mQ,gBAAkB,CAAC,CAC1B,EACA6kF,kBAAmB,SAAUt3G,GAC3B,IAAIg5G,EAAUh5G,EAAI1qN,IAEd1pB,KAAKurV,WAAa6B,GACpB96G,EAAO56H,KAAKo8K,EAAiBu5D,YAAYD,EAASptV,KAAK6N,MAAM,SAAUqqB,GACrEl4B,KAAKk7O,iBAAiB36O,IAAI23B,EAC5B,GAAGl4B,MAGLA,KAAKurV,SAAW6B,CAClB,EACAjmF,kBAAmB,SAAU2jF,EAAep4G,EAAS/nI,GACnD,IAAIypI,EAAM02G,EAAcz2G,iBACpBw0B,EAAa7oQ,KAAK4mQ,YAClBkC,EAAiB9oQ,KAAK6mQ,gBAC1BiC,EAAep0B,UAAYo2G,EAAc5nV,IAAI,cAC7C4lQ,EAAe1rL,KAAOg3J,EAAIQ,UAE1Bi0B,EAAWK,OAAO4hF,EAAc5nV,IAAI,UAAW,GAC/C,IAAIwwO,EAAWo3G,EAAcp3G,SAE7B,SAAS45G,IACP,IAAIhuO,EAAS,CACX96G,KAAM,UACN0vO,cAAeR,GAGjB,OADAp0H,EAAOo0H,EAAW,MAAQo3G,EAActhV,GACjC81G,CACT,CAEAupJ,EAAW7sL,IAAI,OAAOvY,GAAG,OAAO,SAAUx9D,GACxCjG,KAAKirV,gBAAiB,EACtB3lF,EAAW6D,gBAAgBL,EAAgB7iQ,EAAE0/D,GAAI1/D,EAAE2/D,IACnD+kC,EAAIi9J,eAAet1B,EAAO5uH,OAAO4pO,IAAkB,CACjD3nR,GAAI1/D,EAAE0/D,GACNC,GAAI3/D,EAAE2/D,KAEV,GAAG5lE,MACH6oQ,EAAW7sL,IAAI,QAAQvY,GAAG,QAAQ,SAAUx9D,GAS1C,GARAjG,KAAKirV,gBAAiB,EACtB3lF,EAAW8D,iBAAiBN,EAAgB7iQ,EAAEowB,MAAOpwB,EAAEkvO,QAASlvO,EAAEovO,SAClE1qI,EAAIi9J,eAAet1B,EAAO5uH,OAAO4pO,IAAkB,CACjDlwQ,KAAMn3E,EAAEowB,MACR8+M,QAASlvO,EAAEkvO,QACXE,QAASpvO,EAAEovO,WAGTr1O,KAAKsrV,aAAc,CACrB,IAAIj1T,EAAQr2B,KAAKk7C,MAAM7kB,MAEvBr2B,KAAKwrV,cAAc3yF,UAAS,SAAUj3P,GACpB,SAAZA,EAAG4C,MACL5C,EAAGi1B,KAAK,QAAS,CAAC,EAAIR,EAAM,GAAI,EAAIA,EAAM,IAE9C,GACF,CACF,GAAGr2B,MACH6oQ,EAAWE,mBAAkB,SAAU9iQ,EAAG6Z,EAAG6e,GAC3C,OAAOy1M,EAAIm5G,uBAAuBn/F,QAAQtuO,EAAG6e,KAAO6mO,EAAoBv/P,EAAG0kG,EAAKmgP,EAClF,GACF,GAEF,IAAIr9T,EAAWwoQ,EACf90R,EAAOD,QAAUusB,C,wBC9bjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB23T,EAAW33T,EAAQ,OAEnBs8R,EAAYt8R,EAAQ,OAEpB43T,EAAmB53T,EAAQ,MA4B/B,SAAS68O,EAAe8sB,GAItBnyR,KAAKwtV,eAKLxtV,KAAKghV,IAAM7uD,EAKXnyR,KAAKytV,KAAO,CAAC,EAEb,IAAI1wU,EAAOu1N,EAAOv1N,KACd2wU,EAAmB3wU,EAAKiqU,EAAWhnV,MACnC2tV,EAAmB5wU,EAAKmqU,EAAWlnV,MACnC4tV,EAAiB7wU,EAAKoqU,EAASnnV,MAC/B6tV,EAAoB9wU,EAAK+wU,EAAY9tV,MACrC+tV,EAAehxU,EAAKixU,EAAOhuV,MAC/BmgV,EAAS9/U,KAAKL,MAOdA,KAAK+oQ,kBAAoB,SAAUykF,GACjCxtV,KAAKwtV,eAAiBA,CACxB,EAiBAxtV,KAAKkpQ,OAAS,SAAUmyE,EAAax4O,GAEnC7iG,KAAKqpQ,UACLrpQ,KAAKytV,KAAOn7G,EAAO94I,SAAS84I,EAAOh+M,MAAMuuE,IAAQ,CAAC,EAAG,CACnDuuO,kBAAkB,EAClBC,iBAAiB,EAEjBC,kBAAkB,EAClBC,yBAAyB,IAGR,MAAf8J,IACFA,GAAc,IAGI,IAAhBA,GAAwC,SAAhBA,GAA0C,QAAhBA,IACpDlpD,EAAG1uN,GAAG,YAAaiqR,GACnBv7D,EAAG1uN,GAAG,YAAakqR,GACnBx7D,EAAG1uN,GAAG,UAAWmqR,KAGC,IAAhBvS,GAAwC,UAAhBA,GAA2C,SAAhBA,IACrDlpD,EAAG1uN,GAAG,aAAcoqR,GACpB17D,EAAG1uN,GAAG,QAASsqR,GAEnB,EAEA/tV,KAAKqpQ,QAAU,WACb8oB,EAAGn2M,IAAI,YAAa0xQ,GACpBv7D,EAAGn2M,IAAI,YAAa2xQ,GACpBx7D,EAAGn2M,IAAI,UAAW4xQ,GAClBz7D,EAAGn2M,IAAI,aAAc6xQ,GACrB17D,EAAGn2M,IAAI,QAAS+xQ,EAClB,EAEA/tV,KAAKw7O,QAAUx7O,KAAKqpQ,QAEpBrpQ,KAAKiuV,WAAa,WAChB,OAAOjuV,KAAK+lT,SACd,EAEA/lT,KAAKkuV,WAAa,WAChB,OAAOluV,KAAKmuV,SACd,CACF,CAIA,SAASnH,EAAU/gV,GACjB,KAAI6+S,EAAUspC,mCAAmCnoV,IAAMA,EAAEP,QAAUO,EAAEP,OAAOu/P,WAA5E,CAIA,IAAInlP,EAAI7Z,EAAE2rB,QACN+M,EAAI14B,EAAE4rB,QAGN7xB,KAAKwtV,gBAAkBxtV,KAAKwtV,eAAevnV,EAAG6Z,EAAG6e,KACnD3+B,KAAKg4B,GAAKlY,EACV9f,KAAKorM,GAAKzsK,EACV3+B,KAAK+lT,WAAY,EATnB,CAWF,CAEA,SAASmhC,EAAUjhV,GACjB,GAAKjG,KAAK+lT,WAAcw1B,EAAoB,kBAAmBt1U,EAAGjG,KAAKytV,OAA4B,UAAnBxnV,EAAEooV,eAA4BjO,EAAiBkO,QAAQtuV,KAAKghV,IAAK,aAAjJ,CAIA,IAAIlhU,EAAI7Z,EAAE2rB,QACN+M,EAAI14B,EAAE4rB,QACN+gT,EAAO5yU,KAAKg4B,GACZ66S,EAAO7yU,KAAKorM,GACZzlI,EAAK7lD,EAAI8yT,EACThtQ,EAAKjnC,EAAIk0S,EACb7yU,KAAKg4B,GAAKlY,EACV9f,KAAKorM,GAAKzsK,EACV3+B,KAAKytV,KAAKlc,yBAA2BzsB,EAAUhtR,KAAK7xB,EAAEod,OACtD2sF,EAAQhwG,KAAM,MAAO,kBAAmBiG,EAAG,CACzC0/D,GAAIA,EACJC,GAAIA,EACJgtQ,KAAMA,EACNC,KAAMA,EACNC,KAAMhzT,EACNizT,KAAMp0S,GAjBR,CAmBF,CAEA,SAASwoT,EAAQlhV,GACV6+S,EAAUspC,mCAAmCnoV,KAChDjG,KAAK+lT,WAAY,EAErB,CAEA,SAAS+nC,EAAW7nV,GAClB,IAAIsoV,EAAahT,EAAoB,mBAAoBt1U,EAAGjG,KAAKytV,MAC7De,EAAajT,EAAoB,mBAAoBt1U,EAAGjG,KAAKytV,MAC7DzrI,EAAa/7M,EAAE+7M,WACfysI,EAAqBtoV,KAAK6iB,IAAIg5L,GAC9BmzB,EAAUlvO,EAAE2rB,QACZyjN,EAAUpvO,EAAE4rB,QAEhB,GAAmB,IAAfmwL,IAAqBusI,GAAeC,GAAxC,CAOA,GAAID,EAAY,CASd,IAAI1nQ,EAAS4nQ,EAAqB,EAAI,IAAMA,EAAqB,EAAI,IAAM,IACvEp4T,EAAQ2rL,EAAa,EAAIn7H,EAAS,EAAIA,EAC1C6nQ,EAAuB1uV,KAAM,OAAQ,mBAAoBiG,EAAG,CAC1DowB,MAAOA,EACP8+M,QAASA,EACTE,QAASA,GAEb,CAEA,GAAIm5G,EAAY,CAEd,IAAIG,EAAWxoV,KAAK6iB,IAAIg5L,GAEpBixH,GAAejxH,EAAa,EAAI,GAAK,IAAM2sI,EAAW,EAAI,GAAMA,EAAW,EAAI,IAAO,KAC1FD,EAAuB1uV,KAAM,aAAc,mBAAoBiG,EAAG,CAChEgtU,YAAaA,EACb99F,QAASA,EACTE,QAASA,GAEb,CAjCA,CAkCF,CAEA,SAAS24G,EAAM/nV,GACb,IAAIm6U,EAAiBkO,QAAQtuV,KAAKghV,IAAK,aAAvC,CAIA,IAAI3qT,EAAQpwB,EAAE2oV,WAAa,EAAI,IAAM,EAAI,IACzCF,EAAuB1uV,KAAM,OAAQ,KAAMiG,EAAG,CAC5CowB,MAAOA,EACP8+M,QAASlvO,EAAE4oV,OACXx5G,QAASpvO,EAAE6oV,QANb,CAQF,CAEA,SAASJ,EAAuB7lF,EAAYj0F,EAAWm6K,EAAiB9oV,EAAG+oV,GACrEnmF,EAAW2kF,gBAAkB3kF,EAAW2kF,eAAevnV,EAAG+oV,EAAe75G,QAAS65G,EAAe35G,WAInGyvE,EAAUhtR,KAAK7xB,EAAEod,OACjB2sF,EAAQ64J,EAAYj0F,EAAWm6K,EAAiB9oV,EAAG+oV,GAEvD,CAEA,SAASh/O,EAAQ64J,EAAYj0F,EAAWm6K,EAAiB9oV,EAAG+oV,GAG1DA,EAAezT,oBAAsBjpG,EAAOv1N,KAAKw+T,EAAqB,KAAMwT,EAAiB9oV,GAC7F4iQ,EAAW74J,QAAQ4kE,EAAWo6K,EAChC,CAQA,SAASzT,EAAoBwT,EAAiB9oV,EAAGgpV,GAC/C,IAAIn/L,EAAUm/L,EAASF,GACvB,OAAQA,GAAmBj/L,KAAawiF,EAAOohF,SAAS5jK,IAAY7pJ,EAAEod,MAAMysI,EAAU,OACxF,CArIAwiF,EAAO0W,MAAMqc,EAAgB86E,GAuI7B,IAAI1yT,EAAW43O,EACflkQ,EAAOD,QAAUusB,C,wBCxQjB,IAAIkqR,EAAenvR,EAAQ,OAEvB+8O,EAAgB/8O,EAAQ,OAExBg9O,EAAsBD,EAAcC,oBAEpChU,EAAchpO,EAAQ,OAoB1B,SAASu1S,EAAsB9gS,GAE7B,OADAA,EAAOiyT,EAAcjyT,GACd,SAAUkyT,EAAa9nR,GAC5B,OAAOmqL,EAAY49F,iBAAiBD,EAAalyT,EACnD,CACF,CAEA,SAASkhS,EAA2BlhS,EAAMoyT,GAExC,OADApyT,EAAOiyT,EAAcjyT,GACd,SAAU6lS,GACf,IAAI37N,EAA0B,MAApBkoP,EAA2BA,EAAmBvsB,EACpDwsB,EAAanoP,EAAMlqE,EAAKuL,MAAQvL,EAAKwL,OACrCo7E,EAAO1c,EAAMlqE,EAAKnd,EAAImd,EAAK0B,EAC/B,MAAO,CAACklF,EAAMA,GAAQyrO,GAAc,GACtC,CACF,CAEA,SAASrxB,EAAyBhhS,EAAM0tE,EAAK4kP,GAE3C,OADAtyT,EAAOiyT,EAAcjyT,GACd,SAAUh3B,EAAG68U,EAAkBz7Q,GACpC,OAAOpqC,EAAKmxN,QAAQ00F,EAAiB,GAAIA,EAAiB,MAAQt9E,EAAoBv/P,EAAG0kG,EAAK4kP,EAChG,CACF,CAGA,SAASL,EAAcjyT,GACrB,OAAO06Q,EAAa3wS,OAAOi2B,EAC7B,CAEA/7B,EAAQ68T,sBAAwBA,EAChC78T,EAAQi9T,2BAA6BA,EACrCj9T,EAAQ+8T,yBAA2BA,C,sBCvCnC,IAAIuxB,EAAsB,CACxB,YAAe,EACf,QAAW,EACX,MAAS,GAOX,SAAShqF,EAAoBv/P,EAAG0kG,EAAK8kP,GACnC,IAAIl+F,EAAQ5mJ,EAAI+kP,sBAAsBzpV,EAAE0pV,WAEpC98G,EAAW0e,GAASA,EAAMld,iBAC9B,OAAOkd,GAASA,IAAUk+F,IAAwBD,EAAoBj+F,EAAM7d,WAAab,GAAYA,EAAS0e,QAAUk+F,CAC1H,CAEAvuV,EAAQskQ,oBAAsBA,C,uBCnC9B,IAAIryB,EAAU3qN,EAAQ,OAoBlBiyT,EAAO,0BAEX,SAASoH,EAAK1vD,EAAIy9D,EAAaC,GAC7B,IAAI9hV,EAAQ+hV,EAAS39D,GACrBpkR,EAAM6hV,GAAeC,CACvB,CAEA,SAAS7N,EAAQ7vD,EAAIy9D,EAAaC,GAChC,IAAI9hV,EAAQ+hV,EAAS39D,GACjB49D,EAAOhiV,EAAM6hV,GAEbG,IAASF,IACX9hV,EAAM6hV,GAAe,KAEzB,CAEA,SAAStB,EAAQn8D,EAAIy9D,GACnB,QAASE,EAAS39D,GAAIy9D,EACxB,CAEA,SAASE,EAAS39D,GAChB,OAAOA,EAAGsoD,KAAUtoD,EAAGsoD,GAAQ,CAAC,EAClC,CAUAtnG,EAAQI,eAAe,CACrB/uO,KAAM,mBACN6e,MAAO,oBACP2T,OAAQ,WACP,WAAa,IAChB91B,EAAQ2gV,KAAOA,EACf3gV,EAAQ8gV,QAAUA,EAClB9gV,EAAQotV,QAAUA,C,wBC3DlB,IAAIliF,EAAU5jP,EAAQ,MAElB+0O,EAAgB6O,EAAQ7O,cACxByyF,EAAY5jF,EAAQvpE,IACpByyG,EAAkBlpC,EAAQkpC,gBAE1B4U,EAAa1hS,EAAQ,OAErBsuN,EAAUtuN,EAAQ,OA4BtB,SAAS2/E,EAAOjtD,EAAOi5L,EAAgBxpI,GACrC,IAAIslP,EAAkB97G,EAAeqpB,qBACjCjyK,EAAU4oJ,EAAejxO,IAAI,WAC7BgtV,EAAe,CACjB1nT,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,aAEVrlN,EAAOsgO,EAAc0yF,EAAiBC,EAAc3kQ,GACxDykQ,EAAU77G,EAAejxO,IAAI,UAAWg4C,EAAOi5L,EAAejxO,IAAI,WAAY+5B,EAAKuL,MAAOvL,EAAKwL,QAC/F6sQ,EAAgBp6P,EAAO+0S,EAAiBC,EAAc3kQ,EACxD,CAEA,SAAS4kQ,EAAelzT,EAAMk3M,GAC5B,IAAI5oJ,EAAU2+N,EAAW8I,kBAAkB7+E,EAAejxO,IAAI,YAC1D0I,EAAQuoO,EAAeqL,aAAa,CAAC,QAAS,YAClD5zO,EAAMme,KAAOoqN,EAAejxO,IAAI,mBAC5B+5B,EAAO,IAAI65M,EAAQuF,KAAK,CAC1B7mN,MAAO,CACL1V,EAAGmd,EAAKnd,EAAIyrE,EAAQ,GACpB5sD,EAAG1B,EAAK0B,EAAI4sD,EAAQ,GACpB/iD,MAAOvL,EAAKuL,MAAQ+iD,EAAQ,GAAKA,EAAQ,GACzC9iD,OAAQxL,EAAKwL,OAAS8iD,EAAQ,GAAKA,EAAQ,GAC3Cx+D,EAAGonN,EAAejxO,IAAI,iBAExB0I,MAAOA,EACPujJ,QAAQ,EACRmtF,IAAK,IAMP,OAAOr/M,CACT,CAEA/7B,EAAQinG,OAASA,EACjBjnG,EAAQivV,eAAiBA,C,sBC/CzB,SAAShnF,EAAgBL,EAAgBnjM,EAAIC,GAC3C,IAAIlgE,EAASojQ,EAAepjQ,OACxB2I,EAAM3I,EAAOosB,SACjBzjB,EAAI,IAAMs3D,EACVt3D,EAAI,IAAMu3D,EACVlgE,EAAOi+J,OACT,CAWA,SAASylG,EAAiBN,EAAgBsnF,EAAWC,EAAOC,GAC1D,IAAI5qV,EAASojQ,EAAepjQ,OACxBgvO,EAAYo0B,EAAep0B,UAC3BrmO,EAAM3I,EAAOosB,SACbuE,EAAQ3wB,EAAO2wB,MACf8rL,EAAU2mD,EAAe1rL,KAAO0rL,EAAe1rL,MAAQ,EAG3D,GAFA+kI,GAAWiuI,EAEP17G,EAAW,CACb,IAAIM,EAAUN,EAAU9lO,KAAO,EAC3BqmO,EAAUP,EAAU/lO,KAAOkkF,IAC/BsvH,EAAUh8M,KAAKwI,IAAIxI,KAAKyI,IAAIqmO,EAAS9yB,GAAU6yB,EACjD,CAEA,IAAIu7G,EAAYpuI,EAAU2mD,EAAe1rL,KACzC0rL,EAAe1rL,KAAO+kI,EAEtB9zM,EAAI,KAAOgiV,EAAQhiV,EAAI,KAAOkiV,EAAY,GAC1CliV,EAAI,KAAOiiV,EAAQjiV,EAAI,KAAOkiV,EAAY,GAC1Cl6T,EAAM,IAAMk6T,EACZl6T,EAAM,IAAMk6T,EACZ7qV,EAAOi+J,OACT,CAEAziK,EAAQioQ,gBAAkBA,EAC1BjoQ,EAAQkoQ,iBAAmBA,C,wBCnE3B,IAAI92B,EAAS9pN,EAAQ,OA0BjBiF,EAAW,CAMbmnQ,kBAAmB,SAAUsF,GAC3Bl6R,KAAKwwV,YAAcl+G,EAAOxrO,QAAQozR,GAAcA,EAAW/3R,QAAU,GACrEnC,KAAKywV,iBAAmBn+G,EAAOhnN,OAAO4uQ,GAAc,IAAI,SAAUw2D,EAAWhrV,GAE3E,OADAgrV,EAAUl+U,IAAI9M,EAAOjB,KAAMiB,GACpBgrV,CACT,GAAGp+G,EAAO6hD,gBACZ,EAUA77L,OAAQ,SAAU7zF,EAAM+E,GACtB,IAAI9D,EAAe,MAAN8D,EAAaxJ,KAAKwwV,YAAYhnV,GAAMxJ,KAAKywV,iBAAiBvtV,IAAIuB,GACvEq3R,EAAe97R,KAAKkD,IAAI,gBAEP,WAAjB44R,GACF97R,KAAKywV,iBAAiB/4O,MAAK,SAAUhyG,GACnCA,EAAOysH,UAAW,CACpB,IAGFzsH,IAAWA,EAAOysH,UAAW,EAC/B,EASAw+N,SAAU,SAAUlsV,EAAM+E,GACxB,IAAI9D,EAAe,MAAN8D,EAAaxJ,KAAKwwV,YAAYhnV,GAAMxJ,KAAKywV,iBAAiBvtV,IAAIuB,GAG3EiB,IAAWA,EAAOysH,UAAW,EAC/B,EASAy+N,eAAgB,SAAUnsV,EAAM+E,GAC9B,IAAI9D,EAAe,MAAN8D,EAAaxJ,KAAKwwV,YAAYhnV,GAAMxJ,KAAKywV,iBAAiBvtV,IAAIuB,GAE3E,GAAc,MAAViB,EAEF,OADA1F,KAAK0F,EAAOysH,SAAW,WAAa,UAAU1tH,EAAM+E,GAC7C9D,EAAOysH,QAElB,EASAmoF,WAAY,SAAU71M,EAAM+E,GAC1B,IAAI9D,EAAe,MAAN8D,EAAaxJ,KAAKwwV,YAAYhnV,GAAMxJ,KAAKywV,iBAAiBvtV,IAAIuB,GAC3E,OAAOiB,GAAUA,EAAOysH,QAC1B,GAEFhxH,EAAOD,QAAUusB,C,oBChEjB,SAASA,EAASg5D,EAAOmxP,EAAYrqJ,EAAQgqJ,EAAavJ,EAASC,GACjExnP,EAAQA,GAAS,EACjB,IAAIoqQ,EAAatjK,EAAO,GAAKA,EAAO,GAUpC,GARe,MAAXygJ,IACFA,EAAU8iB,EAAS9iB,EAAS,CAAC,EAAG6iB,KAGnB,MAAX5iB,IACFA,EAAU9nU,KAAKwI,IAAIs/T,EAAoB,MAAXD,EAAkBA,EAAU,IAGtC,QAAhBuJ,EAAuB,CACzB,IAAIwZ,EAAa5qV,KAAK6iB,IAAI4uT,EAAW,GAAKA,EAAW,IACrDmZ,EAAaD,EAASC,EAAY,CAAC,EAAGF,IACtC7iB,EAAUC,EAAU6iB,EAASC,EAAY,CAAC/iB,EAASC,IACnDsJ,EAAc,CAChB,CAEAK,EAAW,GAAKkZ,EAASlZ,EAAW,GAAIrqJ,GACxCqqJ,EAAW,GAAKkZ,EAASlZ,EAAW,GAAIrqJ,GACxC,IAAIyjK,EAAmBC,EAAYrZ,EAAYL,GAC/CK,EAAWL,IAAgB9wP,EAE3B,IAAIyqQ,EAAgBljB,GAAW,EAC3BmjB,EAAa5jK,EAAOprL,QACxB6uV,EAAiBnoJ,KAAO,EAAIsoJ,EAAW,IAAMD,EAAgBC,EAAW,IAAMD,EAC9EtZ,EAAWL,GAAeuZ,EAASlZ,EAAWL,GAAc4Z,GAE5D,IAAIC,EAAeH,EAAYrZ,EAAYL,GAE5B,MAAXvJ,IAAoBojB,EAAavoJ,OAASmoJ,EAAiBnoJ,MAAQuoJ,EAAarnC,KAAOikB,KAEzF4J,EAAW,EAAIL,GAAeK,EAAWL,GAAeyZ,EAAiBnoJ,KAAOmlI,GAI9EojB,EAAeH,EAAYrZ,EAAYL,GAM3C,OAJe,MAAXtJ,GAAmBmjB,EAAarnC,KAAOkkB,IACzC2J,EAAW,EAAIL,GAAeK,EAAWL,GAAe6Z,EAAavoJ,KAAOolI,GAGvE2J,CACT,CAEA,SAASqZ,EAAYrZ,EAAYL,GAC/B,IAAIttP,EAAO2tP,EAAWL,GAAeK,EAAW,EAAIL,GAGpD,MAAO,CACLxtB,KAAM5jT,KAAK6iB,IAAIihE,GACf4+G,KAAM5+G,EAAO,GAAK,EAAIA,EAAO,EAAI,EAAIstP,GAAe,EAAI,EAE5D,CAEA,SAASuZ,EAAShvV,EAAO4hH,GACvB,OAAOv9G,KAAKyI,IAAiB,MAAb80G,EAAO,GAAaA,EAAO,GAAK7wB,IAAU1sF,KAAKwI,IAAiB,MAAb+0G,EAAO,GAAaA,EAAO,IAAM7wB,IAAU/wF,GAChH,CAEAX,EAAOD,QAAUusB,C,uBCnGjB,IAAI0lN,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAER,IAAI6oU,EAAe7oU,EAAQ,MAEvBkzT,EAAYlzT,EAAQ,OAsBxB2qN,EAAQonB,kBAAkBpnB,EAAQuC,SAASixC,UAAU2qE,cAAeD,GACpE3V,EAAUC,yBAAyB,UAAU,WAE3C,MAAO,OACT,G,wBCpCAnzT,EAAQ,MAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,M,iCCNR,IAAI2qN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjByuN,EAAQzuN,EAAQ,OAEhBiyO,EAASjyO,EAAQ,OAEjB+oU,EAAkB92F,EAAO82F,gBAEzBC,EAAOhpU,EAAQ,OAoBfipU,EAAeD,EAAK5lT,OAAOg0C,SAC3B8xQ,EAAwB,CAC1Bv4U,IAAK,CACH3U,KAAM,MACN8mC,MAAOgnM,EAAOh+M,MAAMm9T,EAAat4U,MAEnC86S,QAAS,CACPzvT,KAAM,UACN8mC,MAAOgnM,EAAOh+M,MAAMm9T,EAAax9B,WAGjC09B,EAAcx+G,EAAQ6wE,qBAAqB,CAC7Cx/S,KAAM,eACN0xO,aAAc,CAAC,UACf89C,WAAY,CACVxvR,KAAM,MAQNm6U,YAAY,GAEdjnR,KAAM,SAAU3sB,EAAQg8M,EAAarU,GACnC1yO,KAAK+iQ,qBAAqBh4N,EAAQ2nM,GAClC3nM,EAAOonF,SAAWpnF,EAAOonF,UAAY,CAAC,EAEtCnyH,KAAK4xV,gBAAgB7mT,EACvB,EACA+3N,YAAa,SAAU/3N,GACrB4mT,EAAYp2F,UAAUv7P,KAAM,cAAe+qC,GAE3C/qC,KAAK4xV,gBAAgB7mT,EACvB,EACA6mT,gBAAiB,SAAU7mT,GACzB,IAAI60C,EAAW70C,EAAO60C,UAEL,IAAbA,IACFA,EAAW70C,EAAO60C,SAAW,CAAC,MAAO,YAGnC0yJ,EAAOxrO,QAAQ84E,IACjB0yJ,EAAO56H,KAAK93B,GAAU,SAAUp6D,EAAMvjB,GACpCqwO,EAAOohF,SAASluS,KAAUA,EAAO,CAC/BhhB,KAAMghB,IAERo6D,EAAS39E,GAASqwO,EAAOt0H,MAAMx4F,EAAMksU,EAAsBlsU,EAAKhhB,MAClE,GAEJ,EACAq8R,cAAe,WACb7gS,KAAK6xV,YAAY7xV,KAAK0yO,SAEtB,IAAIo/G,EAAa9xV,KAAKqqK,MAEtB,GAAIynL,EAAW,IAAmC,WAA7B9xV,KAAKkD,IAAI,gBAA8B,CAG1D,IAFA,IAAI6uV,GAAc,EAET/tV,EAAI,EAAGA,EAAI8tV,EAAW9vV,OAAQgC,IAAK,CAC1C,IAAIS,EAAOqtV,EAAW9tV,GAAGd,IAAI,QAE7B,GAAIlD,KAAKs6M,WAAW71M,GAAO,CAEzBzE,KAAKs4F,OAAO7zF,GACZstV,GAAc,EACd,KACF,CACF,EAGCA,GAAe/xV,KAAKs4F,OAAOw5P,EAAW,GAAG5uV,IAAI,QAChD,CACF,EACA2uV,YAAa,SAAUn/G,GACrB,IAAIs/G,EAAgB,GAChBC,EAAiB,GACrBv/G,EAAQw/G,eAAc,SAAUt+G,GAC9B,IAEIu+G,EAFA98F,EAAazhB,EAAYnvO,KAI7B,GAHAwtV,EAAehuV,KAAKoxP,GAGhBzhB,EAAYonB,qBAAsB,CACpC,IAAIo3F,EAAWx+G,EAAYonB,qBACvB5tP,EAAQglV,EAASC,cAEhB3/G,EAAQia,iBAAiB/Y,KAC5Bq+G,EAAiBA,EAAehxV,OAAOmM,IAGrCA,EAAMpL,OACRgwV,EAAgBA,EAAc/wV,OAAOmM,GAErC+kV,GAAc,CAElB,MACEA,GAAc,EAGZA,GAAeZ,EAAgB39G,IACjCo+G,EAAc/tV,KAAK2vO,EAAYnvO,KAEnC,IAMAzE,KAAKsyV,gBAAkBL,EAGvB,IAAI9jD,EAAUnuS,KAAKkD,IAAI,SAAW8uV,EAC9BF,EAAax/G,EAAO5oN,IAAIykR,GAAS,SAAUtrP,GAQ7C,MANwB,kBAAbA,GAA6C,kBAAbA,IACzCA,EAAW,CACTp+C,KAAMo+C,IAIH,IAAIo0L,EAAMp0L,EAAU7iD,KAAMA,KAAK0yO,QACxC,GAAG1yO,MAMHA,KAAKqqK,MAAQynL,CACf,EAKA/mP,QAAS,WACP,OAAO/qG,KAAKqqK,KACd,EAKA/xE,OAAQ,SAAU7zF,GAChB,IAAI0tH,EAAWnyH,KAAK+qC,OAAOonF,SACvB2pK,EAAe97R,KAAKkD,IAAI,gBAE5B,GAAqB,WAAjB44R,EAA2B,CAC7B,IAAI78Q,EAAOjf,KAAKqqK,MAChBioE,EAAO56H,KAAKz4F,GAAM,SAAU4jC,GAC1BsvE,EAAStvE,EAAS3/C,IAAI,UAAW,CACnC,GACF,CAEAivH,EAAS1tH,IAAQ,CACnB,EAKAksV,SAAU,SAAUlsV,GACe,WAA7BzE,KAAKkD,IAAI,kBACXlD,KAAK+qC,OAAOonF,SAAS1tH,IAAQ,EAEjC,EAKAmsV,eAAgB,SAAUnsV,GACxB,IAAI0tH,EAAWnyH,KAAK+qC,OAAOonF,SAEtBA,EAAS7rH,eAAe7B,KAC3B0tH,EAAS1tH,IAAQ,GAGnBzE,KAAKmyH,EAAS1tH,GAAQ,WAAa,UAAUA,EAC/C,EACA8tV,UAAW,WACT,IAAItzU,EAAOjf,KAAKqqK,MACZl4C,EAAWnyH,KAAK+qC,OAAOonF,SAC3BmgH,EAAO56H,KAAKz4F,GAAM,SAAU4jC,GAC1BsvE,EAAStvE,EAAS3/C,IAAI,QAAQ,KAAS,CACzC,GACF,EACAsvV,cAAe,WACb,IAAIvzU,EAAOjf,KAAKqqK,MACZl4C,EAAWnyH,KAAK+qC,OAAOonF,SAC3BmgH,EAAO56H,KAAKz4F,GAAM,SAAU4jC,GAC1B,IAAIp+C,EAAOo+C,EAAS3/C,IAAI,QAAQ,GAE3BivH,EAAS7rH,eAAe7B,KAC3B0tH,EAAS1tH,IAAQ,GAGnB0tH,EAAS1tH,IAAS0tH,EAAS1tH,EAC7B,GACF,EAKA61M,WAAY,SAAU71M,GACpB,IAAI0tH,EAAWnyH,KAAK+qC,OAAOonF,SAC3B,QAASA,EAAS7rH,eAAe7B,KAAU0tH,EAAS1tH,KAAU6tO,EAAOj7N,QAAQrX,KAAKsyV,gBAAiB7tV,IAAS,CAC9G,EACAoqS,UAAW,WACT,MAA8B,aAAvB7uS,KAAKkD,IAAI,UAA2B,CACzCjB,MAAO,EACPwC,KAAM,YACJ,CACFxC,MAAO,EACPwC,KAAM,aAEV,EACA+xO,cAAe,CAEb4J,OAAQ,EAERroK,EAAG,EACHrqC,MAAM,EAGNkE,OAAQ,aACRvB,KAAM,SAENE,IAAK,EAKLwJ,MAAO,OACP6f,gBAAiB,gBAEjBiqK,YAAa,OACb/7J,aAAc,EAEdD,YAAa,EAGb0jB,QAAS,EAGT15C,QAAS,GAET4sN,UAAW,GAEXD,WAAY,GAEZi0F,cAAe,OAEfC,oBAAqB,OACrBnzG,UAAW,CAET13K,YAAa,GAEf51B,UAAW,CAETrhB,MAAO,QAITkrQ,cAAc,EAWdl8M,UAAU,EACV+yQ,cAAe,CACbjlT,MAAM,EACNo6B,aAAc,GACdyjB,QAAS,CAAC,EAAG,EAAG,EAAG,GACnBpxD,SAAU,GACVC,WAAY,cACZxJ,MAAO,OACPi3C,YAAa,EACbg8J,YAAa,QAEf6c,SAAU,CACRiyG,cAAe,CACbjlT,MAAM,EACN9c,MAAO,OACPgpC,gBAAiB,SAIrBg5R,iBAAkB,OAClBC,gBAAiB,EACjBC,kBAAmB,GAEnBvsE,QAAS,CACP74O,MAAM,MAIRjgB,EAAWkkU,EACfxwV,EAAOD,QAAUusB,C,iCC1UjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB2qN,GAFU1/L,EAAQojM,QAERruN,EAAQ,QAElB8pN,EAAS9pN,EAAQ,OAEjBwxD,EAAUxxD,EAAQ,OAElBg5N,EAAexnK,EAAQwnK,aAEvB1K,EAAUtuN,EAAQ,OAElBuqU,EAAiBvqU,EAAQ,OAEzB2nU,EAAiB4C,EAAe5C,eAEhChU,EAAa3zT,EAAQ,MAoBrBqtN,EAAQvD,EAAOuD,MACfn+H,EAAO46H,EAAO56H,KACd0/H,EAAQN,EAAQM,MAEhB3pN,EAAW0lN,EAAQqxE,oBAAoB,CACzChgT,KAAM,eACNwuV,iBAAiB,EAKjBt7R,KAAM,WAKJ13D,KAAKk7C,MAAM36C,IAAIP,KAAKizV,cAAgB,IAAI77G,GAMxCp3O,KAAKkzV,cAMLlzV,KAAKk7C,MAAM36C,IAAIP,KAAKmzV,eAAiB,IAAI/7G,GAQzCp3O,KAAKozV,gBAAiB,CACxB,EAKAC,gBAAiB,WACf,OAAOrzV,KAAKizV,aACd,EAKAK,iBAAkB,WAChB,OAAOtzV,KAAKmzV,cACd,EAKAh0V,OAAQ,SAAUo0V,EAAa7gH,EAAS/nI,GACtC,IAAIixL,EAAgB57R,KAAKozV,eAIzB,GAHApzV,KAAKozV,gBAAiB,EACtBpzV,KAAKwzV,aAEAD,EAAYrwV,IAAI,QAAQ,GAA7B,CAIA,IAAIuwV,EAAYF,EAAYrwV,IAAI,SAC5B0uC,EAAS2hT,EAAYrwV,IAAI,UAExBuwV,GAA2B,SAAdA,IAChBA,EAAwC,UAA5BF,EAAYrwV,IAAI,SAAkC,aAAX0uC,EAAwB,QAAU,QAGvF,IAAIguC,EAAW2zQ,EAAYrwV,IAAI,YAAY,GACvC0vV,EAAmBW,EAAYrwV,IAAI,oBAAoB,IAEvD08E,GAAcgzQ,GAAyC,SAArBA,IACpCA,EAA8B,eAAXhhT,EAA0B,MAAQ,SAGvD5xC,KAAK0zV,YAAYD,EAAWF,EAAa7gH,EAAS/nI,EAAK/qB,EAAUhuC,EAAQghT,GAEzE,IAAIrd,EAAege,EAAY/1F,qBAC3B0yF,EAAe,CACjB1nT,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,aAEV/2J,EAAUgoQ,EAAYrwV,IAAI,WAC1Bw4P,EAAUygF,EAAW5+E,cAAcg4E,EAAc2a,EAAc3kQ,GAC/DooQ,EAAW3zV,KAAK4zV,YAAYL,EAAaE,EAAW/3F,EAASkgC,EAAeh8M,EAAUgzQ,GAEtFld,EAAayG,EAAW5+E,cAAcjrB,EAAO94I,SAAS,CACxDhxD,MAAOmrT,EAASnrT,MAChBC,OAAQkrT,EAASlrT,QAChB8sS,GAAe2a,EAAc3kQ,GAChCvrF,KAAKk7C,MAAMrkB,KAAK,WAAY,CAAC6+S,EAAW51T,EAAI6zU,EAAS7zU,EAAG41T,EAAW/2S,EAAIg1T,EAASh1T,IAEhF3+B,KAAKk7C,MAAM36C,IAAIP,KAAKkzV,cAAgB/C,EAAewD,EAAUJ,GAjC7D,CAkCF,EAKAC,WAAY,WACVxzV,KAAKqzV,kBAAkBl4G,YACvBn7O,KAAKkzV,eAAiBlzV,KAAKk7C,MAAM0hC,OAAO58E,KAAKkzV,eAC7ClzV,KAAKszV,mBAAmBn4G,WAC1B,EAKAu4G,YAAa,SAAUD,EAAWF,EAAa7gH,EAAS/nI,EAAK/qB,EAAUhuC,EAAQghT,GAC7E,IAAIiB,EAAe7zV,KAAKqzV,kBACpBS,EAAiBxhH,EAAO6hD,gBACxB4/D,EAAaR,EAAYrwV,IAAI,gBAC7B8wV,EAAkB,GACtBthH,EAAQw/G,eAAc,SAAUt+G,IAC7BA,EAAY1wO,IAAI,oBAAsB8wV,EAAgB/vV,KAAK2vO,EAAYpqO,GAC1E,IACAkuG,EAAK67O,EAAYxoP,WAAW,SAAUqvI,EAAWvG,GAC/C,IAAIpvO,EAAO21O,EAAUl3O,IAAI,QAEzB,GAAKlD,KAAKgzV,iBAA6B,KAATvuV,GAAwB,OAATA,EAA7C,CAQA,IAAImvO,EAAclB,EAAQuhH,gBAAgBxvV,GAAM,GAEhD,IAAIqvV,EAAe5wV,IAAIuB,GAMvB,GAAImvO,EAAa,CACf,IAAI30N,EAAO20N,EAAY7oI,UACnBn6E,EAAQ3R,EAAKq+N,UAAU,SACvBzZ,EAAc5kN,EAAKq+N,UAAU,eAEZ,oBAAV1sN,IAETA,EAAQA,EAAMgjN,EAAY4kB,cAAc,KAIf,oBAAhB30B,IAETA,EAAcA,EAAY+P,EAAY4kB,cAAc,KAItD,IAAI07F,EAAmBj1U,EAAKq+N,UAAU,iBAAmB,YACrD8F,EAAankO,EAAKq+N,UAAU,UAE5B+hD,EAAYr/R,KAAKm0V,YAAY1vV,EAAMovO,EAAWuG,EAAWm5G,EAAaW,EAAkB9wG,EAAYqwG,EAAW7iU,EAAOizM,EAAakwH,GAEvI10D,EAAU57N,GAAG,QAASoyK,EAAMu+G,EAAsB3vV,EAAM,KAAMkmG,EAAKqpP,IAAkBvwR,GAAG,YAAaoyK,EAAMw+G,EAAyBzgH,EAAYnvO,KAAM,KAAMkmG,EAAKqpP,IAAkBvwR,GAAG,WAAYoyK,EAAMy+G,EAAwB1gH,EAAYnvO,KAAM,KAAMkmG,EAAKqpP,IAC7PF,EAAethV,IAAI/N,GAAM,EAC3B,MAEEiuO,EAAQw/G,eAAc,SAAUt+G,GAE9B,IAAIkgH,EAAe5wV,IAAIuB,IAInBmvO,EAAYonB,qBAAsB,CACpC,IAAIo3F,EAAWx+G,EAAYonB,qBAE3B,IAAKo3F,EAASmC,YAAY9vV,GACxB,OAGF,IAAI0iG,EAAMirP,EAASl9D,YAAYzwR,GAC3BmsB,EAAQwhU,EAAS/0G,cAAcl2I,EAAK,SACpC08H,EAAcuuH,EAAS/0G,cAAcl2I,EAAK,eAC1C+sP,EAAmB,YAEnB70D,EAAYr/R,KAAKm0V,YAAY1vV,EAAMovO,EAAWuG,EAAWm5G,EAAaW,EAAkB,KAAMT,EAAW7iU,EAAOizM,EAAakwH,GAGjI10D,EAAU57N,GAAG,QAASoyK,EAAMu+G,EAAsB,KAAM3vV,EAAMkmG,EAAKqpP,IAElEvwR,GAAG,YAAaoyK,EAAMw+G,EAAyB,KAAM5vV,EAAMkmG,EAAKqpP,IAAkBvwR,GAAG,WAAYoyK,EAAMy+G,EAAwB,KAAM7vV,EAAMkmG,EAAKqpP,IACjJF,EAAethV,IAAI/N,GAAM,EAC3B,CACF,GAAGzE,KA/DL,MAJE6zV,EAAatzV,IAAI,IAAI62O,EAAM,CACzBo9G,SAAS,IAoEf,GAAGx0V,MAEC4/E,GACF5/E,KAAKy0V,gBAAgB70Q,EAAU2zQ,EAAa5oP,EAAK/4D,EAAQghT,EAE7D,EACA6B,gBAAiB,SAAU70Q,EAAU2zQ,EAAa5oP,EAAK/4D,EAAQghT,GAC7D,IAAI8B,EAAgB10V,KAAKszV,mBAKzB,SAASqB,EAAqBC,GAC5B,IAAIpwV,EAAOowV,EAAapwV,KACpB0tD,EAAY,IAAI4kL,EAAQoc,KAAK,CAC/BtnP,MAAO,CACLkU,EAAG,EACH6e,EAAG,EACHob,MAAO,SACPijN,cAAe,UAEjB44C,QAAS,WACPjrM,EAAIi9J,eAAe,CACjBpjQ,KAAe,QAATA,EAAiB,kBAAoB,uBAE/C,IAEFkwV,EAAcn0V,IAAI2xD,GAClB,IAAI61L,EAAawrG,EAAY/5G,SAAS,iBAClCkkE,EAAqB61C,EAAY/5G,SAAS,0BAC9C1C,EAAQmR,cAAc/1L,EAAUtmD,MAAOsmD,EAAUsrL,WAAa,CAAC,EAAGuK,EAAY21D,EAAoB,CAChGt1D,YAAawsG,EAAatpT,MAC1B+8M,YAAY,IAEdvR,EAAQ8G,cAAc1rL,EACxB,CA3BAwlD,EAAK93B,GAAU,SAAUg1Q,GACvBD,EAAqBC,EACvB,GA0BF,EACAT,YAAa,SAAU1vV,EAAMovO,EAAWuG,EAAWm5G,EAAaW,EAAkB9wG,EAAYqwG,EAAW7iU,EAAOizM,EAAakwH,GAC3H,IAAIt1F,EAAY80F,EAAYrwV,IAAI,aAC5Bs7P,EAAa+0F,EAAYrwV,IAAI,cAC7BuvV,EAAgBc,EAAYrwV,IAAI,iBAChCwvV,EAAsBa,EAAYrwV,IAAI,uBACtC2xV,EAAmBtB,EAAYrwV,IAAI,oBACnC4xV,EAAuBvB,EAAY/5G,SAAS,aAC5Cl/B,EAAai5I,EAAYj5I,WAAW71M,GACpC46R,EAAY,IAAIjoD,EAChB29D,EAAiB36D,EAAUZ,SAAS,aACpCu7G,EAAW36G,EAAUl3O,IAAI,QACzB8xV,EAAe56G,EAAUZ,SAAS,WAClCy7G,EAA2BD,EAAajuG,YAE5CmtG,EAAmBa,GAAYb,EAC/B,IAAIxnG,EAAelL,EAAa0yG,EAAkB,EAAG,EAAGz1F,EAAWD,EAAYlkD,EAAa1pL,EAAQ6hU,EAChF,MAApBoC,GAAkCA,GAIlC,GAHAx1D,EAAU9+R,IAAI20V,EAAexoG,EAAcwnG,EAAkBY,EAAsBjxH,EAAa6uH,EAAqBp4I,KAGhHy6I,GAAY3xG,IACbA,IAAe8wG,GAAmC,SAAf9wG,GAAwB,CAC7D,IAAI95J,EAAoB,GAAbk1K,EAEQ,SAAfpb,IACFA,EAAa,UAGf,IAAI+xG,EAAqB3zG,EAAa4B,GAAaqb,EAAYn1K,GAAQ,GAAIk1K,EAAal1K,GAAQ,EAAGA,EAAMA,EAAMgxH,EAAa1pL,EAAQ6hU,EAChH,MAApBoC,GAAkCA,GAElCx1D,EAAU9+R,IAAI20V,EAAeC,EAAoB/xG,EAAY0xG,EAAsBjxH,EAAa6uH,EAAqBp4I,GACvH,CAEA,IAAI3H,EAAsB,SAAd8gJ,EAAuBh1F,EAAY,GAAK,EAChDpkO,EAAYo5T,EACZnlT,EAAYilT,EAAYrwV,IAAI,aAC5B0hC,EAAUngC,EAEW,kBAAd6pC,GAA0BA,EACnC1J,EAAU0J,EAAU1yB,QAAQ,SAAkB,MAARnX,EAAeA,EAAO,IAC9B,oBAAd6pC,IAChB1J,EAAU0J,EAAU7pC,IAGtB46R,EAAU9+R,IAAI,IAAIu2O,EAAQoc,KAAK,CAC7BtnP,MAAOkrO,EAAQmf,aAAa,CAAC,EAAG8+C,EAAgB,CAC9Cp4Q,KAAMiI,EACN9kB,EAAG6yL,EACHh0K,EAAG6/N,EAAa,EAChBh8B,SAAUloB,EAAay6F,EAAe/5B,eAAiBy3E,EACvDp4T,UAAWA,EACX0iO,kBAAmB,cAIvB,IAAIq4F,EAAU,IAAIt+G,EAAQuF,KAAK,CAC7B7mN,MAAO6pQ,EAAUr2B,kBACjBjV,WAAW,EACXwyB,QAASyuE,EAAa9xV,IAAI,QAAUovO,EAAO5uH,OAAO,CAChD9+E,QAASngC,EAET6pC,UAAW2mT,EAAyB/xV,IAAI,aAAa,IAAS,WAC5D,OAAOuB,CACT,EACA60T,gBAAiB,CACfplF,cAAe,SACfmhH,YAAa9B,EAAY7+C,eACzBjwS,KAAMA,EACNg3P,MAAO,CAAC,UAETu5F,EAAajqT,QAAU,OAU5B,OARAs0P,EAAU9+R,IAAI60V,GACd/1D,EAAU9pB,WAAU,SAAUxuK,GAC5BA,EAAMooD,QAAS,CACjB,IACAimM,EAAQjmM,QAAU4kM,EAClB/zV,KAAKqzV,kBAAkB9yV,IAAI8+R,GAC3BvoD,EAAQ8G,cAAcyhD,GACtBA,EAAUi2D,kBAAoBzhH,EACvBwrD,CACT,EAKAu0D,YAAa,SAAUL,EAAaE,EAAW/3F,EAASkgC,EAAeh8M,EAAUgzQ,GAC/E,IAAIiB,EAAe7zV,KAAKqzV,kBACpBqB,EAAgB10V,KAAKszV,mBAEzBnX,EAAWt5I,IAAI0wJ,EAAYrwV,IAAI,UAAW2wV,EAAcN,EAAYrwV,IAAI,WAAYw4P,EAAQlzN,MAAOkzN,EAAQjzN,QAC3G,IAAI8sT,EAAc1B,EAAa7qF,kBAC3BwsF,EAAa,EAAED,EAAYz1U,GAAIy1U,EAAY52T,GAE/C,GAAIihD,EAAU,CAEZu8P,EAAWt5I,IACX,aAAc6xJ,EAAenB,EAAYrwV,IAAI,mBAAmB,IAChE,IAAIuyV,EAAef,EAAc1rF,kBAC7B0sF,EAAc,EAAED,EAAa31U,GAAI21U,EAAa92T,GAC9Cm0T,EAAoBS,EAAYrwV,IAAI,qBAAqB,GACzDyyV,EAAYpC,EAAY1kD,YAAY5sS,MACpC6/O,EAAmB,IAAd6zG,EAAkB,QAAU,SACjCx0J,EAAmB,IAAdw0J,EAAkB,SAAW,QAClCC,EAAmB,IAAdD,EAAkB,IAAM,IAER,QAArB/C,EACF8C,EAAYC,IAAcJ,EAAYzzG,GAAMgxG,EAE5C0C,EAAWG,IAAcF,EAAa3zG,GAAMgxG,EAI9C4C,EAAY,EAAIC,IAAcJ,EAAYp0J,GAAM,EAAIs0J,EAAat0J,GAAM,EACvEuzJ,EAAc79T,KAAK,WAAY6+T,GAC/B7B,EAAah9T,KAAK,WAAY2+T,GAC9B,IAAI7B,EAAW,CACb7zU,EAAG,EACH6e,EAAG,GAKL,OAHAg1T,EAAS7xG,GAAMyzG,EAAYzzG,GAAMgxG,EAAoB2C,EAAa3zG,GAClE6xG,EAASxyJ,GAAMh7L,KAAKwI,IAAI4mV,EAAYp0J,GAAKs0J,EAAat0J,IACtDwyJ,EAASiC,GAAMzvV,KAAKyI,IAAI,EAAG6mV,EAAaG,GAAMF,EAAY,EAAIC,IACvDhC,CACT,CAEE,OADAE,EAAah9T,KAAK,WAAY2+T,GACvBx1V,KAAKk7C,MAAM8tN,iBAEtB,EAKApsL,OAAQ,WACN58E,KAAKqzV,kBAAkBl4G,YACvBn7O,KAAKozV,gBAAiB,CACxB,IAGF,SAAS8B,EAAejzU,EAAQmhO,EAAY0xG,EAAsBjxH,EAAa6uH,EAAqBp4I,GAClG,IAAIilC,EAaJ,MAXmB,SAAf6D,GAAyBA,EAAW/rO,QAAQ,SAAW,GACzDkoO,EAAYu1G,EAAqBt1G,eACjCv9N,EAAOrW,MAAMytB,OAASwqM,EAEjBvpB,IACHilC,EAAUlmN,OAASq5T,IAGrBnzG,EAAYu1G,EAAqBt1G,aAAa,CAAC,cAAe,gBAGzDv9N,EAAO4pK,SAAS0zD,EACzB,CAEA,SAAS60G,EAAqB/+F,EAAYwgG,EAAUlrP,EAAKqpP,GAEvDM,EAAuBj/F,EAAYwgG,EAAUlrP,EAAKqpP,GAClDrpP,EAAIi9J,eAAe,CACjBpjQ,KAAM,qBACNC,KAAoB,MAAd4wP,EAAqBA,EAAawgG,IAG1CxB,EAAwBh/F,EAAYwgG,EAAUlrP,EAAKqpP,EACrD,CAEA,SAASK,EAAwBh/F,EAAYwgG,EAAUlrP,EAAKqpP,GAE1D,IAAIpyV,EAAK+oG,EAAIoqJ,QAAQwlD,QAAQu7C,iBAAiB,GAExCl0V,GAAMA,EAAGg3P,eACbjuJ,EAAIi9J,eAAe,CACjBpjQ,KAAM,YACN6wP,WAAYA,EACZ5wP,KAAMoxV,EACN7B,gBAAiBA,GAGvB,CAEA,SAASM,EAAuBj/F,EAAYwgG,EAAUlrP,EAAKqpP,GAEzD,IAAIpyV,EAAK+oG,EAAIoqJ,QAAQwlD,QAAQu7C,iBAAiB,GAExCl0V,GAAMA,EAAGg3P,eACbjuJ,EAAIi9J,eAAe,CACjBpjQ,KAAM,WACN6wP,WAAYA,EACZ5wP,KAAMoxV,EACN7B,gBAAiBA,GAGvB,CAEA7yV,EAAOD,QAAUusB,C,wBC/cjB,IAAIkkU,EAAcnpU,EAAQ,OAEtB4jP,EAAU5jP,EAAQ,MAElBk2T,EAAmBtyE,EAAQsyE,iBAC3BjJ,EAAkBrpE,EAAQqpE,gBAoB1BsgB,EAAwBpE,EAAYjuO,OAAO,CAC7Cl/G,KAAM,gBAKNwxV,mBAAoB,SAAUC,GAC5Bj2V,KAAK+qC,OAAOkrT,gBAAkBA,CAChC,EACAz/G,cAAe,CACby/G,gBAAiB,EACjBC,kBAAmB,EACnBC,cAAe,KACfC,mBAAoB,MAEpBC,cAAe,oBAEfC,UAAW,CACTnvS,WAAY,CAAC,qBAAsB,wBACnCC,SAAU,CAAC,oBAAqB,qBAElCmvS,cAAe,UACfC,sBAAuB,OACvBC,aAAc,GAEdC,cAAe,CACb9lU,MAAO,QAET43Q,wBAAyB,KAM3B9wO,KAAM,SAAU3sB,EAAQg8M,EAAarU,EAASikH,GAC5C,IAAIC,EAAsBnhB,EAAgB1qS,GAC1CgrT,EAAsBx6F,UAAUv7P,KAAM,OAAQ+qC,EAAQg8M,EAAarU,EAASikH,GAC5EE,EAA8B72V,KAAM+qC,EAAQ6rT,EAC9C,EAKA9zF,YAAa,SAAU/3N,EAAQ4rT,GAC7BZ,EAAsBx6F,UAAUv7P,KAAM,cAAe+qC,EAAQ4rT,GAC7DE,EAA8B72V,KAAMA,KAAK+qC,OAAQA,EACnD,IAGF,SAAS8rT,EAA8BtD,EAAa7tV,EAAQoxV,GAC1D,IAAIllT,EAAS2hT,EAAY1kD,YACrB8vC,EAAa,CAAC,EAAG,GACrBA,EAAW/sS,EAAO3vC,OAAS,EAC3By8U,EAAiBh5U,EAAQoxV,EAAK,CAC5BtyV,KAAM,MACNm6U,WAAYA,GAEhB,CAEA,IAAIlxT,EAAWsoU,EACf50V,EAAOD,QAAUusB,C,wBCrFjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAElB2zT,EAAa3zT,EAAQ,MAErBuuU,EAAavuU,EAAQ,OAwBrB4uN,EAAQN,EAAQM,MAChB+zE,EAAK,CAAC,QAAS,UACfD,EAAK,CAAC,IAAK,KACX8rC,EAAuBD,EAAWrzO,OAAO,CAC3Cl/G,KAAM,gBACNwuV,iBAAiB,EACjBt7R,KAAM,WACJs/R,EAAqBz7F,UAAUv7P,KAAM,QAMrCA,KAAKi3V,cAAgB,EAMrBj3V,KAAKk7C,MAAM36C,IAAIP,KAAKu4S,gBAAkB,IAAInhE,GAE1Cp3O,KAAKu4S,gBAAgBh4S,IAAIP,KAAKqzV,mBAO9BrzV,KAAKk7C,MAAM36C,IAAIP,KAAKk3V,iBAAmB,IAAI9/G,GAM3Cp3O,KAAKm3V,eACP,EAKA3D,WAAY,WACVwD,EAAqBz7F,UAAUv7P,KAAM,cAErCA,KAAKk3V,iBAAiB/7G,YAEtBn7O,KAAKu4S,gBAAgBl/D,iBAErBr5O,KAAKu4S,gBAAgB6+C,WAAa,IACpC,EAKA1D,YAAa,SAAUD,EAAWF,EAAa7gH,EAAS/nI,EAAK/qB,EAAUhuC,EAAQghT,GAC7E,IAAIyE,EAAKr3V,KAETg3V,EAAqBz7F,UAAUv7P,KAAM,cAAeyzV,EAAWF,EAAa7gH,EAAS/nI,EAAK/qB,EAAUhuC,EAAQghT,GAC5G,IAAI0E,EAAkBt3V,KAAKk3V,iBAGvBT,EAAelD,EAAYrwV,IAAI,gBAAgB,GAE9CovO,EAAOxrO,QAAQ2vV,KAClBA,EAAe,CAACA,EAAcA,IAGhCc,EAAiB,WAAY,GAC7B,IAAIC,EAAqBjE,EAAY/5G,SAAS,iBAa9C,SAAS+9G,EAAiB9yV,EAAMgzV,GAC9B,IAAIC,EAAoBjzV,EAAO,YAC3BihD,EAAOoxL,EAAQ0wE,WAAW+rC,EAAYrwV,IAAI,aAAa,GAAMqwV,EAAY1kD,YAAYpqS,MAAMgzV,GAAU,CAGvG7hD,QAAStjE,EAAOv1N,KAAKs6U,EAAGM,QAASN,EAAIK,EAAmBnE,EAAa5oP,IACpE,CACD7qF,GAAI22U,EAAa,GAAK,EACtB93T,GAAI83T,EAAa,GAAK,EACtBjuT,MAAOiuT,EAAa,GACpBhuT,OAAQguT,EAAa,KAEvB/wS,EAAKjhD,KAAOA,EACZ6yV,EAAgB/2V,IAAImlD,EACtB,CA1BA4xS,EAAgB/2V,IAAI,IAAIu2O,EAAQoc,KAAK,CACnCzuP,KAAM,WACNmH,MAAO,CACL42N,SAAUg1H,EAAmBx8E,eAC7Bl/O,KAAM07T,EAAmBjhG,UACzBwG,kBAAmB,SACnB1iO,UAAW,UAEb80H,QAAQ,KAEVooM,EAAiB,WAAY,EAiB/B,EAKA3D,YAAa,SAAUL,EAAaE,EAAW/3F,EAASkgC,EAAeh8M,EAAUgzQ,GAC/E,IAAI8B,EAAgB10V,KAAKszV,mBACrBqC,EAAYpC,EAAY1kD,YAAY5sS,MACpC6/O,EAAKqpE,EAAGwqC,GACR9zG,EAAKqpE,EAAGyqC,GACRx0J,EAAKgqH,EAAG,EAAIwqC,GACZC,EAAK1qC,EAAG,EAAIyqC,GAChB/1Q,GAAYu8P,EAAWt5I,IACvB,aAAc6xJ,EAAenB,EAAYrwV,IAAI,mBAAmB,IAChE,IAAI4vV,EAAoBS,EAAYrwV,IAAI,qBAAqB,GACzDuyV,EAAef,EAAc1rF,kBAC7B0sF,EAAc,EAAED,EAAa31U,GAAI21U,EAAa92T,GAC9Ci5T,EAAiBtlH,EAAOh+M,MAAMonO,GAClC97K,IAAag4Q,EAAe91G,GAAM4Z,EAAQ5Z,GAAM2zG,EAAa3zG,GAAMgxG,GAEnE,IAAIa,EAAW3zV,KAAK63V,4BAA4BtE,EAAa33D,EAAeg8D,EAAgBjC,EAAW7zG,EAAI3gD,EAAIy0J,GAE/G,GAAIh2Q,EAAU,CACZ,GAAyB,QAArBgzQ,EACF8C,EAAYC,IAAchC,EAAS7xG,GAAMgxG,MACpC,CACL,IAAI3lU,EAASsoU,EAAa3zG,GAAMgxG,EAChC4C,EAAYC,IAAcxoU,EAC1BwmU,EAAS9xG,IAAO10N,CAClB,CAEAwmU,EAAS7xG,IAAO2zG,EAAa3zG,GAAMgxG,EACnC4C,EAAY,EAAIC,IAAchC,EAASiC,GAAMjC,EAASxyJ,GAAM,EAAIs0J,EAAat0J,GAAM,EACnFwyJ,EAASxyJ,GAAMh7L,KAAKwI,IAAIglV,EAASxyJ,GAAKs0J,EAAat0J,IACnDwyJ,EAASiC,GAAMzvV,KAAKyI,IAAI+kV,EAASiC,GAAKH,EAAaG,GAAMF,EAAY,EAAIC,IACzEjB,EAAc79T,KAAK,WAAY6+T,EACjC,CAEA,OAAO/B,CACT,EACAkE,4BAA6B,SAAUtE,EAAa33D,EAAelgC,EAASi6F,EAAW7zG,EAAI3gD,EAAIy0J,GAC7F,IAAI/B,EAAe7zV,KAAKqzV,kBACpBj/C,EAAiBp0S,KAAKu4S,gBACtB++C,EAAkBt3V,KAAKk3V,iBAE3B/a,EAAWt5I,IAAI0wJ,EAAYrwV,IAAI,UAAW2wV,EAAcN,EAAYrwV,IAAI,WAAayyV,EAAmBj6F,EAAQlzN,MAAf,KAAsBmtT,EAAY,KAAOj6F,EAAQjzN,QAClJ0zS,EAAWt5I,IACX,aAAcy0J,EAAiB/D,EAAYrwV,IAAI,qBAAqB,IACpE,IAAIqyV,EAAc1B,EAAa7qF,kBAC3B8uF,EAAiBR,EAAgBtuF,kBACjC+uF,EAAiB/3V,KAAKm3V,gBAAkB5B,EAAYzzG,GAAM4Z,EAAQ5Z,GAClE0zG,EAAa,EAAED,EAAYz1U,GAAIy1U,EAAY52T,GAI1Ci9P,IACH45D,EAAWG,GAAa9B,EAAa/hU,SAAS6jU,IAIhD,IAAIqC,EAAe,CAAC,EAAG,GACnBC,EAAgB,EAAEH,EAAeh4U,GAAIg4U,EAAen5T,GACpDw3T,EAAgB7jH,EAAOwc,UAAUykG,EAAYrwV,IAAI,iBAAiB,GAAOqwV,EAAYrwV,IAAI,WAAW,IAExG,GAAI60V,EAAgB,CAClB,IAAI3B,EAAqB7C,EAAYrwV,IAAI,sBAAsB,GAEpC,QAAvBkzV,EACF6B,EAActC,IAAcj6F,EAAQ5Z,GAAMg2G,EAAeh2G,GAGvDk2G,EAAarC,IAAcmC,EAAeh2G,GAAMq0G,CAEtD,CAGA8B,EAAc,EAAItC,IAAcJ,EAAYp0J,GAAM,EAAI22J,EAAe32J,GAAM,EAC3E0yJ,EAAah9T,KAAK,WAAY2+T,GAC9BphD,EAAev9Q,KAAK,WAAYmhU,GAChCV,EAAgBzgU,KAAK,WAAYohU,GAIjC,IAAItE,EAAW,CACb7zU,EAAG,EACH6e,EAAG,GASL,GANAg1T,EAAS7xG,GAAMi2G,EAAiBr8F,EAAQ5Z,GAAMyzG,EAAYzzG,GAC1D6xG,EAASxyJ,GAAMh7L,KAAKwI,IAAI4mV,EAAYp0J,GAAK22J,EAAe32J,IAExDwyJ,EAASiC,GAAMzvV,KAAKyI,IAAI,EAAGkpV,EAAelC,GAAMqC,EAAc,EAAItC,IAClEvhD,EAAegjD,WAAa17F,EAAQ5Z,GAEhCi2G,EAAgB,CAClB,IAAIxyG,EAAY,CACdzlO,EAAG,EACH6e,EAAG,GAEL4mN,EAAUzD,GAAM37O,KAAKwI,IAAI+sP,EAAQ5Z,GAAMg2G,EAAeh2G,GAAMq0G,EAAe,GAC3E5wG,EAAUpkD,GAAMwyJ,EAASxyJ,GACzBizG,EAAe94D,YAAY,IAAIxE,EAAQuF,KAAK,CAC1C7mN,MAAO+vN,KAIT6uD,EAAegjD,WAAa7xG,EAAUzD,EACxC,MAEEw1G,EAAgB/hF,WAAU,SAAUxuK,GAClCA,EAAMlwE,KAAK,CACTk9N,WAAW,EACX5kG,QAAQ,GAEZ,IAIF,IAAI+oM,EAAWl4V,KAAKm4V,aAAa5E,GAUjC,OARsB,MAAtB2E,EAASE,WAAqBthH,EAAQ+D,YAAYg5G,EAAc,CAC9D/hU,SAAUomU,EAASG,mBAGrBN,GAAiBxE,GAEjBvzV,KAAKs4V,oBAAoB/E,EAAa2E,GAE/BvE,CACT,EACAgE,QAAS,SAAUn+N,EAAI+5N,EAAa5oP,GAClC,IAAIsrP,EAAkBj2V,KAAKm4V,aAAa5E,GAAa/5N,GAElC,MAAnBy8N,GAA2BtrP,EAAIi9J,eAAe,CAC5CpjQ,KAAM,eACNyxV,gBAAiBA,EACjBsC,SAAUhF,EAAY/pV,IAE1B,EACA8uV,oBAAqB,SAAU/E,EAAa2E,GAC1C,IAAIZ,EAAkBt3V,KAAKk3V,iBAC3B5kH,EAAO56H,KAAK,CAAC,WAAY,aAAa,SAAUjzG,GAC9C,IAAI+zV,EAA0C,MAAhCN,EAASzzV,EAAO,aAC1BihD,EAAO4xS,EAAgB/9E,YAAY90Q,GAEnCihD,IACFA,EAAKmmI,SAAS,OAAQ2sK,EAAUjF,EAAYrwV,IAAI,iBAAiB,GAAQqwV,EAAYrwV,IAAI,yBAAyB,IAClHwiD,EAAKhzB,OAAS8lU,EAAU,UAAY,UAExC,IACA,IAAIC,EAAWnB,EAAgB/9E,YAAY,YACvC88E,EAAgB9C,EAAYrwV,IAAI,iBAChCk1V,EAAYF,EAASE,UACrBh4U,EAAuB,MAAbg4U,EAAoBA,EAAY,EAAI,EAC9ClsU,EAAQgsU,EAASQ,UACrBD,GAAYpC,GAAiBoC,EAAS5sK,SAAS,OAAQymD,EAAOohF,SAAS2iC,GAAiBA,EAAcz6U,QAAQ,YAAawE,GAASxE,QAAQ,UAAWsQ,GAASmqU,EAAc,CAC5Kj2U,QAASA,EACT8L,MAAOA,IAEX,EAYAisU,aAAc,SAAU5E,GACtB,IAAI0C,EAAkB1C,EAAYrwV,IAAI,mBAAmB,GACrD2wV,EAAe7zV,KAAKqzV,kBACpBsF,EAAoB34V,KAAKu4S,gBAAgB6+C,WACzCzB,EAAYpC,EAAY1kD,YAAY5sS,MACpC6/O,EAAKqpE,EAAGwqC,GACR9zG,EAAKqpE,EAAGyqC,GAERiD,EAAkB54V,KAAK64V,qBAAqB5C,GAE5Cl3Q,EAAW80Q,EAAa90Q,WACxB+5Q,EAAa/5Q,EAAS65Q,GACtBG,EAAYh6Q,EAAS/8E,OACrBg3V,EAAUD,EAAgB,EAAJ,EACtBr1V,EAAS,CACX20V,gBAAiBxE,EAAa/hU,SAAS3vB,QACvCu2V,UAAWM,EACXZ,UAAWY,EAAS,EACpBC,kBAAmB,KACnBC,kBAAmB,MAGrB,IAAKJ,EACH,OAAOp1V,EAGT,IAAIy1V,EAAiBC,EAAYN,GACjCp1V,EAAO20V,gBAAgB1C,IAAcwD,EAAe7qV,EAYpD,IAAK,IAAItK,EAAI40V,EAAkB,EAAGS,EAAmBF,EAAgBG,EAAiBH,EAAgBI,EAAe,KAAMv1V,GAAK+0V,IAAa/0V,EAC3Iu1V,EAAeH,EAAYr6Q,EAAS/6E,MAGnCu1V,GAAgBD,EAAerzV,EAAIozV,EAAiB/qV,EAAIqqV,GAEzDY,IAAiB/jO,EAAU+jO,EAAcF,EAAiB/qV,MAEtD+qV,EADEC,EAAet1V,EAAIq1V,EAAiBr1V,EACnBs1V,EAGAC,EAGjBF,IAC8B,MAA5B31V,EAAOw1V,oBACTx1V,EAAOw1V,kBAAoBG,EAAiBr1V,KAG5CN,EAAOg1V,YAIbY,EAAiBC,EAGnB,IAASv1V,EAAI40V,EAAkB,EAAGS,EAAmBF,EAAgBG,EAAiBH,EAAgBI,EAAe,KAAMv1V,IAAM,IAAKA,EACpIu1V,EAAeH,EAAYr6Q,EAAS/6E,IAIlCu1V,GAAiB/jO,EAAU8jO,EAAgBC,EAAajrV,MAC1D+qV,EAAiBr1V,EAAIs1V,EAAet1V,KAClCs1V,EAAiBD,EAEe,MAA5B31V,EAAOu1V,oBACTv1V,EAAOu1V,kBAAoBI,EAAiBr1V,KAG5CN,EAAOg1V,YACPh1V,EAAO00V,WAGXiB,EAAmBE,EAGrB,OAAO71V,EAEP,SAAS01V,EAAYx3V,GACnB,GAAIA,EAAI,CACN,IAAI43V,EAAW53V,EAAGonQ,kBACdtqN,EAAQ86S,EAAS33G,GAAMjgP,EAAGkwB,SAAS6jU,GACvC,MAAO,CACLrnV,EAAGowC,EACHz4C,EAAGy4C,EAAQ86S,EAAS13G,GACpB99O,EAAGpC,EAAG0zV,kBAEV,CACF,CAEA,SAAS9/N,EAAUikO,EAAUC,GAC3B,OAAOD,EAASxzV,GAAKyzV,GAAYD,EAASnrV,GAAKorV,EAAWf,CAC5D,CACF,EACAE,qBAAsB,SAAUc,GAC9B,IAAK35V,KAAKm3V,gBACR,OAAO,EAGT,IAAIl1V,EAEA23V,EADA/F,EAAe7zV,KAAKqzV,kBAiBxB,OAfAQ,EAAat+E,WAAU,SAAUxuK,EAAOI,GACtC,IAAI0yP,EAAgB9yP,EAAMuuP,kBAMN,MAAhBsE,GAAyC,MAAjBC,IAC1BD,EAAezyP,GAGb0yP,IAAkBF,IACpB13V,EAAQklG,EAEZ,IACgB,MAATllG,EAAgBA,EAAQ23V,CACjC,IAEEnsU,EAAWupU,EACf71V,EAAOD,QAAUusB,C,wBC1ajB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAoBrB,SAASsxU,EAA0BC,EAAYvmH,EAASd,GACtD,IAEIp4B,EAFA0/I,EAAc,CAAC,EACfC,EAAgC,mBAAfF,EAoCrB,OAjCArnH,EAAQe,cAAc,UAAU,SAAU8/G,GACpC0G,GAAgC,MAAd3/I,EAKpBi5I,EAAYj5I,EAAa,SAAW,YAAYk5B,EAAQ/uO,MAChC,cAAfs1V,GAA6C,kBAAfA,EACvCxG,EAAYwG,MAEZxG,EAAYwG,GAAYvmH,EAAQ/uO,MAChC61M,EAAai5I,EAAYj5I,WAAWk5B,EAAQ/uO,OAG9C,IAAIqtV,EAAayB,EAAYxoP,UAC7BunI,EAAO56H,KAAKo6O,GAAY,SAAUvgG,GAChC,IAAI9sP,EAAO8sP,EAAMruP,IAAI,QAErB,GAAa,OAATuB,GAA0B,KAATA,EAArB,CAIA,IAAIy1V,EAAiB3G,EAAYj5I,WAAW71M,GAExCu1V,EAAY1zV,eAAe7B,GAE7Bu1V,EAAYv1V,GAAQu1V,EAAYv1V,IAASy1V,EAEzCF,EAAYv1V,GAAQy1V,CARtB,CAUF,GACF,IAEsB,cAAfH,GAA6C,kBAAfA,EAAiC,CACpE5nO,SAAU6nO,GACR,CACFv1V,KAAM+uO,EAAQ/uO,KACd0tH,SAAU6nO,EAEd,CAUA7mH,EAAQI,eAAe,qBAAsB,sBAAuBjB,EAAOuD,MAAMikH,EAA2B,mBAC5G3mH,EAAQI,eAAe,kBAAmB,kBAAmBjB,EAAOuD,MAAMikH,EAA2B,cACrG3mH,EAAQI,eAAe,sBAAuB,sBAAuBjB,EAAOuD,MAAMikH,EAA2B,kBAQ7G3mH,EAAQI,eAAe,eAAgB,iBAAkBjB,EAAOuD,MAAMikH,EAA2B,WAQjG3mH,EAAQI,eAAe,iBAAkB,mBAAoBjB,EAAOuD,MAAMikH,EAA2B,Y,mBC5ErG,SAASrsU,EAASilN,GAChB,IAAIi4B,EAAej4B,EAAQk4B,eAAe,CACxCl3B,SAAU,WAGRi3B,GAAgBA,EAAa3oQ,QAC/B0wO,EAAQynH,cAAa,SAAUnuT,GAG7B,IAAK,IAAIhoC,EAAI,EAAGA,EAAI2mQ,EAAa3oQ,OAAQgC,IACvC,IAAK2mQ,EAAa3mQ,GAAGs2M,WAAWtuK,EAAOvnC,MACrC,OAAO,EAIX,OAAO,CACT,GAEJ,CAEAtD,EAAOD,QAAUusB,C,wBCtCjB,IAAI0lN,EAAU3qN,EAAQ,OA2BtB2qN,EAAQI,eAAe,eAAgB,gBAAgB,SAAUC,EAASd,GACxE,IAAIujH,EAAkBziH,EAAQyiH,gBACX,MAAnBA,GAA2BvjH,EAAQe,cAAc,CAC/CC,SAAU,SACVC,QAAS,SACT9yI,MAAO2yI,IACN,SAAU+/G,GACXA,EAAYyC,mBAAmBC,EACjC,GACF,G,wBCpCA,IAAI9iH,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAoBR2qN,EAAQ6Z,sBAAqB,SAAUnqJ,GAErCA,EAAIu3P,SAAWv3P,EAAIu3P,UAAY,CAAC,CAClC,G,wBC3BA,IAAIjnH,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAoBR2qN,EAAQ6Z,sBAAqB,SAAUnqJ,GAErCA,EAAIw3P,SAAWx3P,EAAIw3P,UAAY,CAAC,CAClC,G,wBC3BA,IAAIlnH,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAqBR2qN,EAAQ6Z,sBAAqB,SAAUnqJ,GAErCA,EAAIy3P,UAAYz3P,EAAIy3P,WAAa,CAAC,CACpC,G,wBC5BA,IAAIC,EAAc/xU,EAAQ,OAoBtBiF,EAAW8sU,EAAY72O,OAAO,CAChCl/G,KAAM,WACNgyO,cAAe,CACb4J,OAAQ,EAERroK,EAAG,EACHwuM,QAAS,CACPv2K,QAAS,QAGXh/E,WAAW,EACXke,MAAO,CACLxB,MAAM,EACN5b,SAAU,OAEZytN,UAAW,CAIT13K,YAAa,GAEf64K,SAAU,CACRxxM,MAAO,CACLxB,MAAM,EACN5b,SAAU,WAMlB3wB,EAAOD,QAAUusB,C,wBClDjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBgyU,EAAYhyU,EAAQ,MAEpBy5O,EAAOz5O,EAAQ,OAEfmlR,EAAanlR,EAAQ,OAErBsuN,EAAUtuN,EAAQ,OAElBiyU,EAAejyU,EAAQ,OAEvBkyU,EAAalyU,EAAQ,OAqBrBmyU,EAAoB,SAAU/mH,EAAaf,EAAU+nH,EAASp1U,GAChE,IAAI9Z,EAAK+uV,EAAaI,cAAcjnH,EAAapuN,EAAK,IAClDgoK,EAAKitK,EAAaI,cAAcjnH,EAAapuN,EAAK,IAClDk/N,EAAWpS,EAAOoS,SAElBo2G,EAAUpvV,EAAGksO,MACbmjH,EAAUvtK,EAAGoqD,MACjBkjH,EAAQ,GAAKp2G,EAASo2G,EAAQ,IAAKjoQ,KACnCioQ,EAAQ,GAAKp2G,EAASo2G,EAAQ,IAAKjoQ,KACnCkoQ,EAAQ,GAAKr2G,EAASq2G,EAAQ,GAAIloQ,KAClCkoQ,EAAQ,GAAKr2G,EAASq2G,EAAQ,GAAIloQ,KAElC,IAAInvF,EAAS4uO,EAAOi+C,SAAS,CAAC,CAAC,EAAG7kR,EAAI8hL,IAMtC,OALA9pL,EAAOk0O,MAAQ,CAAClsO,EAAGksO,MAAOpqD,EAAGoqD,OAC7Bl0O,EAAOklN,GAAKl9M,EAAGoU,EACfpc,EAAO67L,GAAK7zL,EAAGizB,EACfj7B,EAAOomC,GAAK0jJ,EAAG1tK,EACfpc,EAAOqmC,GAAKyjJ,EAAG7uJ,EACRj7B,CACT,EAEA,SAASs3V,EAAYhsV,GACnB,OAAQD,MAAMC,KAAS43E,SAAS53E,EAClC,CAGA,SAASisV,EAAqBx5E,EAAUy5E,EAAWC,EAAStoH,GAC1D,IAAIuoH,EAAgB,EAAI35E,EACxB,OAAOu5E,EAAYE,EAAUE,KAAmBJ,EAAYG,EAAQC,GACtE,CAEA,SAASC,EAAexoH,EAAUrtN,GAChC,IAAI01U,EAAY11U,EAAKoyN,MAAM,GACvBujH,EAAU31U,EAAKoyN,MAAM,GAEzB,QAAsB,gBAAlB/E,EAASruO,OAOP02V,IAAaC,IAAYF,EAAqB,EAAGC,EAAWC,EAAStoH,KAAaooH,EAAqB,EAAGC,EAAWC,EAAStoH,MAK7H4nH,EAAangG,WAAWznB,EAAU,CACvC+E,MAAOsjH,EACPp7U,EAAG0F,EAAKojM,GACRjqL,EAAGnZ,EAAK+5K,MACJk7J,EAAangG,WAAWznB,EAAU,CACtC+E,MAAOujH,EACPr7U,EAAG0F,EAAKskB,GACRnL,EAAGnZ,EAAKukB,KAEZ,CAGA,SAASuxT,EAAwBr8U,EAAMkoF,EAAK26D,EAAM8xE,EAAajpI,GAC7D,IAEI36F,EAFA6iO,EAAWe,EAAYS,iBACvB+F,EAAYn7N,EAAKo7N,aAAalzI,GAE9Bo0P,EAAM5tD,EAAWjsD,aAAatH,EAAUl3O,IAAI4+J,EAAK,IAAKn3D,EAAI03I,YAC1Dm5G,EAAM7tD,EAAWjsD,aAAatH,EAAUl3O,IAAI4+J,EAAK,IAAKn3D,EAAI23I,aAE9D,GAAKvzO,MAAMwsV,IAASxsV,MAAMysV,GAEnB,CAEL,GAAI5nH,EAAYqM,kBAEdjwO,EAAQ4jO,EAAYqM,kBAAkBhhO,EAAK2/Q,UAAU98H,EAAM36D,QACtD,CACL,IAAIrnF,EAAIb,EAAK/b,IAAI4+J,EAAK,GAAI36D,GACtBxoE,EAAI1f,EAAK/b,IAAI4+J,EAAK,GAAI36D,GACtBm5B,EAAK,CAACxgH,EAAG6e,GACbk0M,EAASqN,WAAarN,EAASqN,UAAU5/G,EAAIA,GAC7CtwH,EAAQ6iO,EAASiC,YAAYx0G,GAAI,EACnC,CAEA,GAAsB,gBAAlBuyG,EAASruO,KAAwB,CACnC,IAAIovC,EAAQi/L,EAASs+B,QAAQ,KACzBt9N,EAAQg/L,EAASs+B,QAAQ,KACzBrxP,EAAIb,EAAK/b,IAAI4+J,EAAK,GAAI36D,GACtBxoE,EAAI1f,EAAK/b,IAAI4+J,EAAK,GAAI36D,GAEtB6zP,EAAYl7U,GACd9P,EAAM,GAAK4jC,EAAMowM,cAAcpwM,EAAMs3M,YAAwB,OAAZppF,EAAK,GAAc,EAAI,IAC/Dk5L,EAAYr8T,KACrB3uB,EAAM,GAAK6jC,EAAMmwM,cAAcnwM,EAAMq3M,YAAwB,OAAZppF,EAAK,GAAc,EAAI,IAE5E,CAGK/yJ,MAAMwsV,KACTvrV,EAAM,GAAKurV,GAGRxsV,MAAMysV,KACTxrV,EAAM,GAAKwrV,EAEf,MAnCExrV,EAAQ,CAACurV,EAAKC,GAqChB,OAAOxrV,CACT,CAEA,IAAIyrV,EAAkB,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,OA0JxE,SAASC,EAAW7oH,EAAUe,EAAagnH,GACzC,IAAIe,EACAC,EACA95L,EAAO,CAAC,KAAM,KAAM,KAAM,MAE1B+wE,GACF8oH,EAAiBrpH,EAAO5oN,IAAImpN,GAAYA,EAASj4E,YAAY,SAAUk8F,GACrE,IAAI73O,EAAO20N,EAAY7oI,UACnBwvB,EAAOt7G,EAAK23O,iBAAiB33O,EAAKysO,aAAaoL,KAAc,CAAC,EAElE,OAAOxkB,EAAO94I,SAAS,CACrB/0F,KAAMqyP,GACLv8H,EACL,IACAqhO,EAAW,IAAI35F,EAAK3vB,EAAO5oN,IAAIo4I,GAAM,SAAU7vB,EAAK9qC,GAClD,MAAO,CACL1iG,KAAMwtI,EACNztI,KAAMm3V,EAAex0P,EAAM,GAAG3iG,KAElC,IAAIo2V,KAEJe,EAAiB,CAAC,CAChBl3V,KAAM,QACND,KAAM,UAERo3V,EAAW,IAAI35F,EAAK05F,EAAgBf,IAGtC,IAAIiB,EAAUvpH,EAAO5oN,IAAIkxU,EAAQ13V,IAAI,QAASovO,EAAOuD,MAAM8kH,EAAmB/mH,EAAaf,EAAU+nH,IAEjG/nH,IACFgpH,EAAUvpH,EAAOtiN,OAAO6rU,EAASvpH,EAAOuD,MAAMwlH,EAAgBxoH,KAGhE,IAAIqvC,EAAiBrvC,EAAW,SAAUrtN,EAAMixO,EAAS5iB,EAAW4tC,GAClE,OAAOj8P,EAAKoyN,MAAMzxO,KAAK2I,MAAM2yQ,EAAW,IAAIA,EAAW,EACzD,EAAI,SAAUj8P,GACZ,OAAOA,EAAK1jB,KACd,EAGA,OAFA85V,EAAS/8R,SAASg9R,EAAS,KAAM35E,GACjC05E,EAASjqF,eAAgB,EAClBiqF,CACT,CAnMAlB,EAAWh3O,OAAO,CAChBl/G,KAAM,WAkBN8wO,gBAAiB,SAAUwmH,EAAeppH,EAAS/nI,GACjD+nI,EAAQy/E,YAAW,SAAUv+E,GAC3B,IAAIgnH,EAAUhnH,EAAYkoH,cAE1B,GAAIlB,EAAS,CACX,IAAIgB,EAAWhB,EAAQ7vP,UACvB6wP,EAASlkP,MAAK,SAAUvQ,GACtB,IAAIz7E,EAAS4mN,EAAO5oN,IAAI+xU,GAAiB,SAAUxpN,GACjD,OAAOqpN,EAAwBM,EAAUz0P,EAAK8qC,EAAK2hG,EAAajpI,EAClE,IAEAixP,EAASzvG,cAAchlJ,EAAKz7E,GAC5B,IAAI9pB,EAAKg6V,EAAS9gH,iBAAiB3zI,GACnCvlG,EAAGu4O,SAAS,SAAUzuN,EACxB,GACF,CACF,GAAG1rB,KACL,EACA+7V,aAAc,SAAUnoH,EAAagnH,EAASloH,EAAS/nI,GACrD,IAAIkoI,EAAWe,EAAYS,iBACvBN,EAAWH,EAAYpqO,GACvB+pT,EAAa3/E,EAAY7oI,UACzBixP,EAAeh8V,KAAKi8V,eACpBC,EAAeF,EAAa94V,IAAI6wO,IAAaioH,EAAaxpV,IAAIuhO,EAAU,CAC1E74L,MAAO,IAAI47L,EAAQM,QAErBp3O,KAAKk7C,MAAM36C,IAAI27V,EAAahhT,OAC5BghT,EAAaC,QAAS,EACtB,IAAIP,EAAWF,EAAW7oH,EAAUe,EAAagnH,GAEjDA,EAAQ3vP,QAAQ2wP,GAEhBA,EAASlkP,MAAK,SAAUvQ,GAEtB,IAAIz7E,EAAS4mN,EAAO5oN,IAAI+xU,GAAiB,SAAUxpN,GACjD,OAAOqpN,EAAwBM,EAAUz0P,EAAK8qC,EAAK2hG,EAAajpI,EAClE,IAGIyxP,GAAa,EACjB9pH,EAAO56H,KAAK+jP,GAAiB,SAAUxpN,GACrC,GAAKmqN,EAAL,CAIA,IAAIC,EAAST,EAAS14V,IAAI+uI,EAAI,GAAI9qC,GAC9Bm1P,EAASV,EAAS14V,IAAI+uI,EAAI,GAAI9qC,IAE7B6zP,EAAYqB,IAAWxpH,EAASs+B,QAAQ,KAAKs8C,YAAY4uC,MAAarB,EAAYsB,IAAWzpH,EAASs+B,QAAQ,KAAKs8C,YAAY6uC,MAClIF,GAAa,EANf,CAQF,IACAR,EAASzvG,cAAchlJ,EAAK,CAC1Bz7E,OAAQA,EACR0wU,WAAYA,IAGdR,EAAShvG,cAAczlJ,EAAK,CAC1Bv2E,MAAO2iS,EAAWj2E,UAAU,UAEhC,IACAs+G,EAAShvP,KAAKsvP,EAAaK,QAAQh8V,KAAI,SAAU4mG,GAC/C,IAAIgB,EAASyzP,EAAS9+G,cAAc31I,GAEpC,IAAKgB,EAAOi0P,WAAY,CACtB,IAAIv1T,EAAU,IAAIiwM,EAAQ+kB,QAAQ,CAChCrmO,MAAO,CACL9J,OAAQy8E,EAAOz8E,UAGnBkwU,EAASnhH,iBAAiBtzI,EAAKtgE,GAC/Bq1T,EAAahhT,MAAM36C,IAAIsmC,EACzB,CACF,IAAG7P,QAAO,SAAUsyN,EAAQI,GAC1B,IAAI7iN,EAAUq1T,EAAaK,OAAOzhH,iBAAiB4O,GAE/CvhJ,EAASyzP,EAAS9+G,cAAcwM,GAE/BnhJ,EAAOi0P,WAiBDv1T,GACTq1T,EAAahhT,MAAM0hC,OAAO/1C,IAjBtBA,EACFiwM,EAAQ+D,YAAYh0M,EAAS,CAC3BrR,MAAO,CACL9J,OAAQy8E,EAAOz8E,SAEhBkvU,EAAStxG,GAEZziN,EAAU,IAAIiwM,EAAQ+kB,QAAQ,CAC5BrmO,MAAO,CACL9J,OAAQy8E,EAAOz8E,UAKrBkwU,EAASnhH,iBAAiB6O,EAAQziN,GAClCq1T,EAAahhT,MAAM36C,IAAIsmC,GAI3B,IAAG+1C,QAAO,SAAUuqB,GAClB,IAAItgE,EAAUq1T,EAAaK,OAAOzhH,iBAAiB3zI,GAEnD+0P,EAAahhT,MAAM0hC,OAAO/1C,EAC5B,IAAG01G,UACHq/M,EAASngH,mBAAkB,SAAU50M,EAASsgE,GAC5C,IAAIizI,EAAYwhH,EAASvhH,aAAalzI,GAClC4gJ,EAAa3N,EAAUZ,SAAS,SAChCmjB,EAAkBviB,EAAUZ,SAAS,kBACrC5oN,EAAQgrU,EAASv+G,cAAcl2I,EAAK,SACxCtgE,EAAQozM,SAAS3H,EAAO94I,SAAS4gJ,EAAUZ,SAAS,aAAagG,eAAgB,CAC/Ez1N,KAAMywU,EAAUp3C,YAAYxyR,EAAO,IACnCyI,OAAQzI,KAEViW,EAAQ22M,WAAapD,EAAUZ,SAAS,sBAAsBgG,eAC9D1I,EAAQmR,cAAcphN,EAAQj7B,MAAOi7B,EAAQ22M,WAAYuK,EAAY4U,EAAiB,CACpFzU,aAAc0yG,EACdzyG,eAAgBhhJ,EAChBihJ,YAAawzG,EAAS9nH,QAAQ3sI,IAAQ,GACtCkhJ,YAAY,EACZC,UAAW13N,IAEbkmN,EAAQ8G,cAAc/2M,EAAS,CAAC,GAChCA,EAAQ21T,UAAY5B,CACtB,IACAsB,EAAaK,OAASX,EACtBM,EAAahhT,MAAMi0G,OAASyrM,EAAQ13V,IAAI,WAAa0wO,EAAY1wO,IAAI,SACvE,G,wBC7RF,IAAIq3V,EAAc/xU,EAAQ,OAoBtBiF,EAAW8sU,EAAY72O,OAAO,CAChCl/G,KAAM,WACNgyO,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EACH91D,OAAQ,CAAC,SAAU,SACnB2+N,WAAY,CAAC,EAAG,IAEhBx3N,UAAW,EACXm9P,QAAS,CACPv2K,QAAS,QAEX9gE,MAAO,CACLxB,MAAM,EACN5b,SAAU,MACV9E,SAAU,GAEZslB,UAAW,CACT9tC,KAAM,UAERk8O,SAAU,CACRxxM,MAAO,CACLxB,MAAM,GAER4E,UAAW,CACT9J,MAAO,IAGXw6H,gBAAiB,YAIrB7hK,EAAOD,QAAUusB,C,wBCpDjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBy5O,EAAOz5O,EAAQ,OAEfmlR,EAAanlR,EAAQ,OAErBiyU,EAAejyU,EAAQ,OAEvB48O,EAAW58O,EAAQ,OAEnBkyU,EAAalyU,EAAQ,OAErBi4P,EAAmBj4P,EAAQ,OAE3Bi0U,EAAsBh8E,EAAiBg8E,oBAoBvCC,EAAoB,SAAU9oH,EAAaf,EAAU8pH,EAASn3U,GAChE,IAAIvG,EAAO20N,EAAY7oI,UAEnB6xP,EAASp3U,EAAKhhB,KAElB,IAAK8tO,EAAOxrO,QAAQ0e,KAAqB,QAAXo3U,GAA+B,QAAXA,GAA+B,YAAXA,GAAmC,WAAXA,GAI7E,MAAdp3U,EAAKouB,OAA+B,MAAdpuB,EAAKquB,OAAgB,CAC5C,IAAIqB,EACApzC,EAEJ,GAAkB,MAAd0jB,EAAKquB,OAA+B,MAAdruB,EAAKouB,MAC7BsB,EAAY29L,EAASs+B,QAAsB,MAAd3rP,EAAKquB,MAAgB,IAAM,KACxD/xC,EAAQwwO,EAAOoS,SAASl/N,EAAKquB,MAAOruB,EAAKouB,WACpC,CACL,IAAI04Q,EAAWmuC,EAAatzC,YAAY3hS,EAAMvG,EAAM4zN,EAAUe,GAC9D1+L,EAAYo3Q,EAASp3Q,UACrB,IAAI2nT,EAAeJ,EAAoBx9U,EAAMqtS,EAASuwC,cACtD/6V,EAAQ24V,EAAaqC,aAAa79U,EAAM49U,EAAcD,EACxD,CAEA,IAAI5sT,EAA+B,MAAlBkF,EAAU+8F,IAAc,EAAI,EACzCo2I,EAAY,EAAIr4O,EAChB+sT,EAASzqH,EAAOh+M,MAAM9O,GACtBw3U,EAAO,CAAC,EACZD,EAAOv4V,KAAO,KACdu4V,EAAOnlH,MAAQ,GACfolH,EAAKplH,MAAQ,GACbmlH,EAAOnlH,MAAMywC,IAAcx1L,IAC3BmqQ,EAAKplH,MAAMywC,GAAax1L,IACxB,IAAIzpE,EAAYuzU,EAAQz5V,IAAI,aAExBkmB,GAAa,GAAsB,kBAAVtnB,IAC3BA,GAASA,EAAMi0C,QAAQ5vC,KAAKyI,IAAIwa,EAAW,MAG7C2zU,EAAOnlH,MAAM5nM,GAAcgtT,EAAKplH,MAAM5nM,GAAcluC,EACpD0jB,EAAO,CAACu3U,EAAQC,EAAM,CAEpBx4V,KAAMo4V,EACN5sT,WAAYxqB,EAAKwqB,WAEjBluC,MAAOA,GAEX,CAQA,OANA0jB,EAAO,CAACi1U,EAAaI,cAAcjnH,EAAapuN,EAAK,IAAKi1U,EAAaI,cAAcjnH,EAAapuN,EAAK,IAAK8sN,EAAO5uH,OAAO,CAAC,EAAGl+F,EAAK,KAEnIA,EAAK,GAAGhhB,KAAOghB,EAAK,GAAGhhB,MAAQ,GAE/B8tO,EAAOt0H,MAAMx4F,EAAK,GAAIA,EAAK,IAC3B8sN,EAAOt0H,MAAMx4F,EAAK,GAAIA,EAAK,IACpBA,CACT,EAEA,SAASw1U,EAAYhsV,GACnB,OAAQD,MAAMC,KAAS43E,SAAS53E,EAClC,CAGA,SAASisV,EAAqBx5E,EAAUy5E,EAAWC,EAAStoH,GAC1D,IAAIuoH,EAAgB,EAAI35E,EACpBhrB,EAAU5jB,EAASj4E,WAAW6mH,GAClC,OAAOu5E,EAAYE,EAAUE,KAAmBJ,EAAYG,EAAQC,KAAmBF,EAAUz5E,KAAc05E,EAAQ15E,IAAa5uC,EAASs+B,QAAQ1a,GAASg3D,YAAYytC,EAAUz5E,GACtL,CAEA,SAASw7E,EAAepqH,EAAUrtN,GAChC,GAAsB,gBAAlBqtN,EAASruO,KAAwB,CACnC,IAAI02V,EAAY11U,EAAK,GAAGoyN,MACpBujH,EAAU31U,EAAK,GAAGoyN,MAOtB,GAAIsjH,GAAaC,IAAYF,EAAqB,EAAGC,EAAWC,EAAStoH,IAAaooH,EAAqB,EAAGC,EAAWC,EAAStoH,IAChI,OAAO,CAEX,CAEA,OAAO4nH,EAAangG,WAAWznB,EAAUrtN,EAAK,KAAOi1U,EAAangG,WAAWznB,EAAUrtN,EAAK,GAC9F,CAEA,SAAS03U,EAA4Bj+U,EAAMkoF,EAAKg2P,EAAQvpH,EAAajpI,GACnE,IAEI36F,EAFA6iO,EAAWe,EAAYS,iBACvB+F,EAAYn7N,EAAKo7N,aAAalzI,GAE9Bo0P,EAAM5tD,EAAWjsD,aAAatH,EAAUl3O,IAAI,KAAMynG,EAAI03I,YACtDm5G,EAAM7tD,EAAWjsD,aAAatH,EAAUl3O,IAAI,KAAMynG,EAAI23I,aAE1D,GAAKvzO,MAAMwsV,IAASxsV,MAAMysV,GAEnB,CAEL,GAAI5nH,EAAYqM,kBAEdjwO,EAAQ4jO,EAAYqM,kBAAkBhhO,EAAK2/Q,UAAU3/Q,EAAK27I,WAAYzzD,QACjE,CACL,IAAI26D,EAAO+wE,EAASj4E,WAChB96I,EAAIb,EAAK/b,IAAI4+J,EAAK,GAAI36D,GACtBxoE,EAAI1f,EAAK/b,IAAI4+J,EAAK,GAAI36D,GAC1Bn3F,EAAQ6iO,EAASiC,YAAY,CAACh1N,EAAG6e,GACnC,CAWA,GAAsB,gBAAlBk0M,EAASruO,KAAwB,CACnC,IAAIovC,EAAQi/L,EAASs+B,QAAQ,KACzBt9N,EAAQg/L,EAASs+B,QAAQ,KACzBrvG,EAAO+wE,EAASj4E,WAEhBogM,EAAY/7U,EAAK/b,IAAI4+J,EAAK,GAAI36D,IAChCn3F,EAAM,GAAK4jC,EAAMowM,cAAcpwM,EAAMs3M,YAAYiyG,EAAS,EAAI,IACrDnC,EAAY/7U,EAAK/b,IAAI4+J,EAAK,GAAI36D,MACvCn3F,EAAM,GAAK6jC,EAAMmwM,cAAcnwM,EAAMq3M,YAAYiyG,EAAS,EAAI,IAElE,CAGKpuV,MAAMwsV,KACTvrV,EAAM,GAAKurV,GAGRxsV,MAAMysV,KACTxrV,EAAM,GAAKwrV,EAEf,MA1CExrV,EAAQ,CAACurV,EAAKC,GA4ChBv8U,EAAKktO,cAAchlJ,EAAKn3F,EAC1B,CAEA,IAAIyd,EAAWitU,EAAWh3O,OAAO,CAC/Bl/G,KAAM,WAwBN8wO,gBAAiB,SAAU8nH,EAAe1qH,EAAS/nI,GACjD+nI,EAAQy/E,YAAW,SAAUv+E,GAC3B,IAAI+oH,EAAU/oH,EAAYwpH,cAE1B,GAAIT,EAAS,CACX,IAAIU,EAASV,EAAQ5xP,UACjBuyP,EAAWX,EAAQY,OACnBC,EAASb,EAAQc,KAErBH,EAAS5lP,MAAK,SAAUvQ,GACtB+1P,EAA4BI,EAAUn2P,GAAK,EAAMysI,EAAajpI,GAC9DuyP,EAA4BM,EAAQr2P,GAAK,EAAOysI,EAAajpI,EAC/D,IAEA0yP,EAAO3lP,MAAK,SAAUvQ,GACpBk2P,EAAOlxG,cAAchlJ,EAAK,CAACm2P,EAASxgH,cAAc31I,GAAMq2P,EAAO1gH,cAAc31I,IAC/E,IACAnnG,KAAKi8V,eAAe/4V,IAAI0wO,EAAYpqO,IAAIwwP,cAC1C,CACF,GAAGh6P,KACL,EACA+7V,aAAc,SAAUnoH,EAAa+oH,EAASjqH,EAAS/nI,GACrD,IAAIkoI,EAAWe,EAAYS,iBACvBN,EAAWH,EAAYpqO,GACvB+pT,EAAa3/E,EAAY7oI,UACzB2yP,EAAc19V,KAAKi8V,eACnBt1F,EAAW+2F,EAAYx6V,IAAI6wO,IAAa2pH,EAAYlrV,IAAIuhO,EAAU,IAAIqxB,GAC1EplQ,KAAKk7C,MAAM36C,IAAIomQ,EAASzrN,OACxB,IAAImiT,EAAS3B,EAAW7oH,EAAUe,EAAa+oH,GAC3CW,EAAWD,EAAOj/R,KAClBo/R,EAASH,EAAO7jO,GAChBlwE,EAAW+zS,EAAO7xT,KACtBmxT,EAAQY,OAASD,EACjBX,EAAQc,KAAOD,EAEfb,EAAQ1xP,QAAQ3hD,GAChB,IAAI85L,EAAau5G,EAAQz5V,IAAI,UACzB09O,EAAa+7G,EAAQz5V,IAAI,cAwC7B,SAASy6V,EAA0B1+U,EAAMkoF,EAAKg2P,GAC5C,IAAI/iH,EAAYn7N,EAAKo7N,aAAalzI,GAClC+1P,EAA4Bj+U,EAAMkoF,EAAKg2P,EAAQvpH,EAAajpI,GAC5D1rF,EAAK2tO,cAAczlJ,EAAK,CACtB05I,aAAczG,EAAUl3O,IAAI,gBAC5B09O,WAAYxG,EAAUl3O,IAAI,eAAiB09O,EAAWu8G,EAAS,EAAI,GACnEl7U,OAAQm4N,EAAUl3O,IAAI,UAAU,IAASkgP,EAAW+5G,EAAS,EAAI,GACjEvsU,MAAOwpN,EAAUl3O,IAAI,oBAAsBqwT,EAAWj2E,UAAU,UAEpE,CA/CKhL,EAAOxrO,QAAQs8O,KAClBA,EAAa,CAACA,EAAYA,IAGF,kBAAfxC,IACTA,EAAa,CAACA,EAAYA,IAI5By8G,EAAOj/R,KAAKs5C,MAAK,SAAUvQ,GACzBw2P,EAA0BL,EAAUn2P,GAAK,GACzCw2P,EAA0BH,EAAQr2P,GAAK,EACzC,IAEA79C,EAASouD,MAAK,SAAUvQ,GACtB,IAAI6/H,EAAY19K,EAAS+wL,aAAalzI,GAAKjkG,IAAI,mBAC/ComD,EAASsjM,cAAczlJ,EAAK,CAC1Bv2E,MAAOo2M,GAAas2H,EAASjgH,cAAcl2I,EAAK,WAElD79C,EAAS6iM,cAAchlJ,EAAK,CAACm2P,EAASxgH,cAAc31I,GAAMq2P,EAAO1gH,cAAc31I,KAC/E79C,EAASsjM,cAAczlJ,EAAK,CAC1B,iBAAoBm2P,EAASjgH,cAAcl2I,EAAK,gBAChD,eAAkBm2P,EAASjgH,cAAcl2I,EAAK,cAC9C,WAAcm2P,EAASjgH,cAAcl2I,EAAK,UAC1C,eAAkBq2P,EAAOngH,cAAcl2I,EAAK,gBAC5C,aAAgBq2P,EAAOngH,cAAcl2I,EAAK,cAC1C,SAAYq2P,EAAOngH,cAAcl2I,EAAK,WAE1C,IACAw/J,EAAS5M,WAAWzwM,GAGpB+zS,EAAO7xT,KAAKiwM,mBAAkB,SAAU75O,EAAIulG,GAC1CvlG,EAAGi3P,UAAS,SAAU9xJ,GACpBA,EAAMy1P,UAAYG,CACpB,GACF,IAaAh2F,EAASw1F,QAAS,EAClBx1F,EAASzrN,MAAMi0G,OAASwtM,EAAQz5V,IAAI,WAAa0wO,EAAY1wO,IAAI,SACnE,IAUF,SAASw4V,EAAW7oH,EAAUe,EAAa+oH,GACzC,IAAIhB,EAGFA,EADE9oH,EACeP,EAAO5oN,IAAImpN,GAAYA,EAASj4E,YAAY,SAAUk8F,GACrE,IAAIv8H,EAAOq5G,EAAY7oI,UAAU6rJ,iBAAiBhjB,EAAY7oI,UAAU2gJ,aAAaoL,KAAc,CAAC,EAEpG,OAAOxkB,EAAO94I,SAAS,CACrB/0F,KAAMqyP,GACLv8H,EACL,IAEiB,CAAC,CAChB91H,KAAM,QACND,KAAM,UAIV,IAAI84V,EAAW,IAAIr7F,EAAK05F,EAAgBgB,GACpCa,EAAS,IAAIv7F,EAAK05F,EAAgBgB,GAElCrzS,EAAW,IAAI24M,EAAK,GAAI06F,GACxBd,EAAUvpH,EAAO5oN,IAAIizU,EAAQz5V,IAAI,QAASovO,EAAOuD,MAAM6mH,EAAmB9oH,EAAaf,EAAU8pH,IAEjG9pH,IACFgpH,EAAUvpH,EAAOtiN,OAAO6rU,EAASvpH,EAAOuD,MAAMonH,EAAgBpqH,KAGhE,IAAIqvC,EAAiBrvC,EAAW4nH,EAAav4E,eAAiB,SAAU18P,GACtE,OAAOA,EAAK1jB,KACd,EAWA,OAVAw7V,EAASz+R,SAASyzK,EAAO5oN,IAAImyU,GAAS,SAAUr2U,GAC9C,OAAOA,EAAK,EACd,IAAI,KAAM08P,GACVs7E,EAAO3+R,SAASyzK,EAAO5oN,IAAImyU,GAAS,SAAUr2U,GAC5C,OAAOA,EAAK,EACd,IAAI,KAAM08P,GACV54N,EAASuV,SAASyzK,EAAO5oN,IAAImyU,GAAS,SAAUr2U,GAC9C,OAAOA,EAAK,EACd,KACA8jC,EAASqoN,eAAgB,EAClB,CACLvzM,KAAMk/R,EACN9jO,GAAIgkO,EACJhyT,KAAM8d,EAEV,CAEAnoD,EAAOD,QAAUusB,C,wBC5VjB,IAAI8sU,EAAc/xU,EAAQ,OAoBtBiF,EAAW8sU,EAAY72O,OAAO,CAChCl/G,KAAM,YACNgyO,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EACH91D,OAAQ,MACR2+N,WAAY,GAGZ2lC,QAAS,CACPv2K,QAAS,QAEX9gE,MAAO,CACLxB,MAAM,EACN5b,SAAU,UAEZytN,UAAW,CACT13K,YAAa,GAEf64K,SAAU,CACRxxM,MAAO,CACLxB,MAAM,OAMdvsC,EAAOD,QAAUusB,C,wBC/CjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBkxO,EAAalxO,EAAQ,OAErBmlR,EAAanlR,EAAQ,OAErBy5O,EAAOz5O,EAAQ,OAEfiyU,EAAejyU,EAAQ,OAEvBkyU,EAAalyU,EAAQ,OAoBzB,SAASo1U,EAAmBC,EAAQjqH,EAAajpI,GAC/C,IAAIkoI,EAAWe,EAAYS,iBAC3BwpH,EAAOnmP,MAAK,SAAUvQ,GACpB,IACIn3F,EADAoqO,EAAYyjH,EAAOxjH,aAAalzI,GAEhCo0P,EAAM5tD,EAAWjsD,aAAatH,EAAUl3O,IAAI,KAAMynG,EAAI03I,YACtDm5G,EAAM7tD,EAAWjsD,aAAatH,EAAUl3O,IAAI,KAAMynG,EAAI23I,aAE1D,GAAKvzO,MAAMwsV,IAASxsV,MAAMysV,IAGrB,GAAI5nH,EAAYqM,kBAEjBjwO,EAAQ4jO,EAAYqM,kBAAkB49G,EAAOj/D,UAAUi/D,EAAOjjM,WAAYzzD,SACrE,GAAI0rI,EAAU,CACnB,IAAI/yN,EAAI+9U,EAAO36V,IAAI2vO,EAASj4E,WAAW,GAAIzzD,GACvCxoE,EAAIk/T,EAAO36V,IAAI2vO,EAASj4E,WAAW,GAAIzzD,GAC3Cn3F,EAAQ6iO,EAASiC,YAAY,CAACh1N,EAAG6e,GACnC,OATA3uB,EAAQ,CAACurV,EAAKC,GAYXzsV,MAAMwsV,KACTvrV,EAAM,GAAKurV,GAGRxsV,MAAMysV,KACTxrV,EAAM,GAAKwrV,GAGbqC,EAAO1xG,cAAchlJ,EAAKn3F,EAC5B,GACF,CAEA,IAAIyd,EAAWitU,EAAWh3O,OAAO,CAC/Bl/G,KAAM,YAUN8wO,gBAAiB,SAAUwoH,EAAgBprH,EAAS/nI,GAClD+nI,EAAQy/E,YAAW,SAAUv+E,GAC3B,IAAImqH,EAAUnqH,EAAYkqH,eAEtBC,IACFH,EAAmBG,EAAQhzP,UAAW6oI,EAAajpI,GACnD3qG,KAAKi8V,eAAe/4V,IAAI0wO,EAAYpqO,IAAIwwP,aAAa+jG,GAEzD,GAAG/9V,KACL,EACA+7V,aAAc,SAAUnoH,EAAamqH,EAASrrH,EAAS/nI,GACrD,IAAIkoI,EAAWe,EAAYS,iBACvBN,EAAWH,EAAYpqO,GACvB+pT,EAAa3/E,EAAY7oI,UACzBizP,EAAgBh+V,KAAKi8V,eACrBv1F,EAAas3F,EAAc96V,IAAI6wO,IAAaiqH,EAAcxrV,IAAIuhO,EAAU,IAAI2lB,GAC5EmkG,EAASnC,EAAW7oH,EAAUe,EAAamqH,GAE/CA,EAAQ9yP,QAAQ4yP,GAChBD,EAAmBG,EAAQhzP,UAAW6oI,EAAajpI,GACnDkzP,EAAOnmP,MAAK,SAAUvQ,GACpB,IAAIizI,EAAYyjH,EAAOxjH,aAAalzI,GAChCllF,EAASm4N,EAAUsD,WAAW,UAC9BkD,EAAaxG,EAAUsD,WAAW,cAClCmD,EAAezG,EAAUsD,WAAW,gBACpCugH,EAAa3rH,EAAOqhF,WAAW1xS,GAC/Bi8U,EAAiB5rH,EAAOqhF,WAAW/yE,GACnCu9G,EAAmB7rH,EAAOqhF,WAAW9yE,GAEzC,GAAIo9G,GAAcC,GAAkBC,EAAkB,CACpD,IAAIC,EAASL,EAAQlsF,YAAY1qK,GAC7BssN,EAAasqC,EAAQvlG,cAAcrxJ,GAEnC82P,IACFh8U,EAASA,EAAOm8U,EAAQ3qC,IAGtByqC,IAEFt9G,EAAaA,EAAWw9G,EAAQ3qC,IAG9B0qC,IACFt9G,EAAeA,EAAau9G,EAAQ3qC,GAExC,CAEAoqC,EAAOjxG,cAAczlJ,EAAK,CACxBllF,OAAQA,EACR2+N,WAAYA,EACZC,aAAcA,EACdjwN,MAAOwpN,EAAUl3O,IAAI,oBAAsBqwT,EAAWj2E,UAAU,UAEpE,IAEAopB,EAAW3M,WAAW8jG,GACtB79V,KAAKk7C,MAAM36C,IAAImmQ,EAAWxrN,OAG1B2iT,EAAOpiH,mBAAkB,SAAU75O,GACjCA,EAAGi3P,UAAS,SAAU9xJ,GACpBA,EAAMy1P,UAAYuB,CACpB,GACF,IACAr3F,EAAWy1F,QAAS,EACpBz1F,EAAWxrN,MAAMi0G,OAAS4uM,EAAQ76V,IAAI,WAAa0wO,EAAY1wO,IAAI,SACrE,IAUF,SAASw4V,EAAW7oH,EAAUe,EAAamqH,GACzC,IAAIpC,EAGFA,EADE9oH,EACeP,EAAO5oN,IAAImpN,GAAYA,EAASj4E,YAAY,SAAUk8F,GACrE,IAAIv8H,EAAOq5G,EAAY7oI,UAAU6rJ,iBAAiBhjB,EAAY7oI,UAAU2gJ,aAAaoL,KAAc,CAAC,EAEpG,OAAOxkB,EAAO94I,SAAS,CACrB/0F,KAAMqyP,GACLv8H,EACL,IAEiB,CAAC,CAChB91H,KAAM,QACND,KAAM,UAIV,IAAIq5V,EAAS,IAAI57F,EAAK05F,EAAgBoC,GAClCM,EAAU/rH,EAAO5oN,IAAIq0U,EAAQ76V,IAAI,QAASovO,EAAOuD,MAAM4kH,EAAaI,cAAejnH,IASvF,OAPIf,IACFwrH,EAAU/rH,EAAOtiN,OAAOquU,EAAS/rH,EAAOuD,MAAM4kH,EAAangG,WAAYznB,KAGzEgrH,EAAOh/R,SAASw/R,EAAS,KAAMxrH,EAAW4nH,EAAav4E,eAAiB,SAAU18P,GAChF,OAAOA,EAAK1jB,KACd,GACO+7V,CACT,CAEA18V,EAAOD,QAAUusB,C,wBCrLjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB2qN,GAFU1/L,EAAQojM,QAERruN,EAAQ,QAElB8pN,EAAS9pN,EAAQ,OAEjB+mS,EAAM/mS,EAAQ,OAEd6+P,EAAY7+P,EAAQ,OAEpB0hS,EAAa1hS,EAAQ,OAErB81U,EAAkB91U,EAAQ,OAoB1BmrQ,EAAYu2B,EAAWv2B,UACvBxxB,EAAa+nD,EAAW/nD,WAE5B,SAASo8F,EAAU17P,GACjBwkL,EAAU3sB,gBAAgB73J,EAAK,QAAS,CAAC,QAC3C,CAEA,IAAI03P,EAAcpnH,EAAQ6wE,qBAAqB,CAC7Cx/S,KAAM,SACN0xO,aAAc,CAAC,SAAU,OAAQ,QAAS,OAK1Cx+K,KAAM,SAAU3sB,EAAQg8M,EAAarU,GACnC1yO,KAAK+iQ,qBAAqBh4N,EAAQ2nM,GAElC1yO,KAAKw+V,aAAazzT,EAAQ2nM,GAAS,GAAO,EAC5C,EAKAyG,mBAAoB,WAClB,GAAIo2E,EAAIn0O,KACN,OAAO,EAGT,IAAIqjR,EAAaz+V,KAAK0+V,aACtB,OAAO1+V,KAAK09O,WAAW,cAAgB+gH,GAAcA,EAAWtlH,oBAClE,EAKA2pB,YAAa,SAAU67F,EAAQjsH,GAC7B1yO,KAAKw+V,aAAaG,EAAQjsH,GAAS,GAAO,EAC5C,EACA8rH,aAAc,SAAUG,EAAQjsH,EAASksH,EAAeltP,GACtD,IAAI6oP,EAAcv6V,KAAKkN,YACnBorP,EAAgBt4P,KAAK0zO,SAAW,QAE/BkrH,GACHlsH,EAAQy/E,YAAW,SAAUv+E,GAC3B,IAAIirH,EAAYjrH,EAAY1wO,IAAIlD,KAAK0zO,UAAU,GAC3CorH,EAAclrH,EAAY0kB,GAEzBumG,GAAcA,EAAU5/U,MAKxB6/U,EAyBHA,EAAYN,aAAaK,EAAWnsH,GAAS,IAxBzChhI,GAEF6sP,EAAUM,GAGZvsH,EAAO56H,KAAKmnP,EAAU5/U,MAAM,SAAUuG,GAEhCA,aAAgB3e,OAClB03V,EAAU/4U,EAAK,IACf+4U,EAAU/4U,EAAK,KAEf+4U,EAAU/4U,EAEd,IACAs5U,EAAc,IAAIvE,EAAYsE,EAAW7+V,KAAM0yO,GAC/CJ,EAAO5uH,OAAOo7O,EAAa,CACzBprH,SAAU1zO,KAAK0zO,SAEfgL,YAAa9K,EAAY8K,YACzBj6O,KAAMmvO,EAAYnvO,KAClBm6V,eAAe,IAEjBE,EAAYJ,aAAe9qH,GAK7BA,EAAY0kB,GAAiBwmG,GAhC3BlrH,EAAY0kB,GAAiB,IAiCjC,GAAGt4P,KAEP,EACAgkQ,cAAe,SAAUnwB,EAAWowB,EAAgBxL,EAAU08B,GAC5D,IAAIl2Q,EAAOjf,KAAK+qG,UACZjpG,EAAQ9B,KAAK6xQ,YAAYh+B,GACzBuhD,EAAiB9iD,EAAOxrO,QAAQhF,GAASwwO,EAAO5oN,IAAI5nB,EAAO6xR,GAAW7oR,KAAK,MAAQ6oR,EAAU7xR,GAC7F2C,EAAOwa,EAAK60N,QAAQD,GACpBvxN,EAAO6/O,EAAWniQ,KAAKyE,MACvB+wR,EAAyB,SAAfL,EAAwB,QAAU,KAkBhD,OAhBa,MAATrzR,GAAiB2C,KACnB6d,GAAQkzQ,GAGN/wR,IACF6d,GAAQ6/O,EAAW19P,GAEN,MAAT3C,IACFwgB,GAAQ,QAIC,MAATxgB,IACFwgB,GAAQ6/O,EAAWizB,IAGd9yQ,CACT,EACAyoF,QAAS,WACP,OAAO/qG,KAAKqqK,KACd,EACAp/D,QAAS,SAAUhsF,GACjBjf,KAAKqqK,MAAQprJ,CACf,IAEFqzN,EAAO0W,MAAMuxG,EAAa+D,GAC1B,IAAI7wU,EAAW8sU,EACfp5V,EAAOD,QAAUusB,C,wBCzJjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAoBjBiF,EAAW0lN,EAAQqxE,oBAAoB,CACzChgT,KAAM,SACNkzD,KAAM,WAMJ13D,KAAKi8V,eAAiB3pH,EAAO6hD,eAC/B,EACAh1R,OAAQ,SAAU2/V,EAAapsH,EAAS/nI,GACtC,IAAIsxP,EAAiBj8V,KAAKi8V,eAC1BA,EAAevkP,MAAK,SAAUlyF,GAC5BA,EAAK22U,QAAS,CAChB,IACA,IAAI4C,EAAiB/+V,KAAKwE,KAAO,QACjCkuO,EAAQy/E,YAAW,SAAUv+E,GAC3B,IAAIkrH,EAAclrH,EAAYmrH,GAC9BD,GAAe9+V,KAAK+7V,aAAanoH,EAAakrH,EAAapsH,EAAS/nI,EACtE,GAAG3qG,MACHi8V,EAAevkP,MAAK,SAAUlyF,IAC3BA,EAAK22U,QAAUn8V,KAAKk7C,MAAM0hC,OAAOp3D,EAAK01B,MACzC,GAAGl7C,KACL,EACA+7V,aAAc,WAAa,IAG7B56V,EAAOD,QAAUusB,C,wBCjDjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBmlR,EAAanlR,EAAQ,OAErBi4P,EAAmBj4P,EAAQ,OAE3B+jQ,EAAqB9L,EAAiB8L,mBAoBtCl1Q,EAAUi7N,EAAOj7N,QAErB,SAAS2nV,EAAQx5U,GACf,QAASzW,MAAM+mC,WAAWtwB,EAAK1F,KAAO/Q,MAAM+mC,WAAWtwB,EAAKmZ,IAC9D,CAEA,SAASsgU,EAASz5U,GAChB,OAAQzW,MAAM+mC,WAAWtwB,EAAK1F,MAAQ/Q,MAAM+mC,WAAWtwB,EAAKmZ,GAC9D,CAwBA,SAASugU,EAA+BtC,EAAQ39U,EAAMkgV,EAAcC,EAAeC,EAAiBC,GAClG,IAAIC,EAAW,GACX/yE,EAAUD,EAAmBttQ,EAAMmgV,GAGnCI,EAAchzE,EAAUvtQ,EAAKysQ,mBAAmB,wBAA0B0zE,EAC1Et9V,EAAQg7V,EAAa79U,EAAMugV,EAAa5C,GACxC/oH,EAAY50N,EAAKgvS,iBAAiBuxC,EAAa19V,GAAO,GAC1Dy9V,EAASF,GAAmBpgV,EAAK/b,IAAIi8V,EAActrH,GACnD0rH,EAASD,GAAoBrgV,EAAK/b,IAAIs8V,EAAa3rH,GACnD,IAAI4rH,EAAgBxgV,EAAK/b,IAAIk8V,EAAevrH,GAExCzqN,EAAYukR,EAAW+xD,aAAazgV,EAAK/b,IAAIk8V,EAAevrH,IAOhE,OANAzqN,EAAYjjB,KAAKyI,IAAIwa,EAAW,IAE5BA,GAAa,IACfm2U,EAASD,IAAqBC,EAASD,GAAkBvpT,QAAQ3sB,IAG5D,CAACm2U,EAAUE,EACpB,CAEA,IAAI5pH,EAAQvD,EAAOuD,MAEf8pH,EAAuB,CAOzB/wV,IAAKinO,EAAMqpH,EAAgC,OAQ3CvwV,IAAKknO,EAAMqpH,EAAgC,OAQ3CU,QAAS/pH,EAAMqpH,EAAgC,YAYjD,SAASrE,EAAcjnH,EAAapuN,GAClC,IAAIvG,EAAO20N,EAAY7oI,UACnB8nI,EAAWe,EAAYS,iBAK3B,GAAI7uN,IAASy5U,EAASz5U,KAAU8sN,EAAOxrO,QAAQ0e,EAAKoyN,QAAU/E,EAAU,CACtE,IAAI/wE,EAAO+wE,EAASj4E,WAChB0xJ,EAAWnF,EAAY3hS,EAAMvG,EAAM4zN,EAAUe,GAKjD,GAFApuN,EAAO8sN,EAAOh+M,MAAM9O,GAEhBA,EAAKhhB,MAAQm7V,EAAqBn6U,EAAKhhB,OAAS8nT,EAASv0E,UAAYu0E,EAASp3Q,UAAW,CAC3F,IAAImqT,EAAkBhoV,EAAQyqJ,EAAMwqJ,EAASv0E,SAAS9lG,KAClDqtN,EAAmBjoV,EAAQyqJ,EAAMwqJ,EAASp3Q,UAAU+8F,KACpD4/L,EAAY8tB,EAAqBn6U,EAAKhhB,MAAMya,EAAMqtS,EAASuzC,YAAavzC,EAASuwC,aAAcwC,EAAiBC,GACpH95U,EAAKoyN,MAAQi6F,EAAU,GAGvBrsT,EAAK1jB,MAAQ+vU,EAAU,EACzB,KAAO,CAIL,IAFA,IAAIj6F,EAAQ,CAAe,MAAdpyN,EAAKouB,MAAgBpuB,EAAKouB,MAAQpuB,EAAKwuS,WAA0B,MAAdxuS,EAAKquB,MAAgBruB,EAAKquB,MAAQruB,EAAK+uS,WAE9FvwT,EAAI,EAAGA,EAAI,EAAGA,IACjB27V,EAAqB/nH,EAAM5zO,MAC7B4zO,EAAM5zO,GAAK84V,EAAa79U,EAAMA,EAAKysO,aAAa5pF,EAAK99J,IAAK4zO,EAAM5zO,KAIpEwhB,EAAKoyN,MAAQA,CACf,CACF,CAEA,OAAOpyN,CACT,CAEA,SAAS2hS,EAAY3hS,EAAMvG,EAAM4zN,EAAUe,GACzC,IAAI9+J,EAAM,CAAC,EAcX,OAZuB,MAAnBtvD,EAAKwqB,YAAuC,MAAjBxqB,EAAKg9N,UAClC1tK,EAAI+nR,aAAkC,MAAnBr3U,EAAKwqB,WAAqB/wB,EAAK62O,aAAatwO,EAAKwqB,YAAcxqB,EAAKg9N,SACvF1tK,EAAI5/B,UAAY29L,EAASs+B,QAAQ2uF,EAAkBlsH,EAAa9+J,EAAI+nR,eACpE/nR,EAAIijK,SAAWlF,EAASiR,aAAahvK,EAAI5/B,WACzC4/B,EAAI+qR,YAAc5gV,EAAKysO,aAAa52K,EAAIijK,SAAS9lG,OAEjDn9D,EAAIijK,SAAWnE,EAAYoE,cAC3BljK,EAAI5/B,UAAY29L,EAASiR,aAAahvK,EAAIijK,UAC1CjjK,EAAI+qR,YAAc5gV,EAAKysO,aAAa52K,EAAIijK,SAAS9lG,KACjDn9D,EAAI+nR,aAAe59U,EAAKysO,aAAa52K,EAAI5/B,UAAU+8F,MAG9Cn9D,CACT,CAEA,SAASgrR,EAAkBlsH,EAAao6E,GACtC,IAAI/uS,EAAO20N,EAAY7oI,UACnB6vD,EAAa37I,EAAK27I,WACtBozJ,EAAU/uS,EAAK62O,aAAak4D,GAE5B,IAAK,IAAIhqT,EAAI,EAAGA,EAAI42J,EAAW54J,OAAQgC,IAAK,CAC1C,IAAI+7V,EAAU9gV,EAAK23O,iBAAiBh8F,EAAW52J,IAE/C,GAAI+7V,EAAQt7V,OAASupT,EACnB,OAAO+xC,EAAQjpG,QAEnB,CACF,CAUA,SAASwD,EAAWznB,EAAUrtN,GAE5B,QAAOqtN,GAAYA,EAAS46E,aAAejoS,EAAKoyN,QAAUonH,EAAQx5U,KAAQqtN,EAAS46E,YAAYjoS,EAAKoyN,MACtG,CAEA,SAASsqC,EAAe18P,EAAMixO,EAAS5iB,EAAW4tC,GAEhD,OAAIA,EAAW,EACNj8P,EAAKoyN,OAASpyN,EAAKoyN,MAAM6pC,GAG3Bj8P,EAAK1jB,KACd,CAEA,SAASg7V,EAAa79U,EAAM49U,EAAcr4V,GACxC,GAAa,YAATA,EAAoB,CACtB,IAAI+mB,EAAM,EACNhD,EAAQ,EAOZ,OANAtJ,EAAKy4F,KAAKmlP,GAAc,SAAU7tV,EAAKm4F,GAChCp4F,MAAMC,KACTuc,GAAOvc,EACPuZ,IAEJ,IACOgD,EAAMhD,CACf,CAAO,MAAa,WAAT/jB,EACFya,EAAK+gV,UAAUnD,GAGf59U,EAAKm/O,cAAcy+F,GAAc,GAAe,QAATr4V,EAAiB,EAAI,EAEvE,CAEAtD,EAAQ25V,cAAgBA,EACxB35V,EAAQimT,YAAcA,EACtBjmT,EAAQo5P,WAAaA,EACrBp5P,EAAQghR,eAAiBA,EACzBhhR,EAAQ47V,aAAeA,C,wBCzOvB,IAAI3pH,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBu8R,EAAev8R,EAAQ,OAEvBy3U,EAAuBz3U,EAAQ,OAEnCA,EAAQ,MAERA,EAAQ,OAERA,EAAQ,OAoBR,IAAI03U,EAAkB,EAGtB/sH,EAAQqxE,oBAAoB,CAC1BhgT,KAAM,WACNrF,OAAQ,SAAUy5R,EAAelmD,EAAS/nI,GACxC3qG,KAAKy6P,OAASm+B,EACd54R,KAAKqmT,KAAO17M,EAEP3qG,KAAK0hV,YACR1hV,KAAK0hV,UAAY,CAAC,EAClBpvG,EAAO56H,KAAK3d,GAAU,SAAUt4E,EAASmzJ,GACvCjqE,EAAIoqJ,QAAQtxL,GAAGmxG,EAAW50K,KAAK0hV,UAAU9sK,GAAa09D,EAAOv1N,KAAK0E,EAASzhB,MAC7E,GAAGA,OAGL+kT,EAAa9tD,eAAej3P,KAAM,2BAA4B44R,EAAc11R,IAAI,kBAAmB,UACrG,EACAs4O,QAAS,SAAU9I,EAAS/nI,GAC1B2nI,EAAO56H,KAAK13G,KAAK0hV,WAAW,SAAUjgU,EAASmzJ,GAC7CjqE,EAAIoqJ,QAAQ/4K,IAAI44F,EAAWnzJ,EAC7B,IACAzhB,KAAK0hV,UAAY,IACnB,EAKAye,yBAA0B,SAAUt9P,GAClC7iG,KAAKogW,gBAAgBv9P,EACvB,EACAu9P,gBAAiB,SAAUv9P,GACzBA,GAAO7iG,KAAKqmT,KAAKz+C,eAAet1B,EAAO5uH,OAAO,CAC5Cl/G,KAAM,sBACLq+F,GACL,IAEF,IAAI9I,EAAW,CACbitP,UAAW,SAAU/gV,GACf25K,EAAa5/K,KAAM,WACrBA,KAAKqgW,gBAAkB,CAACp6V,EAAE2rB,QAAS3rB,EAAE4rB,SAEzC,EACAs1T,QAAS,SAAUlhV,GACjB,IAAIq6V,EAAiBtgW,KAAKqgW,gBAE1B,GAAIzgL,EAAa5/K,KAAM,UAAYsgW,EAAgB,CACjD,IAAItwV,EAAQ,CAAC/J,EAAE2rB,QAAS3rB,EAAE4rB,SACtBo4D,EAAO9jF,KAAK4iB,IAAIu3U,EAAe,GAAKtwV,EAAM,GAAI,GAAK7J,KAAK4iB,IAAIu3U,EAAe,GAAKtwV,EAAM,GAAI,GAE9F,GAAIi6E,EAAOi2Q,EACT,OAGF,IAAIx8V,EAAS1D,KAAKy6P,OAAOpmB,iBAAiBksH,0BAA0B,CAACt6V,EAAE2rB,QAAS3rB,EAAE4rB,UAE9D,SAApBnuB,EAAO6kL,UAAuBvoL,KAAKogW,gBAAgB,CACjDI,iBAAkB98V,EAAO88V,kBAE7B,CAEAxgW,KAAKqgW,gBAAkB,IACzB,EACAnZ,UAAW,SAAUjhV,GAEnB,IAAIjG,KAAKqgW,iBAAoBzgL,EAAa5/K,KAAM,aAAhD,CAIA,IAAIuxP,EAAQvxP,KAAKy6P,OACb/2P,EAAS6tP,EAAMld,iBAAiBksH,0BAA0B,CAACt6V,EAAE2rB,QAAS3rB,EAAE4rB,UACxE02J,EAAW7kL,EAAO6kL,SACT,SAAbA,GAAuBvoL,KAAKmgW,yBAAyBM,iBAAiBlvG,EAAMruP,IAAI,uBAEhFlD,KAAKmgW,yBAAsC,SAAb53K,EAAsB,KAClD,CACAi4K,iBAAkB98V,EAAO88V,iBAEzBxvU,UAAwB,SAAbu3J,GAAsB,MAXnC,CAaF,GAGF,SAAS3I,EAAa60D,EAAMwvE,GAC1B,IAAI1yD,EAAQ9c,EAAKgmB,OACjB,OAAOlJ,EAAMruP,IAAI,mBAAqBquP,EAAMruP,IAAI,yBAA2B+gT,CAC7E,CAEA9wE,EAAQ6Z,qBAAqBizG,E,wBCxH7Bz3U,EAAQ,MAERA,EAAQ,OAERA,EAAQ,M,wBCJR,IAAI2qN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBk4U,EAAWl4U,EAAQ,OAEvBA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAqBR2qN,EAAQsC,eAAenD,EAAOuD,MAAM6qH,EAAU,QAE9CvtH,EAAQqxE,oBAAoB,CAC1BhgT,KAAM,S,wBCtCRgkB,EAAQ,OAERA,EAAQ,OAERA,EAAQ,M,iCCJR,IAAIirB,EAAUjrB,EAAQ,OAIlB2qN,GAFU1/L,EAAQojM,QAERruN,EAAQ,QAElB8pN,EAAS9pN,EAAQ,OAEjB2hS,EAAc3hS,EAAQ,OAEtBsuN,EAAUtuN,EAAQ,OAoBlB8zS,EAAmB,CAAC,WAAY,gBAAiB,YAEjD7uS,EAAW0lN,EAAQqxE,oBAAoB,CACzChgT,KAAM,QACNrF,OAAQ,SAAUwhW,EAAYjuH,EAAS/nI,GACrC,IAAIzvD,EAAQl7C,KAAKk7C,MACjBA,EAAMigM,YAENn7O,KAAK4gW,WAAWD,GAEhB3gW,KAAK6gW,uBAAuBF,EAC9B,EACAC,WAAY,SAAUD,GACpB,IAAIj1T,EAAQi1T,EAAWtsH,iBACnBqqD,EAAgBhzP,EAAMizP,mBACtBmiE,EAAexuH,EAAO5oN,IAAIg1Q,GAAe,SAAUqiE,GACrD,IAAI1lC,EAAc,IAAIlR,EAAY42C,EAAcxvG,MAAO,CACrDz/N,SAAU,CAAC4Z,EAAMxc,GAAIwc,EAAMvc,IAC3B8kI,SAAU8sM,EAAcx+S,MACxBinQ,gBAAiB,EACjB8N,eAAgB,EAChBD,cAAe,IAEjB,OAAOgE,CACT,IACA/oF,EAAO56H,KAAKopP,GAAc,SAAUzlC,GAClC/oF,EAAO56H,KAAK4kN,EAAkBjB,EAAY96T,IAAK86T,GAC/Cr7T,KAAKk7C,MAAM36C,IAAI86T,EAAYzD,WAC7B,GAAG53T,KACL,EACA6gW,uBAAwB,SAAUF,GAChC,IAAIj1T,EAAQi1T,EAAWtsH,iBACnBqqD,EAAgBhzP,EAAMizP,mBAE1B,GAAKD,EAAc18R,OAAnB,CAIA,IAAIwzB,EAAQmrU,EAAWz9V,IAAI,SACvBk9P,EAAiBugG,EAAWnnH,SAAS,aACrCk9E,EAAiBiqC,EAAWnnH,SAAS,aACrCgmB,EAAiBY,EAAe5mB,SAAS,aACzCgxC,EAAiBksC,EAAel9E,SAAS,aACzCp4K,EAAgBg/L,EAAel9P,IAAI,QACnC89V,EAAgBtqC,EAAexzT,IAAI,QACnC+9V,EAAkBzhG,EAAet8P,IAAI,SACrCg+V,EAAkB12E,EAAetnR,IAAI,SACzC+9V,EAAkB3uH,EAAOxrO,QAAQm6V,GAAmBA,EAAkB,CAACA,GACvEC,EAAkB5uH,EAAOxrO,QAAQo6V,GAAmBA,EAAkB,CAACA,GACvE,IAAI7qC,EAAa,GACbO,EAAa,GAQjB,GAAc,WAAVphS,EAKF,IAJA,IAAI2rU,EAAcziE,EAAc,GAAG+1B,iBAC/BvlS,EAAKwc,EAAMxc,GACXC,EAAKuc,EAAMvc,GAENnrB,EAAI,EAAGA,EAAIm9V,EAAYn/V,OAAQgC,IAAK,CAC3C,GAAIo9D,EAAe,CACjB,IAAIk1P,EAAa8qC,EAAc/qC,EAAY4qC,EAAiBj9V,GAC5DqyT,EAAWC,GAAYryT,KAAK,IAAI6yO,EAAQ9sJ,OAAO,CAC7Cx0D,MAAO,CACLtG,GAAIA,EACJC,GAAIA,EACJpC,EAAGo0U,EAAYn9V,GAAG4zO,SAGxB,CAEA,GAAIopH,GAAiBh9V,EAAIm9V,EAAYn/V,OAAS,EAAG,CAC3Cs0T,EAAa8qC,EAAcxqC,EAAYsqC,EAAiBl9V,GAC5D4yT,EAAWN,GAAYryT,KAAK,IAAI6yO,EAAQk+E,KAAK,CAC3Cx/R,MAAO,CACLtG,GAAIA,EACJC,GAAIA,EACJgtN,GAAIglH,EAAYn9V,GAAG4zO,MACnB7qN,EAAGo0U,EAAYn9V,EAAI,GAAG4zO,SAG5B,CACF,KAGE,KAAIypH,EACAC,EAAkBhvH,EAAO5oN,IAAIg1Q,GAAe,SAAUqiE,EAAe55P,GACvE,IAAI4zN,EAAcgmC,EAActsC,iBAEhC,OADA4sC,EAAqC,MAAnBA,EAA0BtmC,EAAY/4T,OAAS,EAAImE,KAAKyI,IAAImsT,EAAY/4T,OAAS,EAAGq/V,GAC/F/uH,EAAO5oN,IAAIqxS,GAAa,SAAUI,GACvC,OAAOzvR,EAAMmzP,aAAas8B,EAAUvjF,MAAOzwI,EAC7C,GACF,IACIo6P,EAAa,GAEjB,IAASv9V,EAAI,EAAGA,GAAKq9V,EAAiBr9V,IAAK,CAGzC,IAFA,IAAI0nB,EAAS,GAEJzgB,EAAI,EAAGA,EAAIyzR,EAAc18R,OAAQiJ,IACxCygB,EAAOznB,KAAKq9V,EAAgBr2V,GAAGjH,IAQjC,GAJI0nB,EAAO,IACTA,EAAOznB,KAAKynB,EAAO,GAAGvpB,SAGpBi/D,EAAe,CACbk1P,EAAa8qC,EAAc/qC,EAAY4qC,EAAiBj9V,GAC5DqyT,EAAWC,GAAYryT,KAAK,IAAI6yO,EAAQglB,SAAS,CAC/CtmO,MAAO,CACL9J,OAAQA,KAGd,CAEA,GAAIs1U,GAAiBO,EAAY,CAC3BjrC,EAAa8qC,EAAcxqC,EAAYsqC,EAAiBl9V,EAAI,GAChE4yT,EAAWN,GAAYryT,KAAK,IAAI6yO,EAAQ+kB,QAAQ,CAC9CrmO,MAAO,CACL9J,OAAQA,EAAOzqB,OAAOsgW,MAG5B,CAEAA,EAAa71U,EAAOvpB,QAAQ64B,SAC9B,CAzCmB,CA4CvB,IAAIsX,EAAYktN,EAAejmN,eAC3BsmR,EAAYr1C,EAAeoB,eAE/Bt5C,EAAO56H,KAAKk/M,GAAY,SAAUA,EAAYzvN,GAC5CnnG,KAAKk7C,MAAM36C,IAAIu2O,EAAQq+E,UAAUyB,EAAY,CAC3ChrT,MAAO0mO,EAAO94I,SAAS,CACrBngE,OAAQ,OACRtP,KAAMm3U,EAAgB/5P,EAAM+5P,EAAgBl/V,SAC3C69T,GACH1wK,QAAQ,IAEZ,GAAGnvJ,MACHsyO,EAAO56H,KAAK2+M,GAAY,SAAUA,EAAYlvN,GAC5CnnG,KAAKk7C,MAAM36C,IAAIu2O,EAAQq+E,UAAUkB,EAAY,CAC3CzqT,MAAO0mO,EAAO94I,SAAS,CACrBzvE,KAAM,OACNsP,OAAQ4nU,EAAgB95P,EAAM85P,EAAgBj/V,SAC7CswC,GACH68G,QAAQ,IAEZ,GAAGnvJ,KArHH,CAgBA,SAASohW,EAAcI,EAAYC,EAAqBt6P,GACtD,IAAImvN,EAAanvN,EAAMs6P,EAAoBz/V,OAE3C,OADAw/V,EAAWlrC,GAAckrC,EAAWlrC,IAAe,GAC5CA,CACT,CAkGF,IAGFn1T,EAAOD,QAAUusB,C,wBC3LjBjF,EAAQ,OAERA,EAAQ,M,wBCFR,IAAI2qN,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAoBR2qN,EAAQqxE,oBAAoB,CAC1BhgT,KAAM,U,uBC/BR,IAAI2uO,EAAU3qN,EAAQ,OAElBqkO,EAAerkO,EAAQ,OAE3BA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAwBR2qN,EAAQ6Z,qBAAqBH,E,wBClC7B,IAAIva,EAAS9pN,EAAQ,OAEjBk5U,EAAgBl5U,EAAQ,OAExB81U,EAAkB91U,EAAQ,OAoB1Bm5U,EAAsBD,EAAch+O,OAAO,CAC7Cl/G,KAAM,kBAKNgyO,cAAe,CACb58K,gBAAiB,gBAEjBiqK,YAAa,OAEbh8J,YAAa,EAEbj2B,OAAQ,aAERqiR,SAAS,EACT1tC,QAAS,CAEPv2K,QAAS,QAGX/tF,OAAQ,cACR2+N,WAAY,GACZtuM,UAAW,CACT5E,MAAM,EACNlF,MAAO,EACP5X,MAAO,WAETse,MAAO,CAELpd,SAAU,OAKV4b,MAAM,EACNI,SAAU,OACV1X,OAAQ,EAGRxF,MAAO,WAET2uN,UAAW,CACT3uN,MAAO,UACPi3C,YAAa,GAEf+5R,gBAAiB,CACf3/U,OAAQ,SACR2+N,WAAY,GACZhwN,MAAO,UACPi3C,YAAa,EACbg8J,YAAa,uBACb7yM,WAAW,EACXijF,kBAAmB,IACnB+uD,gBAAiB,gBAEnB6+L,aAAc,CACZn0T,MAAM,EACNo0T,aAAa,EACbC,aAAa,EACbC,aAAa,EACb1jG,SAAU,GACVzsN,QAAS,GACT/f,SAAU,OAEVmwU,SAAU,4UAEVC,SAAU,idAEVC,SAAU,sTAEVC,SAAU,iTAEVxxU,MAAO,UACPizM,YAAa,UACbh8J,YAAa,GAEf64K,SAAU,CACRxxM,MAAO,CACLxB,MAAM,EAEN9c,MAAO,WAET2uN,UAAW,CACT3uN,MAAO,WAETixU,aAAc,CACZjxU,MAAO,UACPizM,YAAa,UACbh8J,YAAa,IAGjB5oD,KAAM,MAGVqzN,EAAO0W,MAAM24G,EAAqBrD,GAClC,IAAI7wU,EAAWk0U,EACfxgW,EAAOD,QAAUusB,C,wBCzHjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBmvR,EAAenvR,EAAQ,OAEvBwiH,EAASxiH,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAElB2/E,EAAS3/E,EAAQ,MAEjB65U,EAAe75U,EAAQ,OAEvB85U,EAAe95U,EAAQ,OAEvBwxD,EAAUxxD,EAAQ,OAElBg5N,EAAexnK,EAAQwnK,aAEvBoxE,EAAapqS,EAAQ,MAErBmlR,EAAanlR,EAAQ,OAErB05O,EAAU15O,EAAQ,OAElB25O,EAAaD,EAAQC,WAoBrBplP,EAAOu1N,EAAOv1N,KACd26F,EAAO46H,EAAO56H,KACd38E,EAAK50B,KAAK40B,GAEVtN,EAAW40U,EAAa3+O,OAAO,CACjCl/G,KAAM,kBACNkzD,KAAM,SAAUg7K,EAAS/nI,GACvB3qG,KAAK2qG,IAAMA,EAMX3qG,KAAK2wC,MAML3wC,KAAKuiW,UAKLviW,KAAKwiW,OAKLxiW,KAAKyiW,gBAKLziW,KAAK8vS,WAKL9vS,KAAK0iW,WACP,EAKAvjW,OAAQ,SAAUwjW,EAAejwH,EAAS/nI,EAAK6oI,GAM7C,GALAxzO,KAAKuxP,MAAQoxG,EACb3iW,KAAK2qG,IAAMA,EACX3qG,KAAK0yO,QAAUA,EACf1yO,KAAKk7C,MAAMigM,YAEPwnH,EAAcz/V,IAAI,QAAQ,GAAO,CACnC,IAAI0yL,EAAa51L,KAAKosQ,QAAQu2F,EAAeh4P,GAEzCi4P,EAAY5iW,KAAK6iW,aAAa,aAE9BC,EAAa9iW,KAAK6iW,aAAa,cAO/Bz3T,EAAOprC,KAAK2wC,MAAQ3wC,KAAK+iW,YAAYntK,EAAY+sK,GAErDA,EAAc3+F,cAAgB,SAAUnwB,GACtC,OAAOsuB,EAAW/2N,EAAK/U,MAAM+8R,SAASv/E,GACxC,EAEAn8H,EAAK,CAAC,WAAY,WAAY,UAAW,mBAAmB,SAAUjzG,GACpEzE,KAAK,UAAYyE,GAAMmxL,EAAYgtK,EAAWx3T,EAAMu3T,EACtD,GAAG3iW,MAEHA,KAAKgjW,iBAAiBptK,EAAYktK,EAAY13T,EAAMu3T,GAEpD3iW,KAAKmlC,UAAUywJ,EAAY+sK,EAC7B,CAEA3iW,KAAKijW,aACP,EAKArmR,OAAQ,WACN58E,KAAK2nQ,cAEL3nQ,KAAKk7C,MAAMigM,WACb,EAKAK,QAAS,WACPx7O,KAAK2nQ,aACP,EACAyE,QAAS,SAAUu2F,EAAeh4P,GAChC,IAAIu4P,EAAcP,EAAcz/V,IAAI,kBAChC0uC,EAAS+wT,EAAcz/V,IAAI,UAC3B66P,EAAWT,EAAYqlG,EAAeh4P,GAEvB,MAAfu4P,GAAuC,SAAhBA,EACzBA,EAAyB,eAAXtxT,EAA0BmsN,EAASp/N,EAAIo/N,EAASt1N,OAAS,EAAIkiE,EAAI23I,YAAc,EAAI,IAAM,IAAMyb,EAASj+O,EAAIi+O,EAASv1N,MAAQ,EAAImiE,EAAI03I,WAAa,EAAI,IAAM,IACjKtzO,MAAMm0V,KACfA,EAAc,CACZ/7S,WAAY,CACV5W,IAAK,IACLC,OAAQ,KAEV4W,SAAU,CACR/W,KAAM,IACNC,MAAO,MAETsB,GAAQsxT,IAGZ,IAuBIC,EACAC,EACAC,EACAn5E,EA1BAo5E,EAAgB,CAClBn8S,WAAY,SACZC,SAAU87S,GAAe,GAAqB,MAAhBA,EAAsB,OAAS,SAE3DK,EAAmB,CACrBp8S,WAAY+7S,GAAe,GAAqB,MAAhBA,EAAsB,MAAQ,SAC9D97S,SAAU,UAERo8S,EAAc,CAChBr8S,WAAY,EACZC,SAAUrsB,EAAK,GAGb0oU,EAAwB,aAAX7xT,EAAwBmsN,EAASt1N,OAASs1N,EAASv1N,MAChEk7T,EAAef,EAAcnpH,SAAS,gBACtCmqH,EAAcD,EAAaxgW,IAAI,QAAQ,GACvC0gW,EAAcD,EAAcD,EAAaxgW,IAAI,YAAc,EAC3D2gW,EAAaF,EAAcD,EAAaxgW,IAAI,WAAa,EACzD4gW,EAAcF,EAAcC,EAE5B/4C,EAAgB63C,EAAcz/V,IAAI,iBAAmB,EACzD4nT,EAAgBA,EAAgB/vR,EAAK,IAMrC,IAAIgpU,EAAkBL,EAAaxgW,IAAI,YAAY,GAC/C4+V,EAAc6B,GAAeD,EAAaxgW,IAAI,eAAe,GAC7D6+V,EAAc4B,GAAeD,EAAaxgW,IAAI,eAAe,GAC7D8+V,EAAc2B,GAAeD,EAAaxgW,IAAI,eAAe,GAC7D8gW,EAAQ,EACRC,EAASR,EAmBb,MAjBwB,SAApBM,GAAkD,WAApBA,GAChCjC,IAAgBqB,EAAe,CAAC,EAAG,GAAIa,GAASF,GAChD/B,IAAgBqB,EAAkB,CAACY,EAAO,GAAIA,GAASF,GACvD9B,IAAgBqB,EAAkB,CAACY,EAASL,EAAa,GAAIK,GAAUH,KAGvEhC,IAAgBqB,EAAe,CAACc,EAASL,EAAa,GAAIK,GAAUH,GACpE/B,IAAgBqB,EAAkB,CAAC,EAAG,GAAIY,GAASF,GACnD9B,IAAgBqB,EAAkB,CAACY,EAASL,EAAa,GAAIK,GAAUH,IAGzE55E,EAAa,CAAC85E,EAAOC,GAEjBtB,EAAcz/V,IAAI,YACpBgnR,EAAWlvP,UAGN,CACL+iO,SAAUA,EACV0lG,WAAYA,EACZ7xT,OAAQA,EACRqiH,SAAUuvM,EAAY5xT,GACtBk5Q,cAAeA,EACfo4C,YAAaA,EACbzgT,WAAYkgT,EAAcz/V,IAAI,gBAAkBogW,EAAc1xT,GAC9DsyT,cAAevB,EAAcz/V,IAAI,wBAA0By/V,EAAcz/V,IAAI,mBAAqBqgW,EAAiB3xT,GAEnHuxT,aAAcA,EACdC,gBAAiBA,EACjBC,gBAAiBA,EACjBn5E,WAAYA,EACZ05E,YAAaA,EACbC,WAAYA,EAEhB,EACA1+T,UAAW,SAAUywJ,EAAY+sK,GAM/B,IAAIC,EAAY5iW,KAAK8vS,WACjBgzD,EAAa9iW,KAAK0iW,YAClB3kG,EAAWnoE,EAAWmoE,SAE1B,GAA0B,aAAtBnoE,EAAWhkJ,OAAuB,CAEpC,IAAIp4B,EAAIwxH,EAAOhkI,SACXm9V,EAAgBpmG,EAASj+O,EACzBskV,EAAgBrmG,EAASp/N,EAAIo/N,EAASt1N,OAC1CuiG,EAAO10G,UAAU9c,EAAGA,EAAG,EAAE2qV,GAAgBC,IACzCp5N,EAAO50G,OAAO5c,EAAGA,GAAIuhB,EAAK,GAC1BiwG,EAAO10G,UAAU9c,EAAGA,EAAG,CAAC2qV,EAAeC,IACvCrmG,EAAWA,EAASzpO,QACpBypO,EAASkL,eAAezvP,EAC1B,CAEA,IAAI6qV,EAAYC,EAASvmG,GACrBwmG,EAAYD,EAAS1B,EAAU55F,mBAC/Bw7F,EAAaF,EAASxB,EAAW95F,mBACjCy7F,EAAe7B,EAAU9wU,SACzB4yU,EAAiB5B,EAAWhxU,SAChC4yU,EAAe,GAAKD,EAAa,GAAKJ,EAAU,GAAG,GACnD,IAAInB,EAActtK,EAAWstK,YAE7B,GAAIn0V,MAAMm0V,GAAc,CAEtB,IAAIyB,EAA+B,MAAhBzB,EAAsB,EAAI,EAC7C0B,EAAQH,EAAcF,EAAWF,EAAW,EAAGM,GAC/CC,EAAQF,EAAgBF,EAAYH,EAAW,EAAG,EAAIM,EACxD,KAAO,CACDA,EAAezB,GAAe,EAAI,EAAI,EAC1C0B,EAAQH,EAAcF,EAAWF,EAAW,EAAGM,GAC/CD,EAAe,GAAKD,EAAa,GAAKvB,CACxC,CAQA,SAAS2B,EAAUC,GACjB,IAAIz2V,EAAMy2V,EAAYhzU,SACtBgzU,EAAYp8T,OAAS,CAAC27T,EAAU,GAAG,GAAKh2V,EAAI,GAAIg2V,EAAU,GAAG,GAAKh2V,EAAI,GACxE,CAEA,SAASi2V,EAASrnU,GAEhB,MAAO,CAAC,CAACA,EAAKnd,EAAGmd,EAAKnd,EAAImd,EAAKuL,OAAQ,CAACvL,EAAK0B,EAAG1B,EAAK0B,EAAI1B,EAAKwL,QAChE,CAEA,SAASm8T,EAAQlrF,EAASt7M,EAAMo7D,EAAI4yH,EAAQ24G,GAC1CrrF,EAAQttB,IAAW5yH,EAAG4yH,GAAQ24G,GAAY3mS,EAAKguL,GAAQ24G,EACzD,CAlBAnC,EAAU/rU,KAAK,WAAY4tU,GAC3B3B,EAAWjsU,KAAK,WAAY6tU,GAC5B9B,EAAU3uM,SAAW6uM,EAAW7uM,SAAW2hC,EAAW3hC,SACtD4wM,EAAUjC,GACViC,EAAU/B,EAeZ,EACAC,YAAa,SAAUntK,EAAY+sK,GACjC,IAAI1jV,EAAO0jV,EAAc53P,UACrB50D,EAAWwsT,EAAcz/V,IAAI,YAC7BmzB,EAAQu8R,EAAWoyC,mBAAmBrC,EAAexsT,GAEzD9f,EAAM4uU,SAAW,WACf,OAAOhmV,EAAK0+O,SAAS,CAAC,UAAU,SAAU77P,GACxC,OAAOA,CACT,GACF,EAEA,IAAIq8P,EAAal/O,EAAKm/O,cAAc,SACpC/nO,EAAM6uU,UAAU/mG,EAAW,GAAIA,EAAW,IAC1C9nO,EAAM8uU,YACN,IAAI/5T,EAAO,IAAIk3T,EAAa,QAASjsU,EAAOu/J,EAAWs0F,WAAY/zO,GAEnE,OADA/K,EAAKmmN,MAAQoxG,EACNv3T,CACT,EACAy3T,aAAc,SAAUp+V,GACtB,IAAI2gW,EAAWplW,KAAK,IAAMyE,GAAQ,IAAIqyO,EAAQM,MAE9C,OADAp3O,KAAKk7C,MAAM36C,IAAI6kW,GACRA,CACT,EACAC,gBAAiB,SAAUzvK,EAAY16I,EAAO9P,EAAMu3T,GAClD,IAAIz4E,EAAa9+O,EAAK8/M,YAEjBy3G,EAAcz/V,IAAI,mBAIvBg4C,EAAM36C,IAAI,IAAIu2O,EAAQ3vJ,KAAK,CACzB3xD,MAAO,CACLsU,GAAIogP,EAAW,GACfngP,GAAI,EACJE,GAAIigP,EAAW,GACfhgP,GAAI,GAENt+B,MAAO0mO,EAAO5uH,OAAO,CACnBnqF,QAAS,SACRopU,EAAcnpH,SAAS,aAAajgM,gBACvC41G,QAAQ,EACRmtF,GAAI,IAER,EAKAgpH,gBAAiB,SAAU1vK,EAAY16I,EAAO9P,EAAMu3T,GAClD,IAAI1jV,EAAO0jV,EAAc53P,UAErBw6P,EAAQn6T,EAAK/U,MAAM4uU,WAEvBvtP,EAAK6tP,GAAO,SAAUzjW,GACpB,IAAIq5T,EAAY/vR,EAAK64M,YAAYniP,GAC7Bs4O,EAAYn7N,EAAKo7N,aAAav4O,GAC9By7O,EAAiBnD,EAAUZ,SAAS,aACpCgsH,EAAkBprH,EAAUZ,SAAS,sBACrCisH,EAAY,CACd3zU,SAAU,CAACqpS,EAAW,GACtBvlB,QAAS74R,EAAK/c,KAAK0lW,gBAAiB1lW,KAAM8B,IAExCF,EAAK+jW,EAAWvrH,EAAWmD,EAAgBriM,EAAOuqT,GACtD3uH,EAAQ8G,cAAch8O,EAAI4jW,EAAgBhmH,gBAEtCpF,EAAUl3O,IAAI,YAChBtB,EAAGiyO,UAAY/xO,EACfF,EAAG46V,UAAYmG,GAEf/gW,EAAGiyO,UAAYjyO,EAAG46V,UAAY,IAElC,GAAGx8V,KACL,EAKAgjW,iBAAkB,SAAUptK,EAAY16I,EAAO9P,EAAMu3T,GACnD,IAAI56G,EAAa38M,EAAKw6T,gBAEtB,GAAK79G,EAAW7kP,IAAI,QAApB,CAIA,IAAI+b,EAAO0jV,EAAc53P,UACrB6pN,EAASxpR,EAAK2+O,gBAClBryK,EAAKk9M,GAAQ,SAAU5qC,GAErB,IAAIn2C,EAAYm2C,EAAUC,UACtB7vC,EAAYn7N,EAAKo7N,aAAaxG,GAC9B4pE,EAAmBrjE,EAAUZ,SAAS,SACtCwO,EAAkB5N,EAAUZ,SAAS,kBACrC2hF,EAAY/vR,EAAK64M,YAAY+lC,EAAUC,WACvC2rC,EAAS,IAAI9+E,EAAQoc,KAAK,CAC5BphO,SAAU,CAACqpS,EAAW,GACtBlnK,SAAU2hC,EAAWk1H,cAAgBl1H,EAAW3hC,SAChD2hJ,QAAS74R,EAAK/c,KAAK0lW,gBAAiB1lW,KAAM6zO,GAC1C1kF,QAAQ,IAEV2nF,EAAQmf,aAAa2/D,EAAOhqT,MAAO6xS,EAAkB,CACnD9gR,KAAMqtP,EAAU8rC,eAChBz7R,UAAWu7J,EAAWnzI,WACtBs6M,kBAAmBnnE,EAAWsuK,gBAEhChpT,EAAM36C,IAAIq1T,GACV9+E,EAAQ8G,cAAcg4E,EAAQ9+E,EAAQmf,aAAa,CAAC,EAAGjO,GACzD,GAAGhoP,KAxBH,CAyBF,EAKA6lW,eAAgB,SAAUjwK,EAAY16I,EAAO9P,EAAMu3T,GACjD,IAAIiB,EAAchuK,EAAWguK,YACzB3vM,EAAW2hC,EAAW3hC,SACtBsrF,EAAYojH,EAAcnpH,SAAS,gBAAgBgG,eACnDhC,EAAamlH,EAAcnpH,SAAS,yBAAyBgG,eAC7DviN,EAAO,CAAC,GAAI2mU,EAAc,EAAGA,EAAaA,GAC1CkC,EAAYnD,EAAcoD,eAC1B9xC,EAAU0uC,EAAcz/V,IAAI,WAAW,GAK3C,SAAS8iW,EAAQl0U,EAAUm0U,EAAUrwD,EAASswD,GAC5C,GAAKp0U,EAAL,CAIA,IAAI+wE,EAAM,CACR/wE,SAAUA,EACV4W,OAAQ,CAACk7T,EAAc,EAAG,GAC1B3vM,SAAUiyM,GAAcjyM,EAAW,EACnCmjH,WAAW,EACXxrQ,MAAO2zO,EACPq2D,QAASA,GAEPuwD,EAAMC,EAASzD,EAAesD,EAAUhpU,EAAM4lE,GAClD3nD,EAAM36C,IAAI4lW,GACVrvH,EAAQ8G,cAAcuoH,EAAK3oH,EAZ3B,CAaF,CApBAwoH,EAAQpwK,EAAWytK,gBAAiB,wBAAyBtmV,EAAK/c,KAAK0lW,gBAAiB1lW,KAAMi0T,EAAU,IAAM,MAC9G+xC,EAAQpwK,EAAWwtK,gBAAiB,wBAAyBrmV,EAAK/c,KAAK0lW,gBAAiB1lW,KAAMi0T,EAAU,IAAM,MAC9G+xC,EAAQpwK,EAAWutK,aAAc,iBAAmB2C,EAAY,WAAa,YAAa/oV,EAAK/c,KAAKqmW,iBAAkBrmW,MAAO8lW,IAAY,EAmB3I,EACAQ,sBAAuB,SAAU1wK,EAAY16I,EAAO9P,EAAMu3T,GACxD,IAAI1jV,EAAO0jV,EAAc53P,UACrBrvD,EAAeinT,EAAc4D,kBAC7BtlG,EAAehiP,EAAKo7N,aAAa3+L,GAAc89L,SAAS,mBACxD69G,EAAKr3V,KACL6hB,EAAW,CACb2kV,SAAU,SAAUz2T,GAClBA,EAAQk1N,WAAY,EACpBl1N,EAAQgtO,MAAQhgQ,EAAKs6U,EAAGoP,mBAAoBpP,GAC5CtnT,EAAQqyP,UAAYrlR,EAAKs6U,EAAGqP,sBAAuBrP,GACnDsP,EAAc52T,EAAS2L,EAActQ,EAAMu3T,GAAe,EAC5D,EACAiE,SAAU,SAAU72T,GAClB42T,EAAc52T,EAAS2L,EAActQ,EAAMu3T,EAC7C,GAGF3iW,KAAKyiW,gBAAkBkD,EAAW1kG,EAAcA,EAAcjhQ,KAAK8vS,WAAY,CAAC,EAAG9vS,KAAKyiW,gBAAiB5gV,EAC3G,EACAwkV,iBAAkB,SAAUQ,GAC1B7mW,KAAK2nQ,cAEL3nQ,KAAK2qG,IAAIi9J,eAAe,CACtBpjQ,KAAM,qBACNshW,UAAWe,EACXzoS,KAAMp+D,KAAK6N,KAEf,EACA44V,mBAAoB,SAAU9gS,EAAIC,EAAI3/D,GACpCjG,KAAK2nQ,cAEL3nQ,KAAK8mW,uBAAuB,CAAC7gW,EAAE2rB,QAAS3rB,EAAE4rB,SAC5C,EACA60U,sBAAuB,SAAUzgW,GAC/BjG,KAAK8mW,uBAAuB,CAAC7gW,EAAE2rB,QAAS3rB,EAAE4rB,UAAU,EACtD,EACAi1U,uBAAwB,SAAUC,EAAU/2P,GAC1C,IAAImrP,EAAUn7V,KAAKgnW,aAAaD,GAAU,GAEtC37T,EAAOprC,KAAK2wC,MACZu5O,EAAayjB,EAAWi8B,IAAIx+R,EAAK8/M,YAAY/oP,SACjDg5V,EAAUjxE,EAAW,KAAOixE,EAAUjxE,EAAW,IACjDixE,EAAUjxE,EAAW,KAAOixE,EAAUjxE,EAAW,IACjDlqR,KAAKyiW,gBAAgB3wU,SAAS,GAAKqpU,EAEnCn7V,KAAKyiW,gBAAgB9+L,QAErB,IAAIg2L,EAAkB35V,KAAKinW,iBAAiB9L,GAExCwH,EAAgB3iW,KAAKuxP,OAErBvhJ,GAAW2pP,IAAoBgJ,EAAc4D,mBAAqB5D,EAAcz/V,IAAI,cACtFlD,KAAK0lW,gBAAgB/L,EAEzB,EACAsJ,YAAa,WAOX,SAASiE,IAEP,IAAIvE,EAAgB3iW,KAAKuxP,MAEzBvxP,KAAK0lW,gBAAgB/C,EAAc4D,mBAAqB5D,EAAcz/V,IAAI,UAAU,IAAS,EAAI,GACnG,CAXAlD,KAAK2nQ,cAED3nQ,KAAKuxP,MAAMw0G,iBACb/lW,KAAKwiW,OAASr+U,WAAWpH,EAAKmqV,EAAalnW,MAAOA,KAAKuxP,MAAMruP,IAAI,iBASrE,EACA8jW,aAAc,SAAUruB,GACtB,IAAIjzB,EAAQ1lT,KAAK8vS,WAAW+qB,oBAE5B,OAAO/jF,EAAQmyB,eAAe0vE,EAAQjzB,GAAO,EAC/C,EACAuhD,iBAAkB,SAAUE,GAC1B,IAEIxN,EAFA16U,EAAOjf,KAAKuxP,MAAMxmJ,UAClB9gB,EAAO4I,IAEPznD,EAAOprC,KAAK2wC,MAUhB,OATA1xB,EAAKy4F,KAAK,CAAC,UAAU,SAAU51G,EAAO+xO,GACpC,IAAI+D,EAAQxsM,EAAK64M,YAAYniP,GACzBorB,EAAI/mB,KAAK6iB,IAAI4uN,EAAQuvH,GAErBj6U,EAAI+8D,IACNA,EAAO/8D,EACPysU,EAAkB9lH,EAEtB,IACO8lH,CACT,EACAhyF,YAAa,WACP3nQ,KAAKwiW,SACPvpS,aAAaj5D,KAAKwiW,QAClBxiW,KAAKwiW,OAAS,KAElB,EACAkD,gBAAiB,SAAU0B,GACzB,IAAI1rT,EAAe17C,KAAKuxP,MAAMg1G,kBAEZ,MAAda,EACFA,EAAY1rT,EAAe,EACJ,MAAd0rT,IACTA,EAAY1rT,EAAe,GAG7B17C,KAAK2qG,IAAIi9J,eAAe,CACtBpjQ,KAAM,iBACNk3C,aAAc0rT,EACdhpS,KAAMp+D,KAAK6N,KAEf,IAGF,SAASyvP,EAAY/L,EAAO5mJ,GAC1B,OAAOxC,EAAOo1J,cAAchM,EAAMiM,qBAAsB,CACtDh1N,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,aACXiP,EAAMruP,IAAI,WACf,CAEA,SAASkjW,EAASzD,EAAe0E,EAASpqU,EAAMknE,GAC9C,IAAIv4F,EAAQu4F,EAAKv4F,MACb85C,EAAOoxL,EAAQ0wE,WAAWm7C,EAAcz/V,IAAImkW,GAAUljQ,GAAQ,CAAC,EAAG,IAAIwzM,EAAa16Q,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,KAMvH,OAJIrxB,GACF85C,EAAKmmI,SAASjgL,GAGT85C,CACT,CAOA,SAASigT,EAAW57G,EAAWxM,EAAgBriM,EAAO2nD,EAAK5gF,EAAQJ,GACjE,IAAI+O,EAAQ2sN,EAAer6O,IAAI,SAE/B,GAAK+e,EAOHA,EAAOqlO,SAAS12N,GAChBsqB,EAAM36C,IAAI0hB,GAEVJ,GAAYA,EAAS+kV,SAAS3kV,OAVnB,CACX,IAAImhO,EAAa2G,EAAU7mP,IAAI,UAC/B+e,EAASu/N,EAAa4B,GAAa,GAAI,EAAG,EAAG,EAAGxyN,GAChD3O,EAAO4pK,SAAS,iBAAiB,GACjC3wI,EAAM36C,IAAI0hB,GACVJ,GAAYA,EAAS2kV,SAASvkV,EAChC,CAQA,IAAIs9N,EAAYhC,EAAeiC,aAAa,CAAC,QAAS,SAAU,eAChEv9N,EAAO4pK,SAAS0zD,GAEhB18I,EAAMyvI,EAAOt0H,MAAM,CACjBo5J,WAAW,EACX96B,GAAI,KACHz5I,GAAK,GACR,IAAI+9I,EAAamJ,EAAU7mP,IAAI,cAC/B09O,EAAaA,aAAsB/5O,MAAQ+5O,EAAWz+O,QAAU,EAAEy+O,GAAaA,GAC/EA,EAAW,IAAM,EACjBA,EAAW,IAAM,EACjB/9I,EAAIxsE,MAAQuqN,EACZ,IAAIG,EAAegJ,EAAU7mP,IAAI,gBAEjC,GAAI69O,EAAc,CAChB,IAAI1yO,EAAMw0F,EAAI/wE,SAAW+wE,EAAI/wE,UAAY,CAAC,EAAG,GAC7CzjB,EAAI,IAAMs/R,EAAWjsD,aAAaX,EAAa,GAAIH,EAAW,IAC9DvyO,EAAI,IAAMs/R,EAAWjsD,aAAaX,EAAa,GAAIH,EAAW,GAChE,CAEA,IAAIC,EAAekJ,EAAU7mP,IAAI,gBAUjC,OATA2/F,EAAIoxD,UAAY4sF,GAAgB,GAAK16O,KAAK40B,GAAK,KAAO,EACtD9Y,EAAO4U,KAAKgsE,GAOZ5gF,EAAOqzN,kBACArzN,CACT,CAEA,SAAS0kV,EAAc52T,EAAS8jM,EAAWzoM,EAAMu3T,EAAe2E,GAC9D,IAAIv3T,EAAQuvK,SAAZ,CAIA,IAAI2hD,EAAe0hG,EAAcnpH,SAAS,mBACtC2hH,EAAU/vT,EAAK64M,YAAY0+G,EAAc53P,UAAU7nG,IAAI,CAAC,SAAU2wO,IAElEyzH,IAAgBrmG,EAAa/9P,IAAI,aAAa,GAChD6sC,EAAQlZ,KAAK,CACX/E,SAAU,CAACqpU,EAAS,MAGtBprT,EAAQo6B,eAAc,GACtBp6B,EAAQi3M,UAAU,CAChBl1N,SAAU,CAACqpU,EAAS,IACnBl6F,EAAa/9P,IAAI,qBAAqB,GAAO+9P,EAAa/9P,IAAI,mBAAmB,IAbtF,CAeF,CAEA/B,EAAOD,QAAUusB,C,wBC9nBjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB++U,EAAO/+U,EAAQ,OA+Bf85U,EAAe,SAAUrwN,EAAK57G,EAAOmxU,EAAarxT,GACpDoxT,EAAKlnW,KAAKL,KAAMiyI,EAAK57G,EAAOmxU,GAU5BxnW,KAAKwE,KAAO2xC,GAAY,QAMxBn2C,KAAKuxP,MAAQ,IACf,EAEA+wG,EAAa/6V,UAAY,CACvB2F,YAAao1V,EAKbsD,cAAe,WACb,OAAO5lW,KAAKuxP,MAAM/X,SAAS,QAC7B,EAKApB,aAAc,WACZ,MAAoC,eAA7Bp4O,KAAKuxP,MAAMruP,IAAI,SACxB,GAEFovO,EAAO2qB,SAASqlG,EAAciF,GAC9B,IAAI95U,EAAW60U,EACfnhW,EAAOD,QAAUusB,C,iCCxEjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBozT,EAAiBpzT,EAAQ,OAEzBy5O,EAAOz5O,EAAQ,OAEf6+P,EAAY7+P,EAAQ,OAoBpBk5U,EAAgB9lB,EAAel4N,OAAO,CACxCl/G,KAAM,WACNwvR,WAAY,MAKZx9C,cAAe,CACb4J,OAAQ,EAERroK,EAAG,EAEHrqC,MAAM,EACNyI,SAAU,OAEV0oR,UAAU,EACVxuR,KAAM,MACNE,IAAK,KACLD,MAAO,MACPE,OAAQ,EACRhI,MAAO,KACPC,OAAQ,GACR8iD,QAAS,EACTw4Q,gBAAiB,OAEjB0D,UAAU,EACVnpN,QAAQ,EAERg1H,MAAM,EACNo0F,aAAc,IAEdhsT,aAAc,EACd6jM,UAAW,CAAC,EACZrwM,MAAO,CACLte,MAAO,QAET3R,KAAM,IAMRy4C,KAAM,SAAU3sB,EAAQg8M,EAAarU,GAKnC1yO,KAAKqqK,MAMLrqK,KAAK2nW,OACL3nW,KAAK+iQ,qBAAqBh4N,EAAQ2nM,GAElC1yO,KAAK4nW,WACP,EAKA9kG,YAAa,SAAU/3N,GACrB22T,EAAcngH,WAAWvhP,KAAM,cAAe+C,WAE9C/C,KAAK4nW,WACP,EAKAC,gBAAiB,SAAUnsT,GACL,MAAhBA,IACFA,EAAe17C,KAAK+qC,OAAO2Q,cAG7B,IAAInzB,EAAQvoB,KAAKqqK,MAAM9hJ,QAEnBvoB,KAAK+qC,OAAOuoO,KACd53N,GAAgBA,EAAenzB,EAAQA,GAASA,GAEhDmzB,GAAgBnzB,IAAUmzB,EAAenzB,EAAQ,GACjDmzB,EAAe,IAAMA,EAAe,IAGtC17C,KAAK+qC,OAAO2Q,aAAeA,CAC7B,EAKA6qT,gBAAiB,WACf,OAAOvmW,KAAK+qC,OAAO2Q,YACrB,EAKAosT,WAAY,WACV,OAAO9nW,KAAKumW,mBAAqBvmW,KAAKqqK,MAAM9hJ,QAAU,CACxD,EAKAw/U,aAAc,SAAU3xV,GACtBpW,KAAK+qC,OAAO08T,WAAarxV,CAC3B,EAKA2vV,aAAc,WACZ,QAAS/lW,KAAK+qC,OAAO08T,QACvB,EAKAG,UAAW,WACT,IAAIhnC,EAAa5gU,KAAK+qC,OAClBi9T,EAAUpnC,EAAW3hT,MAAQ,GAC7Bk3B,EAAWyqR,EAAWzqR,SACtB/oC,EAAQpN,KAAK2nW,OAAS,GAE1B,GAAiB,aAAbxxT,EAAyB,CAC3B,IAAI8xT,EAAS,GACb31H,EAAO56H,KAAKswP,GAAS,SAAUxiV,EAAMvjB,GACnC,IACIqkR,EADAxkR,EAAQulR,EAAUhH,iBAAiB76P,GAGnC8sN,EAAOhxO,SAASkkB,IAClB8gQ,EAAUh0C,EAAOh+M,MAAM9O,GACvB8gQ,EAAQxkR,MAAQG,GAEhBqkR,EAAUrkR,EAGZgmW,EAAOhkW,KAAKqiR,GAEPh0C,EAAOohF,SAAS5xT,IAAoB,MAATA,IAAiBiN,MAAMjN,KACrDA,EAAQ,IAGVsL,EAAMnJ,KAAKnC,EAAQ,GACrB,IACAkmW,EAAUC,CACZ,CAEA,IAAIC,EAAU,CACZ5jG,SAAU,UACV3uO,KAAM,QACNwgB,IAAa,SACXl3B,EAAOjf,KAAKqqK,MAAQ,IAAI43F,EAAK,CAAC,CAChCx9P,KAAM,QACND,KAAM0jW,IACJloW,MACJif,EAAK4/C,SAASmpS,EAAS56V,EACzB,EACA29F,QAAS,WACP,OAAO/qG,KAAKqqK,KACd,EAMAmrJ,cAAe,WACb,GAA6B,aAAzBx1T,KAAKkD,IAAI,YACX,OAAOlD,KAAK2nW,OAAOxlW,OAEvB,IAEEsrB,EAAWi0U,EACfvgW,EAAOD,QAAUusB,C,wBCxMjB,IAAIqjT,EAAgBtoT,EAAQ,OAoBxBiF,EAAWqjT,EAAcptN,OAAO,CAClCl/G,KAAM,aAGRrD,EAAOD,QAAUusB,C,wBCxBjB,IAAI6kN,EAAS9pN,EAAQ,OAoBrB,SAASiF,EAASsd,GAChB,IAAIo9T,EAAcp9T,GAAUA,EAAOq9T,SAE9B91H,EAAOxrO,QAAQqhW,KAClBA,EAAcA,EAAc,CAACA,GAAe,IAG9C71H,EAAO56H,KAAKywP,GAAa,SAAUtlQ,GAC5BA,GAILwlQ,EAAcxlQ,EAChB,GACF,CAEA,SAASwlQ,EAAcxlQ,GACrB,IAAIr+F,EAAOq+F,EAAIr+F,KACX8jW,EAAW,CACb,OAAU,QACV,KAAQ,QAUV,GAPIA,EAAS9jW,KACXq+F,EAAI1sD,SAAWmyT,EAAS9jW,UACjBq+F,EAAIr+F,MAGb+jW,EAAa1lQ,GAETx+F,EAAIw+F,EAAK,mBAAoB,CAC/B,IAAIg/P,EAAeh/P,EAAIg/P,eAAiBh/P,EAAIg/P,aAAe,CAAC,GAEvDx9V,EAAIw9V,EAAc,cACrBA,EAAa/vU,SAAW+wE,EAAIkhQ,iBAGA,SAA1BlC,EAAa/vU,UAAwBztB,EAAIw9V,EAAc,UACzDA,EAAan0T,MAAO,SACbm0T,EAAa/vU,iBAGf+wE,EAAIkhQ,eACb,CAEAzxH,EAAO56H,KAAK7U,EAAI5jF,MAAQ,IAAI,SAAU4jC,GAChCyvL,EAAOhxO,SAASuhD,KAAcyvL,EAAOxrO,QAAQ+7C,MAC1Cx+C,EAAIw+C,EAAU,UAAYx+C,EAAIw+C,EAAU,UAE3CA,EAAS/gD,MAAQ+gD,EAASp+C,MAG5B8jW,EAAa1lT,GAEjB,GACF,CAEA,SAAS0lT,EAAa1lQ,GACpB,IAAI08I,EAAY18I,EAAI08I,YAAc18I,EAAI08I,UAAY,CAAC,GAC/CipH,EAAoBjpH,EAAUmB,WAAanB,EAAUmB,SAAW,CAAC,GAEjExxM,EAAQ2zD,EAAI3zD,OAAS2zD,EAAI3zD,OAAS,CAAC,EACnCu5T,EAAcv5T,EAAM6uL,SAAW7uL,EAAM6uL,OAAS,CAAC,GAC/C2qI,EAAmB,CACrB3qI,OAAQ,EACR2iB,SAAU,GAEZpO,EAAO56H,KAAKxoE,GAAO,SAAUptC,EAAO2C,GAC7BikW,EAAiBjkW,IAAUJ,EAAIokW,EAAahkW,KAC/CgkW,EAAYhkW,GAAQ3C,EAExB,IAEI0mW,EAAkBt5T,QAAU7qC,EAAI6qC,EAAO,cACzCA,EAAMwxM,SAAW8nH,EAAkBt5T,aAC5Bs5T,EAAkBt5T,MAE7B,CAEA,SAAS7qC,EAAImb,EAAKqX,GAChB,OAAOrX,EAAIlZ,eAAeuwB,EAC5B,CAEA11B,EAAOD,QAAUusB,C,wBCvGjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAoBrB2qN,EAAQI,eAAe,CACrB/uO,KAAM,iBACN6e,MAAO,kBACP2T,OAAQ,qBACP,SAAUw8M,EAASd,GACpB,IAAIiwH,EAAgBjwH,EAAQizC,aAAa,YAYzC,OAVIg9E,GAAyC,MAAxBnvH,EAAQ93L,eAC3BinT,EAAckF,gBAAgBr0H,EAAQ93L,eAEjCinT,EAAcz/V,IAAI,QAAQ,IAASy/V,EAAcmF,cACpDnF,EAAcoF,cAAa,IAK/Br1H,EAAQi2H,YAAY,YACbr2H,EAAO94I,SAAS,CACrB99C,aAAcinT,EAAc53T,OAAO2Q,cAClC83L,EACL,IACAL,EAAQI,eAAe,CACrB/uO,KAAM,qBACN6e,MAAO,sBACP2T,OAAQ,WACP,SAAUw8M,EAASd,GACpB,IAAIiwH,EAAgBjwH,EAAQizC,aAAa,YAErCg9E,GAAsC,MAArBnvH,EAAQsyH,WAC3BnD,EAAcoF,aAAav0H,EAAQsyH,UAEvC,G,wBCrDA,IAAIpqB,EAAYlzT,EAAQ,OAoBxBkzT,EAAUC,yBAAyB,YAAY,WAE7C,MAAO,QACT,G,sBCvBA,IAAIrpG,EAAS9pN,EAAQ,OAEjB2qN,EAAU3qN,EAAQ,OAElBsuN,EAAUtuN,EAAQ,OAElB4jP,EAAU5jP,EAAQ,MAElB+0O,EAAgB6O,EAAQ7O,cAExB2E,EAAU15O,EAAQ,OAElBqgR,EAAa3mC,EAAQ2mC,WAqBzB11D,EAAQ6wE,qBAAqB,CAC3Bx/S,KAAM,QACNwvR,WAAY,CACVxvR,KAAM,MACNm6U,YAAY,GAEdnoG,cAAe,CAEb4J,OAAQ,EAERroK,EAAG,EACHrqC,MAAM,EACN/Q,KAAM,GAINj3B,OAAQ,QACRkjW,QAAS,GAITC,UAAW,QAGXx4T,KAAM,EAGNE,IAAK,EAWLqpB,gBAAiB,gBAEjBiqK,YAAa,OAEbh8J,YAAa,EAGb0jB,QAAS,EAET15C,QAAS,GACTI,UAAW,CACT9X,SAAU,GACVD,WAAY,SACZtJ,MAAO,QAETk4U,aAAc,CACZl4U,MAAO,WAKbuiN,EAAQqxE,oBAAoB,CAC1BhgT,KAAM,QACNrF,OAAQ,SAAU+hQ,EAAYxuB,EAAS/nI,GAGrC,GAFA3qG,KAAKk7C,MAAMigM,YAEN+lB,EAAWh+P,IAAI,QAApB,CAIA,IAAIg4C,EAAQl7C,KAAKk7C,MACb65P,EAAiB7zC,EAAW1nB,SAAS,aACrCuvH,EAAoB7nG,EAAW1nB,SAAS,gBACxCn/M,EAAY6mO,EAAWh+P,IAAI,aAC3B65P,EAAoBzqB,EAAOwc,UAAUoS,EAAWh+P,IAAI,gBAAiBg+P,EAAWh+P,IAAI,sBACpF0yT,EAAS,IAAI9+E,EAAQoc,KAAK,CAC5BtnP,MAAOkrO,EAAQmf,aAAa,CAAC,EAAG8+C,EAAgB,CAC9Cp4Q,KAAMukO,EAAWh+P,IAAI,QACrBs/N,SAAUuyE,EAAe/5B,gBACxB,CACDguF,YAAY,IAEd1sH,GAAI,KAEFshD,EAAWg4B,EAAO5sD,kBAClBigG,EAAU/nG,EAAWh+P,IAAI,WACzBgmW,EAAY,IAAIpyH,EAAQoc,KAAK,CAC/BtnP,MAAOkrO,EAAQmf,aAAa,CAAC,EAAG8yG,EAAmB,CACjDpsU,KAAMssU,EACNzmI,SAAUumI,EAAkB/tF,eAC5Br8O,EAAGi/P,EAASn1P,OAASy4N,EAAWh+P,IAAI,WACpC65P,kBAAmB,OAClB,CACDisG,YAAY,IAEd1sH,GAAI,KAEFojC,EAAOxe,EAAWh+P,IAAI,QACtBimW,EAAUjoG,EAAWh+P,IAAI,WACzBs+I,EAAe0/G,EAAWh+P,IAAI,gBAAgB,GAClD0yT,EAAOzmK,QAAUuwH,IAASl+H,EAC1B0nN,EAAU/5M,QAAUg6M,IAAY3nN,EAE5Bk+H,GACFk2C,EAAOnyP,GAAG,SAAS,WACjBolO,EAAWnpB,EAAM,IAAMxe,EAAWh+P,IAAI,UACxC,IAGEimW,GACFD,EAAUzlS,GAAG,SAAS,WACpBolO,EAAWsgE,EAAS,IAAMjoG,EAAWh+P,IAAI,aAC3C,IAGF0yT,EAAOphB,UAAY00D,EAAU10D,UAAYhzJ,EAAe,CACtD0yF,cAAe,QACfwgE,eAAgBxzC,EAAWwzC,gBACzB,KACJx5P,EAAM36C,IAAIq1T,GACVqzC,GAAW/tT,EAAM36C,IAAI2oW,GAErB,IAAIE,EAAYluT,EAAM8tN,kBAClBqgG,EAAenoG,EAAW1D,qBAC9B6rG,EAAa7gU,MAAQ4gU,EAAU5gU,MAC/B6gU,EAAa5gU,OAAS2gU,EAAU3gU,OAChC,IAAIitS,EAAan4E,EAAc8rG,EAAc,CAC3C7gU,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,aACX4e,EAAWh+P,IAAI,YAEbm3B,IAEHA,EAAY6mO,EAAWh+P,IAAI,SAAWg+P,EAAWh+P,IAAI,SAEnC,WAAdm3B,IACFA,EAAY,UAII,UAAdA,EACFq7S,EAAW51T,GAAK41T,EAAWltS,MACJ,WAAdnO,IACTq7S,EAAW51T,GAAK41T,EAAWltS,MAAQ,IAIlCu0N,IACHA,EAAoBmE,EAAWh+P,IAAI,QAAUg+P,EAAWh+P,IAAI,UAElC,WAAtB65P,IACFA,EAAoB,UAGI,WAAtBA,EACF24E,EAAW/2S,GAAK+2S,EAAWjtS,OACI,WAAtBs0N,IACT24E,EAAW/2S,GAAK+2S,EAAWjtS,OAAS,GAGtCs0N,EAAoBA,GAAqB,OAG3C7hN,EAAMrkB,KAAK,WAAY,CAAC6+S,EAAW51T,EAAG41T,EAAW/2S,IACjD,IAAI2qU,EAAa,CACfjvU,UAAWA,EACX0iO,kBAAmBA,GAErB64D,EAAO/pI,SAASy9K,GAChBJ,EAAUr9K,SAASy9K,GAGnBF,EAAYluT,EAAM8tN,kBAClB,IAAIz9K,EAAUmqP,EAAW96C,OACrBhvR,EAAQs1P,EAAW1hB,aAAa,CAAC,QAAS,YAC9C5zO,EAAMme,KAAOm3O,EAAWh+P,IAAI,mBAC5B,IAAI+5B,EAAO,IAAI65M,EAAQuF,KAAK,CAC1B7mN,MAAO,CACL1V,EAAGspV,EAAUtpV,EAAIyrE,EAAQ,GACzB5sD,EAAGyqU,EAAUzqU,EAAI4sD,EAAQ,GACzB/iD,MAAO4gU,EAAU5gU,MAAQ+iD,EAAQ,GAAKA,EAAQ,GAC9C9iD,OAAQ2gU,EAAU3gU,OAAS8iD,EAAQ,GAAKA,EAAQ,GAChDx+D,EAAGm0O,EAAWh+P,IAAI,iBAEpB0I,MAAOA,EACPgjP,kBAAkB,EAClBz/F,QAAQ,IAEVj0G,EAAM36C,IAAI08B,EAxHV,CAyHF,G,uBC5NFzU,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,MAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,M,wBCZR,IAAI2qN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjB+gV,EAAiB/gV,EAAQ,OAoBzBghV,EAAer2H,EAAQ6wE,qBAAqB,CAC9Cx/S,KAAM,UACNwvR,WAAY,CACVxvR,KAAM,MACNm6U,YAAY,GAEd99C,cAAe,WACb2oE,EAAajoH,WAAWvhP,KAAM,gBAAiB+C,WAC/CuvO,EAAO56H,KAAK13G,KAAK+qC,OAAOhsB,SAAS,SAAU0qV,EAAYC,GACrD,IAAIC,EAAUJ,EAAermW,IAAIwmW,GACjCC,GAAWr3H,EAAOt0H,MAAMyrP,EAAYE,EAAQnzH,cAC9C,GACF,EACAA,cAAe,CACb9oM,MAAM,EACNqqC,EAAG,EACHqoK,OAAQ,EACRxuM,OAAQ,aACRvB,KAAM,QACNE,IAAK,MAGLqpB,gBAAiB,cACjBiqK,YAAa,OACb/7J,aAAc,EACdD,YAAa,EACb0jB,QAAS,EACT+yK,SAAU,GACVzsN,QAAS,EACT+3T,WAAW,EACX13T,UAAW,CACT2xL,YAAa,OACbjzM,MAAO,QAET8vN,SAAU,CACRxuM,UAAW,CACT2xL,YAAa,YAKjB0iD,QAAS,CACP74O,MAAM,MAIRjgB,EAAW+7U,EACfroW,EAAOD,QAAUusB,C,iCCvEjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjB0zQ,EAAc1zQ,EAAQ,MAEtB+gV,EAAiB/gV,EAAQ,OAEzBsuN,EAAUtuN,EAAQ,OAElByuN,EAAQzuN,EAAQ,OAEhBkpO,EAAalpO,EAAQ,OAErBqhV,EAAsBrhV,EAAQ,OAoB9BiF,EAAW0lN,EAAQqxE,oBAAoB,CACzChgT,KAAM,UACNrF,OAAQ,SAAU2qW,EAAcp3H,EAAS/nI,EAAK6oI,GAC5C,IAAIt4L,EAAQl7C,KAAKk7C,MAGjB,GAFAA,EAAMigM,YAED2uH,EAAa5mW,IAAI,QAAtB,CAIA,IAAIo7P,GAAYwrG,EAAa5mW,IAAI,YAC7B6mW,EAAcD,EAAa5mW,IAAI,YAAc,CAAC,EAC9C8mW,EAAWhqW,KAAKiqW,YAAcjqW,KAAKiqW,UAAY,CAAC,GAChDC,EAAe,GACnB53H,EAAO56H,KAAKqyP,GAAa,SAAUlnQ,EAAKp+F,GACtCylW,EAAajmW,KAAKQ,EACpB,IACA,IAAIitP,EAAW1xP,KAAKmqW,eAAiB,GAAID,GAAc3pW,IAAI6pW,GAAgBpzU,OAAOozU,GAAgBxtR,OAAO01J,EAAOuD,MAAMu0H,EAAgB,OAAO7tN,UAE7Iv8I,KAAKmqW,cAAgBD,EAgKrBL,EAAoB1hQ,OAAOjtD,EAAO4uT,EAAcn/P,GAGhDzvD,EAAM36C,IAAIspW,EAAoB1Z,eAAej1S,EAAM8tN,kBAAmB8gG,IAEtE5uT,EAAMq6N,WAAU,SAAU7vN,GACxB,IAAI2kT,EAAY3kT,EAAK4kT,QACjB9sH,EAAa93L,EAAK83L,WAEtB,GAAIA,GAAc6sH,EAAW,CAC3B,IAAIptU,EAAOi/P,EAAYlzB,gBAAgBqhG,EAAWnuE,EAAYquE,SAAS/sH,IACnE5rN,EAAU8zB,EAAK5zB,SAAS,GAAKopB,EAAMppB,SAAS,GAC5CD,EAAU6zB,EAAK5zB,SAAS,GAAKopB,EAAMppB,SAAS,GAAKwsO,EACjDksG,GAAe,EAEf34U,EAAUoL,EAAKwL,OAASkiE,EAAI23I,cAC9B9E,EAAWh3L,aAAe,MAC1BgkT,GAAe,GAGjB,IAAIC,EAAYD,GAAgB,EAAIvtU,EAAKwL,OAAS61N,EAAW,EAEzD1sO,EAAUqL,EAAKuL,MAAQ,EAAImiE,EAAI03I,YACjC7E,EAAWh3L,aAAe,CAAC,OAAQikT,GACnCjtH,EAAWnjN,UAAY,SACdzI,EAAUqL,EAAKuL,MAAQ,EAAI,IACpCg1M,EAAWh3L,aAAe,CAAC,EAAGikT,GAC9BjtH,EAAWnjN,UAAY,OAE3B,CACF,GAzMA,CAaA,SAAS+vU,EAAe1vH,EAAUC,GAChC,IAII57N,EAJA2qV,EAAcQ,EAAaxvH,GAC3BgwH,EAAUR,EAAavvH,GACvB8uH,EAAaM,EAAYL,GACzBiB,EAAe,IAAI1zH,EAAMwyH,EAAYK,EAAcA,EAAap3H,SAOpE,GAJIc,GAA+B,MAApBA,EAAQo3H,UAAoBp3H,EAAQk2H,cAAgBA,IACjED,EAAWn+T,MAAQkoM,EAAQo3H,UAGzBlB,IAAgBgB,EAAS,CAE3B,GAAIG,EAAkBnB,GACpB3qV,EAAU,CACRwyO,MAAOo5G,EACP/0D,QAAS+0D,EAAa5/T,OAAO6qQ,QAC7B8zD,YAAaA,OAEV,CACL,IAAIC,EAAUJ,EAAermW,IAAIwmW,GAEjC,IAAKC,EACH,OAGF5qV,EAAU,IAAI4qV,EAAQgB,EAAcj4H,EAAS/nI,EAC/C,CAEAq/P,EAASN,GAAe3qV,CAC1B,KAAO,CAGL,GAFAA,EAAUirV,EAASU,IAEd3rV,EACH,OAGFA,EAAQwyO,MAAQo5G,EAChB5rV,EAAQ2zN,QAAUA,EAClB3zN,EAAQ4rF,IAAMA,CAChB,CAEK++P,IAAegB,EAKfC,EAAaznW,IAAI,UAAW6b,EAAQ+rV,UAKzCC,EAAgBJ,EAAc5rV,EAAS2qV,GAEvCiB,EAAaK,cAAgB,SAAUC,EAAUt5U,GAC/C,IAAIoZ,EAAS/qC,KAAK+qC,OACdmgU,EAAYlrW,KAAKkrW,UACrBngU,EAAOogU,WAAapgU,EAAOogU,YAAc,CAAC,EAC1CpgU,EAAOogU,WAAWF,GAAYt5U,EAE9Bu5U,EAAUD,IAAaC,EAAUD,GAAUj7P,QAAQr+E,EACrD,EAEI5S,EAAQ5f,QACV4f,EAAQ5f,OAAOwrW,EAAcj4H,EAAS/nI,EAAK6oI,IAhB3Cz0N,EAAQ69D,QAAU79D,EAAQ69D,OAAO81J,EAAS/nI,GAL1C5rF,EAAQy8N,SAAWz8N,EAAQy8N,QAAQ9I,EAAS/nI,EAuBhD,CAEA,SAASogQ,EAAgBJ,EAAc5rV,EAAS2qV,GAC9C,IAAI0B,EAAiBT,EAAanxH,SAAS,aACvC6xH,EAAyBV,EAAanxH,SAAS,sBAY/C8xH,EAAQvsV,EAAQwsV,SAAWxsV,EAAQwsV,WAAaZ,EAAaznW,IAAI,QACjEsoW,EAASb,EAAaznW,IAAI,UAAY,CAAC,EAE3C,GAAqB,kBAAVooW,EAAoB,CAC7B,IAAI5lT,EAAO4lT,EACPhgU,EAAQkgU,EACZF,EAAQ,CAAC,EACTE,EAAS,CAAC,EACVF,EAAM5B,GAAehkT,EACrB8lT,EAAO9B,GAAep+T,CACxB,CAEA,IAAI4/T,EAAYP,EAAaO,UAAY,CAAC,EAC1C54H,EAAO56H,KAAK4zP,GAAO,SAAUG,EAASR,GACpC,IAAI/tS,EAAO45K,EAAQ0wE,WAAWikD,EAAS,CAAC,EAAG,CACzC3rV,GAAIw+O,EAAW,EACf3/N,GAAI2/N,EAAW,EACf91N,MAAO81N,EACP71N,OAAQ61N,IAEVphM,EAAK2uH,SAASu/K,EAAe5rH,gBAC7BtiL,EAAKsgL,WAAa6tH,EAAuB7rH,eAEzCtiL,EAAK2uH,SAAS,CACZlvJ,KAAM6uU,EAAOP,GACb5wU,UAAWgxU,EAAuBnoW,IAAI,aACtCwoW,iBAAkBL,EAAuBnoW,IAAI,oBAC7CiwT,YAAak4C,EAAuBnoW,IAAI,eACxCs/N,SAAU,OAEZ,IAAIwyH,EAAe8U,EAAatwH,SAAS,WAErCw7G,GAAgBA,EAAa9xV,IAAI,SACnCg6D,EAAKrmC,KAAK,UAAWy7M,EAAO5uH,OAAO,CACjC9+E,QAAS4mU,EAAOP,GAChB38T,UAAW0mT,EAAa9xV,IAAI,aAAa,IAAS,WAChD,OAAOsoW,EAAOP,EAChB,EACA3xC,gBAAiB,CACfplF,cAAe,UACfzvO,KAAMwmW,EACN3/T,MAAOkgU,EAAOP,GACdxvG,MAAO,CAAC,OAAQ,UAElB3pO,SAAUkjU,EAAa9xV,IAAI,YAAY,IAAS,UAC/C8xV,EAAajqT,SAGlB+rM,EAAQ8G,cAAc1gL,GAElB4sS,EAAa5mW,IAAI,eACnBg6D,EAAKotS,QAAUkB,EAAOP,GACtB/tS,EAAKuG,GAAG,aAAa,WAEnB,IAAI+5K,EAAa6tH,EAAuB7rH,eACpCmsH,EAAqD,aAA/B7B,EAAa5mW,IAAI,UAAwD,MAA7B4mW,EAAa5mW,IAAI,SAAmB,QAAU,OAAuC,MAA9B4mW,EAAa5mW,IAAI,UAAoB,SAAW,MAC7Kg6D,EAAK2uH,SAAS,CACZ22C,SAAU6oI,EAAuBnoW,IAAI,aAAes6O,EAAWzzN,MAAQyzN,EAAWnkN,QAAU,OAC5FopM,oBAAqB4oI,EAAuBnoW,IAAI,uBAChDsjD,aAAc6kT,EAAuBnoW,IAAI,iBAAmByoW,GAEhE,IAAGloS,GAAG,YAAY,WAChBvG,EAAK2uH,SAAS,CACZ22C,SAAU,KACVC,oBAAqB,MAEzB,KAGFvlK,EAAK8yC,QAAQ26P,EAAaznW,IAAI,cAAgB+nW,IAAa,UAC3D/vT,EAAM36C,IAAI28D,GACVA,EAAKuG,GAAG,QAAS6uK,EAAOv1N,KAAKgC,EAAQ62R,QAAS72R,EAAS2zN,EAAS/nI,EAAKsgQ,IACrEC,EAAUD,GAAY/tS,CACxB,GACF,CAiCF,EACAqkQ,WAAY,SAAUuoC,EAAcp3H,EAAS/nI,EAAK6oI,GAChDlB,EAAO56H,KAAK13G,KAAKiqW,WAAW,SAAUlrV,GACpCA,EAAQwiT,YAAcxiT,EAAQwiT,WAAWxiT,EAAQwyO,MAAO7e,EAAS/nI,EAAK6oI,EACxE,GACF,EAMA52J,OAAQ,SAAU81J,EAAS/nI,GACzB2nI,EAAO56H,KAAK13G,KAAKiqW,WAAW,SAAUlrV,GACpCA,EAAQ69D,QAAU79D,EAAQ69D,OAAO81J,EAAS/nI,EAC5C,IACA3qG,KAAKk7C,MAAMigM,WACb,EACAK,QAAS,SAAU9I,EAAS/nI,GAC1B2nI,EAAO56H,KAAK13G,KAAKiqW,WAAW,SAAUlrV,GACpCA,EAAQy8N,SAAWz8N,EAAQy8N,QAAQ9I,EAAS/nI,EAC9C,GACF,IAGF,SAASkgQ,EAAkBnB,GACzB,OAAqC,IAA9BA,EAAYryV,QAAQ,KAC7B,CAEAlW,EAAOD,QAAUusB,C,sBC9PjB,IAAIu8U,EAAW,CAAC,EAEhB,SAAS5wR,EAAS30E,EAAM02Q,GACtB6uF,EAASvlW,GAAQ02Q,CACnB,CAEA,SAASj4Q,EAAIuB,GACX,OAAOulW,EAASvlW,EAClB,CAEAvD,EAAQk4E,SAAWA,EACnBl4E,EAAQgC,IAAMA,C,wBC7Bd,IAAIovO,EAAS9pN,EAAQ,OAEjB+gV,EAAiB/gV,EAAQ,OAEzBgpU,EAAOhpU,EAAQ,OAoBfojV,EAAYpa,EAAKpxB,QAAQnxD,MAE7B,SAAS48F,EAAMt6G,EAAO7e,EAAS/nI,GAC7B3qG,KAAKuxP,MAAQA,EACbvxP,KAAK0yO,QAAUA,EACf1yO,KAAK2qG,IAAMA,EAMX3qG,KAAKihV,WAMLjhV,KAAK8rW,UACP,CAEAD,EAAMr1H,cAAgB,CACpB9oM,MAAM,EACNlpC,KAAM,CAAC,OAAQ,UAAW,QAAS,QAAS,OAAQ,SACpDkhD,KAAM,CAEJzoB,KAAM,iQAEN4J,QAAS,ubAET67R,MAAO,iNAEPE,MAAO,gMAEPmpC,KAAM,4KAENrpV,MAAO,0MAMT4oB,MAAOgnM,EAAOh+M,MAAMs3U,EAAUtgU,QAEhC,IAAI3iC,EAAQkjW,EAAMtkW,UAIlBoB,EAAMxJ,OAENwJ,EAAM44T,WAAa,SAAUopC,EAAcj4H,EAAS/nI,GAClD,IAAI8uJ,EACA6mE,EACA0rC,EACJt5H,EAAQe,cAAc,CACpBC,SAAU,UACT,SAAU2tF,GACX5nE,EAAY4nE,EAAW5nE,UACvB6mE,EAAYe,EAAWX,YAAYJ,WAAa,SAChD0rC,GAAa3qC,EAAW9pO,MAAMv1F,MAChC,IACAhC,KAAKihV,WAAaxnF,EAClBz5P,KAAK8rW,WAAaxrC,EAClBhuF,EAAO56H,KAAKizP,EAAaznW,IAAI,QAAQ,IAAO,SAAUsB,GACpDmmW,EAAaK,cAAcxmW,GAAgB,SAATA,EAAgC,aAAd87T,EAAoC,UAAT97T,EAAmBwnW,EAAYxnW,IAASi1P,GAAa,WAAa,SACnJ,GACF,EAEA9wP,EAAM4iW,SAAW,WACf,IAAIh6G,EAAQvxP,KAAKuxP,MACb06G,EAAiB16G,EAAMruP,IAAI,QAAQ,GACnCooW,EAAQ,CAAC,EAMb,OALAh5H,EAAO56H,KAAK65I,EAAMruP,IAAI,QAAQ,IAAO,SAAUsB,GACzCynW,EAAeznW,KACjB8mW,EAAM9mW,GAAQynW,EAAeznW,GAEjC,IACO8mW,CACT,EAEA3iW,EAAMitS,QAAU,SAAUljE,EAAS/nI,EAAKnmG,GACtC,IAAIi1P,EAAYz5P,KAAKihV,WACjB3gB,EAAYtgU,KAAK8rW,WAER,UAATtnW,GAEFmmG,EAAIi9J,eAAe,CACjBpjQ,KAAM,iBACNk6T,UAAW,KAEb/zN,EAAIi9J,eAAe,CACjBpjQ,KAAM,QACNm2F,QAAS,QAETpD,MAAO,MAGToT,EAAIi9J,eAAe,CACjBpjQ,KAAM,mBACNX,IAAK,QACL68T,YAAa,CACXjnE,UAAoB,SAATj1P,EAAkBi1P,EAAYA,IAAcj1P,GAAeA,EACtE87T,UAAoB,SAAT97T,EAAgC,aAAd87T,EAA2B,SAAW,WAAaA,IAIxF,EAEAipC,EAAenwR,SAAS,QAASyyR,GACjC,IAAIp+U,EAAWo+U,EACf1qW,EAAOD,QAAUusB,C,iCCrIjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBs8R,EAAYt8R,EAAQ,OAEpBgpU,EAAOhpU,EAAQ,OAEf+gV,EAAiB/gV,EAAQ,OAoBzB0jV,EAAe1a,EAAKpxB,QAAQ+rC,SAC5BC,EAAgB,IAAIvlW,MAAM,IAAIiE,KAAK,KACnCuhW,EAAe,KAUnB,SAASC,EAAY55H,GACnB,IAAI65H,EAA4B,CAAC,EAC7BC,EAAc,GACdviW,EAAO,GA8BX,OA7BAyoO,EAAQw/G,eAAc,SAAUt+G,GAC9B,IAAIf,EAAWe,EAAYS,iBAE3B,IAAIxB,GAA+B,gBAAlBA,EAASruO,MAA4C,UAAlBquO,EAASruO,KAuB3DgoW,EAAYvoW,KAAK2vO,OAvB6D,CAC9E,IAAImE,EAAWlF,EAASmF,cAExB,GAAsB,aAAlBD,EAASvzO,KAAqB,CAChC,IAAIX,EAAMk0O,EAAS9lG,IAAM,IAAM8lG,EAAS91O,MAEnCsqW,EAA0B1oW,KAC7B0oW,EAA0B1oW,GAAO,CAC/B6lR,aAAc3xC,EACd7iM,UAAW29L,EAASiR,aAAa/L,GACjC/rM,OAAQ,IAEV/hC,EAAKhG,KAAK,CACR40R,QAAS9gD,EAAS9lG,IAClBl2F,UAAWg8L,EAAS91O,SAIxBsqW,EAA0B1oW,GAAKmoC,OAAO/nC,KAAK2vO,EAC7C,MACE44H,EAAYvoW,KAAK2vO,EAErB,CAGF,IACO,CACL24H,0BAA2BA,EAC3BnuM,MAAOouM,EACPviW,KAAMA,EAEV,CASA,SAASwiW,EAA+BzgU,GACtC,IAAI0gU,EAAS,GA8Bb,OA7BAp6H,EAAO56H,KAAK1rE,GAAQ,SAAUkP,EAAOr3C,GACnC,IAAI6lR,EAAexuO,EAAMwuO,aACrBx0O,EAAYgG,EAAMhG,UAClBy3O,EAAez3O,EAAU+8F,IACzB06N,EAAU,CAAC,KAAK1rW,OAAOqxO,EAAO5oN,IAAIwxB,EAAMlP,QAAQ,SAAUA,GAC5D,OAAOA,EAAOvnC,IAChB,KACIy3L,EAAU,CAACwtF,EAAan4B,MAAMikE,iBAClCljF,EAAO56H,KAAKx8D,EAAMlP,QAAQ,SAAUA,GAClC,IAAImiQ,EAAUniQ,EAAOivN,aACrB/+D,EAAQj4L,KAAK+nC,EAAOivN,aAAa0C,SAASwwC,EAAQziD,aAAaihC,IAAe,SAAU39Q,GACtF,OAAOA,CACT,IACF,IAIA,IAFA,IAAIi3C,EAAQ,CAAC0mT,EAAQ7hW,KAAKuhW,IAEjBroW,EAAI,EAAGA,EAAIk4L,EAAQ,GAAGl6L,OAAQgC,IAAK,CAG1C,IAFA,IAAIkqF,EAAQ,GAEHjjF,EAAI,EAAGA,EAAIixL,EAAQl6L,OAAQiJ,IAClCijF,EAAMjqF,KAAKi4L,EAAQjxL,GAAGjH,IAGxBiiD,EAAMhiD,KAAKiqF,EAAMpjF,KAAKuhW,GACxB,CAEAK,EAAOzoW,KAAKgiD,EAAMn7C,KAAK,MACzB,IACO4hW,EAAO5hW,KAAK,OAASshW,EAAgB,OAC9C,CASA,SAASQ,EAAoB5gU,GAC3B,OAAOsmM,EAAO5oN,IAAIsiB,GAAQ,SAAUA,GAClC,IAAI/sB,EAAO+sB,EAAOivN,aACdh1M,EAAQ,CAACja,EAAOvnC,MAChBm4I,EAAO,GAYX,OAXA39H,EAAKy4F,KAAKz4F,EAAK27I,YAAY,WAKzB,IAJA,IAAIiyM,EAAS9pW,UAAUf,OACnB6xO,EAAY9wO,UAAU8pW,EAAS,GAC/BpoW,EAAOwa,EAAK60N,QAAQD,GAEf7vO,EAAI,EAAGA,EAAI6oW,EAAS,EAAG7oW,IAC9B44I,EAAK54I,GAAKjB,UAAUiB,GAGtBiiD,EAAMhiD,MAAMQ,EAAOA,EAAO4nW,EAAe,IAAMzvN,EAAK9xI,KAAKuhW,GAC3D,IACOpmT,EAAMn7C,KAAK,KACpB,IAAGA,KAAK,OAASshW,EAAgB,OACnC,CAQA,SAASU,EAAoBp6H,GAC3B,IAAIhvO,EAAS4oW,EAAY55H,GACzB,MAAO,CACL5wO,MAAOwwO,EAAOtiN,OAAO,CAACy8U,EAA+B/oW,EAAO6oW,2BAA4BK,EAAoBlpW,EAAO06J,SAAS,SAAUlqF,GACpI,OAAOA,EAAIt4D,QAAQ,YAAa,GAClC,IAAG9Q,KAAK,OAASshW,EAAgB,QACjCniW,KAAMvG,EAAOuG,KAEjB,CAEA,SAASogL,EAAKn2G,GACZ,OAAOA,EAAIt4D,QAAQ,SAAU,IAAIA,QAAQ,SAAU,GACrD,CAMA,SAASmxV,EAAYC,GAEnB,IAAIC,EAAYD,EAAM7qW,MAAM,EAAG6qW,EAAM31V,QAAQ,OAE7C,GAAI41V,EAAU51V,QAAQg1V,IAAiB,EACrC,OAAO,CAEX,CAEA,IAAIa,EAAiB,IAAIj3R,OAAO,IAAMo2R,EAAe,KAAM,KAM3D,SAASc,EAAiBC,GAWxB,IAVA,IAAIC,EAAWD,EAAI9pW,MAAM,QACrBqpW,EAAUtiL,EAAKgjL,EAASj1U,SAAS90B,MAAM4pW,GACvC7oG,EAAa,GACbr4N,EAASsmM,EAAO5oN,IAAIijV,GAAS,SAAUpkS,GACzC,MAAO,CACL9jE,KAAM8jE,EACNtpD,KAAM,GAEV,IAESjb,EAAI,EAAGA,EAAIqpW,EAASrrW,OAAQgC,IAAK,CACxC,IAAIkqF,EAAQm8F,EAAKgjL,EAASrpW,IAAIV,MAAM4pW,GACpC7oG,EAAWpgQ,KAAKiqF,EAAM91D,SAEtB,IAAK,IAAIntB,EAAI,EAAGA,EAAIijF,EAAMlsF,OAAQiJ,IAChC+gC,EAAO/gC,KAAO+gC,EAAO/gC,GAAGgU,KAAKjb,GAAKkqF,EAAMjjF,GAE5C,CAEA,MAAO,CACL+gC,OAAQA,EACRq4N,WAAYA,EAEhB,CAQA,SAASipG,EAAkBp5R,GAKzB,IAJA,IAAIjuB,EAAQiuB,EAAI5wE,MAAM,QAClB+xP,EAAahrE,EAAKpkI,EAAM7tB,SACxBnZ,EAAO,GAEFjb,EAAI,EAAGA,EAAIiiD,EAAMjkD,OAAQgC,IAAK,CAGrC,IAAIwnC,EAAO6+I,EAAKpkI,EAAMjiD,IAEtB,GAAKwnC,EAAL,CAIA,IAEI1pC,EAFAosF,EAAQ1iD,EAAKloC,MAAM4pW,GACnBzoW,EAAO,GAEP8oW,GAAU,EAEVx+V,MAAMm/E,EAAM,KAEdq/Q,GAAU,EACV9oW,EAAOypF,EAAM,GACbA,EAAQA,EAAM/rF,MAAM,GACpB8c,EAAKjb,GAAK,CACRS,KAAMA,EACN3C,MAAO,IAETA,EAAQmd,EAAKjb,GAAGlC,OAEhBA,EAAQmd,EAAKjb,GAAK,GAGpB,IAAK,IAAIiH,EAAI,EAAGA,EAAIijF,EAAMlsF,OAAQiJ,IAChCnJ,EAAMmC,MAAMiqF,EAAMjjF,IAGC,IAAjBnJ,EAAME,SACRurW,EAAUtuV,EAAKjb,GAAGlC,MAAQA,EAAM,GAAKmd,EAAKjb,GAAKlC,EAAM,GA1BvD,CA4BF,CAEA,MAAO,CACL2C,KAAM4wP,EACNp2O,KAAMA,EAEV,CASA,SAASuuV,EAAct5R,EAAKu5R,GAC1B,IAAIC,EAASx5R,EAAI5wE,MAAM,IAAI2yE,OAAO,MAAQm2R,EAAgB,MAAO,MAC7DnyE,EAAY,CACdjuP,OAAQ,IAoBV,OAlBAsmM,EAAO56H,KAAKg2P,GAAQ,SAAUV,EAAO7lQ,GACnC,GAAI4lQ,EAAYC,GAAQ,CACtB,IAAItpW,EAASypW,EAAiBH,GAC1BW,EAAYF,EAActmQ,GAC1BymQ,EAAUD,EAAU90E,QAAU,OAE9B80E,IACF1zE,EAAU2zE,GAAW3zE,EAAU2zE,IAAY,GAC3C3zE,EAAU2zE,GAASD,EAAU5xT,WAAa,CACxC98B,KAAMvb,EAAO2gQ,YAEf41B,EAAUjuP,OAASiuP,EAAUjuP,OAAO/qC,OAAOyC,EAAOsoC,QAEtD,KAAO,CACDtoC,EAAS4pW,EAAkBN,GAC/B/yE,EAAUjuP,OAAO/nC,KAAKP,EACxB,CACF,IACOu2R,CACT,CAQA,SAASpmR,EAAS09O,GAChBvxP,KAAK6tW,KAAO,KACZ7tW,KAAKuxP,MAAQA,CACf,CA8HA,SAASu8G,EAAmB3gF,EAASoI,GACnC,OAAOjjD,EAAO5oN,IAAIyjQ,GAAS,SAAU4gF,EAAQ5mQ,GAC3C,IAAIxyB,EAAW4gN,GAAgBA,EAAapuL,GAE5C,GAAImrI,EAAOhxO,SAASqzE,KAAc29J,EAAOxrO,QAAQ6tE,GAAW,CAC1D,IAAIq5R,EAAiB17H,EAAOhxO,SAASysW,KAAYz7H,EAAOxrO,QAAQinW,GAE3DC,IACHD,EAAS,CACPjsW,MAAOisW,IAKX,IAAIE,EAAoC,MAAjBt5R,EAASlwE,MAA+B,MAAfspW,EAAOtpW,KAIvD,OAFAspW,EAASz7H,EAAO94I,SAASu0Q,EAAQp5R,GACjCs5R,UAA2BF,EAAOtpW,KAC3BspW,CACT,CACE,OAAOA,CAEX,GACF,CAnJAl6V,EAAS2iO,cAAgB,CACvB9oM,MAAM,EACNwgU,UAAU,EACVC,gBAAiB,KACjBC,gBAAiB,KACjB1oT,KAAM,8GACNpa,MAAOgnM,EAAOh+M,MAAM43U,EAAa5gU,OACjCkmT,KAAMl/G,EAAOh+M,MAAM43U,EAAa1a,MAChC53R,gBAAiB,OACjB6E,UAAW,OACX4vS,cAAe,OACfC,oBAAqB,OACrBC,YAAa,UACbC,gBAAiB,QAGnB36V,EAAStM,UAAUquS,QAAU,SAAUljE,EAAS/nI,GAC9C,IAAI7/D,EAAY6/D,EAAI8jQ,SAChBl9G,EAAQvxP,KAAKuxP,MAEbvxP,KAAK6tW,MACP/iU,EAAU5mB,YAAYlkB,KAAK6tW,MAG7B,IAAI31U,EAAO/0B,SAASE,cAAc,OAClC60B,EAAKtsB,MAAM8iW,QAAU,2DACrBx2U,EAAKtsB,MAAMguD,gBAAkB23L,EAAMruP,IAAI,oBAAsB,OAE7D,IAAIqlE,EAASplE,SAASE,cAAc,MAChCmuV,EAAOjgG,EAAMruP,IAAI,SAAW,GAChCqlE,EAAO6yB,UAAYo2P,EAAK,IAAMjgG,EAAMruP,IAAI,SACxCqlE,EAAO38D,MAAM8iW,QAAU,qBACvBnmS,EAAO38D,MAAMglB,MAAQ2gO,EAAMruP,IAAI,aAC/B,IAAIyrW,EAAWxrW,SAASE,cAAc,OAClCurW,EAAWzrW,SAASE,cAAc,YACtCsrW,EAAS/iW,MAAM8iW,QAAU,0CACzB,IAAIP,EAAkB58G,EAAMruP,IAAI,mBAC5BkrW,EAAkB78G,EAAMruP,IAAI,mBAC5BQ,EAASopW,EAAoBp6H,GAEjC,GAA+B,oBAApBy7H,EAAgC,CACzC,IAAIU,EAAYV,EAAgBxjQ,EAAImkQ,aAEX,kBAAdD,EACTF,EAASvzQ,UAAYyzQ,EACZv8H,EAAOy8H,MAAMF,IACtBF,EAAS1qV,YAAY4qV,EAEzB,MAEEF,EAAS1qV,YAAY2qV,GACrBA,EAASV,SAAW38G,EAAMruP,IAAI,YAC9B0rW,EAAShjW,MAAM8iW,QAAU,kFACzBE,EAAShjW,MAAMglB,MAAQ2gO,EAAMruP,IAAI,aACjC0rW,EAAShjW,MAAMi4N,YAAc0tB,EAAMruP,IAAI,uBACvC0rW,EAAShjW,MAAMguD,gBAAkB23L,EAAMruP,IAAI,iBAC3C0rW,EAAS9sW,MAAQ4B,EAAO5B,MAG1B,IAAI2rW,EAAgB/pW,EAAOuG,KACvB+kW,EAAkB7rW,SAASE,cAAc,OAC7C2rW,EAAgBpjW,MAAM8iW,QAAU,6CAChC,IAAIO,EAAc,4GACdC,EAAc/rW,SAASE,cAAc,OACrC8rW,EAAgBhsW,SAASE,cAAc,OAC3C4rW,GAAe,qBAAuB19G,EAAMruP,IAAI,eAChD+rW,GAAe,UAAY19G,EAAMruP,IAAI,mBACrC,IAAIkD,EAAOpG,KAEX,SAASkM,IACP4+B,EAAU5mB,YAAYgU,GACtB9xB,EAAKynW,KAAO,IACd,CAEA/oD,EAAU/gS,iBAAiBmrV,EAAa,QAAShjW,GACjD44S,EAAU/gS,iBAAiBorV,EAAe,SAAS,WACjD,IAAIl1E,EAEJ,IAEIA,EAD6B,oBAApBm0E,EACGA,EAAgBO,EAAUhkQ,EAAImkQ,aAE9BtB,EAAcoB,EAAS9sW,MAAO2rW,EAE9C,CAAE,MAAOxnW,GAEP,MADAiG,IACM,IAAIyP,MAAM,0BAA4B1V,EAC9C,CAEIg0R,GACFtvL,EAAIi9J,eAAe,CACjBpjQ,KAAM,iBACNy1R,UAAWA,IAIf/tR,GACF,IACAgjW,EAAY9zQ,UAAYo2P,EAAK,GAC7B2d,EAAc/zQ,UAAYo2P,EAAK,GAC/B2d,EAAcvjW,MAAM8iW,QAAUO,EAC9BC,EAAYtjW,MAAM8iW,QAAUO,GAC3B19G,EAAMruP,IAAI,aAAe8rW,EAAgB/qV,YAAYkrV,GACtDH,EAAgB/qV,YAAYirV,GAC5Bh3U,EAAKjU,YAAYskD,GACjBrwC,EAAKjU,YAAY0qV,GACjBz2U,EAAKjU,YAAY+qV,GACjBL,EAAS/iW,MAAM68B,OAASqC,EAAUva,aAAe,GAAK,KACtDua,EAAU7mB,YAAYiU,GACtBl4B,KAAK6tW,KAAO31U,CACd,EAEArkB,EAAStM,UAAUq1E,OAAS,SAAU81J,EAAS/nI,GAC7C3qG,KAAK6tW,MAAQljQ,EAAI8jQ,SAASvqV,YAAYlkB,KAAK6tW,KAC7C,EAEAh6V,EAAStM,UAAUi0O,QAAU,SAAU9I,EAAS/nI,GAC9C3qG,KAAK48E,OAAO81J,EAAS/nI,EACvB,EA+BA4+P,EAAenwR,SAAS,WAAYvlE,GACpCs/N,EAAQI,eAAe,CACrB/uO,KAAM,iBACN6e,MAAO,kBACP2T,OAAQ,qBACP,SAAUw8M,EAASd,GACpB,IAAI08H,EAAmB,GACvB98H,EAAO56H,KAAK87H,EAAQymD,UAAUjuP,QAAQ,SAAU2kP,GAC9C,IAAI/8C,EAAclB,EAAQuhH,gBAAgBtjE,EAAUlsR,MAAM,GAE1D,GAAKmvO,EAOE,CACL,IAAI2hD,EAAe3hD,EAAY1wO,IAAI,QACnCksW,EAAiBnrW,KAAK,CACpBQ,KAAMksR,EAAUlsR,KAChBwa,KAAM6uV,EAAmBn9E,EAAU1xQ,KAAMs2Q,IAE7C,MAVE65E,EAAiBnrW,KAAKquO,EAAO5uH,OAAO,CAElCl/G,KAAM,WACLmsR,GAQP,IACAj+C,EAAQowB,YAAYxwB,EAAO94I,SAAS,CAClCxtD,OAAQojU,GACP57H,EAAQymD,WACb,IACA,IAAIxsQ,EAAW5Z,EACf1S,EAAOD,QAAUusB,C,iCC1ejB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBu0S,EAAkBv0S,EAAQ,OAE1By6S,EAAqBz6S,EAAQ,OAE7B6mV,EAAU7mV,EAAQ,OAElBmhT,EAAanhT,EAAQ,OAErBgpU,EAAOhpU,EAAQ,OAEf+gV,EAAiB/gV,EAAQ,OAE7BA,EAAQ,MAqBR,IAAI8mV,EAAe9d,EAAKpxB,QAAQmvC,SAC5B73P,EAAO46H,EAAO56H,KAEd83P,EAAoB,4BAExB,SAASC,EAASl+G,EAAO7e,EAAS/nI,IAK/B3qG,KAAKi9T,iBAAmB,IAAIF,EAAgBpyN,EAAIoqJ,UAAUtxL,GAAG,QAAS6uK,EAAOv1N,KAAK/c,KAAKk9T,SAAUl9T,OAAOkvL,QAMzGlvL,KAAK0vW,aACP,CAEAD,EAASj5H,cAAgB,CACvB9oM,MAAM,EACN0/R,WAAY,SAEZ1nR,KAAM,CACJ03B,KAAM,wDACNnS,KAAM,6DAGR3/B,MAAOgnM,EAAOh+M,MAAMg7U,EAAahkU,OACjC+yR,WAAY,CACVx2P,YAAa,EACbj3C,MAAO,oBAGX,IAAIjoB,EAAQ8mW,EAASloW,UAErBoB,EAAMxJ,OAAS,SAAUwrW,EAAcj4H,EAAS/nI,EAAK6oI,GACnDxzO,KAAKuxP,MAAQo5G,EACb3qW,KAAK0yO,QAAUA,EACf1yO,KAAK2qG,IAAMA,EACXglQ,EAAoBhF,EAAcj4H,EAAS1yO,KAAMwzO,EAAS7oI,GAC1DilQ,EAAoBjF,EAAcj4H,EACpC,EAEA/pO,EAAMitS,QAAU,SAAUljE,EAAS/nI,EAAKnmG,GACtCu1F,EAASv1F,GAAMnE,KAAKL,KACtB,EAEA2I,EAAMi0E,OAAS,SAAU81J,EAAS/nI,GAChC3qG,KAAKi9T,iBAAiB9tI,SACxB,EAEAxmL,EAAM6yO,QAAU,SAAU9I,EAAS/nI,GACjC3qG,KAAKi9T,iBAAiBzhF,SACxB,EAMA,IAAIzhJ,EAAW,CACb3c,KAAM,WACJ,IAAIyyR,GAAc7vW,KAAK0vW,cACvB1vW,KAAK2qG,IAAIi9J,eAAe,CACtBpjQ,KAAM,mBACNX,IAAK,iBACLisW,qBAAsBD,GAE1B,EACA5kS,KAAM,WACJjrE,KAAK44U,oBAAoBy2B,EAAQ52U,IAAIz4B,KAAK0yO,SAC5C,GAyFF,SAASq9H,EAAoBhlU,GAC3B,IAAI+kH,EAAU,CAAC,EAOf,OALAwiF,EAAO56H,KAAK,CAAC,aAAc,eAAe,SAAUjzG,GAClDqrJ,EAAQrrJ,GAAQsmC,EAAOtmC,GACN,MAAjBqrJ,EAAQrrJ,KAAkBqrJ,EAAQrrJ,GAAQ,SACvB,IAAlBqrJ,EAAQrrJ,IAAqC,SAAlBqrJ,EAAQrrJ,MAAsBqrJ,EAAQrrJ,GAAQ,GAC5E,IACOqrJ,CACT,CAEA,SAAS8/M,EAAoBjF,EAAcj4H,GACzCi4H,EAAaK,cAAc,OAAQqE,EAAQ9mV,MAAMmqN,GAAW,EAAI,WAAa,SAC/E,CAEA,SAASi9H,EAAoBhF,EAAcj4H,EAAS+B,EAAMjB,EAAS7oI,GACjE,IAAIqlQ,EAAav7H,EAAKi7H,cAElBl8H,GAA4B,qBAAjBA,EAAQhvO,OACrBwrW,EAA6B,mBAAhBx8H,EAAQ3vO,KAA2B2vO,EAAQs8H,sBAG1Dr7H,EAAKi7H,cAAgBM,EACrBrF,EAAaK,cAAc,OAAQgF,EAAa,WAAa,UAC7D,IAAIvuC,EAAqB,IAAIwB,EAAmB8sC,EAAoBpF,EAAa5/T,QAAS2nM,EAAS,CACjG10E,QAAS,CAAC,UAGZy2E,EAAKwoF,iBAAiBY,UAAU4D,EAAmBI,cAAcl3N,GAAK,SAAUw/L,GAC9E,OAAOA,EAAWq/C,gBAAkBr/C,EAAWs/C,cAAgB,SAAWt/C,EAAWq/C,eAAiBr/C,EAAWs/C,cAAgB,QAAU,MAC7I,KAAIrrB,cAAY4xC,GAAa,CAC3Bv2G,UAAW,OACX4kE,WAAYssC,EAAanxH,SAAS,cAAcgG,gBAEpD,CArHA72O,EAAMu0T,SAAW,SAAU3lO,EAAOsL,GAChC,GAAKA,EAAIi8N,OAAUvnO,EAAMv1F,OAAzB,CAIA,IAAI44U,EAAW,CAAC,EACZloG,EAAU1yO,KAAK0yO,QAEnB1yO,KAAKi9T,iBAAiBsB,aAAa,IAGnC,IAAIkD,EAAqB,IAAIwB,EAAmB8sC,EAAoB/vW,KAAKuxP,MAAMxmN,QAAS2nM,EAAS,CAC/F10E,QAAS,CAAC,UAEZyjK,EAAmBumB,kBAAkBzwP,EAAOm7I,GAAS,SAAUliN,EAAMy3T,EAAYp1G,GAC/E,GAAsB,gBAAlBA,EAASruO,KAAb,CAIA,IAAIi1P,EAAYjpO,EAAKipO,UAEH,SAAdA,GACFw2G,EAAS,IAAKp9H,EAAUo1G,EAAW,IACnCgoB,EAAS,IAAKp9H,EAAUo1G,EAAW,KAEnCgoB,EAAS,CACPvtC,MAAO,IACPE,MAAO,KACPnpE,GAAY5mB,EAAUo1G,EAX1B,CAaF,IACAonB,EAAQprW,KAAKyuO,EAASkoG,GAEtB56U,KAAK44U,oBAAoBgC,EA9BzB,CAgCA,SAASq1B,EAASx5G,EAAS5jB,EAAU+yF,GACnC,IAAIx6R,EAAOynM,EAASs+B,QAAQ1a,GACxB0qB,EAAY/1O,EAAKmmN,MACjBu4E,EAAgBomC,EAAaz5G,EAAS0qB,EAAWzuC,GAEjD64F,EAAazB,EAAc0G,4BAA4BrvD,GAAWirD,gBAEvC,MAA3Bb,EAAW2C,cAAmD,MAA3B3C,EAAW4C,eAChDvI,EAAS+D,EAAW,EAAG/D,EAAOzjU,QAASipC,EAAK/U,MAAM60N,YAAa,EAAGqgF,EAAW2C,aAAc3C,EAAW4C,eAGxGrE,IAAkB8Q,EAAS9Q,EAActgU,IAAM,CAC7C2oU,WAAYrI,EAActgU,GAC1BukU,WAAYnI,EAAO,GACnBryP,SAAUqyP,EAAO,IAErB,CAEA,SAASsqC,EAAaz5G,EAAS0qB,EAAWzuC,GACxC,IAAIvqN,EAQJ,OAPAuqN,EAAQe,cAAc,CACpBC,SAAU,WACVC,QAAS,WACR,SAAUw8H,GACX,IAAI9rW,EAAM8rW,EAAQxlC,aAAal0E,EAAS0qB,EAAUuzB,gBAClDrwS,IAAQ8jB,EAAQgoV,EAClB,IACOhoV,CACT,CACF,EAMAxf,EAAMiwU,oBAAsB,SAAUgC,GACpC,IAAIvtK,EAAQ,GAEZ31D,EAAKkjO,GAAU,SAAUzrB,EAAWgjB,GAClC9kK,EAAMppK,KAAKquO,EAAOh+M,MAAM66R,GAC1B,IACA9hJ,EAAMrrK,QAAUhC,KAAK2qG,IAAIi9J,eAAe,CACtCpjQ,KAAM,WACN45D,KAAMp+D,KAAK6N,IACXw/J,MAAOA,GAEX,EAsCAk8L,EAAenwR,SAAS,WAAYq2R,GAGpCt8H,EAAQ6Z,sBAAqB,SAAUjiN,GACrC,GAAKA,EAAL,CAIA,IAAIqlU,EAAerlU,EAAOwkU,WAAaxkU,EAAOwkU,SAAW,IAEpDj9H,EAAOxrO,QAAQspW,KAClBrlU,EAAOwkU,SAAWa,EAAe,CAACA,IAGpC,IAAIC,EAAatlU,EAAOq1R,QAExB,GAAIiwC,IAEE/9H,EAAOxrO,QAAQupW,KACjBA,EAAaA,EAAW,IAGtBA,GAAcA,EAAWtxV,SAAS,CACpC,IAAIuxV,EAAcD,EAAWtxV,QAAQwwV,SAGrCgB,EAAW,QAASD,GACpBC,EAAW,QAASD,EACtB,CAtBF,CAyBA,SAASC,EAAWl6T,EAAUi6T,GAC5B,GAAKA,EAAL,CAKA,IAAIE,EAAkBn6T,EAAW,QAC7Bo6T,EAAmBH,EAAYE,GAEX,MAApBC,GAAiD,QAArBA,GAA+Bn+H,EAAOxrO,QAAQ2pW,KAC5EA,GAAwC,IAArBA,GAAmD,SAArBA,EAA8B,GAAK,CAACA,IAGvFC,EAAiBr6T,GAAU,SAAUs6T,EAAS50T,GAC5C,GAAwB,MAApB00T,GAAiD,QAArBA,IAA+E,IAAjDn+H,EAAOj7N,QAAQo5V,EAAkB10T,GAA/F,CAIA,IAAI4iT,EAAS,CACXn6V,KAAM,SACNosW,cAAc,EAEdxjC,WAAYkjC,EAAYljC,YAAc,SAEtC5jU,GAAIgmW,EAAoBn5T,EAAW0F,GAIrC4iT,EAAO6R,GAAmBz0T,EAC1Bq0T,EAAansW,KAAK06V,EAblB,CAcF,GA3BA,CA4BF,CAEA,SAAS+R,EAAiBh9H,EAAU/6J,GAClC,IAAIwrB,EAAOp5D,EAAO2oM,GAEbpB,EAAOxrO,QAAQq9F,KAClBA,EAAOA,EAAO,CAACA,GAAQ,IAGzBuT,EAAKvT,EAAMxrB,EACb,CACF,IACA,IAAIlrD,EAAWgiV,EACftuW,EAAOD,QAAUusB,C,gCCpTjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBgpU,EAAOhpU,EAAQ,OAEf+gV,EAAiB/gV,EAAQ,OAoBzBqoV,EAAgBrf,EAAKpxB,QAAQ0wC,UAC7BC,EAAsB,yBAE1B,SAASC,EAAUz/G,GACjBvxP,KAAKuxP,MAAQA,CACf,CAEAy/G,EAAUx6H,cAAgB,CACxB9oM,MAAM,EACNlpC,KAAM,GAENkhD,KAAM,CAEJla,KAAM,+DACND,IAAK,kFACLzvB,MAAO,oYAMTwvB,MAAOgnM,EAAOh+M,MAAMu8U,EAAcvlU,OAClCP,OAAQ,CAAC,EACT2zM,YAAa,CAAC,GAEhB,IAAI/1O,EAAQqoW,EAAUzpW,UAEtBoB,EAAM4iW,SAAW,WACf,IAAIh6G,EAAQvxP,KAAKuxP,MACb06G,EAAiB16G,EAAMruP,IAAI,QAC3BooW,EAAQ,CAAC,EAMb,OALAh5H,EAAO56H,KAAK65I,EAAMruP,IAAI,SAAS,SAAUsB,GACnCynW,EAAeznW,KACjB8mW,EAAM9mW,GAAQynW,EAAeznW,GAEjC,IACO8mW,CACT,EAEA,IAAI2F,EAAqB,CACvB,KAAQ,SAAU79H,EAAYW,EAAUH,EAAa2d,GACnD,GAAmB,QAAfne,EACF,OAAOd,EAAOt0H,MAAM,CAClBx0G,GAAIuqO,EACJvvO,KAAM,OAENya,KAAM20N,EAAY1wO,IAAI,QACtB4Y,MAAO83N,EAAY1wO,IAAI,SACvBo3V,UAAW1mH,EAAY1wO,IAAI,aAC3Bm3V,SAAUzmH,EAAY1wO,IAAI,aACzBquP,EAAMruP,IAAI,gBAAkB,CAAC,GAAG,EAEvC,EACA,IAAO,SAAUkwO,EAAYW,EAAUH,EAAa2d,GAClD,GAAmB,SAAfne,EACF,OAAOd,EAAOt0H,MAAM,CAClBx0G,GAAIuqO,EACJvvO,KAAM,MAENya,KAAM20N,EAAY1wO,IAAI,QACtB4Y,MAAO83N,EAAY1wO,IAAI,SACvBo3V,UAAW1mH,EAAY1wO,IAAI,aAC3Bm3V,SAAUzmH,EAAY1wO,IAAI,aACzBquP,EAAMruP,IAAI,eAAiB,CAAC,GAAG,EAEtC,EACA,MAAS,SAAUkwO,EAAYW,EAAUH,EAAa2d,GACpD,IAAI2/G,EAAUt9H,EAAY1wO,IAAI,WAAa6tW,EAE3C,GAAmB,SAAf39H,GAAwC,QAAfA,EAE3B,OADAme,EAAMy5G,cAAc,QAASkG,EAAU,SAAW,YAC3C5+H,EAAOt0H,MAAM,CAClBx0G,GAAIuqO,EACJj4N,MAAOo1V,EAAU,GAAKH,GACrBx/G,EAAMruP,IAAI,iBAAmB,CAAC,GAAG,EAExC,GAEEiuW,EAAa,CAAC,CAAC,OAAQ,OAAQ,CAAC,UAEpCxoW,EAAMitS,QAAU,SAAUljE,EAAS/nI,EAAKnmG,GACtC,IAAI+sP,EAAQvxP,KAAKuxP,MACb7S,EAAc6S,EAAMruP,IAAI,eAAiBsB,GAE7C,GAAKysW,EAAmBzsW,GAAxB,CAIA,IAuDIomW,EAvDA3wE,EAAY,CACdjuP,OAAQ,IAGNolU,EAAyB,SAAUx9H,GACrC,IAAIR,EAAaQ,EAAYD,QACzBI,EAAWH,EAAYpqO,GACvB6nW,EAAeJ,EAAmBzsW,GAAM4uO,EAAYW,EAAUH,EAAa2d,GAE3E8/G,IAEF/+H,EAAO94I,SAAS63Q,EAAcz9H,EAAY7oM,QAC1CkvP,EAAUjuP,OAAO/nC,KAAKotW,IAIxB,IAAIx+H,EAAWe,EAAYS,iBAE3B,GAAIxB,GAA8B,gBAAlBA,EAASruO,OAAoC,SAATA,GAA4B,QAATA,GAAiB,CACtF,IAAIklR,EAAe72C,EAAS82C,eAAe,WAAW,GAEtD,GAAID,EAAc,CAChB,IAAImP,EAAUnP,EAAaz3I,IACvB97F,EAAW0iP,EAAU,OACrB1X,EAAYzuC,EAAQq5D,gBAAgB,CACtCr4D,SAAUv9L,EACVl0C,MAAO2xO,EAAY1wO,IAAIuB,KAAO,SAC9B+E,GAAIoqO,EAAY1wO,IAAIuB,KAAO,QAC1B,GACCs3C,EAAYolO,EAAUuzB,eAC1Bza,EAAU9jP,GAAY8jP,EAAU9jP,IAAa,GAE7C,IAAK,IAAInyC,EAAI,EAAGA,GAAK+3C,EAAW/3C,IAC9Bi2R,EAAU9jP,GAAU4F,GAAak+O,EAAU9jP,GAAU4F,IAAc,CAAC,EAGtEk+O,EAAU9jP,GAAU4F,GAAW9N,YAAuB,QAATzpC,CAC/C,CACF,CACF,EAkBA,GAhBA8tO,EAAO56H,KAAKy5P,GAAY,SAAUG,GAC5Bh/H,EAAOj7N,QAAQi6V,EAAO9sW,IAAS,GACjC8tO,EAAO56H,KAAK45P,GAAO,SAAU9rV,GAC3B+rO,EAAMy5G,cAAcxlV,EAAM,SAC5B,GAEJ,IACA+rO,EAAMy5G,cAAcxmW,EAAM,YAC1BkuO,EAAQe,cAAc,CACpBC,SAAU,SACV7yI,MAAsB,MAAf69I,EAAsB,KAAO,CAClCA,YAAaA,IAEd0yH,GAGU,UAAT5sW,EAAkB,CACpB,IAAI0sW,EAAUj3E,EAAUjuP,QAAUiuP,EAAUjuP,OAAO,IAAMiuP,EAAUjuP,OAAO,GAAGlwB,QAAUi1V,EACvFnG,EAAWsG,EAAU5+H,EAAOt0H,MAAM,CAChCliG,MAAO+0V,EAAcvlU,MAAMimU,OAC1BV,EAAcvlU,OAASgnM,EAAOh+M,MAAMu8U,EAAcvlU,MACvD,CAEAq/D,EAAIi9J,eAAe,CACjBpjQ,KAAM,kBACNgtW,YAAahtW,EACby1R,UAAWA,EACX2wE,SAAUA,EACVlB,YAAa,aAvEf,CAyEF,EAEAv2H,EAAQI,eAAe,CACrB/uO,KAAM,kBACN6e,MAAO,mBACP2T,OAAQ,qBACP,SAAUw8M,EAASd,GACpBA,EAAQowB,YAAYtvB,EAAQymD,UAC9B,IACAsvE,EAAenwR,SAAS,YAAa43R,GACrC,IAAIvjV,EAAWujV,EACf7vW,EAAOD,QAAUusB,C,wBCpMjB,IAAI0lN,EAAU3qN,EAAQ,OAElB6mV,EAAU7mV,EAAQ,OAElBgpU,EAAOhpU,EAAQ,OAEf+gV,EAAiB/gV,EAAQ,OAoBzBipV,EAAcjgB,EAAKpxB,QAAQ5jS,QAE/B,SAASk1U,EAAQngH,GACfvxP,KAAKuxP,MAAQA,CACf,CAEAmgH,EAAQl7H,cAAgB,CACtB9oM,MAAM,EAGNgY,KAAM,kLAGNpa,MAAOmmU,EAAYnmU,OAErB,IAAI3iC,EAAQ+oW,EAAQnqW,UAEpBoB,EAAMitS,QAAU,SAAUljE,EAAS/nI,EAAKnmG,GACtC6qW,EAAQ3sV,MAAMgwN,GACd/nI,EAAIi9J,eAAe,CACjBpjQ,KAAM,UACN45D,KAAMp+D,KAAK6N,KAEf,EAEA07V,EAAenwR,SAAS,UAAWs4R,GACnCv+H,EAAQI,eAAe,CACrB/uO,KAAM,UACN6e,MAAO,UACP2T,OAAQ,qBACP,SAAUw8M,EAASd,GACpBA,EAAQi2H,YAAY,WACtB,IACA,IAAIl7U,EAAWikV,EACfvwW,EAAOD,QAAUusB,C,2DC5DjB,IAAI8hS,EAAM/mS,EAAQ,OAEdgpU,EAAOhpU,EAAQ,OAEf+gV,EAAiB/gV,EAAQ,OAsBzBmpV,EAAkBngB,EAAKpxB,QAAQwxC,YAEnC,SAASC,EAAYtgH,GACnBvxP,KAAKuxP,MAAQA,CACf,CAEAsgH,EAAYr7H,cAAgB,CAC1B9oM,MAAM,EACNgY,KAAM,mFACNpa,MAAOqmU,EAAgBrmU,MACvB9mC,KAAM,MAGNstW,yBAA0B,OAC1BrtW,KAAM,GACNstW,kBAAmB,CAAC,WACpBv0R,WAAY,EACZg0Q,KAAMmgB,EAAgBngB,KAAKrvV,SAE7B0vW,EAAYtqW,UAAUujW,UAAYv7C,EAAIsf,gBACtC,IAAIlmU,EAAQkpW,EAAYtqW,UAExBoB,EAAMitS,QAAU,SAAUljE,EAAS/nI,GACjC,IAAI4mJ,EAAQvxP,KAAKuxP,MACbjmN,EAAQimN,EAAMruP,IAAI,SAAWwvO,EAAQxvO,IAAI,iBAAmB,UAC5DkvR,EAA0C,QAAlCznL,EAAIoqJ,QAAQs9B,QAAQj6M,UAC5B5zE,EAAO4tR,EAAQ,MAAQ7gC,EAAMruP,IAAI,QAAQ,IAAS,MAClD8gE,EAAM2mC,EAAIqnQ,oBAAoB,CAChCxtW,KAAMA,EACNo1D,gBAAiB23L,EAAMruP,IAAI,mBAAmB,IAASwvO,EAAQxvO,IAAI,oBAAsB,OACzF4uW,yBAA0BvgH,EAAMruP,IAAI,4BACpC6uW,kBAAmBxgH,EAAMruP,IAAI,qBAC7Bs6E,WAAY+zK,EAAMruP,IAAI,gBAGxB,GAA0B,oBAAf+uW,YAA8B1iD,EAAI2iD,QAAQj7L,IAAOs4I,EAAI2iD,QAAQvxR,KAcpE,GAAIz6E,OAAOmV,UAAU82V,iBAAkB,CACrC,IAAIC,EAAOhwR,KAAKpe,EAAI1gE,MAAM,KAAK,IAC3Byc,EAAIqyV,EAAKpwW,OACTqwW,EAAQ,IAAI98V,WAAWwK,GAE3B,MAAOA,IACLsyV,EAAMtyV,GAAKqyV,EAAK3jW,WAAWsR,GAG7B,IAAIkjE,EAAO,IAAIV,KAAK,CAAC8vR,IACrBnsW,OAAOmV,UAAU82V,iBAAiBlvR,EAAM33C,EAAQ,IAAM9mC,EACxD,KAAO,CACL,IAAIgtV,EAAOjgG,EAAMruP,IAAI,QACjBof,EAAO,qCAAiD0hD,EAAM,qCAAuCwtR,GAAQA,EAAK,IAAM,IAAjH,cACP8gB,EAAMpsW,OAAO8F,OACjBsmW,EAAInvW,SAAS8I,MAAMqW,EACrB,KA9B0E,CAC5E,IAAIiwV,EAAKpvW,SAASE,cAAc,KAChCkvW,EAAG7zP,SAAWpzE,EAAQ,IAAM9mC,EAC5B+tW,EAAG7sW,OAAS,SACZ6sW,EAAG5zP,KAAO36C,EACV,IAAIy4B,EAAM,IAAIw1Q,WAAW,QAAS,CAEhCx9H,KAAMtxO,SAAS8rL,YACfujL,SAAS,EACTC,YAAY,IAEdF,EAAGG,cAAcj2Q,EACnB,CAoBF,EAEA8sQ,EAAenwR,SAAS,cAAey4R,GACvC,IAAIpkV,EAAWokV,EACf1wW,EAAOD,QAAUusB,C,wBCjGjB,IAAI0lN,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,OA8BR2qN,EAAQI,eAAe,CACrB/uO,KAAM,UACN6e,MAAO,UACP2T,OAAQ,4BAEV,WAAa,IACbm8M,EAAQI,eAAe,CACrB/uO,KAAM,UACN6e,MAAO,UACP2T,OAAQ,4BAEV,WAAa,G,iCC/Cb,IAAIs7M,EAAS9pN,EAAQ,OAEjB45R,EAAU55R,EAAQ,MAElBmqV,EAAYnqV,EAAQ,OAEpBoqV,EAAUpqV,EAAQ,OAElB+mS,EAAM/mS,EAAQ,OAEd0hS,EAAa1hS,EAAQ,OAoBrBkvF,EAAO46H,EAAO56H,KACdm7P,EAAc3oD,EAAW2oD,YACzBC,EAAU,CAAC,GAAI,WAAY,QAAS,OACpCC,EAAW,yFAOf,SAASC,EAAmBlvS,GAC1B,IAAImvS,EAAkB,iCAClBC,EAAiB,QAAUpvS,EAAW,KAAOmvS,EAA5B,QAA6DnvS,EAAW,KAAOmvS,EACpG,OAAO3gI,EAAO5oN,IAAIopV,GAAS,SAAUK,GACnC,OAAOA,EAAe,cAAgBD,CACxC,IAAGpoW,KAAK,IACV,CAQA,SAASsoW,EAAar+D,GACpB,IAAI25D,EAAU,GACVv0U,EAAW46Q,EAAe7xS,IAAI,YAC9B0tB,EAAQmkR,EAAe/5B,eAC3BpqP,GAAS89U,EAAQzqW,KAAK,SAAW2sB,GACjC89U,EAAQzqW,KAAK,QAAU8wS,EAAex+C,WACtC,IAAIjxN,EAAayvQ,EAAe7xS,IAAI,cAElB,MAAdoiC,IACFA,EAAan/B,KAAKugF,MAAiB,EAAXvsD,EAAe,IAGzCA,GAAYu0U,EAAQzqW,KAAK,eAAiBqhC,EAAa,MACvD,IAAI1L,EAAcm7Q,EAAe7xS,IAAI,mBACjCy2B,EAAao7Q,EAAe7xS,IAAI,mBAAqB,EACrD22B,EAAgBk7Q,EAAe7xS,IAAI,sBAAwB,EAC3D42B,EAAgBi7Q,EAAe7xS,IAAI,sBAAwB,EAM/D,OALAy2B,GAAc+0U,EAAQzqW,KAAK,eAAiB41B,EAAgB,MAAQC,EAAgB,MAAQH,EAAa,MAAQC,GACjH89E,EAAK,CAAC,aAAc,UAAU,SAAUjzG,GACtC,IAAIuK,EAAM+lS,EAAe7xS,IAAIuB,GAC7BuK,GAAO0/V,EAAQzqW,KAAK,QAAUQ,EAAO,IAAMuK,EAC7C,IACO0/V,EAAQ5jW,KAAK,IACtB,CAQA,SAASuoW,EAAgBre,GACvB,IAAI0Z,EAAU,GACV4E,EAAqBte,EAAa9xV,IAAI,sBACtC02D,EAAkBo7R,EAAa9xV,IAAI,mBACnC6xS,EAAiBigD,EAAax7G,SAAS,aACvCjuJ,EAAUypQ,EAAa9xV,IAAI,WA4B/B,OA1BAowW,GAAsB5E,EAAQzqW,KAAK+uW,EAAmBM,IAElD15S,IACE21P,EAAIsf,gBACN6/B,EAAQzqW,KAAK,oBAAsB21D,IAGnC80S,EAAQzqW,KAAK,qBAAuBm+S,EAAQmxD,MAAM35S,IAClD80S,EAAQzqW,KAAK,8BAKjByzG,EAAK,CAAC,QAAS,QAAS,WAAW,SAAUjzG,GAC3C,IAAI+uW,EAAa,UAAY/uW,EACzBgvW,EAAYZ,EAAYW,GACxBxkW,EAAMgmV,EAAa9xV,IAAIuwW,GACpB,MAAPzkW,GAAe0/V,EAAQzqW,KAAKuvW,EAAa,IAAMxkW,GAAgB,UAATvK,EAAmB,GAAK,MAChF,IAEAiqW,EAAQzqW,KAAKmvW,EAAar+D,IAEX,MAAXxpN,GACFmjR,EAAQzqW,KAAK,WAAaimT,EAAW8I,kBAAkBznO,GAASzgF,KAAK,OAAS,MAGzE4jW,EAAQ5jW,KAAK,KAAO,GAC7B,CAGA,SAAS4oW,EAAe9uW,EAAKutR,EAAIwhF,EAAcC,EAAKC,GAClD,IAAIC,EAAY3hF,GAAMA,EAAGE,QAEzB,GAAIshF,EAAc,CAChB,IAAII,EAAiBD,GAAaA,EAAUE,kBAExCD,GAEFnB,EAAQqB,oBAAoBrvW,EAAKmvW,EAAgB5wW,SAASsvB,KAAMmhV,EAAKC,EAEzE,KAAO,CACLjvW,EAAI,GAAKgvW,EACThvW,EAAI,GAAKivW,EAIT,IAAIK,EAAqBJ,GAAaA,EAAUK,wBAE5CD,IACFtvW,EAAI,IAAMsvW,EAAmBr0K,WAC7Bj7L,EAAI,IAAMsvW,EAAmBp0K,UAEjC,CAEAl7L,EAAI,GAAKA,EAAI,GAAKutR,EAAG9vC,WAErBz9O,EAAI,GAAKA,EAAI,GAAKutR,EAAG7vC,WACvB,CAcA,SAAS8xH,EAAetpU,EAAW6/D,EAAK9H,GACtC,GAAI0sN,EAAI8kD,IACN,OAAO,KAGT,IAAIzyW,EAAKuB,SAASE,cAAc,OAChCzB,EAAG0yW,eAAgB,EACnBt0W,KAAK4B,GAAKA,EACV,IAAIuwR,EAAKnyR,KAAKghV,IAAMr2O,EAAIoqJ,QACpB4+G,EAAe3zW,KAAKu0W,cAAgB1xQ,GAAOA,EAAI8wQ,aACnD3zW,KAAKw0W,YAAc,CAAC,EAAG,EAAG,EAAG,GAE7Bd,EAAe1zW,KAAKw0W,YAAariF,EAAIwhF,EAAchpQ,EAAI03I,WAAa,EAAG13I,EAAI23I,YAAc,GAErFqxH,EACFxwW,SAASsvB,KAAKxO,YAAYriB,GAE1BkpC,EAAU7mB,YAAYriB,GAGxB5B,KAAKy0W,WAAa3pU,EAClB9qC,KAAK00W,OAAQ,EAKb10W,KAAK20W,aAIL,IAAIvuW,EAAOpG,KAEX4B,EAAGgzW,aAAe,WAEZxuW,EAAKyuW,aACP57S,aAAa7yD,EAAKuuW,cAClBvuW,EAAKsuW,OAAQ,GAGftuW,EAAK0uW,YAAa,CACpB,EAEAlzW,EAAG6lT,YAAc,SAAUxhT,GAGzB,GAFAA,EAAIA,GAAKC,OAAOmd,OAEXjd,EAAKyuW,WAAY,CAOpB,IAAIpzV,EAAU0wQ,EAAG1wQ,QACbsyV,EAAiB5hF,EAAGE,QAAQ2hF,kBAChCrB,EAAUoC,eAAehB,EAAgB9tW,GAAG,GAC5Cwb,EAAQuzV,SAAS,YAAa/uW,EAChC,CACF,EAEArE,EAAGqzW,aAAe,WACZ7uW,EAAKyuW,YACHzuW,EAAKsuW,OACPtuW,EAAK8uW,UAAU9uW,EAAK+uW,YAIxB/uW,EAAK0uW,YAAa,CACpB,CACF,CAEAV,EAAe7sW,UAAY,CACzB2F,YAAaknW,EAMbS,YAAY,EAKZ79U,OAAQ,SAAUg+T,GAGhB,IAAIlqT,EAAY9qC,KAAKy0W,WACjBW,EAAMtqU,EAAUuqU,cAAgBlyW,SAAS8rL,YAAY7tF,iBAAiBt2D,GACtEwqU,EAAWxqU,EAAUl/B,MAEC,aAAtB0pW,EAASxjV,UAA4C,aAAjBsjV,EAAItjV,WAC1CwjV,EAASxjV,SAAW,YAGtB,IAAIyjV,EAAoBvgB,EAAa9xV,IAAI,qBACzCqyW,GAAqBv1W,KAAKw1W,uBAG5B,EAMAA,sBAAuB,WACrB,IAAIC,EAASz1W,KAAKw0W,YAAY,GAE1BkB,EAAS11W,KAAKw0W,YAAY,GAE1BmB,EAAQF,EAASz1W,KAAKghV,IAAI3+F,WAE1BuzH,EAAQF,EAAS11W,KAAKghV,IAAI1+F,YAE9BtiP,KAAKimC,OAAO0vU,EAAOC,EACrB,EACAloU,KAAM,SAAUsnT,GACd/7R,aAAaj5D,KAAK20W,cAClB,IAAI/yW,EAAK5B,KAAK4B,GACVi0W,EAAa71W,KAAKw0W,YACtB5yW,EAAGgK,MAAM8iW,QAAUqE,EAAWM,EAAgBre,GAG5C,SAAW6gB,EAAW,GAAK,UAAYA,EAAW,GAAK,OAAS7gB,EAAa9xV,IAAI,iBAAmB,IACtGtB,EAAGgK,MAAMC,QAAUjK,EAAGw5F,UAAY,QAAU,OAM5Cx5F,EAAGgK,MAAM4wF,cAAgBx8F,KAAK60W,WAAa,OAAS,OACpD70W,KAAK00W,OAAQ,CACf,EACAoB,WAAY,SAAUlxU,GACpB5kC,KAAK4B,GAAGw5F,UAAuB,MAAXx2D,EAAkB,GAAKA,CAC7C,EACAmxU,aAAc,SAAUC,GACtBh2W,KAAK60W,WAAamB,CACpB,EACAzrB,QAAS,WACP,IAAI3oV,EAAK5B,KAAK4B,GACd,MAAO,CAACA,EAAG0uB,YAAa1uB,EAAG2uB,aAC7B,EACA0V,OAAQ,SAAU2tU,EAAKC,GACrB,IAAIgC,EAAa71W,KAAKw0W,YACtBd,EAAemC,EAAY71W,KAAKghV,IAAKhhV,KAAKu0W,cAAeX,EAAKC,GAC9D,IAAIjoW,EAAQ5L,KAAK4B,GAAGgK,MACpBA,EAAMykC,KAAOwlU,EAAW,GAAK,KAC7BjqW,EAAM2kC,IAAMslU,EAAW,GAAK,IAC9B,EACAzxW,KAAM,WACJpE,KAAK4B,GAAGgK,MAAMC,QAAU,OACxB7L,KAAK00W,OAAQ,CACf,EACAQ,UAAW,SAAUv/U,IACf31B,KAAK00W,OAAW10W,KAAK80W,YAAc90W,KAAK60W,aACtCl/U,GACF31B,KAAKm1W,WAAax/U,EAElB31B,KAAK00W,OAAQ,EACb10W,KAAK20W,aAAexwV,WAAWmuN,EAAOv1N,KAAK/c,KAAKoE,KAAMpE,MAAO21B,IAE7D31B,KAAKoE,OAGX,EACAu5S,OAAQ,WACN,OAAO39S,KAAK00W,KACd,EACAl5H,QAAS,WACPx7O,KAAK4B,GAAGq/F,WAAW/8E,YAAYlkB,KAAK4B,GACtC,EACAq0W,aAAc,WACZ,IAAIztU,EAAQxoC,KAAK4B,GAAG0uB,YAChBmY,EAASzoC,KAAK4B,GAAG2uB,aAGrB,GAAIptB,SAAS8rL,aAAe9rL,SAAS8rL,YAAY7tF,iBAAkB,CACjE,IAAIg0Q,EAAMjyW,SAAS8rL,YAAY7tF,iBAAiBphG,KAAK4B,IAEjDwzW,IACF5sU,GAAStD,SAASkwU,EAAIc,gBAAiB,IAAMhxU,SAASkwU,EAAIe,iBAAkB,IAC5E1tU,GAAUvD,SAASkwU,EAAIgB,eAAgB,IAAMlxU,SAASkwU,EAAIiB,kBAAmB,IAEjF,CAEA,MAAO,CACL7tU,MAAOA,EACPC,OAAQA,EAEZ,GAEF,IAAIhb,EAAW2mV,EACfjzW,EAAOD,QAAUusB,C,wBClWjB,IAAI0lN,EAAU3qN,EAAQ,OAoBlBiF,EAAW0lN,EAAQ6wE,qBAAqB,CAC1Cx/S,KAAM,UACN0xO,aAAc,CAAC,eACfM,cAAe,CACb4J,OAAQ,EACRroK,EAAG,GACHrqC,MAAM,EAEN4oU,aAAa,EAGbtmQ,QAAS,OAETi0M,UAAW,kBACXsxD,mBAAmB,EACnBgB,YAAa,SAEbphF,WAAY,OAWZqhF,SAAS,EAGTC,UAAW,EAEXC,UAAW,IAEXpD,mBAAoB,GACpB0C,WAAW,EAEXp8S,gBAAiB,qBAEjBiqK,YAAa,OAEb/7J,aAAc,EAEdD,YAAa,EAGb0jB,QAAS,EAETorR,aAAc,GAEd/yD,YAAa,CAGXp/S,KAAM,OAKN4mC,KAAM,OACNpa,UAAW,OACXw3Q,wBAAyB,IACzBouE,sBAAuB,iBACvB1kD,WAAY,CACVthS,MAAO,OACP4X,MAAO,EACPhkC,KAAM,SAENytC,UAAW,CAAC,IAKhBA,UAAW,CACTrhB,MAAO,OACPuJ,SAAU,OAKhBh5B,EAAOD,QAAUusB,C,wBCpGjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB0qO,EAAO1qO,EAAQ,OAEfgpO,EAAchpO,EAAQ,OAqB1B,SAASkrV,EAAe9uW,EAAKutR,EAAIyhF,EAAKC,GACpCjvW,EAAI,GAAKgvW,EACThvW,EAAI,GAAKivW,EACTjvW,EAAI,GAAKA,EAAI,GAAKutR,EAAG9vC,WAErBz9O,EAAI,GAAKA,EAAI,GAAKutR,EAAG7vC,WACvB,CAOA,SAASu0H,EAAmBlsQ,GAC1B,IAAIwnL,EAAKnyR,KAAKghV,IAAMr2O,EAAIoqJ,QACxB/0P,KAAKw0W,YAAc,CAAC,EAAG,EAAG,EAAG,GAE7Bd,EAAe1zW,KAAKw0W,YAAariF,EAAIxnL,EAAI03I,WAAa,EAAG13I,EAAI23I,YAAc,GAC3EtiP,KAAK00W,OAAQ,EAKb10W,KAAK20W,YACP,CAEAkC,EAAmBtvW,UAAY,CAC7B2F,YAAa2pW,EAMbhC,YAAY,EAKZ79U,OAAQ,SAAUg+T,GAChB,IAAIugB,EAAoBvgB,EAAa9xV,IAAI,qBACzCqyW,GAAqBv1W,KAAKw1W,uBAC5B,EAMAA,sBAAuB,WACrB,IAAIC,EAASz1W,KAAKw0W,YAAY,GAE1BkB,EAAS11W,KAAKw0W,YAAY,GAE1BmB,EAAQF,EAASz1W,KAAKghV,IAAI3+F,WAE1BuzH,EAAQF,EAAS11W,KAAKghV,IAAI1+F,YAE9BtiP,KAAKimC,OAAO0vU,EAAOC,EACrB,EACAloU,KAAM,SAAUsnT,GACVh1V,KAAK20W,cACP17S,aAAaj5D,KAAK20W,cAGpB30W,KAAK4B,GAAGi1B,KAAK,QAAQ,GACrB72B,KAAK00W,OAAQ,CACf,EASAoB,WAAY,SAAUlxU,EAASkyU,EAAY9hB,GACrCh1V,KAAK4B,IACP5B,KAAKghV,IAAIpkQ,OAAO58E,KAAK4B,IAGvB,IAAIm1W,EAAU,CAAC,EACXp6U,EAAOiI,EACPo+E,EAAS,UACT0rI,EAAS,KACTsoH,EAAUr6U,EAAKtlB,QAAQ2rG,GAE3B,MAAOg0P,GAAW,EAAG,CACnB,IAAIC,EAAQt6U,EAAKtlB,QAAQq3O,GACrBjqP,EAAOk4B,EAAK69H,OAAOw8M,EAAUh0P,EAAOhhH,OAAQi1W,EAAQD,EAAUh0P,EAAOhhH,QAErEyC,EAAK4S,QAAQ,QAAU,EACzB0/V,EAAQ,SAAWtyW,GAAQ,CACzBkhD,UAAW,EACX07M,WAAY,EACZqqG,iBAAkB,EAClBjpI,oBAAqBq0I,EAAWryW,GAEhCyyW,WAAY,CAAC,EAAG,IAGlBH,EAAQ,SAAWtyW,GAAQ,CACzBkhD,UAAW,GACX07M,WAAY,GACZqqG,iBAAkB,EAClBjpI,oBAAqBq0I,EAAWryW,IAIpCk4B,EAAOA,EAAK69H,OAAOy8M,EAAQ,GAC3BD,EAAUr6U,EAAKtlB,QAAQ,UACzB,CAEA,IAAI09R,EAAiBigD,EAAax7G,SAAS,aACvCr/M,EAAW46Q,EAAe7xS,IAAI,YAC9BoiC,EAAa0vT,EAAa9xV,IAAI,kBAEhB,MAAdoiC,IACFA,EAAan/B,KAAKugF,MAAiB,EAAXvsD,EAAe,IAGzCn6B,KAAK4B,GAAK,IAAIsxP,EAAK,CACjBtnP,MAAO4lP,EAAYyE,aAAa,CAAC,EAAG8+C,EAAgB,CAClDoiE,KAAMJ,EACNp6U,KAAMiI,EACN69L,oBAAqBuyH,EAAa9xV,IAAI,mBACtCwoW,iBAAkB1W,EAAa9xV,IAAI,gBACnCs/N,SAAUwyH,EAAa9xV,IAAI,mBAC3BiwT,YAAa6hC,EAAa9xV,IAAI,WAC9Bk0W,eAAgB9xU,IAElByyC,EAAGi9Q,EAAa9xV,IAAI,OAGtBlD,KAAKghV,IAAIzgV,IAAIP,KAAK4B,IAElB,IAAIwE,EAAOpG,KACXA,KAAK4B,GAAG6hE,GAAG,aAAa,WAElBr9D,EAAKyuW,aACP57S,aAAa7yD,EAAKuuW,cAClBvuW,EAAKsuW,OAAQ,GAGftuW,EAAK0uW,YAAa,CACpB,IACA90W,KAAK4B,GAAG6hE,GAAG,YAAY,WACjBr9D,EAAKyuW,YACHzuW,EAAKsuW,OACPtuW,EAAK8uW,UAAU9uW,EAAK+uW,YAIxB/uW,EAAK0uW,YAAa,CACpB,GACF,EACAiB,aAAc,SAAUC,GACtBh2W,KAAK60W,WAAamB,CACpB,EACAzrB,QAAS,WACP,IAAIrK,EAAWlgV,KAAK4B,GAAGonQ,kBACvB,MAAO,CAACk3E,EAAS13S,MAAO03S,EAASz3S,OACnC,EACAxC,OAAQ,SAAUnmB,EAAG6e,GACnB,GAAI3+B,KAAK4B,GAAI,CACX,IAAIi0W,EAAa71W,KAAKw0W,YACtBd,EAAemC,EAAY71W,KAAKghV,IAAKlhU,EAAG6e,GACxC3+B,KAAK4B,GAAGi1B,KAAK,WAAY,CAACg/U,EAAW,GAAIA,EAAW,IACtD,CACF,EACAzxW,KAAM,WACApE,KAAK4B,IACP5B,KAAK4B,GAAGwC,OAGVpE,KAAK00W,OAAQ,CACf,EACAQ,UAAW,SAAUv/U,IACf31B,KAAK00W,OAAW10W,KAAK80W,YAAc90W,KAAK60W,aACtCl/U,GACF31B,KAAKm1W,WAAax/U,EAElB31B,KAAK00W,OAAQ,EACb10W,KAAK20W,aAAexwV,WAAWmuN,EAAOv1N,KAAK/c,KAAKoE,KAAMpE,MAAO21B,IAE7D31B,KAAKoE,OAGX,EACAu5S,OAAQ,WACN,OAAO39S,KAAK00W,KACd,EACAl5H,QAAS,WACPviL,aAAaj5D,KAAK20W,cAEd30W,KAAK4B,IACP5B,KAAKghV,IAAIpkQ,OAAO58E,KAAK4B,GAEzB,EACAq0W,aAAc,WACZ,IAAI3sR,EAAOtpF,KAAKuqV,UAChB,MAAO,CACL/hT,MAAO8gD,EAAK,GACZ7gD,OAAQ6gD,EAAK,GAEjB,GAEF,IAAI77D,EAAWopV,EACf11W,EAAOD,QAAUusB,C,iCCvOjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjB+mS,EAAM/mS,EAAQ,OAEd4rV,EAAiB5rV,EAAQ,OAEzBquV,EAAqBruV,EAAQ,OAE7B0hS,EAAa1hS,EAAQ,OAErBmlR,EAAanlR,EAAQ,OAErBsuN,EAAUtuN,EAAQ,OAElB+iS,EAAsB/iS,EAAQ,OAE9B2zT,EAAa3zT,EAAQ,MAErByuN,EAAQzuN,EAAQ,OAEhB87R,EAAiB97R,EAAQ,OAEzBoqS,EAAapqS,EAAQ,MAErB6uV,EAAwB7uV,EAAQ,MAEhCiyO,EAASjyO,EAAQ,OAEjB8uV,EAAuB78G,EAAO68G,qBAoB9Bv6V,EAAOu1N,EAAOv1N,KACd26F,EAAO46H,EAAO56H,KACdgqI,EAAeisD,EAAWjsD,aAC1B61H,EAAY,IAAIzgI,EAAQuF,KAAK,CAC/B7mN,MAAO,CACL1V,GAAI,EACJ6e,GAAI,EACJ6J,MAAO,EACPC,OAAQ,KAIRhb,EAAW0lN,EAAQqxE,oBAAoB,CACzChgT,KAAM,UACNkzD,KAAM,SAAUg7K,EAAS/nI,GACvB,IAAI4kN,EAAIn0O,KAAR,CAIA,IAGIo8R,EAHAxiB,EAAetiH,EAAQizC,aAAa,WACpCwP,EAAa6/D,EAAa9xV,IAAI,cAClClD,KAAKy3W,YAAcH,EAAqBniF,GAGf,SAArBn1R,KAAKy3W,aACPD,EAAiB,IAAIpD,EAAezpQ,EAAI8jQ,SAAU9jQ,EAAK,CACrDgpQ,aAAc3e,EAAa9xV,IAAI,gBAAgB,KAEjDlD,KAAK03W,SAAW,UAEhBF,EAAiB,IAAIX,EAAmBlsQ,GACxC3qG,KAAK03W,SAAW,MAGlB13W,KAAK23W,gBAAkBH,CAjBvB,CAkBF,EACAr4W,OAAQ,SAAU61V,EAActiH,EAAS/nI,GACvC,IAAI4kN,EAAIn0O,KAAR,CAKAp7E,KAAKk7C,MAAMigM,YAMXn7O,KAAK43W,cAAgB5iB,EAMrBh1V,KAAKsmS,SAAW5zD,EAMhB1yO,KAAKqmT,KAAO17M,EAOZ3qG,KAAK63W,oBAAsB,KAM3B73W,KAAK83W,mBAAqB9iB,EAAa9xV,IAAI,qBAC3C,IAAIs0W,EAAiBx3W,KAAK23W,gBAC1BH,EAAexgV,OAAOg+T,GACtBwiB,EAAezB,aAAa/gB,EAAa9xV,IAAI,cAE7ClD,KAAK+3W,sBAEL/3W,KAAKg4W,WAzCL,CA0CF,EACAD,oBAAqB,WACnB,IAAI/iB,EAAeh1V,KAAK43W,cACpB3zD,EAAY+wC,EAAa9xV,IAAI,aACjCohT,EAAelrO,SAAS,cAAep5E,KAAKqmT,KAAMtpS,GAAK,SAAU4nS,EAAa1+S,EAAG2hQ,GAE7D,SAAdq8C,IACEA,EAAU5sS,QAAQstS,IAAgB,EACpC3kT,KAAKi4W,SAAShyW,EAAG2hQ,GACQ,UAAhB+8C,GACT3kT,KAAKk4W,MAAMtwG,GAGjB,GAAG5nQ,MACL,EACAg4W,UAAW,WACT,IAAIhjB,EAAeh1V,KAAK43W,cACpBllI,EAAU1yO,KAAKsmS,SACf37L,EAAM3qG,KAAKqmT,KAEf,GAAmB,MAAfrmT,KAAKm4W,QAAiC,MAAfn4W,KAAKo4W,QAGK,SAAlCpjB,EAAa9xV,IAAI,aAAyB,CAC3C,IAAIkD,EAAOpG,KACXi5D,aAAaj5D,KAAKq4W,uBAClBr4W,KAAKq4W,sBAAwBl0V,YAAW,YAIrCwmF,EAAI+4N,cAAgBt9T,EAAKkyW,gBAAgBtjB,EAActiH,EAAS/nI,EAAK,CACpE7qF,EAAG1Z,EAAK+xW,OACRx5U,EAAGv4B,EAAKgyW,QAEZ,GACF,CACF,EAkBAE,gBAAiB,SAAUtjB,EAActiH,EAAS/nI,EAAK6oI,GACrD,GAAIA,EAAQp1K,OAASp+D,KAAK6N,MAAO0hT,EAAIn0O,KAArC,CAIA,IAAIwsL,EAAiBioD,EAAmBr8E,EAAS7oI,GAEjD3qG,KAAKu4W,QAAU,GAEf,IAAIxsD,EAAiBv4E,EAAQu4E,eAE7B,GAAIv4E,EAAQ+yC,SAAwB,MAAb/yC,EAAQ1zN,GAA0B,MAAb0zN,EAAQ70M,EAAW,CAC7D,IAAI/8B,EAAK21W,EACT31W,EAAGkwB,SAAW,CAAC0hN,EAAQ1zN,EAAG0zN,EAAQ70M,GAClC/8B,EAAGo1B,SACHp1B,EAAG2kR,QAAU/yC,EAAQ+yC,QAErBvmR,KAAKi4W,SAAS,CACZrmV,QAAS4hN,EAAQ1zN,EACjB+R,QAAS2hN,EAAQ70M,EACjBj5B,OAAQ9D,GACPgmQ,EACL,MAAO,GAAImkD,EACT/rT,KAAKi4W,SAAS,CACZrmV,QAAS4hN,EAAQ1zN,EACjB+R,QAAS2hN,EAAQ70M,EACjB7M,SAAU0hN,EAAQ1hN,SAClBi6R,eAAgBv4E,EAAQu4E,eACxB3D,cAAe50E,EAAQ40E,eACtBxgD,QACE,GAA2B,MAAvBp0B,EAAQkL,YAAqB,CACtC,GAAI1+O,KAAKw4W,qBAAqBxjB,EAActiH,EAAS/nI,EAAK6oI,GACxD,OAGF,IAAIilI,EAAYltD,EAAoB/3E,EAASd,GACzCxjN,EAAKupV,EAAUzoW,MAAM,GACrBmf,EAAKspV,EAAUzoW,MAAM,GAEf,MAANkf,GAAoB,MAANC,GAChBnvB,KAAKi4W,SAAS,CACZrmV,QAAS1C,EACT2C,QAAS1C,EACT2C,SAAU0hN,EAAQ1hN,SAClBpsB,OAAQ+yW,EAAU72W,IACjBgmQ,EAEP,MAAwB,MAAbp0B,EAAQ1zN,GAA0B,MAAb0zN,EAAQ70M,IAGtCgsE,EAAIi9J,eAAe,CACjBpjQ,KAAM,oBACNsb,EAAG0zN,EAAQ1zN,EACX6e,EAAG60M,EAAQ70M,IAGb3+B,KAAKi4W,SAAS,CACZrmV,QAAS4hN,EAAQ1zN,EACjB+R,QAAS2hN,EAAQ70M,EACjB7M,SAAU0hN,EAAQ1hN,SAClBpsB,OAAQilG,EAAIoqJ,QAAQ2jH,UAAUllI,EAAQ1zN,EAAG0zN,EAAQ70M,GAAGj5B,QACnDkiQ,GA1DL,CA4DF,EACA+wG,gBAAiB,SAAU3jB,EAActiH,EAAS/nI,EAAK6oI,GACrD,IAAIgkI,EAAiBx3W,KAAK23W,iBAErB33W,KAAK83W,oBAAsB93W,KAAK43W,eACnCJ,EAAetC,UAAUl1W,KAAK43W,cAAc10W,IAAI,cAGlDlD,KAAKm4W,OAASn4W,KAAKo4W,OAAS,KAExB5kI,EAAQp1K,OAASp+D,KAAK6N,KACxB7N,KAAKk4W,MAAMroD,EAAmBr8E,EAAS7oI,GAE3C,EAIA6tQ,qBAAsB,SAAUxjB,EAActiH,EAAS/nI,EAAK6oI,GAC1D,IAAIkL,EAAclL,EAAQkL,YACtB7K,EAAYL,EAAQK,UACpBgwE,EAAmBnxE,EAAQizC,aAAa,eAAek+B,iBAE3D,GAAmB,MAAfnlE,GAAoC,MAAb7K,GAAyC,MAApBgwE,EAAhD,CAIA,IAAIjwE,EAAclB,EAAQ48E,iBAAiB5wE,GAE3C,GAAK9K,EAAL,CAIA,IAAI30N,EAAO20N,EAAY7oI,UACnBiqP,EAAe4jB,EAAkB,CAAC35V,EAAKo7N,aAAaxG,GAAYD,GAAcA,EAAYS,kBAAoB,CAAC,GAAGkd,MAAOyjG,IAE7H,GAAoC,SAAhCA,EAAa9xV,IAAI,WAUrB,OANAynG,EAAIi9J,eAAe,CACjBpjQ,KAAM,oBACNk6O,YAAaA,EACb7K,UAAWA,EACX/hN,SAAU0hN,EAAQ1hN,YAEb,CAfP,CANA,CAsBF,EACAmmV,SAAU,SAAUhyW,EAAG2hQ,GACrB,IAAIhmQ,EAAKqE,EAAEP,OACPsvV,EAAeh1V,KAAK43W,cAExB,GAAK5iB,EAAL,CAKAh1V,KAAKm4W,OAASlyW,EAAE2rB,QAChB5xB,KAAKo4W,OAASnyW,EAAE4rB,QAChB,IAAIk6R,EAAiB9lT,EAAE8lT,eAEnBA,GAAkBA,EAAe/pT,OACnChC,KAAK64W,iBAAiB9sD,EAAgB9lT,GAE/BrE,GAAsB,MAAhBA,EAAGiyO,WACd7zO,KAAK63W,oBAAsB,KAE3B73W,KAAK84W,uBAAuB7yW,EAAGrE,EAAIgmQ,IAE5BhmQ,GAAMA,EAAG2kR,SACdvmR,KAAK63W,oBAAsB,KAE3B73W,KAAK+4W,0BAA0B9yW,EAAGrE,EAAIgmQ,KAEtC5nQ,KAAK63W,oBAAsB,KAE3B73W,KAAKk4W,MAAMtwG,GAtBjB,CAwBF,EACAoxG,YAAa,SAAUhkB,EAAcr8Q,GAKnC,IAAIjjD,EAAQs/T,EAAa9xV,IAAI,aAC7By1E,EAAK25J,EAAOv1N,KAAK47D,EAAI34E,MACrBi5D,aAAaj5D,KAAKi5W,aAClBvjV,EAAQ,EAAI11B,KAAKi5W,YAAc90V,WAAWw0D,EAAIjjD,GAASijD,GACzD,EACAkgS,iBAAkB,SAAU9sD,EAAgB9lT,GAC1C,IAAIysO,EAAU1yO,KAAKsmS,SACfoe,EAAqB1kT,KAAK43W,cAC1B5nW,EAAQ,CAAC/J,EAAE2rB,QAAS3rB,EAAE4rB,SACtBqnV,EAAoB,GACpBC,EAAmB,GACnBC,EAAqBR,EAAkB,CAAC3yW,EAAEmiT,cAAe1D,IACzDvvB,EAAan1R,KAAKy3W,YAClBjiF,EAAUx1R,KAAK03W,SACfX,EAAU,CAAC,EACfr/P,EAAKq0M,GAAgB,SAAUstD,GAW7B3hQ,EAAK2hQ,EAAa7qD,YAAY,SAAUhpS,GACtC,IAAI27P,EAAYzuC,EAAQizC,aAAangQ,EAAKqzQ,QAAU,OAAQrzQ,EAAKu2B,WAC7Du9T,EAAY9zV,EAAK1jB,MACjBy3W,EAAoB,GAExB,GAAKp4F,GAA0B,MAAbm4F,EAAlB,CAIA,IAAIE,EAAanC,EAAsBvkD,cAAcwmD,EAAWn4F,EAAU/1O,KAAMsnM,EAASltN,EAAKmpS,kBAAmBnpS,EAAKkpS,eACtHp8E,EAAO56H,KAAKlyF,EAAKmpS,mBAAmB,SAAU6E,GAC5C,IAAIxnR,EAAS0mM,EAAQ48E,iBAAiBkE,EAAQ90E,aAC1C7K,EAAY2/E,EAAQ99D,gBACpB+9D,EAAaznR,GAAUA,EAAOwsN,cAAc3kB,GAQhD,GAPA4/E,EAAW56B,QAAUrzQ,EAAKqzQ,QAC1B46B,EAAW13Q,UAAYv2B,EAAKu2B,UAC5B03Q,EAAWt9Q,SAAW3wB,EAAK2wB,SAC3Bs9Q,EAAWhF,OAASjpS,EAAKipS,OACzBgF,EAAW6lD,UAAY1mD,EAAWS,gBAAgBlyC,EAAU/1O,KAAMkuU,GAClE7lD,EAAWgmD,eAAiBD,EAExB/lD,EAAY,CACd0lD,EAAiBl1W,KAAKwvT,GACtB,IACInxS,EADAo3V,EAAgB1tU,EAAOg4N,cAAcnwB,GAAW,EAAM,KAAMshD,GAGhE,GAAI7iD,EAAOhxO,SAASo4W,GAAgB,CAClCp3V,EAAOo3V,EAAcp3V,KACrB,IAAIq3V,EAAaD,EAAc3C,QAC/BzkI,EAAOt0H,MAAM+4P,EAAS4C,EACxB,MACEr3V,EAAOo3V,EAGTH,EAAkBt1W,KAAKqe,EACzB,CACF,IAKA,IAAI2qV,EAAYuM,EAEG,SAAfrkF,EACF+jF,EAAkBj1W,KAAKs1W,EAAkBzuW,KAAK0qR,IAE9C0jF,EAAkBj1W,MAAMgpW,EAAY/iD,EAAW/nD,WAAW8qG,GAAaz3E,EAAU,IAAM+jF,EAAkBzuW,KAAK0qR,GAvChH,CAyCF,GACF,GAAGx1R,MAEHk5W,EAAkBl+U,UAClBk+U,EAAoBA,EAAkBpuW,KAAK9K,KAAK03W,SAAW13W,KAAK03W,UAChE,IAAIkC,EAAe3zW,EAAE6rB,SAErB9xB,KAAKg5W,YAAYI,GAAoB,WAC/Bp5W,KAAK65W,+BAA+B9tD,GACtC/rT,KAAK85W,gBAAgBV,EAAoBQ,EAAc5pW,EAAM,GAAIA,EAAM,GAAIhQ,KAAK23W,gBAAiBwB,GAEjGn5W,KAAK+5W,oBAAoBX,EAAoBF,EAAmBC,EAAkBhzW,KAAKgJ,SAAUa,EAAM,GAAIA,EAAM,GAAI4pW,OAAcl3W,EAAWq0W,EAElJ,GAGF,EACA+B,uBAAwB,SAAU7yW,EAAGrE,EAAIgmQ,GACvC,IAAIl1B,EAAU1yO,KAAKsmS,SAIf5nD,EAAc98O,EAAG88O,YACjB9K,EAAclB,EAAQ48E,iBAAiB5wE,GAEvC89G,EAAY56V,EAAG46V,WAAa5oH,EAC5BC,EAAYjyO,EAAGiyO,UACf4kB,EAAW72P,EAAG62P,SACdx5O,EAAOu9U,EAAUzxP,QAAQ0tJ,GACzBu8F,EAAe4jB,EAAkB,CAAC35V,EAAKo7N,aAAaxG,GAAY2oH,EAAW5oH,IAAgBA,EAAYS,kBAAoB,CAAC,GAAGkd,MAAOvxP,KAAK43W,gBAC3IoC,EAAiBhlB,EAAa9xV,IAAI,WAEtC,GAAsB,MAAlB82W,GAA6C,SAAnBA,EAA9B,CAIA,IAEIC,EACAlD,EAHAn1V,EAAS46U,EAAUhkG,cAAc3kB,EAAW4kB,GAC5CihH,EAAgBld,EAAUx4F,cAAcnwB,GAAW,EAAO4kB,EAAUz4P,KAAKy3W,aAIzEnlI,EAAOhxO,SAASo4W,IAClBO,EAAcP,EAAcp3V,KAC5By0V,EAAU2C,EAAc3C,UAExBkD,EAAcP,EACd3C,EAAU,MAGZ,IAAImD,EAAc,QAAU1d,EAAU/3V,KAAO,IAAMovO,EAEnD7zO,KAAKg5W,YAAYhkB,GAAc,WAC7Bh1V,KAAK+5W,oBAAoB/kB,EAAcilB,EAAar4V,EAAQs4V,EAAaj0W,EAAE2rB,QAAS3rB,EAAE4rB,QAAS5rB,EAAE6rB,SAAU7rB,EAAEP,OAAQqxW,EACvH,IAIAnvG,EAAe,CACbpjQ,KAAM,UACNkxP,gBAAiB7hB,EACjBA,UAAW50N,EAAK02O,YAAY9hB,GAC5B6K,YAAaA,EACbtgL,KAAMp+D,KAAK6N,KA5Bb,CA8BF,EACAkrW,0BAA2B,SAAU9yW,EAAGrE,EAAIgmQ,GAC1C,IAAIyxD,EAAaz3T,EAAG2kR,QAEpB,GAA0B,kBAAf8yC,EAAyB,CAClC,IAAIz0R,EAAUy0R,EACdA,EAAa,CACXz0R,QAASA,EAET0J,UAAW1J,EAEf,CAEA,IAAIu1U,EAAkB,IAAIljI,EAAMoiF,EAAYr5T,KAAK43W,cAAe53W,KAAKsmS,UACjE2zE,EAAcE,EAAgBj3W,IAAI,WAClCg3W,EAAc/zW,KAAKgJ,SAIvBnP,KAAKg5W,YAAYmB,GAAiB,WAChCn6W,KAAK+5W,oBAAoBI,EAAiBF,EAAaE,EAAgBj3W,IAAI,oBAAsB,CAAC,EAAGg3W,EAAaj0W,EAAE2rB,QAAS3rB,EAAE4rB,QAAS5rB,EAAE6rB,SAAUlwB,EACtJ,IAGAgmQ,EAAe,CACbpjQ,KAAM,UACN45D,KAAMp+D,KAAK6N,KAEf,EACAksW,oBAAqB,SAAU/kB,EAAcilB,EAAar4V,EAAQs4V,EAAap6V,EAAG6e,EAAGi7U,EAAch4W,EAAIm1W,GAIrG,GAFA/2W,KAAKu4W,QAAU,GAEVvjB,EAAa9xV,IAAI,gBAAmB8xV,EAAa9xV,IAAI,QAA1D,CAIA,IAAIs0W,EAAiBx3W,KAAK23W,gBACtBrpU,EAAY0mT,EAAa9xV,IAAI,aACjC02W,EAAeA,GAAgB5kB,EAAa9xV,IAAI,YAChD,IAAIof,EAAO23V,EAEX,GAAI3rU,GAAkC,kBAAdA,EACtBhsB,EAAO4nS,EAAWkwD,UAAU9rU,EAAW1sB,GAAQ,QAC1C,GAAyB,oBAAd0sB,EAA0B,CAC1C,IAAIzsB,EAAW9E,GAAK,SAAUs9V,EAAU/3V,GAClC+3V,IAAar6W,KAAKu4W,UACpBf,EAAe1B,WAAWxzV,EAAMy0V,EAAS/hB,GAEzCh1V,KAAK85W,gBAAgB9kB,EAAc4kB,EAAc95V,EAAG6e,EAAG64U,EAAgB51V,EAAQhgB,GAEnF,GAAG5B,MACHA,KAAKu4W,QAAU2B,EACf53V,EAAOgsB,EAAU1sB,EAAQs4V,EAAar4V,EACxC,CAEA21V,EAAe1B,WAAWxzV,EAAMy0V,EAAS/hB,GACzCwiB,EAAe9pU,KAAKsnT,GAEpBh1V,KAAK85W,gBAAgB9kB,EAAc4kB,EAAc95V,EAAG6e,EAAG64U,EAAgB51V,EAAQhgB,EAxB/E,CAyBF,EAYAk4W,gBAAiB,SAAU9kB,EAAc4kB,EAAc95V,EAAG6e,EAAGiG,EAAShjB,EAAQhgB,GAC5E,IAAIo8P,EAAYh+P,KAAKqmT,KAAKhkE,WAEtB4b,EAAaj+P,KAAKqmT,KAAK/jE,YAE3Bs3H,EAAeA,GAAgB5kB,EAAa9xV,IAAI,YAChD,IAAIo3W,EAAc11U,EAAQ2lT,UACtBxwS,EAAQi7S,EAAa9xV,IAAI,SACzBwlU,EAASssB,EAAa9xV,IAAI,iBAC1B+5B,EAAOr7B,GAAMA,EAAGonQ,kBAAkB10O,QAWtC,GAVA1yB,GAAMq7B,EAAKgsO,eAAernQ,EAAGylE,WAED,oBAAjBuyS,IAETA,EAAeA,EAAa,CAAC95V,EAAG6e,GAAI/c,EAAQgjB,EAAQhjC,GAAIq7B,EAAM,CAC5DohO,SAAU,CAACL,EAAWC,GACtBq8G,YAAaA,EAAYn4W,WAIzBmwO,EAAOxrO,QAAQ8yW,GACjB95V,EAAI4hO,EAAak4H,EAAa,GAAI57G,GAClCr/N,EAAI+iN,EAAak4H,EAAa,GAAI37G,QAC7B,GAAI3rB,EAAOhxO,SAASs4W,GAAe,CACxCA,EAAapxU,MAAQ8xU,EAAY,GACjCV,EAAanxU,OAAS6xU,EAAY,GAClC,IAAI5kC,EAAayG,EAAW5+E,cAAcq8G,EAAc,CACtDpxU,MAAOw1N,EACPv1N,OAAQw1N,IAEVn+O,EAAI41T,EAAW51T,EACf6e,EAAI+2S,EAAW/2S,EACfob,EAAQ,KAGR2uR,EAAS,IACX,MACK,GAA4B,kBAAjBkxC,GAA6Bh4W,EAAI,CAC7C,IAAIyM,EAAMksW,EAAoBX,EAAc38U,EAAMq9U,GAClDx6V,EAAIzR,EAAI,GACRswB,EAAItwB,EAAI,EACV,KAAO,CACDA,EAAMmsW,EAAqB16V,EAAG6e,EAAGiG,EAASo5N,EAAWC,EAAYlkN,EAAQ,KAAO,GAAI2uR,EAAS,KAAO,IACxG5oT,EAAIzR,EAAI,GACRswB,EAAItwB,EAAI,EACV,CAKF,GAHA0rC,IAAUj6B,GAAK26V,EAAc1gU,GAASugU,EAAY,GAAK,EAAc,UAAVvgU,EAAoBugU,EAAY,GAAK,GAChG5xC,IAAW/pS,GAAK87U,EAAc/xC,GAAU4xC,EAAY,GAAK,EAAe,WAAX5xC,EAAsB4xC,EAAY,GAAK,GAEhGtlB,EAAa9xV,IAAI,WAAY,CAC3BmL,EAAMqsW,EAAuB56V,EAAG6e,EAAGiG,EAASo5N,EAAWC,GAC3Dn+O,EAAIzR,EAAI,GACRswB,EAAItwB,EAAI,EACV,CAEAu2B,EAAQqB,OAAOnmB,EAAG6e,EACpB,EAGAk7U,+BAAgC,SAAU9tD,GACxC,IAAI4uD,EAAe36W,KAAK63W,oBACpB+C,IAAsBD,GAAgBA,EAAa34W,SAAW+pT,EAAe/pT,OAkBjF,OAjBA44W,GAAqBljQ,EAAKijQ,GAAc,SAAUE,EAAkBC,GAClE,IAAIC,EAAiBF,EAAiBrsD,YAAc,CAAC,EACjDwsD,EAAmBjvD,EAAe+uD,IAAkB,CAAC,EACrDG,EAAiBD,EAAiBxsD,YAAc,GACpDosD,GAAqBG,EAAe/4W,SAAWi5W,EAAej5W,OAC9D44W,GAAqBljQ,EAAKqjQ,GAAgB,SAAU3mD,EAAU8mD,GAC5D,IAAIC,EAAWF,EAAeC,IAAc,CAAC,EACzCE,EAAchnD,EAASzF,mBAAqB,GAC5C0sD,EAAaF,EAASxsD,mBAAqB,GAC/CisD,GAAqBxmD,EAAStyT,QAAUq5W,EAASr5W,OAASsyT,EAASj+Q,WAAaglU,EAAShlU,UAAYi+Q,EAAS3F,SAAW0sD,EAAS1sD,QAAU2sD,EAAYp5W,SAAWq5W,EAAWr5W,OAC9K44W,GAAqBljQ,EAAK0jQ,GAAa,SAAUE,EAAarwW,GAC5D,IAAIswW,EAAaF,EAAWpwW,GAC5B2vW,GAAqBU,EAAY58H,cAAgB68H,EAAW78H,aAAe48H,EAAYznI,YAAc0nI,EAAW1nI,SAClH,GACF,GACF,IACA7zO,KAAK63W,oBAAsB9rD,IAClB6uD,CACX,EACA1C,MAAO,SAAUtwG,GAKf5nQ,KAAK63W,oBAAsB,KAC3BjwG,EAAe,CACbpjQ,KAAM,UACN45D,KAAMp+D,KAAK6N,KAEf,EACA2tO,QAAS,SAAU9I,EAAS/nI,GACtB4kN,EAAIn0O,OAIRp7E,KAAK23W,gBAAgBn8H,UAErB8oE,EAAeM,WAAW,cAAej6M,GAC3C,IAQF,SAASiuQ,EAAkB4C,GACzB,IAAIC,EAAcD,EAAa/iV,MAE/B,MAAO+iV,EAAax5W,OAAQ,CAC1B,IAAIq3T,EAAamiD,EAAa/iV,MAE1B4gS,IACEpiF,EAAM2pC,WAAWy4C,KACnBA,EAAaA,EAAWn2T,IAAI,WAAW,IAQf,kBAAfm2T,IACTA,EAAa,CACX/qR,UAAW+qR,IAIfoiD,EAAc,IAAIxkI,EAAMoiF,EAAYoiD,EAAaA,EAAY/oI,SAEjE,CAEA,OAAO+oI,CACT,CAEA,SAAS5rD,EAAmBr8E,EAAS7oI,GACnC,OAAO6oI,EAAQo0B,gBAAkBt1B,EAAOv1N,KAAK4tF,EAAIi9J,eAAgBj9J,EACnE,CAEA,SAAS6vQ,EAAqB16V,EAAG6e,EAAGiG,EAASo5N,EAAWC,EAAYy9G,EAAMC,GACxE,IAAIryR,EAAO1kD,EAAQqxU,eACfztU,EAAQ8gD,EAAK9gD,MACbC,EAAS6gD,EAAK7gD,OAkBlB,OAhBY,MAARizU,IACE57V,EAAI0oB,EAAQkzU,EAAO19G,EACrBl+O,GAAK0oB,EAAQkzU,EAEb57V,GAAK47V,GAIG,MAARC,IACEh9U,EAAI8J,EAASkzU,EAAO19G,EACtBt/N,GAAK8J,EAASkzU,EAEdh9U,GAAKg9U,GAIF,CAAC77V,EAAG6e,EACb,CAEA,SAAS+7U,EAAuB56V,EAAG6e,EAAGiG,EAASo5N,EAAWC,GACxD,IAAI30K,EAAO1kD,EAAQqxU,eACfztU,EAAQ8gD,EAAK9gD,MACbC,EAAS6gD,EAAK7gD,OAKlB,OAJA3oB,EAAI3Z,KAAKyI,IAAIkR,EAAI0oB,EAAOw1N,GAAax1N,EACrC7J,EAAIx4B,KAAKyI,IAAI+vB,EAAI8J,EAAQw1N,GAAcx1N,EACvC3oB,EAAI3Z,KAAKwI,IAAImR,EAAG,GAChB6e,EAAIx4B,KAAKwI,IAAIgwB,EAAG,GACT,CAAC7e,EAAG6e,EACb,CAEA,SAAS47U,EAAoBzoV,EAAUmL,EAAMq9U,GAC3C,IAAIsB,EAAWtB,EAAY,GACvBuB,EAAYvB,EAAY,GACxB3hU,EAAM,EACN74B,EAAI,EACJ6e,EAAI,EACJokC,EAAY9lC,EAAKuL,MACjBu/B,EAAa9qC,EAAKwL,OAEtB,OAAQ3W,GACN,IAAK,SACHhS,EAAImd,EAAKnd,EAAIijD,EAAY,EAAI64S,EAAW,EACxCj9U,EAAI1B,EAAK0B,EAAIopC,EAAa,EAAI8zS,EAAY,EAC1C,MAEF,IAAK,MACH/7V,EAAImd,EAAKnd,EAAIijD,EAAY,EAAI64S,EAAW,EACxCj9U,EAAI1B,EAAK0B,EAAIk9U,EAAYljU,EACzB,MAEF,IAAK,SACH74B,EAAImd,EAAKnd,EAAIijD,EAAY,EAAI64S,EAAW,EACxCj9U,EAAI1B,EAAK0B,EAAIopC,EAAapvB,EAC1B,MAEF,IAAK,OACH74B,EAAImd,EAAKnd,EAAI87V,EAAWjjU,EACxBha,EAAI1B,EAAK0B,EAAIopC,EAAa,EAAI8zS,EAAY,EAC1C,MAEF,IAAK,QACH/7V,EAAImd,EAAKnd,EAAIijD,EAAYpqB,EACzBha,EAAI1B,EAAK0B,EAAIopC,EAAa,EAAI8zS,EAAY,EAG9C,MAAO,CAAC/7V,EAAG6e,EACb,CAEA,SAAS87U,EAAc1gU,GACrB,MAAiB,WAAVA,GAAgC,WAAVA,CAC/B,CAEA54C,EAAOD,QAAUusB,C,sBCxvBjBjF,EAAQ,OAERA,EAAQ,K,wBCFR,IAAI2qN,EAAU3qN,EAAQ,OAElBqkO,EAAerkO,EAAQ,OAE3BA,EAAQ,OAERA,EAAQ,MAERA,EAAQ,MAERA,EAAQ,OAERA,EAAQ,MAwBR2qN,EAAQ6Z,qBAAqBH,E,uBCpC7B,IAAI1Z,EAAU3qN,EAAQ,OAElBqkO,EAAerkO,EAAQ,OAE3BA,EAAQ,OAERA,EAAQ,MAERA,EAAQ,OAERA,EAAQ,OAERA,EAAQ,MAwBR2qN,EAAQ6Z,qBAAqBH,E,gCCpC7B,IAAIva,EAAS9pN,EAAQ,OAEjBszV,EAAiBtzV,EAAQ,OAEzBmlR,EAAanlR,EAAQ,OAqBrBuzV,EAAoB,CAAC,GAAI,KACzBC,EAAkBF,EAAep4P,OAAO,CAC1Cl/G,KAAM,uBAKNgyO,cAAe,CACbz8L,MAAO,OAEPkiU,YAAY,EAGZrlS,MAAO,KAIPioP,UAAU,EAEVrgE,WAAY,KAEZC,UAAW,KAEXy9G,WAAW,EAEXC,kBAAmB,KAEnBC,kBAAmB,MAQrBv7E,cAAe,SAAU5G,EAAWvoL,GAClCsqQ,EAAgBz6H,WAAWvhP,KAAM,gBAAiB+C,WAClD/C,KAAKq8W,cACLr8W,KAAKs8W,aAAY,SAAUr3C,GACzBA,EAAcx/B,cAAgB,SAC9Bw/B,EAAc9mE,WAAan+P,KAAKkrP,WAClC,IAEAlrP,KAAKu8W,aACP,EAMAC,cAAe,WACbR,EAAgBz6H,WAAWvhP,KAAM,gBAAiB+C,WAClD,IAAIu7P,EAAWt+P,KAAKs+P,SACH,eAAjBt+P,KAAKs0U,SAA4Bh2E,EAAStjO,WAC1B,MAAfsjO,EAAS,IAAcvvP,MAAMuvP,EAAS,OAASA,EAAS,GAAKy9G,EAAkB,KAChE,MAAfz9G,EAAS,IAAcvvP,MAAMuvP,EAAS,OAASA,EAAS,GAAKy9G,EAAkB,GAClF,EAKAQ,YAAa,WACX,IAAIp+G,EAAan+P,KAAKkrP,YAClBt0K,EAAQ52E,KAAK+qC,OAAO6rC,OAEnBA,GAASA,EAAM6lS,MAGlBt+G,EAAWs+G,KAAO,EAClBz8W,KAAK+qC,OAAO6rC,MAAQunL,GACX7rB,EAAOxrO,QAAQ8vE,KACpBA,EAAM,GAAKA,EAAM,IACnBA,EAAM57C,UAGR47C,EAAM,GAAKzwE,KAAKwI,IAAIioE,EAAM,GAAIunL,EAAW,IACzCvnL,EAAM,GAAKzwE,KAAKyI,IAAIgoE,EAAM,GAAIunL,EAAW,IAE7C,EAMAu+G,qBAAsB,WACpBZ,EAAev0W,UAAUm1W,qBAAqB55W,MAAM9C,KAAM+C,WAC1DuvO,EAAO56H,KAAK13G,KAAK28W,WAAW,SAAUvmW,GACpC,IAAIwqO,EAAa5gP,KAAK+qC,OAAO89N,WAAWzyP,GAAOwqO,WAE3CA,GAAcA,EAAW,KAAOA,EAAW,KAC7CA,EAAW,GAAK,EAEpB,GAAG5gP,KACL,EAKA48W,YAAa,SAAUzqP,GACrBnyH,KAAK+qC,OAAO6rC,MAAQu7C,EAAShwH,QAE7BnC,KAAKu8W,aACP,EAKAM,YAAa,WACX,IAAI1+G,EAAan+P,KAAKkrP,YAClBitF,EAAexqC,EAAWi8B,KAAK5pU,KAAKkD,IAAI,UAAY,IAAIf,SAM5D,OAJAg2U,EAAa,GAAKh6E,EAAW,KAAOg6E,EAAa,GAAKh6E,EAAW,IACjEg6E,EAAa,GAAKh6E,EAAW,KAAOg6E,EAAa,GAAKh6E,EAAW,IACjEg6E,EAAa,GAAKh6E,EAAW,KAAOg6E,EAAa,GAAKh6E,EAAW,IACjEg6E,EAAa,GAAKh6E,EAAW,KAAOg6E,EAAa,GAAKh6E,EAAW,IAC1Dg6E,CACT,EAKA1S,cAAe,SAAU3jU,GACvB,IAAI80E,EAAQ52E,KAAK+qC,OAAO6rC,MACpBunL,EAAan+P,KAAKkrP,YAGtB,OAAQt0K,EAAM,IAAMunL,EAAW,IAAMvnL,EAAM,IAAM90E,KAAW80E,EAAM,IAAMunL,EAAW,IAAMr8P,GAAS80E,EAAM,IAAM,UAAY,YAC5H,EAMAkmS,sBAAuB,SAAUlmS,GAC/B,IAAIlzE,EAAS,GAYb,OAXA1D,KAAK8wQ,kBAAiB,SAAUl9B,GAC9B,IAAIi5D,EAAc,GACd5tR,EAAO20N,EAAY7oI,UACvB9rF,EAAKy4F,KAAK13G,KAAK+8W,iBAAiB99V,IAAO,SAAUnd,EAAO+xO,GACtDj9J,EAAM,IAAM90E,GAASA,GAAS80E,EAAM,IAAMi2N,EAAY5oS,KAAK4vO,EAC7D,GAAG7zO,MACH0D,EAAOO,KAAK,CACV8vO,SAAUH,EAAYpqO,GACtBqqO,UAAWg5D,GAEf,GAAG7sS,MACI0D,CACT,EAKAs5W,cAAe,SAAUC,GACvB,IAAIC,EAAQC,EAAmBn9W,KAAM,aAAcA,KAAKkrP,aACpDkyH,EAAQD,EAAmBn9W,KAAM,UAAWA,KAAK+qC,OAAO6rC,MAAMz0E,SAC9D6mR,EAAQ,GAEZ,SAASq0F,EAAQv7W,EAAOw7W,GACtBt0F,EAAM/kR,KAAK,CACTnC,MAAOA,EACP8uB,MAAOqsV,EAAen7W,EAAOw7W,IAEjC,CAQA,IALA,IAAIC,EAAO,EACPC,EAAO,EACPC,EAAOL,EAAMp7W,OACb07W,EAAOR,EAAMl7W,OAEVw7W,EAAOE,KAAUN,EAAMp7W,QAAUk7W,EAAMM,IAASJ,EAAM,IAAKI,IAE5DN,EAAMM,GAAQJ,EAAMG,IACtBF,EAAQH,EAAMM,GAAO,cAIzB,IAAK,IAAIxoS,EAAQ,EAAGuoS,EAAOE,EAAMF,IAAQvoS,EAAQ,EAG/CA,GAASg0M,EAAMhnR,QAAUq7W,EAAQD,EAAMG,GAAO,cAC9CF,EAAQD,EAAMG,GAAO,WAGvB,IAASvoS,EAAQ,EAAGwoS,EAAOE,EAAMF,MAC1BJ,EAAMp7W,QAAUo7W,EAAMA,EAAMp7W,OAAS,GAAKk7W,EAAMM,MAE/CxoS,IACFg0M,EAAMhnR,QAAUq7W,EAAQr0F,EAAMA,EAAMhnR,OAAS,GAAGF,MAAO,cACvDkzE,EAAQ,GAGVqoS,EAAQH,EAAMM,GAAO,eAIzB,IAAIG,EAAW30F,EAAMhnR,OACrB,MAAO,CACLgnR,MAAOA,EACPE,YAAa,CAACy0F,EAAW30F,EAAM,GAAGp4P,MAAQ,cAAe+sV,EAAW30F,EAAM20F,EAAW,GAAG/sV,MAAQ,eAEpG,IAGF,SAASusV,EAAmBrrG,EAAgBwrG,EAAYn/G,GACtD,GAAIA,EAAW,KAAOA,EAAW,GAC/B,OAAOA,EAAWh8P,QAYpB,IALA,IAAIomB,EAAQ,IACR9Y,GAAQ0uP,EAAW,GAAKA,EAAW,IAAM51O,EACzCzmB,EAAQq8P,EAAW,GACnBy/G,EAAa,GAER55W,EAAI,EAAGA,GAAKukB,GAASzmB,EAAQq8P,EAAW,GAAIn6P,IACnD45W,EAAW35W,KAAKnC,GAChBA,GAAS2N,EAIX,OADAmuW,EAAW35W,KAAKk6P,EAAW,IACpBy/G,CACT,CAEA,IAAInwV,EAAWuuV,EACf76W,EAAOD,QAAUusB,C,iCC7PjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB+gQ,EAAiB/gQ,EAAQ,OAEzBs8R,EAAYt8R,EAAQ,OAEpBq1V,EAAgBr1V,EAAQ,MAExBsuN,EAAUtuN,EAAQ,OAElBmlR,EAAanlR,EAAQ,OAErBmhT,EAAanhT,EAAQ,OAErByhR,EAASzhR,EAAQ,OAEjB6+P,EAAY7+P,EAAQ,OAoBpB60O,EAAYswC,EAAWtwC,UACvB3lJ,EAAO46H,EAAO56H,KACdikI,EAAUx1O,KAAKyI,IACf8sO,EAAUv1O,KAAKwI,IAEfmvW,EAAkB,GAClBC,EAAiB,EAQjBC,EAAiBH,EAAcn6P,OAAO,CACxCl/G,KAAM,uBAKNkzD,KAAM,WACJsmT,EAAez8H,WAAWvhP,KAAM,OAAQ+C,WAKxC/C,KAAKi+W,QAAU,CAAC,EAKhBj+W,KAAKk+W,cAAgB,GAKrBl+W,KAAKu0U,YAAc,GAKnBv0U,KAAKs0U,QAKLt0U,KAAKm+W,WAKLn+W,KAAKo+W,sBAAwB,GAK7Bp+W,KAAK+lT,UAKL/lT,KAAKq+W,SACP,EAMAC,SAAU,SAAUxsG,EAAgBp/B,EAAS/nI,EAAK6oI,GAC3CA,GAA4B,oBAAjBA,EAAQhvO,MAA8BgvO,EAAQp1K,OAASp+D,KAAK6N,KAC1E7N,KAAK60U,YAET,EAKAA,WAAY,WACV70U,KAAKk7C,MAAMigM,YACX,IAAI22B,EAAiB9xQ,KAAK8xQ,eACtB+iC,EAAY70S,KAAKk7C,MACrBl7C,KAAKs0U,QAAUxiE,EAAe5uQ,IAAI,UAClClD,KAAKm+W,WAAarsG,EAAe5uQ,IAAI,cAErClD,KAAKg1U,iBAELh1U,KAAKu+W,WAAW1pE,GAEhB,IAAI2pE,EAAgB1sG,EAAe5uQ,IAAI,QAEvClD,KAAKy+W,gBAAgB5pE,EAAW2pE,EAAe,GAE/Cx+W,KAAKy+W,gBAAgB5pE,EAAW2pE,EAAe,GAG/Cx+W,KAAK80U,aAAY,GAIjB90U,KAAK28S,iBAAiB9H,GAEtB70S,KAAK80U,cAEL90U,KAAK0+W,2BAEL1+W,KAAK2+W,6BAEL3+W,KAAK4+W,cAAc/pE,EACrB,EAKA4pE,gBAAiB,SAAUvjU,EAAOsjU,EAAeK,GAC/C,GAAKL,EAAL,CAKA,IAAI7hV,EAAO6hV,EAAc,EAAIK,GAC7BliV,EAAe,MAARA,EAAeA,EAAO,GAAK,GAClC,IAAIm1O,EAAiB9xQ,KAAK8xQ,eACtBgtG,EAAUhtG,EAAe5uQ,IAAI,WAC7Bo7P,EAAWwT,EAAexT,SAC1B22E,EAAWj1U,KAAKi+W,QAAQhpC,SAExBnjT,EAAW9xB,KAAK++W,gBAAgB,CAACzgH,EAAS,GAAK,EAAiB,IAAdugH,GAAmBC,EAAUxgH,EAAS,GAAKwgH,GAAU7pC,GAEvGl7R,EAAQ/5C,KAAK++W,gBAA8B,IAAdF,EAAkB,SAAW,MAAO5pC,GAEjErjS,EAAS5xC,KAAKs0U,QACdv/B,EAAiB/0S,KAAK8xQ,eAAeijC,eACzC/0S,KAAKk7C,MAAM36C,IAAI,IAAIu2O,EAAQoc,KAAK,CAC9BtnP,MAAO,CACLkU,EAAGgS,EAAS,GACZ6M,EAAG7M,EAAS,GACZirO,kBAA8B,eAAXnrN,EAA0B,SAAWmI,EACxD1f,UAAsB,eAAXuX,EAA0BmI,EAAQ,SAC7Cpd,KAAMA,EACNg5Q,SAAUZ,EAAex+C,UACzB/zB,SAAUuyE,EAAe/5B,kBAxB7B,CA2BF,EAKAujG,WAAY,SAAUzZ,GACpB,IAAIhzF,EAAiB9xQ,KAAK8xQ,eACtBt4N,EAASx5C,KAAKi+W,QACd3/G,EAAWwT,EAAexT,SAC1B1sN,EAAS5xC,KAAKs0U,QACdxlB,EAAY9uT,KAAKm+W,WACjB1qB,EAAYxpD,EAAO+0E,aAAaltG,EAAgB9xQ,KAAK2qG,IAAK2zJ,GAE1D22E,EAAWz7R,EAAOy7R,SAAWj1U,KAAKi/W,gBAAgBxrB,GAGtDxe,EAAS10U,IAAIi5C,EAAO24N,WAAa+sG,KACjCjqC,EAAS10U,IAAIi5C,EAAOy4N,QAAUitG,EAAc,KAAMpwD,EAAYkoB,EAAUh3U,KAAKs0U,SAAW,KAAMhiG,EAAOv1N,KAAK/c,KAAKm/W,YAAan/W,KAAM,OAAO,GAAQsyO,EAAOv1N,KAAK/c,KAAKm/W,YAAan/W,KAAM,OAAO,KAC5L,IAAI49R,EAAW9rB,EAAeijC,eAAeQ,YAAY,KACrD6pE,EAAW1jI,EAAQkiD,EAASp1P,MAAOo1P,EAASn1P,QAE5CqmR,IACFt1Q,EAAO6lU,aAAe,GACtB7lU,EAAOs9R,aAAe,GACtBt9R,EAAO8lU,kBAAoB,GAE3Bt/W,KAAKu/W,cAActqC,EAAU,EAAG32E,EAAU8gH,EAAUxtU,EAAQ6hT,GAE5DzzV,KAAKu/W,cAActqC,EAAU,EAAG32E,EAAU8gH,EAAUxtU,EAAQ6hT,IAG9DzzV,KAAKw/W,iBAAiBvqC,EAAU32E,EAAU8gH,EAAUxtU,GAEpDkzT,EAAYvkW,IAAI00U,EAClB,EAKAsqC,cAAe,SAAUtqC,EAAUsC,EAAaj5E,EAAU8gH,EAAUxtU,GAClE,IAAI6tU,EAAUntI,EAAOv1N,KAAK/c,KAAKm/W,YAAan/W,KAAMu3U,GAAa,GAC3DmoC,EAAYptI,EAAOv1N,KAAK/c,KAAKm/W,YAAan/W,KAAMu3U,GAAa,GAC7DooC,EAAcT,EAAcU,EAAmBroC,EAAa6nC,GAAWpoC,EAAUh3U,KAAKs0U,SAAUmrC,EAASC,GAC7GC,EAAY7tV,SAAS,GAAKwsO,EAAS,GACnC22E,EAAS10U,IAAIo/W,GAKb,IAAI5qE,EAAiB/0S,KAAK8xQ,eAAeijC,eACrC8qE,EAAc,IAAI/oI,EAAQoc,KAAK,CACjC+R,WAAW,EACX8X,MAAO0iG,EACPh4D,YAAa,SAAUxhT,GAErB6+S,EAAUhtR,KAAK7xB,EAAEod,MACnB,EACA++Q,UAAWs9E,EACX9zW,MAAO,CACLkU,EAAG,EACH6e,EAAG,EACHhC,KAAM,GACNg5Q,SAAUZ,EAAex+C,UACzB/zB,SAAUuyE,EAAe/5B,kBAG7Bh7Q,KAAKk7C,MAAM36C,IAAIs/W,GACf,IAAIC,EAAmB,CAAY,eAAXluU,EAA0BwtU,EAAW,EAAe,IAAXA,EAA2B,eAAXxtU,EAA0C,IAAhB2lS,GAAiC,IAAX6nC,EAA6B,IAAXA,EAAiC,IAAhB7nC,GAAqB6nC,EAAW,EAAIA,EAAW,GAC/M5lU,EAASx5C,KAAKi+W,QAClBzkU,EAAO6lU,aAAa9nC,GAAeooC,EACnCnmU,EAAO8lU,kBAAkB/nC,GAAeuoC,EACxCtmU,EAAOs9R,aAAaS,GAAesoC,CACrC,EAKAL,iBAAkB,SAAUvqC,EAAU32E,EAAU8gH,EAAUxtU,GACxD,IAAIuf,EAAY+tT,EAAc,CAAC,CAAC,EAAG,IAAK,QACxC/tT,EAAUr/B,SAAS,GAAKwsO,EAAS,GACjCntM,EAAUt6B,KAAK,CACbk9N,WAAW,EACX5kG,QAAQ,IAEV8lL,EAAS10U,IAAI4wD,GACb,IAAI4jP,EAAiB/0S,KAAK8xQ,eAAeijC,eACrCgrE,EAAiB,IAAIjpI,EAAQoc,KAAK,CACpC/jG,QAAQ,EACR4kG,WAAW,EACXnoP,MAAO,CACLkU,EAAG,EACH6e,EAAG,EACHhC,KAAM,GACNg5Q,SAAUZ,EAAex+C,UACzB/zB,SAAUuyE,EAAe/5B,kBAG7Bh7Q,KAAKk7C,MAAM36C,IAAIw/W,GACf,IAAIC,EAAsB,CAAY,eAAXpuU,EAA0BwtU,EAAW,EAAIrB,EAAiB,EAAG,GACpFvkU,EAASx5C,KAAKi+W,QAClBzkU,EAAO2X,UAAYA,EACnB3X,EAAOumU,eAAiBA,EACxBvmU,EAAOwmU,oBAAsBA,CAC/B,EAKAb,YAAa,SAAU5nC,EAAazY,EAAOn5P,EAAIC,GAC7C,GAAK5lE,KAAKm+W,WAAV,CAMA,GAFAn+W,KAAK+lT,WAAa+Y,GAEbA,EAAO,CAEV,IAAI6Z,EAAS34U,KAAK++W,gBAAgB,CAACp5S,EAAIC,GAAK5lE,KAAKi+W,QAAQhpC,UAAU,GAEnEj1U,KAAK23U,gBAAgBJ,EAAaoB,EAAO,IAIzC34U,KAAK80U,aACP,CAGIhW,KAAW9+T,KAAK8xQ,eAAe5uQ,IAAI,aAErClD,KAAK2qG,IAAIi9J,eAAe,CACtBpjQ,KAAM,kBACN45D,KAAMp+D,KAAK6N,IACXoyW,YAAajgX,KAAK8xQ,eAAetoQ,GACjC2oH,SAAUnyH,KAAKk+W,cAAc/7W,UAI7B28T,GACD9+T,KAAKq+W,WAAar+W,KAAKkgX,0BACfC,EAAqBngX,KAAK8xQ,iBACnC9xQ,KAAKogX,qBAAqBpgX,KAAKu0U,YAAYgD,IAAc,EA7B3D,CA+BF,EAKAvC,eAAgB,WACd,IAAIljE,EAAiB9xQ,KAAK8xQ,eACtBqmE,EAAen4U,KAAKk+W,cAAgBpsG,EAAe+qG,cACnD1+G,EAAa2T,EAAe5mB,YAC5BgT,EAAa,CAAC,EAAG4T,EAAexT,SAAS,IAC7Ct+P,KAAKu0U,YAAc,CAACl3E,EAAU86E,EAAa,GAAIh6E,EAAYD,GAAY,GAAOb,EAAU86E,EAAa,GAAIh6E,EAAYD,GAAY,GACnI,EAQAy5E,gBAAiB,SAAUJ,EAAa9wP,GACtCA,EAAQA,GAAS,EACjB,IAAIqrL,EAAiB9xQ,KAAK8xQ,eACtB8lE,EAAa53U,KAAKu0U,YAClBr2E,EAAa,CAAC,EAAG4T,EAAexT,SAAS,IAC7CqrE,EAAWljP,EAAOmxP,EAAY15E,EAAYq5E,EAC1C,GACA,IAAIp5E,EAAa2T,EAAe5mB,YAEhClrP,KAAKk+W,cAAgB,CAAC7gH,EAAUu6E,EAAW,GAAI15E,EAAYC,GAAY,GAAOd,EAAUu6E,EAAW,GAAI15E,EAAYC,GAAY,GACjI,EAKA22E,YAAa,SAAUurC,GACrB,IAAIvuG,EAAiB9xQ,KAAK8xQ,eACtB3T,EAAa2T,EAAe5mB,YAC5B1xM,EAASx5C,KAAKi+W,QACdqC,EAAuB,CAAC,EAAGxuG,EAAexT,SAAS,IACnDiiH,EAAoBF,EAAYC,EAAuBtgX,KAAKu0U,YAE5DisC,EAAgBxgX,KAAKygX,iBAAiBzgX,KAAKk+W,cAAe//G,EAAYoiH,EAAmB,WAEzFG,EAAmB1gX,KAAKygX,iBAAiBtiH,EAAYA,EAAYmiH,EAAsB,cAE3F9mU,EAAOy4N,QAAQpmF,SAAS,CACtB9hK,KAAMy2V,EAAcG,SACpBrnV,QAASknV,EAAclnV,UACtB6gN,SAAS,SAAUqmI,EAAcI,WACpCpnU,EAAO24N,WAAWtmF,SAAS,CACzB9hK,KAAM22V,EAAiBC,SACvBrnV,QAASonV,EAAiBpnV,UACzB6gN,SAAS,SAAUumI,EAAiBE,WAEvC5gX,KAAK6gX,cAAcN,EAAmBC,EACxC,EAKAC,iBAAkB,SAAUtoC,EAAch6E,EAAYy5E,EAAYkpC,GAChE,IAAI38Q,EAAO,CACT28Q,WAAYA,EACZC,uBAAuB,GAGrBh4F,EAAa/oR,KAAKghX,mBAAmB7oC,EAAch0O,GAEnD88Q,EAAc,CAACjhX,KAAKkhX,oBAAoB/oC,EAAa,GAAI,aAAch0O,GAAOnkG,KAAKkhX,oBAAoB/oC,EAAa,GAAI,aAAch0O,IAEtIy8Q,EAAY5gX,KAAKmhX,iBAAiBvpC,EAAYqpC,GAElD,MAAO,CACLN,SAAU,IAAIp3F,EAAe,EAAG,EAAG,EAAG,EAAGR,GACzC63F,UAAWA,EACXQ,aAAc,CAACr4F,EAAW,GAAGn4P,MAAOm4P,EAAWA,EAAW/mR,OAAS,GAAG4uB,OAE1E,EAKAowV,mBAAoB,SAAU7oC,EAAch0O,GAI1C,IAAIk9Q,EAAe,IAEft4F,EAAa,GACbt5Q,GAAQ0oU,EAAa,GAAKA,EAAa,IAAMkpC,EACjDt4F,EAAW9kR,KAAK,CACd2sB,MAAO5wB,KAAKkhX,oBAAoB/oC,EAAa,GAAI,QAASh0O,GAC1Dh3E,OAAQ,IAGV,IAAK,IAAInpB,EAAI,EAAGA,EAAIq9W,EAAcr9W,IAAK,CACrC,IAAIs9W,EAAYnpC,EAAa,GAAK1oU,EAAOzL,EAEzC,GAAIs9W,EAAYnpC,EAAa,GAC3B,MAGFpvD,EAAW9kR,KAAK,CACd2sB,MAAO5wB,KAAKkhX,oBAAoBI,EAAW,QAASn9Q,GACpDh3E,OAAQnpB,EAAIq9W,GAEhB,CAMA,OAJAt4F,EAAW9kR,KAAK,CACd2sB,MAAO5wB,KAAKkhX,oBAAoB/oC,EAAa,GAAI,QAASh0O,GAC1Dh3E,OAAQ,IAEH47P,CACT,EAKAo4F,iBAAkB,SAAUvpC,EAAYqpC,GACtC,IAAI3iH,EAAWt+P,KAAK8xQ,eAAexT,SACnC,MAAO,CAAC,CAACA,EAAS,GAAK2iH,EAAY,GAAIrpC,EAAW,IAAK,CAACt5E,EAAS,GAAIs5E,EAAW,IAAK,CAACt5E,EAAS,GAAIs5E,EAAW,IAAK,CAACt5E,EAAS,GAAK2iH,EAAY,GAAIrpC,EAAW,IAC/J,EAKAqnC,gBAAiB,SAAUxrB,GACzB,IAAI7hT,EAAS5xC,KAAKs0U,QACdrgB,EAAUj0T,KAAK8xQ,eAAe5uQ,IAAI,WACtC,OAAO,IAAI4zO,EAAQM,MAAiB,eAAXxlM,GAA4BqiR,EAGtC,eAAXriR,GAA2BqiR,EAAU,CACvC59R,MAAqB,WAAdo9T,EAAyB,EAAE,EAAG,GAAK,CAAC,EAAG,GAC9Cx/L,UAAW9tJ,KAAK40B,GAAK,GACR,aAAX6W,GAA0BqiR,EAE1B,CACF59R,MAAqB,SAAdo9T,EAAuB,CAAC,EAAG,GAAK,EAAE,EAAG,IAHN,CACtCp9T,MAAqB,SAAdo9T,EAAuB,CAAC,GAAI,GAAK,EAAE,GAAI,IAPe,CAC7Dp9T,MAAqB,WAAdo9T,EAAyB,CAAC,EAAG,GAAK,EAAE,EAAG,GAC9Cx/L,SAAU9tJ,KAAK40B,GAAK,GASxB,EAKA8lV,cAAe,SAAUjpC,EAAY4oC,GACnC,GAAKxgX,KAAKm+W,WAAV,CAIA,IAAI3kU,EAASx5C,KAAKi+W,QACdnsG,EAAiB9xQ,KAAK8xQ,eACtButG,EAAe7lU,EAAO6lU,aACtBvoC,EAAet9R,EAAOs9R,aAC1Bp/N,EAAK,CAAC,EAAG,IAAI,SAAU6/N,GACrB,IAAIooC,EAAcN,EAAa9nC,GAC/BooC,EAAY9zL,SAAS,OAAQ20L,EAAcY,aAAa7pC,IACxDooC,EAAY7tV,SAAS,GAAK8lT,EAAWL,GAErC,IAAIiB,EAAY1hG,EAAQmyB,eAAezvN,EAAO8lU,kBAAkB/nC,GAAczgG,EAAQh5J,aAAa6hS,EAAa3/W,KAAKk7C,QACrH47R,EAAaS,GAAa1rJ,SAAS,CACjC/rK,EAAG04T,EAAU,GACb75S,EAAG65S,EAAU,GACb77S,KAAMm1O,EAAeyvG,gBAAgBvhX,KAAKk+W,cAAc3mC,IACxDx6E,kBAAmB,SACnB1iO,UAAWr6B,KAAK++W,gBAAiC,eAAjB/+W,KAAKs0U,QAA2C,IAAhBiD,EAAoB,SAAW,MAAQ,OAAQ/9R,EAAOy7R,WAE1H,GAAGj1U,KAnBH,CAoBF,EASAwhX,eAAgB,SAAUC,EAAaC,EAAWC,EAAaC,GAC7D,IAAI9vG,EAAiB9xQ,KAAK8xQ,eACtB3T,EAAa2T,EAAe5mB,YAC5BoT,EAAWwT,EAAexT,SAC1BJ,EAAa,CAAC,EAAGI,EAAS,IAC1BjwP,EAAMgvP,EAAUokH,EAAatjH,EAAYD,GAAY,GACrD1kN,EAASx5C,KAAKi+W,QACd9sT,EAAY3X,EAAO2X,UAEvB,GAAKA,EAAL,CAIAA,EAAUr/B,SAAS,GAAKzjB,EACxB8iD,EAAUt6B,KAAK,aAAa,GAC5Bs6B,EAAUgpL,SAAS,SAAU0nI,IAAwBF,EAAaC,EAAmBvzW,EAAKiwP,EAAS,KACnG,IAAIn6J,EAAO,CACT48Q,uBAAuB,GAErBnwV,EAAQ5wB,KAAKkhX,oBAAoBO,EAAa,QAASt9Q,GAC3DhzC,EAAU06H,SAAS,OAAQj7J,GAE3B,IAAI4nT,EAAY1hG,EAAQmyB,eAAezvN,EAAOwmU,oBAAqBlpI,EAAQh5J,aAAa3sB,EAAWnxD,KAAKk7C,QACpG6kU,EAAiBvmU,EAAOumU,eAC5BA,EAAelpV,KAAK,aAAa,GAEjC,IAAIkjB,EAAQ/5C,KAAK++W,gBAAgB,OAAQvlU,EAAOy7R,UAE5CrjS,EAAS5xC,KAAKs0U,QAClByrC,EAAel0L,SAAS,CACtBlvJ,MAAOglV,GAA4B,IAAM7vG,EAAeyvG,gBAAgBG,GACxE3kH,kBAA8B,eAAXnrN,EAA0BmI,EAAQ,SACrD1f,UAAsB,eAAXuX,EAA0B,SAAWmI,EAChDj6B,EAAG04T,EAAU,GACb75S,EAAG65S,EAAU,IAvBf,CAyBF,EAKAkmC,yBAA0B,WACxB,IAAIt4W,EAAOpG,KAEXA,KAAKi+W,QAAQhpC,SAASxxQ,GAAG,aAAa,SAAUx9D,GAG9C,GAFAG,EAAKi4W,WAAY,GAEZj4W,EAAK2/S,UAAW,CACnB,IAAIznD,EAAWl4P,EAAK0rQ,eAAexT,SAE/BjwP,EAAMjI,EAAK24W,gBAAgB,CAAC94W,EAAE2rB,QAAS3rB,EAAE4rB,SAAUzrB,EAAK63W,QAAQhpC,UAAU,GAAM,GAIpF5mU,EAAI,GAAKstO,EAAQD,EAAQ,EAAGrtO,EAAI,IAAKiwP,EAAS,IAE9Cl4P,EAAKg6W,qBAAqB/xW,EAAI,GAAI,GAAKA,EAAI,IAAMA,EAAI,IAAMiwP,EAAS,GACtE,CACF,IAAG76L,GAAG,YAAY,WAGhBr9D,EAAKi4W,WAAY,GAChBj4W,EAAK2/S,WAAa3/S,EAAK85W,yBAC1B,GACF,EAKAvB,2BAA4B,WAC1B,IAAIxsF,EAAKnyR,KAAK2qG,IAAIoqJ,QAEd/0P,KAAK8xQ,eAAe/mO,OAAOmxU,WAC7B/pF,EAAG1uN,GAAG,YAAazjE,KAAK8hX,8BAA+B9hX,MACvDmyR,EAAG1uN,GAAG,WAAYzjE,KAAK+hX,eAAgB/hX,OAEvCA,KAAKgiX,2BAET,EAKA5B,qBAAsB,SAAU6B,EAAWC,GACzC,IAAIpwG,EAAiB9xQ,KAAK8xQ,eACtBxT,EAAWwT,EAAexT,SAE9B,GAAKwT,EAAe/mO,OAAOmxU,UAA3B,CAIA,IAAIh+G,EAAa,CAAC,EAAGI,EAAS,IAC1BH,EAAa2T,EAAe5mB,YAEhC+2H,EAAYtmI,EAAQD,EAAQwiB,EAAW,GAAI+jH,GAAY/jH,EAAW,IAClE,IAAI0jH,EAAoBO,EAAqBrwG,EAAgB3T,EAAYD,GACrEkkH,EAAa,CAACH,EAAYL,EAAmBK,EAAYL,GACzDH,EAAcpkH,EAAU4kH,EAAW/jH,EAAYC,GAAY,GAC3Dm7E,EAAa,CAACj8E,EAAU+kH,EAAW,GAAIlkH,EAAYC,GAAY,GAAOd,EAAU+kH,EAAW,GAAIlkH,EAAYC,GAAY,IAG3HikH,EAAW,GAAKlkH,EAAW,KAAOo7E,EAAW,IAAMzmP,KACnDuvR,EAAW,GAAKlkH,EAAW,KAAOo7E,EAAW,GAAKzmP,KAG9CqvR,IACE5oC,EAAW,MAAQzmP,IACrB7yF,KAAKwhX,eAAeC,EAAanoC,EAAW,GAAI,KAAMsoC,GAC7CtoC,EAAW,KAAOzmP,IAC3B7yF,KAAKwhX,eAAeC,EAAanoC,EAAW,GAAI,KAAMsoC,GAEtD5hX,KAAKwhX,eAAeC,EAAaA,EAAa,KAAMG,IAUxD,IAAIS,EAAWriX,KAAKo+W,sBAChBkE,EAAW,IAEXJ,GAAc/B,EAAqBruG,MACrCwwG,EAAWtiX,KAAKo+W,sBAAwBtsG,EAAegrG,sBAAsBxjC,IAG/E,IAAIipC,EAAgBl7F,EAAUm7F,gBAAgBH,EAAUC,GAExDtiX,KAAKyiX,kBAAkB,WAAYx4E,EAAOy4E,kBAAkBH,EAAc,GAAIzwG,IAE9E9xQ,KAAKyiX,kBAAkB,YAAax4E,EAAOy4E,kBAAkBH,EAAc,GAAIzwG,GA3C/E,CA4CF,EAKAgwG,8BAA+B,SAAU77W,GACvC,IAAIrE,EAAKqE,EAAEP,OACPosQ,EAAiB9xQ,KAAK8xQ,eAE1B,GAAKlwQ,GAAsB,MAAhBA,EAAGiyO,UAAd,CAIA,IAAI2oH,EAAYx8V,KAAK0yO,QAAQ48E,iBAAiB1tT,EAAG88O,aAEjD,GAAKozB,EAAe6wG,eAAenmB,GAAnC,CAIA,IAAIv9U,EAAOu9U,EAAUzxP,QAAQnpG,EAAG62P,UAC5B32P,EAAQmd,EAAK/b,IAAI4uQ,EAAeirG,iBAAiB99V,GAAOrd,EAAGiyO,WAAW,GAErE9kO,MAAMjN,IACT9B,KAAKwhX,eAAe1/W,EAAOA,EAN7B,CANA,CAcF,EAKAigX,eAAgB,WACd,IAAIvoU,EAASx5C,KAAKi+W,QAClBzkU,EAAO2X,WAAa3X,EAAO2X,UAAUt6B,KAAK,aAAa,GACvD2iB,EAAOumU,gBAAkBvmU,EAAOumU,eAAelpV,KAAK,aAAa,EACnE,EAKAqpV,wBAAyB,WACvBlgX,KAAK+hX,iBAEL,IAAI/qO,EAAUh3I,KAAKo+W,sBAEnBp+W,KAAKyiX,kBAAkB,WAAYx4E,EAAOy4E,kBAAkB1rO,EAASh3I,KAAK8xQ,iBAE1E96H,EAAQh1I,OAAS,CACnB,EAKAggX,0BAA2B,WACzBhiX,KAAK+hX,iBAEL,IAAI5vF,EAAKnyR,KAAK2qG,IAAIoqJ,QAClBo9B,EAAGn2M,IAAI,YAAah8E,KAAK8hX,+BACzB3vF,EAAGn2M,IAAI,WAAYh8E,KAAK+hX,eAC1B,EAKAhD,gBAAiB,SAAUpmC,EAAQ9+N,EAASo6M,EAAS/vT,GACnD,IAAImjE,EAAYyvK,EAAQh5J,aAAa+7B,EAAS31G,EAAS,KAAOlE,KAAKk7C,OACnE,OAAO47L,EAAQxE,EAAOxrO,QAAQ6xU,GAAU,iBAAmB,sBAAsBA,EAAQtxQ,EAAW4sP,EACtG,EAKAwuD,kBAAmB,SAAUj+W,EAAM6oK,GACjCA,GAASA,EAAMrrK,QAAUhC,KAAK2qG,IAAIi9J,eAAe,CAC/CpjQ,KAAMA,EACN6oK,MAAOA,GAEX,EAKAmuE,QAAS,WACPx7O,KAAKgiX,4BAELhiX,KAAKkgX,yBACP,EAKAtjS,OAAQ,WACN58E,KAAKgiX,4BAELhiX,KAAKkgX,yBACP,IAGF,SAAShB,EAAcxzV,EAAQgH,EAAQ+sV,EAASC,GAC9C,OAAO,IAAI5oI,EAAQ+kB,QAAQ,CACzBrmO,MAAO,CACL9J,OAAQA,GAEVu5O,YAAaw6G,EACb/sV,OAAQA,EACRqqP,MAAO0iG,EACPh4D,YAAa,SAAUxhT,GAErB6+S,EAAUhtR,KAAK7xB,EAAEod,MACnB,EACA++Q,UAAWs9E,GAEf,CAEA,SAASE,EAAmBroC,EAAa6nC,GACvC,OAAuB,IAAhB7nC,EAAoB,CAAC,CAAC,EAAG,GAAI,CAAC6nC,EAAU,GAAI,CAACA,GAAWA,IAAa,CAAC,CAAC,EAAG,GAAI,CAACA,EAAU,GAAI,CAACA,EAAUA,GACjH,CAEA,SAASyC,EAAsBe,EAAShB,EAAmBvzW,EAAKw0W,GAC9D,OAAOD,EAAU,CACjB,CAAC,GAAIjnI,EAAQimI,EAAmBlmI,EAAQrtO,EAAK,KAAM,CAAC0vW,EAAgB,GAAI,CAAC,EAAGpiI,EAAQimI,EAAmBlmI,EAAQmnI,EAAYx0W,EAAK,MAAQ,CACxI,CAAC,EAAG,GAAI,CAAC,GAAI,GAAI,CAAC,EAAG,GACvB,CAEA,SAAS8zW,EAAqBrwG,EAAgB3T,EAAYD,GACxD,IAAI0jH,EAAoB9D,EAAkB,EACtC3B,EAAoBrqG,EAAe5uQ,IAAI,qBAM3C,OAJIi5W,IACFyF,EAAoBvkH,EAAU8+G,EAAmBh+G,EAAYD,GAAY,GAAQ,GAG5E0jH,CACT,CAEA,SAASzB,EAAqBruG,GAC5B,IAAIsqG,EAAoBtqG,EAAe5uQ,IAAI,qBAC3C,SAA+B,MAArBk5W,EAA4BtqG,EAAe5uQ,IAAI,YAAck5W,EACzE,CAEA,SAASplC,EAAUplS,GACjB,MAAkB,aAAXA,EAAwB,YAAc,WAC/C,CAEA,IAAInkB,EAAWuwV,EACf78W,EAAOD,QAAUusB,C,iCCvwBjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB8pN,GAFU7+L,EAAQojM,QAETruN,EAAQ,QAEjBszV,EAAiBtzV,EAAQ,OAEzBg9Q,EAAgBh9Q,EAAQ,OAExBs6V,EAAgBt6V,EAAQ,OAExBi5N,EAAUj5N,EAAQ,OAElBu6V,EAAkBthI,EAAQshI,gBAoB1BC,EAAiBlH,EAAep4P,OAAO,CACzCl/G,KAAM,sBAyBNgyO,cAAe,CACbrkH,SAAU,KAKV8wP,SAAS,EAETC,SAAS,EAETnpU,MAAO,OAEP0kN,UAAW,GAGXD,WAAY,GAGZ2kH,WAAY,YACZ5yG,UAAW,KAMXlM,WAAY,KAGZn2N,YAAa,EAKb4tP,aAAc,WAEdjqP,QAAS,GAETqqU,WAAW,EAEXniJ,UAAW,MAQb8mE,cAAe,SAAU5G,EAAWvoL,GAClCsxQ,EAAezhI,WAAWvhP,KAAM,gBAAiB+C,WAQjD/C,KAAKojX,WAAa,GAClBpjX,KAAKq8W,cAML,IAAIruW,EAAOhO,KAAKqjX,MAAQrjX,KAAKsjX,iBAE7BC,EAAavjX,KAAKqjX,OAAOhjX,KAAKL,MAE9BA,KAAKwjX,eAAevpF,EAAWvoL,GAE/B,IAAI2yJ,EAAarkQ,KAAK+qC,OAAOs5N,WAC7BrkQ,KAAKs8W,aAAY,SAAUr3C,EAAe7uT,GAC3B,eAATpI,GACFi3T,EAAcx/B,cAAgB,WAC9Bw/B,EAAc5gE,WAAa/xB,EAAOh+M,MAAM+vO,KAExC4gE,EAAc9mE,WAAan+P,KAAKkrP,YAChC+5E,EAAcx/B,cAAgB,YAC9Bw/B,EAAc10D,UAAYj+B,EAAO5oN,IAAI1pB,KAAKojX,YAAY,SAAU3yG,GAC1DA,EAAQn+B,EAAOh+M,MAAMm8O,GAQzB,MANc,YAAVr6P,IAGFq6P,EAAMxb,OAAS,MAGVwb,CACT,IAEJ,GACF,EAMAisG,qBAAsB,WAQpB,IAAI3xU,EAAS/qC,KAAK+qC,OACd04U,EAAsB,CAAC,EACvBC,EAAcl+E,EAAcm+E,kBAC5BC,EAAa5jX,KAAK4jX,aAkBtB,SAASv/W,EAAImb,EAAKpJ,EAAOigP,GACvB,OAAO72O,GAAOA,EAAIpJ,KAAWk8N,EAAOhxO,SAASke,EAAIpJ,IAAUoJ,EAAIpJ,GAAO9P,eAAe+vP,GAAc72O,EAAIpJ,KAAWigP,EAEpH,CApBA/jB,EAAO56H,KAAK3sE,EAAO84U,QAAQ,SAAUpzG,GACnCn+B,EAAO56H,KAAKgsQ,GAAa,SAAUrtH,GAC7Boa,EAAMnqQ,eAAe+vP,KACvBotH,EAAoBptH,GAAc,EAEtC,GACF,IACA/jB,EAAO56H,KAAK+rQ,GAAqB,SAAUz7V,EAAGquO,GAC5C,IAAIv8I,EAAS,EACbw4H,EAAO56H,KAAK13G,KAAK28W,WAAW,SAAUvmW,GACpC0jG,GAAUz1G,EAAI0mC,EAAQ30B,EAAOigP,IAAehyP,EAAI0mC,EAAOrlC,OAAQ0Q,EAAOigP,EACxE,GAAGr2P,OACF85G,GAAUw4H,EAAO56H,KAAK13G,KAAK28W,WAAW,SAAUvmW,IAC9C20B,EAAO30B,KAAW20B,EAAO30B,GAAS,CAAC,IAAIigP,GAAcysH,EAAc5/W,IAAImzP,EAAsB,YAAVjgP,EAAsB,SAAW,WAAYwtW,EACnI,GACF,GAAG5jX,MAOH87W,EAAev0W,UAAUm1W,qBAAqB55W,MAAM9C,KAAM+C,UAC5D,EACAygX,eAAgB,SAAUvpF,EAAWvoL,GACnC,IAAIkvN,EAAa5gU,KAAK+qC,OAClBwlO,EAAYvwQ,KAAKojX,WAEjBjxP,GAAYzgB,EAASkvN,EAAa3mC,GAAW9nK,UAAY,CAAC,EAW9D,GAVAyuM,EAAWzuM,SAAWA,EAEtBmgH,EAAO56H,KAAK64J,GAAW,SAAUE,EAAOxuQ,GACtC,IAAI4B,EAAM7D,KAAK8jX,kBAAkBrzG,GAE5Bt+I,EAAS7rH,eAAezC,KAC3BsuH,EAAStuH,IAAO,EAEpB,GAAG7D,MAE6B,WAA5B4gU,EAAW9kC,aAA2B,CAExC,IAAIioF,GAAS,EACbzxI,EAAO56H,KAAK64J,GAAW,SAAUE,EAAOxuQ,GACtC,IAAI4B,EAAM7D,KAAK8jX,kBAAkBrzG,GAE7Bt+I,EAAStuH,KACXkgX,EAAS5xP,EAAStuH,IAAO,EAAQkgX,GAAS,EAE9C,GAAG/jX,KACL,CAEF,EAKA8jX,kBAAmB,SAAUrzG,GAC3B,MAAsB,eAAfzwQ,KAAKqjX,MAAyB5yG,EAAM3uQ,MAAQ,GAAK2uQ,EAAMxuQ,MAAQ,EACxE,EAKAwwQ,aAAc,WACZ,OAAOzyQ,KAAKojX,UACd,EAMAE,eAAgB,WACd,IAAIv4U,EAAS/qC,KAAK+qC,OAClB,OAAOA,EAAO84U,QAAU94U,EAAO84U,OAAO7hX,OAAS,EAAI,SAAWhC,KAAK+qC,OAAOs5N,WAAa,aAAe,aACxG,EAMAu4G,YAAa,SAAUzqP,GACrBnyH,KAAK+qC,OAAOonF,SAAWmgH,EAAOh+M,MAAM69F,EACtC,EAMAszM,cAAe,SAAU3jU,GACvB,IAAIG,EAAQujS,EAAcw+E,eAAeliX,EAAO9B,KAAKojX,YACrD,OAAgB,MAATnhX,GAAgBjC,KAAK+qC,OAAOonF,SAASnyH,KAAK8jX,kBAAkB9jX,KAAKojX,WAAWnhX,KAAW,UAA2B,YAC3H,EAOA66W,sBAAuB,SAAUmH,GAC/B,IAAIvgX,EAAS,GAcb,OAbA1D,KAAK8wQ,kBAAiB,SAAUl9B,GAC9B,IAAIi5D,EAAc,GACd5tR,EAAO20N,EAAY7oI,UACvB9rF,EAAKy4F,KAAK13G,KAAK+8W,iBAAiB99V,IAAO,SAAUnd,EAAO+xO,GAEtD,IAAIqwI,EAAO1+E,EAAcw+E,eAAeliX,EAAO9B,KAAKojX,YACpDc,IAASD,GAAcp3E,EAAY5oS,KAAK4vO,EAC1C,GAAG7zO,MACH0D,EAAOO,KAAK,CACV8vO,SAAUH,EAAYpqO,GACtBqqO,UAAWg5D,GAEf,GAAG7sS,MACI0D,CACT,EAOAygX,kBAAmB,SAAU1zG,GAC3B,IAAI2zG,EAEJ,GAAIpkX,KAAK4jX,aACPQ,EAAiB3zG,EAAM3uQ,WAEvB,GAAmB,MAAf2uQ,EAAM3uQ,MACRsiX,EAAiB3zG,EAAM3uQ,UAClB,CACL,IAAIuiX,EAAgB5zG,EAAM3iO,UAAY,GACtCs2U,EAAiBC,EAAc,MAAQxxR,KAAYwxR,EAAc,KAAOxxR,IAAW,GAAKwxR,EAAc,GAAKA,EAAc,IAAM,CACjI,CAGF,OAAOD,CACT,EACApH,cAAe,SAAUC,GAEvB,IAAIj9W,KAAK4jX,aAAT,CAIA,IAAI56F,EAAQ,GACRE,EAAc,GACdpX,EAAiB9xQ,KA6BjBuwQ,EAAYvwQ,KAAKojX,WAAWjhX,QAEhC,GAAKouQ,EAAUvuQ,OAIR,CACL,IAAI2+E,EAAO4vL,EAAU,GAAGziO,SAAS,GACjC6yC,KAAUkS,KAAY09K,EAAUriP,QAAQ,CACtC4f,SAAU,EAAE+kD,IAAUlS,KAExBA,EAAO4vL,EAAUA,EAAUvuQ,OAAS,GAAG8rC,SAAS,GAChD6yC,IAASkS,KAAY09K,EAAUtsQ,KAAK,CAClC6pC,SAAU,CAAC6yC,EAAMkS,MAErB,MAZE09K,EAAUtsQ,KAAK,CACb6pC,SAAU,EAAE+kD,IAAUA,OAa1B,IAAI0mB,GAAQ1mB,IAWZ,OAVAy/I,EAAO56H,KAAK64J,GAAW,SAAUE,GAC/B,IAAI3iO,EAAW2iO,EAAM3iO,SAEjBA,IAEFA,EAAS,GAAKyrE,GAAQ8jQ,EAAQ,CAAC9jQ,EAAMzrE,EAAS,IAAK,cACnDuvU,EAAQvvU,EAAS3rC,SACjBo3G,EAAOzrE,EAAS,GAEpB,GAAG9tC,MACI,CACLgpR,MAAOA,EACPE,YAAaA,EA/Df,CAMA,SAASm0F,EAAQvvU,EAAUwvU,GACzB,IAAI8G,EAAiBtyG,EAAeqyG,kBAAkB,CACpDr2U,SAAUA,IAGPwvU,IACHA,EAAaxrG,EAAe2zD,cAAc2+C,IAG5C,IAAIxzV,EAAQqsV,EAAemH,EAAgB9G,GAEvCxvU,EAAS,MAAQ+kD,IACnBq2L,EAAY,GAAKt4P,EACRkd,EAAS,KAAO+kD,IACzBq2L,EAAY,GAAKt4P,EAEjBo4P,EAAM/kR,KAAK,CACTnC,MAAOgsC,EAAS,GAChBld,MAAOA,GACN,CACD9uB,MAAOgsC,EAAS,GAChBld,MAAOA,GAGb,CAmCF,IAQE2yV,EAAe,CACjBr1U,YAAa,WACX,IAAI0yR,EAAa5gU,KAAK+qC,OAClBwlO,EAAYvwQ,KAAKojX,WACjBh6V,EAAYjjB,KAAKyI,IAAIgyT,EAAWx3S,UAAW,IAC3C+0O,EAAan+P,KAAKkrP,YAClBh9M,EAAc0yR,EAAW1yR,YAC7BA,EAAc/nC,KAAKwI,IAAIu2B,SAASgJ,EAAa,IAAK,GAClD0yR,EAAW1yR,YAAcA,EACzB,IAAIo2U,GAAanmH,EAAW,GAAKA,EAAW,IAAMjwN,EAElD,OAAQo2U,EAAUvuU,QAAQ3sB,KAAek7V,GAAal7V,EAAY,EAChEA,IAGFw3S,EAAWx3S,UAAYA,EACvBk7V,GAAaA,EAAUvuU,QAAQ3sB,GAE3Bw3S,EAAWqiD,SACb1yG,EAAUtsQ,KAAK,CACb6pC,SAAU,EAAE+kD,IAAUsrK,EAAW,IACjCjyP,MAAO,CAAC,EAAG,KAIf,IAAK,IAAIjK,EAAQ,EAAGs3G,EAAO4kJ,EAAW,GAAIl8P,EAAQisC,EAAaqrE,GAAQ+qQ,EAAWriX,IAAS,CACzF,IAAI0M,EAAM1M,IAAUisC,EAAc,EAAIiwN,EAAW,GAAK5kJ,EAAO+qQ,EAC7D/zG,EAAUtsQ,KAAK,CACb6pC,SAAU,CAACyrE,EAAM5qG,GACjBzC,MAAO,CAAC,EAAG,IAEf,CAEI00T,EAAWsiD,SACb3yG,EAAUtsQ,KAAK,CACb6pC,SAAU,CAACqwN,EAAW,GAAItrK,KAC1B3mF,MAAO,CAAC,EAAG,KAIf62W,EAAgBxyG,GAChBj+B,EAAO56H,KAAK64J,GAAW,SAAUE,EAAOxuQ,GACtCwuQ,EAAMxuQ,MAAQA,EACdwuQ,EAAM9zO,KAAO38B,KAAKuhX,gBAAgB9wG,EAAM3iO,SAC1C,GAAG9tC,KACL,EACAqkQ,WAAY,WACV,IAAIu8D,EAAa5gU,KAAK+qC,OACtBunM,EAAO56H,KAAKkpN,EAAWv8D,YAAY,SAAUkgH,GAG3CvkX,KAAKojX,WAAWn/W,KAAK,CACnB04B,KAAM38B,KAAKuhX,gBAAgBgD,GAAM,GACjCziX,MAAOyiX,GAEX,GAAGvkX,MAEHwkX,EAAiB5jD,EAAY5gU,KAAKojX,WACpC,EACAS,OAAQ,WACN,IAAIjjD,EAAa5gU,KAAK+qC,OAClBwlO,EAAYvwQ,KAAKojX,WACrB9wI,EAAO56H,KAAKkpN,EAAWijD,QAAQ,SAAUY,EAAexiX,GACjDqwO,EAAOhxO,SAASmjX,KACnBA,EAAgB,CACd3iX,MAAO2iX,IAIX,IAAIj/V,EAAO,CACTmX,KAAM,GACN16B,MAAOA,GAOT,GAJ2B,MAAvBwiX,EAAcv1U,QAChB1pB,EAAKmX,KAAO8nV,EAAcv1U,OAGxBu1U,EAAcn+W,eAAe,SAAU,CACzC,IAAIxE,EAAQ0jB,EAAK1jB,MAAQ2iX,EAAc3iX,MACvC0jB,EAAKsoB,SAAW,CAAChsC,EAAOA,GACxB0jB,EAAKtZ,MAAQ,CAAC,EAAG,EACnB,KAAO,CASL,IANA,IAAI4hC,EAAWtoB,EAAKsoB,SAAW,GAC3B5hC,EAAQsZ,EAAKtZ,MAAQ,CAAC,EAAG,GACzBw4W,EAAY,CAAC,EAAG,EAAG,GACnBC,EAAe,EAAE9xR,IAAUA,KAC3B+xR,EAAY,GAEPxoL,EAAK,EAAGA,EAAK,EAAGA,IAAM,CAG7B,IAFA,IAAIhvL,EAAQ,CAAC,CAAC,MAAO,KAAM,OAAQ,CAAC,MAAO,KAAM,QAAQgvL,GAEhDp4L,EAAI,EAAGA,EAAI,GAAqB,MAAhB8pC,EAASsuJ,GAAap4L,IAC7C8pC,EAASsuJ,GAAMqoL,EAAcr3W,EAAMpJ,IACnCkI,EAAMkwL,GAAMsoL,EAAU1gX,GACtB4gX,EAAUxoL,GAAY,IAANp4L,EAGF,MAAhB8pC,EAASsuJ,KAAgBtuJ,EAASsuJ,GAAMuoL,EAAavoL,GACvD,CAEAwoL,EAAU,IAAM92U,EAAS,KAAO+kD,MAAa3mF,EAAM,GAAK,GACxD04W,EAAU,IAAM92U,EAAS,MAAQ+kD,MAAa3mF,EAAM,GAAK,GAErD4hC,EAAS,KAAOA,EAAS,IAAM5hC,EAAM,IAAMA,EAAM,KAGnDsZ,EAAK1jB,MAAQgsC,EAAS,GAE1B,CAEAtoB,EAAKyvO,OAASuwC,EAAcq/E,gBAAgBJ,GAC5Cl0G,EAAUtsQ,KAAKuhB,EACjB,GAAGxlB,MAEHwkX,EAAiB5jD,EAAYrwD,GAE7BwyG,EAAgBxyG,GAChBj+B,EAAO56H,KAAK64J,GAAW,SAAUE,GAC/B,IAAIvkQ,EAAQukQ,EAAMvkQ,MACd44W,EAAc,CAAC,CAAC,IAAK,KAAK54W,EAAM,IAAK,CAAC,IAAK,KAAKA,EAAM,KAC1DukQ,EAAM9zO,KAAO8zO,EAAM9zO,MAAQ38B,KAAKuhX,gBAA+B,MAAf9wG,EAAM3uQ,MAAgB2uQ,EAAM3uQ,MAAQ2uQ,EAAM3iO,UAAU,EAAOg3U,EAC7G,GAAG9kX,KACL,GAGF,SAASwkX,EAAiB5jD,EAAYrwD,GACpC,IAAI0jD,EAAU2M,EAAW3M,SAEC,aAAtB2M,EAAWhvR,QAAyBqiR,EAAUA,IAChD1jD,EAAUv1O,SAEd,CAEA,IAAIvN,EAAWu1V,EACf7hX,EAAOD,QAAUusB,C,wBCvgBjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBq1V,EAAgBr1V,EAAQ,MAExBsuN,EAAUtuN,EAAQ,OAElBwxD,EAAUxxD,EAAQ,OAElBg5N,EAAexnK,EAAQwnK,aAEvBr5I,EAAS3/E,EAAQ,MAEjByhR,EAASzhR,EAAQ,OAoBjBu8V,EAAyBlH,EAAcn6P,OAAO,CAChDl/G,KAAM,sBAMN85W,SAAU,WACR,IAAIzpE,EAAY70S,KAAKk7C,MACrB25P,EAAU15D,YACV,IAAI22B,EAAiB9xQ,KAAK8xQ,eACtBgtG,EAAUhtG,EAAe5uQ,IAAI,WAC7B6xS,EAAiBjjC,EAAeijC,eAChCY,EAAWZ,EAAex+C,UAC1B/zB,EAAWuyE,EAAe/5B,eAE1By4E,EAAYzzV,KAAKglX,gBAEjB1mH,EAAWwT,EAAexT,SAE1B2mH,EAAWjlX,KAAKklX,eAEhBC,EAAWF,EAASE,SACpBprJ,EAAYuY,EAAOoS,SAASotB,EAAe5uQ,IAAI,aAAa,IAAQiiX,GAQxE,SAAS5wH,EAAW/uO,GAClB,IAAIirP,EAAQjrP,EAAKirP,MACb4uB,EAAY,IAAIvoD,EAAQM,MAC5BioD,EAAUuW,QAAUtjE,EAAOv1N,KAAK/c,KAAKolX,aAAcplX,KAAMywQ,GAEzDzwQ,KAAKqlX,iBAAiBhmF,EAAW75Q,EAAK8/V,uBAEtC,IAAIlB,EAAiBtyG,EAAeqyG,kBAAkB1zG,GAItD,GAFAzwQ,KAAKulX,kBAAkBlmF,EAAW+kF,EAAgB,CAAC,EAAG,EAAG9lH,EAAS,GAAIA,EAAS,KAE3EvkC,EAAW,CACb,IAAIyrJ,EAAcxlX,KAAK8xQ,eAAe2zD,cAAc2+C,GACpD/kF,EAAU9+R,IAAI,IAAIu2O,EAAQoc,KAAK,CAC7BtnP,MAAO,CACLkU,EAAiB,UAAd2zU,GAAyBqrB,EAAUxgH,EAAS,GAAKwgH,EACpDngV,EAAG2/N,EAAS,GAAK,EACjB3hO,KAAM8zO,EAAM9zO,KACZogO,kBAAmB,SACnB1iO,UAAWo5T,EACX99C,SAAUA,EACVnzE,SAAUA,EACVlpM,QAAyB,eAAhBksV,EAA+B,GAAM,KAGpD,CAEA3wE,EAAUt0S,IAAI8+R,EAChB,CAnCA8lF,GAAYnlX,KAAKy+W,gBAAgB5pE,EAAWswE,EAAS,GAAI7mH,EAAUvkC,EAAW05H,GAC9EnhH,EAAO56H,KAAKutQ,EAASQ,cAAelxH,EAAYv0P,MAChDmlX,GAAYnlX,KAAKy+W,gBAAgB5pE,EAAWswE,EAAS,GAAI7mH,EAAUvkC,EAAW05H,GAC9EtrP,EAAO06F,IAAIivE,EAAe5uQ,IAAI,UAAW2xS,EAAW/iC,EAAe5uQ,IAAI,YACvElD,KAAK28S,iBAAiB9H,GACtB70S,KAAK4+W,cAAc/pE,EA+BrB,EAKAwwE,iBAAkB,SAAUhmF,EAAW4kF,GAGrC,SAASyB,EAAYtoW,GACnB,IAAI00P,EAAiB9xQ,KAAK8xQ,eAC1BA,EAAe/mO,OAAOmxU,WAAal8W,KAAK2qG,IAAIi9J,eAAe,CACzDpjQ,KAAM4Y,EACNiwJ,MAAO48H,EAAOy4E,kBAAkB5wG,EAAegrG,sBAAsBmH,GAAanyG,IAEtF,CARAutB,EAAU57N,GAAG,YAAa6uK,EAAOv1N,KAAK2oW,EAAa1lX,KAAM,cAAcyjE,GAAG,WAAY6uK,EAAOv1N,KAAK2oW,EAAa1lX,KAAM,YASvH,EAKAglX,cAAe,WACb,IAAIlzG,EAAiB9xQ,KAAK8xQ,eACtB6zG,EAAc7zG,EAAe/mO,OAEjC,GAA2B,aAAvB46U,EAAY/zU,OACd,OAAOq4P,EAAO+0E,aAAaltG,EAAgB9xQ,KAAK2qG,IAAKmnK,EAAexT,UAGpE,IAAIvkN,EAAQ4rU,EAAY5rU,MAMxB,OAJKA,GAAmB,SAAVA,IACZA,EAAQ,QAGHA,CAEX,EAKA0kU,gBAAiB,SAAUvjU,EAAOve,EAAM2hO,EAAUvkC,EAAW05H,GAC3D,GAAK92T,EAAL,CAIA,IAAI0iQ,EAAY,IAAIvoD,EAAQM,MACxB29D,EAAiB/0S,KAAK8xQ,eAAeijC,eACzC1V,EAAU9+R,IAAI,IAAIu2O,EAAQoc,KAAK,CAC7BtnP,MAAO,CACLkU,EAAGi6M,EAA0B,UAAd05H,EAAwBn1F,EAAS,GAAK,EAAIA,EAAS,GAAK,EACvE3/N,EAAG2/N,EAAS,GAAK,EACjBvB,kBAAmB,SACnB1iO,UAAW0/L,EAAY05H,EAAY,SACnC92T,KAAMA,EACNg5Q,SAAUZ,EAAex+C,UACzB/zB,SAAUuyE,EAAe/5B,mBAG7B9/N,EAAM36C,IAAI8+R,EAfV,CAgBF,EAMA6lF,aAAc,WACZ,IAAIpzG,EAAiB9xQ,KAAK8xQ,eACtB2zG,EAAgBnzI,EAAO5oN,IAAIooP,EAAeW,gBAAgB,SAAUhC,EAAOxuQ,GAC7E,MAAO,CACLwuQ,MAAOA,EACP60G,sBAAuBrjX,EAE3B,IACIkjX,EAAWrzG,EAAe5uQ,IAAI,QAE9B0uC,EAASkgO,EAAe5uQ,IAAI,UAC5B+wT,EAAUniD,EAAe5uQ,IAAI,WASjC,OAPe,eAAX0uC,EAA0BqiR,GAAWA,GACvCwxD,EAAczqV,UAEPmqV,IACLA,EAAWA,EAAShjX,QAAQ64B,WAGzB,CACLyqV,cAAeA,EACfN,SAAUA,EAEd,EAKAI,kBAAmB,SAAUrqU,EAAOkpU,EAAgBwB,GAClD1qU,EAAM36C,IAAIihP,EAAaxhP,KAAKkhX,oBAAoBkD,EAAgB,UAAWwB,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAI5lX,KAAKkhX,oBAAoBkD,EAAgB,UAClL,EAKAgB,aAAc,SAAU30G,GACtB,IAAIqB,EAAiB9xQ,KAAK8xQ,eACtB/mO,EAAS+mO,EAAe/mO,OACxBonF,EAAWmgH,EAAOh+M,MAAMyW,EAAOonF,UAC/B88F,EAAS6iD,EAAegyG,kBAAkBrzG,GAElB,WAAxB1lO,EAAO+wP,cACT3pK,EAAS88F,IAAU,EACnBqjB,EAAO56H,KAAKya,GAAU,SAAUl6C,EAAGp0E,GACjCsuH,EAAStuH,GAAOA,IAAQorN,CAC1B,KAEA98F,EAAS88F,IAAW98F,EAAS88F,GAG/BjvN,KAAK2qG,IAAIi9J,eAAe,CACtBpjQ,KAAM,kBACN45D,KAAMp+D,KAAK6N,IACXoyW,YAAajgX,KAAK8xQ,eAAetoQ,GACjC2oH,SAAUA,GAEd,IAEE1kG,EAAWs3V,EACf5jX,EAAOD,QAAUusB,C,iCC1NjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjB+mS,EAAM/mS,EAAQ,OAEds6V,EAAgBt6V,EAAQ,OAExBg9Q,EAAgBh9Q,EAAQ,OAExBy3S,EAAiBz3S,EAAQ,OAEzB6+P,EAAY7+P,EAAQ,OAEpBmlR,EAAanlR,EAAQ,OAoBrB+qQ,EAAYiS,EAAcjS,UAC1BsyF,EAAargF,EAAcqgF,WAC3B/+W,EAAUwrO,EAAOxrO,QACjB4wG,EAAO46H,EAAO56H,KACdkyN,EAAMj8B,EAAWi8B,IACjBvsE,EAAYswC,EAAWtwC,UACvBhgE,EAAOi1C,EAAOj1C,KACdy+K,EAAiB3oI,EAAQ6wE,qBAAqB,CAChDx/S,KAAM,YACN0xO,aAAc,CAAC,UAMfymI,UAAW,CAAC,UAAW,cAMvBmJ,qBAAsB,CAAC,UAAW,aAAc,SAAU,aAAc,SAQxEC,UAAW,EAAElzR,IAAUA,KAMvBmhM,WAAY,CACVxvR,KAAM,MACNm6U,YAAY,GAMdnoG,cAAe,CACb9oM,MAAM,EACN0yM,OAAQ,EACRroK,EAAG,EACH2mK,YAAa,MAKb9vO,IAAK,EAELD,IAAK,IAELm6Q,UAAW,KACX7W,QAAS,KAGTE,WAAY,KAIZ9hO,KAAM,EAENC,MAAO,KAEPC,IAAK,KAELC,OAAQ,EAERiuN,UAAW,KACXD,WAAY,KACZy1D,SAAS,EACTriR,OAAQ,WAERgoB,gBAAiB,gBACjBiqK,YAAa,OAEbmiJ,aAAc,UACdvzB,cAAe,OACf5qR,YAAa,EAEb0jB,QAAS,EAGTuzR,QAAS,GAET11V,UAAW,EAEXwH,MAAO,KAEP0d,UAAW,KACX3R,KAAM,KAENsV,UAAW,CACTrhB,MAAO,SAQX8mC,KAAM,SAAU3sB,EAAQg8M,EAAarU,GAKnC1yO,KAAKmqU,YAKLnqU,KAAKgyQ,cAAgB,CAAC,EAKtBhyQ,KAAKimX,kBAAoB,CAAC,EAK1BjmX,KAAK+0S,eAOL/0S,KAAKs+P,SACLt+P,KAAK+iQ,qBAAqBh4N,EAAQ2nM,EACpC,EAKAmuD,cAAe,SAAU5G,EAAWvoL,GAClC,IAAIkvN,EAAa5gU,KAAK+qC,OAIjBwkR,EAAIsf,kBACPjO,EAAW/B,UAAW,IAGvBntN,GAAUuuN,EAAeY,oBAAoBD,EAAY3mC,EAAWj6R,KAAK8lX,sBAC1E9lX,KAAK+0S,eAAiB/0S,KAAKw5O,SAAS,aACpCx5O,KAAKw8W,gBACLx8W,KAAK08W,sBACP,EAKAJ,YAAa,SAAU4J,GACrB,IAAIvJ,EAAY38W,KAAK28W,UACrBuJ,EAAyB5zI,EAAOv1N,KAAKmpW,EAAwBlmX,MAC7DA,KAAKimX,kBAAoBhmD,EAAe+E,qBAAqBhlU,KAAK+qC,OAAO89N,WAAY8zG,EAAWuJ,GAChGlmX,KAAKgyQ,cAAgBiuD,EAAe+E,qBAAqBhlU,KAAK+qC,OAAOrlC,OAAQi3W,EAAWuJ,EAC1F,EAMAC,uBAAwB,WACtB,IAAIC,EAAoBpmX,KAAK+qC,OAAO2zM,YAChCylF,EAAgB,GAUpB,OARyB,MAArBiiD,GAAmD,QAAtBA,EAC/BpmX,KAAK0yO,QAAQy/E,YAAW,SAAUv+E,EAAa3xO,GAC7CkiU,EAAclgU,KAAKhC,EACrB,IAEAkiU,EAAgB98C,EAAUooD,iBAAiB22C,GAGtCjiD,CACT,EAKArzD,iBAAkB,SAAUjvP,EAAU9hB,GACpCuyO,EAAO56H,KAAK13G,KAAKmmX,0BAA0B,SAAUznI,GACnD78N,EAASxhB,KAAKN,EAASC,KAAK0yO,QAAQ48E,iBAAiB5wE,GACvD,GAAG1+O,KACL,EAKA2iX,eAAgB,SAAU/uI,GACxB,IAAIxwO,GAAK,EAIT,OAHApD,KAAK8wQ,kBAAiB,SAAUvf,GAC9BA,IAAU3d,IAAgBxwO,GAAK,EACjC,IACOA,CACT,EAgBAm+W,gBAAiB,SAAUz/W,EAAO8hX,EAAYkB,GAC5C,IAIIuB,EACA3E,EALA32U,EAAS/qC,KAAK+qC,OACd3hB,EAAY2hB,EAAO3hB,UACnB28V,EAAY/lX,KAAK+lX,UACjBz3U,EAAYvD,EAAOuD,UAYvB,OATAw2U,EAAcA,GAAe,CAAC,IAAK,KAE/BxyI,EAAOxrO,QAAQhF,KACjBA,EAAQA,EAAMK,QACdkkX,GAAW,GAGb3E,EAAYkC,EAAa9hX,EAAQukX,EAAW,CAACtwU,EAAQj0C,EAAM,IAAKi0C,EAAQj0C,EAAM,KAAOi0C,EAAQj0C,GAEzFwwO,EAAOohF,SAASplR,GACXA,EAAU1yB,QAAQ,UAAWyqW,EAAW3E,EAAU,GAAKA,GAAW9lW,QAAQ,WAAYyqW,EAAW3E,EAAU,GAAKA,GAC9GpvI,EAAOqhF,WAAWrlR,GACpB+3U,EAAW/3U,EAAUxsC,EAAM,GAAIA,EAAM,IAAMwsC,EAAUxsC,GAG1DukX,EACEvkX,EAAM,KAAOikX,EAAU,GAClBjB,EAAY,GAAK,IAAMpD,EAAU,GAC/B5/W,EAAM,KAAOikX,EAAU,GACzBjB,EAAY,GAAK,IAAMpD,EAAU,GAEjCA,EAAU,GAAK,MAAQA,EAAU,GAInCA,EAGT,SAAS3rU,EAAQ/mC,GACf,OAAOA,IAAQ+2W,EAAU,GAAK,MAAQ/2W,IAAQ+2W,EAAU,GAAK,QAAU/2W,GAAK+mC,QAAQ5vC,KAAKyI,IAAIwa,EAAW,IAC1G,CACF,EAKAizV,YAAa,WACX,IAAIz7C,EAAa5gU,KAAK+qC,OAIlBwiJ,EAASq8I,EAAI,CAAChJ,EAAWhyT,IAAKgyT,EAAWjyT,MAC7C3O,KAAKmqU,YAAc58I,CACrB,EAQAwvL,iBAAkB,SAAU9lW,GAC1B,IAAIqvW,EAAStmX,KAAK+qC,OAAO+9O,UACrBy9F,EAAiBtvW,EAAK2jJ,WAE1B,GAAc,MAAV0rN,GAAmBC,EAAevkX,OAAtC,CAIA,GAAc,MAAVskX,EACF,OAAOrvW,EAAK6+O,aAAawwH,GAK3B,IAFA,IAAIl3C,EAAWn4T,EAAK2jJ,WAEX52J,EAAIorU,EAASptU,OAAS,EAAGgC,GAAK,EAAGA,IAAK,CAC7C,IAAIyyP,EAAU24E,EAASprU,GACnB2yP,EAAU1/O,EAAK2/O,iBAAiBH,GAEpC,IAAKE,EAAQ6vH,mBACX,OAAO/vH,CAEX,CAfA,CAgBF,EAMAvL,UAAW,WACT,OAAOlrP,KAAKmqU,YAAYhoU,OAC1B,EAKAu6W,qBAAsB,WACpB,IAAIhqI,EAAU1yO,KAAK0yO,QACfkuF,EAAa5gU,KAAK+qC,OAClB84E,EAAO,CACTouJ,QAAS2uD,EAAW3uD,QACpBE,WAAYyuD,EAAWzuD,YAErBzsQ,EAASk7T,EAAWl7T,SAAWk7T,EAAWl7T,OAAS,CAAC,GACpDmjQ,EAAa+3D,EAAW/3D,aAAe+3D,EAAW/3D,WAAa,CAAC,GACpEv2B,EAAOt0H,MAAMt4G,EAAQm+G,GAErByuH,EAAOt0H,MAAM6qJ,EAAYhlJ,GAEzB,IAAI+/P,EAAa5jX,KAAK4jX,aAOtB,SAAS6C,EAAe5iQ,GAKlB/8G,EAAQ85T,EAAWhwS,SAEnBizF,EAAKouJ,UACPpuJ,EAAKouJ,QAAU,CACbrhP,MAAOgwS,EAAWhwS,MAAMzuB,QAAQ64B,YAUpC6oF,EAAKouJ,QAAUpuJ,EAAKouJ,SAAW,CAC7BrhP,MAAO8hN,EAAQxvO,IAAI,kBAGrBw0G,EAAK13G,KAAK28W,WAAW,SAAUvmW,GAC7B,IAAIigP,EAAaxyI,EAAKztG,GAEtB,GAAIk8N,EAAOohF,SAASr9D,GAAa,CAC/B,IAAIqwH,EAAO5D,EAAc5/W,IAAImzP,EAAY,SAAUutH,GAE/C8C,GACF7iQ,EAAKztG,GAAS,CAAC,EACfytG,EAAKztG,GAAOigP,GAAcqwH,UAGnB7iQ,EAAKztG,EAEhB,CACF,GAAGpW,KACL,CAEA,SAAS2mX,EAAiB9iQ,EAAM+iQ,EAAYC,GAC1C,IAAIC,EAAWjjQ,EAAK+iQ,GAChBG,EAAYljQ,EAAKgjQ,GAEjBC,IAAaC,IACfA,EAAYljQ,EAAKgjQ,GAAe,CAAC,EACjCnvQ,EAAKovQ,GAAU,SAAUE,EAAY3wH,GACnC,GAAKmvC,EAAcyhF,YAAY5wH,GAA/B,CAIA,IAAIqwH,EAAO5D,EAAc5/W,IAAImzP,EAAY,WAAYutH,GAEzC,MAAR8C,IACFK,EAAU1wH,GAAcqwH,EAIL,UAAfrwH,GAA2B0wH,EAAUzgX,eAAe,YAAeygX,EAAUzgX,eAAe,gBAC9FygX,EAAUztV,QAAU,CAAC,EAAG,IAV5B,CAaF,IAEJ,CAEA,SAAS4tV,EAAmBr+G,GAC1B,IAAIs+G,GAAgBt+G,EAAWoJ,SAAW,CAAC,GAAGhwP,SAAW4mP,EAAWsJ,YAAc,CAAC,GAAGlwP,OAClFmlW,GAAoBv+G,EAAWoJ,SAAW,CAAC,GAAGrxB,aAAeioB,EAAWsJ,YAAc,CAAC,GAAGvxB,WAC1F6xG,EAAgBzyV,KAAKkD,IAAI,iBAC7Bw0G,EAAK13G,KAAK28W,WAAW,SAAUvmW,GAC7B,IAAIkoP,EAAWt+P,KAAKs+P,SAChBqkD,EAAU95C,EAAWzyP,GAGpBusS,IACHA,EAAU95C,EAAWzyP,GAAS,CAC5Bwa,MAAOgzV,EAAanxB,EAAgB,CAACA,KAKnB,MAAlB9vC,EAAQ1gS,SACV0gS,EAAQ1gS,OAASklW,GAAgB70I,EAAOh+M,MAAM6yV,KAAkBvD,EAAa,YAAc,CAAC,eAGpE,MAAtBjhE,EAAQ/hE,aACV+hE,EAAQ/hE,WAAawmI,GAAoB90I,EAAOh+M,MAAM8yV,KAAsBxD,EAAatlH,EAAS,GAAK,CAACA,EAAS,GAAIA,EAAS,MAIhIqkD,EAAQ1gS,OAASsxQ,EAAUovB,EAAQ1gS,QAAQ,SAAUA,GACnD,MAAkB,SAAXA,GAAgC,WAAXA,EAAsB,YAAcA,CAClE,IAEA,IAAI2+N,EAAa+hE,EAAQ/hE,WAEzB,GAAkB,MAAdA,EAAoB,CACtB,IAAIjyO,GAAOkkF,IAEXgzR,EAAWjlI,GAAY,SAAU9+O,GAC/BA,EAAQ6M,IAAQA,EAAM7M,EACxB,IACA6gT,EAAQ/hE,WAAa2yC,EAAU3yC,GAAY,SAAU9+O,GACnD,OAAOu7P,EAAUv7P,EAAO,CAAC,EAAG6M,GAAM,CAAC,EAAG2vP,EAAS,KAAK,EACtD,GACF,CACF,GAAGt+P,KACL,CAlHAymX,EAAepmX,KAAKL,KAAM0F,GAC1B+gX,EAAepmX,KAAKL,KAAM6oQ,GAC1B89G,EAAiBtmX,KAAKL,KAAM0F,EAAQ,UAAW,cAE/CwhX,EAAmB7mX,KAAKL,KAAM6oQ,EA+GhC,EAKA2zG,cAAe,WACbx8W,KAAKs+P,SAAW,CAACxoN,WAAW91C,KAAKkD,IAAI,cAAe4yC,WAAW91C,KAAKkD,IAAI,eAC1E,EAKA0gX,WAAY,WACV,QAAS5jX,KAAK+qC,OAAOs5N,UACvB,EAMAu4G,YAAav/K,EASbooI,cAAepoI,EAiBf2/K,cAAe3/K,IAEb5vK,EAAWquV,EACf36W,EAAOD,QAAUusB,C,uBC1gBjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAElB0hS,EAAa1hS,EAAQ,OAErB2/E,EAAS3/E,EAAQ,MAEjBg9Q,EAAgBh9Q,EAAQ,OAoBxBiF,EAAW0lN,EAAQqxE,oBAAoB,CACzChgT,KAAM,YAMN6iX,mBAAoB,CAClBh3U,KAAM,EACNC,MAAO,EACPC,IAAK,EACLC,OAAQ,GAEVknB,KAAM,SAAUg7K,EAAS/nI,GAKvB3qG,KAAK0yO,QAAUA,EAMf1yO,KAAK2qG,IAAMA,EAMX3qG,KAAK8xQ,cACP,EAKA3yQ,OAAQ,SAAU2yQ,EAAgBp/B,EAAS/nI,EAAK6oI,GAC9CxzO,KAAK8xQ,eAAiBA,GAEa,IAA/BA,EAAe5uQ,IAAI,QAKvBlD,KAAKs+W,SAASx7W,MAAM9C,KAAM+C,WAJxB/C,KAAKk7C,MAAMigM,WAKf,EAKAwhE,iBAAkB,SAAUzhQ,GAC1B,IAAI42N,EAAiB9xQ,KAAK8xQ,eACtBvmL,EAAU2+N,EAAW8I,kBAAkBlhD,EAAe5uQ,IAAI,YAAc,GACxE+5B,EAAOie,EAAM8tN,kBACjB9tN,EAAM36C,IAAI,IAAIu2O,EAAQuF,KAAK,CACzBC,IAAK,EAELntF,QAAQ,EACR35H,MAAO,CACL1V,EAAGmd,EAAKnd,EAAIyrE,EAAQ,GACpB5sD,EAAG1B,EAAK0B,EAAI4sD,EAAQ,GACpB/iD,MAAOvL,EAAKuL,MAAQ+iD,EAAQ,GAAKA,EAAQ,GACzC9iD,OAAQxL,EAAKwL,OAAS8iD,EAAQ,GAAKA,EAAQ,IAE7C3/E,MAAO,CACLme,KAAM+nP,EAAe5uQ,IAAI,mBACzBm2B,OAAQy4O,EAAe5uQ,IAAI,eAC3B62B,UAAW+3O,EAAe5uQ,IAAI,kBAGpC,EAWAg+W,oBAAqB,SAAUoG,EAAaC,EAAepjR,GACzDA,EAAOA,GAAQ,CAAC,EAChB,IAAI28Q,EAAa38Q,EAAK28Q,WAClBhvG,EAAiB9xQ,KAAK8xQ,eACtB01G,EAAY,CAAC,EAMjB,GAJsB,WAAlBD,IACFC,EAAUvlW,OAAS6vP,EAAe5uQ,IAAI,eAGlB,UAAlBqkX,EAA2B,CAC7B,IAAIv7T,EAAe8lN,EAAe5uQ,IAAI,gBACtCskX,EAAU52V,MAAQo7B,CACpB,CAEA,SAASpzC,EAAO/U,GACd,OAAO2jX,EAAU3jX,EACnB,CAEA,SAASwN,EAAOxN,EAAK/B,GACnB0lX,EAAU3jX,GAAO/B,CACnB,CAEA,IAAI2lX,EAAW31G,EAAem0G,kBAAkBnF,GAAchvG,EAAe2zD,cAAc6hD,IACvF5D,EAAcl+E,EAAckiF,mBAAmBD,GAanD,OAZAn1I,EAAO56H,KAAKgsQ,GAAa,SAAUl/W,GACjC,IAAImjX,EAAgBF,EAASjjX,GAEzB2/F,EAAK48Q,uBAAkC,YAATv8W,IAChCA,EAAO,aACPmjX,EAAgBF,EAASG,mBAGvBpiF,EAAcqiF,UAAUrjX,EAAM+iX,IAChCI,GAAiBA,EAAcjiD,YAAY4hD,EAAa1uW,EAAQvH,EAEpE,IACOm2W,EAAUD,EACnB,EAKA3I,cAAe,SAAU1jU,GACvB,IAAIq2M,EAAQvxP,KAAK8xQ,eACbnnK,EAAM3qG,KAAK2qG,IACfxC,EAAOmtM,gBAAgBp6P,EAAOq2M,EAAMiM,qBAAsB,CACxDh1N,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,aAEhB,EAMAg8H,SAAUhsI,EAAOj1C,OAGnBl8L,EAAOD,QAAUusB,C,wBC1KjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB4jP,EAAU5jP,EAAQ,MAElB+0O,EAAgB6O,EAAQ7O,cA2B5B,SAASyhH,EAAaltG,EAAgBnnK,EAAK2zJ,GACzC,IAAIqnH,EAAc7zG,EAAe/mO,OAC7B0oT,EAAYkyB,EAAY5rU,MAE5B,GAAiB,MAAb05S,GAAmC,SAAdA,EACvB,OAAOA,EAcT,IAVA,IAAIrxG,EAAS,CACX55M,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,aAEVwlI,EAAmC,eAAvBnC,EAAY/zU,OAA0B,EAAI,EACtDm2U,EAAY,CAAC,CAAC,OAAQ,QAAS,SAAU,CAAC,MAAO,SAAU,WAC3DC,EAAQD,EAAUD,GAClBG,EAAY,CAAC,EAAG,KAAM,IACtBC,EAAc,CAAC,EAEVlkX,EAAI,EAAGA,EAAI,EAAGA,IACrBkkX,EAAYH,EAAU,EAAID,GAAW9jX,IAAMikX,EAAUjkX,GACrDkkX,EAAYF,EAAMhkX,IAAY,IAANA,EAAUs6P,EAAS,GAAKqnH,EAAYqC,EAAMhkX,IAGpE,IAAImkX,EAAS,CAAC,CAAC,IAAK,QAAS,GAAI,CAAC,IAAK,SAAU,IAAIL,GACjD7qV,EAAOsgO,EAAc2qH,EAAa9lI,EAAQujI,EAAYp6R,SAC1D,OAAOy8R,GAAO/qV,EAAK29P,OAAOutF,EAAO,KAAO,GAAKlrV,EAAKkrV,EAAO,IAAwB,GAAlBlrV,EAAKkrV,EAAO,IAAgC,GAApB/lI,EAAO+lI,EAAO,IAAY,EAAI,EACvH,CAOA,SAASzF,EAAkBr1M,EAAOykG,GAShC,OARAx/B,EAAO56H,KAAK21D,GAAS,IAAI,SAAU8hJ,GACN,MAAvBA,EAAUt7E,YACZs7E,EAAUz5D,gBAAkBy5D,EAAUt7E,UACtCs7E,EAAUt7E,UAAY,MAGxBs7E,EAAUi5D,aAAe,aAAet2G,EAAiBA,EAAe4iC,eAAiB,GAC3F,IACOrnI,CACT,CAEAnsK,EAAQ89W,aAAeA,EACvB99W,EAAQwhX,kBAAoBA,C,wBC9E5B,IAAIpwI,EAAS9pN,EAAQ,OAoBjBkvF,EAAO46H,EAAO56H,KAElB,SAASjqF,EAASsd,GAChB,IAAI8lO,EAAY9lO,GAAUA,EAAO8lO,UAE5Bv+B,EAAOxrO,QAAQ+pQ,KAClBA,EAAYA,EAAY,CAACA,GAAa,IAGxCn5J,EAAKm5J,GAAW,SAAUhuK,GACxB,GAAKA,EAAL,CAKIx+F,EAAIw+F,EAAK,eAAiBx+F,EAAIw+F,EAAK,YACrCA,EAAIghR,OAAShhR,EAAIwlR,iBACVxlR,EAAIwlR,WAGb,IAAIxE,EAAShhR,EAAIghR,OAEbA,GAAUvxI,EAAOxrO,QAAQ+8W,IAC3BnsQ,EAAKmsQ,GAAQ,SAAUpzG,GACjBn+B,EAAOhxO,SAASmvQ,KACdpsQ,EAAIosQ,EAAO,WAAapsQ,EAAIosQ,EAAO,SACrCA,EAAM7hQ,IAAM6hQ,EAAM/xN,OAGhBr6C,EAAIosQ,EAAO,SAAWpsQ,EAAIosQ,EAAO,SACnCA,EAAM9hQ,IAAM8hQ,EAAM9xN,KAGxB,GArBF,CAuBF,GACF,CAEA,SAASt6C,EAAImb,EAAK/a,GAChB,OAAO+a,GAAOA,EAAIlZ,gBAAkBkZ,EAAIlZ,eAAe7B,EACzD,CAEAtD,EAAOD,QAAUusB,C,wBC9DjB,IAAIiuT,EAAYlzT,EAAQ,OAoBxBkzT,EAAUC,yBAAyB,aAAa,SAAU5wS,GAExD,OAAQA,EAAOs5N,aAAiBt5N,EAAO84U,OAAS94U,EAAO84U,OAAO7hX,OAAS,EAAI+oC,EAAOmD,YAAc,KAAMnD,EAAOkxU,WAA6B,YAAf,YAC7H,G,gCCvBA,IAAI9oI,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBy3S,EAAiBz3S,EAAQ,OAEzBg9Q,EAAgBh9Q,EAAQ,OAoBxB8/V,EAAkBn1I,EAAQuC,SAASC,OAAO4yI,UA8C9C,SAAStL,EAAerpI,EAAak+B,EAAgBhwQ,EAAOw7W,GAQ1D,IAPA,IAAImK,EAAW31G,EAAeE,cAAcsrG,GACxCoG,EAAcl+E,EAAckiF,mBAAmBD,GAC/Ce,EAAe,CACjB53V,MAAOgjN,EAAY7oI,UAAUuyI,UAAU,UAIhCt5O,EAAI,EAAGwT,EAAMksW,EAAY1hX,OAAQgC,EAAIwT,EAAKxT,IAAK,CACtD,IAAIQ,EAAOk/W,EAAY1/W,GACnB01K,EAAU+tM,EAAkB,YAATjjX,EAAqB,oBAAsBA,GAClEk1K,GAAWA,EAAQgsJ,YAAY5jU,EAAOw7O,EAAWtH,EACnD,CAEA,OAAOwyI,EAAa53V,MAEpB,SAAS0sN,EAAUz5O,GACjB,OAAO2kX,EAAa3kX,EACtB,CAEA,SAASmyO,EAAUnyO,EAAK/B,GACtB0mX,EAAa3kX,GAAO/B,CACtB,CACF,CApEAqxO,EAAQ4C,eAAeuyI,EAAiB,CACtCG,mBAAmB,EACnBhiR,MAAO,SAAUmtI,EAAalB,GAC5B,IAAIg2I,EAAe,GAUnB,OATAh2I,EAAQe,cAAc,aAAa,SAAUq+B,GAC3C,IAAI94B,EAAkBpF,EAAYoF,iBAE7B84B,EAAe6wG,eAAe/uI,IAAgBoF,GAAmBA,EAAgBj9C,OAItF2sL,EAAazkX,KAAKg8T,EAAe0oD,uBAAuB72G,EAAe6qG,UAAW7qG,EAAeE,cAAe1/B,EAAOv1N,KAAK+0P,EAAe2zD,cAAe3zD,GAAiBA,EAAeirG,iBAAiBnpI,EAAY7oI,YACzN,IACO29Q,CACT,IAGFv1I,EAAQ4C,eAAeuyI,EAAiB,CACtCG,mBAAmB,EACnBhiR,MAAO,SAAUmtI,EAAalB,GAC5B,IAAIzzN,EAAO20N,EAAY7oI,UACnB69K,EAAiB,GACrBl2C,EAAQe,cAAc,aAAa,SAAUq+B,GAC3C,GAAIA,EAAe6wG,eAAe/uI,GAAc,CAC9C,IAAIi1C,EAAa/W,EAAekrG,cAAc1qI,EAAOv1N,KAAKkgW,EAAgB,KAAMrpI,EAAak+B,KAAoB,CAC/GkX,MAAO,GACPE,YAAa,IAEX0/F,EAAc92G,EAAeirG,iBAAiB99V,GAC9C03O,EAAU13O,EAAK23O,iBAAiBgyH,GAErB,MAAXjyH,IAEFkyB,EAAWC,UAAYnyB,EAAQ10P,MAC/B2mR,EAAe3kR,KAAK4kR,GAExB,CACF,IAEAj1C,EAAY7oI,UAAUirI,UAAU,aAAc4yC,EAChD,G,uBCnEF,IAAIz1C,EAAU3qN,EAAQ,OAoBlB8qN,EAAa,CACf9uO,KAAM,kBACN6e,MAAO,oBAEP2T,OAAQ,UAEVm8M,EAAQI,eAAeD,GAAY,SAAUE,EAASd,GACpDA,EAAQe,cAAc,CACpBC,SAAU,YACV7yI,MAAO2yI,IACN,SAAU+d,GACXA,EAAMqrH,YAAYppI,EAAQrhH,SAC5B,GACF,G,wBCVA,IAAI1tD,EAEkB,qBAAXv+D,OACTu+D,EAAMv+D,OAAO2wO,QAEY,qBAAX3yO,EAAAA,IACZugE,EAAMvgE,EAAAA,EAAO2yO,SAGE,qBAARpyK,IACTA,GAAM,GAGR,IAAIoyK,EAAUpyK,EACdvjE,EAAQ21O,QAAUA,C,iCCrClB,IAAIjnN,EAAQpH,EAAQ,OAEhBkvF,EAAO9nF,EAAM8nF,KACbhuF,EAAMkG,EAAMlG,IAEZ+3N,EAAUj5N,EAAQ,OAElB60O,EAAY5b,EAAQ4b,UACpB8tE,EAAoB1pF,EAAQ0pF,kBAC5BzkP,EAAQ+6J,EAAQ/6J,MAEhBmiS,EAAwBrgW,EAAQ,MAEhCsgW,EAAkBD,EAAsBC,gBACxCC,EAAmBF,EAAsBE,iBACzCC,EAA4BH,EAAsBG,0BAoBlDC,EAAoB,CAAC,EAAG,GAMxB1hB,EAAO,SAAUt1N,EAAK57G,EAAOk3J,GAK/BvtL,KAAKiyI,IAAMA,EAMXjyI,KAAKq2B,MAAQA,EAMbr2B,KAAKkpX,QAAU37L,GAAU,CAAC,EAAG,GAK7BvtL,KAAKi0T,SAAU,EAMfj0T,KAAKi4O,QAAS,CAChB,EAiOA,SAASkxI,EAAmB57L,EAAQ67L,GAClC,IAAI9/R,EAAOikG,EAAO,GAAKA,EAAO,GAC1B/1K,EAAM4xW,EACNxuF,EAAStxM,EAAO9xE,EAAM,EAC1B+1K,EAAO,IAAMqtG,EACbrtG,EAAO,IAAMqtG,CACf,CAWA,SAASyuF,EAAqBj+U,EAAM2vR,EAAauuD,EAAgB/pD,GAC/D,IAAIgqD,EAAWxuD,EAAY/4T,OAE3B,GAAKopC,EAAK6sM,SAAUqxI,GAAmBC,EAAvC,CAIA,IACIzlU,EACA0lU,EAFAt/F,EAAa9+O,EAAK8/M,YAItB,GAAiB,IAAbq+H,EACFxuD,EAAY,GAAGnjF,MAAQsyC,EAAW,GAClCpmO,EAAOi3Q,EAAY,GAAK,CACtBnjF,MAAOsyC,EAAW,QAEf,CACL,IAAIu/F,EAAW1uD,EAAYwuD,EAAW,GAAGt/F,UAAY8wC,EAAY,GAAG9wC,UAChE7xP,GAAS2iS,EAAYwuD,EAAW,GAAG3xI,MAAQmjF,EAAY,GAAGnjF,OAAS6xI,EACvE/xQ,EAAKqjN,GAAa,SAAU2uD,GAC1BA,EAAU9xI,OAASx/M,EAAQ,CAC7B,IACA,IAAI+lO,EAAa/yN,EAAK/U,MAAM60N,YAC5Bs+H,EAAW,EAAIrrH,EAAW,GAAK48D,EAAYwuD,EAAW,GAAGt/F,UACzDnmO,EAAO,CACL8zL,MAAOmjF,EAAYwuD,EAAW,GAAG3xI,MAAQx/M,EAAQoxV,GAEnDzuD,EAAY92T,KAAK6/C,EACnB,CAEA,IAAImwQ,EAAU/pC,EAAW,GAAKA,EAAW,GAErCy/F,EAAW5uD,EAAY,GAAGnjF,MAAOsyC,EAAW,MAC9Cq1C,EAAQxE,EAAY,GAAGnjF,MAAQsyC,EAAW,GAAK6wC,EAAY3iS,SAGzDmnS,GAASoqD,EAAWz/F,EAAW,GAAI6wC,EAAY,GAAGnjF,QACpDmjF,EAAY7sS,QAAQ,CAClB0pN,MAAOsyC,EAAW,KAIlBy/F,EAAWz/F,EAAW,GAAIpmO,EAAK8zL,SACjC2nF,EAAQz7Q,EAAK8zL,MAAQsyC,EAAW,GAAK6wC,EAAYtiS,OAG/C8mS,GAASoqD,EAAW7lU,EAAK8zL,MAAOsyC,EAAW,KAC7C6wC,EAAY92T,KAAK,CACf2zO,MAAOsyC,EAAW,IA3CtB,CA+CA,SAASy/F,EAAWhnX,EAAGC,GAKrB,OAFAD,EAAI+jF,EAAM/jF,GACVC,EAAI8jF,EAAM9jF,GACHqxT,EAAUtxT,EAAIC,EAAID,EAAIC,CAC/B,CACF,CA3SA2kW,EAAKhgW,UAAY,CACf2F,YAAaq6V,EAObn5G,QAAS,SAAUxW,GACjB,IAAIrqD,EAASvtL,KAAKkpX,QACdt6W,EAAMzI,KAAKyI,IAAI2+K,EAAO,GAAIA,EAAO,IACjC5+K,EAAMxI,KAAKwI,IAAI4+K,EAAO,GAAIA,EAAO,IACrC,OAAOqqD,GAAShpO,GAAOgpO,GAASjpO,CAClC,EAOA8+S,YAAa,SAAUxuS,GACrB,OAAOjf,KAAKq2B,MAAM+3N,QAAQnvO,EAC5B,EAMAisO,UAAW,WACT,OAAOlrP,KAAKkpX,QAAQ/mX,OACtB,EAOAgpU,kBAAmB,SAAUhtE,GAC3B,OAAOgtE,EAAkBhtE,GAAcn+P,KAAKq2B,MAAM60N,YAAalrP,KAAKkpX,QACtE,EAOAhkB,UAAW,SAAUxmT,EAAOC,GAC1B,IAAI4uI,EAASvtL,KAAKkpX,QAClB37L,EAAO,GAAK7uI,EACZ6uI,EAAO,GAAK5uI,CACd,EAQAslM,YAAa,SAAUhlO,EAAMsgT,GAC3B,IAAIhyI,EAASvtL,KAAKkpX,QACd7yV,EAAQr2B,KAAKq2B,MAQjB,OAPApX,EAAOoX,EAAMnX,UAAUD,GAEnBjf,KAAKi4O,QAAyB,YAAf5hN,EAAM7xB,OACvB+oL,EAASA,EAAOprL,QAChBgnX,EAAmB57L,EAAQl3J,EAAM9N,UAG5B80O,EAAUp+O,EAAMgqW,EAAmB17L,EAAQgyI,EACpD,EAQAX,YAAa,SAAUhnF,EAAO2nF,GAC5B,IAAIhyI,EAASvtL,KAAKkpX,QACd7yV,EAAQr2B,KAAKq2B,MAEbr2B,KAAKi4O,QAAyB,YAAf5hN,EAAM7xB,OACvB+oL,EAASA,EAAOprL,QAChBgnX,EAAmB57L,EAAQl3J,EAAM9N,UAGnC,IAAI8B,EAAIgzO,EAAUzlB,EAAOrqD,EAAQ07L,EAAmB1pD,GACpD,OAAOv/T,KAAKq2B,MAAMA,MAAMhM,EAC1B,EAQA0qN,YAAa,SAAU/kO,EAAOuvT,GAAQ,EAiBtC9K,eAAgB,SAAU5xN,GACxBA,EAAMA,GAAO,CAAC,EACd,IAAIw9J,EAAYx9J,EAAIw9J,WAAargQ,KAAK4pX,eAClClmX,EAASolX,EAAgB9oX,KAAMqgQ,GAC/BklG,EAAQ7hW,EAAO6hW,MACfxqC,EAAcrxS,EAAI67U,GAAO,SAAUt7E,GACrC,MAAO,CACLryC,MAAO53O,KAAKikP,YAAYgmC,GACxBA,UAAWA,EAEf,GAAGjqR,MACCspX,EAAiBjpH,EAAUn9P,IAAI,kBAEnC,OADAmmX,EAAqBrpX,KAAM+6T,EAAauuD,EAAgBzmR,EAAI08N,OACrDxE,CACT,EAKApG,oBAAqB,WACnB,GAAwB,YAApB30T,KAAKq2B,MAAM7xB,KAEb,MAAO,GAGT,IAAI6wT,EAAiBr1T,KAAKuxP,MAAM/X,SAAS,aACrCtrM,EAAcmnR,EAAenyT,IAAI,eAE/BgrC,EAAc,GAAKA,EAAc,MACrCA,EAAc,GAGhB,IAAI27U,EAAa7pX,KAAKq2B,MAAMyzV,cAAc57U,GACtCotR,EAAmB5xS,EAAImgW,GAAY,SAAUE,GAC/C,OAAOrgW,EAAIqgW,GAAiB,SAAUC,GACpC,MAAO,CACLpyI,MAAO53O,KAAKikP,YAAY+lI,GACxB//F,UAAW+/F,EAEf,GAAGhqX,KACL,GAAGA,MACH,OAAOs7T,CACT,EASAvxC,cAAe,WACb,OAAOg/F,EAAiB/oX,MAAM40T,MAChC,EAKAgxC,cAAe,WACb,OAAO5lW,KAAKuxP,MAAM/X,SAAS,YAC7B,EAUAowI,aAAc,WACZ,OAAO5pX,KAAKuxP,MAAM/X,SAAS,WAC7B,EAMAwR,aAAc,WACZ,IAAIk/B,EAAalqR,KAAKkpX,QAClB/qH,EAAan+P,KAAKq2B,MAAM60N,YACxB1zO,EAAM2mP,EAAW,GAAKA,EAAW,IAAMn+P,KAAKi4O,OAAS,EAAI,GAErD,IAARzgO,IAAcA,EAAM,GACpB,IAAI8xE,EAAOnjF,KAAK6iB,IAAIkhQ,EAAW,GAAKA,EAAW,IAC/C,OAAO/jR,KAAK6iB,IAAIsgE,GAAQ9xE,CAC1B,EAMA4gO,aAAc,KAMd6xI,UAAW,KAOXjB,0BAA2B,WACzB,OAAOA,EAA0BhpX,KACnC,GAiFF,IAAIytB,EAAW85U,EACfpmW,EAAOD,QAAUusB,C,wBCtXjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB0mL,EAAS1mL,EAAQ,OAEjBwiH,EAASxiH,EAAQ,OAEjBmvR,EAAenvR,EAAQ,OAEvBmiU,EAAgBniU,EAAQ,OAyBxB0uS,EAAmBhoH,EAAO+5D,eAE9B,SAASihH,IACPv/B,EAActqV,KAAKL,KACrB,CAIA,SAASmsQ,EAAK1nQ,GAIZzE,KAAKyE,KAAOA,EAKZzE,KAAK00O,UACLi2G,EAActqV,KAAKL,MACnBA,KAAKmqX,mBAAqB,IAAID,EAC9BlqX,KAAKoqX,kBAAoB,IAAIF,EAC7BlqX,KAAKqqX,QACLrqX,KAAKo+E,KACP,CA8OA,SAASksS,EAAUvwB,EAAYrnH,EAAS84E,EAAQ1pT,GAC9C,IAAI8xO,EAAc43E,EAAO53E,YACrBf,EAAWe,EAAcA,EAAYS,iBAAmB,KAE5D,OAAOxB,IAAa7yO,KAAO6yO,EAASknH,GAAYj4V,GAAS,IAC3D,CApQAwwO,EAAO0W,MAAMkhI,EAAgBv/B,GAmB7Bx+E,EAAK5kQ,UAAY,CACf2F,YAAai/P,EACb3nQ,KAAM,OAMNo2J,WAAY,CAAC,IAAK,KAUlBiyG,gBAAiB,SAAU/sP,EAAG6e,EAAG6J,EAAOC,GAEtC,OADAzoC,KAAKuqX,MAAQ,IAAI5yE,EAAa73R,EAAG6e,EAAG6J,EAAOC,GACpCzoC,KAAKuqX,KACd,EAMAvhH,gBAAiB,WACf,OAAOhpQ,KAAKuqX,KACd,EAQAz9G,YAAa,SAAUhtP,EAAG6e,EAAG6J,EAAOC,GAClCzoC,KAAKwqX,YAAY1qW,EAAG6e,EAAG6J,EAAOC,GAC9BzoC,KAAKuiW,UAAY,IAAI5qD,EAAa73R,EAAG6e,EAAG6J,EAAOC,EACjD,EASA+hV,YAAa,SAAU1qW,EAAG6e,EAAG6J,EAAOC,GAClC,IAAIxL,EAAOj9B,KAAKgpQ,kBACZyhH,EAAezqX,KAAKoqX,kBACxBK,EAAapjT,UAAYpqC,EAAKytV,mBAAmB,IAAI/yE,EAAa73R,EAAG6e,EAAG6J,EAAOC,IAC/EgiV,EAAatwH,qBAEbn6P,KAAK2qX,kBACP,EAMAr2I,UAAW,SAAUs2I,GACdA,IAIL5qX,KAAKqqX,QAAUO,EAEf5qX,KAAK6qX,uBACP,EAKAt2I,QAAS,SAAUn3J,GACjBA,EAAOA,GAAQ,EACf,IAAIs3J,EAAY10O,KAAK00O,UAEjBA,IACmB,MAAjBA,EAAU/lO,MACZyuE,EAAOj3E,KAAKyI,IAAI8lO,EAAU/lO,IAAKyuE,IAGZ,MAAjBs3J,EAAU9lO,MACZwuE,EAAOj3E,KAAKwI,IAAI+lO,EAAU9lO,IAAKwuE,KAInCp9E,KAAKo+E,MAAQhB,EAEbp9E,KAAK6qX,sBACP,EAKAC,iBAAkB,WAEhB,IAAIC,EAAU/qX,KAAKgpQ,kBACf95O,EAAK67V,EAAQjrW,EAAIirW,EAAQviV,MAAQ,EACjCrZ,EAAK47V,EAAQpsV,EAAIosV,EAAQtiV,OAAS,EACtC,MAAO,CAACvZ,EAAIC,EACd,EACA0lN,UAAW,WACT,OAAO70O,KAAKqqX,SAAWrqX,KAAK8qX,kBAC9B,EACAl2I,QAAS,WACP,OAAO50O,KAAKo+E,OAAS,CACvB,EAKA87K,iBAAkB,WAChB,OAAOl6P,KAAKmqX,mBAAmBtvD,mBACjC,EAKAgwD,qBAAsB,WAEpB,IAAIG,EAAqBhrX,KAAKoqX,kBAAkBvvD,oBAE5CvoD,EAAgBtyQ,KAAKmqX,mBACrBc,EAAgBjrX,KAAK8qX,mBACrBr7U,EAASzvC,KAAK60O,YACdz3J,EAAOp9E,KAAK40O,UAChBnlM,EAASy/J,EAAO+5D,eAAe,GAAIx5N,EAAQu7U,GAC3CC,EAAgB/7K,EAAO+5D,eAAe,GAAIgiH,EAAeD,GACzD14G,EAAc5pO,OAAS+G,EACvB6iO,EAAcxgP,SAAW,CAACm5V,EAAc,GAAKx7U,EAAO,GAAIw7U,EAAc,GAAKx7U,EAAO,IAClF6iO,EAAcj8O,MAAQ,CAAC+mD,EAAMA,GAE7Bp9E,KAAK2qX,kBACP,EAMAA,iBAAkB,WAChB,IAAIO,EAAoBlrX,KAAKmqX,mBACzBgB,EAAmBnrX,KAAKoqX,kBAC5Be,EAAiBhrX,OAAS+qX,EAC1BA,EAAkB51I,kBAClB61I,EAAiB71I,kBACjBtqG,EAAOrgD,KAAK3qF,KAAKqnE,YAAcrnE,KAAKqnE,UAAY,IAAK8jT,EAAiB9jT,WAAa2jE,EAAOhkI,UAC1FhH,KAAKorX,cAAgBD,EAAiBtwD,oBACtC76T,KAAKqrX,aAAerrX,KAAKqrX,cAAgB,GACzCrgP,EAAOsgP,OAAOtrX,KAAKqrX,aAAcrrX,KAAKqnE,WACtCrnE,KAAKm6P,oBACP,EACA0xF,iBAAkB,WAChB,IAAIv5E,EAAgBtyQ,KAAKmqX,mBAAmB9iT,UACxC8jT,EAAmBnrX,KAAKoqX,kBAC5B,MAAO,CACL93G,cAAeA,EAAgBhgC,EAAOnwO,MAAMmwQ,GAAiBtnI,EAAOhkI,SACpE+kV,SAAUz5G,EAAOnwO,MAAMgpX,EAAiB90V,OACxC21T,YAAa15G,EAAOnwO,MAAMgpX,EAAiBr5V,UAE/C,EAKAwrO,YAAa,WACX,OAAOt9P,KAAKuiW,SACd,EAMAhV,qBAAsB,WACpB,IAAItwT,EAAOj9B,KAAKgpQ,kBAAkB10O,QAElC,OADA2I,EAAKgsO,eAAejpQ,KAAKqnE,WAClBpqC,CACT,EASA63M,YAAa,SAAU71N,EAAMssW,EAAQ3mX,GACnC,IAAIyiE,EAAYkkT,EAASvrX,KAAKorX,cAAgBprX,KAAKqnE,UAEnD,OADAziE,EAAMA,GAAO,GACNyiE,EAAY6vP,EAAiBtyT,EAAKqa,EAAMooD,GAAa6nI,EAAOvkH,KAAK/lF,EAAKqa,EAC/E,EAOA81N,YAAa,SAAU/kO,GACrB,IAAIq7W,EAAerrX,KAAKqrX,aACxB,OAAOA,EAAen0D,EAAiB,GAAIlnT,EAAOq7W,GAAgB,CAACr7W,EAAM,GAAIA,EAAM,GACrF,EAMAw7W,eAAgBl5I,EAAOuD,MAAMy0I,EAAW,eAMxCmB,iBAAkBn5I,EAAOuD,MAAMy0I,EAAW,eAM1CruF,aAAc,SAAUjsR,GACtB,OAAOhQ,KAAKutV,uBAAuBn/F,QAAQp+O,EAAM,GAAIA,EAAM,GAC7D,GAYFsiO,EAAO0W,MAAMmjB,EAAMw+E,GASnB,IAAIl9T,EAAW0+O,EACfhrQ,EAAOD,QAAUusB,C,wBC9SjB,IAAI6kN,EAAS9pN,EAAQ,OAoBjBguN,EAAgB,CAClB9oM,MAAM,EACN0yM,OAAQ,EACRroK,EAAG,EAEHk8O,SAAS,EAETxvT,KAAM,GAENmpC,aAAc,MAEd89U,WAAY,KACZC,aAAc,CACZ9mV,SAAU,KACVyxK,SAAU,MACV8iH,YAAa,KAGfvrR,cAAe,CAAC,EAEhBF,QAAS,GAETwhH,QAAQ,EAER3N,cAAc,EACd+kI,QAAS,CACP74O,MAAM,GAERk2Q,YAAa,CAAC,EACdz1Q,SAAU,CACRT,MAAM,EACNk+U,QAAQ,EACRC,gBAAiB,KACjBv5U,UAAW,CACT1hB,MAAO,OACP4X,MAAO,EACPhkC,KAAM,SAGRyd,OAAQ,CAAC,OAAQ,QACjB2+N,WAAY,CAAC,GAAI,KAEnBxyM,SAAU,CACRV,MAAM,EAENmqE,QAAQ,EAER71G,OAAQ,EACRswC,UAAW,CACT9J,MAAO,IAGX6F,UAAW,CACTX,MAAM,EAENmqE,QAAQ,EACRzhF,OAAQ,EAER0jS,aAAc,KAEdC,aAAc,KACdn/B,OAAQ,EAERzgQ,SAAU,IAEZoU,UAAW,CACTb,MAAM,EACN4E,UAAW,CACT1hB,MAAO,CAAC,QACR4X,MAAO,EACPhkC,KAAM,UAGV+uC,UAAW,CACT7F,MAAM,EACNmyR,UAAW,CACTjvS,MAAO,CAAC,wBAAyB,4BAInCk7V,EAAc,CAAC,EACnBA,EAAYpiG,aAAep3C,EAAOt0H,MAAM,CAEtC/vE,aAAa,EAQb89U,cAAe,KAIfx9U,UAAW,CACTb,MAAM,GAERU,SAAU,CAERk7U,gBAAgB,EAChBx7U,SAAU,QAEZO,UAAW,CACTP,SAAU,SAEX0oM,GACHs1I,EAAY52U,UAAYo9L,EAAOt0H,MAAM,CAGnC/vE,YAAa,CAAC,EAAG,GAsBjBC,YAAa,EAOb87U,UAAW,CAETt8U,MAAM,EAENQ,YAAa,EAEblsC,OAAQ,EAGRswC,UAAW,CAAC,GAGd05U,eAAgB,CACdt+U,MAAM,EACN4E,UAAW,CACT1hB,MAAO,OACP4X,MAAO,KAGVguM,GACHs1I,EAAYG,SAAW35I,EAAO94I,SAAS,CACrCnjE,OAAO,EACPznB,IAAK,UACLD,IAAK,WACJm9W,EAAY52U,WACf42U,EAAYI,QAAU55I,EAAO94I,SAAS,CACpCnjE,OAAO,EACP81V,QAAS,IACRL,EAAY52U,WACf,IAAIznB,EAAWq+V,EACf3qX,EAAOD,QAAUusB,C,uBC7LjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB8pN,GAFU7+L,EAAQojM,QAETruN,EAAQ,QAEjB4jW,EAAe5jW,EAAQ,OAEvB6jW,EAAgB7jW,EAAQ,OAExB8jW,EAAQ9jW,EAAQ,OAEhBmlR,EAAanlR,EAAQ,OAErB+sN,EAAW/sN,EAAQ,OAEnB+jW,EAAyBh3I,EAASg3I,uBAClCC,EAAmBj3I,EAASi3I,iBAC5BC,EAAuBl3I,EAASk3I,qBAEhC90E,EAAenvR,EAAQ,OA6B3B,SAASkkW,EAAer2V,EAAOk7N,GAC7B,IAIIs5E,EACA58R,EACA87Q,EANA4iE,EAAYt2V,EAAM7xB,KAClBoK,EAAM2iP,EAAMq5E,SACZj8T,EAAM4iP,EAAMu5E,SACZ8hD,EAAiBv2V,EAAM60N,YAKT,YAAdyhI,EACF9hD,EAAct5E,EAAMikE,gBAAgBxzT,QAEpCisC,EAAcsjN,EAAMruP,IAAI,eAEnBovO,EAAOxrO,QAAQmnC,KAClBA,EAAc,CAACA,GAAe,EAAGA,GAAe,IAGpB,mBAAnBA,EAAY,KACrBA,EAAc,CAAC,EAAG,IAGpBA,EAAY,GAAK0/P,EAAWjsD,aAAazzM,EAAY,GAAI,GACzDA,EAAY,GAAK0/P,EAAWjsD,aAAazzM,EAAY,GAAI,GACzD87Q,EAAO6iE,EAAe,GAAKA,EAAe,IAAMzmX,KAAK6iB,IAAI4jW,EAAe,KAgB9D,YAARh+W,EACFA,EAAMg+W,EAAe,GACG,oBAARh+W,IAChBA,EAAMA,EAAI,CACRA,IAAKg+W,EAAe,GACpBj+W,IAAKi+W,EAAe,MAIZ,YAARj+W,EACFA,EAAMi+W,EAAe,GACG,oBAARj+W,IAChBA,EAAMA,EAAI,CACRC,IAAKg+W,EAAe,GACpBj+W,IAAKi+W,EAAe,MAIxB,IAAIC,EAAgB,MAAPj+W,EACTk+W,EAAgB,MAAPn+W,EAEF,MAAPC,IACFA,EAAoB,YAAd+9W,EAA0B9hD,EAAc,EAAIr/O,IAAMohS,EAAe,GAAK3+U,EAAY,GAAK87Q,GAGpF,MAAPp7S,IACFA,EAAoB,YAAdg+W,EAA0B9hD,EAAcA,EAAc,EAAIr/O,IAAMohS,EAAe,GAAK3+U,EAAY,GAAK87Q,IAGrG,MAAPn7S,IAAgBg4E,SAASh4E,MAAUA,EAAM48E,MAClC,MAAP78E,IAAgBi4E,SAASj4E,MAAUA,EAAM68E,KAC1Cn1D,EAAM02V,SAASz6I,EAAO06I,MAAMp+W,IAAQ0jO,EAAO06I,MAAMr+W,IAAsB,YAAdg+W,IAA4Bt2V,EAAMwrP,iBAAiBxd,WAAWriQ,QAEnHuvP,EAAM07H,qBAEJr+W,EAAM,GAAKD,EAAM,IAAMk+W,IACzBj+W,EAAM,GAIJA,EAAM,GAAKD,EAAM,IAAMm+W,IACzBn+W,EAAM,IAaV,IAAI+jO,EAAU6e,EAAM7e,QAEpB,GAAIA,GAAyB,SAAdi6I,EAEb,CACA,IACIO,EADAC,EAAkBZ,EAAuB,MAAO75I,GAMpD,GAJAJ,EAAO56H,KAAKy1Q,GAAiB,SAAUv5I,GACrCs5I,GAA6Bt5I,EAAYoE,gBAAkBuZ,EAAMnmN,IACnE,IAEI8hV,EAA2B,CAE7B,IAAIE,EAAoBZ,EAAiBW,GAErCE,EAAgBC,EAAuB1+W,EAAKD,EAAK4iP,EAAO67H,GAC5Dx+W,EAAMy+W,EAAcz+W,IACpBD,EAAM0+W,EAAc1+W,GACtB,CACF,CAEA,MAAO,CACL4+K,OAAQ,CAAC3+K,EAAKD,GAGdk+W,OAAQA,EACRC,OAAQA,EAEZ,CAEA,SAASQ,EAAuB1+W,EAAKD,EAAK4iP,EAAO67H,GAE/C,IAAIljG,EAAa34B,EAAMnmN,KAAK8/M,YACxBqiI,EAAarjG,EAAW,GAAKA,EAAW,GAExCsjG,EAAoBf,EAAqBW,EAAmB77H,EAAMnmN,MAEtE,QAA0B1oC,IAAtB8qX,EACF,MAAO,CACL5+W,IAAKA,EACLD,IAAKA,GAIT,IAAI8+W,EAAc56R,IAClBy/I,EAAO56H,KAAK81Q,GAAmB,SAAUhoW,GACvCioW,EAActnX,KAAKyI,IAAI4W,EAAK2H,OAAQsgW,EACtC,IACA,IAAIC,GAAe76R,IACnBy/I,EAAO56H,KAAK81Q,GAAmB,SAAUhoW,GACvCkoW,EAAcvnX,KAAKwI,IAAI6W,EAAK2H,OAAS3H,EAAKgjB,MAAOklV,EACnD,IACAD,EAActnX,KAAK6iB,IAAIykW,GACvBC,EAAcvnX,KAAK6iB,IAAI0kW,GACvB,IAAIC,EAAgBF,EAAcC,EAE9BE,EAAWj/W,EAAMC,EACjBi/W,EAAuB,GAAKJ,EAAcC,GAAeH,EACzDO,EAAiBF,EAAWC,EAAuBD,EAGvD,OAFAj/W,GAAOm/W,GAAkBJ,EAAcC,GACvC/+W,GAAOk/W,GAAkBL,EAAcE,GAChC,CACL/+W,IAAKA,EACLD,IAAKA,EAET,CAEA,SAASo/W,EAAgB13V,EAAOk7N,GAC9B,IAAIy8H,EAAatB,EAAer2V,EAAOk7N,GACnChkE,EAASygM,EAAWzgM,OACpBr/I,EAAcqjN,EAAMruP,IAAI,eAET,QAAfmzB,EAAM7xB,OACR6xB,EAAMwtF,KAAO0tI,EAAMruP,IAAI,YAGzB,IAAIypX,EAAYt2V,EAAM7xB,KACtB6xB,EAAM6uU,UAAU33K,EAAO,GAAIA,EAAO,IAClCl3J,EAAM43V,WAAW,CACf//U,YAAaA,EACb2+U,OAAQmB,EAAWnB,OACnBC,OAAQkB,EAAWlB,OACnB/+U,YAA2B,aAAd4+U,GAA0C,SAAdA,EAAuBp7H,EAAMruP,IAAI,eAAiB,KAC3F8qC,YAA2B,aAAd2+U,GAA0C,SAAdA,EAAuBp7H,EAAMruP,IAAI,eAAiB,OAO7F,IAAI4qC,EAAWyjN,EAAMruP,IAAI,YAET,MAAZ4qC,GACFzX,EAAM63V,aAAe73V,EAAM63V,YAAYpgV,EAE3C,CAQA,SAASk3T,EAAmBzzG,EAAOp7M,GAGjC,GAFAA,EAAWA,GAAYo7M,EAAMruP,IAAI,QAE7BizC,EACF,OAAQA,GAEN,IAAK,WACH,OAAO,IAAIi2U,EAAa76H,EAAMswB,eAAiBtwB,EAAMswB,iBAAmBtwB,EAAMikE,gBAAiB,CAAC3iO,KAAWA,MAE7G,IAAK,QACH,OAAO,IAAIw5R,EAGb,QACE,OAAQC,EAAM6B,SAASh4U,IAAak2U,GAAerlX,OAAOuqP,GAGlE,CAMA,SAAS68H,EAAgBhjV,GACvB,IAAI+yN,EAAa/yN,EAAK/U,MAAM60N,YACxBt8O,EAAMuvP,EAAW,GACjBxvP,EAAMwvP,EAAW,GACrB,QAASvvP,EAAM,GAAKD,EAAM,GAAKC,EAAM,GAAKD,EAAM,EAClD,CAWA,SAAS0/W,EAAmBjjV,GAC1B,IAAI6zN,EAAiB7zN,EAAKw6T,gBAAgB1iW,IAAI,aAC1CorX,EAAkC,aAAdljV,EAAK5mC,KAAsB4mC,EAAK/U,MAAM60N,YAAY,GAAK,KAE/E,MAA8B,kBAAnB+T,GACTA,EAAiB,SAAUsvH,GACzB,OAAO,SAAUv/W,GAIf,OADAA,EAAMo8B,EAAK/U,MAAM+8R,SAASpkT,GACnBu/W,EAAI3yW,QAAQ,UAAkB,MAAP5M,EAAcA,EAAM,GACpD,CACF,CAPiB,CAOfiwP,GAGKA,GAC4B,oBAAnBA,EACT,SAAUgrB,EAAW9iL,GAW1B,OAJyB,MAArBmnR,IACFnnR,EAAM8iL,EAAYqkG,GAGbrvH,EAAeo0D,EAAgBjoR,EAAM6+O,GAAY9iL,EAC1D,EAEO,SAAU/pD,GACf,OAAOhS,EAAK/U,MAAM+8R,SAASh2Q,EAC7B,CAEJ,CAEA,SAASi2Q,EAAgBjoR,EAAMtpC,GAI7B,MAAqB,aAAdspC,EAAK5mC,KAAsB4mC,EAAK/U,MAAM+8R,SAAStxT,GAASA,CACjE,CAOA,SAAS0sX,EAAuBpjV,GAC9B,IAAI+1O,EAAY/1O,EAAKmmN,MACjBl7N,EAAQ+U,EAAK/U,MAEjB,GAAK8qP,EAAUj+Q,IAAI,oBAAqBmzB,EAAMm3R,UAA9C,CAIA,IACIihE,EACAC,EAFA9K,EAA2B,aAAdx4U,EAAK5mC,KAGlBmqX,EAAsBt4V,EAAM60N,YAE5B04H,EACF8K,EAAYr4V,EAAM9N,SAElBkmW,EAAuBp4V,EAAM4uU,WAC7BypB,EAAYD,EAAqBzsX,QAGnC,IAEIi7B,EAFA2xV,EAAiBxjV,EAAKw6T,gBACtB3mG,EAAiBovH,EAAmBjjV,GAEpC37B,EAAO,EAEPi/W,EAAY,KACdj/W,EAAOtJ,KAAK0I,KAAK6/W,EAAY,KAG/B,IAAK,IAAI1qX,EAAI,EAAGA,EAAI0qX,EAAW1qX,GAAKyL,EAAM,CACxC,IAAIw6Q,EAAYwkG,EAAuBA,EAAqBzqX,GAAK2qX,EAAoB,GAAK3qX,EACtFkrC,EAAQ+vN,EAAegrB,GACvB4kG,EAAsBD,EAAer5E,YAAYrmQ,GACjD4/U,EAAaC,EAAeF,EAAqBD,EAAe1rX,IAAI,WAAa,GACrF+5B,EAAOA,EAAK85D,MAAM+3R,GAAc7xV,EAAO6xV,CACzC,CAEA,OAAO7xV,CA/BP,CAgCF,CAEA,SAAS8xV,EAAenxF,EAAUxnQ,GAChC,IAAI44V,EAAgB54V,EAASjwB,KAAK40B,GAAK,IACnCumD,EAAcs8M,EAASqxF,QACvBpoU,EAAcy6B,EAAY94C,MAC1B0mV,EAAe5tS,EAAY74C,OAC3B0mV,EAAatoU,EAAc1gD,KAAK6iB,IAAI7iB,KAAKmgC,IAAI0oV,IAAkB7oX,KAAK6iB,IAAIkmW,EAAe/oX,KAAKkgC,IAAI2oV,IAChGI,EAAcvoU,EAAc1gD,KAAK6iB,IAAI7iB,KAAKkgC,IAAI2oV,IAAkB7oX,KAAK6iB,IAAIkmW,EAAe/oX,KAAKmgC,IAAI0oV,IACjGK,EAAc,IAAI13E,EAAar2N,EAAYxhE,EAAGwhE,EAAY3iD,EAAGwwV,EAAYC,GAC7E,OAAOC,CACT,CAOA,SAASC,EAA0B/9H,GACjC,IAAIzjN,EAAWyjN,EAAMruP,IAAI,YACzB,OAAmB,MAAZ4qC,EAAmB,OAASA,CACrC,CASA,SAASspR,EAAoBhsR,GAC3B,MAAqB,aAAdA,EAAK5mC,MAA2E,IAApD8qX,EAA0BlkV,EAAKw6T,gBACpE,CA9XAp9U,EAAQ,OAERA,EAAQ,OA8XRtnB,EAAQwrX,eAAiBA,EACzBxrX,EAAQ6sX,gBAAkBA,EAC1B7sX,EAAQ8jW,mBAAqBA,EAC7B9jW,EAAQktX,gBAAkBA,EAC1BltX,EAAQmtX,mBAAqBA,EAC7BntX,EAAQmyT,gBAAkBA,EAC1BnyT,EAAQstX,uBAAyBA,EACjCttX,EAAQouX,0BAA4BA,EACpCpuX,EAAQk2T,oBAAsBA,C,wBC9Z9B,IAAI9kF,EAAS9pN,EAAQ,OAqBjBiF,EAAW,CAKbm9S,OAAQ,SAAUliS,GAChB,IAAIqC,EAAS/qC,KAAK+qC,OACdn8B,EAAO85B,GAA+B,MAArBqC,EAAOwkV,WAAyCxkV,EAAOn8B,IAA3Bm8B,EAAOwkV,WAMxD,OAJIvvX,KAAKorC,MAAe,MAAPx8B,GAAuB,YAARA,GAAoC,oBAARA,IAAuB0jO,EAAO06I,MAAMp+W,KAC9FA,EAAM5O,KAAKorC,KAAK/U,MAAMzJ,MAAMhe,IAGvBA,CACT,EAMAk8T,OAAQ,SAAUpiS,GAChB,IAAIqC,EAAS/qC,KAAK+qC,OACdp8B,EAAO+5B,GAA6B,MAAnBqC,EAAOykV,SAAqCzkV,EAAOp8B,IAAzBo8B,EAAOykV,SAMtD,OAJIxvX,KAAKorC,MAAe,MAAPz8B,GAAuB,YAARA,GAAoC,oBAARA,IAAuB2jO,EAAO06I,MAAMr+W,KAC9FA,EAAM3O,KAAKorC,KAAK/U,MAAMzJ,MAAMje,IAGvBA,CACT,EAKAs+W,iBAAkB,WAChB,IAAIliV,EAAS/qC,KAAK+qC,OAClB,OAA4B,MAArBA,EAAOwkV,YAAyC,MAAnBxkV,EAAOykV,WAA4BzkV,EAAO1U,KAChF,EAMAumS,iBAAkBtqF,EAAOj1C,KAMzBguI,SAAU,SAAUkkD,EAAYC,GAC9BxvX,KAAK+qC,OAAOwkV,WAAaA,EACzBvvX,KAAK+qC,OAAOykV,SAAWA,CACzB,EAKAC,WAAY,WAEVzvX,KAAK+qC,OAAOwkV,WAAavvX,KAAK+qC,OAAOykV,SAAW,IAClD,GAEFruX,EAAOD,QAAUusB,C,wBCnFjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBsjW,EAActjW,EAAQ,OAEtBozT,EAAiBpzT,EAAQ,OAEzB4jP,EAAU5jP,EAAQ,MAElBitT,EAAkBrpE,EAAQqpE,gBAC1BiJ,EAAmBtyE,EAAQsyE,iBAE3BgxC,EAAclnW,EAAQ,OAqBtBmnW,EAAa,CAAC,QAAS,WAAY,OAAQ,OAS/C,SAASliW,EAAS4oB,EAAUu5U,EAAoBC,EAAmBC,GACjEx9I,EAAO56H,KAAKi4Q,GAAY,SAAUx5U,GAChCy5U,EAAmBlsQ,OAAO,CAIxBl/G,KAAM6xC,EAAW,QAAUF,EAC3B4sN,qBAAsB,SAAUh4N,EAAQ2nM,GACtC,IAAIshD,EAAah0R,KAAKg0R,WAClB4iE,EAAsB5iE,EAAayhD,EAAgB1qS,GAAU,CAAC,EAC9DglV,EAAar9I,EAAQs9I,WACzB19I,EAAOt0H,MAAMjzE,EAAQglV,EAAW7sX,IAAIizC,EAAW,SAC/Cm8L,EAAOt0H,MAAMjzE,EAAQ/qC,KAAKiwX,oBAC1BllV,EAAOvmC,KAAOqrX,EAAkBx5U,EAAUtL,GAEtCipP,GACF0qD,EAAiB3zS,EAAQ6rT,EAAqB5iE,EAElD,EAKA6M,cAAe,WACb,IAAI+/B,EAAa5gU,KAAK+qC,OAEE,aAApB61R,EAAWp8T,OACbxE,KAAKkwX,cAAgBR,EAAYS,kBAAkBnwX,MAEvD,EAMAw1T,cAAe,SAAUrnB,GACvB,IAAIpjQ,EAAS/qC,KAAK+qC,OAGlB,GAAoB,aAAhBA,EAAOvmC,KACT,OAAI2pS,EACKpjQ,EAAO9rB,KAGTjf,KAAKkwX,cAAc7rH,UAE9B,EACAwd,eAAgB,WACd,OAAO7hR,KAAKkwX,aACd,EACA15I,cAAelE,EAAOi+C,SAAS,CAAC,CAAC,EAAGu7F,EAAY31U,EAAW,QAAS25U,IAAqB,IAE7F,IACAl0C,EAAeD,yBAAyBtlS,EAAW,OAAQi8L,EAAOuD,MAAMg6I,EAAmBx5U,GAC7F,CAEAl1C,EAAOD,QAAUusB,C,gCCjGjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB0zQ,EAAc1zQ,EAAQ,MAEtBiyO,EAASjyO,EAAQ,OAEjBm6P,EAAYloB,EAAOkoB,UAEnBw0C,EAAc3uS,EAAQ,MAEtB6lW,EAAqBl3D,EAAYk3D,mBACjCiB,EAA4Bn4D,EAAYm4D,0BACxCl4D,EAAsBD,EAAYC,oBAoBlCx0C,EAAQD,IAaZ,SAASomG,EAAiB39U,GAExB,MAAqB,aAAdA,EAAK5mC,KAAsB4rX,EAAmBhlV,GAAQilV,EAAqBjlV,EACpF,CAWA,SAAS09U,EAAgB19U,EAAMi1N,GAE7B,MAAqB,aAAdj1N,EAAK5mC,KAAsB8rX,EAAkBllV,EAAMi1N,GAAa,CACrEklG,MAAOn6T,EAAK/U,MAAM4uU,WAEtB,CAEA,SAASmrB,EAAmBhlV,GAC1B,IAAI28M,EAAa38M,EAAKw6T,gBAClBliW,EAAS6sX,EAA2BnlV,EAAM28M,GAC9C,OAAQA,EAAW7kP,IAAI,SAAWkoC,EAAK/U,MAAMm3R,UAAY,CACvDoH,OAAQ,GACR47D,sBAAuB9sX,EAAO8sX,uBAC5B9sX,CACN,CAEA,SAAS6sX,EAA2BnlV,EAAM28M,GACxC,IAQI6sE,EACA67D,EATAC,EAAcC,EAAavlV,EAAM,UACjCwlV,EAAsBtB,EAA0BvnI,GAChDrkP,EAASmtX,EAAaH,EAAaE,GAEvC,OAAIltX,IAOA4uO,EAAOqhF,WAAWi9D,GACpBh8D,EAASk8D,EAAuC1lV,EAAMwlV,IAEtDH,EAA+C,SAAxBG,EAAiCG,EAAyB3lV,GAAQwlV,EACzFh8D,EAASo8D,EAAoC5lV,EAAMqlV,IAI9CQ,EAAaP,EAAaE,EAAqB,CACpDh8D,OAAQA,EACR47D,sBAAuBC,IAE3B,CAEA,SAASH,EAAkBllV,EAAMi1N,GAC/B,IAQIklG,EACA2rB,EATAC,EAAaR,EAAavlV,EAAM,SAChCgmV,EAAqB9B,EAA0BjvH,GAC/C38P,EAASmtX,EAAaM,EAAYC,GAEtC,GAAI1tX,EACF,OAAOA,EAWT,GAJK28P,EAAUn9P,IAAI,UAAWkoC,EAAK/U,MAAMm3R,YACvC+3C,EAAQ,IAGNjzH,EAAOqhF,WAAWy9D,GACpB7rB,EAAQurB,EAAuC1lV,EAAMgmV,GAAoB,QAItE,GAA2B,SAAvBA,EAA+B,CACpC,IAAIC,EAAed,EAA2BnlV,EAAMA,EAAKw6T,iBACzDsrB,EAAuBG,EAAab,sBACpCjrB,EAAQjzH,EAAO5oN,IAAI2nW,EAAaz8D,QAAQ,SAAU5qC,GAChD,OAAOA,EAAUC,SACnB,GACF,MACEinG,EAAuBE,EACvB7rB,EAAQyrB,EAAoC5lV,EAAM8lV,GAAsB,GAI5E,OAAOD,EAAaE,EAAYC,EAAoB,CAClD7rB,MAAOA,EACP2rB,qBAAsBA,GAE1B,CAEA,SAASb,EAAqBjlV,GAC5B,IAAIm6T,EAAQn6T,EAAK/U,MAAM4uU,WACnBhmG,EAAiBovH,EAAmBjjV,GACxC,MAAO,CACLwpR,OAAQtiF,EAAO5oN,IAAI67U,GAAO,SAAUt7E,EAAW9iL,GAC7C,MAAO,CACL2uN,eAAgB72D,EAAegrB,EAAW9iL,GAC1C8uN,SAAU7qR,EAAK/U,MAAM+8R,SAASnpC,GAC9BA,UAAWA,EAEf,IAEJ,CAKA,SAAS0mG,EAAavlV,EAAMwzG,GAE1B,OAAOgkI,EAAMx3O,GAAMwzG,KAAUgkI,EAAMx3O,GAAMwzG,GAAQ,GACnD,CAEA,SAASiyO,EAAat7V,EAAO1xB,GAC3B,IAAK,IAAIG,EAAI,EAAGA,EAAIuxB,EAAMvzB,OAAQgC,IAChC,GAAIuxB,EAAMvxB,GAAGH,MAAQA,EACnB,OAAO0xB,EAAMvxB,GAAGlC,KAGtB,CAEA,SAASmvX,EAAa17V,EAAO1xB,EAAK/B,GAKhC,OAJAyzB,EAAMtxB,KAAK,CACTJ,IAAKA,EACL/B,MAAOA,IAEFA,CACT,CAEA,SAASivX,EAAyB3lV,GAChC,IAAI1nC,EAASk/Q,EAAMx3O,GAAMkmV,aACzB,OAAiB,MAAV5tX,EAAiBA,EAASk/Q,EAAMx3O,GAAMkmV,aAAelmV,EAAK49U,2BACnE,CAQA,SAASA,EAA0B59U,GACjC,IAAIxpB,EAAS2vW,EAA2CnmV,GACpD6zN,EAAiBovH,EAAmBjjV,GACpC6oH,GAAYryI,EAAO4vW,WAAa5vW,EAAOqmP,aAAe,IAAM9hQ,KAAK40B,GACjE02V,EAAermV,EAAK/U,MACpBq7V,EAAgBD,EAAavmI,YAI7BwjI,EAAY+C,EAAalpW,QAE7B,GAAImpW,EAAc,GAAKA,EAAc,GAAK,EACxC,OAAO,EAGT,IAAIjiX,EAAO,EAEPi/W,EAAY,KACdj/W,EAAOtJ,KAAKwI,IAAI,EAAGxI,KAAK2I,MAAM4/W,EAAY,MAW5C,IARA,IAAIzkG,EAAYynG,EAAc,GAC1BC,EAAWvmV,EAAK64M,YAAYgmC,EAAY,GAAK7+O,EAAK64M,YAAYgmC,GAC9D2nG,EAAQzrX,KAAK6iB,IAAI2oW,EAAWxrX,KAAKmgC,IAAI2tH,IACrC49N,EAAQ1rX,KAAK6iB,IAAI2oW,EAAWxrX,KAAKkgC,IAAI4tH,IACrCqhD,EAAO,EACPw8K,EAAO,EAGJ7nG,GAAaynG,EAAc,GAAIznG,GAAax6Q,EAAM,CACvD,IAAI+4B,EAAQ,EACRC,EAAS,EAGTxL,EAAOi/P,EAAYlzB,gBAAgB/J,EAAegrB,GAAYroQ,EAAOka,KAAM,SAAU,OAEzF0M,EAAqB,IAAbvL,EAAKuL,MACbC,EAAuB,IAAdxL,EAAKwL,OAEd6sK,EAAOnvM,KAAKwI,IAAI2mM,EAAM9sK,EAAO,GAC7BspV,EAAO3rX,KAAKwI,IAAImjX,EAAMrpV,EAAQ,EAChC,CAEA,IAAIuhK,EAAKsL,EAAOs8K,EACZ3nL,EAAK6nL,EAAOD,EAEhB9iX,MAAMi7L,KAAQA,EAAKn3G,KACnB9jF,MAAMk7L,KAAQA,EAAKp3G,KACnB,IAAI/kD,EAAW3nC,KAAKwI,IAAI,EAAGxI,KAAK2I,MAAM3I,KAAKyI,IAAIo7L,EAAIC,KAC/C10K,EAAQqtP,EAAMx3O,EAAKmmN,OACnB24B,EAAa9+O,EAAK8/M,YAClB6mI,EAAmBx8V,EAAMw8V,iBACzBC,EAAgBz8V,EAAMy8V,cAsB1B,OAfwB,MAApBD,GAA6C,MAAjBC,GAAyB7rX,KAAK6iB,IAAI+oW,EAAmBjkV,IAAa,GAAK3nC,KAAK6iB,IAAIgpW,EAAgBtD,IAAc,GAE3IqD,EAAmBjkV,GAEnBvY,EAAM08V,cAAgB/nG,EAAW,IAAM30P,EAAM28V,cAAgBhoG,EAAW,GACzEp8O,EAAWikV,GAITx8V,EAAMy8V,cAAgBtD,EACtBn5V,EAAMw8V,iBAAmBjkV,EACzBvY,EAAM08V,YAAc/nG,EAAW,GAC/B30P,EAAM28V,YAAchoG,EAAW,IAG5Bp8O,CACT,CAEA,SAASyjV,EAA2CnmV,GAClD,IAAI28M,EAAa38M,EAAKw6T,gBACtB,MAAO,CACL4rB,WAAYpmV,EAAK6+U,UAAY7+U,EAAK6+U,YAAc7+U,EAAKgtM,eAAiBhtM,EAAKgtM,eAAiB,GAAK,EACjG6vB,YAAalgB,EAAW7kP,IAAI,WAAa,EACzC44B,KAAMisN,EAAWwO,UAErB,CAEA,SAASy6H,EAAoC5lV,EAAM+mV,EAAkBC,GACnE,IAAInzH,EAAiBovH,EAAmBjjV,GACpCqmV,EAAermV,EAAK/U,MACpBq7V,EAAgBD,EAAavmI,YAC7BnD,EAAa38M,EAAKw6T,gBAClBliW,EAAS,GAET+L,EAAOtJ,KAAKwI,KAAKwjX,GAAoB,GAAK,EAAG,GAC7CE,EAAYX,EAAc,GAC1BhD,EAAY+C,EAAalpW,QAKX,IAAd8pW,GAAmB5iX,EAAO,GAAKi/W,EAAYj/W,EAAO,IACpD4iX,EAAYlsX,KAAKugF,MAAMvgF,KAAK0I,KAAKwjX,EAAY5iX,GAAQA,IAQvD,IAAI6iX,EAAel7D,EAAoBhsR,GACnCmnV,EAAkBxqI,EAAW7kP,IAAI,iBAAmBovX,EACpDE,EAAkBzqI,EAAW7kP,IAAI,iBAAmBovX,EAEpDC,GAAmBF,IAAcX,EAAc,IACjDe,EAAQf,EAAc,IAMxB,IAFA,IAAIznG,EAAYooG,EAETpoG,GAAaynG,EAAc,GAAIznG,GAAax6Q,EACjDgjX,EAAQxoG,GAOV,SAASwoG,EAAQC,GACfhvX,EAAOO,KAAKmuX,EAAWM,EAAO,CAC5B58D,eAAgB72D,EAAeyzH,GAC/Bz8D,SAAUw7D,EAAar+D,SAASs/D,GAChCzoG,UAAWyoG,GAEf,CAEA,OAZIF,GAAmBvoG,EAAYx6Q,IAASiiX,EAAc,IACxDe,EAAQf,EAAc,IAWjBhuX,CACT,CAIA,SAASotX,EAAuC1lV,EAAM+mV,EAAkBC,GACtE,IAAIX,EAAermV,EAAK/U,MACpB4oO,EAAiBovH,EAAmBjjV,GACpC1nC,EAAS,GAYb,OAXA4uO,EAAO56H,KAAK+5Q,EAAaxsB,YAAY,SAAUh7E,GAC7C,IAAIgsC,EAAWw7D,EAAar+D,SAASnpC,GAEjCkoG,EAAiBloG,EAAWgsC,IAC9BvyT,EAAOO,KAAKmuX,EAAWnoG,EAAY,CACjC6rC,eAAgB72D,EAAegrB,GAC/BgsC,SAAUA,EACVhsC,UAAWA,GAGjB,IACOvmR,CACT,CAEAxC,EAAQ6nX,iBAAmBA,EAC3B7nX,EAAQ4nX,gBAAkBA,EAC1B5nX,EAAQ8nX,0BAA4BA,C,iCC/VpC,IAAI12I,EAAS9pN,EAAQ,OAEjB2/E,EAAS3/E,EAAQ,MAEjBmlR,EAAanlR,EAAQ,OAErBwnP,EAAmBxnP,EAAQ,OAqB3BmqW,EAAoB,MAWxB,SAASC,EAAStsD,EAAe5zF,EAAS/nI,GACxC3qG,KAAKy6P,OAAS6rE,CAChB,CA0WA,SAASgkD,EAAUvwB,EAAYrnH,EAAS84E,EAAQ1pT,GAC9C,IAAIwkU,EAAgB9a,EAAO8a,cACvB1yF,EAAc43E,EAAO53E,YACrBf,EAAWyzF,EAAgBA,EAAcjyF,iBAAmBT,EAAcA,EAAYS,iBAAmB,KAC7G,OAAOxB,IAAa7yO,KAAO6yO,EAASknH,GAAYj4V,GAAS,IAC3D,CA7WA8wX,EAASrrX,UAAY,CACnB2F,YAAa0lX,EACbpuX,KAAM,WACNo2J,WAAY,CAAC,OAAQ,SAErBymH,kBAAmB,WACjB,MAAO,CAAC,CACN58Q,KAAM,OACND,KAAM,QACL,QACL,EACAgiU,aAAc,WACZ,OAAOxmU,KAAK6yX,UACd,EACAr5I,SAAU,WACR,OAAOx5O,KAAKy6P,MACd,EACA/a,QAAS,WACP,OAAO1/O,KAAKuqX,KACd,EACAvjD,aAAc,WACZ,OAAOhnU,KAAK8yX,GACd,EACA5rD,cAAe,WACb,OAAOlnU,KAAK+yX,GACd,EACAlkF,UAAW,WACT,OAAO7uS,KAAKs0U,OACd,EAWA/K,kBAAmB,WACjB,OAAOvpU,KAAKgzX,eACd,EAiBAxrD,YAAa,SAAUlxP,GACrBA,EAAOq3N,EAAWslF,UAAU38S,GAC5B,IAAI33C,EAAI23C,EAAK48S,cACT15W,EAAI88D,EAAKE,WAAa,EAC1Bh9D,EAAIA,EAAI,GAAK,IAAMA,EAAIA,EACvB,IAAI0T,EAAIopD,EAAK68S,UACbjmW,EAAIA,EAAI,GAAK,IAAMA,EAAIA,EACvB,IAAI66S,EAAMzxP,EAAK88S,SAEf,OADArrD,EAAM5hU,KAAK6iB,KAAK++S,EAAM,EAAI/nU,KAAKupU,qBAAuB,GAC/C,CACL5qS,EAAGA,EACHnlB,EAAGA,EACH0T,EAAGA,EACH66S,IAAKA,EACLpyS,KAAM2gD,EAAKC,UACXgxP,aAAc5oS,EAAI,IAAMnlB,EAAI,IAAM0T,EAClCopD,KAAMA,EAEV,EACA6wP,YAAa,SAAU7wP,EAAMv2D,GAG3B,OAFAA,EAAIA,GAAK,EAEC,IAANA,IAIJu2D,EAAO,IAAIjiD,KAAKr0B,KAAKwnU,YAAYlxP,GAAM3gD,MACvC2gD,EAAK+8S,QAAQ/8S,EAAK68S,UAAYpzW,IAJrB/f,KAAKwnU,YAAYlxP,EAM5B,EACAt/C,OAAQ,SAAU07M,EAAS/nI,GACzB3qG,KAAKgzX,iBAAmBhzX,KAAKy6P,OAAOjhB,SAAS,YAAYt2O,IAAI,YAC7DlD,KAAKs0U,QAAUt0U,KAAKy6P,OAAOv3P,IAAI,UAC/BlD,KAAKszX,WAAatzX,KAAKy6P,OAAOjhB,SAAS,aAAagG,eAAezlN,WAAa,EAChF/5B,KAAK6yX,WAAa7yX,KAAKuzX,cAAcvzX,KAAKwzX,oBAC1C,IAAIC,EAAQzzX,KAAK6yX,WAAWY,OAAS,EACjCC,EAAU,CAAC,QAAS,UAEpBvqD,EAAWnpU,KAAKy6P,OAAOv3P,IAAI,YAAYf,QAEvCqzU,EAAex1U,KAAKy6P,OAAO+C,qBAE3Bm2H,EAA+B,eAAjB3zX,KAAKs0U,QAA2B,CAACm/C,EAAO,GAAK,CAAC,EAAGA,GACnEnhJ,EAAO56H,KAAK,CAAC,EAAG,IAAI,SAAUvQ,GACxBysR,EAAkBzqD,EAAUhiO,KAC9BquO,EAAak+C,EAAQvsR,IAAQgiO,EAAShiO,GAAOwsR,EAAYxsR,GAE7D,IACA,IAAI0sR,EAAW,CACbrrV,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,aAEVwxI,EAAe9zX,KAAKuqX,MAAQpiR,EAAOo1J,cAAci4E,EAAcq+C,GAOnE,SAASD,EAAkBzqD,EAAUhiO,GACnC,OAAwB,MAAjBgiO,EAAShiO,IAAkC,SAAlBgiO,EAAShiO,EAC3C,CARAmrI,EAAO56H,KAAK,CAAC,EAAG,IAAI,SAAUvQ,GACvBysR,EAAkBzqD,EAAUhiO,KAC/BgiO,EAAShiO,GAAO2sR,EAAaJ,EAAQvsR,IAAQwsR,EAAYxsR,GAE7D,IAMAnnG,KAAK8yX,IAAM3pD,EAAS,GACpBnpU,KAAK+yX,IAAM5pD,EAAS,EACtB,EAUAr0F,YAAa,SAAU71N,EAAMsgT,GAC3BjtF,EAAOxrO,QAAQmY,KAAUA,EAAOA,EAAK,IAC5B,MAATsgT,IAAkBA,GAAQ,GAC1B,IAAIw0D,EAAU/zX,KAAKwnU,YAAYvoT,GAC3B23D,EAAQ52E,KAAK6yX,WACbv8S,EAAOy9S,EAAQxsD,aAEnB,GAAIhI,KAAWw0D,EAAQp+V,MAAQihD,EAAMl4B,MAAM/oB,MAAQo+V,EAAQp+V,KAAOihD,EAAMj4B,IAAIhpB,KAAOg9V,GACjF,MAAO,CAACnnS,IAAKA,KAGf,IAAIwoS,EAAOD,EAAQhsD,IAEfksD,EAAUj0X,KAAKuzX,cAAc,CAAC38S,EAAMl4B,MAAM/oB,KAAM2gD,IAAO29S,QAE3D,MAAqB,aAAjBj0X,KAAKs0U,QACA,CAACt0U,KAAKuqX,MAAMzqW,EAAIk0W,EAAOh0X,KAAK8yX,IAAM9yX,KAAK8yX,IAAM,EAAG9yX,KAAKuqX,MAAM5rV,EAAIs1V,EAAUj0X,KAAK+yX,IAAM/yX,KAAK+yX,IAAM,GAGjG,CAAC/yX,KAAKuqX,MAAMzqW,EAAIm0W,EAAUj0X,KAAK8yX,IAAM9yX,KAAK8yX,IAAM,EAAG9yX,KAAKuqX,MAAM5rV,EAAIq1V,EAAOh0X,KAAK+yX,IAAM/yX,KAAK+yX,IAAM,EACxG,EASAh+I,YAAa,SAAU/kO,GACrB,IAAIsmE,EAAOt2E,KAAKk0X,YAAYlkX,GAC5B,OAAOsmE,GAAQA,EAAK3gD,IACtB,EASA87O,WAAY,SAAUxyP,EAAMsgT,GAC1B,IAAIvvT,EAAQhQ,KAAK80O,YAAY71N,EAAMsgT,GACnC,MAAO,CACL7tD,aAAc,CACZ5xP,EAAG9P,EAAM,IAAMhQ,KAAK8yX,IAAM9yX,KAAKszX,YAAc,EAC7C30V,EAAG3uB,EAAM,IAAMhQ,KAAK+yX,IAAM/yX,KAAKszX,YAAc,EAC7C9qV,MAAOxoC,KAAK8yX,IAAM9yX,KAAKszX,WACvB7qV,OAAQzoC,KAAK+yX,IAAM/yX,KAAKszX,YAE1B7jV,OAAQz/B,EACRo3T,GAAI,CAACp3T,EAAM,GAAKhQ,KAAK8yX,IAAM,EAAG9iX,EAAM,GAAKhQ,KAAK+yX,IAAM,GACpDoB,GAAI,CAACnkX,EAAM,GAAKhQ,KAAK8yX,IAAM,EAAG9iX,EAAM,GAAKhQ,KAAK+yX,IAAM,GACpDqB,GAAI,CAACpkX,EAAM,GAAKhQ,KAAK8yX,IAAM,EAAG9iX,EAAM,GAAKhQ,KAAK+yX,IAAM,GACpDsB,GAAI,CAACrkX,EAAM,GAAKhQ,KAAK8yX,IAAM,EAAG9iX,EAAM,GAAKhQ,KAAK+yX,IAAM,GAExD,EAQAmB,YAAa,SAAUlkX,GACrB,IAAIskX,EAAOnuX,KAAK2I,OAAOkB,EAAM,GAAKhQ,KAAKuqX,MAAMzqW,GAAK9f,KAAK8yX,KAAO,EAC1DyB,EAAOpuX,KAAK2I,OAAOkB,EAAM,GAAKhQ,KAAKuqX,MAAM5rV,GAAK3+B,KAAK+yX,KAAO,EAC1Dn8S,EAAQ52E,KAAK6yX,WAAWj8S,MAE5B,MAAqB,aAAjB52E,KAAKs0U,QACAt0U,KAAKw0X,sBAAsBD,EAAMD,EAAO,EAAG19S,GAG7C52E,KAAKw0X,sBAAsBF,EAAMC,EAAO,EAAG39S,EACpD,EAKA40S,eAAgBl5I,EAAOuD,MAAMy0I,EAAW,eAKxCmB,iBAAkBn5I,EAAOuD,MAAMy0I,EAAW,eAQ1CkJ,iBAAkB,WAChB,IAAI58S,EAAQ52E,KAAKy6P,OAAOv3P,IAAI,SAExB2iU,EAAKjvP,EAUT,GARI07J,EAAOxrO,QAAQ++T,IAAqB,IAAdA,EAAG7jU,SAC3B6jU,EAAKA,EAAG,IAGN,UAAU1qT,KAAK0qT,KACjBjvP,EAAQ,CAACivP,EAAK,SAAUA,EAAK,WAG3B,uBAAuB1qT,KAAK0qT,GAAK,CACnC,IAAInnR,EAAQ1+C,KAAKwnU,YAAY3B,GACzBwB,EAAW3oR,EAAM43B,KACrB+wP,EAASI,SAASJ,EAAS7wP,WAAa,GACxC,IAAI73B,EAAM3+C,KAAKmnU,YAAYE,GAAW,GACtCzwP,EAAQ,CAACl4B,EAAM6oR,aAAc5oR,EAAI4oR,aACnC,CAEI,oCAAoCpsT,KAAK0qT,KAC3CjvP,EAAQ,CAACivP,EAAIA,IAGf,IAAIhmE,EAAM7/P,KAAKuzX,cAAc38S,GAM7B,OAJIipL,EAAInhN,MAAM/oB,KAAOkqO,EAAIlhN,IAAIhpB,MAC3BihD,EAAM57C,UAGD47C,CACT,EAUA28S,cAAe,SAAU38S,GAEvB,IAAI69S,EADJ79S,EAAQ,CAAC52E,KAAKwnU,YAAY5wP,EAAM,IAAK52E,KAAKwnU,YAAY5wP,EAAM,KAGxDA,EAAM,GAAGjhD,KAAOihD,EAAM,GAAGjhD,OAC3B8+V,GAAW,EACX79S,EAAM57C,WAGR,IAAI05V,EAASvuX,KAAK2I,MAAM8nE,EAAM,GAAGjhD,KAAOg9V,GAAqBxsX,KAAK2I,MAAM8nE,EAAM,GAAGjhD,KAAOg9V,GAAqB,EAWzGr8S,EAAO,IAAIjiD,KAAKuiD,EAAM,GAAGjhD,MACzBg/V,EAAer+S,EAAK68S,UACpByB,EAAah+S,EAAM,GAAGN,KAAK68S,UAC/B78S,EAAK+8S,QAAQsB,EAAeD,EAAS,GAErC,IAAIG,EAAUv+S,EAAK68S,UAEnB,GAAI0B,IAAYD,EAAY,CAC1B,IAAI/rL,EAAOvyH,EAAKC,UAAYK,EAAM,GAAGjhD,KAAO,EAAI,GAAK,EAErD,OAAQk/V,EAAUv+S,EAAK68S,aAAeyB,IAAet+S,EAAKC,UAAYK,EAAM,GAAGjhD,MAAQkzK,EAAO,EAC5F6rL,GAAU7rL,EACVvyH,EAAK+8S,QAAQwB,EAAUhsL,EAE3B,CAEA,IAAI4qL,EAAQttX,KAAK2I,OAAO4lX,EAAS99S,EAAM,GAAGmxP,IAAM,GAAK,GACjDksD,EAAUQ,EAAoB,EAARhB,EAAYA,EAAQ,EAE9C,OADAgB,GAAY79S,EAAM57C,UACX,CACL47C,MAAO,CAACA,EAAM,GAAG2wP,aAAc3wP,EAAM,GAAG2wP,cACxC7oR,MAAOk4B,EAAM,GACbj4B,IAAKi4B,EAAM,GACX89S,OAAQA,EACRjB,MAAOA,EAEPQ,QAASA,EACTxqD,MAAO7yP,EAAM,GAAGmxP,IAChByB,MAAO5yP,EAAM,GAAGmxP,IAEpB,EAWAysD,sBAAuB,SAAUP,EAASlsD,EAAKnxP,GAC7C,IAAIk+S,EAAY90X,KAAKuzX,cAAc38S,GAEnC,GAAIq9S,EAAUa,EAAUrB,OAAqB,IAAZQ,GAAiBlsD,EAAM+sD,EAAUrrD,OAASwqD,IAAYa,EAAUrB,OAAS1rD,EAAM+sD,EAAUtrD,MACxH,OAAO,EAGT,IAAIurD,EAAyB,GAAfd,EAAU,GAASa,EAAUrrD,MAAQ1B,EAC/CzxP,EAAO,IAAIjiD,KAAKygW,EAAUp2U,MAAM/oB,MAEpC,OADA2gD,EAAK+8S,QAAQyB,EAAUp2U,MAAMxxB,EAAI6nW,GAC1B/0X,KAAKwnU,YAAYlxP,EAC1B,GAEFs8S,EAASh4N,WAAag4N,EAASrrX,UAAUqzJ,WACzCg4N,EAASvxG,kBAAoBuxG,EAASrrX,UAAU85Q,kBAEhDuxG,EAAS5rX,OAAS,SAAU0rO,EAAS/nI,GACnC,IAAIqqR,EAAe,GAYnB,OAXAtiJ,EAAQe,cAAc,YAAY,SAAU6yF,GAC1C,IAAI9zE,EAAW,IAAIogI,EAAStsD,EAAe5zF,EAAS/nI,GACpDqqR,EAAa/wX,KAAKuuP,GAClB8zE,EAAcjyF,iBAAmBme,CACnC,IACA9f,EAAQy/E,YAAW,SAAU8iE,GACoB,aAA3CA,EAAe/xX,IAAI,sBAErB+xX,EAAe5gJ,iBAAmB2gJ,EAAaC,EAAe/xX,IAAI,kBAAoB,GAE1F,IACO8xX,CACT,EASAhlH,EAAiB52L,SAAS,WAAYw5S,GACtC,IAAInlW,EAAWmlW,EACfzxX,EAAOD,QAAUusB,C,wBC3ZjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBozT,EAAiBpzT,EAAQ,OAEzB4jP,EAAU5jP,EAAQ,MAElBitT,EAAkBrpE,EAAQqpE,gBAC1By/C,EAAiB9oH,EAAQ8oH,eACzBx2C,EAAmBtyE,EAAQsyE,iBAoB3By2C,EAAgBv5C,EAAel4N,OAAO,CACxCl/G,KAAM,WAKN6vO,iBAAkB,KAClBmC,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EACH1nC,KAAM,GACNE,IAAK,GACL44R,SAAU,GAEVv3R,OAAQ,aAERrD,UAAW,CACTb,MAAM,EACN4E,UAAW,CACT1hB,MAAO,OACP4X,MAAO,EACPhkC,KAAM,UAIV+6O,UAAW,CACT3uN,MAAO,OACPi3C,YAAa,EACbg8J,YAAa,QAGfwlG,SAAU,CACR37R,MAAM,EAEN25R,SAAU,EAEVv1S,SAAU,QACV8oQ,OAAQ,MAERpG,QAAS,KACT5jQ,MAAO,QAGT+3S,WAAY,CACVj7R,MAAM,EAEN5b,SAAU,QACV8oQ,OAAQ,EAER7gP,MAAO,SAEPy6O,QAAS,KACTlmP,UAAW,KACX1d,MAAO,QAGTu3S,UAAW,CACTz6R,MAAM,EAEN5b,SAAU,KACV8oQ,OAAQ,GACRtsP,UAAW,KACX1d,MAAO,OACPwJ,WAAY,aACZF,WAAY,SACZC,SAAU,KAOdu9B,KAAM,SAAU3sB,EAAQg8M,EAAarU,EAASikH,GAC5C,IAAIC,EAAsBnhB,EAAgB1qS,GAC1CoqV,EAAc5zI,WAAWvhP,KAAM,OAAQ+C,WACvC8zV,EAA8B9rT,EAAQ6rT,EACxC,EAKA9zF,YAAa,SAAU/3N,EAAQ4rT,GAC7Bw+B,EAAc5zI,WAAWvhP,KAAM,cAAe+C,WAC9C8zV,EAA8B72V,KAAK+qC,OAAQA,EAC7C,IAGF,SAAS8rT,EAA8BnxV,EAAQoxV,GAE7C,IAAI3tB,EAAWzjU,EAAOyjU,SAEjB72F,EAAOxrO,QAAQqiU,GAEW,IAApBA,EAASnnU,SAClBmnU,EAAS,GAAKA,EAAS,IAFvBA,EAAWzjU,EAAOyjU,SAAW,CAACA,EAAUA,GAK1C,IAAIwV,EAAarsG,EAAO5oN,IAAI,CAAC,EAAG,IAAI,SAAU0rW,GAQ5C,OAJIF,EAAep+B,EAAKs+B,KACtBjsD,EAASisD,GAAS,QAGM,MAAnBjsD,EAASisD,IAAsC,SAApBjsD,EAASisD,EAC7C,IACA12C,EAAiBh5U,EAAQoxV,EAAK,CAC5BtyV,KAAM,MACNm6U,WAAYA,GAEhB,CAEA,IAAIlxT,EAAW0nW,EACfh0X,EAAOD,QAAUusB,C,oBC5HjB,SAASA,EAASolN,GAChB,IAAI51M,EAAO41M,EAAS6M,UAChBo1I,EAAYjiJ,EAAS2zF,eACzB,MAAO,CACL3zF,SAAU,CACRruO,KAAM,WACNsb,EAAGmd,EAAKnd,EACR6e,EAAG1B,EAAK0B,EACR6J,MAAOvL,EAAKuL,MACZC,OAAQxL,EAAKwL,OACb8zJ,UAAWs2C,EAASm0F,eACpBxqI,WAAYq2C,EAASq0F,gBACrB4tD,UAAW,CACTp2U,MAAOo2U,EAAUp2U,MACjBC,IAAKm2U,EAAUn2U,IACf80U,MAAOqB,EAAUrB,MACjB4B,SAAUP,EAAUJ,SAGxB/pR,IAAK,CACHitI,MAAO,SAAU34N,EAAMsgT,GACrB,OAAO1sF,EAASiC,YAAY71N,EAAMsgT,EACpC,GAGN,CAEAp+T,EAAOD,QAAUusB,C,wBC7CjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB++U,EAAO/+U,EAAQ,OA+Bf8sW,EAAS,SAAUrjP,EAAK57G,EAAOmxU,EAAarxT,EAAUrkB,GACxDy1U,EAAKlnW,KAAKL,KAAMiyI,EAAK57G,EAAOmxU,GAU5BxnW,KAAKwE,KAAO2xC,GAAY,QASxBn2C,KAAK8xB,SAAWA,GAAY,QAC9B,EAEAwjW,EAAO/tX,UAAY,CACjB2F,YAAaooX,EAKbrzX,MAAO,EAQPszX,gBAAiB,KAMjBhkI,MAAO,KACPnZ,aAAc,WACZ,IAAItmN,EAAW9xB,KAAK8xB,SACpB,MAAoB,QAAbA,GAAmC,WAAbA,CAC/B,EAUAm3R,gBAAiB,SAAU2gB,GACzB,IAAI90P,EAAM90E,KAAKkrP,YAIf,OAHAp2K,EAAI,GAAK90E,KAAKgkP,cAAclvK,EAAI,IAChCA,EAAI,GAAK90E,KAAKgkP,cAAclvK,EAAI,IAChC80P,GAAO90P,EAAI,GAAKA,EAAI,IAAMA,EAAI95C,UACvB85C,CACT,EACAgvK,aAAc,WACZ9jP,KAAKmrC,KAAK24M,cACZ,EAKA/O,YAAa,SAAU/kO,EAAOuvT,GAC5B,OAAOv/T,KAAK4+T,YAAY5+T,KAAKgqV,aAAah6U,EAAmB,MAAbhQ,KAAKiyI,IAAc,EAAI,IAAKstL,EAC9E,EAQAyqB,aAAc,KAQdhmG,cAAe,MAEjB1R,EAAO2qB,SAASq4H,EAAQ/tB,GACxB,IAAI95U,EAAW6nW,EACfn0X,EAAOD,QAAUusB,C,wBC9HjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBozT,EAAiBpzT,EAAQ,OAEzBgtW,EAAmBhtW,EAAQ,OAE3BitW,EAAuBjtW,EAAQ,OAoB/BktW,EAAY95C,EAAel4N,OAAO,CACpCl/G,KAAM,kBAKN4mC,KAAM,KAKNssB,KAAM,WACJg+T,EAAUn0I,WAAWvhP,KAAM,OAAQ+C,WACnC/C,KAAKyvX,YACP,EAKA3sH,YAAa,WACX4yH,EAAUn0I,WAAWvhP,KAAM,cAAe+C,WAC1C/C,KAAKyvX,YACP,EAKAkG,YAAa,WACXD,EAAUn0I,WAAWvhP,KAAM,cAAe+C,WAC1C/C,KAAKyvX,YACP,EAMA7yD,iBAAkB,WAChB,OAAO58T,KAAK0yO,QAAQq5D,gBAAgB,CAClCr4D,SAAU,OACVzxO,MAAOjC,KAAK+qC,OAAO6qV,UACnBpsX,GAAIxJ,KAAK+qC,OAAO8qV,SACf,EACL,IAGF,SAASC,EAAYj9F,EAAS9tP,GAE5B,OAAOA,EAAOvmC,OAASumC,EAAO9rB,KAAO,WAAa,QACpD,CAEAqzN,EAAOt0H,MAAM03Q,EAAUnuX,UAAWkuX,GAClC,IAAIM,EAAc,CAIhB5oW,OAAQ,GAEVqoW,EAAiB,IAAKE,EAAWI,EAAaC,GAC9CP,EAAiB,IAAKE,EAAWI,EAAaC,GAC9C,IAAItoW,EAAWioW,EACfv0X,EAAOD,QAAUusB,C,iCCtFjB,IAAI6kN,EAAS9pN,EAAQ,OA0BrB,SAASwtW,EAAc/jP,GACrB,OAAOjyI,KAAKi2X,MAAMhkP,EACpB,CAOA,IAAIikP,EAAY,SAAUzxX,GACxBzE,KAAKi2X,MAAQ,CAAC,EACdj2X,KAAKm2X,SAAW,GAKhBn2X,KAAKyE,KAAOA,GAAQ,EACtB,EAEAyxX,EAAU3uX,UAAY,CACpB2F,YAAagpX,EACb1xX,KAAM,YAON2sQ,QAAS,SAAUl/H,GACjB,OAAOjyI,KAAKi2X,MAAMhkP,EACpB,EAMAg/K,QAAS,WACP,OAAO3+E,EAAO5oN,IAAI1pB,KAAKm2X,SAAUH,EAAeh2X,KAClD,EAKA2pR,eAAgB,SAAUgjG,GAExB,OADAA,EAAYA,EAAUrtW,cACfgzN,EAAOtiN,OAAOhwB,KAAKixT,WAAW,SAAU7lR,GAC7C,OAAOA,EAAK/U,MAAM7xB,OAASmoX,CAC7B,GACF,EAMAyJ,QAAS,SAAUhrV,GACjB,IAAI6mG,EAAM7mG,EAAK6mG,IACfjyI,KAAKi2X,MAAMhkP,GAAO7mG,EAElBprC,KAAKm2X,SAASlyX,KAAKguI,EACrB,EAOAgyG,YAAa,SAAUj1O,GACrB,OAAOhP,KAAKq2X,kBAAkBrnX,EAAK,cACrC,EAOA4vT,YAAa,SAAU5vT,GACrB,OAAOhP,KAAKq2X,kBAAkBrnX,EAAK,cACrC,EACAqnX,kBAAmB,SAAUx1W,EAAOzD,GAIlC,IAHA,IAAIk5W,EAAUt2X,KAAKm2X,SACfxzS,EAAS9hE,aAAiBha,MAAQ,GAAK,CAAC,EAEnC7C,EAAI,EAAGA,EAAIsyX,EAAQt0X,OAAQgC,IAAK,CACvC,IAAIiuI,EAAMqkP,EAAQtyX,GACdonC,EAAOprC,KAAKi2X,MAAMhkP,GACtBtvD,EAAOsvD,GAAO7mG,EAAKhuB,GAAQyD,EAAMoxH,GACnC,CAEA,OAAOtvD,CACT,GAEF,IAAIl1D,EAAWyoW,EACf/0X,EAAOD,QAAUusB,C,wBCtHjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBmvR,EAAenvR,EAAQ,OAEvB0tW,EAAY1tW,EAAQ,OAoBxB,SAAS+tW,EAAY9xX,GACnByxX,EAAU71X,KAAKL,KAAMyE,EACvB,CAEA8xX,EAAYhvX,UAAY,CACtB2F,YAAaqpX,EACb/xX,KAAM,cAMNo2J,WAAY,CAAC,IAAK,KAOlBo9E,YAAa,WACX,OAAOh4O,KAAK2pR,eAAe,WAAW,IAAM3pR,KAAK2pR,eAAe,QAAQ,IAAM3pR,KAAKmxQ,QAAQ,IAC7F,EAOA8qB,aAAc,SAAUjsR,GACtB,IAAIwmX,EAAQx2X,KAAKmxQ,QAAQ,KACrBslH,EAAQz2X,KAAKmxQ,QAAQ,KACzB,OAAOqlH,EAAMpoI,QAAQooI,EAAMxsC,aAAah6U,EAAM,MAAQymX,EAAMroI,QAAQqoI,EAAMzsC,aAAah6U,EAAM,IAC/F,EAOAy9S,YAAa,SAAUxuS,GACrB,OAAOjf,KAAKmxQ,QAAQ,KAAKs8C,YAAYxuS,EAAK,KAAOjf,KAAKmxQ,QAAQ,KAAKs8C,YAAYxuS,EAAK,GACtF,EAOA61N,YAAa,SAAU71N,EAAMy3W,EAAU9xX,GACrC,IAAIgvC,EAAQ5zC,KAAKmxQ,QAAQ,KACrBt9N,EAAQ7zC,KAAKmxQ,QAAQ,KAIzB,OAHAvsQ,EAAMA,GAAO,GACbA,EAAI,GAAKgvC,EAAMowM,cAAcpwM,EAAMqwM,YAAYhlO,EAAK,KACpDra,EAAI,GAAKivC,EAAMmwM,cAAcnwM,EAAMowM,YAAYhlO,EAAK,KAC7Cra,CACT,EAOAs7O,UAAW,SAAUjhO,EAAMra,GACzB,IAAI+xX,EAAS32X,KAAKmxQ,QAAQ,KAAK96O,MAC3BugW,EAAS52X,KAAKmxQ,QAAQ,KAAK96O,MAC3BwgW,EAAcF,EAAOzrI,YACrB4rI,EAAcF,EAAO1rI,YACrBprO,EAAI62W,EAAO/pW,MAAM3N,EAAK,IACtB0f,EAAIi4V,EAAOhqW,MAAM3N,EAAK,IAI1B,OAHAra,EAAMA,GAAO,GACbA,EAAI,GAAKuB,KAAKyI,IAAIzI,KAAKwI,IAAIxI,KAAKyI,IAAIioX,EAAY,GAAIA,EAAY,IAAK/2W,GAAI3Z,KAAKwI,IAAIkoX,EAAY,GAAIA,EAAY,KAC9GjyX,EAAI,GAAKuB,KAAKyI,IAAIzI,KAAKwI,IAAIxI,KAAKyI,IAAIkoX,EAAY,GAAIA,EAAY,IAAKn4V,GAAIx4B,KAAKwI,IAAImoX,EAAY,GAAIA,EAAY,KACvGlyX,CACT,EAOAmwO,YAAa,SAAU/kO,EAAOpL,GAC5B,IAAIgvC,EAAQ5zC,KAAKmxQ,QAAQ,KACrBt9N,EAAQ7zC,KAAKmxQ,QAAQ,KAIzB,OAHAvsQ,EAAMA,GAAO,GACbA,EAAI,GAAKgvC,EAAMgrR,YAAYhrR,EAAMo2S,aAAah6U,EAAM,KACpDpL,EAAI,GAAKivC,EAAM+qR,YAAY/qR,EAAMm2S,aAAah6U,EAAM,KAC7CpL,CACT,EAMAk/O,aAAc,SAAU14M,GACtB,OAAOprC,KAAKmxQ,QAAqB,MAAb/lO,EAAK6mG,IAAc,IAAM,IAC/C,EAOA6lG,QAAS,WACP,IAAIi/I,EAAU/2X,KAAKmxQ,QAAQ,KAAK83C,kBAC5B+tE,EAAUh3X,KAAKmxQ,QAAQ,KAAK83C,kBAC5BnpS,EAAI3Z,KAAKyI,IAAImoX,EAAQ,GAAIA,EAAQ,IACjCp4V,EAAIx4B,KAAKyI,IAAIooX,EAAQ,GAAIA,EAAQ,IACjCxuV,EAAQriC,KAAKwI,IAAIooX,EAAQ,GAAIA,EAAQ,IAAMj3W,EAC3C2oB,EAAStiC,KAAKwI,IAAIqoX,EAAQ,GAAIA,EAAQ,IAAMr4V,EAC5C1B,EAAO,IAAI06Q,EAAa73R,EAAG6e,EAAG6J,EAAOC,GACzC,OAAOxL,CACT,GAEFq1M,EAAO2qB,SAASs5H,EAAaL,GAC7B,IAAIzoW,EAAW8oW,EACfp1X,EAAOD,QAAUusB,C,iCC3IjB,IAAIgmB,EAAUjrB,EAAQ,OAIlBoH,GAFU6jB,EAAQojM,QAEVruN,EAAQ,QAEhBlnB,EAAWsuB,EAAMtuB,SACjBo2G,EAAO9nF,EAAM8nF,KACbhuF,EAAMkG,EAAMlG,IACZrS,EAAUuY,EAAMvY,QAGhB+0P,GAFWx8O,EAAM80N,SAEPl8N,EAAQ,OAElB+0O,EAAgB6O,EAAQ7O,cAExB45D,EAAc3uS,EAAQ,MAEtBw8U,EAAqB7tC,EAAY6tC,mBACjCopB,EAAkBj3D,EAAYi3D,gBAC9BL,EAAkB52D,EAAY42D,gBAC9BS,EAAyBr3D,EAAYq3D,uBAErC+H,EAAc/tW,EAAQ,OAEtB8sW,EAAS9sW,EAAQ,OAEjBwnP,EAAmBxnP,EAAQ,OAE3Bi4P,EAAmBj4P,EAAQ,OAE3Bi0U,EAAsBh8E,EAAiBg8E,oBAkC3C,SAASw6B,EAAoB91G,EAAWw7C,EAAWjqF,GACjD,OAAOyuC,EAAUy7C,qBAAuBD,CAC1C,CAEA,SAASu6D,EAAKv6D,EAAWjqF,EAAS/nI,GAKhC3qG,KAAKm3X,WAAa,CAAC,EAMnBn3X,KAAKo3X,YAAc,GAMnBp3X,KAAKq3X,SAAW,CAAC,EAMjBr3X,KAAKs3X,UAAY,GAEjBt3X,KAAKu3X,eAAe56D,EAAWjqF,EAAS/nI,GAExC3qG,KAAKuxP,MAAQorE,CACf,CAhEAn0S,EAAQ,MAkER,IAAIgvW,EAAYN,EAAK3vX,UAgCrB,SAASkwX,EAAcC,EAASzxG,EAAc76O,EAAMusV,GAClDvsV,EAAKmqV,gBAAkB,WAErB,OAAOqC,EAAoB,CAACA,GAAqB,EACnD,EAKA,IACIA,EADArmE,EAAYmmE,EAAQzxG,GAEpB9E,EAAY/1O,EAAKmmN,MACjBq6H,EAASzqG,EAAUj+Q,IAAI,mBACvB2oX,EAAkB1qG,EAAUj+Q,IAAI,4BAEpC,GAAK0oX,EAAL,CAKA,GAAuB,MAAnBC,EACEgM,EAAgBtmE,EAAUs6D,MAC5B+L,EAAoBrmE,EAAUs6D,SAIhC,IAAK,IAAI1kR,KAAOoqN,EACd,GAAIA,EAAUjrT,eAAe6gG,IAAQ0wR,EAAgBtmE,EAAUpqN,MAE3DwwR,EAAcG,EAAmBvmE,EAAUpqN,KAAQ,CACrDywR,EAAoBrmE,EAAUpqN,GAC9B,KACF,CAIAywR,IACFD,EAAcG,EAAmBF,KAAsB,EApBzD,CAuBA,SAASE,EAAmB1sV,GAC1B,OAAOA,EAAK6mG,IAAM,IAAM7mG,EAAKnpC,KAC/B,CACF,CAEA,SAAS41X,EAAgBzsV,GACvB,OAAOA,GAAsB,aAAdA,EAAK5mC,MAAqC,SAAd4mC,EAAK5mC,MAAmB4pX,EAAgBhjV,EACrF,CAwVA,SAAS2sV,EAAoB3sV,EAAM4sV,GACjC,IAAI9tG,EAAa9+O,EAAK8/M,YAClB+sI,EAAgB/tG,EAAW,GAAKA,EAAW,GAE/C9+O,EAAK44M,cAA6B,MAAb54M,EAAK6mG,IAAc,SAAU2lG,GAChD,OAAOA,EAAQogJ,CACjB,EAAI,SAAUpgJ,GACZ,OAAOqgJ,EAAgBrgJ,EAAQogJ,CACjC,EACA5sV,EAAK4+S,aAA4B,MAAb5+S,EAAK6mG,IAAc,SAAU2lG,GAC/C,OAAOA,EAAQogJ,CACjB,EAAI,SAAUpgJ,GACZ,OAAOqgJ,EAAgBrgJ,EAAQogJ,CACjC,CACF,CApbAR,EAAUhzX,KAAO,OACjBgzX,EAAU1mE,oBAAqB,EAE/B0mE,EAAU93I,QAAU,WAClB,OAAO1/O,KAAKuqX,KACd,EAEAiN,EAAUxgW,OAAS,SAAU07M,EAAS/nI,GACpC,IAAI+sR,EAAU13X,KAAKq3X,SAEnBr3X,KAAKk4X,aAAaxlJ,EAAS1yO,KAAKuxP,OAEhC75I,EAAKggR,EAAQ53W,GAAG,SAAU8zB,GACxBm6U,EAAgBn6U,EAAMvd,MAAOud,EAAM29M,MACrC,IACA75I,EAAKggR,EAAQ/4V,GAAG,SAAUkV,GACxBk6U,EAAgBl6U,EAAMxd,MAAOwd,EAAM09M,MACrC,IAEA,IAAIomI,EAAgB,CAAC,EACrBjgR,EAAKggR,EAAQ53W,GAAG,SAAU8zB,GACxB6jV,EAAcC,EAAS,IAAK9jV,EAAO+jV,EACrC,IACAjgR,EAAKggR,EAAQ/4V,GAAG,SAAUkV,GACxB4jV,EAAcC,EAAS,IAAK7jV,EAAO8jV,EACrC,IAGA33X,KAAK6rC,OAAO7rC,KAAKuxP,MAAO5mJ,EAC1B,EAyDA6sR,EAAU3rV,OAAS,SAAU8wR,EAAWhyN,EAAKwtR,GAC3C,IAAIr7D,EAAWv/D,EAAco/D,EAAUn/D,qBAAsB,CAC3Dh1N,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,cAEdtiP,KAAKuqX,MAAQztD,EACb,IAAIs7D,EAAWp4X,KAAKs3X,UAwBpB,SAASe,IACP3gR,EAAK0gR,GAAU,SAAUhtV,GACvB,IAAIgtM,EAAehtM,EAAKgtM,eACpB7qD,EAAS6qD,EAAe,CAAC,EAAG0kF,EAASt0R,OAAS,CAAC,EAAGs0R,EAASr0R,QAC3D0+D,EAAM/7D,EAAK6oR,QAAU,EAAI,EAC7B7oR,EAAK85T,UAAU33K,EAAOpmF,GAAMomF,EAAO,EAAIpmF,IACvC4wR,EAAoB3sV,EAAMgtM,EAAe0kF,EAASh9S,EAAIg9S,EAASn+R,EACjE,GACF,CA/BA05V,KAEKF,GAAsBx7D,EAAUz5T,IAAI,kBACvCw0G,EAAK0gR,GAAU,SAAUhtV,GACvB,IAAKA,EAAKmmN,MAAMruP,IAAI,oBAAqB,CACvC,IAAIo1X,EAAiB9J,EAAuBpjV,GAE5C,GAAIktV,EAAgB,CAClB,IAAIrmP,EAAM7mG,EAAKgtM,eAAiB,SAAW,QACvCwiD,EAASxvP,EAAKmmN,MAAMruP,IAAI,oBAC5B45T,EAAS7qL,IAAQqmP,EAAermP,GAAO2oJ,EAEjB,QAAlBxvP,EAAKtZ,SACPgrS,EAASn+R,GAAK25V,EAAe7vV,OAASmyP,EACX,SAAlBxvP,EAAKtZ,WACdgrS,EAASh9S,GAAKw4W,EAAe9vV,MAAQoyP,EAEzC,CACF,CACF,IACAy9F,IAYJ,EAOAb,EAAUrmH,QAAU,SAAUh7N,EAAU4F,GACtC,IAAIw8U,EAAev4X,KAAKq3X,SAASlhV,GAEjC,GAAoB,MAAhBoiV,EAAsB,CACxB,GAAiB,MAAbx8U,EAEF,IAAK,IAAIt3C,KAAQ8zX,EACf,GAAIA,EAAajyX,eAAe7B,GAC9B,OAAO8zX,EAAa9zX,GAK1B,OAAO8zX,EAAax8U,EACtB,CACF,EAMAy7U,EAAUvmE,QAAU,WAClB,OAAOjxT,KAAKs3X,UAAUn1X,OACxB,EAaAq1X,EAAUxuE,aAAe,SAAUj6Q,EAAYC,GAC7C,GAAkB,MAAdD,GAAoC,MAAdC,EAAoB,CAC5C,IAAInrC,EAAM,IAAMkrC,EAAa,IAAMC,EACnC,OAAOhvC,KAAKm3X,WAAWtzX,EACzB,CAEIvC,EAASytC,KACXC,EAAaD,EAAWC,WACxBD,EAAaA,EAAWA,YAI1B,IAAK,IAAI/qC,EAAI,EAAGw0X,EAAYx4X,KAAKo3X,YAAapzX,EAAIw0X,EAAUx2X,OAAQgC,IAClE,GAAIw0X,EAAUx0X,GAAGmtQ,QAAQ,KAAKlvQ,QAAU8sC,GAAcypV,EAAUx0X,GAAGmtQ,QAAQ,KAAKlvQ,QAAU+sC,EACxF,OAAOwpV,EAAUx0X,EAGvB,EAEAwzX,EAAUluC,cAAgB,WACxB,OAAOtpV,KAAKo3X,YAAYj1X,OAC1B,EAOAq1X,EAAUhM,eAAiB,SAAU94I,EAAS84E,EAAQ1pT,GACpD,IAAI4D,EAAS1F,KAAKy4X,mBAAmB/lJ,EAAS84E,GAE9C,OAAO9lT,EAAOw8O,UAAYx8O,EAAOw8O,UAAUpN,YAAYhzO,GAAS4D,EAAO0lC,KAAO1lC,EAAO0lC,KAAK44M,cAAct+O,EAAO0lC,KAAK64M,YAAYniP,IAAU,IAC5I,EAOA01X,EAAU/L,iBAAmB,SAAU/4I,EAAS84E,EAAQ1pT,GACtD,IAAI4D,EAAS1F,KAAKy4X,mBAAmB/lJ,EAAS84E,GAE9C,OAAO9lT,EAAOw8O,UAAYx8O,EAAOw8O,UAAUnN,YAAYjzO,GAAS4D,EAAO0lC,KAAO1lC,EAAO0lC,KAAKwzR,YAAYl5T,EAAO0lC,KAAK4+S,aAAaloV,IAAU,IAC3I,EAMA01X,EAAUiB,mBAAqB,SAAU/lJ,EAAS84E,GAChD,IAKItpE,EACA92M,EANAwoM,EAAc43E,EAAO53E,YACrB8xC,EAAa8lC,EAAO9lC,YAAc9xC,GAAeA,EAAY8kJ,uBAAuB,SAAS,GAC7F9yG,EAAa4lC,EAAO5lC,YAAchyC,GAAeA,EAAY8kJ,uBAAuB,SAAS,GAC7F/7D,EAAYnR,EAAOmR,UACnBg8D,EAAa34X,KAAKo3X,YAItB,GAAIxjJ,EACFsO,EAAYtO,EAAYS,iBACxBh9N,EAAQshX,EAAYz2I,GAAa,IAAMA,EAAY,WAC9C,GAAIwjC,GAAcE,EACvB1jC,EAAYliP,KAAKgpT,aAAatjC,EAAWgvB,eAAgB9uB,EAAW8uB,qBAC/D,GAAIhvB,EACTt6O,EAAOprC,KAAKmxQ,QAAQ,IAAKuU,EAAWgvB,qBAC/B,GAAI9uB,EACTx6O,EAAOprC,KAAKmxQ,QAAQ,IAAKyU,EAAW8uB,qBAEjC,GAAIioB,EAAW,CAChB,IAAIxxR,EAAOwxR,EAAUtoF,iBAEjBlpM,IAASnrC,OACXkiP,EAAYliP,KAAKo3X,YAAY,GAEjC,CAEF,MAAO,CACLl1I,UAAWA,EACX92M,KAAMA,EAEV,EAOAosV,EAAUv7F,aAAe,SAAUjsR,GACjC,IAAI4nO,EAAQ53O,KAAKo3X,YAAY,GAE7B,GAAIx/I,EACF,OAAOA,EAAMqkD,aAAajsR,EAE9B,EAOAwnX,EAAUD,eAAiB,SAAU56D,EAAWjqF,EAAS/nI,GACvD,IAAIiuR,EAAmB,CACrBvoV,MAAM,EACNC,OAAO,EACPC,KAAK,EACLC,QAAQ,GAENknV,EAAU,CACZ53W,EAAG,CAAC,EACJ6e,EAAG,CAAC,GAEFk6V,EAAY,CACd/4W,EAAG,EACH6e,EAAG,GAML,GAHA+zM,EAAQe,cAAc,QAASqlJ,EAAkB,KAAM94X,MACvD0yO,EAAQe,cAAc,QAASqlJ,EAAkB,KAAM94X,OAElD64X,EAAU/4W,IAAM+4W,EAAUl6V,EAI7B,OAFA3+B,KAAKq3X,SAAW,CAAC,OACjBr3X,KAAKs3X,UAAY,IAqBnB,SAASwB,EAAkB3iV,GACzB,OAAO,SAAUgrO,EAAWh6K,GAC1B,GAAK8vR,EAAoB91G,EAAWw7C,EAAWjqF,GAA/C,CAIA,IAAIqmJ,EAAe53G,EAAUj+Q,IAAI,YAEhB,MAAbizC,EAEmB,QAAjB4iV,GAA2C,WAAjBA,IAE5BA,EAAeH,EAAiBpoV,OAAS,MAAQ,UAI9B,SAAjBuoV,GAA4C,UAAjBA,IAE7BA,EAAeH,EAAiBvoV,KAAO,QAAU,QAIrDuoV,EAAiBG,IAAgB,EACjC,IAAI3tV,EAAO,IAAIkqV,EAAOn/U,EAAU6uT,EAAmB7jF,GAAY,CAAC,EAAG,GAAIA,EAAUj+Q,IAAI,QAAS61X,GAC1FnV,EAA2B,aAAdx4U,EAAK5mC,KACtB4mC,EAAK6sM,OAAS2rI,GAAcziG,EAAUj+Q,IAAI,eAC1CkoC,EAAK6oR,QAAU9yC,EAAUj+Q,IAAI,WAE7Bi+Q,EAAU/1O,KAAOA,EAEjBA,EAAKmmN,MAAQ4vB,EAEb/1O,EAAKD,KAAOnrC,KAEZorC,EAAKnpC,MAAQklG,EAEbnnG,KAAKs3X,UAAUrzX,KAAKmnC,GAEpBssV,EAAQvhV,GAAUgxD,GAAO/7D,EACzBytV,EAAU1iV,IAnCV,CAoCF,CACF,CA1DAn2C,KAAKq3X,SAAWK,EAEhBhgR,EAAKggR,EAAQ53W,GAAG,SAAU8zB,EAAO7E,GAC/B2oE,EAAKggR,EAAQ/4V,GAAG,SAAUkV,EAAO7E,GAC/B,IAAInrC,EAAM,IAAMkrC,EAAa,IAAMC,EAC/BkzM,EAAY,IAAIq0I,EAAY1yX,GAChCq+O,EAAU/2M,KAAOnrC,KACjBkiP,EAAUqP,MAAQorE,EAClB38T,KAAKm3X,WAAWtzX,GAAOq+O,EAEvBliP,KAAKo3X,YAAYnzX,KAAKi+O,GAEtBA,EAAUk0I,QAAQxiV,GAClBsuM,EAAUk0I,QAAQviV,EACpB,GAAG7zC,KACL,GAAGA,KA4CL,EAQAw3X,EAAUU,aAAe,SAAUxlJ,EAASiqF,GA2B1C,SAASq8D,EAAY/5W,EAAMmsB,EAAMwoM,GAC/Bl8H,EAAKz4F,EAAKysO,aAAatgN,EAAK6mG,KAAK,IAAO,SAAUA,GAChD7mG,EAAK/U,MAAM4iW,oBAGXh6W,EAAMw9U,EAAoBx9U,EAAMgzH,GAClC,GACF,CAhCAv6B,EAAK13G,KAAKs3X,WAAW,SAAUlsV,GAC7BA,EAAK/U,MAAM6uU,UAAUryQ,KAAWA,IAClC,IACA6/I,EAAQy/E,YAAW,SAAUv+E,GAC3B,GAAIslJ,EAActlJ,GAAc,CAC9B,IAAIulJ,EAAaC,EAAexlJ,EAAalB,GACzCgzC,EAAayzG,EAAW,GACxBvzG,EAAauzG,EAAW,GAE5B,IAAKlC,EAAoBvxG,EAAYi3C,EAAWjqF,KAAaukJ,EAAoBrxG,EAAY+2C,EAAWjqF,GACtG,OAGF,IAAIwP,EAAYliP,KAAKgpT,aAAatjC,EAAWgvB,eAAgB9uB,EAAW8uB,gBACpEz1R,EAAO20N,EAAY7oI,UACnBn3D,EAAQsuM,EAAUivB,QAAQ,KAC1Bt9N,EAAQquM,EAAUivB,QAAQ,KAEZ,SAAdlyP,EAAKza,OACPw0X,EAAY/5W,EAAM20B,EAAOggM,GACzBolJ,EAAY/5W,EAAM40B,EAAO+/L,GAE7B,CACF,GAAG5zO,KAUL,EAOAw3X,EAAUrmE,eAAiB,SAAUl/K,GACnC,IAAIq/K,EAAW,GACXC,EAAY,GAOhB,OANA75M,EAAK13G,KAAKspV,iBAAiB,SAAUpnG,GACnC,IAAInK,EAAkB,MAAP9lG,GAAuB,SAARA,EAAiBiwG,EAAUivB,QAAQl/H,GAAOiwG,EAAUlK,cAC9EsyE,EAAYpoE,EAAU4B,aAAa/L,GACvC1gO,EAAQi6S,EAAUv5E,GAAY,GAAKu5E,EAASrtT,KAAK8zO,GACjD1gO,EAAQk6S,EAAWjH,GAAa,GAAKiH,EAAUttT,KAAKqmT,EACtD,IACO,CACLgH,SAAUA,EACVC,UAAWA,EAEf,EAsBA,IAAI8nE,EAAY,CAAC,QAAS,SAK1B,SAASD,EAAexlJ,EAAalB,GACnC,OAAOhpN,EAAI2vW,GAAW,SAAUljV,GAC9B,IAAIgrO,EAAYvtC,EAAY8kJ,uBAAuBviV,GAAU,GAC7D,OAAOgrO,CACT,GACF,CAMA,SAAS+3G,EAActlJ,GACrB,MAA+C,gBAAxCA,EAAY1wO,IAAI,mBACzB,CAEAg0X,EAAKlwX,OAAS,SAAU0rO,EAAS/nI,GAC/B,IAAI2uR,EAAQ,GAuBZ,OAtBA5mJ,EAAQe,cAAc,QAAQ,SAAUkpF,EAAWx1N,GACjD,IAAIh8D,EAAO,IAAI+rV,EAAKv6D,EAAWjqF,EAAS/nI,GACxCx/D,EAAK1mC,KAAO,QAAU0iG,EAGtBh8D,EAAKU,OAAO8wR,EAAWhyN,GAAK,GAC5BgyN,EAAUtoF,iBAAmBlpM,EAC7BmuV,EAAMr1X,KAAKknC,EACb,IAEAunM,EAAQy/E,YAAW,SAAUv+E,GAC3B,GAAKslJ,EAActlJ,GAAnB,CAIA,IAAIulJ,EAAaC,EAAexlJ,EAAalB,GACzCgzC,EAAayzG,EAAW,GACxBvzG,EAAauzG,EAAW,GACxBx8D,EAAYj3C,EAAWk3C,mBACvBzxR,EAAOwxR,EAAUtoF,iBACrBT,EAAYS,iBAAmBlpM,EAAK69Q,aAAatjC,EAAWgvB,eAAgB9uB,EAAW8uB,eAPvF,CAQF,IACO4kF,CACT,EAGApC,EAAKt8N,WAAas8N,EAAK3vX,UAAUqzJ,WAAa27N,EAAYhvX,UAAUqzJ,WACpEo1G,EAAiB52L,SAAS,cAAe89S,GACzC,IAAIzpW,EAAWypW,EACf/1X,EAAOD,QAAUusB,C,uBC7kBjBjF,EAAQ,OAER,IAAIozT,EAAiBpzT,EAAQ,OAsBzBiF,EAAWmuT,EAAel4N,OAAO,CACnCl/G,KAAM,OACN0xO,aAAc,CAAC,QAAS,SACxB89C,WAAY,MAKZ3/C,iBAAkB,KAClBmC,cAAe,CACb9oM,MAAM,EACN0yM,OAAQ,EACRroK,EAAG,EACH1nC,KAAM,MACNE,IAAK,GACLD,MAAO,MACPE,OAAQ,GAER+oV,cAAc,EAGd3/T,gBAAiB,gBACjBiO,YAAa,EACbg8J,YAAa,UAIjB1iO,EAAOD,QAAUusB,C,wBCnDjB,IAAI6kN,EAAS9pN,EAAQ,OA+BrB,SAAS2/E,EAAOw0N,EAAWx7C,EAAWt+K,GACpCA,EAAMA,GAAO,CAAC,EACd,IAAI13D,EAAOwxR,EAAUtoF,iBACjBjpM,EAAO+1O,EAAU/1O,KACjB+8D,EAAS,CAAC,EACVyvR,EAAoBxsV,EAAKmqV,kBAAkB,GAC3CiE,EAAkBpuV,EAAKtZ,SACvBinW,EAAenB,EAAoB,SAAW4B,EAC9C3gG,EAAUztP,EAAK6mG,IACfh1G,EAAOkO,EAAKu0M,UACZ+5I,EAAY,CAACx8V,EAAKnd,EAAGmd,EAAKnd,EAAImd,EAAKuL,MAAOvL,EAAK0B,EAAG1B,EAAK0B,EAAI1B,EAAKwL,QAChE0+D,EAAM,CACR92D,KAAM,EACNC,MAAO,EACPC,IAAK,EACLC,OAAQ,EACRo7U,OAAQ,GAEN8N,EAAav4G,EAAUj+Q,IAAI,WAAa,EACxCy2X,EAAuB,MAAZ9gG,EAAkB,CAAC4gG,EAAU,GAAKC,EAAYD,EAAU,GAAKC,GAAc,CAACD,EAAU,GAAKC,EAAYD,EAAU,GAAKC,GAErI,GAAI9B,EAAmB,CACrB,IAAIgC,EAAchC,EAAkB5zI,cAAc4zI,EAAkB3zI,YAAY,IAChF01I,EAASxyR,EAAIykR,QAAUzlX,KAAKwI,IAAIxI,KAAKyI,IAAIgrX,EAAaD,EAAS,IAAKA,EAAS,GAC/E,CAGAxxR,EAAOr2E,SAAW,CAAa,MAAZ+mQ,EAAkB8gG,EAASxyR,EAAI4xR,IAAiBU,EAAU,GAAgB,MAAZ5gG,EAAkB8gG,EAASxyR,EAAI4xR,IAAiBU,EAAU,IAE3ItxR,EAAO8rD,SAAW9tJ,KAAK40B,GAAK,GAAiB,MAAZ89P,EAAkB,EAAI,GAEvD,IAAIghG,EAAS,CACXtpV,KAAM,EACNC,OAAQ,EACRH,MAAO,EACPC,MAAO,GAET63D,EAAOqhN,eAAiBrhN,EAAOmvN,cAAgBnvN,EAAOkvN,cAAgBwiE,EAAOL,GAC7ErxR,EAAOyrN,YAAcgkE,EAAoB+B,EAASxyR,EAAIqyR,IAAoBG,EAASxyR,EAAIykR,QAAU,EAE7FzqG,EAAUj+Q,IAAI,qBAChBilG,EAAOmvN,eAAiBnvN,EAAOmvN,eAG7BhlF,EAAOoS,SAAS7hJ,EAAIymN,YAAanoC,EAAUj+Q,IAAI,uBACjDilG,EAAOqhN,gBAAkBrhN,EAAOqhN,gBAIlC,IAAIvhD,EAAckZ,EAAUj+Q,IAAI,oBAIhC,OAHAilG,EAAO8/J,YAA+B,QAAjB8wH,GAA0B9wH,EAAcA,EAE7D9/J,EAAOm0I,GAAK,EACLn0I,CACT,CAEAjnG,EAAQinG,OAASA,C,wBCvFjB,IAAImqI,EAAS9pN,EAAQ,OAoBrB,SAASsxW,EAAgBC,EAAUl3U,GAGjC,OADAA,EAAWA,GAAY,CAAC,EAAG,GACpByvL,EAAO5oN,IAAI,CAAC,IAAK,MAAM,SAAUuoH,EAAKm6G,GAC3C,IAAIhhN,EAAOprC,KAAKmxQ,QAAQl/H,GACpBjjI,EAAM6zC,EAASupM,GACf4tI,EAAWD,EAAS3tI,GAAU,EAClC,MAAqB,aAAdhhN,EAAK5mC,KAAsB4mC,EAAK4/M,eAAiB7kP,KAAK6iB,IAAIoiB,EAAK64M,YAAYj1O,EAAMgrX,GAAY5uV,EAAK64M,YAAYj1O,EAAMgrX,GAC7H,GAAGh6X,KACL,CAEA,SAASytB,EAASolN,GAChB,IAAI51M,EAAO41M,EAAS1nM,KAAKu0M,UACzB,MAAO,CACL7M,SAAU,CAERruO,KAAM,cACNsb,EAAGmd,EAAKnd,EACR6e,EAAG1B,EAAK0B,EACR6J,MAAOvL,EAAKuL,MACZC,OAAQxL,EAAKwL,QAEfkiE,IAAK,CACHitI,MAAO,SAAU34N,GAEf,OAAO4zN,EAASiC,YAAY71N,EAC9B,EACAqqE,KAAMgpJ,EAAOv1N,KAAK+8W,EAAiBjnJ,IAGzC,CAEA1xO,EAAOD,QAAUusB,C,wBCpDjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBmvR,EAAenvR,EAAQ,OAEvB2jP,EAAO3jP,EAAQ,OAEfsrQ,EAAmBtrQ,EAAQ,OAiC/B,SAASyxW,EAAIx1X,EAAMilB,EAAK8qQ,EAAS0lG,GAC/B/tH,EAAK9rQ,KAAKL,KAAMyE,GAMhBzE,KAAK0pB,IAAMA,EACX,IAAIhlB,EAASovR,EAAiB9mE,KAAKtjM,EAAK8qQ,GACxCx0R,KAAKm6X,cAAgBz1X,EAAO01X,aAC5Bp6X,KAAKq6X,YAAc31X,EAAO41X,WAC1Bt6X,KAAKu6X,iBAAsC,MAAnBL,GAAiCA,EAKzDl6X,KAAK00R,QAAUhwR,EAAOgwR,QAKtB10R,KAAKuqX,MAAQ7lX,EAAOm+T,YACtB,CA+HA,SAASynD,EAAUvwB,EAAYrnH,EAAS84E,EAAQ1pT,GAC9C,IAAIo6U,EAAW1wB,EAAO0wB,SAClBtoG,EAAc43E,EAAO53E,YACrBf,EAAWqpG,EAAWA,EAAS7nG,iBAAmBT,EAAcA,EAAYS,mBAC5ET,EAAY8kJ,uBAAuB,OAAO,IAAM,CAAC,GAAGrkJ,iBAAmB,KAC3E,OAAOxB,IAAa7yO,KAAO6yO,EAASknH,GAAYj4V,GAAS,IAC3D,CAnIAm4X,EAAI1yX,UAAY,CACd2F,YAAa+sX,EACbz1X,KAAM,MAMNo2J,WAAY,CAAC,MAAO,OAOpB4/N,aAAc,SAAU5iJ,GAGtB,IAFA,IAAI88C,EAAU10R,KAAK00R,QAEV1wR,EAAI,EAAGA,EAAI0wR,EAAQ1yR,OAAQgC,IAClC,GAAI0wR,EAAQ1wR,GAAGoqP,QAAQxW,GACrB,OAAO,EAIX,OAAO,CACT,EAKA4yI,YAAa,SAAU1qW,EAAG6e,EAAG6J,EAAOC,GAClC,IAAIxL,EAAOj9B,KAAKgpQ,kBACZkxH,EAAkBl6X,KAAKu6X,iBAC3Bt9V,EAAOA,EAAK3I,QAER4lW,IAEFj9V,EAAK0B,GAAK1B,EAAK0B,EAAI1B,EAAKwL,QAG1B,IAAI0iV,EAAmBnrX,KAAKoqX,kBAI5B,GAHAe,EAAiB9jT,UAAYpqC,EAAKytV,mBAAmB,IAAI/yE,EAAa73R,EAAG6e,EAAG6J,EAAOC,IACnF0iV,EAAiBhxH,qBAEb+/H,EAAiB,CACnB,IAAI7jW,EAAQ80V,EAAiB90V,MAC7BA,EAAM,IAAMA,EAAM,EACpB,CAEA80V,EAAiB71I,kBAEjBt1O,KAAK2qX,kBACP,EAMAj1F,UAAW,SAAUjxR,GACnB,OAAOzE,KAAKq6X,YAAYn3X,IAAIuB,EAC9B,EACAg2X,iBAAkB,SAAU7iJ,GAG1B,IAFA,IAAI88C,EAAU10R,KAAK00R,QAEV1wR,EAAI,EAAGA,EAAI0wR,EAAQ1yR,OAAQgC,IAClC,GAAI0wR,EAAQ1wR,GAAGoqP,QAAQxW,GACrB,OAAO88C,EAAQ1wR,EAGrB,EAOA02X,YAAa,SAAUj2X,EAAMk2X,GAC3B36X,KAAKm6X,cAAc3nX,IAAI/N,EAAMk2X,EAC/B,EAOAC,YAAa,SAAUn2X,GACrB,OAAOzE,KAAKm6X,cAAcj3X,IAAIuB,EAChC,EAKAukQ,gBAAiB,WACf,OAAOhpQ,KAAKuqX,KACd,EAQAz1I,YAAa,SAAU71N,EAAMssW,EAAQ3mX,GAMnC,GALoB,kBAATqa,IAETA,EAAOjf,KAAK46X,YAAY37W,IAGtBA,EACF,OAAOktP,EAAK5kQ,UAAUutO,YAAYz0O,KAAKL,KAAMif,EAAMssW,EAAQ3mX,EAE/D,EAKA4mX,eAAgBl5I,EAAOuD,MAAMy0I,EAAW,eAKxCmB,iBAAkBn5I,EAAOuD,MAAMy0I,EAAW,gBAE5Ch4I,EAAO0W,MAAMixI,EAAK9tH,GAUlB,IAAI1+O,EAAWwsW,EACf94X,EAAOD,QAAUusB,C,wBCrMjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB6+P,EAAY7+P,EAAQ,OAEpBozT,EAAiBpzT,EAAQ,OAEzByuN,EAAQzuN,EAAQ,OAEhBqyW,EAAkBryW,EAAQ,OAE1BsyW,EAAatyW,EAAQ,OAoBrBuyW,EAAWn/C,EAAel4N,OAAO,CACnCl/G,KAAM,MAKN6vO,iBAAkB,KAClB2/C,WAAY,MACZt8N,KAAM,SAAU3sB,GACd6wS,EAAer0U,UAAUmwD,KAAK50D,MAAM9C,KAAM+C,WAE1CskR,EAAU3sB,gBAAgB3vN,EAAQ,QAAS,CAAC,QAC9C,EACA81P,cAAe,WACb,IAAI91P,EAAS/qC,KAAK+qC,OACd3kC,EAAOpG,KACX+qC,EAAO2pP,QAAUomG,EAAWE,iBAAiBjwV,EAAO2pP,QAAS3pP,EAAOrhB,IAAKqhB,EAAOypP,SAChFx0R,KAAKi7X,gBAAkB3oJ,EAAOhnN,OAAOyf,EAAO2pP,SAAW,IAAI,SAAUwmG,EAAgBC,GAKnF,OAJIA,EAAU12X,MACZy2X,EAAe1oX,IAAI2oX,EAAU12X,KAAM,IAAIwyO,EAAMkkJ,EAAW/0X,IAGnD80X,CACT,GAAG5oJ,EAAO6hD,iBACVn0R,KAAK40R,kBAAkB7pP,EAAO2pP,QAChC,EACAl+C,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EACHrqC,MAAM,EACN2C,KAAM,SACNE,IAAK,SASLolP,YAAa,KAMbxmI,QAAQ,EAERzlI,IAAK,GAGLosQ,eAAgB,KAEhBrmP,OAAQ,KACR2tC,KAAM,EACN24M,WAAY,KAEZ7mP,MAAO,CACLxB,MAAM,EACN9c,MAAO,QAET2uN,UAAW,CAET13K,YAAa,GACbg8J,YAAa,OACbjzM,MAAO,QAET8vN,SAAU,CACRxxM,MAAO,CACLxB,MAAM,EACN9c,MAAO,gBAET2uN,UAAW,CACT3uN,MAAO,wBAGX8jQ,QAAS,IAQXM,eAAgB,SAAUvwR,GACxB,OAAOzE,KAAKi7X,gBAAgB/3X,IAAIuB,IAAS,IAAIwyO,EAAM,KAAMj3O,KAAMA,KAAK0yO,QACtE,EAQAwjB,kBAAmB,SAAUzxP,EAAMktB,GACjCA,EAASA,GAAU,SACnB,IAAI66T,EAAcxsV,KAAKg1R,eAAevwR,GAClC6pC,EAAYk+S,EAAYtpV,KAAgB,WAAXyuB,EAAsB,GAAKA,EAAS,KAAO,mBACxE/P,EAAS,CACXnd,KAAMA,GAGR,MAAyB,oBAAd6pC,GACT1sB,EAAO+P,OAASA,EACT2c,EAAU1sB,IACa,kBAAd0sB,EACTA,EAAU1yB,QAAQ,MAAe,MAARnX,EAAeA,EAAO,SADjD,CAGT,EACA8vO,QAAS,SAAUn3J,GACjBp9E,KAAK+qC,OAAOqyC,KAAOA,CACrB,EACAk3J,UAAW,SAAU7kM,GACnBzvC,KAAK+qC,OAAO0E,OAASA,CACvB,IAEF6iM,EAAO0W,MAAM+xI,EAAUF,GACvB,IAAIptW,EAAWstW,EACf55X,EAAOD,QAAUusB,C,wBCpJjB,IAAIkqR,EAAenvR,EAAQ,OAEvB6jP,EAAO7jP,EAAQ,MAEfihP,EAAOjhP,EAAQ,OAEfg6S,EAAiBh6S,EAAQ,IA8B7B,SAAS4yW,EAAO32X,EAAMioV,EAAY54I,GAahC,GARA9zM,KAAKyE,KAAOA,EAMZzE,KAAK0sV,WAAaA,EAEb54I,EAIHA,EAAK,CAACA,EAAG,GAAIA,EAAG,QAJT,CACP,IAAI72K,EAAOj9B,KAAKgpQ,kBAChBl1D,EAAK,CAAC72K,EAAKnd,EAAImd,EAAKuL,MAAQ,EAAGvL,EAAK0B,EAAI1B,EAAKwL,OAAS,EACxD,CAQAzoC,KAAKyvC,OAASqkK,CAChB,CAEAsnL,EAAO7zX,UAAY,CACjB2F,YAAakuX,EACbh8O,WAAY,KAKZ4pH,gBAAiB,WACf,IAAI/rO,EAAOj9B,KAAKuqX,MAEhB,GAAIttV,EACF,OAAOA,EAUT,IAPA,IAAIo+V,EAAa9+T,OAAO+pC,UACpB13F,EAAM,CAACysX,EAAYA,GACnB1sX,EAAM,EAAE0sX,GAAaA,GACrBtzG,EAAO,GACPnwI,EAAO,GACP80M,EAAa1sV,KAAK0sV,WAEb1oV,EAAI,EAAGA,EAAI0oV,EAAW1qV,OAAQgC,IAErC,GAA2B,YAAvB0oV,EAAW1oV,GAAGQ,KAAlB,CAKA,IAAIooV,EAAWF,EAAW1oV,GAAG4oV,SAC7BvgF,EAAKI,WAAWmgF,EAAU7kE,EAAMnwI,GAChC6xH,EAAK76P,IAAIA,EAAKA,EAAKm5Q,GACnBte,EAAK96P,IAAIA,EAAKA,EAAKipI,EANnB,CAcF,OAJU,IAAN5zI,IACF4K,EAAI,GAAKA,EAAI,GAAKD,EAAI,GAAKA,EAAI,GAAK,GAG/B3O,KAAKuqX,MAAQ,IAAI5yE,EAAa/oS,EAAI,GAAIA,EAAI,GAAID,EAAI,GAAKC,EAAI,GAAID,EAAI,GAAKC,EAAI,GACrF,EAMAw/O,QAAS,SAAUxW,GACjB,IAAI36M,EAAOj9B,KAAKgpQ,kBACZ0jF,EAAa1sV,KAAK0sV,WAEtB,IAAKzvT,EAAKmxN,QAAQxW,EAAM,GAAIA,EAAM,IAChC,OAAO,EAGT0jJ,EAAS,IAAK,IAAIt3X,EAAI,EAAGwT,EAAMk1U,EAAW1qV,OAAQgC,EAAIwT,EAAKxT,IAEzD,GAA2B,YAAvB0oV,EAAW1oV,GAAGQ,KAAlB,CAIA,IAAIooV,EAAWF,EAAW1oV,GAAG4oV,SACzBC,EAAYH,EAAW1oV,GAAG6oV,UAE9B,GAAIrqB,EAAep0E,QAAQw+F,EAAUh1G,EAAM,GAAIA,EAAM,IAAK,CAExD,IAAK,IAAI/sO,EAAI,EAAGA,GAAKgiV,EAAYA,EAAU7qV,OAAS,GAAI6I,IACtD,GAAI23T,EAAep0E,QAAQy+F,EAAUhiV,IACnC,SAASywX,EAIb,OAAO,CACT,CAdA,CAiBF,OAAO,CACT,EACA9Q,YAAa,SAAU1qW,EAAG6e,EAAG6J,EAAOC,GAClC,IAAIxL,EAAOj9B,KAAKgpQ,kBACZsD,EAASrvO,EAAKuL,MAAQvL,EAAKwL,OAE1BD,EAEOC,IACVA,EAASD,EAAQ8jO,GAFjB9jO,EAAQ8jO,EAAS7jO,EASnB,IAJA,IAAI/iC,EAAS,IAAIiyS,EAAa73R,EAAG6e,EAAG6J,EAAOC,GACvC4+B,EAAYpqC,EAAKytV,mBAAmBhlX,GACpCgnV,EAAa1sV,KAAK0sV,WAEb1oV,EAAI,EAAGA,EAAI0oV,EAAW1qV,OAAQgC,IAErC,GAA2B,YAAvB0oV,EAAW1oV,GAAGQ,KAAlB,CAOA,IAHA,IAAIooV,EAAWF,EAAW1oV,GAAG4oV,SACzBC,EAAYH,EAAW1oV,GAAG6oV,UAErBhvS,EAAI,EAAGA,EAAI+uS,EAAS5qV,OAAQ67C,IACnC4rN,EAAKR,eAAe2jF,EAAS/uS,GAAI+uS,EAAS/uS,GAAIwpB,GAGhD,IAAK,IAAIvmE,EAAI,EAAGA,GAAK+rV,EAAYA,EAAU7qV,OAAS,GAAIlB,IACtD,IAAS+8C,EAAI,EAAGA,EAAIgvS,EAAU/rV,GAAGkB,OAAQ67C,IACvC4rN,EAAKR,eAAe4jF,EAAU/rV,GAAG+8C,GAAIgvS,EAAU/rV,GAAG+8C,GAAIwpB,EAX1D,CAgBFpqC,EAAOj9B,KAAKuqX,MACZttV,EAAK0tD,KAAKjlF,GAEV1F,KAAKyvC,OAAS,CAACxS,EAAKnd,EAAImd,EAAKuL,MAAQ,EAAGvL,EAAK0B,EAAI1B,EAAKwL,OAAS,EACjE,EACAqvP,aAAc,SAAUrzR,GACd,MAARA,IAAiBA,EAAOzE,KAAKyE,MAC7B,IAAI82X,EAAY,IAAIH,EAAO32X,EAAMzE,KAAK0sV,WAAY1sV,KAAKyvC,QAIvD,OAHA8rV,EAAUhR,MAAQvqX,KAAKuqX,MACvBgR,EAAU/Q,YAAc,KAEjB+Q,CACT,GAEF,IAAI9tW,EAAW2tW,EACfj6X,EAAOD,QAAUusB,C,iCCvKjB,IAAI/B,EAAS,CAAC,CAAC,CAAC,mBAAoB,mBAAoB,CAAC,mBAAoB,mBAAoB,CAAC,mBAAoB,oBAAqB,CAAC,mBAAoB,oBAAqB,CAAC,mBAAoB,qBAE1M,SAAS+B,EAAS6pQ,EAAS3C,GACT,UAAZ2C,GAAuC,OAAhB3C,EAAOlwR,MAChCkwR,EAAO+3D,WAAWzoV,KAAK,CACrBO,KAAM,UACNooV,SAAUlhU,EAAO,IAGvB,CAEAvqB,EAAOD,QAAUusB,C,oBCfjB,IAAI+tW,EAAc,CAChB,OAAU,CAAC,IAAK,IAChB,gBAAiB,EAAE,GAAI,IACvB,2BAA4B,EAAE,GAAI,KAGpC,SAAS/tW,EAAS6pQ,EAAS3C,GACzB,GAAgB,UAAZ2C,EAAqB,CACvB,IAAIqjG,EAAWa,EAAY7mG,EAAOlwR,MAElC,GAAIk2X,EAAU,CACZ,IAAI7mL,EAAK6gF,EAAOllP,OAChBqkK,EAAG,GAAK6mL,EAAS,GACjB7mL,EAAG,GAAK6mL,EAAS,EACnB,CACF,CACF,CAEAx5X,EAAOD,QAAUusB,C,iCCVjB,IA1BA,IAAI6kN,EAAS9pN,EAAQ,OAEjB4yW,EAAS5yW,EAAQ,OAqBjBmyW,EAAW,CAAC,IAAK,IACjBjvW,EAAS,CAAC,CAAC,CAAC,EAAG,KAAM,CAAC,EAAG,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,GAAI,CAAC,GAAI,IAAM,CAAC,GAAI,IAAM,CAAC,GAAI,KAAM,CAAC,GAAI,IAAM,CAAC,GAAI,IAAM,CAAC,GAAI,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,MAAO,CAAC,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,OAAQ,CAAC,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,OAAQ,CAAC,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,OAAQ,CAAC,CAAC,EAAG,MAAO,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,MAAO,CAAC,EAAG,OAAQ,CAAC,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,OAAQ,CAAC,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,OAAQ,CAAC,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,OAAQ,CAAC,CAAC,GAAI,IAAK,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,KAAM,CAAC,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,OAAQ,CAAC,CAAC,GAAI,MAAO,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,MAAO,CAAC,GAAI,OAAQ,CAAC,CAAC,EAAG,KAAM,CAAC,EAAG,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,KAAM,CAAC,EAAG,OAEnzB1nB,EAAI,EAAGA,EAAI0nB,EAAO1pB,OAAQgC,IACjC,IAAK,IAAI6G,EAAI,EAAGA,EAAI6gB,EAAO1nB,GAAGhC,OAAQ6I,IACpC6gB,EAAO1nB,GAAG6G,GAAG,IAAM,KACnB6gB,EAAO1nB,GAAG6G,GAAG,KAAM,GACnB6gB,EAAO1nB,GAAG6G,GAAG,IAAM8vX,EAAS,GAC5BjvW,EAAO1nB,GAAG6G,GAAG,IAAM8vX,EAAS,GAIhC,SAASltW,EAAS6pQ,EAAS5C,GACT,UAAZ4C,GACF5C,EAAQzwR,KAAK,IAAIm3X,EAAO,OAAQ9oJ,EAAO5oN,IAAIgC,GAAQ,SAAUkhU,GAC3D,MAAO,CACLpoV,KAAM,UACNooV,SAAUA,EAEd,IAAI+tC,GAER,CAEAx5X,EAAOD,QAAUusB,C,oBC5BjB,IAAIguW,EAAkB,CACpB,OAAQ,CAAC,GAAI,IAEb,KAAM,CAAC,GAAI,IACX,KAAM,CAAC,GAAI,GACX,KAAM,EAAE,GAAI,IAEZ,KAAM,CAAC,EAAG,IAGZ,SAAShuW,EAAS6pQ,EAAS3C,GACzB,GAAgB,UAAZ2C,EAAqB,CACvB,IAAIokG,EAAWD,EAAgB9mG,EAAOlwR,MAEtC,GAAIi3X,EAAU,CACZ,IAAI5nL,EAAK6gF,EAAOllP,OAChBqkK,EAAG,IAAM4nL,EAAS,GAAK,KACvB5nL,EAAG,KAAO4nL,EAAS,GAAK,EAC1B,CACF,CACF,CAEAv6X,EAAOD,QAAUusB,C,iCCxCjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB2qN,GAFU1/L,EAAQojM,QAERruN,EAAQ,QAElB8pN,EAAS9pN,EAAQ,OAEjByxW,EAAMzxW,EAAQ,OAEd2/E,EAAS3/E,EAAQ,MAEjBmlR,EAAanlR,EAAQ,OAErBsrQ,EAAmBtrQ,EAAQ,OAE3BmzW,EAAiBnzW,EAAQ,OA0B7B,SAASozW,EAAU1/C,EAAUvxO,GAC3B,IAAImrL,EAAiBomD,EAASh5U,IAAI,kBAElC,GAAsB,MAAlB4yR,EAAwB,CAC1B,IAAI+lG,EAAU/lG,EAAe,GACzBgmG,EAAchmG,EAAe,GAE7B/mR,MAAM8sX,EAAQ,KAAO9sX,MAAM8sX,EAAQ,KAAO9sX,MAAM+sX,EAAY,KAAO/sX,MAAM+sX,EAAY,KACvF97X,KAAK6sQ,gBAAgBgvH,EAAQ,GAAIA,EAAQ,GAAIC,EAAY,GAAKD,EAAQ,GAAIC,EAAY,GAAKD,EAAQ,GAEvG,CAEA,IACIE,EADA9+V,EAAOj9B,KAAKgpQ,kBAEZv5N,EAASysS,EAASh5U,IAAI,gBACtBomF,EAAO4yP,EAASh5U,IAAI,cACpB86P,EAAYrzJ,EAAI03I,WAChB4b,EAAatzJ,EAAI23I,YACjBgqB,EAASrvO,EAAKuL,MAAQvL,EAAKwL,OAASzoC,KAAK21R,YACzCqmG,GAAmB,EAavB,GAXIvsV,GAAU65C,IACZ75C,EAAS,CAACk+P,EAAWjsD,aAAajyM,EAAO,GAAIuuN,GAAY2vC,EAAWjsD,aAAajyM,EAAO,GAAIwuN,IAC5F30K,EAAOqkN,EAAWjsD,aAAap4J,EAAMnjF,KAAKyI,IAAIovP,EAAWC,IAEpDlvP,MAAM0gC,EAAO,KAAQ1gC,MAAM0gC,EAAO,KAAQ1gC,MAAMu6E,KACnD0yS,GAAmB,IAMnBA,EAAkB,CACpB,IAAIj+H,EAAW,CAAC,EAEZuO,EAAS,GAEXvO,EAASv1N,MAAQ8gD,EACjBy0K,EAASt1N,OAAS6gD,EAAOgjL,IAEzBvO,EAASt1N,OAAS6gD,EAClBy0K,EAASv1N,MAAQ8gD,EAAOgjL,GAG1BvO,EAASp/N,EAAI8Q,EAAO,GAAKsuN,EAASt1N,OAAS,EAC3Cs1N,EAASj+O,EAAI2vB,EAAO,GAAKsuN,EAASv1N,MAAQ,CAC5C,MAEEuzV,EAAkB7/C,EAAS1+E,qBAE3Bu+H,EAAgBzvH,OAASA,EACzBvO,EAAW51J,EAAOo1J,cAAcw+H,EAAiB,CAC/CvzV,MAAOw1N,EACPv1N,OAAQw1N,IAIZj+P,KAAK8sQ,YAAY/O,EAASj+O,EAAGi+O,EAASp/N,EAAGo/N,EAASv1N,MAAOu1N,EAASt1N,QAClEzoC,KAAKs0O,UAAU4nG,EAASh5U,IAAI,WAC5BlD,KAAKu0O,QAAQ2nG,EAASh5U,IAAI,QAC5B,CAQA,SAAS+4X,EAAa7nJ,EAAKmd,GACzBjf,EAAO56H,KAAK65I,EAAMruP,IAAI,aAAa,SAAUy3X,EAAUl2X,GACrD2vO,EAAIsmJ,YAAYj2X,EAAMk2X,EACxB,GACF,CAEA,IAAIG,EAAa,CAEflgO,WAAYq/N,EAAI1yX,UAAUqzJ,WAC1B5zJ,OAAQ,SAAU0rO,EAAS/nI,GACzB,IAAIuxR,EAAU,GAEdxpJ,EAAQe,cAAc,OAAO,SAAUyoG,EAAU/0O,GAC/C,IAAI1iG,EAAOy3U,EAASh5U,IAAI,OACpByyR,EAAcumD,EAASh5U,IAAI,eAC3Bg3X,GAAkB,EAClBiC,EAAaR,EAAeS,YAAY33X,GAExC03X,GAAcA,EAAW,IAA6B,QAAvBA,EAAW,GAAG33X,MAChC,MAAfmxR,IAAwBA,EAAc,GACtCukG,GAAkB,GAEH,MAAfvkG,IAAwBA,EAAc,KAGxC,IAAIvhD,EAAM,IAAI6lJ,EAAIx1X,EAAO0iG,EAAK1iG,EAAMy3U,EAASh5U,IAAI,WAAYg3X,GAC7D9lJ,EAAIuhD,YAAcA,EAClBvhD,EAAIM,UAAYwnG,EAASh5U,IAAI,cAC7Bg5X,EAAQj4X,KAAKmwO,GACb6nJ,EAAa7nJ,EAAK8nG,GAClBA,EAAS7nG,iBAAmBD,EAC5BA,EAAImd,MAAQ2qF,EAEZ9nG,EAAIvoM,OAAS+vV,EACbxnJ,EAAIvoM,OAAOqwS,EAAUvxO,EACvB,IACA+nI,EAAQy/E,YAAW,SAAUv+E,GAC3B,IAAIf,EAAWe,EAAY1wO,IAAI,oBAE/B,GAAiB,QAAb2vO,EAAoB,CACtB,IAAIu9B,EAAWx8B,EAAY1wO,IAAI,aAAe,EAC9C0wO,EAAYS,iBAAmB6nJ,EAAQ9rH,EACzC,CACF,IAEA,IAAIisH,EAAwB,CAAC,EA0B7B,OAzBA3pJ,EAAQkY,iBAAiB,OAAO,SAAUhX,GACxC,IAAKA,EAAYkhD,kBAAmB,CAClC,IAAIwC,EAAU1jD,EAAY2gD,aAC1B8nG,EAAsB/kG,GAAW+kG,EAAsB/kG,IAAY,GACnE+kG,EAAsB/kG,GAASrzR,KAAK2vO,EACtC,CACF,IACAtB,EAAO56H,KAAK2kR,GAAuB,SAAUhlG,EAAWC,GACtD,IAAIglG,EAAchqJ,EAAO5oN,IAAI2tQ,GAAW,SAAUklG,GAChD,OAAOA,EAAgBr5X,IAAI,UAC7B,IACIkxO,EAAM,IAAI6lJ,EAAI3iG,EAASA,EAAShlD,EAAOi+C,SAAS+rG,IACpDloJ,EAAIM,UAAYpC,EAAOoS,SAAS5hP,MAAM,KAAMwvO,EAAO5oN,IAAI2tQ,GAAW,SAAUklG,GAC1E,OAAOA,EAAgBr5X,IAAI,aAC7B,KACAg5X,EAAQj4X,KAAKmwO,GAEbA,EAAIvoM,OAAS+vV,EACbxnJ,EAAIuhD,YAAc0B,EAAU,GAAGn0R,IAAI,eACnCkxO,EAAIvoM,OAAOwrP,EAAU,GAAI1sL,GACzB2nI,EAAO56H,KAAK2/K,GAAW,SAAUklG,GAC/BA,EAAgBloJ,iBAAmBD,EACnC6nJ,EAAa7nJ,EAAKmoJ,EACpB,GACF,IACOL,CACT,EASAlB,iBAAkB,SAAUwB,EAAiBpvC,EAAS54D,GAKpD,IAHA,IAAIioG,GAAcD,GAAmB,IAAIr6X,QACrC+xR,EAAc5hD,EAAO6hD,gBAEhBnwR,EAAI,EAAGA,EAAIy4X,EAAWz6X,OAAQgC,IACrCkwR,EAAY1hR,IAAIiqX,EAAWz4X,GAAGS,KAAMg4X,EAAWz4X,IAGjD,IAAIU,EAASovR,EAAiB9mE,KAAKogI,EAAS54D,GAO5C,OANAliD,EAAO56H,KAAKhzG,EAAOgwR,SAAS,SAAUC,GACpC,IAAIlwR,EAAOkwR,EAAOlwR,MACjByvR,EAAYhxR,IAAIuB,IAASg4X,EAAWx4X,KAAK,CACxCQ,KAAMA,GAEV,IACOg4X,CACT,GAEFtpJ,EAAQ6uB,yBAAyB,MAAO84H,GACxC,IAAIrtW,EAAWqtW,EACf35X,EAAOD,QAAUusB,C,wBCpNjB,IAAImC,EAAQpH,EAAQ,OAEhBkvF,EAAO9nF,EAAM8nF,KAEbglR,EAAel0W,EAAQ,OAEvBiyO,EAASjyO,EAAQ,OAEjBm6P,EAAYloB,EAAOkoB,UAEnBg6G,EAAYn0W,EAAQ,OAEpBo0W,EAAep0W,EAAQ,OAEvBq0W,EAAcr0W,EAAQ,OAEtBs0W,EAAkBt0W,EAAQ,OAqB1Bo6P,EAAQD,IACRl1P,EAAW,CAObu/L,KAAM,SAAUogI,EAAS2vC,EAAWtoG,GAClC,IAAIuoG,EAASp6G,EAAMm6G,GAAWC,OAE9B,GAAIA,EACF,OAAOA,EAGT,IAEItoG,EAFAuoG,EAAeF,EAAUE,cAAgB,CAAC,EAC1CC,EAAUH,EAAUG,QAGxB,IACExoG,EAAUwoG,EAAUR,EAAaQ,EAASzoG,GAAgB,EAC5D,CAAE,MAAOxuR,GACP,MAAM,IAAI0V,MAAM,2BAA6B1V,EAAE6gB,QACjD,CAgBA,OAdA61W,EAAUvvC,EAAS14D,GACnBh9K,EAAKg9K,GAAS,SAAUC,GACtB,IAAIM,EAAaN,EAAOlwR,KACxBm4X,EAAaxvC,EAASz4D,GACtBkoG,EAAYzvC,EAASz4D,GACrBmoG,EAAgB1vC,EAASz4D,GAGzB,IAAIwoG,EAAcF,EAAahoG,GAE3BkoG,GACFxoG,EAAO61F,YAAY2S,EAAY9sV,KAAM8sV,EAAY5sV,IAAK4sV,EAAY30V,MAAO20V,EAAY10V,OAEzF,IACOm6O,EAAMm6G,GAAWC,OAAS,CAC/BtoG,QAASA,EACTmuC,aAAc75D,EAAgB0rB,GAElC,GAGF,SAAS1rB,EAAgB0rB,GAGvB,IAFA,IAAIz3P,EAEKj5B,EAAI,EAAGA,EAAI0wR,EAAQ1yR,OAAQgC,IAAK,CACvC,IAAIo5X,EAAa1oG,EAAQ1wR,GAAGglQ,kBAC5B/rO,EAAOA,GAAQmgW,EAAW9oW,QAC1B2I,EAAK85D,MAAMqmS,EACb,CAEA,OAAOngW,CACT,CAEA97B,EAAOD,QAAUusB,C,uBC/FjB,IAAI4vW,EAAY70W,EAAQ,OAEpB80W,EAAWD,EAAUC,SACrBC,EAAuBF,EAAUE,qBAEjCnmJ,EAAQ5uN,EAAQ,OAEhB6zN,EAAO7zN,EAAQ,OAEfoH,EAAQpH,EAAQ,OAEhBg1W,EAAS5tW,EAAM4tW,OACfrpG,EAAgBvkQ,EAAMukQ,cAEtBwjB,EAAenvR,EAAQ,OAEvBiyO,EAASjyO,EAAQ,OAEjBm6P,EAAYloB,EAAOkoB,UAoBnBC,EAAQD,IACRl1P,EAAW,CAMbu/L,KAAM,SAAUogI,EAAS2vC,GACvB,IAAIU,EAAa76G,EAAMm6G,GAAWU,WAElC,GAAIA,EACF,MAAO,CACLvlW,KAAMulW,EACN56D,aAAcjgD,EAAMm6G,GAAWl6D,cAInC,IAAI/rF,EAAU4mJ,EAAaX,GAG3B,OAFAn6G,EAAMm6G,GAAWU,WAAa3mJ,EAAQ5+M,KACtC0qP,EAAMm6G,GAAWl6D,aAAe/rF,EAAQ+rF,aACjC/rF,CACT,EACAu2G,YAAa,SAAUD,EAAS2vC,EAAWY,GAGzC,IAAInoT,EAAQotM,EAAMm6G,GACda,EAAUpoT,EAAMooT,UAAYpoT,EAAMooT,QAAUzpG,KAC5Cj8P,EAAO0lW,EAAQ16X,IAAIy6X,GAEvB,GAAIzlW,EACF,OAAOA,EAGT,IAAIulW,EAAajoT,EAAMioT,WACnB56D,EAAertP,EAAMqtP,aAUzB,OAPKrtP,EAAMqoT,kBAIT3lW,EAAOwlW,EAAaX,EAAWl6D,GAAc3qS,MAH7Cs9C,EAAMqoT,kBAAoBF,EAC1BzlW,EAAOulW,GAKFG,EAAQprX,IAAImrX,EAASzlW,EAC9B,EACAi1T,cAAe,SAAUC,EAAS2vC,EAAWY,GAC3C,IAAInoT,EAAQotM,EAAMm6G,GACda,EAAUpoT,EAAMooT,QACpBA,GAAWA,EAAQ5/C,UAAU2/C,GAEzBA,IAAYnoT,EAAMqoT,oBACpBroT,EAAMqoT,kBAAoB,KAE9B,GAGF,SAASH,EAAaX,EAAWl6D,GAC/B,IACIn/T,EACAw0B,EAFA4lW,EAASf,EAAUe,OAIvB,IACEp6X,EAASo6X,GAAUR,EAASQ,EAAQ,CAClCC,eAAe,EACfC,gBAAgB,KACZ,CAAC,EACP9lW,EAAOx0B,EAAOw0B,KACdslW,EAAe,MAARtlW,EACT,CAAE,MAAOjyB,GACP,MAAM,IAAI0V,MAAM,uBAAyB1V,EAAE6gB,QAC7C,CAEA,IAAIm3W,EAAWv6X,EAAO8kC,MAClB01V,EAAYx6X,EAAO+kC,OACnB01V,EAAcz6X,EAAOy6X,YAgBzB,GAdKt7D,IACHA,EAA2B,MAAZo7D,GAAiC,MAAbC,EAEnChmW,EAAK8wO,kBAAoB,IAAI2uC,EAAa,EAAG,EAAG,EAAG,GAEnC,MAAZsmF,IACFp7D,EAAar6R,MAAQy1V,GAGN,MAAbC,IACFr7D,EAAap6R,OAASy1V,IAItBC,EAAa,CACf,IAAIC,EAAmBb,EAAqBY,EAAat7D,EAAar6R,MAAOq6R,EAAap6R,QACtF41V,EAASnmW,EACbA,EAAO,IAAIk/M,EACXl/M,EAAK33B,IAAI89X,GACTA,EAAOhoW,MAAQ+nW,EAAiB/nW,MAChCgoW,EAAOvsW,SAAWssW,EAAiBtsW,QACrC,CAKA,OAHAoG,EAAKojN,YAAY,IAAIe,EAAK,CACxB7mN,MAAOqtS,EAAaosD,WAEf,CACL/2V,KAAMA,EACN2qS,aAAcA,EAElB,CAEA1hU,EAAOD,QAAUusB,C,iCCnJjB,IAAIgmB,EAAUjrB,EAAQ,OAIlBoH,GAFU6jB,EAAQojM,QAEVruN,EAAQ,QAEhBkvF,EAAO9nF,EAAM8nF,KACby8K,EAAgBvkQ,EAAMukQ,cAEtBwnG,EAAiBnzW,EAAQ,OAEzB81W,EAAgB91W,EAAQ,OAExB+1W,EAAe/1W,EAAQ,MAEvBmvR,EAAenvR,EAAQ,OAoBvBg2W,EAAU,CACZtB,QAASoB,EACTG,IAAKF,GAEH9wW,EAAW,CAObu/L,KAAM,SAAUogI,EAAS54D,EAASC,GAChC,IAGIouC,EAHAnuC,EAAU,GACV4lG,EAAanmG,IACbimG,EAAejmG,IAEfgoG,EAAaC,EAAYhvC,GAoB7B,OAnBA11O,EAAKykR,GAAY,SAAUzsE,GACzB,IAAIgvE,EAAeF,EAAQ9uE,EAAOlrT,MAAMwoN,KAAKogI,EAAS19B,EAAQj7B,GAC9D/8K,EAAKgnR,EAAahqG,SAAS,SAAUC,GACnC,IAAIM,EAAaN,EAAOlwR,KAEpB+vR,GAAWA,EAAQluR,eAAe2uR,KACpCN,EAASA,EAAOmD,aAAa7C,EAAaT,EAAQS,KAGpDP,EAAQzwR,KAAK0wR,GACb2lG,EAAW9nX,IAAIyiR,EAAYN,GAC3BylG,EAAa5nX,IAAIyiR,EAAYN,EAAOllP,OACtC,IACA,IAAIxS,EAAOyhW,EAAa77D,aAEpB5lS,IACF4lS,EAAeA,EAAa9rO,MAAM95D,GAAQ4lS,EAAe5lS,EAAK3I,QAElE,IACO,CACLogQ,QAASA,EACT4lG,WAAYA,EACZF,aAAcA,EAEdv3D,aAAcA,GAAgB,IAAIlrB,EAAa,EAAG,EAAG,EAAG,GAE5D,EAOA01C,YAAasxC,EAAY,eAMzBxxC,cAAewxC,EAAY,kBAG7B,SAASA,EAAY5kC,GACnB,OAAO,SAAU3M,EAASuwC,GACxB,IAAIxB,EAAaC,EAAYhvC,GACzB74Q,EAAU,GAKd,OAJAmjC,EAAKykR,GAAY,SAAUzsE,GACzB,IAAItyS,EAASohX,EAAQ9uE,EAAOlrT,MAAMu1V,GAClC38U,GAAUm3D,EAAQtwE,KAAKmZ,EAAOgwU,EAAS19B,EAAQiuE,GACjD,IACOppT,CACT,CACF,CAIA,SAAS6nT,EAAYhvC,GACnB,IAAI+uC,EAAaR,EAAeS,YAAYhvC,IAAY,GACxD,OAAO+uC,CACT,CAEAh7X,EAAOD,QAAUusB,C,wBCjHjB,IAAIgmB,EAAUjrB,EAAQ,OAIlBoH,GAFU6jB,EAAQojM,QAEVruN,EAAQ,QAEhB2rQ,EAAgBvkQ,EAAMukQ,cACtBu/B,EAAW9jS,EAAM8jS,SACjB5sT,EAAU8oB,EAAM9oB,QAChB4wG,EAAO9nF,EAAM8nF,KAGb2lR,GAFSztW,EAAM4tW,OAEHh1W,EAAQ,QAEpBo2W,EAAWvB,EAAUuB,SAoBrBrkF,EAAUpmB,IAGV1mQ,EAAW,CAGboxW,YAAa,SAAUzxC,EAAS0xC,EAAYC,GAC1C,IAAIvvE,EA8BJ,OA5BI1oT,EAAQg4X,GACVtvE,EAAUsvE,EACDA,EAAWL,IACpBjvE,EAAU,CAAC,CACThrT,KAAM,MACNE,OAAQo6X,EAAWL,IACnBxB,aAAc6B,EAAW7B,gBAIvB6B,EAAWE,UAAYF,EAAW90B,WACpC+0B,EAAkBD,EAAW7B,aAC7B6B,EAAaA,EAAWE,SAG1BxvE,EAAU,CAAC,CACThrT,KAAM,UACNE,OAAQo6X,EACR7B,aAAc8B,KAIlBrnR,EAAK83M,GAAS,SAAUE,GACtB,IAAIlrT,EAAOkrT,EAAOlrT,KACT,YAATA,IAAuBA,EAAOkrT,EAAOlrT,KAAO,WAC5C,IAAIooB,EAAQqyW,EAAQz6X,GACpBooB,EAAM8iS,EACR,IACOnV,EAAQ/nS,IAAI46U,EAAS59B,EAC9B,EACA4sE,YAAa,SAAUhvC,GACrB,OAAO7yC,EAAQr3S,IAAIkqV,EACrB,GAEE6xC,EAAU,CACZ/B,QAAS,SAAUxtE,GACjB,IAAIhrT,EAASgrT,EAAOhrT,OACpBgrT,EAAOwtE,QAAWxpE,EAAShvT,GAAmC,qBAATiM,MAAwBA,KAAKic,MAAQjc,KAAKic,MAAMloB,GAAU,IAAIkB,SAAS,WAAalB,EAAS,KAAnC,GAA1EA,CACvC,EAOA+5X,IAAK,SAAU/uE,GACbA,EAAOouE,OAASc,EAASlvE,EAAOhrT,OAClC,GAEFvD,EAAOD,QAAUusB,C,iCC5FjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB4yW,EAAS5yW,EAAQ,OAyBrB,SAAS02W,EAAOnhR,GACd,IAAKA,EAAKohR,aACR,OAAOphR,EAGT,IAAIqhR,EAAcrhR,EAAKshR,UAEJ,MAAfD,IACFA,EAAc,MAKhB,IAFA,IAAIp1B,EAAWjsP,EAAKisP,SAEXpmW,EAAI,EAAGA,EAAIomW,EAAShoW,OAAQ4B,IAMnC,IALA,IAAImb,EAAUirV,EAASpmW,GACnB+oV,EAAW5tU,EAAQ4tU,SACnB2yC,EAAc3yC,EAAS2yC,YACvBC,EAAgB5yC,EAAS4yC,cAEpB18X,EAAI,EAAGA,EAAIy8X,EAAYt9X,OAAQa,IAAK,CAC3C,IAAIyjE,EAAag5T,EAAYz8X,GAE7B,GAAsB,YAAlB8pV,EAASnoV,KACX86X,EAAYz8X,GAAK28X,EAAcl5T,EAAYi5T,EAAc18X,GAAIu8X,QACxD,GAAsB,iBAAlBzyC,EAASnoV,KAClB,IAAK,IAAIusI,EAAK,EAAGA,EAAKzqE,EAAWtkE,OAAQ+uI,IAAM,CAC7C,IAAIlqG,EAAUy/B,EAAWyqE,GACzBzqE,EAAWyqE,GAAMyuP,EAAc34V,EAAS04V,EAAc18X,GAAGkuI,GAAKquP,EAChE,CAEJ,CAKF,OADArhR,EAAKohR,cAAe,EACbphR,CACT,CAEA,SAASyhR,EAAcl5T,EAAYi5T,EAAeH,GAKhD,IAJA,IAAI17X,EAAS,GACT+7X,EAAQF,EAAc,GACtBG,EAAQH,EAAc,GAEjBv7X,EAAI,EAAGA,EAAIsiE,EAAWtkE,OAAQgC,GAAK,EAAG,CAC7C,IAAI8b,EAAIwmD,EAAW73D,WAAWzK,GAAK,GAC/B26B,EAAI2nC,EAAW73D,WAAWzK,EAAI,GAAK,GAEvC8b,EAAIA,GAAK,IAAU,EAAJA,GACf6e,EAAIA,GAAK,IAAU,EAAJA,GAEf7e,GAAK2/W,EACL9gW,GAAK+gW,EACLD,EAAQ3/W,EACR4/W,EAAQ/gW,EAERj7B,EAAOO,KAAK,CAAC6b,EAAIs/W,EAAazgW,EAAIygW,GACpC,CAEA,OAAO17X,CACT,CASA,SAAS+pB,EAASuxW,EAASvqG,GAEzB,OADAyqG,EAAOF,GACA1sJ,EAAO5oN,IAAI4oN,EAAOtiN,OAAOgvW,EAAQh1B,UAAU,SAAU21B,GAE1D,OAAOA,EAAWhzC,UAAYgzC,EAAWvgP,YAAcugP,EAAWhzC,SAAS2yC,YAAYt9X,OAAS,CAClG,KAAI,SAAU29X,GACZ,IAAIvgP,EAAaugP,EAAWvgP,WACxBg1F,EAAMurJ,EAAWhzC,SACjB2yC,EAAclrJ,EAAIkrJ,YAClB5yC,EAAa,GAEA,YAAbt4G,EAAI5vO,MACNkoV,EAAWzoV,KAAK,CACdO,KAAM,UAGNooV,SAAU0yC,EAAY,GACtBzyC,UAAWyyC,EAAYn9X,MAAM,KAIhB,iBAAbiyO,EAAI5vO,MACN8tO,EAAO56H,KAAK4nR,GAAa,SAAU95W,GAC7BA,EAAK,IACPknU,EAAWzoV,KAAK,CACdO,KAAM,UACNooV,SAAUpnU,EAAK,GACfqnU,UAAWrnU,EAAKrjB,MAAM,IAG5B,IAGF,IAAIwyR,EAAS,IAAIymG,EAAOh8O,EAAWq1I,GAAgB,QAASi4D,EAAYttM,EAAW00D,IAEnF,OADA6gF,EAAOv1I,WAAaA,EACbu1I,CACT,GACF,CAEAxzR,EAAOD,QAAUusB,C,wBCtIjB,IAAI6kN,EAAS9pN,EAAQ,OAoBrB,SAASsxW,EAAgBC,EAAUl3U,GAEjC,OADAA,EAAWA,GAAY,CAAC,EAAG,GACpByvL,EAAO5oN,IAAI,CAAC,EAAG,IAAI,SAAU0iO,GAClC,IAAIp9O,EAAM6zC,EAASupM,GACf4tI,EAAWD,EAAS3tI,GAAU,EAC9BtlN,EAAK,GACLC,EAAK,GAIT,OAHAD,EAAGslN,GAAUp9O,EAAMgrX,EACnBjzV,EAAGqlN,GAAUp9O,EAAMgrX,EACnBlzV,EAAG,EAAIslN,GAAUrlN,EAAG,EAAIqlN,GAAUvpM,EAAS,EAAIupM,GACxCjmP,KAAK6iB,IAAIhpB,KAAK80O,YAAYhuM,GAAIslN,GAAUpsP,KAAK80O,YAAY/tM,GAAIqlN,GACtE,GAAGpsP,KACL,CAEA,SAASytB,EAASolN,GAChB,IAAI51M,EAAO41M,EAASm2B,kBACpB,MAAO,CACLn2B,SAAU,CACRruO,KAAM,MACNsb,EAAGmd,EAAKnd,EACR6e,EAAG1B,EAAK0B,EACR6J,MAAOvL,EAAKuL,MACZC,OAAQxL,EAAKwL,OACb20C,KAAMy1J,EAAS+B,WAEjBjqI,IAAK,CACHitI,MAAO,SAAU34N,GAIf,OAAO4zN,EAASiC,YAAY71N,EAC9B,EACAqqE,KAAMgpJ,EAAOv1N,KAAK+8W,EAAiBjnJ,IAGzC,CAEA1xO,EAAOD,QAAUusB,C,wBCzDjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBozT,EAAiBpzT,EAAQ,OAEzBk/N,EAAkBl/N,EAAQ,OAE1BgtW,EAAmBhtW,EAAQ,OAE3BmlR,EAAanlR,EAAQ,OAErBitW,EAAuBjtW,EAAQ,OAoB/BktW,EAAY95C,EAAel4N,OAAO,CACpCl/G,KAAM,mBAKN4mC,KAAM,KAMN4zR,gBAAiB,GAKjB3B,mBAAoB,WAClB,OAAO31E,EAAgB,CAAC,CAAC,OAAQ,SAAU,CAAC,YAAa,eAAgB,CAAC,SAAU,eAAgB,CAAC,QAAS,SAAU,CAAC,UAAW,YAA7HA,CAA0I1nP,KAAKw5O,SAAS,mBACjK,EAYAumF,mBAAoB,SAAUrB,GAC5B,IAAIM,EAAkBh/T,KAAKg/T,gBAAkB1sF,EAAOh+M,MAAMoqS,GAE1D,GAAIM,EACF,IAAK,IAAIh7T,EAAIg7T,EAAgBh9T,OAAS,EAAGgC,GAAK,EAAGA,IAC/C2pS,EAAWi8B,IAAI5K,EAAgBh7T,GAGrC,EAUA47X,eAAgB,SAAU99X,GACxB,IAAIk9T,EAAkBh/T,KAAKg/T,gBAE3B,IAAKA,EAAgBh9T,OACnB,MAAO,SAGT,GAAa,MAATF,GAAiBiN,MAAMjN,GACzB,MAAO,WAIT,GAA+B,IAA3Bk9T,EAAgBh9T,OAAc,CAChC,IAAI8rC,EAAWkxR,EAAgB,GAE/B,GAAIlxR,EAAS,IAAMhsC,GAASA,GAASgsC,EAAS,GAC5C,MAAO,QAEX,MACE,IAAK,IAAI9pC,EAAI,EAAGwT,EAAMwnT,EAAgBh9T,OAAQgC,EAAIwT,EAAKxT,IACrD,GAAIg7T,EAAgBh7T,GAAG,IAAMlC,GAASA,GAASk9T,EAAgBh7T,GAAG,GAChE,MAAO,SAKb,MAAO,UACT,IAEEwyO,EAAgB,CAClBhyO,KAAM,QAKNytI,IAAK,KAGLmrL,gBAAiB,CACf50R,MAAO,GACPq/B,YAAa,EACbg8J,YAAa,oBACbjzM,MAAO,oBACP0I,QAAS,IAEXulS,UAAU,EAEV9mP,EAAG,IAIL,SAAS+9S,EAAYz/U,EAAUtL,GAC7B,OAAOA,EAAOvmC,OAASumC,EAAO9rB,KAAO,WAAa,QACpD,CAJAqzN,EAAOt0H,MAAM03Q,EAAUnuX,UAAWkuX,GAMlCD,EAAiB,WAAYE,EAAWI,EAAat/I,GACrD,IAAI/oN,EAAWioW,EACfv0X,EAAOD,QAAUusB,C,iCCxIjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBwiH,EAASxiH,EAAQ,OAEjB2zT,EAAa3zT,EAAQ,MAErBoqS,EAAapqS,EAAQ,MAErBq3W,EAAer3W,EAAQ,OAEvBsuN,EAAUtuN,EAAQ,OAElBmlR,EAAanlR,EAAQ,OAErBmhT,EAAanhT,EAAQ,OAyBrBkvF,EAAO46H,EAAO56H,KACdikI,EAAUx1O,KAAKyI,IACf8sO,EAAUv1O,KAAKwI,IACfmxX,EAAY35X,KAAK2I,MACjBixX,EAAW55X,KAAK0I,KAChB63E,EAAQinN,EAAWjnN,MACnB3rD,EAAK50B,KAAK40B,GAEd,SAASilW,EAASpnG,EAAelmD,EAAS/nI,GAMxC3qG,KAAKq3X,SAAW/kJ,EAAO6hD,gBAQvBn0R,KAAKigY,YAAc,CAAC,EAOpBjgY,KAAK46J,WAAag+H,EAAch+H,WAKhC56J,KAAKuqX,MAKLvqX,KAAKy6P,OAASm+B,EAEd54R,KAAKkgY,MAAMtnG,EAAelmD,EAAS/nI,EACrC,CAgXA,SAASmmP,EAASt5U,EAAK+1K,GACrB,OAAOouD,EAAQD,EAAQlkO,EAAK+1K,EAAO,IAAKA,EAAO,GACjD,CAEA,SAAS4yM,EAAwBpkV,EAAW65I,GAC1C,IAAInmL,EAAOmmL,EAAWwqM,cAAgBxqM,EAAWyqM,UAAY,GAC7D,MAAO,CACLvuW,SAAUriB,EAAOssC,EACjB68Q,uBAAwBnpT,EACxBgsT,eAAe,EAEnB,CAEA,SAAS6kE,EAAqBvkV,EAAW65I,GACvC,IAKI9jK,EAGAonS,EARAknE,EAAexqM,EAAWwqM,aAC1BG,EAAkB3qM,EAAW2qM,gBAC7BF,EAAYzqM,EAAWyqM,UACvBG,EAAoB5qM,EAAW4qM,kBAC/BC,EAAkB7qM,EAAW6qM,gBAE7B7nE,EAAyB4nE,EACzB/kE,GAAgB,EAepB,OAZI1/Q,EAAY0kV,EAAgB,IAC9B3uW,EAAWiqB,EAAYykV,EACvBtnE,EAAuBsnE,GACdzkV,GAAa0kV,EAAgB,IACtC3uW,EAAW8jK,EAAW8qM,qBAAuB3kV,EAAYwkV,EAAkB3qM,EAAW4qK,iBAAiB,GACvG5nC,EAAyB2nE,EACzB9kE,GAAgB,IAEhB3pS,EAAWsuW,GAAgBC,EAAY,EAAItkV,GAAaykV,EACxDtnE,EAAuBsnE,GAGlB,CACL1uW,SAAUA,EACV8mS,uBAAwBA,EACxB6C,cAAeA,EACfvC,qBAAsBA,EAE1B,CAxZA8mE,EAASz4X,UAAY,CACnB/C,KAAM,WACN0I,YAAa8yX,EAMbE,MAAO,SAAUtnG,EAAelmD,EAAS/nI,GACvC,IAAIiwD,EAAag+H,EAAch+H,WAC3B+lO,EAAoB/nG,EAAc+nG,kBACtCjpR,EAAKkjD,GAAY,SAAU3oB,EAAK9qC,GAC9B,IAAIprD,EAAY4kV,EAAkBx5R,GAC9Bg6K,EAAYzuC,EAAQizC,aAAa,eAAgB5pO,GAEjD3Q,EAAOprC,KAAKq3X,SAAS7kX,IAAIy/H,EAAK,IAAI4tP,EAAa5tP,EAAK2gL,EAAWoyC,mBAAmB7jF,GAAY,CAAC,EAAG,GAAIA,EAAUj+Q,IAAI,QAAS64C,IAE7H6nU,EAA2B,aAAdx4U,EAAK5mC,KACtB4mC,EAAK6sM,OAAS2rI,GAAcziG,EAAUj+Q,IAAI,eAC1CkoC,EAAK6oR,QAAU9yC,EAAUj+Q,IAAI,WAE7Bi+Q,EAAU/1O,KAAOA,EACjBA,EAAKmmN,MAAQ4vB,EACb/1O,EAAKipM,iBAAmB8sC,EAAU9sC,iBAAmBr0O,IACvD,GAAGA,KACL,EAOAg3B,OAAQ,SAAU07M,EAAS/nI,GACzB3qG,KAAK4gY,sBAAsB5gY,KAAKy6P,OAAQ/nB,EAC1C,EAKAupD,aAAc,SAAUjsR,GACtB,IAAI4lL,EAAa51L,KAAK6gY,kBAElBC,EAAWlrM,EAAWkrM,SACtBC,EAAanrM,EAAWmrM,WACxBC,EAAgBprM,EAAWorM,cAC3BC,EAAQjxX,EAAM,EAAIgxX,GAClBE,EAAUlxX,EAAMgxX,GACpB,OAAOC,GAASH,GAAYG,GAASH,EAAWlrM,EAAW23L,YAAc2T,GAAWH,GAAcG,GAAWH,EAAanrM,EAAWwqM,YACvI,EACA5mJ,SAAU,WACR,OAAOx5O,KAAKy6P,MACd,EAMAmmI,sBAAuB,SAAUhoG,EAAelmD,GAC9CA,EAAQy/E,YAAW,SAAUv+E,GAC3B,GAAKglD,EAAcllM,SAASkgJ,EAAalB,GAAzC,CAIA,IAAIzzN,EAAO20N,EAAY7oI,UACvB2M,EAAK13G,KAAK46J,YAAY,SAAU3oB,GAC9B,IAAI7mG,EAAOprC,KAAKq3X,SAASn0X,IAAI+uI,GAE7B7mG,EAAK/U,MAAM4iW,oBAAoBh6W,EAAMA,EAAKysO,aAAaz5G,IACvD2gL,EAAWm7D,gBAAgB3iV,EAAK/U,MAAO+U,EAAKmmN,MAC9C,GAAGvxP,KARH,CASF,GAAGA,KACL,EAOA6rC,OAAQ,SAAU+sP,EAAejuL,GAC/B3qG,KAAKuqX,MAAQpuC,EAAW5+E,cAAcq7B,EAAcp7B,qBAAsB,CACxEh1N,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,cAGdtiP,KAAKmhY,aACP,EAKAzhJ,QAAS,WACP,OAAO1/O,KAAKuqX,KACd,EAKAsW,gBAAiB,WACf,IAgBIO,EAhBAxoG,EAAgB54R,KAAKy6P,OACrBx9N,EAAOj9B,KAAKuqX,MACZ1oI,EAAK,CAAC,IAAK,KACXC,EAAK,CAAC,QAAS,UACf35I,EAASywL,EAAc11R,IAAI,UAC3B89X,EAA2B,eAAX74R,EAA0B,EAAI,EAC9Ci4R,EAAenjW,EAAK6kN,EAAGk/I,IACvBK,EAAe,CAAC,EAAGjB,GACnBC,EAAYrgY,KAAK46J,WAAW54J,OAC5Bu+X,EAAkBzvC,EAASl4D,EAAc11R,IAAI,mBAAoBm+X,GACjEC,EAAkBxwC,EAASl4D,EAAc11R,IAAI,oBAAsB,EAAG,CAAC,EAAGm9X,IAC1EkB,EAAiB3oG,EAAc11R,IAAI,mBAAqBm9X,EAAY,GAAKA,EAAYiB,GAAmBA,EAAkB,GAAKf,EAAkB,GAAKH,EAAe,EAIrK5/B,EAAmB5nE,EAAc11R,IAAI,oBAGzC,GAAKs9V,EAMH4gC,EAAUtwC,EAAS0P,EAAiB,GAAKA,EAAiB,GAAI6gC,GAC9D7gC,EAAiB,GAAKA,EAAiB,GAAK4gC,MAPvB,CACrBA,EAAUtwC,EAASyvC,GAAmBe,EAAkB,GAAID,GAC5D,IAAIG,EAAmB5oG,EAAc11R,IAAI,qBAAuB48X,EAAUO,EAAY,GACtF7/B,EAAmB,CAAC+/B,EAAkBiB,EAAmBJ,EAAU,GACnE5gC,EAAiB,GAAKA,EAAiB,GAAK4gC,CAC9C,CAKA,IAAIZ,GAAqBJ,EAAegB,IAAYf,EAAYiB,GAEhEd,EAAoB,IAAMA,EAAoB,GAE9C,IAAIC,EAAkB,CAACX,EAAUp5S,EAAM85Q,EAAiB,GAAK+/B,EAAiB,IAAM,EAAGR,EAASr5S,EAAM85Q,EAAiB,GAAK+/B,EAAiB,IAAM,GAE/IG,EAAuBF,EAAoBD,EAAkB//B,EAAiB,GAClF,MAAO,CACLr4P,OAAQA,EACR64R,cAAeA,EACfD,WAAY9jW,EAAK4kN,EAAGm/I,IACpBZ,aAAcA,EACdU,SAAU7jW,EAAK4kN,EAAG,EAAIm/I,IACtBzT,WAAYtwV,EAAK6kN,EAAG,EAAIk/I,IACxBO,eAAgBA,EAChBhB,gBAAiBA,EACjBC,kBAAmBA,EACnBhgC,iBAAkBA,EAClB6/B,UAAWA,EACXI,gBAAiBA,EACjBC,qBAAsBA,EAE1B,EAKAS,YAAa,WACX,IAAIlkW,EAAOj9B,KAAKuqX,MACZxqF,EAAO//R,KAAKq3X,SACZz8N,EAAa56J,KAAK46J,WAElBg7B,EAAa51L,KAAK6gY,kBAElB14R,EAASytF,EAAWztF,OACxB43L,EAAKroL,MAAK,SAAUtsE,GAClB,IAAI8+O,EAAa,CAAC,EAAGt0F,EAAW23L,YAC5BpmR,EAAM/7D,EAAK6oR,QAAU,EAAI,EAC7B7oR,EAAK85T,UAAUh7E,EAAW/iL,GAAM+iL,EAAW,EAAI/iL,GACjD,IACAuQ,EAAKkjD,GAAY,SAAU3oB,EAAK9qC,GAC9B,IAAIk4J,GAAWzpE,EAAW2rM,eAAiBjB,EAAuBH,GAAyBh5R,EAAKyuF,GAC5F6rM,EAAgB,CAClBt6U,WAAY,CACVrnC,EAAGu/O,EAAQvtO,SACX6M,EAAGi3J,EAAW23L,YAEhBnmU,SAAU,CACRtnC,EAAG,EACH6e,EAAG0gO,EAAQvtO,WAGX4vW,EAAgB,CAClBv6U,WAAYpsB,EAAK,EACjBqsB,SAAU,GAERt1B,EAAW,CAAC2vW,EAAct5R,GAAQroF,EAAImd,EAAKnd,EAAG2hX,EAAct5R,GAAQxpE,EAAI1B,EAAK0B,GAC7Es1H,EAAWytO,EAAcv5R,GACzB9gC,EAAY2jE,EAAOhkI,SACvBgkI,EAAO50G,OAAOixC,EAAWA,EAAW4sF,GACpCjpB,EAAO10G,UAAU+wC,EAAWA,EAAWv1C,GAKvC9xB,KAAKigY,YAAYhuP,GAAO,CACtBngH,SAAUA,EACVmiI,SAAUA,EACV5sF,UAAWA,EACXuxP,uBAAwBv5D,EAAQu5D,uBAChC6C,cAAep8D,EAAQo8D,cACvBvC,qBAAsB75D,EAAQ65D,qBAC9B5B,cAAe,EACf9N,eAAgB,EAEpB,GAAGxpT,KACL,EAOAmxQ,QAAS,SAAUl/H,GACjB,OAAOjyI,KAAKq3X,SAASn0X,IAAI+uI,EAC3B,EAQA6iG,YAAa,SAAUhzO,EAAOmwI,GAC5B,OAAOjyI,KAAK2hY,iBAAiB3hY,KAAKq3X,SAASn0X,IAAI+uI,GAAKgyG,YAAYniP,GAAQmwI,EAC1E,EAUAqmJ,gBAAiB,SAAUr5Q,EAAM4C,EAAU68B,EAAOC,GACvC,MAATD,IAAkBA,EAAQ,GACnB,MAAPC,IAAgBA,EAAM1/B,EAAKsJ,SAC3B,IAAImvW,EAAU13X,KAAKq3X,SACfz8N,EAAa56J,KAAK46J,WAClBgnO,EAAiB,GACjB17G,EAAa,GACjB5zC,EAAO56H,KAAKkjD,GAAY,SAAUi+H,GAChC+oG,EAAe39X,KAAKgb,EAAKysO,aAAamtC,IACtC3S,EAAWjiR,KAAKyzX,EAAQx0X,IAAI21R,GAAStnC,MACvC,IAGA,IAFA,IAAIswI,EAAe7hY,KAAKqlU,iBAEfxxF,EAAYn1L,EAAOm1L,EAAYl1L,EAAKk1L,IAAa,CACxD,IAAIwkD,EAEJ,GAAKwpG,EAEE,CACLxpG,EAAc,SAGd,IAFA,IAAIjvR,EAAS6V,EAAK2/Q,UAAUgjG,EAAgB/tJ,GAEnC5oO,EAAI,EAAG62X,EAAOlnO,EAAW54J,OAAQiJ,EAAI62X,EAAM72X,IAAK,CACvD,IAAImL,EAAQ8vQ,EAAWj7Q,GAAG20X,eAAex2X,EAAO6B,IAEhD,GAAc,aAAVmL,EAAsB,CACxBiiR,EAAc,WACd,KACF,CACF,CACF,MAbEA,EAAc,SAehBx2Q,EAASw2Q,EAAaxkD,EACxB,CACF,EAMAwxF,eAAgB,WAKd,IAJA,IAAIzqK,EAAa56J,KAAK46J,WAClB88N,EAAU13X,KAAKq3X,SACfwK,GAAe,EAEV52X,EAAI,EAAG62X,EAAOlnO,EAAW54J,OAAQiJ,EAAI62X,EAAM72X,IACQ,WAAtDysX,EAAQx0X,IAAI03J,EAAW3vJ,IAAIsmP,MAAMquI,mBACnCiC,GAAe,GAInB,OAAOA,CACT,EASAF,iBAAkB,SAAU/pJ,EAAO3lG,GACjC,IAAIsrL,EAAav9T,KAAKigY,YAAYhuP,GAClC,OAAO6kG,EAAQmyB,eAAe,CAACrxB,EAAO,GAAI2lF,EAAWl2P,UACvD,EAKAm2P,cAAe,SAAUvrL,GACvB,OAAOqgG,EAAOh+M,MAAMt0B,KAAKigY,YAAYhuP,GACvC,EAMAsuN,0BAA2B,SAAUvwV,GACnC,IAAI4lL,EAAa51L,KAAK6gY,kBAElBG,EAAgBprM,EAAWorM,cAC3BxgC,EAAmB5qK,EAAW4qK,iBAAiBr+V,QAC/Ci/X,EAAU5gC,EAAiB,GAAKA,EAAiB,GACjDjzK,EAAS,CAAC,EAAGqI,EAAW2qM,iBAAmB3qM,EAAWyqM,UAAY,IAEtE,IAAKrgY,KAAKi8R,aAAajsR,GACrB,MAAO,CACLu4K,SAAU,OACVi4K,iBAAkBA,GAKtB,IAGI/5Q,EAHAs7S,EAAa/xX,EAAMgxX,GAAiBprM,EAAWmrM,WAAanrM,EAAW8qM,qBAIvEn4M,EAAW,QACXi4M,EAAoB5qM,EAAW4qM,kBAE/BwB,EAAchiY,KAAKy6P,OAAOv3P,IAAI,8BAG9B++X,EAA4B,MAAlBD,EAAY,GAE1B,GAAIxB,EACEyB,GAAWzB,GAAqBuB,EAAaX,EAAUY,EAAY,IACrEz5M,EAAW,OACX9hG,EAAQs7S,EAAaX,EAAUY,EAAY,IAClCC,GAAWzB,GAAqBuB,EAAaX,GAAW,EAAIY,EAAY,KACjFz5M,EAAW,OACX9hG,EAAQs7S,EAAaX,GAAW,EAAIY,EAAY,MAE/Cv7S,EAAQs7S,EAAaX,EAAUY,EAAY,KAAO,IAAMv7S,EAAQs7S,EAAaX,GAAW,EAAIY,EAAY,MAAQ,IAAMv7S,EAAQ,GAGjIA,GAASmvG,EAAW2qM,gBAAkBC,EACtC/5S,EAAQkjP,EAAWljP,EAAO+5Q,EAAkBjzK,EAAQ,OAClDhF,EAAW,WAEV,CACG64M,EAAU5gC,EAAiB,GAAKA,EAAiB,GAArD,IACInyV,EAAMk/K,EAAO,GAAKw0M,EAAaX,EACnC5gC,EAAmB,CAAC9kH,EAAQ,EAAGrtO,EAAM+yX,EAAU,IAC/C5gC,EAAiB,GAAK7kH,EAAQpuD,EAAO,GAAIizK,EAAiB,GAAK4gC,GAC/D5gC,EAAiB,GAAKA,EAAiB,GAAK4gC,CAC9C,CAEF,MAAO,CACL5gC,iBAAkBA,EAClBj4K,SAAUA,EAEd,GA+CF,IAAI96J,EAAWuyW,EACf7+X,EAAOD,QAAUusB,C,wBC9ejB,IAAI6kN,EAAS9pN,EAAQ,OAEjB++U,EAAO/+U,EAAQ,OA6Bfq3W,EAAe,SAAU5tP,EAAK57G,EAAOmxU,EAAarxT,EAAU4F,GAC9DwrT,EAAKlnW,KAAKL,KAAMiyI,EAAK57G,EAAOmxU,GAU5BxnW,KAAKwE,KAAO2xC,GAAY,QAMxBn2C,KAAK+7C,UAAYA,CACnB,EAEA8jV,EAAat4X,UAAY,CACvB2F,YAAa2yX,EAMbtuI,MAAO,KAKPnZ,aAAc,WACZ,MAA0D,eAAnDp4O,KAAKq0O,iBAAiBmF,WAAWt2O,IAAI,SAC9C,GAEFovO,EAAO2qB,SAAS4iI,EAAct4B,GAC9B,IAAI95U,EAAWoyW,EACf1+X,EAAOD,QAAUusB,C,iCCrEjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBkzT,EAAYlzT,EAAQ,OAExBA,EAAQ,OAoBR,IAAIiF,EAAWiuT,EAAUh4N,OAAO,CAC9Bl/G,KAAM,WACN0xO,aAAc,CAAC,gBAKf7B,iBAAkB,KAOlBz5E,WAAY,KAOZ+lO,kBAAmB,KACnB3sG,WAAY,MACZx9C,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EACH1nC,KAAM,GACNE,IAAK,GACLD,MAAO,GACPE,OAAQ,GAGR23D,OAAQ,aAIRo5R,gBAAgB,EAChBC,iBAAkB,KAClBF,gBAAiB,EACjBf,gBAAiB,GAEjB2B,eAAgB,GAChBC,mBAAoB,GAGpBC,2BAA4B,EAAE,IAAM,IAAM,IAC1CC,oBAAqB,QAErBC,oBAAqB,MAMvB5qU,KAAM,WACJgkR,EAAUn0U,UAAUmwD,KAAK50D,MAAM9C,KAAM+C,WACrC/C,KAAK8iQ,YAAY,CAAC,EACpB,EAKAA,YAAa,SAAUm3B,GACrB,IAAI2mC,EAAa5gU,KAAK+qC,OACtBkvP,GAAa3nD,EAAOt0H,MAAM4iN,EAAY3mC,GAAW,GAEjDj6R,KAAKuiY,iBACP,EAOA7uS,SAAU,SAAU69J,EAAO7e,GACzB,IAAI8lD,EAAgBjnC,EAAMruP,IAAI,iBAC9B,OAAwB,MAAjBs1R,GAAyB9lD,EAAQizC,aAAa,WAAY6S,KAAmBx4R,IACtF,EACAggU,cAAe,SAAUn9N,GACvByvI,EAAO56H,KAAK,CAAC,iBAAkB,mBAAoB,kBAAmB,kBAAmB,qBAAqB,SAAUjzG,GAClHo+F,EAAIv8F,eAAe7B,KACrBzE,KAAK+qC,OAAOtmC,GAAQo+F,EAAIp+F,GAE5B,GAAGzE,KACL,EAKAuiY,gBAAiB,WACf,IAAI3nO,EAAa56J,KAAK46J,WAAa,GAC/B+lO,EAAoB3gY,KAAK2gY,kBAAoB,GAC7Cz6G,EAAa5zC,EAAOtiN,OAAOhwB,KAAK+0R,gBAAgBytG,cAAc,SAAUrhH,GAG1E,OAAQA,EAAUj+Q,IAAI,kBAAoB,KAAOlD,KAAK00S,cACxD,GAAG10S,MACHsyO,EAAO56H,KAAKwuK,GAAY,SAAU/E,GAChCvmH,EAAW32J,KAAK,MAAQk9Q,EAAUj+Q,IAAI,QACtCy9X,EAAkB18X,KAAKk9Q,EAAUuzB,eACnC,GACF,IAGFvzS,EAAOD,QAAUusB,C,gCChIjB,IAAIuyW,EAAWx3W,EAAQ,OAEnBwnP,EAAmBxnP,EAAQ,OAwB/B,SAASxhB,EAAO0rO,EAAS/nI,GACvB,IAAI83R,EAAe,GAoBnB,OAnBA/vJ,EAAQe,cAAc,YAAY,SAAUmlD,EAAezxL,GACzD,IAAI0rI,EAAW,IAAImtJ,EAASpnG,EAAelmD,EAAS/nI,GACpDkoI,EAASpuO,KAAO,YAAc0iG,EAC9B0rI,EAAShnM,OAAO+sP,EAAejuL,GAC/BiuL,EAAcvkD,iBAAmBxB,EACjCA,EAAS0e,MAAQqnC,EACjB6pG,EAAax+X,KAAK4uO,EACpB,IAEAH,EAAQy/E,YAAW,SAAUv+E,GAC3B,GAA4C,aAAxCA,EAAY1wO,IAAI,oBAAoC,CACtD,IAAI01R,EAAgBlmD,EAAQq5D,gBAAgB,CAC1Cr4D,SAAU,WACVzxO,MAAO2xO,EAAY1wO,IAAI,iBACvBsG,GAAIoqO,EAAY1wO,IAAI,gBACnB,GACH0wO,EAAYS,iBAAmBukD,EAAcvkD,gBAC/C,CACF,IACOouJ,CACT,CAEAzyH,EAAiB52L,SAAS,WAAY,CACpCpyE,OAAQA,G,wBCnDV,IAAIsrO,EAAS9pN,EAAQ,OAEjB6+P,EAAY7+P,EAAQ,OAoBxB,SAASiF,EAASsd,GAChB23V,EAAuB33V,GACvB43V,EAA4B53V,EAC9B,CAOA,SAAS23V,EAAuB33V,GAC9B,IAAIA,EAAO63V,SAAX,CAIA,IAAIC,GAAoB,EACxBvwJ,EAAO56H,KAAK3sE,EAAOiB,QAAQ,SAAU2kP,GAC/BA,GAAgC,aAAnBA,EAAUnsR,OACzBq+X,GAAoB,EAExB,IAEIA,IACF93V,EAAO63V,SAAW,CAAC,CAAC,GAVtB,CAYF,CAOA,SAASD,EAA4B53V,GACnC,IAAIg1P,EAAO1Y,EAAUooD,iBAAiB1kS,EAAOy3V,cAC7ClwJ,EAAO56H,KAAKqoL,GAAM,SAAU+iG,GAC1B,GAAKxwJ,EAAOhxO,SAASwhY,GAArB,CAIA,IAAItqG,EAAgBsqG,EAAWtqG,eAAiB,EAC5CuqG,EAAiB17G,EAAUooD,iBAAiB1kS,EAAO63V,UAAUpqG,GAE7DuqG,GAAkBA,EAAeT,qBACnChwJ,EAAOt0H,MAAM8kR,EAAYC,EAAeT,qBAAqB,EAN/D,CAQF,GACF,CAEAnhY,EAAOD,QAAUusB,C,wBCtEjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB0zQ,EAAc1zQ,EAAQ,MAEtB++U,EAAO/+U,EAAQ,OAEfiyO,EAASjyO,EAAQ,OAEjBm6P,EAAYloB,EAAOkoB,UAoBnBC,EAAQD,IAEZ,SAASqgH,EAAU3sW,EAAO2qO,GACxBA,EAAcA,GAAe,CAAC,EAAG,KACjCumG,EAAKlnW,KAAKL,KAAM,QAASq2B,EAAO2qO,GAUhChhQ,KAAKwE,KAAO,UACd,CAEAw+X,EAAUz7X,UAAY,CACpB2F,YAAa81X,EAKbjuJ,YAAa,SAAU/kO,EAAOuvT,GAC5B,OAAOv/T,KAAKi8O,MAAMlH,YAAY/kO,EAAOuvT,GAAoB,WAAbv/T,KAAKiyI,IAAmB,EAAI,EAC1E,EACAgxP,YAAa17B,EAAKhgW,UAAU08O,YAC5Bi/I,YAAa37B,EAAKhgW,UAAUq3T,YAS5BoqD,0BAA2B,WACzB,IAAI59U,EAAOprC,KACP+nP,EAAa38M,EAAKw6T,gBAClB6rB,EAAermV,EAAK/U,MACpBq7V,EAAgBD,EAAavmI,YAI7BwjI,EAAY+C,EAAalpW,QAE7B,GAAImpW,EAAc,GAAKA,EAAc,GAAK,EACxC,OAAO,EAGT,IAAIznG,EAAYynG,EAAc,GAC1BC,EAAWvmV,EAAK64M,YAAYgmC,EAAY,GAAK7+O,EAAK64M,YAAYgmC,GAC9D4nG,EAAQ1rX,KAAK6iB,IAAI2oW,GAGjB10V,EAAOi/P,EAAYlzB,gBAAgBihB,EAAWliC,EAAWwO,UAAW,SAAU,OAC9Eu7H,EAAO3rX,KAAKwI,IAAIsuB,EAAKwL,OAAQ,GAC7BwhK,EAAK6nL,EAAOD,EAEhB9iX,MAAMk7L,KAAQA,EAAKp3G,KACnB,IAAI/kD,EAAW3nC,KAAKwI,IAAI,EAAGxI,KAAK2I,MAAMm7L,IAClC10K,EAAQqtP,EAAMx3O,EAAKmmN,OACnBwgI,EAAmBx8V,EAAMw8V,iBACzBC,EAAgBz8V,EAAMy8V,cAe1B,OAXwB,MAApBD,GAA6C,MAAjBC,GAAyB7rX,KAAK6iB,IAAI+oW,EAAmBjkV,IAAa,GAAK3nC,KAAK6iB,IAAIgpW,EAAgBtD,IAAc,GAE3IqD,EAAmBjkV,EACpBA,EAAWikV,GAITx8V,EAAMy8V,cAAgBtD,EACtBn5V,EAAMw8V,iBAAmBjkV,GAGtBA,CACT,GAEFwkM,EAAO2qB,SAAS+lI,EAAWz7B,GAC3B,IAAI95U,EAAWu1W,EACf7hY,EAAOD,QAAUusB,C,wBC/GjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBozT,EAAiBpzT,EAAQ,OAEzBgtW,EAAmBhtW,EAAQ,OAE3BitW,EAAuBjtW,EAAQ,OAoB/B26W,EAAiBvnD,EAAel4N,OAAO,CACzCl/G,KAAM,YAKN4mC,KAAM,KAKNwxR,iBAAkB,WAChB,OAAO58T,KAAK0yO,QAAQq5D,gBAAgB,CAClCr4D,SAAU,QACVzxO,MAAOjC,KAAK+qC,OAAO+0P,WACnBt2R,GAAIxJ,KAAK+qC,OAAOq4V,UACf,EACL,IAEF9wJ,EAAOt0H,MAAMmlR,EAAe57X,UAAWkuX,GACvC,IAAI4N,EAAiC,CACnC9gV,MAAO,CAGL1iB,WAAY,GACZgzJ,WAAW,EACX3kJ,YAAa,GACbG,UAAW,CACTjY,QAAQ,IAGZiU,OAAQ,CAGN6D,YAAa,IAIjB,SAAS4nV,EAAYj9F,EAAS9tP,GAE5B,OAAOA,EAAOvmC,OAASumC,EAAO9rB,KAAO,WAAa,QACpD,CAEAu2W,EAAiB,QAAS2N,EAAgBrN,EAAauN,EAA+B9gV,OACtFizU,EAAiB,SAAU2N,EAAgBrN,EAAauN,EAA+Bh5V,O,iCCtEvF,IAAIi5V,EAAa96W,EAAQ,OAErBw6W,EAAYx6W,EAAQ,OA8BpB+6W,EAAQ,SAAU9+X,GAIpBzE,KAAKyE,KAAOA,GAAQ,GAMpBzE,KAAKkvB,GAAK,EAMVlvB,KAAKmvB,GAAK,EAMVnvB,KAAKwjY,YAAc,IAAIF,EAMvBtjY,KAAKyjY,WAAa,IAAIT,EACtBhjY,KAAKwjY,YAAYvnJ,MAAQj8O,KAAKyjY,WAAWxnJ,MAAQj8O,IACnD,EAEAujY,EAAMh8X,UAAY,CAChB/C,KAAM,QACNssT,oBAAoB,EACpB5jT,YAAaq2X,EAMb3oO,WAAY,CAAC,SAAU,SAKvB22F,MAAO,KAOP0qC,aAAc,SAAUjsR,GACtB,IAAI4nO,EAAQ53O,KAAKszU,aAAatjU,GAC9B,OAAOhQ,KAAKwjY,YAAYp1I,QAAQxW,EAAM,KAAO53O,KAAKyjY,WAAWr1I,QAAQxW,EAAM,GAC7E,EAOA61E,YAAa,SAAUxuS,GACrB,OAAOjf,KAAKwjY,YAAY/1E,YAAYxuS,EAAK,KAAOjf,KAAKyjY,WAAWh2E,YAAYxuS,EAAK,GACnF,EAMAkyP,QAAS,SAAUl/H,GACjB,OAAOjyI,KAAK,IAAMiyI,EAAM,OAC1B,EAKAg/K,QAAS,WACP,MAAO,CAACjxT,KAAKwjY,YAAaxjY,KAAKyjY,WACjC,EAOA95G,eAAgB,SAAUgjG,GACxB,IAAI5sF,EAAO,GACPw0B,EAAYv0T,KAAKyjY,WACjBzvE,EAAah0T,KAAKwjY,YAGtB,OAFAjvE,EAAUl+R,MAAM7xB,OAASmoX,GAAa5sF,EAAK97R,KAAKswT,GAChDP,EAAW39R,MAAM7xB,OAASmoX,GAAa5sF,EAAK97R,KAAK+vT,GAC1Cj0B,CACT,EAKA4qB,aAAc,WACZ,OAAO3qT,KAAKyjY,UACd,EAKA54E,cAAe,WACb,OAAO7qT,KAAKwjY,WACd,EAMA1/I,aAAc,SAAU14M,GACtB,IAAImpR,EAAYv0T,KAAKyjY,WACrB,OAAOr4V,IAASmpR,EAAYv0T,KAAKwjY,YAAcjvE,CACjD,EAOAv8E,YAAa,WACX,OAAOh4O,KAAK2pR,eAAe,WAAW,IAAM3pR,KAAK2pR,eAAe,QAAQ,IAAM3pR,KAAK2qT,cACrF,EAMAwG,eAAgB,SAAUl/K,GACxB,IAAI8lG,EAAkB,MAAP9lG,GAAuB,SAARA,EAAiBjyI,KAAKmxQ,QAAQl/H,GAAOjyI,KAAKg4O,cACxE,MAAO,CACLs5E,SAAU,CAACv5E,GACXw5E,UAAW,CAACvxT,KAAK8jP,aAAa/L,IAElC,EASAjD,YAAa,SAAU71N,EAAMsgT,GAC3B,OAAOv/T,KAAK6+R,aAAa,CAAC7+R,KAAKwjY,YAAYE,aAAazkX,EAAK,GAAIsgT,GAAQv/T,KAAKyjY,WAAWR,YAAYhkX,EAAK,GAAIsgT,IAChH,EAQAxqF,YAAa,SAAU/kO,EAAOuvT,GAC5B,IAAI3nF,EAAQ53O,KAAKszU,aAAatjU,GAC9B,MAAO,CAAChQ,KAAKwjY,YAAYG,aAAa/rJ,EAAM,GAAI2nF,GAAQv/T,KAAKyjY,WAAWP,YAAYtrJ,EAAM,GAAI2nF,GAChG,EAOA+T,aAAc,SAAUtjU,GACtB,IAAI21D,EAAK31D,EAAM,GAAKhQ,KAAKkvB,GACrB02C,EAAK51D,EAAM,GAAKhQ,KAAKmvB,GACrBolS,EAAYv0T,KAAK2qT,eACjBp9H,EAASgnI,EAAUrpE,YACnBkvC,EAAWj0R,KAAKyI,IAAI2+K,EAAO,GAAIA,EAAO,IACtCq2M,EAAWz9X,KAAKwI,IAAI4+K,EAAO,GAAIA,EAAO,IAG1CgnI,EAAUN,QAAU75B,EAAWwpG,EAAW,IAAMA,EAAWxpG,EAAW,IACtE,IAAI/vP,EAASlkC,KAAK2iB,KAAK68C,EAAKA,EAAKC,EAAKA,GACtCD,GAAMt7B,EACNu7B,GAAMv7B,EACN,IAAIC,EAASnkC,KAAK64H,OAAOp5D,EAAID,GAAMx/D,KAAK40B,GAAK,IAEzCk5D,EAAM3pD,EAAS8vP,EAAW,GAAK,EAEnC,MAAO9vP,EAAS8vP,GAAY9vP,EAASs5V,EACnCt5V,GAAgB,IAAN2pD,EAGZ,MAAO,CAAC5pD,EAAQC,EAClB,EAOAu0P,aAAc,SAAUjnD,GACtB,IAAIvtM,EAASutM,EAAM,GACfttM,EAASstM,EAAM,GAAK,IAAMzxO,KAAK40B,GAC/Bjb,EAAI3Z,KAAKmgC,IAAIgE,GAAUD,EAASrqC,KAAKkvB,GAErCyP,GAAKx4B,KAAKkgC,IAAIiE,GAAUD,EAASrqC,KAAKmvB,GAC1C,MAAO,CAACrP,EAAG6e,EACb,EAOAm5M,QAAS,WACP,IAAIy8E,EAAYv0T,KAAK2qT,eACjBqJ,EAAah0T,KAAK6qT,gBAClBD,EAAeoJ,EAAW9oE,YAAY/oP,QAC1CyoT,EAAa,GAAKA,EAAa,IAAMA,EAAa5vR,UAClD,IAAIgmO,EAAcuzD,EAAUrpE,YACxBixC,EAASh2R,KAAK40B,GAAK,IACvB,MAAO,CACL7L,GAAIlvB,KAAKkvB,GACTC,GAAInvB,KAAKmvB,GACTgtN,GAAIyuE,EAAa,GACjB79R,EAAG69R,EAAa,GAChB/qR,YAAamhO,EAAY,GAAKm7B,EAC9Br8P,UAAWkhO,EAAY,GAAKm7B,EAC5BtpG,UAAW0hI,EAAUN,QACrB7lE,QAAS,SAAUtuO,EAAG6e,GAGpB,IAAIgnC,EAAK7lD,EAAI9f,KAAKkvB,GACd02C,EAAKjnC,EAAI3+B,KAAKmvB,GACdmqH,EAAK3zE,EAAKA,EAAKC,EAAKA,EACpB74C,EAAI/sB,KAAK+sB,EACTovN,EAAKn8O,KAAKm8O,GACd,OAAO7iG,GAAMvsH,EAAIA,GAAKusH,GAAM6iG,EAAKA,CACnC,EAEJ,GAEF,IAAI1uN,EAAW81W,EACfpiY,EAAOD,QAAUusB,C,wBC/QjB,IAAI0lN,EAAU3qN,EAAQ,OAEtBA,EAAQ,OAoBR,IAAIiF,EAAW0lN,EAAQ6wE,qBAAqB,CAC1Cx/S,KAAM,QACN0xO,aAAc,CAAC,YAAa,aAK5B7B,iBAAkB,KAMlBwvJ,cAAe,SAAU1tV,GACvB,IAAI2tV,EACApxJ,EAAU1yO,KAAK0yO,QAMnB,OALAA,EAAQe,cAAct9L,GAAU,SAAUgrO,GACpCA,EAAUy7C,qBAAuB58T,OACnC8jY,EAAiB3iH,EAErB,GAAGnhR,MACI8jY,CACT,EACAttJ,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EACHtoC,OAAQ,CAAC,MAAO,OAChBpF,OAAQ,SAIZlpC,EAAOD,QAAUusB,C,wBCrDjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB++U,EAAO/+U,EAAQ,OAoBnB,SAAS86W,EAAWjtW,EAAOu0R,GACzB28C,EAAKlnW,KAAKL,KAAM,SAAUq2B,EAAOu0R,GAUjC5qT,KAAKwE,KAAO,UACd,CAEA8+X,EAAW/7X,UAAY,CACrB2F,YAAao2X,EAKbvuJ,YAAa,SAAU/kO,EAAOuvT,GAC5B,OAAOv/T,KAAKi8O,MAAMlH,YAAY/kO,EAAOuvT,GAAoB,WAAbv/T,KAAKiyI,IAAmB,EAAI,EAC1E,EACAyxP,aAAcn8B,EAAKhgW,UAAU08O,YAC7B0/I,aAAcp8B,EAAKhgW,UAAUq3T,aAE/BtsF,EAAO2qB,SAASqmI,EAAY/7B,GAC5B,IAAI95U,EAAW61W,EACfniY,EAAOD,QAAUusB,C,iCClDjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB8pN,GAFU7+L,EAAQojM,QAETruN,EAAQ,QAEjB+6W,EAAQ/6W,EAAQ,OAEhBi5N,EAAUj5N,EAAQ,OAElBk5N,EAAeD,EAAQC,aAEvBy1E,EAAc3uS,EAAQ,MAEtBw8U,EAAqB7tC,EAAY6tC,mBACjC+oB,EAAkB52D,EAAY42D,gBAE9B/9G,EAAmBxnP,EAAQ,OAE3Bi4P,EAAmBj4P,EAAQ,OAE3Bi0U,EAAsBh8E,EAAiBg8E,oBA6B3C,SAASsnC,EAAY9nJ,EAAO+nJ,EAAYr5R,GACtC,IAAIl7D,EAASu0V,EAAW9gY,IAAI,UACxBslC,EAAQmiE,EAAI03I,WACZ55M,EAASkiE,EAAI23I,YACjBrG,EAAM/sN,GAAKwyN,EAAajyM,EAAO,GAAIjH,GACnCyzM,EAAM9sN,GAAKuyN,EAAajyM,EAAO,GAAIhH,GACnC,IAAIurR,EAAa/3E,EAAM4uE,gBACnBvhO,EAAOnjF,KAAKyI,IAAI45B,EAAOC,GAAU,EACjC4B,EAAS25V,EAAW9gY,IAAI,UAEd,MAAVmnC,EACFA,EAAS,CAAC,EAAG,QACHioM,EAAOxrO,QAAQujC,KAEzBA,EAAS,CAAC,EAAGA,IAGfA,EAAS,CAACq3M,EAAar3M,EAAO,GAAIi/C,GAAOo4J,EAAar3M,EAAO,GAAIi/C,IACjE0qO,EAAWC,QAAUD,EAAWkxC,UAAU76T,EAAO,GAAIA,EAAO,IAAM2pR,EAAWkxC,UAAU76T,EAAO,GAAIA,EAAO,GAC3G,CAMA,SAAS45V,EAAiBvxJ,EAAS/nI,GACjC,IAAIsxI,EAAQj8O,KACRu0T,EAAYt4E,EAAM0uE,eAClBqJ,EAAa/3E,EAAM4uE,gBAkBvB,GAhBA0J,EAAUl+R,MAAM6uU,UAAUryQ,KAAWA,KACrCmhO,EAAW39R,MAAM6uU,UAAUryQ,KAAWA,KACtC6/I,EAAQy/E,YAAW,SAAUv+E,GAC3B,GAAIA,EAAYS,mBAAqB4H,EAAO,CAC1C,IAAIh9N,EAAO20N,EAAY7oI,UACvBunI,EAAO56H,KAAKz4F,EAAKysO,aAAa,UAAU,IAAO,SAAUz5G,GACvD+hL,EAAW39R,MAAM4iW,oBAAoBh6W,EAAMw9U,EAAoBx9U,EAAMgzH,GACvE,IACAqgG,EAAO56H,KAAKz4F,EAAKysO,aAAa,SAAS,IAAO,SAAUz5G,GACtDsiL,EAAUl+R,MAAM4iW,oBAAoBh6W,EAAMw9U,EAAoBx9U,EAAMgzH,GACtE,GACF,CACF,IACA87O,EAAgBx5D,EAAUl+R,MAAOk+R,EAAUhjE,OAC3Cw8H,EAAgB/5D,EAAW39R,MAAO29R,EAAWziE,OAEtB,aAAnBgjE,EAAU/vT,OAAwB+vT,EAAUt8E,OAAQ,CACtD,IAAI1qD,EAASgnI,EAAUrpE,YACnBt+I,EAAO,IAAM2nN,EAAUl+R,MAAM9N,QACjCgsS,EAAUN,QAAU1mI,EAAO,IAAM3gF,EAAO2gF,EAAO,IAAM3gF,EACrD2nN,EAAU2wC,UAAU33K,EAAO,GAAIA,EAAO,GACxC,CACF,CASA,SAAS22M,EAAQ94V,EAAM+1O,GAMrB,GALA/1O,EAAK5mC,KAAO28Q,EAAUj+Q,IAAI,QAC1BkoC,EAAK/U,MAAQ2uU,EAAmB7jF,GAChC/1O,EAAK6sM,OAASkpC,EAAUj+Q,IAAI,gBAAgC,aAAdkoC,EAAK5mC,KACnD4mC,EAAK6oR,QAAU9yC,EAAUj+Q,IAAI,WAEF,cAAvBi+Q,EAAUztC,SAA0B,CACtCtoM,EAAK6oR,SAAW9yC,EAAUj+Q,IAAI,aAC9B,IAAI28B,EAAashP,EAAUj+Q,IAAI,cAC/BkoC,EAAK85T,UAAUrlU,EAAYA,GAAcuL,EAAK6oR,SAAW,IAAM,KACjE,CAGA9yC,EAAU/1O,KAAOA,EACjBA,EAAKmmN,MAAQ4vB,CACf,CAvGA34P,EAAQ,OAyGR,IAAI27W,EAAe,CACjBvpO,WAAY2oO,EAAMh8X,UAAUqzJ,WAC5B5zJ,OAAQ,SAAU0rO,EAAS/nI,GACzB,IAAIy5R,EAAY,GA2BhB,OA1BA1xJ,EAAQe,cAAc,SAAS,SAAUuwJ,EAAY78R,GACnD,IAAI80I,EAAQ,IAAIsnJ,EAAMp8R,GAEtB80I,EAAMjlN,OAASitW,EACf,IAAIjwE,EAAa/3E,EAAM4uE,gBACnB0J,EAAYt4E,EAAM0uE,eAClBsU,EAAkB+kE,EAAWH,cAAc,cAC3CvvE,EAAiB0vE,EAAWH,cAAc,aAC9CK,EAAQlwE,EAAYiL,GACpBilE,EAAQ3vE,EAAWD,GACnByvE,EAAY9nJ,EAAO+nJ,EAAYr5R,GAC/By5R,EAAUngY,KAAKg4O,GACf+nJ,EAAW3vJ,iBAAmB4H,EAC9BA,EAAMsV,MAAQyyI,CAChB,IAEAtxJ,EAAQy/E,YAAW,SAAUv+E,GAC3B,GAA4C,UAAxCA,EAAY1wO,IAAI,oBAAiC,CACnD,IAAI8gY,EAAatxJ,EAAQq5D,gBAAgB,CACvCr4D,SAAU,QACVzxO,MAAO2xO,EAAY1wO,IAAI,cACvBsG,GAAIoqO,EAAY1wO,IAAI,aACnB,GACH0wO,EAAYS,iBAAmB2vJ,EAAW3vJ,gBAC5C,CACF,IACO+vJ,CACT,GAEFp0H,EAAiB52L,SAAS,QAAS+qT,E,iCCjKnC,IAAI7xJ,EAAS9pN,EAAQ,OAoBrB,SAASsxW,EAAgBC,EAAUl3U,GAEjC,OAAOyvL,EAAO5oN,IAAI,CAAC,SAAU,UAAU,SAAUuoH,EAAKm6G,GACpD,IAAIhhN,EAAOprC,KAAK,MAAQiyI,EAAM,UAC1BjjI,EAAM6zC,EAASupM,GACf4tI,EAAWD,EAAS3tI,GAAU,EAC9BhvO,EAAS,SAAW60H,EACpBvuI,EAAuB,aAAd0nC,EAAK5mC,KAAsB4mC,EAAK4/M,eAAiB7kP,KAAK6iB,IAAIoiB,EAAKhuB,GAAQpO,EAAMgrX,GAAY5uV,EAAKhuB,GAAQpO,EAAMgrX,IAMzH,MAJY,UAAR/nP,IACFvuI,EAASA,EAASyC,KAAK40B,GAAK,KAGvBr3B,CACT,GAAG1D,KACL,CAEA,SAASytB,EAASolN,GAChB,IAAImhF,EAAanhF,EAASg4E,gBACtB0J,EAAY1hF,EAAS83E,eACrBtgR,EAAS2pR,EAAW9oE,YAExB,OADA7gN,EAAO,GAAKA,EAAO,IAAMA,EAAOrP,UACzB,CACL63M,SAAU,CACRruO,KAAM,QACN0qB,GAAI2jN,EAAS3jN,GACbC,GAAI0jN,EAAS1jN,GACbpC,EAAGsd,EAAO,GACV8xM,GAAI9xM,EAAO,IAEbsgE,IAAK,CACHitI,MAAOtF,EAAOv1N,MAAK,SAAUkC,GAC3B,IAAIorB,EAAS2pR,EAAW0vE,aAAazkX,EAAK,IACtCsjC,EAAQgyQ,EAAU0uE,YAAYhkX,EAAK,IACnC24N,EAAQ/E,EAASgsD,aAAa,CAACx0P,EAAQkY,IAE3C,OADAq1L,EAAM3zO,KAAKomC,EAAQkY,EAAQp8C,KAAK40B,GAAK,KAC9B68M,CACT,IACAtuJ,KAAMgpJ,EAAOv1N,KAAK+8W,EAAiBjnJ,IAGzC,CAEA1xO,EAAOD,QAAUusB,C,wBC/DjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB++U,EAAO/+U,EAAQ,OAoBnB,SAAS67W,EAAcpyP,EAAK57G,EAAOu0R,GACjC28C,EAAKlnW,KAAKL,KAAMiyI,EAAK57G,EAAOu0R,GAU5B5qT,KAAKwE,KAAO,QACZxE,KAAKuiD,MAAQ,EAMbviD,KAAKyE,KAAO,GAKZzE,KAAKuxP,KACP,CAEAjf,EAAO2qB,SAASonI,EAAe98B,GAC/B,IAAI95U,EAAW42W,EACfljY,EAAOD,QAAUusB,C,iCClDjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB67W,EAAgB77W,EAAQ,OAExB6jW,EAAgB7jW,EAAQ,OAExBmlR,EAAanlR,EAAQ,OAErB2uS,EAAc3uS,EAAQ,MAEtBkkW,EAAiBv1D,EAAYu1D,eAC7BqB,EAAkB52D,EAAY42D,gBAE9B/9G,EAAmBxnP,EAAQ,OAE3B87W,EAAW97W,EAAQ,OAqBvB,SAAS+7W,EAAM5jC,EAAYjuH,EAAS/nI,GAClC3qG,KAAKy6P,OAASkmG,EAMd3gW,KAAK46J,WAAa,GAClB56J,KAAKwkY,eAAiBlyJ,EAAO5oN,IAAIi3U,EAAW8jC,sBAAsB,SAAUC,EAAgBv9R,GAC1F,IAAI8qC,EAAM,aAAe9qC,EACrB45P,EAAgB,IAAIsjC,EAAcpyP,EAAwC,QAAnCyyP,EAAexhY,IAAI,YAAwB,IAAIohY,EAAa,IAAIjY,GAM3G,OALAtrB,EAAct8V,KAAOigY,EAAexhY,IAAI,QAExC69V,EAAcxvG,MAAQmzI,EACtBA,EAAet5V,KAAO21T,EACtB/gW,KAAK46J,WAAW32J,KAAKguI,GACd8uN,CACT,GAAG/gW,MACHA,KAAK6rC,OAAO80T,EAAYh2P,GAMxB3qG,KAAKkvB,GAMLlvB,KAAKmvB,GAMLnvB,KAAK+sB,EAML/sB,KAAKm8O,GAMLn8O,KAAK6/B,UACP,CAEA0kW,EAAMh9X,UAAUo3R,iBAAmB,WACjC,OAAO3+R,KAAKwkY,cACd,EAEAD,EAAMh9X,UAAUutO,YAAc,SAAUhzO,EAAO6iY,GAC7C,IAAI5jC,EAAgB/gW,KAAKwkY,eAAeG,GACxC,OAAO3kY,KAAK6+R,aAAakiE,EAAc98G,YAAYniP,GAAQ6iY,EAC7D,EAEAJ,EAAMh9X,UAAUs3R,aAAe,SAAUjnD,EAAO+sJ,GAC9C,IAAI5jC,EAAgB/gW,KAAKwkY,eAAeG,GACpCpiV,EAAQw+S,EAAcx+S,MACtBziC,EAAI9f,KAAKkvB,GAAK0oN,EAAQzxO,KAAKmgC,IAAIic,GAC/B5jB,EAAI3+B,KAAKmvB,GAAKyoN,EAAQzxO,KAAKkgC,IAAIkc,GACnC,MAAO,CAACziC,EAAG6e,EACb,EAEA4lW,EAAMh9X,UAAUwtO,YAAc,SAAUz0G,GACtC,IAAI36D,EAAK26D,EAAG,GAAKtgI,KAAKkvB,GAClB02C,EAAK06D,EAAG,GAAKtgI,KAAKmvB,GAClBkb,EAASlkC,KAAK2iB,KAAK68C,EAAKA,EAAKC,EAAKA,GACtCD,GAAMt7B,EACNu7B,GAAMv7B,EAQN,IAPA,IAIIu6V,EAJAt6V,EAASnkC,KAAK64H,OAAOp5D,EAAID,GAGzBk/T,EAAgBhyS,IAEhBiyS,GAAkB,EAEb9gY,EAAI,EAAGA,EAAIhE,KAAKwkY,eAAexiY,OAAQgC,IAAK,CACnD,IAAI+8V,EAAgB/gW,KAAKwkY,eAAexgY,GACpC4oG,EAAOzmG,KAAK6iB,IAAIshB,EAASy2T,EAAcx+S,OAEvCqqD,EAAOi4R,IACTD,EAAc7jC,EACd+jC,EAAiB9gY,EACjB6gY,EAAgBj4R,EAEpB,CAEA,MAAO,CAACk4R,IAAkBF,GAAeA,EAAYhmE,YAAYv0R,IACnE,EAEAk6V,EAAMh9X,UAAUskC,OAAS,SAAU80T,EAAYh2P,GAC7C,IAAIl7D,EAASkxT,EAAWz9V,IAAI,UACxB86P,EAAYrzJ,EAAI03I,WAChB4b,EAAatzJ,EAAI23I,YACjB+b,EAAWl4P,KAAKyI,IAAIovP,EAAWC,GAAc,EACjDj+P,KAAKkvB,GAAKy+Q,EAAWjsD,aAAajyM,EAAO,GAAIuuN,GAC7Ch+P,KAAKmvB,GAAKw+Q,EAAWjsD,aAAajyM,EAAO,GAAIwuN,GAC7Cj+P,KAAK6/B,WAAa8gU,EAAWz9V,IAAI,cAAgBiD,KAAK40B,GAAK,IAE3D,IAAIsP,EAASs2T,EAAWz9V,IAAI,UAEN,kBAAXmnC,GAAyC,kBAAXA,IACvCA,EAAS,CAAC,EAAGA,IAGfrqC,KAAKm8O,GAAKwxD,EAAWjsD,aAAar3M,EAAO,GAAIg0N,GAC7Cr+P,KAAK+sB,EAAI4gR,EAAWjsD,aAAar3M,EAAO,GAAIg0N,GAC5C/rB,EAAO56H,KAAK13G,KAAKwkY,gBAAgB,SAAUzjC,EAAe55P,GACxD45P,EAAcmE,UAAUllW,KAAKm8O,GAAIn8O,KAAK+sB,GACtC,IAAIw1B,EAAQviD,KAAK6/B,WAAasnE,EAAMhhG,KAAK40B,GAAK,EAAI/6B,KAAKwkY,eAAexiY,OAEtEugD,EAAQp8C,KAAK64H,MAAM74H,KAAKkgC,IAAIkc,GAAQp8C,KAAKmgC,IAAIic,IAC7Cw+S,EAAcx+S,MAAQA,CACxB,GAAGviD,KACL,EAEAukY,EAAMh9X,UAAUyvB,OAAS,SAAU07M,EAAS/nI,GAC1C,IAAI+zL,EAAgB1+R,KAAKwkY,eACrB7jC,EAAa3gW,KAAKy6P,OACtBnoB,EAAO56H,KAAKgnL,GAAe,SAAUqiE,GACnCA,EAAc1qU,MAAM6uU,UAAUryQ,KAAWA,IAC3C,IACA6/I,EAAQkY,iBAAiB,SAAS,SAAUm6I,EAAa59R,GACvD,GAA4C,UAAxC49R,EAAY7hY,IAAI,qBAAmCwvO,EAAQizC,aAAa,QAASo/G,EAAY7hY,IAAI,iBAAmBy9V,EAAxH,CAIA,IAAI1hV,EAAO8lX,EAAYh6R,UACvBunI,EAAO56H,KAAKgnL,GAAe,SAAUqiE,GACnCA,EAAc1qU,MAAM4iW,oBAAoBh6W,EAAMA,EAAKysO,aAAaq1G,EAAc9uN,KAChF,GALA,CAMF,GAAGjyI,MACH,IAAIkuC,EAAcyyT,EAAWz9V,IAAI,eAEjC,SAAS8hY,EAAiBl3V,GACxB,IAAIm3V,EAAQ9+X,KAAK4iB,IAAI,GAAI5iB,KAAK2I,MAAM3I,KAAKgqG,IAAIriE,GAAY3nC,KAAK++X,OAE1DthY,EAAIkqC,EAAWm3V,EASnB,OAPU,IAANrhY,EACFA,EAAI,EAGJA,GAAK,EAGAA,EAAIqhY,CACb,CAGA3yJ,EAAO56H,KAAKgnL,GAAe,SAAUqiE,EAAe55P,GAClD,IAAIg+R,EAAYzY,EAAe3rB,EAAc1qU,MAAO0qU,EAAcxvG,OAAOhkE,OACzEwgM,EAAgBhtB,EAAc1qU,MAAO0qU,EAAcxvG,OACnD,IAAI4vB,EAAY4/E,EAAcxvG,MAC1Bl7N,EAAQ0qU,EAAc1qU,MACtB+uW,EAAWjkH,EAAUypD,SACrBy6D,EAAWlkH,EAAU2pD,SACrBh9R,EAAWzX,EAAMivW,cAErB,GAAgB,MAAZF,GAAgC,MAAZC,EAEtBhvW,EAAM6uU,WAAWkgC,GAAWC,GAC5BhvW,EAAM63V,aAAamX,EAAWD,GAAYl3V,QACrC,GAAgB,MAAZk3V,EAAkB,CAG3B,GACEz2X,EAAMy2X,EAAWt3V,EAAWI,EAC5B7X,EAAM6uU,WAAWkgC,EAAUz2X,GAG3B0nB,EAAM63V,YAAYpgV,GAClBA,EAAWk3V,EAAiBl3V,SACrBn/B,EAAMw2X,EAAU,IAAMv+S,SAASj4E,IAAQi4E,SAASu+S,EAAU,IACrE,MAAO,GAAgB,MAAZE,EAAkB,CAG3B,GACEz2X,EAAMy2X,EAAWv3V,EAAWI,EAC5B7X,EAAM6uU,UAAUt2V,GAAMy2X,GACtBhvW,EAAM63V,YAAYpgV,GAClBA,EAAWk3V,EAAiBl3V,SACrBl/B,EAAMu2X,EAAU,IAAMv+S,SAASh4E,IAAQg4E,SAASu+S,EAAU,IACrE,KAAO,CACL,IAAII,EAAmBlvW,EAAM4uU,WAAWjjW,OAAS,EAE7CujY,EAAmBr3V,IACrBJ,EAAWk3V,EAAiBl3V,IAI9B,IAAIn/B,EAAMxI,KAAK0I,KAAKs2X,EAAU,GAAKr3V,GAAYA,EAC3Cl/B,EAAM++R,EAAWjnN,MAAM/3E,EAAMm/B,EAAWI,GAC5C7X,EAAM6uU,UAAUt2V,EAAKD,GACrB0nB,EAAM63V,YAAYpgV,EACpB,CACF,GACF,EAOAy2V,EAAM3pO,WAAa,GAEnB2pO,EAAMv9X,OAAS,SAAU0rO,EAAS/nI,GAChC,IAAI66R,EAAY,GAYhB,OAXA9yJ,EAAQe,cAAc,SAAS,SAAUktH,GACvC,IAAIj1T,EAAQ,IAAI64V,EAAM5jC,EAAYjuH,EAAS/nI,GAC3C66R,EAAUvhY,KAAKynC,GACfi1T,EAAWtsH,iBAAmB3oM,CAChC,IACAgnM,EAAQkY,iBAAiB,SAAS,SAAUm6I,GACE,UAAxCA,EAAY7hY,IAAI,sBAElB6hY,EAAY1wJ,iBAAmBmxJ,EAAUT,EAAY7hY,IAAI,eAAiB,GAE9E,IACOsiY,CACT,EAEAx1H,EAAiB52L,SAAS,QAASmrT,GACnC,IAAI92W,EAAW82W,EACfpjY,EAAOD,QAAUusB,C,wBCzQjB,IAAI0lN,EAAU3qN,EAAQ,OAElB8pN,EAAS9pN,EAAQ,OAEjBsjW,EAActjW,EAAQ,OAEtByuN,EAAQzuN,EAAQ,OAEhBitW,EAAuBjtW,EAAQ,OAoB/Bi9W,EAAmB3Z,EAAY52U,UAEnC,SAASwwV,EAAa7iS,EAAKn1D,GACzB,OAAO4kM,EAAO94I,SAAS,CACrB9rD,KAAMA,GACLm1D,EACL,CAEA,IAAI8iS,EAAaxyJ,EAAQ6wE,qBAAqB,CAC5Cx/S,KAAM,QACNq8R,cAAe,WACb,IAAI5yP,EAAcjuC,KAAKkD,IAAI,eACvBgrC,EAAcluC,KAAKkD,IAAI,eACvBmzB,EAAQr2B,KAAKkD,IAAI,SACjBirC,EAAWnuC,KAAKkD,IAAI,YACpBkrC,EAAWpuC,KAAKkD,IAAI,YACpBizC,EAAWn2C,KAAKkD,IAAI,YACpBmrC,EAAYruC,KAAKkD,IAAI,aACrB2qC,EAAgB7tC,KAAKkD,IAAI,QACzB0iY,EAAW5lY,KAAKkD,IAAI,aACpB2iY,EAAgB7lY,KAAKkD,IAAI,kBACzByqC,EAAU3tC,KAAKkD,IAAI,WACnBs+I,EAAexhJ,KAAKkD,IAAI,gBACxB4iY,EAAkBxzJ,EAAO5oN,IAAI1pB,KAAKkD,IAAI,cAAgB,IAAI,SAAU6iY,GAE9C,MAApBA,EAAap3X,KAAeo3X,EAAap3X,IAAM,IAAMo3X,EAAan3X,IACpEm3X,EAAan3X,IAAM,EACU,MAApBm3X,EAAan3X,KAAem3X,EAAan3X,IAAM,IAAMm3X,EAAap3X,MAC3Eo3X,EAAap3X,IAAM,GAGrB,IAAIq3X,EAAiBn4V,EA8BrB,GA5B0B,MAAtBk4V,EAAan1W,QACfo1W,EAAiB1zJ,EAAO94I,SAAS,CAC/B5oE,MAAOm1W,EAAan1W,OACnBid,IAILk4V,EAAezzJ,EAAOt0H,MAAMs0H,EAAOh+M,MAAMyxW,GAAe,CACtD93V,YAAaA,EACbC,YAAaA,EACb7X,MAAOA,EACP8X,SAAUA,EACVC,SAAUA,EACV+H,SAAUA,EACV9H,UAAWA,EAEX5pC,KAAMshY,EAAappW,KACnBiR,aAAc,MACdD,QAASA,EAETE,cAAem4V,EACfxkP,aAAcA,IACb,GAEEokP,IACHG,EAAathY,KAAO,IAGO,kBAAlBohY,EAA4B,CACrC,IAAII,EAAUF,EAAathY,KAC3BshY,EAAathY,KAAOohY,EAAcjqX,QAAQ,UAAsB,MAAXqqX,EAAkBA,EAAU,GACnF,KAAoC,oBAAlBJ,IAChBE,EAAathY,KAAOohY,EAAcE,EAAathY,KAAMshY,IAGvD,IAAIx0I,EAAQjf,EAAO5uH,OAAO,IAAIuzH,EAAM8uJ,EAAc,KAAM/lY,KAAK0yO,SAAU+iJ,GAIvE,OAFAlkI,EAAM7d,SAAW,QACjB6d,EAAMmjD,eAAiB10S,KAAK00S,eACrBnjD,CACT,GAAGvxP,MAEHA,KAAKykY,mBAAqB,WACxB,OAAOqB,CACT,CACF,EACAtvJ,cAAe,CACb4J,OAAQ,EACRroK,EAAG,EACHtoC,OAAQ,CAAC,MAAO,OAChBpF,OAAQ,MACRxK,WAAY,GACZp7B,KAAM,CACJipC,MAAM,GAIRO,YAAa,CAAC,EAAG,GACjBC,YAAa,EACbP,QAAS,GACTtX,OAAO,EAEPb,MAAO,UACP2Y,SAAUmkM,EAAOt0H,MAAM,CACrB1rE,UAAW,CACT1hB,MAAO,SAER60W,EAAiBt3V,UACpBE,UAAWq3V,EAAaD,EAAiBp3V,WAAW,GACpDD,SAAUs3V,EAAaD,EAAiBr3V,UAAU,GAClD+H,SAAU,WACV5H,UAAWm3V,EAAaD,EAAiBl3V,WAAW,GACpDgF,UAAWmyV,EAAaD,EAAiBlyV,WAAW,GAEpD4d,UAAW,MAGX1jC,EAAWk4W,EACfxkY,EAAOD,QAAUusB,C,wBC3IjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBozT,EAAiBpzT,EAAQ,OAEzBgtW,EAAmBhtW,EAAQ,OAE3BitW,EAAuBjtW,EAAQ,OAoB/BktW,EAAY95C,EAAel4N,OAAO,CACpCl/G,KAAM,aACNwvR,WAAY,MAKZ5oP,KAAM,KAKNipM,iBAAkB,KAKlBuoF,iBAAkB,WAChB,OAAO58T,IACT,IAEEw2O,EAAgB,CAClBnmM,KAAM,KACNE,IAAK,KACLD,MAAO,KACPE,OAAQ,KACRhsC,KAAM,QACNstB,SAAU,SACV8f,OAAQ,aACRzD,SAAU,CACRT,MAAM,EACN4E,UAAW,CACT9J,MAAO,EACPhkC,KAAM,UAMV+hR,QAAS,CACP74O,MAAM,GAERU,SAAU,CACRV,MAAM,EACN1rC,OAAQ,EACRswC,UAAW,CACT9J,MAAO,IAGX6F,UAAW,CACTX,MAAM,EACNI,SAAU,QAEZS,UAAW,CACTb,MAAM,EACN4E,UAAW,CACT9tC,KAAM,SACN80B,QAAS,MAKf,SAASw8V,EAAYz/U,EAAUtL,GAC7B,OAAOA,EAAOvmC,OAASumC,EAAO9rB,KAAO,WAAa,QACpD,CAEAqzN,EAAOt0H,MAAM03Q,EAAUnuX,UAAWkuX,GAClCD,EAAiB,SAAUE,EAAWI,EAAat/I,GACnD,IAAI/oN,EAAWioW,EACfv0X,EAAOD,QAAUusB,C,uBC/FjB,IAAIy4W,EAAa19W,EAAQ,OAErBoqS,EAAapqS,EAAQ,MAErB4jP,EAAU5jP,EAAQ,MAElB+0O,EAAgB6O,EAAQ7O,cAExB3tO,EAAQpH,EAAQ,OAEhBkvF,EAAO9nF,EAAM8nF,KAgCjB,SAASyuR,EAAOhlH,EAAWzuC,EAAS/nI,GAKlC3qG,KAAK8oR,UAAY,SAQjB9oR,KAAK46J,WAAa,CAAC,UAMnB56J,KAAK2wC,MAAQ,KAMb3wC,KAAKuqX,MAELvqX,KAAKkgY,MAAM/+G,EAAWzuC,EAAS/nI,GAM/B3qG,KAAKuxP,MAAQ4vB,CACf,CAEAglH,EAAO5+X,UAAY,CACjB/C,KAAM,aACNssT,oBAAoB,EACpB5jT,YAAai5X,EAUbjG,MAAO,SAAU/+G,EAAWzuC,EAAS/nI,GACnC,IAAIsnC,EAAMjyI,KAAK8oR,UACX19O,EAAO,IAAI86V,EAAWj0P,EAAK2gL,EAAWoyC,mBAAmB7jF,GAAY,CAAC,EAAG,GAAIA,EAAUj+Q,IAAI,QAASi+Q,EAAUj+Q,IAAI,aAClH0gX,EAA2B,aAAdx4U,EAAK5mC,KACtB4mC,EAAK6sM,OAAS2rI,GAAcziG,EAAUj+Q,IAAI,eAC1CkoC,EAAK6oR,QAAU9yC,EAAUj+Q,IAAI,WAC7BkoC,EAAKwG,OAASuvO,EAAUj+Q,IAAI,UAC5Bi+Q,EAAU/1O,KAAOA,EACjBA,EAAKmmN,MAAQ4vB,EACb/1O,EAAKipM,iBAAmBr0O,KACxBA,KAAK2wC,MAAQvF,CACf,EAOApU,OAAQ,SAAU07M,EAAS/nI,GACzB+nI,EAAQy/E,YAAW,SAAUv+E,GAC3B,GAAIA,EAAYS,mBAAqBr0O,KAAM,CACzC,IAAIif,EAAO20N,EAAY7oI,UACvB2M,EAAKz4F,EAAKysO,aAAa1rP,KAAK8oR,WAAW,IAAO,SAAU72I,GACtDjyI,KAAK2wC,MAAMta,MAAM4iW,oBAAoBh6W,EAAMgzH,EAC7C,GAAGjyI,MACH4yT,EAAWm7D,gBAAgB/tX,KAAK2wC,MAAMta,MAAOr2B,KAAK2wC,MAAM4gN,MAC1D,CACF,GAAGvxP,KACL,EAQA6rC,OAAQ,SAAUs1O,EAAWx2K,GAC3B3qG,KAAKuqX,MAAQhtH,EAAc,CACzBltN,KAAM8wO,EAAUj+Q,IAAI,QACpBqtC,IAAK4wO,EAAUj+Q,IAAI,OACnBotC,MAAO6wO,EAAUj+Q,IAAI,SACrBstC,OAAQ2wO,EAAUj+Q,IAAI,UACtBslC,MAAO24O,EAAUj+Q,IAAI,SACrBulC,OAAQ04O,EAAUj+Q,IAAI,WACrB,CACDslC,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,cAGdtiP,KAAKomY,aACP,EAKA1mJ,QAAS,WACP,OAAO1/O,KAAKuqX,KACd,EAKA6b,YAAa,WACX,IAAInpW,EAAOj9B,KAAKuqX,MACZn/U,EAAOprC,KAAK2wC,MACZynM,EAAehtM,EAAKgtM,eACpB7qD,EAAS6qD,EAAe,CAAC,EAAGn7M,EAAKuL,OAAS,CAAC,EAAGvL,EAAKwL,QACnD0+D,EAAM/7D,EAAKpQ,QAAU,EAAI,EAC7BoQ,EAAK85T,UAAU33K,EAAOpmF,GAAMomF,EAAO,EAAIpmF,IAEvCnnG,KAAKqmY,qBAAqBj7V,EAAMgtM,EAAen7M,EAAKnd,EAAImd,EAAK0B,EAC/D,EAMA0nW,qBAAsB,SAAUj7V,EAAM4sV,GACpC,IAAI9tG,EAAa9+O,EAAK8/M,YAClBo7I,EAAYp8G,EAAW,GAAKA,EAAW,GACvC9xC,EAAehtM,EAAKgtM,eACxBhtM,EAAK44M,cAAgB5L,EAAe,SAAUR,GAC5C,OAAOA,EAAQogJ,CACjB,EAAI,SAAUpgJ,GACZ,OAAO0uJ,EAAY1uJ,EAAQogJ,CAC7B,EACA5sV,EAAK4+S,aAAe5xG,EAAe,SAAUR,GAC3C,OAAOA,EAAQogJ,CACjB,EAAI,SAAUpgJ,GACZ,OAAO0uJ,EAAY1uJ,EAAQogJ,CAC7B,CACF,EAOA7mH,QAAS,WACP,OAAOnxQ,KAAK2wC,KACd,EAOAqnM,YAAa,WACX,OAAOh4O,KAAK2wC,KACd,EAKAsgR,QAAS,WACP,MAAO,CAACjxT,KAAK2wC,MACf,EAKAwgR,eAAgB,WACd,MAAO,CACLG,SAAU,CAACtxT,KAAKmxQ,WAEpB,EAQA8qB,aAAc,SAAUjsR,GACtB,IAAIitB,EAAOj9B,KAAK0/O,UACZt0M,EAAOprC,KAAKmxQ,UACZv/N,EAASxG,EAAKwG,OAElB,MAAe,eAAXA,EACKxG,EAAKgjN,QAAQhjN,EAAK4+S,aAAah6U,EAAM,MAAQA,EAAM,IAAMitB,EAAK0B,GAAK3uB,EAAM,IAAMitB,EAAK0B,EAAI1B,EAAKwL,OAE7F2C,EAAKgjN,QAAQhjN,EAAK4+S,aAAah6U,EAAM,MAAQA,EAAM,IAAMitB,EAAK0B,GAAK3uB,EAAM,IAAMitB,EAAK0B,EAAI1B,EAAKwL,MAExG,EAMAssM,YAAa,SAAU/kO,GACrB,IAAIo7B,EAAOprC,KAAKmxQ,UAChB,MAAO,CAAC/lO,EAAKwzR,YAAYxzR,EAAK4+S,aAAah6U,EAAsB,eAAhBo7B,EAAKwG,OAA0B,EAAI,KACtF,EAQAkjM,YAAa,SAAU9lO,GACrB,IAAIo8B,EAAOprC,KAAKmxQ,UACZl0O,EAAOj9B,KAAK0/O,UACZp/G,EAAK,GACLn5B,EAAsB,eAAhB/7D,EAAKwG,OAA0B,EAAI,EAQ7C,OANI5iC,aAAenI,QACjBmI,EAAMA,EAAI,IAGZsxH,EAAGn5B,GAAO/7D,EAAK44M,cAAc54M,EAAK64M,aAAaj1O,IAC/CsxH,EAAG,EAAIn5B,GAAe,IAARA,EAAYlqE,EAAK0B,EAAI1B,EAAKwL,OAAS,EAAIxL,EAAKnd,EAAImd,EAAKuL,MAAQ,EACpE83F,CACT,GAEF,IAAI7yG,EAAW04W,EACfhlY,EAAOD,QAAUusB,C,wBC3QjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB++U,EAAO/+U,EAAQ,OA8Bf09W,EAAa,SAAUj0P,EAAK57G,EAAOmxU,EAAarxT,EAAUrkB,GAC5Dy1U,EAAKlnW,KAAKL,KAAMiyI,EAAK57G,EAAOmxU,GAU5BxnW,KAAKwE,KAAO2xC,GAAY,QAUxBn2C,KAAK8xB,SAAWA,GAAY,SAQ5B9xB,KAAK4xC,OAAS,IAChB,EAEAs0V,EAAW3+X,UAAY,CACrB2F,YAAag5X,EAMb30I,MAAO,KAMPnZ,aAAc,WACZ,IAAItmN,EAAW9xB,KAAK8xB,SACpB,MAAoB,QAAbA,GAAmC,WAAbA,CAC/B,EAKAijN,YAAa,SAAU/kO,EAAOuvT,GAC5B,OAAOv/T,KAAKq0O,iBAAiBU,YAAY/kO,EAAOuvT,GAAO,EACzD,EAQAv7E,cAAe,KAOfgmG,aAAc,MAEhB13G,EAAO2qB,SAASipI,EAAY3+B,GAC5B,IAAI95U,EAAWy4W,EACf/kY,EAAOD,QAAUusB,C,wBC1GjB,IAAI6kN,EAAS9pN,EAAQ,OAoBrB,SAASsxW,EAAgBC,EAAUl3U,GAEjC,IAAIzX,EAAOprC,KAAKmxQ,UACZniQ,EAAM6zC,aAAoBh8C,MAAQg8C,EAAS,GAAKA,EAChDm3U,GAAYD,aAAoBlzX,MAAQkzX,EAAS,GAAKA,GAAY,EACtE,MAAqB,aAAd3uV,EAAK5mC,KAAsB4mC,EAAK4/M,eAAiB7kP,KAAK6iB,IAAIoiB,EAAK64M,YAAYj1O,EAAMgrX,GAAY5uV,EAAK64M,YAAYj1O,EAAMgrX,GAC7H,CAEA,SAASvsW,EAASolN,GAChB,IAAI51M,EAAO41M,EAAS6M,UACpB,MAAO,CACL7M,SAAU,CACRruO,KAAM,aACNsb,EAAGmd,EAAKnd,EACR6e,EAAG1B,EAAK0B,EACR6J,MAAOvL,EAAKuL,MACZC,OAAQxL,EAAKwL,QAEfkiE,IAAK,CACHitI,MAAO,SAAU5oO,GAEf,OAAO6jO,EAASiC,YAAY9lO,EAC9B,EACAs6E,KAAMgpJ,EAAOv1N,KAAK+8W,EAAiBjnJ,IAGzC,CAEA1xO,EAAOD,QAAUusB,C,wBChDjB,IAAI6kN,EAAS9pN,EAAQ,OA4BrB,SAAS2/E,EAAOg5K,EAAWt+K,GACzBA,EAAMA,GAAO,CAAC,EACd,IAAI8P,EAASwuK,EAAU9sC,iBACnBjpM,EAAO+1O,EAAU/1O,KACjB+8D,EAAS,CAAC,EACV4wR,EAAe3tV,EAAKtZ,SACpB8f,EAASxG,EAAKwG,OACd3U,EAAO01E,EAAO+sI,UACd+5I,EAAY,CAACx8V,EAAKnd,EAAGmd,EAAKnd,EAAImd,EAAKuL,MAAOvL,EAAK0B,EAAG1B,EAAK0B,EAAI1B,EAAKwL,QAChE89V,EAAc,CAChBp/U,WAAY,CACV5W,IAAKkpV,EAAU,GACfjpV,OAAQipV,EAAU,IAEpBryU,SAAU,CACR/W,KAAMopV,EAAU,GAChBnpV,MAAOmpV,EAAU,KAGrBtxR,EAAOr2E,SAAW,CAAY,aAAX8f,EAAwB20V,EAAYn/U,SAAS2xU,GAAgBU,EAAU,GAAe,eAAX7nV,EAA0B20V,EAAYp/U,WAAW4xU,GAAgBU,EAAU,IACzK,IAAI1sW,EAAI,CACNo6B,WAAY,EACZC,SAAU,GAEZ+gD,EAAO8rD,SAAW9tJ,KAAK40B,GAAK,EAAIhO,EAAE6kB,GAClC,IAAI40V,EAAe,CACjBj2V,KAAM,EACNC,OAAQ,EACRF,MAAO,EACPD,MAAO,GAET83D,EAAOqhN,eAAiBrhN,EAAOmvN,cAAgBnvN,EAAOkvN,cAAgBmvE,EAAazN,GAE/E53G,EAAUj+Q,IAAI,qBAChBilG,EAAOmvN,eAAiBnvN,EAAOmvN,eAG7BhlF,EAAOoS,SAAS7hJ,EAAIymN,YAAanoC,EAAUj+Q,IAAI,uBACjDilG,EAAOqhN,gBAAkBrhN,EAAOqhN,gBAGlC,IAAIsB,EAAgBjoN,EAAIzsE,OAIxB,OAHiB,MAAjB00R,IAA0BA,EAAgB3pC,EAAUj+Q,IAAI,qBACxDilG,EAAO2iN,cAAiC,QAAjBiuE,GAA0BjuE,EAAgBA,EACjE3iN,EAAOm0I,GAAK,EACLn0I,CACT,CAEAjnG,EAAQinG,OAASA,C,iCC5EjB,IAAIg+R,EAAS39W,EAAQ,MAEjBwnP,EAAmBxnP,EAAQ,OAgC/B,SAASxhB,EAAO0rO,EAAS/nI,GACvB,IAAI87R,EAAU,GAkBd,OAjBA/zJ,EAAQe,cAAc,cAAc,SAAU0tC,EAAWh6K,GACvD,IAAIwL,EAAS,IAAIwzR,EAAOhlH,EAAWzuC,EAAS/nI,GAC5CgI,EAAOluG,KAAO,UAAY0iG,EAC1BwL,EAAO9mE,OAAOs1O,EAAWx2K,GACzBw2K,EAAU9sC,iBAAmB1hI,EAC7B8zR,EAAQxiY,KAAK0uG,EACf,IACA+/H,EAAQy/E,YAAW,SAAUv+E,GAC3B,GAA4C,eAAxCA,EAAY1wO,IAAI,oBAAsC,CACxD,IAAI4oS,EAAkBp5D,EAAQq5D,gBAAgB,CAC5Cr4D,SAAU,aACVzxO,MAAO2xO,EAAY1wO,IAAI,mBACvBsG,GAAIoqO,EAAY1wO,IAAI,kBACnB,GACH0wO,EAAYS,iBAAmBy3D,GAAmBA,EAAgBz3D,gBACpE,CACF,IACOoyJ,CACT,CAEAz2H,EAAiB52L,SAAS,SAAU,CAClCpyE,OAAQA,EACR4zJ,WAAYurO,EAAO5+X,UAAUqzJ,Y,wBCxC/B,SAAS8rO,EAAiBlhX,GACxB,OAAOA,CACT,CAUA,SAASksO,EAAWi1I,EAAQC,EAAQC,EAAcC,EAAc/mY,GAC9DC,KAAK+mY,KAAOJ,EACZ3mY,KAAKgnY,KAAOJ,EACZ5mY,KAAKinY,cAAgBJ,GAAgBH,EACrC1mY,KAAKknY,cAAgBJ,GAAgBJ,EACrC1mY,KAAKD,QAAUA,CACjB,CAoFA,SAASonY,EAAa7yT,EAAK5qD,EAAK09W,EAAQC,EAAel6F,GACrD,IAAK,IAAInpS,EAAI,EAAGA,EAAIswE,EAAItyE,OAAQgC,IAAK,CAEnC,IAAIH,EAAM,OAASspS,EAAWk6F,GAAe/yT,EAAItwE,GAAIA,GACjDsjY,EAAY59W,EAAI7lB,GAEH,MAAbyjY,GACFF,EAAOnjY,KAAKJ,GACZ6lB,EAAI7lB,GAAOG,IAENsjY,EAAUtlY,SACb0nB,EAAI7lB,GAAOyjY,EAAY,CAACA,IAG1BA,EAAUrjY,KAAKD,GAEnB,CACF,C,SAnGA0tP,EAAWnqP,UAAY,CACrB2F,YAAawkP,EAKbnxP,IAAK,SAAUkd,GAEb,OADAzd,KAAKunY,KAAO9pX,EACLzd,IACT,EAKAg3B,OAAQ,SAAUvZ,GAEhB,OADAzd,KAAKwnY,QAAU/pX,EACRzd,IACT,EAKA48E,OAAQ,SAAUn/D,GAEhB,OADAzd,KAAKynY,QAAUhqX,EACRzd,IACT,EACAu8I,QAAS,WACP,IAAIoqP,EAAS3mY,KAAK+mY,KACdH,EAAS5mY,KAAKgnY,KACdU,EAAkB,CAAC,EACnBC,EAAkB,CAAC,EACnBC,EAAgB,GAChBC,EAAgB,GAKpB,IAHAV,EAAaR,EAAQe,EAAiBE,EAAe,gBAAiB5nY,MACtEmnY,EAAaP,EAAQe,EAAiBE,EAAe,gBAAiB7nY,MAEjEgE,EAAI,EAAGA,EAAI2iY,EAAO3kY,OAAQgC,IAAK,CAClC,IAAIH,EAAM+jY,EAAc5jY,GACpBmjG,EAAMwgS,EAAgB9jY,GAE1B,GAAW,MAAPsjG,EAAa,CAGf,IAAI3vF,EAAM2vF,EAAInlG,OAEVwV,GACM,IAARA,IAAcmwX,EAAgB9jY,GAAO,MACrCsjG,EAAMA,EAAI/uE,SAEVuvW,EAAgB9jY,GAAO,KAGzB7D,KAAKwnY,SAAWxnY,KAAKwnY,QAAQrgS,EAAKnjG,EACpC,MACEhE,KAAKynY,SAAWznY,KAAKynY,QAAQzjY,EAEjC,CAEA,IAAK,IAAIA,EAAI,EAAGA,EAAI6jY,EAAc7lY,OAAQgC,IAAK,CACzCH,EAAMgkY,EAAc7jY,GAExB,GAAI2jY,EAAgBrhY,eAAezC,GAAM,CACnCsjG,EAAMwgS,EAAgB9jY,GAE1B,GAAW,MAAPsjG,EACF,SAIF,GAAKA,EAAInlG,OAGF,KAAIiJ,EAAI,EAAb,IAAgBuM,EAAM2vF,EAAInlG,OAAQiJ,EAAIuM,EAAKvM,IACzCjL,KAAKunY,MAAQvnY,KAAKunY,KAAKpgS,EAAIl8F,GADHjJ,MAF1BhC,KAAKunY,MAAQvnY,KAAKunY,KAAKpgS,EAM3B,CACF,CACF,GAsBF,IAAI15E,EAAWikO,EACfvwP,EAAOD,QAAUusB,C,sBC5IjB,IAAI6kN,EAAS9pN,EAAQ,OAyBrB,SAASs/W,EAAkBjlS,GACd,MAAPA,GACFyvI,EAAO5uH,OAAO1jH,KAAM6iG,GAsFtB7iG,KAAK8hR,UAAY,CAAC,CAmBpB,CAGA,IAAIr0P,EAAWq6W,EACf3mY,EAAOD,QAAUusB,C,+BCxIjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB8pN,GAFU7+L,EAAQojM,QAETruN,EAAQ,QAEjBu/W,EAASv/W,EAAQ,MAEjBw/W,EAAmBD,EAAOC,iBAqB9B,SAASC,EAAgBz+X,GACvB,MAAO,OAASA,CAClB,CAQA,IAAIurB,EAAQ,SAAUs+F,GAMpBrzH,KAAKkoY,UAAY70Q,IAAY,EAM7BrzH,KAAK8+E,MAAQ,GAMb9+E,KAAKmgF,MAAQ,GAMbngF,KAAKmoY,UAAY,CAAC,EAMlBnoY,KAAKooY,UAAY,CAAC,EAMlBpoY,KAAKif,KAMLjf,KAAKkoK,QACP,EAEImgO,EAAatzW,EAAMxtB,UAgSvB,SAASw9F,EAAKv7F,EAAIqqO,GAIhB7zO,KAAKwJ,GAAW,MAANA,EAAa,GAAKA,EAK5BxJ,KAAKyiS,QAAU,GAKfziS,KAAKwiS,SAAW,GAKhBxiS,KAAKmgF,MAAQ,GAKbngF,KAAK2jS,UAKL3jS,KAAK6zO,UAAyB,MAAbA,GAAqB,EAAIA,CAC5C,CAgDA,SAASy0J,EAAK7yP,EAAInF,EAAIujG,GAKpB7zO,KAAK06H,MAAQ+a,EAMbz1I,KAAK26H,MAAQ2V,EACbtwI,KAAK6zO,UAAyB,MAAbA,GAAqB,EAAIA,CAC5C,CAtXAw0J,EAAW7jY,KAAO,QAMlB6jY,EAAWE,WAAa,WACtB,OAAOvoY,KAAKkoY,SACd,EAQAG,EAAW/oH,QAAU,SAAU91Q,EAAIqqO,GACjCrqO,EAAW,MAANA,EAAa,GAAKqqO,EAAY,GAAKrqO,EACxC,IAAI2oG,EAAWnyG,KAAKmoY,UAEpB,IAAIh2R,EAAS81R,EAAgBz+X,IAA7B,CAIA,IAAI4xE,EAAO,IAAI2pB,EAAKv7F,EAAIqqO,GAIxB,OAHAz4J,EAAKuoN,UAAY3jS,KACjBA,KAAK8+E,MAAM76E,KAAKm3E,GAChB+2B,EAAS81R,EAAgBz+X,IAAO4xE,EACzBA,CANP,CAOF,EAQAitT,EAAW5/H,eAAiB,SAAU50B,GACpC,IAAIuqH,EAASp+V,KAAKif,KAAK02O,YAAY9hB,GACnC,OAAO7zO,KAAK8+E,MAAMs/Q,EACpB,EAQAiqC,EAAWrjH,YAAc,SAAUx7Q,GACjC,OAAOxJ,KAAKmoY,UAAUF,EAAgBz+X,GACxC,EAUA6+X,EAAW1oH,QAAU,SAAUlqI,EAAInF,EAAIujG,GACrC,IAAI1hI,EAAWnyG,KAAKmoY,UAChBK,EAAWxoY,KAAKooY,UAkBpB,GAhBkB,kBAAP3yP,IACTA,EAAKz1I,KAAK8+E,MAAM22D,IAGA,kBAAPnF,IACTA,EAAKtwI,KAAK8+E,MAAMwxD,IAGbvrC,EAAK67K,WAAWnrI,KACnBA,EAAKtjC,EAAS81R,EAAgBxyP,KAG3B1wC,EAAK67K,WAAWtwI,KACnBA,EAAKn+B,EAAS81R,EAAgB33P,KAG3BmF,GAAOnF,EAAZ,CAIA,IAAIzsI,EAAM4xI,EAAGjsI,GAAK,IAAM8mI,EAAG9mI,GACvBm3E,EAAO,IAAI2nT,EAAK7yP,EAAInF,EAAIujG,GAgB5B,OAfAlzJ,EAAKgjN,UAAY3jS,KAEbA,KAAKkoY,YACPzyP,EAAG+sJ,SAASv+R,KAAK08E,GACjB2vD,EAAGmyJ,QAAQx+R,KAAK08E,IAGlB80D,EAAGt1D,MAAMl8E,KAAK08E,GAEV80D,IAAOnF,GACTA,EAAGnwD,MAAMl8E,KAAK08E,GAGhB3gF,KAAKmgF,MAAMl8E,KAAK08E,GAChB6nT,EAAS3kY,GAAO88E,EACTA,CAnBP,CAoBF,EAQA0nT,EAAWnkI,eAAiB,SAAUrwB,GACpC,IAAIuqH,EAASp+V,KAAKkoK,SAASytF,YAAY9hB,GACvC,OAAO7zO,KAAKmgF,MAAMi+Q,EACpB,EASAiqC,EAAWI,QAAU,SAAUhzP,EAAInF,GAC7BvrC,EAAK67K,WAAWnrI,KAClBA,EAAKA,EAAGjsI,IAGNu7F,EAAK67K,WAAWtwI,KAClBA,EAAKA,EAAG9mI,IAGV,IAAIg/X,EAAWxoY,KAAKooY,UAEpB,OAAIpoY,KAAKkoY,UACAM,EAAS/yP,EAAK,IAAMnF,GAEpBk4P,EAAS/yP,EAAK,IAAMnF,IAAOk4P,EAASl4P,EAAK,IAAMmF,EAE1D,EAQA4yP,EAAW3/H,SAAW,SAAU/vL,EAAI54E,GAIlC,IAHA,IAAI++E,EAAQ9+E,KAAK8+E,MACbtnE,EAAMsnE,EAAM98E,OAEPgC,EAAI,EAAGA,EAAIwT,EAAKxT,IACnB86E,EAAM96E,GAAG6vO,WAAa,GACxBl7J,EAAGt4E,KAAKN,EAAS++E,EAAM96E,GAAIA,EAGjC,EAQAqkY,EAAWvgI,SAAW,SAAUnvL,EAAI54E,GAIlC,IAHA,IAAIogF,EAAQngF,KAAKmgF,MACb3oE,EAAM2oE,EAAMn+E,OAEPgC,EAAI,EAAGA,EAAIwT,EAAKxT,IACnBm8E,EAAMn8E,GAAG6vO,WAAa,GAAK1zJ,EAAMn8E,GAAG02H,MAAMm5G,WAAa,GAAK1zJ,EAAMn8E,GAAG22H,MAAMk5G,WAAa,GAC1Fl7J,EAAGt4E,KAAKN,EAASogF,EAAMn8E,GAAIA,EAGjC,EAUAqkY,EAAWK,qBAAuB,SAAU/vT,EAAIgwT,EAAWx0S,EAAWp0F,GAKpE,GAJKglG,EAAK67K,WAAW+nH,KACnBA,EAAY3oY,KAAKmoY,UAAUF,EAAgBU,KAGxCA,EAAL,CAMA,IAFA,IAAIpwR,EAAyB,QAAdpkB,EAAsB,WAA2B,OAAdA,EAAqB,UAAY,QAE1EnwF,EAAI,EAAGA,EAAIhE,KAAK8+E,MAAM98E,OAAQgC,IACrChE,KAAK8+E,MAAM96E,GAAG4kY,WAAY,EAG5B,IAAIjwT,EAAGt4E,KAAKN,EAAS4oY,EAAW,MAAhC,CAIA,IAAI5lX,EAAQ,CAAC4lX,GAEb,MAAO5lX,EAAM/gB,OACX,KAAI63I,EAAc92H,EAAMqV,QACpB+nD,EAAQ05D,EAAYthC,GAExB,IAASv0G,EAAI,EAAGA,EAAIm8E,EAAMn+E,OAAQgC,IAAK,CACrC,IAAIiC,EAAIk6E,EAAMn8E,GACVwlK,EAAYvjK,EAAEy0H,QAAUmf,EAAc5zI,EAAE00H,MAAQ10H,EAAEy0H,MAEtD,IAAK8uC,EAAUo/N,UAAW,CACxB,GAAIjwT,EAAGt4E,KAAKN,EAASypK,EAAW3vB,GAE9B,OAGF92H,EAAM9e,KAAKulK,GACXA,EAAUo/N,WAAY,CACxB,CACF,CAhB+B,CALjC,CAVA,CAiCF,EAQAP,EAAWrxW,OAAS,WAMlB,IALA,IAAI/X,EAAOjf,KAAKif,KACZipJ,EAAWloK,KAAKkoK,SAChBppF,EAAQ9+E,KAAK8+E,MACbqB,EAAQngF,KAAKmgF,MAERn8E,EAAI,EAAGwT,EAAMsnE,EAAM98E,OAAQgC,EAAIwT,EAAKxT,IAC3C86E,EAAM96E,GAAG6vO,WAAa,EAGxB,IAAS7vO,EAAI,EAAGwT,EAAMyH,EAAKsJ,QAASvkB,EAAIwT,EAAKxT,IAC3C86E,EAAM7/D,EAAK02O,YAAY3xP,IAAI6vO,UAAY7vO,EAGzCkkK,EAAS6iG,YAAW,SAAU5jK,GAC5B,IAAIxmB,EAAOR,EAAM+nF,EAASytF,YAAYxuJ,IACtC,OAAOxmB,EAAK+5C,MAAMm5G,WAAa,GAAKlzJ,EAAKg6C,MAAMk5G,WAAa,CAC9D,IAEA,IAAS7vO,EAAI,EAAGwT,EAAM2oE,EAAMn+E,OAAQgC,EAAIwT,EAAKxT,IAC3Cm8E,EAAMn8E,GAAG6vO,WAAa,EAGxB,IAAS7vO,EAAI,EAAGwT,EAAM0wJ,EAAS3/I,QAASvkB,EAAIwT,EAAKxT,IAC/Cm8E,EAAM+nF,EAASytF,YAAY3xP,IAAI6vO,UAAY7vO,CAE/C,EAMAqkY,EAAW/zW,MAAQ,WAKjB,IAJA,IAAInD,EAAQ,IAAI4D,EAAM/0B,KAAKkoY,WACvBppT,EAAQ9+E,KAAK8+E,MACbqB,EAAQngF,KAAKmgF,MAERn8E,EAAI,EAAGA,EAAI86E,EAAM98E,OAAQgC,IAChCmtB,EAAMmuP,QAAQxgM,EAAM96E,GAAGwF,GAAIs1E,EAAM96E,GAAG6vO,WAGtC,IAAS7vO,EAAI,EAAGA,EAAIm8E,EAAMn+E,OAAQgC,IAAK,CACrC,IAAIiC,EAAIk6E,EAAMn8E,GACdmtB,EAAMwuP,QAAQ15Q,EAAEy0H,MAAMlxH,GAAIvD,EAAE00H,MAAMnxH,GAAIvD,EAAE4tO,UAC1C,CAEA,OAAO1iN,CACT,EAsCA4zE,EAAKx9F,UAAY,CACf2F,YAAa63F,EAKb2nC,OAAQ,WACN,OAAO1sI,KAAKmgF,MAAMn+E,MACpB,EAKA6mY,SAAU,WACR,OAAO7oY,KAAKyiS,QAAQzgS,MACtB,EAKA8mY,UAAW,WACT,OAAO9oY,KAAKwiS,SAASxgS,MACvB,EAMAw3O,SAAU,SAAUt8K,GAClB,KAAIl9D,KAAK6zO,UAAY,GAArB,CAIA,IAAI1iN,EAAQnxB,KAAK2jS,UACbvpD,EAAYjpN,EAAMlS,KAAKo7N,aAAar6O,KAAK6zO,WAC7C,OAAOuG,EAAUZ,SAASt8K,EAJ1B,CAKF,GA8BForU,EAAK/gY,UAAUiyO,SAAW,SAAUt8K,GAClC,KAAIl9D,KAAK6zO,UAAY,GAArB,CAIA,IAAI1iN,EAAQnxB,KAAK2jS,UACbvpD,EAAYjpN,EAAM+2I,SAASmyE,aAAar6O,KAAK6zO,WACjD,OAAOuG,EAAUZ,SAASt8K,EAJ1B,CAKF,EAEA,IAAI6rU,EAA4B,SAAUC,EAAUnzC,GAClD,MAAO,CAKL7xP,SAAU,SAAU8kL,GAClB,IAAI7pQ,EAAOjf,KAAKgpY,GAAUnzC,GAC1B,OAAO52U,EAAK/b,IAAI+b,EAAK62O,aAAagzB,GAAa,SAAU9oR,KAAK6zO,UAChE,EAMAmC,UAAW,SAAUnyO,EAAK/B,GACxB9B,KAAK6zO,WAAa,GAAK7zO,KAAKgpY,GAAUnzC,GAAUjpG,cAAc5sP,KAAK6zO,UAAWhwO,EAAK/B,EACrF,EAMAw7O,UAAW,SAAUz5O,EAAKolY,GACxB,OAAOjpY,KAAKgpY,GAAUnzC,GAAUx4G,cAAcr9O,KAAK6zO,UAAWhwO,EAAKolY,EACrE,EAMA15I,UAAW,SAAUpnJ,EAAQ6V,GAC3Bh+G,KAAK6zO,WAAa,GAAK7zO,KAAKgpY,GAAUnzC,GAAU1pG,cAAcnsP,KAAK6zO,UAAW1rI,EAAQ6V,EACxF,EAKAm6H,UAAW,WACT,OAAOn4O,KAAKgpY,GAAUnzC,GAAU/4G,cAAc98O,KAAK6zO,UACrD,EAKAuyB,aAAc,WACZ,OAAOpmQ,KAAKgpY,GAAUnzC,GAAU/6G,iBAAiB96O,KAAK6zO,UACxD,EAKA8hB,YAAa,WACX,OAAO31P,KAAKgpY,GAAUnzC,GAAUlgG,YAAY31P,KAAK6zO,UACnD,EAEJ,EAEAvB,EAAO0W,MAAMjkJ,EAAMgkS,EAA0B,YAAa,SAC1Dz2J,EAAO0W,MAAMs/I,EAAMS,EAA0B,YAAa,aAC1Dh0W,EAAMgwE,KAAOA,EACbhwE,EAAMuzW,KAAOA,EACbN,EAAiBjjS,GACjBijS,EAAiBM,GACjB,IAAI76W,EAAWsH,EACf5zB,EAAOD,QAAUusB,C,2DCjiBjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB8pN,GAFU7+L,EAAQojM,QAETruN,EAAQ,QAEjByuN,EAAQzuN,EAAQ,OAEhBkpO,EAAalpO,EAAQ,OAErBg4P,EAASh4P,EAAQ,OAEjBw6P,EAAgBx6P,EAAQ,OAExB0gX,EAAyBlmH,EAAckmH,uBACvCC,EAAsBnmH,EAAcmmH,oBAEpChpH,EAAmB33P,EAAQ,OAE3B4gX,EAAsBjpH,EAAiBipH,oBAEvCtB,EAAoBt/W,EAAQ,KA2B5BlnB,EAAWgxO,EAAOhxO,SAClB+nY,EAAY,YACZC,GAAmB,EAGnBC,EAAY,QACZC,EAAY,CACd,aAAgB3zX,eAAiBwzX,EAAYxiY,MAAQgP,aACrD,WAAcH,aAAe2zX,EAAYxiY,MAAQ6O,WAEjD,QAAW7O,MACX,OAAUA,MACV,KAAQA,OAIN4iY,SAAyB9zX,cAAgB0zX,EAAYxiY,MAAQ8O,YAC7D+zX,SAAwBh0X,aAAe2zX,EAAYxiY,MAAQ6O,WAC3Di0X,SAAyBl0X,cAAgB4zX,EAAYxiY,MAAQ4O,YAEjE,SAASm0X,EAAe3yX,GAEtB,OAAOA,EAAK4yX,UAAY,MAAQJ,EAAkBE,CACpD,CAEA,SAASG,EAAWC,GAClB,IAAI9rF,EAAO8rF,EAAc78X,YAEzB,OAAO+wS,IAASp3S,MAAQkjY,EAAc5nY,QAAU,IAAI87S,EAAK8rF,EAC3D,CAEA,IAAIC,EAA0B,CAAC,gBAAiB,YAAa,UAAW,sBAAuB,WAAY,aAAc,cAAe,kBAAmB,SAAU,YAAa,cAAe,aAC7LC,EAAmB,CAAC,UAAW,qBAAsB,cAEzD,SAASC,EAAmBxkY,EAAQhB,GAClC4tO,EAAO56H,KAAKsyR,EAAwB/oY,OAAOyD,EAAOylY,kBAAoB,KAAK,SAAUp5Q,GAC/ErsH,EAAO4B,eAAeyqH,KACxBrrH,EAAOqrH,GAAYrsH,EAAOqsH,GAE9B,IACArrH,EAAOykY,iBAAmBzlY,EAAOylY,iBACjC73J,EAAO56H,KAAKuyR,GAAkB,SAAUl5Q,GACtCrrH,EAAOqrH,GAAYuhH,EAAOh+M,MAAM5vB,EAAOqsH,GACzC,IACArrH,EAAO0kY,iBAAmB93J,EAAO5uH,OAAOh/G,EAAO0lY,iBACjD,CAYA,IAAInoI,EAAO,SAAUrnG,EAAYmvF,GAC/BnvF,EAAaA,GAAc,CAAC,IAAK,KAKjC,IAJA,IAAIyvO,EAAiB,CAAC,EAClBxqH,EAAiB,GACjByqH,EAAqB,CAAC,EAEjBtmY,EAAI,EAAGA,EAAI42J,EAAW54J,OAAQgC,IAAK,CAE1C,IAAIumY,EAAgB3vO,EAAW52J,GAE3BsuO,EAAOohF,SAAS62E,GAClBA,EAAgB,IAAIzC,EAAkB,CACpCrjY,KAAM8lY,IAEGA,aAAyBzC,IACpCyC,EAAgB,IAAIzC,EAAkByC,IAGxC,IAAIC,EAAgBD,EAAc9lY,KAClC8lY,EAAc/lY,KAAO+lY,EAAc/lY,MAAQ,QAEtC+lY,EAAczzI,WACjByzI,EAAczzI,SAAW0zI,EACzBD,EAAcvzI,cAAgB,GAGhCuzI,EAAczoH,UAAYyoH,EAAczoH,WAAa,CAAC,EACtDjC,EAAe57Q,KAAKumY,GACpBH,EAAeG,GAAiBD,EAChCA,EAActoY,MAAQ+B,EAElBumY,EAAcE,wBAChBH,EAAmBE,GAAiB,GAExC,CAOAxqY,KAAK46J,WAAailH,EAMlB7/Q,KAAK0qY,gBAAkBL,EAKvBrqY,KAAK+pP,UAAYA,EAKjB/pP,KAAKy4P,SAQLz4P,KAAK2qY,SAAW,KAChB3qY,KAAK4qY,OAAS,EACd5qY,KAAK6pY,UAAY,EAOjB7pY,KAAKw4S,SAAW,CAAC,EAKjBx4S,KAAK6qY,UAAY,GAKjB7qY,KAAK8qY,QAAU,GAOf9qY,KAAK+qY,cAAgB,GAOrB/qY,KAAKgrY,QAAU,CAAC,EAOhBhrY,KAAKosQ,QAAU,CAAC,EAOhBpsQ,KAAKirY,aAAe,GAOpBjrY,KAAKkrY,cAAgB,CAAC,EAOtBlrY,KAAKmrY,aAAe,GAOpBnrY,KAAKorY,YAAc,GAOnBprY,KAAKqrY,WAAa,IAMlBrrY,KAAKsrY,YAAc,EAMnBtrY,KAAKurY,SAULvrY,KAAKwrY,WAAa,CAAC,EAMnBxrY,KAAKkpX,QAAU,CAAC,EAQhBlpX,KAAKyrY,mBAAqB,CAAC,EAO3BzrY,KAAK0rY,mBAAqBtC,EAAoBppY,MAM9CA,KAAK2rY,oBAAsBrB,EAM3BtqY,KAAKoqY,iBAAmB,CAAC,EAezBpqY,KAAK4rY,WAAa5rY,KAAK0rY,mBAAmBE,UAC5C,EAEIC,EAAY5pI,EAAK16P,UA6VrB,SAASukY,EAAcvxF,EAAS5jD,EAASo1I,EAAWC,EAAYrtV,GAC9D,IAAIstV,EAAWzC,EAAU7yI,EAAQnyP,MAC7B0nY,EAAiBF,EAAa,EAC9B/5P,EAAM0kH,EAAQlyP,KACd0nY,EAAmB5xF,EAAQtoK,GAAKi6P,GAEpC,GAAIC,GAAoBA,EAAiBnqY,OAAS+pY,EAAW,CAI3D,IAHA,IAAIK,EAAW,IAAIH,EAAS9lY,KAAKyI,IAAI+vC,EAAMutV,EAAiBH,EAAWA,IAG9D9gY,EAAI,EAAGA,EAAIkhY,EAAiBnqY,OAAQiJ,IAC3CmhY,EAASnhY,GAAKkhY,EAAiBlhY,GAGjCsvS,EAAQtoK,GAAKi6P,GAAkBE,CACjC,CAGA,IAAK,IAAIvhY,EAAImhY,EAAaD,EAAWlhY,EAAI8zC,EAAK9zC,GAAKkhY,EACjDxxF,EAAQtoK,GAAKhuI,KAAK,IAAIgoY,EAAS9lY,KAAKyI,IAAI+vC,EAAM9zC,EAAGkhY,IAErD,CAEA,SAASM,EAAqBp1X,GAC5B,IAAIqzX,EAAqBrzX,EAAK00X,oBAC9Br5J,EAAO56H,KAAK4yR,GAAoB,SAAUgC,EAAiBr6P,GACzD,IAAI0kH,EAAU1/O,EAAKyzX,gBAAgBz4P,GAE/B2vI,EAAcjrB,EAAQirB,YAE1B,GAAIA,EAAa,CACf0qH,EAAkBhC,EAAmBr4P,GAAO,IAAIy3P,EAAe9nH,EAAYvd,WAAWriQ,QAGtF,IAAK,IAAIgC,EAAI,EAAGA,EAAIsoY,EAAgBtqY,OAAQgC,IAC1CsoY,EAAgBtoY,GAAKslY,EAGvB,IAAStlY,EAAI,EAAGA,EAAIiT,EAAK2zX,OAAQ5mY,IAE/BsoY,EAAgBr1X,EAAK/T,IAAI+uI,EAAKjuI,IAAMA,CAExC,CACF,GACF,CAEA,SAASuoY,EAAqBt1X,EAAMwqQ,EAAU6M,GAC5C,IAAIt/Q,EAEJ,GAAgB,MAAZyyQ,EAAkB,CACpB,IAAIsqH,EAAY90X,EAAKo0X,WACjBmB,EAAarmY,KAAK2I,MAAMw/Q,EAAWy9G,GACnCU,EAAcn+G,EAAWy9G,EACzB95P,EAAMh7H,EAAK2jJ,WAAW6mH,GACtBirH,EAAQz1X,EAAKuhS,SAASvmK,GAAKu6P,GAE/B,GAAIE,EAAO,CACT19X,EAAM09X,EAAMD,GACZ,IAAI7qH,EAAc3qQ,EAAKyzX,gBAAgBz4P,GAAK2vI,YAExCA,GAAeA,EAAYvd,WAAWriQ,SACxCgN,EAAM4yQ,EAAYvd,WAAWr1P,GAEjC,CACF,CAEA,OAAOA,CACT,CAueA,SAAS29X,EAA0BxlS,GACjC,OAAOA,CACT,CAEA,SAASylS,EAAuBzlS,GAC9B,OAAIA,EAAMnnG,KAAK4qY,QAAUzjS,GAAO,EACvBnnG,KAAK2qY,SAASxjS,IAGf,CACV,CA4CA,SAAS0mK,EAAM52P,EAAMq3Q,GACnB,IAAI9kR,EAAKyN,EAAK6zX,QAAQx8G,GAWtB,OATU,MAAN9kR,IACFA,EAAK+iY,EAAqBt1X,EAAMA,EAAK41X,UAAWv+G,IAGxC,MAAN9kR,IAEFA,EAAK+/X,EAAYj7G,GAGZ9kR,CACT,CAEA,SAASsjY,EAAoBlyO,GAK3B,OAJK03E,EAAOxrO,QAAQ8zJ,KAClBA,EAAa,CAACA,IAGTA,CACT,CAiTA,SAASmyO,EAAyBp4T,EAAUq4T,GAC1C,IAAIC,EAAgBt4T,EAASimF,WACzB3jJ,EAAO,IAAIgrP,EAAK3vB,EAAO5oN,IAAIujX,EAAet4T,EAASiiL,iBAAkBjiL,GAAWA,EAASo1K,WAE7FmgJ,EAAmBjzX,EAAM09D,GAIzB,IAHA,IAAI4lO,EAAUtjS,EAAKuhS,SAAW,CAAC,EAC3B00F,EAAkBv4T,EAAS6jO,SAEtBx0S,EAAI,EAAGA,EAAIipY,EAAcjrY,OAAQgC,IAAK,CAC7C,IAAIiuI,EAAMg7P,EAAcjpY,GAEpBkpY,EAAgBj7P,KAGdqgG,EAAOj7N,QAAQ21X,EAAmB/6P,IAAQ,GAC5CsoK,EAAQtoK,GAAOk7P,EAAcD,EAAgBj7P,IAC7Ch7H,EAAKu0X,WAAWv5P,GAAOm7P,IACvBn2X,EAAKiyW,QAAQj3O,GAAO,MAGpBsoK,EAAQtoK,GAAOi7P,EAAgBj7P,GAGrC,CAEA,OAAOh7H,CACT,CAEA,SAASk2X,EAAcE,GAGrB,IAFA,IAAIC,EAAc,IAAIzmY,MAAMwmY,EAAiBrrY,QAEpCiJ,EAAI,EAAGA,EAAIoiY,EAAiBrrY,OAAQiJ,IAC3CqiY,EAAYriY,GAAK6+X,EAAWuD,EAAiBpiY,IAG/C,OAAOqiY,CACT,CAEA,SAASF,IACP,MAAO,CAACv6S,KAAWA,IACrB,CA1yCAg5S,EAAUrnY,KAAO,OAMjBqnY,EAAUl6H,eAAgB,EAsB1Bk6H,EAAU/1I,aAAe,SAAU7jH,GAMjC,MALmB,kBAARA,IACPljI,MAAMkjI,IAASjyI,KAAK0qY,gBAAgBpkY,eAAe2rI,MACrDA,EAAMjyI,KAAK46J,WAAW3oB,IAGjBA,CACT,EASA45P,EAAUj1I,iBAAmB,SAAU3kH,GAErC,OAAOjyI,KAAK0qY,gBAAgB1qY,KAAK81P,aAAa7jH,GAChD,EAMA45P,EAAU0B,qBAAuB,WAC/B,OAAOvtY,KAAK0rY,mBAAmB8B,gBAAgBrrY,OACjD,EAYA0pY,EAAUngJ,aAAe,SAAUoL,EAAU3vJ,GAC3C,IAAIsmS,EAAoBztY,KAAK0rY,mBAE7B,GAAW,MAAPvkS,EACF,OAAOsmS,EAAkBC,uBAAuB52I,GAGlD,IAAIh1F,EAAO2rO,EAAkBl4I,OAAOuB,GACpC,OAAe,IAAR3vJ,GACJ26D,GAAQ,IAAI3/J,QAAU2/J,GAAQA,EAAK36D,EACxC,EAaA0kS,EAAUhtU,SAAW,SAAU5/C,EAAMwjQ,EAAUP,GAC7C,IAAIyrH,EAAcntH,EAAOI,WAAW3hQ,IAASqzN,EAAOs7J,YAAY3uX,GAE5D0uX,IACF1uX,EAAO,IAAIkqX,EAAoBlqX,EAAMjf,KAAK46J,WAAW54J,SAGvDhC,KAAKurY,SAAWtsX,EAEhBjf,KAAKw4S,SAAW,CAAC,EACjBx4S,KAAK2qY,SAAW,KAChB3qY,KAAK6qY,UAAYpoH,GAAY,GAC7BziR,KAAK8qY,QAAU,GACf9qY,KAAK6tY,iBAAmB,CAAC,EAEpB3rH,IACHliR,KAAK2xQ,eAAgB,GAOvB3xQ,KAAKqiR,sBAAwB6mH,EAAuBlpY,KAAKurY,SAASxrJ,YAAYuiC,cAE9EtiR,KAAK8tY,gBAAkB5rH,EAAiBA,GAAkBliR,KAAKqiR,sBAC/DriR,KAAK+tY,yBAA2B7E,EAAuB8E,UAEvDhuY,KAAKwrY,WAAa,CAAC,EAEnBxrY,KAAKiuY,sBAAsB,EAAGhvX,EAAKsJ,SAG/BtJ,EAAKivX,OACPluY,KAAK2xQ,eAAgB,EAEzB,EAEAk6H,EAAUsC,YAAc,WACtB,OAAOnuY,KAAKurY,QACd,EAMAM,EAAUv6G,WAAa,SAAUryQ,GAC/B,IAAIkvR,EAAUnuS,KAAKurY,SACf7sV,EAAQ1+C,KAAKuoB,QACjB4lR,EAAQ7c,WAAWryQ,GACnB,IAAI0/B,EAAMwvP,EAAQ5lR,QAEb4lR,EAAQigG,aACXzvV,GAAOD,GAGT1+C,KAAKiuY,sBAAsBvvV,EAAOC,EACpC,EAmBAktV,EAAUh3G,aAAe,SAAUzrR,EAAQgE,GAUzC,IATA,IAAI2+X,EAAY/rY,KAAKqrY,WACjB9wF,EAAUv6S,KAAKw4S,SACf59I,EAAa56J,KAAK46J,WAClByzO,EAASzzO,EAAW54J,OACpBmjY,EAAYnlY,KAAKwrY,WACjB9sV,EAAQ1+C,KAAKuoB,QACbo2B,EAAMD,EAAQv4C,KAAKwI,IAAIvF,EAAOpH,OAAQoL,EAAQA,EAAMpL,OAAS,GAC7DssY,EAAqBtuY,KAAKsrY,YAErBtnY,EAAI,EAAGA,EAAIqqY,EAAQrqY,IAAK,CAC/B,IAAIiuI,EAAM2oB,EAAW52J,GAEhBmhY,EAAUlzP,KACbkzP,EAAUlzP,GAAOm7P,KAGd7yF,EAAQtoK,KACXsoK,EAAQtoK,GAAO,IAGjB65P,EAAcvxF,EAASv6S,KAAK0qY,gBAAgBz4P,GAAM85P,EAAWuC,EAAoB3vV,GACjF3+C,KAAKsrY,YAAc/wF,EAAQtoK,GAAKjwI,MAClC,CAIA,IAFA,IAAIusY,EAAgB,IAAI1nY,MAAMwnY,GAErBlnS,EAAMzoD,EAAOyoD,EAAMxoD,EAAKwoD,IAAO,CAKtC,IAJA,IAAIqnS,EAAYrnS,EAAMzoD,EAClB8tV,EAAarmY,KAAK2I,MAAMq4F,EAAM4kS,GAC9BU,EAActlS,EAAM4kS,EAEflhY,EAAI,EAAGA,EAAIwjY,EAAQxjY,IAAK,CAC3BonI,EAAM2oB,EAAW/vJ,GAArB,IAEImE,EAAMhP,KAAK+tY,yBAAyB3kY,EAAOolY,IAAcD,EAAet8P,EAAKu8P,EAAW3jY,GAE5F0vS,EAAQtoK,GAAKu6P,GAAYC,GAAez9X,EACxC,IAAIy/X,EAAetJ,EAAUlzP,GAC7BjjI,EAAMy/X,EAAa,KAAOA,EAAa,GAAKz/X,GAC5CA,EAAMy/X,EAAa,KAAOA,EAAa,GAAKz/X,EAC9C,CAEI5B,IACFpN,KAAK6qY,UAAU1jS,GAAO/5F,EAAMohY,GAEhC,CAEAxuY,KAAK6pY,UAAY7pY,KAAK4qY,OAASjsV,EAE/B3+C,KAAKkpX,QAAU,CAAC,EAChBmjB,EAAqBrsY,KACvB,EAEA6rY,EAAUoC,sBAAwB,SAAUvvV,EAAOC,GAEjD,KAAID,GAASC,GAAb,CAiBA,IAbA,IAUI+vV,EAVA3C,EAAY/rY,KAAKqrY,WACjBl9F,EAAUnuS,KAAKurY,SACfhxF,EAAUv6S,KAAKw4S,SACf59I,EAAa56J,KAAK46J,WAClByzO,EAASzzO,EAAW54J,OACpB2sY,EAAmB3uY,KAAK0qY,gBACxBjoH,EAAWziR,KAAK6qY,UAChB+D,EAAS5uY,KAAK8qY,QACd3F,EAAYnlY,KAAKwrY,WACjBqD,EAAkB7uY,KAAK6tY,iBAAmB,CAAC,EAE3CS,EAAqBtuY,KAAKsrY,YAErBtnY,EAAI,EAAGA,EAAIqqY,EAAQrqY,IAAK,CAC/B,IAAIiuI,EAAM2oB,EAAW52J,GAEhBmhY,EAAUlzP,KACbkzP,EAAUlzP,GAAOm7P,KAGnB,IAAIz2I,EAAUg4I,EAAiB18P,GAEI,IAA/B0kH,EAAQmrB,UAAUC,WACpB2sH,EAAa1uY,KAAK8uY,YAAc9qY,GAGD,IAA7B2yP,EAAQmrB,UAAUitH,SACpB/uY,KAAK6sY,UAAY7oY,GAGdu2S,EAAQtoK,KACXsoK,EAAQtoK,GAAO,IAGjB65P,EAAcvxF,EAAS5jD,EAASo1I,EAAWuC,EAAoB3vV,GAC/D3+C,KAAKsrY,YAAc/wF,EAAQtoK,GAAKjwI,MAClC,CAIA,IAFA,IAAI6gD,EAAW,IAAIh8C,MAAMwnY,GAEhBlnS,EAAMzoD,EAAOyoD,EAAMxoD,EAAKwoD,IAAO,CAEtCtkD,EAAWsrP,EAAQ6gG,QAAQ7nS,EAAKtkD,GAUhC,IAHA,IAAI2pV,EAAarmY,KAAK2I,MAAMq4F,EAAM4kS,GAC9BU,EAActlS,EAAM4kS,EAEflhY,EAAI,EAAGA,EAAIwjY,EAAQxjY,IAAK,CAC3BonI,EAAM2oB,EAAW/vJ,GAArB,IACIokY,EAAa10F,EAAQtoK,GAAKu6P,GAE1Bx9X,EAAMhP,KAAK8tY,gBAAgBjrV,EAAUovF,EAAK9qC,EAAKt8F,GAEnDokY,EAAWxC,GAAez9X,EAC1B,IAAIy/X,EAAetJ,EAAUlzP,GAC7BjjI,EAAMy/X,EAAa,KAAOA,EAAa,GAAKz/X,GAC5CA,EAAMy/X,EAAa,KAAOA,EAAa,GAAKz/X,EAC9C,CAIA,IAAKm/R,EAAQ+/F,KAAM,CACjB,IAAIzpY,EAAOg+Q,EAASt7K,GAEpB,GAAItkD,GAAoB,MAARp+C,EAGd,GAAqB,MAAjBo+C,EAASp+C,KAGXg+Q,EAASt7K,GAAO1iG,EAAOo+C,EAASp+C,UAC3B,GAAkB,MAAdiqY,EAAoB,CAC7B,IAAIQ,EAAUt0O,EAAW8zO,GACrBS,EAAe50F,EAAQ20F,GAAS1C,GAEpC,GAAI2C,EAAc,CAChB1qY,EAAO0qY,EAAa1C,GACpB,IAAI7qH,EAAc+sH,EAAiBO,GAASttH,YAExCA,GAAeA,EAAYvd,WAAWriQ,SACxCyC,EAAOm9Q,EAAYvd,WAAW5/P,GAElC,CACF,CAKF,IAAI+E,EAAiB,MAAZq5C,EAAmB,KAAOA,EAASr5C,GAElC,MAANA,GAAsB,MAAR/E,IAEhBoqY,EAAgBpqY,GAAQoqY,EAAgBpqY,IAAS,EACjD+E,EAAK/E,EAEDoqY,EAAgBpqY,GAAQ,IAC1B+E,GAAM,SAAWqlY,EAAgBpqY,IAGnCoqY,EAAgBpqY,MAGZ,MAAN+E,IAAeolY,EAAOznS,GAAO39F,EAC/B,CACF,EAEK2kS,EAAQigG,YAAcjgG,EAAQhlJ,OAEjCglJ,EAAQhlJ,QAGVnpJ,KAAK6pY,UAAY7pY,KAAK4qY,OAASjsV,EAE/B3+C,KAAKkpX,QAAU,CAAC,EAChBmjB,EAAqBrsY,KAzHrB,CA0HF,EA2EA6rY,EAAUtjX,MAAQ,WAChB,OAAOvoB,KAAK4qY,MACd,EAEAiB,EAAUuD,WAAa,WACrB,IACIp4P,EAAUh3I,KAAK2qY,SAEnB,GAAI3zP,EAAS,CACX,IAAIinK,EAAOjnK,EAAQ9pI,YACfmiY,EAAYrvY,KAAK4qY,OAErB,GAAI3sF,IAASp3S,MAAO,CAClBw0W,EAAa,IAAIp9D,EAAKoxF,GAEtB,IAAK,IAAIrrY,EAAI,EAAGA,EAAIqrY,EAAWrrY,IAC7Bq3W,EAAWr3W,GAAKgzI,EAAQhzI,EAE5B,MACEq3W,EAAa,IAAIp9D,EAAKjnK,EAAQu0F,OAAQ,EAAG8jK,EAE7C,KACE,CAAIpxF,EAAO2rF,EAAe5pY,MAA1B,IACIq7W,EAAa,IAAIp9D,EAAKj+S,KAAKuoB,SAE/B,IAASvkB,EAAI,EAAGA,EAAIq3W,EAAWr5W,OAAQgC,IACrCq3W,EAAWr3W,GAAKA,CAJa,CAQjC,OAAOq3W,CACT,EAUAwwB,EAAU3oY,IAAM,SAAU+uI,EAAK9qC,GAG7B,KAAMA,GAAO,GAAKA,EAAMnnG,KAAK4qY,QAC3B,OAAOp/S,IAGT,IAAI+uN,EAAUv6S,KAAKw4S,SAEnB,IAAK+B,EAAQtoK,GAEX,OAAOzmD,IAGT2b,EAAMnnG,KAAK21P,YAAYxuJ,GACvB,IAAIqlS,EAAarmY,KAAK2I,MAAMq4F,EAAMnnG,KAAKqrY,YACnCoB,EAActlS,EAAMnnG,KAAKqrY,WACzBiE,EAAa/0F,EAAQtoK,GAAKu6P,GAC1B1qY,EAAQwtY,EAAW7C,GAmBvB,OAAO3qY,CACT,EAQA+pY,EAAU0D,cAAgB,SAAUt9P,EAAKmsN,GACvC,KAAMA,GAAU,GAAKA,EAASp+V,KAAK6pY,WACjC,OAAOr+S,IAGT,IAAIgkT,EAAWxvY,KAAKw4S,SAASvmK,GAE7B,IAAKu9P,EAEH,OAAOhkT,IAGT,IAAIghT,EAAarmY,KAAK2I,MAAMsvV,EAASp+V,KAAKqrY,YACtCoB,EAAcruC,EAASp+V,KAAKqrY,WAC5BiE,EAAaE,EAAShD,GAC1B,OAAO8C,EAAW7C,EACpB,EAQAZ,EAAU4D,SAAW,SAAUx9P,EAAKmsN,GAClC,IAAIouC,EAAarmY,KAAK2I,MAAMsvV,EAASp+V,KAAKqrY,YACtCoB,EAAcruC,EAASp+V,KAAKqrY,WAC5BiE,EAAatvY,KAAKw4S,SAASvmK,GAAKu6P,GACpC,OAAO8C,EAAW7C,EACpB,EASAZ,EAAUjtG,UAAY,SAAUhkI,EAAYzzD,GAG1C,IAAI/9F,EAAS,GAERkpO,EAAOxrO,QAAQ8zJ,KAElBzzD,EAAMyzD,EACNA,EAAa56J,KAAK46J,YAGpB,IAAK,IAAI52J,EAAI,EAAGwT,EAAMojJ,EAAW54J,OAAQgC,EAAIwT,EAAKxT,IAChDoF,EAAOnF,KAAKjE,KAAKkD,IAAI03J,EAAW52J,GAAImjG,IAKtC,OAAO/9F,CACT,EAUAyiY,EAAUvxJ,SAAW,SAAUnzI,GAG7B,IAFA,IAAIqmS,EAAkBxtY,KAAK0rY,mBAAmB8B,gBAErCxpY,EAAI,EAAGwT,EAAMg2X,EAAgBxrY,OAAQgC,EAAIwT,EAAKxT,IAIrD,GAAI+K,MAAM/O,KAAKkD,IAAIsqY,EAAgBxpY,GAAImjG,IACrC,OAAO,EAIX,OAAO,CACT,EAQA0kS,EAAUztI,cAAgB,SAAUnsH,GAIlCA,EAAMjyI,KAAK81P,aAAa7jH,GACxB,IAAIy9P,EAAU1vY,KAAKw4S,SAASvmK,GACxB09P,EAAgBvC,IAEpB,IAAKsC,EACH,OAAOC,EAIT,IAQIC,EARAC,EAAU7vY,KAAKuoB,QAMfunX,GAAU9vY,KAAK2qY,SAInB,GAAImF,EACF,OAAO9vY,KAAKwrY,WAAWv5P,GAAK9vI,QAK9B,GAFAytY,EAAY5vY,KAAKkpX,QAAQj3O,GAErB29P,EACF,OAAOA,EAAUztY,QAGnBytY,EAAYD,EAIZ,IAHA,IAAI/gY,EAAMghY,EAAU,GAChBjhY,EAAMihY,EAAU,GAEX5rY,EAAI,EAAGA,EAAI6rY,EAAS7rY,IAAK,CAEhC,IAAIlC,EAAQ9B,KAAKyvY,SAASx9P,EAAKjyI,KAAK21P,YAAY3xP,IAEhDlC,EAAQ8M,IAAQA,EAAM9M,GACtBA,EAAQ6M,IAAQA,EAAM7M,EACxB,CAIA,OAFA8tY,EAAY,CAAChhY,EAAKD,GAClB3O,KAAKkpX,QAAQj3O,GAAO29P,EACbA,CACT,EASA/D,EAAUphE,qBAAuB,SAAUx4L,GAIzC,OADAA,EAAMjyI,KAAK81P,aAAa7jH,GACjBjyI,KAAKyrY,mBAAmBx5P,IAAQjyI,KAAKo+P,cAAcnsH,EAG5D,EAEA45P,EAAUj+D,qBAAuB,SAAUrgJ,EAAQt7C,GAGjDA,EAAMjyI,KAAK81P,aAAa7jH,GACxBjyI,KAAKyrY,mBAAmBx5P,GAAOs7C,EAAOprL,OACxC,EAOA0pY,EAAUngH,mBAAqB,SAAU7nR,GACvC,OAAO7D,KAAKoqY,iBAAiBvmY,EAC/B,EAOAgoY,EAAU5pH,mBAAqB,SAAUp+Q,EAAK/B,GAC5CR,EAASuC,GAAOyuO,EAAO5uH,OAAO1jH,KAAKoqY,iBAAkBvmY,GAAO7D,KAAKoqY,iBAAiBvmY,GAAO/B,CAC3F,EAOA+pY,EAAUrwI,OAAS,SAAUvpH,GAG3B,IAAIy9P,EAAU1vY,KAAKw4S,SAASvmK,GACxB1mH,EAAM,EAEV,GAAImkX,EACF,IAAK,IAAI1rY,EAAI,EAAGwT,EAAMxX,KAAKuoB,QAASvkB,EAAIwT,EAAKxT,IAAK,CAChD,IAAIlC,EAAQ9B,KAAKkD,IAAI+uI,EAAKjuI,GAIrB+K,MAAMjN,KACTypB,GAAOzpB,EAEX,CAGF,OAAOypB,CACT,EAOAsgX,EAAU7rC,UAAY,SAAU/tN,GAG9B,IAAI89P,EAAe,GAEnB/vY,KAAK03G,KAAKu6B,GAAK,SAAUjjI,EAAKm4F,GACvBp4F,MAAMC,IACT+gY,EAAa9rY,KAAK+K,EAEtB,IAIA,IAAIghY,EAAqB,GAAG/uY,OAAO8uY,GAAclqX,MAAK,SAAUljB,EAAGC,GACjE,OAAOD,EAAIC,CACb,IACI4U,EAAMxX,KAAKuoB,QAEf,OAAe,IAAR/Q,EAAY,EAAIA,EAAM,IAAM,EAAIw4X,GAAoBx4X,EAAM,GAAK,IAAMw4X,EAAmBx4X,EAAM,GAAKw4X,EAAmBx4X,EAAM,EAAI,IAAM,CAC/I,EAkCAq0X,EAAUoE,WAAa,SAAUh+P,EAAKnwI,GACpC,IAAIwqY,EAAkBr6P,GAAOjyI,KAAK2rY,oBAAoB15P,GAClDq8I,EAAWg+G,EAAgBxqY,GAE/B,OAAgB,MAAZwsR,GAAoBv/Q,MAAMu/Q,GACrBg7G,EAGFh7G,CACT,EASAu9G,EAAU32G,YAAc,SAAUzwR,GAChC,IAAK,IAAIT,EAAI,EAAGwT,EAAMxX,KAAKuoB,QAASvkB,EAAIwT,EAAKxT,IAC3C,GAAIhE,KAAK8zO,QAAQ9vO,KAAOS,EACtB,OAAOT,EAIX,OAAQ,CACV,EASA6nY,EAAUqE,gBAAkB,SAAU5hH,GACpC,GAAIA,GAAYtuR,KAAK6pY,WAAav7G,EAAW,EAC3C,OAAQ,EAGV,IAAKtuR,KAAK2qY,SACR,OAAOr8G,EAIT,IAAIt3I,EAAUh3I,KAAK2qY,SAEfwF,EAAen5P,EAAQs3I,GAE3B,GAAoB,MAAhB6hH,GAAwBA,EAAenwY,KAAK4qY,QAAUuF,IAAiB7hH,EACzE,OAAOA,EAGT,IAAIj+O,EAAO,EACPC,EAAQtwC,KAAK4qY,OAAS,EAE1B,MAAOv6V,GAAQC,EAAO,CACpB,IAAIouF,GAAOruF,EAAOC,GAAS,EAAI,EAE/B,GAAI0mG,EAAQtY,GAAO4vJ,EACjBj+O,EAAOquF,EAAM,MACR,MAAIsY,EAAQtY,GAAO4vJ,GAGxB,OAAO5vJ,EAFPpuF,EAAQouF,EAAM,CAGhB,CACF,CAEA,OAAQ,CACV,EAWAmtQ,EAAU59E,iBAAmB,SAAUh8K,EAAKnwI,EAAO29B,GACjD,IAAI86Q,EAAUv6S,KAAKw4S,SACfk3F,EAAUn1F,EAAQtoK,GAClBm+P,EAAiB,GAErB,IAAKV,EACH,OAAOU,EAGU,MAAf3wW,IACFA,EAAcozD,KAOhB,IAJA,IAAImhG,EAAUnhG,IACVi7N,GAAW,EACXuiF,EAAoB,EAEfrsY,EAAI,EAAGwT,EAAMxX,KAAKuoB,QAASvkB,EAAIwT,EAAKxT,IAAK,CAChD,IAAI4oG,EAAO9qG,EAAQ9B,KAAKkD,IAAI+uI,EAAKjuI,GAC7BimF,EAAO9jF,KAAK6iB,IAAI4jF,GAEhB3iB,GAAQxqD,KAONwqD,EAAO+pG,GAAW/pG,IAAS+pG,GAAWpnF,GAAQ,GAAKkhN,EAAU,KAC/D95H,EAAU/pG,EACV6jO,EAAUlhN,EACVyjS,EAAoB,GAGlBzjS,IAASkhN,IACXsiF,EAAeC,KAAuBrsY,GAG5C,CAGA,OADAosY,EAAepuY,OAASquY,EACjBD,CACT,EAQAvE,EAAUl2I,YAAcg3I,EAoBxBd,EAAUjoG,eAAiB,SAAUz8L,GACnC,GAAKnnG,KAAKurY,SAAS6C,WAUjB,OAAOpuY,KAAKurY,SAASyD,QAAQhvY,KAAK21P,YAAYxuJ,IAP9C,IAFA,IAAIn4F,EAAM,GAEDhL,EAAI,EAAGA,EAAIhE,KAAK46J,WAAW54J,OAAQgC,IAAK,CAC/C,IAAIiuI,EAAMjyI,KAAK46J,WAAW52J,GAC1BgL,EAAI/K,KAAKjE,KAAKkD,IAAI+uI,EAAK9qC,GACzB,CAEA,OAAOn4F,CAIX,EAQA68X,EAAU/3J,QAAU,SAAU3sI,GAC5B,IAAImnL,EAAWtuR,KAAK21P,YAAYxuJ,GAChC,OAAOnnG,KAAK6qY,UAAUv8G,IAAai+G,EAAqBvsY,KAAMA,KAAK8uY,YAAaxgH,IAAa,EAC/F,EAQAu9G,EAAUh+H,MAAQ,SAAU1mK,GAC1B,OAAO0mK,EAAM7tQ,KAAMA,KAAK21P,YAAYxuJ,GACtC,EA+CA0kS,EAAUn0R,KAAO,SAAUoqD,EAAMnpF,EAAI54E,EAASuwY,GAC5C,aAEA,GAAKtwY,KAAK4qY,OAAV,CAIoB,oBAAT9oO,IACTwuO,EAAgBvwY,EAChBA,EAAU44E,EACVA,EAAKmpF,EACLA,EAAO,IAIT/hK,EAAUA,GAAWuwY,GAAiBtwY,KACtC8hK,EAAOwwE,EAAO5oN,IAAIojX,EAAoBhrO,GAAO9hK,KAAK81P,aAAc91P,MAGhE,IAFA,IAAIuwY,EAAUzuO,EAAK9/J,OAEVgC,EAAI,EAAGA,EAAIhE,KAAKuoB,QAASvkB,IAEhC,OAAQusY,GACN,KAAK,EACH53T,EAAGt4E,KAAKN,EAASiE,GACjB,MAEF,KAAK,EACH20E,EAAGt4E,KAAKN,EAASC,KAAKkD,IAAI4+J,EAAK,GAAI99J,GAAIA,GACvC,MAEF,KAAK,EACH20E,EAAGt4E,KAAKN,EAASC,KAAKkD,IAAI4+J,EAAK,GAAI99J,GAAIhE,KAAKkD,IAAI4+J,EAAK,GAAI99J,GAAIA,GAC7D,MAEF,QAIE,IAHA,IAAI6G,EAAI,EACJ/I,EAAQ,GAEL+I,EAAI0lY,EAAS1lY,IAClB/I,EAAM+I,GAAK7K,KAAKkD,IAAI4+J,EAAKj3J,GAAI7G,GAI/BlC,EAAM+I,GAAK7G,EACX20E,EAAG71E,MAAM/C,EAAS+B,GAvCxB,CA0CF,EASA+pY,EAAU9gI,WAAa,SAAUnwG,EAAYjiF,EAAI54E,EAASuwY,GACxD,aAEA,GAAKtwY,KAAK4qY,OAAV,CAI0B,oBAAfhwO,IACT01O,EAAgBvwY,EAChBA,EAAU44E,EACVA,EAAKiiF,EACLA,EAAa,IAIf76J,EAAUA,GAAWuwY,GAAiBtwY,KACtC46J,EAAa03E,EAAO5oN,IAAIojX,EAAoBlyO,GAAa56J,KAAK81P,aAAc91P,MAS5E,IARA,IAAIuoB,EAAQvoB,KAAKuoB,QACb01R,EAAO2rF,EAAe5pY,MACtBq7W,EAAa,IAAIp9D,EAAK11R,GACtBzmB,EAAQ,GACRyuY,EAAU31O,EAAW54J,OACrBmrB,EAAS,EACTqjX,EAAO51O,EAAW,GAEb52J,EAAI,EAAGA,EAAIukB,EAAOvkB,IAAK,CAC9B,IAAI+nW,EACA3N,EAASp+V,KAAK21P,YAAY3xP,GAE9B,GAAgB,IAAZusY,EACFxkC,EAAOpzR,EAAGt4E,KAAKN,EAASiE,QACnB,GAAgB,IAAZusY,EAAe,CACxB,IAAIvhY,EAAMhP,KAAKyvY,SAASe,EAAMpyC,GAE9B2N,EAAOpzR,EAAGt4E,KAAKN,EAASiP,EAAKhL,EAC/B,KAAO,CACL,IAAK,IAAI6G,EAAI,EAAGA,EAAI0lY,EAAS1lY,IAC3B/I,EAAM+I,GAAK7K,KAAKyvY,SAASe,EAAMpyC,GAGjCt8V,EAAM+I,GAAK7G,EACX+nW,EAAOpzR,EAAG71E,MAAM/C,EAAS+B,EAC3B,CAEIiqW,IACFsP,EAAWluV,KAAYixU,EAE3B,CAWA,OARIjxU,EAAS5E,IACXvoB,KAAK2qY,SAAWtvB,GAGlBr7W,KAAK4qY,OAASz9W,EAEdntB,KAAKkpX,QAAU,CAAC,EAChBlpX,KAAK21P,YAAc31P,KAAK2qY,SAAWiC,EAAyBD,EACrD3sY,IArDP,CAsDF,EAOA6rY,EAAUl+D,YAAc,SAAU/2P,GAChC,aAEA,GAAK52E,KAAK4qY,OAAV,CAIA,IAAIhwO,EAAa,GAEjB,IAAK,IAAI3oB,KAAOr7D,EACVA,EAAMtwE,eAAe2rI,IACvB2oB,EAAW32J,KAAKguI,GAIpB,IAAIs+P,EAAU31O,EAAW54J,OAEzB,GAAKuuY,EAAL,CAIA,IAAIE,EAAgBzwY,KAAKuoB,QACrB01R,EAAO2rF,EAAe5pY,MACtBq7W,EAAa,IAAIp9D,EAAKwyF,GACtBtjX,EAAS,EACTqjX,EAAO51O,EAAW,GAClBhsJ,EAAMgoE,EAAM45T,GAAM,GAClB7hY,EAAMioE,EAAM45T,GAAM,GAClBE,GAAgB,EAEpB,IAAK1wY,KAAK2qY,SAAU,CAElB,IAAIxjS,EAAM,EAEV,GAAgB,IAAZopS,EAAe,CAGjB,IAFA,IAAItB,EAAajvY,KAAKw4S,SAAS59I,EAAW,IAEjC/vJ,EAAI,EAAGA,EAAI7K,KAAKsrY,YAAazgY,IAIpC,IAHA,IAAI8lY,EAAe1B,EAAWpkY,GAC1B2M,EAAMrR,KAAKyI,IAAI5O,KAAK4qY,OAAS//X,EAAI7K,KAAKqrY,WAAYrrY,KAAKqrY,YAElDrnY,EAAI,EAAGA,EAAIwT,EAAKxT,IAAK,CAC5B,IAAIgL,EAAM2hY,EAAa3sY,IAMnBgL,GAAOJ,GAAOI,GAAOL,GAAOI,MAAMC,MACpCqsW,EAAWluV,KAAYg6E,GAGzBA,GACF,CAGFupS,GAAgB,CAClB,MAAO,GAAgB,IAAZH,EAAe,CACpBtB,EAAajvY,KAAKw4S,SAASg4F,GAA/B,IACII,EAAc5wY,KAAKw4S,SAAS59I,EAAW,IACvCmtH,EAAOnxM,EAAMgkF,EAAW,IAAI,GAC5BhjB,EAAOhhE,EAAMgkF,EAAW,IAAI,GAEhC,IAAS/vJ,EAAI,EAAGA,EAAI7K,KAAKsrY,YAAazgY,IACpC,CAAI8lY,EAAe1B,EAAWpkY,GAA9B,IACIgmY,EAAgBD,EAAY/lY,GAGhC,IAFI2M,EAAMrR,KAAKyI,IAAI5O,KAAK4qY,OAAS//X,EAAI7K,KAAKqrY,WAAYrrY,KAAKqrY,YAElDrnY,EAAI,EAAGA,EAAIwT,EAAKxT,IAAK,CACxBgL,EAAM2hY,EAAa3sY,GAAvB,IACI6jL,EAAOgpN,EAAc7sY,IAEpBgL,GAAOJ,GAAOI,GAAOL,GAAOI,MAAMC,MAAU64K,GAAQkgG,GAAQlgG,GAAQjwC,GAAQ7oI,MAAM84K,MACrFwzL,EAAWluV,KAAYg6E,GAGzBA,GACF,CAbgC,CAgBlCupS,GAAgB,CAClB,CACF,CAEA,IAAKA,EACH,GAAgB,IAAZH,EACF,IAASvsY,EAAI,EAAGA,EAAIysY,EAAezsY,IAAK,CACtC,IAAIsqR,EAAWtuR,KAAK21P,YAAY3xP,GAE5BgL,EAAMhP,KAAKyvY,SAASe,EAAMliH,IAG1Bt/Q,GAAOJ,GAAOI,GAAOL,GAAOI,MAAMC,MACpCqsW,EAAWluV,KAAYmhQ,EAE3B,MAEA,IAAStqR,EAAI,EAAGA,EAAIysY,EAAezsY,IAAK,CACtC,IAAI+nW,GAAO,EAGX,IAFIz9E,EAAWtuR,KAAK21P,YAAY3xP,GAEvB6G,EAAI,EAAGA,EAAI0lY,EAAS1lY,IAAK,CAChC,IAAIimY,EAAOl2O,EAAW/vJ,GAElBmE,EAAMhP,KAAKyvY,SAASx9P,EAAKq8I,IAGzBt/Q,EAAM4nE,EAAMk6T,GAAM,IAAM9hY,EAAM4nE,EAAMk6T,GAAM,MAC5C/kC,GAAO,EAEX,CAEIA,IACFsP,EAAWluV,KAAYntB,KAAK21P,YAAY3xP,GAE5C,CAaJ,OARImpB,EAASsjX,IACXzwY,KAAK2qY,SAAWtvB,GAGlBr7W,KAAK4qY,OAASz9W,EAEdntB,KAAKkpX,QAAU,CAAC,EAChBlpX,KAAK21P,YAAc31P,KAAK2qY,SAAWiC,EAAyBD,EACrD3sY,IA7GP,CAdA,CA4HF,EAUA6rY,EAAUluI,SAAW,SAAU/iG,EAAYjiF,EAAI54E,EAASuwY,GACtD,aAE0B,oBAAf11O,IACT01O,EAAgBvwY,EAChBA,EAAU44E,EACVA,EAAKiiF,EACLA,EAAa,IAIf76J,EAAUA,GAAWuwY,GAAiBtwY,KACtC,IAAI0D,EAAS,GAIb,OAHA1D,KAAK03G,KAAKkjD,GAAY,WACpBl3J,EAAOO,KAAK00E,GAAMA,EAAG71E,MAAM9C,KAAM+C,WACnC,GAAGhD,GACI2D,CACT,EAqDAmoY,EAAUniX,IAAM,SAAUkxI,EAAYjiF,EAAI54E,EAASuwY,GACjD,aAEAvwY,EAAUA,GAAWuwY,GAAiBtwY,KACtC46J,EAAa03E,EAAO5oN,IAAIojX,EAAoBlyO,GAAa56J,KAAK81P,aAAc91P,MAC5E,IAAIiX,EAAO81X,EAAyB/sY,KAAM46J,GAG1C3jJ,EAAK0zX,SAAW3qY,KAAK2qY,SACrB1zX,EAAK0+O,YAAc1+O,EAAK0zX,SAAWiC,EAAyBD,EAS5D,IARA,IAAIpyF,EAAUtjS,EAAKuhS,SACfu4F,EAAc,GACdhF,EAAY/rY,KAAKqrY,WACjBkF,EAAU31O,EAAW54J,OACrB+vR,EAAY/xR,KAAKuoB,QACjBnf,EAAS,GACT+7X,EAAYluX,EAAKu0X,WAEZ33J,EAAY,EAAGA,EAAYk+C,EAAWl+C,IAAa,CAC1D,IAAK,IAAI4tC,EAAW,EAAGA,EAAW8uH,EAAS9uH,IACzCr4Q,EAAOq4Q,GAAYzhR,KAAKkD,IAAI03J,EAAW6mH,GAAW5tC,GAKpDzqO,EAAOmnY,GAAW18J,EAClB,IAAIm9J,EAAWr4T,GAAMA,EAAG71E,MAAM/C,EAASqJ,GAEvC,GAAgB,MAAZ4nY,EAAkB,CAEI,kBAAbA,IACTD,EAAY,GAAKC,EACjBA,EAAWD,GAOb,IAJA,IAAIziH,EAAWtuR,KAAK21P,YAAY9hB,GAC5B24J,EAAarmY,KAAK2I,MAAMw/Q,EAAWy9G,GACnCU,EAAcn+G,EAAWy9G,EAEpB/nY,EAAI,EAAGA,EAAIgtY,EAAShvY,OAAQgC,IAAK,CACxC,IAAIiuI,EAAM2oB,EAAW52J,GACjBgL,EAAMgiY,EAAShtY,GACfitY,EAAiB9L,EAAUlzP,GAC3Bu9P,EAAWj1F,EAAQtoK,GAEnBu9P,IACFA,EAAShD,GAAYC,GAAez9X,GAGlCA,EAAMiiY,EAAe,KACvBA,EAAe,GAAKjiY,GAGlBA,EAAMiiY,EAAe,KACvBA,EAAe,GAAKjiY,EAExB,CACF,CACF,CAEA,OAAOiI,CACT,EAUA40X,EAAUqF,WAAa,SAAUpoH,EAAWqoH,EAAMC,EAAaC,GAY7D,IAXA,IAAIp6X,EAAO81X,EAAyB/sY,KAAM,CAAC8oR,IACvCwoH,EAAgBr6X,EAAKuhS,SACrB+4F,EAAc,GACdC,EAAYrrY,KAAK2I,MAAM,EAAIqiY,GAC3B3B,EAAW8B,EAAcxoH,GACzBtxQ,EAAMxX,KAAKuoB,QACXwjX,EAAY/rY,KAAKqrY,WACjB4F,EAAiBh6X,EAAKu0X,WAAW1iH,GACjCuyF,EAAa,IAAKuuB,EAAe5pY,MAApB,CAA2BwX,GACxC2V,EAAS,EAEJnpB,EAAI,EAAGA,EAAIwT,EAAKxT,GAAKwtY,EAAW,CAEnCA,EAAYh6X,EAAMxT,IACpBwtY,EAAYh6X,EAAMxT,EAClButY,EAAYvvY,OAASwvY,GAGvB,IAAK,IAAI3mY,EAAI,EAAGA,EAAI2mY,EAAW3mY,IAAK,CAClC,IAAI0hV,EAAUvsV,KAAK21P,YAAY3xP,EAAI6G,GAC/B4mY,EAAqBtrY,KAAK2I,MAAMy9U,EAAUw/C,GAC1C2F,EAAsBnlD,EAAUw/C,EACpCwF,EAAY1mY,GAAK2kY,EAASiC,GAAoBC,EAChD,CAEA,IAAI5vY,EAAQsvY,EAAYG,GACpBI,EAAiB3xY,KAAK21P,YAAYxvP,KAAKyI,IAAI5K,EAAIqtY,EAAYE,EAAazvY,IAAU,EAAG0V,EAAM,IAC3Fo6X,EAAmBzrY,KAAK2I,MAAM6iY,EAAiB5F,GAC/C8F,EAAoBF,EAAiB5F,EAEzCyD,EAASoC,GAAkBC,GAAqB/vY,EAE5CA,EAAQmvY,EAAe,KACzBA,EAAe,GAAKnvY,GAGlBA,EAAQmvY,EAAe,KACzBA,EAAe,GAAKnvY,GAGtBu5W,EAAWluV,KAAYwkX,CACzB,CAKA,OAHA16X,EAAK2zX,OAASz9W,EACdlW,EAAK0zX,SAAWtvB,EAChBpkW,EAAK0+O,YAAci3I,EACZ31X,CACT,EASA40X,EAAUxxJ,aAAe,SAAUlzI,GACjC,IAAI4iJ,EAAY/pP,KAAK+pP,UACrB,OAAO,IAAI9S,EAAMj3O,KAAK4jS,eAAez8L,GAAM4iJ,EAAWA,GAAaA,EAAUrX,QAC/E,EAQAm5J,EAAUj/R,KAAO,SAAUklS,GACzB,IAAIC,EAAW/xY,KACf,OAAO,IAAI0xP,EAAWogJ,EAAYA,EAAU1C,aAAe,GAAIpvY,KAAKovY,cAAc,SAAUjoS,GAC1F,OAAO0mK,EAAMikI,EAAW3qS,EAC1B,IAAG,SAAUA,GACX,OAAO0mK,EAAMkkI,EAAU5qS,EACzB,GACF,EAOA0kS,EAAUvuJ,UAAY,SAAUz5O,GAC9B,IAAIoxP,EAASj1P,KAAKgrY,QAClB,OAAO/1I,GAAUA,EAAOpxP,EAC1B,EAcAgoY,EAAU71J,UAAY,SAAUnyO,EAAKmL,GACnC,GAAI1N,EAASuC,GACX,IAAK,IAAIY,KAAQZ,EACXA,EAAIyC,eAAe7B,IACrBzE,KAAKg2O,UAAUvxO,EAAMZ,EAAIY,SAO/BzE,KAAKgrY,QAAUhrY,KAAKgrY,SAAW,CAAC,EAChChrY,KAAKgrY,QAAQnnY,GAAOmL,CACtB,EAQA68X,EAAUt8I,UAAY,SAAU1rP,EAAKmL,GACnC,GAAI1N,EAASuC,GACX,IAAK,IAAIY,KAAQZ,EACXA,EAAIyC,eAAe7B,IACrBzE,KAAKuvP,UAAU9qP,EAAMZ,EAAIY,SAO/BzE,KAAKosQ,QAAQvoQ,GAAOmL,CACtB,EAQA68X,EAAU1zJ,UAAY,SAAUt0O,GAC9B,OAAO7D,KAAKosQ,QAAQvoQ,EACtB,EAOAgoY,EAAU/uJ,cAAgB,SAAU31I,GAClC,OAAOnnG,KAAKmrY,aAAahkS,EAC3B,EASA0kS,EAAU1/I,cAAgB,SAAUhlJ,EAAKgB,EAAQ6V,GAC/Ch+G,KAAKmrY,aAAahkS,GAAO6W,EAAQs0H,EAAO5uH,OAAO1jH,KAAKmrY,aAAahkS,IAAQ,CAAC,EAAGgB,GAAUA,CACzF,EAMA0jS,EAAUmG,iBAAmB,WAC3BhyY,KAAKmrY,aAAanpY,OAAS,CAC7B,EASA6pY,EAAUxuJ,cAAgB,SAAUl2I,EAAKtjG,EAAKolY,GAC5C,IAAIgJ,EAAajyY,KAAKirY,aAAa9jS,GAC/Bn4F,EAAMijY,GAAcA,EAAWpuY,GAEnC,OAAW,MAAPmL,GAAgBi6X,EAKbj6X,EAHEhP,KAAKs9O,UAAUz5O,EAI1B,EAgBAgoY,EAAUj/I,cAAgB,SAAUzlJ,EAAKtjG,EAAK/B,GAC5C,IAAImwY,EAAajyY,KAAKirY,aAAa9jS,IAAQ,CAAC,EACxC+jS,EAAgBlrY,KAAKkrY,cAGzB,GAFAlrY,KAAKirY,aAAa9jS,GAAO8qS,EAErB3wY,EAASuC,GACX,IAAK,IAAIY,KAAQZ,EACXA,EAAIyC,eAAe7B,KACrBwtY,EAAWxtY,GAAQZ,EAAIY,GACvBymY,EAAczmY,IAAQ,QAO5BwtY,EAAWpuY,GAAO/B,EAClBopY,EAAcrnY,IAAO,CACvB,EAMAgoY,EAAUqG,eAAiB,WACzBlyY,KAAKgrY,QAAU,CAAC,EAChBhrY,KAAKirY,aAAe,GACpBjrY,KAAKkrY,cAAgB,CAAC,CACxB,EAEA,IAAIiH,EAA4B,SAAUprS,GACxCA,EAAM23I,YAAc1+O,KAAK0+O,YACzB33I,EAAM8sI,UAAY7zO,KAAK6zO,UACvB9sI,EAAM0xJ,SAAWz4P,KAAKy4P,QACxB,EAQAozI,EAAUpxJ,iBAAmB,SAAUtzI,EAAKvlG,GAC1C,IAAImoP,EAAY/pP,KAAK+pP,UAEjBnoP,IAGFA,EAAGiyO,UAAY1sI,EACfvlG,EAAG62P,SAAWz4P,KAAKy4P,SACnB72P,EAAG88O,YAAcqL,GAAaA,EAAUrL,YAExB,UAAZ98O,EAAG4C,MACL5C,EAAGi3P,SAASs5I,EAA2BvwY,IAI3C5B,KAAKorY,YAAYjkS,GAAOvlG,CAC1B,EAOAiqY,EAAU/wJ,iBAAmB,SAAU3zI,GACrC,OAAOnnG,KAAKorY,YAAYjkS,EAC1B,EAOA0kS,EAAUpwJ,kBAAoB,SAAU9iK,EAAI54E,GAC1CuyO,EAAO56H,KAAK13G,KAAKorY,aAAa,SAAUxpY,EAAIulG,GACtCvlG,GACF+2E,GAAMA,EAAGt4E,KAAKN,EAAS6B,EAAIulG,EAE/B,GACF,EAOA0kS,EAAU/zG,aAAe,SAAU7gR,GACjC,IAAKA,EAAM,CACT,IAAIm7X,EAAoB9/J,EAAO5oN,IAAI1pB,KAAK46J,WAAY56J,KAAK42P,iBAAkB52P,MAC3EiX,EAAO,IAAIgrP,EAAKmwI,EAAmBpyY,KAAK+pP,UAC1C,CAMA,GAHA9yO,EAAKuhS,SAAWx4S,KAAKw4S,SACrB0xF,EAAmBjzX,EAAMjX,MAErBA,KAAK2qY,SAAU,CACjB,IAAI1sF,EAAOj+S,KAAK2qY,SAASz9X,YACzB+J,EAAK0zX,SAAW,IAAI1sF,EAAKj+S,KAAK2qY,SAChC,MACE1zX,EAAK0zX,SAAW,KAIlB,OADA1zX,EAAK0+O,YAAc1+O,EAAK0zX,SAAWiC,EAAyBD,EACrD11X,CACT,EAQA40X,EAAU3oI,WAAa,SAAU62F,EAAYs4C,GAC3C,IAAIC,EAAiBtyY,KAAK+5V,GAEI,oBAAnBu4C,IAIXtyY,KAAKmqY,iBAAmBnqY,KAAKmqY,kBAAoB,GAEjDnqY,KAAKmqY,iBAAiBlmY,KAAK81V,GAE3B/5V,KAAK+5V,GAAc,WACjB,IAAIhhR,EAAMu5T,EAAexvY,MAAM9C,KAAM+C,WACrC,OAAOsvY,EAAevvY,MAAM9C,KAAM,CAAC+4E,GAAK93E,OAAOqxO,EAAOnwO,MAAMY,YAC9D,EACF,EAIA8oY,EAAU0G,qBAAuB,CAAC,eAAgB,aAAc,OAEhE1G,EAAU2G,kBAAoB,CAAC,aAAc,eAC7C,IAAI/kX,EAAWw0O,EACf9gQ,EAAOD,QAAUusB,C,wBChhEjB,IAAImC,EAAQpH,EAAQ,OAEhB2rQ,EAAgBvkQ,EAAMukQ,cACtB7yR,EAAWsuB,EAAMtuB,SACjBooB,EAAMkG,EAAMlG,IA4BhB,SAASgmW,EAAY7sR,GAKnB7iG,KAAKqkQ,WAAaxhK,EAAIwhK,YAAc,GAMpCrkQ,KAAKyyY,aAAe5vS,EAAI6vS,YAMxB1yY,KAAK2yY,eAAiB9vS,EAAIkpR,cAM1B/rX,KAAK4yY,IACP,CAOAljB,EAAYS,kBAAoB,SAAUhvG,GACxC,IAAIp2O,EAASo2O,EAAUp2O,OACnB9rB,EAAO8rB,EAAO9rB,KACdolP,EAAaplP,GAAQyK,EAAIzK,EAAM60N,GACnC,OAAO,IAAI47I,EAAY,CACrBrrH,WAAYA,EACZquI,aAAcruI,EAEd0nH,eAAuC,IAAxBhhV,EAAO8nW,cAE1B,EAEA,IAAIlqY,EAAQ+mX,EAAYnoX,UA0DxB,SAASurY,EAAelxH,GACtB,OAAOA,EAAYgxH,OAAShxH,EAAYgxH,KAAOz+G,EAAcvS,EAAYvd,YAC3E,CAEA,SAASvwB,EAAQt0N,GACf,OAAIle,EAASke,IAAqB,MAAbA,EAAI1d,MAChB0d,EAAI1d,MAEJ0d,EAAM,EAEjB,CA9DA7W,EAAMoqY,WAAa,SAAUzuI,GAC3B,OAAOwuI,EAAe9yY,MAAMkD,IAAIohQ,EAClC,EAOA37P,EAAMqqY,gBAAkB,SAAU1uI,GAChC,IAAIriQ,EACAywY,EAAc1yY,KAAKyyY,aAMvB,GAAwB,kBAAbnuI,IAA0BouI,EACnC,OAAOpuI,EAWT,GAAIouI,IAAgB1yY,KAAK2yY,eAGvB,OAFA1wY,EAAQjC,KAAKqkQ,WAAWriQ,OACxBhC,KAAKqkQ,WAAWpiQ,GAASqiQ,EAClBriQ,EAGT,IAAIynB,EAAMopX,EAAe9yY,MAazB,OAZAiC,EAAQynB,EAAIxmB,IAAIohQ,GAEH,MAATriQ,IACEywY,GACFzwY,EAAQjC,KAAKqkQ,WAAWriQ,OACxBhC,KAAKqkQ,WAAWpiQ,GAASqiQ,EACzB56O,EAAIlX,IAAI8xP,EAAUriQ,IAElBA,EAAQupF,KAILvpF,CACT,EAeA,IAAIwrB,EAAWiiW,EACfvuX,EAAOD,QAAUusB,C,wBClJjB,IAAImC,EAAQpH,EAAQ,OAEhB2rQ,EAAgBvkQ,EAAMukQ,cACtB99Q,EAAeuZ,EAAMvZ,aAErB0xX,EAASv/W,EAAQ,MAEjBw/W,EAAmBD,EAAOC,iBAE1B/nH,EAAcz3P,EAAQ,OAEtB03P,EAAyBD,EAAYC,uBACrC47D,EAA0B77D,EAAY67D,wBACtCm3D,EAAwBhzH,EAAYgzH,sBACpCC,EAA4BjzH,EAAYizH,0BACxCC,EAA8BlzH,EAAYkzH,4BAqE9C,SAAS3yH,EAAOjoM,GAIdv4E,KAAKozY,YAAc76T,EAAO66T,YAM1BpzY,KAAKif,KAAOs5D,EAAOt5D,OAASs5D,EAAO+pM,eAAiB6wH,EAA8B,CAAC,EAAI,IAOvFnzY,KAAKsiR,aAAe/pM,EAAO+pM,cAAgB2wH,EAO3CjzY,KAAK+7U,eAAiBxjQ,EAAOwjQ,gBAAkBD,EAO/C97U,KAAKisS,iBAAmB1zN,EAAO0zN,iBAO/BjsS,KAAK24R,aAAepgN,EAAOogN,cAAgBxE,EAAc57M,EAAOogN,cAMhE34R,KAAK4mD,WAAa2xB,EAAO3xB,YAAc,EAMvC5mD,KAAKqzY,sBAAwB96T,EAAO86T,qBACtC,CAMA7yH,EAAOK,mBAAqB,SAAU5hQ,GACpC,OAAO,IAAIuhQ,EAAO,CAChBvhQ,KAAMA,EACNqjQ,aAAcjsQ,EAAa4I,GAAQi0X,EAA4BhzH,EAC/DkzH,aAAa,GAEjB,EAEApL,EAAiBxnH,GACjB,IAAI/yP,EAAW+yP,EACfr/Q,EAAOD,QAAUusB,C,iCCvJjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB42P,EAAW52P,EAAQ,MAEnBy5O,EAAOz5O,EAAQ,OAEf62P,EAAmB72P,EAAQ,OAgC3B8qX,EAAW,SAAU7uY,EAAMmiS,GAI7B5mS,KAAKyE,KAAOA,GAAQ,GAQpBzE,KAAK+zH,MAAQ,EAOb/zH,KAAKyoC,OAAS,EAMdzoC,KAAKihG,WAAa,KAYlBjhG,KAAK6zO,WAAa,EAMlB7zO,KAAK++E,SAAW,GAMhB/+E,KAAKq6S,aAAe,GAMpBr6S,KAAK4mS,SAAWA,CAClB,EAkPA,SAASkB,EAAK/9C,GAKZ/pP,KAAKk4B,KAMLl4B,KAAKif,KAOLjf,KAAK47G,OAAS,GAOd57G,KAAK+pP,UAAYA,CACnB,CAyIA,SAASwpJ,EAASxsS,EAAO3rB,GACvB,IAAI2D,EAAW3D,EAAK2D,SAEhBgoB,EAAM9F,aAAe7lB,IAIzB2D,EAAS96E,KAAK8iG,GACdA,EAAM9F,WAAa7lB,EACrB,CA5ZAk4T,EAAS/rY,UAAY,CACnB2F,YAAaomY,EAMbh5F,UAAW,WACT,OAAOt6S,KAAK6zO,UAAY,CAC1B,EAoBA60B,SAAU,SAAU/oQ,EAASg5E,EAAI54E,GACR,oBAAZJ,IACTI,EAAU44E,EACVA,EAAKh5E,EACLA,EAAU,MAGZA,EAAUA,GAAW,CAAC,EAElB2yO,EAAOohF,SAAS/zT,KAClBA,EAAU,CACRg8S,MAAOh8S,IAIX,IAEI6zY,EAFA73F,EAAQh8S,EAAQg8S,OAAS,WACzB58N,EAAW/+E,KAAKL,EAAQk3B,MAAQ,YAE1B,aAAV8kR,IAAyB63F,EAAmB76T,EAAGt4E,KAAKN,EAASC,OAE7D,IAAK,IAAIgE,EAAI,GAAIwvY,GAAoBxvY,EAAI+6E,EAAS/8E,OAAQgC,IACxD+6E,EAAS/6E,GAAG0kQ,SAAS/oQ,EAASg5E,EAAI54E,GAG1B,cAAV47S,GAAyBhjO,EAAGt4E,KAAKN,EAASC,KAC5C,EAOAyzY,qBAAsB,SAAU1/Q,GAC9B,IAAItrF,EAAS,EACbzoC,KAAK+zH,MAAQA,EAEb,IAAK,IAAI/vH,EAAI,EAAGA,EAAIhE,KAAK++E,SAAS/8E,OAAQgC,IAAK,CAC7C,IAAI+iG,EAAQ/mG,KAAK++E,SAAS/6E,GAC1B+iG,EAAM0sS,qBAAqB1/Q,EAAQ,GAE/BhtB,EAAMt+D,OAASA,IACjBA,EAASs+D,EAAMt+D,OAEnB,CAEAzoC,KAAKyoC,OAASA,EAAS,CACzB,EAMAu8O,YAAa,SAAUx7Q,GACrB,GAAIxJ,KAAK6tQ,UAAYrkQ,EACnB,OAAOxJ,KAGT,IAAK,IAAIgE,EAAI,EAAG+6E,EAAW/+E,KAAK++E,SAAUvnE,EAAMunE,EAAS/8E,OAAQgC,EAAIwT,EAAKxT,IAAK,CAC7E,IAAI+0E,EAAMgG,EAAS/6E,GAAGghR,YAAYx7Q,GAElC,GAAIuvE,EACF,OAAOA,CAEX,CACF,EAMA2a,SAAU,SAAUtY,GAClB,GAAIA,IAASp7E,KACX,OAAO,EAGT,IAAK,IAAIgE,EAAI,EAAG+6E,EAAW/+E,KAAK++E,SAAUvnE,EAAMunE,EAAS/8E,OAAQgC,EAAIwT,EAAKxT,IAAK,CAC7E,IAAI+0E,EAAMgG,EAAS/6E,GAAG0vF,SAAStY,GAE/B,GAAIrC,EACF,OAAOA,CAEX,CACF,EAMA0uN,aAAc,SAAUj6I,GACtB,IAAIrC,EAAY,GACZ/vE,EAAOoyE,EAAcxtJ,KAAOA,KAAKihG,WAErC,MAAO7lB,EACL+vE,EAAUlnJ,KAAKm3E,GACfA,EAAOA,EAAK6lB,WAId,OADAkqD,EAAUnwH,UACHmwH,CACT,EAMAnnD,SAAU,SAAU8kL,GAClB,IAAI7pQ,EAAOjf,KAAK4mS,SAAS3nR,KACzB,OAAOA,EAAK/b,IAAI+b,EAAK62O,aAAagzB,GAAa,SAAU9oR,KAAK6zO,UAChE,EAMA0b,UAAW,SAAUpnJ,EAAQ6V,GAC3Bh+G,KAAK6zO,WAAa,GAAK7zO,KAAK4mS,SAAS3nR,KAAKktO,cAAcnsP,KAAK6zO,UAAW1rI,EAAQ6V,EAClF,EAKAm6H,UAAW,WACT,OAAOn4O,KAAK4mS,SAAS3nR,KAAK69N,cAAc98O,KAAK6zO,UAC/C,EAMA2F,SAAU,SAAUt8K,GAClB,KAAIl9D,KAAK6zO,UAAY,GAArB,CAIA,IAAI+yD,EAAW5mS,KAAK4mS,SAChBxsD,EAAYwsD,EAAS3nR,KAAKo7N,aAAar6O,KAAK6zO,WAChD,OAAOuG,EAAUZ,SAASt8K,EAJ1B,CAKF,EASA84K,UAAW,SAAUnyO,EAAK/B,GACxB9B,KAAK6zO,WAAa,GAAK7zO,KAAK4mS,SAAS3nR,KAAK2tO,cAAc5sP,KAAK6zO,UAAWhwO,EAAK/B,EAC/E,EAKAw7O,UAAW,SAAUz5O,EAAKolY,GACxB,OAAOjpY,KAAK4mS,SAAS3nR,KAAKo+N,cAAcr9O,KAAK6zO,UAAWhwO,EAAKolY,EAC/D,EAMAtzI,YAAa,WACX,OAAO31P,KAAK4mS,SAAS3nR,KAAK02O,YAAY31P,KAAK6zO,UAC7C,EAMAg6B,MAAO,WACL,OAAO7tQ,KAAK4mS,SAAS3nR,KAAK4uP,MAAM7tQ,KAAK6zO,UACvC,EASA+zD,aAAc,SAAUxsN,GACtB,IAAIj7E,EAASi7E,EAAK6lB,WAElB,MAAO9gG,EAAQ,CACb,GAAIA,IAAWH,KACb,OAAO,EAGTG,EAASA,EAAO8gG,UAClB,CAEA,OAAO,CACT,EASA4mM,eAAgB,SAAUzsN,GACxB,OAAOA,IAASp7E,MAAQo7E,EAAKwsN,aAAa5nS,KAC5C,GAoCF8nS,EAAKvgS,UAAY,CACf2F,YAAa46R,EACbtjS,KAAM,OAmBNkkQ,SAAU,SAAU/oQ,EAASg5E,EAAI54E,GAC/BC,KAAKk4B,KAAKwwO,SAAS/oQ,EAASg5E,EAAI54E,EAClC,EAMAqoS,mBAAoB,SAAUv0D,GAC5B,IAAIy6C,EAAWtuR,KAAKif,KAAK02O,YAAY9hB,GACrC,OAAO7zO,KAAK47G,OAAO0yK,EACrB,EAMAolH,cAAe,SAAUjvY,GACvB,OAAOzE,KAAKk4B,KAAKw7W,cAAcjvY,EACjC,EAMAuyB,OAAQ,WAIN,IAHA,IAAI/X,EAAOjf,KAAKif,KACZ6/D,EAAQ9+E,KAAK47G,OAER53G,EAAI,EAAGwT,EAAMsnE,EAAM98E,OAAQgC,EAAIwT,EAAKxT,IAC3C86E,EAAM96E,GAAG6vO,WAAa,EAGxB,IAAS7vO,EAAI,EAAGwT,EAAMyH,EAAKsJ,QAASvkB,EAAIwT,EAAKxT,IAC3C86E,EAAM7/D,EAAK02O,YAAY3xP,IAAI6vO,UAAY7vO,CAE3C,EAKA07S,aAAc,WACZ1/S,KAAKif,KAAK+yX,kBACZ,GAuBFlqG,EAAKK,WAAa,SAAUwrG,EAAU5pJ,EAAWiZ,GAC/C,IAAI8hB,EAAO,IAAIgjB,EAAK/9C,GAChB6pJ,EAAW,GACXC,EAAS,EAGb,SAASC,EAAeprG,EAAUznM,GAChC,IAAIn/F,EAAQ4mS,EAAS5mS,MACrB+xY,EAAS1tY,KAAKwI,IAAIklY,EAAQvhK,EAAOxrO,QAAQhF,GAASA,EAAME,OAAS,GACjE4xY,EAAS3vY,KAAKykS,GACd,IAAIttN,EAAO,IAAIk4T,EAAS5qG,EAASjkS,KAAMqgR,GACvC7jL,EAAasyS,EAASn4T,EAAM6lB,GAAc6jL,EAAK5sP,KAAOkjD,EAEtD0pM,EAAKlpK,OAAO33G,KAAKm3E,GAEjB,IAAI2D,EAAW2pN,EAAS3pN,SAExB,GAAIA,EACF,IAAK,IAAI/6E,EAAI,EAAGA,EAAI+6E,EAAS/8E,OAAQgC,IACnC8vY,EAAe/0T,EAAS/6E,GAAIo3E,EAGlC,CAlBA04T,EAAeH,GAoBf7uH,EAAK5sP,KAAKu7W,qBAAqB,GAC/B,IAAI/wH,EAAiBrD,EAAiBu0H,EAAU,CAC9Cz4I,gBAAiB,CAAC,SAClBsrB,gBAAiBotH,IAEf58X,EAAO,IAAIgrP,EAAKygB,EAAgB34B,GASpC,OARA9yO,EAAK4nD,SAAS+0U,GACd5wI,GAAcA,EAAW/rP,GACzBmoQ,EAAS,CACPU,SAAU7oQ,EACVg2J,OAAQ63G,EACR/E,WAAY,SAEd+E,EAAK9tP,SACE8tP,CACT,EAoBA,IAAIr3P,EAAWq6Q,EACf3mS,EAAOD,QAAUusB,C,iCC/fjB,IAAImC,EAAQpH,EAAQ,OAEhB2rQ,EAAgBvkQ,EAAMukQ,cACtBz8K,EAAO9nF,EAAM8nF,KACbg8M,EAAW9jS,EAAM8jS,SACjBl6N,EAAW5pE,EAAM4pE,SACjBkqB,EAAS9zF,EAAM8zF,OACfpiH,EAAWsuB,EAAMtuB,SACjBgzB,EAAQ1E,EAAM0E,MAEdmmO,EAASjyO,EAAQ,OAEjBinT,EAAmBh1E,EAAOg1E,iBAE1B90E,EAAgBnyO,EAAQ,MAExBurX,EAAep5I,EAAco5I,aAC7BC,EAAar5I,EAAcq5I,WAE3BxzH,EAASh4P,EAAQ,OAEjB23P,EAAmB33P,EAAQ,OAE3ByrX,EAAmB9zH,EAAiB8zH,iBAEpCnM,EAAoBt/W,EAAQ,KAiEhC,SAAS0rX,EAAmBC,EAASzvY,EAAQm+F,GACtC29K,EAAOI,WAAWl8Q,KACrBA,EAAS87Q,EAAOK,mBAAmBn8Q,IAGrCm+F,EAAMA,GAAO,CAAC,EACdsxS,GAAWA,GAAW,IAAIhyY,QAQ1B,IAPA,IAAIqkR,GAAW3jL,EAAI2jL,SAAW,IAAIrkR,QAC9BiyY,EAAiBjgH,IACjBkgH,EAAkBlgH,IAElBzwR,EAAS,GACT4wY,EAAWC,EAAY7vY,EAAQyvY,EAAS3tH,EAAS3jL,EAAIyxS,UAEhDtwY,EAAI,EAAGA,EAAIswY,EAAUtwY,IAAK,CACjC,IAAIwwY,EAAahuH,EAAQxiR,GAAK0/G,EAAO,CAAC,EAAGpiH,EAASklR,EAAQxiR,IAAMwiR,EAAQxiR,GAAK,CAC3ES,KAAM+hR,EAAQxiR,KAEZywY,EAAcD,EAAW/vY,KACzBw4U,EAAav5U,EAAOM,GAAK,IAAI8jY,EAEd,MAAf2M,GAA0D,MAAnCL,EAAelxY,IAAIuxY,KAI5Cx3D,EAAWx4U,KAAOw4U,EAAWy3D,YAAcD,EAC3CL,EAAe5hY,IAAIiiY,EAAazwY,IAGf,MAAnBwwY,EAAWhwY,OAAiBy4U,EAAWz4U,KAAOgwY,EAAWhwY,MAC/B,MAA1BgwY,EAAWE,cAAwBz3D,EAAWy3D,YAAcF,EAAWE,YACzE,CAEA,IAAIl+I,EAAY3zJ,EAAI2zJ,WAEfA,GAAa3zJ,EAAIu4J,kBACpB5E,EAAY3zJ,EAAIu4J,gBAAgB12P,EAAQ4vY,IAG1C99I,EAAY29B,EAAc39B,GAE1BA,EAAU9+I,MAAK,SAAUq/I,EAAUD,GAKjC,GAJAC,EAAW04E,EAAiB14E,GAAU50P,QAId,IAApB40P,EAAS/0P,SAAiB0xT,EAAS38D,EAAS,KAAOA,EAAS,GAAK,EACnEP,EAAUhkP,IAAIskP,GAAU,OAD1B,CAKA,IAAI69I,EAAgBn+I,EAAUhkP,IAAIskP,EAAU,IAC5Cp/I,EAAKq/I,GAAU,SAAU69I,EAAcztS,GAErCusN,EAASkhF,KAAkBA,EAAeR,EAAelxY,IAAI0xY,IAEzC,MAAhBA,GAAwBA,EAAeN,IACzCK,EAAcxtS,GAAOytS,EACrBC,EAASnxY,EAAOkxY,GAAe99I,EAAU3vJ,GAE7C,GAXA,CAYF,IAEA,IAAI2tS,EAAc,EA2DlB,SAASD,EAAS53D,EAAYnmF,EAAUE,GACA,MAAlCi9I,EAAiB/wY,IAAI4zP,GACvBmmF,EAAWn7D,UAAUhrB,GAAYE,GAEjCimF,EAAWnmF,SAAWA,EACtBmmF,EAAWjmF,cAAgBA,EAC3Bq9I,EAAgB7hY,IAAIskP,GAAU,GAElC,CAlEAp/I,EAAKy8R,GAAS,SAAUY,EAAYC,GAClC,IAAIl+I,EAEAm+I,EACAC,EAEJ,GAAIxhF,EAASqhF,GACXj+I,EAAWi+I,EACXA,EAAa,CAAC,MACT,CACLj+I,EAAWi+I,EAAWtwY,KACtB,IAAIm9Q,EAAcmzH,EAAWnzH,YAC7BmzH,EAAWnzH,YAAc,KACzBmzH,EAAazgX,EAAMygX,GACnBA,EAAWnzH,YAAcA,EAEzBqzH,EAAoBF,EAAWvuH,QAC/B0uH,EAAsBH,EAAWjzH,UACjCizH,EAAWtwY,KAAOswY,EAAWj+I,SAAWi+I,EAAW/9I,cAAgB+9I,EAAWvuH,QAAUuuH,EAAWjzH,UAAY,IACjH,CAEA,IAAI/qB,EAAWP,EAAUtzP,IAAI4zP,GAE7B,IAAiB,IAAbC,EAAJ,CAIIA,EAAW04E,EAAiB14E,GAEhC,IAAKA,EAAS/0P,OACZ,IAAK,IAAIgC,EAAI,EAAGA,GAAKixY,GAAqBA,EAAkBjzY,QAAU,GAAIgC,IAAK,CAC7E,MAAO8wY,EAAcpxY,EAAO1B,QAA0C,MAAhC0B,EAAOoxY,GAAah+I,SACxDg+I,IAGFA,EAAcpxY,EAAO1B,QAAU+0P,EAAS9yP,KAAK6wY,IAC/C,CAIFp9R,EAAKq/I,GAAU,SAAU69I,EAAc59I,GACrC,IAAIimF,EAAav5U,EAAOkxY,GAGxB,GAFAC,EAASr7S,EAASyjP,EAAY83D,GAAaj+I,EAAUE,GAE9B,MAAnBimF,EAAWx4U,MAAgBwwY,EAAmB,CAChD,IAAIE,EAAwBF,EAAkBj+I,IAC7C11P,EAAS6zY,KAA2BA,EAAwB,CAC3D1wY,KAAM0wY,IAERl4D,EAAWx4U,KAAOw4U,EAAWy3D,YAAcS,EAAsB1wY,KACjEw4U,EAAWn0F,eAAiBqsJ,EAAsBrsJ,cACpD,CAGAosJ,GAAuB17S,EAASyjP,EAAWn7D,UAAWozH,EACxD,GA9BA,CA+BF,IAaA,IAAIjlI,EAAgBptK,EAAIotK,cACpBwuB,EAAqB57L,EAAI47L,mBACzB22G,EAAiC,MAAtB32G,EACfA,EAAqBxuB,EAAgBwuB,GAAsB,EAAI,EAG/D,IAFA,IAAI1oC,EAAQka,GAAiB,QAEpB2kI,EAAe,EAAGA,EAAeN,EAAUM,IAAgB,CAC9D33D,EAAav5U,EAAOkxY,GAAgBlxY,EAAOkxY,IAAiB,IAAI9M,EAApE,IACIhxI,EAAWmmF,EAAWnmF,SAEV,MAAZA,IACFmmF,EAAWnmF,SAAWu+I,EAAQt/I,EAAOs+I,EAAiBe,GACtDn4D,EAAWjmF,cAAgB,IAEtBiZ,GAAiBwuB,GAAsB,KAC1Cw+C,EAAWpmF,cAAe,GAG5B4nC,KAGiB,MAAnBw+C,EAAWx4U,OAAiBw4U,EAAWx4U,KAAO4wY,EAAQp4D,EAAWnmF,SAAUs9I,IAEpD,MAAnBn3D,EAAWz4U,MAAiBuvY,EAAarvY,EAAQkwY,EAAc33D,EAAWx4U,QAAUuvY,EAAWsB,QAYhGr4D,EAAWpmF,cAAkD,MAAjComF,EAAWn7D,UAAUC,UAAuD,MAAnCk7D,EAAWn7D,UAAUzsB,cAC3F4nF,EAAWz4U,KAAO,UAEtB,CAEA,OAAOd,CACT,CAYA,SAAS6wY,EAAY7vY,EAAQyvY,EAAS3tH,EAAS+uH,GAG7C,IAAIjB,EAAWnuY,KAAKwI,IAAIjK,EAAO2uY,uBAAyB,EAAGc,EAAQnyY,OAAQwkR,EAAQxkR,OAAQuzY,GAAe,GAK1G,OAJA79R,EAAKy8R,GAAS,SAAUY,GACtB,IAAIE,EAAoBF,EAAWvuH,QACnCyuH,IAAsBX,EAAWnuY,KAAKwI,IAAI2lY,EAAUW,EAAkBjzY,QACxE,IACOsyY,CACT,CAEA,SAASe,EAAQ5wY,EAAMilB,EAAK0rX,GAC1B,GAAIA,GAA6B,MAAjB1rX,EAAIxmB,IAAIuB,GAAe,CACrC,IAAIT,EAAI,EAER,MAA4B,MAArB0lB,EAAIxmB,IAAIuB,EAAOT,GACpBA,IAGFS,GAAQT,CACV,CAGA,OADA0lB,EAAIlX,IAAI/N,GAAM,GACPA,CACT,CAEA,IAAIgpB,EAAWymX,EACf/yY,EAAOD,QAAUusB,C,wBC/SjB,IAAIymX,EAAqB1rX,EAAQ,OAsCjC,SAASiF,EAAS/oB,EAAQm+F,GAExB,OADAA,EAAMA,GAAO,CAAC,EACPqxS,EAAmBrxS,EAAIs4J,iBAAmB,GAAIz2P,EAAQ,CAC3D8hR,QAAS3jL,EAAIopM,kBAAoBvnS,EAAOunS,iBACxCz1C,UAAW3zJ,EAAI81L,cAAgBj0R,EAAOi0R,aACtC27G,SAAUzxS,EAAI4jL,gBACdrrB,gBAAiBv4J,EAAIu4J,gBACrB6U,cAAeptK,EAAIotK,cACnBwuB,mBAAoB57L,EAAI47L,oBAE5B,CAEAt9R,EAAOD,QAAUusB,C,iCClDjB,IAAIgmB,EAAUjrB,EAAQ,OAIlBoH,GAFU6jB,EAAQojM,QAEVruN,EAAQ,QAGhBk7F,GADe9zF,EAAMvZ,aACZuZ,EAAM8zF,QAEfhM,GADS9nF,EAAM4tW,OACR5tW,EAAM8nF,MACbp2G,EAAWsuB,EAAMtuB,SAEjBm5P,EAASjyO,EAAQ,OAEjB63P,EAAmB5lB,EAAO4lB,iBAC1Bm1H,EAAmB/6I,EAAO+6I,iBAE1B/zJ,EAAUj5N,EAAQ,OAElByqW,EAAYxxI,EAAQwxI,UAEpBzyG,EAASh4P,EAAQ,OAEjBy3P,EAAcz3P,EAAQ,OAEtB0qX,EAA4BjzH,EAAYizH,0BACxCuC,EAA2Bx1H,EAAYw1H,yBACvCv1H,EAAyBD,EAAYC,uBACrCw1H,EAA4Bz1H,EAAYy1H,0BA4B5C,SAASvM,EAAoBzkY,EAAQ6rY,GAC9B/vH,EAAOI,WAAWl8Q,KACrBA,EAAS87Q,EAAOK,mBAAmBn8Q,IAGrC1E,KAAKqnJ,QAAU3iJ,EACf,IAAIua,EAAOjf,KAAKqqK,MAAQ3lK,EAAOua,KAC3BqjQ,EAAe59Q,EAAO49Q,aAEtBA,IAAiB4wH,IACnBlzY,KAAK00D,QAAU,EACf10D,KAAK21Y,SAAWpF,EAChBvwY,KAAKqqK,MAAQprJ,GAGf,IAAIzW,EAAUotY,EAAgBtzH,IAAiBmzH,EAA2BnzH,EAAe,IAAM59Q,EAAOq3U,eAAiBz5D,GACvH5+J,EAAO1jH,KAAMwI,EACf,CAEA,IAAIqtY,EAAgB1M,EAAoB5hY,UAExCsuY,EAAc3H,MAAO,EAErB2H,EAAczH,YAAa,EAE3ByH,EAAc91J,UAAY,WACxB,OAAO//O,KAAKqnJ,OACd,EAEA,IAAIuuP,EAAkB,CACpB,iBAAoB,CAClB1H,MAAM,EACN3lX,MAAO,WACL,OAAOpiB,KAAKwI,IAAI,EAAG3O,KAAKqqK,MAAMroK,OAAShC,KAAKqnJ,QAAQzgG,WACtD,EACAooV,QAAS,SAAU7nS,GACjB,OAAOnnG,KAAKqqK,MAAMljE,EAAMnnG,KAAKqnJ,QAAQzgG,WACvC,EACA0qO,WAAYwkH,GAEd,cAAiB,CACf5H,MAAM,EACN3lX,MAAO,WACL,IAAIwgD,EAAM/oE,KAAKqqK,MAAM,GACrB,OAAOthG,EAAM5iE,KAAKwI,IAAI,EAAGo6D,EAAI/mE,OAAShC,KAAKqnJ,QAAQzgG,YAAc,CACnE,EACAooV,QAAS,SAAU7nS,GACjBA,GAAOnnG,KAAKqnJ,QAAQzgG,WAIpB,IAHA,IAAIphC,EAAO,GACPvG,EAAOjf,KAAKqqK,MAEPrmK,EAAI,EAAGA,EAAIib,EAAKjd,OAAQgC,IAAK,CACpC,IAAI+kE,EAAM9pD,EAAKjb,GACfwhB,EAAKvhB,KAAK8kE,EAAMA,EAAIo+B,GAAO,KAC7B,CAEA,OAAO3hF,CACT,EACA8rQ,WAAY,WACV,MAAM,IAAI31Q,MAAM,4DAClB,GAEF,WAAc,CACZuyX,MAAM,EACN3lX,MAAOwtX,EACP/G,QAASgH,EACT1kH,WAAYwkH,GAEd,aAAgB,CACd5H,MAAM,EACN3lX,MAAO,WACL,IAAIkuO,EAAUz2P,KAAKqnJ,QAAQ4kJ,iBAAiB,GAAGxnS,KAC3C65G,EAAMt+G,KAAKqqK,MAAMosF,GACrB,OAAOn4I,EAAMA,EAAIt8G,OAAS,CAC5B,EACAgtY,QAAS,SAAU7nS,GAIjB,IAHA,IAAI3hF,EAAO,GACPs8I,EAAO9hK,KAAKqnJ,QAAQ4kJ,iBAEfjoS,EAAI,EAAGA,EAAI89J,EAAK9/J,OAAQgC,IAAK,CACpC,IAAIs6G,EAAMt+G,KAAKqqK,MAAMvI,EAAK99J,GAAGS,MAC7B+gB,EAAKvhB,KAAKq6G,EAAMA,EAAInX,GAAO,KAC7B,CAEA,OAAO3hF,CACT,EACA8rQ,WAAY,SAAUnE,GACpB,IAAIluQ,EAAOjf,KAAKqqK,MAChB3yD,EAAKy1K,GAAS,SAAU8oH,EAAQpyY,GAG9B,IAFA,IAAIqyY,EAASj3X,EAAKpb,KAASob,EAAKpb,GAAO,IAE9BG,EAAI,EAAGA,GAAKiyY,GAAU,IAAIj0Y,OAAQgC,IACzCkyY,EAAOjyY,KAAKgyY,EAAOjyY,GAEvB,GACF,GAEF,SAAY,CACVukB,MAAOwtX,EACP/G,QAASgH,EACT1kH,WAAYwkH,GAEd,WAAc,CACZ1H,YAAY,EACZF,MAAM,EACN3lX,MAAO,WACL,OAAOvoB,KAAKqqK,MAAQrqK,KAAKqqK,MAAMroK,OAAShC,KAAK21Y,SAAW,CAC1D,EACA3G,QAAS,SAAU7nS,EAAKviG,GACtBuiG,GAAYnnG,KAAK00D,QACjB9vD,EAAMA,GAAO,GAGb,IAFA,IAAIuoB,EAASntB,KAAK21Y,SAAWxuS,EAEpBnjG,EAAI,EAAGA,EAAIhE,KAAK21Y,SAAU3xY,IACjCY,EAAIZ,GAAKhE,KAAKqqK,MAAMl9I,EAASnpB,GAG/B,OAAOY,CACT,EACA0sR,WAAY,SAAUnE,GACpBntR,KAAKqqK,MAAQ8iH,CACf,EAEAhkI,MAAO,WAELnpJ,KAAK00D,SAAW10D,KAAKuoB,QACrBvoB,KAAKqqK,MAAQ,IACf,IAIJ,SAAS0rO,IACP,OAAO/1Y,KAAKqqK,MAAMroK,MACpB,CAEA,SAASg0Y,EAAc7uS,GACrB,OAAOnnG,KAAKqqK,MAAMljE,EACpB,CAEA,SAAS2uS,EAAiB3oH,GACxB,IAAK,IAAInpR,EAAI,EAAGA,EAAImpR,EAAQnrR,OAAQgC,IAClChE,KAAKqqK,MAAMpmK,KAAKkpR,EAAQnpR,GAE5B,CAEA,IAAImyY,EAAkB,CACpBnI,UAAWoI,EACXC,WAAY,SAAUxzV,EAAUgxL,EAAW4tC,EAAUhrB,GACnD,OAAmB,MAAZgrB,EAAmB5+N,EAAS4zM,GAAW5zM,CAChD,EACAyzV,aAAcF,EACdzhU,SAAU,SAAU9xB,EAAUgxL,EAAW4tC,EAAUhrB,GAIjD,IAAI30P,EAAQu+Q,EAAiBx9N,GAC7B,OAAmB,MAAZ4+N,GAAsB3/Q,aAAiB+E,MAAiB/E,EAAM2/Q,GAAd3/Q,CACzD,EACAy0Y,WAAYH,GAGd,SAASA,EAAkBvzV,EAAUgxL,EAAW4tC,EAAUhrB,GACxD,OAAmB,MAAZgrB,EAAmB5+N,EAAS4+N,GAAY5+N,CACjD,CAEA,IAAIqmV,EAAyB,CAC3B8E,UAAWwI,EACXH,WAAY,SAAUxzV,EAAU4zM,EAAS5iB,EAAW4tC,GAClD,OAAOg1H,EAAgB5zV,EAAS4zM,GAAUz2P,KAAK0qY,gBAAgBj0I,GACjE,EACA6/I,aAAcE,EACd7hU,SAAU,SAAU9xB,EAAU4zM,EAAS5iB,EAAW4tC,GAKhD,IAAI3/Q,EAAQ+gD,IAA+B,MAAlBA,EAAS/gD,MAAgB+gD,EAAWA,EAAS/gD,OAMtE,OAJK9B,KAAKurY,SAAS2C,MAAQsH,EAAiB3yV,KAC1C7iD,KAAK2xQ,eAAgB,GAGhB8kI,EAAgB30Y,aAAiB+E,MAAQ/E,EAAM2/Q,GACpD3/Q,EAAO9B,KAAK0qY,gBAAgBj0I,GAChC,EACA8/I,WAAY,SAAU1zV,EAAU4zM,EAAS5iB,EAAW4tC,GAClD,OAAO5+N,EAAS4+N,EAClB,GAGF,SAAS+0H,EAAkB3zV,EAAU4zM,EAAS5iB,EAAW4tC,GACvD,OAAOg1H,EAAgB5zV,EAAS4+N,GAAWzhR,KAAK0qY,gBAAgBj0I,GAClE,CASA,SAASggJ,EAAgB30Y,EAAO60P,GAE9B,IAAIuxG,EAAUvxG,GAAWA,EAAQnyP,KAEjC,GAAgB,YAAZ0jW,EAAuB,CAEzB,IAAItmF,EAAcjrB,GAAWA,EAAQirB,YACrC,OAAOA,EAAcA,EAAYoxH,gBAAgBlxY,GAASA,CAC5D,CAUA,MARgB,SAAZomW,GACgB,kBAAVpmW,GAA+B,MAATA,GAA2B,MAAVA,IAC/CA,GAASmxX,EAAUnxX,IAML,MAATA,GAA2B,KAAVA,EAAe0pF,KAEpC1pF,CACL,CAgBA,SAASmhR,EAAiBhkQ,EAAM40N,EAAW5hG,GACzC,GAAKhzH,EAAL,CAKA,IAAI4jC,EAAW5jC,EAAK2kR,eAAe/vD,GAEnC,GAAgB,MAAZhxL,EAAJ,CAIA,IACI4zM,EACAgrB,EAFAa,EAAerjQ,EAAKkvX,cAAcpuJ,YAAYuiC,aAG9C3rB,EAAU13O,EAAK23O,iBAAiB3kH,GAOpC,OALI0kH,IACFF,EAAUE,EAAQlyP,KAClBg9Q,EAAW9qB,EAAQ10P,OAGdk0Y,EAAgB7zH,GAAcz/N,EAAUgxL,EAAW4tC,EAAUhrB,EAZpE,CAPA,CAoBF,CAeA,SAASo9B,EAAgB50Q,EAAM40N,EAAWh9M,GACxC,GAAK5X,EAAL,CAIA,IAAIqjQ,EAAerjQ,EAAKkvX,cAAcpuJ,YAAYuiC,aAElD,GAAIA,IAAiBpC,GAA0BoC,IAAiBozH,EAAhE,CAIA,IAAI7yV,EAAW5jC,EAAK2kR,eAAe/vD,GAMnC,OAJIyuC,IAAiBpC,GAA2B5+Q,EAASuhD,KACvDA,EAAW,MAGTA,EACKA,EAAShsB,QADlB,CARA,CANA,CAiBF,CAEA31B,EAAQioY,oBAAsBA,EAC9BjoY,EAAQgoY,uBAAyBA,EACjChoY,EAAQ+hR,iBAAmBA,EAC3B/hR,EAAQ2yR,gBAAkBA,C,iCCrW1B,IAAIjkQ,EAAQpH,EAAQ,OAEhBkvF,EAAO9nF,EAAM8nF,KACbg8M,EAAW9jS,EAAM8jS,SAyCrB,SAAShzC,EAAgB9sC,EAAaw+J,EAAmBvvS,GACvDA,EAAMA,GAAO,CAAC,EACd,IAII6zS,EACAC,EACAC,EACA5pH,EAPA6pH,EAAUh0S,EAAIg0S,QACdC,EAAwBj0S,EAAIi0S,sBAE5BC,KAAcnjK,IAAeA,EAAY1wO,IAAI,UAkCjD,GA7BAw0G,EAAK06R,GAAmB,SAAU7H,EAAetoY,GAC3CyxT,EAAS62E,KACX6H,EAAkBnwY,GAASsoY,EAAgB,CACzC9lY,KAAM8lY,IAINwM,IAAaxM,EAAc1zI,eAExBggJ,GAAYH,IAAoBnM,EAAc3oH,cACjD80H,EAAmBnM,GAIhBoM,GAAyC,YAAvBpM,EAAc/lY,MAA6C,SAAvB+lY,EAAc/lY,MAAqBsyY,GAAyBA,IAA0BvM,EAAczzI,WAC7J6/I,EAAiBpM,GAGvB,KAEIoM,GAAmBE,GAAYH,IAGjCG,GAAU,GAMRF,EAAgB,CAElBC,EAAuB,oBACvB5pH,EAAuB,oBAEnB0pH,IACFA,EAAiBjM,uBAAwB,GAG3C,IAAIuM,EAAqBL,EAAe7/I,SACpCmgJ,EAAiBN,EAAenyY,KAChC0yY,EAAuB,EAC3Bx/R,EAAK06R,GAAmB,SAAU7H,GAC5BA,EAAczzI,WAAakgJ,GAC7BE,GAEJ,IACA9E,EAAkBnuY,KAAK,CACrBQ,KAAMmyY,EACN9/I,SAAUkgJ,EACVhgJ,cAAekgJ,EACf1yY,KAAMyyY,EACNpgJ,cAAc,EACd2vH,oBAAoB,IAEtB0wB,IACA9E,EAAkBnuY,KAAK,CACrBQ,KAAMuoR,EAGNl2B,SAAUk2B,EACVh2B,cAAekgJ,EACf1yY,KAAMyyY,EACNpgJ,cAAc,EACd2vH,oBAAoB,GAExB,CAEA,MAAO,CACL2wB,iBAAkBR,GAAkBA,EAAelyY,KACnD2yY,mBAAoBV,GAAoBA,EAAiBjyY,KACzD4yY,iBAAkBR,EAClB7pH,qBAAsBA,EACtB4pH,qBAAsBA,EAE1B,CAOA,SAASrqH,EAAmBttQ,EAAMq4X,GAKhC,QAASA,GAAcA,IAAer4X,EAAKysQ,mBAAmB,mBAKhE,CAUA,SAAS+wE,EAAoBx9U,EAAMs4X,GACjC,OAAOhrH,EAAmBttQ,EAAMs4X,GAAat4X,EAAKysQ,mBAAmB,wBAA0B6rH,CACjG,CAEAr2Y,EAAQw/Q,gBAAkBA,EAC1Bx/Q,EAAQqrR,mBAAqBA,EAC7BrrR,EAAQu7V,oBAAsBA,C,iCCjK9B,IAAI7sU,EAAQpH,EAAQ,OAEhBkvF,EAAO9nF,EAAM8nF,KACby8K,EAAgBvkQ,EAAMukQ,cAGtB1gP,GAFS7jB,EAAM4tW,OAELh1W,EAAQ,QAsBlByrX,GApBUxgW,EAAQojM,QAoBCs9C,EAAc,CAAC,UAAW,QAAS,WAAY,SAAU,gBAEhF,SAASi1G,EAAoBnqX,GAC3B,IAAIu4X,EAAU,CAAC,EACXjiJ,EAASiiJ,EAAQjiJ,OAAS,CAAC,EAC3BkiJ,EAAsBtjH,IACtBujH,EAAiB,GACjBC,EAAmB,GAEnB/L,EAAa4L,EAAQ5L,WAAa,CACpC/rH,eAAgB5gQ,EAAK27I,WAAWz4J,QAChCozP,OAAQ,CAAC,GAEX79I,EAAKz4F,EAAK27I,YAAY,SAAU67F,GAC9B,IAAIspG,EAAU9gV,EAAK23O,iBAAiBH,GAChCK,EAAWipG,EAAQjpG,SAEvB,GAAIA,EAAU,CACZ,IAAIE,EAAgB+oG,EAAQ/oG,cAC5B4gJ,EAAqBriJ,EAAQuB,GAAUE,GAAiBP,EAEnDspG,EAAQlpG,eACX4gJ,EAAoBjlY,IAAIskP,EAAU,GAK9B+gJ,EAAgB93C,EAAQv7V,QAC1BkzY,EAAe,GAAKjhJ,GAKtBmhJ,EAAqBhM,EAAWr2I,OAAQuB,GAAUE,GAAiB+oG,EAAQ99V,OAGzE89V,EAAQj3G,gBACV6uJ,EAAiB1zY,KAAKwyP,EAE1B,CAEAw9I,EAAiBv8R,MAAK,SAAU1vF,EAAG2nR,GACjC,IAAImoG,EAAYF,EAAqBriJ,EAAQo6C,GACzCluB,EAAWs+E,EAAQj+E,UAAU6tB,GAEjB,MAAZluB,IAAiC,IAAbA,IACtBq2H,EAAUr2H,GAAYs+E,EAAQt7V,KAElC,GACF,IACA,IAAI+oY,EAAkB,GAClBE,EAAyB,CAAC,EAC9B+J,EAAoB//R,MAAK,SAAU1vF,EAAG8uO,GACpC,IAAIihJ,EAASxiJ,EAAOuB,GAIpB42I,EAAuB52I,GAAYihJ,EAAO,GAG1CvK,EAAkBA,EAAgBvsY,OAAO82Y,EAC3C,IACAP,EAAQhK,gBAAkBA,EAC1BgK,EAAQ9J,uBAAyBA,EACjC,IAAIsK,EAAcziJ,EAAOrmN,MAGrB8oW,GAAeA,EAAYh2Y,SAC7B01Y,EAAiBM,EAAY71Y,SAG/B,IAAI81Y,EAAgB1iJ,EAAOgxB,QAU3B,OARI0xH,GAAiBA,EAAcj2Y,OACjC21Y,EAAmBM,EAAc91Y,QACvBw1Y,EAAiB31Y,SAC3B21Y,EAAmBD,EAAev1Y,SAGpCozP,EAAOmiJ,eAAiBA,EACxBniJ,EAAOoiJ,iBAAmBA,EACnBH,CACT,CAEA,SAASI,EAAqBriJ,EAAQtjH,GAKpC,OAJKsjH,EAAOjvP,eAAe2rI,KACzBsjH,EAAOtjH,GAAO,IAGTsjH,EAAOtjH,EAChB,CAEA,SAASmuI,EAAuBjqO,GAC9B,MAAoB,aAAbA,EAA0B,UAAyB,SAAbA,EAAsB,OAAS,OAC9E,CAEA,SAAS0hW,EAAgB3vC,GAGvB,QAAqB,YAAZA,GAAqC,SAAZA,EACpC,CAcAhnW,EAAQ+yY,iBAAmBA,EAC3B/yY,EAAQkoY,oBAAsBA,EAC9BloY,EAAQk/Q,uBAAyBA,C,uBChJjC,IAAI9tC,EAAS9pN,EAAQ,OAwBjBkvF,EAAO46H,EAAO56H,KACdwgS,EAAQ,iBACRC,EAAY,oBAmBhB,SAAS/4H,EAASv8K,GAChB,IAAIi9K,EAAWj9K,EAAIi9K,SACfhqN,EAAQ+sC,EAAI/sC,MAEXA,IACHA,EAAQ,CACN88D,KAAMktJ,GAERj9K,EAAIm9K,UAAY,CACdptJ,KAAM,SAIV/vB,EAAI/sC,MAAQ+sC,EAAIi9K,SAAW,KAC3Bs4H,EAAQt4H,EAAUhqN,EAAO+sC,GAEzB6U,EAAK5hD,GAAO,SAAU72C,GACpBy4F,EAAKooK,EAASyyH,sBAAsB,SAAUx4C,GAC5C96U,EAAKikP,WAAW62F,EAAYznH,EAAOuD,MAAMwiK,EAAmBx1S,GAC9D,GACF,IAEAi9K,EAAS5c,WAAW,eAAgB5wB,EAAOuD,MAAMyiK,EAAuBz1S,IAGxE6U,EAAKooK,EAAS0yH,mBAAmB,SAAUz4C,GACzCj6E,EAAS5c,WAAW62F,EAAYznH,EAAOuD,MAAM0iK,EAAiB11S,GAChE,IAEAyvI,EAAOkrJ,OAAO1nU,EAAMgqN,EAASrnB,YAAcqnB,EAC7C,CAEA,SAASu4H,EAAkBx1S,EAAK9pB,GAC9B,GAAIy/T,EAAWx4Y,MAAO,CAEpB,IAAI81D,EAAQw8K,EAAO5uH,OAAO,CAAC,EAAG1jH,KAAKk4Y,IACnCpiV,EAAM91D,KAAKy4P,UAAY1/K,EACvBq/T,EAAQr/T,EAAKjjB,EAAO+sC,EACtB,MAEE41S,EAAW1/T,EAAK/4E,KAAKy4P,SAAUz4P,KAAKm4Y,GAAYt1S,GAGlD,OAAO9pB,CACT,CAEA,SAASw/T,EAAgB11S,EAAK9pB,GAE5B,OADA8pB,EAAIoqE,QAAUpqE,EAAIoqE,OAAOj2I,OAAOh3B,MACzB+4E,CACT,CAEA,SAASu/T,EAAsBz1S,EAAK9pB,GAQlC,OAHA2+B,EAAK3+B,EAAIm/T,IAAQ,SAAUj5X,EAAMw5O,GAC/Bx5O,IAAS85D,GAAO0/T,EAAWx5X,EAAK64Q,eAAgBr/B,EAAU1/K,EAAK8pB,EACjE,IACO9pB,CACT,CAUA,SAAS2/T,EAAcjgJ,GACrB,IAAIqnB,EAAW9/Q,KAAKm4Y,GACpB,OAAmB,MAAZ1/I,GAAgC,MAAZqnB,EAAmBA,EAAWA,EAASo4H,GAAOz/I,EAC3E,CAEA,SAAS+/I,EAAWv5X,GAClB,OAAOA,EAAKk5X,KAAel5X,CAC7B,CAEA,SAASm5X,EAAQt4H,EAAUhqN,EAAO+sC,GAChCi9K,EAASo4H,GAAS,CAAC,EACnBxgS,EAAK5hD,GAAO,SAAU72C,EAAMw5O,GAC1BggJ,EAAWx5X,EAAMw5O,EAAUqnB,EAAUj9K,EACvC,GACF,CAEA,SAAS41S,EAAWx5X,EAAMw5O,EAAUqnB,EAAUj9K,GAC5Ci9K,EAASo4H,GAAOz/I,GAAYx5O,EAC5BA,EAAKk5X,GAAar4H,EAClB7gQ,EAAKw5O,SAAWA,EAEZ51J,EAAIoqE,SACNhuJ,EAAK4jF,EAAIk9K,YAAcl9K,EAAIoqE,OAC3BpqE,EAAIoqE,OAAOpqE,EAAIm9K,UAAUvnB,IAAax5O,GAIxCA,EAAKy5X,cAAgBA,CACvB,CAEA,IAAIjrX,EAAW2xP,EACfj+Q,EAAOD,QAAUusB,C,gCClJjB,IAAIgmB,EAAUjrB,EAAQ,OAIlBiyO,GAFUhnN,EAAQojM,QAETruN,EAAQ,QAEjBm6P,EAAYloB,EAAOkoB,UACnBtC,EAAmB5lB,EAAO4lB,iBAE1BzwP,EAAQpH,EAAQ,OAEhB2rQ,EAAgBvkQ,EAAMukQ,cACtBz8K,EAAO9nF,EAAM8nF,KACbhuF,EAAMkG,EAAMlG,IACZ5iB,EAAU8oB,EAAM9oB,QAChB4sT,EAAW9jS,EAAM8jS,SACjBpyT,EAAWsuB,EAAMtuB,SACjB+U,EAAeuZ,EAAMvZ,aACrBu3X,EAAch+W,EAAMg+W,YACpBlqR,EAAS9zF,EAAM8zF,OAGf88J,GAFS5wP,EAAM4tW,OAENh1W,EAAQ,QAEjBy3P,EAAcz3P,EAAQ,OAEtB03P,EAAyBD,EAAYC,uBACrCu1H,EAA2Bx1H,EAAYw1H,yBACvCC,EAA4Bz1H,EAAYy1H,0BACxCvC,EAA8BlzH,EAAYkzH,4BAC1CF,EAAwBhzH,EAAYgzH,sBACpCC,EAA4BjzH,EAAYizH,0BACxCyF,EAAuB14H,EAAY04H,qBAqBnC3E,EAAa,CACfsB,KAAM,EAENsD,MAAO,EAEPC,IAAK,GAGHj2H,EAAQD,IAOZ,SAASk5D,EAAmBi9D,GAC1B,IAAI75X,EAAO65X,EAAa/tW,OAAOrmC,OAC3B49Q,EAAe2wH,EAEnB,GAAI58X,EAAa4I,GACfqjQ,EAAe4wH,OACV,GAAIpsY,EAAQmY,GAAO,CAEJ,IAAhBA,EAAKjd,SACPsgR,EAAemzH,GAGjB,IAAK,IAAIzxY,EAAI,EAAGwT,EAAMyH,EAAKjd,OAAQgC,EAAIwT,EAAKxT,IAAK,CAC/C,IAAIwhB,EAAOvG,EAAKjb,GAEhB,GAAY,MAARwhB,EAAJ,CAEO,GAAI1e,EAAQ0e,GAAO,CACxB88P,EAAemzH,EACf,KACF,CAAO,GAAIn0Y,EAASkkB,GAAO,CACzB88P,EAAeozH,EACf,KACF,EACF,CACF,MAAO,GAAIp0Y,EAAS2d,IAClB,IAAK,IAAIpb,KAAOob,EACd,GAAIA,EAAK3Y,eAAezC,IAAQ+pY,EAAY3uX,EAAKpb,IAAO,CACtDy+Q,EAAe6wH,EACf,KACF,OAEG,GAAY,MAARl0X,EACT,MAAM,IAAItD,MAAM,gBAGlBinQ,EAAMk2H,GAAcx2H,aAAeA,CACrC,CA0BA,SAASviC,EAAUnM,GACjB,OAAOgvC,EAAMhvC,GAAalvO,MAC5B,CAOA,SAASq0Y,EAAqBrmK,GAE5BkwC,EAAMlwC,GAASsmK,WAAa7kH,GAC9B,CAmBA,SAAS8kH,EAAcrlK,GACrB,IAAI0rE,EAAe1rE,EAAY7oM,OAC3B9rB,EAAOqgS,EAAargS,KACpBqjQ,EAAejsQ,EAAa4I,GAAQi0X,EAA4BhzH,EAChEkzH,GAAc,EACdr3D,EAAiBz8B,EAAay8B,eAC9BC,EAAe18B,EAAa08B,aAC5B/vC,EAAmBqT,EAAa1kJ,WAChCk+O,EAAeI,EAAgBtlK,GAEnC,GAAIklK,EAAc,CAChB,IAAIK,EAAgBL,EAAa/tW,OACjC9rB,EAAOk6X,EAAcz0Y,OACrB49Q,EAAeM,EAAMk2H,GAAcx2H,aACnC8wH,GAAc,EAEdr3D,EAAiBA,GAAkBo9D,EAAcp9D,eACjC,MAAhBC,IAAyBA,EAAem9D,EAAcn9D,cACtD/vC,EAAmBA,GAAoBktG,EAAcv+O,UACvD,CAEA,IAAIw+O,EAAiBC,EAAqBp6X,EAAMqjQ,EAAcy5D,EAAgBC,EAAc/vC,GAC5FrpB,EAAMhvC,GAAalvO,OAAS,IAAI87Q,EAAO,CACrCvhQ,KAAMA,EACNm0X,YAAaA,EACbr3D,eAAgBA,EAChBz5D,aAAcA,EACd2pB,iBAAkBmtG,EAAentG,iBACjCrlP,WAAYwyV,EAAexyV,WAC3BysV,sBAAuB+F,EAAe/F,sBAEtC16G,aAAc2mB,EAAa/pD,QAE/B,CAGA,SAAS8jJ,EAAqBp6X,EAAMqjQ,EAAcy5D,EAAgBC,EAAc/vC,GAC9E,IAAKhtR,EACH,MAAO,CACLgtR,iBAAkBqtG,EAA0BrtG,IAIhD,IAAIonG,EACAzsV,EAEJ,GAAI07N,IAAiBmzH,EAKE,SAAjBz5D,GAA2C,MAAhBA,EAC7Bu9D,GAAqB,SAAUvqY,GAElB,MAAPA,GAAuB,MAARA,IACb0kT,EAAS1kT,GACG,MAAd43C,IAAuBA,EAAa,GAEpCA,EAAa,EAInB,GAAGm1R,EAAgB98T,EAAM,IAEzB2nC,EAAao1R,EAAe,EAAI,EAG7B/vC,GAAmC,IAAfrlP,IACvBqlP,EAAmB,GACnBstG,GAAqB,SAAUvqY,EAAK/M,GAClCgqS,EAAiBhqS,GAAgB,MAAP+M,EAAcA,EAAM,EAChD,GAAG+sU,EAAgB98T,IAGrBo0X,EAAwBpnG,EAAmBA,EAAiBjqS,OAAS+5U,IAAmB48D,EAAuB15X,EAAKjd,OAASid,EAAK,GAAKA,EAAK,GAAGjd,OAAS,UACnJ,GAAIsgR,IAAiBozH,EACrBzpG,IACHA,EAAmButG,EAA4Bv6X,SAE5C,GAAIqjQ,IAAiB6wH,EACrBlnG,IACHA,EAAmB,GACnBv0L,EAAKz4F,GAAM,SAAUw6X,EAAQ51Y,GAC3BooS,EAAiBhoS,KAAKJ,EACxB,UAEG,GAAIy+Q,IAAiBpC,EAAwB,CAClD,IAAIw5H,EAASr5H,EAAiBphQ,EAAK,IACnCo0X,EAAwBvsY,EAAQ4yY,IAAWA,EAAO13Y,QAAU,CAC9D,CAEA,MAAO,CACL4kD,WAAYA,EACZqlP,iBAAkBqtG,EAA0BrtG,GAC5ConG,sBAAuBA,EAE3B,CAKA,SAASiG,EAA0BrtG,GACjC,GAAKA,EAAL,CAKA,IAAIzX,EAAUL,IACd,OAAOzqQ,EAAIuiR,GAAkB,SAAUzmR,EAAMvjB,GAO3C,GANAujB,EAAOk+F,EAAO,CAAC,EAAGpiH,EAASkkB,GAAQA,EAAO,CACxC/gB,KAAM+gB,IAKS,MAAbA,EAAK/gB,KACP,OAAO+gB,EAITA,EAAK/gB,MAAQ,GAMW,MAApB+gB,EAAKkvX,cACPlvX,EAAKkvX,YAAclvX,EAAK/gB,MAG1B,IAAI65U,EAAQ9pD,EAAQtxR,IAAIsiB,EAAK/gB,MAU7B,OARK65U,EAKH94T,EAAK/gB,MAAQ,IAAM65U,EAAM/1T,QAJzBisQ,EAAQhiR,IAAIgT,EAAK/gB,KAAM,CACrB8jB,MAAO,IAMJ/C,CACT,GApCA,CAqCF,CAEA,SAAS+zX,EAAqB5gU,EAAIojQ,EAAgB98T,EAAM06X,GAGtD,GAFW,MAAXA,IAAoBA,EAAU9mT,KAE1BkpP,IAAmB48D,EACrB,IAAK,IAAI30Y,EAAI,EAAGA,EAAIib,EAAKjd,QAAUgC,EAAI21Y,EAAS31Y,IAC9C20E,EAAG15D,EAAKjb,GAAKib,EAAKjb,GAAG,GAAK,KAAMA,OAGlC,KAAI01Y,EAASz6X,EAAK,IAAM,GAExB,IAASjb,EAAI,EAAGA,EAAI01Y,EAAO13Y,QAAUgC,EAAI21Y,EAAS31Y,IAChD20E,EAAG+gU,EAAO11Y,GAAIA,EAHU,CAM9B,CAEA,SAASw1Y,EAA4Bv6X,GACnC,IACIO,EADAo6X,EAAa,EAGjB,MAAOA,EAAa36X,EAAKjd,UAAYwd,EAAMP,EAAK26X,OAGhD,GAAIp6X,EAAK,CACP,IAAIo7I,EAAa,GAIjB,OAHAljD,EAAKl4F,GAAK,SAAU1d,EAAO+B,GACzB+2J,EAAW32J,KAAKJ,EAClB,IACO+2J,CACT,CACF,CAqBA,SAAS+lH,EAAgCxlB,EAAiBvnB,EAAalvO,GACrE,IAAI6wP,EAAS,CAAC,EACVujJ,EAAeI,EAAgBtlK,GAEnC,IAAKklK,IAAiB39I,EACpB,OAAO5F,EAGT,IAKIskJ,EACAC,EANAC,EAAiB,GACjBC,EAAmB,GACnBtnK,EAAUkB,EAAYlB,QACtBsmK,EAAap2H,EAAMlwC,GAASsmK,WAC5Bn1Y,EAAMi1Y,EAAajrY,IAAM,IAAMnJ,EAAOq3U,eAG1C5gF,EAAkBA,EAAgBh5P,QAClCu1G,EAAKyjJ,GAAiB,SAAU8+I,EAAcC,IAC3C54Y,EAAS24Y,KAAkB9+I,EAAgB++I,GAAe,CACzDz1Y,KAAMw1Y,IAGkB,YAAtBA,EAAaz1Y,MAA8C,MAAxBq1Y,IACrCA,EAAuBK,EACvBJ,EAA2BK,EAA0Bh/I,EAAgB++I,KAGvE3kJ,EAAO0kJ,EAAax1Y,MAAQ,EAC9B,IACA,IAAI21Y,EAAgBpB,EAAW91Y,IAAIW,IAAQm1Y,EAAWxmY,IAAI3O,EAAK,CAC7Dw2Y,eAAgBP,EAChBQ,YAAa,IA+Bf,SAASC,EAAQC,EAAWC,EAASC,GACnC,IAAK,IAAI12Y,EAAI,EAAGA,EAAI02Y,EAAU12Y,IAC5Bw2Y,EAAUv2Y,KAAKw2Y,EAAUz2Y,EAE7B,CAEA,SAASm2Y,EAA0BF,GACjC,IAAIzzH,EAAUyzH,EAAazzH,QAC3B,OAAOA,EAAUA,EAAQxkR,OAAS,CACpC,CAIA,OAxCA01G,EAAKyjJ,GAAiB,SAAU8+I,EAAcC,GAC5C,IAAIS,EAAeV,EAAax1Y,KAC5B8jB,EAAQ4xX,EAA0BF,GAEtC,GAA4B,MAAxBJ,EAA8B,CAChC,IAAIn7V,EAAQ07V,EAAcE,YAC1BC,EAAQhlJ,EAAOolJ,GAAej8V,EAAOn2B,GACrCgyX,EAAQP,EAAkBt7V,EAAOn2B,GACjC6xX,EAAcE,aAAe/xX,CAM/B,MACK,GAAIsxX,IAAyBK,EAC9BK,EAAQhlJ,EAAOolJ,GAAe,EAAGpyX,GACjCgyX,EAAQR,EAAgB,EAAGxxX,OAExB,CACGm2B,EAAQ07V,EAAcC,eAC1BE,EAAQhlJ,EAAOolJ,GAAej8V,EAAOn2B,GACrCgyX,EAAQP,EAAkBt7V,EAAOn2B,GACjC6xX,EAAcC,gBAAkB9xX,CAClC,CACN,IAaAwxX,EAAe/3Y,SAAWuzP,EAAOwsB,SAAWg4H,GAC5CC,EAAiBh4Y,SAAWuzP,EAAOF,WAAa2kJ,GACzCzkJ,CACT,CAUA,SAASqF,EAA6BhnB,EAAalvO,EAAQ4vY,GACzD,IAAI/+I,EAAS,CAAC,EACVujJ,EAAeI,EAAgBtlK,GAEnC,IAAKklK,EACH,OAAOvjJ,EAGT,IAEIqlJ,EAFAt4H,EAAe59Q,EAAO49Q,aACtB2pB,EAAmBvnS,EAAOunS,iBAG1B3pB,IAAiBozH,GAA6BpzH,IAAiB6wH,GACjEz7R,EAAKu0L,GAAkB,SAAUh6J,EAAK9qC,GACK,UAApC7lG,EAAS2wI,GAAOA,EAAIxtI,KAAOwtI,KAC9B2oQ,EAAwBzzS,EAE5B,IAIF,IAAI0zS,EAAY,WAKd,IAJA,IAAIC,EAAU,CAAC,EACXC,EAAU,CAAC,EACXC,EAAe,GAEVh3Y,EAAI,EAAGwT,EAAMrR,KAAKyI,IAAI,EAAG0lY,GAAWtwY,EAAIwT,EAAKxT,IAAK,CACzD,IAAIi3Y,EAAcC,EAAex2Y,EAAOua,KAAMqjQ,EAAc59Q,EAAOq3U,eAAgB9vC,EAAkBvnS,EAAOkiD,WAAY5iD,GACxHg3Y,EAAa/2Y,KAAKg3Y,GAClB,IAAIE,EAAeF,IAAgBjH,EAAW6E,IAY9C,GARIsC,GAA6B,MAAbL,EAAQ9yX,GAAahkB,IAAM42Y,IAC7CE,EAAQ9yX,EAAIhkB,IAGG,MAAb82Y,EAAQ/6X,GAAa+6X,EAAQ/6X,IAAM+6X,EAAQ9yX,IAAMmzX,GAAgBH,EAAaF,EAAQ/6X,KAAOi0X,EAAW6E,OAC1GiC,EAAQ/6X,EAAI/b,GAGVo3Y,EAAUN,IAAYE,EAAaF,EAAQ/6X,KAAOi0X,EAAW6E,IAC/D,OAAOiC,EASJK,IACCF,IAAgBjH,EAAW4E,OAAsB,MAAbmC,EAAQ/yX,GAAahkB,IAAM42Y,IACjEG,EAAQ/yX,EAAIhkB,GAGG,MAAb+2Y,EAAQh7X,GAAag7X,EAAQh7X,IAAMg7X,EAAQ/yX,IAC7C+yX,EAAQh7X,EAAI/b,GAGlB,CAEA,SAASo3Y,EAAUP,GACjB,OAAsB,MAAfA,EAAU7yX,GAA4B,MAAf6yX,EAAU96X,CAC1C,CAEA,OAAOq7X,EAAUN,GAAWA,EAAUM,EAAUL,GAAWA,EAAU,IACvE,CA9CgB,GAgDhB,GAAIF,EAAW,CACbtlJ,EAAOzzP,MAAQ+4Y,EAAU7yX,EAEzB,IAAIqzX,EAAwC,MAAzBT,EAAgCA,EAAwBC,EAAU96X,EAGrFw1O,EAAOwsB,SAAW,CAACs5H,GACnB9lJ,EAAOF,WAAa,CAACgmJ,EACvB,CAEA,OAAO9lJ,CACT,CAMA,SAAS2jJ,EAAgBtlK,GACvB,IAAI7oM,EAAS6oM,EAAY7oM,OAMrBuwW,EAAWvwW,EAAO9rB,KAEtB,IAAKq8X,EACH,OAAO1nK,EAAYlB,QAAQizC,aAAa,UAAW56O,EAAOwwW,cAAgB,EAE9E,CAYA,SAASxH,EAAarvY,EAAQ+8Q,GAC5B,OAAOy5H,EAAex2Y,EAAOua,KAAMva,EAAO49Q,aAAc59Q,EAAOq3U,eAAgBr3U,EAAOunS,iBAAkBvnS,EAAOkiD,WAAY66N,EAC7H,CAIA,SAASy5H,EAAej8X,EAAMqjQ,EAAcy5D,EAAgB9vC,EAAkBrlP,EAAY66N,GACxF,IAAI/9Q,EAUA+yP,EACAyxG,EATAyxC,EAAU,EAEd,GAAItjY,EAAa4I,GACf,OAAO+0X,EAAW6E,IAQpB,GAAI5sG,EAAkB,CACpB,IAAIuoG,EAAavoG,EAAiBxqB,GAE9BngR,EAASkzY,IACX/9I,EAAU+9I,EAAW/vY,KACrByjW,EAAUssC,EAAWhwY,MACZkvT,EAAS8gF,KAClB/9I,EAAU+9I,EAEd,CAEA,GAAe,MAAXtsC,EACF,MAAmB,YAAZA,EAAwB8rC,EAAWsB,KAAOtB,EAAW6E,IAG9D,GAAIv2H,IAAiBmzH,EACnB,GAAI15D,IAAmB48D,GAGrB,IAFA,IAAI7rT,EAAS7tE,EAAKwiQ,GAETz9Q,EAAI,EAAGA,GAAK8oF,GAAU,IAAI9qF,QAAUgC,EAAI21Y,EAAS31Y,IACxD,GAAsD,OAAjDN,EAAS83Y,EAAY1uT,EAAOlmC,EAAa5iD,KAC5C,OAAON,OAIX,IAASM,EAAI,EAAGA,EAAIib,EAAKjd,QAAUgC,EAAI21Y,EAAS31Y,IAAK,CACnD,IAAI+kE,EAAM9pD,EAAK2nC,EAAa5iD,GAE5B,GAAI+kE,GAAgD,OAAxCrlE,EAAS83Y,EAAYzyU,EAAI04M,KACnC,OAAO/9Q,CAEX,MAEG,GAAI4+Q,IAAiBozH,EAA2B,CACrD,IAAKj/I,EACH,OAAOu9I,EAAW6E,IAGpB,IAAS70Y,EAAI,EAAGA,EAAIib,EAAKjd,QAAUgC,EAAI21Y,EAAS31Y,IAAK,CACnD,IAAIwhB,EAAOvG,EAAKjb,GAEhB,GAAIwhB,GAAiD,OAAxC9hB,EAAS83Y,EAAYh2X,EAAKixO,KACrC,OAAO/yP,CAEX,CACF,MAAO,GAAI4+Q,IAAiB6wH,EAA6B,CACvD,IAAK18I,EACH,OAAOu9I,EAAW6E,IAGhB/rT,EAAS7tE,EAAKw3O,GAElB,IAAK3pK,GAAUz2E,EAAay2E,GAC1B,OAAOknT,EAAW6E,IAGpB,IAAS70Y,EAAI,EAAGA,EAAI8oF,EAAO9qF,QAAUgC,EAAI21Y,EAAS31Y,IAChD,GAAyC,OAApCN,EAAS83Y,EAAY1uT,EAAO9oF,KAC/B,OAAON,CAGb,MAAO,GAAI4+Q,IAAiBpC,EAC1B,IAASl8Q,EAAI,EAAGA,EAAIib,EAAKjd,QAAUgC,EAAI21Y,EAAS31Y,IAAK,CAC/CwhB,EAAOvG,EAAKjb,GAAhB,IACIgL,EAAMqxQ,EAAiB76P,GAE3B,IAAK1e,EAAQkI,GACX,OAAOglY,EAAW6E,IAGpB,GAA6C,OAAxCn1Y,EAAS83Y,EAAYxsY,EAAIyyQ,KAC5B,OAAO/9Q,CAEX,CAGF,SAAS83Y,EAAYxsY,GACnB,IAAIysY,EAAQ/nF,EAAS1kT,GAGrB,OAAW,MAAPA,GAAe43E,SAAS53E,IAAgB,KAARA,EAC3BysY,EAAQzH,EAAW4E,MAAQ5E,EAAW6E,IACpC4C,GAAiB,MAARzsY,EACXglY,EAAWsB,UADb,CAGT,CAEA,OAAOtB,EAAW6E,GACpB,CAEA33Y,EAAQ8yY,WAAaA,EACrB9yY,EAAQ26U,mBAAqBA,EAC7B36U,EAAQ6+O,UAAYA,EACpB7+O,EAAQ63Y,qBAAuBA,EAC/B73Y,EAAQ+3Y,cAAgBA,EACxB/3Y,EAAQy/Q,gCAAkCA,EAC1Cz/Q,EAAQ05P,6BAA+BA,EACvC15P,EAAQ6yY,aAAeA,C,sBC1oBvB,IAAI7zH,EAAyB,WACzBu1H,EAA2B,YAC3BC,EAA4B,aAC5BvC,EAA8B,eAC9BF,EAAwB,UAExBC,EAA4B,aAC5Bp3D,EAA0B,SAC1B68D,EAAuB,MAC3Bz3Y,EAAQg/Q,uBAAyBA,EACjCh/Q,EAAQu0Y,yBAA2BA,EACnCv0Y,EAAQw0Y,0BAA4BA,EACpCx0Y,EAAQiyY,4BAA8BA,EACtCjyY,EAAQ+xY,sBAAwBA,EAChC/xY,EAAQgyY,0BAA4BA,EACpChyY,EAAQ46U,wBAA0BA,EAClC56U,EAAQy3Y,qBAAuBA,C,iCCnC/B,IAAIllW,EAAUjrB,EAAQ,OAIlBkzX,GAFUjoW,EAAQojM,QAERruN,EAAQ,QAElB8pN,EAAS9pN,EAAQ,OAEjBmzX,EAAYnzX,EAAQ,MAEpB+mS,EAAM/mS,EAAQ,OAEdozX,EAAUpzX,EAAQ,OAElB23T,EAAW33T,EAAQ,OAEnBqzX,EAAcrzX,EAAQ,OAEtByqN,EAAezqN,EAAQ,OAEvBgqN,EAA0BhqN,EAAQ,OAElCszX,EAAgBtzX,EAAQ,OAExBirQ,EAAiBjrQ,EAAQ,OAEzBuzX,EAAYvzX,EAAQ,MAEpBozT,EAAiBpzT,EAAQ,OAEzBo3N,EAAcp3N,EAAQ,OAEtBsoT,EAAgBtoT,EAAQ,OAExBygO,EAAYzgO,EAAQ,OAEpBsuN,EAAUtuN,EAAQ,OAElB6+P,EAAY7+P,EAAQ,OAEpB6uN,EAAY7uN,EAAQ,OAEpBwvE,EAAWq/I,EAAUr/I,SAErBgkT,EAAcxzX,EAAQ,OAEtByzX,EAAOzzX,EAAQ,OAEf0zX,EAAiB1zX,EAAQ,OAEzB2zX,EAAY3zX,EAAQ,OAEpB4zX,EAAa5zX,EAAQ,OAErB6zX,EAAY7zX,EAAQ,MAExBA,EAAQ,OAER,IAAImzW,EAAiBnzW,EAAQ,OAoBzBg1W,EAASlrJ,EAAOkrJ,OAChB9lR,EAAO46H,EAAO56H,KACdi8M,EAAarhF,EAAOqhF,WACpBryT,EAAWgxO,EAAOhxO,SAClBg7Y,EAAiB1gE,EAAe0gE,eAChCj6Y,EAAU,QACV6zO,EAAe,CACjBwlK,QAAS,SAEPa,EAAyB,EACzBC,EAA4B,IAC5BC,EAAmC,IACnCC,EAA+B,IAC/BC,EAA+B,IAC/BC,EAAyB,IACzBC,EAAqC,KACrCC,EAAyB,IACzBC,EAAwB,IACxBC,EAAoC,KACpCC,EAA4B,IAG5BC,EAAwB,IACxBxnK,EAAW,CACbixC,UAAW,CACTliI,OAAQ+3P,EACRlrD,cAAemrD,EACf71H,UAAW+1H,GAEbhnK,OAAQ,CACNC,OAAQgnK,EACR9mK,mBAAoB+mK,EACpBrgY,OAAQsgY,EACRK,MAAOJ,EACPh7I,kBAAmBi7I,EACnBz0B,UAAW00B,EACX35E,MAAO45E,IAQPE,EAAkB,sBAClBC,EAAiB,kBACjBC,EAAa,kBAEjB,SAASC,GAAqCngY,EAAQogY,GACpD,OAAO,SAAU5oO,EAAWnzJ,EAAS1hB,GAC9By9Y,IAAkBx9Y,KAAKy9Y,WAM5B7oO,EAAYA,GAAaA,EAAUt1J,cACnC6gU,EAAS54U,UAAU6V,GAAQ/c,KAAKL,KAAM40K,EAAWnzJ,EAAS1hB,IANxD29Y,GAAgB19Y,KAAKwJ,GAOzB,CACF,CAMA,SAASm0Y,KACPx9D,EAAS9/U,KAAKL,KAChB,CAUA,SAAS49Y,GAAQhzW,EAAKizW,EAAO15S,GAC3BA,EAAOA,GAAQ,CAAC,EAEK,kBAAV05S,IACTA,EAAQC,GAAaD,IAOvB79Y,KAAKwJ,GAMLxJ,KAAKk7C,MAMLl7C,KAAK6tW,KAAOjjU,EACZ,IAAImzW,EAAkB,SAMlB5rH,EAAKnyR,KAAKghV,IAAM06D,EAAQhkV,KAAK9sB,EAAK,CACpC2sB,SAAU4sC,EAAK5sC,UAAYwmV,EAC3BpgU,iBAAkBwmB,EAAKxmB,iBACvBn1C,MAAO27D,EAAK37D,MACZC,OAAQ07D,EAAK17D,SAQfzoC,KAAKg+Y,kBAAoBhmT,EAASs6I,EAAOv1N,KAAKo1Q,EAAG8uB,MAAO9uB,GAAK,IACzD0rH,EAAQvrK,EAAOh+M,MAAMupX,GACzBA,GAASpqH,EAAeoqH,GAAO,GAM/B79Y,KAAKi+Y,OAASJ,EAMd79Y,KAAKk+Y,aAAe,GAMpBl+Y,KAAKm+Y,WAAa,CAAC,EAMnBn+Y,KAAKo+Y,iBAAmB,GAMxBp+Y,KAAKq+Y,eAAiB,CAAC,EAMvBr+Y,KAAKs+Y,aAAe,IAAI9rK,EAMxB,IAAI7nI,EAAM3qG,KAAKqmT,KAAOlsM,GAAmBn6G,MAEzC,SAASu+Y,EAAiB57Y,EAAGC,GAC3B,OAAOD,EAAE67Y,OAAS57Y,EAAE47Y,MACtB,CAEA5C,EAAQ6C,GAAaF,GACrB3C,EAAQ8C,GAAoBH,GAK5Bv+Y,KAAK2+Y,WAAa,IAAIxC,EAAUn8Y,KAAM2qG,EAAK+zS,GAAoBD,IAC/Dt+D,EAAS9/U,KAAKL,KAAMA,KAAK4+Y,kBAAoB,IAAIC,IAMjD7+Y,KAAK8+Y,eAAiB,IAAInB,GAE1B39Y,KAAK2mS,cAGL3mS,KAAK6rC,OAASymM,EAAOv1N,KAAK/c,KAAK6rC,OAAQ7rC,MAEvCA,KAAK++Y,gBAAkB,GACvB5sH,EAAGnhQ,UAAUyyC,GAAG,QAASzjE,KAAKg/Y,SAAUh/Y,MACxCi/Y,GAAkB9sH,EAAInyR,MAEtBsyO,EAAO4sK,eAAel/Y,KACxB,CA7HA29Y,GAAcp2Y,UAAUk8D,GAAK85U,GAAqC,MAAM,GACxEI,GAAcp2Y,UAAUy0E,IAAMuhU,GAAqC,OAAO,GAC1EI,GAAcp2Y,UAAUm0E,IAAM6hU,GAAqC,OAAO,GAC1EjrK,EAAO0W,MAAM20J,GAAex9D,GA4H5B,IAAIg/D,GAAevB,GAAQr2Y,UA0Z3B,SAAS63Y,GAAerlD,EAAYvuC,EAAQ1pT,GAC1C,GAAI9B,KAAKy9Y,UACPC,GAAgB19Y,KAAKwJ,QADvB,CAKA,IAII9F,EAJAgvO,EAAU1yO,KAAKy6P,OAEfgoI,EAAeziY,KAAKs+Y,aAAaxrK,uBAGrC04E,EAASnkC,EAAUsgE,YAAYj1G,EAAS84E,GAExC,IAAK,IAAIxnT,EAAI,EAAGA,EAAIy+X,EAAazgY,OAAQgC,IAAK,CAC5C,IAAI6uO,EAAW4vJ,EAAaz+X,GAE5B,GAAI6uO,EAASknH,IAA0E,OAA1Dr2V,EAASmvO,EAASknH,GAAYrnH,EAAS84E,EAAQ1pT,IAC1E,OAAO4B,CAEX,CAfA,CAgBF,CA5aAy7Y,GAAaH,SAAW,WACtB,IAAIh/Y,KAAKy9Y,UAAT,CAIA,IAAIn8X,EAAYthB,KAAK2+Y,WAErB,GAAI3+Y,KAAKq9Y,GAAiB,CACxB,IAAIluP,EAASnvJ,KAAKq9Y,GAAgBluP,OAClCnvJ,KAAKo9Y,IAAmB,EACxBiC,GAAQr/Y,MACRs/Y,GAActoX,OAAO32B,KAAKL,MAC1BA,KAAKo9Y,IAAmB,EACxBp9Y,KAAKq9Y,IAAkB,EACvBkC,GAAoBl/Y,KAAKL,KAAMmvJ,GAC/BqwP,GAAoBn/Y,KAAKL,KAAMmvJ,EACjC,MACK,GAAI7tI,EAAUm+X,WAAY,CAE3B,IAAIC,EAAanD,EACb7pK,EAAU1yO,KAAKy6P,OACf9vJ,EAAM3qG,KAAKqmT,KACf/kS,EAAUm+X,YAAa,EAEvB,EAAG,CACD,IAAIh3S,GAAa,IAAIp0E,KACrB/S,EAAUq+X,mBAAmBjtK,GAE7BpxN,EAAUs+X,0BAA0BltK,GACpCmtK,GAAkB7/Y,KAAM0yO,GAOxBpxN,EAAUw+X,mBAAmBptK,GAC7BqpH,GAAa/7V,KAAMA,KAAKy6P,OAAQ9vJ,EAAK,UACrC+0S,IAAe,IAAIrrX,KAASo0E,CAC9B,OAASi3S,EAAa,GAAKp+X,EAAUm+X,YAGhCn+X,EAAUm+X,YACbz/Y,KAAKghV,IAAI//B,OAIb,CA5CF,CA6CF,EAMAk+F,GAAa1wC,OAAS,WACpB,OAAOzuW,KAAK6tW,IACd,EAMAsxC,GAAapqJ,MAAQ,WACnB,OAAO/0P,KAAKghV,GACd,EAiBAm+D,GAAan0W,UAAY,SAAUD,EAAQ8sN,EAAUkoJ,GACnD,GAAI//Y,KAAKy9Y,UACPC,GAAgB19Y,KAAKwJ,QADvB,CAKA,IAAI2lJ,EAUJ,GARI7tJ,EAASu2P,KACXkoJ,EAAaloJ,EAASkoJ,WACtB5wP,EAAS0oG,EAAS1oG,OAClB0oG,EAAWA,EAASA,UAGtB73P,KAAKo9Y,IAAmB,GAEnBp9Y,KAAKy6P,QAAU5C,EAAU,CAC5B,IAAImoJ,EAAgB,IAAIlE,EAAc97Y,KAAKqmT,MACvCw3F,EAAQ79Y,KAAKi+Y,OACbvrK,EAAU1yO,KAAKy6P,OAAS,IAAIohJ,EAChCnpK,EAAQpxN,UAAYthB,KAAK2+Y,WACzBjsK,EAAQh7K,KAAK,KAAM,KAAMmmV,EAAOmC,EAClC,CAEAhgZ,KAAKy6P,OAAOzvN,UAAUD,EAAQk1W,IAE1BF,GACF//Y,KAAKq9Y,GAAkB,CACrBluP,OAAQA,GAEVnvJ,KAAKo9Y,IAAmB,IAExBiC,GAAQr/Y,MACRs/Y,GAActoX,OAAO32B,KAAKL,MAG1BA,KAAKghV,IAAI//B,QAETjhT,KAAKq9Y,IAAkB,EACvBr9Y,KAAKo9Y,IAAmB,EACxBmC,GAAoBl/Y,KAAKL,KAAMmvJ,GAC/BqwP,GAAoBn/Y,KAAKL,KAAMmvJ,GArCjC,CAuCF,EAMAgwP,GAAae,SAAW,WACtB7yX,QAAQxW,MAAM,kDAChB,EAMAsoY,GAAa3lK,SAAW,WACtB,OAAOx5O,KAAKy6P,MACd,EAMA0kJ,GAAarwC,UAAY,WACvB,OAAO9uW,KAAKy6P,QAAUz6P,KAAKy6P,OAAOq0G,WACpC,EAMAqwC,GAAa98J,SAAW,WACtB,OAAOriP,KAAKghV,IAAI3+F,UAClB,EAMA88J,GAAa78J,UAAY,WACvB,OAAOtiP,KAAKghV,IAAI1+F,WAClB,EAMA68J,GAAanqJ,oBAAsB,WACjC,OAAOh1P,KAAKghV,IAAI3uD,QAAQ8tH,KAAOj6Y,OAAOy3E,kBAAoB,CAC5D,EASAwhU,GAAaiB,kBAAoB,SAAUj8S,GACzC,GAAKorN,EAAIsf,gBAAT,CAIA1qO,EAAOA,GAAQ,CAAC,EAChBA,EAAK3mB,WAAa2mB,EAAK3mB,YAAc,EACrC2mB,EAAKvqC,gBAAkBuqC,EAAKvqC,iBAAmB55D,KAAKy6P,OAAOv3P,IAAI,mBAC/D,IAAIivR,EAAKnyR,KAAKghV,IAOd,OAAO7uD,EAAGE,QAAQ+tH,kBAAkBj8S,EAZpC,CAaF,EAOAg7S,GAAakB,cAAgB,WAC3B,GAAK9wF,EAAI+wF,aAAT,CAIA,IAAInuH,EAAKnyR,KAAKghV,IACV/pU,EAAOk7Q,EAAGooB,QAAQu7C,iBAKtB,OAHAxjH,EAAO56H,KAAKzgG,GAAM,SAAUrV,GAC1BA,EAAGuoE,eAAc,EACnB,IACOgoN,EAAGE,QAAQxvM,WARlB,CASF,EAWAs8T,GAAaoB,WAAa,SAAUp8S,GAClC,IAAInkG,KAAKy9Y,UAAT,CAKAt5S,EAAOA,GAAQ,CAAC,EAChB,IAAI4tQ,EAAoB5tQ,EAAK4tQ,kBACzBr/H,EAAU1yO,KAAKy6P,OACf+lJ,EAAyB,GACzBp6Y,EAAOpG,KACX03G,EAAKq6P,GAAmB,SAAU79H,GAChCxB,EAAQe,cAAc,CACpBC,SAAUQ,IACT,SAAU/7K,GACX,IAAIs8K,EAAOruO,EAAKi4Y,eAAelmV,EAAUsoV,UAEpChsK,EAAKv5L,MAAM84M,SACdwsJ,EAAuBv8Y,KAAKwwO,GAC5BA,EAAKv5L,MAAM84M,QAAS,EAExB,GACF,IACA,IAAIhwL,EAAqC,QAA/BhkE,KAAKghV,IAAI3uD,QAAQj6M,UAAsBp4E,KAAKqgZ,gBAAkBrgZ,KAAKogZ,kBAAkBj8S,GAAMthB,UAAU,UAAYshB,GAAQA,EAAK3/F,MAAQ,QAIhJ,OAHAkzG,EAAK8oS,GAAwB,SAAU/rK,GACrCA,EAAKv5L,MAAM84M,QAAS,CACtB,IACOhwL,CAvBP,CAFE05U,GAAgB19Y,KAAKwJ,GA0BzB,EAUA21Y,GAAantC,oBAAsB,SAAU7tQ,GAC3C,GAAInkG,KAAKy9Y,UACPC,GAAgB19Y,KAAKwJ,SAIvB,GAAK+lT,EAAIsf,gBAAT,CAIA,IAAIz8C,EAAsB,QAAdjuL,EAAK3/F,KACbk8Y,EAAU1gZ,KAAKk7C,MACfygM,EAAUx1O,KAAKyI,IACf8sO,EAAUv1O,KAAKwI,IACf0sX,EAAaxoS,IAEjB,GAAI8tT,GAAgBD,GAAU,CAC5B,IAAIrwW,EAAOgrV,EACP9qV,EAAM8qV,EACN/qV,GAAS+qV,EACT7qV,GAAU6qV,EACVulB,EAAa,GACbT,EAAMh8S,GAAQA,EAAK3mB,YAAc,EACrC80J,EAAO56H,KAAKmpS,IAAW,SAAU50W,EAAOziC,GACtC,GAAIyiC,EAAMiP,QAAUwlW,EAAS,CAC3B,IAAItwX,EAASgiQ,EAAQnmP,EAAM8oN,QAAQs9B,QAAQyuH,YAAY1lT,UAAYnvD,EAAMm0W,kBAAkB9tK,EAAOh+M,MAAM6vE,IACpG0+N,EAAe52R,EAAMwiU,SAASvtQ,wBAClC7wD,EAAOsrM,EAAQknF,EAAaxyR,KAAMA,GAClCE,EAAMorM,EAAQknF,EAAatyR,IAAKA,GAChCD,EAAQorM,EAAQmnF,EAAavyR,MAAOA,GACpCE,EAASkrM,EAAQmnF,EAAaryR,OAAQA,GACtCowW,EAAW38Y,KAAK,CACd2mC,IAAKxa,EACLigB,KAAMwyR,EAAaxyR,KACnBE,IAAKsyR,EAAatyR,KAEtB,CACF,IACAF,GAAQ8vW,EACR5vW,GAAO4vW,EACP7vW,GAAS6vW,EACT3vW,GAAU2vW,EACV,IAAI33W,EAAQ8H,EAAQD,EAChB5H,EAAS+H,EAASD,EAClBwwW,EAAezuK,EAAOm8B,eACtB0jB,EAAKupH,EAAQhkV,KAAKqpV,EAAc,CAClCxpV,SAAU66N,EAAQ,MAAQ,WAO5B,GALAD,EAAGtmP,OAAO,CACRrD,MAAOA,EACPC,OAAQA,IAGN2pP,EAAO,CACT,IAAIxtP,EAAU,GAad,OAZA8yE,EAAKkpS,GAAY,SAAUp7X,GACzB,IAAI1F,EAAI0F,EAAK6qB,KAAOA,EAChB1R,EAAInZ,EAAK+qB,IAAMA,EACnB3L,GAAW,2BAA6B9kB,EAAI,IAAM6e,EAAI,MAAQnZ,EAAKolB,IAAM,MAC3E,IACAunP,EAAGE,QAAQ2uH,aAAa5lT,UAAYx2D,EAEhCu/D,EAAK2tQ,0BACP3/E,EAAGE,QAAQ4uH,mBAAmB98S,EAAK2tQ,0BAGrC3/E,EAAG+uH,qBACI/uH,EAAGE,QAAQxvM,WACpB,CA2BE,OAzBIshB,EAAK2tQ,0BACP3/E,EAAG5xR,IAAI,IAAIu2O,EAAQuF,KAAK,CACtB7mN,MAAO,CACL1V,EAAG,EACH6e,EAAG,EACH6J,MAAOA,EACPC,OAAQA,GAEV78B,MAAO,CACLme,KAAMo6E,EAAK2tQ,6BAKjBp6P,EAAKkpS,GAAY,SAAUp7X,GACzB,IAAIk5C,EAAM,IAAIo4K,EAAQlpI,MAAM,CAC1BhiG,MAAO,CACLkU,EAAG0F,EAAK6qB,KAAO8vW,EAAM9vW,EACrB1R,EAAGnZ,EAAK+qB,IAAM4vW,EAAM5vW,EACpBopK,MAAOn0L,EAAKolB,OAGhBunP,EAAG5xR,IAAIm+D,EACT,IACAyzN,EAAG+uH,qBACIH,EAAal+T,UAAU,UAAYshB,GAAQA,EAAK3/F,MAAQ,OAEnE,CACE,OAAOxE,KAAKugZ,WAAWp8S,EA1FzB,CA4FF,EAqBAg7S,GAAa3zB,eAAiBl5I,EAAOuD,MAAMupK,GAAgB,kBAoB3DD,GAAa1zB,iBAAmBn5I,EAAOuD,MAAMupK,GAAgB,oBA0C7DD,GAAagC,aAAe,SAAU31F,EAAQ1pT,GAC5C,IAAI9B,KAAKy9Y,UAAT,CAKA,IACI/5Y,EADAgvO,EAAU1yO,KAAKy6P,OAkBnB,OAhBA+wD,EAASnkC,EAAUsgE,YAAYj1G,EAAS84E,GACxCl5E,EAAO56H,KAAK8zM,GAAQ,SAAU5S,EAAQ/0S,GACpCA,EAAIwT,QAAQ,WAAa,GAAKi7N,EAAO56H,KAAKkhM,GAAQ,SAAUrnD,GAC1D,IAAI1e,EAAW0e,EAAMld,iBAErB,GAAIxB,GAAYA,EAASopD,aACvBv4R,KAAYmvO,EAASopD,aAAan6R,QAC7B,GAAY,iBAAR+B,EAAwB,CACjC,IAAI4wO,EAAOz0O,KAAKm+Y,WAAW5sJ,EAAMkvJ,UAE7BhsK,GAAQA,EAAKwnD,eACfv4R,GAAU+wO,EAAKwnD,aAAan6R,EAAOyvP,GAEvC,CACF,GAAGvxP,KACL,GAAGA,QACM0D,CApBT,CAFEg6Y,GAAgB19Y,KAAKwJ,GAuBzB,EAkBA21Y,GAAa7hK,UAAY,SAAUkuE,EAAQn1D,GACzC,IAAI3jB,EAAU1yO,KAAKy6P,OACnB+wD,EAASnkC,EAAUsgE,YAAYj1G,EAAS84E,EAAQ,CAC9C41F,gBAAiB,WAEnB,IAAIxtK,EAAc43E,EAAO53E,YACrB30N,EAAO20N,EAAY7oI,UACnB2qJ,EAAkB81D,EAAOllT,eAAe,mBAAqBklT,EAAO91D,gBAAkB81D,EAAOllT,eAAe,aAAe2Y,EAAKixX,gBAAgB1kF,EAAO33E,WAAa,KACxK,OAA0B,MAAnB6hB,EAA0Bz2O,EAAKo+N,cAAcqY,EAAiBW,GAAcp3O,EAAKq+N,UAAU+Y,EACpG,EAQA8oJ,GAAakC,wBAA0B,SAAUltK,GAC/C,OAAOn0O,KAAKq+Y,eAAelqK,EAAessK,SAC5C,EAQAtB,GAAamC,qBAAuB,SAAU1tK,GAC5C,OAAO5zO,KAAKm+Y,WAAWvqK,EAAY6sK,SACrC,EAEA,IAAInB,GAAgB,CAClBiC,iBAAkB,SAAU/tK,GAC1B6rK,GAAQr/Y,MACRs/Y,GAActoX,OAAO32B,KAAKL,KAAMwzO,EAClC,EAMAx8M,OAAQ,SAAUw8M,GAEhB,IAAId,EAAU1yO,KAAKy6P,OACf9vJ,EAAM3qG,KAAKqmT,KACXl0B,EAAKnyR,KAAKghV,IACVwgE,EAAcxhZ,KAAKs+Y,aACnBh9X,EAAYthB,KAAK2+Y,WAErB,GAAKjsK,EAAL,CAIApxN,EAAUq0W,YAAYjjJ,EAASc,GAC/BlyN,EAAUq+X,mBAAmBjtK,GAM7B8uK,EAAYx6Y,OAAO0rO,EAAS/nI,GAC5BrpF,EAAUs+X,0BAA0BltK,EAASc,GAI7CqsK,GAAkB7/Y,KAAM0yO,GAKxB8uK,EAAYxqX,OAAO07M,EAAS/nI,GAC5B82S,GAAkB/uK,GAClBpxN,EAAUw+X,mBAAmBptK,EAASc,GACtCr0O,GAAOa,KAAM0yO,EAAS/nI,EAAK6oI,GAE3B,IAAI55K,EAAkB84K,EAAQxvO,IAAI,oBAAsB,cAExD,GAAKqsT,EAAIsf,gBAQP18C,EAAG8uH,mBAAmBrnV,OARE,CACxB,IAAI8nV,EAAW/F,EAAU/uX,MAAMgtC,GAC/BA,EAAkB+hV,EAAU9qY,UAAU6wY,EAAU,OAE5B,IAAhBA,EAAS,KACX9nV,EAAkB,cAEtB,CAIA+nV,GAAuBjvK,EAAS/nI,EArChC,CAsCF,EAMA2qI,gBAAiB,SAAU9B,GACzB,IAAId,EAAU1yO,KAAKy6P,OACfmnJ,EAAQ5hZ,KACR2qG,EAAM3qG,KAAKqmT,KAEf,GAAK3zE,EAAL,CAKA,IAAImvK,EAAqB,GACzBnvK,EAAQe,eAAc,SAAUS,EAAeC,GAC7C,IAAI2tK,EAAgBF,EAAMP,wBAAwBltK,GAElD,GAAI2tK,GAAiBA,EAAcC,QACjC,GAAID,EAAcxsK,gBAAiB,CACjC,IAAI5xO,EAASo+Y,EAAcxsK,gBAAgBnB,EAAgBzB,EAAS/nI,EAAK6oI,GACzE9vO,GAAUA,EAAOszB,QAAU6qX,EAAmB59Y,KAAK69Y,EACrD,MACED,EAAmB59Y,KAAK69Y,EAG9B,IACA,IAAIE,EAAiB1vK,EAAO6hD,gBAC5BzhD,EAAQy/E,YAAW,SAAUv+E,GAC3B,IAAIquK,EAAYL,EAAMzD,WAAWvqK,EAAY6sK,UAE7C,GAAIwB,EAAU3sK,gBAAiB,CAC7B,IAAI5xO,EAASu+Y,EAAU3sK,gBAAgB1B,EAAalB,EAAS/nI,EAAK6oI,GAClE9vO,GAAUA,EAAOszB,QAAUgrX,EAAexvY,IAAIohO,EAAY/lO,IAAK,EACjE,MACEm0Y,EAAexvY,IAAIohO,EAAY/lO,IAAK,EAExC,IACA4zY,GAAkB/uK,GAGlB1yO,KAAK2+Y,WAAWmB,mBAAmBptK,EAASc,EAAS,CACnD0uK,UAAU,EACVC,SAAUH,IAKZjmD,GAAa6lD,EAAOlvK,EAAS/nI,EAAK6oI,EAASwuK,GAC3CL,GAAuBjvK,EAAS1yO,KAAKqmT,KAtCrC,CAuCF,EAMAkb,WAAY,SAAU/tF,GACpB,IAAId,EAAU1yO,KAAKy6P,OAEd/nB,IAILuW,EAAUm5J,iBAAiB5uK,EAAS,cACpCiuK,GAAkB/uK,GAElB1yO,KAAK2+Y,WAAWmB,mBAAmBptK,EAASc,EAAS,CACnD0uK,UAAU,IAGZ/iZ,GAAOa,KAAMA,KAAKy6P,OAAQz6P,KAAKqmT,KAAM7yE,GACrCmuK,GAAuBjvK,EAAS1yO,KAAKqmT,MACvC,EAMAg8F,aAAc,SAAU7uK,GACtB8rK,GAActoX,OAAO32B,KAAKL,KAAMwzO,EAWlC,EAMAwmB,aAAc,SAAUxmB,GACtB8rK,GAActoX,OAAO32B,KAAKL,KAAMwzO,EAWlC,GAGF,SAAS6rK,GAAQuC,GACf,IAAIlvK,EAAUkvK,EAAMnnJ,OAChBn5O,EAAYsgY,EAAMjD,WACtBr9X,EAAUghY,iBAAiB5vK,GAC3BpxN,EAAUihY,oBACVC,GAAYZ,EAAO,YAAalvK,EAASpxN,GACzCkhY,GAAYZ,EAAO,QAASlvK,EAASpxN,GACrCA,EAAU0tO,MACZ,CAMA,SAASyzJ,GAAeb,EAAOxkY,EAAQo2N,EAASE,EAAUC,GACxD,IAAIjB,EAAUkvK,EAAMnnJ,OAEpB,GAAK/mB,EAAL,CAQA,IAAI7yI,EAAQ,CAAC,EACbA,EAAM6yI,EAAW,MAAQF,EAAQE,EAAW,MAC5C7yI,EAAM6yI,EAAW,SAAWF,EAAQE,EAAW,SAC/C7yI,EAAM6yI,EAAW,QAAUF,EAAQE,EAAW,QAC9C,IAAIgvK,EAAY,CACdhvK,SAAUA,EACV7yI,MAAOA,GAET8yI,IAAY+uK,EAAU/uK,QAAUA,GAEhC,IAAIqgH,EAAkBxgH,EAAQwgH,gBAEP,MAAnBA,IACFA,EAAkB1hH,EAAO6hD,cAAc9M,EAAUooD,iBAAiBukB,KAIpEthH,GAAWA,EAAQe,cAAcivK,GAAW,SAAUnxJ,GAC/CyiG,GAAoD,MAAjCA,EAAgB9wV,IAAIquP,EAAM/nP,KAChDm5Y,EAASf,EAAmB,WAAbluK,EAAwB,aAAe,kBAAkB6d,EAAMkvJ,UAElF,GAAGmB,EAvBH,MAFElqS,EAAKkqS,EAAMxD,iBAAiBn9Y,OAAO2gZ,EAAM1D,cAAeyE,GA2B1D,SAASA,EAASluK,GAChBA,GAAQA,EAAKstK,SAAWttK,EAAKr3N,IAAWq3N,EAAKr3N,GAAQq3N,EAAKmuK,QAASlwK,EAASkvK,EAAMv7F,KAAM7yE,EAC1F,CACF,CAoCA,SAASqsK,GAAkB+B,EAAOlvK,GAChC,IAAImwK,EAAYjB,EAAMzD,WAClB78X,EAAYsgY,EAAMjD,WACtBjsK,EAAQy/E,YAAW,SAAUv+E,GAC3BtyN,EAAUu+X,kBAAkBjsK,EAAaivK,EAAUjvK,EAAY6sK,UACjE,GACF,CAmHA,SAASqC,GAAiBtvK,EAASrkF,GACjC,IAAI0pJ,EAAcrlE,EAAQhvO,KACtBuqT,EAAgBv7E,EAAQu7E,cACxBg0F,EAAa1jS,GAAQw5L,GACrBvlE,EAAayvK,EAAWzvK,WACxB0vK,GAAW1vK,EAAWt8M,QAAU,UAAU1zB,MAAM,KAChD0mP,EAAeg5J,EAAQvqX,MAC3BuqX,EAAwB,MAAdA,EAAQ,IAAc1G,EAAe0G,EAAQ,IACvDhjZ,KAAKo9Y,IAAmB,EACxB,IAAI6F,EAAW,CAACzvK,GACZ0vK,GAAU,EAEV1vK,EAAQnmE,QACV61O,GAAU,EACVD,EAAW3wK,EAAO5oN,IAAI8pN,EAAQnmE,OAAO,SAAU7nJ,GAG7C,OAFAA,EAAO8sN,EAAO94I,SAAS84I,EAAO5uH,OAAO,CAAC,EAAGl+F,GAAOguN,GAChDhuN,EAAK6nJ,MAAQ,KACN7nJ,CACT,KAGF,IACIq3I,EADAsmP,EAAgB,GAEhBC,EAA6B,cAAhBvqG,GAA+C,aAAhBA,EAChDnhM,EAAKurS,GAAU,SAAU9zF,GAEvBtyJ,EAAWkmP,EAAWzjS,OAAO6vM,EAAWnvT,KAAKy6P,OAAQz6P,KAAKqmT,MAE1DxpJ,EAAWA,GAAYy1E,EAAO5uH,OAAO,CAAC,EAAGyrM,GAEzCtyJ,EAASr4J,KAAO8uO,EAAWjwN,OAASw5I,EAASr4J,KAC7C2+Y,EAAcl/Y,KAAK44J,GAEfumP,EAEFX,GAAeziZ,KAAMgqP,EAAcmlE,EAAW,UACrC6zF,GACTP,GAAeziZ,KAAMgqP,EAAcmlE,EAAW6zF,EAAQpwR,KAAMowR,EAAQp4T,IAExE,GAAG5qF,MAEkB,SAAjBgqP,GAA4Bo5J,GAAeJ,IAEzChjZ,KAAKq9Y,IAEPgC,GAAQr/Y,MACRs/Y,GAActoX,OAAO32B,KAAKL,KAAMwzO,GAChCxzO,KAAKq9Y,IAAkB,GAEvBiC,GAAct1J,GAAc3pP,KAAKL,KAAMwzO,IAMzC32E,EADEqmP,EACS,CACT1+Y,KAAM8uO,EAAWjwN,OAASw1R,EAC1BkW,cAAeA,EACf1hJ,MAAO81O,GAGEA,EAAc,GAG3BnjZ,KAAKo9Y,IAAmB,GACvBjuP,GAAUnvJ,KAAK8+Y,eAAe9uS,QAAQ6sD,EAASr4J,KAAMq4J,EACxD,CAEA,SAAS0iP,GAAoBpwP,GAC3B,IAAIk0P,EAAiBrjZ,KAAK++Y,gBAE1B,MAAOsE,EAAerhZ,OAAQ,CAC5B,IAAIwxO,EAAU6vK,EAAejrX,QAC7B0qX,GAAiBziZ,KAAKL,KAAMwzO,EAASrkF,EACvC,CACF,CAEA,SAASqwP,GAAoBrwP,IAC1BA,GAAUnvJ,KAAKgwG,QAAQ,UAC1B,CAeA,SAASivS,GAAkB9sH,EAAIyvH,GAC7BzvH,EAAG1uN,GAAG,YAAY,WAChBm+U,EAAM5xS,QAAQ,aAQdmiL,EAAGnhQ,UAAUsyX,cAAiB1B,EAAMvE,IAAoBuE,EAAMjD,WAAWc,YAAemC,EAAM7C,gBAAgB/8Y,QAC5G4/Y,EAAM5xS,QAAQ,WAElB,GACF,CA0CA,SAASwyS,GAAYZ,EAAOp9Y,EAAMkuO,EAASpxN,GAOzC,IANA,IAAIiiY,EAAuB,cAAT/+Y,EACd+nQ,EAAWg3I,EAAc3B,EAAMxD,iBAAmBwD,EAAM1D,aACxDsF,EAAUD,EAAc3B,EAAMvD,eAAiBuD,EAAMzD,WACrDhsH,EAAKyvH,EAAM5gE,IACXr2O,EAAMi3S,EAAMv7F,KAEPriT,EAAI,EAAGA,EAAIuoQ,EAASvqQ,OAAQgC,IACnCuoQ,EAASvoQ,GAAG+9Y,SAAU,EAOxB,SAAS0B,EAAUlyJ,GAEjB,IAAImyJ,EAAS,OAASnyJ,EAAM/nP,GAAK,IAAM+nP,EAAM/sP,KACzCiwO,EAAO+uK,EAAQE,GAEnB,IAAKjvK,EAAM,CACT,IAAIkvK,EAAYrH,EAAe/qJ,EAAM/sP,MACjCu3T,EAAQwnF,EAAczyE,EAAcq9C,SAASw1B,EAAU/wR,KAAM+wR,EAAU/4T,KAAOq+J,EAAUklI,SAASw1B,EAAU/4T,KAC/G6pJ,EAAO,IAAIsnF,EACXtnF,EAAK/8K,KAAKg7K,EAAS/nI,GACnB64S,EAAQE,GAAUjvK,EAClB83B,EAAStoQ,KAAKwwO,GACd09C,EAAG5xR,IAAIk0O,EAAKv5L,MACd,CAEAq2M,EAAMkvJ,SAAWhsK,EAAKmvK,KAAOF,EAC7BjvK,EAAKstK,SAAU,EACfttK,EAAKmuK,QAAUrxJ,EACf9c,EAAKv5L,MAAM2oW,kBAAoB,CAC7BnwK,SAAU6d,EAAM7d,SAChBzxO,MAAOsvP,EAAMmjD,iBAEd6uG,GAAejiY,EAAUkhY,YAAY/tK,EAAM8c,EAAO7e,EAAS/nI,EAC9D,CA3BA44S,EAAc7wK,EAAQe,eAAc,SAAUS,EAAeqd,GACzC,WAAlBrd,GAA8BuvK,EAAUlyJ,EAC1C,IAAK7e,EAAQy/E,WAAWsxF,GA2BxB,IAASz/Y,EAAI,EAAGA,EAAIuoQ,EAASvqQ,QAAS,CACpC,IAAIyyO,EAAO83B,EAASvoQ,GAEfywO,EAAKstK,QAQR/9Y,MAPCu/Y,GAAe9uK,EAAKqvK,WAAWtoK,UAChC22C,EAAGv1M,OAAO63J,EAAKv5L,OACfu5L,EAAK+G,QAAQ9I,EAAS/nI,GACtB4hK,EAAStzO,OAAOj1B,EAAG,UACZw/Y,EAAQ/uK,EAAKmvK,MACpBnvK,EAAKmvK,KAAOnvK,EAAKv5L,MAAM2oW,kBAAoB,KAI/C,CACF,CAwBA,SAASpC,GAAkB/uK,GACzBA,EAAQ+uK,oBACR/uK,EAAQy/E,YAAW,SAAUv+E,GAC3BA,EAAY6tK,mBACd,GACF,CAEA,SAAStiZ,GAAOyiZ,EAAOlvK,EAAS/nI,EAAK6oI,GACnCuwK,GAAiBnC,EAAOlvK,EAAS/nI,EAAK6oI,GACtC97H,EAAKkqS,EAAM1D,cAAc,SAAUjyW,GACjCA,EAAM81W,SAAU,CAClB,IACAhmD,GAAa6lD,EAAOlvK,EAAS/nI,EAAK6oI,GAElC97H,EAAKkqS,EAAM1D,cAAc,SAAUjyW,GAC5BA,EAAM81W,SACT91W,EAAM2wC,OAAO81J,EAAS/nI,EAE1B,GACF,CAEA,SAASo5S,GAAiBnC,EAAOlvK,EAAS/nI,EAAK6oI,EAASwwK,GACtDtsS,EAAKssS,GAAapC,EAAMxD,kBAAkB,SAAU0D,GAClD,IAAI3tK,EAAiB2tK,EAAcc,QACnCd,EAAc3iZ,OAAOg1O,EAAgBzB,EAAS/nI,EAAK6oI,GACnD8uG,GAAQnuG,EAAgB2tK,EAC1B,GACF,CAOA,SAAS/lD,GAAa6lD,EAAOlvK,EAAS/nI,EAAK6oI,EAAS2uK,GAElD,IACI1C,EADAn+X,EAAYsgY,EAAMjD,WAEtBjsK,EAAQy/E,YAAW,SAAUv+E,GAC3B,IAAIquK,EAAYL,EAAMzD,WAAWvqK,EAAY6sK,UAC7CwB,EAAUF,SAAU,EACpB,IAAI+B,EAAa7B,EAAU6B,WAC3BxiY,EAAU2iY,cAAcH,EAAYtwK,GAEhC2uK,GAAYA,EAASj/Y,IAAI0wO,EAAY/lO,MACvCi2Y,EAAWngP,QAGb87O,GAAcqE,EAAWI,QAAQ5iY,EAAU6iY,eAAeL,IAC1D7B,EAAU/mW,MAAMi0G,SAAWykF,EAAY1wO,IAAI,UAC3Co/U,GAAQ1uG,EAAaquK,GACrBmC,GAAYxwK,EAAaquK,EAC3B,IACA3gY,EAAUm+X,YAAcA,EAExB4E,GAAuBzC,EAAOlvK,GAE9BupK,EAAK2F,EAAM5gE,IAAIp2S,IAAK8nM,EACtB,CAEA,SAASivK,GAAuBjvK,EAAS/nI,GACvC+M,EAAK4sS,IAAiB,SAAU7mY,GAC9BA,EAAKi1N,EAAS/nI,EAChB,GACF,CAvbAw0S,GAAatzW,OAAS,SAAUs4D,GAC9B,GAAInkG,KAAKy9Y,UACPC,GAAgB19Y,KAAKwJ,QADvB,CAKAxJ,KAAKghV,IAAIn1S,OAAOs4D,GAEhB,IAAIuuI,EAAU1yO,KAAKy6P,OAInB,GAFAz6P,KAAKukZ,YAAcvkZ,KAAKukZ,WAAW14W,SAE9B6mM,EAAL,CAIA,IAAI8xK,EAAgB9xK,EAAQi2H,YAAY,SACpCx5M,EAAShrD,GAAQA,EAAKgrD,OAC1BnvJ,KAAKo9Y,IAAmB,EACxBoH,GAAiBnF,GAAQr/Y,MACzBs/Y,GAActoX,OAAO32B,KAAKL,MAC1BA,KAAKo9Y,IAAmB,EACxBmC,GAAoBl/Y,KAAKL,KAAMmvJ,GAC/BqwP,GAAoBn/Y,KAAKL,KAAMmvJ,EAT/B,CAVA,CAoBF,EAgBAgwP,GAAasF,YAAc,SAAUhgZ,EAAMigZ,GACzC,GAAI1kZ,KAAKy9Y,UACPC,GAAgB19Y,KAAKwJ,SAYvB,GARIlI,EAASmD,KACXigZ,EAAMjgZ,EACNA,EAAO,IAGTA,EAAOA,GAAQ,UACfzE,KAAK2kZ,cAEAC,GAAengZ,GAApB,CAIA,IAAI7C,EAAKgjZ,GAAengZ,GAAMzE,KAAKqmT,KAAMq+F,GACrCvyH,EAAKnyR,KAAKghV,IACdhhV,KAAKukZ,WAAa3iZ,EAClBuwR,EAAG5xR,IAAIqB,EALP,CAMF,EAMAu9Y,GAAawF,YAAc,WACrB3kZ,KAAKy9Y,UACPC,GAAgB19Y,KAAKwJ,KAIvBxJ,KAAKukZ,YAAcvkZ,KAAKghV,IAAIpkQ,OAAO58E,KAAKukZ,YACxCvkZ,KAAKukZ,WAAa,KACpB,EAOApF,GAAa0F,oBAAsB,SAAUhoP,GAC3C,IAAI22E,EAAUlB,EAAO5uH,OAAO,CAAC,EAAGm5C,GAEhC,OADA22E,EAAQhvO,KAAOsgZ,GAAejoP,EAASr4J,MAChCgvO,CACT,EAeA2rK,GAAav3I,eAAiB,SAAUp0B,EAAS3wI,GAC3C7iG,KAAKy9Y,UACPC,GAAgB19Y,KAAKwJ,KAIlBlI,EAASuhG,KACZA,EAAM,CACJssD,SAAUtsD,IAITwc,GAAQm0H,EAAQhvO,OAKhBxE,KAAKy6P,SAKNz6P,KAAKo9Y,GACPp9Y,KAAK++Y,gBAAgB96Y,KAAKuvO,IAK5BsvK,GAAiBziZ,KAAKL,KAAMwzO,EAAS3wI,EAAIssD,QAErCtsD,EAAIo+M,MACNjhT,KAAKghV,IAAI//B,OAAM,IACQ,IAAdp+M,EAAIo+M,OAAmBsO,EAAI2iD,QAAQ6yC,QAM5C/kZ,KAAKg+Y,oBAGPuB,GAAoBl/Y,KAAKL,KAAM6iG,EAAIssD,QACnCqwP,GAAoBn/Y,KAAKL,KAAM6iG,EAAIssD,UACrC,EAsHAgwP,GAAa7tH,WAAa,SAAU1vQ,GAClC,GAAI5hB,KAAKy9Y,UACPC,GAAgB19Y,KAAKwJ,QADvB,CAKA,IAAIk1O,EAAc98N,EAAO88N,YACrBhM,EAAU1yO,KAAKw5O,WACf5F,EAAclB,EAAQ48E,iBAAiB5wE,GAC3C9K,EAAY09C,WAAW1vQ,GAQvB5hB,KAAK2+Y,WAAWc,YAAa,CAb7B,CAcF,EAOAN,GAAa17U,GAAK85U,GAAqC,MAAM,GAC7D4B,GAAanjU,IAAMuhU,GAAqC,OAAO,GAC/D4B,GAAazjU,IAAM6hU,GAAqC,OAAO,GAuJ/D,IAAIyH,GAAoB,CAAC,QAAS,WAAY,YAAa,WAAY,YAAa,YAAa,UAAW,YAAa,eA4HzH,SAAStH,GAAgBl0Y,GAAK,CAE9B,SAAS66Y,GAAuBzC,EAAOlvK,GACrC,IAAIy/C,EAAKyvH,EAAM5gE,IACXzmC,EAAUpoB,EAAGooB,QACb0qG,EAAU,EACd1qG,EAAQ1hD,UAAS,SAAUj3P,GACzBqjZ,GACF,IAEIA,EAAUvyK,EAAQxvO,IAAI,yBAA2BqsT,EAAIn0O,MACvDs3J,EAAQy/E,YAAW,SAAUv+E,GAC3B,IAAIA,EAAYiiE,uBAAhB,CAIA,IAAIosG,EAAYL,EAAMzD,WAAWvqK,EAAY6sK,UAEzCwB,EAAUF,SACZE,EAAU/mW,MAAM29M,UAAS,SAAUj3P,GAEjCA,EAAGg3P,eAAgB,CACrB,GARF,CAUF,GAEJ,CAQA,SAASwrJ,GAAYxwK,EAAaquK,GAChC,IAAIiD,EAAYtxK,EAAY1wO,IAAI,cAAgB,KAChD++Y,EAAU/mW,MAAM29M,UAAS,SAAUj3P,GAE5BA,EAAG+2P,SAEF/2P,EAAGgK,MAAMu5Y,QAAUD,GACrBtjZ,EAAGiqL,SAAS,QAASq5N,GAIrBtjZ,EAAGwjZ,wBACLxjZ,EAAGwjZ,wBAAuB,SAAUC,GAClCA,EAAYx5N,SAAS,QAASq5N,EAChC,GAEJ,GACF,CAOA,SAAS5iE,GAAQ/wF,EAAO9c,GACtB,IAAI18J,EAAIw5K,EAAMruP,IAAI,KACdk9O,EAASmR,EAAMruP,IAAI,UAEvBuxO,EAAKv5L,MAAM29M,UAAS,SAAUj3P,GACZ,UAAZA,EAAG4C,OACA,MAALuzE,IAAcn2E,EAAGm2E,EAAIA,GACX,MAAVqoK,IAAmBx+O,EAAGw+O,OAASA,GAEnC,GACF,CAEA,SAASjmI,GAAmBmrS,GAC1B,IAAI9D,EAAc8D,EAAWhH,aAC7B,OAAOhsK,EAAO5uH,OAAO,IAAIuvH,EAAaqyK,GAAa,CAEjDxyK,qBAAsBR,EAAOv1N,KAAKykY,EAAY1uK,qBAAsB0uK,GACpE9xD,sBAAuB,SAAU9tV,GAC/B,MAAOA,EAAI,CACT,IAAI2jZ,EAAY3jZ,EAAGiiZ,kBAEnB,GAAiB,MAAb0B,EACF,OAAOD,EAAW7qJ,OAAOkrB,aAAa4/H,EAAU7xK,SAAU6xK,EAAUtjZ,OAGtEL,EAAKA,EAAGzB,MACV,CACF,GAEJ,CAqBA,SAAS0+Y,KAEP7+Y,KAAKwlZ,SACP,CAtOArG,GAAax4G,YAAc,WACzBjvL,EAAKstS,IAAmB,SAAUS,GAChC,IAAIhkY,EAAU,SAAUxb,GACtB,IAEI2b,EAFA8wN,EAAU1yO,KAAKw5O,WACf53O,EAAKqE,EAAEP,OAEPggZ,EAA0B,cAAZD,EAElB,GAAIC,EACF9jY,EAAS,CAAC,OACL,GAAIhgB,GAAsB,MAAhBA,EAAGiyO,UAAmB,CACrC,IAAI2oH,EAAY56V,EAAG46V,WAAa9pH,EAAQ48E,iBAAiB1tT,EAAG88O,aAC5D98N,EAAS46U,GAAaA,EAAUhkG,cAAc52P,EAAGiyO,UAAWjyO,EAAG62P,SAAU72P,IAAO,CAAC,CACnF,MACSA,GAAMA,EAAG4yS,YACd5yR,EAAS0wN,EAAO5uH,OAAO,CAAC,EAAG9hH,EAAG4yS,YAUlC,GAAI5yR,EAAQ,CACV,IAAIsyN,EAAgBtyN,EAAOsyN,cACvBwgE,EAAiB9yR,EAAO8yR,eAMN,aAAlBxgE,GAAkD,cAAlBA,GAAmD,aAAlBA,IACnEA,EAAgB,SAChBwgE,EAAiB9yR,EAAO88N,aAG1B,IAAI6S,EAAQrd,GAAmC,MAAlBwgE,GAA0BhiE,EAAQizC,aAAazxC,EAAewgE,GACvFjgE,EAAO8c,GAASvxP,KAAwB,WAAnBuxP,EAAM7d,SAAwB,aAAe,kBAAkB6d,EAAMkvJ,UAC9F7+X,EAAOyB,MAAQpd,EACf2b,EAAOpd,KAAOihZ,EACdzlZ,KAAK4+Y,kBAAkB4G,UAAY,CACjCxsJ,SAAUp3P,EACVq3P,YAAar3O,EACb2vO,MAAOA,EACP9c,KAAMA,GAERz0O,KAAKgwG,QAAQy1S,EAAS7jY,EACxB,CACF,EAOAH,EAAQkkY,sBAAuB,EAE/B3lZ,KAAKghV,IAAIv9Q,GAAGgiV,EAAShkY,EAASzhB,KAChC,GAAGA,MACH03G,EAAKotS,IAAgB,SAAUlvJ,EAAYmD,GACzC/4P,KAAK8+Y,eAAer7U,GAAGs1L,GAAW,SAAU11O,GAC1CrjB,KAAKgwG,QAAQ+oJ,EAAW11O,EAC1B,GAAGrjB,KACL,GAAGA,KACL,EAMAm/Y,GAAaz7E,WAAa,WACxB,OAAO1jU,KAAKy9Y,SACd,EAMA0B,GAAaz8X,MAAQ,WACf1iB,KAAKy9Y,UACPC,GAAgB19Y,KAAKwJ,IAIvBxJ,KAAKgrC,UAAU,CACbgB,OAAQ,KACP,EACL,EAMAmzW,GAAa3jK,QAAU,WACrB,GAAIx7O,KAAKy9Y,UACPC,GAAgB19Y,KAAKwJ,QADvB,CAKAxJ,KAAKy9Y,WAAY,EACjBp2H,EAAU52P,aAAazwB,KAAKyuW,SAAUm3C,GAAmB,IACzD,IAAIj7S,EAAM3qG,KAAKqmT,KACX3zE,EAAU1yO,KAAKy6P,OACnB/iJ,EAAK13G,KAAKo+Y,kBAAkB,SAAUjmV,GACpCA,EAAUqjL,QAAQ9I,EAAS/nI,EAC7B,IACA+M,EAAK13G,KAAKk+Y,cAAc,SAAUjyW,GAChCA,EAAMuvM,QAAQ9I,EAAS/nI,EACzB,IAEA3qG,KAAKghV,IAAIxlG,iBAEFqlK,GAAU7gZ,KAAKwJ,GAftB,CAgBF,EAEA8oO,EAAO0W,MAAM40J,GAASz9D,GAmHtB0+D,GAAet3Y,UAAY,CACzB2F,YAAa2xY,GACbgH,eAAgB,SAAUhlT,GACxB,IAAIilT,EAAW,CAAC,EACZC,EAAY,CAAC,EACbC,EAAa,CAAC,EAElB,GAAI1zK,EAAOohF,SAAS7yN,GAAQ,CAC1B,IAAIolT,EAAc3J,EAAez7S,GAEjCilT,EAASpyK,SAAWuyK,EAAYrzR,MAAQ,KACxCkzR,EAASnyK,QAAUsyK,EAAYr7T,KAAO,IACxC,KACK,CAGD,IAAIs7T,EAAW,CAAC,QAAS,OAAQ,MAC7BC,EAAW,CACb1hZ,KAAM,EACNovO,UAAW,EACX4kB,SAAU,GAEZnmB,EAAO56H,KAAK7W,GAAO,SAAU7xF,EAAKnL,GAGhC,IAFA,IAAI6yX,GAAW,EAEN1yX,EAAI,EAAGA,EAAIkiZ,EAASlkZ,OAAQgC,IAAK,CACxC,IAAIoiZ,EAAaF,EAASliZ,GACtBqiZ,EAAYxiZ,EAAI+gP,YAAYwhK,GAEhC,GAAIC,EAAY,GAAKA,IAAcxiZ,EAAI7B,OAASokZ,EAAWpkZ,OAAQ,CACjE,IAAI0xO,EAAW7vO,EAAI1B,MAAM,EAAGkkZ,GAEX,SAAb3yK,IACFoyK,EAASpyK,SAAWA,EACpBoyK,EAASM,EAAW9mY,eAAiBtQ,EACrC0nX,GAAW,EAEf,CACF,CAEIyvB,EAAS7/Y,eAAezC,KAC1BkiZ,EAAUliZ,GAAOmL,EACjB0nX,GAAW,GAGRA,IACHsvB,EAAWniZ,GAAOmL,EAEtB,GACF,CAEF,MAAO,CACL82Y,SAAUA,EACVC,UAAWA,EACXC,WAAYA,EAEhB,EACAh2X,OAAQ,SAAU+oO,EAAWl4J,EAAO5tF,GAElC,IAAIuyY,EAAYxlZ,KAAKwlZ,UAErB,IAAKA,EACH,OAAO,EAGT,IAAIxsJ,EAAWwsJ,EAAUxsJ,SACrBC,EAAcusJ,EAAUvsJ,YACxB1H,EAAQi0J,EAAUj0J,MAClB9c,EAAO+wK,EAAU/wK,KAErB,IAAK8c,IAAU9c,EACb,OAAO,EAGT,IAAIqxK,EAAWjlT,EAAMilT,SACjBC,EAAYllT,EAAMklT,UACtB,OAAOroY,EAAMooY,EAAUv0J,EAAO,aAAe7zO,EAAMooY,EAAUv0J,EAAO,YAAc7zO,EAAMooY,EAAUv0J,EAAO,QAAS,mBAAqB7zO,EAAMooY,EAAUv0J,EAAO,SAAW7zO,EAAMooY,EAAUv0J,EAAO,OAAS7zO,EAAMqoY,EAAW9sJ,EAAa,SAAWv7O,EAAMqoY,EAAW9sJ,EAAa,cAAgBv7O,EAAMqoY,EAAW9sJ,EAAa,eAAiBxkB,EAAKqkB,uBAAyBrkB,EAAKqkB,sBAAsBC,EAAWl4J,EAAMmlT,WAAYhtJ,EAAUC,IAE/a,SAASv7O,EAAMmjF,EAAOp9E,EAAMm7H,EAAM0nQ,GAChC,OAAsB,MAAfzlT,EAAM+9C,IAAiBn7H,EAAK6iY,GAAc1nQ,KAAU/9C,EAAM+9C,EACnE,CACF,EACA2nQ,aAAc,WAEZvmZ,KAAKwlZ,UAAY,IACnB,GAOF,IAAInmS,GAAU,CAAC,EAMXylS,GAAiB,CAAC,EAOlBpG,GAAqB,GAMrBuB,GAA0B,GAM1BqE,GAAkB,GAMlB7F,GAAc,GAMdX,GAAe,CAAC,EAKhB8G,GAAiB,CAAC,EAClB/D,GAAY,CAAC,EACbF,GAAkB,CAAC,EACnB6F,GAAS,IAAInyX,KAAS,EACtBoyX,GAAc,IAAIpyX,KAAS,EAC3BuxX,GAAoB,qBAExB,SAASc,GAAcz6W,GACrB,IAAI06W,EAAiB,EACjBC,EAAkB,EAClBC,EAAiB,EACjBC,EAAa,wBAEjB,SAASC,EAA4Bz4U,EAAQ38C,GAC3C,IAAK,IAAI3tB,EAAI,EAAGA,EAAIsqE,EAAOtsE,OAAQgC,IAAK,CACtC,IAAIgjZ,EAAa14U,EAAOtqE,GACxBgjZ,EAAWF,GAAcn1X,CAC3B,CACF,CAEA+lF,EAAKotS,IAAgB,SAAUlvJ,EAAYmD,GACzC9sN,EAAM6yW,eAAer7U,GAAGs1L,GAAW,SAAU11O,GAC3C,GAAIs9X,GAAgB10W,EAAMiP,QAAUjP,EAAM66W,KAAgBH,EAAgB,CACxE,GAAItjY,GAASA,EAAM0rS,cACjB,OAGF,IAAIzvM,EAASrzE,EAAM44W,oBAAoBxhY,GACnC4jY,EAAc,GAClBvvS,EAAKmpS,IAAW,SAAUmG,GACpBA,IAAe/6W,GAAS+6W,EAAW9rW,QAAUjP,EAAMiP,OACrD+rW,EAAYhjZ,KAAK+iZ,EAErB,IACAD,EAA4BE,EAAaN,GACzCjvS,EAAKuvS,GAAa,SAAUD,GACtBA,EAAWF,KAAgBF,GAC7BI,EAAWp/I,eAAetoJ,EAE9B,IACAynS,EAA4BE,EAAaJ,EAC3C,CACF,GACF,GACF,CAcA,SAASnvV,GAAK9sB,EAAKizW,EAAO15S,GACxB,IAAI+iT,EAAgBC,GAAiBv8W,GAErC,GAAIs8W,EACF,OAAOA,EAGT,IAAIj7W,EAAQ,IAAI2xW,GAAQhzW,EAAKizW,EAAO15S,GAKpC,OAJAl4D,EAAMziC,GAAK,MAAQg9Y,KACnB3F,GAAU50W,EAAMziC,IAAMyiC,EACtBo7O,EAAU52P,aAAama,EAAKg7W,GAAmB35W,EAAMziC,IACrDk9Y,GAAcz6W,GACPA,CACT,CAMA,SAASm7W,GAAQ1G,GAEf,GAAIpuK,EAAOxrO,QAAQ45Y,GAAU,CAC3B,IAAIpyU,EAASoyU,EACbA,EAAU,KAEVhpS,EAAKppC,GAAQ,SAAUriC,GACF,MAAfA,EAAMiP,QACRwlW,EAAUz0W,EAAMiP,MAEpB,IACAwlW,EAAUA,GAAW,KAAO+F,KAC5B/uS,EAAKppC,GAAQ,SAAUriC,GACrBA,EAAMiP,MAAQwlW,CAChB,GACF,CAGA,OADAC,GAAgBD,IAAW,EACpBA,CACT,CAOA,SAAS2G,GAAW3G,GAClBC,GAAgBD,IAAW,CAC7B,CAMA,IAAI7kV,GAAawrV,GAMjB,SAAS7rK,GAAQvvM,GACM,kBAAVA,EACTA,EAAQ40W,GAAU50W,GACPA,aAAiB2xW,KAE5B3xW,EAAQk7W,GAAiBl7W,IAGvBA,aAAiB2xW,KAAY3xW,EAAMy3R,cACrCz3R,EAAMuvM,SAEV,CAOA,SAAS2rK,GAAiBv8W,GACxB,OAAOi2W,GAAUx5H,EAAUigI,aAAa18W,EAAKg7W,IAC/C,CAOA,SAAS2B,GAAgB1jZ,GACvB,OAAOg9Y,GAAUh9Y,EACnB,CAMA,SAAS2jZ,GAAc/iZ,EAAMo5Y,GAC3BC,GAAar5Y,GAAQo5Y,CACvB,CAOA,SAAS7wJ,GAAqBy6J,GAC5BxH,GAAwBh8Y,KAAKwjZ,EAC/B,CAOA,SAASltJ,GAAkB5vC,EAAU1vL,GACnCysX,GAAkBhJ,GAAoB/zL,EAAU1vL,EAAWuhX,EAC7D,CAOA,SAASmL,GAAmBC,GAC1BtD,GAAgBrgZ,KAAK2jZ,EACvB,CAmBA,SAASr0K,GAAeD,EAAY1+D,EAAWt1D,GACpB,oBAAds1D,IACTt1D,EAASs1D,EACTA,EAAY,IAGd,IAAIghF,EAAat0P,EAASgyO,GAAcA,EAAW9uO,KAAO,CAAC8uO,EAAYA,EAAa,CAClFjwN,MAAOuxJ,IACN,GAEH0+D,EAAWjwN,OAASiwN,EAAWjwN,OAASuyO,GAAYt2O,cACpDs1J,EAAY0+D,EAAWjwN,MAEvBm6W,EAAO8f,EAAWniY,KAAKy6O,IAAe0nJ,EAAWniY,KAAKy5J,IAEjDv1D,GAAQu2I,KACXv2I,GAAQu2I,GAAc,CACpBt2I,OAAQA,EACRg0H,WAAYA,IAIhBwxK,GAAelwO,GAAaghF,CAC9B,CAOA,SAASoM,GAAyBx9P,EAAMwrQ,GACtCx9B,EAAwBp5J,SAAS50E,EAAMwrQ,EACzC,CAQA,SAAS63I,GAA8BrjZ,GACrC,IAAI2rQ,EAAkB39B,EAAwBtvO,IAAIsB,GAElD,GAAI2rQ,EACF,OAAOA,EAAgBkR,kBAAoBlR,EAAgBkR,oBAAsBlR,EAAgBv1G,WAAWz4J,OAEhH,CAWA,SAASszO,GAAe9qB,EAAUm9L,GAChCJ,GAAkBjJ,GAAa9zL,EAAUm9L,EAAYlL,EAAwB,SAC/E,CAOA,SAAS7mK,GAAeprB,EAAUo9L,GAChCL,GAAkBjJ,GAAa9zL,EAAUo9L,EAAYhL,EAAuB,SAC9E,CAMA,SAAS2K,GAAkBxtH,EAAYvvE,EAAUnoN,EAAIwlZ,EAAiB3xJ,IAChEs9D,EAAWhpG,IAAarpN,EAASqpN,MACnCnoN,EAAKmoN,EACLA,EAAWq9L,GAGb,IAAIC,EAAe9L,EAAU+L,iBAAiB1lZ,EAAI6zP,GAIlD,OAHA4xJ,EAAazJ,OAAS7zL,EACtBs9L,EAAaE,MAAQ3lZ,EACrB03R,EAAWj2R,KAAKgkZ,GACTA,CACT,CAMA,SAASG,GAAgB3jZ,EAAM4jZ,GAC7BzD,GAAengZ,GAAQ4jZ,CACzB,CAOA,SAASrkG,GAAqB7/M,GAQ5B,OAAOy3O,EAAel4N,OAAOvf,EAC/B,CAOA,SAASqgN,GAAoBrgN,GAQ3B,OAAO2sO,EAAcptN,OAAOvf,EAC9B,CAOA,SAAS42J,GAAkB52J,GASzB,OAAOy7I,EAAYl8H,OAAOvf,EAC5B,CAOA,SAASk0I,GAAgBl0I,GASvB,OAAO8kJ,EAAUvlI,OAAOvf,EAC1B,CAmBA,SAASmkT,GAAiBC,GACxBj2K,EAAOk2K,UAAU,eAAgBD,EACnC,CA6BA,SAAS1pB,GAAYzxC,EAAS4xC,EAAS/B,GACrCtB,EAAekD,YAAYzxC,EAAS4xC,EAAS/B,EAC/C,CAOA,SAASlvQ,GAAOq/N,GAEd,IAAI59B,EAAUmsE,EAAeS,YAAYhvC,GACzC,OAAO59B,GAAWA,EAAQ,IAAM,CAC9BwvE,QAASxvE,EAAQ,GAAG0tE,QACpBD,aAAcztE,EAAQ,GAAGytE,aAE7B,CAEAlnJ,GAAe+mK,EAAwBd,GACvChvJ,GAAqBymC,GACrBl5B,GAAkBmiJ,EAA8BX,GAChDqM,GAAgB,UAAWlM,GAE3B3oK,GAAe,CACb/uO,KAAM,YACN6e,MAAO,YACP2T,OAAQ,aACPs7M,EAAOj1C,MACVk2C,GAAe,CACb/uO,KAAM,WACN6e,MAAO,WACP2T,OAAQ,YACPs7M,EAAOj1C,MAEVmqN,GAAc,QAASpL,GACvBoL,GAAc,OAAQnL,GAGtB,IAAIoM,GAAW,CAAC,EAChBvnZ,EAAQmB,QAAUA,EAClBnB,EAAQg1O,aAAeA,EACvBh1O,EAAQw0O,SAAWA,EACnBx0O,EAAQw2D,KAAOA,GACfx2D,EAAQkmZ,QAAUA,GAClBlmZ,EAAQmmZ,WAAaA,GACrBnmZ,EAAQ26D,WAAaA,GACrB36D,EAAQs6O,QAAUA,GAClBt6O,EAAQimZ,iBAAmBA,GAC3BjmZ,EAAQqmZ,gBAAkBA,GAC1BrmZ,EAAQsmZ,cAAgBA,GACxBtmZ,EAAQ8rP,qBAAuBA,GAC/B9rP,EAAQq5P,kBAAoBA,GAC5Br5P,EAAQymZ,mBAAqBA,GAC7BzmZ,EAAQqyO,eAAiBA,GACzBryO,EAAQ8gQ,yBAA2BA,GACnC9gQ,EAAQ2mZ,8BAAgCA,GACxC3mZ,EAAQu0O,eAAiBA,GACzBv0O,EAAQ60O,eAAiBA,GACzB70O,EAAQknZ,gBAAkBA,GAC1BlnZ,EAAQ8iT,qBAAuBA,GAC/B9iT,EAAQsjT,oBAAsBA,GAC9BtjT,EAAQ65P,kBAAoBA,GAC5B75P,EAAQm3O,gBAAkBA,GAC1Bn3O,EAAQonZ,iBAAmBA,GAC3BpnZ,EAAQ29X,YAAcA,GACtB39X,EAAQ6sH,OAASA,GACjB7sH,EAAQunZ,SAAWA,GACnB,IAAIC,GAAelgY,EAAQ,QAC3B,WACI,IAAK,IAAI3kB,KAAO6kZ,GACRA,GAAapiZ,eAAezC,KAC5B3C,EAAQ2C,GAAO6kZ,GAAa7kZ,GAGvC,EAND,E,wBC/wEA,IAAI63Y,EAAUlzX,EAAQ,OAEtBtnB,EAAQw6Y,QAAUA,EAElB,IAAI1wQ,EAASxiH,EAAQ,OAErBtnB,EAAQ8pI,OAASA,EAEjB,IAAIkkE,EAAS1mL,EAAQ,OAErBtnB,EAAQguM,OAASA,EAEjB,IAAIojC,EAAS9pN,EAAQ,OAEjBmzX,EAAYnzX,EAAQ,MAExBtnB,EAAQ0vB,MAAQ+qX,EAEhB,IAAInqJ,EAAchpO,EAAQ,OAEtBmlR,EAAanlR,EAAQ,OAEzBtnB,EAAQujB,OAASkpR,EAEjB,IAAIuc,EAAa1hS,EAAQ,OAEzBtnB,EAAQ6yE,OAASm2O,EAEjB,IAAI7yE,EAAY7uN,EAAQ,OAET6uN,EAAUr/I,SACzB92F,EAAQ82F,SAAWq/I,EAAUr/I,SAE7B,IAAI2wT,EAAWngY,EAAQ,OAEvBtnB,EAAQ+oS,OAAS0+G,EAEjB,IAAIC,EAAepgY,EAAQ,OAE3BtnB,EAAQ0nZ,aAAeA,EAEvB,IAAIC,EAAQrgY,EAAQ,OAEpBtnB,EAAQ+gQ,KAAO4mJ,EAEf,IAAIC,EAAStgY,EAAQ,OAErBtnB,EAAQ+1O,MAAQ6xK,EAEhB,IAAIC,EAAQvgY,EAAQ,OAEpBtnB,EAAQqmW,KAAOwhD,EAEf,IAAIC,EAAOxgY,EAAQ,OAEnBtnB,EAAQquT,IAAMy5F,EAwBd,IAAItsB,EAAeksB,EACfK,EAAS,CAAC,EACd32K,EAAO56H,KAAK,CAAC,MAAO,OAAQ,SAAU,UAAW,WAAY,SAAU,SAAU,OAAQ,QAAS,UAAW,WAAY,WAAY,aAAc,SAAU,WAAY,QAAS,UAAU,SAAUjzG,GACpMwkZ,EAAOxkZ,GAAQ6tO,EAAO7tO,EACxB,IACA,IAAIqyO,EAAU,CAAC,EACfxE,EAAO56H,KAAK,CAAC,cAAe,aAAc,WAAY,YAAa,YAAa,aAAc,aAAc,gBAAiB,gBAAiB,eAAgB,UAAW,UAAW,cAAe,YAAa,eAAgB,mBAAoB,iBAAkB,gBAAiB,gBAAiB,QAAS,QAAS,OAAQ,SAAU,SAAU,OAAQ,UAAW,WAAY,OAAQ,OAAQ,cAAe,MAAO,yBAA0B,eAAgB,iBAAkB,iBAAkB,iBAAiB,SAAUjzG,GAClgBqyO,EAAQryO,GAAQ+sP,EAAY/sP,EAC9B,IACAvD,EAAQw7X,aAAeA,EACvBx7X,EAAQ00E,KAAOqzU,EACf/nZ,EAAQ41O,QAAUA,C,wBC1FlB,IAAIxE,EAAS9pN,EAAQ,OAEjBq3N,EAAsBr3N,EAAQ,OAE9BoqS,EAAapqS,EAAQ,MAErBitW,EAAuBjtW,EAAQ,OAE/ByuN,EAAQzuN,EAAQ,OAEhB4jP,EAAU5jP,EAAQ,MAEF4jP,EAAQ7O,cAC5Br8P,EAAQq8P,cAAgB6O,EAAQ7O,cAEhC,IAAIkjB,EAAmBj4P,EAAQ,OAE3Bk4P,EAAkBD,EAAiBC,gBACnC6L,EAAqB9L,EAAiB8L,mBACtCkwE,EAAsBh8E,EAAiBg8E,oBAEvCysD,EAAsB1gY,EAAQ,OAElCtnB,EAAQgzY,mBAAqBgV,EAE7B,IAAIC,EAAoB3gY,EAAQ,OAEhCtnB,EAAQm+Q,iBAAmB8pI,EAE3B,IAAInvU,EAAUxxD,EAAQ,OA6BtB,SAASkzU,EAAW9nH,GAClB,OAAOiM,EAAoBjM,EAAYmM,YAAanM,EACtD,CA7BA1yO,EAAQsgP,aAAexnK,EAAQwnK,aAoC/B,IAAIu6J,EAAY,CACdxvH,mBAAoBA,EACpB7L,gBAAiBA,EACjB+7E,oBAAqBA,GAiBvB,SAAS2sD,EAAYjrJ,EAAYpzN,GAC/B,IAAIo2O,EAAYp2O,EAEXksM,EAAM2pC,WAAW71O,KACpBo2O,EAAY,IAAIlqC,EAAMlsM,GACtBunM,EAAO0W,MAAMm4B,EAAWs0G,IAG1B,IAAIp/V,EAAQu8R,EAAWoyC,mBAAmB7jF,GAG1C,OAFA9qP,EAAM6uU,UAAU/mG,EAAW,GAAIA,EAAW,IAC1Cy0D,EAAWm7D,gBAAgB13V,EAAO8qP,GAC3B9qP,CACT,CAeA,SAASgzX,EAA4BpyK,GACnC3E,EAAO0W,MAAM/R,EAAOw+I,EACtB,CAEAv0X,EAAQw6V,WAAaA,EACrBx6V,EAAQ66Y,UAAYA,EACpB76Y,EAAQkoZ,YAAcA,EACtBloZ,EAAQmoZ,4BAA8BA,C,oBCnGtC,IAAI57X,EAAW,CACbme,OAAQ,CACNg0C,SAAU,CACRzmE,IAAK,KACL86S,QAAS,OAGbmM,QAAS,CACPnxD,MAAO,CACL3jO,MAAO,CACLrO,KAAM,OACN4J,QAAS,KACT67R,MAAO,OACPE,MAAO,OACPmpC,KAAM,OACNrpV,MAAO,SAGXypV,SAAU,CACR7gU,MAAO,OACPkmT,KAAM,CAAC,OAAQ,KAAM,OAEvB+d,SAAU,CACRjkU,MAAO,CACL8xC,KAAM,OACNnS,KAAM,WAGV6lS,UAAW,CACTxlU,MAAO,CACLE,KAAM,SACND,IAAK,SACLzvB,MAAO,QACPy1V,MAAO,UAGX/0U,QAAS,CACP8O,MAAO,MAETsmU,YAAa,CACXtmU,MAAO,QACPkmT,KAAM,CAAC,aAGXxlT,OAAQ,CACNs9W,UAAW,CACT79W,IAAK,KACLF,IAAK,MACLC,KAAM,MACN+9W,QAAS,MACTC,cAAe,QACf99W,MAAO,MACPo5O,KAAM,KACN2kI,QAAS,OACTC,QAAS,MACTC,YAAa,MACb9+Y,EAAG,MACH++Y,QAAS,MACTlgY,IAAK,KACLk5W,SAAU,QACV38U,MAAO,KACP90B,MAAO,MACP04X,OAAQ,MACRC,OAAQ,MACRn+W,MAAO,OACPo+W,aAAc,OACdC,WAAY,QACZC,SAAU,QAGdhO,KAAM,CACJiO,QAAS,CACPC,UAAW,sBACXC,aAAc,WAEhBp+W,OAAQ,CACN2mE,OAAQ,CACNqQ,OAAQ,GACRqnS,SAAU,oCACVC,YAAa,sBAEf1uO,SAAU,CACR54D,OAAQ,0BACRqnS,SAAU,gDACVC,YAAa,iCACb1mQ,UAAW,CACT6kI,OAAQ,IACR9pO,IAAK,OAIX1/B,KAAM,CACJsrY,QAAS,SACTC,YAAa,uBACbH,SAAU,oBACVC,YAAa,UACb1mQ,UAAW,CACT6kI,OAAQ,IACR9pO,IAAK,OAKbx9C,EAAOD,QAAUusB,C,2DC7HjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBi5N,EAAUj5N,EAAQ,OAElBk5N,EAAeD,EAAQC,aAEvB++B,EAAmBj4P,EAAQ,OAE3B+jQ,EAAqB9L,EAAiB8L,mBAEtC19B,EAAsBrmO,EAAQ,MAsB9BiiY,EAAe,cACfC,EAAsB,GACtB37J,EAAmC,qBAAjBn5O,aAA+BA,aAAe/O,MAEpE,SAAS8jZ,EAAiB/2K,GACxB,OAAOA,EAAY1wO,IAAI,UAAYunZ,EAAe72K,EAAY8K,WAChE,CAEA,SAASksK,EAAWx/W,GAClB,OAAOA,EAAK6mG,IAAM7mG,EAAKnpC,KACzB,CAcA,SAASwvP,EAAgB5uJ,GACvB,IAAIjhF,EAAS,GACTm2N,EAAWl1I,EAAIz3D,KACfwiU,EAAU,QAEd,GAAsB,aAAlB71H,EAASvzO,KAAb,CAMA,IAFA,IAAIqmP,EAAY9S,EAASiT,eAEhBhnP,EAAI,EAAGA,EAAI6+F,EAAIt6E,MAAYvkB,IAClC4d,EAAO3d,KAAKquO,EAAO94I,SAAS,CAC1BqxJ,UAAWA,EACX+iH,QAASA,EACTi9C,QAASJ,EAAezmZ,GACvB6+F,IAGL,IAAIioT,EAAkBC,EAAuBnpY,GACzCle,EAAS,GAEb,IAASM,EAAI,EAAGA,EAAI6+F,EAAIt6E,MAAOvkB,IAAK,CAClC,IAAIwhB,EAAOslY,EAAgBl9C,GAAS68C,EAAezmZ,GACnDwhB,EAAKo5O,aAAep5O,EAAK2H,OAAS3H,EAAKgjB,MAAQ,EAC/C9kC,EAAOO,KAAKuhB,EACd,CAEA,OAAO9hB,CArBP,CAsBF,CAEA,SAAS6oX,EAAuBn5I,EAAYV,GAC1C,IAAI4X,EAAe,GAOnB,OANA5X,EAAQkY,iBAAiBxX,GAAY,SAAUQ,GAEzCo3K,EAAcp3K,KAAiBq3K,EAAcr3K,IAC/C0W,EAAarmP,KAAK2vO,EAEtB,IACO0W,CACT,CAWA,SAAS4gK,EAAoBC,GAQ3B,IAAIC,EAAa,CAAC,EAClB94K,EAAO56H,KAAKyzS,GAAW,SAAUv3K,GAC/B,IAAIsO,EAAYtO,EAAYS,iBACxB0D,EAAWmK,EAAUlK,cAEzB,GAAsB,SAAlBD,EAASvzO,MAAqC,UAAlBuzO,EAASvzO,KAQzC,IAJA,IAAIya,EAAO20N,EAAY7oI,UACnBlnG,EAAMk0O,EAAS9lG,IAAM,IAAM8lG,EAAS91O,MACpCgwI,EAAMhzH,EAAKysO,aAAa3T,EAAS9lG,KAE5BjuI,EAAI,EAAGqnZ,EAAMpsY,EAAKsJ,QAASvkB,EAAIqnZ,IAAOrnZ,EAAG,CAChD,IAAIlC,EAAQmd,EAAK/b,IAAI+uI,EAAKjuI,GAErBonZ,EAAWvnZ,GAKdunZ,EAAWvnZ,GAAKI,KAAKnC,GAHrBspZ,EAAWvnZ,GAAO,CAAC/B,EAMvB,CACF,IACA,IAAIwpZ,EAAc,GAElB,IAAK,IAAIznZ,KAAOunZ,EACd,GAAIA,EAAW9kZ,eAAezC,GAAM,CAClC,IAAI0nZ,EAAeH,EAAWvnZ,GAE9B,GAAI0nZ,EAAc,CAEhBA,EAAa1lY,MAAK,SAAUljB,EAAGC,GAC7B,OAAOD,EAAIC,CACb,IAGA,IAFA,IAAIgM,EAAM,KAED3D,EAAI,EAAGA,EAAIsgZ,EAAavpZ,SAAUiJ,EAAG,CAC5C,IAAIw7E,EAAQ8kU,EAAatgZ,GAAKsgZ,EAAatgZ,EAAI,GAE3Cw7E,EAAQ,IAEV73E,EAAc,OAARA,EAAe63E,EAAQtgF,KAAKyI,IAAIA,EAAK63E,GAE/C,CAGA6kU,EAAYznZ,GAAO+K,CACrB,CACF,CAGF,OAAO08Y,CACT,CAEA,SAAS9+B,EAAiB2+B,GACxB,IAAIG,EAAcJ,EAAoBC,GAClCK,EAAiB,GAuCrB,OAtCAl5K,EAAO56H,KAAKyzS,GAAW,SAAUv3K,GAC/B,IAGIiX,EAHA3I,EAAYtO,EAAYS,iBACxB0D,EAAWmK,EAAUlK,cACrBkyC,EAAanyC,EAASmT,YAG1B,GAAsB,aAAlBnT,EAASvzO,KACXqmP,EAAY9S,EAASiT,oBAChB,GAAsB,UAAlBjT,EAASvzO,MAAsC,SAAlBuzO,EAASvzO,KAAiB,CAChE,IAAIX,EAAMk0O,EAAS9lG,IAAM,IAAM8lG,EAAS91O,MACpCwpZ,EAASH,EAAYznZ,GACrBgtV,EAAa1qV,KAAK6iB,IAAIkhQ,EAAW,GAAKA,EAAW,IACjD7zP,EAAQ0hN,EAAS1hN,MAAM60N,YACvBwgK,EAAYvlZ,KAAK6iB,IAAIqN,EAAM,GAAKA,EAAM,IAC1Cw0N,EAAY4gK,EAAS56D,EAAa66D,EAAYD,EAAS56D,CACzD,KAAO,CACL,IAAI5xU,EAAO20N,EAAY7oI,UACvB8/I,EAAY1kP,KAAK6iB,IAAIkhQ,EAAW,GAAKA,EAAW,IAAMjrQ,EAAKsJ,OAC7D,CAEA,IAAIqmB,EAAW8yM,EAAa9N,EAAY1wO,IAAI,YAAa2nP,GACrDuC,EAAc1L,EAAa9N,EAAY1wO,IAAI,eAAgB2nP,GAC3DwC,EAAc3L,EAElB9N,EAAY1wO,IAAI,gBAAkB,EAAG2nP,GACjCh8M,EAAS+kM,EAAY1wO,IAAI,UACzB4rC,EAAiB8kM,EAAY1wO,IAAI,kBACrCsoZ,EAAevnZ,KAAK,CAClB4mP,UAAWA,EACXj8M,SAAUA,EACVw+M,YAAaA,EACbC,YAAaA,EACbx+M,OAAQA,EACRC,eAAgBA,EAChB8+T,QAASg9C,EAAW7yK,GACpB8yK,QAASF,EAAiB/2K,IAE9B,IACOm3K,EAAuBS,EAChC,CAEA,SAAST,EAAuBS,GAE9B,IAAIG,EAAa,CAAC,EAClBr5K,EAAO56H,KAAK8zS,GAAgB,SAAUI,EAAYzkT,GAChD,IAAIymQ,EAAUg+C,EAAWh+C,QACrB/iH,EAAY+gK,EAAW/gK,UACvBghK,EAAgBF,EAAW/9C,IAAY,CACzC/iH,UAAWA,EACXihK,cAAejhK,EACfkhK,eAAgB,EAChBC,YAAa,MACbrzW,IAAK,MACL6C,OAAQ,CAAC,GAEPA,EAASqwW,EAAcrwW,OAC3BmwW,EAAW/9C,GAAWi+C,EACtB,IAAIhB,EAAUe,EAAWf,QAEpBrvW,EAAOqvW,IACVgB,EAAcE,iBAGhBvwW,EAAOqvW,GAAWrvW,EAAOqvW,IAAY,CACnCriX,MAAO,EACP3D,SAAU,GAMZ,IAAI+J,EAAWg9W,EAAWh9W,SAEtBA,IAAa4M,EAAOqvW,GAASriX,QAE/BgT,EAAOqvW,GAASriX,MAAQoG,EACxBA,EAAWzoC,KAAKyI,IAAIi9Y,EAAcC,cAAel9W,GACjDi9W,EAAcC,eAAiBl9W,GAGjC,IAAIw+M,EAAcw+J,EAAWx+J,YAC7BA,IAAgB5xM,EAAOqvW,GAAShmX,SAAWuoN,GAC3C,IAAIC,EAAcu+J,EAAWv+J,YAC7BA,IAAgB7xM,EAAOqvW,GAASoB,SAAW5+J,GAC3C,IAAIx+M,EAAS+8W,EAAW/8W,OACd,MAAVA,IAAmBg9W,EAAclzW,IAAM9J,GACvC,IAAIC,EAAiB88W,EAAW98W,eACd,MAAlBA,IAA2B+8W,EAAcG,YAAcl9W,EACzD,IACA,IAAIprC,EAAS,CAAC,EAqFd,OApFA4uO,EAAO56H,KAAKi0S,GAAY,SAAUE,EAAe9qI,GAC/Cr9Q,EAAOq9Q,GAAgB,CAAC,EACxB,IAAIvlO,EAASqwW,EAAcrwW,OACvBqvM,EAAYghK,EAAchhK,UAC1BmhK,EAActqK,EAAamqK,EAAcG,YAAanhK,GACtDqhK,EAAgBxqK,EAAamqK,EAAclzW,IAAK,GAChDmzW,EAAgBD,EAAcC,cAC9BC,EAAiBF,EAAcE,eAC/Bp6R,GAAam6R,EAAgBE,IAAgBD,GAAkBA,EAAiB,GAAKG,GACzFv6R,EAAYxrH,KAAKwI,IAAIgjH,EAAW,GAEhC2gH,EAAO56H,KAAKl8D,GAAQ,SAAU+iB,GAC5B,IAAI15B,EAAW05B,EAAO15B,SAClBonX,EAAW1tV,EAAO0tV,SAEtB,GAAK1tV,EAAO/1B,MAqBL,CAID2jX,EAAa5tV,EAAO/1B,MAEpB3D,IACFsnX,EAAahmZ,KAAKyI,IAAIu9Y,EAAYtnX,IAIhConX,IACFE,EAAahmZ,KAAKwI,IAAIw9Y,EAAYF,IAGpC1tV,EAAO/1B,MAAQ2jX,EACfL,GAAiBK,EAAaD,EAAgBC,EAC9CJ,GACF,KAvCmB,CACjB,IAAII,EAAax6R,EAEb9sF,GAAYA,EAAWsnX,IACzBA,EAAahmZ,KAAKyI,IAAIi2B,EAAUinX,IAQ9BG,GAAYA,EAAWE,IACzBA,EAAaF,GAGXE,IAAex6R,IACjBpzD,EAAO/1B,MAAQ2jX,EACfL,GAAiBK,EAAaD,EAAgBC,EAC9CJ,IAEJ,CAmBF,IAEAp6R,GAAam6R,EAAgBE,IAAgBD,GAAkBA,EAAiB,GAAKG,GACrFv6R,EAAYxrH,KAAKwI,IAAIgjH,EAAW,GAChC,IACIy6R,EADAC,EAAW,EAEf/5K,EAAO56H,KAAKl8D,GAAQ,SAAU+iB,EAAQ4oC,GAC/B5oC,EAAO/1B,QACV+1B,EAAO/1B,MAAQmpF,GAGjBy6R,EAAa7tV,EACb8tV,GAAY9tV,EAAO/1B,OAAS,EAAI0jX,EAClC,IAEIE,IACFC,GAAYD,EAAW5jX,MAAQ0jX,GAGjC,IAAI/+X,GAAUk/X,EAAW,EACzB/5K,EAAO56H,KAAKl8D,GAAQ,SAAU+iB,EAAQssV,GACpCnnZ,EAAOq9Q,GAAc8pI,GAAWnnZ,EAAOq9Q,GAAc8pI,IAAY,CAC/DhgK,UAAWA,EACX19N,OAAQA,EACRqb,MAAO+1B,EAAO/1B,OAEhBrb,GAAUoxC,EAAO/1B,OAAS,EAAI0jX,EAChC,GACF,IACOxoZ,CACT,CASA,SAAS+oX,EAAqBW,EAAmBhiV,EAAMwoM,GACrD,GAAIw5I,GAAqBhiV,EAAM,CAC7B,IAAI1nC,EAAS0pX,EAAkBw9B,EAAWx/W,IAM1C,OAJc,MAAV1nC,GAAiC,MAAfkwO,IACpBlwO,EAASA,EAAOinZ,EAAiB/2K,KAG5BlwO,CACT,CACF,CAOA,SAASykG,EAAOirI,EAAYV,GAC1B,IAAI4X,EAAeiiI,EAAuBn5I,EAAYV,GAClD06I,EAAoBZ,EAAiBliI,GACrCgiK,EAAkB,CAAC,EACnBC,EAAwB,CAAC,EAC7Bj6K,EAAO56H,KAAK4yI,GAAc,SAAU1W,GAClC,IAAI30N,EAAO20N,EAAY7oI,UACnBm3I,EAAYtO,EAAYS,iBACxB0D,EAAWmK,EAAUlK,cACrB6yK,EAAUF,EAAiB/2K,GAC3B44K,EAAmBp/B,EAAkBw9B,EAAW7yK,IAAW8yK,GAC3D4B,EAAeD,EAAiBr/X,OAChCw8C,EAAc6iV,EAAiBhkX,MAC/B0M,EAAYgtM,EAAU4B,aAAa/L,GACnCuI,EAAe1M,EAAY1wO,IAAI,iBAAmB,EACtDopZ,EAAgBzB,GAAWyB,EAAgBzB,IAAY,GACvD0B,EAAsB1B,GAAW0B,EAAsB1B,IAAY,GAEnE5rY,EAAKswO,UAAU,CACb1E,UAAW2hK,EAAiB3hK,UAC5B19N,OAAQs/X,EACRnjU,KAAM3f,IAUR,IARA,IAAI64K,EAAWvjO,EAAKysO,aAAax2M,EAAU+8F,KACvC26I,EAAU3tQ,EAAKysO,aAAa3T,EAAS9lG,KACrCu6I,EAAUD,EAAmBttQ,EAAMujO,GAGnCkqK,EAAex3W,EAAUkjM,eACzBu0K,EAAiBC,EAAkB70K,EAAU7iM,EAAWs3O,GAEnDrlL,EAAM,EAAG3vF,EAAMyH,EAAKsJ,QAAS4+E,EAAM3vF,EAAK2vF,IAAO,CACtD,IAqBIrnF,EACA6e,EACA6J,EACAC,EAxBA3mC,EAAQmd,EAAK/b,IAAIs/O,EAAUr7I,GAC3B0lT,EAAY5tY,EAAK/b,IAAI0pR,EAASzlL,GAC9B0hG,EAAO/mM,GAAS,EAAI,IAAM,IAC1BgrZ,EAAYH,EAuBhB,GApBIngI,IAEG8/H,EAAgBzB,GAASgC,KAC5BP,EAAgBzB,GAASgC,GAAa,CACpChvW,EAAG8uW,EAEH5sY,EAAG4sY,IAMPG,EAAYR,EAAgBzB,GAASgC,GAAWhkN,IAQ9C6jN,EAAc,CAChB,IAAI90K,EAAQsK,EAAUpN,YAAY,CAAChzO,EAAO+qZ,IAC1C/sY,EAAIgtY,EACJnuX,EAAIi5M,EAAM,GAAK60K,EACfjkX,EAAQovM,EAAM,GAAK+0K,EACnBlkX,EAASkhC,EAELxjE,KAAK6iB,IAAIwf,GAAS83M,IACpB93M,GAASA,EAAQ,GAAK,EAAI,GAAK83M,GAI5BvxO,MAAMy5B,IACTgkP,IAAY8/H,EAAgBzB,GAASgC,GAAWhkN,IAASrgK,EAE7D,KAAO,CACDovM,EAAQsK,EAAUpN,YAAY,CAAC+3K,EAAW/qZ,IAC9Cge,EAAI83N,EAAM,GAAK60K,EACf9tX,EAAImuX,EACJtkX,EAAQmhC,EACRlhC,EAASmvM,EAAM,GAAK+0K,EAEhBxmZ,KAAK6iB,IAAIyf,GAAU63M,IAErB73M,GAAUA,GAAU,GAAK,EAAI,GAAK63M,GAI/BvxO,MAAM05B,IACT+jP,IAAY8/H,EAAgBzB,GAASgC,GAAWhkN,IAASpgK,EAE7D,CAEAxpB,EAAKktO,cAAchlJ,EAAK,CACtBrnF,EAAGA,EACH6e,EAAGA,EACH6J,MAAOA,EACPC,OAAQA,GAEZ,CACF,GAAGzoC,KACL,CAGA,IAAIw1O,EAAc,CAChBpC,WAAY,MACZ4b,KAAMH,IACNpoJ,MAAO,SAAUmtI,GACf,GAAKo3K,EAAcp3K,IAAiBq3K,EAAcr3K,GAAlD,CAIA,IAAI30N,EAAO20N,EAAY7oI,UACnBm3I,EAAYtO,EAAYS,iBACxBoL,EAAcyC,EAAU/2M,KAAKu0M,UAC7B3H,EAAWmK,EAAUlK,cACrB9iM,EAAYgtM,EAAU4B,aAAa/L,GACnCyK,EAAWvjO,EAAKysO,aAAax2M,EAAU+8F,KACvC26I,EAAU3tQ,EAAKysO,aAAa3T,EAAS9lG,KACrC86Q,EAAsB73W,EAAUkjM,eAChC0G,EAAciuK,EAAsB,EAAI,EACxCn+W,EAAW69U,EAAqBD,EAAiB,CAAC54I,IAAemE,EAAUnE,GAAaprM,MAO5F,OALMoG,EAAW87W,IAEf97W,EAAW87W,GAGN,CACLltQ,SAAUA,EAnBZ,CAsBA,SAASA,EAAS57H,EAAQ3C,GACxB,IAII40N,EAJAtrN,EAAQ3G,EAAO2G,MACfgmO,EAAc,IAAIQ,EAAiB,EAARxmO,GAC3BykY,EAAwB,IAAIj+J,EAAiB,EAARxmO,GACrC61N,EAAmB,IAAI2Q,EAASxmO,GAEhCqvN,EAAQ,GACRq1K,EAAY,GACZC,EAAe,EACfC,EAAY,EAEhB,MAAsC,OAA9Bt5K,EAAYjyN,EAAOta,QACzB2lZ,EAAUnuK,GAAe7/N,EAAK/b,IAAIs/O,EAAU3O,GAC5Co5K,EAAU,EAAInuK,GAAe7/N,EAAK/b,IAAI0pR,EAAS/4C,GAC/C+D,EAAQsK,EAAUpN,YAAYm4K,EAAW,KAAMr1K,GAE/Co1K,EAAsBE,GAAgBH,EAAsBttK,EAAY3/N,EAAI2/N,EAAYj3M,MAAQovM,EAAM,GACtG2W,EAAY2+J,KAAkBt1K,EAAM,GACpCo1K,EAAsBE,GAAgBH,EAAsBn1K,EAAM,GAAK6H,EAAY9gN,EAAI8gN,EAAYh3M,OACnG8lN,EAAY2+J,KAAkBt1K,EAAM,GACpCwG,EAAiB+uK,KAAet5K,EAGlC50N,EAAKswO,UAAU,CACbhB,YAAaA,EACbnQ,iBAAkBA,EAClB4uK,sBAAuBA,EACvBp+W,SAAUA,EACV+9W,eAAgBC,EAAkB70K,EAAU7iM,GAAW,GACvDk4W,gBAAiBL,EAAsBttK,EAAY3/N,EAAI2/N,EAAY9gN,EACnEouX,oBAAqBA,GAEzB,CACF,GAGF,SAAS/B,EAAcp3K,GACrB,OAAOA,EAAYS,kBAA0D,gBAAtCT,EAAYS,iBAAiB7vO,IACtE,CAEA,SAASymZ,EAAcr3K,GACrB,OAAOA,EAAYoF,iBAAmBpF,EAAYoF,gBAAgBj9C,KACpE,CAGA,SAAS6wN,EAAkB70K,EAAU7iM,EAAWs3O,GAC9C,OAAOt3O,EAAU8uM,cAAc9uM,EAAU+uM,YAA+B,QAAnB/uM,EAAU1wC,KAAiB,EAAI,GACtF,CAEAtD,EAAQuwP,gBAAkBA,EAC1BvwP,EAAQqrX,uBAAyBA,EACjCrrX,EAAQsrX,iBAAmBA,EAC3BtrX,EAAQurX,qBAAuBA,EAC/BvrX,EAAQinG,OAASA,EACjBjnG,EAAQs0O,YAAcA,C,wBChjBtB,IAAIlD,EAAS9pN,EAAQ,OAEjBi5N,EAAUj5N,EAAQ,OAElBk5N,EAAeD,EAAQC,aAEvB++B,EAAmBj4P,EAAQ,OAE3B+jQ,EAAqB9L,EAAiB8L,mBAoB1C,SAASo+H,EAAiB/2K,GACxB,OAAOA,EAAY1wO,IAAI,UAAY,cAAgB0wO,EAAY8K,WACjE,CAEA,SAASksK,EAAW3uK,EAAO7wM,GACzB,OAAOA,EAAK6mG,IAAMgqG,EAAMsV,MAAMmjD,cAChC,CAQA,SAAS24G,EAAej6K,EAAYV,EAAS/nI,GAC3C,IAAI2hT,EAAkB,CAAC,EACnBl/B,EAAoBkgC,EAAah7K,EAAOtiN,OAAO0iN,EAAQ66K,gBAAgBn6K,IAAa,SAAUQ,GAChG,OAAQlB,EAAQia,iBAAiB/Y,IAAgBA,EAAYS,kBAA0D,UAAtCT,EAAYS,iBAAiB7vO,IAChH,KACAkuO,EAAQkY,iBAAiBxX,GAAY,SAAUQ,GAE7C,GAA0C,UAAtCA,EAAYS,iBAAiB7vO,KAAjC,CAIA,IAAIya,EAAO20N,EAAY7oI,UACnBkxI,EAAQrI,EAAYS,iBACpB0D,EAAWkE,EAAMjE,cACjB41H,EAAUg9C,EAAW3uK,EAAOlE,GAC5B8yK,EAAUF,EAAiB/2K,GAC3B44K,EAAmBp/B,EAAkBxf,GAASi9C,GAC9C4B,EAAeD,EAAiBr/X,OAChCw8C,EAAc6iV,EAAiBhkX,MAC/B0M,EAAY+mM,EAAM6H,aAAa/L,GAC/B7oN,EAAK0kN,EAAYS,iBAAiBnlN,GAClCC,EAAKykN,EAAYS,iBAAiBllN,GAClCmxN,EAAe1M,EAAY1wO,IAAI,iBAAmB,EAClDq9O,EAAc3M,EAAY1wO,IAAI,gBAAkB,EACpDopZ,EAAgBzB,GAAWyB,EAAgBzB,IAAY,GASvD,IARA,IAAIroK,EAAWvjO,EAAKysO,aAAax2M,EAAU+8F,KACvC26I,EAAU3tQ,EAAKysO,aAAa3T,EAAS9lG,KACrCu6I,EAAUD,EAAmBttQ,EAAMujO,GAGnCgrK,EAA+B,WAAjBz1K,EAAS9lG,MAAqB2hG,EAAY1wO,IAAI,YAAY,GACxEypZ,EAAmC,WAAlBz3W,EAAU+8F,IAAmB/8F,EAAUwuV,aAAa,GAAKxuV,EAAU+tV,YAAY,GAE3F97R,EAAM,EAAG3vF,EAAMyH,EAAKsJ,QAAS4+E,EAAM3vF,EAAK2vF,IAAO,CACtD,IAqBIg1I,EACApvN,EACA8S,EACAC,EAxBAh+B,EAAQmd,EAAK/b,IAAIs/O,EAAUr7I,GAC3B0lT,EAAY5tY,EAAK/b,IAAI0pR,EAASzlL,GAC9B0hG,EAAO/mM,GAAS,EAAI,IAAM,IAC1BgrZ,EAAYH,EAuBhB,GAnBIngI,IACG8/H,EAAgBzB,GAASgC,KAC5BP,EAAgBzB,GAASgC,GAAa,CACpChvW,EAAG8uW,EAEH5sY,EAAG4sY,IAMPG,EAAYR,EAAgBzB,GAASgC,GAAWhkN,IAQ5B,WAAlB3zJ,EAAU+8F,IAAkB,CAC9B,IAAIw7Q,EAAav4W,EAAUwuV,aAAa5hY,GAAS6qZ,EAC7CpqW,EAAQw1L,EAASkrJ,YAAY4pB,GAE7B1mZ,KAAK6iB,IAAIykY,GAAcntK,IACzBmtK,GAAcA,EAAa,GAAK,EAAI,GAAKntK,GAG3CnE,EAAK2wK,EACL//X,EAAI+/X,EAAYW,EAChB5tX,EAAa0iB,EAAQkqW,EACrB3sX,EAAWD,EAAa8pC,EACxB6iN,IAAY8/H,EAAgBzB,GAASgC,GAAWhkN,GAAQ97K,EAC1D,KACK,CACD,IAAI2gY,EAAYx4W,EAAU+tV,YAAYnhY,EAAO0rZ,GAAeb,EACxDtiX,EAAS0tM,EAAS2rJ,aAAampB,GAE/B1mZ,KAAK6iB,IAAI0kY,GAAantK,IACxBmtK,GAAaA,EAAY,GAAK,EAAI,GAAKntK,GAGzCpE,EAAK9xM,EAASoiX,EACd1/X,EAAIovN,EAAKxyK,EACT9pC,EAAaitX,EACbhtX,EAAWgtX,EAAYY,EAWvBlhI,IAAY8/H,EAAgBzB,GAASgC,GAAWhkN,GAAQ/oK,EAC1D,CAEF7gB,EAAKktO,cAAchlJ,EAAK,CACtBj4E,GAAIA,EACJC,GAAIA,EACJgtN,GAAIA,EACJpvN,EAAGA,EAGH8S,YAAaA,EAAa15B,KAAK40B,GAAK,IACpC+E,UAAWA,EAAW35B,KAAK40B,GAAK,KAEpC,CApGA,CAqGF,GAAG/6B,KACL,CAMA,SAASstZ,EAAanC,EAAWxgT,GAE/B,IAAIghT,EAAa,CAAC,EAClBr5K,EAAO56H,KAAKyzS,GAAW,SAAUv3K,EAAazsI,GAC5C,IAAIloF,EAAO20N,EAAY7oI,UACnBkxI,EAAQrI,EAAYS,iBACpB0D,EAAWkE,EAAMjE,cACjB41H,EAAUg9C,EAAW3uK,EAAOlE,GAC5BmyC,EAAanyC,EAASmT,YACtBL,EAA8B,aAAlB9S,EAASvzO,KAAsBuzO,EAASiT,eAAiB7kP,KAAK6iB,IAAIkhQ,EAAW,GAAKA,EAAW,IAAMjrQ,EAAKsJ,QACpHsjY,EAAgBF,EAAW/9C,IAAY,CACzC/iH,UAAWA,EACXihK,cAAejhK,EACfkhK,eAAgB,EAChBC,YAAa,MACbrzW,IAAK,MACL6C,OAAQ,CAAC,GAEPA,EAASqwW,EAAcrwW,OAC3BmwW,EAAW/9C,GAAWi+C,EACtB,IAAIhB,EAAUF,EAAiB/2K,GAE1Bp4L,EAAOqvW,IACVgB,EAAcE,iBAGhBvwW,EAAOqvW,GAAWrvW,EAAOqvW,IAAY,CACnCriX,MAAO,EACP3D,SAAU,GAEZ,IAAI+J,EAAW8yM,EAAa9N,EAAY1wO,IAAI,YAAa2nP,GACrDuC,EAAc1L,EAAa9N,EAAY1wO,IAAI,eAAgB2nP,GAC3Dh8M,EAAS+kM,EAAY1wO,IAAI,UACzB4rC,EAAiB8kM,EAAY1wO,IAAI,kBAEjC0rC,IAAa4M,EAAOqvW,GAASriX,QAC/BoG,EAAWzoC,KAAKyI,IAAIi9Y,EAAcC,cAAel9W,GACjD4M,EAAOqvW,GAASriX,MAAQoG,EACxBi9W,EAAcC,eAAiBl9W,GAGjCw+M,IAAgB5xM,EAAOqvW,GAAShmX,SAAWuoN,GACjC,MAAVv+M,IAAmBg9W,EAAclzW,IAAM9J,GACrB,MAAlBC,IAA2B+8W,EAAcG,YAAcl9W,EACzD,IACA,IAAIprC,EAAS,CAAC,EAsDd,OArDA4uO,EAAO56H,KAAKi0S,GAAY,SAAUE,EAAe9qI,GAC/Cr9Q,EAAOq9Q,GAAgB,CAAC,EACxB,IAAIvlO,EAASqwW,EAAcrwW,OACvBqvM,EAAYghK,EAAchhK,UAC1BmhK,EAActqK,EAAamqK,EAAcG,YAAanhK,GACtDqhK,EAAgBxqK,EAAamqK,EAAclzW,IAAK,GAChDmzW,EAAgBD,EAAcC,cAC9BC,EAAiBF,EAAcE,eAC/Bp6R,GAAam6R,EAAgBE,IAAgBD,GAAkBA,EAAiB,GAAKG,GACzFv6R,EAAYxrH,KAAKwI,IAAIgjH,EAAW,GAEhC2gH,EAAO56H,KAAKl8D,GAAQ,SAAU+iB,EAAQziD,GACpC,IAAI+oB,EAAW05B,EAAO15B,SAElBA,GAAYA,EAAW8sF,IACzB9sF,EAAW1+B,KAAKyI,IAAIi2B,EAAUinX,GAE1BvtV,EAAO/1B,QACT3D,EAAW1+B,KAAKyI,IAAIi2B,EAAU05B,EAAO/1B,QAGvCsjX,GAAiBjnX,EACjB05B,EAAO/1B,MAAQ3D,EACfknX,IAEJ,IAEAp6R,GAAam6R,EAAgBE,IAAgBD,GAAkBA,EAAiB,GAAKG,GACrFv6R,EAAYxrH,KAAKwI,IAAIgjH,EAAW,GAChC,IACIy6R,EADAC,EAAW,EAEf/5K,EAAO56H,KAAKl8D,GAAQ,SAAU+iB,EAAQ4oC,GAC/B5oC,EAAO/1B,QACV+1B,EAAO/1B,MAAQmpF,GAGjBy6R,EAAa7tV,EACb8tV,GAAY9tV,EAAO/1B,OAAS,EAAI0jX,EAClC,IAEIE,IACFC,GAAYD,EAAW5jX,MAAQ0jX,GAGjC,IAAI/+X,GAAUk/X,EAAW,EACzB/5K,EAAO56H,KAAKl8D,GAAQ,SAAU+iB,EAAQssV,GACpCnnZ,EAAOq9Q,GAAc8pI,GAAWnnZ,EAAOq9Q,GAAc8pI,IAAY,CAC/D19X,OAAQA,EACRqb,MAAO+1B,EAAO/1B,OAEhBrb,GAAUoxC,EAAO/1B,OAAS,EAAI0jX,EAChC,GACF,IACOxoZ,CACT,CAEA,IAAI+pB,EAAW4/X,EACflsZ,EAAOD,QAAUusB,C,kDCtQjB,IAAImC,EAAQpH,EAAQ,OAEhBkB,EAAMkG,EAAMlG,IAEZmlO,EAAsBrmO,EAAQ,MAE9Bi4P,EAAmBj4P,EAAQ,OAE3B+jQ,EAAqB9L,EAAiB8L,mBAsB1C,SAAS9+P,EAAS2lN,GAChB,MAAO,CACLA,WAAYA,EACZ4b,KAAMH,IACNpoJ,MAAO,SAAUmtI,GACf,IAAI30N,EAAO20N,EAAY7oI,UACnB8nI,EAAWe,EAAYS,iBACvB2E,EAAkBpF,EAAYoF,gBAC9BsY,EAAgBtY,EAAgBj9C,MAEpC,GAAK82C,EAAL,CAIA,IAAI/wE,EAAOp4I,EAAImpN,EAASj4E,YAAY,SAAU3oB,GAC5C,OAAOhzH,EAAKysO,aAAaz5G,EAC3B,IAAG9vI,MAAM,EAAG,GACRksY,EAASvsO,EAAK9/J,OACd8qR,EAAiB7tQ,EAAKysQ,mBAAmB,wBA0C7C,OAxCIa,EAAmBttQ,EAAM6iJ,EAAK,MAGhCA,EAAK,GAAKgrH,GAGRP,EAAmBttQ,EAAM6iJ,EAAK,MAGhCA,EAAK,GAAKgrH,GA+BLuhH,GAAU,CACf7wP,SAAUA,EAjDZ,CAoBA,SAASA,EAAS57H,EAAQ3C,GAIxB,IAHA,IAAIk0Q,EAAWvxQ,EAAO+8B,IAAM/8B,EAAO88B,MAC/BhzB,EAAS4lO,GAAiB,IAAI17O,aAAau9Q,EAAWk7G,GAEjDrqY,EAAI4d,EAAO88B,MAAOvxB,EAAS,EAAGsjO,EAAQ,GAAIC,EAAS,GAAI1sP,EAAI4d,EAAO+8B,IAAK36C,IAAK,CACnF,IAAIgM,EAEJ,GAAe,IAAXq+X,EAAc,CAChB,IAAIvuX,EAAIb,EAAK/b,IAAI4+J,EAAK,GAAI99J,GAC1BgM,GAASjB,MAAM+Q,IAAM+yN,EAASiC,YAAYh1N,EAAG,KAAM4wO,EACrD,KAAO,CACD5wO,EAAI2wO,EAAM,GAAKxxO,EAAK/b,IAAI4+J,EAAK,GAAI99J,GAArC,IACI26B,EAAI8xN,EAAM,GAAKxxO,EAAK/b,IAAI4+J,EAAK,GAAI99J,GAErCgM,GAASjB,MAAM+Q,KAAO/Q,MAAM4vB,IAAMk0M,EAASiC,YAAY2b,EAAO,KAAMC,EACtE,CAEIY,GACF5lO,EAAOyB,KAAYnd,EAAQA,EAAM,GAAKw7E,IACtC9/D,EAAOyB,KAAYnd,EAAQA,EAAM,GAAKw7E,KAEtCvsE,EAAKktO,cAAcnoP,EAAGgM,GAASA,EAAM7N,SAAW,CAACqpF,IAAKA,KAE1D,CAEA8lK,GAAiBryO,EAAKswO,UAAU,eAAgB7jO,EAClD,CAKF,EAEJ,CAEAvqB,EAAOD,QAAUusB,C,wBCjGjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAElB0zQ,EAAc1zQ,EAAQ,MAoBtBuS,EAAK50B,KAAK40B,GAUd,SAAStN,EAASk9E,EAAKxG,GACrBA,EAAOA,GAAQ,CAAC,EAChBmuI,EAAO94I,SAAS2K,EAAM,CACpBxnE,KAAM,UACN8hC,UAAW,OACXtkC,SAAU,OACVwzX,UAAW,2BACXC,aAAa,EACbh9X,MAAO,UACPi9X,cAAe,GACf9zX,UAAW,EACXqmN,OAAQ,IAEV,IAAIllM,EAAQ,IAAI47L,EAAQM,MACpBh6K,EAAO,IAAI05K,EAAQuF,KAAK,CAC1BzwO,MAAO,CACLme,KAAMo6E,EAAKwpT,WAEbvtK,OAAQj8I,EAAKi8I,OACbroK,EAAG,MAEL78B,EAAM36C,IAAI68D,GACV,IAAIthC,EAAOqoE,EAAKhqE,SAAW,cACvB8sN,EAAY,IAAInQ,EAAQuF,KAAK,CAC/BzwO,MAAO,CACLme,KAAM,OACN4S,KAAMwnE,EAAKxnE,KACXb,KAAMA,EACN0qB,aAAc,QACdsnW,aAAc,GACdtrL,SAAUr+H,EAAK1lC,WAEjB2hL,OAAQj8I,EAAKi8I,OACbroK,EAAG,QAIL,GAFA78B,EAAM36C,IAAI0mP,GAEN9iJ,EAAKypT,YAAa,CACpB,IAAI7wX,EAAM,IAAI+5M,EAAQi3K,IAAI,CACxBv4X,MAAO,CACLqK,YAAa9E,EAAK,EAClB+E,UAAW/E,EAAK,EAAI,GACpBhO,EAAGo3E,EAAK0pT,eAEVjiZ,MAAO,CACLytB,OAAQ8qE,EAAKvzE,MACb2I,QAAS,QACTQ,UAAWoqE,EAAKpqE,WAElBqmN,OAAQj8I,EAAKi8I,OACbroK,EAAG,QAELh7C,EAAIixX,cAAa,GAAMl6I,KAAK,IAAM,CAChCh0O,SAAe,EAAL/E,EAAS,IAClB2jB,MAAM,iBACT3hB,EAAIixX,cAAa,GAAMl6I,KAAK,IAAM,CAChCj0O,WAAiB,EAAL9E,EAAS,IACpBrF,MAAM,KAAKgpB,MAAM,iBACpBxD,EAAM36C,IAAIw8B,EACZ,CA8BA,OA3BAme,EAAMrP,OAAS,WACb,IAAI8Z,EAAYu2O,EAAY75C,SAASl+I,EAAKxnE,KAAMb,GAC5C/O,EAAIo3E,EAAKypT,YAAczpT,EAAK0pT,cAAgB,EAG5C3+X,GAAMy7E,EAAI03I,WAAiB,EAAJt1N,GAASo3E,EAAKypT,aAAejoW,EAAY,GAAK,GAAKA,GAAa,GACxFw+C,EAAKypT,YAAc,EAAIjoW,EAAY,GAClCx2B,EAAKw7E,EAAI23I,YAAc,EAC3Bn+I,EAAKypT,aAAe7wX,EAAIo9M,SAAS,CAC/BjrN,GAAIA,EACJC,GAAIA,IAEN83N,EAAU9M,SAAS,CACjBr6N,EAAGoP,EAAKnC,EACR4R,EAAGxP,EAAKpC,EACRyb,MAAW,EAAJzb,EACP0b,OAAY,EAAJ1b,IAEVqwC,EAAK+8K,SAAS,CACZr6N,EAAG,EACH6e,EAAG,EACH6J,MAAOmiE,EAAI03I,WACX55M,OAAQkiE,EAAI23I,aAEhB,EAEApnM,EAAMrP,SACCqP,CACT,CAEA/5C,EAAOD,QAAUusB,C,iCC9HjB,IAAI6kN,EAAS9pN,EAAQ,OAEjByuN,EAAQzuN,EAAQ,OAEhBylY,EAAgBzlY,EAAQ,MAExBu/W,EAASv/W,EAAQ,MAEjB0lY,EAAwBnmB,EAAOmmB,sBAC/B5R,EAAiBvU,EAAOuU,eAExB7hJ,EAASjyO,EAAQ,OAEjBm6P,EAAYloB,EAAOkoB,UAEnBx6K,EAAS3/E,EAAQ,MAEjB2lY,EAAiB3lY,EAAQ,OA0BzBo6P,EAAQD,IASRi5D,EAAiB3kG,EAAMvzH,OAAO,CAChCl/G,KAAM,YAMNgF,GAAI,GAWJ/E,KAAM,GAMNivO,SAAU,GAMVC,QAAS,GAMT+gE,eAAgB,EAMhBl+D,cAAe,KAMf9D,QAAS,KAQTqiD,gBAAiB,GAMjBlnR,IAAK,KAQLmmR,WAAY,KACZo6H,aAAc,SAAUrjX,EAAQg8M,EAAarU,EAASikH,GACpD1/G,EAAM52O,KAAKL,KAAM+qC,EAAQg8M,EAAarU,EAASikH,GAC/C32V,KAAK6N,IAAMogZ,EAAcvjE,OAAO,eAClC,EACAhzR,KAAM,SAAU3sB,EAAQg8M,EAAarU,EAASikH,GAC5C32V,KAAK+iQ,qBAAqBh4N,EAAQ2nM,EACpC,EACAqwB,qBAAsB,SAAUh4N,EAAQ2nM,GACtC,IAAIshD,EAAah0R,KAAKg0R,WAClB4iE,EAAsB5iE,EAAa7rL,EAAOstO,gBAAgB1qS,GAAU,CAAC,EACrEglV,EAAar9I,EAAQs9I,WACzB19I,EAAOt0H,MAAMjzE,EAAQglV,EAAW7sX,IAAIlD,KAAK0zO,WACzCpB,EAAOt0H,MAAMjzE,EAAQ/qC,KAAKiwX,oBAEtBj8F,GACF7rL,EAAOu2O,iBAAiB3zS,EAAQ6rT,EAAqB5iE,EAEzD,EACAlxB,YAAa,SAAU/3N,EAAQ4rT,GAC7BrkH,EAAOt0H,MAAMh+G,KAAK+qC,OAAQA,GAAQ,GAClC,IAAIipP,EAAah0R,KAAKg0R,WAElBA,GACF7rL,EAAOu2O,iBAAiB1+U,KAAK+qC,OAAQA,EAAQipP,EAEjD,EAEA6M,cAAe,SAAUwtH,EAAc38S,GAAS,EAChDu+Q,iBAAkB,WAChB,IAAI13S,EAASqqM,EAAM5iR,MAEnB,IAAKu4E,EAAOi+J,cAAe,CACzB,IAAI83K,EAAU,GACVC,EAAQvuZ,KAAKkN,YAEjB,MAAOqhZ,EAAO,CACZ,IAAI1rT,EAAM0rT,EAAMhnZ,UAAUivO,cAC1B3zI,GAAOyrT,EAAQrqZ,KAAK4+F,GACpB0rT,EAAQA,EAAMC,UAChB,CAIA,IAFA,IAAIh4K,EAAgB,CAAC,EAEZxyO,EAAIsqZ,EAAQtsZ,OAAS,EAAGgC,GAAK,EAAGA,IACvCwyO,EAAgBlE,EAAOt0H,MAAMw4H,EAAe83K,EAAQtqZ,IAAI,GAG1Du0E,EAAOi+J,cAAgBA,CACzB,CAEA,OAAOj+J,EAAOi+J,aAChB,EACAkiJ,uBAAwB,SAAUhlJ,GAChC,OAAO1zO,KAAK0yO,QAAQq5D,gBAAgB,CAClCr4D,SAAUA,EACVzxO,MAAOjC,KAAKkD,IAAIwwO,EAAW,SAAS,GACpClqO,GAAIxJ,KAAKkD,IAAIwwO,EAAW,MAAM,IAElC,IAuBF,SAAS+6K,EAAgBv6K,GACvB,IAAIw6K,EAAO,GAaX,OAZAp8K,EAAO56H,KAAKkkO,EAAe+yE,qBAAqBz6K,IAAgB,SAAU6nF,GACxE2yF,EAAOA,EAAKztZ,OAAO86T,EAAMx0T,UAAU2uO,cAAgB,GACrD,IAEAw4K,EAAOp8K,EAAO5oN,IAAIglY,GAAM,SAAUlqZ,GAChC,OAAO83Y,EAAe93Y,GAAMouH,IAC9B,IAEsB,YAAlBshH,GAA+B5B,EAAOj7N,QAAQq3Y,EAAM,YAAc,GACpEA,EAAKxgY,QAAQ,WAGRwgY,CACT,CAtBAR,EAAsBtyE,EAAgB,CACpCgzE,oBAAoB,IAEtBX,EAAcY,uBAAuBjzE,GAErCqyE,EAAca,wBAAwBlzE,EAAgB6yE,GAmBtDn8K,EAAO0W,MAAM4yF,EAAgBuyE,GAC7B,IAAI1gY,EAAWmuT,EACfz6U,EAAOD,QAAUusB,C,iCC/NjB,IAAIgmB,EAAUjrB,EAAQ,OAIlBoH,GAFU6jB,EAAQojM,QAEVruN,EAAQ,QAEhBkvF,EAAO9nF,EAAM8nF,KACb1nF,EAASJ,EAAMI,OACftG,EAAMkG,EAAMlG,IACZ5iB,EAAU8oB,EAAM9oB,QAChBuQ,EAAUuY,EAAMvY,QAChB/V,EAAWsuB,EAAMtuB,SACjBoyT,EAAW9jS,EAAM8jS,SACjBv/B,EAAgBvkQ,EAAMukQ,cACtBqpG,EAAS5tW,EAAM4tW,OACflpW,EAAQ1E,EAAM0E,MACd0pF,EAAQpuF,EAAMouF,MACd0F,EAAS9zF,EAAM8zF,OACfslI,EAAQp5N,EAAMo5N,MAEdq+B,EAAY7+P,EAAQ,OAEpByuN,EAAQzuN,EAAQ,OAEhBozT,EAAiBpzT,EAAQ,OAEzBumY,EAAgBvmY,EAAQ,OAExBwmY,EAAoBxmY,EAAQ,OAE5BmyO,EAAgBnyO,EAAQ,MAExBuwX,EAAuBp+I,EAAco+I,qBAuCrCkW,EAAmB,cASnBpT,EAAc5kK,EAAMvzH,OAAO,CAC7BhsD,KAAM,SAAU3sB,EAAQg8M,EAAa82J,EAAOmC,GAC1CnC,EAAQA,GAAS,CAAC,EAClB79Y,KAAK+qC,OAAS,KAOd/qC,KAAKi+Y,OAAS,IAAIhnK,EAAM4mK,GAKxB79Y,KAAKkvZ,eAAiBlP,CACxB,EACAh1W,UAAW,SAAUD,EAAQk1W,GAC3BziB,IAASyxB,KAAoBlkX,GAAS,gCAEtC/qC,KAAKkvZ,eAAelkX,UAAUD,EAAQk1W,GAEtCjgZ,KAAK2oW,YAAY,KACnB,EASAA,YAAa,SAAUnkW,GACrB,IAAIggZ,GAAgB,EAChBxE,EAAgBhgZ,KAAKkvZ,eAEzB,IAAK1qZ,GAAiB,aAATA,EAAqB,CAChC,IAAI2qZ,EAAanP,EAAcoP,YAAqB,aAAT5qZ,GAEtCxE,KAAK+qC,QAAmB,aAATvmC,GAGlBxE,KAAK21X,cACL31X,KAAK8iQ,YAAYqsJ,IAHjBE,EAAShvZ,KAAKL,KAAMmvZ,GAMtB3K,GAAgB,CAClB,CAMA,GAJa,aAAThgZ,GAAgC,UAATA,GACzBxE,KAAK21X,eAGFnxX,GAAiB,aAATA,GAAgC,aAATA,EAAqB,CACvD,IAAI8qZ,EAAiBtP,EAAcuP,kBAAkBvvZ,MACrDsvZ,IAAmBtvZ,KAAK8iQ,YAAYwsJ,GAAiB9K,GAAgB,EACvE,CAEA,IAAKhgZ,GAAiB,aAATA,GAAgC,UAATA,EAAkB,CACpD,IAAIgrZ,EAAexP,EAAcyP,eAAezvZ,KAAMA,KAAKqmT,MAEvDmpG,EAAaxtZ,QACf01G,EAAK83S,GAAc,SAAUE,GAC3B1vZ,KAAK8iQ,YAAY4sJ,EAAalL,GAAgB,EAChD,GAAGxkZ,KAEP,CAEA,OAAOwkZ,CACT,EAKA1hJ,YAAa,SAAUm3B,GACrB,IAAIlvP,EAAS/qC,KAAK+qC,OACd4kX,EAAgB3vZ,KAAKq+Y,eACrBuR,EAAc,GAkBlB,SAASC,EAAen8K,EAAUwC,GAChC,IAAI45K,EAAmBzoI,EAAUooD,iBAAiBx1C,EAAUvmD,IACxDq8K,EAAY1oI,EAAUy1D,gBAAgB6yE,EAAczsZ,IAAIwwO,GAAWo8K,GACvEzoI,EAAU01D,cAAcgzE,GAExBr4S,EAAKq4S,GAAW,SAAUvqY,EAAMvjB,GAC9B,IAAI4gG,EAAMr9E,EAAKulB,OAEXzpC,EAASuhG,KACXr9E,EAAK+4T,QAAQ7qG,SAAWA,EACxBluN,EAAK+4T,QAAQ5qG,QAAUq8K,EAAiBt8K,EAAU7wI,EAAKr9E,EAAK84T,OAEhE,IACA,IAAIvpD,EAAkBk7H,EAAqBN,EAAez5K,GAC1DnrM,EAAO2oM,GAAY,GACnBi8K,EAAcn9Y,IAAIkhO,EAAU,IAC5Bh8H,EAAKq4S,GAAW,SAAU9yE,EAAYh7U,GACpC,IAAIkyO,EAAiB8oG,EAAWqB,MAC5B+vE,EAAepxE,EAAWlyS,OAK9B,GAJAyyV,EAAOl8X,EAAS+sZ,IAAiBl6K,EAAgB,8BAI5Ck6K,EAGE,CACL,IAAI6B,EAAsBt0E,EAAeuyC,SAASz6I,EAAUupG,EAAWsB,QAAQ5qG,SAAS,GAExF,GAAIQ,GAAkBA,EAAejnO,cAAgBgjZ,EACnD/7K,EAAe1vO,KAAOw4U,EAAWsB,QAAQ95U,KAEzC0vO,EAAe2uB,YAAYurJ,EAAcruZ,MACzCm0O,EAAe0sD,cAAcwtH,GAAc,OACtC,CAEL,IAAI13D,EAAWjzO,EAAO,CACpBqxK,gBAAiBA,EACjB2f,eAAgBzyS,GACfg7U,EAAWsB,SACdpqG,EAAiB,IAAI+7K,EAAoB7B,EAAcruZ,KAAMA,KAAM22V,GACnEjzO,EAAOywH,EAAgBwiH,GACvBxiH,EAAez8K,KAAK22V,EAAcruZ,KAAMA,KAAM22V,GAK9CxiH,EAAe0sD,cAAc,MAAM,EACrC,CACF,MAzBE1sD,EAAe2uB,YAAY,CAAC,EAAG9iQ,MAC/Bm0O,EAAe0sD,cAAc,CAAC,GAAG,GA0BnC8uH,EAAczsZ,IAAIwwO,GAAUzxO,GAASkyO,EACrCppM,EAAO2oM,GAAUzxO,GAASkyO,EAAeppM,MAC3C,GAAG/qC,MAEc,WAAb0zO,GACFy8K,EAAoBnwZ,KAAM2vZ,EAAczsZ,IAAI,UAEhD,CA3EA61Y,EAAqB/4Y,MAGrB03G,EAAKuiL,GAAW,SAAUm2H,EAAiB18K,GAClB,MAAnB08K,IAICx0E,EAAe1vO,SAASwnI,GAGlBA,GACTk8K,EAAY3rZ,KAAKyvO,GAFjB3oM,EAAO2oM,GAAgC,MAApB3oM,EAAO2oM,GAAoBp/M,EAAM87X,GAAmBpyS,EAAMjzE,EAAO2oM,GAAW08K,GAAiB,GAIpH,IACAx0E,EAAey0E,kBAAkBT,EAAah0E,EAAe00E,uBAAwBT,EAAgB7vZ,MA8DrGA,KAAKuwZ,kBAAoBp8H,EAAcn0R,KAAKwwZ,eAAiBxwZ,KAAKwwZ,gBAAkB,GACtF,EAOA1hD,UAAW,WACT,IAAI/jU,EAASzW,EAAMt0B,KAAK+qC,QAgBxB,OAfA2sE,EAAK3sE,GAAQ,SAAUo5D,EAAMuvI,GAC3B,GAAIkoG,EAAe1vO,SAASwnI,GAAW,CACjCvvI,EAAOkjL,EAAUooD,iBAAiBtrO,GAEtC,IAFA,IAESngG,EAAImgG,EAAKniG,OAAS,EAAGgC,GAAK,EAAGA,IAEhCqjR,EAAUopI,UAAUtsT,EAAKngG,KAC3BmgG,EAAKlrE,OAAOj1B,EAAG,GAInB+mC,EAAO2oM,GAAYvvI,CACrB,CACF,WACOp5D,EAAOkkX,GACPlkX,CACT,EAKAilV,SAAU,WACR,OAAOhwX,KAAKi+Y,MACd,EAOAt4H,aAAc,SAAUjyC,EAAUvsI,GAChC,IAAIlwF,EAAOjX,KAAKq+Y,eAAen7Y,IAAIwwO,GAEnC,GAAIz8N,EACF,OAAOA,EAAKkwF,GAAO,EAEvB,EAYA4kM,gBAAiB,SAAU22G,GACzB,IAAIhvK,EAAWgvK,EAAUhvK,SAEzB,IAAKA,EACH,MAAO,GAGT,IAUIhwO,EAVAzB,EAAQygZ,EAAUzgZ,MAClBuH,EAAKk5Y,EAAUl5Y,GACf/E,EAAOi+Y,EAAUj+Y,KAEjB0/L,EAAOnkM,KAAKq+Y,eAAen7Y,IAAIwwO,GAEnC,IAAKvvC,IAASA,EAAKniM,OACjB,MAAO,GAKT,GAAa,MAATC,EACG6E,EAAQ7E,KACXA,EAAQ,CAACA,IAGXyB,EAASssB,EAAOtG,EAAIznB,GAAO,SAAUklG,GACnC,OAAOg9F,EAAKh9F,EACd,KAAI,SAAUn4F,GACZ,QAASA,CACX,SACK,GAAU,MAANxF,EAAY,CACrB,IAAIknZ,EAAY5pZ,EAAQ0C,GACxB9F,EAASssB,EAAOm0K,GAAM,SAAUwsN,GAC9B,OAAOD,GAAar5Y,EAAQ7N,EAAImnZ,EAAInnZ,KAAO,IAAMknZ,GAAaC,EAAInnZ,KAAOA,CAC3E,GACF,MAAO,GAAY,MAAR/E,EAAc,CACvB,IAAImsZ,EAAc9pZ,EAAQrC,GAC1Bf,EAASssB,EAAOm0K,GAAM,SAAUwsN,GAC9B,OAAOC,GAAev5Y,EAAQ5S,EAAMksZ,EAAIlsZ,OAAS,IAAMmsZ,GAAeD,EAAIlsZ,OAASA,CACrF,GACF,MAEEf,EAASygM,EAAKhiM,QAGhB,OAAO0uZ,EAAgBntZ,EAAQg/Y,EACjC,EA8BA93I,eAAgB,SAAU83I,GACxB,IAAI7hT,EAAQ6hT,EAAU7hT,MAClB6yI,EAAWgvK,EAAUhvK,SACrBo9K,EAAYC,EAAalwT,GACzBn9F,EAASotZ,EAAY9wZ,KAAK+rS,gBAAgB+kH,GAAa9wZ,KAAKq+Y,eAAen7Y,IAAIwwO,GACnF,OAAOs9K,EAASH,EAAgBntZ,EAAQg/Y,IAExC,SAASqO,EAAa9sS,GACpB,IAAIgtS,EAAYv9K,EAAW,QACvBw9K,EAASx9K,EAAW,KACpBy9K,EAAWz9K,EAAW,OAC1B,OAAOzvH,GAAsB,MAAhBA,EAAEgtS,IAAmC,MAAbhtS,EAAEitS,IAAkC,MAAfjtS,EAAEktS,GAMxD,KAN6E,CAC/Ez9K,SAAUA,EAEVzxO,MAAOgiH,EAAEgtS,GACTznZ,GAAIy6G,EAAEitS,GACNzsZ,KAAMw/G,EAAEktS,GAEZ,CAEA,SAASH,EAASj4U,GAChB,OAAO2pU,EAAU1yX,OAASA,EAAO+oD,EAAK2pU,EAAU1yX,QAAU+oD,CAC5D,CACF,EAyBA06J,cAAe,SAAUC,EAAU/6J,EAAI54E,GACrC,IAAI4vZ,EAAgB3vZ,KAAKq+Y,eAEzB,GAAwB,oBAAb3qK,EACT3zO,EAAU44E,EACVA,EAAK+6J,EACLi8K,EAAcj4S,MAAK,SAAUt/C,EAAY87K,GACvCx8H,EAAKt/C,GAAY,SAAUD,EAAWl2D,GACpC02E,EAAGt4E,KAAKN,EAASm0O,EAAe/7K,EAAWl2D,EAC7C,GACF,SACK,GAAIyxT,EAAShgF,GAClBh8H,EAAKi4S,EAAczsZ,IAAIwwO,GAAW/6J,EAAI54E,QACjC,GAAIuB,EAASoyO,GAAW,CAC7B,IAAI09K,EAAcpxZ,KAAK4qQ,eAAel3B,GACtCh8H,EAAK05S,EAAaz4U,EAAI54E,EACxB,CACF,EAMAk0V,gBAAiB,SAAUxvV,GACzB,IAAIunC,EAAShsC,KAAKq+Y,eAAen7Y,IAAI,UAErC,OAAO8sB,EAAOgc,GAAQ,SAAUqlX,GAC9B,OAAOA,EAAU5sZ,OAASA,CAC5B,GACF,EAMA6qT,iBAAkB,SAAU5wE,GAC1B,OAAO1+O,KAAKq+Y,eAAen7Y,IAAI,UAAUw7O,EAC3C,EASA6uK,gBAAiB,SAAU55K,GACzB,IAAI3nM,EAAShsC,KAAKq+Y,eAAen7Y,IAAI,UAErC,OAAO8sB,EAAOgc,GAAQ,SAAUqlX,GAC9B,OAAOA,EAAU19K,UAAYA,CAC/B,GACF,EAKA29K,UAAW,WACT,OAAOtxZ,KAAKq+Y,eAAen7Y,IAAI,UAAUf,OAC3C,EAKAovZ,eAAgB,WACd,OAAOvxZ,KAAKq+Y,eAAen7Y,IAAI,UAAUlB,MAC3C,EASAmwT,WAAY,SAAUx5O,EAAI54E,GACxByxZ,EAAwBxxZ,MACxB03G,EAAK13G,KAAKwwZ,gBAAgB,SAAUiB,GAClC,IAAIzlX,EAAShsC,KAAKq+Y,eAAen7Y,IAAI,UAAUuuZ,GAE/C94U,EAAGt4E,KAAKN,EAASisC,EAAQylX,EAC3B,GAAGzxZ,KACL,EAQAkyV,cAAe,SAAUv5Q,EAAI54E,GAC3B23G,EAAK13G,KAAKq+Y,eAAen7Y,IAAI,UAAWy1E,EAAI54E,EAC9C,EAUA6qP,iBAAkB,SAAUjX,EAASh7J,EAAI54E,GACvCyxZ,EAAwBxxZ,MACxB03G,EAAK13G,KAAKwwZ,gBAAgB,SAAUiB,GAClC,IAAIzlX,EAAShsC,KAAKq+Y,eAAen7Y,IAAI,UAAUuuZ,GAE3CzlX,EAAO2nM,UAAYA,GACrBh7J,EAAGt4E,KAAKN,EAASisC,EAAQylX,EAE7B,GAAGzxZ,KACL,EASAwsP,oBAAqB,SAAU7Y,EAASh7J,EAAI54E,GAC1C,OAAO23G,EAAK13G,KAAKutZ,gBAAgB55K,GAAUh7J,EAAI54E,EACjD,EAKA4sP,iBAAkB,SAAU/Y,GAE1B,OADA49K,EAAwBxxZ,MACyC,MAA1DA,KAAKuwZ,kBAAkBrtZ,IAAI0wO,EAAY8gE,eAChD,EAKAp+C,wBAAyB,WACvB,OAAQt2P,KAAKwwZ,gBAAkB,IAAIruZ,OACrC,EAMAg4V,aAAc,SAAUxhR,EAAI54E,GAC1ByxZ,EAAwBxxZ,MACxB,IAAI0xZ,EAAiB1hY,EAAOhwB,KAAKq+Y,eAAen7Y,IAAI,UAAWy1E,EAAI54E,GACnEowZ,EAAoBnwZ,KAAM0xZ,EAC5B,EACA/7B,YAAa,SAAUniJ,GACrB,IAAIm8K,EAAgB3vZ,KAAKq+Y,eACzB8R,EAAoBnwZ,KAAM2vZ,EAAczsZ,IAAI,WAC5C,IAAIyuZ,EAAiB,GACrBhC,EAAcj4S,MAAK,SAAUt/C,EAAY87K,GACvCy9K,EAAe1tZ,KAAKiwO,EACtB,IACA0nG,EAAey0E,kBAAkBsB,EAAgB/1E,EAAe00E,wBAAwB,SAAUp8K,EAAegC,GAC/Gx+H,EAAKi4S,EAAczsZ,IAAIgxO,IAAgB,SAAU/7K,IAC5B,WAAlB+7K,IAA+B09K,EAAkBz5V,EAAWq7K,KAAar7K,EAAUw9T,aACtF,GACF,GACF,IAGF,SAASi8B,EAAkBh+K,EAAaJ,GACtC,GAAIA,EAAS,CACX,IAAIvxO,EAAQuxO,EAAQq+K,YAChBroZ,EAAKgqO,EAAQO,SACbtvO,EAAO+uO,EAAQ6hB,WACnB,OAAgB,MAATpzP,GAAiB2xO,EAAY8gE,iBAAmBzyS,GAAe,MAANuH,GAAcoqO,EAAYpqO,KAAOA,GAAc,MAAR/E,GAAgBmvO,EAAYnvO,OAASA,CAC9I,CACF,CAMA,SAASqtZ,EAAW/mX,EAAQ8yW,GAG1B,IAAIkU,EAAqBhnX,EAAOna,QAAUma,EAAOinX,WACjDt6S,EAAKmmS,GAAO,SAAUoU,EAAWxtZ,GAClB,eAATA,GAAyBstZ,GAKxBn2E,EAAe1vO,SAASznG,KACF,kBAAdwtZ,EACTlnX,EAAOtmC,GAASsmC,EAAOtmC,GAA2Bu5G,EAAMjzE,EAAOtmC,GAAOwtZ,GAAW,GAAlD39X,EAAM29X,GAEjB,MAAhBlnX,EAAOtmC,KACTsmC,EAAOtmC,GAAQwtZ,GAIvB,GACF,CAEA,SAAS5C,EAASF,GAIhBnvZ,KAAK+qC,OAAS,CAAC,EACf/qC,KAAK+qC,OAAOkkX,GAAoB,EAQhCjvZ,KAAKq+Y,eAAiBlqH,EAAc,CAClCnoP,OAAQ,KASVhsC,KAAKwwZ,eACLxwZ,KAAKuwZ,kBACLuB,EAAW3C,EAAYnvZ,KAAKi+Y,OAAOlzW,QAEnCizE,EAAMmxS,EAAYJ,GAAe,GACjC/uZ,KAAK8iQ,YAAYqsJ,EACnB,CAQA,SAASc,EAAqBN,EAAex5U,GACtCrvE,EAAQqvE,KACXA,EAAQA,EAAQ,CAACA,GAAS,IAG5B,IAAIrB,EAAM,CAAC,EAIX,OAHA4iC,EAAKvhC,GAAO,SAAU3xE,GACpBswE,EAAItwE,IAASmrZ,EAAczsZ,IAAIsB,IAAS,IAAIrC,OAC9C,IACO2yE,CACT,CAMA,SAASk7U,EAAiBt8K,EAAU26K,EAAc6D,GAChD,IAAIv+K,EAAU06K,EAAa7pZ,KAAO6pZ,EAAa7pZ,KAAO0tZ,EAAiBA,EAAev+K,QACpFioG,EAAeo0E,iBAAiBt8K,EAAU26K,GAE5C,OAAO16K,CACT,CAMA,SAASw8K,EAAoBz9K,EAAS4X,GACpC5X,EAAQ69K,kBAAoBp8H,EAAczhD,EAAQ89K,eAAiB9mY,EAAI4gO,GAAc,SAAUt+M,GAC7F,OAAOA,EAAO0oQ,cAChB,KAAM,GACR,CAMA,SAASm8G,EAAgBz4V,EAAYsqV,GAGnC,OAAOA,EAAUp8Y,eAAe,WAAa0pB,EAAOooC,GAAY,SAAUu4V,GACxE,OAAOA,EAAIh9K,UAAY+uK,EAAU/uK,OACnC,IAAKv7K,CACP,CAMA,SAASo5V,EAAwB9+K,GAAU,CAE3CsW,EAAM6yJ,EAAamT,GACnB,IAAIvhY,EAAWouX,EACf16Y,EAAOD,QAAUusB,C,wBChsBjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB+mS,EAAM/mS,EAAQ,OAEdiyO,EAASjyO,EAAQ,OAEjBm6P,EAAYloB,EAAOkoB,UAEnBolH,EAASv/W,EAAQ,MAEjBigS,EAAoBs/E,EAAOt/E,kBAC3Bu/E,EAAmBD,EAAOC,iBAE1BmqB,EAAiB3pY,EAAQ,OAEzB4pY,EAAiB5pY,EAAQ,OAEzB6pY,EAAiB7pY,EAAQ,OAEzB8pY,EAAiB9pY,EAAQ,MAwBzBwgO,EAAQ1W,EAAO0W,MACf45B,EAAQD,IASZ,SAAS1rC,EAAMlsM,EAAQg8M,EAAarU,GAKlC1yO,KAAK+mP,YAAcA,EAMnB/mP,KAAK0yO,QAAUA,EAMf1yO,KAAK+qC,OAASA,CAShB,CAsGA,SAASwnX,EAAM/yY,EAAKgzY,EAASzrK,GAC3B,IAAK,IAAI/iP,EAAI,EAAGA,EAAIwuZ,EAAQxwZ,OAAQgC,IAElC,GAAKwuZ,EAAQxuZ,KAKbwb,EAAMA,GAAsB,kBAARA,EAAmBA,EAAIgzY,EAAQxuZ,IAAM,KAE9C,MAAPwb,GACF,MAQJ,OAJW,MAAPA,GAAeunO,IACjBvnO,EAAMunO,EAAY7jP,IAAIsvZ,IAGjBhzY,CACT,CAGA,SAASy8F,EAAUs1I,EAAOr0L,GACxB,IAAIu1V,EAAkB7vI,EAAMrxB,GAAOt1I,UACnC,OAAOw2S,EAAkBA,EAAgBpyZ,KAAKkxP,EAAOr0L,GAAQq0L,EAAMxK,WACrE,CA9HA9P,EAAM1vO,UAAY,CAChB2F,YAAa+pO,EAMbv/K,KAAM,KAKNorM,YAAa,SAAU/3N,GACrBunM,EAAOt0H,MAAMh+G,KAAK+qC,OAAQA,GAAQ,EACpC,EAOA7nC,IAAK,SAAUg6D,EAAM+rU,GACnB,OAAY,MAAR/rU,EACKl9D,KAAK+qC,OAGPwnX,EAAMvyZ,KAAK+qC,OAAQ/qC,KAAK4jQ,UAAU1mM,IAAQ+rU,GAAgBhtR,EAAUj8G,KAAMk9D,GACnF,EAOAwgL,WAAY,SAAU75O,EAAKolY,GACzB,IAAIl+V,EAAS/qC,KAAK+qC,OACd/7B,EAAgB,MAAV+7B,EAAiBA,EAASA,EAAOlnC,GACvCkjP,GAAekiJ,GAAgBhtR,EAAUj8G,KAAM6D,GAMnD,OAJW,MAAPmL,GAAe+3O,IACjB/3O,EAAM+3O,EAAYrJ,WAAW75O,IAGxBmL,CACT,EAOAwqO,SAAU,SAAUt8K,EAAM6pL,GACxB,IACI2rK,EADAlzY,EAAc,MAAR09C,EAAel9D,KAAK+qC,OAASwnX,EAAMvyZ,KAAK+qC,OAAQmyB,EAAOl9D,KAAK4jQ,UAAU1mM,IAGhF,OADA6pL,EAAcA,IAAgB2rK,EAAkBz2S,EAAUj8G,KAAMk9D,KAAUw1V,EAAgBl5K,SAASt8K,GAC5F,IAAI+5K,EAAMz3N,EAAKunO,EAAa/mP,KAAK0yO,QAC1C,EAKAhsI,QAAS,WACP,OAAsB,MAAf1mG,KAAK+qC,MACd,EACA4qV,YAAa,WAAa,EAE1BrhW,MAAO,WACL,IAAI2pR,EAAOj+S,KAAKkN,YAChB,OAAO,IAAI+wS,EAAK3rE,EAAOh+M,MAAMt0B,KAAK+qC,QACpC,EACA4nX,YAAa,SAAUvzQ,GAAa,EAGpCwkH,UAAW,SAAU1mM,GAKnB,MAJoB,kBAATA,IACTA,EAAOA,EAAK55D,MAAM,MAGb45D,CACT,EAOA2mM,mBAAoB,SAAU4uJ,GAC5B7vI,EAAM5iR,MAAMi8G,UAAYw2S,CAC1B,EACAt5K,mBAAoB,WAClB,IAAKo2E,EAAIn0O,KAAM,CACb,GAA6B,MAAzBp7E,KAAK+qC,OAAO/Z,UACd,QAAShxB,KAAK+qC,OAAO/Z,UAChB,GAAIhxB,KAAK+mP,YACd,OAAO/mP,KAAK+mP,YAAY5N,oBAE5B,CACF,GAgCFsvE,EAAkBxxE,GAClB+wJ,EAAiB/wJ,GACjB+R,EAAM/R,EAAOk7K,GACbnpK,EAAM/R,EAAOm7K,GACbppK,EAAM/R,EAAOo7K,GACbrpK,EAAM/R,EAAOq7K,GACb,IAAI7kY,EAAWwpN,EACf91O,EAAOD,QAAUusB,C,iCCzNjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB6+P,EAAY7+P,EAAQ,OAEpBozT,EAAiBpzT,EAAQ,OA0BzBkvF,EAAO46H,EAAO56H,KACdpjF,EAAQg+M,EAAOh+M,MACf5K,EAAM4oN,EAAO5oN,IACbs0F,EAAQs0H,EAAOt0H,MACf40S,EAAY,mBAyDhB,SAAS9W,EAAcnxS,GAKrB3qG,KAAKqmT,KAAO17M,EAMZ3qG,KAAK6yZ,iBAAmB,GAMxB7yZ,KAAK8yZ,WAAa,GAMlB9yZ,KAAK+yZ,cAQL/yZ,KAAKgzZ,qBAAuB,GAM5BhzZ,KAAKizZ,cAMLjzZ,KAAKkzZ,cACP,CAgJA,SAASC,EAAeC,EAAWnT,EAAyBl+E,GAC1D,IAEIsxF,EACAlE,EAHAmE,EAAkB,GAClBC,EAAY,GAIZprD,EAAcirD,EAAUhrD,SAa5B,GAXIgrD,EAAUjE,aACZA,EAAaiE,EAAUjE,aAIrBhnD,GAAeirD,EAAUzzZ,WAC3BwvZ,EAAaA,GAAc,CAAC,EAC5BmE,GAAmBF,EAAUzzZ,SAAW,IAAIwC,SAI1CixZ,EAAUI,MAAO,CACnBrE,EAAaA,GAAc,CAAC,EAC5B,IAAIqE,EAAQJ,EAAUI,MACtB97S,EAAK87S,GAAO,SAAUC,GAChBA,GAAeA,EAAY1oX,SACzB0oX,EAAY5yT,MACd0yT,EAAUtvZ,KAAKwvZ,GACLJ,IAEVA,EAAeI,GAGrB,GACF,CAqBA,OAlBKtE,IACHA,EAAaiE,GAKVjE,EAAW/mD,WACd+mD,EAAW/mD,SAAWD,GAIxBzwP,EAAK,CAACy3S,GAAYluZ,OAAOqyZ,GAAiBryZ,OAAOqxO,EAAO5oN,IAAI6pY,GAAW,SAAUC,GAC/E,OAAOA,EAAMzoX,MACf,MAAK,SAAUA,GACb2sE,EAAKuoS,GAAyB,SAAUyT,GACtCA,EAAW3oX,EAAQg3R,EACrB,GACF,IACO,CACLotF,WAAYA,EACZmE,gBAAiBA,EACjBD,aAAcA,EACdE,UAAWA,EAEf,CAQA,SAASI,EAAgB9yT,EAAOu+M,EAASC,GACvC,IAAIu0G,EAAU,CACZprX,MAAO42Q,EACP32Q,OAAQ42Q,EACRw0G,YAAaz0G,EAAUC,GAGrBy0G,GAAe,EAenB,OAdAxhL,EAAO56H,KAAK7W,GAAO,SAAU/+F,EAAO+0B,GAClC,IAAIk9X,EAAUl9X,EAAKvb,MAAMs3Y,GAEzB,GAAKmB,GAAYA,EAAQ,IAAOA,EAAQ,GAAxC,CAIA,IAAIjtQ,EAAWitQ,EAAQ,GACnBC,EAAWD,EAAQ,GAAGz0Y,cAErB20Y,EAAQL,EAAQI,GAAWlyZ,EAAOglJ,KACrCgtQ,GAAe,EANjB,CAQF,IACOA,CACT,CAEA,SAASG,EAAQC,EAAMC,EAAQrtQ,GAC7B,MAAiB,QAAbA,EACKotQ,GAAQC,EACO,QAAbrtQ,EACFotQ,GAAQC,EAGRD,IAASC,CAEpB,CAEA,SAASC,EAAcC,EAAUC,GAE/B,OAAOD,EAASvpZ,KAAK,OAASwpZ,EAASxpZ,KAAK,IAC9C,CAwBA,SAASg4P,EAAYyxJ,EAAWt6H,GAC9BA,EAAYA,GAAa,CAAC,EAC1BviL,EAAKuiL,GAAW,SAAUu6H,EAAW9gL,GACnC,GAAiB,MAAb8gL,EAAJ,CAIA,IAAIC,EAAYF,EAAU7gL,GAE1B,GAAKkoG,EAAe1vO,SAASwnI,GAEtB,CACL8gL,EAAYntI,EAAUooD,iBAAiB+kF,GACvCC,EAAYptI,EAAUooD,iBAAiBglF,GACvC,IAAI1E,EAAY1oI,EAAUy1D,gBAAgB23E,EAAWD,GACrDD,EAAU7gL,GAAYhqN,EAAIqmY,GAAW,SAAUvqY,GAC7C,OAAOA,EAAKulB,QAAUvlB,EAAK84T,MAAQtgO,EAAMx4F,EAAK84T,MAAO94T,EAAKulB,QAAQ,GAAQvlB,EAAK84T,OAAS94T,EAAKulB,MAC/F,GACF,MAREwpX,EAAU7gL,GAAY11H,EAAMy2S,EAAWD,GAAW,EALpD,CAcF,GACF,CA5RA1Y,EAAcv0Y,UAAY,CACxB2F,YAAa4uY,EASb9wW,UAAW,SAAUooX,EAAWnT,GAC1BmT,GAEF9gL,EAAO56H,KAAK2vK,EAAUooD,iBAAiB2jF,EAAUpnX,SAAS,SAAUA,GAClEA,GAAUA,EAAO/sB,MAAQqzN,EAAOj8N,aAAa21B,EAAO/sB,OAASqzN,EAAO4sK,eAAelzW,EAAO/sB,KAC5F,IAMFm0Y,EAAY9+X,EAAM8+X,GAGlB,IAAIsB,EAAkB10Z,KAAKizZ,cACvB0B,EAAkBxB,EAAe9yZ,KAAKL,KAAMozZ,EAAWnT,GAA0ByU,GACrF10Z,KAAKkzZ,eAAiByB,EAAgBxF,WAElCuF,GAEF5xJ,EAAY4xJ,EAAgBvF,WAAYwF,EAAgBxF,YAIpDwF,EAAgBrB,gBAAgBtxZ,SAClC0yZ,EAAgBpB,gBAAkBqB,EAAgBrB,iBAGhDqB,EAAgBpB,UAAUvxZ,SAC5B0yZ,EAAgBnB,UAAYoB,EAAgBpB,WAG1CoB,EAAgBtB,eAClBqB,EAAgBrB,aAAesB,EAAgBtB,eAGjDrzZ,KAAKizZ,cAAgB0B,CAEzB,EAMAvF,YAAa,SAAUwF,GACrB,IAAIC,EAAe70Z,KAAKizZ,cAOxB,OAJAjzZ,KAAK6yZ,iBAAmBnpY,EAAImrY,EAAavB,gBAAiBh/X,GAC1Dt0B,KAAK8yZ,WAAappY,EAAImrY,EAAatB,UAAWj/X,GAC9Ct0B,KAAK+yZ,cAAgBz+X,EAAMugY,EAAaxB,cACxCrzZ,KAAKgzZ,qBAAuB,GACrB1+X,EAAMsgY,EAKXC,EAAa1F,WAAanvZ,KAAKkzZ,eACnC,EAMA3D,kBAAmB,SAAU78K,GAC3B,IAAI3nM,EACAuoX,EAAkBtzZ,KAAK6yZ,iBAE3B,GAAIS,EAAgBtxZ,OAAQ,CAG1B,IAAI2gW,EAAgBjwH,EAAQizC,aAAa,YAErCg9E,IACF53T,EAASzW,EAAMg/X,EAAgB3wD,EAAc4D,oBAAoB,GAErE,CAEA,OAAOx7T,CACT,EAMA0kX,eAAgB,SAAU/8K,GACxB,IAAI0sE,EAAUp/S,KAAKqmT,KAAKhkE,WAEpBg9D,EAAWr/S,KAAKqmT,KAAK/jE,YAErBixK,EAAYvzZ,KAAK8yZ,WACjBO,EAAerzZ,KAAK+yZ,cACpB/7Q,EAAU,GACVtzI,EAAS,GAEb,IAAK6vZ,EAAUvxZ,SAAWqxZ,EACxB,OAAO3vZ,EAIT,IAAK,IAAIM,EAAI,EAAGwT,EAAM+7Y,EAAUvxZ,OAAQgC,EAAIwT,EAAKxT,IAC3C2vZ,EAAgBJ,EAAUvvZ,GAAG68F,MAAOu+M,EAASC,IAC/CroK,EAAQ/yI,KAAKD,GAkBjB,OAZKgzI,EAAQh1I,QAAUqxZ,IACrBr8Q,EAAU,EAAE,IAGVA,EAAQh1I,SAAWoyZ,EAAcp9Q,EAASh3I,KAAKgzZ,wBACjDtvZ,EAASgmB,EAAIstH,GAAS,SAAU/0I,GAC9B,OAAOqyB,GAAiB,IAAXryB,EAAeoxZ,EAAatoX,OAASwoX,EAAUtxZ,GAAO8oC,OACrE,KAIF/qC,KAAKgzZ,qBAAuBh8Q,EACrBtzI,CACT,GA2JF,IAAI+pB,EAAWquX,EACf36Y,EAAOD,QAAUusB,C,iCChbjB,IAAIgmB,EAAUjrB,EAAQ,OAIlB8pN,GAFU7+L,EAAQojM,QAETruN,EAAQ,QAEjB+mS,EAAM/mS,EAAQ,OAEd05O,EAAU15O,EAAQ,OAElBssY,EAAa5yJ,EAAQ4yJ,WACrB3yJ,EAAaD,EAAQC,WACrBwxB,EAAYzxB,EAAQyxB,UACpBohI,EAAmB7yJ,EAAQ6yJ,iBAE3B1tI,EAAY7+P,EAAQ,OAEpBozT,EAAiBpzT,EAAQ,OAEzBwmY,EAAoBxmY,EAAQ,OAE5B81U,EAAkB91U,EAAQ,OAE1B4jP,EAAU5jP,EAAQ,MAElBitT,EAAkBrpE,EAAQqpE,gBAC1BiJ,EAAmBtyE,EAAQsyE,iBAE3Bs2E,EAAQxsY,EAAQ,OAEhBysY,EAAaD,EAAMC,WAEnBt6J,EAAgBnyO,EAAQ,MAExBywX,EAAgBt+I,EAAcs+I,cAC9Bl5J,EAAY4a,EAAc5a,UAE1BijC,EAAgBx6P,EAAQ,OAExBy6P,EAAmBD,EAAcC,iBAoBjCL,EAAQyE,EAAU1E,YAClB/iC,EAAcg8F,EAAel4N,OAAO,CACtCl/G,KAAM,kBAKNk6O,YAAa,EAEbrK,iBAAkB,KAMlBmC,cAAe,KAOfwkB,qBAAsB,KAKtBg2B,sBAAuB,kBAKvBkkI,4BAA6B,wBAQ7BlhI,WAAY,KACZt8N,KAAM,SAAU3sB,EAAQg8M,EAAarU,EAASikH,GAK5C32V,KAAK0+O,YAAc1+O,KAAK00S,eACxB10S,KAAKm1Z,SAAWF,EAAW,CACzB1sY,MAAO6sY,EACP3uT,MAAO4uT,IAETr1Z,KAAKm1Z,SAASp1Z,QAAU,CACtBwxP,MAAOvxP,MAETA,KAAK+iQ,qBAAqBh4N,EAAQ2nM,GAClCumK,EAAcj5Y,MACd,IAAIif,EAAOjf,KAAK8/O,eAAe/0M,EAAQ2nM,GACvC4iL,EAASr2Y,EAAMjf,MACfA,KAAKm1Z,SAASp1Z,QAAQkf,KAAOA,EAM7B2jQ,EAAM5iR,MAAMu1Z,oBAAsBt2Y,EAWlCu2Y,EAAex1Z,KACjB,EAOA+iQ,qBAAsB,SAAUh4N,EAAQ2nM,GACtC,IAAIshD,EAAah0R,KAAKg0R,WAClB4iE,EAAsB5iE,EAAayhD,EAAgB1qS,GAAU,CAAC,EAK9D0qX,EAAez1Z,KAAK2zO,QAEpBioG,EAAe1vO,SAASupT,KAC1BA,GAAgB,UAGlBnjL,EAAOt0H,MAAMjzE,EAAQ2nM,EAAQs9I,WAAW9sX,IAAIlD,KAAK2zO,UACjDrB,EAAOt0H,MAAMjzE,EAAQ/qC,KAAKiwX,oBAE1B5oG,EAAU3sB,gBAAgB3vN,EAAQ,QAAS,CAAC,SAC5C/qC,KAAK2iQ,kBAAkB53N,EAAO9rB,MAE1B+0Q,GACF0qD,EAAiB3zS,EAAQ6rT,EAAqB5iE,EAElD,EACAlxB,YAAa,SAAU4yJ,EAAiBhjL,GAEtCgjL,EAAkBpjL,EAAOt0H,MAAMh+G,KAAK+qC,OAAQ2qX,GAAiB,GAC7D11Z,KAAK2iQ,kBAAkB+yJ,EAAgBz2Y,MACvC,IAAI+0Q,EAAah0R,KAAKg0R,WAElBA,GACF0qD,EAAiB1+U,KAAK+qC,OAAQ2qX,EAAiB1hI,GAGjDilH,EAAcj5Y,MACd,IAAIif,EAAOjf,KAAK8/O,eAAe41K,EAAiBhjL,GAChD4iL,EAASr2Y,EAAMjf,MACfA,KAAKm1Z,SAASxxP,QACd3jK,KAAKm1Z,SAASp1Z,QAAQkf,KAAOA,EAC7B2jQ,EAAM5iR,MAAMu1Z,oBAAsBt2Y,EAClCu2Y,EAAex1Z,KACjB,EACA2iQ,kBAAmB,SAAU1jP,GAI3B,GAAIA,IAASqzN,EAAOj8N,aAAa4I,GAG/B,IAFA,IAAIo4C,EAAQ,CAAC,QAEJrzD,EAAI,EAAGA,EAAIib,EAAKjd,OAAQgC,IAC3Bib,EAAKjb,IAAMib,EAAKjb,GAAGkrC,OACrBm4O,EAAU3sB,gBAAgBz7O,EAAKjb,GAAI,QAASqzD,EAIpD,EAMAyoL,eAAgB,WAAa,EAO7BwxC,WAAY,SAAU1vQ,GAIpB,IAAI3C,EAAOjf,KAAKi7P,aAChBh8O,EAAKqyQ,WAAW1vQ,EAAO3C,KACzB,EAUA8rF,QAAS,SAAU0tJ,GACjB,IAAIk9J,EAAOC,EAAe51Z,MAE1B,GAAI21Z,EAAM,CACR,IAAI12Y,EAAO02Y,EAAK51Z,QAAQkf,KACxB,OAAmB,MAAZw5O,EAAmBx5O,EAAOA,EAAKy5X,cAAcjgJ,EACtD,CAKE,OAAOmqB,EAAM5iR,MAAMif,IAEvB,EAKAgsF,QAAS,SAAUhsF,GACjB,IAAI02Y,EAAOC,EAAe51Z,MAE1B,GAAI21Z,EAAM,CACR,IAAI51Z,EAAU41Z,EAAK51Z,QAEfA,EAAQkf,OAASA,GAAQ02Y,EAAKx8E,iBAChCw8E,EAAKE,aAAa52Y,EAAKsJ,SAGzBxoB,EAAQ+1Z,WAAa72Y,EASjB02Y,IAAS31Z,KAAKm1Z,WAChBp1Z,EAAQkf,KAAOA,EAEnB,CAEA2jQ,EAAM5iR,MAAMif,KAAOA,CACrB,EAMA8gO,UAAW,WACT,OAAOA,EAAU//O,KACnB,EAMAi7P,WAAY,WACV,OAAO2nB,EAAM5iR,MAAMu1Z,mBACrB,EAQAv9K,YAAa,WACX,IAAInF,EAAW7yO,KAAKq0O,iBACpB,OAAOxB,GAAYA,EAASmF,aAAenF,EAASmF,aACtD,EAgBAgsB,cAAe,SAAUnwB,EAAWowB,EAAgBxL,EAAU08B,GAC5D,IAAInpP,EAAShsC,KACbm1R,EAAaA,GAAc,OAC3B,IAAIK,EAAyB,SAAfL,EAAwB,QAAU,KAC5C4gI,EAA4B,aAAf5gI,EACb4hF,EAAU,CAAC,EACXi/C,EAAW,EAEf,SAASC,EAAiBn0Z,GAGxB,IAAIo0Z,EAAY5jL,EAAOhnN,OAAOxpB,GAAO,SAAUo0Z,EAAWlnZ,EAAKm4F,GAC7D,IAAI44P,EAAU9gV,EAAK23O,iBAAiBzvJ,GACpC,OAAO+uT,GAAan2D,IAA+B,IAApBA,EAAQx5E,SAA4C,MAAvBw5E,EAAQ20C,YACtE,GAAG,GACChxY,EAAS,GAMb,SAASyyZ,EAAYnnZ,EAAKijI,GACxB,IAAI0kH,EAAU13O,EAAK23O,iBAAiB3kH,GAEpC,GAAK0kH,IAAyC,IAA9BA,EAAQmrB,UAAUyE,QAAlC,CAIA,IAAI2hF,EAAUvxG,EAAQnyP,KAClB4xZ,EAAW,MAAQpqX,EAAO0yM,YAAc,KAAOs3K,EAC/CK,EAAUtB,EAAiB,CAC7BnkY,MAAOA,EACPpsB,KAAM,UACN2wR,WAAYA,EACZ6gI,SAAUI,IAERE,EAAgC,kBAAZD,EAAuBA,EAAUA,EAAQzxX,QAC7DwlH,GAAU8rQ,EAAYI,EAAan0J,EAAWxL,EAAQ+9I,aAAe,KAAO,KAAO,IACvFvyI,EAAuB,YAAZ+lG,EAAwBl5V,EAAM,GAAiB,SAAZk5V,EAAqBjkG,EAAiB,GAAK6wJ,EAAW,sBAAuB9lZ,GAAO2kR,EAAU3kR,IAC5Io7I,GAAU1mJ,EAAOO,KAAKmmJ,GAElB2rQ,IACFh/C,EAAQq/C,GAAYxlY,IAClBolY,EAjBJ,CAmBF,CA7BAO,EAAYv0Z,OAASswO,EAAO56H,KAAK6+S,GAAa,SAAUtkR,GACtDkkR,EAAYlzI,EAAiBhkQ,EAAM40N,EAAW5hG,GAAMA,EACtD,IACEqgG,EAAO56H,KAAK51G,EAAOq0Z,GA4BrB,IAAI3gI,EAAU0gI,EAAYH,EAAa,KAAO,QAAU,GACpDnxX,EAAU4wP,EAAU9xR,EAAOoH,KAAK0qR,GAAW,MAC/C,MAAO,CACLL,WAAYA,EACZvwP,QAASA,EACTh5B,MAAOmrW,EAEX,CAEA,SAASy/C,EAAkBxnZ,GAEzB,MAAO,CACLmmR,WAAYA,EACZvwP,QAASu9N,EAAWwxB,EAAU3kR,IAC9BpD,MAAOmrW,EAEX,CAEA,IAAI93V,EAAOjf,KAAK+qG,UACZwrT,EAAct3Y,EAAKysO,aAAa,oBAAoB,GACpD+qK,EAAgBF,EAAYv0Z,OAC5BF,EAAQ9B,KAAK6xQ,YAAYh+B,GACzB6iL,EAAapkL,EAAOxrO,QAAQhF,GAC5B8uB,EAAQ3R,EAAKo+N,cAAcxJ,EAAW,SAEtCvB,EAAOhxO,SAASsvB,IAAUA,EAAMm4P,aAClCn4P,GAASA,EAAMm4P,WAAW,IAAM,CAAC,GAAGn4P,OAGtCA,EAAQA,GAAS,cAEjB,IAAIwkQ,EAAiBqhI,EAAgB,GAAKC,IAAeD,EAAgBR,EAAiBn0Z,GAAyB00Z,EAAhBC,EAAkCxzI,EAAiBhkQ,EAAM40N,EAAW0iL,EAAY,IAAyBG,EAAa50Z,EAAM,GAAKA,GAChO8iC,EAAUwwP,EAAexwP,QACzBwxX,EAAWpqX,EAAO0yM,YAAc,KAAOs3K,EACvCW,EAAU5B,EAAiB,CAC7BnkY,MAAOA,EACPpsB,KAAM,OACN2wR,WAAYA,EACZ6gI,SAAUI,IAEZr/C,EAAQq/C,GAAYxlY,IAClBolY,EACF,IAAIvxZ,EAAOwa,EAAK60N,QAAQD,GACpBwhB,EAAar1P,KAAKyE,KAEjB4iR,EAAUkqE,gBAAgBvxV,QAC7Bq1P,EAAa,IAGfA,EAAaA,EAAa8M,EAAW9M,IAAgB4O,EAA2B,KAAVuxB,GAAkB,GACxF,IAAIohI,EAA8B,kBAAZD,EAAuBA,EAAUA,EAAQ/xX,QAC3DtiB,EAAQ2hP,EAAgG2yJ,EAAWvhK,EAAazwN,EAAvGywN,EAAauhK,GAAYnyZ,EAAO09P,EAAW19P,GAAQ,KAAOmgC,EAAUA,GACjG,MAAO,CACLtiB,KAAMA,EACNy0V,QAASA,EAEb,EAKA59H,mBAAoB,WAClB,GAAIo2E,EAAIn0O,KACN,OAAO,EAGT,IAAIy7U,EAAmB72Z,KAAK09O,WAAW,aAQvC,OANIm5K,GACE72Z,KAAK+qG,UAAUxiF,QAAUvoB,KAAK09O,WAAW,wBAC3Cm5K,GAAmB,GAIhBA,CACT,EACAlhC,YAAa,WACX31X,KAAKm1Z,SAASxxP,OAChB,EACAunG,oBAAqB,SAAUzmQ,EAAMqyZ,EAAOC,GAC1C,IAAIrkL,EAAU1yO,KAAK0yO,QAEf9hN,EAAQo+X,EAAkB9jJ,oBAAoB7qQ,KAAKL,KAAMyE,EAAMqyZ,EAAOC,GAM1E,OAJKnmY,IACHA,EAAQ8hN,EAAQw4B,oBAAoBzmQ,EAAMqyZ,EAAOC,IAG5CnmY,CACT,EAMAomY,kBAAmB,SAAUlgK,GAC3B,OAAO92P,KAAKi7P,aAAavP,aAAaoL,GAAU,EAClD,EAMA1gB,eAAgB,WACd,OAAOp2O,KAAKkD,IAAI,cAClB,EAMAmzO,wBAAyB,WACvB,OAAOr2O,KAAKkD,IAAI,uBAClB,EAUAupS,mBAAoB,KAQpBhX,mBAAoB,KAKpBwhI,SAAU,KAOV/mJ,mBAAoB,KAOpBl3B,gBAAiB,OAUnB,SAASw8K,EAAe5hL,GAGtB,IAAInvO,EAAOmvO,EAAYnvO,KAElB4iR,EAAUkqE,gBAAgB39G,KAC7BA,EAAYnvO,KAAOyyZ,EAAkBtjL,IAAgBnvO,EAEzD,CAEA,SAASyyZ,EAAkBtjL,GACzB,IAAI30N,EAAO20N,EAAYqnB,aACnBlE,EAAW93O,EAAKysO,aAAa,cAAc,GAC3CyrK,EAAU,GAKd,OAJA7kL,EAAO56H,KAAKq/I,GAAU,SAAUi3D,GAC9B,IAAIr3D,EAAU13O,EAAK23O,iBAAiBo3D,GACpCr3D,EAAQ+9I,aAAeyiB,EAAQlzZ,KAAK0yP,EAAQ+9I,YAC9C,IACOyiB,EAAQrsZ,KAAK,IACtB,CAEA,SAASsqZ,EAAcr1Z,GACrB,OAAOA,EAAQwxP,MAAM0J,aAAa1yO,OACpC,CAEA,SAAS8sY,EAAct1Z,GACrB,IAAI6zO,EAAc7zO,EAAQwxP,MAE1B,OADA3d,EAAY3oI,QAAQ2oI,EAAYqnB,aAAa68B,gBACtCs/H,CACT,CAEA,SAASA,EAAiBC,EAAOt3Z,GAE3BA,EAAQ+1Z,YAAcuB,EAAM14W,IAAM5+C,EAAQ+1Z,WAAWvtY,SACvDxoB,EAAQwxP,MAAM0J,aAAa68B,aAAa/3R,EAAQ+1Z,WAEpD,CAGA,SAASR,EAASr2Y,EAAM20N,GACtBtB,EAAO56H,KAAKz4F,EAAKuzX,mBAAmB,SAAUz4C,GAC5C96U,EAAKikP,WAAW62F,EAAYznH,EAAOuD,MAAMyhL,EAAkB1jL,GAC7D,GACF,CAEA,SAAS0jL,EAAiB1jL,GACxB,IAAI+hL,EAAOC,EAAehiL,GAEtB+hL,GAEFA,EAAKE,aAAa71Z,KAAKuoB,QAE3B,CAEA,SAASqtY,EAAehiL,GACtB,IAAItyN,GAAasyN,EAAYlB,SAAW,CAAC,GAAGpxN,UACxCi2Y,EAAWj2Y,GAAaA,EAAUk2Y,YAAY5jL,EAAY/lO,KAE9D,GAAI0pZ,EAAU,CAGZ,IAAI5B,EAAO4B,EAASE,YAEpB,GAAI9B,EAAM,CACR,IAAI+B,EAAe/B,EAAK+B,aAEpBA,IACF/B,EAAO+B,EAAax0Z,IAAI0wO,EAAY/lO,KAExC,CAEA,OAAO8nZ,CACT,CACF,CAjFArjL,EAAO0W,MAAMpJ,EAAa0+G,GAC1BhsH,EAAO0W,MAAMpJ,EAAaovK,GAkF1B,IAAIvhY,EAAWmyN,EACfz+O,EAAOD,QAAUusB,C,oBChkBjB,IAAIkqY,EAAW,GAEU,qBAAdt8Y,YACTs8Y,EAAWt8Y,UAAUs8Y,UAAY,IAGnC,IAAIlqY,EAAW,CAQbmD,MAAO,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtH2J,cAAe,CAAC,UAAW,UAAW,WAGtC0X,UAAW,CAIT7X,WAAYu9X,EAASr8Y,MAAM,QAAU,kBAAoB,aAEzD6e,SAAU,GACVH,UAAW,SACXE,WAAY,UAKdgrX,UAAW,KACXl0X,UAAW,OACXijF,kBAAmB,IACnBu0L,wBAAyB,IACzBxlI,gBAAiB,iBACjB4zM,sBAAuB,WACvB9hL,mBAAoB,IAEpBwhD,qBAAsB,IACtBkK,YAAa,IAMb0mC,oBAAqB,IAErB0wI,QAAQ,GAEVz2Z,EAAOD,QAAUusB,C,wBCpEjB,IAAIi6N,EAAkBl/N,EAAQ,OAoB1BojQ,EAAelkC,EAAgB,CAAC,CAAC,OAAQ,SAAU,CAAC,cAAe,CAAC,iBAAkB,CAAC,iBAAkB,CAAC,WAAY,CAAC,iBACvHj6N,EAAW,CACbm+P,aAAc,SAAUjkC,EAAUvwO,GAChC,OAAOw0Q,EAAa5rR,KAAM2nP,EAAUvwO,EACtC,GAEFjW,EAAOD,QAAUusB,C,oBCRjB,IAAIA,EAAW,CACb+vO,mBAAoB,WAClB,MAAO,CACLntN,KAAMrwC,KAAKkD,IAAI,QACfqtC,IAAKvwC,KAAKkD,IAAI,OACdotC,MAAOtwC,KAAKkD,IAAI,SAChBstC,OAAQxwC,KAAKkD,IAAI,UACjBslC,MAAOxoC,KAAKkD,IAAI,SAChBulC,OAAQzoC,KAAKkD,IAAI,UAErB,GAEF/B,EAAOD,QAAUusB,C,wBC9BjB,IAAIgtO,EAASjyO,EAAQ,OAEjBm6P,EAAYloB,EAAOkoB,UACnB8sD,EAAmBh1E,EAAOg1E,iBAoB1B7sD,EAAQD,IAEZ,SAASk1I,EAAuBj9X,EAAQm8X,GAGtC,IAFA,IAAIe,EAAal9X,EAAO54B,OAEfgC,EAAI,EAAGA,EAAI8zZ,EAAY9zZ,IAC9B,GAAI42B,EAAO52B,GAAGhC,OAAS+0Z,EACrB,OAAOn8X,EAAO52B,GAIlB,OAAO42B,EAAOk9X,EAAa,EAC7B,CAEA,IAAIrqY,EAAW,CACbg0X,kBAAmB,WACjB7+H,EAAM5iR,MAAM+3Z,SAAW,EACvBn1I,EAAM5iR,MAAMg4Z,aAAe,CAAC,CAC9B,EASA9sJ,oBAAqB,SAAUzmQ,EAAMqyZ,EAAOC,GAC1CD,EAAQA,GAAS92Z,KACjB,IAAIi4Z,EAAcr1I,EAAMk0I,GACpBiB,EAAWE,EAAYF,UAAY,EACnCC,EAAeC,EAAYD,aAAeC,EAAYD,cAAgB,CAAC,EAE3E,GAAIA,EAAa1xZ,eAAe7B,GAC9B,OAAOuzZ,EAAavzZ,GAGtB,IAAIyzZ,EAAsBzoF,EAAiBzvU,KAAKkD,IAAI,SAAS,IACzDi1Z,EAAsBn4Z,KAAKkD,IAAI,cAAc,GAC7Ck1Z,EAAkC,MAAnBrB,GAA4BoB,EAA4CN,EAAuBM,EAAqBpB,GAAlEmB,EAIrE,GAFAE,EAAeA,GAAgBF,EAE1BE,GAAiBA,EAAap2Z,OAAnC,CAIA,IAAI4uB,EAAQwnY,EAAaL,GAOzB,OALItzZ,IACFuzZ,EAAavzZ,GAAQmsB,GAGvBqnY,EAAYF,UAAYA,EAAW,GAAKK,EAAap2Z,OAC9C4uB,CATP,CAUF,GAEFzvB,EAAOD,QAAUusB,C,wBChFjB,IAAIu1P,EAAgBx6P,EAAQ,OAExBy6P,EAAmBD,EAAcC,iBAEjC/gB,EAAU15O,EAAQ,OAElBusY,EAAmB7yJ,EAAQ6yJ,iBAC3B36C,EAAYl4G,EAAQk4G,UAEpB3/G,EAASjyO,EAAQ,OAEjB8uV,EAAuB78G,EAAO68G,qBAoB9B+gD,EAAsB,cAEtB5qY,EAAW,CAOb+qO,cAAe,SAAU3kB,EAAW4kB,GAClC,IAAIx5O,EAAOjf,KAAK+qG,QAAQ0tJ,GACpBmZ,EAAW5xQ,KAAK6xQ,YAAYh+B,EAAW4kB,GACvC03I,EAAelxX,EAAK02O,YAAY9hB,GAChCpvO,EAAOwa,EAAK60N,QAAQD,GACpBuuC,EAAUnjQ,EAAK2kR,eAAe/vD,GAC9BjjN,EAAQ3R,EAAKo+N,cAAcxJ,EAAW,SACtChQ,EAAc5kN,EAAKo+N,cAAcxJ,EAAW,eAC5CmhH,EAAeh1V,KAAK0yO,QAAQizC,aAAa,WACzC2yI,EAAmBtjE,GAAgBA,EAAa9xV,IAAI,cACpDiyR,EAAamiF,EAAqBghD,GAClC5kL,EAAW1zO,KAAK0zO,SAChB6kL,EAAwB,WAAb7kL,EACXk4J,EAAa3sX,EAAK2sX,WACtB,MAAO,CACL13J,cAAeR,EACf+gE,iBAAkBz0S,KAAK2zO,QACvB+gE,eAAgB10S,KAAK00S,eACrBthE,WAAYmlL,EAAWv4Z,KAAK2zO,QAAU,KACtC+K,YAAa1+O,KAAK0+O,YAClB3K,SAAUwkL,EAAWv4Z,KAAKwJ,GAAK,KAC/B6rP,WAAYkjK,EAAWv4Z,KAAKyE,KAAO,KACnCA,KAAMA,EACNovO,UAAWs8J,EACXlxX,KAAMmjQ,EACN3pB,SAAUA,EACV32P,MAAO8vQ,EACPhhP,MAAOA,EACPizM,YAAaA,EACbg8C,eAAgB+rH,EAAaA,EAAW/rH,eAAiB,KACzDtqB,OAAQq2I,EAAaA,EAAWr2I,OAAS,KACzCijK,OAAQzD,EAAiB,CACvBnkY,MAAOA,EACPukQ,WAAYA,IAGd15B,MAAO,CAAC,aAAc,OAAQ,SAElC,EAYAvF,kBAAmB,SAAUriB,EAAWliN,EAAQ8mO,EAAUgpB,EAAUm8B,GAClEjsR,EAASA,GAAU,SACnB,IAAI1S,EAAOjf,KAAK+qG,QAAQ0tJ,GACpBre,EAAYn7N,EAAKo7N,aAAaxG,GAC9BjyN,EAAS5hB,KAAKw4P,cAAc3kB,EAAW4kB,GAE3B,MAAZgpB,GAAoB7/P,EAAO9f,iBAAiB+E,QAC9C+a,EAAO9f,MAAQ8f,EAAO9f,MAAM2/Q,IAG9B,IAAInzO,EAAY8rM,EAAUl3O,IAAe,WAAXyuB,EAAsB,CAACisR,GAAa,QAAS,aAAe,CAACjsR,EAAQisR,GAAa,QAAS,cAEzH,GAAyB,oBAAdtvQ,EAGT,OAFA1sB,EAAO+P,OAASA,EAChB/P,EAAO62Y,eAAiBh3I,EACjBnzO,EAAU1sB,GACZ,GAAyB,kBAAd0sB,EAAwB,CACxC,IAAI4lC,EAAMkmS,EAAU9rU,EAAW1sB,GAG/B,OAAOsyD,EAAIt4D,QAAQy8Y,GAAqB,SAAU3vX,EAAQupG,GACxD,IAAIz6H,EAAMy6H,EAAIjwI,OAMd,MAJsB,MAAlBiwI,EAAIvjI,OAAO,IAAsC,MAAxBujI,EAAIvjI,OAAO8I,EAAM,KAC5Cy6H,GAAOA,EAAI9vI,MAAM,EAAGqV,EAAM,IAGrByrQ,EAAiBhkQ,EAAM40N,EAAW5hG,EAC3C,GACF,CACF,EAQA4/H,YAAa,SAAU1qK,EAAKsxJ,GAC1B,OAAOwqB,EAAiBjjR,KAAK+qG,QAAQ0tJ,GAAWtxJ,EAClD,EASA68J,cAAe,WAAa,GAG9B7iQ,EAAOD,QAAUusB,C,uBC9IjB,IAAIi6N,EAAkBl/N,EAAQ,OAoB1Bg3N,EAAekI,EAAgB,CAAC,CAAC,OAAQ,SAAU,CAAC,SAAU,eAAgB,CAAC,YAAa,eAAgB,CAAC,WAAY,CAAC,cAAe,CAAC,iBAAkB,CAAC,iBAAkB,CAAC,eAAgB,CAAC,gBAAiB,CAAC,eACnNj6N,EAAW,CACb+xN,aAAc,SAAUmI,EAAUvwO,GAChC,IAAIxL,EAAQ4zO,EAAax/O,KAAM2nP,EAAUvwO,GACrCqiB,EAAWz5B,KAAK4nP,oBAEpB,OADAnuN,IAAa7tB,EAAM6tB,SAAWA,GACvB7tB,CACT,EACAg8O,kBAAmB,WACjB,IAAI8wK,EAAW14Z,KAAKkD,IAAI,cACxB,MAAoB,UAAbw1Z,GAAoC,MAAZA,EAAmB,KAAoB,WAAbA,EAAwB,CAAC,EAAG,GAAK,CAAC,EAAG,EAChG,GAEFv3Z,EAAOD,QAAUusB,C,wBCjCjB,IAAIi6N,EAAkBl/N,EAAQ,OAoB1B+wB,EAAemuM,EAAgB,CAAC,CAAC,YAAa,SAAU,CAAC,SAAU,SAAU,CAAC,WAAY,CAAC,cAAe,CAAC,iBAAkB,CAAC,iBAAkB,CAAC,iBACjJj6N,EAAW,CACb8rB,aAAc,SAAUouM,GACtB,IAAI/7O,EAAQ2tC,EAAav5C,KAAM2nP,GAI/B,OADA/7O,EAAM6tB,SAAWz5B,KAAKq/T,YAAYzzT,EAAMmuB,WACjCnuB,CACT,EACAyzT,YAAa,SAAUtlS,GACJ,MAAbA,IACFA,EAAY,GAGd,IAAI2+X,EAAW14Z,KAAKkD,IAAI,QACpBy1Z,EAAUxyZ,KAAKwI,IAAIorB,EAAW,GAC9B6+X,EAAuB,EAAZ7+X,EACf,MAAoB,UAAb2+X,GAAoC,MAAZA,IAKV,WAAbA,EAAwB,CAACE,EAAUA,GAAY,CAACD,EAASA,GACnE,GAEFx3Z,EAAOD,QAAUusB,C,wBC7CjB,IAAI6kN,EAAS9pN,EAAQ,OAsBrB,SAASiF,EAAS2xH,GAEhB,IAAK,IAAIp7I,EAAI,EAAGA,EAAIo7I,EAAWp9I,OAAQgC,IAChCo7I,EAAWp7I,GAAG,KACjBo7I,EAAWp7I,GAAG,GAAKo7I,EAAWp7I,GAAG,IAIrC,OAAO,SAAUutP,EAAO5J,EAAUvwO,GAGhC,IAFA,IAAIxL,EAAQ,CAAC,EAEJ5H,EAAI,EAAGA,EAAIo7I,EAAWp9I,OAAQgC,IAAK,CAC1C,IAAI+sH,EAAWquB,EAAWp7I,GAAG,GAE7B,KAAI2jP,GAAYrV,EAAOj7N,QAAQswO,EAAU52H,IAAa,GAAK35G,GAAYk7N,EAAOj7N,QAAQD,EAAU25G,GAAY,GAA5G,CAIA,IAAI/hH,EAAMuiP,EAAM7T,WAAW3sH,GAEhB,MAAP/hH,IACFpD,EAAMwzI,EAAWp7I,GAAG,IAAMgL,EAL5B,CAOF,CAEA,OAAOpD,CACT,CACF,CAEAzK,EAAOD,QAAUusB,C,wBCnDjB,IAAIyuQ,EAAc1zQ,EAAQ,MAEtBgpO,EAAchpO,EAAQ,OAoBtBqwY,EAAa,CAAC,YAAa,SAC3BprY,EAAW,CAMbutP,aAAc,SAAU89I,GACtB,IAAIpmL,EAAU1yO,KAAK0yO,QACnB,OAAO1yO,KAAK09O,WAAW,YAAco7K,GAAcpmL,EAAUA,EAAQxvO,IAAI21Z,GAAc,KACzF,EAMAtiK,QAAS,WACP,OAAO/E,EAAY+E,QAAQ,CACzBv8N,UAAWh6B,KAAK09O,WAAW,aAC3BxjN,WAAYl6B,KAAK09O,WAAW,cAC5BvjN,SAAUn6B,KAAK09O,WAAW,YAC1BtjN,WAAYp6B,KAAK09O,WAAW,eAC3B19O,KAAK0yO,QACV,EACA6iE,YAAa,SAAU54Q,GACrB,OAAOu/P,EAAYlzB,gBAAgBrsO,EAAM38B,KAAKu2P,UAAWv2P,KAAK09O,WAAW,SAAU19O,KAAK09O,WAAW,kBAAoB19O,KAAK09O,WAAW,YAAa19O,KAAK09O,WAAW,WAAY19O,KAAK09O,WAAW,cAAe19O,KAAK09O,WAAW,QAAS19O,KAAK09O,WAAW,gBAC1P,GAEFv8O,EAAOD,QAAUusB,C,wBClDjB,IAAIgmB,EAAUjrB,EAAQ,OAIlBoH,GAFU6jB,EAAQojM,QAEVruN,EAAQ,QAEhB2rQ,EAAgBvkQ,EAAMukQ,cAEtBz8K,GADW9nF,EAAM80N,SACV90N,EAAM8nF,MAiDjB,SAASqhT,EAAah4I,GAIpB/gR,KAAK+gR,aAAeA,EAKpB/gR,KAAKkhR,aAAe,GAKpBlhR,KAAKohR,QAAU+S,IAKfn0R,KAAK2hR,gBAAkBwS,IAKvBn0R,KAAKshR,sBAAwB,IAC/B,CAMA,SAASf,EAAwB3sC,GAC/B,IAAImtC,EAAentC,EAAY1wO,IAAI,oBAC/BQ,EAAS,IAAIq1Z,EAAah4I,GAC1Bi4I,EAAQC,EAASl4I,GAErB,GAAIi4I,EAEF,OADAA,EAAMplL,EAAalwO,EAAQA,EAAO09Q,QAAS19Q,EAAOi+Q,iBAC3Cj+Q,CAEX,CAEA,IAAIu1Z,EAAW,CACbr9K,YAAa,SAAUhI,EAAalwO,EAAQ09Q,EAASO,GACnD,IAAI+D,EAAa9xC,EAAY8kJ,uBAAuB,SAAS,GACzD9yG,EAAahyC,EAAY8kJ,uBAAuB,SAAS,GAC7Dh1X,EAAOw9Q,aAAe,CAAC,IAAK,KAC5BE,EAAQ5uQ,IAAI,IAAKkzQ,GACjBtE,EAAQ5uQ,IAAI,IAAKozQ,GAEbg+F,EAAWl+F,KACb/D,EAAgBnvQ,IAAI,IAAKkzQ,GACzBhiR,EAAO49Q,sBAAwB,GAG7BsiG,EAAWh+F,KACbjE,EAAgBnvQ,IAAI,IAAKozQ,GACzBliR,EAAO49Q,sBAAiC59Q,EAAO49Q,sBAAwB,EAE3E,EACA/uB,WAAY,SAAU3e,EAAalwO,EAAQ09Q,EAASO,GAClD,IAAImqB,EAAkBl4D,EAAY8kJ,uBAAuB,cAAc,GACvEh1X,EAAOw9Q,aAAe,CAAC,UACvBE,EAAQ5uQ,IAAI,SAAUs5R,GAElB83E,EAAW93E,KACbnqB,EAAgBnvQ,IAAI,SAAUs5R,GAC9BpoS,EAAO49Q,sBAAwB,EAEnC,EACArlC,MAAO,SAAUrI,EAAalwO,EAAQ09Q,EAASO,GAC7C,IAAIqiH,EAAapwJ,EAAY8kJ,uBAAuB,SAAS,GACzDz5D,EAAkB+kE,EAAWH,cAAc,cAC3CvvE,EAAiB0vE,EAAWH,cAAc,aAC9CngY,EAAOw9Q,aAAe,CAAC,SAAU,SACjCE,EAAQ5uQ,IAAI,SAAUysT,GACtB79C,EAAQ5uQ,IAAI,QAAS8hT,GAEjBsvD,EAAW3kD,KACbt9C,EAAgBnvQ,IAAI,SAAUysT,GAC9Bv7T,EAAO49Q,sBAAwB,GAG7BsiG,EAAWtvD,KACb3yC,EAAgBnvQ,IAAI,QAAS8hT,GACG,MAAhC5wT,EAAO49Q,wBAAkC59Q,EAAO49Q,sBAAwB,GAE5E,EACAltC,IAAK,SAAUR,EAAalwO,EAAQ09Q,EAASO,GAC3Cj+Q,EAAOw9Q,aAAe,CAAC,MAAO,MAChC,EACA0hH,SAAU,SAAUhvJ,EAAalwO,EAAQ09Q,EAASO,GAChD,IAAIjvC,EAAUkB,EAAYlB,QACtBkmD,EAAgBlmD,EAAQizC,aAAa,WAAY/xC,EAAY1wO,IAAI,kBACjEg+Q,EAAex9Q,EAAOw9Q,aAAe0X,EAAch+H,WAAWz4J,QAClEu1G,EAAKkhL,EAAc+nG,mBAAmB,SAAU5kV,EAAW95C,GACzD,IAAIk/Q,EAAYzuC,EAAQizC,aAAa,eAAgB5pO,GACjD88O,EAAU3X,EAAaj/Q,GAC3Bm/Q,EAAQ5uQ,IAAIqmR,EAAS1X,GAEjByiG,EAAWziG,IAA8C,MAAhCz9Q,EAAO49Q,wBAClCK,EAAgBnvQ,IAAIqmR,EAAS1X,GAC7Bz9Q,EAAO49Q,sBAAwBr/Q,EAEnC,GACF,GAGF,SAAS2hX,EAAWziG,GAClB,MAAiC,aAA1BA,EAAUj+Q,IAAI,OACvB,CAEAhC,EAAQq/Q,wBAA0BA,C,wBCzKlC,IAAI3wP,EAAQpH,EAAQ,OAEhBkvF,EAAO9nF,EAAM8nF,KACb5wG,EAAU8oB,EAAM9oB,QAChBxF,EAAWsuB,EAAMtuB,SAEjB43Z,EAAc1wY,EAAQ,OAEtBiyO,EAASjyO,EAAQ,OAEjBinT,EAAmBh1E,EAAOg1E,iBAqB9B,SAASvsU,EAAI2/F,EAAK3lC,GAChBA,EAAOA,EAAK55D,MAAM,KAGlB,IAFA,IAAIkc,EAAMqjF,EAED7+F,EAAI,EAAGA,EAAIk5D,EAAKl7D,OAAQgC,IAG/B,GAFAwb,EAAMA,GAAOA,EAAI09C,EAAKl5D,IAEX,MAAPwb,EACF,MAIJ,OAAOA,CACT,CAEA,SAAShN,EAAIqwF,EAAK3lC,EAAMluD,EAAKmqZ,GAC3Bj8V,EAAOA,EAAK55D,MAAM,KAIlB,IAHA,IACIO,EADA2b,EAAMqjF,EAGD7+F,EAAI,EAAGA,EAAIk5D,EAAKl7D,OAAS,EAAGgC,IACnCH,EAAMq5D,EAAKl5D,GAEK,MAAZwb,EAAI3b,KACN2b,EAAI3b,GAAO,CAAC,GAGd2b,EAAMA,EAAI3b,IAGRs1Z,GAA6B,MAAhB35Y,EAAI09C,EAAKl5D,OACxBwb,EAAI09C,EAAKl5D,IAAMgL,EAEnB,CAEA,SAASoqZ,EAAuBruX,GAC9B2sE,EAAK2hT,GAAmB,SAAUz6Q,GAC5BA,EAAK,KAAM7zG,KAAY6zG,EAAK,KAAM7zG,KACpCA,EAAO6zG,EAAK,IAAM7zG,EAAO6zG,EAAK,IAElC,GACF,CAEA,IAAIy6Q,EAAoB,CAAC,CAAC,IAAK,QAAS,CAAC,IAAK,OAAQ,CAAC,KAAM,SAAU,CAAC,KAAM,WAC1EC,EAA0B,CAAC,OAAQ,MAAO,WAAY,SAAU,UAAW,QAAS,YAAa,WAAY,YAEjH,SAAS7rY,EAASsd,EAAQwuX,GACxBL,EAAYnuX,EAAQwuX,GAEpBxuX,EAAOiB,OAASyjS,EAAiB1kS,EAAOiB,QACxC0rE,EAAK3sE,EAAOiB,QAAQ,SAAU2kP,GAC5B,GAAKrvR,EAASqvR,GAAd,CAIA,IAAIv9C,EAAau9C,EAAUnsR,KAE3B,GAAmB,SAAf4uO,EAC4B,MAA1Bu9C,EAAU6oI,eACZ7oI,EAAUvxD,KAAOuxD,EAAU6oI,mBAExB,GAAmB,QAAfpmL,GAAuC,UAAfA,EACN,MAAvBu9C,EAAU5wP,YACZ4wP,EAAU99F,UAAY89F,EAAU5wP,gBAE7B,GAAmB,UAAfqzM,EAAwB,CACjC,IAAIqmL,EAAev2Z,EAAIytR,EAAW,iBAClB,MAAhB8oI,GAAwBjnZ,EAAIm+Q,EAAW,kBAAmB8oI,EAC5D,CAEAL,EAAuBzoI,EAjBvB,CAkBF,IAEI5lP,EAAO2uX,YACT3uX,EAAO8lO,UAAY9lO,EAAO2uX,WAG5BhiT,EAAK4hT,GAAyB,SAAUK,GACtC,IAAIh6Z,EAAUorC,EAAO4uX,GAEjBh6Z,IACGmH,EAAQnH,KACXA,EAAU,CAACA,IAGb+3G,EAAK/3G,GAAS,SAAUorC,GACtBquX,EAAuBruX,EACzB,IAEJ,GACF,CAEA5pC,EAAOD,QAAUusB,C,iCC3HjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB6+P,EAAY7+P,EAAQ,OAoBpBkvF,EAAO46H,EAAO56H,KACdp2G,EAAWgxO,EAAOhxO,SAClBs4Z,EAAkB,CAAC,YAAa,YAAa,YAAa,YAAa,aAAc,QAAS,aAElG,SAASC,EAAmBh3T,GAC1B,IAAIi3T,EAAej3T,GAAOA,EAAI08I,UAE9B,GAAKu6K,EAIL,IAAK,IAAI91Z,EAAI,EAAGwT,EAAMoiZ,EAAgB53Z,OAAQgC,EAAIwT,EAAKxT,IAAK,CAC1D,IAAI+1Z,EAAYH,EAAgB51Z,GAC5Bg2Z,EAAqBF,EAAa/7L,OAClCk8L,EAAuBH,EAAap5K,SAEpCs5K,GAAsBA,EAAmBD,KAC3Cl3T,EAAIk3T,GAAal3T,EAAIk3T,IAAc,CAAC,EAE/Bl3T,EAAIk3T,GAAWh8L,OAGlBuU,EAAOt0H,MAAMnb,EAAIk3T,GAAWh8L,OAAQi8L,EAAmBD,IAFvDl3T,EAAIk3T,GAAWh8L,OAASi8L,EAAmBD,GAK7CC,EAAmBD,GAAa,MAG9BE,GAAwBA,EAAqBF,KAC/Cl3T,EAAIk3T,GAAal3T,EAAIk3T,IAAc,CAAC,EAE/Bl3T,EAAIk3T,GAAWr5K,SAGlBpO,EAAOt0H,MAAMnb,EAAIk3T,GAAWr5K,SAAUu5K,EAAqBF,IAF3Dl3T,EAAIk3T,GAAWr5K,SAAWu5K,EAAqBF,GAKjDE,EAAqBF,GAAa,KAEtC,CACF,CAEA,SAASG,EAAsBr3T,EAAKs3T,EAASC,GAC3C,GAAIv3T,GAAOA,EAAIs3T,KAAat3T,EAAIs3T,GAASp8L,QAAUl7H,EAAIs3T,GAASz5K,UAAW,CACzE,IAAI25K,EAAYx3T,EAAIs3T,GAASp8L,OACzB+/C,EAAcj7K,EAAIs3T,GAASz5K,SAE3B25K,IAEED,GACFv3T,EAAIs3T,GAASp8L,OAASl7H,EAAIs3T,GAASz5K,SAAW,KAC9CpO,EAAO94I,SAASqJ,EAAIs3T,GAAUE,IAE9Bx3T,EAAIs3T,GAAWE,GAIfv8I,IACFj7K,EAAI69I,SAAW79I,EAAI69I,UAAY,CAAC,EAChC79I,EAAI69I,SAASy5K,GAAWr8I,EAE5B,CACF,CAEA,SAASw8I,EAAsBz3T,GAC7Bq3T,EAAsBr3T,EAAK,aAC3Bq3T,EAAsBr3T,EAAK,aAC3Bq3T,EAAsBr3T,EAAK,aAC3Bq3T,EAAsBr3T,EAAK,SAC3Bq3T,EAAsBr3T,EAAK,aAE3Bq3T,EAAsBr3T,EAAK,cAE3Bq3T,EAAsBr3T,EAAK,YAC7B,CAEA,SAAS03T,EAAgB13T,EAAKkuB,GAE5B,IAAIypS,EAAiBl5Z,EAASuhG,IAAQA,EAAIkuB,GACtC9+E,EAAY3wC,EAASk5Z,IAAmBA,EAAevoX,UAE3D,GAAIA,EACF,IAAK,IAAIjuC,EAAI,EAAGwT,EAAM6vQ,EAAUozI,mBAAmBz4Z,OAAQgC,EAAIwT,EAAKxT,IAAK,CACnE+sH,EAAWs2J,EAAUozI,mBAAmBz2Z,GAExCiuC,EAAU3rC,eAAeyqH,KAC3BypS,EAAezpS,GAAY9+E,EAAU8+E,GAEzC,CAEJ,CAEA,SAAS2pS,EAAsB73T,GACzBA,IACFy3T,EAAsBz3T,GACtB03T,EAAgB13T,EAAK,SACrBA,EAAI69I,UAAY65K,EAAgB13T,EAAI69I,SAAU,SAElD,CAEA,SAASi6K,EAAchqI,GACrB,GAAKrvR,EAASqvR,GAAd,CAIAkpI,EAAmBlpI,GACnB2pI,EAAsB3pI,GACtB4pI,EAAgB5pI,EAAW,SAE3B4pI,EAAgB5pI,EAAW,cAE3B4pI,EAAgB5pI,EAAW,aAEvBA,EAAUjwC,WACZ65K,EAAgB5pI,EAAUjwC,SAAU,SAEpC65K,EAAgB5pI,EAAUjwC,SAAU,cAEpC65K,EAAgB5pI,EAAUjwC,SAAU,cAGtC,IAAI45G,EAAY3pE,EAAU2pE,UAEtBA,IACFu/D,EAAmBv/D,GACnBogE,EAAsBpgE,IAGxB,IAAID,EAAW1pE,EAAU0pE,SAErBA,IACFw/D,EAAmBx/D,GACnBqgE,EAAsBrgE,IAGxB,IAAID,EAAWzpE,EAAUypE,SAErBA,GACFsgE,EAAsBtgE,GAGxB,IAAIn7U,EAAO0xQ,EAAU1xQ,KAGrB,GAAuB,UAAnB0xQ,EAAUnsR,KAAkB,CAC9Bya,EAAOA,GAAQ0xQ,EAAU7xM,MACzB,IAAIopF,EAAWyoH,EAAU/tB,OAAS+tB,EAAUxwM,MAE5C,GAAI+nF,IAAaoqE,EAAOj8N,aAAa6xJ,GACnC,IAAK,IAAIlkK,EAAI,EAAGA,EAAIkkK,EAASlmK,OAAQgC,IACnC02Z,EAAsBxyP,EAASlkK,IAInCsuO,EAAO56H,KAAKi5K,EAAUtsB,YAAY,SAAUxhK,GAC1Cy3T,EAAsBz3T,EACxB,GACF,CAEA,GAAI5jF,IAASqzN,EAAOj8N,aAAa4I,GAC/B,IAASjb,EAAI,EAAGA,EAAIib,EAAKjd,OAAQgC,IAC/B02Z,EAAsBz7Y,EAAKjb,IAK3Bs2V,EAAY3pE,EAAU2pE,UAE1B,GAAIA,GAAaA,EAAUr7U,KACzB,KAAI4+U,EAASvD,EAAUr7U,KAEvB,IAASjb,EAAI,EAAGA,EAAI65V,EAAO77V,OAAQgC,IACjC02Z,EAAsB78D,EAAO75V,GAHJ,CAQzBq2V,EAAW1pE,EAAU0pE,SAEzB,GAAIA,GAAYA,EAASp7U,KACvB,KAAIo+U,EAAShD,EAASp7U,KAEtB,IAASjb,EAAI,EAAGA,EAAIq5V,EAAOr7V,OAAQgC,IAC7BsuO,EAAOxrO,QAAQu2V,EAAOr5V,KACxB02Z,EAAsBr9D,EAAOr5V,GAAG,IAChC02Z,EAAsBr9D,EAAOr5V,GAAG,KAEhC02Z,EAAsBr9D,EAAOr5V,GAPP,CAaL,UAAnB2sR,EAAUnsR,MACZ+1Z,EAAgB5pI,EAAW,aAC3B4pI,EAAgB5pI,EAAW,SAC3B4pI,EAAgB5pI,EAAW,WACC,YAAnBA,EAAUnsR,MACnB01Z,EAAsBvpI,EAAUwlB,WAAY,aAC5C7jE,EAAO56H,KAAKi5K,EAAU78F,QAAQ,SAAUjxF,GACtCy3T,EAAsBz3T,EACxB,KAC4B,SAAnB8tL,EAAUnsR,MACnB81Z,EAAsB3pI,EAAUz6I,OApGlC,CAuGF,CAEA,SAAS0kR,EAAM3iV,GACb,OAAOq6J,EAAOxrO,QAAQmxE,GAAKA,EAAIA,EAAI,CAACA,GAAK,EAC3C,CAEA,SAAS4iV,EAAM5iV,GACb,OAAQq6J,EAAOxrO,QAAQmxE,GAAKA,EAAE,GAAKA,IAAM,CAAC,CAC5C,CAEA,SAASxqD,EAASsd,EAAQwuX,GACxB7hT,EAAKkjT,EAAM7vX,EAAOiB,SAAS,SAAU2kP,GACnCrvR,EAASqvR,IAAcgqI,EAAchqI,EACvC,IACA,IAAIoP,EAAO,CAAC,QAAS,QAAS,aAAc,YAAa,aAAc,eAAgB,SACvFw5H,GAAWx5H,EAAK97R,KAAK,YAAa,eAAgB,UAAW,YAC7DyzG,EAAKqoL,GAAM,SAAU1pP,GACnBqhE,EAAKkjT,EAAM7vX,EAAOsL,KAAY,SAAUs6T,GAClCA,IACF4pD,EAAgB5pD,EAAS,aACzB4pD,EAAgB5pD,EAAQ/sD,YAAa,SAEzC,GACF,IACAlsM,EAAKkjT,EAAM7vX,EAAO63V,WAAW,SAAUk4B,GACrC,IAAIx4B,EAAsBw4B,GAAeA,EAAYx4B,oBACrDi4B,EAAgBj4B,EAAqB,aACrCi4B,EAAgBj4B,GAAuBA,EAAoB1+E,YAAa,QAC1E,IACAlsM,EAAKkjT,EAAM7vX,EAAOynN,WAAW,SAAUuoK,GACrCb,EAAsBa,EAAa,aACnCR,EAAgBQ,EAAa,YAC7BR,EAAgBQ,EAAa,cAC7BR,EAAgBQ,EAAa,YAC/B,IAEArjT,EAAKkjT,EAAM7vX,EAAOW,QAAQ,SAAUsvX,GAClCT,EAAgBS,EAAU,OAC5B,IACAtjT,EAAKkjT,EAAM7vX,EAAOqpM,MAAM,SAAU6mL,GAC5B35Z,EAAS25Z,KACXP,EAAsBO,GACtBvjT,EAAKkjT,EAAMK,EAAOvmI,UAAU,SAAUwmI,GACpCR,EAAsBQ,EACxB,IAEJ,IACAxjT,EAAKkjT,EAAM7vX,EAAOq9T,WAAW,SAAUD,GACrCuyD,EAAsBvyD,GACtB+xD,EAAsB/xD,EAAa,SACnC+xD,EAAsB/xD,EAAa,aACnC+xD,EAAsB/xD,EAAa,gBAAgB,GACnD,IAAIlpV,EAAOkpV,EAAYlpV,KACvBqzN,EAAOxrO,QAAQmY,IAASqzN,EAAO56H,KAAKz4F,GAAM,SAAUuG,GAC9C8sN,EAAOhxO,SAASkkB,KAClB00Y,EAAsB10Y,EAAM,SAC5B00Y,EAAsB10Y,EAAM,aAEhC,GACF,IACAkyF,EAAKkjT,EAAM7vX,EAAOq1R,UAAU,SAAUiwC,GACpC6pD,EAAsB7pD,EAAY,aAClC34P,EAAK24P,EAAWtxV,SAAS,SAAU0qV,GACjCywD,EAAsBzwD,EAAY,YACpC,GACF,IACA8wD,EAAgBM,EAAM9vX,EAAO64Q,aAAc,SAC3C22G,EAAgBM,EAAM9vX,EAAOw7O,SAASq9B,YAAa,QACrD,CAEAziT,EAAOD,QAAUusB,C,oBCxRjB,SAASA,EAAS2lN,GAChB,MAAO,CACLA,WAAYA,EACZ3sI,MAAO,SAAUmtI,EAAalB,GAC5B,IAAIi4B,EAAej4B,EAAQk4B,eAAe,CACxCl3B,SAAU,WAGZ,GAAKi3B,GAAiBA,EAAa3oQ,OAAnC,CAIA,IAAIid,EAAO20N,EAAY7oI,UACvB9rF,EAAK8rP,YAAW,SAAU5jK,GAGxB,IAFA,IAAI1iG,EAAOwa,EAAK60N,QAAQ3sI,GAEfnjG,EAAI,EAAGA,EAAI2mQ,EAAa3oQ,OAAQgC,IACvC,IAAK2mQ,EAAa3mQ,GAAGs2M,WAAW71M,GAC9B,OAAO,EAIX,OAAO,CACT,GAbA,CAcF,EAEJ,CAEAtD,EAAOD,QAAUusB,C,oBC5BjB,IAAI0tY,EAAW,CACbv7D,QAAS,SAAUvpK,GAIjB,IAHA,IAAI9qK,EAAM,EACNhD,EAAQ,EAEHvkB,EAAI,EAAGA,EAAIqyL,EAAMr0L,OAAQgC,IAC3B+K,MAAMsnL,EAAMryL,MACfunB,GAAO8qK,EAAMryL,GACbukB,KAKJ,OAAiB,IAAVA,EAAcijE,IAAMjgE,EAAMhD,CACnC,EACAgD,IAAK,SAAU8qK,GAGb,IAFA,IAAI9qK,EAAM,EAEDvnB,EAAI,EAAGA,EAAIqyL,EAAMr0L,OAAQgC,IAEhCunB,GAAO8qK,EAAMryL,IAAM,EAGrB,OAAOunB,CACT,EACA5c,IAAK,SAAU0nL,GAGb,IAFA,IAAI1nL,GAAOkkF,IAEF7uF,EAAI,EAAGA,EAAIqyL,EAAMr0L,OAAQgC,IAChCqyL,EAAMryL,GAAK2K,IAAQA,EAAM0nL,EAAMryL,IAIjC,OAAO4iF,SAASj4E,GAAOA,EAAM68E,GAC/B,EACA58E,IAAK,SAAUynL,GAGb,IAFA,IAAIznL,EAAMikF,IAED7uF,EAAI,EAAGA,EAAIqyL,EAAMr0L,OAAQgC,IAChCqyL,EAAMryL,GAAK4K,IAAQA,EAAMynL,EAAMryL,IAIjC,OAAO4iF,SAASh4E,GAAOA,EAAM48E,GAC/B,EAGA4vU,QAAS,SAAU/kO,GACjB,OAAOA,EAAM,EACf,GAGEglO,EAAe,SAAUhlO,EAAOv0L,GAClC,OAAOqE,KAAKugF,MAAM2vG,EAAMr0L,OAAS,EACnC,EAEA,SAASyrB,EAAS2lN,GAChB,MAAO,CACLA,WAAYA,EACZ+lG,iBAAiB,EACjB1yO,MAAO,SAAUmtI,EAAalB,EAAS/nI,GACrC,IAAI1rF,EAAO20N,EAAY7oI,UACnBk8K,EAAWrzC,EAAY1wO,IAAI,YAC3B2vO,EAAWe,EAAYS,iBAE3B,GAAsB,gBAAlBxB,EAASruO,MAA0ByiR,EAAU,CAC/C,IAQMq0I,EARFvjL,EAAWlF,EAASmF,cACpB9iM,EAAY29L,EAASiR,aAAa/L,GAClCxqD,EAASwqD,EAASmT,YAElB5hK,EAAOnjF,KAAK6iB,IAAIukK,EAAO,GAAKA,EAAO,IACnC4jN,EAAOhrY,KAAKugF,MAAMznE,EAAKsJ,QAAU+gE,GAErC,GAAI6nT,EAAO,EAGe,kBAAblqH,EACTq0I,EAAUH,EAASl0I,GACU,oBAAbA,IAChBq0I,EAAUr0I,GAGRq0I,GAEF1nL,EAAY3oI,QAAQhsF,EAAKiyX,WAAWjyX,EAAKysO,aAAax2M,EAAU+8F,KAAM,EAAIk/P,EAAMmqB,EAASD,GAG/F,CACF,EAEJ,CAEAl6Z,EAAOD,QAAUusB,C,gCC9GjB,IAAImC,EAAQpH,EAAQ,OAEhB2rQ,EAAgBvkQ,EAAMukQ,cACtBz8K,EAAO9nF,EAAM8nF,KAyBjB,SAASjqF,EAASilN,GAChB,IAAI6oL,EAAepnI,IACnBzhD,EAAQy/E,YAAW,SAAUv+E,GAC3B,IAAI93N,EAAQ83N,EAAY1wO,IAAI,SAE5B,GAAI4Y,EAAO,CACT,IAAI0/Y,EAAgBD,EAAar4Z,IAAI4Y,IAAUy/Y,EAAa/oZ,IAAIsJ,EAAO,IACnEmD,EAAO20N,EAAY7oI,UACnB0wT,EAAY,CAEd7kB,qBAAsB33X,EAAKysQ,mBAAmB,wBAC9CsB,qBAAsB/tQ,EAAKysQ,mBAAmB,wBAC9CyrH,iBAAkBl4X,EAAKysQ,mBAAmB,oBAC1C0rH,mBAAoBn4X,EAAKysQ,mBAAmB,sBAC5C2rH,iBAAkBp4X,EAAKysQ,mBAAmB,oBAC1CzsQ,KAAMA,EACN20N,YAAaA,GAGf,IAAK6nL,EAAUtkB,mBAAsBskB,EAAUpkB,mBAAoBokB,EAAUrkB,mBAC3E,OAGFokB,EAAcx5Z,QAAUid,EAAKgjQ,mBAAmB,kBAAmBu5I,EAAcA,EAAcx5Z,OAAS,GAAG4xO,aAC3G4nL,EAAcv3Z,KAAKw3Z,EACrB,CACF,IACAF,EAAa7jT,KAAKgkT,EACpB,CAEA,SAASA,EAAeF,GACtB9jT,EAAK8jT,GAAe,SAAUG,EAAiBC,GAC7C,IAAIC,EAAY,GACZC,EAAY,CAACtwU,IAAKA,KAClBs2E,EAAO,CAAC65P,EAAgB/kB,qBAAsB+kB,EAAgB3uI,sBAC9D+uI,EAAaJ,EAAgB18Y,KAC7Bo4X,EAAmBskB,EAAgBtkB,iBAGnClqH,EAAU4uI,EAAWryY,IAAIo4I,GAAM,SAAUk6P,EAAIxrR,EAAIqjG,GACnD,IAOIooL,EACAC,EARA3wY,EAAMwwY,EAAW74Z,IAAIy4Z,EAAgBxkB,iBAAkBtjK,GAG3D,GAAI9kO,MAAMwc,GACR,OAAOuwY,EAMLzkB,EACF6kB,EAAsBH,EAAWpmK,YAAY9hB,GAE7CooL,EAAUF,EAAW74Z,IAAIy4Z,EAAgBvkB,mBAAoBvjK,GAM/D,IAFA,IAAIsoL,EAAc3wU,IAETvgF,EAAI2wZ,EAAa,EAAG3wZ,GAAK,EAAGA,IAAK,CACxC,IAAIwwZ,EAAYD,EAAcvwZ,GAM9B,GAJKosY,IACH6kB,EAAsBT,EAAUx8Y,KAAKgxX,WAAWwrB,EAAUrkB,mBAAoB6kB,IAG5EC,GAAuB,EAAG,CAC5B,IAAIltZ,EAAMysZ,EAAUx8Y,KAAKswX,cAAcksB,EAAU7kB,qBAAsBslB,GAEvE,GAAI3wY,GAAO,GAAKvc,EAAM,GACtBuc,GAAO,GAAKvc,EAAM,EAChB,CACEuc,GAAOvc,EACPmtZ,EAAcntZ,EACd,KACF,CACJ,CACF,CAIA,OAFA6sZ,EAAU,GAAKtwY,EACfswY,EAAU,GAAKM,EACRN,CACT,IACAE,EAAWhyK,UAAU9+I,QAAQkiL,GAE7BwuI,EAAgB18Y,KAAOkuQ,CACzB,GACF,CAEAhsR,EAAOD,QAAUusB,C,iCCrHjB,IAAIkgR,EAAanlR,EAAQ,OAErB0hS,EAAa1hS,EAAQ,OAErB8jW,EAAQ9jW,EAAQ,OAEhByhR,EAASzhR,EAAQ,OAyBjB4zY,EAAczuH,EAAWjnN,MAMzB2lS,EAAgBC,EAAM5oQ,OAAO,CAC/Bl/G,KAAM,WACN63Z,UAAW,EACXC,mBAAoB,EACpBp3D,UAAW,SAAUxmT,EAAOC,GAC1B,IAAI49W,EAAav8Z,KAAKkpX,QAEjBn6W,MAAM2vC,KACT69W,EAAW,GAAKzmX,WAAW4I,IAGxB3vC,MAAM4vC,KACT49W,EAAW,GAAKzmX,WAAW6I,GAE/B,EACAq6U,YAAa,SAAU56N,GACrB,IAAImvB,EAASvtL,KAAKkpX,QAClB9qN,EAAM,GAAKmvB,EAAO,KAAOA,EAAO,GAAKnvB,EAAM,IAC3CA,EAAM,GAAKmvB,EAAO,KAAOA,EAAO,GAAKnvB,EAAM,IAE3CiuN,EAAc9kX,UAAU29V,UAAU7kW,KAAKL,KAAMutL,EAAO,GAAIA,EAAO,GACjE,EAKA+3M,YAAa,WACX,OAAOtlY,KAAKq8Z,SACd,EAKAnuC,YAAa,SAAUpgV,GACrB9tC,KAAKq8Z,UAAYvuX,EAGjB9tC,KAAKw8Z,YAAcx8Z,KAAKkpX,QAAQ/mX,QAChCnC,KAAKs8Z,mBAAqBryH,EAAOwyH,qBAAqB3uX,EACxD,EAMAm3T,SAAU,SAAUy3D,GAClB,IAAI5uX,EAAW9tC,KAAKq8Z,UAChB9uO,EAASvtL,KAAKkpX,QACdyzC,EAAiB38Z,KAAKw8Z,YACtBI,EAAoB58Z,KAAKs8Z,mBACzB/2D,EAAQ,GAEZ,IAAKz3T,EACH,OAAOy3T,EAIT,IAAIs3D,EAAY,IAEZtvO,EAAO,GAAKovO,EAAe,KACzBD,EACFn3D,EAAMthW,KAAKm4Z,EAAYO,EAAe,GAAK7uX,EAAU8uX,IAErDr3D,EAAMthW,KAAKspL,EAAO,KAItB,IAAInwI,EAAOu/W,EAAe,GAE1B,MAAOv/W,GAAQu/W,EAAe,GAAI,CAKhC,GAJAp3D,EAAMthW,KAAKm5C,GAEXA,EAAOg/W,EAAYh/W,EAAOtP,EAAU8uX,GAEhCx/W,IAASmoT,EAAMA,EAAMvjW,OAAS,GAGhC,MAGF,GAAIujW,EAAMvjW,OAAS66Z,EACjB,MAAO,EAEX,CAIA,IAAIC,EAAev3D,EAAMvjW,OAASujW,EAAMA,EAAMvjW,OAAS,GAAK26Z,EAAe,GAU3E,OARIpvO,EAAO,GAAKuvO,IACVJ,EACFn3D,EAAMthW,KAAKm4Z,EAAYU,EAAehvX,EAAU8uX,IAEhDr3D,EAAMthW,KAAKspL,EAAO,KAIfg4K,CACT,EAMAukB,cAAe,SAAU57U,GAKvB,IAJA,IAAIq3T,EAAQvlW,KAAKilW,UAAS,GACtB4kB,EAAa,GACbt8L,EAASvtL,KAAKkrP,YAETlnP,EAAI,EAAGA,EAAIuhW,EAAMvjW,OAAQgC,IAAK,CACrC,IAAI0f,EAAW6hV,EAAMvhW,GACjBs2T,EAAWirC,EAAMvhW,EAAI,GACrBukB,EAAQ,EACRwhW,EAAkB,GAClBj8U,EAAWpqB,EAAW42S,EACtByiG,EAAgBjvX,EAAWI,EAE/B,MAAO3lB,EAAQ2lB,EAAc,EAAG,CAC9B,IAAI87U,EAAYr8E,EAAWjnN,MAAM4zO,GAAY/xS,EAAQ,GAAKw0Y,GAEtD/yC,EAAYz8L,EAAO,IAAMy8L,EAAYz8L,EAAO,IAC9Cw8L,EAAgB9lX,KAAK+lX,GAGvBzhW,GACF,CAEAshW,EAAW5lX,KAAK8lX,EAClB,CAEA,OAAOF,CACT,EASAz2D,SAAU,SAAUn0S,EAAM4jF,GACxB,GAAY,MAAR5jF,EACF,MAAO,GAGT,IAAImK,EAAYy5E,GAAOA,EAAIz5E,UAY3B,OAViB,MAAbA,EACFA,EAAYukR,EAAWqvH,iBAAiB/9Y,IAAS,EAC1B,SAAdmK,IAETA,EAAYppB,KAAKs8Z,oBAKnBr9Y,EAAOm9Y,EAAYn9Y,EAAMmK,GAAW,GAC7B8gS,EAAWv2B,UAAU10Q,EAC9B,EASAkmV,UAAW,SAAUj3T,EAAaH,EAAaC,GAC7CE,EAAcA,GAAe,EAC7B,IAAIq/I,EAASvtL,KAAKkpX,QACdn/D,EAAOx8H,EAAO,GAAKA,EAAO,GAE9B,GAAK3mG,SAASmjO,GAAd,CAMIA,EAAO,IACTA,GAAQA,EACRx8H,EAAOvyJ,WAGT,IAAIt3B,EAASumS,EAAOgzH,uBAAuB1vO,EAAQr/I,EAAaH,EAAaC,GAC7EhuC,KAAKs8Z,mBAAqB54Z,EAAOk5Z,kBACjC58Z,KAAKq8Z,UAAY34Z,EAAOoqC,SACxB9tC,KAAKw8Z,YAAc94Z,EAAOi5Z,cAZ1B,CAaF,EAWA1uC,WAAY,SAAUprR,GACpB,IAAI0qF,EAASvtL,KAAKkpX,QAElB,GAAI37L,EAAO,KAAOA,EAAO,GACvB,GAAkB,IAAdA,EAAO,GAAU,CAEnB,IAAI+8F,EAAa/8F,EAAO,GAMnB1qF,EAAIiqR,SACPv/L,EAAO,IAAM+8F,EAAa,GAG1B/8F,EAAO,IAAM+8F,EAAa,CAE9B,MACE/8F,EAAO,GAAK,EAIhB,IAAIw8H,EAAOx8H,EAAO,GAAKA,EAAO,GAEzB3mG,SAASmjO,KACZx8H,EAAO,GAAK,EACZA,EAAO,GAAK,GAGdvtL,KAAKmlW,UAAUtiQ,EAAI30D,YAAa20D,EAAI90D,YAAa80D,EAAI70D,aAErD,IAAIF,EAAW9tC,KAAKq8Z,UAEfx5T,EAAIgqR,SACPt/L,EAAO,GAAK6uO,EAAYj2Z,KAAK2I,MAAMy+K,EAAO,GAAKz/I,GAAYA,IAGxD+0D,EAAIiqR,SACPv/L,EAAO,GAAK6uO,EAAYj2Z,KAAK0I,KAAK0+K,EAAO,GAAKz/I,GAAYA,GAE9D,IAMFu+U,EAAcrlX,OAAS,WACrB,OAAO,IAAIqlX,CACb,EAEA,IAAI5+V,EAAW4+V,EACflrX,EAAOD,QAAUusB,C,wBC/RjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB8jW,EAAQ9jW,EAAQ,OAEhBmlR,EAAanlR,EAAQ,OAErB6jW,EAAgB7jW,EAAQ,OA0BxB00Y,EAAa5wC,EAAM/kX,UACnB41Z,EAAqB9wC,EAAc9kX,UACnCy1Z,EAAmBrvH,EAAWqvH,iBAC9BI,EAAmBzvH,EAAWjnN,MAC9Bo5S,EAAY35X,KAAK2I,MACjBixX,EAAW55X,KAAK0I,KAChBwxU,EAAUl6U,KAAK4iB,IACfs0Y,EAAUl3Z,KAAKgqG,IACfm0R,EAAWhY,EAAM5oQ,OAAO,CAC1Bl/G,KAAM,MACNq/G,KAAM,GACNuqS,aAAc,WACZ9hC,EAAMxpX,MAAM9C,KAAM+C,WAClB/C,KAAKs9Z,eAAiB,IAAIjxC,CAC5B,EAMApnB,SAAU,SAAUy3D,GAClB,IAAIa,EAAgBv9Z,KAAKs9Z,eACrB/vO,EAASvtL,KAAKkpX,QACd0D,EAAiB2wC,EAAcryK,YACnC,OAAO5Y,EAAO5oN,IAAIyzY,EAAmBl4D,SAAS5kW,KAAKL,KAAM08Z,IAAsB,SAAU1tZ,GACvF,IAAIwuZ,EAAS7vH,EAAWjnN,MAAM25P,EAAQrgV,KAAK6jH,KAAM70G,IAIjD,OAFAwuZ,EAASxuZ,IAAQu+K,EAAO,IAAMgwO,EAAcE,SAAWC,EAAiBF,EAAQ5wC,EAAe,IAAM4wC,EACrGA,EAASxuZ,IAAQu+K,EAAO,IAAMgwO,EAAcI,SAAWD,EAAiBF,EAAQ5wC,EAAe,IAAM4wC,EAC9FA,CACT,GAAGx9Z,KACL,EAMA8pX,cAAeqzC,EAAmBrzC,cAMlC12D,SAAU+pG,EAAmB/pG,SAM7B/8R,MAAO,SAAUrnB,GAEf,OADAA,EAAMkuZ,EAAW7mY,MAAMh2B,KAAKL,KAAMgP,GAC3BqxU,EAAQrgV,KAAK6jH,KAAM70G,EAC5B,EAMAk2V,UAAW,SAAUxmT,EAAOC,GAC1B,IAAIklE,EAAO7jH,KAAK6jH,KAChBnlE,EAAQ2+W,EAAQ3+W,GAAS2+W,EAAQx5S,GACjCllE,EAAM0+W,EAAQ1+W,GAAO0+W,EAAQx5S,GAC7Bs5S,EAAmBj4D,UAAU7kW,KAAKL,KAAM0+C,EAAOC,EACjD,EAKAusM,UAAW,WACT,IAAIrnI,EAAO7jH,KAAK6jH,KACZ0pE,EAAS2vO,EAAWhyK,UAAU7qP,KAAKL,MACvCutL,EAAO,GAAK8yJ,EAAQx8N,EAAM0pE,EAAO,IACjCA,EAAO,GAAK8yJ,EAAQx8N,EAAM0pE,EAAO,IAEjC,IAAIgwO,EAAgBv9Z,KAAKs9Z,eACrB1wC,EAAiB2wC,EAAcryK,YAGnC,OAFAqyK,EAAcE,WAAalwO,EAAO,GAAKmwO,EAAiBnwO,EAAO,GAAIq/L,EAAe,KAClF2wC,EAAcI,WAAapwO,EAAO,GAAKmwO,EAAiBnwO,EAAO,GAAIq/L,EAAe,KAC3Er/L,CACT,EAKAyrM,YAAa,SAAUzrM,GACrBvtL,KAAKs9Z,eAAetkC,YAAYzrM,GAEhC,IAAI1pE,EAAO7jH,KAAK6jH,KAChB0pE,EAAO,GAAK8vO,EAAQ9vO,EAAO,IAAM8vO,EAAQx5S,GACzC0pE,EAAO,GAAK8vO,EAAQ9vO,EAAO,IAAM8vO,EAAQx5S,GACzCq5S,EAAWlkC,YAAY34X,KAAKL,KAAMutL,EACpC,EAKA0rM,oBAAqB,SAAUh6W,EAAMgzH,GAGnCjyI,KAAKg5X,YAAY/5W,EAAKwrT,qBAAqBx4L,GAC7C,EAMAkzN,UAAW,SAAUy4D,GACnBA,EAAgBA,GAAiB,GACjC,IAAIrwO,EAASvtL,KAAKkpX,QACdn/D,EAAOx8H,EAAO,GAAKA,EAAO,GAE9B,KAAIw8H,IAASl3N,KAAYk3N,GAAQ,GAAjC,CAIA,IAAIj8Q,EAAW6/P,EAAWkwH,SAAS9zG,GAC/B7mO,EAAM06U,EAAgB7zG,EAAOj8Q,EAE7Bo1C,GAAO,KACTp1C,GAAY,IAId,OAAQ/+B,MAAM++B,IAAa3nC,KAAK6iB,IAAI8kB,GAAY,GAAK3nC,KAAK6iB,IAAI8kB,GAAY,EACxEA,GAAY,GAGd,IAAImgV,EAAa,CAACtgF,EAAWjnN,MAAMq5S,EAASxyM,EAAO,GAAKz/I,GAAYA,GAAW6/P,EAAWjnN,MAAMo5S,EAAUvyM,EAAO,GAAKz/I,GAAYA,IAClI9tC,KAAKq8Z,UAAYvuX,EACjB9tC,KAAKw8Z,YAAcvuC,CAhBnB,CAiBF,EAMAA,WAAY,SAAUprR,GACpBs6T,EAAmBlvC,WAAW5tX,KAAKL,KAAM6iG,GACzC,IAAI06T,EAAgBv9Z,KAAKs9Z,eACzBC,EAAcE,SAAW56T,EAAIgqR,OAC7B0wC,EAAcI,SAAW96T,EAAIiqR,MAC/B,IAaF,SAAS4wC,EAAiB1uZ,EAAK8uZ,GAC7B,OAAOV,EAAiBpuZ,EAAKguZ,EAAiBc,GAChD,CAbAxrL,EAAO56H,KAAK,CAAC,UAAW,cAAc,SAAUqiP,GAC9CuqC,EAAS/8X,UAAUwyV,GAAc,SAAU/qV,GAEzC,OADAA,EAAMquZ,EAAQruZ,GAAOquZ,EAAQr9Z,KAAK6jH,MAC3Bq5S,EAAWnjE,GAAY15V,KAAKL,KAAMgP,EAC3C,CACF,IAEAs1X,EAASt9X,OAAS,WAChB,OAAO,IAAIs9X,CACb,EAMA,IAAI72W,EAAW62W,EACfnjY,EAAOD,QAAUusB,C,iCC/LjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB8jW,EAAQ9jW,EAAQ,OAEhBknW,EAAclnW,EAAQ,OA4BtB00Y,EAAa5wC,EAAM/kX,UACnB6kX,EAAeE,EAAM5oQ,OAAO,CAC9Bl/G,KAAM,UAKNkzD,KAAM,SAAUkqN,EAAar0F,GAGtBq0F,IAAetvC,EAAOxrO,QAAQ86Q,KACjCA,EAAc,IAAI8tG,EAAY,CAC5BrrH,WAAYud,KAIhB5hR,KAAK+9Z,aAAen8I,EACpB5hR,KAAKkpX,QAAU37L,GAAU,CAAC,EAAGq0F,EAAYvd,WAAWriQ,OAAS,EAC/D,EACA4qB,MAAO,SAAU5d,GACf,MAAsB,kBAARA,EAAmBhP,KAAK+9Z,aAAahrB,WAAW/jY,GAC5D7I,KAAKugF,MAAM13E,EACf,EACAo/O,QAAS,SAAUziH,GAEjB,OADAA,EAAO3rI,KAAK4sB,MAAM++G,GACXuxR,EAAW9uK,QAAQ/tP,KAAKL,KAAM2rI,IAA+C,MAAtC3rI,KAAK+9Z,aAAa15J,WAAW14H,EAC7E,EAOAzsH,UAAW,SAAUlQ,GACnB,OAAOkuZ,EAAWh+Y,UAAU7e,KAAKL,KAAMA,KAAK4sB,MAAM5d,GACpD,EACAqnB,MAAO,SAAUrnB,GACf,OAAO7I,KAAKugF,MAAMw2U,EAAW7mY,MAAMh2B,KAAKL,KAAMgP,GAChD,EAKAi2V,SAAU,WACR,IAAIM,EAAQ,GACRh4K,EAASvtL,KAAKkpX,QACdv9O,EAAO4hD,EAAO,GAElB,MAAO5hD,GAAQ4hD,EAAO,GACpBg4K,EAAMthW,KAAK0nI,GACXA,IAGF,OAAO45N,CACT,EAOAnyC,SAAU,SAAUrzS,GAClB,IAAK/f,KAAKwtT,UAER,OAAOxtT,KAAK+9Z,aAAa15J,WAAWtkP,EAExC,EAKAwI,MAAO,WACL,OAAOvoB,KAAKkpX,QAAQ,GAAKlpX,KAAKkpX,QAAQ,GAAK,CAC7C,EAKA+P,oBAAqB,SAAUh6W,EAAMgzH,GACnCjyI,KAAKg5X,YAAY/5W,EAAKwrT,qBAAqBx4L,GAC7C,EACA4vI,eAAgB,WACd,OAAO7hR,KAAK+9Z,YACd,EACA54D,UAAW7yH,EAAOj1C,KAClB4wL,WAAY37I,EAAOj1C,OAMrB+uL,EAAaplX,OAAS,WACpB,OAAO,IAAIolX,CACb,EAEA,IAAI3+V,EAAW2+V,EACfjrX,EAAOD,QAAUusB,C,wBChIjB,IAAIo3R,EAAYr8R,EAAQ,MA6BxB,SAAS8jW,EAAMx8N,GACb9vJ,KAAKg+Z,SAAWluQ,GAAW,CAAC,EAO5B9vJ,KAAKkpX,QAAU,CAACr2R,KAAWA,KAO3B7yF,KAAKq8Z,UAAY,EACjBr8Z,KAAK03D,MAAQ13D,KAAK03D,KAAK50D,MAAM9C,KAAM+C,UACrC,CAQAupX,EAAM/kX,UAAUqlB,MAAQ,SAAU5d,GAKhC,OAAOA,CACT,EAEAs9W,EAAM/kX,UAAU02Z,WAAa,SAAUx5Z,GACrC,OAAOzE,KAAKg+Z,SAASv5Z,EACvB,EAEA6nX,EAAM/kX,UAAU6mP,QAAU,SAAUp/O,GAClC,IAAIu+K,EAASvtL,KAAKkpX,QAClB,OAAOl6W,GAAOu+K,EAAO,IAAMv+K,GAAOu+K,EAAO,EAC3C,EAQA++L,EAAM/kX,UAAU2X,UAAY,SAAUlQ,GACpC,IAAIu+K,EAASvtL,KAAKkpX,QAElB,OAAI37L,EAAO,KAAOA,EAAO,GAChB,IAGDv+K,EAAMu+K,EAAO,KAAOA,EAAO,GAAKA,EAAO,GACjD,EAQA++L,EAAM/kX,UAAU8uB,MAAQ,SAAUrnB,GAChC,IAAIu+K,EAASvtL,KAAKkpX,QAClB,OAAOl6W,GAAOu+K,EAAO,GAAKA,EAAO,IAAMA,EAAO,EAChD,EAOA++L,EAAM/kX,UAAUyxX,YAAc,SAAU56N,GACtC,IAAImvB,EAASvtL,KAAKkpX,QAClB9qN,EAAM,GAAKmvB,EAAO,KAAOA,EAAO,GAAKnvB,EAAM,IAC3CA,EAAM,GAAKmvB,EAAO,KAAOA,EAAO,GAAKnvB,EAAM,GAE7C,EAQAkuN,EAAM/kX,UAAU0xX,oBAAsB,SAAUh6W,EAAMgzH,GACpDjyI,KAAKg5X,YAAY/5W,EAAKwrT,qBAAqBx4L,GAC7C,EAOAq6O,EAAM/kX,UAAU2jP,UAAY,WAC1B,OAAOlrP,KAAKkpX,QAAQ/mX,OACtB,EAQAmqX,EAAM/kX,UAAU29V,UAAY,SAAUxmT,EAAOC,GAC3C,IAAI49W,EAAav8Z,KAAKkpX,QAEjBn6W,MAAM2vC,KACT69W,EAAW,GAAK79W,GAGb3vC,MAAM4vC,KACT49W,EAAW,GAAK59W,EAEpB,EAOA2tU,EAAM/kX,UAAUimT,QAAU,WACxB,OAAOxtT,KAAKk+Z,QACd,EAKA5xC,EAAM/kX,UAAUwlX,SAAW,SAAUv/D,GACnCxtT,KAAKk+Z,SAAW1wG,CAClB,EAOA8+D,EAAM/kX,UAAU6rT,SAAW,KAC3BvO,EAAU4D,kBAAkB6jE,GAC5BznE,EAAUqpG,sBAAsB5hC,EAAO,CACrCsiC,oBAAoB,IAEtB,IAAInhY,EAAW6+V,EACfnrX,EAAOD,QAAUusB,C,wBC9KjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBmlR,EAAanlR,EAAQ,OAErB0hS,EAAa1hS,EAAQ,OAErB21Y,EAAc31Y,EAAQ,OAEtB6jW,EAAgB7jW,EAAQ,OAuCxB20Y,EAAqB9wC,EAAc9kX,UACnCw4X,EAAW55X,KAAK0I,KAChBixX,EAAY35X,KAAK2I,MACjBsvZ,EAAa,IACbC,EAA0B,GAAbD,EACbE,EAAwB,GAAbD,EACXE,EAAqB,GAAXD,EAEVE,EAAS,SAAU77Z,EAAGmd,EAAG2+Y,EAAIC,GAC/B,MAAOD,EAAKC,EAAI,CACd,IAAIhgS,EAAM+/R,EAAKC,IAAO,EAElB/7Z,EAAE+7H,GAAK,GAAK5+G,EACd2+Y,EAAK//R,EAAM,EAEXggS,EAAKhgS,CAET,CAEA,OAAO+/R,CACT,EAOIE,EAAYtyC,EAAc3oQ,OAAO,CACnCl/G,KAAM,OAKN4uT,SAAU,SAAUpkT,GAClB,IAAI4vZ,EAAU5+Z,KAAK6+Z,SACfvoV,EAAO,IAAIjiD,KAAKrlB,GACpB,OAAOk7S,EAAW4qG,WAAW8J,EAAQ,GAAItoV,EAAMt2E,KAAKi+Z,WAAW,UACjE,EAKAhwC,WAAY,SAAUprR,GACpB,IAAI0qF,EAASvtL,KAAKkpX,QASlB,GAPI37L,EAAO,KAAOA,EAAO,KAEvBA,EAAO,IAAMgxO,EACbhxO,EAAO,IAAMgxO,GAIXhxO,EAAO,MAAQ16F,KAAY06F,EAAO,KAAO16F,IAAU,CACrD,IAAI3lE,EAAI,IAAImH,KACZk5J,EAAO,IAAM,IAAIl5J,KAAKnH,EAAEgmW,cAAehmW,EAAEspD,WAAYtpD,EAAEimW,WACvD5lM,EAAO,GAAKA,EAAO,GAAKgxO,CAC1B,CAEAv+Z,KAAKmlW,UAAUtiQ,EAAI30D,YAAa20D,EAAI90D,YAAa80D,EAAI70D,aAErD,IAAIF,EAAW9tC,KAAKq8Z,UAEfx5T,EAAIgqR,SACPt/L,EAAO,GAAKogH,EAAWjnN,MAAMo5S,EAAUvyM,EAAO,GAAKz/I,GAAYA,IAG5D+0D,EAAIiqR,SACPv/L,EAAO,GAAKogH,EAAWjnN,MAAMq5S,EAASxyM,EAAO,GAAKz/I,GAAYA,GAElE,EAKAq3T,UAAW,SAAUy4D,EAAe7vX,EAAaC,GAC/C4vX,EAAgBA,GAAiB,GACjC,IAAIrwO,EAASvtL,KAAKkpX,QACdn/D,EAAOx8H,EAAO,GAAKA,EAAO,GAC1BuxO,EAAiB/0G,EAAO6zG,EAET,MAAf7vX,GAAuB+wX,EAAiB/wX,IAC1C+wX,EAAiB/wX,GAGA,MAAfC,GAAuB8wX,EAAiB9wX,IAC1C8wX,EAAiB9wX,GAGnB,IAAI+wX,EAAiBC,EAAYh9Z,OAC7BmlG,EAAMq3T,EAAOQ,EAAaF,EAAgB,EAAGC,GAC7CnyO,EAAQoyO,EAAY74Z,KAAKyI,IAAIu4F,EAAK43T,EAAiB,IACnDjxX,EAAW8+I,EAAM,GAErB,GAAiB,SAAbA,EAAM,GAAe,CACvB,IAAIqyO,EAAWl1G,EAAOj8Q,EAGlBoxX,EAAWvxH,EAAWwxH,KAAKF,EAAWrB,GAAe,GACzD9vX,GAAYoxX,CACd,CAEA,IAAIE,EAAiBp/Z,KAAKi+Z,WAAW,UAAY,EAA6D,GAAzD,IAAI5pY,MAAMk5J,EAAO,KAAOA,EAAO,IAAI8xO,oBAA2B,IAC/GpxC,EAAa,CAAC9nX,KAAKugF,MAAMq5S,GAAUxyM,EAAO,GAAK6xO,GAAkBtxX,GAAYA,EAAWsxX,GAAiBj5Z,KAAKugF,MAAMo5S,GAAWvyM,EAAO,GAAK6xO,GAAkBtxX,GAAYA,EAAWsxX,IACxLjB,EAAYmB,UAAUrxC,EAAY1gM,GAClCvtL,KAAK6+Z,SAAWjyO,EAEhB5sL,KAAKq8Z,UAAYvuX,EACjB9tC,KAAKw8Z,YAAcvuC,CACrB,EACArhW,MAAO,SAAU5d,GAEf,OAAQ2+R,EAAWslF,UAAUjkX,EAC/B,IAEFsjO,EAAO56H,KAAK,CAAC,UAAW,cAAc,SAAUqiP,GAC9C4kE,EAAUp3Z,UAAUwyV,GAAc,SAAU/qV,GAC1C,OAAOmuZ,EAAmBpjE,GAAY15V,KAAKL,KAAMA,KAAK4sB,MAAM5d,GAC9D,CACF,IAQA,IAAIgwZ,EAAc,CAClB,CAAC,WAAYZ,GACb,CAAC,WAAyB,EAAbA,GACb,CAAC,WAAyB,GAAbA,GACb,CAAC,WAAyB,GAAbA,GACb,CAAC,WAAyB,GAAbA,GACb,CAAC,eAAgBC,GACjB,CAAC,eAA6B,EAAbA,GACjB,CAAC,eAA6B,GAAbA,GACjB,CAAC,eAA6B,GAAbA,GACjB,CAAC,eAA6B,GAAbA,GACjB,CAAC,eAAgBC,GACjB,CAAC,eAA2B,EAAXA,GACjB,CAAC,eAA2B,EAAXA,GACjB,CAAC,eAA2B,GAAXA,GACjB,CAAC,cAAeC,GAChB,CAAC,cAAyB,EAAVA,GAChB,CAAC,cAAyB,EAAVA,GAChB,CAAC,cAAyB,EAAVA,GAChB,CAAC,cAAyB,EAAVA,GAChB,CAAC,cAAyB,EAAVA,GAChB,CAAC,OAAkB,EAAVA,GACT,CAAC,cAAyB,GAAVA,GAChB,CAAC,OAAkB,GAAVA,GACT,CAAC,OAAkB,GAAVA,GACT,CAAC,QAAmB,GAAVA,GACV,CAAC,OAAkB,GAAVA,GACT,CAAC,QAAmB,GAAVA,GACV,CAAC,OAAkB,GAAVA,GACT,CAAC,UAAqB,GAAVA,GACZ,CAAC,QAAmB,GAAVA,EAAe,GACzB,CAAC,QAAmB,GAAVA,EAAe,GACzB,CAAC,YAAuB,IAAVA,EAAgB,GAC9B,CAAC,QAAmB,GAAVA,EAAe,GACzB,CAAC,QAAmB,GAAVA,EAAe,IACzB,CAAC,OAAkB,IAAVA,IAOTI,EAAU33Z,OAAS,SAAUuqP,GAC3B,OAAO,IAAIotK,EAAU,CACnB/G,OAAQrmK,EAAM7e,QAAQxvO,IAAI,WAE9B,EAEA,IAAIuqB,EAAWkxY,EACfx9Z,EAAOD,QAAUusB,C,wBC9NjB,IAAIkgR,EAAanlR,EAAQ,OAwBrB4zY,EAAczuH,EAAWjnN,MAU7B,SAASu2U,EAAuB1vO,EAAQr/I,EAAaH,EAAaC,GAChE,IAAItqC,EAAS,CAAC,EACVqmT,EAAOx8H,EAAO,GAAKA,EAAO,GAC1Bz/I,EAAWpqC,EAAOoqC,SAAW6/P,EAAWwxH,KAAKp1G,EAAO77Q,GAAa,GAElD,MAAfH,GAAuBD,EAAWC,IACpCD,EAAWpqC,EAAOoqC,SAAWC,GAGZ,MAAfC,GAAuBF,EAAWE,IACpCF,EAAWpqC,EAAOoqC,SAAWE,GAI/B,IAAI5kB,EAAY1lB,EAAOk5Z,kBAAoBH,EAAqB3uX,GAE5D6uX,EAAiBj5Z,EAAOi5Z,eAAiB,CAACP,EAAYj2Z,KAAK0I,KAAK0+K,EAAO,GAAKz/I,GAAYA,EAAU1kB,GAAYgzY,EAAYj2Z,KAAK2I,MAAMy+K,EAAO,GAAKz/I,GAAYA,EAAU1kB,IAE3K,OADAk2Y,EAAU3C,EAAgBpvO,GACnB7pL,CACT,CAOA,SAAS+4Z,EAAqB3uX,GAE5B,OAAO6/P,EAAWqvH,iBAAiBlvX,GAAY,CACjD,CAEA,SAASyxR,EAAMo9F,EAAgBx1T,EAAKomF,GAClCovO,EAAex1T,GAAOhhG,KAAKwI,IAAIxI,KAAKyI,IAAI+tZ,EAAex1T,GAAMomF,EAAO,IAAKA,EAAO,GAClF,CAGA,SAAS+xO,EAAU3C,EAAgBpvO,IAChC3mG,SAAS+1U,EAAe,MAAQA,EAAe,GAAKpvO,EAAO,KAC3D3mG,SAAS+1U,EAAe,MAAQA,EAAe,GAAKpvO,EAAO,IAC5DgyI,EAAMo9F,EAAgB,EAAGpvO,GACzBgyI,EAAMo9F,EAAgB,EAAGpvO,GAErBovO,EAAe,GAAKA,EAAe,KACrCA,EAAe,GAAKA,EAAe,GAEvC,CAEAz7Z,EAAQ+7Z,uBAAyBA,EACjC/7Z,EAAQu7Z,qBAAuBA,EAC/Bv7Z,EAAQo+Z,UAAYA,C,wBCnFpB,IAAI1vY,EAAQpH,EAAQ,OAEhBkvF,EAAO9nF,EAAM8nF,KACbhuF,EAAMkG,EAAMlG,IACZiqS,EAAa/jS,EAAM+jS,WACnBx/B,EAAgBvkQ,EAAMukQ,cACtB92F,EAAOztK,EAAMytK,KAEb23N,EAAQxsY,EAAQ,OAEhBysY,EAAaD,EAAMC,WAEnBxqE,EAAajiU,EAAQ,MAErBkiU,EAASD,EAAWC,OAEpBmxD,EAAcrzX,EAAQ,OAEtByqN,EAAezqN,EAAQ,OAEvBiyO,EAASjyO,EAAQ,OAEjBinT,EAAmBh1E,EAAOg1E,iBA4B9B,SAAS0sE,EAAUmJ,EAAY36S,EAAK40T,EAAuBC,GACzDx/Z,KAAKslZ,WAAaA,EAClBtlZ,KAAK2qG,IAAMA,EACX3qG,KAAKy/Y,WAKD8f,EAAwBv/Z,KAAKy/Z,uBAAyBF,EAAsBp9Z,QAC5Eq9Z,EAAiBx/Z,KAAK0/Z,gBAAkBF,EAAer9Z,QAC3DnC,KAAK2/Z,aAAeJ,EAAsBt+Z,OAAOu+Z,GAajDx/Z,KAAK4/Z,cAAgBzrI,GACvB,CAEA,IAAIxrR,EAAQwzY,EAAU50Y,UAmJtB,SAASs4Z,EAAkBv+Y,EAAWw+Y,EAAeptL,EAASc,EAAS3wI,GAErE,IAAI48S,EAqDJ,SAASsgB,EAAal9T,EAAK8yT,GACzB,OAAO9yT,EAAIq/S,YAAcr/S,EAAIs/S,UAAYt/S,EAAIs/S,SAASj/Y,IAAIyyZ,EAAKqK,WAAWx2Z,IAC5E,CAxDAq5F,EAAMA,GAAO,CAAC,EAEd6U,EAAKooT,GAAe,SAAU7X,EAAc9gT,GAC1C,IAAItE,EAAIwzJ,YAAcxzJ,EAAIwzJ,aAAe4xJ,EAAa5xJ,WAAtD,CAIA,IAAI4pK,EAAqB3+Y,EAAUs+Y,cAAc18Z,IAAI+kZ,EAAap6Y,KAE9DqyZ,EAAgBD,EAAmBC,cACnCC,EAAcF,EAAmBE,YAErC,GAAIA,EAAa,CACf,IAAIC,EACA1I,EAAeyI,EAAYzI,aAC/BA,EAAahgT,MAAK,SAAU2oT,GACtBN,EAAal9T,EAAKw9T,KACpBA,EAAK18P,QACLy8P,GAAmB,EAEvB,IACAA,GAAoBD,EAAYx8P,QAChCsgP,EAAckc,EAAa3sL,GAC3B,IAAI8sL,EAAch/Y,EAAU6iY,eAAegc,EAAat9T,EAAImqQ,OAK5D0qD,EAAahgT,MAAK,SAAU2oT,GAC1BA,EAAKnc,QAAQoc,EACf,IACA7gB,GAAc0gB,EAAYjc,QAAQoc,EACpC,MAAWJ,GACTA,EAAcxoT,MAAK,SAAUi+S,EAAM4K,GAC7BR,EAAal9T,EAAK8yT,IACpBA,EAAKhyP,QAGP,IAAI28P,EAAch/Y,EAAU6iY,eAAewR,EAAM9yT,EAAImqQ,OASrDszD,EAAY7tU,MAAQw1T,EAAal3J,kBAAoBre,EAAQia,iBAAiBgpK,EAAK51Z,QAAQwxP,OAC3F0yJ,EAAc0R,EAAMniL,GACpBisK,GAAckW,EAAKzR,QAAQoc,EAC7B,GA7CF,CA+CF,IAMAh/Y,EAAUm+X,YAAcA,CAC1B,CAzMA92Y,EAAMgtX,YAAc,SAAUjjJ,EAASc,GAiBrCd,EAAQijJ,YAAYniJ,GAQpBxzO,KAAK4/Z,cAAcloT,MAAK,SAAU8oT,GAChC,IAAIL,EAAcK,EAAWL,YAC7BA,GAAeA,EAAYx8P,OAC7B,GACF,EAGAh7J,EAAMw7Y,eAAiB,SAAUwR,EAAM8K,GAErC,GAAK9K,EAAKqK,WAAV,CAIA,IAAIzI,EAAWv3Z,KAAK0ga,aAAax9Z,IAAIyyZ,EAAKqK,WAAWx2Z,IAEjDm3Z,EAAOpJ,EAASx3Z,QAChBo+O,GAAesiL,GAAWlJ,EAASqJ,sBAAwBD,GAAQA,EAAK59I,oBAAsB4yI,EAAKkL,gBAAkBtJ,EAASuJ,WAC9HrxZ,EAAO0uO,EAAco5K,EAAS9nZ,KAAO,KACrCsxZ,EAAeJ,GAAQA,EAAKI,aAC5BC,EAAwB,MAAhBD,EAAuB56Z,KAAK0I,KAAKkyZ,EAAetxZ,GAAQ,KACpE,MAAO,CACLA,KAAMA,EACNuxZ,MAAOA,EACPD,aAAcA,EAZhB,CAcF,EAEAp4Z,EAAM6uZ,YAAc,SAAU+I,GAC5B,OAAOvga,KAAK0ga,aAAax9Z,IAAIq9Z,EAC/B,EAUA53Z,EAAMk3Y,kBAAoB,SAAUjsK,EAAaa,GAC/C,IAAI8iL,EAAWv3Z,KAAK0ga,aAAax9Z,IAAI0wO,EAAY/lO,KAE7CoR,EAAO20N,EAAY7oI,UACnBq/K,EAAUnrQ,EAAKsJ,QAMfw6P,EAAoBw0I,EAASqJ,oBAAsBnsL,EAAKkE,0BAA4ByxC,GAAWmtI,EAAS/qU,UACxGuvG,EAAQ63C,EAAY1wO,IAAI,UAAYknR,GAAWx2C,EAAY1wO,IAAI,kBAG/D69Z,EAA2D,QAA5CntL,EAAY1wO,IAAI,wBAAoCknR,EAAU,KACjFx2C,EAAYoF,gBAAkBu+K,EAASx3Z,QAAU,CAC/CgjR,kBAAmBA,EACnBg+I,aAAcA,EACdhlO,MAAOA,EAEX,EAEApzL,EAAM25Y,iBAAmB,SAAU5vK,GACjC,IAAIpxN,EAAYthB,KACZiha,EAAc3/Y,EAAUo/Y,aAAevsI,IAC3CzhD,EAAQy/E,YAAW,SAAUv+E,GAC3B,IAAI4M,EAAc5M,EAAYwC,iBAC1BmqL,EAAa3sL,EAAY/lO,IAC7BozZ,EAAYzuZ,IAAI+tZ,EAAY,CAC1B/2Z,GAAI+2Z,EACJtyO,KAAM,KACNvxE,KAAM,KACNlwB,UAAWonJ,EAAYyC,0BACvBuqL,mBAAoBpgL,KAAiB5M,EAAYs8B,oBAAsBt8B,EAAYs8B,sBACnF4wJ,YAAa,EACbrxZ,KAAMtJ,KAAKugF,MAAM85J,GAAe,KAChCj4N,MAAO,IAET24Y,EAAK5/Y,EAAWsyN,EAAaA,EAAYuhL,SAC3C,GACF,EAEAxsZ,EAAM45Y,kBAAoB,WACxB,IAAI4e,EAAenha,KAAK4/Z,cACpBltL,EAAU1yO,KAAKslZ,WAAW9rK,WAC1B7uI,EAAM3qG,KAAK2qG,IACf+M,EAAK13G,KAAK2/Z,cAAc,SAAUl+Y,GAChC,IAAIiuS,EAASyxG,EAAaj+Z,IAAIue,EAAQ5T,MAAQszZ,EAAa3uZ,IAAIiP,EAAQ5T,IAAK,IAC5E4T,EAAQglF,OAAS26T,EAAsBpha,KAAMyhB,EAASiuS,EAAQh9E,EAAS/nI,GACvElpF,EAAQ23T,cAAgBioF,EAAuBrha,KAAMyhB,EAASiuS,EAAQh9E,EAAS/nI,EACjF,GAAG3qG,KACL,EAEA2I,EAAM65Y,YAAc,SAAU/tK,EAAM8c,EAAO7e,EAAS/nI,GAClD,IAAIm5S,EAAarvK,EAAKqvK,WAClB/jZ,EAAU+jZ,EAAW/jZ,QACzBA,EAAQwxP,MAAQA,EAChBxxP,EAAQ2yO,QAAUA,EAClB3yO,EAAQ4qG,IAAMA,EACdm5S,EAAWwd,SAAW7sL,EAAKkE,yBAC3BuoL,EAAKlha,KAAMuxP,EAAOuyJ,EACpB,EAEAn7Y,EAAMi3Y,0BAA4B,SAAUltK,EAASc,GAEnDqsL,EAAkB7/Z,KAAMA,KAAKy/Z,uBAAwB/sL,EAASc,EAAS,CACrEw5H,OAAO,GAEX,EAKArkW,EAAMm3Y,mBAAqB,SAAUptK,EAASc,EAAS3wI,GACrDg9T,EAAkB7/Z,KAAMA,KAAK0/Z,gBAAiBhtL,EAASc,EAAS3wI,EAClE,EAgEAl6F,EAAMg3Y,mBAAqB,SAAUjtK,GACnC,IAAI+sK,EACJ/sK,EAAQy/E,YAAW,SAAUv+E,GAE3B6rK,GAAc7rK,EAAYuhL,SAASjR,SACrC,IACAlkZ,KAAKy/Y,YAAcA,CACrB,EAEA92Y,EAAMqmP,KAAO,WAEXhvP,KAAK0ga,aAAahpT,MAAK,SAAU6/S,GAC/B,IAAI5B,EAAO4B,EAAS76S,KAEpB,EAAG,CACD,GAAIi5S,EAAK2L,QAAS,CAChB/J,EAASuJ,WAAanL,EAAKkL,gBAC3B,KACF,CAEAlL,EAAOA,EAAK4L,aACd,OAAS5L,EACX,GACF,EAEA,IAAI1R,EAAgBt7Y,EAAMs7Y,cAAgB,SAAU0R,EAAMniL,GAC5C,WAAZA,IAAyBmiL,EAAK51Z,QAAQyzO,QAAUA,EAClD,EAEA,SAAS4tL,EAAsB9/Y,EAAW2mY,EAAcgY,EAAoBvtL,EAAS/nI,GACnF,IAAIu1T,EAAgBD,EAAmBC,gBAAkBD,EAAmBC,cAAgB/rI,KACxF/gD,EAAa60K,EAAa70K,WAC1B6lG,EAAkBgvE,EAAahvE,gBAYnC,SAASjyU,EAAO4sO,GACd,IAAI2sL,EAAa3sL,EAAY/lO,IAGzB8nZ,EAAOuK,EAAch9Z,IAAIq9Z,IAAeL,EAAc1tZ,IAAI+tZ,EAAYtL,EAAW,CACnFjmK,KAAMwyK,EACN/6T,MAAOg7T,EACPl5Y,MAAOm5Y,KAET/L,EAAK51Z,QAAU,CACbwxP,MAAO3d,EACPlB,QAASA,EACT/nI,IAAKA,EACLg3T,eAAgB1Z,EAAa2Z,WAAa3Z,EAAa4Z,SACvD7yK,KAAMi5J,EAAaj5J,KACnBvoJ,MAAOwhT,EAAaxhT,MACpBnlF,UAAWA,GAEb4/Y,EAAK5/Y,EAAWsyN,EAAa+hL,EAC/B,CA3BI1N,EAAax/B,kBACf/1I,EAAQw/G,cAAclrV,GACbosO,EACTV,EAAQ8Z,oBAAoBpZ,EAAYpsO,GAC/BiyU,GACTA,EAAgBvmG,EAAS/nI,GAAK+M,KAAK1wG,GAyBrC,IAAIi6Z,EAAc3/Y,EAAUo/Y,aAC5BR,EAAcxoT,MAAK,SAAUi+S,EAAM4K,GAC5BU,EAAY/9Z,IAAIq9Z,KACnB5K,EAAKn6K,UACL0kL,EAAcliF,UAAUuiF,GAE5B,GACF,CAEA,SAASc,EAAuB//Y,EAAW2mY,EAAcgY,EAAoBvtL,EAAS/nI,GACpF,IAAIw1T,EAAcF,EAAmBE,YAAcF,EAAmBE,aACnElL,EAAW,CACZxuT,MAAOq7T,IAET3B,EAAYpga,QAAU,CACpB2yO,QAASA,EACT/nI,IAAKA,EACLyuO,aAAc6uE,EAAa7uE,aAC3B93T,UAAWA,GAGb,IAAIo2Y,EAAeyI,EAAYzI,aAAeyI,EAAYzI,cAAgBvjI,IACtE/gD,EAAa60K,EAAa70K,WAC1B6lG,EAAkBgvE,EAAahvE,gBAC/B8oF,GAAkB,EAClB5oF,EAAkB8uE,EAAa9uE,gBAkBnC,SAAS6oF,EAAWpuL,GAClB,IAAI2sL,EAAa3sL,EAAY/lO,IACzBwyZ,EAAO3I,EAAax0Z,IAAIq9Z,GAEvBF,IACHA,EAAO3I,EAAallZ,IAAI+tZ,EAAYtL,EAAW,CAC7CxuT,MAAOw7T,EACPC,QAASC,KAIXhC,EAAYx8P,SAGd08P,EAAKtga,QAAU,CACbwxP,MAAO3d,EACPmuL,gBAAiBA,EACjB5oF,gBAAiBA,GAEnBknF,EAAK+B,MAAQjC,EACbE,EAAKiB,QAAUS,EACfb,EAAK5/Y,EAAWsyN,EAAaysL,EAC/B,CAnCIjtL,EACFV,EAAQ8Z,oBAAoBpZ,EAAY4uL,GAC/B/oF,EACTA,EAAgBvmG,EAAS/nI,GAAK+M,KAAKsqT,IAMjCD,GAAkB,EAClBrqT,EAAKg7H,EAAQ4+K,YAAa0Q,IA4B9B,IAAIf,EAAc3/Y,EAAUo/Y,aAC5BhJ,EAAahgT,MAAK,SAAU2oT,EAAME,GAC3BU,EAAY/9Z,IAAIq9Z,KACnBF,EAAK7kL,UAGL2kL,EAAYx8P,QACZ+zP,EAAa15E,UAAUuiF,GAE3B,GACF,CAEA,SAASuB,EAAiB/ha,GACxBA,EAAQq5U,aAAar5U,EAAQ2yO,QAAS3yO,EAAQ4qG,IAAK5qG,EAAQyzO,QAC7D,CAEA,SAASyuL,EAAUlia,EAASsia,GAC1B,OAAOtia,EAAQgia,iBAAmBO,CACpC,CAEA,SAASA,IACPtia,KAAKoia,MAAMz+P,QACX3jK,KAAKuia,gBAAgB5+P,OACvB,CAEA,SAASw+P,IACPnia,KAAKoia,OAASpia,KAAKoia,MAAMz+P,OAC3B,CAEA,SAAS69P,EAAezha,GACtB,OAAOA,EAAQivP,MAAQjvP,EAAQivP,KAAKjvP,EAAQwxP,MAAOxxP,EAAQ2yO,QAAS3yO,EAAQ4qG,IAAK5qG,EAAQyzO,QAC3F,CAEA,SAASiuL,EAAgB1ha,GACnBA,EAAQ4ha,gBACV5ha,EAAQkf,KAAKizX,iBAGf,IAAIxpB,EAAe3oX,EAAQ2oX,aAAej5C,EAAiB1vU,EAAQ0mG,MAAM1mG,EAAQwxP,MAAOxxP,EAAQ2yO,QAAS3yO,EAAQ4qG,IAAK5qG,EAAQyzO,UAC9H,OAAOk1I,EAAa1mX,OAAS,EAAI0nB,EAAIg/V,GAAc,SAAU1gW,EAAGm/E,GAC9D,OAAOq7T,EAAuBr7T,EAChC,IAAKs7T,CACP,CAEA,IAAIA,EAA2BD,EAAuB,GAEtD,SAASA,EAAuBE,GAC9B,OAAO,SAAU9gZ,EAAQ7hB,GACvB,IAAIkf,EAAOlf,EAAQkf,KACf0jZ,EAAc5ia,EAAQ2oX,aAAag6C,GAEvC,GAAIC,GAAeA,EAAYtvI,SAC7B,IAAK,IAAIrvR,EAAI4d,EAAO88B,MAAO16C,EAAI4d,EAAO+8B,IAAK36C,IACzC2+Z,EAAYtvI,SAASp0Q,EAAMjb,QAEpB2+Z,GAAeA,EAAYnlR,UACpCmlR,EAAYnlR,SAAS57H,EAAQ3C,EAEjC,CACF,CAEA,SAASyiZ,EAAgB3ha,GACvB,OAAOA,EAAQkf,KAAKsJ,OACtB,CAEA,SAAS24Y,EAAK5/Y,EAAWsyN,EAAa+hL,GACpC,IAAI4K,EAAa3sL,EAAY/lO,IAEzB0pZ,EAAWj2Y,EAAUo/Y,aAAax9Z,IAAIq9Z,IAEzChJ,EAAStpO,OAASspO,EAAStpO,KAAO0nO,GACnC4B,EAAS76S,MAAQ66S,EAAS76S,KAAKwkT,KAAKvL,GACpC4B,EAAS76S,KAAOi5S,EAChBA,EAAKkL,gBAAkBtJ,EAAShvY,QAChCotY,EAAKqK,WAAazI,CACpB,CAuBA,SAASqL,EAAiBC,GACxBzvL,EAAa,KAEb,IAEEyvL,EAAWC,EAAaC,EAC1B,CAAE,MAAO98Z,GAAI,CAEb,OAAOmtO,CACT,CA9BA+oK,EAAU+L,iBAAmB,SAAUD,EAAc5xJ,GAUnD,OATIs9D,EAAWs0F,KACbA,EAAe,CACb7uE,aAAc6uE,EACd70K,WAAYwvL,EAAiB3a,KAIjCA,EAAap6Y,IAAM68U,EAAO,gBAC1Br0F,IAAe4xJ,EAAa5xJ,WAAaA,GAClC4xJ,CACT,EAqBA,IAEI70K,EAFA0vL,EAAc,CAAC,EACfC,EAAU,CAAC,EAef,SAASC,EAAYt9Z,EAAQ0tP,GAE3B,IAAK,IAAI3uP,KAAQ2uP,EAAI7rP,UAEnB7B,EAAOjB,GAAQ44L,CAInB,CArBA2lO,EAAYF,EAAajnB,GACzBmnB,EAAYD,EAAS9vL,GAErB6vL,EAAYl4K,iBAAmBk4K,EAAYt2K,oBAAsB,SAAUhoP,GACzE4uO,EAAa5uO,CACf,EAEAs+Z,EAAYrvL,cAAgB,SAAUwvL,GACd,WAAlBA,EAAKvvL,UAAyBuvL,EAAKtvL,UACrCP,EAAa6vL,EAAKtvL,QAEtB,EAYA,IAAIlmN,EAAW0uX,EACfh7Y,EAAOD,QAAUusB,C,wBC3iBjB,IAAImC,EAAQpH,EAAQ,OAGhB1hB,GADS8oB,EAAM4tW,OACL5tW,EAAM9oB,SAEhB2sC,EAAUjrB,EAAQ,OAERirB,EAAQojM,QAyBtB,SAASo+K,EAAWn9U,GAClB,OAAO,IAAIorV,EAAKprV,EAClB,CAWA,SAASorV,EAAKprV,GACZA,EAASA,GAAU,CAAC,EACpB93E,KAAKmja,OAASrrV,EAAO2uB,MACrBzmG,KAAKoja,MAAQtrV,EAAOk3K,KACpBhvP,KAAK4qY,OAAS9yT,EAAOvvD,MACrBvoB,KAAKqja,SAAWvrV,EAAOoqV,QACvBlia,KAAKsja,QAAS,EAGdtja,KAAKD,OACP,CAEA,IAAIwja,EAAYL,EAAK37Z,UASrBg8Z,EAAUrf,QAAU,SAAUoc,GAC5B,IAcIkD,EAdAC,EAASzja,KAAK0ja,UACdjxU,EAAO6tU,GAAeA,EAAY7tU,KAItC,GAAIzyF,KAAKsja,QAAUG,EAAQ,CACzB,IAAI1ja,EAAUC,KAAKD,QACnBA,EAAQkf,KAAOlf,EAAQ+1Z,WAAa2N,EAAO1ja,QAAQ+1Z,UACrD,CAEI91Z,KAAKgga,aACPhga,KAAKgga,WAAWvI,YAAcz3Z,MAK5BA,KAAKoja,QAAU3wU,IACjB+wU,EAAaxja,KAAKoja,MAAMpja,KAAKD,UAK/B,IAeI4ja,EAfAC,EAAYC,EAAe7ja,KAAK8ja,QAChCC,EAAmB/ja,KAAKgka,eAAiB,EACzChD,EAAQ6C,EAAevD,GAAeA,EAAYU,OAClDD,EAAeT,GAAeA,EAAYS,cAAgB,EAM9D,SAAS8C,EAAe70Z,GAGtB,QAFEA,GAAO,KAAOA,EAAM,GAEfA,CACT,CARI40Z,IAAc5C,GAAS+C,IAAqBhD,IAC9CyC,EAAa,UAWXxja,KAAKsja,QAAyB,UAAfE,KACjBxja,KAAKsja,QAAS,EACdK,EAAqBl9T,EAAMzmG,KAAMyyF,IAGnCzyF,KAAK8ja,OAAS9C,EACdhha,KAAKgka,cAAgBjD,EACrB,IAAItxZ,EAAO6wZ,GAAeA,EAAY7wZ,KAWtC,GAREzP,KAAKika,QADHR,EACaA,EAAOS,cAGLlka,KAAK4qY,OAAS5qY,KAAK4qY,OAAO5qY,KAAKD,SAAW8yF,IAKzD7yF,KAAKmka,UAAW,CAClB,IAAIzlX,EAAQ1+C,KAAKoka,UACbzlX,EAAMx4C,KAAKyI,IAAY,MAARa,EAAezP,KAAKoka,UAAY30Z,EAAOojF,IAAU7yF,KAAKika,SAEzE,IAAKxxU,IAASkxU,GAAsBjlX,EAAQC,GAAM,CAChD,IAAI6+F,EAAWx9I,KAAKmka,UAEpB,GAAIr9Z,EAAQ02I,GACV,IAAK,IAAIx5I,EAAI,EAAGA,EAAIw5I,EAASx7I,OAAQgC,IACnCqga,EAAWrka,KAAMw9I,EAASx5I,GAAI06C,EAAOC,EAAKqiX,EAAOD,QAGnDsD,EAAWrka,KAAMw9I,EAAU9+F,EAAOC,EAAKqiX,EAAOD,EAElD,CAEA/ga,KAAKoka,UAAYzlX,EAGjB,IAAI2lX,EAAwC,MAAzBtka,KAAKuka,iBAA2Bvka,KAAKuka,iBAAmB5lX,EAC3E3+C,KAAKkka,cAAgBI,CACvB,MAIEtka,KAAKoka,UAAYpka,KAAKkka,cAAyC,MAAzBlka,KAAKuka,iBAA2Bvka,KAAKuka,iBAAmBvka,KAAKika,QAGrG,OAAOjka,KAAKy/Y,YACd,EAEA,IAAI5tY,EAAW,WACb,IAAI8sC,EACAv+B,EACA4gZ,EACAD,EACAyD,EACApja,EAAK,CACPqlG,MAAO,SAAUn4F,EAAGrI,EAAGw+Z,EAAOC,GAC5BtkZ,EAAU9R,EACVqwC,EAAM14C,EACN+6Z,EAAQyD,EACR1D,EAAe2D,EACfF,EAAWr+Z,KAAK0I,KAAKkyZ,EAAeC,GACpC5/Z,EAAGkG,KAAO05Z,EAAQ,GAAKD,EAAe,EAAI4D,EAAUC,CACtD,GAEF,OAAOxja,EAEP,SAASwja,IACP,OAAOxkZ,EAAUu+B,EAAMv+B,IAAY,IACrC,CAEA,SAASukZ,IACP,IAAI9wL,EAAYzzN,EAAUokZ,EAAWxD,EAAQ76Z,KAAK0I,KAAKuR,EAAUokZ,GAC7D9ga,EAAS0c,GAAWu+B,EAAM,KAAOk1L,EAAYktL,EAAeltL,EAE9DzzN,EAEF,OADAA,IACO1c,CACT,CACF,CA9Be,GAqCf,SAAS2ga,EAAWQ,EAASrnR,EAAU9+F,EAAOC,EAAKqiX,EAAOD,GACxDlvZ,EAAS40F,MAAM/nD,EAAOC,EAAKqiX,EAAOD,GAClC8D,EAAQC,iBAAmBtnR,EAE3BqnR,EAAQC,iBAAiB,CACvBpmX,MAAOA,EACPC,IAAKA,EACLp2B,MAAOo2B,EAAMD,EACbp3C,KAAMuK,EAASvK,MACdu9Z,EAAQ9ka,QACb,CAEA,SAAS0mG,EAAMo+T,EAASpyU,GAGtB,IAAI+qD,EACAmmR,EAHJkB,EAAQT,UAAYS,EAAQX,cAAgBW,EAAQZ,QAAU,EAC9DY,EAAQN,iBAAmB,MAItB9xU,GAAQoyU,EAAQ1B,SACnB3lR,EAAWqnR,EAAQ1B,OAAO0B,EAAQ9ka,SAE9By9I,GAAYA,EAASA,WACvBmmR,EAAqBnmR,EAASmmR,mBAC9BnmR,EAAWA,EAASA,UAIlB12I,EAAQ02I,KAAcA,EAASx7I,SACjCw7I,EAAW,OAIfqnR,EAAQV,UAAY3mR,EACpBqnR,EAAQf,OAASe,EAAQb,cAAgB,KACzC,IAAIe,EAAaF,EAAQG,YAEzB,OADAD,GAAcA,EAAWphQ,QAClBggQ,CACT,CA1CAJ,EAAU5/P,MAAQ,WAChB3jK,KAAKsja,QAAS,EACdtja,KAAKqja,UAAYrja,KAAKqja,SAASrja,KAAKD,QACtC,EA6CAwja,EAAU9jB,WAAa,WACrB,OAAOz/Y,KAAKmka,WAAanka,KAAKoka,UAAYpka,KAAKika,OACjD,EAOAV,EAAUrC,KAAO,SAAU+D,IAErBjla,KAAKgla,cAAgBC,GAAYjla,KAAKsja,UACxCtja,KAAKgla,YAAcC,EACnBA,EAASvB,UAAY1ja,KACrBila,EAASthQ,QAEb,EAEA4/P,EAAU/nL,QAAU,WACdx7O,KAAKy9Y,YAITz9Y,KAAK0ja,YAAc1ja,KAAK0ja,UAAUsB,YAAc,MAChDhla,KAAKgla,cAAgBhla,KAAKgla,YAAYtB,UAAY,MAClD1ja,KAAKsja,QAAS,EACdtja,KAAKy9Y,WAAY,EACnB,EAEA8lB,EAAUhC,YAAc,WACtB,OAAOvha,KAAK0ja,SACd,EAEAH,EAAUhB,cAAgB,WACxB,OAAOvia,KAAKgla,WACd,EAEAzB,EAAU1N,aAAe,SAAUl3W,GAMjC3+C,KAAKkka,cAAgBlka,KAAKuka,iBAAmB5lX,CAC/C,EA6CAz9C,EAAQ+zZ,WAAaA,C,mBClTrB,IAAIiQ,EAAgB,OAEhBC,EAAa,WACf,MAAO,CACLh3X,SAAU,CACRmE,UAAW,CACT1hB,MAAOs0Y,IAGX92X,SAAU,CACRkE,UAAW,CACT1hB,MAAOs0Y,IAGX72X,UAAW,CACT4D,UAAW,CACTrhB,MAAOs0Y,IAGX32X,UAAW,CACT+D,UAAW,CACT9tC,KAAM,SACNosB,MAAO,SAGX2iB,UAAW,CACTssR,UAAW,CACTjvS,MAAOs0Y,IAIf,EAEI9M,EAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC9Hva,EAAQ,CACVjtX,MAAOwnY,EACPx+V,gBAAiB,OACjB2sN,QAAS,CACPq9B,YAAa,CACXtxQ,UAAW,CACT1hB,MAAOs0Y,GAEThzG,WAAY,CACVthS,MAAOs0Y,GAETh2X,MAAO,CACLte,MAAO,UAIbgb,OAAQ,CACNqG,UAAW,CACTrhB,MAAOs0Y,IAGXjzX,UAAW,CACTrhB,MAAOs0Y,GAET55X,MAAO,CACL2G,UAAW,CACTrhB,MAAOs0Y,IAGX9kG,QAAS,CACPluR,UAAW,CACT6rL,OAAQ,CACN8F,YAAaqhM,KAInB31D,SAAU,CACRt9T,UAAW,CACTrhB,MAAOs0Y,IAGXr0J,UAAW,CACT5+N,UAAW,CACTrhB,MAAOs0Y,IAGX98D,SAAU,CACR91T,UAAW,CACT1hB,MAAOs0Y,GAET3lL,UAAW,CACTxhB,OAAQ,CACNntM,MAAOwnY,EAAa,KAGxBlpX,MAAO,CACL6uL,OAAQ,CACN9rL,UAAW,CACTrhB,MAAOs0Y,KAIbrjE,aAAc,CACZ9jI,OAAQ,CACNntM,MAAOs0Y,EACPrhM,YAAaqhM,KAInBj5C,SAAUk5C,IACVj5C,QAASi5C,IACTjwX,UAAWiwX,IACXz7I,aAAcy7I,IACd35X,KAAM,CACJvpB,OAAQ,UAEVkP,MAAO,CACLP,MAAOwnY,GAETzsX,MAAO,CACLL,MAAO,CACL2G,UAAW,CACTrhB,MAAOs0Y,KAIbvb,YAAa,CACXpqK,UAAW,CACTxhB,OAAQ,CACNntM,MAAO,UACPs8N,OAAQ,UACRrpB,YAAa,UACbspB,aAAc,cAKtB0wJ,EAAMn0H,aAAan7O,UAAUb,MAAO,EACpC,IAAIjgB,EAAWowX,EACf18Y,EAAOD,QAAUusB,C,oBCrIjB,IAAI23Y,EAAW,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAChJ33Y,EAAW,CACbmD,MAAOw0Y,EACPpT,WAAY,CAAC,CAAC,UAAW,UAAW,WAAY,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAAY,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAAYoT,IAE3Njka,EAAOD,QAAUusB,C,iCCvBjB,IAAI6kN,EAAS9pN,EAAQ,OAoCrB,SAASoyR,IACP,IAEIyqH,EAFA9qH,EAAU,GACV+qH,EAAc,CAAC,EAEnB,MAAO,CAmBL/ka,IAAK,SAAUqB,EAAI8D,EAAQiwB,EAAMD,EAAOqtI,GAMtC,OALIuvE,EAAOohF,SAASh+R,KAClBqtI,EAASrtI,EACTA,EAAQ,IAGN4vY,EAAY1ja,EAAG4H,MAInB87Z,EAAY1ja,EAAG4H,IAAM,EACrB+wS,EAAQt2S,KAAK,CACXrC,GAAIA,EACJ8D,OAAQA,EACRiwB,KAAMA,EACND,MAAOA,EACPqtI,OAAQA,KAEH,EACT,EAQA15J,KAAM,SAAUwY,GAEd,OADAwjZ,EAAexjZ,EACR7hB,IACT,EAKA0+C,MAAO,WAGL,IAFA,IAAIn2B,EAAQgyR,EAAQv4S,OAEXgC,EAAI,EAAGwT,EAAM+iS,EAAQv4S,OAAQgC,EAAIwT,EAAKxT,IAAK,CAClD,IAAIwhB,EAAO+0R,EAAQv2S,GACnBwhB,EAAK5jB,GAAGolP,UAAUxhO,EAAK9f,OAAQ8f,EAAKmQ,KAAMnQ,EAAKkQ,MAAOlQ,EAAKu9I,OAAQ15J,EACrE,CAEA,OAAOrJ,KAEP,SAASqJ,IACPkf,IAEKA,IACHgyR,EAAQv4S,OAAS,EACjBsja,EAAc,CAAC,EACfD,GAAgBA,IAEpB,CACF,EAEJ,CAEAnka,EAAQ05S,WAAaA,C,gCCrHrB,IAAInnQ,EAAUjrB,EAAQ,OAIlB8pN,GAFU7+L,EAAQojM,QAETruN,EAAQ,QAoBjB+8Y,EAAiB,IACjBC,EAAe,iCAMnB,SAASlpB,EAAepoK,GACtB,IAAIp/J,EAAM,CACR89C,KAAM,GACNhoC,IAAK,IASP,OANIspJ,IACFA,EAAgBA,EAAc5wO,MAAMiia,GACpCzwV,EAAI89C,KAAOshH,EAAc,IAAM,GAC/Bp/J,EAAI8V,IAAMspJ,EAAc,IAAM,IAGzBp/J,CACT,CAMA,SAAS2wV,EAAevxL,GACtB5B,EAAOkrJ,OAAO,qCAAqCriX,KAAK+4N,GAAgB,kBAAoBA,EAAgB,YAC9G,CAMA,SAASu0E,EAAkBi9G,EAAWC,GACpCD,EAAUtX,aAAesX,EAEzBA,EAAUhiT,OAAS,SAAU/6G,GAC3B,IAAI6lZ,EAAaxuZ,KAEb4la,EAAgB,WACbj9Z,EAAMylZ,aAGTzlZ,EAAMylZ,aAAatrZ,MAAM9C,KAAM+C,WAF/ByrZ,EAAW1rZ,MAAM9C,KAAM+C,UAI3B,EAQA,OANAuvO,EAAO5uH,OAAOkiT,EAAcr+Z,UAAWoB,GACvCi9Z,EAAcliT,OAAS1jH,KAAK0jH,OAC5BkiT,EAAcrqK,UAAYA,EAC1BqqK,EAAcrkL,WAAaA,EAC3BjP,EAAO2qB,SAAS2oK,EAAe5la,MAC/B4la,EAAcpX,WAAaA,EACpBoX,CACT,CACF,CAEA,IAAIC,EAAY,EAOhB,SAAS79B,EAAiB50I,GACxB,IAAI0yK,EAAY,CAAC,aAAcD,IAAa1/Z,KAAKgJ,SAAS4mC,QAAQ,IAAIjrC,KAAK,KAC3EsoP,EAAI7rP,UAAUu+Z,IAAa,EAE3B1yK,EAAIwtB,WAAa,SAAUphQ,GACzB,SAAUA,IAAOA,EAAIsmZ,GACvB,CACF,CAQA,SAASvqK,EAAUx7P,EAASg6V,GAC1B,IAAI9mV,EAAOq/N,EAAOnwO,MAAMY,UAAW,GACnC,OAAO/C,KAAKwuZ,WAAWjnZ,UAAUwyV,GAAYj3V,MAAM/C,EAASkT,EAC9D,CAEA,SAASsuO,EAAWxhP,EAASg6V,EAAY9mV,GACvC,OAAOjT,KAAKwuZ,WAAWjnZ,UAAUwyV,GAAYj3V,MAAM/C,EAASkT,EAC9D,CASA,SAASi7Y,EAAsB6X,EAAQpma,GACrCA,EAAUA,GAAW,CAAC,EAUtB,IAAI46S,EAAU,CAAC,EAgFf,SAASyrH,EAAc9xL,GACrB,IAAIppM,EAAYyvQ,EAAQrmE,EAActhH,MAOtC,OALK9nF,GAAcA,EAAU06X,KAC3B16X,EAAYyvQ,EAAQrmE,EAActhH,MAAQ,CAAC,EAC3C9nF,EAAU06X,IAAgB,GAGrB16X,CACT,CAEA,GAzFAi7X,EAAOE,cAAgB,SAAUlqG,EAAO7nF,GACtC,GAAIA,EAIF,GAHAuxL,EAAevxL,GACfA,EAAgBooK,EAAepoK,GAE1BA,EAActpJ,KAEZ,GAAIspJ,EAActpJ,MAAQ46U,EAAc,CAC7C,IAAI16X,EAAYk7X,EAAc9xL,GAC9BppM,EAAUopM,EAActpJ,KAAOmxO,CACjC,OAJExhB,EAAQrmE,EAActhH,MAAQmpM,EAOlC,OAAOA,CACT,EAEAgqG,EAAO53C,SAAW,SAAU+3C,EAAmBvyL,EAASwyL,GACtD,IAAIpqG,EAAQxhB,EAAQ2rH,GAMpB,GAJInqG,GAASA,EAAMypG,KACjBzpG,EAAQpoF,EAAUooF,EAAMpoF,GAAW,MAGjCwyL,IAAsBpqG,EACxB,MAAM,IAAIpgT,MAAOg4N,EAAkE,aAAeuyL,EAAoB,KAAOvyL,GAAW,IAAM,8BAAnHuyL,gCAG7B,OAAOnqG,CACT,EAEAgqG,EAAOpX,qBAAuB,SAAUz6K,GACtCA,EAAgBooK,EAAepoK,GAC/B,IAAIxwO,EAAS,GACT8b,EAAM+6R,EAAQrmE,EAActhH,MAUhC,OARIpzG,GAAOA,EAAIgmZ,GACblzL,EAAO56H,KAAKl4F,GAAK,SAAUy4D,EAAGzzE,GAC5BA,IAASgha,GAAgB9ha,EAAOO,KAAKg0E,EACvC,IAEAv0E,EAAOO,KAAKub,GAGP9b,CACT,EAEAqia,EAAO75T,SAAW,SAAUgoI,GAG1B,OADAA,EAAgBooK,EAAepoK,KACtBqmE,EAAQrmE,EAActhH,KACjC,EAMAmzS,EAAOzV,qBAAuB,WAC5B,IAAIn6U,EAAQ,GAIZ,OAHAm8J,EAAO56H,KAAK6iM,GAAS,SAAU/6R,EAAKhb,GAClC2xE,EAAMlyE,KAAKO,EACb,IACO2xE,CACT,EAQA4vV,EAAOK,YAAc,SAAUlyL,GAC7BA,EAAgBooK,EAAepoK,GAC/B,IAAI10N,EAAM+6R,EAAQrmE,EAActhH,MAChC,OAAOpzG,GAAOA,EAAIgmZ,EACpB,EAEAO,EAAOzpB,eAAiBA,EAapB38Y,EAAQivZ,mBAAoB,CAC9B,IAAIyX,EAAiBN,EAAOriT,OAExB2iT,IACFN,EAAOriT,OAAS,SAAU/6G,GACxB,IAAIi9Z,EAAgBS,EAAehma,KAAKL,KAAM2I,GAC9C,OAAOo9Z,EAAOE,cAAcL,EAAej9Z,EAAMnE,KACnD,EAEJ,CAEA,OAAOuha,CACT,CAMA,SAASpT,EAAYnzY,EAAK4/H,GAaxB,CAGFl+I,EAAQo7Y,eAAiBA,EACzBp7Y,EAAQunT,kBAAoBA,EAC5BvnT,EAAQ8mY,iBAAmBA,EAC3B9mY,EAAQgtZ,sBAAwBA,EAChChtZ,EAAQyxZ,YAAcA,C,gCCpQtB,IAAIrgL,EAAS9pN,EAAQ,OAEjBu/W,EAASv/W,EAAQ,MAEjB8zX,EAAiBvU,EAAOuU,eAoBxBz4R,EAAO,EAOX,SAAS6mO,EAAOlmV,GAGd,MAAO,CAACA,GAAQ,GAAIq/G,IAAQ19G,KAAKgJ,SAAS4mC,QAAQ,IAAIjrC,KAAK,IAC7D,CAMA,SAAS+jZ,EAAuBkX,GAC9B,IAAIO,EAAoB,CAAC,EAqBzB,OAnBAP,EAAOpqF,yBAA2B,SAAUznG,EAAeqyL,GACzDryL,EAAgBooK,EAAepoK,GAC/BoyL,EAAkBpyL,EAActhH,MAAQ2zS,CAC1C,EAEAR,EAAO/V,iBAAmB,SAAU97K,EAAenpM,GACjD,IAAIvmC,EAAOumC,EAAOvmC,KAElB,IAAKA,EAAM,CACT,IAAIgia,EAAoBlqB,EAAepoK,GAAethH,KAElDmzS,EAAOK,YAAYlyL,IAAkBoyL,EAAkBE,KACzDhia,EAAO8ha,EAAkBE,GAAmBz7X,GAEhD,CAEA,OAAOvmC,CACT,EAEOuha,CACT,CAYA,SAASjX,EAAwBiX,EAAQU,GAqEvC,SAASC,EAAmBC,GAC1B,IAAIx1Y,EAAQ,CAAC,EACTy1Y,EAAc,GAuBlB,OAtBAt0L,EAAO56H,KAAKivT,GAAc,SAAUlia,GAClC,IAAI02W,EAAW0rD,EAA0B11Y,EAAO1sB,GAC5Cqia,EAAe3rD,EAAS2rD,aAAeL,EAAiBhia,GACxDsia,EAAgBC,EAAyBF,EAAcH,GAC3DxrD,EAAS8rD,WAAaF,EAAc/ka,OAER,IAAxBm5W,EAAS8rD,YACXL,EAAY3ia,KAAKQ,GAGnB6tO,EAAO56H,KAAKqvT,GAAe,SAAUG,GAC/B50L,EAAOj7N,QAAQ8jW,EAASgsD,YAAaD,GAAiB,GACxD/rD,EAASgsD,YAAYlja,KAAKija,GAG5B,IAAIE,EAAWP,EAA0B11Y,EAAO+1Y,GAE5C50L,EAAOj7N,QAAQ+vZ,EAASC,UAAWH,GAAiB,GACtDE,EAASC,UAAUpja,KAAKQ,EAE5B,GACF,IACO,CACL0sB,MAAOA,EACPy1Y,YAAaA,EAEjB,CAEA,SAASC,EAA0B11Y,EAAO1sB,GAQxC,OAPK0sB,EAAM1sB,KACT0sB,EAAM1sB,GAAQ,CACZ0ia,YAAa,GACbE,UAAW,KAIRl2Y,EAAM1sB,EACf,CAEA,SAASuia,EAAyBF,EAAcH,GAC9C,IAAII,EAAgB,GAIpB,OAHAz0L,EAAO56H,KAAKovT,GAAc,SAAUQ,GAClCh1L,EAAOj7N,QAAQsvZ,EAAcW,IAAQ,GAAKP,EAAc9ia,KAAKqja,EAC/D,IACOP,CACT,CA5GAhB,EAAO1V,kBAAoB,SAAUkX,EAAgBZ,EAAc9kZ,EAAU9hB,GAC3E,GAAKwna,EAAevla,OAApB,CAIA,IAAI0B,EAASgja,EAAmBC,GAC5Bx1Y,EAAQztB,EAAOytB,MACfrV,EAAQpY,EAAOkja,YACfY,EAAgB,CAAC,EACrBl1L,EAAO56H,KAAK6vT,GAAgB,SAAU9ia,GACpC+ia,EAAc/ia,IAAQ,CACxB,IAEA,MAAOqX,EAAM9Z,OAAQ,CACnB,IAAIyla,EAAoB3rZ,EAAM2c,MAC1BivY,EAAav2Y,EAAMs2Y,GACnBE,IAAsBH,EAAcC,GAEpCE,IACF9lZ,EAASxhB,KAAKN,EAAS0na,EAAmBC,EAAWZ,aAAa3ka,gBAC3Dqla,EAAcC,IAGvBn1L,EAAO56H,KAAKgwT,EAAWL,UAAWM,EAAoBC,EAAmBC,EAC3E,CAEAv1L,EAAO56H,KAAK8vT,GAAe,WACzB,MAAM,IAAI7rZ,MAAM,+BAClB,GAzBA,CA2BA,SAASksZ,EAAWC,GAClB32Y,EAAM22Y,GAAmBb,aAEmB,IAAxC91Y,EAAM22Y,GAAmBb,YAC3BnrZ,EAAM7X,KAAK6ja,EAEf,CAQA,SAASF,EAAiBE,GACxBN,EAAcM,IAAqB,EACnCD,EAAWC,EACb,CACF,CA6DF,CAEA5ma,EAAQwpV,OAASA,EACjBxpV,EAAQ2tZ,uBAAyBA,EACjC3tZ,EAAQ4tZ,wBAA0BA,C,wBCtMlC,IAAIx8K,EAAS9pN,EAAQ,OAEjB0zQ,EAAc1zQ,EAAQ,MAEtBmlR,EAAanlR,EAAQ,OA2BzB,SAASmrQ,EAAU7zQ,GACjB,OAAI/Q,MAAM+Q,GACD,KAGTA,GAAKA,EAAI,IAAIxc,MAAM,KACZwc,EAAE,GAAGlE,QAAQ,iCAAkC,QAAUkE,EAAE9d,OAAS,EAAI,IAAM8d,EAAE,GAAK,IAC9F,CAQA,SAAS+yV,EAAY3+R,EAAK6zV,GASxB,OARA7zV,GAAOA,GAAO,IAAI50D,cAAc1D,QAAQ,SAAS,SAAUN,EAAO0sZ,GAChE,OAAOA,EAAO5rY,aAChB,IAEI2rY,GAAkB7zV,IACpBA,EAAMA,EAAIxlE,OAAO,GAAG0tB,cAAgB83C,EAAI/xE,MAAM,IAGzC+xE,CACT,CAEA,IAAI8+O,EAAoB1gF,EAAO0gF,kBAC3Bi1G,EAAa,aACbC,EAAa,CACf,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAM,SAGR,SAAS/lK,EAAWz9P,GAClB,OAAiB,MAAVA,EAAiB,IAAMA,EAAS,IAAIkX,QAAQqsZ,GAAY,SAAU/zV,EAAKrxE,GAC5E,OAAOqla,EAAWrla,EACpB,GACF,CAEA,IAAIsla,EAAgB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAE/CC,EAAU,SAAUC,EAASC,GAC/B,MAAO,IAAMD,GAAwB,MAAbC,EAAoB,GAAKA,GAAa,GAChE,EAUA,SAASluD,EAAUmU,EAAKg6C,EAAYhzK,GAC7BjjB,EAAOxrO,QAAQyha,KAClBA,EAAa,CAACA,IAGhB,IAAIC,EAAYD,EAAWvma,OAE3B,IAAKwma,EACH,MAAO,GAKT,IAFA,IAAI/sK,EAAQ8sK,EAAW,GAAG9sK,OAAS,GAE1Bz3P,EAAI,EAAGA,EAAIy3P,EAAMz5P,OAAQgC,IAAK,CACrC,IAAI29K,EAAQwmP,EAAcnka,GAC1BuqX,EAAMA,EAAI3yW,QAAQwsZ,EAAQzmP,GAAQymP,EAAQzmP,EAAO,GACnD,CAEA,IAAK,IAAI2mP,EAAY,EAAGA,EAAYE,EAAWF,IAC7C,IAAK,IAAIz9Z,EAAI,EAAGA,EAAI4wP,EAAMz5P,OAAQ6I,IAAK,CACrC,IAAImE,EAAMu5Z,EAAWD,GAAW7sK,EAAM5wP,IACtC0jX,EAAMA,EAAI3yW,QAAQwsZ,EAAQD,EAAct9Z,GAAIy9Z,GAAY/yK,EAAS4M,EAAWnzP,GAAOA,EACrF,CAGF,OAAOu/W,CACT,CAWA,SAAStmD,EAAgBsmD,EAAK8oC,EAAO9hK,GAInC,OAHAjjB,EAAO56H,KAAK2/S,GAAO,SAAUv1Z,EAAO+B,GAClC0qX,EAAMA,EAAI3yW,QAAQ,IAAM/X,EAAM,IAAK0xP,EAAS4M,EAAWrgQ,GAASA,EAClE,IACOysX,CACT,CAYA,SAASwmC,EAAiBlyT,EAAK8zQ,GAC7B9zQ,EAAMyvI,EAAOohF,SAAS7wN,GAAO,CAC3BjyE,MAAOiyE,EACP8zQ,aAAcA,GACZ9zQ,GAAO,CAAC,EACZ,IAAIjyE,EAAQiyE,EAAIjyE,MACZpsB,EAAOq+F,EAAIr+F,KAEX2wR,GADAwhF,EAAe9zQ,EAAI8zQ,aACN9zQ,EAAIsyL,YAAc,QAC/B6gI,EAAWnzT,EAAImzT,UAAY,IAE/B,OAAKplY,EAIc,SAAfukQ,EACc,YAAT3wR,EAAqB,oJAA2J29P,EAAWvxO,GAAS,KAAO+lV,GAAgB,IAAM,YAAc,iHAAwHx0G,EAAWvxO,GAAS,KAAO+lV,GAAgB,IAAM,YAGxZ,CACLxhF,WAAYA,EACZvwP,QAAS,UAAYoxX,EAAW,OAChCpqZ,MAAO,CACLglB,MAAOA,IAXJ,EAeX,CAEA,SAAS41G,EAAItyD,EAAK18D,GAEhB,OADA08D,GAAO,GACA,OAAOsmF,OAAO,EAAGhjJ,EAAM08D,EAAIlyE,QAAUkyE,CAC9C,CAYA,SAAS4gV,EAAWvmC,EAAKzsX,EAAO2ma,GAClB,SAARl6C,GAA0B,UAARA,GAA2B,YAARA,GAA6B,cAARA,GAA+B,SAARA,IACnFA,EAAM,eAGR,IAAIj4S,EAAOq3N,EAAWslF,UAAUnxX,GAC5B4ma,EAAMD,EAAQ,MAAQ,GACtB9pY,EAAI23C,EAAK,MAAQoyV,EAAM,cACvB14R,EAAI15D,EAAK,MAAQoyV,EAAM,WAAa,EACpCx7Y,EAAIopD,EAAK,MAAQoyV,EAAM,UACvB5na,EAAIw1E,EAAK,MAAQoyV,EAAM,WACvBlvZ,EAAI88D,EAAK,MAAQoyV,EAAM,aACvBp6Z,EAAIgoE,EAAK,MAAQoyV,EAAM,aACvBxja,EAAIoxE,EAAK,MAAQoyV,EAAM,kBAE3B,OADAn6C,EAAMA,EAAI3yW,QAAQ,KAAM4qH,EAAIwJ,EAAG,IAAIp0H,QAAQ,IAAKo0H,GAAGp0H,QAAQ,OAAQ+iB,GAAG/iB,QAAQ,KAAM+iB,EAAI,KAAK/iB,QAAQ,KAAM4qH,EAAIt5G,EAAG,IAAItR,QAAQ,IAAKsR,GAAGtR,QAAQ,KAAM4qH,EAAI1lI,EAAG,IAAI8a,QAAQ,IAAK9a,GAAG8a,QAAQ,KAAM4qH,EAAIhtH,EAAG,IAAIoC,QAAQ,IAAKpC,GAAGoC,QAAQ,KAAM4qH,EAAIl4H,EAAG,IAAIsN,QAAQ,IAAKtN,GAAGsN,QAAQ,MAAO4qH,EAAIthI,EAAG,IAChRqpX,CACT,CAQA,SAAShkE,EAAar2O,GACpB,OAAOA,EAAMA,EAAIxlE,OAAO,GAAG0tB,cAAgB83C,EAAIsmF,OAAO,GAAKtmF,CAC7D,CAEA,IAAI6pN,EAAe7B,EAAY6B,aAe/B,SAAS4qI,EAAoB9lU,GAC3B,OAAOq5L,EAAYlzB,gBAAgBnmK,EAAIlmE,KAAMkmE,EAAI/mE,KAAM+mE,EAAIxoE,UAAWwoE,EAAIk6J,kBAAmBl6J,EAAIswN,YAAatwN,EAAIu0Q,eAAgBv0Q,EAAIs0Q,KAAMt0Q,EAAIi7M,SAClJ,CASA,SAASvI,EAAY54Q,EAAMb,EAAMzB,EAAW0iO,EAAmBo2D,EAAagkD,EAAMr5D,EAAUs5D,GAC1F,OAAOl7E,EAAYlzB,gBAAgBrsO,EAAMb,EAAMzB,EAAW0iO,EAAmBo2D,EAAaikD,EAAgBD,EAAMr5D,EAClH,CAQA,SAASjV,EAAWnpB,EAAMh6Q,GACxB,GAAe,WAAXA,GAAkC,UAAXA,EAAoB,CAC7C,IAAIkja,EAAQ1ia,OAAO8F,OACnB48Z,EAAMC,OAAS,KACfD,EAAM3lZ,SAAWy8P,CACnB,MACEx5Q,OAAO8F,KAAK0zQ,EAAMh6Q,EAEtB,CAEAxE,EAAQyyR,UAAYA,EACpBzyR,EAAQ2xW,YAAcA,EACtB3xW,EAAQ8xT,kBAAoBA,EAC5B9xT,EAAQihQ,WAAaA,EACrBjhQ,EAAQk5W,UAAYA,EACpBl5W,EAAQ+mU,gBAAkBA,EAC1B/mU,EAAQ6zZ,iBAAmBA,EAC3B7zZ,EAAQ4zZ,WAAaA,EACrB5zZ,EAAQqpT,aAAeA,EACvBrpT,EAAQ68R,aAAeA,EACvB78R,EAAQyna,oBAAsBA,EAC9Bzna,EAAQq0S,YAAcA,EACtBr0S,EAAQ2nS,WAAaA,C,wBChRrB,IAAIv2D,EAAS9pN,EAAQ,OAEjBsgZ,EAAWtgZ,EAAQ,OAEnBmzX,EAAYnzX,EAAQ,MAEpBwiH,EAASxiH,EAAQ,OAEjB0mL,EAAS1mL,EAAQ,OAEjB2uN,EAAO3uN,EAAQ,OAEfmiU,EAAgBniU,EAAQ,OAExBugZ,EAASvgZ,EAAQ,OAErBtnB,EAAQ0sG,MAAQm7T,EAEhB,IAAI3xL,EAAQ5uN,EAAQ,OAEpBtnB,EAAQk2O,MAAQA,EAEhB,IAAI8b,EAAO1qO,EAAQ,OAEnBtnB,EAAQgyP,KAAOA,EAEf,IAAIlpK,EAASxhE,EAAQ,OAErBtnB,EAAQ8oF,OAASA,EAEjB,IAAI4yJ,EAASp0N,EAAQ,OAErBtnB,EAAQ07O,OAASA,EAEjB,IAAIo4E,EAAOxsS,EAAQ,OAEnBtnB,EAAQ8zT,KAAOA,EAEf,IAAIn5D,EAAUrzO,EAAQ,OAEtBtnB,EAAQ26P,QAAUA,EAElB,IAAIC,EAAWtzO,EAAQ,OAEvBtnB,EAAQ46P,SAAWA,EAEnB,IAAIzf,EAAO7zN,EAAQ,OAEnBtnB,EAAQm7O,KAAOA,EAEf,IAAIl1J,EAAO3+D,EAAQ,OAEnBtnB,EAAQimF,KAAOA,EAEf,IAAIi1L,EAAc5zP,EAAQ,OAE1BtnB,EAAQk7Q,YAAcA,EAEtB,IAAI2xI,EAAMvlY,EAAQ,OAElBtnB,EAAQ6sZ,IAAMA,EAEd,IAAI1hE,EAAe7jU,EAAQ,OAE3BtnB,EAAQmrV,aAAeA,EAEvB,IAAI9iE,EAAiB/gQ,EAAQ,OAE7BtnB,EAAQqoR,eAAiBA,EAEzB,IAAIy/I,EAAiBxgZ,EAAQ,OAE7BtnB,EAAQ8na,eAAiBA,EAEzB,IAAIrxH,EAAenvR,EAAQ,OAE3BtnB,EAAQy2S,aAAeA,EAEvB,IAAIphC,EAAyB/tP,EAAQ,OAErCtnB,EAAQq1Q,uBAAyBA,EAEjC,IAAI0yJ,EAAuBzgZ,EAAQ,OAoB/BkzN,EAAUv1O,KAAKwI,IACfgtO,EAAUx1O,KAAKyI,IACfs6Z,EAAY,CAAC,EACbzyI,EAAmB,EAEnBzkC,EAAgC,CAClCphO,MAAO,WACPiyM,gBAAiB,aACjBX,gBAAiB,mBAEfinM,EAAW,WACXC,EAAS,SAETC,EAAsB,EACtBC,EAAmB,CAAC,EACpBC,EAAkB,CAAC,EAKvB,SAAS5yJ,EAAYxyK,GACnB,OAAOgzI,EAAKzzH,OAAOvf,EACrB,CAMA,SAASqlU,EAAW32K,EAAU1uJ,GAC5B,OAAO2kU,EAASW,iBAAiB52K,EAAU1uJ,EAC7C,CAcA,SAASulU,EAAcjla,EAAMk4O,GAC3B4sL,EAAgB9ka,GAAQk4O,CAC1B,CA8BA,SAAS0W,EAAc5uP,GACrB,GAAI8ka,EAAgBjja,eAAe7B,GACjC,OAAO8ka,EAAgB9ka,EAE3B,CAUA,SAASsuP,EAASF,EAAU1uJ,EAAMlnE,EAAMkrE,GACtC,IAAIjrC,EAAO4rW,EAASa,iBAAiB92K,EAAU1uJ,GAU/C,OARIlnE,IACa,WAAXkrE,IACFlrE,EAAO2sY,EAAc3sY,EAAMigC,EAAK8rM,oBAGlC6gK,EAAW3sW,EAAMjgC,IAGZigC,CACT,CAUA,SAAS4sW,EAAUC,EAAU9sY,EAAMkrE,GACjC,IAAIjrC,EAAO,IAAI6rW,EAAO,CACpBn9Z,MAAO,CACL+tM,MAAOowN,EACPjqZ,EAAGmd,EAAKnd,EACR6e,EAAG1B,EAAK0B,EACR6J,MAAOvL,EAAKuL,MACZC,OAAQxL,EAAKwL,QAEfolE,OAAQ,SAAUnvC,GAChB,GAAe,WAAXypC,EAAqB,CACvB,IAAI06N,EAAe,CACjBr6R,MAAOk2B,EAAIl2B,MACXC,OAAQi2B,EAAIj2B,QAEdy0B,EAAK2uH,SAAS+9O,EAAc3sY,EAAM4lS,GACpC,CACF,IAEF,OAAO3lQ,CACT,CAUA,SAAS0sW,EAAc3sY,EAAM4lS,GAE3B,IAEIp6R,EAFA6jO,EAASu2D,EAAar6R,MAAQq6R,EAAap6R,OAC3CD,EAAQvL,EAAKwL,OAAS6jO,EAGtB9jO,GAASvL,EAAKuL,MAChBC,EAASxL,EAAKwL,QAEdD,EAAQvL,EAAKuL,MACbC,EAASD,EAAQ8jO,GAGnB,IAAIp9O,EAAK+N,EAAKnd,EAAImd,EAAKuL,MAAQ,EAC3BrZ,EAAK8N,EAAK0B,EAAI1B,EAAKwL,OAAS,EAChC,MAAO,CACL3oB,EAAGoP,EAAKsZ,EAAQ,EAChB7J,EAAGxP,EAAKsZ,EAAS,EACjBD,MAAOA,EACPC,OAAQA,EAEZ,CAEA,IAAI0sR,EAAY2zG,EAAS3zG,UAOzB,SAAS00G,EAAW3sW,EAAMjgC,GACxB,GAAKigC,EAAK+rM,eAAV,CAIA,IAAIrW,EAAW11L,EAAK8rM,kBAChBxvP,EAAIo5O,EAAS83H,mBAAmBztV,GACpCigC,EAAK+rM,eAAezvP,EAJpB,CAKF,CAgBA,SAASwwZ,EAAqB3S,GAE5B,OADA4R,EAAqBe,qBAAqB3S,EAAM7hY,MAAO6hY,EAAM7hY,MAAO6hY,EAAMzrZ,OACnEyrZ,CACT,CAgBA,SAAS4S,EAAqB5S,GAE5B,OADA4R,EAAqBgB,qBAAqB5S,EAAM7hY,MAAO6hY,EAAM7hY,MAAO6hY,EAAMzrZ,OACnEyrZ,CACT,CAWA,IAAIzoK,EAAmBq6K,EAAqBr6K,iBAE5C,SAASs7K,EAAgBC,GACvB,OAAuB,MAAhBA,GAAyC,SAAjBA,CACjC,CAGA,IAAIC,EAAiB93L,EAAO6hD,gBACxBk2I,EAAmB,EAEvB,SAASC,EAAU15Y,GACjB,GAAqB,kBAAVA,EACT,OAAOA,EAGT,IAAI25Y,EAAcH,EAAelna,IAAI0tB,GAWrC,OATK25Y,IACHA,EAAc5uB,EAAU6uB,KAAK55Y,GAAQ,IAEjCy5Y,EAAmB,MACrBD,EAAe53Z,IAAIoe,EAAO25Y,GAC1BF,MAIGE,CACT,CAEA,SAASE,GAAgB7oa,GACvB,GAAKA,EAAG8oa,gBAAR,CAIA9oa,EAAG8oa,iBAAkB,EACrB,IAAIltL,EAAa57O,EAAG+oa,WAEpB,GAAKntL,EAAL,CAKA,IAAI6J,EAAczlP,EAAGgpa,kBAAoB,CAAC,EAC1Chpa,EAAGipa,iBAAmBjpa,EAAG06O,GACzB,IAAI0hC,EAAUp8Q,EAAGgK,MAEjB,IAAK,IAAInH,KAAQ+4O,EAES,MAApBA,EAAW/4O,KACb4iP,EAAY5iP,GAAQu5Q,EAAQv5Q,IAKhC4iP,EAAYt9N,KAAOi0P,EAAQj0P,KAC3Bs9N,EAAYhuN,OAAS2kP,EAAQ3kP,MAf7B,MAFEz3B,EAAGgpa,kBAAoBhpa,EAAGipa,iBAAmB,IAN/C,CAwBF,CAEA,SAASC,GAAoBlpa,GAC3B,IAAI4vQ,EAAW5vQ,EAAG+oa,WAElB,GAAKn5J,IAAY5vQ,EAAGmpa,cAApB,CAIA,IAAI54I,EAAKvwR,EAAGopa,KACRpyK,EAAgBh3P,EAAGg3P,eAAiBu5B,GAA0B,WAApBA,EAAGE,QAAQ7tR,KAGzD,GAFA5C,EAAGmpa,cAAgBnyK,EAAgB,QAAU,UAEzCh3P,EAAG+2P,UAAYw5B,GAAMvwR,EAAGg3P,eAA5B,CAIA,IAAIqyK,EAAWrpa,EACXgyP,EAAchyP,EAAGgK,MAEjBgtP,IACFqyK,EAAW94I,EAAG+4I,SAAStpa,GACvBgyP,EAAcq3K,EAASr/Z,OAGzBu/Z,GAAyBv3K,GAEpBgF,GACH6xK,GAAgBQ,GA0BlBr3K,EAAYujC,WAAW3lB,GACvB45J,GAA0Bx3K,EAAa4d,EAAU,QACjD45J,GAA0Bx3K,EAAa4d,EAAU,UACjD65J,GAAsBz3K,GAEjBgF,IACHh3P,EAAG+hK,OAAM,GACT/hK,EAAG06O,IAAMm6C,EA9CX,CARA,CAwDF,CAEA,SAAS20I,GAA0Bx3K,EAAapW,EAAY5+F,IACrDsrR,EAAgB1sL,EAAW5+F,KAAUsrR,EAAgBt2K,EAAYh1G,MACpEg1G,EAAYh1G,GAAQ0rR,EAAU12K,EAAYh1G,IAE9C,CAEA,SAAS0sR,GAAkB1pa,GACzB,IAAI2pa,EAAc3pa,EAAGmpa,cAErB,GAAKQ,IAIL3pa,EAAGmpa,eAAgB,GAEfnpa,EAAG+2P,SAIP,GAAoB,UAAhB4yK,EACF3pa,EAAGopa,MAAQppa,EAAGopa,KAAKQ,YAAY5pa,OAC1B,CACL,IAAIgK,EAAQhK,EAAGgK,MACX6/Z,EAAY7pa,EAAGgpa,kBAEfa,IACFN,GAAyBv/Z,GACzBhK,EAAGiqL,SAAS4/O,GACZJ,GAAsBz/Z,IAMxB,IAAI8/Z,EAAW9pa,EAAGipa,iBAEF,MAAZa,GAAoB9pa,EAAG06O,GAAKovL,IAAaj1I,IAC3C70R,EAAG06O,GAAKovL,EAEZ,CACF,CAEA,SAASC,GAAe/pa,EAAIwqC,EAASw/X,GAEnC,IAEI57T,EAFAgsJ,EAAYotK,EACZntK,EAAUmtK,EAGdxna,EAAGmpa,gBAAkB/uK,EAAYmtK,EAAUn5T,GAAU,GACrD5jE,EAAQxqC,EAAIgqa,GACZhqa,EAAGmpa,gBAAkB9uK,EAAUktK,EAAUn5T,GAAU,GACnDpuG,EAAG+2P,SAAW/2P,EAAGi3P,UAAS,SAAU9xJ,IACjCA,EAAM4xJ,SAAWvsN,EAAQ26D,EAAO6kU,EACnC,IACA57T,GAAWpuG,EAAGiqa,oBAAsBjqa,EAAGiqa,mBAAmB7vK,EAAWC,EACvE,CAmBA,SAAS/H,GAAqBtyP,EAAI4vQ,GAGhCA,EAAW5vQ,EAAG+oa,YAA0B,IAAbn5J,IAAuB5vQ,EAAG47O,YAAcg0B,GAAY,CAAC,GAChF5vQ,EAAG8oa,iBAAkB,EAOjB9oa,EAAGmpa,gBAKLnpa,EAAGgpa,kBAAoB,KAKvBU,GAAkB1pa,GAClBkpa,GAAoBlpa,GAExB,CAEA,SAASkqa,GAAmB7la,IACzB8la,GAAa/ra,KAAMiG,KAChBjG,KAAKgsa,eAAiBL,GAAe3ra,KAAM8qa,GACjD,CAEA,SAASmB,GAAkBhma,IACxB8la,GAAa/ra,KAAMiG,KAChBjG,KAAKgsa,eAAiBL,GAAe3ra,KAAMsra,GACjD,CAEA,SAASY,GAAuBC,GAC9Bnsa,KAAKgsa,eAAiB,IAAMG,GAAkB,GAC9CR,GAAe3ra,KAAM8qa,GACvB,CAEA,SAASsB,GAAqBD,KAC1Bnsa,KAAKgsa,iBAAmB,IAAMG,GAAkB,MAAQR,GAAe3ra,KAAMsra,GACjF,CAEA,SAASS,GAAanqa,EAAIqE,GACxB,OAAOrE,EAAGyqa,yBAA2Bpma,EAAEqma,SACzC,CAwCA,SAAS1uL,GAAch8O,EAAI47O,GACzB2W,GAAwBvyP,GAAI,GAC5B+pa,GAAe/pa,EAAIsyP,GAAsB1W,EAC3C,CAqCA,SAAS2W,GAAwBvyP,EAAI2qa,GACnC,IAAIljK,GAA2B,IAAjBkjK,EAOd,GAJA3qa,EAAGyqa,wBAA0Bzqa,EAAGsrV,sBAChCtrV,EAAGiqa,mBAAqBjqa,EAAGm6P,kBAGtBsN,GAAWznQ,EAAG4qa,qBAAsB,CACvC,IAAIpvZ,EAASisP,EAAU,MAAQ,KAE/BznQ,EAAGwb,GAAQ,YAAa0uZ,IAAoB1uZ,GAAQ,WAAY6uZ,IAEhErqa,EAAGwb,GAAQ,WAAY8uZ,IAAwB9uZ,GAAQ,SAAUgvZ,IAEjExqa,EAAGoqa,cAAgBpqa,EAAGoqa,eAAiB,EACvCpqa,EAAG4qa,sBAAwBnjK,CAC7B,CACF,CAOA,SAASwzC,GAAqBj7S,GAC5B,SAAUA,IAAMA,EAAG4qa,qBACrB,CAWA,SAASC,GAAkBrkD,GACzB,IAAI+jD,EAAiB7C,EAAiBlhD,GAMtC,OAJsB,MAAlB+jD,GAA0B9C,GAAuB,KACnD8C,EAAiB7C,EAAiBlhD,GAAgBihD,KAG7C8C,CACT,CAsBA,SAASlkL,GAAcZ,EAAa81D,EAAenW,EAAa0lI,EAAe7pU,EAAK8pU,EAAiBC,GACnG/pU,EAAMA,GAAOqmU,EACb,IAWIvuJ,EAXAzyB,EAAerlJ,EAAIqlJ,aACnBC,EAAiBtlJ,EAAIslJ,eACrBu3C,EAAgB78L,EAAI68L,cACpBke,EAAY/6M,EAAI+6M,UAGhBivH,EAAa7lI,EAAYtpD,WAAW,QACpCovL,EAAeJ,EAAchvL,WAAW,SAMxCmvL,GAAcC,KACZ5kL,IACFyyB,EAAWzyB,EAAagO,kBAAkB/N,EAAgB,SAAU,KAAMu3C,EAAeke,IAG3E,MAAZjjC,IACFA,EAAWroC,EAAOqhF,WAAW9wN,EAAIulJ,aAAevlJ,EAAIulJ,YAAYD,EAAgBtlJ,GAAOA,EAAIulJ,cAI/F,IAAI2kL,EAAkBF,EAAalyJ,EAAW,KAC1CqyJ,EAAoBF,EAAex6L,EAAOwc,UAAU5G,EAAeA,EAAagO,kBAAkB/N,EAAgB,WAAY,KAAMu3C,EAAeke,GAAa,KAAMjjC,GAAY,KAE/J,MAAnBoyJ,GAAgD,MAArBC,IAO7B/2K,GAAa5O,EAAa2/C,EAAa2lI,EAAiB9pU,GACxDozJ,GAAaknD,EAAeuvH,EAAeE,EAAmB/pU,GAAK,IAGrEwkJ,EAAY1qN,KAAOowY,EACnB5vH,EAAcxgR,KAAOqwY,CACvB,CAWA,SAAS1kK,GAAiB1mQ,EAAIqra,EAAkBC,GAC9C,IAAIlvJ,EAAUp8Q,EAAGgK,MAEbqha,IACF9B,GAAyBntJ,GACzBp8Q,EAAGiqL,SAASohP,GACZ5B,GAAsBrtJ,IAGxBA,EAAUp8Q,EAAG+oa,WAETuC,GAAsBlvJ,IACxBmtJ,GAAyBntJ,GACzB1rC,EAAO5uH,OAAOs6J,EAASkvJ,GACvB7B,GAAsBrtJ,GAE1B,CAYA,SAAS/nB,GAAahkN,EAAW8iQ,EAAgBo4H,EAAoBtqU,EAAKi2T,GAIxE,OAHAsU,GAAmBn7X,EAAW8iQ,EAAgBlyM,EAAKi2T,GACnDqU,GAAsB76L,EAAO5uH,OAAOzxE,EAAWk7X,GAExCl7X,CACT,CAYA,SAASo7X,GAAQp7X,EAAW81M,EAAY/7L,GACtC,IAGI8sW,EAHAj2T,EAAM,CACRwlJ,YAAY,IAIO,IAAjBr8L,EACF8sW,GAAa,EAGbj2T,EAAIylJ,UAAYt8L,EAGlBohX,GAAmBn7X,EAAW81M,EAAYllJ,EAAKi2T,EACjD,CAmCA,SAASsU,GAAmBn7X,EAAW8iQ,EAAgBlyM,EAAKi2T,GAI1D,GAFAj2T,EAAMA,GAAOqmU,EAETrmU,EAAIwlJ,WAAY,CAClB,IAAI7hM,EAEAq8C,EAAIyqU,gBACN9mX,EAAeq8C,EAAIyqU,gBAAgBv4H,EAAgB+jH,IAEnDtyW,EAAeuuP,EAAer3D,WAAW,cAAgBo7K,EAAa,KAAO,UAG5D,YAAjBtyW,IAA+BA,EAAe,QAGhDvU,EAAUuU,aAAeA,EACzBvU,EAAUilU,WAAaniE,EAAer3D,WAAW,UACjD,IAAIuqB,EAAc8sC,EAAer3D,WAAW,UAC7B,MAAfuqB,IAAwBA,GAAe9hQ,KAAK40B,GAAK,KACjDkX,EAAUg1I,aAAeghF,EACzBh2N,EAAU67W,aAAex7K,EAAOwc,UAAUimD,EAAer3D,WAAW,YAAao7K,EAAa,KAAO,EACvG,CAEA,IAiBIyU,EAjBA76L,EAAUqiE,EAAeriE,QACzB86L,EAAkB96L,GAAWA,EAAQ3nM,OAAOkH,UAe5Cw7X,EAAgBC,GAAiB34H,GAGrC,GAAI04H,EAGF,IAAK,IAAIhpa,KAFT8oa,EAAa,CAAC,EAEGE,EACf,GAAIA,EAAcnna,eAAe7B,GAAO,CAEtC,IAAIkpa,EAAgB54H,EAAev7D,SAAS,CAAC,OAAQ/0O,IAMrDmpa,GAAkBL,EAAW9oa,GAAQ,CAAC,EAAGkpa,EAAeH,EAAiB3qU,EAAKi2T,EAChF,CAWJ,OAPA7mX,EAAUklU,KAAOo2D,EACjBK,GAAkB37X,EAAW8iQ,EAAgBy4H,EAAiB3qU,EAAKi2T,GAAY,GAE3Ej2T,EAAIs+J,YAAct+J,EAAI5wD,YACxB4wD,EAAI5wD,UAAY,CAAC,GAGZA,CACT,CAgBA,SAASy7X,GAAiB34H,GAExB,IAAI84H,EAEJ,MAAO94H,GAAkBA,IAAmBA,EAAeriE,QAAS,CAClE,IAAIykI,GAAQpiE,EAAehqQ,QAAUm+X,GAAW/xD,KAEhD,GAAIA,EAGF,IAAK,IAAI1yW,KAFTopa,EAAkBA,GAAmB,CAAC,EAErB12D,EACXA,EAAK7wW,eAAe7B,KACtBopa,EAAgBppa,GAAQ,GAK9BswS,EAAiBA,EAAehuD,WAClC,CAEA,OAAO8mL,CACT,CAEA,SAASD,GAAkB37X,EAAW8iQ,EAAgBy4H,EAAiB3qU,EAAKi2T,EAAY2H,GAEtF+M,GAAmB1U,GAAc0U,GAAmBtE,EACpDj3X,EAAUuwL,SAAWsrM,GAAa/4H,EAAer3D,WAAW,SAAU76I,IAAQ2qU,EAAgB58Y,MAC9FqhB,EAAU0wL,WAAamrM,GAAa/4H,EAAer3D,WAAW,mBAAoB76I,IAAQ2qU,EAAgB3qM,gBAC1G5wL,EAAU87X,gBAAkBz7L,EAAOwc,UAAUimD,EAAer3D,WAAW,mBAAoB8vL,EAAgBtrM,iBAEtG42L,IACC2H,IACFxuX,EAAU+7X,kBAAoBnrU,EAC9BwoU,GAAsBp5X,IAIE,MAAtBA,EAAUuwL,WACZvwL,EAAUuwL,SAAW3/H,EAAIylJ,YAO7Br2M,EAAUjY,UAAY+6Q,EAAer3D,WAAW,cAAgB8vL,EAAgBxzY,UAChFiY,EAAU/X,WAAa66Q,EAAer3D,WAAW,eAAiB8vL,EAAgBtzY,WAClF+X,EAAU9X,SAAW46Q,EAAer3D,WAAW,aAAe8vL,EAAgBrzY,SAC9E8X,EAAU7X,WAAa26Q,EAAer3D,WAAW,eAAiB8vL,EAAgBpzY,WAClF6X,EAAU5X,UAAY06Q,EAAer3D,WAAW,SAChDzrM,EAAU8qN,kBAAoBg4C,EAAer3D,WAAW,kBAAoBq3D,EAAer3D,WAAW,YACtGzrM,EAAUmlU,eAAiBriE,EAAer3D,WAAW,cACrDzrM,EAAU0T,UAAYovP,EAAer3D,WAAW,SAChDzrM,EAAUovN,WAAa0zC,EAAer3D,WAAW,UACjDzrM,EAAUg8X,QAAUl5H,EAAer3D,WAAW,OAEzC+iL,GAAY59T,EAAImmQ,aACnB/2T,EAAUwwL,oBAAsBqrM,GAAa/4H,EAAer3D,WAAW,mBAAoB76I,GAC3F5wD,EAAUkhR,YAAcpe,EAAer3D,WAAW,WAClDzrM,EAAU4wL,gBAAkBirM,GAAa/4H,EAAer3D,WAAW,eAAgB76I,GACnF5wD,EAAUiwL,gBAAkB6yE,EAAer3D,WAAW,eACtDzrM,EAAUy5T,iBAAmB32D,EAAer3D,WAAW,gBACvDzrM,EAAUi8X,mBAAqBn5H,EAAer3D,WAAW,eACzDzrM,EAAUk8X,kBAAoBp5H,EAAer3D,WAAW,cACxDzrM,EAAUm8X,qBAAuBr5H,EAAer3D,WAAW,iBAC3DzrM,EAAUo8X,qBAAuBt5H,EAAer3D,WAAW,kBAG7DzrM,EAAUq8X,gBAAkBv5H,EAAer3D,WAAW,oBAAsB8vL,EAAgBc,gBAC5Fr8X,EAAUs8X,eAAiBx5H,EAAer3D,WAAW,mBAAqB8vL,EAAgBe,eAC1Ft8X,EAAUu8X,kBAAoBz5H,EAAer3D,WAAW,sBAAwB8vL,EAAgBgB,kBAChGv8X,EAAUw8X,kBAAoB15H,EAAer3D,WAAW,sBAAwB8vL,EAAgBiB,iBAClG,CAEA,SAASX,GAAal9Y,EAAOiyE,GAC3B,MAAiB,SAAVjyE,EAAmBA,EAAQiyE,GAAOA,EAAIylJ,UAAYzlJ,EAAIylJ,UAAY,IAC3E,CAoBA,SAAS+iL,GAAsBp5X,GAC7B,IAEIy8X,EAFAloX,EAAevU,EAAUuU,aACzBq8C,EAAM5wD,EAAU+7X,kBAGpB,GAAInrU,GAA6B,MAAtB5wD,EAAUuwL,SAAkB,CACrC,IAAI8lB,EAAYzlJ,EAAIylJ,UAChBD,EAAaxlJ,EAAIwlJ,WACjByU,EAAiBj6J,EAAIi6J,eACrB6xK,GAAyC,IAAnB7xK,KAAgD,IAAnBA,GAA2BzU,GAAc7hM,GACrE,kBAAjBA,GAA6BA,EAAanvC,QAAQ,WAAa,GACrEu3Z,GAAqBD,GAAoC,MAAbrmL,GAE5CqmL,GAAuBC,KACzBF,EAAiB,CACflsM,SAAUvwL,EAAUuwL,SACpBG,WAAY1wL,EAAU0wL,WACtBorM,gBAAiB97X,EAAU87X,kBAI3BY,IACF18X,EAAUuwL,SAAW,OAEO,MAAxBvwL,EAAU0wL,aACZ1wL,EAAU0wL,WAAa2lB,EACM,MAA7Br2M,EAAU87X,kBAA4B97X,EAAU87X,gBAAkB,KAIlEa,IACF38X,EAAUuwL,SAAW8lB,EAEzB,CAGAr2M,EAAUy8X,eAAiBA,CAC7B,CAaA,SAASvD,GAAyBv/Z,GAChC,IAAI8ia,EAAiB9ia,EAAM8ia,eAEvBA,IAEF9ia,EAAM42N,SAAWksM,EAAelsM,SAChC52N,EAAM+2N,WAAa+rM,EAAe/rM,WAClC/2N,EAAMmia,gBAAkBW,EAAeX,gBACvCnia,EAAM8ia,eAAiB,KAE3B,CAEA,SAASn4K,GAAQ1zJ,EAAK6vI,GACpB,IAAIm8L,EAAkBn8L,GAAWA,EAAQ8G,SAAS,aAClD,OAAOlH,EAAOjoD,KAAK,CACnBxnF,EAAI7oE,WAAa60Y,GAAmBA,EAAgBnxL,WAAW,cAAgB,GAAI76I,EAAI3oE,YAAc20Y,GAAmBA,EAAgBnxL,WAAW,eAAiB,IAAK76I,EAAI1oE,UAAY00Y,GAAmBA,EAAgBnxL,WAAW,aAAe,IAAM,KAAM76I,EAAIzoE,YAAcy0Y,GAAmBA,EAAgBnxL,WAAW,eAAiB,cAAc5yO,KAAK,KACxW,CAEA,SAASgka,GAAkB1yL,EAAUx6O,EAAIy1D,EAAOm8L,EAAiB3f,EAAWl7J,GACjD,oBAAdk7J,IACTl7J,EAAKk7J,EACLA,EAAY,MAMd,IAAIgjL,EAAmBrjK,GAAmBA,EAAgBra,qBAE1D,GAAI09K,EAAkB,CACpB,IAAIjyY,EAAUw3N,EAAW,SAAW,GAChCt4K,EAAW0vL,EAAgB9V,WAAW,oBAAsB94N,GAC5Do+I,EAAkBwwF,EAAgB9V,WAAW,kBAAoB94N,GACjEqQ,EAAiBu+N,EAAgB9V,WAAW,iBAAmB94N,GAErC,oBAAnBqQ,IACTA,EAAiBA,EAAe4+M,EAAW2f,EAAgB1M,wBAA0B0M,EAAgB1M,wBAAwBllP,EAAIiyO,GAAa,OAGxH,oBAAb/vK,IACTA,EAAWA,EAAS+vK,IAGtB/vK,EAAW,EAAIliE,EAAGolP,UAAU3vL,EAAOyM,EAAU7uC,GAAkB,EAAG+tI,EAAiBrqF,IAAMA,IAAO/2E,EAAGuoE,gBAAiBvoE,EAAGi1B,KAAKwgC,GAAQshB,GAAMA,IAC5I,MACE/2E,EAAGuoE,gBACHvoE,EAAGi1B,KAAKwgC,GACRshB,GAAMA,GAEV,CAyBA,SAASkiK,GAAYj5O,EAAIy1D,EAAOm8L,EAAiB3f,EAAWl7J,GAC1Dm2V,IAAkB,EAAMlta,EAAIy1D,EAAOm8L,EAAiB3f,EAAWl7J,EACjE,CAiBA,SAASq1K,GAAUpsP,EAAIy1D,EAAOm8L,EAAiB3f,EAAWl7J,GACxDm2V,IAAkB,EAAOlta,EAAIy1D,EAAOm8L,EAAiB3f,EAAWl7J,EAClE,CAUA,SAASmF,GAAap4E,EAAQo7F,GAC5B,IAAIiuU,EAAM/jS,EAAOuG,SAAS,IAE1B,MAAO7rI,GAAUA,IAAWo7F,EAC1BkqC,EAAO4vL,IAAIm0G,EAAKrpa,EAAOm1T,oBAAqBk0G,GAC5Crpa,EAASA,EAAOvF,OAGlB,OAAO4ua,CACT,CAYA,SAAS9lK,GAAevjQ,EAAQ2hE,EAAWikT,GASzC,OARIjkT,IAAcirK,EAAOs7J,YAAYvmU,KACnCA,EAAYsjR,EAAc9vB,kBAAkBxzP,IAG1CikT,IACFjkT,EAAY2jE,EAAOsgP,OAAO,GAAIjkT,IAGzB6nI,EAAO+5D,eAAe,GAAIvjQ,EAAQ2hE,EAC3C,CASA,SAASkxQ,GAAmBpkP,EAAW9sB,EAAWikT,GAEhD,IAAI0jD,EAAyB,IAAjB3nW,EAAU,IAA6B,IAAjBA,EAAU,IAA6B,IAAjBA,EAAU,GAAW,EAAIlhE,KAAK6iB,IAAI,EAAIq+C,EAAU,GAAKA,EAAU,IACnH4nW,EAAyB,IAAjB5nW,EAAU,IAA6B,IAAjBA,EAAU,IAA6B,IAAjBA,EAAU,GAAW,EAAIlhE,KAAK6iB,IAAI,EAAIq+C,EAAU,GAAKA,EAAU,IACnHsxQ,EAAS,CAAe,SAAdxkP,GAAwB66U,EAAsB,UAAd76U,EAAwB66U,EAAQ,EAAiB,QAAd76U,GAAuB86U,EAAsB,WAAd96U,EAAyB86U,EAAQ,GAEjJ,OADAt2F,EAAS1vE,GAAe0vE,EAAQtxQ,EAAWikT,GACpCnlX,KAAK6iB,IAAI2vT,EAAO,IAAMxyU,KAAK6iB,IAAI2vT,EAAO,IAAMA,EAAO,GAAK,EAAI,QAAU,OAASA,EAAO,GAAK,EAAI,SAAW,KACnH,CAOA,SAAS9b,GAAgBt+I,EAAIC,EAAIg1E,EAAiB76K,GAChD,GAAK4lG,GAAOC,EAAZ,CA2BA,IAAI0wP,EAASC,EAAS5wP,GACtBC,EAAGq6E,UAAS,SAAUj3P,GACpB,IAAKA,EAAG+2P,SAAW/2P,EAAGm2T,KAAM,CAC1B,IAAIq3G,EAAQF,EAAOtta,EAAGm2T,MAEtB,GAAIq3G,EAAO,CACT,IAAIC,EAAUC,EAAmB1ta,GACjCA,EAAGi1B,KAAKy4Y,EAAmBF,IAC3Bv0L,GAAYj5O,EAAIyta,EAAS77K,EAAiB5xP,EAAGiyO,UAC/C,CAMF,CACF,GAzCA,CAEA,SAASs7L,EAASvxZ,GAChB,IAAI+/T,EAAQ,CAAC,EAMb,OALA//T,EAAEi7O,UAAS,SAAUj3P,IACdA,EAAG+2P,SAAW/2P,EAAGm2T,OACpB4lB,EAAM/7U,EAAGm2T,MAAQn2T,EAErB,IACO+7U,CACT,CAEA,SAAS2xF,EAAmB1ta,GAC1B,IAAI4d,EAAM,CACRsS,SAAUo9K,EAAO56K,MAAM1yB,EAAGkwB,UAC1BmiI,SAAUryJ,EAAGqyJ,UAOf,OAJIryJ,EAAG4zB,QACLhW,EAAIgW,MAAQ88M,EAAO5uH,OAAO,CAAC,EAAG9hH,EAAG4zB,QAG5BhW,CACT,CAmBF,CAQA,SAAS4vU,GAAiB1jU,EAAQuR,GAGhC,OAAOq1M,EAAO5oN,IAAIgC,GAAQ,SAAU1b,GAClC,IAAI8P,EAAI9P,EAAM,GACd8P,EAAI47N,EAAQ57N,EAAGmd,EAAKnd,GACpBA,EAAI67N,EAAQ77N,EAAGmd,EAAKnd,EAAImd,EAAKuL,OAC7B,IAAI7J,EAAI3uB,EAAM,GAGd,OAFA2uB,EAAI+8M,EAAQ/8M,EAAG1B,EAAK0B,GACpBA,EAAIg9M,EAAQh9M,EAAG1B,EAAK0B,EAAI1B,EAAKwL,QACtB,CAAC3oB,EAAG6e,EACb,GACF,CAQA,SAAS4wY,GAAeC,EAAYvyY,GAClC,IAAInd,EAAI47N,EAAQ8zL,EAAW1vZ,EAAGmd,EAAKnd,GAC/BmqB,EAAK0xM,EAAQ6zL,EAAW1vZ,EAAI0vZ,EAAWhnY,MAAOvL,EAAKnd,EAAImd,EAAKuL,OAC5D7J,EAAI+8M,EAAQ8zL,EAAW7wY,EAAG1B,EAAK0B,GAC/BuL,EAAKyxM,EAAQ6zL,EAAW7wY,EAAI6wY,EAAW/mY,OAAQxL,EAAK0B,EAAI1B,EAAKwL,QAGjE,GAAIwB,GAAMnqB,GAAKoqB,GAAMvL,EACnB,MAAO,CACL7e,EAAGA,EACH6e,EAAGA,EACH6J,MAAOyB,EAAKnqB,EACZ2oB,OAAQyB,EAAKvL,EAGnB,CASA,SAAS6oR,GAAWikD,EAAS5oQ,EAAK5lE,GAChC4lE,EAAMyvI,EAAO5uH,OAAO,CAClB0zJ,WAAW,GACVv0K,GACH,IAAIj3F,EAAQi3F,EAAIj3F,MAAQ,CACtB85O,eAAe,GASjB,GAPAzoN,EAAOA,GAAQ,CACbnd,GAAI,EACJ6e,GAAI,EACJ6J,MAAO,EACPC,OAAQ,GAGNgjU,EACF,OAAuC,IAAhCA,EAAQp0V,QAAQ,aAAqBzL,EAAM+tM,MAAQ8xJ,EAAQtpW,MAAM,GAAImwO,EAAO94I,SAAS5tF,EAAOqxB,GAAO,IAAI8rY,EAAOlmU,IAAQkwJ,EAAS04G,EAAQ7vV,QAAQ,UAAW,IAAKinF,EAAK5lE,EAAM,SAErL,CAgBA,SAASwlS,GAAqBgtG,EAAKC,EAAKC,EAAKC,EAAKlkZ,GAChD,IAAK,IAAI1nB,EAAI,EAAG+iC,EAAKrb,EAAOA,EAAO1pB,OAAS,GAAIgC,EAAI0nB,EAAO1pB,OAAQgC,IAAK,CACtE,IAAI65C,EAAInyB,EAAO1nB,GAEf,GAAI6ra,GAAkBJ,EAAKC,EAAKC,EAAKC,EAAK/xX,EAAE,GAAIA,EAAE,GAAI9W,EAAG,GAAIA,EAAG,IAC9D,OAAO,EAGTA,EAAK8W,CACP,CACF,CAmBA,SAASgyX,GAAkBJ,EAAKC,EAAKC,EAAKC,EAAKE,EAAKC,EAAKC,EAAKC,GAE5D,IAAI1qW,EAAKoqW,EAAMF,EACXjqW,EAAKoqW,EAAMF,EACXQ,EAAKF,EAAMF,EACXK,EAAKF,EAAMF,EAGXK,EAAiBC,GAAeH,EAAIC,EAAI5qW,EAAIC,GAEhD,GAAI8qW,GAASF,GACX,OAAO,EAOT,IAAIG,EAAQd,EAAMK,EACdU,EAAQd,EAAMK,EACd9rT,EAAIosT,GAAeE,EAAOC,EAAOjrW,EAAIC,GAAM4qW,EAE/C,GAAInsT,EAAI,GAAKA,EAAI,EACf,OAAO,EAGT,IAAIpmE,EAAIwyX,GAAeE,EAAOC,EAAON,EAAIC,GAAMC,EAE/C,QAAIvyX,EAAI,GAAKA,EAAI,EAKnB,CAMA,SAASwyX,GAAevmY,EAAIC,EAAIE,EAAIC,GAClC,OAAOJ,EAAKI,EAAKD,EAAKF,CACxB,CAEA,SAASumY,GAAStha,GAChB,OAAOA,GAAO,MAAQA,IAAQ,IAChC,CAIA06Z,EAAc,SAAU1/U,GACxB0/U,EAAc,SAAU9sL,GACxB8sL,EAAc,OAAQ10G,GACtB00G,EAAc,UAAW7tK,GACzB6tK,EAAc,WAAY5tK,GAC1B4tK,EAAc,OAAQrtL,GACtBqtL,EAAc,OAAQviV,GACtBuiV,EAAc,cAAettJ,GAC7BstJ,EAAc,MAAO3b,GACrB7sZ,EAAQu1R,iBAAmBA,EAC3Bv1R,EAAQ8wP,8BAAgCA,EACxC9wP,EAAQy1Q,YAAcA,EACtBz1Q,EAAQsoa,WAAaA,EACrBtoa,EAAQwoa,cAAgBA,EACxBxoa,EAAQmyP,cAAgBA,EACxBnyP,EAAQ6xP,SAAWA,EACnB7xP,EAAQ4oa,UAAYA,EACpB5oa,EAAQi0T,UAAYA,EACpBj0T,EAAQ2oa,WAAaA,EACrB3oa,EAAQ8oa,qBAAuBA,EAC/B9oa,EAAQ+oa,qBAAuBA,EAC/B/oa,EAAQ0tP,iBAAmBA,EAC3B1tP,EAAQgzP,qBAAuBA,GAC/BhzP,EAAQ08O,cAAgBA,GACxB18O,EAAQizP,wBAA0BA,GAClCjzP,EAAQ27S,qBAAuBA,GAC/B37S,EAAQura,kBAAoBA,GAC5Bvra,EAAQ+mP,cAAgBA,GACxB/mP,EAAQonQ,iBAAmBA,GAC3BpnQ,EAAQ+0P,aAAeA,GACvB/0P,EAAQmsa,QAAUA,GAClBnsa,EAAQq1P,QAAUA,GAClBr1P,EAAQ25O,YAAcA,GACtB35O,EAAQ8sP,UAAYA,GACpB9sP,EAAQ48E,aAAeA,GACvB58E,EAAQ+nQ,eAAiBA,GACzB/nQ,EAAQq3U,mBAAqBA,GAC7Br3U,EAAQ27T,gBAAkBA,GAC1B37T,EAAQkuV,iBAAmBA,GAC3BluV,EAAQqua,eAAiBA,GACzBrua,EAAQsmT,WAAaA,GACrBtmT,EAAQuhU,qBAAuBA,GAC/BvhU,EAAQ2ua,kBAAoBA,E,uBCl+C5B,IAAIv9L,EAAS9pN,EAAQ,OAEjBmvR,EAAenvR,EAAQ,OAEvBi5N,EAAUj5N,EAAQ,OAElBk5N,EAAeD,EAAQC,aAEvBwoE,EAAa1hS,EAAQ,OAqBrBkvF,EAAO46H,EAAO56H,KAKdwmO,EAAkB,CAAC,OAAQ,QAAS,MAAO,SAAU,QAAS,UAK9DuyF,EAAW,CAAC,CAAC,QAAS,OAAQ,SAAU,CAAC,SAAU,MAAO,WAE9D,SAASC,EAAU9+X,EAAQsJ,EAAOvC,EAAK9T,EAAU8mM,GAC/C,IAAI7rN,EAAI,EACJ6e,EAAI,EAEQ,MAAZkG,IACFA,EAAWguD,KAGI,MAAb84I,IACFA,EAAY94I,KAGd,IAAI89U,EAAqB,EACzBz1X,EAAMq6N,WAAU,SAAUxuK,EAAOI,GAC/B,IAII+hC,EACAC,EALAr3G,EAAWi1E,EAAMj1E,SACjBmL,EAAO8pE,EAAMiiK,kBACb4nK,EAAY11X,EAAM88M,QAAQ7wJ,EAAM,GAChC0pU,EAAgBD,GAAaA,EAAU5nK,kBAI3C,GAAe,eAAXp3N,EAAyB,CAC3B,IAAIk/X,EAAQ7zY,EAAKuL,OAASqoY,GAAiBA,EAAc/wZ,EAAImd,EAAKnd,EAAI,GACtEopH,EAAQppH,EAAIgxZ,EAGR5nS,EAAQrkG,GAAYkiE,EAAMytP,SAC5B10U,EAAI,EACJopH,EAAQ4nS,EACRnyY,GAAKgyY,EAAqBh4X,EAC1Bg4X,EAAqB1zY,EAAKwL,QAG1BkoY,EAAqBxqa,KAAKwI,IAAIgia,EAAoB1zY,EAAKwL,OAE3D,KAAO,CACL,IAAIsoY,EAAQ9zY,EAAKwL,QAAUooY,GAAiBA,EAAclyY,EAAI1B,EAAK0B,EAAI,GACvEwqG,EAAQxqG,EAAIoyY,EAER5nS,EAAQwiG,GAAa5kI,EAAMytP,SAC7B10U,GAAK6wZ,EAAqBh4X,EAC1Bha,EAAI,EACJwqG,EAAQ4nS,EACRJ,EAAqB1zY,EAAKuL,OAE1BmoY,EAAqBxqa,KAAKwI,IAAIgia,EAAoB1zY,EAAKuL,MAE3D,CAEIu+D,EAAMytP,UAIV1iU,EAAS,GAAKhS,EACdgS,EAAS,GAAK6M,EACH,eAAXiT,EAA0B9xB,EAAIopH,EAAQvwF,EAAMha,EAAIwqG,EAAQxwF,EAC1D,GACF,CAWA,IAAIkqJ,EAAM6tO,EASNM,EAAO1+L,EAAOuD,MAAM66L,EAAW,YAS/BO,EAAO3+L,EAAOuD,MAAM66L,EAAW,cAiBnC,SAASh7H,EAAiB6/B,EAAc27F,EAAet2I,GACrD,IAAIr5E,EAAiB2vN,EAAc1oY,MAC/Bg5K,EAAkB0vN,EAAczoY,OAChC3oB,EAAI4hO,EAAa6zF,EAAaz1T,EAAGyhM,GACjC5iL,EAAI+iN,EAAa6zF,EAAa52S,EAAG6iL,GACjCv3K,EAAKy3M,EAAa6zF,EAAatrS,GAAIs3K,GACnCr3K,EAAKw3M,EAAa6zF,EAAarrS,GAAIs3K,GAMvC,OALCzyM,MAAM+Q,IAAM/Q,MAAM+mC,WAAWy/R,EAAaz1T,OAASA,EAAI,IACvD/Q,MAAMk7B,IAAOl7B,MAAM+mC,WAAWy/R,EAAatrS,QAAUA,EAAKs3K,IAC1DxyM,MAAM4vB,IAAM5vB,MAAM+mC,WAAWy/R,EAAa52S,OAASA,EAAI,IACvD5vB,MAAMm7B,IAAOn7B,MAAM+mC,WAAWy/R,EAAarrS,QAAUA,EAAKs3K,GAC3Do5E,EAASsvB,EAAW8I,kBAAkBp4B,GAAU,GACzC,CACLpyP,MAAOriC,KAAKwI,IAAIs7B,EAAKnqB,EAAI86Q,EAAO,GAAKA,EAAO,GAAI,GAChDnyP,OAAQtiC,KAAKwI,IAAIu7B,EAAKvL,EAAIi8P,EAAO,GAAKA,EAAO,GAAI,GAErD,CAmBA,SAASr9B,EAAcg4E,EAAc27F,EAAet2I,GAClDA,EAASsvB,EAAW8I,kBAAkBp4B,GAAU,GAChD,IAAIr5E,EAAiB2vN,EAAc1oY,MAC/Bg5K,EAAkB0vN,EAAczoY,OAChC4H,EAAOqxM,EAAa6zF,EAAallS,KAAMkxK,GACvChxK,EAAMmxM,EAAa6zF,EAAahlS,IAAKixK,GACrClxK,EAAQoxM,EAAa6zF,EAAajlS,MAAOixK,GACzC/wK,EAASkxM,EAAa6zF,EAAa/kS,OAAQgxK,GAC3Ch5K,EAAQk5M,EAAa6zF,EAAa/sS,MAAO+4K,GACzC94K,EAASi5M,EAAa6zF,EAAa9sS,OAAQ+4K,GAC3C2vN,EAAiBv2I,EAAO,GAAKA,EAAO,GACpCw2I,EAAmBx2I,EAAO,GAAKA,EAAO,GACtCtuB,EAASipE,EAAajpE,OA8C1B,OA5CIv9P,MAAMy5B,KACRA,EAAQ+4K,EAAiBjxK,EAAQ8gY,EAAmB/gY,GAGlDthC,MAAM05B,KACRA,EAAS+4K,EAAkBhxK,EAAS2gY,EAAiB5gY,GAGzC,MAAV+7N,IAQEv9P,MAAMy5B,IAAUz5B,MAAM05B,KACpB6jO,EAAS/qD,EAAiBC,EAC5Bh5K,EAAyB,GAAjB+4K,EAER94K,EAA2B,GAAlB+4K,GAKTzyM,MAAMy5B,KACRA,EAAQ8jO,EAAS7jO,GAGf15B,MAAM05B,KACRA,EAASD,EAAQ8jO,IAKjBv9P,MAAMshC,KACRA,EAAOkxK,EAAiBjxK,EAAQ9H,EAAQ4oY,GAGtCria,MAAMwhC,KACRA,EAAMixK,EAAkBhxK,EAAS/H,EAAS0oY,GAIpC57F,EAAallS,MAAQklS,EAAajlS,OACxC,IAAK,SACHD,EAAOkxK,EAAiB,EAAI/4K,EAAQ,EAAIoyP,EAAO,GAC/C,MAEF,IAAK,QACHvqP,EAAOkxK,EAAiB/4K,EAAQ4oY,EAChC,MAGJ,OAAQ77F,EAAahlS,KAAOglS,EAAa/kS,QACvC,IAAK,SACL,IAAK,SACHD,EAAMixK,EAAkB,EAAI/4K,EAAS,EAAImyP,EAAO,GAChD,MAEF,IAAK,SACHrqP,EAAMixK,EAAkB/4K,EAAS0oY,EACjC,MAIJ9gY,EAAOA,GAAQ,EACfE,EAAMA,GAAO,EAETxhC,MAAMy5B,KAERA,EAAQ+4K,EAAiB6vN,EAAmB/gY,GAAQC,GAAS,IAG3DvhC,MAAM05B,KAERA,EAAS+4K,EAAkB2vN,EAAiB5gY,GAAOC,GAAU,IAG/D,IAAIvT,EAAO,IAAI06Q,EAAatnQ,EAAOuqP,EAAO,GAAIrqP,EAAMqqP,EAAO,GAAIpyP,EAAOC,GAEtE,OADAxL,EAAK29P,OAASA,EACP39P,CACT,CAyCA,SAASq4Q,EAAgB1zS,EAAI2zU,EAAc27F,EAAet2I,EAAQ/3L,GAChE,IAAI/hG,GAAK+hG,IAAQA,EAAIi8O,IAAMj8O,EAAIi8O,GAAG,GAC9B92T,GAAK66E,IAAQA,EAAIi8O,IAAMj8O,EAAIi8O,GAAG,GAC9BmB,EAAep9O,GAAOA,EAAIo9O,cAAgB,MAE9C,GAAKn/U,GAAMknB,EAAX,CAIA,IAAIiV,EAEJ,GAAqB,QAAjBgjT,EACFhjT,EAAmB,UAAZr7B,EAAG4C,KAAmB,IAAImzS,EAAa,EAAG,GAAI49B,EAAa/sS,OAAS,GAAI+sS,EAAa9sS,QAAU,GAAK7mC,EAAGonQ,uBAI9G,GAFA/rO,EAAOr7B,EAAGonQ,kBAENpnQ,EAAGyva,qBAAsB,CAC3B,IAAIhqW,EAAYzlE,EAAGi5T,oBAGnB59R,EAAOA,EAAK3I,QACZ2I,EAAKgsO,eAAe5hM,EACtB,CAIFkuQ,EAAeh4E,EAAcjrB,EAAO94I,SAAS,CAC3ChxD,MAAOvL,EAAKuL,MACZC,OAAQxL,EAAKwL,QACZ8sS,GAAe27F,EAAet2I,GAIjC,IAAI02I,EAAQ1va,EAAGkwB,SACX6zC,EAAK7kE,EAAIy0U,EAAaz1T,EAAImd,EAAKnd,EAAI,EACnC8lD,EAAK59C,EAAIutT,EAAa52S,EAAI1B,EAAK0B,EAAI,EACvC/8B,EAAGi1B,KAAK,WAA6B,QAAjBopT,EAAyB,CAACt6Q,EAAIC,GAAM,CAAC0rW,EAAM,GAAK3rW,EAAI2rW,EAAM,GAAK1rW,GA7BnF,CA8BF,CAOA,SAASsvT,EAAenqV,EAAQqqV,GAC9B,OAAqC,MAA9BrqV,EAAO0lY,EAASr7C,GAAO,KAA6C,MAA9BrqV,EAAO0lY,EAASr7C,GAAO,KAA6C,MAA9BrqV,EAAO0lY,EAASr7C,GAAO,GAC5G,CA4BA,SAAS12C,EAAiB6yF,EAAct3I,EAAWp3L,IAChDyvI,EAAOhxO,SAASuhG,KAASA,EAAM,CAAC,GACjC,IAAI87O,EAAa97O,EAAI87O,YACpBrsG,EAAOxrO,QAAQ63U,KAAgBA,EAAa,CAACA,EAAYA,IAC1D,IAAI6yF,EAAUxzT,EAAMyyT,EAAS,GAAI,GAC7BgB,EAAUzzT,EAAMyyT,EAAS,GAAI,GAIjC,SAASzyT,EAAM5wG,EAAOgoX,GACpB,IAAIs8C,EAAY,CAAC,EACbC,EAAgB,EAChB97W,EAAS,CAAC,EACV+7W,EAAmB,EACnBC,EAAoB,EAYxB,GAXAn6T,EAAKtqG,GAAO,SAAU3I,GACpBoxD,EAAOpxD,GAAQ8sa,EAAa9sa,EAC9B,IACAizG,EAAKtqG,GAAO,SAAU3I,GAGpBqta,EAAQ73I,EAAWx1R,KAAUita,EAAUjta,GAAQoxD,EAAOpxD,GAAQw1R,EAAUx1R,IACxE61O,EAASo3L,EAAWjta,IAASkta,IAC7Br3L,EAASzkL,EAAQpxD,IAASmta,GAC5B,IAEIjzF,EAAWy2C,GAQb,OANI96I,EAAS2/C,EAAW7sR,EAAM,IAC5ByoD,EAAOzoD,EAAM,IAAM,KACVktO,EAAS2/C,EAAW7sR,EAAM,MACnCyoD,EAAOzoD,EAAM,IAAM,MAGdyoD,EAOT,GAAI+7W,IAAqBC,GAAsBF,EAK1C,IAAIA,GAAiBE,EACtB,OAAOH,EAGP,IAAK,IAAI1ta,EAAI,EAAGA,EAAIoJ,EAAMpL,OAAQgC,IAAK,CACrC,IAAIS,EAAO2I,EAAMpJ,GAEjB,IAAK8ta,EAAQJ,EAAWjta,IAASqta,EAAQP,EAAc9sa,GAAO,CAC5Dita,EAAUjta,GAAQ8sa,EAAa9sa,GAC/B,KACF,CACF,CAEA,OAAOita,CACT,CAlBA,OAAO77W,CAmBX,CAEA,SAASi8W,EAAQtyZ,EAAK/a,GACpB,OAAO+a,EAAIlZ,eAAe7B,EAC5B,CAEA,SAAS61O,EAAS96N,EAAK/a,GACrB,OAAoB,MAAb+a,EAAI/a,IAA+B,SAAd+a,EAAI/a,EAClC,CAEA,SAASkmF,EAAKv9E,EAAO1H,EAAQhB,GAC3BgzG,EAAKtqG,GAAO,SAAU3I,GACpBiB,EAAOjB,GAAQC,EAAOD,EACxB,GACF,CArEAkmF,EAAK8lV,EAAS,GAAIc,EAAcC,GAChC7mV,EAAK8lV,EAAS,GAAIc,EAAcE,EAqElC,CAQA,SAASh8F,EAAgB/wU,GACvB,OAAOk6U,EAAiB,CAAC,EAAGl6U,EAC9B,CAQA,SAASk6U,EAAiBl5U,EAAQhB,GAIhC,OAHAA,GAAUgB,GAAUgyG,EAAKwmO,GAAiB,SAAUz5U,GAClDC,EAAO4B,eAAe7B,KAAUiB,EAAOjB,GAAQC,EAAOD,GACxD,IACOiB,CACT,CAEAxE,EAAQg9U,gBAAkBA,EAC1Bh9U,EAAQuva,SAAWA,EACnBvva,EAAQ2hM,IAAMA,EACd3hM,EAAQ8va,KAAOA,EACf9va,EAAQ+va,KAAOA,EACf/va,EAAQw0S,iBAAmBA,EAC3Bx0S,EAAQq8P,cAAgBA,EACxBr8P,EAAQo0S,gBAAkBA,EAC1Bp0S,EAAQg0X,eAAiBA,EACzBh0X,EAAQw9U,iBAAmBA,EAC3Bx9U,EAAQu0U,gBAAkBA,EAC1Bv0U,EAAQ09U,iBAAmBA,C,iCCtf3B,IAAItsG,EAAS9pN,EAAQ,OAEjB+mS,EAAM/mS,EAAQ,OAoBdkvF,EAAO46H,EAAO56H,KACdp2G,EAAWgxO,EAAOhxO,SAClBwF,EAAUwrO,EAAOxrO,QAOjBira,EAA8B,WAOlC,SAAStiG,EAAiB3tU,GACxB,OAAOA,aAAiB+E,MAAQ/E,EAAiB,MAATA,EAAgB,GAAK,CAACA,EAChE,CAkBA,SAAS44P,EAAgB73J,EAAKh/F,EAAKmua,GAEjC,GAAInvU,EAAK,CACPA,EAAIh/F,GAAOg/F,EAAIh/F,IAAQ,CAAC,EACxBg/F,EAAI69I,SAAW79I,EAAI69I,UAAY,CAAC,EAChC79I,EAAI69I,SAAS78O,GAAOg/F,EAAI69I,SAAS78O,IAAQ,CAAC,EAE1C,IAAK,IAAIG,EAAI,EAAGwT,EAAMw6Z,EAAQhwa,OAAQgC,EAAIwT,EAAKxT,IAAK,CAClD,IAAIiua,EAAaD,EAAQhua,IAEpB6+F,EAAI69I,SAAS78O,GAAKyC,eAAe2ra,IAAepvU,EAAIh/F,GAAKyC,eAAe2ra,KAC3EpvU,EAAI69I,SAAS78O,GAAKoua,GAAcpvU,EAAIh/F,GAAKoua,GAE7C,CACF,CACF,CAEA,IAAIxX,EAAqB,CAAC,YAAa,aAAc,WAAY,aAAc,OAAQ,MAAO,QAAS,kBAAmB,kBAAmB,QAAS,SAAU,aAAc,QAAS,gBAAiB,WAAY,cAAe,aAAc,gBAAiB,gBAAiB,kBAAmB,iBAAkB,oBAAqB,oBAAqB,kBAAmB,cAAe,cAAe,eAAgB,WAena,SAASp6I,EAAiBx9N,GACxB,OAAOvhD,EAASuhD,IAAc/7C,EAAQ+7C,IAAeA,aAAoBxuB,KAAyBwuB,EAAjBA,EAAS/gD,KAC5F,CAQA,SAAS0zY,EAAiB3yV,GACxB,OAAOvhD,EAASuhD,MAAeA,aAAoBh8C,MAErD,CAYA,SAASi2U,EAAgBhjO,EAAQo4T,GAO/BA,GAAiBA,GAAiB,IAAI/va,QACtC,IAAIuB,EAAS4uO,EAAO5oN,IAAIowF,GAAU,IAAI,SAAUt6F,EAAKvd,GACnD,MAAO,CACLq8U,MAAO9+T,EAEX,IA6DA,OA3DAk4F,EAAKw6T,GAAe,SAAUC,EAAWlwa,GACvC,GAAKX,EAAS6wa,GAAd,CAKA,IAAK,IAAInua,EAAI,EAAGA,EAAIN,EAAO1B,OAAQgC,IACjC,IAAKN,EAAOM,GAAG+mC,QACI,MAAhBonY,EAAU3oa,IAAc9F,EAAOM,GAAGs6U,MAAM90U,KAAO2oa,EAAU3oa,GAAK,GAG/D,OAFA9F,EAAOM,GAAG+mC,OAASonY,OACnBD,EAAcjwa,GAAS,MAK3B,IAAS+B,EAAI,EAAGA,EAAIN,EAAO1B,OAAQgC,IAAK,CACtC,IAAIs6U,EAAQ56U,EAAOM,GAAGs6U,MAEtB,IAAK56U,EAAOM,GAAG+mC,SAEC,MAAZuzS,EAAM90U,IAA8B,MAAhB2oa,EAAU3oa,KAAiC,MAAlB2oa,EAAU1ta,OAAiBgsZ,EAAU0hB,KAAe1hB,EAAUnyE,IAAUA,EAAM75U,OAAS0ta,EAAU1ta,KAAO,GAGvJ,OAFAf,EAAOM,GAAG+mC,OAASonY,OACnBD,EAAcjwa,GAAS,KAG3B,CAtBA,CAuBF,IAEAy1G,EAAKw6T,GAAe,SAAUC,EAAWlwa,GACvC,GAAKX,EAAS6wa,GAAd,CAMA,IAFA,IAAInua,EAAI,EAEDA,EAAIN,EAAO1B,OAAQgC,IAAK,CAC7B,IAAIs6U,EAAQ56U,EAAOM,GAAGs6U,MAEtB,IAAK56U,EAAOM,GAAG+mC,SAIX0lX,EAAUnyE,IAKK,MAAhB6zF,EAAU3oa,GAAY,CACvB9F,EAAOM,GAAG+mC,OAASonY,EACnB,KACF,CACF,CAEInua,GAAKN,EAAO1B,QACd0B,EAAOO,KAAK,CACV8mC,OAAQonY,GAxBZ,CA2BF,IACOzua,CACT,CAYA,SAASq5U,EAAcgzE,GAUrB,IAAIqiB,EAAQ9/L,EAAO6hD,gBACnBz8K,EAAKq4S,GAAW,SAAUvqY,EAAMvjB,GAC9B,IAAIowa,EAAW7sZ,EAAK84T,MACpB+zF,GAAYD,EAAM5/Z,IAAI6/Z,EAAS7oa,GAAIgc,EACrC,IACAkyF,EAAKq4S,GAAW,SAAUvqY,EAAMvjB,GAC9B,IAAI4gG,EAAMr9E,EAAKulB,OACfunM,EAAOkrJ,QAAQ36R,GAAiB,MAAVA,EAAIr5F,KAAe4oa,EAAMlva,IAAI2/F,EAAIr5F,KAAO4oa,EAAMlva,IAAI2/F,EAAIr5F,MAAQgc,EAAM,mBAAqBq9E,GAAOA,EAAIr5F,KAC1Hq5F,GAAiB,MAAVA,EAAIr5F,IAAc4oa,EAAM5/Z,IAAIqwF,EAAIr5F,GAAIgc,IAC1CA,EAAK+4T,UAAY/4T,EAAK+4T,QAAU,CAAC,EACpC,IAEA7mO,EAAKq4S,GAAW,SAAUvqY,EAAMvjB,GAC9B,IAAIowa,EAAW7sZ,EAAK84T,MAChBz7O,EAAMr9E,EAAKulB,OACXwzS,EAAU/4T,EAAK+4T,QAEnB,GAAKj9U,EAASuhG,GAAd,CAYA,GAJA07O,EAAQ95U,KAAmB,MAAZo+F,EAAIp+F,KAAeo+F,EAAIp+F,KAAO,GAAK4ta,EAAWA,EAAS5ta,KAEpEsta,EAA8B9va,EAE5Bowa,EACF9zF,EAAQ/0U,GAAK6oa,EAAS7oa,QACjB,GAAc,MAAVq5F,EAAIr5F,GACb+0U,EAAQ/0U,GAAKq5F,EAAIr5F,GAAK,OACjB,CAML,IAAI8oa,EAAQ,EAEZ,GACE/zF,EAAQ/0U,GAAK,KAAO+0U,EAAQ95U,KAAO,KAAO6ta,UACnCF,EAAMlva,IAAIq7U,EAAQ/0U,IAC7B,CAEA4oa,EAAM5/Z,IAAI+rU,EAAQ/0U,GAAIgc,EA3BtB,CA4BF,GACF,CAEA,SAAS+rU,EAAgBp9G,GACvB,IAAI1vO,EAAO0vO,EAAe1vO,KAE1B,SAAUA,IAAQA,EAAK4S,QAAQ06Z,GACjC,CAQA,SAASthB,EAAU0hB,GACjB,OAAO7wa,EAAS6wa,IAAcA,EAAU3oa,IAAkD,KAA3C2oa,EAAU3oa,GAAK,IAAI6N,QAAQ,WAC5E,CAWA,SAASmrW,EAAgB+vD,EAAQC,GAC/B,IAAIC,EAAO,CAAC,EACRC,EAAO,CAAC,EAGZ,OAFAC,EAAQJ,GAAU,GAAIE,GACtBE,EAAQH,GAAU,GAAIE,EAAMD,GACrB,CAACG,EAAWH,GAAOG,EAAWF,IAErC,SAASC,EAAQE,EAAanpZ,EAAKopZ,GACjC,IAAK,IAAI9ua,EAAI,EAAGwT,EAAMq7Z,EAAY7wa,OAAQgC,EAAIwT,EAAKxT,IAKjD,IAJA,IAAI+vO,EAAW8+L,EAAY7ua,GAAG+vO,SAC1B84D,EAAc4iC,EAAiBojG,EAAY7ua,GAAG6vO,WAC9Ck/L,EAAmBD,GAAYA,EAAS/+L,GAEnC9oO,EAAI,EAAG62X,EAAOj1F,EAAY7qS,OAAQiJ,EAAI62X,EAAM72X,IAAK,CACxD,IAAI4oO,EAAYg5D,EAAY5hS,GAExB8na,GAAoBA,EAAiBl/L,GACvCk/L,EAAiBl/L,GAAa,MAE7BnqN,EAAIqqN,KAAcrqN,EAAIqqN,GAAY,CAAC,IAAIF,GAAa,CAEzD,CAEJ,CAEA,SAAS++L,EAAWlpZ,EAAKspZ,GACvB,IAAItva,EAAS,GAEb,IAAK,IAAIM,KAAK0lB,EACZ,GAAIA,EAAIpjB,eAAetC,IAAgB,MAAV0lB,EAAI1lB,GAC/B,GAAIgva,EACFtva,EAAOO,MAAMD,OACR,CACL,IAAI6oS,EAAc+lI,EAAWlpZ,EAAI1lB,IAAI,GACrC6oS,EAAY7qS,QAAU0B,EAAOO,KAAK,CAChC8vO,SAAU/vO,EACV6vO,UAAWg5D,GAEf,CAIJ,OAAOnpS,CACT,CACF,CASA,SAASooR,EAAe7sQ,EAAMu0N,GAC5B,OAA+B,MAA3BA,EAAQkiB,gBACHliB,EAAQkiB,gBACe,MAArBliB,EAAQK,UACVvB,EAAOxrO,QAAQ0sO,EAAQK,WAAavB,EAAO5oN,IAAI8pN,EAAQK,WAAW,SAAU/xO,GACjF,OAAOmd,EAAKixX,gBAAgBpuY,EAC9B,IAAKmd,EAAKixX,gBAAgB18J,EAAQK,WACT,MAAhBL,EAAQ/uO,KACV6tO,EAAOxrO,QAAQ0sO,EAAQ/uO,MAAQ6tO,EAAO5oN,IAAI8pN,EAAQ/uO,MAAM,SAAU3C,GACvE,OAAOmd,EAAKi2Q,YAAYpzR,EAC1B,IAAKmd,EAAKi2Q,YAAY1hD,EAAQ/uO,WAHzB,CAKT,CAuBA,SAASk+Q,IAEP,IAAI9+Q,EAAM,gBAAkBova,IAAqB,IAAM9sa,KAAKgJ,SAAS4mC,QAAQ,GAC7E,OAAO,SAAUm9X,GACf,OAAOA,EAAQrva,KAASqva,EAAQrva,GAAO,CAAC,EAC1C,CACF,CAEA,IAAIova,EAAmB,EAqCvB,SAAStrF,EAAYj1G,EAAS84E,EAAQ3oN,GACpC,GAAIyvI,EAAOohF,SAASlI,GAAS,CAC3B,IAAIhsS,EAAM,CAAC,EACXA,EAAIgsS,EAAS,SAAW,EACxBA,EAAShsS,CACX,CAEA,IAAI4hY,EAAkBv+S,GAAOA,EAAIu+S,iBAE7BA,GAAoB/8Y,EAAImnT,EAAQ41F,EAAkB,UAAa/8Y,EAAImnT,EAAQ41F,EAAkB,OAAU/8Y,EAAImnT,EAAQ41F,EAAkB,UACvI51F,EAAO41F,EAAkB,SAAW,GAGtC,IAAI19Y,EAAS,CAAC,EA6Bd,OA5BAg0G,EAAK8zM,GAAQ,SAAU1pT,EAAO+B,GACxB/B,EAAQ0pT,EAAO3nT,GAEnB,GAAY,cAARA,GAA+B,oBAARA,EAA3B,CAKA,IAAIsva,EAAYtva,EAAIyX,MAAM,2BAA6B,GACnDo4N,EAAWy/L,EAAU,GACrBC,GAAaD,EAAU,IAAM,IAAI7zZ,cAErC,MAAKo0N,IAAa0/L,GAAsB,MAATtxa,GAA+B,UAAdsxa,GAAmC,SAAVtxa,GAAoB+gG,GAAOA,EAAIklP,kBAAoBz1G,EAAOj7N,QAAQwrF,EAAIklP,iBAAkBr0G,GAAY,GAA7K,CAIA,IAAI2/L,EAAa,CACf3/L,SAAUA,GAGM,UAAd0/L,GAAmC,QAAVtxa,IAC3Buxa,EAAWD,GAAatxa,GAG1B,IAAI82S,EAASlmE,EAAQq5D,gBAAgBsnI,GACrC3va,EAAOgwO,EAAW,UAAYklE,EAC9Bl1S,EAAOgwO,EAAW,SAAWklE,EAAO,EAZpC,CARA,MAFEl1S,EAAOG,GAAO/B,CAuBlB,IACO4B,CACT,CAEA,SAASW,EAAImb,EAAKo/H,GAChB,OAAOp/H,GAAOA,EAAIlZ,eAAes4I,EACnC,CAEA,SAASnuH,EAAama,EAAK/mC,EAAK/B,GAC9B8oC,EAAIna,aAAema,EAAIna,aAAa5sB,EAAK/B,GAAS8oC,EAAI/mC,GAAO/B,CAC/D,CAEA,SAASwlZ,EAAa18W,EAAK/mC,GACzB,OAAO+mC,EAAI08W,aAAe18W,EAAI08W,aAAazjZ,GAAO+mC,EAAI/mC,EACxD,CAEA,SAASyzW,EAAqBghD,GAC5B,MAAyB,SAArBA,EAEK/oG,EAAI+jH,aAAe,OAAS,WAE5Bhb,GAAoB,MAE/B,CAcA,SAAS51H,EAAU9sO,EAAOyhG,GACxB,IAAIytI,EAAUxyD,EAAO6hD,gBACjBpsR,EAAO,GAKX,OAJAuqO,EAAO56H,KAAK9hD,GAAO,SAAUpwC,GAC3B,IAAI3hB,EAAMwzJ,EAAO7xI,IAChBs/Q,EAAQ5hS,IAAIW,KAASkE,EAAK9D,KAAKJ,GAAMihS,EAAQtyR,IAAI3O,EAAK,MAAMI,KAAKuhB,EACpE,IACO,CACLzd,KAAMA,EACN+8R,QAASA,EAEb,CAEA5jS,EAAQuuU,iBAAmBA,EAC3BvuU,EAAQw5P,gBAAkBA,EAC1Bx5P,EAAQu5Z,mBAAqBA,EAC7Bv5Z,EAAQm/Q,iBAAmBA,EAC3Bn/Q,EAAQs0Y,iBAAmBA,EAC3Bt0Y,EAAQ47U,gBAAkBA,EAC1B57U,EAAQ67U,cAAgBA,EACxB77U,EAAQqwV,gBAAkBA,EAC1BrwV,EAAQuvZ,UAAYA,EACpBvvZ,EAAQshX,gBAAkBA,EAC1BthX,EAAQ4qR,eAAiBA,EACzB5qR,EAAQyhR,UAAYA,EACpBzhR,EAAQymV,YAAcA,EACtBzmV,EAAQuvB,aAAeA,EACvBvvB,EAAQomZ,aAAeA,EACvBpmZ,EAAQo2W,qBAAuBA,EAC/Bp2W,EAAQwhS,UAAYA,C,wBC9gBpB,IAAIpwD,EAAS9pN,EAAQ,OA6BjB+qZ,EAAiB,KAErB,SAASC,EAAMt/V,GACb,OAAOA,EAAIt4D,QAAQ,aAAc,GACnC,CAYA,SAASyhP,EAAUruP,EAAKyka,EAAQ78V,EAAO2oP,GACrC,IAAIm0G,EAAYD,EAAO,GAAKA,EAAO,GAC/BE,EAAW/8V,EAAM,GAAKA,EAAM,GAEhC,GAAkB,IAAd88V,EACF,OAAoB,IAAbC,EAAiB/8V,EAAM,IAAMA,EAAM,GAAKA,EAAM,IAAM,EAQ7D,GAAI2oP,EACF,GAAIm0G,EAAY,EAAG,CACjB,GAAI1ka,GAAOyka,EAAO,GAChB,OAAO78V,EAAM,GACR,GAAI5nE,GAAOyka,EAAO,GACvB,OAAO78V,EAAM,EAEjB,KAAO,CACL,GAAI5nE,GAAOyka,EAAO,GAChB,OAAO78V,EAAM,GACR,GAAI5nE,GAAOyka,EAAO,GACvB,OAAO78V,EAAM,EAEjB,KACK,CACL,GAAI5nE,IAAQyka,EAAO,GACjB,OAAO78V,EAAM,GAGf,GAAI5nE,IAAQyka,EAAO,GACjB,OAAO78V,EAAM,EAEjB,CAEA,OAAQ5nE,EAAMyka,EAAO,IAAMC,EAAYC,EAAW/8V,EAAM,EAC1D,CAWA,SAAS8qK,EAAa/kM,EAASxjC,GAC7B,OAAQwjC,GACN,IAAK,SACL,IAAK,SACHA,EAAU,MACV,MAEF,IAAK,OACL,IAAK,MACHA,EAAU,KACV,MAEF,IAAK,QACL,IAAK,SACHA,EAAU,OACV,MAGJ,MAAuB,kBAAZA,EACL62X,EAAM72X,GAASrhC,MAAM,MAChBw6B,WAAW6G,GAAW,IAAMxjC,EAG9B28B,WAAW6G,GAGF,MAAXA,EAAkB6uC,KAAO7uC,CAClC,CAYA,SAAS+pC,EAAM5mE,EAAGsJ,EAAWwqZ,GAQ3B,OAPiB,MAAbxqZ,IACFA,EAAY,IAIdA,EAAYjjB,KAAKyI,IAAIzI,KAAKwI,IAAI,EAAGya,GAAY,IAC7CtJ,IAAMA,GAAGi2B,QAAQ3sB,GACVwqZ,EAAY9zZ,GAAKA,CAC1B,CAUA,SAAS8pT,EAAIt1P,GAIX,OAHAA,EAAIzuD,MAAK,SAAUljB,EAAGC,GACpB,OAAOD,EAAIC,CACb,IACO0xE,CACT,CAOA,SAASorR,EAAa1wV,GAGpB,GAFAA,GAAOA,EAEHD,MAAMC,GACR,OAAO,EAOT,IAAI/I,EAAI,EACJsiB,EAAQ,EAEZ,MAAOpiB,KAAKugF,MAAM13E,EAAM/I,GAAKA,IAAM+I,EACjC/I,GAAK,GACLsiB,IAGF,OAAOA,CACT,CAOA,SAASy0Y,EAAiBhuZ,GACxB,IAAIklE,EAAMllE,EAAI9M,WAEV2xa,EAAS3/V,EAAI78D,QAAQ,KAEzB,GAAIw8Z,EAAS,EAAG,CACd,IAAIzqZ,GAAa8qD,EAAI/xE,MAAM0xa,EAAS,GACpC,OAAOzqZ,EAAY,GAAKA,EAAY,CACtC,CACE,IAAI0qZ,EAAW5/V,EAAI78D,QAAQ,KAC3B,OAAOy8Z,EAAW,EAAI,EAAI5/V,EAAIlyE,OAAS,EAAI8xa,CAE/C,CAUA,SAAS3oG,EAAkBhtE,EAAY41K,GACrC,IAAI5jU,EAAMhqG,KAAKgqG,IACX+0R,EAAO/+X,KAAK++X,KACZ8uC,EAAe7ta,KAAK2I,MAAMqhG,EAAIguJ,EAAW,GAAKA,EAAW,IAAM+mI,GAC/D+uC,EAAe9ta,KAAKugF,MAAMypB,EAAIhqG,KAAK6iB,IAAI+qZ,EAAY,GAAKA,EAAY,KAAO7uC,GAE3E97W,EAAYjjB,KAAKyI,IAAIzI,KAAKwI,KAAKqla,EAAeC,EAAc,GAAI,IACpE,OAAQrtV,SAASx9D,GAAkBA,EAAL,EAChC,CAcA,SAAS0wQ,EAAwBK,EAAWhzL,EAAK/9E,GAC/C,IAAK+wQ,EAAUhzL,GACb,OAAO,EAGT,IAAI57E,EAAM+mN,EAAOhnN,OAAO6uQ,GAAW,SAAU9tM,EAAKr9E,GAChD,OAAOq9E,GAAOt9E,MAAMC,GAAO,EAAIA,EACjC,GAAG,GAEH,GAAY,IAARuc,EACF,OAAO,EAGT,IAAIo7D,EAASxgF,KAAK4iB,IAAI,GAAIK,GACtB8qZ,EAAgB5hM,EAAO5oN,IAAIywQ,GAAW,SAAUnrR,GAClD,OAAQD,MAAMC,GAAO,EAAIA,GAAOuc,EAAMo7D,EAAS,GACjD,IACIwtV,EAAuB,IAATxtV,EACdytV,EAAQ9hM,EAAO5oN,IAAIwqZ,GAAe,SAAUG,GAE9C,OAAOlua,KAAK2I,MAAMula,EACpB,IACIC,EAAahiM,EAAOhnN,OAAO8oZ,GAAO,SAAU/nV,EAAKr9E,GACnD,OAAOq9E,EAAMr9E,CACf,GAAG,GACCula,EAAYjiM,EAAO5oN,IAAIwqZ,GAAe,SAAUG,EAAOltU,GACzD,OAAOktU,EAAQD,EAAMjtU,EACvB,IAEA,MAAOmtU,EAAaH,EAAa,CAK/B,IAHA,IAAIxla,EAAM4tD,OAAO6f,kBACbo4V,EAAQ,KAEHxwa,EAAI,EAAGwT,EAAM+8Z,EAAUvya,OAAQgC,EAAIwT,IAAOxT,EAC7Cuwa,EAAUvwa,GAAK2K,IACjBA,EAAM4la,EAAUvwa,GAChBwwa,EAAQxwa,KAKVowa,EAAMI,GACRD,EAAUC,GAAS,IACjBF,CACJ,CAEA,OAAOF,EAAMjtU,GAAOxgB,CACtB,CAGA,IAAIrtE,EAAmB,iBAOvB,SAASy9S,EAAUzsR,GACjB,IAAImqY,EAAgB,EAAVtua,KAAK40B,GACf,OAAQuP,EAASmqY,EAAMA,GAAOA,CAChC,CAOA,SAAS39G,EAAmB9nT,GAC1B,OAAOA,GAAOuka,GAAkBvka,EAAMuka,CACxC,CAIA,IAAImB,EAAW,oIAoBf,SAASzhD,EAAUnxX,GACjB,GAAIA,aAAiBuyB,KACnB,OAAOvyB,EACF,GAAqB,kBAAVA,EAAoB,CAMpC,IAAIwZ,EAAQo5Z,EAAS1ua,KAAKlE,GAE1B,IAAKwZ,EAEH,OAAO,IAAI+Y,KAAKm3D,KAIlB,GAAKlwE,EAAM,GAWN,CACD,IAAIq5Z,GAAQr5Z,EAAM,IAAM,EAMxB,MAJ+B,MAA3BA,EAAM,GAAG8gB,gBACXu4Y,GAAQr5Z,EAAM,GAAGnZ,MAAM,EAAG,IAGrB,IAAIkyB,KAAKA,KAAKugZ,KAAKt5Z,EAAM,KAAMA,EAAM,IAAM,GAAK,GAAIA,EAAM,IAAM,EAAGq5Z,IAAQr5Z,EAAM,IAAM,IAAKA,EAAM,IAAM,GAAIA,EAAM,IAAM,GACjI,CAhBA,OAAO,IAAI+Y,MAAM/Y,EAAM,KAAMA,EAAM,IAAM,GAAK,GAAIA,EAAM,IAAM,GAAIA,EAAM,IAAM,IAAKA,EAAM,IAAM,IAAKA,EAAM,IAAM,GAAIA,EAAM,IAAM,EAiBpI,CAAO,OAAa,MAATxZ,EACF,IAAIuyB,KAAKm3D,KAGX,IAAIn3D,KAAKluB,KAAKugF,MAAM5kF,GAC7B,CASA,SAAS+7Z,EAAS7uZ,GAChB,OAAO7I,KAAK4iB,IAAI,GAAI8rZ,EAAiB7la,GACvC,CAUA,SAAS6la,EAAiB7la,GACxB,GAAY,IAARA,EACF,OAAO,EAGT,IAAI8la,EAAM3ua,KAAK2I,MAAM3I,KAAKgqG,IAAInhG,GAAO7I,KAAK++X,MAW1C,OAJIl2X,EAAM7I,KAAK4iB,IAAI,GAAI+rZ,IAAQ,IAC7BA,IAGKA,CACT,CAcA,SAAS3V,EAAKnwZ,EAAK03E,GACjB,IAIIquV,EAJAC,EAAWH,EAAiB7la,GAC5Bi2X,EAAQ9+X,KAAK4iB,IAAI,GAAIisZ,GACrBpxa,EAAIoL,EAAMi2X,EAiCd,OA3BI8vC,EAFAruV,EACE9iF,EAAI,IACD,EACIA,EAAI,IACR,EACIA,EAAI,EACR,EACIA,EAAI,EACR,EAEA,GAGHA,EAAI,EACD,EACIA,EAAI,EACR,EACIA,EAAI,EACR,EACIA,EAAI,EACR,EAEA,GAIToL,EAAM+la,EAAK9vC,EAGJ+vC,IAAa,IAAMhma,EAAI+mC,QAAQi/X,EAAW,GAAKA,EAAW,GAAKhma,CACxE,CASA,SAASima,EAASC,EAAQr3X,GACxB,IAAI08I,GAAK26O,EAAOlza,OAAS,GAAK67C,EAAI,EAC9B/8C,EAAIqF,KAAK2I,MAAMyrL,GACfvyK,GAAKktZ,EAAOp0a,EAAI,GAChBmF,EAAIs0L,EAAIz5L,EACZ,OAAOmF,EAAI+hB,EAAI/hB,GAAKiva,EAAOp0a,GAAKknB,GAAKA,CACvC,CAyBA,SAAS+6V,EAAgB9rW,GACvBA,EAAK4O,MAAK,SAAUljB,EAAGC,GACrB,OAAO+mX,EAAWhnX,EAAGC,EAAG,IAAM,EAAI,CACpC,IAIA,IAHA,IAAI22G,GAAQ1mB,IACRsiV,EAAY,EAEPnxa,EAAI,EAAGA,EAAIiT,EAAKjV,QAAS,CAIhC,IAHA,IAAI8rC,EAAW72B,EAAKjT,GAAG8pC,SACnB5hC,EAAQ+K,EAAKjT,GAAGkI,MAEXkwL,EAAK,EAAGA,EAAK,EAAGA,IACnBtuJ,EAASsuJ,IAAO7iF,IAClBzrE,EAASsuJ,GAAM7iF,EACfrtG,EAAMkwL,GAAOA,EAAqB,EAAhB,EAAI+4O,GAGxB57T,EAAOzrE,EAASsuJ,GAChB+4O,EAAYjpa,EAAMkwL,GAGhBtuJ,EAAS,KAAOA,EAAS,IAAM5hC,EAAM,GAAKA,EAAM,KAAO,EACzD+K,EAAKgiB,OAAOj1B,EAAG,GAEfA,GAEJ,CAEA,OAAOiT,EAEP,SAAS0yW,EAAWhnX,EAAGC,EAAGw5L,GACxB,OAAOz5L,EAAEmrC,SAASsuJ,GAAMx5L,EAAEkrC,SAASsuJ,IAAOz5L,EAAEmrC,SAASsuJ,KAAQx5L,EAAEkrC,SAASsuJ,KAAQz5L,EAAEuJ,MAAMkwL,GAAMx5L,EAAEsJ,MAAMkwL,MAAUA,GAAU,EAAL,KAAYA,GAAMutL,EAAWhnX,EAAGC,EAAG,GAC1J,CACF,CAWA,SAAS++O,EAAU35N,GACjB,OAAOA,EAAI8tB,WAAW9tB,IAAM,CAC9B,CAEA9mB,EAAQm8P,UAAYA,EACpBn8P,EAAQwgP,aAAeA,EACvBxgP,EAAQwlF,MAAQA,EAChBxlF,EAAQ0oU,IAAMA,EACd1oU,EAAQw+V,aAAeA,EACvBx+V,EAAQ87Z,iBAAmBA,EAC3B97Z,EAAQiqU,kBAAoBA,EAC5BjqU,EAAQ44R,wBAA0BA,EAClC54R,EAAQoY,iBAAmBA,EAC3BpY,EAAQ61T,UAAYA,EACpB71T,EAAQ41T,mBAAqBA,EAC7B51T,EAAQ+xX,UAAYA,EACpB/xX,EAAQ28Z,SAAWA,EACnB38Z,EAAQ2za,iBAAmBA,EAC3B3za,EAAQi+Z,KAAOA,EACfj+Z,EAAQ+za,SAAWA,EACnB/za,EAAQ6hX,gBAAkBA,EAC1B7hX,EAAQygP,UAAYA,C,wBCrjBpB,IAAIgN,EAAWnmO,EAAQ,OAEnBmuP,EAAchoB,EAASgoB,YAyBvBlpP,EAAWkpP,EAAY,CACzBnyQ,KAAM,UACNgxB,MAAO,CACLtG,GAAI,EACJC,GAAI,EACJgtN,GAAI,EACJpvN,EAAG,EACH8S,WAAY,EACZC,SAAoB,EAAV35B,KAAK40B,GACf83J,WAAW,GAEbkrD,UAAW,SAAU55O,EAAKqxB,GACxB,IAAI1V,EAAI0V,EAAMtG,GACVyP,EAAInJ,EAAMrG,GACVgtN,EAAKh2O,KAAKwI,IAAI6mB,EAAM2mN,IAAM,EAAG,GAC7BpvN,EAAI5mB,KAAKwI,IAAI6mB,EAAMzI,EAAG,GACtBmgE,EAAgB,IAAVngE,EAAIovN,GACVi5L,EAAUj5L,EAAKjvJ,EACfrtD,EAAarK,EAAMqK,WACnBC,EAAWtK,EAAMsK,SACjB+yJ,EAAYr9J,EAAMq9J,UAClBwiP,EAAalva,KAAKmgC,IAAIzG,GACtBy1Y,EAAanva,KAAKkgC,IAAIxG,GACtB01Y,EAAWpva,KAAKmgC,IAAIxG,GACpB01Y,EAAWrva,KAAKkgC,IAAIvG,GACpB21Y,EAAiB5iP,EAAY/yJ,EAAWD,EAAuB,EAAV15B,KAAK40B,GAAS8E,EAAaC,EAAqB,EAAV35B,KAAK40B,GAEhG06Y,IACFtxa,EAAI8hC,OAAOovY,EAAal5L,EAAKr8N,EAAGw1Z,EAAan5L,EAAKx9M,GAClDx6B,EAAI44B,IAAIs4Y,EAAaD,EAAUt1Z,EAAGw1Z,EAAaF,EAAUz2Y,EAAGuuD,GAAK/mF,KAAK40B,GAAK8E,EAAYA,GAAagzJ,IAGtG1uL,EAAI44B,IAAIjd,EAAG6e,EAAG5R,EAAG8S,EAAYC,GAAW+yJ,GACxC1uL,EAAI8hC,OAAOsvY,EAAWxoZ,EAAIjN,EAAG01Z,EAAWzoZ,EAAI4R,GAC5Cx6B,EAAI44B,IAAIw4Y,EAAWH,EAAUt1Z,EAAG01Z,EAAWJ,EAAUz2Y,EAAGuuD,EAAIptD,EAAqB,EAAV35B,KAAK40B,GAAQ+E,EAAW35B,KAAK40B,IAAK83J,GAE9F,IAAPspD,IACFh4O,EAAI44B,IAAIjd,EAAG6e,EAAGw9M,EAAIr8M,EAAUD,EAAYgzJ,GACxC1uL,EAAI8hC,OAAOovY,EAAal5L,EAAKr8N,EAAG01Z,EAAWr5L,EAAKx9M,IAGlDx6B,EAAIs5B,WACN,IAGFt8B,EAAOD,QAAUusB,C,wBCxEjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBsuN,EAAUtuN,EAAQ,OAElBmvR,EAAenvR,EAAQ,OAEvBktZ,EAAQltZ,EAAQ,MAEhBmtZ,EAAwBD,EAAMC,sBA0B9BC,EAAW9+L,EAAQ6/B,YAAY,CACjCnyQ,KAAM,WACNgxB,MAAO,CACLtG,GAAI,EACJC,GAAI,EACJqZ,MAAO,EACPC,OAAQ,GAEVs1M,UAAW,SAAU7gL,EAAM1nC,GACzB,IAAItG,EAAKsG,EAAMtG,GACXC,EAAKqG,EAAMrG,GACXqZ,EAAQhT,EAAMgT,MAAQ,EACtBC,EAASjT,EAAMiT,OAAS,EAC5By0B,EAAKj3B,OAAO/W,EAAIC,EAAKsZ,GACrBy0B,EAAKr8B,OAAO3R,EAAKsZ,EAAOrZ,EAAKsZ,GAC7By0B,EAAKr8B,OAAO3R,EAAKsZ,EAAOrZ,EAAKsZ,GAC7By0B,EAAKz/B,WACP,IAOEo4Y,EAAU/+L,EAAQ6/B,YAAY,CAChCnyQ,KAAM,UACNgxB,MAAO,CACLtG,GAAI,EACJC,GAAI,EACJqZ,MAAO,EACPC,OAAQ,GAEVs1M,UAAW,SAAU7gL,EAAM1nC,GACzB,IAAItG,EAAKsG,EAAMtG,GACXC,EAAKqG,EAAMrG,GACXqZ,EAAQhT,EAAMgT,MAAQ,EACtBC,EAASjT,EAAMiT,OAAS,EAC5By0B,EAAKj3B,OAAO/W,EAAIC,EAAKsZ,GACrBy0B,EAAKr8B,OAAO3R,EAAKsZ,EAAOrZ,GACxB+tC,EAAKr8B,OAAO3R,EAAIC,EAAKsZ,GACrBy0B,EAAKr8B,OAAO3R,EAAKsZ,EAAOrZ,GACxB+tC,EAAKz/B,WACP,IAOEq4Y,EAAMh/L,EAAQ6/B,YAAY,CAC5BnyQ,KAAM,MACNgxB,MAAO,CAEL1V,EAAG,EACH6e,EAAG,EACH6J,MAAO,EACPC,OAAQ,GAEVs1M,UAAW,SAAU7gL,EAAM1nC,GACzB,IAAI1V,EAAI0V,EAAM1V,EACV6e,EAAInJ,EAAMmJ,EACV90B,EAAI2rB,EAAMgT,MAAQ,EAAI,EAEtB1nC,EAAIqF,KAAKwI,IAAI9E,EAAG2rB,EAAMiT,QACtB1b,EAAIljB,EAAI,EAER+7D,EAAK74C,EAAIA,GAAKjsB,EAAIisB,GAClBoC,EAAKwP,EAAI79B,EAAIisB,EAAI64C,EACjBrjB,EAAQp8C,KAAK8lQ,KAAKrmM,EAAK74C,GAEvB44C,EAAKx/D,KAAKmgC,IAAIic,GAASx1B,EACvBgpZ,EAAO5va,KAAKkgC,IAAIkc,GAChByzX,EAAO7va,KAAKmgC,IAAIic,GAChB0zX,EAAY,GAAJlpZ,EACRmpZ,EAAa,GAAJnpZ,EACbmwC,EAAKj3B,OAAOnmB,EAAI6lD,EAAIx2C,EAAKy2C,GACzB1I,EAAKngC,IAAIjd,EAAGqP,EAAIpC,EAAG5mB,KAAK40B,GAAKwnB,EAAiB,EAAVp8C,KAAK40B,GAASwnB,GAClD2a,EAAKh3B,cAAcpmB,EAAI6lD,EAAKowW,EAAOE,EAAO9mZ,EAAKy2C,EAAKowW,EAAOC,EAAOn2Z,EAAG6e,EAAIu3Y,EAAQp2Z,EAAG6e,GACpFu+B,EAAKh3B,cAAcpmB,EAAG6e,EAAIu3Y,EAAQp2Z,EAAI6lD,EAAKowW,EAAOE,EAAO9mZ,EAAKy2C,EAAKowW,EAAOC,EAAOn2Z,EAAI6lD,EAAIx2C,EAAKy2C,GAC9F1I,EAAKz/B,WACP,IAOE04Y,EAAQr/L,EAAQ6/B,YAAY,CAC9BnyQ,KAAM,QACNgxB,MAAO,CACL1V,EAAG,EACH6e,EAAG,EACH6J,MAAO,EACPC,OAAQ,GAEVs1M,UAAW,SAAU55O,EAAKqxB,GACxB,IAAIiT,EAASjT,EAAMiT,OACfD,EAAQhT,EAAMgT,MACd1oB,EAAI0V,EAAM1V,EACV6e,EAAInJ,EAAMmJ,EACVgnC,EAAKn9B,EAAQ,EAAI,EACrBrkC,EAAI8hC,OAAOnmB,EAAG6e,GACdx6B,EAAI08B,OAAO/gB,EAAI6lD,EAAIhnC,EAAI8J,GACvBtkC,EAAI08B,OAAO/gB,EAAG6e,EAAI8J,EAAS,EAAI,GAC/BtkC,EAAI08B,OAAO/gB,EAAI6lD,EAAIhnC,EAAI8J,GACvBtkC,EAAI08B,OAAO/gB,EAAG6e,GACdx6B,EAAIs5B,WACN,IAOE24Y,EAAc,CAChB5qY,KAAMsrM,EAAQ3vJ,KACdlqD,KAAM65M,EAAQuF,KACd5b,UAAWqW,EAAQuF,KACnBg6L,OAAQv/L,EAAQuF,KAChBl/M,OAAQ25M,EAAQ9sJ,OAChBssV,QAAST,EACTU,IAAKT,EACLU,MAAOL,EACPM,SAAUb,GAERc,EAAoB,CACtBlrY,KAAM,SAAU1rB,EAAG6e,EAAG90B,EAAG/I,EAAG00B,GAE1BA,EAAMsU,GAAKhqB,EACX0V,EAAMuU,GAAKpL,EAAI79B,EAAI,EACnB00B,EAAMyU,GAAKnqB,EAAIjW,EACf2rB,EAAM0U,GAAKvL,EAAI79B,EAAI,CACrB,EACAm8B,KAAM,SAAUnd,EAAG6e,EAAG90B,EAAG/I,EAAG00B,GAC1BA,EAAM1V,EAAIA,EACV0V,EAAMmJ,EAAIA,EACVnJ,EAAMgT,MAAQ3+B,EACd2rB,EAAMiT,OAAS3nC,CACjB,EACA2/N,UAAW,SAAU3gN,EAAG6e,EAAG90B,EAAG/I,EAAG00B,GAC/BA,EAAM1V,EAAIA,EACV0V,EAAMmJ,EAAIA,EACVnJ,EAAMgT,MAAQ3+B,EACd2rB,EAAMiT,OAAS3nC,EACf00B,EAAMzI,EAAI5mB,KAAKyI,IAAI/E,EAAG/I,GAAK,CAC7B,EACAu1a,OAAQ,SAAUv2Z,EAAG6e,EAAG90B,EAAG/I,EAAG00B,GAC5B,IAAI8zD,EAAOnjF,KAAKyI,IAAI/E,EAAG/I,GACvB00B,EAAM1V,EAAIA,EACV0V,EAAMmJ,EAAIA,EACVnJ,EAAMgT,MAAQ8gD,EACd9zD,EAAMiT,OAAS6gD,CACjB,EACAnsD,OAAQ,SAAUrd,EAAG6e,EAAG90B,EAAG/I,EAAG00B,GAE5BA,EAAMtG,GAAKpP,EAAIjW,EAAI,EACnB2rB,EAAMrG,GAAKwP,EAAI79B,EAAI,EACnB00B,EAAMzI,EAAI5mB,KAAKyI,IAAI/E,EAAG/I,GAAK,CAC7B,EACAw1a,QAAS,SAAUx2Z,EAAG6e,EAAG90B,EAAG/I,EAAG00B,GAC7BA,EAAMtG,GAAKpP,EAAIjW,EAAI,EACnB2rB,EAAMrG,GAAKwP,EAAI79B,EAAI,EACnB00B,EAAMgT,MAAQ3+B,EACd2rB,EAAMiT,OAAS3nC,CACjB,EACAy1a,IAAK,SAAUz2Z,EAAG6e,EAAG90B,EAAG/I,EAAG00B,GACzBA,EAAM1V,EAAIA,EAAIjW,EAAI,EAClB2rB,EAAMmJ,EAAIA,EAAI79B,EAAI,EAClB00B,EAAMgT,MAAQ3+B,EACd2rB,EAAMiT,OAAS3nC,CACjB,EACA01a,MAAO,SAAU12Z,EAAG6e,EAAG90B,EAAG/I,EAAG00B,GAC3BA,EAAM1V,EAAIA,EAAIjW,EAAI,EAClB2rB,EAAMmJ,EAAIA,EAAI79B,EAAI,EAClB00B,EAAMgT,MAAQ3+B,EACd2rB,EAAMiT,OAAS3nC,CACjB,EACA21a,SAAU,SAAU32Z,EAAG6e,EAAG90B,EAAG/I,EAAG00B,GAC9BA,EAAMtG,GAAKpP,EAAIjW,EAAI,EACnB2rB,EAAMrG,GAAKwP,EAAI79B,EAAI,EACnB00B,EAAMgT,MAAQ3+B,EACd2rB,EAAMiT,OAAS3nC,CACjB,GAEE61a,EAAqB,CAAC,EAC1BrkM,EAAO56H,KAAK0+T,GAAa,SAAUn4H,EAAMx5S,GACvCkya,EAAmBlya,GAAQ,IAAIw5S,CACjC,IACA,IAAIjpC,EAAYl+B,EAAQ6/B,YAAY,CAClCnyQ,KAAM,SACNgxB,MAAO,CACL4tN,WAAY,GACZtjO,EAAG,EACH6e,EAAG,EACH6J,MAAO,EACPC,OAAQ,GAEVktY,sBAAuB,SAAU/wa,EAAKgH,EAAOqxB,GAC3C,IAAI87C,EAAM48V,EAAsB/wa,EAAKgH,EAAOqxB,GACxCzH,EAAQx1B,KAAKw1B,MAMjB,OAJIA,GAA8B,QAArBA,EAAM4tN,YAA+C,WAAvBx3O,EAAM46C,eAC/CuyB,EAAIp6C,EAAI1B,EAAK0B,EAAkB,GAAd1B,EAAKwL,QAGjBswC,CACT,EACAglK,UAAW,SAAU55O,EAAKqxB,EAAOohZ,GAC/B,IAAIxzL,EAAa5tN,EAAM4tN,WAEvB,GAAmB,SAAfA,EAAuB,CACzB,IAAIyzL,EAAcF,EAAmBvzL,GAEhCyzL,IAEHzzL,EAAa,OACbyzL,EAAcF,EAAmBvzL,IAGnCszL,EAAkBtzL,GAAY5tN,EAAM1V,EAAG0V,EAAMmJ,EAAGnJ,EAAMgT,MAAOhT,EAAMiT,OAAQouY,EAAYrhZ,OACvFqhZ,EAAY94L,UAAU55O,EAAK0ya,EAAYrhZ,MAAOohZ,EAChD,CACF,IAGF,SAASE,EAAmBlmZ,EAAOmmZ,GACjC,GAAkB,UAAd/2a,KAAKwE,KAAkB,CACzB,IAAIwya,EAAch3a,KAAK4L,MACnBqra,EAAcj3a,KAAKw1B,MAEnByhZ,GAA0C,SAA3BA,EAAY7zL,WAC7B4zL,EAAY39Y,OAASzI,EACZ5wB,KAAKk3a,gBACdF,EAAY39Y,OAASzI,EACrBomZ,EAAYjtZ,KAAOgtZ,GAAc,SAGjCC,EAAYjtZ,OAASitZ,EAAYjtZ,KAAO6G,GACxComZ,EAAY39Y,SAAW29Y,EAAY39Y,OAASzI,IAG9C5wB,KAAK2jK,OAAM,EACb,CACF,CAcA,SAAS69E,EAAa4B,EAAYtjO,EAAG6e,EAAG90B,EAAG/I,EAAG8vB,EAAOqsP,GAEnD,IAMI/U,EANAxhK,EAA0C,IAAhC08I,EAAW/rO,QAAQ,SA2BjC,OAzBIqvF,IACF08I,EAAaA,EAAW5oF,OAAO,EAAG,GAAGl7I,cAAgB8jO,EAAW5oF,OAAO,IAMvE0tG,EADqC,IAAnC9kB,EAAW/rO,QAAQ,YACRy/N,EAAQgzL,UAAU1mL,EAAWjhP,MAAM,GAAI,IAAIw1S,EAAa73R,EAAG6e,EAAG90B,EAAG/I,GAAIm8Q,EAAa,SAAW,SAC/D,IAAlC75B,EAAW/rO,QAAQ,WACfy/N,EAAQic,SAAS3P,EAAWjhP,MAAM,GAAI,CAAC,EAAG,IAAIw1S,EAAa73R,EAAG6e,EAAG90B,EAAG/I,GAAIm8Q,EAAa,SAAW,SAEhG,IAAIjI,EAAU,CACzBx/O,MAAO,CACL4tN,WAAYA,EACZtjO,EAAGA,EACH6e,EAAGA,EACH6J,MAAO3+B,EACP4+B,OAAQ3nC,KAKdonQ,EAAWgvK,eAAiBxwU,EAC5BwhK,EAAW5gB,SAAWwvL,EACtB5uK,EAAW5gB,SAAS12N,GACbs3O,CACT,CAEAhnQ,EAAQsgP,aAAeA,C,sBCjTvB,IAAI21L,EAAgB,2BAChBC,EAAO,mBACPC,EAAgB,mBAWpB,SAASr/U,EAASx1F,EAAIkzB,EAAO0kC,GAC3B,IAAIk9W,EAIA1qU,EACAkqT,EACA7jZ,EACAwtV,EANA82E,EAAW,EACXC,EAAW,EACXC,EAAQ,KAOZ,SAASzxa,IACPwxa,GAAW,IAAInjZ,MAAOkiD,UACtBkhW,EAAQ,KACRj1a,EAAGM,MAAMg0Z,EAAO7jZ,GAAQ,GAC1B,CANAyiB,EAAQA,GAAS,EAQjB,IAAIijD,EAAK,WACP2+V,GAAW,IAAIjjZ,MAAOkiD,UACtBugV,EAAQ92Z,KACRiT,EAAOlQ,UACP,IAAI20a,EAAYj3E,GAAoB/qU,EAChCiiZ,EAAel3E,GAAoBrmS,EACvCqmS,EAAmB,KACnB7zP,EAAO0qU,GAAYK,EAAeJ,EAAWC,GAAYE,EACzDz+W,aAAaw+W,GASTE,EACFF,EAAQtzZ,WAAWne,EAAM0xa,GAErB9qU,GAAQ,EACV5mG,IAEAyxa,EAAQtzZ,WAAWne,GAAO4mG,GAI9B2qU,EAAWD,CACb,EAsBA,OAfA3+V,EAAGj2D,MAAQ,WACL+0Z,IACFx+W,aAAaw+W,GACbA,EAAQ,KAEZ,EAMA9+V,EAAG8nR,iBAAmB,SAAUm3E,GAC9Bn3E,EAAmBm3E,CACrB,EAEOj/V,CACT,CA8BA,SAASs+K,EAAez3O,EAAKq4Z,EAAQ1mC,EAAM3wE,GACzC,IAAIh+T,EAAKgd,EAAIq4Z,GAEb,GAAKr1a,EAAL,CAIA,IAAIs1a,EAAWt1a,EAAG20a,IAAkB30a,EAChCu1a,EAAmBv1a,EAAG60a,GACtBW,EAAWx1a,EAAG40a,GAElB,GAAIY,IAAa7mC,GAAQ4mC,IAAqBv3G,EAAc,CAC1D,GAAY,MAAR2wE,IAAiB3wE,EACnB,OAAOhhT,EAAIq4Z,GAAUC,EAGvBt1a,EAAKgd,EAAIq4Z,GAAU7/U,EAAS8/U,EAAU3mC,EAAuB,aAAjB3wE,GAC5Ch+T,EAAG20a,GAAiBW,EACpBt1a,EAAG60a,GAAiB72G,EACpBh+T,EAAG40a,GAAQjmC,CACb,CAEA,OAAO3uY,CAjBP,CAkBF,CAUA,SAASkgB,EAAMlD,EAAKq4Z,GAClB,IAAIr1a,EAAKgd,EAAIq4Z,GAETr1a,GAAMA,EAAG20a,KACX33Z,EAAIq4Z,GAAUr1a,EAAG20a,GAErB,CAEAj2a,EAAQ82F,SAAWA,EACnB92F,EAAQ+1P,eAAiBA,EACzB/1P,EAAQwhB,MAAQA,C,wBC5KhB,IAAIkN,EAAQpH,EAAQ,OAEhBkvF,EAAO9nF,EAAM8nF,KAEb0/H,EAAQ5uN,EAAQ,OAEhBylY,EAAgBzlY,EAAQ,MAExBq8R,EAAYr8R,EAAQ,MAEpB6+P,EAAY7+P,EAAQ,OAEpBgpO,EAAchpO,EAAQ,OAEtBwsY,EAAQxsY,EAAQ,OAEhBysY,EAAaD,EAAMC,WAEnBpmK,EAAsBrmO,EAAQ,MAoB9Bo6P,EAAQyE,EAAU1E,YAClBs1J,EAAgBppL,IAEpB,SAASqpL,IAKPl4a,KAAKk7C,MAAQ,IAAIk8L,EAMjBp3O,KAAK6N,IAAMogZ,EAAcvjE,OAAO,aAChC1qV,KAAK8jZ,WAAamR,EAAW,CAC3BjmK,KAAMmpL,EACN1xU,MAAO2xU,IAETp4a,KAAK8jZ,WAAW/jZ,QAAU,CACxB00O,KAAMz0O,KAEV,CAEAk4a,EAAM3wa,UAAY,CAChB/C,KAAM,QAONkzD,KAAM,SAAUg7K,EAAS/nI,GAAM,EAS/BxrG,OAAQ,SAAUy0O,EAAalB,EAAS/nI,EAAK6oI,GAAU,EASvDizB,UAAW,SAAU7yB,EAAalB,EAAS/nI,EAAK6oI,GAC9C6kM,EAAgBzkM,EAAY7oI,UAAWyoI,EAAS,WAClD,EASA6yB,SAAU,SAAUzyB,EAAalB,EAAS/nI,EAAK6oI,GAC7C6kM,EAAgBzkM,EAAY7oI,UAAWyoI,EAAS,SAClD,EAOA52J,OAAQ,SAAU81J,EAAS/nI,GACzB3qG,KAAKk7C,MAAMigM,WACb,EAOAK,QAAS,WAAa,EAStB7C,yBAA0B,KAU1BE,kBAAmB,KAUnBvD,gBAAiB,KAiBjBwjB,sBAAuB,MAEzB,IAAIw/K,EAAaJ,EAAM3wa,UAavB,SAASgxa,EAAW32a,EAAIwU,EAAO+1Z,GAC7B,GAAIvqa,IACFA,EAAGouG,QAAQ55F,EAAO+1Z,GAEdvqa,EAAG+2P,UACHnH,EAAYqrD,qBAAqBj7S,IACnC,IAAK,IAAIoC,EAAI,EAAGwT,EAAM5V,EAAG42a,aAAcx0a,EAAIwT,EAAKxT,IAC9Cu0a,EAAW32a,EAAGo2P,QAAQh0P,GAAIoS,EAAO+1Z,EAIzC,CAQA,SAASkM,EAAgBp5Z,EAAMu0N,EAASp9N,GACtC,IAAIy9N,EAAYwzC,EAAUyE,eAAe7sQ,EAAMu0N,GAC3C24L,EAAiB34L,GAAmC,MAAxBA,EAAQ40I,aAAuB52H,EAAYi7K,kBAAkBj5L,EAAQ40I,cAAgB,KAEpG,MAAbv0I,EACFn8H,EAAK2vK,EAAUooD,iBAAiB57F,IAAY,SAAU04G,GACpDgsF,EAAWt5Z,EAAK67N,iBAAiByxG,GAAUn2U,EAAO+1Z,EACpD,IAEAltZ,EAAKw8N,mBAAkB,SAAU75O,GAC/B22a,EAAW32a,EAAIwU,EAAO+1Z,EACxB,GAEJ,CAaA,SAASgM,EAAep4a,GACtB,OAAOk4a,EAAcl4a,EAAQwxP,MAC/B,CAEA,SAAS6mL,EAAgBr4a,GACvB,IAAI6zO,EAAc7zO,EAAQwxP,MACtB7e,EAAU3yO,EAAQ2yO,QAClB/nI,EAAM5qG,EAAQ4qG,IACd6oI,EAAUzzO,EAAQyzO,QAElBuvC,EAAoBnvC,EAAYoF,gBAAgB+pC,kBAChDtuC,EAAO10O,EAAQ00O,KACfuV,EAAexW,GAAWovC,EAAMpvC,GAASwW,aACzC+vG,EAAah3E,EAAoB,2BAA6B/4B,GAAgBvV,EAAKuV,GAAgBA,EAErG,SAMF,MAJmB,WAAf+vG,GACFtlH,EAAKslH,GAAYnmH,EAAalB,EAAS/nI,EAAK6oI,GAGvCilM,EAAkB1+E,EAC3B,CA9EAu+E,EAAW/2G,WAAa+2G,EAAWt+K,aAAes+K,EAAWj2B,aAAe,SAAUzuK,EAAalB,EAAS/nI,EAAK6oI,GAC/GxzO,KAAKb,OAAOy0O,EAAalB,EAAS/nI,EAAK6oI,EACzC,EA4CAqxE,EAAU4D,kBAAkByvH,EAAO,CAAC,YAEpCrzH,EAAUqpG,sBAAsBgqB,EAAO,CACrCtpB,oBAAoB,IAGtBspB,EAAM91B,iBAAmB,SAAU5uK,EAASumH,GAC1Cn3E,EAAMpvC,GAASwW,aAAe+vG,CAChC,EA0BA,IAAI0+E,EAAoB,CACtB9/L,yBAA0B,CACxBn7F,SAAU,SAAU57H,EAAQ7hB,GAC1BA,EAAQ00O,KAAKoE,kBAAkBj3N,EAAQ7hB,EAAQwxP,MAAOxxP,EAAQ2yO,QAAS3yO,EAAQ4qG,IAAK5qG,EAAQyzO,QAC9F,GAEFr0O,OAAQ,CAKNwka,oBAAoB,EACpBnmR,SAAU,SAAU57H,EAAQ7hB,GAC1BA,EAAQ00O,KAAKt1O,OAAOY,EAAQwxP,MAAOxxP,EAAQ2yO,QAAS3yO,EAAQ4qG,IAAK5qG,EAAQyzO,QAC3E,IAGA/lN,EAAWyqZ,EACf/2a,EAAOD,QAAUusB,C,wBCzQjB,IAAI2pN,EAAQ5uN,EAAQ,OAEhBylY,EAAgBzlY,EAAQ,MAExBq8R,EAAYr8R,EAAQ,MAoBpBkzT,EAAY,WAKd17U,KAAKk7C,MAAQ,IAAIk8L,EAMjBp3O,KAAK6N,IAAMogZ,EAAcvjE,OAAO,gBAClC,EAEAhP,EAAUn0U,UAAY,CACpB2F,YAAawuU,EACbhkR,KAAM,SAAUg7K,EAAS/nI,GAAM,EAC/BxrG,OAAQ,SAAUg1O,EAAgBzB,EAAS/nI,EAAK6oI,GAAU,EAC1DgI,QAAS,WAAa,EAStBsd,sBAAuB,MAEzB,IAAI4/K,EAAiBh9F,EAAUn0U,UAE/Bmxa,EAAen3G,WAAam3G,EAAe1+K,aAAe0+K,EAAer2B,aAAe,SAAUzuK,EAAalB,EAAS/nI,EAAK6oI,GAAU,EAIvIqxE,EAAU4D,kBAAkBizB,GAE5B72B,EAAUqpG,sBAAsBxyE,EAAW,CACzCkzE,oBAAoB,IAEtB,IAAInhY,EAAWiuT,EACfv6U,EAAOD,QAAUusB,C,oBCxCjB,SAASotO,EAAqB89K,EAA0B19K,GACtDj7P,KAAKqyV,YAAc,WACjB,IAAIlkD,EAAUlzC,IAGd,OAAOkzC,EAAQxwC,SAASwwC,EAAQr6D,QAClC,EAEA9zO,KAAKu0V,YAAc,SAAU9vV,GAC3B,IAAI0pS,EAAUlzC,IACd,OAAOkzC,EAAQjZ,YAAYzwR,IAAS,CACtC,EAEAzE,KAAKk1R,YAAc,SAAUzwR,GAI3B,IAAIm0a,EAAwBD,IAC5B,OAAOC,EAAsB1jJ,YAAYzwR,EAC3C,EAEAzE,KAAKq9O,cAAgB,SAAUxJ,EAAWhwO,GAExC,IAAI+0a,EAAwBD,IAC5B,OAAOC,EAAsBv7L,cAAcxJ,EAAWhwO,EACxD,CACF,CAEA,IAAI4pB,EAAWotO,EACf15P,EAAOD,QAAUusB,C,iCCtDjB,IAAI6kN,EAAS9pN,EAAQ,OAEjB45R,EAAU55R,EAAQ,MAElBi5N,EAAUj5N,EAAQ,OAElB60O,EAAY5b,EAAQ4b,UAoBpB3lJ,EAAO46H,EAAO56H,KACdp2G,EAAWgxO,EAAOhxO,SAClBu3a,GAAiC,EA8BjCrzI,EAAgB,SAAUz6P,GAC5B,IAAI06P,EAAgB16P,EAAO06P,cACvBpvC,EAAatrN,EAAOvmC,KAMpBo8T,EAAa5gU,KAAK+qC,OAASunM,EAAOh+M,MAAMyW,GAM5C/qC,KAAKwE,KAAO6xP,EAMZr2P,KAAKylS,cAAgBA,EAMrBzlS,KAAK84a,eAAiBC,EAAYtzI,GAClC,IAAIuzI,EAAgBxZ,EAAenpK,GAMnCr2P,KAAK0lU,YAAcszG,EAActzG,YAMjC1lU,KAAK2yQ,eAAiBqmK,EAAcrmK,eAMpC3yQ,KAAKi5a,OAASD,EAAcC,OAAOxzI,GAEb,cAAlBA,GACFyzI,EAAqBt4G,GACrBu4G,EAAuBv4G,IACI,aAAlBn7B,EACTm7B,EAAWv8D,WAAa+0K,EAA+Bx4G,GAErDs4G,EAAqBt4G,GAAY,IAGnCtuF,EAAOkrJ,OAAyB,WAAlB/3F,GAA8Bm7B,EAAWziE,YACvD+6K,EAAqBt4G,GAEzB,EAEAp7B,EAAcj+R,UAAY,CACxB2F,YAAas4R,EACbG,iBAAkB,SAAU7jS,GAC1B,IAAIu3a,EAAar5a,KAAK84a,eAAeh3a,GAErC,OAAO9B,KAAKi5a,OAAOI,EAAYv3a,EACjC,EACA4wQ,cAAe,WACb,OAAOpgC,EAAOv1N,KAAK/c,KAAK84a,eAAgB94a,KAC1C,GAEF,IAAIw/Z,EAAiBh6H,EAAcg6H,eAAiB,CAClD5uY,MAAO,CACL80S,YAAa4zG,EAAgB,SAM7B3mK,eAAgB,WACd,IAAIiuD,EAAa5gU,KAAK+qC,OACtB,OAAOunM,EAAOv1N,KAAkC,aAA7B6jT,EAAWn7B,cAA+B,SAAU3jS,EAAOy3a,GAE5E,OADCA,IAAiBz3a,EAAQ9B,KAAK84a,eAAeh3a,IACvC03a,EAAcn5a,KAAKL,KAAM8B,EAClC,EAAI,SAAUA,EAAOy3a,EAAc30a,GAGjC,IAAI60a,IAAmB70a,EAGvB,OAFC20a,IAAiBz3a,EAAQ9B,KAAK84a,eAAeh3a,IAC9C8C,EAAMw9S,EAAQs3H,SAAS53a,EAAO8+T,EAAW+4G,aAAc/0a,GAChD60a,EAAiB70a,EAAMw9S,EAAQvxS,UAAUjM,EAAK,OACvD,EAAG5E,KACL,EACAi5a,OAAQ,CACNzoW,OAAQ,SAAU6oW,GAChB,OAAOj3H,EAAQvxS,UAAUuxS,EAAQs3H,SAASL,EAAYr5a,KAAK+qC,OAAO4uY,cAAe,OACnF,EACAr1K,SAAUk1K,EACVI,UAAW,SAAUP,EAAYv3a,GAC/B,IAAI4B,EAASm2a,EAAmBx5a,KAAKL,KAAM8B,GAM3C,OAJc,MAAV4B,IACFA,EAAS0+S,EAAQvxS,UAAUuxS,EAAQs3H,SAASL,EAAYr5a,KAAK+qC,OAAO4uY,cAAe,SAG9Ej2a,CACT,EACAypQ,MAAO2sK,IAGXC,SAAUC,GAA8B,SAAUppZ,EAAO9uB,GACvD,OAAOsgT,EAAQe,UAAUvyR,EAAO9uB,EAClC,IACAw0S,gBAAiB0jI,GAA8B,SAAUppZ,EAAO9uB,GAC9D,OAAOsgT,EAAQe,UAAUvyR,EAAO,KAAM9uB,EACxC,IACAm4a,eAAgBD,GAA8B,SAAUppZ,EAAO9uB,GAC7D,OAAOsgT,EAAQe,UAAUvyR,EAAO,KAAM,KAAM9uB,EAC9C,IACAu0S,WAAY2jI,GAA8B,SAAUppZ,EAAO9uB,GACzD,OAAOsgT,EAAQgB,YAAYxyR,EAAO9uB,EACpC,IACAw3B,QAAS,CACPosS,YAAa4zG,EAAgB,WAC7BL,OAAQiB,EAAU,CAAC,EAAG,KAExBh8J,MAAO,CACLwnD,YAAa4zG,EAAgB,SAC7BL,OAAQ,CACNzoW,OAAQspW,EACRx1K,SAAUw1K,EACVF,UAAWE,EACX3sK,MAAO2sK,IAGX73Z,OAAQ,CACNyjT,YAAa,SAAU5jU,EAAO8W,EAAQvH,GACpC,IAAI8oa,EAAYn6a,KAAK2lS,iBAAiB7jS,GAEtC,GAAIwwO,EAAOohF,SAASymH,GAClB9oa,EAAO,SAAU8oa,QACZ,GAAI74a,EAAS64a,GAClB,IAAK,IAAI11a,KAAQ01a,EACXA,EAAU7za,eAAe7B,IAC3B4M,EAAO5M,EAAM01a,EAAU11a,GAI/B,EACAw0a,OAAQ,CACNzoW,OAAQ4pW,EACR91K,SAAUk1K,EACVI,UAAW,SAAUP,EAAYv3a,GAC/B,IAAI4B,EAASm2a,EAAmBx5a,KAAKL,KAAM8B,GAM3C,OAJc,MAAV4B,IACFA,EAAS02a,EAAa/5a,KAAKL,KAAMq5a,IAG5B31a,CACT,EACAypQ,MAAO2sK,IAGXl5L,WAAY,CACV8kF,YAAa4zG,EAAgB,cAC7BL,OAAQiB,EAAU,CAAC,EAAG,MAI1B,SAASf,EAAuBv4G,GAC9B,IAAIrwD,EAAYqwD,EAAWrwD,UAC3BqwD,EAAWy5G,kBAAmB,EAC9B/nM,EAAO56H,KAAK64J,GAAW,SAAUE,EAAOxuQ,GACtCwuQ,EAAM6pK,YAAcr4a,EAGA,MAAhBwuQ,EAAMxb,SACR2rE,EAAWy5G,kBAAmB,EAElC,GACF,CAEA,SAASjB,EAA+Bx4G,GAEtC,IAAIv8D,EAAau8D,EAAWv8D,WACxBpP,EAAS2rE,EAAW3rE,OACpBslL,EAAc35G,EAAW25G,YAAc,CAAC,EAK5C,GAJA7iU,EAAK2sJ,GAAY,SAAUkgH,EAAMtiX,GAC/Bs4a,EAAYh2D,GAAQtiX,CACtB,KAEKqwO,EAAOxrO,QAAQmuP,GAAS,CAC3B,IAAIulL,EAAY,GAEZloM,EAAOhxO,SAAS2zP,GAClBv9I,EAAKu9I,GAAQ,SAAUjtO,EAAGu8V,GACxB,IAAItiX,EAAQs4a,EAAYh2D,GACxBi2D,EAAmB,MAATv4a,EAAgBA,EAAQ42a,GAAiC7wZ,CACrE,IAGAwyZ,EAAU3B,GAAiC5jL,EAG7CA,EAASwlL,EAAkB75G,EAAY45G,EACzC,CAIA,IAAK,IAAIx2a,EAAIqgQ,EAAWriQ,OAAS,EAAGgC,GAAK,EAAGA,IACzB,MAAbixP,EAAOjxP,YACFu2a,EAAYl2K,EAAWrgQ,IAC9BqgQ,EAAW5rO,MAGjB,CAEA,SAASygZ,EAAqBt4G,EAAYgjD,GACxC,IAAI3uH,EAAS2rE,EAAW3rE,OACpBulL,EAAY,GAEZloM,EAAOhxO,SAAS2zP,GAClBv9I,EAAKu9I,GAAQ,SAAUjtO,GACrBwyZ,EAAUv2a,KAAK+jB,EACjB,IACmB,MAAVitO,GACTulL,EAAUv2a,KAAKgxP,GAGjB,IAAIylL,EAAgB,CAClB9pZ,MAAO,EACP3O,OAAQ,GAGL2hW,GAAmC,IAArB42D,EAAUx4a,QAAiB04a,EAAcp0a,eAAes6T,EAAWp8T,QAEpFg2a,EAAU,GAAKA,EAAU,IAG3BC,EAAkB75G,EAAY45G,EAChC,CAEA,SAASR,EAA8BW,GACrC,MAAO,CACLj1G,YAAa,SAAU5jU,EAAO8W,EAAQvH,GACpCvP,EAAQ9B,KAAK2lS,iBAAiB7jS,GAE9BuP,EAAO,QAASspa,EAAW/ha,EAAO,SAAU9W,GAC9C,EACAm3a,OAAQiB,EAAU,CAAC,EAAG,IAE1B,CAEA,SAASE,EAAaf,GACpB,IAAIpkL,EAASj1P,KAAK+qC,OAAOkqN,OACzB,OAAOA,EAAO9uP,KAAKugF,MAAM22K,EAAUg8K,EAAY,CAAC,EAAG,GAAI,CAAC,EAAGpkL,EAAOjzP,OAAS,IAAI,MAAW,CAAC,CAC7F,CAEA,SAASs3a,EAAgBjjL,GACvB,OAAO,SAAUv0P,EAAO8W,EAAQvH,GAC9BA,EAAOglP,EAAYr2P,KAAK2lS,iBAAiB7jS,GAC3C,CACF,CAEA,SAAS03a,EAAcH,GACrB,IAAIpkL,EAASj1P,KAAK+qC,OAAOkqN,OACzB,OAAOA,EAAOj1P,KAAK+qC,OAAOuoO,MAAQ+lK,IAAeR,EAAgCQ,EAAapkL,EAAOjzP,OAASq3a,EAChH,CAEA,SAASS,IACP,OAAO95a,KAAK+qC,OAAOkqN,OAAO,EAC5B,CAEA,SAASilL,EAAUU,GACjB,MAAO,CACLpqW,OAAQ,SAAU6oW,GAChB,OAAOh8K,EAAUg8K,EAAYuB,EAAc56a,KAAK+qC,OAAOkqN,QAAQ,EACjE,EACAqP,SAAUk1K,EACVI,UAAW,SAAUP,EAAYv3a,GAC/B,IAAI4B,EAASm2a,EAAmBx5a,KAAKL,KAAM8B,GAM3C,OAJc,MAAV4B,IACFA,EAAS25P,EAAUg8K,EAAYuB,EAAc56a,KAAK+qC,OAAOkqN,QAAQ,IAG5DvxP,CACT,EACAypQ,MAAO2sK,EAEX,CAEA,SAASD,EAAmB/3a,GAC1B,IAAI8+T,EAAa5gU,KAAK+qC,OAClBwlO,EAAYqwD,EAAWrwD,UAE3B,GAAIqwD,EAAWy5G,iBAAkB,CAC/B,IAAIp2D,EAAaz+E,EAAcw+E,eAAeliX,EAAOyuQ,GACjDE,EAAQF,EAAU0zG,GAEtB,GAAIxzG,GAASA,EAAMxb,OACjB,OAAOwb,EAAMxb,OAAOj1P,KAAKwE,KAE7B,CACF,CAEA,SAASi2a,EAAkB75G,EAAY45G,GASrC,OARA55G,EAAW3rE,OAASulL,EAEI,UAApB55G,EAAWp8T,OACbo8T,EAAW+4G,aAAernM,EAAO5oN,IAAI8wZ,GAAW,SAAUh1Z,GACxD,OAAO48R,EAAQx1R,MAAMpH,EACvB,KAGKg1Z,CACT,CAMA,IAAIzB,EAAc,CAChBvoW,OAAQ,SAAU1uE,GAChB,OAAOu7P,EAAUv7P,EAAO9B,KAAK+qC,OAAOozN,WAAY,CAAC,EAAG,IAAI,EAC1D,EACAy7K,UAAW,SAAU93a,GACnB,IAAIyuQ,EAAYvwQ,KAAK+qC,OAAOwlO,UACxB0zG,EAAaz+E,EAAcw+E,eAAeliX,EAAOyuQ,GAAW,GAEhE,GAAkB,MAAd0zG,EACF,OAAO5mH,EAAU4mH,EAAY,CAAC,EAAG1zG,EAAUvuQ,OAAS,GAAI,CAAC,EAAG,IAAI,EAEpE,EACAsiQ,SAAU,SAAUxiQ,GAClB,IAAIG,EAAQjC,KAAK+qC,OAAOs5N,WAAarkQ,KAAK+qC,OAAOwvY,YAAYz4a,GAASA,EAEtE,OAAgB,MAATG,EAAgB42a,EAAgC52a,CACzD,EACAkrQ,MAAO76B,EAAOj1C,MA2LhB,SAASssL,EAAWz9W,EAAOvJ,EAAGC,GAC5B,OAAOsJ,EAAQvJ,GAAKC,EAAID,EAAIC,CAC9B,CApLA4iS,EAAcm+E,gBAAkB,WAC9B,IAAID,EAAc,GAIlB,OAHApxI,EAAO56H,KAAK8nT,GAAgB,SAAU/9Y,EAAS5d,GAC7C6/W,EAAYz/W,KAAKJ,EACnB,IACO6/W,CACT,EAMAl+E,EAAcq1I,iBAAmB,SAAUp2a,EAAMgd,GAC/C+9Y,EAAe/6Z,GAAQgd,CACzB,EAMA+jR,EAAcyhF,YAAc,SAAU5wH,GACpC,OAAOmpK,EAAel5Z,eAAe+vP,EACvC,EASAmvC,EAAcqgF,WAAa,SAAU5wH,EAAQpzO,EAAU9hB,GACjDuyO,EAAOhxO,SAAS2zP,GAClB3iB,EAAO56H,KAAKu9I,EAAQpzO,EAAU9hB,GAE9B8hB,EAASxhB,KAAKN,EAASk1P,EAE3B,EAEAuwC,EAAcjS,UAAY,SAAUt+B,EAAQpzO,EAAU9hB,GACpD,IAAI+6a,EACAC,EAAYzoM,EAAOxrO,QAAQmuP,GAAU,GAAK3iB,EAAOhxO,SAAS2zP,GAAU,CAAC,GAAK6lL,GAAY,EAAM,MAKhG,OAJAt1I,EAAcqgF,WAAW5wH,GAAQ,SAAUjtO,EAAGnkB,GAC5C,IAAIkqW,EAASlsV,EAASxhB,KAAKN,EAASioB,EAAGnkB,GACvCi3a,EAAYC,EAAYhtE,EAASgtE,EAAUl3a,GAAOkqW,CACpD,IACOgtE,CACT,EASAv1I,EAAcq/E,gBAAkB,SAAUrlW,GACxC,IACIw7Z,EADAlmW,EAAM,CAAC,EAQX,OANAt1D,GAAOk4F,EAAK8nT,GAAgB,SAAU1+Z,EAAGu1P,GACnC72O,EAAIlZ,eAAe+vP,KACrBvhL,EAAIuhL,GAAc72O,EAAI62O,GACtB2kL,GAAY,EAEhB,IACOA,EAAYlmW,EAAM,IAC3B,EAWA0wN,EAAckiF,mBAAqB,SAAUhE,GAC3C,GAAIpiX,EAASoiX,GAAc,CACzB,IAAIvtS,EAAQ,GACZuhC,EAAKgsQ,GAAa,SAAUl+V,EAAMhhB,GAChC2xE,EAAMlyE,KAAKO,EACb,IACAk/W,EAAcvtS,CAChB,KAAO,KAAIm8J,EAAOxrO,QAAQ48W,GAGxB,MAAO,GAFPA,EAAcA,EAAYvhX,OAG5B,CAOA,OALAuhX,EAAY79V,MAAK,SAAUo1Z,EAAOC,GAGhC,MAAiB,UAAVA,GAA+B,UAAVD,GAAgD,IAA3BA,EAAM5ja,QAAQ,SAAiB,GAAK,CACvF,IACOqsW,CACT,EAYAl+E,EAAcqiF,UAAY,SAAUszD,EAAaC,GAC/C,MAAuB,UAAhBA,KAA6BD,GAAoD,IAArCA,EAAY9ja,QAAQ+ja,IAAsBD,IAAgBC,CAC/G,EAUA51I,EAAcw+E,eAAiB,SAAUliX,EAAOyuQ,EAAW8qK,GAIzD,IAHA,IAAIC,EACAtyZ,EAAM6pE,IAED7uF,EAAI,EAAGwT,EAAM+4P,EAAUvuQ,OAAQgC,EAAIwT,EAAKxT,IAAK,CACpD,IAAIu3a,EAAahrK,EAAUvsQ,GAAGlC,MAE9B,GAAkB,MAAdy5a,EAAoB,CACtB,GAAIA,IAAez5a,GAKM,kBAAfy5a,GAA2BA,IAAez5a,EAAQ,GAC1D,OAAOkC,EAGTq3a,GAA0BG,EAAeD,EAAYv3a,EACvD,CACF,CAEA,IAASA,EAAI,EAAGwT,EAAM+4P,EAAUvuQ,OAAQgC,EAAIwT,EAAKxT,IAAK,CACpD,IAAIysQ,EAAQF,EAAUvsQ,GAClB8pC,EAAW2iO,EAAM3iO,SACjB5hC,EAAQukQ,EAAMvkQ,MAElB,GAAI4hC,EAAU,CACZ,GAAIA,EAAS,MAAQ+kD,KACnB,GAAI82R,EAAWz9W,EAAM,GAAIpK,EAAOgsC,EAAS,IACvC,OAAO9pC,OAEJ,GAAI8pC,EAAS,KAAO+kD,KACzB,GAAI82R,EAAWz9W,EAAM,GAAI4hC,EAAS,GAAIhsC,GACpC,OAAOkC,OAEJ,GAAI2lX,EAAWz9W,EAAM,GAAI4hC,EAAS,GAAIhsC,IAAU6nX,EAAWz9W,EAAM,GAAIpK,EAAOgsC,EAAS,IAC1F,OAAO9pC,EAGTq3a,GAA0BG,EAAe1tY,EAAS,GAAI9pC,GACtDq3a,GAA0BG,EAAe1tY,EAAS,GAAI9pC,EACxD,CACF,CAEA,GAAIq3a,EACF,OAAOv5a,IAAU+wF,IAAW09K,EAAUvuQ,OAAS,EAAIF,KAAW+wF,IAAW,EAAIyoV,EAG/E,SAASE,EAAexsa,EAAK/M,GAC3B,IAAIw5a,EAASt1a,KAAK6iB,IAAIha,EAAMlN,GAExB25a,EAASzyZ,IACXA,EAAMyyZ,EACNH,EAAYr5a,EAEhB,CACF,EAMA,IAAIwrB,EAAW+3Q,EACfrkS,EAAOD,QAAUusB,C,iCC/kBjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBgpU,EAAOhpU,EAAQ,OAEfw6P,EAAgBx6P,EAAQ,OAExBy6P,EAAmBD,EAAcC,iBAoBrC,SAASx1P,EAASmd,EAAK8nM,GACrB,IAAIgpM,EAAYhpM,EAAQ8G,SAAS,QAEjC,GAAKkiM,EAAUx4a,IAAI,QAEZ,GAAIw4a,EAAUx4a,IAAI,eACvB0nC,EAAIna,aAAa,aAAcirZ,EAAUx4a,IAAI,oBADxC,CAKP,IAAIy4a,EAAY,EAChBjpM,EAAQy/E,YAAW,SAAUv+E,EAAazsI,KACtCw0U,CACJ,GAAG37a,MACH,IAGI47a,EAHAC,EAAaH,EAAUx4a,IAAI,kBAAoB,GAC/C44a,EAAeJ,EAAUx4a,IAAI,oBAAsB,GACnD64a,EAAmB51a,KAAKyI,IAAI+sa,EAAWG,GAG3C,KAAIH,EAAY,GAAhB,CAIE,IAAIrwY,EAAQ0wY,IAGVJ,EADEtwY,EACU1vB,EAAQqga,EAAU,qBAAsB,CAClD3wY,MAAOA,IAGG2wY,EAAU,wBAGxB,IAAIC,EAAe,GACfl5T,EAAS24T,EAAY,EAAI,yBAA2B,uBACxDC,GAAahga,EAAQqga,EAAUj5T,GAAS,CACtC8nI,YAAa6wL,IAEfjpM,EAAQy/E,YAAW,SAAUv+E,EAAazsI,GACxC,GAAIA,EAAM40U,EAAkB,CAC1B,IAAII,EACA9mL,EAAazhB,EAAY1wO,IAAI,QAC7Bk5a,EAAY,WAAaT,EAAY,EAAI,WAAa,UAAY,IACtEQ,EAAcF,EAAU5mL,EAAa+mL,EAAY,WAAaA,EAAY,eAC1ED,EAAcvga,EAAQuga,EAAa,CACjCpoM,SAAUH,EAAY8K,YACtB2W,WAAYzhB,EAAY1wO,IAAI,QAC5BkwO,WAAYipM,EAAkBzoM,EAAYD,WAE5C,IAAI10N,EAAO20N,EAAY7oI,UACvB7kG,OAAO+Y,KAAOA,EAEVA,EAAKsJ,QAAUszZ,EAEjBM,GAAevga,EAAQqga,EAAU,oBAAqB,CACpDK,WAAYT,IAGdM,GAAeF,EAAU,gBAK3B,IAFA,IAAIM,EAAa,GAERv4a,EAAI,EAAGA,EAAIib,EAAKsJ,QAASvkB,IAChC,GAAIA,EAAI63a,EAAY,CAClB,IAAIp3a,EAAOwa,EAAK60N,QAAQ9vO,GACpBlC,EAAQmhR,EAAiBhkQ,EAAMjb,GACnCu4a,EAAWt4a,KAAK2X,EAAeqga,EAAPx3a,EAAiB,gBAA6B,oBAAqB,CACzFA,KAAMA,EACN3C,MAAOA,IAEX,CAGFq6a,GAAeI,EAAWzxa,KAAKmxa,EAAU,0BAA4BA,EAAU,sBAC/EC,EAAaj4a,KAAKk4a,EACpB,CACF,IACAP,GAAaM,EAAapxa,KAAKmxa,EAAU,qCAAuCA,EAAU,iCAC1FrxY,EAAIna,aAAa,aAAcmrZ,EACjC,CAxEA,CA0EA,SAAShga,EAAQs4D,EAAKsoW,GACpB,GAAmB,kBAARtoW,EACT,OAAOA,EAGT,IAAIxwE,EAASwwE,EAIb,OAHAo+J,EAAO56H,KAAK8kU,GAAW,SAAU16a,EAAO+B,GACtCH,EAASA,EAAOkY,QAAQ,IAAIq6D,OAAO,UAAYpyE,EAAM,UAAW,KAAM/B,EACxE,IACO4B,CACT,CAEA,SAASu4a,EAAU/+W,GACjB,IAAIu/W,EAAaf,EAAUx4a,IAAIg6D,GAE/B,GAAkB,MAAdu/W,EAAoB,CAItB,IAHA,IAAIjqB,EAAUt1V,EAAK55D,MAAM,KACrBI,EAAS8tV,EAAKyqD,KAETj4Y,EAAI,EAAGA,EAAIwuZ,EAAQxwZ,SAAUgC,EACpCN,EAASA,EAAO8uZ,EAAQxuZ,IAG1B,OAAON,CACT,CACE,OAAO+4a,CAEX,CAEA,SAAST,IACP,IAAI1wY,EAAQonM,EAAQ8G,SAAS,SAASzuM,OAMtC,OAJIO,GAASA,EAAMtpC,SACjBspC,EAAQA,EAAM,IAGTA,GAASA,EAAM3O,IACxB,CAEA,SAAS0/Y,EAAkB73a,GACzB,OAAOgtV,EAAKxlT,OAAOs9W,UAAU9kZ,IAAS,MACxC,CACF,CAEArD,EAAOD,QAAUusB,C,wBCxJjB,IAAImC,EAAQpH,EAAQ,OAEhB2rQ,EAAgBvkQ,EAAMukQ,cAuB1B,SAAS1mQ,EAAS2lN,GAChB,MAAO,CACL6lG,gBAAiB,SAAUvmG,GAEzB,IAAIs4B,EAAe,CAAC,EAChB0xK,EAAiBvoJ,IAKrB,OAJAzhD,EAAQkY,iBAAiBxX,GAAY,SAAUQ,GAC7CA,EAAY+oM,eAAiB3xK,EAC7B0xK,EAAelqa,IAAIohO,EAAY/lO,IAAK+lO,EACtC,IACO8oM,CACT,EACAj2U,MAAO,SAAUmtI,EAAalB,GAC5B,IAAIkqM,EAAUhpM,EAAYqnB,aACtBmzC,EAAS,CAAC,EACVnvR,EAAO20N,EAAY7oI,UACvB9rF,EAAKy4F,MAAK,SAAUvQ,GAClB,IAAIi3P,EAASn/U,EAAK02O,YAAYxuJ,GAC9BinM,EAAOgwD,GAAUj3P,CACnB,IACAy1U,EAAQllU,MAAK,SAAU0mP,GACrB,IAIIhkH,EAJAyiM,EAAczuI,EAAOgwD,GAErB0+E,EAAiC,MAAfD,GAAuB59Z,EAAKo+N,cAAcw/L,EAAa,SAAS,GAClFE,EAAuC,MAAfF,GAAuB59Z,EAAKo+N,cAAcw/L,EAAa,eAAe,GAQlG,GALKC,GAAoBC,IAEvB3iM,EAAYwiM,EAAQviM,aAAa+jH,KAG9B0+E,EAAiB,CACpB,IAAIlsZ,EAAQwpN,EAAUl3O,IAAI,oBAAsB0wO,EAAYs3B,oBAAoB0xK,EAAQ9oM,QAAQsqH,IAAWA,EAAS,GAAIxqH,EAAY+oM,eAAgBC,EAAQr0Z,SAEzI,MAAfs0Z,GACF59Z,EAAK2tO,cAAciwL,EAAa,QAASjsZ,EAE7C,CAEA,IAAKmsZ,EAAuB,CAC1B,IAAIl5M,EAAcuW,EAAUl3O,IAAI,yBAEb,MAAf25a,GACF59Z,EAAK2tO,cAAciwL,EAAa,cAAeh5M,EAEnD,CACF,GACF,EAEJ,CAEA1iO,EAAOD,QAAUusB,C,wBC7EjB,IAAIuvZ,EAAWx0Z,EAAQ,OAEnBoH,EAAQpH,EAAQ,OAEhBmrS,EAAa/jS,EAAM+jS,WAoBnBlmS,EAAW,CACbg7V,mBAAmB,EACnB13H,kBAAkB,EAClBtqJ,MAAO,SAAUmtI,EAAalB,GAC5B,IAAIzzN,EAAO20N,EAAY7oI,UACnBkyU,GAAmBrpM,EAAYo9C,uBAAyB,mBAAmB1tR,MAAM,KAEjFstB,EAAQgjN,EAAY1wO,IAAI+5a,GACxBC,GAAgBvpH,EAAW/iS,IAAYA,aAAiBosZ,EAAoB,KAARpsZ,EAEnEA,IAASssZ,IACZtsZ,EAAQgjN,EAAYs3B,oBACpBt3B,EAAYnvO,KAAM,KAAMiuO,EAAQ6+K,mBAGlCtyY,EAAK+2N,UAAU,QAASplN,GACxB,IAAIusZ,GAAyBvpM,EAAYshL,6BAA+B,yBAAyB5xZ,MAAM,KACnGugO,EAAc+P,EAAY1wO,IAAIi6a,GAGlC,GAFAl+Z,EAAK+2N,UAAU,cAAenS,IAEzB6O,EAAQia,iBAAiB/Y,GAAc,CACtCspM,GACFj+Z,EAAKy4F,MAAK,SAAUvQ,GAClBloF,EAAK2tO,cAAczlJ,EAAK,QAAS+1U,EAActpM,EAAY4kB,cAAcrxJ,IAC3E,IAIF,IAAIksL,EAAW,SAAUp0Q,EAAMkoF,GAC7B,IAAIizI,EAAYn7N,EAAKo7N,aAAalzI,GAC9Bv2E,EAAQwpN,EAAUl3O,IAAI+5a,GAAiB,GACvCp5M,EAAcuW,EAAUl3O,IAAIi6a,GAAuB,GAE1C,MAATvsZ,GACF3R,EAAK2tO,cAAczlJ,EAAK,QAASv2E,GAGhB,MAAfizM,GACF5kN,EAAK2tO,cAAczlJ,EAAK,cAAe08H,EAE3C,EAEA,MAAO,CACLwvD,SAAUp0Q,EAAK0yP,cAAgB0hB,EAAW,KAE9C,CACF,GAEFlyR,EAAOD,QAAUusB,C,wBCxEjB,IAAImC,EAAQpH,EAAQ,OAEhBmrS,EAAa/jS,EAAM+jS,WAoBvB,SAASlmS,EAAS2lN,EAAYgqM,EAAmB1wL,GAE/C,MAAO,CACLtZ,WAAYA,EAEZ2d,kBAAkB,EAClBtqJ,MAAO,SAAUmtI,EAAalB,EAAS/nI,GACrC,IAAI1rF,EAAO20N,EAAY7oI,UACnBq4I,EAAaxP,EAAY1wO,IAAI,UAC7B09O,EAAahN,EAAY1wO,IAAI,cAC7B+5Q,EAAarpC,EAAY1wO,IAAI,oBAC7B29O,EAAejN,EAAY1wO,IAAI,gBAC/Bm6a,EAAwB1pH,EAAWvwE,GACnCk6L,EAAwB3pH,EAAW/yE,GACnC28L,EAA0B5pH,EAAW9yE,GACrC28L,EAAcH,GAAyBC,GAAyBC,EAChEE,GAAgBJ,GAAyBj6L,EAAaA,EAAag6L,EACnEM,EAAoBJ,EAAqC,KAAb18L,EAchD,GAZA3hO,EAAK+2N,UAAU,CACb0W,aAAcA,GAAgB+wL,EAK9Bx7Z,OAAQw7Z,EACR78L,WAAY88L,EACZ7oF,iBAAkB53E,EAClBp8B,aAAcA,KAGZnO,EAAQia,iBAAiB/Y,GAuC7B,MAAO,CACLy/C,SAAUp0Q,EAAK0yP,eAAiB6rK,EAAcnqJ,EAAW,MApC3D,SAASA,EAASp0Q,EAAMkoF,GACtB,GAAIq2U,EAAa,CACf,IAAI5rK,EAAWh+B,EAAYi+B,YAAY1qK,GACnCvlF,EAASgyN,EAAY4kB,cAAcrxJ,GACvCk2U,GAAyBp+Z,EAAK2tO,cAAczlJ,EAAK,SAAUi8I,EAAWwuB,EAAUhwP,IAChF07Z,GAAyBr+Z,EAAK2tO,cAAczlJ,EAAK,aAAcy5I,EAAWgxB,EAAUhwP,IACpF27Z,GAA2Bt+Z,EAAK2tO,cAAczlJ,EAAK,eAAgB05I,EAAa+wB,EAAUhwP,GAC5F,CAEA,GAAI3C,EAAK0yP,cAAe,CACtB,IAAIv3B,EAAYn7N,EAAKo7N,aAAalzI,GAC9Bw2U,EAAiBvjM,EAAUsD,WAAW,UAAU,GAChDkgM,EAAiBxjM,EAAUsD,WAAW,cAAc,GACpDmgM,EAAmBzjM,EAAUsD,WAAW,gBAAgB,GACxDogM,EAAuB1jM,EAAUsD,WAAW,oBAAoB,GAE9C,MAAlBigM,GACF1+Z,EAAK2tO,cAAczlJ,EAAK,SAAUw2U,GAGd,MAAlBC,GAEF3+Z,EAAK2tO,cAAczlJ,EAAK,aAAcy2U,GAGhB,MAApBC,GACF5+Z,EAAK2tO,cAAczlJ,EAAK,eAAgB02U,GAGd,MAAxBC,GACF7+Z,EAAK2tO,cAAczlJ,EAAK,mBAAoB22U,EAEhD,CACF,CAKF,EAEJ,CAEA38a,EAAOD,QAAUusB,C,wBCnGjB,IAAI6kN,EAAS9pN,EAAQ,OAwBjBs6V,EAAgB,CAIlB5/W,IAAK,SAAUmzP,EAAYxyP,EAAK+/W,GAC9B,IAAI9hX,EAAQwwO,EAAOh+M,OAAOkiN,EAAc6f,IAAe,CAAC,GAAGxyP,IAC3D,OAAO+/W,GAAatxI,EAAOxrO,QAAQhF,GAASA,EAAMA,EAAME,OAAS,GAAaF,CAChF,GAEE00O,EAAgB,CAClB5lN,MAAO,CACL0oC,OAAQ,CAAC,UAAW,WACpB4tG,SAAU,CAAC,kBAEb6yQ,SAAU,CACRzgX,OAAQ,CAAC,EAAG,KACZ4tG,SAAU,CAAC,EAAG,IAEhBovI,gBAAiB,CACfh9O,OAAQ,CAAC,GAAK,GACd4tG,SAAU,CAAC,EAAG,IAEhB+yQ,eAAgB,CACd3gX,OAAQ,CAAC,GAAK,IACd4tG,SAAU,CAAC,EAAG,IAEhBmvI,WAAY,CACV/8O,OAAQ,CAAC,GAAK,GACd4tG,SAAU,CAAC,EAAG,IAEhB5tI,QAAS,CACPggC,OAAQ,CAAC,GAAK,GACd4tG,SAAU,CAAC,EAAG,IAEhBjlJ,OAAQ,CACNq3C,OAAQ,CAAC,SAAU,YAAa,WAChC4tG,SAAU,CAAC,SAEb05E,WAAY,CACVtnL,OAAQ,CAAC,GAAI,IACb4tG,SAAU,CAAC,EAAG,KAGdz5I,EAAWq1V,EACf3hX,EAAOD,QAAUusB,C,wBCpEjB,IAAI6kN,EAAS9pN,EAAQ,OAEjBg9Q,EAAgBh9Q,EAAQ,OAwBxBkvF,EAAO46H,EAAO56H,KAElB,SAASqmU,EAAQv+Z,GACf,GAAIA,EACF,IAAK,IAAI/a,KAAQ+a,EACf,GAAIA,EAAIlZ,eAAe7B,GACrB,OAAO,CAIf,CASA,SAASugU,EAAqBj6R,EAAQ4xU,EAAWuJ,GAC/C,IAAInhD,EAAiB,CAAC,EAuBtB,OAtBArtN,EAAKilQ,GAAW,SAAUvmW,GACxB,IAAIqxW,EAAW1iD,EAAe3uT,GAAS4na,IACvCtmU,EAAK3sE,EAAO30B,IAAQ,SAAU4wW,EAAY3wH,GACxC,GAAKmvC,EAAcyhF,YAAY5wH,GAA/B,CAIA,IAAI4uE,EAAgB,CAClBzgU,KAAM6xP,EACNpB,OAAQ+xH,GAEVd,GAA0BA,EAAuBjhD,EAAe7uT,GAChEqxW,EAASpxH,GAAc,IAAImvC,EAAcy/B,GAGtB,YAAf5uE,IACF4uE,EAAgB3yF,EAAOh+M,MAAM2wS,GAC7BA,EAAczgU,KAAO,aACrBijX,EAASw2D,SAASr2D,kBAAoB,IAAIpiF,EAAcy/B,GAb1D,CAeF,GACF,IACOF,EAEP,SAASi5G,IACP,IAAIE,EAAU,WAAa,EAI3BA,EAAQ32a,UAAU02a,SAAWC,EAAQ32a,UACrC,IAAIiY,EAAM,IAAI0+Z,EACd,OAAO1+Z,CACT,CACF,CAQA,SAASqhT,EAAoBD,EAAY3mC,EAAWlyR,GAKlD,IAAI1D,EACJiuO,EAAO56H,KAAK3vG,GAAM,SAAUlE,GACtBo2R,EAAU3zR,eAAezC,IAAQk6a,EAAQ9jJ,EAAUp2R,MACrDQ,GAAM,EAEV,IACAA,GAAOiuO,EAAO56H,KAAK3vG,GAAM,SAAUlE,GAC7Bo2R,EAAU3zR,eAAezC,IAAQk6a,EAAQ9jJ,EAAUp2R,IACrD+8T,EAAW/8T,GAAOyuO,EAAOh+M,MAAM2lQ,EAAUp2R,WAElC+8T,EAAW/8T,EAEtB,GACF,CAYA,SAAS6hU,EAAYi3C,EAAW53C,EAAgB9lT,EAAMwmT,EAAeqxF,EAAOhuI,GAC1E,IAKIj1C,EALAsqM,EAAiB,CAAC,EAOtB,SAAS7gM,EAAUz5O,GACjB,OAAOob,EAAKo+N,cAAcxJ,EAAWhwO,EACvC,CAEA,SAASmyO,EAAUnyO,EAAK/B,GACtBmd,EAAK2tO,cAAc/Y,EAAWhwO,EAAK/B,EACrC,CAQA,SAASs8a,EAASC,EAAcp8a,GAC9B4xO,EAAyB,MAAbi1C,EAAoBu1J,EAAep8a,EAC/C,IAAIq8a,EAAcr/Z,EAAK2kR,eAAe/vD,GAEtC,IAAIyqM,IAAyC,IAA1BA,EAAYztK,UAQ/B,IAJA,IAAIysG,EAAa73C,EAAcplU,KAAKy2Z,EAAOunB,GACvC52D,EAAW1iD,EAAeu4C,GAC1BoG,EAAcy6D,EAAe7gE,GAExBt5W,EAAI,EAAGwT,EAAMksW,EAAY1hX,OAAQgC,EAAIwT,EAAKxT,IAAK,CACtD,IAAIQ,EAAOk/W,EAAY1/W,GACvByjX,EAASjjX,IAASijX,EAASjjX,GAAMkhU,YAAY24G,EAAc/gM,EAAWtH,EACxE,CACF,CApCA1D,EAAO56H,KAAKilQ,GAAW,SAAUvmW,GAC/B,IAAIstW,EAAcl+E,EAAckiF,mBAAmB3iD,EAAe3uT,IAClE+na,EAAe/na,GAASstW,CAC1B,IAWiB,MAAb56F,EACF7pQ,EAAKy4F,KAAK0mU,GAEVn/Z,EAAKy4F,KAAK,CAACoxK,GAAYs1J,EAoB3B,CAUA,SAASz1D,EAAuBhM,EAAW53C,EAAgBU,EAAexzL,GACxE,IAAIksS,EAAiB,CAAC,EAMtB,SAAS3gS,EAAS57H,EAAQ3C,GAKxB,SAASq+N,EAAUz5O,GACjB,OAAOob,EAAKo+N,cAAcxJ,EAAWhwO,EACvC,CAEA,SAASmyO,EAAUnyO,EAAK/B,GACtBmd,EAAK2tO,cAAc/Y,EAAWhwO,EAAK/B,EACrC,CAEA,IAAI+xO,EAZO,MAAP5hG,IACFA,EAAMhzH,EAAK62O,aAAa7jH,IAa1B,MAAsC,OAA9B4hG,EAAYjyN,EAAOta,QAAiB,CAC1C,IAAIg3a,EAAcr/Z,EAAK2kR,eAAe/vD,GAEtC,IAAIyqM,IAAyC,IAA1BA,EAAYztK,UAS/B,IALA,IAAI/uQ,EAAe,MAAPmwI,EAAchzH,EAAK/b,IAAI+uI,EAAK4hG,GAAW,GAAQA,EACvDypI,EAAa73C,EAAc3jU,GAC3B2lX,EAAW1iD,EAAeu4C,GAC1BoG,EAAcy6D,EAAe7gE,GAExBt5W,EAAI,EAAGwT,EAAMksW,EAAY1hX,OAAQgC,EAAIwT,EAAKxT,IAAK,CACtD,IAAIQ,EAAOk/W,EAAY1/W,GACvByjX,EAASjjX,IAASijX,EAASjjX,GAAMkhU,YAAY5jU,EAAOw7O,EAAWtH,EACjE,CACF,CACF,CAEA,OAvCA1D,EAAO56H,KAAKilQ,GAAW,SAAUvmW,GAC/B,IAAIstW,EAAcl+E,EAAckiF,mBAAmB3iD,EAAe3uT,IAClE+na,EAAe/na,GAASstW,CAC1B,IAoCO,CACLlmO,SAAUA,EAEd,CAEAt8I,EAAQ8jU,qBAAuBA,EAC/B9jU,EAAQ2/T,oBAAsBA,EAC9B3/T,EAAQwkU,YAAcA,EACtBxkU,EAAQynX,uBAAyBA,C,wBC5OjC,WAmBC,SAAUzwV,EAAMihE,GAGTrhB,EAAO,CAAC,EAAW,SAAY,EAAF,EAAS,gEAQ7C,EAXA,CAWC93E,GAAM,SAAUkB,EAASiyO,GACvB,IAAIhjI,EAAM,SAAU8f,GACO,qBAAZ5iG,SACPA,SAAWA,QAAQxW,OAASwW,QAAQxW,MAAMo5G,EAElD,EACKkjH,EAIAA,EAAQ0rJ,YAIb1rJ,EAAQ0rJ,YAAY,QAAS,CAAC,KAAO,oBAAoB,SAAW,CAAC,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,UAAU,CAAC,+GAA+G,CAAC,qBAAqB,CAAC,kCAAkC,CAAC,kBAAkB,CAAC,UAAU,CAAC,oBAAoB,CAAC,iBAAiB,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,oEAAoE,CAAC,cAAc,CAAC,2tCAA2tC,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,UAAU,YAAc,CAAC,wmBAAwmB,cAAgB,CAAC,CAAC,OAAO,UAAU,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,MAAM,SAAW,GAAG,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,q5EAAq5E,cAAgB,CAAC,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,IAAI,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,iBAAiB,CAAC,UAAU,CAAC,kBAAkB,CAAC,87BAA87B,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,SAAS,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,UAAU,YAAc,CAAC,6qCAA6qC,cAAgB,CAAC,CAAC,OAAO,UAAU,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,MAAM,SAAW,GAAG,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,0hDAA0hD,cAAgB,CAAC,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,UAAU,YAAc,CAAC,2oBAA2oB,cAAgB,CAAC,CAAC,OAAO,UAAU,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,IAAI,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC,kBAAkB,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,uBAAuB,CAAC,YAAY,CAAC,wBAAwB,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,cAAc,CAAC,kBAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,kBAAkB,CAAC,cAAc,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,whBAAwhB,CAAC,iBAAiB,CAAC,qCAAqC,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,UAAU,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,21BAA21B,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,IAAI,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,cAAc,CAAC,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,cAAc,CAAC,YAAY,CAAC,YAAY,CAAC,6BAA6B,CAAC,UAAU,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,ixBAAixB,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,UAAU,YAAc,CAAC,gwBAAgwB,cAAgB,CAAC,CAAC,OAAO,UAAU,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,IAAI,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC,cAAc,CAAC,cAAc,CAAC,o1BAAo1B,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,UAAU,YAAc,CAAC,m5BAAm5B,cAAgB,CAAC,CAAC,OAAO,UAAU,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,w8BAAw8B,cAAgB,CAAC,CAAC,CAAC,OAAO,OAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,UAAU,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,YAAY,CAAC,oHAAoH,CAAC,22BAA22B,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,IAAI,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,cAAc,CAAC,UAAU,CAAC,kCAAkC,CAAC,4BAA4B,CAAC,oBAAoB,CAAC,8BAA8B,CAAC,eAAe,CAAC,aAAa,CAAC,YAAY,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,YAAY,CAAC,UAAU,CAAC,s2BAAs2B,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,UAAU,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,cAAc,CAAC,07BAA07B,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,UAAU,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,UAAU,YAAc,CAAC,uHAAuH,cAAgB,CAAC,CAAC,OAAO,UAAU,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,UAAU,CAAC,2lDAA2lD,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,u+BAAu+B,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,UAAU,YAAc,CAAC,y9CAAy9C,cAAgB,CAAC,CAAC,OAAO,UAAU,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,UAAU,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,UAAU,YAAc,CAAC,ivDAAivD,cAAgB,CAAC,CAAC,MAAM,UAAU,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,UAAU,YAAc,CAAC,u9BAAu9B,cAAgB,CAAC,CAAC,OAAO,UAAU,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,UAAU,CAAC,ysDAAysD,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,UAAU,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,UAAU,CAAC,63CAA63C,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,UAAU,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,0gBAA0gB,CAAC,qBAAqB,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,UAAU,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,UAAU,YAAc,CAAC,2hDAA2hD,cAAgB,CAAC,CAAC,MAAM,UAAU,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,UAAU,YAAc,CAAC,qQAAqQ,cAAgB,CAAC,CAAC,OAAO,UAAU,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,UAAU,YAAc,CAAC,+PAA+P,cAAgB,CAAC,CAAC,OAAO,UAAU,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC,kCAAkC,CAAC,uFAAuF,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,o3BAAo3B,CAAC,aAAa,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,WAAW,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,eAAe,YAAc,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,gHAAgH,CAAC,iBAAiB,cAAgB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC,KAAO,UAAU,GAAK,SAAS,WAAa,CAAC,GAAK,SAAS,GAAK,CAAC,UAAU,WAAW,KAAO,KAAK,SAAW,GAAG,SAAW,CAAC,KAAO,UAAU,YAAc,CAAC,cAAc,cAAgB,CAAC,CAAC,OAAO,WAAW,cAAe,IAHxpzC1uR,EAAI,6BAJJA,EAAI,wBAQZ,G,mBC7CAhvG,EAAOD,QACG,SAASk4F,GAET,IAAIC,EAAmB,CAAC,EAGxB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUr4F,QAGnC,IAAIC,EAASk4F,EAAiBE,GAAY,CACzCv1F,EAAGu1F,EACH/qF,GAAG,EACHtN,QAAS,CAAC,GAUX,OANAk4F,EAAQG,GAAUl5F,KAAKc,EAAOD,QAASC,EAAQA,EAAOD,QAASo4F,GAG/Dn4F,EAAOqN,GAAI,EAGJrN,EAAOD,OACf,CAyDA,OArDAo4F,EAAoB9/E,EAAI4/E,EAGxBE,EAAoBz2F,EAAIw2F,EAGxBC,EAAoBpsE,EAAI,SAAShsB,EAASuD,EAAMmU,GAC3C0gF,EAAoBrhB,EAAE/2E,EAASuD,IAClCzB,OAAOC,eAAe/B,EAASuD,EAAM,CAAE6I,YAAY,EAAMpK,IAAK0V,GAEhE,EAGA0gF,EAAoBvsE,EAAI,SAAS7rB,GACX,qBAAXwJ,QAA0BA,OAAO6za,aAC1Cv7a,OAAOC,eAAe/B,EAASwJ,OAAO6za,YAAa,CAAEz8a,MAAO,WAE7DkB,OAAOC,eAAe/B,EAAS,aAAc,CAAEY,OAAO,GACvD,EAOAw3F,EAAoBjvE,EAAI,SAASvoB,EAAOkM,GAEvC,GADU,EAAPA,IAAUlM,EAAQw3F,EAAoBx3F,IAC/B,EAAPkM,EAAU,OAAOlM,EACpB,GAAW,EAAPkM,GAA8B,kBAAVlM,GAAsBA,GAASA,EAAM63E,WAAY,OAAO73E,EAChF,IAAI08a,EAAKx7a,OAAOgE,OAAO,MAGvB,GAFAsyF,EAAoBvsE,EAAEyxZ,GACtBx7a,OAAOC,eAAeu7a,EAAI,UAAW,CAAElxa,YAAY,EAAMxL,MAAOA,IACtD,EAAPkM,GAA4B,iBAATlM,EAAmB,IAAI,IAAI+B,KAAO/B,EAAOw3F,EAAoBpsE,EAAEsxZ,EAAI36a,EAAK,SAASA,GAAO,OAAO/B,EAAM+B,EAAM,EAAEkZ,KAAK,KAAMlZ,IAC9I,OAAO26a,CACR,EAGAllV,EAAoBv5E,EAAI,SAAS5e,GAChC,IAAIyX,EAASzX,GAAUA,EAAOw4E,WAC7B,WAAwB,OAAOx4E,EAAO,UAAY,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADAm4F,EAAoBpsE,EAAEtU,EAAQ,IAAKA,GAC5BA,CACR,EAGA0gF,EAAoBrhB,EAAI,SAASxxE,EAAQgQ,GAAY,OAAOzT,OAAOuE,UAAUjB,eAAejG,KAAKoG,EAAQgQ,EAAW,EAGpH6iF,EAAoBz7C,EAAI,SAIjBy7C,EAAoBA,EAAoBhrF,EAAI,GACpD,CApFC,CAsFA,CAEJ,EACC,SAASnN,EAAQs9a,EAAqBnlV,GAE7C,aAQA,SAASr6F,EACPC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGA,IAqBIC,EArBAC,EAAmC,oBAAlBT,EACjBA,EAAcS,QACdT,EAiDJ,GA9CIC,IACFQ,EAAQR,OAASA,EACjBQ,EAAQP,gBAAkBA,EAC1BO,EAAQC,WAAY,GAIlBP,IACFM,EAAQE,YAAa,GAInBN,IACFI,EAAQG,SAAW,UAAYP,GAI7BC,GACFE,EAAO,SAAUK,GAEfA,EACEA,GACCC,KAAKC,QAAUD,KAAKC,OAAOC,YAC3BF,KAAKG,QAAUH,KAAKG,OAAOF,QAAUD,KAAKG,OAAOF,OAAOC,WAEtDH,GAA0C,qBAAxBK,sBACrBL,EAAUK,qBAGRd,GACFA,EAAae,KAAKL,KAAMD,GAGtBA,GAAWA,EAAQO,uBACrBP,EAAQO,sBAAsBC,IAAIf,EAEtC,EAGAG,EAAQa,aAAed,GACdJ,IACTI,EAAOD,EACH,WAAcH,EAAae,KAAKL,KAAMA,KAAKS,MAAMC,SAASC,WAAY,EACtErB,GAGFI,EACF,GAAIC,EAAQE,WAAY,CAGtBF,EAAQiB,cAAgBlB,EAExB,IAAImB,EAAiBlB,EAAQR,OAC7BQ,EAAQR,OAAS,SAAmC2B,EAAGf,GAErD,OADAL,EAAKW,KAAKN,GACHc,EAAeC,EAAGf,EAC3B,CACF,KAAO,CAEL,IAAIgB,EAAWpB,EAAQqB,aACvBrB,EAAQqB,aAAeD,EACnB,GAAGE,OAAOF,EAAUrB,GACpB,CAACA,EACP,CAGF,MAAO,CACLwB,QAAShC,EACTS,QAASA,EAEb,CA7F+B25F,EAAoBpsE,EAAEuxZ,EAAqB,KAAK,WAAa,OAAOx/a,CAAoB,GAgGjH,EAEA,GACC,SAASkC,EAAQs9a,EAAqBnlV,GAE7C,aACAA,EAAoBvsE,EAAE0xZ,GAGtB,IAAIt/a,EAAS,WACX,IAAIw3D,EAAM32D,KACN0+a,EAAK/nX,EAAIgoX,eACT/nX,EAAKD,EAAIE,MAAMD,IAAM8nX,EACzB,OAAO9nX,EAAG,MAAO,CAAEE,YAAa,mBAAqB,CAACH,EAAIhnD,GAAG,YAAa,EAC5E,EACIvQ,EAAkB,GACtBD,EAAOy/a,eAAgB,EAYM,IAAIC,EAAwC,CACvEp6a,KAAM,iBAG0Bq6a,EAA4CD,EAE1EE,EAAsBzlV,EAAoB,GAU1CnhC,EAAYn1D,OAAO+7a,EAAoB,KAA3B/7a,CACd87a,EACA3/a,EACAC,GACA,EACA,KACA,KACA,MAMF+4D,EAAUx4D,QAAQq/a,OAAS,uCACE,IAAIC,EAAgB9mX,EAAUj3D,QAK3D+9a,EAAaC,QAAU,SAAUxlX,GAC/BA,EAAIvB,UAAU8mX,EAAax6a,KAAMw6a,EACnC,EAEyDR,EAAoB,WAAcQ,CAErF,G,oBClQN99a,EAAOD,QACG,SAASk4F,GAET,IAAIC,EAAmB,CAAC,EAGxB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUr4F,QAGnC,IAAIC,EAASk4F,EAAiBE,GAAY,CACzCv1F,EAAGu1F,EACH/qF,GAAG,EACHtN,QAAS,CAAC,GAUX,OANAk4F,EAAQG,GAAUl5F,KAAKc,EAAOD,QAASC,EAAQA,EAAOD,QAASo4F,GAG/Dn4F,EAAOqN,GAAI,EAGJrN,EAAOD,OACf,CAyDA,OArDAo4F,EAAoB9/E,EAAI4/E,EAGxBE,EAAoBz2F,EAAIw2F,EAGxBC,EAAoBpsE,EAAI,SAAShsB,EAASuD,EAAMmU,GAC3C0gF,EAAoBrhB,EAAE/2E,EAASuD,IAClCzB,OAAOC,eAAe/B,EAASuD,EAAM,CAAE6I,YAAY,EAAMpK,IAAK0V,GAEhE,EAGA0gF,EAAoBvsE,EAAI,SAAS7rB,GACX,qBAAXwJ,QAA0BA,OAAO6za,aAC1Cv7a,OAAOC,eAAe/B,EAASwJ,OAAO6za,YAAa,CAAEz8a,MAAO,WAE7DkB,OAAOC,eAAe/B,EAAS,aAAc,CAAEY,OAAO,GACvD,EAOAw3F,EAAoBjvE,EAAI,SAASvoB,EAAOkM,GAEvC,GADU,EAAPA,IAAUlM,EAAQw3F,EAAoBx3F,IAC/B,EAAPkM,EAAU,OAAOlM,EACpB,GAAW,EAAPkM,GAA8B,kBAAVlM,GAAsBA,GAASA,EAAM63E,WAAY,OAAO73E,EAChF,IAAI08a,EAAKx7a,OAAOgE,OAAO,MAGvB,GAFAsyF,EAAoBvsE,EAAEyxZ,GACtBx7a,OAAOC,eAAeu7a,EAAI,UAAW,CAAElxa,YAAY,EAAMxL,MAAOA,IACtD,EAAPkM,GAA4B,iBAATlM,EAAmB,IAAI,IAAI+B,KAAO/B,EAAOw3F,EAAoBpsE,EAAEsxZ,EAAI36a,EAAK,SAASA,GAAO,OAAO/B,EAAM+B,EAAM,EAAEkZ,KAAK,KAAMlZ,IAC9I,OAAO26a,CACR,EAGAllV,EAAoBv5E,EAAI,SAAS5e,GAChC,IAAIyX,EAASzX,GAAUA,EAAOw4E,WAC7B,WAAwB,OAAOx4E,EAAO,UAAY,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADAm4F,EAAoBpsE,EAAEtU,EAAQ,IAAKA,GAC5BA,CACR,EAGA0gF,EAAoBrhB,EAAI,SAASxxE,EAAQgQ,GAAY,OAAOzT,OAAOuE,UAAUjB,eAAejG,KAAKoG,EAAQgQ,EAAW,EAGpH6iF,EAAoBz7C,EAAI,SAIjBy7C,EAAoBA,EAAoBhrF,EAAI,GACpD,CApFC,CAsFA,CAEJ,EACC,SAASnN,EAAQs9a,EAAqBnlV,GAE7C,aAQA,SAASr6F,EACPC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGA,IAqBIC,EArBAC,EAAmC,oBAAlBT,EACjBA,EAAcS,QACdT,EAiDJ,GA9CIC,IACFQ,EAAQR,OAASA,EACjBQ,EAAQP,gBAAkBA,EAC1BO,EAAQC,WAAY,GAIlBP,IACFM,EAAQE,YAAa,GAInBN,IACFI,EAAQG,SAAW,UAAYP,GAI7BC,GACFE,EAAO,SAAUK,GAEfA,EACEA,GACCC,KAAKC,QAAUD,KAAKC,OAAOC,YAC3BF,KAAKG,QAAUH,KAAKG,OAAOF,QAAUD,KAAKG,OAAOF,OAAOC,WAEtDH,GAA0C,qBAAxBK,sBACrBL,EAAUK,qBAGRd,GACFA,EAAae,KAAKL,KAAMD,GAGtBA,GAAWA,EAAQO,uBACrBP,EAAQO,sBAAsBC,IAAIf,EAEtC,EAGAG,EAAQa,aAAed,GACdJ,IACTI,EAAOD,EACH,WAAcH,EAAae,KAAKL,KAAMA,KAAKS,MAAMC,SAASC,WAAY,EACtErB,GAGFI,EACF,GAAIC,EAAQE,WAAY,CAGtBF,EAAQiB,cAAgBlB,EAExB,IAAImB,EAAiBlB,EAAQR,OAC7BQ,EAAQR,OAAS,SAAmC2B,EAAGf,GAErD,OADAL,EAAKW,KAAKN,GACHc,EAAeC,EAAGf,EAC3B,CACF,KAAO,CAEL,IAAIgB,EAAWpB,EAAQqB,aACvBrB,EAAQqB,aAAeD,EACnB,GAAGE,OAAOF,EAAUrB,GACpB,CAACA,EACP,CAGF,MAAO,CACLwB,QAAShC,EACTS,QAASA,EAEb,CA7F+B25F,EAAoBpsE,EAAEuxZ,EAAqB,KAAK,WAAa,OAAOx/a,CAAoB,GAgGjH,EAEA,GACC,SAASkC,EAAQs9a,EAAqBnlV,GAE7C,aACAA,EAAoBvsE,EAAE0xZ,GAGtB,IAAIt/a,EAAS,WACX,IAAIw3D,EAAM32D,KACN0+a,EAAK/nX,EAAIgoX,eACT/nX,EAAKD,EAAIE,MAAMD,IAAM8nX,EACzB,OAAO9nX,EACL,SACA,CACEE,YAAa,YACbiD,MAAO,CACLpD,EAAInyD,KAAO,cAAgBmyD,EAAInyD,KAAO,GACtCmyD,EAAIwoX,WAAa,cAAgBxoX,EAAIwoX,WAAa,GAClD,CACE,cAAexoX,EAAIyoX,eACnB,aAAczoX,EAAIiW,QAClB,WAAYjW,EAAIs4T,MAChB,WAAYt4T,EAAI+vB,MAChB,YAAa/vB,EAAIx5B,SAGrB65B,MAAO,CACLskC,SAAU3kC,EAAIyoX,gBAAkBzoX,EAAIiW,QACpCyyW,UAAW1oX,EAAI0oX,UACf76a,KAAMmyD,EAAI2oX,YAEZ77W,GAAI,CAAExwC,MAAO0jC,EAAI4oX,cAEnB,CACE5oX,EAAIiW,QAAUhW,EAAG,IAAK,CAAEE,YAAa,oBAAuBH,EAAI8F,KAChE9F,EAAIjR,OAASiR,EAAIiW,QAAUhW,EAAG,IAAK,CAAEmD,MAAOpD,EAAIjR,OAAUiR,EAAI8F,KAC9D9F,EAAI6oX,OAAOloX,QAAUV,EAAG,OAAQ,CAACD,EAAIhnD,GAAG,YAAa,GAAKgnD,EAAI8F,MAGpE,EACIr9D,EAAkB,GACtBD,EAAOy/a,eAAgB,EA+BM,IAAIa,EAAkC,CACjEh7a,KAAM,WAENi7a,OAAQ,CACNC,OAAQ,CACNroX,QAAS,IAEXsoX,WAAY,CACVtoX,QAAS,KAIbD,MAAO,CACL7yD,KAAM,CACJA,KAAM+J,OACN+oD,QAAS,WAEXgyB,KAAM/6E,OACNm3C,KAAM,CACJlhD,KAAM+J,OACN+oD,QAAS,IAEXgoX,WAAY,CACV96a,KAAM+J,OACN+oD,QAAS,UAEXsV,QAAShlB,QACT0zC,SAAU1zC,QACVqnU,MAAOrnU,QACPy3X,UAAWz3X,QACX8+B,MAAO9+B,QACPzqB,OAAQyqB,SAGVkR,SAAU,CACR+mX,gBAAiB,WACf,OAAQ7/a,KAAK4/a,YAAc,CAAC,GAAGE,cACjC,EACAX,WAAY,WACV,OAAOn/a,KAAKspF,MAAQtpF,KAAK6/a,kBAAoB7/a,KAAK+/a,UAAY,CAAC,GAAGz2V,IACpE,EACA81V,eAAgB,WACd,OAAOp/a,KAAKU,SAASs/a,UAAU15a,eAAe,YAActG,KAAKs7F,UAAYt7F,KAAK2/a,QAAU,CAAC,GAAGrkV,QAClG,GAGF9yF,QAAS,CACP+2a,YAAa,SAAqB9iV,GAChCz8F,KAAKkrE,MAAM,QAASuxB,EACtB,IAI8BwjV,EAAsCR,EAEpEV,EAAsBzlV,EAAoB,GAU1CnhC,EAAYn1D,OAAO+7a,EAAoB,KAA3B/7a,CACdi9a,EACA9gb,EACAC,GACA,EACA,KACA,KACA,MAMF+4D,EAAUx4D,QAAQq/a,OAAS,iCACE,IAAIkB,EAAc/nX,EAAUj3D,QAKzDg/a,EAAWhB,QAAU,SAAUxlX,GAC7BA,EAAIvB,UAAU+nX,EAAWz7a,KAAMy7a,EACjC,EAEmDzB,EAAoB,WAAcyB,CAE/E,G,iCCjWN/+a,EAAOD,QACG,SAASk4F,GAET,IAAIC,EAAmB,CAAC,EAGxB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUr4F,QAGnC,IAAIC,EAASk4F,EAAiBE,GAAY,CACzCv1F,EAAGu1F,EACH/qF,GAAG,EACHtN,QAAS,CAAC,GAUX,OANAk4F,EAAQG,GAAUl5F,KAAKc,EAAOD,QAASC,EAAQA,EAAOD,QAASo4F,GAG/Dn4F,EAAOqN,GAAI,EAGJrN,EAAOD,OACf,CAyDA,OArDAo4F,EAAoB9/E,EAAI4/E,EAGxBE,EAAoBz2F,EAAIw2F,EAGxBC,EAAoBpsE,EAAI,SAAShsB,EAASuD,EAAMmU,GAC3C0gF,EAAoBrhB,EAAE/2E,EAASuD,IAClCzB,OAAOC,eAAe/B,EAASuD,EAAM,CAAE6I,YAAY,EAAMpK,IAAK0V,GAEhE,EAGA0gF,EAAoBvsE,EAAI,SAAS7rB,GACX,qBAAXwJ,QAA0BA,OAAO6za,aAC1Cv7a,OAAOC,eAAe/B,EAASwJ,OAAO6za,YAAa,CAAEz8a,MAAO,WAE7DkB,OAAOC,eAAe/B,EAAS,aAAc,CAAEY,OAAO,GACvD,EAOAw3F,EAAoBjvE,EAAI,SAASvoB,EAAOkM,GAEvC,GADU,EAAPA,IAAUlM,EAAQw3F,EAAoBx3F,IAC/B,EAAPkM,EAAU,OAAOlM,EACpB,GAAW,EAAPkM,GAA8B,kBAAVlM,GAAsBA,GAASA,EAAM63E,WAAY,OAAO73E,EAChF,IAAI08a,EAAKx7a,OAAOgE,OAAO,MAGvB,GAFAsyF,EAAoBvsE,EAAEyxZ,GACtBx7a,OAAOC,eAAeu7a,EAAI,UAAW,CAAElxa,YAAY,EAAMxL,MAAOA,IACtD,EAAPkM,GAA4B,iBAATlM,EAAmB,IAAI,IAAI+B,KAAO/B,EAAOw3F,EAAoBpsE,EAAEsxZ,EAAI36a,EAAK,SAASA,GAAO,OAAO/B,EAAM+B,EAAM,EAAEkZ,KAAK,KAAMlZ,IAC9I,OAAO26a,CACR,EAGAllV,EAAoBv5E,EAAI,SAAS5e,GAChC,IAAIyX,EAASzX,GAAUA,EAAOw4E,WAC7B,WAAwB,OAAOx4E,EAAO,UAAY,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADAm4F,EAAoBpsE,EAAEtU,EAAQ,IAAKA,GAC5BA,CACR,EAGA0gF,EAAoBrhB,EAAI,SAASxxE,EAAQgQ,GAAY,OAAOzT,OAAOuE,UAAUjB,eAAejG,KAAKoG,EAAQgQ,EAAW,EAGpH6iF,EAAoBz7C,EAAI,SAIjBy7C,EAAoBA,EAAoBhrF,EAAI,GACpD,CApFC,CAsFA,CAEJ,EACC,SAASnN,EAAQs9a,EAAqBnlV,GAE7C,aAQA,SAASr6F,EACPC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGA,IAqBIC,EArBAC,EAAmC,oBAAlBT,EACjBA,EAAcS,QACdT,EAiDJ,GA9CIC,IACFQ,EAAQR,OAASA,EACjBQ,EAAQP,gBAAkBA,EAC1BO,EAAQC,WAAY,GAIlBP,IACFM,EAAQE,YAAa,GAInBN,IACFI,EAAQG,SAAW,UAAYP,GAI7BC,GACFE,EAAO,SAAUK,GAEfA,EACEA,GACCC,KAAKC,QAAUD,KAAKC,OAAOC,YAC3BF,KAAKG,QAAUH,KAAKG,OAAOF,QAAUD,KAAKG,OAAOF,OAAOC,WAEtDH,GAA0C,qBAAxBK,sBACrBL,EAAUK,qBAGRd,GACFA,EAAae,KAAKL,KAAMD,GAGtBA,GAAWA,EAAQO,uBACrBP,EAAQO,sBAAsBC,IAAIf,EAEtC,EAGAG,EAAQa,aAAed,GACdJ,IACTI,EAAOD,EACH,WAAcH,EAAae,KAAKL,KAAMA,KAAKS,MAAMC,SAASC,WAAY,EACtErB,GAGFI,EACF,GAAIC,EAAQE,WAAY,CAGtBF,EAAQiB,cAAgBlB,EAExB,IAAImB,EAAiBlB,EAAQR,OAC7BQ,EAAQR,OAAS,SAAmC2B,EAAGf,GAErD,OADAL,EAAKW,KAAKN,GACHc,EAAeC,EAAGf,EAC3B,CACF,KAAO,CAEL,IAAIgB,EAAWpB,EAAQqB,aACvBrB,EAAQqB,aAAeD,EACnB,GAAGE,OAAOF,EAAUrB,GACpB,CAACA,EACP,CAGF,MAAO,CACLwB,QAAShC,EACTS,QAASA,EAEb,CA7F+B25F,EAAoBpsE,EAAEuxZ,EAAqB,KAAK,WAAa,OAAOx/a,CAAoB,GAgGjH,EAEA,GACC,SAASkC,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEA,GACC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEA,GACC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEA,GACC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEA,EACC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEA,GACC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,KAEnB,EAEA,GACC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEA,GACC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEA,EACC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEA,GACC,SAASrnB,EAAQs9a,EAAqBnlV,GAE7C,aACAA,EAAoBvsE,EAAE0xZ,GAGtB,IAAI0B,EAAqD,WACvD,IAAIxpX,EAAM32D,KACN0+a,EAAK/nX,EAAIgoX,eACT/nX,EAAKD,EAAIE,MAAMD,IAAM8nX,EACzB,OAAO9nX,EACL,MACA,CACEmD,MAAO,CAAC,oBAAqBpD,EAAImD,QAAU,eAC3C2J,GAAI,CAAE28W,QAASzpX,EAAI0pX,gBAErB1pX,EAAIkD,GAAGlD,EAAI2pX,OAAO,SAASC,EAAMt+a,GAC/B,OAAO20D,EAAG,gBAAiB,CACzB/yD,IAAK5B,EACL80D,IAAK,OACLkN,UAAU,EACVjN,MAAO,CAAE/0D,MAAOA,EAAO68E,MAAOyhW,IAElC,IACA,EAEJ,EACInhb,EAAkB,GACtB+gb,EAAmDvB,eAAgB,EAMnE,IAsSI4B,EAAsBC,EAtStBC,EAA6CpnV,EAAoB,IACjEqnV,EAAiErnV,EAAoBv5E,EAAE2ga,GAGvFE,EAAatnV,EAAoB,IACjCunV,EAAiCvnV,EAAoBv5E,EAAE6ga,GAGvDE,EAAYxnV,EAAoB,IAChCynV,EAAgCznV,EAAoBv5E,EAAE+ga,GAGtDE,EAAS1nV,EAAoB,IAC7B2nV,EAA6B3nV,EAAoBv5E,EAAEiha,GAGnDE,EAAQ5nV,EAAoB,GAS5Bpe,EAAkB,SAAyBj1E,GAC7C,OAAOA,EAAEi1E,iBACX,EAEiCimW,EAAyC,CACxEzB,OAAQ,CAAC,SAETtnX,WAAY,CACVgpX,WAAYL,EAAiBp+a,EAC7B0+a,QAASJ,EAAct+a,GAGzB00D,MAAO,CACL+jB,KAAM,CACJr2D,UAAU,GAEZm3F,OAAQ3tG,QAGVuqD,SAAU,CACRzlC,OAAQ,WACN,OAAOrzB,KAAK+iV,MAAM1vT,MACpB,EACAiuZ,OAAQ,WACN,OAAOthb,KAAKo7E,KAAKkmW,MACnB,EACAC,WAAY,WACV,OAAOvhb,KAAKo7E,KAAKmmW,UACnB,EACAC,aAAc,WACZ,OAAOxhb,KAAK+iV,MAAMy+F,YACpB,EACAC,UAAW,WACT,OAAOzhb,KAAKo7E,KAAKsmW,WAAW1hb,KAAKwhb,aACnC,EACAG,aAAc,WACZ,OAAO3hb,KAAK4hb,SAAS5hb,KAAK+iV,MAAM8+F,WAClC,EACAC,cAAe,WACb,IAAIjuZ,EAAQ7zB,KAEZ,QAAKA,KAAKqzB,OAAO0uZ,eAEV/hb,KAAK+iV,MAAMi/F,iBAAiBj9V,MAAK,SAAUk9V,GAChD,OAAOpuZ,EAAM+tZ,SAASK,EACxB,GACF,EACAngb,MAAO,WACL,OAAO9B,KAAKo7E,KAAK8mW,kBACnB,GAGF15a,QAAS,CACP25a,aAAc,WACZ,IAAIruZ,EAAS9zB,KAET+iV,EAAQ/iV,KAAK+iV,MACb3nQ,EAAOp7E,KAAKo7E,KACZmmW,EAAavhb,KAAKuhb,WAClBluZ,EAASrzB,KAAKqzB,OACduoJ,EAAWvoJ,EAAOuoJ,SAClBmmQ,EAAgB1uZ,EAAO0uZ,eAGtBA,GAAiBR,GAAcnmW,EAAKxO,UAErCv5C,EAAO+uZ,OAAShnW,EAAKinW,OACvBt/F,EAAMu/F,SAASlnW,GAAM,WAEnB,IAAIkmW,EAASxtZ,EAAOwtZ,OAIpB,GADKA,GAAQxtZ,EAAOquZ,eAChBvmQ,EAAU,CAEZ,IAAI2mQ,IAAUjB,GAASlmW,EAAKmnW,QAC5BzuZ,EAAO0uZ,uBAAuBD,EAChC,CACF,IAEAx/F,EAAMo/F,aAAa/mW,GAEvB,EACAqnW,kBAAmB,WACjB,IAAI1/F,EAAQ/iV,KAAK+iV,MACbjhV,EAAQ9B,KAAK8B,MACbs5E,EAAOp7E,KAAKo7E,KAEhB2nQ,EAAM0/F,kBAAkB3gb,GACxBihV,EAAMo/F,aAAa/mW,EACrB,EACAonW,uBAAwB,SAAgCD,GACtDvib,KAAKo7E,KAAKsnW,QAAQH,GAClBvib,KAAK+iV,MAAM4/F,4BACb,EACAf,SAAU,SAAkBgB,GAC1B,IAAIxnW,EAAOp7E,KAAKo7E,KAEZynW,EAAmBD,EAAUxnW,EAAKwxG,MAAQ,IAAM,CAAC,EACrD,OAAOi2P,EAAiBh1a,MAAQutE,EAAKvtE,GACvC,EACAi1a,aAAc,SAAsBhib,GAClC,IAAIwgb,EAASthb,KAAKshb,OACdG,EAAYzhb,KAAKyhb,UACjBpuZ,EAASrzB,KAAKqzB,OACd0uZ,EAAgB1uZ,EAAO0uZ,cACvBnmQ,EAAWvoJ,EAAOuoJ,SAGtB,OAAIA,EACK57K,KAAK+ib,eAAejib,GAClBihb,EACF/hb,KAAKgjb,YAAYlib,GACfwgb,GAAUG,EACZzhb,KAAKijb,gBAAgBnib,GAGvB,IACT,EACAoib,cAAe,SAAuBpib,GACpC,IAAIs6E,EAAOp7E,KAAKo7E,KACZkmW,EAASthb,KAAKshb,OAGlB,OAAIlmW,EAAKxO,QACA5sE,KAAKmjb,kBAAkBrib,GACpBwgb,EAIL,KAHEthb,KAAKojb,iBAAiBtib,EAIjC,EACAiib,eAAgB,SAAwBjib,GACtC,IAAIs6E,EAAOp7E,KAAKo7E,KACZ/nD,EAASrzB,KAAKqzB,OACdkuZ,EAAavhb,KAAKuhb,WAElBnkV,EAAS,CACX35B,GAAI,CAAE1sC,OAAQ/2B,KAAKwib,wBACnBa,SAAU,CAAC,GAQb,OALIhwZ,EAAO0uZ,gBAET3kV,EAAOimV,SAASpwZ,MAAQioD,GAGnBp6E,EAAE,cAAe6/a,IAAoD,CAAC,CAC3E3pX,MAAO,CACLl1D,MAAOs5E,EAAKmnW,QACZe,cAAeloW,EAAKkoW,cACpBhoV,SAAUimV,IAEXnkV,IACL,EACA4lV,YAAa,SAAqBlib,GAChC,IAAI0gb,EAAexhb,KAAKwhb,aACpB1/a,EAAQ9B,KAAK8B,MACby/a,EAAavhb,KAAKuhb,WAQtB,OAJIv+a,OAAOk+a,EAAM,WAAbl+a,CAAyBlB,EAAO0/a,KAClC1/a,EAAQ0/a,GAGH1gb,EACL,WACA,CACEk2D,MAAO,CACLl1D,MAAO0/a,EACPtyY,MAAOptC,EACPw5F,SAAUimV,GAEZ99W,GAAI,CACF,OAAUzjE,KAAKyib,mBAEjBY,SAAU,CACR,MAASnoW,IAGb,CAACp6E,EAAE,SAEP,EACAmib,gBAAiB,SAAyBnib,GACxC,OAAOA,EAAE,IAAK,CAAE,MAAS,0CAC3B,EACAqib,kBAAmB,SAA2Brib,GAC5C,OAAOA,EAAE,IAAK,CAAE,MAAS,6CAC3B,EACAsib,iBAAkB,SAA0Btib,GAC1C,OAAOA,EAAE,IAAK,CAAE,MAAS,iDAC3B,EACAg8S,cAAe,SAAuBh8S,GACpC,IAAIiiV,EAAQ/iV,KAAK+iV,MACb3nQ,EAAOp7E,KAAKo7E,KAEZj8E,EAAS4jV,EAAMwgG,cACfC,EAAQrkb,EAASA,EAAO,CAAEi8E,KAAMA,EAAMn8D,KAAMm8D,EAAKn8D,OAAU,KAE/D,OAAOne,EACL,OACA,CAAE,MAAS,2BACX,CAAC0ib,GAASpoW,EAAKlsC,OAEnB,GAGF/vC,OAAQ,SAAgB2B,GACtB,IAAIozB,EAASl0B,KAET2hb,EAAe3hb,KAAK2hb,aACpBG,EAAgB9hb,KAAK8hb,cACrBL,EAAYzhb,KAAKyhb,UACjBH,EAASthb,KAAKshb,OACdC,EAAavhb,KAAKuhb,WAClBluZ,EAASrzB,KAAKqzB,OACd6oF,EAASl8G,KAAKk8G,OACdunU,EAAgBpwZ,EAAOowZ,cACvB1B,EAAgB1uZ,EAAO0uZ,cACvBnmQ,EAAWvoJ,EAAOuoJ,SAElBtgF,GAAYymV,GAAiBR,EAC7BnkV,EAAS,CAAE35B,GAAI,CAAC,GAkBpB,MAhBsB,UAAlBggX,EACFrmV,EAAO35B,GAAGxwC,MAAQjzB,KAAKmib,cAEvB/kV,EAAO35B,GAAGigX,WAAa,SAAUz9a,GAC/BiuB,EAAOiuZ,eACPjuZ,EAAOg3C,MAAM,SAAUjlE,EACzB,EACAm3F,EAAO35B,GAAGkgX,MAAQ,SAAU19a,GAC1BiuB,EAAOiuZ,eACPjuZ,EAAOg3C,MAAM,SAAUjlE,EACzB,IAEEq7a,GAAWC,GAAeQ,GAAkBnmQ,IAC9Cx+E,EAAO35B,GAAGxwC,MAAQjzB,KAAKyib,mBAGlB3hb,EACL,KACA6/a,IAAoD,CAAC,CACnD3pX,MAAO,CACL4sX,KAAM,WACNp6a,GAAI0yG,EACJ,gBAAiBylU,EACjBkC,SAAUvoV,EAAW,MAAQ,GAE/B,MAAS,CACP,oBAAoB,EACpB,gBAAiBymV,EACjB,iBAAkBJ,EAClB,kBAAmBG,EACnB,YAAaL,EACb,cAAenmV,IAEhB8B,IACH,CAACp9F,KAAK8ib,aAAahib,GAAId,KAAK88S,cAAch8S,GAAId,KAAKkjb,cAAcpib,IAErE,GAGgCgjb,EAA6C3C,EAE3EpC,EAAsBzlV,EAAoB,GAU1CnhC,EAAYn1D,OAAO+7a,EAAoB,KAA3B/7a,CACd8gb,EACAtD,EACAC,GACA,EACA,KACA,KACA,MAMFtoX,EAAUx4D,QAAQq/a,OAAS,gDACE,IA4JzB+E,EAAsBC,EA5JOC,EAAiB9rX,EAAUj3D,QAExDgjb,EAAU5qV,EAAoB,GAC9B6qV,EAA8B7qV,EAAoBv5E,EAAEmka,GAUvBE,EAAyC,CACxE3/a,KAAM,iBAENu3D,OAAQ,CAACmoX,EAAexhb,GAExB+8a,OAAQ,CAAC,SAETtnX,WAAY,CACVisX,YAAaxD,EAAkBl+a,EAC/B2hb,aAAcL,GAGhB5sX,MAAO,CACLynB,MAAO,CACLt6E,KAAMqC,MACNke,UAAU,GAEZ9iB,MAAOs6D,QAGTt9C,KAAM,WACJ,MAAO,CACLyoR,WAAY,KACZ68I,WAAY,KACZ/6a,GAAIxG,OAAOk+a,EAAM,cAAbl+a,GAER,EAGA81D,SAAU,CACR4tC,QAAS,WACP,OAAQ1mG,KAAK8+E,MAAM98E,MACrB,EACAwib,OAAQ,WACN,MAAO,iBAAmBxkb,KAAKwJ,GAAK,IAAMxJ,KAAKiC,KACjD,GAGFuG,QAAS,CACP25a,aAAc,SAAsBl8a,GAClCjG,KAAK0nS,WAAazhS,EAAEP,MACtB,EACA++a,gBAAiB,SAAyBx+a,GACxC,IAAIyhS,EAAa1nS,KAAK0nS,WAClB68I,EAAavkb,KAAKukb,WAClBG,EAAY1kb,KAAK83D,MAAM4sX,UAG3B,GAAKh9I,GAAeg9I,EAEpB,GAAIh9I,EAAWh0M,SAASztF,EAAEP,QAAS,CACjCuzD,aAAasrX,GAEb,IAAII,EAAwB3kb,KAAK4kb,IAAI1jV,wBACjC7wD,EAAOs0Y,EAAsBt0Y,KAE7BgI,EAASpyC,EAAEw5L,QAAUpvJ,EACrBw0Y,EAAO7kb,KAAK4kb,IACZp5U,EAAcq5U,EAAKr5U,YACnBD,EAAes5U,EAAKt5U,aAEpBh7D,EAAMm3P,EAAW5nG,UACjBtvJ,EAASD,EAAMm3P,EAAWn8L,aAE9Bm5U,EAAUtpV,UAAY,0EAA4E/iD,EAAS,IAAM9H,EAAM,KAAOi7D,EAAc,OAASj7D,EAAM,gFAAkF8H,EAAS,IAAM7H,EAAS,KAAOg7D,EAAc,IAAMD,EAAe,KAAO/6D,EAAS,kBACjU,MAAY+zY,IACVvkb,KAAKukb,WAAapga,WAAWnkB,KAAK8kb,eAAgB9kb,KAAK+iV,MAAM1vT,OAAO0xZ,gBAExE,EACAD,eAAgB,WACd,IAAIJ,EAAY1kb,KAAK83D,MAAM4sX,UAEtBA,IACLA,EAAUtpV,UAAY,GACxB,EACA4pV,gBAAiB,SAAyBlkb,GACxC,OAAOA,EACL,MACA,CAAE,MAAS,gCACX,CAACd,KAAKqqB,EAAE,uBAEZ,EACA46Z,eAAgB,SAAwBnkb,GACtC,IAAI0jb,EAASxkb,KAAKwkb,OACdU,EAAcllb,KAAK+iV,MAAMmiG,YAEzB9nV,EAAS,CAAE35B,GAAI,CAAC,GAEhByhX,IACF9nV,EAAO35B,GAAG+rC,OAASxvG,KAAKmib,cAG1B,IAAIrjW,EAAQ9+E,KAAK8+E,MAAMp1D,KAAI,SAAU0xD,EAAMn5E,GACzC,IAAI8pG,EAAc3wB,EAAK2wB,YAEvB,OAAOjrG,EAAE,gBAAiB6/a,IAAoD,CAAC,CAC7E98a,IAAKu3E,EAAKvtE,IACVmpD,MAAO,CAAEokB,KAAMA,EACb,UAAWopW,EAAS,IAAMvib,EAC1B,gBAAiB8pG,EACjB,YAAaA,EAAcy4U,EAAS,OAErCpnV,IACL,IAEA,MAAO,GAAGn8F,OAAO69E,EAAO,CAAComW,EAAcpkb,EAAE,MAAO,CAAEi2D,IAAK,YAAa,MAAS,iCAAoC,MACnH,GAGF53D,OAAQ,SAAgB2B,GACtB,IAAI4lG,EAAU1mG,KAAK0mG,QACf89U,EAASxkb,KAAKwkb,OAEdpnV,EAAS,CAAEimV,SAAU,CAAC,GAQ1B,OALIrjb,KAAK+iV,MAAMmiG,cACb9nV,EAAOimV,SAASn8F,UAAYlnV,KAAKykb,iBAI5B3jb,EACL,eACA6/a,IAAoD,CAAC,CACnD3pX,MAAO,CACLtpD,IAAK,KACLk2a,KAAM,OACNp6a,GAAIg7a,EAEJ,aAAc,yBACd,aAAc,CACZ,0BAA0B,EAC1B,WAAY99U,IAGhB,MAAS,oBAAsBtJ,IACjC,CAACsJ,EAAU1mG,KAAKglb,gBAAgBlkb,GAAKd,KAAKilb,eAAenkb,IAE7D,GAGgCqkb,EAA6Cf,EAS3EgB,EAA0Bpib,OAAO+7a,EAAoB,KAA3B/7a,CAC5Bmib,EACApB,EACAC,GACA,EACA,KACA,KACA,MAMFoB,EAAwBzlb,QAAQq/a,OAAS,gDACZ,IAAIqG,EAAiBD,EAAwBlkb,QAEtEokb,EAAUhsV,EAAoB,IAG9BonB,EAAe,WAAc,SAASn0G,EAAiB7G,EAAQ2xD,GAAS,IAAK,IAAIrzD,EAAI,EAAGA,EAAIqzD,EAAMr1D,OAAQgC,IAAK,CAAE,IAAIiD,EAAaowD,EAAMrzD,GAAIiD,EAAWqG,WAAarG,EAAWqG,aAAc,EAAOrG,EAAWsG,cAAe,EAAU,UAAWtG,IAAYA,EAAWuG,UAAW,GAAMxK,OAAOC,eAAeyC,EAAQuB,EAAWpD,IAAKoD,EAAa,CAAE,CAAE,OAAO,SAAUG,EAAau5G,EAAYC,GAAiJ,OAA9HD,GAAYp0G,EAAiBnF,EAAYG,UAAWo5G,GAAiBC,GAAar0G,EAAiBnF,EAAaw5G,GAAqBx5G,CAAa,CAAG,CAA7hB,GAEnB,SAAS27F,EAAgByd,EAAUp5G,GAAe,KAAMo5G,aAAoBp5G,GAAgB,MAAM,IAAI/F,UAAU,oCAAwC,CAKxJ,IAAIwM,EAAM,EAEN03a,EAAY,WACd,SAASxgV,EAAK9lF,EAAMoU,EAAQ4tE,GAC1B8B,EAAgB/iG,KAAM+kG,GAEtB/kG,KAAKif,KAAOA,EACZjf,KAAKqzB,OAASA,EACdrzB,KAAKG,OAAS8gG,GAAc,KAC5BjhG,KAAK4sL,MAAS5sL,KAAKG,OAAaH,KAAKG,OAAOysL,MAAQ,EAAxB,EAC5B5sL,KAAK6N,IAAMA,IAEX7N,KAAKqxK,YACLrxK,KAAK0qS,cACP,CAuLA,OArLA3lM,EAAKx9F,UAAU8pK,UAAY,WACzB,IAAI59H,EAAUzzC,KAAKqzB,OACf22J,EAAWv2I,EAAQ3xC,MACnBq6K,EAAW1oI,EAAQvE,MAGvBlvC,KAAK8B,MAAQ9B,KAAKif,KAAK+qK,GACvBhqL,KAAKkvC,MAAQlvC,KAAKif,KAAKk9J,GACvBn8K,KAAK4ib,UAAY5ib,KAAKwlb,qBACtBxlb,KAAKk9D,KAAOl9D,KAAK4ib,UAAUl5Z,KAAI,SAAU0xD,GACvC,OAAOA,EAAKt5E,KACd,IACA9B,KAAKylb,WAAazlb,KAAK4ib,UAAUl5Z,KAAI,SAAU0xD,GAC7C,OAAOA,EAAKlsC,KACd,IAGAlvC,KAAK4sE,SAAU,EACf5sE,KAAKqib,QAAS,CAChB,EAEAt9U,EAAKx9F,UAAUmjS,aAAe,WAC5B,IAAI72Q,EAAQ7zB,KAERqzB,EAASrzB,KAAKqzB,OAEdqyZ,EAAcryZ,EAAO0rD,SACrB4mW,EAAe3lb,KAAKif,KAAKyma,GAC7B1lb,KAAK+rG,YAAcllG,MAAMC,QAAQ6+a,GACjC3lb,KAAK++E,UAAY4mW,GAAgB,IAAIj8Z,KAAI,SAAUq9E,GACjD,OAAO,IAAIhC,EAAKgC,EAAO1zE,EAAQQ,EACjC,GACF,EAEAkxE,EAAKx9F,UAAUi+a,mBAAqB,WAClC,IAAI1mW,EAAQ,CAAC9+E,MACTG,EAASH,KAAKG,OAElB,MAAOA,EACL2+E,EAAM5wD,QAAQ/tB,GACdA,EAASA,EAAOA,OAGlB,OAAO2+E,CACT,EAEAimB,EAAKx9F,UAAU09D,QAAU,WACvB,OAAOjlE,KAAKk9D,IACd,EAEA6nC,EAAKx9F,UAAUy8F,SAAW,WACxB,OAAOhkG,KAAK8B,KACd,EAEAijG,EAAKx9F,UAAU26a,iBAAmB,WAChC,OAAOlib,KAAKqzB,OAAOuyZ,SAAW5lb,KAAKilE,UAAYjlE,KAAKgkG,UACtD,EAEAe,EAAKx9F,UAAUs+a,QAAU,SAAiBC,EAAWliS,GACnD,OAAOkiS,EAAY9lb,KAAKylb,WAAW36a,KAAK84I,GAAa5jJ,KAAKkvC,KAC5D,EAEA61D,EAAKx9F,UAAUm6a,WAAa,SAAoBF,GAC9C,IAAI1/a,EAAQ9B,KAAKkib,mBACjB,OAAOlib,KAAKqzB,OAAOuoJ,UAAY/0K,MAAMC,QAAQ06a,GAAgBA,EAAaz8V,MAAK,SAAU/1E,GACvF,OAAOhM,OAAOk+a,EAAM,WAAbl+a,CAAyBgM,EAAKlN,EACvC,IAAKkB,OAAOk+a,EAAM,WAAbl+a,CAAyBw+a,EAAc1/a,EAC9C,EAEAijG,EAAKx9F,UAAUw+a,UAAY,SAAmB1ia,GAC5C,IAAK,IAAI2wD,EAAOjxE,UAAUf,OAAQiR,EAAOpM,MAAMmtE,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9FhhE,EAAKghE,EAAO,GAAKlxE,UAAUkxE,GAG7B,IAAI+xW,EAAc,WAAahjb,OAAOk+a,EAAM,cAAbl+a,CAA4BqgB,GAE3DrjB,KAAK++E,SAASn0E,SAAQ,SAAUm8F,GAC1BA,IAEFA,EAAMg/U,UAAUjjb,MAAMikG,EAAO,CAAC1jF,GAAOpiB,OAAOgS,IAC5C8zF,EAAMi/U,IAAgBj/U,EAAMi/U,GAAaljb,MAAMikG,EAAO9zF,GAE1D,GACF,EAEA8xF,EAAKx9F,UAAUkiG,KAAO,SAAcpmF,GAClC,IAAIljB,EAASH,KAAKG,OAEd6lb,EAAc,UAAYhjb,OAAOk+a,EAAM,cAAbl+a,CAA4BqgB,GAC1D,GAAIljB,EAAQ,CACV,IAAK,IAAI8lb,EAAQljb,UAAUf,OAAQiR,EAAOpM,MAAMo/a,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACpGjza,EAAKiza,EAAQ,GAAKnjb,UAAUmjb,GAG9B/lb,EAAO6lb,IAAgB7lb,EAAO6lb,GAAaljb,MAAM3C,EAAQ8S,GACzD9S,EAAOspG,KAAK3mG,MAAM3C,EAAQ,CAACkjB,GAAOpiB,OAAOgS,GAC3C,CACF,EAEA8xF,EAAKx9F,UAAU4+a,cAAgB,SAAuB5D,GAC/Cvib,KAAKuhb,YACRvhb,KAAKomb,cAAc7D,EAEvB,EAEAx9U,EAAKx9F,UAAU8+a,aAAe,WAC5B,IAAItnW,EAAW/+E,KAAK++E,SAEhBunW,EAAgBvnW,EAAS/uD,QAAO,SAAU+2E,GAC5C,OAAQA,EAAMw6U,UAChB,IACIgB,IAAU+D,EAActkb,QAASskb,EAAclzV,OAAM,SAAU2T,GACjE,OAAOA,EAAMw7U,OACf,IAEAvib,KAAKomb,cAAc7D,EACrB,EAEAx9U,EAAKx9F,UAAU6+a,cAAgB,SAAuB7D,GACpD,IAAIgE,EAAWvmb,KAAK++E,SAAS/8E,OACzBwkb,EAAaxmb,KAAK++E,SAASzzD,QAAO,SAAUzoB,EAAGg7C,GACjD,IAAIryB,EAAMqyB,EAAE0kY,QAAU,EAAI1kY,EAAEylY,cAAgB,GAAM,EAClD,OAAOzgb,EAAI2oB,CACb,GAAG,GAEHxrB,KAAKuib,QAAUA,EACfvib,KAAKsjb,cAAgBkD,IAAeD,GAAYC,EAAa,CAC/D,EAEAzhV,EAAKx9F,UAAUk/a,eAAiB,SAAwBjF,GACtD,IAAI1/a,EAAQ9B,KAAKkib,mBACbK,EAAUvib,KAAK0hb,WAAWF,EAAc1/a,GAE5C9B,KAAK0ib,QAAQH,EACf,EAEAx9U,EAAKx9F,UAAUm7a,QAAU,SAAiBH,GACpCvib,KAAKuib,UAAYA,IACfvib,KAAKqzB,OAAO0uZ,cACd/hb,KAAKuib,QAAUA,GAGfvib,KAAK+lb,UAAU,QAASxD,GACxBvib,KAAKomb,cAAc7D,GACnBvib,KAAKypG,KAAK,UAGhB,EAEAiX,EAAa3b,EAAM,CAAC,CAClBlhG,IAAK,aACLX,IAAK,WACH,IAAI+b,EAAOjf,KAAKif,KACZ9e,EAASH,KAAKG,OACdkzB,EAASrzB,KAAKqzB,OAEdqzZ,EAAcrzZ,EAAOioE,SACrBymV,EAAgB1uZ,EAAO0uZ,cAE3B,OAAO9ia,EAAKyna,KAAiB3E,GAAiB5hb,GAAUA,EAAOohb,UACjE,GACC,CACD19a,IAAK,SACLX,IAAK,WACH,IAAI+b,EAAOjf,KAAKif,KACZoja,EAASrib,KAAKqib,OACdt2U,EAAc/rG,KAAK+rG,YACnBhtB,EAAW/+E,KAAK++E,SAChB4nW,EAAW3mb,KAAKqzB,OAChB+uZ,EAAOuE,EAASvE,KAChBwE,EAAUD,EAASE,KAEvB,GAAIzE,EAAM,CACR,IAAId,EAASt+a,OAAOsib,EAAQ,SAAftib,CAAyBic,EAAK2na,IAAY3na,EAAK2na,KAAWvE,IAAUtjW,EAAS/8E,OAE1F,OADAhC,KAAK+rG,aAAeu1U,EACbA,CACT,CACA,OAAQv1U,CACV,KAGKhH,CACT,CApMgB,GAsMiB+hV,EAAYvB,EAE7C,SAASwB,EAAqBvmU,EAAUp5G,GAAe,KAAMo5G,aAAoBp5G,GAAgB,MAAM,IAAI/F,UAAU,oCAAwC,CAK7J,IAAI2lb,EAAY,SAASA,EAAU/na,EAAMgoa,GACvC,OAAOhoa,EAAKqM,QAAO,SAAUytD,EAAKqC,GAOhC,OANIA,EAAKkmW,OACPvoW,EAAI90E,KAAKm3E,KAER6rW,GAAYluW,EAAI90E,KAAKm3E,GACtBrC,EAAMA,EAAI93E,OAAO+lb,EAAU5rW,EAAK2D,SAAUkoW,KAErCluW,CACT,GAAG,GACL,EAEImuW,EAAc,WAChB,SAASC,EAAMloa,EAAMoU,GACnB0zZ,EAAqB/mb,KAAMmnb,GAE3Bnnb,KAAKqzB,OAASA,EACdrzB,KAAKonb,UAAUnoa,EACjB,CA+CA,OA7CAkoa,EAAM5/a,UAAU6/a,UAAY,SAAmBnoa,GAC7C,IAAI4U,EAAQ7zB,KAEZif,EAAOjc,OAAOk+a,EAAM,4BAAbl+a,CAA0Cic,GACjDjf,KAAK8+E,MAAQ7/D,EAAKyK,KAAI,SAAUu5O,GAC9B,OAAO,IAAI6jL,EAAS7jL,EAAUpvO,EAAMR,OACtC,IACArzB,KAAKqnb,aAAernb,KAAKsnb,iBAAgB,GAAO,GAChDtnb,KAAKunb,UAAYvnb,KAAKsnb,iBAAgB,GAAM,EAC9C,EAEAH,EAAM5/a,UAAUigb,WAAa,SAAoBvkL,EAAUhiK,GACzD,IAAI7lB,EAAO,IAAI0rW,EAAS7jL,EAAUjjQ,KAAKqzB,OAAQ4tE,GAC3CliB,EAAWkiB,EAAaA,EAAWliB,SAAW/+E,KAAK8+E,MAEvDC,EAAS96E,KAAKm3E,EAChB,EAEA+rW,EAAM5/a,UAAUkgb,YAAc,SAAqBC,EAAczmV,GAC/D,IAAIntE,EAAS9zB,KAEb0nb,EAAe1kb,OAAOk+a,EAAM,4BAAbl+a,CAA0C0kb,GACzDA,EAAa98a,SAAQ,SAAUq4P,GAC7B,OAAOnvO,EAAO0zZ,WAAWvkL,EAAUhiK,EACrC,GACF,EAEAkmV,EAAM5/a,UAAUogb,SAAW,WACzB,OAAO3nb,KAAK8+E,KACd,EAEAqoW,EAAM5/a,UAAU+/a,gBAAkB,SAAyBL,GACzD,IAAI5vV,IAASt0F,UAAUf,OAAS,QAAsBU,IAAjBK,UAAU,KAAmBA,UAAU,GAExE6kb,EAAcX,EAAWjnb,KAAKunb,UAAYvnb,KAAKqnb,aACnD,OAAOhwV,EAASuwV,EAAcZ,EAAUhnb,KAAK8+E,MAAOmoW,EACtD,EAEAE,EAAM5/a,UAAUsgb,eAAiB,SAAwB/lb,GACvD,IAAIg9E,EAAQ9+E,KAAKsnb,iBAAgB,GAAQtnb,KAAKqzB,OAAO+uZ,MAAMpyZ,QAAO,SAAUorD,GAC1E,OAAOp4E,OAAOk+a,EAAM,eAAbl+a,CAA6Bo4E,EAAKle,KAAMp7D,IAAUs5E,EAAKt5E,QAAUA,CAC1E,IACA,OAAOg9E,GAASA,EAAM98E,OAAS88E,EAAM,GAAK,IAC5C,EAEOqoW,CACT,CAtDkB,GAwDeW,EAAaZ,EAE1Ca,EAASzuV,EAAoB,GAC7B0uV,EAA6B1uV,EAAoBv5E,EAAEgoa,GAGnDE,EAAc3uV,EAAoB,IAClC4uV,EAAkC5uV,EAAoBv5E,EAAEkoa,GAGxDE,EAAoB7uV,EAAoB,IACxC8uV,EAAwC9uV,EAAoBv5E,EAAEooa,GAG9DxyW,EAAW3yE,OAAOwH,QAAU,SAAU9E,GAAU,IAAK,IAAI1B,EAAI,EAAGA,EAAIjB,UAAUf,OAAQgC,IAAK,CAAE,IAAIU,EAAS3B,UAAUiB,GAAI,IAAK,IAAIH,KAAOa,EAAc1B,OAAOuE,UAAUjB,eAAejG,KAAKqE,EAAQb,KAAQ6B,EAAO7B,GAAOa,EAAOb,GAAU,CAAE,OAAO6B,CAAQ,EA0B3P2ib,EAAUH,EAAmBvlb,EAAEoF,KAE/Bugb,EAAe,CACjB7E,cAAe,QACf7nQ,UAAU,EACVmmQ,eAAe,EACf6D,UAAU,EACVxD,MAAM,EACNE,SAAUpB,EAAM,QAChBp/a,MAAO,QACPotC,MAAO,QACP6vC,SAAU,WACV8nW,KAAM,OACNvrV,SAAU,WACVypV,eAAgB,KAGdwD,EAA+C,SAAgB3mb,GACjE,OAAQA,EAAG0lZ,aAAa,YAC1B,EAEIkhC,EAAa,SAAoB5mb,EAAIorB,GACvC,IAAIi0E,EAAar/F,EAAGq/F,WAEpB,GAAIA,EAAY,CACd,IAAI0U,EAAW1U,EAAWD,iBAAiB,oCACvC/+F,EAAQ4E,MAAMU,UAAU8P,QAAQhX,KAAKs1G,EAAU/zG,GACnD,OAAO+zG,EAAS1zG,EAAQ+qB,IAAa,IACvC,CACA,OAAO,IACT,EAEIy7Z,EAAe,SAAsB7mb,EAAIorB,GAC3C,GAAKprB,EAAL,CACA,IAAIiiX,EAASjiX,EAAG4H,GAAGlG,MAAM,KACzB,OAAOi5D,OAAOsnT,EAAOA,EAAO7hX,OAAS,GAFtB,CAGjB,EAEI0mb,EAAY,SAAmB9mb,GAC5BA,IACLA,EAAG+hb,SACF4E,EAA6C3mb,IAAOA,EAAGqxB,QAC1D,EAEIiuK,EAAY,SAAmBt/L,GACjC,GAAKA,EAAL,CAEA,IAAIif,EAAQjf,EAAGyiF,cAAc,SACzBxjE,EACFA,EAAMoS,QACGs1Z,EAA6C3mb,IACtDA,EAAGqxB,OANU,CAQjB,EAEiC01Z,GAA0C,CACzElkb,KAAM,kBAEN2zD,WAAY,CACVwwX,aAAcvD,GAGhBhuX,MAAO,CACLv1D,MAAO,CAAC,EACRnC,QAASkH,MACTwwD,MAAOr0D,OACP82D,OAAQ,CACNt1D,KAAMojD,QACN0P,SAAS,GAEXuxX,YAAajjb,UAGfkjb,QAAS,WACP,MAAO,CACL/lG,MAAO/iV,KAEX,EACAif,KAAM,WACJ,MAAO,CACLuia,aAAc,KACdQ,iBAAkB,GAClBj0a,MAAO,GACPuya,MAAO,GACPuB,WAAY,GACZkH,UAAW,EAEf,EAGAjwX,SAAU,CACRzlC,OAAQ,WACN,OAAO20Z,IAAgBryW,EAAS,CAAC,EAAG2yW,GAAetob,KAAKq3D,OAAS,CAAC,EACpE,EACAukH,SAAU,WACR,OAAO57K,KAAKqzB,OAAOuoJ,QACrB,EACAmmQ,cAAe,WACb,OAAO/hb,KAAKqzB,OAAO0uZ,aACrB,EACAkF,SAAU,WACR,OAAQjnb,KAAK+hb,aACf,EACAmD,YAAa,WACX,MAAqC,UAA9Bllb,KAAKqzB,OAAOowZ,aACrB,EACAF,cAAe,WACb,OAAOvjb,KAAK6ob,aAAe7ob,KAAKgpb,aAAa1xX,OAC/C,GAGFG,MAAO,CACL31D,MAAO,WACL9B,KAAKipb,mBACLjpb,KAAK+hb,eAAiB/hb,KAAKkpb,2BAC7B,EAEAvpb,QAAS,CACP8hB,QAAS,WACPzhB,KAAKmpb,WACP,EACAC,WAAW,EACXn4W,MAAM,GAERuwW,aAAc,SAAsBxya,GAC7BhM,OAAOk+a,EAAM,WAAbl+a,CAAyBgM,EAAKhP,KAAK8B,SACtC9B,KAAK+hb,eAAiB/hb,KAAKkpb,4BAC3Blpb,KAAKkrE,MAAM,QAASl8D,GACpBhP,KAAKkrE,MAAM,SAAUl8D,GAEzB,GAGFkpD,QAAS,WACFl4D,KAAKo0E,aAAap0E,KAAK8B,QAC1B9B,KAAKipb,kBAET,EAGAzgb,QAAS,CACP2gb,UAAW,WACT,IAAI91Z,EAASrzB,KAAKqzB,OACd1zB,EAAUK,KAAKL,QAEf0zB,EAAO+uZ,MAAQp/a,OAAOk+a,EAAM,WAAbl+a,CAAyBrD,GAC1CK,KAAKsib,YAELtib,KAAK+N,MAAQ,IAAI+5a,EAAUnob,EAAS0zB,GACpCrzB,KAAKsgb,MAAQ,CAACtgb,KAAK+N,MAAM45a,YACzB3nb,KAAKqpb,gBAET,EACAJ,iBAAkB,WAChB,IAAInnb,EAAQ9B,KAAK8B,MACb0/a,EAAexhb,KAAKwhb,aAEnBx+a,OAAOk+a,EAAM,WAAbl+a,CAAyBlB,EAAO0/a,KACnCxhb,KAAK6hb,WAAa,GAClB7hb,KAAKwhb,aAAe1/a,EACpB9B,KAAKqpb,gBAET,EACAA,cAAe,WACb,IAAIztQ,EAAW57K,KAAK47K,SAChBmmQ,EAAgB/hb,KAAK+hb,cAEzB/hb,KAAKspb,iBACL1tQ,GAAY57K,KAAKupb,sBACjBxH,GAAiB/hb,KAAKkpb,4BACtBlpb,KAAKy7D,UAAUz7D,KAAKwpb,eACtB,EACAD,oBAAqB,WACnB,IAAI11Z,EAAQ7zB,KAER8+E,EAAQ9+E,KAAKsnb,gBAAgBtnb,KAAKinb,UAEtCnoW,EAAMl0E,SAAQ,SAAUwwE,GACtBA,EAAKqrW,eAAe5yZ,EAAM2tZ,aAC5B,GACF,EACAptW,aAAc,SAAsBplE,GAClC,IAAI4sK,EAAW57K,KAAK47K,SAChBvoJ,EAASrzB,KAAKqzB,OACduyZ,EAAWvyZ,EAAOuyZ,SAEtB,SAAIhqQ,IAAYgqQ,IACP5ib,OAAOk+a,EAAM,WAAbl+a,CAAyBgM,EAGpC,EACAs6a,eAAgB,WACd,IAAIx1Z,EAAS9zB,KAET+N,EAAQ/N,KAAK+N,MACb6tK,EAAW57K,KAAK47K,SAChBimQ,EAAa7hb,KAAK6hb,WAClBL,EAAexhb,KAAKwhb,aAGxB,GAAKx+a,OAAOk+a,EAAM,WAAbl+a,CAAyB6+a,GAKvB,GAAK7hb,KAAKo0E,aAAaotW,GAM5Bxhb,KAAK6hb,WAAa,GAClB7hb,KAAKsgb,MAAQ,CAACvya,EAAM45a,gBAPuB,CAC3C,IAAI7lb,EAAQ85K,EAAW4lQ,EAAa,GAAKA,EACrCiI,EAAczpb,KAAK6nb,eAAe/lb,IAAU,CAAC,EAC7C85G,GAAU6tU,EAAY7G,WAAa,IAAIzgb,MAAM,GAAI,GACrDnC,KAAK0pb,YAAY9tU,EACnB,KAV2C,CACzC,IAAI98B,EAAQ+iW,EAAWn4Z,KAAI,SAAU0xD,GACnC,OAAOtnD,EAAO+zZ,eAAezsW,EAAK4oB,WACpC,IACAhkG,KAAK0pb,YAAY5qW,EACnB,CASF,EACA4qW,YAAa,SAAqB5qW,GAChC,IAAI5qD,EAASl0B,KAEb8+E,EAAMl0E,SAAQ,SAAUwwE,GACtB,OAAOlnD,EAAOiuZ,aAAa/mW,GAAM,EACnC,GACF,EACA8tW,0BAA2B,WACzB,IAAIS,EAAS3pb,KAETwhb,EAAexhb,KAAKwhb,aACpB5lQ,EAAW57K,KAAK47K,SAEhBguQ,EAAgBhuQ,EAAW54K,OAAOk+a,EAAM,4BAAbl+a,CAA0Cw+a,GAAgB,CAACA,GAC1Fxhb,KAAKgib,iBAAmB4H,EAAclga,KAAI,SAAU1B,GAClD,IAAIyha,EAAcE,EAAO9B,eAAe7/Z,GACxC,OAAOyha,EAAcA,EAAY7G,UAAY,EAC/C,GACF,EACAvC,cAAe,SAAuBp6a,GACpC,IAAIP,EAASO,EAAEP,OACXmkb,EAAU5jb,EAAE4jb,QAGhB,OAAQA,GACN,KAAKxB,EAAQjkT,GACX,IAAI3sG,EAAO+wZ,EAAW9ib,GAAS,GAC/Bgjb,EAAUjxZ,GACV,MACF,KAAK4wZ,EAAQxtO,KACX,IAAIvzM,EAAOkhb,EAAW9ib,EAAQ,GAC9Bgjb,EAAUphb,GACV,MACF,KAAK+gb,EAAQh4Y,KACX,IAAIy5Y,EAAU9pb,KAAK83D,MAAMyoX,KAAKkI,EAAa/ib,GAAU,GACrD,GAAIokb,EAAS,CACX,IAAIC,EAAeD,EAAQlF,IAAIvgW,cAAc,2CAC7CqkW,EAAUqB,EACZ,CACA,MACF,KAAK1B,EAAQ/3Y,MACX,IAAI05Y,EAAWhqb,KAAK83D,MAAMyoX,KAAKkI,EAAa/ib,GAAU,GACtD,GAAIskb,EAAU,CACZ,IAAIC,EAAYD,EAASpF,IAAIvgW,cAAc,oCAC3CqkW,EAAUuB,EACZ,CACA,MACF,KAAK5B,EAAQj+W,MACX82H,EAAUx7L,GACV,MACF,KAAK2ib,EAAQ6B,IACb,KAAK7B,EAAQ/1E,IACXtyW,KAAKkrE,MAAM,SACX,MACF,QACE,OAEN,EACAi3W,aAAc,SAAsB/mW,EAAM+zE,GACxC,IAAI0yR,EAAa7hb,KAAK6hb,WAClBj1P,EAAQxxG,EAAKwxG,MAEb1vH,EAAO2kX,EAAW1/a,MAAM,EAAGyqL,EAAQ,GACnC0zP,EAAQtgb,KAAKsgb,MAAMn+a,MAAM,EAAGyqL,GAUhC,GARKxxG,EAAKkmW,SACRpkX,EAAKj5D,KAAKm3E,GACVklW,EAAMr8a,KAAKm3E,EAAK2D,WAGlB/+E,KAAK6hb,WAAa3kX,EAClBl9D,KAAKsgb,MAAQA,GAERnxR,EAAQ,CACX,IAAIg7R,EAAajtX,EAAKxzC,KAAI,SAAU0xD,GAClC,OAAOA,EAAK4oB,UACd,IACIomV,EAAmBvI,EAAWn4Z,KAAI,SAAU0xD,GAC9C,OAAOA,EAAK4oB,UACd,IACKhhG,OAAOk+a,EAAM,eAAbl+a,CAA6Bmnb,EAAYC,KAC5Cpqb,KAAKkrE,MAAM,qBAAsBi/W,GACjCnqb,KAAKkrE,MAAM,gBAAiBi/W,GAEhC,CACF,EACA1H,kBAAmB,SAA2B3gb,GAC5C9B,KAAKwhb,aAAe1/a,CACtB,EACAwgb,SAAU,SAAkBlnW,EAAMivW,GAChC,IAAIC,EAAStqb,KAETqzB,EAASrzB,KAAKqzB,OAEb+nD,IACHA,EAAOA,GAAQ,CAAEljD,MAAM,EAAM00J,MAAO,GACpC5sL,KAAK+N,MAAQ,IAAI+5a,EAAU,GAAIz0Z,GAC/BrzB,KAAKsgb,MAAQ,CAACtgb,KAAK+N,MAAM45a,aAE3BvsW,EAAKxO,SAAU,EACf,IAAIx4C,EAAU,SAAiBu3Q,GAC7B,IAAIxrS,EAASi7E,EAAKljD,KAAO,KAAOkjD,EAMhC,GALAuwN,GAAYA,EAAS3pS,QAAUsob,EAAOv8a,MAAM05a,YAAY97I,EAAUxrS,GAClEi7E,EAAKxO,SAAU,EACfwO,EAAKinW,QAAS,EAGVx7a,MAAMC,QAAQwjb,EAAO9I,cAAe,CACtC,IAAI1gJ,EAAYwpJ,EAAO9I,aAAa8I,EAAOvB,aACvC/+P,EAAWsgQ,EAAOj3Z,OAAOvxB,MACzB8kb,EAAU0D,EAAOj3Z,OAAOwzZ,KAE5B,GAAIhgb,MAAMC,QAAQ6kS,IAAaA,EAAS37Q,QAAO,SAAUxK,GACvD,OAAOA,EAAKwkK,KAAc82G,CAC5B,IAAG9+R,OAAS,EAAG,CACb,IAAIynb,EAAca,EAAOv8a,MAAM85a,eAAe/mJ,GAEzC2oJ,EAAYxqa,KAAK2na,IACpB0D,EAAOhI,SAASmH,GAAa,WAC3Ba,EAAOnI,aAAasH,EACtB,IAGEa,EAAOvB,YAAcuB,EAAO9I,aAAax/a,QAC3Csob,EAAOC,QAAQC,oBAEnB,CACF,CAEAH,GAAeA,EAAY1+I,EAC7B,EACAt4Q,EAAOivZ,SAASlnW,EAAMhnD,EACxB,EAMAuuZ,2BAA4B,WAC1B3ib,KAAKwhb,aAAexhb,KAAKyqb,gBAAgBzqb,KAAKinb,UAAUv9Z,KAAI,SAAU0xD,GACpE,OAAOA,EAAK8mW,kBACd,GACF,EACAsH,eAAgB,WACd,IAAIxpb,KAAK0qb,UAAT,CAEA,IAAIpK,EAAQtgb,KAAK83D,MAAMyoX,MAAQ,GAC/BD,EAAM11a,SAAQ,SAAU21a,GACtB,IAAIoK,EAAcpK,EAAKqE,IACvB,GAAI+F,EAAa,CACf,IAAI7/Y,EAAY6/Y,EAAYtmW,cAAc,uBACtCqjN,EAAaijJ,EAAYtmW,cAAc,gCAAkCsmW,EAAYtmW,cAAc,oCACvG+jW,IAA2Bt9Y,EAAW48P,EACxC,CACF,GAV0B,CAW5B,EACAmgJ,eAAgB,SAAwB74a,GACtC,OAAOhP,KAAK+N,MAAM85a,eAAe74a,EACnC,EACAs4a,gBAAiB,SAAyBL,GACxC,IAAI5vV,GAAUr3F,KAAKqzB,OAAO+uZ,KAC1B,OAAOpib,KAAK+N,MAAMu5a,gBAAgBL,EAAU5vV,EAC9C,EACAozV,gBAAiB,SAAyBxD,GACxC,IAAIzF,EAAexhb,KAAKwhb,aACpB5lQ,EAAW57K,KAAK47K,SAEpB,GAAIA,EAAU,CACZ,IAAI98F,EAAQ9+E,KAAKsnb,gBAAgBL,GACjC,OAAOnoW,EAAM9uD,QAAO,SAAUorD,GAC5B,OAAOA,EAAKmnW,OACd,GACF,CACE,OAAOvib,KAAKo0E,aAAaotW,GAAgB,GAAK,CAACxhb,KAAK6nb,eAAerG,GAEvE,EACAoJ,kBAAmB,WACjB,IAAIv3Z,EAASrzB,KAAKqzB,OACd4zZ,EAAWjnb,KAAKinb,SAChBrrQ,EAAWvoJ,EAAOuoJ,SAClBgqQ,EAAWvyZ,EAAOuyZ,SAElBhqQ,GACF57K,KAAKyqb,gBAAgBxD,GAAUj3Z,QAAO,SAAUorD,GAC9C,OAAQA,EAAKmmW,UACf,IAAG32a,SAAQ,SAAUwwE,GACnB,OAAOA,EAAKsnW,SAAQ,EACtB,IACA1ib,KAAK2ib,8BAEL3ib,KAAKwhb,aAAeoE,EAAW,GAAK,IAExC,IAI8BiF,GAA8ClC,GAS5EmC,GAA2B9nb,OAAO+7a,EAAoB,KAA3B/7a,CAC7B6nb,GACA1K,EACA/gb,GACA,EACA,KACA,KACA,MAMF0rb,GAAyBnrb,QAAQq/a,OAAS,iDACb,IAAI+L,GAAkBD,GAAyB5pb,QAK5E6pb,GAAe7L,QAAU,SAAUxlX,GACjCA,EAAIvB,UAAU4yX,GAAetmb,KAAMsmb,GACrC,EAE2DtM,EAAoB,WAAcsM,EAEvF,EAEA,EACC,SAAS5pb,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,G,uBCxhDNrnB,EAAOD,QACG,SAASk4F,GAET,IAAIC,EAAmB,CAAC,EAGxB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUr4F,QAGnC,IAAIC,EAASk4F,EAAiBE,GAAY,CACzCv1F,EAAGu1F,EACH/qF,GAAG,EACHtN,QAAS,CAAC,GAUX,OANAk4F,EAAQG,GAAUl5F,KAAKc,EAAOD,QAASC,EAAQA,EAAOD,QAASo4F,GAG/Dn4F,EAAOqN,GAAI,EAGJrN,EAAOD,OACf,CAyDA,OArDAo4F,EAAoB9/E,EAAI4/E,EAGxBE,EAAoBz2F,EAAIw2F,EAGxBC,EAAoBpsE,EAAI,SAAShsB,EAASuD,EAAMmU,GAC3C0gF,EAAoBrhB,EAAE/2E,EAASuD,IAClCzB,OAAOC,eAAe/B,EAASuD,EAAM,CAAE6I,YAAY,EAAMpK,IAAK0V,GAEhE,EAGA0gF,EAAoBvsE,EAAI,SAAS7rB,GACX,qBAAXwJ,QAA0BA,OAAO6za,aAC1Cv7a,OAAOC,eAAe/B,EAASwJ,OAAO6za,YAAa,CAAEz8a,MAAO,WAE7DkB,OAAOC,eAAe/B,EAAS,aAAc,CAAEY,OAAO,GACvD,EAOAw3F,EAAoBjvE,EAAI,SAASvoB,EAAOkM,GAEvC,GADU,EAAPA,IAAUlM,EAAQw3F,EAAoBx3F,IAC/B,EAAPkM,EAAU,OAAOlM,EACpB,GAAW,EAAPkM,GAA8B,kBAAVlM,GAAsBA,GAASA,EAAM63E,WAAY,OAAO73E,EAChF,IAAI08a,EAAKx7a,OAAOgE,OAAO,MAGvB,GAFAsyF,EAAoBvsE,EAAEyxZ,GACtBx7a,OAAOC,eAAeu7a,EAAI,UAAW,CAAElxa,YAAY,EAAMxL,MAAOA,IACtD,EAAPkM,GAA4B,iBAATlM,EAAmB,IAAI,IAAI+B,KAAO/B,EAAOw3F,EAAoBpsE,EAAEsxZ,EAAI36a,EAAK,SAASA,GAAO,OAAO/B,EAAM+B,EAAM,EAAEkZ,KAAK,KAAMlZ,IAC9I,OAAO26a,CACR,EAGAllV,EAAoBv5E,EAAI,SAAS5e,GAChC,IAAIyX,EAASzX,GAAUA,EAAOw4E,WAC7B,WAAwB,OAAOx4E,EAAO,UAAY,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADAm4F,EAAoBpsE,EAAEtU,EAAQ,IAAKA,GAC5BA,CACR,EAGA0gF,EAAoBrhB,EAAI,SAASxxE,EAAQgQ,GAAY,OAAOzT,OAAOuE,UAAUjB,eAAejG,KAAKoG,EAAQgQ,EAAW,EAGpH6iF,EAAoBz7C,EAAI,SAIjBy7C,EAAoBA,EAAoBhrF,EAAI,GACpD,CApFC,CAsFA,CAEJ,EACC,SAASnN,EAAQs9a,EAAqBnlV,GAE7C,aAQA,SAASr6F,EACPC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGA,IAqBIC,EArBAC,EAAmC,oBAAlBT,EACjBA,EAAcS,QACdT,EAiDJ,GA9CIC,IACFQ,EAAQR,OAASA,EACjBQ,EAAQP,gBAAkBA,EAC1BO,EAAQC,WAAY,GAIlBP,IACFM,EAAQE,YAAa,GAInBN,IACFI,EAAQG,SAAW,UAAYP,GAI7BC,GACFE,EAAO,SAAUK,GAEfA,EACEA,GACCC,KAAKC,QAAUD,KAAKC,OAAOC,YAC3BF,KAAKG,QAAUH,KAAKG,OAAOF,QAAUD,KAAKG,OAAOF,OAAOC,WAEtDH,GAA0C,qBAAxBK,sBACrBL,EAAUK,qBAGRd,GACFA,EAAae,KAAKL,KAAMD,GAGtBA,GAAWA,EAAQO,uBACrBP,EAAQO,sBAAsBC,IAAIf,EAEtC,EAGAG,EAAQa,aAAed,GACdJ,IACTI,EAAOD,EACH,WAAcH,EAAae,KAAKL,KAAMA,KAAKS,MAAMC,SAASC,WAAY,EACtErB,GAGFI,EACF,GAAIC,EAAQE,WAAY,CAGtBF,EAAQiB,cAAgBlB,EAExB,IAAImB,EAAiBlB,EAAQR,OAC7BQ,EAAQR,OAAS,SAAmC2B,EAAGf,GAErD,OADAL,EAAKW,KAAKN,GACHc,EAAeC,EAAGf,EAC3B,CACF,KAAO,CAEL,IAAIgB,EAAWpB,EAAQqB,aACvBrB,EAAQqB,aAAeD,EACnB,GAAGE,OAAOF,EAAUrB,GACpB,CAACA,EACP,CAGF,MAAO,CACLwB,QAAShC,EACTS,QAASA,EAEb,CA7F+B25F,EAAoBpsE,EAAEuxZ,EAAqB,KAAK,WAAa,OAAOx/a,CAAoB,GAgGjH,EAEA,EACC,SAASkC,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEA,GACC,SAASrnB,EAAQs9a,EAAqBnlV,GAE7C,aACAA,EAAoBvsE,EAAE0xZ,GAGtB,IAAIt/a,EAAS,WACX,IAAIw3D,EAAM32D,KACN0+a,EAAK/nX,EAAIgoX,eACT/nX,EAAKD,EAAIE,MAAMD,IAAM8nX,EACzB,OAAO9nX,EACL,MACA,CACEE,YAAa,oBACbE,MAAO,CAAE4sX,KAAM,QAAS,aAAc,mBAExC,CAACjtX,EAAIhnD,GAAG,YACR,EAEJ,EACIvQ,EAAkB,GACtBD,EAAOy/a,eAAgB,EAMvB,IAAIoM,EAAW1xV,EAAoB,GAC/B2xV,EAA+B3xV,EAAoBv5E,EAAEira,GAMxBE,EAA0C,CACzEzmb,KAAM,kBAENk1Z,cAAe,kBAEf39V,OAAQ,CAACivX,EAAgBtob,GAEzB+8a,OAAQ,CACNE,WAAY,CACVtoX,QAAS,KAIbD,MAAO,CACLv1D,MAAO,CAAC,EACRw5F,SAAU1zC,QACVh5C,IAAK2tD,OACL5tD,IAAK4tD,OACL+sB,KAAM/6E,OACNwb,KAAMxb,OACNkwD,UAAWlwD,QAGbuqD,SAAU,CACR+mX,gBAAiB,WACf,OAAQ7/a,KAAK4/a,YAAc,CAAC,GAAGE,cACjC,EACAqL,kBAAmB,WACjB,OAAOnrb,KAAKspF,MAAQtpF,KAAK6/a,kBAAoB7/a,KAAK+/a,UAAY,CAAC,GAAGz2V,IACpE,GAGF7xB,MAAO,CACL31D,MAAO,SAAe8+K,GACpB5gL,KAAKg1W,SAAS,aAAc,iBAAkB,CAACp0L,GACjD,IAI8BwqQ,EAA8CF,EAE5EnM,EAAsBzlV,EAAoB,GAU1CnhC,EAAYn1D,OAAO+7a,EAAoB,KAA3B/7a,CACdoob,EACAjsb,EACAC,GACA,EACA,KACA,KACA,MAMF+4D,EAAUx4D,QAAQq/a,OAAS,2CACE,IAAIqM,EAAkBlzX,EAAUj3D,QAK7Dmqb,EAAenM,QAAU,SAAUxlX,GACjCA,EAAIvB,UAAUkzX,EAAe5mb,KAAM4mb,EACrC,EAE2D5M,EAAoB,WAAc4M,CAEvF,G,iCCrTNlqb,EAAOD,QACG,SAASk4F,GAET,IAAIC,EAAmB,CAAC,EAGxB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUr4F,QAGnC,IAAIC,EAASk4F,EAAiBE,GAAY,CACzCv1F,EAAGu1F,EACH/qF,GAAG,EACHtN,QAAS,CAAC,GAUX,OANAk4F,EAAQG,GAAUl5F,KAAKc,EAAOD,QAASC,EAAQA,EAAOD,QAASo4F,GAG/Dn4F,EAAOqN,GAAI,EAGJrN,EAAOD,OACf,CAyDA,OArDAo4F,EAAoB9/E,EAAI4/E,EAGxBE,EAAoBz2F,EAAIw2F,EAGxBC,EAAoBpsE,EAAI,SAAShsB,EAASuD,EAAMmU,GAC3C0gF,EAAoBrhB,EAAE/2E,EAASuD,IAClCzB,OAAOC,eAAe/B,EAASuD,EAAM,CAAE6I,YAAY,EAAMpK,IAAK0V,GAEhE,EAGA0gF,EAAoBvsE,EAAI,SAAS7rB,GACX,qBAAXwJ,QAA0BA,OAAO6za,aAC1Cv7a,OAAOC,eAAe/B,EAASwJ,OAAO6za,YAAa,CAAEz8a,MAAO,WAE7DkB,OAAOC,eAAe/B,EAAS,aAAc,CAAEY,OAAO,GACvD,EAOAw3F,EAAoBjvE,EAAI,SAASvoB,EAAOkM,GAEvC,GADU,EAAPA,IAAUlM,EAAQw3F,EAAoBx3F,IAC/B,EAAPkM,EAAU,OAAOlM,EACpB,GAAW,EAAPkM,GAA8B,kBAAVlM,GAAsBA,GAASA,EAAM63E,WAAY,OAAO73E,EAChF,IAAI08a,EAAKx7a,OAAOgE,OAAO,MAGvB,GAFAsyF,EAAoBvsE,EAAEyxZ,GACtBx7a,OAAOC,eAAeu7a,EAAI,UAAW,CAAElxa,YAAY,EAAMxL,MAAOA,IACtD,EAAPkM,GAA4B,iBAATlM,EAAmB,IAAI,IAAI+B,KAAO/B,EAAOw3F,EAAoBpsE,EAAEsxZ,EAAI36a,EAAK,SAASA,GAAO,OAAO/B,EAAM+B,EAAM,EAAEkZ,KAAK,KAAMlZ,IAC9I,OAAO26a,CACR,EAGAllV,EAAoBv5E,EAAI,SAAS5e,GAChC,IAAIyX,EAASzX,GAAUA,EAAOw4E,WAC7B,WAAwB,OAAOx4E,EAAO,UAAY,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADAm4F,EAAoBpsE,EAAEtU,EAAQ,IAAKA,GAC5BA,CACR,EAGA0gF,EAAoBrhB,EAAI,SAASxxE,EAAQgQ,GAAY,OAAOzT,OAAOuE,UAAUjB,eAAejG,KAAKoG,EAAQgQ,EAAW,EAGpH6iF,EAAoBz7C,EAAI,SAIjBy7C,EAAoBA,EAAoBhrF,EAAI,GACpD,CApFC,CAsFA,CAEJ,EACC,SAASnN,EAAQs9a,EAAqBnlV,GAE7C,aAQA,SAASr6F,EACPC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGA,IAqBIC,EArBAC,EAAmC,oBAAlBT,EACjBA,EAAcS,QACdT,EAiDJ,GA9CIC,IACFQ,EAAQR,OAASA,EACjBQ,EAAQP,gBAAkBA,EAC1BO,EAAQC,WAAY,GAIlBP,IACFM,EAAQE,YAAa,GAInBN,IACFI,EAAQG,SAAW,UAAYP,GAI7BC,GACFE,EAAO,SAAUK,GAEfA,EACEA,GACCC,KAAKC,QAAUD,KAAKC,OAAOC,YAC3BF,KAAKG,QAAUH,KAAKG,OAAOF,QAAUD,KAAKG,OAAOF,OAAOC,WAEtDH,GAA0C,qBAAxBK,sBACrBL,EAAUK,qBAGRd,GACFA,EAAae,KAAKL,KAAMD,GAGtBA,GAAWA,EAAQO,uBACrBP,EAAQO,sBAAsBC,IAAIf,EAEtC,EAGAG,EAAQa,aAAed,GACdJ,IACTI,EAAOD,EACH,WAAcH,EAAae,KAAKL,KAAMA,KAAKS,MAAMC,SAASC,WAAY,EACtErB,GAGFI,EACF,GAAIC,EAAQE,WAAY,CAGtBF,EAAQiB,cAAgBlB,EAExB,IAAImB,EAAiBlB,EAAQR,OAC7BQ,EAAQR,OAAS,SAAmC2B,EAAGf,GAErD,OADAL,EAAKW,KAAKN,GACHc,EAAeC,EAAGf,EAC3B,CACF,KAAO,CAEL,IAAIgB,EAAWpB,EAAQqB,aACvBrB,EAAQqB,aAAeD,EACnB,GAAGE,OAAOF,EAAUrB,GACpB,CAACA,EACP,CAGF,MAAO,CACLwB,QAAShC,EACTS,QAASA,EAEb,CA7F+B25F,EAAoBpsE,EAAEuxZ,EAAqB,KAAK,WAAa,OAAOx/a,CAAoB,GAgGjH,EAEA,EACC,SAASkC,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEA,GACC,SAASrnB,EAAQs9a,EAAqBnlV,GAE7C,aACAA,EAAoBvsE,EAAE0xZ,GAGtB,IAAIt/a,EAAS,WACX,IAAIw3D,EAAM32D,KACN0+a,EAAK/nX,EAAIgoX,eACT/nX,EAAKD,EAAIE,MAAMD,IAAM8nX,EACzB,OAAO9nX,EACL,QACA,CACEE,YAAa,cACbiD,MAAO,CACLpD,EAAImD,QAAUnD,EAAI20X,aACd,gBAAkB30X,EAAI20X,aACtB,GACJ,CAAE,cAAe30X,EAAI4qX,YACrB,CAAE,cAAe5qX,EAAImD,QACrB,CAAE,aAAcnD,EAAI8qX,YAEtBzqX,MAAO,CAAExtD,GAAImtD,EAAIntD,KAEnB,CACEotD,EACE,OACA,CACEE,YAAa,qBACbiD,MAAO,CACL,cAAepD,EAAI4qX,WACnB,aAAc5qX,EAAI8qX,UAClB,mBAAoB9qX,EAAI2sX,cACxB,WAAY3sX,EAAIgtX,OAElB3sX,MAAO,CACL6sX,WAAUltX,EAAI2sX,eAAgB,EAC9BM,OAAMjtX,EAAI2sX,eAAgB,WAC1B,iBAAgB3sX,EAAI2sX,eAAgB,UAGxC,CACE1sX,EAAG,OAAQ,CAAEE,YAAa,uBAC1BH,EAAI40X,WAAa50X,EAAI60X,WACjB50X,EAAG,QAAS,CACV60X,WAAY,CACV,CACEhnb,KAAM,QACNinb,QAAS,UACT5pb,MAAO60D,EAAI46L,MACXo6L,WAAY,UAGhB70X,YAAa,wBACbE,MAAO,CACLxyD,KAAM,WACN,cAAemyD,EAAI2sX,cAAgB,OAAS,QAC5C7+a,KAAMkyD,EAAIlyD,KACV62F,SAAU3kC,EAAI4qX,WACd,aAAc5qX,EAAI40X,UAClB,cAAe50X,EAAI60X,YAErB3iX,SAAU,CACR05W,QAAS17a,MAAMC,QAAQ6vD,EAAI46L,OACvB56L,EAAI/mD,GAAG+mD,EAAI46L,MAAO,OAAS,EAC3B56L,EAAIi1X,GAAGj1X,EAAI46L,MAAO56L,EAAI40X,YAE5B9nX,GAAI,CACF1sC,OAAQ,CACN,SAASsyC,GACP,IAAIwiX,EAAMl1X,EAAI46L,MACZu6L,EAAOziX,EAAO3jE,OACdqmb,EAAMD,EAAKvJ,QAAU5rX,EAAI40X,UAAY50X,EAAI60X,WAC3C,GAAI3kb,MAAMC,QAAQ+kb,GAAM,CACtB,IAAIG,EAAM,KACRC,EAAMt1X,EAAI/mD,GAAGi8a,EAAKG,GAChBF,EAAKvJ,QACP0J,EAAM,IAAMt1X,EAAI46L,MAAQs6L,EAAI5qb,OAAO,CAAC+qb,KAEpCC,GAAO,IACJt1X,EAAI46L,MAAQs6L,EACV1pb,MAAM,EAAG8pb,GACThrb,OAAO4qb,EAAI1pb,MAAM8pb,EAAM,IAEhC,MACEt1X,EAAI46L,MAAQw6L,CAEhB,EACAp1X,EAAIu1X,cAENvI,MAAO,SAASt6W,GACd1S,EAAIgtX,OAAQ,CACd,EACAxnO,KAAM,SAAS9yI,GACb1S,EAAIgtX,OAAQ,CACd,KAGJ/sX,EAAG,QAAS,CACV60X,WAAY,CACV,CACEhnb,KAAM,QACNinb,QAAS,UACT5pb,MAAO60D,EAAI46L,MACXo6L,WAAY,UAGhB70X,YAAa,wBACbE,MAAO,CACLxyD,KAAM,WACN,cAAemyD,EAAI2sX,cAAgB,OAAS,QAC5ChoV,SAAU3kC,EAAI4qX,WACd98a,KAAMkyD,EAAIlyD,MAEZokE,SAAU,CACR/mE,MAAO60D,EAAIznB,MACXqzY,QAAS17a,MAAMC,QAAQ6vD,EAAI46L,OACvB56L,EAAI/mD,GAAG+mD,EAAI46L,MAAO56L,EAAIznB,QAAU,EAChCynB,EAAI46L,OAEV9tL,GAAI,CACF1sC,OAAQ,CACN,SAASsyC,GACP,IAAIwiX,EAAMl1X,EAAI46L,MACZu6L,EAAOziX,EAAO3jE,OACdqmb,IAAMD,EAAKvJ,QACb,GAAI17a,MAAMC,QAAQ+kb,GAAM,CACtB,IAAIG,EAAMr1X,EAAIznB,MACZ+8Y,EAAMt1X,EAAI/mD,GAAGi8a,EAAKG,GAChBF,EAAKvJ,QACP0J,EAAM,IAAMt1X,EAAI46L,MAAQs6L,EAAI5qb,OAAO,CAAC+qb,KAEpCC,GAAO,IACJt1X,EAAI46L,MAAQs6L,EACV1pb,MAAM,EAAG8pb,GACThrb,OAAO4qb,EAAI1pb,MAAM8pb,EAAM,IAEhC,MACEt1X,EAAI46L,MAAQw6L,CAEhB,EACAp1X,EAAIu1X,cAENvI,MAAO,SAASt6W,GACd1S,EAAIgtX,OAAQ,CACd,EACAxnO,KAAM,SAAS9yI,GACb1S,EAAIgtX,OAAQ,CACd,OAKZhtX,EAAI6oX,OAAOloX,SAAWX,EAAIznB,MACtB0nB,EACE,OACA,CAAEE,YAAa,sBACf,CACEH,EAAIhnD,GAAG,WACNgnD,EAAI6oX,OAAOloX,QAAwCX,EAAI8F,KAAlC,CAAC9F,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIznB,UAE3C,GAEFynB,EAAI8F,MAGd,EACIr9D,EAAkB,GACtBD,EAAOy/a,eAAgB,EAMvB,IAAIoM,EAAW1xV,EAAoB,GAC/B2xV,EAA+B3xV,EAAoBv5E,EAAEira,GA6DxBmB,EAAoC,CACnE1nb,KAAM,aAENu3D,OAAQ,CAACivX,EAAgBtob,GAEzB+8a,OAAQ,CACNC,OAAQ,CACNroX,QAAS,IAEXsoX,WAAY,CACVtoX,QAAS,KAIbqiW,cAAe,aAEf16Y,KAAM,WACJ,MAAO,CACLmta,WAAW,EACXzI,OAAO,EACP0I,iBAAiB,EAErB,EAGAvzX,SAAU,CACRy4L,MAAO,CACLruP,IAAK,WACH,OAAOlD,KAAK24P,QAAU34P,KAAK+N,WAAuBrL,IAAf1C,KAAK8B,MAAsB9B,KAAK8B,MAAQ9B,KAAKosb,SAClF,EACA55a,IAAK,SAAaxD,GACZhP,KAAK24P,SACP34P,KAAKqsb,iBAAkB,OACK3pb,IAA5B1C,KAAKssb,eAAe19a,KAAqBI,EAAIhN,OAAShC,KAAKssb,eAAe19a,MAAQ5O,KAAKqsb,iBAAkB,QAE7E3pb,IAA5B1C,KAAKssb,eAAe39a,KAAqBK,EAAIhN,OAAShC,KAAKssb,eAAe39a,MAAQ3O,KAAKqsb,iBAAkB,IAEhF,IAAzBrsb,KAAKqsb,iBAA6Brsb,KAAKg1W,SAAS,kBAAmB,QAAS,CAAChmW,MAE7EhP,KAAKkrE,MAAM,QAASl8D,GACpBhP,KAAKosb,UAAYp9a,EAErB,GAGFyya,UAAW,WACT,MAAqC,qBAAjC,CAAC,EAAEv/a,SAAS7B,KAAKL,KAAKuxP,OACjBvxP,KAAKuxP,MACH1qP,MAAMC,QAAQ9G,KAAKuxP,OACrBvxP,KAAKuxP,MAAMl6O,QAAQrX,KAAKkvC,QAAU,EACjB,OAAflvC,KAAKuxP,YAAiC7uP,IAAf1C,KAAKuxP,MAC9BvxP,KAAKuxP,QAAUvxP,KAAKurb,eADtB,CAGT,EACA5yL,QAAS,WACP,IAAIx4P,EAASH,KAAKuqb,QAClB,MAAOpqb,EAAQ,CACb,GAAsC,oBAAlCA,EAAOO,SAASi5Z,cAIlB,OADA35Z,KAAKssb,eAAiBnsb,GACf,EAHPA,EAASA,EAAOoqb,OAKpB,CACA,OAAO,CACT,EACAx8a,MAAO,WACL,OAAO/N,KAAKssb,eAAiBtsb,KAAKssb,eAAexqb,MAAQ9B,KAAK8B,KAChE,EAIAyqb,gBAAiB,WACf,IAAID,EAAiBtsb,KAAKssb,eACtB39a,EAAM29a,EAAe39a,IACrBC,EAAM09a,EAAe19a,IAEzB,SAAUD,IAAOC,IAAQ5O,KAAKuxP,MAAMvvP,QAAU2M,IAAQ3O,KAAKyhb,WAAazhb,KAAKuxP,MAAMvvP,QAAU4M,GAAO5O,KAAKyhb,SAC3G,EACAF,WAAY,WACV,OAAOvhb,KAAK24P,QAAU34P,KAAKssb,eAAehxV,UAAYt7F,KAAKs7F,WAAat7F,KAAK2/a,QAAU,CAAC,GAAGrkV,UAAYt7F,KAAKusb,gBAAkBvsb,KAAKs7F,WAAat7F,KAAK2/a,QAAU,CAAC,GAAGrkV,QACrK,EACAukV,gBAAiB,WACf,OAAQ7/a,KAAK4/a,YAAc,CAAC,GAAGE,cACjC,EACAwL,aAAc,WACZ,IAAIkB,EAAkBxsb,KAAKspF,MAAQtpF,KAAK6/a,kBAAoB7/a,KAAK+/a,UAAY,CAAC,GAAGz2V,KACjF,OAAOtpF,KAAK24P,SAAU34P,KAAKssb,eAAenB,mBAAuCqB,CACnF,GAGFn1X,MAAO,CACLv1D,MAAO,CAAC,EACRotC,MAAO,CAAC,EACRo0Y,cAAe17X,QACf0zC,SAAU1zC,QACV26X,QAAS36X,QACTnjD,KAAM8J,OACNg9a,UAAW,CAACh9a,OAAQguD,QACpBivX,WAAY,CAACj9a,OAAQguD,QACrB/yD,GAAI+E,OACJk+a,SAAUl+a,OACVurD,OAAQlS,QACR0hC,KAAM/6E,QAGR/F,QAAS,CACPkkb,WAAY,WACN7lb,MAAMC,QAAQ9G,KAAKuxP,SAA8C,IAApCvxP,KAAKuxP,MAAMl6O,QAAQrX,KAAKkvC,OACvDlvC,KAAKuxP,MAAMttP,KAAKjE,KAAKkvC,OAErBlvC,KAAKuxP,MAAQvxP,KAAKurb,YAAa,CAEnC,EACAW,aAAc,SAAsBS,GAClC,IAAI94Z,EAAQ7zB,KAEZ,IAAIA,KAAKqsb,gBAAT,CACA,IAAIvqb,OAAQ,EAEVA,EADE6qb,EAAGjnb,OAAO68a,aACe7/a,IAAnB1C,KAAKurb,WAAiCvrb,KAAKurb,eAEvB7ob,IAApB1C,KAAKwrb,YAAmCxrb,KAAKwrb,WAEvDxrb,KAAKkrE,MAAM,SAAUppE,EAAO6qb,GAC5B3sb,KAAKy7D,WAAU,WACT5nC,EAAM8kO,SACR9kO,EAAMmhV,SAAS,kBAAmB,SAAU,CAACnhV,EAAMy4Z,eAAexqb,OAEtE,GAZgC,CAalC,GAGF8qb,QAAS,WACP5sb,KAAKuib,SAAWvib,KAAK0sb,YACvB,EACAx0X,QAAS,WAEHl4D,KAAKsjb,eACPtjb,KAAK4kb,IAAIn0Z,aAAa,gBAAiBzwB,KAAKysb,SAEhD,EAGAh1X,MAAO,CACL31D,MAAO,SAAe8+K,GACpB5gL,KAAKg1W,SAAS,aAAc,iBAAkBp0L,EAChD,IAI8BisQ,EAAwCV,EAEtEpN,EAAsBzlV,EAAoB,GAU1CnhC,EAAYn1D,OAAO+7a,EAAoB,KAA3B/7a,CACd6pb,EACA1tb,EACAC,GACA,EACA,KACA,KACA,MAMF+4D,EAAUx4D,QAAQq/a,OAAS,qCACE,IAAI8N,EAAgB30X,EAAUj3D,QAK3D4rb,EAAa5N,QAAU,SAAUxlX,GAC/BA,EAAIvB,UAAU20X,EAAarob,KAAMqob,EACnC,EAEqDrO,EAAoB,WAAcqO,CAEjF,G,2DC/mBN3rb,EAAOD,QACG,SAASk4F,GAET,IAAIC,EAAmB,CAAC,EAGxB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUr4F,QAGnC,IAAIC,EAASk4F,EAAiBE,GAAY,CACzCv1F,EAAGu1F,EACH/qF,GAAG,EACHtN,QAAS,CAAC,GAUX,OANAk4F,EAAQG,GAAUl5F,KAAKc,EAAOD,QAASC,EAAQA,EAAOD,QAASo4F,GAG/Dn4F,EAAOqN,GAAI,EAGJrN,EAAOD,OACf,CAyDA,OArDAo4F,EAAoB9/E,EAAI4/E,EAGxBE,EAAoBz2F,EAAIw2F,EAGxBC,EAAoBpsE,EAAI,SAAShsB,EAASuD,EAAMmU,GAC3C0gF,EAAoBrhB,EAAE/2E,EAASuD,IAClCzB,OAAOC,eAAe/B,EAASuD,EAAM,CAAE6I,YAAY,EAAMpK,IAAK0V,GAEhE,EAGA0gF,EAAoBvsE,EAAI,SAAS7rB,GACX,qBAAXwJ,QAA0BA,OAAO6za,aAC1Cv7a,OAAOC,eAAe/B,EAASwJ,OAAO6za,YAAa,CAAEz8a,MAAO,WAE7DkB,OAAOC,eAAe/B,EAAS,aAAc,CAAEY,OAAO,GACvD,EAOAw3F,EAAoBjvE,EAAI,SAASvoB,EAAOkM,GAEvC,GADU,EAAPA,IAAUlM,EAAQw3F,EAAoBx3F,IAC/B,EAAPkM,EAAU,OAAOlM,EACpB,GAAW,EAAPkM,GAA8B,kBAAVlM,GAAsBA,GAASA,EAAM63E,WAAY,OAAO73E,EAChF,IAAI08a,EAAKx7a,OAAOgE,OAAO,MAGvB,GAFAsyF,EAAoBvsE,EAAEyxZ,GACtBx7a,OAAOC,eAAeu7a,EAAI,UAAW,CAAElxa,YAAY,EAAMxL,MAAOA,IACtD,EAAPkM,GAA4B,iBAATlM,EAAmB,IAAI,IAAI+B,KAAO/B,EAAOw3F,EAAoBpsE,EAAEsxZ,EAAI36a,EAAK,SAASA,GAAO,OAAO/B,EAAM+B,EAAM,EAAEkZ,KAAK,KAAMlZ,IAC9I,OAAO26a,CACR,EAGAllV,EAAoBv5E,EAAI,SAAS5e,GAChC,IAAIyX,EAASzX,GAAUA,EAAOw4E,WAC7B,WAAwB,OAAOx4E,EAAO,UAAY,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADAm4F,EAAoBpsE,EAAEtU,EAAQ,IAAKA,GAC5BA,CACR,EAGA0gF,EAAoBrhB,EAAI,SAASxxE,EAAQgQ,GAAY,OAAOzT,OAAOuE,UAAUjB,eAAejG,KAAKoG,EAAQgQ,EAAW,EAGpH6iF,EAAoBz7C,EAAI,SAIjBy7C,EAAoBA,EAAoBhrF,EAAI,GACpD,CApFC,CAsFA,CAEH,SAASnN,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,KAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASrnB,EAAQD,GAExBC,EAAOD,QAAUsnB,EAAQ,MAEnB,EAEC,SAASr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E,MACA,CACE60X,WAAY,CACV,CACEhnb,KAAM,OACNinb,QAAS,SACT5pb,MAA2B,SAApB60D,EAAIkla,YACXlwC,WAAY,2BAGhB70X,YAAa,yBACbiD,MAAO,CACL,mCACsB,SAApBpD,EAAIkla,aACgB,UAApBlla,EAAIkla,cAGV,CACEjla,EAAG,SAAU,CACXE,YACE,0EACFE,MAAO,CACLxyD,KAAM,SACN,aAAcmyD,EAAItsC,EAAE,2BAEtBo5C,GAAI,CAAExwC,MAAO0jC,EAAImla,YAEnBlla,EAAG,SAAU,CACX60X,WAAY,CACV,CACEhnb,KAAM,OACNinb,QAAS,SACT5pb,MAA2B,SAApB60D,EAAIkla,YACXlwC,WAAY,2BAGhB70X,YACE,wEACFE,MAAO,CACLxyD,KAAM,SACN,aAAcmyD,EAAItsC,EAAE,4BAEtBo5C,GAAI,CAAExwC,MAAO0jC,EAAIola,aAEnBnla,EACE,OACA,CACEE,YAAa,+BACbE,MAAO,CAAE4sX,KAAM,UACfngX,GAAI,CAAExwC,MAAO0jC,EAAIqla,iBAEnB,CAACrla,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIwxQ,cAErBvxQ,EACE,OACA,CACE60X,WAAY,CACV,CACEhnb,KAAM,OACNinb,QAAS,SACT5pb,MAA2B,SAApB60D,EAAIkla,YACXlwC,WAAY,2BAGhB70X,YAAa,+BACbiD,MAAO,CAAET,OAA4B,UAApB3C,EAAIkla,aACrB7ka,MAAO,CAAE4sX,KAAM,UACfngX,GAAI,CAAExwC,MAAO0jC,EAAIsla,kBAEnB,CACEtla,EAAIO,GACFP,EAAIQ,GAAGR,EAAItsC,EAAE,uBAAyBssC,EAAIu/Z,MAAQ,QAIxDt/Z,EAAG,SAAU,CACXE,YACE,2EACFE,MAAO,CACLxyD,KAAM,SACN,aAAcmyD,EAAItsC,EAAE,2BAEtBo5C,GAAI,CAAExwC,MAAO0jC,EAAIula,YAEnBtla,EAAG,SAAU,CACX60X,WAAY,CACV,CACEhnb,KAAM,OACNinb,QAAS,SACT5pb,MAA2B,SAApB60D,EAAIkla,YACXlwC,WAAY,2BAGhB70X,YACE,yEACFE,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AAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,KAAKC,IAAE,KAAKC,IAAE,KAAKC,IAAE,KAAKC,IAAE,KACpXC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,I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","sources":["webpack://finacial/./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/fn/object/assign.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/index.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/iterator.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_a-function.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_add-to-unscopables.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_array-includes.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_ctx.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-keys.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_html.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-array.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-create.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-define.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-step.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_iterators.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_meta.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-assign.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-create.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dps.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopd.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn-ext.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gops.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gpo.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_redefine.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_set-to-string-tag.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_string-at.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-absolute-index.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-length.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-define.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-ext.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.array.iterator.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.assign.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.string.iterator.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.symbol.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.async-iterator.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.observable.js","webpack://finacial/./node_modules/babel-runtime/node_modules/core-js/library/modules/web.dom.iterable.js","webpack://finacial/./node_modules/core-js/internals/a-callable.js","webpack://finacial/./node_modules/core-js/internals/a-possible-prototype.js","webpack://finacial/./node_modules/core-js/internals/an-instance.js","webpack://finacial/./node_modules/core-js/internals/an-object.js","webpack://finacial/./node_modules/core-js/internals/array-buffer-basic-detection.js","webpack://finacial/./node_modules/core-js/internals/array-buffer-view-core.js","webpack://finacial/./node_modules/core-js/internals/array-from-constructor-and-list.js","webpack://finacial/./node_modules/core-js/internals/array-includes.js","webpack://finacial/./node_modules/core-js/internals/array-set-length.js","webpack://finacial/./node_modules/core-js/internals/array-slice.js","webpack://finacial/./node_modules/core-js/internals/array-to-reversed.js","webpack://finacial/./node_modules/core-js/internals/array-with.js","webpack://finacial/./node_modules/core-js/internals/classof-raw.js","webpack://finacial/./node_modules/core-js/internals/classof.js","webpack://finacial/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://finacial/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://finacial/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://finacial/./node_modules/core-js/internals/create-property-descriptor.js","webpack://finacial/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://finacial/./node_modules/core-js/internals/define-built-in.js","webpack://finacial/./node_modules/core-js/internals/define-global-property.js","webpack://finacial/./node_modules/core-js/internals/descriptors.js","webpack://finacial/./node_modules/core-js/internals/document-all.js","webpack://finacial/./node_modules/core-js/internals/document-create-element.js","webpack://finacial/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://finacial/./node_modules/core-js/internals/dom-exception-constants.js","webpack://finacial/./node_modules/core-js/internals/engine-is-bun.js","webpack://finacial/./node_modules/core-js/internals/engine-is-ios.js","webpack://finacial/./node_modules/core-js/internals/engine-is-node.js","webpack://finacial/./node_modules/core-js/internals/engine-user-agent.js","webpack://finacial/./node_modules/core-js/internals/engine-v8-version.js","webpack://finacial/./node_modules/core-js/internals/enum-bug-keys.js","webpack://finacial/./node_modules/core-js/internals/error-stack-clear.js","webpack://finacial/./node_modules/core-js/internals/export.js","webpack://finacial/./node_modules/core-js/internals/fails.js","webpack://finacial/./node_modules/core-js/internals/function-apply.js","webpack://finacial/./node_modules/core-js/internals/function-bind-context.js","webpack://finacial/./node_modules/core-js/internals/function-bind-native.js","webpack://finacial/./node_modules/core-js/internals/function-call.js","webpack://finacial/./node_modules/core-js/internals/function-name.js","webpack://finacial/./node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack://finacial/./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://finacial/./node_modules/core-js/internals/function-uncurry-this.js","webpack://finacial/./node_modules/core-js/internals/get-built-in.js","webpack://finacial/./node_modules/core-js/internals/get-method.js","webpack://finacial/./node_modules/core-js/internals/global.js","webpack://finacial/./node_modules/core-js/internals/has-own-property.js","webpack://finacial/./node_modules/core-js/internals/hidden-keys.js","webpack://finacial/./node_modules/core-js/internals/html.js","webpack://finacial/./node_modules/core-js/internals/ie8-dom-define.js","webpack://finacial/./node_modules/core-js/internals/indexed-object.js","webpack://finacial/./node_modules/core-js/internals/inherit-if-required.js","webpack://finacial/./node_modules/core-js/internals/inspect-source.js","webpack://finacial/./node_modules/core-js/internals/internal-state.js","webpack://finacial/./node_modules/core-js/internals/is-array.js","webpack://finacial/./node_modules/core-js/internals/is-big-int-array.js","webpack://finacial/./node_modules/core-js/internals/is-callable.js","webpack://finacial/./node_modules/core-js/internals/is-forced.js","webpack://finacial/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://finacial/./node_modules/core-js/internals/is-object.js","webpack://finacial/./node_modules/core-js/internals/is-pure.js","webpack://finacial/./node_modules/core-js/internals/is-symbol.js","webpack://finacial/./node_modules/core-js/internals/length-of-array-like.js","webpack://finacial/./node_modules/core-js/internals/make-built-in.js","webpack://finacial/./node_modules/core-js/internals/math-trunc.js","webpack://finacial/./node_modules/core-js/internals/normalize-string-argument.js","webpack://finacial/./node_modules/core-js/internals/object-define-property.js","webpack://finacial/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://finacial/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://finacial/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://finacial/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://finacial/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://finacial/./node_modules/core-js/internals/object-keys-internal.js","webpack://finacial/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://finacial/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://finacial/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://finacial/./node_modules/core-js/internals/own-keys.js","webpack://finacial/./node_modules/core-js/internals/require-object-coercible.js","webpack://finacial/./node_modules/core-js/internals/schedulers-fix.js","webpack://finacial/./node_modules/core-js/internals/shared-key.js","webpack://finacial/./node_modules/core-js/internals/shared-store.js","webpack://finacial/./node_modules/core-js/internals/shared.js","webpack://finacial/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://finacial/./node_modules/core-js/internals/task.js","webpack://finacial/./node_modules/core-js/internals/to-absolute-index.js","webpack://finacial/./node_modules/core-js/internals/to-big-int.js","webpack://finacial/./node_modules/core-js/internals/to-indexed-object.js","webpack://finacial/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://finacial/./node_modules/core-js/internals/to-length.js","webpack://finacial/./node_modules/core-js/internals/to-object.js","webpack://finacial/./node_modules/core-js/internals/to-primitive.js","webpack://finacial/./node_modules/core-js/internals/to-property-key.js","webpack://finacial/./node_modules/core-js/internals/to-string-tag-support.js","webpack://finacial/./node_modules/core-js/internals/to-string.js","webpack://finacial/./node_modules/core-js/internals/try-to-string.js","webpack://finacial/./node_modules/core-js/internals/uid.js","webpack://finacial/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://finacial/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://finacial/./node_modules/core-js/internals/validate-arguments-length.js","webpack://finacial/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://finacial/./node_modules/core-js/internals/well-known-symbol.js","webpack://finacial/./node_modules/core-js/modules/es.array.push.js","webpack://finacial/./node_modules/core-js/modules/es.typed-array.to-reversed.js","webpack://finacial/./node_modules/core-js/modules/es.typed-array.to-sorted.js","webpack://finacial/./node_modules/core-js/modules/es.typed-array.with.js","webpack://finacial/./node_modules/core-js/modules/web.clear-immediate.js","webpack://finacial/./node_modules/core-js/modules/web.dom-exception.stack.js","webpack://finacial/./node_modules/core-js/modules/web.immediate.js","webpack://finacial/./node_modules/core-js/modules/web.set-immediate.js","webpack://finacial/./node_modules/core-js/modules/web.url-search-params.delete.js","webpack://finacial/./node_modules/core-js/modules/web.url-search-params.has.js","webpack://finacial/./node_modules/core-js/modules/web.url-search-params.size.js","webpack://finacial/./node_modules/@jiaminghi/bezier-curve/lib/core/bezierCurveToPolyline.js","webpack://finacial/./node_modules/@jiaminghi/bezier-curve/lib/core/polylineToBezierCurve.js","webpack://finacial/./node_modules/@jiaminghi/bezier-curve/lib/index.js","webpack://finacial/./node_modules/@jiaminghi/c-render/lib/class/crender.class.js","webpack://finacial/./node_modules/@jiaminghi/c-render/lib/class/graph.class.js","webpack://finacial/./node_modules/@jiaminghi/c-render/lib/class/style.class.js","webpack://finacial/./node_modules/@jiaminghi/c-render/lib/config/graphs.js","webpack://finacial/./node_modules/@jiaminghi/c-render/lib/index.js","webpack://finacial/./node_modules/@jiaminghi/c-render/lib/plugin/canvas.js","webpack://finacial/./node_modules/@jiaminghi/c-render/lib/plugin/util.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/class/charts.class.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/class/updater.class.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/config/axis.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/config/bar.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/config/color.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/config/gauge.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/config/grid.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/config/index.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/config/legend.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/config/line.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/config/pie.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/config/radar.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/config/radarAxis.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/config/title.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/core/axis.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/core/bar.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/core/gauge.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/core/grid.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/core/index.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/core/legend.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/core/line.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/core/mergeColor.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/core/pie.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/core/radar.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/core/radarAxis.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/core/title.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/extend/index.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/index.js","webpack://finacial/./node_modules/@jiaminghi/charts/lib/util/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/activeRingChart/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/digitalFlop/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/digitalFlop/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/digitalFlop/src/main.vue?b5a9","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/digitalFlop/src/main.vue?f7a4","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/activeRingChart/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/activeRingChart/src/main.vue?29cd","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/activeRingChart/src/main.vue?a925","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/activeRingChart/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox1/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/util/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/mixin/autoResize.js","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/borderBox1/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox1/src/main.vue?03d2","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox1/src/main.vue?0725","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox1/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox10/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/borderBox10/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox10/src/main.vue?4c3c","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox10/src/main.vue?3474","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox10/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox11/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/borderBox11/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox11/src/main.vue?64b1","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox11/src/main.vue?d293","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox11/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox12/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/borderBox12/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox12/src/main.vue?65a8","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox12/src/main.vue?6880","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox12/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox13/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/borderBox13/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox13/src/main.vue?096f","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox13/src/main.vue?cf76","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox13/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox2/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/borderBox2/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox2/src/main.vue?a2e5","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox2/src/main.vue?29aa","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox2/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox3/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/borderBox3/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox3/src/main.vue?3c05","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox3/src/main.vue?bb79","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox3/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox4/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/borderBox4/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox4/src/main.vue?9fd7","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox4/src/main.vue?3a70","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox4/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox5/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/borderBox5/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox5/src/main.vue?edef","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox5/src/main.vue?3eff","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox5/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox6/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/borderBox6/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox6/src/main.vue?6794","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox6/src/main.vue?654b","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox6/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox7/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/borderBox7/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox7/src/main.vue?2eb4","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox7/src/main.vue?0c7f","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox7/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox8/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/borderBox8/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox8/src/main.vue?00b9","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox8/src/main.vue?693a","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox8/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox9/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/borderBox9/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox9/src/main.vue?0380","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox9/src/main.vue?bcf2","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/borderBox9/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/capsuleChart/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/capsuleChart/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/capsuleChart/src/main.vue?b411","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/capsuleChart/src/main.vue?423a","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/capsuleChart/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/charts/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/charts/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/charts/src/main.vue?6046","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/charts/src/main.vue?c6cc","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/charts/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/conicalColumnChart/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/conicalColumnChart/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/conicalColumnChart/src/main.vue?ccfb","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/conicalColumnChart/src/main.vue?36ea","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/conicalColumnChart/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration1/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/decoration1/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration1/src/main.vue?334f","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration1/src/main.vue?8211","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration1/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration10/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/decoration10/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration10/src/main.vue?50a3","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration10/src/main.vue?f554","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration10/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration11/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/decoration11/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration11/src/main.vue?0961","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration11/src/main.vue?8634","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration11/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration12/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/decoration12/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration12/src/main.vue?4b80","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration12/src/main.vue?f4df","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration12/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration2/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/decoration2/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration2/src/main.vue?b364","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration2/src/main.vue?7015","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration2/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration3/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/decoration3/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration3/src/main.vue?a466","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration3/src/main.vue?3539","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration3/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration4/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/decoration4/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration4/src/main.vue?e3e0","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration4/src/main.vue?52a1","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration4/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration5/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/decoration5/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration5/src/main.vue?383f","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration5/src/main.vue?688c","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration5/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration6/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/decoration6/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration6/src/main.vue?9f64","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration6/src/main.vue?e2e5","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration6/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration7/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/decoration7/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration7/src/main.vue?7eae","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration7/src/main.vue?ed1e","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration7/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration8/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/decoration8/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration8/src/main.vue?02be","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration8/src/main.vue?248e","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration8/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration9/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/decoration9/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration9/src/main.vue?a12e","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration9/src/main.vue?7f04","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/decoration9/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/digitalFlop/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/flylineChart/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/flylineChart/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/flylineChart/src/main.vue?26ce","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/flylineChart/src/main.vue?02ad","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/flylineChart/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/flylineChartEnhanced/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/flylineChartEnhanced/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/flylineChartEnhanced/src/main.vue?ce9a","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/flylineChartEnhanced/src/main.vue?018a","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/flylineChartEnhanced/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/fullScreenContainer/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/fullScreenContainer/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/fullScreenContainer/src/main.vue?15d4","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/fullScreenContainer/src/main.vue?5a67","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/fullScreenContainer/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/loading/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/loading/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/loading/src/main.vue?e026","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/loading/src/main.vue?ca73","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/loading/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/percentPond/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/percentPond/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/percentPond/src/main.vue?3432","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/percentPond/src/main.vue?0e59","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/percentPond/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/scrollBoard/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/scrollBoard/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/scrollBoard/src/main.vue?84ff","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/scrollBoard/src/main.vue?b873","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/scrollBoard/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/scrollRankingBoard/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/scrollRankingBoard/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/scrollRankingBoard/src/main.vue?1b6a","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/scrollRankingBoard/src/main.vue?899b","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/scrollRankingBoard/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/waterLevelPond/src/main.vue","webpack://finacial/node_modules/@jiaminghi/data-view/lib/components/waterLevelPond/src/main.vue","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/waterLevelPond/src/main.vue?028c","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/waterLevelPond/src/main.vue?e580","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/components/waterLevelPond/index.js","webpack://finacial/./node_modules/@jiaminghi/data-view/lib/index.js","webpack://finacial/./node_modules/@jiaminghi/transition/lib/config/curves.js","webpack://finacial/./node_modules/@jiaminghi/transition/lib/index.js","webpack://finacial/./node_modules/async-validator/es/util.js","webpack://finacial/./node_modules/async-validator/es/rule/required.js","webpack://finacial/./node_modules/async-validator/es/rule/whitespace.js","webpack://finacial/./node_modules/async-validator/es/rule/type.js","webpack://finacial/./node_modules/async-validator/es/rule/range.js","webpack://finacial/./node_modules/async-validator/es/rule/enum.js","webpack://finacial/./node_modules/async-validator/es/rule/pattern.js","webpack://finacial/./node_modules/async-validator/es/rule/index.js","webpack://finacial/./node_modules/async-validator/es/validator/string.js","webpack://finacial/./node_modules/async-validator/es/validator/method.js","webpack://finacial/./node_modules/async-validator/es/validator/number.js","webpack://finacial/./node_modules/async-validator/es/validator/boolean.js","webpack://finacial/./node_modules/async-validator/es/validator/regexp.js","webpack://finacial/./node_modules/async-validator/es/validator/integer.js","webpack://finacial/./node_modules/async-validator/es/validator/float.js","webpack://finacial/./node_modules/async-validator/es/validator/array.js","webpack://finacial/./node_modules/async-validator/es/validator/object.js","webpack://finacial/./node_modules/async-validator/es/validator/enum.js","webpack://finacial/./node_modules/async-validator/es/validator/pattern.js","webpack://finacial/./node_modules/async-validator/es/validator/date.js","webpack://finacial/./node_modules/async-validator/es/validator/required.js","webpack://finacial/./node_modules/async-validator/es/validator/type.js","webpack://finacial/./node_modules/async-validator/es/validator/index.js","webpack://finacial/./node_modules/async-validator/es/messages.js","webpack://finacial/./node_modules/async-validator/es/index.js","webpack://finacial/./node_modules/babel-helper-vue-jsx-merge-props/index.js","webpack://finacial/./node_modules/babel-runtime/core-js/object/assign.js","webpack://finacial/./node_modules/babel-runtime/core-js/symbol.js","webpack://finacial/./node_modules/babel-runtime/core-js/symbol/iterator.js","webpack://finacial/./node_modules/babel-runtime/helpers/extends.js","webpack://finacial/./node_modules/babel-runtime/helpers/typeof.js","webpack://finacial/./node_modules/call-bind/callBound.js","webpack://finacial/./node_modules/call-bind/index.js","webpack://finacial/../src/layers/utils.ts","webpack://finacial/../src/layers/ABaseLayer.ts","webpack://finacial/../src/layers/ADOMBaseLayer.ts","webpack://finacial/../src/layers/SVGLayer.ts","webpack://finacial/../src/layers/CanvasLayer.ts","webpack://finacial/../src/layers/HTMLLayer.ts","webpack://finacial/../src/layers/CytoscapeLayer.ts","webpack://finacial/../src/elements/utils.ts","webpack://finacial/../src/elements/common.ts","webpack://finacial/../src/elements/edges.ts","webpack://finacial/../src/elements/nodes.ts","webpack://finacial/../src/copied.ts","webpack://finacial/../src/LayersPlugin.ts","webpack://finacial/../src/index.ts","webpack://finacial/../src/utils.ts","webpack://finacial/../src/model/Line.ts","webpack://finacial/../src/Intersection.ts","webpack://finacial/../src/model/Rectangle.ts","webpack://finacial/../src/model/Circle.ts","webpack://finacial/../src/model/Area.ts","webpack://finacial/../src/padding.ts","webpack://finacial/../src/potentialAreas.ts","webpack://finacial/../src/interfaces.ts","webpack://finacial/../src/routing.ts","webpack://finacial/../src/simplifiers/ShapeSimplifier.ts","webpack://finacial/../src/simplifiers/BSplineShapeGenerator.ts","webpack://finacial/../src/simplifiers/Sample.ts","webpack://finacial/../src/PointPath.ts","webpack://finacial/../src/model/PointList.ts","webpack://finacial/../src/MarchingSquares.ts","webpack://finacial/../src/BubbleSets.ts","webpack://finacial/../.yarn/cache/tslib-npm-2.4.1-36f0ed04db-19480d6e03.zip/node_modules/tslib/tslib.es6.js","webpack://finacial/../src/BubbleSetPath.ts","webpack://finacial/../src/BubbleSetsPlugin.ts","webpack://finacial/./node_modules/cytoscape-cxtmenu/cytoscape-cxtmenu.js","webpack://finacial/../../../../../../webpack/universalModuleDefinition","webpack://finacial/../../../../../../webpack/bootstrap 60aa78e92847518fd0f3","webpack://finacial/../../../../../../src/assign.js","webpack://finacial/../../../../../../src/euler/spring.js","webpack://finacial/../../../../../../src/euler/index.js","webpack://finacial/../../../../../../src/euler/body.js","webpack://finacial/../../../../../../src/euler/defaults.js","webpack://finacial/../../../../../../src/euler/drag.js","webpack://finacial/../../../../../../src/euler/integrate.js","webpack://finacial/../../../../../../src/euler/quadtree/index.js","webpack://finacial/../../../../../../src/euler/quadtree/insertStack.js","webpack://finacial/../../../../../../src/euler/quadtree/node.js","webpack://finacial/../../../../../../src/euler/tick.js","webpack://finacial/../../../../../../src/index.js","webpack://finacial/../../../../../../src/layout/defaults.js","webpack://finacial/../../../../../../src/layout/index.js","webpack://finacial/../../../../../../src/layout/make-bb.js","webpack://finacial/../../../../../../src/layout/position.js","webpack://finacial/../../../../../../src/layout/tick.js","webpack://finacial/node_modules/browser-pack/_prelude.js","webpack://finacial/src/boundingBoxUtilities.js","webpack://finacial/src/cueUtilities.js","webpack://finacial/src/debounce.js","webpack://finacial/src/debounce2.js","webpack://finacial/src/elementUtilities.js","webpack://finacial/src/expandCollapseUtilities.js","webpack://finacial/src/index.js","webpack://finacial/src/saveLoadUtilities.js","webpack://finacial/src/undoRedoUtilities.js","webpack://finacial/./node_modules/cytoscape/dist/cytoscape.cjs.js","webpack://finacial/./node_modules/deepmerge/dist/cjs.js","webpack://finacial/./node_modules/echarts/index.js","webpack://finacial/./node_modules/echarts/lib/CoordinateSystem.js","webpack://finacial/./node_modules/echarts/lib/ExtensionAPI.js","webpack://finacial/./node_modules/echarts/lib/action/createDataSelectAction.js","webpack://finacial/./node_modules/echarts/lib/action/geoRoam.js","webpack://finacial/./node_modules/echarts/lib/action/roamHelper.js","webpack://finacial/./node_modules/echarts/lib/chart/bar.js","webpack://finacial/./node_modules/echarts/lib/chart/bar/BarSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/bar/BarView.js","webpack://finacial/./node_modules/echarts/lib/chart/bar/BaseBarSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/bar/PictorialBarSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/bar/PictorialBarView.js","webpack://finacial/./node_modules/echarts/lib/chart/bar/barItemStyle.js","webpack://finacial/./node_modules/echarts/lib/chart/bar/helper.js","webpack://finacial/./node_modules/echarts/lib/chart/boxplot.js","webpack://finacial/./node_modules/echarts/lib/chart/boxplot/BoxplotSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/boxplot/BoxplotView.js","webpack://finacial/./node_modules/echarts/lib/chart/boxplot/boxplotLayout.js","webpack://finacial/./node_modules/echarts/lib/chart/boxplot/boxplotVisual.js","webpack://finacial/./node_modules/echarts/lib/chart/candlestick.js","webpack://finacial/./node_modules/echarts/lib/chart/candlestick/CandlestickSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/candlestick/CandlestickView.js","webpack://finacial/./node_modules/echarts/lib/chart/candlestick/candlestickLayout.js","webpack://finacial/./node_modules/echarts/lib/chart/candlestick/candlestickVisual.js","webpack://finacial/./node_modules/echarts/lib/chart/candlestick/preprocessor.js","webpack://finacial/./node_modules/echarts/lib/chart/custom.js","webpack://finacial/./node_modules/echarts/lib/chart/effectScatter.js","webpack://finacial/./node_modules/echarts/lib/chart/effectScatter/EffectScatterSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/effectScatter/EffectScatterView.js","webpack://finacial/./node_modules/echarts/lib/chart/funnel.js","webpack://finacial/./node_modules/echarts/lib/chart/funnel/FunnelSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/funnel/FunnelView.js","webpack://finacial/./node_modules/echarts/lib/chart/funnel/funnelLayout.js","webpack://finacial/./node_modules/echarts/lib/chart/gauge.js","webpack://finacial/./node_modules/echarts/lib/chart/gauge/GaugeSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/gauge/GaugeView.js","webpack://finacial/./node_modules/echarts/lib/chart/gauge/PointerPath.js","webpack://finacial/./node_modules/echarts/lib/chart/graph.js","webpack://finacial/./node_modules/echarts/lib/chart/graph/GraphSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/graph/GraphView.js","webpack://finacial/./node_modules/echarts/lib/chart/graph/adjustEdge.js","webpack://finacial/./node_modules/echarts/lib/chart/graph/categoryFilter.js","webpack://finacial/./node_modules/echarts/lib/chart/graph/categoryVisual.js","webpack://finacial/./node_modules/echarts/lib/chart/graph/circularLayout.js","webpack://finacial/./node_modules/echarts/lib/chart/graph/circularLayoutHelper.js","webpack://finacial/./node_modules/echarts/lib/chart/graph/createView.js","webpack://finacial/./node_modules/echarts/lib/chart/graph/edgeVisual.js","webpack://finacial/./node_modules/echarts/lib/chart/graph/forceHelper.js","webpack://finacial/./node_modules/echarts/lib/chart/graph/forceLayout.js","webpack://finacial/./node_modules/echarts/lib/chart/graph/graphAction.js","webpack://finacial/./node_modules/echarts/lib/chart/graph/graphHelper.js","webpack://finacial/./node_modules/echarts/lib/chart/graph/simpleLayout.js","webpack://finacial/./node_modules/echarts/lib/chart/graph/simpleLayoutHelper.js","webpack://finacial/./node_modules/echarts/lib/chart/heatmap.js","webpack://finacial/./node_modules/echarts/lib/chart/heatmap/HeatmapLayer.js","webpack://finacial/./node_modules/echarts/lib/chart/heatmap/HeatmapSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/heatmap/HeatmapView.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/EffectLine.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/EffectPolyline.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/EffectSymbol.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/LargeLineDraw.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/LargeSymbolDraw.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/Line.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/LineDraw.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/LinePath.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/Polyline.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/Symbol.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/SymbolDraw.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/createListFromArray.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/createListSimply.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/createRenderPlanner.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/focusNodeAdjacencyAction.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/labelHelper.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/multipleGraphEdgeHelper.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/treeHelper.js","webpack://finacial/./node_modules/echarts/lib/chart/helper/whiskerBoxCommon.js","webpack://finacial/./node_modules/echarts/lib/chart/line.js","webpack://finacial/./node_modules/echarts/lib/chart/line/LineSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/line/LineView.js","webpack://finacial/./node_modules/echarts/lib/chart/line/helper.js","webpack://finacial/./node_modules/echarts/lib/chart/line/lineAnimationDiff.js","webpack://finacial/./node_modules/echarts/lib/chart/line/poly.js","webpack://finacial/./node_modules/echarts/lib/chart/lines.js","webpack://finacial/./node_modules/echarts/lib/chart/lines/LinesSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/lines/LinesView.js","webpack://finacial/./node_modules/echarts/lib/chart/lines/linesLayout.js","webpack://finacial/./node_modules/echarts/lib/chart/lines/linesVisual.js","webpack://finacial/./node_modules/echarts/lib/chart/map.js","webpack://finacial/./node_modules/echarts/lib/chart/map/MapSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/map/MapView.js","webpack://finacial/./node_modules/echarts/lib/chart/map/backwardCompat.js","webpack://finacial/./node_modules/echarts/lib/chart/map/mapDataStatistic.js","webpack://finacial/./node_modules/echarts/lib/chart/map/mapSymbolLayout.js","webpack://finacial/./node_modules/echarts/lib/chart/map/mapVisual.js","webpack://finacial/./node_modules/echarts/lib/chart/parallel.js","webpack://finacial/./node_modules/echarts/lib/chart/parallel/ParallelSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/parallel/ParallelView.js","webpack://finacial/./node_modules/echarts/lib/chart/parallel/parallelVisual.js","webpack://finacial/./node_modules/echarts/lib/chart/pictorialBar.js","webpack://finacial/./node_modules/echarts/lib/chart/pie.js","webpack://finacial/./node_modules/echarts/lib/chart/pie/PieSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/pie/PieView.js","webpack://finacial/./node_modules/echarts/lib/chart/pie/labelLayout.js","webpack://finacial/./node_modules/echarts/lib/chart/pie/pieLayout.js","webpack://finacial/./node_modules/echarts/lib/chart/radar.js","webpack://finacial/./node_modules/echarts/lib/chart/radar/RadarSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/radar/RadarView.js","webpack://finacial/./node_modules/echarts/lib/chart/radar/backwardCompat.js","webpack://finacial/./node_modules/echarts/lib/chart/radar/radarLayout.js","webpack://finacial/./node_modules/echarts/lib/chart/sankey.js","webpack://finacial/./node_modules/echarts/lib/chart/sankey/SankeySeries.js","webpack://finacial/./node_modules/echarts/lib/chart/sankey/SankeyView.js","webpack://finacial/./node_modules/echarts/lib/chart/sankey/sankeyAction.js","webpack://finacial/./node_modules/echarts/lib/chart/sankey/sankeyLayout.js","webpack://finacial/./node_modules/echarts/lib/chart/sankey/sankeyVisual.js","webpack://finacial/./node_modules/echarts/lib/chart/scatter.js","webpack://finacial/./node_modules/echarts/lib/chart/scatter/ScatterSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/scatter/ScatterView.js","webpack://finacial/./node_modules/echarts/lib/chart/sunburst.js","webpack://finacial/./node_modules/echarts/lib/chart/sunburst/SunburstPiece.js","webpack://finacial/./node_modules/echarts/lib/chart/sunburst/SunburstSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/sunburst/SunburstView.js","webpack://finacial/./node_modules/echarts/lib/chart/sunburst/sunburstAction.js","webpack://finacial/./node_modules/echarts/lib/chart/sunburst/sunburstLayout.js","webpack://finacial/./node_modules/echarts/lib/chart/themeRiver.js","webpack://finacial/./node_modules/echarts/lib/chart/themeRiver/ThemeRiverSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/themeRiver/ThemeRiverView.js","webpack://finacial/./node_modules/echarts/lib/chart/themeRiver/themeRiverLayout.js","webpack://finacial/./node_modules/echarts/lib/chart/themeRiver/themeRiverVisual.js","webpack://finacial/./node_modules/echarts/lib/chart/tree.js","webpack://finacial/./node_modules/echarts/lib/chart/tree/TreeSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/tree/TreeView.js","webpack://finacial/./node_modules/echarts/lib/chart/tree/layoutHelper.js","webpack://finacial/./node_modules/echarts/lib/chart/tree/traversalHelper.js","webpack://finacial/./node_modules/echarts/lib/chart/tree/treeAction.js","webpack://finacial/./node_modules/echarts/lib/chart/tree/treeLayout.js","webpack://finacial/./node_modules/echarts/lib/chart/treemap.js","webpack://finacial/./node_modules/echarts/lib/chart/treemap/Breadcrumb.js","webpack://finacial/./node_modules/echarts/lib/chart/treemap/TreemapSeries.js","webpack://finacial/./node_modules/echarts/lib/chart/treemap/TreemapView.js","webpack://finacial/./node_modules/echarts/lib/chart/treemap/treemapAction.js","webpack://finacial/./node_modules/echarts/lib/chart/treemap/treemapLayout.js","webpack://finacial/./node_modules/echarts/lib/chart/treemap/treemapVisual.js","webpack://finacial/./node_modules/echarts/lib/component/angleAxis.js","webpack://finacial/./node_modules/echarts/lib/component/axis.js","webpack://finacial/./node_modules/echarts/lib/component/axisPointer.js","webpack://finacial/./node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js","webpack://finacial/./node_modules/echarts/lib/component/axisPointer/AxisPointerView.js","webpack://finacial/./node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js","webpack://finacial/./node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js","webpack://finacial/./node_modules/echarts/lib/component/axisPointer/PolarAxisPointer.js","webpack://finacial/./node_modules/echarts/lib/component/axisPointer/SingleAxisPointer.js","webpack://finacial/./node_modules/echarts/lib/component/axisPointer/axisTrigger.js","webpack://finacial/./node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js","webpack://finacial/./node_modules/echarts/lib/component/axisPointer/globalListener.js","webpack://finacial/./node_modules/echarts/lib/component/axisPointer/modelHelper.js","webpack://finacial/./node_modules/echarts/lib/component/axisPointer/viewHelper.js","webpack://finacial/./node_modules/echarts/lib/component/axis/AngleAxisView.js","webpack://finacial/./node_modules/echarts/lib/component/axis/AxisBuilder.js","webpack://finacial/./node_modules/echarts/lib/component/axis/AxisView.js","webpack://finacial/./node_modules/echarts/lib/component/axis/CartesianAxisView.js","webpack://finacial/./node_modules/echarts/lib/component/axis/ParallelAxisView.js","webpack://finacial/./node_modules/echarts/lib/component/axis/RadiusAxisView.js","webpack://finacial/./node_modules/echarts/lib/component/axis/SingleAxisView.js","webpack://finacial/./node_modules/echarts/lib/component/axis/axisSplitHelper.js","webpack://finacial/./node_modules/echarts/lib/component/axis/parallelAxisAction.js","webpack://finacial/./node_modules/echarts/lib/component/brush.js","webpack://finacial/./node_modules/echarts/lib/component/brush/BrushModel.js","webpack://finacial/./node_modules/echarts/lib/component/brush/BrushView.js","webpack://finacial/./node_modules/echarts/lib/component/brush/brushAction.js","webpack://finacial/./node_modules/echarts/lib/component/brush/preprocessor.js","webpack://finacial/./node_modules/echarts/lib/component/brush/selector.js","webpack://finacial/./node_modules/echarts/lib/component/brush/visualEncoding.js","webpack://finacial/./node_modules/echarts/lib/component/calendar.js","webpack://finacial/./node_modules/echarts/lib/component/calendar/CalendarView.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoom.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoomInside.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoomSelect.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoomSlider.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoom/AxisProxy.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoom/DataZoomModel.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoom/DataZoomView.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoom/InsideZoomModel.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoom/InsideZoomView.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoom/SelectZoomModel.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoom/SelectZoomView.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoom/SliderZoomModel.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoom/SliderZoomView.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoom/dataZoomAction.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoom/dataZoomProcessor.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoom/helper.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoom/history.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoom/roams.js","webpack://finacial/./node_modules/echarts/lib/component/dataZoom/typeDefaulter.js","webpack://finacial/./node_modules/echarts/lib/component/dataset.js","webpack://finacial/./node_modules/echarts/lib/component/geo.js","webpack://finacial/./node_modules/echarts/lib/component/geo/GeoView.js","webpack://finacial/./node_modules/echarts/lib/component/graphic.js","webpack://finacial/./node_modules/echarts/lib/component/grid.js","webpack://finacial/./node_modules/echarts/lib/component/gridSimple.js","webpack://finacial/./node_modules/echarts/lib/component/helper/BrushController.js","webpack://finacial/./node_modules/echarts/lib/component/helper/BrushTargetManager.js","webpack://finacial/./node_modules/echarts/lib/component/helper/MapDraw.js","webpack://finacial/./node_modules/echarts/lib/component/helper/RoamController.js","webpack://finacial/./node_modules/echarts/lib/component/helper/brushHelper.js","webpack://finacial/./node_modules/echarts/lib/component/helper/cursorHelper.js","webpack://finacial/./node_modules/echarts/lib/component/helper/interactionMutex.js","webpack://finacial/./node_modules/echarts/lib/component/helper/listComponent.js","webpack://finacial/./node_modules/echarts/lib/component/helper/roamHelper.js","webpack://finacial/./node_modules/echarts/lib/component/helper/selectableMixin.js","webpack://finacial/./node_modules/echarts/lib/component/helper/sliderMove.js","webpack://finacial/./node_modules/echarts/lib/component/legend.js","webpack://finacial/./node_modules/echarts/lib/component/legendScroll.js","webpack://finacial/./node_modules/echarts/lib/component/legend/LegendModel.js","webpack://finacial/./node_modules/echarts/lib/component/legend/LegendView.js","webpack://finacial/./node_modules/echarts/lib/component/legend/ScrollableLegendModel.js","webpack://finacial/./node_modules/echarts/lib/component/legend/ScrollableLegendView.js","webpack://finacial/./node_modules/echarts/lib/component/legend/legendAction.js","webpack://finacial/./node_modules/echarts/lib/component/legend/legendFilter.js","webpack://finacial/./node_modules/echarts/lib/component/legend/scrollableLegendAction.js","webpack://finacial/./node_modules/echarts/lib/component/markArea.js","webpack://finacial/./node_modules/echarts/lib/component/markLine.js","webpack://finacial/./node_modules/echarts/lib/component/markPoint.js","webpack://finacial/./node_modules/echarts/lib/component/marker/MarkAreaModel.js","webpack://finacial/./node_modules/echarts/lib/component/marker/MarkAreaView.js","webpack://finacial/./node_modules/echarts/lib/component/marker/MarkLineModel.js","webpack://finacial/./node_modules/echarts/lib/component/marker/MarkLineView.js","webpack://finacial/./node_modules/echarts/lib/component/marker/MarkPointModel.js","webpack://finacial/./node_modules/echarts/lib/component/marker/MarkPointView.js","webpack://finacial/./node_modules/echarts/lib/component/marker/MarkerModel.js","webpack://finacial/./node_modules/echarts/lib/component/marker/MarkerView.js","webpack://finacial/./node_modules/echarts/lib/component/marker/markerHelper.js","webpack://finacial/./node_modules/echarts/lib/component/parallel.js","webpack://finacial/./node_modules/echarts/lib/component/parallelAxis.js","webpack://finacial/./node_modules/echarts/lib/component/polar.js","webpack://finacial/./node_modules/echarts/lib/component/radar.js","webpack://finacial/./node_modules/echarts/lib/component/radar/RadarView.js","webpack://finacial/./node_modules/echarts/lib/component/radiusAxis.js","webpack://finacial/./node_modules/echarts/lib/component/singleAxis.js","webpack://finacial/./node_modules/echarts/lib/component/timeline.js","webpack://finacial/./node_modules/echarts/lib/component/timeline/SliderTimelineModel.js","webpack://finacial/./node_modules/echarts/lib/component/timeline/SliderTimelineView.js","webpack://finacial/./node_modules/echarts/lib/component/timeline/TimelineAxis.js","webpack://finacial/./node_modules/echarts/lib/component/timeline/TimelineModel.js","webpack://finacial/./node_modules/echarts/lib/component/timeline/TimelineView.js","webpack://finacial/./node_modules/echarts/lib/component/timeline/preprocessor.js","webpack://finacial/./node_modules/echarts/lib/component/timeline/timelineAction.js","webpack://finacial/./node_modules/echarts/lib/component/timeline/typeDefaulter.js","webpack://finacial/./node_modules/echarts/lib/component/title.js","webpack://finacial/./node_modules/echarts/lib/component/toolbox.js","webpack://finacial/./node_modules/echarts/lib/component/toolbox/ToolboxModel.js","webpack://finacial/./node_modules/echarts/lib/component/toolbox/ToolboxView.js","webpack://finacial/./node_modules/echarts/lib/component/toolbox/featureManager.js","webpack://finacial/./node_modules/echarts/lib/component/toolbox/feature/Brush.js","webpack://finacial/./node_modules/echarts/lib/component/toolbox/feature/DataView.js","webpack://finacial/./node_modules/echarts/lib/component/toolbox/feature/DataZoom.js","webpack://finacial/./node_modules/echarts/lib/component/toolbox/feature/MagicType.js","webpack://finacial/./node_modules/echarts/lib/component/toolbox/feature/Restore.js","webpack://finacial/./node_modules/echarts/lib/component/toolbox/feature/SaveAsImage.js","webpack://finacial/./node_modules/echarts/lib/component/tooltip.js","webpack://finacial/./node_modules/echarts/lib/component/tooltip/TooltipContent.js","webpack://finacial/./node_modules/echarts/lib/component/tooltip/TooltipModel.js","webpack://finacial/./node_modules/echarts/lib/component/tooltip/TooltipRichContent.js","webpack://finacial/./node_modules/echarts/lib/component/tooltip/TooltipView.js","webpack://finacial/./node_modules/echarts/lib/component/visualMap.js","webpack://finacial/./node_modules/echarts/lib/component/visualMapContinuous.js","webpack://finacial/./node_modules/echarts/lib/component/visualMapPiecewise.js","webpack://finacial/./node_modules/echarts/lib/component/visualMap/ContinuousModel.js","webpack://finacial/./node_modules/echarts/lib/component/visualMap/ContinuousView.js","webpack://finacial/./node_modules/echarts/lib/component/visualMap/PiecewiseModel.js","webpack://finacial/./node_modules/echarts/lib/component/visualMap/PiecewiseView.js","webpack://finacial/./node_modules/echarts/lib/component/visualMap/VisualMapModel.js","webpack://finacial/./node_modules/echarts/lib/component/visualMap/VisualMapView.js","webpack://finacial/./node_modules/echarts/lib/component/visualMap/helper.js","webpack://finacial/./node_modules/echarts/lib/component/visualMap/preprocessor.js","webpack://finacial/./node_modules/echarts/lib/component/visualMap/typeDefaulter.js","webpack://finacial/./node_modules/echarts/lib/component/visualMap/visualEncoding.js","webpack://finacial/./node_modules/echarts/lib/component/visualMap/visualMapAction.js","webpack://finacial/./node_modules/echarts/lib/config.js","webpack://finacial/./node_modules/echarts/lib/coord/Axis.js","webpack://finacial/./node_modules/echarts/lib/coord/View.js","webpack://finacial/./node_modules/echarts/lib/coord/axisDefault.js","webpack://finacial/./node_modules/echarts/lib/coord/axisHelper.js","webpack://finacial/./node_modules/echarts/lib/coord/axisModelCommonMixin.js","webpack://finacial/./node_modules/echarts/lib/coord/axisModelCreator.js","webpack://finacial/./node_modules/echarts/lib/coord/axisTickLabelBuilder.js","webpack://finacial/./node_modules/echarts/lib/coord/calendar/Calendar.js","webpack://finacial/./node_modules/echarts/lib/coord/calendar/CalendarModel.js","webpack://finacial/./node_modules/echarts/lib/coord/calendar/prepareCustom.js","webpack://finacial/./node_modules/echarts/lib/coord/cartesian/Axis2D.js","webpack://finacial/./node_modules/echarts/lib/coord/cartesian/AxisModel.js","webpack://finacial/./node_modules/echarts/lib/coord/cartesian/Cartesian.js","webpack://finacial/./node_modules/echarts/lib/coord/cartesian/Cartesian2D.js","webpack://finacial/./node_modules/echarts/lib/coord/cartesian/Grid.js","webpack://finacial/./node_modules/echarts/lib/coord/cartesian/GridModel.js","webpack://finacial/./node_modules/echarts/lib/coord/cartesian/cartesianAxisHelper.js","webpack://finacial/./node_modules/echarts/lib/coord/cartesian/prepareCustom.js","webpack://finacial/./node_modules/echarts/lib/coord/geo/Geo.js","webpack://finacial/./node_modules/echarts/lib/coord/geo/GeoModel.js","webpack://finacial/./node_modules/echarts/lib/coord/geo/Region.js","webpack://finacial/./node_modules/echarts/lib/coord/geo/fix/diaoyuIsland.js","webpack://finacial/./node_modules/echarts/lib/coord/geo/fix/geoCoord.js","webpack://finacial/./node_modules/echarts/lib/coord/geo/fix/nanhai.js","webpack://finacial/./node_modules/echarts/lib/coord/geo/fix/textCoord.js","webpack://finacial/./node_modules/echarts/lib/coord/geo/geoCreator.js","webpack://finacial/./node_modules/echarts/lib/coord/geo/geoJSONLoader.js","webpack://finacial/./node_modules/echarts/lib/coord/geo/geoSVGLoader.js","webpack://finacial/./node_modules/echarts/lib/coord/geo/geoSourceManager.js","webpack://finacial/./node_modules/echarts/lib/coord/geo/mapDataStorage.js","webpack://finacial/./node_modules/echarts/lib/coord/geo/parseGeoJson.js","webpack://finacial/./node_modules/echarts/lib/coord/geo/prepareCustom.js","webpack://finacial/./node_modules/echarts/lib/coord/parallel/AxisModel.js","webpack://finacial/./node_modules/echarts/lib/coord/parallel/Parallel.js","webpack://finacial/./node_modules/echarts/lib/coord/parallel/ParallelAxis.js","webpack://finacial/./node_modules/echarts/lib/coord/parallel/ParallelModel.js","webpack://finacial/./node_modules/echarts/lib/coord/parallel/parallelCreator.js","webpack://finacial/./node_modules/echarts/lib/coord/parallel/parallelPreprocessor.js","webpack://finacial/./node_modules/echarts/lib/coord/polar/AngleAxis.js","webpack://finacial/./node_modules/echarts/lib/coord/polar/AxisModel.js","webpack://finacial/./node_modules/echarts/lib/coord/polar/Polar.js","webpack://finacial/./node_modules/echarts/lib/coord/polar/PolarModel.js","webpack://finacial/./node_modules/echarts/lib/coord/polar/RadiusAxis.js","webpack://finacial/./node_modules/echarts/lib/coord/polar/polarCreator.js","webpack://finacial/./node_modules/echarts/lib/coord/polar/prepareCustom.js","webpack://finacial/./node_modules/echarts/lib/coord/radar/IndicatorAxis.js","webpack://finacial/./node_modules/echarts/lib/coord/radar/Radar.js","webpack://finacial/./node_modules/echarts/lib/coord/radar/RadarModel.js","webpack://finacial/./node_modules/echarts/lib/coord/single/AxisModel.js","webpack://finacial/./node_modules/echarts/lib/coord/single/Single.js","webpack://finacial/./node_modules/echarts/lib/coord/single/SingleAxis.js","webpack://finacial/./node_modules/echarts/lib/coord/single/prepareCustom.js","webpack://finacial/./node_modules/echarts/lib/coord/single/singleAxisHelper.js","webpack://finacial/./node_modules/echarts/lib/coord/single/singleCreator.js","webpack://finacial/./node_modules/echarts/lib/data/DataDiffer.js","webpack://finacial/./node_modules/echarts/lib/data/DataDimensionInfo.js","webpack://finacial/./node_modules/echarts/lib/data/Graph.js","webpack://finacial/./node_modules/echarts/lib/data/List.js","webpack://finacial/./node_modules/echarts/lib/data/OrdinalMeta.js","webpack://finacial/./node_modules/echarts/lib/data/Source.js","webpack://finacial/./node_modules/echarts/lib/data/Tree.js","webpack://finacial/./node_modules/echarts/lib/data/helper/completeDimensions.js","webpack://finacial/./node_modules/echarts/lib/data/helper/createDimensions.js","webpack://finacial/./node_modules/echarts/lib/data/helper/dataProvider.js","webpack://finacial/./node_modules/echarts/lib/data/helper/dataStackHelper.js","webpack://finacial/./node_modules/echarts/lib/data/helper/dimensionHelper.js","webpack://finacial/./node_modules/echarts/lib/data/helper/linkList.js","webpack://finacial/./node_modules/echarts/lib/data/helper/sourceHelper.js","webpack://finacial/./node_modules/echarts/lib/data/helper/sourceType.js","webpack://finacial/./node_modules/echarts/lib/echarts.js","webpack://finacial/./node_modules/echarts/lib/export.js","webpack://finacial/./node_modules/echarts/lib/helper.js","webpack://finacial/./node_modules/echarts/lib/lang.js","webpack://finacial/./node_modules/echarts/lib/layout/barGrid.js","webpack://finacial/./node_modules/echarts/lib/layout/barPolar.js","webpack://finacial/./node_modules/echarts/lib/layout/points.js","webpack://finacial/./node_modules/echarts/lib/loading/default.js","webpack://finacial/./node_modules/echarts/lib/model/Component.js","webpack://finacial/./node_modules/echarts/lib/model/Global.js","webpack://finacial/./node_modules/echarts/lib/model/Model.js","webpack://finacial/./node_modules/echarts/lib/model/OptionManager.js","webpack://finacial/./node_modules/echarts/lib/model/Series.js","webpack://finacial/./node_modules/echarts/lib/model/globalDefault.js","webpack://finacial/./node_modules/echarts/lib/model/mixin/areaStyle.js","webpack://finacial/./node_modules/echarts/lib/model/mixin/boxLayout.js","webpack://finacial/./node_modules/echarts/lib/model/mixin/colorPalette.js","webpack://finacial/./node_modules/echarts/lib/model/mixin/dataFormat.js","webpack://finacial/./node_modules/echarts/lib/model/mixin/itemStyle.js","webpack://finacial/./node_modules/echarts/lib/model/mixin/lineStyle.js","webpack://finacial/./node_modules/echarts/lib/model/mixin/makeStyleMapper.js","webpack://finacial/./node_modules/echarts/lib/model/mixin/textStyle.js","webpack://finacial/./node_modules/echarts/lib/model/referHelper.js","webpack://finacial/./node_modules/echarts/lib/preprocessor/backwardCompat.js","webpack://finacial/./node_modules/echarts/lib/preprocessor/helper/compatStyle.js","webpack://finacial/./node_modules/echarts/lib/processor/dataFilter.js","webpack://finacial/./node_modules/echarts/lib/processor/dataSample.js","webpack://finacial/./node_modules/echarts/lib/processor/dataStack.js","webpack://finacial/./node_modules/echarts/lib/scale/Interval.js","webpack://finacial/./node_modules/echarts/lib/scale/Log.js","webpack://finacial/./node_modules/echarts/lib/scale/Ordinal.js","webpack://finacial/./node_modules/echarts/lib/scale/Scale.js","webpack://finacial/./node_modules/echarts/lib/scale/Time.js","webpack://finacial/./node_modules/echarts/lib/scale/helper.js","webpack://finacial/./node_modules/echarts/lib/stream/Scheduler.js","webpack://finacial/./node_modules/echarts/lib/stream/task.js","webpack://finacial/./node_modules/echarts/lib/theme/dark.js","webpack://finacial/./node_modules/echarts/lib/theme/light.js","webpack://finacial/./node_modules/echarts/lib/util/animation.js","webpack://finacial/./node_modules/echarts/lib/util/clazz.js","webpack://finacial/./node_modules/echarts/lib/util/component.js","webpack://finacial/./node_modules/echarts/lib/util/format.js","webpack://finacial/./node_modules/echarts/lib/util/graphic.js","webpack://finacial/./node_modules/echarts/lib/util/layout.js","webpack://finacial/./node_modules/echarts/lib/util/model.js","webpack://finacial/./node_modules/echarts/lib/util/number.js","webpack://finacial/./node_modules/echarts/lib/util/shape/sausage.js","webpack://finacial/./node_modules/echarts/lib/util/symbol.js","webpack://finacial/./node_modules/echarts/lib/util/throttle.js","webpack://finacial/./node_modules/echarts/lib/view/Chart.js","webpack://finacial/./node_modules/echarts/lib/view/Component.js","webpack://finacial/./node_modules/echarts/lib/visual/LegendVisualProvider.js","webpack://finacial/./node_modules/echarts/lib/visual/VisualMapping.js","webpack://finacial/./node_modules/echarts/lib/visual/aria.js","webpack://finacial/./node_modules/echarts/lib/visual/dataColor.js","webpack://finacial/./node_modules/echarts/lib/visual/seriesColor.js","webpack://finacial/./node_modules/echarts/lib/visual/symbol.js","webpack://finacial/./node_modules/echarts/lib/visual/visualDefault.js","webpack://finacial/./node_modules/echarts/lib/visual/visualSolution.js","webpack://finacial/./node_modules/echarts/map/js/china.js","webpack://finacial/./node_modules/element-ui/lib/button-group.js","webpack://finacial/./node_modules/element-ui/lib/button.js","webpack://finacial/./node_modules/element-ui/lib/cascader-panel.js","webpack://finacial/./node_modules/element-ui/lib/checkbox-group.js","webpack://finacial/./node_modules/element-ui/lib/checkbox.js","webpack://finacial/./node_modules/element-ui/lib/element-ui.common.js","webpack://finacial/./node_modules/element-ui/lib/input-number.js","webpack://finacial/./node_modules/element-ui/lib/input.js","webpack://finacial/./node_modules/element-ui/lib/locale/format.js","webpack://finacial/./node_modules/element-ui/lib/locale/index.js","webpack://finacial/./node_modules/element-ui/lib/locale/lang/zh-CN.js","webpack://finacial/./node_modules/element-ui/lib/mixins/emitter.js","webpack://finacial/./node_modules/element-ui/lib/mixins/focus.js","webpack://finacial/./node_modules/element-ui/lib/mixins/locale.js","webpack://finacial/./node_modules/element-ui/lib/mixins/migrating.js","webpack://finacial/./node_modules/element-ui/lib/option.js","webpack://finacial/./node_modules/element-ui/lib/popover.js","webpack://finacial/./node_modules/element-ui/lib/progress.js","webpack://finacial/./node_modules/element-ui/lib/radio.js","webpack://finacial/./node_modules/element-ui/lib/scrollbar.js","webpack://finacial/./node_modules/element-ui/lib/select.js","webpack://finacial/./node_modules/element-ui/lib/tag.js","webpack://finacial/./node_modules/element-ui/lib/tooltip.js","webpack://finacial/./node_modules/element-ui/lib/transitions/collapse-transition.js","webpack://finacial/./node_modules/element-ui/lib/utils/after-leave.js","webpack://finacial/./node_modules/element-ui/lib/utils/aria-dialog.js","webpack://finacial/./node_modules/element-ui/lib/utils/aria-utils.js","webpack://finacial/./node_modules/element-ui/lib/utils/clickoutside.js","webpack://finacial/./node_modules/element-ui/lib/utils/date-util.js","webpack://finacial/./node_modules/element-ui/lib/utils/date.js","webpack://finacial/./node_modules/element-ui/lib/utils/dom.js","webpack://finacial/./node_modules/element-ui/lib/utils/lodash.js","webpack://finacial/./node_modules/element-ui/lib/utils/merge.js","webpack://finacial/./node_modules/element-ui/lib/utils/popper.js","webpack://finacial/./node_modules/element-ui/lib/utils/popup/index.js","webpack://finacial/./node_modules/element-ui/lib/utils/popup/popup-manager.js","webpack://finacial/./node_modules/element-ui/lib/utils/resize-event.js","webpack://finacial/./node_modules/element-ui/lib/utils/scroll-into-view.js","webpack://finacial/./node_modules/element-ui/lib/utils/scrollbar-width.js","webpack://finacial/./node_modules/element-ui/lib/utils/shared.js","webpack://finacial/./node_modules/element-ui/lib/utils/types.js","webpack://finacial/./node_modules/element-ui/lib/utils/util.js","webpack://finacial/./node_modules/element-ui/lib/utils/vdom.js","webpack://finacial/./node_modules/element-ui/lib/utils/vue-popper.js","webpack://finacial/./node_modules/function-bind/implementation.js","webpack://finacial/./node_modules/function-bind/index.js","webpack://finacial/./node_modules/get-intrinsic/index.js","webpack://finacial/./node_modules/has-proto/index.js","webpack://finacial/./node_modules/has-symbols/index.js","webpack://finacial/./node_modules/has-symbols/shams.js","webpack://finacial/./node_modules/has/src/index.js","webpack://finacial/./node_modules/heap/index.js","webpack://finacial/./node_modules/heap/lib/heap.js","webpack://finacial/./node_modules/lodash.throttle/index.js","webpack://finacial/./node_modules/lodash/_Hash.js","webpack://finacial/./node_modules/lodash/_ListCache.js","webpack://finacial/./node_modules/lodash/_Map.js","webpack://finacial/./node_modules/lodash/_MapCache.js","webpack://finacial/./node_modules/lodash/_Symbol.js","webpack://finacial/./node_modules/lodash/_arrayMap.js","webpack://finacial/./node_modules/lodash/_assignValue.js","webpack://finacial/./node_modules/lodash/_assocIndexOf.js","webpack://finacial/./node_modules/lodash/_baseAssignValue.js","webpack://finacial/./node_modules/lodash/_baseGet.js","webpack://finacial/./node_modules/lodash/_baseGetTag.js","webpack://finacial/./node_modules/lodash/_baseIsNative.js","webpack://finacial/./node_modules/lodash/_baseSet.js","webpack://finacial/./node_modules/lodash/_baseToString.js","webpack://finacial/./node_modules/lodash/_baseTrim.js","webpack://finacial/./node_modules/lodash/_castPath.js","webpack://finacial/./node_modules/lodash/_copyArray.js","webpack://finacial/./node_modules/lodash/_coreJsData.js","webpack://finacial/./node_modules/lodash/_defineProperty.js","webpack://finacial/./node_modules/lodash/_freeGlobal.js","webpack://finacial/./node_modules/lodash/_getMapData.js","webpack://finacial/./node_modules/lodash/_getNative.js","webpack://finacial/./node_modules/lodash/_getRawTag.js","webpack://finacial/./node_modules/lodash/_getValue.js","webpack://finacial/./node_modules/lodash/_hashClear.js","webpack://finacial/./node_modules/lodash/_hashDelete.js","webpack://finacial/./node_modules/lodash/_hashGet.js","webpack://finacial/./node_modules/lodash/_hashHas.js","webpack://finacial/./node_modules/lodash/_hashSet.js","webpack://finacial/./node_modules/lodash/_isIndex.js","webpack://finacial/./node_modules/lodash/_isKey.js","webpack://finacial/./node_modules/lodash/_isKeyable.js","webpack://finacial/./node_modules/lodash/_isMasked.js","webpack://finacial/./node_modules/lodash/_listCacheClear.js","webpack://finacial/./node_modules/lodash/_listCacheDelete.js","webpack://finacial/./node_modules/lodash/_listCacheGet.js","webpack://finacial/./node_modules/lodash/_listCacheHas.js","webpack://finacial/./node_modules/lodash/_listCacheSet.js","webpack://finacial/./node_modules/lodash/_mapCacheClear.js","webpack://finacial/./node_modules/lodash/_mapCacheDelete.js","webpack://finacial/./node_modules/lodash/_mapCacheGet.js","webpack://finacial/./node_modules/lodash/_mapCacheHas.js","webpack://finacial/./node_modules/lodash/_mapCacheSet.js","webpack://finacial/./node_modules/lodash/_memoizeCapped.js","webpack://finacial/./node_modules/lodash/_nativeCreate.js","webpack://finacial/./node_modules/lodash/_objectToString.js","webpack://finacial/./node_modules/lodash/_root.js","webpack://finacial/./node_modules/lodash/_stringToPath.js","webpack://finacial/./node_modules/lodash/_toKey.js","webpack://finacial/./node_modules/lodash/_toSource.js","webpack://finacial/./node_modules/lodash/_trimmedEndIndex.js","webpack://finacial/./node_modules/lodash/debounce.js","webpack://finacial/./node_modules/lodash/eq.js","webpack://finacial/./node_modules/lodash/get.js","webpack://finacial/./node_modules/lodash/isArray.js","webpack://finacial/./node_modules/lodash/isFunction.js","webpack://finacial/./node_modules/lodash/isObject.js","webpack://finacial/./node_modules/lodash/isObjectLike.js","webpack://finacial/./node_modules/lodash/isSymbol.js","webpack://finacial/./node_modules/lodash/memoize.js","webpack://finacial/./node_modules/lodash/now.js","webpack://finacial/./node_modules/lodash/set.js","webpack://finacial/./node_modules/lodash/toNumber.js","webpack://finacial/./node_modules/lodash/toPath.js","webpack://finacial/./node_modules/lodash/toString.js","webpack://finacial/./node_modules/normalize-wheel/index.js","webpack://finacial/./node_modules/normalize-wheel/src/ExecutionEnvironment.js","webpack://finacial/./node_modules/normalize-wheel/src/UserAgent_DEPRECATED.js","webpack://finacial/./node_modules/normalize-wheel/src/isEventSupported.js","webpack://finacial/./node_modules/normalize-wheel/src/normalizeWheel.js","webpack://finacial/./node_modules/object-inspect/index.js","webpack://finacial/./node_modules/qs/lib/formats.js","webpack://finacial/./node_modules/qs/lib/index.js","webpack://finacial/./node_modules/qs/lib/parse.js","webpack://finacial/./node_modules/qs/lib/stringify.js","webpack://finacial/./node_modules/qs/lib/utils.js","webpack://finacial/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://finacial/./node_modules/side-channel/index.js","webpack://finacial/./node_modules/throttle-debounce/debounce.js","webpack://finacial/./node_modules/throttle-debounce/index.js","webpack://finacial/./node_modules/throttle-debounce/throttle.js","webpack://finacial/../../../../../../vue-contextmenu.min.js","webpack://finacial/../../../../../../webpack/bootstrap 55f93e27ded772c7650a","webpack://finacial/../../../../../../~/css-loader/lib/css-base.js","webpack://finacial/../../../../../../~/vue-loader/lib/component-normalizer.js","webpack://finacial/../../../../../../~/vue-style-loader/lib/addStylesClient.js","webpack://finacial/../../../../../../src/VueContextMenu.vue","webpack://finacial/../../../../../../Tree.vue","webpack://finacial/../../../../../../VueContextMenu.vue","webpack://finacial/../../../../../../src/main.js","webpack://finacial/../../../../../../src/VueContextMenu.vue?6d1c","webpack://finacial/../../../../../../src/Tree.vue?4255","webpack://finacial/../../../../../../src/Tree.vue","webpack://finacial/../../../../../../src/VueContextMenu.vue?5400","webpack://finacial/../../../../../../src/Tree.vue?ad43","webpack://finacial/../../../../../../src/VueContextMenu.vue?6d62","webpack://finacial/../../../../../../src/Tree.vue?6de2","webpack://finacial/../../../../../../~/vue-style-loader/lib/listToStyles.js","webpack://finacial/./node_modules/vue-router/dist/vue-router.esm.js","webpack://finacial/./node_modules/vue-seamless-scroll/dist/vue-seamless-scroll.min.js","webpack://finacial/./node_modules/vue/dist/vue.runtime.esm.js","webpack://finacial/./node_modules/vuex/dist/vuex.esm.js","webpack://finacial/./node_modules/zrender/lib/Element.js","webpack://finacial/./node_modules/zrender/lib/Handler.js","webpack://finacial/./node_modules/zrender/lib/Layer.js","webpack://finacial/./node_modules/zrender/lib/Painter.js","webpack://finacial/./node_modules/zrender/lib/Storage.js","webpack://finacial/./node_modules/zrender/lib/animation/Animation.js","webpack://finacial/./node_modules/zrender/lib/animation/Animator.js","webpack://finacial/./node_modules/zrender/lib/animation/Clip.js","webpack://finacial/./node_modules/zrender/lib/animation/easing.js","webpack://finacial/./node_modules/zrender/lib/animation/requestAnimationFrame.js","webpack://finacial/./node_modules/zrender/lib/config.js","webpack://finacial/./node_modules/zrender/lib/contain/arc.js","webpack://finacial/./node_modules/zrender/lib/contain/cubic.js","webpack://finacial/./node_modules/zrender/lib/contain/line.js","webpack://finacial/./node_modules/zrender/lib/contain/path.js","webpack://finacial/./node_modules/zrender/lib/contain/polygon.js","webpack://finacial/./node_modules/zrender/lib/contain/quadratic.js","webpack://finacial/./node_modules/zrender/lib/contain/text.js","webpack://finacial/./node_modules/zrender/lib/contain/util.js","webpack://finacial/./node_modules/zrender/lib/contain/windingLine.js","webpack://finacial/./node_modules/zrender/lib/container/Group.js","webpack://finacial/./node_modules/zrender/lib/core/BoundingRect.js","webpack://finacial/./node_modules/zrender/lib/core/GestureMgr.js","webpack://finacial/./node_modules/zrender/lib/core/LRU.js","webpack://finacial/./node_modules/zrender/lib/core/PathProxy.js","webpack://finacial/./node_modules/zrender/lib/core/arrayDiff2.js","webpack://finacial/./node_modules/zrender/lib/core/bbox.js","webpack://finacial/./node_modules/zrender/lib/core/curve.js","webpack://finacial/./node_modules/zrender/lib/core/dom.js","webpack://finacial/./node_modules/zrender/lib/core/env.js","webpack://finacial/./node_modules/zrender/lib/core/event.js","webpack://finacial/./node_modules/zrender/lib/core/fourPointsTransform.js","webpack://finacial/./node_modules/zrender/lib/core/guid.js","webpack://finacial/./node_modules/zrender/lib/core/log.js","webpack://finacial/./node_modules/zrender/lib/core/matrix.js","webpack://finacial/./node_modules/zrender/lib/core/timsort.js","webpack://finacial/./node_modules/zrender/lib/core/util.js","webpack://finacial/./node_modules/zrender/lib/core/vector.js","webpack://finacial/./node_modules/zrender/lib/dom/HandlerProxy.js","webpack://finacial/./node_modules/zrender/lib/graphic/CompoundPath.js","webpack://finacial/./node_modules/zrender/lib/graphic/Displayable.js","webpack://finacial/./node_modules/zrender/lib/graphic/Gradient.js","webpack://finacial/./node_modules/zrender/lib/graphic/Image.js","webpack://finacial/./node_modules/zrender/lib/graphic/IncrementalDisplayable.js","webpack://finacial/./node_modules/zrender/lib/graphic/LinearGradient.js","webpack://finacial/./node_modules/zrender/lib/graphic/Path.js","webpack://finacial/./node_modules/zrender/lib/graphic/Pattern.js","webpack://finacial/./node_modules/zrender/lib/graphic/RadialGradient.js","webpack://finacial/./node_modules/zrender/lib/graphic/Style.js","webpack://finacial/./node_modules/zrender/lib/graphic/Text.js","webpack://finacial/./node_modules/zrender/lib/graphic/constant.js","webpack://finacial/./node_modules/zrender/lib/graphic/helper/fixClipWithShadow.js","webpack://finacial/./node_modules/zrender/lib/graphic/helper/fixShadow.js","webpack://finacial/./node_modules/zrender/lib/graphic/helper/image.js","webpack://finacial/./node_modules/zrender/lib/graphic/helper/poly.js","webpack://finacial/./node_modules/zrender/lib/graphic/helper/roundRect.js","webpack://finacial/./node_modules/zrender/lib/graphic/helper/smoothBezier.js","webpack://finacial/./node_modules/zrender/lib/graphic/helper/smoothSpline.js","webpack://finacial/./node_modules/zrender/lib/graphic/helper/subPixelOptimize.js","webpack://finacial/./node_modules/zrender/lib/graphic/helper/text.js","webpack://finacial/./node_modules/zrender/lib/graphic/mixin/RectText.js","webpack://finacial/./node_modules/zrender/lib/graphic/shape/Arc.js","webpack://finacial/./node_modules/zrender/lib/graphic/shape/BezierCurve.js","webpack://finacial/./node_modules/zrender/lib/graphic/shape/Circle.js","webpack://finacial/./node_modules/zrender/lib/graphic/shape/Ellipse.js","webpack://finacial/./node_modules/zrender/lib/graphic/shape/Line.js","webpack://finacial/./node_modules/zrender/lib/graphic/shape/Polygon.js","webpack://finacial/./node_modules/zrender/lib/graphic/shape/Polyline.js","webpack://finacial/./node_modules/zrender/lib/graphic/shape/Rect.js","webpack://finacial/./node_modules/zrender/lib/graphic/shape/Ring.js","webpack://finacial/./node_modules/zrender/lib/graphic/shape/Sector.js","webpack://finacial/./node_modules/zrender/lib/mixin/Animatable.js","webpack://finacial/./node_modules/zrender/lib/mixin/Draggable.js","webpack://finacial/./node_modules/zrender/lib/mixin/Eventful.js","webpack://finacial/./node_modules/zrender/lib/mixin/Transformable.js","webpack://finacial/./node_modules/zrender/lib/svg/Painter.js","webpack://finacial/./node_modules/zrender/lib/svg/core.js","webpack://finacial/./node_modules/zrender/lib/svg/graphic.js","webpack://finacial/./node_modules/zrender/lib/svg/helper/ClippathManager.js","webpack://finacial/./node_modules/zrender/lib/svg/helper/Definable.js","webpack://finacial/./node_modules/zrender/lib/svg/helper/GradientManager.js","webpack://finacial/./node_modules/zrender/lib/svg/helper/ShadowManager.js","webpack://finacial/./node_modules/zrender/lib/svg/svg.js","webpack://finacial/./node_modules/zrender/lib/tool/color.js","webpack://finacial/./node_modules/zrender/lib/tool/parseSVG.js","webpack://finacial/./node_modules/zrender/lib/tool/path.js","webpack://finacial/./node_modules/zrender/lib/tool/transformPath.js","webpack://finacial/./node_modules/zrender/lib/vml/Painter.js","webpack://finacial/./node_modules/zrender/lib/vml/core.js","webpack://finacial/./node_modules/zrender/lib/vml/graphic.js","webpack://finacial/./node_modules/zrender/lib/vml/vml.js","webpack://finacial/./node_modules/zrender/lib/zrender.js","webpack://finacial/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://finacial/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://finacial/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://finacial/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://finacial/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://finacial/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://finacial/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://finacial/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://finacial/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://finacial/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://finacial/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://finacial/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://finacial/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://finacial/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://finacial/./node_modules/@babel/runtime/helpers/toPrimitive.js","webpack://finacial/./node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack://finacial/./node_modules/@babel/runtime/helpers/typeof.js","webpack://finacial/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://finacial/./node_modules/@babel/runtime/regenerator/index.js","webpack://finacial/./node_modules/@jiaminghi/color/es/config/keywords.mjs","webpack://finacial/./node_modules/@jiaminghi/color/es/index.mjs","webpack://finacial/./node_modules/axios/lib/helpers/bind.js","webpack://finacial/./node_modules/axios/lib/utils.js","webpack://finacial/./node_modules/axios/lib/core/AxiosError.js","webpack://finacial/./node_modules/axios/lib/helpers/null.js","webpack://finacial/./node_modules/axios/lib/helpers/toFormData.js","webpack://finacial/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack://finacial/./node_modules/axios/lib/helpers/buildURL.js","webpack://finacial/./node_modules/axios/lib/core/InterceptorManager.js","webpack://finacial/./node_modules/axios/lib/defaults/transitional.js","webpack://finacial/./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack://finacial/./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack://finacial/./node_modules/axios/lib/platform/browser/classes/Blob.js","webpack://finacial/./node_modules/axios/lib/platform/browser/index.js","webpack://finacial/./node_modules/axios/lib/platform/common/utils.js","webpack://finacial/./node_modules/axios/lib/platform/index.js","webpack://finacial/./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack://finacial/./node_modules/axios/lib/helpers/formDataToJSON.js","webpack://finacial/./node_modules/axios/lib/defaults/index.js","webpack://finacial/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://finacial/./node_modules/axios/lib/core/AxiosHeaders.js","webpack://finacial/./node_modules/axios/lib/core/transformData.js","webpack://finacial/./node_modules/axios/lib/cancel/isCancel.js","webpack://finacial/./node_modules/axios/lib/cancel/CanceledError.js","webpack://finacial/./node_modules/axios/lib/core/settle.js","webpack://finacial/./node_modules/axios/lib/helpers/cookies.js","webpack://finacial/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://finacial/./node_modules/axios/lib/helpers/combineURLs.js","webpack://finacial/./node_modules/axios/lib/core/buildFullPath.js","webpack://finacial/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://finacial/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://finacial/./node_modules/axios/lib/helpers/speedometer.js","webpack://finacial/./node_modules/axios/lib/adapters/xhr.js","webpack://finacial/./node_modules/axios/lib/adapters/adapters.js","webpack://finacial/./node_modules/axios/lib/core/dispatchRequest.js","webpack://finacial/./node_modules/axios/lib/core/mergeConfig.js","webpack://finacial/./node_modules/axios/lib/env/data.js","webpack://finacial/./node_modules/axios/lib/helpers/validator.js","webpack://finacial/./node_modules/axios/lib/core/Axios.js","webpack://finacial/./node_modules/axios/lib/cancel/CancelToken.js","webpack://finacial/./node_modules/axios/lib/helpers/spread.js","webpack://finacial/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://finacial/./node_modules/axios/lib/helpers/HttpStatusCode.js","webpack://finacial/./node_modules/axios/lib/axios.js","webpack://finacial/./node_modules/d3-axis/src/identity.js","webpack://finacial/./node_modules/d3-axis/src/axis.js","webpack://finacial/./node_modules/d3-dispatch/src/dispatch.js","webpack://finacial/./node_modules/d3-selection/src/selector.js","webpack://finacial/./node_modules/d3-selection/src/selection/select.js","webpack://finacial/./node_modules/d3-selection/src/array.js","webpack://finacial/./node_modules/d3-selection/src/selectorAll.js","webpack://finacial/./node_modules/d3-selection/src/selection/selectAll.js","webpack://finacial/./node_modules/d3-selection/src/matcher.js","webpack://finacial/./node_modules/d3-selection/src/selection/selectChild.js","webpack://finacial/./node_modules/d3-selection/src/selection/selectChildren.js","webpack://finacial/./node_modules/d3-selection/src/selection/filter.js","webpack://finacial/./node_modules/d3-selection/src/selection/sparse.js","webpack://finacial/./node_modules/d3-selection/src/selection/enter.js","webpack://finacial/./node_modules/d3-selection/src/constant.js","webpack://finacial/./node_modules/d3-selection/src/selection/data.js","webpack://finacial/./node_modules/d3-selection/src/selection/exit.js","webpack://finacial/./node_modules/d3-selection/src/selection/join.js","webpack://finacial/./node_modules/d3-selection/src/selection/merge.js","webpack://finacial/./node_modules/d3-selection/src/selection/order.js","webpack://finacial/./node_modules/d3-selection/src/selection/sort.js","webpack://finacial/./node_modules/d3-selection/src/selection/call.js","webpack://finacial/./node_modules/d3-selection/src/selection/nodes.js","webpack://finacial/./node_modules/d3-selection/src/selection/node.js","webpack://finacial/./node_modules/d3-selection/src/selection/size.js","webpack://finacial/./node_modules/d3-selection/src/selection/empty.js","webpack://finacial/./node_modules/d3-selection/src/selection/each.js","webpack://finacial/./node_modules/d3-selection/src/namespaces.js","webpack://finacial/./node_modules/d3-selection/src/namespace.js","webpack://finacial/./node_modules/d3-selection/src/selection/attr.js","webpack://finacial/./node_modules/d3-selection/src/window.js","webpack://finacial/./node_modules/d3-selection/src/selection/style.js","webpack://finacial/./node_modules/d3-selection/src/selection/property.js","webpack://finacial/./node_modules/d3-selection/src/selection/classed.js","webpack://finacial/./node_modules/d3-selection/src/selection/text.js","webpack://finacial/./node_modules/d3-selection/src/selection/html.js","webpack://finacial/./node_modules/d3-selection/src/selection/raise.js","webpack://finacial/./node_modules/d3-selection/src/selection/lower.js","webpack://finacial/./node_modules/d3-selection/src/creator.js","webpack://finacial/./node_modules/d3-selection/src/selection/append.js","webpack://finacial/./node_modules/d3-selection/src/selection/insert.js","webpack://finacial/./node_modules/d3-selection/src/selection/remove.js","webpack://finacial/./node_modules/d3-selection/src/selection/clone.js","webpack://finacial/./node_modules/d3-selection/src/selection/datum.js","webpack://finacial/./node_modules/d3-selection/src/selection/on.js","webpack://finacial/./node_modules/d3-selection/src/selection/dispatch.js","webpack://finacial/./node_modules/d3-selection/src/selection/iterator.js","webpack://finacial/./node_modules/d3-selection/src/selection/index.js","webpack://finacial/./node_modules/d3-selection/src/select.js","webpack://finacial/./node_modules/d3-drag/src/noevent.js","webpack://finacial/./node_modules/d3-drag/src/nodrag.js","webpack://finacial/./node_modules/d3-color/src/define.js","webpack://finacial/./node_modules/d3-color/src/color.js","webpack://finacial/./node_modules/d3-interpolate/src/basis.js","webpack://finacial/./node_modules/d3-interpolate/src/basisClosed.js","webpack://finacial/./node_modules/d3-interpolate/src/constant.js","webpack://finacial/./node_modules/d3-interpolate/src/color.js","webpack://finacial/./node_modules/d3-interpolate/src/rgb.js","webpack://finacial/./node_modules/d3-interpolate/src/array.js","webpack://finacial/./node_modules/d3-interpolate/src/date.js","webpack://finacial/./node_modules/d3-interpolate/src/number.js","webpack://finacial/./node_modules/d3-interpolate/src/object.js","webpack://finacial/./node_modules/d3-interpolate/src/string.js","webpack://finacial/./node_modules/d3-interpolate/src/numberArray.js","webpack://finacial/./node_modules/d3-interpolate/src/value.js","webpack://finacial/./node_modules/d3-selection/src/sourceEvent.js","webpack://finacial/./node_modules/d3-selection/src/pointer.js","webpack://finacial/./node_modules/d3-timer/src/timer.js","webpack://finacial/./node_modules/d3-timer/src/timeout.js","webpack://finacial/./node_modules/d3-transition/src/transition/schedule.js","webpack://finacial/./node_modules/d3-transition/src/interrupt.js","webpack://finacial/./node_modules/d3-transition/src/selection/interrupt.js","webpack://finacial/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://finacial/./node_modules/d3-interpolate/src/transform/parse.js","webpack://finacial/./node_modules/d3-interpolate/src/transform/index.js","webpack://finacial/./node_modules/d3-transition/src/transition/tween.js","webpack://finacial/./node_modules/d3-transition/src/transition/interpolate.js","webpack://finacial/./node_modules/d3-transition/src/transition/attr.js","webpack://finacial/./node_modules/d3-transition/src/transition/attrTween.js","webpack://finacial/./node_modules/d3-transition/src/transition/delay.js","webpack://finacial/./node_modules/d3-transition/src/transition/duration.js","webpack://finacial/./node_modules/d3-transition/src/transition/ease.js","webpack://finacial/./node_modules/d3-transition/src/transition/easeVarying.js","webpack://finacial/./node_modules/d3-transition/src/transition/filter.js","webpack://finacial/./node_modules/d3-transition/src/transition/merge.js","webpack://finacial/./node_modules/d3-transition/src/transition/on.js","webpack://finacial/./node_modules/d3-transition/src/transition/remove.js","webpack://finacial/./node_modules/d3-transition/src/transition/select.js","webpack://finacial/./node_modules/d3-transition/src/transition/selectAll.js","webpack://finacial/./node_modules/d3-transition/src/transition/selection.js","webpack://finacial/./node_modules/d3-transition/src/transition/style.js","webpack://finacial/./node_modules/d3-transition/src/transition/styleTween.js","webpack://finacial/./node_modules/d3-transition/src/transition/text.js","webpack://finacial/./node_modules/d3-transition/src/transition/textTween.js","webpack://finacial/./node_modules/d3-transition/src/transition/transition.js","webpack://finacial/./node_modules/d3-transition/src/transition/end.js","webpack://finacial/./node_modules/d3-transition/src/transition/index.js","webpack://finacial/./node_modules/d3-ease/src/cubic.js","webpack://finacial/./node_modules/d3-transition/src/selection/transition.js","webpack://finacial/./node_modules/d3-transition/src/selection/index.js","webpack://finacial/./node_modules/d3-brush/src/constant.js","webpack://finacial/./node_modules/d3-brush/src/event.js","webpack://finacial/./node_modules/d3-brush/src/noevent.js","webpack://finacial/./node_modules/d3-brush/src/brush.js","webpack://finacial/./node_modules/d3-array/src/ascending.js","webpack://finacial/./node_modules/d3-array/src/descending.js","webpack://finacial/./node_modules/d3-array/src/bisector.js","webpack://finacial/./node_modules/d3-array/src/ticks.js","webpack://finacial/./node_modules/d3-time/src/duration.js","webpack://finacial/./node_modules/d3-time/src/interval.js","webpack://finacial/./node_modules/d3-time/src/millisecond.js","webpack://finacial/./node_modules/d3-time/src/second.js","webpack://finacial/./node_modules/d3-time/src/minute.js","webpack://finacial/./node_modules/d3-time/src/hour.js","webpack://finacial/./node_modules/d3-time/src/day.js","webpack://finacial/./node_modules/d3-time/src/week.js","webpack://finacial/./node_modules/d3-time/src/month.js","webpack://finacial/./node_modules/d3-time/src/year.js","webpack://finacial/./node_modules/d3-time/src/ticks.js","webpack://finacial/./node_modules/d3-time-format/src/locale.js","webpack://finacial/./node_modules/d3-time-format/src/defaultLocale.js","webpack://finacial/./node_modules/d3-array/src/number.js","webpack://finacial/./node_modules/d3-array/src/bisect.js","webpack://finacial/./node_modules/d3-interpolate/src/round.js","webpack://finacial/./node_modules/d3-scale/src/constant.js","webpack://finacial/./node_modules/d3-scale/src/number.js","webpack://finacial/./node_modules/d3-scale/src/continuous.js","webpack://finacial/./node_modules/d3-scale/src/init.js","webpack://finacial/./node_modules/d3-scale/src/nice.js","webpack://finacial/./node_modules/d3-scale/src/time.js","webpack://finacial/./node_modules/d3-zoom/src/transform.js"],"sourcesContent":["/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","module.exports = function () { /* empty */ };\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = true;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = require('./_hide');\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","exports.f = require('./_wks');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw $TypeError('Incorrect invocation');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list) {\n var index = 0;\n var length = lengthOfArrayLike(list);\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed\nmodule.exports = function (O, C) {\n var len = lengthOfArrayLike(O);\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = O[len - k - 1];\n return A;\n};\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n if (actualIndex >= len || actualIndex < 0) throw $RangeError('Incorrect index');\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n return A;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","'use strict';\nvar documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\nmodule.exports = {\n IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n","'use strict';\n/* global Bun -- Deno case */\nmodule.exports = typeof Bun == 'function' && Bun && typeof Bun.version == 'string';\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\nmodule.exports = typeof process != 'undefined' && classof(process) == 'process';\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || this || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","'use strict';\nvar classof = require('../internals/classof');\n\nmodule.exports = function (it) {\n var klass = classof(it);\n return klass == 'BigInt64Array' || klass == 'BigUint64Array';\n};\n","'use strict';\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar ENGINE_IS_BUN = require('../internals/engine-is-bun');\nvar USER_AGENT = require('../internals/engine-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar Function = global.Function;\n// dirty IE9- and Bun 0.3.0- checks\nvar WRAP = /MSIE .\\./.test(USER_AGENT) || ENGINE_IS_BUN && (function () {\n var version = global.Bun.version.split('.');\n return version.length < 3 || version[0] == 0 && (version[1] < 3 || version[1] == 3 && version[2] == 0);\n})();\n\n// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n// https://github.com/oven-sh/bun/issues/1633\nmodule.exports = function (scheduler, hasTimeArg) {\n var firstParamIndex = hasTimeArg ? 2 : 1;\n return WRAP ? function (handler, timeout /* , ...arguments */) {\n var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;\n var fn = isCallable(handler) ? handler : Function(handler);\n var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];\n var callback = boundArgs ? function () {\n apply(fn, this, params);\n } : fn;\n return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);\n } : scheduler;\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.32.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.32.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n $location = global.location;\n});\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar eventListener = function (event) {\n run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = eventListener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n $location && $location.protocol !== 'file:' &&\n !fails(globalPostMessageDefer)\n ) {\n defer = globalPostMessageDefer;\n global.addEventListener('message', eventListener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n var prim = toPrimitive(argument, 'number');\n if (typeof prim == 'number') throw $TypeError(\"Can't convert number to bigint\");\n // eslint-disable-next-line es/no-bigint -- safe\n return BigInt(prim);\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw $TypeError('Not enough arguments');\n return passed;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n","'use strict';\nvar arrayToReversed = require('../internals/array-to-reversed');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// `%TypedArray%.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\nexportTypedArrayMethod('toReversed', function toReversed() {\n return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);\n\n// `%TypedArray%.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted\nexportTypedArrayMethod('toSorted', function toSorted(compareFn) {\n if (compareFn !== undefined) aCallable(compareFn);\n var O = aTypedArray(this);\n var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);\n return sort(A, compareFn);\n});\n","'use strict';\nvar arrayWith = require('../internals/array-with');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toBigInt = require('../internals/to-big-int');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar PROPER_ORDER = !!function () {\n try {\n // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\n } catch (error) {\n // some early implementations, like WebKit, does not follow the final semantic\n // https://github.com/tc39/proposal-change-array-by-copy/pull/86\n return error === 8;\n }\n}();\n\n// `%TypedArray%.prototype.with` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\nexportTypedArrayMethod('with', { 'with': function (index, value) {\n var O = aTypedArray(this);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\n return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\n} }['with'], !PROPER_ORDER);\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar clearImmediate = require('../internals/task').clear;\n\n// `clearImmediate` method\n// http://w3c.github.io/setImmediate/#si-clearImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.clearImmediate !== clearImmediate }, {\n clearImmediate: clearImmediate\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar anInstance = require('../internals/an-instance');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar DOMExceptionConstants = require('../internals/dom-exception-constants');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n anInstance(this, DOMExceptionPrototype);\n var argumentsLength = arguments.length;\n var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n var that = new NativeDOMException(message, name);\n var error = Error(message);\n error.name = DOM_EXCEPTION;\n defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n inheritIfRequired(that, this, $DOMException);\n return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n if (!IS_PURE) {\n defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n }\n\n for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n var constant = DOMExceptionConstants[key];\n var constantName = constant.s;\n if (!hasOwn(PolyfilledDOMException, constantName)) {\n defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n }\n }\n}\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.clear-immediate');\nrequire('../modules/web.set-immediate');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setTask = require('../internals/task').set;\nvar schedulersFix = require('../internals/schedulers-fix');\n\n// https://github.com/oven-sh/bun/issues/1633\nvar setImmediate = global.setImmediate ? schedulersFix(setTask, false) : setTask;\n\n// `setImmediate` method\n// http://w3c.github.io/setImmediate/#si-setImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.setImmediate !== setImmediate }, {\n setImmediate: setImmediate\n});\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar append = uncurryThis(URLSearchParamsPrototype.append);\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\nvar push = uncurryThis([].push);\nvar params = new $URLSearchParams('a=1&a=2&b=3');\n\nparams['delete']('a', 1);\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nparams['delete']('b', undefined);\n\nif (params + '' !== 'a=2') {\n defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $delete(this, name);\n var entries = [];\n forEach(this, function (v, k) { // also validates `this`\n push(entries, { key: k, value: v });\n });\n validateArgumentsLength(length, 1);\n var key = toString(name);\n var value = toString($value);\n var index = 0;\n var dindex = 0;\n var found = false;\n var entriesLength = entries.length;\n var entry;\n while (index < entriesLength) {\n entry = entries[index++];\n if (found || entry.key === key) {\n found = true;\n $delete(this, entry.key);\n } else dindex++;\n }\n while (dindex < entriesLength) {\n entry = entries[dindex++];\n if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n }\n }, { enumerable: true, unsafe: true });\n}\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\nvar params = new $URLSearchParams('a=1');\n\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nif (params.has('a', 2) || !params.has('a', undefined)) {\n defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $has(this, name);\n var values = getAll(this, name); // also validates `this`\n validateArgumentsLength(length, 1);\n var value = toString($value);\n var index = 0;\n while (index < values.length) {\n if (values[index++] === value) return true;\n } return false;\n }, { enumerable: true, unsafe: true });\n}\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n get: function size() {\n var count = 0;\n forEach(this, function () { count++; });\n return count;\n },\n configurable: true,\n enumerable: true\n });\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bezierCurveToPolyline = bezierCurveToPolyline;\nexports.getBezierCurveLength = getBezierCurveLength;\nexports[\"default\"] = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar sqrt = Math.sqrt,\n pow = Math.pow,\n ceil = Math.ceil,\n abs = Math.abs; // Initialize the number of points per curve\n\nvar defaultSegmentPointsNum = 50;\n/**\r\n * @example data structure of bezierCurve\r\n * bezierCurve = [\r\n * // Starting point of the curve\r\n * [10, 10],\r\n * // BezierCurve segment data (controlPoint1, controlPoint2, endPoint)\r\n * [\r\n * [20, 20], [40, 20], [50, 10]\r\n * ],\r\n * ...\r\n * ]\r\n */\n\n/**\r\n * @description Abstract the curve as a polyline consisting of N points\r\n * @param {Array} bezierCurve bezierCurve data\r\n * @param {Number} precision calculation accuracy. Recommended for 1-20. Default = 5\r\n * @return {Object} Calculation results and related data\r\n * @return {Array} Option.segmentPoints Point data that constitutes a polyline after calculation\r\n * @return {Number} Option.cycles Number of iterations\r\n * @return {Number} Option.rounds The number of recursions for the last iteration\r\n */\n\nfunction abstractBezierCurveToPolyline(bezierCurve) {\n var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;\n var segmentsNum = bezierCurve.length - 1;\n var startPoint = bezierCurve[0];\n var endPoint = bezierCurve[segmentsNum][2];\n var segments = bezierCurve.slice(1);\n var getSegmentTPointFuns = segments.map(function (seg, i) {\n var beginPoint = i === 0 ? startPoint : segments[i - 1][2];\n return createGetBezierCurveTPointFun.apply(void 0, [beginPoint].concat((0, _toConsumableArray2[\"default\"])(seg)));\n }); // Initialize the curve to a polyline\n\n var segmentPointsNum = new Array(segmentsNum).fill(defaultSegmentPointsNum);\n var segmentPoints = getSegmentPointsByNum(getSegmentTPointFuns, segmentPointsNum); // Calculate uniformly distributed points by iteratively\n\n var result = calcUniformPointsByIteration(segmentPoints, getSegmentTPointFuns, segments, precision);\n result.segmentPoints.push(endPoint);\n return result;\n}\n/**\r\n * @description Generate a method for obtaining corresponding point by t according to curve data\r\n * @param {Array} beginPoint BezierCurve begin point. [x, y]\r\n * @param {Array} controlPoint1 BezierCurve controlPoint1. [x, y]\r\n * @param {Array} controlPoint2 BezierCurve controlPoint2. [x, y]\r\n * @param {Array} endPoint BezierCurve end point. [x, y]\r\n * @return {Function} Expected function\r\n */\n\n\nfunction createGetBezierCurveTPointFun(beginPoint, controlPoint1, controlPoint2, endPoint) {\n return function (t) {\n var tSubed1 = 1 - t;\n var tSubed1Pow3 = pow(tSubed1, 3);\n var tSubed1Pow2 = pow(tSubed1, 2);\n var tPow3 = pow(t, 3);\n var tPow2 = pow(t, 2);\n return [beginPoint[0] * tSubed1Pow3 + 3 * controlPoint1[0] * t * tSubed1Pow2 + 3 * controlPoint2[0] * tPow2 * tSubed1 + endPoint[0] * tPow3, beginPoint[1] * tSubed1Pow3 + 3 * controlPoint1[1] * t * tSubed1Pow2 + 3 * controlPoint2[1] * tPow2 * tSubed1 + endPoint[1] * tPow3];\n };\n}\n/**\r\n * @description Get the distance between two points\r\n * @param {Array} point1 BezierCurve begin point. [x, y]\r\n * @param {Array} point2 BezierCurve controlPoint1. [x, y]\r\n * @return {Number} Expected distance\r\n */\n\n\nfunction getTwoPointDistance(_ref, _ref2) {\n var _ref3 = (0, _slicedToArray2[\"default\"])(_ref, 2),\n ax = _ref3[0],\n ay = _ref3[1];\n\n var _ref4 = (0, _slicedToArray2[\"default\"])(_ref2, 2),\n bx = _ref4[0],\n by = _ref4[1];\n\n return sqrt(pow(ax - bx, 2) + pow(ay - by, 2));\n}\n/**\r\n * @description Get the sum of the array of numbers\r\n * @param {Array} nums An array of numbers\r\n * @return {Number} Expected sum\r\n */\n\n\nfunction getNumsSum(nums) {\n return nums.reduce(function (sum, num) {\n return sum + num;\n }, 0);\n}\n/**\r\n * @description Get the distance of multiple sets of points\r\n * @param {Array} segmentPoints Multiple sets of point data\r\n * @return {Array} Distance of multiple sets of point data\r\n */\n\n\nfunction getSegmentPointsDistance(segmentPoints) {\n return segmentPoints.map(function (points, i) {\n return new Array(points.length - 1).fill(0).map(function (temp, j) {\n return getTwoPointDistance(points[j], points[j + 1]);\n });\n });\n}\n/**\r\n * @description Get the distance of multiple sets of points\r\n * @param {Array} segmentPoints Multiple sets of point data\r\n * @return {Array} Distance of multiple sets of point data\r\n */\n\n\nfunction getSegmentPointsByNum(getSegmentTPointFuns, segmentPointsNum) {\n return getSegmentTPointFuns.map(function (getSegmentTPointFun, i) {\n var tGap = 1 / segmentPointsNum[i];\n return new Array(segmentPointsNum[i]).fill('').map(function (foo, j) {\n return getSegmentTPointFun(j * tGap);\n });\n });\n}\n/**\r\n * @description Get the sum of deviations between line segment and the average length\r\n * @param {Array} segmentPointsDistance Segment length of polyline\r\n * @param {Number} avgLength Average length of the line segment\r\n * @return {Number} Deviations\r\n */\n\n\nfunction getAllDeviations(segmentPointsDistance, avgLength) {\n return segmentPointsDistance.map(function (seg) {\n return seg.map(function (s) {\n return abs(s - avgLength);\n });\n }).map(function (seg) {\n return getNumsSum(seg);\n }).reduce(function (total, v) {\n return total + v;\n }, 0);\n}\n/**\r\n * @description Calculate uniformly distributed points by iteratively\r\n * @param {Array} segmentPoints Multiple setd of points that make up a polyline\r\n * @param {Array} getSegmentTPointFuns Functions of get a point on the curve with t\r\n * @param {Array} segments BezierCurve data\r\n * @param {Number} precision Calculation accuracy\r\n * @return {Object} Calculation results and related data\r\n * @return {Array} Option.segmentPoints Point data that constitutes a polyline after calculation\r\n * @return {Number} Option.cycles Number of iterations\r\n * @return {Number} Option.rounds The number of recursions for the last iteration\r\n */\n\n\nfunction calcUniformPointsByIteration(segmentPoints, getSegmentTPointFuns, segments, precision) {\n // The number of loops for the current iteration\n var rounds = 4; // Number of iterations\n\n var cycles = 1;\n\n var _loop = function _loop() {\n // Recalculate the number of points per curve based on the last iteration data\n var totalPointsNum = segmentPoints.reduce(function (total, seg) {\n return total + seg.length;\n }, 0); // Add last points of segment to calc exact segment length\n\n segmentPoints.forEach(function (seg, i) {\n return seg.push(segments[i][2]);\n });\n var segmentPointsDistance = getSegmentPointsDistance(segmentPoints);\n var lineSegmentNum = segmentPointsDistance.reduce(function (total, seg) {\n return total + seg.length;\n }, 0);\n var segmentlength = segmentPointsDistance.map(function (seg) {\n return getNumsSum(seg);\n });\n var totalLength = getNumsSum(segmentlength);\n var avgLength = totalLength / lineSegmentNum; // Check if precision is reached\n\n var allDeviations = getAllDeviations(segmentPointsDistance, avgLength);\n if (allDeviations <= precision) return \"break\";\n totalPointsNum = ceil(avgLength / precision * totalPointsNum * 1.1);\n var segmentPointsNum = segmentlength.map(function (length) {\n return ceil(length / totalLength * totalPointsNum);\n }); // Calculate the points after redistribution\n\n segmentPoints = getSegmentPointsByNum(getSegmentTPointFuns, segmentPointsNum);\n totalPointsNum = segmentPoints.reduce(function (total, seg) {\n return total + seg.length;\n }, 0);\n var segmentPointsForLength = JSON.parse(JSON.stringify(segmentPoints));\n segmentPointsForLength.forEach(function (seg, i) {\n return seg.push(segments[i][2]);\n });\n segmentPointsDistance = getSegmentPointsDistance(segmentPointsForLength);\n lineSegmentNum = segmentPointsDistance.reduce(function (total, seg) {\n return total + seg.length;\n }, 0);\n segmentlength = segmentPointsDistance.map(function (seg) {\n return getNumsSum(seg);\n });\n totalLength = getNumsSum(segmentlength);\n avgLength = totalLength / lineSegmentNum;\n var stepSize = 1 / totalPointsNum / 10; // Recursively for each segment of the polyline\n\n getSegmentTPointFuns.forEach(function (getSegmentTPointFun, i) {\n var currentSegmentPointsNum = segmentPointsNum[i];\n var t = new Array(currentSegmentPointsNum).fill('').map(function (foo, j) {\n return j / segmentPointsNum[i];\n }); // Repeated recursive offset\n\n for (var r = 0; r < rounds; r++) {\n var distance = getSegmentPointsDistance([segmentPoints[i]])[0];\n var deviations = distance.map(function (d) {\n return d - avgLength;\n });\n var offset = 0;\n\n for (var j = 0; j < currentSegmentPointsNum; j++) {\n if (j === 0) return;\n offset += deviations[j - 1];\n t[j] -= stepSize * offset;\n if (t[j] > 1) t[j] = 1;\n if (t[j] < 0) t[j] = 0;\n segmentPoints[i][j] = getSegmentTPointFun(t[j]);\n }\n }\n });\n rounds *= 4;\n cycles++;\n };\n\n do {\n var _ret = _loop();\n\n if (_ret === \"break\") break;\n } while (rounds <= 1025);\n\n segmentPoints = segmentPoints.reduce(function (all, seg) {\n return all.concat(seg);\n }, []);\n return {\n segmentPoints: segmentPoints,\n cycles: cycles,\n rounds: rounds\n };\n}\n/**\r\n * @description Get the polyline corresponding to the Bezier curve\r\n * @param {Array} bezierCurve BezierCurve data\r\n * @param {Number} precision Calculation accuracy. Recommended for 1-20. Default = 5\r\n * @return {Array|Boolean} Point data that constitutes a polyline after calculation (Invalid input will return false)\r\n */\n\n\nfunction bezierCurveToPolyline(bezierCurve) {\n var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;\n\n if (!bezierCurve) {\n console.error('bezierCurveToPolyline: Missing parameters!');\n return false;\n }\n\n if (!(bezierCurve instanceof Array)) {\n console.error('bezierCurveToPolyline: Parameter bezierCurve must be an array!');\n return false;\n }\n\n if (typeof precision !== 'number') {\n console.error('bezierCurveToPolyline: Parameter precision must be a number!');\n return false;\n }\n\n var _abstractBezierCurveT = abstractBezierCurveToPolyline(bezierCurve, precision),\n segmentPoints = _abstractBezierCurveT.segmentPoints;\n\n return segmentPoints;\n}\n/**\r\n * @description Get the bezier curve length\r\n * @param {Array} bezierCurve bezierCurve data\r\n * @param {Number} precision calculation accuracy. Recommended for 5-10. Default = 5\r\n * @return {Number|Boolean} BezierCurve length (Invalid input will return false)\r\n */\n\n\nfunction getBezierCurveLength(bezierCurve) {\n var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;\n\n if (!bezierCurve) {\n console.error('getBezierCurveLength: Missing parameters!');\n return false;\n }\n\n if (!(bezierCurve instanceof Array)) {\n console.error('getBezierCurveLength: Parameter bezierCurve must be an array!');\n return false;\n }\n\n if (typeof precision !== 'number') {\n console.error('getBezierCurveLength: Parameter precision must be a number!');\n return false;\n }\n\n var _abstractBezierCurveT2 = abstractBezierCurveToPolyline(bezierCurve, precision),\n segmentPoints = _abstractBezierCurveT2.segmentPoints; // Calculate the total length of the points that make up the polyline\n\n\n var pointsDistance = getSegmentPointsDistance([segmentPoints])[0];\n var length = getNumsSum(pointsDistance);\n return length;\n}\n\nvar _default = bezierCurveToPolyline;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\n/**\r\n * @description Abstract the polyline formed by N points into a set of bezier curve\r\n * @param {Array} polyline A set of points that make up a polyline\r\n * @param {Boolean} close Closed curve\r\n * @param {Number} offsetA Smoothness\r\n * @param {Number} offsetB Smoothness\r\n * @return {Array|Boolean} A set of bezier curve (Invalid input will return false)\r\n */\nfunction polylineToBezierCurve(polyline) {\n var close = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var offsetA = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.25;\n var offsetB = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.25;\n\n if (!(polyline instanceof Array)) {\n console.error('polylineToBezierCurve: Parameter polyline must be an array!');\n return false;\n }\n\n if (polyline.length <= 2) {\n console.error('polylineToBezierCurve: Converting to a curve requires at least 3 points!');\n return false;\n }\n\n var startPoint = polyline[0];\n var bezierCurveLineNum = polyline.length - 1;\n var bezierCurvePoints = new Array(bezierCurveLineNum).fill(0).map(function (foo, i) {\n return [].concat((0, _toConsumableArray2[\"default\"])(getBezierCurveLineControlPoints(polyline, i, close, offsetA, offsetB)), [polyline[i + 1]]);\n });\n if (close) closeBezierCurve(bezierCurvePoints, startPoint);\n bezierCurvePoints.unshift(polyline[0]);\n return bezierCurvePoints;\n}\n/**\r\n * @description Get the control points of the Bezier curve\r\n * @param {Array} polyline A set of points that make up a polyline\r\n * @param {Number} index The index of which get controls points's point in polyline\r\n * @param {Boolean} close Closed curve\r\n * @param {Number} offsetA Smoothness\r\n * @param {Number} offsetB Smoothness\r\n * @return {Array} Control points\r\n */\n\n\nfunction getBezierCurveLineControlPoints(polyline, index) {\n var close = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var offsetA = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.25;\n var offsetB = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0.25;\n var pointNum = polyline.length;\n if (pointNum < 3 || index >= pointNum) return;\n var beforePointIndex = index - 1;\n if (beforePointIndex < 0) beforePointIndex = close ? pointNum + beforePointIndex : 0;\n var afterPointIndex = index + 1;\n if (afterPointIndex >= pointNum) afterPointIndex = close ? afterPointIndex - pointNum : pointNum - 1;\n var afterNextPointIndex = index + 2;\n if (afterNextPointIndex >= pointNum) afterNextPointIndex = close ? afterNextPointIndex - pointNum : pointNum - 1;\n var pointBefore = polyline[beforePointIndex];\n var pointMiddle = polyline[index];\n var pointAfter = polyline[afterPointIndex];\n var pointAfterNext = polyline[afterNextPointIndex];\n return [[pointMiddle[0] + offsetA * (pointAfter[0] - pointBefore[0]), pointMiddle[1] + offsetA * (pointAfter[1] - pointBefore[1])], [pointAfter[0] - offsetB * (pointAfterNext[0] - pointMiddle[0]), pointAfter[1] - offsetB * (pointAfterNext[1] - pointMiddle[1])]];\n}\n/**\r\n * @description Get the last curve of the closure\r\n * @param {Array} bezierCurve A set of sub-curve\r\n * @param {Array} startPoint Start point\r\n * @return {Array} The last curve for closure\r\n */\n\n\nfunction closeBezierCurve(bezierCurve, startPoint) {\n var firstSubCurve = bezierCurve[0];\n var lastSubCurve = bezierCurve.slice(-1)[0];\n bezierCurve.push([getSymmetryPoint(lastSubCurve[1], lastSubCurve[2]), getSymmetryPoint(firstSubCurve[0], startPoint), startPoint]);\n return bezierCurve;\n}\n/**\r\n * @description Get the symmetry point\r\n * @param {Array} point Symmetric point\r\n * @param {Array} centerPoint Symmetric center\r\n * @return {Array} Symmetric point\r\n */\n\n\nfunction getSymmetryPoint(point, centerPoint) {\n var _point = (0, _slicedToArray2[\"default\"])(point, 2),\n px = _point[0],\n py = _point[1];\n\n var _centerPoint = (0, _slicedToArray2[\"default\"])(centerPoint, 2),\n cx = _centerPoint[0],\n cy = _centerPoint[1];\n\n var minusX = cx - px;\n var minusY = cy - py;\n return [cx + minusX, cy + minusY];\n}\n\nvar _default = polylineToBezierCurve;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"bezierCurveToPolyline\", {\n enumerable: true,\n get: function get() {\n return _bezierCurveToPolyline.bezierCurveToPolyline;\n }\n});\nObject.defineProperty(exports, \"getBezierCurveLength\", {\n enumerable: true,\n get: function get() {\n return _bezierCurveToPolyline.getBezierCurveLength;\n }\n});\nObject.defineProperty(exports, \"polylineToBezierCurve\", {\n enumerable: true,\n get: function get() {\n return _polylineToBezierCurve[\"default\"];\n }\n});\nexports[\"default\"] = void 0;\n\nvar _bezierCurveToPolyline = require(\"./core/bezierCurveToPolyline\");\n\nvar _polylineToBezierCurve = _interopRequireDefault(require(\"./core/polylineToBezierCurve\"));\n\nvar _default = {\n bezierCurveToPolyline: _bezierCurveToPolyline.bezierCurveToPolyline,\n getBezierCurveLength: _bezierCurveToPolyline.getBezierCurveLength,\n polylineToBezierCurve: _polylineToBezierCurve[\"default\"]\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _color = _interopRequireDefault(require(\"@jiaminghi/color\"));\n\nvar _bezierCurve = _interopRequireDefault(require(\"@jiaminghi/bezier-curve\"));\n\nvar _util = require(\"../plugin/util\");\n\nvar _graphs = _interopRequireDefault(require(\"../config/graphs\"));\n\nvar _graph = _interopRequireDefault(require(\"./graph.class\"));\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/**\r\n * @description Class of CRender\r\n * @param {Object} canvas Canvas DOM\r\n * @return {CRender} Instance of CRender\r\n */\nvar CRender = function CRender(canvas) {\n (0, _classCallCheck2[\"default\"])(this, CRender);\n\n if (!canvas) {\n console.error('CRender Missing parameters!');\n return;\n }\n\n var ctx = canvas.getContext('2d');\n var clientWidth = canvas.clientWidth,\n clientHeight = canvas.clientHeight;\n var area = [clientWidth, clientHeight];\n canvas.setAttribute('width', clientWidth);\n canvas.setAttribute('height', clientHeight);\n /**\r\n * @description Context of the canvas\r\n * @type {Object}\r\n * @example ctx = canvas.getContext('2d')\r\n */\n\n this.ctx = ctx;\n /**\r\n * @description Width and height of the canvas\r\n * @type {Array}\r\n * @example area = [300,100]\r\n */\n\n this.area = area;\n /**\r\n * @description Whether render is in animation rendering\r\n * @type {Boolean}\r\n * @example animationStatus = true|false\r\n */\n\n this.animationStatus = false;\n /**\r\n * @description Added graph\r\n * @type {[Graph]}\r\n * @example graphs = [Graph, Graph, ...]\r\n */\n\n this.graphs = [];\n /**\r\n * @description Color plugin\r\n * @type {Object}\r\n * @link https://github.com/jiaming743/color\r\n */\n\n this.color = _color[\"default\"];\n /**\r\n * @description Bezier Curve plugin\r\n * @type {Object}\r\n * @link https://github.com/jiaming743/BezierCurve\r\n */\n\n this.bezierCurve = _bezierCurve[\"default\"]; // bind event handler\n\n canvas.addEventListener('mousedown', mouseDown.bind(this));\n canvas.addEventListener('mousemove', mouseMove.bind(this));\n canvas.addEventListener('mouseup', mouseUp.bind(this));\n};\n/**\r\n * @description Clear canvas drawing area\r\n * @return {Undefined} Void\r\n */\n\n\nexports[\"default\"] = CRender;\n\nCRender.prototype.clearArea = function () {\n var _this$ctx;\n\n var area = this.area;\n\n (_this$ctx = this.ctx).clearRect.apply(_this$ctx, [0, 0].concat((0, _toConsumableArray2[\"default\"])(area)));\n};\n/**\r\n * @description Add graph to render\r\n * @param {Object} config Graph configuration\r\n * @return {Graph} Graph instance\r\n */\n\n\nCRender.prototype.add = function () {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var name = config.name;\n\n if (!name) {\n console.error('add Missing parameters!');\n return;\n }\n\n var graphConfig = _graphs[\"default\"].get(name);\n\n if (!graphConfig) {\n console.warn('No corresponding graph configuration found!');\n return;\n }\n\n var graph = new _graph[\"default\"](graphConfig, config);\n if (!graph.validator(graph)) return;\n graph.render = this;\n this.graphs.push(graph);\n this.sortGraphsByIndex();\n this.drawAllGraph();\n return graph;\n};\n/**\r\n * @description Sort the graph by index\r\n * @return {Undefined} Void\r\n */\n\n\nCRender.prototype.sortGraphsByIndex = function () {\n var graphs = this.graphs;\n graphs.sort(function (a, b) {\n if (a.index > b.index) return 1;\n if (a.index === b.index) return 0;\n if (a.index < b.index) return -1;\n });\n};\n/**\r\n * @description Delete graph in render\r\n * @param {Graph} graph The graph to be deleted\r\n * @return {Undefined} Void\r\n */\n\n\nCRender.prototype.delGraph = function (graph) {\n if (typeof graph.delProcessor !== 'function') return;\n graph.delProcessor(this);\n this.graphs = this.graphs.filter(function (graph) {\n return graph;\n });\n this.drawAllGraph();\n};\n/**\r\n * @description Delete all graph in render\r\n * @return {Undefined} Void\r\n */\n\n\nCRender.prototype.delAllGraph = function () {\n var _this = this;\n\n this.graphs.forEach(function (graph) {\n return graph.delProcessor(_this);\n });\n this.graphs = this.graphs.filter(function (graph) {\n return graph;\n });\n this.drawAllGraph();\n};\n/**\r\n * @description Draw all the graphs in the render\r\n * @return {Undefined} Void\r\n */\n\n\nCRender.prototype.drawAllGraph = function () {\n var _this2 = this;\n\n this.clearArea();\n this.graphs.filter(function (graph) {\n return graph && graph.visible;\n }).forEach(function (graph) {\n return graph.drawProcessor(_this2, graph);\n });\n};\n/**\r\n * @description Animate the graph whose animation queue is not empty\r\n * and the animationPause is equal to false\r\n * @return {Promise} Animation Promise\r\n */\n\n\nCRender.prototype.launchAnimation = function () {\n var _this3 = this;\n\n var animationStatus = this.animationStatus;\n if (animationStatus) return;\n this.animationStatus = true;\n return new Promise(function (resolve) {\n animation.call(_this3, function () {\n _this3.animationStatus = false;\n resolve();\n }, Date.now());\n });\n};\n/**\r\n * @description Try to animate every graph\r\n * @param {Function} callback Callback in animation end\r\n * @param {Number} timeStamp Time stamp of animation start\r\n * @return {Undefined} Void\r\n */\n\n\nfunction animation(callback, timeStamp) {\n var graphs = this.graphs;\n\n if (!animationAble(graphs)) {\n callback();\n return;\n }\n\n graphs.forEach(function (graph) {\n return graph.turnNextAnimationFrame(timeStamp);\n });\n this.drawAllGraph();\n requestAnimationFrame(animation.bind(this, callback, timeStamp));\n}\n/**\r\n * @description Find if there are graph that can be animated\r\n * @param {[Graph]} graphs\r\n * @return {Boolean}\r\n */\n\n\nfunction animationAble(graphs) {\n return graphs.find(function (graph) {\n return !graph.animationPause && graph.animationFrameState.length;\n });\n}\n/**\r\n * @description Handler of CRender mousedown event\r\n * @return {Undefined} Void\r\n */\n\n\nfunction mouseDown(e) {\n var graphs = this.graphs;\n var hoverGraph = graphs.find(function (graph) {\n return graph.status === 'hover';\n });\n if (!hoverGraph) return;\n hoverGraph.status = 'active';\n}\n/**\r\n * @description Handler of CRender mousemove event\r\n * @return {Undefined} Void\r\n */\n\n\nfunction mouseMove(e) {\n var offsetX = e.offsetX,\n offsetY = e.offsetY;\n var position = [offsetX, offsetY];\n var graphs = this.graphs;\n var activeGraph = graphs.find(function (graph) {\n return graph.status === 'active' || graph.status === 'drag';\n });\n\n if (activeGraph) {\n if (!activeGraph.drag) return;\n\n if (typeof activeGraph.move !== 'function') {\n console.error('No move method is provided, cannot be dragged!');\n return;\n }\n\n activeGraph.moveProcessor(e);\n activeGraph.status = 'drag';\n return;\n }\n\n var hoverGraph = graphs.find(function (graph) {\n return graph.status === 'hover';\n });\n var hoverAbleGraphs = graphs.filter(function (graph) {\n return graph.hover && (typeof graph.hoverCheck === 'function' || graph.hoverRect);\n });\n var hoveredGraph = hoverAbleGraphs.find(function (graph) {\n return graph.hoverCheckProcessor(position, graph);\n });\n\n if (hoveredGraph) {\n document.body.style.cursor = hoveredGraph.style.hoverCursor;\n } else {\n document.body.style.cursor = 'default';\n }\n\n var hoverGraphMouseOuterIsFun = false,\n hoveredGraphMouseEnterIsFun = false;\n if (hoverGraph) hoverGraphMouseOuterIsFun = typeof hoverGraph.mouseOuter === 'function';\n if (hoveredGraph) hoveredGraphMouseEnterIsFun = typeof hoveredGraph.mouseEnter === 'function';\n if (!hoveredGraph && !hoverGraph) return;\n\n if (!hoveredGraph && hoverGraph) {\n if (hoverGraphMouseOuterIsFun) hoverGraph.mouseOuter(e, hoverGraph);\n hoverGraph.status = 'static';\n return;\n }\n\n if (hoveredGraph && hoveredGraph === hoverGraph) return;\n\n if (hoveredGraph && !hoverGraph) {\n if (hoveredGraphMouseEnterIsFun) hoveredGraph.mouseEnter(e, hoveredGraph);\n hoveredGraph.status = 'hover';\n return;\n }\n\n if (hoveredGraph && hoverGraph && hoveredGraph !== hoverGraph) {\n if (hoverGraphMouseOuterIsFun) hoverGraph.mouseOuter(e, hoverGraph);\n hoverGraph.status = 'static';\n if (hoveredGraphMouseEnterIsFun) hoveredGraph.mouseEnter(e, hoveredGraph);\n hoveredGraph.status = 'hover';\n }\n}\n/**\r\n * @description Handler of CRender mouseup event\r\n * @return {Undefined} Void\r\n */\n\n\nfunction mouseUp(e) {\n var graphs = this.graphs;\n var activeGraph = graphs.find(function (graph) {\n return graph.status === 'active';\n });\n var dragGraph = graphs.find(function (graph) {\n return graph.status === 'drag';\n });\n if (activeGraph && typeof activeGraph.click === 'function') activeGraph.click(e, activeGraph);\n graphs.forEach(function (graph) {\n return graph && (graph.status = 'static');\n });\n if (activeGraph) activeGraph.status = 'hover';\n if (dragGraph) dragGraph.status = 'hover';\n}\n/**\r\n * @description Clone Graph\r\n * @param {Graph} graph The target to be cloned\r\n * @return {Graph} Cloned graph\r\n */\n\n\nCRender.prototype.clone = function (graph) {\n var style = graph.style.getStyle();\n\n var clonedGraph = _objectSpread({}, graph, {\n style: style\n });\n\n delete clonedGraph.render;\n clonedGraph = (0, _util.deepClone)(clonedGraph, true);\n return this.add(clonedGraph);\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _style = _interopRequireDefault(require(\"./style.class\"));\n\nvar _transition = _interopRequireDefault(require(\"@jiaminghi/transition\"));\n\nvar _util = require(\"../plugin/util\");\n\n/**\r\n * @description Class Graph\r\n * @param {Object} graph Graph default configuration\r\n * @param {Object} config Graph config\r\n * @return {Graph} Instance of Graph\r\n */\nvar Graph = function Graph(graph, config) {\n (0, _classCallCheck2[\"default\"])(this, Graph);\n config = (0, _util.deepClone)(config, true);\n var defaultConfig = {\n /**\r\n * @description Weather to render graph\r\n * @type {Boolean}\r\n * @default visible = true\r\n */\n visible: true,\n\n /**\r\n * @description Whether to enable drag\r\n * @type {Boolean}\r\n * @default drag = false\r\n */\n drag: false,\n\n /**\r\n * @description Whether to enable hover\r\n * @type {Boolean}\r\n * @default hover = false\r\n */\n hover: false,\n\n /**\r\n * @description Graph rendering index\r\n * Give priority to index high graph in rendering\r\n * @type {Number}\r\n * @example index = 1\r\n */\n index: 1,\n\n /**\r\n * @description Animation delay time(ms)\r\n * @type {Number}\r\n * @default animationDelay = 0\r\n */\n animationDelay: 0,\n\n /**\r\n * @description Number of animation frames\r\n * @type {Number}\r\n * @default animationFrame = 30\r\n */\n animationFrame: 30,\n\n /**\r\n * @description Animation dynamic curve (Supported by transition)\r\n * @type {String}\r\n * @default animationCurve = 'linear'\r\n * @link https://github.com/jiaming743/Transition\r\n */\n animationCurve: 'linear',\n\n /**\r\n * @description Weather to pause graph animation\r\n * @type {Boolean}\r\n * @default animationPause = false\r\n */\n animationPause: false,\n\n /**\r\n * @description Rectangular hover detection zone\r\n * Use this method for hover detection first\r\n * @type {Null|Array}\r\n * @default hoverRect = null\r\n * @example hoverRect = [0, 0, 100, 100] // [Rect start x, y, Rect width, height]\r\n */\n hoverRect: null,\n\n /**\r\n * @description Mouse enter event handler\r\n * @type {Function|Null}\r\n * @default mouseEnter = null\r\n */\n mouseEnter: null,\n\n /**\r\n * @description Mouse outer event handler\r\n * @type {Function|Null}\r\n * @default mouseOuter = null\r\n */\n mouseOuter: null,\n\n /**\r\n * @description Mouse click event handler\r\n * @type {Function|Null}\r\n * @default click = null\r\n */\n click: null\n };\n var configAbleNot = {\n status: 'static',\n animationRoot: [],\n animationKeys: [],\n animationFrameState: [],\n cache: {}\n };\n if (!config.shape) config.shape = {};\n if (!config.style) config.style = {};\n var shape = Object.assign({}, graph.shape, config.shape);\n Object.assign(defaultConfig, config, configAbleNot);\n Object.assign(this, graph, defaultConfig);\n this.shape = shape;\n this.style = new _style[\"default\"](config.style);\n this.addedProcessor();\n};\n/**\r\n * @description Processor of added\r\n * @return {Undefined} Void\r\n */\n\n\nexports[\"default\"] = Graph;\n\nGraph.prototype.addedProcessor = function () {\n if (typeof this.setGraphCenter === 'function') this.setGraphCenter(null, this); // The life cycle 'added\"\n\n if (typeof this.added === 'function') this.added(this);\n};\n/**\r\n * @description Processor of draw\r\n * @param {CRender} render Instance of CRender\r\n * @param {Graph} graph Instance of Graph\r\n * @return {Undefined} Void\r\n */\n\n\nGraph.prototype.drawProcessor = function (render, graph) {\n var ctx = render.ctx;\n graph.style.initStyle(ctx);\n if (typeof this.beforeDraw === 'function') this.beforeDraw(this, render);\n graph.draw(render, graph);\n if (typeof this.drawed === 'function') this.drawed(this, render);\n graph.style.restoreTransform(ctx);\n};\n/**\r\n * @description Processor of hover check\r\n * @param {Array} position Mouse Position\r\n * @param {Graph} graph Instance of Graph\r\n * @return {Boolean} Result of hover check\r\n */\n\n\nGraph.prototype.hoverCheckProcessor = function (position, _ref) {\n var hoverRect = _ref.hoverRect,\n style = _ref.style,\n hoverCheck = _ref.hoverCheck;\n var graphCenter = style.graphCenter,\n rotate = style.rotate,\n scale = style.scale,\n translate = style.translate;\n\n if (graphCenter) {\n if (rotate) position = (0, _util.getRotatePointPos)(-rotate, position, graphCenter);\n if (scale) position = (0, _util.getScalePointPos)(scale.map(function (s) {\n return 1 / s;\n }), position, graphCenter);\n if (translate) position = (0, _util.getTranslatePointPos)(translate.map(function (v) {\n return v * -1;\n }), position);\n }\n\n if (hoverRect) return _util.checkPointIsInRect.apply(void 0, [position].concat((0, _toConsumableArray2[\"default\"])(hoverRect)));\n return hoverCheck(position, this);\n};\n/**\r\n * @description Processor of move\r\n * @param {Event} e Mouse movement event\r\n * @return {Undefined} Void\r\n */\n\n\nGraph.prototype.moveProcessor = function (e) {\n this.move(e, this);\n if (typeof this.beforeMove === 'function') this.beforeMove(e, this);\n if (typeof this.setGraphCenter === 'function') this.setGraphCenter(e, this);\n if (typeof this.moved === 'function') this.moved(e, this);\n};\n/**\r\n * @description Update graph state\r\n * @param {String} attrName Updated attribute name\r\n * @param {Any} change Updated value\r\n * @return {Undefined} Void\r\n */\n\n\nGraph.prototype.attr = function (attrName) {\n var change = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n if (!attrName || change === undefined) return false;\n var isObject = (0, _typeof2[\"default\"])(this[attrName]) === 'object';\n if (isObject) change = (0, _util.deepClone)(change, true);\n var render = this.render;\n\n if (attrName === 'style') {\n this.style.update(change);\n } else if (isObject) {\n Object.assign(this[attrName], change);\n } else {\n this[attrName] = change;\n }\n\n if (attrName === 'index') render.sortGraphsByIndex();\n render.drawAllGraph();\n};\n/**\r\n * @description Update graphics state (with animation)\r\n * Only shape and style attributes are supported\r\n * @param {String} attrName Updated attribute name\r\n * @param {Any} change Updated value\r\n * @param {Boolean} wait Whether to store the animation waiting\r\n * for the next animation request\r\n * @return {Promise} Animation Promise\r\n */\n\n\nGraph.prototype.animation =\n/*#__PURE__*/\nfunction () {\n var _ref2 = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee2(attrName, change) {\n var wait,\n changeRoot,\n changeKeys,\n beforeState,\n animationFrame,\n animationCurve,\n animationDelay,\n animationFrameState,\n render,\n _args2 = arguments;\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n wait = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : false;\n\n if (!(attrName !== 'shape' && attrName !== 'style')) {\n _context2.next = 4;\n break;\n }\n\n console.error('Only supported shape and style animation!');\n return _context2.abrupt(\"return\");\n\n case 4:\n change = (0, _util.deepClone)(change, true);\n if (attrName === 'style') this.style.colorProcessor(change);\n changeRoot = this[attrName];\n changeKeys = Object.keys(change);\n beforeState = {};\n changeKeys.forEach(function (key) {\n return beforeState[key] = changeRoot[key];\n });\n animationFrame = this.animationFrame, animationCurve = this.animationCurve, animationDelay = this.animationDelay;\n animationFrameState = (0, _transition[\"default\"])(animationCurve, beforeState, change, animationFrame, true);\n this.animationRoot.push(changeRoot);\n this.animationKeys.push(changeKeys);\n this.animationFrameState.push(animationFrameState);\n\n if (!wait) {\n _context2.next = 17;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 17:\n if (!(animationDelay > 0)) {\n _context2.next = 20;\n break;\n }\n\n _context2.next = 20;\n return delay(animationDelay);\n\n case 20:\n render = this.render;\n return _context2.abrupt(\"return\", new Promise(\n /*#__PURE__*/\n function () {\n var _ref3 = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee(resolve) {\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return render.launchAnimation();\n\n case 2:\n resolve();\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x3) {\n return _ref3.apply(this, arguments);\n };\n }()));\n\n case 22:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function (_x, _x2) {\n return _ref2.apply(this, arguments);\n };\n}();\n/**\r\n * @description Extract the next frame of data from the animation queue\r\n * and update the graph state\r\n * @return {Undefined} Void\r\n */\n\n\nGraph.prototype.turnNextAnimationFrame = function (timeStamp) {\n var animationDelay = this.animationDelay,\n animationRoot = this.animationRoot,\n animationKeys = this.animationKeys,\n animationFrameState = this.animationFrameState,\n animationPause = this.animationPause;\n if (animationPause) return;\n if (Date.now() - timeStamp < animationDelay) return;\n animationRoot.forEach(function (root, i) {\n animationKeys[i].forEach(function (key) {\n root[key] = animationFrameState[i][0][key];\n });\n });\n animationFrameState.forEach(function (stateItem, i) {\n stateItem.shift();\n var noFrame = stateItem.length === 0;\n if (noFrame) animationRoot[i] = null;\n if (noFrame) animationKeys[i] = null;\n });\n this.animationFrameState = animationFrameState.filter(function (state) {\n return state.length;\n });\n this.animationRoot = animationRoot.filter(function (root) {\n return root;\n });\n this.animationKeys = animationKeys.filter(function (keys) {\n return keys;\n });\n};\n/**\r\n * @description Skip to the last frame of animation\r\n * @return {Undefined} Void\r\n */\n\n\nGraph.prototype.animationEnd = function () {\n var animationFrameState = this.animationFrameState,\n animationKeys = this.animationKeys,\n animationRoot = this.animationRoot,\n render = this.render;\n animationRoot.forEach(function (root, i) {\n var currentKeys = animationKeys[i];\n var lastState = animationFrameState[i].pop();\n currentKeys.forEach(function (key) {\n return root[key] = lastState[key];\n });\n });\n this.animationFrameState = [];\n this.animationKeys = [];\n this.animationRoot = [];\n return render.drawAllGraph();\n};\n/**\r\n * @description Pause animation behavior\r\n * @return {Undefined} Void\r\n */\n\n\nGraph.prototype.pauseAnimation = function () {\n this.attr('animationPause', true);\n};\n/**\r\n * @description Try animation behavior\r\n * @return {Undefined} Void\r\n */\n\n\nGraph.prototype.playAnimation = function () {\n var render = this.render;\n this.attr('animationPause', false);\n return new Promise(\n /*#__PURE__*/\n function () {\n var _ref4 = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee3(resolve) {\n return _regenerator[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return render.launchAnimation();\n\n case 2:\n resolve();\n\n case 3:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n return function (_x4) {\n return _ref4.apply(this, arguments);\n };\n }());\n};\n/**\r\n * @description Processor of delete\r\n * @param {CRender} render Instance of CRender\r\n * @return {Undefined} Void\r\n */\n\n\nGraph.prototype.delProcessor = function (render) {\n var _this = this;\n\n var graphs = render.graphs;\n var index = graphs.findIndex(function (graph) {\n return graph === _this;\n });\n if (index === -1) return;\n if (typeof this.beforeDelete === 'function') this.beforeDelete(this);\n graphs.splice(index, 1, null);\n if (typeof this.deleted === 'function') this.deleted(this);\n};\n/**\r\n * @description Return a timed release Promise\r\n * @param {Number} time Release time\r\n * @return {Promise} A timed release Promise\r\n */\n\n\nfunction delay(time) {\n return new Promise(function (resolve) {\n setTimeout(resolve, time);\n });\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _color = require(\"@jiaminghi/color\");\n\nvar _util = require(\"../plugin/util\");\n\n/**\r\n * @description Class Style\r\n * @param {Object} style Style configuration\r\n * @return {Style} Instance of Style\r\n */\nvar Style = function Style(style) {\n (0, _classCallCheck2[\"default\"])(this, Style);\n this.colorProcessor(style);\n var defaultStyle = {\n /**\r\n * @description Rgba value of graph fill color\r\n * @type {Array}\r\n * @default fill = [0, 0, 0, 1]\r\n */\n fill: [0, 0, 0, 1],\n\n /**\r\n * @description Rgba value of graph stroke color\r\n * @type {Array}\r\n * @default stroke = [0, 0, 0, 1]\r\n */\n stroke: [0, 0, 0, 0],\n\n /**\r\n * @description Opacity of graph\r\n * @type {Number}\r\n * @default opacity = 1\r\n */\n opacity: 1,\n\n /**\r\n * @description LineCap of Ctx\r\n * @type {String}\r\n * @default lineCap = null\r\n * @example lineCap = 'butt'|'round'|'square'\r\n */\n lineCap: null,\n\n /**\r\n * @description Linejoin of Ctx\r\n * @type {String}\r\n * @default lineJoin = null\r\n * @example lineJoin = 'round'|'bevel'|'miter'\r\n */\n lineJoin: null,\n\n /**\r\n * @description LineDash of Ctx\r\n * @type {Array}\r\n * @default lineDash = null\r\n * @example lineDash = [10, 10]\r\n */\n lineDash: null,\n\n /**\r\n * @description LineDashOffset of Ctx\r\n * @type {Number}\r\n * @default lineDashOffset = null\r\n * @example lineDashOffset = 10\r\n */\n lineDashOffset: null,\n\n /**\r\n * @description ShadowBlur of Ctx\r\n * @type {Number}\r\n * @default shadowBlur = 0\r\n */\n shadowBlur: 0,\n\n /**\r\n * @description Rgba value of graph shadow color\r\n * @type {Array}\r\n * @default shadowColor = [0, 0, 0, 0]\r\n */\n shadowColor: [0, 0, 0, 0],\n\n /**\r\n * @description ShadowOffsetX of Ctx\r\n * @type {Number}\r\n * @default shadowOffsetX = 0\r\n */\n shadowOffsetX: 0,\n\n /**\r\n * @description ShadowOffsetY of Ctx\r\n * @type {Number}\r\n * @default shadowOffsetY = 0\r\n */\n shadowOffsetY: 0,\n\n /**\r\n * @description LineWidth of Ctx\r\n * @type {Number}\r\n * @default lineWidth = 0\r\n */\n lineWidth: 0,\n\n /**\r\n * @description Center point of the graph\r\n * @type {Array}\r\n * @default graphCenter = null\r\n * @example graphCenter = [10, 10]\r\n */\n graphCenter: null,\n\n /**\r\n * @description Graph scale\r\n * @type {Array}\r\n * @default scale = null\r\n * @example scale = [1.5, 1.5]\r\n */\n scale: null,\n\n /**\r\n * @description Graph rotation degree\r\n * @type {Number}\r\n * @default rotate = null\r\n * @example rotate = 10\r\n */\n rotate: null,\n\n /**\r\n * @description Graph translate distance\r\n * @type {Array}\r\n * @default translate = null\r\n * @example translate = [10, 10]\r\n */\n translate: null,\n\n /**\r\n * @description Cursor status when hover\r\n * @type {String}\r\n * @default hoverCursor = 'pointer'\r\n * @example hoverCursor = 'default'|'pointer'|'auto'|'crosshair'|'move'|'wait'|...\r\n */\n hoverCursor: 'pointer',\n\n /**\r\n * @description Font style of Ctx\r\n * @type {String}\r\n * @default fontStyle = 'normal'\r\n * @example fontStyle = 'normal'|'italic'|'oblique'\r\n */\n fontStyle: 'normal',\n\n /**\r\n * @description Font varient of Ctx\r\n * @type {String}\r\n * @default fontVarient = 'normal'\r\n * @example fontVarient = 'normal'|'small-caps'\r\n */\n fontVarient: 'normal',\n\n /**\r\n * @description Font weight of Ctx\r\n * @type {String|Number}\r\n * @default fontWeight = 'normal'\r\n * @example fontWeight = 'normal'|'bold'|'bolder'|'lighter'|Number\r\n */\n fontWeight: 'normal',\n\n /**\r\n * @description Font size of Ctx\r\n * @type {Number}\r\n * @default fontSize = 10\r\n */\n fontSize: 10,\n\n /**\r\n * @description Font family of Ctx\r\n * @type {String}\r\n * @default fontFamily = 'Arial'\r\n */\n fontFamily: 'Arial',\n\n /**\r\n * @description TextAlign of Ctx\r\n * @type {String}\r\n * @default textAlign = 'center'\r\n * @example textAlign = 'start'|'end'|'left'|'right'|'center'\r\n */\n textAlign: 'center',\n\n /**\r\n * @description TextBaseline of Ctx\r\n * @type {String}\r\n * @default textBaseline = 'middle'\r\n * @example textBaseline = 'top'|'bottom'|'middle'|'alphabetic'|'hanging'\r\n */\n textBaseline: 'middle',\n\n /**\r\n * @description The color used to create the gradient\r\n * @type {Array}\r\n * @default gradientColor = null\r\n * @example gradientColor = ['#000', '#111', '#222']\r\n */\n gradientColor: null,\n\n /**\r\n * @description Gradient type\r\n * @type {String}\r\n * @default gradientType = 'linear'\r\n * @example gradientType = 'linear' | 'radial'\r\n */\n gradientType: 'linear',\n\n /**\r\n * @description Gradient params\r\n * @type {Array}\r\n * @default gradientParams = null\r\n * @example gradientParams = [x0, y0, x1, y1] (Linear Gradient)\r\n * @example gradientParams = [x0, y0, r0, x1, y1, r1] (Radial Gradient)\r\n */\n gradientParams: null,\n\n /**\r\n * @description When to use gradients\r\n * @type {String}\r\n * @default gradientWith = 'stroke'\r\n * @example gradientWith = 'stroke' | 'fill'\r\n */\n gradientWith: 'stroke',\n\n /**\r\n * @description Gradient color stops\r\n * @type {String}\r\n * @default gradientStops = 'auto'\r\n * @example gradientStops = 'auto' | [0, .2, .3, 1]\r\n */\n gradientStops: 'auto',\n\n /**\r\n * @description Extended color that supports animation transition\r\n * @type {Array|Object}\r\n * @default colors = null\r\n * @example colors = ['#000', '#111', '#222', 'red' ]\r\n * @example colors = { a: '#000', b: '#111' }\r\n */\n colors: null\n };\n Object.assign(this, defaultStyle, style);\n};\n/**\r\n * @description Set colors to rgba value\r\n * @param {Object} style style config\r\n * @param {Boolean} reverse Whether to perform reverse operation\r\n * @return {Undefined} Void\r\n */\n\n\nexports[\"default\"] = Style;\n\nStyle.prototype.colorProcessor = function (style) {\n var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var processor = reverse ? _color.getColorFromRgbValue : _color.getRgbaValue;\n var colorProcessorKeys = ['fill', 'stroke', 'shadowColor'];\n var allKeys = Object.keys(style);\n var colorKeys = allKeys.filter(function (key) {\n return colorProcessorKeys.find(function (k) {\n return k === key;\n });\n });\n colorKeys.forEach(function (key) {\n return style[key] = processor(style[key]);\n });\n var gradientColor = style.gradientColor,\n colors = style.colors;\n if (gradientColor) style.gradientColor = gradientColor.map(function (c) {\n return processor(c);\n });\n\n if (colors) {\n var colorsKeys = Object.keys(colors);\n colorsKeys.forEach(function (key) {\n return colors[key] = processor(colors[key]);\n });\n }\n};\n/**\r\n * @description Init graph style\r\n * @param {Object} ctx Context of canvas\r\n * @return {Undefined} Void\r\n */\n\n\nStyle.prototype.initStyle = function (ctx) {\n initTransform(ctx, this);\n initGraphStyle(ctx, this);\n initGradient(ctx, this);\n};\n/**\r\n * @description Init canvas transform\r\n * @param {Object} ctx Context of canvas\r\n * @param {Style} style Instance of Style\r\n * @return {Undefined} Void\r\n */\n\n\nfunction initTransform(ctx, style) {\n ctx.save();\n var graphCenter = style.graphCenter,\n rotate = style.rotate,\n scale = style.scale,\n translate = style.translate;\n if (!(graphCenter instanceof Array)) return;\n ctx.translate.apply(ctx, (0, _toConsumableArray2[\"default\"])(graphCenter));\n if (rotate) ctx.rotate(rotate * Math.PI / 180);\n if (scale instanceof Array) ctx.scale.apply(ctx, (0, _toConsumableArray2[\"default\"])(scale));\n if (translate) ctx.translate.apply(ctx, (0, _toConsumableArray2[\"default\"])(translate));\n ctx.translate(-graphCenter[0], -graphCenter[1]);\n}\n\nvar autoSetStyleKeys = ['lineCap', 'lineJoin', 'lineDashOffset', 'shadowOffsetX', 'shadowOffsetY', 'lineWidth', 'textAlign', 'textBaseline'];\n/**\r\n * @description Set the style of canvas ctx\r\n * @param {Object} ctx Context of canvas\r\n * @param {Style} style Instance of Style\r\n * @return {Undefined} Void\r\n */\n\nfunction initGraphStyle(ctx, style) {\n var fill = style.fill,\n stroke = style.stroke,\n shadowColor = style.shadowColor,\n opacity = style.opacity;\n autoSetStyleKeys.forEach(function (key) {\n if (key || typeof key === 'number') ctx[key] = style[key];\n });\n fill = (0, _toConsumableArray2[\"default\"])(fill);\n stroke = (0, _toConsumableArray2[\"default\"])(stroke);\n shadowColor = (0, _toConsumableArray2[\"default\"])(shadowColor);\n fill[3] *= opacity;\n stroke[3] *= opacity;\n shadowColor[3] *= opacity;\n ctx.fillStyle = (0, _color.getColorFromRgbValue)(fill);\n ctx.strokeStyle = (0, _color.getColorFromRgbValue)(stroke);\n ctx.shadowColor = (0, _color.getColorFromRgbValue)(shadowColor);\n var lineDash = style.lineDash,\n shadowBlur = style.shadowBlur;\n\n if (lineDash) {\n lineDash = lineDash.map(function (v) {\n return v >= 0 ? v : 0;\n });\n ctx.setLineDash(lineDash);\n }\n\n if (typeof shadowBlur === 'number') ctx.shadowBlur = shadowBlur > 0 ? shadowBlur : 0.001;\n var fontStyle = style.fontStyle,\n fontVarient = style.fontVarient,\n fontWeight = style.fontWeight,\n fontSize = style.fontSize,\n fontFamily = style.fontFamily;\n ctx.font = fontStyle + ' ' + fontVarient + ' ' + fontWeight + ' ' + fontSize + 'px' + ' ' + fontFamily;\n}\n/**\r\n * @description Set the gradient color of canvas ctx\r\n * @param {Object} ctx Context of canvas\r\n * @param {Style} style Instance of Style\r\n * @return {Undefined} Void\r\n */\n\n\nfunction initGradient(ctx, style) {\n if (!gradientValidator(style)) return;\n var gradientColor = style.gradientColor,\n gradientParams = style.gradientParams,\n gradientType = style.gradientType,\n gradientWith = style.gradientWith,\n gradientStops = style.gradientStops,\n opacity = style.opacity;\n gradientColor = gradientColor.map(function (color) {\n var colorOpacity = color[3] * opacity;\n var clonedColor = (0, _toConsumableArray2[\"default\"])(color);\n clonedColor[3] = colorOpacity;\n return clonedColor;\n });\n gradientColor = gradientColor.map(function (c) {\n return (0, _color.getColorFromRgbValue)(c);\n });\n if (gradientStops === 'auto') gradientStops = getAutoColorStops(gradientColor);\n var gradient = ctx[\"create\".concat(gradientType.slice(0, 1).toUpperCase() + gradientType.slice(1), \"Gradient\")].apply(ctx, (0, _toConsumableArray2[\"default\"])(gradientParams));\n gradientStops.forEach(function (stop, i) {\n return gradient.addColorStop(stop, gradientColor[i]);\n });\n ctx[\"\".concat(gradientWith, \"Style\")] = gradient;\n}\n/**\r\n * @description Check if the gradient configuration is legal\r\n * @param {Style} style Instance of Style\r\n * @return {Boolean} Check Result\r\n */\n\n\nfunction gradientValidator(style) {\n var gradientColor = style.gradientColor,\n gradientParams = style.gradientParams,\n gradientType = style.gradientType,\n gradientWith = style.gradientWith,\n gradientStops = style.gradientStops;\n if (!gradientColor || !gradientParams) return false;\n\n if (gradientColor.length === 1) {\n console.warn('The gradient needs to provide at least two colors');\n return false;\n }\n\n if (gradientType !== 'linear' && gradientType !== 'radial') {\n console.warn('GradientType only supports linear or radial, current value is ' + gradientType);\n return false;\n }\n\n var gradientParamsLength = gradientParams.length;\n\n if (gradientType === 'linear' && gradientParamsLength !== 4 || gradientType === 'radial' && gradientParamsLength !== 6) {\n console.warn('The expected length of gradientParams is ' + (gradientType === 'linear' ? '4' : '6'));\n return false;\n }\n\n if (gradientWith !== 'fill' && gradientWith !== 'stroke') {\n console.warn('GradientWith only supports fill or stroke, current value is ' + gradientWith);\n return false;\n }\n\n if (gradientStops !== 'auto' && !(gradientStops instanceof Array)) {\n console.warn(\"gradientStops only supports 'auto' or Number Array ([0, .5, 1]), current value is \" + gradientStops);\n return false;\n }\n\n return true;\n}\n/**\r\n * @description Get a uniform gradient color stop\r\n * @param {Array} color Gradient color\r\n * @return {Array} Gradient color stop\r\n */\n\n\nfunction getAutoColorStops(color) {\n var stopGap = 1 / (color.length - 1);\n return color.map(function (foo, i) {\n return stopGap * i;\n });\n}\n/**\r\n * @description Restore canvas ctx transform\r\n * @param {Object} ctx Context of canvas\r\n * @return {Undefined} Void\r\n */\n\n\nStyle.prototype.restoreTransform = function (ctx) {\n ctx.restore();\n};\n/**\r\n * @description Update style data\r\n * @param {Object} change Changed data\r\n * @return {Undefined} Void\r\n */\n\n\nStyle.prototype.update = function (change) {\n this.colorProcessor(change);\n Object.assign(this, change);\n};\n/**\r\n * @description Get the current style configuration\r\n * @return {Object} Style configuration\r\n */\n\n\nStyle.prototype.getStyle = function () {\n var clonedStyle = (0, _util.deepClone)(this, true);\n this.colorProcessor(clonedStyle, true);\n return clonedStyle;\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.extendNewGraph = extendNewGraph;\nexports[\"default\"] = exports.text = exports.bezierCurve = exports.smoothline = exports.polyline = exports.regPolygon = exports.sector = exports.arc = exports.ring = exports.rect = exports.ellipse = exports.circle = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _bezierCurve2 = _interopRequireDefault(require(\"@jiaminghi/bezier-curve\"));\n\nvar _util = require(\"../plugin/util\");\n\nvar _canvas = require(\"../plugin/canvas\");\n\nvar polylineToBezierCurve = _bezierCurve2[\"default\"].polylineToBezierCurve,\n bezierCurveToPolyline = _bezierCurve2[\"default\"].bezierCurveToPolyline;\nvar circle = {\n shape: {\n rx: 0,\n ry: 0,\n r: 0\n },\n validator: function validator(_ref) {\n var shape = _ref.shape;\n var rx = shape.rx,\n ry = shape.ry,\n r = shape.r;\n\n if (typeof rx !== 'number' || typeof ry !== 'number' || typeof r !== 'number') {\n console.error('Circle shape configuration is abnormal!');\n return false;\n }\n\n return true;\n },\n draw: function draw(_ref2, _ref3) {\n var ctx = _ref2.ctx;\n var shape = _ref3.shape;\n ctx.beginPath();\n var rx = shape.rx,\n ry = shape.ry,\n r = shape.r;\n ctx.arc(rx, ry, r > 0 ? r : 0.01, 0, Math.PI * 2);\n ctx.fill();\n ctx.stroke();\n ctx.closePath();\n },\n hoverCheck: function hoverCheck(position, _ref4) {\n var shape = _ref4.shape;\n var rx = shape.rx,\n ry = shape.ry,\n r = shape.r;\n return (0, _util.checkPointIsInCircle)(position, rx, ry, r);\n },\n setGraphCenter: function setGraphCenter(e, _ref5) {\n var shape = _ref5.shape,\n style = _ref5.style;\n var rx = shape.rx,\n ry = shape.ry;\n style.graphCenter = [rx, ry];\n },\n move: function move(_ref6, _ref7) {\n var movementX = _ref6.movementX,\n movementY = _ref6.movementY;\n var shape = _ref7.shape;\n this.attr('shape', {\n rx: shape.rx + movementX,\n ry: shape.ry + movementY\n });\n }\n};\nexports.circle = circle;\nvar ellipse = {\n shape: {\n rx: 0,\n ry: 0,\n hr: 0,\n vr: 0\n },\n validator: function validator(_ref8) {\n var shape = _ref8.shape;\n var rx = shape.rx,\n ry = shape.ry,\n hr = shape.hr,\n vr = shape.vr;\n\n if (typeof rx !== 'number' || typeof ry !== 'number' || typeof hr !== 'number' || typeof vr !== 'number') {\n console.error('Ellipse shape configuration is abnormal!');\n return false;\n }\n\n return true;\n },\n draw: function draw(_ref9, _ref10) {\n var ctx = _ref9.ctx;\n var shape = _ref10.shape;\n ctx.beginPath();\n var rx = shape.rx,\n ry = shape.ry,\n hr = shape.hr,\n vr = shape.vr;\n ctx.ellipse(rx, ry, hr > 0 ? hr : 0.01, vr > 0 ? vr : 0.01, 0, 0, Math.PI * 2);\n ctx.fill();\n ctx.stroke();\n ctx.closePath();\n },\n hoverCheck: function hoverCheck(position, _ref11) {\n var shape = _ref11.shape;\n var rx = shape.rx,\n ry = shape.ry,\n hr = shape.hr,\n vr = shape.vr;\n var a = Math.max(hr, vr);\n var b = Math.min(hr, vr);\n var c = Math.sqrt(a * a - b * b);\n var leftFocusPoint = [rx - c, ry];\n var rightFocusPoint = [rx + c, ry];\n var distance = (0, _util.getTwoPointDistance)(position, leftFocusPoint) + (0, _util.getTwoPointDistance)(position, rightFocusPoint);\n return distance <= 2 * a;\n },\n setGraphCenter: function setGraphCenter(e, _ref12) {\n var shape = _ref12.shape,\n style = _ref12.style;\n var rx = shape.rx,\n ry = shape.ry;\n style.graphCenter = [rx, ry];\n },\n move: function move(_ref13, _ref14) {\n var movementX = _ref13.movementX,\n movementY = _ref13.movementY;\n var shape = _ref14.shape;\n this.attr('shape', {\n rx: shape.rx + movementX,\n ry: shape.ry + movementY\n });\n }\n};\nexports.ellipse = ellipse;\nvar rect = {\n shape: {\n x: 0,\n y: 0,\n w: 0,\n h: 0\n },\n validator: function validator(_ref15) {\n var shape = _ref15.shape;\n var x = shape.x,\n y = shape.y,\n w = shape.w,\n h = shape.h;\n\n if (typeof x !== 'number' || typeof y !== 'number' || typeof w !== 'number' || typeof h !== 'number') {\n console.error('Rect shape configuration is abnormal!');\n return false;\n }\n\n return true;\n },\n draw: function draw(_ref16, _ref17) {\n var ctx = _ref16.ctx;\n var shape = _ref17.shape;\n ctx.beginPath();\n var x = shape.x,\n y = shape.y,\n w = shape.w,\n h = shape.h;\n ctx.rect(x, y, w, h);\n ctx.fill();\n ctx.stroke();\n ctx.closePath();\n },\n hoverCheck: function hoverCheck(position, _ref18) {\n var shape = _ref18.shape;\n var x = shape.x,\n y = shape.y,\n w = shape.w,\n h = shape.h;\n return (0, _util.checkPointIsInRect)(position, x, y, w, h);\n },\n setGraphCenter: function setGraphCenter(e, _ref19) {\n var shape = _ref19.shape,\n style = _ref19.style;\n var x = shape.x,\n y = shape.y,\n w = shape.w,\n h = shape.h;\n style.graphCenter = [x + w / 2, y + h / 2];\n },\n move: function move(_ref20, _ref21) {\n var movementX = _ref20.movementX,\n movementY = _ref20.movementY;\n var shape = _ref21.shape;\n this.attr('shape', {\n x: shape.x + movementX,\n y: shape.y + movementY\n });\n }\n};\nexports.rect = rect;\nvar ring = {\n shape: {\n rx: 0,\n ry: 0,\n r: 0\n },\n validator: function validator(_ref22) {\n var shape = _ref22.shape;\n var rx = shape.rx,\n ry = shape.ry,\n r = shape.r;\n\n if (typeof rx !== 'number' || typeof ry !== 'number' || typeof r !== 'number') {\n console.error('Ring shape configuration is abnormal!');\n return false;\n }\n\n return true;\n },\n draw: function draw(_ref23, _ref24) {\n var ctx = _ref23.ctx;\n var shape = _ref24.shape;\n ctx.beginPath();\n var rx = shape.rx,\n ry = shape.ry,\n r = shape.r;\n ctx.arc(rx, ry, r > 0 ? r : 0.01, 0, Math.PI * 2);\n ctx.stroke();\n ctx.closePath();\n },\n hoverCheck: function hoverCheck(position, _ref25) {\n var shape = _ref25.shape,\n style = _ref25.style;\n var rx = shape.rx,\n ry = shape.ry,\n r = shape.r;\n var lineWidth = style.lineWidth;\n var halfLineWidth = lineWidth / 2;\n var minDistance = r - halfLineWidth;\n var maxDistance = r + halfLineWidth;\n var distance = (0, _util.getTwoPointDistance)(position, [rx, ry]);\n return distance >= minDistance && distance <= maxDistance;\n },\n setGraphCenter: function setGraphCenter(e, _ref26) {\n var shape = _ref26.shape,\n style = _ref26.style;\n var rx = shape.rx,\n ry = shape.ry;\n style.graphCenter = [rx, ry];\n },\n move: function move(_ref27, _ref28) {\n var movementX = _ref27.movementX,\n movementY = _ref27.movementY;\n var shape = _ref28.shape;\n this.attr('shape', {\n rx: shape.rx + movementX,\n ry: shape.ry + movementY\n });\n }\n};\nexports.ring = ring;\nvar arc = {\n shape: {\n rx: 0,\n ry: 0,\n r: 0,\n startAngle: 0,\n endAngle: 0,\n clockWise: true\n },\n validator: function validator(_ref29) {\n var shape = _ref29.shape;\n var keys = ['rx', 'ry', 'r', 'startAngle', 'endAngle'];\n\n if (keys.find(function (key) {\n return typeof shape[key] !== 'number';\n })) {\n console.error('Arc shape configuration is abnormal!');\n return false;\n }\n\n return true;\n },\n draw: function draw(_ref30, _ref31) {\n var ctx = _ref30.ctx;\n var shape = _ref31.shape;\n ctx.beginPath();\n var rx = shape.rx,\n ry = shape.ry,\n r = shape.r,\n startAngle = shape.startAngle,\n endAngle = shape.endAngle,\n clockWise = shape.clockWise;\n ctx.arc(rx, ry, r > 0 ? r : 0.001, startAngle, endAngle, !clockWise);\n ctx.stroke();\n ctx.closePath();\n },\n hoverCheck: function hoverCheck(position, _ref32) {\n var shape = _ref32.shape,\n style = _ref32.style;\n var rx = shape.rx,\n ry = shape.ry,\n r = shape.r,\n startAngle = shape.startAngle,\n endAngle = shape.endAngle,\n clockWise = shape.clockWise;\n var lineWidth = style.lineWidth;\n var halfLineWidth = lineWidth / 2;\n var insideRadius = r - halfLineWidth;\n var outsideRadius = r + halfLineWidth;\n return !(0, _util.checkPointIsInSector)(position, rx, ry, insideRadius, startAngle, endAngle, clockWise) && (0, _util.checkPointIsInSector)(position, rx, ry, outsideRadius, startAngle, endAngle, clockWise);\n },\n setGraphCenter: function setGraphCenter(e, _ref33) {\n var shape = _ref33.shape,\n style = _ref33.style;\n var rx = shape.rx,\n ry = shape.ry;\n style.graphCenter = [rx, ry];\n },\n move: function move(_ref34, _ref35) {\n var movementX = _ref34.movementX,\n movementY = _ref34.movementY;\n var shape = _ref35.shape;\n this.attr('shape', {\n rx: shape.rx + movementX,\n ry: shape.ry + movementY\n });\n }\n};\nexports.arc = arc;\nvar sector = {\n shape: {\n rx: 0,\n ry: 0,\n r: 0,\n startAngle: 0,\n endAngle: 0,\n clockWise: true\n },\n validator: function validator(_ref36) {\n var shape = _ref36.shape;\n var keys = ['rx', 'ry', 'r', 'startAngle', 'endAngle'];\n\n if (keys.find(function (key) {\n return typeof shape[key] !== 'number';\n })) {\n console.error('Sector shape configuration is abnormal!');\n return false;\n }\n\n return true;\n },\n draw: function draw(_ref37, _ref38) {\n var ctx = _ref37.ctx;\n var shape = _ref38.shape;\n ctx.beginPath();\n var rx = shape.rx,\n ry = shape.ry,\n r = shape.r,\n startAngle = shape.startAngle,\n endAngle = shape.endAngle,\n clockWise = shape.clockWise;\n ctx.arc(rx, ry, r > 0 ? r : 0.01, startAngle, endAngle, !clockWise);\n ctx.lineTo(rx, ry);\n ctx.closePath();\n ctx.stroke();\n ctx.fill();\n },\n hoverCheck: function hoverCheck(position, _ref39) {\n var shape = _ref39.shape;\n var rx = shape.rx,\n ry = shape.ry,\n r = shape.r,\n startAngle = shape.startAngle,\n endAngle = shape.endAngle,\n clockWise = shape.clockWise;\n return (0, _util.checkPointIsInSector)(position, rx, ry, r, startAngle, endAngle, clockWise);\n },\n setGraphCenter: function setGraphCenter(e, _ref40) {\n var shape = _ref40.shape,\n style = _ref40.style;\n var rx = shape.rx,\n ry = shape.ry;\n style.graphCenter = [rx, ry];\n },\n move: function move(_ref41, _ref42) {\n var movementX = _ref41.movementX,\n movementY = _ref41.movementY;\n var shape = _ref42.shape;\n var rx = shape.rx,\n ry = shape.ry;\n this.attr('shape', {\n rx: rx + movementX,\n ry: ry + movementY\n });\n }\n};\nexports.sector = sector;\nvar regPolygon = {\n shape: {\n rx: 0,\n ry: 0,\n r: 0,\n side: 0\n },\n validator: function validator(_ref43) {\n var shape = _ref43.shape;\n var side = shape.side;\n var keys = ['rx', 'ry', 'r', 'side'];\n\n if (keys.find(function (key) {\n return typeof shape[key] !== 'number';\n })) {\n console.error('RegPolygon shape configuration is abnormal!');\n return false;\n }\n\n if (side < 3) {\n console.error('RegPolygon at least trigon!');\n return false;\n }\n\n return true;\n },\n draw: function draw(_ref44, _ref45) {\n var ctx = _ref44.ctx;\n var shape = _ref45.shape,\n cache = _ref45.cache;\n ctx.beginPath();\n var rx = shape.rx,\n ry = shape.ry,\n r = shape.r,\n side = shape.side;\n\n if (!cache.points || cache.rx !== rx || cache.ry !== ry || cache.r !== r || cache.side !== side) {\n var _points = (0, _util.getRegularPolygonPoints)(rx, ry, r, side);\n\n Object.assign(cache, {\n points: _points,\n rx: rx,\n ry: ry,\n r: r,\n side: side\n });\n }\n\n var points = cache.points;\n (0, _canvas.drawPolylinePath)(ctx, points);\n ctx.closePath();\n ctx.stroke();\n ctx.fill();\n },\n hoverCheck: function hoverCheck(position, _ref46) {\n var cache = _ref46.cache;\n var points = cache.points;\n return (0, _util.checkPointIsInPolygon)(position, points);\n },\n setGraphCenter: function setGraphCenter(e, _ref47) {\n var shape = _ref47.shape,\n style = _ref47.style;\n var rx = shape.rx,\n ry = shape.ry;\n style.graphCenter = [rx, ry];\n },\n move: function move(_ref48, _ref49) {\n var movementX = _ref48.movementX,\n movementY = _ref48.movementY;\n var shape = _ref49.shape,\n cache = _ref49.cache;\n var rx = shape.rx,\n ry = shape.ry;\n cache.rx += movementX;\n cache.ry += movementY;\n this.attr('shape', {\n rx: rx + movementX,\n ry: ry + movementY\n });\n cache.points = cache.points.map(function (_ref50) {\n var _ref51 = (0, _slicedToArray2[\"default\"])(_ref50, 2),\n x = _ref51[0],\n y = _ref51[1];\n\n return [x + movementX, y + movementY];\n });\n }\n};\nexports.regPolygon = regPolygon;\nvar polyline = {\n shape: {\n points: [],\n close: false\n },\n validator: function validator(_ref52) {\n var shape = _ref52.shape;\n var points = shape.points;\n\n if (!(points instanceof Array)) {\n console.error('Polyline points should be an array!');\n return false;\n }\n\n return true;\n },\n draw: function draw(_ref53, _ref54) {\n var ctx = _ref53.ctx;\n var shape = _ref54.shape,\n lineWidth = _ref54.style.lineWidth;\n ctx.beginPath();\n var points = shape.points,\n close = shape.close;\n if (lineWidth === 1) points = (0, _util.eliminateBlur)(points);\n (0, _canvas.drawPolylinePath)(ctx, points);\n\n if (close) {\n ctx.closePath();\n ctx.fill();\n ctx.stroke();\n } else {\n ctx.stroke();\n }\n },\n hoverCheck: function hoverCheck(position, _ref55) {\n var shape = _ref55.shape,\n style = _ref55.style;\n var points = shape.points,\n close = shape.close;\n var lineWidth = style.lineWidth;\n\n if (close) {\n return (0, _util.checkPointIsInPolygon)(position, points);\n } else {\n return (0, _util.checkPointIsNearPolyline)(position, points, lineWidth);\n }\n },\n setGraphCenter: function setGraphCenter(e, _ref56) {\n var shape = _ref56.shape,\n style = _ref56.style;\n var points = shape.points;\n style.graphCenter = points[0];\n },\n move: function move(_ref57, _ref58) {\n var movementX = _ref57.movementX,\n movementY = _ref57.movementY;\n var shape = _ref58.shape;\n var points = shape.points;\n var moveAfterPoints = points.map(function (_ref59) {\n var _ref60 = (0, _slicedToArray2[\"default\"])(_ref59, 2),\n x = _ref60[0],\n y = _ref60[1];\n\n return [x + movementX, y + movementY];\n });\n this.attr('shape', {\n points: moveAfterPoints\n });\n }\n};\nexports.polyline = polyline;\nvar smoothline = {\n shape: {\n points: [],\n close: false\n },\n validator: function validator(_ref61) {\n var shape = _ref61.shape;\n var points = shape.points;\n\n if (!(points instanceof Array)) {\n console.error('Smoothline points should be an array!');\n return false;\n }\n\n return true;\n },\n draw: function draw(_ref62, _ref63) {\n var ctx = _ref62.ctx;\n var shape = _ref63.shape,\n cache = _ref63.cache;\n var points = shape.points,\n close = shape.close;\n\n if (!cache.points || cache.points.toString() !== points.toString()) {\n var _bezierCurve = polylineToBezierCurve(points, close);\n\n var hoverPoints = bezierCurveToPolyline(_bezierCurve);\n Object.assign(cache, {\n points: (0, _util.deepClone)(points, true),\n bezierCurve: _bezierCurve,\n hoverPoints: hoverPoints\n });\n }\n\n var bezierCurve = cache.bezierCurve;\n ctx.beginPath();\n (0, _canvas.drawBezierCurvePath)(ctx, bezierCurve.slice(1), bezierCurve[0]);\n\n if (close) {\n ctx.closePath();\n ctx.fill();\n ctx.stroke();\n } else {\n ctx.stroke();\n }\n },\n hoverCheck: function hoverCheck(position, _ref64) {\n var cache = _ref64.cache,\n shape = _ref64.shape,\n style = _ref64.style;\n var hoverPoints = cache.hoverPoints;\n var close = shape.close;\n var lineWidth = style.lineWidth;\n\n if (close) {\n return (0, _util.checkPointIsInPolygon)(position, hoverPoints);\n } else {\n return (0, _util.checkPointIsNearPolyline)(position, hoverPoints, lineWidth);\n }\n },\n setGraphCenter: function setGraphCenter(e, _ref65) {\n var shape = _ref65.shape,\n style = _ref65.style;\n var points = shape.points;\n style.graphCenter = points[0];\n },\n move: function move(_ref66, _ref67) {\n var movementX = _ref66.movementX,\n movementY = _ref66.movementY;\n var shape = _ref67.shape,\n cache = _ref67.cache;\n var points = shape.points;\n var moveAfterPoints = points.map(function (_ref68) {\n var _ref69 = (0, _slicedToArray2[\"default\"])(_ref68, 2),\n x = _ref69[0],\n y = _ref69[1];\n\n return [x + movementX, y + movementY];\n });\n cache.points = moveAfterPoints;\n\n var _cache$bezierCurve$ = (0, _slicedToArray2[\"default\"])(cache.bezierCurve[0], 2),\n fx = _cache$bezierCurve$[0],\n fy = _cache$bezierCurve$[1];\n\n var curves = cache.bezierCurve.slice(1);\n cache.bezierCurve = [[fx + movementX, fy + movementY]].concat((0, _toConsumableArray2[\"default\"])(curves.map(function (curve) {\n return curve.map(function (_ref70) {\n var _ref71 = (0, _slicedToArray2[\"default\"])(_ref70, 2),\n x = _ref71[0],\n y = _ref71[1];\n\n return [x + movementX, y + movementY];\n });\n })));\n cache.hoverPoints = cache.hoverPoints.map(function (_ref72) {\n var _ref73 = (0, _slicedToArray2[\"default\"])(_ref72, 2),\n x = _ref73[0],\n y = _ref73[1];\n\n return [x + movementX, y + movementY];\n });\n this.attr('shape', {\n points: moveAfterPoints\n });\n }\n};\nexports.smoothline = smoothline;\nvar bezierCurve = {\n shape: {\n points: [],\n close: false\n },\n validator: function validator(_ref74) {\n var shape = _ref74.shape;\n var points = shape.points;\n\n if (!(points instanceof Array)) {\n console.error('BezierCurve points should be an array!');\n return false;\n }\n\n return true;\n },\n draw: function draw(_ref75, _ref76) {\n var ctx = _ref75.ctx;\n var shape = _ref76.shape,\n cache = _ref76.cache;\n var points = shape.points,\n close = shape.close;\n\n if (!cache.points || cache.points.toString() !== points.toString()) {\n var hoverPoints = bezierCurveToPolyline(points, 20);\n Object.assign(cache, {\n points: (0, _util.deepClone)(points, true),\n hoverPoints: hoverPoints\n });\n }\n\n ctx.beginPath();\n (0, _canvas.drawBezierCurvePath)(ctx, points.slice(1), points[0]);\n\n if (close) {\n ctx.closePath();\n ctx.fill();\n ctx.stroke();\n } else {\n ctx.stroke();\n }\n },\n hoverCheck: function hoverCheck(position, _ref77) {\n var cache = _ref77.cache,\n shape = _ref77.shape,\n style = _ref77.style;\n var hoverPoints = cache.hoverPoints;\n var close = shape.close;\n var lineWidth = style.lineWidth;\n\n if (close) {\n return (0, _util.checkPointIsInPolygon)(position, hoverPoints);\n } else {\n return (0, _util.checkPointIsNearPolyline)(position, hoverPoints, lineWidth);\n }\n },\n setGraphCenter: function setGraphCenter(e, _ref78) {\n var shape = _ref78.shape,\n style = _ref78.style;\n var points = shape.points;\n style.graphCenter = points[0];\n },\n move: function move(_ref79, _ref80) {\n var movementX = _ref79.movementX,\n movementY = _ref79.movementY;\n var shape = _ref80.shape,\n cache = _ref80.cache;\n var points = shape.points;\n\n var _points$ = (0, _slicedToArray2[\"default\"])(points[0], 2),\n fx = _points$[0],\n fy = _points$[1];\n\n var curves = points.slice(1);\n var bezierCurve = [[fx + movementX, fy + movementY]].concat((0, _toConsumableArray2[\"default\"])(curves.map(function (curve) {\n return curve.map(function (_ref81) {\n var _ref82 = (0, _slicedToArray2[\"default\"])(_ref81, 2),\n x = _ref82[0],\n y = _ref82[1];\n\n return [x + movementX, y + movementY];\n });\n })));\n cache.points = bezierCurve;\n cache.hoverPoints = cache.hoverPoints.map(function (_ref83) {\n var _ref84 = (0, _slicedToArray2[\"default\"])(_ref83, 2),\n x = _ref84[0],\n y = _ref84[1];\n\n return [x + movementX, y + movementY];\n });\n this.attr('shape', {\n points: bezierCurve\n });\n }\n};\nexports.bezierCurve = bezierCurve;\nvar text = {\n shape: {\n content: '',\n position: [],\n maxWidth: undefined,\n rowGap: 0\n },\n validator: function validator(_ref85) {\n var shape = _ref85.shape;\n var content = shape.content,\n position = shape.position,\n rowGap = shape.rowGap;\n\n if (typeof content !== 'string') {\n console.error('Text content should be a string!');\n return false;\n }\n\n if (!(position instanceof Array)) {\n console.error('Text position should be an array!');\n return false;\n }\n\n if (typeof rowGap !== 'number') {\n console.error('Text rowGap should be a number!');\n return false;\n }\n\n return true;\n },\n draw: function draw(_ref86, _ref87) {\n var ctx = _ref86.ctx;\n var shape = _ref87.shape;\n var content = shape.content,\n position = shape.position,\n maxWidth = shape.maxWidth,\n rowGap = shape.rowGap;\n var textBaseline = ctx.textBaseline,\n font = ctx.font;\n var fontSize = parseInt(font.replace(/\\D/g, ''));\n\n var _position = position,\n _position2 = (0, _slicedToArray2[\"default\"])(_position, 2),\n x = _position2[0],\n y = _position2[1];\n\n content = content.split('\\n');\n var rowNum = content.length;\n var lineHeight = fontSize + rowGap;\n var allHeight = rowNum * lineHeight - rowGap;\n var offset = 0;\n\n if (textBaseline === 'middle') {\n offset = allHeight / 2;\n y += fontSize / 2;\n }\n\n if (textBaseline === 'bottom') {\n offset = allHeight;\n y += fontSize;\n }\n\n position = new Array(rowNum).fill(0).map(function (foo, i) {\n return [x, y + i * lineHeight - offset];\n });\n ctx.beginPath();\n content.forEach(function (text, i) {\n ctx.fillText.apply(ctx, [text].concat((0, _toConsumableArray2[\"default\"])(position[i]), [maxWidth]));\n ctx.strokeText.apply(ctx, [text].concat((0, _toConsumableArray2[\"default\"])(position[i]), [maxWidth]));\n });\n ctx.closePath();\n },\n hoverCheck: function hoverCheck(position, _ref88) {\n var shape = _ref88.shape,\n style = _ref88.style;\n return false;\n },\n setGraphCenter: function setGraphCenter(e, _ref89) {\n var shape = _ref89.shape,\n style = _ref89.style;\n var position = shape.position;\n style.graphCenter = (0, _toConsumableArray2[\"default\"])(position);\n },\n move: function move(_ref90, _ref91) {\n var movementX = _ref90.movementX,\n movementY = _ref90.movementY;\n var shape = _ref91.shape;\n\n var _shape$position = (0, _slicedToArray2[\"default\"])(shape.position, 2),\n x = _shape$position[0],\n y = _shape$position[1];\n\n this.attr('shape', {\n position: [x + movementX, y + movementY]\n });\n }\n};\nexports.text = text;\nvar graphs = new Map([['circle', circle], ['ellipse', ellipse], ['rect', rect], ['ring', ring], ['arc', arc], ['sector', sector], ['regPolygon', regPolygon], ['polyline', polyline], ['smoothline', smoothline], ['bezierCurve', bezierCurve], ['text', text]]);\nvar _default = graphs;\n/**\r\n * @description Extend new graph\r\n * @param {String} name Name of Graph\r\n * @param {Object} config Configuration of Graph\r\n * @return {Undefined} Void\r\n */\n\nexports[\"default\"] = _default;\n\nfunction extendNewGraph(name, config) {\n if (!name || !config) {\n console.error('ExtendNewGraph Missing Parameters!');\n return;\n }\n\n if (!config.shape) {\n console.error('Required attribute of shape to extendNewGraph!');\n return;\n }\n\n if (!config.validator) {\n console.error('Required function of validator to extendNewGraph!');\n return;\n }\n\n if (!config.draw) {\n console.error('Required function of draw to extendNewGraph!');\n return;\n }\n\n graphs.set(name, config);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"CRender\", {\n enumerable: true,\n get: function get() {\n return _crender[\"default\"];\n }\n});\nObject.defineProperty(exports, \"extendNewGraph\", {\n enumerable: true,\n get: function get() {\n return _graphs.extendNewGraph;\n }\n});\nexports[\"default\"] = void 0;\n\nvar _crender = _interopRequireDefault(require(\"./class/crender.class\"));\n\nvar _graphs = require(\"./config/graphs\");\n\nvar _default = _crender[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.drawPolylinePath = drawPolylinePath;\nexports.drawBezierCurvePath = drawBezierCurvePath;\nexports[\"default\"] = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\n/**\r\n * @description Draw a polyline path\r\n * @param {Object} ctx Canvas 2d context\r\n * @param {Array} points The points that makes up a polyline\r\n * @param {Boolean} beginPath Whether to execute beginPath\r\n * @param {Boolean} closePath Whether to execute closePath\r\n * @return {Undefined} Void\r\n */\nfunction drawPolylinePath(ctx, points) {\n var beginPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var closePath = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if (!ctx || points.length < 2) return false;\n if (beginPath) ctx.beginPath();\n points.forEach(function (point, i) {\n return point && (i === 0 ? ctx.moveTo.apply(ctx, (0, _toConsumableArray2[\"default\"])(point)) : ctx.lineTo.apply(ctx, (0, _toConsumableArray2[\"default\"])(point)));\n });\n if (closePath) ctx.closePath();\n}\n/**\r\n * @description Draw a bezier curve path\r\n * @param {Object} ctx Canvas 2d context\r\n * @param {Array} points The points that makes up a bezier curve\r\n * @param {Array} moveTo The point need to excute moveTo\r\n * @param {Boolean} beginPath Whether to execute beginPath\r\n * @param {Boolean} closePath Whether to execute closePath\r\n * @return {Undefined} Void\r\n */\n\n\nfunction drawBezierCurvePath(ctx, points) {\n var moveTo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var beginPath = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var closePath = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n if (!ctx || !points) return false;\n if (beginPath) ctx.beginPath();\n if (moveTo) ctx.moveTo.apply(ctx, (0, _toConsumableArray2[\"default\"])(moveTo));\n points.forEach(function (item) {\n return item && ctx.bezierCurveTo.apply(ctx, (0, _toConsumableArray2[\"default\"])(item[0]).concat((0, _toConsumableArray2[\"default\"])(item[1]), (0, _toConsumableArray2[\"default\"])(item[2])));\n });\n if (closePath) ctx.closePath();\n}\n\nvar _default = {\n drawPolylinePath: drawPolylinePath,\n drawBezierCurvePath: drawBezierCurvePath\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.deepClone = deepClone;\nexports.eliminateBlur = eliminateBlur;\nexports.checkPointIsInCircle = checkPointIsInCircle;\nexports.getTwoPointDistance = getTwoPointDistance;\nexports.checkPointIsInPolygon = checkPointIsInPolygon;\nexports.checkPointIsInSector = checkPointIsInSector;\nexports.checkPointIsNearPolyline = checkPointIsNearPolyline;\nexports.checkPointIsInRect = checkPointIsInRect;\nexports.getRotatePointPos = getRotatePointPos;\nexports.getScalePointPos = getScalePointPos;\nexports.getTranslatePointPos = getTranslatePointPos;\nexports.getDistanceBetweenPointAndLine = getDistanceBetweenPointAndLine;\nexports.getCircleRadianPoint = getCircleRadianPoint;\nexports.getRegularPolygonPoints = getRegularPolygonPoints;\nexports[\"default\"] = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar abs = Math.abs,\n sqrt = Math.sqrt,\n sin = Math.sin,\n cos = Math.cos,\n max = Math.max,\n min = Math.min,\n PI = Math.PI;\n/**\r\n * @description Clone an object or array\r\n * @param {Object|Array} object Cloned object\r\n * @param {Boolean} recursion Whether to use recursive cloning\r\n * @return {Object|Array} Clone object\r\n */\n\nfunction deepClone(object) {\n var recursion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (!object) return object;\n var parse = JSON.parse,\n stringify = JSON.stringify;\n if (!recursion) return parse(stringify(object));\n var clonedObj = object instanceof Array ? [] : {};\n\n if (object && (0, _typeof2[\"default\"])(object) === 'object') {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n if (object[key] && (0, _typeof2[\"default\"])(object[key]) === 'object') {\n clonedObj[key] = deepClone(object[key], true);\n } else {\n clonedObj[key] = object[key];\n }\n }\n }\n }\n\n return clonedObj;\n}\n/**\r\n * @description Eliminate line blur due to 1px line width\r\n * @param {Array} points Line points\r\n * @return {Array} Line points after processed\r\n */\n\n\nfunction eliminateBlur(points) {\n return points.map(function (_ref) {\n var _ref2 = (0, _slicedToArray2[\"default\"])(_ref, 2),\n x = _ref2[0],\n y = _ref2[1];\n\n return [parseInt(x) + 0.5, parseInt(y) + 0.5];\n });\n}\n/**\r\n * @description Check if the point is inside the circle\r\n * @param {Array} point Postion of point\r\n * @param {Number} rx Circle x coordinate\r\n * @param {Number} ry Circle y coordinate\r\n * @param {Number} r Circle radius\r\n * @return {Boolean} Result of check\r\n */\n\n\nfunction checkPointIsInCircle(point, rx, ry, r) {\n return getTwoPointDistance(point, [rx, ry]) <= r;\n}\n/**\r\n * @description Get the distance between two points\r\n * @param {Array} point1 point1\r\n * @param {Array} point2 point2\r\n * @return {Number} Distance between two points\r\n */\n\n\nfunction getTwoPointDistance(_ref3, _ref4) {\n var _ref5 = (0, _slicedToArray2[\"default\"])(_ref3, 2),\n xa = _ref5[0],\n ya = _ref5[1];\n\n var _ref6 = (0, _slicedToArray2[\"default\"])(_ref4, 2),\n xb = _ref6[0],\n yb = _ref6[1];\n\n var minusX = abs(xa - xb);\n var minusY = abs(ya - yb);\n return sqrt(minusX * minusX + minusY * minusY);\n}\n/**\r\n * @description Check if the point is inside the polygon\r\n * @param {Array} point Postion of point\r\n * @param {Array} points The points that makes up a polyline\r\n * @return {Boolean} Result of check\r\n */\n\n\nfunction checkPointIsInPolygon(point, polygon) {\n var counter = 0;\n\n var _point = (0, _slicedToArray2[\"default\"])(point, 2),\n x = _point[0],\n y = _point[1];\n\n var pointNum = polygon.length;\n\n for (var i = 1, p1 = polygon[0]; i <= pointNum; i++) {\n var p2 = polygon[i % pointNum];\n\n if (x > min(p1[0], p2[0]) && x <= max(p1[0], p2[0])) {\n if (y <= max(p1[1], p2[1])) {\n if (p1[0] !== p2[0]) {\n var xinters = (x - p1[0]) * (p2[1] - p1[1]) / (p2[0] - p1[0]) + p1[1];\n\n if (p1[1] === p2[1] || y <= xinters) {\n counter++;\n }\n }\n }\n }\n\n p1 = p2;\n }\n\n return counter % 2 === 1;\n}\n/**\r\n * @description Check if the point is inside the sector\r\n * @param {Array} point Postion of point\r\n * @param {Number} rx Sector x coordinate\r\n * @param {Number} ry Sector y coordinate\r\n * @param {Number} r Sector radius\r\n * @param {Number} startAngle Sector start angle\r\n * @param {Number} endAngle Sector end angle\r\n * @param {Boolean} clockWise Whether the sector angle is clockwise\r\n * @return {Boolean} Result of check\r\n */\n\n\nfunction checkPointIsInSector(point, rx, ry, r, startAngle, endAngle, clockWise) {\n if (!point) return false;\n if (getTwoPointDistance(point, [rx, ry]) > r) return false;\n\n if (!clockWise) {\n var _deepClone = deepClone([endAngle, startAngle]);\n\n var _deepClone2 = (0, _slicedToArray2[\"default\"])(_deepClone, 2);\n\n startAngle = _deepClone2[0];\n endAngle = _deepClone2[1];\n }\n\n var reverseBE = startAngle > endAngle;\n\n if (reverseBE) {\n var _ref7 = [endAngle, startAngle];\n startAngle = _ref7[0];\n endAngle = _ref7[1];\n }\n\n var minus = endAngle - startAngle;\n if (minus >= PI * 2) return true;\n\n var _point2 = (0, _slicedToArray2[\"default\"])(point, 2),\n x = _point2[0],\n y = _point2[1];\n\n var _getCircleRadianPoint = getCircleRadianPoint(rx, ry, r, startAngle),\n _getCircleRadianPoint2 = (0, _slicedToArray2[\"default\"])(_getCircleRadianPoint, 2),\n bx = _getCircleRadianPoint2[0],\n by = _getCircleRadianPoint2[1];\n\n var _getCircleRadianPoint3 = getCircleRadianPoint(rx, ry, r, endAngle),\n _getCircleRadianPoint4 = (0, _slicedToArray2[\"default\"])(_getCircleRadianPoint3, 2),\n ex = _getCircleRadianPoint4[0],\n ey = _getCircleRadianPoint4[1];\n\n var vPoint = [x - rx, y - ry];\n var vBArm = [bx - rx, by - ry];\n var vEArm = [ex - rx, ey - ry];\n var reverse = minus > PI;\n\n if (reverse) {\n var _deepClone3 = deepClone([vEArm, vBArm]);\n\n var _deepClone4 = (0, _slicedToArray2[\"default\"])(_deepClone3, 2);\n\n vBArm = _deepClone4[0];\n vEArm = _deepClone4[1];\n }\n\n var inSector = isClockWise(vBArm, vPoint) && !isClockWise(vEArm, vPoint);\n if (reverse) inSector = !inSector;\n if (reverseBE) inSector = !inSector;\n return inSector;\n}\n/**\r\n * @description Determine if the point is in the clockwise direction of the vector\r\n * @param {Array} vArm Vector\r\n * @param {Array} vPoint Point\r\n * @return {Boolean} Result of check\r\n */\n\n\nfunction isClockWise(vArm, vPoint) {\n var _vArm = (0, _slicedToArray2[\"default\"])(vArm, 2),\n ax = _vArm[0],\n ay = _vArm[1];\n\n var _vPoint = (0, _slicedToArray2[\"default\"])(vPoint, 2),\n px = _vPoint[0],\n py = _vPoint[1];\n\n return -ay * px + ax * py > 0;\n}\n/**\r\n * @description Check if the point is inside the polyline\r\n * @param {Array} point Postion of point\r\n * @param {Array} polyline The points that makes up a polyline\r\n * @param {Number} lineWidth Polyline linewidth\r\n * @return {Boolean} Result of check\r\n */\n\n\nfunction checkPointIsNearPolyline(point, polyline, lineWidth) {\n var halfLineWidth = lineWidth / 2;\n var moveUpPolyline = polyline.map(function (_ref8) {\n var _ref9 = (0, _slicedToArray2[\"default\"])(_ref8, 2),\n x = _ref9[0],\n y = _ref9[1];\n\n return [x, y - halfLineWidth];\n });\n var moveDownPolyline = polyline.map(function (_ref10) {\n var _ref11 = (0, _slicedToArray2[\"default\"])(_ref10, 2),\n x = _ref11[0],\n y = _ref11[1];\n\n return [x, y + halfLineWidth];\n });\n var polygon = [].concat((0, _toConsumableArray2[\"default\"])(moveUpPolyline), (0, _toConsumableArray2[\"default\"])(moveDownPolyline.reverse()));\n return checkPointIsInPolygon(point, polygon);\n}\n/**\r\n * @description Check if the point is inside the rect\r\n * @param {Array} point Postion of point\r\n * @param {Number} x Rect start x coordinate\r\n * @param {Number} y Rect start y coordinate\r\n * @param {Number} width Rect width\r\n * @param {Number} height Rect height\r\n * @return {Boolean} Result of check\r\n */\n\n\nfunction checkPointIsInRect(_ref12, x, y, width, height) {\n var _ref13 = (0, _slicedToArray2[\"default\"])(_ref12, 2),\n px = _ref13[0],\n py = _ref13[1];\n\n if (px < x) return false;\n if (py < y) return false;\n if (px > x + width) return false;\n if (py > y + height) return false;\n return true;\n}\n/**\r\n * @description Get the coordinates of the rotated point\r\n * @param {Number} rotate Degree of rotation\r\n * @param {Array} point Postion of point\r\n * @param {Array} origin Rotation center\r\n * @param {Array} origin Rotation center\r\n * @return {Number} Coordinates after rotation\r\n */\n\n\nfunction getRotatePointPos() {\n var rotate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var point = arguments.length > 1 ? arguments[1] : undefined;\n var origin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [0, 0];\n if (!point) return false;\n if (rotate % 360 === 0) return point;\n\n var _point3 = (0, _slicedToArray2[\"default\"])(point, 2),\n x = _point3[0],\n y = _point3[1];\n\n var _origin = (0, _slicedToArray2[\"default\"])(origin, 2),\n ox = _origin[0],\n oy = _origin[1];\n\n rotate *= PI / 180;\n return [(x - ox) * cos(rotate) - (y - oy) * sin(rotate) + ox, (x - ox) * sin(rotate) + (y - oy) * cos(rotate) + oy];\n}\n/**\r\n * @description Get the coordinates of the scaled point\r\n * @param {Array} scale Scale factor\r\n * @param {Array} point Postion of point\r\n * @param {Array} origin Scale center\r\n * @return {Number} Coordinates after scale\r\n */\n\n\nfunction getScalePointPos() {\n var scale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [1, 1];\n var point = arguments.length > 1 ? arguments[1] : undefined;\n var origin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [0, 0];\n if (!point) return false;\n if (scale === 1) return point;\n\n var _point4 = (0, _slicedToArray2[\"default\"])(point, 2),\n x = _point4[0],\n y = _point4[1];\n\n var _origin2 = (0, _slicedToArray2[\"default\"])(origin, 2),\n ox = _origin2[0],\n oy = _origin2[1];\n\n var _scale = (0, _slicedToArray2[\"default\"])(scale, 2),\n xs = _scale[0],\n ys = _scale[1];\n\n var relativePosX = x - ox;\n var relativePosY = y - oy;\n return [relativePosX * xs + ox, relativePosY * ys + oy];\n}\n/**\r\n * @description Get the coordinates of the scaled point\r\n * @param {Array} translate Translation distance\r\n * @param {Array} point Postion of point\r\n * @return {Number} Coordinates after translation\r\n */\n\n\nfunction getTranslatePointPos(translate, point) {\n if (!translate || !point) return false;\n\n var _point5 = (0, _slicedToArray2[\"default\"])(point, 2),\n x = _point5[0],\n y = _point5[1];\n\n var _translate = (0, _slicedToArray2[\"default\"])(translate, 2),\n tx = _translate[0],\n ty = _translate[1];\n\n return [x + tx, y + ty];\n}\n/**\r\n * @description Get the distance from the point to the line\r\n * @param {Array} point Postion of point\r\n * @param {Array} lineBegin Line start position\r\n * @param {Array} lineEnd Line end position\r\n * @return {Number} Distance between point and line\r\n */\n\n\nfunction getDistanceBetweenPointAndLine(point, lineBegin, lineEnd) {\n if (!point || !lineBegin || !lineEnd) return false;\n\n var _point6 = (0, _slicedToArray2[\"default\"])(point, 2),\n x = _point6[0],\n y = _point6[1];\n\n var _lineBegin = (0, _slicedToArray2[\"default\"])(lineBegin, 2),\n x1 = _lineBegin[0],\n y1 = _lineBegin[1];\n\n var _lineEnd = (0, _slicedToArray2[\"default\"])(lineEnd, 2),\n x2 = _lineEnd[0],\n y2 = _lineEnd[1];\n\n var a = y2 - y1;\n var b = x1 - x2;\n var c = y1 * (x2 - x1) - x1 * (y2 - y1);\n var molecule = abs(a * x + b * y + c);\n var denominator = sqrt(a * a + b * b);\n return molecule / denominator;\n}\n/**\r\n * @description Get the coordinates of the specified radian on the circle\r\n * @param {Number} x Circle x coordinate\r\n * @param {Number} y Circle y coordinate\r\n * @param {Number} radius Circle radius\r\n * @param {Number} radian Specfied radian\r\n * @return {Array} Postion of point\r\n */\n\n\nfunction getCircleRadianPoint(x, y, radius, radian) {\n return [x + cos(radian) * radius, y + sin(radian) * radius];\n}\n/**\r\n * @description Get the points that make up a regular polygon\r\n * @param {Number} x X coordinate of the polygon inscribed circle\r\n * @param {Number} y Y coordinate of the polygon inscribed circle\r\n * @param {Number} r Radius of the polygon inscribed circle\r\n * @param {Number} side Side number\r\n * @param {Number} minus Radian offset\r\n * @return {Array} Points that make up a regular polygon\r\n */\n\n\nfunction getRegularPolygonPoints(rx, ry, r, side) {\n var minus = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : PI * -0.5;\n var radianGap = PI * 2 / side;\n var radians = new Array(side).fill('').map(function (t, i) {\n return i * radianGap + minus;\n });\n return radians.map(function (radian) {\n return getCircleRadianPoint(rx, ry, r, radian);\n });\n}\n\nvar _default = {\n deepClone: deepClone,\n eliminateBlur: eliminateBlur,\n checkPointIsInCircle: checkPointIsInCircle,\n checkPointIsInPolygon: checkPointIsInPolygon,\n checkPointIsInSector: checkPointIsInSector,\n checkPointIsNearPolyline: checkPointIsNearPolyline,\n getTwoPointDistance: getTwoPointDistance,\n getRotatePointPos: getRotatePointPos,\n getScalePointPos: getScalePointPos,\n getTranslatePointPos: getTranslatePointPos,\n getCircleRadianPoint: getCircleRadianPoint,\n getRegularPolygonPoints: getRegularPolygonPoints,\n getDistanceBetweenPointAndLine: getDistanceBetweenPointAndLine\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nrequire(\"../extend/index\");\n\nvar _cRender = _interopRequireDefault(require(\"@jiaminghi/c-render\"));\n\nvar _util = require(\"@jiaminghi/c-render/lib/plugin/util\");\n\nvar _core = require(\"../core\");\n\nvar Charts = function Charts(dom) {\n (0, _classCallCheck2[\"default\"])(this, Charts);\n\n if (!dom) {\n console.error('Charts Missing parameters!');\n return false;\n }\n\n var clientWidth = dom.clientWidth,\n clientHeight = dom.clientHeight;\n var canvas = document.createElement('canvas');\n canvas.setAttribute('width', clientWidth);\n canvas.setAttribute('height', clientHeight);\n dom.appendChild(canvas);\n var attribute = {\n container: dom,\n canvas: canvas,\n render: new _cRender[\"default\"](canvas),\n option: null\n };\n Object.assign(this, attribute);\n};\n/**\n * @description Set chart option\n * @param {Object} option Chart option\n * @param {Boolean} animationEnd Execute animationEnd\n * @return {Undefined} No return\n */\n\n\nexports[\"default\"] = Charts;\n\nCharts.prototype.setOption = function (option) {\n var animationEnd = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!option || (0, _typeof2[\"default\"])(option) !== 'object') {\n console.error('setOption Missing parameters!');\n return false;\n }\n\n if (animationEnd) this.render.graphs.forEach(function (graph) {\n return graph.animationEnd();\n });\n var optionCloned = (0, _util.deepClone)(option, true);\n (0, _core.mergeColor)(this, optionCloned);\n (0, _core.grid)(this, optionCloned);\n (0, _core.axis)(this, optionCloned);\n (0, _core.radarAxis)(this, optionCloned);\n (0, _core.title)(this, optionCloned);\n (0, _core.bar)(this, optionCloned);\n (0, _core.line)(this, optionCloned);\n (0, _core.pie)(this, optionCloned);\n (0, _core.radar)(this, optionCloned);\n (0, _core.gauge)(this, optionCloned);\n (0, _core.legend)(this, optionCloned);\n this.option = option;\n this.render.launchAnimation(); // console.warn(this)\n};\n/**\n * @description Resize chart\n * @return {Undefined} No return\n */\n\n\nCharts.prototype.resize = function () {\n var container = this.container,\n canvas = this.canvas,\n render = this.render,\n option = this.option;\n var clientWidth = container.clientWidth,\n clientHeight = container.clientHeight;\n canvas.setAttribute('width', clientWidth);\n canvas.setAttribute('height', clientHeight);\n render.area = [clientWidth, clientHeight];\n this.setOption(option);\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.doUpdate = doUpdate;\nexports.Updater = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar Updater = function Updater(config, series) {\n (0, _classCallCheck2[\"default\"])(this, Updater);\n var chart = config.chart,\n key = config.key,\n getGraphConfig = config.getGraphConfig;\n\n if (typeof getGraphConfig !== 'function') {\n console.warn('Updater need function getGraphConfig!');\n return;\n }\n\n if (!chart[key]) this.graphs = chart[key] = [];\n Object.assign(this, config);\n this.update(series);\n};\n\nexports.Updater = Updater;\n\nUpdater.prototype.update = function (series) {\n var _this = this;\n\n var graphs = this.graphs,\n beforeUpdate = this.beforeUpdate;\n delRedundanceGraph(this, series);\n if (!series.length) return;\n var beforeUpdateType = (0, _typeof2[\"default\"])(beforeUpdate);\n series.forEach(function (seriesItem, i) {\n if (beforeUpdateType === 'function') beforeUpdate(graphs, seriesItem, i, _this);\n var cache = graphs[i];\n\n if (cache) {\n changeGraphs(cache, seriesItem, i, _this);\n } else {\n addGraphs(graphs, seriesItem, i, _this);\n }\n });\n};\n\nfunction delRedundanceGraph(updater, series) {\n var graphs = updater.graphs,\n render = updater.chart.render;\n var cacheGraphNum = graphs.length;\n var needGraphNum = series.length;\n\n if (cacheGraphNum > needGraphNum) {\n var needDelGraphs = graphs.splice(needGraphNum);\n needDelGraphs.forEach(function (item) {\n return item.forEach(function (g) {\n return render.delGraph(g);\n });\n });\n }\n}\n\nfunction changeGraphs(cache, seriesItem, i, updater) {\n var getGraphConfig = updater.getGraphConfig,\n render = updater.chart.render,\n beforeChange = updater.beforeChange;\n var configs = getGraphConfig(seriesItem, updater);\n balanceGraphsNum(cache, configs, render);\n cache.forEach(function (graph, j) {\n var config = configs[j];\n if (typeof beforeChange === 'function') beforeChange(graph, config);\n updateGraphConfigByKey(graph, config);\n });\n}\n\nfunction balanceGraphsNum(graphs, graphConfig, render) {\n var cacheGraphNum = graphs.length;\n var needGraphNum = graphConfig.length;\n\n if (needGraphNum > cacheGraphNum) {\n var lastCacheGraph = graphs.slice(-1)[0];\n var needAddGraphNum = needGraphNum - cacheGraphNum;\n var needAddGraphs = new Array(needAddGraphNum).fill(0).map(function (foo) {\n return render.clone(lastCacheGraph);\n });\n graphs.push.apply(graphs, (0, _toConsumableArray2[\"default\"])(needAddGraphs));\n } else if (needGraphNum < cacheGraphNum) {\n var needDelCache = graphs.splice(needGraphNum);\n needDelCache.forEach(function (g) {\n return render.delGraph(g);\n });\n }\n}\n\nfunction addGraphs(graphs, seriesItem, i, updater) {\n var getGraphConfig = updater.getGraphConfig,\n getStartGraphConfig = updater.getStartGraphConfig,\n chart = updater.chart;\n var render = chart.render;\n var startConfigs = null;\n if (typeof getStartGraphConfig === 'function') startConfigs = getStartGraphConfig(seriesItem, updater);\n var configs = getGraphConfig(seriesItem, updater);\n if (!configs.length) return;\n\n if (startConfigs) {\n graphs[i] = startConfigs.map(function (config) {\n return render.add(config);\n });\n graphs[i].forEach(function (graph, i) {\n var config = configs[i];\n updateGraphConfigByKey(graph, config);\n });\n } else {\n graphs[i] = configs.map(function (config) {\n return render.add(config);\n });\n }\n\n var afterAddGraph = updater.afterAddGraph;\n if (typeof afterAddGraph === 'function') afterAddGraph(graphs[i]);\n}\n\nfunction updateGraphConfigByKey(graph, config) {\n var keys = Object.keys(config);\n keys.forEach(function (key) {\n if (key === 'shape' || key === 'style') {\n graph.animation(key, config[key], true);\n } else {\n graph[key] = config[key];\n }\n });\n}\n\nfunction doUpdate() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n chart = _ref.chart,\n series = _ref.series,\n key = _ref.key,\n getGraphConfig = _ref.getGraphConfig,\n getStartGraphConfig = _ref.getStartGraphConfig,\n beforeChange = _ref.beforeChange,\n beforeUpdate = _ref.beforeUpdate,\n afterAddGraph = _ref.afterAddGraph;\n\n if (chart[key]) {\n chart[key].update(series);\n } else {\n chart[key] = new Updater({\n chart: chart,\n key: key,\n getGraphConfig: getGraphConfig,\n getStartGraphConfig: getStartGraphConfig,\n beforeChange: beforeChange,\n beforeUpdate: beforeUpdate,\n afterAddGraph: afterAddGraph\n }, series);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.yAxisConfig = exports.xAxisConfig = void 0;\nvar xAxisConfig = {\n /**\n * @description Axis name\n * @type {String}\n * @default name = ''\n */\n name: '',\n\n /**\n * @description Whether to display this axis\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis position\n * @type {String}\n * @default position = 'bottom'\n * @example position = 'bottom' | 'top'\n */\n position: 'bottom',\n\n /**\n * @description Name gap\n * @type {Number}\n * @default nameGap = 15\n */\n nameGap: 15,\n\n /**\n * @description Name location\n * @type {String}\n * @default nameLocation = 'end'\n * @example nameLocation = 'end' | 'center' | 'start'\n */\n nameLocation: 'end',\n\n /**\n * @description Name default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n nameTextStyle: {\n fill: '#333',\n fontSize: 10\n },\n\n /**\n * @description Axis min value\n * @type {String|Number}\n * @default min = '20%'\n * @example min = '20%' | 0\n */\n min: '20%',\n\n /**\n * @description Axis max value\n * @type {String|Number}\n * @default max = '20%'\n * @example max = '20%' | 0\n */\n max: '20%',\n\n /**\n * @description Axis value interval\n * @type {Number}\n * @default interval = null\n * @example interval = 100\n */\n interval: null,\n\n /**\n * @description Min interval\n * @type {Number}\n * @default minInterval = null\n * @example minInterval = 1\n */\n minInterval: null,\n\n /**\n * @description Max interval\n * @type {Number}\n * @default maxInterval = null\n * @example maxInterval = 100\n */\n maxInterval: null,\n\n /**\n * @description Boundary gap\n * @type {Boolean}\n * @default boundaryGap = null\n * @example boundaryGap = true\n */\n boundaryGap: null,\n\n /**\n * @description Axis split number\n * @type {Number}\n * @default splitNumber = 5\n */\n splitNumber: 5,\n\n /**\n * @description Axis line configuration\n * @type {Object}\n */\n axisLine: {\n /**\n * @description Whether to display axis line\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis line default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#333',\n lineWidth: 1\n }\n },\n\n /**\n * @description Axis tick configuration\n * @type {Object}\n */\n axisTick: {\n /**\n * @description Whether to display axis tick\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis tick default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#333',\n lineWidth: 1\n }\n },\n\n /**\n * @description Axis label configuration\n * @type {Object}\n */\n axisLabel: {\n /**\n * @description Whether to display axis label\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis label formatter\n * @type {String|Function}\n * @default formatter = null\n * @example formatter = '{value}件'\n * @example formatter = (dataItem) => (dataItem.value)\n */\n formatter: null,\n\n /**\n * @description Axis label default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fill: '#333',\n fontSize: 10,\n rotate: 0\n }\n },\n\n /**\n * @description Axis split line configuration\n * @type {Object}\n */\n splitLine: {\n /**\n * @description Whether to display axis split line\n * @type {Boolean}\n * @default show = false\n */\n show: false,\n\n /**\n * @description Axis split line default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#d4d4d4',\n lineWidth: 1\n }\n },\n\n /**\n * @description X axis render level\n * Priority rendering high level\n * @type {Number}\n * @default rLevel = -20\n */\n rLevel: -20,\n\n /**\n * @description X axis animation curve\n * @type {String}\n * @default animationCurve = 'easeOutCubic'\n */\n animationCurve: 'easeOutCubic',\n\n /**\n * @description X axis animation frame\n * @type {Number}\n * @default animationFrame = 50\n */\n animationFrame: 50\n};\nexports.xAxisConfig = xAxisConfig;\nvar yAxisConfig = {\n /**\n * @description Axis name\n * @type {String}\n * @default name = ''\n */\n name: '',\n\n /**\n * @description Whether to display this axis\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis position\n * @type {String}\n * @default position = 'left'\n * @example position = 'left' | 'right'\n */\n position: 'left',\n\n /**\n * @description Name gap\n * @type {Number}\n * @default nameGap = 15\n */\n nameGap: 15,\n\n /**\n * @description Name location\n * @type {String}\n * @default nameLocation = 'end'\n * @example nameLocation = 'end' | 'center' | 'start'\n */\n nameLocation: 'end',\n\n /**\n * @description name default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n nameTextStyle: {\n fill: '#333',\n fontSize: 10\n },\n\n /**\n * @description Axis min value\n * @type {String|Number}\n * @default min = '20%'\n * @example min = '20%' | 0\n */\n min: '20%',\n\n /**\n * @description Axis max value\n * @type {String|Number}\n * @default max = '20%'\n * @example max = '20%' | 0\n */\n max: '20%',\n\n /**\n * @description Axis value interval\n * @type {Number}\n * @default interval = null\n * @example interval = 100\n */\n interval: null,\n\n /**\n * @description Min interval\n * @type {Number}\n * @default minInterval = null\n * @example minInterval = 1\n */\n minInterval: null,\n\n /**\n * @description Max interval\n * @type {Number}\n * @default maxInterval = null\n * @example maxInterval = 100\n */\n maxInterval: null,\n\n /**\n * @description Boundary gap\n * @type {Boolean}\n * @default boundaryGap = null\n * @example boundaryGap = true\n */\n boundaryGap: null,\n\n /**\n * @description Axis split number\n * @type {Number}\n * @default splitNumber = 5\n */\n splitNumber: 5,\n\n /**\n * @description Axis line configuration\n * @type {Object}\n */\n axisLine: {\n /**\n * @description Whether to display axis line\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis line default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#333',\n lineWidth: 1\n }\n },\n\n /**\n * @description Axis tick configuration\n * @type {Object}\n */\n axisTick: {\n /**\n * @description Whether to display axis tick\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis tick default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#333',\n lineWidth: 1\n }\n },\n\n /**\n * @description Axis label configuration\n * @type {Object}\n */\n axisLabel: {\n /**\n * @description Whether to display axis label\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis label formatter\n * @type {String|Function}\n * @default formatter = null\n * @example formatter = '{value}件'\n * @example formatter = (dataItem) => (dataItem.value)\n */\n formatter: null,\n\n /**\n * @description Axis label default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fill: '#333',\n fontSize: 10,\n rotate: 0\n }\n },\n\n /**\n * @description Axis split line configuration\n * @type {Object}\n */\n splitLine: {\n /**\n * @description Whether to display axis split line\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis split line default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#d4d4d4',\n lineWidth: 1\n }\n },\n\n /**\n * @description Y axis render level\n * Priority rendering high level\n * @type {Number}\n * @default rLevel = -20\n */\n rLevel: -20,\n\n /**\n * @description Y axis animation curve\n * @type {String}\n * @default animationCurve = 'easeOutCubic'\n */\n animationCurve: 'easeOutCubic',\n\n /**\n * @description Y axis animation frame\n * @type {Number}\n * @default animationFrame = 50\n */\n animationFrame: 50\n};\nexports.yAxisConfig = yAxisConfig;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.barConfig = void 0;\nvar barConfig = {\n /**\n * @description Whether to display this bar chart\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Legend name\n * @type {String}\n * @default name = ''\n */\n name: '',\n\n /**\n * @description Data stacking\n * The data value of the series element of the same stack\n * will be superimposed (the latter value will be superimposed on the previous value)\n * @type {String}\n * @default stack = ''\n */\n stack: '',\n\n /**\n * @description Bar shape type\n * @type {String}\n * @default shapeType = 'normal'\n * @example shapeType = 'normal' | 'leftEchelon' | 'rightEchelon'\n */\n shapeType: 'normal',\n\n /**\n * @description Echelon bar sharpness offset\n * @type {Number}\n * @default echelonOffset = 10\n */\n echelonOffset: 10,\n\n /**\n * @description Bar width\n * This property should be set on the last 'bar' series\n * in this coordinate system to take effect and will be in effect\n * for all 'bar' series in this coordinate system\n * @type {String|Number}\n * @default barWidth = 'auto'\n * @example barWidth = 'auto' | '10%' | 20\n */\n barWidth: 'auto',\n\n /**\n * @description Bar gap\n * This property should be set on the last 'bar' series\n * in this coordinate system to take effect and will be in effect\n * for all 'bar' series in this coordinate system\n * @type {String|Number}\n * @default barGap = '30%'\n * @example barGap = '30%' | 30\n */\n barGap: '30%',\n\n /**\n * @description Bar category gap\n * This property should be set on the last 'bar' series\n * in this coordinate system to take effect and will be in effect\n * for all 'bar' series in this coordinate system\n * @type {String|Number}\n * @default barCategoryGap = '20%'\n * @example barCategoryGap = '20%' | 20\n */\n barCategoryGap: '20%',\n\n /**\n * @description Bar x axis index\n * @type {Number}\n * @default xAxisIndex = 0\n * @example xAxisIndex = 0 | 1\n */\n xAxisIndex: 0,\n\n /**\n * @description Bar y axis index\n * @type {Number}\n * @default yAxisIndex = 0\n * @example yAxisIndex = 0 | 1\n */\n yAxisIndex: 0,\n\n /**\n * @description Bar chart data\n * @type {Array}\n * @default data = []\n * @example data = [100, 200, 300]\n */\n data: [],\n\n /**\n * @description Background bar configuration\n * @type {Object}\n */\n backgroundBar: {\n /**\n * @description Whether to display background bar\n * @type {Boolean}\n * @default show = false\n */\n show: false,\n\n /**\n * @description Background bar width\n * @type {String|Number}\n * @default width = 'auto'\n * @example width = 'auto' | '30%' | 30\n */\n width: 'auto',\n\n /**\n * @description Background bar default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fill: 'rgba(200, 200, 200, .4)'\n }\n },\n\n /**\n * @description Bar label configuration\n * @type {Object}\n */\n label: {\n /**\n * @description Whether to display bar label\n * @type {Boolean}\n * @default show = false\n */\n show: false,\n\n /**\n * @description Bar label position\n * @type {String}\n * @default position = 'top'\n * @example position = 'top' | 'center' | 'bottom'\n */\n position: 'top',\n\n /**\n * @description Bar label offset\n * @type {Array}\n * @default offset = [0, -10]\n */\n offset: [0, -10],\n\n /**\n * @description Bar label formatter\n * @type {String|Function}\n * @default formatter = null\n * @example formatter = '{value}件'\n * @example formatter = (dataItem) => (dataItem.value)\n */\n formatter: null,\n\n /**\n * @description Bar label default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fontSize: 10\n }\n },\n\n /**\n * @description Bar gradient configuration\n * @type {Object}\n */\n gradient: {\n /**\n * @description Gradient color (Hex|rgb|rgba)\n * @type {Array}\n * @default color = []\n */\n color: [],\n\n /**\n * @description Local gradient\n * @type {Boolean}\n * @default local = true\n */\n local: true\n },\n\n /**\n * @description Bar style default configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n barStyle: {},\n\n /**\n * @description Independent color mode\n * When set to true, independent color mode is enabled\n * @type {Boolean}\n * @default independentColor = false\n */\n independentColor: false,\n\n /**\n * @description Independent colors\n * Only effective when independent color mode is enabled\n * Default value is the same as the color in the root configuration\n * Two-dimensional color array can produce gradient colors\n * @type {Array}\n * @example independentColor = ['#fff', '#000']\n * @example independentColor = [['#fff', '#000'], '#000']\n */\n independentColors: [],\n\n /**\n * @description Bar chart render level\n * Priority rendering high level\n * @type {Number}\n * @default rLevel = 0\n */\n rLevel: 0,\n\n /**\n * @description Bar animation curve\n * @type {String}\n * @default animationCurve = 'easeOutCubic'\n */\n animationCurve: 'easeOutCubic',\n\n /**\n * @description Bar animation frame\n * @type {Number}\n * @default animationFrame = 50\n */\n animationFrame: 50\n};\nexports.barConfig = barConfig;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.colorConfig = void 0;\nvar colorConfig = ['#37a2da', '#32c5e9', '#67e0e3', '#9fe6b8', '#ffdb5c', '#ff9f7f', '#fb7293', '#e062ae', '#e690d1', '#e7bcf3', '#9d96f5', '#8378ea', '#96bfff'];\nexports.colorConfig = colorConfig;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.gaugeConfig = void 0;\nvar gaugeConfig = {\n /**\n * @description Whether to display this gauge\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Legend name\n * @type {String}\n * @default name = ''\n */\n name: '',\n\n /**\n * @description Radius of gauge\n * @type {String|Number}\n * @default radius = '60%'\n * @example radius = '60%' | 100\n */\n radius: '60%',\n\n /**\n * @description Center point of gauge\n * @type {Array}\n * @default center = ['50%','50%']\n * @example center = ['50%','50%'] | [100, 100]\n */\n center: ['50%', '50%'],\n\n /**\n * @description Gauge start angle\n * @type {Number}\n * @default startAngle = -(Math.PI / 4) * 5\n * @example startAngle = -Math.PI\n */\n startAngle: -(Math.PI / 4) * 5,\n\n /**\n * @description Gauge end angle\n * @type {Number}\n * @default endAngle = Math.PI / 4\n * @example endAngle = 0\n */\n endAngle: Math.PI / 4,\n\n /**\n * @description Gauge min value\n * @type {Number}\n * @default min = 0\n */\n min: 0,\n\n /**\n * @description Gauge max value\n * @type {Number}\n * @default max = 100\n */\n max: 100,\n\n /**\n * @description Gauge split number\n * @type {Number}\n * @default splitNum = 5\n */\n splitNum: 5,\n\n /**\n * @description Gauge arc line width\n * @type {Number}\n * @default arcLineWidth = 15\n */\n arcLineWidth: 15,\n\n /**\n * @description Gauge chart data\n * @type {Array}\n * @default data = []\n */\n data: [],\n\n /**\n * @description Data item arc default style configuration\n * @type {Object}\n * @default dataItemStyle = {Configuration Of Class Style}\n */\n dataItemStyle: {},\n\n /**\n * @description Axis tick configuration\n * @type {Object}\n */\n axisTick: {\n /**\n * @description Whether to display axis tick\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis tick length\n * @type {Number}\n * @default tickLength = 6\n */\n tickLength: 6,\n\n /**\n * @description Axis tick default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#999',\n lineWidth: 1\n }\n },\n\n /**\n * @description Axis label configuration\n * @type {Object}\n */\n axisLabel: {\n /**\n * @description Whether to display axis label\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis label data (Can be calculated automatically)\n * @type {Array}\n * @default data = [Number...]\n */\n data: [],\n\n /**\n * @description Axis label formatter\n * @type {String|Function}\n * @default formatter = null\n * @example formatter = '{value}%'\n * @example formatter = (labelItem) => (labelItem.value)\n */\n formatter: null,\n\n /**\n * @description Axis label gap between label and axis tick\n * @type {String|Function}\n * @default labelGap = 5\n */\n labelGap: 5,\n\n /**\n * @description Axis label default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {}\n },\n\n /**\n * @description Gauge pointer configuration\n * @type {Object}\n */\n pointer: {\n /**\n * @description Whether to display pointer\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Pointer value index of data\n * @type {Number}\n * @default valueIndex = 0 (pointer.value = data[0].value)\n */\n valueIndex: 0,\n\n /**\n * @description Pointer default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n scale: [1, 1],\n fill: '#fb7293'\n }\n },\n\n /**\n * @description Data item arc detail configuration\n * @type {Object}\n */\n details: {\n /**\n * @description Whether to display details\n * @type {Boolean}\n * @default show = false\n */\n show: false,\n\n /**\n * @description Details formatter\n * @type {String|Function}\n * @default formatter = null\n * @example formatter = '{value}%'\n * @example formatter = '{name}%'\n * @example formatter = (dataItem) => (dataItem.value)\n */\n formatter: null,\n\n /**\n * @description Details position offset\n * @type {Array}\n * @default offset = [0, 0]\n * @example offset = [10, 10]\n */\n offset: [0, 0],\n\n /**\n * @description Value fractional precision\n * @type {Number}\n * @default valueToFixed = 0\n */\n valueToFixed: 0,\n\n /**\n * @description Details position\n * @type {String}\n * @default position = 'center'\n * @example position = 'start' | 'center' | 'end'\n */\n position: 'center',\n\n /**\n * @description Details default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fontSize: 20,\n fontWeight: 'bold',\n textAlign: 'center',\n textBaseline: 'middle'\n }\n },\n\n /**\n * @description Gauge background arc configuration\n * @type {Object}\n */\n backgroundArc: {\n /**\n * @description Whether to display background arc\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Background arc default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#e0e0e0'\n }\n },\n\n /**\n * @description Gauge chart render level\n * Priority rendering high level\n * @type {Number}\n * @default rLevel = 10\n */\n rLevel: 10,\n\n /**\n * @description Gauge animation curve\n * @type {String}\n * @default animationCurve = 'easeOutCubic'\n */\n animationCurve: 'easeOutCubic',\n\n /**\n * @description Gauge animation frame\n * @type {Number}\n * @default animationFrame = 50\n */\n animationFrame: 50\n};\nexports.gaugeConfig = gaugeConfig;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.gridConfig = void 0;\nvar gridConfig = {\n /**\n * @description Grid left margin\n * @type {String|Number}\n * @default left = '10%'\n * @example left = '10%' | 10\n */\n left: '10%',\n\n /**\n * @description Grid right margin\n * @type {String|Number}\n * @default right = '10%'\n * @example right = '10%' | 10\n */\n right: '10%',\n\n /**\n * @description Grid top margin\n * @type {String|Number}\n * @default top = 60\n * @example top = '10%' | 60\n */\n top: 60,\n\n /**\n * @description Grid bottom margin\n * @type {String|Number}\n * @default bottom = 60\n * @example bottom = '10%' | 60\n */\n bottom: 60,\n\n /**\n * @description Grid default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fill: 'rgba(0, 0, 0, 0)'\n },\n\n /**\n * @description Grid render level\n * Priority rendering high level\n * @type {Number}\n * @default rLevel = -30\n */\n rLevel: -30,\n\n /**\n * @description Grid animation curve\n * @type {String}\n * @default animationCurve = 'easeOutCubic'\n */\n animationCurve: 'easeOutCubic',\n\n /**\n * @description Grid animation frame\n * @type {Number}\n * @default animationFrame = 50\n */\n animationFrame: 30\n};\nexports.gridConfig = gridConfig;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.changeDefaultConfig = changeDefaultConfig;\nObject.defineProperty(exports, \"colorConfig\", {\n enumerable: true,\n get: function get() {\n return _color.colorConfig;\n }\n});\nObject.defineProperty(exports, \"gridConfig\", {\n enumerable: true,\n get: function get() {\n return _grid.gridConfig;\n }\n});\nObject.defineProperty(exports, \"xAxisConfig\", {\n enumerable: true,\n get: function get() {\n return _axis.xAxisConfig;\n }\n});\nObject.defineProperty(exports, \"yAxisConfig\", {\n enumerable: true,\n get: function get() {\n return _axis.yAxisConfig;\n }\n});\nObject.defineProperty(exports, \"titleConfig\", {\n enumerable: true,\n get: function get() {\n return _title.titleConfig;\n }\n});\nObject.defineProperty(exports, \"lineConfig\", {\n enumerable: true,\n get: function get() {\n return _line.lineConfig;\n }\n});\nObject.defineProperty(exports, \"barConfig\", {\n enumerable: true,\n get: function get() {\n return _bar.barConfig;\n }\n});\nObject.defineProperty(exports, \"pieConfig\", {\n enumerable: true,\n get: function get() {\n return _pie.pieConfig;\n }\n});\nObject.defineProperty(exports, \"radarAxisConfig\", {\n enumerable: true,\n get: function get() {\n return _radarAxis.radarAxisConfig;\n }\n});\nObject.defineProperty(exports, \"radarConfig\", {\n enumerable: true,\n get: function get() {\n return _radar.radarConfig;\n }\n});\nObject.defineProperty(exports, \"gaugeConfig\", {\n enumerable: true,\n get: function get() {\n return _gauge.gaugeConfig;\n }\n});\nObject.defineProperty(exports, \"legendConfig\", {\n enumerable: true,\n get: function get() {\n return _legend.legendConfig;\n }\n});\nexports.keys = void 0;\n\nvar _color = require(\"./color\");\n\nvar _grid = require(\"./grid\");\n\nvar _axis = require(\"./axis\");\n\nvar _title = require(\"./title\");\n\nvar _line = require(\"./line\");\n\nvar _bar = require(\"./bar\");\n\nvar _pie = require(\"./pie\");\n\nvar _radarAxis = require(\"./radarAxis\");\n\nvar _radar = require(\"./radar\");\n\nvar _gauge = require(\"./gauge\");\n\nvar _legend = require(\"./legend\");\n\nvar _util = require(\"../util\");\n\nvar allConfig = {\n colorConfig: _color.colorConfig,\n gridConfig: _grid.gridConfig,\n xAxisConfig: _axis.xAxisConfig,\n yAxisConfig: _axis.yAxisConfig,\n titleConfig: _title.titleConfig,\n lineConfig: _line.lineConfig,\n barConfig: _bar.barConfig,\n pieConfig: _pie.pieConfig,\n radarAxisConfig: _radarAxis.radarAxisConfig,\n radarConfig: _radar.radarConfig,\n gaugeConfig: _gauge.gaugeConfig,\n legendConfig: _legend.legendConfig\n};\n/**\n * @description Change default configuration\n * @param {String} key Configuration key\n * @param {Object|Array} config Your config\n * @return {Undefined} No return\n */\n\nfunction changeDefaultConfig(key, config) {\n if (!allConfig[\"\".concat(key, \"Config\")]) {\n console.warn('Change default config Error - Invalid key!');\n return;\n }\n\n (0, _util.deepMerge)(allConfig[\"\".concat(key, \"Config\")], config);\n}\n\nvar keys = ['color', 'title', 'legend', 'xAxis', 'yAxis', 'grid', 'radarAxis', 'line', 'bar', 'pie', 'radar', 'gauge'];\nexports.keys = keys;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.legendConfig = void 0;\nvar legendConfig = {\n /**\n * @description Whether to display legend\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Legend orient\n * @type {String}\n * @default orient = 'horizontal'\n * @example orient = 'horizontal' | 'vertical'\n */\n orient: 'horizontal',\n\n /**\n * @description Legend left\n * @type {String|Number}\n * @default left = 'auto'\n * @example left = 'auto' | '10%' | 10\n */\n left: 'auto',\n\n /**\n * @description Legend right\n * @type {String|Number}\n * @default right = 'auto'\n * @example right = 'auto' | '10%' | 10\n */\n right: 'auto',\n\n /**\n * @description Legend top\n * @type {String|Number}\n * @default top = 'auto'\n * @example top = 'auto' | '10%' | 10\n */\n top: 'auto',\n\n /**\n * @description Legend bottom\n * @type {String|Number}\n * @default bottom = 'auto'\n * @example bottom = 'auto' | '10%' | 10\n */\n bottom: 'auto',\n\n /**\n * @description Legend item gap\n * @type {Number}\n * @default itemGap = 10\n */\n itemGap: 10,\n\n /**\n * @description Icon width\n * @type {Number}\n * @default iconWidth = 25\n */\n iconWidth: 25,\n\n /**\n * @description Icon height\n * @type {Number}\n * @default iconHeight = 10\n */\n iconHeight: 10,\n\n /**\n * @description Whether legend is optional\n * @type {Boolean}\n * @default selectAble = true\n */\n selectAble: true,\n\n /**\n * @description Legend data\n * @type {Array}\n * @default data = []\n */\n data: [],\n\n /**\n * @description Legend text default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n textStyle: {\n fontFamily: 'Arial',\n fontSize: 13,\n fill: '#000'\n },\n\n /**\n * @description Legend icon default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n iconStyle: {},\n\n /**\n * @description Legend text unselected default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n textUnselectedStyle: {\n fontFamily: 'Arial',\n fontSize: 13,\n fill: '#999'\n },\n\n /**\n * @description Legend icon unselected default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n iconUnselectedStyle: {\n fill: '#999'\n },\n\n /**\n * @description Legend render level\n * Priority rendering high level\n * @type {Number}\n * @default rLevel = 20\n */\n rLevel: 20,\n\n /**\n * @description Legend animation curve\n * @type {String}\n * @default animationCurve = 'easeOutCubic'\n */\n animationCurve: 'easeOutCubic',\n\n /**\n * @description Legend animation frame\n * @type {Number}\n * @default animationFrame = 50\n */\n animationFrame: 50\n};\nexports.legendConfig = legendConfig;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.lineConfig = void 0;\nvar lineConfig = {\n /**\n * @description Whether to display this line chart\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Legend name\n * @type {String}\n * @default name = ''\n */\n name: '',\n\n /**\n * @description Data stacking\n * The data value of the series element of the same stack\n * will be superimposed (the latter value will be superimposed on the previous value)\n * @type {String}\n * @default stack = ''\n */\n stack: '',\n\n /**\n * @description Smooth line\n * @type {Boolean}\n * @default smooth = false\n */\n smooth: false,\n\n /**\n * @description Line x axis index\n * @type {Number}\n * @default xAxisIndex = 0\n * @example xAxisIndex = 0 | 1\n */\n xAxisIndex: 0,\n\n /**\n * @description Line y axis index\n * @type {Number}\n * @default yAxisIndex = 0\n * @example yAxisIndex = 0 | 1\n */\n yAxisIndex: 0,\n\n /**\n * @description Line chart data\n * @type {Array}\n * @default data = []\n * @example data = [100, 200, 300]\n */\n data: [],\n\n /**\n * @description Line default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n lineStyle: {\n lineWidth: 1\n },\n\n /**\n * @description Line point configuration\n * @type {Object}\n */\n linePoint: {\n /**\n * @description Whether to display line point\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Line point radius\n * @type {Number}\n * @default radius = 2\n */\n radius: 2,\n\n /**\n * @description Line point default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fill: '#fff',\n lineWidth: 1\n }\n },\n\n /**\n * @description Line area configuration\n * @type {Object}\n */\n lineArea: {\n /**\n * @description Whether to display line area\n * @type {Boolean}\n * @default show = false\n */\n show: false,\n\n /**\n * @description Line area gradient color (Hex|rgb|rgba)\n * @type {Array}\n * @default gradient = []\n */\n gradient: [],\n\n /**\n * @description Line area style default configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n opacity: 0.5\n }\n },\n\n /**\n * @description Line label configuration\n * @type {Object}\n */\n label: {\n /**\n * @description Whether to display line label\n * @type {Boolean}\n * @default show = false\n */\n show: false,\n\n /**\n * @description Line label position\n * @type {String}\n * @default position = 'top'\n * @example position = 'top' | 'center' | 'bottom'\n */\n position: 'top',\n\n /**\n * @description Line label offset\n * @type {Array}\n * @default offset = [0, -10]\n */\n offset: [0, -10],\n\n /**\n * @description Line label formatter\n * @type {String|Function}\n * @default formatter = null\n * @example formatter = '{value}件'\n * @example formatter = (dataItem) => (dataItem.value)\n */\n formatter: null,\n\n /**\n * @description Line label default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fontSize: 10\n }\n },\n\n /**\n * @description Line chart render level\n * Priority rendering high level\n * @type {Number}\n * @default rLevel = 10\n */\n rLevel: 10,\n\n /**\n * @description Line animation curve\n * @type {String}\n * @default animationCurve = 'easeOutCubic'\n */\n animationCurve: 'easeOutCubic',\n\n /**\n * @description Line animation frame\n * @type {Number}\n * @default animationFrame = 50\n */\n animationFrame: 50\n};\nexports.lineConfig = lineConfig;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pieConfig = void 0;\nvar pieConfig = {\n /**\n * @description Whether to display this pie chart\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Legend name\n * @type {String}\n * @default name = ''\n */\n name: '',\n\n /**\n * @description Radius of pie\n * @type {String|Number}\n * @default radius = '50%'\n * @example radius = '50%' | 100\n */\n radius: '50%',\n\n /**\n * @description Center point of pie\n * @type {Array}\n * @default center = ['50%','50%']\n * @example center = ['50%','50%'] | [100, 100]\n */\n center: ['50%', '50%'],\n\n /**\n * @description Pie chart start angle\n * @type {Number}\n * @default startAngle = -Math.PI / 2\n * @example startAngle = -Math.PI\n */\n startAngle: -Math.PI / 2,\n\n /**\n * @description Whether to enable rose type\n * @type {Boolean}\n * @default roseType = false\n */\n roseType: false,\n\n /**\n * @description Automatic sorting in rose type\n * @type {Boolean}\n * @default roseSort = true\n */\n roseSort: true,\n\n /**\n * @description Rose radius increasing\n * @type {String|Number}\n * @default roseIncrement = 'auto'\n * @example roseIncrement = 'auto' | '10%' | 10\n */\n roseIncrement: 'auto',\n\n /**\n * @description Pie chart data\n * @type {Array}\n * @default data = []\n */\n data: [],\n\n /**\n * @description Pie inside label configuration\n * @type {Object}\n */\n insideLabel: {\n /**\n * @description Whether to display inside label\n * @type {Boolean}\n * @default show = false\n */\n show: false,\n\n /**\n * @description Label formatter\n * @type {String|Function}\n * @default formatter = '{percent}%'\n * @example formatter = '${name}-{value}-{percent}%'\n * @example formatter = (dataItem) => (dataItem.name)\n */\n formatter: '{percent}%',\n\n /**\n * @description Label default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fontSize: 10,\n fill: '#fff',\n textAlign: 'center',\n textBaseline: 'middle'\n }\n },\n\n /**\n * @description Pie Outside label configuration\n * @type {Object}\n */\n outsideLabel: {\n /**\n * @description Whether to display outside label\n * @type {Boolean}\n * @default show = false\n */\n show: true,\n\n /**\n * @description Label formatter\n * @type {String|Function}\n * @default formatter = '{name}'\n * @example formatter = '${name}-{value}-{percent}%'\n * @example formatter = (dataItem) => (dataItem.name)\n */\n formatter: '{name}',\n\n /**\n * @description Label default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fontSize: 11\n },\n\n /**\n * @description Gap beteen label line bended place and pie\n * @type {String|Number}\n * @default labelLineBendGap = '20%'\n * @example labelLineBendGap = '20%' | 20\n */\n labelLineBendGap: '20%',\n\n /**\n * @description Label line end length\n * @type {Number}\n * @default labelLineEndLength = 50\n */\n labelLineEndLength: 50,\n\n /**\n * @description Label line default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n labelLineStyle: {\n lineWidth: 1\n }\n },\n\n /**\n * @description Pie default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n pieStyle: {},\n\n /**\n * @description Percentage fractional precision\n * @type {Number}\n * @default percentToFixed = 0\n */\n percentToFixed: 0,\n\n /**\n * @description Pie chart render level\n * Priority rendering high level\n * @type {Number}\n * @default rLevel = 10\n */\n rLevel: 10,\n\n /**\n * @description Animation delay gap\n * @type {Number}\n * @default animationDelayGap = 60\n */\n animationDelayGap: 60,\n\n /**\n * @description Pie animation curve\n * @type {String}\n * @default animationCurve = 'easeOutCubic'\n */\n animationCurve: 'easeOutCubic',\n\n /**\n * @description Pie start animation curve\n * @type {String}\n * @default startAnimationCurve = 'easeOutBack'\n */\n startAnimationCurve: 'easeOutBack',\n\n /**\n * @description Pie animation frame\n * @type {Number}\n * @default animationFrame = 50\n */\n animationFrame: 50\n};\nexports.pieConfig = pieConfig;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.radarConfig = void 0;\nvar radarConfig = {\n /**\n * @description Whether to display this radar\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Legend name\n * @type {String}\n * @default name = ''\n */\n name: '',\n\n /**\n * @description Radar chart data\n * @type {Array}\n * @default data = []\n * @example data = [100, 200, 300]\n */\n data: [],\n\n /**\n * @description Radar default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n radarStyle: {\n lineWidth: 1\n },\n\n /**\n * @description Radar point configuration\n * @type {Object}\n */\n point: {\n /**\n * @description Whether to display radar point\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Point radius\n * @type {Number}\n * @default radius = 2\n */\n radius: 2,\n\n /**\n * @description Radar point default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fill: '#fff'\n }\n },\n\n /**\n * @description Radar label configuration\n * @type {Object}\n */\n label: {\n /**\n * @description Whether to display radar label\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Label position offset\n * @type {Array}\n * @default offset = [0, 0]\n */\n offset: [0, 0],\n\n /**\n * @description Label gap between label and radar\n * @type {Number}\n * @default labelGap = 5\n */\n labelGap: 5,\n\n /**\n * @description Label formatter\n * @type {String|Function}\n * @default formatter = null\n * @example formatter = 'Score-{value}'\n * @example formatter = (label) => (label)\n */\n formatter: null,\n\n /**\n * @description Radar label default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fontSize: 10\n }\n },\n\n /**\n * @description Radar chart render level\n * Priority rendering high level\n * @type {Number}\n * @default rLevel = 10\n */\n rLevel: 10,\n\n /**\n * @description Radar animation curve\n * @type {String}\n * @default animationCurve = 'easeOutCubic'\n */\n animationCurve: 'easeOutCubic',\n\n /**\n * @description Radar animation frame\n * @type {Number}\n * @default animationFrame = 50\n */\n animationFrane: 50\n};\nexports.radarConfig = radarConfig;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.radarAxisConfig = void 0;\nvar radarAxisConfig = {\n /**\n * @description Whether to display this radar axis\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Center point of radar axis\n * @type {Array}\n * @default center = ['50%','50%']\n * @example center = ['50%','50%'] | [100, 100]\n */\n center: ['50%', '50%'],\n\n /**\n * @description Radius of radar axis\n * @type {String|Number}\n * @default radius = '65%'\n * @example radius = '65%' | 100\n */\n radius: '65%',\n\n /**\n * @description Radar axis start angle\n * @type {Number}\n * @default startAngle = -Math.PI / 2\n * @example startAngle = -Math.PI\n */\n startAngle: -Math.PI / 2,\n\n /**\n * @description Radar axis split number\n * @type {Number}\n * @default splitNum = 5\n */\n splitNum: 5,\n\n /**\n * @description Whether to enable polygon radar axis\n * @type {Boolean}\n * @default polygon = false\n */\n polygon: false,\n\n /**\n * @description Axis label configuration\n * @type {Object}\n */\n axisLabel: {\n /**\n * @description Whether to display axis label\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Label gap between label and radar axis\n * @type {Number}\n * @default labelGap = 15\n */\n labelGap: 15,\n\n /**\n * @description Label color (Hex|rgb|rgba), will cover style.fill\n * @type {Array}\n * @default color = []\n */\n color: [],\n\n /**\n * @description Axis label default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fill: '#333'\n }\n },\n\n /**\n * @description Axis line configuration\n * @type {Object}\n */\n axisLine: {\n /**\n * @description Whether to display axis line\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Line color (Hex|rgb|rgba), will cover style.stroke\n * @type {Array}\n * @default color = []\n */\n color: [],\n\n /**\n * @description Axis label default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#999',\n lineWidth: 1\n }\n },\n\n /**\n * @description Split line configuration\n * @type {Object}\n */\n splitLine: {\n /**\n * @description Whether to display split line\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Line color (Hex|rgb|rgba), will cover style.stroke\n * @type {Array}\n * @default color = []\n */\n color: [],\n\n /**\n * @description Split line default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#d4d4d4',\n lineWidth: 1\n }\n },\n\n /**\n * @description Split area configuration\n * @type {Object}\n */\n splitArea: {\n /**\n * @description Whether to display split area\n * @type {Boolean}\n * @default show = false\n */\n show: false,\n\n /**\n * @description Area color (Hex|rgb|rgba), will cover style.stroke\n * @type {Array}\n * @default color = []\n */\n color: ['#f5f5f5', '#e6e6e6'],\n\n /**\n * @description Split area default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {}\n },\n\n /**\n * @description Bar chart render level\n * Priority rendering high level\n * @type {Number}\n * @default rLevel = -10\n */\n rLevel: -10,\n\n /**\n * @description Radar axis animation curve\n * @type {String}\n * @default animationCurve = 'easeOutCubic'\n */\n animationCurve: 'easeOutCubic',\n\n /**\n * @description Radar axis animation frame\n * @type {Number}\n * @default animationFrame = 50\n */\n animationFrane: 50\n};\nexports.radarAxisConfig = radarAxisConfig;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.titleConfig = void 0;\nvar titleConfig = {\n /**\n * @description Whether to display title\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Title text\n * @type {String}\n * @default text = ''\n */\n text: '',\n\n /**\n * @description Title offset\n * @type {Array}\n * @default offset = [0, -20]\n */\n offset: [0, -20],\n\n /**\n * @description Title default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fill: '#333',\n fontSize: 17,\n fontWeight: 'bold',\n textAlign: 'center',\n textBaseline: 'bottom'\n },\n\n /**\n * @description Title render level\n * Priority rendering high level\n * @type {Number}\n * @default rLevel = 20\n */\n rLevel: 20,\n\n /**\n * @description Title animation curve\n * @type {String}\n * @default animationCurve = 'easeOutCubic'\n */\n animationCurve: 'easeOutCubic',\n\n /**\n * @description Title animation frame\n * @type {Number}\n * @default animationFrame = 50\n */\n animationFrame: 50\n};\nexports.titleConfig = titleConfig;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.axis = axis;\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _updater = require(\"../class/updater.class\");\n\nvar _config = require(\"../config\");\n\nvar _util = require(\"../util\");\n\nvar _util2 = require(\"@jiaminghi/c-render/lib/plugin/util\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar axisConfig = {\n xAxisConfig: _config.xAxisConfig,\n yAxisConfig: _config.yAxisConfig\n};\nvar min = Math.min,\n max = Math.max,\n abs = Math.abs,\n pow = Math.pow;\n\nfunction axis(chart) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var xAxis = option.xAxis,\n yAxis = option.yAxis,\n series = option.series;\n var allAxis = [];\n\n if (xAxis && yAxis && series) {\n allAxis = getAllAxis(xAxis, yAxis);\n allAxis = mergeDefaultAxisConfig(allAxis);\n allAxis = allAxis.filter(function (_ref) {\n var show = _ref.show;\n return show;\n });\n allAxis = mergeDefaultBoundaryGap(allAxis);\n allAxis = calcAxisLabelData(allAxis, series);\n allAxis = setAxisPosition(allAxis);\n allAxis = calcAxisLinePosition(allAxis, chart);\n allAxis = calcAxisTickPosition(allAxis, chart);\n allAxis = calcAxisNamePosition(allAxis, chart);\n allAxis = calcSplitLinePosition(allAxis, chart);\n }\n\n (0, _updater.doUpdate)({\n chart: chart,\n series: allAxis,\n key: 'axisLine',\n getGraphConfig: getLineConfig\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: allAxis,\n key: 'axisTick',\n getGraphConfig: getTickConfig\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: allAxis,\n key: 'axisLabel',\n getGraphConfig: getLabelConfig\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: allAxis,\n key: 'axisName',\n getGraphConfig: getNameConfig\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: allAxis,\n key: 'splitLine',\n getGraphConfig: getSplitLineConfig\n });\n chart.axisData = allAxis;\n}\n\nfunction getAllAxis(xAxis, yAxis) {\n var allXAxis = [],\n allYAxis = [];\n\n if (xAxis instanceof Array) {\n var _allXAxis;\n\n (_allXAxis = allXAxis).push.apply(_allXAxis, (0, _toConsumableArray2[\"default\"])(xAxis));\n } else {\n allXAxis.push(xAxis);\n }\n\n if (yAxis instanceof Array) {\n var _allYAxis;\n\n (_allYAxis = allYAxis).push.apply(_allYAxis, (0, _toConsumableArray2[\"default\"])(yAxis));\n } else {\n allYAxis.push(yAxis);\n }\n\n allXAxis.splice(2);\n allYAxis.splice(2);\n allXAxis = allXAxis.map(function (axis, i) {\n return _objectSpread(_objectSpread({}, axis), {}, {\n index: i,\n axis: 'x'\n });\n });\n allYAxis = allYAxis.map(function (axis, i) {\n return _objectSpread(_objectSpread({}, axis), {}, {\n index: i,\n axis: 'y'\n });\n });\n return [].concat((0, _toConsumableArray2[\"default\"])(allXAxis), (0, _toConsumableArray2[\"default\"])(allYAxis));\n}\n\nfunction mergeDefaultAxisConfig(allAxis) {\n var xAxis = allAxis.filter(function (_ref2) {\n var axis = _ref2.axis;\n return axis === 'x';\n });\n var yAxis = allAxis.filter(function (_ref3) {\n var axis = _ref3.axis;\n return axis === 'y';\n });\n xAxis = xAxis.map(function (axis) {\n return (0, _util.deepMerge)((0, _util2.deepClone)(_config.xAxisConfig), axis);\n });\n yAxis = yAxis.map(function (axis) {\n return (0, _util.deepMerge)((0, _util2.deepClone)(_config.yAxisConfig), axis);\n });\n return [].concat((0, _toConsumableArray2[\"default\"])(xAxis), (0, _toConsumableArray2[\"default\"])(yAxis));\n}\n\nfunction mergeDefaultBoundaryGap(allAxis) {\n var valueAxis = allAxis.filter(function (_ref4) {\n var data = _ref4.data;\n return data === 'value';\n });\n var labelAxis = allAxis.filter(function (_ref5) {\n var data = _ref5.data;\n return data !== 'value';\n });\n valueAxis.forEach(function (axis) {\n if (typeof axis.boundaryGap === 'boolean') return;\n axis.boundaryGap = false;\n });\n labelAxis.forEach(function (axis) {\n if (typeof axis.boundaryGap === 'boolean') return;\n axis.boundaryGap = true;\n });\n return [].concat((0, _toConsumableArray2[\"default\"])(valueAxis), (0, _toConsumableArray2[\"default\"])(labelAxis));\n}\n\nfunction calcAxisLabelData(allAxis, series) {\n var valueAxis = allAxis.filter(function (_ref6) {\n var data = _ref6.data;\n return data === 'value';\n });\n var labelAxis = allAxis.filter(function (_ref7) {\n var data = _ref7.data;\n return data instanceof Array;\n });\n valueAxis = calcValueAxisLabelData(valueAxis, series);\n labelAxis = calcLabelAxisLabelData(labelAxis);\n return [].concat((0, _toConsumableArray2[\"default\"])(valueAxis), (0, _toConsumableArray2[\"default\"])(labelAxis));\n}\n\nfunction calcValueAxisLabelData(valueAxis, series) {\n return valueAxis.map(function (axis) {\n var minMaxValue = getValueAxisMaxMinValue(axis, series);\n\n var _getTrueMinMax = getTrueMinMax(axis, minMaxValue),\n _getTrueMinMax2 = (0, _slicedToArray2[\"default\"])(_getTrueMinMax, 2),\n min = _getTrueMinMax2[0],\n max = _getTrueMinMax2[1];\n\n var interval = getValueInterval(min, max, axis);\n var formatter = axis.axisLabel.formatter;\n var label = [];\n\n if (min < 0 && max > 0) {\n label = getValueAxisLabelFromZero(min, max, interval);\n } else {\n label = getValueAxisLabelFromMin(min, max, interval);\n }\n\n label = label.map(function (l) {\n return parseFloat(l.toFixed(2));\n });\n return _objectSpread(_objectSpread({}, axis), {}, {\n maxValue: label.slice(-1)[0],\n minValue: label[0],\n label: getAfterFormatterLabel(label, formatter)\n });\n });\n}\n\nfunction getValueAxisMaxMinValue(axis, series) {\n series = series.filter(function (_ref8) {\n var show = _ref8.show,\n type = _ref8.type;\n if (show === false) return false;\n if (type === 'pie') return false;\n return true;\n });\n if (series.length === 0) return [0, 0];\n var index = axis.index,\n axisType = axis.axis;\n series = mergeStackData(series);\n var axisName = axisType + 'Axis';\n var valueSeries = series.filter(function (s) {\n return s[axisName] === index;\n });\n if (!valueSeries.length) valueSeries = series;\n return getSeriesMinMaxValue(valueSeries);\n}\n\nfunction getSeriesMinMaxValue(series) {\n if (!series) return;\n var minValue = Math.min.apply(Math, (0, _toConsumableArray2[\"default\"])(series.map(function (_ref9) {\n var data = _ref9.data;\n return Math.min.apply(Math, (0, _toConsumableArray2[\"default\"])((0, _util.filterNonNumber)(data)));\n })));\n var maxValue = Math.max.apply(Math, (0, _toConsumableArray2[\"default\"])(series.map(function (_ref10) {\n var data = _ref10.data;\n return Math.max.apply(Math, (0, _toConsumableArray2[\"default\"])((0, _util.filterNonNumber)(data)));\n })));\n return [minValue, maxValue];\n}\n\nfunction mergeStackData(series) {\n var seriesCloned = (0, _util2.deepClone)(series, true);\n series.forEach(function (item, i) {\n var data = (0, _util.mergeSameStackData)(item, series);\n seriesCloned[i].data = data;\n });\n return seriesCloned;\n}\n\nfunction getTrueMinMax(_ref11, _ref12) {\n var min = _ref11.min,\n max = _ref11.max,\n axis = _ref11.axis;\n\n var _ref13 = (0, _slicedToArray2[\"default\"])(_ref12, 2),\n minValue = _ref13[0],\n maxValue = _ref13[1];\n\n var minType = (0, _typeof2[\"default\"])(min),\n maxType = (0, _typeof2[\"default\"])(max);\n\n if (!testMinMaxType(min)) {\n min = axisConfig[axis + 'AxisConfig'].min;\n minType = 'string';\n }\n\n if (!testMinMaxType(max)) {\n max = axisConfig[axis + 'AxisConfig'].max;\n maxType = 'string';\n }\n\n if (minType === 'string') {\n min = parseInt(minValue - abs(minValue * parseFloat(min) / 100));\n var lever = getValueLever(min);\n min = parseFloat((min / lever - 0.1).toFixed(1)) * lever;\n }\n\n if (maxType === 'string') {\n max = parseInt(maxValue + abs(maxValue * parseFloat(max) / 100));\n\n var _lever = getValueLever(max);\n\n max = parseFloat((max / _lever + 0.1).toFixed(1)) * _lever;\n }\n\n return [min, max];\n}\n\nfunction getValueLever(value) {\n var valueString = abs(value).toString();\n var valueLength = valueString.length;\n var firstZeroIndex = valueString.replace(/0*$/g, '').indexOf('0');\n var pow10Num = valueLength - 1;\n if (firstZeroIndex !== -1) pow10Num -= firstZeroIndex;\n return pow(10, pow10Num);\n}\n\nfunction testMinMaxType(val) {\n var valType = (0, _typeof2[\"default\"])(val);\n var isValidString = valType === 'string' && /^\\d+%$/.test(val);\n var isValidNumber = valType === 'number';\n return isValidString || isValidNumber;\n}\n\nfunction getValueAxisLabelFromZero(min, max, interval) {\n var negative = [],\n positive = [];\n var currentNegative = 0,\n currentPositive = 0;\n\n do {\n negative.push(currentNegative -= interval);\n } while (currentNegative > min);\n\n do {\n positive.push(currentPositive += interval);\n } while (currentPositive < max);\n\n return [].concat((0, _toConsumableArray2[\"default\"])(negative.reverse()), [0], (0, _toConsumableArray2[\"default\"])(positive));\n}\n\nfunction getValueAxisLabelFromMin(min, max, interval) {\n var label = [min],\n currentValue = min;\n\n do {\n label.push(currentValue += interval);\n } while (currentValue < max);\n\n return label;\n}\n\nfunction getAfterFormatterLabel(label, formatter) {\n if (!formatter) return label;\n if (typeof formatter === 'string') label = label.map(function (l) {\n return formatter.replace('{value}', l);\n });\n if (typeof formatter === 'function') label = label.map(function (value, index) {\n return formatter({\n value: value,\n index: index\n });\n });\n return label;\n}\n\nfunction calcLabelAxisLabelData(labelAxis) {\n return labelAxis.map(function (axis) {\n var data = axis.data,\n formatter = axis.axisLabel.formatter;\n return _objectSpread(_objectSpread({}, axis), {}, {\n label: getAfterFormatterLabel(data, formatter)\n });\n });\n}\n\nfunction getValueInterval(min, max, axis) {\n var interval = axis.interval,\n minInterval = axis.minInterval,\n maxInterval = axis.maxInterval,\n splitNumber = axis.splitNumber,\n axisType = axis.axis;\n var config = axisConfig[axisType + 'AxisConfig'];\n if (typeof interval !== 'number') interval = config.interval;\n if (typeof minInterval !== 'number') minInterval = config.minInterval;\n if (typeof maxInterval !== 'number') maxInterval = config.maxInterval;\n if (typeof splitNumber !== 'number') splitNumber = config.splitNumber;\n if (typeof interval === 'number') return interval;\n var valueInterval = parseInt((max - min) / (splitNumber - 1));\n if (valueInterval.toString().length > 1) valueInterval = parseInt(valueInterval.toString().replace(/\\d$/, '0'));\n if (valueInterval === 0) valueInterval = 1;\n if (typeof minInterval === 'number' && valueInterval < minInterval) return minInterval;\n if (typeof maxInterval === 'number' && valueInterval > maxInterval) return maxInterval;\n return valueInterval;\n}\n\nfunction setAxisPosition(allAxis) {\n var xAxis = allAxis.filter(function (_ref14) {\n var axis = _ref14.axis;\n return axis === 'x';\n });\n var yAxis = allAxis.filter(function (_ref15) {\n var axis = _ref15.axis;\n return axis === 'y';\n });\n if (xAxis[0] && !xAxis[0].position) xAxis[0].position = _config.xAxisConfig.position;\n\n if (xAxis[1] && !xAxis[1].position) {\n xAxis[1].position = xAxis[0].position === 'bottom' ? 'top' : 'bottom';\n }\n\n if (yAxis[0] && !yAxis[0].position) yAxis[0].position = _config.yAxisConfig.position;\n\n if (yAxis[1] && !yAxis[1].position) {\n yAxis[1].position = yAxis[0].position === 'left' ? 'right' : 'left';\n }\n\n return [].concat((0, _toConsumableArray2[\"default\"])(xAxis), (0, _toConsumableArray2[\"default\"])(yAxis));\n}\n\nfunction calcAxisLinePosition(allAxis, chart) {\n var _chart$gridArea = chart.gridArea,\n x = _chart$gridArea.x,\n y = _chart$gridArea.y,\n w = _chart$gridArea.w,\n h = _chart$gridArea.h;\n allAxis = allAxis.map(function (axis) {\n var position = axis.position;\n var linePosition = [];\n\n if (position === 'left') {\n linePosition = [[x, y], [x, y + h]].reverse();\n } else if (position === 'right') {\n linePosition = [[x + w, y], [x + w, y + h]].reverse();\n } else if (position === 'top') {\n linePosition = [[x, y], [x + w, y]];\n } else if (position === 'bottom') {\n linePosition = [[x, y + h], [x + w, y + h]];\n }\n\n return _objectSpread(_objectSpread({}, axis), {}, {\n linePosition: linePosition\n });\n });\n return allAxis;\n}\n\nfunction calcAxisTickPosition(allAxis, chart) {\n return allAxis.map(function (axisItem) {\n var axis = axisItem.axis,\n linePosition = axisItem.linePosition,\n position = axisItem.position,\n label = axisItem.label,\n boundaryGap = axisItem.boundaryGap;\n if (typeof boundaryGap !== 'boolean') boundaryGap = axisConfig[axis + 'AxisConfig'].boundaryGap;\n var labelNum = label.length;\n\n var _linePosition = (0, _slicedToArray2[\"default\"])(linePosition, 2),\n _linePosition$ = (0, _slicedToArray2[\"default\"])(_linePosition[0], 2),\n startX = _linePosition$[0],\n startY = _linePosition$[1],\n _linePosition$2 = (0, _slicedToArray2[\"default\"])(_linePosition[1], 2),\n endX = _linePosition$2[0],\n endY = _linePosition$2[1];\n\n var gapLength = axis === 'x' ? endX - startX : endY - startY;\n var gap = gapLength / (boundaryGap ? labelNum : labelNum - 1);\n var tickPosition = new Array(labelNum).fill(0).map(function (foo, i) {\n if (axis === 'x') {\n return [startX + gap * (boundaryGap ? i + 0.5 : i), startY];\n }\n\n return [startX, startY + gap * (boundaryGap ? i + 0.5 : i)];\n });\n var tickLinePosition = getTickLinePosition(axis, boundaryGap, position, tickPosition, gap);\n return _objectSpread(_objectSpread({}, axisItem), {}, {\n tickPosition: tickPosition,\n tickLinePosition: tickLinePosition,\n tickGap: gap\n });\n });\n}\n\nfunction getTickLinePosition(axisType, boundaryGap, position, tickPosition, gap) {\n var index = axisType === 'x' ? 1 : 0;\n var plus = 5;\n if (axisType === 'x' && position === 'top') plus = -5;\n if (axisType === 'y' && position === 'left') plus = -5;\n var tickLinePosition = tickPosition.map(function (lineStart) {\n var lineEnd = (0, _util2.deepClone)(lineStart);\n lineEnd[index] += plus;\n return [(0, _util2.deepClone)(lineStart), lineEnd];\n });\n if (!boundaryGap) return tickLinePosition;\n index = axisType === 'x' ? 0 : 1;\n plus = gap / 2;\n tickLinePosition.forEach(function (_ref16) {\n var _ref17 = (0, _slicedToArray2[\"default\"])(_ref16, 2),\n lineStart = _ref17[0],\n lineEnd = _ref17[1];\n\n lineStart[index] += plus;\n lineEnd[index] += plus;\n });\n return tickLinePosition;\n}\n\nfunction calcAxisNamePosition(allAxis, chart) {\n return allAxis.map(function (axisItem) {\n var nameGap = axisItem.nameGap,\n nameLocation = axisItem.nameLocation,\n position = axisItem.position,\n linePosition = axisItem.linePosition;\n\n var _linePosition2 = (0, _slicedToArray2[\"default\"])(linePosition, 2),\n lineStart = _linePosition2[0],\n lineEnd = _linePosition2[1];\n\n var namePosition = (0, _toConsumableArray2[\"default\"])(lineStart);\n if (nameLocation === 'end') namePosition = (0, _toConsumableArray2[\"default\"])(lineEnd);\n\n if (nameLocation === 'center') {\n namePosition[0] = (lineStart[0] + lineEnd[0]) / 2;\n namePosition[1] = (lineStart[1] + lineEnd[1]) / 2;\n }\n\n var index = 0;\n if (position === 'top' && nameLocation === 'center') index = 1;\n if (position === 'bottom' && nameLocation === 'center') index = 1;\n if (position === 'left' && nameLocation !== 'center') index = 1;\n if (position === 'right' && nameLocation !== 'center') index = 1;\n var plus = nameGap;\n if (position === 'top' && nameLocation !== 'end') plus *= -1;\n if (position === 'left' && nameLocation !== 'start') plus *= -1;\n if (position === 'bottom' && nameLocation === 'start') plus *= -1;\n if (position === 'right' && nameLocation === 'end') plus *= -1;\n namePosition[index] += plus;\n return _objectSpread(_objectSpread({}, axisItem), {}, {\n namePosition: namePosition\n });\n });\n}\n\nfunction calcSplitLinePosition(allAxis, chart) {\n var _chart$gridArea2 = chart.gridArea,\n w = _chart$gridArea2.w,\n h = _chart$gridArea2.h;\n return allAxis.map(function (axisItem) {\n var tickLinePosition = axisItem.tickLinePosition,\n position = axisItem.position,\n boundaryGap = axisItem.boundaryGap;\n var index = 0,\n plus = w;\n if (position === 'top' || position === 'bottom') index = 1;\n if (position === 'top' || position === 'bottom') plus = h;\n if (position === 'right' || position === 'bottom') plus *= -1;\n var splitLinePosition = tickLinePosition.map(function (_ref18) {\n var _ref19 = (0, _slicedToArray2[\"default\"])(_ref18, 1),\n startPoint = _ref19[0];\n\n var endPoint = (0, _toConsumableArray2[\"default\"])(startPoint);\n endPoint[index] += plus;\n return [(0, _toConsumableArray2[\"default\"])(startPoint), endPoint];\n });\n if (!boundaryGap) splitLinePosition.shift();\n return _objectSpread(_objectSpread({}, axisItem), {}, {\n splitLinePosition: splitLinePosition\n });\n });\n}\n\nfunction getLineConfig(axisItem) {\n var animationCurve = axisItem.animationCurve,\n animationFrame = axisItem.animationFrame,\n rLevel = axisItem.rLevel;\n return [{\n name: 'polyline',\n index: rLevel,\n visible: axisItem.axisLine.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getLineShape(axisItem),\n style: getLineStyle(axisItem)\n }];\n}\n\nfunction getLineShape(axisItem) {\n var linePosition = axisItem.linePosition;\n return {\n points: linePosition\n };\n}\n\nfunction getLineStyle(axisItem) {\n return axisItem.axisLine.style;\n}\n\nfunction getTickConfig(axisItem) {\n var animationCurve = axisItem.animationCurve,\n animationFrame = axisItem.animationFrame,\n rLevel = axisItem.rLevel;\n var shapes = getTickShapes(axisItem);\n var style = getTickStyle(axisItem);\n return shapes.map(function (shape) {\n return {\n name: 'polyline',\n index: rLevel,\n visible: axisItem.axisTick.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: shape,\n style: style\n };\n });\n}\n\nfunction getTickShapes(axisItem) {\n var tickLinePosition = axisItem.tickLinePosition;\n return tickLinePosition.map(function (points) {\n return {\n points: points\n };\n });\n}\n\nfunction getTickStyle(axisItem) {\n return axisItem.axisTick.style;\n}\n\nfunction getLabelConfig(axisItem) {\n var animationCurve = axisItem.animationCurve,\n animationFrame = axisItem.animationFrame,\n rLevel = axisItem.rLevel;\n var shapes = getLabelShapes(axisItem);\n var styles = getLabelStyle(axisItem, shapes);\n return shapes.map(function (shape, i) {\n return {\n name: 'text',\n index: rLevel,\n visible: axisItem.axisLabel.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: shape,\n style: styles[i],\n setGraphCenter: function setGraphCenter() {\n return void 0;\n }\n };\n });\n}\n\nfunction getLabelShapes(axisItem) {\n var label = axisItem.label,\n tickPosition = axisItem.tickPosition,\n position = axisItem.position;\n return tickPosition.map(function (point, i) {\n return {\n position: getLabelRealPosition(point, position),\n content: label[i].toString()\n };\n });\n}\n\nfunction getLabelRealPosition(points, position) {\n var index = 0,\n plus = 10;\n if (position === 'top' || position === 'bottom') index = 1;\n if (position === 'top' || position === 'left') plus = -10;\n points = (0, _util2.deepClone)(points);\n points[index] += plus;\n return points;\n}\n\nfunction getLabelStyle(axisItem, shapes) {\n var position = axisItem.position;\n var style = axisItem.axisLabel.style;\n var align = getAxisLabelRealAlign(position);\n style = (0, _util.deepMerge)(align, style);\n var styles = shapes.map(function (_ref20) {\n var position = _ref20.position;\n return _objectSpread(_objectSpread({}, style), {}, {\n graphCenter: position\n });\n });\n return styles;\n}\n\nfunction getAxisLabelRealAlign(position) {\n if (position === 'left') return {\n textAlign: 'right',\n textBaseline: 'middle'\n };\n if (position === 'right') return {\n textAlign: 'left',\n textBaseline: 'middle'\n };\n if (position === 'top') return {\n textAlign: 'center',\n textBaseline: 'bottom'\n };\n if (position === 'bottom') return {\n textAlign: 'center',\n textBaseline: 'top'\n };\n}\n\nfunction getNameConfig(axisItem) {\n var animationCurve = axisItem.animationCurve,\n animationFrame = axisItem.animationFrame,\n rLevel = axisItem.rLevel;\n return [{\n name: 'text',\n index: rLevel,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getNameShape(axisItem),\n style: getNameStyle(axisItem)\n }];\n}\n\nfunction getNameShape(axisItem) {\n var name = axisItem.name,\n namePosition = axisItem.namePosition;\n return {\n content: name,\n position: namePosition\n };\n}\n\nfunction getNameStyle(axisItem) {\n var nameLocation = axisItem.nameLocation,\n position = axisItem.position,\n style = axisItem.nameTextStyle;\n var align = getNameRealAlign(position, nameLocation);\n return (0, _util.deepMerge)(align, style);\n}\n\nfunction getNameRealAlign(position, location) {\n if (position === 'top' && location === 'start' || position === 'bottom' && location === 'start' || position === 'left' && location === 'center') return {\n textAlign: 'right',\n textBaseline: 'middle'\n };\n if (position === 'top' && location === 'end' || position === 'bottom' && location === 'end' || position === 'right' && location === 'center') return {\n textAlign: 'left',\n textBaseline: 'middle'\n };\n if (position === 'top' && location === 'center' || position === 'left' && location === 'end' || position === 'right' && location === 'end') return {\n textAlign: 'center',\n textBaseline: 'bottom'\n };\n if (position === 'bottom' && location === 'center' || position === 'left' && location === 'start' || position === 'right' && location === 'start') return {\n textAlign: 'center',\n textBaseline: 'top'\n };\n}\n\nfunction getSplitLineConfig(axisItem) {\n var animationCurve = axisItem.animationCurve,\n animationFrame = axisItem.animationFrame,\n rLevel = axisItem.rLevel;\n var shapes = getSplitLineShapes(axisItem);\n var style = getSplitLineStyle(axisItem);\n return shapes.map(function (shape) {\n return {\n name: 'polyline',\n index: rLevel,\n visible: axisItem.splitLine.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: shape,\n style: style\n };\n });\n}\n\nfunction getSplitLineShapes(axisItem) {\n var splitLinePosition = axisItem.splitLinePosition;\n return splitLinePosition.map(function (points) {\n return {\n points: points\n };\n });\n}\n\nfunction getSplitLineStyle(axisItem) {\n return axisItem.splitLine.style;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bar = bar;\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _updater = require(\"../class/updater.class\");\n\nvar _config = require(\"../config\");\n\nvar _util = require(\"@jiaminghi/c-render/lib/plugin/util\");\n\nvar _util2 = require(\"../util\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction bar(chart) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var xAxis = option.xAxis,\n yAxis = option.yAxis,\n series = option.series;\n var bars = [];\n\n if (xAxis && yAxis && series) {\n bars = (0, _util2.initNeedSeries)(series, _config.barConfig, 'bar');\n bars = setBarAxis(bars, chart);\n bars = setBarPositionData(bars, chart);\n bars = calcBarsPosition(bars, chart);\n }\n\n (0, _updater.doUpdate)({\n chart: chart,\n series: bars.slice(-1),\n key: 'backgroundBar',\n getGraphConfig: getBackgroundBarConfig\n });\n bars.reverse();\n (0, _updater.doUpdate)({\n chart: chart,\n series: bars,\n key: 'bar',\n getGraphConfig: getBarConfig,\n getStartGraphConfig: getStartBarConfig,\n beforeUpdate: beforeUpdateBar\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: bars,\n key: 'barLabel',\n getGraphConfig: getLabelConfig\n });\n}\n\nfunction setBarAxis(bars, chart) {\n var axisData = chart.axisData;\n bars.forEach(function (bar) {\n var xAxisIndex = bar.xAxisIndex,\n yAxisIndex = bar.yAxisIndex;\n if (typeof xAxisIndex !== 'number') xAxisIndex = 0;\n if (typeof yAxisIndex !== 'number') yAxisIndex = 0;\n var xAxis = axisData.find(function (_ref) {\n var axis = _ref.axis,\n index = _ref.index;\n return \"\".concat(axis).concat(index) === \"x\".concat(xAxisIndex);\n });\n var yAxis = axisData.find(function (_ref2) {\n var axis = _ref2.axis,\n index = _ref2.index;\n return \"\".concat(axis).concat(index) === \"y\".concat(yAxisIndex);\n });\n var axis = [xAxis, yAxis];\n var valueAxisIndex = axis.findIndex(function (_ref3) {\n var data = _ref3.data;\n return data === 'value';\n });\n bar.valueAxis = axis[valueAxisIndex];\n bar.labelAxis = axis[1 - valueAxisIndex];\n });\n return bars;\n}\n\nfunction setBarPositionData(bars, chart) {\n var labelBarGroup = groupBarByLabelAxis(bars);\n labelBarGroup.forEach(function (group) {\n setBarIndex(group);\n setBarNum(group);\n setBarCategoryWidth(group, chart);\n setBarWidthAndGap(group);\n setBarAllWidthAndGap(group);\n });\n return bars;\n}\n\nfunction setBarIndex(bars) {\n var stacks = getBarStack(bars);\n stacks = stacks.map(function (stack) {\n return {\n stack: stack,\n index: -1\n };\n });\n var currentIndex = 0;\n bars.forEach(function (bar) {\n var stack = bar.stack;\n\n if (!stack) {\n bar.barIndex = currentIndex;\n currentIndex++;\n } else {\n var stackData = stacks.find(function (_ref4) {\n var s = _ref4.stack;\n return s === stack;\n });\n\n if (stackData.index === -1) {\n stackData.index = currentIndex;\n currentIndex++;\n }\n\n bar.barIndex = stackData.index;\n }\n });\n}\n\nfunction groupBarByLabelAxis(bars) {\n var labelAxis = bars.map(function (_ref5) {\n var _ref5$labelAxis = _ref5.labelAxis,\n axis = _ref5$labelAxis.axis,\n index = _ref5$labelAxis.index;\n return axis + index;\n });\n labelAxis = (0, _toConsumableArray2[\"default\"])(new Set(labelAxis));\n return labelAxis.map(function (axisIndex) {\n return bars.filter(function (_ref6) {\n var _ref6$labelAxis = _ref6.labelAxis,\n axis = _ref6$labelAxis.axis,\n index = _ref6$labelAxis.index;\n return axis + index === axisIndex;\n });\n });\n}\n\nfunction getBarStack(bars) {\n var stacks = [];\n bars.forEach(function (_ref7) {\n var stack = _ref7.stack;\n if (stack) stacks.push(stack);\n });\n return (0, _toConsumableArray2[\"default\"])(new Set(stacks));\n}\n\nfunction setBarNum(bars) {\n var barNum = (0, _toConsumableArray2[\"default\"])(new Set(bars.map(function (_ref8) {\n var barIndex = _ref8.barIndex;\n return barIndex;\n }))).length;\n bars.forEach(function (bar) {\n return bar.barNum = barNum;\n });\n}\n\nfunction setBarCategoryWidth(bars) {\n var lastBar = bars.slice(-1)[0];\n var barCategoryGap = lastBar.barCategoryGap,\n tickGap = lastBar.labelAxis.tickGap;\n var barCategoryWidth = 0;\n\n if (typeof barCategoryGap === 'number') {\n barCategoryWidth = barCategoryGap;\n } else {\n barCategoryWidth = (1 - parseInt(barCategoryGap) / 100) * tickGap;\n }\n\n bars.forEach(function (bar) {\n return bar.barCategoryWidth = barCategoryWidth;\n });\n}\n\nfunction setBarWidthAndGap(bars) {\n var _bars$slice$ = bars.slice(-1)[0],\n barCategoryWidth = _bars$slice$.barCategoryWidth,\n barWidth = _bars$slice$.barWidth,\n barGap = _bars$slice$.barGap,\n barNum = _bars$slice$.barNum;\n var widthAndGap = [];\n\n if (typeof barWidth === 'number' || barWidth !== 'auto') {\n widthAndGap = getBarWidthAndGapWithPercentOrNumber(barCategoryWidth, barWidth, barGap, barNum);\n } else if (barWidth === 'auto') {\n widthAndGap = getBarWidthAndGapWidthAuto(barCategoryWidth, barWidth, barGap, barNum);\n }\n\n var _widthAndGap = widthAndGap,\n _widthAndGap2 = (0, _slicedToArray2[\"default\"])(_widthAndGap, 2),\n width = _widthAndGap2[0],\n gap = _widthAndGap2[1];\n\n bars.forEach(function (bar) {\n bar.barWidth = width;\n bar.barGap = gap;\n });\n}\n\nfunction getBarWidthAndGapWithPercentOrNumber(barCategoryWidth, barWidth, barGap) {\n var width = 0,\n gap = 0;\n\n if (typeof barWidth === 'number') {\n width = barWidth;\n } else {\n width = parseInt(barWidth) / 100 * barCategoryWidth;\n }\n\n if (typeof barGap === 'number') {\n gap = barGap;\n } else {\n gap = parseInt(barGap) / 100 * width;\n }\n\n return [width, gap];\n}\n\nfunction getBarWidthAndGapWidthAuto(barCategoryWidth, barWidth, barGap, barNum) {\n var width = 0,\n gap = 0;\n var barItemWidth = barCategoryWidth / barNum;\n\n if (typeof barGap === 'number') {\n gap = barGap;\n width = barItemWidth - gap;\n } else {\n var percent = 10 + parseInt(barGap) / 10;\n\n if (percent === 0) {\n width = barItemWidth * 2;\n gap = -width;\n } else {\n width = barItemWidth / percent * 10;\n gap = barItemWidth - width;\n }\n }\n\n return [width, gap];\n}\n\nfunction setBarAllWidthAndGap(bars) {\n var _bars$slice$2 = bars.slice(-1)[0],\n barGap = _bars$slice$2.barGap,\n barWidth = _bars$slice$2.barWidth,\n barNum = _bars$slice$2.barNum;\n var barAllWidthAndGap = (barGap + barWidth) * barNum - barGap;\n bars.forEach(function (bar) {\n return bar.barAllWidthAndGap = barAllWidthAndGap;\n });\n}\n\nfunction calcBarsPosition(bars, chart) {\n bars = calcBarValueAxisCoordinate(bars);\n bars = calcBarLabelAxisCoordinate(bars);\n bars = eliminateNullBarLabelAxis(bars);\n bars = keepSameNumBetweenBarAndData(bars);\n return bars;\n}\n\nfunction calcBarLabelAxisCoordinate(bars) {\n return bars.map(function (bar) {\n var labelAxis = bar.labelAxis,\n barAllWidthAndGap = bar.barAllWidthAndGap,\n barGap = bar.barGap,\n barWidth = bar.barWidth,\n barIndex = bar.barIndex;\n var tickGap = labelAxis.tickGap,\n tickPosition = labelAxis.tickPosition,\n axis = labelAxis.axis;\n var coordinateIndex = axis === 'x' ? 0 : 1;\n var barLabelAxisPos = tickPosition.map(function (tick, i) {\n var barCategoryStartPos = tickPosition[i][coordinateIndex] - tickGap / 2;\n var barItemsStartPos = barCategoryStartPos + (tickGap - barAllWidthAndGap) / 2;\n return barItemsStartPos + (barIndex + 0.5) * barWidth + barIndex * barGap;\n });\n return _objectSpread(_objectSpread({}, bar), {}, {\n barLabelAxisPos: barLabelAxisPos\n });\n });\n}\n\nfunction calcBarValueAxisCoordinate(bars) {\n return bars.map(function (bar) {\n var data = (0, _util2.mergeSameStackData)(bar, bars);\n data = eliminateNonNumberData(bar, data);\n var _bar$valueAxis = bar.valueAxis,\n axis = _bar$valueAxis.axis,\n minValue = _bar$valueAxis.minValue,\n maxValue = _bar$valueAxis.maxValue,\n linePosition = _bar$valueAxis.linePosition;\n var startPos = getValuePos(minValue, maxValue, minValue < 0 ? 0 : minValue, linePosition, axis);\n var endPos = data.map(function (v) {\n return getValuePos(minValue, maxValue, v, linePosition, axis);\n });\n var barValueAxisPos = endPos.map(function (p) {\n return [startPos, p];\n });\n return _objectSpread(_objectSpread({}, bar), {}, {\n barValueAxisPos: barValueAxisPos\n });\n });\n}\n\nfunction eliminateNonNumberData(barItem, barData) {\n var data = barItem.data;\n return barData.map(function (v, i) {\n return typeof data[i] === 'number' ? v : null;\n }).filter(function (d) {\n return d !== null;\n });\n}\n\nfunction eliminateNullBarLabelAxis(bars) {\n return bars.map(function (bar) {\n var barLabelAxisPos = bar.barLabelAxisPos,\n data = bar.data;\n data.forEach(function (d, i) {\n if (typeof d === 'number') return;\n barLabelAxisPos[i] = null;\n });\n return _objectSpread(_objectSpread({}, bar), {}, {\n barLabelAxisPos: barLabelAxisPos.filter(function (p) {\n return p !== null;\n })\n });\n });\n}\n\nfunction keepSameNumBetweenBarAndData(bars) {\n bars.forEach(function (bar) {\n var data = bar.data,\n barLabelAxisPos = bar.barLabelAxisPos,\n barValueAxisPos = bar.barValueAxisPos;\n var dataNum = data.filter(function (d) {\n return typeof d === 'number';\n }).length;\n var axisPosNum = barLabelAxisPos.length;\n\n if (axisPosNum > dataNum) {\n barLabelAxisPos.splice(dataNum);\n barValueAxisPos.splice(dataNum);\n }\n });\n return bars;\n}\n\nfunction getValuePos(min, max, value, linePosition, axis) {\n if (typeof value !== 'number') return null;\n var valueMinus = max - min;\n var coordinateIndex = axis === 'x' ? 0 : 1;\n var posMinus = linePosition[1][coordinateIndex] - linePosition[0][coordinateIndex];\n var percent = (value - min) / valueMinus;\n if (valueMinus === 0) percent = 0;\n var pos = percent * posMinus;\n return pos + linePosition[0][coordinateIndex];\n}\n\nfunction getBackgroundBarConfig(barItem) {\n var animationCurve = barItem.animationCurve,\n animationFrame = barItem.animationFrame,\n rLevel = barItem.rLevel;\n var shapes = getBackgroundBarShapes(barItem);\n var style = getBackgroundBarStyle(barItem);\n return shapes.map(function (shape) {\n return {\n name: 'rect',\n index: rLevel,\n visible: barItem.backgroundBar.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: shape,\n style: style\n };\n });\n}\n\nfunction getBackgroundBarShapes(barItem) {\n var labelAxis = barItem.labelAxis,\n valueAxis = barItem.valueAxis;\n var tickPosition = labelAxis.tickPosition;\n var axis = valueAxis.axis,\n linePosition = valueAxis.linePosition;\n var width = getBackgroundBarWidth(barItem);\n var haltWidth = width / 2;\n var posIndex = axis === 'x' ? 0 : 1;\n var centerPos = tickPosition.map(function (p) {\n return p[1 - posIndex];\n });\n var _ref9 = [linePosition[0][posIndex], linePosition[1][posIndex]],\n start = _ref9[0],\n end = _ref9[1];\n return centerPos.map(function (center) {\n if (axis === 'x') {\n return {\n x: start,\n y: center - haltWidth,\n w: end - start,\n h: width\n };\n } else {\n return {\n x: center - haltWidth,\n y: end,\n w: width,\n h: start - end\n };\n }\n });\n}\n\nfunction getBackgroundBarWidth(barItem) {\n var barAllWidthAndGap = barItem.barAllWidthAndGap,\n barCategoryWidth = barItem.barCategoryWidth,\n backgroundBar = barItem.backgroundBar;\n var width = backgroundBar.width;\n if (typeof width === 'number') return width;\n if (width === 'auto') return barAllWidthAndGap;\n return parseInt(width) / 100 * barCategoryWidth;\n}\n\nfunction getBackgroundBarStyle(barItem) {\n return barItem.backgroundBar.style;\n}\n\nfunction getBarConfig(barItem) {\n var barLabelAxisPos = barItem.barLabelAxisPos,\n animationCurve = barItem.animationCurve,\n animationFrame = barItem.animationFrame,\n rLevel = barItem.rLevel;\n var name = getBarName(barItem);\n return barLabelAxisPos.map(function (foo, i) {\n return {\n name: name,\n index: rLevel,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getBarShape(barItem, i),\n style: getBarStyle(barItem, i)\n };\n });\n}\n\nfunction getBarName(barItem) {\n var shapeType = barItem.shapeType;\n if (shapeType === 'leftEchelon' || shapeType === 'rightEchelon') return 'polyline';\n return 'rect';\n}\n\nfunction getBarShape(barItem, i) {\n var shapeType = barItem.shapeType;\n\n if (shapeType === 'leftEchelon') {\n return getLeftEchelonShape(barItem, i);\n } else if (shapeType === 'rightEchelon') {\n return getRightEchelonShape(barItem, i);\n } else {\n return getNormalBarShape(barItem, i);\n }\n}\n\nfunction getLeftEchelonShape(barItem, i) {\n var barValueAxisPos = barItem.barValueAxisPos,\n barLabelAxisPos = barItem.barLabelAxisPos,\n barWidth = barItem.barWidth,\n echelonOffset = barItem.echelonOffset;\n\n var _barValueAxisPos$i = (0, _slicedToArray2[\"default\"])(barValueAxisPos[i], 2),\n start = _barValueAxisPos$i[0],\n end = _barValueAxisPos$i[1];\n\n var labelAxisPos = barLabelAxisPos[i];\n var halfWidth = barWidth / 2;\n var valueAxis = barItem.valueAxis.axis;\n var points = [];\n\n if (valueAxis === 'x') {\n points[0] = [end, labelAxisPos - halfWidth];\n points[1] = [end, labelAxisPos + halfWidth];\n points[2] = [start, labelAxisPos + halfWidth];\n points[3] = [start + echelonOffset, labelAxisPos - halfWidth];\n if (end - start < echelonOffset) points.splice(3, 1);\n } else {\n points[0] = [labelAxisPos - halfWidth, end];\n points[1] = [labelAxisPos + halfWidth, end];\n points[2] = [labelAxisPos + halfWidth, start];\n points[3] = [labelAxisPos - halfWidth, start - echelonOffset];\n if (start - end < echelonOffset) points.splice(3, 1);\n }\n\n return {\n points: points,\n close: true\n };\n}\n\nfunction getRightEchelonShape(barItem, i) {\n var barValueAxisPos = barItem.barValueAxisPos,\n barLabelAxisPos = barItem.barLabelAxisPos,\n barWidth = barItem.barWidth,\n echelonOffset = barItem.echelonOffset;\n\n var _barValueAxisPos$i2 = (0, _slicedToArray2[\"default\"])(barValueAxisPos[i], 2),\n start = _barValueAxisPos$i2[0],\n end = _barValueAxisPos$i2[1];\n\n var labelAxisPos = barLabelAxisPos[i];\n var halfWidth = barWidth / 2;\n var valueAxis = barItem.valueAxis.axis;\n var points = [];\n\n if (valueAxis === 'x') {\n points[0] = [end, labelAxisPos + halfWidth];\n points[1] = [end, labelAxisPos - halfWidth];\n points[2] = [start, labelAxisPos - halfWidth];\n points[3] = [start + echelonOffset, labelAxisPos + halfWidth];\n if (end - start < echelonOffset) points.splice(2, 1);\n } else {\n points[0] = [labelAxisPos + halfWidth, end];\n points[1] = [labelAxisPos - halfWidth, end];\n points[2] = [labelAxisPos - halfWidth, start];\n points[3] = [labelAxisPos + halfWidth, start - echelonOffset];\n if (start - end < echelonOffset) points.splice(2, 1);\n }\n\n return {\n points: points,\n close: true\n };\n}\n\nfunction getNormalBarShape(barItem, i) {\n var barValueAxisPos = barItem.barValueAxisPos,\n barLabelAxisPos = barItem.barLabelAxisPos,\n barWidth = barItem.barWidth;\n\n var _barValueAxisPos$i3 = (0, _slicedToArray2[\"default\"])(barValueAxisPos[i], 2),\n start = _barValueAxisPos$i3[0],\n end = _barValueAxisPos$i3[1];\n\n var labelAxisPos = barLabelAxisPos[i];\n var valueAxis = barItem.valueAxis.axis;\n var shape = {};\n\n if (valueAxis === 'x') {\n shape.x = start;\n shape.y = labelAxisPos - barWidth / 2;\n shape.w = end - start;\n shape.h = barWidth;\n } else {\n shape.x = labelAxisPos - barWidth / 2;\n shape.y = end;\n shape.w = barWidth;\n shape.h = start - end;\n }\n\n return shape;\n}\n\nfunction getBarStyle(barItem, i) {\n var barStyle = barItem.barStyle,\n gradient = barItem.gradient,\n color = barItem.color,\n independentColor = barItem.independentColor,\n independentColors = barItem.independentColors;\n var fillColor = [barStyle.fill || color];\n var gradientColor = (0, _util2.deepMerge)(fillColor, gradient.color);\n\n if (independentColor) {\n var idtColor = independentColors[i % independentColors.length];\n gradientColor = idtColor instanceof Array ? idtColor : [idtColor];\n }\n\n if (gradientColor.length === 1) gradientColor.push(gradientColor[0]);\n var gradientParams = getGradientParams(barItem, i);\n return (0, _util2.deepMerge)({\n gradientColor: gradientColor,\n gradientParams: gradientParams,\n gradientType: 'linear',\n gradientWith: 'fill'\n }, barStyle);\n}\n\nfunction getGradientParams(barItem, i) {\n var barValueAxisPos = barItem.barValueAxisPos,\n barLabelAxisPos = barItem.barLabelAxisPos,\n data = barItem.data;\n var _barItem$valueAxis = barItem.valueAxis,\n linePosition = _barItem$valueAxis.linePosition,\n axis = _barItem$valueAxis.axis;\n\n var _barValueAxisPos$i4 = (0, _slicedToArray2[\"default\"])(barValueAxisPos[i], 2),\n start = _barValueAxisPos$i4[0],\n end = _barValueAxisPos$i4[1];\n\n var labelAxisPos = barLabelAxisPos[i];\n var value = data[i];\n\n var _linePosition = (0, _slicedToArray2[\"default\"])(linePosition, 2),\n lineStart = _linePosition[0],\n lineEnd = _linePosition[1];\n\n var valueAxisIndex = axis === 'x' ? 0 : 1;\n var endPos = end;\n\n if (!barItem.gradient.local) {\n endPos = value < 0 ? lineStart[valueAxisIndex] : lineEnd[valueAxisIndex];\n }\n\n if (axis === 'y') {\n return [labelAxisPos, endPos, labelAxisPos, start];\n } else {\n return [endPos, labelAxisPos, start, labelAxisPos];\n }\n}\n\nfunction getStartBarConfig(barItem) {\n var configs = getBarConfig(barItem);\n var shapeType = barItem.shapeType;\n configs.forEach(function (config) {\n var shape = config.shape;\n\n if (shapeType === 'leftEchelon') {\n shape = getStartLeftEchelonShape(shape, barItem);\n } else if (shapeType === 'rightEchelon') {\n shape = getStartRightEchelonShape(shape, barItem);\n } else {\n shape = getStartNormalBarShape(shape, barItem);\n }\n\n config.shape = shape;\n });\n return configs;\n}\n\nfunction getStartLeftEchelonShape(shape, barItem) {\n var axis = barItem.valueAxis.axis;\n shape = (0, _util.deepClone)(shape);\n var _shape = shape,\n points = _shape.points;\n var index = axis === 'x' ? 0 : 1;\n var start = points[2][index];\n points.forEach(function (point) {\n return point[index] = start;\n });\n return shape;\n}\n\nfunction getStartRightEchelonShape(shape, barItem) {\n var axis = barItem.valueAxis.axis;\n shape = (0, _util.deepClone)(shape);\n var _shape2 = shape,\n points = _shape2.points;\n var index = axis === 'x' ? 0 : 1;\n var start = points[2][index];\n points.forEach(function (point) {\n return point[index] = start;\n });\n return shape;\n}\n\nfunction getStartNormalBarShape(shape, barItem) {\n var axis = barItem.valueAxis.axis;\n var x = shape.x,\n y = shape.y,\n w = shape.w,\n h = shape.h;\n\n if (axis === 'x') {\n w = 0;\n } else {\n y = y + h;\n h = 0;\n }\n\n return {\n x: x,\n y: y,\n w: w,\n h: h\n };\n}\n\nfunction beforeUpdateBar(graphs, barItem, i, updater) {\n var render = updater.chart.render;\n var name = getBarName(barItem);\n\n if (graphs[i] && graphs[i][0].name !== name) {\n graphs[i].forEach(function (g) {\n return render.delGraph(g);\n });\n graphs[i] = null;\n }\n}\n\nfunction getLabelConfig(barItem) {\n var animationCurve = barItem.animationCurve,\n animationFrame = barItem.animationFrame,\n rLevel = barItem.rLevel;\n var shapes = getLabelShapes(barItem);\n var style = getLabelStyle(barItem);\n return shapes.map(function (shape) {\n return {\n name: 'text',\n index: rLevel,\n visible: barItem.label.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: shape,\n style: style\n };\n });\n}\n\nfunction getLabelShapes(barItem) {\n var contents = getFormatterLabels(barItem);\n var position = getLabelsPosition(barItem);\n return position.map(function (pos, i) {\n return {\n position: pos,\n content: contents[i]\n };\n });\n}\n\nfunction getFormatterLabels(barItem) {\n var data = barItem.data,\n label = barItem.label;\n var formatter = label.formatter;\n data = data.filter(function (d) {\n return typeof d === 'number';\n }).map(function (d) {\n return d.toString();\n });\n if (!formatter) return data;\n var type = (0, _typeof2[\"default\"])(formatter);\n if (type === 'string') return data.map(function (d) {\n return formatter.replace('{value}', d);\n });\n if (type === 'function') return data.map(function (d, i) {\n return formatter({\n value: d,\n index: i\n });\n });\n return data;\n}\n\nfunction getLabelsPosition(barItem) {\n var label = barItem.label,\n barValueAxisPos = barItem.barValueAxisPos,\n barLabelAxisPos = barItem.barLabelAxisPos;\n var position = label.position,\n offset = label.offset;\n var axis = barItem.valueAxis.axis;\n return barValueAxisPos.map(function (_ref10, i) {\n var _ref11 = (0, _slicedToArray2[\"default\"])(_ref10, 2),\n start = _ref11[0],\n end = _ref11[1];\n\n var labelAxisPos = barLabelAxisPos[i];\n var pos = [end, labelAxisPos];\n\n if (position === 'bottom') {\n pos = [start, labelAxisPos];\n }\n\n if (position === 'center') {\n pos = [(start + end) / 2, labelAxisPos];\n }\n\n if (axis === 'y') pos.reverse();\n return getOffsetedPoint(pos, offset);\n });\n}\n\nfunction getOffsetedPoint(_ref12, _ref13) {\n var _ref14 = (0, _slicedToArray2[\"default\"])(_ref12, 2),\n x = _ref14[0],\n y = _ref14[1];\n\n var _ref15 = (0, _slicedToArray2[\"default\"])(_ref13, 2),\n ox = _ref15[0],\n oy = _ref15[1];\n\n return [x + ox, y + oy];\n}\n\nfunction getLabelStyle(barItem) {\n var color = barItem.color,\n style = barItem.label.style,\n gc = barItem.gradient.color;\n if (gc.length) color = gc[0];\n style = (0, _util2.deepMerge)({\n fill: color\n }, style);\n return style;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.gauge = gauge;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _updater = require(\"../class/updater.class\");\n\nvar _gauge = require(\"../config/gauge\");\n\nvar _util = require(\"@jiaminghi/c-render/lib/plugin/util\");\n\nvar _util2 = require(\"../util\");\n\nvar _color = require(\"@jiaminghi/color\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction gauge(chart) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var series = option.series;\n if (!series) series = [];\n var gauges = (0, _util2.initNeedSeries)(series, _gauge.gaugeConfig, 'gauge');\n gauges = calcGaugesCenter(gauges, chart);\n gauges = calcGaugesRadius(gauges, chart);\n gauges = calcGaugesDataRadiusAndLineWidth(gauges, chart);\n gauges = calcGaugesDataAngles(gauges, chart);\n gauges = calcGaugesDataGradient(gauges, chart);\n gauges = calcGaugesAxisTickPosition(gauges, chart);\n gauges = calcGaugesLabelPositionAndAlign(gauges, chart);\n gauges = calcGaugesLabelData(gauges, chart);\n gauges = calcGaugesDetailsPosition(gauges, chart);\n gauges = calcGaugesDetailsContent(gauges, chart);\n (0, _updater.doUpdate)({\n chart: chart,\n series: gauges,\n key: 'gaugeAxisTick',\n getGraphConfig: getAxisTickConfig\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: gauges,\n key: 'gaugeAxisLabel',\n getGraphConfig: getAxisLabelConfig\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: gauges,\n key: 'gaugeBackgroundArc',\n getGraphConfig: getBackgroundArcConfig,\n getStartGraphConfig: getStartBackgroundArcConfig\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: gauges,\n key: 'gaugeArc',\n getGraphConfig: getArcConfig,\n getStartGraphConfig: getStartArcConfig,\n beforeChange: beforeChangeArc\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: gauges,\n key: 'gaugePointer',\n getGraphConfig: getPointerConfig,\n getStartGraphConfig: getStartPointerConfig\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: gauges,\n key: 'gaugeDetails',\n getGraphConfig: getDetailsConfig\n });\n}\n\nfunction calcGaugesCenter(gauges, chart) {\n var area = chart.render.area;\n gauges.forEach(function (gaugeItem) {\n var center = gaugeItem.center;\n center = center.map(function (pos, i) {\n if (typeof pos === 'number') return pos;\n return parseInt(pos) / 100 * area[i];\n });\n gaugeItem.center = center;\n });\n return gauges;\n}\n\nfunction calcGaugesRadius(gauges, chart) {\n var area = chart.render.area;\n var maxRadius = Math.min.apply(Math, (0, _toConsumableArray2[\"default\"])(area)) / 2;\n gauges.forEach(function (gaugeItem) {\n var radius = gaugeItem.radius;\n\n if (typeof radius !== 'number') {\n radius = parseInt(radius) / 100 * maxRadius;\n }\n\n gaugeItem.radius = radius;\n });\n return gauges;\n}\n\nfunction calcGaugesDataRadiusAndLineWidth(gauges, chart) {\n var area = chart.render.area;\n var maxRadius = Math.min.apply(Math, (0, _toConsumableArray2[\"default\"])(area)) / 2;\n gauges.forEach(function (gaugeItem) {\n var radius = gaugeItem.radius,\n data = gaugeItem.data,\n arcLineWidth = gaugeItem.arcLineWidth;\n data.forEach(function (item) {\n var arcRadius = item.radius,\n lineWidth = item.lineWidth;\n if (!arcRadius) arcRadius = radius;\n if (typeof arcRadius !== 'number') arcRadius = parseInt(arcRadius) / 100 * maxRadius;\n item.radius = arcRadius;\n if (!lineWidth) lineWidth = arcLineWidth;\n item.lineWidth = lineWidth;\n });\n });\n return gauges;\n}\n\nfunction calcGaugesDataAngles(gauges, chart) {\n gauges.forEach(function (gaugeItem) {\n var startAngle = gaugeItem.startAngle,\n endAngle = gaugeItem.endAngle,\n data = gaugeItem.data,\n min = gaugeItem.min,\n max = gaugeItem.max;\n var angleMinus = endAngle - startAngle;\n var valueMinus = max - min;\n data.forEach(function (item) {\n var value = item.value;\n var itemAngle = Math.abs((value - min) / valueMinus * angleMinus);\n item.startAngle = startAngle;\n item.endAngle = startAngle + itemAngle;\n });\n });\n return gauges;\n}\n\nfunction calcGaugesDataGradient(gauges, chart) {\n gauges.forEach(function (gaugeItem) {\n var data = gaugeItem.data;\n data.forEach(function (item) {\n var color = item.color,\n gradient = item.gradient;\n if (!gradient || !gradient.length) gradient = color;\n if (!(gradient instanceof Array)) gradient = [gradient];\n item.gradient = gradient;\n });\n });\n return gauges;\n}\n\nfunction calcGaugesAxisTickPosition(gauges, chart) {\n gauges.forEach(function (gaugeItem) {\n var startAngle = gaugeItem.startAngle,\n endAngle = gaugeItem.endAngle,\n splitNum = gaugeItem.splitNum,\n center = gaugeItem.center,\n radius = gaugeItem.radius,\n arcLineWidth = gaugeItem.arcLineWidth,\n axisTick = gaugeItem.axisTick;\n var tickLength = axisTick.tickLength,\n lineWidth = axisTick.style.lineWidth;\n var angles = endAngle - startAngle;\n var outerRadius = radius - arcLineWidth / 2;\n var innerRadius = outerRadius - tickLength;\n var angleGap = angles / (splitNum - 1);\n var arcLength = 2 * Math.PI * radius * angles / (Math.PI * 2);\n var offset = Math.ceil(lineWidth / 2) / arcLength * angles;\n gaugeItem.tickAngles = [];\n gaugeItem.tickInnerRadius = [];\n gaugeItem.tickPosition = new Array(splitNum).fill(0).map(function (foo, i) {\n var angle = startAngle + angleGap * i;\n if (i === 0) angle += offset;\n if (i === splitNum - 1) angle -= offset;\n gaugeItem.tickAngles[i] = angle;\n gaugeItem.tickInnerRadius[i] = innerRadius;\n return [_util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2[\"default\"])(center).concat([outerRadius, angle])), _util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2[\"default\"])(center).concat([innerRadius, angle]))];\n });\n });\n return gauges;\n}\n\nfunction calcGaugesLabelPositionAndAlign(gauges, chart) {\n gauges.forEach(function (gaugeItem) {\n var center = gaugeItem.center,\n tickInnerRadius = gaugeItem.tickInnerRadius,\n tickAngles = gaugeItem.tickAngles,\n labelGap = gaugeItem.axisLabel.labelGap;\n var position = tickAngles.map(function (angle, i) {\n return _util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2[\"default\"])(center).concat([tickInnerRadius[i] - labelGap, tickAngles[i]]));\n });\n var align = position.map(function (_ref) {\n var _ref2 = (0, _slicedToArray2[\"default\"])(_ref, 2),\n x = _ref2[0],\n y = _ref2[1];\n\n return {\n textAlign: x > center[0] ? 'right' : 'left',\n textBaseline: y > center[1] ? 'bottom' : 'top'\n };\n });\n gaugeItem.labelPosition = position;\n gaugeItem.labelAlign = align;\n });\n return gauges;\n}\n\nfunction calcGaugesLabelData(gauges, chart) {\n gauges.forEach(function (gaugeItem) {\n var axisLabel = gaugeItem.axisLabel,\n min = gaugeItem.min,\n max = gaugeItem.max,\n splitNum = gaugeItem.splitNum;\n var data = axisLabel.data,\n formatter = axisLabel.formatter;\n var valueGap = (max - min) / (splitNum - 1);\n var value = new Array(splitNum).fill(0).map(function (foo, i) {\n return parseInt(min + valueGap * i);\n });\n var formatterType = (0, _typeof2[\"default\"])(formatter);\n data = (0, _util2.deepMerge)(value, data).map(function (v, i) {\n var label = v;\n\n if (formatterType === 'string') {\n label = formatter.replace('{value}', v);\n }\n\n if (formatterType === 'function') {\n label = formatter({\n value: v,\n index: i\n });\n }\n\n return label;\n });\n axisLabel.data = data;\n });\n return gauges;\n}\n\nfunction calcGaugesDetailsPosition(gauges, chart) {\n gauges.forEach(function (gaugeItem) {\n var data = gaugeItem.data,\n details = gaugeItem.details,\n center = gaugeItem.center;\n var position = details.position,\n offset = details.offset;\n var detailsPosition = data.map(function (_ref3) {\n var startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle,\n radius = _ref3.radius;\n var point = null;\n\n if (position === 'center') {\n point = center;\n } else if (position === 'start') {\n point = _util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2[\"default\"])(center).concat([radius, startAngle]));\n } else if (position === 'end') {\n point = _util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2[\"default\"])(center).concat([radius, endAngle]));\n }\n\n return getOffsetedPoint(point, offset);\n });\n gaugeItem.detailsPosition = detailsPosition;\n });\n return gauges;\n}\n\nfunction calcGaugesDetailsContent(gauges, chart) {\n gauges.forEach(function (gaugeItem) {\n var data = gaugeItem.data,\n details = gaugeItem.details;\n var formatter = details.formatter;\n var formatterType = (0, _typeof2[\"default\"])(formatter);\n var contents = data.map(function (dataItem) {\n var content = dataItem.value;\n\n if (formatterType === 'string') {\n content = formatter.replace('{value}', '{nt}');\n content = content.replace('{name}', dataItem.name);\n }\n\n if (formatterType === 'function') content = formatter(dataItem);\n return content.toString();\n });\n gaugeItem.detailsContent = contents;\n });\n return gauges;\n}\n\nfunction getOffsetedPoint(_ref4, _ref5) {\n var _ref6 = (0, _slicedToArray2[\"default\"])(_ref4, 2),\n x = _ref6[0],\n y = _ref6[1];\n\n var _ref7 = (0, _slicedToArray2[\"default\"])(_ref5, 2),\n ox = _ref7[0],\n oy = _ref7[1];\n\n return [x + ox, y + oy];\n}\n\nfunction getAxisTickConfig(gaugeItem) {\n var tickPosition = gaugeItem.tickPosition,\n animationCurve = gaugeItem.animationCurve,\n animationFrame = gaugeItem.animationFrame,\n rLevel = gaugeItem.rLevel;\n return tickPosition.map(function (foo, i) {\n return {\n name: 'polyline',\n index: rLevel,\n visible: gaugeItem.axisTick.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getAxisTickShape(gaugeItem, i),\n style: getAxisTickStyle(gaugeItem, i)\n };\n });\n}\n\nfunction getAxisTickShape(gaugeItem, i) {\n var tickPosition = gaugeItem.tickPosition;\n return {\n points: tickPosition[i]\n };\n}\n\nfunction getAxisTickStyle(gaugeItem, i) {\n var style = gaugeItem.axisTick.style;\n return style;\n}\n\nfunction getAxisLabelConfig(gaugeItem) {\n var labelPosition = gaugeItem.labelPosition,\n animationCurve = gaugeItem.animationCurve,\n animationFrame = gaugeItem.animationFrame,\n rLevel = gaugeItem.rLevel;\n return labelPosition.map(function (foo, i) {\n return {\n name: 'text',\n index: rLevel,\n visible: gaugeItem.axisLabel.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getAxisLabelShape(gaugeItem, i),\n style: getAxisLabelStyle(gaugeItem, i)\n };\n });\n}\n\nfunction getAxisLabelShape(gaugeItem, i) {\n var labelPosition = gaugeItem.labelPosition,\n data = gaugeItem.axisLabel.data;\n return {\n content: data[i].toString(),\n position: labelPosition[i]\n };\n}\n\nfunction getAxisLabelStyle(gaugeItem, i) {\n var labelAlign = gaugeItem.labelAlign,\n axisLabel = gaugeItem.axisLabel;\n var style = axisLabel.style;\n return (0, _util2.deepMerge)(_objectSpread({}, labelAlign[i]), style);\n}\n\nfunction getBackgroundArcConfig(gaugeItem) {\n var animationCurve = gaugeItem.animationCurve,\n animationFrame = gaugeItem.animationFrame,\n rLevel = gaugeItem.rLevel;\n return [{\n name: 'arc',\n index: rLevel,\n visible: gaugeItem.backgroundArc.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getGaugeBackgroundArcShape(gaugeItem),\n style: getGaugeBackgroundArcStyle(gaugeItem)\n }];\n}\n\nfunction getGaugeBackgroundArcShape(gaugeItem) {\n var startAngle = gaugeItem.startAngle,\n endAngle = gaugeItem.endAngle,\n center = gaugeItem.center,\n radius = gaugeItem.radius;\n return {\n rx: center[0],\n ry: center[1],\n r: radius,\n startAngle: startAngle,\n endAngle: endAngle\n };\n}\n\nfunction getGaugeBackgroundArcStyle(gaugeItem) {\n var backgroundArc = gaugeItem.backgroundArc,\n arcLineWidth = gaugeItem.arcLineWidth;\n var style = backgroundArc.style;\n return (0, _util2.deepMerge)({\n lineWidth: arcLineWidth\n }, style);\n}\n\nfunction getStartBackgroundArcConfig(gaugeItem) {\n var config = getBackgroundArcConfig(gaugeItem)[0];\n\n var shape = _objectSpread({}, config.shape);\n\n shape.endAngle = config.shape.startAngle;\n config.shape = shape;\n return [config];\n}\n\nfunction getArcConfig(gaugeItem) {\n var data = gaugeItem.data,\n animationCurve = gaugeItem.animationCurve,\n animationFrame = gaugeItem.animationFrame,\n rLevel = gaugeItem.rLevel;\n return data.map(function (foo, i) {\n return {\n name: 'agArc',\n index: rLevel,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getGaugeArcShape(gaugeItem, i),\n style: getGaugeArcStyle(gaugeItem, i)\n };\n });\n}\n\nfunction getGaugeArcShape(gaugeItem, i) {\n var data = gaugeItem.data,\n center = gaugeItem.center,\n gradientEndAngle = gaugeItem.endAngle;\n var _data$i = data[i],\n radius = _data$i.radius,\n startAngle = _data$i.startAngle,\n endAngle = _data$i.endAngle,\n localGradient = _data$i.localGradient;\n if (localGradient) gradientEndAngle = endAngle;\n return {\n rx: center[0],\n ry: center[1],\n r: radius,\n startAngle: startAngle,\n endAngle: endAngle,\n gradientEndAngle: gradientEndAngle\n };\n}\n\nfunction getGaugeArcStyle(gaugeItem, i) {\n var data = gaugeItem.data,\n dataItemStyle = gaugeItem.dataItemStyle;\n var _data$i2 = data[i],\n lineWidth = _data$i2.lineWidth,\n gradient = _data$i2.gradient;\n gradient = gradient.map(function (c) {\n return (0, _color.getRgbaValue)(c);\n });\n return (0, _util2.deepMerge)({\n lineWidth: lineWidth,\n gradient: gradient\n }, dataItemStyle);\n}\n\nfunction getStartArcConfig(gaugeItem) {\n var configs = getArcConfig(gaugeItem);\n configs.map(function (config) {\n var shape = _objectSpread({}, config.shape);\n\n shape.endAngle = config.shape.startAngle;\n config.shape = shape;\n });\n return configs;\n}\n\nfunction beforeChangeArc(graph, config) {\n var graphGradient = graph.style.gradient;\n var cacheNum = graphGradient.length;\n var needNum = config.style.gradient.length;\n\n if (cacheNum > needNum) {\n graphGradient.splice(needNum);\n } else {\n var last = graphGradient.slice(-1)[0];\n graphGradient.push.apply(graphGradient, (0, _toConsumableArray2[\"default\"])(new Array(needNum - cacheNum).fill(0).map(function (foo) {\n return (0, _toConsumableArray2[\"default\"])(last);\n })));\n }\n}\n\nfunction getPointerConfig(gaugeItem) {\n var animationCurve = gaugeItem.animationCurve,\n animationFrame = gaugeItem.animationFrame,\n center = gaugeItem.center,\n rLevel = gaugeItem.rLevel;\n return [{\n name: 'polyline',\n index: rLevel,\n visible: gaugeItem.pointer.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getPointerShape(gaugeItem),\n style: getPointerStyle(gaugeItem),\n setGraphCenter: function setGraphCenter(foo, graph) {\n graph.style.graphCenter = center;\n }\n }];\n}\n\nfunction getPointerShape(gaugeItem) {\n var center = gaugeItem.center;\n return {\n points: getPointerPoints(center),\n close: true\n };\n}\n\nfunction getPointerStyle(gaugeItem) {\n var startAngle = gaugeItem.startAngle,\n endAngle = gaugeItem.endAngle,\n min = gaugeItem.min,\n max = gaugeItem.max,\n data = gaugeItem.data,\n pointer = gaugeItem.pointer,\n center = gaugeItem.center;\n var valueIndex = pointer.valueIndex,\n style = pointer.style;\n var value = data[valueIndex] ? data[valueIndex].value : 0;\n var angle = (value - min) / (max - min) * (endAngle - startAngle) + startAngle + Math.PI / 2;\n return (0, _util2.deepMerge)({\n rotate: (0, _util2.radianToAngle)(angle),\n scale: [1, 1],\n graphCenter: center\n }, style);\n}\n\nfunction getPointerPoints(_ref8) {\n var _ref9 = (0, _slicedToArray2[\"default\"])(_ref8, 2),\n x = _ref9[0],\n y = _ref9[1];\n\n var point1 = [x, y - 40];\n var point2 = [x + 5, y];\n var point3 = [x, y + 10];\n var point4 = [x - 5, y];\n return [point1, point2, point3, point4];\n}\n\nfunction getStartPointerConfig(gaugeItem) {\n var startAngle = gaugeItem.startAngle;\n var config = getPointerConfig(gaugeItem)[0];\n config.style.rotate = (0, _util2.radianToAngle)(startAngle + Math.PI / 2);\n return [config];\n}\n\nfunction getDetailsConfig(gaugeItem) {\n var detailsPosition = gaugeItem.detailsPosition,\n animationCurve = gaugeItem.animationCurve,\n animationFrame = gaugeItem.animationFrame,\n rLevel = gaugeItem.rLevel;\n var visible = gaugeItem.details.show;\n return detailsPosition.map(function (foo, i) {\n return {\n name: 'numberText',\n index: rLevel,\n visible: visible,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getDetailsShape(gaugeItem, i),\n style: getDetailsStyle(gaugeItem, i)\n };\n });\n}\n\nfunction getDetailsShape(gaugeItem, i) {\n var detailsPosition = gaugeItem.detailsPosition,\n detailsContent = gaugeItem.detailsContent,\n data = gaugeItem.data,\n details = gaugeItem.details;\n var position = detailsPosition[i];\n var content = detailsContent[i];\n var dataValue = data[i].value;\n var toFixed = details.valueToFixed;\n return {\n number: [dataValue],\n content: content,\n position: position,\n toFixed: toFixed\n };\n}\n\nfunction getDetailsStyle(gaugeItem, i) {\n var details = gaugeItem.details,\n data = gaugeItem.data;\n var style = details.style;\n var color = data[i].color;\n return (0, _util2.deepMerge)({\n fill: color\n }, style);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.grid = grid;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _updater = require(\"../class/updater.class\");\n\nvar _util = require(\"@jiaminghi/c-render/lib/plugin/util\");\n\nvar _config = require(\"../config\");\n\nvar _util2 = require(\"../util\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction grid(chart) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var grid = option.grid;\n grid = (0, _util2.deepMerge)((0, _util.deepClone)(_config.gridConfig, true), grid || {});\n (0, _updater.doUpdate)({\n chart: chart,\n series: [grid],\n key: 'grid',\n getGraphConfig: getGridConfig\n });\n}\n\nfunction getGridConfig(gridItem, updater) {\n var animationCurve = gridItem.animationCurve,\n animationFrame = gridItem.animationFrame,\n rLevel = gridItem.rLevel;\n var shape = getGridShape(gridItem, updater);\n var style = getGridStyle(gridItem);\n updater.chart.gridArea = _objectSpread({}, shape);\n return [{\n name: 'rect',\n index: rLevel,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: shape,\n style: style\n }];\n}\n\nfunction getGridShape(gridItem, updater) {\n var _updater$chart$render = (0, _slicedToArray2[\"default\"])(updater.chart.render.area, 2),\n w = _updater$chart$render[0],\n h = _updater$chart$render[1];\n\n var left = getNumberValue(gridItem.left, w);\n var right = getNumberValue(gridItem.right, w);\n var top = getNumberValue(gridItem.top, h);\n var bottom = getNumberValue(gridItem.bottom, h);\n var width = w - left - right;\n var height = h - top - bottom;\n return {\n x: left,\n y: top,\n w: width,\n h: height\n };\n}\n\nfunction getNumberValue(val, all) {\n if (typeof val === 'number') return val;\n if (typeof val !== 'string') return 0;\n return all * parseInt(val) / 100;\n}\n\nfunction getGridStyle(gridItem) {\n var style = gridItem.style;\n return style;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"mergeColor\", {\n enumerable: true,\n get: function get() {\n return _mergeColor.mergeColor;\n }\n});\nObject.defineProperty(exports, \"title\", {\n enumerable: true,\n get: function get() {\n return _title.title;\n }\n});\nObject.defineProperty(exports, \"grid\", {\n enumerable: true,\n get: function get() {\n return _grid.grid;\n }\n});\nObject.defineProperty(exports, \"axis\", {\n enumerable: true,\n get: function get() {\n return _axis.axis;\n }\n});\nObject.defineProperty(exports, \"line\", {\n enumerable: true,\n get: function get() {\n return _line.line;\n }\n});\nObject.defineProperty(exports, \"bar\", {\n enumerable: true,\n get: function get() {\n return _bar.bar;\n }\n});\nObject.defineProperty(exports, \"pie\", {\n enumerable: true,\n get: function get() {\n return _pie.pie;\n }\n});\nObject.defineProperty(exports, \"radarAxis\", {\n enumerable: true,\n get: function get() {\n return _radarAxis.radarAxis;\n }\n});\nObject.defineProperty(exports, \"radar\", {\n enumerable: true,\n get: function get() {\n return _radar.radar;\n }\n});\nObject.defineProperty(exports, \"gauge\", {\n enumerable: true,\n get: function get() {\n return _gauge.gauge;\n }\n});\nObject.defineProperty(exports, \"legend\", {\n enumerable: true,\n get: function get() {\n return _legend.legend;\n }\n});\n\nvar _mergeColor = require(\"./mergeColor\");\n\nvar _title = require(\"./title\");\n\nvar _grid = require(\"./grid\");\n\nvar _axis = require(\"./axis\");\n\nvar _line = require(\"./line\");\n\nvar _bar = require(\"./bar\");\n\nvar _pie = require(\"./pie\");\n\nvar _radarAxis = require(\"./radarAxis\");\n\nvar _radar = require(\"./radar\");\n\nvar _gauge = require(\"./gauge\");\n\nvar _legend = require(\"./legend\");","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.legend = legend;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _updater = require(\"../class/updater.class\");\n\nvar _util = require(\"@jiaminghi/c-render/lib/plugin/util\");\n\nvar _config = require(\"../config\");\n\nvar _util2 = require(\"../util\");\n\nfunction legend(chart) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var legend = option.legend;\n\n if (legend) {\n legend = (0, _util2.deepMerge)((0, _util.deepClone)(_config.legendConfig, true), legend);\n legend = initLegendData(legend);\n legend = filterInvalidData(legend, option, chart);\n legend = calcLegendTextWidth(legend, chart);\n legend = calcLegendPosition(legend, chart);\n legend = [legend];\n } else {\n legend = [];\n }\n\n (0, _updater.doUpdate)({\n chart: chart,\n series: legend,\n key: 'legendIcon',\n getGraphConfig: getIconConfig\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: legend,\n key: 'legendText',\n getGraphConfig: getTextConfig\n });\n}\n\nfunction initLegendData(legend) {\n var data = legend.data;\n legend.data = data.map(function (item) {\n var itemType = (0, _typeof2[\"default\"])(item);\n\n if (itemType === 'string') {\n return {\n name: item\n };\n } else if (itemType === 'object') {\n return item;\n }\n\n return {\n name: ''\n };\n });\n return legend;\n}\n\nfunction filterInvalidData(legend, option, chart) {\n var series = option.series;\n var legendStatus = chart.legendStatus;\n var data = legend.data.filter(function (item) {\n var name = item.name;\n var result = series.find(function (_ref) {\n var sn = _ref.name;\n return name === sn;\n });\n if (!result) return false;\n if (!item.color) item.color = result.color;\n if (!item.icon) item.icon = result.type;\n return item;\n });\n if (!legendStatus || legendStatus.length !== legend.data.length) legendStatus = new Array(legend.data.length).fill(true);\n data.forEach(function (item, i) {\n return item.status = legendStatus[i];\n });\n legend.data = data;\n chart.legendStatus = legendStatus;\n return legend;\n}\n\nfunction calcLegendTextWidth(legend, chart) {\n var ctx = chart.render.ctx;\n var data = legend.data,\n textStyle = legend.textStyle,\n textUnselectedStyle = legend.textUnselectedStyle;\n data.forEach(function (item) {\n var status = item.status,\n name = item.name;\n item.textWidth = getTextWidth(ctx, name, status ? textStyle : textUnselectedStyle);\n });\n return legend;\n}\n\nfunction getTextWidth(ctx, text, style) {\n ctx.font = getFontConfig(style);\n return ctx.measureText(text).width;\n}\n\nfunction getFontConfig(style) {\n var fontFamily = style.fontFamily,\n fontSize = style.fontSize;\n return \"\".concat(fontSize, \"px \").concat(fontFamily);\n}\n\nfunction calcLegendPosition(legend, chart) {\n var orient = legend.orient;\n\n if (orient === 'vertical') {\n calcVerticalPosition(legend, chart);\n } else {\n calcHorizontalPosition(legend, chart);\n }\n\n return legend;\n}\n\nfunction calcHorizontalPosition(legend, chart) {\n var iconHeight = legend.iconHeight,\n itemGap = legend.itemGap;\n var lines = calcDefaultHorizontalPosition(legend, chart);\n var xOffsets = lines.map(function (line) {\n return getHorizontalXOffset(line, legend, chart);\n });\n var yOffset = getHorizontalYOffset(legend, chart);\n var align = {\n textAlign: 'left',\n textBaseline: 'middle'\n };\n lines.forEach(function (line, i) {\n return line.forEach(function (item) {\n var iconPosition = item.iconPosition,\n textPosition = item.textPosition;\n var xOffset = xOffsets[i];\n var realYOffset = yOffset + i * (itemGap + iconHeight);\n item.iconPosition = mergeOffset(iconPosition, [xOffset, realYOffset]);\n item.textPosition = mergeOffset(textPosition, [xOffset, realYOffset]);\n item.align = align;\n });\n });\n}\n\nfunction calcDefaultHorizontalPosition(legend, chart) {\n var data = legend.data,\n iconWidth = legend.iconWidth;\n var w = chart.render.area[0];\n var startIndex = 0;\n var lines = [[]];\n data.forEach(function (item, i) {\n var beforeWidth = getBeforeWidth(startIndex, i, legend);\n var endXPos = beforeWidth + iconWidth + 5 + item.textWidth;\n\n if (endXPos >= w) {\n startIndex = i;\n beforeWidth = getBeforeWidth(startIndex, i, legend);\n lines.push([]);\n }\n\n item.iconPosition = [beforeWidth, 0];\n item.textPosition = [beforeWidth + iconWidth + 5, 0];\n lines.slice(-1)[0].push(item);\n });\n return lines;\n}\n\nfunction getBeforeWidth(startIndex, currentIndex, legend) {\n var data = legend.data,\n iconWidth = legend.iconWidth,\n itemGap = legend.itemGap;\n var beforeItem = data.slice(startIndex, currentIndex);\n return (0, _util2.mulAdd)(beforeItem.map(function (_ref2) {\n var textWidth = _ref2.textWidth;\n return textWidth;\n })) + (currentIndex - startIndex) * (itemGap + 5 + iconWidth);\n}\n\nfunction getHorizontalXOffset(data, legend, chart) {\n var left = legend.left,\n right = legend.right,\n iconWidth = legend.iconWidth,\n itemGap = legend.itemGap;\n var w = chart.render.area[0];\n var dataNum = data.length;\n var allWidth = (0, _util2.mulAdd)(data.map(function (_ref3) {\n var textWidth = _ref3.textWidth;\n return textWidth;\n })) + dataNum * (5 + iconWidth) + (dataNum - 1) * itemGap;\n var horizontal = [left, right].findIndex(function (pos) {\n return pos !== 'auto';\n });\n\n if (horizontal === -1) {\n return (w - allWidth) / 2;\n } else if (horizontal === 0) {\n if (typeof left === 'number') return left;\n return parseInt(left) / 100 * w;\n } else {\n if (typeof right !== 'number') right = parseInt(right) / 100 * w;\n return w - (allWidth + right);\n }\n}\n\nfunction getHorizontalYOffset(legend, chart) {\n var top = legend.top,\n bottom = legend.bottom,\n iconHeight = legend.iconHeight;\n var h = chart.render.area[1];\n var vertical = [top, bottom].findIndex(function (pos) {\n return pos !== 'auto';\n });\n var halfIconHeight = iconHeight / 2;\n\n if (vertical === -1) {\n var _chart$gridArea = chart.gridArea,\n y = _chart$gridArea.y,\n height = _chart$gridArea.h;\n return y + height + 45 - halfIconHeight;\n } else if (vertical === 0) {\n if (typeof top === 'number') return top - halfIconHeight;\n return parseInt(top) / 100 * h - halfIconHeight;\n } else {\n if (typeof bottom !== 'number') bottom = parseInt(bottom) / 100 * h;\n return h - bottom - halfIconHeight;\n }\n}\n\nfunction mergeOffset(_ref4, _ref5) {\n var _ref6 = (0, _slicedToArray2[\"default\"])(_ref4, 2),\n x = _ref6[0],\n y = _ref6[1];\n\n var _ref7 = (0, _slicedToArray2[\"default\"])(_ref5, 2),\n ox = _ref7[0],\n oy = _ref7[1];\n\n return [x + ox, y + oy];\n}\n\nfunction calcVerticalPosition(legend, chart) {\n var _getVerticalXOffset = getVerticalXOffset(legend, chart),\n _getVerticalXOffset2 = (0, _slicedToArray2[\"default\"])(_getVerticalXOffset, 2),\n isRight = _getVerticalXOffset2[0],\n xOffset = _getVerticalXOffset2[1];\n\n var yOffset = getVerticalYOffset(legend, chart);\n calcDefaultVerticalPosition(legend, isRight);\n var align = {\n textAlign: 'left',\n textBaseline: 'middle'\n };\n legend.data.forEach(function (item) {\n var textPosition = item.textPosition,\n iconPosition = item.iconPosition;\n item.textPosition = mergeOffset(textPosition, [xOffset, yOffset]);\n item.iconPosition = mergeOffset(iconPosition, [xOffset, yOffset]);\n item.align = align;\n });\n}\n\nfunction getVerticalXOffset(legend, chart) {\n var left = legend.left,\n right = legend.right;\n var w = chart.render.area[0];\n var horizontal = [left, right].findIndex(function (pos) {\n return pos !== 'auto';\n });\n\n if (horizontal === -1) {\n return [true, w - 10];\n } else {\n var offset = [left, right][horizontal];\n if (typeof offset !== 'number') offset = parseInt(offset) / 100 * w;\n return [Boolean(horizontal), offset];\n }\n}\n\nfunction getVerticalYOffset(legend, chart) {\n var iconHeight = legend.iconHeight,\n itemGap = legend.itemGap,\n data = legend.data,\n top = legend.top,\n bottom = legend.bottom;\n var h = chart.render.area[1];\n var dataNum = data.length;\n var allHeight = dataNum * iconHeight + (dataNum - 1) * itemGap;\n var vertical = [top, bottom].findIndex(function (pos) {\n return pos !== 'auto';\n });\n\n if (vertical === -1) {\n return (h - allHeight) / 2;\n } else {\n var offset = [top, bottom][vertical];\n if (typeof offset !== 'number') offset = parseInt(offset) / 100 * h;\n if (vertical === 1) offset = h - offset - allHeight;\n return offset;\n }\n}\n\nfunction calcDefaultVerticalPosition(legend, isRight) {\n var data = legend.data,\n iconWidth = legend.iconWidth,\n iconHeight = legend.iconHeight,\n itemGap = legend.itemGap;\n var halfIconHeight = iconHeight / 2;\n data.forEach(function (item, i) {\n var textWidth = item.textWidth;\n var yPos = (iconHeight + itemGap) * i + halfIconHeight;\n var iconXPos = isRight ? 0 - iconWidth : 0;\n var textXpos = isRight ? iconXPos - 5 - textWidth : iconWidth + 5;\n item.iconPosition = [iconXPos, yPos];\n item.textPosition = [textXpos, yPos];\n });\n}\n\nfunction getIconConfig(legendItem, updater) {\n var data = legendItem.data,\n selectAble = legendItem.selectAble,\n animationCurve = legendItem.animationCurve,\n animationFrame = legendItem.animationFrame,\n rLevel = legendItem.rLevel;\n return data.map(function (item, i) {\n return (0, _defineProperty2[\"default\"])({\n name: item.icon === 'line' ? 'lineIcon' : 'rect',\n index: rLevel,\n visible: legendItem.show,\n hover: selectAble,\n click: selectAble,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getIconShape(legendItem, i),\n style: getIconStyle(legendItem, i)\n }, \"click\", createClickCallBack(legendItem, i, updater));\n });\n}\n\nfunction getIconShape(legendItem, i) {\n var data = legendItem.data,\n iconWidth = legendItem.iconWidth,\n iconHeight = legendItem.iconHeight;\n\n var _data$i$iconPosition = (0, _slicedToArray2[\"default\"])(data[i].iconPosition, 2),\n x = _data$i$iconPosition[0],\n y = _data$i$iconPosition[1];\n\n var halfIconHeight = iconHeight / 2;\n return {\n x: x,\n y: y - halfIconHeight,\n w: iconWidth,\n h: iconHeight\n };\n}\n\nfunction getIconStyle(legendItem, i) {\n var data = legendItem.data,\n iconStyle = legendItem.iconStyle,\n iconUnselectedStyle = legendItem.iconUnselectedStyle;\n var _data$i = data[i],\n status = _data$i.status,\n color = _data$i.color;\n var style = status ? iconStyle : iconUnselectedStyle;\n return (0, _util2.deepMerge)({\n fill: color\n }, style);\n}\n\nfunction getTextConfig(legendItem, updater) {\n var data = legendItem.data,\n selectAble = legendItem.selectAble,\n animationCurve = legendItem.animationCurve,\n animationFrame = legendItem.animationFrame,\n rLevel = legendItem.rLevel;\n return data.map(function (foo, i) {\n return {\n name: 'text',\n index: rLevel,\n visible: legendItem.show,\n hover: selectAble,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n hoverRect: getTextHoverRect(legendItem, i),\n shape: getTextShape(legendItem, i),\n style: getTextStyle(legendItem, i),\n click: createClickCallBack(legendItem, i, updater)\n };\n });\n}\n\nfunction getTextShape(legendItem, i) {\n var _legendItem$data$i = legendItem.data[i],\n textPosition = _legendItem$data$i.textPosition,\n name = _legendItem$data$i.name;\n return {\n content: name,\n position: textPosition\n };\n}\n\nfunction getTextStyle(legendItem, i) {\n var textStyle = legendItem.textStyle,\n textUnselectedStyle = legendItem.textUnselectedStyle;\n var _legendItem$data$i2 = legendItem.data[i],\n status = _legendItem$data$i2.status,\n align = _legendItem$data$i2.align;\n var style = status ? textStyle : textUnselectedStyle;\n return (0, _util2.deepMerge)((0, _util.deepClone)(style, true), align);\n}\n\nfunction getTextHoverRect(legendItem, i) {\n var textStyle = legendItem.textStyle,\n textUnselectedStyle = legendItem.textUnselectedStyle;\n\n var _legendItem$data$i3 = legendItem.data[i],\n status = _legendItem$data$i3.status,\n _legendItem$data$i3$t = (0, _slicedToArray2[\"default\"])(_legendItem$data$i3.textPosition, 2),\n x = _legendItem$data$i3$t[0],\n y = _legendItem$data$i3$t[1],\n textWidth = _legendItem$data$i3.textWidth;\n\n var style = status ? textStyle : textUnselectedStyle;\n var fontSize = style.fontSize;\n return [x, y - fontSize / 2, textWidth, fontSize];\n}\n\nfunction createClickCallBack(legendItem, index, updater) {\n var name = legendItem.data[index].name;\n return function () {\n var _updater$chart = updater.chart,\n legendStatus = _updater$chart.legendStatus,\n option = _updater$chart.option;\n var status = !legendStatus[index];\n var change = option.series.find(function (_ref9) {\n var sn = _ref9.name;\n return sn === name;\n });\n change.show = status;\n legendStatus[index] = status;\n updater.chart.setOption(option);\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.line = line;\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _updater = require(\"../class/updater.class\");\n\nvar _config = require(\"../config\");\n\nvar _bezierCurve = _interopRequireDefault(require(\"@jiaminghi/bezier-curve\"));\n\nvar _util = require(\"../util\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar polylineToBezierCurve = _bezierCurve[\"default\"].polylineToBezierCurve,\n getBezierCurveLength = _bezierCurve[\"default\"].getBezierCurveLength;\n\nfunction line(chart) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var xAxis = option.xAxis,\n yAxis = option.yAxis,\n series = option.series;\n var lines = [];\n\n if (xAxis && yAxis && series) {\n lines = (0, _util.initNeedSeries)(series, _config.lineConfig, 'line');\n lines = calcLinesPosition(lines, chart);\n }\n\n (0, _updater.doUpdate)({\n chart: chart,\n series: lines,\n key: 'lineArea',\n getGraphConfig: getLineAreaConfig,\n getStartGraphConfig: getStartLineAreaConfig,\n beforeUpdate: beforeUpdateLineAndArea,\n beforeChange: beforeChangeLineAndArea\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: lines,\n key: 'line',\n getGraphConfig: getLineConfig,\n getStartGraphConfig: getStartLineConfig,\n beforeUpdate: beforeUpdateLineAndArea,\n beforeChange: beforeChangeLineAndArea\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: lines,\n key: 'linePoint',\n getGraphConfig: getPointConfig,\n getStartGraphConfig: getStartPointConfig\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: lines,\n key: 'lineLabel',\n getGraphConfig: getLabelConfig\n });\n}\n\nfunction calcLinesPosition(lines, chart) {\n var axisData = chart.axisData;\n return lines.map(function (lineItem) {\n var lineData = (0, _util.mergeSameStackData)(lineItem, lines);\n lineData = mergeNonNumber(lineItem, lineData);\n var lineAxis = getLineAxis(lineItem, axisData);\n var linePosition = getLinePosition(lineData, lineAxis);\n var lineFillBottomPos = getLineFillBottomPos(lineAxis);\n return _objectSpread(_objectSpread({}, lineItem), {}, {\n linePosition: linePosition.filter(function (p) {\n return p;\n }),\n lineFillBottomPos: lineFillBottomPos\n });\n });\n}\n\nfunction mergeNonNumber(lineItem, lineData) {\n var data = lineItem.data;\n return lineData.map(function (v, i) {\n return typeof data[i] === 'number' ? v : null;\n });\n}\n\nfunction getLineAxis(line, axisData) {\n var xAxisIndex = line.xAxisIndex,\n yAxisIndex = line.yAxisIndex;\n var xAxis = axisData.find(function (_ref) {\n var axis = _ref.axis,\n index = _ref.index;\n return axis === 'x' && index === xAxisIndex;\n });\n var yAxis = axisData.find(function (_ref2) {\n var axis = _ref2.axis,\n index = _ref2.index;\n return axis === 'y' && index === yAxisIndex;\n });\n return [xAxis, yAxis];\n}\n\nfunction getLinePosition(lineData, lineAxis) {\n var valueAxisIndex = lineAxis.findIndex(function (_ref3) {\n var data = _ref3.data;\n return data === 'value';\n });\n var valueAxis = lineAxis[valueAxisIndex];\n var labelAxis = lineAxis[1 - valueAxisIndex];\n var linePosition = valueAxis.linePosition,\n axis = valueAxis.axis;\n var tickPosition = labelAxis.tickPosition;\n var tickNum = tickPosition.length;\n var valueAxisPosIndex = axis === 'x' ? 0 : 1;\n var valueAxisStartPos = linePosition[0][valueAxisPosIndex];\n var valueAxisEndPos = linePosition[1][valueAxisPosIndex];\n var valueAxisPosMinus = valueAxisEndPos - valueAxisStartPos;\n var maxValue = valueAxis.maxValue,\n minValue = valueAxis.minValue;\n var valueMinus = maxValue - minValue;\n var position = new Array(tickNum).fill(0).map(function (foo, i) {\n var v = lineData[i];\n if (typeof v !== 'number') return null;\n var valuePercent = (v - minValue) / valueMinus;\n if (valueMinus === 0) valuePercent = 0;\n return valuePercent * valueAxisPosMinus + valueAxisStartPos;\n });\n return position.map(function (vPos, i) {\n if (i >= tickNum || typeof vPos !== 'number') return null;\n var pos = [vPos, tickPosition[i][1 - valueAxisPosIndex]];\n if (valueAxisPosIndex === 0) return pos;\n pos.reverse();\n return pos;\n });\n}\n\nfunction getLineFillBottomPos(lineAxis) {\n var valueAxis = lineAxis.find(function (_ref4) {\n var data = _ref4.data;\n return data === 'value';\n });\n var axis = valueAxis.axis,\n linePosition = valueAxis.linePosition,\n minValue = valueAxis.minValue,\n maxValue = valueAxis.maxValue;\n var changeIndex = axis === 'x' ? 0 : 1;\n var changeValue = linePosition[0][changeIndex];\n\n if (minValue < 0 && maxValue > 0) {\n var valueMinus = maxValue - minValue;\n var posMinus = Math.abs(linePosition[0][changeIndex] - linePosition[1][changeIndex]);\n var offset = Math.abs(minValue) / valueMinus * posMinus;\n if (axis === 'y') offset *= -1;\n changeValue += offset;\n }\n\n return {\n changeIndex: changeIndex,\n changeValue: changeValue\n };\n}\n\nfunction getLineAreaConfig(lineItem) {\n var animationCurve = lineItem.animationCurve,\n animationFrame = lineItem.animationFrame,\n lineFillBottomPos = lineItem.lineFillBottomPos,\n rLevel = lineItem.rLevel;\n return [{\n name: getLineGraphName(lineItem),\n index: rLevel,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n visible: lineItem.lineArea.show,\n lineFillBottomPos: lineFillBottomPos,\n shape: getLineAndAreaShape(lineItem),\n style: getLineAreaStyle(lineItem),\n drawed: lineAreaDrawed\n }];\n}\n\nfunction getLineAndAreaShape(lineItem) {\n var linePosition = lineItem.linePosition;\n return {\n points: linePosition\n };\n}\n\nfunction getLineAreaStyle(lineItem) {\n var lineArea = lineItem.lineArea,\n color = lineItem.color;\n var gradient = lineArea.gradient,\n style = lineArea.style;\n var fillColor = [style.fill || color];\n var gradientColor = (0, _util.deepMerge)(fillColor, gradient);\n if (gradientColor.length === 1) gradientColor.push(gradientColor[0]);\n var gradientParams = getGradientParams(lineItem);\n style = _objectSpread(_objectSpread({}, style), {}, {\n stroke: 'rgba(0, 0, 0, 0)'\n });\n return (0, _util.deepMerge)({\n gradientColor: gradientColor,\n gradientParams: gradientParams,\n gradientType: 'linear',\n gradientWith: 'fill'\n }, style);\n}\n\nfunction getGradientParams(lineItem) {\n var lineFillBottomPos = lineItem.lineFillBottomPos,\n linePosition = lineItem.linePosition;\n var changeIndex = lineFillBottomPos.changeIndex,\n changeValue = lineFillBottomPos.changeValue;\n var mainPos = linePosition.map(function (p) {\n return p[changeIndex];\n });\n var maxPos = Math.max.apply(Math, (0, _toConsumableArray2[\"default\"])(mainPos));\n var minPos = Math.min.apply(Math, (0, _toConsumableArray2[\"default\"])(mainPos));\n var beginPos = maxPos;\n if (changeIndex === 1) beginPos = minPos;\n\n if (changeIndex === 1) {\n return [0, beginPos, 0, changeValue];\n } else {\n return [beginPos, 0, changeValue, 0];\n }\n}\n\nfunction lineAreaDrawed(_ref5, _ref6) {\n var lineFillBottomPos = _ref5.lineFillBottomPos,\n shape = _ref5.shape;\n var ctx = _ref6.ctx;\n var points = shape.points;\n var changeIndex = lineFillBottomPos.changeIndex,\n changeValue = lineFillBottomPos.changeValue;\n var linePoint1 = (0, _toConsumableArray2[\"default\"])(points[points.length - 1]);\n var linePoint2 = (0, _toConsumableArray2[\"default\"])(points[0]);\n linePoint1[changeIndex] = changeValue;\n linePoint2[changeIndex] = changeValue;\n ctx.lineTo.apply(ctx, (0, _toConsumableArray2[\"default\"])(linePoint1));\n ctx.lineTo.apply(ctx, (0, _toConsumableArray2[\"default\"])(linePoint2));\n ctx.closePath();\n ctx.fill();\n}\n\nfunction getStartLineAreaConfig(lineItem) {\n var config = getLineAreaConfig(lineItem)[0];\n\n var style = _objectSpread({}, config.style);\n\n style.opacity = 0;\n config.style = style;\n return [config];\n}\n\nfunction beforeUpdateLineAndArea(graphs, lineItem, i, updater) {\n var cache = graphs[i];\n if (!cache) return;\n var currentName = getLineGraphName(lineItem);\n var render = updater.chart.render;\n var name = cache[0].name;\n var delAll = currentName !== name;\n if (!delAll) return;\n cache.forEach(function (g) {\n return render.delGraph(g);\n });\n graphs[i] = null;\n}\n\nfunction beforeChangeLineAndArea(graph, config) {\n var points = config.shape.points;\n var graphPoints = graph.shape.points;\n var graphPointsNum = graphPoints.length;\n var pointsNum = points.length;\n\n if (pointsNum > graphPointsNum) {\n var lastPoint = graphPoints.slice(-1)[0];\n var newAddPoints = new Array(pointsNum - graphPointsNum).fill(0).map(function (foo) {\n return (0, _toConsumableArray2[\"default\"])(lastPoint);\n });\n graphPoints.push.apply(graphPoints, (0, _toConsumableArray2[\"default\"])(newAddPoints));\n } else if (pointsNum < graphPointsNum) {\n graphPoints.splice(pointsNum);\n }\n}\n\nfunction getLineConfig(lineItem) {\n var animationCurve = lineItem.animationCurve,\n animationFrame = lineItem.animationFrame,\n rLevel = lineItem.rLevel;\n return [{\n name: getLineGraphName(lineItem),\n index: rLevel + 1,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getLineAndAreaShape(lineItem),\n style: getLineStyle(lineItem)\n }];\n}\n\nfunction getLineGraphName(lineItem) {\n var smooth = lineItem.smooth;\n return smooth ? 'smoothline' : 'polyline';\n}\n\nfunction getLineStyle(lineItem) {\n var lineStyle = lineItem.lineStyle,\n color = lineItem.color,\n smooth = lineItem.smooth,\n linePosition = lineItem.linePosition;\n var lineLength = getLineLength(linePosition, smooth);\n return (0, _util.deepMerge)({\n stroke: color,\n lineDash: [lineLength, 0]\n }, lineStyle);\n}\n\nfunction getLineLength(points) {\n var smooth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (!smooth) return (0, _util.getPolylineLength)(points);\n var curve = polylineToBezierCurve(points);\n return getBezierCurveLength(curve);\n}\n\nfunction getStartLineConfig(lineItem) {\n var lineDash = lineItem.lineStyle.lineDash;\n var config = getLineConfig(lineItem)[0];\n var realLineDash = config.style.lineDash;\n\n if (lineDash) {\n realLineDash = [0, 0];\n } else {\n realLineDash = (0, _toConsumableArray2[\"default\"])(realLineDash).reverse();\n }\n\n config.style.lineDash = realLineDash;\n return [config];\n}\n\nfunction getPointConfig(lineItem) {\n var animationCurve = lineItem.animationCurve,\n animationFrame = lineItem.animationFrame,\n rLevel = lineItem.rLevel;\n var shapes = getPointShapes(lineItem);\n var style = getPointStyle(lineItem);\n return shapes.map(function (shape) {\n return {\n name: 'circle',\n index: rLevel + 2,\n visible: lineItem.linePoint.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: shape,\n style: style\n };\n });\n}\n\nfunction getPointShapes(lineItem) {\n var linePosition = lineItem.linePosition,\n radius = lineItem.linePoint.radius;\n return linePosition.map(function (_ref7) {\n var _ref8 = (0, _slicedToArray2[\"default\"])(_ref7, 2),\n rx = _ref8[0],\n ry = _ref8[1];\n\n return {\n r: radius,\n rx: rx,\n ry: ry\n };\n });\n}\n\nfunction getPointStyle(lineItem) {\n var color = lineItem.color,\n style = lineItem.linePoint.style;\n return (0, _util.deepMerge)({\n stroke: color\n }, style);\n}\n\nfunction getStartPointConfig(lineItem) {\n var configs = getPointConfig(lineItem);\n configs.forEach(function (config) {\n config.shape.r = 0.1;\n });\n return configs;\n}\n\nfunction getLabelConfig(lineItem) {\n var animationCurve = lineItem.animationCurve,\n animationFrame = lineItem.animationFrame,\n rLevel = lineItem.rLevel;\n var shapes = getLabelShapes(lineItem);\n var style = getLabelStyle(lineItem);\n return shapes.map(function (shape, i) {\n return {\n name: 'text',\n index: rLevel + 3,\n visible: lineItem.label.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: shape,\n style: style\n };\n });\n}\n\nfunction getLabelShapes(lineItem) {\n var contents = formatterLabel(lineItem);\n var position = getLabelPosition(lineItem);\n return contents.map(function (content, i) {\n return {\n content: content,\n position: position[i]\n };\n });\n}\n\nfunction getLabelPosition(lineItem) {\n var linePosition = lineItem.linePosition,\n lineFillBottomPos = lineItem.lineFillBottomPos,\n label = lineItem.label;\n var position = label.position,\n offset = label.offset;\n var changeIndex = lineFillBottomPos.changeIndex,\n changeValue = lineFillBottomPos.changeValue;\n return linePosition.map(function (pos) {\n if (position === 'bottom') {\n pos = (0, _toConsumableArray2[\"default\"])(pos);\n pos[changeIndex] = changeValue;\n }\n\n if (position === 'center') {\n var bottom = (0, _toConsumableArray2[\"default\"])(pos);\n bottom[changeIndex] = changeValue;\n pos = getCenterLabelPoint(pos, bottom);\n }\n\n return getOffsetedPoint(pos, offset);\n });\n}\n\nfunction getOffsetedPoint(_ref9, _ref10) {\n var _ref11 = (0, _slicedToArray2[\"default\"])(_ref9, 2),\n x = _ref11[0],\n y = _ref11[1];\n\n var _ref12 = (0, _slicedToArray2[\"default\"])(_ref10, 2),\n ox = _ref12[0],\n oy = _ref12[1];\n\n return [x + ox, y + oy];\n}\n\nfunction getCenterLabelPoint(_ref13, _ref14) {\n var _ref15 = (0, _slicedToArray2[\"default\"])(_ref13, 2),\n ax = _ref15[0],\n ay = _ref15[1];\n\n var _ref16 = (0, _slicedToArray2[\"default\"])(_ref14, 2),\n bx = _ref16[0],\n by = _ref16[1];\n\n return [(ax + bx) / 2, (ay + by) / 2];\n}\n\nfunction formatterLabel(lineItem) {\n var data = lineItem.data,\n formatter = lineItem.label.formatter;\n data = data.filter(function (d) {\n return typeof d === 'number';\n }).map(function (d) {\n return d.toString();\n });\n if (!formatter) return data;\n var type = (0, _typeof2[\"default\"])(formatter);\n if (type === 'string') return data.map(function (d) {\n return formatter.replace('{value}', d);\n });\n if (type === 'function') return data.map(function (value, index) {\n return formatter({\n value: value,\n index: index\n });\n });\n return data;\n}\n\nfunction getLabelStyle(lineItem) {\n var color = lineItem.color,\n style = lineItem.label.style;\n return (0, _util.deepMerge)({\n fill: color\n }, style);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mergeColor = mergeColor;\n\nvar _config = require(\"../config\");\n\nvar _util = require(\"@jiaminghi/c-render/lib/plugin/util\");\n\nvar _util2 = require(\"../util\");\n\nfunction mergeColor(chart) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var defaultColor = (0, _util.deepClone)(_config.colorConfig, true);\n var color = option.color,\n series = option.series;\n if (!series) series = [];\n if (!color) color = [];\n option.color = color = (0, _util2.deepMerge)(defaultColor, color);\n if (!series.length) return;\n var colorNum = color.length;\n series.forEach(function (item, i) {\n if (item.color) return;\n item.color = color[i % colorNum];\n });\n var pies = series.filter(function (_ref) {\n var type = _ref.type;\n return type === 'pie';\n });\n pies.forEach(function (pie) {\n return pie.data.forEach(function (di, i) {\n return di.color = color[i % colorNum];\n });\n });\n var gauges = series.filter(function (_ref2) {\n var type = _ref2.type;\n return type === 'gauge';\n });\n gauges.forEach(function (gauge) {\n return gauge.data.forEach(function (di, i) {\n return di.color = color[i % colorNum];\n });\n });\n var barWithIndependentColor = series.filter(function (_ref3) {\n var type = _ref3.type,\n independentColor = _ref3.independentColor;\n return type === 'bar' && independentColor;\n });\n barWithIndependentColor.forEach(function (bar) {\n if (bar.independentColors) return;\n bar.independentColors = color;\n });\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pie = pie;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _updater = require(\"../class/updater.class\");\n\nvar _pie = require(\"../config/pie\");\n\nvar _util = require(\"@jiaminghi/c-render/lib/plugin/util\");\n\nvar _util2 = require(\"../util\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction pie(chart) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var series = option.series;\n if (!series) series = [];\n var pies = (0, _util2.initNeedSeries)(series, _pie.pieConfig, 'pie');\n pies = calcPiesCenter(pies, chart);\n pies = calcPiesRadius(pies, chart);\n pies = calcRosePiesRadius(pies, chart);\n pies = calcPiesPercent(pies);\n pies = calcPiesAngle(pies, chart);\n pies = calcPiesInsideLabelPos(pies);\n pies = calcPiesEdgeCenterPos(pies);\n pies = calcPiesOutSideLabelPos(pies);\n (0, _updater.doUpdate)({\n chart: chart,\n series: pies,\n key: 'pie',\n getGraphConfig: getPieConfig,\n getStartGraphConfig: getStartPieConfig,\n beforeChange: beforeChangePie\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: pies,\n key: 'pieInsideLabel',\n getGraphConfig: getInsideLabelConfig\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: pies,\n key: 'pieOutsideLabelLine',\n getGraphConfig: getOutsideLabelLineConfig,\n getStartGraphConfig: getStartOutsideLabelLineConfig\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: pies,\n key: 'pieOutsideLabel',\n getGraphConfig: getOutsideLabelConfig,\n getStartGraphConfig: getStartOutsideLabelConfig\n });\n}\n\nfunction calcPiesCenter(pies, chart) {\n var area = chart.render.area;\n pies.forEach(function (pie) {\n var center = pie.center;\n center = center.map(function (pos, i) {\n if (typeof pos === 'number') return pos;\n return parseInt(pos) / 100 * area[i];\n });\n pie.center = center;\n });\n return pies;\n}\n\nfunction calcPiesRadius(pies, chart) {\n var maxRadius = Math.min.apply(Math, (0, _toConsumableArray2[\"default\"])(chart.render.area)) / 2;\n pies.forEach(function (pie) {\n var radius = pie.radius,\n data = pie.data;\n radius = getNumberRadius(radius, maxRadius);\n data.forEach(function (item) {\n var itemRadius = item.radius;\n if (!itemRadius) itemRadius = radius;\n itemRadius = getNumberRadius(itemRadius, maxRadius);\n item.radius = itemRadius;\n });\n pie.radius = radius;\n });\n return pies;\n}\n\nfunction getNumberRadius(radius, maxRadius) {\n if (!(radius instanceof Array)) radius = [0, radius];\n radius = radius.map(function (r) {\n if (typeof r === 'number') return r;\n return parseInt(r) / 100 * maxRadius;\n });\n return radius;\n}\n\nfunction calcRosePiesRadius(pies, chart) {\n var rosePie = pies.filter(function (_ref) {\n var roseType = _ref.roseType;\n return roseType;\n });\n rosePie.forEach(function (pie) {\n var radius = pie.radius,\n data = pie.data,\n roseSort = pie.roseSort;\n var roseIncrement = getRoseIncrement(pie);\n var dataCopy = (0, _toConsumableArray2[\"default\"])(data);\n data = sortData(data);\n data.forEach(function (item, i) {\n item.radius[1] = radius[1] - roseIncrement * i;\n });\n\n if (roseSort) {\n data.reverse();\n } else {\n pie.data = dataCopy;\n }\n\n pie.roseIncrement = roseIncrement;\n });\n return pies;\n}\n\nfunction sortData(data) {\n return data.sort(function (_ref2, _ref3) {\n var a = _ref2.value;\n var b = _ref3.value;\n if (a === b) return 0;\n if (a > b) return -1;\n if (a < b) return 1;\n });\n}\n\nfunction getRoseIncrement(pie) {\n var radius = pie.radius,\n roseIncrement = pie.roseIncrement;\n if (typeof roseIncrement === 'number') return roseIncrement;\n\n if (roseIncrement === 'auto') {\n var data = pie.data;\n var allRadius = data.reduce(function (all, _ref4) {\n var radius = _ref4.radius;\n return [].concat((0, _toConsumableArray2[\"default\"])(all), (0, _toConsumableArray2[\"default\"])(radius));\n }, []);\n var minRadius = Math.min.apply(Math, (0, _toConsumableArray2[\"default\"])(allRadius));\n var maxRadius = Math.max.apply(Math, (0, _toConsumableArray2[\"default\"])(allRadius));\n return (maxRadius - minRadius) * 0.6 / (data.length - 1 || 1);\n }\n\n return parseInt(roseIncrement) / 100 * radius[1];\n}\n\nfunction calcPiesPercent(pies) {\n pies.forEach(function (pie) {\n var data = pie.data,\n percentToFixed = pie.percentToFixed;\n var sum = getDataSum(data);\n data.forEach(function (item) {\n var value = item.value;\n item.percent = value / sum * 100;\n item.percentForLabel = toFixedNoCeil(value / sum * 100, percentToFixed);\n });\n var percentSumNoLast = (0, _util2.mulAdd)(data.slice(0, -1).map(function (_ref5) {\n var percent = _ref5.percent;\n return percent;\n }));\n data.slice(-1)[0].percent = 100 - percentSumNoLast;\n data.slice(-1)[0].percentForLabel = toFixedNoCeil(100 - percentSumNoLast, percentToFixed);\n });\n return pies;\n}\n\nfunction toFixedNoCeil(number) {\n var toFixed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var stringNumber = number.toString();\n var splitedNumber = stringNumber.split('.');\n var decimal = splitedNumber[1] || '0';\n var fixedDecimal = decimal.slice(0, toFixed);\n splitedNumber[1] = fixedDecimal;\n return parseFloat(splitedNumber.join('.'));\n}\n\nfunction getDataSum(data) {\n return (0, _util2.mulAdd)(data.map(function (_ref6) {\n var value = _ref6.value;\n return value;\n }));\n}\n\nfunction calcPiesAngle(pies) {\n pies.forEach(function (pie) {\n var start = pie.startAngle,\n data = pie.data;\n data.forEach(function (item, i) {\n var _getDataAngle = getDataAngle(data, i),\n _getDataAngle2 = (0, _slicedToArray2[\"default\"])(_getDataAngle, 2),\n startAngle = _getDataAngle2[0],\n endAngle = _getDataAngle2[1];\n\n item.startAngle = start + startAngle;\n item.endAngle = start + endAngle;\n });\n });\n return pies;\n}\n\nfunction getDataAngle(data, i) {\n var fullAngle = Math.PI * 2;\n var needAddData = data.slice(0, i + 1);\n var percentSum = (0, _util2.mulAdd)(needAddData.map(function (_ref7) {\n var percent = _ref7.percent;\n return percent;\n }));\n var percent = data[i].percent;\n var startPercent = percentSum - percent;\n return [fullAngle * startPercent / 100, fullAngle * percentSum / 100];\n}\n\nfunction calcPiesInsideLabelPos(pies) {\n pies.forEach(function (pieItem) {\n var data = pieItem.data;\n data.forEach(function (item) {\n item.insideLabelPos = getPieInsideLabelPos(pieItem, item);\n });\n });\n return pies;\n}\n\nfunction getPieInsideLabelPos(pieItem, dataItem) {\n var center = pieItem.center;\n\n var startAngle = dataItem.startAngle,\n endAngle = dataItem.endAngle,\n _dataItem$radius = (0, _slicedToArray2[\"default\"])(dataItem.radius, 2),\n ir = _dataItem$radius[0],\n or = _dataItem$radius[1];\n\n var radius = (ir + or) / 2;\n var angle = (startAngle + endAngle) / 2;\n return _util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2[\"default\"])(center).concat([radius, angle]));\n}\n\nfunction calcPiesEdgeCenterPos(pies) {\n pies.forEach(function (pie) {\n var data = pie.data,\n center = pie.center;\n data.forEach(function (item) {\n var startAngle = item.startAngle,\n endAngle = item.endAngle,\n radius = item.radius;\n var centerAngle = (startAngle + endAngle) / 2;\n\n var pos = _util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2[\"default\"])(center).concat([radius[1], centerAngle]));\n\n item.edgeCenterPos = pos;\n });\n });\n return pies;\n}\n\nfunction calcPiesOutSideLabelPos(pies) {\n pies.forEach(function (pieItem) {\n var leftPieDataItems = getLeftOrRightPieDataItems(pieItem);\n var rightPieDataItems = getLeftOrRightPieDataItems(pieItem, false);\n leftPieDataItems = sortPiesFromTopToBottom(leftPieDataItems);\n rightPieDataItems = sortPiesFromTopToBottom(rightPieDataItems);\n addLabelLineAndAlign(leftPieDataItems, pieItem);\n addLabelLineAndAlign(rightPieDataItems, pieItem, false);\n });\n return pies;\n}\n\nfunction getLabelLineBendRadius(pieItem) {\n var labelLineBendGap = pieItem.outsideLabel.labelLineBendGap;\n var maxRadius = getPieMaxRadius(pieItem);\n\n if (typeof labelLineBendGap !== 'number') {\n labelLineBendGap = parseInt(labelLineBendGap) / 100 * maxRadius;\n }\n\n return labelLineBendGap + maxRadius;\n}\n\nfunction getPieMaxRadius(pieItem) {\n var data = pieItem.data;\n var radius = data.map(function (_ref8) {\n var _ref8$radius = (0, _slicedToArray2[\"default\"])(_ref8.radius, 2),\n foo = _ref8$radius[0],\n r = _ref8$radius[1];\n\n return r;\n });\n return Math.max.apply(Math, (0, _toConsumableArray2[\"default\"])(radius));\n}\n\nfunction getLeftOrRightPieDataItems(pieItem) {\n var left = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var data = pieItem.data,\n center = pieItem.center;\n var centerXPos = center[0];\n return data.filter(function (_ref9) {\n var edgeCenterPos = _ref9.edgeCenterPos;\n var xPos = edgeCenterPos[0];\n if (left) return xPos <= centerXPos;\n return xPos > centerXPos;\n });\n}\n\nfunction sortPiesFromTopToBottom(dataItem) {\n dataItem.sort(function (_ref10, _ref11) {\n var _ref10$edgeCenterPos = (0, _slicedToArray2[\"default\"])(_ref10.edgeCenterPos, 2),\n t = _ref10$edgeCenterPos[0],\n ay = _ref10$edgeCenterPos[1];\n\n var _ref11$edgeCenterPos = (0, _slicedToArray2[\"default\"])(_ref11.edgeCenterPos, 2),\n tt = _ref11$edgeCenterPos[0],\n by = _ref11$edgeCenterPos[1];\n\n if (ay > by) return 1;\n if (ay < by) return -1;\n if (ay === by) return 0;\n });\n return dataItem;\n}\n\nfunction addLabelLineAndAlign(dataItem, pieItem) {\n var left = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var center = pieItem.center,\n outsideLabel = pieItem.outsideLabel;\n var radius = getLabelLineBendRadius(pieItem);\n dataItem.forEach(function (item) {\n var edgeCenterPos = item.edgeCenterPos,\n startAngle = item.startAngle,\n endAngle = item.endAngle;\n var labelLineEndLength = outsideLabel.labelLineEndLength;\n var angle = (startAngle + endAngle) / 2;\n\n var bendPoint = _util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2[\"default\"])(center).concat([radius, angle]));\n\n var endPoint = (0, _toConsumableArray2[\"default\"])(bendPoint);\n endPoint[0] += labelLineEndLength * (left ? -1 : 1);\n item.labelLine = [edgeCenterPos, bendPoint, endPoint];\n item.labelLineLength = (0, _util2.getPolylineLength)(item.labelLine);\n item.align = {\n textAlign: 'left',\n textBaseline: 'middle'\n };\n if (left) item.align.textAlign = 'right';\n });\n}\n\nfunction getPieConfig(pieItem) {\n var data = pieItem.data,\n animationCurve = pieItem.animationCurve,\n animationFrame = pieItem.animationFrame,\n rLevel = pieItem.rLevel;\n return data.map(function (foo, i) {\n return {\n name: 'pie',\n index: rLevel,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getPieShape(pieItem, i),\n style: getPieStyle(pieItem, i)\n };\n });\n}\n\nfunction getStartPieConfig(pieItem) {\n var animationDelayGap = pieItem.animationDelayGap,\n startAnimationCurve = pieItem.startAnimationCurve;\n var configs = getPieConfig(pieItem);\n configs.forEach(function (config, i) {\n config.animationCurve = startAnimationCurve;\n config.animationDelay = i * animationDelayGap;\n config.shape.or = config.shape.ir;\n });\n return configs;\n}\n\nfunction beforeChangePie(graph) {\n graph.animationDelay = 0;\n}\n\nfunction getPieShape(pieItem, i) {\n var center = pieItem.center,\n data = pieItem.data;\n var dataItem = data[i];\n var radius = dataItem.radius,\n startAngle = dataItem.startAngle,\n endAngle = dataItem.endAngle;\n return {\n startAngle: startAngle,\n endAngle: endAngle,\n ir: radius[0],\n or: radius[1],\n rx: center[0],\n ry: center[1]\n };\n}\n\nfunction getPieStyle(pieItem, i) {\n var pieStyle = pieItem.pieStyle,\n data = pieItem.data;\n var dataItem = data[i];\n var color = dataItem.color;\n return (0, _util2.deepMerge)({\n fill: color\n }, pieStyle);\n}\n\nfunction getInsideLabelConfig(pieItem) {\n var animationCurve = pieItem.animationCurve,\n animationFrame = pieItem.animationFrame,\n data = pieItem.data,\n rLevel = pieItem.rLevel;\n return data.map(function (foo, i) {\n return {\n name: 'text',\n index: rLevel,\n visible: pieItem.insideLabel.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getInsideLabelShape(pieItem, i),\n style: getInsideLabelStyle(pieItem, i)\n };\n });\n}\n\nfunction getInsideLabelShape(pieItem, i) {\n var insideLabel = pieItem.insideLabel,\n data = pieItem.data;\n var formatter = insideLabel.formatter;\n var dataItem = data[i];\n var formatterType = (0, _typeof2[\"default\"])(formatter);\n var label = '';\n\n if (formatterType === 'string') {\n label = formatter.replace('{name}', dataItem.name);\n label = label.replace('{percent}', dataItem.percentForLabel);\n label = label.replace('{value}', dataItem.value);\n }\n\n if (formatterType === 'function') {\n label = formatter(dataItem);\n }\n\n return {\n content: label,\n position: dataItem.insideLabelPos\n };\n}\n\nfunction getInsideLabelStyle(pieItem, i) {\n var style = pieItem.insideLabel.style;\n return style;\n}\n\nfunction getOutsideLabelLineConfig(pieItem) {\n var animationCurve = pieItem.animationCurve,\n animationFrame = pieItem.animationFrame,\n data = pieItem.data,\n rLevel = pieItem.rLevel;\n return data.map(function (foo, i) {\n return {\n name: 'polyline',\n index: rLevel,\n visible: pieItem.outsideLabel.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getOutsideLabelLineShape(pieItem, i),\n style: getOutsideLabelLineStyle(pieItem, i)\n };\n });\n}\n\nfunction getStartOutsideLabelLineConfig(pieItem) {\n var data = pieItem.data;\n var configs = getOutsideLabelLineConfig(pieItem);\n configs.forEach(function (config, i) {\n config.style.lineDash = [0, data[i].labelLineLength];\n });\n return configs;\n}\n\nfunction getOutsideLabelLineShape(pieItem, i) {\n var data = pieItem.data;\n var dataItem = data[i];\n return {\n points: dataItem.labelLine\n };\n}\n\nfunction getOutsideLabelLineStyle(pieItem, i) {\n var outsideLabel = pieItem.outsideLabel,\n data = pieItem.data;\n var labelLineStyle = outsideLabel.labelLineStyle;\n var color = data[i].color;\n return (0, _util2.deepMerge)({\n stroke: color,\n lineDash: [data[i].labelLineLength, 0]\n }, labelLineStyle);\n}\n\nfunction getOutsideLabelConfig(pieItem) {\n var animationCurve = pieItem.animationCurve,\n animationFrame = pieItem.animationFrame,\n data = pieItem.data,\n rLevel = pieItem.rLevel;\n return data.map(function (foo, i) {\n return {\n name: 'text',\n index: rLevel,\n visible: pieItem.outsideLabel.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getOutsideLabelShape(pieItem, i),\n style: getOutsideLabelStyle(pieItem, i)\n };\n });\n}\n\nfunction getStartOutsideLabelConfig(pieItem) {\n var data = pieItem.data;\n var configs = getOutsideLabelConfig(pieItem);\n configs.forEach(function (config, i) {\n config.shape.position = data[i].labelLine[1];\n });\n return configs;\n}\n\nfunction getOutsideLabelShape(pieItem, i) {\n var outsideLabel = pieItem.outsideLabel,\n data = pieItem.data;\n var formatter = outsideLabel.formatter;\n var _data$i = data[i],\n labelLine = _data$i.labelLine,\n name = _data$i.name,\n percentForLabel = _data$i.percentForLabel,\n value = _data$i.value;\n var formatterType = (0, _typeof2[\"default\"])(formatter);\n var label = '';\n\n if (formatterType === 'string') {\n label = formatter.replace('{name}', name);\n label = label.replace('{percent}', percentForLabel);\n label = label.replace('{value}', value);\n }\n\n if (formatterType === 'function') {\n label = formatter(data[i]);\n }\n\n return {\n content: label,\n position: labelLine[2]\n };\n}\n\nfunction getOutsideLabelStyle(pieItem, i) {\n var outsideLabel = pieItem.outsideLabel,\n data = pieItem.data;\n var _data$i2 = data[i],\n color = _data$i2.color,\n align = _data$i2.align;\n var style = outsideLabel.style;\n return (0, _util2.deepMerge)(_objectSpread({\n fill: color\n }, align), style);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.radar = radar;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _updater = require(\"../class/updater.class\");\n\nvar _index = require(\"../config/index\");\n\nvar _util = require(\"@jiaminghi/c-render/lib/plugin/util\");\n\nvar _color = require(\"@jiaminghi/color\");\n\nvar _util2 = require(\"../util\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction radar(chart) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var series = option.series;\n if (!series) series = [];\n var radars = (0, _util2.initNeedSeries)(series, _index.radarConfig, 'radar');\n radars = calcRadarPosition(radars, chart);\n radars = calcRadarLabelPosition(radars, chart);\n radars = calcRadarLabelAlign(radars, chart);\n (0, _updater.doUpdate)({\n chart: chart,\n series: radars,\n key: 'radar',\n getGraphConfig: getRadarConfig,\n getStartGraphConfig: getStartRadarConfig,\n beforeChange: beforeChangeRadar\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: radars,\n key: 'radarPoint',\n getGraphConfig: getPointConfig,\n getStartGraphConfig: getStartPointConfig\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: radars,\n key: 'radarLabel',\n getGraphConfig: getLabelConfig\n });\n}\n\nfunction calcRadarPosition(radars, chart) {\n var radarAxis = chart.radarAxis;\n if (!radarAxis) return [];\n var indicator = radarAxis.indicator,\n axisLineAngles = radarAxis.axisLineAngles,\n radius = radarAxis.radius,\n centerPos = radarAxis.centerPos;\n radars.forEach(function (radarItem) {\n var data = radarItem.data;\n radarItem.dataRadius = [];\n radarItem.radarPosition = indicator.map(function (_ref, i) {\n var max = _ref.max,\n min = _ref.min;\n var v = data[i];\n if (typeof max !== 'number') max = v;\n if (typeof min !== 'number') min = 0;\n if (typeof v !== 'number') v = min;\n var dataRadius = (v - min) / (max - min) * radius;\n radarItem.dataRadius[i] = dataRadius;\n return _util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2[\"default\"])(centerPos).concat([dataRadius, axisLineAngles[i]]));\n });\n });\n return radars;\n}\n\nfunction calcRadarLabelPosition(radars, chart) {\n var radarAxis = chart.radarAxis;\n if (!radarAxis) return [];\n var centerPos = radarAxis.centerPos,\n axisLineAngles = radarAxis.axisLineAngles;\n radars.forEach(function (radarItem) {\n var dataRadius = radarItem.dataRadius,\n label = radarItem.label;\n var labelGap = label.labelGap;\n radarItem.labelPosition = dataRadius.map(function (r, i) {\n return _util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2[\"default\"])(centerPos).concat([r + labelGap, axisLineAngles[i]]));\n });\n });\n return radars;\n}\n\nfunction calcRadarLabelAlign(radars, chart) {\n var radarAxis = chart.radarAxis;\n if (!radarAxis) return [];\n\n var _radarAxis$centerPos = (0, _slicedToArray2[\"default\"])(radarAxis.centerPos, 2),\n x = _radarAxis$centerPos[0],\n y = _radarAxis$centerPos[1];\n\n radars.forEach(function (radarItem) {\n var labelPosition = radarItem.labelPosition;\n var labelAlign = labelPosition.map(function (_ref2) {\n var _ref3 = (0, _slicedToArray2[\"default\"])(_ref2, 2),\n lx = _ref3[0],\n ly = _ref3[1];\n\n var textAlign = lx > x ? 'left' : 'right';\n var textBaseline = ly > y ? 'top' : 'bottom';\n return {\n textAlign: textAlign,\n textBaseline: textBaseline\n };\n });\n radarItem.labelAlign = labelAlign;\n });\n return radars;\n}\n\nfunction getRadarConfig(radarItem) {\n var animationCurve = radarItem.animationCurve,\n animationFrame = radarItem.animationFrame,\n rLevel = radarItem.rLevel;\n return [{\n name: 'polyline',\n index: rLevel,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getRadarShape(radarItem),\n style: getRadarStyle(radarItem)\n }];\n}\n\nfunction getStartRadarConfig(radarItem, updater) {\n var centerPos = updater.chart.radarAxis.centerPos;\n var config = getRadarConfig(radarItem)[0];\n var pointNum = config.shape.points.length;\n var points = new Array(pointNum).fill(0).map(function (foo) {\n return (0, _toConsumableArray2[\"default\"])(centerPos);\n });\n config.shape.points = points;\n return [config];\n}\n\nfunction getRadarShape(radarItem) {\n var radarPosition = radarItem.radarPosition;\n return {\n points: radarPosition,\n close: true\n };\n}\n\nfunction getRadarStyle(radarItem) {\n var radarStyle = radarItem.radarStyle,\n color = radarItem.color;\n var colorRgbaValue = (0, _color.getRgbaValue)(color);\n colorRgbaValue[3] = 0.5;\n var radarDefaultColor = {\n stroke: color,\n fill: (0, _color.getColorFromRgbValue)(colorRgbaValue)\n };\n return (0, _util2.deepMerge)(radarDefaultColor, radarStyle);\n}\n\nfunction beforeChangeRadar(graph, _ref4) {\n var shape = _ref4.shape;\n var graphPoints = graph.shape.points;\n var graphPointsNum = graphPoints.length;\n var pointsNum = shape.points.length;\n\n if (pointsNum > graphPointsNum) {\n var lastPoint = graphPoints.slice(-1)[0];\n var newAddPoints = new Array(pointsNum - graphPointsNum).fill(0).map(function (foo) {\n return (0, _toConsumableArray2[\"default\"])(lastPoint);\n });\n graphPoints.push.apply(graphPoints, (0, _toConsumableArray2[\"default\"])(newAddPoints));\n } else if (pointsNum < graphPointsNum) {\n graphPoints.splice(pointsNum);\n }\n}\n\nfunction getPointConfig(radarItem) {\n var radarPosition = radarItem.radarPosition,\n animationCurve = radarItem.animationCurve,\n animationFrame = radarItem.animationFrame,\n rLevel = radarItem.rLevel;\n return radarPosition.map(function (foo, i) {\n return {\n name: 'circle',\n index: rLevel,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n visible: radarItem.point.show,\n shape: getPointShape(radarItem, i),\n style: getPointStyle(radarItem, i)\n };\n });\n}\n\nfunction getStartPointConfig(radarItem) {\n var configs = getPointConfig(radarItem);\n configs.forEach(function (config) {\n return config.shape.r = 0.01;\n });\n return configs;\n}\n\nfunction getPointShape(radarItem, i) {\n var radarPosition = radarItem.radarPosition,\n point = radarItem.point;\n var radius = point.radius;\n var position = radarPosition[i];\n return {\n rx: position[0],\n ry: position[1],\n r: radius\n };\n}\n\nfunction getPointStyle(radarItem, i) {\n var point = radarItem.point,\n color = radarItem.color;\n var style = point.style;\n return (0, _util2.deepMerge)({\n stroke: color\n }, style);\n}\n\nfunction getLabelConfig(radarItem) {\n var labelPosition = radarItem.labelPosition,\n animationCurve = radarItem.animationCurve,\n animationFrame = radarItem.animationFrame,\n rLevel = radarItem.rLevel;\n return labelPosition.map(function (foo, i) {\n return {\n name: 'text',\n index: rLevel,\n visible: radarItem.label.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getLabelShape(radarItem, i),\n style: getLabelStyle(radarItem, i)\n };\n });\n}\n\nfunction getLabelShape(radarItem, i) {\n var labelPosition = radarItem.labelPosition,\n label = radarItem.label,\n data = radarItem.data;\n var offset = label.offset,\n formatter = label.formatter;\n var position = mergePointOffset(labelPosition[i], offset);\n var labelText = data[i] ? data[i].toString() : '0';\n var formatterType = (0, _typeof2[\"default\"])(formatter);\n if (formatterType === 'string') labelText = formatter.replace('{value}', labelText);\n if (formatterType === 'function') labelText = formatter(labelText);\n return {\n content: labelText,\n position: position\n };\n}\n\nfunction mergePointOffset(_ref5, _ref6) {\n var _ref7 = (0, _slicedToArray2[\"default\"])(_ref5, 2),\n x = _ref7[0],\n y = _ref7[1];\n\n var _ref8 = (0, _slicedToArray2[\"default\"])(_ref6, 2),\n ox = _ref8[0],\n oy = _ref8[1];\n\n return [x + ox, y + oy];\n}\n\nfunction getLabelStyle(radarItem, i) {\n var label = radarItem.label,\n color = radarItem.color,\n labelAlign = radarItem.labelAlign;\n var style = label.style;\n\n var defaultColorAndAlign = _objectSpread({\n fill: color\n }, labelAlign[i]);\n\n return (0, _util2.deepMerge)(defaultColorAndAlign, style);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.radarAxis = radarAxis;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _updater = require(\"../class/updater.class\");\n\nvar _index = require(\"../config/index\");\n\nvar _util = require(\"@jiaminghi/c-render/lib/plugin/util\");\n\nvar _util2 = require(\"../util\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction radarAxis(chart) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var radar = option.radar;\n var radarAxis = [];\n\n if (radar) {\n radarAxis = mergeRadarAxisDefaultConfig(radar);\n radarAxis = calcRadarAxisCenter(radarAxis, chart);\n radarAxis = calcRadarAxisRingRadius(radarAxis, chart);\n radarAxis = calcRadarAxisLinePosition(radarAxis);\n radarAxis = calcRadarAxisAreaRadius(radarAxis);\n radarAxis = calcRadarAxisLabelPosition(radarAxis);\n radarAxis = [radarAxis];\n }\n\n var radarAxisForUpdate = radarAxis;\n if (radarAxis.length && !radarAxis[0].show) radarAxisForUpdate = [];\n (0, _updater.doUpdate)({\n chart: chart,\n series: radarAxisForUpdate,\n key: 'radarAxisSplitArea',\n getGraphConfig: getSplitAreaConfig,\n beforeUpdate: beforeUpdateSplitArea,\n beforeChange: beforeChangeSplitArea\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: radarAxisForUpdate,\n key: 'radarAxisSplitLine',\n getGraphConfig: getSplitLineConfig,\n beforeUpdate: beforeUpdateSplitLine,\n beforeChange: beforeChangeSplitLine\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: radarAxisForUpdate,\n key: 'radarAxisLine',\n getGraphConfig: getAxisLineConfig\n });\n (0, _updater.doUpdate)({\n chart: chart,\n series: radarAxisForUpdate,\n key: 'radarAxisLable',\n getGraphConfig: getAxisLabelConfig\n });\n chart.radarAxis = radarAxis[0];\n}\n\nfunction mergeRadarAxisDefaultConfig(radar) {\n return (0, _util2.deepMerge)((0, _util.deepClone)(_index.radarAxisConfig), radar);\n}\n\nfunction calcRadarAxisCenter(radarAxis, chart) {\n var area = chart.render.area;\n var center = radarAxis.center;\n radarAxis.centerPos = center.map(function (v, i) {\n if (typeof v === 'number') return v;\n return parseInt(v) / 100 * area[i];\n });\n return radarAxis;\n}\n\nfunction calcRadarAxisRingRadius(radarAxis, chart) {\n var area = chart.render.area;\n var splitNum = radarAxis.splitNum,\n radius = radarAxis.radius;\n var maxRadius = Math.min.apply(Math, (0, _toConsumableArray2[\"default\"])(area)) / 2;\n if (typeof radius !== 'number') radius = parseInt(radius) / 100 * maxRadius;\n var splitGap = radius / splitNum;\n radarAxis.ringRadius = new Array(splitNum).fill(0).map(function (foo, i) {\n return splitGap * (i + 1);\n });\n radarAxis.radius = radius;\n return radarAxis;\n}\n\nfunction calcRadarAxisLinePosition(radarAxis) {\n var indicator = radarAxis.indicator,\n centerPos = radarAxis.centerPos,\n radius = radarAxis.radius,\n startAngle = radarAxis.startAngle;\n var fullAngle = Math.PI * 2;\n var indicatorNum = indicator.length;\n var indicatorGap = fullAngle / indicatorNum;\n var angles = new Array(indicatorNum).fill(0).map(function (foo, i) {\n return indicatorGap * i + startAngle;\n });\n radarAxis.axisLineAngles = angles;\n radarAxis.axisLinePosition = angles.map(function (g) {\n return _util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2[\"default\"])(centerPos).concat([radius, g]));\n });\n return radarAxis;\n}\n\nfunction calcRadarAxisAreaRadius(radarAxis) {\n var ringRadius = radarAxis.ringRadius;\n var subRadius = ringRadius[0] / 2;\n radarAxis.areaRadius = ringRadius.map(function (r) {\n return r - subRadius;\n });\n return radarAxis;\n}\n\nfunction calcRadarAxisLabelPosition(radarAxis) {\n var axisLineAngles = radarAxis.axisLineAngles,\n centerPos = radarAxis.centerPos,\n radius = radarAxis.radius,\n axisLabel = radarAxis.axisLabel;\n radius += axisLabel.labelGap;\n radarAxis.axisLabelPosition = axisLineAngles.map(function (angle) {\n return _util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2[\"default\"])(centerPos).concat([radius, angle]));\n });\n return radarAxis;\n}\n\nfunction getSplitAreaConfig(radarAxis) {\n var areaRadius = radarAxis.areaRadius,\n polygon = radarAxis.polygon,\n animationCurve = radarAxis.animationCurve,\n animationFrame = radarAxis.animationFrame,\n rLevel = radarAxis.rLevel;\n var name = polygon ? 'regPolygon' : 'ring';\n return areaRadius.map(function (foo, i) {\n return {\n name: name,\n index: rLevel,\n visible: radarAxis.splitArea.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getSplitAreaShape(radarAxis, i),\n style: getSplitAreaStyle(radarAxis, i)\n };\n });\n}\n\nfunction getSplitAreaShape(radarAxis, i) {\n var polygon = radarAxis.polygon,\n areaRadius = radarAxis.areaRadius,\n indicator = radarAxis.indicator,\n centerPos = radarAxis.centerPos;\n var indicatorNum = indicator.length;\n var shape = {\n rx: centerPos[0],\n ry: centerPos[1],\n r: areaRadius[i]\n };\n if (polygon) shape.side = indicatorNum;\n return shape;\n}\n\nfunction getSplitAreaStyle(radarAxis, i) {\n var splitArea = radarAxis.splitArea,\n ringRadius = radarAxis.ringRadius,\n axisLineAngles = radarAxis.axisLineAngles,\n polygon = radarAxis.polygon,\n centerPos = radarAxis.centerPos;\n var color = splitArea.color,\n style = splitArea.style;\n style = _objectSpread({\n fill: 'rgba(0, 0, 0, 0)'\n }, style);\n var lineWidth = ringRadius[0] - 0;\n\n if (polygon) {\n var point1 = _util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2[\"default\"])(centerPos).concat([ringRadius[0], axisLineAngles[0]]));\n\n var point2 = _util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2[\"default\"])(centerPos).concat([ringRadius[0], axisLineAngles[1]]));\n\n lineWidth = (0, _util2.getPointToLineDistance)(centerPos, point1, point2);\n }\n\n style = (0, _util2.deepMerge)((0, _util.deepClone)(style, true), {\n lineWidth: lineWidth\n });\n if (!color.length) return style;\n var colorNum = color.length;\n return (0, _util2.deepMerge)(style, {\n stroke: color[i % colorNum]\n });\n}\n\nfunction beforeUpdateSplitArea(graphs, radarAxis, i, updater) {\n var cache = graphs[i];\n if (!cache) return;\n var render = updater.chart.render;\n var polygon = radarAxis.polygon;\n var name = cache[0].name;\n var currentName = polygon ? 'regPolygon' : 'ring';\n var delAll = currentName !== name;\n if (!delAll) return;\n cache.forEach(function (g) {\n return render.delGraph(g);\n });\n graphs[i] = null;\n}\n\nfunction beforeChangeSplitArea(graph, config) {\n var side = config.shape.side;\n if (typeof side !== 'number') return;\n graph.shape.side = side;\n}\n\nfunction getSplitLineConfig(radarAxis) {\n var ringRadius = radarAxis.ringRadius,\n polygon = radarAxis.polygon,\n animationCurve = radarAxis.animationCurve,\n animationFrame = radarAxis.animationFrame,\n rLevel = radarAxis.rLevel;\n var name = polygon ? 'regPolygon' : 'ring';\n return ringRadius.map(function (foo, i) {\n return {\n name: name,\n index: rLevel,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n visible: radarAxis.splitLine.show,\n shape: getSplitLineShape(radarAxis, i),\n style: getSplitLineStyle(radarAxis, i)\n };\n });\n}\n\nfunction getSplitLineShape(radarAxis, i) {\n var ringRadius = radarAxis.ringRadius,\n centerPos = radarAxis.centerPos,\n indicator = radarAxis.indicator,\n polygon = radarAxis.polygon;\n var shape = {\n rx: centerPos[0],\n ry: centerPos[1],\n r: ringRadius[i]\n };\n var indicatorNum = indicator.length;\n if (polygon) shape.side = indicatorNum;\n return shape;\n}\n\nfunction getSplitLineStyle(radarAxis, i) {\n var splitLine = radarAxis.splitLine;\n var color = splitLine.color,\n style = splitLine.style;\n style = _objectSpread({\n fill: 'rgba(0, 0, 0, 0)'\n }, style);\n if (!color.length) return style;\n var colorNum = color.length;\n return (0, _util2.deepMerge)(style, {\n stroke: color[i % colorNum]\n });\n}\n\nfunction beforeUpdateSplitLine(graphs, radarAxis, i, updater) {\n var cache = graphs[i];\n if (!cache) return;\n var render = updater.chart.render;\n var polygon = radarAxis.polygon;\n var name = cache[0].name;\n var currenName = polygon ? 'regPolygon' : 'ring';\n var delAll = currenName !== name;\n if (!delAll) return;\n cache.forEach(function (g) {\n return render.delGraph(g);\n });\n graphs[i] = null;\n}\n\nfunction beforeChangeSplitLine(graph, config) {\n var side = config.shape.side;\n if (typeof side !== 'number') return;\n graph.shape.side = side;\n}\n\nfunction getAxisLineConfig(radarAxis) {\n var axisLinePosition = radarAxis.axisLinePosition,\n animationCurve = radarAxis.animationCurve,\n animationFrame = radarAxis.animationFrame,\n rLevel = radarAxis.rLevel;\n return axisLinePosition.map(function (foo, i) {\n return {\n name: 'polyline',\n index: rLevel,\n visible: radarAxis.axisLine.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getAxisLineShape(radarAxis, i),\n style: getAxisLineStyle(radarAxis, i)\n };\n });\n}\n\nfunction getAxisLineShape(radarAxis, i) {\n var centerPos = radarAxis.centerPos,\n axisLinePosition = radarAxis.axisLinePosition;\n var points = [centerPos, axisLinePosition[i]];\n return {\n points: points\n };\n}\n\nfunction getAxisLineStyle(radarAxis, i) {\n var axisLine = radarAxis.axisLine;\n var color = axisLine.color,\n style = axisLine.style;\n if (!color.length) return style;\n var colorNum = color.length;\n return (0, _util2.deepMerge)(style, {\n stroke: color[i % colorNum]\n });\n}\n\nfunction getAxisLabelConfig(radarAxis) {\n var axisLabelPosition = radarAxis.axisLabelPosition,\n animationCurve = radarAxis.animationCurve,\n animationFrame = radarAxis.animationFrame,\n rLevel = radarAxis.rLevel;\n return axisLabelPosition.map(function (foo, i) {\n return {\n name: 'text',\n index: rLevel,\n visible: radarAxis.axisLabel.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: getAxisLableShape(radarAxis, i),\n style: getAxisLableStyle(radarAxis, i)\n };\n });\n}\n\nfunction getAxisLableShape(radarAxis, i) {\n var axisLabelPosition = radarAxis.axisLabelPosition,\n indicator = radarAxis.indicator;\n return {\n content: indicator[i].name,\n position: axisLabelPosition[i]\n };\n}\n\nfunction getAxisLableStyle(radarAxis, i) {\n var axisLabel = radarAxis.axisLabel,\n _radarAxis$centerPos = (0, _slicedToArray2[\"default\"])(radarAxis.centerPos, 2),\n x = _radarAxis$centerPos[0],\n y = _radarAxis$centerPos[1],\n axisLabelPosition = radarAxis.axisLabelPosition;\n\n var color = axisLabel.color,\n style = axisLabel.style;\n\n var _axisLabelPosition$i = (0, _slicedToArray2[\"default\"])(axisLabelPosition[i], 2),\n labelXpos = _axisLabelPosition$i[0],\n labelYPos = _axisLabelPosition$i[1];\n\n var textAlign = labelXpos > x ? 'left' : 'right';\n var textBaseline = labelYPos > y ? 'top' : 'bottom';\n style = (0, _util2.deepMerge)({\n textAlign: textAlign,\n textBaseline: textBaseline\n }, style);\n if (!color.length) return style;\n var colorNum = color.length;\n return (0, _util2.deepMerge)(style, {\n fill: color[i % colorNum]\n });\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.title = title;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _updater = require(\"../class/updater.class\");\n\nvar _util = require(\"@jiaminghi/c-render/lib/plugin/util\");\n\nvar _config = require(\"../config\");\n\nvar _util2 = require(\"../util\");\n\nfunction title(chart) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var title = [];\n\n if (option.title) {\n title[0] = (0, _util2.deepMerge)((0, _util.deepClone)(_config.titleConfig, true), option.title);\n }\n\n (0, _updater.doUpdate)({\n chart: chart,\n series: title,\n key: 'title',\n getGraphConfig: getTitleConfig\n });\n}\n\nfunction getTitleConfig(titleItem, updater) {\n var animationCurve = _config.titleConfig.animationCurve,\n animationFrame = _config.titleConfig.animationFrame,\n rLevel = _config.titleConfig.rLevel;\n var shape = getTitleShape(titleItem, updater);\n var style = getTitleStyle(titleItem);\n return [{\n name: 'text',\n index: rLevel,\n visible: titleItem.show,\n animationCurve: animationCurve,\n animationFrame: animationFrame,\n shape: shape,\n style: style\n }];\n}\n\nfunction getTitleShape(titleItem, updater) {\n var offset = titleItem.offset,\n text = titleItem.text;\n var _updater$chart$gridAr = updater.chart.gridArea,\n x = _updater$chart$gridAr.x,\n y = _updater$chart$gridAr.y,\n w = _updater$chart$gridAr.w;\n\n var _offset = (0, _slicedToArray2[\"default\"])(offset, 2),\n ox = _offset[0],\n oy = _offset[1];\n\n return {\n content: text,\n position: [x + w / 2 + ox, y + oy]\n };\n}\n\nfunction getTitleStyle(titleItem) {\n var style = titleItem.style;\n return style;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _cRender = require(\"@jiaminghi/c-render\");\n\nvar _graphs = require(\"@jiaminghi/c-render/lib/config/graphs\");\n\nvar _util = require(\"@jiaminghi/c-render/lib/plugin/util\");\n\nvar _color = require(\"@jiaminghi/color\");\n\nvar _index = require(\"../util/index\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar pie = {\n shape: {\n rx: 0,\n ry: 0,\n ir: 0,\n or: 0,\n startAngle: 0,\n endAngle: 0,\n clockWise: true\n },\n validator: function validator(_ref) {\n var shape = _ref.shape;\n var keys = ['rx', 'ry', 'ir', 'or', 'startAngle', 'endAngle'];\n\n if (keys.find(function (key) {\n return typeof shape[key] !== 'number';\n })) {\n console.error('Pie shape configuration is abnormal!');\n return false;\n }\n\n return true;\n },\n draw: function draw(_ref2, _ref3) {\n var ctx = _ref2.ctx;\n var shape = _ref3.shape;\n ctx.beginPath();\n var rx = shape.rx,\n ry = shape.ry,\n ir = shape.ir,\n or = shape.or,\n startAngle = shape.startAngle,\n endAngle = shape.endAngle,\n clockWise = shape.clockWise;\n rx = parseInt(rx) + 0.5;\n ry = parseInt(ry) + 0.5;\n ctx.arc(rx, ry, ir > 0 ? ir : 0, startAngle, endAngle, !clockWise);\n var connectPoint1 = (0, _util.getCircleRadianPoint)(rx, ry, or, endAngle).map(function (p) {\n return parseInt(p) + 0.5;\n });\n var connectPoint2 = (0, _util.getCircleRadianPoint)(rx, ry, ir, startAngle).map(function (p) {\n return parseInt(p) + 0.5;\n });\n ctx.lineTo.apply(ctx, (0, _toConsumableArray2[\"default\"])(connectPoint1));\n ctx.arc(rx, ry, or > 0 ? or : 0, endAngle, startAngle, clockWise);\n ctx.lineTo.apply(ctx, (0, _toConsumableArray2[\"default\"])(connectPoint2));\n ctx.closePath();\n ctx.stroke();\n ctx.fill();\n }\n};\nvar agArc = {\n shape: {\n rx: 0,\n ry: 0,\n r: 0,\n startAngle: 0,\n endAngle: 0,\n gradientStartAngle: null,\n gradientEndAngle: null\n },\n validator: function validator(_ref4) {\n var shape = _ref4.shape;\n var keys = ['rx', 'ry', 'r', 'startAngle', 'endAngle'];\n\n if (keys.find(function (key) {\n return typeof shape[key] !== 'number';\n })) {\n console.error('AgArc shape configuration is abnormal!');\n return false;\n }\n\n return true;\n },\n draw: function draw(_ref5, _ref6) {\n var ctx = _ref5.ctx;\n var shape = _ref6.shape,\n style = _ref6.style;\n var gradient = style.gradient;\n gradient = gradient.map(function (cv) {\n return (0, _color.getColorFromRgbValue)(cv);\n });\n\n if (gradient.length === 1) {\n gradient = [gradient[0], gradient[0]];\n }\n\n var gradientArcNum = gradient.length - 1;\n var gradientStartAngle = shape.gradientStartAngle,\n gradientEndAngle = shape.gradientEndAngle,\n startAngle = shape.startAngle,\n endAngle = shape.endAngle,\n r = shape.r,\n rx = shape.rx,\n ry = shape.ry;\n if (gradientStartAngle === null) gradientStartAngle = startAngle;\n if (gradientEndAngle === null) gradientEndAngle = endAngle;\n var angleGap = (gradientEndAngle - gradientStartAngle) / gradientArcNum;\n if (angleGap === Math.PI * 2) angleGap = Math.PI * 2 - 0.001;\n\n for (var i = 0; i < gradientArcNum; i++) {\n ctx.beginPath();\n var startPoint = (0, _util.getCircleRadianPoint)(rx, ry, r, startAngle + angleGap * i);\n var endPoint = (0, _util.getCircleRadianPoint)(rx, ry, r, startAngle + angleGap * (i + 1));\n var color = (0, _index.getLinearGradientColor)(ctx, startPoint, endPoint, [gradient[i], gradient[i + 1]]);\n var arcStartAngle = startAngle + angleGap * i;\n var arcEndAngle = startAngle + angleGap * (i + 1);\n var doBreak = false;\n\n if (arcEndAngle > endAngle) {\n arcEndAngle = endAngle;\n doBreak = true;\n }\n\n ctx.arc(rx, ry, r, arcStartAngle, arcEndAngle);\n ctx.strokeStyle = color;\n ctx.stroke();\n if (doBreak) break;\n }\n }\n};\nvar numberText = {\n shape: {\n number: [],\n content: '',\n position: [0, 0],\n toFixed: 0,\n rowGap: 0,\n formatter: null\n },\n validator: function validator(_ref7) {\n var shape = _ref7.shape;\n var number = shape.number,\n content = shape.content,\n position = shape.position;\n\n if (!(number instanceof Array) || typeof content !== 'string' || !(position instanceof Array)) {\n console.error('NumberText shape configuration is abnormal!');\n return false;\n }\n\n return true;\n },\n draw: function draw(_ref8, _ref9) {\n var ctx = _ref8.ctx;\n var shape = _ref9.shape;\n var number = shape.number,\n content = shape.content,\n toFixed = shape.toFixed,\n rowGap = shape.rowGap,\n formatter = shape.formatter;\n var textSegments = content.split('{nt}');\n var textString = '';\n textSegments.forEach(function (t, i) {\n var currentNumber = number[i];\n if (typeof currentNumber !== 'number') currentNumber = '';\n\n if (typeof currentNumber === 'number') {\n currentNumber = currentNumber.toFixed(toFixed);\n if (typeof formatter === 'function') currentNumber = formatter(currentNumber);\n }\n\n textString += t + (currentNumber || '');\n });\n\n _graphs.text.draw({\n ctx: ctx\n }, {\n shape: _objectSpread(_objectSpread({}, shape), {}, {\n content: textString,\n rowGap: rowGap\n })\n });\n }\n};\nvar lineIcon = {\n shape: {\n x: 0,\n y: 0,\n w: 0,\n h: 0\n },\n validator: function validator(_ref10) {\n var shape = _ref10.shape;\n var x = shape.x,\n y = shape.y,\n w = shape.w,\n h = shape.h;\n\n if (typeof x !== 'number' || typeof y !== 'number' || typeof w !== 'number' || typeof h !== 'number') {\n console.error('lineIcon shape configuration is abnormal!');\n return false;\n }\n\n return true;\n },\n draw: function draw(_ref11, _ref12) {\n var ctx = _ref11.ctx;\n var shape = _ref12.shape;\n ctx.beginPath();\n var x = shape.x,\n y = shape.y,\n w = shape.w,\n h = shape.h;\n var halfH = h / 2;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.moveTo(x, y + halfH);\n ctx.lineTo(x + w, y + halfH);\n ctx.lineWidth = 1;\n ctx.stroke();\n ctx.beginPath();\n var radius = halfH - 5 * 2;\n if (radius <= 0) radius = 3;\n ctx.arc(x + w / 2, y + halfH, radius, 0, Math.PI * 2);\n ctx.lineWidth = 5;\n ctx.stroke();\n ctx.fillStyle = '#fff';\n ctx.fill();\n },\n hoverCheck: function hoverCheck(position, _ref13) {\n var shape = _ref13.shape;\n var x = shape.x,\n y = shape.y,\n w = shape.w,\n h = shape.h;\n return (0, _util.checkPointIsInRect)(position, x, y, w, h);\n },\n setGraphCenter: function setGraphCenter(e, _ref14) {\n var shape = _ref14.shape,\n style = _ref14.style;\n var x = shape.x,\n y = shape.y,\n w = shape.w,\n h = shape.h;\n style.graphCenter = [x + w / 2, y + h / 2];\n }\n};\n(0, _cRender.extendNewGraph)('pie', pie);\n(0, _cRender.extendNewGraph)('agArc', agArc);\n(0, _cRender.extendNewGraph)('numberText', numberText);\n(0, _cRender.extendNewGraph)('lineIcon', lineIcon);","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"changeDefaultConfig\", {\n enumerable: true,\n get: function get() {\n return _config.changeDefaultConfig;\n }\n});\nexports[\"default\"] = void 0;\n\nvar _charts = _interopRequireDefault(require(\"./class/charts.class\"));\n\nvar _config = require(\"./config\");\n\nvar _default = _charts[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.filterNonNumber = filterNonNumber;\nexports.deepMerge = deepMerge;\nexports.mulAdd = mulAdd;\nexports.mergeSameStackData = mergeSameStackData;\nexports.getTwoPointDistance = getTwoPointDistance;\nexports.getLinearGradientColor = getLinearGradientColor;\nexports.getPolylineLength = getPolylineLength;\nexports.getPointToLineDistance = getPointToLineDistance;\nexports.initNeedSeries = initNeedSeries;\nexports.radianToAngle = radianToAngle;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _util = require(\"@jiaminghi/c-render/lib/plugin/util\");\n\nfunction filterNonNumber(array) {\n return array.filter(function (n) {\n return typeof n === 'number';\n });\n}\n\nfunction deepMerge(target, merged) {\n for (var key in merged) {\n if (target[key] && (0, _typeof2[\"default\"])(target[key]) === 'object') {\n deepMerge(target[key], merged[key]);\n continue;\n }\n\n if ((0, _typeof2[\"default\"])(merged[key]) === 'object') {\n target[key] = (0, _util.deepClone)(merged[key], true);\n continue;\n }\n\n target[key] = merged[key];\n }\n\n return target;\n}\n\nfunction mulAdd(nums) {\n nums = filterNonNumber(nums);\n return nums.reduce(function (all, num) {\n return all + num;\n }, 0);\n}\n\nfunction mergeSameStackData(item, series) {\n var stack = item.stack;\n if (!stack) return (0, _toConsumableArray2[\"default\"])(item.data);\n var stacks = series.filter(function (_ref) {\n var s = _ref.stack;\n return s === stack;\n });\n var index = stacks.findIndex(function (_ref2) {\n var d = _ref2.data;\n return d === item.data;\n });\n var datas = stacks.splice(0, index + 1).map(function (_ref3) {\n var data = _ref3.data;\n return data;\n });\n var dataLength = datas[0].length;\n return new Array(dataLength).fill(0).map(function (foo, i) {\n return mulAdd(datas.map(function (d) {\n return d[i];\n }));\n });\n}\n\nfunction getTwoPointDistance(pointOne, pointTwo) {\n var minusX = Math.abs(pointOne[0] - pointTwo[0]);\n var minusY = Math.abs(pointOne[1] - pointTwo[1]);\n return Math.sqrt(minusX * minusX + minusY * minusY);\n}\n\nfunction getLinearGradientColor(ctx, begin, end, color) {\n if (!ctx || !begin || !end || !color.length) return;\n var colors = color;\n typeof colors === 'string' && (colors = [color, color]);\n var linearGradientColor = ctx.createLinearGradient.apply(ctx, (0, _toConsumableArray2[\"default\"])(begin).concat((0, _toConsumableArray2[\"default\"])(end)));\n var colorGap = 1 / (colors.length - 1);\n colors.forEach(function (c, i) {\n return linearGradientColor.addColorStop(colorGap * i, c);\n });\n return linearGradientColor;\n}\n\nfunction getPolylineLength(points) {\n var lineSegments = new Array(points.length - 1).fill(0).map(function (foo, i) {\n return [points[i], points[i + 1]];\n });\n var lengths = lineSegments.map(function (item) {\n return getTwoPointDistance.apply(void 0, (0, _toConsumableArray2[\"default\"])(item));\n });\n return mulAdd(lengths);\n}\n\nfunction getPointToLineDistance(point, linePointOne, linePointTwo) {\n var a = getTwoPointDistance(point, linePointOne);\n var b = getTwoPointDistance(point, linePointTwo);\n var c = getTwoPointDistance(linePointOne, linePointTwo);\n return 0.5 * Math.sqrt((a + b + c) * (a + b - c) * (a + c - b) * (b + c - a)) / c;\n}\n\nfunction initNeedSeries(series, config, type) {\n series = series.filter(function (_ref4) {\n var st = _ref4.type;\n return st === type;\n });\n series = series.map(function (item) {\n return deepMerge((0, _util.deepClone)(config, true), item);\n });\n return series.filter(function (_ref5) {\n var show = _ref5.show;\n return show;\n });\n}\n\nfunction radianToAngle(radian) {\n return radian / Math.PI * 180;\n}","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"dv-active-ring-chart\"},[_c('div',{ref:\"active-ring-chart\",staticClass:\"active-ring-chart-container\"}),_c('div',{staticClass:\"active-ring-info\"},[_c('dv-digital-flop',{attrs:{\"config\":_vm.digitalFlop}}),_c('div',{staticClass:\"active-ring-name\",style:(_vm.fontSize)},[_vm._v(_vm._s(_vm.ringName))])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"dv-digital-flop\"},[_c('canvas',{ref:\"digital-flop\"})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=9d55478c\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=0cd75252\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport ActiveRingChart from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(ActiveRingChart.name, ActiveRingChart)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-border-box-1\"},[_c('svg',{staticClass:\"border\",attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('polygon',{attrs:{\"fill\":_vm.backgroundColor,\"points\":`10, 27 10, ${_vm.height - 27} 13, ${_vm.height - 24} 13, ${_vm.height - 21} 24, ${_vm.height - 11}\n 38, ${_vm.height - 11} 41, ${_vm.height - 8} 73, ${_vm.height - 8} 75, ${_vm.height - 10} 81, ${_vm.height - 10}\n 85, ${_vm.height - 6} ${_vm.width - 85}, ${_vm.height - 6} ${_vm.width - 81}, ${_vm.height - 10} ${_vm.width - 75}, ${_vm.height - 10}\n ${_vm.width - 73}, ${_vm.height - 8} ${_vm.width - 41}, ${_vm.height - 8} ${_vm.width - 38}, ${_vm.height - 11}\n ${_vm.width - 24}, ${_vm.height - 11} ${_vm.width - 13}, ${_vm.height - 21} ${_vm.width - 13}, ${_vm.height - 24}\n ${_vm.width - 10}, ${_vm.height - 27} ${_vm.width - 10}, 27 ${_vm.width - 13}, 25 ${_vm.width - 13}, 21\n ${_vm.width - 24}, 11 ${_vm.width - 38}, 11 ${_vm.width - 41}, 8 ${_vm.width - 73}, 8 ${_vm.width - 75}, 10\n ${_vm.width - 81}, 10 ${_vm.width - 85}, 6 85, 6 81, 10 75, 10 73, 8 41, 8 38, 11 24, 11 13, 21 13, 24`}})]),_vm._l((_vm.border),function(item){return _c('svg',{key:item,class:`${item} border`,attrs:{\"width\":\"150px\",\"height\":\"150px\"}},[_c('polygon',{attrs:{\"fill\":_vm.mergedColor[0],\"points\":\"6,66 6,18 12,12 18,12 24,6 27,6 30,9 36,9 39,6 84,6 81,9 75,9 73.2,7 40.8,7 37.8,10.2 24,10.2 12,21 12,24 9,27 9,51 7.8,54 7.8,63\"}},[_c('animate',{attrs:{\"attributeName\":\"fill\",\"values\":`${_vm.mergedColor[0]};${_vm.mergedColor[1]};${_vm.mergedColor[0]}`,\"dur\":\"0.5s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\"}})]),_c('polygon',{attrs:{\"fill\":_vm.mergedColor[1],\"points\":\"27.599999999999998,4.8 38.4,4.8 35.4,7.8 30.599999999999998,7.8\"}},[_c('animate',{attrs:{\"attributeName\":\"fill\",\"values\":`${_vm.mergedColor[1]};${_vm.mergedColor[0]};${_vm.mergedColor[1]}`,\"dur\":\"0.5s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\"}})]),_c('polygon',{attrs:{\"fill\":_vm.mergedColor[0],\"points\":\"9,54 9,63 7.199999999999999,66 7.199999999999999,75 7.8,78 7.8,110 8.4,110 8.4,66 9.6,66 9.6,54\"}},[_c('animate',{attrs:{\"attributeName\":\"fill\",\"values\":`${_vm.mergedColor[0]};${_vm.mergedColor[1]};transparent`,\"dur\":\"1s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\"}})])])}),_c('div',{staticClass:\"border-box-content\"},[_vm._t(\"default\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export function randomExtend (minNum, maxNum) {\n if (arguments.length === 1) {\n return parseInt(Math.random() * minNum + 1, 10)\n } else {\n return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10)\n }\n}\n\nexport function debounce (delay, callback) {\n let lastTime\n\n return function () {\n clearTimeout(lastTime)\n\n const [that, args] = [this, arguments]\n\n lastTime = setTimeout(() => {\n callback.apply(that, args)\n }, delay)\n }\n}\n\nexport function observerDomResize (dom, callback) {\n const MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver\n\n const observer = new MutationObserver(callback)\n\n observer.observe(dom, { attributes: true, attributeFilter: ['style'], attributeOldValue: true })\n\n return observer\n}\n\nexport function getPointDistance (pointOne, pointTwo) {\n const minusX = Math.abs(pointOne[0] - pointTwo[0])\n\n const minusY = Math.abs(pointOne[1] - pointTwo[1])\n\n return Math.sqrt(minusX * minusX + minusY * minusY)\n}\n\nexport function uuid (hasHyphen) {\n return (hasHyphen ? 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' : 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx').replace(/[xy]/g, function (c) {\n\t\tconst r = Math.random() * 16 | 0\n\t\tconst v = c == 'x' ? r : (r & 0x3 | 0x8)\n\t\treturn v.toString(16)\n })\n}\n","import { debounce, observerDomResize } from '../util/index'\n\nexport default {\n data () {\n return {\n dom: '',\n\n width: 0,\n height: 0,\n\n debounceInitWHFun: '',\n\n domObserver: ''\n }\n },\n methods: {\n async autoResizeMixinInit () {\n const { initWH, getDebounceInitWHFun, bindDomResizeCallback, afterAutoResizeMixinInit } = this\n\n await initWH(false)\n\n getDebounceInitWHFun()\n\n bindDomResizeCallback()\n\n if (typeof afterAutoResizeMixinInit === 'function') afterAutoResizeMixinInit()\n },\n initWH (resize = true) {\n const { $nextTick, $refs, ref, onResize } = this\n\n return new Promise(resolve => {\n $nextTick(_ => {\n const dom = this.dom = $refs[ref]\n\n this.width = dom ? dom.clientWidth : 0\n this.height = dom ? dom.clientHeight : 0\n\n if (!dom) {\n console.warn('DataV: Failed to get dom node, component rendering may be abnormal!')\n } else if (!this.width || !this.height) {\n console.warn('DataV: Component width or height is 0px, rendering abnormality may occur!')\n }\n\n if (typeof onResize === 'function' && resize) onResize()\n\n resolve()\n })\n })\n },\n getDebounceInitWHFun () {\n const { initWH } = this\n\n this.debounceInitWHFun = debounce(100, initWH)\n },\n bindDomResizeCallback () {\n const { dom, debounceInitWHFun } = this\n\n this.domObserver = observerDomResize(dom, debounceInitWHFun)\n\n window.addEventListener('resize', debounceInitWHFun)\n },\n unbindDomResizeCallback () {\n let { domObserver, debounceInitWHFun } = this\n\n if (!domObserver) return\n\n domObserver.disconnect()\n domObserver.takeRecords()\n domObserver = null\n\n window.removeEventListener('resize', debounceInitWHFun)\n }\n },\n mounted () {\n const { autoResizeMixinInit } = this\n\n autoResizeMixinInit()\n },\n beforeDestroy () {\n const { unbindDomResizeCallback } = this\n\n unbindDomResizeCallback()\n }\n}\n","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=205f0004\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport BorderBox1 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(BorderBox1.name, BorderBox1)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-border-box-10\",style:(`box-shadow: inset 0 0 25px 3px ${_vm.mergedColor[0]}`)},[_c('svg',{staticClass:\"dv-border-svg-container\",attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('polygon',{attrs:{\"fill\":_vm.backgroundColor,\"points\":`\n 4, 0 ${_vm.width - 4}, 0 ${_vm.width}, 4 ${_vm.width}, ${_vm.height - 4} ${_vm.width - 4}, ${_vm.height}\n 4, ${_vm.height} 0, ${_vm.height - 4} 0, 4\n `}})]),_vm._l((_vm.border),function(item){return _c('svg',{key:item,class:`${item} dv-border-svg-container`,attrs:{\"width\":\"150px\",\"height\":\"150px\"}},[_c('polygon',{attrs:{\"fill\":_vm.mergedColor[1],\"points\":\"40, 0 5, 0 0, 5 0, 16 3, 19 3, 7 7, 3 35, 3\"}})])}),_c('div',{staticClass:\"border-box-content\"},[_vm._t(\"default\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=de1fc3cc\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport BorderBox10 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(BorderBox10.name, BorderBox10)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-border-box-11\"},[_c('svg',{staticClass:\"dv-border-svg-container\",attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('defs',[_c('filter',{attrs:{\"id\":_vm.filterId,\"height\":\"150%\",\"width\":\"150%\",\"x\":\"-25%\",\"y\":\"-25%\"}},[_c('feMorphology',{attrs:{\"operator\":\"dilate\",\"radius\":\"2\",\"in\":\"SourceAlpha\",\"result\":\"thicken\"}}),_c('feGaussianBlur',{attrs:{\"in\":\"thicken\",\"stdDeviation\":\"3\",\"result\":\"blurred\"}}),_c('feFlood',{attrs:{\"flood-color\":_vm.mergedColor[1],\"result\":\"glowColor\"}}),_c('feComposite',{attrs:{\"in\":\"glowColor\",\"in2\":\"blurred\",\"operator\":\"in\",\"result\":\"softGlowColored\"}}),_c('feMerge',[_c('feMergeNode',{attrs:{\"in\":\"softGlowColored\"}}),_c('feMergeNode',{attrs:{\"in\":\"SourceGraphic\"}})],1)],1)]),_c('polygon',{attrs:{\"fill\":_vm.backgroundColor,\"points\":`\n 20, 32 ${_vm.width * 0.5 - _vm.titleWidth / 2}, 32 ${_vm.width * 0.5 - _vm.titleWidth / 2 + 20}, 53\n ${_vm.width * 0.5 + _vm.titleWidth / 2 - 20}, 53 ${_vm.width * 0.5 + _vm.titleWidth / 2}, 32\n ${_vm.width - 20}, 32 ${_vm.width - 8}, 48 ${_vm.width - 8}, ${_vm.height - 25} ${_vm.width - 20}, ${_vm.height - 8}\n 20, ${_vm.height - 8} 8, ${_vm.height - 25} 8, 50\n `}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"filter\":`url(#${_vm.filterId})`,\"points\":`\n ${(_vm.width - _vm.titleWidth) / 2}, 30\n 20, 30 7, 50 7, ${50 + (_vm.height - 167) / 2}\n 13, ${55 + (_vm.height - 167) / 2} 13, ${135 + (_vm.height - 167) / 2}\n 7, ${140 + (_vm.height - 167) / 2} 7, ${_vm.height - 27}\n 20, ${_vm.height - 7} ${_vm.width - 20}, ${_vm.height - 7} ${_vm.width - 7}, ${_vm.height - 27}\n ${_vm.width - 7}, ${140 + (_vm.height - 167) / 2} ${_vm.width - 13}, ${135 + (_vm.height - 167) / 2}\n ${_vm.width - 13}, ${55 + (_vm.height - 167) / 2} ${_vm.width - 7}, ${50 + (_vm.height - 167) / 2}\n ${_vm.width - 7}, 50 ${_vm.width - 20}, 30 ${(_vm.width + _vm.titleWidth) / 2}, 30\n ${(_vm.width + _vm.titleWidth) / 2 - 20}, 7 ${(_vm.width - _vm.titleWidth) / 2 + 20}, 7\n ${(_vm.width - _vm.titleWidth) / 2}, 30 ${(_vm.width - _vm.titleWidth) / 2 + 20}, 52\n ${(_vm.width + _vm.titleWidth) / 2 - 20}, 52 ${(_vm.width + _vm.titleWidth) / 2}, 30\n `}}),_c('polygon',{attrs:{\"stroke\":_vm.mergedColor[0],\"fill\":\"transparent\",\"points\":`\n ${(_vm.width + _vm.titleWidth) / 2 - 5}, 30 ${(_vm.width + _vm.titleWidth) / 2 - 21}, 11\n ${(_vm.width + _vm.titleWidth) / 2 - 27}, 11 ${(_vm.width + _vm.titleWidth) / 2 - 8}, 34\n `}}),_c('polygon',{attrs:{\"stroke\":_vm.mergedColor[0],\"fill\":\"transparent\",\"points\":`\n ${(_vm.width - _vm.titleWidth) / 2 + 5}, 30 ${(_vm.width - _vm.titleWidth) / 2 + 22}, 49\n ${(_vm.width - _vm.titleWidth) / 2 + 28}, 49 ${(_vm.width - _vm.titleWidth) / 2 + 8}, 26\n `}}),_c('polygon',{attrs:{\"stroke\":_vm.mergedColor[0],\"fill\":_vm.fade(_vm.mergedColor[1] || _vm.defaultColor[1], 30),\"filter\":`url(#${_vm.filterId})`,\"points\":`\n ${(_vm.width + _vm.titleWidth) / 2 - 11}, 37 ${(_vm.width + _vm.titleWidth) / 2 - 32}, 11\n ${(_vm.width - _vm.titleWidth) / 2 + 23}, 11 ${(_vm.width - _vm.titleWidth) / 2 + 11}, 23\n ${(_vm.width - _vm.titleWidth) / 2 + 33}, 49 ${(_vm.width + _vm.titleWidth) / 2 - 22}, 49\n `}}),_c('polygon',{attrs:{\"filter\":`url(#${_vm.filterId})`,\"fill\":_vm.mergedColor[0],\"opacity\":\"1\",\"points\":`\n ${(_vm.width - _vm.titleWidth) / 2 - 10}, 37 ${(_vm.width - _vm.titleWidth) / 2 - 31}, 37\n ${(_vm.width - _vm.titleWidth) / 2 - 25}, 46 ${(_vm.width - _vm.titleWidth) / 2 - 4}, 46\n `}},[_c('animate',{attrs:{\"attributeName\":\"opacity\",\"values\":\"1;0.7;1\",\"dur\":\"2s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\"}})]),_c('polygon',{attrs:{\"filter\":`url(#${_vm.filterId})`,\"fill\":_vm.mergedColor[0],\"opacity\":\"0.7\",\"points\":`\n ${(_vm.width - _vm.titleWidth) / 2 - 40}, 37 ${(_vm.width - _vm.titleWidth) / 2 - 61}, 37\n ${(_vm.width - _vm.titleWidth) / 2 - 55}, 46 ${(_vm.width - _vm.titleWidth) / 2 - 34}, 46\n `}},[_c('animate',{attrs:{\"attributeName\":\"opacity\",\"values\":\"0.7;0.4;0.7\",\"dur\":\"2s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\"}})]),_c('polygon',{attrs:{\"filter\":`url(#${_vm.filterId})`,\"fill\":_vm.mergedColor[0],\"opacity\":\"0.5\",\"points\":`\n ${(_vm.width - _vm.titleWidth) / 2 - 70}, 37 ${(_vm.width - _vm.titleWidth) / 2 - 91}, 37\n ${(_vm.width - _vm.titleWidth) / 2 - 85}, 46 ${(_vm.width - _vm.titleWidth) / 2 - 64}, 46\n `}},[_c('animate',{attrs:{\"attributeName\":\"opacity\",\"values\":\"0.5;0.2;0.5\",\"dur\":\"2s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\"}})]),_c('polygon',{attrs:{\"filter\":`url(#${_vm.filterId})`,\"fill\":_vm.mergedColor[0],\"opacity\":\"1\",\"points\":`\n ${(_vm.width + _vm.titleWidth) / 2 + 30}, 37 ${(_vm.width + _vm.titleWidth) / 2 + 9}, 37\n ${(_vm.width + _vm.titleWidth) / 2 + 3}, 46 ${(_vm.width + _vm.titleWidth) / 2 + 24}, 46\n `}},[_c('animate',{attrs:{\"attributeName\":\"opacity\",\"values\":\"1;0.7;1\",\"dur\":\"2s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\"}})]),_c('polygon',{attrs:{\"filter\":`url(#${_vm.filterId})`,\"fill\":_vm.mergedColor[0],\"opacity\":\"0.7\",\"points\":`\n ${(_vm.width + _vm.titleWidth) / 2 + 60}, 37 ${(_vm.width + _vm.titleWidth) / 2 + 39}, 37\n ${(_vm.width + _vm.titleWidth) / 2 + 33}, 46 ${(_vm.width + _vm.titleWidth) / 2 + 54}, 46\n `}},[_c('animate',{attrs:{\"attributeName\":\"opacity\",\"values\":\"0.7;0.4;0.7\",\"dur\":\"2s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\"}})]),_c('polygon',{attrs:{\"filter\":`url(#${_vm.filterId})`,\"fill\":_vm.mergedColor[0],\"opacity\":\"0.5\",\"points\":`\n ${(_vm.width + _vm.titleWidth) / 2 + 90}, 37 ${(_vm.width + _vm.titleWidth) / 2 + 69}, 37\n ${(_vm.width + _vm.titleWidth) / 2 + 63}, 46 ${(_vm.width + _vm.titleWidth) / 2 + 84}, 46\n `}},[_c('animate',{attrs:{\"attributeName\":\"opacity\",\"values\":\"0.5;0.2;0.5\",\"dur\":\"2s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\"}})]),_c('text',{staticClass:\"dv-border-box-11-title\",attrs:{\"x\":`${_vm.width / 2}`,\"y\":\"32\",\"fill\":\"#fff\",\"font-size\":\"18\",\"text-anchor\":\"middle\",\"dominant-baseline\":\"middle\"}},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c('polygon',{attrs:{\"fill\":_vm.mergedColor[0],\"filter\":`url(#${_vm.filterId})`,\"points\":`\n 7, ${53 + (_vm.height - 167) / 2} 11, ${57 + (_vm.height - 167) / 2}\n 11, ${133 + (_vm.height - 167) / 2} 7, ${137 + (_vm.height - 167) / 2}\n `}}),_c('polygon',{attrs:{\"fill\":_vm.mergedColor[0],\"filter\":`url(#${_vm.filterId})`,\"points\":`\n ${_vm.width - 7}, ${53 + (_vm.height - 167) / 2} ${_vm.width - 11}, ${57 + (_vm.height - 167) / 2}\n ${_vm.width - 11}, ${133 + (_vm.height - 167) / 2} ${_vm.width - 7}, ${137 + (_vm.height - 167) / 2}\n `}})]),_c('div',{staticClass:\"border-box-content\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=c3ee2428\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport BorderBox11 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(BorderBox11.name, BorderBox11)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-border-box-12\"},[_c('svg',{staticClass:\"dv-border-svg-container\",attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('defs',[_c('filter',{attrs:{\"id\":_vm.filterId,\"height\":\"150%\",\"width\":\"150%\",\"x\":\"-25%\",\"y\":\"-25%\"}},[_c('feMorphology',{attrs:{\"operator\":\"dilate\",\"radius\":\"1\",\"in\":\"SourceAlpha\",\"result\":\"thicken\"}}),_c('feGaussianBlur',{attrs:{\"in\":\"thicken\",\"stdDeviation\":\"2\",\"result\":\"blurred\"}}),_c('feFlood',{attrs:{\"flood-color\":_vm.fade(_vm.mergedColor[1] || _vm.defaultColor[1], 70),\"result\":\"glowColor\"}},[_c('animate',{attrs:{\"attributeName\":\"flood-color\",\"values\":`\n ${_vm.fade(_vm.mergedColor[1] || _vm.defaultColor[1], 70)};\n ${_vm.fade(_vm.mergedColor[1] || _vm.defaultColor[1], 30)};\n ${_vm.fade(_vm.mergedColor[1] || _vm.defaultColor[1], 70)};\n `,\"dur\":\"3s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\"}})]),_c('feComposite',{attrs:{\"in\":\"glowColor\",\"in2\":\"blurred\",\"operator\":\"in\",\"result\":\"softGlowColored\"}}),_c('feMerge',[_c('feMergeNode',{attrs:{\"in\":\"softGlowColored\"}}),_c('feMergeNode',{attrs:{\"in\":\"SourceGraphic\"}})],1)],1)]),(_vm.width && _vm.height)?_c('path',{attrs:{\"fill\":_vm.backgroundColor,\"stroke-width\":\"2\",\"stroke\":_vm.mergedColor[0],\"d\":`\n M15 5 L ${_vm.width - 15} 5 Q ${_vm.width - 5} 5, ${_vm.width - 5} 15\n L ${_vm.width - 5} ${_vm.height - 15} Q ${_vm.width - 5} ${_vm.height - 5}, ${_vm.width - 15} ${_vm.height - 5}\n L 15, ${_vm.height - 5} Q 5 ${_vm.height - 5} 5 ${_vm.height - 15} L 5 15\n Q 5 5 15 5\n `}}):_vm._e(),_c('path',{attrs:{\"stroke-width\":\"2\",\"fill\":\"transparent\",\"stroke-linecap\":\"round\",\"filter\":`url(#${_vm.filterId})`,\"stroke\":_vm.mergedColor[1],\"d\":`M 20 5 L 15 5 Q 5 5 5 15 L 5 20`}}),_c('path',{attrs:{\"stroke-width\":\"2\",\"fill\":\"transparent\",\"stroke-linecap\":\"round\",\"filter\":`url(#${_vm.filterId})`,\"stroke\":_vm.mergedColor[1],\"d\":`M ${_vm.width - 20} 5 L ${_vm.width - 15} 5 Q ${_vm.width - 5} 5 ${_vm.width - 5} 15 L ${_vm.width - 5} 20`}}),_c('path',{attrs:{\"stroke-width\":\"2\",\"fill\":\"transparent\",\"stroke-linecap\":\"round\",\"filter\":`url(#${_vm.filterId})`,\"stroke\":_vm.mergedColor[1],\"d\":`\n M ${_vm.width - 20} ${_vm.height - 5} L ${_vm.width - 15} ${_vm.height - 5}\n Q ${_vm.width - 5} ${_vm.height - 5} ${_vm.width - 5} ${_vm.height - 15}\n L ${_vm.width - 5} ${_vm.height - 20}\n `}}),_c('path',{attrs:{\"stroke-width\":\"2\",\"fill\":\"transparent\",\"stroke-linecap\":\"round\",\"filter\":`url(#${_vm.filterId})`,\"stroke\":_vm.mergedColor[1],\"d\":`\n M 20 ${_vm.height - 5} L 15 ${_vm.height - 5}\n Q 5 ${_vm.height - 5} 5 ${_vm.height - 15}\n L 5 ${_vm.height - 20}\n `}})]),_c('div',{staticClass:\"border-box-content\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=460c1118\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport BorderBox12 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(BorderBox12.name, BorderBox12)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-border-box-13\"},[_c('svg',{staticClass:\"dv-border-svg-container\",attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('path',{attrs:{\"fill\":_vm.backgroundColor,\"stroke\":_vm.mergedColor[0],\"d\":`\n M 5 20 L 5 10 L 12 3 L 60 3 L 68 10\n L ${_vm.width - 20} 10 L ${_vm.width - 5} 25\n L ${_vm.width - 5} ${_vm.height - 5} L 20 ${_vm.height - 5}\n L 5 ${_vm.height - 20} L 5 20\n `}}),_c('path',{attrs:{\"fill\":\"transparent\",\"stroke-width\":\"3\",\"stroke-linecap\":\"round\",\"stroke-dasharray\":\"10, 5\",\"stroke\":_vm.mergedColor[0],\"d\":`M 16 9 L 61 9`}}),_c('path',{attrs:{\"fill\":\"transparent\",\"stroke\":_vm.mergedColor[1],\"d\":`M 5 20 L 5 10 L 12 3 L 60 3 L 68 10`}}),_c('path',{attrs:{\"fill\":\"transparent\",\"stroke\":_vm.mergedColor[1],\"d\":`M ${_vm.width - 5} ${_vm.height - 30} L ${_vm.width - 5} ${_vm.height - 5} L ${_vm.width - 30} ${_vm.height - 5}`}})]),_c('div',{staticClass:\"border-box-content\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=886c55d0\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport BorderBox13 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(BorderBox13.name, BorderBox13)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-border-box-2\"},[_c('svg',{staticClass:\"dv-border-svg-container\",attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('polygon',{attrs:{\"fill\":_vm.backgroundColor,\"points\":`\n 7, 7 ${_vm.width - 7}, 7 ${_vm.width - 7}, ${_vm.height - 7} 7, ${_vm.height - 7}\n `}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`2, 2 ${_vm.width - 2} ,2 ${_vm.width - 2}, ${_vm.height - 2} 2, ${_vm.height - 2} 2, 2`}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`6, 6 ${_vm.width - 6}, 6 ${_vm.width - 6}, ${_vm.height - 6} 6, ${_vm.height - 6} 6, 6`}}),_c('circle',{attrs:{\"fill\":_vm.mergedColor[0],\"cx\":\"11\",\"cy\":\"11\",\"r\":\"1\"}}),_c('circle',{attrs:{\"fill\":_vm.mergedColor[0],\"cx\":_vm.width - 11,\"cy\":\"11\",\"r\":\"1\"}}),_c('circle',{attrs:{\"fill\":_vm.mergedColor[0],\"cx\":_vm.width - 11,\"cy\":_vm.height - 11,\"r\":\"1\"}}),_c('circle',{attrs:{\"fill\":_vm.mergedColor[0],\"cx\":\"11\",\"cy\":_vm.height - 11,\"r\":\"1\"}})]),_c('div',{staticClass:\"border-box-content\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=7ed8b580\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport BorderBox2 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(BorderBox2.name, BorderBox2)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-border-box-3\"},[_c('svg',{staticClass:\"dv-border-svg-container\",attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('polygon',{attrs:{\"fill\":_vm.backgroundColor,\"points\":`\n 23, 23 ${_vm.width - 24}, 23 ${_vm.width - 24}, ${_vm.height - 24} 23, ${_vm.height - 24}\n `}}),_c('polyline',{staticClass:\"dv-bb3-line1\",attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`4, 4 ${_vm.width - 22} ,4 ${_vm.width - 22}, ${_vm.height - 22} 4, ${_vm.height - 22} 4, 4`}}),_c('polyline',{staticClass:\"dv-bb3-line2\",attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`10, 10 ${_vm.width - 16}, 10 ${_vm.width - 16}, ${_vm.height - 16} 10, ${_vm.height - 16} 10, 10`}}),_c('polyline',{staticClass:\"dv-bb3-line2\",attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`16, 16 ${_vm.width - 10}, 16 ${_vm.width - 10}, ${_vm.height - 10} 16, ${_vm.height - 10} 16, 16`}}),_c('polyline',{staticClass:\"dv-bb3-line2\",attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`22, 22 ${_vm.width - 4}, 22 ${_vm.width - 4}, ${_vm.height - 4} 22, ${_vm.height - 4} 22, 22`}})]),_c('div',{staticClass:\"border-box-content\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=580afe41\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport BorderBox3 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(BorderBox3.name, BorderBox3)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-border-box-4\"},[_c('svg',{class:`dv-border-svg-container ${_vm.reverse && 'dv-reverse'}`,attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('polygon',{attrs:{\"fill\":_vm.backgroundColor,\"points\":`\n ${_vm.width - 15}, 22 170, 22 150, 7 40, 7 28, 21 32, 24\n 16, 42 16, ${_vm.height - 32} 41, ${_vm.height - 7} ${_vm.width - 15}, ${_vm.height - 7}\n `}}),_c('polyline',{staticClass:\"dv-bb4-line-1\",attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`145, ${_vm.height - 5} 40, ${_vm.height - 5} 10, ${_vm.height - 35}\n 10, 40 40, 5 150, 5 170, 20 ${_vm.width - 15}, 20`}}),_c('polyline',{staticClass:\"dv-bb4-line-2\",attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`245, ${_vm.height - 1} 36, ${_vm.height - 1} 14, ${_vm.height - 23}\n 14, ${_vm.height - 100}`}}),_c('polyline',{staticClass:\"dv-bb4-line-3\",attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`7, ${_vm.height - 40} 7, ${_vm.height - 75}`}}),_c('polyline',{staticClass:\"dv-bb4-line-4\",attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`28, 24 13, 41 13, 64`}}),_c('polyline',{staticClass:\"dv-bb4-line-5\",attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`5, 45 5, 140`}}),_c('polyline',{staticClass:\"dv-bb4-line-6\",attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`14, 75 14, 180`}}),_c('polyline',{staticClass:\"dv-bb4-line-7\",attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`55, 11 147, 11 167, 26 250, 26`}}),_c('polyline',{staticClass:\"dv-bb4-line-8\",attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`158, 5 173, 16`}}),_c('polyline',{staticClass:\"dv-bb4-line-9\",attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`200, 17 ${_vm.width - 10}, 17`}}),_c('polyline',{staticClass:\"dv-bb4-line-10\",attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`385, 17 ${_vm.width - 10}, 17`}})]),_c('div',{staticClass:\"border-box-content\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=a5527428\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport BorderBox4 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(BorderBox4.name, BorderBox4)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-border-box-5\"},[_c('svg',{class:`dv-border-svg-container ${_vm.reverse && 'dv-reverse'}`,attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('polygon',{attrs:{\"fill\":_vm.backgroundColor,\"points\":`\n 10, 22 ${_vm.width - 22}, 22 ${_vm.width - 22}, ${_vm.height - 86} ${_vm.width - 84}, ${_vm.height - 24} 10, ${_vm.height - 24}\n `}}),_c('polyline',{staticClass:\"dv-bb5-line-1\",attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`8, 5 ${_vm.width - 5}, 5 ${_vm.width - 5}, ${_vm.height - 100}\n ${_vm.width - 100}, ${_vm.height - 5} 8, ${_vm.height - 5} 8, 5`}}),_c('polyline',{staticClass:\"dv-bb5-line-2\",attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`3, 5 ${_vm.width - 20}, 5 ${_vm.width - 20}, ${_vm.height - 60}\n ${_vm.width - 74}, ${_vm.height - 5} 3, ${_vm.height - 5} 3, 5`}}),_c('polyline',{staticClass:\"dv-bb5-line-3\",attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`50, 13 ${_vm.width - 35}, 13`}}),_c('polyline',{staticClass:\"dv-bb5-line-4\",attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`15, 20 ${_vm.width - 35}, 20`}}),_c('polyline',{staticClass:\"dv-bb5-line-5\",attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`15, ${_vm.height - 20} ${_vm.width - 110}, ${_vm.height - 20}`}}),_c('polyline',{staticClass:\"dv-bb5-line-6\",attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`15, ${_vm.height - 13} ${_vm.width - 110}, ${_vm.height - 13}`}})]),_c('div',{staticClass:\"border-box-content\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=435731f8\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport BorderBox5 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(BorderBox5.name, BorderBox5)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-border-box-6\"},[_c('svg',{staticClass:\"dv-border-svg-container\",attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('polygon',{attrs:{\"fill\":_vm.backgroundColor,\"points\":`\n 9, 7 ${_vm.width - 9}, 7 ${_vm.width - 9}, ${_vm.height - 7} 9, ${_vm.height - 7}\n `}}),_c('circle',{attrs:{\"fill\":_vm.mergedColor[1],\"cx\":\"5\",\"cy\":\"5\",\"r\":\"2\"}}),_c('circle',{attrs:{\"fill\":_vm.mergedColor[1],\"cx\":_vm.width - 5,\"cy\":\"5\",\"r\":\"2\"}}),_c('circle',{attrs:{\"fill\":_vm.mergedColor[1],\"cx\":_vm.width - 5,\"cy\":_vm.height - 5,\"r\":\"2\"}}),_c('circle',{attrs:{\"fill\":_vm.mergedColor[1],\"cx\":\"5\",\"cy\":_vm.height - 5,\"r\":\"2\"}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`10, 4 ${_vm.width - 10}, 4`}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`10, ${_vm.height - 4} ${_vm.width - 10}, ${_vm.height - 4}`}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`5, 70 5, ${_vm.height - 70}`}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`${_vm.width - 5}, 70 ${_vm.width - 5}, ${_vm.height - 70}`}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`3, 10, 3, 50`}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`7, 30 7, 80`}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`${_vm.width - 3}, 10 ${_vm.width - 3}, 50`}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`${_vm.width - 7}, 30 ${_vm.width - 7}, 80`}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`3, ${_vm.height - 10} 3, ${_vm.height - 50}`}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`7, ${_vm.height - 30} 7, ${_vm.height - 80}`}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`${_vm.width - 3}, ${_vm.height - 10} ${_vm.width - 3}, ${_vm.height - 50}`}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`${_vm.width - 7}, ${_vm.height - 30} ${_vm.width - 7}, ${_vm.height - 80}`}})]),_c('div',{staticClass:\"border-box-content\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=7de3177e\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport BorderBox6 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(BorderBox6.name, BorderBox6)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-border-box-7\",style:(`box-shadow: inset 0 0 40px ${_vm.mergedColor[0]}; border: 1px solid ${_vm.mergedColor[0]}; background-color: ${_vm.backgroundColor}`)},[_c('svg',{staticClass:\"dv-border-svg-container\",attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('polyline',{staticClass:\"dv-bb7-line-width-2\",attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`0, 25 0, 0 25, 0`}}),_c('polyline',{staticClass:\"dv-bb7-line-width-2\",attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`${_vm.width - 25}, 0 ${_vm.width}, 0 ${_vm.width}, 25`}}),_c('polyline',{staticClass:\"dv-bb7-line-width-2\",attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`${_vm.width - 25}, ${_vm.height} ${_vm.width}, ${_vm.height} ${_vm.width}, ${_vm.height - 25}`}}),_c('polyline',{staticClass:\"dv-bb7-line-width-2\",attrs:{\"stroke\":_vm.mergedColor[0],\"points\":`0, ${_vm.height - 25} 0, ${_vm.height} 25, ${_vm.height}`}}),_c('polyline',{staticClass:\"dv-bb7-line-width-5\",attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`0, 10 0, 0 10, 0`}}),_c('polyline',{staticClass:\"dv-bb7-line-width-5\",attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`${_vm.width - 10}, 0 ${_vm.width}, 0 ${_vm.width}, 10`}}),_c('polyline',{staticClass:\"dv-bb7-line-width-5\",attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`${_vm.width - 10}, ${_vm.height} ${_vm.width}, ${_vm.height} ${_vm.width}, ${_vm.height - 10}`}}),_c('polyline',{staticClass:\"dv-bb7-line-width-5\",attrs:{\"stroke\":_vm.mergedColor[1],\"points\":`0, ${_vm.height - 10} 0, ${_vm.height} 10, ${_vm.height}`}})]),_c('div',{staticClass:\"border-box-content\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=3897f12e\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport BorderBox7 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(BorderBox7.name, BorderBox7)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-border-box-8\"},[_c('svg',{staticClass:\"dv-border-svg-container\",attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('defs',[_c('path',{attrs:{\"id\":_vm.path,\"d\":_vm.pathD,\"fill\":\"transparent\"}}),_c('radialGradient',{attrs:{\"id\":_vm.gradient,\"cx\":\"50%\",\"cy\":\"50%\",\"r\":\"50%\"}},[_c('stop',{attrs:{\"offset\":\"0%\",\"stop-color\":\"#fff\",\"stop-opacity\":\"1\"}}),_c('stop',{attrs:{\"offset\":\"100%\",\"stop-color\":\"#fff\",\"stop-opacity\":\"0\"}})],1),_c('mask',{attrs:{\"id\":_vm.mask}},[_c('circle',{attrs:{\"cx\":\"0\",\"cy\":\"0\",\"r\":\"150\",\"fill\":`url(#${_vm.gradient})`}},[_c('animateMotion',{attrs:{\"dur\":`${_vm.dur}s`,\"path\":_vm.pathD,\"rotate\":\"auto\",\"repeatCount\":\"indefinite\"}})],1)])],1),_c('polygon',{attrs:{\"fill\":_vm.backgroundColor,\"points\":`5, 5 ${_vm.width - 5}, 5 ${_vm.width - 5} ${_vm.height - 5} 5, ${_vm.height - 5}`}}),_c('use',{attrs:{\"stroke\":_vm.mergedColor[0],\"stroke-width\":\"1\",\"xlink:href\":`#${_vm.path}`}}),_c('use',{attrs:{\"stroke\":_vm.mergedColor[1],\"stroke-width\":\"3\",\"xlink:href\":`#${_vm.path}`,\"mask\":`url(#${_vm.mask})`}},[_c('animate',{attrs:{\"attributeName\":\"stroke-dasharray\",\"from\":`0, ${_vm.length}`,\"to\":`${_vm.length}, 0`,\"dur\":`${_vm.dur}s`,\"repeatCount\":\"indefinite\"}})])]),_c('div',{staticClass:\"border-box-content\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=667924e2\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport BorderBox8 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(BorderBox8.name, BorderBox8)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-border-box-9\"},[_c('svg',{staticClass:\"dv-border-svg-container\",attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('defs',[_c('linearGradient',{attrs:{\"id\":_vm.gradientId,\"x1\":\"0%\",\"y1\":\"0%\",\"x2\":\"100%\",\"y2\":\"100%\"}},[_c('animate',{attrs:{\"attributeName\":\"x1\",\"values\":\"0%;100%;0%\",\"dur\":\"10s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\"}}),_c('animate',{attrs:{\"attributeName\":\"x2\",\"values\":\"100%;0%;100%\",\"dur\":\"10s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\"}}),_c('stop',{attrs:{\"offset\":\"0%\",\"stop-color\":_vm.mergedColor[0]}},[_c('animate',{attrs:{\"attributeName\":\"stop-color\",\"values\":`${_vm.mergedColor[0]};${_vm.mergedColor[1]};${_vm.mergedColor[0]}`,\"dur\":\"10s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\"}})]),_c('stop',{attrs:{\"offset\":\"100%\",\"stop-color\":_vm.mergedColor[1]}},[_c('animate',{attrs:{\"attributeName\":\"stop-color\",\"values\":`${_vm.mergedColor[1]};${_vm.mergedColor[0]};${_vm.mergedColor[1]}`,\"dur\":\"10s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\"}})])],1),_c('mask',{attrs:{\"id\":_vm.maskId}},[_c('polyline',{attrs:{\"stroke\":\"#fff\",\"stroke-width\":\"3\",\"fill\":\"transparent\",\"points\":`8, ${_vm.height * 0.4} 8, 3, ${_vm.width * 0.4 + 7}, 3`}}),_c('polyline',{attrs:{\"fill\":\"#fff\",\"points\":`8, ${_vm.height * 0.15} 8, 3, ${_vm.width * 0.1 + 7}, 3\n ${_vm.width * 0.1}, 8 14, 8 14, ${_vm.height * 0.15 - 7}\n `}}),_c('polyline',{attrs:{\"stroke\":\"#fff\",\"stroke-width\":\"3\",\"fill\":\"transparent\",\"points\":`${_vm.width * 0.5}, 3 ${_vm.width - 3}, 3, ${_vm.width - 3}, ${_vm.height * 0.25}`}}),_c('polyline',{attrs:{\"fill\":\"#fff\",\"points\":`\n ${_vm.width * 0.52}, 3 ${_vm.width * 0.58}, 3\n ${_vm.width * 0.58 - 7}, 9 ${_vm.width * 0.52 + 7}, 9\n `}}),_c('polyline',{attrs:{\"fill\":\"#fff\",\"points\":`\n ${_vm.width * 0.9}, 3 ${_vm.width - 3}, 3 ${_vm.width - 3}, ${_vm.height * 0.1}\n ${_vm.width - 9}, ${_vm.height * 0.1 - 7} ${_vm.width - 9}, 9 ${_vm.width * 0.9 + 7}, 9\n `}}),_c('polyline',{attrs:{\"stroke\":\"#fff\",\"stroke-width\":\"3\",\"fill\":\"transparent\",\"points\":`8, ${_vm.height * 0.5} 8, ${_vm.height - 3} ${_vm.width * 0.3 + 7}, ${_vm.height - 3}`}}),_c('polyline',{attrs:{\"fill\":\"#fff\",\"points\":`\n 8, ${_vm.height * 0.55} 8, ${_vm.height * 0.7}\n 2, ${_vm.height * 0.7 - 7} 2, ${_vm.height * 0.55 + 7}\n `}}),_c('polyline',{attrs:{\"stroke\":\"#fff\",\"stroke-width\":\"3\",\"fill\":\"transparent\",\"points\":`${_vm.width * 0.35}, ${_vm.height - 3} ${_vm.width - 3}, ${_vm.height - 3} ${_vm.width - 3}, ${_vm.height * 0.35}`}}),_c('polyline',{attrs:{\"fill\":\"#fff\",\"points\":`\n ${_vm.width * 0.92}, ${_vm.height - 3} ${_vm.width - 3}, ${_vm.height - 3} ${_vm.width - 3}, ${_vm.height * 0.8}\n ${_vm.width - 9}, ${_vm.height * 0.8 + 7} ${_vm.width - 9}, ${_vm.height - 9} ${_vm.width * 0.92 + 7}, ${_vm.height - 9}\n `}})])],1),_c('polygon',{attrs:{\"fill\":_vm.backgroundColor,\"points\":`\n 15, 9 ${_vm.width * 0.1 + 1}, 9 ${_vm.width * 0.1 + 4}, 6 ${_vm.width * 0.52 + 2}, 6\n ${_vm.width * 0.52 + 6}, 10 ${_vm.width * 0.58 - 7}, 10 ${_vm.width * 0.58 - 2}, 6\n ${_vm.width * 0.9 + 2}, 6 ${_vm.width * 0.9 + 6}, 10 ${_vm.width - 10}, 10 ${_vm.width - 10}, ${_vm.height * 0.1 - 6}\n ${_vm.width - 6}, ${_vm.height * 0.1 - 1} ${_vm.width - 6}, ${_vm.height * 0.8 + 1} ${_vm.width - 10}, ${_vm.height * 0.8 + 6}\n ${_vm.width - 10}, ${_vm.height - 10} ${_vm.width * 0.92 + 7}, ${_vm.height - 10} ${_vm.width * 0.92 + 2}, ${_vm.height - 6}\n 11, ${_vm.height - 6} 11, ${_vm.height * 0.15 - 2} 15, ${_vm.height * 0.15 - 7}\n `}}),_c('rect',{attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":_vm.width,\"height\":_vm.height,\"fill\":`url(#${_vm.gradientId})`,\"mask\":`url(#${_vm.maskId})`}})]),_c('div',{staticClass:\"border-box-content\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=e8ec3610\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport BorderBox9 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(BorderBox9.name, BorderBox9)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"dv-capsule-chart\"},[(_vm.mergedConfig)?[_c('div',{staticClass:\"label-column\"},[_vm._l((_vm.mergedConfig.data),function(item){return _c('div',{key:item.name},[_vm._v(_vm._s(item.name))])}),_c('div',[_vm._v(\" \")])],2),_c('div',{staticClass:\"capsule-container\"},[_vm._l((_vm.capsuleLength),function(capsule,index){return _c('div',{key:index,staticClass:\"capsule-item\"},[_c('div',{staticClass:\"capsule-item-column\",style:(`width: ${capsule * 100}%; background-color: ${_vm.mergedConfig.colors[index % _vm.mergedConfig.colors.length]};`)},[(_vm.mergedConfig.showValue)?_c('div',{staticClass:\"capsule-item-value\"},[_vm._v(_vm._s(_vm.capsuleValue[index]))]):_vm._e()])])}),_c('div',{staticClass:\"unit-label\"},_vm._l((_vm.labelData),function(label,index){return _c('div',{key:label + index},[_vm._v(_vm._s(label))])}),0)],2),(_vm.mergedConfig.unit)?_c('div',{staticClass:\"unit-text\"},[_vm._v(_vm._s(_vm.mergedConfig.unit))]):_vm._e()]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=058edf2a\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport CapsuleChart from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(CapsuleChart.name, CapsuleChart)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-charts-container\"},[_c('div',{ref:_vm.chartRef,staticClass:\"charts-canvas-container\"})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=d283f50a\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport Charts from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(Charts.name, Charts)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-conical-column-chart\"},[_c('svg',{attrs:{\"width\":_vm.width,\"height\":_vm.height}},_vm._l((_vm.column),function(item,i){return _c('g',{key:i},[_c('path',{attrs:{\"d\":item.d,\"fill\":_vm.mergedConfig.columnColor}}),_c('text',{style:(`fontSize:${_vm.mergedConfig.fontSize}px`),attrs:{\"fill\":_vm.mergedConfig.textColor,\"x\":item.x,\"y\":_vm.height - 4}},[_vm._v(\" \"+_vm._s(item.name)+\" \")]),(_vm.mergedConfig.img.length)?_c('image',{attrs:{\"xlink:href\":_vm.mergedConfig.img[i % _vm.mergedConfig.img.length],\"width\":_vm.mergedConfig.imgSideLength,\"height\":_vm.mergedConfig.imgSideLength,\"x\":item.x - _vm.mergedConfig.imgSideLength / 2,\"y\":item.y - _vm.mergedConfig.imgSideLength}}):_vm._e(),(_vm.mergedConfig.showValue)?_c('text',{style:(`fontSize:${_vm.mergedConfig.fontSize}px`),attrs:{\"fill\":_vm.mergedConfig.textColor,\"x\":item.x,\"y\":item.textY}},[_vm._v(\" \"+_vm._s(item.value)+\" \")]):_vm._e()])}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=7c00d6fd\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport ConicalColumnChart from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(ConicalColumnChart.name, ConicalColumnChart)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-decoration-1\"},[_c('svg',{style:(`transform:scale(${_vm.svgScale[0]},${_vm.svgScale[1]});`),attrs:{\"width\":`${_vm.svgWH[0]}px`,\"height\":`${_vm.svgWH[1]}px`}},[_vm._l((_vm.points),function(point,i){return [(Math.random() > 0.6)?_c('rect',{key:i,attrs:{\"fill\":_vm.mergedColor[0],\"x\":point[0] - _vm.halfPointSideLength,\"y\":point[1] - _vm.halfPointSideLength,\"width\":_vm.pointSideLength,\"height\":_vm.pointSideLength}},[(Math.random() > 0.6)?_c('animate',{attrs:{\"attributeName\":\"fill\",\"values\":`${_vm.mergedColor[0]};transparent`,\"dur\":\"1s\",\"begin\":Math.random() * 2,\"repeatCount\":\"indefinite\"}}):_vm._e()]):_vm._e()]}),(_vm.rects[0])?_c('rect',{attrs:{\"fill\":_vm.mergedColor[1],\"x\":_vm.rects[0][0] - _vm.pointSideLength,\"y\":_vm.rects[0][1] - _vm.pointSideLength,\"width\":_vm.pointSideLength * 2,\"height\":_vm.pointSideLength * 2}},[_c('animate',{attrs:{\"attributeName\":\"width\",\"values\":`0;${_vm.pointSideLength * 2}`,\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}}),_c('animate',{attrs:{\"attributeName\":\"height\",\"values\":`0;${_vm.pointSideLength * 2}`,\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}}),_c('animate',{attrs:{\"attributeName\":\"x\",\"values\":`${_vm.rects[0][0]};${_vm.rects[0][0] - _vm.pointSideLength}`,\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}}),_c('animate',{attrs:{\"attributeName\":\"y\",\"values\":`${_vm.rects[0][1]};${_vm.rects[0][1] - _vm.pointSideLength}`,\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}})]):_vm._e(),(_vm.rects[1])?_c('rect',{attrs:{\"fill\":_vm.mergedColor[1],\"x\":_vm.rects[1][0] - 40,\"y\":_vm.rects[1][1] - _vm.pointSideLength,\"width\":40,\"height\":_vm.pointSideLength * 2}},[_c('animate',{attrs:{\"attributeName\":\"width\",\"values\":\"0;40;0\",\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}}),_c('animate',{attrs:{\"attributeName\":\"x\",\"values\":`${_vm.rects[1][0]};${_vm.rects[1][0] - 40};${_vm.rects[1][0]}`,\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}})]):_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=295bc631\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport Decoration1 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(Decoration1.name, Decoration1)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-decoration-10\"},[_c('svg',{attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[1],\"stroke-width\":\"2\",\"points\":`0, ${_vm.height / 2} ${_vm.width}, ${_vm.height / 2}`}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"stroke-width\":\"2\",\"points\":`5, ${_vm.height / 2} ${_vm.width * 0.2 - 3}, ${_vm.height / 2}`,\"stroke-dasharray\":`0, ${_vm.width * 0.2}`,\"fill\":\"freeze\"}},[_c('animate',{attrs:{\"id\":_vm.animationId2,\"attributeName\":\"stroke-dasharray\",\"values\":`0, ${_vm.width * 0.2};${_vm.width * 0.2}, 0;`,\"dur\":\"3s\",\"begin\":`${_vm.animationId1}.end`,\"fill\":\"freeze\"}}),_c('animate',{attrs:{\"attributeName\":\"stroke-dasharray\",\"values\":`${_vm.width * 0.2}, 0;0, ${_vm.width * 0.2}`,\"dur\":\"0.01s\",\"begin\":`${_vm.animationId7}.end`,\"fill\":\"freeze\"}})]),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"stroke-width\":\"2\",\"points\":`${_vm.width * 0.2 + 3}, ${_vm.height / 2} ${_vm.width * 0.8 - 3}, ${_vm.height / 2}`,\"stroke-dasharray\":`0, ${_vm.width * 0.6}`}},[_c('animate',{attrs:{\"id\":_vm.animationId4,\"attributeName\":\"stroke-dasharray\",\"values\":`0, ${_vm.width * 0.6};${_vm.width * 0.6}, 0`,\"dur\":\"3s\",\"begin\":`${_vm.animationId3}.end + 1s`,\"fill\":\"freeze\"}}),_c('animate',{attrs:{\"attributeName\":\"stroke-dasharray\",\"values\":`${_vm.width * 0.6}, 0;0, ${_vm.width * 0.6}`,\"dur\":\"0.01s\",\"begin\":`${_vm.animationId7}.end`,\"fill\":\"freeze\"}})]),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"stroke-width\":\"2\",\"points\":`${_vm.width * 0.8 + 3}, ${_vm.height / 2} ${_vm.width - 5}, ${_vm.height / 2}`,\"stroke-dasharray\":`0, ${_vm.width * 0.2}`}},[_c('animate',{attrs:{\"id\":_vm.animationId6,\"attributeName\":\"stroke-dasharray\",\"values\":`0, ${_vm.width * 0.2};${_vm.width * 0.2}, 0`,\"dur\":\"3s\",\"begin\":`${_vm.animationId5}.end + 1s`,\"fill\":\"freeze\"}}),_c('animate',{attrs:{\"attributeName\":\"stroke-dasharray\",\"values\":`${_vm.width * 0.2}, 0;0, ${_vm.width * 0.3}`,\"dur\":\"0.01s\",\"begin\":`${_vm.animationId7}.end`,\"fill\":\"freeze\"}})]),_c('circle',{attrs:{\"cx\":\"2\",\"cy\":_vm.height / 2,\"r\":\"2\",\"fill\":_vm.mergedColor[1]}},[_c('animate',{attrs:{\"id\":_vm.animationId1,\"attributeName\":\"fill\",\"values\":`${_vm.mergedColor[1]};${_vm.mergedColor[0]}`,\"begin\":`0s;${_vm.animationId7}.end`,\"dur\":\"0.3s\",\"fill\":\"freeze\"}})]),_c('circle',{attrs:{\"cx\":_vm.width * 0.2,\"cy\":_vm.height / 2,\"r\":\"2\",\"fill\":_vm.mergedColor[1]}},[_c('animate',{attrs:{\"id\":_vm.animationId3,\"attributeName\":\"fill\",\"values\":`${_vm.mergedColor[1]};${_vm.mergedColor[0]}`,\"begin\":`${_vm.animationId2}.end`,\"dur\":\"0.3s\",\"fill\":\"freeze\"}}),_c('animate',{attrs:{\"attributeName\":\"fill\",\"values\":`${_vm.mergedColor[1]};${_vm.mergedColor[1]}`,\"dur\":\"0.01s\",\"begin\":`${_vm.animationId7}.end`,\"fill\":\"freeze\"}})]),_c('circle',{attrs:{\"cx\":_vm.width * 0.8,\"cy\":_vm.height / 2,\"r\":\"2\",\"fill\":_vm.mergedColor[1]}},[_c('animate',{attrs:{\"id\":_vm.animationId5,\"attributeName\":\"fill\",\"values\":`${_vm.mergedColor[1]};${_vm.mergedColor[0]}`,\"begin\":`${_vm.animationId4}.end`,\"dur\":\"0.3s\",\"fill\":\"freeze\"}}),_c('animate',{attrs:{\"attributeName\":\"fill\",\"values\":`${_vm.mergedColor[1]};${_vm.mergedColor[1]}`,\"dur\":\"0.01s\",\"begin\":`${_vm.animationId7}.end`,\"fill\":\"freeze\"}})]),_c('circle',{attrs:{\"cx\":_vm.width - 2,\"cy\":_vm.height / 2,\"r\":\"2\",\"fill\":_vm.mergedColor[1]}},[_c('animate',{attrs:{\"id\":_vm.animationId7,\"attributeName\":\"fill\",\"values\":`${_vm.mergedColor[1]};${_vm.mergedColor[0]}`,\"begin\":`${_vm.animationId6}.end`,\"dur\":\"0.3s\",\"fill\":\"freeze\"}}),_c('animate',{attrs:{\"attributeName\":\"fill\",\"values\":`${_vm.mergedColor[1]};${_vm.mergedColor[1]}`,\"dur\":\"0.01s\",\"begin\":`${_vm.animationId7}.end`,\"fill\":\"freeze\"}})])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=69543fb4\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport Decoration10 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(Decoration10.name, Decoration10)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-decoration-11\"},[_c('svg',{attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('polygon',{attrs:{\"fill\":_vm.fade(_vm.mergedColor[1] || _vm.defaultColor[1], 10),\"stroke\":_vm.mergedColor[1],\"points\":`20 10, 25 4, 55 4 60 10`}}),_c('polygon',{attrs:{\"fill\":_vm.fade(_vm.mergedColor[1] || _vm.defaultColor[1], 10),\"stroke\":_vm.mergedColor[1],\"points\":`20 ${_vm.height - 10}, 25 ${_vm.height - 4}, 55 ${_vm.height - 4} 60 ${_vm.height - 10}`}}),_c('polygon',{attrs:{\"fill\":_vm.fade(_vm.mergedColor[1] || _vm.defaultColor[1], 10),\"stroke\":_vm.mergedColor[1],\"points\":`${_vm.width - 20} 10, ${_vm.width - 25} 4, ${_vm.width - 55} 4 ${_vm.width - 60} 10`}}),_c('polygon',{attrs:{\"fill\":_vm.fade(_vm.mergedColor[1] || _vm.defaultColor[1], 10),\"stroke\":_vm.mergedColor[1],\"points\":`${_vm.width - 20} ${_vm.height - 10}, ${_vm.width - 25} ${_vm.height - 4}, ${_vm.width - 55} ${_vm.height - 4} ${_vm.width - 60} ${_vm.height - 10}`}}),_c('polygon',{attrs:{\"fill\":_vm.fade(_vm.mergedColor[0] || _vm.defaultColor[0], 20),\"stroke\":_vm.mergedColor[0],\"points\":`\n 20 10, 5 ${_vm.height / 2} 20 ${_vm.height - 10}\n ${_vm.width - 20} ${_vm.height - 10} ${_vm.width - 5} ${_vm.height / 2} ${_vm.width - 20} 10\n `}}),_c('polyline',{attrs:{\"fill\":\"transparent\",\"stroke\":_vm.fade(_vm.mergedColor[0] || _vm.defaultColor[0], 70),\"points\":`25 18, 15 ${_vm.height / 2} 25 ${_vm.height - 18}`}}),_c('polyline',{attrs:{\"fill\":\"transparent\",\"stroke\":_vm.fade(_vm.mergedColor[0] || _vm.defaultColor[0], 70),\"points\":`${_vm.width - 25} 18, ${_vm.width - 15} ${_vm.height / 2} ${_vm.width - 25} ${_vm.height - 18}`}})]),_c('div',{staticClass:\"decoration-content\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=c3e466e8\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport Decoration11 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(Decoration11.name, Decoration11)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-decoration-12\"},[_c('svg',{attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('defs',[_c('g',{attrs:{\"id\":_vm.gId}},_vm._l((_vm.pathD),function(d,i){return _c('path',{key:d,attrs:{\"stroke\":_vm.pathColor[i],\"stroke-width\":_vm.width / 2,\"fill\":\"transparent\",\"d\":d}})}),0),_c('radialGradient',{attrs:{\"id\":_vm.gradientId,\"cx\":\"50%\",\"cy\":\"50%\",\"r\":\"50%\"}},[_c('stop',{attrs:{\"offset\":\"0%\",\"stop-color\":\"transparent\",\"stop-opacity\":\"1\"}}),_c('stop',{attrs:{\"offset\":\"100%\",\"stop-color\":_vm.fade(_vm.mergedColor[1] || _vm.defaultColor[1], 30),\"stop-opacity\":\"1\"}})],1)],1),_vm._l((_vm.circleR),function(r){return _c('circle',{key:r,attrs:{\"r\":r,\"cx\":_vm.x,\"cy\":_vm.y,\"stroke\":_vm.mergedColor[1],\"stroke-width\":0.5,\"fill\":\"transparent\"}})}),_c('circle',{attrs:{\"r\":\"1\",\"cx\":_vm.x,\"cy\":_vm.y,\"stroke\":\"transparent\",\"fill\":`url(#${_vm.gradientId})`}},[_c('animate',{attrs:{\"attributeName\":\"r\",\"values\":`1;${_vm.width / 2}`,\"dur\":`${_vm.haloDur}s`,\"repeatCount\":\"indefinite\"}}),_c('animate',{attrs:{\"attributeName\":\"opacity\",\"values\":\"1;0\",\"dur\":`${_vm.haloDur}s`,\"repeatCount\":\"indefinite\"}})]),_c('circle',{attrs:{\"r\":\"2\",\"cx\":_vm.x,\"cy\":_vm.y,\"fill\":_vm.mergedColor[1]}}),(_vm.showSplitLine)?_c('g',_vm._l((_vm.splitLinePoints),function(p){return _c('polyline',{key:p,attrs:{\"points\":p,\"stroke\":_vm.mergedColor[1],\"stroke-width\":0.5,\"opacity\":\"0.5\"}})}),0):_vm._e(),_vm._l((_vm.arcD),function(d){return _c('path',{key:d,attrs:{\"d\":d,\"stroke\":_vm.mergedColor[1],\"stroke-width\":\"2\",\"fill\":\"transparent\"}})}),_c('use',{attrs:{\"xlink:href\":`#${_vm.gId}`}},[_c('animateTransform',{attrs:{\"attributeName\":\"transform\",\"type\":\"rotate\",\"values\":`0, ${_vm.x} ${_vm.y};360, ${_vm.x} ${_vm.y}`,\"dur\":`${_vm.scanDur}s`,\"repeatCount\":\"indefinite\"}})],1)],2),_c('div',{staticClass:\"decoration-content\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=1b5d7dd6\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport Decoration12 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(Decoration12.name, Decoration12)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-decoration-2\"},[_c('svg',{attrs:{\"width\":`${_vm.width}px`,\"height\":`${_vm.height}px`}},[_c('rect',{attrs:{\"x\":_vm.x,\"y\":_vm.y,\"width\":_vm.w,\"height\":_vm.h,\"fill\":_vm.mergedColor[0]}},[_c('animate',{attrs:{\"attributeName\":_vm.reverse ? 'height' : 'width',\"from\":\"0\",\"to\":_vm.reverse ? _vm.height : _vm.width,\"dur\":`${_vm.dur}s`,\"calcMode\":\"spline\",\"keyTimes\":\"0;1\",\"keySplines\":\".42,0,.58,1\",\"repeatCount\":\"indefinite\"}})]),_c('rect',{attrs:{\"x\":_vm.x,\"y\":_vm.y,\"width\":\"1\",\"height\":\"1\",\"fill\":_vm.mergedColor[1]}},[_c('animate',{attrs:{\"attributeName\":_vm.reverse ? 'y' : 'x',\"from\":\"0\",\"to\":_vm.reverse ? _vm.height : _vm.width,\"dur\":`${_vm.dur}s`,\"calcMode\":\"spline\",\"keyTimes\":\"0;1\",\"keySplines\":\"0.42,0,0.58,1\",\"repeatCount\":\"indefinite\"}})])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=dc7f366c\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport Decoration2 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(Decoration2.name, Decoration2)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-decoration-3\"},[_c('svg',{style:(`transform:scale(${_vm.svgScale[0]},${_vm.svgScale[1]});`),attrs:{\"width\":`${_vm.svgWH[0]}px`,\"height\":`${_vm.svgWH[1]}px`}},[_vm._l((_vm.points),function(point,i){return [_c('rect',{key:i,attrs:{\"fill\":_vm.mergedColor[0],\"x\":point[0] - _vm.halfPointSideLength,\"y\":point[1] - _vm.halfPointSideLength,\"width\":_vm.pointSideLength,\"height\":_vm.pointSideLength}},[(Math.random() > 0.6)?_c('animate',{attrs:{\"attributeName\":\"fill\",\"values\":`${_vm.mergedColor.join(';')}`,\"dur\":Math.random() + 1 + 's',\"begin\":Math.random() * 2,\"repeatCount\":\"indefinite\"}}):_vm._e()])]})],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=455c74d6\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport Decoration3 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(Decoration3.name, Decoration3)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-decoration-4\"},[_c('div',{class:`container ${_vm.reverse ? 'reverse' : 'normal'}`,style:(_vm.reverse ? `width:${_vm.width}px;height:5px;animation-duration:${_vm.dur}s` : `width:5px;height:${_vm.height}px;animation-duration:${_vm.dur}s`)},[_c('svg',{attrs:{\"width\":_vm.reverse ? _vm.width : 5,\"height\":_vm.reverse ? 5 : _vm.height}},[_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"points\":_vm.reverse ? `0, 2.5 ${_vm.width}, 2.5` : `2.5, 0 2.5, ${_vm.height}`}}),_c('polyline',{staticClass:\"bold-line\",attrs:{\"stroke\":_vm.mergedColor[1],\"stroke-width\":\"3\",\"stroke-dasharray\":\"20, 80\",\"stroke-dashoffset\":\"-30\",\"points\":_vm.reverse ? `0, 2.5 ${_vm.width}, 2.5` : `2.5, 0 2.5, ${_vm.height}`}})])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=29f329c8\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport Decoration4 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(Decoration4.name, Decoration4)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-decoration-5\"},[_c('svg',{attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('polyline',{attrs:{\"fill\":\"transparent\",\"stroke\":_vm.mergedColor[0],\"stroke-width\":\"3\",\"points\":_vm.line1Points}},[_c('animate',{attrs:{\"attributeName\":\"stroke-dasharray\",\"attributeType\":\"XML\",\"from\":`0, ${_vm.line1Length / 2}, 0, ${_vm.line1Length / 2}`,\"to\":`0, 0, ${_vm.line1Length}, 0`,\"dur\":`${_vm.dur}s`,\"begin\":\"0s\",\"calcMode\":\"spline\",\"keyTimes\":\"0;1\",\"keySplines\":\"0.4,1,0.49,0.98\",\"repeatCount\":\"indefinite\"}})]),_c('polyline',{attrs:{\"fill\":\"transparent\",\"stroke\":_vm.mergedColor[1],\"stroke-width\":\"2\",\"points\":_vm.line2Points}},[_c('animate',{attrs:{\"attributeName\":\"stroke-dasharray\",\"attributeType\":\"XML\",\"from\":`0, ${_vm.line2Length / 2}, 0, ${_vm.line2Length / 2}`,\"to\":`0, 0, ${_vm.line2Length}, 0`,\"dur\":`${_vm.dur}s`,\"begin\":\"0s\",\"calcMode\":\"spline\",\"keyTimes\":\"0;1\",\"keySplines\":\".4,1,.49,.98\",\"repeatCount\":\"indefinite\"}})])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=791c9101\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport Decoration5 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(Decoration5.name, Decoration5)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-decoration-6\"},[_c('svg',{style:(`transform:scale(${_vm.svgScale[0]},${_vm.svgScale[1]});`),attrs:{\"width\":`${_vm.svgWH[0]}px`,\"height\":`${_vm.svgWH[1]}px`}},[_vm._l((_vm.points),function(point,i){return [_c('rect',{key:i,attrs:{\"fill\":_vm.mergedColor[Math.random() > 0.5 ? 0 : 1],\"x\":point[0] - _vm.halfRectWidth,\"y\":point[1] - _vm.heights[i] / 2,\"width\":_vm.rectWidth,\"height\":_vm.heights[i]}},[_c('animate',{attrs:{\"attributeName\":\"y\",\"values\":`${point[1] - _vm.minHeights[i] / 2};${point[1] - _vm.heights[i] / 2};${point[1] - _vm.minHeights[i] / 2}`,\"dur\":`${_vm.randoms[i]}s`,\"keyTimes\":\"0;0.5;1\",\"calcMode\":\"spline\",\"keySplines\":\"0.42,0,0.58,1;0.42,0,0.58,1\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\"}}),_c('animate',{attrs:{\"attributeName\":\"height\",\"values\":`${_vm.minHeights[i]};${_vm.heights[i]};${_vm.minHeights[i]}`,\"dur\":`${_vm.randoms[i]}s`,\"keyTimes\":\"0;0.5;1\",\"calcMode\":\"spline\",\"keySplines\":\"0.42,0,0.58,1;0.42,0,0.58,1\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\"}})])]})],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=a9ebb10e\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport Decoration6 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(Decoration6.name, Decoration6)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"dv-decoration-7\"},[_c('svg',{attrs:{\"width\":\"21px\",\"height\":\"20px\"}},[_c('polyline',{attrs:{\"stroke-width\":\"4\",\"fill\":\"transparent\",\"stroke\":_vm.mergedColor[0],\"points\":\"10, 0 19, 10 10, 20\"}}),_c('polyline',{attrs:{\"stroke-width\":\"2\",\"fill\":\"transparent\",\"stroke\":_vm.mergedColor[1],\"points\":\"2, 0 11, 10 2, 20\"}})]),_vm._t(\"default\"),_c('svg',{attrs:{\"width\":\"21px\",\"height\":\"20px\"}},[_c('polyline',{attrs:{\"stroke-width\":\"4\",\"fill\":\"transparent\",\"stroke\":_vm.mergedColor[0],\"points\":\"11, 0 2, 10 11, 20\"}}),_c('polyline',{attrs:{\"stroke-width\":\"2\",\"fill\":\"transparent\",\"stroke\":_vm.mergedColor[1],\"points\":\"19, 0 10, 10 19, 20\"}})])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=a40c4f44\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport Decoration7 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(Decoration7.name, Decoration7)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-decoration-8\"},[_c('svg',{attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"stroke-width\":\"2\",\"fill\":\"transparent\",\"points\":`${_vm.xPos(0)}, 0 ${_vm.xPos(30)}, ${_vm.height / 2}`}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[0],\"stroke-width\":\"2\",\"fill\":\"transparent\",\"points\":`${_vm.xPos(20)}, 0 ${_vm.xPos(50)}, ${_vm.height / 2} ${_vm.xPos(_vm.width)}, ${_vm.height / 2}`}}),_c('polyline',{attrs:{\"stroke\":_vm.mergedColor[1],\"fill\":\"transparent\",\"stroke-width\":\"3\",\"points\":`${_vm.xPos(0)}, ${_vm.height - 3}, ${_vm.xPos(200)}, ${_vm.height - 3}`}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=8cf9c33e\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport Decoration8 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(Decoration8.name, Decoration8)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-decoration-9\"},[_c('svg',{style:(`transform:scale(${_vm.svgScale[0]},${_vm.svgScale[1]});`),attrs:{\"width\":`${_vm.svgWH[0]}px`,\"height\":`${_vm.svgWH[1]}px`}},[_c('defs',[_c('polygon',{attrs:{\"id\":_vm.polygonId,\"points\":\"15, 46.5, 21, 47.5, 21, 52.5, 15, 53.5\"}})]),_c('circle',{attrs:{\"cx\":\"50\",\"cy\":\"50\",\"r\":\"45\",\"fill\":\"transparent\",\"stroke\":_vm.mergedColor[1],\"stroke-width\":\"10\",\"stroke-dasharray\":\"80, 100, 30, 100\"}},[_c('animateTransform',{attrs:{\"attributeName\":\"transform\",\"type\":\"rotate\",\"values\":\"0 50 50;360 50 50\",\"dur\":`${_vm.dur}s`,\"repeatCount\":\"indefinite\"}})],1),_c('circle',{attrs:{\"cx\":\"50\",\"cy\":\"50\",\"r\":\"45\",\"fill\":\"transparent\",\"stroke\":_vm.mergedColor[0],\"stroke-width\":\"6\",\"stroke-dasharray\":\"50, 66, 100, 66\"}},[_c('animateTransform',{attrs:{\"attributeName\":\"transform\",\"type\":\"rotate\",\"values\":\"0 50 50;-360 50 50\",\"dur\":`${_vm.dur}s`,\"repeatCount\":\"indefinite\"}})],1),_c('circle',{attrs:{\"cx\":\"50\",\"cy\":\"50\",\"r\":\"38\",\"fill\":\"transparent\",\"stroke\":_vm.fade(_vm.mergedColor[1] || _vm.defaultColor[1], 30),\"stroke-width\":\"1\",\"stroke-dasharray\":\"5, 1\"}}),_vm._l((new Array(20).fill(0)),function(foo,i){return _c('use',{key:i,attrs:{\"xlink:href\":`#${_vm.polygonId}`,\"stroke\":_vm.mergedColor[1],\"fill\":Math.random() > 0.4 ? 'transparent' : _vm.mergedColor[0]}},[_c('animateTransform',{attrs:{\"attributeName\":\"transform\",\"type\":\"rotate\",\"values\":\"0 50 50;360 50 50\",\"dur\":`${_vm.dur}s`,\"begin\":`${i * _vm.dur / 20}s`,\"repeatCount\":\"indefinite\"}})],1)}),_c('circle',{attrs:{\"cx\":\"50\",\"cy\":\"50\",\"r\":\"26\",\"fill\":\"transparent\",\"stroke\":_vm.fade(_vm.mergedColor[1] || _vm.defaultColor[1], 30),\"stroke-width\":\"1\",\"stroke-dasharray\":\"5, 1\"}})],2),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=f8ad0d4c\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport Decoration9 from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(Decoration9.name, Decoration9)\n}\n","import './src/main.css'\nimport DigitalFlop from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(DigitalFlop.name, DigitalFlop)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"dv-flyline-chart\",staticClass:\"dv-flyline-chart\",style:(`background-image: url(${_vm.mergedConfig ? _vm.mergedConfig.bgImgUrl : ''})`),on:{\"click\":_vm.consoleClickPos}},[(_vm.mergedConfig)?_c('svg',{attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('defs',[_c('radialGradient',{attrs:{\"id\":_vm.gradientId,\"cx\":\"50%\",\"cy\":\"50%\",\"r\":\"50%\"}},[_c('stop',{attrs:{\"offset\":\"0%\",\"stop-color\":\"#fff\",\"stop-opacity\":\"1\"}}),_c('stop',{attrs:{\"offset\":\"100%\",\"stop-color\":\"#fff\",\"stop-opacity\":\"0\"}})],1),_c('radialGradient',{attrs:{\"id\":_vm.gradient2Id,\"cx\":\"50%\",\"cy\":\"50%\",\"r\":\"50%\"}},[_c('stop',{attrs:{\"offset\":\"0%\",\"stop-color\":\"#fff\",\"stop-opacity\":\"0\"}}),_c('stop',{attrs:{\"offset\":\"100%\",\"stop-color\":\"#fff\",\"stop-opacity\":\"1\"}})],1),(_vm.paths[0])?_c('circle',{attrs:{\"id\":`circle${_vm.paths[0].toString()}`,\"cx\":_vm.paths[0][2][0],\"cy\":_vm.paths[0][2][1]}},[_c('animate',{attrs:{\"attributeName\":\"r\",\"values\":`1;${_vm.mergedConfig.halo.radius}`,\"dur\":_vm.mergedConfig.halo.duration / 10 + 's',\"repeatCount\":\"indefinite\"}}),_c('animate',{attrs:{\"attributeName\":\"opacity\",\"values\":\"1;0\",\"dur\":_vm.mergedConfig.halo.duration / 10 + 's',\"repeatCount\":\"indefinite\"}})]):_vm._e()],1),(_vm.paths[0])?_c('image',{attrs:{\"xlink:href\":_vm.mergedConfig.centerPointImg.url,\"width\":_vm.mergedConfig.centerPointImg.width,\"height\":_vm.mergedConfig.centerPointImg.height,\"x\":_vm.paths[0][2][0] - _vm.mergedConfig.centerPointImg.width / 2,\"y\":_vm.paths[0][2][1] - _vm.mergedConfig.centerPointImg.height / 2}}):_vm._e(),_c('mask',{attrs:{\"id\":`maskhalo${_vm.paths[0].toString()}`}},[(_vm.paths[0])?_c('use',{attrs:{\"xlink:href\":`#circle${_vm.paths[0].toString()}`,\"fill\":`url(#${_vm.gradient2Id})`}}):_vm._e()]),(_vm.paths[0] && _vm.mergedConfig.halo.show)?_c('use',{attrs:{\"xlink:href\":`#circle${_vm.paths[0].toString()}`,\"fill\":_vm.mergedConfig.halo.color,\"mask\":`url(#maskhalo${_vm.paths[0].toString()})`}}):_vm._e(),_vm._l((_vm.paths),function(path,i){return _c('g',{key:i},[_c('defs',[_c('path',{ref:`path${i}`,refInFor:true,attrs:{\"id\":`path${path.toString()}`,\"d\":`M${path[0].toString()} Q${path[1].toString()} ${path[2].toString()}`,\"fill\":\"transparent\"}})]),_c('use',{attrs:{\"xlink:href\":`#path${path.toString()}`,\"stroke-width\":_vm.mergedConfig.lineWidth,\"stroke\":_vm.mergedConfig.orbitColor}}),(_vm.lengths[i])?_c('use',{attrs:{\"xlink:href\":`#path${path.toString()}`,\"stroke-width\":_vm.mergedConfig.lineWidth,\"stroke\":_vm.mergedConfig.flylineColor,\"mask\":`url(#mask${_vm.unique}${path.toString()})`}},[_c('animate',{attrs:{\"attributeName\":\"stroke-dasharray\",\"from\":`0, ${_vm.lengths[i]}`,\"to\":`${_vm.lengths[i]}, 0`,\"dur\":_vm.times[i] || 0,\"repeatCount\":\"indefinite\"}})]):_vm._e(),_c('mask',{attrs:{\"id\":`mask${_vm.unique}${path.toString()}`}},[_c('circle',{attrs:{\"cx\":\"0\",\"cy\":\"0\",\"r\":_vm.mergedConfig.flylineRadius,\"fill\":`url(#${_vm.gradientId})`}},[_c('animateMotion',{attrs:{\"dur\":_vm.times[i] || 0,\"path\":`M${path[0].toString()} Q${path[1].toString()} ${path[2].toString()}`,\"rotate\":\"auto\",\"repeatCount\":\"indefinite\"}})],1)]),_c('image',{attrs:{\"xlink:href\":_vm.mergedConfig.pointsImg.url,\"width\":_vm.mergedConfig.pointsImg.width,\"height\":_vm.mergedConfig.pointsImg.height,\"x\":path[0][0] - _vm.mergedConfig.pointsImg.width / 2,\"y\":path[0][1] - _vm.mergedConfig.pointsImg.height / 2}}),_c('text',{style:(`fontSize:${_vm.mergedConfig.text.fontSize}px;`),attrs:{\"fill\":_vm.mergedConfig.text.color,\"x\":path[0][0] + _vm.mergedConfig.text.offset[0],\"y\":path[0][1] + _vm.mergedConfig.text.offset[1]}},[_vm._v(\" \"+_vm._s(_vm.texts[i])+\" \")])])})],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=54f2d20f\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport FlylineChart from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(FlylineChart.name, FlylineChart)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-flyline-chart-enhanced\",style:(`background-image: url(${_vm.mergedConfig ? _vm.mergedConfig.bgImgSrc : ''})`),on:{\"click\":_vm.consoleClickPos}},[(_vm.flylines.length)?_c('svg',{attrs:{\"width\":_vm.width,\"height\":_vm.height}},[_c('defs',[_c('radialGradient',{attrs:{\"id\":_vm.flylineGradientId,\"cx\":\"50%\",\"cy\":\"50%\",\"r\":\"50%\"}},[_c('stop',{attrs:{\"offset\":\"0%\",\"stop-color\":\"#fff\",\"stop-opacity\":\"1\"}}),_c('stop',{attrs:{\"offset\":\"100%\",\"stop-color\":\"#fff\",\"stop-opacity\":\"0\"}})],1),_c('radialGradient',{attrs:{\"id\":_vm.haloGradientId,\"cx\":\"50%\",\"cy\":\"50%\",\"r\":\"50%\"}},[_c('stop',{attrs:{\"offset\":\"0%\",\"stop-color\":\"#fff\",\"stop-opacity\":\"0\"}}),_c('stop',{attrs:{\"offset\":\"100%\",\"stop-color\":\"#fff\",\"stop-opacity\":\"1\"}})],1)],1),_vm._l((_vm.flylinePoints),function(point){return _c('g',{key:point.key + Math.random()},[_c('defs',[(point.halo.show)?_c('circle',{attrs:{\"id\":`halo${_vm.unique}${point.key}`,\"cx\":point.coordinate[0],\"cy\":point.coordinate[1]}},[_c('animate',{attrs:{\"attributeName\":\"r\",\"values\":`1;${point.halo.radius}`,\"dur\":`${point.halo.time}s`,\"repeatCount\":\"indefinite\"}}),_c('animate',{attrs:{\"attributeName\":\"opacity\",\"values\":\"1;0\",\"dur\":`${point.halo.time}s`,\"repeatCount\":\"indefinite\"}})]):_vm._e()]),_c('mask',{attrs:{\"id\":`mask${_vm.unique}${point.key}`}},[(point.halo.show)?_c('use',{attrs:{\"xlink:href\":`#halo${_vm.unique}${point.key}`,\"fill\":`url(#${_vm.haloGradientId})`}}):_vm._e()]),(point.halo.show)?_c('use',{attrs:{\"xlink:href\":`#halo${_vm.unique}${point.key}`,\"fill\":point.halo.color,\"mask\":`url(#mask${_vm.unique}${point.key})`}}):_vm._e(),(point.icon.show)?_c('image',{attrs:{\"xlink:href\":point.icon.src,\"width\":point.icon.width,\"height\":point.icon.height,\"x\":point.icon.x,\"y\":point.icon.y}}):_vm._e(),(point.text.show)?_c('text',{style:(`fontSize:${point.text.fontSize}px;color:${point.text.color}`),attrs:{\"fill\":point.text.color,\"x\":point.text.x,\"y\":point.text.y}},[_vm._v(\" \"+_vm._s(point.name)+\" \")]):_vm._e()])}),_vm._l((_vm.flylines),function(line,i){return _c('g',{key:line.key + Math.random()},[_c('defs',[_c('path',{ref:line.key,refInFor:true,attrs:{\"id\":line.key,\"d\":line.d,\"fill\":\"transparent\"}})]),_c('use',{attrs:{\"xlink:href\":`#${line.key}`,\"stroke-width\":line.width,\"stroke\":line.orbitColor}}),_c('mask',{attrs:{\"id\":`mask${_vm.unique}${line.key}`}},[_c('circle',{attrs:{\"cx\":\"0\",\"cy\":\"0\",\"r\":line.radius,\"fill\":`url(#${_vm.flylineGradientId})`}},[_c('animateMotion',{attrs:{\"dur\":line.time,\"path\":line.d,\"rotate\":\"auto\",\"repeatCount\":\"indefinite\"}})],1)]),(_vm.flylineLengths[i])?_c('use',{attrs:{\"xlink:href\":`#${line.key}`,\"stroke-width\":line.width,\"stroke\":line.color,\"mask\":`url(#mask${_vm.unique}${line.key})`}},[_c('animate',{attrs:{\"attributeName\":\"stroke-dasharray\",\"from\":`0, ${_vm.flylineLengths[i]}`,\"to\":`${_vm.flylineLengths[i]}, 0`,\"dur\":line.time,\"repeatCount\":\"indefinite\"}})]):_vm._e()])})],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=600be252\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport FlylineChartEnhanced from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(FlylineChartEnhanced.name, FlylineChartEnhanced)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,attrs:{\"id\":\"dv-full-screen-container\"}},[(_vm.ready)?[_vm._t(\"default\")]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=fe03f55e\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport FullScreenContainer from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(FullScreenContainer.name, FullScreenContainer)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"dv-loading\"},[_c('svg',{attrs:{\"width\":\"50px\",\"height\":\"50px\"}},[_c('circle',{attrs:{\"cx\":\"25\",\"cy\":\"25\",\"r\":\"20\",\"fill\":\"transparent\",\"stroke-width\":\"3\",\"stroke-dasharray\":\"31.415, 31.415\",\"stroke\":\"#02bcfe\",\"stroke-linecap\":\"round\"}},[_c('animateTransform',{attrs:{\"attributeName\":\"transform\",\"type\":\"rotate\",\"values\":\"0, 25 25;360, 25 25\",\"dur\":\"1.5s\",\"repeatCount\":\"indefinite\"}}),_c('animate',{attrs:{\"attributeName\":\"stroke\",\"values\":\"#02bcfe;#3be6cb;#02bcfe\",\"dur\":\"3s\",\"repeatCount\":\"indefinite\"}})],1),_c('circle',{attrs:{\"cx\":\"25\",\"cy\":\"25\",\"r\":\"10\",\"fill\":\"transparent\",\"stroke-width\":\"3\",\"stroke-dasharray\":\"15.7, 15.7\",\"stroke\":\"#3be6cb\",\"stroke-linecap\":\"round\"}},[_c('animateTransform',{attrs:{\"attributeName\":\"transform\",\"type\":\"rotate\",\"values\":\"360, 25 25;0, 25 25\",\"dur\":\"1.5s\",\"repeatCount\":\"indefinite\"}}),_c('animate',{attrs:{\"attributeName\":\"stroke\",\"values\":\"#3be6cb;#02bcfe;#3be6cb\",\"dur\":\"3s\",\"repeatCount\":\"indefinite\"}})],1)]),_c('div',{staticClass:\"loading-tip\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=05f6cd58\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport Loading from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(Loading.name, Loading)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"percent-pond\",staticClass:\"dv-percent-pond\"},[_c('svg',[_c('defs',[_c('linearGradient',{attrs:{\"id\":_vm.gradientId1,\"x1\":\"0%\",\"y1\":\"0%\",\"x2\":\"100%\",\"y2\":\"0%\"}},_vm._l((_vm.linearGradient),function(lc){return _c('stop',{key:lc[0],attrs:{\"offset\":`${lc[0]}%`,\"stop-color\":lc[1]}})}),1),_c('linearGradient',{attrs:{\"id\":_vm.gradientId2,\"x1\":\"0%\",\"y1\":\"0%\",\"x2\":_vm.gradient2XPos,\"y2\":\"0%\"}},_vm._l((_vm.linearGradient),function(lc){return _c('stop',{key:lc[0],attrs:{\"offset\":`${lc[0]}%`,\"stop-color\":lc[1]}})}),1)],1),_c('rect',{attrs:{\"x\":_vm.mergedConfig ? _vm.mergedConfig.borderWidth / 2 : '0',\"y\":_vm.mergedConfig ? _vm.mergedConfig.borderWidth / 2 : '0',\"rx\":_vm.mergedConfig ? _vm.mergedConfig.borderRadius : '0',\"ry\":_vm.mergedConfig ? _vm.mergedConfig.borderRadius : '0',\"fill\":\"transparent\",\"stroke-width\":_vm.mergedConfig ? _vm.mergedConfig.borderWidth : '0',\"stroke\":`url(#${_vm.gradientId1})`,\"width\":_vm.rectWidth > 0 ? _vm.rectWidth : 0,\"height\":_vm.rectHeight > 0 ? _vm.rectHeight : 0}}),_c('polyline',{attrs:{\"stroke-width\":_vm.polylineWidth,\"stroke-dasharray\":_vm.mergedConfig ? _vm.mergedConfig.lineDash.join(',') : '0',\"stroke\":`url(#${_vm.polylineGradient})`,\"points\":_vm.points}}),_c('text',{attrs:{\"stroke\":_vm.mergedConfig ? _vm.mergedConfig.textColor : '#fff',\"fill\":_vm.mergedConfig ? _vm.mergedConfig.textColor : '#fff',\"x\":_vm.width / 2,\"y\":_vm.height / 2}},[_vm._v(\" \"+_vm._s(_vm.details)+\" \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=ea653244\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport PercentPond from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(PercentPond.name, PercentPond)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-scroll-board\"},[(_vm.header.length && _vm.mergedConfig)?_c('div',{staticClass:\"header\",style:(`background-color: ${_vm.mergedConfig.headerBGC};`)},_vm._l((_vm.header),function(headerItem,i){return _c('div',{key:`${headerItem}${i}`,staticClass:\"header-item\",style:(`\n height: ${_vm.mergedConfig.headerHeight}px;\n line-height: ${_vm.mergedConfig.headerHeight}px;\n width: ${_vm.widths[i]}px;\n `),attrs:{\"align\":_vm.aligns[i]},domProps:{\"innerHTML\":_vm._s(headerItem)}})}),0):_vm._e(),(_vm.mergedConfig)?_c('div',{staticClass:\"rows\",style:(`height: ${_vm.height - (_vm.header.length ? _vm.mergedConfig.headerHeight : 0)}px;`)},_vm._l((_vm.rows),function(row,ri){return _c('div',{key:`${row.toString()}${row.scroll}`,staticClass:\"row-item\",style:(`\n height: ${_vm.heights[ri]}px;\n line-height: ${_vm.heights[ri]}px;\n background-color: ${_vm.mergedConfig[row.rowIndex % 2 === 0 ? 'evenRowBGC' : 'oddRowBGC']};\n `)},_vm._l((row.ceils),function(ceil,ci){return _c('div',{key:`${ceil}${ri}${ci}`,staticClass:\"ceil\",style:(`width: ${_vm.widths[ci]}px;`),attrs:{\"align\":_vm.aligns[ci]},domProps:{\"innerHTML\":_vm._s(ceil)},on:{\"click\":function($event){return _vm.emitEvent('click', ri, ci, row, ceil)},\"mouseenter\":function($event){return _vm.handleHover(true, ri, ci, row, ceil)},\"mouseleave\":function($event){return _vm.handleHover(false)}}})}),0)}),0):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=0c0d0428\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport ScrollBoard from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(ScrollBoard.name, ScrollBoard)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:_vm.ref,staticClass:\"dv-scroll-ranking-board\"},_vm._l((_vm.rows),function(item,i){return _c('div',{key:item.toString() + item.scroll,staticClass:\"row-item\",style:(`height: ${_vm.heights[i]}px;`)},[_c('div',{staticClass:\"ranking-info\"},[_c('div',{staticClass:\"rank\"},[_vm._v(\"No.\"+_vm._s(item.ranking))]),_c('div',{staticClass:\"info-name\",domProps:{\"innerHTML\":_vm._s(item.name)}}),_c('div',{staticClass:\"ranking-value\"},[_vm._v(_vm._s(_vm.mergedConfig.valueFormatter ? _vm.mergedConfig.valueFormatter(item) : item.value + _vm.mergedConfig.unit))])]),_c('div',{staticClass:\"ranking-column\"},[_c('div',{staticClass:\"inside-column\",style:(`width: ${item.percent}%;`)},[_c('div',{staticClass:\"shine\"})])])])}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=045d0900\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport ScrollRankingBoard from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(ScrollRankingBoard.name, ScrollRankingBoard)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"dv-water-pond-level\"},[(_vm.renderer)?_c('svg',[_c('defs',[_c('linearGradient',{attrs:{\"id\":_vm.gradientId,\"x1\":\"0%\",\"y1\":\"0%\",\"x2\":\"0%\",\"y2\":\"100%\"}},_vm._l((_vm.svgBorderGradient),function(lc){return _c('stop',{key:lc[0],attrs:{\"offset\":lc[0],\"stop-color\":lc[1]}})}),1)],1),(_vm.renderer)?_c('text',{attrs:{\"stroke\":`url(#${_vm.gradientId})`,\"fill\":`url(#${_vm.gradientId})`,\"x\":_vm.renderer.area[0] / 2 + 8,\"y\":_vm.renderer.area[1] / 2 + 8}},[_vm._v(\" \"+_vm._s(_vm.details)+\" \")]):_vm._e(),(!_vm.shape || _vm.shape === 'round')?_c('ellipse',{attrs:{\"cx\":_vm.renderer.area[0] / 2 + 8,\"cy\":_vm.renderer.area[1] / 2 + 8,\"rx\":_vm.renderer.area[0] / 2 + 5,\"ry\":_vm.renderer.area[1] / 2 + 5,\"stroke\":`url(#${_vm.gradientId})`}}):_c('rect',{attrs:{\"x\":\"2\",\"y\":\"2\",\"rx\":_vm.shape === 'roundRect' ? 10 : 0,\"ry\":_vm.shape === 'roundRect' ? 10 : 0,\"width\":_vm.renderer.area[0] + 12,\"height\":_vm.renderer.area[1] + 12,\"stroke\":`url(#${_vm.gradientId})`}})]):_vm._e(),_c('canvas',{ref:\"water-pond-level\",style:(`border-radius: ${_vm.radius};`)})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../thread-loader/dist/cjs.js!../../../../../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=fde64310\"\nimport script from \"./main.vue?vue&type=script&lang=js\"\nexport * from \"./main.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './src/main.css'\nimport WaterLevelPond from './src/main.vue'\n\nexport default function (Vue) {\n Vue.component(WaterLevelPond.name, WaterLevelPond)\n}\n","/**\n * EXPORT COMPONENTS\n */\nexport { default as activeRingChart } from './components/activeRingChart/index'\nexport { default as borderBox1 } from './components/borderBox1/index'\nexport { default as borderBox10 } from './components/borderBox10/index'\nexport { default as borderBox11 } from './components/borderBox11/index'\nexport { default as borderBox12 } from './components/borderBox12/index'\nexport { default as borderBox13 } from './components/borderBox13/index'\nexport { default as borderBox2 } from './components/borderBox2/index'\nexport { default as borderBox3 } from './components/borderBox3/index'\nexport { default as borderBox4 } from './components/borderBox4/index'\nexport { default as borderBox5 } from './components/borderBox5/index'\nexport { default as borderBox6 } from './components/borderBox6/index'\nexport { default as borderBox7 } from './components/borderBox7/index'\nexport { default as borderBox8 } from './components/borderBox8/index'\nexport { default as borderBox9 } from './components/borderBox9/index'\nexport { default as capsuleChart } from './components/capsuleChart/index'\nexport { default as charts } from './components/charts/index'\nexport { default as conicalColumnChart } from './components/conicalColumnChart/index'\nexport { default as decoration1 } from './components/decoration1/index'\nexport { default as decoration10 } from './components/decoration10/index'\nexport { default as decoration11 } from './components/decoration11/index'\nexport { default as decoration12 } from './components/decoration12/index'\nexport { default as decoration2 } from './components/decoration2/index'\nexport { default as decoration3 } from './components/decoration3/index'\nexport { default as decoration4 } from './components/decoration4/index'\nexport { default as decoration5 } from './components/decoration5/index'\nexport { default as decoration6 } from './components/decoration6/index'\nexport { default as decoration7 } from './components/decoration7/index'\nexport { default as decoration8 } from './components/decoration8/index'\nexport { default as decoration9 } from './components/decoration9/index'\nexport { default as digitalFlop } from './components/digitalFlop/index'\nexport { default as flylineChart } from './components/flylineChart/index'\nexport { default as flylineChartEnhanced } from './components/flylineChartEnhanced/index'\nexport { default as fullScreenContainer } from './components/fullScreenContainer/index'\nexport { default as loading } from './components/loading/index'\nexport { default as percentPond } from './components/percentPond/index'\nexport { default as scrollBoard } from './components/scrollBoard/index'\nexport { default as scrollRankingBoard } from './components/scrollRankingBoard/index'\nexport { default as waterLevelPond } from './components/waterLevelPond/index'\n/**\n * IMPORT COMPONENTS\n */\nimport fullScreenContainer from './components/fullScreenContainer/index'\nimport loading from './components/loading/index'\n\n// border box\nimport borderBox1 from './components/borderBox1/index'\nimport borderBox2 from './components/borderBox2/index'\nimport borderBox3 from './components/borderBox3/index'\nimport borderBox4 from './components/borderBox4/index'\nimport borderBox5 from './components/borderBox5/index'\nimport borderBox6 from './components/borderBox6/index'\nimport borderBox7 from './components/borderBox7/index'\nimport borderBox8 from './components/borderBox8/index'\nimport borderBox9 from './components/borderBox9/index'\nimport borderBox10 from './components/borderBox10/index'\nimport borderBox11 from './components/borderBox11/index'\nimport borderBox12 from './components/borderBox12/index'\nimport borderBox13 from './components/borderBox13/index'\n\n// decoration\nimport decoration1 from './components/decoration1/index'\nimport decoration2 from './components/decoration2/index'\nimport decoration3 from './components/decoration3/index'\nimport decoration4 from './components/decoration4/index'\nimport decoration5 from './components/decoration5/index'\nimport decoration6 from './components/decoration6/index'\nimport decoration7 from './components/decoration7/index'\nimport decoration8 from './components/decoration8/index'\nimport decoration9 from './components/decoration9/index'\nimport decoration10 from './components/decoration10/index'\nimport decoration11 from './components/decoration11/index'\nimport decoration12 from './components/decoration12/index'\n\n// charts\nimport charts from './components/charts/index'\n\nimport activeRingChart from './components/activeRingChart'\nimport capsuleChart from './components/capsuleChart'\nimport waterLevelPond from './components/waterLevelPond/index'\nimport percentPond from './components/percentPond/index'\nimport flylineChart from './components/flylineChart'\nimport flylineChartEnhanced from './components/flylineChartEnhanced'\nimport conicalColumnChart from './components/conicalColumnChart'\nimport digitalFlop from './components/digitalFlop'\nimport scrollBoard from './components/scrollBoard/index'\nimport scrollRankingBoard from './components/scrollRankingBoard/index'\n\n/**\n * USE COMPONENTS\n */\nexport default function (Vue) {\n Vue.use(fullScreenContainer)\n Vue.use(loading)\n\n // border box\n Vue.use(borderBox1)\n Vue.use(borderBox2)\n Vue.use(borderBox3)\n Vue.use(borderBox4)\n Vue.use(borderBox5)\n Vue.use(borderBox6)\n Vue.use(borderBox7)\n Vue.use(borderBox8)\n Vue.use(borderBox9)\n Vue.use(borderBox10)\n Vue.use(borderBox11)\n Vue.use(borderBox12)\n Vue.use(borderBox13)\n\n // decoration\n Vue.use(decoration1)\n Vue.use(decoration2)\n Vue.use(decoration3)\n Vue.use(decoration4)\n Vue.use(decoration5)\n Vue.use(decoration6)\n Vue.use(decoration7)\n Vue.use(decoration8)\n Vue.use(decoration9)\n Vue.use(decoration10)\n Vue.use(decoration11)\n Vue.use(decoration12)\n\n // charts\n Vue.use(charts)\n\n Vue.use(activeRingChart)\n Vue.use(capsuleChart)\n Vue.use(waterLevelPond)\n Vue.use(percentPond)\n Vue.use(flylineChart)\n Vue.use(flylineChartEnhanced)\n Vue.use(conicalColumnChart)\n Vue.use(digitalFlop)\n Vue.use(scrollBoard)\n Vue.use(scrollRankingBoard)\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = exports.easeInOutBounce = exports.easeOutBounce = exports.easeInBounce = exports.easeInOutElastic = exports.easeOutElastic = exports.easeInElastic = exports.easeInOutBack = exports.easeOutBack = exports.easeInBack = exports.easeInOutQuint = exports.easeOutQuint = exports.easeInQuint = exports.easeInOutQuart = exports.easeOutQuart = exports.easeInQuart = exports.easeInOutCubic = exports.easeOutCubic = exports.easeInCubic = exports.easeInOutQuad = exports.easeOutQuad = exports.easeInQuad = exports.easeInOutSine = exports.easeOutSine = exports.easeInSine = exports.linear = void 0;\nvar linear = [[[0, 1], '', [0.33, 0.67]], [[1, 0], [0.67, 0.33]]];\n/**\r\n * @description Sine\r\n */\n\nexports.linear = linear;\nvar easeInSine = [[[0, 1]], [[0.538, 0.564], [0.169, 0.912], [0.880, 0.196]], [[1, 0]]];\nexports.easeInSine = easeInSine;\nvar easeOutSine = [[[0, 1]], [[0.444, 0.448], [0.169, 0.736], [0.718, 0.16]], [[1, 0]]];\nexports.easeOutSine = easeOutSine;\nvar easeInOutSine = [[[0, 1]], [[0.5, 0.5], [0.2, 1], [0.8, 0]], [[1, 0]]];\n/**\r\n * @description Quad\r\n */\n\nexports.easeInOutSine = easeInOutSine;\nvar easeInQuad = [[[0, 1]], [[0.550, 0.584], [0.231, 0.904], [0.868, 0.264]], [[1, 0]]];\nexports.easeInQuad = easeInQuad;\nvar easeOutQuad = [[[0, 1]], [[0.413, 0.428], [0.065, 0.816], [0.760, 0.04]], [[1, 0]]];\nexports.easeOutQuad = easeOutQuad;\nvar easeInOutQuad = [[[0, 1]], [[0.5, 0.5], [0.3, 0.9], [0.7, 0.1]], [[1, 0]]];\n/**\r\n * @description Cubic\r\n */\n\nexports.easeInOutQuad = easeInOutQuad;\nvar easeInCubic = [[[0, 1]], [[0.679, 0.688], [0.366, 0.992], [0.992, 0.384]], [[1, 0]]];\nexports.easeInCubic = easeInCubic;\nvar easeOutCubic = [[[0, 1]], [[0.321, 0.312], [0.008, 0.616], [0.634, 0.008]], [[1, 0]]];\nexports.easeOutCubic = easeOutCubic;\nvar easeInOutCubic = [[[0, 1]], [[0.5, 0.5], [0.3, 1], [0.7, 0]], [[1, 0]]];\n/**\r\n * @description Quart\r\n */\n\nexports.easeInOutCubic = easeInOutCubic;\nvar easeInQuart = [[[0, 1]], [[0.812, 0.74], [0.611, 0.988], [1.013, 0.492]], [[1, 0]]];\nexports.easeInQuart = easeInQuart;\nvar easeOutQuart = [[[0, 1]], [[0.152, 0.244], [0.001, 0.448], [0.285, -0.02]], [[1, 0]]];\nexports.easeOutQuart = easeOutQuart;\nvar easeInOutQuart = [[[0, 1]], [[0.5, 0.5], [0.4, 1], [0.6, 0]], [[1, 0]]];\n/**\r\n * @description Quint\r\n */\n\nexports.easeInOutQuart = easeInOutQuart;\nvar easeInQuint = [[[0, 1]], [[0.857, 0.856], [0.714, 1], [1, 0.712]], [[1, 0]]];\nexports.easeInQuint = easeInQuint;\nvar easeOutQuint = [[[0, 1]], [[0.108, 0.2], [0.001, 0.4], [0.214, -0.012]], [[1, 0]]];\nexports.easeOutQuint = easeOutQuint;\nvar easeInOutQuint = [[[0, 1]], [[0.5, 0.5], [0.5, 1], [0.5, 0]], [[1, 0]]];\n/**\r\n * @description Back\r\n */\n\nexports.easeInOutQuint = easeInOutQuint;\nvar easeInBack = [[[0, 1]], [[0.667, 0.896], [0.380, 1.184], [0.955, 0.616]], [[1, 0]]];\nexports.easeInBack = easeInBack;\nvar easeOutBack = [[[0, 1]], [[0.335, 0.028], [0.061, 0.22], [0.631, -0.18]], [[1, 0]]];\nexports.easeOutBack = easeOutBack;\nvar easeInOutBack = [[[0, 1]], [[0.5, 0.5], [0.4, 1.4], [0.6, -0.4]], [[1, 0]]];\n/**\r\n * @description Elastic\r\n */\n\nexports.easeInOutBack = easeInOutBack;\nvar easeInElastic = [[[0, 1]], [[0.474, 0.964], [0.382, 0.988], [0.557, 0.952]], [[0.619, 1.076], [0.565, 1.088], [0.669, 1.08]], [[0.770, 0.916], [0.712, 0.924], [0.847, 0.904]], [[0.911, 1.304], [0.872, 1.316], [0.961, 1.34]], [[1, 0]]];\nexports.easeInElastic = easeInElastic;\nvar easeOutElastic = [[[0, 1]], [[0.073, -0.32], [0.034, -0.328], [0.104, -0.344]], [[0.191, 0.092], [0.110, 0.06], [0.256, 0.08]], [[0.310, -0.076], [0.260, -0.068], [0.357, -0.076]], [[0.432, 0.032], [0.362, 0.028], [0.683, -0.004]], [[1, 0]]];\nexports.easeOutElastic = easeOutElastic;\nvar easeInOutElastic = [[[0, 1]], [[0.210, 0.94], [0.167, 0.884], [0.252, 0.98]], [[0.299, 1.104], [0.256, 1.092], [0.347, 1.108]], [[0.5, 0.496], [0.451, 0.672], [0.548, 0.324]], [[0.696, -0.108], [0.652, -0.112], [0.741, -0.124]], [[0.805, 0.064], [0.756, 0.012], [0.866, 0.096]], [[1, 0]]];\n/**\r\n * @description Bounce\r\n */\n\nexports.easeInOutElastic = easeInOutElastic;\nvar easeInBounce = [[[0, 1]], [[0.148, 1], [0.075, 0.868], [0.193, 0.848]], [[0.326, 1], [0.276, 0.836], [0.405, 0.712]], [[0.600, 1], [0.511, 0.708], [0.671, 0.348]], [[1, 0]]];\nexports.easeInBounce = easeInBounce;\nvar easeOutBounce = [[[0, 1]], [[0.357, 0.004], [0.270, 0.592], [0.376, 0.252]], [[0.604, -0.004], [0.548, 0.312], [0.669, 0.184]], [[0.820, 0], [0.749, 0.184], [0.905, 0.132]], [[1, 0]]];\nexports.easeOutBounce = easeOutBounce;\nvar easeInOutBounce = [[[0, 1]], [[0.102, 1], [0.050, 0.864], [0.117, 0.86]], [[0.216, 0.996], [0.208, 0.844], [0.227, 0.808]], [[0.347, 0.996], [0.343, 0.8], [0.480, 0.292]], [[0.635, 0.004], [0.511, 0.676], [0.656, 0.208]], [[0.787, 0], [0.760, 0.2], [0.795, 0.144]], [[0.905, -0.004], [0.899, 0.164], [0.944, 0.144]], [[1, 0]]];\nexports.easeInOutBounce = easeInOutBounce;\n\nvar _default = new Map([['linear', linear], ['easeInSine', easeInSine], ['easeOutSine', easeOutSine], ['easeInOutSine', easeInOutSine], ['easeInQuad', easeInQuad], ['easeOutQuad', easeOutQuad], ['easeInOutQuad', easeInOutQuad], ['easeInCubic', easeInCubic], ['easeOutCubic', easeOutCubic], ['easeInOutCubic', easeInOutCubic], ['easeInQuart', easeInQuart], ['easeOutQuart', easeOutQuart], ['easeInOutQuart', easeInOutQuart], ['easeInQuint', easeInQuint], ['easeOutQuint', easeOutQuint], ['easeInOutQuint', easeInOutQuint], ['easeInBack', easeInBack], ['easeOutBack', easeOutBack], ['easeInOutBack', easeInOutBack], ['easeInElastic', easeInElastic], ['easeOutElastic', easeOutElastic], ['easeInOutElastic', easeInOutElastic], ['easeInBounce', easeInBounce], ['easeOutBounce', easeOutBounce], ['easeInOutBounce', easeInOutBounce]]);\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.transition = transition;\nexports.injectNewCurve = injectNewCurve;\nexports[\"default\"] = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _curves = _interopRequireDefault(require(\"./config/curves\"));\n\nvar defaultTransitionBC = 'linear';\n/**\r\n * @description Get the N-frame animation state by the start and end state\r\n * of the animation and the easing curve\r\n * @param {String|Array} tBC Easing curve name or data\r\n * @param {Number|Array|Object} startState Animation start state\r\n * @param {Number|Array|Object} endState Animation end state\r\n * @param {Number} frameNum Number of Animation frames\r\n * @param {Boolean} deep Whether to use recursive mode\r\n * @return {Array|Boolean} State of each frame of the animation (Invalid input will return false)\r\n */\n\nfunction transition(tBC) {\n var startState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var endState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var frameNum = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 30;\n var deep = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n if (!checkParams.apply(void 0, arguments)) return false;\n\n try {\n // Get the transition bezier curve\n var bezierCurve = getBezierCurve(tBC); // Get the progress of each frame state\n\n var frameStateProgress = getFrameStateProgress(bezierCurve, frameNum); // If the recursion mode is not enabled or the state type is Number, the shallow state calculation is performed directly.\n\n if (!deep || typeof endState === 'number') return getTransitionState(startState, endState, frameStateProgress);\n return recursionTransitionState(startState, endState, frameStateProgress);\n } catch (_unused) {\n console.warn('Transition parameter may be abnormal!');\n return [endState];\n }\n}\n/**\r\n * @description Check if the parameters are legal\r\n * @param {String} tBC Name of transition bezier curve\r\n * @param {Any} startState Transition start state\r\n * @param {Any} endState Transition end state\r\n * @param {Number} frameNum Number of transition frames\r\n * @return {Boolean} Is the parameter legal\r\n */\n\n\nfunction checkParams(tBC) {\n var startState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var endState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var frameNum = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 30;\n\n if (!tBC || startState === false || endState === false || !frameNum) {\n console.error('transition: Missing Parameters!');\n return false;\n }\n\n if ((0, _typeof2[\"default\"])(startState) !== (0, _typeof2[\"default\"])(endState)) {\n console.error('transition: Inconsistent Status Types!');\n return false;\n }\n\n var stateType = (0, _typeof2[\"default\"])(endState);\n\n if (stateType === 'string' || stateType === 'boolean' || !tBC.length) {\n console.error('transition: Unsupported Data Type of State!');\n return false;\n }\n\n if (!_curves[\"default\"].has(tBC) && !(tBC instanceof Array)) {\n console.warn('transition: Transition curve not found, default curve will be used!');\n }\n\n return true;\n}\n/**\r\n * @description Get the transition bezier curve\r\n * @param {String} tBC Name of transition bezier curve\r\n * @return {Array} Bezier curve data\r\n */\n\n\nfunction getBezierCurve(tBC) {\n var bezierCurve = '';\n\n if (_curves[\"default\"].has(tBC)) {\n bezierCurve = _curves[\"default\"].get(tBC);\n } else if (tBC instanceof Array) {\n bezierCurve = tBC;\n } else {\n bezierCurve = _curves[\"default\"].get(defaultTransitionBC);\n }\n\n return bezierCurve;\n}\n/**\r\n * @description Get the progress of each frame state\r\n * @param {Array} bezierCurve Transition bezier curve\r\n * @param {Number} frameNum Number of transition frames\r\n * @return {Array} Progress of each frame state\r\n */\n\n\nfunction getFrameStateProgress(bezierCurve, frameNum) {\n var tMinus = 1 / (frameNum - 1);\n var tState = new Array(frameNum).fill(0).map(function (t, i) {\n return i * tMinus;\n });\n var frameState = tState.map(function (t) {\n return getFrameStateFromT(bezierCurve, t);\n });\n return frameState;\n}\n/**\r\n * @description Get the progress of the corresponding frame according to t\r\n * @param {Array} bezierCurve Transition bezier curve\r\n * @param {Number} t Current frame t\r\n * @return {Number} Progress of current frame\r\n */\n\n\nfunction getFrameStateFromT(bezierCurve, t) {\n var tBezierCurvePoint = getBezierCurvePointFromT(bezierCurve, t);\n var bezierCurvePointT = getBezierCurvePointTFromReT(tBezierCurvePoint, t);\n return getBezierCurveTState(tBezierCurvePoint, bezierCurvePointT);\n}\n/**\r\n * @description Get the corresponding sub-curve according to t\r\n * @param {Array} bezierCurve Transition bezier curve\r\n * @param {Number} t Current frame t\r\n * @return {Array} Sub-curve of t\r\n */\n\n\nfunction getBezierCurvePointFromT(bezierCurve, t) {\n var lastIndex = bezierCurve.length - 1;\n var begin = '',\n end = '';\n bezierCurve.findIndex(function (item, i) {\n if (i === lastIndex) return;\n begin = item;\n end = bezierCurve[i + 1];\n var currentMainPointX = begin[0][0];\n var nextMainPointX = end[0][0];\n return t >= currentMainPointX && t < nextMainPointX;\n });\n var p0 = begin[0];\n var p1 = begin[2] || begin[0];\n var p2 = end[1] || end[0];\n var p3 = end[0];\n return [p0, p1, p2, p3];\n}\n/**\r\n * @description Get local t based on t and sub-curve\r\n * @param {Array} bezierCurve Sub-curve\r\n * @param {Number} t Current frame t\r\n * @return {Number} local t of sub-curve\r\n */\n\n\nfunction getBezierCurvePointTFromReT(bezierCurve, t) {\n var reBeginX = bezierCurve[0][0];\n var reEndX = bezierCurve[3][0];\n var xMinus = reEndX - reBeginX;\n var tMinus = t - reBeginX;\n return tMinus / xMinus;\n}\n/**\r\n * @description Get the curve progress of t\r\n * @param {Array} bezierCurve Sub-curve\r\n * @param {Number} t Current frame t\r\n * @return {Number} Progress of current frame\r\n */\n\n\nfunction getBezierCurveTState(_ref, t) {\n var _ref2 = (0, _slicedToArray2[\"default\"])(_ref, 4),\n _ref2$ = (0, _slicedToArray2[\"default\"])(_ref2[0], 2),\n p0 = _ref2$[1],\n _ref2$2 = (0, _slicedToArray2[\"default\"])(_ref2[1], 2),\n p1 = _ref2$2[1],\n _ref2$3 = (0, _slicedToArray2[\"default\"])(_ref2[2], 2),\n p2 = _ref2$3[1],\n _ref2$4 = (0, _slicedToArray2[\"default\"])(_ref2[3], 2),\n p3 = _ref2$4[1];\n\n var pow = Math.pow;\n var tMinus = 1 - t;\n var result1 = p0 * pow(tMinus, 3);\n var result2 = 3 * p1 * t * pow(tMinus, 2);\n var result3 = 3 * p2 * pow(t, 2) * tMinus;\n var result4 = p3 * pow(t, 3);\n return 1 - (result1 + result2 + result3 + result4);\n}\n/**\r\n * @description Get transition state according to frame progress\r\n * @param {Any} startState Transition start state\r\n * @param {Any} endState Transition end state\r\n * @param {Array} frameState Frame state progress\r\n * @return {Array} Transition frame state\r\n */\n\n\nfunction getTransitionState(begin, end, frameState) {\n var stateType = 'object';\n if (typeof begin === 'number') stateType = 'number';\n if (begin instanceof Array) stateType = 'array';\n if (stateType === 'number') return getNumberTransitionState(begin, end, frameState);\n if (stateType === 'array') return getArrayTransitionState(begin, end, frameState);\n if (stateType === 'object') return getObjectTransitionState(begin, end, frameState);\n return frameState.map(function (t) {\n return end;\n });\n}\n/**\r\n * @description Get the transition data of the number type\r\n * @param {Number} startState Transition start state\r\n * @param {Number} endState Transition end state\r\n * @param {Array} frameState Frame state progress\r\n * @return {Array} Transition frame state\r\n */\n\n\nfunction getNumberTransitionState(begin, end, frameState) {\n var minus = end - begin;\n return frameState.map(function (s) {\n return begin + minus * s;\n });\n}\n/**\r\n * @description Get the transition data of the array type\r\n * @param {Array} startState Transition start state\r\n * @param {Array} endState Transition end state\r\n * @param {Array} frameState Frame state progress\r\n * @return {Array} Transition frame state\r\n */\n\n\nfunction getArrayTransitionState(begin, end, frameState) {\n var minus = end.map(function (v, i) {\n if (typeof v !== 'number') return false;\n return v - begin[i];\n });\n return frameState.map(function (s) {\n return minus.map(function (v, i) {\n if (v === false) return end[i];\n return begin[i] + v * s;\n });\n });\n}\n/**\r\n * @description Get the transition data of the object type\r\n * @param {Object} startState Transition start state\r\n * @param {Object} endState Transition end state\r\n * @param {Array} frameState Frame state progress\r\n * @return {Array} Transition frame state\r\n */\n\n\nfunction getObjectTransitionState(begin, end, frameState) {\n var keys = Object.keys(end);\n var beginValue = keys.map(function (k) {\n return begin[k];\n });\n var endValue = keys.map(function (k) {\n return end[k];\n });\n var arrayState = getArrayTransitionState(beginValue, endValue, frameState);\n return arrayState.map(function (item) {\n var frameData = {};\n item.forEach(function (v, i) {\n return frameData[keys[i]] = v;\n });\n return frameData;\n });\n}\n/**\r\n * @description Get the transition state data by recursion\r\n * @param {Array|Object} startState Transition start state\r\n * @param {Array|Object} endState Transition end state\r\n * @param {Array} frameState Frame state progress\r\n * @return {Array} Transition frame state\r\n */\n\n\nfunction recursionTransitionState(begin, end, frameState) {\n var state = getTransitionState(begin, end, frameState);\n\n var _loop = function _loop(key) {\n var bTemp = begin[key];\n var eTemp = end[key];\n if ((0, _typeof2[\"default\"])(eTemp) !== 'object') return \"continue\";\n var data = recursionTransitionState(bTemp, eTemp, frameState);\n state.forEach(function (fs, i) {\n return fs[key] = data[i];\n });\n };\n\n for (var key in end) {\n var _ret = _loop(key);\n\n if (_ret === \"continue\") continue;\n }\n\n return state;\n}\n/**\r\n * @description Inject new curve into curves as config\r\n * @param {Any} key The key of curve\r\n * @param {Array} curve Bezier curve data\r\n * @return {Undefined} No return\r\n */\n\n\nfunction injectNewCurve(key, curve) {\n if (!key || !curve) {\n console.error('InjectNewCurve Missing Parameters!');\n return;\n }\n\n _curves[\"default\"].set(key, curve);\n}\n\nvar _default = transition;\nexports[\"default\"] = _default;","import _extends from 'babel-runtime/helpers/extends';\nimport _typeof from 'babel-runtime/helpers/typeof';\nvar formatRegExp = /%[sdj%]/g;\n\nexport var warning = function warning() {};\n\n// don't print warning message when in production env or node runtime\nif (process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') {\n warning = function warning(type, errors) {\n if (typeof console !== 'undefined' && console.warn) {\n if (errors.every(function (e) {\n return typeof e === 'string';\n })) {\n console.warn(type, errors);\n }\n }\n };\n}\n\nexport function format() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var i = 1;\n var f = args[0];\n var len = args.length;\n if (typeof f === 'function') {\n return f.apply(null, args.slice(1));\n }\n if (typeof f === 'string') {\n var str = String(f).replace(formatRegExp, function (x) {\n if (x === '%%') {\n return '%';\n }\n if (i >= len) {\n return x;\n }\n switch (x) {\n case '%s':\n return String(args[i++]);\n case '%d':\n return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n break;\n default:\n return x;\n }\n });\n for (var arg = args[i]; i < len; arg = args[++i]) {\n str += ' ' + arg;\n }\n return str;\n }\n return f;\n}\n\nfunction isNativeStringType(type) {\n return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'pattern';\n}\n\nexport function isEmptyValue(value, type) {\n if (value === undefined || value === null) {\n return true;\n }\n if (type === 'array' && Array.isArray(value) && !value.length) {\n return true;\n }\n if (isNativeStringType(type) && typeof value === 'string' && !value) {\n return true;\n }\n return false;\n}\n\nexport function isEmptyObject(obj) {\n return Object.keys(obj).length === 0;\n}\n\nfunction asyncParallelArray(arr, func, callback) {\n var results = [];\n var total = 0;\n var arrLength = arr.length;\n\n function count(errors) {\n results.push.apply(results, errors);\n total++;\n if (total === arrLength) {\n callback(results);\n }\n }\n\n arr.forEach(function (a) {\n func(a, count);\n });\n}\n\nfunction asyncSerialArray(arr, func, callback) {\n var index = 0;\n var arrLength = arr.length;\n\n function next(errors) {\n if (errors && errors.length) {\n callback(errors);\n return;\n }\n var original = index;\n index = index + 1;\n if (original < arrLength) {\n func(arr[original], next);\n } else {\n callback([]);\n }\n }\n\n next([]);\n}\n\nfunction flattenObjArr(objArr) {\n var ret = [];\n Object.keys(objArr).forEach(function (k) {\n ret.push.apply(ret, objArr[k]);\n });\n return ret;\n}\n\nexport function asyncMap(objArr, option, func, callback) {\n if (option.first) {\n var flattenArr = flattenObjArr(objArr);\n return asyncSerialArray(flattenArr, func, callback);\n }\n var firstFields = option.firstFields || [];\n if (firstFields === true) {\n firstFields = Object.keys(objArr);\n }\n var objArrKeys = Object.keys(objArr);\n var objArrLength = objArrKeys.length;\n var total = 0;\n var results = [];\n var next = function next(errors) {\n results.push.apply(results, errors);\n total++;\n if (total === objArrLength) {\n callback(results);\n }\n };\n objArrKeys.forEach(function (key) {\n var arr = objArr[key];\n if (firstFields.indexOf(key) !== -1) {\n asyncSerialArray(arr, func, next);\n } else {\n asyncParallelArray(arr, func, next);\n }\n });\n}\n\nexport function complementError(rule) {\n return function (oe) {\n if (oe && oe.message) {\n oe.field = oe.field || rule.fullField;\n return oe;\n }\n return {\n message: oe,\n field: oe.field || rule.fullField\n };\n };\n}\n\nexport function deepMerge(target, source) {\n if (source) {\n for (var s in source) {\n if (source.hasOwnProperty(s)) {\n var value = source[s];\n if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(target[s]) === 'object') {\n target[s] = _extends({}, target[s], value);\n } else {\n target[s] = value;\n }\n }\n }\n }\n return target;\n}","import * as util from '../util';\n\n/**\n * Rule for validating required fields.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction required(rule, value, source, errors, options, type) {\n if (rule.required && (!source.hasOwnProperty(rule.field) || util.isEmptyValue(value, type || rule.type))) {\n errors.push(util.format(options.messages.required, rule.fullField));\n }\n}\n\nexport default required;","import * as util from '../util';\n\n/**\n * Rule for validating whitespace.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction whitespace(rule, value, source, errors, options) {\n if (/^\\s+$/.test(value) || value === '') {\n errors.push(util.format(options.messages.whitespace, rule.fullField));\n }\n}\n\nexport default whitespace;","import _typeof from 'babel-runtime/helpers/typeof';\nimport * as util from '../util';\nimport required from './required';\n\n/* eslint max-len:0 */\n\nvar pattern = {\n // http://emailregex.com/\n email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n url: new RegExp('^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$', 'i'),\n hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i\n};\n\nvar types = {\n integer: function integer(value) {\n return types.number(value) && parseInt(value, 10) === value;\n },\n float: function float(value) {\n return types.number(value) && !types.integer(value);\n },\n array: function array(value) {\n return Array.isArray(value);\n },\n regexp: function regexp(value) {\n if (value instanceof RegExp) {\n return true;\n }\n try {\n return !!new RegExp(value);\n } catch (e) {\n return false;\n }\n },\n date: function date(value) {\n return typeof value.getTime === 'function' && typeof value.getMonth === 'function' && typeof value.getYear === 'function';\n },\n number: function number(value) {\n if (isNaN(value)) {\n return false;\n }\n return typeof value === 'number';\n },\n object: function object(value) {\n return (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && !types.array(value);\n },\n method: function method(value) {\n return typeof value === 'function';\n },\n email: function email(value) {\n return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255;\n },\n url: function url(value) {\n return typeof value === 'string' && !!value.match(pattern.url);\n },\n hex: function hex(value) {\n return typeof value === 'string' && !!value.match(pattern.hex);\n }\n};\n\n/**\n * Rule for validating the type of a value.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction type(rule, value, source, errors, options) {\n if (rule.required && value === undefined) {\n required(rule, value, source, errors, options);\n return;\n }\n var custom = ['integer', 'float', 'array', 'regexp', 'object', 'method', 'email', 'number', 'date', 'url', 'hex'];\n var ruleType = rule.type;\n if (custom.indexOf(ruleType) > -1) {\n if (!types[ruleType](value)) {\n errors.push(util.format(options.messages.types[ruleType], rule.fullField, rule.type));\n }\n // straight typeof check\n } else if (ruleType && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== rule.type) {\n errors.push(util.format(options.messages.types[ruleType], rule.fullField, rule.type));\n }\n}\n\nexport default type;","import * as util from '../util';\n\n/**\n * Rule for validating minimum and maximum allowed values.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction range(rule, value, source, errors, options) {\n var len = typeof rule.len === 'number';\n var min = typeof rule.min === 'number';\n var max = typeof rule.max === 'number';\n // 正则匹配码点范围从U+010000一直到U+10FFFF的文字(补充平面Supplementary Plane)\n var spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n var val = value;\n var key = null;\n var num = typeof value === 'number';\n var str = typeof value === 'string';\n var arr = Array.isArray(value);\n if (num) {\n key = 'number';\n } else if (str) {\n key = 'string';\n } else if (arr) {\n key = 'array';\n }\n // if the value is not of a supported type for range validation\n // the validation rule rule should use the\n // type property to also test for a particular type\n if (!key) {\n return false;\n }\n if (arr) {\n val = value.length;\n }\n if (str) {\n // 处理码点大于U+010000的文字length属性不准确的bug,如\"𠮷𠮷𠮷\".lenght !== 3\n val = value.replace(spRegexp, '_').length;\n }\n if (len) {\n if (val !== rule.len) {\n errors.push(util.format(options.messages[key].len, rule.fullField, rule.len));\n }\n } else if (min && !max && val < rule.min) {\n errors.push(util.format(options.messages[key].min, rule.fullField, rule.min));\n } else if (max && !min && val > rule.max) {\n errors.push(util.format(options.messages[key].max, rule.fullField, rule.max));\n } else if (min && max && (val < rule.min || val > rule.max)) {\n errors.push(util.format(options.messages[key].range, rule.fullField, rule.min, rule.max));\n }\n}\n\nexport default range;","import * as util from '../util';\nvar ENUM = 'enum';\n\n/**\n * Rule for validating a value exists in an enumerable list.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction enumerable(rule, value, source, errors, options) {\n rule[ENUM] = Array.isArray(rule[ENUM]) ? rule[ENUM] : [];\n if (rule[ENUM].indexOf(value) === -1) {\n errors.push(util.format(options.messages[ENUM], rule.fullField, rule[ENUM].join(', ')));\n }\n}\n\nexport default enumerable;","import * as util from '../util';\n\n/**\n * Rule for validating a regular expression pattern.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction pattern(rule, value, source, errors, options) {\n if (rule.pattern) {\n if (rule.pattern instanceof RegExp) {\n // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n // flag is accidentally set to `true`, which in a validation scenario\n // is not necessary and the result might be misleading\n rule.pattern.lastIndex = 0;\n if (!rule.pattern.test(value)) {\n errors.push(util.format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n } else if (typeof rule.pattern === 'string') {\n var _pattern = new RegExp(rule.pattern);\n if (!_pattern.test(value)) {\n errors.push(util.format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n }\n }\n}\n\nexport default pattern;","import required from './required';\nimport whitespace from './whitespace';\nimport type from './type';\nimport range from './range';\nimport enumRule from './enum';\nimport pattern from './pattern';\n\nexport default {\n required: required,\n whitespace: whitespace,\n type: type,\n range: range,\n 'enum': enumRule,\n pattern: pattern\n};","import rules from '../rule/';\nimport { isEmptyValue } from '../util';\n\n/**\n * Performs validation for string types.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction string(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, 'string');\n if (!isEmptyValue(value, 'string')) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n rules.pattern(rule, value, source, errors, options);\n if (rule.whitespace === true) {\n rules.whitespace(rule, value, source, errors, options);\n }\n }\n }\n callback(errors);\n}\n\nexport default string;","import rules from '../rule/';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a function.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction method(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default method;","import rules from '../rule/';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a number.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction number(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default number;","import { isEmptyValue } from '../util';\nimport rules from '../rule/';\n\n/**\n * Validates a boolean.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction boolean(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default boolean;","import rules from '../rule/';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates the regular expression type.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction regexp(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default regexp;","import rules from '../rule/';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a number is an integer.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction integer(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default integer;","import rules from '../rule/';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a number is a floating point number.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction floatFn(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default floatFn;","import rules from '../rule/';\nimport { isEmptyValue } from '../util';\n/**\n * Validates an array.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction array(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value, 'array') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, 'array');\n if (!isEmptyValue(value, 'array')) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default array;","import rules from '../rule/';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates an object.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction object(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default object;","import rules from '../rule/';\nimport { isEmptyValue } from '../util';\nvar ENUM = 'enum';\n\n/**\n * Validates an enumerable list.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction enumerable(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value) {\n rules[ENUM](rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default enumerable;","import rules from '../rule/';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a regular expression pattern.\n *\n * Performs validation when a rule only contains\n * a pattern property but is not declared as a string type.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction pattern(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value, 'string')) {\n rules.pattern(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default pattern;","import rules from '../rule/';\nimport { isEmptyValue } from '../util';\n\nfunction date(rule, value, callback, source, options) {\n // console.log('integer rule called %j', rule);\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n // console.log('validate on %s value', value);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value)) {\n var dateObject = void 0;\n\n if (typeof value === 'number') {\n dateObject = new Date(value);\n } else {\n dateObject = value;\n }\n\n rules.type(rule, dateObject, source, errors, options);\n if (dateObject) {\n rules.range(rule, dateObject.getTime(), source, errors, options);\n }\n }\n }\n callback(errors);\n}\n\nexport default date;","import _typeof from 'babel-runtime/helpers/typeof';\nimport rules from '../rule/';\n\nfunction required(rule, value, callback, source, options) {\n var errors = [];\n var type = Array.isArray(value) ? 'array' : typeof value === 'undefined' ? 'undefined' : _typeof(value);\n rules.required(rule, value, source, errors, options, type);\n callback(errors);\n}\n\nexport default required;","import rules from '../rule/';\nimport { isEmptyValue } from '../util';\n\nfunction type(rule, value, callback, source, options) {\n var ruleType = rule.type;\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value, ruleType) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, ruleType);\n if (!isEmptyValue(value, ruleType)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default type;","import string from './string';\nimport method from './method';\nimport number from './number';\nimport boolean from './boolean';\nimport regexp from './regexp';\nimport integer from './integer';\nimport float from './float';\nimport array from './array';\nimport object from './object';\nimport enumValidator from './enum';\nimport pattern from './pattern';\nimport date from './date';\nimport required from './required';\nimport type from './type';\n\nexport default {\n string: string,\n method: method,\n number: number,\n boolean: boolean,\n regexp: regexp,\n integer: integer,\n float: float,\n array: array,\n object: object,\n 'enum': enumValidator,\n pattern: pattern,\n date: date,\n url: type,\n hex: type,\n email: type,\n required: required\n};","export function newMessages() {\n return {\n 'default': 'Validation error on field %s',\n required: '%s is required',\n 'enum': '%s must be one of %s',\n whitespace: '%s cannot be empty',\n date: {\n format: '%s date %s is invalid for format %s',\n parse: '%s date could not be parsed, %s is invalid ',\n invalid: '%s date %s is invalid'\n },\n types: {\n string: '%s is not a %s',\n method: '%s is not a %s (function)',\n array: '%s is not an %s',\n object: '%s is not an %s',\n number: '%s is not a %s',\n date: '%s is not a %s',\n boolean: '%s is not a %s',\n integer: '%s is not an %s',\n float: '%s is not a %s',\n regexp: '%s is not a valid %s',\n email: '%s is not a valid %s',\n url: '%s is not a valid %s',\n hex: '%s is not a valid %s'\n },\n string: {\n len: '%s must be exactly %s characters',\n min: '%s must be at least %s characters',\n max: '%s cannot be longer than %s characters',\n range: '%s must be between %s and %s characters'\n },\n number: {\n len: '%s must equal %s',\n min: '%s cannot be less than %s',\n max: '%s cannot be greater than %s',\n range: '%s must be between %s and %s'\n },\n array: {\n len: '%s must be exactly %s in length',\n min: '%s cannot be less than %s in length',\n max: '%s cannot be greater than %s in length',\n range: '%s must be between %s and %s in length'\n },\n pattern: {\n mismatch: '%s value %s does not match pattern %s'\n },\n clone: function clone() {\n var cloned = JSON.parse(JSON.stringify(this));\n cloned.clone = this.clone;\n return cloned;\n }\n };\n}\n\nexport var messages = newMessages();","import _extends from 'babel-runtime/helpers/extends';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport { format, complementError, asyncMap, warning, deepMerge } from './util';\nimport validators from './validator/';\nimport { messages as defaultMessages, newMessages } from './messages';\n\n/**\n * Encapsulates a validation schema.\n *\n * @param descriptor An object declaring validation rules\n * for this schema.\n */\nfunction Schema(descriptor) {\n this.rules = null;\n this._messages = defaultMessages;\n this.define(descriptor);\n}\n\nSchema.prototype = {\n messages: function messages(_messages) {\n if (_messages) {\n this._messages = deepMerge(newMessages(), _messages);\n }\n return this._messages;\n },\n define: function define(rules) {\n if (!rules) {\n throw new Error('Cannot configure a schema with no rules');\n }\n if ((typeof rules === 'undefined' ? 'undefined' : _typeof(rules)) !== 'object' || Array.isArray(rules)) {\n throw new Error('Rules must be an object');\n }\n this.rules = {};\n var z = void 0;\n var item = void 0;\n for (z in rules) {\n if (rules.hasOwnProperty(z)) {\n item = rules[z];\n this.rules[z] = Array.isArray(item) ? item : [item];\n }\n }\n },\n validate: function validate(source_) {\n var _this = this;\n\n var o = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var oc = arguments[2];\n\n var source = source_;\n var options = o;\n var callback = oc;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!this.rules || Object.keys(this.rules).length === 0) {\n if (callback) {\n callback();\n }\n return;\n }\n function complete(results) {\n var i = void 0;\n var field = void 0;\n var errors = [];\n var fields = {};\n\n function add(e) {\n if (Array.isArray(e)) {\n errors = errors.concat.apply(errors, e);\n } else {\n errors.push(e);\n }\n }\n\n for (i = 0; i < results.length; i++) {\n add(results[i]);\n }\n if (!errors.length) {\n errors = null;\n fields = null;\n } else {\n for (i = 0; i < errors.length; i++) {\n field = errors[i].field;\n fields[field] = fields[field] || [];\n fields[field].push(errors[i]);\n }\n }\n callback(errors, fields);\n }\n\n if (options.messages) {\n var messages = this.messages();\n if (messages === defaultMessages) {\n messages = newMessages();\n }\n deepMerge(messages, options.messages);\n options.messages = messages;\n } else {\n options.messages = this.messages();\n }\n var arr = void 0;\n var value = void 0;\n var series = {};\n var keys = options.keys || Object.keys(this.rules);\n keys.forEach(function (z) {\n arr = _this.rules[z];\n value = source[z];\n arr.forEach(function (r) {\n var rule = r;\n if (typeof rule.transform === 'function') {\n if (source === source_) {\n source = _extends({}, source);\n }\n value = source[z] = rule.transform(value);\n }\n if (typeof rule === 'function') {\n rule = {\n validator: rule\n };\n } else {\n rule = _extends({}, rule);\n }\n rule.validator = _this.getValidationMethod(rule);\n rule.field = z;\n rule.fullField = rule.fullField || z;\n rule.type = _this.getType(rule);\n if (!rule.validator) {\n return;\n }\n series[z] = series[z] || [];\n series[z].push({\n rule: rule,\n value: value,\n source: source,\n field: z\n });\n });\n });\n var errorFields = {};\n asyncMap(series, options, function (data, doIt) {\n var rule = data.rule;\n var deep = (rule.type === 'object' || rule.type === 'array') && (_typeof(rule.fields) === 'object' || _typeof(rule.defaultField) === 'object');\n deep = deep && (rule.required || !rule.required && data.value);\n rule.field = data.field;\n function addFullfield(key, schema) {\n return _extends({}, schema, {\n fullField: rule.fullField + '.' + key\n });\n }\n\n function cb() {\n var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var errors = e;\n if (!Array.isArray(errors)) {\n errors = [errors];\n }\n if (errors.length) {\n warning('async-validator:', errors);\n }\n if (errors.length && rule.message) {\n errors = [].concat(rule.message);\n }\n\n errors = errors.map(complementError(rule));\n\n if (options.first && errors.length) {\n errorFields[rule.field] = 1;\n return doIt(errors);\n }\n if (!deep) {\n doIt(errors);\n } else {\n // if rule is required but the target object\n // does not exist fail at the rule level and don't\n // go deeper\n if (rule.required && !data.value) {\n if (rule.message) {\n errors = [].concat(rule.message).map(complementError(rule));\n } else if (options.error) {\n errors = [options.error(rule, format(options.messages.required, rule.field))];\n } else {\n errors = [];\n }\n return doIt(errors);\n }\n\n var fieldsSchema = {};\n if (rule.defaultField) {\n for (var k in data.value) {\n if (data.value.hasOwnProperty(k)) {\n fieldsSchema[k] = rule.defaultField;\n }\n }\n }\n fieldsSchema = _extends({}, fieldsSchema, data.rule.fields);\n for (var f in fieldsSchema) {\n if (fieldsSchema.hasOwnProperty(f)) {\n var fieldSchema = Array.isArray(fieldsSchema[f]) ? fieldsSchema[f] : [fieldsSchema[f]];\n fieldsSchema[f] = fieldSchema.map(addFullfield.bind(null, f));\n }\n }\n var schema = new Schema(fieldsSchema);\n schema.messages(options.messages);\n if (data.rule.options) {\n data.rule.options.messages = options.messages;\n data.rule.options.error = options.error;\n }\n schema.validate(data.value, data.rule.options || options, function (errs) {\n doIt(errs && errs.length ? errors.concat(errs) : errs);\n });\n }\n }\n\n var res = rule.validator(rule, data.value, cb, data.source, options);\n if (res && res.then) {\n res.then(function () {\n return cb();\n }, function (e) {\n return cb(e);\n });\n }\n }, function (results) {\n complete(results);\n });\n },\n getType: function getType(rule) {\n if (rule.type === undefined && rule.pattern instanceof RegExp) {\n rule.type = 'pattern';\n }\n if (typeof rule.validator !== 'function' && rule.type && !validators.hasOwnProperty(rule.type)) {\n throw new Error(format('Unknown rule type %s', rule.type));\n }\n return rule.type || 'string';\n },\n getValidationMethod: function getValidationMethod(rule) {\n if (typeof rule.validator === 'function') {\n return rule.validator;\n }\n var keys = Object.keys(rule);\n var messageIndex = keys.indexOf('message');\n if (messageIndex !== -1) {\n keys.splice(messageIndex, 1);\n }\n if (keys.length === 1 && keys[0] === 'required') {\n return validators.required;\n }\n return validators[this.getType(rule)] || false;\n }\n};\n\nSchema.register = function register(type, validator) {\n if (typeof validator !== 'function') {\n throw new Error('Cannot register a validator by type, validator is not a function');\n }\n validators[type] = validator;\n};\n\nSchema.messages = defaultMessages;\n\nexport default Schema;","var nestRE = /^(attrs|props|on|nativeOn|class|style|hook)$/\n\nmodule.exports = function mergeJSXProps (objs) {\n return objs.reduce(function (a, b) {\n var aa, bb, key, nestedKey, temp\n for (key in b) {\n aa = a[key]\n bb = b[key]\n if (aa && nestRE.test(key)) {\n // normalize class\n if (key === 'class') {\n if (typeof aa === 'string') {\n temp = aa\n a[key] = aa = {}\n aa[temp] = true\n }\n if (typeof bb === 'string') {\n temp = bb\n b[key] = bb = {}\n bb[temp] = true\n }\n }\n if (key === 'on' || key === 'nativeOn' || key === 'hook') {\n // merge functions\n for (nestedKey in bb) {\n aa[nestedKey] = mergeFn(aa[nestedKey], bb[nestedKey])\n }\n } else if (Array.isArray(aa)) {\n a[key] = aa.concat(bb)\n } else if (Array.isArray(bb)) {\n a[key] = [aa].concat(bb)\n } else {\n for (nestedKey in bb) {\n aa[nestedKey] = bb[nestedKey]\n }\n }\n } else {\n a[key] = b[key]\n }\n }\n return a\n }, {})\n}\n\nfunction mergeFn (a, b) {\n return function () {\n a && a.apply(this, arguments)\n b && b.apply(this, arguments)\n }\n}\n","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n",null,null,"(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cytoscapeCxtmenu\"] = factory();\n\telse\n\t\troot[\"cytoscapeCxtmenu\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 4);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar defaults = __webpack_require__(2);\nvar assign = __webpack_require__(1);\n\nvar _require = __webpack_require__(3),\n removeEles = _require.removeEles,\n setStyles = _require.setStyles,\n createElement = _require.createElement,\n getPixelRatio = _require.getPixelRatio,\n getOffset = _require.getOffset;\n\nvar cxtmenu = function cxtmenu(params) {\n var options = assign({}, defaults, params);\n var cy = this;\n var container = cy.container();\n var target = void 0;\n\n var data = {\n options: options,\n handlers: [],\n container: createElement({ class: 'cxtmenu' })\n };\n\n var wrapper = data.container;\n var parent = createElement();\n var canvas = createElement({ tag: 'canvas' });\n var commands = [];\n var c2d = canvas.getContext('2d');\n\n var r = 100; // defailt radius;\n var containerSize = (r + options.activePadding) * 2;\n var activeCommandI = void 0;\n var offset = void 0;\n\n container.insertBefore(wrapper, container.firstChild);\n wrapper.appendChild(parent);\n parent.appendChild(canvas);\n\n setStyles(wrapper, {\n position: 'absolute',\n zIndex: options.zIndex,\n userSelect: 'none',\n pointerEvents: 'none' // prevent events on menu in modern browsers\n });\n\n // prevent events on menu in legacy browsers\n ['mousedown', 'mousemove', 'mouseup', 'contextmenu'].forEach(function (evt) {\n wrapper.addEventListener(evt, function (e) {\n e.preventDefault();\n\n return false;\n });\n });\n\n setStyles(parent, {\n display: 'none',\n width: containerSize + 'px',\n height: containerSize + 'px',\n position: 'absolute',\n zIndex: 1,\n marginLeft: -options.activePadding + 'px',\n marginTop: -options.activePadding + 'px',\n userSelect: 'none'\n });\n\n canvas.width = containerSize;\n canvas.height = containerSize;\n\n function createMenuItems(r, rs) {\n removeEles('.cxtmenu-item', parent);\n var dtheta = 2 * Math.PI / commands.length;\n var theta1 = Math.PI / 2;\n var theta2 = theta1 + dtheta;\n\n for (var i = 0; i < commands.length; i++) {\n var command = commands[i];\n\n var midtheta = (theta1 + theta2) / 2;\n var rx1 = (r + rs) / 2 * Math.cos(midtheta);\n var ry1 = (r + rs) / 2 * Math.sin(midtheta);\n\n // Arbitrary multiplier to increase the sizing of the space \n // available for the item.\n var width = 1 * Math.abs((r - rs) * Math.cos(midtheta));\n var height = 1 * Math.abs((r - rs) * Math.sin(midtheta));\n width = Math.max(width, height);\n\n var item = createElement({ class: 'cxtmenu-item' });\n setStyles(item, {\n color: options.itemColor,\n cursor: 'default',\n display: 'table',\n 'text-align': 'center',\n //background: 'red',\n position: 'absolute',\n 'text-shadow': '-1px -1px 2px ' + options.itemTextShadowColor + ', 1px -1px 2px ' + options.itemTextShadowColor + ', -1px 1px 2px ' + options.itemTextShadowColor + ', 1px 1px 1px ' + options.itemTextShadowColor,\n left: '50%',\n top: '50%',\n 'min-height': width + 'px',\n width: width + 'px',\n height: width + 'px',\n marginLeft: rx1 - width / 2 + 'px',\n marginTop: -ry1 - width / 2 + 'px'\n });\n\n var content = createElement({ class: 'cxtmenu-content' });\n\n if (command.content instanceof HTMLElement) {\n content.appendChild(command.content);\n } else {\n content.innerHTML = command.content;\n }\n\n setStyles(content, {\n 'width': width + 'px',\n 'height': width + 'px',\n 'vertical-align': 'middle',\n 'display': 'table-cell'\n });\n\n setStyles(content, command.contentStyle || {});\n\n if (command.disabled === true || command.enabled === false) {\n content.setAttribute('class', 'cxtmenu-content cxtmenu-disabled');\n }\n\n parent.appendChild(item);\n item.appendChild(content);\n\n theta1 += dtheta;\n theta2 += dtheta;\n }\n }\n\n function queueDrawBg(radius, rspotlight) {\n redrawQueue.drawBg = [radius, rspotlight];\n }\n\n function drawBg(radius, rspotlight) {\n c2d.globalCompositeOperation = 'source-over';\n\n c2d.clearRect(0, 0, containerSize, containerSize);\n\n // draw background items\n c2d.fillStyle = options.fillColor;\n var dtheta = 2 * Math.PI / commands.length;\n var theta1 = Math.PI / 2;\n var theta2 = theta1 + dtheta;\n\n for (var index = 0; index < commands.length; index++) {\n var command = commands[index];\n\n if (command.fillColor) {\n c2d.fillStyle = command.fillColor;\n }\n c2d.beginPath();\n c2d.moveTo(radius + options.activePadding, radius + options.activePadding);\n c2d.arc(radius + options.activePadding, radius + options.activePadding, radius, 2 * Math.PI - theta1, 2 * Math.PI - theta2, true);\n c2d.closePath();\n c2d.fill();\n\n theta1 += dtheta;\n theta2 += dtheta;\n\n c2d.fillStyle = options.fillColor;\n }\n\n // draw separators between items\n c2d.globalCompositeOperation = 'destination-out';\n c2d.strokeStyle = 'white';\n c2d.lineWidth = options.separatorWidth;\n theta1 = Math.PI / 2;\n theta2 = theta1 + dtheta;\n\n for (var i = 0; i < commands.length; i++) {\n var rx1 = radius * Math.cos(theta1);\n var ry1 = radius * Math.sin(theta1);\n c2d.beginPath();\n c2d.moveTo(radius + options.activePadding, radius + options.activePadding);\n c2d.lineTo(radius + options.activePadding + rx1, radius + options.activePadding - ry1);\n c2d.closePath();\n c2d.stroke();\n\n theta1 += dtheta;\n theta2 += dtheta;\n }\n\n c2d.fillStyle = 'white';\n c2d.globalCompositeOperation = 'destination-out';\n c2d.beginPath();\n c2d.arc(radius + options.activePadding, radius + options.activePadding, rspotlight + options.spotlightPadding, 0, Math.PI * 2, true);\n c2d.closePath();\n c2d.fill();\n\n c2d.globalCompositeOperation = 'source-over';\n }\n\n function queueDrawCommands(rx, ry, radius, theta, rspotlight) {\n redrawQueue.drawCommands = [rx, ry, radius, theta, rspotlight];\n }\n\n function drawCommands(rx, ry, radius, theta, rs) {\n var dtheta = 2 * Math.PI / commands.length;\n var theta1 = Math.PI / 2;\n var theta2 = theta1 + dtheta;\n\n theta1 += dtheta * activeCommandI;\n theta2 += dtheta * activeCommandI;\n\n c2d.fillStyle = options.activeFillColor;\n c2d.strokeStyle = 'black';\n c2d.lineWidth = 1;\n c2d.beginPath();\n c2d.moveTo(radius + options.activePadding, radius + options.activePadding);\n c2d.arc(radius + options.activePadding, radius + options.activePadding, radius + options.activePadding, 2 * Math.PI - theta1, 2 * Math.PI - theta2, true);\n c2d.closePath();\n c2d.fill();\n\n c2d.fillStyle = 'white';\n c2d.globalCompositeOperation = 'destination-out';\n\n var tx = radius + options.activePadding + rx / radius * (rs + options.spotlightPadding - options.indicatorSize / 4);\n var ty = radius + options.activePadding + ry / radius * (rs + options.spotlightPadding - options.indicatorSize / 4);\n var rot = Math.PI / 4 - theta;\n\n c2d.translate(tx, ty);\n c2d.rotate(rot);\n\n // clear the indicator\n // The indicator size (arrow) depends on the node size as well. If the indicator size is bigger and the rendered node size + padding, \n // use the rendered node size + padding as the indicator size.\n var indicatorSize = options.indicatorSize > rs + options.spotlightPadding ? rs + options.spotlightPadding : options.indicatorSize;\n c2d.beginPath();\n c2d.fillRect(-indicatorSize / 2, -indicatorSize / 2, indicatorSize, indicatorSize);\n c2d.closePath();\n c2d.fill();\n\n c2d.rotate(-rot);\n c2d.translate(-tx, -ty);\n\n // c2d.setTransform( 1, 0, 0, 1, 0, 0 );\n\n // clear the spotlight\n c2d.beginPath();\n c2d.arc(radius + options.activePadding, radius + options.activePadding, rs + options.spotlightPadding, 0, Math.PI * 2, true);\n c2d.closePath();\n c2d.fill();\n\n c2d.globalCompositeOperation = 'source-over';\n }\n\n function updatePixelRatio() {\n var pxr = getPixelRatio();\n var w = containerSize;\n var h = containerSize;\n\n canvas.width = w * pxr;\n canvas.height = h * pxr;\n\n canvas.style.width = w + 'px';\n canvas.style.height = h + 'px';\n\n c2d.setTransform(1, 0, 0, 1, 0, 0);\n c2d.scale(pxr, pxr);\n }\n\n var redrawing = true;\n var redrawQueue = {};\n\n var raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (fn) {\n return setTimeout(fn, 16);\n };\n\n var redraw = function redraw() {\n if (redrawQueue.drawBg) {\n drawBg.apply(null, redrawQueue.drawBg);\n }\n\n if (redrawQueue.drawCommands) {\n drawCommands.apply(null, redrawQueue.drawCommands);\n }\n\n redrawQueue = {};\n\n if (redrawing) {\n raf(redraw);\n }\n };\n\n // kick off\n updatePixelRatio();\n redraw();\n\n var ctrx = void 0,\n ctry = void 0,\n rs = void 0;\n\n var bindings = {\n on: function on(events, selector, fn) {\n\n var _fn = fn;\n if (selector === 'core') {\n _fn = function _fn(e) {\n if (e.cyTarget === cy || e.target === cy) {\n // only if event target is directly core\n return fn.apply(this, [e]);\n }\n };\n }\n\n data.handlers.push({\n events: events,\n selector: selector,\n fn: _fn\n });\n\n if (selector === 'core') {\n cy.on(events, _fn);\n } else {\n cy.on(events, selector, _fn);\n }\n\n return this;\n }\n };\n\n function addEventListeners() {\n var grabbable = void 0;\n var inGesture = false;\n var dragHandler = void 0;\n var zoomEnabled = void 0;\n var panEnabled = void 0;\n var boxEnabled = void 0;\n var gestureStartEvent = void 0;\n var hoverOn = void 0;\n\n var restoreZoom = function restoreZoom() {\n if (zoomEnabled) {\n cy.userZoomingEnabled(true);\n }\n };\n\n var restoreGrab = function restoreGrab() {\n if (grabbable) {\n target.grabify();\n }\n };\n\n var restorePan = function restorePan() {\n if (panEnabled) {\n cy.userPanningEnabled(true);\n }\n };\n\n var restoreBoxSeln = function restoreBoxSeln() {\n if (boxEnabled) {\n cy.boxSelectionEnabled(true);\n }\n };\n\n var restoreGestures = function restoreGestures() {\n restoreGrab();\n restoreZoom();\n restorePan();\n restoreBoxSeln();\n };\n\n window.addEventListener('resize', updatePixelRatio);\n\n bindings.on('resize', function () {\n updatePixelRatio();\n }).on(options.openMenuEvents, options.selector, function (e) {\n target = this; // Remember which node the context menu is for\n var ele = this;\n var isCy = this === cy;\n\n if (inGesture) {\n parent.style.display = 'none';\n\n inGesture = false;\n\n restoreGestures();\n }\n\n if (typeof options.commands === 'function') {\n var res = options.commands(target);\n if (res.then) {\n res.then(function (_commands) {\n commands = _commands;\n openMenu();\n });\n } else {\n commands = res;\n openMenu();\n }\n } else {\n commands = options.commands;\n openMenu();\n }\n\n function openMenu() {\n if (!commands || commands.length === 0) {\n return;\n }\n\n zoomEnabled = cy.userZoomingEnabled();\n cy.userZoomingEnabled(false);\n\n panEnabled = cy.userPanningEnabled();\n cy.userPanningEnabled(false);\n\n boxEnabled = cy.boxSelectionEnabled();\n cy.boxSelectionEnabled(false);\n\n grabbable = target.grabbable && target.grabbable();\n if (grabbable) {\n target.ungrabify();\n }\n\n var rp = void 0,\n rw = void 0,\n rh = void 0,\n rs = void 0;\n if (!isCy && ele && ele.isNode instanceof Function && ele.isNode() && !ele.isParent() && !options.atMouse) {\n // If it's a node, the default spotlight radius for a node is the node width\n rp = ele.renderedPosition();\n rw = ele.renderedOuterWidth();\n rh = ele.renderedOuterHeight();\n rs = rw / 2;\n // If adaptativeNodespotlightRadius is not enabled and min|maxSpotlighrRadius is defined, use those instead\n rs = !options.adaptativeNodeSpotlightRadius && options.minSpotlightRadius ? Math.max(rs, options.minSpotlightRadius) : rs;\n rs = !options.adaptativeNodeSpotlightRadius && options.maxSpotlightRadius ? Math.min(rs, options.maxSpotlightRadius) : rs;\n } else {\n // If it's the background or an edge, the spotlight radius is the min|maxSpotlightRadius\n rp = e.renderedPosition || e.cyRenderedPosition;\n rw = 1;\n rh = 1;\n rs = rw / 2;\n rs = options.minSpotlightRadius ? Math.max(rs, options.minSpotlightRadius) : rs;\n rs = options.maxSpotlightRadius ? Math.min(rs, options.maxSpotlightRadius) : rs;\n }\n\n offset = getOffset(container);\n\n ctrx = rp.x;\n ctry = rp.y;\n r = rw / 2 + (options.menuRadius instanceof Function ? options.menuRadius(target) : Number(options.menuRadius));\n containerSize = (r + options.activePadding) * 2;\n updatePixelRatio();\n\n setStyles(parent, {\n width: containerSize + 'px',\n height: containerSize + 'px',\n display: 'block',\n left: rp.x - r + 'px',\n top: rp.y - r + 'px'\n });\n createMenuItems(r, rs);\n queueDrawBg(r, rs);\n\n activeCommandI = undefined;\n\n inGesture = true;\n gestureStartEvent = e;\n }\n }).on('cxtdrag tapdrag', options.selector, dragHandler = function dragHandler(e) {\n\n if (!inGesture) {\n return;\n }\n e.preventDefault(); // Otherwise, on mobile, the pull-down refresh gesture gets activated\n\n var origE = e.originalEvent;\n var isTouch = origE.touches && origE.touches.length > 0;\n\n var pageX = (isTouch ? origE.touches[0].pageX : origE.pageX) - window.pageXOffset;\n var pageY = (isTouch ? origE.touches[0].pageY : origE.pageY) - window.pageYOffset;\n\n activeCommandI = undefined;\n\n var dx = pageX - offset.left - ctrx;\n var dy = pageY - offset.top - ctry;\n\n if (dx === 0) {\n dx = 0.01;\n }\n\n var d = Math.sqrt(dx * dx + dy * dy);\n var cosTheta = (dy * dy - d * d - dx * dx) / (-2 * d * dx);\n var theta = Math.acos(cosTheta);\n\n var rw = void 0;\n if (target && target.isNode instanceof Function && target.isNode() && !target.isParent() && !options.atMouse) {\n // If it's a node, the default spotlight radius for a node is the node width\n rw = target.renderedOuterWidth();\n rs = rw / 2;\n // If adaptativeNodespotlightRadius is not enabled and min|maxSpotlighrRadius is defined, use those instead\n rs = !options.adaptativeNodeSpotlightRadius && options.minSpotlightRadius ? Math.max(rs, options.minSpotlightRadius) : rs;\n rs = !options.adaptativeNodeSpotlightRadius && options.maxSpotlightRadius ? Math.min(rs, options.maxSpotlightRadius) : rs;\n } else {\n // If it's the background or an edge, the spotlight radius is the min|maxSpotlightRadius\n rw = 1;\n rs = rw / 2;\n rs = options.minSpotlightRadius ? Math.max(rs, options.minSpotlightRadius) : rs;\n rs = options.maxSpotlightRadius ? Math.min(rs, options.maxSpotlightRadius) : rs;\n }\n\n r = rw / 2 + (options.menuRadius instanceof Function ? options.menuRadius(target) : Number(options.menuRadius));\n if (d < rs + options.spotlightPadding || typeof options.outsideMenuCancel === \"number\" && d > r + options.activePadding + options.outsideMenuCancel) {\n //\n\n queueDrawBg(r, rs);\n return;\n }\n queueDrawBg(r, rs);\n\n var rx = dx * r / d;\n var ry = dy * r / d;\n\n if (dy > 0) {\n theta = Math.PI + Math.abs(theta - Math.PI);\n }\n\n var dtheta = 2 * Math.PI / commands.length;\n var theta1 = Math.PI / 2;\n var theta2 = theta1 + dtheta;\n\n for (var i = 0; i < commands.length; i++) {\n var command = commands[i];\n\n var inThisCommand = theta1 <= theta && theta <= theta2 || theta1 <= theta + 2 * Math.PI && theta + 2 * Math.PI <= theta2;\n\n if (command.disabled === true || command.enabled === false) {\n inThisCommand = false;\n }\n\n if (inThisCommand) {\n activeCommandI = i;\n break;\n }\n\n theta1 += dtheta;\n theta2 += dtheta;\n }\n queueDrawCommands(rx, ry, r, theta, rs);\n }).on('tapdrag', dragHandler).on('mousemove', function () {\n if (activeCommandI !== undefined) {\n var hovered = commands[activeCommandI].hover;\n if (hovered) {\n if (hoverOn !== activeCommandI) {\n hovered.apply(target, [target, gestureStartEvent]);\n }\n hoverOn = activeCommandI;\n }\n }\n }).on('cxttapend tapend', function () {\n parent.style.display = 'none';\n if (activeCommandI !== undefined) {\n var select = commands[activeCommandI].select;\n\n if (select) {\n select.apply(target, [target, gestureStartEvent]);\n activeCommandI = undefined;\n }\n }\n\n hoverOn = undefined;\n\n inGesture = false;\n\n restoreGestures();\n });\n }\n\n function removeEventListeners() {\n var handlers = data.handlers;\n\n for (var i = 0; i < handlers.length; i++) {\n var h = handlers[i];\n\n if (h.selector === 'core') {\n cy.off(h.events, h.fn);\n } else {\n cy.off(h.events, h.selector, h.fn);\n }\n }\n\n window.removeEventListener('resize', updatePixelRatio);\n }\n\n function destroyInstance() {\n redrawing = false;\n\n removeEventListeners();\n\n wrapper.remove();\n }\n\n addEventListeners();\n\n return {\n destroy: function destroy() {\n destroyInstance();\n }\n };\n};\n\nmodule.exports = cxtmenu;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Simple, internal Object.assign() polyfill for options objects etc.\n\nmodule.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {\n for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n srcs[_key - 1] = arguments[_key];\n }\n\n srcs.filter(function (src) {\n return src != null;\n }).forEach(function (src) {\n Object.keys(src).forEach(function (k) {\n return tgt[k] = src[k];\n });\n });\n\n return tgt;\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar defaults = {\n menuRadius: function menuRadius(ele) {\n return 100;\n }, // the radius of the circular menu in pixels\n selector: 'node', // elements matching this Cytoscape.js selector will trigger cxtmenus\n commands: [// an array of commands to list in the menu or a function that returns the array\n /*\n { // example command\n fillColor: 'rgba(200, 200, 200, 0.75)', // optional: custom background color for item\n content: 'a command name' // html/text content to be displayed in the menu\n contentStyle: {}, // css key:value pairs to set the command's css in js if you want\n hover: function(ele){ // a function to execute when the command is hovered\n console.log( ele.id() ) // `ele` holds the reference to the active element\n },\n select: function(ele){ // a function to execute when the command is selected\n console.log( ele.id() ) // `ele` holds the reference to the active element\n },\n enabled: true // whether the command is selectable\n }\n */\n ], // function( ele ){ return [ /*...*/ ] }, // example function for commands\n fillColor: 'rgba(0, 0, 0, 0.75)', // the background colour of the menu\n activeFillColor: 'rgba(1, 105, 217, 0.75)', // the colour used to indicate the selected command\n activePadding: 20, // additional size in pixels for the active command\n indicatorSize: 24, // the size in pixels of the pointer to the active command, will default to the node size if the node size is smaller than the indicator size, \n separatorWidth: 3, // the empty spacing in pixels between successive commands\n spotlightPadding: 4, // extra spacing in pixels between the element and the spotlight\n adaptativeNodeSpotlightRadius: false, // specify whether the spotlight radius should adapt to the node size\n minSpotlightRadius: 24, // the minimum radius in pixels of the spotlight (ignored for the node if adaptativeNodeSpotlightRadius is enabled but still used for the edge & background)\n maxSpotlightRadius: 38, // the maximum radius in pixels of the spotlight (ignored for the node if adaptativeNodeSpotlightRadius is enabled but still used for the edge & background)\n openMenuEvents: 'cxttapstart taphold', // space-separated cytoscape events that will open the menu; only `cxttapstart` and/or `taphold` work here\n itemColor: 'white', // the colour of text in the command's content\n itemTextShadowColor: 'transparent', // the text shadow colour of the command's content\n zIndex: 9999, // the z-index of the ui div\n atMouse: false, // draw menu at mouse position\n outsideMenuCancel: false // if set to a number, this will cancel the command if the pointer is released outside of the spotlight, padded by the number given\n};\n\nmodule.exports = defaults;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar removeEles = function removeEles(query) {\n var ancestor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;\n\n var els = ancestor.querySelectorAll(query);\n\n for (var i = 0; i < els.length; i++) {\n var el = els[i];\n\n el.parentNode.removeChild(el);\n }\n};\n\nvar setStyles = function setStyles(el, style) {\n var props = Object.keys(style);\n\n for (var i = 0, l = props.length; i < l; i++) {\n el.style[props[i]] = style[props[i]];\n }\n};\n\nvar createElement = function createElement(options) {\n options = options || {};\n\n var el = document.createElement(options.tag || 'div');\n\n el.className = options.class || '';\n\n if (options.style) {\n setStyles(el, options.style);\n }\n\n return el;\n};\n\nvar getPixelRatio = function getPixelRatio() {\n return window.devicePixelRatio || 1;\n};\n\nvar getOffset = function getOffset(el) {\n var offset = el.getBoundingClientRect();\n\n return {\n left: offset.left + document.body.scrollLeft + parseFloat(getComputedStyle(document.body)['padding-left']) + parseFloat(getComputedStyle(document.body)['border-left-width']),\n top: offset.top + document.body.scrollTop + parseFloat(getComputedStyle(document.body)['padding-top']) + parseFloat(getComputedStyle(document.body)['border-top-width'])\n };\n};\n\nmodule.exports = { removeEles: removeEles, setStyles: setStyles, createElement: createElement, getPixelRatio: getPixelRatio, getOffset: getOffset };\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar cxtmenu = __webpack_require__(0);\n\n// registers the extension on a cytoscape lib ref\nvar register = function register(cytoscape) {\n if (!cytoscape) {\n return;\n } // can't register if cytoscape unspecified\n\n cytoscape('core', 'cxtmenu', cxtmenu); // register with cytoscape.js\n};\n\nif (typeof cytoscape !== 'undefined') {\n // expose to global cytoscape (i.e. window.cytoscape)\n register(cytoscape);\n}\n\nmodule.exports = register;\n\n/***/ })\n/******/ ]);\n});","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cytoscapeEuler\"] = factory();\n\telse\n\t\troot[\"cytoscapeEuler\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 60aa78e92847518fd0f3","module.exports = Object.assign != null ? Object.assign.bind( Object ) : function( tgt, ...srcs ){\n srcs.forEach( src => {\n Object.keys( src ).forEach( k => tgt[k] = src[k] );\n } );\n\n return tgt;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/assign.js","const assign = require('../assign');\n\nconst defaults = Object.freeze({\n source: null,\n target: null,\n length: 80,\n coeff: 0.0002,\n weight: 1\n});\n\nfunction makeSpring( spring ){\n return assign( {}, defaults, spring );\n}\n\nfunction applySpring( spring ){\n let body1 = spring.source,\n body2 = spring.target,\n length = spring.length < 0 ? defaults.length : spring.length,\n dx = body2.pos.x - body1.pos.x,\n dy = body2.pos.y - body1.pos.y,\n r = Math.sqrt(dx * dx + dy * dy);\n\n if (r === 0) {\n dx = (Math.random() - 0.5) / 50;\n dy = (Math.random() - 0.5) / 50;\n r = Math.sqrt(dx * dx + dy * dy);\n }\n\n let d = r - length;\n let coeff = ((!spring.coeff || spring.coeff < 0) ? defaults.springCoeff : spring.coeff) * d / r * spring.weight;\n\n body1.force.x += coeff * dx;\n body1.force.y += coeff * dy;\n\n body2.force.x -= coeff * dx;\n body2.force.y -= coeff * dy;\n}\n\nmodule.exports = { makeSpring, applySpring };\n\n\n\n// WEBPACK FOOTER //\n// ./src/euler/spring.js","/**\nThe implementation of the Euler layout algorithm\n*/\n\nconst Layout = require('../layout');\nconst assign = require('../assign');\nconst defaults = require('./defaults');\nconst { tick } = require('./tick');\nconst { makeQuadtree } = require('./quadtree');\nconst { makeBody } = require('./body');\nconst { makeSpring } = require('./spring');\nconst isFn = fn => typeof fn === 'function';\nconst isParent = n => n.isParent();\nconst notIsParent = n => !isParent(n);\nconst isLocked = n => n.locked();\nconst notIsLocked = n => !isLocked(n);\nconst isParentEdge = e => isParent( e.source() ) || isParent( e.target() );\nconst notIsParentEdge = e => !isParentEdge(e);\nconst getBody = n => n.scratch('euler').body;\nconst getNonParentDescendants = n => isParent(n) ? n.descendants().filter( notIsParent ) : n;\n\nconst getScratch = el => {\n let scratch = el.scratch('euler');\n\n if( !scratch ){\n scratch = {};\n\n el.scratch('euler', scratch);\n }\n\n return scratch;\n};\n\nconst optFn = ( opt, ele ) => {\n if( isFn( opt ) ){\n return opt( ele );\n } else {\n return opt;\n }\n};\n\nclass Euler extends Layout {\n constructor( options ){\n super( assign( {}, defaults, options ) );\n }\n\n prerun( state ){\n let s = state;\n\n s.quadtree = makeQuadtree();\n\n let bodies = s.bodies = [];\n\n // regular nodes\n s.nodes.filter( n => notIsParent(n) ).forEach( n => {\n let scratch = getScratch( n );\n\n let body = makeBody({\n pos: { x: scratch.x, y: scratch.y },\n mass: optFn( s.mass, n ),\n locked: scratch.locked\n });\n\n body._cyNode = n;\n\n scratch.body = body;\n\n body._scratch = scratch;\n\n bodies.push( body );\n } );\n\n let springs = s.springs = [];\n\n // regular edge springs\n s.edges.filter( notIsParentEdge ).forEach( e => {\n let spring = makeSpring({\n source: getBody( e.source() ),\n target: getBody( e.target() ),\n length: optFn( s.springLength, e ),\n coeff: optFn( s.springCoeff, e )\n });\n\n spring._cyEdge = e;\n\n let scratch = getScratch( e );\n\n spring._scratch = scratch;\n\n scratch.spring = spring;\n\n springs.push( spring );\n } );\n\n // compound edge springs\n s.edges.filter( isParentEdge ).forEach( e => {\n let sources = getNonParentDescendants( e.source() );\n let targets = getNonParentDescendants( e.target() );\n\n // just add one spring for perf\n sources = [ sources[0] ];\n targets = [ targets[0] ];\n\n sources.forEach( src => {\n targets.forEach( tgt => {\n springs.push( makeSpring({\n source: getBody( src ),\n target: getBody( tgt ),\n length: optFn( s.springLength, e ),\n coeff: optFn( s.springCoeff, e )\n }) );\n } );\n } );\n } );\n }\n\n tick( state ){\n let movement = tick( state );\n\n let isDone = movement <= state.movementThreshold;\n\n return isDone;\n }\n}\n\nmodule.exports = Euler;\n\n\n\n// WEBPACK FOOTER //\n// ./src/euler/index.js","const defaults = Object.freeze({\n pos: { x: 0, y: 0 },\n prevPos: { x: 0, y: 0 },\n force: { x: 0, y: 0 },\n velocity: { x: 0, y: 0 },\n mass: 1\n});\n\nconst copyVec = v => ({ x: v.x, y: v.y });\nconst getValue = ( val, def ) => val != null ? val : def;\nconst getVec = ( vec, def ) => copyVec( getValue( vec, def ) );\n\nfunction makeBody( opts ){\n let b = {};\n\n b.pos = getVec( opts.pos, defaults.pos );\n b.prevPos = getVec( opts.prevPos, b.pos );\n b.force = getVec( opts.force, defaults.force );\n b.velocity = getVec( opts.velocity, defaults.velocity );\n b.mass = opts.mass != null ? opts.mass : defaults.mass;\n b.locked = opts.locked;\n\n return b;\n}\n\nmodule.exports = { makeBody };\n\n\n\n// WEBPACK FOOTER //\n// ./src/euler/body.js","const defaults = Object.freeze({\n // The ideal legth of a spring\n // - This acts as a hint for the edge length\n // - The edge length can be longer or shorter if the forces are set to extreme values\n springLength: edge => 80,\n\n // Hooke's law coefficient\n // - The value ranges on [0, 1]\n // - Lower values give looser springs\n // - Higher values give tighter springs\n springCoeff: edge => 0.0008,\n\n // The mass of the node in the physics simulation\n // - The mass affects the gravity node repulsion/attraction\n mass: node => 4,\n\n // Coulomb's law coefficient\n // - Makes the nodes repel each other for negative values\n // - Makes the nodes attract each other for positive values\n gravity: -1.2,\n\n // A force that pulls nodes towards the origin (0, 0)\n // Higher values keep the components less spread out\n pull: 0.001,\n\n // Theta coefficient from Barnes-Hut simulation\n // - Value ranges on [0, 1]\n // - Performance is better with smaller values\n // - Very small values may not create enough force to give a good result\n theta: 0.666,\n\n // Friction / drag coefficient to make the system stabilise over time\n dragCoeff: 0.02,\n\n // When the total of the squared position deltas is less than this value, the simulation ends\n movementThreshold: 1,\n\n // The amount of time passed per tick\n // - Larger values result in faster runtimes but might spread things out too far\n // - Smaller values produce more accurate results\n timeStep: 20\n});\n\nmodule.exports = defaults;\n\n\n\n// WEBPACK FOOTER //\n// ./src/euler/defaults.js","const defaultCoeff = 0.02;\n\nfunction applyDrag( body, manualDragCoeff ){\n let dragCoeff;\n\n if( manualDragCoeff != null ){\n dragCoeff = manualDragCoeff;\n } else if( body.dragCoeff != null ){\n dragCoeff = body.dragCoeff;\n } else {\n dragCoeff = defaultCoeff;\n }\n\n body.force.x -= dragCoeff * body.velocity.x;\n body.force.y -= dragCoeff * body.velocity.y;\n}\n\nmodule.exports = { applyDrag };\n\n\n\n// WEBPACK FOOTER //\n// ./src/euler/drag.js","// use euler method for force integration http://en.wikipedia.org/wiki/Euler_method\n// return sum of squared position deltas\nfunction integrate( bodies, timeStep ){\n var dx = 0, tx = 0,\n dy = 0, ty = 0,\n i,\n max = bodies.length;\n\n if (max === 0) {\n return 0;\n }\n\n for (i = 0; i < max; ++i) {\n var body = bodies[i],\n coeff = timeStep / body.mass;\n\n if( body.grabbed ){ continue; }\n\n if( body.locked ){\n body.velocity.x = 0;\n body.velocity.y = 0;\n } else {\n body.velocity.x += coeff * body.force.x;\n body.velocity.y += coeff * body.force.y;\n }\n\n var vx = body.velocity.x,\n vy = body.velocity.y,\n v = Math.sqrt(vx * vx + vy * vy);\n\n if (v > 1) {\n body.velocity.x = vx / v;\n body.velocity.y = vy / v;\n }\n\n dx = timeStep * body.velocity.x;\n dy = timeStep * body.velocity.y;\n\n body.pos.x += dx;\n body.pos.y += dy;\n\n tx += Math.abs(dx); ty += Math.abs(dy);\n }\n\n return (tx * tx + ty * ty)/max;\n}\n\nmodule.exports = { integrate };\n\n\n\n// WEBPACK FOOTER //\n// ./src/euler/integrate.js","// impl of barnes hut\n// http://www.eecs.berkeley.edu/~demmel/cs267/lecture26/lecture26.html\n// http://en.wikipedia.org/wiki/Barnes%E2%80%93Hut_simulation\n\nconst Node = require('./node');\nconst InsertStack = require('./insertStack');\n\nconst resetVec = v => { v.x = 0; v.y = 0; };\n\nconst isSamePosition = (p1, p2) => {\n let threshold = 1e-8;\n let dx = Math.abs(p1.x - p2.x);\n let dy = Math.abs(p1.y - p2.y);\n\n return dx < threshold && dy < threshold;\n};\n\nfunction makeQuadtree(){\n let updateQueue = [],\n insertStack = new InsertStack(),\n nodesCache = [],\n currentInCache = 0,\n root = newNode();\n\n function newNode() {\n // To avoid pressure on GC we reuse nodes.\n let node = nodesCache[currentInCache];\n if (node) {\n node.quad0 = null;\n node.quad1 = null;\n node.quad2 = null;\n node.quad3 = null;\n node.body = null;\n node.mass = node.massX = node.massY = 0;\n node.left = node.right = node.top = node.bottom = 0;\n } else {\n node = new Node();\n nodesCache[currentInCache] = node;\n }\n\n ++currentInCache;\n return node;\n }\n\n function update( sourceBody, gravity, theta, pull ) {\n let queue = updateQueue,\n v,\n dx,\n dy,\n r, fx = 0,\n fy = 0,\n queueLength = 1,\n shiftIdx = 0,\n pushIdx = 1;\n\n queue[0] = root;\n\n resetVec( sourceBody.force );\n\n let px = -sourceBody.pos.x;\n let py = -sourceBody.pos.y;\n let pr = Math.sqrt(px * px + py * py);\n let pv = sourceBody.mass * pull / pr;\n\n fx += pv * px;\n fy += pv * py;\n\n while (queueLength) {\n let node = queue[shiftIdx],\n body = node.body;\n\n queueLength -= 1;\n shiftIdx += 1;\n let differentBody = (body !== sourceBody);\n if (body && differentBody) {\n // If the current node is a leaf node (and it is not source body),\n // calculate the force exerted by the current node on body, and add this\n // amount to body's net force.\n dx = body.pos.x - sourceBody.pos.x;\n dy = body.pos.y - sourceBody.pos.y;\n r = Math.sqrt(dx * dx + dy * dy);\n\n if (r === 0) {\n // Poor man's protection against zero distance.\n dx = (Math.random() - 0.5) / 50;\n dy = (Math.random() - 0.5) / 50;\n r = Math.sqrt(dx * dx + dy * dy);\n }\n\n // This is standard gravition force calculation but we divide\n // by r^3 to save two operations when normalizing force vector.\n v = gravity * body.mass * sourceBody.mass / (r * r * r);\n fx += v * dx;\n fy += v * dy;\n } else if (differentBody) {\n // Otherwise, calculate the ratio s / r, where s is the width of the region\n // represented by the internal node, and r is the distance between the body\n // and the node's center-of-mass\n dx = node.massX / node.mass - sourceBody.pos.x;\n dy = node.massY / node.mass - sourceBody.pos.y;\n r = Math.sqrt(dx * dx + dy * dy);\n\n if (r === 0) {\n // Sorry about code duplucation. I don't want to create many functions\n // right away. Just want to see performance first.\n dx = (Math.random() - 0.5) / 50;\n dy = (Math.random() - 0.5) / 50;\n r = Math.sqrt(dx * dx + dy * dy);\n }\n // If s / r < θ, treat this internal node as a single body, and calculate the\n // force it exerts on sourceBody, and add this amount to sourceBody's net force.\n if ((node.right - node.left) / r < theta) {\n // in the if statement above we consider node's width only\n // because the region was squarified during tree creation.\n // Thus there is no difference between using width or height.\n v = gravity * node.mass * sourceBody.mass / (r * r * r);\n fx += v * dx;\n fy += v * dy;\n } else {\n // Otherwise, run the procedure recursively on each of the current node's children.\n\n // I intentionally unfolded this loop, to save several CPU cycles.\n if (node.quad0) {\n queue[pushIdx] = node.quad0;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad1) {\n queue[pushIdx] = node.quad1;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad2) {\n queue[pushIdx] = node.quad2;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad3) {\n queue[pushIdx] = node.quad3;\n queueLength += 1;\n pushIdx += 1;\n }\n }\n }\n }\n\n sourceBody.force.x += fx;\n sourceBody.force.y += fy;\n }\n\n function insertBodies(bodies) {\n if( bodies.length === 0 ){ return; }\n\n let x1 = Number.MAX_VALUE,\n y1 = Number.MAX_VALUE,\n x2 = Number.MIN_VALUE,\n y2 = Number.MIN_VALUE,\n i,\n max = bodies.length;\n\n // To reduce quad tree depth we are looking for exact bounding box of all particles.\n i = max;\n while (i--) {\n let x = bodies[i].pos.x;\n let y = bodies[i].pos.y;\n if (x < x1) {\n x1 = x;\n }\n if (x > x2) {\n x2 = x;\n }\n if (y < y1) {\n y1 = y;\n }\n if (y > y2) {\n y2 = y;\n }\n }\n\n // Squarify the bounds.\n let dx = x2 - x1,\n dy = y2 - y1;\n if (dx > dy) {\n y2 = y1 + dx;\n } else {\n x2 = x1 + dy;\n }\n\n currentInCache = 0;\n root = newNode();\n root.left = x1;\n root.right = x2;\n root.top = y1;\n root.bottom = y2;\n\n i = max - 1;\n if (i >= 0) {\n root.body = bodies[i];\n }\n while (i--) {\n insert(bodies[i], root);\n }\n }\n\n function insert(newBody) {\n insertStack.reset();\n insertStack.push(root, newBody);\n\n while (!insertStack.isEmpty()) {\n let stackItem = insertStack.pop(),\n node = stackItem.node,\n body = stackItem.body;\n\n if (!node.body) {\n // This is internal node. Update the total mass of the node and center-of-mass.\n let x = body.pos.x;\n let y = body.pos.y;\n node.mass = node.mass + body.mass;\n node.massX = node.massX + body.mass * x;\n node.massY = node.massY + body.mass * y;\n\n // Recursively insert the body in the appropriate quadrant.\n // But first find the appropriate quadrant.\n let quadIdx = 0, // Assume we are in the 0's quad.\n left = node.left,\n right = (node.right + left) / 2,\n top = node.top,\n bottom = (node.bottom + top) / 2;\n\n if (x > right) { // somewhere in the eastern part.\n quadIdx = quadIdx + 1;\n left = right;\n right = node.right;\n }\n if (y > bottom) { // and in south.\n quadIdx = quadIdx + 2;\n top = bottom;\n bottom = node.bottom;\n }\n\n let child = getChild(node, quadIdx);\n if (!child) {\n // The node is internal but this quadrant is not taken. Add\n // subnode to it.\n child = newNode();\n child.left = left;\n child.top = top;\n child.right = right;\n child.bottom = bottom;\n child.body = body;\n\n setChild(node, quadIdx, child);\n } else {\n // continue searching in this quadrant.\n insertStack.push(child, body);\n }\n } else {\n // We are trying to add to the leaf node.\n // We have to convert current leaf into internal node\n // and continue adding two nodes.\n let oldBody = node.body;\n node.body = null; // internal nodes do not cary bodies\n\n if (isSamePosition(oldBody.pos, body.pos)) {\n // Prevent infinite subdivision by bumping one node\n // anywhere in this quadrant\n let retriesCount = 3;\n do {\n let offset = Math.random();\n let dx = (node.right - node.left) * offset;\n let dy = (node.bottom - node.top) * offset;\n\n oldBody.pos.x = node.left + dx;\n oldBody.pos.y = node.top + dy;\n retriesCount -= 1;\n // Make sure we don't bump it out of the box. If we do, next iteration should fix it\n } while (retriesCount > 0 && isSamePosition(oldBody.pos, body.pos));\n\n if (retriesCount === 0 && isSamePosition(oldBody.pos, body.pos)) {\n // This is very bad, we ran out of precision.\n // if we do not return from the method we'll get into\n // infinite loop here. So we sacrifice correctness of layout, and keep the app running\n // Next layout iteration should get larger bounding box in the first step and fix this\n return;\n }\n }\n // Next iteration should subdivide node further.\n insertStack.push(node, oldBody);\n insertStack.push(node, body);\n }\n }\n }\n\n return {\n insertBodies: insertBodies,\n updateBodyForce: update\n };\n}\n\nfunction getChild(node, idx) {\n if (idx === 0) return node.quad0;\n if (idx === 1) return node.quad1;\n if (idx === 2) return node.quad2;\n if (idx === 3) return node.quad3;\n return null;\n}\n\nfunction setChild(node, idx, child) {\n if (idx === 0) node.quad0 = child;\n else if (idx === 1) node.quad1 = child;\n else if (idx === 2) node.quad2 = child;\n else if (idx === 3) node.quad3 = child;\n}\n\nmodule.exports = { makeQuadtree };\n\n\n\n// WEBPACK FOOTER //\n// ./src/euler/quadtree/index.js","module.exports = InsertStack;\n\n/**\n * Our implmentation of QuadTree is non-recursive to avoid GC hit\n * This data structure represent stack of elements\n * which we are trying to insert into quad tree.\n */\nfunction InsertStack () {\n this.stack = [];\n this.popIdx = 0;\n}\n\nInsertStack.prototype = {\n isEmpty: function() {\n return this.popIdx === 0;\n },\n push: function (node, body) {\n let item = this.stack[this.popIdx];\n if (!item) {\n // we are trying to avoid memory pressue: create new element\n // only when absolutely necessary\n this.stack[this.popIdx] = new InsertStackElement(node, body);\n } else {\n item.node = node;\n item.body = body;\n }\n ++this.popIdx;\n },\n pop: function () {\n if (this.popIdx > 0) {\n return this.stack[--this.popIdx];\n }\n },\n reset: function () {\n this.popIdx = 0;\n }\n};\n\nfunction InsertStackElement(node, body) {\n this.node = node; // QuadTree node\n this.body = body; // physical body which needs to be inserted to node\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/euler/quadtree/insertStack.js","/**\n * Internal data structure to represent 2D QuadTree node\n */\nmodule.exports = function Node() {\n // body stored inside this node. In quad tree only leaf nodes (by construction)\n // contain boides:\n this.body = null;\n\n // Child nodes are stored in quads. Each quad is presented by number:\n // 0 | 1\n // -----\n // 2 | 3\n this.quad0 = null;\n this.quad1 = null;\n this.quad2 = null;\n this.quad3 = null;\n\n // Total mass of current node\n this.mass = 0;\n\n // Center of mass coordinates\n this.massX = 0;\n this.massY = 0;\n\n // bounding box coordinates\n this.left = 0;\n this.top = 0;\n this.bottom = 0;\n this.right = 0;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/euler/quadtree/node.js","const { integrate } = require('./integrate');\nconst { applyDrag } = require('./drag');\nconst { applySpring } = require('./spring');\n\nfunction tick({ bodies, springs, quadtree, timeStep, gravity, theta, dragCoeff, pull }){\n // update body from scratch in case of any changes\n bodies.forEach( body => {\n let p = body._scratch;\n\n if( !p ){ return; }\n\n body.locked = p.locked;\n body.grabbed = p.grabbed;\n body.pos.x = p.x;\n body.pos.y = p.y;\n } );\n\n quadtree.insertBodies( bodies );\n\n for( let i = 0; i < bodies.length; i++ ){\n let body = bodies[i];\n\n quadtree.updateBodyForce( body, gravity, theta, pull );\n applyDrag( body, dragCoeff );\n }\n\n for( let i = 0; i < springs.length; i++ ){\n let spring = springs[i];\n\n applySpring( spring );\n }\n\n let movement = integrate( bodies, timeStep );\n\n // update scratch positions from body positions\n bodies.forEach( body => {\n let p = body._scratch;\n\n if( !p ){ return; }\n\n p.x = body.pos.x;\n p.y = body.pos.y;\n } );\n\n return movement;\n}\n\nmodule.exports = { tick };\n\n\n\n// WEBPACK FOOTER //\n// ./src/euler/tick.js","const Euler = require('./euler');\n\n// registers the extension on a cytoscape lib ref\nlet register = function( cytoscape ){\n if( !cytoscape ){ return; } // can't register if cytoscape unspecified\n\n cytoscape( 'layout', 'euler', Euler ); // register with cytoscape.js\n};\n\nif( typeof cytoscape !== 'undefined' ){ // expose to global cytoscape (i.e. window.cytoscape)\n register( cytoscape );\n}\n\nmodule.exports = register;\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","// general default options for force-directed layout\n\nmodule.exports = Object.freeze({\n animate: true, // whether to show the layout as it's running; special 'end' value makes the layout animate like a discrete layout\n refresh: 10, // number of ticks per frame; higher is faster but more jerky\n maxIterations: 1000, // max iterations before the layout will bail out\n maxSimulationTime: 4000, // max length in ms to run the layout\n ungrabifyWhileSimulating: false, // so you can't drag nodes during layout\n fit: true, // on every layout reposition of nodes, fit the viewport\n padding: 30, // padding around the simulation\n boundingBox: undefined, // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n\n // layout event callbacks\n ready: function(){}, // on layoutready\n stop: function(){}, // on layoutstop\n\n // positioning options\n randomize: false, // use random node positions at beginning of layout\n \n // infinite layout options\n infinite: false // overrides all other options for a forces-all-the-time mode\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/layout/defaults.js","/**\nA generic continuous layout class\n*/\n\nconst assign = require('../assign');\nconst defaults = require('./defaults');\nconst makeBoundingBox = require('./make-bb');\nconst { setInitialPositionState, refreshPositions, getNodePositionData } = require('./position');\nconst { multitick } = require('./tick');\n\nclass Layout {\n constructor( options ){\n let o = this.options = assign( {}, defaults, options );\n\n let s = this.state = assign( {}, o, {\n layout: this,\n nodes: o.eles.nodes(),\n edges: o.eles.edges(),\n tickIndex: 0,\n firstUpdate: true\n } );\n\n s.animateEnd = o.animate && o.animate === 'end';\n s.animateContinuously = o.animate && !s.animateEnd;\n }\n\n run(){\n let l = this;\n let s = this.state;\n\n s.tickIndex = 0;\n s.firstUpdate = true;\n s.startTime = Date.now();\n s.running = true;\n\n s.currentBoundingBox = makeBoundingBox( s.boundingBox, s.cy );\n\n if( s.ready ){ l.one( 'ready', s.ready ); }\n if( s.stop ){ l.one( 'stop', s.stop ); }\n\n s.nodes.forEach( n => setInitialPositionState( n, s ) );\n\n l.prerun( s );\n\n if( s.animateContinuously ){\n let ungrabify = node => {\n if( !s.ungrabifyWhileSimulating ){ return; }\n\n let grabbable = getNodePositionData( node, s ).grabbable = node.grabbable();\n\n if( grabbable ){\n node.ungrabify();\n }\n };\n\n let regrabify = node => {\n if( !s.ungrabifyWhileSimulating ){ return; }\n\n let grabbable = getNodePositionData( node, s ).grabbable;\n\n if( grabbable ){\n node.grabify();\n }\n };\n\n let updateGrabState = node => getNodePositionData( node, s ).grabbed = node.grabbed();\n\n let onGrab = function({ target }){\n updateGrabState( target );\n };\n\n let onFree = onGrab;\n\n let onDrag = function({ target }){\n let p = getNodePositionData( target, s );\n let tp = target.position();\n\n p.x = tp.x;\n p.y = tp.y;\n };\n\n let listenToGrab = node => {\n node.on('grab', onGrab);\n node.on('free', onFree);\n node.on('drag', onDrag);\n };\n\n let unlistenToGrab = node => {\n node.removeListener('grab', onGrab);\n node.removeListener('free', onFree);\n node.removeListener('drag', onDrag);\n };\n\n let fit = () => {\n if( s.fit && s.animateContinuously ){\n s.cy.fit( s.padding );\n }\n };\n\n let onNotDone = () => {\n refreshPositions( s.nodes, s );\n fit();\n\n requestAnimationFrame( frame );\n };\n\n let frame = function(){\n multitick( s, onNotDone, onDone );\n };\n\n let onDone = () => {\n refreshPositions( s.nodes, s );\n fit();\n\n s.nodes.forEach( n => {\n regrabify( n );\n unlistenToGrab( n );\n } );\n\n s.running = false;\n\n l.emit('layoutstop');\n };\n\n l.emit('layoutstart');\n\n s.nodes.forEach( n => {\n ungrabify( n );\n listenToGrab( n );\n } );\n\n frame(); // kick off\n } else {\n let done = false;\n let onNotDone = () => {};\n let onDone = () => done = true;\n\n while( !done ){\n multitick( s, onNotDone, onDone );\n }\n\n s.eles.layoutPositions( this, s, node => {\n let pd = getNodePositionData( node, s );\n\n return { x: pd.x, y: pd.y };\n } );\n }\n\n l.postrun( s );\n\n return this; // chaining\n }\n\n prerun(){}\n postrun(){}\n tick(){}\n\n stop(){\n this.state.running = false;\n\n return this; // chaining\n }\n\n destroy(){\n return this; // chaining\n }\n}\n\nmodule.exports = Layout;\n\n\n\n// WEBPACK FOOTER //\n// ./src/layout/index.js","module.exports = function( bb, cy ){\n if( bb == null ){\n bb = { x1: 0, y1: 0, w: cy.width(), h: cy.height() };\n } else { // copy\n bb = { x1: bb.x1, x2: bb.x2, y1: bb.y1, y2: bb.y2, w: bb.w, h: bb.h };\n }\n\n if( bb.x2 == null ){ bb.x2 = bb.x1 + bb.w; }\n if( bb.w == null ){ bb.w = bb.x2 - bb.x1; }\n if( bb.y2 == null ){ bb.y2 = bb.y1 + bb.h; }\n if( bb.h == null ){ bb.h = bb.y2 - bb.y1; }\n\n return bb;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/layout/make-bb.js","const assign = require('../assign');\n\nlet setInitialPositionState = function( node, state ){\n let p = node.position();\n let bb = state.currentBoundingBox;\n let scratch = node.scratch( state.name );\n\n if( scratch == null ){\n scratch = {};\n\n node.scratch( state.name, scratch );\n }\n\n assign( scratch, state.randomize ? {\n x: bb.x1 + Math.random() * bb.w,\n y: bb.y1 + Math.random() * bb.h\n } : {\n x: p.x,\n y: p.y\n } );\n\n scratch.locked = node.locked();\n};\n\nlet getNodePositionData = function( node, state ){\n return node.scratch( state.name );\n};\n\nlet refreshPositions = function( nodes, state ){\n nodes.positions(function( node ){\n let scratch = node.scratch( state.name );\n\n return {\n x: scratch.x,\n y: scratch.y\n };\n });\n};\n\nmodule.exports = { setInitialPositionState, getNodePositionData, refreshPositions };\n\n\n\n// WEBPACK FOOTER //\n// ./src/layout/position.js","const nop = function(){};\n\nlet tick = function( state ){\n let s = state;\n let l = state.layout;\n\n let tickIndicatesDone = l.tick( s );\n\n if( s.firstUpdate ){\n if( s.animateContinuously ){ // indicate the initial positions have been set\n s.layout.emit('layoutready');\n }\n s.firstUpdate = false;\n }\n\n s.tickIndex++;\n\n let duration = Date.now() - s.startTime;\n\n return !s.infinite && ( tickIndicatesDone || s.tickIndex >= s.maxIterations || duration >= s.maxSimulationTime );\n};\n\nlet multitick = function( state, onNotDone = nop, onDone = nop ){\n let done = false;\n let s = state;\n\n for( let i = 0; i < s.refresh; i++ ){\n done = !s.running || tick( s );\n\n if( done ){ break; }\n }\n\n if( !done ){\n onNotDone();\n } else {\n onDone();\n }\n};\n\nmodule.exports = { tick, multitick };\n\n\n\n// WEBPACK FOOTER //\n// ./src/layout/tick.js","(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 0;\n // If this is a simple node with no collapsed children return directly\n if (!hasChildren && !collapsedChildren) {\n return;\n }\n\n var isCollapsed = node.hasClass('cy-expand-collapse-collapsed-node');\n\n //Draw expand-collapse rectangles\n var rectSize = options().expandCollapseCueSize;\n var lineSize = options().expandCollapseCueLineSize;\n\n var cueCenter;\n\n if (options().expandCollapseCuePosition === 'top-left') {\n var offset = 1;\n var size = cy.zoom() < 1 ? rectSize / (2 * cy.zoom()) : rectSize / 2;\n var nodeBorderWid = parseFloat(node.css('border-width'));\n var x = node.position('x') - node.width() / 2 - parseFloat(node.css('padding-left'))\n + nodeBorderWid + size + offset;\n var y = node.position('y') - node.height() / 2 - parseFloat(node.css('padding-top'))\n + nodeBorderWid + size + offset;\n\n cueCenter = { x: x, y: y };\n } else {\n var option = options().expandCollapseCuePosition;\n cueCenter = typeof option === 'function' ? option.call(this, node) : option;\n }\n\n var expandcollapseCenter = elementUtilities.convertToRenderedPosition(cueCenter);\n\n // convert to rendered sizes\n rectSize = Math.max(rectSize, rectSize * cy.zoom());\n lineSize = Math.max(lineSize, lineSize * cy.zoom());\n var diff = (rectSize - lineSize) / 2;\n\n var expandcollapseCenterX = expandcollapseCenter.x;\n var expandcollapseCenterY = expandcollapseCenter.y;\n\n var expandcollapseStartX = expandcollapseCenterX - rectSize / 2;\n var expandcollapseStartY = expandcollapseCenterY - rectSize / 2;\n var expandcollapseRectSize = rectSize;\n\n // Draw expand/collapse cue if specified use an image else render it in the default way\n if (isCollapsed && options().expandCueImage) {\n drawImg(options().expandCueImage, expandcollapseStartX, expandcollapseStartY, rectSize, rectSize);\n }\n else if (!isCollapsed && options().collapseCueImage) {\n drawImg(options().collapseCueImage, expandcollapseStartX, expandcollapseStartY, rectSize, rectSize);\n }\n else {\n var oldFillStyle = ctx.fillStyle;\n var oldWidth = ctx.lineWidth;\n var oldStrokeStyle = ctx.strokeStyle;\n\n ctx.fillStyle = \"black\";\n ctx.strokeStyle = \"black\";\n\n ctx.ellipse(expandcollapseCenterX, expandcollapseCenterY, rectSize / 2, rectSize / 2, 0, 0, 2 * Math.PI);\n ctx.fill();\n\n ctx.beginPath();\n\n ctx.strokeStyle = \"white\";\n ctx.lineWidth = Math.max(2.6, 2.6 * cy.zoom());\n\n ctx.moveTo(expandcollapseStartX + diff, expandcollapseStartY + rectSize / 2);\n ctx.lineTo(expandcollapseStartX + lineSize + diff, expandcollapseStartY + rectSize / 2);\n\n if (isCollapsed) {\n ctx.moveTo(expandcollapseStartX + rectSize / 2, expandcollapseStartY + diff);\n ctx.lineTo(expandcollapseStartX + rectSize / 2, expandcollapseStartY + lineSize + diff);\n }\n\n ctx.closePath();\n ctx.stroke();\n\n ctx.strokeStyle = oldStrokeStyle;\n ctx.fillStyle = oldFillStyle;\n ctx.lineWidth = oldWidth;\n }\n\n node._private.data.expandcollapseRenderedStartX = expandcollapseStartX;\n node._private.data.expandcollapseRenderedStartY = expandcollapseStartY;\n node._private.data.expandcollapseRenderedCueSize = expandcollapseRectSize;\n\n nodeWithRenderedCue = node;\n }\n\n function drawImg(imgSrc, x, y, w, h) {\n var img = new Image(w, h);\n img.src = imgSrc;\n img.onload = () => {\n ctx.drawImage(img, x, y, w, h);\n };\n }\n\n cy.on('resize', data.eCyResize = function () {\n sizeCanvas();\n });\n\n cy.on('expandcollapse.clearvisualcue', function () {\n if (nodeWithRenderedCue) {\n clearDraws();\n }\n });\n\n var oldMousePos = null, currMousePos = null;\n cy.on('mousedown', data.eMouseDown = function (e) {\n oldMousePos = e.renderedPosition || e.cyRenderedPosition\n });\n\n cy.on('mouseup', data.eMouseUp = function (e) {\n currMousePos = e.renderedPosition || e.cyRenderedPosition\n });\n\n cy.on('remove', 'node', data.eRemove = function (evt) {\n const node = evt.target;\n if (node == nodeWithRenderedCue) {\n clearDraws();\n }\n });\n\n var ur;\n cy.on('select unselect', data.eSelect = function () {\n if (nodeWithRenderedCue) {\n clearDraws();\n }\n var selectedNodes = cy.nodes(':selected');\n if (selectedNodes.length !== 1) {\n return;\n }\n var selectedNode = selectedNodes[0];\n\n if (selectedNode.isParent() || selectedNode.hasClass('cy-expand-collapse-collapsed-node')) {\n drawExpandCollapseCue(selectedNode);\n }\n });\n\n cy.on('tap', data.eTap = function (event) {\n var node = nodeWithRenderedCue;\n if (!node) {\n return;\n }\n var expandcollapseRenderedStartX = node.data('expandcollapseRenderedStartX');\n var expandcollapseRenderedStartY = node.data('expandcollapseRenderedStartY');\n var expandcollapseRenderedRectSize = node.data('expandcollapseRenderedCueSize');\n var expandcollapseRenderedEndX = expandcollapseRenderedStartX + expandcollapseRenderedRectSize;\n var expandcollapseRenderedEndY = expandcollapseRenderedStartY + expandcollapseRenderedRectSize;\n\n var cyRenderedPos = event.renderedPosition || event.cyRenderedPosition;\n var cyRenderedPosX = cyRenderedPos.x;\n var cyRenderedPosY = cyRenderedPos.y;\n var opts = options();\n var factor = (opts.expandCollapseCueSensitivity - 1) / 2;\n\n if ((Math.abs(oldMousePos.x - currMousePos.x) < 5 && Math.abs(oldMousePos.y - currMousePos.y) < 5)\n && cyRenderedPosX >= expandcollapseRenderedStartX - expandcollapseRenderedRectSize * factor\n && cyRenderedPosX <= expandcollapseRenderedEndX + expandcollapseRenderedRectSize * factor\n && cyRenderedPosY >= expandcollapseRenderedStartY - expandcollapseRenderedRectSize * factor\n && cyRenderedPosY <= expandcollapseRenderedEndY + expandcollapseRenderedRectSize * factor) {\n if (opts.undoable && !ur) {\n ur = cy.undoRedo({ defaultActions: false });\n }\n\n if (api.isCollapsible(node)) {\n clearDraws();\n if (opts.undoable) {\n ur.do(\"collapse\", {\n nodes: node,\n options: opts\n });\n }\n else {\n api.collapse(node, opts);\n }\n }\n else if (api.isExpandable(node)) {\n clearDraws();\n if (opts.undoable) {\n ur.do(\"expand\", { nodes: node, options: opts });\n }\n else {\n api.expand(node, opts);\n }\n }\n if (node.selectable()) {\n node.unselectify();\n cy.scratch('_cyExpandCollapse').selectableChanged = true;\n }\n }\n });\n\n cy.on('afterUndo afterRedo', data.eUndoRedo = data.eSelect);\n\n cy.on('position', 'node', data.ePosition = debounce2(data.eSelect, CUE_POS_UPDATE_DELAY, clearDraws));\n\n cy.on('pan zoom', data.ePosition);\n\n // write options to data\n data.hasEventFields = true;\n setData(data);\n },\n unbind: function () {\n // var $container = this;\n var data = getData();\n\n if (!data.hasEventFields) {\n console.log('events to unbind does not exist');\n return;\n }\n\n cy.trigger('expandcollapse.clearvisualcue');\n\n cy.off('mousedown', 'node', data.eMouseDown)\n .off('mouseup', 'node', data.eMouseUp)\n .off('remove', 'node', data.eRemove)\n .off('tap', 'node', data.eTap)\n .off('add', 'node', data.eAdd)\n .off('position', 'node', data.ePosition)\n .off('pan zoom', data.ePosition)\n .off('select unselect', data.eSelect)\n .off('free', 'node', data.eFree)\n .off('resize', data.eCyResize)\n .off('afterUndo afterRedo', data.eUndoRedo);\n },\n rebind: function () {\n var data = getData();\n\n if (!data.hasEventFields) {\n console.log('events to rebind does not exist');\n return;\n }\n\n cy.on('mousedown', 'node', data.eMouseDown)\n .on('mouseup', 'node', data.eMouseUp)\n .on('remove', 'node', data.eRemove)\n .on('tap', 'node', data.eTap)\n .on('add', 'node', data.eAdd)\n .on('position', 'node', data.ePosition)\n .on('pan zoom', data.ePosition)\n .on('select unselect', data.eSelect)\n .on('free', 'node', data.eFree)\n .on('resize', data.eCyResize)\n .on('afterUndo afterRedo', data.eUndoRedo);\n }\n };\n\n if (functions[fn]) {\n return functions[fn].apply(cy.container(), Array.prototype.slice.call(arguments, 1));\n } else if (typeof fn == 'object' || !fn) {\n return functions.init.apply(cy.container(), arguments);\n }\n throw new Error('No such function `' + fn + '` for cytoscape.js-expand-collapse');\n\n};\n","var debounce = (function () {\n /**\n * lodash 3.1.1 (Custom Build) \n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n /** Used as the `TypeError` message for \"Functions\" methods. */\n var FUNC_ERROR_TEXT = 'Expected a function';\n\n /* Native method references for those with the same name as other `lodash` methods. */\n var nativeMax = Math.max,\n nativeNow = Date.now;\n\n /**\n * Gets the number of milliseconds that have elapsed since the Unix epoch\n * (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @category Date\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => logs the number of milliseconds it took for the deferred function to be invoked\n */\n var now = nativeNow || function () {\n return new Date().getTime();\n };\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed invocations. Provide an options object to indicate that `func`\n * should be invoked on the leading and/or trailing edge of the `wait` timeout.\n * Subsequent calls to the debounced function return the result of the last\n * `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the debounced function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=false] Specify invoking on the leading\n * edge of the timeout.\n * @param {number} [options.maxWait] The maximum time `func` is allowed to be\n * delayed before it's invoked.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // avoid costly calculations while the window size is in flux\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // invoke `sendMail` when the click event is fired, debouncing subsequent calls\n * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // ensure `batchLog` is invoked once after 1 second of debounced calls\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', _.debounce(batchLog, 250, {\n * 'maxWait': 1000\n * }));\n *\n * // cancel a debounced call\n * var todoChanges = _.debounce(batchLog, 1000);\n * Object.observe(models.todo, todoChanges);\n *\n * Object.observe(models, function(changes) {\n * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {\n * todoChanges.cancel();\n * }\n * }, ['delete']);\n *\n * // ...at some point `models.todo` is changed\n * models.todo.completed = true;\n *\n * // ...before 1 second has passed `models.todo` is deleted\n * // which cancels the debounced `todoChanges` call\n * delete models.todo;\n */\n function debounce(func, wait, options) {\n var args,\n maxTimeoutId,\n result,\n stamp,\n thisArg,\n timeoutId,\n trailingCall,\n lastCalled = 0,\n maxWait = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = wait < 0 ? 0 : (+wait || 0);\n if (options === true) {\n var leading = true;\n trailing = false;\n } else if (isObject(options)) {\n leading = !!options.leading;\n maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (maxTimeoutId) {\n clearTimeout(maxTimeoutId);\n }\n lastCalled = 0;\n maxTimeoutId = timeoutId = trailingCall = undefined;\n }\n\n function complete(isCalled, id) {\n if (id) {\n clearTimeout(id);\n }\n maxTimeoutId = timeoutId = trailingCall = undefined;\n if (isCalled) {\n lastCalled = now();\n result = func.apply(thisArg, args);\n if (!timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n }\n }\n\n function delayed() {\n var remaining = wait - (now() - stamp);\n if (remaining <= 0 || remaining > wait) {\n complete(trailingCall, maxTimeoutId);\n } else {\n timeoutId = setTimeout(delayed, remaining);\n }\n }\n\n function maxDelayed() {\n complete(trailing, timeoutId);\n }\n\n function debounced() {\n args = arguments;\n stamp = now();\n thisArg = this;\n trailingCall = trailing && (timeoutId || !leading);\n\n if (maxWait === false) {\n var leadingCall = leading && !timeoutId;\n } else {\n if (!maxTimeoutId && !leading) {\n lastCalled = stamp;\n }\n var remaining = maxWait - (stamp - lastCalled),\n isCalled = remaining <= 0 || remaining > maxWait;\n\n if (isCalled) {\n if (maxTimeoutId) {\n maxTimeoutId = clearTimeout(maxTimeoutId);\n }\n lastCalled = stamp;\n result = func.apply(thisArg, args);\n }\n else if (!maxTimeoutId) {\n maxTimeoutId = setTimeout(maxDelayed, remaining);\n }\n }\n if (isCalled && timeoutId) {\n timeoutId = clearTimeout(timeoutId);\n }\n else if (!timeoutId && wait !== maxWait) {\n timeoutId = setTimeout(delayed, wait);\n }\n if (leadingCall) {\n isCalled = true;\n result = func.apply(thisArg, args);\n }\n if (isCalled && !timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n return result;\n }\n\n debounced.cancel = cancel;\n return debounced;\n }\n\n /**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\n function isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n }\n\n return debounce;\n\n})();\n\nmodule.exports = debounce;","var debounce2 = (function () {\n /**\n * Slightly modified version of debounce. Calls fn2 at the beginning of frequent calls to fn1\n * @static\n * @category Function\n * @param {Function} fn1 The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Function} fn2 The function to call the beginning of frequent calls to fn1\n * @returns {Function} Returns the new debounced function.\n */\n function debounce2(fn1, wait, fn2) {\n let timeout;\n let isInit = true;\n return function () {\n const context = this, args = arguments;\n const later = function () {\n timeout = null;\n fn1.apply(context, args);\n isInit = true;\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (isInit) {\n fn2.apply(context, args);\n isInit = false;\n }\n };\n }\n return debounce2;\n})();\n\nmodule.exports = debounce2;","function elementUtilities(cy) {\n return {\n moveNodes: function (positionDiff, nodes, notCalcTopMostNodes) {\n var topMostNodes = notCalcTopMostNodes ? nodes : this.getTopMostNodes(nodes);\n var nonParents = topMostNodes.not(\":parent\"); \n // moving parents spoils positioning, so move only nonparents\n nonParents.positions(function(ele, i){\n return {\n x: nonParents[i].position(\"x\") + positionDiff.x,\n y: nonParents[i].position(\"y\") + positionDiff.y\n };\n });\n for (var i = 0; i < topMostNodes.length; i++) {\n var node = topMostNodes[i];\n var children = node.children();\n this.moveNodes(positionDiff, children, true);\n }\n },\n getTopMostNodes: function (nodes) {//*//\n var nodesMap = {};\n for (var i = 0; i < nodes.length; i++) {\n nodesMap[nodes[i].id()] = true;\n }\n var roots = nodes.filter(function (ele, i) {\n if(typeof ele === \"number\") {\n ele = i;\n }\n \n var parent = ele.parent()[0];\n while (parent != null) {\n if (nodesMap[parent.id()]) {\n return false;\n }\n parent = parent.parent()[0];\n }\n return true;\n });\n\n return roots;\n },\n rearrange: function (layoutBy) {\n if (typeof layoutBy === \"function\") {\n layoutBy();\n } else if (layoutBy != null) {\n var layout = cy.layout(layoutBy);\n if (layout && layout.run) {\n layout.run();\n }\n }\n },\n convertToRenderedPosition: function (modelPosition) {\n var pan = cy.pan();\n var zoom = cy.zoom();\n\n var x = modelPosition.x * zoom + pan.x;\n var y = modelPosition.y * zoom + pan.y;\n\n return {\n x: x,\n y: y\n };\n }\n };\n}\n\nmodule.exports = elementUtilities;\n","var boundingBoxUtilities = require('./boundingBoxUtilities');\n\n// Expand collapse utilities\nfunction expandCollapseUtilities(cy) {\nvar elementUtilities = require('./elementUtilities')(cy);\nreturn {\n //the number of nodes moving animatedly after expand operation\n animatedlyMovingNodeCount: 0,\n /*\n * A funtion basicly expanding a node, it is to be called when a node is expanded anyway.\n * Single parameter indicates if the node is expanded alone and if it is truthy then layoutBy parameter is considered to\n * perform layout after expand.\n */\n expandNodeBaseFunction: function (node, single, layoutBy) {\n if (!node._private.data.collapsedChildren){\n return;\n }\n\n //check how the position of the node is changed\n var positionDiff = {\n x: node._private.position.x - node._private.data['position-before-collapse'].x,\n y: node._private.position.y - node._private.data['position-before-collapse'].y\n };\n\n node.removeData(\"infoLabel\");\n node.removeClass('cy-expand-collapse-collapsed-node');\n\n node.trigger(\"expandcollapse.beforeexpand\");\n var restoredNodes = node._private.data.collapsedChildren;\n restoredNodes.restore();\n var parentData = cy.scratch('_cyExpandCollapse').parentData;\n for(var i = 0; i < restoredNodes.length; i++){\n delete parentData[restoredNodes[i].id()];\n }\n cy.scratch('_cyExpandCollapse').parentData = parentData;\n this.repairEdges(node);\n node._private.data.collapsedChildren = null;\n\n elementUtilities.moveNodes(positionDiff, node.children());\n node.removeData('position-before-collapse');\n\n node.trigger(\"position\"); // position not triggered by default when nodes are moved\n node.trigger(\"expandcollapse.afterexpand\");\n\n // If expand is called just for one node then call end operation to perform layout\n if (single) {\n this.endOperation(layoutBy, node);\n }\n },\n /*\n * A helper function to collapse given nodes in a simple way (Without performing layout afterward)\n * It collapses all root nodes bottom up.\n */\n simpleCollapseGivenNodes: function (nodes) {//*//\n nodes.data(\"collapse\", true);\n var roots = elementUtilities.getTopMostNodes(nodes);\n for (var i = 0; i < roots.length; i++) {\n var root = roots[i];\n \n // Collapse the nodes in bottom up order\n this.collapseBottomUp(root);\n }\n \n return nodes;\n },\n /*\n * A helper function to expand given nodes in a simple way (Without performing layout afterward)\n * It expands all top most nodes top down.\n */\n simpleExpandGivenNodes: function (nodes, applyFishEyeViewToEachNode) {\n nodes.data(\"expand\", true); // Mark that the nodes are still to be expanded\n var roots = elementUtilities.getTopMostNodes(nodes);\n for (var i = 0; i < roots.length; i++) {\n var root = roots[i];\n this.expandTopDown(root, applyFishEyeViewToEachNode); // For each root node expand top down\n }\n return nodes;\n },\n /*\n * Expands all nodes by expanding all top most nodes top down with their descendants.\n */\n simpleExpandAllNodes: function (nodes, applyFishEyeViewToEachNode) {\n if (nodes === undefined) {\n nodes = cy.nodes();\n }\n var orphans;\n orphans = elementUtilities.getTopMostNodes(nodes);\n var expandStack = [];\n for (var i = 0; i < orphans.length; i++) {\n var root = orphans[i];\n this.expandAllTopDown(root, expandStack, applyFishEyeViewToEachNode);\n }\n return expandStack;\n },\n /*\n * The operation to be performed after expand/collapse. It rearrange nodes by layoutBy parameter.\n */\n endOperation: function (layoutBy, nodes) {\n var self = this;\n cy.ready(function () {\n setTimeout(function() {\n elementUtilities.rearrange(layoutBy);\n if(cy.scratch('_cyExpandCollapse').selectableChanged){\n nodes.selectify();\n cy.scratch('_cyExpandCollapse').selectableChanged = false;\n }\n }, 0);\n \n });\n },\n /*\n * Calls simple expandAllNodes. Then performs end operation.\n */\n expandAllNodes: function (nodes, options) {//*//\n var expandedStack = this.simpleExpandAllNodes(nodes, options.fisheye);\n\n this.endOperation(options.layoutBy, nodes);\n\n /*\n * return the nodes to undo the operation\n */\n return expandedStack;\n },\n /*\n * Expands the root and its collapsed descendents in top down order.\n */\n expandAllTopDown: function (root, expandStack, applyFishEyeViewToEachNode) {\n if (root._private.data.collapsedChildren != null) {\n expandStack.push(root);\n this.expandNode(root, applyFishEyeViewToEachNode);\n }\n var children = root.children();\n for (var i = 0; i < children.length; i++) {\n var node = children[i];\n this.expandAllTopDown(node, expandStack, applyFishEyeViewToEachNode);\n }\n },\n //Expand the given nodes perform end operation after expandation\n expandGivenNodes: function (nodes, options) {\n // If there is just one node to expand we need to animate for fisheye view, but if there are more then one node we do not\n if (nodes.length === 1) {\n \n var node = nodes[0];\n if (node._private.data.collapsedChildren != null) {\n // Expand the given node the third parameter indicates that the node is simple which ensures that fisheye parameter will be considered\n this.expandNode(node, options.fisheye, true, options.animate, options.layoutBy, options.animationDuration);\n }\n } \n else {\n // First expand given nodes and then perform layout according to the layoutBy parameter\n this.simpleExpandGivenNodes(nodes, options.fisheye);\n this.endOperation(options.layoutBy, nodes);\n }\n\n /*\n * return the nodes to undo the operation\n */\n return nodes;\n },\n //collapse the given nodes then perform end operation\n collapseGivenNodes: function (nodes, options) {\n /*\n * In collapse operation there is no fisheye view to be applied so there is no animation to be destroyed here. We can do this \n * in a batch.\n */ \n cy.startBatch();\n this.simpleCollapseGivenNodes(nodes/*, options*/);\n cy.endBatch();\n\n nodes.trigger(\"position\"); // position not triggered by default when collapseNode is called\n this.endOperation(options.layoutBy, nodes);\n\n // Update the style\n cy.style().update();\n\n /*\n * return the nodes to undo the operation\n */\n return nodes;\n },\n //collapse the nodes in bottom up order starting from the root\n collapseBottomUp: function (root) {\n var children = root.children();\n for (var i = 0; i < children.length; i++) {\n var node = children[i];\n this.collapseBottomUp(node);\n }\n //If the root is a compound node to be collapsed then collapse it\n if (root.data(\"collapse\") && root.children().length > 0) {\n this.collapseNode(root);\n root.removeData(\"collapse\");\n }\n },\n //expand the nodes in top down order starting from the root\n expandTopDown: function (root, applyFishEyeViewToEachNode) {\n if (root.data(\"expand\") && root._private.data.collapsedChildren != null) {\n // Expand the root and unmark its expand data to specify that it is no more to be expanded\n this.expandNode(root, applyFishEyeViewToEachNode);\n root.removeData(\"expand\");\n }\n // Make a recursive call for children of root\n var children = root.children();\n for (var i = 0; i < children.length; i++) {\n var node = children[i];\n this.expandTopDown(node);\n }\n },\n // Converst the rendered position to model position according to global pan and zoom values\n convertToModelPosition: function (renderedPosition) {\n var pan = cy.pan();\n var zoom = cy.zoom();\n\n var x = (renderedPosition.x - pan.x) / zoom;\n var y = (renderedPosition.y - pan.y) / zoom;\n\n return {\n x: x,\n y: y\n };\n },\n /*\n * This method expands the given node. It considers applyFishEyeView, animate and layoutBy parameters.\n * It also considers single parameter which indicates if this node is expanded alone. If this parameter is truthy along with \n * applyFishEyeView parameter then the state of view port is to be changed to have extra space on the screen (if needed) before appliying the\n * fisheye view.\n */\n expandNode: function (node, applyFishEyeView, single, animate, layoutBy, animationDuration) {\n var self = this;\n \n var commonExpandOperation = function (node, applyFishEyeView, single, animate, layoutBy, animationDuration) {\n if (applyFishEyeView) {\n\n node._private.data['width-before-fisheye'] = node._private.data['size-before-collapse'].w;\n node._private.data['height-before-fisheye'] = node._private.data['size-before-collapse'].h;\n \n // Fisheye view expand the node.\n // The first paramter indicates the node to apply fisheye view, the third parameter indicates the node\n // to be expanded after fisheye view is applied.\n self.fishEyeViewExpandGivenNode(node, single, node, animate, layoutBy, animationDuration);\n }\n \n // If one of these parameters is truthy it means that expandNodeBaseFunction is already to be called.\n // However if none of them is truthy we need to call it here.\n if (!single || !applyFishEyeView || !animate) {\n self.expandNodeBaseFunction(node, single, layoutBy);\n }\n };\n\n if (node._private.data.collapsedChildren != null) {\n this.storeWidthHeight(node);\n var animating = false; // Variable to check if there is a current animation, if there is commonExpandOperation will be called after animation\n \n // If the node is the only node to expand and fisheye view should be applied, then change the state of viewport \n // to create more space on screen (If needed)\n if (applyFishEyeView && single) {\n var topLeftPosition = this.convertToModelPosition({x: 0, y: 0});\n var bottomRightPosition = this.convertToModelPosition({x: cy.width(), y: cy.height()});\n var padding = 80;\n var bb = {\n x1: topLeftPosition.x,\n x2: bottomRightPosition.x,\n y1: topLeftPosition.y,\n y2: bottomRightPosition.y\n };\n\n var nodeBB = {\n x1: node._private.position.x - node._private.data['size-before-collapse'].w / 2 - padding,\n x2: node._private.position.x + node._private.data['size-before-collapse'].w / 2 + padding,\n y1: node._private.position.y - node._private.data['size-before-collapse'].h / 2 - padding,\n y2: node._private.position.y + node._private.data['size-before-collapse'].h / 2 + padding\n };\n\n var unionBB = boundingBoxUtilities.getUnion(nodeBB, bb);\n \n // If these bboxes are not equal then we need to change the viewport state (by pan and zoom)\n if (!boundingBoxUtilities.equalBoundingBoxes(unionBB, bb)) {\n var viewPort = cy.getFitViewport(unionBB, 10);\n var self = this;\n animating = animate; // Signal that there is an animation now and commonExpandOperation will be called after animation\n // Check if we need to animate during pan and zoom\n if (animate) {\n cy.animate({\n pan: viewPort.pan,\n zoom: viewPort.zoom,\n complete: function () {\n commonExpandOperation(node, applyFishEyeView, single, animate, layoutBy, animationDuration);\n }\n }, {\n duration: animationDuration || 1000\n });\n }\n else {\n cy.zoom(viewPort.zoom);\n cy.pan(viewPort.pan);\n }\n }\n }\n \n // If animating is not true we need to call commonExpandOperation here\n if (!animating) {\n commonExpandOperation(node, applyFishEyeView, single, animate, layoutBy, animationDuration);\n }\n \n //return the node to undo the operation\n return node;\n }\n },\n //collapse the given node without performing end operation\n collapseNode: function (node) {\n if (node._private.data.collapsedChildren == null) {\n node.data('position-before-collapse', {\n x: node.position().x,\n y: node.position().y\n });\n\n node.data('size-before-collapse', {\n w: node.outerWidth(),\n h: node.outerHeight()\n });\n\n var children = node.children();\n\n children.unselect();\n children.connectedEdges().unselect();\n\n node.trigger(\"expandcollapse.beforecollapse\");\n \n this.barrowEdgesOfcollapsedChildren(node);\n this.removeChildren(node, node);\n node.addClass('cy-expand-collapse-collapsed-node');\n\n node.trigger(\"expandcollapse.aftercollapse\");\n \n node.position(node.data('position-before-collapse'));\n\n //return the node to undo the operation\n return node;\n }\n },\n storeWidthHeight: function (node) {//*//\n if (node != null) {\n node._private.data['x-before-fisheye'] = this.xPositionInParent(node);\n node._private.data['y-before-fisheye'] = this.yPositionInParent(node);\n node._private.data['width-before-fisheye'] = node.outerWidth();\n node._private.data['height-before-fisheye'] = node.outerHeight();\n\n if (node.parent()[0] != null) {\n this.storeWidthHeight(node.parent()[0]);\n }\n }\n\n },\n /*\n * Apply fisheye view to the given node. nodeToExpand will be expanded after the operation. \n * The other parameter are to be passed by parameters directly in internal function calls.\n */\n fishEyeViewExpandGivenNode: function (node, single, nodeToExpand, animate, layoutBy, animationDuration) {\n var siblings = this.getSiblings(node);\n\n var x_a = this.xPositionInParent(node);\n var y_a = this.yPositionInParent(node);\n\n var d_x_left = Math.abs((node._private.data['width-before-fisheye'] - node.outerWidth()) / 2);\n var d_x_right = Math.abs((node._private.data['width-before-fisheye'] - node.outerWidth()) / 2);\n var d_y_upper = Math.abs((node._private.data['height-before-fisheye'] - node.outerHeight()) / 2);\n var d_y_lower = Math.abs((node._private.data['height-before-fisheye'] - node.outerHeight()) / 2);\n\n var abs_diff_on_x = Math.abs(node._private.data['x-before-fisheye'] - x_a);\n var abs_diff_on_y = Math.abs(node._private.data['y-before-fisheye'] - y_a);\n\n // Center went to LEFT\n if (node._private.data['x-before-fisheye'] > x_a) {\n d_x_left = d_x_left + abs_diff_on_x;\n d_x_right = d_x_right - abs_diff_on_x;\n }\n // Center went to RIGHT\n else {\n d_x_left = d_x_left - abs_diff_on_x;\n d_x_right = d_x_right + abs_diff_on_x;\n }\n\n // Center went to UP\n if (node._private.data['y-before-fisheye'] > y_a) {\n d_y_upper = d_y_upper + abs_diff_on_y;\n d_y_lower = d_y_lower - abs_diff_on_y;\n }\n // Center went to DOWN\n else {\n d_y_upper = d_y_upper - abs_diff_on_y;\n d_y_lower = d_y_lower + abs_diff_on_y;\n }\n\n var xPosInParentSibling = [];\n var yPosInParentSibling = [];\n\n for (var i = 0; i < siblings.length; i++) {\n xPosInParentSibling.push(this.xPositionInParent(siblings[i]));\n yPosInParentSibling.push(this.yPositionInParent(siblings[i]));\n }\n\n for (var i = 0; i < siblings.length; i++) {\n var sibling = siblings[i];\n\n var x_b = xPosInParentSibling[i];\n var y_b = yPosInParentSibling[i];\n\n var slope = (y_b - y_a) / (x_b - x_a);\n\n var d_x = 0;\n var d_y = 0;\n var T_x = 0;\n var T_y = 0;\n\n // Current sibling is on the LEFT\n if (x_a > x_b) {\n d_x = d_x_left;\n }\n // Current sibling is on the RIGHT\n else {\n d_x = d_x_right;\n }\n // Current sibling is on the UPPER side\n if (y_a > y_b) {\n d_y = d_y_upper;\n }\n // Current sibling is on the LOWER side\n else {\n d_y = d_y_lower;\n }\n\n if (isFinite(slope)) {\n T_x = Math.min(d_x, (d_y / Math.abs(slope)));\n }\n\n if (slope !== 0) {\n T_y = Math.min(d_y, (d_x * Math.abs(slope)));\n }\n\n if (x_a > x_b) {\n T_x = -1 * T_x;\n }\n\n if (y_a > y_b) {\n T_y = -1 * T_y;\n }\n \n // Move the sibling in the special way\n this.fishEyeViewMoveNode(sibling, T_x, T_y, nodeToExpand, single, animate, layoutBy, animationDuration);\n }\n\n // If there is no sibling call expand node base function here else it is to be called one of fishEyeViewMoveNode() calls\n if (siblings.length == 0 && node.same(nodeToExpand)) {\n this.expandNodeBaseFunction(nodeToExpand, single, layoutBy);\n }\n\n if (node.parent()[0] != null) {\n // Apply fisheye view to the parent node as well ( If exists )\n this.fishEyeViewExpandGivenNode(node.parent()[0], single, nodeToExpand, animate, layoutBy, animationDuration);\n }\n\n return node;\n },\n getSiblings: function (node) {\n var siblings;\n\n if (node.parent()[0] == null) {\n var orphans = cy.nodes(\":visible\").orphans();\n siblings = orphans.difference(node);\n } else {\n siblings = node.siblings(\":visible\");\n }\n\n return siblings;\n },\n /*\n * Move node operation specialized for fish eye view expand operation\n * Moves the node by moving its descandents. Movement is animated if both single and animate flags are truthy.\n */\n fishEyeViewMoveNode: function (node, T_x, T_y, nodeToExpand, single, animate, layoutBy, animationDuration) {\n var childrenList = cy.collection();\n if(node.isParent()){\n childrenList = node.children(\":visible\");\n }\n var self = this;\n \n /*\n * If the node is simple move itself directly else move it by moving its children by a self recursive call\n */\n if (childrenList.length == 0) {\n var newPosition = {x: node._private.position.x + T_x, y: node._private.position.y + T_y};\n if (!single || !animate) {\n node.position(newPosition); // at this point, position should be updated\n }\n else {\n this.animatedlyMovingNodeCount++;\n node.animate({\n position: newPosition,\n complete: function () {\n self.animatedlyMovingNodeCount--;\n if (self.animatedlyMovingNodeCount > 0 || !nodeToExpand.hasClass('cy-expand-collapse-collapsed-node')) {\n\n return;\n }\n \n // If all nodes are moved we are ready to expand so call expand node base function\n self.expandNodeBaseFunction(nodeToExpand, single, layoutBy);\n\n }\n }, {\n duration: animationDuration || 1000\n });\n }\n }\n else {\n for (var i = 0; i < childrenList.length; i++) {\n this.fishEyeViewMoveNode(childrenList[i], T_x, T_y, nodeToExpand, single, animate, layoutBy, animationDuration);\n }\n }\n },\n xPositionInParent: function (node) {//*//\n var parent = node.parent()[0];\n var x_a = 0.0;\n\n // Given node is not a direct child of the the root graph\n if (parent != null) {\n x_a = node.relativePosition('x') + (parent.width() / 2);\n }\n // Given node is a direct child of the the root graph\n\n else {\n x_a = node.position('x');\n }\n\n return x_a;\n },\n yPositionInParent: function (node) {//*//\n var parent = node.parent()[0];\n\n var y_a = 0.0;\n\n // Given node is not a direct child of the the root graph\n if (parent != null) {\n y_a = node.relativePosition('y') + (parent.height() / 2);\n }\n // Given node is a direct child of the the root graph\n\n else {\n y_a = node.position('y');\n }\n\n return y_a;\n },\n /*\n * for all children of the node parameter call this method\n * with the same root parameter,\n * remove the child and add the removed child to the collapsedchildren data\n * of the root to restore them in the case of expandation\n * root._private.data.collapsedChildren keeps the nodes to restore when the\n * root is expanded\n */\n removeChildren: function (node, root) {\n var children = node.children();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n this.removeChildren(child, root);\n var parentData = cy.scratch('_cyExpandCollapse').parentData;\n parentData[child.id()] = child.parent();\n cy.scratch('_cyExpandCollapse').parentData = parentData;\n var removedChild = child.remove();\n if (root._private.data.collapsedChildren == null) {\n root._private.data.collapsedChildren = removedChild;\n }\n else {\n root._private.data.collapsedChildren = root._private.data.collapsedChildren.union(removedChild);\n }\n }\n },\n isMetaEdge: function(edge) {\n return edge.hasClass(\"cy-expand-collapse-meta-edge\");\n },\n barrowEdgesOfcollapsedChildren: function(node) {\n var relatedNodes = node.descendants();\n var edges = relatedNodes.edgesWith(cy.nodes().not(relatedNodes.union(node)));\n \n var relatedNodeMap = {};\n \n relatedNodes.each(function(ele, i) {\n if(typeof ele === \"number\") {\n ele = i;\n }\n relatedNodeMap[ele.id()] = true;\n });\n \n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n var source = edge.source();\n var target = edge.target();\n \n if (!this.isMetaEdge(edge)) { // is original\n var originalEndsData = {\n source: source,\n target: target\n };\n \n edge.addClass(\"cy-expand-collapse-meta-edge\");\n edge.data('originalEnds', originalEndsData);\n }\n \n edge.move({\n target: !relatedNodeMap[target.id()] ? target.id() : node.id(),\n source: !relatedNodeMap[source.id()] ? source.id() : node.id()\n });\n }\n },\n findNewEnd: function(node) {\n var current = node;\n var parentData = cy.scratch('_cyExpandCollapse').parentData;\n var parent = parentData[current.id()];\n \n while( !current.inside() ) {\n current = parent;\n parent = parentData[parent.id()];\n }\n \n return current;\n },\n repairEdges: function(node) {\n var connectedMetaEdges = node.connectedEdges('.cy-expand-collapse-meta-edge');\n \n for (var i = 0; i < connectedMetaEdges.length; i++) {\n var edge = connectedMetaEdges[i];\n var originalEnds = edge.data('originalEnds');\n var currentSrcId = edge.data('source');\n var currentTgtId = edge.data('target');\n \n if ( currentSrcId === node.id() ) {\n edge = edge.move({\n source: this.findNewEnd(originalEnds.source).id()\n });\n } else {\n edge = edge.move({\n target: this.findNewEnd(originalEnds.target).id()\n });\n }\n \n if ( edge.data('source') === originalEnds.source.id() && edge.data('target') === originalEnds.target.id() ) {\n edge.removeClass('cy-expand-collapse-meta-edge');\n edge.removeData('originalEnds');\n }\n }\n },\n /*node is an outer node of root\n if root is not it's anchestor\n and it is not the root itself*/\n isOuterNode: function (node, root) {//*//\n var temp = node;\n while (temp != null) {\n if (temp == root) {\n return false;\n }\n temp = temp.parent()[0];\n }\n return true;\n },\n /**\n * Get all collapsed children - including nested ones\n * @param node : a collapsed node\n * @param collapsedChildren : a collection to store the result\n * @return : collapsed children\n */\n getCollapsedChildrenRecursively: function(node, collapsedChildren){\n var children = node.data('collapsedChildren') || [];\n var i;\n for (i=0; i < children.length; i++){\n if (children[i].data('collapsedChildren')){\n collapsedChildren = collapsedChildren.union(this.getCollapsedChildrenRecursively(children[i], collapsedChildren));\n }\n collapsedChildren = collapsedChildren.union(children[i]);\n }\n return collapsedChildren;\n },\n /* -------------------------------------- start section edge expand collapse -------------------------------------- */\n collapseGivenEdges: function (edges, options) {\n edges.unselect();\n var nodes = edges.connectedNodes();\n var edgesToCollapse = {};\n // group edges by type if this option is set to true\n if (options.groupEdgesOfSameTypeOnCollapse) {\n edges.forEach(function (edge) {\n var edgeType = \"unknown\";\n if (options.edgeTypeInfo !== undefined) {\n edgeType = options.edgeTypeInfo instanceof Function ? options.edgeTypeInfo.call(edge) : edge.data()[options.edgeTypeInfo];\n }\n if (edgesToCollapse.hasOwnProperty(edgeType)) {\n edgesToCollapse[edgeType].edges = edgesToCollapse[edgeType].edges.add(edge);\n\n if (edgesToCollapse[edgeType].directionType == \"unidirection\" && (edgesToCollapse[edgeType].source != edge.source().id() || edgesToCollapse[edgeType].target != edge.target().id())) {\n edgesToCollapse[edgeType].directionType = \"bidirection\";\n }\n } else {\n var edgesX = cy.collection();\n edgesX = edgesX.add(edge);\n edgesToCollapse[edgeType] = { edges: edgesX, directionType: \"unidirection\", source: edge.source().id(), target: edge.target().id() }\n }\n });\n } else {\n edgesToCollapse[\"unknown\"] = { edges: edges, directionType: \"unidirection\", source: edges[0].source().id(), target: edges[0].target().id() }\n for (var i = 0; i < edges.length; i++) {\n if (edgesToCollapse[\"unknown\"].directionType == \"unidirection\" && (edgesToCollapse[\"unknown\"].source != edges[i].source().id() || edgesToCollapse[\"unknown\"].target != edges[i].target().id())) {\n edgesToCollapse[\"unknown\"].directionType = \"bidirection\";\n break;\n }\n }\n }\n\n var result = { edges: cy.collection(), oldEdges: cy.collection() }\n var newEdges = [];\n for (const edgeGroupType in edgesToCollapse) {\n if (edgesToCollapse[edgeGroupType].edges.length < 2) {\n continue;\n }\n edges.trigger('expandcollapse.beforecollapseedge');\n result.oldEdges = result.oldEdges.add(edgesToCollapse[edgeGroupType].edges);\n var newEdge = {};\n newEdge.group = \"edges\";\n newEdge.data = {};\n newEdge.data.source = edgesToCollapse[edgeGroupType].source;\n newEdge.data.target = edgesToCollapse[edgeGroupType].target;\n var id1 = nodes[0].id();\n var id2 = id1;\n if (nodes[1]) {\n id2 = nodes[1].id();\n }\n newEdge.data.id = \"collapsedEdge_\" + id1 + \"_\" + id2 + \"_\" + edgeGroupType + \"_\" + Math.floor(Math.random() * Date.now());\n newEdge.data.collapsedEdges = cy.collection();\n\n edgesToCollapse[edgeGroupType].edges.forEach(function (edge) {\n newEdge.data.collapsedEdges = newEdge.data.collapsedEdges.add(edge);\n });\n\n newEdge.data.collapsedEdges = this.check4nestedCollapse(newEdge.data.collapsedEdges, options);\n\n var edgesTypeField = \"edgeType\";\n if (options.edgeTypeInfo !== undefined) {\n edgesTypeField = options.edgeTypeInfo instanceof Function ? edgeTypeField : options.edgeTypeInfo;\n }\n newEdge.data[edgesTypeField] = edgeGroupType;\n\n newEdge.data[\"directionType\"] = edgesToCollapse[edgeGroupType].directionType;\n newEdge.classes = \"cy-expand-collapse-collapsed-edge\";\n\n newEdges.push(newEdge);\n cy.remove(edgesToCollapse[edgeGroupType].edges);\n edges.trigger('expandcollapse.aftercollapseedge');\n }\n\n result.edges = cy.add(newEdges);\n return result;\n },\n\n check4nestedCollapse: function(edges2collapse, options){\n if (options.allowNestedEdgeCollapse) {\n return edges2collapse;\n }\n let r = cy.collection();\n for (let i = 0; i < edges2collapse.length; i++) {\n let curr = edges2collapse[i];\n let collapsedEdges = curr.data('collapsedEdges');\n if (collapsedEdges && collapsedEdges.length > 0) {\n r = r.add(collapsedEdges);\n } else {\n r = r.add(curr);\n }\n }\n return r;\n },\n\n expandEdge: function (edge) {\n edge.unselect();\n var result = { edges: cy.collection(), oldEdges: cy.collection() }\n var edges = edge.data('collapsedEdges');\n if (edges !== undefined && edges.length > 0) {\n edge.trigger('expandcollapse.beforeexpandedge');\n result.oldEdges = result.oldEdges.add(edge);\n cy.remove(edge);\n result.edges = cy.add(edges);\n edge.trigger('expandcollapse.afterexpandedge');\n }\n return result;\n },\n\n //if the edges are only between two nodes (valid for collpasing) returns the two nodes else it returns false\n isValidEdgesForCollapse: function (edges) {\n var endPoints = this.getEdgesDistinctEndPoints(edges);\n if (endPoints.length != 2) {\n return false;\n } else {\n return endPoints;\n }\n },\n\n //returns a list of distinct endpoints of a set of edges.\n getEdgesDistinctEndPoints: function (edges) {\n var endPoints = [];\n edges.forEach(function (edge) {\n if (!this.containsElement(endPoints, edge.source())) {\n endPoints.push(edge.source());\n }\n if (!this.containsElement(endPoints, edge.target())) {\n endPoints.push(edge.target());\n\n }\n }.bind(this));\n\n return endPoints;\n },\n\n //function to check if a list of elements contains the given element by looking at id()\n containsElement: function (elements, element) {\n var exists = false;\n for (var i = 0; i < elements.length; i++) {\n if (elements[i].id() == element.id()) {\n exists = true;\n break;\n }\n }\n return exists;\n }\n /* -------------------------------------- end section edge expand collapse -------------------------------------- */\n}\n\n};\n\nmodule.exports = expandCollapseUtilities;\n","(function () {\n 'use strict';\n\n // registers the extension on a cytoscape lib ref\n var register = function (cytoscape) {\n\n if (!cytoscape) {\n return;\n } // can't register if cytoscape unspecified\n\n var undoRedoUtilities = require('./undoRedoUtilities');\n var cueUtilities = require(\"./cueUtilities\");\n var saveLoadUtils = null;\n\n function extendOptions(options, extendBy) {\n var tempOpts = {};\n for (var key in options)\n tempOpts[key] = options[key];\n\n for (var key in extendBy)\n if (tempOpts.hasOwnProperty(key))\n tempOpts[key] = extendBy[key];\n return tempOpts;\n }\n\n // evaluate some specific options in case of they are specified as functions to be dynamically changed\n function evalOptions(options) {\n var animate = typeof options.animate === 'function' ? options.animate.call() : options.animate;\n var fisheye = typeof options.fisheye === 'function' ? options.fisheye.call() : options.fisheye;\n\n options.animate = animate;\n options.fisheye = fisheye;\n }\n\n // creates and returns the API instance for the extension\n function createExtensionAPI(cy, expandCollapseUtilities) {\n var api = {}; // API to be returned\n // set functions\n\n function handleNewOptions(opts) {\n var currentOpts = getScratch(cy, 'options');\n if (opts.cueEnabled && !currentOpts.cueEnabled) {\n api.enableCue();\n }\n else if (!opts.cueEnabled && currentOpts.cueEnabled) {\n api.disableCue();\n }\n }\n\n function isOnly1Pair(edges) {\n let relatedEdgesArr = [];\n for (let i = 0; i < edges.length; i++) {\n const srcId = edges[i].source().id();\n const targetId = edges[i].target().id();\n const obj = {};\n obj[srcId] = true;\n obj[targetId] = true;\n relatedEdgesArr.push(obj);\n }\n for (let i = 0; i < relatedEdgesArr.length; i++) {\n for (let j = i + 1; j < relatedEdgesArr.length; j++) {\n const keys1 = Object.keys(relatedEdgesArr[i]);\n const keys2 = Object.keys(relatedEdgesArr[j]);\n const allKeys = new Set(keys1.concat(keys2));\n if (allKeys.size != keys1.length || allKeys.size != keys2.length) {\n return false;\n }\n }\n }\n return true;\n }\n\n // set all options at once\n api.setOptions = function (opts) {\n handleNewOptions(opts);\n setScratch(cy, 'options', opts);\n };\n\n api.extendOptions = function (opts) {\n var options = getScratch(cy, 'options');\n var newOptions = extendOptions(options, opts);\n handleNewOptions(newOptions);\n setScratch(cy, 'options', newOptions);\n }\n\n // set the option whose name is given\n api.setOption = function (name, value) {\n var opts = {};\n opts[name] = value;\n\n var options = getScratch(cy, 'options');\n var newOptions = extendOptions(options, opts);\n\n handleNewOptions(newOptions);\n setScratch(cy, 'options', newOptions);\n };\n\n // Collection functions\n\n // collapse given eles extend options with given param\n api.collapse = function (_eles, opts) {\n var eles = this.collapsibleNodes(_eles);\n var options = getScratch(cy, 'options');\n var tempOptions = extendOptions(options, opts);\n evalOptions(tempOptions);\n\n return expandCollapseUtilities.collapseGivenNodes(eles, tempOptions);\n };\n\n // collapse given eles recursively extend options with given param\n api.collapseRecursively = function (_eles, opts) {\n var eles = this.collapsibleNodes(_eles);\n var options = getScratch(cy, 'options');\n var tempOptions = extendOptions(options, opts);\n evalOptions(tempOptions);\n\n return this.collapse(eles.union(eles.descendants()), tempOptions);\n };\n\n // expand given eles extend options with given param\n api.expand = function (_eles, opts) {\n var eles = this.expandableNodes(_eles);\n var options = getScratch(cy, 'options');\n var tempOptions = extendOptions(options, opts);\n evalOptions(tempOptions);\n\n return expandCollapseUtilities.expandGivenNodes(eles, tempOptions);\n };\n\n // expand given eles recusively extend options with given param\n api.expandRecursively = function (_eles, opts) {\n var eles = this.expandableNodes(_eles);\n var options = getScratch(cy, 'options');\n var tempOptions = extendOptions(options, opts);\n evalOptions(tempOptions);\n\n return expandCollapseUtilities.expandAllNodes(eles, tempOptions);\n };\n\n\n // Core functions\n\n // collapse all collapsible nodes\n api.collapseAll = function (opts) {\n var options = getScratch(cy, 'options');\n var tempOptions = extendOptions(options, opts);\n evalOptions(tempOptions);\n\n return this.collapseRecursively(this.collapsibleNodes(), tempOptions);\n };\n\n // expand all expandable nodes\n api.expandAll = function (opts) {\n var options = getScratch(cy, 'options');\n var tempOptions = extendOptions(options, opts);\n evalOptions(tempOptions);\n\n return this.expandRecursively(this.expandableNodes(), tempOptions);\n };\n\n\n // Utility functions\n\n // returns if the given node is expandable\n api.isExpandable = function (node) {\n return node.hasClass('cy-expand-collapse-collapsed-node');\n };\n\n // returns if the given node is collapsible\n api.isCollapsible = function (node) {\n return !this.isExpandable(node) && node.isParent();\n };\n\n // get collapsible ones inside given nodes if nodes parameter is not specified consider all nodes\n api.collapsibleNodes = function (_nodes) {\n var self = this;\n var nodes = _nodes ? _nodes : cy.nodes();\n return nodes.filter(function (ele, i) {\n if (typeof ele === \"number\") {\n ele = i;\n }\n return self.isCollapsible(ele);\n });\n };\n\n // get expandable ones inside given nodes if nodes parameter is not specified consider all nodes\n api.expandableNodes = function (_nodes) {\n var self = this;\n var nodes = _nodes ? _nodes : cy.nodes();\n return nodes.filter(function (ele, i) {\n if (typeof ele === \"number\") {\n ele = i;\n }\n return self.isExpandable(ele);\n });\n };\n\n // Get the children of the given collapsed node which are removed during collapse operation\n api.getCollapsedChildren = function (node) {\n return node.data('collapsedChildren');\n };\n\n /** Get collapsed children recursively including nested collapsed children\n * Returned value includes edges and nodes, use selector to get edges or nodes\n * @param node : a collapsed node\n * @return all collapsed children\n */\n api.getCollapsedChildrenRecursively = function (node) {\n var collapsedChildren = cy.collection();\n return expandCollapseUtilities.getCollapsedChildrenRecursively(node, collapsedChildren);\n };\n\n /** Get collapsed children of all collapsed nodes recursively including nested collapsed children\n * Returned value includes edges and nodes, use selector to get edges or nodes\n * @return all collapsed children\n */\n api.getAllCollapsedChildrenRecursively = function () {\n var collapsedChildren = cy.collection();\n var collapsedNodes = cy.nodes(\".cy-expand-collapse-collapsed-node\");\n var j;\n for (j = 0; j < collapsedNodes.length; j++) {\n collapsedChildren = collapsedChildren.union(this.getCollapsedChildrenRecursively(collapsedNodes[j]));\n }\n return collapsedChildren;\n };\n // This method forces the visual cue to be cleared. It is to be called in extreme cases\n api.clearVisualCue = function (node) {\n cy.trigger('expandcollapse.clearvisualcue');\n };\n\n api.disableCue = function () {\n var options = getScratch(cy, 'options');\n if (options.cueEnabled) {\n cueUtilities('unbind', cy, api);\n options.cueEnabled = false;\n }\n };\n\n api.enableCue = function () {\n var options = getScratch(cy, 'options');\n if (!options.cueEnabled) {\n cueUtilities('rebind', cy, api);\n options.cueEnabled = true;\n }\n };\n\n api.getParent = function (nodeId) {\n if (cy.getElementById(nodeId)[0] === undefined) {\n var parentData = getScratch(cy, 'parentData');\n return parentData[nodeId];\n }\n else {\n return cy.getElementById(nodeId).parent();\n }\n };\n\n api.collapseEdges = function (edges, opts) {\n var result = { edges: cy.collection(), oldEdges: cy.collection() };\n if (edges.length < 2) return result;\n if (!isOnly1Pair(edges)) return result;\n var options = getScratch(cy, 'options');\n var tempOptions = extendOptions(options, opts);\n return expandCollapseUtilities.collapseGivenEdges(edges, tempOptions);\n };\n\n api.expandEdges = function (edges) {\n var result = { edges: cy.collection(), oldEdges: cy.collection() }\n if (edges === undefined) return result;\n\n //if(typeof edges[Symbol.iterator] === 'function'){//collection of edges is passed\n edges.forEach(function (edge) {\n var operationResult = expandCollapseUtilities.expandEdge(edge);\n result.edges = result.edges.add(operationResult.edges);\n result.oldEdges = result.oldEdges.add(operationResult.oldEdges);\n\n });\n /* }else{//one edge passed\n var operationResult = expandCollapseUtilities.expandEdge(edges);\n result.edges = result.edges.add(operationResult.edges);\n result.oldEdges = result.oldEdges.add(operationResult.oldEdges);\n \n } */\n return result;\n };\n\n api.collapseEdgesBetweenNodes = function (nodes, opts) {\n var options = getScratch(cy, 'options');\n var tempOptions = extendOptions(options, opts);\n function pairwise(list) {\n var pairs = [];\n list\n .slice(0, list.length - 1)\n .forEach(function (first, n) {\n var tail = list.slice(n + 1, list.length);\n tail.forEach(function (item) {\n pairs.push([first, item])\n });\n })\n return pairs;\n }\n var nodesPairs = pairwise(nodes);\n // for self-loops\n nodesPairs.push(...nodes.map(x => [x, x]));\n var result = { edges: cy.collection(), oldEdges: cy.collection() };\n nodesPairs.forEach(function (nodePair) {\n const id1 = nodePair[1].id();\n var edges = nodePair[0].connectedEdges('[source = \"' + id1 + '\"],[target = \"' + id1 + '\"]');\n // edges for self-loops\n if (nodePair[0].id() === id1) {\n edges = nodePair[0].connectedEdges('[source = \"' + id1 + '\"][target = \"' + id1 + '\"]');\n }\n if (edges.length >= 2) {\n var operationResult = expandCollapseUtilities.collapseGivenEdges(edges, tempOptions)\n result.oldEdges = result.oldEdges.add(operationResult.oldEdges);\n result.edges = result.edges.add(operationResult.edges);\n }\n\n }.bind(this));\n\n return result;\n\n };\n\n api.expandEdgesBetweenNodes = function (nodes) {\n var edgesToExpand = cy.collection();\n function pairwise(list) {\n var pairs = [];\n list\n .slice(0, list.length - 1)\n .forEach(function (first, n) {\n var tail = list.slice(n + 1, list.length);\n tail.forEach(function (item) {\n pairs.push([first, item])\n });\n })\n return pairs;\n }\n var nodesPairs = pairwise(nodes);\n // for self-loops\n nodesPairs.push(...nodes.map(x => [x, x]));\n nodesPairs.forEach(function (nodePair) {\n const id1 = nodePair[1].id();\n var edges = nodePair[0].connectedEdges('.cy-expand-collapse-collapsed-edge[source = \"' + id1 + '\"],[target = \"' + id1 + '\"]');\n // edges for self-loops\n if (nodePair[0].id() === id1) {\n edges = nodePair[0].connectedEdges('[source = \"' + id1 + '\"][target = \"' + id1 + '\"]');\n }\n edgesToExpand = edgesToExpand.union(edges);\n }.bind(this));\n return this.expandEdges(edgesToExpand);\n };\n\n api.collapseAllEdges = function (opts) {\n return this.collapseEdgesBetweenNodes(cy.edges().connectedNodes(), opts);\n };\n\n api.expandAllEdges = function () {\n var edges = cy.edges(\".cy-expand-collapse-collapsed-edge\");\n var result = { edges: cy.collection(), oldEdges: cy.collection() };\n var operationResult = this.expandEdges(edges);\n result.oldEdges = result.oldEdges.add(operationResult.oldEdges);\n result.edges = result.edges.add(operationResult.edges);\n return result;\n };\n\n api.loadJson = function (jsonStr) {\n saveLoadUtils.loadJson(jsonStr);\n };\n\n api.saveJson = function (elems, filename) {\n saveLoadUtils.saveJson(elems, filename);\n };\n\n return api; // Return the API instance\n }\n\n // Get the whole scratchpad reserved for this extension (on an element or core) or get a single property of it\n function getScratch(cyOrEle, name) {\n if (cyOrEle.scratch('_cyExpandCollapse') === undefined) {\n cyOrEle.scratch('_cyExpandCollapse', {});\n }\n\n var scratch = cyOrEle.scratch('_cyExpandCollapse');\n var retVal = (name === undefined) ? scratch : scratch[name];\n return retVal;\n }\n\n // Set a single property on scratchpad of an element or the core\n function setScratch(cyOrEle, name, val) {\n getScratch(cyOrEle)[name] = val;\n }\n\n // register the extension cy.expandCollapse()\n cytoscape(\"core\", \"expandCollapse\", function (opts) {\n var cy = this;\n\n var options = getScratch(cy, 'options') || {\n layoutBy: null, // for rearrange after expand/collapse. It's just layout options or whole layout function. Choose your side!\n fisheye: true, // whether to perform fisheye view after expand/collapse you can specify a function too\n animate: true, // whether to animate on drawing changes you can specify a function too\n animationDuration: 1000, // when animate is true, the duration in milliseconds of the animation\n ready: function () { }, // callback when expand/collapse initialized\n undoable: true, // and if undoRedoExtension exists,\n\n cueEnabled: true, // Whether cues are enabled\n expandCollapseCuePosition: 'top-left', // default cue position is top left you can specify a function per node too\n expandCollapseCueSize: 12, // size of expand-collapse cue\n expandCollapseCueLineSize: 8, // size of lines used for drawing plus-minus icons\n expandCueImage: undefined, // image of expand icon if undefined draw regular expand cue\n collapseCueImage: undefined, // image of collapse icon if undefined draw regular collapse cue\n expandCollapseCueSensitivity: 1, // sensitivity of expand-collapse cues\n\n edgeTypeInfo: \"edgeType\", //the name of the field that has the edge type, retrieved from edge.data(), can be a function\n groupEdgesOfSameTypeOnCollapse: false,\n allowNestedEdgeCollapse: true,\n zIndex: 999 // z-index value of the canvas in which cue ımages are drawn\n };\n\n // If opts is not 'get' that is it is a real options object then initilize the extension\n if (opts !== 'get') {\n options = extendOptions(options, opts);\n\n var expandCollapseUtilities = require('./expandCollapseUtilities')(cy);\n var api = createExtensionAPI(cy, expandCollapseUtilities); // creates and returns the API instance for the extension\n saveLoadUtils = require(\"./saveLoadUtilities\")(cy, api);\n setScratch(cy, 'api', api);\n\n undoRedoUtilities(cy, api);\n\n cueUtilities(options, cy, api);\n\n // if the cue is not enabled unbind cue events\n if (!options.cueEnabled) {\n cueUtilities('unbind', cy, api);\n }\n\n if (options.ready) {\n options.ready();\n }\n\n setScratch(cy, 'options', options);\n\n var parentData = {};\n setScratch(cy, 'parentData', parentData);\n }\n\n return getScratch(cy, 'api'); // Expose the API to the users\n });\n };\n\n if (typeof module !== 'undefined' && module.exports) { // expose as a commonjs module\n module.exports = register;\n }\n\n if (typeof define !== 'undefined' && define.amd) { // expose as an amd/requirejs module\n define('cytoscape-expand-collapse', function () {\n return register;\n });\n }\n\n if (typeof cytoscape !== 'undefined') { // expose to global cytoscape (i.e. window.cytoscape)\n register(cytoscape);\n }\n\n})();\n","function saveLoadUtilities(cy, api) {\n /** converts array of JSON to a cytoscape.js collection (bottom-up recursive)\n * keeps information about parents, all nodes added to cytoscape, and nodes to be collapsed\n * @param {} jsonArr an array of objects (a JSON array)\n * @param {} allNodes a cytoscape.js collection\n * @param {} nodes2collapse a cytoscape.js collection\n * @param {} node2parent a JS object (simply key-value pairs)\n */\n function json2cyCollection(jsonArr, allNodes, nodes2collapse, node2parent) {\n // process edges last since they depend on nodes\n jsonArr.sort((a) => {\n if (a.group === 'edges') {\n return 1;\n }\n return -1;\n });\n\n // add compound nodes first, then add other nodes then edges\n let coll = cy.collection();\n for (let i = 0; i < jsonArr.length; i++) {\n const json = jsonArr[i];\n const d = json.data;\n if (d.parent) {\n node2parent[d.id] = d.parent;\n }\n const pos = { x: json.position.x, y: json.position.y };\n const e = cy.add(json);\n if (e.isNode()) {\n allNodes.merge(e);\n }\n\n if (d.originalEnds) {\n // all nodes should be in the memory (in cy or not)\n let src = allNodes.$id(d.originalEnds.source.data.id);\n if (d.originalEnds.source.data.parent) {\n node2parent[d.originalEnds.source.data.id] = d.originalEnds.source.data.parent;\n }\n let tgt = allNodes.$id(d.originalEnds.target.data.id);\n if (d.originalEnds.target.data.parent) {\n node2parent[d.originalEnds.target.data.id] = d.originalEnds.target.data.parent;\n }\n e.data('originalEnds', { source: src, target: tgt });\n }\n if (d.collapsedChildren) {\n nodes2collapse.merge(e);\n json2cyCollection(d.collapsedChildren, allNodes, nodes2collapse, node2parent);\n clearCollapseMetaData(e);\n } else if (d.collapsedEdges) {\n e.data('collapsedEdges', json2cyCollection(d.collapsedEdges, allNodes, nodes2collapse, node2parent));\n // delete collapsed edges from cy\n cy.remove(e.data('collapsedEdges'));\n }\n e.position(pos); // adding new elements to a compound might change its position\n coll.merge(e);\n }\n return coll;\n }\n\n /** clears all the data related to collapsed node\n * @param {} e a cytoscape element\n */\n function clearCollapseMetaData(e) {\n e.data('collapsedChildren', null);\n e.removeClass('cy-expand-collapse-collapsed-node');\n e.data('position-before-collapse', null);\n e.data('size-before-collapse', null);\n e.data('expandcollapseRenderedStartX', null);\n e.data('expandcollapseRenderedStartY', null);\n e.data('expandcollapseRenderedCueSize', null);\n }\n\n /** converts cytoscape collection to JSON array.(bottom-up recursive)\n * @param {} elems\n */\n function cyCollection2Json(elems) {\n let r = [];\n for (let i = 0; i < elems.length; i++) {\n const elem = elems[i];\n let jsonObj = null;\n if (!elem.collapsedChildren && !elem.collapsedEdges) {\n jsonObj = elem.cy.json();\n }\n else if (elem.collapsedChildren) {\n elem.collapsedChildren = cyCollection2Json(halfDeepCopyCollection(elem.collapsedChildren));\n jsonObj = elem.cy.json();\n jsonObj.data.collapsedChildren = elem.collapsedChildren;\n } else if (elem.collapsedEdges) {\n elem.collapsedEdges = cyCollection2Json(halfDeepCopyCollection(elem.collapsedEdges));\n jsonObj = elem.cy.json();\n jsonObj.data.collapsedEdges = elem.collapsedEdges;\n }\n if (elem.originalEnds) {\n const src = elem.originalEnds.source.json();\n const tgt = elem.originalEnds.target.json();\n if (src.data.collapsedChildren) {\n src.data.collapsedChildren = cyCollection2Json(halfDeepCopyCollection(src.data.collapsedChildren));\n }\n if (tgt.data.collapsedChildren) {\n tgt.data.collapsedChildren = cyCollection2Json(halfDeepCopyCollection(tgt.data.collapsedChildren));\n }\n jsonObj.data.originalEnds = { source: src, target: tgt };\n }\n r.push(jsonObj);\n }\n return r;\n }\n\n /** returns { cy: any, collapsedEdges: any, collapsedChildren: any, originalEnds: any }[]\n * from cytoscape collection\n * @param {} col\n */\n function halfDeepCopyCollection(col) {\n let arr = [];\n for (let i = 0; i < col.length; i++) {\n arr.push({ cy: col[i], collapsedEdges: col[i].data('collapsedEdges'), collapsedChildren: col[i].data('collapsedChildren'), originalEnds: col[i].data('originalEnds') });\n }\n return arr;\n }\n\n /** saves the string as a file.\n * @param {} str string\n * @param {} fileName string\n */\n function str2file(str, fileName) {\n const blob = new Blob([str], { type: 'text/plain' });\n const anchor = document.createElement('a');\n\n anchor.download = fileName;\n anchor.href = (window.URL).createObjectURL(blob);\n anchor.dataset.downloadurl =\n ['text/plain', anchor.download, anchor.href].join(':');\n anchor.click();\n }\n\n function overrideJson2Elem(elem, json) {\n const collapsedChildren = elem.data('collapsedChildren');\n const collapsedEdges = elem.data('collapsedEdges');\n const originalEnds = elem.data('originalEnds');\n elem.json(json);\n if (collapsedChildren) {\n elem.data('collapsedChildren', collapsedChildren);\n }\n if (collapsedEdges) {\n elem.data('collapsedEdges', collapsedEdges);\n }\n if (originalEnds) {\n elem.data('originalEnds', originalEnds);\n }\n }\n\n return {\n\n /** Load elements from JSON formatted string representation.\n * For collapsed compounds, first add all collapsed nodes as normal nodes then collapse them. Then reposition them.\n * For collapsed edges, first add all of the edges then remove collapsed edges from cytoscape.\n * For original ends, restore their reference to cytoscape elements\n * @param {} txt string\n */\n loadJson: function (txt) {\n const fileJSON = JSON.parse(txt);\n // original endpoints won't exist in cy. So keep a reference.\n const nodePositions = {};\n const allNodes = cy.collection(); // some elements are stored in cy, some are deleted \n const nodes2collapse = cy.collection(); // some are deleted \n const node2parent = {};\n for (const n of fileJSON.nodes) {\n nodePositions[n.data.id] = { x: n.position.x, y: n.position.y };\n if (n.data.parent) {\n node2parent[n.data.id] = n.data.parent;\n }\n const node = cy.add(n);\n allNodes.merge(node);\n if (node.data('collapsedChildren')) {\n json2cyCollection(node.data('collapsedChildren'), allNodes, nodes2collapse, node2parent);\n nodes2collapse.merge(node);\n clearCollapseMetaData(node);\n }\n }\n for (const e of fileJSON.edges) {\n const edge = cy.add(e);\n if (edge.data('collapsedEdges')) {\n edge.data('collapsedEdges', json2cyCollection(e.data.collapsedEdges, allNodes, nodes2collapse, node2parent));\n cy.remove(edge.data('collapsedEdges')); // delete collapsed edges from cy\n }\n if (edge.data('originalEnds')) {\n const srcId = e.data.originalEnds.source.data.id;\n const tgtId = e.data.originalEnds.target.data.id;\n e.data.originalEnds = { source: allNodes.filter('#' + srcId), target: allNodes.filter('#' + tgtId) };\n }\n }\n // set parents\n for (let node in node2parent) {\n const elem = allNodes.$id(node);\n if (elem.length === 1) {\n elem.move({ parent: node2parent[node] });\n }\n }\n // collapse the collapsed nodes\n api.collapse(nodes2collapse, { layoutBy: null, fisheye: false, animate: false });\n\n // positions might be changed in collapse extension\n for (const n of fileJSON.nodes) {\n const node = cy.$id(n.data.id)\n if (node.isChildless()) {\n cy.$id(n.data.id).position(nodePositions[n.data.id]);\n }\n }\n cy.fit();\n },\n\n\n /** saves cytoscape elements (collection) as JSON\n * calls elements' json method (https://js.cytoscape.org/#ele.json) when we keep a cytoscape element in the data. \n * @param {} elems cytoscape collection\n * @param {} filename string\n */\n saveJson: function (elems, filename) {\n if (!elems) {\n elems = cy.$();\n }\n const nodes = halfDeepCopyCollection(elems.nodes());\n const edges = halfDeepCopyCollection(elems.edges());\n if (edges.length + nodes.length < 1) {\n return;\n }\n\n // according to cytoscape.js format\n const o = { nodes: [], edges: [] };\n for (const e of edges) {\n if (e.collapsedEdges) {\n e.collapsedEdges = cyCollection2Json(halfDeepCopyCollection(e.collapsedEdges));\n }\n if (e.originalEnds) {\n const src = e.originalEnds.source.json();\n const tgt = e.originalEnds.target.json();\n if (src.data.collapsedChildren) {\n // e.originalEnds.source.data.collapsedChildren will be changed\n src.data.collapsedChildren = cyCollection2Json(halfDeepCopyCollection(src.data.collapsedChildren));\n }\n if (tgt.data.collapsedChildren) {\n tgt.data.collapsedChildren = cyCollection2Json(halfDeepCopyCollection(tgt.data.collapsedChildren));\n }\n e.originalEnds = { source: src, target: tgt };\n }\n const jsonObj = e.cy.json();\n jsonObj.data.collapsedEdges = e.collapsedEdges;\n jsonObj.data.originalEnds = e.originalEnds;\n o.edges.push(jsonObj);\n }\n for (const n of nodes) {\n if (n.collapsedChildren) {\n n.collapsedChildren = cyCollection2Json(halfDeepCopyCollection(n.collapsedChildren));\n }\n const jsonObj = n.cy.json();\n jsonObj.data.collapsedChildren = n.collapsedChildren;\n o.nodes.push(jsonObj);\n }\n\n if (!filename) {\n filename = 'expand-collapse-output.json';\n }\n str2file(JSON.stringify(o), filename);\n }\n };\n}\n\nmodule.exports = saveLoadUtilities;\n","module.exports = function (cy, api) {\n if (cy.undoRedo == null)\n return;\n\n var ur = cy.undoRedo({}, true);\n\n function getEles(_eles) {\n return (typeof _eles === \"string\") ? cy.$(_eles) : _eles;\n }\n\n function getNodePositions() {\n var positions = {};\n var nodes = cy.nodes();\n\n for (var i = 0; i < nodes.length; i++) {\n var ele = nodes[i];\n positions[ele.id()] = {\n x: ele.position(\"x\"),\n y: ele.position(\"y\")\n };\n }\n\n return positions;\n }\n\n function returnToPositions(positions) {\n var currentPositions = {};\n cy.nodes().not(\":parent\").positions(function (ele, i) {\n if(typeof ele === \"number\") {\n ele = i;\n }\n currentPositions[ele.id()] = {\n x: ele.position(\"x\"),\n y: ele.position(\"y\")\n };\n var pos = positions[ele.id()];\n return {\n x: pos.x,\n y: pos.y\n };\n });\n\n return currentPositions;\n }\n\n var secondTimeOpts = {\n layoutBy: null,\n animate: false,\n fisheye: false\n };\n\n function doIt(func) {\n return function (args) {\n var result = {};\n var nodes = getEles(args.nodes);\n if (args.firstTime) {\n result.oldData = getNodePositions();\n result.nodes = func.indexOf(\"All\") > 0 ? api[func](args.options) : api[func](nodes, args.options);\n } else {\n result.oldData = getNodePositions();\n result.nodes = func.indexOf(\"All\") > 0 ? api[func](secondTimeOpts) : api[func](cy.collection(nodes), secondTimeOpts);\n returnToPositions(args.oldData);\n }\n\n return result;\n };\n }\n\n var actions = [\"collapse\", \"collapseRecursively\", \"collapseAll\", \"expand\", \"expandRecursively\", \"expandAll\"];\n\n for (var i = 0; i < actions.length; i++) {\n if(i == 2)\n ur.action(\"collapseAll\", doIt(\"collapseAll\"), doIt(\"expandRecursively\"));\n else if(i == 5)\n ur.action(\"expandAll\", doIt(\"expandAll\"), doIt(\"collapseRecursively\"));\n else\n ur.action(actions[i], doIt(actions[i]), doIt(actions[(i + 3) % 6]));\n }\n\n function collapseEdges(args){ \n var options = args.options;\n var edges = args.edges;\n var result = {};\n \n result.options = options;\n if(args.firstTime){\n var collapseResult = api.collapseEdges(edges,options); \n result.edges = collapseResult.edges;\n result.oldEdges = collapseResult.oldEdges; \n result.firstTime = false;\n }else{\n result.oldEdges = edges;\n result.edges = args.oldEdges;\n if(args.edges.length > 0 && args.oldEdges.length > 0){\n cy.remove(args.edges);\n cy.add(args.oldEdges);\n }\n \n \n }\n\n return result;\n }\n function collapseEdgesBetweenNodes(args){\n var options = args.options;\n var result = {};\n result.options = options;\n if(args.firstTime){\n var collapseAllResult = api.collapseEdgesBetweenNodes(args.nodes, options);\n result.edges = collapseAllResult.edges;\n result.oldEdges = collapseAllResult.oldEdges;\n result.firstTime = false;\n }else{\n result.edges = args.oldEdges;\n result.oldEdges = args.edges;\n if(args.edges.length > 0 && args.oldEdges.length > 0){\n cy.remove(args.edges);\n cy.add(args.oldEdges);\n }\n \n }\n \n return result;\n\n }\n function collapseAllEdges(args){\n var options = args.options;\n var result = {};\n result.options = options;\n if(args.firstTime){\n var collapseAllResult = api.collapseAllEdges(options);\n result.edges = collapseAllResult.edges;\n result.oldEdges = collapseAllResult.oldEdges;\n result.firstTime = false;\n }else{\n result.edges = args.oldEdges;\n result.oldEdges = args.edges;\n if(args.edges.length > 0 && args.oldEdges.length > 0){\n cy.remove(args.edges);\n cy.add(args.oldEdges);\n }\n \n }\n\n return result;\n }\n function expandEdges(args){ \n var options = args.options;\n var result ={};\n \n result.options = options;\n if(args.firstTime){\n var expandResult = api.expandEdges(args.edges);\n result.edges = expandResult.edges;\n result.oldEdges = expandResult.oldEdges;\n result.firstTime = false;\n \n }else{\n result.oldEdges = args.edges;\n result.edges = args.oldEdges;\n if(args.edges.length > 0 && args.oldEdges.length > 0){\n cy.remove(args.edges);\n cy.add(args.oldEdges);\n }\n \n }\n\n return result;\n }\n function expandEdgesBetweenNodes(args){\n var options = args.options;\n var result = {};\n result.options = options;\n if(args.firstTime){\n var collapseAllResult = api.expandEdgesBetweenNodes(args.nodes,options);\n result.edges = collapseAllResult.edges;\n result.oldEdges = collapseAllResult.oldEdges;\n result.firstTime = false;\n }else{\n result.edges = args.oldEdges;\n result.oldEdges = args.edges;\n if(args.edges.length > 0 && args.oldEdges.length > 0){\n cy.remove(args.edges);\n cy.add(args.oldEdges);\n }\n \n }\n\n return result;\n }\n function expandAllEdges(args){\n var options = args.options;\n var result = {};\n result.options = options;\n if(args.firstTime){\n var expandResult = api.expandAllEdges(options);\n result.edges = expandResult.edges;\n result.oldEdges = expandResult.oldEdges;\n result.firstTime = false;\n }else{\n result.edges = args.oldEdges;\n result.oldEdges = args.edges;\n if(args.edges.length > 0 && args.oldEdges.length > 0){\n cy.remove(args.edges);\n cy.add(args.oldEdges);\n }\n \n }\n\n return result;\n }\n \n \n ur.action(\"collapseEdges\", collapseEdges, expandEdges);\n ur.action(\"expandEdges\", expandEdges, collapseEdges);\n\n ur.action(\"collapseEdgesBetweenNodes\", collapseEdgesBetweenNodes, expandEdgesBetweenNodes);\n ur.action(\"expandEdgesBetweenNodes\", expandEdgesBetweenNodes, collapseEdgesBetweenNodes);\n\n ur.action(\"collapseAllEdges\", collapseAllEdges, expandAllEdges);\n ur.action(\"expandAllEdges\", expandAllEdges, collapseAllEdges);\n\n \n\n\n \n\n\n};\n","/**\n * Copyright (c) 2016-2023, The Cytoscape Consortium.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the “Software”), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n * of the Software, and to permit persons to whom the Software is furnished to do\n * so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n'use strict';\n\nvar debounce = require('lodash/debounce');\nvar Heap = require('heap');\nvar get = require('lodash/get');\nvar set = require('lodash/set');\nvar toPath = require('lodash/toPath');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);\nvar Heap__default = /*#__PURE__*/_interopDefaultLegacy(Heap);\nvar get__default = /*#__PURE__*/_interopDefaultLegacy(get);\nvar set__default = /*#__PURE__*/_interopDefaultLegacy(set);\nvar toPath__default = /*#__PURE__*/_interopDefaultLegacy(toPath);\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar _window = typeof window === 'undefined' ? null : window; // eslint-disable-line no-undef\n\nvar navigator = _window ? _window.navigator : null;\n_window ? _window.document : null;\nvar typeofstr = _typeof('');\nvar typeofobj = _typeof({});\nvar typeoffn = _typeof(function () {});\nvar typeofhtmlele = typeof HTMLElement === \"undefined\" ? \"undefined\" : _typeof(HTMLElement);\nvar instanceStr = function instanceStr(obj) {\n return obj && obj.instanceString && fn$6(obj.instanceString) ? obj.instanceString() : null;\n};\n\nvar string = function string(obj) {\n return obj != null && _typeof(obj) == typeofstr;\n};\nvar fn$6 = function fn(obj) {\n return obj != null && _typeof(obj) === typeoffn;\n};\nvar array = function array(obj) {\n return !elementOrCollection(obj) && (Array.isArray ? Array.isArray(obj) : obj != null && obj instanceof Array);\n};\nvar plainObject = function plainObject(obj) {\n return obj != null && _typeof(obj) === typeofobj && !array(obj) && obj.constructor === Object;\n};\nvar object = function object(obj) {\n return obj != null && _typeof(obj) === typeofobj;\n};\nvar number$1 = function number(obj) {\n return obj != null && _typeof(obj) === _typeof(1) && !isNaN(obj);\n};\nvar integer = function integer(obj) {\n return number$1(obj) && Math.floor(obj) === obj;\n};\nvar htmlElement = function htmlElement(obj) {\n if ('undefined' === typeofhtmlele) {\n return undefined;\n } else {\n return null != obj && obj instanceof HTMLElement;\n }\n};\nvar elementOrCollection = function elementOrCollection(obj) {\n return element(obj) || collection(obj);\n};\nvar element = function element(obj) {\n return instanceStr(obj) === 'collection' && obj._private.single;\n};\nvar collection = function collection(obj) {\n return instanceStr(obj) === 'collection' && !obj._private.single;\n};\nvar core = function core(obj) {\n return instanceStr(obj) === 'core';\n};\nvar stylesheet = function stylesheet(obj) {\n return instanceStr(obj) === 'stylesheet';\n};\nvar event = function event(obj) {\n return instanceStr(obj) === 'event';\n};\nvar emptyString = function emptyString(obj) {\n if (obj === undefined || obj === null) {\n // null is empty\n return true;\n } else if (obj === '' || obj.match(/^\\s+$/)) {\n return true; // empty string is empty\n }\n\n return false; // otherwise, we don't know what we've got\n};\nvar domElement = function domElement(obj) {\n if (typeof HTMLElement === 'undefined') {\n return false; // we're not in a browser so it doesn't matter\n } else {\n return obj instanceof HTMLElement;\n }\n};\nvar boundingBox = function boundingBox(obj) {\n return plainObject(obj) && number$1(obj.x1) && number$1(obj.x2) && number$1(obj.y1) && number$1(obj.y2);\n};\nvar promise = function promise(obj) {\n return object(obj) && fn$6(obj.then);\n};\nvar ms = function ms() {\n return navigator && navigator.userAgent.match(/msie|trident|edge/i);\n}; // probably a better way to detect this...\n\nvar memoize = function memoize(fn, keyFn) {\n if (!keyFn) {\n keyFn = function keyFn() {\n if (arguments.length === 1) {\n return arguments[0];\n } else if (arguments.length === 0) {\n return 'undefined';\n }\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n return args.join('$');\n };\n }\n var memoizedFn = function memoizedFn() {\n var self = this;\n var args = arguments;\n var ret;\n var k = keyFn.apply(self, args);\n var cache = memoizedFn.cache;\n if (!(ret = cache[k])) {\n ret = cache[k] = fn.apply(self, args);\n }\n return ret;\n };\n memoizedFn.cache = {};\n return memoizedFn;\n};\n\nvar camel2dash = memoize(function (str) {\n return str.replace(/([A-Z])/g, function (v) {\n return '-' + v.toLowerCase();\n });\n});\nvar dash2camel = memoize(function (str) {\n return str.replace(/(-\\w)/g, function (v) {\n return v[1].toUpperCase();\n });\n});\nvar prependCamel = memoize(function (prefix, str) {\n return prefix + str[0].toUpperCase() + str.substring(1);\n}, function (prefix, str) {\n return prefix + '$' + str;\n});\nvar capitalize = function capitalize(str) {\n if (emptyString(str)) {\n return str;\n }\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\n\nvar number = '(?:[-+]?(?:(?:\\\\d+|\\\\d*\\\\.\\\\d+)(?:[Ee][+-]?\\\\d+)?))';\nvar rgba = 'rgb[a]?\\\\((' + number + '[%]?)\\\\s*,\\\\s*(' + number + '[%]?)\\\\s*,\\\\s*(' + number + '[%]?)(?:\\\\s*,\\\\s*(' + number + '))?\\\\)';\nvar rgbaNoBackRefs = 'rgb[a]?\\\\((?:' + number + '[%]?)\\\\s*,\\\\s*(?:' + number + '[%]?)\\\\s*,\\\\s*(?:' + number + '[%]?)(?:\\\\s*,\\\\s*(?:' + number + '))?\\\\)';\nvar hsla = 'hsl[a]?\\\\((' + number + ')\\\\s*,\\\\s*(' + number + '[%])\\\\s*,\\\\s*(' + number + '[%])(?:\\\\s*,\\\\s*(' + number + '))?\\\\)';\nvar hslaNoBackRefs = 'hsl[a]?\\\\((?:' + number + ')\\\\s*,\\\\s*(?:' + number + '[%])\\\\s*,\\\\s*(?:' + number + '[%])(?:\\\\s*,\\\\s*(?:' + number + '))?\\\\)';\nvar hex3 = '\\\\#[0-9a-fA-F]{3}';\nvar hex6 = '\\\\#[0-9a-fA-F]{6}';\n\nvar ascending = function ascending(a, b) {\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n } else {\n return 0;\n }\n};\nvar descending = function descending(a, b) {\n return -1 * ascending(a, b);\n};\n\nvar extend = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {\n var args = arguments;\n for (var i = 1; i < args.length; i++) {\n var obj = args[i];\n if (obj == null) {\n continue;\n }\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; j++) {\n var k = keys[j];\n tgt[k] = obj[k];\n }\n }\n return tgt;\n};\n\n// get [r, g, b] from #abc or #aabbcc\nvar hex2tuple = function hex2tuple(hex) {\n if (!(hex.length === 4 || hex.length === 7) || hex[0] !== '#') {\n return;\n }\n var shortHex = hex.length === 4;\n var r, g, b;\n var base = 16;\n if (shortHex) {\n r = parseInt(hex[1] + hex[1], base);\n g = parseInt(hex[2] + hex[2], base);\n b = parseInt(hex[3] + hex[3], base);\n } else {\n r = parseInt(hex[1] + hex[2], base);\n g = parseInt(hex[3] + hex[4], base);\n b = parseInt(hex[5] + hex[6], base);\n }\n return [r, g, b];\n};\n\n// get [r, g, b, a] from hsl(0, 0, 0) or hsla(0, 0, 0, 0)\nvar hsl2tuple = function hsl2tuple(hsl) {\n var ret;\n var h, s, l, a, r, g, b;\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n var m = new RegExp('^' + hsla + '$').exec(hsl);\n if (m) {\n // get hue\n h = parseInt(m[1]);\n if (h < 0) {\n h = (360 - -1 * h % 360) % 360;\n } else if (h > 360) {\n h = h % 360;\n }\n h /= 360; // normalise on [0, 1]\n\n s = parseFloat(m[2]);\n if (s < 0 || s > 100) {\n return;\n } // saturation is [0, 100]\n s = s / 100; // normalise on [0, 1]\n\n l = parseFloat(m[3]);\n if (l < 0 || l > 100) {\n return;\n } // lightness is [0, 100]\n l = l / 100; // normalise on [0, 1]\n\n a = m[4];\n if (a !== undefined) {\n a = parseFloat(a);\n if (a < 0 || a > 1) {\n return;\n } // alpha is [0, 1]\n }\n\n // now, convert to rgb\n // code from http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript\n if (s === 0) {\n r = g = b = Math.round(l * 255); // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = Math.round(255 * hue2rgb(p, q, h + 1 / 3));\n g = Math.round(255 * hue2rgb(p, q, h));\n b = Math.round(255 * hue2rgb(p, q, h - 1 / 3));\n }\n ret = [r, g, b, a];\n }\n return ret;\n};\n\n// get [r, g, b, a] from rgb(0, 0, 0) or rgba(0, 0, 0, 0)\nvar rgb2tuple = function rgb2tuple(rgb) {\n var ret;\n var m = new RegExp('^' + rgba + '$').exec(rgb);\n if (m) {\n ret = [];\n var isPct = [];\n for (var i = 1; i <= 3; i++) {\n var channel = m[i];\n if (channel[channel.length - 1] === '%') {\n isPct[i] = true;\n }\n channel = parseFloat(channel);\n if (isPct[i]) {\n channel = channel / 100 * 255; // normalise to [0, 255]\n }\n\n if (channel < 0 || channel > 255) {\n return;\n } // invalid channel value\n\n ret.push(Math.floor(channel));\n }\n var atLeastOneIsPct = isPct[1] || isPct[2] || isPct[3];\n var allArePct = isPct[1] && isPct[2] && isPct[3];\n if (atLeastOneIsPct && !allArePct) {\n return;\n } // must all be percent values if one is\n\n var alpha = m[4];\n if (alpha !== undefined) {\n alpha = parseFloat(alpha);\n if (alpha < 0 || alpha > 1) {\n return;\n } // invalid alpha value\n\n ret.push(alpha);\n }\n }\n return ret;\n};\nvar colorname2tuple = function colorname2tuple(color) {\n return colors[color.toLowerCase()];\n};\nvar color2tuple = function color2tuple(color) {\n return (array(color) ? color : null) || colorname2tuple(color) || hex2tuple(color) || rgb2tuple(color) || hsl2tuple(color);\n};\nvar colors = {\n // special colour names\n transparent: [0, 0, 0, 0],\n // NB alpha === 0\n\n // regular colours\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 134, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 250, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n grey: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 221],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [112, 128, 144],\n slategrey: [112, 128, 144],\n snow: [255, 250, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 50]\n};\n\n// sets the value in a map (map may not be built)\nvar setMap = function setMap(options) {\n var obj = options.map;\n var keys = options.keys;\n var l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (plainObject(key)) {\n throw Error('Tried to set map with object key');\n }\n if (i < keys.length - 1) {\n // extend the map if necessary\n if (obj[key] == null) {\n obj[key] = {};\n }\n obj = obj[key];\n } else {\n // set the value\n obj[key] = options.value;\n }\n }\n};\n\n// gets the value in a map even if it's not built in places\nvar getMap = function getMap(options) {\n var obj = options.map;\n var keys = options.keys;\n var l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (plainObject(key)) {\n throw Error('Tried to get map with object key');\n }\n obj = obj[key];\n if (obj == null) {\n return obj;\n }\n }\n return obj;\n};\n\nvar performance = _window ? _window.performance : null;\nvar pnow = performance && performance.now ? function () {\n return performance.now();\n} : function () {\n return Date.now();\n};\nvar raf = function () {\n if (_window) {\n if (_window.requestAnimationFrame) {\n return function (fn) {\n _window.requestAnimationFrame(fn);\n };\n } else if (_window.mozRequestAnimationFrame) {\n return function (fn) {\n _window.mozRequestAnimationFrame(fn);\n };\n } else if (_window.webkitRequestAnimationFrame) {\n return function (fn) {\n _window.webkitRequestAnimationFrame(fn);\n };\n } else if (_window.msRequestAnimationFrame) {\n return function (fn) {\n _window.msRequestAnimationFrame(fn);\n };\n }\n }\n return function (fn) {\n if (fn) {\n setTimeout(function () {\n fn(pnow());\n }, 1000 / 60);\n }\n };\n}();\nvar requestAnimationFrame = function requestAnimationFrame(fn) {\n return raf(fn);\n};\nvar performanceNow = pnow;\n\nvar DEFAULT_HASH_SEED = 9261;\nvar K = 65599; // 37 also works pretty well\nvar DEFAULT_HASH_SEED_ALT = 5381;\nvar hashIterableInts = function hashIterableInts(iterator) {\n var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED;\n // sdbm/string-hash\n var hash = seed;\n var entry;\n for (;;) {\n entry = iterator.next();\n if (entry.done) {\n break;\n }\n hash = hash * K + entry.value | 0;\n }\n return hash;\n};\nvar hashInt = function hashInt(num) {\n var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED;\n // sdbm/string-hash\n return seed * K + num | 0;\n};\nvar hashIntAlt = function hashIntAlt(num) {\n var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED_ALT;\n // djb2/string-hash\n return (seed << 5) + seed + num | 0;\n};\nvar combineHashes = function combineHashes(hash1, hash2) {\n return hash1 * 0x200000 + hash2;\n};\nvar combineHashesArray = function combineHashesArray(hashes) {\n return hashes[0] * 0x200000 + hashes[1];\n};\nvar hashArrays = function hashArrays(hashes1, hashes2) {\n return [hashInt(hashes1[0], hashes2[0]), hashIntAlt(hashes1[1], hashes2[1])];\n};\nvar hashIntsArray = function hashIntsArray(ints, seed) {\n var entry = {\n value: 0,\n done: false\n };\n var i = 0;\n var length = ints.length;\n var iterator = {\n next: function next() {\n if (i < length) {\n entry.value = ints[i++];\n } else {\n entry.done = true;\n }\n return entry;\n }\n };\n return hashIterableInts(iterator, seed);\n};\nvar hashString = function hashString(str, seed) {\n var entry = {\n value: 0,\n done: false\n };\n var i = 0;\n var length = str.length;\n var iterator = {\n next: function next() {\n if (i < length) {\n entry.value = str.charCodeAt(i++);\n } else {\n entry.done = true;\n }\n return entry;\n }\n };\n return hashIterableInts(iterator, seed);\n};\nvar hashStrings = function hashStrings() {\n return hashStringsArray(arguments);\n};\nvar hashStringsArray = function hashStringsArray(strs) {\n var hash;\n for (var i = 0; i < strs.length; i++) {\n var str = strs[i];\n if (i === 0) {\n hash = hashString(str);\n } else {\n hash = hashString(str, hash);\n }\n }\n return hash;\n};\n\n/*global console */\nvar warningsEnabled = true;\nvar warnSupported = console.warn != null; // eslint-disable-line no-console\nvar traceSupported = console.trace != null; // eslint-disable-line no-console\n\nvar MAX_INT$1 = Number.MAX_SAFE_INTEGER || 9007199254740991;\nvar trueify = function trueify() {\n return true;\n};\nvar falsify = function falsify() {\n return false;\n};\nvar zeroify = function zeroify() {\n return 0;\n};\nvar noop$1 = function noop() {};\nvar error = function error(msg) {\n throw new Error(msg);\n};\nvar warnings = function warnings(enabled) {\n if (enabled !== undefined) {\n warningsEnabled = !!enabled;\n } else {\n return warningsEnabled;\n }\n};\nvar warn = function warn(msg) {\n /* eslint-disable no-console */\n if (!warnings()) {\n return;\n }\n if (warnSupported) {\n console.warn(msg);\n } else {\n console.log(msg);\n if (traceSupported) {\n console.trace();\n }\n }\n}; /* eslint-enable */\n\nvar clone = function clone(obj) {\n return extend({}, obj);\n};\n\n// gets a shallow copy of the argument\nvar copy = function copy(obj) {\n if (obj == null) {\n return obj;\n }\n if (array(obj)) {\n return obj.slice();\n } else if (plainObject(obj)) {\n return clone(obj);\n } else {\n return obj;\n }\n};\nvar copyArray = function copyArray(arr) {\n return arr.slice();\n};\nvar uuid = function uuid(a, b /* placeholders */) {\n for (\n // loop :)\n b = a = '';\n // b - result , a - numeric letiable\n a++ < 36;\n //\n b += a * 51 & 52 // if \"a\" is not 9 or 14 or 19 or 24\n ?\n // return a random number or 4\n (a ^ 15 // if \"a\" is not 15\n ?\n // generate a random number from 0 to 15\n 8 ^ Math.random() * (a ^ 20 ? 16 : 4) // unless \"a\" is 20, in which case a random number from 8 to 11\n : 4 // otherwise 4\n ).toString(16) : '-' // in other cases (if \"a\" is 9,14,19,24) insert \"-\"\n ) {\n }\n return b;\n};\nvar _staticEmptyObject = {};\nvar staticEmptyObject = function staticEmptyObject() {\n return _staticEmptyObject;\n};\nvar defaults$g = function defaults(_defaults) {\n var keys = Object.keys(_defaults);\n return function (opts) {\n var filledOpts = {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var optVal = opts == null ? undefined : opts[key];\n filledOpts[key] = optVal === undefined ? _defaults[key] : optVal;\n }\n return filledOpts;\n };\n};\nvar removeFromArray = function removeFromArray(arr, ele, oneCopy) {\n for (var i = arr.length - 1; i >= 0; i--) {\n if (arr[i] === ele) {\n arr.splice(i, 1);\n if (oneCopy) {\n break;\n }\n }\n }\n};\nvar clearArray = function clearArray(arr) {\n arr.splice(0, arr.length);\n};\nvar push = function push(arr, otherArr) {\n for (var i = 0; i < otherArr.length; i++) {\n var el = otherArr[i];\n arr.push(el);\n }\n};\nvar getPrefixedProperty = function getPrefixedProperty(obj, propName, prefix) {\n if (prefix) {\n propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth\n }\n\n return obj[propName];\n};\nvar setPrefixedProperty = function setPrefixedProperty(obj, propName, prefix, value) {\n if (prefix) {\n propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth\n }\n\n obj[propName] = value;\n};\n\n/* global Map */\nvar ObjectMap = /*#__PURE__*/function () {\n function ObjectMap() {\n _classCallCheck(this, ObjectMap);\n this._obj = {};\n }\n _createClass(ObjectMap, [{\n key: \"set\",\n value: function set(key, val) {\n this._obj[key] = val;\n return this;\n }\n }, {\n key: \"delete\",\n value: function _delete(key) {\n this._obj[key] = undefined;\n return this;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this._obj = {};\n }\n }, {\n key: \"has\",\n value: function has(key) {\n return this._obj[key] !== undefined;\n }\n }, {\n key: \"get\",\n value: function get(key) {\n return this._obj[key];\n }\n }]);\n return ObjectMap;\n}();\nvar Map$1 = typeof Map !== 'undefined' ? Map : ObjectMap;\n\n/* global Set */\n\nvar undef = \"undefined\" ;\nvar ObjectSet = /*#__PURE__*/function () {\n function ObjectSet(arrayOrObjectSet) {\n _classCallCheck(this, ObjectSet);\n this._obj = Object.create(null);\n this.size = 0;\n if (arrayOrObjectSet != null) {\n var arr;\n if (arrayOrObjectSet.instanceString != null && arrayOrObjectSet.instanceString() === this.instanceString()) {\n arr = arrayOrObjectSet.toArray();\n } else {\n arr = arrayOrObjectSet;\n }\n for (var i = 0; i < arr.length; i++) {\n this.add(arr[i]);\n }\n }\n }\n _createClass(ObjectSet, [{\n key: \"instanceString\",\n value: function instanceString() {\n return 'set';\n }\n }, {\n key: \"add\",\n value: function add(val) {\n var o = this._obj;\n if (o[val] !== 1) {\n o[val] = 1;\n this.size++;\n }\n }\n }, {\n key: \"delete\",\n value: function _delete(val) {\n var o = this._obj;\n if (o[val] === 1) {\n o[val] = 0;\n this.size--;\n }\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this._obj = Object.create(null);\n }\n }, {\n key: \"has\",\n value: function has(val) {\n return this._obj[val] === 1;\n }\n }, {\n key: \"toArray\",\n value: function toArray() {\n var _this = this;\n return Object.keys(this._obj).filter(function (key) {\n return _this.has(key);\n });\n }\n }, {\n key: \"forEach\",\n value: function forEach(callback, thisArg) {\n return this.toArray().forEach(callback, thisArg);\n }\n }]);\n return ObjectSet;\n}();\nvar Set$1 = (typeof Set === \"undefined\" ? \"undefined\" : _typeof(Set)) !== undef ? Set : ObjectSet;\n\n// represents a node or an edge\nvar Element = function Element(cy, params) {\n var restore = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (cy === undefined || params === undefined || !core(cy)) {\n error('An element must have a core reference and parameters set');\n return;\n }\n var group = params.group;\n\n // try to automatically infer the group if unspecified\n if (group == null) {\n if (params.data && params.data.source != null && params.data.target != null) {\n group = 'edges';\n } else {\n group = 'nodes';\n }\n }\n\n // validate group\n if (group !== 'nodes' && group !== 'edges') {\n error('An element must be of type `nodes` or `edges`; you specified `' + group + '`');\n return;\n }\n\n // make the element array-like, just like a collection\n this.length = 1;\n this[0] = this;\n\n // NOTE: when something is added here, add also to ele.json()\n var _p = this._private = {\n cy: cy,\n single: true,\n // indicates this is an element\n data: params.data || {},\n // data object\n position: params.position || {\n x: 0,\n y: 0\n },\n // (x, y) position pair\n autoWidth: undefined,\n // width and height of nodes calculated by the renderer when set to special 'auto' value\n autoHeight: undefined,\n autoPadding: undefined,\n compoundBoundsClean: false,\n // whether the compound dimensions need to be recalculated the next time dimensions are read\n listeners: [],\n // array of bound listeners\n group: group,\n // string; 'nodes' or 'edges'\n style: {},\n // properties as set by the style\n rstyle: {},\n // properties for style sent from the renderer to the core\n styleCxts: [],\n // applied style contexts from the styler\n styleKeys: {},\n // per-group keys of style property values\n removed: true,\n // whether it's inside the vis; true if removed (set true here since we call restore)\n selected: params.selected ? true : false,\n // whether it's selected\n selectable: params.selectable === undefined ? true : params.selectable ? true : false,\n // whether it's selectable\n locked: params.locked ? true : false,\n // whether the element is locked (cannot be moved)\n grabbed: false,\n // whether the element is grabbed by the mouse; renderer sets this privately\n grabbable: params.grabbable === undefined ? true : params.grabbable ? true : false,\n // whether the element can be grabbed\n pannable: params.pannable === undefined ? group === 'edges' ? true : false : params.pannable ? true : false,\n // whether the element has passthrough panning enabled\n active: false,\n // whether the element is active from user interaction\n classes: new Set$1(),\n // map ( className => true )\n animation: {\n // object for currently-running animations\n current: [],\n queue: []\n },\n rscratch: {},\n // object in which the renderer can store information\n scratch: params.scratch || {},\n // scratch objects\n edges: [],\n // array of connected edges\n children: [],\n // array of children\n parent: params.parent && params.parent.isNode() ? params.parent : null,\n // parent ref\n traversalCache: {},\n // cache of output of traversal functions\n backgrounding: false,\n // whether background images are loading\n bbCache: null,\n // cache of the current bounding box\n bbCacheShift: {\n x: 0,\n y: 0\n },\n // shift applied to cached bb to be applied on next get\n bodyBounds: null,\n // bounds cache of element body, w/o overlay\n overlayBounds: null,\n // bounds cache of element body, including overlay\n labelBounds: {\n // bounds cache of labels\n all: null,\n source: null,\n target: null,\n main: null\n },\n arrowBounds: {\n // bounds cache of edge arrows\n source: null,\n target: null,\n 'mid-source': null,\n 'mid-target': null\n }\n };\n if (_p.position.x == null) {\n _p.position.x = 0;\n }\n if (_p.position.y == null) {\n _p.position.y = 0;\n }\n\n // renderedPosition overrides if specified\n if (params.renderedPosition) {\n var rpos = params.renderedPosition;\n var pan = cy.pan();\n var zoom = cy.zoom();\n _p.position = {\n x: (rpos.x - pan.x) / zoom,\n y: (rpos.y - pan.y) / zoom\n };\n }\n var classes = [];\n if (array(params.classes)) {\n classes = params.classes;\n } else if (string(params.classes)) {\n classes = params.classes.split(/\\s+/);\n }\n for (var i = 0, l = classes.length; i < l; i++) {\n var cls = classes[i];\n if (!cls || cls === '') {\n continue;\n }\n _p.classes.add(cls);\n }\n this.createEmitter();\n var bypass = params.style || params.css;\n if (bypass) {\n warn('Setting a `style` bypass at element creation should be done only when absolutely necessary. Try to use the stylesheet instead.');\n this.style(bypass);\n }\n if (restore === undefined || restore) {\n this.restore();\n }\n};\n\nvar defineSearch = function defineSearch(params) {\n params = {\n bfs: params.bfs || !params.dfs,\n dfs: params.dfs || !params.bfs\n };\n\n // from pseudocode on wikipedia\n return function searchFn(roots, fn, directed) {\n var options;\n if (plainObject(roots) && !elementOrCollection(roots)) {\n options = roots;\n roots = options.roots || options.root;\n fn = options.visit;\n directed = options.directed;\n }\n directed = arguments.length === 2 && !fn$6(fn) ? fn : directed;\n fn = fn$6(fn) ? fn : function () {};\n var cy = this._private.cy;\n var v = roots = string(roots) ? this.filter(roots) : roots;\n var Q = [];\n var connectedNodes = [];\n var connectedBy = {};\n var id2depth = {};\n var V = {};\n var j = 0;\n var found;\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges;\n\n // enqueue v\n for (var i = 0; i < v.length; i++) {\n var vi = v[i];\n var viId = vi.id();\n if (vi.isNode()) {\n Q.unshift(vi);\n if (params.bfs) {\n V[viId] = true;\n connectedNodes.push(vi);\n }\n id2depth[viId] = 0;\n }\n }\n var _loop = function _loop() {\n var v = params.bfs ? Q.shift() : Q.pop();\n var vId = v.id();\n if (params.dfs) {\n if (V[vId]) {\n return \"continue\";\n }\n V[vId] = true;\n connectedNodes.push(v);\n }\n var depth = id2depth[vId];\n var prevEdge = connectedBy[vId];\n var src = prevEdge != null ? prevEdge.source() : null;\n var tgt = prevEdge != null ? prevEdge.target() : null;\n var prevNode = prevEdge == null ? undefined : v.same(src) ? tgt[0] : src[0];\n var ret = void 0;\n ret = fn(v, prevEdge, prevNode, j++, depth);\n if (ret === true) {\n found = v;\n return \"break\";\n }\n if (ret === false) {\n return \"break\";\n }\n var vwEdges = v.connectedEdges().filter(function (e) {\n return (!directed || e.source().same(v)) && edges.has(e);\n });\n for (var _i2 = 0; _i2 < vwEdges.length; _i2++) {\n var e = vwEdges[_i2];\n var w = e.connectedNodes().filter(function (n) {\n return !n.same(v) && nodes.has(n);\n });\n var wId = w.id();\n if (w.length !== 0 && !V[wId]) {\n w = w[0];\n Q.push(w);\n if (params.bfs) {\n V[wId] = true;\n connectedNodes.push(w);\n }\n connectedBy[wId] = e;\n id2depth[wId] = id2depth[vId] + 1;\n }\n }\n };\n while (Q.length !== 0) {\n var _ret = _loop();\n if (_ret === \"continue\") continue;\n if (_ret === \"break\") break;\n }\n var connectedEles = cy.collection();\n for (var _i = 0; _i < connectedNodes.length; _i++) {\n var node = connectedNodes[_i];\n var edge = connectedBy[node.id()];\n if (edge != null) {\n connectedEles.push(edge);\n }\n connectedEles.push(node);\n }\n return {\n path: cy.collection(connectedEles),\n found: cy.collection(found)\n };\n };\n};\n\n// search, spanning trees, etc\nvar elesfn$v = {\n breadthFirstSearch: defineSearch({\n bfs: true\n }),\n depthFirstSearch: defineSearch({\n dfs: true\n })\n};\n\n// nice, short mathematical alias\nelesfn$v.bfs = elesfn$v.breadthFirstSearch;\nelesfn$v.dfs = elesfn$v.depthFirstSearch;\n\nvar dijkstraDefaults = defaults$g({\n root: null,\n weight: function weight(edge) {\n return 1;\n },\n directed: false\n});\nvar elesfn$u = {\n dijkstra: function dijkstra(options) {\n if (!plainObject(options)) {\n var args = arguments;\n options = {\n root: args[0],\n weight: args[1],\n directed: args[2]\n };\n }\n var _dijkstraDefaults = dijkstraDefaults(options),\n root = _dijkstraDefaults.root,\n weight = _dijkstraDefaults.weight,\n directed = _dijkstraDefaults.directed;\n var eles = this;\n var weightFn = weight;\n var source = string(root) ? this.filter(root)[0] : root[0];\n var dist = {};\n var prev = {};\n var knownDist = {};\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges;\n edges.unmergeBy(function (ele) {\n return ele.isLoop();\n });\n var getDist = function getDist(node) {\n return dist[node.id()];\n };\n var setDist = function setDist(node, d) {\n dist[node.id()] = d;\n Q.updateItem(node);\n };\n var Q = new Heap__default[\"default\"](function (a, b) {\n return getDist(a) - getDist(b);\n });\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n dist[node.id()] = node.same(source) ? 0 : Infinity;\n Q.push(node);\n }\n var distBetween = function distBetween(u, v) {\n var uvs = (directed ? u.edgesTo(v) : u.edgesWith(v)).intersect(edges);\n var smallestDistance = Infinity;\n var smallestEdge;\n for (var _i = 0; _i < uvs.length; _i++) {\n var edge = uvs[_i];\n var _weight = weightFn(edge);\n if (_weight < smallestDistance || !smallestEdge) {\n smallestDistance = _weight;\n smallestEdge = edge;\n }\n }\n return {\n edge: smallestEdge,\n dist: smallestDistance\n };\n };\n while (Q.size() > 0) {\n var u = Q.pop();\n var smalletsDist = getDist(u);\n var uid = u.id();\n knownDist[uid] = smalletsDist;\n if (smalletsDist === Infinity) {\n continue;\n }\n var neighbors = u.neighborhood().intersect(nodes);\n for (var _i2 = 0; _i2 < neighbors.length; _i2++) {\n var v = neighbors[_i2];\n var vid = v.id();\n var vDist = distBetween(u, v);\n var alt = smalletsDist + vDist.dist;\n if (alt < getDist(v)) {\n setDist(v, alt);\n prev[vid] = {\n node: u,\n edge: vDist.edge\n };\n }\n } // for\n } // while\n\n return {\n distanceTo: function distanceTo(node) {\n var target = string(node) ? nodes.filter(node)[0] : node[0];\n return knownDist[target.id()];\n },\n pathTo: function pathTo(node) {\n var target = string(node) ? nodes.filter(node)[0] : node[0];\n var S = [];\n var u = target;\n var uid = u.id();\n if (target.length > 0) {\n S.unshift(target);\n while (prev[uid]) {\n var p = prev[uid];\n S.unshift(p.edge);\n S.unshift(p.node);\n u = p.node;\n uid = u.id();\n }\n }\n return eles.spawn(S);\n }\n };\n }\n};\n\nvar elesfn$t = {\n // kruskal's algorithm (finds min spanning tree, assuming undirected graph)\n // implemented from pseudocode from wikipedia\n kruskal: function kruskal(weightFn) {\n weightFn = weightFn || function (edge) {\n return 1;\n };\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges;\n var numNodes = nodes.length;\n var forest = new Array(numNodes);\n var A = nodes; // assumes byGroup() creates new collections that can be safely mutated\n\n var findSetIndex = function findSetIndex(ele) {\n for (var i = 0; i < forest.length; i++) {\n var eles = forest[i];\n if (eles.has(ele)) {\n return i;\n }\n }\n };\n\n // start with one forest per node\n for (var i = 0; i < numNodes; i++) {\n forest[i] = this.spawn(nodes[i]);\n }\n var S = edges.sort(function (a, b) {\n return weightFn(a) - weightFn(b);\n });\n for (var _i = 0; _i < S.length; _i++) {\n var edge = S[_i];\n var u = edge.source()[0];\n var v = edge.target()[0];\n var setUIndex = findSetIndex(u);\n var setVIndex = findSetIndex(v);\n var setU = forest[setUIndex];\n var setV = forest[setVIndex];\n if (setUIndex !== setVIndex) {\n A.merge(edge);\n\n // combine forests for u and v\n setU.merge(setV);\n forest.splice(setVIndex, 1);\n }\n }\n return A;\n }\n};\n\nvar aStarDefaults = defaults$g({\n root: null,\n goal: null,\n weight: function weight(edge) {\n return 1;\n },\n heuristic: function heuristic(edge) {\n return 0;\n },\n directed: false\n});\nvar elesfn$s = {\n // Implemented from pseudocode from wikipedia\n aStar: function aStar(options) {\n var cy = this.cy();\n var _aStarDefaults = aStarDefaults(options),\n root = _aStarDefaults.root,\n goal = _aStarDefaults.goal,\n heuristic = _aStarDefaults.heuristic,\n directed = _aStarDefaults.directed,\n weight = _aStarDefaults.weight;\n root = cy.collection(root)[0];\n goal = cy.collection(goal)[0];\n var sid = root.id();\n var tid = goal.id();\n var gScore = {};\n var fScore = {};\n var closedSetIds = {};\n var openSet = new Heap__default[\"default\"](function (a, b) {\n return fScore[a.id()] - fScore[b.id()];\n });\n var openSetIds = new Set$1();\n var cameFrom = {};\n var cameFromEdge = {};\n var addToOpenSet = function addToOpenSet(ele, id) {\n openSet.push(ele);\n openSetIds.add(id);\n };\n var cMin, cMinId;\n var popFromOpenSet = function popFromOpenSet() {\n cMin = openSet.pop();\n cMinId = cMin.id();\n openSetIds[\"delete\"](cMinId);\n };\n var isInOpenSet = function isInOpenSet(id) {\n return openSetIds.has(id);\n };\n addToOpenSet(root, sid);\n gScore[sid] = 0;\n fScore[sid] = heuristic(root);\n\n // Counter\n var steps = 0;\n\n // Main loop\n while (openSet.size() > 0) {\n popFromOpenSet();\n steps++;\n\n // If we've found our goal, then we are done\n if (cMinId === tid) {\n var path = [];\n var pathNode = goal;\n var pathNodeId = tid;\n var pathEdge = cameFromEdge[pathNodeId];\n for (;;) {\n path.unshift(pathNode);\n if (pathEdge != null) {\n path.unshift(pathEdge);\n }\n pathNode = cameFrom[pathNodeId];\n if (pathNode == null) {\n break;\n }\n pathNodeId = pathNode.id();\n pathEdge = cameFromEdge[pathNodeId];\n }\n return {\n found: true,\n distance: gScore[cMinId],\n path: this.spawn(path),\n steps: steps\n };\n }\n\n // Add cMin to processed nodes\n closedSetIds[cMinId] = true;\n\n // Update scores for neighbors of cMin\n // Take into account if graph is directed or not\n var vwEdges = cMin._private.edges;\n for (var i = 0; i < vwEdges.length; i++) {\n var e = vwEdges[i];\n\n // edge must be in set of calling eles\n if (!this.hasElementWithId(e.id())) {\n continue;\n }\n\n // cMin must be the source of edge if directed\n if (directed && e.data('source') !== cMinId) {\n continue;\n }\n var wSrc = e.source();\n var wTgt = e.target();\n var w = wSrc.id() !== cMinId ? wSrc : wTgt;\n var wid = w.id();\n\n // node must be in set of calling eles\n if (!this.hasElementWithId(wid)) {\n continue;\n }\n\n // if node is in closedSet, ignore it\n if (closedSetIds[wid]) {\n continue;\n }\n\n // New tentative score for node w\n var tempScore = gScore[cMinId] + weight(e);\n\n // Update gScore for node w if:\n // w not present in openSet\n // OR\n // tentative gScore is less than previous value\n\n // w not in openSet\n if (!isInOpenSet(wid)) {\n gScore[wid] = tempScore;\n fScore[wid] = tempScore + heuristic(w);\n addToOpenSet(w, wid);\n cameFrom[wid] = cMin;\n cameFromEdge[wid] = e;\n continue;\n }\n\n // w already in openSet, but with greater gScore\n if (tempScore < gScore[wid]) {\n gScore[wid] = tempScore;\n fScore[wid] = tempScore + heuristic(w);\n cameFrom[wid] = cMin;\n cameFromEdge[wid] = e;\n }\n } // End of neighbors update\n } // End of main loop\n\n // If we've reached here, then we've not reached our goal\n return {\n found: false,\n distance: undefined,\n path: undefined,\n steps: steps\n };\n }\n}; // elesfn\n\nvar floydWarshallDefaults = defaults$g({\n weight: function weight(edge) {\n return 1;\n },\n directed: false\n});\nvar elesfn$r = {\n // Implemented from pseudocode from wikipedia\n floydWarshall: function floydWarshall(options) {\n var cy = this.cy();\n var _floydWarshallDefault = floydWarshallDefaults(options),\n weight = _floydWarshallDefault.weight,\n directed = _floydWarshallDefault.directed;\n var weightFn = weight;\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges;\n var N = nodes.length;\n var Nsq = N * N;\n var indexOf = function indexOf(node) {\n return nodes.indexOf(node);\n };\n var atIndex = function atIndex(i) {\n return nodes[i];\n };\n\n // Initialize distance matrix\n var dist = new Array(Nsq);\n for (var n = 0; n < Nsq; n++) {\n var j = n % N;\n var i = (n - j) / N;\n if (i === j) {\n dist[n] = 0;\n } else {\n dist[n] = Infinity;\n }\n }\n\n // Initialize matrix used for path reconstruction\n // Initialize distance matrix\n var next = new Array(Nsq);\n var edgeNext = new Array(Nsq);\n\n // Process edges\n for (var _i = 0; _i < edges.length; _i++) {\n var edge = edges[_i];\n var src = edge.source()[0];\n var tgt = edge.target()[0];\n if (src === tgt) {\n continue;\n } // exclude loops\n\n var s = indexOf(src);\n var t = indexOf(tgt);\n var st = s * N + t; // source to target index\n var _weight = weightFn(edge);\n\n // Check if already process another edge between same 2 nodes\n if (dist[st] > _weight) {\n dist[st] = _weight;\n next[st] = t;\n edgeNext[st] = edge;\n }\n\n // If undirected graph, process 'reversed' edge\n if (!directed) {\n var ts = t * N + s; // target to source index\n\n if (!directed && dist[ts] > _weight) {\n dist[ts] = _weight;\n next[ts] = s;\n edgeNext[ts] = edge;\n }\n }\n }\n\n // Main loop\n for (var k = 0; k < N; k++) {\n for (var _i2 = 0; _i2 < N; _i2++) {\n var ik = _i2 * N + k;\n for (var _j = 0; _j < N; _j++) {\n var ij = _i2 * N + _j;\n var kj = k * N + _j;\n if (dist[ik] + dist[kj] < dist[ij]) {\n dist[ij] = dist[ik] + dist[kj];\n next[ij] = next[ik];\n }\n }\n }\n }\n var getArgEle = function getArgEle(ele) {\n return (string(ele) ? cy.filter(ele) : ele)[0];\n };\n var indexOfArgEle = function indexOfArgEle(ele) {\n return indexOf(getArgEle(ele));\n };\n var res = {\n distance: function distance(from, to) {\n var i = indexOfArgEle(from);\n var j = indexOfArgEle(to);\n return dist[i * N + j];\n },\n path: function path(from, to) {\n var i = indexOfArgEle(from);\n var j = indexOfArgEle(to);\n var fromNode = atIndex(i);\n if (i === j) {\n return fromNode.collection();\n }\n if (next[i * N + j] == null) {\n return cy.collection();\n }\n var path = cy.collection();\n var prev = i;\n var edge;\n path.merge(fromNode);\n while (i !== j) {\n prev = i;\n i = next[i * N + j];\n edge = edgeNext[prev * N + i];\n path.merge(edge);\n path.merge(atIndex(i));\n }\n return path;\n }\n };\n return res;\n } // floydWarshall\n}; // elesfn\n\nvar bellmanFordDefaults = defaults$g({\n weight: function weight(edge) {\n return 1;\n },\n directed: false,\n root: null\n});\nvar elesfn$q = {\n // Implemented from pseudocode from wikipedia\n bellmanFord: function bellmanFord(options) {\n var _this = this;\n var _bellmanFordDefaults = bellmanFordDefaults(options),\n weight = _bellmanFordDefaults.weight,\n directed = _bellmanFordDefaults.directed,\n root = _bellmanFordDefaults.root;\n var weightFn = weight;\n var eles = this;\n var cy = this.cy();\n var _this$byGroup = this.byGroup(),\n edges = _this$byGroup.edges,\n nodes = _this$byGroup.nodes;\n var numNodes = nodes.length;\n var infoMap = new Map$1();\n var hasNegativeWeightCycle = false;\n var negativeWeightCycles = [];\n root = cy.collection(root)[0]; // in case selector passed\n\n edges.unmergeBy(function (edge) {\n return edge.isLoop();\n });\n var numEdges = edges.length;\n var getInfo = function getInfo(node) {\n var obj = infoMap.get(node.id());\n if (!obj) {\n obj = {};\n infoMap.set(node.id(), obj);\n }\n return obj;\n };\n var getNodeFromTo = function getNodeFromTo(to) {\n return (string(to) ? cy.$(to) : to)[0];\n };\n var distanceTo = function distanceTo(to) {\n return getInfo(getNodeFromTo(to)).dist;\n };\n var pathTo = function pathTo(to) {\n var thisStart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : root;\n var end = getNodeFromTo(to);\n var path = [];\n var node = end;\n for (;;) {\n if (node == null) {\n return _this.spawn();\n }\n var _getInfo = getInfo(node),\n edge = _getInfo.edge,\n pred = _getInfo.pred;\n path.unshift(node[0]);\n if (node.same(thisStart) && path.length > 0) {\n break;\n }\n if (edge != null) {\n path.unshift(edge);\n }\n node = pred;\n }\n return eles.spawn(path);\n };\n\n // Initializations { dist, pred, edge }\n for (var i = 0; i < numNodes; i++) {\n var node = nodes[i];\n var info = getInfo(node);\n if (node.same(root)) {\n info.dist = 0;\n } else {\n info.dist = Infinity;\n }\n info.pred = null;\n info.edge = null;\n }\n\n // Edges relaxation\n var replacedEdge = false;\n var checkForEdgeReplacement = function checkForEdgeReplacement(node1, node2, edge, info1, info2, weight) {\n var dist = info1.dist + weight;\n if (dist < info2.dist && !edge.same(info1.edge)) {\n info2.dist = dist;\n info2.pred = node1;\n info2.edge = edge;\n replacedEdge = true;\n }\n };\n for (var _i = 1; _i < numNodes; _i++) {\n replacedEdge = false;\n for (var e = 0; e < numEdges; e++) {\n var edge = edges[e];\n var src = edge.source();\n var tgt = edge.target();\n var _weight = weightFn(edge);\n var srcInfo = getInfo(src);\n var tgtInfo = getInfo(tgt);\n checkForEdgeReplacement(src, tgt, edge, srcInfo, tgtInfo, _weight);\n\n // If undirected graph, we need to take into account the 'reverse' edge\n if (!directed) {\n checkForEdgeReplacement(tgt, src, edge, tgtInfo, srcInfo, _weight);\n }\n }\n if (!replacedEdge) {\n break;\n }\n }\n if (replacedEdge) {\n // Check for negative weight cycles\n var negativeWeightCycleIds = [];\n for (var _e = 0; _e < numEdges; _e++) {\n var _edge = edges[_e];\n var _src = _edge.source();\n var _tgt = _edge.target();\n var _weight2 = weightFn(_edge);\n var srcDist = getInfo(_src).dist;\n var tgtDist = getInfo(_tgt).dist;\n if (srcDist + _weight2 < tgtDist || !directed && tgtDist + _weight2 < srcDist) {\n if (!hasNegativeWeightCycle) {\n warn('Graph contains a negative weight cycle for Bellman-Ford');\n hasNegativeWeightCycle = true;\n }\n if (options.findNegativeWeightCycles !== false) {\n var negativeNodes = [];\n if (srcDist + _weight2 < tgtDist) {\n negativeNodes.push(_src);\n }\n if (!directed && tgtDist + _weight2 < srcDist) {\n negativeNodes.push(_tgt);\n }\n var numNegativeNodes = negativeNodes.length;\n for (var n = 0; n < numNegativeNodes; n++) {\n var start = negativeNodes[n];\n var cycle = [start];\n cycle.push(getInfo(start).edge);\n var _node = getInfo(start).pred;\n while (cycle.indexOf(_node) === -1) {\n cycle.push(_node);\n cycle.push(getInfo(_node).edge);\n _node = getInfo(_node).pred;\n }\n cycle = cycle.slice(cycle.indexOf(_node));\n var smallestId = cycle[0].id();\n var smallestIndex = 0;\n for (var c = 2; c < cycle.length; c += 2) {\n if (cycle[c].id() < smallestId) {\n smallestId = cycle[c].id();\n smallestIndex = c;\n }\n }\n cycle = cycle.slice(smallestIndex).concat(cycle.slice(0, smallestIndex));\n cycle.push(cycle[0]);\n var cycleId = cycle.map(function (el) {\n return el.id();\n }).join(\",\");\n if (negativeWeightCycleIds.indexOf(cycleId) === -1) {\n negativeWeightCycles.push(eles.spawn(cycle));\n negativeWeightCycleIds.push(cycleId);\n }\n }\n } else {\n break;\n }\n }\n }\n }\n return {\n distanceTo: distanceTo,\n pathTo: pathTo,\n hasNegativeWeightCycle: hasNegativeWeightCycle,\n negativeWeightCycles: negativeWeightCycles\n };\n } // bellmanFord\n}; // elesfn\n\nvar sqrt2 = Math.sqrt(2);\n\n// Function which colapses 2 (meta) nodes into one\n// Updates the remaining edge lists\n// Receives as a paramater the edge which causes the collapse\nvar collapse = function collapse(edgeIndex, nodeMap, remainingEdges) {\n if (remainingEdges.length === 0) {\n error(\"Karger-Stein must be run on a connected (sub)graph\");\n }\n var edgeInfo = remainingEdges[edgeIndex];\n var sourceIn = edgeInfo[1];\n var targetIn = edgeInfo[2];\n var partition1 = nodeMap[sourceIn];\n var partition2 = nodeMap[targetIn];\n var newEdges = remainingEdges; // re-use array\n\n // Delete all edges between partition1 and partition2\n for (var i = newEdges.length - 1; i >= 0; i--) {\n var edge = newEdges[i];\n var src = edge[1];\n var tgt = edge[2];\n if (nodeMap[src] === partition1 && nodeMap[tgt] === partition2 || nodeMap[src] === partition2 && nodeMap[tgt] === partition1) {\n newEdges.splice(i, 1);\n }\n }\n\n // All edges pointing to partition2 should now point to partition1\n for (var _i = 0; _i < newEdges.length; _i++) {\n var _edge = newEdges[_i];\n if (_edge[1] === partition2) {\n // Check source\n newEdges[_i] = _edge.slice(); // copy\n newEdges[_i][1] = partition1;\n } else if (_edge[2] === partition2) {\n // Check target\n newEdges[_i] = _edge.slice(); // copy\n newEdges[_i][2] = partition1;\n }\n }\n\n // Move all nodes from partition2 to partition1\n for (var _i2 = 0; _i2 < nodeMap.length; _i2++) {\n if (nodeMap[_i2] === partition2) {\n nodeMap[_i2] = partition1;\n }\n }\n return newEdges;\n};\n\n// Contracts a graph until we reach a certain number of meta nodes\nvar contractUntil = function contractUntil(metaNodeMap, remainingEdges, size, sizeLimit) {\n while (size > sizeLimit) {\n // Choose an edge randomly\n var edgeIndex = Math.floor(Math.random() * remainingEdges.length);\n\n // Collapse graph based on edge\n remainingEdges = collapse(edgeIndex, metaNodeMap, remainingEdges);\n size--;\n }\n return remainingEdges;\n};\nvar elesfn$p = {\n // Computes the minimum cut of an undirected graph\n // Returns the correct answer with high probability\n kargerStein: function kargerStein() {\n var _this = this;\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges;\n edges.unmergeBy(function (edge) {\n return edge.isLoop();\n });\n var numNodes = nodes.length;\n var numEdges = edges.length;\n var numIter = Math.ceil(Math.pow(Math.log(numNodes) / Math.LN2, 2));\n var stopSize = Math.floor(numNodes / sqrt2);\n if (numNodes < 2) {\n error('At least 2 nodes are required for Karger-Stein algorithm');\n return undefined;\n }\n\n // Now store edge destination as indexes\n // Format for each edge (edge index, source node index, target node index)\n var edgeIndexes = [];\n for (var i = 0; i < numEdges; i++) {\n var e = edges[i];\n edgeIndexes.push([i, nodes.indexOf(e.source()), nodes.indexOf(e.target())]);\n }\n\n // We will store the best cut found here\n var minCutSize = Infinity;\n var minCutEdgeIndexes = [];\n var minCutNodeMap = new Array(numNodes);\n\n // Initial meta node partition\n var metaNodeMap = new Array(numNodes);\n var metaNodeMap2 = new Array(numNodes);\n var copyNodesMap = function copyNodesMap(from, to) {\n for (var _i3 = 0; _i3 < numNodes; _i3++) {\n to[_i3] = from[_i3];\n }\n };\n\n // Main loop\n for (var iter = 0; iter <= numIter; iter++) {\n // Reset meta node partition\n for (var _i4 = 0; _i4 < numNodes; _i4++) {\n metaNodeMap[_i4] = _i4;\n }\n\n // Contract until stop point (stopSize nodes)\n var edgesState = contractUntil(metaNodeMap, edgeIndexes.slice(), numNodes, stopSize);\n var edgesState2 = edgesState.slice(); // copy\n\n // Create a copy of the colapsed nodes state\n copyNodesMap(metaNodeMap, metaNodeMap2);\n\n // Run 2 iterations starting in the stop state\n var res1 = contractUntil(metaNodeMap, edgesState, stopSize, 2);\n var res2 = contractUntil(metaNodeMap2, edgesState2, stopSize, 2);\n\n // Is any of the 2 results the best cut so far?\n if (res1.length <= res2.length && res1.length < minCutSize) {\n minCutSize = res1.length;\n minCutEdgeIndexes = res1;\n copyNodesMap(metaNodeMap, minCutNodeMap);\n } else if (res2.length <= res1.length && res2.length < minCutSize) {\n minCutSize = res2.length;\n minCutEdgeIndexes = res2;\n copyNodesMap(metaNodeMap2, minCutNodeMap);\n }\n } // end of main loop\n\n // Construct result\n var cut = this.spawn(minCutEdgeIndexes.map(function (e) {\n return edges[e[0]];\n }));\n var partition1 = this.spawn();\n var partition2 = this.spawn();\n\n // traverse metaNodeMap for best cut\n var witnessNodePartition = minCutNodeMap[0];\n for (var _i5 = 0; _i5 < minCutNodeMap.length; _i5++) {\n var partitionId = minCutNodeMap[_i5];\n var node = nodes[_i5];\n if (partitionId === witnessNodePartition) {\n partition1.merge(node);\n } else {\n partition2.merge(node);\n }\n }\n\n // construct components corresponding to each disjoint subset of nodes\n var constructComponent = function constructComponent(subset) {\n var component = _this.spawn();\n subset.forEach(function (node) {\n component.merge(node);\n node.connectedEdges().forEach(function (edge) {\n // ensure edge is within calling collection and edge is not in cut\n if (_this.contains(edge) && !cut.contains(edge)) {\n component.merge(edge);\n }\n });\n });\n return component;\n };\n var components = [constructComponent(partition1), constructComponent(partition2)];\n var ret = {\n cut: cut,\n components: components,\n // n.b. partitions are included to be compatible with the old api spec\n // (could be removed in a future major version)\n partition1: partition1,\n partition2: partition2\n };\n return ret;\n }\n}; // elesfn\n\nvar copyPosition = function copyPosition(p) {\n return {\n x: p.x,\n y: p.y\n };\n};\nvar modelToRenderedPosition = function modelToRenderedPosition(p, zoom, pan) {\n return {\n x: p.x * zoom + pan.x,\n y: p.y * zoom + pan.y\n };\n};\nvar renderedToModelPosition = function renderedToModelPosition(p, zoom, pan) {\n return {\n x: (p.x - pan.x) / zoom,\n y: (p.y - pan.y) / zoom\n };\n};\nvar array2point = function array2point(arr) {\n return {\n x: arr[0],\n y: arr[1]\n };\n};\nvar min = function min(arr) {\n var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;\n var min = Infinity;\n for (var i = begin; i < end; i++) {\n var val = arr[i];\n if (isFinite(val)) {\n min = Math.min(val, min);\n }\n }\n return min;\n};\nvar max = function max(arr) {\n var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;\n var max = -Infinity;\n for (var i = begin; i < end; i++) {\n var val = arr[i];\n if (isFinite(val)) {\n max = Math.max(val, max);\n }\n }\n return max;\n};\nvar mean = function mean(arr) {\n var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;\n var total = 0;\n var n = 0;\n for (var i = begin; i < end; i++) {\n var val = arr[i];\n if (isFinite(val)) {\n total += val;\n n++;\n }\n }\n return total / n;\n};\nvar median = function median(arr) {\n var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;\n var copy = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var sort = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var includeHoles = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n if (copy) {\n arr = arr.slice(begin, end);\n } else {\n if (end < arr.length) {\n arr.splice(end, arr.length - end);\n }\n if (begin > 0) {\n arr.splice(0, begin);\n }\n }\n\n // all non finite (e.g. Infinity, NaN) elements must be -Infinity so they go to the start\n var off = 0; // offset from non-finite values\n for (var i = arr.length - 1; i >= 0; i--) {\n var v = arr[i];\n if (includeHoles) {\n if (!isFinite(v)) {\n arr[i] = -Infinity;\n off++;\n }\n } else {\n // just remove it if we don't want to consider holes\n arr.splice(i, 1);\n }\n }\n if (sort) {\n arr.sort(function (a, b) {\n return a - b;\n }); // requires copy = true if you don't want to change the orig\n }\n\n var len = arr.length;\n var mid = Math.floor(len / 2);\n if (len % 2 !== 0) {\n return arr[mid + 1 + off];\n } else {\n return (arr[mid - 1 + off] + arr[mid + off]) / 2;\n }\n};\nvar deg2rad = function deg2rad(deg) {\n return Math.PI * deg / 180;\n};\nvar getAngleFromDisp = function getAngleFromDisp(dispX, dispY) {\n return Math.atan2(dispY, dispX) - Math.PI / 2;\n};\nvar log2 = Math.log2 || function (n) {\n return Math.log(n) / Math.log(2);\n};\nvar signum = function signum(x) {\n if (x > 0) {\n return 1;\n } else if (x < 0) {\n return -1;\n } else {\n return 0;\n }\n};\nvar dist = function dist(p1, p2) {\n return Math.sqrt(sqdist(p1, p2));\n};\nvar sqdist = function sqdist(p1, p2) {\n var dx = p2.x - p1.x;\n var dy = p2.y - p1.y;\n return dx * dx + dy * dy;\n};\nvar inPlaceSumNormalize = function inPlaceSumNormalize(v) {\n var length = v.length;\n\n // First, get sum of all elements\n var total = 0;\n for (var i = 0; i < length; i++) {\n total += v[i];\n }\n\n // Now, divide each by the sum of all elements\n for (var _i = 0; _i < length; _i++) {\n v[_i] = v[_i] / total;\n }\n return v;\n};\n\n// from http://en.wikipedia.org/wiki/Bézier_curve#Quadratic_curves\nvar qbezierAt = function qbezierAt(p0, p1, p2, t) {\n return (1 - t) * (1 - t) * p0 + 2 * (1 - t) * t * p1 + t * t * p2;\n};\nvar qbezierPtAt = function qbezierPtAt(p0, p1, p2, t) {\n return {\n x: qbezierAt(p0.x, p1.x, p2.x, t),\n y: qbezierAt(p0.y, p1.y, p2.y, t)\n };\n};\nvar lineAt = function lineAt(p0, p1, t, d) {\n var vec = {\n x: p1.x - p0.x,\n y: p1.y - p0.y\n };\n var vecDist = dist(p0, p1);\n var normVec = {\n x: vec.x / vecDist,\n y: vec.y / vecDist\n };\n t = t == null ? 0 : t;\n d = d != null ? d : t * vecDist;\n return {\n x: p0.x + normVec.x * d,\n y: p0.y + normVec.y * d\n };\n};\nvar bound = function bound(min, val, max) {\n return Math.max(min, Math.min(max, val));\n};\n\n// makes a full bb (x1, y1, x2, y2, w, h) from implicit params\nvar makeBoundingBox = function makeBoundingBox(bb) {\n if (bb == null) {\n return {\n x1: Infinity,\n y1: Infinity,\n x2: -Infinity,\n y2: -Infinity,\n w: 0,\n h: 0\n };\n } else if (bb.x1 != null && bb.y1 != null) {\n if (bb.x2 != null && bb.y2 != null && bb.x2 >= bb.x1 && bb.y2 >= bb.y1) {\n return {\n x1: bb.x1,\n y1: bb.y1,\n x2: bb.x2,\n y2: bb.y2,\n w: bb.x2 - bb.x1,\n h: bb.y2 - bb.y1\n };\n } else if (bb.w != null && bb.h != null && bb.w >= 0 && bb.h >= 0) {\n return {\n x1: bb.x1,\n y1: bb.y1,\n x2: bb.x1 + bb.w,\n y2: bb.y1 + bb.h,\n w: bb.w,\n h: bb.h\n };\n }\n }\n};\nvar copyBoundingBox = function copyBoundingBox(bb) {\n return {\n x1: bb.x1,\n x2: bb.x2,\n w: bb.w,\n y1: bb.y1,\n y2: bb.y2,\n h: bb.h\n };\n};\nvar clearBoundingBox = function clearBoundingBox(bb) {\n bb.x1 = Infinity;\n bb.y1 = Infinity;\n bb.x2 = -Infinity;\n bb.y2 = -Infinity;\n bb.w = 0;\n bb.h = 0;\n};\nvar updateBoundingBox = function updateBoundingBox(bb1, bb2) {\n // update bb1 with bb2 bounds\n\n bb1.x1 = Math.min(bb1.x1, bb2.x1);\n bb1.x2 = Math.max(bb1.x2, bb2.x2);\n bb1.w = bb1.x2 - bb1.x1;\n bb1.y1 = Math.min(bb1.y1, bb2.y1);\n bb1.y2 = Math.max(bb1.y2, bb2.y2);\n bb1.h = bb1.y2 - bb1.y1;\n};\nvar expandBoundingBoxByPoint = function expandBoundingBoxByPoint(bb, x, y) {\n bb.x1 = Math.min(bb.x1, x);\n bb.x2 = Math.max(bb.x2, x);\n bb.w = bb.x2 - bb.x1;\n bb.y1 = Math.min(bb.y1, y);\n bb.y2 = Math.max(bb.y2, y);\n bb.h = bb.y2 - bb.y1;\n};\nvar expandBoundingBox = function expandBoundingBox(bb) {\n var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n bb.x1 -= padding;\n bb.x2 += padding;\n bb.y1 -= padding;\n bb.y2 += padding;\n bb.w = bb.x2 - bb.x1;\n bb.h = bb.y2 - bb.y1;\n return bb;\n};\nvar expandBoundingBoxSides = function expandBoundingBoxSides(bb) {\n var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0];\n var top, right, bottom, left;\n if (padding.length === 1) {\n top = right = bottom = left = padding[0];\n } else if (padding.length === 2) {\n top = bottom = padding[0];\n left = right = padding[1];\n } else if (padding.length === 4) {\n var _padding = _slicedToArray(padding, 4);\n top = _padding[0];\n right = _padding[1];\n bottom = _padding[2];\n left = _padding[3];\n }\n bb.x1 -= left;\n bb.x2 += right;\n bb.y1 -= top;\n bb.y2 += bottom;\n bb.w = bb.x2 - bb.x1;\n bb.h = bb.y2 - bb.y1;\n return bb;\n};\n\n// assign the values of bb2 into bb1\nvar assignBoundingBox = function assignBoundingBox(bb1, bb2) {\n bb1.x1 = bb2.x1;\n bb1.y1 = bb2.y1;\n bb1.x2 = bb2.x2;\n bb1.y2 = bb2.y2;\n bb1.w = bb1.x2 - bb1.x1;\n bb1.h = bb1.y2 - bb1.y1;\n};\nvar boundingBoxesIntersect = function boundingBoxesIntersect(bb1, bb2) {\n // case: one bb to right of other\n if (bb1.x1 > bb2.x2) {\n return false;\n }\n if (bb2.x1 > bb1.x2) {\n return false;\n }\n\n // case: one bb to left of other\n if (bb1.x2 < bb2.x1) {\n return false;\n }\n if (bb2.x2 < bb1.x1) {\n return false;\n }\n\n // case: one bb above other\n if (bb1.y2 < bb2.y1) {\n return false;\n }\n if (bb2.y2 < bb1.y1) {\n return false;\n }\n\n // case: one bb below other\n if (bb1.y1 > bb2.y2) {\n return false;\n }\n if (bb2.y1 > bb1.y2) {\n return false;\n }\n\n // otherwise, must have some overlap\n return true;\n};\nvar inBoundingBox = function inBoundingBox(bb, x, y) {\n return bb.x1 <= x && x <= bb.x2 && bb.y1 <= y && y <= bb.y2;\n};\nvar pointInBoundingBox = function pointInBoundingBox(bb, pt) {\n return inBoundingBox(bb, pt.x, pt.y);\n};\nvar boundingBoxInBoundingBox = function boundingBoxInBoundingBox(bb1, bb2) {\n return inBoundingBox(bb1, bb2.x1, bb2.y1) && inBoundingBox(bb1, bb2.x2, bb2.y2);\n};\nvar roundRectangleIntersectLine = function roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding) {\n var cornerRadius = getRoundRectangleRadius(width, height);\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n\n // Check intersections with straight line segments\n var straightLineIntersections;\n\n // Top segment, left to right\n {\n var topStartX = nodeX - halfWidth + cornerRadius - padding;\n var topStartY = nodeY - halfHeight - padding;\n var topEndX = nodeX + halfWidth - cornerRadius + padding;\n var topEndY = topStartY;\n straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false);\n if (straightLineIntersections.length > 0) {\n return straightLineIntersections;\n }\n }\n\n // Right segment, top to bottom\n {\n var rightStartX = nodeX + halfWidth + padding;\n var rightStartY = nodeY - halfHeight + cornerRadius - padding;\n var rightEndX = rightStartX;\n var rightEndY = nodeY + halfHeight - cornerRadius + padding;\n straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, rightStartX, rightStartY, rightEndX, rightEndY, false);\n if (straightLineIntersections.length > 0) {\n return straightLineIntersections;\n }\n }\n\n // Bottom segment, left to right\n {\n var bottomStartX = nodeX - halfWidth + cornerRadius - padding;\n var bottomStartY = nodeY + halfHeight + padding;\n var bottomEndX = nodeX + halfWidth - cornerRadius + padding;\n var bottomEndY = bottomStartY;\n straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, bottomStartX, bottomStartY, bottomEndX, bottomEndY, false);\n if (straightLineIntersections.length > 0) {\n return straightLineIntersections;\n }\n }\n\n // Left segment, top to bottom\n {\n var leftStartX = nodeX - halfWidth - padding;\n var leftStartY = nodeY - halfHeight + cornerRadius - padding;\n var leftEndX = leftStartX;\n var leftEndY = nodeY + halfHeight - cornerRadius + padding;\n straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, leftStartX, leftStartY, leftEndX, leftEndY, false);\n if (straightLineIntersections.length > 0) {\n return straightLineIntersections;\n }\n }\n\n // Check intersections with arc segments\n var arcIntersections;\n\n // Top Left\n {\n var topLeftCenterX = nodeX - halfWidth + cornerRadius;\n var topLeftCenterY = nodeY - halfHeight + cornerRadius;\n arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topLeftCenterX, topLeftCenterY, cornerRadius + padding);\n\n // Ensure the intersection is on the desired quarter of the circle\n if (arcIntersections.length > 0 && arcIntersections[0] <= topLeftCenterX && arcIntersections[1] <= topLeftCenterY) {\n return [arcIntersections[0], arcIntersections[1]];\n }\n }\n\n // Top Right\n {\n var topRightCenterX = nodeX + halfWidth - cornerRadius;\n var topRightCenterY = nodeY - halfHeight + cornerRadius;\n arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topRightCenterX, topRightCenterY, cornerRadius + padding);\n\n // Ensure the intersection is on the desired quarter of the circle\n if (arcIntersections.length > 0 && arcIntersections[0] >= topRightCenterX && arcIntersections[1] <= topRightCenterY) {\n return [arcIntersections[0], arcIntersections[1]];\n }\n }\n\n // Bottom Right\n {\n var bottomRightCenterX = nodeX + halfWidth - cornerRadius;\n var bottomRightCenterY = nodeY + halfHeight - cornerRadius;\n arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomRightCenterX, bottomRightCenterY, cornerRadius + padding);\n\n // Ensure the intersection is on the desired quarter of the circle\n if (arcIntersections.length > 0 && arcIntersections[0] >= bottomRightCenterX && arcIntersections[1] >= bottomRightCenterY) {\n return [arcIntersections[0], arcIntersections[1]];\n }\n }\n\n // Bottom Left\n {\n var bottomLeftCenterX = nodeX - halfWidth + cornerRadius;\n var bottomLeftCenterY = nodeY + halfHeight - cornerRadius;\n arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomLeftCenterX, bottomLeftCenterY, cornerRadius + padding);\n\n // Ensure the intersection is on the desired quarter of the circle\n if (arcIntersections.length > 0 && arcIntersections[0] <= bottomLeftCenterX && arcIntersections[1] >= bottomLeftCenterY) {\n return [arcIntersections[0], arcIntersections[1]];\n }\n }\n return []; // if nothing\n};\n\nvar inLineVicinity = function inLineVicinity(x, y, lx1, ly1, lx2, ly2, tolerance) {\n var t = tolerance;\n var x1 = Math.min(lx1, lx2);\n var x2 = Math.max(lx1, lx2);\n var y1 = Math.min(ly1, ly2);\n var y2 = Math.max(ly1, ly2);\n return x1 - t <= x && x <= x2 + t && y1 - t <= y && y <= y2 + t;\n};\nvar inBezierVicinity = function inBezierVicinity(x, y, x1, y1, x2, y2, x3, y3, tolerance) {\n var bb = {\n x1: Math.min(x1, x3, x2) - tolerance,\n x2: Math.max(x1, x3, x2) + tolerance,\n y1: Math.min(y1, y3, y2) - tolerance,\n y2: Math.max(y1, y3, y2) + tolerance\n };\n\n // if outside the rough bounding box for the bezier, then it can't be a hit\n if (x < bb.x1 || x > bb.x2 || y < bb.y1 || y > bb.y2) {\n // console.log('bezier out of rough bb')\n return false;\n } else {\n // console.log('do more expensive check');\n return true;\n }\n};\nvar solveQuadratic = function solveQuadratic(a, b, c, val) {\n c -= val;\n var r = b * b - 4 * a * c;\n if (r < 0) {\n return [];\n }\n var sqrtR = Math.sqrt(r);\n var denom = 2 * a;\n var root1 = (-b + sqrtR) / denom;\n var root2 = (-b - sqrtR) / denom;\n return [root1, root2];\n};\nvar solveCubic = function solveCubic(a, b, c, d, result) {\n // Solves a cubic function, returns root in form [r1, i1, r2, i2, r3, i3], where\n // r is the real component, i is the imaginary component\n\n // An implementation of the Cardano method from the year 1545\n // http://en.wikipedia.org/wiki/Cubic_function#The_nature_of_the_roots\n\n var epsilon = 0.00001;\n\n // avoid division by zero while keeping the overall expression close in value\n if (a === 0) {\n a = epsilon;\n }\n b /= a;\n c /= a;\n d /= a;\n var discriminant, q, r, dum1, s, t, term1, r13;\n q = (3.0 * c - b * b) / 9.0;\n r = -(27.0 * d) + b * (9.0 * c - 2.0 * (b * b));\n r /= 54.0;\n discriminant = q * q * q + r * r;\n result[1] = 0;\n term1 = b / 3.0;\n if (discriminant > 0) {\n s = r + Math.sqrt(discriminant);\n s = s < 0 ? -Math.pow(-s, 1.0 / 3.0) : Math.pow(s, 1.0 / 3.0);\n t = r - Math.sqrt(discriminant);\n t = t < 0 ? -Math.pow(-t, 1.0 / 3.0) : Math.pow(t, 1.0 / 3.0);\n result[0] = -term1 + s + t;\n term1 += (s + t) / 2.0;\n result[4] = result[2] = -term1;\n term1 = Math.sqrt(3.0) * (-t + s) / 2;\n result[3] = term1;\n result[5] = -term1;\n return;\n }\n result[5] = result[3] = 0;\n if (discriminant === 0) {\n r13 = r < 0 ? -Math.pow(-r, 1.0 / 3.0) : Math.pow(r, 1.0 / 3.0);\n result[0] = -term1 + 2.0 * r13;\n result[4] = result[2] = -(r13 + term1);\n return;\n }\n q = -q;\n dum1 = q * q * q;\n dum1 = Math.acos(r / Math.sqrt(dum1));\n r13 = 2.0 * Math.sqrt(q);\n result[0] = -term1 + r13 * Math.cos(dum1 / 3.0);\n result[2] = -term1 + r13 * Math.cos((dum1 + 2.0 * Math.PI) / 3.0);\n result[4] = -term1 + r13 * Math.cos((dum1 + 4.0 * Math.PI) / 3.0);\n return;\n};\nvar sqdistToQuadraticBezier = function sqdistToQuadraticBezier(x, y, x1, y1, x2, y2, x3, y3) {\n // Find minimum distance by using the minimum of the distance\n // function between the given point and the curve\n\n // This gives the coefficients of the resulting cubic equation\n // whose roots tell us where a possible minimum is\n // (Coefficients are divided by 4)\n\n var a = 1.0 * x1 * x1 - 4 * x1 * x2 + 2 * x1 * x3 + 4 * x2 * x2 - 4 * x2 * x3 + x3 * x3 + y1 * y1 - 4 * y1 * y2 + 2 * y1 * y3 + 4 * y2 * y2 - 4 * y2 * y3 + y3 * y3;\n var b = 1.0 * 9 * x1 * x2 - 3 * x1 * x1 - 3 * x1 * x3 - 6 * x2 * x2 + 3 * x2 * x3 + 9 * y1 * y2 - 3 * y1 * y1 - 3 * y1 * y3 - 6 * y2 * y2 + 3 * y2 * y3;\n var c = 1.0 * 3 * x1 * x1 - 6 * x1 * x2 + x1 * x3 - x1 * x + 2 * x2 * x2 + 2 * x2 * x - x3 * x + 3 * y1 * y1 - 6 * y1 * y2 + y1 * y3 - y1 * y + 2 * y2 * y2 + 2 * y2 * y - y3 * y;\n var d = 1.0 * x1 * x2 - x1 * x1 + x1 * x - x2 * x + y1 * y2 - y1 * y1 + y1 * y - y2 * y;\n\n // debug(\"coefficients: \" + a / a + \", \" + b / a + \", \" + c / a + \", \" + d / a);\n\n var roots = [];\n\n // Use the cubic solving algorithm\n solveCubic(a, b, c, d, roots);\n var zeroThreshold = 0.0000001;\n var params = [];\n for (var index = 0; index < 6; index += 2) {\n if (Math.abs(roots[index + 1]) < zeroThreshold && roots[index] >= 0 && roots[index] <= 1.0) {\n params.push(roots[index]);\n }\n }\n params.push(1.0);\n params.push(0.0);\n var minDistanceSquared = -1;\n var curX, curY, distSquared;\n for (var i = 0; i < params.length; i++) {\n curX = Math.pow(1.0 - params[i], 2.0) * x1 + 2.0 * (1 - params[i]) * params[i] * x2 + params[i] * params[i] * x3;\n curY = Math.pow(1 - params[i], 2.0) * y1 + 2 * (1.0 - params[i]) * params[i] * y2 + params[i] * params[i] * y3;\n distSquared = Math.pow(curX - x, 2) + Math.pow(curY - y, 2);\n // debug('distance for param ' + params[i] + \": \" + Math.sqrt(distSquared));\n if (minDistanceSquared >= 0) {\n if (distSquared < minDistanceSquared) {\n minDistanceSquared = distSquared;\n }\n } else {\n minDistanceSquared = distSquared;\n }\n }\n return minDistanceSquared;\n};\nvar sqdistToFiniteLine = function sqdistToFiniteLine(x, y, x1, y1, x2, y2) {\n var offset = [x - x1, y - y1];\n var line = [x2 - x1, y2 - y1];\n var lineSq = line[0] * line[0] + line[1] * line[1];\n var hypSq = offset[0] * offset[0] + offset[1] * offset[1];\n var dotProduct = offset[0] * line[0] + offset[1] * line[1];\n var adjSq = dotProduct * dotProduct / lineSq;\n if (dotProduct < 0) {\n return hypSq;\n }\n if (adjSq > lineSq) {\n return (x - x2) * (x - x2) + (y - y2) * (y - y2);\n }\n return hypSq - adjSq;\n};\nvar pointInsidePolygonPoints = function pointInsidePolygonPoints(x, y, points) {\n var x1, y1, x2, y2;\n var y3;\n\n // Intersect with vertical line through (x, y)\n var up = 0;\n // let down = 0;\n for (var i = 0; i < points.length / 2; i++) {\n x1 = points[i * 2];\n y1 = points[i * 2 + 1];\n if (i + 1 < points.length / 2) {\n x2 = points[(i + 1) * 2];\n y2 = points[(i + 1) * 2 + 1];\n } else {\n x2 = points[(i + 1 - points.length / 2) * 2];\n y2 = points[(i + 1 - points.length / 2) * 2 + 1];\n }\n if (x1 == x && x2 == x) ; else if (x1 >= x && x >= x2 || x1 <= x && x <= x2) {\n y3 = (x - x1) / (x2 - x1) * (y2 - y1) + y1;\n if (y3 > y) {\n up++;\n }\n\n // if( y3 < y ){\n // down++;\n // }\n } else {\n continue;\n }\n }\n if (up % 2 === 0) {\n return false;\n } else {\n return true;\n }\n};\nvar pointInsidePolygon = function pointInsidePolygon(x, y, basePoints, centerX, centerY, width, height, direction, padding) {\n var transformedPoints = new Array(basePoints.length);\n\n // Gives negative angle\n var angle;\n if (direction[0] != null) {\n angle = Math.atan(direction[1] / direction[0]);\n if (direction[0] < 0) {\n angle = angle + Math.PI / 2;\n } else {\n angle = -angle - Math.PI / 2;\n }\n } else {\n angle = direction;\n }\n var cos = Math.cos(-angle);\n var sin = Math.sin(-angle);\n\n // console.log(\"base: \" + basePoints);\n for (var i = 0; i < transformedPoints.length / 2; i++) {\n transformedPoints[i * 2] = width / 2 * (basePoints[i * 2] * cos - basePoints[i * 2 + 1] * sin);\n transformedPoints[i * 2 + 1] = height / 2 * (basePoints[i * 2 + 1] * cos + basePoints[i * 2] * sin);\n transformedPoints[i * 2] += centerX;\n transformedPoints[i * 2 + 1] += centerY;\n }\n var points;\n if (padding > 0) {\n var expandedLineSet = expandPolygon(transformedPoints, -padding);\n points = joinLines(expandedLineSet);\n } else {\n points = transformedPoints;\n }\n return pointInsidePolygonPoints(x, y, points);\n};\nvar pointInsideRoundPolygon = function pointInsideRoundPolygon(x, y, basePoints, centerX, centerY, width, height) {\n var cutPolygonPoints = new Array(basePoints.length);\n var halfW = width / 2;\n var halfH = height / 2;\n var cornerRadius = getRoundPolygonRadius(width, height);\n var squaredCornerRadius = cornerRadius * cornerRadius;\n for (var i = 0; i < basePoints.length / 4; i++) {\n var sourceUv = void 0,\n destUv = void 0;\n if (i === 0) {\n sourceUv = basePoints.length - 2;\n } else {\n sourceUv = i * 4 - 2;\n }\n destUv = i * 4 + 2;\n var px = centerX + halfW * basePoints[i * 4];\n var py = centerY + halfH * basePoints[i * 4 + 1];\n var cosTheta = -basePoints[sourceUv] * basePoints[destUv] - basePoints[sourceUv + 1] * basePoints[destUv + 1];\n var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2);\n var cp0x = px - offset * basePoints[sourceUv];\n var cp0y = py - offset * basePoints[sourceUv + 1];\n var cp1x = px + offset * basePoints[destUv];\n var cp1y = py + offset * basePoints[destUv + 1];\n cutPolygonPoints[i * 4] = cp0x;\n cutPolygonPoints[i * 4 + 1] = cp0y;\n cutPolygonPoints[i * 4 + 2] = cp1x;\n cutPolygonPoints[i * 4 + 3] = cp1y;\n var orthx = basePoints[sourceUv + 1];\n var orthy = -basePoints[sourceUv];\n var cosAlpha = orthx * basePoints[destUv] + orthy * basePoints[destUv + 1];\n if (cosAlpha < 0) {\n orthx *= -1;\n orthy *= -1;\n }\n var cx = cp0x + orthx * cornerRadius;\n var cy = cp0y + orthy * cornerRadius;\n var squaredDistance = Math.pow(cx - x, 2) + Math.pow(cy - y, 2);\n if (squaredDistance <= squaredCornerRadius) {\n return true;\n }\n }\n return pointInsidePolygonPoints(x, y, cutPolygonPoints);\n};\nvar joinLines = function joinLines(lineSet) {\n var vertices = new Array(lineSet.length / 2);\n var currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY;\n var nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY;\n for (var i = 0; i < lineSet.length / 4; i++) {\n currentLineStartX = lineSet[i * 4];\n currentLineStartY = lineSet[i * 4 + 1];\n currentLineEndX = lineSet[i * 4 + 2];\n currentLineEndY = lineSet[i * 4 + 3];\n if (i < lineSet.length / 4 - 1) {\n nextLineStartX = lineSet[(i + 1) * 4];\n nextLineStartY = lineSet[(i + 1) * 4 + 1];\n nextLineEndX = lineSet[(i + 1) * 4 + 2];\n nextLineEndY = lineSet[(i + 1) * 4 + 3];\n } else {\n nextLineStartX = lineSet[0];\n nextLineStartY = lineSet[1];\n nextLineEndX = lineSet[2];\n nextLineEndY = lineSet[3];\n }\n var intersection = finiteLinesIntersect(currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY, nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY, true);\n vertices[i * 2] = intersection[0];\n vertices[i * 2 + 1] = intersection[1];\n }\n return vertices;\n};\nvar expandPolygon = function expandPolygon(points, pad) {\n var expandedLineSet = new Array(points.length * 2);\n var currentPointX, currentPointY, nextPointX, nextPointY;\n for (var i = 0; i < points.length / 2; i++) {\n currentPointX = points[i * 2];\n currentPointY = points[i * 2 + 1];\n if (i < points.length / 2 - 1) {\n nextPointX = points[(i + 1) * 2];\n nextPointY = points[(i + 1) * 2 + 1];\n } else {\n nextPointX = points[0];\n nextPointY = points[1];\n }\n\n // Current line: [currentPointX, currentPointY] to [nextPointX, nextPointY]\n\n // Assume CCW polygon winding\n\n var offsetX = nextPointY - currentPointY;\n var offsetY = -(nextPointX - currentPointX);\n\n // Normalize\n var offsetLength = Math.sqrt(offsetX * offsetX + offsetY * offsetY);\n var normalizedOffsetX = offsetX / offsetLength;\n var normalizedOffsetY = offsetY / offsetLength;\n expandedLineSet[i * 4] = currentPointX + normalizedOffsetX * pad;\n expandedLineSet[i * 4 + 1] = currentPointY + normalizedOffsetY * pad;\n expandedLineSet[i * 4 + 2] = nextPointX + normalizedOffsetX * pad;\n expandedLineSet[i * 4 + 3] = nextPointY + normalizedOffsetY * pad;\n }\n return expandedLineSet;\n};\nvar intersectLineEllipse = function intersectLineEllipse(x, y, centerX, centerY, ellipseWradius, ellipseHradius) {\n var dispX = centerX - x;\n var dispY = centerY - y;\n dispX /= ellipseWradius;\n dispY /= ellipseHradius;\n var len = Math.sqrt(dispX * dispX + dispY * dispY);\n var newLength = len - 1;\n if (newLength < 0) {\n return [];\n }\n var lenProportion = newLength / len;\n return [(centerX - x) * lenProportion + x, (centerY - y) * lenProportion + y];\n};\nvar checkInEllipse = function checkInEllipse(x, y, width, height, centerX, centerY, padding) {\n x -= centerX;\n y -= centerY;\n x /= width / 2 + padding;\n y /= height / 2 + padding;\n return x * x + y * y <= 1;\n};\n\n// Returns intersections of increasing distance from line's start point\nvar intersectLineCircle = function intersectLineCircle(x1, y1, x2, y2, centerX, centerY, radius) {\n // Calculate d, direction vector of line\n var d = [x2 - x1, y2 - y1]; // Direction vector of line\n var f = [x1 - centerX, y1 - centerY];\n var a = d[0] * d[0] + d[1] * d[1];\n var b = 2 * (f[0] * d[0] + f[1] * d[1]);\n var c = f[0] * f[0] + f[1] * f[1] - radius * radius;\n var discriminant = b * b - 4 * a * c;\n if (discriminant < 0) {\n return [];\n }\n var t1 = (-b + Math.sqrt(discriminant)) / (2 * a);\n var t2 = (-b - Math.sqrt(discriminant)) / (2 * a);\n var tMin = Math.min(t1, t2);\n var tMax = Math.max(t1, t2);\n var inRangeParams = [];\n if (tMin >= 0 && tMin <= 1) {\n inRangeParams.push(tMin);\n }\n if (tMax >= 0 && tMax <= 1) {\n inRangeParams.push(tMax);\n }\n if (inRangeParams.length === 0) {\n return [];\n }\n var nearIntersectionX = inRangeParams[0] * d[0] + x1;\n var nearIntersectionY = inRangeParams[0] * d[1] + y1;\n if (inRangeParams.length > 1) {\n if (inRangeParams[0] == inRangeParams[1]) {\n return [nearIntersectionX, nearIntersectionY];\n } else {\n var farIntersectionX = inRangeParams[1] * d[0] + x1;\n var farIntersectionY = inRangeParams[1] * d[1] + y1;\n return [nearIntersectionX, nearIntersectionY, farIntersectionX, farIntersectionY];\n }\n } else {\n return [nearIntersectionX, nearIntersectionY];\n }\n};\nvar midOfThree = function midOfThree(a, b, c) {\n if (b <= a && a <= c || c <= a && a <= b) {\n return a;\n } else if (a <= b && b <= c || c <= b && b <= a) {\n return b;\n } else {\n return c;\n }\n};\n\n// (x1,y1)=>(x2,y2) intersect with (x3,y3)=>(x4,y4)\nvar finiteLinesIntersect = function finiteLinesIntersect(x1, y1, x2, y2, x3, y3, x4, y4, infiniteLines) {\n var dx13 = x1 - x3;\n var dx21 = x2 - x1;\n var dx43 = x4 - x3;\n var dy13 = y1 - y3;\n var dy21 = y2 - y1;\n var dy43 = y4 - y3;\n var ua_t = dx43 * dy13 - dy43 * dx13;\n var ub_t = dx21 * dy13 - dy21 * dx13;\n var u_b = dy43 * dx21 - dx43 * dy21;\n if (u_b !== 0) {\n var ua = ua_t / u_b;\n var ub = ub_t / u_b;\n var flptThreshold = 0.001;\n var _min = 0 - flptThreshold;\n var _max = 1 + flptThreshold;\n if (_min <= ua && ua <= _max && _min <= ub && ub <= _max) {\n return [x1 + ua * dx21, y1 + ua * dy21];\n } else {\n if (!infiniteLines) {\n return [];\n } else {\n return [x1 + ua * dx21, y1 + ua * dy21];\n }\n }\n } else {\n if (ua_t === 0 || ub_t === 0) {\n // Parallel, coincident lines. Check if overlap\n\n // Check endpoint of second line\n if (midOfThree(x1, x2, x4) === x4) {\n return [x4, y4];\n }\n\n // Check start point of second line\n if (midOfThree(x1, x2, x3) === x3) {\n return [x3, y3];\n }\n\n // Endpoint of first line\n if (midOfThree(x3, x4, x2) === x2) {\n return [x2, y2];\n }\n return [];\n } else {\n // Parallel, non-coincident\n return [];\n }\n }\n};\n\n// math.polygonIntersectLine( x, y, basePoints, centerX, centerY, width, height, padding )\n// intersect a node polygon (pts transformed)\n//\n// math.polygonIntersectLine( x, y, basePoints, centerX, centerY )\n// intersect the points (no transform)\nvar polygonIntersectLine = function polygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, padding) {\n var intersections = [];\n var intersection;\n var transformedPoints = new Array(basePoints.length);\n var doTransform = true;\n if (width == null) {\n doTransform = false;\n }\n var points;\n if (doTransform) {\n for (var i = 0; i < transformedPoints.length / 2; i++) {\n transformedPoints[i * 2] = basePoints[i * 2] * width + centerX;\n transformedPoints[i * 2 + 1] = basePoints[i * 2 + 1] * height + centerY;\n }\n if (padding > 0) {\n var expandedLineSet = expandPolygon(transformedPoints, -padding);\n points = joinLines(expandedLineSet);\n } else {\n points = transformedPoints;\n }\n } else {\n points = basePoints;\n }\n var currentX, currentY, nextX, nextY;\n for (var _i2 = 0; _i2 < points.length / 2; _i2++) {\n currentX = points[_i2 * 2];\n currentY = points[_i2 * 2 + 1];\n if (_i2 < points.length / 2 - 1) {\n nextX = points[(_i2 + 1) * 2];\n nextY = points[(_i2 + 1) * 2 + 1];\n } else {\n nextX = points[0];\n nextY = points[1];\n }\n intersection = finiteLinesIntersect(x, y, centerX, centerY, currentX, currentY, nextX, nextY);\n if (intersection.length !== 0) {\n intersections.push(intersection[0], intersection[1]);\n }\n }\n return intersections;\n};\nvar roundPolygonIntersectLine = function roundPolygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, padding) {\n var intersections = [];\n var intersection;\n var lines = new Array(basePoints.length);\n var halfW = width / 2;\n var halfH = height / 2;\n var cornerRadius = getRoundPolygonRadius(width, height);\n for (var i = 0; i < basePoints.length / 4; i++) {\n var sourceUv = void 0,\n destUv = void 0;\n if (i === 0) {\n sourceUv = basePoints.length - 2;\n } else {\n sourceUv = i * 4 - 2;\n }\n destUv = i * 4 + 2;\n var px = centerX + halfW * basePoints[i * 4];\n var py = centerY + halfH * basePoints[i * 4 + 1];\n var cosTheta = -basePoints[sourceUv] * basePoints[destUv] - basePoints[sourceUv + 1] * basePoints[destUv + 1];\n var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2);\n var cp0x = px - offset * basePoints[sourceUv];\n var cp0y = py - offset * basePoints[sourceUv + 1];\n var cp1x = px + offset * basePoints[destUv];\n var cp1y = py + offset * basePoints[destUv + 1];\n if (i === 0) {\n lines[basePoints.length - 2] = cp0x;\n lines[basePoints.length - 1] = cp0y;\n } else {\n lines[i * 4 - 2] = cp0x;\n lines[i * 4 - 1] = cp0y;\n }\n lines[i * 4] = cp1x;\n lines[i * 4 + 1] = cp1y;\n var orthx = basePoints[sourceUv + 1];\n var orthy = -basePoints[sourceUv];\n var cosAlpha = orthx * basePoints[destUv] + orthy * basePoints[destUv + 1];\n if (cosAlpha < 0) {\n orthx *= -1;\n orthy *= -1;\n }\n var cx = cp0x + orthx * cornerRadius;\n var cy = cp0y + orthy * cornerRadius;\n intersection = intersectLineCircle(x, y, centerX, centerY, cx, cy, cornerRadius);\n if (intersection.length !== 0) {\n intersections.push(intersection[0], intersection[1]);\n }\n }\n for (var _i3 = 0; _i3 < lines.length / 4; _i3++) {\n intersection = finiteLinesIntersect(x, y, centerX, centerY, lines[_i3 * 4], lines[_i3 * 4 + 1], lines[_i3 * 4 + 2], lines[_i3 * 4 + 3], false);\n if (intersection.length !== 0) {\n intersections.push(intersection[0], intersection[1]);\n }\n }\n if (intersections.length > 2) {\n var lowestIntersection = [intersections[0], intersections[1]];\n var lowestSquaredDistance = Math.pow(lowestIntersection[0] - x, 2) + Math.pow(lowestIntersection[1] - y, 2);\n for (var _i4 = 1; _i4 < intersections.length / 2; _i4++) {\n var squaredDistance = Math.pow(intersections[_i4 * 2] - x, 2) + Math.pow(intersections[_i4 * 2 + 1] - y, 2);\n if (squaredDistance <= lowestSquaredDistance) {\n lowestIntersection[0] = intersections[_i4 * 2];\n lowestIntersection[1] = intersections[_i4 * 2 + 1];\n lowestSquaredDistance = squaredDistance;\n }\n }\n return lowestIntersection;\n }\n return intersections;\n};\nvar shortenIntersection = function shortenIntersection(intersection, offset, amount) {\n var disp = [intersection[0] - offset[0], intersection[1] - offset[1]];\n var length = Math.sqrt(disp[0] * disp[0] + disp[1] * disp[1]);\n var lenRatio = (length - amount) / length;\n if (lenRatio < 0) {\n lenRatio = 0.00001;\n }\n return [offset[0] + lenRatio * disp[0], offset[1] + lenRatio * disp[1]];\n};\nvar generateUnitNgonPointsFitToSquare = function generateUnitNgonPointsFitToSquare(sides, rotationRadians) {\n var points = generateUnitNgonPoints(sides, rotationRadians);\n points = fitPolygonToSquare(points);\n return points;\n};\nvar fitPolygonToSquare = function fitPolygonToSquare(points) {\n var x, y;\n var sides = points.length / 2;\n var minX = Infinity,\n minY = Infinity,\n maxX = -Infinity,\n maxY = -Infinity;\n for (var i = 0; i < sides; i++) {\n x = points[2 * i];\n y = points[2 * i + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n\n // stretch factors\n var sx = 2 / (maxX - minX);\n var sy = 2 / (maxY - minY);\n for (var _i5 = 0; _i5 < sides; _i5++) {\n x = points[2 * _i5] = points[2 * _i5] * sx;\n y = points[2 * _i5 + 1] = points[2 * _i5 + 1] * sy;\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n if (minY < -1) {\n for (var _i6 = 0; _i6 < sides; _i6++) {\n y = points[2 * _i6 + 1] = points[2 * _i6 + 1] + (-1 - minY);\n }\n }\n return points;\n};\nvar generateUnitNgonPoints = function generateUnitNgonPoints(sides, rotationRadians) {\n var increment = 1.0 / sides * 2 * Math.PI;\n var startAngle = sides % 2 === 0 ? Math.PI / 2.0 + increment / 2.0 : Math.PI / 2.0;\n startAngle += rotationRadians;\n var points = new Array(sides * 2);\n var currentAngle;\n for (var i = 0; i < sides; i++) {\n currentAngle = i * increment + startAngle;\n points[2 * i] = Math.cos(currentAngle); // x\n points[2 * i + 1] = Math.sin(-currentAngle); // y\n }\n\n return points;\n};\n\n// Set the default radius, unless half of width or height is smaller than default\nvar getRoundRectangleRadius = function getRoundRectangleRadius(width, height) {\n return Math.min(width / 4, height / 4, 8);\n};\n\n// Set the default radius\nvar getRoundPolygonRadius = function getRoundPolygonRadius(width, height) {\n return Math.min(width / 10, height / 10, 8);\n};\nvar getCutRectangleCornerLength = function getCutRectangleCornerLength() {\n return 8;\n};\nvar bezierPtsToQuadCoeff = function bezierPtsToQuadCoeff(p0, p1, p2) {\n return [p0 - 2 * p1 + p2, 2 * (p1 - p0), p0];\n};\n\n// get curve width, height, and control point position offsets as a percentage of node height / width\nvar getBarrelCurveConstants = function getBarrelCurveConstants(width, height) {\n return {\n heightOffset: Math.min(15, 0.05 * height),\n widthOffset: Math.min(100, 0.25 * width),\n ctrlPtOffsetPct: 0.05\n };\n};\n\nvar pageRankDefaults = defaults$g({\n dampingFactor: 0.8,\n precision: 0.000001,\n iterations: 200,\n weight: function weight(edge) {\n return 1;\n }\n});\nvar elesfn$o = {\n pageRank: function pageRank(options) {\n var _pageRankDefaults = pageRankDefaults(options),\n dampingFactor = _pageRankDefaults.dampingFactor,\n precision = _pageRankDefaults.precision,\n iterations = _pageRankDefaults.iterations,\n weight = _pageRankDefaults.weight;\n var cy = this._private.cy;\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges;\n var numNodes = nodes.length;\n var numNodesSqd = numNodes * numNodes;\n var numEdges = edges.length;\n\n // Construct transposed adjacency matrix\n // First lets have a zeroed matrix of the right size\n // We'll also keep track of the sum of each column\n var matrix = new Array(numNodesSqd);\n var columnSum = new Array(numNodes);\n var additionalProb = (1 - dampingFactor) / numNodes;\n\n // Create null matrix\n for (var i = 0; i < numNodes; i++) {\n for (var j = 0; j < numNodes; j++) {\n var n = i * numNodes + j;\n matrix[n] = 0;\n }\n columnSum[i] = 0;\n }\n\n // Now, process edges\n for (var _i = 0; _i < numEdges; _i++) {\n var edge = edges[_i];\n var srcId = edge.data('source');\n var tgtId = edge.data('target');\n\n // Don't include loops in the matrix\n if (srcId === tgtId) {\n continue;\n }\n var s = nodes.indexOfId(srcId);\n var t = nodes.indexOfId(tgtId);\n var w = weight(edge);\n var _n = t * numNodes + s;\n\n // Update matrix\n matrix[_n] += w;\n\n // Update column sum\n columnSum[s] += w;\n }\n\n // Add additional probability based on damping factor\n // Also, take into account columns that have sum = 0\n var p = 1.0 / numNodes + additionalProb; // Shorthand\n\n // Traverse matrix, column by column\n for (var _j = 0; _j < numNodes; _j++) {\n if (columnSum[_j] === 0) {\n // No 'links' out from node jth, assume equal probability for each possible node\n for (var _i2 = 0; _i2 < numNodes; _i2++) {\n var _n2 = _i2 * numNodes + _j;\n matrix[_n2] = p;\n }\n } else {\n // Node jth has outgoing link, compute normalized probabilities\n for (var _i3 = 0; _i3 < numNodes; _i3++) {\n var _n3 = _i3 * numNodes + _j;\n matrix[_n3] = matrix[_n3] / columnSum[_j] + additionalProb;\n }\n }\n }\n\n // Compute dominant eigenvector using power method\n var eigenvector = new Array(numNodes);\n var temp = new Array(numNodes);\n var previous;\n\n // Start with a vector of all 1's\n // Also, initialize a null vector which will be used as shorthand\n for (var _i4 = 0; _i4 < numNodes; _i4++) {\n eigenvector[_i4] = 1;\n }\n for (var iter = 0; iter < iterations; iter++) {\n // Temp array with all 0's\n for (var _i5 = 0; _i5 < numNodes; _i5++) {\n temp[_i5] = 0;\n }\n\n // Multiply matrix with previous result\n for (var _i6 = 0; _i6 < numNodes; _i6++) {\n for (var _j2 = 0; _j2 < numNodes; _j2++) {\n var _n4 = _i6 * numNodes + _j2;\n temp[_i6] += matrix[_n4] * eigenvector[_j2];\n }\n }\n inPlaceSumNormalize(temp);\n previous = eigenvector;\n eigenvector = temp;\n temp = previous;\n var diff = 0;\n // Compute difference (squared module) of both vectors\n for (var _i7 = 0; _i7 < numNodes; _i7++) {\n var delta = previous[_i7] - eigenvector[_i7];\n diff += delta * delta;\n }\n\n // If difference is less than the desired threshold, stop iterating\n if (diff < precision) {\n break;\n }\n }\n\n // Construct result\n var res = {\n rank: function rank(node) {\n node = cy.collection(node)[0];\n return eigenvector[nodes.indexOf(node)];\n }\n };\n return res;\n } // pageRank\n}; // elesfn\n\nvar defaults$f = defaults$g({\n root: null,\n weight: function weight(edge) {\n return 1;\n },\n directed: false,\n alpha: 0\n});\nvar elesfn$n = {\n degreeCentralityNormalized: function degreeCentralityNormalized(options) {\n options = defaults$f(options);\n var cy = this.cy();\n var nodes = this.nodes();\n var numNodes = nodes.length;\n if (!options.directed) {\n var degrees = {};\n var maxDegree = 0;\n for (var i = 0; i < numNodes; i++) {\n var node = nodes[i];\n\n // add current node to the current options object and call degreeCentrality\n options.root = node;\n var currDegree = this.degreeCentrality(options);\n if (maxDegree < currDegree.degree) {\n maxDegree = currDegree.degree;\n }\n degrees[node.id()] = currDegree.degree;\n }\n return {\n degree: function degree(node) {\n if (maxDegree === 0) {\n return 0;\n }\n if (string(node)) {\n // from is a selector string\n node = cy.filter(node);\n }\n return degrees[node.id()] / maxDegree;\n }\n };\n } else {\n var indegrees = {};\n var outdegrees = {};\n var maxIndegree = 0;\n var maxOutdegree = 0;\n for (var _i = 0; _i < numNodes; _i++) {\n var _node = nodes[_i];\n var id = _node.id();\n\n // add current node to the current options object and call degreeCentrality\n options.root = _node;\n var _currDegree = this.degreeCentrality(options);\n if (maxIndegree < _currDegree.indegree) maxIndegree = _currDegree.indegree;\n if (maxOutdegree < _currDegree.outdegree) maxOutdegree = _currDegree.outdegree;\n indegrees[id] = _currDegree.indegree;\n outdegrees[id] = _currDegree.outdegree;\n }\n return {\n indegree: function indegree(node) {\n if (maxIndegree == 0) {\n return 0;\n }\n if (string(node)) {\n // from is a selector string\n node = cy.filter(node);\n }\n return indegrees[node.id()] / maxIndegree;\n },\n outdegree: function outdegree(node) {\n if (maxOutdegree === 0) {\n return 0;\n }\n if (string(node)) {\n // from is a selector string\n node = cy.filter(node);\n }\n return outdegrees[node.id()] / maxOutdegree;\n }\n };\n }\n },\n // degreeCentralityNormalized\n\n // Implemented from the algorithm in Opsahl's paper\n // \"Node centrality in weighted networks: Generalizing degree and shortest paths\"\n // check the heading 2 \"Degree\"\n degreeCentrality: function degreeCentrality(options) {\n options = defaults$f(options);\n var cy = this.cy();\n var callingEles = this;\n var _options = options,\n root = _options.root,\n weight = _options.weight,\n directed = _options.directed,\n alpha = _options.alpha;\n root = cy.collection(root)[0];\n if (!directed) {\n var connEdges = root.connectedEdges().intersection(callingEles);\n var k = connEdges.length;\n var s = 0;\n\n // Now, sum edge weights\n for (var i = 0; i < connEdges.length; i++) {\n s += weight(connEdges[i]);\n }\n return {\n degree: Math.pow(k, 1 - alpha) * Math.pow(s, alpha)\n };\n } else {\n var edges = root.connectedEdges();\n var incoming = edges.filter(function (edge) {\n return edge.target().same(root) && callingEles.has(edge);\n });\n var outgoing = edges.filter(function (edge) {\n return edge.source().same(root) && callingEles.has(edge);\n });\n var k_in = incoming.length;\n var k_out = outgoing.length;\n var s_in = 0;\n var s_out = 0;\n\n // Now, sum incoming edge weights\n for (var _i2 = 0; _i2 < incoming.length; _i2++) {\n s_in += weight(incoming[_i2]);\n }\n\n // Now, sum outgoing edge weights\n for (var _i3 = 0; _i3 < outgoing.length; _i3++) {\n s_out += weight(outgoing[_i3]);\n }\n return {\n indegree: Math.pow(k_in, 1 - alpha) * Math.pow(s_in, alpha),\n outdegree: Math.pow(k_out, 1 - alpha) * Math.pow(s_out, alpha)\n };\n }\n } // degreeCentrality\n}; // elesfn\n\n// nice, short mathematical alias\nelesfn$n.dc = elesfn$n.degreeCentrality;\nelesfn$n.dcn = elesfn$n.degreeCentralityNormalised = elesfn$n.degreeCentralityNormalized;\n\nvar defaults$e = defaults$g({\n harmonic: true,\n weight: function weight() {\n return 1;\n },\n directed: false,\n root: null\n});\nvar elesfn$m = {\n closenessCentralityNormalized: function closenessCentralityNormalized(options) {\n var _defaults = defaults$e(options),\n harmonic = _defaults.harmonic,\n weight = _defaults.weight,\n directed = _defaults.directed;\n var cy = this.cy();\n var closenesses = {};\n var maxCloseness = 0;\n var nodes = this.nodes();\n var fw = this.floydWarshall({\n weight: weight,\n directed: directed\n });\n\n // Compute closeness for every node and find the maximum closeness\n for (var i = 0; i < nodes.length; i++) {\n var currCloseness = 0;\n var node_i = nodes[i];\n for (var j = 0; j < nodes.length; j++) {\n if (i !== j) {\n var d = fw.distance(node_i, nodes[j]);\n if (harmonic) {\n currCloseness += 1 / d;\n } else {\n currCloseness += d;\n }\n }\n }\n if (!harmonic) {\n currCloseness = 1 / currCloseness;\n }\n if (maxCloseness < currCloseness) {\n maxCloseness = currCloseness;\n }\n closenesses[node_i.id()] = currCloseness;\n }\n return {\n closeness: function closeness(node) {\n if (maxCloseness == 0) {\n return 0;\n }\n if (string(node)) {\n // from is a selector string\n node = cy.filter(node)[0].id();\n } else {\n // from is a node\n node = node.id();\n }\n return closenesses[node] / maxCloseness;\n }\n };\n },\n // Implemented from pseudocode from wikipedia\n closenessCentrality: function closenessCentrality(options) {\n var _defaults2 = defaults$e(options),\n root = _defaults2.root,\n weight = _defaults2.weight,\n directed = _defaults2.directed,\n harmonic = _defaults2.harmonic;\n root = this.filter(root)[0];\n\n // we need distance from this node to every other node\n var dijkstra = this.dijkstra({\n root: root,\n weight: weight,\n directed: directed\n });\n var totalDistance = 0;\n var nodes = this.nodes();\n for (var i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n if (!n.same(root)) {\n var d = dijkstra.distanceTo(n);\n if (harmonic) {\n totalDistance += 1 / d;\n } else {\n totalDistance += d;\n }\n }\n }\n return harmonic ? totalDistance : 1 / totalDistance;\n } // closenessCentrality\n}; // elesfn\n\n// nice, short mathematical alias\nelesfn$m.cc = elesfn$m.closenessCentrality;\nelesfn$m.ccn = elesfn$m.closenessCentralityNormalised = elesfn$m.closenessCentralityNormalized;\n\nvar defaults$d = defaults$g({\n weight: null,\n directed: false\n});\nvar elesfn$l = {\n // Implemented from the algorithm in the paper \"On Variants of Shortest-Path Betweenness Centrality and their Generic Computation\" by Ulrik Brandes\n betweennessCentrality: function betweennessCentrality(options) {\n var _defaults = defaults$d(options),\n directed = _defaults.directed,\n weight = _defaults.weight;\n var weighted = weight != null;\n var cy = this.cy();\n\n // starting\n var V = this.nodes();\n var A = {};\n var _C = {};\n var max = 0;\n var C = {\n set: function set(key, val) {\n _C[key] = val;\n if (val > max) {\n max = val;\n }\n },\n get: function get(key) {\n return _C[key];\n }\n };\n\n // A contains the neighborhoods of every node\n for (var i = 0; i < V.length; i++) {\n var v = V[i];\n var vid = v.id();\n if (directed) {\n A[vid] = v.outgoers().nodes(); // get outgoers of every node\n } else {\n A[vid] = v.openNeighborhood().nodes(); // get neighbors of every node\n }\n\n C.set(vid, 0);\n }\n var _loop = function _loop(s) {\n var sid = V[s].id();\n var S = []; // stack\n var P = {};\n var g = {};\n var d = {};\n var Q = new Heap__default[\"default\"](function (a, b) {\n return d[a] - d[b];\n }); // queue\n\n // init dictionaries\n for (var _i = 0; _i < V.length; _i++) {\n var _vid = V[_i].id();\n P[_vid] = [];\n g[_vid] = 0;\n d[_vid] = Infinity;\n }\n g[sid] = 1; // sigma\n d[sid] = 0; // distance to s\n\n Q.push(sid);\n while (!Q.empty()) {\n var _v = Q.pop();\n S.push(_v);\n if (weighted) {\n for (var j = 0; j < A[_v].length; j++) {\n var w = A[_v][j];\n var vEle = cy.getElementById(_v);\n var edge = void 0;\n if (vEle.edgesTo(w).length > 0) {\n edge = vEle.edgesTo(w)[0];\n } else {\n edge = w.edgesTo(vEle)[0];\n }\n var edgeWeight = weight(edge);\n w = w.id();\n if (d[w] > d[_v] + edgeWeight) {\n d[w] = d[_v] + edgeWeight;\n if (Q.nodes.indexOf(w) < 0) {\n //if w is not in Q\n Q.push(w);\n } else {\n // update position if w is in Q\n Q.updateItem(w);\n }\n g[w] = 0;\n P[w] = [];\n }\n if (d[w] == d[_v] + edgeWeight) {\n g[w] = g[w] + g[_v];\n P[w].push(_v);\n }\n }\n } else {\n for (var _j = 0; _j < A[_v].length; _j++) {\n var _w = A[_v][_j].id();\n if (d[_w] == Infinity) {\n Q.push(_w);\n d[_w] = d[_v] + 1;\n }\n if (d[_w] == d[_v] + 1) {\n g[_w] = g[_w] + g[_v];\n P[_w].push(_v);\n }\n }\n }\n }\n var e = {};\n for (var _i2 = 0; _i2 < V.length; _i2++) {\n e[V[_i2].id()] = 0;\n }\n while (S.length > 0) {\n var _w2 = S.pop();\n for (var _j2 = 0; _j2 < P[_w2].length; _j2++) {\n var _v2 = P[_w2][_j2];\n e[_v2] = e[_v2] + g[_v2] / g[_w2] * (1 + e[_w2]);\n }\n if (_w2 != V[s].id()) {\n C.set(_w2, C.get(_w2) + e[_w2]);\n }\n }\n };\n for (var s = 0; s < V.length; s++) {\n _loop(s);\n }\n var ret = {\n betweenness: function betweenness(node) {\n var id = cy.collection(node).id();\n return C.get(id);\n },\n betweennessNormalized: function betweennessNormalized(node) {\n if (max == 0) {\n return 0;\n }\n var id = cy.collection(node).id();\n return C.get(id) / max;\n }\n };\n\n // alias\n ret.betweennessNormalised = ret.betweennessNormalized;\n return ret;\n } // betweennessCentrality\n}; // elesfn\n\n// nice, short mathematical alias\nelesfn$l.bc = elesfn$l.betweennessCentrality;\n\n// Implemented by Zoe Xi @zoexi for GSOC 2016\n\n/* eslint-disable no-unused-vars */\nvar defaults$c = defaults$g({\n expandFactor: 2,\n // affects time of computation and cluster granularity to some extent: M * M\n inflateFactor: 2,\n // affects cluster granularity (the greater the value, the more clusters): M(i,j) / E(j)\n multFactor: 1,\n // optional self loops for each node. Use a neutral value to improve cluster computations.\n maxIterations: 20,\n // maximum number of iterations of the MCL algorithm in a single run\n attributes: [\n // attributes/features used to group nodes, ie. similarity values between nodes\n function (edge) {\n return 1;\n }]\n});\n/* eslint-enable */\n\nvar setOptions$3 = function setOptions(options) {\n return defaults$c(options);\n};\n/* eslint-enable */\n\nvar getSimilarity$1 = function getSimilarity(edge, attributes) {\n var total = 0;\n for (var i = 0; i < attributes.length; i++) {\n total += attributes[i](edge);\n }\n return total;\n};\nvar addLoops = function addLoops(M, n, val) {\n for (var i = 0; i < n; i++) {\n M[i * n + i] = val;\n }\n};\nvar normalize = function normalize(M, n) {\n var sum;\n for (var col = 0; col < n; col++) {\n sum = 0;\n for (var row = 0; row < n; row++) {\n sum += M[row * n + col];\n }\n for (var _row = 0; _row < n; _row++) {\n M[_row * n + col] = M[_row * n + col] / sum;\n }\n }\n};\n\n// TODO: blocked matrix multiplication?\nvar mmult = function mmult(A, B, n) {\n var C = new Array(n * n);\n for (var i = 0; i < n; i++) {\n for (var j = 0; j < n; j++) {\n C[i * n + j] = 0;\n }\n for (var k = 0; k < n; k++) {\n for (var _j = 0; _j < n; _j++) {\n C[i * n + _j] += A[i * n + k] * B[k * n + _j];\n }\n }\n }\n return C;\n};\nvar expand = function expand(M, n, expandFactor /** power **/) {\n var _M = M.slice(0);\n for (var p = 1; p < expandFactor; p++) {\n M = mmult(M, _M, n);\n }\n return M;\n};\nvar inflate = function inflate(M, n, inflateFactor /** r **/) {\n var _M = new Array(n * n);\n\n // M(i,j) ^ inflatePower\n for (var i = 0; i < n * n; i++) {\n _M[i] = Math.pow(M[i], inflateFactor);\n }\n normalize(_M, n);\n return _M;\n};\nvar hasConverged = function hasConverged(M, _M, n2, roundFactor) {\n // Check that both matrices have the same elements (i,j)\n for (var i = 0; i < n2; i++) {\n var v1 = Math.round(M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor); // truncate to 'roundFactor' decimal places\n var v2 = Math.round(_M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor);\n if (v1 !== v2) {\n return false;\n }\n }\n return true;\n};\nvar assign$2 = function assign(M, n, nodes, cy) {\n var clusters = [];\n for (var i = 0; i < n; i++) {\n var cluster = [];\n for (var j = 0; j < n; j++) {\n // Row-wise attractors and elements that they attract belong in same cluster\n if (Math.round(M[i * n + j] * 1000) / 1000 > 0) {\n cluster.push(nodes[j]);\n }\n }\n if (cluster.length !== 0) {\n clusters.push(cy.collection(cluster));\n }\n }\n return clusters;\n};\nvar isDuplicate = function isDuplicate(c1, c2) {\n for (var i = 0; i < c1.length; i++) {\n if (!c2[i] || c1[i].id() !== c2[i].id()) {\n return false;\n }\n }\n return true;\n};\nvar removeDuplicates = function removeDuplicates(clusters) {\n for (var i = 0; i < clusters.length; i++) {\n for (var j = 0; j < clusters.length; j++) {\n if (i != j && isDuplicate(clusters[i], clusters[j])) {\n clusters.splice(j, 1);\n }\n }\n }\n return clusters;\n};\nvar markovClustering = function markovClustering(options) {\n var nodes = this.nodes();\n var edges = this.edges();\n var cy = this.cy();\n\n // Set parameters of algorithm:\n var opts = setOptions$3(options);\n\n // Map each node to its position in node array\n var id2position = {};\n for (var i = 0; i < nodes.length; i++) {\n id2position[nodes[i].id()] = i;\n }\n\n // Generate stochastic matrix M from input graph G (should be symmetric/undirected)\n var n = nodes.length,\n n2 = n * n;\n var M = new Array(n2),\n _M;\n for (var _i = 0; _i < n2; _i++) {\n M[_i] = 0;\n }\n for (var e = 0; e < edges.length; e++) {\n var edge = edges[e];\n var _i2 = id2position[edge.source().id()];\n var j = id2position[edge.target().id()];\n var sim = getSimilarity$1(edge, opts.attributes);\n M[_i2 * n + j] += sim; // G should be symmetric and undirected\n M[j * n + _i2] += sim;\n }\n\n // Begin Markov cluster algorithm\n\n // Step 1: Add self loops to each node, ie. add multFactor to matrix diagonal\n addLoops(M, n, opts.multFactor);\n\n // Step 2: M = normalize( M );\n normalize(M, n);\n var isStillMoving = true;\n var iterations = 0;\n while (isStillMoving && iterations < opts.maxIterations) {\n isStillMoving = false;\n\n // Step 3:\n _M = expand(M, n, opts.expandFactor);\n\n // Step 4:\n M = inflate(_M, n, opts.inflateFactor);\n\n // Step 5: check to see if ~steady state has been reached\n if (!hasConverged(M, _M, n2, 4)) {\n isStillMoving = true;\n }\n iterations++;\n }\n\n // Build clusters from matrix\n var clusters = assign$2(M, n, nodes, cy);\n\n // Remove duplicate clusters due to symmetry of graph and M matrix\n clusters = removeDuplicates(clusters);\n return clusters;\n};\nvar markovClustering$1 = {\n markovClustering: markovClustering,\n mcl: markovClustering\n};\n\n// Common distance metrics for clustering algorithms\nvar identity = function identity(x) {\n return x;\n};\nvar absDiff = function absDiff(p, q) {\n return Math.abs(q - p);\n};\nvar addAbsDiff = function addAbsDiff(total, p, q) {\n return total + absDiff(p, q);\n};\nvar addSquaredDiff = function addSquaredDiff(total, p, q) {\n return total + Math.pow(q - p, 2);\n};\nvar sqrt = function sqrt(x) {\n return Math.sqrt(x);\n};\nvar maxAbsDiff = function maxAbsDiff(currentMax, p, q) {\n return Math.max(currentMax, absDiff(p, q));\n};\nvar getDistance = function getDistance(length, getP, getQ, init, visit) {\n var post = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : identity;\n var ret = init;\n var p, q;\n for (var dim = 0; dim < length; dim++) {\n p = getP(dim);\n q = getQ(dim);\n ret = visit(ret, p, q);\n }\n return post(ret);\n};\nvar distances = {\n euclidean: function euclidean(length, getP, getQ) {\n if (length >= 2) {\n return getDistance(length, getP, getQ, 0, addSquaredDiff, sqrt);\n } else {\n // for single attr case, more efficient to avoid sqrt\n return getDistance(length, getP, getQ, 0, addAbsDiff);\n }\n },\n squaredEuclidean: function squaredEuclidean(length, getP, getQ) {\n return getDistance(length, getP, getQ, 0, addSquaredDiff);\n },\n manhattan: function manhattan(length, getP, getQ) {\n return getDistance(length, getP, getQ, 0, addAbsDiff);\n },\n max: function max(length, getP, getQ) {\n return getDistance(length, getP, getQ, -Infinity, maxAbsDiff);\n }\n};\n\n// in case the user accidentally doesn't use camel case\ndistances['squared-euclidean'] = distances['squaredEuclidean'];\ndistances['squaredeuclidean'] = distances['squaredEuclidean'];\nfunction clusteringDistance (method, length, getP, getQ, nodeP, nodeQ) {\n var impl;\n if (fn$6(method)) {\n impl = method;\n } else {\n impl = distances[method] || distances.euclidean;\n }\n if (length === 0 && fn$6(method)) {\n return impl(nodeP, nodeQ);\n } else {\n return impl(length, getP, getQ, nodeP, nodeQ);\n }\n}\n\nvar defaults$b = defaults$g({\n k: 2,\n m: 2,\n sensitivityThreshold: 0.0001,\n distance: 'euclidean',\n maxIterations: 10,\n attributes: [],\n testMode: false,\n testCentroids: null\n});\nvar setOptions$2 = function setOptions(options) {\n return defaults$b(options);\n};\n\nvar getDist = function getDist(type, node, centroid, attributes, mode) {\n var noNodeP = mode !== 'kMedoids';\n var getP = noNodeP ? function (i) {\n return centroid[i];\n } : function (i) {\n return attributes[i](centroid);\n };\n var getQ = function getQ(i) {\n return attributes[i](node);\n };\n var nodeP = centroid;\n var nodeQ = node;\n return clusteringDistance(type, attributes.length, getP, getQ, nodeP, nodeQ);\n};\nvar randomCentroids = function randomCentroids(nodes, k, attributes) {\n var ndim = attributes.length;\n var min = new Array(ndim);\n var max = new Array(ndim);\n var centroids = new Array(k);\n var centroid = null;\n\n // Find min, max values for each attribute dimension\n for (var i = 0; i < ndim; i++) {\n min[i] = nodes.min(attributes[i]).value;\n max[i] = nodes.max(attributes[i]).value;\n }\n\n // Build k centroids, each represented as an n-dim feature vector\n for (var c = 0; c < k; c++) {\n centroid = [];\n for (var _i = 0; _i < ndim; _i++) {\n centroid[_i] = Math.random() * (max[_i] - min[_i]) + min[_i]; // random initial value\n }\n\n centroids[c] = centroid;\n }\n return centroids;\n};\nvar classify = function classify(node, centroids, distance, attributes, type) {\n var min = Infinity;\n var index = 0;\n for (var i = 0; i < centroids.length; i++) {\n var dist = getDist(distance, node, centroids[i], attributes, type);\n if (dist < min) {\n min = dist;\n index = i;\n }\n }\n return index;\n};\nvar buildCluster = function buildCluster(centroid, nodes, assignment) {\n var cluster = [];\n var node = null;\n for (var n = 0; n < nodes.length; n++) {\n node = nodes[n];\n if (assignment[node.id()] === centroid) {\n //console.log(\"Node \" + node.id() + \" is associated with medoid #: \" + m);\n cluster.push(node);\n }\n }\n return cluster;\n};\nvar haveValuesConverged = function haveValuesConverged(v1, v2, sensitivityThreshold) {\n return Math.abs(v2 - v1) <= sensitivityThreshold;\n};\nvar haveMatricesConverged = function haveMatricesConverged(v1, v2, sensitivityThreshold) {\n for (var i = 0; i < v1.length; i++) {\n for (var j = 0; j < v1[i].length; j++) {\n var diff = Math.abs(v1[i][j] - v2[i][j]);\n if (diff > sensitivityThreshold) {\n return false;\n }\n }\n }\n return true;\n};\nvar seenBefore = function seenBefore(node, medoids, n) {\n for (var i = 0; i < n; i++) {\n if (node === medoids[i]) return true;\n }\n return false;\n};\nvar randomMedoids = function randomMedoids(nodes, k) {\n var medoids = new Array(k);\n\n // For small data sets, the probability of medoid conflict is greater,\n // so we need to check to see if we've already seen or chose this node before.\n if (nodes.length < 50) {\n // Randomly select k medoids from the n nodes\n for (var i = 0; i < k; i++) {\n var node = nodes[Math.floor(Math.random() * nodes.length)];\n\n // If we've already chosen this node to be a medoid, don't choose it again (for small data sets).\n // Instead choose a different random node.\n while (seenBefore(node, medoids, i)) {\n node = nodes[Math.floor(Math.random() * nodes.length)];\n }\n medoids[i] = node;\n }\n } else {\n // Relatively large data set, so pretty safe to not check and just select random nodes\n for (var _i2 = 0; _i2 < k; _i2++) {\n medoids[_i2] = nodes[Math.floor(Math.random() * nodes.length)];\n }\n }\n return medoids;\n};\nvar findCost = function findCost(potentialNewMedoid, cluster, attributes) {\n var cost = 0;\n for (var n = 0; n < cluster.length; n++) {\n cost += getDist('manhattan', cluster[n], potentialNewMedoid, attributes, 'kMedoids');\n }\n return cost;\n};\nvar kMeans = function kMeans(options) {\n var cy = this.cy();\n var nodes = this.nodes();\n var node = null;\n\n // Set parameters of algorithm: # of clusters, distance metric, etc.\n var opts = setOptions$2(options);\n\n // Begin k-means algorithm\n var clusters = new Array(opts.k);\n var assignment = {};\n var centroids;\n\n // Step 1: Initialize centroid positions\n if (opts.testMode) {\n if (typeof opts.testCentroids === 'number') {\n // TODO: implement a seeded random number generator.\n opts.testCentroids;\n centroids = randomCentroids(nodes, opts.k, opts.attributes);\n } else if (_typeof(opts.testCentroids) === 'object') {\n centroids = opts.testCentroids;\n } else {\n centroids = randomCentroids(nodes, opts.k, opts.attributes);\n }\n } else {\n centroids = randomCentroids(nodes, opts.k, opts.attributes);\n }\n var isStillMoving = true;\n var iterations = 0;\n while (isStillMoving && iterations < opts.maxIterations) {\n // Step 2: Assign nodes to the nearest centroid\n for (var n = 0; n < nodes.length; n++) {\n node = nodes[n];\n // Determine which cluster this node belongs to: node id => cluster #\n assignment[node.id()] = classify(node, centroids, opts.distance, opts.attributes, 'kMeans');\n }\n\n // Step 3: For each of the k clusters, update its centroid\n isStillMoving = false;\n for (var c = 0; c < opts.k; c++) {\n // Get all nodes that belong to this cluster\n var cluster = buildCluster(c, nodes, assignment);\n if (cluster.length === 0) {\n // If cluster is empty, break out early & move to next cluster\n continue;\n }\n\n // Update centroids by calculating avg of all nodes within the cluster.\n var ndim = opts.attributes.length;\n var centroid = centroids[c]; // [ dim_1, dim_2, dim_3, ... , dim_n ]\n var newCentroid = new Array(ndim);\n var sum = new Array(ndim);\n for (var d = 0; d < ndim; d++) {\n sum[d] = 0.0;\n for (var i = 0; i < cluster.length; i++) {\n node = cluster[i];\n sum[d] += opts.attributes[d](node);\n }\n newCentroid[d] = sum[d] / cluster.length;\n\n // Check to see if algorithm has converged, i.e. when centroids no longer change\n if (!haveValuesConverged(newCentroid[d], centroid[d], opts.sensitivityThreshold)) {\n isStillMoving = true;\n }\n }\n centroids[c] = newCentroid;\n clusters[c] = cy.collection(cluster);\n }\n iterations++;\n }\n return clusters;\n};\nvar kMedoids = function kMedoids(options) {\n var cy = this.cy();\n var nodes = this.nodes();\n var node = null;\n var opts = setOptions$2(options);\n\n // Begin k-medoids algorithm\n var clusters = new Array(opts.k);\n var medoids;\n var assignment = {};\n var curCost;\n var minCosts = new Array(opts.k); // minimum cost configuration for each cluster\n\n // Step 1: Initialize k medoids\n if (opts.testMode) {\n if (typeof opts.testCentroids === 'number') ; else if (_typeof(opts.testCentroids) === 'object') {\n medoids = opts.testCentroids;\n } else {\n medoids = randomMedoids(nodes, opts.k);\n }\n } else {\n medoids = randomMedoids(nodes, opts.k);\n }\n var isStillMoving = true;\n var iterations = 0;\n while (isStillMoving && iterations < opts.maxIterations) {\n // Step 2: Assign nodes to the nearest medoid\n for (var n = 0; n < nodes.length; n++) {\n node = nodes[n];\n // Determine which cluster this node belongs to: node id => cluster #\n assignment[node.id()] = classify(node, medoids, opts.distance, opts.attributes, 'kMedoids');\n }\n isStillMoving = false;\n // Step 3: For each medoid m, and for each node associated with mediod m,\n // select the node with the lowest configuration cost as new medoid.\n for (var m = 0; m < medoids.length; m++) {\n // Get all nodes that belong to this medoid\n var cluster = buildCluster(m, nodes, assignment);\n if (cluster.length === 0) {\n // If cluster is empty, break out early & move to next cluster\n continue;\n }\n minCosts[m] = findCost(medoids[m], cluster, opts.attributes); // original cost\n\n // Select different medoid if its configuration has the lowest cost\n for (var _n = 0; _n < cluster.length; _n++) {\n curCost = findCost(cluster[_n], cluster, opts.attributes);\n if (curCost < minCosts[m]) {\n minCosts[m] = curCost;\n medoids[m] = cluster[_n];\n isStillMoving = true;\n }\n }\n clusters[m] = cy.collection(cluster);\n }\n iterations++;\n }\n return clusters;\n};\nvar updateCentroids = function updateCentroids(centroids, nodes, U, weight, opts) {\n var numerator, denominator;\n for (var n = 0; n < nodes.length; n++) {\n for (var c = 0; c < centroids.length; c++) {\n weight[n][c] = Math.pow(U[n][c], opts.m);\n }\n }\n for (var _c = 0; _c < centroids.length; _c++) {\n for (var dim = 0; dim < opts.attributes.length; dim++) {\n numerator = 0;\n denominator = 0;\n for (var _n2 = 0; _n2 < nodes.length; _n2++) {\n numerator += weight[_n2][_c] * opts.attributes[dim](nodes[_n2]);\n denominator += weight[_n2][_c];\n }\n centroids[_c][dim] = numerator / denominator;\n }\n }\n};\nvar updateMembership = function updateMembership(U, _U, centroids, nodes, opts) {\n // Save previous step\n for (var i = 0; i < U.length; i++) {\n _U[i] = U[i].slice();\n }\n var sum, numerator, denominator;\n var pow = 2 / (opts.m - 1);\n for (var c = 0; c < centroids.length; c++) {\n for (var n = 0; n < nodes.length; n++) {\n sum = 0;\n for (var k = 0; k < centroids.length; k++) {\n // against all other centroids\n numerator = getDist(opts.distance, nodes[n], centroids[c], opts.attributes, 'cmeans');\n denominator = getDist(opts.distance, nodes[n], centroids[k], opts.attributes, 'cmeans');\n sum += Math.pow(numerator / denominator, pow);\n }\n U[n][c] = 1 / sum;\n }\n }\n};\nvar assign$1 = function assign(nodes, U, opts, cy) {\n var clusters = new Array(opts.k);\n for (var c = 0; c < clusters.length; c++) {\n clusters[c] = [];\n }\n var max;\n var index;\n for (var n = 0; n < U.length; n++) {\n // for each node (U is N x C matrix)\n max = -Infinity;\n index = -1;\n // Determine which cluster the node is most likely to belong in\n for (var _c2 = 0; _c2 < U[0].length; _c2++) {\n if (U[n][_c2] > max) {\n max = U[n][_c2];\n index = _c2;\n }\n }\n clusters[index].push(nodes[n]);\n }\n\n // Turn every array into a collection of nodes\n for (var _c3 = 0; _c3 < clusters.length; _c3++) {\n clusters[_c3] = cy.collection(clusters[_c3]);\n }\n return clusters;\n};\nvar fuzzyCMeans = function fuzzyCMeans(options) {\n var cy = this.cy();\n var nodes = this.nodes();\n var opts = setOptions$2(options);\n\n // Begin fuzzy c-means algorithm\n var clusters;\n var centroids;\n var U;\n var _U;\n var weight;\n\n // Step 1: Initialize letiables.\n _U = new Array(nodes.length);\n for (var i = 0; i < nodes.length; i++) {\n // N x C matrix\n _U[i] = new Array(opts.k);\n }\n U = new Array(nodes.length);\n for (var _i3 = 0; _i3 < nodes.length; _i3++) {\n // N x C matrix\n U[_i3] = new Array(opts.k);\n }\n for (var _i4 = 0; _i4 < nodes.length; _i4++) {\n var total = 0;\n for (var j = 0; j < opts.k; j++) {\n U[_i4][j] = Math.random();\n total += U[_i4][j];\n }\n for (var _j = 0; _j < opts.k; _j++) {\n U[_i4][_j] = U[_i4][_j] / total;\n }\n }\n centroids = new Array(opts.k);\n for (var _i5 = 0; _i5 < opts.k; _i5++) {\n centroids[_i5] = new Array(opts.attributes.length);\n }\n weight = new Array(nodes.length);\n for (var _i6 = 0; _i6 < nodes.length; _i6++) {\n // N x C matrix\n weight[_i6] = new Array(opts.k);\n }\n // end init FCM\n\n var isStillMoving = true;\n var iterations = 0;\n while (isStillMoving && iterations < opts.maxIterations) {\n isStillMoving = false;\n\n // Step 2: Calculate the centroids for each step.\n updateCentroids(centroids, nodes, U, weight, opts);\n\n // Step 3: Update the partition matrix U.\n updateMembership(U, _U, centroids, nodes, opts);\n\n // Step 4: Check for convergence.\n if (!haveMatricesConverged(U, _U, opts.sensitivityThreshold)) {\n isStillMoving = true;\n }\n iterations++;\n }\n\n // Assign nodes to clusters with highest probability.\n clusters = assign$1(nodes, U, opts, cy);\n return {\n clusters: clusters,\n degreeOfMembership: U\n };\n};\nvar kClustering = {\n kMeans: kMeans,\n kMedoids: kMedoids,\n fuzzyCMeans: fuzzyCMeans,\n fcm: fuzzyCMeans\n};\n\n// Implemented by Zoe Xi @zoexi for GSOC 2016\nvar defaults$a = defaults$g({\n distance: 'euclidean',\n // distance metric to compare nodes\n linkage: 'min',\n // linkage criterion : how to determine the distance between clusters of nodes\n mode: 'threshold',\n // mode:'threshold' => clusters must be threshold distance apart\n threshold: Infinity,\n // the distance threshold\n // mode:'dendrogram' => the nodes are organised as leaves in a tree (siblings are close), merging makes clusters\n addDendrogram: false,\n // whether to add the dendrogram to the graph for viz\n dendrogramDepth: 0,\n // depth at which dendrogram branches are merged into the returned clusters\n attributes: [] // array of attr functions\n});\n\nvar linkageAliases = {\n 'single': 'min',\n 'complete': 'max'\n};\nvar setOptions$1 = function setOptions(options) {\n var opts = defaults$a(options);\n var preferredAlias = linkageAliases[opts.linkage];\n if (preferredAlias != null) {\n opts.linkage = preferredAlias;\n }\n return opts;\n};\nvar mergeClosest = function mergeClosest(clusters, index, dists, mins, opts) {\n // Find two closest clusters from cached mins\n var minKey = 0;\n var min = Infinity;\n var dist;\n var attrs = opts.attributes;\n var getDist = function getDist(n1, n2) {\n return clusteringDistance(opts.distance, attrs.length, function (i) {\n return attrs[i](n1);\n }, function (i) {\n return attrs[i](n2);\n }, n1, n2);\n };\n for (var i = 0; i < clusters.length; i++) {\n var key = clusters[i].key;\n var _dist = dists[key][mins[key]];\n if (_dist < min) {\n minKey = key;\n min = _dist;\n }\n }\n if (opts.mode === 'threshold' && min >= opts.threshold || opts.mode === 'dendrogram' && clusters.length === 1) {\n return false;\n }\n var c1 = index[minKey];\n var c2 = index[mins[minKey]];\n var merged;\n\n // Merge two closest clusters\n if (opts.mode === 'dendrogram') {\n merged = {\n left: c1,\n right: c2,\n key: c1.key\n };\n } else {\n merged = {\n value: c1.value.concat(c2.value),\n key: c1.key\n };\n }\n clusters[c1.index] = merged;\n clusters.splice(c2.index, 1);\n index[c1.key] = merged;\n\n // Update distances with new merged cluster\n for (var _i = 0; _i < clusters.length; _i++) {\n var cur = clusters[_i];\n if (c1.key === cur.key) {\n dist = Infinity;\n } else if (opts.linkage === 'min') {\n dist = dists[c1.key][cur.key];\n if (dists[c1.key][cur.key] > dists[c2.key][cur.key]) {\n dist = dists[c2.key][cur.key];\n }\n } else if (opts.linkage === 'max') {\n dist = dists[c1.key][cur.key];\n if (dists[c1.key][cur.key] < dists[c2.key][cur.key]) {\n dist = dists[c2.key][cur.key];\n }\n } else if (opts.linkage === 'mean') {\n dist = (dists[c1.key][cur.key] * c1.size + dists[c2.key][cur.key] * c2.size) / (c1.size + c2.size);\n } else {\n if (opts.mode === 'dendrogram') dist = getDist(cur.value, c1.value);else dist = getDist(cur.value[0], c1.value[0]);\n }\n dists[c1.key][cur.key] = dists[cur.key][c1.key] = dist; // distance matrix is symmetric\n }\n\n // Update cached mins\n for (var _i2 = 0; _i2 < clusters.length; _i2++) {\n var key1 = clusters[_i2].key;\n if (mins[key1] === c1.key || mins[key1] === c2.key) {\n var _min = key1;\n for (var j = 0; j < clusters.length; j++) {\n var key2 = clusters[j].key;\n if (dists[key1][key2] < dists[key1][_min]) {\n _min = key2;\n }\n }\n mins[key1] = _min;\n }\n clusters[_i2].index = _i2;\n }\n\n // Clean up meta data used for clustering\n c1.key = c2.key = c1.index = c2.index = null;\n return true;\n};\nvar getAllChildren = function getAllChildren(root, arr, cy) {\n if (!root) return;\n if (root.value) {\n arr.push(root.value);\n } else {\n if (root.left) getAllChildren(root.left, arr);\n if (root.right) getAllChildren(root.right, arr);\n }\n};\nvar buildDendrogram = function buildDendrogram(root, cy) {\n if (!root) return '';\n if (root.left && root.right) {\n var leftStr = buildDendrogram(root.left, cy);\n var rightStr = buildDendrogram(root.right, cy);\n var node = cy.add({\n group: 'nodes',\n data: {\n id: leftStr + ',' + rightStr\n }\n });\n cy.add({\n group: 'edges',\n data: {\n source: leftStr,\n target: node.id()\n }\n });\n cy.add({\n group: 'edges',\n data: {\n source: rightStr,\n target: node.id()\n }\n });\n return node.id();\n } else if (root.value) {\n return root.value.id();\n }\n};\nvar buildClustersFromTree = function buildClustersFromTree(root, k, cy) {\n if (!root) return [];\n var left = [],\n right = [],\n leaves = [];\n if (k === 0) {\n // don't cut tree, simply return all nodes as 1 single cluster\n if (root.left) getAllChildren(root.left, left);\n if (root.right) getAllChildren(root.right, right);\n leaves = left.concat(right);\n return [cy.collection(leaves)];\n } else if (k === 1) {\n // cut at root\n\n if (root.value) {\n // leaf node\n return [cy.collection(root.value)];\n } else {\n if (root.left) getAllChildren(root.left, left);\n if (root.right) getAllChildren(root.right, right);\n return [cy.collection(left), cy.collection(right)];\n }\n } else {\n if (root.value) {\n return [cy.collection(root.value)];\n } else {\n if (root.left) left = buildClustersFromTree(root.left, k - 1, cy);\n if (root.right) right = buildClustersFromTree(root.right, k - 1, cy);\n return left.concat(right);\n }\n }\n};\n\nvar hierarchicalClustering = function hierarchicalClustering(options) {\n var cy = this.cy();\n var nodes = this.nodes();\n\n // Set parameters of algorithm: linkage type, distance metric, etc.\n var opts = setOptions$1(options);\n var attrs = opts.attributes;\n var getDist = function getDist(n1, n2) {\n return clusteringDistance(opts.distance, attrs.length, function (i) {\n return attrs[i](n1);\n }, function (i) {\n return attrs[i](n2);\n }, n1, n2);\n };\n\n // Begin hierarchical algorithm\n var clusters = [];\n var dists = []; // distances between each pair of clusters\n var mins = []; // closest cluster for each cluster\n var index = []; // hash of all clusters by key\n\n // In agglomerative (bottom-up) clustering, each node starts as its own cluster\n for (var n = 0; n < nodes.length; n++) {\n var cluster = {\n value: opts.mode === 'dendrogram' ? nodes[n] : [nodes[n]],\n key: n,\n index: n\n };\n clusters[n] = cluster;\n index[n] = cluster;\n dists[n] = [];\n mins[n] = 0;\n }\n\n // Calculate the distance between each pair of clusters\n for (var i = 0; i < clusters.length; i++) {\n for (var j = 0; j <= i; j++) {\n var dist = void 0;\n if (opts.mode === 'dendrogram') {\n // modes store cluster values differently\n dist = i === j ? Infinity : getDist(clusters[i].value, clusters[j].value);\n } else {\n dist = i === j ? Infinity : getDist(clusters[i].value[0], clusters[j].value[0]);\n }\n dists[i][j] = dist;\n dists[j][i] = dist;\n if (dist < dists[i][mins[i]]) {\n mins[i] = j; // Cache mins: closest cluster to cluster i is cluster j\n }\n }\n }\n\n // Find the closest pair of clusters and merge them into a single cluster.\n // Update distances between new cluster and each of the old clusters, and loop until threshold reached.\n var merged = mergeClosest(clusters, index, dists, mins, opts);\n while (merged) {\n merged = mergeClosest(clusters, index, dists, mins, opts);\n }\n var retClusters;\n\n // Dendrogram mode builds the hierarchy and adds intermediary nodes + edges\n // in addition to returning the clusters.\n if (opts.mode === 'dendrogram') {\n retClusters = buildClustersFromTree(clusters[0], opts.dendrogramDepth, cy);\n if (opts.addDendrogram) buildDendrogram(clusters[0], cy);\n } else {\n // Regular mode simply returns the clusters\n\n retClusters = new Array(clusters.length);\n clusters.forEach(function (cluster, i) {\n // Clean up meta data used for clustering\n cluster.key = cluster.index = null;\n retClusters[i] = cy.collection(cluster.value);\n });\n }\n return retClusters;\n};\nvar hierarchicalClustering$1 = {\n hierarchicalClustering: hierarchicalClustering,\n hca: hierarchicalClustering\n};\n\n// Implemented by Zoe Xi @zoexi for GSOC 2016\nvar defaults$9 = defaults$g({\n distance: 'euclidean',\n // distance metric to compare attributes between two nodes\n preference: 'median',\n // suitability of a data point to serve as an exemplar\n damping: 0.8,\n // damping factor between [0.5, 1)\n maxIterations: 1000,\n // max number of iterations to run\n minIterations: 100,\n // min number of iterations to run in order for clustering to stop\n attributes: [// functions to quantify the similarity between any two points\n // e.g. node => node.data('weight')\n ]\n});\nvar setOptions = function setOptions(options) {\n var dmp = options.damping;\n var pref = options.preference;\n if (!(0.5 <= dmp && dmp < 1)) {\n error(\"Damping must range on [0.5, 1). Got: \".concat(dmp));\n }\n var validPrefs = ['median', 'mean', 'min', 'max'];\n if (!(validPrefs.some(function (v) {\n return v === pref;\n }) || number$1(pref))) {\n error(\"Preference must be one of [\".concat(validPrefs.map(function (p) {\n return \"'\".concat(p, \"'\");\n }).join(', '), \"] or a number. Got: \").concat(pref));\n }\n return defaults$9(options);\n};\n\nvar getSimilarity = function getSimilarity(type, n1, n2, attributes) {\n var attr = function attr(n, i) {\n return attributes[i](n);\n };\n\n // nb negative because similarity should have an inverse relationship to distance\n return -clusteringDistance(type, attributes.length, function (i) {\n return attr(n1, i);\n }, function (i) {\n return attr(n2, i);\n }, n1, n2);\n};\nvar getPreference = function getPreference(S, preference) {\n // larger preference = greater # of clusters\n var p = null;\n if (preference === 'median') {\n p = median(S);\n } else if (preference === 'mean') {\n p = mean(S);\n } else if (preference === 'min') {\n p = min(S);\n } else if (preference === 'max') {\n p = max(S);\n } else {\n // Custom preference number, as set by user\n p = preference;\n }\n return p;\n};\nvar findExemplars = function findExemplars(n, R, A) {\n var indices = [];\n for (var i = 0; i < n; i++) {\n if (R[i * n + i] + A[i * n + i] > 0) {\n indices.push(i);\n }\n }\n return indices;\n};\nvar assignClusters = function assignClusters(n, S, exemplars) {\n var clusters = [];\n for (var i = 0; i < n; i++) {\n var index = -1;\n var max = -Infinity;\n for (var ei = 0; ei < exemplars.length; ei++) {\n var e = exemplars[ei];\n if (S[i * n + e] > max) {\n index = e;\n max = S[i * n + e];\n }\n }\n if (index > 0) {\n clusters.push(index);\n }\n }\n for (var _ei = 0; _ei < exemplars.length; _ei++) {\n clusters[exemplars[_ei]] = exemplars[_ei];\n }\n return clusters;\n};\nvar assign = function assign(n, S, exemplars) {\n var clusters = assignClusters(n, S, exemplars);\n for (var ei = 0; ei < exemplars.length; ei++) {\n var ii = [];\n for (var c = 0; c < clusters.length; c++) {\n if (clusters[c] === exemplars[ei]) {\n ii.push(c);\n }\n }\n var maxI = -1;\n var maxSum = -Infinity;\n for (var i = 0; i < ii.length; i++) {\n var sum = 0;\n for (var j = 0; j < ii.length; j++) {\n sum += S[ii[j] * n + ii[i]];\n }\n if (sum > maxSum) {\n maxI = i;\n maxSum = sum;\n }\n }\n exemplars[ei] = ii[maxI];\n }\n clusters = assignClusters(n, S, exemplars);\n return clusters;\n};\nvar affinityPropagation = function affinityPropagation(options) {\n var cy = this.cy();\n var nodes = this.nodes();\n var opts = setOptions(options);\n\n // Map each node to its position in node array\n var id2position = {};\n for (var i = 0; i < nodes.length; i++) {\n id2position[nodes[i].id()] = i;\n }\n\n // Begin affinity propagation algorithm\n\n var n; // number of data points\n var n2; // size of matrices\n var S; // similarity matrix (1D array)\n var p; // preference/suitability of a data point to serve as an exemplar\n var R; // responsibility matrix (1D array)\n var A; // availability matrix (1D array)\n\n n = nodes.length;\n n2 = n * n;\n\n // Initialize and build S similarity matrix\n S = new Array(n2);\n for (var _i = 0; _i < n2; _i++) {\n S[_i] = -Infinity; // for cases where two data points shouldn't be linked together\n }\n\n for (var _i2 = 0; _i2 < n; _i2++) {\n for (var j = 0; j < n; j++) {\n if (_i2 !== j) {\n S[_i2 * n + j] = getSimilarity(opts.distance, nodes[_i2], nodes[j], opts.attributes);\n }\n }\n }\n\n // Place preferences on the diagonal of S\n p = getPreference(S, opts.preference);\n for (var _i3 = 0; _i3 < n; _i3++) {\n S[_i3 * n + _i3] = p;\n }\n\n // Initialize R responsibility matrix\n R = new Array(n2);\n for (var _i4 = 0; _i4 < n2; _i4++) {\n R[_i4] = 0.0;\n }\n\n // Initialize A availability matrix\n A = new Array(n2);\n for (var _i5 = 0; _i5 < n2; _i5++) {\n A[_i5] = 0.0;\n }\n var old = new Array(n);\n var Rp = new Array(n);\n var se = new Array(n);\n for (var _i6 = 0; _i6 < n; _i6++) {\n old[_i6] = 0.0;\n Rp[_i6] = 0.0;\n se[_i6] = 0;\n }\n var e = new Array(n * opts.minIterations);\n for (var _i7 = 0; _i7 < e.length; _i7++) {\n e[_i7] = 0;\n }\n var iter;\n for (iter = 0; iter < opts.maxIterations; iter++) {\n // main algorithmic loop\n\n // Update R responsibility matrix\n for (var _i8 = 0; _i8 < n; _i8++) {\n var max = -Infinity,\n max2 = -Infinity,\n maxI = -1,\n AS = 0.0;\n for (var _j = 0; _j < n; _j++) {\n old[_j] = R[_i8 * n + _j];\n AS = A[_i8 * n + _j] + S[_i8 * n + _j];\n if (AS >= max) {\n max2 = max;\n max = AS;\n maxI = _j;\n } else if (AS > max2) {\n max2 = AS;\n }\n }\n for (var _j2 = 0; _j2 < n; _j2++) {\n R[_i8 * n + _j2] = (1 - opts.damping) * (S[_i8 * n + _j2] - max) + opts.damping * old[_j2];\n }\n R[_i8 * n + maxI] = (1 - opts.damping) * (S[_i8 * n + maxI] - max2) + opts.damping * old[maxI];\n }\n\n // Update A availability matrix\n for (var _i9 = 0; _i9 < n; _i9++) {\n var sum = 0;\n for (var _j3 = 0; _j3 < n; _j3++) {\n old[_j3] = A[_j3 * n + _i9];\n Rp[_j3] = Math.max(0, R[_j3 * n + _i9]);\n sum += Rp[_j3];\n }\n sum -= Rp[_i9];\n Rp[_i9] = R[_i9 * n + _i9];\n sum += Rp[_i9];\n for (var _j4 = 0; _j4 < n; _j4++) {\n A[_j4 * n + _i9] = (1 - opts.damping) * Math.min(0, sum - Rp[_j4]) + opts.damping * old[_j4];\n }\n A[_i9 * n + _i9] = (1 - opts.damping) * (sum - Rp[_i9]) + opts.damping * old[_i9];\n }\n\n // Check for convergence\n var K = 0;\n for (var _i10 = 0; _i10 < n; _i10++) {\n var E = A[_i10 * n + _i10] + R[_i10 * n + _i10] > 0 ? 1 : 0;\n e[iter % opts.minIterations * n + _i10] = E;\n K += E;\n }\n if (K > 0 && (iter >= opts.minIterations - 1 || iter == opts.maxIterations - 1)) {\n var _sum = 0;\n for (var _i11 = 0; _i11 < n; _i11++) {\n se[_i11] = 0;\n for (var _j5 = 0; _j5 < opts.minIterations; _j5++) {\n se[_i11] += e[_j5 * n + _i11];\n }\n if (se[_i11] === 0 || se[_i11] === opts.minIterations) {\n _sum++;\n }\n }\n if (_sum === n) {\n // then we have convergence\n break;\n }\n }\n }\n\n // Identify exemplars (cluster centers)\n var exemplarsIndices = findExemplars(n, R, A);\n\n // Assign nodes to clusters\n var clusterIndices = assign(n, S, exemplarsIndices);\n var clusters = {};\n for (var c = 0; c < exemplarsIndices.length; c++) {\n clusters[exemplarsIndices[c]] = [];\n }\n for (var _i12 = 0; _i12 < nodes.length; _i12++) {\n var pos = id2position[nodes[_i12].id()];\n var clusterIndex = clusterIndices[pos];\n if (clusterIndex != null) {\n // the node may have not been assigned a cluster if no valid attributes were specified\n clusters[clusterIndex].push(nodes[_i12]);\n }\n }\n var retClusters = new Array(exemplarsIndices.length);\n for (var _c = 0; _c < exemplarsIndices.length; _c++) {\n retClusters[_c] = cy.collection(clusters[exemplarsIndices[_c]]);\n }\n return retClusters;\n};\nvar affinityPropagation$1 = {\n affinityPropagation: affinityPropagation,\n ap: affinityPropagation\n};\n\nvar hierholzerDefaults = defaults$g({\n root: undefined,\n directed: false\n});\nvar elesfn$k = {\n hierholzer: function hierholzer(options) {\n if (!plainObject(options)) {\n var args = arguments;\n options = {\n root: args[0],\n directed: args[1]\n };\n }\n var _hierholzerDefaults = hierholzerDefaults(options),\n root = _hierholzerDefaults.root,\n directed = _hierholzerDefaults.directed;\n var eles = this;\n var dflag = false;\n var oddIn;\n var oddOut;\n var startVertex;\n if (root) startVertex = string(root) ? this.filter(root)[0].id() : root[0].id();\n var nodes = {};\n var edges = {};\n if (directed) {\n eles.forEach(function (ele) {\n var id = ele.id();\n if (ele.isNode()) {\n var ind = ele.indegree(true);\n var outd = ele.outdegree(true);\n var d1 = ind - outd;\n var d2 = outd - ind;\n if (d1 == 1) {\n if (oddIn) dflag = true;else oddIn = id;\n } else if (d2 == 1) {\n if (oddOut) dflag = true;else oddOut = id;\n } else if (d2 > 1 || d1 > 1) {\n dflag = true;\n }\n nodes[id] = [];\n ele.outgoers().forEach(function (e) {\n if (e.isEdge()) nodes[id].push(e.id());\n });\n } else {\n edges[id] = [undefined, ele.target().id()];\n }\n });\n } else {\n eles.forEach(function (ele) {\n var id = ele.id();\n if (ele.isNode()) {\n var d = ele.degree(true);\n if (d % 2) {\n if (!oddIn) oddIn = id;else if (!oddOut) oddOut = id;else dflag = true;\n }\n nodes[id] = [];\n ele.connectedEdges().forEach(function (e) {\n return nodes[id].push(e.id());\n });\n } else {\n edges[id] = [ele.source().id(), ele.target().id()];\n }\n });\n }\n var result = {\n found: false,\n trail: undefined\n };\n if (dflag) return result;else if (oddOut && oddIn) {\n if (directed) {\n if (startVertex && oddOut != startVertex) {\n return result;\n }\n startVertex = oddOut;\n } else {\n if (startVertex && oddOut != startVertex && oddIn != startVertex) {\n return result;\n } else if (!startVertex) {\n startVertex = oddOut;\n }\n }\n } else {\n if (!startVertex) startVertex = eles[0].id();\n }\n var walk = function walk(v) {\n var currentNode = v;\n var subtour = [v];\n var adj, adjTail, adjHead;\n while (nodes[currentNode].length) {\n adj = nodes[currentNode].shift();\n adjTail = edges[adj][0];\n adjHead = edges[adj][1];\n if (currentNode != adjHead) {\n nodes[adjHead] = nodes[adjHead].filter(function (e) {\n return e != adj;\n });\n currentNode = adjHead;\n } else if (!directed && currentNode != adjTail) {\n nodes[adjTail] = nodes[adjTail].filter(function (e) {\n return e != adj;\n });\n currentNode = adjTail;\n }\n subtour.unshift(adj);\n subtour.unshift(currentNode);\n }\n return subtour;\n };\n var trail = [];\n var subtour = [];\n subtour = walk(startVertex);\n while (subtour.length != 1) {\n if (nodes[subtour[0]].length == 0) {\n trail.unshift(eles.getElementById(subtour.shift()));\n trail.unshift(eles.getElementById(subtour.shift()));\n } else {\n subtour = walk(subtour.shift()).concat(subtour);\n }\n }\n trail.unshift(eles.getElementById(subtour.shift())); // final node\n\n for (var d in nodes) {\n if (nodes[d].length) {\n return result;\n }\n }\n result.found = true;\n result.trail = this.spawn(trail, true);\n return result;\n }\n};\n\nvar hopcroftTarjanBiconnected = function hopcroftTarjanBiconnected() {\n var eles = this;\n var nodes = {};\n var id = 0;\n var edgeCount = 0;\n var components = [];\n var stack = [];\n var visitedEdges = {};\n var buildComponent = function buildComponent(x, y) {\n var i = stack.length - 1;\n var cutset = [];\n var component = eles.spawn();\n while (stack[i].x != x || stack[i].y != y) {\n cutset.push(stack.pop().edge);\n i--;\n }\n cutset.push(stack.pop().edge);\n cutset.forEach(function (edge) {\n var connectedNodes = edge.connectedNodes().intersection(eles);\n component.merge(edge);\n connectedNodes.forEach(function (node) {\n var nodeId = node.id();\n var connectedEdges = node.connectedEdges().intersection(eles);\n component.merge(node);\n if (!nodes[nodeId].cutVertex) {\n component.merge(connectedEdges);\n } else {\n component.merge(connectedEdges.filter(function (edge) {\n return edge.isLoop();\n }));\n }\n });\n });\n components.push(component);\n };\n var biconnectedSearch = function biconnectedSearch(root, currentNode, parent) {\n if (root === parent) edgeCount += 1;\n nodes[currentNode] = {\n id: id,\n low: id++,\n cutVertex: false\n };\n var edges = eles.getElementById(currentNode).connectedEdges().intersection(eles);\n if (edges.size() === 0) {\n components.push(eles.spawn(eles.getElementById(currentNode)));\n } else {\n var sourceId, targetId, otherNodeId, edgeId;\n edges.forEach(function (edge) {\n sourceId = edge.source().id();\n targetId = edge.target().id();\n otherNodeId = sourceId === currentNode ? targetId : sourceId;\n if (otherNodeId !== parent) {\n edgeId = edge.id();\n if (!visitedEdges[edgeId]) {\n visitedEdges[edgeId] = true;\n stack.push({\n x: currentNode,\n y: otherNodeId,\n edge: edge\n });\n }\n if (!(otherNodeId in nodes)) {\n biconnectedSearch(root, otherNodeId, currentNode);\n nodes[currentNode].low = Math.min(nodes[currentNode].low, nodes[otherNodeId].low);\n if (nodes[currentNode].id <= nodes[otherNodeId].low) {\n nodes[currentNode].cutVertex = true;\n buildComponent(currentNode, otherNodeId);\n }\n } else {\n nodes[currentNode].low = Math.min(nodes[currentNode].low, nodes[otherNodeId].id);\n }\n }\n });\n }\n };\n eles.forEach(function (ele) {\n if (ele.isNode()) {\n var nodeId = ele.id();\n if (!(nodeId in nodes)) {\n edgeCount = 0;\n biconnectedSearch(nodeId, nodeId);\n nodes[nodeId].cutVertex = edgeCount > 1;\n }\n }\n });\n var cutVertices = Object.keys(nodes).filter(function (id) {\n return nodes[id].cutVertex;\n }).map(function (id) {\n return eles.getElementById(id);\n });\n return {\n cut: eles.spawn(cutVertices),\n components: components\n };\n};\nvar hopcroftTarjanBiconnected$1 = {\n hopcroftTarjanBiconnected: hopcroftTarjanBiconnected,\n htbc: hopcroftTarjanBiconnected,\n htb: hopcroftTarjanBiconnected,\n hopcroftTarjanBiconnectedComponents: hopcroftTarjanBiconnected\n};\n\nvar tarjanStronglyConnected = function tarjanStronglyConnected() {\n var eles = this;\n var nodes = {};\n var index = 0;\n var components = [];\n var stack = [];\n var cut = eles.spawn(eles);\n var stronglyConnectedSearch = function stronglyConnectedSearch(sourceNodeId) {\n stack.push(sourceNodeId);\n nodes[sourceNodeId] = {\n index: index,\n low: index++,\n explored: false\n };\n var connectedEdges = eles.getElementById(sourceNodeId).connectedEdges().intersection(eles);\n connectedEdges.forEach(function (edge) {\n var targetNodeId = edge.target().id();\n if (targetNodeId !== sourceNodeId) {\n if (!(targetNodeId in nodes)) {\n stronglyConnectedSearch(targetNodeId);\n }\n if (!nodes[targetNodeId].explored) {\n nodes[sourceNodeId].low = Math.min(nodes[sourceNodeId].low, nodes[targetNodeId].low);\n }\n }\n });\n if (nodes[sourceNodeId].index === nodes[sourceNodeId].low) {\n var componentNodes = eles.spawn();\n for (;;) {\n var nodeId = stack.pop();\n componentNodes.merge(eles.getElementById(nodeId));\n nodes[nodeId].low = nodes[sourceNodeId].index;\n nodes[nodeId].explored = true;\n if (nodeId === sourceNodeId) {\n break;\n }\n }\n var componentEdges = componentNodes.edgesWith(componentNodes);\n var component = componentNodes.merge(componentEdges);\n components.push(component);\n cut = cut.difference(component);\n }\n };\n eles.forEach(function (ele) {\n if (ele.isNode()) {\n var nodeId = ele.id();\n if (!(nodeId in nodes)) {\n stronglyConnectedSearch(nodeId);\n }\n }\n });\n return {\n cut: cut,\n components: components\n };\n};\nvar tarjanStronglyConnected$1 = {\n tarjanStronglyConnected: tarjanStronglyConnected,\n tsc: tarjanStronglyConnected,\n tscc: tarjanStronglyConnected,\n tarjanStronglyConnectedComponents: tarjanStronglyConnected\n};\n\nvar elesfn$j = {};\n[elesfn$v, elesfn$u, elesfn$t, elesfn$s, elesfn$r, elesfn$q, elesfn$p, elesfn$o, elesfn$n, elesfn$m, elesfn$l, markovClustering$1, kClustering, hierarchicalClustering$1, affinityPropagation$1, elesfn$k, hopcroftTarjanBiconnected$1, tarjanStronglyConnected$1].forEach(function (props) {\n extend(elesfn$j, props);\n});\n\n/*!\nEmbeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable\nCopyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com)\nLicensed under The MIT License (http://opensource.org/licenses/MIT)\n*/\n\n/* promise states [Promises/A+ 2.1] */\nvar STATE_PENDING = 0; /* [Promises/A+ 2.1.1] */\nvar STATE_FULFILLED = 1; /* [Promises/A+ 2.1.2] */\nvar STATE_REJECTED = 2; /* [Promises/A+ 2.1.3] */\n\n/* promise object constructor */\nvar api = function api(executor) {\n /* optionally support non-constructor/plain-function call */\n if (!(this instanceof api)) return new api(executor);\n\n /* initialize object */\n this.id = 'Thenable/1.0.7';\n this.state = STATE_PENDING; /* initial state */\n this.fulfillValue = undefined; /* initial value */ /* [Promises/A+ 1.3, 2.1.2.2] */\n this.rejectReason = undefined; /* initial reason */ /* [Promises/A+ 1.5, 2.1.3.2] */\n this.onFulfilled = []; /* initial handlers */\n this.onRejected = []; /* initial handlers */\n\n /* provide optional information-hiding proxy */\n this.proxy = {\n then: this.then.bind(this)\n };\n\n /* support optional executor function */\n if (typeof executor === 'function') executor.call(this, this.fulfill.bind(this), this.reject.bind(this));\n};\n\n/* promise API methods */\napi.prototype = {\n /* promise resolving methods */\n fulfill: function fulfill(value) {\n return deliver(this, STATE_FULFILLED, 'fulfillValue', value);\n },\n reject: function reject(value) {\n return deliver(this, STATE_REJECTED, 'rejectReason', value);\n },\n /* \"The then Method\" [Promises/A+ 1.1, 1.2, 2.2] */\n then: function then(onFulfilled, onRejected) {\n var curr = this;\n var next = new api(); /* [Promises/A+ 2.2.7] */\n curr.onFulfilled.push(resolver(onFulfilled, next, 'fulfill')); /* [Promises/A+ 2.2.2/2.2.6] */\n curr.onRejected.push(resolver(onRejected, next, 'reject')); /* [Promises/A+ 2.2.3/2.2.6] */\n execute(curr);\n return next.proxy; /* [Promises/A+ 2.2.7, 3.3] */\n }\n};\n\n/* deliver an action */\nvar deliver = function deliver(curr, state, name, value) {\n if (curr.state === STATE_PENDING) {\n curr.state = state; /* [Promises/A+ 2.1.2.1, 2.1.3.1] */\n curr[name] = value; /* [Promises/A+ 2.1.2.2, 2.1.3.2] */\n execute(curr);\n }\n return curr;\n};\n\n/* execute all handlers */\nvar execute = function execute(curr) {\n if (curr.state === STATE_FULFILLED) execute_handlers(curr, 'onFulfilled', curr.fulfillValue);else if (curr.state === STATE_REJECTED) execute_handlers(curr, 'onRejected', curr.rejectReason);\n};\n\n/* execute particular set of handlers */\nvar execute_handlers = function execute_handlers(curr, name, value) {\n /* global setImmediate: true */\n /* global setTimeout: true */\n\n /* short-circuit processing */\n if (curr[name].length === 0) return;\n\n /* iterate over all handlers, exactly once */\n var handlers = curr[name];\n curr[name] = []; /* [Promises/A+ 2.2.2.3, 2.2.3.3] */\n var func = function func() {\n for (var i = 0; i < handlers.length; i++) {\n handlers[i](value);\n } /* [Promises/A+ 2.2.5] */\n };\n\n /* execute procedure asynchronously */ /* [Promises/A+ 2.2.4, 3.1] */\n if (typeof setImmediate === 'function') setImmediate(func);else setTimeout(func, 0);\n};\n\n/* generate a resolver function */\nvar resolver = function resolver(cb, next, method) {\n return function (value) {\n if (typeof cb !== 'function') /* [Promises/A+ 2.2.1, 2.2.7.3, 2.2.7.4] */\n next[method].call(next, value); /* [Promises/A+ 2.2.7.3, 2.2.7.4] */else {\n var result;\n try {\n result = cb(value);\n } /* [Promises/A+ 2.2.2.1, 2.2.3.1, 2.2.5, 3.2] */ catch (e) {\n next.reject(e); /* [Promises/A+ 2.2.7.2] */\n return;\n }\n resolve(next, result); /* [Promises/A+ 2.2.7.1] */\n }\n };\n};\n\n/* \"Promise Resolution Procedure\" */ /* [Promises/A+ 2.3] */\nvar resolve = function resolve(promise, x) {\n /* sanity check arguments */ /* [Promises/A+ 2.3.1] */\n if (promise === x || promise.proxy === x) {\n promise.reject(new TypeError('cannot resolve promise with itself'));\n return;\n }\n\n /* surgically check for a \"then\" method\n (mainly to just call the \"getter\" of \"then\" only once) */\n var then;\n if (_typeof(x) === 'object' && x !== null || typeof x === 'function') {\n try {\n then = x.then;\n } /* [Promises/A+ 2.3.3.1, 3.5] */ catch (e) {\n promise.reject(e); /* [Promises/A+ 2.3.3.2] */\n return;\n }\n }\n\n /* handle own Thenables [Promises/A+ 2.3.2]\n and similar \"thenables\" [Promises/A+ 2.3.3] */\n if (typeof then === 'function') {\n var resolved = false;\n try {\n /* call retrieved \"then\" method */ /* [Promises/A+ 2.3.3.3] */\n then.call(x, /* resolvePromise */ /* [Promises/A+ 2.3.3.3.1] */\n function (y) {\n if (resolved) return;\n resolved = true; /* [Promises/A+ 2.3.3.3.3] */\n if (y === x) /* [Promises/A+ 3.6] */\n promise.reject(new TypeError('circular thenable chain'));else resolve(promise, y);\n }, /* rejectPromise */ /* [Promises/A+ 2.3.3.3.2] */\n function (r) {\n if (resolved) return;\n resolved = true; /* [Promises/A+ 2.3.3.3.3] */\n promise.reject(r);\n });\n } catch (e) {\n if (!resolved) /* [Promises/A+ 2.3.3.3.3] */\n promise.reject(e); /* [Promises/A+ 2.3.3.3.4] */\n }\n\n return;\n }\n\n /* handle other values */\n promise.fulfill(x); /* [Promises/A+ 2.3.4, 2.3.3.4] */\n};\n\n// so we always have Promise.all()\napi.all = function (ps) {\n return new api(function (resolveAll, rejectAll) {\n var vals = new Array(ps.length);\n var doneCount = 0;\n var fulfill = function fulfill(i, val) {\n vals[i] = val;\n doneCount++;\n if (doneCount === ps.length) {\n resolveAll(vals);\n }\n };\n for (var i = 0; i < ps.length; i++) {\n (function (i) {\n var p = ps[i];\n var isPromise = p != null && p.then != null;\n if (isPromise) {\n p.then(function (val) {\n fulfill(i, val);\n }, function (err) {\n rejectAll(err);\n });\n } else {\n var val = p;\n fulfill(i, val);\n }\n })(i);\n }\n });\n};\napi.resolve = function (val) {\n return new api(function (resolve, reject) {\n resolve(val);\n });\n};\napi.reject = function (val) {\n return new api(function (resolve, reject) {\n reject(val);\n });\n};\nvar Promise$1 = typeof Promise !== 'undefined' ? Promise : api; // eslint-disable-line no-undef\n\nvar Animation = function Animation(target, opts, opts2) {\n var isCore = core(target);\n var isEle = !isCore;\n var _p = this._private = extend({\n duration: 1000\n }, opts, opts2);\n _p.target = target;\n _p.style = _p.style || _p.css;\n _p.started = false;\n _p.playing = false;\n _p.hooked = false;\n _p.applying = false;\n _p.progress = 0;\n _p.completes = [];\n _p.frames = [];\n if (_p.complete && fn$6(_p.complete)) {\n _p.completes.push(_p.complete);\n }\n if (isEle) {\n var pos = target.position();\n _p.startPosition = _p.startPosition || {\n x: pos.x,\n y: pos.y\n };\n _p.startStyle = _p.startStyle || target.cy().style().getAnimationStartStyle(target, _p.style);\n }\n if (isCore) {\n var pan = target.pan();\n _p.startPan = {\n x: pan.x,\n y: pan.y\n };\n _p.startZoom = target.zoom();\n }\n\n // for future timeline/animations impl\n this.length = 1;\n this[0] = this;\n};\nvar anifn = Animation.prototype;\nextend(anifn, {\n instanceString: function instanceString() {\n return 'animation';\n },\n hook: function hook() {\n var _p = this._private;\n if (!_p.hooked) {\n // add to target's animation queue\n var q;\n var tAni = _p.target._private.animation;\n if (_p.queue) {\n q = tAni.queue;\n } else {\n q = tAni.current;\n }\n q.push(this);\n\n // add to the animation loop pool\n if (elementOrCollection(_p.target)) {\n _p.target.cy().addToAnimationPool(_p.target);\n }\n _p.hooked = true;\n }\n return this;\n },\n play: function play() {\n var _p = this._private;\n\n // autorewind\n if (_p.progress === 1) {\n _p.progress = 0;\n }\n _p.playing = true;\n _p.started = false; // needs to be started by animation loop\n _p.stopped = false;\n this.hook();\n\n // the animation loop will start the animation...\n\n return this;\n },\n playing: function playing() {\n return this._private.playing;\n },\n apply: function apply() {\n var _p = this._private;\n _p.applying = true;\n _p.started = false; // needs to be started by animation loop\n _p.stopped = false;\n this.hook();\n\n // the animation loop will apply the animation at this progress\n\n return this;\n },\n applying: function applying() {\n return this._private.applying;\n },\n pause: function pause() {\n var _p = this._private;\n _p.playing = false;\n _p.started = false;\n return this;\n },\n stop: function stop() {\n var _p = this._private;\n _p.playing = false;\n _p.started = false;\n _p.stopped = true; // to be removed from animation queues\n\n return this;\n },\n rewind: function rewind() {\n return this.progress(0);\n },\n fastforward: function fastforward() {\n return this.progress(1);\n },\n time: function time(t) {\n var _p = this._private;\n if (t === undefined) {\n return _p.progress * _p.duration;\n } else {\n return this.progress(t / _p.duration);\n }\n },\n progress: function progress(p) {\n var _p = this._private;\n var wasPlaying = _p.playing;\n if (p === undefined) {\n return _p.progress;\n } else {\n if (wasPlaying) {\n this.pause();\n }\n _p.progress = p;\n _p.started = false;\n if (wasPlaying) {\n this.play();\n }\n }\n return this;\n },\n completed: function completed() {\n return this._private.progress === 1;\n },\n reverse: function reverse() {\n var _p = this._private;\n var wasPlaying = _p.playing;\n if (wasPlaying) {\n this.pause();\n }\n _p.progress = 1 - _p.progress;\n _p.started = false;\n var swap = function swap(a, b) {\n var _pa = _p[a];\n if (_pa == null) {\n return;\n }\n _p[a] = _p[b];\n _p[b] = _pa;\n };\n swap('zoom', 'startZoom');\n swap('pan', 'startPan');\n swap('position', 'startPosition');\n\n // swap styles\n if (_p.style) {\n for (var i = 0; i < _p.style.length; i++) {\n var prop = _p.style[i];\n var name = prop.name;\n var startStyleProp = _p.startStyle[name];\n _p.startStyle[name] = prop;\n _p.style[i] = startStyleProp;\n }\n }\n if (wasPlaying) {\n this.play();\n }\n return this;\n },\n promise: function promise(type) {\n var _p = this._private;\n var arr;\n switch (type) {\n case 'frame':\n arr = _p.frames;\n break;\n default:\n case 'complete':\n case 'completed':\n arr = _p.completes;\n }\n return new Promise$1(function (resolve, reject) {\n arr.push(function () {\n resolve();\n });\n });\n }\n});\nanifn.complete = anifn.completed;\nanifn.run = anifn.play;\nanifn.running = anifn.playing;\n\nvar define$3 = {\n animated: function animated() {\n return function animatedImpl() {\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n var cy = this._private.cy || this;\n if (!cy.styleEnabled()) {\n return false;\n }\n var ele = all[0];\n if (ele) {\n return ele._private.animation.current.length > 0;\n }\n };\n },\n // animated\n\n clearQueue: function clearQueue() {\n return function clearQueueImpl() {\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n var cy = this._private.cy || this;\n if (!cy.styleEnabled()) {\n return this;\n }\n for (var i = 0; i < all.length; i++) {\n var ele = all[i];\n ele._private.animation.queue = [];\n }\n return this;\n };\n },\n // clearQueue\n\n delay: function delay() {\n return function delayImpl(time, complete) {\n var cy = this._private.cy || this;\n if (!cy.styleEnabled()) {\n return this;\n }\n return this.animate({\n delay: time,\n duration: time,\n complete: complete\n });\n };\n },\n // delay\n\n delayAnimation: function delayAnimation() {\n return function delayAnimationImpl(time, complete) {\n var cy = this._private.cy || this;\n if (!cy.styleEnabled()) {\n return this;\n }\n return this.animation({\n delay: time,\n duration: time,\n complete: complete\n });\n };\n },\n // delay\n\n animation: function animation() {\n return function animationImpl(properties, params) {\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n var cy = this._private.cy || this;\n var isCore = !selfIsArrayLike;\n var isEles = !isCore;\n if (!cy.styleEnabled()) {\n return this;\n }\n var style = cy.style();\n properties = extend({}, properties, params);\n var propertiesEmpty = Object.keys(properties).length === 0;\n if (propertiesEmpty) {\n return new Animation(all[0], properties); // nothing to animate\n }\n\n if (properties.duration === undefined) {\n properties.duration = 400;\n }\n switch (properties.duration) {\n case 'slow':\n properties.duration = 600;\n break;\n case 'fast':\n properties.duration = 200;\n break;\n }\n if (isEles) {\n properties.style = style.getPropsList(properties.style || properties.css);\n properties.css = undefined;\n }\n if (isEles && properties.renderedPosition != null) {\n var rpos = properties.renderedPosition;\n var pan = cy.pan();\n var zoom = cy.zoom();\n properties.position = renderedToModelPosition(rpos, zoom, pan);\n }\n\n // override pan w/ panBy if set\n if (isCore && properties.panBy != null) {\n var panBy = properties.panBy;\n var cyPan = cy.pan();\n properties.pan = {\n x: cyPan.x + panBy.x,\n y: cyPan.y + panBy.y\n };\n }\n\n // override pan w/ center if set\n var center = properties.center || properties.centre;\n if (isCore && center != null) {\n var centerPan = cy.getCenterPan(center.eles, properties.zoom);\n if (centerPan != null) {\n properties.pan = centerPan;\n }\n }\n\n // override pan & zoom w/ fit if set\n if (isCore && properties.fit != null) {\n var fit = properties.fit;\n var fitVp = cy.getFitViewport(fit.eles || fit.boundingBox, fit.padding);\n if (fitVp != null) {\n properties.pan = fitVp.pan;\n properties.zoom = fitVp.zoom;\n }\n }\n\n // override zoom (& potentially pan) w/ zoom obj if set\n if (isCore && plainObject(properties.zoom)) {\n var vp = cy.getZoomedViewport(properties.zoom);\n if (vp != null) {\n if (vp.zoomed) {\n properties.zoom = vp.zoom;\n }\n if (vp.panned) {\n properties.pan = vp.pan;\n }\n } else {\n properties.zoom = null; // an inavalid zoom (e.g. no delta) gets automatically destroyed\n }\n }\n\n return new Animation(all[0], properties);\n };\n },\n // animate\n\n animate: function animate() {\n return function animateImpl(properties, params) {\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n var cy = this._private.cy || this;\n if (!cy.styleEnabled()) {\n return this;\n }\n if (params) {\n properties = extend({}, properties, params);\n }\n\n // manually hook and run the animation\n for (var i = 0; i < all.length; i++) {\n var ele = all[i];\n var queue = ele.animated() && (properties.queue === undefined || properties.queue);\n var ani = ele.animation(properties, queue ? {\n queue: true\n } : undefined);\n ani.play();\n }\n return this; // chaining\n };\n },\n\n // animate\n\n stop: function stop() {\n return function stopImpl(clearQueue, jumpToEnd) {\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n var cy = this._private.cy || this;\n if (!cy.styleEnabled()) {\n return this;\n }\n for (var i = 0; i < all.length; i++) {\n var ele = all[i];\n var _p = ele._private;\n var anis = _p.animation.current;\n for (var j = 0; j < anis.length; j++) {\n var ani = anis[j];\n var ani_p = ani._private;\n if (jumpToEnd) {\n // next iteration of the animation loop, the animation\n // will go straight to the end and be removed\n ani_p.duration = 0;\n }\n }\n\n // clear the queue of future animations\n if (clearQueue) {\n _p.animation.queue = [];\n }\n if (!jumpToEnd) {\n _p.animation.current = [];\n }\n }\n\n // we have to notify (the animation loop doesn't do it for us on `stop`)\n cy.notify('draw');\n return this;\n };\n } // stop\n}; // define\n\nvar define$2 = {\n // access data field\n data: function data(params) {\n var defaults = {\n field: 'data',\n bindingEvent: 'data',\n allowBinding: false,\n allowSetting: false,\n allowGetting: false,\n settingEvent: 'data',\n settingTriggersEvent: false,\n triggerFnName: 'trigger',\n immutableKeys: {},\n // key => true if immutable\n updateStyle: false,\n beforeGet: function beforeGet(self) {},\n beforeSet: function beforeSet(self, obj) {},\n onSet: function onSet(self) {},\n canSet: function canSet(self) {\n return true;\n }\n };\n params = extend({}, defaults, params);\n return function dataImpl(name, value) {\n var p = params;\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n var single = selfIsArrayLike ? self[0] : self;\n\n // .data('foo', ...)\n if (string(name)) {\n // set or get property\n var isPathLike = name.indexOf('.') !== -1; // there might be a normal field with a dot \n var path = isPathLike && toPath__default[\"default\"](name);\n\n // .data('foo')\n if (p.allowGetting && value === undefined) {\n // get\n\n var ret;\n if (single) {\n p.beforeGet(single);\n\n // check if it's path and a field with the same name doesn't exist\n if (path && single._private[p.field][name] === undefined) {\n ret = get__default[\"default\"](single._private[p.field], path);\n } else {\n ret = single._private[p.field][name];\n }\n }\n return ret;\n\n // .data('foo', 'bar')\n } else if (p.allowSetting && value !== undefined) {\n // set\n var valid = !p.immutableKeys[name];\n if (valid) {\n var change = _defineProperty({}, name, value);\n p.beforeSet(self, change);\n for (var i = 0, l = all.length; i < l; i++) {\n var ele = all[i];\n if (p.canSet(ele)) {\n if (path && single._private[p.field][name] === undefined) {\n set__default[\"default\"](ele._private[p.field], path, value);\n } else {\n ele._private[p.field][name] = value;\n }\n }\n }\n\n // update mappers if asked\n if (p.updateStyle) {\n self.updateStyle();\n }\n\n // call onSet callback\n p.onSet(self);\n if (p.settingTriggersEvent) {\n self[p.triggerFnName](p.settingEvent);\n }\n }\n }\n\n // .data({ 'foo': 'bar' })\n } else if (p.allowSetting && plainObject(name)) {\n // extend\n var obj = name;\n var k, v;\n var keys = Object.keys(obj);\n p.beforeSet(self, obj);\n for (var _i = 0; _i < keys.length; _i++) {\n k = keys[_i];\n v = obj[k];\n var _valid = !p.immutableKeys[k];\n if (_valid) {\n for (var j = 0; j < all.length; j++) {\n var _ele = all[j];\n if (p.canSet(_ele)) {\n _ele._private[p.field][k] = v;\n }\n }\n }\n }\n\n // update mappers if asked\n if (p.updateStyle) {\n self.updateStyle();\n }\n\n // call onSet callback\n p.onSet(self);\n if (p.settingTriggersEvent) {\n self[p.triggerFnName](p.settingEvent);\n }\n\n // .data(function(){ ... })\n } else if (p.allowBinding && fn$6(name)) {\n // bind to event\n var fn = name;\n self.on(p.bindingEvent, fn);\n\n // .data()\n } else if (p.allowGetting && name === undefined) {\n // get whole object\n var _ret;\n if (single) {\n p.beforeGet(single);\n _ret = single._private[p.field];\n }\n return _ret;\n }\n return self; // maintain chainability\n }; // function\n },\n\n // data\n\n // remove data field\n removeData: function removeData(params) {\n var defaults = {\n field: 'data',\n event: 'data',\n triggerFnName: 'trigger',\n triggerEvent: false,\n immutableKeys: {} // key => true if immutable\n };\n\n params = extend({}, defaults, params);\n return function removeDataImpl(names) {\n var p = params;\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n\n // .removeData('foo bar')\n if (string(names)) {\n // then get the list of keys, and delete them\n var keys = names.split(/\\s+/);\n var l = keys.length;\n for (var i = 0; i < l; i++) {\n // delete each non-empty key\n var key = keys[i];\n if (emptyString(key)) {\n continue;\n }\n var valid = !p.immutableKeys[key]; // not valid if immutable\n if (valid) {\n for (var i_a = 0, l_a = all.length; i_a < l_a; i_a++) {\n all[i_a]._private[p.field][key] = undefined;\n }\n }\n }\n if (p.triggerEvent) {\n self[p.triggerFnName](p.event);\n }\n\n // .removeData()\n } else if (names === undefined) {\n // then delete all keys\n\n for (var _i_a = 0, _l_a = all.length; _i_a < _l_a; _i_a++) {\n var _privateFields = all[_i_a]._private[p.field];\n var _keys = Object.keys(_privateFields);\n for (var _i2 = 0; _i2 < _keys.length; _i2++) {\n var _key = _keys[_i2];\n var validKeyToDelete = !p.immutableKeys[_key];\n if (validKeyToDelete) {\n _privateFields[_key] = undefined;\n }\n }\n }\n if (p.triggerEvent) {\n self[p.triggerFnName](p.event);\n }\n }\n return self; // maintain chaining\n }; // function\n } // removeData\n}; // define\n\nvar define$1 = {\n eventAliasesOn: function eventAliasesOn(proto) {\n var p = proto;\n p.addListener = p.listen = p.bind = p.on;\n p.unlisten = p.unbind = p.off = p.removeListener;\n p.trigger = p.emit;\n\n // this is just a wrapper alias of .on()\n p.pon = p.promiseOn = function (events, selector) {\n var self = this;\n var args = Array.prototype.slice.call(arguments, 0);\n return new Promise$1(function (resolve, reject) {\n var callback = function callback(e) {\n self.off.apply(self, offArgs);\n resolve(e);\n };\n var onArgs = args.concat([callback]);\n var offArgs = onArgs.concat([]);\n self.on.apply(self, onArgs);\n });\n };\n }\n}; // define\n\n// use this module to cherry pick functions into your prototype\nvar define = {};\n[define$3, define$2, define$1].forEach(function (m) {\n extend(define, m);\n});\n\nvar elesfn$i = {\n animate: define.animate(),\n animation: define.animation(),\n animated: define.animated(),\n clearQueue: define.clearQueue(),\n delay: define.delay(),\n delayAnimation: define.delayAnimation(),\n stop: define.stop()\n};\n\nvar elesfn$h = {\n classes: function classes(_classes) {\n var self = this;\n if (_classes === undefined) {\n var ret = [];\n self[0]._private.classes.forEach(function (cls) {\n return ret.push(cls);\n });\n return ret;\n } else if (!array(_classes)) {\n // extract classes from string\n _classes = (_classes || '').match(/\\S+/g) || [];\n }\n var changed = [];\n var classesSet = new Set$1(_classes);\n\n // check and update each ele\n for (var j = 0; j < self.length; j++) {\n var ele = self[j];\n var _p = ele._private;\n var eleClasses = _p.classes;\n var changedEle = false;\n\n // check if ele has all of the passed classes\n for (var i = 0; i < _classes.length; i++) {\n var cls = _classes[i];\n var eleHasClass = eleClasses.has(cls);\n if (!eleHasClass) {\n changedEle = true;\n break;\n }\n }\n\n // check if ele has classes outside of those passed\n if (!changedEle) {\n changedEle = eleClasses.size !== _classes.length;\n }\n if (changedEle) {\n _p.classes = classesSet;\n changed.push(ele);\n }\n }\n\n // trigger update style on those eles that had class changes\n if (changed.length > 0) {\n this.spawn(changed).updateStyle().emit('class');\n }\n return self;\n },\n addClass: function addClass(classes) {\n return this.toggleClass(classes, true);\n },\n hasClass: function hasClass(className) {\n var ele = this[0];\n return ele != null && ele._private.classes.has(className);\n },\n toggleClass: function toggleClass(classes, toggle) {\n if (!array(classes)) {\n // extract classes from string\n classes = classes.match(/\\S+/g) || [];\n }\n var self = this;\n var toggleUndefd = toggle === undefined;\n var changed = []; // eles who had classes changed\n\n for (var i = 0, il = self.length; i < il; i++) {\n var ele = self[i];\n var eleClasses = ele._private.classes;\n var changedEle = false;\n for (var j = 0; j < classes.length; j++) {\n var cls = classes[j];\n var hasClass = eleClasses.has(cls);\n var changedNow = false;\n if (toggle || toggleUndefd && !hasClass) {\n eleClasses.add(cls);\n changedNow = true;\n } else if (!toggle || toggleUndefd && hasClass) {\n eleClasses[\"delete\"](cls);\n changedNow = true;\n }\n if (!changedEle && changedNow) {\n changed.push(ele);\n changedEle = true;\n }\n } // for j classes\n } // for i eles\n\n // trigger update style on those eles that had class changes\n if (changed.length > 0) {\n this.spawn(changed).updateStyle().emit('class');\n }\n return self;\n },\n removeClass: function removeClass(classes) {\n return this.toggleClass(classes, false);\n },\n flashClass: function flashClass(classes, duration) {\n var self = this;\n if (duration == null) {\n duration = 250;\n } else if (duration === 0) {\n return self; // nothing to do really\n }\n\n self.addClass(classes);\n setTimeout(function () {\n self.removeClass(classes);\n }, duration);\n return self;\n }\n};\nelesfn$h.className = elesfn$h.classNames = elesfn$h.classes;\n\n// tokens in the query language\nvar tokens = {\n metaChar: '[\\\\!\\\\\"\\\\#\\\\$\\\\%\\\\&\\\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\.\\\\/\\\\:\\\\;\\\\<\\\\=\\\\>\\\\?\\\\@\\\\[\\\\]\\\\^\\\\`\\\\{\\\\|\\\\}\\\\~]',\n // chars we need to escape in let names, etc\n comparatorOp: '=|\\\\!=|>|>=|<|<=|\\\\$=|\\\\^=|\\\\*=',\n // binary comparison op (used in data selectors)\n boolOp: '\\\\?|\\\\!|\\\\^',\n // boolean (unary) operators (used in data selectors)\n string: '\"(?:\\\\\\\\\"|[^\"])*\"' + '|' + \"'(?:\\\\\\\\'|[^'])*'\",\n // string literals (used in data selectors) -- doublequotes | singlequotes\n number: number,\n // number literal (used in data selectors) --- e.g. 0.1234, 1234, 12e123\n meta: 'degree|indegree|outdegree',\n // allowed metadata fields (i.e. allowed functions to use from Collection)\n separator: '\\\\s*,\\\\s*',\n // queries are separated by commas, e.g. edge[foo = 'bar'], node.someClass\n descendant: '\\\\s+',\n child: '\\\\s+>\\\\s+',\n subject: '\\\\$',\n group: 'node|edge|\\\\*',\n directedEdge: '\\\\s+->\\\\s+',\n undirectedEdge: '\\\\s+<->\\\\s+'\n};\ntokens.variable = '(?:[\\\\w-.]|(?:\\\\\\\\' + tokens.metaChar + '))+'; // a variable name can have letters, numbers, dashes, and periods\ntokens.className = '(?:[\\\\w-]|(?:\\\\\\\\' + tokens.metaChar + '))+'; // a class name has the same rules as a variable except it can't have a '.' in the name\ntokens.value = tokens.string + '|' + tokens.number; // a value literal, either a string or number\ntokens.id = tokens.variable; // an element id (follows variable conventions)\n\n(function () {\n var ops, op, i;\n\n // add @ variants to comparatorOp\n ops = tokens.comparatorOp.split('|');\n for (i = 0; i < ops.length; i++) {\n op = ops[i];\n tokens.comparatorOp += '|@' + op;\n }\n\n // add ! variants to comparatorOp\n ops = tokens.comparatorOp.split('|');\n for (i = 0; i < ops.length; i++) {\n op = ops[i];\n if (op.indexOf('!') >= 0) {\n continue;\n } // skip ops that explicitly contain !\n if (op === '=') {\n continue;\n } // skip = b/c != is explicitly defined\n\n tokens.comparatorOp += '|\\\\!' + op;\n }\n})();\n\n/**\n * Make a new query object\n *\n * @prop type {Type} The type enum (int) of the query\n * @prop checks List of checks to make against an ele to test for a match\n */\nvar newQuery = function newQuery() {\n return {\n checks: []\n };\n};\n\n/**\n * A check type enum-like object. Uses integer values for fast match() lookup.\n * The ordering does not matter as long as the ints are unique.\n */\nvar Type = {\n /** E.g. node */\n GROUP: 0,\n /** A collection of elements */\n COLLECTION: 1,\n /** A filter(ele) function */\n FILTER: 2,\n /** E.g. [foo > 1] */\n DATA_COMPARE: 3,\n /** E.g. [foo] */\n DATA_EXIST: 4,\n /** E.g. [?foo] */\n DATA_BOOL: 5,\n /** E.g. [[degree > 2]] */\n META_COMPARE: 6,\n /** E.g. :selected */\n STATE: 7,\n /** E.g. #foo */\n ID: 8,\n /** E.g. .foo */\n CLASS: 9,\n /** E.g. #foo <-> #bar */\n UNDIRECTED_EDGE: 10,\n /** E.g. #foo -> #bar */\n DIRECTED_EDGE: 11,\n /** E.g. $#foo -> #bar */\n NODE_SOURCE: 12,\n /** E.g. #foo -> $#bar */\n NODE_TARGET: 13,\n /** E.g. $#foo <-> #bar */\n NODE_NEIGHBOR: 14,\n /** E.g. #foo > #bar */\n CHILD: 15,\n /** E.g. #foo #bar */\n DESCENDANT: 16,\n /** E.g. $#foo > #bar */\n PARENT: 17,\n /** E.g. $#foo #bar */\n ANCESTOR: 18,\n /** E.g. #foo > $bar > #baz */\n COMPOUND_SPLIT: 19,\n /** Always matches, useful placeholder for subject in `COMPOUND_SPLIT` */\n TRUE: 20\n};\n\nvar stateSelectors = [{\n selector: ':selected',\n matches: function matches(ele) {\n return ele.selected();\n }\n}, {\n selector: ':unselected',\n matches: function matches(ele) {\n return !ele.selected();\n }\n}, {\n selector: ':selectable',\n matches: function matches(ele) {\n return ele.selectable();\n }\n}, {\n selector: ':unselectable',\n matches: function matches(ele) {\n return !ele.selectable();\n }\n}, {\n selector: ':locked',\n matches: function matches(ele) {\n return ele.locked();\n }\n}, {\n selector: ':unlocked',\n matches: function matches(ele) {\n return !ele.locked();\n }\n}, {\n selector: ':visible',\n matches: function matches(ele) {\n return ele.visible();\n }\n}, {\n selector: ':hidden',\n matches: function matches(ele) {\n return !ele.visible();\n }\n}, {\n selector: ':transparent',\n matches: function matches(ele) {\n return ele.transparent();\n }\n}, {\n selector: ':grabbed',\n matches: function matches(ele) {\n return ele.grabbed();\n }\n}, {\n selector: ':free',\n matches: function matches(ele) {\n return !ele.grabbed();\n }\n}, {\n selector: ':removed',\n matches: function matches(ele) {\n return ele.removed();\n }\n}, {\n selector: ':inside',\n matches: function matches(ele) {\n return !ele.removed();\n }\n}, {\n selector: ':grabbable',\n matches: function matches(ele) {\n return ele.grabbable();\n }\n}, {\n selector: ':ungrabbable',\n matches: function matches(ele) {\n return !ele.grabbable();\n }\n}, {\n selector: ':animated',\n matches: function matches(ele) {\n return ele.animated();\n }\n}, {\n selector: ':unanimated',\n matches: function matches(ele) {\n return !ele.animated();\n }\n}, {\n selector: ':parent',\n matches: function matches(ele) {\n return ele.isParent();\n }\n}, {\n selector: ':childless',\n matches: function matches(ele) {\n return ele.isChildless();\n }\n}, {\n selector: ':child',\n matches: function matches(ele) {\n return ele.isChild();\n }\n}, {\n selector: ':orphan',\n matches: function matches(ele) {\n return ele.isOrphan();\n }\n}, {\n selector: ':nonorphan',\n matches: function matches(ele) {\n return ele.isChild();\n }\n}, {\n selector: ':compound',\n matches: function matches(ele) {\n if (ele.isNode()) {\n return ele.isParent();\n } else {\n return ele.source().isParent() || ele.target().isParent();\n }\n }\n}, {\n selector: ':loop',\n matches: function matches(ele) {\n return ele.isLoop();\n }\n}, {\n selector: ':simple',\n matches: function matches(ele) {\n return ele.isSimple();\n }\n}, {\n selector: ':active',\n matches: function matches(ele) {\n return ele.active();\n }\n}, {\n selector: ':inactive',\n matches: function matches(ele) {\n return !ele.active();\n }\n}, {\n selector: ':backgrounding',\n matches: function matches(ele) {\n return ele.backgrounding();\n }\n}, {\n selector: ':nonbackgrounding',\n matches: function matches(ele) {\n return !ele.backgrounding();\n }\n}].sort(function (a, b) {\n // n.b. selectors that are starting substrings of others must have the longer ones first\n return descending(a.selector, b.selector);\n});\nvar lookup = function () {\n var selToFn = {};\n var s;\n for (var i = 0; i < stateSelectors.length; i++) {\n s = stateSelectors[i];\n selToFn[s.selector] = s.matches;\n }\n return selToFn;\n}();\nvar stateSelectorMatches = function stateSelectorMatches(sel, ele) {\n return lookup[sel](ele);\n};\nvar stateSelectorRegex = '(' + stateSelectors.map(function (s) {\n return s.selector;\n}).join('|') + ')';\n\n// when a token like a variable has escaped meta characters, we need to clean the backslashes out\n// so that values get compared properly in Selector.filter()\nvar cleanMetaChars = function cleanMetaChars(str) {\n return str.replace(new RegExp('\\\\\\\\(' + tokens.metaChar + ')', 'g'), function (match, $1) {\n return $1;\n });\n};\nvar replaceLastQuery = function replaceLastQuery(selector, examiningQuery, replacementQuery) {\n selector[selector.length - 1] = replacementQuery;\n};\n\n// NOTE: add new expression syntax here to have it recognised by the parser;\n// - a query contains all adjacent (i.e. no separator in between) expressions;\n// - the current query is stored in selector[i]\n// - you need to check the query objects in match() for it actually filter properly, but that's pretty straight forward\nvar exprs = [{\n name: 'group',\n // just used for identifying when debugging\n query: true,\n regex: '(' + tokens.group + ')',\n populate: function populate(selector, query, _ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n group = _ref2[0];\n query.checks.push({\n type: Type.GROUP,\n value: group === '*' ? group : group + 's'\n });\n }\n}, {\n name: 'state',\n query: true,\n regex: stateSelectorRegex,\n populate: function populate(selector, query, _ref3) {\n var _ref4 = _slicedToArray(_ref3, 1),\n state = _ref4[0];\n query.checks.push({\n type: Type.STATE,\n value: state\n });\n }\n}, {\n name: 'id',\n query: true,\n regex: '\\\\#(' + tokens.id + ')',\n populate: function populate(selector, query, _ref5) {\n var _ref6 = _slicedToArray(_ref5, 1),\n id = _ref6[0];\n query.checks.push({\n type: Type.ID,\n value: cleanMetaChars(id)\n });\n }\n}, {\n name: 'className',\n query: true,\n regex: '\\\\.(' + tokens.className + ')',\n populate: function populate(selector, query, _ref7) {\n var _ref8 = _slicedToArray(_ref7, 1),\n className = _ref8[0];\n query.checks.push({\n type: Type.CLASS,\n value: cleanMetaChars(className)\n });\n }\n}, {\n name: 'dataExists',\n query: true,\n regex: '\\\\[\\\\s*(' + tokens.variable + ')\\\\s*\\\\]',\n populate: function populate(selector, query, _ref9) {\n var _ref10 = _slicedToArray(_ref9, 1),\n variable = _ref10[0];\n query.checks.push({\n type: Type.DATA_EXIST,\n field: cleanMetaChars(variable)\n });\n }\n}, {\n name: 'dataCompare',\n query: true,\n regex: '\\\\[\\\\s*(' + tokens.variable + ')\\\\s*(' + tokens.comparatorOp + ')\\\\s*(' + tokens.value + ')\\\\s*\\\\]',\n populate: function populate(selector, query, _ref11) {\n var _ref12 = _slicedToArray(_ref11, 3),\n variable = _ref12[0],\n comparatorOp = _ref12[1],\n value = _ref12[2];\n var valueIsString = new RegExp('^' + tokens.string + '$').exec(value) != null;\n if (valueIsString) {\n value = value.substring(1, value.length - 1);\n } else {\n value = parseFloat(value);\n }\n query.checks.push({\n type: Type.DATA_COMPARE,\n field: cleanMetaChars(variable),\n operator: comparatorOp,\n value: value\n });\n }\n}, {\n name: 'dataBool',\n query: true,\n regex: '\\\\[\\\\s*(' + tokens.boolOp + ')\\\\s*(' + tokens.variable + ')\\\\s*\\\\]',\n populate: function populate(selector, query, _ref13) {\n var _ref14 = _slicedToArray(_ref13, 2),\n boolOp = _ref14[0],\n variable = _ref14[1];\n query.checks.push({\n type: Type.DATA_BOOL,\n field: cleanMetaChars(variable),\n operator: boolOp\n });\n }\n}, {\n name: 'metaCompare',\n query: true,\n regex: '\\\\[\\\\[\\\\s*(' + tokens.meta + ')\\\\s*(' + tokens.comparatorOp + ')\\\\s*(' + tokens.number + ')\\\\s*\\\\]\\\\]',\n populate: function populate(selector, query, _ref15) {\n var _ref16 = _slicedToArray(_ref15, 3),\n meta = _ref16[0],\n comparatorOp = _ref16[1],\n number = _ref16[2];\n query.checks.push({\n type: Type.META_COMPARE,\n field: cleanMetaChars(meta),\n operator: comparatorOp,\n value: parseFloat(number)\n });\n }\n}, {\n name: 'nextQuery',\n separator: true,\n regex: tokens.separator,\n populate: function populate(selector, query) {\n var currentSubject = selector.currentSubject;\n var edgeCount = selector.edgeCount;\n var compoundCount = selector.compoundCount;\n var lastQ = selector[selector.length - 1];\n if (currentSubject != null) {\n lastQ.subject = currentSubject;\n selector.currentSubject = null;\n }\n lastQ.edgeCount = edgeCount;\n lastQ.compoundCount = compoundCount;\n selector.edgeCount = 0;\n selector.compoundCount = 0;\n\n // go on to next query\n var nextQuery = selector[selector.length++] = newQuery();\n return nextQuery; // this is the new query to be filled by the following exprs\n }\n}, {\n name: 'directedEdge',\n separator: true,\n regex: tokens.directedEdge,\n populate: function populate(selector, query) {\n if (selector.currentSubject == null) {\n // undirected edge\n var edgeQuery = newQuery();\n var source = query;\n var target = newQuery();\n edgeQuery.checks.push({\n type: Type.DIRECTED_EDGE,\n source: source,\n target: target\n });\n\n // the query in the selector should be the edge rather than the source\n replaceLastQuery(selector, query, edgeQuery);\n selector.edgeCount++;\n\n // we're now populating the target query with expressions that follow\n return target;\n } else {\n // source/target\n var srcTgtQ = newQuery();\n var _source = query;\n var _target = newQuery();\n srcTgtQ.checks.push({\n type: Type.NODE_SOURCE,\n source: _source,\n target: _target\n });\n\n // the query in the selector should be the neighbourhood rather than the node\n replaceLastQuery(selector, query, srcTgtQ);\n selector.edgeCount++;\n return _target; // now populating the target with the following expressions\n }\n }\n}, {\n name: 'undirectedEdge',\n separator: true,\n regex: tokens.undirectedEdge,\n populate: function populate(selector, query) {\n if (selector.currentSubject == null) {\n // undirected edge\n var edgeQuery = newQuery();\n var source = query;\n var target = newQuery();\n edgeQuery.checks.push({\n type: Type.UNDIRECTED_EDGE,\n nodes: [source, target]\n });\n\n // the query in the selector should be the edge rather than the source\n replaceLastQuery(selector, query, edgeQuery);\n selector.edgeCount++;\n\n // we're now populating the target query with expressions that follow\n return target;\n } else {\n // neighbourhood\n var nhoodQ = newQuery();\n var node = query;\n var neighbor = newQuery();\n nhoodQ.checks.push({\n type: Type.NODE_NEIGHBOR,\n node: node,\n neighbor: neighbor\n });\n\n // the query in the selector should be the neighbourhood rather than the node\n replaceLastQuery(selector, query, nhoodQ);\n return neighbor; // now populating the neighbor with following expressions\n }\n }\n}, {\n name: 'child',\n separator: true,\n regex: tokens.child,\n populate: function populate(selector, query) {\n if (selector.currentSubject == null) {\n // default: child query\n var parentChildQuery = newQuery();\n var child = newQuery();\n var parent = selector[selector.length - 1];\n parentChildQuery.checks.push({\n type: Type.CHILD,\n parent: parent,\n child: child\n });\n\n // the query in the selector should be the '>' itself\n replaceLastQuery(selector, query, parentChildQuery);\n selector.compoundCount++;\n\n // we're now populating the child query with expressions that follow\n return child;\n } else if (selector.currentSubject === query) {\n // compound split query\n var compound = newQuery();\n var left = selector[selector.length - 1];\n var right = newQuery();\n var subject = newQuery();\n var _child = newQuery();\n var _parent = newQuery();\n\n // set up the root compound q\n compound.checks.push({\n type: Type.COMPOUND_SPLIT,\n left: left,\n right: right,\n subject: subject\n });\n\n // populate the subject and replace the q at the old spot (within left) with TRUE\n subject.checks = query.checks; // take the checks from the left\n query.checks = [{\n type: Type.TRUE\n }]; // checks under left refs the subject implicitly\n\n // set up the right q\n _parent.checks.push({\n type: Type.TRUE\n }); // parent implicitly refs the subject\n right.checks.push({\n type: Type.PARENT,\n // type is swapped on right side queries\n parent: _parent,\n child: _child // empty for now\n });\n\n replaceLastQuery(selector, left, compound);\n\n // update the ref since we moved things around for `query`\n selector.currentSubject = subject;\n selector.compoundCount++;\n return _child; // now populating the right side's child\n } else {\n // parent query\n // info for parent query\n var _parent2 = newQuery();\n var _child2 = newQuery();\n var pcQChecks = [{\n type: Type.PARENT,\n parent: _parent2,\n child: _child2\n }];\n\n // the parent-child query takes the place of the query previously being populated\n _parent2.checks = query.checks; // the previous query contains the checks for the parent\n query.checks = pcQChecks; // pc query takes over\n\n selector.compoundCount++;\n return _child2; // we're now populating the child\n }\n }\n}, {\n name: 'descendant',\n separator: true,\n regex: tokens.descendant,\n populate: function populate(selector, query) {\n if (selector.currentSubject == null) {\n // default: descendant query\n var ancChQuery = newQuery();\n var descendant = newQuery();\n var ancestor = selector[selector.length - 1];\n ancChQuery.checks.push({\n type: Type.DESCENDANT,\n ancestor: ancestor,\n descendant: descendant\n });\n\n // the query in the selector should be the '>' itself\n replaceLastQuery(selector, query, ancChQuery);\n selector.compoundCount++;\n\n // we're now populating the descendant query with expressions that follow\n return descendant;\n } else if (selector.currentSubject === query) {\n // compound split query\n var compound = newQuery();\n var left = selector[selector.length - 1];\n var right = newQuery();\n var subject = newQuery();\n var _descendant = newQuery();\n var _ancestor = newQuery();\n\n // set up the root compound q\n compound.checks.push({\n type: Type.COMPOUND_SPLIT,\n left: left,\n right: right,\n subject: subject\n });\n\n // populate the subject and replace the q at the old spot (within left) with TRUE\n subject.checks = query.checks; // take the checks from the left\n query.checks = [{\n type: Type.TRUE\n }]; // checks under left refs the subject implicitly\n\n // set up the right q\n _ancestor.checks.push({\n type: Type.TRUE\n }); // ancestor implicitly refs the subject\n right.checks.push({\n type: Type.ANCESTOR,\n // type is swapped on right side queries\n ancestor: _ancestor,\n descendant: _descendant // empty for now\n });\n\n replaceLastQuery(selector, left, compound);\n\n // update the ref since we moved things around for `query`\n selector.currentSubject = subject;\n selector.compoundCount++;\n return _descendant; // now populating the right side's descendant\n } else {\n // ancestor query\n // info for parent query\n var _ancestor2 = newQuery();\n var _descendant2 = newQuery();\n var adQChecks = [{\n type: Type.ANCESTOR,\n ancestor: _ancestor2,\n descendant: _descendant2\n }];\n\n // the parent-child query takes the place of the query previously being populated\n _ancestor2.checks = query.checks; // the previous query contains the checks for the parent\n query.checks = adQChecks; // pc query takes over\n\n selector.compoundCount++;\n return _descendant2; // we're now populating the child\n }\n }\n}, {\n name: 'subject',\n modifier: true,\n regex: tokens.subject,\n populate: function populate(selector, query) {\n if (selector.currentSubject != null && selector.currentSubject !== query) {\n warn('Redefinition of subject in selector `' + selector.toString() + '`');\n return false;\n }\n selector.currentSubject = query;\n var topQ = selector[selector.length - 1];\n var topChk = topQ.checks[0];\n var topType = topChk == null ? null : topChk.type;\n if (topType === Type.DIRECTED_EDGE) {\n // directed edge with subject on the target\n\n // change to target node check\n topChk.type = Type.NODE_TARGET;\n } else if (topType === Type.UNDIRECTED_EDGE) {\n // undirected edge with subject on the second node\n\n // change to neighbor check\n topChk.type = Type.NODE_NEIGHBOR;\n topChk.node = topChk.nodes[1]; // second node is subject\n topChk.neighbor = topChk.nodes[0];\n\n // clean up unused fields for new type\n topChk.nodes = null;\n }\n }\n}];\nexprs.forEach(function (e) {\n return e.regexObj = new RegExp('^' + e.regex);\n});\n\n/**\n * Of all the expressions, find the first match in the remaining text.\n * @param {string} remaining The remaining text to parse\n * @returns The matched expression and the newly remaining text `{ expr, match, name, remaining }`\n */\nvar consumeExpr = function consumeExpr(remaining) {\n var expr;\n var match;\n var name;\n for (var j = 0; j < exprs.length; j++) {\n var e = exprs[j];\n var n = e.name;\n var m = remaining.match(e.regexObj);\n if (m != null) {\n match = m;\n expr = e;\n name = n;\n var consumed = m[0];\n remaining = remaining.substring(consumed.length);\n break; // we've consumed one expr, so we can return now\n }\n }\n\n return {\n expr: expr,\n match: match,\n name: name,\n remaining: remaining\n };\n};\n\n/**\n * Consume all the leading whitespace\n * @param {string} remaining The text to consume\n * @returns The text with the leading whitespace removed\n */\nvar consumeWhitespace = function consumeWhitespace(remaining) {\n var match = remaining.match(/^\\s+/);\n if (match) {\n var consumed = match[0];\n remaining = remaining.substring(consumed.length);\n }\n return remaining;\n};\n\n/**\n * Parse the string and store the parsed representation in the Selector.\n * @param {string} selector The selector string\n * @returns `true` if the selector was successfully parsed, `false` otherwise\n */\nvar parse = function parse(selector) {\n var self = this;\n var remaining = self.inputText = selector;\n var currentQuery = self[0] = newQuery();\n self.length = 1;\n remaining = consumeWhitespace(remaining); // get rid of leading whitespace\n\n for (;;) {\n var exprInfo = consumeExpr(remaining);\n if (exprInfo.expr == null) {\n warn('The selector `' + selector + '`is invalid');\n return false;\n } else {\n var args = exprInfo.match.slice(1);\n\n // let the token populate the selector object in currentQuery\n var ret = exprInfo.expr.populate(self, currentQuery, args);\n if (ret === false) {\n return false; // exit if population failed\n } else if (ret != null) {\n currentQuery = ret; // change the current query to be filled if the expr specifies\n }\n }\n\n remaining = exprInfo.remaining;\n\n // we're done when there's nothing left to parse\n if (remaining.match(/^\\s*$/)) {\n break;\n }\n }\n var lastQ = self[self.length - 1];\n if (self.currentSubject != null) {\n lastQ.subject = self.currentSubject;\n }\n lastQ.edgeCount = self.edgeCount;\n lastQ.compoundCount = self.compoundCount;\n for (var i = 0; i < self.length; i++) {\n var q = self[i];\n\n // in future, this could potentially be allowed if there were operator precedence and detection of invalid combinations\n if (q.compoundCount > 0 && q.edgeCount > 0) {\n warn('The selector `' + selector + '` is invalid because it uses both a compound selector and an edge selector');\n return false;\n }\n if (q.edgeCount > 1) {\n warn('The selector `' + selector + '` is invalid because it uses multiple edge selectors');\n return false;\n } else if (q.edgeCount === 1) {\n warn('The selector `' + selector + '` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.');\n }\n }\n return true; // success\n};\n\n/**\n * Get the selector represented as a string. This value uses default formatting,\n * so things like spacing may differ from the input text passed to the constructor.\n * @returns {string} The selector string\n */\nvar toString = function toString() {\n if (this.toStringCache != null) {\n return this.toStringCache;\n }\n var clean = function clean(obj) {\n if (obj == null) {\n return '';\n } else {\n return obj;\n }\n };\n var cleanVal = function cleanVal(val) {\n if (string(val)) {\n return '\"' + val + '\"';\n } else {\n return clean(val);\n }\n };\n var space = function space(val) {\n return ' ' + val + ' ';\n };\n var checkToString = function checkToString(check, subject) {\n var type = check.type,\n value = check.value;\n switch (type) {\n case Type.GROUP:\n {\n var group = clean(value);\n return group.substring(0, group.length - 1);\n }\n case Type.DATA_COMPARE:\n {\n var field = check.field,\n operator = check.operator;\n return '[' + field + space(clean(operator)) + cleanVal(value) + ']';\n }\n case Type.DATA_BOOL:\n {\n var _operator = check.operator,\n _field = check.field;\n return '[' + clean(_operator) + _field + ']';\n }\n case Type.DATA_EXIST:\n {\n var _field2 = check.field;\n return '[' + _field2 + ']';\n }\n case Type.META_COMPARE:\n {\n var _operator2 = check.operator,\n _field3 = check.field;\n return '[[' + _field3 + space(clean(_operator2)) + cleanVal(value) + ']]';\n }\n case Type.STATE:\n {\n return value;\n }\n case Type.ID:\n {\n return '#' + value;\n }\n case Type.CLASS:\n {\n return '.' + value;\n }\n case Type.PARENT:\n case Type.CHILD:\n {\n return queryToString(check.parent, subject) + space('>') + queryToString(check.child, subject);\n }\n case Type.ANCESTOR:\n case Type.DESCENDANT:\n {\n return queryToString(check.ancestor, subject) + ' ' + queryToString(check.descendant, subject);\n }\n case Type.COMPOUND_SPLIT:\n {\n var lhs = queryToString(check.left, subject);\n var sub = queryToString(check.subject, subject);\n var rhs = queryToString(check.right, subject);\n return lhs + (lhs.length > 0 ? ' ' : '') + sub + rhs;\n }\n case Type.TRUE:\n {\n return '';\n }\n }\n };\n var queryToString = function queryToString(query, subject) {\n return query.checks.reduce(function (str, chk, i) {\n return str + (subject === query && i === 0 ? '$' : '') + checkToString(chk, subject);\n }, '');\n };\n var str = '';\n for (var i = 0; i < this.length; i++) {\n var query = this[i];\n str += queryToString(query, query.subject);\n if (this.length > 1 && i < this.length - 1) {\n str += ', ';\n }\n }\n this.toStringCache = str;\n return str;\n};\nvar parse$1 = {\n parse: parse,\n toString: toString\n};\n\nvar valCmp = function valCmp(fieldVal, operator, value) {\n var matches;\n var isFieldStr = string(fieldVal);\n var isFieldNum = number$1(fieldVal);\n var isValStr = string(value);\n var fieldStr, valStr;\n var caseInsensitive = false;\n var notExpr = false;\n var isIneqCmp = false;\n if (operator.indexOf('!') >= 0) {\n operator = operator.replace('!', '');\n notExpr = true;\n }\n if (operator.indexOf('@') >= 0) {\n operator = operator.replace('@', '');\n caseInsensitive = true;\n }\n if (isFieldStr || isValStr || caseInsensitive) {\n fieldStr = !isFieldStr && !isFieldNum ? '' : '' + fieldVal;\n valStr = '' + value;\n }\n\n // if we're doing a case insensitive comparison, then we're using a STRING comparison\n // even if we're comparing numbers\n if (caseInsensitive) {\n fieldVal = fieldStr = fieldStr.toLowerCase();\n value = valStr = valStr.toLowerCase();\n }\n switch (operator) {\n case '*=':\n matches = fieldStr.indexOf(valStr) >= 0;\n break;\n case '$=':\n matches = fieldStr.indexOf(valStr, fieldStr.length - valStr.length) >= 0;\n break;\n case '^=':\n matches = fieldStr.indexOf(valStr) === 0;\n break;\n case '=':\n matches = fieldVal === value;\n break;\n case '>':\n isIneqCmp = true;\n matches = fieldVal > value;\n break;\n case '>=':\n isIneqCmp = true;\n matches = fieldVal >= value;\n break;\n case '<':\n isIneqCmp = true;\n matches = fieldVal < value;\n break;\n case '<=':\n isIneqCmp = true;\n matches = fieldVal <= value;\n break;\n default:\n matches = false;\n break;\n }\n\n // apply the not op, but null vals for inequalities should always stay non-matching\n if (notExpr && (fieldVal != null || !isIneqCmp)) {\n matches = !matches;\n }\n return matches;\n};\nvar boolCmp = function boolCmp(fieldVal, operator) {\n switch (operator) {\n case '?':\n return fieldVal ? true : false;\n case '!':\n return fieldVal ? false : true;\n case '^':\n return fieldVal === undefined;\n }\n};\nvar existCmp = function existCmp(fieldVal) {\n return fieldVal !== undefined;\n};\nvar data$1 = function data(ele, field) {\n return ele.data(field);\n};\nvar meta = function meta(ele, field) {\n return ele[field]();\n};\n\n/** A lookup of `match(check, ele)` functions by `Type` int */\nvar match = [];\n\n/**\n * Returns whether the query matches for the element\n * @param query The `{ type, value, ... }` query object\n * @param ele The element to compare against\n*/\nvar matches$1 = function matches(query, ele) {\n return query.checks.every(function (chk) {\n return match[chk.type](chk, ele);\n });\n};\nmatch[Type.GROUP] = function (check, ele) {\n var group = check.value;\n return group === '*' || group === ele.group();\n};\nmatch[Type.STATE] = function (check, ele) {\n var stateSelector = check.value;\n return stateSelectorMatches(stateSelector, ele);\n};\nmatch[Type.ID] = function (check, ele) {\n var id = check.value;\n return ele.id() === id;\n};\nmatch[Type.CLASS] = function (check, ele) {\n var cls = check.value;\n return ele.hasClass(cls);\n};\nmatch[Type.META_COMPARE] = function (check, ele) {\n var field = check.field,\n operator = check.operator,\n value = check.value;\n return valCmp(meta(ele, field), operator, value);\n};\nmatch[Type.DATA_COMPARE] = function (check, ele) {\n var field = check.field,\n operator = check.operator,\n value = check.value;\n return valCmp(data$1(ele, field), operator, value);\n};\nmatch[Type.DATA_BOOL] = function (check, ele) {\n var field = check.field,\n operator = check.operator;\n return boolCmp(data$1(ele, field), operator);\n};\nmatch[Type.DATA_EXIST] = function (check, ele) {\n var field = check.field;\n check.operator;\n return existCmp(data$1(ele, field));\n};\nmatch[Type.UNDIRECTED_EDGE] = function (check, ele) {\n var qA = check.nodes[0];\n var qB = check.nodes[1];\n var src = ele.source();\n var tgt = ele.target();\n return matches$1(qA, src) && matches$1(qB, tgt) || matches$1(qB, src) && matches$1(qA, tgt);\n};\nmatch[Type.NODE_NEIGHBOR] = function (check, ele) {\n return matches$1(check.node, ele) && ele.neighborhood().some(function (n) {\n return n.isNode() && matches$1(check.neighbor, n);\n });\n};\nmatch[Type.DIRECTED_EDGE] = function (check, ele) {\n return matches$1(check.source, ele.source()) && matches$1(check.target, ele.target());\n};\nmatch[Type.NODE_SOURCE] = function (check, ele) {\n return matches$1(check.source, ele) && ele.outgoers().some(function (n) {\n return n.isNode() && matches$1(check.target, n);\n });\n};\nmatch[Type.NODE_TARGET] = function (check, ele) {\n return matches$1(check.target, ele) && ele.incomers().some(function (n) {\n return n.isNode() && matches$1(check.source, n);\n });\n};\nmatch[Type.CHILD] = function (check, ele) {\n return matches$1(check.child, ele) && matches$1(check.parent, ele.parent());\n};\nmatch[Type.PARENT] = function (check, ele) {\n return matches$1(check.parent, ele) && ele.children().some(function (c) {\n return matches$1(check.child, c);\n });\n};\nmatch[Type.DESCENDANT] = function (check, ele) {\n return matches$1(check.descendant, ele) && ele.ancestors().some(function (a) {\n return matches$1(check.ancestor, a);\n });\n};\nmatch[Type.ANCESTOR] = function (check, ele) {\n return matches$1(check.ancestor, ele) && ele.descendants().some(function (d) {\n return matches$1(check.descendant, d);\n });\n};\nmatch[Type.COMPOUND_SPLIT] = function (check, ele) {\n return matches$1(check.subject, ele) && matches$1(check.left, ele) && matches$1(check.right, ele);\n};\nmatch[Type.TRUE] = function () {\n return true;\n};\nmatch[Type.COLLECTION] = function (check, ele) {\n var collection = check.value;\n return collection.has(ele);\n};\nmatch[Type.FILTER] = function (check, ele) {\n var filter = check.value;\n return filter(ele);\n};\n\n// filter an existing collection\nvar filter = function filter(collection) {\n var self = this;\n\n // for 1 id #foo queries, just get the element\n if (self.length === 1 && self[0].checks.length === 1 && self[0].checks[0].type === Type.ID) {\n return collection.getElementById(self[0].checks[0].value).collection();\n }\n var selectorFunction = function selectorFunction(element) {\n for (var j = 0; j < self.length; j++) {\n var query = self[j];\n if (matches$1(query, element)) {\n return true;\n }\n }\n return false;\n };\n if (self.text() == null) {\n selectorFunction = function selectorFunction() {\n return true;\n };\n }\n return collection.filter(selectorFunction);\n}; // filter\n\n// does selector match a single element?\nvar matches = function matches(ele) {\n var self = this;\n for (var j = 0; j < self.length; j++) {\n var query = self[j];\n if (matches$1(query, ele)) {\n return true;\n }\n }\n return false;\n}; // matches\n\nvar matching = {\n matches: matches,\n filter: filter\n};\n\nvar Selector = function Selector(selector) {\n this.inputText = selector;\n this.currentSubject = null;\n this.compoundCount = 0;\n this.edgeCount = 0;\n this.length = 0;\n if (selector == null || string(selector) && selector.match(/^\\s*$/)) ; else if (elementOrCollection(selector)) {\n this.addQuery({\n checks: [{\n type: Type.COLLECTION,\n value: selector.collection()\n }]\n });\n } else if (fn$6(selector)) {\n this.addQuery({\n checks: [{\n type: Type.FILTER,\n value: selector\n }]\n });\n } else if (string(selector)) {\n if (!this.parse(selector)) {\n this.invalid = true;\n }\n } else {\n error('A selector must be created from a string; found ');\n }\n};\nvar selfn = Selector.prototype;\n[parse$1, matching].forEach(function (p) {\n return extend(selfn, p);\n});\nselfn.text = function () {\n return this.inputText;\n};\nselfn.size = function () {\n return this.length;\n};\nselfn.eq = function (i) {\n return this[i];\n};\nselfn.sameText = function (otherSel) {\n return !this.invalid && !otherSel.invalid && this.text() === otherSel.text();\n};\nselfn.addQuery = function (q) {\n this[this.length++] = q;\n};\nselfn.selector = selfn.toString;\n\nvar elesfn$g = {\n allAre: function allAre(selector) {\n var selObj = new Selector(selector);\n return this.every(function (ele) {\n return selObj.matches(ele);\n });\n },\n is: function is(selector) {\n var selObj = new Selector(selector);\n return this.some(function (ele) {\n return selObj.matches(ele);\n });\n },\n some: function some(fn, thisArg) {\n for (var i = 0; i < this.length; i++) {\n var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]);\n if (ret) {\n return true;\n }\n }\n return false;\n },\n every: function every(fn, thisArg) {\n for (var i = 0; i < this.length; i++) {\n var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]);\n if (!ret) {\n return false;\n }\n }\n return true;\n },\n same: function same(collection) {\n // cheap collection ref check\n if (this === collection) {\n return true;\n }\n collection = this.cy().collection(collection);\n var thisLength = this.length;\n var collectionLength = collection.length;\n\n // cheap length check\n if (thisLength !== collectionLength) {\n return false;\n }\n\n // cheap element ref check\n if (thisLength === 1) {\n return this[0] === collection[0];\n }\n return this.every(function (ele) {\n return collection.hasElementWithId(ele.id());\n });\n },\n anySame: function anySame(collection) {\n collection = this.cy().collection(collection);\n return this.some(function (ele) {\n return collection.hasElementWithId(ele.id());\n });\n },\n allAreNeighbors: function allAreNeighbors(collection) {\n collection = this.cy().collection(collection);\n var nhood = this.neighborhood();\n return collection.every(function (ele) {\n return nhood.hasElementWithId(ele.id());\n });\n },\n contains: function contains(collection) {\n collection = this.cy().collection(collection);\n var self = this;\n return collection.every(function (ele) {\n return self.hasElementWithId(ele.id());\n });\n }\n};\nelesfn$g.allAreNeighbours = elesfn$g.allAreNeighbors;\nelesfn$g.has = elesfn$g.contains;\nelesfn$g.equal = elesfn$g.equals = elesfn$g.same;\n\nvar cache = function cache(fn, name) {\n return function traversalCache(arg1, arg2, arg3, arg4) {\n var selectorOrEles = arg1;\n var eles = this;\n var key;\n if (selectorOrEles == null) {\n key = '';\n } else if (elementOrCollection(selectorOrEles) && selectorOrEles.length === 1) {\n key = selectorOrEles.id();\n }\n if (eles.length === 1 && key) {\n var _p = eles[0]._private;\n var tch = _p.traversalCache = _p.traversalCache || {};\n var ch = tch[name] = tch[name] || [];\n var hash = hashString(key);\n var cacheHit = ch[hash];\n if (cacheHit) {\n return cacheHit;\n } else {\n return ch[hash] = fn.call(eles, arg1, arg2, arg3, arg4);\n }\n } else {\n return fn.call(eles, arg1, arg2, arg3, arg4);\n }\n };\n};\n\nvar elesfn$f = {\n parent: function parent(selector) {\n var parents = [];\n\n // optimisation for single ele call\n if (this.length === 1) {\n var parent = this[0]._private.parent;\n if (parent) {\n return parent;\n }\n }\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var _parent = ele._private.parent;\n if (_parent) {\n parents.push(_parent);\n }\n }\n return this.spawn(parents, true).filter(selector);\n },\n parents: function parents(selector) {\n var parents = [];\n var eles = this.parent();\n while (eles.nonempty()) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n parents.push(ele);\n }\n eles = eles.parent();\n }\n return this.spawn(parents, true).filter(selector);\n },\n commonAncestors: function commonAncestors(selector) {\n var ancestors;\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var parents = ele.parents();\n ancestors = ancestors || parents;\n ancestors = ancestors.intersect(parents); // current list must be common with current ele parents set\n }\n\n return ancestors.filter(selector);\n },\n orphans: function orphans(selector) {\n return this.stdFilter(function (ele) {\n return ele.isOrphan();\n }).filter(selector);\n },\n nonorphans: function nonorphans(selector) {\n return this.stdFilter(function (ele) {\n return ele.isChild();\n }).filter(selector);\n },\n children: cache(function (selector) {\n var children = [];\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var eleChildren = ele._private.children;\n for (var j = 0; j < eleChildren.length; j++) {\n children.push(eleChildren[j]);\n }\n }\n return this.spawn(children, true).filter(selector);\n }, 'children'),\n siblings: function siblings(selector) {\n return this.parent().children().not(this).filter(selector);\n },\n isParent: function isParent() {\n var ele = this[0];\n if (ele) {\n return ele.isNode() && ele._private.children.length !== 0;\n }\n },\n isChildless: function isChildless() {\n var ele = this[0];\n if (ele) {\n return ele.isNode() && ele._private.children.length === 0;\n }\n },\n isChild: function isChild() {\n var ele = this[0];\n if (ele) {\n return ele.isNode() && ele._private.parent != null;\n }\n },\n isOrphan: function isOrphan() {\n var ele = this[0];\n if (ele) {\n return ele.isNode() && ele._private.parent == null;\n }\n },\n descendants: function descendants(selector) {\n var elements = [];\n function add(eles) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n elements.push(ele);\n if (ele.children().nonempty()) {\n add(ele.children());\n }\n }\n }\n add(this.children());\n return this.spawn(elements, true).filter(selector);\n }\n};\nfunction forEachCompound(eles, fn, includeSelf, recursiveStep) {\n var q = [];\n var did = new Set$1();\n var cy = eles.cy();\n var hasCompounds = cy.hasCompoundNodes();\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n if (includeSelf) {\n q.push(ele);\n } else if (hasCompounds) {\n recursiveStep(q, did, ele);\n }\n }\n while (q.length > 0) {\n var _ele = q.shift();\n fn(_ele);\n did.add(_ele.id());\n if (hasCompounds) {\n recursiveStep(q, did, _ele);\n }\n }\n return eles;\n}\nfunction addChildren(q, did, ele) {\n if (ele.isParent()) {\n var children = ele._private.children;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (!did.has(child.id())) {\n q.push(child);\n }\n }\n }\n}\n\n// very efficient version of eles.add( eles.descendants() ).forEach()\n// for internal use\nelesfn$f.forEachDown = function (fn) {\n var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return forEachCompound(this, fn, includeSelf, addChildren);\n};\nfunction addParent(q, did, ele) {\n if (ele.isChild()) {\n var parent = ele._private.parent;\n if (!did.has(parent.id())) {\n q.push(parent);\n }\n }\n}\nelesfn$f.forEachUp = function (fn) {\n var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return forEachCompound(this, fn, includeSelf, addParent);\n};\nfunction addParentAndChildren(q, did, ele) {\n addParent(q, did, ele);\n addChildren(q, did, ele);\n}\nelesfn$f.forEachUpAndDown = function (fn) {\n var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return forEachCompound(this, fn, includeSelf, addParentAndChildren);\n};\n\n// aliases\nelesfn$f.ancestors = elesfn$f.parents;\n\nvar fn$5, elesfn$e;\nfn$5 = elesfn$e = {\n data: define.data({\n field: 'data',\n bindingEvent: 'data',\n allowBinding: true,\n allowSetting: true,\n settingEvent: 'data',\n settingTriggersEvent: true,\n triggerFnName: 'trigger',\n allowGetting: true,\n immutableKeys: {\n 'id': true,\n 'source': true,\n 'target': true,\n 'parent': true\n },\n updateStyle: true\n }),\n removeData: define.removeData({\n field: 'data',\n event: 'data',\n triggerFnName: 'trigger',\n triggerEvent: true,\n immutableKeys: {\n 'id': true,\n 'source': true,\n 'target': true,\n 'parent': true\n },\n updateStyle: true\n }),\n scratch: define.data({\n field: 'scratch',\n bindingEvent: 'scratch',\n allowBinding: true,\n allowSetting: true,\n settingEvent: 'scratch',\n settingTriggersEvent: true,\n triggerFnName: 'trigger',\n allowGetting: true,\n updateStyle: true\n }),\n removeScratch: define.removeData({\n field: 'scratch',\n event: 'scratch',\n triggerFnName: 'trigger',\n triggerEvent: true,\n updateStyle: true\n }),\n rscratch: define.data({\n field: 'rscratch',\n allowBinding: false,\n allowSetting: true,\n settingTriggersEvent: false,\n allowGetting: true\n }),\n removeRscratch: define.removeData({\n field: 'rscratch',\n triggerEvent: false\n }),\n id: function id() {\n var ele = this[0];\n if (ele) {\n return ele._private.data.id;\n }\n }\n};\n\n// aliases\nfn$5.attr = fn$5.data;\nfn$5.removeAttr = fn$5.removeData;\nvar data = elesfn$e;\n\nvar elesfn$d = {};\nfunction defineDegreeFunction(callback) {\n return function (includeLoops) {\n var self = this;\n if (includeLoops === undefined) {\n includeLoops = true;\n }\n if (self.length === 0) {\n return;\n }\n if (self.isNode() && !self.removed()) {\n var degree = 0;\n var node = self[0];\n var connectedEdges = node._private.edges;\n for (var i = 0; i < connectedEdges.length; i++) {\n var edge = connectedEdges[i];\n if (!includeLoops && edge.isLoop()) {\n continue;\n }\n degree += callback(node, edge);\n }\n return degree;\n } else {\n return;\n }\n };\n}\nextend(elesfn$d, {\n degree: defineDegreeFunction(function (node, edge) {\n if (edge.source().same(edge.target())) {\n return 2;\n } else {\n return 1;\n }\n }),\n indegree: defineDegreeFunction(function (node, edge) {\n if (edge.target().same(node)) {\n return 1;\n } else {\n return 0;\n }\n }),\n outdegree: defineDegreeFunction(function (node, edge) {\n if (edge.source().same(node)) {\n return 1;\n } else {\n return 0;\n }\n })\n});\nfunction defineDegreeBoundsFunction(degreeFn, callback) {\n return function (includeLoops) {\n var ret;\n var nodes = this.nodes();\n for (var i = 0; i < nodes.length; i++) {\n var ele = nodes[i];\n var degree = ele[degreeFn](includeLoops);\n if (degree !== undefined && (ret === undefined || callback(degree, ret))) {\n ret = degree;\n }\n }\n return ret;\n };\n}\nextend(elesfn$d, {\n minDegree: defineDegreeBoundsFunction('degree', function (degree, min) {\n return degree < min;\n }),\n maxDegree: defineDegreeBoundsFunction('degree', function (degree, max) {\n return degree > max;\n }),\n minIndegree: defineDegreeBoundsFunction('indegree', function (degree, min) {\n return degree < min;\n }),\n maxIndegree: defineDegreeBoundsFunction('indegree', function (degree, max) {\n return degree > max;\n }),\n minOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, min) {\n return degree < min;\n }),\n maxOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, max) {\n return degree > max;\n })\n});\nextend(elesfn$d, {\n totalDegree: function totalDegree(includeLoops) {\n var total = 0;\n var nodes = this.nodes();\n for (var i = 0; i < nodes.length; i++) {\n total += nodes[i].degree(includeLoops);\n }\n return total;\n }\n});\n\nvar fn$4, elesfn$c;\nvar beforePositionSet = function beforePositionSet(eles, newPos, silent) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n if (!ele.locked()) {\n var oldPos = ele._private.position;\n var delta = {\n x: newPos.x != null ? newPos.x - oldPos.x : 0,\n y: newPos.y != null ? newPos.y - oldPos.y : 0\n };\n if (ele.isParent() && !(delta.x === 0 && delta.y === 0)) {\n ele.children().shift(delta, silent);\n }\n ele.dirtyBoundingBoxCache();\n }\n }\n};\nvar positionDef = {\n field: 'position',\n bindingEvent: 'position',\n allowBinding: true,\n allowSetting: true,\n settingEvent: 'position',\n settingTriggersEvent: true,\n triggerFnName: 'emitAndNotify',\n allowGetting: true,\n validKeys: ['x', 'y'],\n beforeGet: function beforeGet(ele) {\n ele.updateCompoundBounds();\n },\n beforeSet: function beforeSet(eles, newPos) {\n beforePositionSet(eles, newPos, false);\n },\n onSet: function onSet(eles) {\n eles.dirtyCompoundBoundsCache();\n },\n canSet: function canSet(ele) {\n return !ele.locked();\n }\n};\nfn$4 = elesfn$c = {\n position: define.data(positionDef),\n // position but no notification to renderer\n silentPosition: define.data(extend({}, positionDef, {\n allowBinding: false,\n allowSetting: true,\n settingTriggersEvent: false,\n allowGetting: false,\n beforeSet: function beforeSet(eles, newPos) {\n beforePositionSet(eles, newPos, true);\n },\n onSet: function onSet(eles) {\n eles.dirtyCompoundBoundsCache();\n }\n })),\n positions: function positions(pos, silent) {\n if (plainObject(pos)) {\n if (silent) {\n this.silentPosition(pos);\n } else {\n this.position(pos);\n }\n } else if (fn$6(pos)) {\n var _fn = pos;\n var cy = this.cy();\n cy.startBatch();\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var _pos = void 0;\n if (_pos = _fn(ele, i)) {\n if (silent) {\n ele.silentPosition(_pos);\n } else {\n ele.position(_pos);\n }\n }\n }\n cy.endBatch();\n }\n return this; // chaining\n },\n\n silentPositions: function silentPositions(pos) {\n return this.positions(pos, true);\n },\n shift: function shift(dim, val, silent) {\n var delta;\n if (plainObject(dim)) {\n delta = {\n x: number$1(dim.x) ? dim.x : 0,\n y: number$1(dim.y) ? dim.y : 0\n };\n silent = val;\n } else if (string(dim) && number$1(val)) {\n delta = {\n x: 0,\n y: 0\n };\n delta[dim] = val;\n }\n if (delta != null) {\n var cy = this.cy();\n cy.startBatch();\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n\n // exclude any node that is a descendant of the calling collection\n if (cy.hasCompoundNodes() && ele.isChild() && ele.ancestors().anySame(this)) {\n continue;\n }\n var pos = ele.position();\n var newPos = {\n x: pos.x + delta.x,\n y: pos.y + delta.y\n };\n if (silent) {\n ele.silentPosition(newPos);\n } else {\n ele.position(newPos);\n }\n }\n cy.endBatch();\n }\n return this;\n },\n silentShift: function silentShift(dim, val) {\n if (plainObject(dim)) {\n this.shift(dim, true);\n } else if (string(dim) && number$1(val)) {\n this.shift(dim, val, true);\n }\n return this;\n },\n // get/set the rendered (i.e. on screen) positon of the element\n renderedPosition: function renderedPosition(dim, val) {\n var ele = this[0];\n var cy = this.cy();\n var zoom = cy.zoom();\n var pan = cy.pan();\n var rpos = plainObject(dim) ? dim : undefined;\n var setting = rpos !== undefined || val !== undefined && string(dim);\n if (ele && ele.isNode()) {\n // must have an element and must be a node to return position\n if (setting) {\n for (var i = 0; i < this.length; i++) {\n var _ele = this[i];\n if (val !== undefined) {\n // set one dimension\n _ele.position(dim, (val - pan[dim]) / zoom);\n } else if (rpos !== undefined) {\n // set whole position\n _ele.position(renderedToModelPosition(rpos, zoom, pan));\n }\n }\n } else {\n // getting\n var pos = ele.position();\n rpos = modelToRenderedPosition(pos, zoom, pan);\n if (dim === undefined) {\n // then return the whole rendered position\n return rpos;\n } else {\n // then return the specified dimension\n return rpos[dim];\n }\n }\n } else if (!setting) {\n return undefined; // for empty collection case\n }\n\n return this; // chaining\n },\n\n // get/set the position relative to the parent\n relativePosition: function relativePosition(dim, val) {\n var ele = this[0];\n var cy = this.cy();\n var ppos = plainObject(dim) ? dim : undefined;\n var setting = ppos !== undefined || val !== undefined && string(dim);\n var hasCompoundNodes = cy.hasCompoundNodes();\n if (ele && ele.isNode()) {\n // must have an element and must be a node to return position\n if (setting) {\n for (var i = 0; i < this.length; i++) {\n var _ele2 = this[i];\n var parent = hasCompoundNodes ? _ele2.parent() : null;\n var hasParent = parent && parent.length > 0;\n var relativeToParent = hasParent;\n if (hasParent) {\n parent = parent[0];\n }\n var origin = relativeToParent ? parent.position() : {\n x: 0,\n y: 0\n };\n if (val !== undefined) {\n // set one dimension\n _ele2.position(dim, val + origin[dim]);\n } else if (ppos !== undefined) {\n // set whole position\n _ele2.position({\n x: ppos.x + origin.x,\n y: ppos.y + origin.y\n });\n }\n }\n } else {\n // getting\n var pos = ele.position();\n var _parent = hasCompoundNodes ? ele.parent() : null;\n var _hasParent = _parent && _parent.length > 0;\n var _relativeToParent = _hasParent;\n if (_hasParent) {\n _parent = _parent[0];\n }\n var _origin = _relativeToParent ? _parent.position() : {\n x: 0,\n y: 0\n };\n ppos = {\n x: pos.x - _origin.x,\n y: pos.y - _origin.y\n };\n if (dim === undefined) {\n // then return the whole rendered position\n return ppos;\n } else {\n // then return the specified dimension\n return ppos[dim];\n }\n }\n } else if (!setting) {\n return undefined; // for empty collection case\n }\n\n return this; // chaining\n }\n};\n\n// aliases\nfn$4.modelPosition = fn$4.point = fn$4.position;\nfn$4.modelPositions = fn$4.points = fn$4.positions;\nfn$4.renderedPoint = fn$4.renderedPosition;\nfn$4.relativePoint = fn$4.relativePosition;\nvar position = elesfn$c;\n\nvar fn$3, elesfn$b;\nfn$3 = elesfn$b = {};\nelesfn$b.renderedBoundingBox = function (options) {\n var bb = this.boundingBox(options);\n var cy = this.cy();\n var zoom = cy.zoom();\n var pan = cy.pan();\n var x1 = bb.x1 * zoom + pan.x;\n var x2 = bb.x2 * zoom + pan.x;\n var y1 = bb.y1 * zoom + pan.y;\n var y2 = bb.y2 * zoom + pan.y;\n return {\n x1: x1,\n x2: x2,\n y1: y1,\n y2: y2,\n w: x2 - x1,\n h: y2 - y1\n };\n};\nelesfn$b.dirtyCompoundBoundsCache = function () {\n var silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var cy = this.cy();\n if (!cy.styleEnabled() || !cy.hasCompoundNodes()) {\n return this;\n }\n this.forEachUp(function (ele) {\n if (ele.isParent()) {\n var _p = ele._private;\n _p.compoundBoundsClean = false;\n _p.bbCache = null;\n if (!silent) {\n ele.emitAndNotify('bounds');\n }\n }\n });\n return this;\n};\nelesfn$b.updateCompoundBounds = function () {\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var cy = this.cy();\n\n // not possible to do on non-compound graphs or with the style disabled\n if (!cy.styleEnabled() || !cy.hasCompoundNodes()) {\n return this;\n }\n\n // save cycles when batching -- but bounds will be stale (or not exist yet)\n if (!force && cy.batching()) {\n return this;\n }\n function update(parent) {\n if (!parent.isParent()) {\n return;\n }\n var _p = parent._private;\n var children = parent.children();\n var includeLabels = parent.pstyle('compound-sizing-wrt-labels').value === 'include';\n var min = {\n width: {\n val: parent.pstyle('min-width').pfValue,\n left: parent.pstyle('min-width-bias-left'),\n right: parent.pstyle('min-width-bias-right')\n },\n height: {\n val: parent.pstyle('min-height').pfValue,\n top: parent.pstyle('min-height-bias-top'),\n bottom: parent.pstyle('min-height-bias-bottom')\n }\n };\n var bb = children.boundingBox({\n includeLabels: includeLabels,\n includeOverlays: false,\n // updating the compound bounds happens outside of the regular\n // cache cycle (i.e. before fired events)\n useCache: false\n });\n var pos = _p.position;\n\n // if children take up zero area then keep position and fall back on stylesheet w/h\n if (bb.w === 0 || bb.h === 0) {\n bb = {\n w: parent.pstyle('width').pfValue,\n h: parent.pstyle('height').pfValue\n };\n bb.x1 = pos.x - bb.w / 2;\n bb.x2 = pos.x + bb.w / 2;\n bb.y1 = pos.y - bb.h / 2;\n bb.y2 = pos.y + bb.h / 2;\n }\n function computeBiasValues(propDiff, propBias, propBiasComplement) {\n var biasDiff = 0;\n var biasComplementDiff = 0;\n var biasTotal = propBias + propBiasComplement;\n if (propDiff > 0 && biasTotal > 0) {\n biasDiff = propBias / biasTotal * propDiff;\n biasComplementDiff = propBiasComplement / biasTotal * propDiff;\n }\n return {\n biasDiff: biasDiff,\n biasComplementDiff: biasComplementDiff\n };\n }\n function computePaddingValues(width, height, paddingObject, relativeTo) {\n // Assuming percentage is number from 0 to 1\n if (paddingObject.units === '%') {\n switch (relativeTo) {\n case 'width':\n return width > 0 ? paddingObject.pfValue * width : 0;\n case 'height':\n return height > 0 ? paddingObject.pfValue * height : 0;\n case 'average':\n return width > 0 && height > 0 ? paddingObject.pfValue * (width + height) / 2 : 0;\n case 'min':\n return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * height : paddingObject.pfValue * width : 0;\n case 'max':\n return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * width : paddingObject.pfValue * height : 0;\n default:\n return 0;\n }\n } else if (paddingObject.units === 'px') {\n return paddingObject.pfValue;\n } else {\n return 0;\n }\n }\n var leftVal = min.width.left.value;\n if (min.width.left.units === 'px' && min.width.val > 0) {\n leftVal = leftVal * 100 / min.width.val;\n }\n var rightVal = min.width.right.value;\n if (min.width.right.units === 'px' && min.width.val > 0) {\n rightVal = rightVal * 100 / min.width.val;\n }\n var topVal = min.height.top.value;\n if (min.height.top.units === 'px' && min.height.val > 0) {\n topVal = topVal * 100 / min.height.val;\n }\n var bottomVal = min.height.bottom.value;\n if (min.height.bottom.units === 'px' && min.height.val > 0) {\n bottomVal = bottomVal * 100 / min.height.val;\n }\n var widthBiasDiffs = computeBiasValues(min.width.val - bb.w, leftVal, rightVal);\n var diffLeft = widthBiasDiffs.biasDiff;\n var diffRight = widthBiasDiffs.biasComplementDiff;\n var heightBiasDiffs = computeBiasValues(min.height.val - bb.h, topVal, bottomVal);\n var diffTop = heightBiasDiffs.biasDiff;\n var diffBottom = heightBiasDiffs.biasComplementDiff;\n _p.autoPadding = computePaddingValues(bb.w, bb.h, parent.pstyle('padding'), parent.pstyle('padding-relative-to').value);\n _p.autoWidth = Math.max(bb.w, min.width.val);\n pos.x = (-diffLeft + bb.x1 + bb.x2 + diffRight) / 2;\n _p.autoHeight = Math.max(bb.h, min.height.val);\n pos.y = (-diffTop + bb.y1 + bb.y2 + diffBottom) / 2;\n }\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var _p = ele._private;\n if (!_p.compoundBoundsClean || force) {\n update(ele);\n if (!cy.batching()) {\n _p.compoundBoundsClean = true;\n }\n }\n }\n return this;\n};\nvar noninf = function noninf(x) {\n if (x === Infinity || x === -Infinity) {\n return 0;\n }\n return x;\n};\nvar updateBounds = function updateBounds(b, x1, y1, x2, y2) {\n // don't update with zero area boxes\n if (x2 - x1 === 0 || y2 - y1 === 0) {\n return;\n }\n\n // don't update with null dim\n if (x1 == null || y1 == null || x2 == null || y2 == null) {\n return;\n }\n b.x1 = x1 < b.x1 ? x1 : b.x1;\n b.x2 = x2 > b.x2 ? x2 : b.x2;\n b.y1 = y1 < b.y1 ? y1 : b.y1;\n b.y2 = y2 > b.y2 ? y2 : b.y2;\n b.w = b.x2 - b.x1;\n b.h = b.y2 - b.y1;\n};\nvar updateBoundsFromBox = function updateBoundsFromBox(b, b2) {\n if (b2 == null) {\n return b;\n }\n return updateBounds(b, b2.x1, b2.y1, b2.x2, b2.y2);\n};\nvar prefixedProperty = function prefixedProperty(obj, field, prefix) {\n return getPrefixedProperty(obj, field, prefix);\n};\nvar updateBoundsFromArrow = function updateBoundsFromArrow(bounds, ele, prefix) {\n if (ele.cy().headless()) {\n return;\n }\n var _p = ele._private;\n var rstyle = _p.rstyle;\n var halfArW = rstyle.arrowWidth / 2;\n var arrowType = ele.pstyle(prefix + '-arrow-shape').value;\n var x;\n var y;\n if (arrowType !== 'none') {\n if (prefix === 'source') {\n x = rstyle.srcX;\n y = rstyle.srcY;\n } else if (prefix === 'target') {\n x = rstyle.tgtX;\n y = rstyle.tgtY;\n } else {\n x = rstyle.midX;\n y = rstyle.midY;\n }\n\n // always store the individual arrow bounds\n var bbs = _p.arrowBounds = _p.arrowBounds || {};\n var bb = bbs[prefix] = bbs[prefix] || {};\n bb.x1 = x - halfArW;\n bb.y1 = y - halfArW;\n bb.x2 = x + halfArW;\n bb.y2 = y + halfArW;\n bb.w = bb.x2 - bb.x1;\n bb.h = bb.y2 - bb.y1;\n expandBoundingBox(bb, 1);\n updateBounds(bounds, bb.x1, bb.y1, bb.x2, bb.y2);\n }\n};\nvar updateBoundsFromLabel = function updateBoundsFromLabel(bounds, ele, prefix) {\n if (ele.cy().headless()) {\n return;\n }\n var prefixDash;\n if (prefix) {\n prefixDash = prefix + '-';\n } else {\n prefixDash = '';\n }\n var _p = ele._private;\n var rstyle = _p.rstyle;\n var label = ele.pstyle(prefixDash + 'label').strValue;\n if (label) {\n var halign = ele.pstyle('text-halign');\n var valign = ele.pstyle('text-valign');\n var labelWidth = prefixedProperty(rstyle, 'labelWidth', prefix);\n var labelHeight = prefixedProperty(rstyle, 'labelHeight', prefix);\n var labelX = prefixedProperty(rstyle, 'labelX', prefix);\n var labelY = prefixedProperty(rstyle, 'labelY', prefix);\n var marginX = ele.pstyle(prefixDash + 'text-margin-x').pfValue;\n var marginY = ele.pstyle(prefixDash + 'text-margin-y').pfValue;\n var isEdge = ele.isEdge();\n var rotation = ele.pstyle(prefixDash + 'text-rotation');\n var outlineWidth = ele.pstyle('text-outline-width').pfValue;\n var borderWidth = ele.pstyle('text-border-width').pfValue;\n var halfBorderWidth = borderWidth / 2;\n var padding = ele.pstyle('text-background-padding').pfValue;\n var marginOfError = 2; // expand to work around browser dimension inaccuracies\n\n var lh = labelHeight;\n var lw = labelWidth;\n var lw_2 = lw / 2;\n var lh_2 = lh / 2;\n var lx1, lx2, ly1, ly2;\n if (isEdge) {\n lx1 = labelX - lw_2;\n lx2 = labelX + lw_2;\n ly1 = labelY - lh_2;\n ly2 = labelY + lh_2;\n } else {\n switch (halign.value) {\n case 'left':\n lx1 = labelX - lw;\n lx2 = labelX;\n break;\n case 'center':\n lx1 = labelX - lw_2;\n lx2 = labelX + lw_2;\n break;\n case 'right':\n lx1 = labelX;\n lx2 = labelX + lw;\n break;\n }\n switch (valign.value) {\n case 'top':\n ly1 = labelY - lh;\n ly2 = labelY;\n break;\n case 'center':\n ly1 = labelY - lh_2;\n ly2 = labelY + lh_2;\n break;\n case 'bottom':\n ly1 = labelY;\n ly2 = labelY + lh;\n break;\n }\n }\n\n // shift by margin and expand by outline and border\n lx1 += marginX - Math.max(outlineWidth, halfBorderWidth) - padding - marginOfError;\n lx2 += marginX + Math.max(outlineWidth, halfBorderWidth) + padding + marginOfError;\n ly1 += marginY - Math.max(outlineWidth, halfBorderWidth) - padding - marginOfError;\n ly2 += marginY + Math.max(outlineWidth, halfBorderWidth) + padding + marginOfError;\n\n // always store the unrotated label bounds separately\n var bbPrefix = prefix || 'main';\n var bbs = _p.labelBounds;\n var bb = bbs[bbPrefix] = bbs[bbPrefix] || {};\n bb.x1 = lx1;\n bb.y1 = ly1;\n bb.x2 = lx2;\n bb.y2 = ly2;\n bb.w = lx2 - lx1;\n bb.h = ly2 - ly1;\n var isAutorotate = isEdge && rotation.strValue === 'autorotate';\n var isPfValue = rotation.pfValue != null && rotation.pfValue !== 0;\n if (isAutorotate || isPfValue) {\n var theta = isAutorotate ? prefixedProperty(_p.rstyle, 'labelAngle', prefix) : rotation.pfValue;\n var cos = Math.cos(theta);\n var sin = Math.sin(theta);\n\n // rotation point (default value for center-center)\n var xo = (lx1 + lx2) / 2;\n var yo = (ly1 + ly2) / 2;\n if (!isEdge) {\n switch (halign.value) {\n case 'left':\n xo = lx2;\n break;\n case 'right':\n xo = lx1;\n break;\n }\n switch (valign.value) {\n case 'top':\n yo = ly2;\n break;\n case 'bottom':\n yo = ly1;\n break;\n }\n }\n var rotate = function rotate(x, y) {\n x = x - xo;\n y = y - yo;\n return {\n x: x * cos - y * sin + xo,\n y: x * sin + y * cos + yo\n };\n };\n var px1y1 = rotate(lx1, ly1);\n var px1y2 = rotate(lx1, ly2);\n var px2y1 = rotate(lx2, ly1);\n var px2y2 = rotate(lx2, ly2);\n lx1 = Math.min(px1y1.x, px1y2.x, px2y1.x, px2y2.x);\n lx2 = Math.max(px1y1.x, px1y2.x, px2y1.x, px2y2.x);\n ly1 = Math.min(px1y1.y, px1y2.y, px2y1.y, px2y2.y);\n ly2 = Math.max(px1y1.y, px1y2.y, px2y1.y, px2y2.y);\n }\n var bbPrefixRot = bbPrefix + 'Rot';\n var bbRot = bbs[bbPrefixRot] = bbs[bbPrefixRot] || {};\n bbRot.x1 = lx1;\n bbRot.y1 = ly1;\n bbRot.x2 = lx2;\n bbRot.y2 = ly2;\n bbRot.w = lx2 - lx1;\n bbRot.h = ly2 - ly1;\n updateBounds(bounds, lx1, ly1, lx2, ly2);\n updateBounds(_p.labelBounds.all, lx1, ly1, lx2, ly2);\n }\n return bounds;\n};\n\n// get the bounding box of the elements (in raw model position)\nvar boundingBoxImpl = function boundingBoxImpl(ele, options) {\n var cy = ele._private.cy;\n var styleEnabled = cy.styleEnabled();\n var headless = cy.headless();\n var bounds = makeBoundingBox();\n var _p = ele._private;\n var isNode = ele.isNode();\n var isEdge = ele.isEdge();\n var ex1, ex2, ey1, ey2; // extrema of body / lines\n var x, y; // node pos\n var rstyle = _p.rstyle;\n var manualExpansion = isNode && styleEnabled ? ele.pstyle('bounds-expansion').pfValue : [0];\n\n // must use `display` prop only, as reading `compound.width()` causes recursion\n // (other factors like width values will be considered later in this function anyway)\n var isDisplayed = function isDisplayed(ele) {\n return ele.pstyle('display').value !== 'none';\n };\n var displayed = !styleEnabled || isDisplayed(ele)\n\n // must take into account connected nodes b/c of implicit edge hiding on display:none node\n && (!isEdge || isDisplayed(ele.source()) && isDisplayed(ele.target()));\n if (displayed) {\n // displayed suffices, since we will find zero area eles anyway\n var overlayOpacity = 0;\n var overlayPadding = 0;\n if (styleEnabled && options.includeOverlays) {\n overlayOpacity = ele.pstyle('overlay-opacity').value;\n if (overlayOpacity !== 0) {\n overlayPadding = ele.pstyle('overlay-padding').value;\n }\n }\n var underlayOpacity = 0;\n var underlayPadding = 0;\n if (styleEnabled && options.includeUnderlays) {\n underlayOpacity = ele.pstyle('underlay-opacity').value;\n if (underlayOpacity !== 0) {\n underlayPadding = ele.pstyle('underlay-padding').value;\n }\n }\n var padding = Math.max(overlayPadding, underlayPadding);\n var w = 0;\n var wHalf = 0;\n if (styleEnabled) {\n w = ele.pstyle('width').pfValue;\n wHalf = w / 2;\n }\n if (isNode && options.includeNodes) {\n var pos = ele.position();\n x = pos.x;\n y = pos.y;\n var _w = ele.outerWidth();\n var halfW = _w / 2;\n var h = ele.outerHeight();\n var halfH = h / 2;\n\n // handle node dimensions\n /////////////////////////\n\n ex1 = x - halfW;\n ex2 = x + halfW;\n ey1 = y - halfH;\n ey2 = y + halfH;\n updateBounds(bounds, ex1, ey1, ex2, ey2);\n } else if (isEdge && options.includeEdges) {\n if (styleEnabled && !headless) {\n var curveStyle = ele.pstyle('curve-style').strValue;\n\n // handle edge dimensions (rough box estimate)\n //////////////////////////////////////////////\n\n ex1 = Math.min(rstyle.srcX, rstyle.midX, rstyle.tgtX);\n ex2 = Math.max(rstyle.srcX, rstyle.midX, rstyle.tgtX);\n ey1 = Math.min(rstyle.srcY, rstyle.midY, rstyle.tgtY);\n ey2 = Math.max(rstyle.srcY, rstyle.midY, rstyle.tgtY);\n\n // take into account edge width\n ex1 -= wHalf;\n ex2 += wHalf;\n ey1 -= wHalf;\n ey2 += wHalf;\n updateBounds(bounds, ex1, ey1, ex2, ey2);\n\n // precise edges\n ////////////////\n\n if (curveStyle === 'haystack') {\n var hpts = rstyle.haystackPts;\n if (hpts && hpts.length === 2) {\n ex1 = hpts[0].x;\n ey1 = hpts[0].y;\n ex2 = hpts[1].x;\n ey2 = hpts[1].y;\n if (ex1 > ex2) {\n var temp = ex1;\n ex1 = ex2;\n ex2 = temp;\n }\n if (ey1 > ey2) {\n var _temp = ey1;\n ey1 = ey2;\n ey2 = _temp;\n }\n updateBounds(bounds, ex1 - wHalf, ey1 - wHalf, ex2 + wHalf, ey2 + wHalf);\n }\n } else if (curveStyle === 'bezier' || curveStyle === 'unbundled-bezier' || curveStyle === 'segments' || curveStyle === 'taxi') {\n var pts;\n switch (curveStyle) {\n case 'bezier':\n case 'unbundled-bezier':\n pts = rstyle.bezierPts;\n break;\n case 'segments':\n case 'taxi':\n pts = rstyle.linePts;\n break;\n }\n if (pts != null) {\n for (var j = 0; j < pts.length; j++) {\n var pt = pts[j];\n ex1 = pt.x - wHalf;\n ex2 = pt.x + wHalf;\n ey1 = pt.y - wHalf;\n ey2 = pt.y + wHalf;\n updateBounds(bounds, ex1, ey1, ex2, ey2);\n }\n }\n } // bezier-like or segment-like edge\n } else {\n // headless or style disabled\n\n // fallback on source and target positions\n //////////////////////////////////////////\n\n var n1 = ele.source();\n var n1pos = n1.position();\n var n2 = ele.target();\n var n2pos = n2.position();\n ex1 = n1pos.x;\n ex2 = n2pos.x;\n ey1 = n1pos.y;\n ey2 = n2pos.y;\n if (ex1 > ex2) {\n var _temp2 = ex1;\n ex1 = ex2;\n ex2 = _temp2;\n }\n if (ey1 > ey2) {\n var _temp3 = ey1;\n ey1 = ey2;\n ey2 = _temp3;\n }\n\n // take into account edge width\n ex1 -= wHalf;\n ex2 += wHalf;\n ey1 -= wHalf;\n ey2 += wHalf;\n updateBounds(bounds, ex1, ey1, ex2, ey2);\n } // headless or style disabled\n } // edges\n\n // handle edge arrow size\n /////////////////////////\n\n if (styleEnabled && options.includeEdges && isEdge) {\n updateBoundsFromArrow(bounds, ele, 'mid-source');\n updateBoundsFromArrow(bounds, ele, 'mid-target');\n updateBoundsFromArrow(bounds, ele, 'source');\n updateBoundsFromArrow(bounds, ele, 'target');\n }\n\n // ghost\n ////////\n\n if (styleEnabled) {\n var ghost = ele.pstyle('ghost').value === 'yes';\n if (ghost) {\n var gx = ele.pstyle('ghost-offset-x').pfValue;\n var gy = ele.pstyle('ghost-offset-y').pfValue;\n updateBounds(bounds, bounds.x1 + gx, bounds.y1 + gy, bounds.x2 + gx, bounds.y2 + gy);\n }\n }\n\n // always store the body bounds separately from the labels\n var bbBody = _p.bodyBounds = _p.bodyBounds || {};\n assignBoundingBox(bbBody, bounds);\n expandBoundingBoxSides(bbBody, manualExpansion);\n expandBoundingBox(bbBody, 1); // expand to work around browser dimension inaccuracies\n\n // overlay\n //////////\n\n if (styleEnabled) {\n ex1 = bounds.x1;\n ex2 = bounds.x2;\n ey1 = bounds.y1;\n ey2 = bounds.y2;\n updateBounds(bounds, ex1 - padding, ey1 - padding, ex2 + padding, ey2 + padding);\n }\n\n // always store the body bounds separately from the labels\n var bbOverlay = _p.overlayBounds = _p.overlayBounds || {};\n assignBoundingBox(bbOverlay, bounds);\n expandBoundingBoxSides(bbOverlay, manualExpansion);\n expandBoundingBox(bbOverlay, 1); // expand to work around browser dimension inaccuracies\n\n // handle label dimensions\n //////////////////////////\n\n var bbLabels = _p.labelBounds = _p.labelBounds || {};\n if (bbLabels.all != null) {\n clearBoundingBox(bbLabels.all);\n } else {\n bbLabels.all = makeBoundingBox();\n }\n if (styleEnabled && options.includeLabels) {\n if (options.includeMainLabels) {\n updateBoundsFromLabel(bounds, ele, null);\n }\n if (isEdge) {\n if (options.includeSourceLabels) {\n updateBoundsFromLabel(bounds, ele, 'source');\n }\n if (options.includeTargetLabels) {\n updateBoundsFromLabel(bounds, ele, 'target');\n }\n }\n } // style enabled for labels\n } // if displayed\n\n bounds.x1 = noninf(bounds.x1);\n bounds.y1 = noninf(bounds.y1);\n bounds.x2 = noninf(bounds.x2);\n bounds.y2 = noninf(bounds.y2);\n bounds.w = noninf(bounds.x2 - bounds.x1);\n bounds.h = noninf(bounds.y2 - bounds.y1);\n if (bounds.w > 0 && bounds.h > 0 && displayed) {\n expandBoundingBoxSides(bounds, manualExpansion);\n\n // expand bounds by 1 because antialiasing can increase the visual/effective size by 1 on all sides\n expandBoundingBox(bounds, 1);\n }\n return bounds;\n};\nvar getKey = function getKey(opts) {\n var i = 0;\n var tf = function tf(val) {\n return (val ? 1 : 0) << i++;\n };\n var key = 0;\n key += tf(opts.incudeNodes);\n key += tf(opts.includeEdges);\n key += tf(opts.includeLabels);\n key += tf(opts.includeMainLabels);\n key += tf(opts.includeSourceLabels);\n key += tf(opts.includeTargetLabels);\n key += tf(opts.includeOverlays);\n return key;\n};\nvar getBoundingBoxPosKey = function getBoundingBoxPosKey(ele) {\n if (ele.isEdge()) {\n var p1 = ele.source().position();\n var p2 = ele.target().position();\n var r = function r(x) {\n return Math.round(x);\n };\n return hashIntsArray([r(p1.x), r(p1.y), r(p2.x), r(p2.y)]);\n } else {\n return 0;\n }\n};\nvar cachedBoundingBoxImpl = function cachedBoundingBoxImpl(ele, opts) {\n var _p = ele._private;\n var bb;\n var isEdge = ele.isEdge();\n var key = opts == null ? defBbOptsKey : getKey(opts);\n var usingDefOpts = key === defBbOptsKey;\n var currPosKey = getBoundingBoxPosKey(ele);\n var isPosKeySame = _p.bbCachePosKey === currPosKey;\n var useCache = opts.useCache && isPosKeySame;\n var isDirty = function isDirty(ele) {\n return ele._private.bbCache == null || ele._private.styleDirty;\n };\n var needRecalc = !useCache || isDirty(ele) || isEdge && isDirty(ele.source()) || isDirty(ele.target());\n if (needRecalc) {\n if (!isPosKeySame) {\n ele.recalculateRenderedStyle(useCache);\n }\n bb = boundingBoxImpl(ele, defBbOpts);\n _p.bbCache = bb;\n _p.bbCachePosKey = currPosKey;\n } else {\n bb = _p.bbCache;\n }\n\n // not using def opts => need to build up bb from combination of sub bbs\n if (!usingDefOpts) {\n var isNode = ele.isNode();\n bb = makeBoundingBox();\n if (opts.includeNodes && isNode || opts.includeEdges && !isNode) {\n if (opts.includeOverlays) {\n updateBoundsFromBox(bb, _p.overlayBounds);\n } else {\n updateBoundsFromBox(bb, _p.bodyBounds);\n }\n }\n if (opts.includeLabels) {\n if (opts.includeMainLabels && (!isEdge || opts.includeSourceLabels && opts.includeTargetLabels)) {\n updateBoundsFromBox(bb, _p.labelBounds.all);\n } else {\n if (opts.includeMainLabels) {\n updateBoundsFromBox(bb, _p.labelBounds.mainRot);\n }\n if (opts.includeSourceLabels) {\n updateBoundsFromBox(bb, _p.labelBounds.sourceRot);\n }\n if (opts.includeTargetLabels) {\n updateBoundsFromBox(bb, _p.labelBounds.targetRot);\n }\n }\n }\n bb.w = bb.x2 - bb.x1;\n bb.h = bb.y2 - bb.y1;\n }\n return bb;\n};\nvar defBbOpts = {\n includeNodes: true,\n includeEdges: true,\n includeLabels: true,\n includeMainLabels: true,\n includeSourceLabels: true,\n includeTargetLabels: true,\n includeOverlays: true,\n includeUnderlays: true,\n useCache: true\n};\nvar defBbOptsKey = getKey(defBbOpts);\nvar filledBbOpts = defaults$g(defBbOpts);\nelesfn$b.boundingBox = function (options) {\n var bounds;\n\n // the main usecase is ele.boundingBox() for a single element with no/def options\n // specified s.t. the cache is used, so check for this case to make it faster by\n // avoiding the overhead of the rest of the function\n if (this.length === 1 && this[0]._private.bbCache != null && !this[0]._private.styleDirty && (options === undefined || options.useCache === undefined || options.useCache === true)) {\n if (options === undefined) {\n options = defBbOpts;\n } else {\n options = filledBbOpts(options);\n }\n bounds = cachedBoundingBoxImpl(this[0], options);\n } else {\n bounds = makeBoundingBox();\n options = options || defBbOpts;\n var opts = filledBbOpts(options);\n var eles = this;\n var cy = eles.cy();\n var styleEnabled = cy.styleEnabled();\n if (styleEnabled) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var _p = ele._private;\n var currPosKey = getBoundingBoxPosKey(ele);\n var isPosKeySame = _p.bbCachePosKey === currPosKey;\n var useCache = opts.useCache && isPosKeySame && !_p.styleDirty;\n ele.recalculateRenderedStyle(useCache);\n }\n }\n this.updateCompoundBounds(!options.useCache);\n for (var _i = 0; _i < eles.length; _i++) {\n var _ele = eles[_i];\n updateBoundsFromBox(bounds, cachedBoundingBoxImpl(_ele, opts));\n }\n }\n bounds.x1 = noninf(bounds.x1);\n bounds.y1 = noninf(bounds.y1);\n bounds.x2 = noninf(bounds.x2);\n bounds.y2 = noninf(bounds.y2);\n bounds.w = noninf(bounds.x2 - bounds.x1);\n bounds.h = noninf(bounds.y2 - bounds.y1);\n return bounds;\n};\nelesfn$b.dirtyBoundingBoxCache = function () {\n for (var i = 0; i < this.length; i++) {\n var _p = this[i]._private;\n _p.bbCache = null;\n _p.bbCachePosKey = null;\n _p.bodyBounds = null;\n _p.overlayBounds = null;\n _p.labelBounds.all = null;\n _p.labelBounds.source = null;\n _p.labelBounds.target = null;\n _p.labelBounds.main = null;\n _p.labelBounds.sourceRot = null;\n _p.labelBounds.targetRot = null;\n _p.labelBounds.mainRot = null;\n _p.arrowBounds.source = null;\n _p.arrowBounds.target = null;\n _p.arrowBounds['mid-source'] = null;\n _p.arrowBounds['mid-target'] = null;\n }\n this.emitAndNotify('bounds');\n return this;\n};\n\n// private helper to get bounding box for custom node positions\n// - good for perf in certain cases but currently requires dirtying the rendered style\n// - would be better to not modify the nodes but the nodes are read directly everywhere in the renderer...\n// - try to use for only things like discrete layouts where the node position would change anyway\nelesfn$b.boundingBoxAt = function (fn) {\n var nodes = this.nodes();\n var cy = this.cy();\n var hasCompoundNodes = cy.hasCompoundNodes();\n var parents = cy.collection();\n if (hasCompoundNodes) {\n parents = nodes.filter(function (node) {\n return node.isParent();\n });\n nodes = nodes.not(parents);\n }\n if (plainObject(fn)) {\n var obj = fn;\n fn = function fn() {\n return obj;\n };\n }\n var storeOldPos = function storeOldPos(node, i) {\n return node._private.bbAtOldPos = fn(node, i);\n };\n var getOldPos = function getOldPos(node) {\n return node._private.bbAtOldPos;\n };\n cy.startBatch();\n nodes.forEach(storeOldPos).silentPositions(fn);\n if (hasCompoundNodes) {\n parents.dirtyCompoundBoundsCache();\n parents.dirtyBoundingBoxCache();\n parents.updateCompoundBounds(true); // force update b/c we're inside a batch cycle\n }\n\n var bb = copyBoundingBox(this.boundingBox({\n useCache: false\n }));\n nodes.silentPositions(getOldPos);\n if (hasCompoundNodes) {\n parents.dirtyCompoundBoundsCache();\n parents.dirtyBoundingBoxCache();\n parents.updateCompoundBounds(true); // force update b/c we're inside a batch cycle\n }\n\n cy.endBatch();\n return bb;\n};\nfn$3.boundingbox = fn$3.bb = fn$3.boundingBox;\nfn$3.renderedBoundingbox = fn$3.renderedBoundingBox;\nvar bounds = elesfn$b;\n\nvar fn$2, elesfn$a;\nfn$2 = elesfn$a = {};\nvar defineDimFns = function defineDimFns(opts) {\n opts.uppercaseName = capitalize(opts.name);\n opts.autoName = 'auto' + opts.uppercaseName;\n opts.labelName = 'label' + opts.uppercaseName;\n opts.outerName = 'outer' + opts.uppercaseName;\n opts.uppercaseOuterName = capitalize(opts.outerName);\n fn$2[opts.name] = function dimImpl() {\n var ele = this[0];\n var _p = ele._private;\n var cy = _p.cy;\n var styleEnabled = cy._private.styleEnabled;\n if (ele) {\n if (styleEnabled) {\n if (ele.isParent()) {\n ele.updateCompoundBounds();\n return _p[opts.autoName] || 0;\n }\n var d = ele.pstyle(opts.name);\n switch (d.strValue) {\n case 'label':\n ele.recalculateRenderedStyle();\n return _p.rstyle[opts.labelName] || 0;\n default:\n return d.pfValue;\n }\n } else {\n return 1;\n }\n }\n };\n fn$2['outer' + opts.uppercaseName] = function outerDimImpl() {\n var ele = this[0];\n var _p = ele._private;\n var cy = _p.cy;\n var styleEnabled = cy._private.styleEnabled;\n if (ele) {\n if (styleEnabled) {\n var dim = ele[opts.name]();\n var border = ele.pstyle('border-width').pfValue; // n.b. 1/2 each side\n var padding = 2 * ele.padding();\n return dim + border + padding;\n } else {\n return 1;\n }\n }\n };\n fn$2['rendered' + opts.uppercaseName] = function renderedDimImpl() {\n var ele = this[0];\n if (ele) {\n var d = ele[opts.name]();\n return d * this.cy().zoom();\n }\n };\n fn$2['rendered' + opts.uppercaseOuterName] = function renderedOuterDimImpl() {\n var ele = this[0];\n if (ele) {\n var od = ele[opts.outerName]();\n return od * this.cy().zoom();\n }\n };\n};\ndefineDimFns({\n name: 'width'\n});\ndefineDimFns({\n name: 'height'\n});\nelesfn$a.padding = function () {\n var ele = this[0];\n var _p = ele._private;\n if (ele.isParent()) {\n ele.updateCompoundBounds();\n if (_p.autoPadding !== undefined) {\n return _p.autoPadding;\n } else {\n return ele.pstyle('padding').pfValue;\n }\n } else {\n return ele.pstyle('padding').pfValue;\n }\n};\nelesfn$a.paddedHeight = function () {\n var ele = this[0];\n return ele.height() + 2 * ele.padding();\n};\nelesfn$a.paddedWidth = function () {\n var ele = this[0];\n return ele.width() + 2 * ele.padding();\n};\nvar widthHeight = elesfn$a;\n\nvar ifEdge = function ifEdge(ele, getValue) {\n if (ele.isEdge()) {\n return getValue(ele);\n }\n};\nvar ifEdgeRenderedPosition = function ifEdgeRenderedPosition(ele, getPoint) {\n if (ele.isEdge()) {\n var cy = ele.cy();\n return modelToRenderedPosition(getPoint(ele), cy.zoom(), cy.pan());\n }\n};\nvar ifEdgeRenderedPositions = function ifEdgeRenderedPositions(ele, getPoints) {\n if (ele.isEdge()) {\n var cy = ele.cy();\n var pan = cy.pan();\n var zoom = cy.zoom();\n return getPoints(ele).map(function (p) {\n return modelToRenderedPosition(p, zoom, pan);\n });\n }\n};\nvar controlPoints = function controlPoints(ele) {\n return ele.renderer().getControlPoints(ele);\n};\nvar segmentPoints = function segmentPoints(ele) {\n return ele.renderer().getSegmentPoints(ele);\n};\nvar sourceEndpoint = function sourceEndpoint(ele) {\n return ele.renderer().getSourceEndpoint(ele);\n};\nvar targetEndpoint = function targetEndpoint(ele) {\n return ele.renderer().getTargetEndpoint(ele);\n};\nvar midpoint = function midpoint(ele) {\n return ele.renderer().getEdgeMidpoint(ele);\n};\nvar pts = {\n controlPoints: {\n get: controlPoints,\n mult: true\n },\n segmentPoints: {\n get: segmentPoints,\n mult: true\n },\n sourceEndpoint: {\n get: sourceEndpoint\n },\n targetEndpoint: {\n get: targetEndpoint\n },\n midpoint: {\n get: midpoint\n }\n};\nvar renderedName = function renderedName(name) {\n return 'rendered' + name[0].toUpperCase() + name.substr(1);\n};\nvar edgePoints = Object.keys(pts).reduce(function (obj, name) {\n var spec = pts[name];\n var rName = renderedName(name);\n obj[name] = function () {\n return ifEdge(this, spec.get);\n };\n if (spec.mult) {\n obj[rName] = function () {\n return ifEdgeRenderedPositions(this, spec.get);\n };\n } else {\n obj[rName] = function () {\n return ifEdgeRenderedPosition(this, spec.get);\n };\n }\n return obj;\n}, {});\n\nvar dimensions = extend({}, position, bounds, widthHeight, edgePoints);\n\n/*!\nEvent object based on jQuery events, MIT license\n\nhttps://jquery.org/license/\nhttps://tldrlegal.com/license/mit-license\nhttps://github.com/jquery/jquery/blob/master/src/event.js\n*/\n\nvar Event = function Event(src, props) {\n this.recycle(src, props);\n};\nfunction returnFalse() {\n return false;\n}\nfunction returnTrue() {\n return true;\n}\n\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\nEvent.prototype = {\n instanceString: function instanceString() {\n return 'event';\n },\n recycle: function recycle(src, props) {\n this.isImmediatePropagationStopped = this.isPropagationStopped = this.isDefaultPrevented = returnFalse;\n if (src != null && src.preventDefault) {\n // Browser Event object\n this.type = src.type;\n\n // Events bubbling up the document may have been marked as prevented\n // by a handler lower down the tree; reflect the correct value.\n this.isDefaultPrevented = src.defaultPrevented ? returnTrue : returnFalse;\n } else if (src != null && src.type) {\n // Plain object containing all event details\n props = src;\n } else {\n // Event string\n this.type = src;\n }\n\n // Put explicitly provided properties onto the event object\n if (props != null) {\n // more efficient to manually copy fields we use\n this.originalEvent = props.originalEvent;\n this.type = props.type != null ? props.type : this.type;\n this.cy = props.cy;\n this.target = props.target;\n this.position = props.position;\n this.renderedPosition = props.renderedPosition;\n this.namespace = props.namespace;\n this.layout = props.layout;\n }\n if (this.cy != null && this.position != null && this.renderedPosition == null) {\n // create a rendered position based on the passed position\n var pos = this.position;\n var zoom = this.cy.zoom();\n var pan = this.cy.pan();\n this.renderedPosition = {\n x: pos.x * zoom + pan.x,\n y: pos.y * zoom + pan.y\n };\n }\n\n // Create a timestamp if incoming event doesn't have one\n this.timeStamp = src && src.timeStamp || Date.now();\n },\n preventDefault: function preventDefault() {\n this.isDefaultPrevented = returnTrue;\n var e = this.originalEvent;\n if (!e) {\n return;\n }\n\n // if preventDefault exists run it on the original event\n if (e.preventDefault) {\n e.preventDefault();\n }\n },\n stopPropagation: function stopPropagation() {\n this.isPropagationStopped = returnTrue;\n var e = this.originalEvent;\n if (!e) {\n return;\n }\n\n // if stopPropagation exists run it on the original event\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n },\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.isImmediatePropagationStopped = returnTrue;\n this.stopPropagation();\n },\n isDefaultPrevented: returnFalse,\n isPropagationStopped: returnFalse,\n isImmediatePropagationStopped: returnFalse\n};\n\nvar eventRegex = /^([^.]+)(\\.(?:[^.]+))?$/; // regex for matching event strings (e.g. \"click.namespace\")\nvar universalNamespace = '.*'; // matches as if no namespace specified and prevents users from unbinding accidentally\n\nvar defaults$8 = {\n qualifierCompare: function qualifierCompare(q1, q2) {\n return q1 === q2;\n },\n eventMatches: function eventMatches( /*context, listener, eventObj*/\n ) {\n return true;\n },\n addEventFields: function addEventFields( /*context, evt*/\n ) {},\n callbackContext: function callbackContext(context /*, listener, eventObj*/) {\n return context;\n },\n beforeEmit: function beforeEmit( /* context, listener, eventObj */\n ) {},\n afterEmit: function afterEmit( /* context, listener, eventObj */\n ) {},\n bubble: function bubble( /*context*/\n ) {\n return false;\n },\n parent: function parent( /*context*/\n ) {\n return null;\n },\n context: null\n};\nvar defaultsKeys = Object.keys(defaults$8);\nvar emptyOpts = {};\nfunction Emitter() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : emptyOpts;\n var context = arguments.length > 1 ? arguments[1] : undefined;\n // micro-optimisation vs Object.assign() -- reduces Element instantiation time\n for (var i = 0; i < defaultsKeys.length; i++) {\n var key = defaultsKeys[i];\n this[key] = opts[key] || defaults$8[key];\n }\n this.context = context || this.context;\n this.listeners = [];\n this.emitting = 0;\n}\nvar p = Emitter.prototype;\nvar forEachEvent = function forEachEvent(self, handler, events, qualifier, callback, conf, confOverrides) {\n if (fn$6(qualifier)) {\n callback = qualifier;\n qualifier = null;\n }\n if (confOverrides) {\n if (conf == null) {\n conf = confOverrides;\n } else {\n conf = extend({}, conf, confOverrides);\n }\n }\n var eventList = array(events) ? events : events.split(/\\s+/);\n for (var i = 0; i < eventList.length; i++) {\n var evt = eventList[i];\n if (emptyString(evt)) {\n continue;\n }\n var match = evt.match(eventRegex); // type[.namespace]\n\n if (match) {\n var type = match[1];\n var namespace = match[2] ? match[2] : null;\n var ret = handler(self, evt, type, namespace, qualifier, callback, conf);\n if (ret === false) {\n break;\n } // allow exiting early\n }\n }\n};\n\nvar makeEventObj = function makeEventObj(self, obj) {\n self.addEventFields(self.context, obj);\n return new Event(obj.type, obj);\n};\nvar forEachEventObj = function forEachEventObj(self, handler, events) {\n if (event(events)) {\n handler(self, events);\n return;\n } else if (plainObject(events)) {\n handler(self, makeEventObj(self, events));\n return;\n }\n var eventList = array(events) ? events : events.split(/\\s+/);\n for (var i = 0; i < eventList.length; i++) {\n var evt = eventList[i];\n if (emptyString(evt)) {\n continue;\n }\n var match = evt.match(eventRegex); // type[.namespace]\n\n if (match) {\n var type = match[1];\n var namespace = match[2] ? match[2] : null;\n var eventObj = makeEventObj(self, {\n type: type,\n namespace: namespace,\n target: self.context\n });\n handler(self, eventObj);\n }\n }\n};\np.on = p.addListener = function (events, qualifier, callback, conf, confOverrides) {\n forEachEvent(this, function (self, event, type, namespace, qualifier, callback, conf) {\n if (fn$6(callback)) {\n self.listeners.push({\n event: event,\n // full event string\n callback: callback,\n // callback to run\n type: type,\n // the event type (e.g. 'click')\n namespace: namespace,\n // the event namespace (e.g. \".foo\")\n qualifier: qualifier,\n // a restriction on whether to match this emitter\n conf: conf // additional configuration\n });\n }\n }, events, qualifier, callback, conf, confOverrides);\n return this;\n};\np.one = function (events, qualifier, callback, conf) {\n return this.on(events, qualifier, callback, conf, {\n one: true\n });\n};\np.removeListener = p.off = function (events, qualifier, callback, conf) {\n var _this = this;\n if (this.emitting !== 0) {\n this.listeners = copyArray(this.listeners);\n }\n var listeners = this.listeners;\n var _loop = function _loop(i) {\n var listener = listeners[i];\n forEachEvent(_this, function (self, event, type, namespace, qualifier, callback /*, conf*/) {\n if ((listener.type === type || events === '*') && (!namespace && listener.namespace !== '.*' || listener.namespace === namespace) && (!qualifier || self.qualifierCompare(listener.qualifier, qualifier)) && (!callback || listener.callback === callback)) {\n listeners.splice(i, 1);\n return false;\n }\n }, events, qualifier, callback, conf);\n };\n for (var i = listeners.length - 1; i >= 0; i--) {\n _loop(i);\n }\n return this;\n};\np.removeAllListeners = function () {\n return this.removeListener('*');\n};\np.emit = p.trigger = function (events, extraParams, manualCallback) {\n var listeners = this.listeners;\n var numListenersBeforeEmit = listeners.length;\n this.emitting++;\n if (!array(extraParams)) {\n extraParams = [extraParams];\n }\n forEachEventObj(this, function (self, eventObj) {\n if (manualCallback != null) {\n listeners = [{\n event: eventObj.event,\n type: eventObj.type,\n namespace: eventObj.namespace,\n callback: manualCallback\n }];\n numListenersBeforeEmit = listeners.length;\n }\n var _loop2 = function _loop2(i) {\n var listener = listeners[i];\n if (listener.type === eventObj.type && (!listener.namespace || listener.namespace === eventObj.namespace || listener.namespace === universalNamespace) && self.eventMatches(self.context, listener, eventObj)) {\n var args = [eventObj];\n if (extraParams != null) {\n push(args, extraParams);\n }\n self.beforeEmit(self.context, listener, eventObj);\n if (listener.conf && listener.conf.one) {\n self.listeners = self.listeners.filter(function (l) {\n return l !== listener;\n });\n }\n var context = self.callbackContext(self.context, listener, eventObj);\n var ret = listener.callback.apply(context, args);\n self.afterEmit(self.context, listener, eventObj);\n if (ret === false) {\n eventObj.stopPropagation();\n eventObj.preventDefault();\n }\n } // if listener matches\n };\n for (var i = 0; i < numListenersBeforeEmit; i++) {\n _loop2(i);\n } // for listener\n\n if (self.bubble(self.context) && !eventObj.isPropagationStopped()) {\n self.parent(self.context).emit(eventObj, extraParams);\n }\n }, events);\n this.emitting--;\n return this;\n};\n\nvar emitterOptions$1 = {\n qualifierCompare: function qualifierCompare(selector1, selector2) {\n if (selector1 == null || selector2 == null) {\n return selector1 == null && selector2 == null;\n } else {\n return selector1.sameText(selector2);\n }\n },\n eventMatches: function eventMatches(ele, listener, eventObj) {\n var selector = listener.qualifier;\n if (selector != null) {\n return ele !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target);\n }\n return true;\n },\n addEventFields: function addEventFields(ele, evt) {\n evt.cy = ele.cy();\n evt.target = ele;\n },\n callbackContext: function callbackContext(ele, listener, eventObj) {\n return listener.qualifier != null ? eventObj.target : ele;\n },\n beforeEmit: function beforeEmit(context, listener /*, eventObj*/) {\n if (listener.conf && listener.conf.once) {\n listener.conf.onceCollection.removeListener(listener.event, listener.qualifier, listener.callback);\n }\n },\n bubble: function bubble() {\n return true;\n },\n parent: function parent(ele) {\n return ele.isChild() ? ele.parent() : ele.cy();\n }\n};\nvar argSelector$1 = function argSelector(arg) {\n if (string(arg)) {\n return new Selector(arg);\n } else {\n return arg;\n }\n};\nvar elesfn$9 = {\n createEmitter: function createEmitter() {\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var _p = ele._private;\n if (!_p.emitter) {\n _p.emitter = new Emitter(emitterOptions$1, ele);\n }\n }\n return this;\n },\n emitter: function emitter() {\n return this._private.emitter;\n },\n on: function on(events, selector, callback) {\n var argSel = argSelector$1(selector);\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().on(events, argSel, callback);\n }\n return this;\n },\n removeListener: function removeListener(events, selector, callback) {\n var argSel = argSelector$1(selector);\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().removeListener(events, argSel, callback);\n }\n return this;\n },\n removeAllListeners: function removeAllListeners() {\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().removeAllListeners();\n }\n return this;\n },\n one: function one(events, selector, callback) {\n var argSel = argSelector$1(selector);\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().one(events, argSel, callback);\n }\n return this;\n },\n once: function once(events, selector, callback) {\n var argSel = argSelector$1(selector);\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().on(events, argSel, callback, {\n once: true,\n onceCollection: this\n });\n }\n },\n emit: function emit(events, extraParams) {\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().emit(events, extraParams);\n }\n return this;\n },\n emitAndNotify: function emitAndNotify(event, extraParams) {\n // for internal use only\n if (this.length === 0) {\n return;\n } // empty collections don't need to notify anything\n\n // notify renderer\n this.cy().notify(event, this);\n this.emit(event, extraParams);\n return this;\n }\n};\ndefine.eventAliasesOn(elesfn$9);\n\nvar elesfn$8 = {\n nodes: function nodes(selector) {\n return this.filter(function (ele) {\n return ele.isNode();\n }).filter(selector);\n },\n edges: function edges(selector) {\n return this.filter(function (ele) {\n return ele.isEdge();\n }).filter(selector);\n },\n // internal helper to get nodes and edges as separate collections with single iteration over elements\n byGroup: function byGroup() {\n var nodes = this.spawn();\n var edges = this.spawn();\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n if (ele.isNode()) {\n nodes.push(ele);\n } else {\n edges.push(ele);\n }\n }\n return {\n nodes: nodes,\n edges: edges\n };\n },\n filter: function filter(_filter, thisArg) {\n if (_filter === undefined) {\n // check this first b/c it's the most common/performant case\n return this;\n } else if (string(_filter) || elementOrCollection(_filter)) {\n return new Selector(_filter).filter(this);\n } else if (fn$6(_filter)) {\n var filterEles = this.spawn();\n var eles = this;\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var include = thisArg ? _filter.apply(thisArg, [ele, i, eles]) : _filter(ele, i, eles);\n if (include) {\n filterEles.push(ele);\n }\n }\n return filterEles;\n }\n return this.spawn(); // if not handled by above, give 'em an empty collection\n },\n\n not: function not(toRemove) {\n if (!toRemove) {\n return this;\n } else {\n if (string(toRemove)) {\n toRemove = this.filter(toRemove);\n }\n var elements = this.spawn();\n for (var i = 0; i < this.length; i++) {\n var element = this[i];\n var remove = toRemove.has(element);\n if (!remove) {\n elements.push(element);\n }\n }\n return elements;\n }\n },\n absoluteComplement: function absoluteComplement() {\n var cy = this.cy();\n return cy.mutableElements().not(this);\n },\n intersect: function intersect(other) {\n // if a selector is specified, then filter by it instead\n if (string(other)) {\n var selector = other;\n return this.filter(selector);\n }\n var elements = this.spawn();\n var col1 = this;\n var col2 = other;\n var col1Smaller = this.length < other.length;\n var colS = col1Smaller ? col1 : col2;\n var colL = col1Smaller ? col2 : col1;\n for (var i = 0; i < colS.length; i++) {\n var ele = colS[i];\n if (colL.has(ele)) {\n elements.push(ele);\n }\n }\n return elements;\n },\n xor: function xor(other) {\n var cy = this._private.cy;\n if (string(other)) {\n other = cy.$(other);\n }\n var elements = this.spawn();\n var col1 = this;\n var col2 = other;\n var add = function add(col, other) {\n for (var i = 0; i < col.length; i++) {\n var ele = col[i];\n var id = ele._private.data.id;\n var inOther = other.hasElementWithId(id);\n if (!inOther) {\n elements.push(ele);\n }\n }\n };\n add(col1, col2);\n add(col2, col1);\n return elements;\n },\n diff: function diff(other) {\n var cy = this._private.cy;\n if (string(other)) {\n other = cy.$(other);\n }\n var left = this.spawn();\n var right = this.spawn();\n var both = this.spawn();\n var col1 = this;\n var col2 = other;\n var add = function add(col, other, retEles) {\n for (var i = 0; i < col.length; i++) {\n var ele = col[i];\n var id = ele._private.data.id;\n var inOther = other.hasElementWithId(id);\n if (inOther) {\n both.merge(ele);\n } else {\n retEles.push(ele);\n }\n }\n };\n add(col1, col2, left);\n add(col2, col1, right);\n return {\n left: left,\n right: right,\n both: both\n };\n },\n add: function add(toAdd) {\n var cy = this._private.cy;\n if (!toAdd) {\n return this;\n }\n if (string(toAdd)) {\n var selector = toAdd;\n toAdd = cy.mutableElements().filter(selector);\n }\n var elements = this.spawnSelf();\n for (var i = 0; i < toAdd.length; i++) {\n var ele = toAdd[i];\n var add = !this.has(ele);\n if (add) {\n elements.push(ele);\n }\n }\n return elements;\n },\n // in place merge on calling collection\n merge: function merge(toAdd) {\n var _p = this._private;\n var cy = _p.cy;\n if (!toAdd) {\n return this;\n }\n if (toAdd && string(toAdd)) {\n var selector = toAdd;\n toAdd = cy.mutableElements().filter(selector);\n }\n var map = _p.map;\n for (var i = 0; i < toAdd.length; i++) {\n var toAddEle = toAdd[i];\n var id = toAddEle._private.data.id;\n var add = !map.has(id);\n if (add) {\n var index = this.length++;\n this[index] = toAddEle;\n map.set(id, {\n ele: toAddEle,\n index: index\n });\n }\n }\n return this; // chaining\n },\n\n unmergeAt: function unmergeAt(i) {\n var ele = this[i];\n var id = ele.id();\n var _p = this._private;\n var map = _p.map;\n\n // remove ele\n this[i] = undefined;\n map[\"delete\"](id);\n var unmergedLastEle = i === this.length - 1;\n\n // replace empty spot with last ele in collection\n if (this.length > 1 && !unmergedLastEle) {\n var lastEleI = this.length - 1;\n var lastEle = this[lastEleI];\n var lastEleId = lastEle._private.data.id;\n this[lastEleI] = undefined;\n this[i] = lastEle;\n map.set(lastEleId, {\n ele: lastEle,\n index: i\n });\n }\n\n // the collection is now 1 ele smaller\n this.length--;\n return this;\n },\n // remove single ele in place in calling collection\n unmergeOne: function unmergeOne(ele) {\n ele = ele[0];\n var _p = this._private;\n var id = ele._private.data.id;\n var map = _p.map;\n var entry = map.get(id);\n if (!entry) {\n return this; // no need to remove\n }\n\n var i = entry.index;\n this.unmergeAt(i);\n return this;\n },\n // remove eles in place on calling collection\n unmerge: function unmerge(toRemove) {\n var cy = this._private.cy;\n if (!toRemove) {\n return this;\n }\n if (toRemove && string(toRemove)) {\n var selector = toRemove;\n toRemove = cy.mutableElements().filter(selector);\n }\n for (var i = 0; i < toRemove.length; i++) {\n this.unmergeOne(toRemove[i]);\n }\n return this; // chaining\n },\n\n unmergeBy: function unmergeBy(toRmFn) {\n for (var i = this.length - 1; i >= 0; i--) {\n var ele = this[i];\n if (toRmFn(ele)) {\n this.unmergeAt(i);\n }\n }\n return this;\n },\n map: function map(mapFn, thisArg) {\n var arr = [];\n var eles = this;\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var ret = thisArg ? mapFn.apply(thisArg, [ele, i, eles]) : mapFn(ele, i, eles);\n arr.push(ret);\n }\n return arr;\n },\n reduce: function reduce(fn, initialValue) {\n var val = initialValue;\n var eles = this;\n for (var i = 0; i < eles.length; i++) {\n val = fn(val, eles[i], i, eles);\n }\n return val;\n },\n max: function max(valFn, thisArg) {\n var max = -Infinity;\n var maxEle;\n var eles = this;\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles);\n if (val > max) {\n max = val;\n maxEle = ele;\n }\n }\n return {\n value: max,\n ele: maxEle\n };\n },\n min: function min(valFn, thisArg) {\n var min = Infinity;\n var minEle;\n var eles = this;\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles);\n if (val < min) {\n min = val;\n minEle = ele;\n }\n }\n return {\n value: min,\n ele: minEle\n };\n }\n};\n\n// aliases\nvar fn$1 = elesfn$8;\nfn$1['u'] = fn$1['|'] = fn$1['+'] = fn$1.union = fn$1.or = fn$1.add;\nfn$1['\\\\'] = fn$1['!'] = fn$1['-'] = fn$1.difference = fn$1.relativeComplement = fn$1.subtract = fn$1.not;\nfn$1['n'] = fn$1['&'] = fn$1['.'] = fn$1.and = fn$1.intersection = fn$1.intersect;\nfn$1['^'] = fn$1['(+)'] = fn$1['(-)'] = fn$1.symmetricDifference = fn$1.symdiff = fn$1.xor;\nfn$1.fnFilter = fn$1.filterFn = fn$1.stdFilter = fn$1.filter;\nfn$1.complement = fn$1.abscomp = fn$1.absoluteComplement;\n\nvar elesfn$7 = {\n isNode: function isNode() {\n return this.group() === 'nodes';\n },\n isEdge: function isEdge() {\n return this.group() === 'edges';\n },\n isLoop: function isLoop() {\n return this.isEdge() && this.source()[0] === this.target()[0];\n },\n isSimple: function isSimple() {\n return this.isEdge() && this.source()[0] !== this.target()[0];\n },\n group: function group() {\n var ele = this[0];\n if (ele) {\n return ele._private.group;\n }\n }\n};\n\n/**\n * Elements are drawn in a specific order based on compound depth (low to high), the element type (nodes above edges),\n * and z-index (low to high). These styles affect how this applies:\n *\n * z-compound-depth: May be `bottom | orphan | auto | top`. The first drawn is `bottom`, then `orphan` which is the\n * same depth as the root of the compound graph, followed by the default value `auto` which draws in order from\n * root to leaves of the compound graph. The last drawn is `top`.\n * z-index-compare: May be `auto | manual`. The default value is `auto` which always draws edges under nodes.\n * `manual` ignores this convention and draws based on the `z-index` value setting.\n * z-index: An integer value that affects the relative draw order of elements. In general, an element with a higher\n * `z-index` will be drawn on top of an element with a lower `z-index`.\n */\nvar zIndexSort = function zIndexSort(a, b) {\n var cy = a.cy();\n var hasCompoundNodes = cy.hasCompoundNodes();\n function getDepth(ele) {\n var style = ele.pstyle('z-compound-depth');\n if (style.value === 'auto') {\n return hasCompoundNodes ? ele.zDepth() : 0;\n } else if (style.value === 'bottom') {\n return -1;\n } else if (style.value === 'top') {\n return MAX_INT$1;\n }\n // 'orphan'\n return 0;\n }\n var depthDiff = getDepth(a) - getDepth(b);\n if (depthDiff !== 0) {\n return depthDiff;\n }\n function getEleDepth(ele) {\n var style = ele.pstyle('z-index-compare');\n if (style.value === 'auto') {\n return ele.isNode() ? 1 : 0;\n }\n // 'manual'\n return 0;\n }\n var eleDiff = getEleDepth(a) - getEleDepth(b);\n if (eleDiff !== 0) {\n return eleDiff;\n }\n var zDiff = a.pstyle('z-index').value - b.pstyle('z-index').value;\n if (zDiff !== 0) {\n return zDiff;\n }\n // compare indices in the core (order added to graph w/ last on top)\n return a.poolIndex() - b.poolIndex();\n};\n\nvar elesfn$6 = {\n forEach: function forEach(fn, thisArg) {\n if (fn$6(fn)) {\n var N = this.length;\n for (var i = 0; i < N; i++) {\n var ele = this[i];\n var ret = thisArg ? fn.apply(thisArg, [ele, i, this]) : fn(ele, i, this);\n if (ret === false) {\n break;\n } // exit each early on return false\n }\n }\n\n return this;\n },\n toArray: function toArray() {\n var array = [];\n for (var i = 0; i < this.length; i++) {\n array.push(this[i]);\n }\n return array;\n },\n slice: function slice(start, end) {\n var array = [];\n var thisSize = this.length;\n if (end == null) {\n end = thisSize;\n }\n if (start == null) {\n start = 0;\n }\n if (start < 0) {\n start = thisSize + start;\n }\n if (end < 0) {\n end = thisSize + end;\n }\n for (var i = start; i >= 0 && i < end && i < thisSize; i++) {\n array.push(this[i]);\n }\n return this.spawn(array);\n },\n size: function size() {\n return this.length;\n },\n eq: function eq(i) {\n return this[i] || this.spawn();\n },\n first: function first() {\n return this[0] || this.spawn();\n },\n last: function last() {\n return this[this.length - 1] || this.spawn();\n },\n empty: function empty() {\n return this.length === 0;\n },\n nonempty: function nonempty() {\n return !this.empty();\n },\n sort: function sort(sortFn) {\n if (!fn$6(sortFn)) {\n return this;\n }\n var sorted = this.toArray().sort(sortFn);\n return this.spawn(sorted);\n },\n sortByZIndex: function sortByZIndex() {\n return this.sort(zIndexSort);\n },\n zDepth: function zDepth() {\n var ele = this[0];\n if (!ele) {\n return undefined;\n }\n\n // let cy = ele.cy();\n var _p = ele._private;\n var group = _p.group;\n if (group === 'nodes') {\n var depth = _p.data.parent ? ele.parents().size() : 0;\n if (!ele.isParent()) {\n return MAX_INT$1 - 1; // childless nodes always on top\n }\n\n return depth;\n } else {\n var src = _p.source;\n var tgt = _p.target;\n var srcDepth = src.zDepth();\n var tgtDepth = tgt.zDepth();\n return Math.max(srcDepth, tgtDepth, 0); // depth of deepest parent\n }\n }\n};\n\nelesfn$6.each = elesfn$6.forEach;\nvar defineSymbolIterator = function defineSymbolIterator() {\n var typeofUndef = \"undefined\" ;\n var isIteratorSupported = (typeof Symbol === \"undefined\" ? \"undefined\" : _typeof(Symbol)) != typeofUndef && _typeof(Symbol.iterator) != typeofUndef; // eslint-disable-line no-undef\n\n if (isIteratorSupported) {\n elesfn$6[Symbol.iterator] = function () {\n var _this = this;\n // eslint-disable-line no-undef\n var entry = {\n value: undefined,\n done: false\n };\n var i = 0;\n var length = this.length;\n return _defineProperty({\n next: function next() {\n if (i < length) {\n entry.value = _this[i++];\n } else {\n entry.value = undefined;\n entry.done = true;\n }\n return entry;\n }\n }, Symbol.iterator, function () {\n // eslint-disable-line no-undef\n return this;\n });\n };\n }\n};\ndefineSymbolIterator();\n\nvar getLayoutDimensionOptions = defaults$g({\n nodeDimensionsIncludeLabels: false\n});\nvar elesfn$5 = {\n // Calculates and returns node dimensions { x, y } based on options given\n layoutDimensions: function layoutDimensions(options) {\n options = getLayoutDimensionOptions(options);\n var dims;\n if (!this.takesUpSpace()) {\n dims = {\n w: 0,\n h: 0\n };\n } else if (options.nodeDimensionsIncludeLabels) {\n var bbDim = this.boundingBox();\n dims = {\n w: bbDim.w,\n h: bbDim.h\n };\n } else {\n dims = {\n w: this.outerWidth(),\n h: this.outerHeight()\n };\n }\n\n // sanitise the dimensions for external layouts (avoid division by zero)\n if (dims.w === 0 || dims.h === 0) {\n dims.w = dims.h = 1;\n }\n return dims;\n },\n // using standard layout options, apply position function (w/ or w/o animation)\n layoutPositions: function layoutPositions(layout, options, fn) {\n var nodes = this.nodes().filter(function (n) {\n return !n.isParent();\n });\n var cy = this.cy();\n var layoutEles = options.eles; // nodes & edges\n var getMemoizeKey = function getMemoizeKey(node) {\n return node.id();\n };\n var fnMem = memoize(fn, getMemoizeKey); // memoized version of position function\n\n layout.emit({\n type: 'layoutstart',\n layout: layout\n });\n layout.animations = [];\n var calculateSpacing = function calculateSpacing(spacing, nodesBb, pos) {\n var center = {\n x: nodesBb.x1 + nodesBb.w / 2,\n y: nodesBb.y1 + nodesBb.h / 2\n };\n var spacingVector = {\n // scale from center of bounding box (not necessarily 0,0)\n x: (pos.x - center.x) * spacing,\n y: (pos.y - center.y) * spacing\n };\n return {\n x: center.x + spacingVector.x,\n y: center.y + spacingVector.y\n };\n };\n var useSpacingFactor = options.spacingFactor && options.spacingFactor !== 1;\n var spacingBb = function spacingBb() {\n if (!useSpacingFactor) {\n return null;\n }\n var bb = makeBoundingBox();\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var pos = fnMem(node, i);\n expandBoundingBoxByPoint(bb, pos.x, pos.y);\n }\n return bb;\n };\n var bb = spacingBb();\n var getFinalPos = memoize(function (node, i) {\n var newPos = fnMem(node, i);\n if (useSpacingFactor) {\n var spacing = Math.abs(options.spacingFactor);\n newPos = calculateSpacing(spacing, bb, newPos);\n }\n if (options.transform != null) {\n newPos = options.transform(node, newPos);\n }\n return newPos;\n }, getMemoizeKey);\n if (options.animate) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var newPos = getFinalPos(node, i);\n var animateNode = options.animateFilter == null || options.animateFilter(node, i);\n if (animateNode) {\n var ani = node.animation({\n position: newPos,\n duration: options.animationDuration,\n easing: options.animationEasing\n });\n layout.animations.push(ani);\n } else {\n node.position(newPos);\n }\n }\n if (options.fit) {\n var fitAni = cy.animation({\n fit: {\n boundingBox: layoutEles.boundingBoxAt(getFinalPos),\n padding: options.padding\n },\n duration: options.animationDuration,\n easing: options.animationEasing\n });\n layout.animations.push(fitAni);\n } else if (options.zoom !== undefined && options.pan !== undefined) {\n var zoomPanAni = cy.animation({\n zoom: options.zoom,\n pan: options.pan,\n duration: options.animationDuration,\n easing: options.animationEasing\n });\n layout.animations.push(zoomPanAni);\n }\n layout.animations.forEach(function (ani) {\n return ani.play();\n });\n layout.one('layoutready', options.ready);\n layout.emit({\n type: 'layoutready',\n layout: layout\n });\n Promise$1.all(layout.animations.map(function (ani) {\n return ani.promise();\n })).then(function () {\n layout.one('layoutstop', options.stop);\n layout.emit({\n type: 'layoutstop',\n layout: layout\n });\n });\n } else {\n nodes.positions(getFinalPos);\n if (options.fit) {\n cy.fit(options.eles, options.padding);\n }\n if (options.zoom != null) {\n cy.zoom(options.zoom);\n }\n if (options.pan) {\n cy.pan(options.pan);\n }\n layout.one('layoutready', options.ready);\n layout.emit({\n type: 'layoutready',\n layout: layout\n });\n layout.one('layoutstop', options.stop);\n layout.emit({\n type: 'layoutstop',\n layout: layout\n });\n }\n return this; // chaining\n },\n\n layout: function layout(options) {\n var cy = this.cy();\n return cy.makeLayout(extend({}, options, {\n eles: this\n }));\n }\n};\n\n// aliases:\nelesfn$5.createLayout = elesfn$5.makeLayout = elesfn$5.layout;\n\nfunction styleCache(key, fn, ele) {\n var _p = ele._private;\n var cache = _p.styleCache = _p.styleCache || [];\n var val;\n if ((val = cache[key]) != null) {\n return val;\n } else {\n val = cache[key] = fn(ele);\n return val;\n }\n}\nfunction cacheStyleFunction(key, fn) {\n key = hashString(key);\n return function cachedStyleFunction(ele) {\n return styleCache(key, fn, ele);\n };\n}\nfunction cachePrototypeStyleFunction(key, fn) {\n key = hashString(key);\n var selfFn = function selfFn(ele) {\n return fn.call(ele);\n };\n return function cachedPrototypeStyleFunction() {\n var ele = this[0];\n if (ele) {\n return styleCache(key, selfFn, ele);\n }\n };\n}\nvar elesfn$4 = {\n recalculateRenderedStyle: function recalculateRenderedStyle(useCache) {\n var cy = this.cy();\n var renderer = cy.renderer();\n var styleEnabled = cy.styleEnabled();\n if (renderer && styleEnabled) {\n renderer.recalculateRenderedStyle(this, useCache);\n }\n return this;\n },\n dirtyStyleCache: function dirtyStyleCache() {\n var cy = this.cy();\n var dirty = function dirty(ele) {\n return ele._private.styleCache = null;\n };\n if (cy.hasCompoundNodes()) {\n var eles;\n eles = this.spawnSelf().merge(this.descendants()).merge(this.parents());\n eles.merge(eles.connectedEdges());\n eles.forEach(dirty);\n } else {\n this.forEach(function (ele) {\n dirty(ele);\n ele.connectedEdges().forEach(dirty);\n });\n }\n return this;\n },\n // fully updates (recalculates) the style for the elements\n updateStyle: function updateStyle(notifyRenderer) {\n var cy = this._private.cy;\n if (!cy.styleEnabled()) {\n return this;\n }\n if (cy.batching()) {\n var bEles = cy._private.batchStyleEles;\n bEles.merge(this);\n return this; // chaining and exit early when batching\n }\n\n var hasCompounds = cy.hasCompoundNodes();\n var updatedEles = this;\n notifyRenderer = notifyRenderer || notifyRenderer === undefined ? true : false;\n if (hasCompounds) {\n // then add everything up and down for compound selector checks\n updatedEles = this.spawnSelf().merge(this.descendants()).merge(this.parents());\n }\n\n // let changedEles = style.apply( updatedEles );\n var changedEles = updatedEles;\n if (notifyRenderer) {\n changedEles.emitAndNotify('style'); // let renderer know we changed style\n } else {\n changedEles.emit('style'); // just fire the event\n }\n\n updatedEles.forEach(function (ele) {\n return ele._private.styleDirty = true;\n });\n return this; // chaining\n },\n\n // private: clears dirty flag and recalculates style\n cleanStyle: function cleanStyle() {\n var cy = this.cy();\n if (!cy.styleEnabled()) {\n return;\n }\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n if (ele._private.styleDirty) {\n // n.b. this flag should be set before apply() to avoid potential infinite recursion\n ele._private.styleDirty = false;\n cy.style().apply(ele);\n }\n }\n },\n // get the internal parsed style object for the specified property\n parsedStyle: function parsedStyle(property) {\n var includeNonDefault = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var ele = this[0];\n var cy = ele.cy();\n if (!cy.styleEnabled()) {\n return;\n }\n if (ele) {\n this.cleanStyle();\n var overriddenStyle = ele._private.style[property];\n if (overriddenStyle != null) {\n return overriddenStyle;\n } else if (includeNonDefault) {\n return cy.style().getDefaultProperty(property);\n } else {\n return null;\n }\n }\n },\n numericStyle: function numericStyle(property) {\n var ele = this[0];\n if (!ele.cy().styleEnabled()) {\n return;\n }\n if (ele) {\n var pstyle = ele.pstyle(property);\n return pstyle.pfValue !== undefined ? pstyle.pfValue : pstyle.value;\n }\n },\n numericStyleUnits: function numericStyleUnits(property) {\n var ele = this[0];\n if (!ele.cy().styleEnabled()) {\n return;\n }\n if (ele) {\n return ele.pstyle(property).units;\n }\n },\n // get the specified css property as a rendered value (i.e. on-screen value)\n // or get the whole rendered style if no property specified (NB doesn't allow setting)\n renderedStyle: function renderedStyle(property) {\n var cy = this.cy();\n if (!cy.styleEnabled()) {\n return this;\n }\n var ele = this[0];\n if (ele) {\n return cy.style().getRenderedStyle(ele, property);\n }\n },\n // read the calculated css style of the element or override the style (via a bypass)\n style: function style(name, value) {\n var cy = this.cy();\n if (!cy.styleEnabled()) {\n return this;\n }\n var updateTransitions = false;\n var style = cy.style();\n if (plainObject(name)) {\n // then extend the bypass\n var props = name;\n style.applyBypass(this, props, updateTransitions);\n this.emitAndNotify('style'); // let the renderer know we've updated style\n } else if (string(name)) {\n if (value === undefined) {\n // then get the property from the style\n var ele = this[0];\n if (ele) {\n return style.getStylePropertyValue(ele, name);\n } else {\n // empty collection => can't get any value\n return;\n }\n } else {\n // then set the bypass with the property value\n style.applyBypass(this, name, value, updateTransitions);\n this.emitAndNotify('style'); // let the renderer know we've updated style\n }\n } else if (name === undefined) {\n var _ele = this[0];\n if (_ele) {\n return style.getRawStyle(_ele);\n } else {\n // empty collection => can't get any value\n return;\n }\n }\n return this; // chaining\n },\n\n removeStyle: function removeStyle(names) {\n var cy = this.cy();\n if (!cy.styleEnabled()) {\n return this;\n }\n var updateTransitions = false;\n var style = cy.style();\n var eles = this;\n if (names === undefined) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n style.removeAllBypasses(ele, updateTransitions);\n }\n } else {\n names = names.split(/\\s+/);\n for (var _i = 0; _i < eles.length; _i++) {\n var _ele2 = eles[_i];\n style.removeBypasses(_ele2, names, updateTransitions);\n }\n }\n this.emitAndNotify('style'); // let the renderer know we've updated style\n\n return this; // chaining\n },\n\n show: function show() {\n this.css('display', 'element');\n return this; // chaining\n },\n\n hide: function hide() {\n this.css('display', 'none');\n return this; // chaining\n },\n\n effectiveOpacity: function effectiveOpacity() {\n var cy = this.cy();\n if (!cy.styleEnabled()) {\n return 1;\n }\n var hasCompoundNodes = cy.hasCompoundNodes();\n var ele = this[0];\n if (ele) {\n var _p = ele._private;\n var parentOpacity = ele.pstyle('opacity').value;\n if (!hasCompoundNodes) {\n return parentOpacity;\n }\n var parents = !_p.data.parent ? null : ele.parents();\n if (parents) {\n for (var i = 0; i < parents.length; i++) {\n var parent = parents[i];\n var opacity = parent.pstyle('opacity').value;\n parentOpacity = opacity * parentOpacity;\n }\n }\n return parentOpacity;\n }\n },\n transparent: function transparent() {\n var cy = this.cy();\n if (!cy.styleEnabled()) {\n return false;\n }\n var ele = this[0];\n var hasCompoundNodes = ele.cy().hasCompoundNodes();\n if (ele) {\n if (!hasCompoundNodes) {\n return ele.pstyle('opacity').value === 0;\n } else {\n return ele.effectiveOpacity() === 0;\n }\n }\n },\n backgrounding: function backgrounding() {\n var cy = this.cy();\n if (!cy.styleEnabled()) {\n return false;\n }\n var ele = this[0];\n return ele._private.backgrounding ? true : false;\n }\n};\nfunction checkCompound(ele, parentOk) {\n var _p = ele._private;\n var parents = _p.data.parent ? ele.parents() : null;\n if (parents) {\n for (var i = 0; i < parents.length; i++) {\n var parent = parents[i];\n if (!parentOk(parent)) {\n return false;\n }\n }\n }\n return true;\n}\nfunction defineDerivedStateFunction(specs) {\n var ok = specs.ok;\n var edgeOkViaNode = specs.edgeOkViaNode || specs.ok;\n var parentOk = specs.parentOk || specs.ok;\n return function () {\n var cy = this.cy();\n if (!cy.styleEnabled()) {\n return true;\n }\n var ele = this[0];\n var hasCompoundNodes = cy.hasCompoundNodes();\n if (ele) {\n var _p = ele._private;\n if (!ok(ele)) {\n return false;\n }\n if (ele.isNode()) {\n return !hasCompoundNodes || checkCompound(ele, parentOk);\n } else {\n var src = _p.source;\n var tgt = _p.target;\n return edgeOkViaNode(src) && (!hasCompoundNodes || checkCompound(src, edgeOkViaNode)) && (src === tgt || edgeOkViaNode(tgt) && (!hasCompoundNodes || checkCompound(tgt, edgeOkViaNode)));\n }\n }\n };\n}\nvar eleTakesUpSpace = cacheStyleFunction('eleTakesUpSpace', function (ele) {\n return ele.pstyle('display').value === 'element' && ele.width() !== 0 && (ele.isNode() ? ele.height() !== 0 : true);\n});\nelesfn$4.takesUpSpace = cachePrototypeStyleFunction('takesUpSpace', defineDerivedStateFunction({\n ok: eleTakesUpSpace\n}));\nvar eleInteractive = cacheStyleFunction('eleInteractive', function (ele) {\n return ele.pstyle('events').value === 'yes' && ele.pstyle('visibility').value === 'visible' && eleTakesUpSpace(ele);\n});\nvar parentInteractive = cacheStyleFunction('parentInteractive', function (parent) {\n return parent.pstyle('visibility').value === 'visible' && eleTakesUpSpace(parent);\n});\nelesfn$4.interactive = cachePrototypeStyleFunction('interactive', defineDerivedStateFunction({\n ok: eleInteractive,\n parentOk: parentInteractive,\n edgeOkViaNode: eleTakesUpSpace\n}));\nelesfn$4.noninteractive = function () {\n var ele = this[0];\n if (ele) {\n return !ele.interactive();\n }\n};\nvar eleVisible = cacheStyleFunction('eleVisible', function (ele) {\n return ele.pstyle('visibility').value === 'visible' && ele.pstyle('opacity').pfValue !== 0 && eleTakesUpSpace(ele);\n});\nvar edgeVisibleViaNode = eleTakesUpSpace;\nelesfn$4.visible = cachePrototypeStyleFunction('visible', defineDerivedStateFunction({\n ok: eleVisible,\n edgeOkViaNode: edgeVisibleViaNode\n}));\nelesfn$4.hidden = function () {\n var ele = this[0];\n if (ele) {\n return !ele.visible();\n }\n};\nelesfn$4.isBundledBezier = cachePrototypeStyleFunction('isBundledBezier', function () {\n if (!this.cy().styleEnabled()) {\n return false;\n }\n return !this.removed() && this.pstyle('curve-style').value === 'bezier' && this.takesUpSpace();\n});\nelesfn$4.bypass = elesfn$4.css = elesfn$4.style;\nelesfn$4.renderedCss = elesfn$4.renderedStyle;\nelesfn$4.removeBypass = elesfn$4.removeCss = elesfn$4.removeStyle;\nelesfn$4.pstyle = elesfn$4.parsedStyle;\n\nvar elesfn$3 = {};\nfunction defineSwitchFunction(params) {\n return function () {\n var args = arguments;\n var changedEles = [];\n\n // e.g. cy.nodes().select( data, handler )\n if (args.length === 2) {\n var data = args[0];\n var handler = args[1];\n this.on(params.event, data, handler);\n }\n\n // e.g. cy.nodes().select( handler )\n else if (args.length === 1 && fn$6(args[0])) {\n var _handler = args[0];\n this.on(params.event, _handler);\n }\n\n // e.g. cy.nodes().select()\n // e.g. (private) cy.nodes().select(['tapselect'])\n else if (args.length === 0 || args.length === 1 && array(args[0])) {\n var addlEvents = args.length === 1 ? args[0] : null;\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var able = !params.ableField || ele._private[params.ableField];\n var changed = ele._private[params.field] != params.value;\n if (params.overrideAble) {\n var overrideAble = params.overrideAble(ele);\n if (overrideAble !== undefined) {\n able = overrideAble;\n if (!overrideAble) {\n return this;\n } // to save cycles assume not able for all on override\n }\n }\n\n if (able) {\n ele._private[params.field] = params.value;\n if (changed) {\n changedEles.push(ele);\n }\n }\n }\n var changedColl = this.spawn(changedEles);\n changedColl.updateStyle(); // change of state => possible change of style\n changedColl.emit(params.event);\n if (addlEvents) {\n changedColl.emit(addlEvents);\n }\n }\n return this;\n };\n}\nfunction defineSwitchSet(params) {\n elesfn$3[params.field] = function () {\n var ele = this[0];\n if (ele) {\n if (params.overrideField) {\n var val = params.overrideField(ele);\n if (val !== undefined) {\n return val;\n }\n }\n return ele._private[params.field];\n }\n };\n elesfn$3[params.on] = defineSwitchFunction({\n event: params.on,\n field: params.field,\n ableField: params.ableField,\n overrideAble: params.overrideAble,\n value: true\n });\n elesfn$3[params.off] = defineSwitchFunction({\n event: params.off,\n field: params.field,\n ableField: params.ableField,\n overrideAble: params.overrideAble,\n value: false\n });\n}\ndefineSwitchSet({\n field: 'locked',\n overrideField: function overrideField(ele) {\n return ele.cy().autolock() ? true : undefined;\n },\n on: 'lock',\n off: 'unlock'\n});\ndefineSwitchSet({\n field: 'grabbable',\n overrideField: function overrideField(ele) {\n return ele.cy().autoungrabify() || ele.pannable() ? false : undefined;\n },\n on: 'grabify',\n off: 'ungrabify'\n});\ndefineSwitchSet({\n field: 'selected',\n ableField: 'selectable',\n overrideAble: function overrideAble(ele) {\n return ele.cy().autounselectify() ? false : undefined;\n },\n on: 'select',\n off: 'unselect'\n});\ndefineSwitchSet({\n field: 'selectable',\n overrideField: function overrideField(ele) {\n return ele.cy().autounselectify() ? false : undefined;\n },\n on: 'selectify',\n off: 'unselectify'\n});\nelesfn$3.deselect = elesfn$3.unselect;\nelesfn$3.grabbed = function () {\n var ele = this[0];\n if (ele) {\n return ele._private.grabbed;\n }\n};\ndefineSwitchSet({\n field: 'active',\n on: 'activate',\n off: 'unactivate'\n});\ndefineSwitchSet({\n field: 'pannable',\n on: 'panify',\n off: 'unpanify'\n});\nelesfn$3.inactive = function () {\n var ele = this[0];\n if (ele) {\n return !ele._private.active;\n }\n};\n\nvar elesfn$2 = {};\n\n// DAG functions\n////////////////\n\nvar defineDagExtremity = function defineDagExtremity(params) {\n return function dagExtremityImpl(selector) {\n var eles = this;\n var ret = [];\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n if (!ele.isNode()) {\n continue;\n }\n var disqualified = false;\n var edges = ele.connectedEdges();\n for (var j = 0; j < edges.length; j++) {\n var edge = edges[j];\n var src = edge.source();\n var tgt = edge.target();\n if (params.noIncomingEdges && tgt === ele && src !== ele || params.noOutgoingEdges && src === ele && tgt !== ele) {\n disqualified = true;\n break;\n }\n }\n if (!disqualified) {\n ret.push(ele);\n }\n }\n return this.spawn(ret, true).filter(selector);\n };\n};\nvar defineDagOneHop = function defineDagOneHop(params) {\n return function (selector) {\n var eles = this;\n var oEles = [];\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n if (!ele.isNode()) {\n continue;\n }\n var edges = ele.connectedEdges();\n for (var j = 0; j < edges.length; j++) {\n var edge = edges[j];\n var src = edge.source();\n var tgt = edge.target();\n if (params.outgoing && src === ele) {\n oEles.push(edge);\n oEles.push(tgt);\n } else if (params.incoming && tgt === ele) {\n oEles.push(edge);\n oEles.push(src);\n }\n }\n }\n return this.spawn(oEles, true).filter(selector);\n };\n};\nvar defineDagAllHops = function defineDagAllHops(params) {\n return function (selector) {\n var eles = this;\n var sEles = [];\n var sElesIds = {};\n for (;;) {\n var next = params.outgoing ? eles.outgoers() : eles.incomers();\n if (next.length === 0) {\n break;\n } // done if none left\n\n var newNext = false;\n for (var i = 0; i < next.length; i++) {\n var n = next[i];\n var nid = n.id();\n if (!sElesIds[nid]) {\n sElesIds[nid] = true;\n sEles.push(n);\n newNext = true;\n }\n }\n if (!newNext) {\n break;\n } // done if touched all outgoers already\n\n eles = next;\n }\n return this.spawn(sEles, true).filter(selector);\n };\n};\nelesfn$2.clearTraversalCache = function () {\n for (var i = 0; i < this.length; i++) {\n this[i]._private.traversalCache = null;\n }\n};\nextend(elesfn$2, {\n // get the root nodes in the DAG\n roots: defineDagExtremity({\n noIncomingEdges: true\n }),\n // get the leaf nodes in the DAG\n leaves: defineDagExtremity({\n noOutgoingEdges: true\n }),\n // normally called children in graph theory\n // these nodes =edges=> outgoing nodes\n outgoers: cache(defineDagOneHop({\n outgoing: true\n }), 'outgoers'),\n // aka DAG descendants\n successors: defineDagAllHops({\n outgoing: true\n }),\n // normally called parents in graph theory\n // these nodes <=edges= incoming nodes\n incomers: cache(defineDagOneHop({\n incoming: true\n }), 'incomers'),\n // aka DAG ancestors\n predecessors: defineDagAllHops({\n incoming: true\n })\n});\n\n// Neighbourhood functions\n//////////////////////////\n\nextend(elesfn$2, {\n neighborhood: cache(function (selector) {\n var elements = [];\n var nodes = this.nodes();\n for (var i = 0; i < nodes.length; i++) {\n // for all nodes\n var node = nodes[i];\n var connectedEdges = node.connectedEdges();\n\n // for each connected edge, add the edge and the other node\n for (var j = 0; j < connectedEdges.length; j++) {\n var edge = connectedEdges[j];\n var src = edge.source();\n var tgt = edge.target();\n var otherNode = node === src ? tgt : src;\n\n // need check in case of loop\n if (otherNode.length > 0) {\n elements.push(otherNode[0]); // add node 1 hop away\n }\n\n // add connected edge\n elements.push(edge[0]);\n }\n }\n return this.spawn(elements, true).filter(selector);\n }, 'neighborhood'),\n closedNeighborhood: function closedNeighborhood(selector) {\n return this.neighborhood().add(this).filter(selector);\n },\n openNeighborhood: function openNeighborhood(selector) {\n return this.neighborhood(selector);\n }\n});\n\n// aliases\nelesfn$2.neighbourhood = elesfn$2.neighborhood;\nelesfn$2.closedNeighbourhood = elesfn$2.closedNeighborhood;\nelesfn$2.openNeighbourhood = elesfn$2.openNeighborhood;\n\n// Edge functions\n/////////////////\n\nextend(elesfn$2, {\n source: cache(function sourceImpl(selector) {\n var ele = this[0];\n var src;\n if (ele) {\n src = ele._private.source || ele.cy().collection();\n }\n return src && selector ? src.filter(selector) : src;\n }, 'source'),\n target: cache(function targetImpl(selector) {\n var ele = this[0];\n var tgt;\n if (ele) {\n tgt = ele._private.target || ele.cy().collection();\n }\n return tgt && selector ? tgt.filter(selector) : tgt;\n }, 'target'),\n sources: defineSourceFunction({\n attr: 'source'\n }),\n targets: defineSourceFunction({\n attr: 'target'\n })\n});\nfunction defineSourceFunction(params) {\n return function sourceImpl(selector) {\n var sources = [];\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var src = ele._private[params.attr];\n if (src) {\n sources.push(src);\n }\n }\n return this.spawn(sources, true).filter(selector);\n };\n}\nextend(elesfn$2, {\n edgesWith: cache(defineEdgesWithFunction(), 'edgesWith'),\n edgesTo: cache(defineEdgesWithFunction({\n thisIsSrc: true\n }), 'edgesTo')\n});\nfunction defineEdgesWithFunction(params) {\n return function edgesWithImpl(otherNodes) {\n var elements = [];\n var cy = this._private.cy;\n var p = params || {};\n\n // get elements if a selector is specified\n if (string(otherNodes)) {\n otherNodes = cy.$(otherNodes);\n }\n for (var h = 0; h < otherNodes.length; h++) {\n var edges = otherNodes[h]._private.edges;\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n var edgeData = edge._private.data;\n var thisToOther = this.hasElementWithId(edgeData.source) && otherNodes.hasElementWithId(edgeData.target);\n var otherToThis = otherNodes.hasElementWithId(edgeData.source) && this.hasElementWithId(edgeData.target);\n var edgeConnectsThisAndOther = thisToOther || otherToThis;\n if (!edgeConnectsThisAndOther) {\n continue;\n }\n if (p.thisIsSrc || p.thisIsTgt) {\n if (p.thisIsSrc && !thisToOther) {\n continue;\n }\n if (p.thisIsTgt && !otherToThis) {\n continue;\n }\n }\n elements.push(edge);\n }\n }\n return this.spawn(elements, true);\n };\n}\nextend(elesfn$2, {\n connectedEdges: cache(function (selector) {\n var retEles = [];\n var eles = this;\n for (var i = 0; i < eles.length; i++) {\n var node = eles[i];\n if (!node.isNode()) {\n continue;\n }\n var edges = node._private.edges;\n for (var j = 0; j < edges.length; j++) {\n var edge = edges[j];\n retEles.push(edge);\n }\n }\n return this.spawn(retEles, true).filter(selector);\n }, 'connectedEdges'),\n connectedNodes: cache(function (selector) {\n var retEles = [];\n var eles = this;\n for (var i = 0; i < eles.length; i++) {\n var edge = eles[i];\n if (!edge.isEdge()) {\n continue;\n }\n retEles.push(edge.source()[0]);\n retEles.push(edge.target()[0]);\n }\n return this.spawn(retEles, true).filter(selector);\n }, 'connectedNodes'),\n parallelEdges: cache(defineParallelEdgesFunction(), 'parallelEdges'),\n codirectedEdges: cache(defineParallelEdgesFunction({\n codirected: true\n }), 'codirectedEdges')\n});\nfunction defineParallelEdgesFunction(params) {\n var defaults = {\n codirected: false\n };\n params = extend({}, defaults, params);\n return function parallelEdgesImpl(selector) {\n // micro-optimised for renderer\n var elements = [];\n var edges = this.edges();\n var p = params;\n\n // look at all the edges in the collection\n for (var i = 0; i < edges.length; i++) {\n var edge1 = edges[i];\n var edge1_p = edge1._private;\n var src1 = edge1_p.source;\n var srcid1 = src1._private.data.id;\n var tgtid1 = edge1_p.data.target;\n var srcEdges1 = src1._private.edges;\n\n // look at edges connected to the src node of this edge\n for (var j = 0; j < srcEdges1.length; j++) {\n var edge2 = srcEdges1[j];\n var edge2data = edge2._private.data;\n var tgtid2 = edge2data.target;\n var srcid2 = edge2data.source;\n var codirected = tgtid2 === tgtid1 && srcid2 === srcid1;\n var oppdirected = srcid1 === tgtid2 && tgtid1 === srcid2;\n if (p.codirected && codirected || !p.codirected && (codirected || oppdirected)) {\n elements.push(edge2);\n }\n }\n }\n return this.spawn(elements, true).filter(selector);\n };\n}\n\n// Misc functions\n/////////////////\n\nextend(elesfn$2, {\n components: function components(root) {\n var self = this;\n var cy = self.cy();\n var visited = cy.collection();\n var unvisited = root == null ? self.nodes() : root.nodes();\n var components = [];\n if (root != null && unvisited.empty()) {\n // root may contain only edges\n unvisited = root.sources(); // doesn't matter which node to use (undirected), so just use the source sides\n }\n\n var visitInComponent = function visitInComponent(node, component) {\n visited.merge(node);\n unvisited.unmerge(node);\n component.merge(node);\n };\n if (unvisited.empty()) {\n return self.spawn();\n }\n var _loop = function _loop() {\n // each iteration yields a component\n var cmpt = cy.collection();\n components.push(cmpt);\n var root = unvisited[0];\n visitInComponent(root, cmpt);\n self.bfs({\n directed: false,\n roots: root,\n visit: function visit(v) {\n return visitInComponent(v, cmpt);\n }\n });\n cmpt.forEach(function (node) {\n node.connectedEdges().forEach(function (e) {\n // connectedEdges() usually cached\n if (self.has(e) && cmpt.has(e.source()) && cmpt.has(e.target())) {\n // has() is cheap\n cmpt.merge(e); // forEach() only considers nodes -- sets N at call time\n }\n });\n });\n };\n do {\n _loop();\n } while (unvisited.length > 0);\n return components;\n },\n component: function component() {\n var ele = this[0];\n return ele.cy().mutableElements().components(ele)[0];\n }\n});\nelesfn$2.componentsOf = elesfn$2.components;\n\n// represents a set of nodes, edges, or both together\nvar Collection = function Collection(cy, elements) {\n var unique = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var removed = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if (cy === undefined) {\n error('A collection must have a reference to the core');\n return;\n }\n var map = new Map$1();\n var createdElements = false;\n if (!elements) {\n elements = [];\n } else if (elements.length > 0 && plainObject(elements[0]) && !element(elements[0])) {\n createdElements = true;\n\n // make elements from json and restore all at once later\n var eles = [];\n var elesIds = new Set$1();\n for (var i = 0, l = elements.length; i < l; i++) {\n var json = elements[i];\n if (json.data == null) {\n json.data = {};\n }\n var _data = json.data;\n\n // make sure newly created elements have valid ids\n if (_data.id == null) {\n _data.id = uuid();\n } else if (cy.hasElementWithId(_data.id) || elesIds.has(_data.id)) {\n continue; // can't create element if prior id already exists\n }\n\n var ele = new Element(cy, json, false);\n eles.push(ele);\n elesIds.add(_data.id);\n }\n elements = eles;\n }\n this.length = 0;\n for (var _i = 0, _l = elements.length; _i < _l; _i++) {\n var element$1 = elements[_i][0]; // [0] in case elements is an array of collections, rather than array of elements\n if (element$1 == null) {\n continue;\n }\n var id = element$1._private.data.id;\n if (!unique || !map.has(id)) {\n if (unique) {\n map.set(id, {\n index: this.length,\n ele: element$1\n });\n }\n this[this.length] = element$1;\n this.length++;\n }\n }\n this._private = {\n eles: this,\n cy: cy,\n get map() {\n if (this.lazyMap == null) {\n this.rebuildMap();\n }\n return this.lazyMap;\n },\n set map(m) {\n this.lazyMap = m;\n },\n rebuildMap: function rebuildMap() {\n var m = this.lazyMap = new Map$1();\n var eles = this.eles;\n for (var _i2 = 0; _i2 < eles.length; _i2++) {\n var _ele = eles[_i2];\n m.set(_ele.id(), {\n index: _i2,\n ele: _ele\n });\n }\n }\n };\n if (unique) {\n this._private.map = map;\n }\n\n // restore the elements if we created them from json\n if (createdElements && !removed) {\n this.restore();\n }\n};\n\n// Functions\n////////////////////////////////////////////////////////////////////////////////////////////////////\n\n// keep the prototypes in sync (an element has the same functions as a collection)\n// and use elefn and elesfn as shorthands to the prototypes\nvar elesfn$1 = Element.prototype = Collection.prototype = Object.create(Array.prototype);\nelesfn$1.instanceString = function () {\n return 'collection';\n};\nelesfn$1.spawn = function (eles, unique) {\n return new Collection(this.cy(), eles, unique);\n};\nelesfn$1.spawnSelf = function () {\n return this.spawn(this);\n};\nelesfn$1.cy = function () {\n return this._private.cy;\n};\nelesfn$1.renderer = function () {\n return this._private.cy.renderer();\n};\nelesfn$1.element = function () {\n return this[0];\n};\nelesfn$1.collection = function () {\n if (collection(this)) {\n return this;\n } else {\n // an element\n return new Collection(this._private.cy, [this]);\n }\n};\nelesfn$1.unique = function () {\n return new Collection(this._private.cy, this, true);\n};\nelesfn$1.hasElementWithId = function (id) {\n id = '' + id; // id must be string\n\n return this._private.map.has(id);\n};\nelesfn$1.getElementById = function (id) {\n id = '' + id; // id must be string\n\n var cy = this._private.cy;\n var entry = this._private.map.get(id);\n return entry ? entry.ele : new Collection(cy); // get ele or empty collection\n};\n\nelesfn$1.$id = elesfn$1.getElementById;\nelesfn$1.poolIndex = function () {\n var cy = this._private.cy;\n var eles = cy._private.elements;\n var id = this[0]._private.data.id;\n return eles._private.map.get(id).index;\n};\nelesfn$1.indexOf = function (ele) {\n var id = ele[0]._private.data.id;\n return this._private.map.get(id).index;\n};\nelesfn$1.indexOfId = function (id) {\n id = '' + id; // id must be string\n\n return this._private.map.get(id).index;\n};\nelesfn$1.json = function (obj) {\n var ele = this.element();\n var cy = this.cy();\n if (ele == null && obj) {\n return this;\n } // can't set to no eles\n\n if (ele == null) {\n return undefined;\n } // can't get from no eles\n\n var p = ele._private;\n if (plainObject(obj)) {\n // set\n\n cy.startBatch();\n if (obj.data) {\n ele.data(obj.data);\n var _data2 = p.data;\n if (ele.isEdge()) {\n // source and target are immutable via data()\n var move = false;\n var spec = {};\n var src = obj.data.source;\n var tgt = obj.data.target;\n if (src != null && src != _data2.source) {\n spec.source = '' + src; // id must be string\n move = true;\n }\n if (tgt != null && tgt != _data2.target) {\n spec.target = '' + tgt; // id must be string\n move = true;\n }\n if (move) {\n ele = ele.move(spec);\n }\n } else {\n // parent is immutable via data()\n var newParentValSpecd = ('parent' in obj.data);\n var parent = obj.data.parent;\n if (newParentValSpecd && (parent != null || _data2.parent != null) && parent != _data2.parent) {\n if (parent === undefined) {\n // can't set undefined imperatively, so use null\n parent = null;\n }\n if (parent != null) {\n parent = '' + parent; // id must be string\n }\n\n ele = ele.move({\n parent: parent\n });\n }\n }\n }\n if (obj.position) {\n ele.position(obj.position);\n }\n\n // ignore group -- immutable\n\n var checkSwitch = function checkSwitch(k, trueFnName, falseFnName) {\n var obj_k = obj[k];\n if (obj_k != null && obj_k !== p[k]) {\n if (obj_k) {\n ele[trueFnName]();\n } else {\n ele[falseFnName]();\n }\n }\n };\n checkSwitch('removed', 'remove', 'restore');\n checkSwitch('selected', 'select', 'unselect');\n checkSwitch('selectable', 'selectify', 'unselectify');\n checkSwitch('locked', 'lock', 'unlock');\n checkSwitch('grabbable', 'grabify', 'ungrabify');\n checkSwitch('pannable', 'panify', 'unpanify');\n if (obj.classes != null) {\n ele.classes(obj.classes);\n }\n cy.endBatch();\n return this;\n } else if (obj === undefined) {\n // get\n\n var json = {\n data: copy(p.data),\n position: copy(p.position),\n group: p.group,\n removed: p.removed,\n selected: p.selected,\n selectable: p.selectable,\n locked: p.locked,\n grabbable: p.grabbable,\n pannable: p.pannable,\n classes: null\n };\n json.classes = '';\n var i = 0;\n p.classes.forEach(function (cls) {\n return json.classes += i++ === 0 ? cls : ' ' + cls;\n });\n return json;\n }\n};\nelesfn$1.jsons = function () {\n var jsons = [];\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var json = ele.json();\n jsons.push(json);\n }\n return jsons;\n};\nelesfn$1.clone = function () {\n var cy = this.cy();\n var elesArr = [];\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var json = ele.json();\n var clone = new Element(cy, json, false); // NB no restore\n\n elesArr.push(clone);\n }\n return new Collection(cy, elesArr);\n};\nelesfn$1.copy = elesfn$1.clone;\nelesfn$1.restore = function () {\n var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var addToPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var self = this;\n var cy = self.cy();\n var cy_p = cy._private;\n\n // create arrays of nodes and edges, since we need to\n // restore the nodes first\n var nodes = [];\n var edges = [];\n var elements;\n for (var _i3 = 0, l = self.length; _i3 < l; _i3++) {\n var ele = self[_i3];\n if (addToPool && !ele.removed()) {\n // don't need to handle this ele\n continue;\n }\n\n // keep nodes first in the array and edges after\n if (ele.isNode()) {\n // put to front of array if node\n nodes.push(ele);\n } else {\n // put to end of array if edge\n edges.push(ele);\n }\n }\n elements = nodes.concat(edges);\n var i;\n var removeFromElements = function removeFromElements() {\n elements.splice(i, 1);\n i--;\n };\n\n // now, restore each element\n for (i = 0; i < elements.length; i++) {\n var _ele2 = elements[i];\n var _private = _ele2._private;\n var _data3 = _private.data;\n\n // the traversal cache should start fresh when ele is added\n _ele2.clearTraversalCache();\n\n // set id and validate\n if (!addToPool && !_private.removed) ; else if (_data3.id === undefined) {\n _data3.id = uuid();\n } else if (number$1(_data3.id)) {\n _data3.id = '' + _data3.id; // now it's a string\n } else if (emptyString(_data3.id) || !string(_data3.id)) {\n error('Can not create element with invalid string ID `' + _data3.id + '`');\n\n // can't create element if it has empty string as id or non-string id\n removeFromElements();\n continue;\n } else if (cy.hasElementWithId(_data3.id)) {\n error('Can not create second element with ID `' + _data3.id + '`');\n\n // can't create element if one already has that id\n removeFromElements();\n continue;\n }\n var id = _data3.id; // id is finalised, now let's keep a ref\n\n if (_ele2.isNode()) {\n // extra checks for nodes\n var pos = _private.position;\n\n // make sure the nodes have a defined position\n\n if (pos.x == null) {\n pos.x = 0;\n }\n if (pos.y == null) {\n pos.y = 0;\n }\n }\n if (_ele2.isEdge()) {\n // extra checks for edges\n\n var edge = _ele2;\n var fields = ['source', 'target'];\n var fieldsLength = fields.length;\n var badSourceOrTarget = false;\n for (var j = 0; j < fieldsLength; j++) {\n var field = fields[j];\n var val = _data3[field];\n if (number$1(val)) {\n val = _data3[field] = '' + _data3[field]; // now string\n }\n\n if (val == null || val === '') {\n // can't create if source or target is not defined properly\n error('Can not create edge `' + id + '` with unspecified ' + field);\n badSourceOrTarget = true;\n } else if (!cy.hasElementWithId(val)) {\n // can't create edge if one of its nodes doesn't exist\n error('Can not create edge `' + id + '` with nonexistant ' + field + ' `' + val + '`');\n badSourceOrTarget = true;\n }\n }\n if (badSourceOrTarget) {\n removeFromElements();\n continue;\n } // can't create this\n\n var src = cy.getElementById(_data3.source);\n var tgt = cy.getElementById(_data3.target);\n\n // only one edge in node if loop\n if (src.same(tgt)) {\n src._private.edges.push(edge);\n } else {\n src._private.edges.push(edge);\n tgt._private.edges.push(edge);\n }\n edge._private.source = src;\n edge._private.target = tgt;\n } // if is edge\n\n // create mock ids / indexes maps for element so it can be used like collections\n _private.map = new Map$1();\n _private.map.set(id, {\n ele: _ele2,\n index: 0\n });\n _private.removed = false;\n if (addToPool) {\n cy.addToPool(_ele2);\n }\n } // for each element\n\n // do compound node sanity checks\n for (var _i4 = 0; _i4 < nodes.length; _i4++) {\n // each node\n var node = nodes[_i4];\n var _data4 = node._private.data;\n if (number$1(_data4.parent)) {\n // then automake string\n _data4.parent = '' + _data4.parent;\n }\n var parentId = _data4.parent;\n var specifiedParent = parentId != null;\n if (specifiedParent || node._private.parent) {\n var parent = node._private.parent ? cy.collection().merge(node._private.parent) : cy.getElementById(parentId);\n if (parent.empty()) {\n // non-existant parent; just remove it\n _data4.parent = undefined;\n } else if (parent[0].removed()) {\n warn('Node added with missing parent, reference to parent removed');\n _data4.parent = undefined;\n node._private.parent = null;\n } else {\n var selfAsParent = false;\n var ancestor = parent;\n while (!ancestor.empty()) {\n if (node.same(ancestor)) {\n // mark self as parent and remove from data\n selfAsParent = true;\n _data4.parent = undefined; // remove parent reference\n\n // exit or we loop forever\n break;\n }\n ancestor = ancestor.parent();\n }\n if (!selfAsParent) {\n // connect with children\n parent[0]._private.children.push(node);\n node._private.parent = parent[0];\n\n // let the core know we have a compound graph\n cy_p.hasCompoundNodes = true;\n }\n } // else\n } // if specified parent\n } // for each node\n\n if (elements.length > 0) {\n var restored = elements.length === self.length ? self : new Collection(cy, elements);\n for (var _i5 = 0; _i5 < restored.length; _i5++) {\n var _ele3 = restored[_i5];\n if (_ele3.isNode()) {\n continue;\n }\n\n // adding an edge invalidates the traversal caches for the parallel edges\n _ele3.parallelEdges().clearTraversalCache();\n\n // adding an edge invalidates the traversal cache for the connected nodes\n _ele3.source().clearTraversalCache();\n _ele3.target().clearTraversalCache();\n }\n var toUpdateStyle;\n if (cy_p.hasCompoundNodes) {\n toUpdateStyle = cy.collection().merge(restored).merge(restored.connectedNodes()).merge(restored.parent());\n } else {\n toUpdateStyle = restored;\n }\n toUpdateStyle.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(notifyRenderer);\n if (notifyRenderer) {\n restored.emitAndNotify('add');\n } else if (addToPool) {\n restored.emit('add');\n }\n }\n return self; // chainability\n};\n\nelesfn$1.removed = function () {\n var ele = this[0];\n return ele && ele._private.removed;\n};\nelesfn$1.inside = function () {\n var ele = this[0];\n return ele && !ele._private.removed;\n};\nelesfn$1.remove = function () {\n var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var removeFromPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var self = this;\n var elesToRemove = [];\n var elesToRemoveIds = {};\n var cy = self._private.cy;\n\n // add connected edges\n function addConnectedEdges(node) {\n var edges = node._private.edges;\n for (var i = 0; i < edges.length; i++) {\n add(edges[i]);\n }\n }\n\n // add descendant nodes\n function addChildren(node) {\n var children = node._private.children;\n for (var i = 0; i < children.length; i++) {\n add(children[i]);\n }\n }\n function add(ele) {\n var alreadyAdded = elesToRemoveIds[ele.id()];\n if (removeFromPool && ele.removed() || alreadyAdded) {\n return;\n } else {\n elesToRemoveIds[ele.id()] = true;\n }\n if (ele.isNode()) {\n elesToRemove.push(ele); // nodes are removed last\n\n addConnectedEdges(ele);\n addChildren(ele);\n } else {\n elesToRemove.unshift(ele); // edges are removed first\n }\n }\n\n // make the list of elements to remove\n // (may be removing more than specified due to connected edges etc)\n\n for (var i = 0, l = self.length; i < l; i++) {\n var ele = self[i];\n add(ele);\n }\n function removeEdgeRef(node, edge) {\n var connectedEdges = node._private.edges;\n removeFromArray(connectedEdges, edge);\n\n // removing an edges invalidates the traversal cache for its nodes\n node.clearTraversalCache();\n }\n function removeParallelRef(pllEdge) {\n // removing an edge invalidates the traversal caches for the parallel edges\n pllEdge.clearTraversalCache();\n }\n var alteredParents = [];\n alteredParents.ids = {};\n function removeChildRef(parent, ele) {\n ele = ele[0];\n parent = parent[0];\n var children = parent._private.children;\n var pid = parent.id();\n removeFromArray(children, ele); // remove parent => child ref\n\n ele._private.parent = null; // remove child => parent ref\n\n if (!alteredParents.ids[pid]) {\n alteredParents.ids[pid] = true;\n alteredParents.push(parent);\n }\n }\n self.dirtyCompoundBoundsCache();\n if (removeFromPool) {\n cy.removeFromPool(elesToRemove); // remove from core pool\n }\n\n for (var _i6 = 0; _i6 < elesToRemove.length; _i6++) {\n var _ele4 = elesToRemove[_i6];\n if (_ele4.isEdge()) {\n // remove references to this edge in its connected nodes\n var src = _ele4.source()[0];\n var tgt = _ele4.target()[0];\n removeEdgeRef(src, _ele4);\n removeEdgeRef(tgt, _ele4);\n var pllEdges = _ele4.parallelEdges();\n for (var j = 0; j < pllEdges.length; j++) {\n var pllEdge = pllEdges[j];\n removeParallelRef(pllEdge);\n if (pllEdge.isBundledBezier()) {\n pllEdge.dirtyBoundingBoxCache();\n }\n }\n } else {\n // remove reference to parent\n var parent = _ele4.parent();\n if (parent.length !== 0) {\n removeChildRef(parent, _ele4);\n }\n }\n if (removeFromPool) {\n // mark as removed\n _ele4._private.removed = true;\n }\n }\n\n // check to see if we have a compound graph or not\n var elesStillInside = cy._private.elements;\n cy._private.hasCompoundNodes = false;\n for (var _i7 = 0; _i7 < elesStillInside.length; _i7++) {\n var _ele5 = elesStillInside[_i7];\n if (_ele5.isParent()) {\n cy._private.hasCompoundNodes = true;\n break;\n }\n }\n var removedElements = new Collection(this.cy(), elesToRemove);\n if (removedElements.size() > 0) {\n // must manually notify since trigger won't do this automatically once removed\n\n if (notifyRenderer) {\n removedElements.emitAndNotify('remove');\n } else if (removeFromPool) {\n removedElements.emit('remove');\n }\n }\n\n // the parents who were modified by the removal need their style updated\n for (var _i8 = 0; _i8 < alteredParents.length; _i8++) {\n var _ele6 = alteredParents[_i8];\n if (!removeFromPool || !_ele6.removed()) {\n _ele6.updateStyle();\n }\n }\n return removedElements;\n};\nelesfn$1.move = function (struct) {\n var cy = this._private.cy;\n var eles = this;\n\n // just clean up refs, caches, etc. in the same way as when removing and then restoring\n // (our calls to remove/restore do not remove from the graph or make events)\n var notifyRenderer = false;\n var modifyPool = false;\n var toString = function toString(id) {\n return id == null ? id : '' + id;\n }; // id must be string\n\n if (struct.source !== undefined || struct.target !== undefined) {\n var srcId = toString(struct.source);\n var tgtId = toString(struct.target);\n var srcExists = srcId != null && cy.hasElementWithId(srcId);\n var tgtExists = tgtId != null && cy.hasElementWithId(tgtId);\n if (srcExists || tgtExists) {\n cy.batch(function () {\n // avoid duplicate style updates\n eles.remove(notifyRenderer, modifyPool); // clean up refs etc.\n eles.emitAndNotify('moveout');\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var _data5 = ele._private.data;\n if (ele.isEdge()) {\n if (srcExists) {\n _data5.source = srcId;\n }\n if (tgtExists) {\n _data5.target = tgtId;\n }\n }\n }\n eles.restore(notifyRenderer, modifyPool); // make new refs, style, etc.\n });\n\n eles.emitAndNotify('move');\n }\n } else if (struct.parent !== undefined) {\n // move node to new parent\n var parentId = toString(struct.parent);\n var parentExists = parentId === null || cy.hasElementWithId(parentId);\n if (parentExists) {\n var pidToAssign = parentId === null ? undefined : parentId;\n cy.batch(function () {\n // avoid duplicate style updates\n var updated = eles.remove(notifyRenderer, modifyPool); // clean up refs etc.\n updated.emitAndNotify('moveout');\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var _data6 = ele._private.data;\n if (ele.isNode()) {\n _data6.parent = pidToAssign;\n }\n }\n updated.restore(notifyRenderer, modifyPool); // make new refs, style, etc.\n });\n\n eles.emitAndNotify('move');\n }\n }\n return this;\n};\n[elesfn$j, elesfn$i, elesfn$h, elesfn$g, elesfn$f, data, elesfn$d, dimensions, elesfn$9, elesfn$8, elesfn$7, elesfn$6, elesfn$5, elesfn$4, elesfn$3, elesfn$2].forEach(function (props) {\n extend(elesfn$1, props);\n});\n\nvar corefn$9 = {\n add: function add(opts) {\n var elements;\n var cy = this;\n\n // add the elements\n if (elementOrCollection(opts)) {\n var eles = opts;\n if (eles._private.cy === cy) {\n // same instance => just restore\n elements = eles.restore();\n } else {\n // otherwise, copy from json\n var jsons = [];\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n jsons.push(ele.json());\n }\n elements = new Collection(cy, jsons);\n }\n }\n\n // specify an array of options\n else if (array(opts)) {\n var _jsons = opts;\n elements = new Collection(cy, _jsons);\n }\n\n // specify via opts.nodes and opts.edges\n else if (plainObject(opts) && (array(opts.nodes) || array(opts.edges))) {\n var elesByGroup = opts;\n var _jsons2 = [];\n var grs = ['nodes', 'edges'];\n for (var _i = 0, il = grs.length; _i < il; _i++) {\n var group = grs[_i];\n var elesArray = elesByGroup[group];\n if (array(elesArray)) {\n for (var j = 0, jl = elesArray.length; j < jl; j++) {\n var json = extend({\n group: group\n }, elesArray[j]);\n _jsons2.push(json);\n }\n }\n }\n elements = new Collection(cy, _jsons2);\n }\n\n // specify options for one element\n else {\n var _json = opts;\n elements = new Element(cy, _json).collection();\n }\n return elements;\n },\n remove: function remove(collection) {\n if (elementOrCollection(collection)) ; else if (string(collection)) {\n var selector = collection;\n collection = this.$(selector);\n }\n return collection.remove();\n }\n};\n\n/* global Float32Array */\n\n/*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */\nfunction generateCubicBezier(mX1, mY1, mX2, mY2) {\n var NEWTON_ITERATIONS = 4,\n NEWTON_MIN_SLOPE = 0.001,\n SUBDIVISION_PRECISION = 0.0000001,\n SUBDIVISION_MAX_ITERATIONS = 10,\n kSplineTableSize = 11,\n kSampleStepSize = 1.0 / (kSplineTableSize - 1.0),\n float32ArraySupported = typeof Float32Array !== 'undefined';\n\n /* Must contain four arguments. */\n if (arguments.length !== 4) {\n return false;\n }\n\n /* Arguments must be numbers. */\n for (var i = 0; i < 4; ++i) {\n if (typeof arguments[i] !== \"number\" || isNaN(arguments[i]) || !isFinite(arguments[i])) {\n return false;\n }\n }\n\n /* X values must be in the [0, 1] range. */\n mX1 = Math.min(mX1, 1);\n mX2 = Math.min(mX2, 1);\n mX1 = Math.max(mX1, 0);\n mX2 = Math.max(mX2, 0);\n var mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n function C(aA1) {\n return 3.0 * aA1;\n }\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n }\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n function newtonRaphsonIterate(aX, aGuessT) {\n for (var _i = 0; _i < NEWTON_ITERATIONS; ++_i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n function calcSampleValues() {\n for (var _i2 = 0; _i2 < kSplineTableSize; ++_i2) {\n mSampleValues[_i2] = calcBezier(_i2 * kSampleStepSize, mX1, mX2);\n }\n }\n function binarySubdivide(aX, aA, aB) {\n var currentX,\n currentT,\n i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n }\n function getTForX(aX) {\n var intervalStart = 0.0,\n currentSample = 1,\n lastSample = kSplineTableSize - 1;\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]),\n guessForT = intervalStart + dist * kSampleStepSize,\n initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize);\n }\n }\n var _precomputed = false;\n function precompute() {\n _precomputed = true;\n if (mX1 !== mY1 || mX2 !== mY2) {\n calcSampleValues();\n }\n }\n var f = function f(aX) {\n if (!_precomputed) {\n precompute();\n }\n if (mX1 === mY1 && mX2 === mY2) {\n return aX;\n }\n if (aX === 0) {\n return 0;\n }\n if (aX === 1) {\n return 1;\n }\n return calcBezier(getTForX(aX), mY1, mY2);\n };\n f.getControlPoints = function () {\n return [{\n x: mX1,\n y: mY1\n }, {\n x: mX2,\n y: mY2\n }];\n };\n var str = \"generateBezier(\" + [mX1, mY1, mX2, mY2] + \")\";\n f.toString = function () {\n return str;\n };\n return f;\n}\n\n/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */\n/* Given a tension, friction, and duration, a simulation at 60FPS will first run without a defined duration in order to calculate the full path. A second pass\n then adjusts the time delta -- using the relation between actual time and duration -- to calculate the path for the duration-constrained animation. */\nvar generateSpringRK4 = function () {\n function springAccelerationForState(state) {\n return -state.tension * state.x - state.friction * state.v;\n }\n function springEvaluateStateWithDerivative(initialState, dt, derivative) {\n var state = {\n x: initialState.x + derivative.dx * dt,\n v: initialState.v + derivative.dv * dt,\n tension: initialState.tension,\n friction: initialState.friction\n };\n return {\n dx: state.v,\n dv: springAccelerationForState(state)\n };\n }\n function springIntegrateState(state, dt) {\n var a = {\n dx: state.v,\n dv: springAccelerationForState(state)\n },\n b = springEvaluateStateWithDerivative(state, dt * 0.5, a),\n c = springEvaluateStateWithDerivative(state, dt * 0.5, b),\n d = springEvaluateStateWithDerivative(state, dt, c),\n dxdt = 1.0 / 6.0 * (a.dx + 2.0 * (b.dx + c.dx) + d.dx),\n dvdt = 1.0 / 6.0 * (a.dv + 2.0 * (b.dv + c.dv) + d.dv);\n state.x = state.x + dxdt * dt;\n state.v = state.v + dvdt * dt;\n return state;\n }\n return function springRK4Factory(tension, friction, duration) {\n var initState = {\n x: -1,\n v: 0,\n tension: null,\n friction: null\n },\n path = [0],\n time_lapsed = 0,\n tolerance = 1 / 10000,\n DT = 16 / 1000,\n have_duration,\n dt,\n last_state;\n tension = parseFloat(tension) || 500;\n friction = parseFloat(friction) || 20;\n duration = duration || null;\n initState.tension = tension;\n initState.friction = friction;\n have_duration = duration !== null;\n\n /* Calculate the actual time it takes for this animation to complete with the provided conditions. */\n if (have_duration) {\n /* Run the simulation without a duration. */\n time_lapsed = springRK4Factory(tension, friction);\n /* Compute the adjusted time delta. */\n dt = time_lapsed / duration * DT;\n } else {\n dt = DT;\n }\n for (;;) {\n /* Next/step function .*/\n last_state = springIntegrateState(last_state || initState, dt);\n /* Store the position. */\n path.push(1 + last_state.x);\n time_lapsed += 16;\n /* If the change threshold is reached, break. */\n if (!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) {\n break;\n }\n }\n\n /* If duration is not defined, return the actual time required for completing this animation. Otherwise, return a closure that holds the\n computed path and returns a snapshot of the position according to a given percentComplete. */\n return !have_duration ? time_lapsed : function (percentComplete) {\n return path[percentComplete * (path.length - 1) | 0];\n };\n };\n}();\n\nvar cubicBezier = function cubicBezier(t1, p1, t2, p2) {\n var bezier = generateCubicBezier(t1, p1, t2, p2);\n return function (start, end, percent) {\n return start + (end - start) * bezier(percent);\n };\n};\nvar easings = {\n 'linear': function linear(start, end, percent) {\n return start + (end - start) * percent;\n },\n // default easings\n 'ease': cubicBezier(0.25, 0.1, 0.25, 1),\n 'ease-in': cubicBezier(0.42, 0, 1, 1),\n 'ease-out': cubicBezier(0, 0, 0.58, 1),\n 'ease-in-out': cubicBezier(0.42, 0, 0.58, 1),\n // sine\n 'ease-in-sine': cubicBezier(0.47, 0, 0.745, 0.715),\n 'ease-out-sine': cubicBezier(0.39, 0.575, 0.565, 1),\n 'ease-in-out-sine': cubicBezier(0.445, 0.05, 0.55, 0.95),\n // quad\n 'ease-in-quad': cubicBezier(0.55, 0.085, 0.68, 0.53),\n 'ease-out-quad': cubicBezier(0.25, 0.46, 0.45, 0.94),\n 'ease-in-out-quad': cubicBezier(0.455, 0.03, 0.515, 0.955),\n // cubic\n 'ease-in-cubic': cubicBezier(0.55, 0.055, 0.675, 0.19),\n 'ease-out-cubic': cubicBezier(0.215, 0.61, 0.355, 1),\n 'ease-in-out-cubic': cubicBezier(0.645, 0.045, 0.355, 1),\n // quart\n 'ease-in-quart': cubicBezier(0.895, 0.03, 0.685, 0.22),\n 'ease-out-quart': cubicBezier(0.165, 0.84, 0.44, 1),\n 'ease-in-out-quart': cubicBezier(0.77, 0, 0.175, 1),\n // quint\n 'ease-in-quint': cubicBezier(0.755, 0.05, 0.855, 0.06),\n 'ease-out-quint': cubicBezier(0.23, 1, 0.32, 1),\n 'ease-in-out-quint': cubicBezier(0.86, 0, 0.07, 1),\n // expo\n 'ease-in-expo': cubicBezier(0.95, 0.05, 0.795, 0.035),\n 'ease-out-expo': cubicBezier(0.19, 1, 0.22, 1),\n 'ease-in-out-expo': cubicBezier(1, 0, 0, 1),\n // circ\n 'ease-in-circ': cubicBezier(0.6, 0.04, 0.98, 0.335),\n 'ease-out-circ': cubicBezier(0.075, 0.82, 0.165, 1),\n 'ease-in-out-circ': cubicBezier(0.785, 0.135, 0.15, 0.86),\n // user param easings...\n\n 'spring': function spring(tension, friction, duration) {\n if (duration === 0) {\n // can't get a spring w/ duration 0\n return easings.linear; // duration 0 => jump to end so impl doesn't matter\n }\n\n var spring = generateSpringRK4(tension, friction, duration);\n return function (start, end, percent) {\n return start + (end - start) * spring(percent);\n };\n },\n 'cubic-bezier': cubicBezier\n};\n\nfunction getEasedValue(type, start, end, percent, easingFn) {\n if (percent === 1) {\n return end;\n }\n if (start === end) {\n return end;\n }\n var val = easingFn(start, end, percent);\n if (type == null) {\n return val;\n }\n if (type.roundValue || type.color) {\n val = Math.round(val);\n }\n if (type.min !== undefined) {\n val = Math.max(val, type.min);\n }\n if (type.max !== undefined) {\n val = Math.min(val, type.max);\n }\n return val;\n}\nfunction getValue(prop, spec) {\n if (prop.pfValue != null || prop.value != null) {\n if (prop.pfValue != null && (spec == null || spec.type.units !== '%')) {\n return prop.pfValue;\n } else {\n return prop.value;\n }\n } else {\n return prop;\n }\n}\nfunction ease(startProp, endProp, percent, easingFn, propSpec) {\n var type = propSpec != null ? propSpec.type : null;\n if (percent < 0) {\n percent = 0;\n } else if (percent > 1) {\n percent = 1;\n }\n var start = getValue(startProp, propSpec);\n var end = getValue(endProp, propSpec);\n if (number$1(start) && number$1(end)) {\n return getEasedValue(type, start, end, percent, easingFn);\n } else if (array(start) && array(end)) {\n var easedArr = [];\n for (var i = 0; i < end.length; i++) {\n var si = start[i];\n var ei = end[i];\n if (si != null && ei != null) {\n var val = getEasedValue(type, si, ei, percent, easingFn);\n easedArr.push(val);\n } else {\n easedArr.push(ei);\n }\n }\n return easedArr;\n }\n return undefined;\n}\n\nfunction step$1(self, ani, now, isCore) {\n var isEles = !isCore;\n var _p = self._private;\n var ani_p = ani._private;\n var pEasing = ani_p.easing;\n var startTime = ani_p.startTime;\n var cy = isCore ? self : self.cy();\n var style = cy.style();\n if (!ani_p.easingImpl) {\n if (pEasing == null) {\n // use default\n ani_p.easingImpl = easings['linear'];\n } else {\n // then define w/ name\n var easingVals;\n if (string(pEasing)) {\n var easingProp = style.parse('transition-timing-function', pEasing);\n easingVals = easingProp.value;\n } else {\n // then assume preparsed array\n easingVals = pEasing;\n }\n var name, args;\n if (string(easingVals)) {\n name = easingVals;\n args = [];\n } else {\n name = easingVals[1];\n args = easingVals.slice(2).map(function (n) {\n return +n;\n });\n }\n if (args.length > 0) {\n // create with args\n if (name === 'spring') {\n args.push(ani_p.duration); // need duration to generate spring\n }\n\n ani_p.easingImpl = easings[name].apply(null, args);\n } else {\n // static impl by name\n ani_p.easingImpl = easings[name];\n }\n }\n }\n var easing = ani_p.easingImpl;\n var percent;\n if (ani_p.duration === 0) {\n percent = 1;\n } else {\n percent = (now - startTime) / ani_p.duration;\n }\n if (ani_p.applying) {\n percent = ani_p.progress;\n }\n if (percent < 0) {\n percent = 0;\n } else if (percent > 1) {\n percent = 1;\n }\n if (ani_p.delay == null) {\n // then update\n\n var startPos = ani_p.startPosition;\n var endPos = ani_p.position;\n if (endPos && isEles && !self.locked()) {\n var newPos = {};\n if (valid(startPos.x, endPos.x)) {\n newPos.x = ease(startPos.x, endPos.x, percent, easing);\n }\n if (valid(startPos.y, endPos.y)) {\n newPos.y = ease(startPos.y, endPos.y, percent, easing);\n }\n self.position(newPos);\n }\n var startPan = ani_p.startPan;\n var endPan = ani_p.pan;\n var pan = _p.pan;\n var animatingPan = endPan != null && isCore;\n if (animatingPan) {\n if (valid(startPan.x, endPan.x)) {\n pan.x = ease(startPan.x, endPan.x, percent, easing);\n }\n if (valid(startPan.y, endPan.y)) {\n pan.y = ease(startPan.y, endPan.y, percent, easing);\n }\n self.emit('pan');\n }\n var startZoom = ani_p.startZoom;\n var endZoom = ani_p.zoom;\n var animatingZoom = endZoom != null && isCore;\n if (animatingZoom) {\n if (valid(startZoom, endZoom)) {\n _p.zoom = bound(_p.minZoom, ease(startZoom, endZoom, percent, easing), _p.maxZoom);\n }\n self.emit('zoom');\n }\n if (animatingPan || animatingZoom) {\n self.emit('viewport');\n }\n var props = ani_p.style;\n if (props && props.length > 0 && isEles) {\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n var _name = prop.name;\n var end = prop;\n var start = ani_p.startStyle[_name];\n var propSpec = style.properties[start.name];\n var easedVal = ease(start, end, percent, easing, propSpec);\n style.overrideBypass(self, _name, easedVal);\n } // for props\n\n self.emit('style');\n } // if\n }\n\n ani_p.progress = percent;\n return percent;\n}\nfunction valid(start, end) {\n if (start == null || end == null) {\n return false;\n }\n if (number$1(start) && number$1(end)) {\n return true;\n } else if (start && end) {\n return true;\n }\n return false;\n}\n\nfunction startAnimation(self, ani, now, isCore) {\n var ani_p = ani._private;\n ani_p.started = true;\n ani_p.startTime = now - ani_p.progress * ani_p.duration;\n}\n\nfunction stepAll(now, cy) {\n var eles = cy._private.aniEles;\n var doneEles = [];\n function stepOne(ele, isCore) {\n var _p = ele._private;\n var current = _p.animation.current;\n var queue = _p.animation.queue;\n var ranAnis = false;\n\n // if nothing currently animating, get something from the queue\n if (current.length === 0) {\n var next = queue.shift();\n if (next) {\n current.push(next);\n }\n }\n var callbacks = function callbacks(_callbacks) {\n for (var j = _callbacks.length - 1; j >= 0; j--) {\n var cb = _callbacks[j];\n cb();\n }\n _callbacks.splice(0, _callbacks.length);\n };\n\n // step and remove if done\n for (var i = current.length - 1; i >= 0; i--) {\n var ani = current[i];\n var ani_p = ani._private;\n if (ani_p.stopped) {\n current.splice(i, 1);\n ani_p.hooked = false;\n ani_p.playing = false;\n ani_p.started = false;\n callbacks(ani_p.frames);\n continue;\n }\n if (!ani_p.playing && !ani_p.applying) {\n continue;\n }\n\n // an apply() while playing shouldn't do anything\n if (ani_p.playing && ani_p.applying) {\n ani_p.applying = false;\n }\n if (!ani_p.started) {\n startAnimation(ele, ani, now);\n }\n step$1(ele, ani, now, isCore);\n if (ani_p.applying) {\n ani_p.applying = false;\n }\n callbacks(ani_p.frames);\n if (ani_p.step != null) {\n ani_p.step(now);\n }\n if (ani.completed()) {\n current.splice(i, 1);\n ani_p.hooked = false;\n ani_p.playing = false;\n ani_p.started = false;\n callbacks(ani_p.completes);\n }\n ranAnis = true;\n }\n if (!isCore && current.length === 0 && queue.length === 0) {\n doneEles.push(ele);\n }\n return ranAnis;\n } // stepElement\n\n // handle all eles\n var ranEleAni = false;\n for (var e = 0; e < eles.length; e++) {\n var ele = eles[e];\n var handledThisEle = stepOne(ele);\n ranEleAni = ranEleAni || handledThisEle;\n } // each element\n\n var ranCoreAni = stepOne(cy, true);\n\n // notify renderer\n if (ranEleAni || ranCoreAni) {\n if (eles.length > 0) {\n cy.notify('draw', eles);\n } else {\n cy.notify('draw');\n }\n }\n\n // remove elements from list of currently animating if its queues are empty\n eles.unmerge(doneEles);\n cy.emit('step');\n} // stepAll\n\nvar corefn$8 = {\n // pull in animation functions\n animate: define.animate(),\n animation: define.animation(),\n animated: define.animated(),\n clearQueue: define.clearQueue(),\n delay: define.delay(),\n delayAnimation: define.delayAnimation(),\n stop: define.stop(),\n addToAnimationPool: function addToAnimationPool(eles) {\n var cy = this;\n if (!cy.styleEnabled()) {\n return;\n } // save cycles when no style used\n\n cy._private.aniEles.merge(eles);\n },\n stopAnimationLoop: function stopAnimationLoop() {\n this._private.animationsRunning = false;\n },\n startAnimationLoop: function startAnimationLoop() {\n var cy = this;\n cy._private.animationsRunning = true;\n if (!cy.styleEnabled()) {\n return;\n } // save cycles when no style used\n\n // NB the animation loop will exec in headless environments if style enabled\n // and explicit cy.destroy() is necessary to stop the loop\n\n function headlessStep() {\n if (!cy._private.animationsRunning) {\n return;\n }\n requestAnimationFrame(function animationStep(now) {\n stepAll(now, cy);\n headlessStep();\n });\n }\n var renderer = cy.renderer();\n if (renderer && renderer.beforeRender) {\n // let the renderer schedule animations\n renderer.beforeRender(function rendererAnimationStep(willDraw, now) {\n stepAll(now, cy);\n }, renderer.beforeRenderPriorities.animations);\n } else {\n // manage the animation loop ourselves\n headlessStep(); // first call\n }\n }\n};\n\nvar emitterOptions = {\n qualifierCompare: function qualifierCompare(selector1, selector2) {\n if (selector1 == null || selector2 == null) {\n return selector1 == null && selector2 == null;\n } else {\n return selector1.sameText(selector2);\n }\n },\n eventMatches: function eventMatches(cy, listener, eventObj) {\n var selector = listener.qualifier;\n if (selector != null) {\n return cy !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target);\n }\n return true;\n },\n addEventFields: function addEventFields(cy, evt) {\n evt.cy = cy;\n evt.target = cy;\n },\n callbackContext: function callbackContext(cy, listener, eventObj) {\n return listener.qualifier != null ? eventObj.target : cy;\n }\n};\nvar argSelector = function argSelector(arg) {\n if (string(arg)) {\n return new Selector(arg);\n } else {\n return arg;\n }\n};\nvar elesfn = {\n createEmitter: function createEmitter() {\n var _p = this._private;\n if (!_p.emitter) {\n _p.emitter = new Emitter(emitterOptions, this);\n }\n return this;\n },\n emitter: function emitter() {\n return this._private.emitter;\n },\n on: function on(events, selector, callback) {\n this.emitter().on(events, argSelector(selector), callback);\n return this;\n },\n removeListener: function removeListener(events, selector, callback) {\n this.emitter().removeListener(events, argSelector(selector), callback);\n return this;\n },\n removeAllListeners: function removeAllListeners() {\n this.emitter().removeAllListeners();\n return this;\n },\n one: function one(events, selector, callback) {\n this.emitter().one(events, argSelector(selector), callback);\n return this;\n },\n once: function once(events, selector, callback) {\n this.emitter().one(events, argSelector(selector), callback);\n return this;\n },\n emit: function emit(events, extraParams) {\n this.emitter().emit(events, extraParams);\n return this;\n },\n emitAndNotify: function emitAndNotify(event, eles) {\n this.emit(event);\n this.notify(event, eles);\n return this;\n }\n};\ndefine.eventAliasesOn(elesfn);\n\nvar corefn$7 = {\n png: function png(options) {\n var renderer = this._private.renderer;\n options = options || {};\n return renderer.png(options);\n },\n jpg: function jpg(options) {\n var renderer = this._private.renderer;\n options = options || {};\n options.bg = options.bg || '#fff';\n return renderer.jpg(options);\n }\n};\ncorefn$7.jpeg = corefn$7.jpg;\n\nvar corefn$6 = {\n layout: function layout(options) {\n var cy = this;\n if (options == null) {\n error('Layout options must be specified to make a layout');\n return;\n }\n if (options.name == null) {\n error('A `name` must be specified to make a layout');\n return;\n }\n var name = options.name;\n var Layout = cy.extension('layout', name);\n if (Layout == null) {\n error('No such layout `' + name + '` found. Did you forget to import it and `cytoscape.use()` it?');\n return;\n }\n var eles;\n if (string(options.eles)) {\n eles = cy.$(options.eles);\n } else {\n eles = options.eles != null ? options.eles : cy.$();\n }\n var layout = new Layout(extend({}, options, {\n cy: cy,\n eles: eles\n }));\n return layout;\n }\n};\ncorefn$6.createLayout = corefn$6.makeLayout = corefn$6.layout;\n\nvar corefn$5 = {\n notify: function notify(eventName, eventEles) {\n var _p = this._private;\n if (this.batching()) {\n _p.batchNotifications = _p.batchNotifications || {};\n var eles = _p.batchNotifications[eventName] = _p.batchNotifications[eventName] || this.collection();\n if (eventEles != null) {\n eles.merge(eventEles);\n }\n return; // notifications are disabled during batching\n }\n\n if (!_p.notificationsEnabled) {\n return;\n } // exit on disabled\n\n var renderer = this.renderer();\n\n // exit if destroy() called on core or renderer in between frames #1499 #1528\n if (this.destroyed() || !renderer) {\n return;\n }\n renderer.notify(eventName, eventEles);\n },\n notifications: function notifications(bool) {\n var p = this._private;\n if (bool === undefined) {\n return p.notificationsEnabled;\n } else {\n p.notificationsEnabled = bool ? true : false;\n }\n return this;\n },\n noNotifications: function noNotifications(callback) {\n this.notifications(false);\n callback();\n this.notifications(true);\n },\n batching: function batching() {\n return this._private.batchCount > 0;\n },\n startBatch: function startBatch() {\n var _p = this._private;\n if (_p.batchCount == null) {\n _p.batchCount = 0;\n }\n if (_p.batchCount === 0) {\n _p.batchStyleEles = this.collection();\n _p.batchNotifications = {};\n }\n _p.batchCount++;\n return this;\n },\n endBatch: function endBatch() {\n var _p = this._private;\n if (_p.batchCount === 0) {\n return this;\n }\n _p.batchCount--;\n if (_p.batchCount === 0) {\n // update style for dirty eles\n _p.batchStyleEles.updateStyle();\n var renderer = this.renderer();\n\n // notify the renderer of queued eles and event types\n Object.keys(_p.batchNotifications).forEach(function (eventName) {\n var eles = _p.batchNotifications[eventName];\n if (eles.empty()) {\n renderer.notify(eventName);\n } else {\n renderer.notify(eventName, eles);\n }\n });\n }\n return this;\n },\n batch: function batch(callback) {\n this.startBatch();\n callback();\n this.endBatch();\n return this;\n },\n // for backwards compatibility\n batchData: function batchData(map) {\n var cy = this;\n return this.batch(function () {\n var ids = Object.keys(map);\n for (var i = 0; i < ids.length; i++) {\n var id = ids[i];\n var data = map[id];\n var ele = cy.getElementById(id);\n ele.data(data);\n }\n });\n }\n};\n\nvar rendererDefaults = defaults$g({\n hideEdgesOnViewport: false,\n textureOnViewport: false,\n motionBlur: false,\n motionBlurOpacity: 0.05,\n pixelRatio: undefined,\n desktopTapThreshold: 4,\n touchTapThreshold: 8,\n wheelSensitivity: 1,\n debug: false,\n showFps: false\n});\nvar corefn$4 = {\n renderTo: function renderTo(context, zoom, pan, pxRatio) {\n var r = this._private.renderer;\n r.renderTo(context, zoom, pan, pxRatio);\n return this;\n },\n renderer: function renderer() {\n return this._private.renderer;\n },\n forceRender: function forceRender() {\n this.notify('draw');\n return this;\n },\n resize: function resize() {\n this.invalidateSize();\n this.emitAndNotify('resize');\n return this;\n },\n initRenderer: function initRenderer(options) {\n var cy = this;\n var RendererProto = cy.extension('renderer', options.name);\n if (RendererProto == null) {\n error(\"Can not initialise: No such renderer `\".concat(options.name, \"` found. Did you forget to import it and `cytoscape.use()` it?\"));\n return;\n }\n if (options.wheelSensitivity !== undefined) {\n warn(\"You have set a custom wheel sensitivity. This will make your app zoom unnaturally when using mainstream mice. You should change this value from the default only if you can guarantee that all your users will use the same hardware and OS configuration as your current machine.\");\n }\n var rOpts = rendererDefaults(options);\n rOpts.cy = cy;\n cy._private.renderer = new RendererProto(rOpts);\n this.notify('init');\n },\n destroyRenderer: function destroyRenderer() {\n var cy = this;\n cy.notify('destroy'); // destroy the renderer\n\n var domEle = cy.container();\n if (domEle) {\n domEle._cyreg = null;\n while (domEle.childNodes.length > 0) {\n domEle.removeChild(domEle.childNodes[0]);\n }\n }\n cy._private.renderer = null; // to be extra safe, remove the ref\n cy.mutableElements().forEach(function (ele) {\n var _p = ele._private;\n _p.rscratch = {};\n _p.rstyle = {};\n _p.animation.current = [];\n _p.animation.queue = [];\n });\n },\n onRender: function onRender(fn) {\n return this.on('render', fn);\n },\n offRender: function offRender(fn) {\n return this.off('render', fn);\n }\n};\ncorefn$4.invalidateDimensions = corefn$4.resize;\n\nvar corefn$3 = {\n // get a collection\n // - empty collection on no args\n // - collection of elements in the graph on selector arg\n // - guarantee a returned collection when elements or collection specified\n collection: function collection(eles, opts) {\n if (string(eles)) {\n return this.$(eles);\n } else if (elementOrCollection(eles)) {\n return eles.collection();\n } else if (array(eles)) {\n if (!opts) {\n opts = {};\n }\n return new Collection(this, eles, opts.unique, opts.removed);\n }\n return new Collection(this);\n },\n nodes: function nodes(selector) {\n var nodes = this.$(function (ele) {\n return ele.isNode();\n });\n if (selector) {\n return nodes.filter(selector);\n }\n return nodes;\n },\n edges: function edges(selector) {\n var edges = this.$(function (ele) {\n return ele.isEdge();\n });\n if (selector) {\n return edges.filter(selector);\n }\n return edges;\n },\n // search the graph like jQuery\n $: function $(selector) {\n var eles = this._private.elements;\n if (selector) {\n return eles.filter(selector);\n } else {\n return eles.spawnSelf();\n }\n },\n mutableElements: function mutableElements() {\n return this._private.elements;\n }\n};\n\n// aliases\ncorefn$3.elements = corefn$3.filter = corefn$3.$;\n\nvar styfn$8 = {};\n\n// keys for style blocks, e.g. ttfftt\nvar TRUE = 't';\nvar FALSE = 'f';\n\n// (potentially expensive calculation)\n// apply the style to the element based on\n// - its bypass\n// - what selectors match it\nstyfn$8.apply = function (eles) {\n var self = this;\n var _p = self._private;\n var cy = _p.cy;\n var updatedEles = cy.collection();\n for (var ie = 0; ie < eles.length; ie++) {\n var ele = eles[ie];\n var cxtMeta = self.getContextMeta(ele);\n if (cxtMeta.empty) {\n continue;\n }\n var cxtStyle = self.getContextStyle(cxtMeta);\n var app = self.applyContextStyle(cxtMeta, cxtStyle, ele);\n if (ele._private.appliedInitStyle) {\n self.updateTransitions(ele, app.diffProps);\n } else {\n ele._private.appliedInitStyle = true;\n }\n var hintsDiff = self.updateStyleHints(ele);\n if (hintsDiff) {\n updatedEles.push(ele);\n }\n } // for elements\n\n return updatedEles;\n};\nstyfn$8.getPropertiesDiff = function (oldCxtKey, newCxtKey) {\n var self = this;\n var cache = self._private.propDiffs = self._private.propDiffs || {};\n var dualCxtKey = oldCxtKey + '-' + newCxtKey;\n var cachedVal = cache[dualCxtKey];\n if (cachedVal) {\n return cachedVal;\n }\n var diffProps = [];\n var addedProp = {};\n for (var i = 0; i < self.length; i++) {\n var cxt = self[i];\n var oldHasCxt = oldCxtKey[i] === TRUE;\n var newHasCxt = newCxtKey[i] === TRUE;\n var cxtHasDiffed = oldHasCxt !== newHasCxt;\n var cxtHasMappedProps = cxt.mappedProperties.length > 0;\n if (cxtHasDiffed || newHasCxt && cxtHasMappedProps) {\n var props = void 0;\n if (cxtHasDiffed && cxtHasMappedProps) {\n props = cxt.properties; // suffices b/c mappedProperties is a subset of properties\n } else if (cxtHasDiffed) {\n props = cxt.properties; // need to check them all\n } else if (cxtHasMappedProps) {\n props = cxt.mappedProperties; // only need to check mapped\n }\n\n for (var j = 0; j < props.length; j++) {\n var prop = props[j];\n var name = prop.name;\n\n // if a later context overrides this property, then the fact that this context has switched/diffed doesn't matter\n // (semi expensive check since it makes this function O(n^2) on context length, but worth it since overall result\n // is cached)\n var laterCxtOverrides = false;\n for (var k = i + 1; k < self.length; k++) {\n var laterCxt = self[k];\n var hasLaterCxt = newCxtKey[k] === TRUE;\n if (!hasLaterCxt) {\n continue;\n } // can't override unless the context is active\n\n laterCxtOverrides = laterCxt.properties[prop.name] != null;\n if (laterCxtOverrides) {\n break;\n } // exit early as long as one later context overrides\n }\n\n if (!addedProp[name] && !laterCxtOverrides) {\n addedProp[name] = true;\n diffProps.push(name);\n }\n } // for props\n } // if\n } // for contexts\n\n cache[dualCxtKey] = diffProps;\n return diffProps;\n};\nstyfn$8.getContextMeta = function (ele) {\n var self = this;\n var cxtKey = '';\n var diffProps;\n var prevKey = ele._private.styleCxtKey || '';\n\n // get the cxt key\n for (var i = 0; i < self.length; i++) {\n var context = self[i];\n var contextSelectorMatches = context.selector && context.selector.matches(ele); // NB: context.selector may be null for 'core'\n\n if (contextSelectorMatches) {\n cxtKey += TRUE;\n } else {\n cxtKey += FALSE;\n }\n } // for context\n\n diffProps = self.getPropertiesDiff(prevKey, cxtKey);\n ele._private.styleCxtKey = cxtKey;\n return {\n key: cxtKey,\n diffPropNames: diffProps,\n empty: diffProps.length === 0\n };\n};\n\n// gets a computed ele style object based on matched contexts\nstyfn$8.getContextStyle = function (cxtMeta) {\n var cxtKey = cxtMeta.key;\n var self = this;\n var cxtStyles = this._private.contextStyles = this._private.contextStyles || {};\n\n // if already computed style, returned cached copy\n if (cxtStyles[cxtKey]) {\n return cxtStyles[cxtKey];\n }\n var style = {\n _private: {\n key: cxtKey\n }\n };\n for (var i = 0; i < self.length; i++) {\n var cxt = self[i];\n var hasCxt = cxtKey[i] === TRUE;\n if (!hasCxt) {\n continue;\n }\n for (var j = 0; j < cxt.properties.length; j++) {\n var prop = cxt.properties[j];\n style[prop.name] = prop;\n }\n }\n cxtStyles[cxtKey] = style;\n return style;\n};\nstyfn$8.applyContextStyle = function (cxtMeta, cxtStyle, ele) {\n var self = this;\n var diffProps = cxtMeta.diffPropNames;\n var retDiffProps = {};\n var types = self.types;\n for (var i = 0; i < diffProps.length; i++) {\n var diffPropName = diffProps[i];\n var cxtProp = cxtStyle[diffPropName];\n var eleProp = ele.pstyle(diffPropName);\n if (!cxtProp) {\n // no context prop means delete\n if (!eleProp) {\n continue; // no existing prop means nothing needs to be removed\n // nb affects initial application on mapped values like control-point-distances\n } else if (eleProp.bypass) {\n cxtProp = {\n name: diffPropName,\n deleteBypassed: true\n };\n } else {\n cxtProp = {\n name: diffPropName,\n \"delete\": true\n };\n }\n }\n\n // save cycles when the context prop doesn't need to be applied\n if (eleProp === cxtProp) {\n continue;\n }\n\n // save cycles when a mapped context prop doesn't need to be applied\n if (cxtProp.mapped === types.fn // context prop is function mapper\n && eleProp != null // some props can be null even by default (e.g. a prop that overrides another one)\n && eleProp.mapping != null // ele prop is a concrete value from from a mapper\n && eleProp.mapping.value === cxtProp.value // the current prop on the ele is a flat prop value for the function mapper\n ) {\n // NB don't write to cxtProp, as it's shared among eles (stored in stylesheet)\n var mapping = eleProp.mapping; // can write to mapping, as it's a per-ele copy\n var fnValue = mapping.fnValue = cxtProp.value(ele); // temporarily cache the value in case of a miss\n\n if (fnValue === mapping.prevFnValue) {\n continue;\n }\n }\n var retDiffProp = retDiffProps[diffPropName] = {\n prev: eleProp\n };\n self.applyParsedProperty(ele, cxtProp);\n retDiffProp.next = ele.pstyle(diffPropName);\n if (retDiffProp.next && retDiffProp.next.bypass) {\n retDiffProp.next = retDiffProp.next.bypassed;\n }\n }\n return {\n diffProps: retDiffProps\n };\n};\nstyfn$8.updateStyleHints = function (ele) {\n var _p = ele._private;\n var self = this;\n var propNames = self.propertyGroupNames;\n var propGrKeys = self.propertyGroupKeys;\n var propHash = function propHash(ele, propNames, seedKey) {\n return self.getPropertiesHash(ele, propNames, seedKey);\n };\n var oldStyleKey = _p.styleKey;\n if (ele.removed()) {\n return false;\n }\n var isNode = _p.group === 'nodes';\n\n // get the style key hashes per prop group\n // but lazily -- only use non-default prop values to reduce the number of hashes\n //\n\n var overriddenStyles = ele._private.style;\n propNames = Object.keys(overriddenStyles);\n for (var i = 0; i < propGrKeys.length; i++) {\n var grKey = propGrKeys[i];\n _p.styleKeys[grKey] = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT];\n }\n var updateGrKey1 = function updateGrKey1(val, grKey) {\n return _p.styleKeys[grKey][0] = hashInt(val, _p.styleKeys[grKey][0]);\n };\n var updateGrKey2 = function updateGrKey2(val, grKey) {\n return _p.styleKeys[grKey][1] = hashIntAlt(val, _p.styleKeys[grKey][1]);\n };\n var updateGrKey = function updateGrKey(val, grKey) {\n updateGrKey1(val, grKey);\n updateGrKey2(val, grKey);\n };\n var updateGrKeyWStr = function updateGrKeyWStr(strVal, grKey) {\n for (var j = 0; j < strVal.length; j++) {\n var ch = strVal.charCodeAt(j);\n updateGrKey1(ch, grKey);\n updateGrKey2(ch, grKey);\n }\n };\n\n // - hashing works on 32 bit ints b/c we use bitwise ops\n // - small numbers get cut off (e.g. 0.123 is seen as 0 by the hashing function)\n // - raise up small numbers so more significant digits are seen by hashing\n // - make small numbers larger than a normal value to avoid collisions\n // - works in practice and it's relatively cheap\n var N = 2000000000;\n var cleanNum = function cleanNum(val) {\n return -128 < val && val < 128 && Math.floor(val) !== val ? N - (val * 1024 | 0) : val;\n };\n for (var _i = 0; _i < propNames.length; _i++) {\n var name = propNames[_i];\n var parsedProp = overriddenStyles[name];\n if (parsedProp == null) {\n continue;\n }\n var propInfo = this.properties[name];\n var type = propInfo.type;\n var _grKey = propInfo.groupKey;\n var normalizedNumberVal = void 0;\n if (propInfo.hashOverride != null) {\n normalizedNumberVal = propInfo.hashOverride(ele, parsedProp);\n } else if (parsedProp.pfValue != null) {\n normalizedNumberVal = parsedProp.pfValue;\n }\n\n // might not be a number if it allows enums\n var numberVal = propInfo.enums == null ? parsedProp.value : null;\n var haveNormNum = normalizedNumberVal != null;\n var haveUnitedNum = numberVal != null;\n var haveNum = haveNormNum || haveUnitedNum;\n var units = parsedProp.units;\n\n // numbers are cheaper to hash than strings\n // 1 hash op vs n hash ops (for length n string)\n if (type.number && haveNum && !type.multiple) {\n var v = haveNormNum ? normalizedNumberVal : numberVal;\n updateGrKey(cleanNum(v), _grKey);\n if (!haveNormNum && units != null) {\n updateGrKeyWStr(units, _grKey);\n }\n } else {\n updateGrKeyWStr(parsedProp.strValue, _grKey);\n }\n }\n\n // overall style key\n //\n\n var hash = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT];\n for (var _i2 = 0; _i2 < propGrKeys.length; _i2++) {\n var _grKey2 = propGrKeys[_i2];\n var grHash = _p.styleKeys[_grKey2];\n hash[0] = hashInt(grHash[0], hash[0]);\n hash[1] = hashIntAlt(grHash[1], hash[1]);\n }\n _p.styleKey = combineHashes(hash[0], hash[1]);\n\n // label dims\n //\n\n var sk = _p.styleKeys;\n _p.labelDimsKey = combineHashesArray(sk.labelDimensions);\n var labelKeys = propHash(ele, ['label'], sk.labelDimensions);\n _p.labelKey = combineHashesArray(labelKeys);\n _p.labelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, labelKeys));\n if (!isNode) {\n var sourceLabelKeys = propHash(ele, ['source-label'], sk.labelDimensions);\n _p.sourceLabelKey = combineHashesArray(sourceLabelKeys);\n _p.sourceLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, sourceLabelKeys));\n var targetLabelKeys = propHash(ele, ['target-label'], sk.labelDimensions);\n _p.targetLabelKey = combineHashesArray(targetLabelKeys);\n _p.targetLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, targetLabelKeys));\n }\n\n // node\n //\n\n if (isNode) {\n var _p$styleKeys = _p.styleKeys,\n nodeBody = _p$styleKeys.nodeBody,\n nodeBorder = _p$styleKeys.nodeBorder,\n backgroundImage = _p$styleKeys.backgroundImage,\n compound = _p$styleKeys.compound,\n pie = _p$styleKeys.pie;\n var nodeKeys = [nodeBody, nodeBorder, backgroundImage, compound, pie].filter(function (k) {\n return k != null;\n }).reduce(hashArrays, [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]);\n _p.nodeKey = combineHashesArray(nodeKeys);\n _p.hasPie = pie != null && pie[0] !== DEFAULT_HASH_SEED && pie[1] !== DEFAULT_HASH_SEED_ALT;\n }\n return oldStyleKey !== _p.styleKey;\n};\nstyfn$8.clearStyleHints = function (ele) {\n var _p = ele._private;\n _p.styleCxtKey = '';\n _p.styleKeys = {};\n _p.styleKey = null;\n _p.labelKey = null;\n _p.labelStyleKey = null;\n _p.sourceLabelKey = null;\n _p.sourceLabelStyleKey = null;\n _p.targetLabelKey = null;\n _p.targetLabelStyleKey = null;\n _p.nodeKey = null;\n _p.hasPie = null;\n};\n\n// apply a property to the style (for internal use)\n// returns whether application was successful\n//\n// now, this function flattens the property, and here's how:\n//\n// for parsedProp:{ bypass: true, deleteBypass: true }\n// no property is generated, instead the bypass property in the\n// element's style is replaced by what's pointed to by the `bypassed`\n// field in the bypass property (i.e. restoring the property the\n// bypass was overriding)\n//\n// for parsedProp:{ mapped: truthy }\n// the generated flattenedProp:{ mapping: prop }\n//\n// for parsedProp:{ bypass: true }\n// the generated flattenedProp:{ bypassed: parsedProp }\nstyfn$8.applyParsedProperty = function (ele, parsedProp) {\n var self = this;\n var prop = parsedProp;\n var style = ele._private.style;\n var flatProp;\n var types = self.types;\n var type = self.properties[prop.name].type;\n var propIsBypass = prop.bypass;\n var origProp = style[prop.name];\n var origPropIsBypass = origProp && origProp.bypass;\n var _p = ele._private;\n var flatPropMapping = 'mapping';\n var getVal = function getVal(p) {\n if (p == null) {\n return null;\n } else if (p.pfValue != null) {\n return p.pfValue;\n } else {\n return p.value;\n }\n };\n var checkTriggers = function checkTriggers() {\n var fromVal = getVal(origProp);\n var toVal = getVal(prop);\n self.checkTriggers(ele, prop.name, fromVal, toVal);\n };\n if (prop && prop.name.substr(0, 3) === 'pie') {\n warn('The pie style properties are deprecated. Create charts using background images instead.');\n }\n\n // edge sanity checks to prevent the client from making serious mistakes\n if (parsedProp.name === 'curve-style' && ele.isEdge() && (\n // loops must be bundled beziers\n parsedProp.value !== 'bezier' && ele.isLoop() ||\n // edges connected to compound nodes can not be haystacks\n parsedProp.value === 'haystack' && (ele.source().isParent() || ele.target().isParent()))) {\n prop = parsedProp = this.parse(parsedProp.name, 'bezier', propIsBypass);\n }\n if (prop[\"delete\"]) {\n // delete the property and use the default value on falsey value\n style[prop.name] = undefined;\n checkTriggers();\n return true;\n }\n if (prop.deleteBypassed) {\n // delete the property that the\n if (!origProp) {\n checkTriggers();\n return true; // can't delete if no prop\n } else if (origProp.bypass) {\n // delete bypassed\n origProp.bypassed = undefined;\n checkTriggers();\n return true;\n } else {\n return false; // we're unsuccessful deleting the bypassed\n }\n }\n\n // check if we need to delete the current bypass\n if (prop.deleteBypass) {\n // then this property is just here to indicate we need to delete\n if (!origProp) {\n checkTriggers();\n return true; // property is already not defined\n } else if (origProp.bypass) {\n // then replace the bypass property with the original\n // because the bypassed property was already applied (and therefore parsed), we can just replace it (no reapplying necessary)\n style[prop.name] = origProp.bypassed;\n checkTriggers();\n return true;\n } else {\n return false; // we're unsuccessful deleting the bypass\n }\n }\n\n var printMappingErr = function printMappingErr() {\n warn('Do not assign mappings to elements without corresponding data (i.e. ele `' + ele.id() + '` has no mapping for property `' + prop.name + '` with data field `' + prop.field + '`); try a `[' + prop.field + ']` selector to limit scope to elements with `' + prop.field + '` defined');\n };\n\n // put the property in the style objects\n switch (prop.mapped) {\n // flatten the property if mapped\n case types.mapData:\n {\n // flatten the field (e.g. data.foo.bar)\n var fields = prop.field.split('.');\n var fieldVal = _p.data;\n for (var i = 0; i < fields.length && fieldVal; i++) {\n var field = fields[i];\n fieldVal = fieldVal[field];\n }\n if (fieldVal == null) {\n printMappingErr();\n return false;\n }\n var percent;\n if (!number$1(fieldVal)) {\n // then don't apply and fall back on the existing style\n warn('Do not use continuous mappers without specifying numeric data (i.e. `' + prop.field + ': ' + fieldVal + '` for `' + ele.id() + '` is non-numeric)');\n return false;\n } else {\n var fieldWidth = prop.fieldMax - prop.fieldMin;\n if (fieldWidth === 0) {\n // safety check -- not strictly necessary as no props of zero range should be passed here\n percent = 0;\n } else {\n percent = (fieldVal - prop.fieldMin) / fieldWidth;\n }\n }\n\n // make sure to bound percent value\n if (percent < 0) {\n percent = 0;\n } else if (percent > 1) {\n percent = 1;\n }\n if (type.color) {\n var r1 = prop.valueMin[0];\n var r2 = prop.valueMax[0];\n var g1 = prop.valueMin[1];\n var g2 = prop.valueMax[1];\n var b1 = prop.valueMin[2];\n var b2 = prop.valueMax[2];\n var a1 = prop.valueMin[3] == null ? 1 : prop.valueMin[3];\n var a2 = prop.valueMax[3] == null ? 1 : prop.valueMax[3];\n var clr = [Math.round(r1 + (r2 - r1) * percent), Math.round(g1 + (g2 - g1) * percent), Math.round(b1 + (b2 - b1) * percent), Math.round(a1 + (a2 - a1) * percent)];\n flatProp = {\n // colours are simple, so just create the flat property instead of expensive string parsing\n bypass: prop.bypass,\n // we're a bypass if the mapping property is a bypass\n name: prop.name,\n value: clr,\n strValue: 'rgb(' + clr[0] + ', ' + clr[1] + ', ' + clr[2] + ')'\n };\n } else if (type.number) {\n var calcValue = prop.valueMin + (prop.valueMax - prop.valueMin) * percent;\n flatProp = this.parse(prop.name, calcValue, prop.bypass, flatPropMapping);\n } else {\n return false; // can only map to colours and numbers\n }\n\n if (!flatProp) {\n // if we can't flatten the property, then don't apply the property and fall back on the existing style\n printMappingErr();\n return false;\n }\n flatProp.mapping = prop; // keep a reference to the mapping\n prop = flatProp; // the flattened (mapped) property is the one we want\n\n break;\n }\n\n // direct mapping\n case types.data:\n {\n // flatten the field (e.g. data.foo.bar)\n var _fields = prop.field.split('.');\n var _fieldVal = _p.data;\n for (var _i3 = 0; _i3 < _fields.length && _fieldVal; _i3++) {\n var _field = _fields[_i3];\n _fieldVal = _fieldVal[_field];\n }\n if (_fieldVal != null) {\n flatProp = this.parse(prop.name, _fieldVal, prop.bypass, flatPropMapping);\n }\n if (!flatProp) {\n // if we can't flatten the property, then don't apply and fall back on the existing style\n printMappingErr();\n return false;\n }\n flatProp.mapping = prop; // keep a reference to the mapping\n prop = flatProp; // the flattened (mapped) property is the one we want\n\n break;\n }\n case types.fn:\n {\n var fn = prop.value;\n var fnRetVal = prop.fnValue != null ? prop.fnValue : fn(ele); // check for cached value before calling function\n\n prop.prevFnValue = fnRetVal;\n if (fnRetVal == null) {\n warn('Custom function mappers may not return null (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is null)');\n return false;\n }\n flatProp = this.parse(prop.name, fnRetVal, prop.bypass, flatPropMapping);\n if (!flatProp) {\n warn('Custom function mappers may not return invalid values for the property type (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is invalid)');\n return false;\n }\n flatProp.mapping = copy(prop); // keep a reference to the mapping\n prop = flatProp; // the flattened (mapped) property is the one we want\n\n break;\n }\n case undefined:\n break;\n // just set the property\n\n default:\n return false;\n // not a valid mapping\n }\n\n // if the property is a bypass property, then link the resultant property to the original one\n if (propIsBypass) {\n if (origPropIsBypass) {\n // then this bypass overrides the existing one\n prop.bypassed = origProp.bypassed; // steal bypassed prop from old bypass\n } else {\n // then link the orig prop to the new bypass\n prop.bypassed = origProp;\n }\n style[prop.name] = prop; // and set\n } else {\n // prop is not bypass\n if (origPropIsBypass) {\n // then keep the orig prop (since it's a bypass) and link to the new prop\n origProp.bypassed = prop;\n } else {\n // then just replace the old prop with the new one\n style[prop.name] = prop;\n }\n }\n checkTriggers();\n return true;\n};\nstyfn$8.cleanElements = function (eles, keepBypasses) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n this.clearStyleHints(ele);\n ele.dirtyCompoundBoundsCache();\n ele.dirtyBoundingBoxCache();\n if (!keepBypasses) {\n ele._private.style = {};\n } else {\n var style = ele._private.style;\n var propNames = Object.keys(style);\n for (var j = 0; j < propNames.length; j++) {\n var propName = propNames[j];\n var eleProp = style[propName];\n if (eleProp != null) {\n if (eleProp.bypass) {\n eleProp.bypassed = null;\n } else {\n style[propName] = null;\n }\n }\n }\n }\n }\n};\n\n// updates the visual style for all elements (useful for manual style modification after init)\nstyfn$8.update = function () {\n var cy = this._private.cy;\n var eles = cy.mutableElements();\n eles.updateStyle();\n};\n\n// diffProps : { name => { prev, next } }\nstyfn$8.updateTransitions = function (ele, diffProps) {\n var self = this;\n var _p = ele._private;\n var props = ele.pstyle('transition-property').value;\n var duration = ele.pstyle('transition-duration').pfValue;\n var delay = ele.pstyle('transition-delay').pfValue;\n if (props.length > 0 && duration > 0) {\n var style = {};\n\n // build up the style to animate towards\n var anyPrev = false;\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n var styProp = ele.pstyle(prop);\n var diffProp = diffProps[prop];\n if (!diffProp) {\n continue;\n }\n var prevProp = diffProp.prev;\n var fromProp = prevProp;\n var toProp = diffProp.next != null ? diffProp.next : styProp;\n var diff = false;\n var initVal = void 0;\n var initDt = 0.000001; // delta time % value for initVal (allows animating out of init zero opacity)\n\n if (!fromProp) {\n continue;\n }\n\n // consider px values\n if (number$1(fromProp.pfValue) && number$1(toProp.pfValue)) {\n diff = toProp.pfValue - fromProp.pfValue; // nonzero is truthy\n initVal = fromProp.pfValue + initDt * diff;\n\n // consider numerical values\n } else if (number$1(fromProp.value) && number$1(toProp.value)) {\n diff = toProp.value - fromProp.value; // nonzero is truthy\n initVal = fromProp.value + initDt * diff;\n\n // consider colour values\n } else if (array(fromProp.value) && array(toProp.value)) {\n diff = fromProp.value[0] !== toProp.value[0] || fromProp.value[1] !== toProp.value[1] || fromProp.value[2] !== toProp.value[2];\n initVal = fromProp.strValue;\n }\n\n // the previous value is good for an animation only if it's different\n if (diff) {\n style[prop] = toProp.strValue; // to val\n this.applyBypass(ele, prop, initVal); // from val\n anyPrev = true;\n }\n } // end if props allow ani\n\n // can't transition if there's nothing previous to transition from\n if (!anyPrev) {\n return;\n }\n _p.transitioning = true;\n new Promise$1(function (resolve) {\n if (delay > 0) {\n ele.delayAnimation(delay).play().promise().then(resolve);\n } else {\n resolve();\n }\n }).then(function () {\n return ele.animation({\n style: style,\n duration: duration,\n easing: ele.pstyle('transition-timing-function').value,\n queue: false\n }).play().promise();\n }).then(function () {\n // if( !isBypass ){\n self.removeBypasses(ele, props);\n ele.emitAndNotify('style');\n // }\n\n _p.transitioning = false;\n });\n } else if (_p.transitioning) {\n this.removeBypasses(ele, props);\n ele.emitAndNotify('style');\n _p.transitioning = false;\n }\n};\nstyfn$8.checkTrigger = function (ele, name, fromValue, toValue, getTrigger, onTrigger) {\n var prop = this.properties[name];\n var triggerCheck = getTrigger(prop);\n if (triggerCheck != null && triggerCheck(fromValue, toValue)) {\n onTrigger(prop);\n }\n};\nstyfn$8.checkZOrderTrigger = function (ele, name, fromValue, toValue) {\n var _this = this;\n this.checkTrigger(ele, name, fromValue, toValue, function (prop) {\n return prop.triggersZOrder;\n }, function () {\n _this._private.cy.notify('zorder', ele);\n });\n};\nstyfn$8.checkBoundsTrigger = function (ele, name, fromValue, toValue) {\n this.checkTrigger(ele, name, fromValue, toValue, function (prop) {\n return prop.triggersBounds;\n }, function (prop) {\n ele.dirtyCompoundBoundsCache();\n ele.dirtyBoundingBoxCache();\n\n // if the prop change makes the bb of pll bezier edges invalid,\n // then dirty the pll edge bb cache as well\n if (\n // only for beziers -- so performance of other edges isn't affected\n prop.triggersBoundsOfParallelBeziers && (name === 'curve-style' && (fromValue === 'bezier' || toValue === 'bezier') || name === 'display' && (fromValue === 'none' || toValue === 'none'))) {\n ele.parallelEdges().forEach(function (pllEdge) {\n if (pllEdge.isBundledBezier()) {\n pllEdge.dirtyBoundingBoxCache();\n }\n });\n }\n });\n};\nstyfn$8.checkTriggers = function (ele, name, fromValue, toValue) {\n ele.dirtyStyleCache();\n this.checkZOrderTrigger(ele, name, fromValue, toValue);\n this.checkBoundsTrigger(ele, name, fromValue, toValue);\n};\n\nvar styfn$7 = {};\n\n// bypasses are applied to an existing style on an element, and just tacked on temporarily\n// returns true iff application was successful for at least 1 specified property\nstyfn$7.applyBypass = function (eles, name, value, updateTransitions) {\n var self = this;\n var props = [];\n var isBypass = true;\n\n // put all the properties (can specify one or many) in an array after parsing them\n if (name === '*' || name === '**') {\n // apply to all property names\n\n if (value !== undefined) {\n for (var i = 0; i < self.properties.length; i++) {\n var prop = self.properties[i];\n var _name = prop.name;\n var parsedProp = this.parse(_name, value, true);\n if (parsedProp) {\n props.push(parsedProp);\n }\n }\n }\n } else if (string(name)) {\n // then parse the single property\n var _parsedProp = this.parse(name, value, true);\n if (_parsedProp) {\n props.push(_parsedProp);\n }\n } else if (plainObject(name)) {\n // then parse each property\n var specifiedProps = name;\n updateTransitions = value;\n var names = Object.keys(specifiedProps);\n for (var _i = 0; _i < names.length; _i++) {\n var _name2 = names[_i];\n var _value = specifiedProps[_name2];\n if (_value === undefined) {\n // try camel case name too\n _value = specifiedProps[dash2camel(_name2)];\n }\n if (_value !== undefined) {\n var _parsedProp2 = this.parse(_name2, _value, true);\n if (_parsedProp2) {\n props.push(_parsedProp2);\n }\n }\n }\n } else {\n // can't do anything without well defined properties\n return false;\n }\n\n // we've failed if there are no valid properties\n if (props.length === 0) {\n return false;\n }\n\n // now, apply the bypass properties on the elements\n var ret = false; // return true if at least one succesful bypass applied\n for (var _i2 = 0; _i2 < eles.length; _i2++) {\n // for each ele\n var ele = eles[_i2];\n var diffProps = {};\n var diffProp = void 0;\n for (var j = 0; j < props.length; j++) {\n // for each prop\n var _prop = props[j];\n if (updateTransitions) {\n var prevProp = ele.pstyle(_prop.name);\n diffProp = diffProps[_prop.name] = {\n prev: prevProp\n };\n }\n ret = this.applyParsedProperty(ele, copy(_prop)) || ret;\n if (updateTransitions) {\n diffProp.next = ele.pstyle(_prop.name);\n }\n } // for props\n\n if (ret) {\n this.updateStyleHints(ele);\n }\n if (updateTransitions) {\n this.updateTransitions(ele, diffProps, isBypass);\n }\n } // for eles\n\n return ret;\n};\n\n// only useful in specific cases like animation\nstyfn$7.overrideBypass = function (eles, name, value) {\n name = camel2dash(name);\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var prop = ele._private.style[name];\n var type = this.properties[name].type;\n var isColor = type.color;\n var isMulti = type.mutiple;\n var oldValue = !prop ? null : prop.pfValue != null ? prop.pfValue : prop.value;\n if (!prop || !prop.bypass) {\n // need a bypass if one doesn't exist\n this.applyBypass(ele, name, value);\n } else {\n prop.value = value;\n if (prop.pfValue != null) {\n prop.pfValue = value;\n }\n if (isColor) {\n prop.strValue = 'rgb(' + value.join(',') + ')';\n } else if (isMulti) {\n prop.strValue = value.join(' ');\n } else {\n prop.strValue = '' + value;\n }\n this.updateStyleHints(ele);\n }\n this.checkTriggers(ele, name, oldValue, value);\n }\n};\nstyfn$7.removeAllBypasses = function (eles, updateTransitions) {\n return this.removeBypasses(eles, this.propertyNames, updateTransitions);\n};\nstyfn$7.removeBypasses = function (eles, props, updateTransitions) {\n var isBypass = true;\n for (var j = 0; j < eles.length; j++) {\n var ele = eles[j];\n var diffProps = {};\n for (var i = 0; i < props.length; i++) {\n var name = props[i];\n var prop = this.properties[name];\n var prevProp = ele.pstyle(prop.name);\n if (!prevProp || !prevProp.bypass) {\n // if a bypass doesn't exist for the prop, nothing needs to be removed\n continue;\n }\n var value = ''; // empty => remove bypass\n var parsedProp = this.parse(name, value, true);\n var diffProp = diffProps[prop.name] = {\n prev: prevProp\n };\n this.applyParsedProperty(ele, parsedProp);\n diffProp.next = ele.pstyle(prop.name);\n } // for props\n\n this.updateStyleHints(ele);\n if (updateTransitions) {\n this.updateTransitions(ele, diffProps, isBypass);\n }\n } // for eles\n};\n\nvar styfn$6 = {};\n\n// gets what an em size corresponds to in pixels relative to a dom element\nstyfn$6.getEmSizeInPixels = function () {\n var px = this.containerCss('font-size');\n if (px != null) {\n return parseFloat(px);\n } else {\n return 1; // for headless\n }\n};\n\n// gets css property from the core container\nstyfn$6.containerCss = function (propName) {\n var cy = this._private.cy;\n var domElement = cy.container();\n var containerWindow = cy.window();\n if (containerWindow && domElement && containerWindow.getComputedStyle) {\n return containerWindow.getComputedStyle(domElement).getPropertyValue(propName);\n }\n};\n\nvar styfn$5 = {};\n\n// gets the rendered style for an element\nstyfn$5.getRenderedStyle = function (ele, prop) {\n if (prop) {\n return this.getStylePropertyValue(ele, prop, true);\n } else {\n return this.getRawStyle(ele, true);\n }\n};\n\n// gets the raw style for an element\nstyfn$5.getRawStyle = function (ele, isRenderedVal) {\n var self = this;\n ele = ele[0]; // insure it's an element\n\n if (ele) {\n var rstyle = {};\n for (var i = 0; i < self.properties.length; i++) {\n var prop = self.properties[i];\n var val = self.getStylePropertyValue(ele, prop.name, isRenderedVal);\n if (val != null) {\n rstyle[prop.name] = val;\n rstyle[dash2camel(prop.name)] = val;\n }\n }\n return rstyle;\n }\n};\nstyfn$5.getIndexedStyle = function (ele, property, subproperty, index) {\n var pstyle = ele.pstyle(property)[subproperty][index];\n return pstyle != null ? pstyle : ele.cy().style().getDefaultProperty(property)[subproperty][0];\n};\nstyfn$5.getStylePropertyValue = function (ele, propName, isRenderedVal) {\n var self = this;\n ele = ele[0]; // insure it's an element\n\n if (ele) {\n var prop = self.properties[propName];\n if (prop.alias) {\n prop = prop.pointsTo;\n }\n var type = prop.type;\n var styleProp = ele.pstyle(prop.name);\n if (styleProp) {\n var value = styleProp.value,\n units = styleProp.units,\n strValue = styleProp.strValue;\n if (isRenderedVal && type.number && value != null && number$1(value)) {\n var zoom = ele.cy().zoom();\n var getRenderedValue = function getRenderedValue(val) {\n return val * zoom;\n };\n var getValueStringWithUnits = function getValueStringWithUnits(val, units) {\n return getRenderedValue(val) + units;\n };\n var isArrayValue = array(value);\n var haveUnits = isArrayValue ? units.every(function (u) {\n return u != null;\n }) : units != null;\n if (haveUnits) {\n if (isArrayValue) {\n return value.map(function (v, i) {\n return getValueStringWithUnits(v, units[i]);\n }).join(' ');\n } else {\n return getValueStringWithUnits(value, units);\n }\n } else {\n if (isArrayValue) {\n return value.map(function (v) {\n return string(v) ? v : '' + getRenderedValue(v);\n }).join(' ');\n } else {\n return '' + getRenderedValue(value);\n }\n }\n } else if (strValue != null) {\n return strValue;\n }\n }\n return null;\n }\n};\nstyfn$5.getAnimationStartStyle = function (ele, aniProps) {\n var rstyle = {};\n for (var i = 0; i < aniProps.length; i++) {\n var aniProp = aniProps[i];\n var name = aniProp.name;\n var styleProp = ele.pstyle(name);\n if (styleProp !== undefined) {\n // then make a prop of it\n if (plainObject(styleProp)) {\n styleProp = this.parse(name, styleProp.strValue);\n } else {\n styleProp = this.parse(name, styleProp);\n }\n }\n if (styleProp) {\n rstyle[name] = styleProp;\n }\n }\n return rstyle;\n};\nstyfn$5.getPropsList = function (propsObj) {\n var self = this;\n var rstyle = [];\n var style = propsObj;\n var props = self.properties;\n if (style) {\n var names = Object.keys(style);\n for (var i = 0; i < names.length; i++) {\n var name = names[i];\n var val = style[name];\n var prop = props[name] || props[camel2dash(name)];\n var styleProp = this.parse(prop.name, val);\n if (styleProp) {\n rstyle.push(styleProp);\n }\n }\n }\n return rstyle;\n};\nstyfn$5.getNonDefaultPropertiesHash = function (ele, propNames, seed) {\n var hash = seed.slice();\n var name, val, strVal, chVal;\n var i, j;\n for (i = 0; i < propNames.length; i++) {\n name = propNames[i];\n val = ele.pstyle(name, false);\n if (val == null) {\n continue;\n } else if (val.pfValue != null) {\n hash[0] = hashInt(chVal, hash[0]);\n hash[1] = hashIntAlt(chVal, hash[1]);\n } else {\n strVal = val.strValue;\n for (j = 0; j < strVal.length; j++) {\n chVal = strVal.charCodeAt(j);\n hash[0] = hashInt(chVal, hash[0]);\n hash[1] = hashIntAlt(chVal, hash[1]);\n }\n }\n }\n return hash;\n};\nstyfn$5.getPropertiesHash = styfn$5.getNonDefaultPropertiesHash;\n\nvar styfn$4 = {};\nstyfn$4.appendFromJson = function (json) {\n var style = this;\n for (var i = 0; i < json.length; i++) {\n var context = json[i];\n var selector = context.selector;\n var props = context.style || context.css;\n var names = Object.keys(props);\n style.selector(selector); // apply selector\n\n for (var j = 0; j < names.length; j++) {\n var name = names[j];\n var value = props[name];\n style.css(name, value); // apply property\n }\n }\n\n return style;\n};\n\n// accessible cy.style() function\nstyfn$4.fromJson = function (json) {\n var style = this;\n style.resetToDefault();\n style.appendFromJson(json);\n return style;\n};\n\n// get json from cy.style() api\nstyfn$4.json = function () {\n var json = [];\n for (var i = this.defaultLength; i < this.length; i++) {\n var cxt = this[i];\n var selector = cxt.selector;\n var props = cxt.properties;\n var css = {};\n for (var j = 0; j < props.length; j++) {\n var prop = props[j];\n css[prop.name] = prop.strValue;\n }\n json.push({\n selector: !selector ? 'core' : selector.toString(),\n style: css\n });\n }\n return json;\n};\n\nvar styfn$3 = {};\nstyfn$3.appendFromString = function (string) {\n var self = this;\n var style = this;\n var remaining = '' + string;\n var selAndBlockStr;\n var blockRem;\n var propAndValStr;\n\n // remove comments from the style string\n remaining = remaining.replace(/[/][*](\\s|.)+?[*][/]/g, '');\n function removeSelAndBlockFromRemaining() {\n // remove the parsed selector and block from the remaining text to parse\n if (remaining.length > selAndBlockStr.length) {\n remaining = remaining.substr(selAndBlockStr.length);\n } else {\n remaining = '';\n }\n }\n function removePropAndValFromRem() {\n // remove the parsed property and value from the remaining block text to parse\n if (blockRem.length > propAndValStr.length) {\n blockRem = blockRem.substr(propAndValStr.length);\n } else {\n blockRem = '';\n }\n }\n for (;;) {\n var nothingLeftToParse = remaining.match(/^\\s*$/);\n if (nothingLeftToParse) {\n break;\n }\n var selAndBlock = remaining.match(/^\\s*((?:.|\\s)+?)\\s*\\{((?:.|\\s)+?)\\}/);\n if (!selAndBlock) {\n warn('Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: ' + remaining);\n break;\n }\n selAndBlockStr = selAndBlock[0];\n\n // parse the selector\n var selectorStr = selAndBlock[1];\n if (selectorStr !== 'core') {\n var selector = new Selector(selectorStr);\n if (selector.invalid) {\n warn('Skipping parsing of block: Invalid selector found in string stylesheet: ' + selectorStr);\n\n // skip this selector and block\n removeSelAndBlockFromRemaining();\n continue;\n }\n }\n\n // parse the block of properties and values\n var blockStr = selAndBlock[2];\n var invalidBlock = false;\n blockRem = blockStr;\n var props = [];\n for (;;) {\n var _nothingLeftToParse = blockRem.match(/^\\s*$/);\n if (_nothingLeftToParse) {\n break;\n }\n var propAndVal = blockRem.match(/^\\s*(.+?)\\s*:\\s*(.+?)(?:\\s*;|\\s*$)/);\n if (!propAndVal) {\n warn('Skipping parsing of block: Invalid formatting of style property and value definitions found in:' + blockStr);\n invalidBlock = true;\n break;\n }\n propAndValStr = propAndVal[0];\n var propStr = propAndVal[1];\n var valStr = propAndVal[2];\n var prop = self.properties[propStr];\n if (!prop) {\n warn('Skipping property: Invalid property name in: ' + propAndValStr);\n\n // skip this property in the block\n removePropAndValFromRem();\n continue;\n }\n var parsedProp = style.parse(propStr, valStr);\n if (!parsedProp) {\n warn('Skipping property: Invalid property definition in: ' + propAndValStr);\n\n // skip this property in the block\n removePropAndValFromRem();\n continue;\n }\n props.push({\n name: propStr,\n val: valStr\n });\n removePropAndValFromRem();\n }\n if (invalidBlock) {\n removeSelAndBlockFromRemaining();\n break;\n }\n\n // put the parsed block in the style\n style.selector(selectorStr);\n for (var i = 0; i < props.length; i++) {\n var _prop = props[i];\n style.css(_prop.name, _prop.val);\n }\n removeSelAndBlockFromRemaining();\n }\n return style;\n};\nstyfn$3.fromString = function (string) {\n var style = this;\n style.resetToDefault();\n style.appendFromString(string);\n return style;\n};\n\nvar styfn$2 = {};\n(function () {\n var number$1 = number;\n var rgba = rgbaNoBackRefs;\n var hsla = hslaNoBackRefs;\n var hex3$1 = hex3;\n var hex6$1 = hex6;\n var data = function data(prefix) {\n return '^' + prefix + '\\\\s*\\\\(\\\\s*([\\\\w\\\\.]+)\\\\s*\\\\)$';\n };\n var mapData = function mapData(prefix) {\n var mapArg = number$1 + '|\\\\w+|' + rgba + '|' + hsla + '|' + hex3$1 + '|' + hex6$1;\n return '^' + prefix + '\\\\s*\\\\(([\\\\w\\\\.]+)\\\\s*\\\\,\\\\s*(' + number$1 + ')\\\\s*\\\\,\\\\s*(' + number$1 + ')\\\\s*,\\\\s*(' + mapArg + ')\\\\s*\\\\,\\\\s*(' + mapArg + ')\\\\)$';\n };\n var urlRegexes = ['^url\\\\s*\\\\(\\\\s*[\\'\"]?(.+?)[\\'\"]?\\\\s*\\\\)$', '^(none)$', '^(.+)$'];\n\n // each visual style property has a type and needs to be validated according to it\n styfn$2.types = {\n time: {\n number: true,\n min: 0,\n units: 's|ms',\n implicitUnits: 'ms'\n },\n percent: {\n number: true,\n min: 0,\n max: 100,\n units: '%',\n implicitUnits: '%'\n },\n percentages: {\n number: true,\n min: 0,\n max: 100,\n units: '%',\n implicitUnits: '%',\n multiple: true\n },\n zeroOneNumber: {\n number: true,\n min: 0,\n max: 1,\n unitless: true\n },\n zeroOneNumbers: {\n number: true,\n min: 0,\n max: 1,\n unitless: true,\n multiple: true\n },\n nOneOneNumber: {\n number: true,\n min: -1,\n max: 1,\n unitless: true\n },\n nonNegativeInt: {\n number: true,\n min: 0,\n integer: true,\n unitless: true\n },\n nonNegativeNumber: {\n number: true,\n min: 0,\n unitless: true\n },\n position: {\n enums: ['parent', 'origin']\n },\n nodeSize: {\n number: true,\n min: 0,\n enums: ['label']\n },\n number: {\n number: true,\n unitless: true\n },\n numbers: {\n number: true,\n unitless: true,\n multiple: true\n },\n positiveNumber: {\n number: true,\n unitless: true,\n min: 0,\n strictMin: true\n },\n size: {\n number: true,\n min: 0\n },\n bidirectionalSize: {\n number: true\n },\n // allows negative\n bidirectionalSizeMaybePercent: {\n number: true,\n allowPercent: true\n },\n // allows negative\n bidirectionalSizes: {\n number: true,\n multiple: true\n },\n // allows negative\n sizeMaybePercent: {\n number: true,\n min: 0,\n allowPercent: true\n },\n axisDirection: {\n enums: ['horizontal', 'leftward', 'rightward', 'vertical', 'upward', 'downward', 'auto']\n },\n paddingRelativeTo: {\n enums: ['width', 'height', 'average', 'min', 'max']\n },\n bgWH: {\n number: true,\n min: 0,\n allowPercent: true,\n enums: ['auto'],\n multiple: true\n },\n bgPos: {\n number: true,\n allowPercent: true,\n multiple: true\n },\n bgRelativeTo: {\n enums: ['inner', 'include-padding'],\n multiple: true\n },\n bgRepeat: {\n enums: ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'],\n multiple: true\n },\n bgFit: {\n enums: ['none', 'contain', 'cover'],\n multiple: true\n },\n bgCrossOrigin: {\n enums: ['anonymous', 'use-credentials', 'null'],\n multiple: true\n },\n bgClip: {\n enums: ['none', 'node'],\n multiple: true\n },\n bgContainment: {\n enums: ['inside', 'over'],\n multiple: true\n },\n color: {\n color: true\n },\n colors: {\n color: true,\n multiple: true\n },\n fill: {\n enums: ['solid', 'linear-gradient', 'radial-gradient']\n },\n bool: {\n enums: ['yes', 'no']\n },\n bools: {\n enums: ['yes', 'no'],\n multiple: true\n },\n lineStyle: {\n enums: ['solid', 'dotted', 'dashed']\n },\n lineCap: {\n enums: ['butt', 'round', 'square']\n },\n borderStyle: {\n enums: ['solid', 'dotted', 'dashed', 'double']\n },\n curveStyle: {\n enums: ['bezier', 'unbundled-bezier', 'haystack', 'segments', 'straight', 'straight-triangle', 'taxi']\n },\n fontFamily: {\n regex: '^([\\\\w- \\\\\"]+(?:\\\\s*,\\\\s*[\\\\w- \\\\\"]+)*)$'\n },\n fontStyle: {\n enums: ['italic', 'normal', 'oblique']\n },\n fontWeight: {\n enums: ['normal', 'bold', 'bolder', 'lighter', '100', '200', '300', '400', '500', '600', '800', '900', 100, 200, 300, 400, 500, 600, 700, 800, 900]\n },\n textDecoration: {\n enums: ['none', 'underline', 'overline', 'line-through']\n },\n textTransform: {\n enums: ['none', 'uppercase', 'lowercase']\n },\n textWrap: {\n enums: ['none', 'wrap', 'ellipsis']\n },\n textOverflowWrap: {\n enums: ['whitespace', 'anywhere']\n },\n textBackgroundShape: {\n enums: ['rectangle', 'roundrectangle', 'round-rectangle']\n },\n nodeShape: {\n enums: ['rectangle', 'roundrectangle', 'round-rectangle', 'cutrectangle', 'cut-rectangle', 'bottomroundrectangle', 'bottom-round-rectangle', 'barrel', 'ellipse', 'triangle', 'round-triangle', 'square', 'pentagon', 'round-pentagon', 'hexagon', 'round-hexagon', 'concavehexagon', 'concave-hexagon', 'heptagon', 'round-heptagon', 'octagon', 'round-octagon', 'tag', 'round-tag', 'star', 'diamond', 'round-diamond', 'vee', 'rhomboid', 'right-rhomboid', 'polygon']\n },\n overlayShape: {\n enums: ['roundrectangle', 'round-rectangle', 'ellipse']\n },\n compoundIncludeLabels: {\n enums: ['include', 'exclude']\n },\n arrowShape: {\n enums: ['tee', 'triangle', 'triangle-tee', 'circle-triangle', 'triangle-cross', 'triangle-backcurve', 'vee', 'square', 'circle', 'diamond', 'chevron', 'none']\n },\n arrowFill: {\n enums: ['filled', 'hollow']\n },\n display: {\n enums: ['element', 'none']\n },\n visibility: {\n enums: ['hidden', 'visible']\n },\n zCompoundDepth: {\n enums: ['bottom', 'orphan', 'auto', 'top']\n },\n zIndexCompare: {\n enums: ['auto', 'manual']\n },\n valign: {\n enums: ['top', 'center', 'bottom']\n },\n halign: {\n enums: ['left', 'center', 'right']\n },\n justification: {\n enums: ['left', 'center', 'right', 'auto']\n },\n text: {\n string: true\n },\n data: {\n mapping: true,\n regex: data('data')\n },\n layoutData: {\n mapping: true,\n regex: data('layoutData')\n },\n scratch: {\n mapping: true,\n regex: data('scratch')\n },\n mapData: {\n mapping: true,\n regex: mapData('mapData')\n },\n mapLayoutData: {\n mapping: true,\n regex: mapData('mapLayoutData')\n },\n mapScratch: {\n mapping: true,\n regex: mapData('mapScratch')\n },\n fn: {\n mapping: true,\n fn: true\n },\n url: {\n regexes: urlRegexes,\n singleRegexMatchValue: true\n },\n urls: {\n regexes: urlRegexes,\n singleRegexMatchValue: true,\n multiple: true\n },\n propList: {\n propList: true\n },\n angle: {\n number: true,\n units: 'deg|rad',\n implicitUnits: 'rad'\n },\n textRotation: {\n number: true,\n units: 'deg|rad',\n implicitUnits: 'rad',\n enums: ['none', 'autorotate']\n },\n polygonPointList: {\n number: true,\n multiple: true,\n evenMultiple: true,\n min: -1,\n max: 1,\n unitless: true\n },\n edgeDistances: {\n enums: ['intersection', 'node-position', 'endpoints']\n },\n edgeEndpoint: {\n number: true,\n multiple: true,\n units: '%|px|em|deg|rad',\n implicitUnits: 'px',\n enums: ['inside-to-node', 'outside-to-node', 'outside-to-node-or-label', 'outside-to-line', 'outside-to-line-or-label'],\n singleEnum: true,\n validate: function validate(valArr, unitsArr) {\n switch (valArr.length) {\n case 2:\n // can be % or px only\n return unitsArr[0] !== 'deg' && unitsArr[0] !== 'rad' && unitsArr[1] !== 'deg' && unitsArr[1] !== 'rad';\n case 1:\n // can be enum, deg, or rad only\n return string(valArr[0]) || unitsArr[0] === 'deg' || unitsArr[0] === 'rad';\n default:\n return false;\n }\n }\n },\n easing: {\n regexes: ['^(spring)\\\\s*\\\\(\\\\s*(' + number$1 + ')\\\\s*,\\\\s*(' + number$1 + ')\\\\s*\\\\)$', '^(cubic-bezier)\\\\s*\\\\(\\\\s*(' + number$1 + ')\\\\s*,\\\\s*(' + number$1 + ')\\\\s*,\\\\s*(' + number$1 + ')\\\\s*,\\\\s*(' + number$1 + ')\\\\s*\\\\)$'],\n enums: ['linear', 'ease', 'ease-in', 'ease-out', 'ease-in-out', 'ease-in-sine', 'ease-out-sine', 'ease-in-out-sine', 'ease-in-quad', 'ease-out-quad', 'ease-in-out-quad', 'ease-in-cubic', 'ease-out-cubic', 'ease-in-out-cubic', 'ease-in-quart', 'ease-out-quart', 'ease-in-out-quart', 'ease-in-quint', 'ease-out-quint', 'ease-in-out-quint', 'ease-in-expo', 'ease-out-expo', 'ease-in-out-expo', 'ease-in-circ', 'ease-out-circ', 'ease-in-out-circ']\n },\n gradientDirection: {\n enums: ['to-bottom', 'to-top', 'to-left', 'to-right', 'to-bottom-right', 'to-bottom-left', 'to-top-right', 'to-top-left', 'to-right-bottom', 'to-left-bottom', 'to-right-top', 'to-left-top' // different order\n ]\n },\n\n boundsExpansion: {\n number: true,\n multiple: true,\n min: 0,\n validate: function validate(valArr) {\n var length = valArr.length;\n return length === 1 || length === 2 || length === 4;\n }\n }\n };\n var diff = {\n zeroNonZero: function zeroNonZero(val1, val2) {\n if ((val1 == null || val2 == null) && val1 !== val2) {\n return true; // null cases could represent any value\n }\n if (val1 == 0 && val2 != 0) {\n return true;\n } else if (val1 != 0 && val2 == 0) {\n return true;\n } else {\n return false;\n }\n },\n any: function any(val1, val2) {\n return val1 != val2;\n },\n emptyNonEmpty: function emptyNonEmpty(str1, str2) {\n var empty1 = emptyString(str1);\n var empty2 = emptyString(str2);\n return empty1 && !empty2 || !empty1 && empty2;\n }\n };\n\n // define visual style properties\n //\n // - n.b. adding a new group of props may require updates to updateStyleHints()\n // - adding new props to an existing group gets handled automatically\n\n var t = styfn$2.types;\n var mainLabel = [{\n name: 'label',\n type: t.text,\n triggersBounds: diff.any,\n triggersZOrder: diff.emptyNonEmpty\n }, {\n name: 'text-rotation',\n type: t.textRotation,\n triggersBounds: diff.any\n }, {\n name: 'text-margin-x',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'text-margin-y',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }];\n var sourceLabel = [{\n name: 'source-label',\n type: t.text,\n triggersBounds: diff.any\n }, {\n name: 'source-text-rotation',\n type: t.textRotation,\n triggersBounds: diff.any\n }, {\n name: 'source-text-margin-x',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'source-text-margin-y',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'source-text-offset',\n type: t.size,\n triggersBounds: diff.any\n }];\n var targetLabel = [{\n name: 'target-label',\n type: t.text,\n triggersBounds: diff.any\n }, {\n name: 'target-text-rotation',\n type: t.textRotation,\n triggersBounds: diff.any\n }, {\n name: 'target-text-margin-x',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'target-text-margin-y',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'target-text-offset',\n type: t.size,\n triggersBounds: diff.any\n }];\n var labelDimensions = [{\n name: 'font-family',\n type: t.fontFamily,\n triggersBounds: diff.any\n }, {\n name: 'font-style',\n type: t.fontStyle,\n triggersBounds: diff.any\n }, {\n name: 'font-weight',\n type: t.fontWeight,\n triggersBounds: diff.any\n }, {\n name: 'font-size',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'text-transform',\n type: t.textTransform,\n triggersBounds: diff.any\n }, {\n name: 'text-wrap',\n type: t.textWrap,\n triggersBounds: diff.any\n }, {\n name: 'text-overflow-wrap',\n type: t.textOverflowWrap,\n triggersBounds: diff.any\n }, {\n name: 'text-max-width',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'text-outline-width',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'line-height',\n type: t.positiveNumber,\n triggersBounds: diff.any\n }];\n var commonLabel = [{\n name: 'text-valign',\n type: t.valign,\n triggersBounds: diff.any\n }, {\n name: 'text-halign',\n type: t.halign,\n triggersBounds: diff.any\n }, {\n name: 'color',\n type: t.color\n }, {\n name: 'text-outline-color',\n type: t.color\n }, {\n name: 'text-outline-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'text-background-color',\n type: t.color\n }, {\n name: 'text-background-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'text-background-padding',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'text-border-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'text-border-color',\n type: t.color\n }, {\n name: 'text-border-width',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'text-border-style',\n type: t.borderStyle,\n triggersBounds: diff.any\n }, {\n name: 'text-background-shape',\n type: t.textBackgroundShape,\n triggersBounds: diff.any\n }, {\n name: 'text-justification',\n type: t.justification\n }];\n var behavior = [{\n name: 'events',\n type: t.bool,\n triggersZOrder: diff.any\n }, {\n name: 'text-events',\n type: t.bool,\n triggersZOrder: diff.any\n }];\n var visibility = [{\n name: 'display',\n type: t.display,\n triggersZOrder: diff.any,\n triggersBounds: diff.any,\n triggersBoundsOfParallelBeziers: true\n }, {\n name: 'visibility',\n type: t.visibility,\n triggersZOrder: diff.any\n }, {\n name: 'opacity',\n type: t.zeroOneNumber,\n triggersZOrder: diff.zeroNonZero\n }, {\n name: 'text-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'min-zoomed-font-size',\n type: t.size\n }, {\n name: 'z-compound-depth',\n type: t.zCompoundDepth,\n triggersZOrder: diff.any\n }, {\n name: 'z-index-compare',\n type: t.zIndexCompare,\n triggersZOrder: diff.any\n }, {\n name: 'z-index',\n type: t.number,\n triggersZOrder: diff.any\n }];\n var overlay = [{\n name: 'overlay-padding',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'overlay-color',\n type: t.color\n }, {\n name: 'overlay-opacity',\n type: t.zeroOneNumber,\n triggersBounds: diff.zeroNonZero\n }, {\n name: 'overlay-shape',\n type: t.overlayShape,\n triggersBounds: diff.any\n }];\n var underlay = [{\n name: 'underlay-padding',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'underlay-color',\n type: t.color\n }, {\n name: 'underlay-opacity',\n type: t.zeroOneNumber,\n triggersBounds: diff.zeroNonZero\n }, {\n name: 'underlay-shape',\n type: t.overlayShape,\n triggersBounds: diff.any\n }];\n var transition = [{\n name: 'transition-property',\n type: t.propList\n }, {\n name: 'transition-duration',\n type: t.time\n }, {\n name: 'transition-delay',\n type: t.time\n }, {\n name: 'transition-timing-function',\n type: t.easing\n }];\n var nodeSizeHashOverride = function nodeSizeHashOverride(ele, parsedProp) {\n if (parsedProp.value === 'label') {\n return -ele.poolIndex(); // no hash key hits is using label size (hitrate for perf probably low anyway)\n } else {\n return parsedProp.pfValue;\n }\n };\n var nodeBody = [{\n name: 'height',\n type: t.nodeSize,\n triggersBounds: diff.any,\n hashOverride: nodeSizeHashOverride\n }, {\n name: 'width',\n type: t.nodeSize,\n triggersBounds: diff.any,\n hashOverride: nodeSizeHashOverride\n }, {\n name: 'shape',\n type: t.nodeShape,\n triggersBounds: diff.any\n }, {\n name: 'shape-polygon-points',\n type: t.polygonPointList,\n triggersBounds: diff.any\n }, {\n name: 'background-color',\n type: t.color\n }, {\n name: 'background-fill',\n type: t.fill\n }, {\n name: 'background-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'background-blacken',\n type: t.nOneOneNumber\n }, {\n name: 'background-gradient-stop-colors',\n type: t.colors\n }, {\n name: 'background-gradient-stop-positions',\n type: t.percentages\n }, {\n name: 'background-gradient-direction',\n type: t.gradientDirection\n }, {\n name: 'padding',\n type: t.sizeMaybePercent,\n triggersBounds: diff.any\n }, {\n name: 'padding-relative-to',\n type: t.paddingRelativeTo,\n triggersBounds: diff.any\n }, {\n name: 'bounds-expansion',\n type: t.boundsExpansion,\n triggersBounds: diff.any\n }];\n var nodeBorder = [{\n name: 'border-color',\n type: t.color\n }, {\n name: 'border-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'border-width',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'border-style',\n type: t.borderStyle\n }];\n var backgroundImage = [{\n name: 'background-image',\n type: t.urls\n }, {\n name: 'background-image-crossorigin',\n type: t.bgCrossOrigin\n }, {\n name: 'background-image-opacity',\n type: t.zeroOneNumbers\n }, {\n name: 'background-image-containment',\n type: t.bgContainment\n }, {\n name: 'background-image-smoothing',\n type: t.bools\n }, {\n name: 'background-position-x',\n type: t.bgPos\n }, {\n name: 'background-position-y',\n type: t.bgPos\n }, {\n name: 'background-width-relative-to',\n type: t.bgRelativeTo\n }, {\n name: 'background-height-relative-to',\n type: t.bgRelativeTo\n }, {\n name: 'background-repeat',\n type: t.bgRepeat\n }, {\n name: 'background-fit',\n type: t.bgFit\n }, {\n name: 'background-clip',\n type: t.bgClip\n }, {\n name: 'background-width',\n type: t.bgWH\n }, {\n name: 'background-height',\n type: t.bgWH\n }, {\n name: 'background-offset-x',\n type: t.bgPos\n }, {\n name: 'background-offset-y',\n type: t.bgPos\n }];\n var compound = [{\n name: 'position',\n type: t.position,\n triggersBounds: diff.any\n }, {\n name: 'compound-sizing-wrt-labels',\n type: t.compoundIncludeLabels,\n triggersBounds: diff.any\n }, {\n name: 'min-width',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'min-width-bias-left',\n type: t.sizeMaybePercent,\n triggersBounds: diff.any\n }, {\n name: 'min-width-bias-right',\n type: t.sizeMaybePercent,\n triggersBounds: diff.any\n }, {\n name: 'min-height',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'min-height-bias-top',\n type: t.sizeMaybePercent,\n triggersBounds: diff.any\n }, {\n name: 'min-height-bias-bottom',\n type: t.sizeMaybePercent,\n triggersBounds: diff.any\n }];\n var edgeLine = [{\n name: 'line-style',\n type: t.lineStyle\n }, {\n name: 'line-color',\n type: t.color\n }, {\n name: 'line-fill',\n type: t.fill\n }, {\n name: 'line-cap',\n type: t.lineCap\n }, {\n name: 'line-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'line-dash-pattern',\n type: t.numbers\n }, {\n name: 'line-dash-offset',\n type: t.number\n }, {\n name: 'line-gradient-stop-colors',\n type: t.colors\n }, {\n name: 'line-gradient-stop-positions',\n type: t.percentages\n }, {\n name: 'curve-style',\n type: t.curveStyle,\n triggersBounds: diff.any,\n triggersBoundsOfParallelBeziers: true\n }, {\n name: 'haystack-radius',\n type: t.zeroOneNumber,\n triggersBounds: diff.any\n }, {\n name: 'source-endpoint',\n type: t.edgeEndpoint,\n triggersBounds: diff.any\n }, {\n name: 'target-endpoint',\n type: t.edgeEndpoint,\n triggersBounds: diff.any\n }, {\n name: 'control-point-step-size',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'control-point-distances',\n type: t.bidirectionalSizes,\n triggersBounds: diff.any\n }, {\n name: 'control-point-weights',\n type: t.numbers,\n triggersBounds: diff.any\n }, {\n name: 'segment-distances',\n type: t.bidirectionalSizes,\n triggersBounds: diff.any\n }, {\n name: 'segment-weights',\n type: t.numbers,\n triggersBounds: diff.any\n }, {\n name: 'taxi-turn',\n type: t.bidirectionalSizeMaybePercent,\n triggersBounds: diff.any\n }, {\n name: 'taxi-turn-min-distance',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'taxi-direction',\n type: t.axisDirection,\n triggersBounds: diff.any\n }, {\n name: 'edge-distances',\n type: t.edgeDistances,\n triggersBounds: diff.any\n }, {\n name: 'arrow-scale',\n type: t.positiveNumber,\n triggersBounds: diff.any\n }, {\n name: 'loop-direction',\n type: t.angle,\n triggersBounds: diff.any\n }, {\n name: 'loop-sweep',\n type: t.angle,\n triggersBounds: diff.any\n }, {\n name: 'source-distance-from-node',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'target-distance-from-node',\n type: t.size,\n triggersBounds: diff.any\n }];\n var ghost = [{\n name: 'ghost',\n type: t.bool,\n triggersBounds: diff.any\n }, {\n name: 'ghost-offset-x',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'ghost-offset-y',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'ghost-opacity',\n type: t.zeroOneNumber\n }];\n var core = [{\n name: 'selection-box-color',\n type: t.color\n }, {\n name: 'selection-box-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'selection-box-border-color',\n type: t.color\n }, {\n name: 'selection-box-border-width',\n type: t.size\n }, {\n name: 'active-bg-color',\n type: t.color\n }, {\n name: 'active-bg-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'active-bg-size',\n type: t.size\n }, {\n name: 'outside-texture-bg-color',\n type: t.color\n }, {\n name: 'outside-texture-bg-opacity',\n type: t.zeroOneNumber\n }];\n\n // pie backgrounds for nodes\n var pie = [];\n styfn$2.pieBackgroundN = 16; // because the pie properties are numbered, give access to a constant N (for renderer use)\n pie.push({\n name: 'pie-size',\n type: t.sizeMaybePercent\n });\n for (var i = 1; i <= styfn$2.pieBackgroundN; i++) {\n pie.push({\n name: 'pie-' + i + '-background-color',\n type: t.color\n });\n pie.push({\n name: 'pie-' + i + '-background-size',\n type: t.percent\n });\n pie.push({\n name: 'pie-' + i + '-background-opacity',\n type: t.zeroOneNumber\n });\n }\n\n // edge arrows\n var edgeArrow = [];\n var arrowPrefixes = styfn$2.arrowPrefixes = ['source', 'mid-source', 'target', 'mid-target'];\n [{\n name: 'arrow-shape',\n type: t.arrowShape,\n triggersBounds: diff.any\n }, {\n name: 'arrow-color',\n type: t.color\n }, {\n name: 'arrow-fill',\n type: t.arrowFill\n }].forEach(function (prop) {\n arrowPrefixes.forEach(function (prefix) {\n var name = prefix + '-' + prop.name;\n var type = prop.type,\n triggersBounds = prop.triggersBounds;\n edgeArrow.push({\n name: name,\n type: type,\n triggersBounds: triggersBounds\n });\n });\n }, {});\n var props = styfn$2.properties = [].concat(behavior, transition, visibility, overlay, underlay, ghost, commonLabel, labelDimensions, mainLabel, sourceLabel, targetLabel, nodeBody, nodeBorder, backgroundImage, pie, compound, edgeLine, edgeArrow, core);\n var propGroups = styfn$2.propertyGroups = {\n // common to all eles\n behavior: behavior,\n transition: transition,\n visibility: visibility,\n overlay: overlay,\n underlay: underlay,\n ghost: ghost,\n // labels\n commonLabel: commonLabel,\n labelDimensions: labelDimensions,\n mainLabel: mainLabel,\n sourceLabel: sourceLabel,\n targetLabel: targetLabel,\n // node props\n nodeBody: nodeBody,\n nodeBorder: nodeBorder,\n backgroundImage: backgroundImage,\n pie: pie,\n compound: compound,\n // edge props\n edgeLine: edgeLine,\n edgeArrow: edgeArrow,\n core: core\n };\n var propGroupNames = styfn$2.propertyGroupNames = {};\n var propGroupKeys = styfn$2.propertyGroupKeys = Object.keys(propGroups);\n propGroupKeys.forEach(function (key) {\n propGroupNames[key] = propGroups[key].map(function (prop) {\n return prop.name;\n });\n propGroups[key].forEach(function (prop) {\n return prop.groupKey = key;\n });\n });\n\n // define aliases\n var aliases = styfn$2.aliases = [{\n name: 'content',\n pointsTo: 'label'\n }, {\n name: 'control-point-distance',\n pointsTo: 'control-point-distances'\n }, {\n name: 'control-point-weight',\n pointsTo: 'control-point-weights'\n }, {\n name: 'edge-text-rotation',\n pointsTo: 'text-rotation'\n }, {\n name: 'padding-left',\n pointsTo: 'padding'\n }, {\n name: 'padding-right',\n pointsTo: 'padding'\n }, {\n name: 'padding-top',\n pointsTo: 'padding'\n }, {\n name: 'padding-bottom',\n pointsTo: 'padding'\n }];\n\n // list of property names\n styfn$2.propertyNames = props.map(function (p) {\n return p.name;\n });\n\n // allow access of properties by name ( e.g. style.properties.height )\n for (var _i = 0; _i < props.length; _i++) {\n var prop = props[_i];\n props[prop.name] = prop; // allow lookup by name\n }\n\n // map aliases\n for (var _i2 = 0; _i2 < aliases.length; _i2++) {\n var alias = aliases[_i2];\n var pointsToProp = props[alias.pointsTo];\n var aliasProp = {\n name: alias.name,\n alias: true,\n pointsTo: pointsToProp\n };\n\n // add alias prop for parsing\n props.push(aliasProp);\n props[alias.name] = aliasProp; // allow lookup by name\n }\n})();\n\nstyfn$2.getDefaultProperty = function (name) {\n return this.getDefaultProperties()[name];\n};\nstyfn$2.getDefaultProperties = function () {\n var _p = this._private;\n if (_p.defaultProperties != null) {\n return _p.defaultProperties;\n }\n var rawProps = extend({\n // core props\n 'selection-box-color': '#ddd',\n 'selection-box-opacity': 0.65,\n 'selection-box-border-color': '#aaa',\n 'selection-box-border-width': 1,\n 'active-bg-color': 'black',\n 'active-bg-opacity': 0.15,\n 'active-bg-size': 30,\n 'outside-texture-bg-color': '#000',\n 'outside-texture-bg-opacity': 0.125,\n // common node/edge props\n 'events': 'yes',\n 'text-events': 'no',\n 'text-valign': 'top',\n 'text-halign': 'center',\n 'text-justification': 'auto',\n 'line-height': 1,\n 'color': '#000',\n 'text-outline-color': '#000',\n 'text-outline-width': 0,\n 'text-outline-opacity': 1,\n 'text-opacity': 1,\n 'text-decoration': 'none',\n 'text-transform': 'none',\n 'text-wrap': 'none',\n 'text-overflow-wrap': 'whitespace',\n 'text-max-width': 9999,\n 'text-background-color': '#000',\n 'text-background-opacity': 0,\n 'text-background-shape': 'rectangle',\n 'text-background-padding': 0,\n 'text-border-opacity': 0,\n 'text-border-width': 0,\n 'text-border-style': 'solid',\n 'text-border-color': '#000',\n 'font-family': 'Helvetica Neue, Helvetica, sans-serif',\n 'font-style': 'normal',\n 'font-weight': 'normal',\n 'font-size': 16,\n 'min-zoomed-font-size': 0,\n 'text-rotation': 'none',\n 'source-text-rotation': 'none',\n 'target-text-rotation': 'none',\n 'visibility': 'visible',\n 'display': 'element',\n 'opacity': 1,\n 'z-compound-depth': 'auto',\n 'z-index-compare': 'auto',\n 'z-index': 0,\n 'label': '',\n 'text-margin-x': 0,\n 'text-margin-y': 0,\n 'source-label': '',\n 'source-text-offset': 0,\n 'source-text-margin-x': 0,\n 'source-text-margin-y': 0,\n 'target-label': '',\n 'target-text-offset': 0,\n 'target-text-margin-x': 0,\n 'target-text-margin-y': 0,\n 'overlay-opacity': 0,\n 'overlay-color': '#000',\n 'overlay-padding': 10,\n 'overlay-shape': 'round-rectangle',\n 'underlay-opacity': 0,\n 'underlay-color': '#000',\n 'underlay-padding': 10,\n 'underlay-shape': 'round-rectangle',\n 'transition-property': 'none',\n 'transition-duration': 0,\n 'transition-delay': 0,\n 'transition-timing-function': 'linear',\n // node props\n 'background-blacken': 0,\n 'background-color': '#999',\n 'background-fill': 'solid',\n 'background-opacity': 1,\n 'background-image': 'none',\n 'background-image-crossorigin': 'anonymous',\n 'background-image-opacity': 1,\n 'background-image-containment': 'inside',\n 'background-image-smoothing': 'yes',\n 'background-position-x': '50%',\n 'background-position-y': '50%',\n 'background-offset-x': 0,\n 'background-offset-y': 0,\n 'background-width-relative-to': 'include-padding',\n 'background-height-relative-to': 'include-padding',\n 'background-repeat': 'no-repeat',\n 'background-fit': 'none',\n 'background-clip': 'node',\n 'background-width': 'auto',\n 'background-height': 'auto',\n 'border-color': '#000',\n 'border-opacity': 1,\n 'border-width': 0,\n 'border-style': 'solid',\n 'height': 30,\n 'width': 30,\n 'shape': 'ellipse',\n 'shape-polygon-points': '-1, -1, 1, -1, 1, 1, -1, 1',\n 'bounds-expansion': 0,\n // node gradient\n 'background-gradient-direction': 'to-bottom',\n 'background-gradient-stop-colors': '#999',\n 'background-gradient-stop-positions': '0%',\n // ghost props\n 'ghost': 'no',\n 'ghost-offset-y': 0,\n 'ghost-offset-x': 0,\n 'ghost-opacity': 0,\n // compound props\n 'padding': 0,\n 'padding-relative-to': 'width',\n 'position': 'origin',\n 'compound-sizing-wrt-labels': 'include',\n 'min-width': 0,\n 'min-width-bias-left': 0,\n 'min-width-bias-right': 0,\n 'min-height': 0,\n 'min-height-bias-top': 0,\n 'min-height-bias-bottom': 0\n }, {\n // node pie bg\n 'pie-size': '100%'\n }, [{\n name: 'pie-{{i}}-background-color',\n value: 'black'\n }, {\n name: 'pie-{{i}}-background-size',\n value: '0%'\n }, {\n name: 'pie-{{i}}-background-opacity',\n value: 1\n }].reduce(function (css, prop) {\n for (var i = 1; i <= styfn$2.pieBackgroundN; i++) {\n var name = prop.name.replace('{{i}}', i);\n var val = prop.value;\n css[name] = val;\n }\n return css;\n }, {}), {\n // edge props\n 'line-style': 'solid',\n 'line-color': '#999',\n 'line-fill': 'solid',\n 'line-cap': 'butt',\n 'line-opacity': 1,\n 'line-gradient-stop-colors': '#999',\n 'line-gradient-stop-positions': '0%',\n 'control-point-step-size': 40,\n 'control-point-weights': 0.5,\n 'segment-weights': 0.5,\n 'segment-distances': 20,\n 'taxi-turn': '50%',\n 'taxi-turn-min-distance': 10,\n 'taxi-direction': 'auto',\n 'edge-distances': 'intersection',\n 'curve-style': 'haystack',\n 'haystack-radius': 0,\n 'arrow-scale': 1,\n 'loop-direction': '-45deg',\n 'loop-sweep': '-90deg',\n 'source-distance-from-node': 0,\n 'target-distance-from-node': 0,\n 'source-endpoint': 'outside-to-node',\n 'target-endpoint': 'outside-to-node',\n 'line-dash-pattern': [6, 3],\n 'line-dash-offset': 0\n }, [{\n name: 'arrow-shape',\n value: 'none'\n }, {\n name: 'arrow-color',\n value: '#999'\n }, {\n name: 'arrow-fill',\n value: 'filled'\n }].reduce(function (css, prop) {\n styfn$2.arrowPrefixes.forEach(function (prefix) {\n var name = prefix + '-' + prop.name;\n var val = prop.value;\n css[name] = val;\n });\n return css;\n }, {}));\n var parsedProps = {};\n for (var i = 0; i < this.properties.length; i++) {\n var prop = this.properties[i];\n if (prop.pointsTo) {\n continue;\n }\n var name = prop.name;\n var val = rawProps[name];\n var parsedProp = this.parse(name, val);\n parsedProps[name] = parsedProp;\n }\n _p.defaultProperties = parsedProps;\n return _p.defaultProperties;\n};\nstyfn$2.addDefaultStylesheet = function () {\n this.selector(':parent').css({\n 'shape': 'rectangle',\n 'padding': 10,\n 'background-color': '#eee',\n 'border-color': '#ccc',\n 'border-width': 1\n }).selector('edge').css({\n 'width': 3\n }).selector(':loop').css({\n 'curve-style': 'bezier'\n }).selector('edge:compound').css({\n 'curve-style': 'bezier',\n 'source-endpoint': 'outside-to-line',\n 'target-endpoint': 'outside-to-line'\n }).selector(':selected').css({\n 'background-color': '#0169D9',\n 'line-color': '#0169D9',\n 'source-arrow-color': '#0169D9',\n 'target-arrow-color': '#0169D9',\n 'mid-source-arrow-color': '#0169D9',\n 'mid-target-arrow-color': '#0169D9'\n }).selector(':parent:selected').css({\n 'background-color': '#CCE1F9',\n 'border-color': '#aec8e5'\n }).selector(':active').css({\n 'overlay-color': 'black',\n 'overlay-padding': 10,\n 'overlay-opacity': 0.25\n });\n this.defaultLength = this.length;\n};\n\nvar styfn$1 = {};\n\n// a caching layer for property parsing\nstyfn$1.parse = function (name, value, propIsBypass, propIsFlat) {\n var self = this;\n\n // function values can't be cached in all cases, and there isn't much benefit of caching them anyway\n if (fn$6(value)) {\n return self.parseImplWarn(name, value, propIsBypass, propIsFlat);\n }\n var flatKey = propIsFlat === 'mapping' || propIsFlat === true || propIsFlat === false || propIsFlat == null ? 'dontcare' : propIsFlat;\n var bypassKey = propIsBypass ? 't' : 'f';\n var valueKey = '' + value;\n var argHash = hashStrings(name, valueKey, bypassKey, flatKey);\n var propCache = self.propCache = self.propCache || [];\n var ret;\n if (!(ret = propCache[argHash])) {\n ret = propCache[argHash] = self.parseImplWarn(name, value, propIsBypass, propIsFlat);\n }\n\n // - bypasses can't be shared b/c the value can be changed by animations or otherwise overridden\n // - mappings can't be shared b/c mappings are per-element\n if (propIsBypass || propIsFlat === 'mapping') {\n // need a copy since props are mutated later in their lifecycles\n ret = copy(ret);\n if (ret) {\n ret.value = copy(ret.value); // because it could be an array, e.g. colour\n }\n }\n\n return ret;\n};\nstyfn$1.parseImplWarn = function (name, value, propIsBypass, propIsFlat) {\n var prop = this.parseImpl(name, value, propIsBypass, propIsFlat);\n if (!prop && value != null) {\n warn(\"The style property `\".concat(name, \": \").concat(value, \"` is invalid\"));\n }\n if (prop && (prop.name === 'width' || prop.name === 'height') && value === 'label') {\n warn('The style value of `label` is deprecated for `' + prop.name + '`');\n }\n return prop;\n};\n\n// parse a property; return null on invalid; return parsed property otherwise\n// fields :\n// - name : the name of the property\n// - value : the parsed, native-typed value of the property\n// - strValue : a string value that represents the property value in valid css\n// - bypass : true iff the property is a bypass property\nstyfn$1.parseImpl = function (name, value, propIsBypass, propIsFlat) {\n var self = this;\n name = camel2dash(name); // make sure the property name is in dash form (e.g. 'property-name' not 'propertyName')\n\n var property = self.properties[name];\n var passedValue = value;\n var types = self.types;\n if (!property) {\n return null;\n } // return null on property of unknown name\n if (value === undefined) {\n return null;\n } // can't assign undefined\n\n // the property may be an alias\n if (property.alias) {\n property = property.pointsTo;\n name = property.name;\n }\n var valueIsString = string(value);\n if (valueIsString) {\n // trim the value to make parsing easier\n value = value.trim();\n }\n var type = property.type;\n if (!type) {\n return null;\n } // no type, no luck\n\n // check if bypass is null or empty string (i.e. indication to delete bypass property)\n if (propIsBypass && (value === '' || value === null)) {\n return {\n name: name,\n value: value,\n bypass: true,\n deleteBypass: true\n };\n }\n\n // check if value is a function used as a mapper\n if (fn$6(value)) {\n return {\n name: name,\n value: value,\n strValue: 'fn',\n mapped: types.fn,\n bypass: propIsBypass\n };\n }\n\n // check if value is mapped\n var data, mapData;\n if (!valueIsString || propIsFlat || value.length < 7 || value[1] !== 'a') ; else if (value.length >= 7 && value[0] === 'd' && (data = new RegExp(types.data.regex).exec(value))) {\n if (propIsBypass) {\n return false;\n } // mappers not allowed in bypass\n\n var mapped = types.data;\n return {\n name: name,\n value: data,\n strValue: '' + value,\n mapped: mapped,\n field: data[1],\n bypass: propIsBypass\n };\n } else if (value.length >= 10 && value[0] === 'm' && (mapData = new RegExp(types.mapData.regex).exec(value))) {\n if (propIsBypass) {\n return false;\n } // mappers not allowed in bypass\n if (type.multiple) {\n return false;\n } // impossible to map to num\n\n var _mapped = types.mapData;\n\n // we can map only if the type is a colour or a number\n if (!(type.color || type.number)) {\n return false;\n }\n var valueMin = this.parse(name, mapData[4]); // parse to validate\n if (!valueMin || valueMin.mapped) {\n return false;\n } // can't be invalid or mapped\n\n var valueMax = this.parse(name, mapData[5]); // parse to validate\n if (!valueMax || valueMax.mapped) {\n return false;\n } // can't be invalid or mapped\n\n // check if valueMin and valueMax are the same\n if (valueMin.pfValue === valueMax.pfValue || valueMin.strValue === valueMax.strValue) {\n warn('`' + name + ': ' + value + '` is not a valid mapper because the output range is zero; converting to `' + name + ': ' + valueMin.strValue + '`');\n return this.parse(name, valueMin.strValue); // can't make much of a mapper without a range\n } else if (type.color) {\n var c1 = valueMin.value;\n var c2 = valueMax.value;\n var same = c1[0] === c2[0] // red\n && c1[1] === c2[1] // green\n && c1[2] === c2[2] // blue\n && (\n // optional alpha\n c1[3] === c2[3] // same alpha outright\n || (c1[3] == null || c1[3] === 1 // full opacity for colour 1?\n ) && (c2[3] == null || c2[3] === 1) // full opacity for colour 2?\n );\n\n if (same) {\n return false;\n } // can't make a mapper without a range\n }\n\n return {\n name: name,\n value: mapData,\n strValue: '' + value,\n mapped: _mapped,\n field: mapData[1],\n fieldMin: parseFloat(mapData[2]),\n // min & max are numeric\n fieldMax: parseFloat(mapData[3]),\n valueMin: valueMin.value,\n valueMax: valueMax.value,\n bypass: propIsBypass\n };\n }\n if (type.multiple && propIsFlat !== 'multiple') {\n var vals;\n if (valueIsString) {\n vals = value.split(/\\s+/);\n } else if (array(value)) {\n vals = value;\n } else {\n vals = [value];\n }\n if (type.evenMultiple && vals.length % 2 !== 0) {\n return null;\n }\n var valArr = [];\n var unitsArr = [];\n var pfValArr = [];\n var strVal = '';\n var hasEnum = false;\n for (var i = 0; i < vals.length; i++) {\n var p = self.parse(name, vals[i], propIsBypass, 'multiple');\n hasEnum = hasEnum || string(p.value);\n valArr.push(p.value);\n pfValArr.push(p.pfValue != null ? p.pfValue : p.value);\n unitsArr.push(p.units);\n strVal += (i > 0 ? ' ' : '') + p.strValue;\n }\n if (type.validate && !type.validate(valArr, unitsArr)) {\n return null;\n }\n if (type.singleEnum && hasEnum) {\n if (valArr.length === 1 && string(valArr[0])) {\n return {\n name: name,\n value: valArr[0],\n strValue: valArr[0],\n bypass: propIsBypass\n };\n } else {\n return null;\n }\n }\n return {\n name: name,\n value: valArr,\n pfValue: pfValArr,\n strValue: strVal,\n bypass: propIsBypass,\n units: unitsArr\n };\n }\n\n // several types also allow enums\n var checkEnums = function checkEnums() {\n for (var _i = 0; _i < type.enums.length; _i++) {\n var en = type.enums[_i];\n if (en === value) {\n return {\n name: name,\n value: value,\n strValue: '' + value,\n bypass: propIsBypass\n };\n }\n }\n return null;\n };\n\n // check the type and return the appropriate object\n if (type.number) {\n var units;\n var implicitUnits = 'px'; // not set => px\n\n if (type.units) {\n // use specified units if set\n units = type.units;\n }\n if (type.implicitUnits) {\n implicitUnits = type.implicitUnits;\n }\n if (!type.unitless) {\n if (valueIsString) {\n var unitsRegex = 'px|em' + (type.allowPercent ? '|\\\\%' : '');\n if (units) {\n unitsRegex = units;\n } // only allow explicit units if so set\n var match = value.match('^(' + number + ')(' + unitsRegex + ')?' + '$');\n if (match) {\n value = match[1];\n units = match[2] || implicitUnits;\n }\n } else if (!units || type.implicitUnits) {\n units = implicitUnits; // implicitly px if unspecified\n }\n }\n\n value = parseFloat(value);\n\n // if not a number and enums not allowed, then the value is invalid\n if (isNaN(value) && type.enums === undefined) {\n return null;\n }\n\n // check if this number type also accepts special keywords in place of numbers\n // (i.e. `left`, `auto`, etc)\n if (isNaN(value) && type.enums !== undefined) {\n value = passedValue;\n return checkEnums();\n }\n\n // check if value must be an integer\n if (type.integer && !integer(value)) {\n return null;\n }\n\n // check value is within range\n if (type.min !== undefined && (value < type.min || type.strictMin && value === type.min) || type.max !== undefined && (value > type.max || type.strictMax && value === type.max)) {\n return null;\n }\n var ret = {\n name: name,\n value: value,\n strValue: '' + value + (units ? units : ''),\n units: units,\n bypass: propIsBypass\n };\n\n // normalise value in pixels\n if (type.unitless || units !== 'px' && units !== 'em') {\n ret.pfValue = value;\n } else {\n ret.pfValue = units === 'px' || !units ? value : this.getEmSizeInPixels() * value;\n }\n\n // normalise value in ms\n if (units === 'ms' || units === 's') {\n ret.pfValue = units === 'ms' ? value : 1000 * value;\n }\n\n // normalise value in rad\n if (units === 'deg' || units === 'rad') {\n ret.pfValue = units === 'rad' ? value : deg2rad(value);\n }\n\n // normalize value in %\n if (units === '%') {\n ret.pfValue = value / 100;\n }\n return ret;\n } else if (type.propList) {\n var props = [];\n var propsStr = '' + value;\n if (propsStr === 'none') ; else {\n // go over each prop\n\n var propsSplit = propsStr.split(/\\s*,\\s*|\\s+/);\n for (var _i2 = 0; _i2 < propsSplit.length; _i2++) {\n var propName = propsSplit[_i2].trim();\n if (self.properties[propName]) {\n props.push(propName);\n } else {\n warn('`' + propName + '` is not a valid property name');\n }\n }\n if (props.length === 0) {\n return null;\n }\n }\n return {\n name: name,\n value: props,\n strValue: props.length === 0 ? 'none' : props.join(' '),\n bypass: propIsBypass\n };\n } else if (type.color) {\n var tuple = color2tuple(value);\n if (!tuple) {\n return null;\n }\n return {\n name: name,\n value: tuple,\n pfValue: tuple,\n strValue: 'rgb(' + tuple[0] + ',' + tuple[1] + ',' + tuple[2] + ')',\n // n.b. no spaces b/c of multiple support\n bypass: propIsBypass\n };\n } else if (type.regex || type.regexes) {\n // first check enums\n if (type.enums) {\n var enumProp = checkEnums();\n if (enumProp) {\n return enumProp;\n }\n }\n var regexes = type.regexes ? type.regexes : [type.regex];\n for (var _i3 = 0; _i3 < regexes.length; _i3++) {\n var regex = new RegExp(regexes[_i3]); // make a regex from the type string\n var m = regex.exec(value);\n if (m) {\n // regex matches\n return {\n name: name,\n value: type.singleRegexMatchValue ? m[1] : m,\n strValue: '' + value,\n bypass: propIsBypass\n };\n }\n }\n return null; // didn't match any\n } else if (type.string) {\n // just return\n return {\n name: name,\n value: '' + value,\n strValue: '' + value,\n bypass: propIsBypass\n };\n } else if (type.enums) {\n // check enums last because it's a combo type in others\n return checkEnums();\n } else {\n return null; // not a type we can handle\n }\n};\n\nvar Style = function Style(cy) {\n if (!(this instanceof Style)) {\n return new Style(cy);\n }\n if (!core(cy)) {\n error('A style must have a core reference');\n return;\n }\n this._private = {\n cy: cy,\n coreStyle: {}\n };\n this.length = 0;\n this.resetToDefault();\n};\nvar styfn = Style.prototype;\nstyfn.instanceString = function () {\n return 'style';\n};\n\n// remove all contexts\nstyfn.clear = function () {\n var _p = this._private;\n var cy = _p.cy;\n var eles = cy.elements();\n for (var i = 0; i < this.length; i++) {\n this[i] = undefined;\n }\n this.length = 0;\n _p.contextStyles = {};\n _p.propDiffs = {};\n this.cleanElements(eles, true);\n eles.forEach(function (ele) {\n var ele_p = ele[0]._private;\n ele_p.styleDirty = true;\n ele_p.appliedInitStyle = false;\n });\n return this; // chaining\n};\n\nstyfn.resetToDefault = function () {\n this.clear();\n this.addDefaultStylesheet();\n return this;\n};\n\n// builds a style object for the 'core' selector\nstyfn.core = function (propName) {\n return this._private.coreStyle[propName] || this.getDefaultProperty(propName);\n};\n\n// create a new context from the specified selector string and switch to that context\nstyfn.selector = function (selectorStr) {\n // 'core' is a special case and does not need a selector\n var selector = selectorStr === 'core' ? null : new Selector(selectorStr);\n var i = this.length++; // new context means new index\n this[i] = {\n selector: selector,\n properties: [],\n mappedProperties: [],\n index: i\n };\n return this; // chaining\n};\n\n// add one or many css rules to the current context\nstyfn.css = function () {\n var self = this;\n var args = arguments;\n if (args.length === 1) {\n var map = args[0];\n for (var i = 0; i < self.properties.length; i++) {\n var prop = self.properties[i];\n var mapVal = map[prop.name];\n if (mapVal === undefined) {\n mapVal = map[dash2camel(prop.name)];\n }\n if (mapVal !== undefined) {\n this.cssRule(prop.name, mapVal);\n }\n }\n } else if (args.length === 2) {\n this.cssRule(args[0], args[1]);\n }\n\n // do nothing if args are invalid\n\n return this; // chaining\n};\n\nstyfn.style = styfn.css;\n\n// add a single css rule to the current context\nstyfn.cssRule = function (name, value) {\n // name-value pair\n var property = this.parse(name, value);\n\n // add property to current context if valid\n if (property) {\n var i = this.length - 1;\n this[i].properties.push(property);\n this[i].properties[property.name] = property; // allow access by name as well\n\n if (property.name.match(/pie-(\\d+)-background-size/) && property.value) {\n this._private.hasPie = true;\n }\n if (property.mapped) {\n this[i].mappedProperties.push(property);\n }\n\n // add to core style if necessary\n var currentSelectorIsCore = !this[i].selector;\n if (currentSelectorIsCore) {\n this._private.coreStyle[property.name] = property;\n }\n }\n return this; // chaining\n};\n\nstyfn.append = function (style) {\n if (stylesheet(style)) {\n style.appendToStyle(this);\n } else if (array(style)) {\n this.appendFromJson(style);\n } else if (string(style)) {\n this.appendFromString(style);\n } // you probably wouldn't want to append a Style, since you'd duplicate the default parts\n\n return this;\n};\n\n// static function\nStyle.fromJson = function (cy, json) {\n var style = new Style(cy);\n style.fromJson(json);\n return style;\n};\nStyle.fromString = function (cy, string) {\n return new Style(cy).fromString(string);\n};\n[styfn$8, styfn$7, styfn$6, styfn$5, styfn$4, styfn$3, styfn$2, styfn$1].forEach(function (props) {\n extend(styfn, props);\n});\nStyle.types = styfn.types;\nStyle.properties = styfn.properties;\nStyle.propertyGroups = styfn.propertyGroups;\nStyle.propertyGroupNames = styfn.propertyGroupNames;\nStyle.propertyGroupKeys = styfn.propertyGroupKeys;\n\nvar corefn$2 = {\n style: function style(newStyle) {\n if (newStyle) {\n var s = this.setStyle(newStyle);\n s.update();\n }\n return this._private.style;\n },\n setStyle: function setStyle(style) {\n var _p = this._private;\n if (stylesheet(style)) {\n _p.style = style.generateStyle(this);\n } else if (array(style)) {\n _p.style = Style.fromJson(this, style);\n } else if (string(style)) {\n _p.style = Style.fromString(this, style);\n } else {\n _p.style = Style(this);\n }\n return _p.style;\n },\n // e.g. cy.data() changed => recalc ele mappers\n updateStyle: function updateStyle() {\n this.mutableElements().updateStyle(); // just send to all eles\n }\n};\n\nvar defaultSelectionType = 'single';\nvar corefn$1 = {\n autolock: function autolock(bool) {\n if (bool !== undefined) {\n this._private.autolock = bool ? true : false;\n } else {\n return this._private.autolock;\n }\n return this; // chaining\n },\n\n autoungrabify: function autoungrabify(bool) {\n if (bool !== undefined) {\n this._private.autoungrabify = bool ? true : false;\n } else {\n return this._private.autoungrabify;\n }\n return this; // chaining\n },\n\n autounselectify: function autounselectify(bool) {\n if (bool !== undefined) {\n this._private.autounselectify = bool ? true : false;\n } else {\n return this._private.autounselectify;\n }\n return this; // chaining\n },\n\n selectionType: function selectionType(selType) {\n var _p = this._private;\n if (_p.selectionType == null) {\n _p.selectionType = defaultSelectionType;\n }\n if (selType !== undefined) {\n if (selType === 'additive' || selType === 'single') {\n _p.selectionType = selType;\n }\n } else {\n return _p.selectionType;\n }\n return this;\n },\n panningEnabled: function panningEnabled(bool) {\n if (bool !== undefined) {\n this._private.panningEnabled = bool ? true : false;\n } else {\n return this._private.panningEnabled;\n }\n return this; // chaining\n },\n\n userPanningEnabled: function userPanningEnabled(bool) {\n if (bool !== undefined) {\n this._private.userPanningEnabled = bool ? true : false;\n } else {\n return this._private.userPanningEnabled;\n }\n return this; // chaining\n },\n\n zoomingEnabled: function zoomingEnabled(bool) {\n if (bool !== undefined) {\n this._private.zoomingEnabled = bool ? true : false;\n } else {\n return this._private.zoomingEnabled;\n }\n return this; // chaining\n },\n\n userZoomingEnabled: function userZoomingEnabled(bool) {\n if (bool !== undefined) {\n this._private.userZoomingEnabled = bool ? true : false;\n } else {\n return this._private.userZoomingEnabled;\n }\n return this; // chaining\n },\n\n boxSelectionEnabled: function boxSelectionEnabled(bool) {\n if (bool !== undefined) {\n this._private.boxSelectionEnabled = bool ? true : false;\n } else {\n return this._private.boxSelectionEnabled;\n }\n return this; // chaining\n },\n\n pan: function pan() {\n var args = arguments;\n var pan = this._private.pan;\n var dim, val, dims, x, y;\n switch (args.length) {\n case 0:\n // .pan()\n return pan;\n case 1:\n if (string(args[0])) {\n // .pan('x')\n dim = args[0];\n return pan[dim];\n } else if (plainObject(args[0])) {\n // .pan({ x: 0, y: 100 })\n if (!this._private.panningEnabled) {\n return this;\n }\n dims = args[0];\n x = dims.x;\n y = dims.y;\n if (number$1(x)) {\n pan.x = x;\n }\n if (number$1(y)) {\n pan.y = y;\n }\n this.emit('pan viewport');\n }\n break;\n case 2:\n // .pan('x', 100)\n if (!this._private.panningEnabled) {\n return this;\n }\n dim = args[0];\n val = args[1];\n if ((dim === 'x' || dim === 'y') && number$1(val)) {\n pan[dim] = val;\n }\n this.emit('pan viewport');\n break;\n // invalid\n }\n\n this.notify('viewport');\n return this; // chaining\n },\n\n panBy: function panBy(arg0, arg1) {\n var args = arguments;\n var pan = this._private.pan;\n var dim, val, dims, x, y;\n if (!this._private.panningEnabled) {\n return this;\n }\n switch (args.length) {\n case 1:\n if (plainObject(arg0)) {\n // .panBy({ x: 0, y: 100 })\n dims = args[0];\n x = dims.x;\n y = dims.y;\n if (number$1(x)) {\n pan.x += x;\n }\n if (number$1(y)) {\n pan.y += y;\n }\n this.emit('pan viewport');\n }\n break;\n case 2:\n // .panBy('x', 100)\n dim = arg0;\n val = arg1;\n if ((dim === 'x' || dim === 'y') && number$1(val)) {\n pan[dim] += val;\n }\n this.emit('pan viewport');\n break;\n // invalid\n }\n\n this.notify('viewport');\n return this; // chaining\n },\n\n fit: function fit(elements, padding) {\n var viewportState = this.getFitViewport(elements, padding);\n if (viewportState) {\n var _p = this._private;\n _p.zoom = viewportState.zoom;\n _p.pan = viewportState.pan;\n this.emit('pan zoom viewport');\n this.notify('viewport');\n }\n return this; // chaining\n },\n\n getFitViewport: function getFitViewport(elements, padding) {\n if (number$1(elements) && padding === undefined) {\n // elements is optional\n padding = elements;\n elements = undefined;\n }\n if (!this._private.panningEnabled || !this._private.zoomingEnabled) {\n return;\n }\n var bb;\n if (string(elements)) {\n var sel = elements;\n elements = this.$(sel);\n } else if (boundingBox(elements)) {\n // assume bb\n var bbe = elements;\n bb = {\n x1: bbe.x1,\n y1: bbe.y1,\n x2: bbe.x2,\n y2: bbe.y2\n };\n bb.w = bb.x2 - bb.x1;\n bb.h = bb.y2 - bb.y1;\n } else if (!elementOrCollection(elements)) {\n elements = this.mutableElements();\n }\n if (elementOrCollection(elements) && elements.empty()) {\n return;\n } // can't fit to nothing\n\n bb = bb || elements.boundingBox();\n var w = this.width();\n var h = this.height();\n var zoom;\n padding = number$1(padding) ? padding : 0;\n if (!isNaN(w) && !isNaN(h) && w > 0 && h > 0 && !isNaN(bb.w) && !isNaN(bb.h) && bb.w > 0 && bb.h > 0) {\n zoom = Math.min((w - 2 * padding) / bb.w, (h - 2 * padding) / bb.h);\n\n // crop zoom\n zoom = zoom > this._private.maxZoom ? this._private.maxZoom : zoom;\n zoom = zoom < this._private.minZoom ? this._private.minZoom : zoom;\n var pan = {\n // now pan to middle\n x: (w - zoom * (bb.x1 + bb.x2)) / 2,\n y: (h - zoom * (bb.y1 + bb.y2)) / 2\n };\n return {\n zoom: zoom,\n pan: pan\n };\n }\n return;\n },\n zoomRange: function zoomRange(min, max) {\n var _p = this._private;\n if (max == null) {\n var opts = min;\n min = opts.min;\n max = opts.max;\n }\n if (number$1(min) && number$1(max) && min <= max) {\n _p.minZoom = min;\n _p.maxZoom = max;\n } else if (number$1(min) && max === undefined && min <= _p.maxZoom) {\n _p.minZoom = min;\n } else if (number$1(max) && min === undefined && max >= _p.minZoom) {\n _p.maxZoom = max;\n }\n return this;\n },\n minZoom: function minZoom(zoom) {\n if (zoom === undefined) {\n return this._private.minZoom;\n } else {\n return this.zoomRange({\n min: zoom\n });\n }\n },\n maxZoom: function maxZoom(zoom) {\n if (zoom === undefined) {\n return this._private.maxZoom;\n } else {\n return this.zoomRange({\n max: zoom\n });\n }\n },\n getZoomedViewport: function getZoomedViewport(params) {\n var _p = this._private;\n var currentPan = _p.pan;\n var currentZoom = _p.zoom;\n var pos; // in rendered px\n var zoom;\n var bail = false;\n if (!_p.zoomingEnabled) {\n // zooming disabled\n bail = true;\n }\n if (number$1(params)) {\n // then set the zoom\n zoom = params;\n } else if (plainObject(params)) {\n // then zoom about a point\n zoom = params.level;\n if (params.position != null) {\n pos = modelToRenderedPosition(params.position, currentZoom, currentPan);\n } else if (params.renderedPosition != null) {\n pos = params.renderedPosition;\n }\n if (pos != null && !_p.panningEnabled) {\n // panning disabled\n bail = true;\n }\n }\n\n // crop zoom\n zoom = zoom > _p.maxZoom ? _p.maxZoom : zoom;\n zoom = zoom < _p.minZoom ? _p.minZoom : zoom;\n\n // can't zoom with invalid params\n if (bail || !number$1(zoom) || zoom === currentZoom || pos != null && (!number$1(pos.x) || !number$1(pos.y))) {\n return null;\n }\n if (pos != null) {\n // set zoom about position\n var pan1 = currentPan;\n var zoom1 = currentZoom;\n var zoom2 = zoom;\n var pan2 = {\n x: -zoom2 / zoom1 * (pos.x - pan1.x) + pos.x,\n y: -zoom2 / zoom1 * (pos.y - pan1.y) + pos.y\n };\n return {\n zoomed: true,\n panned: true,\n zoom: zoom2,\n pan: pan2\n };\n } else {\n // just set the zoom\n return {\n zoomed: true,\n panned: false,\n zoom: zoom,\n pan: currentPan\n };\n }\n },\n zoom: function zoom(params) {\n if (params === undefined) {\n // get\n return this._private.zoom;\n } else {\n // set\n var vp = this.getZoomedViewport(params);\n var _p = this._private;\n if (vp == null || !vp.zoomed) {\n return this;\n }\n _p.zoom = vp.zoom;\n if (vp.panned) {\n _p.pan.x = vp.pan.x;\n _p.pan.y = vp.pan.y;\n }\n this.emit('zoom' + (vp.panned ? ' pan' : '') + ' viewport');\n this.notify('viewport');\n return this; // chaining\n }\n },\n\n viewport: function viewport(opts) {\n var _p = this._private;\n var zoomDefd = true;\n var panDefd = true;\n var events = []; // to trigger\n var zoomFailed = false;\n var panFailed = false;\n if (!opts) {\n return this;\n }\n if (!number$1(opts.zoom)) {\n zoomDefd = false;\n }\n if (!plainObject(opts.pan)) {\n panDefd = false;\n }\n if (!zoomDefd && !panDefd) {\n return this;\n }\n if (zoomDefd) {\n var z = opts.zoom;\n if (z < _p.minZoom || z > _p.maxZoom || !_p.zoomingEnabled) {\n zoomFailed = true;\n } else {\n _p.zoom = z;\n events.push('zoom');\n }\n }\n if (panDefd && (!zoomFailed || !opts.cancelOnFailedZoom) && _p.panningEnabled) {\n var p = opts.pan;\n if (number$1(p.x)) {\n _p.pan.x = p.x;\n panFailed = false;\n }\n if (number$1(p.y)) {\n _p.pan.y = p.y;\n panFailed = false;\n }\n if (!panFailed) {\n events.push('pan');\n }\n }\n if (events.length > 0) {\n events.push('viewport');\n this.emit(events.join(' '));\n this.notify('viewport');\n }\n return this; // chaining\n },\n\n center: function center(elements) {\n var pan = this.getCenterPan(elements);\n if (pan) {\n this._private.pan = pan;\n this.emit('pan viewport');\n this.notify('viewport');\n }\n return this; // chaining\n },\n\n getCenterPan: function getCenterPan(elements, zoom) {\n if (!this._private.panningEnabled) {\n return;\n }\n if (string(elements)) {\n var selector = elements;\n elements = this.mutableElements().filter(selector);\n } else if (!elementOrCollection(elements)) {\n elements = this.mutableElements();\n }\n if (elements.length === 0) {\n return;\n } // can't centre pan to nothing\n\n var bb = elements.boundingBox();\n var w = this.width();\n var h = this.height();\n zoom = zoom === undefined ? this._private.zoom : zoom;\n var pan = {\n // middle\n x: (w - zoom * (bb.x1 + bb.x2)) / 2,\n y: (h - zoom * (bb.y1 + bb.y2)) / 2\n };\n return pan;\n },\n reset: function reset() {\n if (!this._private.panningEnabled || !this._private.zoomingEnabled) {\n return this;\n }\n this.viewport({\n pan: {\n x: 0,\n y: 0\n },\n zoom: 1\n });\n return this; // chaining\n },\n\n invalidateSize: function invalidateSize() {\n this._private.sizeCache = null;\n },\n size: function size() {\n var _p = this._private;\n var container = _p.container;\n var cy = this;\n return _p.sizeCache = _p.sizeCache || (container ? function () {\n var style = cy.window().getComputedStyle(container);\n var val = function val(name) {\n return parseFloat(style.getPropertyValue(name));\n };\n return {\n width: container.clientWidth - val('padding-left') - val('padding-right'),\n height: container.clientHeight - val('padding-top') - val('padding-bottom')\n };\n }() : {\n // fallback if no container (not 0 b/c can be used for dividing etc)\n width: 1,\n height: 1\n });\n },\n width: function width() {\n return this.size().width;\n },\n height: function height() {\n return this.size().height;\n },\n extent: function extent() {\n var pan = this._private.pan;\n var zoom = this._private.zoom;\n var rb = this.renderedExtent();\n var b = {\n x1: (rb.x1 - pan.x) / zoom,\n x2: (rb.x2 - pan.x) / zoom,\n y1: (rb.y1 - pan.y) / zoom,\n y2: (rb.y2 - pan.y) / zoom\n };\n b.w = b.x2 - b.x1;\n b.h = b.y2 - b.y1;\n return b;\n },\n renderedExtent: function renderedExtent() {\n var width = this.width();\n var height = this.height();\n return {\n x1: 0,\n y1: 0,\n x2: width,\n y2: height,\n w: width,\n h: height\n };\n },\n multiClickDebounceTime: function multiClickDebounceTime(_int) {\n if (_int) this._private.multiClickDebounceTime = _int;else return this._private.multiClickDebounceTime;\n return this; // chaining\n }\n};\n\n// aliases\ncorefn$1.centre = corefn$1.center;\n\n// backwards compatibility\ncorefn$1.autolockNodes = corefn$1.autolock;\ncorefn$1.autoungrabifyNodes = corefn$1.autoungrabify;\n\nvar fn = {\n data: define.data({\n field: 'data',\n bindingEvent: 'data',\n allowBinding: true,\n allowSetting: true,\n settingEvent: 'data',\n settingTriggersEvent: true,\n triggerFnName: 'trigger',\n allowGetting: true,\n updateStyle: true\n }),\n removeData: define.removeData({\n field: 'data',\n event: 'data',\n triggerFnName: 'trigger',\n triggerEvent: true,\n updateStyle: true\n }),\n scratch: define.data({\n field: 'scratch',\n bindingEvent: 'scratch',\n allowBinding: true,\n allowSetting: true,\n settingEvent: 'scratch',\n settingTriggersEvent: true,\n triggerFnName: 'trigger',\n allowGetting: true,\n updateStyle: true\n }),\n removeScratch: define.removeData({\n field: 'scratch',\n event: 'scratch',\n triggerFnName: 'trigger',\n triggerEvent: true,\n updateStyle: true\n })\n};\n\n// aliases\nfn.attr = fn.data;\nfn.removeAttr = fn.removeData;\n\nvar Core = function Core(opts) {\n var cy = this;\n opts = extend({}, opts);\n var container = opts.container;\n\n // allow for passing a wrapped jquery object\n // e.g. cytoscape({ container: $('#cy') })\n if (container && !htmlElement(container) && htmlElement(container[0])) {\n container = container[0];\n }\n var reg = container ? container._cyreg : null; // e.g. already registered some info (e.g. readies) via jquery\n reg = reg || {};\n if (reg && reg.cy) {\n reg.cy.destroy();\n reg = {}; // old instance => replace reg completely\n }\n\n var readies = reg.readies = reg.readies || [];\n if (container) {\n container._cyreg = reg;\n } // make sure container assoc'd reg points to this cy\n reg.cy = cy;\n var head = _window !== undefined && container !== undefined && !opts.headless;\n var options = opts;\n options.layout = extend({\n name: head ? 'grid' : 'null'\n }, options.layout);\n options.renderer = extend({\n name: head ? 'canvas' : 'null'\n }, options.renderer);\n var defVal = function defVal(def, val, altVal) {\n if (val !== undefined) {\n return val;\n } else if (altVal !== undefined) {\n return altVal;\n } else {\n return def;\n }\n };\n var _p = this._private = {\n container: container,\n // html dom ele container\n ready: false,\n // whether ready has been triggered\n options: options,\n // cached options\n elements: new Collection(this),\n // elements in the graph\n listeners: [],\n // list of listeners\n aniEles: new Collection(this),\n // elements being animated\n data: options.data || {},\n // data for the core\n scratch: {},\n // scratch object for core\n layout: null,\n renderer: null,\n destroyed: false,\n // whether destroy was called\n notificationsEnabled: true,\n // whether notifications are sent to the renderer\n minZoom: 1e-50,\n maxZoom: 1e50,\n zoomingEnabled: defVal(true, options.zoomingEnabled),\n userZoomingEnabled: defVal(true, options.userZoomingEnabled),\n panningEnabled: defVal(true, options.panningEnabled),\n userPanningEnabled: defVal(true, options.userPanningEnabled),\n boxSelectionEnabled: defVal(true, options.boxSelectionEnabled),\n autolock: defVal(false, options.autolock, options.autolockNodes),\n autoungrabify: defVal(false, options.autoungrabify, options.autoungrabifyNodes),\n autounselectify: defVal(false, options.autounselectify),\n styleEnabled: options.styleEnabled === undefined ? head : options.styleEnabled,\n zoom: number$1(options.zoom) ? options.zoom : 1,\n pan: {\n x: plainObject(options.pan) && number$1(options.pan.x) ? options.pan.x : 0,\n y: plainObject(options.pan) && number$1(options.pan.y) ? options.pan.y : 0\n },\n animation: {\n // object for currently-running animations\n current: [],\n queue: []\n },\n hasCompoundNodes: false,\n multiClickDebounceTime: defVal(250, options.multiClickDebounceTime)\n };\n this.createEmitter();\n\n // set selection type\n this.selectionType(options.selectionType);\n\n // init zoom bounds\n this.zoomRange({\n min: options.minZoom,\n max: options.maxZoom\n });\n var loadExtData = function loadExtData(extData, next) {\n var anyIsPromise = extData.some(promise);\n if (anyIsPromise) {\n return Promise$1.all(extData).then(next); // load all data asynchronously, then exec rest of init\n } else {\n next(extData); // exec synchronously for convenience\n }\n };\n\n // start with the default stylesheet so we have something before loading an external stylesheet\n if (_p.styleEnabled) {\n cy.setStyle([]);\n }\n\n // create the renderer\n var rendererOptions = extend({}, options, options.renderer); // allow rendering hints in top level options\n cy.initRenderer(rendererOptions);\n var setElesAndLayout = function setElesAndLayout(elements, onload, ondone) {\n cy.notifications(false);\n\n // remove old elements\n var oldEles = cy.mutableElements();\n if (oldEles.length > 0) {\n oldEles.remove();\n }\n if (elements != null) {\n if (plainObject(elements) || array(elements)) {\n cy.add(elements);\n }\n }\n cy.one('layoutready', function (e) {\n cy.notifications(true);\n cy.emit(e); // we missed this event by turning notifications off, so pass it on\n\n cy.one('load', onload);\n cy.emitAndNotify('load');\n }).one('layoutstop', function () {\n cy.one('done', ondone);\n cy.emit('done');\n });\n var layoutOpts = extend({}, cy._private.options.layout);\n layoutOpts.eles = cy.elements();\n cy.layout(layoutOpts).run();\n };\n loadExtData([options.style, options.elements], function (thens) {\n var initStyle = thens[0];\n var initEles = thens[1];\n\n // init style\n if (_p.styleEnabled) {\n cy.style().append(initStyle);\n }\n\n // initial load\n setElesAndLayout(initEles, function () {\n // onready\n cy.startAnimationLoop();\n _p.ready = true;\n\n // if a ready callback is specified as an option, the bind it\n if (fn$6(options.ready)) {\n cy.on('ready', options.ready);\n }\n\n // bind all the ready handlers registered before creating this instance\n for (var i = 0; i < readies.length; i++) {\n var fn = readies[i];\n cy.on('ready', fn);\n }\n if (reg) {\n reg.readies = [];\n } // clear b/c we've bound them all and don't want to keep it around in case a new core uses the same div etc\n\n cy.emit('ready');\n }, options.done);\n });\n};\nvar corefn = Core.prototype; // short alias\n\nextend(corefn, {\n instanceString: function instanceString() {\n return 'core';\n },\n isReady: function isReady() {\n return this._private.ready;\n },\n destroyed: function destroyed() {\n return this._private.destroyed;\n },\n ready: function ready(fn) {\n if (this.isReady()) {\n this.emitter().emit('ready', [], fn); // just calls fn as though triggered via ready event\n } else {\n this.on('ready', fn);\n }\n return this;\n },\n destroy: function destroy() {\n var cy = this;\n if (cy.destroyed()) return;\n cy.stopAnimationLoop();\n cy.destroyRenderer();\n this.emit('destroy');\n cy._private.destroyed = true;\n return cy;\n },\n hasElementWithId: function hasElementWithId(id) {\n return this._private.elements.hasElementWithId(id);\n },\n getElementById: function getElementById(id) {\n return this._private.elements.getElementById(id);\n },\n hasCompoundNodes: function hasCompoundNodes() {\n return this._private.hasCompoundNodes;\n },\n headless: function headless() {\n return this._private.renderer.isHeadless();\n },\n styleEnabled: function styleEnabled() {\n return this._private.styleEnabled;\n },\n addToPool: function addToPool(eles) {\n this._private.elements.merge(eles);\n return this; // chaining\n },\n\n removeFromPool: function removeFromPool(eles) {\n this._private.elements.unmerge(eles);\n return this;\n },\n container: function container() {\n return this._private.container || null;\n },\n window: function window() {\n var container = this._private.container;\n if (container == null) return _window;\n var ownerDocument = this._private.container.ownerDocument;\n if (ownerDocument === undefined || ownerDocument == null) {\n return _window;\n }\n return ownerDocument.defaultView || _window;\n },\n mount: function mount(container) {\n if (container == null) {\n return;\n }\n var cy = this;\n var _p = cy._private;\n var options = _p.options;\n if (!htmlElement(container) && htmlElement(container[0])) {\n container = container[0];\n }\n cy.stopAnimationLoop();\n cy.destroyRenderer();\n _p.container = container;\n _p.styleEnabled = true;\n cy.invalidateSize();\n cy.initRenderer(extend({}, options, options.renderer, {\n // allow custom renderer name to be re-used, otherwise use canvas\n name: options.renderer.name === 'null' ? 'canvas' : options.renderer.name\n }));\n cy.startAnimationLoop();\n cy.style(options.style);\n cy.emit('mount');\n return cy;\n },\n unmount: function unmount() {\n var cy = this;\n cy.stopAnimationLoop();\n cy.destroyRenderer();\n cy.initRenderer({\n name: 'null'\n });\n cy.emit('unmount');\n return cy;\n },\n options: function options() {\n return copy(this._private.options);\n },\n json: function json(obj) {\n var cy = this;\n var _p = cy._private;\n var eles = cy.mutableElements();\n var getFreshRef = function getFreshRef(ele) {\n return cy.getElementById(ele.id());\n };\n if (plainObject(obj)) {\n // set\n\n cy.startBatch();\n if (obj.elements) {\n var idInJson = {};\n var updateEles = function updateEles(jsons, gr) {\n var toAdd = [];\n var toMod = [];\n for (var i = 0; i < jsons.length; i++) {\n var json = jsons[i];\n if (!json.data.id) {\n warn('cy.json() cannot handle elements without an ID attribute');\n continue;\n }\n var id = '' + json.data.id; // id must be string\n var ele = cy.getElementById(id);\n idInJson[id] = true;\n if (ele.length !== 0) {\n // existing element should be updated\n toMod.push({\n ele: ele,\n json: json\n });\n } else {\n // otherwise should be added\n if (gr) {\n json.group = gr;\n toAdd.push(json);\n } else {\n toAdd.push(json);\n }\n }\n }\n cy.add(toAdd);\n for (var _i = 0; _i < toMod.length; _i++) {\n var _toMod$_i = toMod[_i],\n _ele = _toMod$_i.ele,\n _json = _toMod$_i.json;\n _ele.json(_json);\n }\n };\n if (array(obj.elements)) {\n // elements: []\n updateEles(obj.elements);\n } else {\n // elements: { nodes: [], edges: [] }\n var grs = ['nodes', 'edges'];\n for (var i = 0; i < grs.length; i++) {\n var gr = grs[i];\n var elements = obj.elements[gr];\n if (array(elements)) {\n updateEles(elements, gr);\n }\n }\n }\n var parentsToRemove = cy.collection();\n eles.filter(function (ele) {\n return !idInJson[ele.id()];\n }).forEach(function (ele) {\n if (ele.isParent()) {\n parentsToRemove.merge(ele);\n } else {\n ele.remove();\n }\n });\n\n // so that children are not removed w/parent\n parentsToRemove.forEach(function (ele) {\n return ele.children().move({\n parent: null\n });\n });\n\n // intermediate parents may be moved by prior line, so make sure we remove by fresh refs\n parentsToRemove.forEach(function (ele) {\n return getFreshRef(ele).remove();\n });\n }\n if (obj.style) {\n cy.style(obj.style);\n }\n if (obj.zoom != null && obj.zoom !== _p.zoom) {\n cy.zoom(obj.zoom);\n }\n if (obj.pan) {\n if (obj.pan.x !== _p.pan.x || obj.pan.y !== _p.pan.y) {\n cy.pan(obj.pan);\n }\n }\n if (obj.data) {\n cy.data(obj.data);\n }\n var fields = ['minZoom', 'maxZoom', 'zoomingEnabled', 'userZoomingEnabled', 'panningEnabled', 'userPanningEnabled', 'boxSelectionEnabled', 'autolock', 'autoungrabify', 'autounselectify', 'multiClickDebounceTime'];\n for (var _i2 = 0; _i2 < fields.length; _i2++) {\n var f = fields[_i2];\n if (obj[f] != null) {\n cy[f](obj[f]);\n }\n }\n cy.endBatch();\n return this; // chaining\n } else {\n // get\n var flat = !!obj;\n var json = {};\n if (flat) {\n json.elements = this.elements().map(function (ele) {\n return ele.json();\n });\n } else {\n json.elements = {};\n eles.forEach(function (ele) {\n var group = ele.group();\n if (!json.elements[group]) {\n json.elements[group] = [];\n }\n json.elements[group].push(ele.json());\n });\n }\n if (this._private.styleEnabled) {\n json.style = cy.style().json();\n }\n json.data = copy(cy.data());\n var options = _p.options;\n json.zoomingEnabled = _p.zoomingEnabled;\n json.userZoomingEnabled = _p.userZoomingEnabled;\n json.zoom = _p.zoom;\n json.minZoom = _p.minZoom;\n json.maxZoom = _p.maxZoom;\n json.panningEnabled = _p.panningEnabled;\n json.userPanningEnabled = _p.userPanningEnabled;\n json.pan = copy(_p.pan);\n json.boxSelectionEnabled = _p.boxSelectionEnabled;\n json.renderer = copy(options.renderer);\n json.hideEdgesOnViewport = options.hideEdgesOnViewport;\n json.textureOnViewport = options.textureOnViewport;\n json.wheelSensitivity = options.wheelSensitivity;\n json.motionBlur = options.motionBlur;\n json.multiClickDebounceTime = options.multiClickDebounceTime;\n return json;\n }\n }\n});\ncorefn.$id = corefn.getElementById;\n[corefn$9, corefn$8, elesfn, corefn$7, corefn$6, corefn$5, corefn$4, corefn$3, corefn$2, corefn$1, fn].forEach(function (props) {\n extend(corefn, props);\n});\n\n/* eslint-disable no-unused-vars */\nvar defaults$7 = {\n fit: true,\n // whether to fit the viewport to the graph\n directed: false,\n // whether the tree is directed downwards (or edges can point in any direction if false)\n padding: 30,\n // padding on fit\n circle: false,\n // put depths in concentric circles if true, put depths top down if false\n grid: false,\n // whether to create an even grid into which the DAG is placed (circle:false only)\n spacingFactor: 1.75,\n // positive spacing factor, larger => more space between nodes (N.B. n/a if causes overlap)\n boundingBox: undefined,\n // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n avoidOverlap: true,\n // prevents node overlap, may overflow boundingBox if not enough space\n nodeDimensionsIncludeLabels: false,\n // Excludes the label when calculating node bounding boxes for the layout algorithm\n roots: undefined,\n // the roots of the trees\n depthSort: undefined,\n // a sorting function to order nodes at equal depth. e.g. function(a, b){ return a.data('weight') - b.data('weight') }\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled,\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts\n};\n\nvar deprecatedOptionDefaults = {\n maximal: false,\n // whether to shift nodes down their natural BFS depths in order to avoid upwards edges (DAGS only); setting acyclic to true sets maximal to true also\n acyclic: false // whether the tree is acyclic and thus a node could be shifted (due to the maximal option) multiple times without causing an infinite loop; setting to true sets maximal to true also; if you are uncertain whether a tree is acyclic, set to false to avoid potential infinite loops\n};\n\n/* eslint-enable */\n\nvar getInfo = function getInfo(ele) {\n return ele.scratch('breadthfirst');\n};\nvar setInfo = function setInfo(ele, obj) {\n return ele.scratch('breadthfirst', obj);\n};\nfunction BreadthFirstLayout(options) {\n this.options = extend({}, defaults$7, deprecatedOptionDefaults, options);\n}\nBreadthFirstLayout.prototype.run = function () {\n var params = this.options;\n var options = params;\n var cy = params.cy;\n var eles = options.eles;\n var nodes = eles.nodes().filter(function (n) {\n return !n.isParent();\n });\n var graph = eles;\n var directed = options.directed;\n var maximal = options.acyclic || options.maximal || options.maximalAdjustments > 0; // maximalAdjustments for compat. w/ old code; also, setting acyclic to true sets maximal to true\n\n var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n });\n var roots;\n if (elementOrCollection(options.roots)) {\n roots = options.roots;\n } else if (array(options.roots)) {\n var rootsArray = [];\n for (var i = 0; i < options.roots.length; i++) {\n var id = options.roots[i];\n var ele = cy.getElementById(id);\n rootsArray.push(ele);\n }\n roots = cy.collection(rootsArray);\n } else if (string(options.roots)) {\n roots = cy.$(options.roots);\n } else {\n if (directed) {\n roots = nodes.roots();\n } else {\n var components = eles.components();\n roots = cy.collection();\n var _loop = function _loop(_i) {\n var comp = components[_i];\n var maxDegree = comp.maxDegree(false);\n var compRoots = comp.filter(function (ele) {\n return ele.degree(false) === maxDegree;\n });\n roots = roots.add(compRoots);\n };\n for (var _i = 0; _i < components.length; _i++) {\n _loop(_i);\n }\n }\n }\n var depths = [];\n var foundByBfs = {};\n var addToDepth = function addToDepth(ele, d) {\n if (depths[d] == null) {\n depths[d] = [];\n }\n var i = depths[d].length;\n depths[d].push(ele);\n setInfo(ele, {\n index: i,\n depth: d\n });\n };\n var changeDepth = function changeDepth(ele, newDepth) {\n var _getInfo = getInfo(ele),\n depth = _getInfo.depth,\n index = _getInfo.index;\n depths[depth][index] = null;\n addToDepth(ele, newDepth);\n };\n\n // find the depths of the nodes\n graph.bfs({\n roots: roots,\n directed: options.directed,\n visit: function visit(node, edge, pNode, i, depth) {\n var ele = node[0];\n var id = ele.id();\n addToDepth(ele, depth);\n foundByBfs[id] = true;\n }\n });\n\n // check for nodes not found by bfs\n var orphanNodes = [];\n for (var _i2 = 0; _i2 < nodes.length; _i2++) {\n var _ele = nodes[_i2];\n if (foundByBfs[_ele.id()]) {\n continue;\n } else {\n orphanNodes.push(_ele);\n }\n }\n\n // assign the nodes a depth and index\n\n var assignDepthsAt = function assignDepthsAt(i) {\n var eles = depths[i];\n for (var j = 0; j < eles.length; j++) {\n var _ele2 = eles[j];\n if (_ele2 == null) {\n eles.splice(j, 1);\n j--;\n continue;\n }\n setInfo(_ele2, {\n depth: i,\n index: j\n });\n }\n };\n var assignDepths = function assignDepths() {\n for (var _i3 = 0; _i3 < depths.length; _i3++) {\n assignDepthsAt(_i3);\n }\n };\n var adjustMaximally = function adjustMaximally(ele, shifted) {\n var eInfo = getInfo(ele);\n var incomers = ele.incomers().filter(function (el) {\n return el.isNode() && eles.has(el);\n });\n var maxDepth = -1;\n var id = ele.id();\n for (var k = 0; k < incomers.length; k++) {\n var incmr = incomers[k];\n var iInfo = getInfo(incmr);\n maxDepth = Math.max(maxDepth, iInfo.depth);\n }\n if (eInfo.depth <= maxDepth) {\n if (!options.acyclic && shifted[id]) {\n return null;\n }\n var newDepth = maxDepth + 1;\n changeDepth(ele, newDepth);\n shifted[id] = newDepth;\n return true;\n }\n return false;\n };\n\n // for the directed case, try to make the edges all go down (i.e. depth i => depth i + 1)\n if (directed && maximal) {\n var Q = [];\n var shifted = {};\n var enqueue = function enqueue(n) {\n return Q.push(n);\n };\n var dequeue = function dequeue() {\n return Q.shift();\n };\n nodes.forEach(function (n) {\n return Q.push(n);\n });\n while (Q.length > 0) {\n var _ele3 = dequeue();\n var didShift = adjustMaximally(_ele3, shifted);\n if (didShift) {\n _ele3.outgoers().filter(function (el) {\n return el.isNode() && eles.has(el);\n }).forEach(enqueue);\n } else if (didShift === null) {\n warn('Detected double maximal shift for node `' + _ele3.id() + '`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.');\n break; // exit on failure\n }\n }\n }\n\n assignDepths(); // clear holes\n\n // find min distance we need to leave between nodes\n var minDistance = 0;\n if (options.avoidOverlap) {\n for (var _i4 = 0; _i4 < nodes.length; _i4++) {\n var n = nodes[_i4];\n var nbb = n.layoutDimensions(options);\n var w = nbb.w;\n var h = nbb.h;\n minDistance = Math.max(minDistance, w, h);\n }\n }\n\n // get the weighted percent for an element based on its connectivity to other levels\n var cachedWeightedPercent = {};\n var getWeightedPercent = function getWeightedPercent(ele) {\n if (cachedWeightedPercent[ele.id()]) {\n return cachedWeightedPercent[ele.id()];\n }\n var eleDepth = getInfo(ele).depth;\n var neighbors = ele.neighborhood();\n var percent = 0;\n var samples = 0;\n for (var _i5 = 0; _i5 < neighbors.length; _i5++) {\n var neighbor = neighbors[_i5];\n if (neighbor.isEdge() || neighbor.isParent() || !nodes.has(neighbor)) {\n continue;\n }\n var bf = getInfo(neighbor);\n if (bf == null) {\n continue;\n }\n var index = bf.index;\n var depth = bf.depth;\n\n // unassigned neighbours shouldn't affect the ordering\n if (index == null || depth == null) {\n continue;\n }\n var nDepth = depths[depth].length;\n if (depth < eleDepth) {\n // only get influenced by elements above\n percent += index / nDepth;\n samples++;\n }\n }\n samples = Math.max(1, samples);\n percent = percent / samples;\n if (samples === 0) {\n // put lone nodes at the start\n percent = 0;\n }\n cachedWeightedPercent[ele.id()] = percent;\n return percent;\n };\n\n // rearrange the indices in each depth level based on connectivity\n\n var sortFn = function sortFn(a, b) {\n var apct = getWeightedPercent(a);\n var bpct = getWeightedPercent(b);\n var diff = apct - bpct;\n if (diff === 0) {\n return ascending(a.id(), b.id()); // make sure sort doesn't have don't-care comparisons\n } else {\n return diff;\n }\n };\n if (options.depthSort !== undefined) {\n sortFn = options.depthSort;\n }\n\n // sort each level to make connected nodes closer\n for (var _i6 = 0; _i6 < depths.length; _i6++) {\n depths[_i6].sort(sortFn);\n assignDepthsAt(_i6);\n }\n\n // assign orphan nodes to a new top-level depth\n var orphanDepth = [];\n for (var _i7 = 0; _i7 < orphanNodes.length; _i7++) {\n orphanDepth.push(orphanNodes[_i7]);\n }\n depths.unshift(orphanDepth);\n assignDepths();\n var biggestDepthSize = 0;\n for (var _i8 = 0; _i8 < depths.length; _i8++) {\n biggestDepthSize = Math.max(depths[_i8].length, biggestDepthSize);\n }\n var center = {\n x: bb.x1 + bb.w / 2,\n y: bb.x1 + bb.h / 2\n };\n var maxDepthSize = depths.reduce(function (max, eles) {\n return Math.max(max, eles.length);\n }, 0);\n var getPosition = function getPosition(ele) {\n var _getInfo2 = getInfo(ele),\n depth = _getInfo2.depth,\n index = _getInfo2.index;\n var depthSize = depths[depth].length;\n var distanceX = Math.max(bb.w / ((options.grid ? maxDepthSize : depthSize) + 1), minDistance);\n var distanceY = Math.max(bb.h / (depths.length + 1), minDistance);\n var radiusStepSize = Math.min(bb.w / 2 / depths.length, bb.h / 2 / depths.length);\n radiusStepSize = Math.max(radiusStepSize, minDistance);\n if (!options.circle) {\n var epos = {\n x: center.x + (index + 1 - (depthSize + 1) / 2) * distanceX,\n y: (depth + 1) * distanceY\n };\n return epos;\n } else {\n var radius = radiusStepSize * depth + radiusStepSize - (depths.length > 0 && depths[0].length <= 3 ? radiusStepSize / 2 : 0);\n var theta = 2 * Math.PI / depths[depth].length * index;\n if (depth === 0 && depths[0].length === 1) {\n radius = 1;\n }\n return {\n x: center.x + radius * Math.cos(theta),\n y: center.y + radius * Math.sin(theta)\n };\n }\n };\n eles.nodes().layoutPositions(this, options, getPosition);\n return this; // chaining\n};\n\nvar defaults$6 = {\n fit: true,\n // whether to fit the viewport to the graph\n padding: 30,\n // the padding on fit\n boundingBox: undefined,\n // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n avoidOverlap: true,\n // prevents node overlap, may overflow boundingBox and radius if not enough space\n nodeDimensionsIncludeLabels: false,\n // Excludes the label when calculating node bounding boxes for the layout algorithm\n spacingFactor: undefined,\n // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up\n radius: undefined,\n // the radius of the circle\n startAngle: 3 / 2 * Math.PI,\n // where nodes start in radians\n sweep: undefined,\n // how many radians should be between the first and last node (defaults to full circle)\n clockwise: true,\n // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false)\n sort: undefined,\n // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') }\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts \n};\n\nfunction CircleLayout(options) {\n this.options = extend({}, defaults$6, options);\n}\nCircleLayout.prototype.run = function () {\n var params = this.options;\n var options = params;\n var cy = params.cy;\n var eles = options.eles;\n var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise;\n var nodes = eles.nodes().not(':parent');\n if (options.sort) {\n nodes = nodes.sort(options.sort);\n }\n var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n });\n var center = {\n x: bb.x1 + bb.w / 2,\n y: bb.y1 + bb.h / 2\n };\n var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / nodes.length : options.sweep;\n var dTheta = sweep / Math.max(1, nodes.length - 1);\n var r;\n var minDistance = 0;\n for (var i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n var nbb = n.layoutDimensions(options);\n var w = nbb.w;\n var h = nbb.h;\n minDistance = Math.max(minDistance, w, h);\n }\n if (number$1(options.radius)) {\n r = options.radius;\n } else if (nodes.length <= 1) {\n r = 0;\n } else {\n r = Math.min(bb.h, bb.w) / 2 - minDistance;\n }\n\n // calculate the radius\n if (nodes.length > 1 && options.avoidOverlap) {\n // but only if more than one node (can't overlap)\n minDistance *= 1.75; // just to have some nice spacing\n\n var dcos = Math.cos(dTheta) - Math.cos(0);\n var dsin = Math.sin(dTheta) - Math.sin(0);\n var rMin = Math.sqrt(minDistance * minDistance / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping\n r = Math.max(rMin, r);\n }\n var getPos = function getPos(ele, i) {\n var theta = options.startAngle + i * dTheta * (clockwise ? 1 : -1);\n var rx = r * Math.cos(theta);\n var ry = r * Math.sin(theta);\n var pos = {\n x: center.x + rx,\n y: center.y + ry\n };\n return pos;\n };\n eles.nodes().layoutPositions(this, options, getPos);\n return this; // chaining\n};\n\nvar defaults$5 = {\n fit: true,\n // whether to fit the viewport to the graph\n padding: 30,\n // the padding on fit\n startAngle: 3 / 2 * Math.PI,\n // where nodes start in radians\n sweep: undefined,\n // how many radians should be between the first and last node (defaults to full circle)\n clockwise: true,\n // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false)\n equidistant: false,\n // whether levels have an equal radial distance betwen them, may cause bounding box overflow\n minNodeSpacing: 10,\n // min spacing between outside of nodes (used for radius adjustment)\n boundingBox: undefined,\n // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n avoidOverlap: true,\n // prevents node overlap, may overflow boundingBox if not enough space\n nodeDimensionsIncludeLabels: false,\n // Excludes the label when calculating node bounding boxes for the layout algorithm\n height: undefined,\n // height of layout area (overrides container height)\n width: undefined,\n // width of layout area (overrides container width)\n spacingFactor: undefined,\n // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up\n concentric: function concentric(node) {\n // returns numeric value for each node, placing higher nodes in levels towards the centre\n return node.degree();\n },\n levelWidth: function levelWidth(nodes) {\n // the variation of concentric values in each level\n return nodes.maxDegree() / 4;\n },\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts\n};\n\nfunction ConcentricLayout(options) {\n this.options = extend({}, defaults$5, options);\n}\nConcentricLayout.prototype.run = function () {\n var params = this.options;\n var options = params;\n var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise;\n var cy = params.cy;\n var eles = options.eles;\n var nodes = eles.nodes().not(':parent');\n var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n });\n var center = {\n x: bb.x1 + bb.w / 2,\n y: bb.y1 + bb.h / 2\n };\n var nodeValues = []; // { node, value }\n var maxNodeSize = 0;\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var value = void 0;\n\n // calculate the node value\n value = options.concentric(node);\n nodeValues.push({\n value: value,\n node: node\n });\n\n // for style mapping\n node._private.scratch.concentric = value;\n }\n\n // in case we used the `concentric` in style\n nodes.updateStyle();\n\n // calculate max size now based on potentially updated mappers\n for (var _i = 0; _i < nodes.length; _i++) {\n var _node = nodes[_i];\n var nbb = _node.layoutDimensions(options);\n maxNodeSize = Math.max(maxNodeSize, nbb.w, nbb.h);\n }\n\n // sort node values in descreasing order\n nodeValues.sort(function (a, b) {\n return b.value - a.value;\n });\n var levelWidth = options.levelWidth(nodes);\n\n // put the values into levels\n var levels = [[]];\n var currentLevel = levels[0];\n for (var _i2 = 0; _i2 < nodeValues.length; _i2++) {\n var val = nodeValues[_i2];\n if (currentLevel.length > 0) {\n var diff = Math.abs(currentLevel[0].value - val.value);\n if (diff >= levelWidth) {\n currentLevel = [];\n levels.push(currentLevel);\n }\n }\n currentLevel.push(val);\n }\n\n // create positions from levels\n\n var minDist = maxNodeSize + options.minNodeSpacing; // min dist between nodes\n\n if (!options.avoidOverlap) {\n // then strictly constrain to bb\n var firstLvlHasMulti = levels.length > 0 && levels[0].length > 1;\n var maxR = Math.min(bb.w, bb.h) / 2 - minDist;\n var rStep = maxR / (levels.length + firstLvlHasMulti ? 1 : 0);\n minDist = Math.min(minDist, rStep);\n }\n\n // find the metrics for each level\n var r = 0;\n for (var _i3 = 0; _i3 < levels.length; _i3++) {\n var level = levels[_i3];\n var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / level.length : options.sweep;\n var dTheta = level.dTheta = sweep / Math.max(1, level.length - 1);\n\n // calculate the radius\n if (level.length > 1 && options.avoidOverlap) {\n // but only if more than one node (can't overlap)\n var dcos = Math.cos(dTheta) - Math.cos(0);\n var dsin = Math.sin(dTheta) - Math.sin(0);\n var rMin = Math.sqrt(minDist * minDist / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping\n\n r = Math.max(rMin, r);\n }\n level.r = r;\n r += minDist;\n }\n if (options.equidistant) {\n var rDeltaMax = 0;\n var _r = 0;\n for (var _i4 = 0; _i4 < levels.length; _i4++) {\n var _level = levels[_i4];\n var rDelta = _level.r - _r;\n rDeltaMax = Math.max(rDeltaMax, rDelta);\n }\n _r = 0;\n for (var _i5 = 0; _i5 < levels.length; _i5++) {\n var _level2 = levels[_i5];\n if (_i5 === 0) {\n _r = _level2.r;\n }\n _level2.r = _r;\n _r += rDeltaMax;\n }\n }\n\n // calculate the node positions\n var pos = {}; // id => position\n for (var _i6 = 0; _i6 < levels.length; _i6++) {\n var _level3 = levels[_i6];\n var _dTheta = _level3.dTheta;\n var _r2 = _level3.r;\n for (var j = 0; j < _level3.length; j++) {\n var _val = _level3[j];\n var theta = options.startAngle + (clockwise ? 1 : -1) * _dTheta * j;\n var p = {\n x: center.x + _r2 * Math.cos(theta),\n y: center.y + _r2 * Math.sin(theta)\n };\n pos[_val.node.id()] = p;\n }\n }\n\n // position the nodes\n eles.nodes().layoutPositions(this, options, function (ele) {\n var id = ele.id();\n return pos[id];\n });\n return this; // chaining\n};\n\n/*\nThe CoSE layout was written by Gerardo Huck.\nhttps://www.linkedin.com/in/gerardohuck/\n\nBased on the following article:\nhttp://dl.acm.org/citation.cfm?id=1498047\n\nModifications tracked on Github.\n*/\nvar DEBUG;\n\n/**\n * @brief : default layout options\n */\nvar defaults$4 = {\n // Called on `layoutready`\n ready: function ready() {},\n // Called on `layoutstop`\n stop: function stop() {},\n // Whether to animate while running the layout\n // true : Animate continuously as the layout is running\n // false : Just show the end result\n // 'end' : Animate with the end result, from the initial positions to the end positions\n animate: true,\n // Easing of the animation for animate:'end'\n animationEasing: undefined,\n // The duration of the animation for animate:'end'\n animationDuration: undefined,\n // A function that determines whether the node should be animated\n // All nodes animated by default on animate enabled\n // Non-animated nodes are positioned immediately when the layout starts\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // The layout animates only after this many milliseconds for animate:true\n // (prevents flashing on fast runs)\n animationThreshold: 250,\n // Number of iterations between consecutive screen positions update\n refresh: 20,\n // Whether to fit the network view after when done\n fit: true,\n // Padding on fit\n padding: 30,\n // Constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n boundingBox: undefined,\n // Excludes the label when calculating node bounding boxes for the layout algorithm\n nodeDimensionsIncludeLabels: false,\n // Randomize the initial positions of the nodes (true) or use existing positions (false)\n randomize: false,\n // Extra spacing between components in non-compound graphs\n componentSpacing: 40,\n // Node repulsion (non overlapping) multiplier\n nodeRepulsion: function nodeRepulsion(node) {\n return 2048;\n },\n // Node repulsion (overlapping) multiplier\n nodeOverlap: 4,\n // Ideal edge (non nested) length\n idealEdgeLength: function idealEdgeLength(edge) {\n return 32;\n },\n // Divisor to compute edge forces\n edgeElasticity: function edgeElasticity(edge) {\n return 32;\n },\n // Nesting factor (multiplier) to compute ideal edge length for nested edges\n nestingFactor: 1.2,\n // Gravity force (constant)\n gravity: 1,\n // Maximum number of iterations to perform\n numIter: 1000,\n // Initial temperature (maximum node displacement)\n initialTemp: 1000,\n // Cooling factor (how the temperature is reduced between consecutive iterations\n coolingFactor: 0.99,\n // Lower temperature threshold (below this point the layout will end)\n minTemp: 1.0\n};\n\n/**\n * @brief : constructor\n * @arg options : object containing layout options\n */\nfunction CoseLayout(options) {\n this.options = extend({}, defaults$4, options);\n this.options.layout = this;\n\n // Exclude any edge that has a source or target node that is not in the set of passed-in nodes\n var nodes = this.options.eles.nodes();\n var edges = this.options.eles.edges();\n var notEdges = edges.filter(function (e) {\n var sourceId = e.source().data('id');\n var targetId = e.target().data('id');\n var hasSource = nodes.some(function (n) {\n return n.data('id') === sourceId;\n });\n var hasTarget = nodes.some(function (n) {\n return n.data('id') === targetId;\n });\n return !hasSource || !hasTarget;\n });\n this.options.eles = this.options.eles.not(notEdges);\n}\n\n/**\n * @brief : runs the layout\n */\nCoseLayout.prototype.run = function () {\n var options = this.options;\n var cy = options.cy;\n var layout = this;\n layout.stopped = false;\n if (options.animate === true || options.animate === false) {\n layout.emit({\n type: 'layoutstart',\n layout: layout\n });\n }\n\n // Set DEBUG - Global variable\n if (true === options.debug) {\n DEBUG = true;\n } else {\n DEBUG = false;\n }\n\n // Initialize layout info\n var layoutInfo = createLayoutInfo(cy, layout, options);\n\n // Show LayoutInfo contents if debugging\n if (DEBUG) {\n printLayoutInfo(layoutInfo);\n }\n\n // If required, randomize node positions\n if (options.randomize) {\n randomizePositions(layoutInfo);\n }\n var startTime = performanceNow();\n var refresh = function refresh() {\n refreshPositions(layoutInfo, cy, options);\n\n // Fit the graph if necessary\n if (true === options.fit) {\n cy.fit(options.padding);\n }\n };\n var mainLoop = function mainLoop(i) {\n if (layout.stopped || i >= options.numIter) {\n // logDebug(\"Layout manually stopped. Stopping computation in step \" + i);\n return false;\n }\n\n // Do one step in the phisical simulation\n step(layoutInfo, options);\n\n // Update temperature\n layoutInfo.temperature = layoutInfo.temperature * options.coolingFactor;\n // logDebug(\"New temperature: \" + layoutInfo.temperature);\n\n if (layoutInfo.temperature < options.minTemp) {\n // logDebug(\"Temperature drop below minimum threshold. Stopping computation in step \" + i);\n return false;\n }\n return true;\n };\n var done = function done() {\n if (options.animate === true || options.animate === false) {\n refresh();\n\n // Layout has finished\n layout.one('layoutstop', options.stop);\n layout.emit({\n type: 'layoutstop',\n layout: layout\n });\n } else {\n var nodes = options.eles.nodes();\n var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes);\n nodes.layoutPositions(layout, options, getScaledPos);\n }\n };\n var i = 0;\n var loopRet = true;\n if (options.animate === true) {\n var frame = function frame() {\n var f = 0;\n while (loopRet && f < options.refresh) {\n loopRet = mainLoop(i);\n i++;\n f++;\n }\n if (!loopRet) {\n // it's done\n separateComponents(layoutInfo, options);\n done();\n } else {\n var now = performanceNow();\n if (now - startTime >= options.animationThreshold) {\n refresh();\n }\n requestAnimationFrame(frame);\n }\n };\n frame();\n } else {\n while (loopRet) {\n loopRet = mainLoop(i);\n i++;\n }\n separateComponents(layoutInfo, options);\n done();\n }\n return this; // chaining\n};\n\n/**\n * @brief : called on continuous layouts to stop them before they finish\n */\nCoseLayout.prototype.stop = function () {\n this.stopped = true;\n if (this.thread) {\n this.thread.stop();\n }\n this.emit('layoutstop');\n return this; // chaining\n};\n\nCoseLayout.prototype.destroy = function () {\n if (this.thread) {\n this.thread.stop();\n }\n return this; // chaining\n};\n\n/**\n * @brief : Creates an object which is contains all the data\n * used in the layout process\n * @arg cy : cytoscape.js object\n * @return : layoutInfo object initialized\n */\nvar createLayoutInfo = function createLayoutInfo(cy, layout, options) {\n // Shortcut\n var edges = options.eles.edges();\n var nodes = options.eles.nodes();\n var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n });\n var layoutInfo = {\n isCompound: cy.hasCompoundNodes(),\n layoutNodes: [],\n idToIndex: {},\n nodeSize: nodes.size(),\n graphSet: [],\n indexToGraph: [],\n layoutEdges: [],\n edgeSize: edges.size(),\n temperature: options.initialTemp,\n clientWidth: bb.w,\n clientHeight: bb.h,\n boundingBox: bb\n };\n var components = options.eles.components();\n var id2cmptId = {};\n for (var i = 0; i < components.length; i++) {\n var component = components[i];\n for (var j = 0; j < component.length; j++) {\n var node = component[j];\n id2cmptId[node.id()] = i;\n }\n }\n\n // Iterate over all nodes, creating layout nodes\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = nodes[i];\n var nbb = n.layoutDimensions(options);\n var tempNode = {};\n tempNode.isLocked = n.locked();\n tempNode.id = n.data('id');\n tempNode.parentId = n.data('parent');\n tempNode.cmptId = id2cmptId[n.id()];\n tempNode.children = [];\n tempNode.positionX = n.position('x');\n tempNode.positionY = n.position('y');\n tempNode.offsetX = 0;\n tempNode.offsetY = 0;\n tempNode.height = nbb.w;\n tempNode.width = nbb.h;\n tempNode.maxX = tempNode.positionX + tempNode.width / 2;\n tempNode.minX = tempNode.positionX - tempNode.width / 2;\n tempNode.maxY = tempNode.positionY + tempNode.height / 2;\n tempNode.minY = tempNode.positionY - tempNode.height / 2;\n tempNode.padLeft = parseFloat(n.style('padding'));\n tempNode.padRight = parseFloat(n.style('padding'));\n tempNode.padTop = parseFloat(n.style('padding'));\n tempNode.padBottom = parseFloat(n.style('padding'));\n\n // forces\n tempNode.nodeRepulsion = fn$6(options.nodeRepulsion) ? options.nodeRepulsion(n) : options.nodeRepulsion;\n\n // Add new node\n layoutInfo.layoutNodes.push(tempNode);\n // Add entry to id-index map\n layoutInfo.idToIndex[tempNode.id] = i;\n }\n\n // Inline implementation of a queue, used for traversing the graph in BFS order\n var queue = [];\n var start = 0; // Points to the start the queue\n var end = -1; // Points to the end of the queue\n\n var tempGraph = [];\n\n // Second pass to add child information and\n // initialize queue for hierarchical traversal\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = layoutInfo.layoutNodes[i];\n var p_id = n.parentId;\n // Check if node n has a parent node\n if (null != p_id) {\n // Add node Id to parent's list of children\n layoutInfo.layoutNodes[layoutInfo.idToIndex[p_id]].children.push(n.id);\n } else {\n // If a node doesn't have a parent, then it's in the root graph\n queue[++end] = n.id;\n tempGraph.push(n.id);\n }\n }\n\n // Add root graph to graphSet\n layoutInfo.graphSet.push(tempGraph);\n\n // Traverse the graph, level by level,\n while (start <= end) {\n // Get the node to visit and remove it from queue\n var node_id = queue[start++];\n var node_ix = layoutInfo.idToIndex[node_id];\n var node = layoutInfo.layoutNodes[node_ix];\n var children = node.children;\n if (children.length > 0) {\n // Add children nodes as a new graph to graph set\n layoutInfo.graphSet.push(children);\n // Add children to que queue to be visited\n for (var i = 0; i < children.length; i++) {\n queue[++end] = children[i];\n }\n }\n }\n\n // Create indexToGraph map\n for (var i = 0; i < layoutInfo.graphSet.length; i++) {\n var graph = layoutInfo.graphSet[i];\n for (var j = 0; j < graph.length; j++) {\n var index = layoutInfo.idToIndex[graph[j]];\n layoutInfo.indexToGraph[index] = i;\n }\n }\n\n // Iterate over all edges, creating Layout Edges\n for (var i = 0; i < layoutInfo.edgeSize; i++) {\n var e = edges[i];\n var tempEdge = {};\n tempEdge.id = e.data('id');\n tempEdge.sourceId = e.data('source');\n tempEdge.targetId = e.data('target');\n\n // Compute ideal length\n var idealLength = fn$6(options.idealEdgeLength) ? options.idealEdgeLength(e) : options.idealEdgeLength;\n var elasticity = fn$6(options.edgeElasticity) ? options.edgeElasticity(e) : options.edgeElasticity;\n\n // Check if it's an inter graph edge\n var sourceIx = layoutInfo.idToIndex[tempEdge.sourceId];\n var targetIx = layoutInfo.idToIndex[tempEdge.targetId];\n var sourceGraph = layoutInfo.indexToGraph[sourceIx];\n var targetGraph = layoutInfo.indexToGraph[targetIx];\n if (sourceGraph != targetGraph) {\n // Find lowest common graph ancestor\n var lca = findLCA(tempEdge.sourceId, tempEdge.targetId, layoutInfo);\n\n // Compute sum of node depths, relative to lca graph\n var lcaGraph = layoutInfo.graphSet[lca];\n var depth = 0;\n\n // Source depth\n var tempNode = layoutInfo.layoutNodes[sourceIx];\n while (-1 === lcaGraph.indexOf(tempNode.id)) {\n tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]];\n depth++;\n }\n\n // Target depth\n tempNode = layoutInfo.layoutNodes[targetIx];\n while (-1 === lcaGraph.indexOf(tempNode.id)) {\n tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]];\n depth++;\n }\n\n // logDebug('LCA of nodes ' + tempEdge.sourceId + ' and ' + tempEdge.targetId +\n // \". Index: \" + lca + \" Contents: \" + lcaGraph.toString() +\n // \". Depth: \" + depth);\n\n // Update idealLength\n idealLength *= depth * options.nestingFactor;\n }\n tempEdge.idealLength = idealLength;\n tempEdge.elasticity = elasticity;\n layoutInfo.layoutEdges.push(tempEdge);\n }\n\n // Finally, return layoutInfo object\n return layoutInfo;\n};\n\n/**\n * @brief : This function finds the index of the lowest common\n * graph ancestor between 2 nodes in the subtree\n * (from the graph hierarchy induced tree) whose\n * root is graphIx\n *\n * @arg node1: node1's ID\n * @arg node2: node2's ID\n * @arg layoutInfo: layoutInfo object\n *\n */\nvar findLCA = function findLCA(node1, node2, layoutInfo) {\n // Find their common ancester, starting from the root graph\n var res = findLCA_aux(node1, node2, 0, layoutInfo);\n if (2 > res.count) {\n // If aux function couldn't find the common ancester,\n // then it is the root graph\n return 0;\n } else {\n return res.graph;\n }\n};\n\n/**\n * @brief : Auxiliary function used for LCA computation\n *\n * @arg node1 : node1's ID\n * @arg node2 : node2's ID\n * @arg graphIx : subgraph index\n * @arg layoutInfo : layoutInfo object\n *\n * @return : object of the form {count: X, graph: Y}, where:\n * X is the number of ancestors (max: 2) found in\n * graphIx (and it's subgraphs),\n * Y is the graph index of the lowest graph containing\n * all X nodes\n */\nvar findLCA_aux = function findLCA_aux(node1, node2, graphIx, layoutInfo) {\n var graph = layoutInfo.graphSet[graphIx];\n // If both nodes belongs to graphIx\n if (-1 < graph.indexOf(node1) && -1 < graph.indexOf(node2)) {\n return {\n count: 2,\n graph: graphIx\n };\n }\n\n // Make recursive calls for all subgraphs\n var c = 0;\n for (var i = 0; i < graph.length; i++) {\n var nodeId = graph[i];\n var nodeIx = layoutInfo.idToIndex[nodeId];\n var children = layoutInfo.layoutNodes[nodeIx].children;\n\n // If the node has no child, skip it\n if (0 === children.length) {\n continue;\n }\n var childGraphIx = layoutInfo.indexToGraph[layoutInfo.idToIndex[children[0]]];\n var result = findLCA_aux(node1, node2, childGraphIx, layoutInfo);\n if (0 === result.count) {\n // Neither node1 nor node2 are present in this subgraph\n continue;\n } else if (1 === result.count) {\n // One of (node1, node2) is present in this subgraph\n c++;\n if (2 === c) {\n // We've already found both nodes, no need to keep searching\n break;\n }\n } else {\n // Both nodes are present in this subgraph\n return result;\n }\n }\n return {\n count: c,\n graph: graphIx\n };\n};\n\n/**\n * @brief: printsLayoutInfo into js console\n * Only used for debbuging\n */\nvar printLayoutInfo; \n\n/**\n * @brief : Randomizes the position of all nodes\n */\nvar randomizePositions = function randomizePositions(layoutInfo, cy) {\n var width = layoutInfo.clientWidth;\n var height = layoutInfo.clientHeight;\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = layoutInfo.layoutNodes[i];\n\n // No need to randomize compound nodes or locked nodes\n if (0 === n.children.length && !n.isLocked) {\n n.positionX = Math.random() * width;\n n.positionY = Math.random() * height;\n }\n }\n};\nvar getScaleInBoundsFn = function getScaleInBoundsFn(layoutInfo, options, nodes) {\n var bb = layoutInfo.boundingBox;\n var coseBB = {\n x1: Infinity,\n x2: -Infinity,\n y1: Infinity,\n y2: -Infinity\n };\n if (options.boundingBox) {\n nodes.forEach(function (node) {\n var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[node.data('id')]];\n coseBB.x1 = Math.min(coseBB.x1, lnode.positionX);\n coseBB.x2 = Math.max(coseBB.x2, lnode.positionX);\n coseBB.y1 = Math.min(coseBB.y1, lnode.positionY);\n coseBB.y2 = Math.max(coseBB.y2, lnode.positionY);\n });\n coseBB.w = coseBB.x2 - coseBB.x1;\n coseBB.h = coseBB.y2 - coseBB.y1;\n }\n return function (ele, i) {\n var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[ele.data('id')]];\n if (options.boundingBox) {\n // then add extra bounding box constraint\n var pctX = (lnode.positionX - coseBB.x1) / coseBB.w;\n var pctY = (lnode.positionY - coseBB.y1) / coseBB.h;\n return {\n x: bb.x1 + pctX * bb.w,\n y: bb.y1 + pctY * bb.h\n };\n } else {\n return {\n x: lnode.positionX,\n y: lnode.positionY\n };\n }\n };\n};\n\n/**\n * @brief : Updates the positions of nodes in the network\n * @arg layoutInfo : LayoutInfo object\n * @arg cy : Cytoscape object\n * @arg options : Layout options\n */\nvar refreshPositions = function refreshPositions(layoutInfo, cy, options) {\n // var s = 'Refreshing positions';\n // logDebug(s);\n\n var layout = options.layout;\n var nodes = options.eles.nodes();\n var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes);\n nodes.positions(getScaledPos);\n\n // Trigger layoutReady only on first call\n if (true !== layoutInfo.ready) {\n // s = 'Triggering layoutready';\n // logDebug(s);\n layoutInfo.ready = true;\n layout.one('layoutready', options.ready);\n layout.emit({\n type: 'layoutready',\n layout: this\n });\n }\n};\n\n/**\n * @brief : Logs a debug message in JS console, if DEBUG is ON\n */\n// var logDebug = function(text) {\n// if (DEBUG) {\n// console.debug(text);\n// }\n// };\n\n/**\n * @brief : Performs one iteration of the physical simulation\n * @arg layoutInfo : LayoutInfo object already initialized\n * @arg cy : Cytoscape object\n * @arg options : Layout options\n */\nvar step = function step(layoutInfo, options, _step) {\n // var s = \"\\n\\n###############################\";\n // s += \"\\nSTEP: \" + step;\n // s += \"\\n###############################\\n\";\n // logDebug(s);\n\n // Calculate node repulsions\n calculateNodeForces(layoutInfo, options);\n // Calculate edge forces\n calculateEdgeForces(layoutInfo);\n // Calculate gravity forces\n calculateGravityForces(layoutInfo, options);\n // Propagate forces from parent to child\n propagateForces(layoutInfo);\n // Update positions based on calculated forces\n updatePositions(layoutInfo);\n};\n\n/**\n * @brief : Computes the node repulsion forces\n */\nvar calculateNodeForces = function calculateNodeForces(layoutInfo, options) {\n // Go through each of the graphs in graphSet\n // Nodes only repel each other if they belong to the same graph\n // var s = 'calculateNodeForces';\n // logDebug(s);\n for (var i = 0; i < layoutInfo.graphSet.length; i++) {\n var graph = layoutInfo.graphSet[i];\n var numNodes = graph.length;\n\n // s = \"Set: \" + graph.toString();\n // logDebug(s);\n\n // Now get all the pairs of nodes\n // Only get each pair once, (A, B) = (B, A)\n for (var j = 0; j < numNodes; j++) {\n var node1 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]];\n for (var k = j + 1; k < numNodes; k++) {\n var node2 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[k]]];\n nodeRepulsion(node1, node2, layoutInfo, options);\n }\n }\n }\n};\nvar randomDistance = function randomDistance(max) {\n return -max + 2 * max * Math.random();\n};\n\n/**\n * @brief : Compute the node repulsion forces between a pair of nodes\n */\nvar nodeRepulsion = function nodeRepulsion(node1, node2, layoutInfo, options) {\n // var s = \"Node repulsion. Node1: \" + node1.id + \" Node2: \" + node2.id;\n\n var cmptId1 = node1.cmptId;\n var cmptId2 = node2.cmptId;\n if (cmptId1 !== cmptId2 && !layoutInfo.isCompound) {\n return;\n }\n\n // Get direction of line connecting both node centers\n var directionX = node2.positionX - node1.positionX;\n var directionY = node2.positionY - node1.positionY;\n var maxRandDist = 1;\n // s += \"\\ndirectionX: \" + directionX + \", directionY: \" + directionY;\n\n // If both centers are the same, apply a random force\n if (0 === directionX && 0 === directionY) {\n directionX = randomDistance(maxRandDist);\n directionY = randomDistance(maxRandDist);\n }\n var overlap = nodesOverlap(node1, node2, directionX, directionY);\n if (overlap > 0) {\n // s += \"\\nNodes DO overlap.\";\n // s += \"\\nOverlap: \" + overlap;\n // If nodes overlap, repulsion force is proportional\n // to the overlap\n var force = options.nodeOverlap * overlap;\n\n // Compute the module and components of the force vector\n var distance = Math.sqrt(directionX * directionX + directionY * directionY);\n // s += \"\\nDistance: \" + distance;\n var forceX = force * directionX / distance;\n var forceY = force * directionY / distance;\n } else {\n // s += \"\\nNodes do NOT overlap.\";\n // If there's no overlap, force is inversely proportional\n // to squared distance\n\n // Get clipping points for both nodes\n var point1 = findClippingPoint(node1, directionX, directionY);\n var point2 = findClippingPoint(node2, -1 * directionX, -1 * directionY);\n\n // Use clipping points to compute distance\n var distanceX = point2.x - point1.x;\n var distanceY = point2.y - point1.y;\n var distanceSqr = distanceX * distanceX + distanceY * distanceY;\n var distance = Math.sqrt(distanceSqr);\n // s += \"\\nDistance: \" + distance;\n\n // Compute the module and components of the force vector\n var force = (node1.nodeRepulsion + node2.nodeRepulsion) / distanceSqr;\n var forceX = force * distanceX / distance;\n var forceY = force * distanceY / distance;\n }\n\n // Apply force\n if (!node1.isLocked) {\n node1.offsetX -= forceX;\n node1.offsetY -= forceY;\n }\n if (!node2.isLocked) {\n node2.offsetX += forceX;\n node2.offsetY += forceY;\n }\n\n // s += \"\\nForceX: \" + forceX + \" ForceY: \" + forceY;\n // logDebug(s);\n\n return;\n};\n\n/**\n * @brief : Determines whether two nodes overlap or not\n * @return : Amount of overlapping (0 => no overlap)\n */\nvar nodesOverlap = function nodesOverlap(node1, node2, dX, dY) {\n if (dX > 0) {\n var overlapX = node1.maxX - node2.minX;\n } else {\n var overlapX = node2.maxX - node1.minX;\n }\n if (dY > 0) {\n var overlapY = node1.maxY - node2.minY;\n } else {\n var overlapY = node2.maxY - node1.minY;\n }\n if (overlapX >= 0 && overlapY >= 0) {\n return Math.sqrt(overlapX * overlapX + overlapY * overlapY);\n } else {\n return 0;\n }\n};\n\n/**\n * @brief : Finds the point in which an edge (direction dX, dY) intersects\n * the rectangular bounding box of it's source/target node\n */\nvar findClippingPoint = function findClippingPoint(node, dX, dY) {\n // Shorcuts\n var X = node.positionX;\n var Y = node.positionY;\n var H = node.height || 1;\n var W = node.width || 1;\n var dirSlope = dY / dX;\n var nodeSlope = H / W;\n\n // var s = 'Computing clipping point of node ' + node.id +\n // \" . Height: \" + H + \", Width: \" + W +\n // \"\\nDirection \" + dX + \", \" + dY;\n //\n // Compute intersection\n var res = {};\n\n // Case: Vertical direction (up)\n if (0 === dX && 0 < dY) {\n res.x = X;\n // s += \"\\nUp direction\";\n res.y = Y + H / 2;\n return res;\n }\n\n // Case: Vertical direction (down)\n if (0 === dX && 0 > dY) {\n res.x = X;\n res.y = Y + H / 2;\n // s += \"\\nDown direction\";\n\n return res;\n }\n\n // Case: Intersects the right border\n if (0 < dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) {\n res.x = X + W / 2;\n res.y = Y + W * dY / 2 / dX;\n // s += \"\\nRightborder\";\n\n return res;\n }\n\n // Case: Intersects the left border\n if (0 > dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) {\n res.x = X - W / 2;\n res.y = Y - W * dY / 2 / dX;\n // s += \"\\nLeftborder\";\n\n return res;\n }\n\n // Case: Intersects the top border\n if (0 < dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) {\n res.x = X + H * dX / 2 / dY;\n res.y = Y + H / 2;\n // s += \"\\nTop border\";\n\n return res;\n }\n\n // Case: Intersects the bottom border\n if (0 > dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) {\n res.x = X - H * dX / 2 / dY;\n res.y = Y - H / 2;\n // s += \"\\nBottom border\";\n\n return res;\n }\n\n // s += \"\\nClipping point found at \" + res.x + \", \" + res.y;\n // logDebug(s);\n return res;\n};\n\n/**\n * @brief : Calculates all edge forces\n */\nvar calculateEdgeForces = function calculateEdgeForces(layoutInfo, options) {\n // Iterate over all edges\n for (var i = 0; i < layoutInfo.edgeSize; i++) {\n // Get edge, source & target nodes\n var edge = layoutInfo.layoutEdges[i];\n var sourceIx = layoutInfo.idToIndex[edge.sourceId];\n var source = layoutInfo.layoutNodes[sourceIx];\n var targetIx = layoutInfo.idToIndex[edge.targetId];\n var target = layoutInfo.layoutNodes[targetIx];\n\n // Get direction of line connecting both node centers\n var directionX = target.positionX - source.positionX;\n var directionY = target.positionY - source.positionY;\n\n // If both centers are the same, do nothing.\n // A random force has already been applied as node repulsion\n if (0 === directionX && 0 === directionY) {\n continue;\n }\n\n // Get clipping points for both nodes\n var point1 = findClippingPoint(source, directionX, directionY);\n var point2 = findClippingPoint(target, -1 * directionX, -1 * directionY);\n var lx = point2.x - point1.x;\n var ly = point2.y - point1.y;\n var l = Math.sqrt(lx * lx + ly * ly);\n var force = Math.pow(edge.idealLength - l, 2) / edge.elasticity;\n if (0 !== l) {\n var forceX = force * lx / l;\n var forceY = force * ly / l;\n } else {\n var forceX = 0;\n var forceY = 0;\n }\n\n // Add this force to target and source nodes\n if (!source.isLocked) {\n source.offsetX += forceX;\n source.offsetY += forceY;\n }\n if (!target.isLocked) {\n target.offsetX -= forceX;\n target.offsetY -= forceY;\n }\n\n // var s = 'Edge force between nodes ' + source.id + ' and ' + target.id;\n // s += \"\\nDistance: \" + l + \" Force: (\" + forceX + \", \" + forceY + \")\";\n // logDebug(s);\n }\n};\n\n/**\n * @brief : Computes gravity forces for all nodes\n */\nvar calculateGravityForces = function calculateGravityForces(layoutInfo, options) {\n if (options.gravity === 0) {\n return;\n }\n var distThreshold = 1;\n\n // var s = 'calculateGravityForces';\n // logDebug(s);\n for (var i = 0; i < layoutInfo.graphSet.length; i++) {\n var graph = layoutInfo.graphSet[i];\n var numNodes = graph.length;\n\n // s = \"Set: \" + graph.toString();\n // logDebug(s);\n\n // Compute graph center\n if (0 === i) {\n var centerX = layoutInfo.clientHeight / 2;\n var centerY = layoutInfo.clientWidth / 2;\n } else {\n // Get Parent node for this graph, and use its position as center\n var temp = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[0]]];\n var parent = layoutInfo.layoutNodes[layoutInfo.idToIndex[temp.parentId]];\n var centerX = parent.positionX;\n var centerY = parent.positionY;\n }\n // s = \"Center found at: \" + centerX + \", \" + centerY;\n // logDebug(s);\n\n // Apply force to all nodes in graph\n for (var j = 0; j < numNodes; j++) {\n var node = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]];\n // s = \"Node: \" + node.id;\n\n if (node.isLocked) {\n continue;\n }\n var dx = centerX - node.positionX;\n var dy = centerY - node.positionY;\n var d = Math.sqrt(dx * dx + dy * dy);\n if (d > distThreshold) {\n var fx = options.gravity * dx / d;\n var fy = options.gravity * dy / d;\n node.offsetX += fx;\n node.offsetY += fy;\n // s += \": Applied force: \" + fx + \", \" + fy;\n }\n // logDebug(s);\n }\n }\n};\n\n/**\n * @brief : This function propagates the existing offsets from\n * parent nodes to its descendents.\n * @arg layoutInfo : layoutInfo Object\n * @arg cy : cytoscape Object\n * @arg options : Layout options\n */\nvar propagateForces = function propagateForces(layoutInfo, options) {\n // Inline implementation of a queue, used for traversing the graph in BFS order\n var queue = [];\n var start = 0; // Points to the start the queue\n var end = -1; // Points to the end of the queue\n\n // logDebug('propagateForces');\n\n // Start by visiting the nodes in the root graph\n queue.push.apply(queue, layoutInfo.graphSet[0]);\n end += layoutInfo.graphSet[0].length;\n\n // Traverse the graph, level by level,\n while (start <= end) {\n // Get the node to visit and remove it from queue\n var nodeId = queue[start++];\n var nodeIndex = layoutInfo.idToIndex[nodeId];\n var node = layoutInfo.layoutNodes[nodeIndex];\n var children = node.children;\n\n // We only need to process the node if it's compound\n if (0 < children.length && !node.isLocked) {\n var offX = node.offsetX;\n var offY = node.offsetY;\n\n // var s = \"Propagating offset from parent node : \" + node.id +\n // \". OffsetX: \" + offX + \". OffsetY: \" + offY;\n // s += \"\\n Children: \" + children.toString();\n // logDebug(s);\n\n for (var i = 0; i < children.length; i++) {\n var childNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[children[i]]];\n // Propagate offset\n childNode.offsetX += offX;\n childNode.offsetY += offY;\n // Add children to queue to be visited\n queue[++end] = children[i];\n }\n\n // Reset parent offsets\n node.offsetX = 0;\n node.offsetY = 0;\n }\n }\n};\n\n/**\n * @brief : Updates the layout model positions, based on\n * the accumulated forces\n */\nvar updatePositions = function updatePositions(layoutInfo, options) {\n // var s = 'Updating positions';\n // logDebug(s);\n\n // Reset boundaries for compound nodes\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = layoutInfo.layoutNodes[i];\n if (0 < n.children.length) {\n // logDebug(\"Resetting boundaries of compound node: \" + n.id);\n n.maxX = undefined;\n n.minX = undefined;\n n.maxY = undefined;\n n.minY = undefined;\n }\n }\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = layoutInfo.layoutNodes[i];\n if (0 < n.children.length || n.isLocked) {\n // No need to set compound or locked node position\n // logDebug(\"Skipping position update of node: \" + n.id);\n continue;\n }\n // s = \"Node: \" + n.id + \" Previous position: (\" +\n // n.positionX + \", \" + n.positionY + \").\";\n\n // Limit displacement in order to improve stability\n var tempForce = limitForce(n.offsetX, n.offsetY, layoutInfo.temperature);\n n.positionX += tempForce.x;\n n.positionY += tempForce.y;\n n.offsetX = 0;\n n.offsetY = 0;\n n.minX = n.positionX - n.width;\n n.maxX = n.positionX + n.width;\n n.minY = n.positionY - n.height;\n n.maxY = n.positionY + n.height;\n // s += \" New Position: (\" + n.positionX + \", \" + n.positionY + \").\";\n // logDebug(s);\n\n // Update ancestry boudaries\n updateAncestryBoundaries(n, layoutInfo);\n }\n\n // Update size, position of compund nodes\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = layoutInfo.layoutNodes[i];\n if (0 < n.children.length && !n.isLocked) {\n n.positionX = (n.maxX + n.minX) / 2;\n n.positionY = (n.maxY + n.minY) / 2;\n n.width = n.maxX - n.minX;\n n.height = n.maxY - n.minY;\n // s = \"Updating position, size of compound node \" + n.id;\n // s += \"\\nPositionX: \" + n.positionX + \", PositionY: \" + n.positionY;\n // s += \"\\nWidth: \" + n.width + \", Height: \" + n.height;\n // logDebug(s);\n }\n }\n};\n\n/**\n * @brief : Limits a force (forceX, forceY) to be not\n * greater (in modulo) than max.\n 8 Preserves force direction.\n */\nvar limitForce = function limitForce(forceX, forceY, max) {\n // var s = \"Limiting force: (\" + forceX + \", \" + forceY + \"). Max: \" + max;\n var force = Math.sqrt(forceX * forceX + forceY * forceY);\n if (force > max) {\n var res = {\n x: max * forceX / force,\n y: max * forceY / force\n };\n } else {\n var res = {\n x: forceX,\n y: forceY\n };\n }\n\n // s += \".\\nResult: (\" + res.x + \", \" + res.y + \")\";\n // logDebug(s);\n\n return res;\n};\n\n/**\n * @brief : Function used for keeping track of compound node\n * sizes, since they should bound all their subnodes.\n */\nvar updateAncestryBoundaries = function updateAncestryBoundaries(node, layoutInfo) {\n // var s = \"Propagating new position/size of node \" + node.id;\n var parentId = node.parentId;\n if (null == parentId) {\n // If there's no parent, we are done\n // s += \". No parent node.\";\n // logDebug(s);\n return;\n }\n\n // Get Parent Node\n var p = layoutInfo.layoutNodes[layoutInfo.idToIndex[parentId]];\n var flag = false;\n\n // MaxX\n if (null == p.maxX || node.maxX + p.padRight > p.maxX) {\n p.maxX = node.maxX + p.padRight;\n flag = true;\n // s += \"\\nNew maxX for parent node \" + p.id + \": \" + p.maxX;\n }\n\n // MinX\n if (null == p.minX || node.minX - p.padLeft < p.minX) {\n p.minX = node.minX - p.padLeft;\n flag = true;\n // s += \"\\nNew minX for parent node \" + p.id + \": \" + p.minX;\n }\n\n // MaxY\n if (null == p.maxY || node.maxY + p.padBottom > p.maxY) {\n p.maxY = node.maxY + p.padBottom;\n flag = true;\n // s += \"\\nNew maxY for parent node \" + p.id + \": \" + p.maxY;\n }\n\n // MinY\n if (null == p.minY || node.minY - p.padTop < p.minY) {\n p.minY = node.minY - p.padTop;\n flag = true;\n // s += \"\\nNew minY for parent node \" + p.id + \": \" + p.minY;\n }\n\n // If updated boundaries, propagate changes upward\n if (flag) {\n // logDebug(s);\n return updateAncestryBoundaries(p, layoutInfo);\n }\n\n // s += \". No changes in boundaries/position of parent node \" + p.id;\n // logDebug(s);\n return;\n};\nvar separateComponents = function separateComponents(layoutInfo, options) {\n var nodes = layoutInfo.layoutNodes;\n var components = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var cid = node.cmptId;\n var component = components[cid] = components[cid] || [];\n component.push(node);\n }\n var totalA = 0;\n for (var i = 0; i < components.length; i++) {\n var c = components[i];\n if (!c) {\n continue;\n }\n c.x1 = Infinity;\n c.x2 = -Infinity;\n c.y1 = Infinity;\n c.y2 = -Infinity;\n for (var j = 0; j < c.length; j++) {\n var n = c[j];\n c.x1 = Math.min(c.x1, n.positionX - n.width / 2);\n c.x2 = Math.max(c.x2, n.positionX + n.width / 2);\n c.y1 = Math.min(c.y1, n.positionY - n.height / 2);\n c.y2 = Math.max(c.y2, n.positionY + n.height / 2);\n }\n c.w = c.x2 - c.x1;\n c.h = c.y2 - c.y1;\n totalA += c.w * c.h;\n }\n components.sort(function (c1, c2) {\n return c2.w * c2.h - c1.w * c1.h;\n });\n var x = 0;\n var y = 0;\n var usedW = 0;\n var rowH = 0;\n var maxRowW = Math.sqrt(totalA) * layoutInfo.clientWidth / layoutInfo.clientHeight;\n for (var i = 0; i < components.length; i++) {\n var c = components[i];\n if (!c) {\n continue;\n }\n for (var j = 0; j < c.length; j++) {\n var n = c[j];\n if (!n.isLocked) {\n n.positionX += x - c.x1;\n n.positionY += y - c.y1;\n }\n }\n x += c.w + options.componentSpacing;\n usedW += c.w + options.componentSpacing;\n rowH = Math.max(rowH, c.h);\n if (usedW > maxRowW) {\n y += rowH + options.componentSpacing;\n x = 0;\n usedW = 0;\n rowH = 0;\n }\n }\n};\n\nvar defaults$3 = {\n fit: true,\n // whether to fit the viewport to the graph\n padding: 30,\n // padding used on fit\n boundingBox: undefined,\n // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n avoidOverlap: true,\n // prevents node overlap, may overflow boundingBox if not enough space\n avoidOverlapPadding: 10,\n // extra spacing around nodes when avoidOverlap: true\n nodeDimensionsIncludeLabels: false,\n // Excludes the label when calculating node bounding boxes for the layout algorithm\n spacingFactor: undefined,\n // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up\n condense: false,\n // uses all available space on false, uses minimal space on true\n rows: undefined,\n // force num of rows in the grid\n cols: undefined,\n // force num of columns in the grid\n position: function position(node) {},\n // returns { row, col } for element\n sort: undefined,\n // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') }\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts \n};\n\nfunction GridLayout(options) {\n this.options = extend({}, defaults$3, options);\n}\nGridLayout.prototype.run = function () {\n var params = this.options;\n var options = params;\n var cy = params.cy;\n var eles = options.eles;\n var nodes = eles.nodes().not(':parent');\n if (options.sort) {\n nodes = nodes.sort(options.sort);\n }\n var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n });\n if (bb.h === 0 || bb.w === 0) {\n eles.nodes().layoutPositions(this, options, function (ele) {\n return {\n x: bb.x1,\n y: bb.y1\n };\n });\n } else {\n // width/height * splits^2 = cells where splits is number of times to split width\n var cells = nodes.size();\n var splits = Math.sqrt(cells * bb.h / bb.w);\n var rows = Math.round(splits);\n var cols = Math.round(bb.w / bb.h * splits);\n var small = function small(val) {\n if (val == null) {\n return Math.min(rows, cols);\n } else {\n var min = Math.min(rows, cols);\n if (min == rows) {\n rows = val;\n } else {\n cols = val;\n }\n }\n };\n var large = function large(val) {\n if (val == null) {\n return Math.max(rows, cols);\n } else {\n var max = Math.max(rows, cols);\n if (max == rows) {\n rows = val;\n } else {\n cols = val;\n }\n }\n };\n var oRows = options.rows;\n var oCols = options.cols != null ? options.cols : options.columns;\n\n // if rows or columns were set in options, use those values\n if (oRows != null && oCols != null) {\n rows = oRows;\n cols = oCols;\n } else if (oRows != null && oCols == null) {\n rows = oRows;\n cols = Math.ceil(cells / rows);\n } else if (oRows == null && oCols != null) {\n cols = oCols;\n rows = Math.ceil(cells / cols);\n }\n\n // otherwise use the automatic values and adjust accordingly\n\n // if rounding was up, see if we can reduce rows or columns\n else if (cols * rows > cells) {\n var sm = small();\n var lg = large();\n\n // reducing the small side takes away the most cells, so try it first\n if ((sm - 1) * lg >= cells) {\n small(sm - 1);\n } else if ((lg - 1) * sm >= cells) {\n large(lg - 1);\n }\n } else {\n // if rounding was too low, add rows or columns\n while (cols * rows < cells) {\n var _sm = small();\n var _lg = large();\n\n // try to add to larger side first (adds less in multiplication)\n if ((_lg + 1) * _sm >= cells) {\n large(_lg + 1);\n } else {\n small(_sm + 1);\n }\n }\n }\n var cellWidth = bb.w / cols;\n var cellHeight = bb.h / rows;\n if (options.condense) {\n cellWidth = 0;\n cellHeight = 0;\n }\n if (options.avoidOverlap) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var pos = node._private.position;\n if (pos.x == null || pos.y == null) {\n // for bb\n pos.x = 0;\n pos.y = 0;\n }\n var nbb = node.layoutDimensions(options);\n var p = options.avoidOverlapPadding;\n var w = nbb.w + p;\n var h = nbb.h + p;\n cellWidth = Math.max(cellWidth, w);\n cellHeight = Math.max(cellHeight, h);\n }\n }\n var cellUsed = {}; // e.g. 'c-0-2' => true\n\n var used = function used(row, col) {\n return cellUsed['c-' + row + '-' + col] ? true : false;\n };\n var use = function use(row, col) {\n cellUsed['c-' + row + '-' + col] = true;\n };\n\n // to keep track of current cell position\n var row = 0;\n var col = 0;\n var moveToNextCell = function moveToNextCell() {\n col++;\n if (col >= cols) {\n col = 0;\n row++;\n }\n };\n\n // get a cache of all the manual positions\n var id2manPos = {};\n for (var _i = 0; _i < nodes.length; _i++) {\n var _node = nodes[_i];\n var rcPos = options.position(_node);\n if (rcPos && (rcPos.row !== undefined || rcPos.col !== undefined)) {\n // must have at least row or col def'd\n var _pos = {\n row: rcPos.row,\n col: rcPos.col\n };\n if (_pos.col === undefined) {\n // find unused col\n _pos.col = 0;\n while (used(_pos.row, _pos.col)) {\n _pos.col++;\n }\n } else if (_pos.row === undefined) {\n // find unused row\n _pos.row = 0;\n while (used(_pos.row, _pos.col)) {\n _pos.row++;\n }\n }\n id2manPos[_node.id()] = _pos;\n use(_pos.row, _pos.col);\n }\n }\n var getPos = function getPos(element, i) {\n var x, y;\n if (element.locked() || element.isParent()) {\n return false;\n }\n\n // see if we have a manual position set\n var rcPos = id2manPos[element.id()];\n if (rcPos) {\n x = rcPos.col * cellWidth + cellWidth / 2 + bb.x1;\n y = rcPos.row * cellHeight + cellHeight / 2 + bb.y1;\n } else {\n // otherwise set automatically\n\n while (used(row, col)) {\n moveToNextCell();\n }\n x = col * cellWidth + cellWidth / 2 + bb.x1;\n y = row * cellHeight + cellHeight / 2 + bb.y1;\n use(row, col);\n moveToNextCell();\n }\n return {\n x: x,\n y: y\n };\n };\n nodes.layoutPositions(this, options, getPos);\n }\n return this; // chaining\n};\n\n// default layout options\nvar defaults$2 = {\n ready: function ready() {},\n // on layoutready\n stop: function stop() {} // on layoutstop\n};\n\n// constructor\n// options : object containing layout options\nfunction NullLayout(options) {\n this.options = extend({}, defaults$2, options);\n}\n\n// runs the layout\nNullLayout.prototype.run = function () {\n var options = this.options;\n var eles = options.eles; // elements to consider in the layout\n var layout = this;\n\n // cy is automatically populated for us in the constructor\n // (disable eslint for next line as this serves as example layout code to external developers)\n // eslint-disable-next-line no-unused-vars\n options.cy;\n layout.emit('layoutstart');\n\n // puts all nodes at (0, 0)\n // n.b. most layouts would use layoutPositions(), instead of positions() and manual events\n eles.nodes().positions(function () {\n return {\n x: 0,\n y: 0\n };\n });\n\n // trigger layoutready when each node has had its position set at least once\n layout.one('layoutready', options.ready);\n layout.emit('layoutready');\n\n // trigger layoutstop when the layout stops (e.g. finishes)\n layout.one('layoutstop', options.stop);\n layout.emit('layoutstop');\n return this; // chaining\n};\n\n// called on continuous layouts to stop them before they finish\nNullLayout.prototype.stop = function () {\n return this; // chaining\n};\n\nvar defaults$1 = {\n positions: undefined,\n // map of (node id) => (position obj); or function(node){ return somPos; }\n zoom: undefined,\n // the zoom level to set (prob want fit = false if set)\n pan: undefined,\n // the pan level to set (prob want fit = false if set)\n fit: true,\n // whether to fit to viewport\n padding: 30,\n // padding on fit\n spacingFactor: undefined,\n // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts\n};\n\nfunction PresetLayout(options) {\n this.options = extend({}, defaults$1, options);\n}\nPresetLayout.prototype.run = function () {\n var options = this.options;\n var eles = options.eles;\n var nodes = eles.nodes();\n var posIsFn = fn$6(options.positions);\n function getPosition(node) {\n if (options.positions == null) {\n return copyPosition(node.position());\n }\n if (posIsFn) {\n return options.positions(node);\n }\n var pos = options.positions[node._private.data.id];\n if (pos == null) {\n return null;\n }\n return pos;\n }\n nodes.layoutPositions(this, options, function (node, i) {\n var position = getPosition(node);\n if (node.locked() || position == null) {\n return false;\n }\n return position;\n });\n return this; // chaining\n};\n\nvar defaults = {\n fit: true,\n // whether to fit to viewport\n padding: 30,\n // fit padding\n boundingBox: undefined,\n // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts \n};\n\nfunction RandomLayout(options) {\n this.options = extend({}, defaults, options);\n}\nRandomLayout.prototype.run = function () {\n var options = this.options;\n var cy = options.cy;\n var eles = options.eles;\n var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n });\n var getPos = function getPos(node, i) {\n return {\n x: bb.x1 + Math.round(Math.random() * bb.w),\n y: bb.y1 + Math.round(Math.random() * bb.h)\n };\n };\n eles.nodes().layoutPositions(this, options, getPos);\n return this; // chaining\n};\n\nvar layout = [{\n name: 'breadthfirst',\n impl: BreadthFirstLayout\n}, {\n name: 'circle',\n impl: CircleLayout\n}, {\n name: 'concentric',\n impl: ConcentricLayout\n}, {\n name: 'cose',\n impl: CoseLayout\n}, {\n name: 'grid',\n impl: GridLayout\n}, {\n name: 'null',\n impl: NullLayout\n}, {\n name: 'preset',\n impl: PresetLayout\n}, {\n name: 'random',\n impl: RandomLayout\n}];\n\nfunction NullRenderer(options) {\n this.options = options;\n this.notifications = 0; // for testing\n}\n\nvar noop = function noop() {};\nvar throwImgErr = function throwImgErr() {\n throw new Error('A headless instance can not render images');\n};\nNullRenderer.prototype = {\n recalculateRenderedStyle: noop,\n notify: function notify() {\n this.notifications++;\n },\n init: noop,\n isHeadless: function isHeadless() {\n return true;\n },\n png: throwImgErr,\n jpg: throwImgErr\n};\n\nvar BRp$f = {};\nBRp$f.arrowShapeWidth = 0.3;\nBRp$f.registerArrowShapes = function () {\n var arrowShapes = this.arrowShapes = {};\n var renderer = this;\n\n // Contract for arrow shapes:\n // 0, 0 is arrow tip\n // (0, 1) is direction towards node\n // (1, 0) is right\n //\n // functional api:\n // collide: check x, y in shape\n // roughCollide: called before collide, no false negatives\n // draw: draw\n // spacing: dist(arrowTip, nodeBoundary)\n // gap: dist(edgeTip, nodeBoundary), edgeTip may != arrowTip\n\n var bbCollide = function bbCollide(x, y, size, angle, translation, edgeWidth, padding) {\n var x1 = translation.x - size / 2 - padding;\n var x2 = translation.x + size / 2 + padding;\n var y1 = translation.y - size / 2 - padding;\n var y2 = translation.y + size / 2 + padding;\n var inside = x1 <= x && x <= x2 && y1 <= y && y <= y2;\n return inside;\n };\n var transform = function transform(x, y, size, angle, translation) {\n var xRotated = x * Math.cos(angle) - y * Math.sin(angle);\n var yRotated = x * Math.sin(angle) + y * Math.cos(angle);\n var xScaled = xRotated * size;\n var yScaled = yRotated * size;\n var xTranslated = xScaled + translation.x;\n var yTranslated = yScaled + translation.y;\n return {\n x: xTranslated,\n y: yTranslated\n };\n };\n var transformPoints = function transformPoints(pts, size, angle, translation) {\n var retPts = [];\n for (var i = 0; i < pts.length; i += 2) {\n var x = pts[i];\n var y = pts[i + 1];\n retPts.push(transform(x, y, size, angle, translation));\n }\n return retPts;\n };\n var pointsToArr = function pointsToArr(pts) {\n var ret = [];\n for (var i = 0; i < pts.length; i++) {\n var p = pts[i];\n ret.push(p.x, p.y);\n }\n return ret;\n };\n var standardGap = function standardGap(edge) {\n return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').pfValue * 2;\n };\n var defineArrowShape = function defineArrowShape(name, defn) {\n if (string(defn)) {\n defn = arrowShapes[defn];\n }\n arrowShapes[name] = extend({\n name: name,\n points: [-0.15, -0.3, 0.15, -0.3, 0.15, 0.3, -0.15, 0.3],\n collide: function collide(x, y, size, angle, translation, padding) {\n var points = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));\n var inside = pointInsidePolygonPoints(x, y, points);\n return inside;\n },\n roughCollide: bbCollide,\n draw: function draw(context, size, angle, translation) {\n var points = transformPoints(this.points, size, angle, translation);\n renderer.arrowShapeImpl('polygon')(context, points);\n },\n spacing: function spacing(edge) {\n return 0;\n },\n gap: standardGap\n }, defn);\n };\n defineArrowShape('none', {\n collide: falsify,\n roughCollide: falsify,\n draw: noop$1,\n spacing: zeroify,\n gap: zeroify\n });\n defineArrowShape('triangle', {\n points: [-0.15, -0.3, 0, 0, 0.15, -0.3]\n });\n defineArrowShape('arrow', 'triangle');\n defineArrowShape('triangle-backcurve', {\n points: arrowShapes['triangle'].points,\n controlPoint: [0, -0.15],\n roughCollide: bbCollide,\n draw: function draw(context, size, angle, translation, edgeWidth) {\n var ptsTrans = transformPoints(this.points, size, angle, translation);\n var ctrlPt = this.controlPoint;\n var ctrlPtTrans = transform(ctrlPt[0], ctrlPt[1], size, angle, translation);\n renderer.arrowShapeImpl(this.name)(context, ptsTrans, ctrlPtTrans);\n },\n gap: function gap(edge) {\n return standardGap(edge) * 0.8;\n }\n });\n defineArrowShape('triangle-tee', {\n points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0],\n pointsTee: [-0.15, -0.4, -0.15, -0.5, 0.15, -0.5, 0.15, -0.4],\n collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {\n var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));\n var teePts = pointsToArr(transformPoints(this.pointsTee, size + 2 * padding, angle, translation));\n var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts);\n return inside;\n },\n draw: function draw(context, size, angle, translation, edgeWidth) {\n var triPts = transformPoints(this.points, size, angle, translation);\n var teePts = transformPoints(this.pointsTee, size, angle, translation);\n renderer.arrowShapeImpl(this.name)(context, triPts, teePts);\n }\n });\n defineArrowShape('circle-triangle', {\n radius: 0.15,\n pointsTr: [0, -0.15, 0.15, -0.45, -0.15, -0.45, 0, -0.15],\n collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {\n var t = translation;\n var circleInside = Math.pow(t.x - x, 2) + Math.pow(t.y - y, 2) <= Math.pow((size + 2 * padding) * this.radius, 2);\n var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));\n return pointInsidePolygonPoints(x, y, triPts) || circleInside;\n },\n draw: function draw(context, size, angle, translation, edgeWidth) {\n var triPts = transformPoints(this.pointsTr, size, angle, translation);\n renderer.arrowShapeImpl(this.name)(context, triPts, translation.x, translation.y, this.radius * size);\n },\n spacing: function spacing(edge) {\n return renderer.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.radius;\n }\n });\n defineArrowShape('triangle-cross', {\n points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0],\n baseCrossLinePts: [-0.15, -0.4,\n // first half of the rectangle\n -0.15, -0.4, 0.15, -0.4,\n // second half of the rectangle\n 0.15, -0.4],\n crossLinePts: function crossLinePts(size, edgeWidth) {\n // shift points so that the distance between the cross points matches edge width\n var p = this.baseCrossLinePts.slice();\n var shiftFactor = edgeWidth / size;\n var y0 = 3;\n var y1 = 5;\n p[y0] = p[y0] - shiftFactor;\n p[y1] = p[y1] - shiftFactor;\n return p;\n },\n collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {\n var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));\n var teePts = pointsToArr(transformPoints(this.crossLinePts(size, edgeWidth), size + 2 * padding, angle, translation));\n var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts);\n return inside;\n },\n draw: function draw(context, size, angle, translation, edgeWidth) {\n var triPts = transformPoints(this.points, size, angle, translation);\n var crossLinePts = transformPoints(this.crossLinePts(size, edgeWidth), size, angle, translation);\n renderer.arrowShapeImpl(this.name)(context, triPts, crossLinePts);\n }\n });\n defineArrowShape('vee', {\n points: [-0.15, -0.3, 0, 0, 0.15, -0.3, 0, -0.15],\n gap: function gap(edge) {\n return standardGap(edge) * 0.525;\n }\n });\n defineArrowShape('circle', {\n radius: 0.15,\n collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {\n var t = translation;\n var inside = Math.pow(t.x - x, 2) + Math.pow(t.y - y, 2) <= Math.pow((size + 2 * padding) * this.radius, 2);\n return inside;\n },\n draw: function draw(context, size, angle, translation, edgeWidth) {\n renderer.arrowShapeImpl(this.name)(context, translation.x, translation.y, this.radius * size);\n },\n spacing: function spacing(edge) {\n return renderer.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.radius;\n }\n });\n defineArrowShape('tee', {\n points: [-0.15, 0, -0.15, -0.1, 0.15, -0.1, 0.15, 0],\n spacing: function spacing(edge) {\n return 1;\n },\n gap: function gap(edge) {\n return 1;\n }\n });\n defineArrowShape('square', {\n points: [-0.15, 0.00, 0.15, 0.00, 0.15, -0.3, -0.15, -0.3]\n });\n defineArrowShape('diamond', {\n points: [-0.15, -0.15, 0, -0.3, 0.15, -0.15, 0, 0],\n gap: function gap(edge) {\n return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value;\n }\n });\n defineArrowShape('chevron', {\n points: [0, 0, -0.15, -0.15, -0.1, -0.2, 0, -0.1, 0.1, -0.2, 0.15, -0.15],\n gap: function gap(edge) {\n return 0.95 * edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value;\n }\n });\n};\n\nvar BRp$e = {};\n\n// Project mouse\nBRp$e.projectIntoViewport = function (clientX, clientY) {\n var cy = this.cy;\n var offsets = this.findContainerClientCoords();\n var offsetLeft = offsets[0];\n var offsetTop = offsets[1];\n var scale = offsets[4];\n var pan = cy.pan();\n var zoom = cy.zoom();\n var x = ((clientX - offsetLeft) / scale - pan.x) / zoom;\n var y = ((clientY - offsetTop) / scale - pan.y) / zoom;\n return [x, y];\n};\nBRp$e.findContainerClientCoords = function () {\n if (this.containerBB) {\n return this.containerBB;\n }\n var container = this.container;\n var rect = container.getBoundingClientRect();\n var style = this.cy.window().getComputedStyle(container);\n var styleValue = function styleValue(name) {\n return parseFloat(style.getPropertyValue(name));\n };\n var padding = {\n left: styleValue('padding-left'),\n right: styleValue('padding-right'),\n top: styleValue('padding-top'),\n bottom: styleValue('padding-bottom')\n };\n var border = {\n left: styleValue('border-left-width'),\n right: styleValue('border-right-width'),\n top: styleValue('border-top-width'),\n bottom: styleValue('border-bottom-width')\n };\n var clientWidth = container.clientWidth;\n var clientHeight = container.clientHeight;\n var paddingHor = padding.left + padding.right;\n var paddingVer = padding.top + padding.bottom;\n var borderHor = border.left + border.right;\n var scale = rect.width / (clientWidth + borderHor);\n var unscaledW = clientWidth - paddingHor;\n var unscaledH = clientHeight - paddingVer;\n var left = rect.left + padding.left + border.left;\n var top = rect.top + padding.top + border.top;\n return this.containerBB = [left, top, unscaledW, unscaledH, scale];\n};\nBRp$e.invalidateContainerClientCoordsCache = function () {\n this.containerBB = null;\n};\nBRp$e.findNearestElement = function (x, y, interactiveElementsOnly, isTouch) {\n return this.findNearestElements(x, y, interactiveElementsOnly, isTouch)[0];\n};\nBRp$e.findNearestElements = function (x, y, interactiveElementsOnly, isTouch) {\n var self = this;\n var r = this;\n var eles = r.getCachedZSortedEles();\n var near = []; // 1 node max, 1 edge max\n var zoom = r.cy.zoom();\n var hasCompounds = r.cy.hasCompoundNodes();\n var edgeThreshold = (isTouch ? 24 : 8) / zoom;\n var nodeThreshold = (isTouch ? 8 : 2) / zoom;\n var labelThreshold = (isTouch ? 8 : 2) / zoom;\n var minSqDist = Infinity;\n var nearEdge;\n var nearNode;\n if (interactiveElementsOnly) {\n eles = eles.interactive;\n }\n function addEle(ele, sqDist) {\n if (ele.isNode()) {\n if (nearNode) {\n return; // can't replace node\n } else {\n nearNode = ele;\n near.push(ele);\n }\n }\n if (ele.isEdge() && (sqDist == null || sqDist < minSqDist)) {\n if (nearEdge) {\n // then replace existing edge\n // can replace only if same z-index\n if (nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value && nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value) {\n for (var i = 0; i < near.length; i++) {\n if (near[i].isEdge()) {\n near[i] = ele;\n nearEdge = ele;\n minSqDist = sqDist != null ? sqDist : minSqDist;\n break;\n }\n }\n }\n } else {\n near.push(ele);\n nearEdge = ele;\n minSqDist = sqDist != null ? sqDist : minSqDist;\n }\n }\n }\n function checkNode(node) {\n var width = node.outerWidth() + 2 * nodeThreshold;\n var height = node.outerHeight() + 2 * nodeThreshold;\n var hw = width / 2;\n var hh = height / 2;\n var pos = node.position();\n if (pos.x - hw <= x && x <= pos.x + hw // bb check x\n && pos.y - hh <= y && y <= pos.y + hh // bb check y\n ) {\n var shape = r.nodeShapes[self.getNodeShape(node)];\n if (shape.checkPoint(x, y, 0, width, height, pos.x, pos.y)) {\n addEle(node, 0);\n return true;\n }\n }\n }\n function checkEdge(edge) {\n var _p = edge._private;\n var rs = _p.rscratch;\n var styleWidth = edge.pstyle('width').pfValue;\n var scale = edge.pstyle('arrow-scale').value;\n var width = styleWidth / 2 + edgeThreshold; // more like a distance radius from centre\n var widthSq = width * width;\n var width2 = width * 2;\n var src = _p.source;\n var tgt = _p.target;\n var sqDist;\n if (rs.edgeType === 'segments' || rs.edgeType === 'straight' || rs.edgeType === 'haystack') {\n var pts = rs.allpts;\n for (var i = 0; i + 3 < pts.length; i += 2) {\n if (inLineVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], width2) && widthSq > (sqDist = sqdistToFiniteLine(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3]))) {\n addEle(edge, sqDist);\n return true;\n }\n }\n } else if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') {\n var pts = rs.allpts;\n for (var i = 0; i + 5 < rs.allpts.length; i += 4) {\n if (inBezierVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5], width2) && widthSq > (sqDist = sqdistToQuadraticBezier(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5]))) {\n addEle(edge, sqDist);\n return true;\n }\n }\n }\n\n // if we're close to the edge but didn't hit it, maybe we hit its arrows\n\n var src = src || _p.source;\n var tgt = tgt || _p.target;\n var arSize = self.getArrowWidth(styleWidth, scale);\n var arrows = [{\n name: 'source',\n x: rs.arrowStartX,\n y: rs.arrowStartY,\n angle: rs.srcArrowAngle\n }, {\n name: 'target',\n x: rs.arrowEndX,\n y: rs.arrowEndY,\n angle: rs.tgtArrowAngle\n }, {\n name: 'mid-source',\n x: rs.midX,\n y: rs.midY,\n angle: rs.midsrcArrowAngle\n }, {\n name: 'mid-target',\n x: rs.midX,\n y: rs.midY,\n angle: rs.midtgtArrowAngle\n }];\n for (var i = 0; i < arrows.length; i++) {\n var ar = arrows[i];\n var shape = r.arrowShapes[edge.pstyle(ar.name + '-arrow-shape').value];\n var edgeWidth = edge.pstyle('width').pfValue;\n if (shape.roughCollide(x, y, arSize, ar.angle, {\n x: ar.x,\n y: ar.y\n }, edgeWidth, edgeThreshold) && shape.collide(x, y, arSize, ar.angle, {\n x: ar.x,\n y: ar.y\n }, edgeWidth, edgeThreshold)) {\n addEle(edge);\n return true;\n }\n }\n\n // for compound graphs, hitting edge may actually want a connected node instead (b/c edge may have greater z-index precedence)\n if (hasCompounds && near.length > 0) {\n checkNode(src);\n checkNode(tgt);\n }\n }\n function preprop(obj, name, pre) {\n return getPrefixedProperty(obj, name, pre);\n }\n function checkLabel(ele, prefix) {\n var _p = ele._private;\n var th = labelThreshold;\n var prefixDash;\n if (prefix) {\n prefixDash = prefix + '-';\n } else {\n prefixDash = '';\n }\n ele.boundingBox();\n var bb = _p.labelBounds[prefix || 'main'];\n var text = ele.pstyle(prefixDash + 'label').value;\n var eventsEnabled = ele.pstyle('text-events').strValue === 'yes';\n if (!eventsEnabled || !text) {\n return;\n }\n var lx = preprop(_p.rscratch, 'labelX', prefix);\n var ly = preprop(_p.rscratch, 'labelY', prefix);\n var theta = preprop(_p.rscratch, 'labelAngle', prefix);\n var ox = ele.pstyle(prefixDash + 'text-margin-x').pfValue;\n var oy = ele.pstyle(prefixDash + 'text-margin-y').pfValue;\n var lx1 = bb.x1 - th - ox; // (-ox, -oy) as bb already includes margin\n var lx2 = bb.x2 + th - ox; // and rotation is about (lx, ly)\n var ly1 = bb.y1 - th - oy;\n var ly2 = bb.y2 + th - oy;\n if (theta) {\n var cos = Math.cos(theta);\n var sin = Math.sin(theta);\n var rotate = function rotate(x, y) {\n x = x - lx;\n y = y - ly;\n return {\n x: x * cos - y * sin + lx,\n y: x * sin + y * cos + ly\n };\n };\n var px1y1 = rotate(lx1, ly1);\n var px1y2 = rotate(lx1, ly2);\n var px2y1 = rotate(lx2, ly1);\n var px2y2 = rotate(lx2, ly2);\n var points = [\n // with the margin added after the rotation is applied\n px1y1.x + ox, px1y1.y + oy, px2y1.x + ox, px2y1.y + oy, px2y2.x + ox, px2y2.y + oy, px1y2.x + ox, px1y2.y + oy];\n if (pointInsidePolygonPoints(x, y, points)) {\n addEle(ele);\n return true;\n }\n } else {\n // do a cheaper bb check\n if (inBoundingBox(bb, x, y)) {\n addEle(ele);\n return true;\n }\n }\n }\n for (var i = eles.length - 1; i >= 0; i--) {\n // reverse order for precedence\n var ele = eles[i];\n if (ele.isNode()) {\n checkNode(ele) || checkLabel(ele);\n } else {\n // then edge\n checkEdge(ele) || checkLabel(ele) || checkLabel(ele, 'source') || checkLabel(ele, 'target');\n }\n }\n return near;\n};\n\n// 'Give me everything from this box'\nBRp$e.getAllInBox = function (x1, y1, x2, y2) {\n var eles = this.getCachedZSortedEles().interactive;\n var box = [];\n var x1c = Math.min(x1, x2);\n var x2c = Math.max(x1, x2);\n var y1c = Math.min(y1, y2);\n var y2c = Math.max(y1, y2);\n x1 = x1c;\n x2 = x2c;\n y1 = y1c;\n y2 = y2c;\n var boxBb = makeBoundingBox({\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n });\n for (var e = 0; e < eles.length; e++) {\n var ele = eles[e];\n if (ele.isNode()) {\n var node = ele;\n var nodeBb = node.boundingBox({\n includeNodes: true,\n includeEdges: false,\n includeLabels: false\n });\n if (boundingBoxesIntersect(boxBb, nodeBb) && !boundingBoxInBoundingBox(nodeBb, boxBb)) {\n box.push(node);\n }\n } else {\n var edge = ele;\n var _p = edge._private;\n var rs = _p.rscratch;\n if (rs.startX != null && rs.startY != null && !inBoundingBox(boxBb, rs.startX, rs.startY)) {\n continue;\n }\n if (rs.endX != null && rs.endY != null && !inBoundingBox(boxBb, rs.endX, rs.endY)) {\n continue;\n }\n if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound' || rs.edgeType === 'segments' || rs.edgeType === 'haystack') {\n var pts = _p.rstyle.bezierPts || _p.rstyle.linePts || _p.rstyle.haystackPts;\n var allInside = true;\n for (var i = 0; i < pts.length; i++) {\n if (!pointInBoundingBox(boxBb, pts[i])) {\n allInside = false;\n break;\n }\n }\n if (allInside) {\n box.push(edge);\n }\n } else if (rs.edgeType === 'haystack' || rs.edgeType === 'straight') {\n box.push(edge);\n }\n }\n }\n return box;\n};\n\nvar BRp$d = {};\nBRp$d.calculateArrowAngles = function (edge) {\n var rs = edge._private.rscratch;\n var isHaystack = rs.edgeType === 'haystack';\n var isBezier = rs.edgeType === 'bezier';\n var isMultibezier = rs.edgeType === 'multibezier';\n var isSegments = rs.edgeType === 'segments';\n var isCompound = rs.edgeType === 'compound';\n var isSelf = rs.edgeType === 'self';\n\n // Displacement gives direction for arrowhead orientation\n var dispX, dispY;\n var startX, startY, endX, endY, midX, midY;\n if (isHaystack) {\n startX = rs.haystackPts[0];\n startY = rs.haystackPts[1];\n endX = rs.haystackPts[2];\n endY = rs.haystackPts[3];\n } else {\n startX = rs.arrowStartX;\n startY = rs.arrowStartY;\n endX = rs.arrowEndX;\n endY = rs.arrowEndY;\n }\n midX = rs.midX;\n midY = rs.midY;\n\n // source\n //\n\n if (isSegments) {\n dispX = startX - rs.segpts[0];\n dispY = startY - rs.segpts[1];\n } else if (isMultibezier || isCompound || isSelf || isBezier) {\n var pts = rs.allpts;\n var bX = qbezierAt(pts[0], pts[2], pts[4], 0.1);\n var bY = qbezierAt(pts[1], pts[3], pts[5], 0.1);\n dispX = startX - bX;\n dispY = startY - bY;\n } else {\n dispX = startX - midX;\n dispY = startY - midY;\n }\n rs.srcArrowAngle = getAngleFromDisp(dispX, dispY);\n\n // mid target\n //\n\n var midX = rs.midX;\n var midY = rs.midY;\n if (isHaystack) {\n midX = (startX + endX) / 2;\n midY = (startY + endY) / 2;\n }\n dispX = endX - startX;\n dispY = endY - startY;\n if (isSegments) {\n var pts = rs.allpts;\n if (pts.length / 2 % 2 === 0) {\n var i2 = pts.length / 2;\n var i1 = i2 - 2;\n dispX = pts[i2] - pts[i1];\n dispY = pts[i2 + 1] - pts[i1 + 1];\n } else {\n var i2 = pts.length / 2 - 1;\n var i1 = i2 - 2;\n var i3 = i2 + 2;\n dispX = pts[i2] - pts[i1];\n dispY = pts[i2 + 1] - pts[i1 + 1];\n }\n } else if (isMultibezier || isCompound || isSelf) {\n var pts = rs.allpts;\n var cpts = rs.ctrlpts;\n var bp0x, bp0y;\n var bp1x, bp1y;\n if (cpts.length / 2 % 2 === 0) {\n var p0 = pts.length / 2 - 1; // startpt\n var ic = p0 + 2;\n var p1 = ic + 2;\n bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0);\n bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0);\n bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0001);\n bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0001);\n } else {\n var ic = pts.length / 2 - 1; // ctrpt\n var p0 = ic - 2; // startpt\n var p1 = ic + 2; // endpt\n\n bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.4999);\n bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.4999);\n bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.5);\n bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.5);\n }\n dispX = bp1x - bp0x;\n dispY = bp1y - bp0y;\n }\n rs.midtgtArrowAngle = getAngleFromDisp(dispX, dispY);\n rs.midDispX = dispX;\n rs.midDispY = dispY;\n\n // mid source\n //\n\n dispX *= -1;\n dispY *= -1;\n if (isSegments) {\n var pts = rs.allpts;\n if (pts.length / 2 % 2 === 0) ; else {\n var i2 = pts.length / 2 - 1;\n var i3 = i2 + 2;\n dispX = -(pts[i3] - pts[i2]);\n dispY = -(pts[i3 + 1] - pts[i2 + 1]);\n }\n }\n rs.midsrcArrowAngle = getAngleFromDisp(dispX, dispY);\n\n // target\n //\n\n if (isSegments) {\n dispX = endX - rs.segpts[rs.segpts.length - 2];\n dispY = endY - rs.segpts[rs.segpts.length - 1];\n } else if (isMultibezier || isCompound || isSelf || isBezier) {\n var pts = rs.allpts;\n var l = pts.length;\n var bX = qbezierAt(pts[l - 6], pts[l - 4], pts[l - 2], 0.9);\n var bY = qbezierAt(pts[l - 5], pts[l - 3], pts[l - 1], 0.9);\n dispX = endX - bX;\n dispY = endY - bY;\n } else {\n dispX = endX - midX;\n dispY = endY - midY;\n }\n rs.tgtArrowAngle = getAngleFromDisp(dispX, dispY);\n};\nBRp$d.getArrowWidth = BRp$d.getArrowHeight = function (edgeWidth, scale) {\n var cache = this.arrowWidthCache = this.arrowWidthCache || {};\n var cachedVal = cache[edgeWidth + ', ' + scale];\n if (cachedVal) {\n return cachedVal;\n }\n cachedVal = Math.max(Math.pow(edgeWidth * 13.37, 0.9), 29) * scale;\n cache[edgeWidth + ', ' + scale] = cachedVal;\n return cachedVal;\n};\n\nvar BRp$c = {};\nBRp$c.findMidptPtsEtc = function (edge, pairInfo) {\n var posPts = pairInfo.posPts,\n intersectionPts = pairInfo.intersectionPts,\n vectorNormInverse = pairInfo.vectorNormInverse;\n var midptPts;\n\n // n.b. assumes all edges in bezier bundle have same endpoints specified\n var srcManEndpt = edge.pstyle('source-endpoint');\n var tgtManEndpt = edge.pstyle('target-endpoint');\n var haveManualEndPts = srcManEndpt.units != null && tgtManEndpt.units != null;\n var recalcVectorNormInverse = function recalcVectorNormInverse(x1, y1, x2, y2) {\n var dy = y2 - y1;\n var dx = x2 - x1;\n var l = Math.sqrt(dx * dx + dy * dy);\n return {\n x: -dy / l,\n y: dx / l\n };\n };\n var edgeDistances = edge.pstyle('edge-distances').value;\n switch (edgeDistances) {\n case 'node-position':\n midptPts = posPts;\n break;\n case 'intersection':\n midptPts = intersectionPts;\n break;\n case 'endpoints':\n {\n if (haveManualEndPts) {\n var _this$manualEndptToPx = this.manualEndptToPx(edge.source()[0], srcManEndpt),\n _this$manualEndptToPx2 = _slicedToArray(_this$manualEndptToPx, 2),\n x1 = _this$manualEndptToPx2[0],\n y1 = _this$manualEndptToPx2[1];\n var _this$manualEndptToPx3 = this.manualEndptToPx(edge.target()[0], tgtManEndpt),\n _this$manualEndptToPx4 = _slicedToArray(_this$manualEndptToPx3, 2),\n x2 = _this$manualEndptToPx4[0],\n y2 = _this$manualEndptToPx4[1];\n var endPts = {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n };\n vectorNormInverse = recalcVectorNormInverse(x1, y1, x2, y2);\n midptPts = endPts;\n } else {\n warn(\"Edge \".concat(edge.id(), \" has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).\"));\n midptPts = intersectionPts; // back to default\n }\n\n break;\n }\n }\n return {\n midptPts: midptPts,\n vectorNormInverse: vectorNormInverse\n };\n};\nBRp$c.findHaystackPoints = function (edges) {\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n var _p = edge._private;\n var rs = _p.rscratch;\n if (!rs.haystack) {\n var angle = Math.random() * 2 * Math.PI;\n rs.source = {\n x: Math.cos(angle),\n y: Math.sin(angle)\n };\n angle = Math.random() * 2 * Math.PI;\n rs.target = {\n x: Math.cos(angle),\n y: Math.sin(angle)\n };\n }\n var src = _p.source;\n var tgt = _p.target;\n var srcPos = src.position();\n var tgtPos = tgt.position();\n var srcW = src.width();\n var tgtW = tgt.width();\n var srcH = src.height();\n var tgtH = tgt.height();\n var radius = edge.pstyle('haystack-radius').value;\n var halfRadius = radius / 2; // b/c have to half width/height\n\n rs.haystackPts = rs.allpts = [rs.source.x * srcW * halfRadius + srcPos.x, rs.source.y * srcH * halfRadius + srcPos.y, rs.target.x * tgtW * halfRadius + tgtPos.x, rs.target.y * tgtH * halfRadius + tgtPos.y];\n rs.midX = (rs.allpts[0] + rs.allpts[2]) / 2;\n rs.midY = (rs.allpts[1] + rs.allpts[3]) / 2;\n\n // always override as haystack in case set to different type previously\n rs.edgeType = 'haystack';\n rs.haystack = true;\n this.storeEdgeProjections(edge);\n this.calculateArrowAngles(edge);\n this.recalculateEdgeLabelProjections(edge);\n this.calculateLabelAngles(edge);\n }\n};\nBRp$c.findSegmentsPoints = function (edge, pairInfo) {\n // Segments (multiple straight lines)\n\n var rs = edge._private.rscratch;\n var segmentWs = edge.pstyle('segment-weights');\n var segmentDs = edge.pstyle('segment-distances');\n var segmentsN = Math.min(segmentWs.pfValue.length, segmentDs.pfValue.length);\n rs.edgeType = 'segments';\n rs.segpts = [];\n for (var s = 0; s < segmentsN; s++) {\n var w = segmentWs.pfValue[s];\n var d = segmentDs.pfValue[s];\n var w1 = 1 - w;\n var w2 = w;\n var _this$findMidptPtsEtc = this.findMidptPtsEtc(edge, pairInfo),\n midptPts = _this$findMidptPtsEtc.midptPts,\n vectorNormInverse = _this$findMidptPtsEtc.vectorNormInverse;\n var adjustedMidpt = {\n x: midptPts.x1 * w1 + midptPts.x2 * w2,\n y: midptPts.y1 * w1 + midptPts.y2 * w2\n };\n rs.segpts.push(adjustedMidpt.x + vectorNormInverse.x * d, adjustedMidpt.y + vectorNormInverse.y * d);\n }\n};\nBRp$c.findLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) {\n // Self-edge\n\n var rs = edge._private.rscratch;\n var dirCounts = pairInfo.dirCounts,\n srcPos = pairInfo.srcPos;\n var ctrlptDists = edge.pstyle('control-point-distances');\n var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined;\n var loopDir = edge.pstyle('loop-direction').pfValue;\n var loopSwp = edge.pstyle('loop-sweep').pfValue;\n var stepSize = edge.pstyle('control-point-step-size').pfValue;\n rs.edgeType = 'self';\n var j = i;\n var loopDist = stepSize;\n if (edgeIsUnbundled) {\n j = 0;\n loopDist = ctrlptDist;\n }\n var loopAngle = loopDir - Math.PI / 2;\n var outAngle = loopAngle - loopSwp / 2;\n var inAngle = loopAngle + loopSwp / 2;\n\n // increase by step size for overlapping loops, keyed on direction and sweep values\n var dc = String(loopDir + '_' + loopSwp);\n j = dirCounts[dc] === undefined ? dirCounts[dc] = 0 : ++dirCounts[dc];\n rs.ctrlpts = [srcPos.x + Math.cos(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.x + Math.cos(inAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(inAngle) * 1.4 * loopDist * (j / 3 + 1)];\n};\nBRp$c.findCompoundLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) {\n // Compound edge\n\n var rs = edge._private.rscratch;\n rs.edgeType = 'compound';\n var srcPos = pairInfo.srcPos,\n tgtPos = pairInfo.tgtPos,\n srcW = pairInfo.srcW,\n srcH = pairInfo.srcH,\n tgtW = pairInfo.tgtW,\n tgtH = pairInfo.tgtH;\n var stepSize = edge.pstyle('control-point-step-size').pfValue;\n var ctrlptDists = edge.pstyle('control-point-distances');\n var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined;\n var j = i;\n var loopDist = stepSize;\n if (edgeIsUnbundled) {\n j = 0;\n loopDist = ctrlptDist;\n }\n var loopW = 50;\n var loopaPos = {\n x: srcPos.x - srcW / 2,\n y: srcPos.y - srcH / 2\n };\n var loopbPos = {\n x: tgtPos.x - tgtW / 2,\n y: tgtPos.y - tgtH / 2\n };\n var loopPos = {\n x: Math.min(loopaPos.x, loopbPos.x),\n y: Math.min(loopaPos.y, loopbPos.y)\n };\n\n // avoids cases with impossible beziers\n var minCompoundStretch = 0.5;\n var compoundStretchA = Math.max(minCompoundStretch, Math.log(srcW * 0.01));\n var compoundStretchB = Math.max(minCompoundStretch, Math.log(tgtW * 0.01));\n rs.ctrlpts = [loopPos.x, loopPos.y - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchA, loopPos.x - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchB, loopPos.y];\n};\nBRp$c.findStraightEdgePoints = function (edge) {\n // Straight edge within bundle\n\n edge._private.rscratch.edgeType = 'straight';\n};\nBRp$c.findBezierPoints = function (edge, pairInfo, i, edgeIsUnbundled, edgeIsSwapped) {\n var rs = edge._private.rscratch;\n var stepSize = edge.pstyle('control-point-step-size').pfValue;\n var ctrlptDists = edge.pstyle('control-point-distances');\n var ctrlptWs = edge.pstyle('control-point-weights');\n var bezierN = ctrlptDists && ctrlptWs ? Math.min(ctrlptDists.value.length, ctrlptWs.value.length) : 1;\n var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined;\n var ctrlptWeight = ctrlptWs.value[0];\n\n // (Multi)bezier\n\n var multi = edgeIsUnbundled;\n rs.edgeType = multi ? 'multibezier' : 'bezier';\n rs.ctrlpts = [];\n for (var b = 0; b < bezierN; b++) {\n var normctrlptDist = (0.5 - pairInfo.eles.length / 2 + i) * stepSize * (edgeIsSwapped ? -1 : 1);\n var manctrlptDist = void 0;\n var sign = signum(normctrlptDist);\n if (multi) {\n ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[b] : stepSize; // fall back on step size\n ctrlptWeight = ctrlptWs.value[b];\n }\n if (edgeIsUnbundled) {\n // multi or single unbundled\n manctrlptDist = ctrlptDist;\n } else {\n manctrlptDist = ctrlptDist !== undefined ? sign * ctrlptDist : undefined;\n }\n var distanceFromMidpoint = manctrlptDist !== undefined ? manctrlptDist : normctrlptDist;\n var w1 = 1 - ctrlptWeight;\n var w2 = ctrlptWeight;\n var _this$findMidptPtsEtc2 = this.findMidptPtsEtc(edge, pairInfo),\n midptPts = _this$findMidptPtsEtc2.midptPts,\n vectorNormInverse = _this$findMidptPtsEtc2.vectorNormInverse;\n var adjustedMidpt = {\n x: midptPts.x1 * w1 + midptPts.x2 * w2,\n y: midptPts.y1 * w1 + midptPts.y2 * w2\n };\n rs.ctrlpts.push(adjustedMidpt.x + vectorNormInverse.x * distanceFromMidpoint, adjustedMidpt.y + vectorNormInverse.y * distanceFromMidpoint);\n }\n};\nBRp$c.findTaxiPoints = function (edge, pairInfo) {\n // Taxicab geometry with two turns maximum\n\n var rs = edge._private.rscratch;\n rs.edgeType = 'segments';\n var VERTICAL = 'vertical';\n var HORIZONTAL = 'horizontal';\n var LEFTWARD = 'leftward';\n var RIGHTWARD = 'rightward';\n var DOWNWARD = 'downward';\n var UPWARD = 'upward';\n var AUTO = 'auto';\n var posPts = pairInfo.posPts,\n srcW = pairInfo.srcW,\n srcH = pairInfo.srcH,\n tgtW = pairInfo.tgtW,\n tgtH = pairInfo.tgtH;\n var edgeDistances = edge.pstyle('edge-distances').value;\n var dIncludesNodeBody = edgeDistances !== 'node-position';\n var taxiDir = edge.pstyle('taxi-direction').value;\n var rawTaxiDir = taxiDir; // unprocessed value\n var taxiTurn = edge.pstyle('taxi-turn');\n var turnIsPercent = taxiTurn.units === '%';\n var taxiTurnPfVal = taxiTurn.pfValue;\n var turnIsNegative = taxiTurnPfVal < 0; // i.e. from target side\n var minD = edge.pstyle('taxi-turn-min-distance').pfValue;\n var dw = dIncludesNodeBody ? (srcW + tgtW) / 2 : 0;\n var dh = dIncludesNodeBody ? (srcH + tgtH) / 2 : 0;\n var pdx = posPts.x2 - posPts.x1;\n var pdy = posPts.y2 - posPts.y1;\n\n // take away the effective w/h from the magnitude of the delta value\n var subDWH = function subDWH(dxy, dwh) {\n if (dxy > 0) {\n return Math.max(dxy - dwh, 0);\n } else {\n return Math.min(dxy + dwh, 0);\n }\n };\n var dx = subDWH(pdx, dw);\n var dy = subDWH(pdy, dh);\n var isExplicitDir = false;\n if (rawTaxiDir === AUTO) {\n taxiDir = Math.abs(dx) > Math.abs(dy) ? HORIZONTAL : VERTICAL;\n } else if (rawTaxiDir === UPWARD || rawTaxiDir === DOWNWARD) {\n taxiDir = VERTICAL;\n isExplicitDir = true;\n } else if (rawTaxiDir === LEFTWARD || rawTaxiDir === RIGHTWARD) {\n taxiDir = HORIZONTAL;\n isExplicitDir = true;\n }\n var isVert = taxiDir === VERTICAL;\n var l = isVert ? dy : dx;\n var pl = isVert ? pdy : pdx;\n var sgnL = signum(pl);\n var forcedDir = false;\n if (!(isExplicitDir && (turnIsPercent || turnIsNegative)) // forcing in this case would cause weird growing in the opposite direction\n && (rawTaxiDir === DOWNWARD && pl < 0 || rawTaxiDir === UPWARD && pl > 0 || rawTaxiDir === LEFTWARD && pl > 0 || rawTaxiDir === RIGHTWARD && pl < 0)) {\n sgnL *= -1;\n l = sgnL * Math.abs(l);\n forcedDir = true;\n }\n var d;\n if (turnIsPercent) {\n var p = taxiTurnPfVal < 0 ? 1 + taxiTurnPfVal : taxiTurnPfVal;\n d = p * l;\n } else {\n var k = taxiTurnPfVal < 0 ? l : 0;\n d = k + taxiTurnPfVal * sgnL;\n }\n var getIsTooClose = function getIsTooClose(d) {\n return Math.abs(d) < minD || Math.abs(d) >= Math.abs(l);\n };\n var isTooCloseSrc = getIsTooClose(d);\n var isTooCloseTgt = getIsTooClose(Math.abs(l) - Math.abs(d));\n var isTooClose = isTooCloseSrc || isTooCloseTgt;\n if (isTooClose && !forcedDir) {\n // non-ideal routing\n if (isVert) {\n // vertical fallbacks\n var lShapeInsideSrc = Math.abs(pl) <= srcH / 2;\n var lShapeInsideTgt = Math.abs(pdx) <= tgtW / 2;\n if (lShapeInsideSrc) {\n // horizontal Z-shape (direction not respected)\n var x = (posPts.x1 + posPts.x2) / 2;\n var y1 = posPts.y1,\n y2 = posPts.y2;\n rs.segpts = [x, y1, x, y2];\n } else if (lShapeInsideTgt) {\n // vertical Z-shape (distance not respected)\n var y = (posPts.y1 + posPts.y2) / 2;\n var x1 = posPts.x1,\n x2 = posPts.x2;\n rs.segpts = [x1, y, x2, y];\n } else {\n // L-shape fallback (turn distance not respected, but works well with tree siblings)\n rs.segpts = [posPts.x1, posPts.y2];\n }\n } else {\n // horizontal fallbacks\n var _lShapeInsideSrc = Math.abs(pl) <= srcW / 2;\n var _lShapeInsideTgt = Math.abs(pdy) <= tgtH / 2;\n if (_lShapeInsideSrc) {\n // vertical Z-shape (direction not respected)\n var _y = (posPts.y1 + posPts.y2) / 2;\n var _x = posPts.x1,\n _x2 = posPts.x2;\n rs.segpts = [_x, _y, _x2, _y];\n } else if (_lShapeInsideTgt) {\n // horizontal Z-shape (turn distance not respected)\n var _x3 = (posPts.x1 + posPts.x2) / 2;\n var _y2 = posPts.y1,\n _y3 = posPts.y2;\n rs.segpts = [_x3, _y2, _x3, _y3];\n } else {\n // L-shape (turn distance not respected, but works well for tree siblings)\n rs.segpts = [posPts.x2, posPts.y1];\n }\n }\n } else {\n // ideal routing\n if (isVert) {\n var _y4 = posPts.y1 + d + (dIncludesNodeBody ? srcH / 2 * sgnL : 0);\n var _x4 = posPts.x1,\n _x5 = posPts.x2;\n rs.segpts = [_x4, _y4, _x5, _y4];\n } else {\n // horizontal\n var _x6 = posPts.x1 + d + (dIncludesNodeBody ? srcW / 2 * sgnL : 0);\n var _y5 = posPts.y1,\n _y6 = posPts.y2;\n rs.segpts = [_x6, _y5, _x6, _y6];\n }\n }\n};\nBRp$c.tryToCorrectInvalidPoints = function (edge, pairInfo) {\n var rs = edge._private.rscratch;\n\n // can only correct beziers for now...\n if (rs.edgeType === 'bezier') {\n var srcPos = pairInfo.srcPos,\n tgtPos = pairInfo.tgtPos,\n srcW = pairInfo.srcW,\n srcH = pairInfo.srcH,\n tgtW = pairInfo.tgtW,\n tgtH = pairInfo.tgtH,\n srcShape = pairInfo.srcShape,\n tgtShape = pairInfo.tgtShape;\n var badStart = !number$1(rs.startX) || !number$1(rs.startY);\n var badAStart = !number$1(rs.arrowStartX) || !number$1(rs.arrowStartY);\n var badEnd = !number$1(rs.endX) || !number$1(rs.endY);\n var badAEnd = !number$1(rs.arrowEndX) || !number$1(rs.arrowEndY);\n var minCpADistFactor = 3;\n var arrowW = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth;\n var minCpADist = minCpADistFactor * arrowW;\n var startACpDist = dist({\n x: rs.ctrlpts[0],\n y: rs.ctrlpts[1]\n }, {\n x: rs.startX,\n y: rs.startY\n });\n var closeStartACp = startACpDist < minCpADist;\n var endACpDist = dist({\n x: rs.ctrlpts[0],\n y: rs.ctrlpts[1]\n }, {\n x: rs.endX,\n y: rs.endY\n });\n var closeEndACp = endACpDist < minCpADist;\n var overlapping = false;\n if (badStart || badAStart || closeStartACp) {\n overlapping = true;\n\n // project control point along line from src centre to outside the src shape\n // (otherwise intersection will yield nothing)\n var cpD = {\n // delta\n x: rs.ctrlpts[0] - srcPos.x,\n y: rs.ctrlpts[1] - srcPos.y\n };\n var cpL = Math.sqrt(cpD.x * cpD.x + cpD.y * cpD.y); // length of line\n var cpM = {\n // normalised delta\n x: cpD.x / cpL,\n y: cpD.y / cpL\n };\n var radius = Math.max(srcW, srcH);\n var cpProj = {\n // *2 radius guarantees outside shape\n x: rs.ctrlpts[0] + cpM.x * 2 * radius,\n y: rs.ctrlpts[1] + cpM.y * 2 * radius\n };\n var srcCtrlPtIntn = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, cpProj.x, cpProj.y, 0);\n if (closeStartACp) {\n rs.ctrlpts[0] = rs.ctrlpts[0] + cpM.x * (minCpADist - startACpDist);\n rs.ctrlpts[1] = rs.ctrlpts[1] + cpM.y * (minCpADist - startACpDist);\n } else {\n rs.ctrlpts[0] = srcCtrlPtIntn[0] + cpM.x * minCpADist;\n rs.ctrlpts[1] = srcCtrlPtIntn[1] + cpM.y * minCpADist;\n }\n }\n if (badEnd || badAEnd || closeEndACp) {\n overlapping = true;\n\n // project control point along line from tgt centre to outside the tgt shape\n // (otherwise intersection will yield nothing)\n var _cpD = {\n // delta\n x: rs.ctrlpts[0] - tgtPos.x,\n y: rs.ctrlpts[1] - tgtPos.y\n };\n var _cpL = Math.sqrt(_cpD.x * _cpD.x + _cpD.y * _cpD.y); // length of line\n var _cpM = {\n // normalised delta\n x: _cpD.x / _cpL,\n y: _cpD.y / _cpL\n };\n var _radius = Math.max(srcW, srcH);\n var _cpProj = {\n // *2 radius guarantees outside shape\n x: rs.ctrlpts[0] + _cpM.x * 2 * _radius,\n y: rs.ctrlpts[1] + _cpM.y * 2 * _radius\n };\n var tgtCtrlPtIntn = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, _cpProj.x, _cpProj.y, 0);\n if (closeEndACp) {\n rs.ctrlpts[0] = rs.ctrlpts[0] + _cpM.x * (minCpADist - endACpDist);\n rs.ctrlpts[1] = rs.ctrlpts[1] + _cpM.y * (minCpADist - endACpDist);\n } else {\n rs.ctrlpts[0] = tgtCtrlPtIntn[0] + _cpM.x * minCpADist;\n rs.ctrlpts[1] = tgtCtrlPtIntn[1] + _cpM.y * minCpADist;\n }\n }\n if (overlapping) {\n // recalc endpts\n this.findEndpoints(edge);\n }\n }\n};\nBRp$c.storeAllpts = function (edge) {\n var rs = edge._private.rscratch;\n if (rs.edgeType === 'multibezier' || rs.edgeType === 'bezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') {\n rs.allpts = [];\n rs.allpts.push(rs.startX, rs.startY);\n for (var b = 0; b + 1 < rs.ctrlpts.length; b += 2) {\n // ctrl pt itself\n rs.allpts.push(rs.ctrlpts[b], rs.ctrlpts[b + 1]);\n\n // the midpt between ctrlpts as intermediate destination pts\n if (b + 3 < rs.ctrlpts.length) {\n rs.allpts.push((rs.ctrlpts[b] + rs.ctrlpts[b + 2]) / 2, (rs.ctrlpts[b + 1] + rs.ctrlpts[b + 3]) / 2);\n }\n }\n rs.allpts.push(rs.endX, rs.endY);\n var m, mt;\n if (rs.ctrlpts.length / 2 % 2 === 0) {\n m = rs.allpts.length / 2 - 1;\n rs.midX = rs.allpts[m];\n rs.midY = rs.allpts[m + 1];\n } else {\n m = rs.allpts.length / 2 - 3;\n mt = 0.5;\n rs.midX = qbezierAt(rs.allpts[m], rs.allpts[m + 2], rs.allpts[m + 4], mt);\n rs.midY = qbezierAt(rs.allpts[m + 1], rs.allpts[m + 3], rs.allpts[m + 5], mt);\n }\n } else if (rs.edgeType === 'straight') {\n // need to calc these after endpts\n rs.allpts = [rs.startX, rs.startY, rs.endX, rs.endY];\n\n // default midpt for labels etc\n rs.midX = (rs.startX + rs.endX + rs.arrowStartX + rs.arrowEndX) / 4;\n rs.midY = (rs.startY + rs.endY + rs.arrowStartY + rs.arrowEndY) / 4;\n } else if (rs.edgeType === 'segments') {\n rs.allpts = [];\n rs.allpts.push(rs.startX, rs.startY);\n rs.allpts.push.apply(rs.allpts, rs.segpts);\n rs.allpts.push(rs.endX, rs.endY);\n if (rs.segpts.length % 4 === 0) {\n var i2 = rs.segpts.length / 2;\n var i1 = i2 - 2;\n rs.midX = (rs.segpts[i1] + rs.segpts[i2]) / 2;\n rs.midY = (rs.segpts[i1 + 1] + rs.segpts[i2 + 1]) / 2;\n } else {\n var _i = rs.segpts.length / 2 - 1;\n rs.midX = rs.segpts[_i];\n rs.midY = rs.segpts[_i + 1];\n }\n }\n};\nBRp$c.checkForInvalidEdgeWarning = function (edge) {\n var rs = edge[0]._private.rscratch;\n if (rs.nodesOverlap || number$1(rs.startX) && number$1(rs.startY) && number$1(rs.endX) && number$1(rs.endY)) {\n rs.loggedErr = false;\n } else {\n if (!rs.loggedErr) {\n rs.loggedErr = true;\n warn('Edge `' + edge.id() + '` has invalid endpoints and so it is impossible to draw. Adjust your edge style (e.g. control points) accordingly or use an alternative edge type. This is expected behaviour when the source node and the target node overlap.');\n }\n }\n};\nBRp$c.findEdgeControlPoints = function (edges) {\n var _this = this;\n if (!edges || edges.length === 0) {\n return;\n }\n var r = this;\n var cy = r.cy;\n var hasCompounds = cy.hasCompoundNodes();\n var hashTable = {\n map: new Map$1(),\n get: function get(pairId) {\n var map2 = this.map.get(pairId[0]);\n if (map2 != null) {\n return map2.get(pairId[1]);\n } else {\n return null;\n }\n },\n set: function set(pairId, val) {\n var map2 = this.map.get(pairId[0]);\n if (map2 == null) {\n map2 = new Map$1();\n this.map.set(pairId[0], map2);\n }\n map2.set(pairId[1], val);\n }\n };\n var pairIds = [];\n var haystackEdges = [];\n\n // create a table of edge (src, tgt) => list of edges between them\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n var _p = edge._private;\n var curveStyle = edge.pstyle('curve-style').value;\n\n // ignore edges who are not to be displayed\n // they shouldn't take up space\n if (edge.removed() || !edge.takesUpSpace()) {\n continue;\n }\n if (curveStyle === 'haystack') {\n haystackEdges.push(edge);\n continue;\n }\n var edgeIsUnbundled = curveStyle === 'unbundled-bezier' || curveStyle === 'segments' || curveStyle === 'straight' || curveStyle === 'straight-triangle' || curveStyle === 'taxi';\n var edgeIsBezier = curveStyle === 'unbundled-bezier' || curveStyle === 'bezier';\n var src = _p.source;\n var tgt = _p.target;\n var srcIndex = src.poolIndex();\n var tgtIndex = tgt.poolIndex();\n var pairId = [srcIndex, tgtIndex].sort();\n var tableEntry = hashTable.get(pairId);\n if (tableEntry == null) {\n tableEntry = {\n eles: []\n };\n hashTable.set(pairId, tableEntry);\n pairIds.push(pairId);\n }\n tableEntry.eles.push(edge);\n if (edgeIsUnbundled) {\n tableEntry.hasUnbundled = true;\n }\n if (edgeIsBezier) {\n tableEntry.hasBezier = true;\n }\n }\n\n // for each pair (src, tgt), create the ctrl pts\n // Nested for loop is OK; total number of iterations for both loops = edgeCount\n var _loop = function _loop(p) {\n var pairId = pairIds[p];\n var pairInfo = hashTable.get(pairId);\n var swappedpairInfo = void 0;\n if (!pairInfo.hasUnbundled) {\n var pllEdges = pairInfo.eles[0].parallelEdges().filter(function (e) {\n return e.isBundledBezier();\n });\n clearArray(pairInfo.eles);\n pllEdges.forEach(function (edge) {\n return pairInfo.eles.push(edge);\n });\n\n // for each pair id, the edges should be sorted by index\n pairInfo.eles.sort(function (edge1, edge2) {\n return edge1.poolIndex() - edge2.poolIndex();\n });\n }\n var firstEdge = pairInfo.eles[0];\n var src = firstEdge.source();\n var tgt = firstEdge.target();\n\n // make sure src/tgt distinction is consistent w.r.t. pairId\n if (src.poolIndex() > tgt.poolIndex()) {\n var temp = src;\n src = tgt;\n tgt = temp;\n }\n var srcPos = pairInfo.srcPos = src.position();\n var tgtPos = pairInfo.tgtPos = tgt.position();\n var srcW = pairInfo.srcW = src.outerWidth();\n var srcH = pairInfo.srcH = src.outerHeight();\n var tgtW = pairInfo.tgtW = tgt.outerWidth();\n var tgtH = pairInfo.tgtH = tgt.outerHeight();\n var srcShape = pairInfo.srcShape = r.nodeShapes[_this.getNodeShape(src)];\n var tgtShape = pairInfo.tgtShape = r.nodeShapes[_this.getNodeShape(tgt)];\n pairInfo.dirCounts = {\n 'north': 0,\n 'west': 0,\n 'south': 0,\n 'east': 0,\n 'northwest': 0,\n 'southwest': 0,\n 'northeast': 0,\n 'southeast': 0\n };\n for (var _i2 = 0; _i2 < pairInfo.eles.length; _i2++) {\n var _edge = pairInfo.eles[_i2];\n var rs = _edge[0]._private.rscratch;\n var _curveStyle = _edge.pstyle('curve-style').value;\n var _edgeIsUnbundled = _curveStyle === 'unbundled-bezier' || _curveStyle === 'segments' || _curveStyle === 'taxi';\n\n // whether the normalised pair order is the reverse of the edge's src-tgt order\n var edgeIsSwapped = !src.same(_edge.source());\n if (!pairInfo.calculatedIntersection && src !== tgt && (pairInfo.hasBezier || pairInfo.hasUnbundled)) {\n pairInfo.calculatedIntersection = true;\n\n // pt outside src shape to calc distance/displacement from src to tgt\n var srcOutside = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, tgtPos.x, tgtPos.y, 0);\n var srcIntn = pairInfo.srcIntn = srcOutside;\n\n // pt outside tgt shape to calc distance/displacement from src to tgt\n var tgtOutside = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, srcPos.x, srcPos.y, 0);\n var tgtIntn = pairInfo.tgtIntn = tgtOutside;\n var intersectionPts = pairInfo.intersectionPts = {\n x1: srcOutside[0],\n x2: tgtOutside[0],\n y1: srcOutside[1],\n y2: tgtOutside[1]\n };\n var posPts = pairInfo.posPts = {\n x1: srcPos.x,\n x2: tgtPos.x,\n y1: srcPos.y,\n y2: tgtPos.y\n };\n var dy = tgtOutside[1] - srcOutside[1];\n var dx = tgtOutside[0] - srcOutside[0];\n var l = Math.sqrt(dx * dx + dy * dy);\n var vector = pairInfo.vector = {\n x: dx,\n y: dy\n };\n var vectorNorm = pairInfo.vectorNorm = {\n x: vector.x / l,\n y: vector.y / l\n };\n var vectorNormInverse = {\n x: -vectorNorm.y,\n y: vectorNorm.x\n };\n\n // if node shapes overlap, then no ctrl pts to draw\n pairInfo.nodesOverlap = !number$1(l) || tgtShape.checkPoint(srcOutside[0], srcOutside[1], 0, tgtW, tgtH, tgtPos.x, tgtPos.y) || srcShape.checkPoint(tgtOutside[0], tgtOutside[1], 0, srcW, srcH, srcPos.x, srcPos.y);\n pairInfo.vectorNormInverse = vectorNormInverse;\n swappedpairInfo = {\n nodesOverlap: pairInfo.nodesOverlap,\n dirCounts: pairInfo.dirCounts,\n calculatedIntersection: true,\n hasBezier: pairInfo.hasBezier,\n hasUnbundled: pairInfo.hasUnbundled,\n eles: pairInfo.eles,\n srcPos: tgtPos,\n tgtPos: srcPos,\n srcW: tgtW,\n srcH: tgtH,\n tgtW: srcW,\n tgtH: srcH,\n srcIntn: tgtIntn,\n tgtIntn: srcIntn,\n srcShape: tgtShape,\n tgtShape: srcShape,\n posPts: {\n x1: posPts.x2,\n y1: posPts.y2,\n x2: posPts.x1,\n y2: posPts.y1\n },\n intersectionPts: {\n x1: intersectionPts.x2,\n y1: intersectionPts.y2,\n x2: intersectionPts.x1,\n y2: intersectionPts.y1\n },\n vector: {\n x: -vector.x,\n y: -vector.y\n },\n vectorNorm: {\n x: -vectorNorm.x,\n y: -vectorNorm.y\n },\n vectorNormInverse: {\n x: -vectorNormInverse.x,\n y: -vectorNormInverse.y\n }\n };\n }\n var passedPairInfo = edgeIsSwapped ? swappedpairInfo : pairInfo;\n rs.nodesOverlap = passedPairInfo.nodesOverlap;\n rs.srcIntn = passedPairInfo.srcIntn;\n rs.tgtIntn = passedPairInfo.tgtIntn;\n if (hasCompounds && (src.isParent() || src.isChild() || tgt.isParent() || tgt.isChild()) && (src.parents().anySame(tgt) || tgt.parents().anySame(src) || src.same(tgt) && src.isParent())) {\n _this.findCompoundLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled);\n } else if (src === tgt) {\n _this.findLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled);\n } else if (_curveStyle === 'segments') {\n _this.findSegmentsPoints(_edge, passedPairInfo);\n } else if (_curveStyle === 'taxi') {\n _this.findTaxiPoints(_edge, passedPairInfo);\n } else if (_curveStyle === 'straight' || !_edgeIsUnbundled && pairInfo.eles.length % 2 === 1 && _i2 === Math.floor(pairInfo.eles.length / 2)) {\n _this.findStraightEdgePoints(_edge);\n } else {\n _this.findBezierPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled, edgeIsSwapped);\n }\n _this.findEndpoints(_edge);\n _this.tryToCorrectInvalidPoints(_edge, passedPairInfo);\n _this.checkForInvalidEdgeWarning(_edge);\n _this.storeAllpts(_edge);\n _this.storeEdgeProjections(_edge);\n _this.calculateArrowAngles(_edge);\n _this.recalculateEdgeLabelProjections(_edge);\n _this.calculateLabelAngles(_edge);\n } // for pair edges\n };\n for (var p = 0; p < pairIds.length; p++) {\n _loop(p);\n } // for pair ids\n\n // haystacks avoid the expense of pairInfo stuff (intersections etc.)\n this.findHaystackPoints(haystackEdges);\n};\nfunction getPts(pts) {\n var retPts = [];\n if (pts == null) {\n return;\n }\n for (var i = 0; i < pts.length; i += 2) {\n var x = pts[i];\n var y = pts[i + 1];\n retPts.push({\n x: x,\n y: y\n });\n }\n return retPts;\n}\nBRp$c.getSegmentPoints = function (edge) {\n var rs = edge[0]._private.rscratch;\n var type = rs.edgeType;\n if (type === 'segments') {\n this.recalculateRenderedStyle(edge);\n return getPts(rs.segpts);\n }\n};\nBRp$c.getControlPoints = function (edge) {\n var rs = edge[0]._private.rscratch;\n var type = rs.edgeType;\n if (type === 'bezier' || type === 'multibezier' || type === 'self' || type === 'compound') {\n this.recalculateRenderedStyle(edge);\n return getPts(rs.ctrlpts);\n }\n};\nBRp$c.getEdgeMidpoint = function (edge) {\n var rs = edge[0]._private.rscratch;\n this.recalculateRenderedStyle(edge);\n return {\n x: rs.midX,\n y: rs.midY\n };\n};\n\nvar BRp$b = {};\nBRp$b.manualEndptToPx = function (node, prop) {\n var r = this;\n var npos = node.position();\n var w = node.outerWidth();\n var h = node.outerHeight();\n if (prop.value.length === 2) {\n var p = [prop.pfValue[0], prop.pfValue[1]];\n if (prop.units[0] === '%') {\n p[0] = p[0] * w;\n }\n if (prop.units[1] === '%') {\n p[1] = p[1] * h;\n }\n p[0] += npos.x;\n p[1] += npos.y;\n return p;\n } else {\n var angle = prop.pfValue[0];\n angle = -Math.PI / 2 + angle; // start at 12 o'clock\n\n var l = 2 * Math.max(w, h);\n var _p = [npos.x + Math.cos(angle) * l, npos.y + Math.sin(angle) * l];\n return r.nodeShapes[this.getNodeShape(node)].intersectLine(npos.x, npos.y, w, h, _p[0], _p[1], 0);\n }\n};\nBRp$b.findEndpoints = function (edge) {\n var r = this;\n var intersect;\n var source = edge.source()[0];\n var target = edge.target()[0];\n var srcPos = source.position();\n var tgtPos = target.position();\n var tgtArShape = edge.pstyle('target-arrow-shape').value;\n var srcArShape = edge.pstyle('source-arrow-shape').value;\n var tgtDist = edge.pstyle('target-distance-from-node').pfValue;\n var srcDist = edge.pstyle('source-distance-from-node').pfValue;\n var curveStyle = edge.pstyle('curve-style').value;\n var rs = edge._private.rscratch;\n var et = rs.edgeType;\n var taxi = curveStyle === 'taxi';\n var self = et === 'self' || et === 'compound';\n var bezier = et === 'bezier' || et === 'multibezier' || self;\n var multi = et !== 'bezier';\n var lines = et === 'straight' || et === 'segments';\n var segments = et === 'segments';\n var hasEndpts = bezier || multi || lines;\n var overrideEndpts = self || taxi;\n var srcManEndpt = edge.pstyle('source-endpoint');\n var srcManEndptVal = overrideEndpts ? 'outside-to-node' : srcManEndpt.value;\n var tgtManEndpt = edge.pstyle('target-endpoint');\n var tgtManEndptVal = overrideEndpts ? 'outside-to-node' : tgtManEndpt.value;\n rs.srcManEndpt = srcManEndpt;\n rs.tgtManEndpt = tgtManEndpt;\n var p1; // last known point of edge on target side\n var p2; // last known point of edge on source side\n\n var p1_i; // point to intersect with target shape\n var p2_i; // point to intersect with source shape\n\n if (bezier) {\n var cpStart = [rs.ctrlpts[0], rs.ctrlpts[1]];\n var cpEnd = multi ? [rs.ctrlpts[rs.ctrlpts.length - 2], rs.ctrlpts[rs.ctrlpts.length - 1]] : cpStart;\n p1 = cpEnd;\n p2 = cpStart;\n } else if (lines) {\n var srcArrowFromPt = !segments ? [tgtPos.x, tgtPos.y] : rs.segpts.slice(0, 2);\n var tgtArrowFromPt = !segments ? [srcPos.x, srcPos.y] : rs.segpts.slice(rs.segpts.length - 2);\n p1 = tgtArrowFromPt;\n p2 = srcArrowFromPt;\n }\n if (tgtManEndptVal === 'inside-to-node') {\n intersect = [tgtPos.x, tgtPos.y];\n } else if (tgtManEndpt.units) {\n intersect = this.manualEndptToPx(target, tgtManEndpt);\n } else if (tgtManEndptVal === 'outside-to-line') {\n intersect = rs.tgtIntn; // use cached value from ctrlpt calc\n } else {\n if (tgtManEndptVal === 'outside-to-node' || tgtManEndptVal === 'outside-to-node-or-label') {\n p1_i = p1;\n } else if (tgtManEndptVal === 'outside-to-line' || tgtManEndptVal === 'outside-to-line-or-label') {\n p1_i = [srcPos.x, srcPos.y];\n }\n intersect = r.nodeShapes[this.getNodeShape(target)].intersectLine(tgtPos.x, tgtPos.y, target.outerWidth(), target.outerHeight(), p1_i[0], p1_i[1], 0);\n if (tgtManEndptVal === 'outside-to-node-or-label' || tgtManEndptVal === 'outside-to-line-or-label') {\n var trs = target._private.rscratch;\n var lw = trs.labelWidth;\n var lh = trs.labelHeight;\n var lx = trs.labelX;\n var ly = trs.labelY;\n var lw2 = lw / 2;\n var lh2 = lh / 2;\n var va = target.pstyle('text-valign').value;\n if (va === 'top') {\n ly -= lh2;\n } else if (va === 'bottom') {\n ly += lh2;\n }\n var ha = target.pstyle('text-halign').value;\n if (ha === 'left') {\n lx -= lw2;\n } else if (ha === 'right') {\n lx += lw2;\n }\n var labelIntersect = polygonIntersectLine(p1_i[0], p1_i[1], [lx - lw2, ly - lh2, lx + lw2, ly - lh2, lx + lw2, ly + lh2, lx - lw2, ly + lh2], tgtPos.x, tgtPos.y);\n if (labelIntersect.length > 0) {\n var refPt = srcPos;\n var intSqdist = sqdist(refPt, array2point(intersect));\n var labIntSqdist = sqdist(refPt, array2point(labelIntersect));\n var minSqDist = intSqdist;\n if (labIntSqdist < intSqdist) {\n intersect = labelIntersect;\n minSqDist = labIntSqdist;\n }\n if (labelIntersect.length > 2) {\n var labInt2SqDist = sqdist(refPt, {\n x: labelIntersect[2],\n y: labelIntersect[3]\n });\n if (labInt2SqDist < minSqDist) {\n intersect = [labelIntersect[2], labelIntersect[3]];\n }\n }\n }\n }\n }\n var arrowEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].spacing(edge) + tgtDist);\n var edgeEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].gap(edge) + tgtDist);\n rs.endX = edgeEnd[0];\n rs.endY = edgeEnd[1];\n rs.arrowEndX = arrowEnd[0];\n rs.arrowEndY = arrowEnd[1];\n if (srcManEndptVal === 'inside-to-node') {\n intersect = [srcPos.x, srcPos.y];\n } else if (srcManEndpt.units) {\n intersect = this.manualEndptToPx(source, srcManEndpt);\n } else if (srcManEndptVal === 'outside-to-line') {\n intersect = rs.srcIntn; // use cached value from ctrlpt calc\n } else {\n if (srcManEndptVal === 'outside-to-node' || srcManEndptVal === 'outside-to-node-or-label') {\n p2_i = p2;\n } else if (srcManEndptVal === 'outside-to-line' || srcManEndptVal === 'outside-to-line-or-label') {\n p2_i = [tgtPos.x, tgtPos.y];\n }\n intersect = r.nodeShapes[this.getNodeShape(source)].intersectLine(srcPos.x, srcPos.y, source.outerWidth(), source.outerHeight(), p2_i[0], p2_i[1], 0);\n if (srcManEndptVal === 'outside-to-node-or-label' || srcManEndptVal === 'outside-to-line-or-label') {\n var srs = source._private.rscratch;\n var _lw = srs.labelWidth;\n var _lh = srs.labelHeight;\n var _lx = srs.labelX;\n var _ly = srs.labelY;\n var _lw2 = _lw / 2;\n var _lh2 = _lh / 2;\n var _va = source.pstyle('text-valign').value;\n if (_va === 'top') {\n _ly -= _lh2;\n } else if (_va === 'bottom') {\n _ly += _lh2;\n }\n var _ha = source.pstyle('text-halign').value;\n if (_ha === 'left') {\n _lx -= _lw2;\n } else if (_ha === 'right') {\n _lx += _lw2;\n }\n var _labelIntersect = polygonIntersectLine(p2_i[0], p2_i[1], [_lx - _lw2, _ly - _lh2, _lx + _lw2, _ly - _lh2, _lx + _lw2, _ly + _lh2, _lx - _lw2, _ly + _lh2], srcPos.x, srcPos.y);\n if (_labelIntersect.length > 0) {\n var _refPt = tgtPos;\n var _intSqdist = sqdist(_refPt, array2point(intersect));\n var _labIntSqdist = sqdist(_refPt, array2point(_labelIntersect));\n var _minSqDist = _intSqdist;\n if (_labIntSqdist < _intSqdist) {\n intersect = [_labelIntersect[0], _labelIntersect[1]];\n _minSqDist = _labIntSqdist;\n }\n if (_labelIntersect.length > 2) {\n var _labInt2SqDist = sqdist(_refPt, {\n x: _labelIntersect[2],\n y: _labelIntersect[3]\n });\n if (_labInt2SqDist < _minSqDist) {\n intersect = [_labelIntersect[2], _labelIntersect[3]];\n }\n }\n }\n }\n }\n var arrowStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].spacing(edge) + srcDist);\n var edgeStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].gap(edge) + srcDist);\n rs.startX = edgeStart[0];\n rs.startY = edgeStart[1];\n rs.arrowStartX = arrowStart[0];\n rs.arrowStartY = arrowStart[1];\n if (hasEndpts) {\n if (!number$1(rs.startX) || !number$1(rs.startY) || !number$1(rs.endX) || !number$1(rs.endY)) {\n rs.badLine = true;\n } else {\n rs.badLine = false;\n }\n }\n};\nBRp$b.getSourceEndpoint = function (edge) {\n var rs = edge[0]._private.rscratch;\n this.recalculateRenderedStyle(edge);\n switch (rs.edgeType) {\n case 'haystack':\n return {\n x: rs.haystackPts[0],\n y: rs.haystackPts[1]\n };\n default:\n return {\n x: rs.arrowStartX,\n y: rs.arrowStartY\n };\n }\n};\nBRp$b.getTargetEndpoint = function (edge) {\n var rs = edge[0]._private.rscratch;\n this.recalculateRenderedStyle(edge);\n switch (rs.edgeType) {\n case 'haystack':\n return {\n x: rs.haystackPts[2],\n y: rs.haystackPts[3]\n };\n default:\n return {\n x: rs.arrowEndX,\n y: rs.arrowEndY\n };\n }\n};\n\nvar BRp$a = {};\nfunction pushBezierPts(r, edge, pts) {\n var qbezierAt$1 = function qbezierAt$1(p1, p2, p3, t) {\n return qbezierAt(p1, p2, p3, t);\n };\n var _p = edge._private;\n var bpts = _p.rstyle.bezierPts;\n for (var i = 0; i < r.bezierProjPcts.length; i++) {\n var p = r.bezierProjPcts[i];\n bpts.push({\n x: qbezierAt$1(pts[0], pts[2], pts[4], p),\n y: qbezierAt$1(pts[1], pts[3], pts[5], p)\n });\n }\n}\nBRp$a.storeEdgeProjections = function (edge) {\n var _p = edge._private;\n var rs = _p.rscratch;\n var et = rs.edgeType;\n\n // clear the cached points state\n _p.rstyle.bezierPts = null;\n _p.rstyle.linePts = null;\n _p.rstyle.haystackPts = null;\n if (et === 'multibezier' || et === 'bezier' || et === 'self' || et === 'compound') {\n _p.rstyle.bezierPts = [];\n for (var i = 0; i + 5 < rs.allpts.length; i += 4) {\n pushBezierPts(this, edge, rs.allpts.slice(i, i + 6));\n }\n } else if (et === 'segments') {\n var lpts = _p.rstyle.linePts = [];\n for (var i = 0; i + 1 < rs.allpts.length; i += 2) {\n lpts.push({\n x: rs.allpts[i],\n y: rs.allpts[i + 1]\n });\n }\n } else if (et === 'haystack') {\n var hpts = rs.haystackPts;\n _p.rstyle.haystackPts = [{\n x: hpts[0],\n y: hpts[1]\n }, {\n x: hpts[2],\n y: hpts[3]\n }];\n }\n _p.rstyle.arrowWidth = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth;\n};\nBRp$a.recalculateEdgeProjections = function (edges) {\n this.findEdgeControlPoints(edges);\n};\n\n/* global document */\n\nvar BRp$9 = {};\nBRp$9.recalculateNodeLabelProjection = function (node) {\n var content = node.pstyle('label').strValue;\n if (emptyString(content)) {\n return;\n }\n var textX, textY;\n var _p = node._private;\n var nodeWidth = node.width();\n var nodeHeight = node.height();\n var padding = node.padding();\n var nodePos = node.position();\n var textHalign = node.pstyle('text-halign').strValue;\n var textValign = node.pstyle('text-valign').strValue;\n var rs = _p.rscratch;\n var rstyle = _p.rstyle;\n switch (textHalign) {\n case 'left':\n textX = nodePos.x - nodeWidth / 2 - padding;\n break;\n case 'right':\n textX = nodePos.x + nodeWidth / 2 + padding;\n break;\n default:\n // e.g. center\n textX = nodePos.x;\n }\n switch (textValign) {\n case 'top':\n textY = nodePos.y - nodeHeight / 2 - padding;\n break;\n case 'bottom':\n textY = nodePos.y + nodeHeight / 2 + padding;\n break;\n default:\n // e.g. middle\n textY = nodePos.y;\n }\n rs.labelX = textX;\n rs.labelY = textY;\n rstyle.labelX = textX;\n rstyle.labelY = textY;\n this.calculateLabelAngles(node);\n this.applyLabelDimensions(node);\n};\nvar lineAngleFromDelta = function lineAngleFromDelta(dx, dy) {\n var angle = Math.atan(dy / dx);\n if (dx === 0 && angle < 0) {\n angle = angle * -1;\n }\n return angle;\n};\nvar lineAngle = function lineAngle(p0, p1) {\n var dx = p1.x - p0.x;\n var dy = p1.y - p0.y;\n return lineAngleFromDelta(dx, dy);\n};\nvar bezierAngle = function bezierAngle(p0, p1, p2, t) {\n var t0 = bound(0, t - 0.001, 1);\n var t1 = bound(0, t + 0.001, 1);\n var lp0 = qbezierPtAt(p0, p1, p2, t0);\n var lp1 = qbezierPtAt(p0, p1, p2, t1);\n return lineAngle(lp0, lp1);\n};\nBRp$9.recalculateEdgeLabelProjections = function (edge) {\n var p;\n var _p = edge._private;\n var rs = _p.rscratch;\n var r = this;\n var content = {\n mid: edge.pstyle('label').strValue,\n source: edge.pstyle('source-label').strValue,\n target: edge.pstyle('target-label').strValue\n };\n if (content.mid || content.source || content.target) ; else {\n return; // no labels => no calcs\n }\n\n // add center point to style so bounding box calculations can use it\n //\n p = {\n x: rs.midX,\n y: rs.midY\n };\n var setRs = function setRs(propName, prefix, value) {\n setPrefixedProperty(_p.rscratch, propName, prefix, value);\n setPrefixedProperty(_p.rstyle, propName, prefix, value);\n };\n setRs('labelX', null, p.x);\n setRs('labelY', null, p.y);\n var midAngle = lineAngleFromDelta(rs.midDispX, rs.midDispY);\n setRs('labelAutoAngle', null, midAngle);\n var createControlPointInfo = function createControlPointInfo() {\n if (createControlPointInfo.cache) {\n return createControlPointInfo.cache;\n } // use cache so only 1x per edge\n\n var ctrlpts = [];\n\n // store each ctrlpt info init\n for (var i = 0; i + 5 < rs.allpts.length; i += 4) {\n var p0 = {\n x: rs.allpts[i],\n y: rs.allpts[i + 1]\n };\n var p1 = {\n x: rs.allpts[i + 2],\n y: rs.allpts[i + 3]\n }; // ctrlpt\n var p2 = {\n x: rs.allpts[i + 4],\n y: rs.allpts[i + 5]\n };\n ctrlpts.push({\n p0: p0,\n p1: p1,\n p2: p2,\n startDist: 0,\n length: 0,\n segments: []\n });\n }\n var bpts = _p.rstyle.bezierPts;\n var nProjs = r.bezierProjPcts.length;\n function addSegment(cp, p0, p1, t0, t1) {\n var length = dist(p0, p1);\n var prevSegment = cp.segments[cp.segments.length - 1];\n var segment = {\n p0: p0,\n p1: p1,\n t0: t0,\n t1: t1,\n startDist: prevSegment ? prevSegment.startDist + prevSegment.length : 0,\n length: length\n };\n cp.segments.push(segment);\n cp.length += length;\n }\n\n // update each ctrlpt with segment info\n for (var _i = 0; _i < ctrlpts.length; _i++) {\n var cp = ctrlpts[_i];\n var prevCp = ctrlpts[_i - 1];\n if (prevCp) {\n cp.startDist = prevCp.startDist + prevCp.length;\n }\n addSegment(cp, cp.p0, bpts[_i * nProjs], 0, r.bezierProjPcts[0]); // first\n\n for (var j = 0; j < nProjs - 1; j++) {\n addSegment(cp, bpts[_i * nProjs + j], bpts[_i * nProjs + j + 1], r.bezierProjPcts[j], r.bezierProjPcts[j + 1]);\n }\n addSegment(cp, bpts[_i * nProjs + nProjs - 1], cp.p2, r.bezierProjPcts[nProjs - 1], 1); // last\n }\n\n return createControlPointInfo.cache = ctrlpts;\n };\n var calculateEndProjection = function calculateEndProjection(prefix) {\n var angle;\n var isSrc = prefix === 'source';\n if (!content[prefix]) {\n return;\n }\n var offset = edge.pstyle(prefix + '-text-offset').pfValue;\n switch (rs.edgeType) {\n case 'self':\n case 'compound':\n case 'bezier':\n case 'multibezier':\n {\n var cps = createControlPointInfo();\n var selected;\n var startDist = 0;\n var totalDist = 0;\n\n // find the segment we're on\n for (var i = 0; i < cps.length; i++) {\n var _cp = cps[isSrc ? i : cps.length - 1 - i];\n for (var j = 0; j < _cp.segments.length; j++) {\n var _seg = _cp.segments[isSrc ? j : _cp.segments.length - 1 - j];\n var lastSeg = i === cps.length - 1 && j === _cp.segments.length - 1;\n startDist = totalDist;\n totalDist += _seg.length;\n if (totalDist >= offset || lastSeg) {\n selected = {\n cp: _cp,\n segment: _seg\n };\n break;\n }\n }\n if (selected) {\n break;\n }\n }\n var cp = selected.cp;\n var seg = selected.segment;\n var tSegment = (offset - startDist) / seg.length;\n var segDt = seg.t1 - seg.t0;\n var t = isSrc ? seg.t0 + segDt * tSegment : seg.t1 - segDt * tSegment;\n t = bound(0, t, 1);\n p = qbezierPtAt(cp.p0, cp.p1, cp.p2, t);\n angle = bezierAngle(cp.p0, cp.p1, cp.p2, t);\n break;\n }\n case 'straight':\n case 'segments':\n case 'haystack':\n {\n var d = 0,\n di,\n d0;\n var p0, p1;\n var l = rs.allpts.length;\n for (var _i2 = 0; _i2 + 3 < l; _i2 += 2) {\n if (isSrc) {\n p0 = {\n x: rs.allpts[_i2],\n y: rs.allpts[_i2 + 1]\n };\n p1 = {\n x: rs.allpts[_i2 + 2],\n y: rs.allpts[_i2 + 3]\n };\n } else {\n p0 = {\n x: rs.allpts[l - 2 - _i2],\n y: rs.allpts[l - 1 - _i2]\n };\n p1 = {\n x: rs.allpts[l - 4 - _i2],\n y: rs.allpts[l - 3 - _i2]\n };\n }\n di = dist(p0, p1);\n d0 = d;\n d += di;\n if (d >= offset) {\n break;\n }\n }\n var pD = offset - d0;\n var _t = pD / di;\n _t = bound(0, _t, 1);\n p = lineAt(p0, p1, _t);\n angle = lineAngle(p0, p1);\n break;\n }\n }\n setRs('labelX', prefix, p.x);\n setRs('labelY', prefix, p.y);\n setRs('labelAutoAngle', prefix, angle);\n };\n calculateEndProjection('source');\n calculateEndProjection('target');\n this.applyLabelDimensions(edge);\n};\nBRp$9.applyLabelDimensions = function (ele) {\n this.applyPrefixedLabelDimensions(ele);\n if (ele.isEdge()) {\n this.applyPrefixedLabelDimensions(ele, 'source');\n this.applyPrefixedLabelDimensions(ele, 'target');\n }\n};\nBRp$9.applyPrefixedLabelDimensions = function (ele, prefix) {\n var _p = ele._private;\n var text = this.getLabelText(ele, prefix);\n var labelDims = this.calculateLabelDimensions(ele, text);\n var lineHeight = ele.pstyle('line-height').pfValue;\n var textWrap = ele.pstyle('text-wrap').strValue;\n var lines = getPrefixedProperty(_p.rscratch, 'labelWrapCachedLines', prefix) || [];\n var numLines = textWrap !== 'wrap' ? 1 : Math.max(lines.length, 1);\n var normPerLineHeight = labelDims.height / numLines;\n var labelLineHeight = normPerLineHeight * lineHeight;\n var width = labelDims.width;\n var height = labelDims.height + (numLines - 1) * (lineHeight - 1) * normPerLineHeight;\n setPrefixedProperty(_p.rstyle, 'labelWidth', prefix, width);\n setPrefixedProperty(_p.rscratch, 'labelWidth', prefix, width);\n setPrefixedProperty(_p.rstyle, 'labelHeight', prefix, height);\n setPrefixedProperty(_p.rscratch, 'labelHeight', prefix, height);\n setPrefixedProperty(_p.rscratch, 'labelLineHeight', prefix, labelLineHeight);\n};\nBRp$9.getLabelText = function (ele, prefix) {\n var _p = ele._private;\n var pfd = prefix ? prefix + '-' : '';\n var text = ele.pstyle(pfd + 'label').strValue;\n var textTransform = ele.pstyle('text-transform').value;\n var rscratch = function rscratch(propName, value) {\n if (value) {\n setPrefixedProperty(_p.rscratch, propName, prefix, value);\n return value;\n } else {\n return getPrefixedProperty(_p.rscratch, propName, prefix);\n }\n };\n\n // for empty text, skip all processing\n if (!text) {\n return '';\n }\n if (textTransform == 'none') ; else if (textTransform == 'uppercase') {\n text = text.toUpperCase();\n } else if (textTransform == 'lowercase') {\n text = text.toLowerCase();\n }\n var wrapStyle = ele.pstyle('text-wrap').value;\n if (wrapStyle === 'wrap') {\n var labelKey = rscratch('labelKey');\n\n // save recalc if the label is the same as before\n if (labelKey != null && rscratch('labelWrapKey') === labelKey) {\n return rscratch('labelWrapCachedText');\n }\n var zwsp = \"\\u200B\";\n var lines = text.split('\\n');\n var maxW = ele.pstyle('text-max-width').pfValue;\n var overflow = ele.pstyle('text-overflow-wrap').value;\n var overflowAny = overflow === 'anywhere';\n var wrappedLines = [];\n var wordsRegex = /[\\s\\u200b]+/;\n var wordSeparator = overflowAny ? '' : ' ';\n for (var l = 0; l < lines.length; l++) {\n var line = lines[l];\n var lineDims = this.calculateLabelDimensions(ele, line);\n var lineW = lineDims.width;\n if (overflowAny) {\n var processedLine = line.split('').join(zwsp);\n line = processedLine;\n }\n if (lineW > maxW) {\n // line is too long\n var words = line.split(wordsRegex);\n var subline = '';\n for (var w = 0; w < words.length; w++) {\n var word = words[w];\n var testLine = subline.length === 0 ? word : subline + wordSeparator + word;\n var testDims = this.calculateLabelDimensions(ele, testLine);\n var testW = testDims.width;\n if (testW <= maxW) {\n // word fits on current line\n subline += word + wordSeparator;\n } else {\n // word starts new line\n if (subline) {\n wrappedLines.push(subline);\n }\n subline = word + wordSeparator;\n }\n }\n\n // if there's remaining text, put it in a wrapped line\n if (!subline.match(/^[\\s\\u200b]+$/)) {\n wrappedLines.push(subline);\n }\n } else {\n // line is already short enough\n wrappedLines.push(line);\n }\n } // for\n\n rscratch('labelWrapCachedLines', wrappedLines);\n text = rscratch('labelWrapCachedText', wrappedLines.join('\\n'));\n rscratch('labelWrapKey', labelKey);\n } else if (wrapStyle === 'ellipsis') {\n var _maxW = ele.pstyle('text-max-width').pfValue;\n var ellipsized = '';\n var ellipsis = \"\\u2026\";\n var incLastCh = false;\n if (this.calculateLabelDimensions(ele, text).width < _maxW) {\n // the label already fits\n return text;\n }\n for (var i = 0; i < text.length; i++) {\n var widthWithNextCh = this.calculateLabelDimensions(ele, ellipsized + text[i] + ellipsis).width;\n if (widthWithNextCh > _maxW) {\n break;\n }\n ellipsized += text[i];\n if (i === text.length - 1) {\n incLastCh = true;\n }\n }\n if (!incLastCh) {\n ellipsized += ellipsis;\n }\n return ellipsized;\n } // if ellipsize\n\n return text;\n};\nBRp$9.getLabelJustification = function (ele) {\n var justification = ele.pstyle('text-justification').strValue;\n var textHalign = ele.pstyle('text-halign').strValue;\n if (justification === 'auto') {\n if (ele.isNode()) {\n switch (textHalign) {\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n default:\n return 'center';\n }\n } else {\n return 'center';\n }\n } else {\n return justification;\n }\n};\nBRp$9.calculateLabelDimensions = function (ele, text) {\n var r = this;\n var cacheKey = hashString(text, ele._private.labelDimsKey);\n var cache = r.labelDimCache || (r.labelDimCache = []);\n var existingVal = cache[cacheKey];\n if (existingVal != null) {\n return existingVal;\n }\n var padding = 0; // add padding around text dims, as the measurement isn't that accurate\n var fStyle = ele.pstyle('font-style').strValue;\n var size = ele.pstyle('font-size').pfValue;\n var family = ele.pstyle('font-family').strValue;\n var weight = ele.pstyle('font-weight').strValue;\n var canvas = this.labelCalcCanvas;\n var c2d = this.labelCalcCanvasContext;\n if (!canvas) {\n canvas = this.labelCalcCanvas = document.createElement('canvas');\n c2d = this.labelCalcCanvasContext = canvas.getContext('2d');\n var ds = canvas.style;\n ds.position = 'absolute';\n ds.left = '-9999px';\n ds.top = '-9999px';\n ds.zIndex = '-1';\n ds.visibility = 'hidden';\n ds.pointerEvents = 'none';\n }\n c2d.font = \"\".concat(fStyle, \" \").concat(weight, \" \").concat(size, \"px \").concat(family);\n var width = 0;\n var height = 0;\n var lines = text.split('\\n');\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n var metrics = c2d.measureText(line);\n var w = Math.ceil(metrics.width);\n var h = size;\n width = Math.max(w, width);\n height += h;\n }\n width += padding;\n height += padding;\n return cache[cacheKey] = {\n width: width,\n height: height\n };\n};\nBRp$9.calculateLabelAngle = function (ele, prefix) {\n var _p = ele._private;\n var rs = _p.rscratch;\n var isEdge = ele.isEdge();\n var prefixDash = prefix ? prefix + '-' : '';\n var rot = ele.pstyle(prefixDash + 'text-rotation');\n var rotStr = rot.strValue;\n if (rotStr === 'none') {\n return 0;\n } else if (isEdge && rotStr === 'autorotate') {\n return rs.labelAutoAngle;\n } else if (rotStr === 'autorotate') {\n return 0;\n } else {\n return rot.pfValue;\n }\n};\nBRp$9.calculateLabelAngles = function (ele) {\n var r = this;\n var isEdge = ele.isEdge();\n var _p = ele._private;\n var rs = _p.rscratch;\n rs.labelAngle = r.calculateLabelAngle(ele);\n if (isEdge) {\n rs.sourceLabelAngle = r.calculateLabelAngle(ele, 'source');\n rs.targetLabelAngle = r.calculateLabelAngle(ele, 'target');\n }\n};\n\nvar BRp$8 = {};\nvar TOO_SMALL_CUT_RECT = 28;\nvar warnedCutRect = false;\nBRp$8.getNodeShape = function (node) {\n var r = this;\n var shape = node.pstyle('shape').value;\n if (shape === 'cutrectangle' && (node.width() < TOO_SMALL_CUT_RECT || node.height() < TOO_SMALL_CUT_RECT)) {\n if (!warnedCutRect) {\n warn('The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead');\n warnedCutRect = true;\n }\n return 'rectangle';\n }\n if (node.isParent()) {\n if (shape === 'rectangle' || shape === 'roundrectangle' || shape === 'round-rectangle' || shape === 'cutrectangle' || shape === 'cut-rectangle' || shape === 'barrel') {\n return shape;\n } else {\n return 'rectangle';\n }\n }\n if (shape === 'polygon') {\n var points = node.pstyle('shape-polygon-points').value;\n return r.nodeShapes.makePolygon(points).name;\n }\n return shape;\n};\n\nvar BRp$7 = {};\nBRp$7.registerCalculationListeners = function () {\n var cy = this.cy;\n var elesToUpdate = cy.collection();\n var r = this;\n var enqueue = function enqueue(eles) {\n var dirtyStyleCaches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n elesToUpdate.merge(eles);\n if (dirtyStyleCaches) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var _p = ele._private;\n var rstyle = _p.rstyle;\n rstyle.clean = false;\n rstyle.cleanConnected = false;\n }\n }\n };\n r.binder(cy).on('bounds.* dirty.*', function onDirtyBounds(e) {\n var ele = e.target;\n enqueue(ele);\n }).on('style.* background.*', function onDirtyStyle(e) {\n var ele = e.target;\n enqueue(ele, false);\n });\n var updateEleCalcs = function updateEleCalcs(willDraw) {\n if (willDraw) {\n var fns = r.onUpdateEleCalcsFns;\n\n // because we need to have up-to-date style (e.g. stylesheet mappers)\n // before calculating rendered style (and pstyle might not be called yet)\n elesToUpdate.cleanStyle();\n for (var i = 0; i < elesToUpdate.length; i++) {\n var ele = elesToUpdate[i];\n var rstyle = ele._private.rstyle;\n if (ele.isNode() && !rstyle.cleanConnected) {\n enqueue(ele.connectedEdges());\n rstyle.cleanConnected = true;\n }\n }\n if (fns) {\n for (var _i = 0; _i < fns.length; _i++) {\n var fn = fns[_i];\n fn(willDraw, elesToUpdate);\n }\n }\n r.recalculateRenderedStyle(elesToUpdate);\n elesToUpdate = cy.collection();\n }\n };\n r.flushRenderedStyleQueue = function () {\n updateEleCalcs(true);\n };\n r.beforeRender(updateEleCalcs, r.beforeRenderPriorities.eleCalcs);\n};\nBRp$7.onUpdateEleCalcs = function (fn) {\n var fns = this.onUpdateEleCalcsFns = this.onUpdateEleCalcsFns || [];\n fns.push(fn);\n};\nBRp$7.recalculateRenderedStyle = function (eles, useCache) {\n var isCleanConnected = function isCleanConnected(ele) {\n return ele._private.rstyle.cleanConnected;\n };\n var edges = [];\n var nodes = [];\n\n // the renderer can't be used for calcs when destroyed, e.g. ele.boundingBox()\n if (this.destroyed) {\n return;\n }\n\n // use cache by default for perf\n if (useCache === undefined) {\n useCache = true;\n }\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var _p = ele._private;\n var rstyle = _p.rstyle;\n\n // an edge may be implicitly dirty b/c of one of its connected nodes\n // (and a request for recalc may come in between frames)\n if (ele.isEdge() && (!isCleanConnected(ele.source()) || !isCleanConnected(ele.target()))) {\n rstyle.clean = false;\n }\n\n // only update if dirty and in graph\n if (useCache && rstyle.clean || ele.removed()) {\n continue;\n }\n\n // only update if not display: none\n if (ele.pstyle('display').value === 'none') {\n continue;\n }\n if (_p.group === 'nodes') {\n nodes.push(ele);\n } else {\n // edges\n edges.push(ele);\n }\n rstyle.clean = true;\n }\n\n // update node data from projections\n for (var _i2 = 0; _i2 < nodes.length; _i2++) {\n var _ele = nodes[_i2];\n var _p2 = _ele._private;\n var _rstyle = _p2.rstyle;\n var pos = _ele.position();\n this.recalculateNodeLabelProjection(_ele);\n _rstyle.nodeX = pos.x;\n _rstyle.nodeY = pos.y;\n _rstyle.nodeW = _ele.pstyle('width').pfValue;\n _rstyle.nodeH = _ele.pstyle('height').pfValue;\n }\n this.recalculateEdgeProjections(edges);\n\n // update edge data from projections\n for (var _i3 = 0; _i3 < edges.length; _i3++) {\n var _ele2 = edges[_i3];\n var _p3 = _ele2._private;\n var _rstyle2 = _p3.rstyle;\n var rs = _p3.rscratch;\n\n // update rstyle positions\n _rstyle2.srcX = rs.arrowStartX;\n _rstyle2.srcY = rs.arrowStartY;\n _rstyle2.tgtX = rs.arrowEndX;\n _rstyle2.tgtY = rs.arrowEndY;\n _rstyle2.midX = rs.midX;\n _rstyle2.midY = rs.midY;\n _rstyle2.labelAngle = rs.labelAngle;\n _rstyle2.sourceLabelAngle = rs.sourceLabelAngle;\n _rstyle2.targetLabelAngle = rs.targetLabelAngle;\n }\n};\n\nvar BRp$6 = {};\nBRp$6.updateCachedGrabbedEles = function () {\n var eles = this.cachedZSortedEles;\n if (!eles) {\n // just let this be recalculated on the next z sort tick\n return;\n }\n eles.drag = [];\n eles.nondrag = [];\n var grabTargets = [];\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var rs = ele._private.rscratch;\n if (ele.grabbed() && !ele.isParent()) {\n grabTargets.push(ele);\n } else if (rs.inDragLayer) {\n eles.drag.push(ele);\n } else {\n eles.nondrag.push(ele);\n }\n }\n\n // put the grab target nodes last so it's on top of its neighbourhood\n for (var i = 0; i < grabTargets.length; i++) {\n var ele = grabTargets[i];\n eles.drag.push(ele);\n }\n};\nBRp$6.invalidateCachedZSortedEles = function () {\n this.cachedZSortedEles = null;\n};\nBRp$6.getCachedZSortedEles = function (forceRecalc) {\n if (forceRecalc || !this.cachedZSortedEles) {\n var eles = this.cy.mutableElements().toArray();\n eles.sort(zIndexSort);\n eles.interactive = eles.filter(function (ele) {\n return ele.interactive();\n });\n this.cachedZSortedEles = eles;\n this.updateCachedGrabbedEles();\n } else {\n eles = this.cachedZSortedEles;\n }\n return eles;\n};\n\nvar BRp$5 = {};\n[BRp$e, BRp$d, BRp$c, BRp$b, BRp$a, BRp$9, BRp$8, BRp$7, BRp$6].forEach(function (props) {\n extend(BRp$5, props);\n});\n\nvar BRp$4 = {};\nBRp$4.getCachedImage = function (url, crossOrigin, onLoad) {\n var r = this;\n var imageCache = r.imageCache = r.imageCache || {};\n var cache = imageCache[url];\n if (cache) {\n if (!cache.image.complete) {\n cache.image.addEventListener('load', onLoad);\n }\n return cache.image;\n } else {\n cache = imageCache[url] = imageCache[url] || {};\n var image = cache.image = new Image(); // eslint-disable-line no-undef\n\n image.addEventListener('load', onLoad);\n image.addEventListener('error', function () {\n image.error = true;\n });\n\n // #1582 safari doesn't load data uris with crossOrigin properly\n // https://bugs.webkit.org/show_bug.cgi?id=123978\n var dataUriPrefix = 'data:';\n var isDataUri = url.substring(0, dataUriPrefix.length).toLowerCase() === dataUriPrefix;\n if (!isDataUri) {\n // if crossorigin is 'null'(stringified), then manually set it to null \n crossOrigin = crossOrigin === 'null' ? null : crossOrigin;\n image.crossOrigin = crossOrigin; // prevent tainted canvas\n }\n\n image.src = url;\n return image;\n }\n};\n\nvar BRp$3 = {};\n\n/* global document, window, ResizeObserver, MutationObserver */\n\nBRp$3.registerBinding = function (target, event, handler, useCapture) {\n // eslint-disable-line no-unused-vars\n var args = Array.prototype.slice.apply(arguments, [1]); // copy\n var b = this.binder(target);\n return b.on.apply(b, args);\n};\nBRp$3.binder = function (tgt) {\n var r = this;\n var containerWindow = r.cy.window();\n var tgtIsDom = tgt === containerWindow || tgt === containerWindow.document || tgt === containerWindow.document.body || domElement(tgt);\n if (r.supportsPassiveEvents == null) {\n // from https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n return true;\n }\n });\n containerWindow.addEventListener('test', null, opts);\n } catch (err) {\n // not supported\n }\n r.supportsPassiveEvents = supportsPassive;\n }\n var on = function on(event, handler, useCapture) {\n var args = Array.prototype.slice.call(arguments);\n if (tgtIsDom && r.supportsPassiveEvents) {\n // replace useCapture w/ opts obj\n args[2] = {\n capture: useCapture != null ? useCapture : false,\n passive: false,\n once: false\n };\n }\n r.bindings.push({\n target: tgt,\n args: args\n });\n (tgt.addEventListener || tgt.on).apply(tgt, args);\n return this;\n };\n return {\n on: on,\n addEventListener: on,\n addListener: on,\n bind: on\n };\n};\nBRp$3.nodeIsDraggable = function (node) {\n return node && node.isNode() && !node.locked() && node.grabbable();\n};\nBRp$3.nodeIsGrabbable = function (node) {\n return this.nodeIsDraggable(node) && node.interactive();\n};\nBRp$3.load = function () {\n var r = this;\n var containerWindow = r.cy.window();\n var isSelected = function isSelected(ele) {\n return ele.selected();\n };\n var triggerEvents = function triggerEvents(target, names, e, position) {\n if (target == null) {\n target = r.cy;\n }\n for (var i = 0; i < names.length; i++) {\n var name = names[i];\n target.emit({\n originalEvent: e,\n type: name,\n position: position\n });\n }\n };\n var isMultSelKeyDown = function isMultSelKeyDown(e) {\n return e.shiftKey || e.metaKey || e.ctrlKey; // maybe e.altKey\n };\n\n var allowPanningPassthrough = function allowPanningPassthrough(down, downs) {\n var allowPassthrough = true;\n if (r.cy.hasCompoundNodes() && down && down.pannable()) {\n // a grabbable compound node below the ele => no passthrough panning\n for (var i = 0; downs && i < downs.length; i++) {\n var down = downs[i];\n\n //if any parent node in event hierarchy isn't pannable, reject passthrough\n if (down.isNode() && down.isParent() && !down.pannable()) {\n allowPassthrough = false;\n break;\n }\n }\n } else {\n allowPassthrough = true;\n }\n return allowPassthrough;\n };\n var setGrabbed = function setGrabbed(ele) {\n ele[0]._private.grabbed = true;\n };\n var setFreed = function setFreed(ele) {\n ele[0]._private.grabbed = false;\n };\n var setInDragLayer = function setInDragLayer(ele) {\n ele[0]._private.rscratch.inDragLayer = true;\n };\n var setOutDragLayer = function setOutDragLayer(ele) {\n ele[0]._private.rscratch.inDragLayer = false;\n };\n var setGrabTarget = function setGrabTarget(ele) {\n ele[0]._private.rscratch.isGrabTarget = true;\n };\n var removeGrabTarget = function removeGrabTarget(ele) {\n ele[0]._private.rscratch.isGrabTarget = false;\n };\n var addToDragList = function addToDragList(ele, opts) {\n var list = opts.addToList;\n var listHasEle = list.has(ele);\n if (!listHasEle && ele.grabbable() && !ele.locked()) {\n list.merge(ele);\n setGrabbed(ele);\n }\n };\n\n // helper function to determine which child nodes and inner edges\n // of a compound node to be dragged as well as the grabbed and selected nodes\n var addDescendantsToDrag = function addDescendantsToDrag(node, opts) {\n if (!node.cy().hasCompoundNodes()) {\n return;\n }\n if (opts.inDragLayer == null && opts.addToList == null) {\n return;\n } // nothing to do\n\n var innerNodes = node.descendants();\n if (opts.inDragLayer) {\n innerNodes.forEach(setInDragLayer);\n innerNodes.connectedEdges().forEach(setInDragLayer);\n }\n if (opts.addToList) {\n addToDragList(innerNodes, opts);\n }\n };\n\n // adds the given nodes and its neighbourhood to the drag layer\n var addNodesToDrag = function addNodesToDrag(nodes, opts) {\n opts = opts || {};\n var hasCompoundNodes = nodes.cy().hasCompoundNodes();\n if (opts.inDragLayer) {\n nodes.forEach(setInDragLayer);\n nodes.neighborhood().stdFilter(function (ele) {\n return !hasCompoundNodes || ele.isEdge();\n }).forEach(setInDragLayer);\n }\n if (opts.addToList) {\n nodes.forEach(function (ele) {\n addToDragList(ele, opts);\n });\n }\n addDescendantsToDrag(nodes, opts); // always add to drag\n\n // also add nodes and edges related to the topmost ancestor\n updateAncestorsInDragLayer(nodes, {\n inDragLayer: opts.inDragLayer\n });\n r.updateCachedGrabbedEles();\n };\n var addNodeToDrag = addNodesToDrag;\n var freeDraggedElements = function freeDraggedElements(grabbedEles) {\n if (!grabbedEles) {\n return;\n }\n\n // just go over all elements rather than doing a bunch of (possibly expensive) traversals\n r.getCachedZSortedEles().forEach(function (ele) {\n setFreed(ele);\n setOutDragLayer(ele);\n removeGrabTarget(ele);\n });\n r.updateCachedGrabbedEles();\n };\n\n // helper function to determine which ancestor nodes and edges should go\n // to the drag layer (or should be removed from drag layer).\n var updateAncestorsInDragLayer = function updateAncestorsInDragLayer(node, opts) {\n if (opts.inDragLayer == null && opts.addToList == null) {\n return;\n } // nothing to do\n\n if (!node.cy().hasCompoundNodes()) {\n return;\n }\n\n // find top-level parent\n var parent = node.ancestors().orphans();\n\n // no parent node: no nodes to add to the drag layer\n if (parent.same(node)) {\n return;\n }\n var nodes = parent.descendants().spawnSelf().merge(parent).unmerge(node).unmerge(node.descendants());\n var edges = nodes.connectedEdges();\n if (opts.inDragLayer) {\n edges.forEach(setInDragLayer);\n nodes.forEach(setInDragLayer);\n }\n if (opts.addToList) {\n nodes.forEach(function (ele) {\n addToDragList(ele, opts);\n });\n }\n };\n var blurActiveDomElement = function blurActiveDomElement() {\n if (document.activeElement != null && document.activeElement.blur != null) {\n document.activeElement.blur();\n }\n };\n var haveMutationsApi = typeof MutationObserver !== 'undefined';\n var haveResizeObserverApi = typeof ResizeObserver !== 'undefined';\n\n // watch for when the cy container is removed from the dom\n if (haveMutationsApi) {\n r.removeObserver = new MutationObserver(function (mutns) {\n // eslint-disable-line no-undef\n for (var i = 0; i < mutns.length; i++) {\n var mutn = mutns[i];\n var rNodes = mutn.removedNodes;\n if (rNodes) {\n for (var j = 0; j < rNodes.length; j++) {\n var rNode = rNodes[j];\n if (rNode === r.container) {\n r.destroy();\n break;\n }\n }\n }\n }\n });\n if (r.container.parentNode) {\n r.removeObserver.observe(r.container.parentNode, {\n childList: true\n });\n }\n } else {\n r.registerBinding(r.container, 'DOMNodeRemoved', function (e) {\n // eslint-disable-line no-unused-vars\n r.destroy();\n });\n }\n var onResize = debounce__default[\"default\"](function () {\n r.cy.resize();\n }, 100);\n if (haveMutationsApi) {\n r.styleObserver = new MutationObserver(onResize); // eslint-disable-line no-undef\n\n r.styleObserver.observe(r.container, {\n attributes: true\n });\n }\n\n // auto resize\n r.registerBinding(containerWindow, 'resize', onResize); // eslint-disable-line no-undef\n\n if (haveResizeObserverApi) {\n r.resizeObserver = new ResizeObserver(onResize); // eslint-disable-line no-undef\n\n r.resizeObserver.observe(r.container);\n }\n var forEachUp = function forEachUp(domEle, fn) {\n while (domEle != null) {\n fn(domEle);\n domEle = domEle.parentNode;\n }\n };\n var invalidateCoords = function invalidateCoords() {\n r.invalidateContainerClientCoordsCache();\n };\n forEachUp(r.container, function (domEle) {\n r.registerBinding(domEle, 'transitionend', invalidateCoords);\n r.registerBinding(domEle, 'animationend', invalidateCoords);\n r.registerBinding(domEle, 'scroll', invalidateCoords);\n });\n\n // stop right click menu from appearing on cy\n r.registerBinding(r.container, 'contextmenu', function (e) {\n e.preventDefault();\n });\n var inBoxSelection = function inBoxSelection() {\n return r.selection[4] !== 0;\n };\n var eventInContainer = function eventInContainer(e) {\n // save cycles if mouse events aren't to be captured\n var containerPageCoords = r.findContainerClientCoords();\n var x = containerPageCoords[0];\n var y = containerPageCoords[1];\n var width = containerPageCoords[2];\n var height = containerPageCoords[3];\n var positions = e.touches ? e.touches : [e];\n var atLeastOnePosInside = false;\n for (var i = 0; i < positions.length; i++) {\n var p = positions[i];\n if (x <= p.clientX && p.clientX <= x + width && y <= p.clientY && p.clientY <= y + height) {\n atLeastOnePosInside = true;\n break;\n }\n }\n if (!atLeastOnePosInside) {\n return false;\n }\n var container = r.container;\n var target = e.target;\n var tParent = target.parentNode;\n var containerIsTarget = false;\n while (tParent) {\n if (tParent === container) {\n containerIsTarget = true;\n break;\n }\n tParent = tParent.parentNode;\n }\n if (!containerIsTarget) {\n return false;\n } // if target is outisde cy container, then this event is not for us\n\n return true;\n };\n\n // Primary key\n r.registerBinding(r.container, 'mousedown', function mousedownHandler(e) {\n if (!eventInContainer(e)) {\n return;\n }\n e.preventDefault();\n blurActiveDomElement();\n r.hoverData.capture = true;\n r.hoverData.which = e.which;\n var cy = r.cy;\n var gpos = [e.clientX, e.clientY];\n var pos = r.projectIntoViewport(gpos[0], gpos[1]);\n var select = r.selection;\n var nears = r.findNearestElements(pos[0], pos[1], true, false);\n var near = nears[0];\n var draggedElements = r.dragData.possibleDragElements;\n r.hoverData.mdownPos = pos;\n r.hoverData.mdownGPos = gpos;\n var checkForTaphold = function checkForTaphold() {\n r.hoverData.tapholdCancelled = false;\n clearTimeout(r.hoverData.tapholdTimeout);\n r.hoverData.tapholdTimeout = setTimeout(function () {\n if (r.hoverData.tapholdCancelled) {\n return;\n } else {\n var ele = r.hoverData.down;\n if (ele) {\n ele.emit({\n originalEvent: e,\n type: 'taphold',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n } else {\n cy.emit({\n originalEvent: e,\n type: 'taphold',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }\n }\n }, r.tapholdDuration);\n };\n\n // Right click button\n if (e.which == 3) {\n r.hoverData.cxtStarted = true;\n var cxtEvt = {\n originalEvent: e,\n type: 'cxttapstart',\n position: {\n x: pos[0],\n y: pos[1]\n }\n };\n if (near) {\n near.activate();\n near.emit(cxtEvt);\n r.hoverData.down = near;\n } else {\n cy.emit(cxtEvt);\n }\n r.hoverData.downTime = new Date().getTime();\n r.hoverData.cxtDragged = false;\n\n // Primary button\n } else if (e.which == 1) {\n if (near) {\n near.activate();\n }\n\n // Element dragging\n {\n // If something is under the cursor and it is draggable, prepare to grab it\n if (near != null) {\n if (r.nodeIsGrabbable(near)) {\n var makeEvent = function makeEvent(type) {\n return {\n originalEvent: e,\n type: type,\n position: {\n x: pos[0],\n y: pos[1]\n }\n };\n };\n var triggerGrab = function triggerGrab(ele) {\n ele.emit(makeEvent('grab'));\n };\n setGrabTarget(near);\n if (!near.selected()) {\n draggedElements = r.dragData.possibleDragElements = cy.collection();\n addNodeToDrag(near, {\n addToList: draggedElements\n });\n near.emit(makeEvent('grabon')).emit(makeEvent('grab'));\n } else {\n draggedElements = r.dragData.possibleDragElements = cy.collection();\n var selectedNodes = cy.$(function (ele) {\n return ele.isNode() && ele.selected() && r.nodeIsGrabbable(ele);\n });\n addNodesToDrag(selectedNodes, {\n addToList: draggedElements\n });\n near.emit(makeEvent('grabon'));\n selectedNodes.forEach(triggerGrab);\n }\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n }\n }\n r.hoverData.down = near;\n r.hoverData.downs = nears;\n r.hoverData.downTime = new Date().getTime();\n }\n triggerEvents(near, ['mousedown', 'tapstart', 'vmousedown'], e, {\n x: pos[0],\n y: pos[1]\n });\n if (near == null) {\n select[4] = 1;\n r.data.bgActivePosistion = {\n x: pos[0],\n y: pos[1]\n };\n r.redrawHint('select', true);\n r.redraw();\n } else if (near.pannable()) {\n select[4] = 1; // for future pan\n }\n\n checkForTaphold();\n }\n\n // Initialize selection box coordinates\n select[0] = select[2] = pos[0];\n select[1] = select[3] = pos[1];\n }, false);\n r.registerBinding(containerWindow, 'mousemove', function mousemoveHandler(e) {\n // eslint-disable-line no-undef\n var capture = r.hoverData.capture;\n if (!capture && !eventInContainer(e)) {\n return;\n }\n var preventDefault = false;\n var cy = r.cy;\n var zoom = cy.zoom();\n var gpos = [e.clientX, e.clientY];\n var pos = r.projectIntoViewport(gpos[0], gpos[1]);\n var mdownPos = r.hoverData.mdownPos;\n var mdownGPos = r.hoverData.mdownGPos;\n var select = r.selection;\n var near = null;\n if (!r.hoverData.draggingEles && !r.hoverData.dragging && !r.hoverData.selecting) {\n near = r.findNearestElement(pos[0], pos[1], true, false);\n }\n var last = r.hoverData.last;\n var down = r.hoverData.down;\n var disp = [pos[0] - select[2], pos[1] - select[3]];\n var draggedElements = r.dragData.possibleDragElements;\n var isOverThresholdDrag;\n if (mdownGPos) {\n var dx = gpos[0] - mdownGPos[0];\n var dx2 = dx * dx;\n var dy = gpos[1] - mdownGPos[1];\n var dy2 = dy * dy;\n var dist2 = dx2 + dy2;\n r.hoverData.isOverThresholdDrag = isOverThresholdDrag = dist2 >= r.desktopTapThreshold2;\n }\n var multSelKeyDown = isMultSelKeyDown(e);\n if (isOverThresholdDrag) {\n r.hoverData.tapholdCancelled = true;\n }\n var updateDragDelta = function updateDragDelta() {\n var dragDelta = r.hoverData.dragDelta = r.hoverData.dragDelta || [];\n if (dragDelta.length === 0) {\n dragDelta.push(disp[0]);\n dragDelta.push(disp[1]);\n } else {\n dragDelta[0] += disp[0];\n dragDelta[1] += disp[1];\n }\n };\n preventDefault = true;\n triggerEvents(near, ['mousemove', 'vmousemove', 'tapdrag'], e, {\n x: pos[0],\n y: pos[1]\n });\n var goIntoBoxMode = function goIntoBoxMode() {\n r.data.bgActivePosistion = undefined;\n if (!r.hoverData.selecting) {\n cy.emit({\n originalEvent: e,\n type: 'boxstart',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }\n select[4] = 1;\n r.hoverData.selecting = true;\n r.redrawHint('select', true);\n r.redraw();\n };\n\n // trigger context drag if rmouse down\n if (r.hoverData.which === 3) {\n // but only if over threshold\n if (isOverThresholdDrag) {\n var cxtEvt = {\n originalEvent: e,\n type: 'cxtdrag',\n position: {\n x: pos[0],\n y: pos[1]\n }\n };\n if (down) {\n down.emit(cxtEvt);\n } else {\n cy.emit(cxtEvt);\n }\n r.hoverData.cxtDragged = true;\n if (!r.hoverData.cxtOver || near !== r.hoverData.cxtOver) {\n if (r.hoverData.cxtOver) {\n r.hoverData.cxtOver.emit({\n originalEvent: e,\n type: 'cxtdragout',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }\n r.hoverData.cxtOver = near;\n if (near) {\n near.emit({\n originalEvent: e,\n type: 'cxtdragover',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }\n }\n }\n\n // Check if we are drag panning the entire graph\n } else if (r.hoverData.dragging) {\n preventDefault = true;\n if (cy.panningEnabled() && cy.userPanningEnabled()) {\n var deltaP;\n if (r.hoverData.justStartedPan) {\n var mdPos = r.hoverData.mdownPos;\n deltaP = {\n x: (pos[0] - mdPos[0]) * zoom,\n y: (pos[1] - mdPos[1]) * zoom\n };\n r.hoverData.justStartedPan = false;\n } else {\n deltaP = {\n x: disp[0] * zoom,\n y: disp[1] * zoom\n };\n }\n cy.panBy(deltaP);\n cy.emit('dragpan');\n r.hoverData.dragged = true;\n }\n\n // Needs reproject due to pan changing viewport\n pos = r.projectIntoViewport(e.clientX, e.clientY);\n\n // Checks primary button down & out of time & mouse not moved much\n } else if (select[4] == 1 && (down == null || down.pannable())) {\n if (isOverThresholdDrag) {\n if (!r.hoverData.dragging && cy.boxSelectionEnabled() && (multSelKeyDown || !cy.panningEnabled() || !cy.userPanningEnabled())) {\n goIntoBoxMode();\n } else if (!r.hoverData.selecting && cy.panningEnabled() && cy.userPanningEnabled()) {\n var allowPassthrough = allowPanningPassthrough(down, r.hoverData.downs);\n if (allowPassthrough) {\n r.hoverData.dragging = true;\n r.hoverData.justStartedPan = true;\n select[4] = 0;\n r.data.bgActivePosistion = array2point(mdownPos);\n r.redrawHint('select', true);\n r.redraw();\n }\n }\n if (down && down.pannable() && down.active()) {\n down.unactivate();\n }\n }\n } else {\n if (down && down.pannable() && down.active()) {\n down.unactivate();\n }\n if ((!down || !down.grabbed()) && near != last) {\n if (last) {\n triggerEvents(last, ['mouseout', 'tapdragout'], e, {\n x: pos[0],\n y: pos[1]\n });\n }\n if (near) {\n triggerEvents(near, ['mouseover', 'tapdragover'], e, {\n x: pos[0],\n y: pos[1]\n });\n }\n r.hoverData.last = near;\n }\n if (down) {\n if (isOverThresholdDrag) {\n // then we can take action\n\n if (cy.boxSelectionEnabled() && multSelKeyDown) {\n // then selection overrides\n if (down && down.grabbed()) {\n freeDraggedElements(draggedElements);\n down.emit('freeon');\n draggedElements.emit('free');\n if (r.dragData.didDrag) {\n down.emit('dragfreeon');\n draggedElements.emit('dragfree');\n }\n }\n goIntoBoxMode();\n } else if (down && down.grabbed() && r.nodeIsDraggable(down)) {\n // drag node\n var justStartedDrag = !r.dragData.didDrag;\n if (justStartedDrag) {\n r.redrawHint('eles', true);\n }\n r.dragData.didDrag = true; // indicate that we actually did drag the node\n\n // now, add the elements to the drag layer if not done already\n if (!r.hoverData.draggingEles) {\n addNodesToDrag(draggedElements, {\n inDragLayer: true\n });\n }\n var totalShift = {\n x: 0,\n y: 0\n };\n if (number$1(disp[0]) && number$1(disp[1])) {\n totalShift.x += disp[0];\n totalShift.y += disp[1];\n if (justStartedDrag) {\n var dragDelta = r.hoverData.dragDelta;\n if (dragDelta && number$1(dragDelta[0]) && number$1(dragDelta[1])) {\n totalShift.x += dragDelta[0];\n totalShift.y += dragDelta[1];\n }\n }\n }\n r.hoverData.draggingEles = true;\n draggedElements.silentShift(totalShift).emit('position drag');\n r.redrawHint('drag', true);\n r.redraw();\n }\n } else {\n // otherwise save drag delta for when we actually start dragging so the relative grab pos is constant\n updateDragDelta();\n }\n }\n\n // prevent the dragging from triggering text selection on the page\n preventDefault = true;\n }\n select[2] = pos[0];\n select[3] = pos[1];\n if (preventDefault) {\n if (e.stopPropagation) e.stopPropagation();\n if (e.preventDefault) e.preventDefault();\n return false;\n }\n }, false);\n var clickTimeout, didDoubleClick, prevClickTimeStamp;\n r.registerBinding(containerWindow, 'mouseup', function mouseupHandler(e) {\n // eslint-disable-line no-undef\n var capture = r.hoverData.capture;\n if (!capture) {\n return;\n }\n r.hoverData.capture = false;\n var cy = r.cy;\n var pos = r.projectIntoViewport(e.clientX, e.clientY);\n var select = r.selection;\n var near = r.findNearestElement(pos[0], pos[1], true, false);\n var draggedElements = r.dragData.possibleDragElements;\n var down = r.hoverData.down;\n var multSelKeyDown = isMultSelKeyDown(e);\n if (r.data.bgActivePosistion) {\n r.redrawHint('select', true);\n r.redraw();\n }\n r.hoverData.tapholdCancelled = true;\n r.data.bgActivePosistion = undefined; // not active bg now\n\n if (down) {\n down.unactivate();\n }\n if (r.hoverData.which === 3) {\n var cxtEvt = {\n originalEvent: e,\n type: 'cxttapend',\n position: {\n x: pos[0],\n y: pos[1]\n }\n };\n if (down) {\n down.emit(cxtEvt);\n } else {\n cy.emit(cxtEvt);\n }\n if (!r.hoverData.cxtDragged) {\n var cxtTap = {\n originalEvent: e,\n type: 'cxttap',\n position: {\n x: pos[0],\n y: pos[1]\n }\n };\n if (down) {\n down.emit(cxtTap);\n } else {\n cy.emit(cxtTap);\n }\n }\n r.hoverData.cxtDragged = false;\n r.hoverData.which = null;\n } else if (r.hoverData.which === 1) {\n triggerEvents(near, ['mouseup', 'tapend', 'vmouseup'], e, {\n x: pos[0],\n y: pos[1]\n });\n if (!r.dragData.didDrag &&\n // didn't move a node around\n !r.hoverData.dragged &&\n // didn't pan\n !r.hoverData.selecting &&\n // not box selection\n !r.hoverData.isOverThresholdDrag // didn't move too much\n ) {\n triggerEvents(down, [\"click\", \"tap\", \"vclick\"], e, {\n x: pos[0],\n y: pos[1]\n });\n didDoubleClick = false;\n if (e.timeStamp - prevClickTimeStamp <= cy.multiClickDebounceTime()) {\n clickTimeout && clearTimeout(clickTimeout);\n didDoubleClick = true;\n prevClickTimeStamp = null;\n triggerEvents(down, [\"dblclick\", \"dbltap\", \"vdblclick\"], e, {\n x: pos[0],\n y: pos[1]\n });\n } else {\n clickTimeout = setTimeout(function () {\n if (didDoubleClick) return;\n triggerEvents(down, [\"oneclick\", \"onetap\", \"voneclick\"], e, {\n x: pos[0],\n y: pos[1]\n });\n }, cy.multiClickDebounceTime());\n prevClickTimeStamp = e.timeStamp;\n }\n }\n\n // Deselect all elements if nothing is currently under the mouse cursor and we aren't dragging something\n if (down == null // not mousedown on node\n && !r.dragData.didDrag // didn't move the node around\n && !r.hoverData.selecting // not box selection\n && !r.hoverData.dragged // didn't pan\n && !isMultSelKeyDown(e)) {\n cy.$(isSelected).unselect(['tapunselect']);\n if (draggedElements.length > 0) {\n r.redrawHint('eles', true);\n }\n r.dragData.possibleDragElements = draggedElements = cy.collection();\n }\n\n // Single selection\n if (near == down && !r.dragData.didDrag && !r.hoverData.selecting) {\n if (near != null && near._private.selectable) {\n if (r.hoverData.dragging) ; else if (cy.selectionType() === 'additive' || multSelKeyDown) {\n if (near.selected()) {\n near.unselect(['tapunselect']);\n } else {\n near.select(['tapselect']);\n }\n } else {\n if (!multSelKeyDown) {\n cy.$(isSelected).unmerge(near).unselect(['tapunselect']);\n near.select(['tapselect']);\n }\n }\n r.redrawHint('eles', true);\n }\n }\n if (r.hoverData.selecting) {\n var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3]));\n r.redrawHint('select', true);\n if (box.length > 0) {\n r.redrawHint('eles', true);\n }\n cy.emit({\n type: 'boxend',\n originalEvent: e,\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n var eleWouldBeSelected = function eleWouldBeSelected(ele) {\n return ele.selectable() && !ele.selected();\n };\n if (cy.selectionType() === 'additive') {\n box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect');\n } else {\n if (!multSelKeyDown) {\n cy.$(isSelected).unmerge(box).unselect();\n }\n box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect');\n }\n\n // always need redraw in case eles unselectable\n r.redraw();\n }\n\n // Cancel drag pan\n if (r.hoverData.dragging) {\n r.hoverData.dragging = false;\n r.redrawHint('select', true);\n r.redrawHint('eles', true);\n r.redraw();\n }\n if (!select[4]) {\n r.redrawHint('drag', true);\n r.redrawHint('eles', true);\n var downWasGrabbed = down && down.grabbed();\n freeDraggedElements(draggedElements);\n if (downWasGrabbed) {\n down.emit('freeon');\n draggedElements.emit('free');\n if (r.dragData.didDrag) {\n down.emit('dragfreeon');\n draggedElements.emit('dragfree');\n }\n }\n }\n } // else not right mouse\n\n select[4] = 0;\n r.hoverData.down = null;\n r.hoverData.cxtStarted = false;\n r.hoverData.draggingEles = false;\n r.hoverData.selecting = false;\n r.hoverData.isOverThresholdDrag = false;\n r.dragData.didDrag = false;\n r.hoverData.dragged = false;\n r.hoverData.dragDelta = [];\n r.hoverData.mdownPos = null;\n r.hoverData.mdownGPos = null;\n }, false);\n var wheelHandler = function wheelHandler(e) {\n if (r.scrollingPage) {\n return;\n } // while scrolling, ignore wheel-to-zoom\n\n var cy = r.cy;\n var zoom = cy.zoom();\n var pan = cy.pan();\n var pos = r.projectIntoViewport(e.clientX, e.clientY);\n var rpos = [pos[0] * zoom + pan.x, pos[1] * zoom + pan.y];\n if (r.hoverData.draggingEles || r.hoverData.dragging || r.hoverData.cxtStarted || inBoxSelection()) {\n // if pan dragging or cxt dragging, wheel movements make no zoom\n e.preventDefault();\n return;\n }\n if (cy.panningEnabled() && cy.userPanningEnabled() && cy.zoomingEnabled() && cy.userZoomingEnabled()) {\n e.preventDefault();\n r.data.wheelZooming = true;\n clearTimeout(r.data.wheelTimeout);\n r.data.wheelTimeout = setTimeout(function () {\n r.data.wheelZooming = false;\n r.redrawHint('eles', true);\n r.redraw();\n }, 150);\n var diff;\n if (e.deltaY != null) {\n diff = e.deltaY / -250;\n } else if (e.wheelDeltaY != null) {\n diff = e.wheelDeltaY / 1000;\n } else {\n diff = e.wheelDelta / 1000;\n }\n diff = diff * r.wheelSensitivity;\n var needsWheelFix = e.deltaMode === 1;\n if (needsWheelFix) {\n // fixes slow wheel events on ff/linux and ff/windows\n diff *= 33;\n }\n var newZoom = cy.zoom() * Math.pow(10, diff);\n if (e.type === 'gesturechange') {\n newZoom = r.gestureStartZoom * e.scale;\n }\n cy.zoom({\n level: newZoom,\n renderedPosition: {\n x: rpos[0],\n y: rpos[1]\n }\n });\n cy.emit(e.type === 'gesturechange' ? 'pinchzoom' : 'scrollzoom');\n }\n };\n\n // Functions to help with whether mouse wheel should trigger zooming\n // --\n r.registerBinding(r.container, 'wheel', wheelHandler, true);\n\n // disable nonstandard wheel events\n // r.registerBinding(r.container, 'mousewheel', wheelHandler, true);\n // r.registerBinding(r.container, 'DOMMouseScroll', wheelHandler, true);\n // r.registerBinding(r.container, 'MozMousePixelScroll', wheelHandler, true); // older firefox\n\n r.registerBinding(containerWindow, 'scroll', function scrollHandler(e) {\n // eslint-disable-line no-unused-vars\n r.scrollingPage = true;\n clearTimeout(r.scrollingPageTimeout);\n r.scrollingPageTimeout = setTimeout(function () {\n r.scrollingPage = false;\n }, 250);\n }, true);\n\n // desktop safari pinch to zoom start\n r.registerBinding(r.container, 'gesturestart', function gestureStartHandler(e) {\n r.gestureStartZoom = r.cy.zoom();\n if (!r.hasTouchStarted) {\n // don't affect touch devices like iphone\n e.preventDefault();\n }\n }, true);\n r.registerBinding(r.container, 'gesturechange', function (e) {\n if (!r.hasTouchStarted) {\n // don't affect touch devices like iphone\n wheelHandler(e);\n }\n }, true);\n\n // Functions to help with handling mouseout/mouseover on the Cytoscape container\n // Handle mouseout on Cytoscape container\n r.registerBinding(r.container, 'mouseout', function mouseOutHandler(e) {\n var pos = r.projectIntoViewport(e.clientX, e.clientY);\n r.cy.emit({\n originalEvent: e,\n type: 'mouseout',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }, false);\n r.registerBinding(r.container, 'mouseover', function mouseOverHandler(e) {\n var pos = r.projectIntoViewport(e.clientX, e.clientY);\n r.cy.emit({\n originalEvent: e,\n type: 'mouseover',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }, false);\n var f1x1, f1y1, f2x1, f2y1; // starting points for pinch-to-zoom\n var distance1, distance1Sq; // initial distance between finger 1 and finger 2 for pinch-to-zoom\n var center1, modelCenter1; // center point on start pinch to zoom\n var offsetLeft, offsetTop;\n var containerWidth, containerHeight;\n var twoFingersStartInside;\n var distance = function distance(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n };\n var distanceSq = function distanceSq(x1, y1, x2, y2) {\n return (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);\n };\n var touchstartHandler;\n r.registerBinding(r.container, 'touchstart', touchstartHandler = function touchstartHandler(e) {\n r.hasTouchStarted = true;\n if (!eventInContainer(e)) {\n return;\n }\n blurActiveDomElement();\n r.touchData.capture = true;\n r.data.bgActivePosistion = undefined;\n var cy = r.cy;\n var now = r.touchData.now;\n var earlier = r.touchData.earlier;\n if (e.touches[0]) {\n var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n now[0] = pos[0];\n now[1] = pos[1];\n }\n if (e.touches[1]) {\n var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);\n now[2] = pos[0];\n now[3] = pos[1];\n }\n if (e.touches[2]) {\n var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);\n now[4] = pos[0];\n now[5] = pos[1];\n }\n\n // record starting points for pinch-to-zoom\n if (e.touches[1]) {\n r.touchData.singleTouchMoved = true;\n freeDraggedElements(r.dragData.touchDragEles);\n var offsets = r.findContainerClientCoords();\n offsetLeft = offsets[0];\n offsetTop = offsets[1];\n containerWidth = offsets[2];\n containerHeight = offsets[3];\n f1x1 = e.touches[0].clientX - offsetLeft;\n f1y1 = e.touches[0].clientY - offsetTop;\n f2x1 = e.touches[1].clientX - offsetLeft;\n f2y1 = e.touches[1].clientY - offsetTop;\n twoFingersStartInside = 0 <= f1x1 && f1x1 <= containerWidth && 0 <= f2x1 && f2x1 <= containerWidth && 0 <= f1y1 && f1y1 <= containerHeight && 0 <= f2y1 && f2y1 <= containerHeight;\n var pan = cy.pan();\n var zoom = cy.zoom();\n distance1 = distance(f1x1, f1y1, f2x1, f2y1);\n distance1Sq = distanceSq(f1x1, f1y1, f2x1, f2y1);\n center1 = [(f1x1 + f2x1) / 2, (f1y1 + f2y1) / 2];\n modelCenter1 = [(center1[0] - pan.x) / zoom, (center1[1] - pan.y) / zoom];\n\n // consider context tap\n var cxtDistThreshold = 200;\n var cxtDistThresholdSq = cxtDistThreshold * cxtDistThreshold;\n if (distance1Sq < cxtDistThresholdSq && !e.touches[2]) {\n var near1 = r.findNearestElement(now[0], now[1], true, true);\n var near2 = r.findNearestElement(now[2], now[3], true, true);\n if (near1 && near1.isNode()) {\n near1.activate().emit({\n originalEvent: e,\n type: 'cxttapstart',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n r.touchData.start = near1;\n } else if (near2 && near2.isNode()) {\n near2.activate().emit({\n originalEvent: e,\n type: 'cxttapstart',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n r.touchData.start = near2;\n } else {\n cy.emit({\n originalEvent: e,\n type: 'cxttapstart',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n if (r.touchData.start) {\n r.touchData.start._private.grabbed = false;\n }\n r.touchData.cxt = true;\n r.touchData.cxtDragged = false;\n r.data.bgActivePosistion = undefined;\n r.redraw();\n return;\n }\n }\n if (e.touches[2]) {\n // ignore\n\n // safari on ios pans the page otherwise (normally you should be able to preventdefault on touchmove...)\n if (cy.boxSelectionEnabled()) {\n e.preventDefault();\n }\n } else if (e.touches[1]) ; else if (e.touches[0]) {\n var nears = r.findNearestElements(now[0], now[1], true, true);\n var near = nears[0];\n if (near != null) {\n near.activate();\n r.touchData.start = near;\n r.touchData.starts = nears;\n if (r.nodeIsGrabbable(near)) {\n var draggedEles = r.dragData.touchDragEles = cy.collection();\n var selectedNodes = null;\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n if (near.selected()) {\n // reset drag elements, since near will be added again\n\n selectedNodes = cy.$(function (ele) {\n return ele.selected() && r.nodeIsGrabbable(ele);\n });\n addNodesToDrag(selectedNodes, {\n addToList: draggedEles\n });\n } else {\n addNodeToDrag(near, {\n addToList: draggedEles\n });\n }\n setGrabTarget(near);\n var makeEvent = function makeEvent(type) {\n return {\n originalEvent: e,\n type: type,\n position: {\n x: now[0],\n y: now[1]\n }\n };\n };\n near.emit(makeEvent('grabon'));\n if (selectedNodes) {\n selectedNodes.forEach(function (n) {\n n.emit(makeEvent('grab'));\n });\n } else {\n near.emit(makeEvent('grab'));\n }\n }\n }\n triggerEvents(near, ['touchstart', 'tapstart', 'vmousedown'], e, {\n x: now[0],\n y: now[1]\n });\n if (near == null) {\n r.data.bgActivePosistion = {\n x: pos[0],\n y: pos[1]\n };\n r.redrawHint('select', true);\n r.redraw();\n }\n\n // Tap, taphold\n // -----\n\n r.touchData.singleTouchMoved = false;\n r.touchData.singleTouchStartTime = +new Date();\n clearTimeout(r.touchData.tapholdTimeout);\n r.touchData.tapholdTimeout = setTimeout(function () {\n if (r.touchData.singleTouchMoved === false && !r.pinching // if pinching, then taphold unselect shouldn't take effect\n && !r.touchData.selecting // box selection shouldn't allow taphold through\n ) {\n triggerEvents(r.touchData.start, ['taphold'], e, {\n x: now[0],\n y: now[1]\n });\n }\n }, r.tapholdDuration);\n }\n if (e.touches.length >= 1) {\n var sPos = r.touchData.startPosition = [null, null, null, null, null, null];\n for (var i = 0; i < now.length; i++) {\n sPos[i] = earlier[i] = now[i];\n }\n var touch0 = e.touches[0];\n r.touchData.startGPosition = [touch0.clientX, touch0.clientY];\n }\n }, false);\n var touchmoveHandler;\n r.registerBinding(window, 'touchmove', touchmoveHandler = function touchmoveHandler(e) {\n // eslint-disable-line no-undef\n var capture = r.touchData.capture;\n if (!capture && !eventInContainer(e)) {\n return;\n }\n var select = r.selection;\n var cy = r.cy;\n var now = r.touchData.now;\n var earlier = r.touchData.earlier;\n var zoom = cy.zoom();\n if (e.touches[0]) {\n var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n now[0] = pos[0];\n now[1] = pos[1];\n }\n if (e.touches[1]) {\n var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);\n now[2] = pos[0];\n now[3] = pos[1];\n }\n if (e.touches[2]) {\n var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);\n now[4] = pos[0];\n now[5] = pos[1];\n }\n var startGPos = r.touchData.startGPosition;\n var isOverThresholdDrag;\n if (capture && e.touches[0] && startGPos) {\n var disp = [];\n for (var j = 0; j < now.length; j++) {\n disp[j] = now[j] - earlier[j];\n }\n var dx = e.touches[0].clientX - startGPos[0];\n var dx2 = dx * dx;\n var dy = e.touches[0].clientY - startGPos[1];\n var dy2 = dy * dy;\n var dist2 = dx2 + dy2;\n isOverThresholdDrag = dist2 >= r.touchTapThreshold2;\n }\n\n // context swipe cancelling\n if (capture && r.touchData.cxt) {\n e.preventDefault();\n var f1x2 = e.touches[0].clientX - offsetLeft,\n f1y2 = e.touches[0].clientY - offsetTop;\n var f2x2 = e.touches[1].clientX - offsetLeft,\n f2y2 = e.touches[1].clientY - offsetTop;\n // var distance2 = distance( f1x2, f1y2, f2x2, f2y2 );\n var distance2Sq = distanceSq(f1x2, f1y2, f2x2, f2y2);\n var factorSq = distance2Sq / distance1Sq;\n var distThreshold = 150;\n var distThresholdSq = distThreshold * distThreshold;\n var factorThreshold = 1.5;\n var factorThresholdSq = factorThreshold * factorThreshold;\n\n // cancel ctx gestures if the distance b/t the fingers increases\n if (factorSq >= factorThresholdSq || distance2Sq >= distThresholdSq) {\n r.touchData.cxt = false;\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n var cxtEvt = {\n originalEvent: e,\n type: 'cxttapend',\n position: {\n x: now[0],\n y: now[1]\n }\n };\n if (r.touchData.start) {\n r.touchData.start.unactivate().emit(cxtEvt);\n r.touchData.start = null;\n } else {\n cy.emit(cxtEvt);\n }\n }\n }\n\n // context swipe\n if (capture && r.touchData.cxt) {\n var cxtEvt = {\n originalEvent: e,\n type: 'cxtdrag',\n position: {\n x: now[0],\n y: now[1]\n }\n };\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n if (r.touchData.start) {\n r.touchData.start.emit(cxtEvt);\n } else {\n cy.emit(cxtEvt);\n }\n if (r.touchData.start) {\n r.touchData.start._private.grabbed = false;\n }\n r.touchData.cxtDragged = true;\n var near = r.findNearestElement(now[0], now[1], true, true);\n if (!r.touchData.cxtOver || near !== r.touchData.cxtOver) {\n if (r.touchData.cxtOver) {\n r.touchData.cxtOver.emit({\n originalEvent: e,\n type: 'cxtdragout',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n r.touchData.cxtOver = near;\n if (near) {\n near.emit({\n originalEvent: e,\n type: 'cxtdragover',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n }\n\n // box selection\n } else if (capture && e.touches[2] && cy.boxSelectionEnabled()) {\n e.preventDefault();\n r.data.bgActivePosistion = undefined;\n this.lastThreeTouch = +new Date();\n if (!r.touchData.selecting) {\n cy.emit({\n originalEvent: e,\n type: 'boxstart',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n r.touchData.selecting = true;\n r.touchData.didSelect = true;\n select[4] = 1;\n if (!select || select.length === 0 || select[0] === undefined) {\n select[0] = (now[0] + now[2] + now[4]) / 3;\n select[1] = (now[1] + now[3] + now[5]) / 3;\n select[2] = (now[0] + now[2] + now[4]) / 3 + 1;\n select[3] = (now[1] + now[3] + now[5]) / 3 + 1;\n } else {\n select[2] = (now[0] + now[2] + now[4]) / 3;\n select[3] = (now[1] + now[3] + now[5]) / 3;\n }\n r.redrawHint('select', true);\n r.redraw();\n\n // pinch to zoom\n } else if (capture && e.touches[1] && !r.touchData.didSelect // don't allow box selection to degrade to pinch-to-zoom\n && cy.zoomingEnabled() && cy.panningEnabled() && cy.userZoomingEnabled() && cy.userPanningEnabled()) {\n // two fingers => pinch to zoom\n e.preventDefault();\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n var draggedEles = r.dragData.touchDragEles;\n if (draggedEles) {\n r.redrawHint('drag', true);\n for (var i = 0; i < draggedEles.length; i++) {\n var de_p = draggedEles[i]._private;\n de_p.grabbed = false;\n de_p.rscratch.inDragLayer = false;\n }\n }\n var _start = r.touchData.start;\n\n // (x2, y2) for fingers 1 and 2\n var f1x2 = e.touches[0].clientX - offsetLeft,\n f1y2 = e.touches[0].clientY - offsetTop;\n var f2x2 = e.touches[1].clientX - offsetLeft,\n f2y2 = e.touches[1].clientY - offsetTop;\n var distance2 = distance(f1x2, f1y2, f2x2, f2y2);\n // var distance2Sq = distanceSq( f1x2, f1y2, f2x2, f2y2 );\n // var factor = Math.sqrt( distance2Sq ) / Math.sqrt( distance1Sq );\n var factor = distance2 / distance1;\n if (twoFingersStartInside) {\n // delta finger1\n var df1x = f1x2 - f1x1;\n var df1y = f1y2 - f1y1;\n\n // delta finger 2\n var df2x = f2x2 - f2x1;\n var df2y = f2y2 - f2y1;\n\n // translation is the normalised vector of the two fingers movement\n // i.e. so pinching cancels out and moving together pans\n var tx = (df1x + df2x) / 2;\n var ty = (df1y + df2y) / 2;\n\n // now calculate the zoom\n var zoom1 = cy.zoom();\n var zoom2 = zoom1 * factor;\n var pan1 = cy.pan();\n\n // the model center point converted to the current rendered pos\n var ctrx = modelCenter1[0] * zoom1 + pan1.x;\n var ctry = modelCenter1[1] * zoom1 + pan1.y;\n var pan2 = {\n x: -zoom2 / zoom1 * (ctrx - pan1.x - tx) + ctrx,\n y: -zoom2 / zoom1 * (ctry - pan1.y - ty) + ctry\n };\n\n // remove dragged eles\n if (_start && _start.active()) {\n var draggedEles = r.dragData.touchDragEles;\n freeDraggedElements(draggedEles);\n r.redrawHint('drag', true);\n r.redrawHint('eles', true);\n _start.unactivate().emit('freeon');\n draggedEles.emit('free');\n if (r.dragData.didDrag) {\n _start.emit('dragfreeon');\n draggedEles.emit('dragfree');\n }\n }\n cy.viewport({\n zoom: zoom2,\n pan: pan2,\n cancelOnFailedZoom: true\n });\n cy.emit('pinchzoom');\n distance1 = distance2;\n f1x1 = f1x2;\n f1y1 = f1y2;\n f2x1 = f2x2;\n f2y1 = f2y2;\n r.pinching = true;\n }\n\n // Re-project\n if (e.touches[0]) {\n var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n now[0] = pos[0];\n now[1] = pos[1];\n }\n if (e.touches[1]) {\n var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);\n now[2] = pos[0];\n now[3] = pos[1];\n }\n if (e.touches[2]) {\n var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);\n now[4] = pos[0];\n now[5] = pos[1];\n }\n } else if (e.touches[0] && !r.touchData.didSelect // don't allow box selection to degrade to single finger events like panning\n ) {\n var start = r.touchData.start;\n var last = r.touchData.last;\n var near;\n if (!r.hoverData.draggingEles && !r.swipePanning) {\n near = r.findNearestElement(now[0], now[1], true, true);\n }\n if (capture && start != null) {\n e.preventDefault();\n }\n\n // dragging nodes\n if (capture && start != null && r.nodeIsDraggable(start)) {\n if (isOverThresholdDrag) {\n // then dragging can happen\n var draggedEles = r.dragData.touchDragEles;\n var justStartedDrag = !r.dragData.didDrag;\n if (justStartedDrag) {\n addNodesToDrag(draggedEles, {\n inDragLayer: true\n });\n }\n r.dragData.didDrag = true;\n var totalShift = {\n x: 0,\n y: 0\n };\n if (number$1(disp[0]) && number$1(disp[1])) {\n totalShift.x += disp[0];\n totalShift.y += disp[1];\n if (justStartedDrag) {\n r.redrawHint('eles', true);\n var dragDelta = r.touchData.dragDelta;\n if (dragDelta && number$1(dragDelta[0]) && number$1(dragDelta[1])) {\n totalShift.x += dragDelta[0];\n totalShift.y += dragDelta[1];\n }\n }\n }\n r.hoverData.draggingEles = true;\n draggedEles.silentShift(totalShift).emit('position drag');\n r.redrawHint('drag', true);\n if (r.touchData.startPosition[0] == earlier[0] && r.touchData.startPosition[1] == earlier[1]) {\n r.redrawHint('eles', true);\n }\n r.redraw();\n } else {\n // otherwise keep track of drag delta for later\n var dragDelta = r.touchData.dragDelta = r.touchData.dragDelta || [];\n if (dragDelta.length === 0) {\n dragDelta.push(disp[0]);\n dragDelta.push(disp[1]);\n } else {\n dragDelta[0] += disp[0];\n dragDelta[1] += disp[1];\n }\n }\n }\n\n // touchmove\n {\n triggerEvents(start || near, ['touchmove', 'tapdrag', 'vmousemove'], e, {\n x: now[0],\n y: now[1]\n });\n if ((!start || !start.grabbed()) && near != last) {\n if (last) {\n last.emit({\n originalEvent: e,\n type: 'tapdragout',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n if (near) {\n near.emit({\n originalEvent: e,\n type: 'tapdragover',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n }\n r.touchData.last = near;\n }\n\n // check to cancel taphold\n if (capture) {\n for (var i = 0; i < now.length; i++) {\n if (now[i] && r.touchData.startPosition[i] && isOverThresholdDrag) {\n r.touchData.singleTouchMoved = true;\n }\n }\n }\n\n // panning\n if (capture && (start == null || start.pannable()) && cy.panningEnabled() && cy.userPanningEnabled()) {\n var allowPassthrough = allowPanningPassthrough(start, r.touchData.starts);\n if (allowPassthrough) {\n e.preventDefault();\n if (!r.data.bgActivePosistion) {\n r.data.bgActivePosistion = array2point(r.touchData.startPosition);\n }\n if (r.swipePanning) {\n cy.panBy({\n x: disp[0] * zoom,\n y: disp[1] * zoom\n });\n cy.emit('dragpan');\n } else if (isOverThresholdDrag) {\n r.swipePanning = true;\n cy.panBy({\n x: dx * zoom,\n y: dy * zoom\n });\n cy.emit('dragpan');\n if (start) {\n start.unactivate();\n r.redrawHint('select', true);\n r.touchData.start = null;\n }\n }\n }\n\n // Re-project\n var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n now[0] = pos[0];\n now[1] = pos[1];\n }\n }\n for (var j = 0; j < now.length; j++) {\n earlier[j] = now[j];\n }\n\n // the active bg indicator should be removed when making a swipe that is neither for dragging nodes or panning\n if (capture && e.touches.length > 0 && !r.hoverData.draggingEles && !r.swipePanning && r.data.bgActivePosistion != null) {\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n r.redraw();\n }\n }, false);\n var touchcancelHandler;\n r.registerBinding(containerWindow, 'touchcancel', touchcancelHandler = function touchcancelHandler(e) {\n // eslint-disable-line no-unused-vars\n var start = r.touchData.start;\n r.touchData.capture = false;\n if (start) {\n start.unactivate();\n }\n });\n var touchendHandler, didDoubleTouch, touchTimeout, prevTouchTimeStamp;\n r.registerBinding(containerWindow, 'touchend', touchendHandler = function touchendHandler(e) {\n // eslint-disable-line no-unused-vars\n var start = r.touchData.start;\n var capture = r.touchData.capture;\n if (capture) {\n if (e.touches.length === 0) {\n r.touchData.capture = false;\n }\n e.preventDefault();\n } else {\n return;\n }\n var select = r.selection;\n r.swipePanning = false;\n r.hoverData.draggingEles = false;\n var cy = r.cy;\n var zoom = cy.zoom();\n var now = r.touchData.now;\n var earlier = r.touchData.earlier;\n if (e.touches[0]) {\n var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n now[0] = pos[0];\n now[1] = pos[1];\n }\n if (e.touches[1]) {\n var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);\n now[2] = pos[0];\n now[3] = pos[1];\n }\n if (e.touches[2]) {\n var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);\n now[4] = pos[0];\n now[5] = pos[1];\n }\n if (start) {\n start.unactivate();\n }\n var ctxTapend;\n if (r.touchData.cxt) {\n ctxTapend = {\n originalEvent: e,\n type: 'cxttapend',\n position: {\n x: now[0],\n y: now[1]\n }\n };\n if (start) {\n start.emit(ctxTapend);\n } else {\n cy.emit(ctxTapend);\n }\n if (!r.touchData.cxtDragged) {\n var ctxTap = {\n originalEvent: e,\n type: 'cxttap',\n position: {\n x: now[0],\n y: now[1]\n }\n };\n if (start) {\n start.emit(ctxTap);\n } else {\n cy.emit(ctxTap);\n }\n }\n if (r.touchData.start) {\n r.touchData.start._private.grabbed = false;\n }\n r.touchData.cxt = false;\n r.touchData.start = null;\n r.redraw();\n return;\n }\n\n // no more box selection if we don't have three fingers\n if (!e.touches[2] && cy.boxSelectionEnabled() && r.touchData.selecting) {\n r.touchData.selecting = false;\n var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3]));\n select[0] = undefined;\n select[1] = undefined;\n select[2] = undefined;\n select[3] = undefined;\n select[4] = 0;\n r.redrawHint('select', true);\n cy.emit({\n type: 'boxend',\n originalEvent: e,\n position: {\n x: now[0],\n y: now[1]\n }\n });\n var eleWouldBeSelected = function eleWouldBeSelected(ele) {\n return ele.selectable() && !ele.selected();\n };\n box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect');\n if (box.nonempty()) {\n r.redrawHint('eles', true);\n }\n r.redraw();\n }\n if (start != null) {\n start.unactivate();\n }\n if (e.touches[2]) {\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n } else if (e.touches[1]) ; else if (e.touches[0]) ; else if (!e.touches[0]) {\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n var draggedEles = r.dragData.touchDragEles;\n if (start != null) {\n var startWasGrabbed = start._private.grabbed;\n freeDraggedElements(draggedEles);\n r.redrawHint('drag', true);\n r.redrawHint('eles', true);\n if (startWasGrabbed) {\n start.emit('freeon');\n draggedEles.emit('free');\n if (r.dragData.didDrag) {\n start.emit('dragfreeon');\n draggedEles.emit('dragfree');\n }\n }\n triggerEvents(start, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, {\n x: now[0],\n y: now[1]\n });\n start.unactivate();\n r.touchData.start = null;\n } else {\n var near = r.findNearestElement(now[0], now[1], true, true);\n triggerEvents(near, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, {\n x: now[0],\n y: now[1]\n });\n }\n var dx = r.touchData.startPosition[0] - now[0];\n var dx2 = dx * dx;\n var dy = r.touchData.startPosition[1] - now[1];\n var dy2 = dy * dy;\n var dist2 = dx2 + dy2;\n var rdist2 = dist2 * zoom * zoom;\n\n // Tap event, roughly same as mouse click event for touch\n if (!r.touchData.singleTouchMoved) {\n if (!start) {\n cy.$(':selected').unselect(['tapunselect']);\n }\n triggerEvents(start, ['tap', 'vclick'], e, {\n x: now[0],\n y: now[1]\n });\n didDoubleTouch = false;\n if (e.timeStamp - prevTouchTimeStamp <= cy.multiClickDebounceTime()) {\n touchTimeout && clearTimeout(touchTimeout);\n didDoubleTouch = true;\n prevTouchTimeStamp = null;\n triggerEvents(start, ['dbltap', 'vdblclick'], e, {\n x: now[0],\n y: now[1]\n });\n } else {\n touchTimeout = setTimeout(function () {\n if (didDoubleTouch) return;\n triggerEvents(start, ['onetap', 'voneclick'], e, {\n x: now[0],\n y: now[1]\n });\n }, cy.multiClickDebounceTime());\n prevTouchTimeStamp = e.timeStamp;\n }\n }\n\n // Prepare to select the currently touched node, only if it hasn't been dragged past a certain distance\n if (start != null && !r.dragData.didDrag // didn't drag nodes around\n && start._private.selectable && rdist2 < r.touchTapThreshold2 && !r.pinching // pinch to zoom should not affect selection\n ) {\n if (cy.selectionType() === 'single') {\n cy.$(isSelected).unmerge(start).unselect(['tapunselect']);\n start.select(['tapselect']);\n } else {\n if (start.selected()) {\n start.unselect(['tapunselect']);\n } else {\n start.select(['tapselect']);\n }\n }\n r.redrawHint('eles', true);\n }\n r.touchData.singleTouchMoved = true;\n }\n for (var j = 0; j < now.length; j++) {\n earlier[j] = now[j];\n }\n r.dragData.didDrag = false; // reset for next touchstart\n\n if (e.touches.length === 0) {\n r.touchData.dragDelta = [];\n r.touchData.startPosition = [null, null, null, null, null, null];\n r.touchData.startGPosition = null;\n r.touchData.didSelect = false;\n }\n if (e.touches.length < 2) {\n if (e.touches.length === 1) {\n // the old start global pos'n may not be the same finger that remains\n r.touchData.startGPosition = [e.touches[0].clientX, e.touches[0].clientY];\n }\n r.pinching = false;\n r.redrawHint('eles', true);\n r.redraw();\n }\n\n //r.redraw();\n }, false);\n\n // fallback compatibility layer for ms pointer events\n if (typeof TouchEvent === 'undefined') {\n var pointers = [];\n var makeTouch = function makeTouch(e) {\n return {\n clientX: e.clientX,\n clientY: e.clientY,\n force: 1,\n identifier: e.pointerId,\n pageX: e.pageX,\n pageY: e.pageY,\n radiusX: e.width / 2,\n radiusY: e.height / 2,\n screenX: e.screenX,\n screenY: e.screenY,\n target: e.target\n };\n };\n var makePointer = function makePointer(e) {\n return {\n event: e,\n touch: makeTouch(e)\n };\n };\n var addPointer = function addPointer(e) {\n pointers.push(makePointer(e));\n };\n var removePointer = function removePointer(e) {\n for (var i = 0; i < pointers.length; i++) {\n var p = pointers[i];\n if (p.event.pointerId === e.pointerId) {\n pointers.splice(i, 1);\n return;\n }\n }\n };\n var updatePointer = function updatePointer(e) {\n var p = pointers.filter(function (p) {\n return p.event.pointerId === e.pointerId;\n })[0];\n p.event = e;\n p.touch = makeTouch(e);\n };\n var addTouchesToEvent = function addTouchesToEvent(e) {\n e.touches = pointers.map(function (p) {\n return p.touch;\n });\n };\n var pointerIsMouse = function pointerIsMouse(e) {\n return e.pointerType === 'mouse' || e.pointerType === 4;\n };\n r.registerBinding(r.container, 'pointerdown', function (e) {\n if (pointerIsMouse(e)) {\n return;\n } // mouse already handled\n\n e.preventDefault();\n addPointer(e);\n addTouchesToEvent(e);\n touchstartHandler(e);\n });\n r.registerBinding(r.container, 'pointerup', function (e) {\n if (pointerIsMouse(e)) {\n return;\n } // mouse already handled\n\n removePointer(e);\n addTouchesToEvent(e);\n touchendHandler(e);\n });\n r.registerBinding(r.container, 'pointercancel', function (e) {\n if (pointerIsMouse(e)) {\n return;\n } // mouse already handled\n\n removePointer(e);\n addTouchesToEvent(e);\n touchcancelHandler(e);\n });\n r.registerBinding(r.container, 'pointermove', function (e) {\n if (pointerIsMouse(e)) {\n return;\n } // mouse already handled\n\n e.preventDefault();\n updatePointer(e);\n addTouchesToEvent(e);\n touchmoveHandler(e);\n });\n }\n};\n\nvar BRp$2 = {};\nBRp$2.generatePolygon = function (name, points) {\n return this.nodeShapes[name] = {\n renderer: this,\n name: name,\n points: points,\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl('polygon', context, centerX, centerY, width, height, this.points);\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n return polygonIntersectLine(x, y, this.points, nodeX, nodeY, width / 2, height / 2, padding);\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n return pointInsidePolygon(x, y, this.points, centerX, centerY, width, height, [0, -1], padding);\n }\n };\n};\nBRp$2.generateEllipse = function () {\n return this.nodeShapes['ellipse'] = {\n renderer: this,\n name: 'ellipse',\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n return intersectLineEllipse(x, y, nodeX, nodeY, width / 2 + padding, height / 2 + padding);\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n return checkInEllipse(x, y, width, height, centerX, centerY, padding);\n }\n };\n};\nBRp$2.generateRoundPolygon = function (name, points) {\n // Pre-compute control points\n // Since these points depend on the radius length (which in turns depend on the width/height of the node) we will only pre-compute\n // the unit vectors.\n // For simplicity the layout will be:\n // [ p0, UnitVectorP0P1, p1, UniVectorP1P2, ..., pn, UnitVectorPnP0 ]\n var allPoints = new Array(points.length * 2);\n for (var i = 0; i < points.length / 2; i++) {\n var sourceIndex = i * 2;\n var destIndex = void 0;\n if (i < points.length / 2 - 1) {\n destIndex = (i + 1) * 2;\n } else {\n destIndex = 0;\n }\n allPoints[i * 4] = points[sourceIndex];\n allPoints[i * 4 + 1] = points[sourceIndex + 1];\n var xDest = points[destIndex] - points[sourceIndex];\n var yDest = points[destIndex + 1] - points[sourceIndex + 1];\n var norm = Math.sqrt(xDest * xDest + yDest * yDest);\n allPoints[i * 4 + 2] = xDest / norm;\n allPoints[i * 4 + 3] = yDest / norm;\n }\n return this.nodeShapes[name] = {\n renderer: this,\n name: name,\n points: allPoints,\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl('round-polygon', context, centerX, centerY, width, height, this.points);\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n return roundPolygonIntersectLine(x, y, this.points, nodeX, nodeY, width, height);\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n return pointInsideRoundPolygon(x, y, this.points, centerX, centerY, width, height);\n }\n };\n};\nBRp$2.generateRoundRectangle = function () {\n return this.nodeShapes['round-rectangle'] = this.nodeShapes['roundrectangle'] = {\n renderer: this,\n name: 'round-rectangle',\n points: generateUnitNgonPointsFitToSquare(4, 0),\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding);\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n var cornerRadius = getRoundRectangleRadius(width, height);\n var diam = cornerRadius * 2;\n\n // Check hBox\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) {\n return true;\n }\n\n // Check vBox\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) {\n return true;\n }\n\n // Check top left quarter circle\n if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY - height / 2 + cornerRadius, padding)) {\n return true;\n }\n\n // Check top right quarter circle\n if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY - height / 2 + cornerRadius, padding)) {\n return true;\n }\n\n // Check bottom right quarter circle\n if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY + height / 2 - cornerRadius, padding)) {\n return true;\n }\n\n // Check bottom left quarter circle\n if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY + height / 2 - cornerRadius, padding)) {\n return true;\n }\n return false;\n }\n };\n};\nBRp$2.generateCutRectangle = function () {\n return this.nodeShapes['cut-rectangle'] = this.nodeShapes['cutrectangle'] = {\n renderer: this,\n name: 'cut-rectangle',\n cornerLength: getCutRectangleCornerLength(),\n points: generateUnitNgonPointsFitToSquare(4, 0),\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);\n },\n generateCutTrianglePts: function generateCutTrianglePts(width, height, centerX, centerY) {\n var cl = this.cornerLength;\n var hh = height / 2;\n var hw = width / 2;\n var xBegin = centerX - hw;\n var xEnd = centerX + hw;\n var yBegin = centerY - hh;\n var yEnd = centerY + hh;\n\n // points are in clockwise order, inner (imaginary) triangle pt on [4, 5]\n return {\n topLeft: [xBegin, yBegin + cl, xBegin + cl, yBegin, xBegin + cl, yBegin + cl],\n topRight: [xEnd - cl, yBegin, xEnd, yBegin + cl, xEnd - cl, yBegin + cl],\n bottomRight: [xEnd, yEnd - cl, xEnd - cl, yEnd, xEnd - cl, yEnd - cl],\n bottomLeft: [xBegin + cl, yEnd, xBegin, yEnd - cl, xBegin + cl, yEnd - cl]\n };\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n var cPts = this.generateCutTrianglePts(width + 2 * padding, height + 2 * padding, nodeX, nodeY);\n var pts = [].concat.apply([], [cPts.topLeft.splice(0, 4), cPts.topRight.splice(0, 4), cPts.bottomRight.splice(0, 4), cPts.bottomLeft.splice(0, 4)]);\n return polygonIntersectLine(x, y, pts, nodeX, nodeY);\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n // Check hBox\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * this.cornerLength, [0, -1], padding)) {\n return true;\n }\n\n // Check vBox\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * this.cornerLength, height, [0, -1], padding)) {\n return true;\n }\n var cutTrianglePts = this.generateCutTrianglePts(width, height, centerX, centerY);\n return pointInsidePolygonPoints(x, y, cutTrianglePts.topLeft) || pointInsidePolygonPoints(x, y, cutTrianglePts.topRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomLeft);\n }\n };\n};\nBRp$2.generateBarrel = function () {\n return this.nodeShapes['barrel'] = {\n renderer: this,\n name: 'barrel',\n points: generateUnitNgonPointsFitToSquare(4, 0),\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n // use two fixed t values for the bezier curve approximation\n\n var t0 = 0.15;\n var t1 = 0.5;\n var t2 = 0.85;\n var bPts = this.generateBarrelBezierPts(width + 2 * padding, height + 2 * padding, nodeX, nodeY);\n var approximateBarrelCurvePts = function approximateBarrelCurvePts(pts) {\n // approximate curve pts based on the two t values\n var m0 = qbezierPtAt({\n x: pts[0],\n y: pts[1]\n }, {\n x: pts[2],\n y: pts[3]\n }, {\n x: pts[4],\n y: pts[5]\n }, t0);\n var m1 = qbezierPtAt({\n x: pts[0],\n y: pts[1]\n }, {\n x: pts[2],\n y: pts[3]\n }, {\n x: pts[4],\n y: pts[5]\n }, t1);\n var m2 = qbezierPtAt({\n x: pts[0],\n y: pts[1]\n }, {\n x: pts[2],\n y: pts[3]\n }, {\n x: pts[4],\n y: pts[5]\n }, t2);\n return [pts[0], pts[1], m0.x, m0.y, m1.x, m1.y, m2.x, m2.y, pts[4], pts[5]];\n };\n var pts = [].concat(approximateBarrelCurvePts(bPts.topLeft), approximateBarrelCurvePts(bPts.topRight), approximateBarrelCurvePts(bPts.bottomRight), approximateBarrelCurvePts(bPts.bottomLeft));\n return polygonIntersectLine(x, y, pts, nodeX, nodeY);\n },\n generateBarrelBezierPts: function generateBarrelBezierPts(width, height, centerX, centerY) {\n var hh = height / 2;\n var hw = width / 2;\n var xBegin = centerX - hw;\n var xEnd = centerX + hw;\n var yBegin = centerY - hh;\n var yEnd = centerY + hh;\n var curveConstants = getBarrelCurveConstants(width, height);\n var hOffset = curveConstants.heightOffset;\n var wOffset = curveConstants.widthOffset;\n var ctrlPtXOffset = curveConstants.ctrlPtOffsetPct * width;\n\n // points are in clockwise order, inner (imaginary) control pt on [4, 5]\n var pts = {\n topLeft: [xBegin, yBegin + hOffset, xBegin + ctrlPtXOffset, yBegin, xBegin + wOffset, yBegin],\n topRight: [xEnd - wOffset, yBegin, xEnd - ctrlPtXOffset, yBegin, xEnd, yBegin + hOffset],\n bottomRight: [xEnd, yEnd - hOffset, xEnd - ctrlPtXOffset, yEnd, xEnd - wOffset, yEnd],\n bottomLeft: [xBegin + wOffset, yEnd, xBegin + ctrlPtXOffset, yEnd, xBegin, yEnd - hOffset]\n };\n pts.topLeft.isTop = true;\n pts.topRight.isTop = true;\n pts.bottomLeft.isBottom = true;\n pts.bottomRight.isBottom = true;\n return pts;\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n var curveConstants = getBarrelCurveConstants(width, height);\n var hOffset = curveConstants.heightOffset;\n var wOffset = curveConstants.widthOffset;\n\n // Check hBox\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * hOffset, [0, -1], padding)) {\n return true;\n }\n\n // Check vBox\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * wOffset, height, [0, -1], padding)) {\n return true;\n }\n var barrelCurvePts = this.generateBarrelBezierPts(width, height, centerX, centerY);\n var getCurveT = function getCurveT(x, y, curvePts) {\n var x0 = curvePts[4];\n var x1 = curvePts[2];\n var x2 = curvePts[0];\n var y0 = curvePts[5];\n // var y1 = curvePts[ 3 ];\n var y2 = curvePts[1];\n var xMin = Math.min(x0, x2);\n var xMax = Math.max(x0, x2);\n var yMin = Math.min(y0, y2);\n var yMax = Math.max(y0, y2);\n if (xMin <= x && x <= xMax && yMin <= y && y <= yMax) {\n var coeff = bezierPtsToQuadCoeff(x0, x1, x2);\n var roots = solveQuadratic(coeff[0], coeff[1], coeff[2], x);\n var validRoots = roots.filter(function (r) {\n return 0 <= r && r <= 1;\n });\n if (validRoots.length > 0) {\n return validRoots[0];\n }\n }\n return null;\n };\n var curveRegions = Object.keys(barrelCurvePts);\n for (var i = 0; i < curveRegions.length; i++) {\n var corner = curveRegions[i];\n var cornerPts = barrelCurvePts[corner];\n var t = getCurveT(x, y, cornerPts);\n if (t == null) {\n continue;\n }\n var y0 = cornerPts[5];\n var y1 = cornerPts[3];\n var y2 = cornerPts[1];\n var bezY = qbezierAt(y0, y1, y2, t);\n if (cornerPts.isTop && bezY <= y) {\n return true;\n }\n if (cornerPts.isBottom && y <= bezY) {\n return true;\n }\n }\n return false;\n }\n };\n};\nBRp$2.generateBottomRoundrectangle = function () {\n return this.nodeShapes['bottom-round-rectangle'] = this.nodeShapes['bottomroundrectangle'] = {\n renderer: this,\n name: 'bottom-round-rectangle',\n points: generateUnitNgonPointsFitToSquare(4, 0),\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n var topStartX = nodeX - (width / 2 + padding);\n var topStartY = nodeY - (height / 2 + padding);\n var topEndY = topStartY;\n var topEndX = nodeX + (width / 2 + padding);\n var topIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false);\n if (topIntersections.length > 0) {\n return topIntersections;\n }\n return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding);\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n var cornerRadius = getRoundRectangleRadius(width, height);\n var diam = 2 * cornerRadius;\n\n // Check hBox\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) {\n return true;\n }\n\n // Check vBox\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) {\n return true;\n }\n\n // check non-rounded top side\n var outerWidth = width / 2 + 2 * padding;\n var outerHeight = height / 2 + 2 * padding;\n var points = [centerX - outerWidth, centerY - outerHeight, centerX - outerWidth, centerY, centerX + outerWidth, centerY, centerX + outerWidth, centerY - outerHeight];\n if (pointInsidePolygonPoints(x, y, points)) {\n return true;\n }\n\n // Check bottom right quarter circle\n if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY + height / 2 - cornerRadius, padding)) {\n return true;\n }\n\n // Check bottom left quarter circle\n if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY + height / 2 - cornerRadius, padding)) {\n return true;\n }\n return false;\n }\n };\n};\nBRp$2.registerNodeShapes = function () {\n var nodeShapes = this.nodeShapes = {};\n var renderer = this;\n this.generateEllipse();\n this.generatePolygon('triangle', generateUnitNgonPointsFitToSquare(3, 0));\n this.generateRoundPolygon('round-triangle', generateUnitNgonPointsFitToSquare(3, 0));\n this.generatePolygon('rectangle', generateUnitNgonPointsFitToSquare(4, 0));\n nodeShapes['square'] = nodeShapes['rectangle'];\n this.generateRoundRectangle();\n this.generateCutRectangle();\n this.generateBarrel();\n this.generateBottomRoundrectangle();\n {\n var diamondPoints = [0, 1, 1, 0, 0, -1, -1, 0];\n this.generatePolygon('diamond', diamondPoints);\n this.generateRoundPolygon('round-diamond', diamondPoints);\n }\n this.generatePolygon('pentagon', generateUnitNgonPointsFitToSquare(5, 0));\n this.generateRoundPolygon('round-pentagon', generateUnitNgonPointsFitToSquare(5, 0));\n this.generatePolygon('hexagon', generateUnitNgonPointsFitToSquare(6, 0));\n this.generateRoundPolygon('round-hexagon', generateUnitNgonPointsFitToSquare(6, 0));\n this.generatePolygon('heptagon', generateUnitNgonPointsFitToSquare(7, 0));\n this.generateRoundPolygon('round-heptagon', generateUnitNgonPointsFitToSquare(7, 0));\n this.generatePolygon('octagon', generateUnitNgonPointsFitToSquare(8, 0));\n this.generateRoundPolygon('round-octagon', generateUnitNgonPointsFitToSquare(8, 0));\n var star5Points = new Array(20);\n {\n var outerPoints = generateUnitNgonPoints(5, 0);\n var innerPoints = generateUnitNgonPoints(5, Math.PI / 5);\n\n // Outer radius is 1; inner radius of star is smaller\n var innerRadius = 0.5 * (3 - Math.sqrt(5));\n innerRadius *= 1.57;\n for (var i = 0; i < innerPoints.length / 2; i++) {\n innerPoints[i * 2] *= innerRadius;\n innerPoints[i * 2 + 1] *= innerRadius;\n }\n for (var i = 0; i < 20 / 4; i++) {\n star5Points[i * 4] = outerPoints[i * 2];\n star5Points[i * 4 + 1] = outerPoints[i * 2 + 1];\n star5Points[i * 4 + 2] = innerPoints[i * 2];\n star5Points[i * 4 + 3] = innerPoints[i * 2 + 1];\n }\n }\n star5Points = fitPolygonToSquare(star5Points);\n this.generatePolygon('star', star5Points);\n this.generatePolygon('vee', [-1, -1, 0, -0.333, 1, -1, 0, 1]);\n this.generatePolygon('rhomboid', [-1, -1, 0.333, -1, 1, 1, -0.333, 1]);\n this.generatePolygon('right-rhomboid', [-0.333, -1, 1, -1, 0.333, 1, -1, 1]);\n this.nodeShapes['concavehexagon'] = this.generatePolygon('concave-hexagon', [-1, -0.95, -0.75, 0, -1, 0.95, 1, 0.95, 0.75, 0, 1, -0.95]);\n {\n var tagPoints = [-1, -1, 0.25, -1, 1, 0, 0.25, 1, -1, 1];\n this.generatePolygon('tag', tagPoints);\n this.generateRoundPolygon('round-tag', tagPoints);\n }\n nodeShapes.makePolygon = function (points) {\n // use caching on user-specified polygons so they are as fast as native shapes\n\n var key = points.join('$');\n var name = 'polygon-' + key;\n var shape;\n if (shape = this[name]) {\n // got cached shape\n return shape;\n }\n\n // create and cache new shape\n return renderer.generatePolygon(name, points);\n };\n};\n\nvar BRp$1 = {};\nBRp$1.timeToRender = function () {\n return this.redrawTotalTime / this.redrawCount;\n};\nBRp$1.redraw = function (options) {\n options = options || staticEmptyObject();\n var r = this;\n if (r.averageRedrawTime === undefined) {\n r.averageRedrawTime = 0;\n }\n if (r.lastRedrawTime === undefined) {\n r.lastRedrawTime = 0;\n }\n if (r.lastDrawTime === undefined) {\n r.lastDrawTime = 0;\n }\n r.requestedFrame = true;\n r.renderOptions = options;\n};\nBRp$1.beforeRender = function (fn, priority) {\n // the renderer can't add tick callbacks when destroyed\n if (this.destroyed) {\n return;\n }\n if (priority == null) {\n error('Priority is not optional for beforeRender');\n }\n var cbs = this.beforeRenderCallbacks;\n cbs.push({\n fn: fn,\n priority: priority\n });\n\n // higher priority callbacks executed first\n cbs.sort(function (a, b) {\n return b.priority - a.priority;\n });\n};\nvar beforeRenderCallbacks = function beforeRenderCallbacks(r, willDraw, startTime) {\n var cbs = r.beforeRenderCallbacks;\n for (var i = 0; i < cbs.length; i++) {\n cbs[i].fn(willDraw, startTime);\n }\n};\nBRp$1.startRenderLoop = function () {\n var r = this;\n var cy = r.cy;\n if (r.renderLoopStarted) {\n return;\n } else {\n r.renderLoopStarted = true;\n }\n var renderFn = function renderFn(requestTime) {\n if (r.destroyed) {\n return;\n }\n if (cy.batching()) ; else if (r.requestedFrame && !r.skipFrame) {\n beforeRenderCallbacks(r, true, requestTime);\n var startTime = performanceNow();\n r.render(r.renderOptions);\n var endTime = r.lastDrawTime = performanceNow();\n if (r.averageRedrawTime === undefined) {\n r.averageRedrawTime = endTime - startTime;\n }\n if (r.redrawCount === undefined) {\n r.redrawCount = 0;\n }\n r.redrawCount++;\n if (r.redrawTotalTime === undefined) {\n r.redrawTotalTime = 0;\n }\n var duration = endTime - startTime;\n r.redrawTotalTime += duration;\n r.lastRedrawTime = duration;\n\n // use a weighted average with a bias from the previous average so we don't spike so easily\n r.averageRedrawTime = r.averageRedrawTime / 2 + duration / 2;\n r.requestedFrame = false;\n } else {\n beforeRenderCallbacks(r, false, requestTime);\n }\n r.skipFrame = false;\n requestAnimationFrame(renderFn);\n };\n requestAnimationFrame(renderFn);\n};\n\nvar BaseRenderer = function BaseRenderer(options) {\n this.init(options);\n};\nvar BR = BaseRenderer;\nvar BRp = BR.prototype;\nBRp.clientFunctions = ['redrawHint', 'render', 'renderTo', 'matchCanvasSize', 'nodeShapeImpl', 'arrowShapeImpl'];\nBRp.init = function (options) {\n var r = this;\n r.options = options;\n r.cy = options.cy;\n var ctr = r.container = options.cy.container();\n var containerWindow = r.cy.window();\n\n // prepend a stylesheet in the head such that\n if (containerWindow) {\n var document = containerWindow.document;\n var head = document.head;\n var stylesheetId = '__________cytoscape_stylesheet';\n var className = '__________cytoscape_container';\n var stylesheetAlreadyExists = document.getElementById(stylesheetId) != null;\n if (ctr.className.indexOf(className) < 0) {\n ctr.className = (ctr.className || '') + ' ' + className;\n }\n if (!stylesheetAlreadyExists) {\n var stylesheet = document.createElement('style');\n stylesheet.id = stylesheetId;\n stylesheet.textContent = '.' + className + ' { position: relative; }';\n head.insertBefore(stylesheet, head.children[0]); // first so lowest priority\n }\n\n var computedStyle = containerWindow.getComputedStyle(ctr);\n var position = computedStyle.getPropertyValue('position');\n if (position === 'static') {\n warn('A Cytoscape container has style position:static and so can not use UI extensions properly');\n }\n }\n r.selection = [undefined, undefined, undefined, undefined, 0]; // Coordinates for selection box, plus enabled flag\n\n r.bezierProjPcts = [0.05, 0.225, 0.4, 0.5, 0.6, 0.775, 0.95];\n\n //--Pointer-related data\n r.hoverData = {\n down: null,\n last: null,\n downTime: null,\n triggerMode: null,\n dragging: false,\n initialPan: [null, null],\n capture: false\n };\n r.dragData = {\n possibleDragElements: []\n };\n r.touchData = {\n start: null,\n capture: false,\n // These 3 fields related to tap, taphold events\n startPosition: [null, null, null, null, null, null],\n singleTouchStartTime: null,\n singleTouchMoved: true,\n now: [null, null, null, null, null, null],\n earlier: [null, null, null, null, null, null]\n };\n r.redraws = 0;\n r.showFps = options.showFps;\n r.debug = options.debug;\n r.hideEdgesOnViewport = options.hideEdgesOnViewport;\n r.textureOnViewport = options.textureOnViewport;\n r.wheelSensitivity = options.wheelSensitivity;\n r.motionBlurEnabled = options.motionBlur; // on by default\n r.forcedPixelRatio = number$1(options.pixelRatio) ? options.pixelRatio : null;\n r.motionBlur = options.motionBlur; // for initial kick off\n r.motionBlurOpacity = options.motionBlurOpacity;\n r.motionBlurTransparency = 1 - r.motionBlurOpacity;\n r.motionBlurPxRatio = 1;\n r.mbPxRBlurry = 1; //0.8;\n r.minMbLowQualFrames = 4;\n r.fullQualityMb = false;\n r.clearedForMotionBlur = [];\n r.desktopTapThreshold = options.desktopTapThreshold;\n r.desktopTapThreshold2 = options.desktopTapThreshold * options.desktopTapThreshold;\n r.touchTapThreshold = options.touchTapThreshold;\n r.touchTapThreshold2 = options.touchTapThreshold * options.touchTapThreshold;\n r.tapholdDuration = 500;\n r.bindings = [];\n r.beforeRenderCallbacks = [];\n r.beforeRenderPriorities = {\n // higher priority execs before lower one\n animations: 400,\n eleCalcs: 300,\n eleTxrDeq: 200,\n lyrTxrDeq: 150,\n lyrTxrSkip: 100\n };\n r.registerNodeShapes();\n r.registerArrowShapes();\n r.registerCalculationListeners();\n};\nBRp.notify = function (eventName, eles) {\n var r = this;\n var cy = r.cy;\n\n // the renderer can't be notified after it's destroyed\n if (this.destroyed) {\n return;\n }\n if (eventName === 'init') {\n r.load();\n return;\n }\n if (eventName === 'destroy') {\n r.destroy();\n return;\n }\n if (eventName === 'add' || eventName === 'remove' || eventName === 'move' && cy.hasCompoundNodes() || eventName === 'load' || eventName === 'zorder' || eventName === 'mount') {\n r.invalidateCachedZSortedEles();\n }\n if (eventName === 'viewport') {\n r.redrawHint('select', true);\n }\n if (eventName === 'load' || eventName === 'resize' || eventName === 'mount') {\n r.invalidateContainerClientCoordsCache();\n r.matchCanvasSize(r.container);\n }\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n this.startRenderLoop();\n this.redraw();\n};\nBRp.destroy = function () {\n var r = this;\n r.destroyed = true;\n r.cy.stopAnimationLoop();\n for (var i = 0; i < r.bindings.length; i++) {\n var binding = r.bindings[i];\n var b = binding;\n var tgt = b.target;\n (tgt.off || tgt.removeEventListener).apply(tgt, b.args);\n }\n r.bindings = [];\n r.beforeRenderCallbacks = [];\n r.onUpdateEleCalcsFns = [];\n if (r.removeObserver) {\n r.removeObserver.disconnect();\n }\n if (r.styleObserver) {\n r.styleObserver.disconnect();\n }\n if (r.resizeObserver) {\n r.resizeObserver.disconnect();\n }\n if (r.labelCalcDiv) {\n try {\n document.body.removeChild(r.labelCalcDiv); // eslint-disable-line no-undef\n } catch (e) {\n // ie10 issue #1014\n }\n }\n};\nBRp.isHeadless = function () {\n return false;\n};\n[BRp$f, BRp$5, BRp$4, BRp$3, BRp$2, BRp$1].forEach(function (props) {\n extend(BRp, props);\n});\n\nvar fullFpsTime = 1000 / 60; // assume 60 frames per second\n\nvar defs = {\n setupDequeueing: function setupDequeueing(opts) {\n return function setupDequeueingImpl() {\n var self = this;\n var r = this.renderer;\n if (self.dequeueingSetup) {\n return;\n } else {\n self.dequeueingSetup = true;\n }\n var queueRedraw = debounce__default[\"default\"](function () {\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n r.redraw();\n }, opts.deqRedrawThreshold);\n var dequeue = function dequeue(willDraw, frameStartTime) {\n var startTime = performanceNow();\n var avgRenderTime = r.averageRedrawTime;\n var renderTime = r.lastRedrawTime;\n var deqd = [];\n var extent = r.cy.extent();\n var pixelRatio = r.getPixelRatio();\n\n // if we aren't in a tick that causes a draw, then the rendered style\n // queue won't automatically be flushed before dequeueing starts\n if (!willDraw) {\n r.flushRenderedStyleQueue();\n }\n while (true) {\n // eslint-disable-line no-constant-condition\n var now = performanceNow();\n var duration = now - startTime;\n var frameDuration = now - frameStartTime;\n if (renderTime < fullFpsTime) {\n // if we're rendering faster than the ideal fps, then do dequeueing\n // during all of the remaining frame time\n\n var timeAvailable = fullFpsTime - (willDraw ? avgRenderTime : 0);\n if (frameDuration >= opts.deqFastCost * timeAvailable) {\n break;\n }\n } else {\n if (willDraw) {\n if (duration >= opts.deqCost * renderTime || duration >= opts.deqAvgCost * avgRenderTime) {\n break;\n }\n } else if (frameDuration >= opts.deqNoDrawCost * fullFpsTime) {\n break;\n }\n }\n var thisDeqd = opts.deq(self, pixelRatio, extent);\n if (thisDeqd.length > 0) {\n for (var i = 0; i < thisDeqd.length; i++) {\n deqd.push(thisDeqd[i]);\n }\n } else {\n break;\n }\n }\n\n // callbacks on dequeue\n if (deqd.length > 0) {\n opts.onDeqd(self, deqd);\n if (!willDraw && opts.shouldRedraw(self, deqd, pixelRatio, extent)) {\n queueRedraw();\n }\n }\n };\n var priority = opts.priority || noop$1;\n r.beforeRender(dequeue, priority(self));\n };\n }\n};\n\n// Allows lookups for (ele, lvl) => cache.\n// Uses keys so elements may share the same cache.\nvar ElementTextureCacheLookup = /*#__PURE__*/function () {\n function ElementTextureCacheLookup(getKey) {\n var doesEleInvalidateKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : falsify;\n _classCallCheck(this, ElementTextureCacheLookup);\n this.idsByKey = new Map$1();\n this.keyForId = new Map$1();\n this.cachesByLvl = new Map$1();\n this.lvls = [];\n this.getKey = getKey;\n this.doesEleInvalidateKey = doesEleInvalidateKey;\n }\n _createClass(ElementTextureCacheLookup, [{\n key: \"getIdsFor\",\n value: function getIdsFor(key) {\n if (key == null) {\n error(\"Can not get id list for null key\");\n }\n var idsByKey = this.idsByKey;\n var ids = this.idsByKey.get(key);\n if (!ids) {\n ids = new Set$1();\n idsByKey.set(key, ids);\n }\n return ids;\n }\n }, {\n key: \"addIdForKey\",\n value: function addIdForKey(key, id) {\n if (key != null) {\n this.getIdsFor(key).add(id);\n }\n }\n }, {\n key: \"deleteIdForKey\",\n value: function deleteIdForKey(key, id) {\n if (key != null) {\n this.getIdsFor(key)[\"delete\"](id);\n }\n }\n }, {\n key: \"getNumberOfIdsForKey\",\n value: function getNumberOfIdsForKey(key) {\n if (key == null) {\n return 0;\n } else {\n return this.getIdsFor(key).size;\n }\n }\n }, {\n key: \"updateKeyMappingFor\",\n value: function updateKeyMappingFor(ele) {\n var id = ele.id();\n var prevKey = this.keyForId.get(id);\n var currKey = this.getKey(ele);\n this.deleteIdForKey(prevKey, id);\n this.addIdForKey(currKey, id);\n this.keyForId.set(id, currKey);\n }\n }, {\n key: \"deleteKeyMappingFor\",\n value: function deleteKeyMappingFor(ele) {\n var id = ele.id();\n var prevKey = this.keyForId.get(id);\n this.deleteIdForKey(prevKey, id);\n this.keyForId[\"delete\"](id);\n }\n }, {\n key: \"keyHasChangedFor\",\n value: function keyHasChangedFor(ele) {\n var id = ele.id();\n var prevKey = this.keyForId.get(id);\n var newKey = this.getKey(ele);\n return prevKey !== newKey;\n }\n }, {\n key: \"isInvalid\",\n value: function isInvalid(ele) {\n return this.keyHasChangedFor(ele) || this.doesEleInvalidateKey(ele);\n }\n }, {\n key: \"getCachesAt\",\n value: function getCachesAt(lvl) {\n var cachesByLvl = this.cachesByLvl,\n lvls = this.lvls;\n var caches = cachesByLvl.get(lvl);\n if (!caches) {\n caches = new Map$1();\n cachesByLvl.set(lvl, caches);\n lvls.push(lvl);\n }\n return caches;\n }\n }, {\n key: \"getCache\",\n value: function getCache(key, lvl) {\n return this.getCachesAt(lvl).get(key);\n }\n }, {\n key: \"get\",\n value: function get(ele, lvl) {\n var key = this.getKey(ele);\n var cache = this.getCache(key, lvl);\n\n // getting for an element may need to add to the id list b/c eles can share keys\n if (cache != null) {\n this.updateKeyMappingFor(ele);\n }\n return cache;\n }\n }, {\n key: \"getForCachedKey\",\n value: function getForCachedKey(ele, lvl) {\n var key = this.keyForId.get(ele.id()); // n.b. use cached key, not newly computed key\n var cache = this.getCache(key, lvl);\n return cache;\n }\n }, {\n key: \"hasCache\",\n value: function hasCache(key, lvl) {\n return this.getCachesAt(lvl).has(key);\n }\n }, {\n key: \"has\",\n value: function has(ele, lvl) {\n var key = this.getKey(ele);\n return this.hasCache(key, lvl);\n }\n }, {\n key: \"setCache\",\n value: function setCache(key, lvl, cache) {\n cache.key = key;\n this.getCachesAt(lvl).set(key, cache);\n }\n }, {\n key: \"set\",\n value: function set(ele, lvl, cache) {\n var key = this.getKey(ele);\n this.setCache(key, lvl, cache);\n this.updateKeyMappingFor(ele);\n }\n }, {\n key: \"deleteCache\",\n value: function deleteCache(key, lvl) {\n this.getCachesAt(lvl)[\"delete\"](key);\n }\n }, {\n key: \"delete\",\n value: function _delete(ele, lvl) {\n var key = this.getKey(ele);\n this.deleteCache(key, lvl);\n }\n }, {\n key: \"invalidateKey\",\n value: function invalidateKey(key) {\n var _this = this;\n this.lvls.forEach(function (lvl) {\n return _this.deleteCache(key, lvl);\n });\n }\n\n // returns true if no other eles reference the invalidated cache (n.b. other eles may need the cache with the same key)\n }, {\n key: \"invalidate\",\n value: function invalidate(ele) {\n var id = ele.id();\n var key = this.keyForId.get(id); // n.b. use stored key rather than current (potential key)\n\n this.deleteKeyMappingFor(ele);\n var entireKeyInvalidated = this.doesEleInvalidateKey(ele);\n if (entireKeyInvalidated) {\n // clear mapping for current key\n this.invalidateKey(key);\n }\n return entireKeyInvalidated || this.getNumberOfIdsForKey(key) === 0;\n }\n }]);\n return ElementTextureCacheLookup;\n}();\n\nvar minTxrH = 25; // the size of the texture cache for small height eles (special case)\nvar txrStepH = 50; // the min size of the regular cache, and the size it increases with each step up\nvar minLvl$1 = -4; // when scaling smaller than that we don't need to re-render\nvar maxLvl$1 = 3; // when larger than this scale just render directly (caching is not helpful)\nvar maxZoom$1 = 7.99; // beyond this zoom level, layered textures are not used\nvar eleTxrSpacing = 8; // spacing between elements on textures to avoid blitting overlaps\nvar defTxrWidth = 1024; // default/minimum texture width\nvar maxTxrW = 1024; // the maximum width of a texture\nvar maxTxrH = 1024; // the maximum height of a texture\nvar minUtility = 0.2; // if usage of texture is less than this, it is retired\nvar maxFullness = 0.8; // fullness of texture after which queue removal is checked\nvar maxFullnessChecks = 10; // dequeued after this many checks\nvar deqCost$1 = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame\nvar deqAvgCost$1 = 0.1; // % of add'l rendering cost compared to average overall redraw time\nvar deqNoDrawCost$1 = 0.9; // % of avg frame time that can be used for dequeueing when not drawing\nvar deqFastCost$1 = 0.9; // % of frame time to be used when >60fps\nvar deqRedrawThreshold$1 = 100; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile\nvar maxDeqSize$1 = 1; // number of eles to dequeue and render at higher texture in each batch\n\nvar getTxrReasons = {\n dequeue: 'dequeue',\n downscale: 'downscale',\n highQuality: 'highQuality'\n};\nvar initDefaults = defaults$g({\n getKey: null,\n doesEleInvalidateKey: falsify,\n drawElement: null,\n getBoundingBox: null,\n getRotationPoint: null,\n getRotationOffset: null,\n isVisible: trueify,\n allowEdgeTxrCaching: true,\n allowParentTxrCaching: true\n});\nvar ElementTextureCache = function ElementTextureCache(renderer, initOptions) {\n var self = this;\n self.renderer = renderer;\n self.onDequeues = [];\n var opts = initDefaults(initOptions);\n extend(self, opts);\n self.lookup = new ElementTextureCacheLookup(opts.getKey, opts.doesEleInvalidateKey);\n self.setupDequeueing();\n};\nvar ETCp = ElementTextureCache.prototype;\nETCp.reasons = getTxrReasons;\n\n// the list of textures in which new subtextures for elements can be placed\nETCp.getTextureQueue = function (txrH) {\n var self = this;\n self.eleImgCaches = self.eleImgCaches || {};\n return self.eleImgCaches[txrH] = self.eleImgCaches[txrH] || [];\n};\n\n// the list of usused textures which can be recycled (in use in texture queue)\nETCp.getRetiredTextureQueue = function (txrH) {\n var self = this;\n var rtxtrQs = self.eleImgCaches.retired = self.eleImgCaches.retired || {};\n var rtxtrQ = rtxtrQs[txrH] = rtxtrQs[txrH] || [];\n return rtxtrQ;\n};\n\n// queue of element draw requests at different scale levels\nETCp.getElementQueue = function () {\n var self = this;\n var q = self.eleCacheQueue = self.eleCacheQueue || new Heap__default[\"default\"](function (a, b) {\n return b.reqs - a.reqs;\n });\n return q;\n};\n\n// queue of element draw requests at different scale levels (element id lookup)\nETCp.getElementKeyToQueue = function () {\n var self = this;\n var k2q = self.eleKeyToCacheQueue = self.eleKeyToCacheQueue || {};\n return k2q;\n};\nETCp.getElement = function (ele, bb, pxRatio, lvl, reason) {\n var self = this;\n var r = this.renderer;\n var zoom = r.cy.zoom();\n var lookup = this.lookup;\n if (!bb || bb.w === 0 || bb.h === 0 || isNaN(bb.w) || isNaN(bb.h) || !ele.visible() || ele.removed()) {\n return null;\n }\n if (!self.allowEdgeTxrCaching && ele.isEdge() || !self.allowParentTxrCaching && ele.isParent()) {\n return null;\n }\n if (lvl == null) {\n lvl = Math.ceil(log2(zoom * pxRatio));\n }\n if (lvl < minLvl$1) {\n lvl = minLvl$1;\n } else if (zoom >= maxZoom$1 || lvl > maxLvl$1) {\n return null;\n }\n var scale = Math.pow(2, lvl);\n var eleScaledH = bb.h * scale;\n var eleScaledW = bb.w * scale;\n var scaledLabelShown = r.eleTextBiggerThanMin(ele, scale);\n if (!this.isVisible(ele, scaledLabelShown)) {\n return null;\n }\n var eleCache = lookup.get(ele, lvl);\n\n // if this get was on an unused/invalidated cache, then restore the texture usage metric\n if (eleCache && eleCache.invalidated) {\n eleCache.invalidated = false;\n eleCache.texture.invalidatedWidth -= eleCache.width;\n }\n if (eleCache) {\n return eleCache;\n }\n var txrH; // which texture height this ele belongs to\n\n if (eleScaledH <= minTxrH) {\n txrH = minTxrH;\n } else if (eleScaledH <= txrStepH) {\n txrH = txrStepH;\n } else {\n txrH = Math.ceil(eleScaledH / txrStepH) * txrStepH;\n }\n if (eleScaledH > maxTxrH || eleScaledW > maxTxrW) {\n return null; // caching large elements is not efficient\n }\n\n var txrQ = self.getTextureQueue(txrH);\n\n // first try the second last one in case it has space at the end\n var txr = txrQ[txrQ.length - 2];\n var addNewTxr = function addNewTxr() {\n return self.recycleTexture(txrH, eleScaledW) || self.addTexture(txrH, eleScaledW);\n };\n\n // try the last one if there is no second last one\n if (!txr) {\n txr = txrQ[txrQ.length - 1];\n }\n\n // if the last one doesn't exist, we need a first one\n if (!txr) {\n txr = addNewTxr();\n }\n\n // if there's no room in the current texture, we need a new one\n if (txr.width - txr.usedWidth < eleScaledW) {\n txr = addNewTxr();\n }\n var scalableFrom = function scalableFrom(otherCache) {\n return otherCache && otherCache.scaledLabelShown === scaledLabelShown;\n };\n var deqing = reason && reason === getTxrReasons.dequeue;\n var highQualityReq = reason && reason === getTxrReasons.highQuality;\n var downscaleReq = reason && reason === getTxrReasons.downscale;\n var higherCache; // the nearest cache with a higher level\n for (var l = lvl + 1; l <= maxLvl$1; l++) {\n var c = lookup.get(ele, l);\n if (c) {\n higherCache = c;\n break;\n }\n }\n var oneUpCache = higherCache && higherCache.level === lvl + 1 ? higherCache : null;\n var downscale = function downscale() {\n txr.context.drawImage(oneUpCache.texture.canvas, oneUpCache.x, 0, oneUpCache.width, oneUpCache.height, txr.usedWidth, 0, eleScaledW, eleScaledH);\n };\n\n // reset ele area in texture\n txr.context.setTransform(1, 0, 0, 1, 0, 0);\n txr.context.clearRect(txr.usedWidth, 0, eleScaledW, txrH);\n if (scalableFrom(oneUpCache)) {\n // then we can relatively cheaply rescale the existing image w/o rerendering\n downscale();\n } else if (scalableFrom(higherCache)) {\n // then use the higher cache for now and queue the next level down\n // to cheaply scale towards the smaller level\n\n if (highQualityReq) {\n for (var _l = higherCache.level; _l > lvl; _l--) {\n oneUpCache = self.getElement(ele, bb, pxRatio, _l, getTxrReasons.downscale);\n }\n downscale();\n } else {\n self.queueElement(ele, higherCache.level - 1);\n return higherCache;\n }\n } else {\n var lowerCache; // the nearest cache with a lower level\n if (!deqing && !highQualityReq && !downscaleReq) {\n for (var _l2 = lvl - 1; _l2 >= minLvl$1; _l2--) {\n var _c = lookup.get(ele, _l2);\n if (_c) {\n lowerCache = _c;\n break;\n }\n }\n }\n if (scalableFrom(lowerCache)) {\n // then use the lower quality cache for now and queue the better one for later\n\n self.queueElement(ele, lvl);\n return lowerCache;\n }\n txr.context.translate(txr.usedWidth, 0);\n txr.context.scale(scale, scale);\n this.drawElement(txr.context, ele, bb, scaledLabelShown, false);\n txr.context.scale(1 / scale, 1 / scale);\n txr.context.translate(-txr.usedWidth, 0);\n }\n eleCache = {\n x: txr.usedWidth,\n texture: txr,\n level: lvl,\n scale: scale,\n width: eleScaledW,\n height: eleScaledH,\n scaledLabelShown: scaledLabelShown\n };\n txr.usedWidth += Math.ceil(eleScaledW + eleTxrSpacing);\n txr.eleCaches.push(eleCache);\n lookup.set(ele, lvl, eleCache);\n self.checkTextureFullness(txr);\n return eleCache;\n};\nETCp.invalidateElements = function (eles) {\n for (var i = 0; i < eles.length; i++) {\n this.invalidateElement(eles[i]);\n }\n};\nETCp.invalidateElement = function (ele) {\n var self = this;\n var lookup = self.lookup;\n var caches = [];\n var invalid = lookup.isInvalid(ele);\n if (!invalid) {\n return; // override the invalidation request if the element key has not changed\n }\n\n for (var lvl = minLvl$1; lvl <= maxLvl$1; lvl++) {\n var cache = lookup.getForCachedKey(ele, lvl);\n if (cache) {\n caches.push(cache);\n }\n }\n var noOtherElesUseCache = lookup.invalidate(ele);\n if (noOtherElesUseCache) {\n for (var i = 0; i < caches.length; i++) {\n var _cache = caches[i];\n var txr = _cache.texture;\n\n // remove space from the texture it belongs to\n txr.invalidatedWidth += _cache.width;\n\n // mark the cache as invalidated\n _cache.invalidated = true;\n\n // retire the texture if its utility is low\n self.checkTextureUtility(txr);\n }\n }\n\n // remove from queue since the old req was for the old state\n self.removeFromQueue(ele);\n};\nETCp.checkTextureUtility = function (txr) {\n // invalidate all entries in the cache if the cache size is small\n if (txr.invalidatedWidth >= minUtility * txr.width) {\n this.retireTexture(txr);\n }\n};\nETCp.checkTextureFullness = function (txr) {\n // if texture has been mostly filled and passed over several times, remove\n // it from the queue so we don't need to waste time looking at it to put new things\n\n var self = this;\n var txrQ = self.getTextureQueue(txr.height);\n if (txr.usedWidth / txr.width > maxFullness && txr.fullnessChecks >= maxFullnessChecks) {\n removeFromArray(txrQ, txr);\n } else {\n txr.fullnessChecks++;\n }\n};\nETCp.retireTexture = function (txr) {\n var self = this;\n var txrH = txr.height;\n var txrQ = self.getTextureQueue(txrH);\n var lookup = this.lookup;\n\n // retire the texture from the active / searchable queue:\n\n removeFromArray(txrQ, txr);\n txr.retired = true;\n\n // remove the refs from the eles to the caches:\n\n var eleCaches = txr.eleCaches;\n for (var i = 0; i < eleCaches.length; i++) {\n var eleCache = eleCaches[i];\n lookup.deleteCache(eleCache.key, eleCache.level);\n }\n clearArray(eleCaches);\n\n // add the texture to a retired queue so it can be recycled in future:\n\n var rtxtrQ = self.getRetiredTextureQueue(txrH);\n rtxtrQ.push(txr);\n};\nETCp.addTexture = function (txrH, minW) {\n var self = this;\n var txrQ = self.getTextureQueue(txrH);\n var txr = {};\n txrQ.push(txr);\n txr.eleCaches = [];\n txr.height = txrH;\n txr.width = Math.max(defTxrWidth, minW);\n txr.usedWidth = 0;\n txr.invalidatedWidth = 0;\n txr.fullnessChecks = 0;\n txr.canvas = self.renderer.makeOffscreenCanvas(txr.width, txr.height);\n txr.context = txr.canvas.getContext('2d');\n return txr;\n};\nETCp.recycleTexture = function (txrH, minW) {\n var self = this;\n var txrQ = self.getTextureQueue(txrH);\n var rtxtrQ = self.getRetiredTextureQueue(txrH);\n for (var i = 0; i < rtxtrQ.length; i++) {\n var txr = rtxtrQ[i];\n if (txr.width >= minW) {\n txr.retired = false;\n txr.usedWidth = 0;\n txr.invalidatedWidth = 0;\n txr.fullnessChecks = 0;\n clearArray(txr.eleCaches);\n txr.context.setTransform(1, 0, 0, 1, 0, 0);\n txr.context.clearRect(0, 0, txr.width, txr.height);\n removeFromArray(rtxtrQ, txr);\n txrQ.push(txr);\n return txr;\n }\n }\n};\nETCp.queueElement = function (ele, lvl) {\n var self = this;\n var q = self.getElementQueue();\n var k2q = self.getElementKeyToQueue();\n var key = this.getKey(ele);\n var existingReq = k2q[key];\n if (existingReq) {\n // use the max lvl b/c in between lvls are cheap to make\n existingReq.level = Math.max(existingReq.level, lvl);\n existingReq.eles.merge(ele);\n existingReq.reqs++;\n q.updateItem(existingReq);\n } else {\n var req = {\n eles: ele.spawn().merge(ele),\n level: lvl,\n reqs: 1,\n key: key\n };\n q.push(req);\n k2q[key] = req;\n }\n};\nETCp.dequeue = function (pxRatio /*, extent*/) {\n var self = this;\n var q = self.getElementQueue();\n var k2q = self.getElementKeyToQueue();\n var dequeued = [];\n var lookup = self.lookup;\n for (var i = 0; i < maxDeqSize$1; i++) {\n if (q.size() > 0) {\n var req = q.pop();\n var key = req.key;\n var ele = req.eles[0]; // all eles have the same key\n var cacheExists = lookup.hasCache(ele, req.level);\n\n // clear out the key to req lookup\n k2q[key] = null;\n\n // dequeueing isn't necessary with an existing cache\n if (cacheExists) {\n continue;\n }\n dequeued.push(req);\n var bb = self.getBoundingBox(ele);\n self.getElement(ele, bb, pxRatio, req.level, getTxrReasons.dequeue);\n } else {\n break;\n }\n }\n return dequeued;\n};\nETCp.removeFromQueue = function (ele) {\n var self = this;\n var q = self.getElementQueue();\n var k2q = self.getElementKeyToQueue();\n var key = this.getKey(ele);\n var req = k2q[key];\n if (req != null) {\n if (req.eles.length === 1) {\n // remove if last ele in the req\n // bring to front of queue\n req.reqs = MAX_INT$1;\n q.updateItem(req);\n q.pop(); // remove from queue\n\n k2q[key] = null; // remove from lookup map\n } else {\n // otherwise just remove ele from req\n req.eles.unmerge(ele);\n }\n }\n};\nETCp.onDequeue = function (fn) {\n this.onDequeues.push(fn);\n};\nETCp.offDequeue = function (fn) {\n removeFromArray(this.onDequeues, fn);\n};\nETCp.setupDequeueing = defs.setupDequeueing({\n deqRedrawThreshold: deqRedrawThreshold$1,\n deqCost: deqCost$1,\n deqAvgCost: deqAvgCost$1,\n deqNoDrawCost: deqNoDrawCost$1,\n deqFastCost: deqFastCost$1,\n deq: function deq(self, pxRatio, extent) {\n return self.dequeue(pxRatio, extent);\n },\n onDeqd: function onDeqd(self, deqd) {\n for (var i = 0; i < self.onDequeues.length; i++) {\n var fn = self.onDequeues[i];\n fn(deqd);\n }\n },\n shouldRedraw: function shouldRedraw(self, deqd, pxRatio, extent) {\n for (var i = 0; i < deqd.length; i++) {\n var eles = deqd[i].eles;\n for (var j = 0; j < eles.length; j++) {\n var bb = eles[j].boundingBox();\n if (boundingBoxesIntersect(bb, extent)) {\n return true;\n }\n }\n }\n return false;\n },\n priority: function priority(self) {\n return self.renderer.beforeRenderPriorities.eleTxrDeq;\n }\n});\n\nvar defNumLayers = 1; // default number of layers to use\nvar minLvl = -4; // when scaling smaller than that we don't need to re-render\nvar maxLvl = 2; // when larger than this scale just render directly (caching is not helpful)\nvar maxZoom = 3.99; // beyond this zoom level, layered textures are not used\nvar deqRedrawThreshold = 50; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile\nvar refineEleDebounceTime = 50; // time to debounce sharper ele texture updates\nvar deqCost = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame\nvar deqAvgCost = 0.1; // % of add'l rendering cost compared to average overall redraw time\nvar deqNoDrawCost = 0.9; // % of avg frame time that can be used for dequeueing when not drawing\nvar deqFastCost = 0.9; // % of frame time to be used when >60fps\nvar maxDeqSize = 1; // number of eles to dequeue and render at higher texture in each batch\nvar invalidThreshold = 250; // time threshold for disabling b/c of invalidations\nvar maxLayerArea = 4000 * 4000; // layers can't be bigger than this\nvar useHighQualityEleTxrReqs = true; // whether to use high quality ele txr requests (generally faster and cheaper in the longterm)\n\n// var log = function(){ console.log.apply( console, arguments ); };\n\nvar LayeredTextureCache = function LayeredTextureCache(renderer) {\n var self = this;\n var r = self.renderer = renderer;\n var cy = r.cy;\n self.layersByLevel = {}; // e.g. 2 => [ layer1, layer2, ..., layerN ]\n\n self.firstGet = true;\n self.lastInvalidationTime = performanceNow() - 2 * invalidThreshold;\n self.skipping = false;\n self.eleTxrDeqs = cy.collection();\n self.scheduleElementRefinement = debounce__default[\"default\"](function () {\n self.refineElementTextures(self.eleTxrDeqs);\n self.eleTxrDeqs.unmerge(self.eleTxrDeqs);\n }, refineEleDebounceTime);\n r.beforeRender(function (willDraw, now) {\n if (now - self.lastInvalidationTime <= invalidThreshold) {\n self.skipping = true;\n } else {\n self.skipping = false;\n }\n }, r.beforeRenderPriorities.lyrTxrSkip);\n var qSort = function qSort(a, b) {\n return b.reqs - a.reqs;\n };\n self.layersQueue = new Heap__default[\"default\"](qSort);\n self.setupDequeueing();\n};\nvar LTCp = LayeredTextureCache.prototype;\nvar layerIdPool = 0;\nvar MAX_INT = Math.pow(2, 53) - 1;\nLTCp.makeLayer = function (bb, lvl) {\n var scale = Math.pow(2, lvl);\n var w = Math.ceil(bb.w * scale);\n var h = Math.ceil(bb.h * scale);\n var canvas = this.renderer.makeOffscreenCanvas(w, h);\n var layer = {\n id: layerIdPool = ++layerIdPool % MAX_INT,\n bb: bb,\n level: lvl,\n width: w,\n height: h,\n canvas: canvas,\n context: canvas.getContext('2d'),\n eles: [],\n elesQueue: [],\n reqs: 0\n };\n\n // log('make layer %s with w %s and h %s and lvl %s', layer.id, layer.width, layer.height, layer.level);\n\n var cxt = layer.context;\n var dx = -layer.bb.x1;\n var dy = -layer.bb.y1;\n\n // do the transform on creation to save cycles (it's the same for all eles)\n cxt.scale(scale, scale);\n cxt.translate(dx, dy);\n return layer;\n};\nLTCp.getLayers = function (eles, pxRatio, lvl) {\n var self = this;\n var r = self.renderer;\n var cy = r.cy;\n var zoom = cy.zoom();\n var firstGet = self.firstGet;\n self.firstGet = false;\n\n // log('--\\nget layers with %s eles', eles.length);\n //log eles.map(function(ele){ return ele.id() }) );\n\n if (lvl == null) {\n lvl = Math.ceil(log2(zoom * pxRatio));\n if (lvl < minLvl) {\n lvl = minLvl;\n } else if (zoom >= maxZoom || lvl > maxLvl) {\n return null;\n }\n }\n self.validateLayersElesOrdering(lvl, eles);\n var layersByLvl = self.layersByLevel;\n var scale = Math.pow(2, lvl);\n var layers = layersByLvl[lvl] = layersByLvl[lvl] || [];\n var bb;\n var lvlComplete = self.levelIsComplete(lvl, eles);\n var tmpLayers;\n var checkTempLevels = function checkTempLevels() {\n var canUseAsTmpLvl = function canUseAsTmpLvl(l) {\n self.validateLayersElesOrdering(l, eles);\n if (self.levelIsComplete(l, eles)) {\n tmpLayers = layersByLvl[l];\n return true;\n }\n };\n var checkLvls = function checkLvls(dir) {\n if (tmpLayers) {\n return;\n }\n for (var l = lvl + dir; minLvl <= l && l <= maxLvl; l += dir) {\n if (canUseAsTmpLvl(l)) {\n break;\n }\n }\n };\n checkLvls(+1);\n checkLvls(-1);\n\n // remove the invalid layers; they will be replaced as needed later in this function\n for (var i = layers.length - 1; i >= 0; i--) {\n var layer = layers[i];\n if (layer.invalid) {\n removeFromArray(layers, layer);\n }\n }\n };\n if (!lvlComplete) {\n // if the current level is incomplete, then use the closest, best quality layerset temporarily\n // and later queue the current layerset so we can get the proper quality level soon\n\n checkTempLevels();\n } else {\n // log('level complete, using existing layers\\n--');\n return layers;\n }\n var getBb = function getBb() {\n if (!bb) {\n bb = makeBoundingBox();\n for (var i = 0; i < eles.length; i++) {\n updateBoundingBox(bb, eles[i].boundingBox());\n }\n }\n return bb;\n };\n var makeLayer = function makeLayer(opts) {\n opts = opts || {};\n var after = opts.after;\n getBb();\n var area = bb.w * scale * (bb.h * scale);\n if (area > maxLayerArea) {\n return null;\n }\n var layer = self.makeLayer(bb, lvl);\n if (after != null) {\n var index = layers.indexOf(after) + 1;\n layers.splice(index, 0, layer);\n } else if (opts.insert === undefined || opts.insert) {\n // no after specified => first layer made so put at start\n layers.unshift(layer);\n }\n\n // if( tmpLayers ){\n //self.queueLayer( layer );\n // }\n\n return layer;\n };\n if (self.skipping && !firstGet) {\n // log('skip layers');\n return null;\n }\n\n // log('do layers');\n\n var layer = null;\n var maxElesPerLayer = eles.length / defNumLayers;\n var allowLazyQueueing = !firstGet;\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var rs = ele._private.rscratch;\n var caches = rs.imgLayerCaches = rs.imgLayerCaches || {};\n\n // log('look at ele', ele.id());\n\n var existingLayer = caches[lvl];\n if (existingLayer) {\n // reuse layer for later eles\n // log('reuse layer for', ele.id());\n layer = existingLayer;\n continue;\n }\n if (!layer || layer.eles.length >= maxElesPerLayer || !boundingBoxInBoundingBox(layer.bb, ele.boundingBox())) {\n // log('make new layer for ele %s', ele.id());\n\n layer = makeLayer({\n insert: true,\n after: layer\n });\n\n // if now layer can be built then we can't use layers at this level\n if (!layer) {\n return null;\n }\n\n // log('new layer with id %s', layer.id);\n }\n\n if (tmpLayers || allowLazyQueueing) {\n // log('queue ele %s in layer %s', ele.id(), layer.id);\n self.queueLayer(layer, ele);\n } else {\n // log('draw ele %s in layer %s', ele.id(), layer.id);\n self.drawEleInLayer(layer, ele, lvl, pxRatio);\n }\n layer.eles.push(ele);\n caches[lvl] = layer;\n }\n\n // log('--');\n\n if (tmpLayers) {\n // then we only queued the current layerset and can't draw it yet\n return tmpLayers;\n }\n if (allowLazyQueueing) {\n // log('lazy queue level', lvl);\n return null;\n }\n return layers;\n};\n\n// a layer may want to use an ele cache of a higher level to avoid blurriness\n// so the layer level might not equal the ele level\nLTCp.getEleLevelForLayerLevel = function (lvl, pxRatio) {\n return lvl;\n};\nLTCp.drawEleInLayer = function (layer, ele, lvl, pxRatio) {\n var self = this;\n var r = this.renderer;\n var context = layer.context;\n var bb = ele.boundingBox();\n if (bb.w === 0 || bb.h === 0 || !ele.visible()) {\n return;\n }\n lvl = self.getEleLevelForLayerLevel(lvl, pxRatio);\n {\n r.setImgSmoothing(context, false);\n }\n {\n r.drawCachedElement(context, ele, null, null, lvl, useHighQualityEleTxrReqs);\n }\n {\n r.setImgSmoothing(context, true);\n }\n};\nLTCp.levelIsComplete = function (lvl, eles) {\n var self = this;\n var layers = self.layersByLevel[lvl];\n if (!layers || layers.length === 0) {\n return false;\n }\n var numElesInLayers = 0;\n for (var i = 0; i < layers.length; i++) {\n var layer = layers[i];\n\n // if there are any eles needed to be drawn yet, the level is not complete\n if (layer.reqs > 0) {\n return false;\n }\n\n // if the layer is invalid, the level is not complete\n if (layer.invalid) {\n return false;\n }\n numElesInLayers += layer.eles.length;\n }\n\n // we should have exactly the number of eles passed in to be complete\n if (numElesInLayers !== eles.length) {\n return false;\n }\n return true;\n};\nLTCp.validateLayersElesOrdering = function (lvl, eles) {\n var layers = this.layersByLevel[lvl];\n if (!layers) {\n return;\n }\n\n // if in a layer the eles are not in the same order, then the layer is invalid\n // (i.e. there is an ele in between the eles in the layer)\n\n for (var i = 0; i < layers.length; i++) {\n var layer = layers[i];\n var offset = -1;\n\n // find the offset\n for (var j = 0; j < eles.length; j++) {\n if (layer.eles[0] === eles[j]) {\n offset = j;\n break;\n }\n }\n if (offset < 0) {\n // then the layer has nonexistent elements and is invalid\n this.invalidateLayer(layer);\n continue;\n }\n\n // the eles in the layer must be in the same continuous order, else the layer is invalid\n\n var o = offset;\n for (var j = 0; j < layer.eles.length; j++) {\n if (layer.eles[j] !== eles[o + j]) {\n // log('invalidate based on ordering', layer.id);\n\n this.invalidateLayer(layer);\n break;\n }\n }\n }\n};\nLTCp.updateElementsInLayers = function (eles, update) {\n var self = this;\n var isEles = element(eles[0]);\n\n // collect udpated elements (cascaded from the layers) and update each\n // layer itself along the way\n for (var i = 0; i < eles.length; i++) {\n var req = isEles ? null : eles[i];\n var ele = isEles ? eles[i] : eles[i].ele;\n var rs = ele._private.rscratch;\n var caches = rs.imgLayerCaches = rs.imgLayerCaches || {};\n for (var l = minLvl; l <= maxLvl; l++) {\n var layer = caches[l];\n if (!layer) {\n continue;\n }\n\n // if update is a request from the ele cache, then it affects only\n // the matching level\n if (req && self.getEleLevelForLayerLevel(layer.level) !== req.level) {\n continue;\n }\n update(layer, ele, req);\n }\n }\n};\nLTCp.haveLayers = function () {\n var self = this;\n var haveLayers = false;\n for (var l = minLvl; l <= maxLvl; l++) {\n var layers = self.layersByLevel[l];\n if (layers && layers.length > 0) {\n haveLayers = true;\n break;\n }\n }\n return haveLayers;\n};\nLTCp.invalidateElements = function (eles) {\n var self = this;\n if (eles.length === 0) {\n return;\n }\n self.lastInvalidationTime = performanceNow();\n\n // log('update invalidate layer time from eles');\n\n if (eles.length === 0 || !self.haveLayers()) {\n return;\n }\n self.updateElementsInLayers(eles, function invalAssocLayers(layer, ele, req) {\n self.invalidateLayer(layer);\n });\n};\nLTCp.invalidateLayer = function (layer) {\n // log('update invalidate layer time');\n\n this.lastInvalidationTime = performanceNow();\n if (layer.invalid) {\n return;\n } // save cycles\n\n var lvl = layer.level;\n var eles = layer.eles;\n var layers = this.layersByLevel[lvl];\n\n // log('invalidate layer', layer.id );\n\n removeFromArray(layers, layer);\n // layer.eles = [];\n\n layer.elesQueue = [];\n layer.invalid = true;\n if (layer.replacement) {\n layer.replacement.invalid = true;\n }\n for (var i = 0; i < eles.length; i++) {\n var caches = eles[i]._private.rscratch.imgLayerCaches;\n if (caches) {\n caches[lvl] = null;\n }\n }\n};\nLTCp.refineElementTextures = function (eles) {\n var self = this;\n\n // log('refine', eles.length);\n\n self.updateElementsInLayers(eles, function refineEachEle(layer, ele, req) {\n var rLyr = layer.replacement;\n if (!rLyr) {\n rLyr = layer.replacement = self.makeLayer(layer.bb, layer.level);\n rLyr.replaces = layer;\n rLyr.eles = layer.eles;\n\n // log('make replacement layer %s for %s with level %s', rLyr.id, layer.id, rLyr.level);\n }\n\n if (!rLyr.reqs) {\n for (var i = 0; i < rLyr.eles.length; i++) {\n self.queueLayer(rLyr, rLyr.eles[i]);\n }\n\n // log('queue replacement layer refinement', rLyr.id);\n }\n });\n};\n\nLTCp.enqueueElementRefinement = function (ele) {\n this.eleTxrDeqs.merge(ele);\n this.scheduleElementRefinement();\n};\nLTCp.queueLayer = function (layer, ele) {\n var self = this;\n var q = self.layersQueue;\n var elesQ = layer.elesQueue;\n var hasId = elesQ.hasId = elesQ.hasId || {};\n\n // if a layer is going to be replaced, queuing is a waste of time\n if (layer.replacement) {\n return;\n }\n if (ele) {\n if (hasId[ele.id()]) {\n return;\n }\n elesQ.push(ele);\n hasId[ele.id()] = true;\n }\n if (layer.reqs) {\n layer.reqs++;\n q.updateItem(layer);\n } else {\n layer.reqs = 1;\n q.push(layer);\n }\n};\nLTCp.dequeue = function (pxRatio) {\n var self = this;\n var q = self.layersQueue;\n var deqd = [];\n var eleDeqs = 0;\n while (eleDeqs < maxDeqSize) {\n if (q.size() === 0) {\n break;\n }\n var layer = q.peek();\n\n // if a layer has been or will be replaced, then don't waste time with it\n if (layer.replacement) {\n // log('layer %s in queue skipped b/c it already has a replacement', layer.id);\n q.pop();\n continue;\n }\n\n // if this is a replacement layer that has been superceded, then forget it\n if (layer.replaces && layer !== layer.replaces.replacement) {\n // log('layer is no longer the most uptodate replacement; dequeued', layer.id)\n q.pop();\n continue;\n }\n if (layer.invalid) {\n // log('replacement layer %s is invalid; dequeued', layer.id);\n q.pop();\n continue;\n }\n var ele = layer.elesQueue.shift();\n if (ele) {\n // log('dequeue layer %s', layer.id);\n\n self.drawEleInLayer(layer, ele, layer.level, pxRatio);\n eleDeqs++;\n }\n if (deqd.length === 0) {\n // we need only one entry in deqd to queue redrawing etc\n deqd.push(true);\n }\n\n // if the layer has all its eles done, then remove from the queue\n if (layer.elesQueue.length === 0) {\n q.pop();\n layer.reqs = 0;\n\n // log('dequeue of layer %s complete', layer.id);\n\n // when a replacement layer is dequeued, it replaces the old layer in the level\n if (layer.replaces) {\n self.applyLayerReplacement(layer);\n }\n self.requestRedraw();\n }\n }\n return deqd;\n};\nLTCp.applyLayerReplacement = function (layer) {\n var self = this;\n var layersInLevel = self.layersByLevel[layer.level];\n var replaced = layer.replaces;\n var index = layersInLevel.indexOf(replaced);\n\n // if the replaced layer is not in the active list for the level, then replacing\n // refs would be a mistake (i.e. overwriting the true active layer)\n if (index < 0 || replaced.invalid) {\n // log('replacement layer would have no effect', layer.id);\n return;\n }\n layersInLevel[index] = layer; // replace level ref\n\n // replace refs in eles\n for (var i = 0; i < layer.eles.length; i++) {\n var _p = layer.eles[i]._private;\n var cache = _p.imgLayerCaches = _p.imgLayerCaches || {};\n if (cache) {\n cache[layer.level] = layer;\n }\n }\n\n // log('apply replacement layer %s over %s', layer.id, replaced.id);\n\n self.requestRedraw();\n};\nLTCp.requestRedraw = debounce__default[\"default\"](function () {\n var r = this.renderer;\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n r.redraw();\n}, 100);\nLTCp.setupDequeueing = defs.setupDequeueing({\n deqRedrawThreshold: deqRedrawThreshold,\n deqCost: deqCost,\n deqAvgCost: deqAvgCost,\n deqNoDrawCost: deqNoDrawCost,\n deqFastCost: deqFastCost,\n deq: function deq(self, pxRatio) {\n return self.dequeue(pxRatio);\n },\n onDeqd: noop$1,\n shouldRedraw: trueify,\n priority: function priority(self) {\n return self.renderer.beforeRenderPriorities.lyrTxrDeq;\n }\n});\n\nvar CRp$a = {};\nvar impl;\nfunction polygon(context, points) {\n for (var i = 0; i < points.length; i++) {\n var pt = points[i];\n context.lineTo(pt.x, pt.y);\n }\n}\nfunction triangleBackcurve(context, points, controlPoint) {\n var firstPt;\n for (var i = 0; i < points.length; i++) {\n var pt = points[i];\n if (i === 0) {\n firstPt = pt;\n }\n context.lineTo(pt.x, pt.y);\n }\n context.quadraticCurveTo(controlPoint.x, controlPoint.y, firstPt.x, firstPt.y);\n}\nfunction triangleTee(context, trianglePoints, teePoints) {\n if (context.beginPath) {\n context.beginPath();\n }\n var triPts = trianglePoints;\n for (var i = 0; i < triPts.length; i++) {\n var pt = triPts[i];\n context.lineTo(pt.x, pt.y);\n }\n var teePts = teePoints;\n var firstTeePt = teePoints[0];\n context.moveTo(firstTeePt.x, firstTeePt.y);\n for (var i = 1; i < teePts.length; i++) {\n var pt = teePts[i];\n context.lineTo(pt.x, pt.y);\n }\n if (context.closePath) {\n context.closePath();\n }\n}\nfunction circleTriangle(context, trianglePoints, rx, ry, r) {\n if (context.beginPath) {\n context.beginPath();\n }\n context.arc(rx, ry, r, 0, Math.PI * 2, false);\n var triPts = trianglePoints;\n var firstTrPt = triPts[0];\n context.moveTo(firstTrPt.x, firstTrPt.y);\n for (var i = 0; i < triPts.length; i++) {\n var pt = triPts[i];\n context.lineTo(pt.x, pt.y);\n }\n if (context.closePath) {\n context.closePath();\n }\n}\nfunction circle(context, rx, ry, r) {\n context.arc(rx, ry, r, 0, Math.PI * 2, false);\n}\nCRp$a.arrowShapeImpl = function (name) {\n return (impl || (impl = {\n 'polygon': polygon,\n 'triangle-backcurve': triangleBackcurve,\n 'triangle-tee': triangleTee,\n 'circle-triangle': circleTriangle,\n 'triangle-cross': triangleTee,\n 'circle': circle\n }))[name];\n};\n\nvar CRp$9 = {};\nCRp$9.drawElement = function (context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity) {\n var r = this;\n if (ele.isNode()) {\n r.drawNode(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity);\n } else {\n r.drawEdge(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity);\n }\n};\nCRp$9.drawElementOverlay = function (context, ele) {\n var r = this;\n if (ele.isNode()) {\n r.drawNodeOverlay(context, ele);\n } else {\n r.drawEdgeOverlay(context, ele);\n }\n};\nCRp$9.drawElementUnderlay = function (context, ele) {\n var r = this;\n if (ele.isNode()) {\n r.drawNodeUnderlay(context, ele);\n } else {\n r.drawEdgeUnderlay(context, ele);\n }\n};\nCRp$9.drawCachedElementPortion = function (context, ele, eleTxrCache, pxRatio, lvl, reason, getRotation, getOpacity) {\n var r = this;\n var bb = eleTxrCache.getBoundingBox(ele);\n if (bb.w === 0 || bb.h === 0) {\n return;\n } // ignore zero size case\n\n var eleCache = eleTxrCache.getElement(ele, bb, pxRatio, lvl, reason);\n if (eleCache != null) {\n var opacity = getOpacity(r, ele);\n if (opacity === 0) {\n return;\n }\n var theta = getRotation(r, ele);\n var x1 = bb.x1,\n y1 = bb.y1,\n w = bb.w,\n h = bb.h;\n var x, y, sx, sy, smooth;\n if (theta !== 0) {\n var rotPt = eleTxrCache.getRotationPoint(ele);\n sx = rotPt.x;\n sy = rotPt.y;\n context.translate(sx, sy);\n context.rotate(theta);\n smooth = r.getImgSmoothing(context);\n if (!smooth) {\n r.setImgSmoothing(context, true);\n }\n var off = eleTxrCache.getRotationOffset(ele);\n x = off.x;\n y = off.y;\n } else {\n x = x1;\n y = y1;\n }\n var oldGlobalAlpha;\n if (opacity !== 1) {\n oldGlobalAlpha = context.globalAlpha;\n context.globalAlpha = oldGlobalAlpha * opacity;\n }\n context.drawImage(eleCache.texture.canvas, eleCache.x, 0, eleCache.width, eleCache.height, x, y, w, h);\n if (opacity !== 1) {\n context.globalAlpha = oldGlobalAlpha;\n }\n if (theta !== 0) {\n context.rotate(-theta);\n context.translate(-sx, -sy);\n if (!smooth) {\n r.setImgSmoothing(context, false);\n }\n }\n } else {\n eleTxrCache.drawElement(context, ele); // direct draw fallback\n }\n};\n\nvar getZeroRotation = function getZeroRotation() {\n return 0;\n};\nvar getLabelRotation = function getLabelRotation(r, ele) {\n return r.getTextAngle(ele, null);\n};\nvar getSourceLabelRotation = function getSourceLabelRotation(r, ele) {\n return r.getTextAngle(ele, 'source');\n};\nvar getTargetLabelRotation = function getTargetLabelRotation(r, ele) {\n return r.getTextAngle(ele, 'target');\n};\nvar getOpacity = function getOpacity(r, ele) {\n return ele.effectiveOpacity();\n};\nvar getTextOpacity = function getTextOpacity(e, ele) {\n return ele.pstyle('text-opacity').pfValue * ele.effectiveOpacity();\n};\nCRp$9.drawCachedElement = function (context, ele, pxRatio, extent, lvl, requestHighQuality) {\n var r = this;\n var _r$data = r.data,\n eleTxrCache = _r$data.eleTxrCache,\n lblTxrCache = _r$data.lblTxrCache,\n slbTxrCache = _r$data.slbTxrCache,\n tlbTxrCache = _r$data.tlbTxrCache;\n var bb = ele.boundingBox();\n var reason = requestHighQuality === true ? eleTxrCache.reasons.highQuality : null;\n if (bb.w === 0 || bb.h === 0 || !ele.visible()) {\n return;\n }\n if (!extent || boundingBoxesIntersect(bb, extent)) {\n var isEdge = ele.isEdge();\n var badLine = ele.element()._private.rscratch.badLine;\n r.drawElementUnderlay(context, ele);\n r.drawCachedElementPortion(context, ele, eleTxrCache, pxRatio, lvl, reason, getZeroRotation, getOpacity);\n if (!isEdge || !badLine) {\n r.drawCachedElementPortion(context, ele, lblTxrCache, pxRatio, lvl, reason, getLabelRotation, getTextOpacity);\n }\n if (isEdge && !badLine) {\n r.drawCachedElementPortion(context, ele, slbTxrCache, pxRatio, lvl, reason, getSourceLabelRotation, getTextOpacity);\n r.drawCachedElementPortion(context, ele, tlbTxrCache, pxRatio, lvl, reason, getTargetLabelRotation, getTextOpacity);\n }\n r.drawElementOverlay(context, ele);\n }\n};\nCRp$9.drawElements = function (context, eles) {\n var r = this;\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n r.drawElement(context, ele);\n }\n};\nCRp$9.drawCachedElements = function (context, eles, pxRatio, extent) {\n var r = this;\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n r.drawCachedElement(context, ele, pxRatio, extent);\n }\n};\nCRp$9.drawCachedNodes = function (context, eles, pxRatio, extent) {\n var r = this;\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n if (!ele.isNode()) {\n continue;\n }\n r.drawCachedElement(context, ele, pxRatio, extent);\n }\n};\nCRp$9.drawLayeredElements = function (context, eles, pxRatio, extent) {\n var r = this;\n var layers = r.data.lyrTxrCache.getLayers(eles, pxRatio);\n if (layers) {\n for (var i = 0; i < layers.length; i++) {\n var layer = layers[i];\n var bb = layer.bb;\n if (bb.w === 0 || bb.h === 0) {\n continue;\n }\n context.drawImage(layer.canvas, bb.x1, bb.y1, bb.w, bb.h);\n }\n } else {\n // fall back on plain caching if no layers\n r.drawCachedElements(context, eles, pxRatio, extent);\n }\n};\n\n/* global Path2D */\nvar CRp$8 = {};\nCRp$8.drawEdge = function (context, edge, shiftToOriginWithBb) {\n var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n var r = this;\n var rs = edge._private.rscratch;\n if (shouldDrawOpacity && !edge.visible()) {\n return;\n }\n\n // if bezier ctrl pts can not be calculated, then die\n if (rs.badLine || rs.allpts == null || isNaN(rs.allpts[0])) {\n // isNaN in case edge is impossible and browser bugs (e.g. safari)\n return;\n }\n var bb;\n if (shiftToOriginWithBb) {\n bb = shiftToOriginWithBb;\n context.translate(-bb.x1, -bb.y1);\n }\n var opacity = shouldDrawOpacity ? edge.pstyle('opacity').value : 1;\n var lineOpacity = shouldDrawOpacity ? edge.pstyle('line-opacity').value : 1;\n var curveStyle = edge.pstyle('curve-style').value;\n var lineStyle = edge.pstyle('line-style').value;\n var edgeWidth = edge.pstyle('width').pfValue;\n var lineCap = edge.pstyle('line-cap').value;\n var effectiveLineOpacity = opacity * lineOpacity;\n // separate arrow opacity would require arrow-opacity property\n var effectiveArrowOpacity = opacity * lineOpacity;\n var drawLine = function drawLine() {\n var strokeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : effectiveLineOpacity;\n if (curveStyle === 'straight-triangle') {\n r.eleStrokeStyle(context, edge, strokeOpacity);\n r.drawEdgeTrianglePath(edge, context, rs.allpts);\n } else {\n context.lineWidth = edgeWidth;\n context.lineCap = lineCap;\n r.eleStrokeStyle(context, edge, strokeOpacity);\n r.drawEdgePath(edge, context, rs.allpts, lineStyle);\n context.lineCap = 'butt'; // reset for other drawing functions\n }\n };\n\n var drawOverlay = function drawOverlay() {\n if (!shouldDrawOverlay) {\n return;\n }\n r.drawEdgeOverlay(context, edge);\n };\n var drawUnderlay = function drawUnderlay() {\n if (!shouldDrawOverlay) {\n return;\n }\n r.drawEdgeUnderlay(context, edge);\n };\n var drawArrows = function drawArrows() {\n var arrowOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : effectiveArrowOpacity;\n r.drawArrowheads(context, edge, arrowOpacity);\n };\n var drawText = function drawText() {\n r.drawElementText(context, edge, null, drawLabel);\n };\n context.lineJoin = 'round';\n var ghost = edge.pstyle('ghost').value === 'yes';\n if (ghost) {\n var gx = edge.pstyle('ghost-offset-x').pfValue;\n var gy = edge.pstyle('ghost-offset-y').pfValue;\n var ghostOpacity = edge.pstyle('ghost-opacity').value;\n var effectiveGhostOpacity = effectiveLineOpacity * ghostOpacity;\n context.translate(gx, gy);\n drawLine(effectiveGhostOpacity);\n drawArrows(effectiveGhostOpacity);\n context.translate(-gx, -gy);\n }\n drawUnderlay();\n drawLine();\n drawArrows();\n drawOverlay();\n drawText();\n if (shiftToOriginWithBb) {\n context.translate(bb.x1, bb.y1);\n }\n};\nvar drawEdgeOverlayUnderlay = function drawEdgeOverlayUnderlay(overlayOrUnderlay) {\n if (!['overlay', 'underlay'].includes(overlayOrUnderlay)) {\n throw new Error('Invalid state');\n }\n return function (context, edge) {\n if (!edge.visible()) {\n return;\n }\n var opacity = edge.pstyle(\"\".concat(overlayOrUnderlay, \"-opacity\")).value;\n if (opacity === 0) {\n return;\n }\n var r = this;\n var usePaths = r.usePaths();\n var rs = edge._private.rscratch;\n var padding = edge.pstyle(\"\".concat(overlayOrUnderlay, \"-padding\")).pfValue;\n var width = 2 * padding;\n var color = edge.pstyle(\"\".concat(overlayOrUnderlay, \"-color\")).value;\n context.lineWidth = width;\n if (rs.edgeType === 'self' && !usePaths) {\n context.lineCap = 'butt';\n } else {\n context.lineCap = 'round';\n }\n r.colorStrokeStyle(context, color[0], color[1], color[2], opacity);\n r.drawEdgePath(edge, context, rs.allpts, 'solid');\n };\n};\nCRp$8.drawEdgeOverlay = drawEdgeOverlayUnderlay('overlay');\nCRp$8.drawEdgeUnderlay = drawEdgeOverlayUnderlay('underlay');\nCRp$8.drawEdgePath = function (edge, context, pts, type) {\n var rs = edge._private.rscratch;\n var canvasCxt = context;\n var path;\n var pathCacheHit = false;\n var usePaths = this.usePaths();\n var lineDashPattern = edge.pstyle('line-dash-pattern').pfValue;\n var lineDashOffset = edge.pstyle('line-dash-offset').pfValue;\n if (usePaths) {\n var pathCacheKey = pts.join('$');\n var keyMatches = rs.pathCacheKey && rs.pathCacheKey === pathCacheKey;\n if (keyMatches) {\n path = context = rs.pathCache;\n pathCacheHit = true;\n } else {\n path = context = new Path2D();\n rs.pathCacheKey = pathCacheKey;\n rs.pathCache = path;\n }\n }\n if (canvasCxt.setLineDash) {\n // for very outofdate browsers\n switch (type) {\n case 'dotted':\n canvasCxt.setLineDash([1, 1]);\n break;\n case 'dashed':\n canvasCxt.setLineDash(lineDashPattern);\n canvasCxt.lineDashOffset = lineDashOffset;\n break;\n case 'solid':\n canvasCxt.setLineDash([]);\n break;\n }\n }\n if (!pathCacheHit && !rs.badLine) {\n if (context.beginPath) {\n context.beginPath();\n }\n context.moveTo(pts[0], pts[1]);\n switch (rs.edgeType) {\n case 'bezier':\n case 'self':\n case 'compound':\n case 'multibezier':\n for (var i = 2; i + 3 < pts.length; i += 4) {\n context.quadraticCurveTo(pts[i], pts[i + 1], pts[i + 2], pts[i + 3]);\n }\n break;\n case 'straight':\n case 'segments':\n case 'haystack':\n for (var _i = 2; _i + 1 < pts.length; _i += 2) {\n context.lineTo(pts[_i], pts[_i + 1]);\n }\n break;\n }\n }\n context = canvasCxt;\n if (usePaths) {\n context.stroke(path);\n } else {\n context.stroke();\n }\n\n // reset any line dashes\n if (context.setLineDash) {\n // for very outofdate browsers\n context.setLineDash([]);\n }\n};\nCRp$8.drawEdgeTrianglePath = function (edge, context, pts) {\n // use line stroke style for triangle fill style\n context.fillStyle = context.strokeStyle;\n var edgeWidth = edge.pstyle('width').pfValue;\n for (var i = 0; i + 1 < pts.length; i += 2) {\n var vector = [pts[i + 2] - pts[i], pts[i + 3] - pts[i + 1]];\n var length = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]);\n var normal = [vector[1] / length, -vector[0] / length];\n var triangleHead = [normal[0] * edgeWidth / 2, normal[1] * edgeWidth / 2];\n context.beginPath();\n context.moveTo(pts[i] - triangleHead[0], pts[i + 1] - triangleHead[1]);\n context.lineTo(pts[i] + triangleHead[0], pts[i + 1] + triangleHead[1]);\n context.lineTo(pts[i + 2], pts[i + 3]);\n context.closePath();\n context.fill();\n }\n};\nCRp$8.drawArrowheads = function (context, edge, opacity) {\n var rs = edge._private.rscratch;\n var isHaystack = rs.edgeType === 'haystack';\n if (!isHaystack) {\n this.drawArrowhead(context, edge, 'source', rs.arrowStartX, rs.arrowStartY, rs.srcArrowAngle, opacity);\n }\n this.drawArrowhead(context, edge, 'mid-target', rs.midX, rs.midY, rs.midtgtArrowAngle, opacity);\n this.drawArrowhead(context, edge, 'mid-source', rs.midX, rs.midY, rs.midsrcArrowAngle, opacity);\n if (!isHaystack) {\n this.drawArrowhead(context, edge, 'target', rs.arrowEndX, rs.arrowEndY, rs.tgtArrowAngle, opacity);\n }\n};\nCRp$8.drawArrowhead = function (context, edge, prefix, x, y, angle, opacity) {\n if (isNaN(x) || x == null || isNaN(y) || y == null || isNaN(angle) || angle == null) {\n return;\n }\n var self = this;\n var arrowShape = edge.pstyle(prefix + '-arrow-shape').value;\n if (arrowShape === 'none') {\n return;\n }\n var arrowClearFill = edge.pstyle(prefix + '-arrow-fill').value === 'hollow' ? 'both' : 'filled';\n var arrowFill = edge.pstyle(prefix + '-arrow-fill').value;\n var edgeWidth = edge.pstyle('width').pfValue;\n var edgeOpacity = edge.pstyle('opacity').value;\n if (opacity === undefined) {\n opacity = edgeOpacity;\n }\n var gco = context.globalCompositeOperation;\n if (opacity !== 1 || arrowFill === 'hollow') {\n // then extra clear is needed\n context.globalCompositeOperation = 'destination-out';\n self.colorFillStyle(context, 255, 255, 255, 1);\n self.colorStrokeStyle(context, 255, 255, 255, 1);\n self.drawArrowShape(edge, context, arrowClearFill, edgeWidth, arrowShape, x, y, angle);\n context.globalCompositeOperation = gco;\n } // otherwise, the opaque arrow clears it for free :)\n\n var color = edge.pstyle(prefix + '-arrow-color').value;\n self.colorFillStyle(context, color[0], color[1], color[2], opacity);\n self.colorStrokeStyle(context, color[0], color[1], color[2], opacity);\n self.drawArrowShape(edge, context, arrowFill, edgeWidth, arrowShape, x, y, angle);\n};\nCRp$8.drawArrowShape = function (edge, context, fill, edgeWidth, shape, x, y, angle) {\n var r = this;\n var usePaths = this.usePaths() && shape !== 'triangle-cross';\n var pathCacheHit = false;\n var path;\n var canvasContext = context;\n var translation = {\n x: x,\n y: y\n };\n var scale = edge.pstyle('arrow-scale').value;\n var size = this.getArrowWidth(edgeWidth, scale);\n var shapeImpl = r.arrowShapes[shape];\n if (usePaths) {\n var cache = r.arrowPathCache = r.arrowPathCache || [];\n var key = hashString(shape);\n var cachedPath = cache[key];\n if (cachedPath != null) {\n path = context = cachedPath;\n pathCacheHit = true;\n } else {\n path = context = new Path2D();\n cache[key] = path;\n }\n }\n if (!pathCacheHit) {\n if (context.beginPath) {\n context.beginPath();\n }\n if (usePaths) {\n // store in the path cache with values easily manipulated later\n shapeImpl.draw(context, 1, 0, {\n x: 0,\n y: 0\n }, 1);\n } else {\n shapeImpl.draw(context, size, angle, translation, edgeWidth);\n }\n if (context.closePath) {\n context.closePath();\n }\n }\n context = canvasContext;\n if (usePaths) {\n // set transform to arrow position/orientation\n context.translate(x, y);\n context.rotate(angle);\n context.scale(size, size);\n }\n if (fill === 'filled' || fill === 'both') {\n if (usePaths) {\n context.fill(path);\n } else {\n context.fill();\n }\n }\n if (fill === 'hollow' || fill === 'both') {\n context.lineWidth = (shapeImpl.matchEdgeWidth ? edgeWidth : 1) / (usePaths ? size : 1);\n context.lineJoin = 'miter';\n if (usePaths) {\n context.stroke(path);\n } else {\n context.stroke();\n }\n }\n if (usePaths) {\n // reset transform by applying inverse\n context.scale(1 / size, 1 / size);\n context.rotate(-angle);\n context.translate(-x, -y);\n }\n};\n\nvar CRp$7 = {};\nCRp$7.safeDrawImage = function (context, img, ix, iy, iw, ih, x, y, w, h) {\n // detect problematic cases for old browsers with bad images (cheaper than try-catch)\n if (iw <= 0 || ih <= 0 || w <= 0 || h <= 0) {\n return;\n }\n try {\n context.drawImage(img, ix, iy, iw, ih, x, y, w, h);\n } catch (e) {\n warn(e);\n }\n};\nCRp$7.drawInscribedImage = function (context, img, node, index, nodeOpacity) {\n var r = this;\n var pos = node.position();\n var nodeX = pos.x;\n var nodeY = pos.y;\n var styleObj = node.cy().style();\n var getIndexedStyle = styleObj.getIndexedStyle.bind(styleObj);\n var fit = getIndexedStyle(node, 'background-fit', 'value', index);\n var repeat = getIndexedStyle(node, 'background-repeat', 'value', index);\n var nodeW = node.width();\n var nodeH = node.height();\n var paddingX2 = node.padding() * 2;\n var nodeTW = nodeW + (getIndexedStyle(node, 'background-width-relative-to', 'value', index) === 'inner' ? 0 : paddingX2);\n var nodeTH = nodeH + (getIndexedStyle(node, 'background-height-relative-to', 'value', index) === 'inner' ? 0 : paddingX2);\n var rs = node._private.rscratch;\n var clip = getIndexedStyle(node, 'background-clip', 'value', index);\n var shouldClip = clip === 'node';\n var imgOpacity = getIndexedStyle(node, 'background-image-opacity', 'value', index) * nodeOpacity;\n var smooth = getIndexedStyle(node, 'background-image-smoothing', 'value', index);\n var imgW = img.width || img.cachedW;\n var imgH = img.height || img.cachedH;\n\n // workaround for broken browsers like ie\n if (null == imgW || null == imgH) {\n document.body.appendChild(img); // eslint-disable-line no-undef\n\n imgW = img.cachedW = img.width || img.offsetWidth;\n imgH = img.cachedH = img.height || img.offsetHeight;\n document.body.removeChild(img); // eslint-disable-line no-undef\n }\n\n var w = imgW;\n var h = imgH;\n if (getIndexedStyle(node, 'background-width', 'value', index) !== 'auto') {\n if (getIndexedStyle(node, 'background-width', 'units', index) === '%') {\n w = getIndexedStyle(node, 'background-width', 'pfValue', index) * nodeTW;\n } else {\n w = getIndexedStyle(node, 'background-width', 'pfValue', index);\n }\n }\n if (getIndexedStyle(node, 'background-height', 'value', index) !== 'auto') {\n if (getIndexedStyle(node, 'background-height', 'units', index) === '%') {\n h = getIndexedStyle(node, 'background-height', 'pfValue', index) * nodeTH;\n } else {\n h = getIndexedStyle(node, 'background-height', 'pfValue', index);\n }\n }\n if (w === 0 || h === 0) {\n return; // no point in drawing empty image (and chrome is broken in this case)\n }\n\n if (fit === 'contain') {\n var scale = Math.min(nodeTW / w, nodeTH / h);\n w *= scale;\n h *= scale;\n } else if (fit === 'cover') {\n var scale = Math.max(nodeTW / w, nodeTH / h);\n w *= scale;\n h *= scale;\n }\n var x = nodeX - nodeTW / 2; // left\n var posXUnits = getIndexedStyle(node, 'background-position-x', 'units', index);\n var posXPfVal = getIndexedStyle(node, 'background-position-x', 'pfValue', index);\n if (posXUnits === '%') {\n x += (nodeTW - w) * posXPfVal;\n } else {\n x += posXPfVal;\n }\n var offXUnits = getIndexedStyle(node, 'background-offset-x', 'units', index);\n var offXPfVal = getIndexedStyle(node, 'background-offset-x', 'pfValue', index);\n if (offXUnits === '%') {\n x += (nodeTW - w) * offXPfVal;\n } else {\n x += offXPfVal;\n }\n var y = nodeY - nodeTH / 2; // top\n var posYUnits = getIndexedStyle(node, 'background-position-y', 'units', index);\n var posYPfVal = getIndexedStyle(node, 'background-position-y', 'pfValue', index);\n if (posYUnits === '%') {\n y += (nodeTH - h) * posYPfVal;\n } else {\n y += posYPfVal;\n }\n var offYUnits = getIndexedStyle(node, 'background-offset-y', 'units', index);\n var offYPfVal = getIndexedStyle(node, 'background-offset-y', 'pfValue', index);\n if (offYUnits === '%') {\n y += (nodeTH - h) * offYPfVal;\n } else {\n y += offYPfVal;\n }\n if (rs.pathCache) {\n x -= nodeX;\n y -= nodeY;\n nodeX = 0;\n nodeY = 0;\n }\n var gAlpha = context.globalAlpha;\n context.globalAlpha = imgOpacity;\n var smoothingEnabled = r.getImgSmoothing(context);\n var isSmoothingSwitched = false;\n if (smooth === 'no' && smoothingEnabled) {\n r.setImgSmoothing(context, false);\n isSmoothingSwitched = true;\n } else if (smooth === 'yes' && !smoothingEnabled) {\n r.setImgSmoothing(context, true);\n isSmoothingSwitched = true;\n }\n if (repeat === 'no-repeat') {\n if (shouldClip) {\n context.save();\n if (rs.pathCache) {\n context.clip(rs.pathCache);\n } else {\n r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH);\n context.clip();\n }\n }\n r.safeDrawImage(context, img, 0, 0, imgW, imgH, x, y, w, h);\n if (shouldClip) {\n context.restore();\n }\n } else {\n var pattern = context.createPattern(img, repeat);\n context.fillStyle = pattern;\n r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH);\n context.translate(x, y);\n context.fill();\n context.translate(-x, -y);\n }\n context.globalAlpha = gAlpha;\n if (isSmoothingSwitched) {\n r.setImgSmoothing(context, smoothingEnabled);\n }\n};\n\nvar CRp$6 = {};\nCRp$6.eleTextBiggerThanMin = function (ele, scale) {\n if (!scale) {\n var zoom = ele.cy().zoom();\n var pxRatio = this.getPixelRatio();\n var lvl = Math.ceil(log2(zoom * pxRatio)); // the effective texture level\n\n scale = Math.pow(2, lvl);\n }\n var computedSize = ele.pstyle('font-size').pfValue * scale;\n var minSize = ele.pstyle('min-zoomed-font-size').pfValue;\n if (computedSize < minSize) {\n return false;\n }\n return true;\n};\nCRp$6.drawElementText = function (context, ele, shiftToOriginWithBb, force, prefix) {\n var useEleOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n var r = this;\n if (force == null) {\n if (useEleOpacity && !r.eleTextBiggerThanMin(ele)) {\n return;\n }\n } else if (force === false) {\n return;\n }\n if (ele.isNode()) {\n var label = ele.pstyle('label');\n if (!label || !label.value) {\n return;\n }\n var justification = r.getLabelJustification(ele);\n context.textAlign = justification;\n context.textBaseline = 'bottom';\n } else {\n var badLine = ele.element()._private.rscratch.badLine;\n var _label = ele.pstyle('label');\n var srcLabel = ele.pstyle('source-label');\n var tgtLabel = ele.pstyle('target-label');\n if (badLine || (!_label || !_label.value) && (!srcLabel || !srcLabel.value) && (!tgtLabel || !tgtLabel.value)) {\n return;\n }\n context.textAlign = 'center';\n context.textBaseline = 'bottom';\n }\n var applyRotation = !shiftToOriginWithBb;\n var bb;\n if (shiftToOriginWithBb) {\n bb = shiftToOriginWithBb;\n context.translate(-bb.x1, -bb.y1);\n }\n if (prefix == null) {\n r.drawText(context, ele, null, applyRotation, useEleOpacity);\n if (ele.isEdge()) {\n r.drawText(context, ele, 'source', applyRotation, useEleOpacity);\n r.drawText(context, ele, 'target', applyRotation, useEleOpacity);\n }\n } else {\n r.drawText(context, ele, prefix, applyRotation, useEleOpacity);\n }\n if (shiftToOriginWithBb) {\n context.translate(bb.x1, bb.y1);\n }\n};\nCRp$6.getFontCache = function (context) {\n var cache;\n this.fontCaches = this.fontCaches || [];\n for (var i = 0; i < this.fontCaches.length; i++) {\n cache = this.fontCaches[i];\n if (cache.context === context) {\n return cache;\n }\n }\n cache = {\n context: context\n };\n this.fontCaches.push(cache);\n return cache;\n};\n\n// set up canvas context with font\n// returns transformed text string\nCRp$6.setupTextStyle = function (context, ele) {\n var useEleOpacity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // Font style\n var labelStyle = ele.pstyle('font-style').strValue;\n var labelSize = ele.pstyle('font-size').pfValue + 'px';\n var labelFamily = ele.pstyle('font-family').strValue;\n var labelWeight = ele.pstyle('font-weight').strValue;\n var opacity = useEleOpacity ? ele.effectiveOpacity() * ele.pstyle('text-opacity').value : 1;\n var outlineOpacity = ele.pstyle('text-outline-opacity').value * opacity;\n var color = ele.pstyle('color').value;\n var outlineColor = ele.pstyle('text-outline-color').value;\n context.font = labelStyle + ' ' + labelWeight + ' ' + labelSize + ' ' + labelFamily;\n context.lineJoin = 'round'; // so text outlines aren't jagged\n\n this.colorFillStyle(context, color[0], color[1], color[2], opacity);\n this.colorStrokeStyle(context, outlineColor[0], outlineColor[1], outlineColor[2], outlineOpacity);\n};\n\n// TODO ensure re-used\nfunction roundRect(ctx, x, y, width, height) {\n var radius = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 5;\n ctx.beginPath();\n ctx.moveTo(x + radius, y);\n ctx.lineTo(x + width - radius, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n ctx.lineTo(x + width, y + height - radius);\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n ctx.lineTo(x + radius, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n ctx.lineTo(x, y + radius);\n ctx.quadraticCurveTo(x, y, x + radius, y);\n ctx.closePath();\n ctx.fill();\n}\nCRp$6.getTextAngle = function (ele, prefix) {\n var theta;\n var _p = ele._private;\n var rscratch = _p.rscratch;\n var pdash = prefix ? prefix + '-' : '';\n var rotation = ele.pstyle(pdash + 'text-rotation');\n var textAngle = getPrefixedProperty(rscratch, 'labelAngle', prefix);\n if (rotation.strValue === 'autorotate') {\n theta = ele.isEdge() ? textAngle : 0;\n } else if (rotation.strValue === 'none') {\n theta = 0;\n } else {\n theta = rotation.pfValue;\n }\n return theta;\n};\nCRp$6.drawText = function (context, ele, prefix) {\n var applyRotation = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var useEleOpacity = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var _p = ele._private;\n var rscratch = _p.rscratch;\n var parentOpacity = useEleOpacity ? ele.effectiveOpacity() : 1;\n if (useEleOpacity && (parentOpacity === 0 || ele.pstyle('text-opacity').value === 0)) {\n return;\n }\n\n // use 'main' as an alias for the main label (i.e. null prefix)\n if (prefix === 'main') {\n prefix = null;\n }\n var textX = getPrefixedProperty(rscratch, 'labelX', prefix);\n var textY = getPrefixedProperty(rscratch, 'labelY', prefix);\n var orgTextX, orgTextY; // used for rotation\n var text = this.getLabelText(ele, prefix);\n if (text != null && text !== '' && !isNaN(textX) && !isNaN(textY)) {\n this.setupTextStyle(context, ele, useEleOpacity);\n var pdash = prefix ? prefix + '-' : '';\n var textW = getPrefixedProperty(rscratch, 'labelWidth', prefix);\n var textH = getPrefixedProperty(rscratch, 'labelHeight', prefix);\n var marginX = ele.pstyle(pdash + 'text-margin-x').pfValue;\n var marginY = ele.pstyle(pdash + 'text-margin-y').pfValue;\n var isEdge = ele.isEdge();\n var halign = ele.pstyle('text-halign').value;\n var valign = ele.pstyle('text-valign').value;\n if (isEdge) {\n halign = 'center';\n valign = 'center';\n }\n textX += marginX;\n textY += marginY;\n var theta;\n if (!applyRotation) {\n theta = 0;\n } else {\n theta = this.getTextAngle(ele, prefix);\n }\n if (theta !== 0) {\n orgTextX = textX;\n orgTextY = textY;\n context.translate(orgTextX, orgTextY);\n context.rotate(theta);\n textX = 0;\n textY = 0;\n }\n switch (valign) {\n case 'top':\n break;\n case 'center':\n textY += textH / 2;\n break;\n case 'bottom':\n textY += textH;\n break;\n }\n var backgroundOpacity = ele.pstyle('text-background-opacity').value;\n var borderOpacity = ele.pstyle('text-border-opacity').value;\n var textBorderWidth = ele.pstyle('text-border-width').pfValue;\n var backgroundPadding = ele.pstyle('text-background-padding').pfValue;\n if (backgroundOpacity > 0 || textBorderWidth > 0 && borderOpacity > 0) {\n var bgX = textX - backgroundPadding;\n switch (halign) {\n case 'left':\n bgX -= textW;\n break;\n case 'center':\n bgX -= textW / 2;\n break;\n }\n var bgY = textY - textH - backgroundPadding;\n var bgW = textW + 2 * backgroundPadding;\n var bgH = textH + 2 * backgroundPadding;\n if (backgroundOpacity > 0) {\n var textFill = context.fillStyle;\n var textBackgroundColor = ele.pstyle('text-background-color').value;\n context.fillStyle = 'rgba(' + textBackgroundColor[0] + ',' + textBackgroundColor[1] + ',' + textBackgroundColor[2] + ',' + backgroundOpacity * parentOpacity + ')';\n var styleShape = ele.pstyle('text-background-shape').strValue;\n if (styleShape.indexOf('round') === 0) {\n roundRect(context, bgX, bgY, bgW, bgH, 2);\n } else {\n context.fillRect(bgX, bgY, bgW, bgH);\n }\n context.fillStyle = textFill;\n }\n if (textBorderWidth > 0 && borderOpacity > 0) {\n var textStroke = context.strokeStyle;\n var textLineWidth = context.lineWidth;\n var textBorderColor = ele.pstyle('text-border-color').value;\n var textBorderStyle = ele.pstyle('text-border-style').value;\n context.strokeStyle = 'rgba(' + textBorderColor[0] + ',' + textBorderColor[1] + ',' + textBorderColor[2] + ',' + borderOpacity * parentOpacity + ')';\n context.lineWidth = textBorderWidth;\n if (context.setLineDash) {\n // for very outofdate browsers\n switch (textBorderStyle) {\n case 'dotted':\n context.setLineDash([1, 1]);\n break;\n case 'dashed':\n context.setLineDash([4, 2]);\n break;\n case 'double':\n context.lineWidth = textBorderWidth / 4; // 50% reserved for white between the two borders\n context.setLineDash([]);\n break;\n case 'solid':\n context.setLineDash([]);\n break;\n }\n }\n context.strokeRect(bgX, bgY, bgW, bgH);\n if (textBorderStyle === 'double') {\n var whiteWidth = textBorderWidth / 2;\n context.strokeRect(bgX + whiteWidth, bgY + whiteWidth, bgW - whiteWidth * 2, bgH - whiteWidth * 2);\n }\n if (context.setLineDash) {\n // for very outofdate browsers\n context.setLineDash([]);\n }\n context.lineWidth = textLineWidth;\n context.strokeStyle = textStroke;\n }\n }\n var lineWidth = 2 * ele.pstyle('text-outline-width').pfValue; // *2 b/c the stroke is drawn centred on the middle\n\n if (lineWidth > 0) {\n context.lineWidth = lineWidth;\n }\n if (ele.pstyle('text-wrap').value === 'wrap') {\n var lines = getPrefixedProperty(rscratch, 'labelWrapCachedLines', prefix);\n var lineHeight = getPrefixedProperty(rscratch, 'labelLineHeight', prefix);\n var halfTextW = textW / 2;\n var justification = this.getLabelJustification(ele);\n if (justification === 'auto') ; else if (halign === 'left') {\n // auto justification : right\n if (justification === 'left') {\n textX += -textW;\n } else if (justification === 'center') {\n textX += -halfTextW;\n } // else same as auto\n } else if (halign === 'center') {\n // auto justfication : center\n if (justification === 'left') {\n textX += -halfTextW;\n } else if (justification === 'right') {\n textX += halfTextW;\n } // else same as auto\n } else if (halign === 'right') {\n // auto justification : left\n if (justification === 'center') {\n textX += halfTextW;\n } else if (justification === 'right') {\n textX += textW;\n } // else same as auto\n }\n\n switch (valign) {\n case 'top':\n textY -= (lines.length - 1) * lineHeight;\n break;\n case 'center':\n case 'bottom':\n textY -= (lines.length - 1) * lineHeight;\n break;\n }\n for (var l = 0; l < lines.length; l++) {\n if (lineWidth > 0) {\n context.strokeText(lines[l], textX, textY);\n }\n context.fillText(lines[l], textX, textY);\n textY += lineHeight;\n }\n } else {\n if (lineWidth > 0) {\n context.strokeText(text, textX, textY);\n }\n context.fillText(text, textX, textY);\n }\n if (theta !== 0) {\n context.rotate(-theta);\n context.translate(-orgTextX, -orgTextY);\n }\n }\n};\n\n/* global Path2D */\nvar CRp$5 = {};\nCRp$5.drawNode = function (context, node, shiftToOriginWithBb) {\n var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n var r = this;\n var nodeWidth, nodeHeight;\n var _p = node._private;\n var rs = _p.rscratch;\n var pos = node.position();\n if (!number$1(pos.x) || !number$1(pos.y)) {\n return; // can't draw node with undefined position\n }\n\n if (shouldDrawOpacity && !node.visible()) {\n return;\n }\n var eleOpacity = shouldDrawOpacity ? node.effectiveOpacity() : 1;\n var usePaths = r.usePaths();\n var path;\n var pathCacheHit = false;\n var padding = node.padding();\n nodeWidth = node.width() + 2 * padding;\n nodeHeight = node.height() + 2 * padding;\n\n //\n // setup shift\n\n var bb;\n if (shiftToOriginWithBb) {\n bb = shiftToOriginWithBb;\n context.translate(-bb.x1, -bb.y1);\n }\n\n //\n // load bg image\n\n var bgImgProp = node.pstyle('background-image');\n var urls = bgImgProp.value;\n var urlDefined = new Array(urls.length);\n var image = new Array(urls.length);\n var numImages = 0;\n for (var i = 0; i < urls.length; i++) {\n var url = urls[i];\n var defd = urlDefined[i] = url != null && url !== 'none';\n if (defd) {\n var bgImgCrossOrigin = node.cy().style().getIndexedStyle(node, 'background-image-crossorigin', 'value', i);\n numImages++;\n\n // get image, and if not loaded then ask to redraw when later loaded\n image[i] = r.getCachedImage(url, bgImgCrossOrigin, function () {\n _p.backgroundTimestamp = Date.now();\n node.emitAndNotify('background');\n });\n }\n }\n\n //\n // setup styles\n\n var darkness = node.pstyle('background-blacken').value;\n var borderWidth = node.pstyle('border-width').pfValue;\n var bgOpacity = node.pstyle('background-opacity').value * eleOpacity;\n var borderColor = node.pstyle('border-color').value;\n var borderStyle = node.pstyle('border-style').value;\n var borderOpacity = node.pstyle('border-opacity').value * eleOpacity;\n context.lineJoin = 'miter'; // so borders are square with the node shape\n\n var setupShapeColor = function setupShapeColor() {\n var bgOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : bgOpacity;\n r.eleFillStyle(context, node, bgOpy);\n };\n var setupBorderColor = function setupBorderColor() {\n var bdrOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : borderOpacity;\n r.colorStrokeStyle(context, borderColor[0], borderColor[1], borderColor[2], bdrOpy);\n };\n\n //\n // setup shape\n\n var styleShape = node.pstyle('shape').strValue;\n var shapePts = node.pstyle('shape-polygon-points').pfValue;\n if (usePaths) {\n context.translate(pos.x, pos.y);\n var pathCache = r.nodePathCache = r.nodePathCache || [];\n var key = hashStrings(styleShape === 'polygon' ? styleShape + ',' + shapePts.join(',') : styleShape, '' + nodeHeight, '' + nodeWidth);\n var cachedPath = pathCache[key];\n if (cachedPath != null) {\n path = cachedPath;\n pathCacheHit = true;\n rs.pathCache = path;\n } else {\n path = new Path2D();\n pathCache[key] = rs.pathCache = path;\n }\n }\n var drawShape = function drawShape() {\n if (!pathCacheHit) {\n var npos = pos;\n if (usePaths) {\n npos = {\n x: 0,\n y: 0\n };\n }\n r.nodeShapes[r.getNodeShape(node)].draw(path || context, npos.x, npos.y, nodeWidth, nodeHeight);\n }\n if (usePaths) {\n context.fill(path);\n } else {\n context.fill();\n }\n };\n var drawImages = function drawImages() {\n var nodeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity;\n var inside = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var prevBging = _p.backgrounding;\n var totalCompleted = 0;\n for (var _i = 0; _i < image.length; _i++) {\n var bgContainment = node.cy().style().getIndexedStyle(node, 'background-image-containment', 'value', _i);\n if (inside && bgContainment === 'over' || !inside && bgContainment === 'inside') {\n totalCompleted++;\n continue;\n }\n if (urlDefined[_i] && image[_i].complete && !image[_i].error) {\n totalCompleted++;\n r.drawInscribedImage(context, image[_i], node, _i, nodeOpacity);\n }\n }\n _p.backgrounding = !(totalCompleted === numImages);\n if (prevBging !== _p.backgrounding) {\n // update style b/c :backgrounding state changed\n node.updateStyle(false);\n }\n };\n var drawPie = function drawPie() {\n var redrawShape = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var pieOpacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : eleOpacity;\n if (r.hasPie(node)) {\n r.drawPie(context, node, pieOpacity);\n\n // redraw/restore path if steps after pie need it\n if (redrawShape) {\n if (!usePaths) {\n r.nodeShapes[r.getNodeShape(node)].draw(context, pos.x, pos.y, nodeWidth, nodeHeight);\n }\n }\n }\n };\n var darken = function darken() {\n var darkenOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity;\n var opacity = (darkness > 0 ? darkness : -darkness) * darkenOpacity;\n var c = darkness > 0 ? 0 : 255;\n if (darkness !== 0) {\n r.colorFillStyle(context, c, c, c, opacity);\n if (usePaths) {\n context.fill(path);\n } else {\n context.fill();\n }\n }\n };\n var drawBorder = function drawBorder() {\n if (borderWidth > 0) {\n context.lineWidth = borderWidth;\n context.lineCap = 'butt';\n if (context.setLineDash) {\n // for very outofdate browsers\n switch (borderStyle) {\n case 'dotted':\n context.setLineDash([1, 1]);\n break;\n case 'dashed':\n context.setLineDash([4, 2]);\n break;\n case 'solid':\n case 'double':\n context.setLineDash([]);\n break;\n }\n }\n if (usePaths) {\n context.stroke(path);\n } else {\n context.stroke();\n }\n if (borderStyle === 'double') {\n context.lineWidth = borderWidth / 3;\n var gco = context.globalCompositeOperation;\n context.globalCompositeOperation = 'destination-out';\n if (usePaths) {\n context.stroke(path);\n } else {\n context.stroke();\n }\n context.globalCompositeOperation = gco;\n }\n\n // reset in case we changed the border style\n if (context.setLineDash) {\n // for very outofdate browsers\n context.setLineDash([]);\n }\n }\n };\n var drawOverlay = function drawOverlay() {\n if (shouldDrawOverlay) {\n r.drawNodeOverlay(context, node, pos, nodeWidth, nodeHeight);\n }\n };\n var drawUnderlay = function drawUnderlay() {\n if (shouldDrawOverlay) {\n r.drawNodeUnderlay(context, node, pos, nodeWidth, nodeHeight);\n }\n };\n var drawText = function drawText() {\n r.drawElementText(context, node, null, drawLabel);\n };\n var ghost = node.pstyle('ghost').value === 'yes';\n if (ghost) {\n var gx = node.pstyle('ghost-offset-x').pfValue;\n var gy = node.pstyle('ghost-offset-y').pfValue;\n var ghostOpacity = node.pstyle('ghost-opacity').value;\n var effGhostOpacity = ghostOpacity * eleOpacity;\n context.translate(gx, gy);\n setupShapeColor(ghostOpacity * bgOpacity);\n drawShape();\n drawImages(effGhostOpacity, true);\n setupBorderColor(ghostOpacity * borderOpacity);\n drawBorder();\n drawPie(darkness !== 0 || borderWidth !== 0);\n drawImages(effGhostOpacity, false);\n darken(effGhostOpacity);\n context.translate(-gx, -gy);\n }\n if (usePaths) {\n context.translate(-pos.x, -pos.y);\n }\n drawUnderlay();\n if (usePaths) {\n context.translate(pos.x, pos.y);\n }\n setupShapeColor();\n drawShape();\n drawImages(eleOpacity, true);\n setupBorderColor();\n drawBorder();\n drawPie(darkness !== 0 || borderWidth !== 0);\n drawImages(eleOpacity, false);\n darken();\n if (usePaths) {\n context.translate(-pos.x, -pos.y);\n }\n drawText();\n drawOverlay();\n\n //\n // clean up shift\n\n if (shiftToOriginWithBb) {\n context.translate(bb.x1, bb.y1);\n }\n};\nvar drawNodeOverlayUnderlay = function drawNodeOverlayUnderlay(overlayOrUnderlay) {\n if (!['overlay', 'underlay'].includes(overlayOrUnderlay)) {\n throw new Error('Invalid state');\n }\n return function (context, node, pos, nodeWidth, nodeHeight) {\n var r = this;\n if (!node.visible()) {\n return;\n }\n var padding = node.pstyle(\"\".concat(overlayOrUnderlay, \"-padding\")).pfValue;\n var opacity = node.pstyle(\"\".concat(overlayOrUnderlay, \"-opacity\")).value;\n var color = node.pstyle(\"\".concat(overlayOrUnderlay, \"-color\")).value;\n var shape = node.pstyle(\"\".concat(overlayOrUnderlay, \"-shape\")).value;\n if (opacity > 0) {\n pos = pos || node.position();\n if (nodeWidth == null || nodeHeight == null) {\n var _padding = node.padding();\n nodeWidth = node.width() + 2 * _padding;\n nodeHeight = node.height() + 2 * _padding;\n }\n r.colorFillStyle(context, color[0], color[1], color[2], opacity);\n r.nodeShapes[shape].draw(context, pos.x, pos.y, nodeWidth + padding * 2, nodeHeight + padding * 2);\n context.fill();\n }\n };\n};\nCRp$5.drawNodeOverlay = drawNodeOverlayUnderlay('overlay');\nCRp$5.drawNodeUnderlay = drawNodeOverlayUnderlay('underlay');\n\n// does the node have at least one pie piece?\nCRp$5.hasPie = function (node) {\n node = node[0]; // ensure ele ref\n\n return node._private.hasPie;\n};\nCRp$5.drawPie = function (context, node, nodeOpacity, pos) {\n node = node[0]; // ensure ele ref\n pos = pos || node.position();\n var cyStyle = node.cy().style();\n var pieSize = node.pstyle('pie-size');\n var x = pos.x;\n var y = pos.y;\n var nodeW = node.width();\n var nodeH = node.height();\n var radius = Math.min(nodeW, nodeH) / 2; // must fit in node\n var lastPercent = 0; // what % to continue drawing pie slices from on [0, 1]\n var usePaths = this.usePaths();\n if (usePaths) {\n x = 0;\n y = 0;\n }\n if (pieSize.units === '%') {\n radius = radius * pieSize.pfValue;\n } else if (pieSize.pfValue !== undefined) {\n radius = pieSize.pfValue / 2;\n }\n for (var i = 1; i <= cyStyle.pieBackgroundN; i++) {\n // 1..N\n var size = node.pstyle('pie-' + i + '-background-size').value;\n var color = node.pstyle('pie-' + i + '-background-color').value;\n var opacity = node.pstyle('pie-' + i + '-background-opacity').value * nodeOpacity;\n var percent = size / 100; // map integer range [0, 100] to [0, 1]\n\n // percent can't push beyond 1\n if (percent + lastPercent > 1) {\n percent = 1 - lastPercent;\n }\n var angleStart = 1.5 * Math.PI + 2 * Math.PI * lastPercent; // start at 12 o'clock and go clockwise\n var angleDelta = 2 * Math.PI * percent;\n var angleEnd = angleStart + angleDelta;\n\n // ignore if\n // - zero size\n // - we're already beyond the full circle\n // - adding the current slice would go beyond the full circle\n if (size === 0 || lastPercent >= 1 || lastPercent + percent > 1) {\n continue;\n }\n context.beginPath();\n context.moveTo(x, y);\n context.arc(x, y, radius, angleStart, angleEnd);\n context.closePath();\n this.colorFillStyle(context, color[0], color[1], color[2], opacity);\n context.fill();\n lastPercent += percent;\n }\n};\n\nvar CRp$4 = {};\nvar motionBlurDelay = 100;\n\n// var isFirefox = typeof InstallTrigger !== 'undefined';\n\nCRp$4.getPixelRatio = function () {\n var context = this.data.contexts[0];\n if (this.forcedPixelRatio != null) {\n return this.forcedPixelRatio;\n }\n var backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1;\n return (window.devicePixelRatio || 1) / backingStore; // eslint-disable-line no-undef\n};\n\nCRp$4.paintCache = function (context) {\n var caches = this.paintCaches = this.paintCaches || [];\n var needToCreateCache = true;\n var cache;\n for (var i = 0; i < caches.length; i++) {\n cache = caches[i];\n if (cache.context === context) {\n needToCreateCache = false;\n break;\n }\n }\n if (needToCreateCache) {\n cache = {\n context: context\n };\n caches.push(cache);\n }\n return cache;\n};\nCRp$4.createGradientStyleFor = function (context, shapeStyleName, ele, fill, opacity) {\n var gradientStyle;\n var usePaths = this.usePaths();\n var colors = ele.pstyle(shapeStyleName + '-gradient-stop-colors').value,\n positions = ele.pstyle(shapeStyleName + '-gradient-stop-positions').pfValue;\n if (fill === 'radial-gradient') {\n if (ele.isEdge()) {\n var start = ele.sourceEndpoint(),\n end = ele.targetEndpoint(),\n mid = ele.midpoint();\n var d1 = dist(start, mid);\n var d2 = dist(end, mid);\n gradientStyle = context.createRadialGradient(mid.x, mid.y, 0, mid.x, mid.y, Math.max(d1, d2));\n } else {\n var pos = usePaths ? {\n x: 0,\n y: 0\n } : ele.position(),\n width = ele.paddedWidth(),\n height = ele.paddedHeight();\n gradientStyle = context.createRadialGradient(pos.x, pos.y, 0, pos.x, pos.y, Math.max(width, height));\n }\n } else {\n if (ele.isEdge()) {\n var _start = ele.sourceEndpoint(),\n _end = ele.targetEndpoint();\n gradientStyle = context.createLinearGradient(_start.x, _start.y, _end.x, _end.y);\n } else {\n var _pos = usePaths ? {\n x: 0,\n y: 0\n } : ele.position(),\n _width = ele.paddedWidth(),\n _height = ele.paddedHeight(),\n halfWidth = _width / 2,\n halfHeight = _height / 2;\n var direction = ele.pstyle('background-gradient-direction').value;\n switch (direction) {\n case 'to-bottom':\n gradientStyle = context.createLinearGradient(_pos.x, _pos.y - halfHeight, _pos.x, _pos.y + halfHeight);\n break;\n case 'to-top':\n gradientStyle = context.createLinearGradient(_pos.x, _pos.y + halfHeight, _pos.x, _pos.y - halfHeight);\n break;\n case 'to-left':\n gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y, _pos.x - halfWidth, _pos.y);\n break;\n case 'to-right':\n gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y, _pos.x + halfWidth, _pos.y);\n break;\n case 'to-bottom-right':\n case 'to-right-bottom':\n gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y - halfHeight, _pos.x + halfWidth, _pos.y + halfHeight);\n break;\n case 'to-top-right':\n case 'to-right-top':\n gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y + halfHeight, _pos.x + halfWidth, _pos.y - halfHeight);\n break;\n case 'to-bottom-left':\n case 'to-left-bottom':\n gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y - halfHeight, _pos.x - halfWidth, _pos.y + halfHeight);\n break;\n case 'to-top-left':\n case 'to-left-top':\n gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y + halfHeight, _pos.x - halfWidth, _pos.y - halfHeight);\n break;\n }\n }\n }\n if (!gradientStyle) return null; // invalid gradient style\n\n var hasPositions = positions.length === colors.length;\n var length = colors.length;\n for (var i = 0; i < length; i++) {\n gradientStyle.addColorStop(hasPositions ? positions[i] : i / (length - 1), 'rgba(' + colors[i][0] + ',' + colors[i][1] + ',' + colors[i][2] + ',' + opacity + ')');\n }\n return gradientStyle;\n};\nCRp$4.gradientFillStyle = function (context, ele, fill, opacity) {\n var gradientStyle = this.createGradientStyleFor(context, 'background', ele, fill, opacity);\n if (!gradientStyle) return null; // error\n context.fillStyle = gradientStyle;\n};\nCRp$4.colorFillStyle = function (context, r, g, b, a) {\n context.fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n // turn off for now, seems context does its own caching\n\n // var cache = this.paintCache(context);\n\n // var fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n\n // if( cache.fillStyle !== fillStyle ){\n // context.fillStyle = cache.fillStyle = fillStyle;\n // }\n};\n\nCRp$4.eleFillStyle = function (context, ele, opacity) {\n var backgroundFill = ele.pstyle('background-fill').value;\n if (backgroundFill === 'linear-gradient' || backgroundFill === 'radial-gradient') {\n this.gradientFillStyle(context, ele, backgroundFill, opacity);\n } else {\n var backgroundColor = ele.pstyle('background-color').value;\n this.colorFillStyle(context, backgroundColor[0], backgroundColor[1], backgroundColor[2], opacity);\n }\n};\nCRp$4.gradientStrokeStyle = function (context, ele, fill, opacity) {\n var gradientStyle = this.createGradientStyleFor(context, 'line', ele, fill, opacity);\n if (!gradientStyle) return null; // error\n context.strokeStyle = gradientStyle;\n};\nCRp$4.colorStrokeStyle = function (context, r, g, b, a) {\n context.strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n // turn off for now, seems context does its own caching\n\n // var cache = this.paintCache(context);\n\n // var strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n\n // if( cache.strokeStyle !== strokeStyle ){\n // context.strokeStyle = cache.strokeStyle = strokeStyle;\n // }\n};\n\nCRp$4.eleStrokeStyle = function (context, ele, opacity) {\n var lineFill = ele.pstyle('line-fill').value;\n if (lineFill === 'linear-gradient' || lineFill === 'radial-gradient') {\n this.gradientStrokeStyle(context, ele, lineFill, opacity);\n } else {\n var lineColor = ele.pstyle('line-color').value;\n this.colorStrokeStyle(context, lineColor[0], lineColor[1], lineColor[2], opacity);\n }\n};\n\n// Resize canvas\nCRp$4.matchCanvasSize = function (container) {\n var r = this;\n var data = r.data;\n var bb = r.findContainerClientCoords();\n var width = bb[2];\n var height = bb[3];\n var pixelRatio = r.getPixelRatio();\n var mbPxRatio = r.motionBlurPxRatio;\n if (container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE] || container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG]) {\n pixelRatio = mbPxRatio;\n }\n var canvasWidth = width * pixelRatio;\n var canvasHeight = height * pixelRatio;\n var canvas;\n if (canvasWidth === r.canvasWidth && canvasHeight === r.canvasHeight) {\n return; // save cycles if same\n }\n\n r.fontCaches = null; // resizing resets the style\n\n var canvasContainer = data.canvasContainer;\n canvasContainer.style.width = width + 'px';\n canvasContainer.style.height = height + 'px';\n for (var i = 0; i < r.CANVAS_LAYERS; i++) {\n canvas = data.canvases[i];\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n for (var i = 0; i < r.BUFFER_COUNT; i++) {\n canvas = data.bufferCanvases[i];\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n r.textureMult = 1;\n if (pixelRatio <= 1) {\n canvas = data.bufferCanvases[r.TEXTURE_BUFFER];\n r.textureMult = 2;\n canvas.width = canvasWidth * r.textureMult;\n canvas.height = canvasHeight * r.textureMult;\n }\n r.canvasWidth = canvasWidth;\n r.canvasHeight = canvasHeight;\n};\nCRp$4.renderTo = function (cxt, zoom, pan, pxRatio) {\n this.render({\n forcedContext: cxt,\n forcedZoom: zoom,\n forcedPan: pan,\n drawAllLayers: true,\n forcedPxRatio: pxRatio\n });\n};\nCRp$4.render = function (options) {\n options = options || staticEmptyObject();\n var forcedContext = options.forcedContext;\n var drawAllLayers = options.drawAllLayers;\n var drawOnlyNodeLayer = options.drawOnlyNodeLayer;\n var forcedZoom = options.forcedZoom;\n var forcedPan = options.forcedPan;\n var r = this;\n var pixelRatio = options.forcedPxRatio === undefined ? this.getPixelRatio() : options.forcedPxRatio;\n var cy = r.cy;\n var data = r.data;\n var needDraw = data.canvasNeedsRedraw;\n var textureDraw = r.textureOnViewport && !forcedContext && (r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming);\n var motionBlur = options.motionBlur !== undefined ? options.motionBlur : r.motionBlur;\n var mbPxRatio = r.motionBlurPxRatio;\n var hasCompoundNodes = cy.hasCompoundNodes();\n var inNodeDragGesture = r.hoverData.draggingEles;\n var inBoxSelection = r.hoverData.selecting || r.touchData.selecting ? true : false;\n motionBlur = motionBlur && !forcedContext && r.motionBlurEnabled && !inBoxSelection;\n var motionBlurFadeEffect = motionBlur;\n if (!forcedContext) {\n if (r.prevPxRatio !== pixelRatio) {\n r.invalidateContainerClientCoordsCache();\n r.matchCanvasSize(r.container);\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n }\n r.prevPxRatio = pixelRatio;\n }\n if (!forcedContext && r.motionBlurTimeout) {\n clearTimeout(r.motionBlurTimeout);\n }\n if (motionBlur) {\n if (r.mbFrames == null) {\n r.mbFrames = 0;\n }\n r.mbFrames++;\n if (r.mbFrames < 3) {\n // need several frames before even high quality motionblur\n motionBlurFadeEffect = false;\n }\n\n // go to lower quality blurry frames when several m/b frames have been rendered (avoids flashing)\n if (r.mbFrames > r.minMbLowQualFrames) {\n //r.fullQualityMb = false;\n r.motionBlurPxRatio = r.mbPxRBlurry;\n }\n }\n if (r.clearingMotionBlur) {\n r.motionBlurPxRatio = 1;\n }\n\n // b/c drawToContext() may be async w.r.t. redraw(), keep track of last texture frame\n // because a rogue async texture frame would clear needDraw\n if (r.textureDrawLastFrame && !textureDraw) {\n needDraw[r.NODE] = true;\n needDraw[r.SELECT_BOX] = true;\n }\n var style = cy.style();\n var zoom = cy.zoom();\n var effectiveZoom = forcedZoom !== undefined ? forcedZoom : zoom;\n var pan = cy.pan();\n var effectivePan = {\n x: pan.x,\n y: pan.y\n };\n var vp = {\n zoom: zoom,\n pan: {\n x: pan.x,\n y: pan.y\n }\n };\n var prevVp = r.prevViewport;\n var viewportIsDiff = prevVp === undefined || vp.zoom !== prevVp.zoom || vp.pan.x !== prevVp.pan.x || vp.pan.y !== prevVp.pan.y;\n\n // we want the low quality motionblur only when the viewport is being manipulated etc (where it's not noticed)\n if (!viewportIsDiff && !(inNodeDragGesture && !hasCompoundNodes)) {\n r.motionBlurPxRatio = 1;\n }\n if (forcedPan) {\n effectivePan = forcedPan;\n }\n\n // apply pixel ratio\n\n effectiveZoom *= pixelRatio;\n effectivePan.x *= pixelRatio;\n effectivePan.y *= pixelRatio;\n var eles = r.getCachedZSortedEles();\n function mbclear(context, x, y, w, h) {\n var gco = context.globalCompositeOperation;\n context.globalCompositeOperation = 'destination-out';\n r.colorFillStyle(context, 255, 255, 255, r.motionBlurTransparency);\n context.fillRect(x, y, w, h);\n context.globalCompositeOperation = gco;\n }\n function setContextTransform(context, clear) {\n var ePan, eZoom, w, h;\n if (!r.clearingMotionBlur && (context === data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] || context === data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG])) {\n ePan = {\n x: pan.x * mbPxRatio,\n y: pan.y * mbPxRatio\n };\n eZoom = zoom * mbPxRatio;\n w = r.canvasWidth * mbPxRatio;\n h = r.canvasHeight * mbPxRatio;\n } else {\n ePan = effectivePan;\n eZoom = effectiveZoom;\n w = r.canvasWidth;\n h = r.canvasHeight;\n }\n context.setTransform(1, 0, 0, 1, 0, 0);\n if (clear === 'motionBlur') {\n mbclear(context, 0, 0, w, h);\n } else if (!forcedContext && (clear === undefined || clear)) {\n context.clearRect(0, 0, w, h);\n }\n if (!drawAllLayers) {\n context.translate(ePan.x, ePan.y);\n context.scale(eZoom, eZoom);\n }\n if (forcedPan) {\n context.translate(forcedPan.x, forcedPan.y);\n }\n if (forcedZoom) {\n context.scale(forcedZoom, forcedZoom);\n }\n }\n if (!textureDraw) {\n r.textureDrawLastFrame = false;\n }\n if (textureDraw) {\n r.textureDrawLastFrame = true;\n if (!r.textureCache) {\n r.textureCache = {};\n r.textureCache.bb = cy.mutableElements().boundingBox();\n r.textureCache.texture = r.data.bufferCanvases[r.TEXTURE_BUFFER];\n var cxt = r.data.bufferContexts[r.TEXTURE_BUFFER];\n cxt.setTransform(1, 0, 0, 1, 0, 0);\n cxt.clearRect(0, 0, r.canvasWidth * r.textureMult, r.canvasHeight * r.textureMult);\n r.render({\n forcedContext: cxt,\n drawOnlyNodeLayer: true,\n forcedPxRatio: pixelRatio * r.textureMult\n });\n var vp = r.textureCache.viewport = {\n zoom: cy.zoom(),\n pan: cy.pan(),\n width: r.canvasWidth,\n height: r.canvasHeight\n };\n vp.mpan = {\n x: (0 - vp.pan.x) / vp.zoom,\n y: (0 - vp.pan.y) / vp.zoom\n };\n }\n needDraw[r.DRAG] = false;\n needDraw[r.NODE] = false;\n var context = data.contexts[r.NODE];\n var texture = r.textureCache.texture;\n var vp = r.textureCache.viewport;\n context.setTransform(1, 0, 0, 1, 0, 0);\n if (motionBlur) {\n mbclear(context, 0, 0, vp.width, vp.height);\n } else {\n context.clearRect(0, 0, vp.width, vp.height);\n }\n var outsideBgColor = style.core('outside-texture-bg-color').value;\n var outsideBgOpacity = style.core('outside-texture-bg-opacity').value;\n r.colorFillStyle(context, outsideBgColor[0], outsideBgColor[1], outsideBgColor[2], outsideBgOpacity);\n context.fillRect(0, 0, vp.width, vp.height);\n var zoom = cy.zoom();\n setContextTransform(context, false);\n context.clearRect(vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio);\n context.drawImage(texture, vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio);\n } else if (r.textureOnViewport && !forcedContext) {\n // clear the cache since we don't need it\n r.textureCache = null;\n }\n var extent = cy.extent();\n var vpManip = r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming || r.hoverData.draggingEles || r.cy.animated();\n var hideEdges = r.hideEdgesOnViewport && vpManip;\n var needMbClear = [];\n needMbClear[r.NODE] = !needDraw[r.NODE] && motionBlur && !r.clearedForMotionBlur[r.NODE] || r.clearingMotionBlur;\n if (needMbClear[r.NODE]) {\n r.clearedForMotionBlur[r.NODE] = true;\n }\n needMbClear[r.DRAG] = !needDraw[r.DRAG] && motionBlur && !r.clearedForMotionBlur[r.DRAG] || r.clearingMotionBlur;\n if (needMbClear[r.DRAG]) {\n r.clearedForMotionBlur[r.DRAG] = true;\n }\n if (needDraw[r.NODE] || drawAllLayers || drawOnlyNodeLayer || needMbClear[r.NODE]) {\n var useBuffer = motionBlur && !needMbClear[r.NODE] && mbPxRatio !== 1;\n var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] : data.contexts[r.NODE]);\n var clear = motionBlur && !useBuffer ? 'motionBlur' : undefined;\n setContextTransform(context, clear);\n if (hideEdges) {\n r.drawCachedNodes(context, eles.nondrag, pixelRatio, extent);\n } else {\n r.drawLayeredElements(context, eles.nondrag, pixelRatio, extent);\n }\n if (r.debug) {\n r.drawDebugPoints(context, eles.nondrag);\n }\n if (!drawAllLayers && !motionBlur) {\n needDraw[r.NODE] = false;\n }\n }\n if (!drawOnlyNodeLayer && (needDraw[r.DRAG] || drawAllLayers || needMbClear[r.DRAG])) {\n var useBuffer = motionBlur && !needMbClear[r.DRAG] && mbPxRatio !== 1;\n var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG] : data.contexts[r.DRAG]);\n setContextTransform(context, motionBlur && !useBuffer ? 'motionBlur' : undefined);\n if (hideEdges) {\n r.drawCachedNodes(context, eles.drag, pixelRatio, extent);\n } else {\n r.drawCachedElements(context, eles.drag, pixelRatio, extent);\n }\n if (r.debug) {\n r.drawDebugPoints(context, eles.drag);\n }\n if (!drawAllLayers && !motionBlur) {\n needDraw[r.DRAG] = false;\n }\n }\n if (r.showFps || !drawOnlyNodeLayer && needDraw[r.SELECT_BOX] && !drawAllLayers) {\n var context = forcedContext || data.contexts[r.SELECT_BOX];\n setContextTransform(context);\n if (r.selection[4] == 1 && (r.hoverData.selecting || r.touchData.selecting)) {\n var zoom = r.cy.zoom();\n var borderWidth = style.core('selection-box-border-width').value / zoom;\n context.lineWidth = borderWidth;\n context.fillStyle = 'rgba(' + style.core('selection-box-color').value[0] + ',' + style.core('selection-box-color').value[1] + ',' + style.core('selection-box-color').value[2] + ',' + style.core('selection-box-opacity').value + ')';\n context.fillRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]);\n if (borderWidth > 0) {\n context.strokeStyle = 'rgba(' + style.core('selection-box-border-color').value[0] + ',' + style.core('selection-box-border-color').value[1] + ',' + style.core('selection-box-border-color').value[2] + ',' + style.core('selection-box-opacity').value + ')';\n context.strokeRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]);\n }\n }\n if (data.bgActivePosistion && !r.hoverData.selecting) {\n var zoom = r.cy.zoom();\n var pos = data.bgActivePosistion;\n context.fillStyle = 'rgba(' + style.core('active-bg-color').value[0] + ',' + style.core('active-bg-color').value[1] + ',' + style.core('active-bg-color').value[2] + ',' + style.core('active-bg-opacity').value + ')';\n context.beginPath();\n context.arc(pos.x, pos.y, style.core('active-bg-size').pfValue / zoom, 0, 2 * Math.PI);\n context.fill();\n }\n var timeToRender = r.lastRedrawTime;\n if (r.showFps && timeToRender) {\n timeToRender = Math.round(timeToRender);\n var fps = Math.round(1000 / timeToRender);\n context.setTransform(1, 0, 0, 1, 0, 0);\n context.fillStyle = 'rgba(255, 0, 0, 0.75)';\n context.strokeStyle = 'rgba(255, 0, 0, 0.75)';\n context.lineWidth = 1;\n context.fillText('1 frame = ' + timeToRender + ' ms = ' + fps + ' fps', 0, 20);\n var maxFps = 60;\n context.strokeRect(0, 30, 250, 20);\n context.fillRect(0, 30, 250 * Math.min(fps / maxFps, 1), 20);\n }\n if (!drawAllLayers) {\n needDraw[r.SELECT_BOX] = false;\n }\n }\n\n // motionblur: blit rendered blurry frames\n if (motionBlur && mbPxRatio !== 1) {\n var cxtNode = data.contexts[r.NODE];\n var txtNode = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE];\n var cxtDrag = data.contexts[r.DRAG];\n var txtDrag = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG];\n var drawMotionBlur = function drawMotionBlur(cxt, txt, needClear) {\n cxt.setTransform(1, 0, 0, 1, 0, 0);\n if (needClear || !motionBlurFadeEffect) {\n cxt.clearRect(0, 0, r.canvasWidth, r.canvasHeight);\n } else {\n mbclear(cxt, 0, 0, r.canvasWidth, r.canvasHeight);\n }\n var pxr = mbPxRatio;\n cxt.drawImage(txt,\n // img\n 0, 0,\n // sx, sy\n r.canvasWidth * pxr, r.canvasHeight * pxr,\n // sw, sh\n 0, 0,\n // x, y\n r.canvasWidth, r.canvasHeight // w, h\n );\n };\n\n if (needDraw[r.NODE] || needMbClear[r.NODE]) {\n drawMotionBlur(cxtNode, txtNode, needMbClear[r.NODE]);\n needDraw[r.NODE] = false;\n }\n if (needDraw[r.DRAG] || needMbClear[r.DRAG]) {\n drawMotionBlur(cxtDrag, txtDrag, needMbClear[r.DRAG]);\n needDraw[r.DRAG] = false;\n }\n }\n r.prevViewport = vp;\n if (r.clearingMotionBlur) {\n r.clearingMotionBlur = false;\n r.motionBlurCleared = true;\n r.motionBlur = true;\n }\n if (motionBlur) {\n r.motionBlurTimeout = setTimeout(function () {\n r.motionBlurTimeout = null;\n r.clearedForMotionBlur[r.NODE] = false;\n r.clearedForMotionBlur[r.DRAG] = false;\n r.motionBlur = false;\n r.clearingMotionBlur = !textureDraw;\n r.mbFrames = 0;\n needDraw[r.NODE] = true;\n needDraw[r.DRAG] = true;\n r.redraw();\n }, motionBlurDelay);\n }\n if (!forcedContext) {\n cy.emit('render');\n }\n};\n\nvar CRp$3 = {};\n\n// @O Polygon drawing\nCRp$3.drawPolygonPath = function (context, x, y, width, height, points) {\n var halfW = width / 2;\n var halfH = height / 2;\n if (context.beginPath) {\n context.beginPath();\n }\n context.moveTo(x + halfW * points[0], y + halfH * points[1]);\n for (var i = 1; i < points.length / 2; i++) {\n context.lineTo(x + halfW * points[i * 2], y + halfH * points[i * 2 + 1]);\n }\n context.closePath();\n};\nCRp$3.drawRoundPolygonPath = function (context, x, y, width, height, points) {\n var halfW = width / 2;\n var halfH = height / 2;\n var cornerRadius = getRoundPolygonRadius(width, height);\n if (context.beginPath) {\n context.beginPath();\n }\n for (var _i = 0; _i < points.length / 4; _i++) {\n var sourceUv = void 0,\n destUv = void 0;\n if (_i === 0) {\n sourceUv = points.length - 2;\n } else {\n sourceUv = _i * 4 - 2;\n }\n destUv = _i * 4 + 2;\n var px = x + halfW * points[_i * 4];\n var py = y + halfH * points[_i * 4 + 1];\n var cosTheta = -points[sourceUv] * points[destUv] - points[sourceUv + 1] * points[destUv + 1];\n var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2);\n var cp0x = px - offset * points[sourceUv];\n var cp0y = py - offset * points[sourceUv + 1];\n var cp1x = px + offset * points[destUv];\n var cp1y = py + offset * points[destUv + 1];\n if (_i === 0) {\n context.moveTo(cp0x, cp0y);\n } else {\n context.lineTo(cp0x, cp0y);\n }\n context.arcTo(px, py, cp1x, cp1y, cornerRadius);\n }\n context.closePath();\n};\n\n// Round rectangle drawing\nCRp$3.drawRoundRectanglePath = function (context, x, y, width, height) {\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var cornerRadius = getRoundRectangleRadius(width, height);\n if (context.beginPath) {\n context.beginPath();\n }\n\n // Start at top middle\n context.moveTo(x, y - halfHeight);\n // Arc from middle top to right side\n context.arcTo(x + halfWidth, y - halfHeight, x + halfWidth, y, cornerRadius);\n // Arc from right side to bottom\n context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius);\n // Arc from bottom to left side\n context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius);\n // Arc from left side to topBorder\n context.arcTo(x - halfWidth, y - halfHeight, x, y - halfHeight, cornerRadius);\n // Join line\n context.lineTo(x, y - halfHeight);\n context.closePath();\n};\nCRp$3.drawBottomRoundRectanglePath = function (context, x, y, width, height) {\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var cornerRadius = getRoundRectangleRadius(width, height);\n if (context.beginPath) {\n context.beginPath();\n }\n\n // Start at top middle\n context.moveTo(x, y - halfHeight);\n context.lineTo(x + halfWidth, y - halfHeight);\n context.lineTo(x + halfWidth, y);\n context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius);\n context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius);\n context.lineTo(x - halfWidth, y - halfHeight);\n context.lineTo(x, y - halfHeight);\n context.closePath();\n};\nCRp$3.drawCutRectanglePath = function (context, x, y, width, height) {\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var cornerLength = getCutRectangleCornerLength();\n if (context.beginPath) {\n context.beginPath();\n }\n context.moveTo(x - halfWidth + cornerLength, y - halfHeight);\n context.lineTo(x + halfWidth - cornerLength, y - halfHeight);\n context.lineTo(x + halfWidth, y - halfHeight + cornerLength);\n context.lineTo(x + halfWidth, y + halfHeight - cornerLength);\n context.lineTo(x + halfWidth - cornerLength, y + halfHeight);\n context.lineTo(x - halfWidth + cornerLength, y + halfHeight);\n context.lineTo(x - halfWidth, y + halfHeight - cornerLength);\n context.lineTo(x - halfWidth, y - halfHeight + cornerLength);\n context.closePath();\n};\nCRp$3.drawBarrelPath = function (context, x, y, width, height) {\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var xBegin = x - halfWidth;\n var xEnd = x + halfWidth;\n var yBegin = y - halfHeight;\n var yEnd = y + halfHeight;\n var barrelCurveConstants = getBarrelCurveConstants(width, height);\n var wOffset = barrelCurveConstants.widthOffset;\n var hOffset = barrelCurveConstants.heightOffset;\n var ctrlPtXOffset = barrelCurveConstants.ctrlPtOffsetPct * wOffset;\n if (context.beginPath) {\n context.beginPath();\n }\n context.moveTo(xBegin, yBegin + hOffset);\n context.lineTo(xBegin, yEnd - hOffset);\n context.quadraticCurveTo(xBegin + ctrlPtXOffset, yEnd, xBegin + wOffset, yEnd);\n context.lineTo(xEnd - wOffset, yEnd);\n context.quadraticCurveTo(xEnd - ctrlPtXOffset, yEnd, xEnd, yEnd - hOffset);\n context.lineTo(xEnd, yBegin + hOffset);\n context.quadraticCurveTo(xEnd - ctrlPtXOffset, yBegin, xEnd - wOffset, yBegin);\n context.lineTo(xBegin + wOffset, yBegin);\n context.quadraticCurveTo(xBegin + ctrlPtXOffset, yBegin, xBegin, yBegin + hOffset);\n context.closePath();\n};\nvar sin0 = Math.sin(0);\nvar cos0 = Math.cos(0);\nvar sin = {};\nvar cos = {};\nvar ellipseStepSize = Math.PI / 40;\nfor (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) {\n sin[i] = Math.sin(i);\n cos[i] = Math.cos(i);\n}\nCRp$3.drawEllipsePath = function (context, centerX, centerY, width, height) {\n if (context.beginPath) {\n context.beginPath();\n }\n if (context.ellipse) {\n context.ellipse(centerX, centerY, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n var xPos, yPos;\n var rw = width / 2;\n var rh = height / 2;\n for (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) {\n xPos = centerX - rw * sin[i] * sin0 + rw * cos[i] * cos0;\n yPos = centerY + rh * cos[i] * sin0 + rh * sin[i] * cos0;\n if (i === 0) {\n context.moveTo(xPos, yPos);\n } else {\n context.lineTo(xPos, yPos);\n }\n }\n }\n context.closePath();\n};\n\n/* global atob, ArrayBuffer, Uint8Array, Blob */\nvar CRp$2 = {};\nCRp$2.createBuffer = function (w, h) {\n var buffer = document.createElement('canvas'); // eslint-disable-line no-undef\n buffer.width = w;\n buffer.height = h;\n return [buffer, buffer.getContext('2d')];\n};\nCRp$2.bufferCanvasImage = function (options) {\n var cy = this.cy;\n var eles = cy.mutableElements();\n var bb = eles.boundingBox();\n var ctrRect = this.findContainerClientCoords();\n var width = options.full ? Math.ceil(bb.w) : ctrRect[2];\n var height = options.full ? Math.ceil(bb.h) : ctrRect[3];\n var specdMaxDims = number$1(options.maxWidth) || number$1(options.maxHeight);\n var pxRatio = this.getPixelRatio();\n var scale = 1;\n if (options.scale !== undefined) {\n width *= options.scale;\n height *= options.scale;\n scale = options.scale;\n } else if (specdMaxDims) {\n var maxScaleW = Infinity;\n var maxScaleH = Infinity;\n if (number$1(options.maxWidth)) {\n maxScaleW = scale * options.maxWidth / width;\n }\n if (number$1(options.maxHeight)) {\n maxScaleH = scale * options.maxHeight / height;\n }\n scale = Math.min(maxScaleW, maxScaleH);\n width *= scale;\n height *= scale;\n }\n if (!specdMaxDims) {\n width *= pxRatio;\n height *= pxRatio;\n scale *= pxRatio;\n }\n var buffCanvas = document.createElement('canvas'); // eslint-disable-line no-undef\n\n buffCanvas.width = width;\n buffCanvas.height = height;\n buffCanvas.style.width = width + 'px';\n buffCanvas.style.height = height + 'px';\n var buffCxt = buffCanvas.getContext('2d');\n\n // Rasterize the layers, but only if container has nonzero size\n if (width > 0 && height > 0) {\n buffCxt.clearRect(0, 0, width, height);\n buffCxt.globalCompositeOperation = 'source-over';\n var zsortedEles = this.getCachedZSortedEles();\n if (options.full) {\n // draw the full bounds of the graph\n buffCxt.translate(-bb.x1 * scale, -bb.y1 * scale);\n buffCxt.scale(scale, scale);\n this.drawElements(buffCxt, zsortedEles);\n buffCxt.scale(1 / scale, 1 / scale);\n buffCxt.translate(bb.x1 * scale, bb.y1 * scale);\n } else {\n // draw the current view\n var pan = cy.pan();\n var translation = {\n x: pan.x * scale,\n y: pan.y * scale\n };\n scale *= cy.zoom();\n buffCxt.translate(translation.x, translation.y);\n buffCxt.scale(scale, scale);\n this.drawElements(buffCxt, zsortedEles);\n buffCxt.scale(1 / scale, 1 / scale);\n buffCxt.translate(-translation.x, -translation.y);\n }\n\n // need to fill bg at end like this in order to fill cleared transparent pixels in jpgs\n if (options.bg) {\n buffCxt.globalCompositeOperation = 'destination-over';\n buffCxt.fillStyle = options.bg;\n buffCxt.rect(0, 0, width, height);\n buffCxt.fill();\n }\n }\n return buffCanvas;\n};\nfunction b64ToBlob(b64, mimeType) {\n var bytes = atob(b64);\n var buff = new ArrayBuffer(bytes.length);\n var buffUint8 = new Uint8Array(buff);\n for (var i = 0; i < bytes.length; i++) {\n buffUint8[i] = bytes.charCodeAt(i);\n }\n return new Blob([buff], {\n type: mimeType\n });\n}\nfunction b64UriToB64(b64uri) {\n var i = b64uri.indexOf(',');\n return b64uri.substr(i + 1);\n}\nfunction output(options, canvas, mimeType) {\n var getB64Uri = function getB64Uri() {\n return canvas.toDataURL(mimeType, options.quality);\n };\n switch (options.output) {\n case 'blob-promise':\n return new Promise$1(function (resolve, reject) {\n try {\n canvas.toBlob(function (blob) {\n if (blob != null) {\n resolve(blob);\n } else {\n reject(new Error('`canvas.toBlob()` sent a null value in its callback'));\n }\n }, mimeType, options.quality);\n } catch (err) {\n reject(err);\n }\n });\n case 'blob':\n return b64ToBlob(b64UriToB64(getB64Uri()), mimeType);\n case 'base64':\n return b64UriToB64(getB64Uri());\n case 'base64uri':\n default:\n return getB64Uri();\n }\n}\nCRp$2.png = function (options) {\n return output(options, this.bufferCanvasImage(options), 'image/png');\n};\nCRp$2.jpg = function (options) {\n return output(options, this.bufferCanvasImage(options), 'image/jpeg');\n};\n\nvar CRp$1 = {};\nCRp$1.nodeShapeImpl = function (name, context, centerX, centerY, width, height, points) {\n switch (name) {\n case 'ellipse':\n return this.drawEllipsePath(context, centerX, centerY, width, height);\n case 'polygon':\n return this.drawPolygonPath(context, centerX, centerY, width, height, points);\n case 'round-polygon':\n return this.drawRoundPolygonPath(context, centerX, centerY, width, height, points);\n case 'roundrectangle':\n case 'round-rectangle':\n return this.drawRoundRectanglePath(context, centerX, centerY, width, height);\n case 'cutrectangle':\n case 'cut-rectangle':\n return this.drawCutRectanglePath(context, centerX, centerY, width, height);\n case 'bottomroundrectangle':\n case 'bottom-round-rectangle':\n return this.drawBottomRoundRectanglePath(context, centerX, centerY, width, height);\n case 'barrel':\n return this.drawBarrelPath(context, centerX, centerY, width, height);\n }\n};\n\nvar CR = CanvasRenderer;\nvar CRp = CanvasRenderer.prototype;\nCRp.CANVAS_LAYERS = 3;\n//\nCRp.SELECT_BOX = 0;\nCRp.DRAG = 1;\nCRp.NODE = 2;\nCRp.BUFFER_COUNT = 3;\n//\nCRp.TEXTURE_BUFFER = 0;\nCRp.MOTIONBLUR_BUFFER_NODE = 1;\nCRp.MOTIONBLUR_BUFFER_DRAG = 2;\nfunction CanvasRenderer(options) {\n var r = this;\n r.data = {\n canvases: new Array(CRp.CANVAS_LAYERS),\n contexts: new Array(CRp.CANVAS_LAYERS),\n canvasNeedsRedraw: new Array(CRp.CANVAS_LAYERS),\n bufferCanvases: new Array(CRp.BUFFER_COUNT),\n bufferContexts: new Array(CRp.CANVAS_LAYERS)\n };\n var tapHlOffAttr = '-webkit-tap-highlight-color';\n var tapHlOffStyle = 'rgba(0,0,0,0)';\n r.data.canvasContainer = document.createElement('div'); // eslint-disable-line no-undef\n var containerStyle = r.data.canvasContainer.style;\n r.data.canvasContainer.style[tapHlOffAttr] = tapHlOffStyle;\n containerStyle.position = 'relative';\n containerStyle.zIndex = '0';\n containerStyle.overflow = 'hidden';\n var container = options.cy.container();\n container.appendChild(r.data.canvasContainer);\n container.style[tapHlOffAttr] = tapHlOffStyle;\n var styleMap = {\n '-webkit-user-select': 'none',\n '-moz-user-select': '-moz-none',\n 'user-select': 'none',\n '-webkit-tap-highlight-color': 'rgba(0,0,0,0)',\n 'outline-style': 'none'\n };\n if (ms()) {\n styleMap['-ms-touch-action'] = 'none';\n styleMap['touch-action'] = 'none';\n }\n for (var i = 0; i < CRp.CANVAS_LAYERS; i++) {\n var canvas = r.data.canvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef\n r.data.contexts[i] = canvas.getContext('2d');\n Object.keys(styleMap).forEach(function (k) {\n canvas.style[k] = styleMap[k];\n });\n canvas.style.position = 'absolute';\n canvas.setAttribute('data-id', 'layer' + i);\n canvas.style.zIndex = String(CRp.CANVAS_LAYERS - i);\n r.data.canvasContainer.appendChild(canvas);\n r.data.canvasNeedsRedraw[i] = false;\n }\n r.data.topCanvas = r.data.canvases[0];\n r.data.canvases[CRp.NODE].setAttribute('data-id', 'layer' + CRp.NODE + '-node');\n r.data.canvases[CRp.SELECT_BOX].setAttribute('data-id', 'layer' + CRp.SELECT_BOX + '-selectbox');\n r.data.canvases[CRp.DRAG].setAttribute('data-id', 'layer' + CRp.DRAG + '-drag');\n for (var i = 0; i < CRp.BUFFER_COUNT; i++) {\n r.data.bufferCanvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef\n r.data.bufferContexts[i] = r.data.bufferCanvases[i].getContext('2d');\n r.data.bufferCanvases[i].style.position = 'absolute';\n r.data.bufferCanvases[i].setAttribute('data-id', 'buffer' + i);\n r.data.bufferCanvases[i].style.zIndex = String(-i - 1);\n r.data.bufferCanvases[i].style.visibility = 'hidden';\n //r.data.canvasContainer.appendChild(r.data.bufferCanvases[i]);\n }\n\n r.pathsEnabled = true;\n var emptyBb = makeBoundingBox();\n var getBoxCenter = function getBoxCenter(bb) {\n return {\n x: (bb.x1 + bb.x2) / 2,\n y: (bb.y1 + bb.y2) / 2\n };\n };\n var getCenterOffset = function getCenterOffset(bb) {\n return {\n x: -bb.w / 2,\n y: -bb.h / 2\n };\n };\n var backgroundTimestampHasChanged = function backgroundTimestampHasChanged(ele) {\n var _p = ele[0]._private;\n var same = _p.oldBackgroundTimestamp === _p.backgroundTimestamp;\n return !same;\n };\n var getStyleKey = function getStyleKey(ele) {\n return ele[0]._private.nodeKey;\n };\n var getLabelKey = function getLabelKey(ele) {\n return ele[0]._private.labelStyleKey;\n };\n var getSourceLabelKey = function getSourceLabelKey(ele) {\n return ele[0]._private.sourceLabelStyleKey;\n };\n var getTargetLabelKey = function getTargetLabelKey(ele) {\n return ele[0]._private.targetLabelStyleKey;\n };\n var drawElement = function drawElement(context, ele, bb, scaledLabelShown, useEleOpacity) {\n return r.drawElement(context, ele, bb, false, false, useEleOpacity);\n };\n var drawLabel = function drawLabel(context, ele, bb, scaledLabelShown, useEleOpacity) {\n return r.drawElementText(context, ele, bb, scaledLabelShown, 'main', useEleOpacity);\n };\n var drawSourceLabel = function drawSourceLabel(context, ele, bb, scaledLabelShown, useEleOpacity) {\n return r.drawElementText(context, ele, bb, scaledLabelShown, 'source', useEleOpacity);\n };\n var drawTargetLabel = function drawTargetLabel(context, ele, bb, scaledLabelShown, useEleOpacity) {\n return r.drawElementText(context, ele, bb, scaledLabelShown, 'target', useEleOpacity);\n };\n var getElementBox = function getElementBox(ele) {\n ele.boundingBox();\n return ele[0]._private.bodyBounds;\n };\n var getLabelBox = function getLabelBox(ele) {\n ele.boundingBox();\n return ele[0]._private.labelBounds.main || emptyBb;\n };\n var getSourceLabelBox = function getSourceLabelBox(ele) {\n ele.boundingBox();\n return ele[0]._private.labelBounds.source || emptyBb;\n };\n var getTargetLabelBox = function getTargetLabelBox(ele) {\n ele.boundingBox();\n return ele[0]._private.labelBounds.target || emptyBb;\n };\n var isLabelVisibleAtScale = function isLabelVisibleAtScale(ele, scaledLabelShown) {\n return scaledLabelShown;\n };\n var getElementRotationPoint = function getElementRotationPoint(ele) {\n return getBoxCenter(getElementBox(ele));\n };\n var addTextMargin = function addTextMargin(prefix, pt, ele) {\n var pre = prefix ? prefix + '-' : '';\n return {\n x: pt.x + ele.pstyle(pre + 'text-margin-x').pfValue,\n y: pt.y + ele.pstyle(pre + 'text-margin-y').pfValue\n };\n };\n var getRsPt = function getRsPt(ele, x, y) {\n var rs = ele[0]._private.rscratch;\n return {\n x: rs[x],\n y: rs[y]\n };\n };\n var getLabelRotationPoint = function getLabelRotationPoint(ele) {\n return addTextMargin('', getRsPt(ele, 'labelX', 'labelY'), ele);\n };\n var getSourceLabelRotationPoint = function getSourceLabelRotationPoint(ele) {\n return addTextMargin('source', getRsPt(ele, 'sourceLabelX', 'sourceLabelY'), ele);\n };\n var getTargetLabelRotationPoint = function getTargetLabelRotationPoint(ele) {\n return addTextMargin('target', getRsPt(ele, 'targetLabelX', 'targetLabelY'), ele);\n };\n var getElementRotationOffset = function getElementRotationOffset(ele) {\n return getCenterOffset(getElementBox(ele));\n };\n var getSourceLabelRotationOffset = function getSourceLabelRotationOffset(ele) {\n return getCenterOffset(getSourceLabelBox(ele));\n };\n var getTargetLabelRotationOffset = function getTargetLabelRotationOffset(ele) {\n return getCenterOffset(getTargetLabelBox(ele));\n };\n var getLabelRotationOffset = function getLabelRotationOffset(ele) {\n var bb = getLabelBox(ele);\n var p = getCenterOffset(getLabelBox(ele));\n if (ele.isNode()) {\n switch (ele.pstyle('text-halign').value) {\n case 'left':\n p.x = -bb.w;\n break;\n case 'right':\n p.x = 0;\n break;\n }\n switch (ele.pstyle('text-valign').value) {\n case 'top':\n p.y = -bb.h;\n break;\n case 'bottom':\n p.y = 0;\n break;\n }\n }\n return p;\n };\n var eleTxrCache = r.data.eleTxrCache = new ElementTextureCache(r, {\n getKey: getStyleKey,\n doesEleInvalidateKey: backgroundTimestampHasChanged,\n drawElement: drawElement,\n getBoundingBox: getElementBox,\n getRotationPoint: getElementRotationPoint,\n getRotationOffset: getElementRotationOffset,\n allowEdgeTxrCaching: false,\n allowParentTxrCaching: false\n });\n var lblTxrCache = r.data.lblTxrCache = new ElementTextureCache(r, {\n getKey: getLabelKey,\n drawElement: drawLabel,\n getBoundingBox: getLabelBox,\n getRotationPoint: getLabelRotationPoint,\n getRotationOffset: getLabelRotationOffset,\n isVisible: isLabelVisibleAtScale\n });\n var slbTxrCache = r.data.slbTxrCache = new ElementTextureCache(r, {\n getKey: getSourceLabelKey,\n drawElement: drawSourceLabel,\n getBoundingBox: getSourceLabelBox,\n getRotationPoint: getSourceLabelRotationPoint,\n getRotationOffset: getSourceLabelRotationOffset,\n isVisible: isLabelVisibleAtScale\n });\n var tlbTxrCache = r.data.tlbTxrCache = new ElementTextureCache(r, {\n getKey: getTargetLabelKey,\n drawElement: drawTargetLabel,\n getBoundingBox: getTargetLabelBox,\n getRotationPoint: getTargetLabelRotationPoint,\n getRotationOffset: getTargetLabelRotationOffset,\n isVisible: isLabelVisibleAtScale\n });\n var lyrTxrCache = r.data.lyrTxrCache = new LayeredTextureCache(r);\n r.onUpdateEleCalcs(function invalidateTextureCaches(willDraw, eles) {\n // each cache should check for sub-key diff to see that the update affects that cache particularly\n eleTxrCache.invalidateElements(eles);\n lblTxrCache.invalidateElements(eles);\n slbTxrCache.invalidateElements(eles);\n tlbTxrCache.invalidateElements(eles);\n\n // any change invalidates the layers\n lyrTxrCache.invalidateElements(eles);\n\n // update the old bg timestamp so diffs can be done in the ele txr caches\n for (var _i = 0; _i < eles.length; _i++) {\n var _p = eles[_i]._private;\n _p.oldBackgroundTimestamp = _p.backgroundTimestamp;\n }\n });\n var refineInLayers = function refineInLayers(reqs) {\n for (var i = 0; i < reqs.length; i++) {\n lyrTxrCache.enqueueElementRefinement(reqs[i].ele);\n }\n };\n eleTxrCache.onDequeue(refineInLayers);\n lblTxrCache.onDequeue(refineInLayers);\n slbTxrCache.onDequeue(refineInLayers);\n tlbTxrCache.onDequeue(refineInLayers);\n}\nCRp.redrawHint = function (group, bool) {\n var r = this;\n switch (group) {\n case 'eles':\n r.data.canvasNeedsRedraw[CRp.NODE] = bool;\n break;\n case 'drag':\n r.data.canvasNeedsRedraw[CRp.DRAG] = bool;\n break;\n case 'select':\n r.data.canvasNeedsRedraw[CRp.SELECT_BOX] = bool;\n break;\n }\n};\n\n// whether to use Path2D caching for drawing\nvar pathsImpld = typeof Path2D !== 'undefined';\nCRp.path2dEnabled = function (on) {\n if (on === undefined) {\n return this.pathsEnabled;\n }\n this.pathsEnabled = on ? true : false;\n};\nCRp.usePaths = function () {\n return pathsImpld && this.pathsEnabled;\n};\nCRp.setImgSmoothing = function (context, bool) {\n if (context.imageSmoothingEnabled != null) {\n context.imageSmoothingEnabled = bool;\n } else {\n context.webkitImageSmoothingEnabled = bool;\n context.mozImageSmoothingEnabled = bool;\n context.msImageSmoothingEnabled = bool;\n }\n};\nCRp.getImgSmoothing = function (context) {\n if (context.imageSmoothingEnabled != null) {\n return context.imageSmoothingEnabled;\n } else {\n return context.webkitImageSmoothingEnabled || context.mozImageSmoothingEnabled || context.msImageSmoothingEnabled;\n }\n};\nCRp.makeOffscreenCanvas = function (width, height) {\n var canvas;\n if ((typeof OffscreenCanvas === \"undefined\" ? \"undefined\" : _typeof(OffscreenCanvas)) !== (\"undefined\" )) {\n canvas = new OffscreenCanvas(width, height);\n } else {\n canvas = document.createElement('canvas'); // eslint-disable-line no-undef\n canvas.width = width;\n canvas.height = height;\n }\n return canvas;\n};\n[CRp$a, CRp$9, CRp$8, CRp$7, CRp$6, CRp$5, CRp$4, CRp$3, CRp$2, CRp$1].forEach(function (props) {\n extend(CRp, props);\n});\n\nvar renderer = [{\n name: 'null',\n impl: NullRenderer\n}, {\n name: 'base',\n impl: BR\n}, {\n name: 'canvas',\n impl: CR\n}];\n\nvar incExts = [{\n type: 'layout',\n extensions: layout\n}, {\n type: 'renderer',\n extensions: renderer\n}];\n\n// registered extensions to cytoscape, indexed by name\nvar extensions = {};\n\n// registered modules for extensions, indexed by name\nvar modules = {};\nfunction setExtension(type, name, registrant) {\n var ext = registrant;\n var overrideErr = function overrideErr(field) {\n warn('Can not register `' + name + '` for `' + type + '` since `' + field + '` already exists in the prototype and can not be overridden');\n };\n if (type === 'core') {\n if (Core.prototype[name]) {\n return overrideErr(name);\n } else {\n Core.prototype[name] = registrant;\n }\n } else if (type === 'collection') {\n if (Collection.prototype[name]) {\n return overrideErr(name);\n } else {\n Collection.prototype[name] = registrant;\n }\n } else if (type === 'layout') {\n // fill in missing layout functions in the prototype\n\n var Layout = function Layout(options) {\n this.options = options;\n registrant.call(this, options);\n\n // make sure layout has _private for use w/ std apis like .on()\n if (!plainObject(this._private)) {\n this._private = {};\n }\n this._private.cy = options.cy;\n this._private.listeners = [];\n this.createEmitter();\n };\n var layoutProto = Layout.prototype = Object.create(registrant.prototype);\n var optLayoutFns = [];\n for (var i = 0; i < optLayoutFns.length; i++) {\n var fnName = optLayoutFns[i];\n layoutProto[fnName] = layoutProto[fnName] || function () {\n return this;\n };\n }\n\n // either .start() or .run() is defined, so autogen the other\n if (layoutProto.start && !layoutProto.run) {\n layoutProto.run = function () {\n this.start();\n return this;\n };\n } else if (!layoutProto.start && layoutProto.run) {\n layoutProto.start = function () {\n this.run();\n return this;\n };\n }\n var regStop = registrant.prototype.stop;\n layoutProto.stop = function () {\n var opts = this.options;\n if (opts && opts.animate) {\n var anis = this.animations;\n if (anis) {\n for (var _i = 0; _i < anis.length; _i++) {\n anis[_i].stop();\n }\n }\n }\n if (regStop) {\n regStop.call(this);\n } else {\n this.emit('layoutstop');\n }\n return this;\n };\n if (!layoutProto.destroy) {\n layoutProto.destroy = function () {\n return this;\n };\n }\n layoutProto.cy = function () {\n return this._private.cy;\n };\n var getCy = function getCy(layout) {\n return layout._private.cy;\n };\n var emitterOpts = {\n addEventFields: function addEventFields(layout, evt) {\n evt.layout = layout;\n evt.cy = getCy(layout);\n evt.target = layout;\n },\n bubble: function bubble() {\n return true;\n },\n parent: function parent(layout) {\n return getCy(layout);\n }\n };\n extend(layoutProto, {\n createEmitter: function createEmitter() {\n this._private.emitter = new Emitter(emitterOpts, this);\n return this;\n },\n emitter: function emitter() {\n return this._private.emitter;\n },\n on: function on(evt, cb) {\n this.emitter().on(evt, cb);\n return this;\n },\n one: function one(evt, cb) {\n this.emitter().one(evt, cb);\n return this;\n },\n once: function once(evt, cb) {\n this.emitter().one(evt, cb);\n return this;\n },\n removeListener: function removeListener(evt, cb) {\n this.emitter().removeListener(evt, cb);\n return this;\n },\n removeAllListeners: function removeAllListeners() {\n this.emitter().removeAllListeners();\n return this;\n },\n emit: function emit(evt, params) {\n this.emitter().emit(evt, params);\n return this;\n }\n });\n define.eventAliasesOn(layoutProto);\n ext = Layout; // replace with our wrapped layout\n } else if (type === 'renderer' && name !== 'null' && name !== 'base') {\n // user registered renderers inherit from base\n\n var BaseRenderer = getExtension('renderer', 'base');\n var bProto = BaseRenderer.prototype;\n var RegistrantRenderer = registrant;\n var rProto = registrant.prototype;\n var Renderer = function Renderer() {\n BaseRenderer.apply(this, arguments);\n RegistrantRenderer.apply(this, arguments);\n };\n var proto = Renderer.prototype;\n for (var pName in bProto) {\n var pVal = bProto[pName];\n var existsInR = rProto[pName] != null;\n if (existsInR) {\n return overrideErr(pName);\n }\n proto[pName] = pVal; // take impl from base\n }\n\n for (var _pName in rProto) {\n proto[_pName] = rProto[_pName]; // take impl from registrant\n }\n\n bProto.clientFunctions.forEach(function (name) {\n proto[name] = proto[name] || function () {\n error('Renderer does not implement `renderer.' + name + '()` on its prototype');\n };\n });\n ext = Renderer;\n } else if (type === '__proto__' || type === 'constructor' || type === 'prototype') {\n // to avoid potential prototype pollution\n return error(type + ' is an illegal type to be registered, possibly lead to prototype pollutions');\n }\n return setMap({\n map: extensions,\n keys: [type, name],\n value: ext\n });\n}\nfunction getExtension(type, name) {\n return getMap({\n map: extensions,\n keys: [type, name]\n });\n}\nfunction setModule(type, name, moduleType, moduleName, registrant) {\n return setMap({\n map: modules,\n keys: [type, name, moduleType, moduleName],\n value: registrant\n });\n}\nfunction getModule(type, name, moduleType, moduleName) {\n return getMap({\n map: modules,\n keys: [type, name, moduleType, moduleName]\n });\n}\nvar extension = function extension() {\n // e.g. extension('renderer', 'svg')\n if (arguments.length === 2) {\n return getExtension.apply(null, arguments);\n }\n\n // e.g. extension('renderer', 'svg', { ... })\n else if (arguments.length === 3) {\n return setExtension.apply(null, arguments);\n }\n\n // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse')\n else if (arguments.length === 4) {\n return getModule.apply(null, arguments);\n }\n\n // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse', { ... })\n else if (arguments.length === 5) {\n return setModule.apply(null, arguments);\n } else {\n error('Invalid extension access syntax');\n }\n};\n\n// allows a core instance to access extensions internally\nCore.prototype.extension = extension;\n\n// included extensions\nincExts.forEach(function (group) {\n group.extensions.forEach(function (ext) {\n setExtension(group.type, ext.name, ext.impl);\n });\n});\n\n// a dummy stylesheet object that doesn't need a reference to the core\n// (useful for init)\nvar Stylesheet = function Stylesheet() {\n if (!(this instanceof Stylesheet)) {\n return new Stylesheet();\n }\n this.length = 0;\n};\nvar sheetfn = Stylesheet.prototype;\nsheetfn.instanceString = function () {\n return 'stylesheet';\n};\n\n// just store the selector to be parsed later\nsheetfn.selector = function (selector) {\n var i = this.length++;\n this[i] = {\n selector: selector,\n properties: []\n };\n return this; // chaining\n};\n\n// just store the property to be parsed later\nsheetfn.css = function (name, value) {\n var i = this.length - 1;\n if (string(name)) {\n this[i].properties.push({\n name: name,\n value: value\n });\n } else if (plainObject(name)) {\n var map = name;\n var propNames = Object.keys(map);\n for (var j = 0; j < propNames.length; j++) {\n var key = propNames[j];\n var mapVal = map[key];\n if (mapVal == null) {\n continue;\n }\n var prop = Style.properties[key] || Style.properties[dash2camel(key)];\n if (prop == null) {\n continue;\n }\n var _name = prop.name;\n var _value = mapVal;\n this[i].properties.push({\n name: _name,\n value: _value\n });\n }\n }\n return this; // chaining\n};\n\nsheetfn.style = sheetfn.css;\n\n// generate a real style object from the dummy stylesheet\nsheetfn.generateStyle = function (cy) {\n var style = new Style(cy);\n return this.appendToStyle(style);\n};\n\n// append a dummy stylesheet object on a real style object\nsheetfn.appendToStyle = function (style) {\n for (var i = 0; i < this.length; i++) {\n var context = this[i];\n var selector = context.selector;\n var props = context.properties;\n style.selector(selector); // apply selector\n\n for (var j = 0; j < props.length; j++) {\n var prop = props[j];\n style.css(prop.name, prop.value); // apply property\n }\n }\n\n return style;\n};\n\nvar version = \"3.27.0\";\n\nvar cytoscape = function cytoscape(options) {\n // if no options specified, use default\n if (options === undefined) {\n options = {};\n }\n\n // create instance\n if (plainObject(options)) {\n return new Core(options);\n }\n\n // allow for registration of extensions\n else if (string(options)) {\n return extension.apply(extension, arguments);\n }\n};\n\n// e.g. cytoscape.use( require('cytoscape-foo'), bar )\ncytoscape.use = function (ext) {\n var args = Array.prototype.slice.call(arguments, 1); // args to pass to ext\n\n args.unshift(cytoscape); // cytoscape is first arg to ext\n\n ext.apply(null, args);\n return this;\n};\ncytoscape.warnings = function (bool) {\n return warnings(bool);\n};\n\n// replaced by build system\ncytoscape.version = version;\n\n// expose public apis (mostly for extensions)\ncytoscape.stylesheet = cytoscape.Stylesheet = Stylesheet;\n\nmodule.exports = cytoscape;\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n return Array.isArray(val) ? [] : {}\n}\n\nfunction cloneIfNecessary(value, optionsArgument) {\n var clone = optionsArgument && optionsArgument.clone === true;\n return (clone && isMergeableObject(value)) ? deepmerge(emptyTarget(value), value, optionsArgument) : value\n}\n\nfunction defaultArrayMerge(target, source, optionsArgument) {\n var destination = target.slice();\n source.forEach(function(e, i) {\n if (typeof destination[i] === 'undefined') {\n destination[i] = cloneIfNecessary(e, optionsArgument);\n } else if (isMergeableObject(e)) {\n destination[i] = deepmerge(target[i], e, optionsArgument);\n } else if (target.indexOf(e) === -1) {\n destination.push(cloneIfNecessary(e, optionsArgument));\n }\n });\n return destination\n}\n\nfunction mergeObject(target, source, optionsArgument) {\n var destination = {};\n if (isMergeableObject(target)) {\n Object.keys(target).forEach(function(key) {\n destination[key] = cloneIfNecessary(target[key], optionsArgument);\n });\n }\n Object.keys(source).forEach(function(key) {\n if (!isMergeableObject(source[key]) || !target[key]) {\n destination[key] = cloneIfNecessary(source[key], optionsArgument);\n } else {\n destination[key] = deepmerge(target[key], source[key], optionsArgument);\n }\n });\n return destination\n}\n\nfunction deepmerge(target, source, optionsArgument) {\n var sourceIsArray = Array.isArray(source);\n var targetIsArray = Array.isArray(target);\n var options = optionsArgument || { arrayMerge: defaultArrayMerge };\n var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n if (!sourceAndTargetTypesMatch) {\n return cloneIfNecessary(source, optionsArgument)\n } else if (sourceIsArray) {\n var arrayMerge = options.arrayMerge || defaultArrayMerge;\n return arrayMerge(target, source, optionsArgument)\n } else {\n return mergeObject(target, source, optionsArgument)\n }\n}\n\ndeepmerge.all = function deepmergeAll(array, optionsArgument) {\n if (!Array.isArray(array) || array.length < 2) {\n throw new Error('first argument should be an array with at least two elements')\n }\n\n // we are sure there are at least 2 values, so it is safe to have no initial value\n return array.reduce(function(prev, next) {\n return deepmerge(prev, next, optionsArgument)\n })\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\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\nvar _echarts = require(\"./lib/echarts\");\n\n(function () {\n for (var key in _echarts) {\n if (_echarts == null || !_echarts.hasOwnProperty(key) || key === 'default' || key === '__esModule') return;\n exports[key] = _echarts[key];\n }\n})();\n\nvar _export = require(\"./lib/export\");\n\n(function () {\n for (var key in _export) {\n if (_export == null || !_export.hasOwnProperty(key) || key === 'default' || key === '__esModule') return;\n exports[key] = _export[key];\n }\n})();\n\nrequire(\"./lib/component/dataset\");\n\nrequire(\"./lib/chart/line\");\n\nrequire(\"./lib/chart/bar\");\n\nrequire(\"./lib/chart/pie\");\n\nrequire(\"./lib/chart/scatter\");\n\nrequire(\"./lib/chart/radar\");\n\nrequire(\"./lib/chart/map\");\n\nrequire(\"./lib/chart/tree\");\n\nrequire(\"./lib/chart/treemap\");\n\nrequire(\"./lib/chart/graph\");\n\nrequire(\"./lib/chart/gauge\");\n\nrequire(\"./lib/chart/funnel\");\n\nrequire(\"./lib/chart/parallel\");\n\nrequire(\"./lib/chart/sankey\");\n\nrequire(\"./lib/chart/boxplot\");\n\nrequire(\"./lib/chart/candlestick\");\n\nrequire(\"./lib/chart/effectScatter\");\n\nrequire(\"./lib/chart/lines\");\n\nrequire(\"./lib/chart/heatmap\");\n\nrequire(\"./lib/chart/pictorialBar\");\n\nrequire(\"./lib/chart/themeRiver\");\n\nrequire(\"./lib/chart/sunburst\");\n\nrequire(\"./lib/chart/custom\");\n\nrequire(\"./lib/component/grid\");\n\nrequire(\"./lib/component/polar\");\n\nrequire(\"./lib/component/geo\");\n\nrequire(\"./lib/component/singleAxis\");\n\nrequire(\"./lib/component/parallel\");\n\nrequire(\"./lib/component/calendar\");\n\nrequire(\"./lib/component/graphic\");\n\nrequire(\"./lib/component/toolbox\");\n\nrequire(\"./lib/component/tooltip\");\n\nrequire(\"./lib/component/axisPointer\");\n\nrequire(\"./lib/component/brush\");\n\nrequire(\"./lib/component/title\");\n\nrequire(\"./lib/component/timeline\");\n\nrequire(\"./lib/component/markPoint\");\n\nrequire(\"./lib/component/markLine\");\n\nrequire(\"./lib/component/markArea\");\n\nrequire(\"./lib/component/legendScroll\");\n\nrequire(\"./lib/component/legend\");\n\nrequire(\"./lib/component/dataZoom\");\n\nrequire(\"./lib/component/dataZoomInside\");\n\nrequire(\"./lib/component/dataZoomSlider\");\n\nrequire(\"./lib/component/visualMap\");\n\nrequire(\"./lib/component/visualMapContinuous\");\n\nrequire(\"./lib/component/visualMapPiecewise\");\n\nrequire(\"zrender/lib/vml/vml\");\n\nrequire(\"zrender/lib/svg/svg\");","\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*/\nvar coordinateSystemCreators = {};\n\nfunction CoordinateSystemManager() {\n this._coordinateSystems = [];\n}\n\nCoordinateSystemManager.prototype = {\n constructor: CoordinateSystemManager,\n create: function (ecModel, api) {\n var coordinateSystems = [];\n zrUtil.each(coordinateSystemCreators, function (creater, type) {\n var list = creater.create(ecModel, api);\n coordinateSystems = coordinateSystems.concat(list || []);\n });\n this._coordinateSystems = coordinateSystems;\n },\n update: function (ecModel, api) {\n zrUtil.each(this._coordinateSystems, function (coordSys) {\n coordSys.update && coordSys.update(ecModel, api);\n });\n },\n getCoordinateSystems: function () {\n return this._coordinateSystems.slice();\n }\n};\n\nCoordinateSystemManager.register = function (type, coordinateSystemCreator) {\n coordinateSystemCreators[type] = coordinateSystemCreator;\n};\n\nCoordinateSystemManager.get = function (type) {\n return coordinateSystemCreators[type];\n};\n\nvar _default = CoordinateSystemManager;\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\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 echartsAPIList = ['getDom', 'getZr', 'getWidth', 'getHeight', 'getDevicePixelRatio', 'dispatchAction', 'isDisposed', 'on', 'off', 'getDataURL', 'getConnectedDataURL', 'getModel', 'getOption', 'getViewOfComponentModel', 'getViewOfSeriesModel']; // And `getCoordinateSystems` and `getComponentByElement` will be injected in echarts.js\n\nfunction ExtensionAPI(chartInstance) {\n zrUtil.each(echartsAPIList, function (name) {\n this[name] = zrUtil.bind(chartInstance[name], chartInstance);\n }, this);\n}\n\nvar _default = ExtensionAPI;\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\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 _default(seriesType, actionInfos) {\n zrUtil.each(actionInfos, function (actionInfo) {\n actionInfo.update = 'updateView';\n /**\n * @payload\n * @property {string} seriesName\n * @property {string} name\n */\n\n echarts.registerAction(actionInfo, function (payload, ecModel) {\n var selected = {};\n ecModel.eachComponent({\n mainType: 'series',\n subType: seriesType,\n query: payload\n }, function (seriesModel) {\n if (seriesModel[actionInfo.method]) {\n seriesModel[actionInfo.method](payload.name, payload.dataIndex);\n }\n\n var data = seriesModel.getData(); // Create selected map\n\n data.each(function (idx) {\n var name = data.getName(idx);\n selected[name] = seriesModel.isSelected(name) || false;\n });\n });\n return {\n name: payload.name,\n selected: selected,\n seriesId: payload.seriesId\n };\n });\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _roamHelper = require(\"./roamHelper\");\n\nvar updateCenterAndZoom = _roamHelper.updateCenterAndZoom;\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 {string} [componentType=series]\n * @property {number} [dx]\n * @property {number} [dy]\n * @property {number} [zoom]\n * @property {number} [originX]\n * @property {number} [originY]\n */\necharts.registerAction({\n type: 'geoRoam',\n event: 'geoRoam',\n update: 'updateTransform'\n}, function (payload, ecModel) {\n var componentType = payload.componentType || 'series';\n ecModel.eachComponent({\n mainType: componentType,\n query: payload\n }, function (componentModel) {\n var geo = componentModel.coordinateSystem;\n\n if (geo.type !== 'geo') {\n return;\n }\n\n var res = updateCenterAndZoom(geo, payload, componentModel.get('scaleLimit'));\n componentModel.setCenter && componentModel.setCenter(res.center);\n componentModel.setZoom && componentModel.setZoom(res.zoom); // All map series with same `map` use the same geo coordinate system\n // So the center and zoom must be in sync. Include the series not selected by legend\n\n if (componentType === 'series') {\n zrUtil.each(componentModel.seriesGroup, function (seriesModel) {\n seriesModel.setCenter(res.center);\n seriesModel.setZoom(res.zoom);\n });\n }\n });\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* 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/coord/View} view\n * @param {Object} payload\n * @param {Object} [zoomLimit]\n */\nfunction updateCenterAndZoom(view, payload, zoomLimit) {\n var previousZoom = view.getZoom();\n var center = view.getCenter();\n var zoom = payload.zoom;\n var point = view.dataToPoint(center);\n\n if (payload.dx != null && payload.dy != null) {\n point[0] -= payload.dx;\n point[1] -= payload.dy;\n var center = view.pointToData(point);\n view.setCenter(center);\n }\n\n if (zoom != null) {\n if (zoomLimit) {\n var zoomMin = zoomLimit.min || 0;\n var zoomMax = zoomLimit.max || Infinity;\n zoom = Math.max(Math.min(previousZoom * zoom, zoomMax), zoomMin) / previousZoom;\n } // Zoom on given point(originX, originY)\n\n\n view.scale[0] *= zoom;\n view.scale[1] *= zoom;\n var position = view.position;\n var fixX = (payload.originX - position[0]) * (zoom - 1);\n var fixY = (payload.originY - position[1]) * (zoom - 1);\n position[0] -= fixX;\n position[1] -= fixY;\n view.updateTransform(); // Get the new center\n\n var center = view.pointToData(point);\n view.setCenter(center);\n view.setZoom(zoom * previousZoom);\n }\n\n return {\n center: view.getCenter(),\n zoom: view.getZoom()\n };\n}\n\nexports.updateCenterAndZoom = updateCenterAndZoom;","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar layout = _barGrid.layout;\nvar largeLayout = _barGrid.largeLayout;\n\nrequire(\"../coord/cartesian/Grid\");\n\nrequire(\"./bar/BarSeries\");\n\nrequire(\"./bar/BarView\");\n\nrequire(\"../component/gridSimple\");\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// In case developer forget to include grid component\necharts.registerLayout(echarts.PRIORITY.VISUAL.LAYOUT, zrUtil.curry(layout, 'bar')); // Use higher prority to avoid to be blocked by other overall layout, which do not\n// only exist in this module, but probably also exist in other modules, like `barPolar`.\n\necharts.registerLayout(echarts.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, largeLayout);\necharts.registerVisual({\n seriesType: 'bar',\n reset: function (seriesModel) {\n // Visual coding for legend\n seriesModel.getData().setVisual('legendSymbol', 'roundRect');\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BaseBarSeries = require(\"./BaseBarSeries\");\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 _default = BaseBarSeries.extend({\n type: 'series.bar',\n dependencies: ['grid', 'polar'],\n brushSelector: 'rect',\n\n /**\n * @override\n */\n getProgressive: function () {\n // Do not support progressive in normal mode.\n return this.get('large') ? this.get('progressive') : false;\n },\n\n /**\n * @override\n */\n getProgressiveThreshold: function () {\n // Do not support progressive in normal mode.\n var progressiveThreshold = this.get('progressiveThreshold');\n var largeThreshold = this.get('largeThreshold');\n\n if (largeThreshold > progressiveThreshold) {\n progressiveThreshold = largeThreshold;\n }\n\n return progressiveThreshold;\n },\n defaultOption: {\n // If clipped\n // Only available on cartesian2d\n clip: true,\n // If use caps on two sides of bars\n // Only available on tangential polar bar\n roundCap: false,\n showBackground: false,\n backgroundStyle: {\n color: 'rgba(180, 180, 180, 0.2)',\n borderColor: null,\n borderWidth: 0,\n borderType: 'solid',\n borderRadius: 0,\n shadowBlur: 0,\n shadowColor: null,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n opacity: 1\n }\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _helper = require(\"./helper\");\n\nvar setLabel = _helper.setLabel;\n\nvar Model = require(\"../../model/Model\");\n\nvar barItemStyle = require(\"./barItemStyle\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nvar _throttle = require(\"../../util/throttle\");\n\nvar throttle = _throttle.throttle;\n\nvar _createClipPathFromCoordSys = require(\"../helper/createClipPathFromCoordSys\");\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\nvar Sausage = require(\"../../util/shape/sausage\");\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 BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'barBorderWidth'];\nvar _eventPos = [0, 0]; // FIXME\n// Just for compatible with ec2.\n\nzrUtil.extend(Model.prototype, barItemStyle);\n\nfunction getClipArea(coord, data) {\n var coordSysClipArea = coord.getArea && coord.getArea();\n\n if (coord.type === 'cartesian2d') {\n var baseAxis = coord.getBaseAxis(); // When boundaryGap is false or using time axis. bar may exceed the grid.\n // We should not clip this part.\n // See test/bar2.html\n\n if (baseAxis.type !== 'category' || !baseAxis.onBand) {\n var expandWidth = data.getLayout('bandWidth');\n\n if (baseAxis.isHorizontal()) {\n coordSysClipArea.x -= expandWidth;\n coordSysClipArea.width += expandWidth * 2;\n } else {\n coordSysClipArea.y -= expandWidth;\n coordSysClipArea.height += expandWidth * 2;\n }\n }\n }\n\n return coordSysClipArea;\n}\n\nvar _default = echarts.extendChartView({\n type: 'bar',\n render: function (seriesModel, ecModel, api) {\n this._updateDrawMode(seriesModel);\n\n var coordinateSystemType = seriesModel.get('coordinateSystem');\n\n if (coordinateSystemType === 'cartesian2d' || coordinateSystemType === 'polar') {\n this._isLargeDraw ? this._renderLarge(seriesModel, ecModel, api) : this._renderNormal(seriesModel, ecModel, api);\n } else {}\n\n return this.group;\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n this._clear();\n\n this._updateDrawMode(seriesModel);\n },\n incrementalRender: function (params, seriesModel, ecModel, api) {\n // Do not support progressive in normal mode.\n this._incrementalRenderLarge(params, seriesModel);\n },\n _updateDrawMode: function (seriesModel) {\n var isLargeDraw = seriesModel.pipelineContext.large;\n\n if (this._isLargeDraw == null || isLargeDraw ^ this._isLargeDraw) {\n this._isLargeDraw = isLargeDraw;\n\n this._clear();\n }\n },\n _renderNormal: function (seriesModel, ecModel, api) {\n var group = this.group;\n var data = seriesModel.getData();\n var oldData = this._data;\n var coord = seriesModel.coordinateSystem;\n var baseAxis = coord.getBaseAxis();\n var isHorizontalOrRadial;\n\n if (coord.type === 'cartesian2d') {\n isHorizontalOrRadial = baseAxis.isHorizontal();\n } else if (coord.type === 'polar') {\n isHorizontalOrRadial = baseAxis.dim === 'angle';\n }\n\n var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null;\n var needsClip = seriesModel.get('clip', true);\n var coordSysClipArea = getClipArea(coord, data); // If there is clipPath created in large mode. Remove it.\n\n group.removeClipPath(); // We don't use clipPath in normal mode because we needs a perfect animation\n // And don't want the label are clipped.\n\n var roundCap = seriesModel.get('roundCap', true);\n var drawBackground = seriesModel.get('showBackground', true);\n var backgroundModel = seriesModel.getModel('backgroundStyle');\n var barBorderRadius = backgroundModel.get('barBorderRadius') || 0;\n var bgEls = [];\n var oldBgEls = this._backgroundEls || [];\n\n var createBackground = function (dataIndex) {\n var bgLayout = getLayout[coord.type](data, dataIndex);\n var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout);\n bgEl.useStyle(backgroundModel.getBarItemStyle()); // Only cartesian2d support borderRadius.\n\n if (coord.type === 'cartesian2d') {\n bgEl.setShape('r', barBorderRadius);\n }\n\n bgEls[dataIndex] = bgEl;\n return bgEl;\n };\n\n data.diff(oldData).add(function (dataIndex) {\n var itemModel = data.getItemModel(dataIndex);\n var layout = getLayout[coord.type](data, dataIndex, itemModel);\n\n if (drawBackground) {\n createBackground(dataIndex);\n } // If dataZoom in filteMode: 'empty', the baseValue can be set as NaN in \"axisProxy\".\n\n\n if (!data.hasValue(dataIndex)) {\n return;\n }\n\n if (needsClip) {\n // Clip will modify the layout params.\n // And return a boolean to determine if the shape are fully clipped.\n var isClipped = clip[coord.type](coordSysClipArea, layout);\n\n if (isClipped) {\n group.remove(el);\n return;\n }\n }\n\n var el = elementCreator[coord.type](dataIndex, layout, isHorizontalOrRadial, animationModel, false, roundCap);\n data.setItemGraphicEl(dataIndex, el);\n group.add(el);\n updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\n }).update(function (newIndex, oldIndex) {\n var itemModel = data.getItemModel(newIndex);\n var layout = getLayout[coord.type](data, newIndex, itemModel);\n\n if (drawBackground) {\n var bgEl;\n\n if (oldBgEls.length === 0) {\n bgEl = createBackground(oldIndex);\n } else {\n bgEl = oldBgEls[oldIndex];\n bgEl.useStyle(backgroundModel.getBarItemStyle()); // Only cartesian2d support borderRadius.\n\n if (coord.type === 'cartesian2d') {\n bgEl.setShape('r', barBorderRadius);\n }\n\n bgEls[newIndex] = bgEl;\n }\n\n var bgLayout = getLayout[coord.type](data, newIndex);\n var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord);\n graphic.updateProps(bgEl, {\n shape: shape\n }, animationModel, newIndex);\n }\n\n var el = oldData.getItemGraphicEl(oldIndex);\n\n if (!data.hasValue(newIndex)) {\n group.remove(el);\n return;\n }\n\n if (needsClip) {\n var isClipped = clip[coord.type](coordSysClipArea, layout);\n\n if (isClipped) {\n group.remove(el);\n return;\n }\n }\n\n if (el) {\n graphic.updateProps(el, {\n shape: layout\n }, animationModel, newIndex);\n } else {\n el = elementCreator[coord.type](newIndex, layout, isHorizontalOrRadial, animationModel, true, roundCap);\n }\n\n data.setItemGraphicEl(newIndex, el); // Add back\n\n group.add(el);\n updateStyle(el, data, newIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\n }).remove(function (dataIndex) {\n var el = oldData.getItemGraphicEl(dataIndex);\n\n if (coord.type === 'cartesian2d') {\n el && removeRect(dataIndex, animationModel, el);\n } else {\n el && removeSector(dataIndex, animationModel, el);\n }\n }).execute();\n var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group());\n bgGroup.removeAll();\n\n for (var i = 0; i < bgEls.length; ++i) {\n bgGroup.add(bgEls[i]);\n }\n\n group.add(bgGroup);\n this._backgroundEls = bgEls;\n this._data = data;\n },\n _renderLarge: function (seriesModel, ecModel, api) {\n this._clear();\n\n createLarge(seriesModel, this.group); // Use clipPath in large mode.\n\n var clipPath = seriesModel.get('clip', true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;\n\n if (clipPath) {\n this.group.setClipPath(clipPath);\n } else {\n this.group.removeClipPath();\n }\n },\n _incrementalRenderLarge: function (params, seriesModel) {\n this._removeBackground();\n\n createLarge(seriesModel, this.group, true);\n },\n dispose: zrUtil.noop,\n remove: function (ecModel) {\n this._clear(ecModel);\n },\n _clear: function (ecModel) {\n var group = this.group;\n var data = this._data;\n\n if (ecModel && ecModel.get('animation') && data && !this._isLargeDraw) {\n this._removeBackground();\n\n this._backgroundEls = [];\n data.eachItemGraphicEl(function (el) {\n if (el.type === 'sector') {\n removeSector(el.dataIndex, ecModel, el);\n } else {\n removeRect(el.dataIndex, ecModel, el);\n }\n });\n } else {\n group.removeAll();\n }\n\n this._data = null;\n },\n _removeBackground: function () {\n this.group.remove(this._backgroundGroup);\n this._backgroundGroup = null;\n }\n});\n\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar clip = {\n cartesian2d: function (coordSysBoundingRect, layout) {\n var signWidth = layout.width < 0 ? -1 : 1;\n var signHeight = layout.height < 0 ? -1 : 1; // Needs positive width and height\n\n if (signWidth < 0) {\n layout.x += layout.width;\n layout.width = -layout.width;\n }\n\n if (signHeight < 0) {\n layout.y += layout.height;\n layout.height = -layout.height;\n }\n\n var x = mathMax(layout.x, coordSysBoundingRect.x);\n var x2 = mathMin(layout.x + layout.width, coordSysBoundingRect.x + coordSysBoundingRect.width);\n var y = mathMax(layout.y, coordSysBoundingRect.y);\n var y2 = mathMin(layout.y + layout.height, coordSysBoundingRect.y + coordSysBoundingRect.height);\n layout.x = x;\n layout.y = y;\n layout.width = x2 - x;\n layout.height = y2 - y;\n var clipped = layout.width < 0 || layout.height < 0; // Reverse back\n\n if (signWidth < 0) {\n layout.x += layout.width;\n layout.width = -layout.width;\n }\n\n if (signHeight < 0) {\n layout.y += layout.height;\n layout.height = -layout.height;\n }\n\n return clipped;\n },\n polar: function (coordSysClipArea, layout) {\n var signR = layout.r0 <= layout.r ? 1 : -1; // Make sure r is larger than r0\n\n if (signR < 0) {\n var r = layout.r;\n layout.r = layout.r0;\n layout.r0 = r;\n }\n\n var r = mathMin(layout.r, coordSysClipArea.r);\n var r0 = mathMax(layout.r0, coordSysClipArea.r0);\n layout.r = r;\n layout.r0 = r0;\n var clipped = r - r0 < 0; // Reverse back\n\n if (signR < 0) {\n var r = layout.r;\n layout.r = layout.r0;\n layout.r0 = r;\n }\n\n return clipped;\n }\n};\nvar elementCreator = {\n cartesian2d: function (dataIndex, layout, isHorizontal, animationModel, isUpdate) {\n var rect = new graphic.Rect({\n shape: zrUtil.extend({}, layout),\n z2: 1\n });\n rect.name = 'item'; // Animation\n\n if (animationModel) {\n var rectShape = rect.shape;\n var animateProperty = isHorizontal ? 'height' : 'width';\n var animateTarget = {};\n rectShape[animateProperty] = 0;\n animateTarget[animateProperty] = layout[animateProperty];\n graphic[isUpdate ? 'updateProps' : 'initProps'](rect, {\n shape: animateTarget\n }, animationModel, dataIndex);\n }\n\n return rect;\n },\n polar: function (dataIndex, layout, isRadial, animationModel, isUpdate, roundCap) {\n // Keep the same logic with bar in catesion: use end value to control\n // direction. Notice that if clockwise is true (by default), the sector\n // will always draw clockwisely, no matter whether endAngle is greater\n // or less than startAngle.\n var clockwise = layout.startAngle < layout.endAngle;\n var ShapeClass = !isRadial && roundCap ? Sausage : graphic.Sector;\n var sector = new ShapeClass({\n shape: zrUtil.defaults({\n clockwise: clockwise\n }, layout),\n z2: 1\n });\n sector.name = 'item'; // Animation\n\n if (animationModel) {\n var sectorShape = sector.shape;\n var animateProperty = isRadial ? 'r' : 'endAngle';\n var animateTarget = {};\n sectorShape[animateProperty] = isRadial ? 0 : layout.startAngle;\n animateTarget[animateProperty] = layout[animateProperty];\n graphic[isUpdate ? 'updateProps' : 'initProps'](sector, {\n shape: animateTarget\n }, animationModel, dataIndex);\n }\n\n return sector;\n }\n};\n\nfunction removeRect(dataIndex, animationModel, el) {\n // Not show text when animating\n el.style.text = null;\n graphic.updateProps(el, {\n shape: {\n width: 0\n }\n }, animationModel, dataIndex, function () {\n el.parent && el.parent.remove(el);\n });\n}\n\nfunction removeSector(dataIndex, animationModel, el) {\n // Not show text when animating\n el.style.text = null;\n graphic.updateProps(el, {\n shape: {\n r: el.shape.r0\n }\n }, animationModel, dataIndex, function () {\n el.parent && el.parent.remove(el);\n });\n}\n\nvar getLayout = {\n // itemModel is only used to get borderWidth, which is not needed\n // when calculating bar background layout.\n cartesian2d: function (data, dataIndex, itemModel) {\n var layout = data.getItemLayout(dataIndex);\n var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout) : 0; // fix layout with lineWidth\n\n var signX = layout.width > 0 ? 1 : -1;\n var signY = layout.height > 0 ? 1 : -1;\n return {\n x: layout.x + signX * fixedLineWidth / 2,\n y: layout.y + signY * fixedLineWidth / 2,\n width: layout.width - signX * fixedLineWidth,\n height: layout.height - signY * fixedLineWidth\n };\n },\n polar: function (data, dataIndex, itemModel) {\n var layout = data.getItemLayout(dataIndex);\n return {\n cx: layout.cx,\n cy: layout.cy,\n r0: layout.r0,\n r: layout.r,\n startAngle: layout.startAngle,\n endAngle: layout.endAngle\n };\n }\n};\n\nfunction isZeroOnPolar(layout) {\n return layout.startAngle != null && layout.endAngle != null && layout.startAngle === layout.endAngle;\n}\n\nfunction updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontal, isPolar) {\n var color = data.getItemVisual(dataIndex, 'color');\n var opacity = data.getItemVisual(dataIndex, 'opacity');\n var stroke = data.getVisual('borderColor');\n var itemStyleModel = itemModel.getModel('itemStyle');\n var hoverStyle = itemModel.getModel('emphasis.itemStyle').getBarItemStyle();\n\n if (!isPolar) {\n el.setShape('r', itemStyleModel.get('barBorderRadius') || 0);\n }\n\n el.useStyle(zrUtil.defaults({\n stroke: isZeroOnPolar(layout) ? 'none' : stroke,\n fill: isZeroOnPolar(layout) ? 'none' : color,\n opacity: opacity\n }, itemStyleModel.getBarItemStyle()));\n var cursorStyle = itemModel.getShallow('cursor');\n cursorStyle && el.attr('cursor', cursorStyle);\n var labelPositionOutside = isHorizontal ? layout.height > 0 ? 'bottom' : 'top' : layout.width > 0 ? 'left' : 'right';\n\n if (!isPolar) {\n setLabel(el.style, hoverStyle, itemModel, color, seriesModel, dataIndex, labelPositionOutside);\n }\n\n if (isZeroOnPolar(layout)) {\n hoverStyle.fill = hoverStyle.stroke = 'none';\n }\n\n graphic.setHoverStyle(el, hoverStyle);\n} // In case width or height are too small.\n\n\nfunction getLineWidth(itemModel, rawLayout) {\n var lineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0; // width or height may be NaN for empty data\n\n var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width);\n var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height);\n return Math.min(lineWidth, width, height);\n}\n\nvar LargePath = Path.extend({\n type: 'largeBar',\n shape: {\n points: []\n },\n buildPath: function (ctx, shape) {\n // Drawing lines is more efficient than drawing\n // a whole line or drawing rects.\n var points = shape.points;\n var startPoint = this.__startPoint;\n var baseDimIdx = this.__baseDimIdx;\n\n for (var i = 0; i < points.length; i += 2) {\n startPoint[baseDimIdx] = points[i + baseDimIdx];\n ctx.moveTo(startPoint[0], startPoint[1]);\n ctx.lineTo(points[i], points[i + 1]);\n }\n }\n});\n\nfunction createLarge(seriesModel, group, incremental) {\n // TODO support polar\n var data = seriesModel.getData();\n var startPoint = [];\n var baseDimIdx = data.getLayout('valueAxisHorizontal') ? 1 : 0;\n startPoint[1 - baseDimIdx] = data.getLayout('valueAxisStart');\n var largeDataIndices = data.getLayout('largeDataIndices');\n var barWidth = data.getLayout('barWidth');\n var backgroundModel = seriesModel.getModel('backgroundStyle');\n var drawBackground = seriesModel.get('showBackground', true);\n\n if (drawBackground) {\n var points = data.getLayout('largeBackgroundPoints');\n var backgroundStartPoint = [];\n backgroundStartPoint[1 - baseDimIdx] = data.getLayout('backgroundStart');\n var bgEl = new LargePath({\n shape: {\n points: points\n },\n incremental: !!incremental,\n __startPoint: backgroundStartPoint,\n __baseDimIdx: baseDimIdx,\n __largeDataIndices: largeDataIndices,\n __barWidth: barWidth,\n silent: true,\n z2: 0\n });\n setLargeBackgroundStyle(bgEl, backgroundModel, data);\n group.add(bgEl);\n }\n\n var el = new LargePath({\n shape: {\n points: data.getLayout('largePoints')\n },\n incremental: !!incremental,\n __startPoint: startPoint,\n __baseDimIdx: baseDimIdx,\n __largeDataIndices: largeDataIndices,\n __barWidth: barWidth\n });\n group.add(el);\n setLargeStyle(el, seriesModel, data); // Enable tooltip and user mouse/touch event handlers.\n\n el.seriesIndex = seriesModel.seriesIndex;\n\n if (!seriesModel.get('silent')) {\n el.on('mousedown', largePathUpdateDataIndex);\n el.on('mousemove', largePathUpdateDataIndex);\n }\n} // Use throttle to avoid frequently traverse to find dataIndex.\n\n\nvar largePathUpdateDataIndex = throttle(function (event) {\n var largePath = this;\n var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY);\n largePath.dataIndex = dataIndex >= 0 ? dataIndex : null;\n}, 30, false);\n\nfunction largePathFindDataIndex(largePath, x, y) {\n var baseDimIdx = largePath.__baseDimIdx;\n var valueDimIdx = 1 - baseDimIdx;\n var points = largePath.shape.points;\n var largeDataIndices = largePath.__largeDataIndices;\n var barWidthHalf = Math.abs(largePath.__barWidth / 2);\n var startValueVal = largePath.__startPoint[valueDimIdx];\n _eventPos[0] = x;\n _eventPos[1] = y;\n var pointerBaseVal = _eventPos[baseDimIdx];\n var pointerValueVal = _eventPos[1 - baseDimIdx];\n var baseLowerBound = pointerBaseVal - barWidthHalf;\n var baseUpperBound = pointerBaseVal + barWidthHalf;\n\n for (var i = 0, len = points.length / 2; i < len; i++) {\n var ii = i * 2;\n var barBaseVal = points[ii + baseDimIdx];\n var barValueVal = points[ii + valueDimIdx];\n\n if (barBaseVal >= baseLowerBound && barBaseVal <= baseUpperBound && (startValueVal <= barValueVal ? pointerValueVal >= startValueVal && pointerValueVal <= barValueVal : pointerValueVal >= barValueVal && pointerValueVal <= startValueVal)) {\n return largeDataIndices[i];\n }\n }\n\n return -1;\n}\n\nfunction setLargeStyle(el, seriesModel, data) {\n var borderColor = data.getVisual('borderColor') || data.getVisual('color');\n var itemStyle = seriesModel.getModel('itemStyle').getItemStyle(['color', 'borderColor']);\n el.useStyle(itemStyle);\n el.style.fill = null;\n el.style.stroke = borderColor;\n el.style.lineWidth = data.getLayout('barWidth');\n}\n\nfunction setLargeBackgroundStyle(el, backgroundModel, data) {\n var borderColor = backgroundModel.get('borderColor') || backgroundModel.get('color');\n var itemStyle = backgroundModel.getItemStyle(['color', 'borderColor']);\n el.useStyle(itemStyle);\n el.style.fill = null;\n el.style.stroke = borderColor;\n el.style.lineWidth = data.getLayout('barWidth');\n}\n\nfunction createBackgroundShape(isHorizontalOrRadial, layout, coord) {\n var coordLayout;\n var isPolar = coord.type === 'polar';\n\n if (isPolar) {\n coordLayout = coord.getArea();\n } else {\n coordLayout = coord.grid.getRect();\n }\n\n if (isPolar) {\n return {\n cx: coordLayout.cx,\n cy: coordLayout.cy,\n r0: isHorizontalOrRadial ? coordLayout.r0 : layout.r0,\n r: isHorizontalOrRadial ? coordLayout.r : layout.r,\n startAngle: isHorizontalOrRadial ? layout.startAngle : 0,\n endAngle: isHorizontalOrRadial ? layout.endAngle : Math.PI * 2\n };\n } else {\n return {\n x: isHorizontalOrRadial ? layout.x : coordLayout.x,\n y: isHorizontalOrRadial ? coordLayout.y : layout.y,\n width: isHorizontalOrRadial ? layout.width : coordLayout.width,\n height: isHorizontalOrRadial ? coordLayout.height : layout.height\n };\n }\n}\n\nfunction createBackgroundEl(coord, isHorizontalOrRadial, layout) {\n var ElementClz = coord.type === 'polar' ? graphic.Sector : graphic.Rect;\n return new ElementClz({\n shape: createBackgroundShape(isHorizontalOrRadial, layout, coord),\n silent: true,\n z2: 0\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 SeriesModel = require(\"../../model/Series\");\n\nvar createListFromArray = require(\"../helper/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*/\nvar _default = SeriesModel.extend({\n type: 'series.__base_bar__',\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n getMarkerPosition: function (value) {\n var coordSys = this.coordinateSystem;\n\n if (coordSys) {\n // PENDING if clamp ?\n var pt = coordSys.dataToPoint(coordSys.clampData(value));\n var data = this.getData();\n var offset = data.getLayout('offset');\n var size = data.getLayout('size');\n var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;\n pt[offsetIndex] += offset + size / 2;\n return pt;\n }\n\n return [NaN, NaN];\n },\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n // stack: null\n // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // 最小高度改为0\n barMinHeight: 0,\n // 最小角度为0,仅对极坐标系下的柱状图有效\n barMinAngle: 0,\n // cursor: null,\n large: false,\n largeThreshold: 400,\n progressive: 3e3,\n progressiveChunkMode: 'mod',\n // barMaxWidth: null,\n // In cartesian, the default value is 1. Otherwise null.\n // barMinWidth: null,\n // 默认自适应\n // barWidth: null,\n // 柱间距离,默认为柱形宽度的30%,可设固定值\n // barGap: '30%',\n // 类目间柱形距离,默认为类目间距的20%,可设固定值\n // barCategoryGap: '20%',\n // label: {\n // show: false\n // },\n itemStyle: {},\n emphasis: {}\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 BaseBarSeries = require(\"./BaseBarSeries\");\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 PictorialBarSeries = BaseBarSeries.extend({\n type: 'series.pictorialBar',\n dependencies: ['grid'],\n defaultOption: {\n symbol: 'circle',\n // Customized bar shape\n symbolSize: null,\n // Can be ['100%', '100%'], null means auto.\n symbolRotate: null,\n symbolPosition: null,\n // 'start' or 'end' or 'center', null means auto.\n symbolOffset: null,\n symbolMargin: null,\n // start margin and end margin. Can be a number or a percent string.\n // Auto margin by default.\n symbolRepeat: false,\n // false/null/undefined, means no repeat.\n // Can be true, means auto calculate repeat times and cut by data.\n // Can be a number, specifies repeat times, and do not cut by data.\n // Can be 'fixed', means auto calculate repeat times but do not cut by data.\n symbolRepeatDirection: 'end',\n // 'end' means from 'start' to 'end'.\n symbolClip: false,\n symbolBoundingData: null,\n // Can be 60 or -40 or [-40, 60]\n symbolPatternSize: 400,\n // 400 * 400 px\n barGap: '-100%',\n // In most case, overlap is needed.\n // z can be set in data item, which is z2 actually.\n // Disable progressive\n progressive: 0,\n hoverAnimation: false // Open only when needed.\n\n },\n getInitialData: function (option) {\n // Disable stack.\n option.stack = null;\n return PictorialBarSeries.superApply(this, 'getInitialData', arguments);\n }\n});\nvar _default = PictorialBarSeries;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\nvar isNumeric = _number.isNumeric;\n\nvar _helper = require(\"./helper\");\n\nvar setLabel = _helper.setLabel;\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 BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'borderWidth']; // index: +isHorizontal\n\nvar LAYOUT_ATTRS = [{\n xy: 'x',\n wh: 'width',\n index: 0,\n posDesc: ['left', 'right']\n}, {\n xy: 'y',\n wh: 'height',\n index: 1,\n posDesc: ['top', 'bottom']\n}];\nvar pathForLineWidth = new graphic.Circle();\nvar BarView = echarts.extendChartView({\n type: 'pictorialBar',\n render: function (seriesModel, ecModel, api) {\n var group = this.group;\n var data = seriesModel.getData();\n var oldData = this._data;\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var isHorizontal = !!baseAxis.isHorizontal();\n var coordSysRect = cartesian.grid.getRect();\n var opt = {\n ecSize: {\n width: api.getWidth(),\n height: api.getHeight()\n },\n seriesModel: seriesModel,\n coordSys: cartesian,\n coordSysExtent: [[coordSysRect.x, coordSysRect.x + coordSysRect.width], [coordSysRect.y, coordSysRect.y + coordSysRect.height]],\n isHorizontal: isHorizontal,\n valueDim: LAYOUT_ATTRS[+isHorizontal],\n categoryDim: LAYOUT_ATTRS[1 - isHorizontal]\n };\n data.diff(oldData).add(function (dataIndex) {\n if (!data.hasValue(dataIndex)) {\n return;\n }\n\n var itemModel = getItemModel(data, dataIndex);\n var symbolMeta = getSymbolMeta(data, dataIndex, itemModel, opt);\n var bar = createBar(data, opt, symbolMeta);\n data.setItemGraphicEl(dataIndex, bar);\n group.add(bar);\n updateCommon(bar, opt, symbolMeta);\n }).update(function (newIndex, oldIndex) {\n var bar = oldData.getItemGraphicEl(oldIndex);\n\n if (!data.hasValue(newIndex)) {\n group.remove(bar);\n return;\n }\n\n var itemModel = getItemModel(data, newIndex);\n var symbolMeta = getSymbolMeta(data, newIndex, itemModel, opt);\n var pictorialShapeStr = getShapeStr(data, symbolMeta);\n\n if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) {\n group.remove(bar);\n data.setItemGraphicEl(newIndex, null);\n bar = null;\n }\n\n if (bar) {\n updateBar(bar, opt, symbolMeta);\n } else {\n bar = createBar(data, opt, symbolMeta, true);\n }\n\n data.setItemGraphicEl(newIndex, bar);\n bar.__pictorialSymbolMeta = symbolMeta; // Add back\n\n group.add(bar);\n updateCommon(bar, opt, symbolMeta);\n }).remove(function (dataIndex) {\n var bar = oldData.getItemGraphicEl(dataIndex);\n bar && removeBar(oldData, dataIndex, bar.__pictorialSymbolMeta.animationModel, bar);\n }).execute();\n this._data = data;\n return this.group;\n },\n dispose: zrUtil.noop,\n remove: function (ecModel, api) {\n var group = this.group;\n var data = this._data;\n\n if (ecModel.get('animation')) {\n if (data) {\n data.eachItemGraphicEl(function (bar) {\n removeBar(data, bar.dataIndex, ecModel, bar);\n });\n }\n } else {\n group.removeAll();\n }\n }\n}); // Set or calculate default value about symbol, and calculate layout info.\n\nfunction getSymbolMeta(data, dataIndex, itemModel, opt) {\n var layout = data.getItemLayout(dataIndex);\n var symbolRepeat = itemModel.get('symbolRepeat');\n var symbolClip = itemModel.get('symbolClip');\n var symbolPosition = itemModel.get('symbolPosition') || 'start';\n var symbolRotate = itemModel.get('symbolRotate');\n var rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n var symbolPatternSize = itemModel.get('symbolPatternSize') || 2;\n var isAnimationEnabled = itemModel.isAnimationEnabled();\n var symbolMeta = {\n dataIndex: dataIndex,\n layout: layout,\n itemModel: itemModel,\n symbolType: data.getItemVisual(dataIndex, 'symbol') || 'circle',\n color: data.getItemVisual(dataIndex, 'color'),\n symbolClip: symbolClip,\n symbolRepeat: symbolRepeat,\n symbolRepeatDirection: itemModel.get('symbolRepeatDirection'),\n symbolPatternSize: symbolPatternSize,\n rotation: rotation,\n animationModel: isAnimationEnabled ? itemModel : null,\n hoverAnimation: isAnimationEnabled && itemModel.get('hoverAnimation'),\n z2: itemModel.getShallow('z', true) || 0\n };\n prepareBarLength(itemModel, symbolRepeat, layout, opt, symbolMeta);\n prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, symbolMeta.boundingLength, symbolMeta.pxSign, symbolPatternSize, opt, symbolMeta);\n prepareLineWidth(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta);\n var symbolSize = symbolMeta.symbolSize;\n var symbolOffset = itemModel.get('symbolOffset');\n\n if (zrUtil.isArray(symbolOffset)) {\n symbolOffset = [parsePercent(symbolOffset[0], symbolSize[0]), parsePercent(symbolOffset[1], symbolSize[1])];\n }\n\n prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, symbolMeta.valueLineWidth, symbolMeta.boundingLength, symbolMeta.repeatCutLength, opt, symbolMeta);\n return symbolMeta;\n} // bar length can be negative.\n\n\nfunction prepareBarLength(itemModel, symbolRepeat, layout, opt, output) {\n var valueDim = opt.valueDim;\n var symbolBoundingData = itemModel.get('symbolBoundingData');\n var valueAxis = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis());\n var zeroPx = valueAxis.toGlobalCoord(valueAxis.dataToCoord(0));\n var pxSignIdx = 1 - +(layout[valueDim.wh] <= 0);\n var boundingLength;\n\n if (zrUtil.isArray(symbolBoundingData)) {\n var symbolBoundingExtent = [convertToCoordOnAxis(valueAxis, symbolBoundingData[0]) - zeroPx, convertToCoordOnAxis(valueAxis, symbolBoundingData[1]) - zeroPx];\n symbolBoundingExtent[1] < symbolBoundingExtent[0] && symbolBoundingExtent.reverse();\n boundingLength = symbolBoundingExtent[pxSignIdx];\n } else if (symbolBoundingData != null) {\n boundingLength = convertToCoordOnAxis(valueAxis, symbolBoundingData) - zeroPx;\n } else if (symbolRepeat) {\n boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx;\n } else {\n boundingLength = layout[valueDim.wh];\n }\n\n output.boundingLength = boundingLength;\n\n if (symbolRepeat) {\n output.repeatCutLength = layout[valueDim.wh];\n }\n\n output.pxSign = boundingLength > 0 ? 1 : boundingLength < 0 ? -1 : 0;\n}\n\nfunction convertToCoordOnAxis(axis, value) {\n return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value)));\n} // Support ['100%', '100%']\n\n\nfunction prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, boundingLength, pxSign, symbolPatternSize, opt, output) {\n var valueDim = opt.valueDim;\n var categoryDim = opt.categoryDim;\n var categorySize = Math.abs(layout[categoryDim.wh]);\n var symbolSize = data.getItemVisual(dataIndex, 'symbolSize');\n\n if (zrUtil.isArray(symbolSize)) {\n symbolSize = symbolSize.slice();\n } else {\n if (symbolSize == null) {\n symbolSize = '100%';\n }\n\n symbolSize = [symbolSize, symbolSize];\n } // Note: percentage symbolSize (like '100%') do not consider lineWidth, because it is\n // to complicated to calculate real percent value if considering scaled lineWidth.\n // So the actual size will bigger than layout size if lineWidth is bigger than zero,\n // which can be tolerated in pictorial chart.\n\n\n symbolSize[categoryDim.index] = parsePercent(symbolSize[categoryDim.index], categorySize);\n symbolSize[valueDim.index] = parsePercent(symbolSize[valueDim.index], symbolRepeat ? categorySize : Math.abs(boundingLength));\n output.symbolSize = symbolSize; // If x or y is less than zero, show reversed shape.\n\n var symbolScale = output.symbolScale = [symbolSize[0] / symbolPatternSize, symbolSize[1] / symbolPatternSize]; // Follow convention, 'right' and 'top' is the normal scale.\n\n symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign;\n}\n\nfunction prepareLineWidth(itemModel, symbolScale, rotation, opt, output) {\n // In symbols are drawn with scale, so do not need to care about the case that width\n // or height are too small. But symbol use strokeNoScale, where acture lineWidth should\n // be calculated.\n var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0;\n\n if (valueLineWidth) {\n pathForLineWidth.attr({\n scale: symbolScale.slice(),\n rotation: rotation\n });\n pathForLineWidth.updateTransform();\n valueLineWidth /= pathForLineWidth.getLineScale();\n valueLineWidth *= symbolScale[opt.valueDim.index];\n }\n\n output.valueLineWidth = valueLineWidth;\n}\n\nfunction prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, valueLineWidth, boundingLength, repeatCutLength, opt, output) {\n var categoryDim = opt.categoryDim;\n var valueDim = opt.valueDim;\n var pxSign = output.pxSign;\n var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0);\n var pathLen = unitLength; // Note: rotation will not effect the layout of symbols, because user may\n // want symbols to rotate on its center, which should not be translated\n // when rotating.\n\n if (symbolRepeat) {\n var absBoundingLength = Math.abs(boundingLength);\n var symbolMargin = zrUtil.retrieve(itemModel.get('symbolMargin'), '15%') + '';\n var hasEndGap = false;\n\n if (symbolMargin.lastIndexOf('!') === symbolMargin.length - 1) {\n hasEndGap = true;\n symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1);\n }\n\n symbolMargin = parsePercent(symbolMargin, symbolSize[valueDim.index]);\n var uLenWithMargin = Math.max(unitLength + symbolMargin * 2, 0); // When symbol margin is less than 0, margin at both ends will be subtracted\n // to ensure that all of the symbols will not be overflow the given area.\n\n var endFix = hasEndGap ? 0 : symbolMargin * 2; // Both final repeatTimes and final symbolMargin area calculated based on\n // boundingLength.\n\n var repeatSpecified = isNumeric(symbolRepeat);\n var repeatTimes = repeatSpecified ? symbolRepeat : toIntTimes((absBoundingLength + endFix) / uLenWithMargin); // Adjust calculate margin, to ensure each symbol is displayed\n // entirely in the given layout area.\n\n var mDiff = absBoundingLength - repeatTimes * unitLength;\n symbolMargin = mDiff / 2 / (hasEndGap ? repeatTimes : repeatTimes - 1);\n uLenWithMargin = unitLength + symbolMargin * 2;\n endFix = hasEndGap ? 0 : symbolMargin * 2; // Update repeatTimes when not all symbol will be shown.\n\n if (!repeatSpecified && symbolRepeat !== 'fixed') {\n repeatTimes = repeatCutLength ? toIntTimes((Math.abs(repeatCutLength) + endFix) / uLenWithMargin) : 0;\n }\n\n pathLen = repeatTimes * uLenWithMargin - endFix;\n output.repeatTimes = repeatTimes;\n output.symbolMargin = symbolMargin;\n }\n\n var sizeFix = pxSign * (pathLen / 2);\n var pathPosition = output.pathPosition = [];\n pathPosition[categoryDim.index] = layout[categoryDim.wh] / 2;\n pathPosition[valueDim.index] = symbolPosition === 'start' ? sizeFix : symbolPosition === 'end' ? boundingLength - sizeFix : boundingLength / 2; // 'center'\n\n if (symbolOffset) {\n pathPosition[0] += symbolOffset[0];\n pathPosition[1] += symbolOffset[1];\n }\n\n var bundlePosition = output.bundlePosition = [];\n bundlePosition[categoryDim.index] = layout[categoryDim.xy];\n bundlePosition[valueDim.index] = layout[valueDim.xy];\n var barRectShape = output.barRectShape = zrUtil.extend({}, layout);\n barRectShape[valueDim.wh] = pxSign * Math.max(Math.abs(layout[valueDim.wh]), Math.abs(pathPosition[valueDim.index] + sizeFix));\n barRectShape[categoryDim.wh] = layout[categoryDim.wh];\n var clipShape = output.clipShape = {}; // Consider that symbol may be overflow layout rect.\n\n clipShape[categoryDim.xy] = -layout[categoryDim.xy];\n clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh];\n clipShape[valueDim.xy] = 0;\n clipShape[valueDim.wh] = layout[valueDim.wh];\n}\n\nfunction createPath(symbolMeta) {\n var symbolPatternSize = symbolMeta.symbolPatternSize;\n var path = createSymbol( // Consider texture img, make a big size.\n symbolMeta.symbolType, -symbolPatternSize / 2, -symbolPatternSize / 2, symbolPatternSize, symbolPatternSize, symbolMeta.color);\n path.attr({\n culling: true\n });\n path.type !== 'image' && path.setStyle({\n strokeNoScale: true\n });\n return path;\n}\n\nfunction createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) {\n var bundle = bar.__pictorialBundle;\n var symbolSize = symbolMeta.symbolSize;\n var valueLineWidth = symbolMeta.valueLineWidth;\n var pathPosition = symbolMeta.pathPosition;\n var valueDim = opt.valueDim;\n var repeatTimes = symbolMeta.repeatTimes || 0;\n var index = 0;\n var unit = symbolSize[opt.valueDim.index] + valueLineWidth + symbolMeta.symbolMargin * 2;\n eachPath(bar, function (path) {\n path.__pictorialAnimationIndex = index;\n path.__pictorialRepeatTimes = repeatTimes;\n\n if (index < repeatTimes) {\n updateAttr(path, null, makeTarget(index), symbolMeta, isUpdate);\n } else {\n updateAttr(path, null, {\n scale: [0, 0]\n }, symbolMeta, isUpdate, function () {\n bundle.remove(path);\n });\n }\n\n updateHoverAnimation(path, symbolMeta);\n index++;\n });\n\n for (; index < repeatTimes; index++) {\n var path = createPath(symbolMeta);\n path.__pictorialAnimationIndex = index;\n path.__pictorialRepeatTimes = repeatTimes;\n bundle.add(path);\n var target = makeTarget(index);\n updateAttr(path, {\n position: target.position,\n scale: [0, 0]\n }, {\n scale: target.scale,\n rotation: target.rotation\n }, symbolMeta, isUpdate); // FIXME\n // If all emphasis/normal through action.\n\n path.on('mouseover', onMouseOver).on('mouseout', onMouseOut);\n updateHoverAnimation(path, symbolMeta);\n }\n\n function makeTarget(index) {\n var position = pathPosition.slice(); // (start && pxSign > 0) || (end && pxSign < 0): i = repeatTimes - index\n // Otherwise: i = index;\n\n var pxSign = symbolMeta.pxSign;\n var i = index;\n\n if (symbolMeta.symbolRepeatDirection === 'start' ? pxSign > 0 : pxSign < 0) {\n i = repeatTimes - 1 - index;\n }\n\n position[valueDim.index] = unit * (i - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index];\n return {\n position: position,\n scale: symbolMeta.symbolScale.slice(),\n rotation: symbolMeta.rotation\n };\n }\n\n function onMouseOver() {\n eachPath(bar, function (path) {\n path.trigger('emphasis');\n });\n }\n\n function onMouseOut() {\n eachPath(bar, function (path) {\n path.trigger('normal');\n });\n }\n}\n\nfunction createOrUpdateSingleSymbol(bar, opt, symbolMeta, isUpdate) {\n var bundle = bar.__pictorialBundle;\n var mainPath = bar.__pictorialMainPath;\n\n if (!mainPath) {\n mainPath = bar.__pictorialMainPath = createPath(symbolMeta);\n bundle.add(mainPath);\n updateAttr(mainPath, {\n position: symbolMeta.pathPosition.slice(),\n scale: [0, 0],\n rotation: symbolMeta.rotation\n }, {\n scale: symbolMeta.symbolScale.slice()\n }, symbolMeta, isUpdate);\n mainPath.on('mouseover', onMouseOver).on('mouseout', onMouseOut);\n } else {\n updateAttr(mainPath, null, {\n position: symbolMeta.pathPosition.slice(),\n scale: symbolMeta.symbolScale.slice(),\n rotation: symbolMeta.rotation\n }, symbolMeta, isUpdate);\n }\n\n updateHoverAnimation(mainPath, symbolMeta);\n\n function onMouseOver() {\n this.trigger('emphasis');\n }\n\n function onMouseOut() {\n this.trigger('normal');\n }\n} // bar rect is used for label.\n\n\nfunction createOrUpdateBarRect(bar, symbolMeta, isUpdate) {\n var rectShape = zrUtil.extend({}, symbolMeta.barRectShape);\n var barRect = bar.__pictorialBarRect;\n\n if (!barRect) {\n barRect = bar.__pictorialBarRect = new graphic.Rect({\n z2: 2,\n shape: rectShape,\n silent: true,\n style: {\n stroke: 'transparent',\n fill: 'transparent',\n lineWidth: 0\n }\n });\n bar.add(barRect);\n } else {\n updateAttr(barRect, null, {\n shape: rectShape\n }, symbolMeta, isUpdate);\n }\n}\n\nfunction createOrUpdateClip(bar, opt, symbolMeta, isUpdate) {\n // If not clip, symbol will be remove and rebuilt.\n if (symbolMeta.symbolClip) {\n var clipPath = bar.__pictorialClipPath;\n var clipShape = zrUtil.extend({}, symbolMeta.clipShape);\n var valueDim = opt.valueDim;\n var animationModel = symbolMeta.animationModel;\n var dataIndex = symbolMeta.dataIndex;\n\n if (clipPath) {\n graphic.updateProps(clipPath, {\n shape: clipShape\n }, animationModel, dataIndex);\n } else {\n clipShape[valueDim.wh] = 0;\n clipPath = new graphic.Rect({\n shape: clipShape\n });\n\n bar.__pictorialBundle.setClipPath(clipPath);\n\n bar.__pictorialClipPath = clipPath;\n var target = {};\n target[valueDim.wh] = symbolMeta.clipShape[valueDim.wh];\n graphic[isUpdate ? 'updateProps' : 'initProps'](clipPath, {\n shape: target\n }, animationModel, dataIndex);\n }\n }\n}\n\nfunction getItemModel(data, dataIndex) {\n var itemModel = data.getItemModel(dataIndex);\n itemModel.getAnimationDelayParams = getAnimationDelayParams;\n itemModel.isAnimationEnabled = isAnimationEnabled;\n return itemModel;\n}\n\nfunction getAnimationDelayParams(path) {\n // The order is the same as the z-order, see `symbolRepeatDiretion`.\n return {\n index: path.__pictorialAnimationIndex,\n count: path.__pictorialRepeatTimes\n };\n}\n\nfunction isAnimationEnabled() {\n // `animation` prop can be set on itemModel in pictorial bar chart.\n return this.parentModel.isAnimationEnabled() && !!this.getShallow('animation');\n}\n\nfunction updateHoverAnimation(path, symbolMeta) {\n path.off('emphasis').off('normal');\n var scale = symbolMeta.symbolScale.slice();\n symbolMeta.hoverAnimation && path.on('emphasis', function () {\n this.animateTo({\n scale: [scale[0] * 1.1, scale[1] * 1.1]\n }, 400, 'elasticOut');\n }).on('normal', function () {\n this.animateTo({\n scale: scale.slice()\n }, 400, 'elasticOut');\n });\n}\n\nfunction createBar(data, opt, symbolMeta, isUpdate) {\n // bar is the main element for each data.\n var bar = new graphic.Group(); // bundle is used for location and clip.\n\n var bundle = new graphic.Group();\n bar.add(bundle);\n bar.__pictorialBundle = bundle;\n bundle.attr('position', symbolMeta.bundlePosition.slice());\n\n if (symbolMeta.symbolRepeat) {\n createOrUpdateRepeatSymbols(bar, opt, symbolMeta);\n } else {\n createOrUpdateSingleSymbol(bar, opt, symbolMeta);\n }\n\n createOrUpdateBarRect(bar, symbolMeta, isUpdate);\n createOrUpdateClip(bar, opt, symbolMeta, isUpdate);\n bar.__pictorialShapeStr = getShapeStr(data, symbolMeta);\n bar.__pictorialSymbolMeta = symbolMeta;\n return bar;\n}\n\nfunction updateBar(bar, opt, symbolMeta) {\n var animationModel = symbolMeta.animationModel;\n var dataIndex = symbolMeta.dataIndex;\n var bundle = bar.__pictorialBundle;\n graphic.updateProps(bundle, {\n position: symbolMeta.bundlePosition.slice()\n }, animationModel, dataIndex);\n\n if (symbolMeta.symbolRepeat) {\n createOrUpdateRepeatSymbols(bar, opt, symbolMeta, true);\n } else {\n createOrUpdateSingleSymbol(bar, opt, symbolMeta, true);\n }\n\n createOrUpdateBarRect(bar, symbolMeta, true);\n createOrUpdateClip(bar, opt, symbolMeta, true);\n}\n\nfunction removeBar(data, dataIndex, animationModel, bar) {\n // Not show text when animating\n var labelRect = bar.__pictorialBarRect;\n labelRect && (labelRect.style.text = null);\n var pathes = [];\n eachPath(bar, function (path) {\n pathes.push(path);\n });\n bar.__pictorialMainPath && pathes.push(bar.__pictorialMainPath); // I do not find proper remove animation for clip yet.\n\n bar.__pictorialClipPath && (animationModel = null);\n zrUtil.each(pathes, function (path) {\n graphic.updateProps(path, {\n scale: [0, 0]\n }, animationModel, dataIndex, function () {\n bar.parent && bar.parent.remove(bar);\n });\n });\n data.setItemGraphicEl(dataIndex, null);\n}\n\nfunction getShapeStr(data, symbolMeta) {\n return [data.getItemVisual(symbolMeta.dataIndex, 'symbol') || 'none', !!symbolMeta.symbolRepeat, !!symbolMeta.symbolClip].join(':');\n}\n\nfunction eachPath(bar, cb, context) {\n // Do not use Group#eachChild, because it do not support remove.\n zrUtil.each(bar.__pictorialBundle.children(), function (el) {\n el !== bar.__pictorialBarRect && cb.call(context, el);\n });\n}\n\nfunction updateAttr(el, immediateAttrs, animationAttrs, symbolMeta, isUpdate, cb) {\n immediateAttrs && el.attr(immediateAttrs); // when symbolCip used, only clip path has init animation, otherwise it would be weird effect.\n\n if (symbolMeta.symbolClip && !isUpdate) {\n animationAttrs && el.attr(animationAttrs);\n } else {\n animationAttrs && graphic[isUpdate ? 'updateProps' : 'initProps'](el, animationAttrs, symbolMeta.animationModel, symbolMeta.dataIndex, cb);\n }\n}\n\nfunction updateCommon(bar, opt, symbolMeta) {\n var color = symbolMeta.color;\n var dataIndex = symbolMeta.dataIndex;\n var itemModel = symbolMeta.itemModel; // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n var normalStyle = itemModel.getModel('itemStyle').getItemStyle(['color']);\n var hoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n var cursorStyle = itemModel.getShallow('cursor');\n eachPath(bar, function (path) {\n // PENDING setColor should be before setStyle!!!\n path.setColor(color);\n path.setStyle(zrUtil.defaults({\n fill: color,\n opacity: symbolMeta.opacity\n }, normalStyle));\n graphic.setHoverStyle(path, hoverStyle);\n cursorStyle && (path.cursor = cursorStyle);\n path.z2 = symbolMeta.z2;\n });\n var barRectHoverStyle = {};\n var barPositionOutside = opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)];\n var barRect = bar.__pictorialBarRect;\n setLabel(barRect.style, barRectHoverStyle, itemModel, color, opt.seriesModel, dataIndex, barPositionOutside);\n graphic.setHoverStyle(barRect, barRectHoverStyle);\n}\n\nfunction toIntTimes(times) {\n var roundedTimes = Math.round(times); // Escapse accurate error\n\n return Math.abs(times - roundedTimes) < 1e-4 ? roundedTimes : Math.ceil(times);\n}\n\nvar _default = BarView;\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 makeStyleMapper = require(\"../../model/mixin/makeStyleMapper\");\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 getBarItemStyle = makeStyleMapper([['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], // Compatitable with 2\n['stroke', 'barBorderColor'], ['lineWidth', 'barBorderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\nvar _default = {\n getBarItemStyle: function (excludes) {\n var style = getBarItemStyle(this, excludes);\n\n if (this.getBorderLineDash) {\n var lineDash = this.getBorderLineDash();\n lineDash && (style.lineDash = lineDash);\n }\n\n return style;\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 _labelHelper = require(\"../helper/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*/\nfunction setLabel(normalStyle, hoverStyle, itemModel, color, seriesModel, dataIndex, labelPositionOutside) {\n var labelModel = itemModel.getModel('label');\n var hoverLabelModel = itemModel.getModel('emphasis.label');\n graphic.setLabelStyle(normalStyle, hoverStyle, labelModel, hoverLabelModel, {\n labelFetcher: seriesModel,\n labelDataIndex: dataIndex,\n defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),\n isRectText: true,\n autoColor: color\n });\n fixPosition(normalStyle);\n fixPosition(hoverStyle);\n}\n\nfunction fixPosition(style, labelPositionOutside) {\n if (style.textPosition === 'outside') {\n style.textPosition = labelPositionOutside;\n }\n}\n\nexports.setLabel = setLabel;","\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\nrequire(\"./boxplot/BoxplotSeries\");\n\nrequire(\"./boxplot/BoxplotView\");\n\nvar boxplotVisual = require(\"./boxplot/boxplotVisual\");\n\nvar boxplotLayout = require(\"./boxplot/boxplotLayout\");\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*/\necharts.registerVisual(boxplotVisual);\necharts.registerLayout(boxplotLayout);","\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 SeriesModel = require(\"../../model/Series\");\n\nvar _whiskerBoxCommon = require(\"../helper/whiskerBoxCommon\");\n\nvar seriesModelMixin = _whiskerBoxCommon.seriesModelMixin;\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 BoxplotSeries = SeriesModel.extend({\n type: 'series.boxplot',\n dependencies: ['xAxis', 'yAxis', 'grid'],\n // TODO\n // box width represents group size, so dimension should have 'size'.\n\n /**\n * @see \n * The meanings of 'min' and 'max' depend on user,\n * and echarts do not need to know it.\n * @readOnly\n */\n defaultValueDimensions: [{\n name: 'min',\n defaultTooltip: true\n }, {\n name: 'Q1',\n defaultTooltip: true\n }, {\n name: 'median',\n defaultTooltip: true\n }, {\n name: 'Q3',\n defaultTooltip: true\n }, {\n name: 'max',\n defaultTooltip: true\n }],\n\n /**\n * @type {Array.}\n * @readOnly\n */\n dimensions: null,\n\n /**\n * @override\n */\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n hoverAnimation: true,\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n layout: null,\n // 'horizontal' or 'vertical'\n boxWidth: [7, 50],\n // [min, max] can be percent of band width.\n itemStyle: {\n color: '#fff',\n borderWidth: 1\n },\n emphasis: {\n itemStyle: {\n borderWidth: 2,\n shadowBlur: 5,\n shadowOffsetX: 2,\n shadowOffsetY: 2,\n shadowColor: 'rgba(0,0,0,0.4)'\n }\n },\n animationEasing: 'elasticOut',\n animationDuration: 800\n }\n});\nzrUtil.mixin(BoxplotSeries, seriesModelMixin, true);\nvar _default = BoxplotSeries;\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 ChartView = require(\"../../view/Chart\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\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// Update common properties\nvar NORMAL_ITEM_STYLE_PATH = ['itemStyle'];\nvar EMPHASIS_ITEM_STYLE_PATH = ['emphasis', 'itemStyle'];\nvar BoxplotView = ChartView.extend({\n type: 'boxplot',\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var group = this.group;\n var oldData = this._data; // There is no old data only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!this._data) {\n group.removeAll();\n }\n\n var constDim = seriesModel.get('layout') === 'horizontal' ? 1 : 0;\n data.diff(oldData).add(function (newIdx) {\n if (data.hasValue(newIdx)) {\n var itemLayout = data.getItemLayout(newIdx);\n var symbolEl = createNormalBox(itemLayout, data, newIdx, constDim, true);\n data.setItemGraphicEl(newIdx, symbolEl);\n group.add(symbolEl);\n }\n }).update(function (newIdx, oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx); // Empty data\n\n if (!data.hasValue(newIdx)) {\n group.remove(symbolEl);\n return;\n }\n\n var itemLayout = data.getItemLayout(newIdx);\n\n if (!symbolEl) {\n symbolEl = createNormalBox(itemLayout, data, newIdx, constDim);\n } else {\n updateNormalBoxData(itemLayout, symbolEl, data, newIdx);\n }\n\n group.add(symbolEl);\n data.setItemGraphicEl(newIdx, symbolEl);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && group.remove(el);\n }).execute();\n this._data = data;\n },\n remove: function (ecModel) {\n var group = this.group;\n var data = this._data;\n this._data = null;\n data && data.eachItemGraphicEl(function (el) {\n el && group.remove(el);\n });\n },\n dispose: zrUtil.noop\n});\nvar BoxPath = Path.extend({\n type: 'boxplotBoxPath',\n shape: {},\n buildPath: function (ctx, shape) {\n var ends = shape.points;\n var i = 0;\n ctx.moveTo(ends[i][0], ends[i][1]);\n i++;\n\n for (; i < 4; i++) {\n ctx.lineTo(ends[i][0], ends[i][1]);\n }\n\n ctx.closePath();\n\n for (; i < ends.length; i++) {\n ctx.moveTo(ends[i][0], ends[i][1]);\n i++;\n ctx.lineTo(ends[i][0], ends[i][1]);\n }\n }\n});\n\nfunction createNormalBox(itemLayout, data, dataIndex, constDim, isInit) {\n var ends = itemLayout.ends;\n var el = new BoxPath({\n shape: {\n points: isInit ? transInit(ends, constDim, itemLayout) : ends\n }\n });\n updateNormalBoxData(itemLayout, el, data, dataIndex, isInit);\n return el;\n}\n\nfunction updateNormalBoxData(itemLayout, el, data, dataIndex, isInit) {\n var seriesModel = data.hostModel;\n var updateMethod = graphic[isInit ? 'initProps' : 'updateProps'];\n updateMethod(el, {\n shape: {\n points: itemLayout.ends\n }\n }, seriesModel, dataIndex);\n var itemModel = data.getItemModel(dataIndex);\n var normalItemStyleModel = itemModel.getModel(NORMAL_ITEM_STYLE_PATH);\n var borderColor = data.getItemVisual(dataIndex, 'color'); // Exclude borderColor.\n\n var itemStyle = normalItemStyleModel.getItemStyle(['borderColor']);\n itemStyle.stroke = borderColor;\n itemStyle.strokeNoScale = true;\n el.useStyle(itemStyle);\n el.z2 = 100;\n var hoverStyle = itemModel.getModel(EMPHASIS_ITEM_STYLE_PATH).getItemStyle();\n graphic.setHoverStyle(el, hoverStyle);\n}\n\nfunction transInit(points, dim, itemLayout) {\n return zrUtil.map(points, function (point) {\n point = point.slice();\n point[dim] = itemLayout.initBaseline;\n return point;\n });\n}\n\nvar _default = BoxplotView;\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 _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\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 each = zrUtil.each;\n\nfunction _default(ecModel) {\n var groupResult = groupSeriesByAxis(ecModel);\n each(groupResult, function (groupItem) {\n var seriesModels = groupItem.seriesModels;\n\n if (!seriesModels.length) {\n return;\n }\n\n calculateBase(groupItem);\n each(seriesModels, function (seriesModel, idx) {\n layoutSingleSeries(seriesModel, groupItem.boxOffsetList[idx], groupItem.boxWidthList[idx]);\n });\n });\n}\n/**\n * Group series by axis.\n */\n\n\nfunction groupSeriesByAxis(ecModel) {\n var result = [];\n var axisList = [];\n ecModel.eachSeriesByType('boxplot', function (seriesModel) {\n var baseAxis = seriesModel.getBaseAxis();\n var idx = zrUtil.indexOf(axisList, baseAxis);\n\n if (idx < 0) {\n idx = axisList.length;\n axisList[idx] = baseAxis;\n result[idx] = {\n axis: baseAxis,\n seriesModels: []\n };\n }\n\n result[idx].seriesModels.push(seriesModel);\n });\n return result;\n}\n/**\n * Calculate offset and box width for each series.\n */\n\n\nfunction calculateBase(groupItem) {\n var extent;\n var baseAxis = groupItem.axis;\n var seriesModels = groupItem.seriesModels;\n var seriesCount = seriesModels.length;\n var boxWidthList = groupItem.boxWidthList = [];\n var boxOffsetList = groupItem.boxOffsetList = [];\n var boundList = [];\n var bandWidth;\n\n if (baseAxis.type === 'category') {\n bandWidth = baseAxis.getBandWidth();\n } else {\n var maxDataCount = 0;\n each(seriesModels, function (seriesModel) {\n maxDataCount = Math.max(maxDataCount, seriesModel.getData().count());\n });\n extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / maxDataCount;\n }\n\n each(seriesModels, function (seriesModel) {\n var boxWidthBound = seriesModel.get('boxWidth');\n\n if (!zrUtil.isArray(boxWidthBound)) {\n boxWidthBound = [boxWidthBound, boxWidthBound];\n }\n\n boundList.push([parsePercent(boxWidthBound[0], bandWidth) || 0, parsePercent(boxWidthBound[1], bandWidth) || 0]);\n });\n var availableWidth = bandWidth * 0.8 - 2;\n var boxGap = availableWidth / seriesCount * 0.3;\n var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount;\n var base = boxWidth / 2 - availableWidth / 2;\n each(seriesModels, function (seriesModel, idx) {\n boxOffsetList.push(base);\n base += boxGap + boxWidth;\n boxWidthList.push(Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1]));\n });\n}\n/**\n * Calculate points location for each series.\n */\n\n\nfunction layoutSingleSeries(seriesModel, offset, boxWidth) {\n var coordSys = seriesModel.coordinateSystem;\n var data = seriesModel.getData();\n var halfWidth = boxWidth / 2;\n var cDimIdx = seriesModel.get('layout') === 'horizontal' ? 0 : 1;\n var vDimIdx = 1 - cDimIdx;\n var coordDims = ['x', 'y'];\n var cDim = data.mapDimension(coordDims[cDimIdx]);\n var vDims = data.mapDimension(coordDims[vDimIdx], true);\n\n if (cDim == null || vDims.length < 5) {\n return;\n }\n\n for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) {\n var axisDimVal = data.get(cDim, dataIndex);\n var median = getPoint(axisDimVal, vDims[2], dataIndex);\n var end1 = getPoint(axisDimVal, vDims[0], dataIndex);\n var end2 = getPoint(axisDimVal, vDims[1], dataIndex);\n var end4 = getPoint(axisDimVal, vDims[3], dataIndex);\n var end5 = getPoint(axisDimVal, vDims[4], dataIndex);\n var ends = [];\n addBodyEnd(ends, end2, 0);\n addBodyEnd(ends, end4, 1);\n ends.push(end1, end2, end5, end4);\n layEndLine(ends, end1);\n layEndLine(ends, end5);\n layEndLine(ends, median);\n data.setItemLayout(dataIndex, {\n initBaseline: median[vDimIdx],\n ends: ends\n });\n }\n\n function getPoint(axisDimVal, dimIdx, dataIndex) {\n var val = data.get(dimIdx, dataIndex);\n var p = [];\n p[cDimIdx] = axisDimVal;\n p[vDimIdx] = val;\n var point;\n\n if (isNaN(axisDimVal) || isNaN(val)) {\n point = [NaN, NaN];\n } else {\n point = coordSys.dataToPoint(p);\n point[cDimIdx] += offset;\n }\n\n return point;\n }\n\n function addBodyEnd(ends, point, start) {\n var point1 = point.slice();\n var point2 = point.slice();\n point1[cDimIdx] += halfWidth;\n point2[cDimIdx] -= halfWidth;\n start ? ends.push(point1, point2) : ends.push(point2, point1);\n }\n\n function layEndLine(ends, endCenter) {\n var from = endCenter.slice();\n var to = endCenter.slice();\n from[cDimIdx] -= halfWidth;\n to[cDimIdx] += halfWidth;\n ends.push(from, to);\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\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 borderColorQuery = ['itemStyle', 'borderColor'];\n\nfunction _default(ecModel, api) {\n var globalColors = ecModel.get('color');\n ecModel.eachRawSeriesByType('boxplot', function (seriesModel) {\n var defaulColor = globalColors[seriesModel.seriesIndex % globalColors.length];\n var data = seriesModel.getData();\n data.setVisual({\n legendSymbol: 'roundRect',\n // Use name 'color' but not 'borderColor' for legend usage and\n // visual coding from other component like dataRange.\n color: seriesModel.get(borderColorQuery) || defaulColor\n }); // Only visible series has each data be visual encoded\n\n if (!ecModel.isSeriesFiltered(seriesModel)) {\n data.each(function (idx) {\n var itemModel = data.getItemModel(idx);\n data.setItemVisual(idx, {\n color: itemModel.get(borderColorQuery, true)\n });\n });\n }\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\nrequire(\"./candlestick/CandlestickSeries\");\n\nrequire(\"./candlestick/CandlestickView\");\n\nvar preprocessor = require(\"./candlestick/preprocessor\");\n\nvar candlestickVisual = require(\"./candlestick/candlestickVisual\");\n\nvar candlestickLayout = require(\"./candlestick/candlestickLayout\");\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*/\necharts.registerPreprocessor(preprocessor);\necharts.registerVisual(candlestickVisual);\necharts.registerLayout(candlestickLayout);","\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 SeriesModel = require(\"../../model/Series\");\n\nvar _whiskerBoxCommon = require(\"../helper/whiskerBoxCommon\");\n\nvar seriesModelMixin = _whiskerBoxCommon.seriesModelMixin;\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 CandlestickSeries = SeriesModel.extend({\n type: 'series.candlestick',\n dependencies: ['xAxis', 'yAxis', 'grid'],\n\n /**\n * @readOnly\n */\n defaultValueDimensions: [{\n name: 'open',\n defaultTooltip: true\n }, {\n name: 'close',\n defaultTooltip: true\n }, {\n name: 'lowest',\n defaultTooltip: true\n }, {\n name: 'highest',\n defaultTooltip: true\n }],\n\n /**\n * @type {Array.}\n * @readOnly\n */\n dimensions: null,\n\n /**\n * @override\n */\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n hoverAnimation: true,\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n layout: null,\n // 'horizontal' or 'vertical'\n clip: true,\n itemStyle: {\n color: '#c23531',\n // 阳线 positive\n color0: '#314656',\n // 阴线 negative '#c23531', '#314656'\n borderWidth: 1,\n // FIXME\n // ec2中使用的是lineStyle.color 和 lineStyle.color0\n borderColor: '#c23531',\n borderColor0: '#314656'\n },\n emphasis: {\n itemStyle: {\n borderWidth: 2\n }\n },\n barMaxWidth: null,\n barMinWidth: null,\n barWidth: null,\n large: true,\n largeThreshold: 600,\n progressive: 3e3,\n progressiveThreshold: 1e4,\n progressiveChunkMode: 'mod',\n animationUpdate: false,\n animationEasing: 'linear',\n animationDuration: 300\n },\n\n /**\n * Get dimension for shadow in dataZoom\n * @return {string} dimension name\n */\n getShadowDim: function () {\n return 'open';\n },\n brushSelector: function (dataIndex, data, selectors) {\n var itemLayout = data.getItemLayout(dataIndex);\n return itemLayout && selectors.rect(itemLayout.brushRect);\n }\n});\nzrUtil.mixin(CandlestickSeries, seriesModelMixin, true);\nvar _default = CandlestickSeries;\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 ChartView = require(\"../../view/Chart\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar _createClipPathFromCoordSys = require(\"../helper/createClipPathFromCoordSys\");\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\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 NORMAL_ITEM_STYLE_PATH = ['itemStyle'];\nvar EMPHASIS_ITEM_STYLE_PATH = ['emphasis', 'itemStyle'];\nvar SKIP_PROPS = ['color', 'color0', 'borderColor', 'borderColor0'];\nvar CandlestickView = ChartView.extend({\n type: 'candlestick',\n render: function (seriesModel, ecModel, api) {\n // If there is clipPath created in large mode. Remove it.\n this.group.removeClipPath();\n\n this._updateDrawMode(seriesModel);\n\n this._isLargeDraw ? this._renderLarge(seriesModel) : this._renderNormal(seriesModel);\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n this._clear();\n\n this._updateDrawMode(seriesModel);\n },\n incrementalRender: function (params, seriesModel, ecModel, api) {\n this._isLargeDraw ? this._incrementalRenderLarge(params, seriesModel) : this._incrementalRenderNormal(params, seriesModel);\n },\n _updateDrawMode: function (seriesModel) {\n var isLargeDraw = seriesModel.pipelineContext.large;\n\n if (this._isLargeDraw == null || isLargeDraw ^ this._isLargeDraw) {\n this._isLargeDraw = isLargeDraw;\n\n this._clear();\n }\n },\n _renderNormal: function (seriesModel) {\n var data = seriesModel.getData();\n var oldData = this._data;\n var group = this.group;\n var isSimpleBox = data.getLayout('isSimpleBox');\n var needsClip = seriesModel.get('clip', true);\n var coord = seriesModel.coordinateSystem;\n var clipArea = coord.getArea && coord.getArea(); // There is no old data only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!this._data) {\n group.removeAll();\n }\n\n data.diff(oldData).add(function (newIdx) {\n if (data.hasValue(newIdx)) {\n var el;\n var itemLayout = data.getItemLayout(newIdx);\n\n if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\n return;\n }\n\n el = createNormalBox(itemLayout, newIdx, true);\n graphic.initProps(el, {\n shape: {\n points: itemLayout.ends\n }\n }, seriesModel, newIdx);\n setBoxCommon(el, data, newIdx, isSimpleBox);\n group.add(el);\n data.setItemGraphicEl(newIdx, el);\n }\n }).update(function (newIdx, oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx); // Empty data\n\n if (!data.hasValue(newIdx)) {\n group.remove(el);\n return;\n }\n\n var itemLayout = data.getItemLayout(newIdx);\n\n if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\n group.remove(el);\n return;\n }\n\n if (!el) {\n el = createNormalBox(itemLayout, newIdx);\n } else {\n graphic.updateProps(el, {\n shape: {\n points: itemLayout.ends\n }\n }, seriesModel, newIdx);\n }\n\n setBoxCommon(el, data, newIdx, isSimpleBox);\n group.add(el);\n data.setItemGraphicEl(newIdx, el);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && group.remove(el);\n }).execute();\n this._data = data;\n },\n _renderLarge: function (seriesModel) {\n this._clear();\n\n createLarge(seriesModel, this.group);\n var clipPath = seriesModel.get('clip', true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;\n\n if (clipPath) {\n this.group.setClipPath(clipPath);\n } else {\n this.group.removeClipPath();\n }\n },\n _incrementalRenderNormal: function (params, seriesModel) {\n var data = seriesModel.getData();\n var isSimpleBox = data.getLayout('isSimpleBox');\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var el;\n var itemLayout = data.getItemLayout(dataIndex);\n el = createNormalBox(itemLayout, dataIndex);\n setBoxCommon(el, data, dataIndex, isSimpleBox);\n el.incremental = true;\n this.group.add(el);\n }\n },\n _incrementalRenderLarge: function (params, seriesModel) {\n createLarge(seriesModel, this.group, true);\n },\n remove: function (ecModel) {\n this._clear();\n },\n _clear: function () {\n this.group.removeAll();\n this._data = null;\n },\n dispose: zrUtil.noop\n});\nvar NormalBoxPath = Path.extend({\n type: 'normalCandlestickBox',\n shape: {},\n buildPath: function (ctx, shape) {\n var ends = shape.points;\n\n if (this.__simpleBox) {\n ctx.moveTo(ends[4][0], ends[4][1]);\n ctx.lineTo(ends[6][0], ends[6][1]);\n } else {\n ctx.moveTo(ends[0][0], ends[0][1]);\n ctx.lineTo(ends[1][0], ends[1][1]);\n ctx.lineTo(ends[2][0], ends[2][1]);\n ctx.lineTo(ends[3][0], ends[3][1]);\n ctx.closePath();\n ctx.moveTo(ends[4][0], ends[4][1]);\n ctx.lineTo(ends[5][0], ends[5][1]);\n ctx.moveTo(ends[6][0], ends[6][1]);\n ctx.lineTo(ends[7][0], ends[7][1]);\n }\n }\n});\n\nfunction createNormalBox(itemLayout, dataIndex, isInit) {\n var ends = itemLayout.ends;\n return new NormalBoxPath({\n shape: {\n points: isInit ? transInit(ends, itemLayout) : ends\n },\n z2: 100\n });\n}\n\nfunction isNormalBoxClipped(clipArea, itemLayout) {\n var clipped = true;\n\n for (var i = 0; i < itemLayout.ends.length; i++) {\n // If any point are in the region.\n if (clipArea.contain(itemLayout.ends[i][0], itemLayout.ends[i][1])) {\n clipped = false;\n break;\n }\n }\n\n return clipped;\n}\n\nfunction setBoxCommon(el, data, dataIndex, isSimpleBox) {\n var itemModel = data.getItemModel(dataIndex);\n var normalItemStyleModel = itemModel.getModel(NORMAL_ITEM_STYLE_PATH);\n var color = data.getItemVisual(dataIndex, 'color');\n var borderColor = data.getItemVisual(dataIndex, 'borderColor') || color; // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n var itemStyle = normalItemStyleModel.getItemStyle(SKIP_PROPS);\n el.useStyle(itemStyle);\n el.style.strokeNoScale = true;\n el.style.fill = color;\n el.style.stroke = borderColor;\n el.__simpleBox = isSimpleBox;\n var hoverStyle = itemModel.getModel(EMPHASIS_ITEM_STYLE_PATH).getItemStyle();\n graphic.setHoverStyle(el, hoverStyle);\n}\n\nfunction transInit(points, itemLayout) {\n return zrUtil.map(points, function (point) {\n point = point.slice();\n point[1] = itemLayout.initBaseline;\n return point;\n });\n}\n\nvar LargeBoxPath = Path.extend({\n type: 'largeCandlestickBox',\n shape: {},\n buildPath: function (ctx, shape) {\n // Drawing lines is more efficient than drawing\n // a whole line or drawing rects.\n var points = shape.points;\n\n for (var i = 0; i < points.length;) {\n if (this.__sign === points[i++]) {\n var x = points[i++];\n ctx.moveTo(x, points[i++]);\n ctx.lineTo(x, points[i++]);\n } else {\n i += 3;\n }\n }\n }\n});\n\nfunction createLarge(seriesModel, group, incremental) {\n var data = seriesModel.getData();\n var largePoints = data.getLayout('largePoints');\n var elP = new LargeBoxPath({\n shape: {\n points: largePoints\n },\n __sign: 1\n });\n group.add(elP);\n var elN = new LargeBoxPath({\n shape: {\n points: largePoints\n },\n __sign: -1\n });\n group.add(elN);\n setLargeStyle(1, elP, seriesModel, data);\n setLargeStyle(-1, elN, seriesModel, data);\n\n if (incremental) {\n elP.incremental = true;\n elN.incremental = true;\n }\n}\n\nfunction setLargeStyle(sign, el, seriesModel, data) {\n var suffix = sign > 0 ? 'P' : 'N';\n var borderColor = data.getVisual('borderColor' + suffix) || data.getVisual('color' + suffix); // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n var itemStyle = seriesModel.getModel(NORMAL_ITEM_STYLE_PATH).getItemStyle(SKIP_PROPS);\n el.useStyle(itemStyle);\n el.style.fill = null;\n el.style.stroke = borderColor; // No different\n // el.style.lineWidth = .5;\n}\n\nvar _default = CandlestickView;\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 subPixelOptimize = _graphic.subPixelOptimize;\n\nvar createRenderPlanner = require(\"../helper/createRenderPlanner\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar retrieve2 = _util.retrieve2;\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 */\nvar LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nvar _default = {\n seriesType: 'candlestick',\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var data = seriesModel.getData();\n var candleWidth = calculateCandleWidth(seriesModel, data);\n var cDimIdx = 0;\n var vDimIdx = 1;\n var coordDims = ['x', 'y'];\n var cDim = data.mapDimension(coordDims[cDimIdx]);\n var vDims = data.mapDimension(coordDims[vDimIdx], true);\n var openDim = vDims[0];\n var closeDim = vDims[1];\n var lowestDim = vDims[2];\n var highestDim = vDims[3];\n data.setLayout({\n candleWidth: candleWidth,\n // The value is experimented visually.\n isSimpleBox: candleWidth <= 1.3\n });\n\n if (cDim == null || vDims.length < 4) {\n return;\n }\n\n return {\n progress: seriesModel.pipelineContext.large ? largeProgress : normalProgress\n };\n\n function normalProgress(params, data) {\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var axisDimVal = data.get(cDim, dataIndex);\n var openVal = data.get(openDim, dataIndex);\n var closeVal = data.get(closeDim, dataIndex);\n var lowestVal = data.get(lowestDim, dataIndex);\n var highestVal = data.get(highestDim, dataIndex);\n var ocLow = Math.min(openVal, closeVal);\n var ocHigh = Math.max(openVal, closeVal);\n var ocLowPoint = getPoint(ocLow, axisDimVal);\n var ocHighPoint = getPoint(ocHigh, axisDimVal);\n var lowestPoint = getPoint(lowestVal, axisDimVal);\n var highestPoint = getPoint(highestVal, axisDimVal);\n var ends = [];\n addBodyEnd(ends, ocHighPoint, 0);\n addBodyEnd(ends, ocLowPoint, 1);\n ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint));\n data.setItemLayout(dataIndex, {\n sign: getSign(data, dataIndex, openVal, closeVal, closeDim),\n initBaseline: openVal > closeVal ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx],\n // open point.\n ends: ends,\n brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal)\n });\n }\n\n function getPoint(val, axisDimVal) {\n var p = [];\n p[cDimIdx] = axisDimVal;\n p[vDimIdx] = val;\n return isNaN(axisDimVal) || isNaN(val) ? [NaN, NaN] : coordSys.dataToPoint(p);\n }\n\n function addBodyEnd(ends, point, start) {\n var point1 = point.slice();\n var point2 = point.slice();\n point1[cDimIdx] = subPixelOptimize(point1[cDimIdx] + candleWidth / 2, 1, false);\n point2[cDimIdx] = subPixelOptimize(point2[cDimIdx] - candleWidth / 2, 1, true);\n start ? ends.push(point1, point2) : ends.push(point2, point1);\n }\n\n function makeBrushRect(lowestVal, highestVal, axisDimVal) {\n var pmin = getPoint(lowestVal, axisDimVal);\n var pmax = getPoint(highestVal, axisDimVal);\n pmin[cDimIdx] -= candleWidth / 2;\n pmax[cDimIdx] -= candleWidth / 2;\n return {\n x: pmin[0],\n y: pmin[1],\n width: vDimIdx ? candleWidth : pmax[0] - pmin[0],\n height: vDimIdx ? pmax[1] - pmin[1] : candleWidth\n };\n }\n\n function subPixelOptimizePoint(point) {\n point[cDimIdx] = subPixelOptimize(point[cDimIdx], 1);\n return point;\n }\n }\n\n function largeProgress(params, data) {\n // Structure: [sign, x, yhigh, ylow, sign, x, yhigh, ylow, ...]\n var points = new LargeArr(params.count * 4);\n var offset = 0;\n var point;\n var tmpIn = [];\n var tmpOut = [];\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var axisDimVal = data.get(cDim, dataIndex);\n var openVal = data.get(openDim, dataIndex);\n var closeVal = data.get(closeDim, dataIndex);\n var lowestVal = data.get(lowestDim, dataIndex);\n var highestVal = data.get(highestDim, dataIndex);\n\n if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) {\n points[offset++] = NaN;\n offset += 3;\n continue;\n }\n\n points[offset++] = getSign(data, dataIndex, openVal, closeVal, closeDim);\n tmpIn[cDimIdx] = axisDimVal;\n tmpIn[vDimIdx] = lowestVal;\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n points[offset++] = point ? point[0] : NaN;\n points[offset++] = point ? point[1] : NaN;\n tmpIn[vDimIdx] = highestVal;\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n points[offset++] = point ? point[1] : NaN;\n }\n\n data.setLayout('largePoints', points);\n }\n }\n};\n\nfunction getSign(data, dataIndex, openVal, closeVal, closeDim) {\n var sign;\n\n if (openVal > closeVal) {\n sign = -1;\n } else if (openVal < closeVal) {\n sign = 1;\n } else {\n sign = dataIndex > 0 // If close === open, compare with close of last record\n ? data.get(closeDim, dataIndex - 1) <= closeVal ? 1 : -1 : // No record of previous, set to be positive\n 1;\n }\n\n return sign;\n}\n\nfunction calculateCandleWidth(seriesModel, data) {\n var baseAxis = seriesModel.getBaseAxis();\n var extent;\n var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : (extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / data.count());\n var barMaxWidth = parsePercent(retrieve2(seriesModel.get('barMaxWidth'), bandWidth), bandWidth);\n var barMinWidth = parsePercent(retrieve2(seriesModel.get('barMinWidth'), 1), bandWidth);\n var barWidth = seriesModel.get('barWidth');\n return barWidth != null ? parsePercent(barWidth, bandWidth) // Put max outer to ensure bar visible in spite of overlap.\n : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth);\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 createRenderPlanner = require(\"../helper/createRenderPlanner\");\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 positiveBorderColorQuery = ['itemStyle', 'borderColor'];\nvar negativeBorderColorQuery = ['itemStyle', 'borderColor0'];\nvar positiveColorQuery = ['itemStyle', 'color'];\nvar negativeColorQuery = ['itemStyle', 'color0'];\nvar _default = {\n seriesType: 'candlestick',\n plan: createRenderPlanner(),\n // For legend.\n performRawSeries: true,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n data.setVisual({\n legendSymbol: 'roundRect',\n colorP: getColor(1, seriesModel),\n colorN: getColor(-1, seriesModel),\n borderColorP: getBorderColor(1, seriesModel),\n borderColorN: getBorderColor(-1, seriesModel)\n }); // Only visible series has each data be visual encoded\n\n if (ecModel.isSeriesFiltered(seriesModel)) {\n return;\n }\n\n var isLargeRender = seriesModel.pipelineContext.large;\n return !isLargeRender && {\n progress: progress\n };\n\n function progress(params, data) {\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var itemModel = data.getItemModel(dataIndex);\n var sign = data.getItemLayout(dataIndex).sign;\n data.setItemVisual(dataIndex, {\n color: getColor(sign, itemModel),\n borderColor: getBorderColor(sign, itemModel)\n });\n }\n }\n\n function getColor(sign, model) {\n return model.get(sign > 0 ? positiveColorQuery : negativeColorQuery);\n }\n\n function getBorderColor(sign, model) {\n return model.get(sign > 0 ? positiveBorderColorQuery : negativeBorderColorQuery);\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 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 _default(option) {\n if (!option || !zrUtil.isArray(option.series)) {\n return;\n } // Translate 'k' to 'candlestick'.\n\n\n zrUtil.each(option.series, function (seriesItem) {\n if (zrUtil.isObject(seriesItem) && seriesItem.type === 'k') {\n seriesItem.type = 'candlestick';\n }\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 _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphicUtil = require(\"../util/graphic\");\n\nvar _labelHelper = require(\"./helper/labelHelper\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\nvar createListFromArray = require(\"./helper/createListFromArray\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar getLayoutOnAxis = _barGrid.getLayoutOnAxis;\n\nvar DataDiffer = require(\"../data/DataDiffer\");\n\nvar SeriesModel = require(\"../model/Series\");\n\nvar Model = require(\"../model/Model\");\n\nvar ChartView = require(\"../view/Chart\");\n\nvar _createClipPathFromCoordSys = require(\"./helper/createClipPathFromCoordSys\");\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\nvar prepareCartesian2d = require(\"../coord/cartesian/prepareCustom\");\n\nvar prepareGeo = require(\"../coord/geo/prepareCustom\");\n\nvar prepareSingleAxis = require(\"../coord/single/prepareCustom\");\n\nvar preparePolar = require(\"../coord/polar/prepareCustom\");\n\nvar prepareCalendar = require(\"../coord/calendar/prepareCustom\");\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 CACHED_LABEL_STYLE_PROPERTIES = graphicUtil.CACHED_LABEL_STYLE_PROPERTIES;\nvar ITEM_STYLE_NORMAL_PATH = ['itemStyle'];\nvar ITEM_STYLE_EMPHASIS_PATH = ['emphasis', 'itemStyle'];\nvar LABEL_NORMAL = ['label'];\nvar LABEL_EMPHASIS = ['emphasis', 'label']; // Use prefix to avoid index to be the same as el.name,\n// which will cause weird udpate animation.\n\nvar GROUP_DIFF_PREFIX = 'e\\0\\0';\n/**\n * To reduce total package size of each coordinate systems, the modules `prepareCustom`\n * of each coordinate systems are not required by each coordinate systems directly, but\n * required by the module `custom`.\n *\n * prepareInfoForCustomSeries {Function}: optional\n * @return {Object} {coordSys: {...}, api: {\n * coord: function (data, clamp) {}, // return point in global.\n * size: function (dataSize, dataItem) {} // return size of each axis in coordSys.\n * }}\n */\n\nvar prepareCustoms = {\n cartesian2d: prepareCartesian2d,\n geo: prepareGeo,\n singleAxis: prepareSingleAxis,\n polar: preparePolar,\n calendar: prepareCalendar\n}; // ------\n// Model\n// ------\n\nSeriesModel.extend({\n type: 'series.custom',\n dependencies: ['grid', 'polar', 'geo', 'singleAxis', 'calendar'],\n defaultOption: {\n coordinateSystem: 'cartesian2d',\n // Can be set as 'none'\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n useTransform: true,\n // Custom series will not clip by default.\n // Some case will use custom series to draw label\n // For example https://echarts.apache.org/examples/en/editor.html?c=custom-gantt-flight\n // Only works on polar and cartesian2d coordinate system.\n clip: false // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // Polar coordinate system\n // polarIndex: 0,\n // Geo coordinate system\n // geoIndex: 0,\n // label: {}\n // itemStyle: {}\n\n },\n\n /**\n * @override\n */\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this);\n },\n\n /**\n * @override\n */\n getDataParams: function (dataIndex, dataType, el) {\n var params = SeriesModel.prototype.getDataParams.apply(this, arguments);\n el && (params.info = el.info);\n return params;\n }\n}); // -----\n// View\n// -----\n\nChartView.extend({\n type: 'custom',\n\n /**\n * @private\n * @type {module:echarts/data/List}\n */\n _data: null,\n\n /**\n * @override\n */\n render: function (customSeries, ecModel, api, payload) {\n var oldData = this._data;\n var data = customSeries.getData();\n var group = this.group;\n var renderItem = makeRenderItem(customSeries, data, ecModel, api); // By default, merge mode is applied. In most cases, custom series is\n // used in the scenario that data amount is not large but graphic elements\n // is complicated, where merge mode is probably necessary for optimization.\n // For example, reuse graphic elements and only update the transform when\n // roam or data zoom according to `actionType`.\n\n data.diff(oldData).add(function (newIdx) {\n createOrUpdate(null, newIdx, renderItem(newIdx, payload), customSeries, group, data);\n }).update(function (newIdx, oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n createOrUpdate(el, newIdx, renderItem(newIdx, payload), customSeries, group, data);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && group.remove(el);\n }).execute(); // Do clipping\n\n var clipPath = customSeries.get('clip', true) ? createClipPath(customSeries.coordinateSystem, false, customSeries) : null;\n\n if (clipPath) {\n group.setClipPath(clipPath);\n } else {\n group.removeClipPath();\n }\n\n this._data = data;\n },\n incrementalPrepareRender: function (customSeries, ecModel, api) {\n this.group.removeAll();\n this._data = null;\n },\n incrementalRender: function (params, customSeries, ecModel, api, payload) {\n var data = customSeries.getData();\n var renderItem = makeRenderItem(customSeries, data, ecModel, api);\n\n function setIncrementalAndHoverLayer(el) {\n if (!el.isGroup) {\n el.incremental = true;\n el.useHoverLayer = true;\n }\n }\n\n for (var idx = params.start; idx < params.end; idx++) {\n var el = createOrUpdate(null, idx, renderItem(idx, payload), customSeries, this.group, data);\n el.traverse(setIncrementalAndHoverLayer);\n }\n },\n\n /**\n * @override\n */\n dispose: zrUtil.noop,\n\n /**\n * @override\n */\n filterForExposedEvent: function (eventType, query, targetEl, packedEvent) {\n var elementName = query.element;\n\n if (elementName == null || targetEl.name === elementName) {\n return true;\n } // Enable to give a name on a group made by `renderItem`, and listen\n // events that triggerd by its descendents.\n\n\n while ((targetEl = targetEl.parent) && targetEl !== this.group) {\n if (targetEl.name === elementName) {\n return true;\n }\n }\n\n return false;\n }\n});\n\nfunction createEl(elOption) {\n var graphicType = elOption.type;\n var el; // Those graphic elements are not shapes. They should not be\n // overwritten by users, so do them first.\n\n if (graphicType === 'path') {\n var shape = elOption.shape; // Using pathRect brings convenience to users sacle svg path.\n\n var pathRect = shape.width != null && shape.height != null ? {\n x: shape.x || 0,\n y: shape.y || 0,\n width: shape.width,\n height: shape.height\n } : null;\n var pathData = getPathData(shape); // Path is also used for icon, so layout 'center' by default.\n\n el = graphicUtil.makePath(pathData, null, pathRect, shape.layout || 'center');\n el.__customPathData = pathData;\n } else if (graphicType === 'image') {\n el = new graphicUtil.Image({});\n el.__customImagePath = elOption.style.image;\n } else if (graphicType === 'text') {\n el = new graphicUtil.Text({});\n el.__customText = elOption.style.text;\n } else if (graphicType === 'group') {\n el = new graphicUtil.Group();\n } else if (graphicType === 'compoundPath') {\n throw new Error('\"compoundPath\" is not supported yet.');\n } else {\n var Clz = graphicUtil.getShapeClass(graphicType);\n el = new Clz();\n }\n\n el.__customGraphicType = graphicType;\n el.name = elOption.name;\n return el;\n}\n\nfunction updateEl(el, dataIndex, elOption, animatableModel, data, isInit, isRoot) {\n var transitionProps = {};\n var elOptionStyle = elOption.style || {};\n elOption.shape && (transitionProps.shape = zrUtil.clone(elOption.shape));\n elOption.position && (transitionProps.position = elOption.position.slice());\n elOption.scale && (transitionProps.scale = elOption.scale.slice());\n elOption.origin && (transitionProps.origin = elOption.origin.slice());\n elOption.rotation && (transitionProps.rotation = elOption.rotation);\n\n if (el.type === 'image' && elOption.style) {\n var targetStyle = transitionProps.style = {};\n zrUtil.each(['x', 'y', 'width', 'height'], function (prop) {\n prepareStyleTransition(prop, targetStyle, elOptionStyle, el.style, isInit);\n });\n }\n\n if (el.type === 'text' && elOption.style) {\n var targetStyle = transitionProps.style = {};\n zrUtil.each(['x', 'y'], function (prop) {\n prepareStyleTransition(prop, targetStyle, elOptionStyle, el.style, isInit);\n }); // Compatible with previous: both support\n // textFill and fill, textStroke and stroke in 'text' element.\n\n !elOptionStyle.hasOwnProperty('textFill') && elOptionStyle.fill && (elOptionStyle.textFill = elOptionStyle.fill);\n !elOptionStyle.hasOwnProperty('textStroke') && elOptionStyle.stroke && (elOptionStyle.textStroke = elOptionStyle.stroke);\n }\n\n if (el.type !== 'group') {\n el.useStyle(elOptionStyle); // Init animation.\n\n if (isInit) {\n el.style.opacity = 0;\n var targetOpacity = elOptionStyle.opacity;\n targetOpacity == null && (targetOpacity = 1);\n graphicUtil.initProps(el, {\n style: {\n opacity: targetOpacity\n }\n }, animatableModel, dataIndex);\n }\n }\n\n if (isInit) {\n el.attr(transitionProps);\n } else {\n graphicUtil.updateProps(el, transitionProps, animatableModel, dataIndex);\n } // Merge by default.\n // z2 must not be null/undefined, otherwise sort error may occur.\n\n\n elOption.hasOwnProperty('z2') && el.attr('z2', elOption.z2 || 0);\n elOption.hasOwnProperty('silent') && el.attr('silent', elOption.silent);\n elOption.hasOwnProperty('invisible') && el.attr('invisible', elOption.invisible);\n elOption.hasOwnProperty('ignore') && el.attr('ignore', elOption.ignore); // `elOption.info` enables user to mount some info on\n // elements and use them in event handlers.\n // Update them only when user specified, otherwise, remain.\n\n elOption.hasOwnProperty('info') && el.attr('info', elOption.info); // If `elOption.styleEmphasis` is `false`, remove hover style. The\n // logic is ensured by `graphicUtil.setElementHoverStyle`.\n\n var styleEmphasis = elOption.styleEmphasis; // hoverStyle should always be set here, because if the hover style\n // may already be changed, where the inner cache should be reset.\n\n graphicUtil.setElementHoverStyle(el, styleEmphasis);\n\n if (isRoot) {\n graphicUtil.setAsHighDownDispatcher(el, styleEmphasis !== false);\n }\n}\n\nfunction prepareStyleTransition(prop, targetStyle, elOptionStyle, oldElStyle, isInit) {\n if (elOptionStyle[prop] != null && !isInit) {\n targetStyle[prop] = elOptionStyle[prop];\n elOptionStyle[prop] = oldElStyle[prop];\n }\n}\n\nfunction makeRenderItem(customSeries, data, ecModel, api) {\n var renderItem = customSeries.get('renderItem');\n var coordSys = customSeries.coordinateSystem;\n var prepareResult = {};\n\n if (coordSys) {\n prepareResult = coordSys.prepareCustoms ? coordSys.prepareCustoms() : prepareCustoms[coordSys.type](coordSys);\n }\n\n var userAPI = zrUtil.defaults({\n getWidth: api.getWidth,\n getHeight: api.getHeight,\n getZr: api.getZr,\n getDevicePixelRatio: api.getDevicePixelRatio,\n value: value,\n style: style,\n styleEmphasis: styleEmphasis,\n visual: visual,\n barLayout: barLayout,\n currentSeriesIndices: currentSeriesIndices,\n font: font\n }, prepareResult.api || {});\n var userParams = {\n // The life cycle of context: current round of rendering.\n // The global life cycle is probably not necessary, because\n // user can store global status by themselves.\n context: {},\n seriesId: customSeries.id,\n seriesName: customSeries.name,\n seriesIndex: customSeries.seriesIndex,\n coordSys: prepareResult.coordSys,\n dataInsideLength: data.count(),\n encode: wrapEncodeDef(customSeries.getData())\n }; // Do not support call `api` asynchronously without dataIndexInside input.\n\n var currDataIndexInside;\n var currDirty = true;\n var currItemModel;\n var currLabelNormalModel;\n var currLabelEmphasisModel;\n var currVisualColor;\n return function (dataIndexInside, payload) {\n currDataIndexInside = dataIndexInside;\n currDirty = true;\n return renderItem && renderItem(zrUtil.defaults({\n dataIndexInside: dataIndexInside,\n dataIndex: data.getRawIndex(dataIndexInside),\n // Can be used for optimization when zoom or roam.\n actionType: payload ? payload.type : null\n }, userParams), userAPI);\n }; // Do not update cache until api called.\n\n function updateCache(dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n\n if (currDirty) {\n currItemModel = data.getItemModel(dataIndexInside);\n currLabelNormalModel = currItemModel.getModel(LABEL_NORMAL);\n currLabelEmphasisModel = currItemModel.getModel(LABEL_EMPHASIS);\n currVisualColor = data.getItemVisual(dataIndexInside, 'color');\n currDirty = false;\n }\n }\n /**\n * @public\n * @param {number|string} dim\n * @param {number} [dataIndexInside=currDataIndexInside]\n * @return {number|string} value\n */\n\n\n function value(dim, dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n return data.get(data.getDimension(dim || 0), dataIndexInside);\n }\n /**\n * By default, `visual` is applied to style (to support visualMap).\n * `visual.color` is applied at `fill`. If user want apply visual.color on `stroke`,\n * it can be implemented as:\n * `api.style({stroke: api.visual('color'), fill: null})`;\n * @public\n * @param {Object} [extra]\n * @param {number} [dataIndexInside=currDataIndexInside]\n */\n\n\n function style(extra, dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n updateCache(dataIndexInside);\n var itemStyle = currItemModel.getModel(ITEM_STYLE_NORMAL_PATH).getItemStyle();\n currVisualColor != null && (itemStyle.fill = currVisualColor);\n var opacity = data.getItemVisual(dataIndexInside, 'opacity');\n opacity != null && (itemStyle.opacity = opacity);\n var labelModel = extra ? applyExtraBefore(extra, currLabelNormalModel) : currLabelNormalModel;\n graphicUtil.setTextStyle(itemStyle, labelModel, null, {\n autoColor: currVisualColor,\n isRectText: true\n });\n itemStyle.text = labelModel.getShallow('show') ? zrUtil.retrieve2(customSeries.getFormattedLabel(dataIndexInside, 'normal'), getDefaultLabel(data, dataIndexInside)) : null;\n extra && applyExtraAfter(itemStyle, extra);\n return itemStyle;\n }\n /**\n * @public\n * @param {Object} [extra]\n * @param {number} [dataIndexInside=currDataIndexInside]\n */\n\n\n function styleEmphasis(extra, dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n updateCache(dataIndexInside);\n var itemStyle = currItemModel.getModel(ITEM_STYLE_EMPHASIS_PATH).getItemStyle();\n var labelModel = extra ? applyExtraBefore(extra, currLabelEmphasisModel) : currLabelEmphasisModel;\n graphicUtil.setTextStyle(itemStyle, labelModel, null, {\n isRectText: true\n }, true);\n itemStyle.text = labelModel.getShallow('show') ? zrUtil.retrieve3(customSeries.getFormattedLabel(dataIndexInside, 'emphasis'), customSeries.getFormattedLabel(dataIndexInside, 'normal'), getDefaultLabel(data, dataIndexInside)) : null;\n extra && applyExtraAfter(itemStyle, extra);\n return itemStyle;\n }\n /**\n * @public\n * @param {string} visualType\n * @param {number} [dataIndexInside=currDataIndexInside]\n */\n\n\n function visual(visualType, dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n return data.getItemVisual(dataIndexInside, visualType);\n }\n /**\n * @public\n * @param {number} opt.count Positive interger.\n * @param {number} [opt.barWidth]\n * @param {number} [opt.barMaxWidth]\n * @param {number} [opt.barMinWidth]\n * @param {number} [opt.barGap]\n * @param {number} [opt.barCategoryGap]\n * @return {Object} {width, offset, offsetCenter} is not support, return undefined.\n */\n\n\n function barLayout(opt) {\n if (coordSys.getBaseAxis) {\n var baseAxis = coordSys.getBaseAxis();\n return getLayoutOnAxis(zrUtil.defaults({\n axis: baseAxis\n }, opt), api);\n }\n }\n /**\n * @public\n * @return {Array.}\n */\n\n\n function currentSeriesIndices() {\n return ecModel.getCurrentSeriesIndices();\n }\n /**\n * @public\n * @param {Object} opt\n * @param {string} [opt.fontStyle]\n * @param {number} [opt.fontWeight]\n * @param {number} [opt.fontSize]\n * @param {string} [opt.fontFamily]\n * @return {string} font string\n */\n\n\n function font(opt) {\n return graphicUtil.getFont(opt, ecModel);\n }\n}\n\nfunction wrapEncodeDef(data) {\n var encodeDef = {};\n zrUtil.each(data.dimensions, function (dimName, dataDimIndex) {\n var dimInfo = data.getDimensionInfo(dimName);\n\n if (!dimInfo.isExtraCoord) {\n var coordDim = dimInfo.coordDim;\n var dataDims = encodeDef[coordDim] = encodeDef[coordDim] || [];\n dataDims[dimInfo.coordDimIndex] = dataDimIndex;\n }\n });\n return encodeDef;\n}\n\nfunction createOrUpdate(el, dataIndex, elOption, animatableModel, group, data) {\n el = doCreateOrUpdate(el, dataIndex, elOption, animatableModel, group, data, true);\n el && data.setItemGraphicEl(dataIndex, el);\n return el;\n}\n\nfunction doCreateOrUpdate(el, dataIndex, elOption, animatableModel, group, data, isRoot) {\n // [Rule]\n // By default, follow merge mode.\n // (It probably brings benifit for performance in some cases of large data, where\n // user program can be optimized to that only updated props needed to be re-calculated,\n // or according to `actionType` some calculation can be skipped.)\n // If `renderItem` returns `null`/`undefined`/`false`, remove the previous el if existing.\n // (It seems that violate the \"merge\" principle, but most of users probably intuitively\n // regard \"return;\" as \"show nothing element whatever\", so make a exception to meet the\n // most cases.)\n var simplyRemove = !elOption; // `null`/`undefined`/`false`\n\n elOption = elOption || {};\n var elOptionType = elOption.type;\n var elOptionShape = elOption.shape;\n var elOptionStyle = elOption.style;\n\n if (el && (simplyRemove // || elOption.$merge === false\n // If `elOptionType` is `null`, follow the merge principle.\n || elOptionType != null && elOptionType !== el.__customGraphicType || elOptionType === 'path' && hasOwnPathData(elOptionShape) && getPathData(elOptionShape) !== el.__customPathData || elOptionType === 'image' && hasOwn(elOptionStyle, 'image') && elOptionStyle.image !== el.__customImagePath // FIXME test and remove this restriction?\n || elOptionType === 'text' && hasOwn(elOptionShape, 'text') && elOptionStyle.text !== el.__customText)) {\n group.remove(el);\n el = null;\n } // `elOption.type` is undefined when `renderItem` returns nothing.\n\n\n if (simplyRemove) {\n return;\n }\n\n var isInit = !el;\n !el && (el = createEl(elOption));\n updateEl(el, dataIndex, elOption, animatableModel, data, isInit, isRoot);\n\n if (elOptionType === 'group') {\n mergeChildren(el, dataIndex, elOption, animatableModel, data);\n } // Always add whatever already added to ensure sequence.\n\n\n group.add(el);\n return el;\n} // Usage:\n// (1) By default, `elOption.$mergeChildren` is `'byIndex'`, which indicates that\n// the existing children will not be removed, and enables the feature that\n// update some of the props of some of the children simply by construct\n// the returned children of `renderItem` like:\n// `var children = group.children = []; children[3] = {opacity: 0.5};`\n// (2) If `elOption.$mergeChildren` is `'byName'`, add/update/remove children\n// by child.name. But that might be lower performance.\n// (3) If `elOption.$mergeChildren` is `false`, the existing children will be\n// replaced totally.\n// (4) If `!elOption.children`, following the \"merge\" principle, nothing will happen.\n//\n// For implementation simpleness, do not provide a direct way to remove sinlge\n// child (otherwise the total indicies of the children array have to be modified).\n// User can remove a single child by set its `ignore` as `true` or replace\n// it by another element, where its `$merge` can be set as `true` if necessary.\n\n\nfunction mergeChildren(el, dataIndex, elOption, animatableModel, data) {\n var newChildren = elOption.children;\n var newLen = newChildren ? newChildren.length : 0;\n var mergeChildren = elOption.$mergeChildren; // `diffChildrenByName` has been deprecated.\n\n var byName = mergeChildren === 'byName' || elOption.diffChildrenByName;\n var notMerge = mergeChildren === false; // For better performance on roam update, only enter if necessary.\n\n if (!newLen && !byName && !notMerge) {\n return;\n }\n\n if (byName) {\n diffGroupChildren({\n oldChildren: el.children() || [],\n newChildren: newChildren || [],\n dataIndex: dataIndex,\n animatableModel: animatableModel,\n group: el,\n data: data\n });\n return;\n }\n\n notMerge && el.removeAll(); // Mapping children of a group simply by index, which\n // might be better performance.\n\n var index = 0;\n\n for (; index < newLen; index++) {\n newChildren[index] && doCreateOrUpdate(el.childAt(index), dataIndex, newChildren[index], animatableModel, el, data);\n }\n}\n\nfunction diffGroupChildren(context) {\n new DataDiffer(context.oldChildren, context.newChildren, getKey, getKey, context).add(processAddUpdate).update(processAddUpdate).remove(processRemove).execute();\n}\n\nfunction getKey(item, idx) {\n var name = item && item.name;\n return name != null ? name : GROUP_DIFF_PREFIX + idx;\n}\n\nfunction processAddUpdate(newIndex, oldIndex) {\n var context = this.context;\n var childOption = newIndex != null ? context.newChildren[newIndex] : null;\n var child = oldIndex != null ? context.oldChildren[oldIndex] : null;\n doCreateOrUpdate(child, context.dataIndex, childOption, context.animatableModel, context.group, context.data);\n} // `graphic#applyDefaultTextStyle` will cache\n// textFill, textStroke, textStrokeWidth.\n// We have to do this trick.\n\n\nfunction applyExtraBefore(extra, model) {\n var dummyModel = new Model({}, model);\n zrUtil.each(CACHED_LABEL_STYLE_PROPERTIES, function (stylePropName, modelPropName) {\n if (extra.hasOwnProperty(stylePropName)) {\n dummyModel.option[modelPropName] = extra[stylePropName];\n }\n });\n return dummyModel;\n}\n\nfunction applyExtraAfter(itemStyle, extra) {\n for (var key in extra) {\n if (extra.hasOwnProperty(key) || !CACHED_LABEL_STYLE_PROPERTIES.hasOwnProperty(key)) {\n itemStyle[key] = extra[key];\n }\n }\n}\n\nfunction processRemove(oldIndex) {\n var context = this.context;\n var child = context.oldChildren[oldIndex];\n child && context.group.remove(child);\n}\n\nfunction getPathData(shape) {\n // \"d\" follows the SVG convention.\n return shape && (shape.pathData || shape.d);\n}\n\nfunction hasOwnPathData(shape) {\n return shape && (shape.hasOwnProperty('pathData') || shape.hasOwnProperty('d'));\n}\n\nfunction hasOwn(host, prop) {\n return host && host.hasOwnProperty(prop);\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\nvar echarts = require(\"../echarts\");\n\nrequire(\"./effectScatter/EffectScatterSeries\");\n\nrequire(\"./effectScatter/EffectScatterView\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar layoutPoints = require(\"../layout/points\");\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*/\necharts.registerVisual(visualSymbol('effectScatter', 'circle'));\necharts.registerLayout(layoutPoints('effectScatter'));","\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 createListFromArray = require(\"../helper/createListFromArray\");\n\nvar SeriesModel = require(\"../../model/Series\");\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 _default = SeriesModel.extend({\n type: 'series.effectScatter',\n dependencies: ['grid', 'polar'],\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n brushSelector: 'point',\n defaultOption: {\n coordinateSystem: 'cartesian2d',\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n effectType: 'ripple',\n progressive: 0,\n // When to show the effect, option: 'render'|'emphasis'\n showEffectOn: 'render',\n // Ripple effect config\n rippleEffect: {\n period: 4,\n // Scale of ripple\n scale: 2.5,\n // Brush type can be fill or stroke\n brushType: 'fill'\n },\n // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // Polar coordinate system\n // polarIndex: 0,\n // Geo coordinate system\n // geoIndex: 0,\n // symbol: null, // 图形类型\n symbolSize: 10 // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2\n // symbolRotate: null, // 图形旋转控制\n // large: false,\n // Available when large is true\n // largeThreshold: 2000,\n // itemStyle: {\n // opacity: 1\n // }\n\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\nvar SymbolDraw = require(\"../helper/SymbolDraw\");\n\nvar EffectSymbol = require(\"../helper/EffectSymbol\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar pointsLayout = require(\"../../layout/points\");\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 _default = echarts.extendChartView({\n type: 'effectScatter',\n init: function () {\n this._symbolDraw = new SymbolDraw(EffectSymbol);\n },\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var effectSymbolDraw = this._symbolDraw;\n effectSymbolDraw.updateData(data);\n this.group.add(effectSymbolDraw.group);\n },\n updateTransform: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n this.group.dirty();\n var res = pointsLayout().reset(seriesModel);\n\n if (res.progress) {\n res.progress({\n start: 0,\n end: data.count()\n }, data);\n }\n\n this._symbolDraw.updateLayout(data);\n },\n _updateGroupTransform: function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.getRoamTransform) {\n this.group.transform = matrix.clone(coordSys.getRoamTransform());\n this.group.decomposeTransform();\n }\n },\n remove: function (ecModel, api) {\n this._symbolDraw && this._symbolDraw.remove(api);\n },\n dispose: function () {}\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\nrequire(\"./funnel/FunnelSeries\");\n\nrequire(\"./funnel/FunnelView\");\n\nvar dataColor = require(\"../visual/dataColor\");\n\nvar funnelLayout = require(\"./funnel/funnelLayout\");\n\nvar dataFilter = require(\"../processor/dataFilter\");\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*/\necharts.registerVisual(dataColor('funnel'));\necharts.registerLayout(funnelLayout);\necharts.registerProcessor(dataFilter('funnel'));","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar createListSimply = require(\"../helper/createListSimply\");\n\nvar _model = require(\"../../util/model\");\n\nvar defaultEmphasis = _model.defaultEmphasis;\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForNameBased = _sourceHelper.makeSeriesEncodeForNameBased;\n\nvar LegendVisualProvider = require(\"../../visual/LegendVisualProvider\");\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 FunnelSeries = echarts.extendSeriesModel({\n type: 'series.funnel',\n init: function (option) {\n FunnelSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item\n // Use a function instead of direct access because data reference may changed\n\n this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this)); // Extend labelLine emphasis\n\n this._defaultLabelLine(option);\n },\n getInitialData: function (option, ecModel) {\n return createListSimply(this, {\n coordDimensions: ['value'],\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n });\n },\n _defaultLabelLine: function (option) {\n // Extend labelLine emphasis\n defaultEmphasis(option, 'labelLine', ['show']);\n var labelLineNormalOpt = option.labelLine;\n var labelLineEmphasisOpt = option.emphasis.labelLine; // Not show label line if `label.normal.show = false`\n\n labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;\n labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;\n },\n // Overwrite\n getDataParams: function (dataIndex) {\n var data = this.getData();\n var params = FunnelSeries.superCall(this, 'getDataParams', dataIndex);\n var valueDim = data.mapDimension('value');\n var sum = data.getSum(valueDim); // Percent is 0 if sum is 0\n\n params.percent = !sum ? 0 : +(data.get(valueDim, dataIndex) / sum * 100).toFixed(2);\n params.$vars.push('percent');\n return params;\n },\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n legendHoverLink: true,\n left: 80,\n top: 60,\n right: 80,\n bottom: 60,\n // width: {totalWidth} - left - right,\n // height: {totalHeight} - top - bottom,\n // 默认取数据最小最大值\n // min: 0,\n // max: 100,\n minSize: '0%',\n maxSize: '100%',\n sort: 'descending',\n // 'ascending', 'descending'\n orient: 'vertical',\n gap: 0,\n funnelAlign: 'center',\n label: {\n show: true,\n position: 'outer' // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调\n\n },\n labelLine: {\n show: true,\n length: 20,\n lineStyle: {\n // color: 各异,\n width: 1,\n type: 'solid'\n }\n },\n itemStyle: {\n // color: 各异,\n borderColor: '#fff',\n borderWidth: 1\n },\n emphasis: {\n label: {\n show: true\n }\n }\n }\n});\nvar _default = FunnelSeries;\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\nvar ChartView = require(\"../../view/Chart\");\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 * Piece of pie including Sector, Label, LabelLine\n * @constructor\n * @extends {module:zrender/graphic/Group}\n */\nfunction FunnelPiece(data, idx) {\n graphic.Group.call(this);\n var polygon = new graphic.Polygon();\n var labelLine = new graphic.Polyline();\n var text = new graphic.Text();\n this.add(polygon);\n this.add(labelLine);\n this.add(text);\n\n this.highDownOnUpdate = function (fromState, toState) {\n if (toState === 'emphasis') {\n labelLine.ignore = labelLine.hoverIgnore;\n text.ignore = text.hoverIgnore;\n } else {\n labelLine.ignore = labelLine.normalIgnore;\n text.ignore = text.normalIgnore;\n }\n };\n\n this.updateData(data, idx, true);\n}\n\nvar funnelPieceProto = FunnelPiece.prototype;\nvar opacityAccessPath = ['itemStyle', 'opacity'];\n\nfunnelPieceProto.updateData = function (data, idx, firstCreate) {\n var polygon = this.childAt(0);\n var seriesModel = data.hostModel;\n var itemModel = data.getItemModel(idx);\n var layout = data.getItemLayout(idx);\n var opacity = data.getItemModel(idx).get(opacityAccessPath);\n opacity = opacity == null ? 1 : opacity; // Reset style\n\n polygon.useStyle({});\n\n if (firstCreate) {\n polygon.setShape({\n points: layout.points\n });\n polygon.setStyle({\n opacity: 0\n });\n graphic.initProps(polygon, {\n style: {\n opacity: opacity\n }\n }, seriesModel, idx);\n } else {\n graphic.updateProps(polygon, {\n style: {\n opacity: opacity\n },\n shape: {\n points: layout.points\n }\n }, seriesModel, idx);\n } // Update common style\n\n\n var itemStyleModel = itemModel.getModel('itemStyle');\n var visualColor = data.getItemVisual(idx, 'color');\n polygon.setStyle(zrUtil.defaults({\n lineJoin: 'round',\n fill: visualColor\n }, itemStyleModel.getItemStyle(['opacity'])));\n polygon.hoverStyle = itemStyleModel.getModel('emphasis').getItemStyle();\n\n this._updateLabel(data, idx);\n\n graphic.setHoverStyle(this);\n};\n\nfunnelPieceProto._updateLabel = function (data, idx) {\n var labelLine = this.childAt(1);\n var labelText = this.childAt(2);\n var seriesModel = data.hostModel;\n var itemModel = data.getItemModel(idx);\n var layout = data.getItemLayout(idx);\n var labelLayout = layout.label;\n var visualColor = data.getItemVisual(idx, 'color');\n graphic.updateProps(labelLine, {\n shape: {\n points: labelLayout.linePoints || labelLayout.linePoints\n }\n }, seriesModel, idx);\n graphic.updateProps(labelText, {\n style: {\n x: labelLayout.x,\n y: labelLayout.y\n }\n }, seriesModel, idx);\n labelText.attr({\n rotation: labelLayout.rotation,\n origin: [labelLayout.x, labelLayout.y],\n z2: 10\n });\n var labelModel = itemModel.getModel('label');\n var labelHoverModel = itemModel.getModel('emphasis.label');\n var labelLineModel = itemModel.getModel('labelLine');\n var labelLineHoverModel = itemModel.getModel('emphasis.labelLine');\n var visualColor = data.getItemVisual(idx, 'color');\n graphic.setLabelStyle(labelText.style, labelText.hoverStyle = {}, labelModel, labelHoverModel, {\n labelFetcher: data.hostModel,\n labelDataIndex: idx,\n defaultText: data.getName(idx),\n autoColor: visualColor,\n useInsideStyle: !!labelLayout.inside\n }, {\n textAlign: labelLayout.textAlign,\n textVerticalAlign: labelLayout.verticalAlign\n });\n labelText.ignore = labelText.normalIgnore = !labelModel.get('show');\n labelText.hoverIgnore = !labelHoverModel.get('show');\n labelLine.ignore = labelLine.normalIgnore = !labelLineModel.get('show');\n labelLine.hoverIgnore = !labelLineHoverModel.get('show'); // Default use item visual color\n\n labelLine.setStyle({\n stroke: visualColor\n });\n labelLine.setStyle(labelLineModel.getModel('lineStyle').getLineStyle());\n labelLine.hoverStyle = labelLineHoverModel.getModel('lineStyle').getLineStyle();\n};\n\nzrUtil.inherits(FunnelPiece, graphic.Group);\nvar FunnelView = ChartView.extend({\n type: 'funnel',\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var oldData = this._data;\n var group = this.group;\n data.diff(oldData).add(function (idx) {\n var funnelPiece = new FunnelPiece(data, idx);\n data.setItemGraphicEl(idx, funnelPiece);\n group.add(funnelPiece);\n }).update(function (newIdx, oldIdx) {\n var piePiece = oldData.getItemGraphicEl(oldIdx);\n piePiece.updateData(data, newIdx);\n group.add(piePiece);\n data.setItemGraphicEl(newIdx, piePiece);\n }).remove(function (idx) {\n var piePiece = oldData.getItemGraphicEl(idx);\n group.remove(piePiece);\n }).execute();\n this._data = data;\n },\n remove: function () {\n this.group.removeAll();\n this._data = null;\n },\n dispose: function () {}\n});\nvar _default = FunnelView;\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar layout = require(\"../../util/layout\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\nvar linearMap = _number.linearMap;\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 getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n\nfunction getSortedIndices(data, sort) {\n var valueDim = data.mapDimension('value');\n var valueArr = data.mapArray(valueDim, function (val) {\n return val;\n });\n var indices = [];\n var isAscending = sort === 'ascending';\n\n for (var i = 0, len = data.count(); i < len; i++) {\n indices[i] = i;\n } // Add custom sortable function & none sortable opetion by \"options.sort\"\n\n\n if (typeof sort === 'function') {\n indices.sort(sort);\n } else if (sort !== 'none') {\n indices.sort(function (a, b) {\n return isAscending ? valueArr[a] - valueArr[b] : valueArr[b] - valueArr[a];\n });\n }\n\n return indices;\n}\n\nfunction labelLayout(data) {\n data.each(function (idx) {\n var itemModel = data.getItemModel(idx);\n var labelModel = itemModel.getModel('label');\n var labelPosition = labelModel.get('position');\n var orient = itemModel.get('orient');\n var labelLineModel = itemModel.getModel('labelLine');\n var layout = data.getItemLayout(idx);\n var points = layout.points;\n var isLabelInside = labelPosition === 'inner' || labelPosition === 'inside' || labelPosition === 'center' || labelPosition === 'insideLeft' || labelPosition === 'insideRight';\n var textAlign;\n var textX;\n var textY;\n var linePoints;\n\n if (isLabelInside) {\n if (labelPosition === 'insideLeft') {\n textX = (points[0][0] + points[3][0]) / 2 + 5;\n textY = (points[0][1] + points[3][1]) / 2;\n textAlign = 'left';\n } else if (labelPosition === 'insideRight') {\n textX = (points[1][0] + points[2][0]) / 2 - 5;\n textY = (points[1][1] + points[2][1]) / 2;\n textAlign = 'right';\n } else {\n textX = (points[0][0] + points[1][0] + points[2][0] + points[3][0]) / 4;\n textY = (points[0][1] + points[1][1] + points[2][1] + points[3][1]) / 4;\n textAlign = 'center';\n }\n\n linePoints = [[textX, textY], [textX, textY]];\n } else {\n var x1;\n var y1;\n var x2;\n var y2;\n var labelLineLen = labelLineModel.get('length');\n\n if (labelPosition === 'left') {\n // Left side\n x1 = (points[3][0] + points[0][0]) / 2;\n y1 = (points[3][1] + points[0][1]) / 2;\n x2 = x1 - labelLineLen;\n textX = x2 - 5;\n textAlign = 'right';\n } else if (labelPosition === 'right') {\n // Right side\n x1 = (points[1][0] + points[2][0]) / 2;\n y1 = (points[1][1] + points[2][1]) / 2;\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'left';\n } else if (labelPosition === 'top') {\n // Top side\n x1 = (points[3][0] + points[0][0]) / 2;\n y1 = (points[3][1] + points[0][1]) / 2;\n y2 = y1 - labelLineLen;\n textY = y2 - 5;\n textAlign = 'center';\n } else if (labelPosition === 'bottom') {\n // Bottom side\n x1 = (points[1][0] + points[2][0]) / 2;\n y1 = (points[1][1] + points[2][1]) / 2;\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else if (labelPosition === 'rightTop') {\n // RightTop side\n x1 = orient === 'horizontal' ? points[3][0] : points[1][0];\n y1 = orient === 'horizontal' ? points[3][1] : points[1][1];\n\n if (orient === 'horizontal') {\n y2 = y1 - labelLineLen;\n textY = y2 - 5;\n textAlign = 'center';\n } else {\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'top';\n }\n } else if (labelPosition === 'rightBottom') {\n // RightBottom side\n x1 = points[2][0];\n y1 = points[2][1];\n\n if (orient === 'horizontal') {\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else {\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'bottom';\n }\n } else if (labelPosition === 'leftTop') {\n // LeftTop side\n x1 = points[0][0];\n y1 = orient === 'horizontal' ? points[0][1] : points[1][1];\n\n if (orient === 'horizontal') {\n y2 = y1 - labelLineLen;\n textY = y2 - 5;\n textAlign = 'center';\n } else {\n x2 = x1 - labelLineLen;\n textX = x2 - 5;\n textAlign = 'right';\n }\n } else if (labelPosition === 'leftBottom') {\n // LeftBottom side\n x1 = orient === 'horizontal' ? points[1][0] : points[3][0];\n y1 = orient === 'horizontal' ? points[1][1] : points[2][1];\n\n if (orient === 'horizontal') {\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else {\n x2 = x1 - labelLineLen;\n textX = x2 - 5;\n textAlign = 'right';\n }\n } else {\n // Right side or Bottom side\n x1 = (points[1][0] + points[2][0]) / 2;\n y1 = (points[1][1] + points[2][1]) / 2;\n\n if (orient === 'horizontal') {\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else {\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'left';\n }\n }\n\n if (orient === 'horizontal') {\n x2 = x1;\n textX = x2;\n } else {\n y2 = y1;\n textY = y2;\n }\n\n linePoints = [[x1, y1], [x2, y2]];\n }\n\n layout.label = {\n linePoints: linePoints,\n x: textX,\n y: textY,\n verticalAlign: 'middle',\n textAlign: textAlign,\n inside: isLabelInside\n };\n });\n}\n\nfunction _default(ecModel, api, payload) {\n ecModel.eachSeriesByType('funnel', function (seriesModel) {\n var data = seriesModel.getData();\n var valueDim = data.mapDimension('value');\n var sort = seriesModel.get('sort');\n var viewRect = getViewRect(seriesModel, api);\n var indices = getSortedIndices(data, sort);\n var orient = seriesModel.get('orient');\n var viewWidth = viewRect.width;\n var viewHeight = viewRect.height;\n var x = viewRect.x;\n var y = viewRect.y;\n var sizeExtent = orient === 'horizontal' ? [parsePercent(seriesModel.get('minSize'), viewHeight), parsePercent(seriesModel.get('maxSize'), viewHeight)] : [parsePercent(seriesModel.get('minSize'), viewWidth), parsePercent(seriesModel.get('maxSize'), viewWidth)];\n var dataExtent = data.getDataExtent(valueDim);\n var min = seriesModel.get('min');\n var max = seriesModel.get('max');\n\n if (min == null) {\n min = Math.min(dataExtent[0], 0);\n }\n\n if (max == null) {\n max = dataExtent[1];\n }\n\n var funnelAlign = seriesModel.get('funnelAlign');\n var gap = seriesModel.get('gap');\n var viewSize = orient === 'horizontal' ? viewWidth : viewHeight;\n var itemSize = (viewSize - gap * (data.count() - 1)) / data.count();\n\n var getLinePoints = function (idx, offset) {\n // End point index is data.count() and we assign it 0\n if (orient === 'horizontal') {\n var val = data.get(valueDim, idx) || 0;\n var itemHeight = linearMap(val, [min, max], sizeExtent, true);\n var y0;\n\n switch (funnelAlign) {\n case 'top':\n y0 = y;\n break;\n\n case 'center':\n y0 = y + (viewHeight - itemHeight) / 2;\n break;\n\n case 'bottom':\n y0 = y + (viewHeight - itemHeight);\n break;\n }\n\n return [[offset, y0], [offset, y0 + itemHeight]];\n }\n\n var val = data.get(valueDim, idx) || 0;\n var itemWidth = linearMap(val, [min, max], sizeExtent, true);\n var x0;\n\n switch (funnelAlign) {\n case 'left':\n x0 = x;\n break;\n\n case 'center':\n x0 = x + (viewWidth - itemWidth) / 2;\n break;\n\n case 'right':\n x0 = x + viewWidth - itemWidth;\n break;\n }\n\n return [[x0, offset], [x0 + itemWidth, offset]];\n };\n\n if (sort === 'ascending') {\n // From bottom to top\n itemSize = -itemSize;\n gap = -gap;\n\n if (orient === 'horizontal') {\n x += viewWidth;\n } else {\n y += viewHeight;\n }\n\n indices = indices.reverse();\n }\n\n for (var i = 0; i < indices.length; i++) {\n var idx = indices[i];\n var nextIdx = indices[i + 1];\n var itemModel = data.getItemModel(idx);\n\n if (orient === 'horizontal') {\n var width = itemModel.get('itemStyle.width');\n\n if (width == null) {\n width = itemSize;\n } else {\n width = parsePercent(width, viewWidth);\n\n if (sort === 'ascending') {\n width = -width;\n }\n }\n\n var start = getLinePoints(idx, x);\n var end = getLinePoints(nextIdx, x + width);\n x += width + gap;\n data.setItemLayout(idx, {\n points: start.concat(end.slice().reverse())\n });\n } else {\n var height = itemModel.get('itemStyle.height');\n\n if (height == null) {\n height = itemSize;\n } else {\n height = parsePercent(height, viewHeight);\n\n if (sort === 'ascending') {\n height = -height;\n }\n }\n\n var start = orient === 'horizontal' ? getLinePoints(idx, x) : getLinePoints(idx, y);\n var end = orient === 'horizontal' ? getLinePoints(nextIdx, x + width) : getLinePoints(nextIdx, y + height);\n y += height + gap;\n data.setItemLayout(idx, {\n points: start.concat(end.slice().reverse())\n });\n }\n }\n\n labelLayout(data);\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\nrequire(\"./gauge/GaugeSeries\");\n\nrequire(\"./gauge/GaugeView\");","\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 SeriesModel = require(\"../../model/Series\");\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 GaugeSeries = SeriesModel.extend({\n type: 'series.gauge',\n getInitialData: function (option, ecModel) {\n return createListSimply(this, ['value']);\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n // 默认全局居中\n center: ['50%', '50%'],\n legendHoverLink: true,\n radius: '75%',\n startAngle: 225,\n endAngle: -45,\n clockwise: true,\n // 最小值\n min: 0,\n // 最大值\n max: 100,\n // 分割段数,默认为10\n splitNumber: 10,\n // 坐标轴线\n axisLine: {\n // 默认显示,属性show控制显示与否\n show: true,\n lineStyle: {\n // 属性lineStyle控制线条样式\n color: [[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']],\n width: 30\n }\n },\n // 分隔线\n splitLine: {\n // 默认显示,属性show控制显示与否\n show: true,\n // 属性length控制线长\n length: 30,\n // 属性lineStyle(详见lineStyle)控制线条样式\n lineStyle: {\n color: '#eee',\n width: 2,\n type: 'solid'\n }\n },\n // 坐标轴小标记\n axisTick: {\n // 属性show控制显示与否,默认不显示\n show: true,\n // 每份split细分多少段\n splitNumber: 5,\n // 属性length控制线长\n length: 8,\n // 属性lineStyle控制线条样式\n lineStyle: {\n color: '#eee',\n width: 1,\n type: 'solid'\n }\n },\n axisLabel: {\n show: true,\n distance: 5,\n // formatter: null,\n color: 'auto'\n },\n pointer: {\n show: true,\n length: '80%',\n width: 8\n },\n itemStyle: {\n color: 'auto'\n },\n title: {\n show: true,\n // x, y,单位px\n offsetCenter: [0, '-40%'],\n // 其余属性默认使用全局文本样式,详见TEXTSTYLE\n color: '#333',\n fontSize: 15\n },\n detail: {\n show: true,\n backgroundColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n borderColor: '#ccc',\n width: 100,\n height: null,\n // self-adaption\n padding: [5, 10],\n // x, y,单位px\n offsetCenter: [0, '40%'],\n // formatter: null,\n // 其余属性默认使用全局文本样式,详见TEXTSTYLE\n color: 'auto',\n fontSize: 30\n }\n }\n});\nvar _default = GaugeSeries;\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 PointerPath = require(\"./PointerPath\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar ChartView = require(\"../../view/Chart\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\nvar round = _number.round;\nvar linearMap = _number.linearMap;\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 parsePosition(seriesModel, api) {\n var center = seriesModel.get('center');\n var width = api.getWidth();\n var height = api.getHeight();\n var size = Math.min(width, height);\n var cx = parsePercent(center[0], api.getWidth());\n var cy = parsePercent(center[1], api.getHeight());\n var r = parsePercent(seriesModel.get('radius'), size / 2);\n return {\n cx: cx,\n cy: cy,\n r: r\n };\n}\n\nfunction formatLabel(label, labelFormatter) {\n if (labelFormatter) {\n if (typeof labelFormatter === 'string') {\n label = labelFormatter.replace('{value}', label != null ? label : '');\n } else if (typeof labelFormatter === 'function') {\n label = labelFormatter(label);\n }\n }\n\n return label;\n}\n\nvar PI2 = Math.PI * 2;\nvar GaugeView = ChartView.extend({\n type: 'gauge',\n render: function (seriesModel, ecModel, api) {\n this.group.removeAll();\n var colorList = seriesModel.get('axisLine.lineStyle.color');\n var posInfo = parsePosition(seriesModel, api);\n\n this._renderMain(seriesModel, ecModel, api, colorList, posInfo);\n },\n dispose: function () {},\n _renderMain: function (seriesModel, ecModel, api, colorList, posInfo) {\n var group = this.group;\n var axisLineModel = seriesModel.getModel('axisLine');\n var lineStyleModel = axisLineModel.getModel('lineStyle');\n var clockwise = seriesModel.get('clockwise');\n var startAngle = -seriesModel.get('startAngle') / 180 * Math.PI;\n var endAngle = -seriesModel.get('endAngle') / 180 * Math.PI;\n var angleRangeSpan = (endAngle - startAngle) % PI2;\n var prevEndAngle = startAngle;\n var axisLineWidth = lineStyleModel.get('width');\n var showAxis = axisLineModel.get('show');\n\n for (var i = 0; showAxis && i < colorList.length; i++) {\n // Clamp\n var percent = Math.min(Math.max(colorList[i][0], 0), 1);\n var endAngle = startAngle + angleRangeSpan * percent;\n var sector = new graphic.Sector({\n shape: {\n startAngle: prevEndAngle,\n endAngle: endAngle,\n cx: posInfo.cx,\n cy: posInfo.cy,\n clockwise: clockwise,\n r0: posInfo.r - axisLineWidth,\n r: posInfo.r\n },\n silent: true\n });\n sector.setStyle({\n fill: colorList[i][1]\n });\n sector.setStyle(lineStyleModel.getLineStyle( // Because we use sector to simulate arc\n // so the properties for stroking are useless\n ['color', 'borderWidth', 'borderColor']));\n group.add(sector);\n prevEndAngle = endAngle;\n }\n\n var getColor = function (percent) {\n // Less than 0\n if (percent <= 0) {\n return colorList[0][1];\n }\n\n for (var i = 0; i < colorList.length; i++) {\n if (colorList[i][0] >= percent && (i === 0 ? 0 : colorList[i - 1][0]) < percent) {\n return colorList[i][1];\n }\n } // More than 1\n\n\n return colorList[i - 1][1];\n };\n\n if (!clockwise) {\n var tmp = startAngle;\n startAngle = endAngle;\n endAngle = tmp;\n }\n\n this._renderTicks(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise);\n\n this._renderPointer(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise);\n\n this._renderTitle(seriesModel, ecModel, api, getColor, posInfo);\n\n this._renderDetail(seriesModel, ecModel, api, getColor, posInfo);\n },\n _renderTicks: function (seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise) {\n var group = this.group;\n var cx = posInfo.cx;\n var cy = posInfo.cy;\n var r = posInfo.r;\n var minVal = +seriesModel.get('min');\n var maxVal = +seriesModel.get('max');\n var splitLineModel = seriesModel.getModel('splitLine');\n var tickModel = seriesModel.getModel('axisTick');\n var labelModel = seriesModel.getModel('axisLabel');\n var splitNumber = seriesModel.get('splitNumber');\n var subSplitNumber = tickModel.get('splitNumber');\n var splitLineLen = parsePercent(splitLineModel.get('length'), r);\n var tickLen = parsePercent(tickModel.get('length'), r);\n var angle = startAngle;\n var step = (endAngle - startAngle) / splitNumber;\n var subStep = step / subSplitNumber;\n var splitLineStyle = splitLineModel.getModel('lineStyle').getLineStyle();\n var tickLineStyle = tickModel.getModel('lineStyle').getLineStyle();\n\n for (var i = 0; i <= splitNumber; i++) {\n var unitX = Math.cos(angle);\n var unitY = Math.sin(angle); // Split line\n\n if (splitLineModel.get('show')) {\n var splitLine = new graphic.Line({\n shape: {\n x1: unitX * r + cx,\n y1: unitY * r + cy,\n x2: unitX * (r - splitLineLen) + cx,\n y2: unitY * (r - splitLineLen) + cy\n },\n style: splitLineStyle,\n silent: true\n });\n\n if (splitLineStyle.stroke === 'auto') {\n splitLine.setStyle({\n stroke: getColor(i / splitNumber)\n });\n }\n\n group.add(splitLine);\n } // Label\n\n\n if (labelModel.get('show')) {\n var label = formatLabel(round(i / splitNumber * (maxVal - minVal) + minVal), labelModel.get('formatter'));\n var distance = labelModel.get('distance');\n var autoColor = getColor(i / splitNumber);\n group.add(new graphic.Text({\n style: graphic.setTextStyle({}, labelModel, {\n text: label,\n x: unitX * (r - splitLineLen - distance) + cx,\n y: unitY * (r - splitLineLen - distance) + cy,\n textVerticalAlign: unitY < -0.4 ? 'top' : unitY > 0.4 ? 'bottom' : 'middle',\n textAlign: unitX < -0.4 ? 'left' : unitX > 0.4 ? 'right' : 'center'\n }, {\n autoColor: autoColor\n }),\n silent: true\n }));\n } // Axis tick\n\n\n if (tickModel.get('show') && i !== splitNumber) {\n for (var j = 0; j <= subSplitNumber; j++) {\n var unitX = Math.cos(angle);\n var unitY = Math.sin(angle);\n var tickLine = new graphic.Line({\n shape: {\n x1: unitX * r + cx,\n y1: unitY * r + cy,\n x2: unitX * (r - tickLen) + cx,\n y2: unitY * (r - tickLen) + cy\n },\n silent: true,\n style: tickLineStyle\n });\n\n if (tickLineStyle.stroke === 'auto') {\n tickLine.setStyle({\n stroke: getColor((i + j / subSplitNumber) / splitNumber)\n });\n }\n\n group.add(tickLine);\n angle += subStep;\n }\n\n angle -= subStep;\n } else {\n angle += step;\n }\n }\n },\n _renderPointer: function (seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise) {\n var group = this.group;\n var oldData = this._data;\n\n if (!seriesModel.get('pointer.show')) {\n // Remove old element\n oldData && oldData.eachItemGraphicEl(function (el) {\n group.remove(el);\n });\n return;\n }\n\n var valueExtent = [+seriesModel.get('min'), +seriesModel.get('max')];\n var angleExtent = [startAngle, endAngle];\n var data = seriesModel.getData();\n var valueDim = data.mapDimension('value');\n data.diff(oldData).add(function (idx) {\n var pointer = new PointerPath({\n shape: {\n angle: startAngle\n }\n });\n graphic.initProps(pointer, {\n shape: {\n angle: linearMap(data.get(valueDim, idx), valueExtent, angleExtent, true)\n }\n }, seriesModel);\n group.add(pointer);\n data.setItemGraphicEl(idx, pointer);\n }).update(function (newIdx, oldIdx) {\n var pointer = oldData.getItemGraphicEl(oldIdx);\n graphic.updateProps(pointer, {\n shape: {\n angle: linearMap(data.get(valueDim, newIdx), valueExtent, angleExtent, true)\n }\n }, seriesModel);\n group.add(pointer);\n data.setItemGraphicEl(newIdx, pointer);\n }).remove(function (idx) {\n var pointer = oldData.getItemGraphicEl(idx);\n group.remove(pointer);\n }).execute();\n data.eachItemGraphicEl(function (pointer, idx) {\n var itemModel = data.getItemModel(idx);\n var pointerModel = itemModel.getModel('pointer');\n pointer.setShape({\n x: posInfo.cx,\n y: posInfo.cy,\n width: parsePercent(pointerModel.get('width'), posInfo.r),\n r: parsePercent(pointerModel.get('length'), posInfo.r)\n });\n pointer.useStyle(itemModel.getModel('itemStyle').getItemStyle());\n\n if (pointer.style.fill === 'auto') {\n pointer.setStyle('fill', getColor(linearMap(data.get(valueDim, idx), valueExtent, [0, 1], true)));\n }\n\n graphic.setHoverStyle(pointer, itemModel.getModel('emphasis.itemStyle').getItemStyle());\n });\n this._data = data;\n },\n _renderTitle: function (seriesModel, ecModel, api, getColor, posInfo) {\n var data = seriesModel.getData();\n var valueDim = data.mapDimension('value');\n var titleModel = seriesModel.getModel('title');\n\n if (titleModel.get('show')) {\n var offsetCenter = titleModel.get('offsetCenter');\n var x = posInfo.cx + parsePercent(offsetCenter[0], posInfo.r);\n var y = posInfo.cy + parsePercent(offsetCenter[1], posInfo.r);\n var minVal = +seriesModel.get('min');\n var maxVal = +seriesModel.get('max');\n var value = seriesModel.getData().get(valueDim, 0);\n var autoColor = getColor(linearMap(value, [minVal, maxVal], [0, 1], true));\n this.group.add(new graphic.Text({\n silent: true,\n style: graphic.setTextStyle({}, titleModel, {\n x: x,\n y: y,\n // FIXME First data name ?\n text: data.getName(0),\n textAlign: 'center',\n textVerticalAlign: 'middle'\n }, {\n autoColor: autoColor,\n forceRich: true\n })\n }));\n }\n },\n _renderDetail: function (seriesModel, ecModel, api, getColor, posInfo) {\n var detailModel = seriesModel.getModel('detail');\n var minVal = +seriesModel.get('min');\n var maxVal = +seriesModel.get('max');\n\n if (detailModel.get('show')) {\n var offsetCenter = detailModel.get('offsetCenter');\n var x = posInfo.cx + parsePercent(offsetCenter[0], posInfo.r);\n var y = posInfo.cy + parsePercent(offsetCenter[1], posInfo.r);\n var width = parsePercent(detailModel.get('width'), posInfo.r);\n var height = parsePercent(detailModel.get('height'), posInfo.r);\n var data = seriesModel.getData();\n var value = data.get(data.mapDimension('value'), 0);\n var autoColor = getColor(linearMap(value, [minVal, maxVal], [0, 1], true));\n this.group.add(new graphic.Text({\n silent: true,\n style: graphic.setTextStyle({}, detailModel, {\n x: x,\n y: y,\n text: formatLabel( // FIXME First data name ?\n value, detailModel.get('formatter')),\n textWidth: isNaN(width) ? null : width,\n textHeight: isNaN(height) ? null : height,\n textAlign: 'center',\n textVerticalAlign: 'middle'\n }, {\n autoColor: autoColor,\n forceRich: true\n })\n }));\n }\n }\n});\nvar _default = GaugeView;\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 Path = require(\"zrender/lib/graphic/Path\");\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 _default = Path.extend({\n type: 'echartsGaugePointer',\n shape: {\n angle: 0,\n width: 10,\n r: 10,\n x: 0,\n y: 0\n },\n buildPath: function (ctx, shape) {\n var mathCos = Math.cos;\n var mathSin = Math.sin;\n var r = shape.r;\n var width = shape.width;\n var angle = shape.angle;\n var x = shape.x - mathCos(angle) * width * (width >= r / 3 ? 1 : 2);\n var y = shape.y - mathSin(angle) * width * (width >= r / 3 ? 1 : 2);\n angle = shape.angle - Math.PI / 2;\n ctx.moveTo(x, y);\n ctx.lineTo(shape.x + mathCos(angle) * width, shape.y + mathSin(angle) * width);\n ctx.lineTo(shape.x + mathCos(shape.angle) * r, shape.y + mathSin(shape.angle) * r);\n ctx.lineTo(shape.x - mathCos(angle) * width, shape.y - mathSin(angle) * width);\n ctx.lineTo(x, y);\n return;\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\nrequire(\"./graph/GraphSeries\");\n\nrequire(\"./graph/GraphView\");\n\nrequire(\"./graph/graphAction\");\n\nvar categoryFilter = require(\"./graph/categoryFilter\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar categoryVisual = require(\"./graph/categoryVisual\");\n\nvar edgeVisual = require(\"./graph/edgeVisual\");\n\nvar simpleLayout = require(\"./graph/simpleLayout\");\n\nvar circularLayout = require(\"./graph/circularLayout\");\n\nvar forceLayout = require(\"./graph/forceLayout\");\n\nvar createView = require(\"./graph/createView\");\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*/\necharts.registerProcessor(categoryFilter);\necharts.registerVisual(visualSymbol('graph', 'circle', null));\necharts.registerVisual(categoryVisual);\necharts.registerVisual(edgeVisual);\necharts.registerLayout(simpleLayout);\necharts.registerLayout(echarts.PRIORITY.VISUAL.POST_CHART_LAYOUT, circularLayout);\necharts.registerLayout(forceLayout); // Graph view coordinate system\n\necharts.registerCoordinateSystem('graphView', {\n create: createView\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\nvar echarts = require(\"../../echarts\");\n\nvar List = require(\"../../data/List\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _model = require(\"../../util/model\");\n\nvar defaultEmphasis = _model.defaultEmphasis;\n\nvar Model = require(\"../../model/Model\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar createGraphFromNodeEdge = require(\"../helper/createGraphFromNodeEdge\");\n\nvar LegendVisualProvider = require(\"../../visual/LegendVisualProvider\");\n\nvar _multipleGraphEdgeHelper = require(\"../helper/multipleGraphEdgeHelper\");\n\nvar initCurvenessList = _multipleGraphEdgeHelper.initCurvenessList;\nvar createEdgeMapForCurveness = _multipleGraphEdgeHelper.createEdgeMapForCurveness;\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 GraphSeries = echarts.extendSeriesModel({\n type: 'series.graph',\n init: function (option) {\n GraphSeries.superApply(this, 'init', arguments);\n var self = this;\n\n function getCategoriesData() {\n return self._categoriesData;\n } // Provide data for legend select\n\n\n this.legendVisualProvider = new LegendVisualProvider(getCategoriesData, getCategoriesData);\n this.fillDataTextStyle(option.edges || option.links);\n\n this._updateCategoriesData();\n },\n mergeOption: function (option) {\n GraphSeries.superApply(this, 'mergeOption', arguments);\n this.fillDataTextStyle(option.edges || option.links);\n\n this._updateCategoriesData();\n },\n mergeDefaultAndTheme: function (option) {\n GraphSeries.superApply(this, 'mergeDefaultAndTheme', arguments);\n defaultEmphasis(option, ['edgeLabel'], ['show']);\n },\n getInitialData: function (option, ecModel) {\n var edges = option.edges || option.links || [];\n var nodes = option.data || option.nodes || [];\n var self = this;\n\n if (nodes && edges) {\n // auto curveness\n initCurvenessList(this);\n var graph = createGraphFromNodeEdge(nodes, edges, this, true, beforeLink);\n zrUtil.each(graph.edges, function (edge) {\n createEdgeMapForCurveness(edge.node1, edge.node2, this, edge.dataIndex);\n }, this);\n return graph.data;\n }\n\n function beforeLink(nodeData, edgeData) {\n // Overwrite nodeData.getItemModel to\n nodeData.wrapMethod('getItemModel', function (model) {\n var categoriesModels = self._categoriesModels;\n var categoryIdx = model.getShallow('category');\n var categoryModel = categoriesModels[categoryIdx];\n\n if (categoryModel) {\n categoryModel.parentModel = model.parentModel;\n model.parentModel = categoryModel;\n }\n\n return model;\n });\n var edgeLabelModel = self.getModel('edgeLabel'); // For option `edgeLabel` can be found by label.xxx.xxx on item mode.\n\n var fakeSeriesModel = new Model({\n label: edgeLabelModel.option\n }, edgeLabelModel.parentModel, ecModel);\n var emphasisEdgeLabelModel = self.getModel('emphasis.edgeLabel');\n var emphasisFakeSeriesModel = new Model({\n emphasis: {\n label: emphasisEdgeLabelModel.option\n }\n }, emphasisEdgeLabelModel.parentModel, ecModel);\n edgeData.wrapMethod('getItemModel', function (model) {\n model.customizeGetParent(edgeGetParent);\n return model;\n });\n\n function edgeGetParent(path) {\n path = this.parsePath(path);\n return path && path[0] === 'label' ? fakeSeriesModel : path && path[0] === 'emphasis' && path[1] === 'label' ? emphasisFakeSeriesModel : this.parentModel;\n }\n }\n },\n\n /**\n * @return {module:echarts/data/Graph}\n */\n getGraph: function () {\n return this.getData().graph;\n },\n\n /**\n * @return {module:echarts/data/List}\n */\n getEdgeData: function () {\n return this.getGraph().edgeData;\n },\n\n /**\n * @return {module:echarts/data/List}\n */\n getCategoriesData: function () {\n return this._categoriesData;\n },\n\n /**\n * @override\n */\n formatTooltip: function (dataIndex, multipleSeries, dataType) {\n if (dataType === 'edge') {\n var nodeData = this.getData();\n var params = this.getDataParams(dataIndex, dataType);\n var edge = nodeData.graph.getEdgeByIndex(dataIndex);\n var sourceName = nodeData.getName(edge.node1.dataIndex);\n var targetName = nodeData.getName(edge.node2.dataIndex);\n var html = [];\n sourceName != null && html.push(sourceName);\n targetName != null && html.push(targetName);\n html = encodeHTML(html.join(' > '));\n\n if (params.value) {\n html += ' : ' + encodeHTML(params.value);\n }\n\n return html;\n } else {\n // dataType === 'node' or empty\n return GraphSeries.superApply(this, 'formatTooltip', arguments);\n }\n },\n _updateCategoriesData: function () {\n var categories = zrUtil.map(this.option.categories || [], function (category) {\n // Data must has value\n return category.value != null ? category : zrUtil.extend({\n value: 0\n }, category);\n });\n var categoriesData = new List(['value'], this);\n categoriesData.initData(categories);\n this._categoriesData = categoriesData;\n this._categoriesModels = categoriesData.mapArray(function (idx) {\n return categoriesData.getItemModel(idx, true);\n });\n },\n setZoom: function (zoom) {\n this.option.zoom = zoom;\n },\n setCenter: function (center) {\n this.option.center = center;\n },\n isAnimationEnabled: function () {\n return GraphSeries.superCall(this, 'isAnimationEnabled') // Not enable animation when do force layout\n && !(this.get('layout') === 'force' && this.get('force.layoutAnimation'));\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'view',\n // Default option for all coordinate systems\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // polarIndex: 0,\n // geoIndex: 0,\n legendHoverLink: true,\n hoverAnimation: true,\n layout: null,\n focusNodeAdjacency: false,\n // Configuration of circular layout\n circular: {\n rotateLabel: false\n },\n // Configuration of force directed layout\n force: {\n initLayout: null,\n // Node repulsion. Can be an array to represent range.\n repulsion: [0, 50],\n gravity: 0.1,\n // Initial friction\n friction: 0.6,\n // Edge length. Can be an array to represent range.\n edgeLength: 30,\n layoutAnimation: true\n },\n left: 'center',\n top: 'center',\n // right: null,\n // bottom: null,\n // width: '80%',\n // height: '80%',\n symbol: 'circle',\n symbolSize: 10,\n edgeSymbol: ['none', 'none'],\n edgeSymbolSize: 10,\n edgeLabel: {\n position: 'middle',\n distance: 5\n },\n draggable: false,\n roam: false,\n // Default on center of graph\n center: null,\n zoom: 1,\n // Symbol size scale ratio in roam\n nodeScaleRatio: 0.6,\n // cursor: null,\n // categories: [],\n // data: []\n // Or\n // nodes: []\n //\n // links: []\n // Or\n // edges: []\n label: {\n show: false,\n formatter: '{b}'\n },\n itemStyle: {},\n lineStyle: {\n color: '#aaa',\n width: 1,\n opacity: 0.5\n },\n emphasis: {\n label: {\n show: true\n }\n }\n }\n});\nvar _default = GraphSeries;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar SymbolDraw = require(\"../helper/SymbolDraw\");\n\nvar LineDraw = require(\"../helper/LineDraw\");\n\nvar RoamController = require(\"../../component/helper/RoamController\");\n\nvar roamHelper = require(\"../../component/helper/roamHelper\");\n\nvar _cursorHelper = require(\"../../component/helper/cursorHelper\");\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar adjustEdge = require(\"./adjustEdge\");\n\nvar _graphHelper = require(\"./graphHelper\");\n\nvar getNodeGlobalScale = _graphHelper.getNodeGlobalScale;\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 FOCUS_ADJACENCY = '__focusNodeAdjacency';\nvar UNFOCUS_ADJACENCY = '__unfocusNodeAdjacency';\nvar nodeOpacityPath = ['itemStyle', 'opacity'];\nvar lineOpacityPath = ['lineStyle', 'opacity'];\n\nfunction getItemOpacity(item, opacityPath) {\n var opacity = item.getVisual('opacity');\n return opacity != null ? opacity : item.getModel().get(opacityPath);\n}\n\nfunction fadeOutItem(item, opacityPath, opacityRatio) {\n var el = item.getGraphicEl();\n var opacity = getItemOpacity(item, opacityPath);\n\n if (opacityRatio != null) {\n opacity == null && (opacity = 1);\n opacity *= opacityRatio;\n }\n\n el.downplay && el.downplay();\n el.traverse(function (child) {\n if (!child.isGroup) {\n var opct = child.lineLabelOriginalOpacity;\n\n if (opct == null || opacityRatio != null) {\n opct = opacity;\n }\n\n child.setStyle('opacity', opct);\n }\n });\n}\n\nfunction fadeInItem(item, opacityPath) {\n var opacity = getItemOpacity(item, opacityPath);\n var el = item.getGraphicEl(); // Should go back to normal opacity first, consider hoverLayer,\n // where current state is copied to elMirror, and support\n // emphasis opacity here.\n\n el.traverse(function (child) {\n !child.isGroup && child.setStyle('opacity', opacity);\n });\n el.highlight && el.highlight();\n}\n\nvar _default = echarts.extendChartView({\n type: 'graph',\n init: function (ecModel, api) {\n var symbolDraw = new SymbolDraw();\n var lineDraw = new LineDraw();\n var group = this.group;\n this._controller = new RoamController(api.getZr());\n this._controllerHost = {\n target: group\n };\n group.add(symbolDraw.group);\n group.add(lineDraw.group);\n this._symbolDraw = symbolDraw;\n this._lineDraw = lineDraw;\n this._firstRender = true;\n },\n render: function (seriesModel, ecModel, api) {\n var graphView = this;\n var coordSys = seriesModel.coordinateSystem;\n this._model = seriesModel;\n var symbolDraw = this._symbolDraw;\n var lineDraw = this._lineDraw;\n var group = this.group;\n\n if (coordSys.type === 'view') {\n var groupNewProp = {\n position: coordSys.position,\n scale: coordSys.scale\n };\n\n if (this._firstRender) {\n group.attr(groupNewProp);\n } else {\n graphic.updateProps(group, groupNewProp, seriesModel);\n }\n } // Fix edge contact point with node\n\n\n adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\n var data = seriesModel.getData();\n symbolDraw.updateData(data);\n var edgeData = seriesModel.getEdgeData();\n lineDraw.updateData(edgeData);\n\n this._updateNodeAndLinkScale();\n\n this._updateController(seriesModel, ecModel, api);\n\n clearTimeout(this._layoutTimeout);\n var forceLayout = seriesModel.forceLayout;\n var layoutAnimation = seriesModel.get('force.layoutAnimation');\n\n if (forceLayout) {\n this._startForceLayoutIteration(forceLayout, layoutAnimation);\n }\n\n data.eachItemGraphicEl(function (el, idx) {\n var itemModel = data.getItemModel(idx); // Update draggable\n\n el.off('drag').off('dragend');\n var draggable = itemModel.get('draggable');\n\n if (draggable) {\n el.on('drag', function () {\n if (forceLayout) {\n forceLayout.warmUp();\n !this._layouting && this._startForceLayoutIteration(forceLayout, layoutAnimation);\n forceLayout.setFixed(idx); // Write position back to layout\n\n data.setItemLayout(idx, el.position);\n }\n }, this).on('dragend', function () {\n if (forceLayout) {\n forceLayout.setUnfixed(idx);\n }\n }, this);\n }\n\n el.setDraggable(draggable && forceLayout);\n el[FOCUS_ADJACENCY] && el.off('mouseover', el[FOCUS_ADJACENCY]);\n el[UNFOCUS_ADJACENCY] && el.off('mouseout', el[UNFOCUS_ADJACENCY]);\n\n if (itemModel.get('focusNodeAdjacency')) {\n el.on('mouseover', el[FOCUS_ADJACENCY] = function () {\n graphView._clearTimer();\n\n api.dispatchAction({\n type: 'focusNodeAdjacency',\n seriesId: seriesModel.id,\n dataIndex: el.dataIndex\n });\n });\n el.on('mouseout', el[UNFOCUS_ADJACENCY] = function () {\n graphView._dispatchUnfocus(api);\n });\n }\n }, this);\n data.graph.eachEdge(function (edge) {\n var el = edge.getGraphicEl();\n el[FOCUS_ADJACENCY] && el.off('mouseover', el[FOCUS_ADJACENCY]);\n el[UNFOCUS_ADJACENCY] && el.off('mouseout', el[UNFOCUS_ADJACENCY]);\n\n if (edge.getModel().get('focusNodeAdjacency')) {\n el.on('mouseover', el[FOCUS_ADJACENCY] = function () {\n graphView._clearTimer();\n\n api.dispatchAction({\n type: 'focusNodeAdjacency',\n seriesId: seriesModel.id,\n edgeDataIndex: edge.dataIndex\n });\n });\n el.on('mouseout', el[UNFOCUS_ADJACENCY] = function () {\n graphView._dispatchUnfocus(api);\n });\n }\n });\n var circularRotateLabel = seriesModel.get('layout') === 'circular' && seriesModel.get('circular.rotateLabel');\n var cx = data.getLayout('cx');\n var cy = data.getLayout('cy');\n data.eachItemGraphicEl(function (el, idx) {\n var itemModel = data.getItemModel(idx);\n var labelRotate = itemModel.get('label.rotate') || 0;\n var symbolPath = el.getSymbolPath();\n\n if (circularRotateLabel) {\n var pos = data.getItemLayout(idx);\n var rad = Math.atan2(pos[1] - cy, pos[0] - cx);\n\n if (rad < 0) {\n rad = Math.PI * 2 + rad;\n }\n\n var isLeft = pos[0] < cx;\n\n if (isLeft) {\n rad = rad - Math.PI;\n }\n\n var textPosition = isLeft ? 'left' : 'right';\n graphic.modifyLabelStyle(symbolPath, {\n textRotation: -rad,\n textPosition: textPosition,\n textOrigin: 'center'\n }, {\n textPosition: textPosition\n });\n } else {\n graphic.modifyLabelStyle(symbolPath, {\n textRotation: labelRotate *= Math.PI / 180\n });\n }\n });\n this._firstRender = false;\n },\n dispose: function () {\n this._controller && this._controller.dispose();\n this._controllerHost = {};\n\n this._clearTimer();\n },\n _dispatchUnfocus: function (api, opt) {\n var self = this;\n\n this._clearTimer();\n\n this._unfocusDelayTimer = setTimeout(function () {\n self._unfocusDelayTimer = null;\n api.dispatchAction({\n type: 'unfocusNodeAdjacency',\n seriesId: self._model.id\n });\n }, 500);\n },\n _clearTimer: function () {\n if (this._unfocusDelayTimer) {\n clearTimeout(this._unfocusDelayTimer);\n this._unfocusDelayTimer = null;\n }\n },\n focusNodeAdjacency: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var graph = data.graph;\n var dataIndex = payload.dataIndex;\n var edgeDataIndex = payload.edgeDataIndex;\n var node = graph.getNodeByIndex(dataIndex);\n var edge = graph.getEdgeByIndex(edgeDataIndex);\n\n if (!node && !edge) {\n return;\n }\n\n graph.eachNode(function (node) {\n fadeOutItem(node, nodeOpacityPath, 0.1);\n });\n graph.eachEdge(function (edge) {\n fadeOutItem(edge, lineOpacityPath, 0.1);\n });\n\n if (node) {\n fadeInItem(node, nodeOpacityPath);\n zrUtil.each(node.edges, function (adjacentEdge) {\n if (adjacentEdge.dataIndex < 0) {\n return;\n }\n\n fadeInItem(adjacentEdge, lineOpacityPath);\n fadeInItem(adjacentEdge.node1, nodeOpacityPath);\n fadeInItem(adjacentEdge.node2, nodeOpacityPath);\n });\n }\n\n if (edge) {\n fadeInItem(edge, lineOpacityPath);\n fadeInItem(edge.node1, nodeOpacityPath);\n fadeInItem(edge.node2, nodeOpacityPath);\n }\n },\n unfocusNodeAdjacency: function (seriesModel, ecModel, api, payload) {\n var graph = seriesModel.getData().graph;\n graph.eachNode(function (node) {\n fadeOutItem(node, nodeOpacityPath);\n });\n graph.eachEdge(function (edge) {\n fadeOutItem(edge, lineOpacityPath);\n });\n },\n _startForceLayoutIteration: function (forceLayout, layoutAnimation) {\n var self = this;\n\n (function step() {\n forceLayout.step(function (stopped) {\n self.updateLayout(self._model);\n (self._layouting = !stopped) && (layoutAnimation ? self._layoutTimeout = setTimeout(step, 16) : step());\n });\n })();\n },\n _updateController: function (seriesModel, ecModel, api) {\n var controller = this._controller;\n var controllerHost = this._controllerHost;\n var group = this.group;\n controller.setPointerChecker(function (e, x, y) {\n var rect = group.getBoundingRect();\n rect.applyTransform(group.transform);\n return rect.contain(x, y) && !onIrrelevantElement(e, api, seriesModel);\n });\n\n if (seriesModel.coordinateSystem.type !== 'view') {\n controller.disable();\n return;\n }\n\n controller.enable(seriesModel.get('roam'));\n controllerHost.zoomLimit = seriesModel.get('scaleLimit');\n controllerHost.zoom = seriesModel.coordinateSystem.getZoom();\n controller.off('pan').off('zoom').on('pan', function (e) {\n roamHelper.updateViewOnPan(controllerHost, e.dx, e.dy);\n api.dispatchAction({\n seriesId: seriesModel.id,\n type: 'graphRoam',\n dx: e.dx,\n dy: e.dy\n });\n }).on('zoom', function (e) {\n roamHelper.updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\n api.dispatchAction({\n seriesId: seriesModel.id,\n type: 'graphRoam',\n zoom: e.scale,\n originX: e.originX,\n originY: e.originY\n });\n\n this._updateNodeAndLinkScale();\n\n adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\n\n this._lineDraw.updateLayout();\n }, this);\n },\n _updateNodeAndLinkScale: function () {\n var seriesModel = this._model;\n var data = seriesModel.getData();\n var nodeScale = getNodeGlobalScale(seriesModel);\n var invScale = [nodeScale, nodeScale];\n data.eachItemGraphicEl(function (el, idx) {\n el.attr('scale', invScale);\n });\n },\n updateLayout: function (seriesModel) {\n adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\n\n this._symbolDraw.updateLayout();\n\n this._lineDraw.updateLayout();\n },\n remove: function (ecModel, api) {\n this._symbolDraw && this._symbolDraw.remove();\n this._lineDraw && this._lineDraw.remove();\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 curveTool = require(\"zrender/lib/core/curve\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar _graphHelper = require(\"./graphHelper\");\n\nvar getSymbolSize = _graphHelper.getSymbolSize;\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 v1 = [];\nvar v2 = [];\nvar v3 = [];\nvar quadraticAt = curveTool.quadraticAt;\nvar v2DistSquare = vec2.distSquare;\nvar mathAbs = Math.abs;\n\nfunction intersectCurveCircle(curvePoints, center, radius) {\n var p0 = curvePoints[0];\n var p1 = curvePoints[1];\n var p2 = curvePoints[2];\n var d = Infinity;\n var t;\n var radiusSquare = radius * radius;\n var interval = 0.1;\n\n for (var _t = 0.1; _t <= 0.9; _t += 0.1) {\n v1[0] = quadraticAt(p0[0], p1[0], p2[0], _t);\n v1[1] = quadraticAt(p0[1], p1[1], p2[1], _t);\n var diff = mathAbs(v2DistSquare(v1, center) - radiusSquare);\n\n if (diff < d) {\n d = diff;\n t = _t;\n }\n } // Assume the segment is monotone,Find root through Bisection method\n // At most 32 iteration\n\n\n for (var i = 0; i < 32; i++) {\n // var prev = t - interval;\n var next = t + interval; // v1[0] = quadraticAt(p0[0], p1[0], p2[0], prev);\n // v1[1] = quadraticAt(p0[1], p1[1], p2[1], prev);\n\n v2[0] = quadraticAt(p0[0], p1[0], p2[0], t);\n v2[1] = quadraticAt(p0[1], p1[1], p2[1], t);\n v3[0] = quadraticAt(p0[0], p1[0], p2[0], next);\n v3[1] = quadraticAt(p0[1], p1[1], p2[1], next);\n var diff = v2DistSquare(v2, center) - radiusSquare;\n\n if (mathAbs(diff) < 1e-2) {\n break;\n } // var prevDiff = v2DistSquare(v1, center) - radiusSquare;\n\n\n var nextDiff = v2DistSquare(v3, center) - radiusSquare;\n interval /= 2;\n\n if (diff < 0) {\n if (nextDiff >= 0) {\n t = t + interval;\n } else {\n t = t - interval;\n }\n } else {\n if (nextDiff >= 0) {\n t = t - interval;\n } else {\n t = t + interval;\n }\n }\n }\n\n return t;\n} // Adjust edge to avoid\n\n\nfunction _default(graph, scale) {\n var tmp0 = [];\n var quadraticSubdivide = curveTool.quadraticSubdivide;\n var pts = [[], [], []];\n var pts2 = [[], []];\n var v = [];\n scale /= 2;\n graph.eachEdge(function (edge, idx) {\n var linePoints = edge.getLayout();\n var fromSymbol = edge.getVisual('fromSymbol');\n var toSymbol = edge.getVisual('toSymbol');\n\n if (!linePoints.__original) {\n linePoints.__original = [vec2.clone(linePoints[0]), vec2.clone(linePoints[1])];\n\n if (linePoints[2]) {\n linePoints.__original.push(vec2.clone(linePoints[2]));\n }\n }\n\n var originalPoints = linePoints.__original; // Quadratic curve\n\n if (linePoints[2] != null) {\n vec2.copy(pts[0], originalPoints[0]);\n vec2.copy(pts[1], originalPoints[2]);\n vec2.copy(pts[2], originalPoints[1]);\n\n if (fromSymbol && fromSymbol !== 'none') {\n var symbolSize = getSymbolSize(edge.node1);\n var t = intersectCurveCircle(pts, originalPoints[0], symbolSize * scale); // Subdivide and get the second\n\n quadraticSubdivide(pts[0][0], pts[1][0], pts[2][0], t, tmp0);\n pts[0][0] = tmp0[3];\n pts[1][0] = tmp0[4];\n quadraticSubdivide(pts[0][1], pts[1][1], pts[2][1], t, tmp0);\n pts[0][1] = tmp0[3];\n pts[1][1] = tmp0[4];\n }\n\n if (toSymbol && toSymbol !== 'none') {\n var symbolSize = getSymbolSize(edge.node2);\n var t = intersectCurveCircle(pts, originalPoints[1], symbolSize * scale); // Subdivide and get the first\n\n quadraticSubdivide(pts[0][0], pts[1][0], pts[2][0], t, tmp0);\n pts[1][0] = tmp0[1];\n pts[2][0] = tmp0[2];\n quadraticSubdivide(pts[0][1], pts[1][1], pts[2][1], t, tmp0);\n pts[1][1] = tmp0[1];\n pts[2][1] = tmp0[2];\n } // Copy back to layout\n\n\n vec2.copy(linePoints[0], pts[0]);\n vec2.copy(linePoints[1], pts[2]);\n vec2.copy(linePoints[2], pts[1]);\n } // Line\n else {\n vec2.copy(pts2[0], originalPoints[0]);\n vec2.copy(pts2[1], originalPoints[1]);\n vec2.sub(v, pts2[1], pts2[0]);\n vec2.normalize(v, v);\n\n if (fromSymbol && fromSymbol !== 'none') {\n var symbolSize = getSymbolSize(edge.node1);\n vec2.scaleAndAdd(pts2[0], pts2[0], v, symbolSize * scale);\n }\n\n if (toSymbol && toSymbol !== 'none') {\n var symbolSize = getSymbolSize(edge.node2);\n vec2.scaleAndAdd(pts2[1], pts2[1], v, -symbolSize * scale);\n }\n\n vec2.copy(linePoints[0], pts2[0]);\n vec2.copy(linePoints[1], pts2[1]);\n }\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\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(ecModel) {\n var legendModels = ecModel.findComponents({\n mainType: 'legend'\n });\n\n if (!legendModels || !legendModels.length) {\n return;\n }\n\n ecModel.eachSeriesByType('graph', function (graphSeries) {\n var categoriesData = graphSeries.getCategoriesData();\n var graph = graphSeries.getGraph();\n var data = graph.data;\n var categoryNames = categoriesData.mapArray(categoriesData.getName);\n data.filterSelf(function (idx) {\n var model = data.getItemModel(idx);\n var category = model.getShallow('category');\n\n if (category != null) {\n if (typeof category === 'number') {\n category = categoryNames[category];\n } // If in any legend component the status is not selected.\n\n\n for (var i = 0; i < legendModels.length; i++) {\n if (!legendModels[i].isSelected(category)) {\n return false;\n }\n }\n }\n\n return true;\n });\n }, this);\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\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(ecModel) {\n var paletteScope = {};\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n var categoriesData = seriesModel.getCategoriesData();\n var data = seriesModel.getData();\n var categoryNameIdxMap = {};\n categoriesData.each(function (idx) {\n var name = categoriesData.getName(idx); // Add prefix to avoid conflict with Object.prototype.\n\n categoryNameIdxMap['ec-' + name] = idx;\n var itemModel = categoriesData.getItemModel(idx);\n var color = itemModel.get('itemStyle.color') || seriesModel.getColorFromPalette(name, paletteScope);\n categoriesData.setItemVisual(idx, 'color', color);\n var itemStyleList = ['opacity', 'symbol', 'symbolSize', 'symbolKeepAspect'];\n\n for (var i = 0; i < itemStyleList.length; i++) {\n var itemStyle = itemModel.getShallow(itemStyleList[i], true);\n\n if (itemStyle != null) {\n categoriesData.setItemVisual(idx, itemStyleList[i], itemStyle);\n }\n }\n }); // Assign category color to visual\n\n if (categoriesData.count()) {\n data.each(function (idx) {\n var model = data.getItemModel(idx);\n var category = model.getShallow('category');\n\n if (category != null) {\n if (typeof category === 'string') {\n category = categoryNameIdxMap['ec-' + category];\n }\n\n var itemStyleList = ['color', 'opacity', 'symbol', 'symbolSize', 'symbolKeepAspect'];\n\n for (var i = 0; i < itemStyleList.length; i++) {\n if (data.getItemVisual(idx, itemStyleList[i], true) == null) {\n data.setItemVisual(idx, itemStyleList[i], categoriesData.getItemVisual(category, itemStyleList[i]));\n }\n }\n }\n });\n }\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 _circularLayoutHelper = require(\"./circularLayoutHelper\");\n\nvar circularLayout = _circularLayoutHelper.circularLayout;\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(ecModel) {\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n if (seriesModel.get('layout') === 'circular') {\n circularLayout(seriesModel, 'symbolSize');\n }\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 vec2 = require(\"zrender/lib/core/vector\");\n\nvar _graphHelper = require(\"./graphHelper\");\n\nvar getSymbolSize = _graphHelper.getSymbolSize;\nvar getNodeGlobalScale = _graphHelper.getNodeGlobalScale;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _multipleGraphEdgeHelper = require(\"../helper/multipleGraphEdgeHelper\");\n\nvar getCurvenessForEdge = _multipleGraphEdgeHelper.getCurvenessForEdge;\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 PI = Math.PI;\nvar _symbolRadiansHalf = [];\n/**\n * `basedOn` can be:\n * 'value':\n * This layout is not accurate and have same bad case. For example,\n * if the min value is very smaller than the max value, the nodes\n * with the min value probably overlap even though there is enough\n * space to layout them. So we only use this approach in the as the\n * init layout of the force layout.\n * FIXME\n * Probably we do not need this method any more but use\n * `basedOn: 'symbolSize'` in force layout if\n * delay its init operations to GraphView.\n * 'symbolSize':\n * This approach work only if all of the symbol size calculated.\n * That is, the progressive rendering is not applied to graph.\n * FIXME\n * If progressive rendering is applied to graph some day,\n * probably we have to use `basedOn: 'value'`.\n *\n * @param {module:echarts/src/model/Series} seriesModel\n * @param {string} basedOn 'value' or 'symbolSize'\n */\n\nfunction circularLayout(seriesModel, basedOn) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.type !== 'view') {\n return;\n }\n\n var rect = coordSys.getBoundingRect();\n var nodeData = seriesModel.getData();\n var graph = nodeData.graph;\n var cx = rect.width / 2 + rect.x;\n var cy = rect.height / 2 + rect.y;\n var r = Math.min(rect.width, rect.height) / 2;\n var count = nodeData.count();\n nodeData.setLayout({\n cx: cx,\n cy: cy\n });\n\n if (!count) {\n return;\n }\n\n _layoutNodesBasedOn[basedOn](seriesModel, coordSys, graph, nodeData, r, cx, cy, count);\n\n graph.eachEdge(function (edge, index) {\n var curveness = zrUtil.retrieve3(edge.getModel().get('lineStyle.curveness'), getCurvenessForEdge(edge, seriesModel, index), 0);\n var p1 = vec2.clone(edge.node1.getLayout());\n var p2 = vec2.clone(edge.node2.getLayout());\n var cp1;\n var x12 = (p1[0] + p2[0]) / 2;\n var y12 = (p1[1] + p2[1]) / 2;\n\n if (+curveness) {\n curveness *= 3;\n cp1 = [cx * curveness + x12 * (1 - curveness), cy * curveness + y12 * (1 - curveness)];\n }\n\n edge.setLayout([p1, p2, cp1]);\n });\n}\n\nvar _layoutNodesBasedOn = {\n value: function (seriesModel, coordSys, graph, nodeData, r, cx, cy, count) {\n var angle = 0;\n var sum = nodeData.getSum('value');\n var unitAngle = Math.PI * 2 / (sum || count);\n graph.eachNode(function (node) {\n var value = node.getValue('value');\n var radianHalf = unitAngle * (sum ? value : 1) / 2;\n angle += radianHalf;\n node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]);\n angle += radianHalf;\n });\n },\n symbolSize: function (seriesModel, coordSys, graph, nodeData, r, cx, cy, count) {\n var sumRadian = 0;\n _symbolRadiansHalf.length = count;\n var nodeScale = getNodeGlobalScale(seriesModel);\n graph.eachNode(function (node) {\n var symbolSize = getSymbolSize(node); // Normally this case will not happen, but we still add\n // some the defensive code (2px is an arbitrary value).\n\n isNaN(symbolSize) && (symbolSize = 2);\n symbolSize < 0 && (symbolSize = 0);\n symbolSize *= nodeScale;\n var symbolRadianHalf = Math.asin(symbolSize / 2 / r); // when `symbolSize / 2` is bigger than `r`.\n\n isNaN(symbolRadianHalf) && (symbolRadianHalf = PI / 2);\n _symbolRadiansHalf[node.dataIndex] = symbolRadianHalf;\n sumRadian += symbolRadianHalf * 2;\n });\n var halfRemainRadian = (2 * PI - sumRadian) / count / 2;\n var angle = 0;\n graph.eachNode(function (node) {\n var radianHalf = halfRemainRadian + _symbolRadiansHalf[node.dataIndex];\n angle += radianHalf;\n node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]);\n angle += radianHalf;\n });\n }\n};\nexports.circularLayout = circularLayout;","\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 View = require(\"../../coord/View\");\n\nvar _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar bbox = require(\"zrender/lib/core/bbox\");\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// FIXME Where to create the simple view coordinate system\nfunction getViewRect(seriesModel, api, aspect) {\n var option = seriesModel.getBoxLayoutParams();\n option.aspect = aspect;\n return getLayoutRect(option, {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n\nfunction _default(ecModel, api) {\n var viewList = [];\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n var coordSysType = seriesModel.get('coordinateSystem');\n\n if (!coordSysType || coordSysType === 'view') {\n var data = seriesModel.getData();\n var positions = data.mapArray(function (idx) {\n var itemModel = data.getItemModel(idx);\n return [+itemModel.get('x'), +itemModel.get('y')];\n });\n var min = [];\n var max = [];\n bbox.fromPoints(positions, min, max); // If width or height is 0\n\n if (max[0] - min[0] === 0) {\n max[0] += 1;\n min[0] -= 1;\n }\n\n if (max[1] - min[1] === 0) {\n max[1] += 1;\n min[1] -= 1;\n }\n\n var aspect = (max[0] - min[0]) / (max[1] - min[1]); // FIXME If get view rect after data processed?\n\n var viewRect = getViewRect(seriesModel, api, aspect); // Position may be NaN, use view rect instead\n\n if (isNaN(aspect)) {\n min = [viewRect.x, viewRect.y];\n max = [viewRect.x + viewRect.width, viewRect.y + viewRect.height];\n }\n\n var bbWidth = max[0] - min[0];\n var bbHeight = max[1] - min[1];\n var viewWidth = viewRect.width;\n var viewHeight = viewRect.height;\n var viewCoordSys = seriesModel.coordinateSystem = new View();\n viewCoordSys.zoomLimit = seriesModel.get('scaleLimit');\n viewCoordSys.setBoundingRect(min[0], min[1], bbWidth, bbHeight);\n viewCoordSys.setViewRect(viewRect.x, viewRect.y, viewWidth, viewHeight); // Update roam info\n\n viewCoordSys.setCenter(seriesModel.get('center'));\n viewCoordSys.setZoom(seriesModel.get('zoom'));\n viewList.push(viewCoordSys);\n }\n });\n return viewList;\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\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 normalize(a) {\n if (!(a instanceof Array)) {\n a = [a, a];\n }\n\n return a;\n}\n\nfunction _default(ecModel) {\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n var graph = seriesModel.getGraph();\n var edgeData = seriesModel.getEdgeData();\n var symbolType = normalize(seriesModel.get('edgeSymbol'));\n var symbolSize = normalize(seriesModel.get('edgeSymbolSize'));\n var colorQuery = 'lineStyle.color'.split('.');\n var opacityQuery = 'lineStyle.opacity'.split('.');\n edgeData.setVisual('fromSymbol', symbolType && symbolType[0]);\n edgeData.setVisual('toSymbol', symbolType && symbolType[1]);\n edgeData.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\n edgeData.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\n edgeData.setVisual('color', seriesModel.get(colorQuery));\n edgeData.setVisual('opacity', seriesModel.get(opacityQuery));\n edgeData.each(function (idx) {\n var itemModel = edgeData.getItemModel(idx);\n var edge = graph.getEdgeByIndex(idx);\n var symbolType = normalize(itemModel.getShallow('symbol', true));\n var symbolSize = normalize(itemModel.getShallow('symbolSize', true)); // Edge visual must after node visual\n\n var color = itemModel.get(colorQuery);\n var opacity = itemModel.get(opacityQuery);\n\n switch (color) {\n case 'source':\n color = edge.node1.getVisual('color');\n break;\n\n case 'target':\n color = edge.node2.getVisual('color');\n break;\n }\n\n symbolType[0] && edge.setVisual('fromSymbol', symbolType[0]);\n symbolType[1] && edge.setVisual('toSymbol', symbolType[1]);\n symbolSize[0] && edge.setVisual('fromSymbolSize', symbolSize[0]);\n symbolSize[1] && edge.setVisual('toSymbolSize', symbolSize[1]);\n edge.setVisual('color', color);\n edge.setVisual('opacity', opacity);\n });\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 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* A third-party license is embeded for some of the code in this file:\n* Some formulas were originally copied from \"d3.js\" with some\n* modifications made for this project.\n* (See more details in the comment of the method \"step\" below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\nvar scaleAndAdd = vec2.scaleAndAdd; // function adjacentNode(n, e) {\n// return e.n1 === n ? e.n2 : e.n1;\n// }\n\nfunction forceLayout(nodes, edges, opts) {\n var rect = opts.rect;\n var width = rect.width;\n var height = rect.height;\n var center = [rect.x + width / 2, rect.y + height / 2]; // var scale = opts.scale || 1;\n\n var gravity = opts.gravity == null ? 0.1 : opts.gravity; // for (var i = 0; i < edges.length; i++) {\n // var e = edges[i];\n // var n1 = e.n1;\n // var n2 = e.n2;\n // n1.edges = n1.edges || [];\n // n2.edges = n2.edges || [];\n // n1.edges.push(e);\n // n2.edges.push(e);\n // }\n // Init position\n\n for (var i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n\n if (!n.p) {\n n.p = vec2.create(width * (Math.random() - 0.5) + center[0], height * (Math.random() - 0.5) + center[1]);\n }\n\n n.pp = vec2.clone(n.p);\n n.edges = null;\n } // Formula in 'Graph Drawing by Force-directed Placement'\n // var k = scale * Math.sqrt(width * height / nodes.length);\n // var k2 = k * k;\n\n\n var initialFriction = opts.friction == null ? 0.6 : opts.friction;\n var friction = initialFriction;\n return {\n warmUp: function () {\n friction = initialFriction * 0.8;\n },\n setFixed: function (idx) {\n nodes[idx].fixed = true;\n },\n setUnfixed: function (idx) {\n nodes[idx].fixed = false;\n },\n\n /**\n * Some formulas were originally copied from \"d3.js\"\n * https://github.com/d3/d3/blob/b516d77fb8566b576088e73410437494717ada26/src/layout/force.js\n * with some modifications made for this project.\n * See the license statement at the head of this file.\n */\n step: function (cb) {\n var v12 = [];\n var nLen = nodes.length;\n\n for (var i = 0; i < edges.length; i++) {\n var e = edges[i];\n\n if (e.ignoreForceLayout) {\n continue;\n }\n\n var n1 = e.n1;\n var n2 = e.n2;\n vec2.sub(v12, n2.p, n1.p);\n var d = vec2.len(v12) - e.d;\n var w = n2.w / (n1.w + n2.w);\n\n if (isNaN(w)) {\n w = 0;\n }\n\n vec2.normalize(v12, v12);\n !n1.fixed && scaleAndAdd(n1.p, n1.p, v12, w * d * friction);\n !n2.fixed && scaleAndAdd(n2.p, n2.p, v12, -(1 - w) * d * friction);\n } // Gravity\n\n\n for (var i = 0; i < nLen; i++) {\n var n = nodes[i];\n\n if (!n.fixed) {\n vec2.sub(v12, center, n.p); // var d = vec2.len(v12);\n // vec2.scale(v12, v12, 1 / d);\n // var gravityFactor = gravity;\n\n scaleAndAdd(n.p, n.p, v12, gravity * friction);\n }\n } // Repulsive\n // PENDING\n\n\n for (var i = 0; i < nLen; i++) {\n var n1 = nodes[i];\n\n for (var j = i + 1; j < nLen; j++) {\n var n2 = nodes[j];\n vec2.sub(v12, n2.p, n1.p);\n var d = vec2.len(v12);\n\n if (d === 0) {\n // Random repulse\n vec2.set(v12, Math.random() - 0.5, Math.random() - 0.5);\n d = 1;\n }\n\n var repFact = (n1.rep + n2.rep) / d / d;\n !n1.fixed && scaleAndAdd(n1.pp, n1.pp, v12, repFact);\n !n2.fixed && scaleAndAdd(n2.pp, n2.pp, v12, -repFact);\n }\n }\n\n var v = [];\n\n for (var i = 0; i < nLen; i++) {\n var n = nodes[i];\n\n if (!n.fixed) {\n vec2.sub(v, n.p, n.pp);\n scaleAndAdd(n.p, n.p, v, friction);\n vec2.copy(n.pp, n.p);\n }\n }\n\n friction = friction * 0.992;\n cb && cb(nodes, edges, friction < 0.01);\n }\n };\n}\n\nexports.forceLayout = forceLayout;","\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 _forceHelper = require(\"./forceHelper\");\n\nvar forceLayout = _forceHelper.forceLayout;\n\nvar _simpleLayoutHelper = require(\"./simpleLayoutHelper\");\n\nvar simpleLayout = _simpleLayoutHelper.simpleLayout;\n\nvar _circularLayoutHelper = require(\"./circularLayoutHelper\");\n\nvar circularLayout = _circularLayoutHelper.circularLayout;\n\nvar _number = require(\"../../util/number\");\n\nvar linearMap = _number.linearMap;\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _multipleGraphEdgeHelper = require(\"../helper/multipleGraphEdgeHelper\");\n\nvar getCurvenessForEdge = _multipleGraphEdgeHelper.getCurvenessForEdge;\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(ecModel) {\n ecModel.eachSeriesByType('graph', function (graphSeries) {\n var coordSys = graphSeries.coordinateSystem;\n\n if (coordSys && coordSys.type !== 'view') {\n return;\n }\n\n if (graphSeries.get('layout') === 'force') {\n var preservedPoints = graphSeries.preservedPoints || {};\n var graph = graphSeries.getGraph();\n var nodeData = graph.data;\n var edgeData = graph.edgeData;\n var forceModel = graphSeries.getModel('force');\n var initLayout = forceModel.get('initLayout');\n\n if (graphSeries.preservedPoints) {\n nodeData.each(function (idx) {\n var id = nodeData.getId(idx);\n nodeData.setItemLayout(idx, preservedPoints[id] || [NaN, NaN]);\n });\n } else if (!initLayout || initLayout === 'none') {\n simpleLayout(graphSeries);\n } else if (initLayout === 'circular') {\n circularLayout(graphSeries, 'value');\n }\n\n var nodeDataExtent = nodeData.getDataExtent('value');\n var edgeDataExtent = edgeData.getDataExtent('value'); // var edgeDataExtent = edgeData.getDataExtent('value');\n\n var repulsion = forceModel.get('repulsion');\n var edgeLength = forceModel.get('edgeLength');\n\n if (!zrUtil.isArray(repulsion)) {\n repulsion = [repulsion, repulsion];\n }\n\n if (!zrUtil.isArray(edgeLength)) {\n edgeLength = [edgeLength, edgeLength];\n } // Larger value has smaller length\n\n\n edgeLength = [edgeLength[1], edgeLength[0]];\n var nodes = nodeData.mapArray('value', function (value, idx) {\n var point = nodeData.getItemLayout(idx);\n var rep = linearMap(value, nodeDataExtent, repulsion);\n\n if (isNaN(rep)) {\n rep = (repulsion[0] + repulsion[1]) / 2;\n }\n\n return {\n w: rep,\n rep: rep,\n fixed: nodeData.getItemModel(idx).get('fixed'),\n p: !point || isNaN(point[0]) || isNaN(point[1]) ? null : point\n };\n });\n var edges = edgeData.mapArray('value', function (value, idx) {\n var edge = graph.getEdgeByIndex(idx);\n var d = linearMap(value, edgeDataExtent, edgeLength);\n\n if (isNaN(d)) {\n d = (edgeLength[0] + edgeLength[1]) / 2;\n }\n\n var edgeModel = edge.getModel();\n var curveness = zrUtil.retrieve3(edgeModel.get('lineStyle.curveness'), -getCurvenessForEdge(edge, graphSeries, idx, true), 0);\n return {\n n1: nodes[edge.node1.dataIndex],\n n2: nodes[edge.node2.dataIndex],\n d: d,\n curveness: curveness,\n ignoreForceLayout: edgeModel.get('ignoreForceLayout')\n };\n });\n var coordSys = graphSeries.coordinateSystem;\n var rect = coordSys.getBoundingRect();\n var forceInstance = forceLayout(nodes, edges, {\n rect: rect,\n gravity: forceModel.get('gravity'),\n friction: forceModel.get('friction')\n });\n var oldStep = forceInstance.step;\n\n forceInstance.step = function (cb) {\n for (var i = 0, l = nodes.length; i < l; i++) {\n if (nodes[i].fixed) {\n // Write back to layout instance\n vec2.copy(nodes[i].p, graph.getNodeByIndex(i).getLayout());\n }\n }\n\n oldStep(function (nodes, edges, stopped) {\n for (var i = 0, l = nodes.length; i < l; i++) {\n if (!nodes[i].fixed) {\n graph.getNodeByIndex(i).setLayout(nodes[i].p);\n }\n\n preservedPoints[nodeData.getId(i)] = nodes[i].p;\n }\n\n for (var i = 0, l = edges.length; i < l; i++) {\n var e = edges[i];\n var edge = graph.getEdgeByIndex(i);\n var p1 = e.n1.p;\n var p2 = e.n2.p;\n var points = edge.getLayout();\n points = points ? points.slice() : [];\n points[0] = points[0] || [];\n points[1] = points[1] || [];\n vec2.copy(points[0], p1);\n vec2.copy(points[1], p2);\n\n if (+e.curveness) {\n points[2] = [(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * e.curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * e.curveness];\n }\n\n edge.setLayout(points);\n } // Update layout\n\n\n cb && cb(stopped);\n });\n };\n\n graphSeries.forceLayout = forceInstance;\n graphSeries.preservedPoints = preservedPoints; // Step to get the layout\n\n forceInstance.step();\n } else {\n // Remove prev injected forceLayout instance\n graphSeries.forceLayout = null;\n }\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\nvar _roamHelper = require(\"../../action/roamHelper\");\n\nvar updateCenterAndZoom = _roamHelper.updateCenterAndZoom;\n\nrequire(\"../helper/focusNodeAdjacencyAction\");\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 actionInfo = {\n type: 'graphRoam',\n event: 'graphRoam',\n update: 'none'\n};\n/**\n * @payload\n * @property {string} name Series name\n * @property {number} [dx]\n * @property {number} [dy]\n * @property {number} [zoom]\n * @property {number} [originX]\n * @property {number} [originY]\n */\n\necharts.registerAction(actionInfo, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'series',\n query: payload\n }, function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var res = updateCenterAndZoom(coordSys, payload);\n seriesModel.setCenter && seriesModel.setCenter(res.center);\n seriesModel.setZoom && seriesModel.setZoom(res.zoom);\n });\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* 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 getNodeGlobalScale(seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys.type !== 'view') {\n return 1;\n }\n\n var nodeScaleRatio = seriesModel.option.nodeScaleRatio;\n var groupScale = coordSys.scale;\n var groupZoom = groupScale && groupScale[0] || 1; // Scale node when zoom changes\n\n var roamZoom = coordSys.getZoom();\n var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;\n return nodeScale / groupZoom;\n}\n\nfunction getSymbolSize(node) {\n var symbolSize = node.getVisual('symbolSize');\n\n if (symbolSize instanceof Array) {\n symbolSize = (symbolSize[0] + symbolSize[1]) / 2;\n }\n\n return +symbolSize;\n}\n\nexports.getNodeGlobalScale = getNodeGlobalScale;\nexports.getSymbolSize = getSymbolSize;","\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 _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\n\nvar _simpleLayoutHelper = require(\"./simpleLayoutHelper\");\n\nvar simpleLayout = _simpleLayoutHelper.simpleLayout;\nvar simpleLayoutEdge = _simpleLayoutHelper.simpleLayoutEdge;\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(ecModel, api) {\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n var layout = seriesModel.get('layout');\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.type !== 'view') {\n var data = seriesModel.getData();\n var dimensions = [];\n each(coordSys.dimensions, function (coordDim) {\n dimensions = dimensions.concat(data.mapDimension(coordDim, true));\n });\n\n for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) {\n var value = [];\n var hasValue = false;\n\n for (var i = 0; i < dimensions.length; i++) {\n var val = data.get(dimensions[i], dataIndex);\n\n if (!isNaN(val)) {\n hasValue = true;\n }\n\n value.push(val);\n }\n\n if (hasValue) {\n data.setItemLayout(dataIndex, coordSys.dataToPoint(value));\n } else {\n // Also {Array.}, not undefined to avoid if...else... statement\n data.setItemLayout(dataIndex, [NaN, NaN]);\n }\n }\n\n simpleLayoutEdge(data.graph, seriesModel);\n } else if (!layout || layout === 'none') {\n simpleLayout(seriesModel);\n }\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 vec2 = require(\"zrender/lib/core/vector\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _multipleGraphEdgeHelper = require(\"../helper/multipleGraphEdgeHelper\");\n\nvar getCurvenessForEdge = _multipleGraphEdgeHelper.getCurvenessForEdge;\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 simpleLayout(seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.type !== 'view') {\n return;\n }\n\n var graph = seriesModel.getGraph();\n graph.eachNode(function (node) {\n var model = node.getModel();\n node.setLayout([+model.get('x'), +model.get('y')]);\n });\n simpleLayoutEdge(graph, seriesModel);\n}\n\nfunction simpleLayoutEdge(graph, seriesModel) {\n graph.eachEdge(function (edge, index) {\n var curveness = zrUtil.retrieve3(edge.getModel().get('lineStyle.curveness'), -getCurvenessForEdge(edge, seriesModel, index, true), 0);\n var p1 = vec2.clone(edge.node1.getLayout());\n var p2 = vec2.clone(edge.node2.getLayout());\n var points = [p1, p2];\n\n if (+curveness) {\n points.push([(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness]);\n }\n\n edge.setLayout(points);\n });\n}\n\nexports.simpleLayout = simpleLayout;\nexports.simpleLayoutEdge = simpleLayoutEdge;","\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\nrequire(\"./heatmap/HeatmapSeries\");\n\nrequire(\"./heatmap/HeatmapView\");","\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*/\n\n/* global Uint8ClampedArray */\nvar GRADIENT_LEVELS = 256;\n/**\n * Heatmap Chart\n *\n * @class\n */\n\nfunction Heatmap() {\n var canvas = zrUtil.createCanvas();\n this.canvas = canvas;\n this.blurSize = 30;\n this.pointSize = 20;\n this.maxOpacity = 1;\n this.minOpacity = 0;\n this._gradientPixels = {};\n}\n\nHeatmap.prototype = {\n /**\n * Renders Heatmap and returns the rendered canvas\n * @param {Array} data array of data, each has x, y, value\n * @param {number} width canvas width\n * @param {number} height canvas height\n */\n update: function (data, width, height, normalize, colorFunc, isInRange) {\n var brush = this._getBrush();\n\n var gradientInRange = this._getGradient(data, colorFunc, 'inRange');\n\n var gradientOutOfRange = this._getGradient(data, colorFunc, 'outOfRange');\n\n var r = this.pointSize + this.blurSize;\n var canvas = this.canvas;\n var ctx = canvas.getContext('2d');\n var len = data.length;\n canvas.width = width;\n canvas.height = height;\n\n for (var i = 0; i < len; ++i) {\n var p = data[i];\n var x = p[0];\n var y = p[1];\n var value = p[2]; // calculate alpha using value\n\n var alpha = normalize(value); // draw with the circle brush with alpha\n\n ctx.globalAlpha = alpha;\n ctx.drawImage(brush, x - r, y - r);\n }\n\n if (!canvas.width || !canvas.height) {\n // Avoid \"Uncaught DOMException: Failed to execute 'getImageData' on\n // 'CanvasRenderingContext2D': The source height is 0.\"\n return canvas;\n } // colorize the canvas using alpha value and set with gradient\n\n\n var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n var pixels = imageData.data;\n var offset = 0;\n var pixelLen = pixels.length;\n var minOpacity = this.minOpacity;\n var maxOpacity = this.maxOpacity;\n var diffOpacity = maxOpacity - minOpacity;\n\n while (offset < pixelLen) {\n var alpha = pixels[offset + 3] / 256;\n var gradientOffset = Math.floor(alpha * (GRADIENT_LEVELS - 1)) * 4; // Simple optimize to ignore the empty data\n\n if (alpha > 0) {\n var gradient = isInRange(alpha) ? gradientInRange : gradientOutOfRange; // Any alpha > 0 will be mapped to [minOpacity, maxOpacity]\n\n alpha > 0 && (alpha = alpha * diffOpacity + minOpacity);\n pixels[offset++] = gradient[gradientOffset];\n pixels[offset++] = gradient[gradientOffset + 1];\n pixels[offset++] = gradient[gradientOffset + 2];\n pixels[offset++] = gradient[gradientOffset + 3] * alpha * 256;\n } else {\n offset += 4;\n }\n }\n\n ctx.putImageData(imageData, 0, 0);\n return canvas;\n },\n\n /**\n * get canvas of a black circle brush used for canvas to draw later\n * @private\n * @returns {Object} circle brush canvas\n */\n _getBrush: function () {\n var brushCanvas = this._brushCanvas || (this._brushCanvas = zrUtil.createCanvas()); // set brush size\n\n var r = this.pointSize + this.blurSize;\n var d = r * 2;\n brushCanvas.width = d;\n brushCanvas.height = d;\n var ctx = brushCanvas.getContext('2d');\n ctx.clearRect(0, 0, d, d); // in order to render shadow without the distinct circle,\n // draw the distinct circle in an invisible place,\n // and use shadowOffset to draw shadow in the center of the canvas\n\n ctx.shadowOffsetX = d;\n ctx.shadowBlur = this.blurSize; // draw the shadow in black, and use alpha and shadow blur to generate\n // color in color map\n\n ctx.shadowColor = '#000'; // draw circle in the left to the canvas\n\n ctx.beginPath();\n ctx.arc(-r, r, this.pointSize, 0, Math.PI * 2, true);\n ctx.closePath();\n ctx.fill();\n return brushCanvas;\n },\n\n /**\n * get gradient color map\n * @private\n */\n _getGradient: function (data, colorFunc, state) {\n var gradientPixels = this._gradientPixels;\n var pixelsSingleState = gradientPixels[state] || (gradientPixels[state] = new Uint8ClampedArray(256 * 4));\n var color = [0, 0, 0, 0];\n var off = 0;\n\n for (var i = 0; i < 256; i++) {\n colorFunc[state](i / 255, true, color);\n pixelsSingleState[off++] = color[0];\n pixelsSingleState[off++] = color[1];\n pixelsSingleState[off++] = color[2];\n pixelsSingleState[off++] = color[3];\n }\n\n return pixelsSingleState;\n }\n};\nvar _default = Heatmap;\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 SeriesModel = require(\"../../model/Series\");\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\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 _default = SeriesModel.extend({\n type: 'series.heatmap',\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n generateCoord: 'value'\n });\n },\n preventIncremental: function () {\n var coordSysCreator = CoordinateSystem.get(this.get('coordinateSystem'));\n\n if (coordSysCreator && coordSysCreator.dimensions) {\n return coordSysCreator.dimensions[0] === 'lng' && coordSysCreator.dimensions[1] === 'lat';\n }\n },\n defaultOption: {\n // Cartesian2D or geo\n coordinateSystem: 'cartesian2d',\n zlevel: 0,\n z: 2,\n // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // Geo coordinate system\n geoIndex: 0,\n blurSize: 30,\n pointSize: 20,\n maxOpacity: 1,\n minOpacity: 0\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar HeatmapLayer = require(\"./HeatmapLayer\");\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 getIsInPiecewiseRange(dataExtent, pieceList, selected) {\n var dataSpan = dataExtent[1] - dataExtent[0];\n pieceList = zrUtil.map(pieceList, function (piece) {\n return {\n interval: [(piece.interval[0] - dataExtent[0]) / dataSpan, (piece.interval[1] - dataExtent[0]) / dataSpan]\n };\n });\n var len = pieceList.length;\n var lastIndex = 0;\n return function (val) {\n // Try to find in the location of the last found\n for (var i = lastIndex; i < len; i++) {\n var interval = pieceList[i].interval;\n\n if (interval[0] <= val && val <= interval[1]) {\n lastIndex = i;\n break;\n }\n }\n\n if (i === len) {\n // Not found, back interation\n for (var i = lastIndex - 1; i >= 0; i--) {\n var interval = pieceList[i].interval;\n\n if (interval[0] <= val && val <= interval[1]) {\n lastIndex = i;\n break;\n }\n }\n }\n\n return i >= 0 && i < len && selected[i];\n };\n}\n\nfunction getIsInContinuousRange(dataExtent, range) {\n var dataSpan = dataExtent[1] - dataExtent[0];\n range = [(range[0] - dataExtent[0]) / dataSpan, (range[1] - dataExtent[0]) / dataSpan];\n return function (val) {\n return val >= range[0] && val <= range[1];\n };\n}\n\nfunction isGeoCoordSys(coordSys) {\n var dimensions = coordSys.dimensions; // Not use coorSys.type === 'geo' because coordSys maybe extended\n\n return dimensions[0] === 'lng' && dimensions[1] === 'lat';\n}\n\nvar _default = echarts.extendChartView({\n type: 'heatmap',\n render: function (seriesModel, ecModel, api) {\n var visualMapOfThisSeries;\n ecModel.eachComponent('visualMap', function (visualMap) {\n visualMap.eachTargetSeries(function (targetSeries) {\n if (targetSeries === seriesModel) {\n visualMapOfThisSeries = visualMap;\n }\n });\n });\n this.group.removeAll();\n this._incrementalDisplayable = null;\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys.type === 'cartesian2d' || coordSys.type === 'calendar') {\n this._renderOnCartesianAndCalendar(seriesModel, api, 0, seriesModel.getData().count());\n } else if (isGeoCoordSys(coordSys)) {\n this._renderOnGeo(coordSys, seriesModel, visualMapOfThisSeries, api);\n }\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n this.group.removeAll();\n },\n incrementalRender: function (params, seriesModel, ecModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys) {\n this._renderOnCartesianAndCalendar(seriesModel, api, params.start, params.end, true);\n }\n },\n _renderOnCartesianAndCalendar: function (seriesModel, api, start, end, incremental) {\n var coordSys = seriesModel.coordinateSystem;\n var width;\n var height;\n\n if (coordSys.type === 'cartesian2d') {\n var xAxis = coordSys.getAxis('x');\n var yAxis = coordSys.getAxis('y');\n width = xAxis.getBandWidth();\n height = yAxis.getBandWidth();\n }\n\n var group = this.group;\n var data = seriesModel.getData();\n var itemStyleQuery = 'itemStyle';\n var hoverItemStyleQuery = 'emphasis.itemStyle';\n var labelQuery = 'label';\n var hoverLabelQuery = 'emphasis.label';\n var style = seriesModel.getModel(itemStyleQuery).getItemStyle(['color']);\n var hoverStl = seriesModel.getModel(hoverItemStyleQuery).getItemStyle();\n var labelModel = seriesModel.getModel(labelQuery);\n var hoverLabelModel = seriesModel.getModel(hoverLabelQuery);\n var coordSysType = coordSys.type;\n var dataDims = coordSysType === 'cartesian2d' ? [data.mapDimension('x'), data.mapDimension('y'), data.mapDimension('value')] : [data.mapDimension('time'), data.mapDimension('value')];\n\n for (var idx = start; idx < end; idx++) {\n var rect;\n\n if (coordSysType === 'cartesian2d') {\n // Ignore empty data\n if (isNaN(data.get(dataDims[2], idx))) {\n continue;\n }\n\n var point = coordSys.dataToPoint([data.get(dataDims[0], idx), data.get(dataDims[1], idx)]);\n rect = new graphic.Rect({\n shape: {\n x: Math.floor(Math.round(point[0]) - width / 2),\n y: Math.floor(Math.round(point[1]) - height / 2),\n width: Math.ceil(width),\n height: Math.ceil(height)\n },\n style: {\n fill: data.getItemVisual(idx, 'color'),\n opacity: data.getItemVisual(idx, 'opacity')\n }\n });\n } else {\n // Ignore empty data\n if (isNaN(data.get(dataDims[1], idx))) {\n continue;\n }\n\n rect = new graphic.Rect({\n z2: 1,\n shape: coordSys.dataToRect([data.get(dataDims[0], idx)]).contentShape,\n style: {\n fill: data.getItemVisual(idx, 'color'),\n opacity: data.getItemVisual(idx, 'opacity')\n }\n });\n }\n\n var itemModel = data.getItemModel(idx); // Optimization for large datset\n\n if (data.hasItemOption) {\n style = itemModel.getModel(itemStyleQuery).getItemStyle(['color']);\n hoverStl = itemModel.getModel(hoverItemStyleQuery).getItemStyle();\n labelModel = itemModel.getModel(labelQuery);\n hoverLabelModel = itemModel.getModel(hoverLabelQuery);\n }\n\n var rawValue = seriesModel.getRawValue(idx);\n var defaultText = '-';\n\n if (rawValue && rawValue[2] != null) {\n defaultText = rawValue[2];\n }\n\n graphic.setLabelStyle(style, hoverStl, labelModel, hoverLabelModel, {\n labelFetcher: seriesModel,\n labelDataIndex: idx,\n defaultText: defaultText,\n isRectText: true\n });\n rect.setStyle(style);\n graphic.setHoverStyle(rect, data.hasItemOption ? hoverStl : zrUtil.extend({}, hoverStl));\n rect.incremental = incremental; // PENDING\n\n if (incremental) {\n // Rect must use hover layer if it's incremental.\n rect.useHoverLayer = true;\n }\n\n group.add(rect);\n data.setItemGraphicEl(idx, rect);\n }\n },\n _renderOnGeo: function (geo, seriesModel, visualMapModel, api) {\n var inRangeVisuals = visualMapModel.targetVisuals.inRange;\n var outOfRangeVisuals = visualMapModel.targetVisuals.outOfRange; // if (!visualMapping) {\n // throw new Error('Data range must have color visuals');\n // }\n\n var data = seriesModel.getData();\n var hmLayer = this._hmLayer || this._hmLayer || new HeatmapLayer();\n hmLayer.blurSize = seriesModel.get('blurSize');\n hmLayer.pointSize = seriesModel.get('pointSize');\n hmLayer.minOpacity = seriesModel.get('minOpacity');\n hmLayer.maxOpacity = seriesModel.get('maxOpacity');\n var rect = geo.getViewRect().clone();\n var roamTransform = geo.getRoamTransform();\n rect.applyTransform(roamTransform); // Clamp on viewport\n\n var x = Math.max(rect.x, 0);\n var y = Math.max(rect.y, 0);\n var x2 = Math.min(rect.width + rect.x, api.getWidth());\n var y2 = Math.min(rect.height + rect.y, api.getHeight());\n var width = x2 - x;\n var height = y2 - y;\n var dims = [data.mapDimension('lng'), data.mapDimension('lat'), data.mapDimension('value')];\n var points = data.mapArray(dims, function (lng, lat, value) {\n var pt = geo.dataToPoint([lng, lat]);\n pt[0] -= x;\n pt[1] -= y;\n pt.push(value);\n return pt;\n });\n var dataExtent = visualMapModel.getExtent();\n var isInRange = visualMapModel.type === 'visualMap.continuous' ? getIsInContinuousRange(dataExtent, visualMapModel.option.range) : getIsInPiecewiseRange(dataExtent, visualMapModel.getPieceList(), visualMapModel.option.selected);\n hmLayer.update(points, width, height, inRangeVisuals.color.getNormalizer(), {\n inRange: inRangeVisuals.color.getColorMapper(),\n outOfRange: outOfRangeVisuals.color.getColorMapper()\n }, isInRange);\n var img = new graphic.Image({\n style: {\n width: width,\n height: height,\n x: x,\n y: y,\n image: hmLayer.canvas\n },\n silent: true\n });\n this.group.add(img);\n },\n dispose: function () {}\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 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 symbolType = lineData.getItemVisual(idx, name);\n\n if (!symbolType || symbolType === 'none') {\n return;\n }\n\n var color = lineData.getItemVisual(idx, 'color');\n var symbolSize = lineData.getItemVisual(idx, name + 'Size');\n var symbolRotate = lineData.getItemVisual(idx, name + 'Rotate');\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); // rotate by default if symbolRotate is not specified or NaN\n\n symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate) ? void 0 : +symbolRotate * Math.PI / 180 || 0;\n symbolPath.name = name;\n return symbolPath;\n}\n\nfunction createLine(points) {\n var line = new 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); // Fix #12388\n // when symbol is set to be 'arrow' in markLine,\n // symbolRotate value will be ignored, and compulsively use tangent angle.\n // rotate by default if symbol rotation is not specified\n\n var specifiedRotation = symbolFrom.__specifiedRotation;\n\n if (specifiedRotation == null) {\n var tangent = line.tangentAt(0);\n symbolFrom.attr('rotation', Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n } else {\n symbolFrom.attr('rotation', specifiedRotation);\n }\n\n symbolFrom.attr('scale', [invScale * percent, invScale * percent]);\n }\n\n if (symbolTo) {\n symbolTo.attr('position', toPos); // Fix #12388\n // when symbol is set to be 'arrow' in markLine,\n // symbolRotate value will be ignored, and compulsively use tangent angle.\n // rotate by default if symbol rotation is not specified\n\n var specifiedRotation = symbolTo.__specifiedRotation;\n\n if (specifiedRotation == null) {\n var tangent = line.tangentAt(1);\n symbolTo.attr('rotation', -Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n } else {\n symbolTo.attr('rotation', specifiedRotation);\n }\n\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.} [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.} 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: 1,\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.} opt opt or coordDimensions\n * The options in opt, see `echarts/data/helper/createDimensions`\n * @param {Array.} [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*/\nvar KEY_DELIMITER = '-->';\n/**\n * params handler\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @returns {*}\n */\n\nvar getAutoCurvenessParams = function (seriesModel) {\n return seriesModel.get('autoCurveness') || null;\n};\n/**\n * Generate a list of edge curvatures, 20 is the default\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param {number} appendLength\n * @return 20 => [0, -0.2, 0.2, -0.4, 0.4, -0.6, 0.6, -0.8, 0.8, -1, 1, -1.2, 1.2, -1.4, 1.4, -1.6, 1.6, -1.8, 1.8, -2]\n */\n\n\nvar createCurveness = function (seriesModel, appendLength) {\n var autoCurvenessParmas = getAutoCurvenessParams(seriesModel);\n var length = 20;\n var curvenessList = []; // handler the function set\n\n if (typeof autoCurvenessParmas === 'number') {\n length = autoCurvenessParmas;\n } else if (zrUtil.isArray(autoCurvenessParmas)) {\n seriesModel.__curvenessList = autoCurvenessParmas;\n return;\n } // append length\n\n\n if (appendLength > length) {\n length = appendLength;\n } // make sure the length is even\n\n\n var len = length % 2 ? length + 2 : length + 3;\n curvenessList = [];\n\n for (var i = 0; i < len; i++) {\n curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1));\n }\n\n seriesModel.__curvenessList = curvenessList;\n};\n/**\n * Create different cache key data in the positive and negative directions, in order to set the curvature later\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @returns {string} key\n */\n\n\nvar getKeyOfEdges = function (n1, n2, seriesModel) {\n var source = [n1.id, n1.dataIndex].join('.');\n var target = [n2.id, n2.dataIndex].join('.');\n return [seriesModel.uid, source, target].join(KEY_DELIMITER);\n};\n/**\n * get opposite key\n * @param {string} key\n * @returns {string}\n */\n\n\nvar getOppositeKey = function (key) {\n var keys = key.split(KEY_DELIMITER);\n return [keys[0], keys[2], keys[1]].join(KEY_DELIMITER);\n};\n/**\n * get edgeMap with key\n * @param edge\n * @param {module:echarts/model/SeriesModel} seriesModel\n */\n\n\nvar getEdgeFromMap = function (edge, seriesModel) {\n var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\n return seriesModel.__edgeMap[key];\n};\n/**\n * calculate all cases total length\n * @param edge\n * @param seriesModel\n * @returns {number}\n */\n\n\nvar getTotalLengthBetweenNodes = function (edge, seriesModel) {\n var len = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel);\n var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel);\n return len + lenV;\n};\n/**\n *\n * @param key\n */\n\n\nvar getEdgeMapLengthWithKey = function (key, seriesModel) {\n var edgeMap = seriesModel.__edgeMap;\n return edgeMap[key] ? edgeMap[key].length : 0;\n};\n/**\n * Count the number of edges between the same two points, used to obtain the curvature table and the parity of the edge\n * @see /graph/GraphSeries.js@getInitialData\n * @param {module:echarts/model/SeriesModel} seriesModel\n */\n\n\nfunction initCurvenessList(seriesModel) {\n if (!getAutoCurvenessParams(seriesModel)) {\n return;\n }\n\n seriesModel.__curvenessList = [];\n seriesModel.__edgeMap = {}; // calc the array of curveness List\n\n createCurveness(seriesModel);\n}\n/**\n * set edgeMap with key\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param {number} index\n */\n\n\nfunction createEdgeMapForCurveness(n1, n2, seriesModel, index) {\n if (!getAutoCurvenessParams(seriesModel)) {\n return;\n }\n\n var key = getKeyOfEdges(n1, n2, seriesModel);\n var edgeMap = seriesModel.__edgeMap;\n var oppositeEdges = edgeMap[getOppositeKey(key)]; // set direction\n\n if (edgeMap[key] && !oppositeEdges) {\n edgeMap[key].isForward = true;\n } else if (oppositeEdges && edgeMap[key]) {\n oppositeEdges.isForward = true;\n edgeMap[key].isForward = false;\n }\n\n edgeMap[key] = edgeMap[key] || [];\n edgeMap[key].push(index);\n}\n/**\n * get curvature for edge\n * @param edge\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param index\n */\n\n\nfunction getCurvenessForEdge(edge, seriesModel, index, needReverse) {\n var autoCurvenessParams = getAutoCurvenessParams(seriesModel);\n var isArrayParam = zrUtil.isArray(autoCurvenessParams);\n\n if (!autoCurvenessParams) {\n return null;\n }\n\n var edgeArray = getEdgeFromMap(edge, seriesModel);\n\n if (!edgeArray) {\n return null;\n }\n\n var edgeIndex = -1;\n\n for (var i = 0; i < edgeArray.length; i++) {\n if (edgeArray[i] === index) {\n edgeIndex = i;\n break;\n }\n } // if totalLen is Longer createCurveness\n\n\n var totalLen = getTotalLengthBetweenNodes(edge, seriesModel);\n createCurveness(seriesModel, totalLen);\n edge.lineStyle = edge.lineStyle || {}; // if is opposite edge, must set curvenss to opposite number\n\n var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\n var curvenessList = seriesModel.__curvenessList; // if pass array no need parity\n\n var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1;\n\n if (!edgeArray.isForward) {\n // the opposite edge show outside\n var oppositeKey = getOppositeKey(curKey);\n var len = getEdgeMapLengthWithKey(oppositeKey, seriesModel);\n var resValue = curvenessList[edgeIndex + len + parityCorrection]; // isNeedReverse, simple, force type need reverse the curveness in the junction of the forword and the opposite\n\n if (needReverse) {\n // set as array may make the parity handle with the len of opposite\n if (isArrayParam) {\n if (autoCurvenessParams && autoCurvenessParams[0] === 0) {\n return (len + parityCorrection) % 2 ? resValue : -resValue;\n } else {\n return ((len % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue;\n }\n } else {\n return (len + parityCorrection) % 2 ? resValue : -resValue;\n }\n } else {\n return curvenessList[edgeIndex + len + parityCorrection];\n }\n } else {\n return curvenessList[parityCorrection + edgeIndex];\n }\n}\n\nexports.initCurvenessList = initCurvenessList;\nexports.createEdgeMapForCurveness = createEdgeMapForCurveness;\nexports.getCurvenessForEdge = getCurvenessForEdge;","\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;","\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\nrequire(\"./line/LineSeries\");\n\nrequire(\"./line/LineView\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar layoutPoints = require(\"../layout/points\");\n\nvar dataSample = require(\"../processor/dataSample\");\n\nrequire(\"../component/gridSimple\");\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// In case developer forget to include grid component\necharts.registerVisual(visualSymbol('line', 'circle', 'line'));\necharts.registerLayout(layoutPoints('line')); // Down sample after filter\n\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\nvar SeriesModel = require(\"../../model/Series\");\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 _default = SeriesModel.extend({\n type: 'series.line',\n dependencies: ['grid', 'polar'],\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n hoverAnimation: true,\n // stack: null\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // polarIndex: 0,\n // If clip the overflow value\n clip: true,\n // cursor: null,\n label: {\n position: 'top'\n },\n // itemStyle: {\n // },\n lineStyle: {\n width: 2,\n type: 'solid'\n },\n // areaStyle: {\n // origin of areaStyle. Valid values:\n // `'auto'/null/undefined`: from axisLine to data\n // `'start'`: from min to data\n // `'end'`: from data to max\n // origin: 'auto'\n // },\n // false, 'start', 'end', 'middle'\n step: false,\n // Disabled if step is true\n smooth: false,\n smoothMonotone: null,\n symbol: 'emptyCircle',\n symbolSize: 4,\n symbolRotate: null,\n showSymbol: true,\n // `false`: follow the label interval strategy.\n // `true`: show all symbols.\n // `'auto'`: If possible, show all symbols, otherwise\n // follow the label interval strategy.\n showAllSymbol: 'auto',\n // Whether to connect break point.\n connectNulls: false,\n // Sampling for large data. Can be: 'average', 'max', 'min', 'sum'.\n sampling: 'none',\n animationEasing: 'linear',\n // Disable progressive\n progressive: 0,\n hoverLayerThreshold: Infinity\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _bbox = require(\"zrender/lib/core/bbox\");\n\nvar fromPoints = _bbox.fromPoints;\n\nvar SymbolDraw = require(\"../helper/SymbolDraw\");\n\nvar SymbolClz = require(\"../helper/Symbol\");\n\nvar lineAnimationDiff = require(\"./lineAnimationDiff\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar _poly = require(\"./poly\");\n\nvar Polyline = _poly.Polyline;\nvar Polygon = _poly.Polygon;\n\nvar ChartView = require(\"../../view/Chart\");\n\nvar _helper = require(\"./helper\");\n\nvar prepareDataCoordInfo = _helper.prepareDataCoordInfo;\nvar getStackedOnPoint = _helper.getStackedOnPoint;\n\nvar _createClipPathFromCoordSys = require(\"../helper/createClipPathFromCoordSys\");\n\nvar createGridClipPath = _createClipPathFromCoordSys.createGridClipPath;\nvar createPolarClipPath = _createClipPathFromCoordSys.createPolarClipPath;\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// FIXME step not support polar\nfunction isPointsSame(points1, points2) {\n if (points1.length !== points2.length) {\n return;\n }\n\n for (var i = 0; i < points1.length; i++) {\n var p1 = points1[i];\n var p2 = points2[i];\n\n if (p1[0] !== p2[0] || p1[1] !== p2[1]) {\n return;\n }\n }\n\n return true;\n}\n\nfunction getBoundingDiff(points1, points2) {\n var min1 = [];\n var max1 = [];\n var min2 = [];\n var max2 = [];\n fromPoints(points1, min1, max1);\n fromPoints(points2, min2, max2); // Get a max value from each corner of two boundings.\n\n return Math.max(Math.abs(min1[0] - min2[0]), Math.abs(min1[1] - min2[1]), Math.abs(max1[0] - max2[0]), Math.abs(max1[1] - max2[1]));\n}\n\nfunction getSmooth(smooth) {\n return typeof smooth === 'number' ? smooth : smooth ? 0.5 : 0;\n}\n/**\n * @param {module:echarts/coord/cartesian/Cartesian2D|module:echarts/coord/polar/Polar} coordSys\n * @param {module:echarts/data/List} data\n * @param {Object} dataCoordInfo\n * @param {Array.>} points\n */\n\n\nfunction getStackedOnPoints(coordSys, data, dataCoordInfo) {\n if (!dataCoordInfo.valueDim) {\n return [];\n }\n\n var points = [];\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n points.push(getStackedOnPoint(dataCoordInfo, coordSys, data, idx));\n }\n\n return points;\n}\n\nfunction turnPointsIntoStep(points, coordSys, stepTurnAt) {\n var baseAxis = coordSys.getBaseAxis();\n var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\n var stepPoints = [];\n\n for (var i = 0; i < points.length - 1; i++) {\n var nextPt = points[i + 1];\n var pt = points[i];\n stepPoints.push(pt);\n var stepPt = [];\n\n switch (stepTurnAt) {\n case 'end':\n stepPt[baseIndex] = nextPt[baseIndex];\n stepPt[1 - baseIndex] = pt[1 - baseIndex]; // default is start\n\n stepPoints.push(stepPt);\n break;\n\n case 'middle':\n // default is start\n var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;\n var stepPt2 = [];\n stepPt[baseIndex] = stepPt2[baseIndex] = middle;\n stepPt[1 - baseIndex] = pt[1 - baseIndex];\n stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];\n stepPoints.push(stepPt);\n stepPoints.push(stepPt2);\n break;\n\n default:\n stepPt[baseIndex] = pt[baseIndex];\n stepPt[1 - baseIndex] = nextPt[1 - baseIndex]; // default is start\n\n stepPoints.push(stepPt);\n }\n } // Last points\n\n\n points[i] && stepPoints.push(points[i]);\n return stepPoints;\n}\n\nfunction getVisualGradient(data, coordSys) {\n var visualMetaList = data.getVisual('visualMeta');\n\n if (!visualMetaList || !visualMetaList.length || !data.count()) {\n // When data.count() is 0, gradient range can not be calculated.\n return;\n }\n\n if (coordSys.type !== 'cartesian2d') {\n return;\n }\n\n var coordDim;\n var visualMeta;\n\n for (var i = visualMetaList.length - 1; i >= 0; i--) {\n var dimIndex = visualMetaList[i].dimension;\n var dimName = data.dimensions[dimIndex];\n var dimInfo = data.getDimensionInfo(dimName);\n coordDim = dimInfo && dimInfo.coordDim; // Can only be x or y\n\n if (coordDim === 'x' || coordDim === 'y') {\n visualMeta = visualMetaList[i];\n break;\n }\n }\n\n if (!visualMeta) {\n return;\n } // If the area to be rendered is bigger than area defined by LinearGradient,\n // the canvas spec prescribes that the color of the first stop and the last\n // stop should be used. But if two stops are added at offset 0, in effect\n // browsers use the color of the second stop to render area outside\n // LinearGradient. So we can only infinitesimally extend area defined in\n // LinearGradient to render `outerColors`.\n\n\n var axis = coordSys.getAxis(coordDim); // dataToCoor mapping may not be linear, but must be monotonic.\n\n var colorStops = zrUtil.map(visualMeta.stops, function (stop) {\n return {\n coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)),\n color: stop.color\n };\n });\n var stopLen = colorStops.length;\n var outerColors = visualMeta.outerColors.slice();\n\n if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {\n colorStops.reverse();\n outerColors.reverse();\n }\n\n var tinyExtent = 10; // Arbitrary value: 10px\n\n var minCoord = colorStops[0].coord - tinyExtent;\n var maxCoord = colorStops[stopLen - 1].coord + tinyExtent;\n var coordSpan = maxCoord - minCoord;\n\n if (coordSpan < 1e-3) {\n return 'transparent';\n }\n\n zrUtil.each(colorStops, function (stop) {\n stop.offset = (stop.coord - minCoord) / coordSpan;\n });\n colorStops.push({\n offset: stopLen ? colorStops[stopLen - 1].offset : 0.5,\n color: outerColors[1] || 'transparent'\n });\n colorStops.unshift({\n // notice colorStops.length have been changed.\n offset: stopLen ? colorStops[0].offset : 0.5,\n color: outerColors[0] || 'transparent'\n }); // zrUtil.each(colorStops, function (colorStop) {\n // // Make sure each offset has rounded px to avoid not sharp edge\n // colorStop.offset = (Math.round(colorStop.offset * (end - start) + start) - start) / (end - start);\n // });\n\n var gradient = new graphic.LinearGradient(0, 0, 0, 0, colorStops, true);\n gradient[coordDim] = minCoord;\n gradient[coordDim + '2'] = maxCoord;\n return gradient;\n}\n\nfunction getIsIgnoreFunc(seriesModel, data, coordSys) {\n var showAllSymbol = seriesModel.get('showAllSymbol');\n var isAuto = showAllSymbol === 'auto';\n\n if (showAllSymbol && !isAuto) {\n return;\n }\n\n var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\n\n if (!categoryAxis) {\n return;\n } // Note that category label interval strategy might bring some weird effect\n // in some scenario: users may wonder why some of the symbols are not\n // displayed. So we show all symbols as possible as we can.\n\n\n if (isAuto // Simplify the logic, do not determine label overlap here.\n && canShowAllSymbolForCategory(categoryAxis, data)) {\n return;\n } // Otherwise follow the label interval strategy on category axis.\n\n\n var categoryDataDim = data.mapDimension(categoryAxis.dim);\n var labelMap = {};\n zrUtil.each(categoryAxis.getViewLabels(), function (labelItem) {\n labelMap[labelItem.tickValue] = 1;\n });\n return function (dataIndex) {\n return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));\n };\n}\n\nfunction canShowAllSymbolForCategory(categoryAxis, data) {\n // In mose cases, line is monotonous on category axis, and the label size\n // is close with each other. So we check the symbol size and some of the\n // label size alone with the category axis to estimate whether all symbol\n // can be shown without overlap.\n var axisExtent = categoryAxis.getExtent();\n var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis.scale.count();\n isNaN(availSize) && (availSize = 0); // 0/0 is NaN.\n // Sampling some points, max 5.\n\n var dataLen = data.count();\n var step = Math.max(1, Math.round(dataLen / 5));\n\n for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {\n if (SymbolClz.getSymbolSize(data, dataIndex // Only for cartesian, where `isHorizontal` exists.\n )[categoryAxis.isHorizontal() ? 1 : 0] // Empirical number\n * 1.5 > availSize) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction createLineClipPath(coordSys, hasAnimation, seriesModel) {\n if (coordSys.type === 'cartesian2d') {\n var isHorizontal = coordSys.getBaseAxis().isHorizontal();\n var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel); // Expand clip shape to avoid clipping when line value exceeds axis\n\n if (!seriesModel.get('clip', true)) {\n var rectShape = clipPath.shape;\n var expandSize = Math.max(rectShape.width, rectShape.height);\n\n if (isHorizontal) {\n rectShape.y -= expandSize;\n rectShape.height += expandSize * 2;\n } else {\n rectShape.x -= expandSize;\n rectShape.width += expandSize * 2;\n }\n }\n\n return clipPath;\n } else {\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n }\n}\n\nvar _default = ChartView.extend({\n type: 'line',\n init: function () {\n var lineGroup = new graphic.Group();\n var symbolDraw = new SymbolDraw();\n this.group.add(symbolDraw.group);\n this._symbolDraw = symbolDraw;\n this._lineGroup = lineGroup;\n },\n render: function (seriesModel, ecModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var group = this.group;\n var data = seriesModel.getData();\n var lineStyleModel = seriesModel.getModel('lineStyle');\n var areaStyleModel = seriesModel.getModel('areaStyle');\n var points = data.mapArray(data.getItemLayout);\n var isCoordSysPolar = coordSys.type === 'polar';\n var prevCoordSys = this._coordSys;\n var symbolDraw = this._symbolDraw;\n var polyline = this._polyline;\n var polygon = this._polygon;\n var lineGroup = this._lineGroup;\n var hasAnimation = seriesModel.get('animation');\n var isAreaChart = !areaStyleModel.isEmpty();\n var valueOrigin = areaStyleModel.get('origin');\n var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);\n var stackedOnPoints = getStackedOnPoints(coordSys, data, dataCoordInfo);\n var showSymbol = seriesModel.get('showSymbol');\n var isIgnoreFunc = showSymbol && !isCoordSysPolar && getIsIgnoreFunc(seriesModel, data, coordSys); // Remove temporary symbols\n\n var oldData = this._data;\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\n if (el.__temp) {\n group.remove(el);\n oldData.setItemGraphicEl(idx, null);\n }\n }); // Remove previous created symbols if showSymbol changed to false\n\n if (!showSymbol) {\n symbolDraw.remove();\n }\n\n group.add(lineGroup); // FIXME step not support polar\n\n var step = !isCoordSysPolar && seriesModel.get('step');\n var clipShapeForSymbol;\n\n if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) {\n clipShapeForSymbol = coordSys.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.\n // See #7913 and `test/dataZoom-clip.html`.\n\n if (clipShapeForSymbol.width != null) {\n clipShapeForSymbol.x -= 0.1;\n clipShapeForSymbol.y -= 0.1;\n clipShapeForSymbol.width += 0.2;\n clipShapeForSymbol.height += 0.2;\n } else if (clipShapeForSymbol.r0) {\n clipShapeForSymbol.r0 -= 0.5;\n clipShapeForSymbol.r1 += 0.5;\n }\n }\n\n this._clipShapeForSymbol = clipShapeForSymbol; // Initialization animation or coordinate system changed\n\n if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol\n });\n\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step);\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\n }\n\n polyline = this._newPolyline(points, coordSys, hasAnimation);\n\n if (isAreaChart) {\n polygon = this._newPolygon(points, stackedOnPoints, coordSys, hasAnimation);\n }\n\n lineGroup.setClipPath(createLineClipPath(coordSys, true, seriesModel));\n } else {\n if (isAreaChart && !polygon) {\n // If areaStyle is added\n polygon = this._newPolygon(points, stackedOnPoints, coordSys, hasAnimation);\n } else if (polygon && !isAreaChart) {\n // If areaStyle is removed\n lineGroup.remove(polygon);\n polygon = this._polygon = null;\n } // Update clipPath\n\n\n lineGroup.setClipPath(createLineClipPath(coordSys, false, seriesModel)); // Always update, or it is wrong in the case turning on legend\n // because points are not changed\n\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol\n }); // Stop symbol animation and sync with line points\n // FIXME performance?\n\n data.eachItemGraphicEl(function (el) {\n el.stopAnimation(true);\n }); // In the case data zoom triggerred refreshing frequently\n // Data may not change if line has a category axis. So it should animate nothing\n\n if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) || !isPointsSame(this._points, points)) {\n if (hasAnimation) {\n this._updateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin);\n } else {\n // Not do it in update with animation\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step);\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\n }\n\n polyline.setShape({\n points: points\n });\n polygon && polygon.setShape({\n points: points,\n stackedOnPoints: stackedOnPoints\n });\n }\n }\n }\n\n var visualColor = getVisualGradient(data, coordSys) || data.getVisual('color');\n polyline.useStyle(zrUtil.defaults( // Use color in lineStyle first\n lineStyleModel.getLineStyle(), {\n fill: 'none',\n stroke: visualColor,\n lineJoin: 'bevel'\n }));\n var smooth = seriesModel.get('smooth');\n smooth = getSmooth(seriesModel.get('smooth'));\n polyline.setShape({\n smooth: smooth,\n smoothMonotone: seriesModel.get('smoothMonotone'),\n connectNulls: seriesModel.get('connectNulls')\n });\n\n if (polygon) {\n var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\n var stackedOnSmooth = 0;\n polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {\n fill: visualColor,\n opacity: 0.7,\n lineJoin: 'bevel'\n }));\n\n if (stackedOnSeries) {\n stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\n }\n\n polygon.setShape({\n smooth: smooth,\n stackedOnSmooth: stackedOnSmooth,\n smoothMonotone: seriesModel.get('smoothMonotone'),\n connectNulls: seriesModel.get('connectNulls')\n });\n }\n\n this._data = data; // Save the coordinate system for transition animation when data changed\n\n this._coordSys = coordSys;\n this._stackedOnPoints = stackedOnPoints;\n this._points = points;\n this._step = step;\n this._valueOrigin = valueOrigin;\n },\n dispose: function () {},\n highlight: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\n var symbol = data.getItemGraphicEl(dataIndex);\n\n if (!symbol) {\n // Create a temporary symbol if it is not exists\n var pt = data.getItemLayout(dataIndex);\n\n if (!pt) {\n // Null data\n return;\n } // fix #11360: should't draw symbol outside clipShapeForSymbol\n\n\n if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(pt[0], pt[1])) {\n return;\n }\n\n symbol = new SymbolClz(data, dataIndex);\n symbol.position = pt;\n symbol.setZ(seriesModel.get('zlevel'), seriesModel.get('z'));\n symbol.ignore = isNaN(pt[0]) || isNaN(pt[1]);\n symbol.__temp = true;\n data.setItemGraphicEl(dataIndex, symbol); // Stop scale animation\n\n symbol.stopSymbolAnimation(true);\n this.group.add(symbol);\n }\n\n symbol.highlight();\n } else {\n // Highlight whole series\n ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload);\n }\n },\n downplay: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n if (dataIndex != null && dataIndex >= 0) {\n var symbol = data.getItemGraphicEl(dataIndex);\n\n if (symbol) {\n if (symbol.__temp) {\n data.setItemGraphicEl(dataIndex, null);\n this.group.remove(symbol);\n } else {\n symbol.downplay();\n }\n }\n } else {\n // FIXME\n // can not downplay completely.\n // Downplay whole series\n ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload);\n }\n },\n\n /**\n * @param {module:zrender/container/Group} group\n * @param {Array.>} points\n * @private\n */\n _newPolyline: function (points) {\n var polyline = this._polyline; // Remove previous created polyline\n\n if (polyline) {\n this._lineGroup.remove(polyline);\n }\n\n polyline = new Polyline({\n shape: {\n points: points\n },\n silent: true,\n z2: 10\n });\n\n this._lineGroup.add(polyline);\n\n this._polyline = polyline;\n return polyline;\n },\n\n /**\n * @param {module:zrender/container/Group} group\n * @param {Array.>} stackedOnPoints\n * @param {Array.>} points\n * @private\n */\n _newPolygon: function (points, stackedOnPoints) {\n var polygon = this._polygon; // Remove previous created polygon\n\n if (polygon) {\n this._lineGroup.remove(polygon);\n }\n\n polygon = new Polygon({\n shape: {\n points: points,\n stackedOnPoints: stackedOnPoints\n },\n silent: true\n });\n\n this._lineGroup.add(polygon);\n\n this._polygon = polygon;\n return polygon;\n },\n\n /**\n * @private\n */\n // FIXME Two value axis\n _updateAnimation: function (data, stackedOnPoints, coordSys, api, step, valueOrigin) {\n var polyline = this._polyline;\n var polygon = this._polygon;\n var seriesModel = data.hostModel;\n var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin);\n var current = diff.current;\n var stackedOnCurrent = diff.stackedOnCurrent;\n var next = diff.next;\n var stackedOnNext = diff.stackedOnNext;\n\n if (step) {\n // TODO If stacked series is not step\n current = turnPointsIntoStep(diff.current, coordSys, step);\n stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step);\n next = turnPointsIntoStep(diff.next, coordSys, step);\n stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step);\n } // Don't apply animation if diff is large.\n // For better result and avoid memory explosion problems like\n // https://github.com/apache/incubator-echarts/issues/12229\n\n\n if (getBoundingDiff(current, next) > 3000 || polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3000) {\n polyline.setShape({\n points: next\n });\n\n if (polygon) {\n polygon.setShape({\n points: next,\n stackedOnPoints: stackedOnNext\n });\n }\n\n return;\n } // `diff.current` is subset of `current` (which should be ensured by\n // turnPointsIntoStep), so points in `__points` can be updated when\n // points in `current` are update during animation.\n\n\n polyline.shape.__points = diff.current;\n polyline.shape.points = current;\n graphic.updateProps(polyline, {\n shape: {\n points: next\n }\n }, seriesModel);\n\n if (polygon) {\n polygon.setShape({\n points: current,\n stackedOnPoints: stackedOnCurrent\n });\n graphic.updateProps(polygon, {\n shape: {\n points: next,\n stackedOnPoints: stackedOnNext\n }\n }, seriesModel);\n }\n\n var updatedDataInfo = [];\n var diffStatus = diff.status;\n\n for (var i = 0; i < diffStatus.length; i++) {\n var cmd = diffStatus[i].cmd;\n\n if (cmd === '=') {\n var el = data.getItemGraphicEl(diffStatus[i].idx1);\n\n if (el) {\n updatedDataInfo.push({\n el: el,\n ptIdx: i // Index of points\n\n });\n }\n }\n }\n\n if (polyline.animators && polyline.animators.length) {\n polyline.animators[0].during(function () {\n for (var i = 0; i < updatedDataInfo.length; i++) {\n var el = updatedDataInfo[i].el;\n el.attr('position', polyline.shape.__points[updatedDataInfo[i].ptIdx]);\n }\n });\n }\n },\n remove: function (ecModel) {\n var group = this.group;\n var oldData = this._data;\n\n this._lineGroup.removeAll();\n\n this._symbolDraw.remove(true); // Remove temporary created elements when highlighting\n\n\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\n if (el.__temp) {\n group.remove(el);\n oldData.setItemGraphicEl(idx, null);\n }\n });\n this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._data = null;\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 _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar map = _util.map;\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 {Object} coordSys\n * @param {module:echarts/data/List} data\n * @param {string} valueOrigin lineSeries.option.areaStyle.origin\n */\nfunction prepareDataCoordInfo(coordSys, data, valueOrigin) {\n var baseAxis = coordSys.getBaseAxis();\n var valueAxis = coordSys.getOtherAxis(baseAxis);\n var valueStart = getValueStart(valueAxis, valueOrigin);\n var baseAxisDim = baseAxis.dim;\n var valueAxisDim = valueAxis.dim;\n var valueDim = data.mapDimension(valueAxisDim);\n var baseDim = data.mapDimension(baseAxisDim);\n var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\n var dims = map(coordSys.dimensions, function (coordDim) {\n return data.mapDimension(coordDim);\n });\n var stacked;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n if (stacked |= isDimensionStacked(data, dims[0]\n /*, dims[1]*/\n )) {\n // jshint ignore:line\n dims[0] = stackResultDim;\n }\n\n if (stacked |= isDimensionStacked(data, dims[1]\n /*, dims[0]*/\n )) {\n // jshint ignore:line\n dims[1] = stackResultDim;\n }\n\n return {\n dataDimsForPoint: dims,\n valueStart: valueStart,\n valueAxisDim: valueAxisDim,\n baseAxisDim: baseAxisDim,\n stacked: !!stacked,\n valueDim: valueDim,\n baseDim: baseDim,\n baseDataOffset: baseDataOffset,\n stackedOverDimension: data.getCalculationInfo('stackedOverDimension')\n };\n}\n\nfunction getValueStart(valueAxis, valueOrigin) {\n var valueStart = 0;\n var extent = valueAxis.scale.getExtent();\n\n if (valueOrigin === 'start') {\n valueStart = extent[0];\n } else if (valueOrigin === 'end') {\n valueStart = extent[1];\n } // auto\n else {\n // Both positive\n if (extent[0] > 0) {\n valueStart = extent[0];\n } // Both negative\n else if (extent[1] < 0) {\n valueStart = extent[1];\n } // If is one positive, and one negative, onZero shall be true\n\n }\n\n return valueStart;\n}\n\nfunction getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {\n var value = NaN;\n\n if (dataCoordInfo.stacked) {\n value = data.get(data.getCalculationInfo('stackedOverDimension'), idx);\n }\n\n if (isNaN(value)) {\n value = dataCoordInfo.valueStart;\n }\n\n var baseDataOffset = dataCoordInfo.baseDataOffset;\n var stackedData = [];\n stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);\n stackedData[1 - baseDataOffset] = value;\n return coordSys.dataToPoint(stackedData);\n}\n\nexports.prepareDataCoordInfo = prepareDataCoordInfo;\nexports.getStackedOnPoint = getStackedOnPoint;","\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 _helper = require(\"./helper\");\n\nvar prepareDataCoordInfo = _helper.prepareDataCoordInfo;\nvar getStackedOnPoint = _helper.getStackedOnPoint;\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// var arrayDiff = require('zrender/src/core/arrayDiff');\n// 'zrender/src/core/arrayDiff' has been used before, but it did\n// not do well in performance when roam with fixed dataZoom window.\n// function convertToIntId(newIdList, oldIdList) {\n// // Generate int id instead of string id.\n// // Compare string maybe slow in score function of arrDiff\n// // Assume id in idList are all unique\n// var idIndicesMap = {};\n// var idx = 0;\n// for (var i = 0; i < newIdList.length; i++) {\n// idIndicesMap[newIdList[i]] = idx;\n// newIdList[i] = idx++;\n// }\n// for (var i = 0; i < oldIdList.length; i++) {\n// var oldId = oldIdList[i];\n// // Same with newIdList\n// if (idIndicesMap[oldId]) {\n// oldIdList[i] = idIndicesMap[oldId];\n// }\n// else {\n// oldIdList[i] = idx++;\n// }\n// }\n// }\nfunction diffData(oldData, newData) {\n var diffResult = [];\n newData.diff(oldData).add(function (idx) {\n diffResult.push({\n cmd: '+',\n idx: idx\n });\n }).update(function (newIdx, oldIdx) {\n diffResult.push({\n cmd: '=',\n idx: oldIdx,\n idx1: newIdx\n });\n }).remove(function (idx) {\n diffResult.push({\n cmd: '-',\n idx: idx\n });\n }).execute();\n return diffResult;\n}\n\nfunction _default(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {\n var diff = diffData(oldData, newData); // var newIdList = newData.mapArray(newData.getId);\n // var oldIdList = oldData.mapArray(oldData.getId);\n // convertToIntId(newIdList, oldIdList);\n // // FIXME One data ?\n // diff = arrayDiff(oldIdList, newIdList);\n\n var currPoints = [];\n var nextPoints = []; // Points for stacking base line\n\n var currStackedPoints = [];\n var nextStackedPoints = [];\n var status = [];\n var sortedIndices = [];\n var rawIndices = [];\n var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);\n var oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin);\n\n for (var i = 0; i < diff.length; i++) {\n var diffItem = diff[i];\n var pointAdded = true; // FIXME, animation is not so perfect when dataZoom window moves fast\n // Which is in case remvoing or add more than one data in the tail or head\n\n switch (diffItem.cmd) {\n case '=':\n var currentPt = oldData.getItemLayout(diffItem.idx);\n var nextPt = newData.getItemLayout(diffItem.idx1); // If previous data is NaN, use next point directly\n\n if (isNaN(currentPt[0]) || isNaN(currentPt[1])) {\n currentPt = nextPt.slice();\n }\n\n currPoints.push(currentPt);\n nextPoints.push(nextPt);\n currStackedPoints.push(oldStackedOnPoints[diffItem.idx]);\n nextStackedPoints.push(newStackedOnPoints[diffItem.idx1]);\n rawIndices.push(newData.getRawIndex(diffItem.idx1));\n break;\n\n case '+':\n var idx = diffItem.idx;\n currPoints.push(oldCoordSys.dataToPoint([newData.get(newDataOldCoordInfo.dataDimsForPoint[0], idx), newData.get(newDataOldCoordInfo.dataDimsForPoint[1], idx)]));\n nextPoints.push(newData.getItemLayout(idx).slice());\n currStackedPoints.push(getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, idx));\n nextStackedPoints.push(newStackedOnPoints[idx]);\n rawIndices.push(newData.getRawIndex(idx));\n break;\n\n case '-':\n var idx = diffItem.idx;\n var rawIndex = oldData.getRawIndex(idx); // Data is replaced. In the case of dynamic data queue\n // FIXME FIXME FIXME\n\n if (rawIndex !== idx) {\n currPoints.push(oldData.getItemLayout(idx));\n nextPoints.push(newCoordSys.dataToPoint([oldData.get(oldDataNewCoordInfo.dataDimsForPoint[0], idx), oldData.get(oldDataNewCoordInfo.dataDimsForPoint[1], idx)]));\n currStackedPoints.push(oldStackedOnPoints[idx]);\n nextStackedPoints.push(getStackedOnPoint(oldDataNewCoordInfo, newCoordSys, oldData, idx));\n rawIndices.push(rawIndex);\n } else {\n pointAdded = false;\n }\n\n } // Original indices\n\n\n if (pointAdded) {\n status.push(diffItem);\n sortedIndices.push(sortedIndices.length);\n }\n } // Diff result may be crossed if all items are changed\n // Sort by data index\n\n\n sortedIndices.sort(function (a, b) {\n return rawIndices[a] - rawIndices[b];\n });\n var sortedCurrPoints = [];\n var sortedNextPoints = [];\n var sortedCurrStackedPoints = [];\n var sortedNextStackedPoints = [];\n var sortedStatus = [];\n\n for (var i = 0; i < sortedIndices.length; i++) {\n var idx = sortedIndices[i];\n sortedCurrPoints[i] = currPoints[idx];\n sortedNextPoints[i] = nextPoints[idx];\n sortedCurrStackedPoints[i] = currStackedPoints[idx];\n sortedNextStackedPoints[i] = nextStackedPoints[idx];\n sortedStatus[i] = status[idx];\n }\n\n return {\n current: sortedCurrPoints,\n next: sortedNextPoints,\n stackedOnCurrent: sortedCurrStackedPoints,\n stackedOnNext: sortedNextStackedPoints,\n status: sortedStatus\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 Path = require(\"zrender/lib/graphic/Path\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar fixClipWithShadow = require(\"zrender/lib/graphic/helper/fixClipWithShadow\");\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// Poly path support NaN point\nvar vec2Min = vec2.min;\nvar vec2Max = vec2.max;\nvar scaleAndAdd = vec2.scaleAndAdd;\nvar v2Copy = vec2.copy; // Temporary variable\n\nvar v = [];\nvar cp0 = [];\nvar cp1 = [];\n\nfunction isPointNull(p) {\n return isNaN(p[0]) || isNaN(p[1]);\n}\n\nfunction drawSegment(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n // if (smoothMonotone == null) {\n // if (isMono(points, 'x')) {\n // return drawMono(ctx, points, start, segLen, allLen,\n // dir, smoothMin, smoothMax, smooth, 'x', connectNulls);\n // }\n // else if (isMono(points, 'y')) {\n // return drawMono(ctx, points, start, segLen, allLen,\n // dir, smoothMin, smoothMax, smooth, 'y', connectNulls);\n // }\n // else {\n // return drawNonMono.apply(this, arguments);\n // }\n // }\n // else if (smoothMonotone !== 'none' && isMono(points, smoothMonotone)) {\n // return drawMono.apply(this, arguments);\n // }\n // else {\n // return drawNonMono.apply(this, arguments);\n // }\n if (smoothMonotone === 'none' || !smoothMonotone) {\n return drawNonMono.apply(this, arguments);\n } else {\n return drawMono.apply(this, arguments);\n }\n}\n/**\n * Check if points is in monotone.\n *\n * @param {number[][]} points Array of points which is in [x, y] form\n * @param {string} smoothMonotone 'x', 'y', or 'none', stating for which\n * dimension that is checking.\n * If is 'none', `drawNonMono` should be\n * called.\n * If is undefined, either being monotone\n * in 'x' or 'y' will call `drawMono`.\n */\n// function isMono(points, smoothMonotone) {\n// if (points.length <= 1) {\n// return true;\n// }\n// var dim = smoothMonotone === 'x' ? 0 : 1;\n// var last = points[0][dim];\n// var lastDiff = 0;\n// for (var i = 1; i < points.length; ++i) {\n// var diff = points[i][dim] - last;\n// if (!isNaN(diff) && !isNaN(lastDiff)\n// && diff !== 0 && lastDiff !== 0\n// && ((diff >= 0) !== (lastDiff >= 0))\n// ) {\n// return false;\n// }\n// if (!isNaN(diff) && diff !== 0) {\n// lastDiff = diff;\n// last = points[i][dim];\n// }\n// }\n// return true;\n// }\n\n/**\n * Draw smoothed line in monotone, in which only vertical or horizontal bezier\n * control points will be used. This should be used when points are monotone\n * either in x or y dimension.\n */\n\n\nfunction drawMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n var prevIdx = 0;\n var idx = start;\n\n for (var k = 0; k < segLen; k++) {\n var p = points[idx];\n\n if (idx >= allLen || idx < 0) {\n break;\n }\n\n if (isPointNull(p)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n\n break;\n }\n\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n } else {\n if (smooth > 0) {\n var prevP = points[prevIdx];\n var dim = smoothMonotone === 'y' ? 1 : 0; // Length of control point to p, either in x or y, but not both\n\n var ctrlLen = (p[dim] - prevP[dim]) * smooth;\n v2Copy(cp0, prevP);\n cp0[dim] = prevP[dim] + ctrlLen;\n v2Copy(cp1, p);\n cp1[dim] = p[dim] - ctrlLen;\n ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]);\n } else {\n ctx.lineTo(p[0], p[1]);\n }\n }\n\n prevIdx = idx;\n idx += dir;\n }\n\n return k;\n}\n/**\n * Draw smoothed line in non-monotone, in may cause undesired curve in extreme\n * situations. This should be used when points are non-monotone neither in x or\n * y dimension.\n */\n\n\nfunction drawNonMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n var prevIdx = 0;\n var idx = start;\n\n for (var k = 0; k < segLen; k++) {\n var p = points[idx];\n\n if (idx >= allLen || idx < 0) {\n break;\n }\n\n if (isPointNull(p)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n\n break;\n }\n\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n v2Copy(cp0, p);\n } else {\n if (smooth > 0) {\n var nextIdx = idx + dir;\n var nextP = points[nextIdx];\n\n if (connectNulls) {\n // Find next point not null\n while (nextP && isPointNull(points[nextIdx])) {\n nextIdx += dir;\n nextP = points[nextIdx];\n }\n }\n\n var ratioNextSeg = 0.5;\n var prevP = points[prevIdx];\n var nextP = points[nextIdx]; // Last point\n\n if (!nextP || isPointNull(nextP)) {\n v2Copy(cp1, p);\n } else {\n // If next data is null in not connect case\n if (isPointNull(nextP) && !connectNulls) {\n nextP = p;\n }\n\n vec2.sub(v, nextP, prevP);\n var lenPrevSeg;\n var lenNextSeg;\n\n if (smoothMonotone === 'x' || smoothMonotone === 'y') {\n var dim = smoothMonotone === 'x' ? 0 : 1;\n lenPrevSeg = Math.abs(p[dim] - prevP[dim]);\n lenNextSeg = Math.abs(p[dim] - nextP[dim]);\n } else {\n lenPrevSeg = vec2.dist(p, prevP);\n lenNextSeg = vec2.dist(p, nextP);\n } // Use ratio of seg length\n\n\n ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\n scaleAndAdd(cp1, p, v, -smooth * (1 - ratioNextSeg));\n } // Smooth constraint\n\n\n vec2Min(cp0, cp0, smoothMax);\n vec2Max(cp0, cp0, smoothMin);\n vec2Min(cp1, cp1, smoothMax);\n vec2Max(cp1, cp1, smoothMin);\n ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]); // cp0 of next segment\n\n scaleAndAdd(cp0, p, v, smooth * ratioNextSeg);\n } else {\n ctx.lineTo(p[0], p[1]);\n }\n }\n\n prevIdx = idx;\n idx += dir;\n }\n\n return k;\n}\n\nfunction getBoundingBox(points, smoothConstraint) {\n var ptMin = [Infinity, Infinity];\n var ptMax = [-Infinity, -Infinity];\n\n if (smoothConstraint) {\n for (var i = 0; i < points.length; i++) {\n var pt = points[i];\n\n if (pt[0] < ptMin[0]) {\n ptMin[0] = pt[0];\n }\n\n if (pt[1] < ptMin[1]) {\n ptMin[1] = pt[1];\n }\n\n if (pt[0] > ptMax[0]) {\n ptMax[0] = pt[0];\n }\n\n if (pt[1] > ptMax[1]) {\n ptMax[1] = pt[1];\n }\n }\n }\n\n return {\n min: smoothConstraint ? ptMin : ptMax,\n max: smoothConstraint ? ptMax : ptMin\n };\n}\n\nvar Polyline = Path.extend({\n type: 'ec-polyline',\n shape: {\n points: [],\n smooth: 0,\n smoothConstraint: true,\n smoothMonotone: null,\n connectNulls: false\n },\n style: {\n fill: null,\n stroke: '#000'\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var points = shape.points;\n var i = 0;\n var len = points.length;\n var result = getBoundingBox(points, shape.smoothConstraint);\n\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i])) {\n break;\n }\n }\n }\n\n while (i < len) {\n i += drawSegment(ctx, points, i, len, len, 1, result.min, result.max, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\n }\n }\n});\nvar Polygon = Path.extend({\n type: 'ec-polygon',\n shape: {\n points: [],\n // Offset between stacked base points and points\n stackedOnPoints: [],\n smooth: 0,\n stackedOnSmooth: 0,\n smoothConstraint: true,\n smoothMonotone: null,\n connectNulls: false\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var points = shape.points;\n var stackedOnPoints = shape.stackedOnPoints;\n var i = 0;\n var len = points.length;\n var smoothMonotone = shape.smoothMonotone;\n var bbox = getBoundingBox(points, shape.smoothConstraint);\n var stackedOnBBox = getBoundingBox(stackedOnPoints, shape.smoothConstraint);\n\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i])) {\n break;\n }\n }\n }\n\n while (i < len) {\n var k = drawSegment(ctx, points, i, len, len, 1, bbox.min, bbox.max, shape.smooth, smoothMonotone, shape.connectNulls);\n drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, stackedOnBBox.min, stackedOnBBox.max, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\n i += k + 1;\n ctx.closePath();\n }\n }\n});\nexports.Polyline = Polyline;\nexports.Polygon = Polygon;","\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\nrequire(\"./lines/LinesSeries\");\n\nrequire(\"./lines/LinesView\");\n\nvar linesLayout = require(\"./lines/linesLayout\");\n\nvar linesVisual = require(\"./lines/linesVisual\");\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*/\necharts.registerLayout(linesLayout);\necharts.registerVisual(linesVisual);","\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar List = require(\"../../data/List\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar concatArray = _util.concatArray;\nvar mergeAll = _util.mergeAll;\nvar map = _util.map;\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\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 Uint32Array, Float64Array, Float32Array */\nvar Uint32Arr = typeof Uint32Array === 'undefined' ? Array : Uint32Array;\nvar Float64Arr = typeof Float64Array === 'undefined' ? Array : Float64Array;\n\nfunction compatEc2(seriesOpt) {\n var data = seriesOpt.data;\n\n if (data && data[0] && data[0][0] && data[0][0].coord) {\n seriesOpt.data = map(data, function (itemOpt) {\n var coords = [itemOpt[0].coord, itemOpt[1].coord];\n var target = {\n coords: coords\n };\n\n if (itemOpt[0].name) {\n target.fromName = itemOpt[0].name;\n }\n\n if (itemOpt[1].name) {\n target.toName = itemOpt[1].name;\n }\n\n return mergeAll([target, itemOpt[0], itemOpt[1]]);\n });\n }\n}\n\nvar LinesSeries = SeriesModel.extend({\n type: 'series.lines',\n dependencies: ['grid', 'polar'],\n visualColorAccessPath: 'lineStyle.color',\n init: function (option) {\n // The input data may be null/undefined.\n option.data = option.data || []; // Not using preprocessor because mergeOption may not have series.type\n\n compatEc2(option);\n\n var result = this._processFlatCoordsArray(option.data);\n\n this._flatCoords = result.flatCoords;\n this._flatCoordsOffset = result.flatCoordsOffset;\n\n if (result.flatCoords) {\n option.data = new Float32Array(result.count);\n }\n\n LinesSeries.superApply(this, 'init', arguments);\n },\n mergeOption: function (option) {\n compatEc2(option);\n\n if (option.data) {\n // Only update when have option data to merge.\n var result = this._processFlatCoordsArray(option.data);\n\n this._flatCoords = result.flatCoords;\n this._flatCoordsOffset = result.flatCoordsOffset;\n\n if (result.flatCoords) {\n option.data = new Float32Array(result.count);\n }\n }\n\n LinesSeries.superApply(this, 'mergeOption', arguments);\n },\n appendData: function (params) {\n var result = this._processFlatCoordsArray(params.data);\n\n if (result.flatCoords) {\n if (!this._flatCoords) {\n this._flatCoords = result.flatCoords;\n this._flatCoordsOffset = result.flatCoordsOffset;\n } else {\n this._flatCoords = concatArray(this._flatCoords, result.flatCoords);\n this._flatCoordsOffset = concatArray(this._flatCoordsOffset, result.flatCoordsOffset);\n }\n\n params.data = new Float32Array(result.count);\n }\n\n this.getRawData().appendData(params.data);\n },\n _getCoordsFromItemModel: function (idx) {\n var itemModel = this.getData().getItemModel(idx);\n var coords = itemModel.option instanceof Array ? itemModel.option : itemModel.getShallow('coords');\n return coords;\n },\n getLineCoordsCount: function (idx) {\n if (this._flatCoordsOffset) {\n return this._flatCoordsOffset[idx * 2 + 1];\n } else {\n return this._getCoordsFromItemModel(idx).length;\n }\n },\n getLineCoords: function (idx, out) {\n if (this._flatCoordsOffset) {\n var offset = this._flatCoordsOffset[idx * 2];\n var len = this._flatCoordsOffset[idx * 2 + 1];\n\n for (var i = 0; i < len; i++) {\n out[i] = out[i] || [];\n out[i][0] = this._flatCoords[offset + i * 2];\n out[i][1] = this._flatCoords[offset + i * 2 + 1];\n }\n\n return len;\n } else {\n var coords = this._getCoordsFromItemModel(idx);\n\n for (var i = 0; i < coords.length; i++) {\n out[i] = out[i] || [];\n out[i][0] = coords[i][0];\n out[i][1] = coords[i][1];\n }\n\n return coords.length;\n }\n },\n _processFlatCoordsArray: function (data) {\n var startOffset = 0;\n\n if (this._flatCoords) {\n startOffset = this._flatCoords.length;\n } // Stored as a typed array. In format\n // Points Count(2) | x | y | x | y | Points Count(3) | x | y | x | y | x | y |\n\n\n if (typeof data[0] === 'number') {\n var len = data.length; // Store offset and len of each segment\n\n var coordsOffsetAndLenStorage = new Uint32Arr(len);\n var coordsStorage = new Float64Arr(len);\n var coordsCursor = 0;\n var offsetCursor = 0;\n var dataCount = 0;\n\n for (var i = 0; i < len;) {\n dataCount++;\n var count = data[i++]; // Offset\n\n coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset; // Len\n\n coordsOffsetAndLenStorage[offsetCursor++] = count;\n\n for (var k = 0; k < count; k++) {\n var x = data[i++];\n var y = data[i++];\n coordsStorage[coordsCursor++] = x;\n coordsStorage[coordsCursor++] = y;\n\n if (i > len) {}\n }\n }\n\n return {\n flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor),\n flatCoords: coordsStorage,\n count: dataCount\n };\n }\n\n return {\n flatCoordsOffset: null,\n flatCoords: null,\n count: data.length\n };\n },\n getInitialData: function (option, ecModel) {\n var lineData = new List(['value'], this);\n lineData.hasItemOption = false;\n lineData.initData(option.data, [], function (dataItem, dimName, dataIndex, dimIndex) {\n // dataItem is simply coords\n if (dataItem instanceof Array) {\n return NaN;\n } else {\n lineData.hasItemOption = true;\n var value = dataItem.value;\n\n if (value != null) {\n return value instanceof Array ? value[dimIndex] : value;\n }\n }\n });\n return lineData;\n },\n formatTooltip: function (dataIndex) {\n var data = this.getData();\n var itemModel = data.getItemModel(dataIndex);\n var name = itemModel.get('name');\n\n if (name) {\n return name;\n }\n\n var fromName = itemModel.get('fromName');\n var toName = itemModel.get('toName');\n var html = [];\n fromName != null && html.push(fromName);\n toName != null && html.push(toName);\n return encodeHTML(html.join(' > '));\n },\n preventIncremental: function () {\n return !!this.get('effect.show');\n },\n getProgressive: function () {\n var progressive = this.option.progressive;\n\n if (progressive == null) {\n return this.option.large ? 1e4 : this.get('progressive');\n }\n\n return progressive;\n },\n getProgressiveThreshold: function () {\n var progressiveThreshold = this.option.progressiveThreshold;\n\n if (progressiveThreshold == null) {\n return this.option.large ? 2e4 : this.get('progressiveThreshold');\n }\n\n return progressiveThreshold;\n },\n defaultOption: {\n coordinateSystem: 'geo',\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n hoverAnimation: true,\n // Cartesian coordinate system\n xAxisIndex: 0,\n yAxisIndex: 0,\n symbol: ['none', 'none'],\n symbolSize: [10, 10],\n // Geo coordinate system\n geoIndex: 0,\n effect: {\n show: false,\n period: 4,\n // Animation delay. support callback\n // delay: 0,\n // If move with constant speed px/sec\n // period will be ignored if this property is > 0,\n constantSpeed: 0,\n symbol: 'circle',\n symbolSize: 3,\n loop: true,\n // Length of trail, 0 - 1\n trailLength: 0.2 // Same with lineStyle.color\n // color\n\n },\n large: false,\n // Available when large is true\n largeThreshold: 2000,\n // If lines are polyline\n // polyline not support curveness, label, animation\n polyline: false,\n // If clip the overflow.\n // Available when coordinateSystem is cartesian or polar.\n clip: true,\n label: {\n show: false,\n position: 'end' // distance: 5,\n // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调\n\n },\n lineStyle: {\n opacity: 0.5\n }\n }\n});\nvar _default = LinesSeries;\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar LineDraw = require(\"../helper/LineDraw\");\n\nvar EffectLine = require(\"../helper/EffectLine\");\n\nvar Line = require(\"../helper/Line\");\n\nvar Polyline = require(\"../helper/Polyline\");\n\nvar EffectPolyline = require(\"../helper/EffectPolyline\");\n\nvar LargeLineDraw = require(\"../helper/LargeLineDraw\");\n\nvar linesLayout = require(\"./linesLayout\");\n\nvar _createClipPathFromCoordSys = require(\"../helper/createClipPathFromCoordSys\");\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\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 _default = echarts.extendChartView({\n type: 'lines',\n init: function () {},\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n\n var lineDraw = this._updateLineDraw(data, seriesModel);\n\n var zlevel = seriesModel.get('zlevel');\n var trailLength = seriesModel.get('effect.trailLength');\n var zr = api.getZr(); // Avoid the drag cause ghost shadow\n // FIXME Better way ?\n // SVG doesn't support\n\n var isSvg = zr.painter.getType() === 'svg';\n\n if (!isSvg) {\n zr.painter.getLayer(zlevel).clear(true);\n } // Config layer with motion blur\n\n\n if (this._lastZlevel != null && !isSvg) {\n zr.configLayer(this._lastZlevel, {\n motionBlur: false\n });\n }\n\n if (this._showEffect(seriesModel) && trailLength) {\n if (!isSvg) {\n zr.configLayer(zlevel, {\n motionBlur: true,\n lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0)\n });\n }\n }\n\n lineDraw.updateData(data);\n var clipPath = seriesModel.get('clip', true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel);\n\n if (clipPath) {\n this.group.setClipPath(clipPath);\n } else {\n this.group.removeClipPath();\n }\n\n this._lastZlevel = zlevel;\n this._finished = true;\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n\n var lineDraw = this._updateLineDraw(data, seriesModel);\n\n lineDraw.incrementalPrepareUpdate(data);\n\n this._clearLayer(api);\n\n this._finished = false;\n },\n incrementalRender: function (taskParams, seriesModel, ecModel) {\n this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData());\n\n this._finished = taskParams.end === seriesModel.getData().count();\n },\n updateTransform: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var pipelineContext = seriesModel.pipelineContext;\n\n if (!this._finished || pipelineContext.large || pipelineContext.progressiveRender) {\n // TODO Don't have to do update in large mode. Only do it when there are millions of data.\n return {\n update: true\n };\n } else {\n // TODO Use same logic with ScatterView.\n // Manually update layout\n var res = linesLayout.reset(seriesModel);\n\n if (res.progress) {\n res.progress({\n start: 0,\n end: data.count()\n }, data);\n }\n\n this._lineDraw.updateLayout();\n\n this._clearLayer(api);\n }\n },\n _updateLineDraw: function (data, seriesModel) {\n var lineDraw = this._lineDraw;\n\n var hasEffect = this._showEffect(seriesModel);\n\n var isPolyline = !!seriesModel.get('polyline');\n var pipelineContext = seriesModel.pipelineContext;\n var isLargeDraw = pipelineContext.large;\n\n if (!lineDraw || hasEffect !== this._hasEffet || isPolyline !== this._isPolyline || isLargeDraw !== this._isLargeDraw) {\n if (lineDraw) {\n lineDraw.remove();\n }\n\n lineDraw = this._lineDraw = isLargeDraw ? new LargeLineDraw() : new LineDraw(isPolyline ? hasEffect ? EffectPolyline : Polyline : hasEffect ? EffectLine : Line);\n this._hasEffet = hasEffect;\n this._isPolyline = isPolyline;\n this._isLargeDraw = isLargeDraw;\n this.group.removeAll();\n }\n\n this.group.add(lineDraw.group);\n return lineDraw;\n },\n _showEffect: function (seriesModel) {\n return !!seriesModel.get('effect.show');\n },\n _clearLayer: function (api) {\n // Not use motion when dragging or zooming\n var zr = api.getZr();\n var isSvg = zr.painter.getType() === 'svg';\n\n if (!isSvg && this._lastZlevel != null) {\n zr.painter.getLayer(this._lastZlevel).clear(true);\n }\n },\n remove: function (ecModel, api) {\n this._lineDraw && this._lineDraw.remove();\n this._lineDraw = null; // Clear motion when lineDraw is removed\n\n this._clearLayer(api);\n },\n dispose: function () {}\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 createRenderPlanner = require(\"../helper/createRenderPlanner\");\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 */\nvar _default = {\n seriesType: 'lines',\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var isPolyline = seriesModel.get('polyline');\n var isLarge = seriesModel.pipelineContext.large;\n\n function progress(params, lineData) {\n var lineCoords = [];\n\n if (isLarge) {\n var points;\n var segCount = params.end - params.start;\n\n if (isPolyline) {\n var totalCoordsCount = 0;\n\n for (var i = params.start; i < params.end; i++) {\n totalCoordsCount += seriesModel.getLineCoordsCount(i);\n }\n\n points = new Float32Array(segCount + totalCoordsCount * 2);\n } else {\n points = new Float32Array(segCount * 4);\n }\n\n var offset = 0;\n var pt = [];\n\n for (var i = params.start; i < params.end; i++) {\n var len = seriesModel.getLineCoords(i, lineCoords);\n\n if (isPolyline) {\n points[offset++] = len;\n }\n\n for (var k = 0; k < len; k++) {\n pt = coordSys.dataToPoint(lineCoords[k], false, pt);\n points[offset++] = pt[0];\n points[offset++] = pt[1];\n }\n }\n\n lineData.setLayout('linesPoints', points);\n } else {\n for (var i = params.start; i < params.end; i++) {\n var itemModel = lineData.getItemModel(i);\n var len = seriesModel.getLineCoords(i, lineCoords);\n var pts = [];\n\n if (isPolyline) {\n for (var j = 0; j < len; j++) {\n pts.push(coordSys.dataToPoint(lineCoords[j]));\n }\n } else {\n pts[0] = coordSys.dataToPoint(lineCoords[0]);\n pts[1] = coordSys.dataToPoint(lineCoords[1]);\n var curveness = itemModel.get('lineStyle.curveness');\n\n if (+curveness) {\n pts[2] = [(pts[0][0] + pts[1][0]) / 2 - (pts[0][1] - pts[1][1]) * curveness, (pts[0][1] + pts[1][1]) / 2 - (pts[1][0] - pts[0][0]) * curveness];\n }\n }\n\n lineData.setItemLayout(i, pts);\n }\n }\n }\n\n return {\n progress: progress\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\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 normalize(a) {\n if (!(a instanceof Array)) {\n a = [a, a];\n }\n\n return a;\n}\n\nvar opacityQuery = 'lineStyle.opacity'.split('.');\nvar _default = {\n seriesType: 'lines',\n reset: function (seriesModel, ecModel, api) {\n var symbolType = normalize(seriesModel.get('symbol'));\n var symbolSize = normalize(seriesModel.get('symbolSize'));\n var data = seriesModel.getData();\n data.setVisual('fromSymbol', symbolType && symbolType[0]);\n data.setVisual('toSymbol', symbolType && symbolType[1]);\n data.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\n data.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\n data.setVisual('opacity', seriesModel.get(opacityQuery));\n\n function dataEach(data, idx) {\n var itemModel = data.getItemModel(idx);\n var symbolType = normalize(itemModel.getShallow('symbol', true));\n var symbolSize = normalize(itemModel.getShallow('symbolSize', true));\n var opacity = itemModel.get(opacityQuery);\n symbolType[0] && data.setItemVisual(idx, 'fromSymbol', symbolType[0]);\n symbolType[1] && data.setItemVisual(idx, 'toSymbol', symbolType[1]);\n symbolSize[0] && data.setItemVisual(idx, 'fromSymbolSize', symbolSize[0]);\n symbolSize[1] && data.setItemVisual(idx, 'toSymbolSize', symbolSize[1]);\n data.setItemVisual(idx, 'opacity', opacity);\n }\n\n return {\n dataEach: data.hasItemOption ? dataEach : null\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\nrequire(\"./map/MapSeries\");\n\nrequire(\"./map/MapView\");\n\nrequire(\"../action/geoRoam\");\n\nrequire(\"../coord/geo/geoCreator\");\n\nvar mapSymbolLayout = require(\"./map/mapSymbolLayout\");\n\nvar mapVisual = require(\"./map/mapVisual\");\n\nvar mapDataStatistic = require(\"./map/mapDataStatistic\");\n\nvar backwardCompat = require(\"./map/backwardCompat\");\n\nvar createDataSelectAction = require(\"../action/createDataSelectAction\");\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*/\necharts.registerLayout(mapSymbolLayout);\necharts.registerVisual(mapVisual);\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, mapDataStatistic);\necharts.registerPreprocessor(backwardCompat);\ncreateDataSelectAction('map', [{\n type: 'mapToggleSelect',\n event: 'mapselectchanged',\n method: 'toggleSelected'\n}, {\n type: 'mapSelect',\n event: 'mapselected',\n method: 'select'\n}, {\n type: 'mapUnSelect',\n event: 'mapunselected',\n method: 'unSelect'\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar createListSimply = require(\"../helper/createListSimply\");\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\nvar addCommas = _format.addCommas;\n\nvar dataSelectableMixin = require(\"../../component/helper/selectableMixin\");\n\nvar _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawAttr = _dataProvider.retrieveRawAttr;\n\nvar geoSourceManager = require(\"../../coord/geo/geoSourceManager\");\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForNameBased = _sourceHelper.makeSeriesEncodeForNameBased;\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 MapSeries = SeriesModel.extend({\n type: 'series.map',\n dependencies: ['geo'],\n layoutMode: 'box',\n\n /**\n * Only first map series of same mapType will drawMap\n * @type {boolean}\n */\n needsDrawMap: false,\n\n /**\n * Group of all map series with same mapType\n * @type {boolean}\n */\n seriesGroup: [],\n getInitialData: function (option) {\n var data = createListSimply(this, {\n coordDimensions: ['value'],\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n });\n var valueDim = data.mapDimension('value');\n var dataNameMap = zrUtil.createHashMap();\n var selectTargetList = [];\n var toAppendNames = [];\n\n for (var i = 0, len = data.count(); i < len; i++) {\n var name = data.getName(i);\n dataNameMap.set(name, true);\n selectTargetList.push({\n name: name,\n value: data.get(valueDim, i),\n selected: retrieveRawAttr(data, i, 'selected')\n });\n }\n\n var geoSource = geoSourceManager.load(this.getMapType(), this.option.nameMap, this.option.nameProperty);\n zrUtil.each(geoSource.regions, function (region) {\n var name = region.name;\n\n if (!dataNameMap.get(name)) {\n selectTargetList.push({\n name: name\n });\n toAppendNames.push(name);\n }\n });\n this.updateSelectedMap(selectTargetList); // Complete data with missing regions. The consequent processes (like visual\n // map and render) can not be performed without a \"full data\". For example,\n // find `dataIndex` by name.\n\n data.appendValues([], toAppendNames);\n return data;\n },\n\n /**\n * If no host geo model, return null, which means using a\n * inner exclusive geo model.\n */\n getHostGeoModel: function () {\n var geoIndex = this.option.geoIndex;\n return geoIndex != null ? this.dependentModels.geo[geoIndex] : null;\n },\n getMapType: function () {\n return (this.getHostGeoModel() || this).option.map;\n },\n // _fillOption: function (option, mapName) {\n // Shallow clone\n // option = zrUtil.extend({}, option);\n // option.data = geoCreator.getFilledRegions(option.data, mapName, option.nameMap);\n // return option;\n // },\n getRawValue: function (dataIndex) {\n // Use value stored in data instead because it is calculated from multiple series\n // FIXME Provide all value of multiple series ?\n var data = this.getData();\n return data.get(data.mapDimension('value'), dataIndex);\n },\n\n /**\n * Get model of region\n * @param {string} name\n * @return {module:echarts/model/Model}\n */\n getRegionModel: function (regionName) {\n var data = this.getData();\n return data.getItemModel(data.indexOfName(regionName));\n },\n\n /**\n * Map tooltip formatter\n *\n * @param {number} dataIndex\n */\n formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n // FIXME orignalData and data is a bit confusing\n var data = this.getData();\n var formattedValue = addCommas(this.getRawValue(dataIndex));\n var name = data.getName(dataIndex);\n var seriesGroup = this.seriesGroup;\n var seriesNames = [];\n\n for (var i = 0; i < seriesGroup.length; i++) {\n var otherIndex = seriesGroup[i].originalData.indexOfName(name);\n var valueDim = data.mapDimension('value');\n\n if (!isNaN(seriesGroup[i].originalData.get(valueDim, otherIndex))) {\n seriesNames.push(encodeHTML(seriesGroup[i].name));\n }\n }\n\n var newLine = renderMode === 'html' ? '
' : '\\n';\n return seriesNames.join(', ') + newLine + encodeHTML(name + ' : ' + formattedValue);\n },\n\n /**\n * @implement\n */\n getTooltipPosition: function (dataIndex) {\n if (dataIndex != null) {\n var name = this.getData().getName(dataIndex);\n var geo = this.coordinateSystem;\n var region = geo.getRegion(name);\n return region && geo.dataToPoint(region.center);\n }\n },\n setZoom: function (zoom) {\n this.option.zoom = zoom;\n },\n setCenter: function (center) {\n this.option.center = center;\n },\n defaultOption: {\n // 一级层叠\n zlevel: 0,\n // 二级层叠\n z: 2,\n coordinateSystem: 'geo',\n // map should be explicitly specified since ec3.\n map: '',\n // If `geoIndex` is not specified, a exclusive geo will be\n // created. Otherwise use the specified geo component, and\n // `map` and `mapType` are ignored.\n // geoIndex: 0,\n // 'center' | 'left' | 'right' | 'x%' | {number}\n left: 'center',\n // 'center' | 'top' | 'bottom' | 'x%' | {number}\n top: 'center',\n // right\n // bottom\n // width:\n // height\n // Aspect is width / height. Inited to be geoJson bbox aspect\n // This parameter is used for scale this aspect\n aspectScale: 0.75,\n ///// Layout with center and size\n // If you wan't to put map in a fixed size box with right aspect ratio\n // This two properties may more conveninet\n // layoutCenter: [50%, 50%]\n // layoutSize: 100\n // 数值合并方式,默认加和,可选为:\n // 'sum' | 'average' | 'max' | 'min'\n // mapValueCalculation: 'sum',\n // 地图数值计算结果小数精度\n // mapValuePrecision: 0,\n // 显示图例颜色标识(系列标识的小圆点),图例开启时有效\n showLegendSymbol: true,\n // 选择模式,默认关闭,可选single,multiple\n // selectedMode: false,\n dataRangeHoverLink: true,\n // 是否开启缩放及漫游模式\n // roam: false,\n // Define left-top, right-bottom coords to control view\n // For example, [ [180, 90], [-180, -90] ],\n // higher priority than center and zoom\n boundingCoords: null,\n // Default on center of map\n center: null,\n zoom: 1,\n scaleLimit: null,\n label: {\n show: false,\n color: '#000'\n },\n // scaleLimit: null,\n itemStyle: {\n borderWidth: 0.5,\n borderColor: '#444',\n areaColor: '#eee'\n },\n emphasis: {\n label: {\n show: true,\n color: 'rgb(100,0,0)'\n },\n itemStyle: {\n areaColor: 'rgba(255,215,0,0.8)'\n }\n },\n nameProperty: 'name'\n }\n});\nzrUtil.mixin(MapSeries, dataSelectableMixin);\nvar _default = MapSeries;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar MapDraw = require(\"../../component/helper/MapDraw\");\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 HIGH_DOWN_PROP = '__seriesMapHighDown';\nvar RECORD_VERSION_PROP = '__seriesMapCallKey';\n\nvar _default = echarts.extendChartView({\n type: 'map',\n render: function (mapModel, ecModel, api, payload) {\n // Not render if it is an toggleSelect action from self\n if (payload && payload.type === 'mapToggleSelect' && payload.from === this.uid) {\n return;\n }\n\n var group = this.group;\n group.removeAll();\n\n if (mapModel.getHostGeoModel()) {\n return;\n } // Not update map if it is an roam action from self\n\n\n if (!(payload && payload.type === 'geoRoam' && payload.componentType === 'series' && payload.seriesId === mapModel.id)) {\n if (mapModel.needsDrawMap) {\n var mapDraw = this._mapDraw || new MapDraw(api, true);\n group.add(mapDraw.group);\n mapDraw.draw(mapModel, ecModel, api, this, payload);\n this._mapDraw = mapDraw;\n } else {\n // Remove drawed map\n this._mapDraw && this._mapDraw.remove();\n this._mapDraw = null;\n }\n } else {\n var mapDraw = this._mapDraw;\n mapDraw && group.add(mapDraw.group);\n }\n\n mapModel.get('showLegendSymbol') && ecModel.getComponent('legend') && this._renderSymbols(mapModel, ecModel, api);\n },\n remove: function () {\n this._mapDraw && this._mapDraw.remove();\n this._mapDraw = null;\n this.group.removeAll();\n },\n dispose: function () {\n this._mapDraw && this._mapDraw.remove();\n this._mapDraw = null;\n },\n _renderSymbols: function (mapModel, ecModel, api) {\n var originalData = mapModel.originalData;\n var group = this.group;\n originalData.each(originalData.mapDimension('value'), function (value, originalDataIndex) {\n if (isNaN(value)) {\n return;\n }\n\n var layout = originalData.getItemLayout(originalDataIndex);\n\n if (!layout || !layout.point) {\n // Not exists in map\n return;\n }\n\n var point = layout.point;\n var offset = layout.offset;\n var circle = new graphic.Circle({\n style: {\n // Because the special of map draw.\n // Which needs statistic of multiple series and draw on one map.\n // And each series also need a symbol with legend color\n //\n // Layout and visual are put one the different data\n fill: mapModel.getData().getVisual('color')\n },\n shape: {\n cx: point[0] + offset * 9,\n cy: point[1],\n r: 3\n },\n silent: true,\n // Do not overlap the first series, on which labels are displayed.\n z2: 8 + (!offset ? graphic.Z2_EMPHASIS_LIFT + 1 : 0)\n }); // Only the series that has the first value on the same region is in charge of rendering the label.\n // But consider the case:\n // series: [\n // {id: 'X', type: 'map', map: 'm', {data: [{name: 'A', value: 11}, {name: 'B', {value: 22}]},\n // {id: 'Y', type: 'map', map: 'm', {data: [{name: 'A', value: 21}, {name: 'C', {value: 33}]}\n // ]\n // The offset `0` of item `A` is at series `X`, but of item `C` is at series `Y`.\n // For backward compatibility, we follow the rule that render label `A` by the\n // settings on series `X` but render label `C` by the settings on series `Y`.\n\n if (!offset) {\n var fullData = mapModel.mainSeries.getData();\n var name = originalData.getName(originalDataIndex);\n var fullIndex = fullData.indexOfName(name);\n var itemModel = originalData.getItemModel(originalDataIndex);\n var labelModel = itemModel.getModel('label');\n var hoverLabelModel = itemModel.getModel('emphasis.label');\n var regionGroup = fullData.getItemGraphicEl(fullIndex); // `getFormattedLabel` needs to use `getData` inside. Here\n // `mapModel.getData()` is shallow cloned from `mainSeries.getData()`.\n // FIXME\n // If this is not the `mainSeries`, the item model (like label formatter)\n // set on original data item will never get. But it has been working\n // like that from the begining, and this scenario is rarely encountered.\n // So it won't be fixed until have to.\n\n var normalText = zrUtil.retrieve2(mapModel.getFormattedLabel(fullIndex, 'normal'), name);\n var emphasisText = zrUtil.retrieve2(mapModel.getFormattedLabel(fullIndex, 'emphasis'), normalText);\n var highDownRecord = regionGroup[HIGH_DOWN_PROP];\n var recordVersion = Math.random(); // Prevent from register listeners duplicatedly when roaming.\n\n if (!highDownRecord) {\n highDownRecord = regionGroup[HIGH_DOWN_PROP] = {};\n var onEmphasis = zrUtil.curry(onRegionHighDown, true);\n var onNormal = zrUtil.curry(onRegionHighDown, false);\n regionGroup.on('mouseover', onEmphasis).on('mouseout', onNormal).on('emphasis', onEmphasis).on('normal', onNormal);\n } // Prevent removed regions effect current grapics.\n\n\n regionGroup[RECORD_VERSION_PROP] = recordVersion;\n zrUtil.extend(highDownRecord, {\n recordVersion: recordVersion,\n circle: circle,\n labelModel: labelModel,\n hoverLabelModel: hoverLabelModel,\n emphasisText: emphasisText,\n normalText: normalText\n }); // FIXME\n // Consider set option when emphasis.\n\n enterRegionHighDown(highDownRecord, false);\n }\n\n group.add(circle);\n });\n }\n});\n\nfunction onRegionHighDown(toHighOrDown) {\n var highDownRecord = this[HIGH_DOWN_PROP];\n\n if (highDownRecord && highDownRecord.recordVersion === this[RECORD_VERSION_PROP]) {\n enterRegionHighDown(highDownRecord, toHighOrDown);\n }\n}\n\nfunction enterRegionHighDown(highDownRecord, toHighOrDown) {\n var circle = highDownRecord.circle;\n var labelModel = highDownRecord.labelModel;\n var hoverLabelModel = highDownRecord.hoverLabelModel;\n var emphasisText = highDownRecord.emphasisText;\n var normalText = highDownRecord.normalText;\n\n if (toHighOrDown) {\n circle.style.extendFrom(graphic.setTextStyle({}, hoverLabelModel, {\n text: hoverLabelModel.get('show') ? emphasisText : null\n }, {\n isRectText: true,\n useInsideStyle: false\n }, true)); // Make label upper than others if overlaps.\n\n circle.__mapOriginalZ2 = circle.z2;\n circle.z2 += graphic.Z2_EMPHASIS_LIFT;\n } else {\n graphic.setTextStyle(circle.style, labelModel, {\n text: labelModel.get('show') ? normalText : null,\n textPosition: labelModel.getShallow('position') || 'bottom'\n }, {\n isRectText: true,\n useInsideStyle: false\n }); // Trigger normalize style like padding.\n\n circle.dirty(false);\n\n if (circle.__mapOriginalZ2 != null) {\n circle.z2 = circle.__mapOriginalZ2;\n circle.__mapOriginalZ2 = null;\n }\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 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 _default(option) {\n // Save geoCoord\n var mapSeries = [];\n zrUtil.each(option.series, function (seriesOpt) {\n if (seriesOpt && seriesOpt.type === 'map') {\n mapSeries.push(seriesOpt);\n seriesOpt.map = seriesOpt.map || seriesOpt.mapType; // Put x, y, width, height, x2, y2 in the top level\n\n zrUtil.defaults(seriesOpt, seriesOpt.mapLocation);\n }\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 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// FIXME 公用?\n\n/**\n * @param {Array.} datas\n * @param {string} statisticType 'average' 'sum'\n * @inner\n */\nfunction dataStatistics(datas, statisticType) {\n var dataNameMap = {};\n zrUtil.each(datas, function (data) {\n data.each(data.mapDimension('value'), function (value, idx) {\n // Add prefix to avoid conflict with Object.prototype.\n var mapKey = 'ec-' + data.getName(idx);\n dataNameMap[mapKey] = dataNameMap[mapKey] || [];\n\n if (!isNaN(value)) {\n dataNameMap[mapKey].push(value);\n }\n });\n });\n return datas[0].map(datas[0].mapDimension('value'), function (value, idx) {\n var mapKey = 'ec-' + datas[0].getName(idx);\n var sum = 0;\n var min = Infinity;\n var max = -Infinity;\n var len = dataNameMap[mapKey].length;\n\n for (var i = 0; i < len; i++) {\n min = Math.min(min, dataNameMap[mapKey][i]);\n max = Math.max(max, dataNameMap[mapKey][i]);\n sum += dataNameMap[mapKey][i];\n }\n\n var result;\n\n if (statisticType === 'min') {\n result = min;\n } else if (statisticType === 'max') {\n result = max;\n } else if (statisticType === 'average') {\n result = sum / len;\n } else {\n result = sum;\n }\n\n return len === 0 ? NaN : result;\n });\n}\n\nfunction _default(ecModel) {\n var seriesGroups = {};\n ecModel.eachSeriesByType('map', function (seriesModel) {\n var hostGeoModel = seriesModel.getHostGeoModel();\n var key = hostGeoModel ? 'o' + hostGeoModel.id : 'i' + seriesModel.getMapType();\n (seriesGroups[key] = seriesGroups[key] || []).push(seriesModel);\n });\n zrUtil.each(seriesGroups, function (seriesList, key) {\n var data = dataStatistics(zrUtil.map(seriesList, function (seriesModel) {\n return seriesModel.getData();\n }), seriesList[0].get('mapValueCalculation'));\n\n for (var i = 0; i < seriesList.length; i++) {\n seriesList[i].originalData = seriesList[i].getData();\n } // FIXME Put where?\n\n\n for (var i = 0; i < seriesList.length; i++) {\n seriesList[i].seriesGroup = seriesList;\n seriesList[i].needsDrawMap = i === 0 && !seriesList[i].getHostGeoModel();\n seriesList[i].setData(data.cloneShallow());\n seriesList[i].mainSeries = seriesList[0];\n }\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 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 _default(ecModel) {\n var processedMapType = {};\n ecModel.eachSeriesByType('map', function (mapSeries) {\n var mapType = mapSeries.getMapType();\n\n if (mapSeries.getHostGeoModel() || processedMapType[mapType]) {\n return;\n }\n\n var mapSymbolOffsets = {};\n zrUtil.each(mapSeries.seriesGroup, function (subMapSeries) {\n var geo = subMapSeries.coordinateSystem;\n var data = subMapSeries.originalData;\n\n if (subMapSeries.get('showLegendSymbol') && ecModel.getComponent('legend')) {\n data.each(data.mapDimension('value'), function (value, idx) {\n var name = data.getName(idx);\n var region = geo.getRegion(name); // If input series.data is [11, 22, '-'/null/undefined, 44],\n // it will be filled with NaN: [11, 22, NaN, 44] and NaN will\n // not be drawn. So here must validate if value is NaN.\n\n if (!region || isNaN(value)) {\n return;\n }\n\n var offset = mapSymbolOffsets[name] || 0;\n var point = geo.dataToPoint(region.center);\n mapSymbolOffsets[name] = offset + 1;\n data.setItemLayout(idx, {\n point: point,\n offset: offset\n });\n });\n }\n }); // Show label of those region not has legendSymbol(which is offset 0)\n\n var data = mapSeries.getData();\n data.each(function (idx) {\n var name = data.getName(idx);\n var layout = data.getItemLayout(idx) || {};\n layout.showLabel = !mapSymbolOffsets[name];\n data.setItemLayout(idx, layout);\n });\n processedMapType[mapType] = true;\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\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(ecModel) {\n ecModel.eachSeriesByType('map', function (seriesModel) {\n var colorList = seriesModel.get('color');\n var itemStyleModel = seriesModel.getModel('itemStyle');\n var areaColor = itemStyleModel.get('areaColor');\n var color = itemStyleModel.get('color') || colorList[seriesModel.seriesIndex % colorList.length];\n seriesModel.getData().setVisual({\n 'areaColor': areaColor,\n 'color': color\n });\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\nrequire(\"../component/parallel\");\n\nrequire(\"./parallel/ParallelSeries\");\n\nrequire(\"./parallel/ParallelView\");\n\nvar parallelVisual = require(\"./parallel/parallelVisual\");\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*/\necharts.registerVisual(parallelVisual);","\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 _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar createHashMap = _util.createHashMap;\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar createListFromArray = require(\"../helper/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*/\nvar _default = SeriesModel.extend({\n type: 'series.parallel',\n dependencies: ['parallel'],\n visualColorAccessPath: 'lineStyle.color',\n getInitialData: function (option, ecModel) {\n var source = this.getSource();\n setEncodeAndDimensions(source, this);\n return createListFromArray(source, this);\n },\n\n /**\n * User can get data raw indices on 'axisAreaSelected' event received.\n *\n * @public\n * @param {string} activeState 'active' or 'inactive' or 'normal'\n * @return {Array.} Raw indices\n */\n getRawIndicesByActiveState: function (activeState) {\n var coordSys = this.coordinateSystem;\n var data = this.getData();\n var indices = [];\n coordSys.eachActiveState(data, function (theActiveState, dataIndex) {\n if (activeState === theActiveState) {\n indices.push(data.getRawIndex(dataIndex));\n }\n });\n return indices;\n },\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n coordinateSystem: 'parallel',\n parallelIndex: 0,\n label: {\n show: false\n },\n inactiveOpacity: 0.05,\n activeOpacity: 1,\n lineStyle: {\n width: 1,\n opacity: 0.45,\n type: 'solid'\n },\n emphasis: {\n label: {\n show: false\n }\n },\n progressive: 500,\n smooth: false,\n // true | false | number\n animationEasing: 'linear'\n }\n});\n\nfunction setEncodeAndDimensions(source, seriesModel) {\n // The mapping of parallelAxis dimension to data dimension can\n // be specified in parallelAxis.option.dim. For example, if\n // parallelAxis.option.dim is 'dim3', it mapping to the third\n // dimension of data. But `data.encode` has higher priority.\n // Moreover, parallelModel.dimension should not be regarded as data\n // dimensions. Consider dimensions = ['dim4', 'dim2', 'dim6'];\n if (source.encodeDefine) {\n return;\n }\n\n var parallelModel = seriesModel.ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n\n if (!parallelModel) {\n return;\n }\n\n var encodeDefine = source.encodeDefine = createHashMap();\n each(parallelModel.dimensions, function (axisDim) {\n var dataDimIndex = convertDimNameToNumber(axisDim);\n encodeDefine.set(axisDim, dataDimIndex);\n });\n}\n\nfunction convertDimNameToNumber(dimName) {\n return +dimName.replace('dim', '');\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 ChartView = require(\"../../view/Chart\");\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 DEFAULT_SMOOTH = 0.3;\nvar ParallelView = ChartView.extend({\n type: 'parallel',\n init: function () {\n /**\n * @type {module:zrender/container/Group}\n * @private\n */\n this._dataGroup = new graphic.Group();\n this.group.add(this._dataGroup);\n /**\n * @type {module:echarts/data/List}\n */\n\n this._data;\n /**\n * @type {boolean}\n */\n\n this._initialized;\n },\n\n /**\n * @override\n */\n render: function (seriesModel, ecModel, api, payload) {\n var dataGroup = this._dataGroup;\n var data = seriesModel.getData();\n var oldData = this._data;\n var coordSys = seriesModel.coordinateSystem;\n var dimensions = coordSys.dimensions;\n var seriesScope = makeSeriesScope(seriesModel);\n data.diff(oldData).add(add).update(update).remove(remove).execute();\n\n function add(newDataIndex) {\n var line = addEl(data, dataGroup, newDataIndex, dimensions, coordSys);\n updateElCommon(line, data, newDataIndex, seriesScope);\n }\n\n function update(newDataIndex, oldDataIndex) {\n var line = oldData.getItemGraphicEl(oldDataIndex);\n var points = createLinePoints(data, newDataIndex, dimensions, coordSys);\n data.setItemGraphicEl(newDataIndex, line);\n var animationModel = payload && payload.animation === false ? null : seriesModel;\n graphic.updateProps(line, {\n shape: {\n points: points\n }\n }, animationModel, newDataIndex);\n updateElCommon(line, data, newDataIndex, seriesScope);\n }\n\n function remove(oldDataIndex) {\n var line = oldData.getItemGraphicEl(oldDataIndex);\n dataGroup.remove(line);\n } // First create\n\n\n if (!this._initialized) {\n this._initialized = true;\n var clipPath = createGridClipShape(coordSys, seriesModel, function () {\n // Callback will be invoked immediately if there is no animation\n setTimeout(function () {\n dataGroup.removeClipPath();\n });\n });\n dataGroup.setClipPath(clipPath);\n }\n\n this._data = data;\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n this._initialized = true;\n this._data = null;\n\n this._dataGroup.removeAll();\n },\n incrementalRender: function (taskParams, seriesModel, ecModel) {\n var data = seriesModel.getData();\n var coordSys = seriesModel.coordinateSystem;\n var dimensions = coordSys.dimensions;\n var seriesScope = makeSeriesScope(seriesModel);\n\n for (var dataIndex = taskParams.start; dataIndex < taskParams.end; dataIndex++) {\n var line = addEl(data, this._dataGroup, dataIndex, dimensions, coordSys);\n line.incremental = true;\n updateElCommon(line, data, dataIndex, seriesScope);\n }\n },\n dispose: function () {},\n // _renderForProgressive: function (seriesModel) {\n // var dataGroup = this._dataGroup;\n // var data = seriesModel.getData();\n // var oldData = this._data;\n // var coordSys = seriesModel.coordinateSystem;\n // var dimensions = coordSys.dimensions;\n // var option = seriesModel.option;\n // var progressive = option.progressive;\n // var smooth = option.smooth ? SMOOTH : null;\n // // In progressive animation is disabled, so use simple data diff,\n // // which effects performance less.\n // // (Typically performance for data with length 7000+ like:\n // // simpleDiff: 60ms, addEl: 184ms,\n // // in RMBP 2.4GHz intel i7, OSX 10.9 chrome 50.0.2661.102 (64-bit))\n // if (simpleDiff(oldData, data, dimensions)) {\n // dataGroup.removeAll();\n // data.each(function (dataIndex) {\n // addEl(data, dataGroup, dataIndex, dimensions, coordSys);\n // });\n // }\n // updateElCommon(data, progressive, smooth);\n // // Consider switch between progressive and not.\n // data.__plProgressive = true;\n // this._data = data;\n // },\n\n /**\n * @override\n */\n remove: function () {\n this._dataGroup && this._dataGroup.removeAll();\n this._data = null;\n }\n});\n\nfunction createGridClipShape(coordSys, seriesModel, cb) {\n var parallelModel = coordSys.model;\n var rect = coordSys.getRect();\n var rectEl = new graphic.Rect({\n shape: {\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n }\n });\n var dim = parallelModel.get('layout') === 'horizontal' ? 'width' : 'height';\n rectEl.setShape(dim, 0);\n graphic.initProps(rectEl, {\n shape: {\n width: rect.width,\n height: rect.height\n }\n }, seriesModel, cb);\n return rectEl;\n}\n\nfunction createLinePoints(data, dataIndex, dimensions, coordSys) {\n var points = [];\n\n for (var i = 0; i < dimensions.length; i++) {\n var dimName = dimensions[i];\n var value = data.get(data.mapDimension(dimName), dataIndex);\n\n if (!isEmptyValue(value, coordSys.getAxis(dimName).type)) {\n points.push(coordSys.dataToPoint(value, dimName));\n }\n }\n\n return points;\n}\n\nfunction addEl(data, dataGroup, dataIndex, dimensions, coordSys) {\n var points = createLinePoints(data, dataIndex, dimensions, coordSys);\n var line = new graphic.Polyline({\n shape: {\n points: points\n },\n silent: true,\n z2: 10\n });\n dataGroup.add(line);\n data.setItemGraphicEl(dataIndex, line);\n return line;\n}\n\nfunction makeSeriesScope(seriesModel) {\n var smooth = seriesModel.get('smooth', true);\n smooth === true && (smooth = DEFAULT_SMOOTH);\n return {\n lineStyle: seriesModel.getModel('lineStyle').getLineStyle(),\n smooth: smooth != null ? smooth : DEFAULT_SMOOTH\n };\n}\n\nfunction updateElCommon(el, data, dataIndex, seriesScope) {\n var lineStyle = seriesScope.lineStyle;\n\n if (data.hasItemOption) {\n var lineStyleModel = data.getItemModel(dataIndex).getModel('lineStyle');\n lineStyle = lineStyleModel.getLineStyle();\n }\n\n el.useStyle(lineStyle);\n var elStyle = el.style;\n elStyle.fill = null; // lineStyle.color have been set to itemVisual in module:echarts/visual/seriesColor.\n\n elStyle.stroke = data.getItemVisual(dataIndex, 'color'); // lineStyle.opacity have been set to itemVisual in parallelVisual.\n\n elStyle.opacity = data.getItemVisual(dataIndex, 'opacity');\n seriesScope.smooth && (el.shape.smooth = seriesScope.smooth);\n} // function simpleDiff(oldData, newData, dimensions) {\n// var oldLen;\n// if (!oldData\n// || !oldData.__plProgressive\n// || (oldLen = oldData.count()) !== newData.count()\n// ) {\n// return true;\n// }\n// var dimLen = dimensions.length;\n// for (var i = 0; i < oldLen; i++) {\n// for (var j = 0; j < dimLen; j++) {\n// if (oldData.get(dimensions[j], i) !== newData.get(dimensions[j], i)) {\n// return true;\n// }\n// }\n// }\n// return false;\n// }\n// FIXME\n// 公用方法?\n\n\nfunction isEmptyValue(val, axisType) {\n return axisType === 'category' ? val == null : val == null || isNaN(val); // axisType === 'value'\n}\n\nvar _default = ParallelView;\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\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 opacityAccessPath = ['lineStyle', 'normal', 'opacity'];\nvar _default = {\n seriesType: 'parallel',\n reset: function (seriesModel, ecModel, api) {\n var itemStyleModel = seriesModel.getModel('itemStyle');\n var lineStyleModel = seriesModel.getModel('lineStyle');\n var globalColors = ecModel.get('color');\n var color = lineStyleModel.get('color') || itemStyleModel.get('color') || globalColors[seriesModel.seriesIndex % globalColors.length];\n var inactiveOpacity = seriesModel.get('inactiveOpacity');\n var activeOpacity = seriesModel.get('activeOpacity');\n var lineStyle = seriesModel.getModel('lineStyle').getLineStyle();\n var coordSys = seriesModel.coordinateSystem;\n var data = seriesModel.getData();\n var opacityMap = {\n normal: lineStyle.opacity,\n active: activeOpacity,\n inactive: inactiveOpacity\n };\n data.setVisual('color', color);\n\n function progress(params, data) {\n coordSys.eachActiveState(data, function (activeState, dataIndex) {\n var opacity = opacityMap[activeState];\n\n if (activeState === 'normal' && data.hasItemOption) {\n var itemOpacity = data.getItemModel(dataIndex).get(opacityAccessPath, true);\n itemOpacity != null && (opacity = itemOpacity);\n }\n\n data.setItemVisual(dataIndex, 'opacity', opacity);\n }, params.start, params.end);\n }\n\n return {\n progress: progress\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nrequire(\"../coord/cartesian/Grid\");\n\nrequire(\"./bar/PictorialBarSeries\");\n\nrequire(\"./bar/PictorialBarView\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar layout = _barGrid.layout;\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nrequire(\"../component/gridSimple\");\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// In case developer forget to include grid component\necharts.registerLayout(zrUtil.curry(layout, 'pictorialBar'));\necharts.registerVisual(visualSymbol('pictorialBar', 'roundRect'));","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nrequire(\"./pie/PieSeries\");\n\nrequire(\"./pie/PieView\");\n\nvar createDataSelectAction = require(\"../action/createDataSelectAction\");\n\nvar dataColor = require(\"../visual/dataColor\");\n\nvar pieLayout = require(\"./pie/pieLayout\");\n\nvar dataFilter = require(\"../processor/dataFilter\");\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*/\ncreateDataSelectAction('pie', [{\n type: 'pieToggleSelect',\n event: 'pieselectchanged',\n method: 'toggleSelected'\n}, {\n type: 'pieSelect',\n event: 'pieselected',\n method: 'select'\n}, {\n type: 'pieUnSelect',\n event: 'pieunselected',\n method: 'unSelect'\n}]);\necharts.registerVisual(dataColor('pie'));\necharts.registerLayout(zrUtil.curry(pieLayout, 'pie'));\necharts.registerProcessor(dataFilter('pie'));","\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\nvar createListSimply = require(\"../helper/createListSimply\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar _number = require(\"../../util/number\");\n\nvar getPercentWithPrecision = _number.getPercentWithPrecision;\n\nvar dataSelectableMixin = require(\"../../component/helper/selectableMixin\");\n\nvar _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawAttr = _dataProvider.retrieveRawAttr;\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForNameBased = _sourceHelper.makeSeriesEncodeForNameBased;\n\nvar LegendVisualProvider = require(\"../../visual/LegendVisualProvider\");\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 PieSeries = echarts.extendSeriesModel({\n type: 'series.pie',\n // Overwrite\n init: function (option) {\n PieSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item\n // Use a function instead of direct access because data reference may changed\n\n this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n this.updateSelectedMap(this._createSelectableList());\n\n this._defaultLabelLine(option);\n },\n // Overwrite\n mergeOption: function (newOption) {\n PieSeries.superCall(this, 'mergeOption', newOption);\n this.updateSelectedMap(this._createSelectableList());\n },\n getInitialData: function (option, ecModel) {\n return createListSimply(this, {\n coordDimensions: ['value'],\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n });\n },\n _createSelectableList: function () {\n var data = this.getRawData();\n var valueDim = data.mapDimension('value');\n var targetList = [];\n\n for (var i = 0, len = data.count(); i < len; i++) {\n targetList.push({\n name: data.getName(i),\n value: data.get(valueDim, i),\n selected: retrieveRawAttr(data, i, 'selected')\n });\n }\n\n return targetList;\n },\n // Overwrite\n getDataParams: function (dataIndex) {\n var data = this.getData();\n var params = PieSeries.superCall(this, 'getDataParams', dataIndex); // FIXME toFixed?\n\n var valueList = [];\n data.each(data.mapDimension('value'), function (value) {\n valueList.push(value);\n });\n params.percent = getPercentWithPrecision(valueList, dataIndex, data.hostModel.get('percentPrecision'));\n params.$vars.push('percent');\n return params;\n },\n _defaultLabelLine: function (option) {\n // Extend labelLine emphasis\n modelUtil.defaultEmphasis(option, 'labelLine', ['show']);\n var labelLineNormalOpt = option.labelLine;\n var labelLineEmphasisOpt = option.emphasis.labelLine; // Not show label line if `label.normal.show = false`\n\n labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;\n labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n hoverAnimation: true,\n // 默认全局居中\n center: ['50%', '50%'],\n radius: [0, '75%'],\n // 默认顺时针\n clockwise: true,\n startAngle: 90,\n // 最小角度改为0\n minAngle: 0,\n // If the angle of a sector less than `minShowLabelAngle`,\n // the label will not be displayed.\n minShowLabelAngle: 0,\n // 选中时扇区偏移量\n selectedOffset: 10,\n // 高亮扇区偏移量\n hoverOffset: 10,\n // If use strategy to avoid label overlapping\n avoidLabelOverlap: true,\n // 选择模式,默认关闭,可选single,multiple\n // selectedMode: false,\n // 南丁格尔玫瑰图模式,'radius'(半径) | 'area'(面积)\n // roseType: null,\n percentPrecision: 2,\n // If still show when all data zero.\n stillShowZeroSum: true,\n // cursor: null,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n width: null,\n height: null,\n label: {\n // If rotate around circle\n rotate: false,\n show: true,\n // 'outer', 'inside', 'center'\n position: 'outer',\n // 'none', 'labelLine', 'edge'. Works only when position is 'outer'\n alignTo: 'none',\n // Closest distance between label and chart edge.\n // Works only position is 'outer' and alignTo is 'edge'.\n margin: '25%',\n // Works only position is 'outer' and alignTo is not 'edge'.\n bleedMargin: 10,\n // Distance between text and label line.\n distanceToLabelLine: 5 // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调\n // 默认使用全局文本样式,详见TEXTSTYLE\n // distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数\n\n },\n // Enabled when label.normal.position is 'outer'\n labelLine: {\n show: true,\n // 引导线两段中的第一段长度\n length: 15,\n // 引导线两段中的第二段长度\n length2: 15,\n smooth: false,\n lineStyle: {\n // color: 各异,\n width: 1,\n type: 'solid'\n }\n },\n itemStyle: {\n borderWidth: 1\n },\n // Animation type. Valid values: expansion, scale\n animationType: 'expansion',\n // Animation type when update. Valid values: transition, expansion\n animationTypeUpdate: 'transition',\n animationEasing: 'cubicOut'\n }\n});\nzrUtil.mixin(PieSeries, dataSelectableMixin);\nvar _default = PieSeries;\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 graphic = require(\"../../util/graphic\");\n\nvar ChartView = require(\"../../view/Chart\");\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/model/Series} seriesModel\n * @param {boolean} hasAnimation\n * @inner\n */\nfunction updateDataSelected(uid, seriesModel, hasAnimation, api) {\n var data = seriesModel.getData();\n var dataIndex = this.dataIndex;\n var name = data.getName(dataIndex);\n var selectedOffset = seriesModel.get('selectedOffset');\n api.dispatchAction({\n type: 'pieToggleSelect',\n from: uid,\n name: name,\n seriesId: seriesModel.id\n });\n data.each(function (idx) {\n toggleItemSelected(data.getItemGraphicEl(idx), data.getItemLayout(idx), seriesModel.isSelected(data.getName(idx)), selectedOffset, hasAnimation);\n });\n}\n/**\n * @param {module:zrender/graphic/Sector} el\n * @param {Object} layout\n * @param {boolean} isSelected\n * @param {number} selectedOffset\n * @param {boolean} hasAnimation\n * @inner\n */\n\n\nfunction toggleItemSelected(el, layout, isSelected, selectedOffset, hasAnimation) {\n var midAngle = (layout.startAngle + layout.endAngle) / 2;\n var dx = Math.cos(midAngle);\n var dy = Math.sin(midAngle);\n var offset = isSelected ? selectedOffset : 0;\n var position = [dx * offset, dy * offset];\n hasAnimation // animateTo will stop revious animation like update transition\n ? el.animate().when(200, {\n position: position\n }).start('bounceOut') : el.attr('position', position);\n}\n/**\n * Piece of pie including Sector, Label, LabelLine\n * @constructor\n * @extends {module:zrender/graphic/Group}\n */\n\n\nfunction PiePiece(data, idx) {\n graphic.Group.call(this);\n var sector = new graphic.Sector({\n z2: 2\n });\n var polyline = new graphic.Polyline();\n var text = new graphic.Text();\n this.add(sector);\n this.add(polyline);\n this.add(text);\n this.updateData(data, idx, true);\n}\n\nvar piePieceProto = PiePiece.prototype;\n\npiePieceProto.updateData = function (data, idx, firstCreate) {\n var sector = this.childAt(0);\n var labelLine = this.childAt(1);\n var labelText = this.childAt(2);\n var seriesModel = data.hostModel;\n var itemModel = data.getItemModel(idx);\n var layout = data.getItemLayout(idx);\n var sectorShape = zrUtil.extend({}, layout);\n sectorShape.label = null;\n var animationTypeUpdate = seriesModel.getShallow('animationTypeUpdate');\n\n if (firstCreate) {\n sector.setShape(sectorShape);\n var animationType = seriesModel.getShallow('animationType');\n\n if (animationType === 'scale') {\n sector.shape.r = layout.r0;\n graphic.initProps(sector, {\n shape: {\n r: layout.r\n }\n }, seriesModel, idx);\n } // Expansion\n else {\n sector.shape.endAngle = layout.startAngle;\n graphic.updateProps(sector, {\n shape: {\n endAngle: layout.endAngle\n }\n }, seriesModel, idx);\n }\n } else {\n if (animationTypeUpdate === 'expansion') {\n // Sectors are set to be target shape and an overlaying clipPath is used for animation\n sector.setShape(sectorShape);\n } else {\n // Transition animation from the old shape\n graphic.updateProps(sector, {\n shape: sectorShape\n }, seriesModel, idx);\n }\n } // Update common style\n\n\n var visualColor = data.getItemVisual(idx, 'color');\n sector.useStyle(zrUtil.defaults({\n lineJoin: 'bevel',\n fill: visualColor\n }, itemModel.getModel('itemStyle').getItemStyle()));\n sector.hoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n var cursorStyle = itemModel.getShallow('cursor');\n cursorStyle && sector.attr('cursor', cursorStyle); // Toggle selected\n\n toggleItemSelected(this, data.getItemLayout(idx), seriesModel.isSelected(data.getName(idx)), seriesModel.get('selectedOffset'), seriesModel.get('animation')); // Label and text animation should be applied only for transition type animation when update\n\n var withAnimation = !firstCreate && animationTypeUpdate === 'transition';\n\n this._updateLabel(data, idx, withAnimation);\n\n this.highDownOnUpdate = !seriesModel.get('silent') ? function (fromState, toState) {\n var hasAnimation = seriesModel.isAnimationEnabled() && itemModel.get('hoverAnimation');\n\n if (toState === 'emphasis') {\n labelLine.ignore = labelLine.hoverIgnore;\n labelText.ignore = labelText.hoverIgnore; // Sector may has animation of updating data. Force to move to the last frame\n // Or it may stopped on the wrong shape\n\n if (hasAnimation) {\n sector.stopAnimation(true);\n sector.animateTo({\n shape: {\n r: layout.r + seriesModel.get('hoverOffset')\n }\n }, 300, 'elasticOut');\n }\n } else {\n labelLine.ignore = labelLine.normalIgnore;\n labelText.ignore = labelText.normalIgnore;\n\n if (hasAnimation) {\n sector.stopAnimation(true);\n sector.animateTo({\n shape: {\n r: layout.r\n }\n }, 300, 'elasticOut');\n }\n }\n } : null;\n graphic.setHoverStyle(this);\n};\n\npiePieceProto._updateLabel = function (data, idx, withAnimation) {\n var labelLine = this.childAt(1);\n var labelText = this.childAt(2);\n var seriesModel = data.hostModel;\n var itemModel = data.getItemModel(idx);\n var layout = data.getItemLayout(idx);\n var labelLayout = layout.label;\n var visualColor = data.getItemVisual(idx, 'color');\n\n if (!labelLayout || isNaN(labelLayout.x) || isNaN(labelLayout.y)) {\n labelText.ignore = labelText.normalIgnore = labelText.hoverIgnore = labelLine.ignore = labelLine.normalIgnore = labelLine.hoverIgnore = true;\n return;\n }\n\n var targetLineShape = {\n points: labelLayout.linePoints || [[labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y]]\n };\n var targetTextStyle = {\n x: labelLayout.x,\n y: labelLayout.y\n };\n\n if (withAnimation) {\n graphic.updateProps(labelLine, {\n shape: targetLineShape\n }, seriesModel, idx);\n graphic.updateProps(labelText, {\n style: targetTextStyle\n }, seriesModel, idx);\n } else {\n labelLine.attr({\n shape: targetLineShape\n });\n labelText.attr({\n style: targetTextStyle\n });\n }\n\n labelText.attr({\n rotation: labelLayout.rotation,\n origin: [labelLayout.x, labelLayout.y],\n z2: 10\n });\n var labelModel = itemModel.getModel('label');\n var labelHoverModel = itemModel.getModel('emphasis.label');\n var labelLineModel = itemModel.getModel('labelLine');\n var labelLineHoverModel = itemModel.getModel('emphasis.labelLine');\n var visualColor = data.getItemVisual(idx, 'color');\n graphic.setLabelStyle(labelText.style, labelText.hoverStyle = {}, labelModel, labelHoverModel, {\n labelFetcher: data.hostModel,\n labelDataIndex: idx,\n defaultText: labelLayout.text,\n autoColor: visualColor,\n useInsideStyle: !!labelLayout.inside\n }, {\n textAlign: labelLayout.textAlign,\n textVerticalAlign: labelLayout.verticalAlign,\n opacity: data.getItemVisual(idx, 'opacity')\n });\n labelText.ignore = labelText.normalIgnore = !labelModel.get('show');\n labelText.hoverIgnore = !labelHoverModel.get('show');\n labelLine.ignore = labelLine.normalIgnore = !labelLineModel.get('show');\n labelLine.hoverIgnore = !labelLineHoverModel.get('show'); // Default use item visual color\n\n labelLine.setStyle({\n stroke: visualColor,\n opacity: data.getItemVisual(idx, 'opacity')\n });\n labelLine.setStyle(labelLineModel.getModel('lineStyle').getLineStyle());\n labelLine.hoverStyle = labelLineHoverModel.getModel('lineStyle').getLineStyle();\n var smooth = labelLineModel.get('smooth');\n\n if (smooth && smooth === true) {\n smooth = 0.4;\n }\n\n labelLine.setShape({\n smooth: smooth\n });\n};\n\nzrUtil.inherits(PiePiece, graphic.Group); // Pie view\n\nvar PieView = ChartView.extend({\n type: 'pie',\n init: function () {\n var sectorGroup = new graphic.Group();\n this._sectorGroup = sectorGroup;\n },\n render: function (seriesModel, ecModel, api, payload) {\n if (payload && payload.from === this.uid) {\n return;\n }\n\n var data = seriesModel.getData();\n var oldData = this._data;\n var group = this.group;\n var hasAnimation = ecModel.get('animation');\n var isFirstRender = !oldData;\n var animationType = seriesModel.get('animationType');\n var animationTypeUpdate = seriesModel.get('animationTypeUpdate');\n var onSectorClick = zrUtil.curry(updateDataSelected, this.uid, seriesModel, hasAnimation, api);\n var selectedMode = seriesModel.get('selectedMode');\n data.diff(oldData).add(function (idx) {\n var piePiece = new PiePiece(data, idx); // Default expansion animation\n\n if (isFirstRender && animationType !== 'scale') {\n piePiece.eachChild(function (child) {\n child.stopAnimation(true);\n });\n }\n\n selectedMode && piePiece.on('click', onSectorClick);\n data.setItemGraphicEl(idx, piePiece);\n group.add(piePiece);\n }).update(function (newIdx, oldIdx) {\n var piePiece = oldData.getItemGraphicEl(oldIdx);\n\n if (!isFirstRender && animationTypeUpdate !== 'transition') {\n piePiece.eachChild(function (child) {\n child.stopAnimation(true);\n });\n }\n\n piePiece.updateData(data, newIdx);\n piePiece.off('click');\n selectedMode && piePiece.on('click', onSectorClick);\n group.add(piePiece);\n data.setItemGraphicEl(newIdx, piePiece);\n }).remove(function (idx) {\n var piePiece = oldData.getItemGraphicEl(idx);\n group.remove(piePiece);\n }).execute();\n\n if (hasAnimation && data.count() > 0 && (isFirstRender ? animationType !== 'scale' : animationTypeUpdate !== 'transition')) {\n var shape = data.getItemLayout(0);\n\n for (var s = 1; isNaN(shape.startAngle) && s < data.count(); ++s) {\n shape = data.getItemLayout(s);\n }\n\n var r = Math.max(api.getWidth(), api.getHeight()) / 2;\n var removeClipPath = zrUtil.bind(group.removeClipPath, group);\n group.setClipPath(this._createClipPath(shape.cx, shape.cy, r, shape.startAngle, shape.clockwise, removeClipPath, seriesModel, isFirstRender));\n } else {\n // clipPath is used in first-time animation, so remove it when otherwise. See: #8994\n group.removeClipPath();\n }\n\n this._data = data;\n },\n dispose: function () {},\n _createClipPath: function (cx, cy, r, startAngle, clockwise, cb, seriesModel, isFirstRender) {\n var clipPath = new graphic.Sector({\n shape: {\n cx: cx,\n cy: cy,\n r0: 0,\n r: r,\n startAngle: startAngle,\n endAngle: startAngle,\n clockwise: clockwise\n }\n });\n var initOrUpdate = isFirstRender ? graphic.initProps : graphic.updateProps;\n initOrUpdate(clipPath, {\n shape: {\n endAngle: startAngle + (clockwise ? 1 : -1) * Math.PI * 2\n }\n }, seriesModel, cb);\n return clipPath;\n },\n\n /**\n * @implement\n */\n containPoint: function (point, seriesModel) {\n var data = seriesModel.getData();\n var itemLayout = data.getItemLayout(0);\n\n if (itemLayout) {\n var dx = point[0] - itemLayout.cx;\n var dy = point[1] - itemLayout.cy;\n var radius = Math.sqrt(dx * dx + dy * dy);\n return radius <= itemLayout.r && radius >= itemLayout.r0;\n }\n }\n});\nvar _default = PieView;\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 textContain = require(\"zrender/lib/contain/text\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\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// FIXME emphasis label position is not same with normal label position\nvar RADIAN = Math.PI / 180;\n\nfunction adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {\n list.sort(function (a, b) {\n return a.y - b.y;\n });\n\n function shiftDown(start, end, delta, dir) {\n for (var j = start; j < end; j++) {\n if (list[j].y + delta > viewTop + viewHeight) {\n break;\n }\n\n list[j].y += delta;\n\n if (j > start && j + 1 < end && list[j + 1].y > list[j].y + list[j].height) {\n shiftUp(j, delta / 2);\n return;\n }\n }\n\n shiftUp(end - 1, delta / 2);\n }\n\n function shiftUp(end, delta) {\n for (var j = end; j >= 0; j--) {\n if (list[j].y - delta < viewTop) {\n break;\n }\n\n list[j].y -= delta;\n\n if (j > 0 && list[j].y > list[j - 1].y + list[j - 1].height) {\n break;\n }\n }\n }\n\n function changeX(list, isDownList, cx, cy, r, dir) {\n var lastDeltaX = dir > 0 ? isDownList // right-side\n ? Number.MAX_VALUE // down\n : 0 // up\n : isDownList // left-side\n ? Number.MAX_VALUE // down\n : 0; // up\n\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].labelAlignTo !== 'none') {\n continue;\n }\n\n var deltaY = Math.abs(list[i].y - cy);\n var length = list[i].len;\n var length2 = list[i].len2;\n var deltaX = deltaY < r + length ? Math.sqrt((r + length + length2) * (r + length + length2) - deltaY * deltaY) : Math.abs(list[i].x - cx);\n\n if (isDownList && deltaX >= lastDeltaX) {\n // right-down, left-down\n deltaX = lastDeltaX - 10;\n }\n\n if (!isDownList && deltaX <= lastDeltaX) {\n // right-up, left-up\n deltaX = lastDeltaX + 10;\n }\n\n list[i].x = cx + deltaX * dir;\n lastDeltaX = deltaX;\n }\n }\n\n var lastY = 0;\n var delta;\n var len = list.length;\n var upList = [];\n var downList = [];\n\n for (var i = 0; i < len; i++) {\n if (list[i].position === 'outer' && list[i].labelAlignTo === 'labelLine') {\n var dx = list[i].x - farthestX;\n list[i].linePoints[1][0] += dx;\n list[i].x = farthestX;\n }\n\n delta = list[i].y - lastY;\n\n if (delta < 0) {\n shiftDown(i, len, -delta, dir);\n }\n\n lastY = list[i].y + list[i].height;\n }\n\n if (viewHeight - lastY < 0) {\n shiftUp(len - 1, lastY - viewHeight);\n }\n\n for (var i = 0; i < len; i++) {\n if (list[i].y >= cy) {\n downList.push(list[i]);\n } else {\n upList.push(list[i]);\n }\n }\n\n changeX(upList, false, cx, cy, r, dir);\n changeX(downList, true, cx, cy, r, dir);\n}\n\nfunction avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) {\n var leftList = [];\n var rightList = [];\n var leftmostX = Number.MAX_VALUE;\n var rightmostX = -Number.MAX_VALUE;\n\n for (var i = 0; i < labelLayoutList.length; i++) {\n if (isPositionCenter(labelLayoutList[i])) {\n continue;\n }\n\n if (labelLayoutList[i].x < cx) {\n leftmostX = Math.min(leftmostX, labelLayoutList[i].x);\n leftList.push(labelLayoutList[i]);\n } else {\n rightmostX = Math.max(rightmostX, labelLayoutList[i].x);\n rightList.push(labelLayoutList[i]);\n }\n }\n\n adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);\n adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);\n\n for (var i = 0; i < labelLayoutList.length; i++) {\n var layout = labelLayoutList[i];\n\n if (isPositionCenter(layout)) {\n continue;\n }\n\n var linePoints = layout.linePoints;\n\n if (linePoints) {\n var isAlignToEdge = layout.labelAlignTo === 'edge';\n var realTextWidth = layout.textRect.width;\n var targetTextWidth;\n\n if (isAlignToEdge) {\n if (layout.x < cx) {\n targetTextWidth = linePoints[2][0] - layout.labelDistance - viewLeft - layout.labelMargin;\n } else {\n targetTextWidth = viewLeft + viewWidth - layout.labelMargin - linePoints[2][0] - layout.labelDistance;\n }\n } else {\n if (layout.x < cx) {\n targetTextWidth = layout.x - viewLeft - layout.bleedMargin;\n } else {\n targetTextWidth = viewLeft + viewWidth - layout.x - layout.bleedMargin;\n }\n }\n\n if (targetTextWidth < layout.textRect.width) {\n layout.text = textContain.truncateText(layout.text, targetTextWidth, layout.font);\n\n if (layout.labelAlignTo === 'edge') {\n realTextWidth = textContain.getWidth(layout.text, layout.font);\n }\n }\n\n var dist = linePoints[1][0] - linePoints[2][0];\n\n if (isAlignToEdge) {\n if (layout.x < cx) {\n linePoints[2][0] = viewLeft + layout.labelMargin + realTextWidth + layout.labelDistance;\n } else {\n linePoints[2][0] = viewLeft + viewWidth - layout.labelMargin - realTextWidth - layout.labelDistance;\n }\n } else {\n if (layout.x < cx) {\n linePoints[2][0] = layout.x + layout.labelDistance;\n } else {\n linePoints[2][0] = layout.x - layout.labelDistance;\n }\n\n linePoints[1][0] = linePoints[2][0] + dist;\n }\n\n linePoints[1][1] = linePoints[2][1] = layout.y;\n }\n }\n}\n\nfunction isPositionCenter(layout) {\n // Not change x for center label\n return layout.position === 'center';\n}\n\nfunction _default(seriesModel, r, viewWidth, viewHeight, viewLeft, viewTop) {\n var data = seriesModel.getData();\n var labelLayoutList = [];\n var cx;\n var cy;\n var hasLabelRotate = false;\n var minShowLabelRadian = (seriesModel.get('minShowLabelAngle') || 0) * RADIAN;\n data.each(function (idx) {\n var layout = data.getItemLayout(idx);\n var itemModel = data.getItemModel(idx);\n var labelModel = itemModel.getModel('label'); // Use position in normal or emphasis\n\n var labelPosition = labelModel.get('position') || itemModel.get('emphasis.label.position');\n var labelDistance = labelModel.get('distanceToLabelLine');\n var labelAlignTo = labelModel.get('alignTo');\n var labelMargin = parsePercent(labelModel.get('margin'), viewWidth);\n var bleedMargin = labelModel.get('bleedMargin');\n var font = labelModel.getFont();\n var labelLineModel = itemModel.getModel('labelLine');\n var labelLineLen = labelLineModel.get('length');\n labelLineLen = parsePercent(labelLineLen, viewWidth);\n var labelLineLen2 = labelLineModel.get('length2');\n labelLineLen2 = parsePercent(labelLineLen2, viewWidth);\n\n if (layout.angle < minShowLabelRadian) {\n return;\n }\n\n var midAngle = (layout.startAngle + layout.endAngle) / 2;\n var dx = Math.cos(midAngle);\n var dy = Math.sin(midAngle);\n var textX;\n var textY;\n var linePoints;\n var textAlign;\n cx = layout.cx;\n cy = layout.cy;\n var text = seriesModel.getFormattedLabel(idx, 'normal') || data.getName(idx);\n var textRect = textContain.getBoundingRect(text, font, textAlign, 'top');\n var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';\n\n if (labelPosition === 'center') {\n textX = layout.cx;\n textY = layout.cy;\n textAlign = 'center';\n } else {\n var x1 = (isLabelInside ? (layout.r + layout.r0) / 2 * dx : layout.r * dx) + cx;\n var y1 = (isLabelInside ? (layout.r + layout.r0) / 2 * dy : layout.r * dy) + cy;\n textX = x1 + dx * 3;\n textY = y1 + dy * 3;\n\n if (!isLabelInside) {\n // For roseType\n var x2 = x1 + dx * (labelLineLen + r - layout.r);\n var y2 = y1 + dy * (labelLineLen + r - layout.r);\n var x3 = x2 + (dx < 0 ? -1 : 1) * labelLineLen2;\n var y3 = y2;\n\n if (labelAlignTo === 'edge') {\n // Adjust textX because text align of edge is opposite\n textX = dx < 0 ? viewLeft + labelMargin : viewLeft + viewWidth - labelMargin;\n } else {\n textX = x3 + (dx < 0 ? -labelDistance : labelDistance);\n }\n\n textY = y3;\n linePoints = [[x1, y1], [x2, y2], [x3, y3]];\n }\n\n textAlign = isLabelInside ? 'center' : labelAlignTo === 'edge' ? dx > 0 ? 'right' : 'left' : dx > 0 ? 'left' : 'right';\n }\n\n var labelRotate;\n var rotate = labelModel.get('rotate');\n\n if (typeof rotate === 'number') {\n labelRotate = rotate * (Math.PI / 180);\n } else {\n labelRotate = rotate ? dx < 0 ? -midAngle + Math.PI : -midAngle : 0;\n }\n\n hasLabelRotate = !!labelRotate;\n layout.label = {\n x: textX,\n y: textY,\n position: labelPosition,\n height: textRect.height,\n len: labelLineLen,\n len2: labelLineLen2,\n linePoints: linePoints,\n textAlign: textAlign,\n verticalAlign: 'middle',\n rotation: labelRotate,\n inside: isLabelInside,\n labelDistance: labelDistance,\n labelAlignTo: labelAlignTo,\n labelMargin: labelMargin,\n bleedMargin: bleedMargin,\n textRect: textRect,\n text: text,\n font: font\n }; // Not layout the inside label\n\n if (!isLabelInside) {\n labelLayoutList.push(layout.label);\n }\n });\n\n if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) {\n avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop);\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 _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\nvar linearMap = _number.linearMap;\n\nvar layout = require(\"../../util/layout\");\n\nvar labelLayout = require(\"./labelLayout\");\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*/\nvar PI2 = Math.PI * 2;\nvar RADIAN = Math.PI / 180;\n\nfunction getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n\nfunction _default(seriesType, ecModel, api, payload) {\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n var data = seriesModel.getData();\n var valueDim = data.mapDimension('value');\n var viewRect = getViewRect(seriesModel, api);\n var center = seriesModel.get('center');\n var radius = seriesModel.get('radius');\n\n if (!zrUtil.isArray(radius)) {\n radius = [0, radius];\n }\n\n if (!zrUtil.isArray(center)) {\n center = [center, center];\n }\n\n var width = parsePercent(viewRect.width, api.getWidth());\n var height = parsePercent(viewRect.height, api.getHeight());\n var size = Math.min(width, height);\n var cx = parsePercent(center[0], width) + viewRect.x;\n var cy = parsePercent(center[1], height) + viewRect.y;\n var r0 = parsePercent(radius[0], size / 2);\n var r = parsePercent(radius[1], size / 2);\n var startAngle = -seriesModel.get('startAngle') * RADIAN;\n var minAngle = seriesModel.get('minAngle') * RADIAN;\n var validDataCount = 0;\n data.each(valueDim, function (value) {\n !isNaN(value) && validDataCount++;\n });\n var sum = data.getSum(valueDim); // Sum may be 0\n\n var unitRadian = Math.PI / (sum || validDataCount) * 2;\n var clockwise = seriesModel.get('clockwise');\n var roseType = seriesModel.get('roseType');\n var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); // [0...max]\n\n var extent = data.getDataExtent(valueDim);\n extent[0] = 0; // In the case some sector angle is smaller than minAngle\n\n var restAngle = PI2;\n var valueSumLargerThanMinAngle = 0;\n var currentAngle = startAngle;\n var dir = clockwise ? 1 : -1;\n data.each(valueDim, function (value, idx) {\n var angle;\n\n if (isNaN(value)) {\n data.setItemLayout(idx, {\n angle: NaN,\n startAngle: NaN,\n endAngle: NaN,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: r0,\n r: roseType ? NaN : r,\n viewRect: viewRect\n });\n return;\n } // FIXME 兼容 2.0 但是 roseType 是 area 的时候才是这样?\n\n\n if (roseType !== 'area') {\n angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;\n } else {\n angle = PI2 / validDataCount;\n }\n\n if (angle < minAngle) {\n angle = minAngle;\n restAngle -= minAngle;\n } else {\n valueSumLargerThanMinAngle += value;\n }\n\n var endAngle = currentAngle + dir * angle;\n data.setItemLayout(idx, {\n angle: angle,\n startAngle: currentAngle,\n endAngle: endAngle,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: r0,\n r: roseType ? linearMap(value, extent, [r0, r]) : r,\n viewRect: viewRect\n });\n currentAngle = endAngle;\n }); // Some sector is constrained by minAngle\n // Rest sectors needs recalculate angle\n\n if (restAngle < PI2 && validDataCount) {\n // Average the angle if rest angle is not enough after all angles is\n // Constrained by minAngle\n if (restAngle <= 1e-3) {\n var angle = PI2 / validDataCount;\n data.each(valueDim, function (value, idx) {\n if (!isNaN(value)) {\n var layout = data.getItemLayout(idx);\n layout.angle = angle;\n layout.startAngle = startAngle + dir * idx * angle;\n layout.endAngle = startAngle + dir * (idx + 1) * angle;\n }\n });\n } else {\n unitRadian = restAngle / valueSumLargerThanMinAngle;\n currentAngle = startAngle;\n data.each(valueDim, function (value, idx) {\n if (!isNaN(value)) {\n var layout = data.getItemLayout(idx);\n var angle = layout.angle === minAngle ? minAngle : value * unitRadian;\n layout.startAngle = currentAngle;\n layout.endAngle = currentAngle + dir * angle;\n currentAngle += dir * angle;\n }\n });\n }\n }\n\n labelLayout(seriesModel, r, viewRect.width, viewRect.height, viewRect.x, viewRect.y);\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\nrequire(\"../component/radar\");\n\nrequire(\"./radar/RadarSeries\");\n\nrequire(\"./radar/RadarView\");\n\nvar dataColor = require(\"../visual/dataColor\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar radarLayout = require(\"./radar/radarLayout\");\n\nvar dataFilter = require(\"../processor/dataFilter\");\n\nvar backwardCompat = require(\"./radar/backwardCompat\");\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// Must use radar component\necharts.registerVisual(dataColor('radar'));\necharts.registerVisual(visualSymbol('radar', 'circle'));\necharts.registerLayout(radarLayout);\necharts.registerProcessor(dataFilter('radar'));\necharts.registerPreprocessor(backwardCompat);","\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 SeriesModel = require(\"../../model/Series\");\n\nvar createListSimply = require(\"../helper/createListSimply\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar LegendVisualProvider = require(\"../../visual/LegendVisualProvider\");\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 RadarSeries = SeriesModel.extend({\n type: 'series.radar',\n dependencies: ['radar'],\n // Overwrite\n init: function (option) {\n RadarSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item\n // Use a function instead of direct access because data reference may changed\n\n this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n },\n getInitialData: function (option, ecModel) {\n return createListSimply(this, {\n generateCoord: 'indicator_',\n generateCoordCount: Infinity\n });\n },\n formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n var data = this.getData();\n var coordSys = this.coordinateSystem;\n var indicatorAxes = coordSys.getIndicatorAxes();\n var name = this.getData().getName(dataIndex);\n var newLine = renderMode === 'html' ? '
' : '\\n';\n return encodeHTML(name === '' ? this.name : name) + newLine + zrUtil.map(indicatorAxes, function (axis, idx) {\n var val = data.get(data.mapDimension(axis.dim), dataIndex);\n return encodeHTML(axis.name + ' : ' + val);\n }).join(newLine);\n },\n\n /**\n * @implement\n */\n getTooltipPosition: function (dataIndex) {\n if (dataIndex != null) {\n var data = this.getData();\n var coordSys = this.coordinateSystem;\n var values = data.getValues(zrUtil.map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }), dataIndex, true);\n\n for (var i = 0, len = values.length; i < len; i++) {\n if (!isNaN(values[i])) {\n var indicatorAxes = coordSys.getIndicatorAxes();\n return coordSys.coordToPoint(indicatorAxes[i].dataToCoord(values[i]), i);\n }\n }\n }\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'radar',\n legendHoverLink: true,\n radarIndex: 0,\n lineStyle: {\n width: 2,\n type: 'solid'\n },\n label: {\n position: 'top'\n },\n // areaStyle: {\n // },\n // itemStyle: {}\n symbol: 'emptyCircle',\n symbolSize: 4 // symbolRotate: null\n\n }\n});\nvar _default = RadarSeries;\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\nvar graphic = require(\"../../util/graphic\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar symbolUtil = require(\"../../util/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*/\nfunction normalizeSymbolSize(symbolSize) {\n if (!zrUtil.isArray(symbolSize)) {\n symbolSize = [+symbolSize, +symbolSize];\n }\n\n return symbolSize;\n}\n\nvar _default = echarts.extendChartView({\n type: 'radar',\n render: function (seriesModel, ecModel, api) {\n var polar = seriesModel.coordinateSystem;\n var group = this.group;\n var data = seriesModel.getData();\n var oldData = this._data;\n\n function createSymbol(data, idx) {\n var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n var color = data.getItemVisual(idx, 'color');\n\n if (symbolType === 'none') {\n return;\n }\n\n var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\n var symbolPath = symbolUtil.createSymbol(symbolType, -1, -1, 2, 2, color);\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate') || 0;\n symbolPath.attr({\n style: {\n strokeNoScale: true\n },\n z2: 100,\n scale: [symbolSize[0] / 2, symbolSize[1] / 2],\n rotation: symbolRotate * Math.PI / 180 || 0\n });\n return symbolPath;\n }\n\n function updateSymbols(oldPoints, newPoints, symbolGroup, data, idx, isInit) {\n // Simply rerender all\n symbolGroup.removeAll();\n\n for (var i = 0; i < newPoints.length - 1; i++) {\n var symbolPath = createSymbol(data, idx);\n\n if (symbolPath) {\n symbolPath.__dimIdx = i;\n\n if (oldPoints[i]) {\n symbolPath.attr('position', oldPoints[i]);\n graphic[isInit ? 'initProps' : 'updateProps'](symbolPath, {\n position: newPoints[i]\n }, seriesModel, idx);\n } else {\n symbolPath.attr('position', newPoints[i]);\n }\n\n symbolGroup.add(symbolPath);\n }\n }\n }\n\n function getInitialPoints(points) {\n return zrUtil.map(points, function (pt) {\n return [polar.cx, polar.cy];\n });\n }\n\n data.diff(oldData).add(function (idx) {\n var points = data.getItemLayout(idx);\n\n if (!points) {\n return;\n }\n\n var polygon = new graphic.Polygon();\n var polyline = new graphic.Polyline();\n var target = {\n shape: {\n points: points\n }\n };\n polygon.shape.points = getInitialPoints(points);\n polyline.shape.points = getInitialPoints(points);\n graphic.initProps(polygon, target, seriesModel, idx);\n graphic.initProps(polyline, target, seriesModel, idx);\n var itemGroup = new graphic.Group();\n var symbolGroup = new graphic.Group();\n itemGroup.add(polyline);\n itemGroup.add(polygon);\n itemGroup.add(symbolGroup);\n updateSymbols(polyline.shape.points, points, symbolGroup, data, idx, true);\n data.setItemGraphicEl(idx, itemGroup);\n }).update(function (newIdx, oldIdx) {\n var itemGroup = oldData.getItemGraphicEl(oldIdx);\n var polyline = itemGroup.childAt(0);\n var polygon = itemGroup.childAt(1);\n var symbolGroup = itemGroup.childAt(2);\n var target = {\n shape: {\n points: data.getItemLayout(newIdx)\n }\n };\n\n if (!target.shape.points) {\n return;\n }\n\n updateSymbols(polyline.shape.points, target.shape.points, symbolGroup, data, newIdx, false);\n graphic.updateProps(polyline, target, seriesModel);\n graphic.updateProps(polygon, target, seriesModel);\n data.setItemGraphicEl(newIdx, itemGroup);\n }).remove(function (idx) {\n group.remove(oldData.getItemGraphicEl(idx));\n }).execute();\n data.eachItemGraphicEl(function (itemGroup, idx) {\n var itemModel = data.getItemModel(idx);\n var polyline = itemGroup.childAt(0);\n var polygon = itemGroup.childAt(1);\n var symbolGroup = itemGroup.childAt(2);\n var color = data.getItemVisual(idx, 'color');\n group.add(itemGroup);\n polyline.useStyle(zrUtil.defaults(itemModel.getModel('lineStyle').getLineStyle(), {\n fill: 'none',\n stroke: color\n }));\n polyline.hoverStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n var areaStyleModel = itemModel.getModel('areaStyle');\n var hoverAreaStyleModel = itemModel.getModel('emphasis.areaStyle');\n var polygonIgnore = areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty();\n var hoverPolygonIgnore = hoverAreaStyleModel.isEmpty() && hoverAreaStyleModel.parentModel.isEmpty();\n hoverPolygonIgnore = hoverPolygonIgnore && polygonIgnore;\n polygon.ignore = polygonIgnore;\n polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {\n fill: color,\n opacity: 0.7\n }));\n polygon.hoverStyle = hoverAreaStyleModel.getAreaStyle();\n var itemStyle = itemModel.getModel('itemStyle').getItemStyle(['color']);\n var itemHoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n var labelModel = itemModel.getModel('label');\n var labelHoverModel = itemModel.getModel('emphasis.label');\n symbolGroup.eachChild(function (symbolPath) {\n symbolPath.setStyle(itemStyle);\n symbolPath.hoverStyle = zrUtil.clone(itemHoverStyle);\n var defaultText = data.get(data.dimensions[symbolPath.__dimIdx], idx);\n (defaultText == null || isNaN(defaultText)) && (defaultText = '');\n graphic.setLabelStyle(symbolPath.style, symbolPath.hoverStyle, labelModel, labelHoverModel, {\n labelFetcher: data.hostModel,\n labelDataIndex: idx,\n labelDimIndex: symbolPath.__dimIdx,\n defaultText: defaultText,\n autoColor: color,\n isRectText: true\n });\n });\n\n itemGroup.highDownOnUpdate = function (fromState, toState) {\n polygon.attr('ignore', toState === 'emphasis' ? hoverPolygonIgnore : polygonIgnore);\n };\n\n graphic.setHoverStyle(itemGroup);\n });\n this._data = data;\n },\n remove: function () {\n this.group.removeAll();\n this._data = null;\n },\n dispose: function () {}\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\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// Backward compat for radar chart in 2\nfunction _default(option) {\n var polarOptArr = option.polar;\n\n if (polarOptArr) {\n if (!zrUtil.isArray(polarOptArr)) {\n polarOptArr = [polarOptArr];\n }\n\n var polarNotRadar = [];\n zrUtil.each(polarOptArr, function (polarOpt, idx) {\n if (polarOpt.indicator) {\n if (polarOpt.type && !polarOpt.shape) {\n polarOpt.shape = polarOpt.type;\n }\n\n option.radar = option.radar || [];\n\n if (!zrUtil.isArray(option.radar)) {\n option.radar = [option.radar];\n }\n\n option.radar.push(polarOpt);\n } else {\n polarNotRadar.push(polarOpt);\n }\n });\n option.polar = polarNotRadar;\n }\n\n zrUtil.each(option.series, function (seriesOpt) {\n if (seriesOpt && seriesOpt.type === 'radar' && seriesOpt.polarIndex) {\n seriesOpt.radarIndex = seriesOpt.polarIndex;\n }\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 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 _default(ecModel) {\n ecModel.eachSeriesByType('radar', function (seriesModel) {\n var data = seriesModel.getData();\n var points = [];\n var coordSys = seriesModel.coordinateSystem;\n\n if (!coordSys) {\n return;\n }\n\n var axes = coordSys.getIndicatorAxes();\n zrUtil.each(axes, function (axis, axisIndex) {\n data.each(data.mapDimension(axes[axisIndex].dim), function (val, dataIndex) {\n points[dataIndex] = points[dataIndex] || [];\n var point = coordSys.dataToPoint(val, axisIndex);\n points[dataIndex][axisIndex] = isValidPoint(point) ? point : getValueMissingPoint(coordSys);\n });\n }); // Close polygon\n\n data.each(function (idx) {\n // TODO\n // Is it appropriate to connect to the next data when some data is missing?\n // Or, should trade it like `connectNull` in line chart?\n var firstPoint = zrUtil.find(points[idx], function (point) {\n return isValidPoint(point);\n }) || getValueMissingPoint(coordSys); // Copy the first actual point to the end of the array\n\n points[idx].push(firstPoint.slice());\n data.setItemLayout(idx, points[idx]);\n });\n });\n}\n\nfunction isValidPoint(point) {\n return !isNaN(point[0]) && !isNaN(point[1]);\n}\n\nfunction getValueMissingPoint(coordSys) {\n // It is error-prone to input [NaN, NaN] into polygon, polygon.\n // (probably cause problem when refreshing or animating)\n return [coordSys.cx, coordSys.cy];\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\nrequire(\"./sankey/SankeySeries\");\n\nrequire(\"./sankey/SankeyView\");\n\nrequire(\"./sankey/sankeyAction\");\n\nvar sankeyLayout = require(\"./sankey/sankeyLayout\");\n\nvar sankeyVisual = require(\"./sankey/sankeyVisual\");\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*/\necharts.registerLayout(sankeyLayout);\necharts.registerVisual(sankeyVisual);","\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 SeriesModel = require(\"../../model/Series\");\n\nvar createGraphFromNodeEdge = require(\"../helper/createGraphFromNodeEdge\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar Model = require(\"../../model/Model\");\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\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 SankeySeries = SeriesModel.extend({\n type: 'series.sankey',\n layoutInfo: null,\n levelModels: null,\n\n /**\n * Init a graph data structure from data in option series\n *\n * @param {Object} option the object used to config echarts view\n * @return {module:echarts/data/List} storage initial data\n */\n getInitialData: function (option, ecModel) {\n var links = option.edges || option.links;\n var nodes = option.data || option.nodes;\n var levels = option.levels;\n var levelModels = this.levelModels = {};\n\n for (var i = 0; i < levels.length; i++) {\n if (levels[i].depth != null && levels[i].depth >= 0) {\n levelModels[levels[i].depth] = new Model(levels[i], this, ecModel);\n } else {}\n }\n\n if (nodes && links) {\n var graph = createGraphFromNodeEdge(nodes, links, this, true, beforeLink);\n return graph.data;\n }\n\n function beforeLink(nodeData, edgeData) {\n nodeData.wrapMethod('getItemModel', function (model, idx) {\n model.customizeGetParent(function (path) {\n var parentModel = this.parentModel;\n var nodeDepth = parentModel.getData().getItemLayout(idx).depth;\n var levelModel = parentModel.levelModels[nodeDepth];\n return levelModel || this.parentModel;\n });\n return model;\n });\n edgeData.wrapMethod('getItemModel', function (model, idx) {\n model.customizeGetParent(function (path) {\n var parentModel = this.parentModel;\n var edge = parentModel.getGraph().getEdgeByIndex(idx);\n var depth = edge.node1.getLayout().depth;\n var levelModel = parentModel.levelModels[depth];\n return levelModel || this.parentModel;\n });\n return model;\n });\n }\n },\n setNodePosition: function (dataIndex, localPosition) {\n var dataItem = this.option.data[dataIndex];\n dataItem.localX = localPosition[0];\n dataItem.localY = localPosition[1];\n },\n\n /**\n * Return the graphic data structure\n *\n * @return {module:echarts/data/Graph} graphic data structure\n */\n getGraph: function () {\n return this.getData().graph;\n },\n\n /**\n * Get edge data of graphic data structure\n *\n * @return {module:echarts/data/List} data structure of list\n */\n getEdgeData: function () {\n return this.getGraph().edgeData;\n },\n\n /**\n * @override\n */\n formatTooltip: function (dataIndex, multipleSeries, dataType) {\n // dataType === 'node' or empty do not show tooltip by default\n if (dataType === 'edge') {\n var params = this.getDataParams(dataIndex, dataType);\n var rawDataOpt = params.data;\n var html = rawDataOpt.source + ' -- ' + rawDataOpt.target;\n\n if (params.value) {\n html += ' : ' + params.value;\n }\n\n return encodeHTML(html);\n } else if (dataType === 'node') {\n var node = this.getGraph().getNodeByIndex(dataIndex);\n var value = node.getLayout().value;\n var name = this.getDataParams(dataIndex, dataType).data.name;\n\n if (value) {\n var html = name + ' : ' + value;\n }\n\n return encodeHTML(html);\n }\n\n return SankeySeries.superCall(this, 'formatTooltip', dataIndex, multipleSeries);\n },\n optionUpdated: function () {\n var option = this.option;\n\n if (option.focusNodeAdjacency === true) {\n option.focusNodeAdjacency = 'allEdges';\n }\n },\n // Override Series.getDataParams()\n getDataParams: function (dataIndex, dataType) {\n var params = SankeySeries.superCall(this, 'getDataParams', dataIndex, dataType);\n\n if (params.value == null && dataType === 'node') {\n var node = this.getGraph().getNodeByIndex(dataIndex);\n var nodeValue = node.getLayout().value;\n params.value = nodeValue;\n }\n\n return params;\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'view',\n layout: null,\n // The position of the whole view\n left: '5%',\n top: '5%',\n right: '20%',\n bottom: '5%',\n // Value can be 'vertical'\n orient: 'horizontal',\n // The dx of the node\n nodeWidth: 20,\n // The vertical distance between two nodes\n nodeGap: 8,\n // Control if the node can move or not\n draggable: true,\n // Value can be 'inEdges', 'outEdges', 'allEdges', true (the same as 'allEdges').\n focusNodeAdjacency: false,\n // The number of iterations to change the position of the node\n layoutIterations: 32,\n label: {\n show: true,\n position: 'right',\n color: '#000',\n fontSize: 12\n },\n levels: [],\n // Value can be 'left' or 'right'\n nodeAlign: 'justify',\n itemStyle: {\n borderWidth: 1,\n borderColor: '#333'\n },\n lineStyle: {\n color: '#314656',\n opacity: 0.2,\n curveness: 0.5\n },\n emphasis: {\n label: {\n show: true\n },\n lineStyle: {\n opacity: 0.5\n }\n },\n animationEasing: 'linear',\n animationDuration: 1000\n }\n});\nvar _default = SankeySeries;\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 echarts = require(\"../../echarts\");\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*/\nvar nodeOpacityPath = ['itemStyle', 'opacity'];\nvar hoverNodeOpacityPath = ['emphasis', 'itemStyle', 'opacity'];\nvar lineOpacityPath = ['lineStyle', 'opacity'];\nvar hoverLineOpacityPath = ['emphasis', 'lineStyle', 'opacity'];\n\nfunction getItemOpacity(item, opacityPath) {\n return item.getVisual('opacity') || item.getModel().get(opacityPath);\n}\n\nfunction fadeOutItem(item, opacityPath, opacityRatio) {\n var el = item.getGraphicEl();\n var opacity = getItemOpacity(item, opacityPath);\n\n if (opacityRatio != null) {\n opacity == null && (opacity = 1);\n opacity *= opacityRatio;\n }\n\n el.downplay && el.downplay();\n el.traverse(function (child) {\n if (child.type !== 'group') {\n child.setStyle('opacity', opacity);\n }\n });\n}\n\nfunction fadeInItem(item, opacityPath) {\n var opacity = getItemOpacity(item, opacityPath);\n var el = item.getGraphicEl();\n el.traverse(function (child) {\n if (child.type !== 'group') {\n child.setStyle('opacity', opacity);\n }\n }); // Support emphasis here.\n\n el.highlight && el.highlight();\n}\n\nvar SankeyShape = graphic.extendShape({\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n cpx1: 0,\n cpy1: 0,\n cpx2: 0,\n cpy2: 0,\n extent: 0,\n orient: ''\n },\n buildPath: function (ctx, shape) {\n var extent = shape.extent;\n ctx.moveTo(shape.x1, shape.y1);\n ctx.bezierCurveTo(shape.cpx1, shape.cpy1, shape.cpx2, shape.cpy2, shape.x2, shape.y2);\n\n if (shape.orient === 'vertical') {\n ctx.lineTo(shape.x2 + extent, shape.y2);\n ctx.bezierCurveTo(shape.cpx2 + extent, shape.cpy2, shape.cpx1 + extent, shape.cpy1, shape.x1 + extent, shape.y1);\n } else {\n ctx.lineTo(shape.x2, shape.y2 + extent);\n ctx.bezierCurveTo(shape.cpx2, shape.cpy2 + extent, shape.cpx1, shape.cpy1 + extent, shape.x1, shape.y1 + extent);\n }\n\n ctx.closePath();\n },\n highlight: function () {\n this.trigger('emphasis');\n },\n downplay: function () {\n this.trigger('normal');\n }\n});\n\nvar _default = echarts.extendChartView({\n type: 'sankey',\n\n /**\n * @private\n * @type {module:echarts/chart/sankey/SankeySeries}\n */\n _model: null,\n\n /**\n * @private\n * @type {boolean}\n */\n _focusAdjacencyDisabled: false,\n render: function (seriesModel, ecModel, api) {\n var sankeyView = this;\n var graph = seriesModel.getGraph();\n var group = this.group;\n var layoutInfo = seriesModel.layoutInfo; // view width\n\n var width = layoutInfo.width; // view height\n\n var height = layoutInfo.height;\n var nodeData = seriesModel.getData();\n var edgeData = seriesModel.getData('edge');\n var orient = seriesModel.get('orient');\n this._model = seriesModel;\n group.removeAll();\n group.attr('position', [layoutInfo.x, layoutInfo.y]); // generate a bezire Curve for each edge\n\n graph.eachEdge(function (edge) {\n var curve = new SankeyShape();\n curve.dataIndex = edge.dataIndex;\n curve.seriesIndex = seriesModel.seriesIndex;\n curve.dataType = 'edge';\n var lineStyleModel = edge.getModel('lineStyle');\n var curvature = lineStyleModel.get('curveness');\n var n1Layout = edge.node1.getLayout();\n var node1Model = edge.node1.getModel();\n var dragX1 = node1Model.get('localX');\n var dragY1 = node1Model.get('localY');\n var n2Layout = edge.node2.getLayout();\n var node2Model = edge.node2.getModel();\n var dragX2 = node2Model.get('localX');\n var dragY2 = node2Model.get('localY');\n var edgeLayout = edge.getLayout();\n var x1;\n var y1;\n var x2;\n var y2;\n var cpx1;\n var cpy1;\n var cpx2;\n var cpy2;\n curve.shape.extent = Math.max(1, edgeLayout.dy);\n curve.shape.orient = orient;\n\n if (orient === 'vertical') {\n x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + edgeLayout.sy;\n y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + n1Layout.dy;\n x2 = (dragX2 != null ? dragX2 * width : n2Layout.x) + edgeLayout.ty;\n y2 = dragY2 != null ? dragY2 * height : n2Layout.y;\n cpx1 = x1;\n cpy1 = y1 * (1 - curvature) + y2 * curvature;\n cpx2 = x2;\n cpy2 = y1 * curvature + y2 * (1 - curvature);\n } else {\n x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + n1Layout.dx;\n y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + edgeLayout.sy;\n x2 = dragX2 != null ? dragX2 * width : n2Layout.x;\n y2 = (dragY2 != null ? dragY2 * height : n2Layout.y) + edgeLayout.ty;\n cpx1 = x1 * (1 - curvature) + x2 * curvature;\n cpy1 = y1;\n cpx2 = x1 * curvature + x2 * (1 - curvature);\n cpy2 = y2;\n }\n\n curve.setShape({\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n cpx1: cpx1,\n cpy1: cpy1,\n cpx2: cpx2,\n cpy2: cpy2\n });\n curve.setStyle(lineStyleModel.getItemStyle()); // Special color, use source node color or target node color\n\n switch (curve.style.fill) {\n case 'source':\n curve.style.fill = edge.node1.getVisual('color');\n break;\n\n case 'target':\n curve.style.fill = edge.node2.getVisual('color');\n break;\n }\n\n graphic.setHoverStyle(curve, edge.getModel('emphasis.lineStyle').getItemStyle());\n group.add(curve);\n edgeData.setItemGraphicEl(edge.dataIndex, curve);\n }); // Generate a rect for each node\n\n graph.eachNode(function (node) {\n var layout = node.getLayout();\n var itemModel = node.getModel();\n var dragX = itemModel.get('localX');\n var dragY = itemModel.get('localY');\n var labelModel = itemModel.getModel('label');\n var labelHoverModel = itemModel.getModel('emphasis.label');\n var rect = new graphic.Rect({\n shape: {\n x: dragX != null ? dragX * width : layout.x,\n y: dragY != null ? dragY * height : layout.y,\n width: layout.dx,\n height: layout.dy\n },\n style: itemModel.getModel('itemStyle').getItemStyle()\n });\n var hoverStyle = node.getModel('emphasis.itemStyle').getItemStyle();\n graphic.setLabelStyle(rect.style, hoverStyle, labelModel, labelHoverModel, {\n labelFetcher: seriesModel,\n labelDataIndex: node.dataIndex,\n defaultText: node.id,\n isRectText: true\n });\n rect.setStyle('fill', node.getVisual('color'));\n graphic.setHoverStyle(rect, hoverStyle);\n group.add(rect);\n nodeData.setItemGraphicEl(node.dataIndex, rect);\n rect.dataType = 'node';\n });\n nodeData.eachItemGraphicEl(function (el, dataIndex) {\n var itemModel = nodeData.getItemModel(dataIndex);\n\n if (itemModel.get('draggable')) {\n el.drift = function (dx, dy) {\n sankeyView._focusAdjacencyDisabled = true;\n this.shape.x += dx;\n this.shape.y += dy;\n this.dirty();\n api.dispatchAction({\n type: 'dragNode',\n seriesId: seriesModel.id,\n dataIndex: nodeData.getRawIndex(dataIndex),\n localX: this.shape.x / width,\n localY: this.shape.y / height\n });\n };\n\n el.ondragend = function () {\n sankeyView._focusAdjacencyDisabled = false;\n };\n\n el.draggable = true;\n el.cursor = 'move';\n }\n\n el.highlight = function () {\n this.trigger('emphasis');\n };\n\n el.downplay = function () {\n this.trigger('normal');\n };\n\n el.focusNodeAdjHandler && el.off('mouseover', el.focusNodeAdjHandler);\n el.unfocusNodeAdjHandler && el.off('mouseout', el.unfocusNodeAdjHandler);\n\n if (itemModel.get('focusNodeAdjacency')) {\n el.on('mouseover', el.focusNodeAdjHandler = function () {\n if (!sankeyView._focusAdjacencyDisabled) {\n sankeyView._clearTimer();\n\n api.dispatchAction({\n type: 'focusNodeAdjacency',\n seriesId: seriesModel.id,\n dataIndex: el.dataIndex\n });\n }\n });\n el.on('mouseout', el.unfocusNodeAdjHandler = function () {\n if (!sankeyView._focusAdjacencyDisabled) {\n sankeyView._dispatchUnfocus(api);\n }\n });\n }\n });\n edgeData.eachItemGraphicEl(function (el, dataIndex) {\n var edgeModel = edgeData.getItemModel(dataIndex);\n el.focusNodeAdjHandler && el.off('mouseover', el.focusNodeAdjHandler);\n el.unfocusNodeAdjHandler && el.off('mouseout', el.unfocusNodeAdjHandler);\n\n if (edgeModel.get('focusNodeAdjacency')) {\n el.on('mouseover', el.focusNodeAdjHandler = function () {\n if (!sankeyView._focusAdjacencyDisabled) {\n sankeyView._clearTimer();\n\n api.dispatchAction({\n type: 'focusNodeAdjacency',\n seriesId: seriesModel.id,\n edgeDataIndex: el.dataIndex\n });\n }\n });\n el.on('mouseout', el.unfocusNodeAdjHandler = function () {\n if (!sankeyView._focusAdjacencyDisabled) {\n sankeyView._dispatchUnfocus(api);\n }\n });\n }\n });\n\n if (!this._data && seriesModel.get('animation')) {\n group.setClipPath(createGridClipShape(group.getBoundingRect(), seriesModel, function () {\n group.removeClipPath();\n }));\n }\n\n this._data = seriesModel.getData();\n },\n dispose: function () {\n this._clearTimer();\n },\n _dispatchUnfocus: function (api) {\n var self = this;\n\n this._clearTimer();\n\n this._unfocusDelayTimer = setTimeout(function () {\n self._unfocusDelayTimer = null;\n api.dispatchAction({\n type: 'unfocusNodeAdjacency',\n seriesId: self._model.id\n });\n }, 500);\n },\n _clearTimer: function () {\n if (this._unfocusDelayTimer) {\n clearTimeout(this._unfocusDelayTimer);\n this._unfocusDelayTimer = null;\n }\n },\n focusNodeAdjacency: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var graph = data.graph;\n var dataIndex = payload.dataIndex;\n var itemModel = data.getItemModel(dataIndex);\n var edgeDataIndex = payload.edgeDataIndex;\n\n if (dataIndex == null && edgeDataIndex == null) {\n return;\n }\n\n var node = graph.getNodeByIndex(dataIndex);\n var edge = graph.getEdgeByIndex(edgeDataIndex);\n graph.eachNode(function (node) {\n fadeOutItem(node, nodeOpacityPath, 0.1);\n });\n graph.eachEdge(function (edge) {\n fadeOutItem(edge, lineOpacityPath, 0.1);\n });\n\n if (node) {\n fadeInItem(node, hoverNodeOpacityPath);\n var focusNodeAdj = itemModel.get('focusNodeAdjacency');\n\n if (focusNodeAdj === 'outEdges') {\n zrUtil.each(node.outEdges, function (edge) {\n if (edge.dataIndex < 0) {\n return;\n }\n\n fadeInItem(edge, hoverLineOpacityPath);\n fadeInItem(edge.node2, hoverNodeOpacityPath);\n });\n } else if (focusNodeAdj === 'inEdges') {\n zrUtil.each(node.inEdges, function (edge) {\n if (edge.dataIndex < 0) {\n return;\n }\n\n fadeInItem(edge, hoverLineOpacityPath);\n fadeInItem(edge.node1, hoverNodeOpacityPath);\n });\n } else if (focusNodeAdj === 'allEdges') {\n zrUtil.each(node.edges, function (edge) {\n if (edge.dataIndex < 0) {\n return;\n }\n\n fadeInItem(edge, hoverLineOpacityPath);\n edge.node1 !== node && fadeInItem(edge.node1, hoverNodeOpacityPath);\n edge.node2 !== node && fadeInItem(edge.node2, hoverNodeOpacityPath);\n });\n }\n }\n\n if (edge) {\n fadeInItem(edge, hoverLineOpacityPath);\n fadeInItem(edge.node1, hoverNodeOpacityPath);\n fadeInItem(edge.node2, hoverNodeOpacityPath);\n }\n },\n unfocusNodeAdjacency: function (seriesModel, ecModel, api, payload) {\n var graph = seriesModel.getGraph();\n graph.eachNode(function (node) {\n fadeOutItem(node, nodeOpacityPath);\n });\n graph.eachEdge(function (edge) {\n fadeOutItem(edge, lineOpacityPath);\n });\n }\n}); // Add animation to the view\n\n\nfunction createGridClipShape(rect, seriesModel, cb) {\n var rectEl = new graphic.Rect({\n shape: {\n x: rect.x - 10,\n y: rect.y - 10,\n width: 0,\n height: rect.height + 20\n }\n });\n graphic.initProps(rectEl, {\n shape: {\n width: rect.width + 20\n }\n }, seriesModel, cb);\n return rectEl;\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\nrequire(\"../helper/focusNodeAdjacencyAction\");\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*/\necharts.registerAction({\n type: 'dragNode',\n event: 'dragnode',\n // here can only use 'update' now, other value is not support in echarts.\n update: 'update'\n}, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'series',\n subType: 'sankey',\n query: payload\n }, function (seriesModel) {\n seriesModel.setNodePosition(payload.dataIndex, [payload.localX, payload.localY]);\n });\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar layout = require(\"../../util/layout\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _model = require(\"../../util/model\");\n\nvar groupData = _model.groupData;\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(ecModel, api, payload) {\n ecModel.eachSeriesByType('sankey', function (seriesModel) {\n var nodeWidth = seriesModel.get('nodeWidth');\n var nodeGap = seriesModel.get('nodeGap');\n var layoutInfo = getViewRect(seriesModel, api);\n seriesModel.layoutInfo = layoutInfo;\n var width = layoutInfo.width;\n var height = layoutInfo.height;\n var graph = seriesModel.getGraph();\n var nodes = graph.nodes;\n var edges = graph.edges;\n computeNodeValues(nodes);\n var filteredNodes = zrUtil.filter(nodes, function (node) {\n return node.getLayout().value === 0;\n });\n var iterations = filteredNodes.length !== 0 ? 0 : seriesModel.get('layoutIterations');\n var orient = seriesModel.get('orient');\n var nodeAlign = seriesModel.get('nodeAlign');\n layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign);\n });\n}\n/**\n * Get the layout position of the whole view\n *\n * @param {module:echarts/model/Series} seriesModel the model object of sankey series\n * @param {module:echarts/ExtensionAPI} api provide the API list that the developer can call\n * @return {module:zrender/core/BoundingRect} size of rect to draw the sankey view\n */\n\n\nfunction getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n\nfunction layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign) {\n computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign);\n computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient);\n computeEdgeDepths(nodes, orient);\n}\n/**\n * Compute the value of each node by summing the associated edge's value\n *\n * @param {module:echarts/data/Graph~Node} nodes node of sankey view\n */\n\n\nfunction computeNodeValues(nodes) {\n zrUtil.each(nodes, function (node) {\n var value1 = sum(node.outEdges, getEdgeValue);\n var value2 = sum(node.inEdges, getEdgeValue);\n var nodeRawValue = node.getValue() || 0;\n var value = Math.max(value1, value2, nodeRawValue);\n node.setLayout({\n value: value\n }, true);\n });\n}\n/**\n * Compute the x-position for each node.\n *\n * Here we use Kahn algorithm to detect cycle when we traverse\n * the node to computer the initial x position.\n *\n * @param {module:echarts/data/Graph~Node} nodes node of sankey view\n * @param {number} nodeWidth the dx of the node\n * @param {number} width the whole width of the area to draw the view\n */\n\n\nfunction computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign) {\n // Used to mark whether the edge is deleted. if it is deleted,\n // the value is 0, otherwise it is 1.\n var remainEdges = []; // Storage each node's indegree.\n\n var indegreeArr = []; //Used to storage the node with indegree is equal to 0.\n\n var zeroIndegrees = [];\n var nextTargetNode = [];\n var x = 0;\n var kx = 0;\n\n for (var i = 0; i < edges.length; i++) {\n remainEdges[i] = 1;\n }\n\n for (i = 0; i < nodes.length; i++) {\n indegreeArr[i] = nodes[i].inEdges.length;\n\n if (indegreeArr[i] === 0) {\n zeroIndegrees.push(nodes[i]);\n }\n }\n\n var maxNodeDepth = -1; // Traversing nodes using topological sorting to calculate the\n // horizontal(if orient === 'horizontal') or vertical(if orient === 'vertical')\n // position of the nodes.\n\n while (zeroIndegrees.length) {\n for (var idx = 0; idx < zeroIndegrees.length; idx++) {\n var node = zeroIndegrees[idx];\n var item = node.hostGraph.data.getRawDataItem(node.dataIndex);\n var isItemDepth = item.depth != null && item.depth >= 0;\n\n if (isItemDepth && item.depth > maxNodeDepth) {\n maxNodeDepth = item.depth;\n }\n\n node.setLayout({\n depth: isItemDepth ? item.depth : x\n }, true);\n orient === 'vertical' ? node.setLayout({\n dy: nodeWidth\n }, true) : node.setLayout({\n dx: nodeWidth\n }, true);\n\n for (var edgeIdx = 0; edgeIdx < node.outEdges.length; edgeIdx++) {\n var edge = node.outEdges[edgeIdx];\n var indexEdge = edges.indexOf(edge);\n remainEdges[indexEdge] = 0;\n var targetNode = edge.node2;\n var nodeIndex = nodes.indexOf(targetNode);\n\n if (--indegreeArr[nodeIndex] === 0 && nextTargetNode.indexOf(targetNode) < 0) {\n nextTargetNode.push(targetNode);\n }\n }\n }\n\n ++x;\n zeroIndegrees = nextTargetNode;\n nextTargetNode = [];\n }\n\n for (i = 0; i < remainEdges.length; i++) {\n if (remainEdges[i] === 1) {\n throw new Error('Sankey is a DAG, the original data has cycle!');\n }\n }\n\n var maxDepth = maxNodeDepth > x - 1 ? maxNodeDepth : x - 1;\n\n if (nodeAlign && nodeAlign !== 'left') {\n adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth);\n }\n\n var kx = orient === 'vertical' ? (height - nodeWidth) / maxDepth : (width - nodeWidth) / maxDepth;\n scaleNodeBreadths(nodes, kx, orient);\n}\n\nfunction isNodeDepth(node) {\n var item = node.hostGraph.data.getRawDataItem(node.dataIndex);\n return item.depth != null && item.depth >= 0;\n}\n\nfunction adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth) {\n if (nodeAlign === 'right') {\n var nextSourceNode = [];\n var remainNodes = nodes;\n var nodeHeight = 0;\n\n while (remainNodes.length) {\n for (var i = 0; i < remainNodes.length; i++) {\n var node = remainNodes[i];\n node.setLayout({\n skNodeHeight: nodeHeight\n }, true);\n\n for (var j = 0; j < node.inEdges.length; j++) {\n var edge = node.inEdges[j];\n\n if (nextSourceNode.indexOf(edge.node1) < 0) {\n nextSourceNode.push(edge.node1);\n }\n }\n }\n\n remainNodes = nextSourceNode;\n nextSourceNode = [];\n ++nodeHeight;\n }\n\n zrUtil.each(nodes, function (node) {\n if (!isNodeDepth(node)) {\n node.setLayout({\n depth: Math.max(0, maxDepth - node.getLayout().skNodeHeight)\n }, true);\n }\n });\n } else if (nodeAlign === 'justify') {\n moveSinksRight(nodes, maxDepth);\n }\n}\n/**\n * All the node without outEgdes are assigned maximum x-position and\n * be aligned in the last column.\n *\n * @param {module:echarts/data/Graph~Node} nodes. node of sankey view.\n * @param {number} maxDepth. use to assign to node without outEdges as x-position.\n */\n\n\nfunction moveSinksRight(nodes, maxDepth) {\n zrUtil.each(nodes, function (node) {\n if (!isNodeDepth(node) && !node.outEdges.length) {\n node.setLayout({\n depth: maxDepth\n }, true);\n }\n });\n}\n/**\n * Scale node x-position to the width\n *\n * @param {module:echarts/data/Graph~Node} nodes node of sankey view\n * @param {number} kx multiple used to scale nodes\n */\n\n\nfunction scaleNodeBreadths(nodes, kx, orient) {\n zrUtil.each(nodes, function (node) {\n var nodeDepth = node.getLayout().depth * kx;\n orient === 'vertical' ? node.setLayout({\n y: nodeDepth\n }, true) : node.setLayout({\n x: nodeDepth\n }, true);\n });\n}\n/**\n * Using Gauss-Seidel iterations method to compute the node depth(y-position)\n *\n * @param {module:echarts/data/Graph~Node} nodes node of sankey view\n * @param {module:echarts/data/Graph~Edge} edges edge of sankey view\n * @param {number} height the whole height of the area to draw the view\n * @param {number} nodeGap the vertical distance between two nodes\n * in the same column.\n * @param {number} iterations the number of iterations for the algorithm\n */\n\n\nfunction computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient) {\n var nodesByBreadth = prepareNodesByBreadth(nodes, orient);\n initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient);\n resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\n\n for (var alpha = 1; iterations > 0; iterations--) {\n // 0.99 is a experience parameter, ensure that each iterations of\n // changes as small as possible.\n alpha *= 0.99;\n relaxRightToLeft(nodesByBreadth, alpha, orient);\n resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\n relaxLeftToRight(nodesByBreadth, alpha, orient);\n resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\n }\n}\n\nfunction prepareNodesByBreadth(nodes, orient) {\n var nodesByBreadth = [];\n var keyAttr = orient === 'vertical' ? 'y' : 'x';\n var groupResult = groupData(nodes, function (node) {\n return node.getLayout()[keyAttr];\n });\n groupResult.keys.sort(function (a, b) {\n return a - b;\n });\n zrUtil.each(groupResult.keys, function (key) {\n nodesByBreadth.push(groupResult.buckets.get(key));\n });\n return nodesByBreadth;\n}\n/**\n * Compute the original y-position for each node\n *\n * @param {module:echarts/data/Graph~Node} nodes node of sankey view\n * @param {Array.>} nodesByBreadth\n * group by the array of all sankey nodes based on the nodes x-position.\n * @param {module:echarts/data/Graph~Edge} edges edge of sankey view\n * @param {number} height the whole height of the area to draw the view\n * @param {number} nodeGap the vertical distance between two nodes\n */\n\n\nfunction initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient) {\n var minKy = Infinity;\n zrUtil.each(nodesByBreadth, function (nodes) {\n var n = nodes.length;\n var sum = 0;\n zrUtil.each(nodes, function (node) {\n sum += node.getLayout().value;\n });\n var ky = orient === 'vertical' ? (width - (n - 1) * nodeGap) / sum : (height - (n - 1) * nodeGap) / sum;\n\n if (ky < minKy) {\n minKy = ky;\n }\n });\n zrUtil.each(nodesByBreadth, function (nodes) {\n zrUtil.each(nodes, function (node, i) {\n var nodeDy = node.getLayout().value * minKy;\n\n if (orient === 'vertical') {\n node.setLayout({\n x: i\n }, true);\n node.setLayout({\n dx: nodeDy\n }, true);\n } else {\n node.setLayout({\n y: i\n }, true);\n node.setLayout({\n dy: nodeDy\n }, true);\n }\n });\n });\n zrUtil.each(edges, function (edge) {\n var edgeDy = +edge.getValue() * minKy;\n edge.setLayout({\n dy: edgeDy\n }, true);\n });\n}\n/**\n * Resolve the collision of initialized depth (y-position)\n *\n * @param {Array.>} nodesByBreadth\n * group by the array of all sankey nodes based on the nodes x-position.\n * @param {number} nodeGap the vertical distance between two nodes\n * @param {number} height the whole height of the area to draw the view\n */\n\n\nfunction resolveCollisions(nodesByBreadth, nodeGap, height, width, orient) {\n var keyAttr = orient === 'vertical' ? 'x' : 'y';\n zrUtil.each(nodesByBreadth, function (nodes) {\n nodes.sort(function (a, b) {\n return a.getLayout()[keyAttr] - b.getLayout()[keyAttr];\n });\n var nodeX;\n var node;\n var dy;\n var y0 = 0;\n var n = nodes.length;\n var nodeDyAttr = orient === 'vertical' ? 'dx' : 'dy';\n\n for (var i = 0; i < n; i++) {\n node = nodes[i];\n dy = y0 - node.getLayout()[keyAttr];\n\n if (dy > 0) {\n nodeX = node.getLayout()[keyAttr] + dy;\n orient === 'vertical' ? node.setLayout({\n x: nodeX\n }, true) : node.setLayout({\n y: nodeX\n }, true);\n }\n\n y0 = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap;\n }\n\n var viewWidth = orient === 'vertical' ? width : height; // If the bottommost node goes outside the bounds, push it back up\n\n dy = y0 - nodeGap - viewWidth;\n\n if (dy > 0) {\n nodeX = node.getLayout()[keyAttr] - dy;\n orient === 'vertical' ? node.setLayout({\n x: nodeX\n }, true) : node.setLayout({\n y: nodeX\n }, true);\n y0 = nodeX;\n\n for (i = n - 2; i >= 0; --i) {\n node = nodes[i];\n dy = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap - y0;\n\n if (dy > 0) {\n nodeX = node.getLayout()[keyAttr] - dy;\n orient === 'vertical' ? node.setLayout({\n x: nodeX\n }, true) : node.setLayout({\n y: nodeX\n }, true);\n }\n\n y0 = node.getLayout()[keyAttr];\n }\n }\n });\n}\n/**\n * Change the y-position of the nodes, except most the right side nodes\n *\n * @param {Array.>} nodesByBreadth\n * group by the array of all sankey nodes based on the node x-position.\n * @param {number} alpha parameter used to adjust the nodes y-position\n */\n\n\nfunction relaxRightToLeft(nodesByBreadth, alpha, orient) {\n zrUtil.each(nodesByBreadth.slice().reverse(), function (nodes) {\n zrUtil.each(nodes, function (node) {\n if (node.outEdges.length) {\n var y = sum(node.outEdges, weightedTarget, orient) / sum(node.outEdges, getEdgeValue, orient);\n\n if (isNaN(y)) {\n var len = node.outEdges.length;\n y = len ? sum(node.outEdges, centerTarget, orient) / len : 0;\n }\n\n if (orient === 'vertical') {\n var nodeX = node.getLayout().x + (y - center(node, orient)) * alpha;\n node.setLayout({\n x: nodeX\n }, true);\n } else {\n var nodeY = node.getLayout().y + (y - center(node, orient)) * alpha;\n node.setLayout({\n y: nodeY\n }, true);\n }\n }\n });\n });\n}\n\nfunction weightedTarget(edge, orient) {\n return center(edge.node2, orient) * edge.getValue();\n}\n\nfunction centerTarget(edge, orient) {\n return center(edge.node2, orient);\n}\n\nfunction weightedSource(edge, orient) {\n return center(edge.node1, orient) * edge.getValue();\n}\n\nfunction centerSource(edge, orient) {\n return center(edge.node1, orient);\n}\n\nfunction center(node, orient) {\n return orient === 'vertical' ? node.getLayout().x + node.getLayout().dx / 2 : node.getLayout().y + node.getLayout().dy / 2;\n}\n\nfunction getEdgeValue(edge) {\n return edge.getValue();\n}\n\nfunction sum(array, cb, orient) {\n var sum = 0;\n var len = array.length;\n var i = -1;\n\n while (++i < len) {\n var value = +cb.call(array, array[i], orient);\n\n if (!isNaN(value)) {\n sum += value;\n }\n }\n\n return sum;\n}\n/**\n * Change the y-position of the nodes, except most the left side nodes\n *\n * @param {Array.>} nodesByBreadth\n * group by the array of all sankey nodes based on the node x-position.\n * @param {number} alpha parameter used to adjust the nodes y-position\n */\n\n\nfunction relaxLeftToRight(nodesByBreadth, alpha, orient) {\n zrUtil.each(nodesByBreadth, function (nodes) {\n zrUtil.each(nodes, function (node) {\n if (node.inEdges.length) {\n var y = sum(node.inEdges, weightedSource, orient) / sum(node.inEdges, getEdgeValue, orient);\n\n if (isNaN(y)) {\n var len = node.inEdges.length;\n y = len ? sum(node.inEdges, centerSource, orient) / len : 0;\n }\n\n if (orient === 'vertical') {\n var nodeX = node.getLayout().x + (y - center(node, orient)) * alpha;\n node.setLayout({\n x: nodeX\n }, true);\n } else {\n var nodeY = node.getLayout().y + (y - center(node, orient)) * alpha;\n node.setLayout({\n y: nodeY\n }, true);\n }\n }\n });\n });\n}\n/**\n * Compute the depth(y-position) of each edge\n *\n * @param {module:echarts/data/Graph~Node} nodes node of sankey view\n */\n\n\nfunction computeEdgeDepths(nodes, orient) {\n var keyAttr = orient === 'vertical' ? 'x' : 'y';\n zrUtil.each(nodes, function (node) {\n node.outEdges.sort(function (a, b) {\n return a.node2.getLayout()[keyAttr] - b.node2.getLayout()[keyAttr];\n });\n node.inEdges.sort(function (a, b) {\n return a.node1.getLayout()[keyAttr] - b.node1.getLayout()[keyAttr];\n });\n });\n zrUtil.each(nodes, function (node) {\n var sy = 0;\n var ty = 0;\n zrUtil.each(node.outEdges, function (edge) {\n edge.setLayout({\n sy: sy\n }, true);\n sy += edge.getLayout().dy;\n });\n zrUtil.each(node.inEdges, function (edge) {\n edge.setLayout({\n ty: ty\n }, true);\n ty += edge.getLayout().dy;\n });\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 VisualMapping = require(\"../../visual/VisualMapping\");\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 _default(ecModel, payload) {\n ecModel.eachSeriesByType('sankey', function (seriesModel) {\n var graph = seriesModel.getGraph();\n var nodes = graph.nodes;\n\n if (nodes.length) {\n var minValue = Infinity;\n var maxValue = -Infinity;\n zrUtil.each(nodes, function (node) {\n var nodeValue = node.getLayout().value;\n\n if (nodeValue < minValue) {\n minValue = nodeValue;\n }\n\n if (nodeValue > maxValue) {\n maxValue = nodeValue;\n }\n });\n zrUtil.each(nodes, function (node) {\n var mapping = new VisualMapping({\n type: 'color',\n mappingMethod: 'linear',\n dataExtent: [minValue, maxValue],\n visual: seriesModel.get('color')\n });\n var mapValueToColor = mapping.mapValueToVisual(node.getLayout().value);\n var customColor = node.getModel().get('itemStyle.color');\n customColor != null ? node.setVisual('color', customColor) : node.setVisual('color', mapValueToColor);\n });\n }\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\nrequire(\"./scatter/ScatterSeries\");\n\nrequire(\"./scatter/ScatterView\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar layoutPoints = require(\"../layout/points\");\n\nrequire(\"../component/gridSimple\");\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// import * as zrUtil from 'zrender/src/core/util';\n// In case developer forget to include grid component\necharts.registerVisual(visualSymbol('scatter', 'circle'));\necharts.registerLayout(layoutPoints('scatter')); // echarts.registerProcessor(function (ecModel, api) {\n// ecModel.eachSeriesByType('scatter', function (seriesModel) {\n// var data = seriesModel.getData();\n// var coordSys = seriesModel.coordinateSystem;\n// if (coordSys.type !== 'geo') {\n// return;\n// }\n// var startPt = coordSys.pointToData([0, 0]);\n// var endPt = coordSys.pointToData([api.getWidth(), api.getHeight()]);\n// var dims = zrUtil.map(coordSys.dimensions, function (dim) {\n// return data.mapDimension(dim);\n// });\n// var range = {};\n// range[dims[0]] = [Math.min(startPt[0], endPt[0]), Math.max(startPt[0], endPt[0])];\n// range[dims[1]] = [Math.min(startPt[1], endPt[1]), Math.max(startPt[1], endPt[1])];\n// data.selectRange(range);\n// });\n// });","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\nvar SeriesModel = require(\"../../model/Series\");\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 _default = SeriesModel.extend({\n type: 'series.scatter',\n dependencies: ['grid', 'polar', 'geo', 'singleAxis', 'calendar'],\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n brushSelector: 'point',\n getProgressive: function () {\n var progressive = this.option.progressive;\n\n if (progressive == null) {\n // PENDING\n return this.option.large ? 5e3 : this.get('progressive');\n }\n\n return progressive;\n },\n getProgressiveThreshold: function () {\n var progressiveThreshold = this.option.progressiveThreshold;\n\n if (progressiveThreshold == null) {\n // PENDING\n return this.option.large ? 1e4 : this.get('progressiveThreshold');\n }\n\n return progressiveThreshold;\n },\n defaultOption: {\n coordinateSystem: 'cartesian2d',\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n hoverAnimation: true,\n // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // Polar coordinate system\n // polarIndex: 0,\n // Geo coordinate system\n // geoIndex: 0,\n // symbol: null, // 图形类型\n symbolSize: 10,\n // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2\n // symbolRotate: null, // 图形旋转控制\n large: false,\n // Available when large is true\n largeThreshold: 2000,\n // cursor: null,\n // label: {\n // show: false\n // distance: 5,\n // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调\n // position: 默认自适应,水平布局为'top',垂直布局为'right',可选为\n // 'inside'|'left'|'right'|'top'|'bottom'\n // 默认使用全局文本样式,详见TEXTSTYLE\n // },\n itemStyle: {\n opacity: 0.8 // color: 各异\n\n },\n // If clip the overflow graphics\n // Works on cartesian / polar series\n clip: true // progressive: null\n\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\nvar SymbolDraw = require(\"../helper/SymbolDraw\");\n\nvar LargeSymbolDraw = require(\"../helper/LargeSymbolDraw\");\n\nvar pointsLayout = require(\"../../layout/points\");\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*/\necharts.extendChartView({\n type: 'scatter',\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n\n var symbolDraw = this._updateSymbolDraw(data, seriesModel);\n\n symbolDraw.updateData(data, {\n // TODO\n // If this parameter should be a shape or a bounding volume\n // shape will be more general.\n // But bounding volume like bounding rect will be much faster in the contain calculation\n clipShape: this._getClipShape(seriesModel)\n });\n this._finished = true;\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n\n var symbolDraw = this._updateSymbolDraw(data, seriesModel);\n\n symbolDraw.incrementalPrepareUpdate(data);\n this._finished = false;\n },\n incrementalRender: function (taskParams, seriesModel, ecModel) {\n this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData(), {\n clipShape: this._getClipShape(seriesModel)\n });\n\n this._finished = taskParams.end === seriesModel.getData().count();\n },\n updateTransform: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData(); // Must mark group dirty and make sure the incremental layer will be cleared\n // PENDING\n\n this.group.dirty();\n\n if (!this._finished || data.count() > 1e4 || !this._symbolDraw.isPersistent()) {\n return {\n update: true\n };\n } else {\n var res = pointsLayout().reset(seriesModel);\n\n if (res.progress) {\n res.progress({\n start: 0,\n end: data.count()\n }, data);\n }\n\n this._symbolDraw.updateLayout(data);\n }\n },\n _getClipShape: function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var clipArea = coordSys && coordSys.getArea && coordSys.getArea();\n return seriesModel.get('clip', true) ? clipArea : null;\n },\n _updateSymbolDraw: function (data, seriesModel) {\n var symbolDraw = this._symbolDraw;\n var pipelineContext = seriesModel.pipelineContext;\n var isLargeDraw = pipelineContext.large;\n\n if (!symbolDraw || isLargeDraw !== this._isLargeDraw) {\n symbolDraw && symbolDraw.remove();\n symbolDraw = this._symbolDraw = isLargeDraw ? new LargeSymbolDraw() : new SymbolDraw();\n this._isLargeDraw = isLargeDraw;\n this.group.removeAll();\n }\n\n this.group.add(symbolDraw.group);\n return symbolDraw;\n },\n remove: function (ecModel, api) {\n this._symbolDraw && this._symbolDraw.remove(true);\n this._symbolDraw = null;\n },\n dispose: function () {}\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\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nrequire(\"./sunburst/SunburstSeries\");\n\nrequire(\"./sunburst/SunburstView\");\n\nrequire(\"./sunburst/sunburstAction\");\n\nvar dataColor = require(\"../visual/dataColor\");\n\nvar sunburstLayout = require(\"./sunburst/sunburstLayout\");\n\nvar dataFilter = require(\"../processor/dataFilter\");\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*/\necharts.registerVisual(zrUtil.curry(dataColor, 'sunburst'));\necharts.registerLayout(zrUtil.curry(sunburstLayout, 'sunburst'));\necharts.registerProcessor(zrUtil.curry(dataFilter, 'sunburst'));","\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 graphic = require(\"../../util/graphic\");\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 NodeHighlightPolicy = {\n NONE: 'none',\n // not downplay others\n DESCENDANT: 'descendant',\n ANCESTOR: 'ancestor',\n SELF: 'self'\n};\nvar DEFAULT_SECTOR_Z = 2;\nvar DEFAULT_TEXT_Z = 4;\n/**\n * Sunburstce of Sunburst including Sector, Label, LabelLine\n * @constructor\n * @extends {module:zrender/graphic/Group}\n */\n\nfunction SunburstPiece(node, seriesModel, ecModel) {\n graphic.Group.call(this);\n var sector = new graphic.Sector({\n z2: DEFAULT_SECTOR_Z\n });\n sector.seriesIndex = seriesModel.seriesIndex;\n var text = new graphic.Text({\n z2: DEFAULT_TEXT_Z,\n silent: node.getModel('label').get('silent')\n });\n this.add(sector);\n this.add(text);\n this.updateData(true, node, 'normal', seriesModel, ecModel); // Hover to change label and labelLine\n\n function onEmphasis() {\n text.ignore = text.hoverIgnore;\n }\n\n function onNormal() {\n text.ignore = text.normalIgnore;\n }\n\n this.on('emphasis', onEmphasis).on('normal', onNormal).on('mouseover', onEmphasis).on('mouseout', onNormal);\n}\n\nvar SunburstPieceProto = SunburstPiece.prototype;\n\nSunburstPieceProto.updateData = function (firstCreate, node, state, seriesModel, ecModel) {\n this.node = node;\n node.piece = this;\n seriesModel = seriesModel || this._seriesModel;\n ecModel = ecModel || this._ecModel;\n var sector = this.childAt(0);\n sector.dataIndex = node.dataIndex;\n var itemModel = node.getModel();\n var layout = node.getLayout(); // if (!layout) {\n // console.log(node.getLayout());\n // }\n\n var sectorShape = zrUtil.extend({}, layout);\n sectorShape.label = null;\n var visualColor = getNodeColor(node, seriesModel, ecModel);\n fillDefaultColor(node, seriesModel, visualColor);\n var normalStyle = itemModel.getModel('itemStyle').getItemStyle();\n var style;\n\n if (state === 'normal') {\n style = normalStyle;\n } else {\n var stateStyle = itemModel.getModel(state + '.itemStyle').getItemStyle();\n style = zrUtil.merge(stateStyle, normalStyle);\n }\n\n style = zrUtil.defaults({\n lineJoin: 'bevel',\n fill: style.fill || visualColor\n }, style);\n\n if (firstCreate) {\n sector.setShape(sectorShape);\n sector.shape.r = layout.r0;\n graphic.updateProps(sector, {\n shape: {\n r: layout.r\n }\n }, seriesModel, node.dataIndex);\n sector.useStyle(style);\n } else if (typeof style.fill === 'object' && style.fill.type || typeof sector.style.fill === 'object' && sector.style.fill.type) {\n // Disable animation for gradient since no interpolation method\n // is supported for gradient\n graphic.updateProps(sector, {\n shape: sectorShape\n }, seriesModel);\n sector.useStyle(style);\n } else {\n graphic.updateProps(sector, {\n shape: sectorShape,\n style: style\n }, seriesModel);\n }\n\n this._updateLabel(seriesModel, visualColor, state);\n\n var cursorStyle = itemModel.getShallow('cursor');\n cursorStyle && sector.attr('cursor', cursorStyle);\n\n if (firstCreate) {\n var highlightPolicy = seriesModel.getShallow('highlightPolicy');\n\n this._initEvents(sector, node, seriesModel, highlightPolicy);\n }\n\n this._seriesModel = seriesModel || this._seriesModel;\n this._ecModel = ecModel || this._ecModel;\n graphic.setHoverStyle(this);\n};\n\nSunburstPieceProto.onEmphasis = function (highlightPolicy) {\n var that = this;\n this.node.hostTree.root.eachNode(function (n) {\n if (n.piece) {\n if (that.node === n) {\n n.piece.updateData(false, n, 'emphasis');\n } else if (isNodeHighlighted(n, that.node, highlightPolicy)) {\n n.piece.childAt(0).trigger('highlight');\n } else if (highlightPolicy !== NodeHighlightPolicy.NONE) {\n n.piece.childAt(0).trigger('downplay');\n }\n }\n });\n};\n\nSunburstPieceProto.onNormal = function () {\n this.node.hostTree.root.eachNode(function (n) {\n if (n.piece) {\n n.piece.updateData(false, n, 'normal');\n }\n });\n};\n\nSunburstPieceProto.onHighlight = function () {\n this.updateData(false, this.node, 'highlight');\n};\n\nSunburstPieceProto.onDownplay = function () {\n this.updateData(false, this.node, 'downplay');\n};\n\nSunburstPieceProto._updateLabel = function (seriesModel, visualColor, state) {\n var itemModel = this.node.getModel();\n var normalModel = itemModel.getModel('label');\n var labelModel = state === 'normal' || state === 'emphasis' ? normalModel : itemModel.getModel(state + '.label');\n var labelHoverModel = itemModel.getModel('emphasis.label');\n var labelFormatter = labelModel.get('formatter'); // Use normal formatter if no state formatter is defined\n\n var labelState = labelFormatter ? state : 'normal';\n var text = zrUtil.retrieve(seriesModel.getFormattedLabel(this.node.dataIndex, labelState, null, null, 'label'), this.node.name);\n\n if (getLabelAttr('show') === false) {\n text = '';\n }\n\n var layout = this.node.getLayout();\n var labelMinAngle = labelModel.get('minAngle');\n\n if (labelMinAngle == null) {\n labelMinAngle = normalModel.get('minAngle');\n }\n\n labelMinAngle = labelMinAngle / 180 * Math.PI;\n var angle = layout.endAngle - layout.startAngle;\n\n if (labelMinAngle != null && Math.abs(angle) < labelMinAngle) {\n // Not displaying text when angle is too small\n text = '';\n }\n\n var label = this.childAt(1);\n graphic.setLabelStyle(label.style, label.hoverStyle || {}, normalModel, labelHoverModel, {\n defaultText: labelModel.getShallow('show') ? text : null,\n autoColor: visualColor,\n useInsideStyle: true\n });\n var midAngle = (layout.startAngle + layout.endAngle) / 2;\n var dx = Math.cos(midAngle);\n var dy = Math.sin(midAngle);\n var r;\n var labelPosition = getLabelAttr('position');\n var labelPadding = getLabelAttr('distance') || 0;\n var textAlign = getLabelAttr('align');\n\n if (labelPosition === 'outside') {\n r = layout.r + labelPadding;\n textAlign = midAngle > Math.PI / 2 ? 'right' : 'left';\n } else {\n if (!textAlign || textAlign === 'center') {\n r = (layout.r + layout.r0) / 2;\n textAlign = 'center';\n } else if (textAlign === 'left') {\n r = layout.r0 + labelPadding;\n\n if (midAngle > Math.PI / 2) {\n textAlign = 'right';\n }\n } else if (textAlign === 'right') {\n r = layout.r - labelPadding;\n\n if (midAngle > Math.PI / 2) {\n textAlign = 'left';\n }\n }\n }\n\n label.attr('style', {\n text: text,\n textAlign: textAlign,\n textVerticalAlign: getLabelAttr('verticalAlign') || 'middle',\n opacity: getLabelAttr('opacity')\n });\n var textX = r * dx + layout.cx;\n var textY = r * dy + layout.cy;\n label.attr('position', [textX, textY]);\n var rotateType = getLabelAttr('rotate');\n var rotate = 0;\n\n if (rotateType === 'radial') {\n rotate = -midAngle;\n\n if (rotate < -Math.PI / 2) {\n rotate += Math.PI;\n }\n } else if (rotateType === 'tangential') {\n rotate = Math.PI / 2 - midAngle;\n\n if (rotate > Math.PI / 2) {\n rotate -= Math.PI;\n } else if (rotate < -Math.PI / 2) {\n rotate += Math.PI;\n }\n } else if (typeof rotateType === 'number') {\n rotate = rotateType * Math.PI / 180;\n }\n\n label.attr('rotation', rotate);\n\n function getLabelAttr(name) {\n var stateAttr = labelModel.get(name);\n\n if (stateAttr == null) {\n return normalModel.get(name);\n } else {\n return stateAttr;\n }\n }\n};\n\nSunburstPieceProto._initEvents = function (sector, node, seriesModel, highlightPolicy) {\n sector.off('mouseover').off('mouseout').off('emphasis').off('normal');\n var that = this;\n\n var onEmphasis = function () {\n that.onEmphasis(highlightPolicy);\n };\n\n var onNormal = function () {\n that.onNormal();\n };\n\n var onDownplay = function () {\n that.onDownplay();\n };\n\n var onHighlight = function () {\n that.onHighlight();\n };\n\n if (seriesModel.isAnimationEnabled()) {\n sector.on('mouseover', onEmphasis).on('mouseout', onNormal).on('emphasis', onEmphasis).on('normal', onNormal).on('downplay', onDownplay).on('highlight', onHighlight);\n }\n};\n\nzrUtil.inherits(SunburstPiece, graphic.Group);\nvar _default = SunburstPiece;\n/**\n * Get node color\n *\n * @param {TreeNode} node the node to get color\n * @param {module:echarts/model/Series} seriesModel series\n * @param {module:echarts/model/Global} ecModel echarts defaults\n */\n\nfunction getNodeColor(node, seriesModel, ecModel) {\n // Color from visualMap\n var visualColor = node.getVisual('color');\n var visualMetaList = node.getVisual('visualMeta');\n\n if (!visualMetaList || visualMetaList.length === 0) {\n // Use first-generation color if has no visualMap\n visualColor = null;\n } // Self color or level color\n\n\n var color = node.getModel('itemStyle').get('color');\n\n if (color) {\n return color;\n } else if (visualColor) {\n // Color mapping\n return visualColor;\n } else if (node.depth === 0) {\n // Virtual root node\n return ecModel.option.color[0];\n } else {\n // First-generation color\n var length = ecModel.option.color.length;\n color = ecModel.option.color[getRootId(node) % length];\n }\n\n return color;\n}\n/**\n * Get index of root in sorted order\n *\n * @param {TreeNode} node current node\n * @return {number} index in root\n */\n\n\nfunction getRootId(node) {\n var ancestor = node;\n\n while (ancestor.depth > 1) {\n ancestor = ancestor.parentNode;\n }\n\n var virtualRoot = node.getAncestors()[0];\n return zrUtil.indexOf(virtualRoot.children, ancestor);\n}\n\nfunction isNodeHighlighted(node, activeNode, policy) {\n if (policy === NodeHighlightPolicy.NONE) {\n return false;\n } else if (policy === NodeHighlightPolicy.SELF) {\n return node === activeNode;\n } else if (policy === NodeHighlightPolicy.ANCESTOR) {\n return node === activeNode || node.isAncestorOf(activeNode);\n } else {\n return node === activeNode || node.isDescendantOf(activeNode);\n }\n} // Fix tooltip callback function params.color incorrect when pick a default color\n\n\nfunction fillDefaultColor(node, seriesModel, color) {\n var data = seriesModel.getData();\n data.setItemVisual(node.dataIndex, 'color', color);\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 SeriesModel = require(\"../../model/Series\");\n\nvar Tree = require(\"../../data/Tree\");\n\nvar Model = require(\"../../model/Model\");\n\nvar _treeHelper = require(\"../helper/treeHelper\");\n\nvar wrapTreePathInfo = _treeHelper.wrapTreePathInfo;\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 _default = SeriesModel.extend({\n type: 'series.sunburst',\n\n /**\n * @type {module:echarts/data/Tree~Node}\n */\n _viewRoot: null,\n getInitialData: function (option, ecModel) {\n // Create a virtual root.\n var root = {\n name: option.name,\n children: option.data\n };\n completeTreeValue(root);\n var levelModels = zrUtil.map(option.levels || [], function (levelDefine) {\n return new Model(levelDefine, this, ecModel);\n }, this); // Make sure always a new tree is created when setOption,\n // in TreemapView, we check whether oldTree === newTree\n // to choose mappings approach among old shapes and new shapes.\n\n var tree = Tree.createTree(root, this, beforeLink);\n\n function beforeLink(nodeData) {\n nodeData.wrapMethod('getItemModel', function (model, idx) {\n var node = tree.getNodeByDataIndex(idx);\n var levelModel = levelModels[node.depth];\n levelModel && (model.parentModel = levelModel);\n return model;\n });\n }\n\n return tree.data;\n },\n optionUpdated: function () {\n this.resetViewRoot();\n },\n\n /*\n * @override\n */\n getDataParams: function (dataIndex) {\n var params = SeriesModel.prototype.getDataParams.apply(this, arguments);\n var node = this.getData().tree.getNodeByDataIndex(dataIndex);\n params.treePathInfo = wrapTreePathInfo(node, this);\n return params;\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n // 默认全局居中\n center: ['50%', '50%'],\n radius: [0, '75%'],\n // 默认顺时针\n clockwise: true,\n startAngle: 90,\n // 最小角度改为0\n minAngle: 0,\n percentPrecision: 2,\n // If still show when all data zero.\n stillShowZeroSum: true,\n // Policy of highlighting pieces when hover on one\n // Valid values: 'none' (for not downplay others), 'descendant',\n // 'ancestor', 'self'\n highlightPolicy: 'descendant',\n // 'rootToNode', 'link', or false\n nodeClick: 'rootToNode',\n renderLabelForZeroData: false,\n label: {\n // could be: 'radial', 'tangential', or 'none'\n rotate: 'radial',\n show: true,\n opacity: 1,\n // 'left' is for inner side of inside, and 'right' is for outter\n // side for inside\n align: 'center',\n position: 'inside',\n distance: 5,\n silent: true\n },\n itemStyle: {\n borderWidth: 1,\n borderColor: 'white',\n borderType: 'solid',\n shadowBlur: 0,\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n opacity: 1\n },\n highlight: {\n itemStyle: {\n opacity: 1\n }\n },\n downplay: {\n itemStyle: {\n opacity: 0.5\n },\n label: {\n opacity: 0.6\n }\n },\n // Animation type canbe expansion, scale\n animationType: 'expansion',\n animationDuration: 1000,\n animationDurationUpdate: 500,\n animationEasing: 'cubicOut',\n data: [],\n levels: [],\n\n /**\n * Sort order.\n *\n * Valid values: 'desc', 'asc', null, or callback function.\n * 'desc' and 'asc' for descend and ascendant order;\n * null for not sorting;\n * example of callback function:\n * function(nodeA, nodeB) {\n * return nodeA.getValue() - nodeB.getValue();\n * }\n */\n sort: 'desc'\n },\n getViewRoot: function () {\n return this._viewRoot;\n },\n\n /**\n * @param {module:echarts/data/Tree~Node} [viewRoot]\n */\n resetViewRoot: function (viewRoot) {\n viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot;\n var root = this.getRawData().tree.root;\n\n if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) {\n this._viewRoot = root;\n }\n }\n});\n/**\n * @param {Object} dataNode\n */\n\n\nfunction completeTreeValue(dataNode) {\n // Postorder travel tree.\n // If value of none-leaf node is not set,\n // calculate it by suming up the value of all children.\n var sum = 0;\n zrUtil.each(dataNode.children, function (child) {\n completeTreeValue(child);\n var childValue = child.value;\n zrUtil.isArray(childValue) && (childValue = childValue[0]);\n sum += childValue;\n });\n var thisValue = dataNode.value;\n\n if (zrUtil.isArray(thisValue)) {\n thisValue = thisValue[0];\n }\n\n if (thisValue == null || isNaN(thisValue)) {\n thisValue = sum;\n } // Value should not less than 0.\n\n\n if (thisValue < 0) {\n thisValue = 0;\n }\n\n zrUtil.isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue;\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 ChartView = require(\"../../view/Chart\");\n\nvar SunburstPiece = require(\"./SunburstPiece\");\n\nvar DataDiffer = require(\"../../data/DataDiffer\");\n\nvar _format = require(\"../../util/format\");\n\nvar windowOpen = _format.windowOpen;\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 ROOT_TO_NODE_ACTION = 'sunburstRootToNode';\nvar SunburstView = ChartView.extend({\n type: 'sunburst',\n init: function () {},\n render: function (seriesModel, ecModel, api, payload) {\n var that = this;\n this.seriesModel = seriesModel;\n this.api = api;\n this.ecModel = ecModel;\n var data = seriesModel.getData();\n var virtualRoot = data.tree.root;\n var newRoot = seriesModel.getViewRoot();\n var group = this.group;\n var renderLabelForZeroData = seriesModel.get('renderLabelForZeroData');\n var newChildren = [];\n newRoot.eachNode(function (node) {\n newChildren.push(node);\n });\n var oldChildren = this._oldChildren || [];\n dualTravel(newChildren, oldChildren);\n renderRollUp(virtualRoot, newRoot);\n\n if (payload && payload.highlight && payload.highlight.piece) {\n var highlightPolicy = seriesModel.getShallow('highlightPolicy');\n payload.highlight.piece.onEmphasis(highlightPolicy);\n } else if (payload && payload.unhighlight) {\n var piece = this.virtualPiece;\n\n if (!piece && virtualRoot.children.length) {\n piece = virtualRoot.children[0].piece;\n }\n\n if (piece) {\n piece.onNormal();\n }\n }\n\n this._initEvents();\n\n this._oldChildren = newChildren;\n\n function dualTravel(newChildren, oldChildren) {\n if (newChildren.length === 0 && oldChildren.length === 0) {\n return;\n }\n\n new DataDiffer(oldChildren, newChildren, getKey, getKey).add(processNode).update(processNode).remove(zrUtil.curry(processNode, null)).execute();\n\n function getKey(node) {\n return node.getId();\n }\n\n function processNode(newId, oldId) {\n var newNode = newId == null ? null : newChildren[newId];\n var oldNode = oldId == null ? null : oldChildren[oldId];\n doRenderNode(newNode, oldNode);\n }\n }\n\n function doRenderNode(newNode, oldNode) {\n if (!renderLabelForZeroData && newNode && !newNode.getValue()) {\n // Not render data with value 0\n newNode = null;\n }\n\n if (newNode !== virtualRoot && oldNode !== virtualRoot) {\n if (oldNode && oldNode.piece) {\n if (newNode) {\n // Update\n oldNode.piece.updateData(false, newNode, 'normal', seriesModel, ecModel); // For tooltip\n\n data.setItemGraphicEl(newNode.dataIndex, oldNode.piece);\n } else {\n // Remove\n removeNode(oldNode);\n }\n } else if (newNode) {\n // Add\n var piece = new SunburstPiece(newNode, seriesModel, ecModel);\n group.add(piece); // For tooltip\n\n data.setItemGraphicEl(newNode.dataIndex, piece);\n }\n }\n }\n\n function removeNode(node) {\n if (!node) {\n return;\n }\n\n if (node.piece) {\n group.remove(node.piece);\n node.piece = null;\n }\n }\n\n function renderRollUp(virtualRoot, viewRoot) {\n if (viewRoot.depth > 0) {\n // Render\n if (that.virtualPiece) {\n // Update\n that.virtualPiece.updateData(false, virtualRoot, 'normal', seriesModel, ecModel);\n } else {\n // Add\n that.virtualPiece = new SunburstPiece(virtualRoot, seriesModel, ecModel);\n group.add(that.virtualPiece);\n }\n\n if (viewRoot.piece._onclickEvent) {\n viewRoot.piece.off('click', viewRoot.piece._onclickEvent);\n }\n\n var event = function (e) {\n that._rootToNode(viewRoot.parentNode);\n };\n\n viewRoot.piece._onclickEvent = event;\n that.virtualPiece.on('click', event);\n } else if (that.virtualPiece) {\n // Remove\n group.remove(that.virtualPiece);\n that.virtualPiece = null;\n }\n }\n },\n dispose: function () {},\n\n /**\n * @private\n */\n _initEvents: function () {\n var that = this;\n\n var event = function (e) {\n var targetFound = false;\n var viewRoot = that.seriesModel.getViewRoot();\n viewRoot.eachNode(function (node) {\n if (!targetFound && node.piece && node.piece.childAt(0) === e.target) {\n var nodeClick = node.getModel().get('nodeClick');\n\n if (nodeClick === 'rootToNode') {\n that._rootToNode(node);\n } else if (nodeClick === 'link') {\n var itemModel = node.getModel();\n var link = itemModel.get('link');\n\n if (link) {\n var linkTarget = itemModel.get('target', true) || '_blank';\n windowOpen(link, linkTarget);\n }\n }\n\n targetFound = true;\n }\n });\n };\n\n if (this.group._onclickEvent) {\n this.group.off('click', this.group._onclickEvent);\n }\n\n this.group.on('click', event);\n this.group._onclickEvent = event;\n },\n\n /**\n * @private\n */\n _rootToNode: function (node) {\n if (node !== this.seriesModel.getViewRoot()) {\n this.api.dispatchAction({\n type: ROOT_TO_NODE_ACTION,\n from: this.uid,\n seriesId: this.seriesModel.id,\n targetNode: node\n });\n }\n },\n\n /**\n * @implement\n */\n containPoint: function (point, seriesModel) {\n var treeRoot = seriesModel.getData();\n var itemLayout = treeRoot.getItemLayout(0);\n\n if (itemLayout) {\n var dx = point[0] - itemLayout.cx;\n var dy = point[1] - itemLayout.cy;\n var radius = Math.sqrt(dx * dx + dy * dy);\n return radius <= itemLayout.r && radius >= itemLayout.r0;\n }\n }\n});\nvar _default = SunburstView;\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\nvar helper = require(\"../helper/treeHelper\");\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 * @file Sunburst action\n */\nvar ROOT_TO_NODE_ACTION = 'sunburstRootToNode';\necharts.registerAction({\n type: ROOT_TO_NODE_ACTION,\n update: 'updateView'\n}, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'series',\n subType: 'sunburst',\n query: payload\n }, handleRootToNode);\n\n function handleRootToNode(model, index) {\n var targetInfo = helper.retrieveTargetInfo(payload, [ROOT_TO_NODE_ACTION], model);\n\n if (targetInfo) {\n var originViewRoot = model.getViewRoot();\n\n if (originViewRoot) {\n payload.direction = helper.aboveViewRoot(originViewRoot, targetInfo.node) ? 'rollUp' : 'drillDown';\n }\n\n model.resetViewRoot(targetInfo.node);\n }\n }\n});\nvar HIGHLIGHT_ACTION = 'sunburstHighlight';\necharts.registerAction({\n type: HIGHLIGHT_ACTION,\n update: 'updateView'\n}, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'series',\n subType: 'sunburst',\n query: payload\n }, handleHighlight);\n\n function handleHighlight(model, index) {\n var targetInfo = helper.retrieveTargetInfo(payload, [HIGHLIGHT_ACTION], model);\n\n if (targetInfo) {\n payload.highlight = targetInfo.node;\n }\n }\n});\nvar UNHIGHLIGHT_ACTION = 'sunburstUnhighlight';\necharts.registerAction({\n type: UNHIGHLIGHT_ACTION,\n update: 'updateView'\n}, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'series',\n subType: 'sunburst',\n query: payload\n }, handleUnhighlight);\n\n function handleUnhighlight(model, index) {\n payload.unhighlight = true;\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\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// var PI2 = Math.PI * 2;\nvar RADIAN = Math.PI / 180;\n\nfunction _default(seriesType, ecModel, api, payload) {\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n var center = seriesModel.get('center');\n var radius = seriesModel.get('radius');\n\n if (!zrUtil.isArray(radius)) {\n radius = [0, radius];\n }\n\n if (!zrUtil.isArray(center)) {\n center = [center, center];\n }\n\n var width = api.getWidth();\n var height = api.getHeight();\n var size = Math.min(width, height);\n var cx = parsePercent(center[0], width);\n var cy = parsePercent(center[1], height);\n var r0 = parsePercent(radius[0], size / 2);\n var r = parsePercent(radius[1], size / 2);\n var startAngle = -seriesModel.get('startAngle') * RADIAN;\n var minAngle = seriesModel.get('minAngle') * RADIAN;\n var virtualRoot = seriesModel.getData().tree.root;\n var treeRoot = seriesModel.getViewRoot();\n var rootDepth = treeRoot.depth;\n var sort = seriesModel.get('sort');\n\n if (sort != null) {\n initChildren(treeRoot, sort);\n }\n\n var validDataCount = 0;\n zrUtil.each(treeRoot.children, function (child) {\n !isNaN(child.getValue()) && validDataCount++;\n });\n var sum = treeRoot.getValue(); // Sum may be 0\n\n var unitRadian = Math.PI / (sum || validDataCount) * 2;\n var renderRollupNode = treeRoot.depth > 0;\n var levels = treeRoot.height - (renderRollupNode ? -1 : 1);\n var rPerLevel = (r - r0) / (levels || 1);\n var clockwise = seriesModel.get('clockwise');\n var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); // In the case some sector angle is smaller than minAngle\n // var restAngle = PI2;\n // var valueSumLargerThanMinAngle = 0;\n\n var dir = clockwise ? 1 : -1;\n /**\n * Render a tree\n * @return increased angle\n */\n\n var renderNode = function (node, startAngle) {\n if (!node) {\n return;\n }\n\n var endAngle = startAngle; // Render self\n\n if (node !== virtualRoot) {\n // Tree node is virtual, so it doesn't need to be drawn\n var value = node.getValue();\n var angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;\n\n if (angle < minAngle) {\n angle = minAngle; // restAngle -= minAngle;\n } // else {\n // valueSumLargerThanMinAngle += value;\n // }\n\n\n endAngle = startAngle + dir * angle;\n var depth = node.depth - rootDepth - (renderRollupNode ? -1 : 1);\n var rStart = r0 + rPerLevel * depth;\n var rEnd = r0 + rPerLevel * (depth + 1);\n var itemModel = node.getModel();\n\n if (itemModel.get('r0') != null) {\n rStart = parsePercent(itemModel.get('r0'), size / 2);\n }\n\n if (itemModel.get('r') != null) {\n rEnd = parsePercent(itemModel.get('r'), size / 2);\n }\n\n node.setLayout({\n angle: angle,\n startAngle: startAngle,\n endAngle: endAngle,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: rStart,\n r: rEnd\n });\n } // Render children\n\n\n if (node.children && node.children.length) {\n // currentAngle = startAngle;\n var siblingAngle = 0;\n zrUtil.each(node.children, function (node) {\n siblingAngle += renderNode(node, startAngle + siblingAngle);\n });\n }\n\n return endAngle - startAngle;\n }; // Virtual root node for roll up\n\n\n if (renderRollupNode) {\n var rStart = r0;\n var rEnd = r0 + rPerLevel;\n var angle = Math.PI * 2;\n virtualRoot.setLayout({\n angle: angle,\n startAngle: startAngle,\n endAngle: startAngle + angle,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: rStart,\n r: rEnd\n });\n }\n\n renderNode(treeRoot, startAngle);\n });\n}\n/**\n * Init node children by order and update visual\n *\n * @param {TreeNode} node root node\n * @param {boolean} isAsc if is in ascendant order\n */\n\n\nfunction initChildren(node, isAsc) {\n var children = node.children || [];\n node.children = sort(children, isAsc); // Init children recursively\n\n if (children.length) {\n zrUtil.each(node.children, function (child) {\n initChildren(child, isAsc);\n });\n }\n}\n/**\n * Sort children nodes\n *\n * @param {TreeNode[]} children children of node to be sorted\n * @param {string | function | null} sort sort method\n * See SunburstSeries.js for details.\n */\n\n\nfunction sort(children, sortOrder) {\n if (typeof sortOrder === 'function') {\n return children.sort(sortOrder);\n } else {\n var isAsc = sortOrder === 'asc';\n return children.sort(function (a, b) {\n var diff = (a.getValue() - b.getValue()) * (isAsc ? 1 : -1);\n return diff === 0 ? (a.dataIndex - b.dataIndex) * (isAsc ? -1 : 1) : diff;\n });\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\nrequire(\"../component/singleAxis\");\n\nrequire(\"./themeRiver/ThemeRiverSeries\");\n\nrequire(\"./themeRiver/ThemeRiverView\");\n\nvar themeRiverLayout = require(\"./themeRiver/themeRiverLayout\");\n\nvar themeRiverVisual = require(\"./themeRiver/themeRiverVisual\");\n\nvar dataFilter = require(\"../processor/dataFilter\");\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*/\necharts.registerLayout(themeRiverLayout);\necharts.registerVisual(themeRiverVisual);\necharts.registerProcessor(dataFilter('themeRiver'));","\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 SeriesModel = require(\"../../model/Series\");\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar _dimensionHelper = require(\"../../data/helper/dimensionHelper\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar List = require(\"../../data/List\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _model = require(\"../../util/model\");\n\nvar groupData = _model.groupData;\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar LegendVisualProvider = require(\"../../visual/LegendVisualProvider\");\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 DATA_NAME_INDEX = 2;\nvar ThemeRiverSeries = SeriesModel.extend({\n type: 'series.themeRiver',\n dependencies: ['singleAxis'],\n\n /**\n * @readOnly\n * @type {module:zrender/core/util#HashMap}\n */\n nameMap: null,\n\n /**\n * @override\n */\n init: function (option) {\n // eslint-disable-next-line\n ThemeRiverSeries.superApply(this, 'init', arguments); // Put this function here is for the sake of consistency of code style.\n // Enable legend selection for each data item\n // Use a function instead of direct access because data reference may changed\n\n this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n },\n\n /**\n * If there is no value of a certain point in the time for some event,set it value to 0.\n *\n * @param {Array} data initial data in the option\n * @return {Array}\n */\n fixData: function (data) {\n var rawDataLength = data.length;\n /**\n * Make sure every layer data get the same keys.\n * The value index tells which layer has visited.\n * {\n * 2014/01/01: -1\n * }\n */\n\n var timeValueKeys = {}; // grouped data by name\n\n var groupResult = groupData(data, function (item) {\n if (!timeValueKeys.hasOwnProperty(item[0])) {\n timeValueKeys[item[0]] = -1;\n }\n\n return item[2];\n });\n var layData = [];\n groupResult.buckets.each(function (items, key) {\n layData.push({\n name: key,\n dataList: items\n });\n });\n var layerNum = layData.length;\n\n for (var k = 0; k < layerNum; ++k) {\n var name = layData[k].name;\n\n for (var j = 0; j < layData[k].dataList.length; ++j) {\n var timeValue = layData[k].dataList[j][0];\n timeValueKeys[timeValue] = k;\n }\n\n for (var timeValue in timeValueKeys) {\n if (timeValueKeys.hasOwnProperty(timeValue) && timeValueKeys[timeValue] !== k) {\n timeValueKeys[timeValue] = k;\n data[rawDataLength] = [];\n data[rawDataLength][0] = timeValue;\n data[rawDataLength][1] = 0;\n data[rawDataLength][2] = name;\n rawDataLength++;\n }\n }\n }\n\n return data;\n },\n\n /**\n * @override\n * @param {Object} option the initial option that user gived\n * @param {module:echarts/model/Model} ecModel the model object for themeRiver option\n * @return {module:echarts/data/List}\n */\n getInitialData: function (option, ecModel) {\n var singleAxisModel = ecModel.queryComponents({\n mainType: 'singleAxis',\n index: this.get('singleAxisIndex'),\n id: this.get('singleAxisId')\n })[0];\n var axisType = singleAxisModel.get('type'); // filter the data item with the value of label is undefined\n\n var filterData = zrUtil.filter(option.data, function (dataItem) {\n return dataItem[2] !== undefined;\n }); // ??? TODO design a stage to transfer data for themeRiver and lines?\n\n var data = this.fixData(filterData || []);\n var nameList = [];\n var nameMap = this.nameMap = zrUtil.createHashMap();\n var count = 0;\n\n for (var i = 0; i < data.length; ++i) {\n nameList.push(data[i][DATA_NAME_INDEX]);\n\n if (!nameMap.get(data[i][DATA_NAME_INDEX])) {\n nameMap.set(data[i][DATA_NAME_INDEX], count);\n count++;\n }\n }\n\n var dimensionsInfo = createDimensions(data, {\n coordDimensions: ['single'],\n dimensionsDefine: [{\n name: 'time',\n type: getDimensionTypeByAxis(axisType)\n }, {\n name: 'value',\n type: 'float'\n }, {\n name: 'name',\n type: 'ordinal'\n }],\n encodeDefine: {\n single: 0,\n value: 1,\n itemName: 2\n }\n });\n var list = new List(dimensionsInfo, this);\n list.initData(data);\n return list;\n },\n\n /**\n * The raw data is divided into multiple layers and each layer\n * has same name.\n *\n * @return {Array.>}\n */\n getLayerSeries: function () {\n var data = this.getData();\n var lenCount = data.count();\n var indexArr = [];\n\n for (var i = 0; i < lenCount; ++i) {\n indexArr[i] = i;\n }\n\n var timeDim = data.mapDimension('single'); // data group by name\n\n var groupResult = groupData(indexArr, function (index) {\n return data.get('name', index);\n });\n var layerSeries = [];\n groupResult.buckets.each(function (items, key) {\n items.sort(function (index1, index2) {\n return data.get(timeDim, index1) - data.get(timeDim, index2);\n });\n layerSeries.push({\n name: key,\n indices: items\n });\n });\n return layerSeries;\n },\n\n /**\n * Get data indices for show tooltip content\n * @param {Array.|string} dim single coordinate dimension\n * @param {number} value axis value\n * @param {module:echarts/coord/single/SingleAxis} baseAxis single Axis used\n * the themeRiver.\n * @return {Object} {dataIndices, nestestValue}\n */\n getAxisTooltipData: function (dim, value, baseAxis) {\n if (!zrUtil.isArray(dim)) {\n dim = dim ? [dim] : [];\n }\n\n var data = this.getData();\n var layerSeries = this.getLayerSeries();\n var indices = [];\n var layerNum = layerSeries.length;\n var nestestValue;\n\n for (var i = 0; i < layerNum; ++i) {\n var minDist = Number.MAX_VALUE;\n var nearestIdx = -1;\n var pointNum = layerSeries[i].indices.length;\n\n for (var j = 0; j < pointNum; ++j) {\n var theValue = data.get(dim[0], layerSeries[i].indices[j]);\n var dist = Math.abs(theValue - value);\n\n if (dist <= minDist) {\n nestestValue = theValue;\n minDist = dist;\n nearestIdx = layerSeries[i].indices[j];\n }\n }\n\n indices.push(nearestIdx);\n }\n\n return {\n dataIndices: indices,\n nestestValue: nestestValue\n };\n },\n\n /**\n * @override\n * @param {number} dataIndex index of data\n */\n formatTooltip: function (dataIndex) {\n var data = this.getData();\n var htmlName = data.getName(dataIndex);\n var htmlValue = data.get(data.mapDimension('value'), dataIndex);\n\n if (isNaN(htmlValue) || htmlValue == null) {\n htmlValue = '-';\n }\n\n return encodeHTML(htmlName + ' : ' + htmlValue);\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'singleAxis',\n // gap in axis's orthogonal orientation\n boundaryGap: ['10%', '10%'],\n // legendHoverLink: true,\n singleAxisIndex: 0,\n animationEasing: 'linear',\n label: {\n margin: 4,\n show: true,\n position: 'left',\n color: '#000',\n fontSize: 11\n },\n emphasis: {\n label: {\n show: true\n }\n }\n }\n});\nvar _default = ThemeRiverSeries;\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\nvar _poly = require(\"../line/poly\");\n\nvar Polygon = _poly.Polygon;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar bind = _util.bind;\nvar extend = _util.extend;\n\nvar DataDiffer = require(\"../../data/DataDiffer\");\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 _default = echarts.extendChartView({\n type: 'themeRiver',\n init: function () {\n this._layers = [];\n },\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var group = this.group;\n var layerSeries = seriesModel.getLayerSeries();\n var layoutInfo = data.getLayout('layoutInfo');\n var rect = layoutInfo.rect;\n var boundaryGap = layoutInfo.boundaryGap;\n group.attr('position', [0, rect.y + boundaryGap[0]]);\n\n function keyGetter(item) {\n return item.name;\n }\n\n var dataDiffer = new DataDiffer(this._layersSeries || [], layerSeries, keyGetter, keyGetter);\n var newLayersGroups = {};\n dataDiffer.add(bind(process, this, 'add')).update(bind(process, this, 'update')).remove(bind(process, this, 'remove')).execute();\n\n function process(status, idx, oldIdx) {\n var oldLayersGroups = this._layers;\n\n if (status === 'remove') {\n group.remove(oldLayersGroups[idx]);\n return;\n }\n\n var points0 = [];\n var points1 = [];\n var color;\n var indices = layerSeries[idx].indices;\n\n for (var j = 0; j < indices.length; j++) {\n var layout = data.getItemLayout(indices[j]);\n var x = layout.x;\n var y0 = layout.y0;\n var y = layout.y;\n points0.push([x, y0]);\n points1.push([x, y0 + y]);\n color = data.getItemVisual(indices[j], 'color');\n }\n\n var polygon;\n var text;\n var textLayout = data.getItemLayout(indices[0]);\n var itemModel = data.getItemModel(indices[j - 1]);\n var labelModel = itemModel.getModel('label');\n var margin = labelModel.get('margin');\n\n if (status === 'add') {\n var layerGroup = newLayersGroups[idx] = new graphic.Group();\n polygon = new Polygon({\n shape: {\n points: points0,\n stackedOnPoints: points1,\n smooth: 0.4,\n stackedOnSmooth: 0.4,\n smoothConstraint: false\n },\n z2: 0\n });\n text = new graphic.Text({\n style: {\n x: textLayout.x - margin,\n y: textLayout.y0 + textLayout.y / 2\n }\n });\n layerGroup.add(polygon);\n layerGroup.add(text);\n group.add(layerGroup);\n polygon.setClipPath(createGridClipShape(polygon.getBoundingRect(), seriesModel, function () {\n polygon.removeClipPath();\n }));\n } else {\n var layerGroup = oldLayersGroups[oldIdx];\n polygon = layerGroup.childAt(0);\n text = layerGroup.childAt(1);\n group.add(layerGroup);\n newLayersGroups[idx] = layerGroup;\n graphic.updateProps(polygon, {\n shape: {\n points: points0,\n stackedOnPoints: points1\n }\n }, seriesModel);\n graphic.updateProps(text, {\n style: {\n x: textLayout.x - margin,\n y: textLayout.y0 + textLayout.y / 2\n }\n }, seriesModel);\n }\n\n var hoverItemStyleModel = itemModel.getModel('emphasis.itemStyle');\n var itemStyleModel = itemModel.getModel('itemStyle');\n graphic.setTextStyle(text.style, labelModel, {\n text: labelModel.get('show') ? seriesModel.getFormattedLabel(indices[j - 1], 'normal') || data.getName(indices[j - 1]) : null,\n textVerticalAlign: 'middle'\n });\n polygon.setStyle(extend({\n fill: color\n }, itemStyleModel.getItemStyle(['color'])));\n graphic.setHoverStyle(polygon, hoverItemStyleModel.getItemStyle());\n }\n\n this._layersSeries = layerSeries;\n this._layers = newLayersGroups;\n },\n dispose: function () {}\n}); // add animation to the view\n\n\nfunction createGridClipShape(rect, seriesModel, cb) {\n var rectEl = new graphic.Rect({\n shape: {\n x: rect.x - 10,\n y: rect.y - 10,\n width: 0,\n height: rect.height + 20\n }\n });\n graphic.initProps(rectEl, {\n shape: {\n width: rect.width + 20,\n height: rect.height + 20\n }\n }, seriesModel, cb);\n return rectEl;\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 numberUtil = require(\"../../util/number\");\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(ecModel, api) {\n ecModel.eachSeriesByType('themeRiver', function (seriesModel) {\n var data = seriesModel.getData();\n var single = seriesModel.coordinateSystem;\n var layoutInfo = {}; // use the axis boundingRect for view\n\n var rect = single.getRect();\n layoutInfo.rect = rect;\n var boundaryGap = seriesModel.get('boundaryGap');\n var axis = single.getAxis();\n layoutInfo.boundaryGap = boundaryGap;\n\n if (axis.orient === 'horizontal') {\n boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], rect.height);\n boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], rect.height);\n var height = rect.height - boundaryGap[0] - boundaryGap[1];\n themeRiverLayout(data, seriesModel, height);\n } else {\n boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], rect.width);\n boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], rect.width);\n var width = rect.width - boundaryGap[0] - boundaryGap[1];\n themeRiverLayout(data, seriesModel, width);\n }\n\n data.setLayout('layoutInfo', layoutInfo);\n });\n}\n/**\n * The layout information about themeriver\n *\n * @param {module:echarts/data/List} data data in the series\n * @param {module:echarts/model/Series} seriesModel the model object of themeRiver series\n * @param {number} height value used to compute every series height\n */\n\n\nfunction themeRiverLayout(data, seriesModel, height) {\n if (!data.count()) {\n return;\n }\n\n var coordSys = seriesModel.coordinateSystem; // the data in each layer are organized into a series.\n\n var layerSeries = seriesModel.getLayerSeries(); // the points in each layer.\n\n var timeDim = data.mapDimension('single');\n var valueDim = data.mapDimension('value');\n var layerPoints = zrUtil.map(layerSeries, function (singleLayer) {\n return zrUtil.map(singleLayer.indices, function (idx) {\n var pt = coordSys.dataToPoint(data.get(timeDim, idx));\n pt[1] = data.get(valueDim, idx);\n return pt;\n });\n });\n var base = computeBaseline(layerPoints);\n var baseLine = base.y0;\n var ky = height / base.max; // set layout information for each item.\n\n var n = layerSeries.length;\n var m = layerSeries[0].indices.length;\n var baseY0;\n\n for (var j = 0; j < m; ++j) {\n baseY0 = baseLine[j] * ky;\n data.setItemLayout(layerSeries[0].indices[j], {\n layerIndex: 0,\n x: layerPoints[0][j][0],\n y0: baseY0,\n y: layerPoints[0][j][1] * ky\n });\n\n for (var i = 1; i < n; ++i) {\n baseY0 += layerPoints[i - 1][j][1] * ky;\n data.setItemLayout(layerSeries[i].indices[j], {\n layerIndex: i,\n x: layerPoints[i][j][0],\n y0: baseY0,\n y: layerPoints[i][j][1] * ky\n });\n }\n }\n}\n/**\n * Compute the baseLine of the rawdata\n * Inspired by Lee Byron's paper Stacked Graphs - Geometry & Aesthetics\n *\n * @param {Array.} data the points in each layer\n * @return {Object}\n */\n\n\nfunction computeBaseline(data) {\n var layerNum = data.length;\n var pointNum = data[0].length;\n var sums = [];\n var y0 = [];\n var max = 0;\n var temp;\n var base = {};\n\n for (var i = 0; i < pointNum; ++i) {\n for (var j = 0, temp = 0; j < layerNum; ++j) {\n temp += data[j][i][1];\n }\n\n if (temp > max) {\n max = temp;\n }\n\n sums.push(temp);\n }\n\n for (var k = 0; k < pointNum; ++k) {\n y0[k] = (max - sums[k]) / 2;\n }\n\n max = 0;\n\n for (var l = 0; l < pointNum; ++l) {\n var sum = sums[l] + y0[l];\n\n if (sum > max) {\n max = sum;\n }\n }\n\n base.y0 = y0;\n base.max = max;\n return base;\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 _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\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(ecModel) {\n ecModel.eachSeriesByType('themeRiver', function (seriesModel) {\n var data = seriesModel.getData();\n var rawData = seriesModel.getRawData();\n var colorList = seriesModel.get('color');\n var idxMap = createHashMap();\n data.each(function (idx) {\n idxMap.set(data.getRawIndex(idx), idx);\n });\n rawData.each(function (rawIndex) {\n var name = rawData.getName(rawIndex);\n var color = colorList[(seriesModel.nameMap.get(name) - 1) % colorList.length];\n rawData.setItemVisual(rawIndex, 'color', color);\n var idx = idxMap.get(rawIndex);\n\n if (idx != null) {\n data.setItemVisual(idx, 'color', color);\n }\n });\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\nrequire(\"./tree/TreeSeries\");\n\nrequire(\"./tree/TreeView\");\n\nrequire(\"./tree/treeAction\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar treeLayout = require(\"./tree/treeLayout\");\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*/\necharts.registerVisual(visualSymbol('tree', 'circle'));\necharts.registerLayout(treeLayout);","\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 SeriesModel = require(\"../../model/Series\");\n\nvar Tree = require(\"../../data/Tree\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar Model = require(\"../../model/Model\");\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 _default = SeriesModel.extend({\n type: 'series.tree',\n layoutInfo: null,\n // can support the position parameters 'left', 'top','right','bottom', 'width',\n // 'height' in the setOption() with 'merge' mode normal.\n layoutMode: 'box',\n\n /**\n * Init a tree data structure from data in option series\n * @param {Object} option the object used to config echarts view\n * @return {module:echarts/data/List} storage initial data\n */\n getInitialData: function (option) {\n //create an virtual root\n var root = {\n name: option.name,\n children: option.data\n };\n var leaves = option.leaves || {};\n var leavesModel = new Model(leaves, this, this.ecModel);\n var tree = Tree.createTree(root, this, beforeLink);\n\n function beforeLink(nodeData) {\n nodeData.wrapMethod('getItemModel', function (model, idx) {\n var node = tree.getNodeByDataIndex(idx);\n\n if (!node.children.length || !node.isExpand) {\n model.parentModel = leavesModel;\n }\n\n return model;\n });\n }\n\n var treeDepth = 0;\n tree.eachNode('preorder', function (node) {\n if (node.depth > treeDepth) {\n treeDepth = node.depth;\n }\n });\n var expandAndCollapse = option.expandAndCollapse;\n var expandTreeDepth = expandAndCollapse && option.initialTreeDepth >= 0 ? option.initialTreeDepth : treeDepth;\n tree.root.eachNode('preorder', function (node) {\n var item = node.hostTree.data.getRawDataItem(node.dataIndex); // Add item.collapsed != null, because users can collapse node original in the series.data.\n\n node.isExpand = item && item.collapsed != null ? !item.collapsed : node.depth <= expandTreeDepth;\n });\n return tree.data;\n },\n\n /**\n * Make the configuration 'orient' backward compatibly, with 'horizontal = LR', 'vertical = TB'.\n * @returns {string} orient\n */\n getOrient: function () {\n var orient = this.get('orient');\n\n if (orient === 'horizontal') {\n orient = 'LR';\n } else if (orient === 'vertical') {\n orient = 'TB';\n }\n\n return orient;\n },\n setZoom: function (zoom) {\n this.option.zoom = zoom;\n },\n setCenter: function (center) {\n this.option.center = center;\n },\n\n /**\n * @override\n * @param {number} dataIndex\n */\n formatTooltip: function (dataIndex) {\n var tree = this.getData().tree;\n var realRoot = tree.root.children[0];\n var node = tree.getNodeByDataIndex(dataIndex);\n var value = node.getValue();\n var name = node.name;\n\n while (node && node !== realRoot) {\n name = node.parentNode.name + '.' + name;\n node = node.parentNode;\n }\n\n return encodeHTML(name + (isNaN(value) || value == null ? '' : ' : ' + value));\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'view',\n // the position of the whole view\n left: '12%',\n top: '12%',\n right: '12%',\n bottom: '12%',\n // the layout of the tree, two value can be selected, 'orthogonal' or 'radial'\n layout: 'orthogonal',\n // value can be 'polyline'\n edgeShape: 'curve',\n edgeForkPosition: '50%',\n // true | false | 'move' | 'scale', see module:component/helper/RoamController.\n roam: false,\n // Symbol size scale ratio in roam\n nodeScaleRatio: 0.4,\n // Default on center of graph\n center: null,\n zoom: 1,\n // The orient of orthoginal layout, can be setted to 'LR', 'TB', 'RL', 'BT'.\n // and the backward compatibility configuration 'horizontal = LR', 'vertical = TB'.\n orient: 'LR',\n symbol: 'emptyCircle',\n symbolSize: 7,\n expandAndCollapse: true,\n initialTreeDepth: 2,\n lineStyle: {\n color: '#ccc',\n width: 1.5,\n curveness: 0.5\n },\n itemStyle: {\n color: 'lightsteelblue',\n borderColor: '#c23531',\n borderWidth: 1.5\n },\n label: {\n show: true,\n color: '#555'\n },\n leaves: {\n label: {\n show: true\n }\n },\n animationEasing: 'linear',\n animationDuration: 700,\n animationDurationUpdate: 1000\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar SymbolClz = require(\"../helper/Symbol\");\n\nvar _layoutHelper = require(\"./layoutHelper\");\n\nvar radialCoordinate = _layoutHelper.radialCoordinate;\n\nvar echarts = require(\"../../echarts\");\n\nvar bbox = require(\"zrender/lib/core/bbox\");\n\nvar View = require(\"../../coord/View\");\n\nvar roamHelper = require(\"../../component/helper/roamHelper\");\n\nvar RoamController = require(\"../../component/helper/RoamController\");\n\nvar _cursorHelper = require(\"../../component/helper/cursorHelper\");\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\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 TreeShape = graphic.extendShape({\n shape: {\n parentPoint: [],\n childPoints: [],\n orient: '',\n forkPosition: ''\n },\n style: {\n stroke: '#000',\n fill: null\n },\n buildPath: function (ctx, shape) {\n var childPoints = shape.childPoints;\n var childLen = childPoints.length;\n var parentPoint = shape.parentPoint;\n var firstChildPos = childPoints[0];\n var lastChildPos = childPoints[childLen - 1];\n\n if (childLen === 1) {\n ctx.moveTo(parentPoint[0], parentPoint[1]);\n ctx.lineTo(firstChildPos[0], firstChildPos[1]);\n return;\n }\n\n var orient = shape.orient;\n var forkDim = orient === 'TB' || orient === 'BT' ? 0 : 1;\n var otherDim = 1 - forkDim;\n var forkPosition = parsePercent(shape.forkPosition, 1);\n var tmpPoint = [];\n tmpPoint[forkDim] = parentPoint[forkDim];\n tmpPoint[otherDim] = parentPoint[otherDim] + (lastChildPos[otherDim] - parentPoint[otherDim]) * forkPosition;\n ctx.moveTo(parentPoint[0], parentPoint[1]);\n ctx.lineTo(tmpPoint[0], tmpPoint[1]);\n ctx.moveTo(firstChildPos[0], firstChildPos[1]);\n tmpPoint[forkDim] = firstChildPos[forkDim];\n ctx.lineTo(tmpPoint[0], tmpPoint[1]);\n tmpPoint[forkDim] = lastChildPos[forkDim];\n ctx.lineTo(tmpPoint[0], tmpPoint[1]);\n ctx.lineTo(lastChildPos[0], lastChildPos[1]);\n\n for (var i = 1; i < childLen - 1; i++) {\n var point = childPoints[i];\n ctx.moveTo(point[0], point[1]);\n tmpPoint[forkDim] = point[forkDim];\n ctx.lineTo(tmpPoint[0], tmpPoint[1]);\n }\n }\n});\n\nvar _default = echarts.extendChartView({\n type: 'tree',\n\n /**\n * Init the chart\n * @override\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n init: function (ecModel, api) {\n /**\n * @private\n * @type {module:echarts/data/Tree}\n */\n this._oldTree;\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n\n this._mainGroup = new graphic.Group();\n /**\n * @private\n * @type {module:echarts/componet/helper/RoamController}\n */\n\n this._controller = new RoamController(api.getZr());\n this._controllerHost = {\n target: this.group\n };\n this.group.add(this._mainGroup);\n },\n render: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var layoutInfo = seriesModel.layoutInfo;\n var group = this._mainGroup;\n var layout = seriesModel.get('layout');\n\n if (layout === 'radial') {\n group.attr('position', [layoutInfo.x + layoutInfo.width / 2, layoutInfo.y + layoutInfo.height / 2]);\n } else {\n group.attr('position', [layoutInfo.x, layoutInfo.y]);\n }\n\n this._updateViewCoordSys(seriesModel, layoutInfo, layout);\n\n this._updateController(seriesModel, ecModel, api);\n\n var oldData = this._data;\n var seriesScope = {\n expandAndCollapse: seriesModel.get('expandAndCollapse'),\n layout: layout,\n edgeShape: seriesModel.get('edgeShape'),\n edgeForkPosition: seriesModel.get('edgeForkPosition'),\n orient: seriesModel.getOrient(),\n curvature: seriesModel.get('lineStyle.curveness'),\n symbolRotate: seriesModel.get('symbolRotate'),\n symbolOffset: seriesModel.get('symbolOffset'),\n hoverAnimation: seriesModel.get('hoverAnimation'),\n useNameLabel: true,\n fadeIn: true\n };\n data.diff(oldData).add(function (newIdx) {\n if (symbolNeedsDraw(data, newIdx)) {\n // Create node and edge\n updateNode(data, newIdx, null, group, seriesModel, seriesScope);\n }\n }).update(function (newIdx, oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx);\n\n if (!symbolNeedsDraw(data, newIdx)) {\n symbolEl && removeNode(oldData, oldIdx, symbolEl, group, seriesModel, seriesScope);\n return;\n } // Update node and edge\n\n\n updateNode(data, newIdx, symbolEl, group, seriesModel, seriesScope);\n }).remove(function (oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx); // When remove a collapsed node of subtree, since the collapsed\n // node haven't been initialized with a symbol element,\n // you can't found it's symbol element through index.\n // so if we want to remove the symbol element we should insure\n // that the symbol element is not null.\n\n if (symbolEl) {\n removeNode(oldData, oldIdx, symbolEl, group, seriesModel, seriesScope);\n }\n }).execute();\n this._nodeScaleRatio = seriesModel.get('nodeScaleRatio');\n\n this._updateNodeAndLinkScale(seriesModel);\n\n if (seriesScope.expandAndCollapse === true) {\n data.eachItemGraphicEl(function (el, dataIndex) {\n el.off('click').on('click', function () {\n api.dispatchAction({\n type: 'treeExpandAndCollapse',\n seriesId: seriesModel.id,\n dataIndex: dataIndex\n });\n });\n });\n }\n\n this._data = data;\n },\n _updateViewCoordSys: function (seriesModel) {\n var data = seriesModel.getData();\n var points = [];\n data.each(function (idx) {\n var layout = data.getItemLayout(idx);\n\n if (layout && !isNaN(layout.x) && !isNaN(layout.y)) {\n points.push([+layout.x, +layout.y]);\n }\n });\n var min = [];\n var max = [];\n bbox.fromPoints(points, min, max); // If don't Store min max when collapse the root node after roam,\n // the root node will disappear.\n\n var oldMin = this._min;\n var oldMax = this._max; // If width or height is 0\n\n if (max[0] - min[0] === 0) {\n min[0] = oldMin ? oldMin[0] : min[0] - 1;\n max[0] = oldMax ? oldMax[0] : max[0] + 1;\n }\n\n if (max[1] - min[1] === 0) {\n min[1] = oldMin ? oldMin[1] : min[1] - 1;\n max[1] = oldMax ? oldMax[1] : max[1] + 1;\n }\n\n var viewCoordSys = seriesModel.coordinateSystem = new View();\n viewCoordSys.zoomLimit = seriesModel.get('scaleLimit');\n viewCoordSys.setBoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n viewCoordSys.setCenter(seriesModel.get('center'));\n viewCoordSys.setZoom(seriesModel.get('zoom')); // Here we use viewCoordSys just for computing the 'position' and 'scale' of the group\n\n this.group.attr({\n position: viewCoordSys.position,\n scale: viewCoordSys.scale\n });\n this._viewCoordSys = viewCoordSys;\n this._min = min;\n this._max = max;\n },\n _updateController: function (seriesModel, ecModel, api) {\n var controller = this._controller;\n var controllerHost = this._controllerHost;\n var group = this.group;\n controller.setPointerChecker(function (e, x, y) {\n var rect = group.getBoundingRect();\n rect.applyTransform(group.transform);\n return rect.contain(x, y) && !onIrrelevantElement(e, api, seriesModel);\n });\n controller.enable(seriesModel.get('roam'));\n controllerHost.zoomLimit = seriesModel.get('scaleLimit');\n controllerHost.zoom = seriesModel.coordinateSystem.getZoom();\n controller.off('pan').off('zoom').on('pan', function (e) {\n roamHelper.updateViewOnPan(controllerHost, e.dx, e.dy);\n api.dispatchAction({\n seriesId: seriesModel.id,\n type: 'treeRoam',\n dx: e.dx,\n dy: e.dy\n });\n }, this).on('zoom', function (e) {\n roamHelper.updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\n api.dispatchAction({\n seriesId: seriesModel.id,\n type: 'treeRoam',\n zoom: e.scale,\n originX: e.originX,\n originY: e.originY\n });\n\n this._updateNodeAndLinkScale(seriesModel);\n }, this);\n },\n _updateNodeAndLinkScale: function (seriesModel) {\n var data = seriesModel.getData();\n\n var nodeScale = this._getNodeGlobalScale(seriesModel);\n\n var invScale = [nodeScale, nodeScale];\n data.eachItemGraphicEl(function (el, idx) {\n el.attr('scale', invScale);\n });\n },\n _getNodeGlobalScale: function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys.type !== 'view') {\n return 1;\n }\n\n var nodeScaleRatio = this._nodeScaleRatio;\n var groupScale = coordSys.scale;\n var groupZoom = groupScale && groupScale[0] || 1; // Scale node when zoom changes\n\n var roamZoom = coordSys.getZoom();\n var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;\n return nodeScale / groupZoom;\n },\n dispose: function () {\n this._controller && this._controller.dispose();\n this._controllerHost = {};\n },\n remove: function () {\n this._mainGroup.removeAll();\n\n this._data = null;\n }\n});\n\nfunction symbolNeedsDraw(data, dataIndex) {\n var layout = data.getItemLayout(dataIndex);\n return layout && !isNaN(layout.x) && !isNaN(layout.y) && data.getItemVisual(dataIndex, 'symbol') !== 'none';\n}\n\nfunction getTreeNodeStyle(node, itemModel, seriesScope) {\n seriesScope.itemModel = itemModel;\n seriesScope.itemStyle = itemModel.getModel('itemStyle').getItemStyle();\n seriesScope.hoverItemStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n seriesScope.lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n seriesScope.labelModel = itemModel.getModel('label');\n seriesScope.hoverLabelModel = itemModel.getModel('emphasis.label');\n\n if (node.isExpand === false && node.children.length !== 0) {\n seriesScope.symbolInnerColor = seriesScope.itemStyle.fill;\n } else {\n seriesScope.symbolInnerColor = '#fff';\n }\n\n return seriesScope;\n}\n\nfunction updateNode(data, dataIndex, symbolEl, group, seriesModel, seriesScope) {\n var isInit = !symbolEl;\n var node = data.tree.getNodeByDataIndex(dataIndex);\n var itemModel = node.getModel();\n var seriesScope = getTreeNodeStyle(node, itemModel, seriesScope);\n var virtualRoot = data.tree.root;\n var source = node.parentNode === virtualRoot ? node : node.parentNode || node;\n var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);\n var sourceLayout = source.getLayout();\n var sourceOldLayout = sourceSymbolEl ? {\n x: sourceSymbolEl.position[0],\n y: sourceSymbolEl.position[1],\n rawX: sourceSymbolEl.__radialOldRawX,\n rawY: sourceSymbolEl.__radialOldRawY\n } : sourceLayout;\n var targetLayout = node.getLayout();\n\n if (isInit) {\n symbolEl = new SymbolClz(data, dataIndex, seriesScope);\n symbolEl.attr('position', [sourceOldLayout.x, sourceOldLayout.y]);\n } else {\n symbolEl.updateData(data, dataIndex, seriesScope);\n }\n\n symbolEl.__radialOldRawX = symbolEl.__radialRawX;\n symbolEl.__radialOldRawY = symbolEl.__radialRawY;\n symbolEl.__radialRawX = targetLayout.rawX;\n symbolEl.__radialRawY = targetLayout.rawY;\n group.add(symbolEl);\n data.setItemGraphicEl(dataIndex, symbolEl);\n graphic.updateProps(symbolEl, {\n position: [targetLayout.x, targetLayout.y]\n }, seriesModel);\n var symbolPath = symbolEl.getSymbolPath();\n\n if (seriesScope.layout === 'radial') {\n var realRoot = virtualRoot.children[0];\n var rootLayout = realRoot.getLayout();\n var length = realRoot.children.length;\n var rad;\n var isLeft;\n\n if (targetLayout.x === rootLayout.x && node.isExpand === true) {\n var center = {};\n center.x = (realRoot.children[0].getLayout().x + realRoot.children[length - 1].getLayout().x) / 2;\n center.y = (realRoot.children[0].getLayout().y + realRoot.children[length - 1].getLayout().y) / 2;\n rad = Math.atan2(center.y - rootLayout.y, center.x - rootLayout.x);\n\n if (rad < 0) {\n rad = Math.PI * 2 + rad;\n }\n\n isLeft = center.x < rootLayout.x;\n\n if (isLeft) {\n rad = rad - Math.PI;\n }\n } else {\n rad = Math.atan2(targetLayout.y - rootLayout.y, targetLayout.x - rootLayout.x);\n\n if (rad < 0) {\n rad = Math.PI * 2 + rad;\n }\n\n if (node.children.length === 0 || node.children.length !== 0 && node.isExpand === false) {\n isLeft = targetLayout.x < rootLayout.x;\n\n if (isLeft) {\n rad = rad - Math.PI;\n }\n } else {\n isLeft = targetLayout.x > rootLayout.x;\n\n if (!isLeft) {\n rad = rad - Math.PI;\n }\n }\n }\n\n var textPosition = isLeft ? 'left' : 'right';\n var rotate = seriesScope.labelModel.get('rotate');\n var labelRotateRadian = rotate * (Math.PI / 180);\n symbolPath.setStyle({\n textPosition: seriesScope.labelModel.get('position') || textPosition,\n textRotation: rotate == null ? -rad : labelRotateRadian,\n textOrigin: 'center',\n verticalAlign: 'middle'\n });\n }\n\n drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group, seriesScope);\n}\n\nfunction drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group, seriesScope) {\n var edgeShape = seriesScope.edgeShape;\n var edge = symbolEl.__edge;\n\n if (edgeShape === 'curve') {\n if (node.parentNode && node.parentNode !== virtualRoot) {\n if (!edge) {\n edge = symbolEl.__edge = new graphic.BezierCurve({\n shape: getEdgeShape(seriesScope, sourceOldLayout, sourceOldLayout),\n style: zrUtil.defaults({\n opacity: 0,\n strokeNoScale: true\n }, seriesScope.lineStyle)\n });\n }\n\n graphic.updateProps(edge, {\n shape: getEdgeShape(seriesScope, sourceLayout, targetLayout),\n style: zrUtil.defaults({\n opacity: 1\n }, seriesScope.lineStyle)\n }, seriesModel);\n }\n } else if (edgeShape === 'polyline') {\n if (seriesScope.layout === 'orthogonal') {\n if (node !== virtualRoot && node.children && node.children.length !== 0 && node.isExpand === true) {\n var children = node.children;\n var childPoints = [];\n\n for (var i = 0; i < children.length; i++) {\n var childLayout = children[i].getLayout();\n childPoints.push([childLayout.x, childLayout.y]);\n }\n\n if (!edge) {\n edge = symbolEl.__edge = new TreeShape({\n shape: {\n parentPoint: [targetLayout.x, targetLayout.y],\n childPoints: [[targetLayout.x, targetLayout.y]],\n orient: seriesScope.orient,\n forkPosition: seriesScope.edgeForkPosition\n },\n style: zrUtil.defaults({\n opacity: 0,\n strokeNoScale: true\n }, seriesScope.lineStyle)\n });\n }\n\n graphic.updateProps(edge, {\n shape: {\n parentPoint: [targetLayout.x, targetLayout.y],\n childPoints: childPoints\n },\n style: zrUtil.defaults({\n opacity: 1\n }, seriesScope.lineStyle)\n }, seriesModel);\n }\n } else {}\n }\n\n group.add(edge);\n}\n\nfunction removeNode(data, dataIndex, symbolEl, group, seriesModel, seriesScope) {\n var node = data.tree.getNodeByDataIndex(dataIndex);\n var virtualRoot = data.tree.root;\n var itemModel = node.getModel();\n var seriesScope = getTreeNodeStyle(node, itemModel, seriesScope);\n var source = node.parentNode === virtualRoot ? node : node.parentNode || node;\n var edgeShape = seriesScope.edgeShape;\n var sourceLayout;\n\n while (sourceLayout = source.getLayout(), sourceLayout == null) {\n source = source.parentNode === virtualRoot ? source : source.parentNode || source;\n }\n\n graphic.updateProps(symbolEl, {\n position: [sourceLayout.x + 1, sourceLayout.y + 1]\n }, seriesModel, function () {\n group.remove(symbolEl);\n data.setItemGraphicEl(dataIndex, null);\n });\n symbolEl.fadeOut(null, {\n keepLabel: true\n });\n var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);\n var sourceEdge = sourceSymbolEl.__edge; // 1. when expand the sub tree, delete the children node should delete the edge of\n // the source at the same time. because the polyline edge shape is only owned by the source.\n // 2.when the node is the only children of the source, delete the node should delete the edge of\n // the source at the same time. the same reason as above.\n\n var edge = symbolEl.__edge || (source.isExpand === false || source.children.length === 1 ? sourceEdge : undefined);\n var edgeShape = seriesScope.edgeShape;\n\n if (edge) {\n if (edgeShape === 'curve') {\n graphic.updateProps(edge, {\n shape: getEdgeShape(seriesScope, sourceLayout, sourceLayout),\n style: {\n opacity: 0\n }\n }, seriesModel, function () {\n group.remove(edge);\n });\n } else if (edgeShape === 'polyline' && seriesScope.layout === 'orthogonal') {\n graphic.updateProps(edge, {\n shape: {\n parentPoint: [sourceLayout.x, sourceLayout.y],\n childPoints: [[sourceLayout.x, sourceLayout.y]]\n },\n style: {\n opacity: 0\n }\n }, seriesModel, function () {\n group.remove(edge);\n });\n }\n }\n}\n\nfunction getEdgeShape(seriesScope, sourceLayout, targetLayout) {\n var cpx1;\n var cpy1;\n var cpx2;\n var cpy2;\n var orient = seriesScope.orient;\n var x1;\n var x2;\n var y1;\n var y2;\n\n if (seriesScope.layout === 'radial') {\n x1 = sourceLayout.rawX;\n y1 = sourceLayout.rawY;\n x2 = targetLayout.rawX;\n y2 = targetLayout.rawY;\n var radialCoor1 = radialCoordinate(x1, y1);\n var radialCoor2 = radialCoordinate(x1, y1 + (y2 - y1) * seriesScope.curvature);\n var radialCoor3 = radialCoordinate(x2, y2 + (y1 - y2) * seriesScope.curvature);\n var radialCoor4 = radialCoordinate(x2, y2);\n return {\n x1: radialCoor1.x,\n y1: radialCoor1.y,\n x2: radialCoor4.x,\n y2: radialCoor4.y,\n cpx1: radialCoor2.x,\n cpy1: radialCoor2.y,\n cpx2: radialCoor3.x,\n cpy2: radialCoor3.y\n };\n } else {\n x1 = sourceLayout.x;\n y1 = sourceLayout.y;\n x2 = targetLayout.x;\n y2 = targetLayout.y;\n\n if (orient === 'LR' || orient === 'RL') {\n cpx1 = x1 + (x2 - x1) * seriesScope.curvature;\n cpy1 = y1;\n cpx2 = x2 + (x1 - x2) * seriesScope.curvature;\n cpy2 = y2;\n }\n\n if (orient === 'TB' || orient === 'BT') {\n cpx1 = x1;\n cpy1 = y1 + (y2 - y1) * seriesScope.curvature;\n cpx2 = x2;\n cpy2 = y2 + (y1 - y2) * seriesScope.curvature;\n }\n }\n\n return {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n cpx1: cpx1,\n cpy1: cpy1,\n cpx2: cpx2,\n cpy2: cpy2\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 layout = require(\"../../util/layout\");\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* A third-party license is embeded for some of the code in this file:\n* The tree layoutHelper implementation was originally copied from\n* \"d3.js\"(https://github.com/d3/d3-hierarchy) with\n* some modifications made for this project.\n* (see more details in the comment of the specific method below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the licence of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\n\n/**\n * @file The layout algorithm of node-link tree diagrams. Here we using Reingold-Tilford algorithm to drawing\n * the tree.\n */\n\n/**\n * Initialize all computational message for following algorithm.\n *\n * @param {module:echarts/data/Tree~TreeNode} root The virtual root of the tree.\n */\nfunction init(root) {\n root.hierNode = {\n defaultAncestor: null,\n ancestor: root,\n prelim: 0,\n modifier: 0,\n change: 0,\n shift: 0,\n i: 0,\n thread: null\n };\n var nodes = [root];\n var node;\n var children;\n\n while (node = nodes.pop()) {\n // jshint ignore:line\n children = node.children;\n\n if (node.isExpand && children.length) {\n var n = children.length;\n\n for (var i = n - 1; i >= 0; i--) {\n var child = children[i];\n child.hierNode = {\n defaultAncestor: null,\n ancestor: child,\n prelim: 0,\n modifier: 0,\n change: 0,\n shift: 0,\n i: i,\n thread: null\n };\n nodes.push(child);\n }\n }\n }\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * Computes a preliminary x coordinate for node. Before that, this function is\n * applied recursively to the children of node, as well as the function\n * apportion(). After spacing out the children by calling executeShifts(), the\n * node is placed to the midpoint of its outermost children.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n * @param {Function} separation\n */\n\n\nfunction firstWalk(node, separation) {\n var children = node.isExpand ? node.children : [];\n var siblings = node.parentNode.children;\n var subtreeW = node.hierNode.i ? siblings[node.hierNode.i - 1] : null;\n\n if (children.length) {\n executeShifts(node);\n var midPoint = (children[0].hierNode.prelim + children[children.length - 1].hierNode.prelim) / 2;\n\n if (subtreeW) {\n node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\n node.hierNode.modifier = node.hierNode.prelim - midPoint;\n } else {\n node.hierNode.prelim = midPoint;\n }\n } else if (subtreeW) {\n node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\n }\n\n node.parentNode.hierNode.defaultAncestor = apportion(node, subtreeW, node.parentNode.hierNode.defaultAncestor || siblings[0], separation);\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * Computes all real x-coordinates by summing up the modifiers recursively.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n */\n\n\nfunction secondWalk(node) {\n var nodeX = node.hierNode.prelim + node.parentNode.hierNode.modifier;\n node.setLayout({\n x: nodeX\n }, true);\n node.hierNode.modifier += node.parentNode.hierNode.modifier;\n}\n\nfunction separation(cb) {\n return arguments.length ? cb : defaultSeparation;\n}\n/**\n * Transform the common coordinate to radial coordinate.\n *\n * @param {number} x\n * @param {number} y\n * @return {Object}\n */\n\n\nfunction radialCoordinate(x, y) {\n var radialCoor = {};\n x -= Math.PI / 2;\n radialCoor.x = y * Math.cos(x);\n radialCoor.y = y * Math.sin(x);\n return radialCoor;\n}\n/**\n * Get the layout position of the whole view.\n *\n * @param {module:echarts/model/Series} seriesModel the model object of sankey series\n * @param {module:echarts/ExtensionAPI} api provide the API list that the developer can call\n * @return {module:zrender/core/BoundingRect} size of rect to draw the sankey view\n */\n\n\nfunction getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n/**\n * All other shifts, applied to the smaller subtrees between w- and w+, are\n * performed by this function.\n *\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n */\n\n\nfunction executeShifts(node) {\n var children = node.children;\n var n = children.length;\n var shift = 0;\n var change = 0;\n\n while (--n >= 0) {\n var child = children[n];\n child.hierNode.prelim += shift;\n child.hierNode.modifier += shift;\n change += child.hierNode.change;\n shift += child.hierNode.shift + change;\n }\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * The core of the algorithm. Here, a new subtree is combined with the\n * previous subtrees. Threads are used to traverse the inside and outside\n * contours of the left and right subtree up to the highest common level.\n * Whenever two nodes of the inside contours conflict, we compute the left\n * one of the greatest uncommon ancestors using the function nextAncestor()\n * and call moveSubtree() to shift the subtree and prepare the shifts of\n * smaller subtrees. Finally, we add a new thread (if necessary).\n *\n * @param {module:echarts/data/Tree~TreeNode} subtreeV\n * @param {module:echarts/data/Tree~TreeNode} subtreeW\n * @param {module:echarts/data/Tree~TreeNode} ancestor\n * @param {Function} separation\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction apportion(subtreeV, subtreeW, ancestor, separation) {\n if (subtreeW) {\n var nodeOutRight = subtreeV;\n var nodeInRight = subtreeV;\n var nodeOutLeft = nodeInRight.parentNode.children[0];\n var nodeInLeft = subtreeW;\n var sumOutRight = nodeOutRight.hierNode.modifier;\n var sumInRight = nodeInRight.hierNode.modifier;\n var sumOutLeft = nodeOutLeft.hierNode.modifier;\n var sumInLeft = nodeInLeft.hierNode.modifier;\n\n while (nodeInLeft = nextRight(nodeInLeft), nodeInRight = nextLeft(nodeInRight), nodeInLeft && nodeInRight) {\n nodeOutRight = nextRight(nodeOutRight);\n nodeOutLeft = nextLeft(nodeOutLeft);\n nodeOutRight.hierNode.ancestor = subtreeV;\n var shift = nodeInLeft.hierNode.prelim + sumInLeft - nodeInRight.hierNode.prelim - sumInRight + separation(nodeInLeft, nodeInRight);\n\n if (shift > 0) {\n moveSubtree(nextAncestor(nodeInLeft, subtreeV, ancestor), subtreeV, shift);\n sumInRight += shift;\n sumOutRight += shift;\n }\n\n sumInLeft += nodeInLeft.hierNode.modifier;\n sumInRight += nodeInRight.hierNode.modifier;\n sumOutRight += nodeOutRight.hierNode.modifier;\n sumOutLeft += nodeOutLeft.hierNode.modifier;\n }\n\n if (nodeInLeft && !nextRight(nodeOutRight)) {\n nodeOutRight.hierNode.thread = nodeInLeft;\n nodeOutRight.hierNode.modifier += sumInLeft - sumOutRight;\n }\n\n if (nodeInRight && !nextLeft(nodeOutLeft)) {\n nodeOutLeft.hierNode.thread = nodeInRight;\n nodeOutLeft.hierNode.modifier += sumInRight - sumOutLeft;\n ancestor = subtreeV;\n }\n }\n\n return ancestor;\n}\n/**\n * This function is used to traverse the right contour of a subtree.\n * It returns the rightmost child of node or the thread of node. The function\n * returns null if and only if node is on the highest depth of its subtree.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextRight(node) {\n var children = node.children;\n return children.length && node.isExpand ? children[children.length - 1] : node.hierNode.thread;\n}\n/**\n * This function is used to traverse the left contour of a subtree (or a subforest).\n * It returns the leftmost child of node or the thread of node. The function\n * returns null if and only if node is on the highest depth of its subtree.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextLeft(node) {\n var children = node.children;\n return children.length && node.isExpand ? children[0] : node.hierNode.thread;\n}\n/**\n * If nodeInLeft’s ancestor is a sibling of node, returns nodeInLeft’s ancestor.\n * Otherwise, returns the specified ancestor.\n *\n * @param {module:echarts/data/Tree~TreeNode} nodeInLeft\n * @param {module:echarts/data/Tree~TreeNode} node\n * @param {module:echarts/data/Tree~TreeNode} ancestor\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextAncestor(nodeInLeft, node, ancestor) {\n return nodeInLeft.hierNode.ancestor.parentNode === node.parentNode ? nodeInLeft.hierNode.ancestor : ancestor;\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * Shifts the current subtree rooted at wr.\n * This is done by increasing prelim(w+) and modifier(w+) by shift.\n *\n * @param {module:echarts/data/Tree~TreeNode} wl\n * @param {module:echarts/data/Tree~TreeNode} wr\n * @param {number} shift [description]\n */\n\n\nfunction moveSubtree(wl, wr, shift) {\n var change = shift / (wr.hierNode.i - wl.hierNode.i);\n wr.hierNode.change -= change;\n wr.hierNode.shift += shift;\n wr.hierNode.modifier += shift;\n wr.hierNode.prelim += shift;\n wl.hierNode.change += change;\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n */\n\n\nfunction defaultSeparation(node1, node2) {\n return node1.parentNode === node2.parentNode ? 1 : 2;\n}\n\nexports.init = init;\nexports.firstWalk = firstWalk;\nexports.secondWalk = secondWalk;\nexports.separation = separation;\nexports.radialCoordinate = radialCoordinate;\nexports.getViewRect = getViewRect;","\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* 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 * Traverse the tree from bottom to top and do something\n * @param {module:echarts/data/Tree~TreeNode} root The real root of the tree\n * @param {Function} callback\n */\nfunction eachAfter(root, callback, separation) {\n var nodes = [root];\n var next = [];\n var node;\n\n while (node = nodes.pop()) {\n // jshint ignore:line\n next.push(node);\n\n if (node.isExpand) {\n var children = node.children;\n\n if (children.length) {\n for (var i = 0; i < children.length; i++) {\n nodes.push(children[i]);\n }\n }\n }\n }\n\n while (node = next.pop()) {\n // jshint ignore:line\n callback(node, separation);\n }\n}\n/**\n * Traverse the tree from top to bottom and do something\n * @param {module:echarts/data/Tree~TreeNode} root The real root of the tree\n * @param {Function} callback\n */\n\n\nfunction eachBefore(root, callback) {\n var nodes = [root];\n var node;\n\n while (node = nodes.pop()) {\n // jshint ignore:line\n callback(node);\n\n if (node.isExpand) {\n var children = node.children;\n\n if (children.length) {\n for (var i = children.length - 1; i >= 0; i--) {\n nodes.push(children[i]);\n }\n }\n }\n }\n}\n\nexports.eachAfter = eachAfter;\nexports.eachBefore = eachBefore;","\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\nvar _roamHelper = require(\"../../action/roamHelper\");\n\nvar updateCenterAndZoom = _roamHelper.updateCenterAndZoom;\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*/\necharts.registerAction({\n type: 'treeExpandAndCollapse',\n event: 'treeExpandAndCollapse',\n update: 'update'\n}, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'series',\n subType: 'tree',\n query: payload\n }, function (seriesModel) {\n var dataIndex = payload.dataIndex;\n var tree = seriesModel.getData().tree;\n var node = tree.getNodeByDataIndex(dataIndex);\n node.isExpand = !node.isExpand;\n });\n});\necharts.registerAction({\n type: 'treeRoam',\n event: 'treeRoam',\n // Here we set 'none' instead of 'update', because roam action\n // just need to update the transform matrix without having to recalculate\n // the layout. So don't need to go through the whole update process, such\n // as 'dataPrcocess', 'coordSystemUpdate', 'layout' and so on.\n update: 'none'\n}, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'series',\n subType: 'tree',\n query: payload\n }, function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var res = updateCenterAndZoom(coordSys, payload);\n seriesModel.setCenter && seriesModel.setCenter(res.center);\n seriesModel.setZoom && seriesModel.setZoom(res.zoom);\n });\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _traversalHelper = require(\"./traversalHelper\");\n\nvar eachAfter = _traversalHelper.eachAfter;\nvar eachBefore = _traversalHelper.eachBefore;\n\nvar _layoutHelper = require(\"./layoutHelper\");\n\nvar init = _layoutHelper.init;\nvar firstWalk = _layoutHelper.firstWalk;\nvar secondWalk = _layoutHelper.secondWalk;\nvar sep = _layoutHelper.separation;\nvar radialCoordinate = _layoutHelper.radialCoordinate;\nvar getViewRect = _layoutHelper.getViewRect;\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(ecModel, api) {\n ecModel.eachSeriesByType('tree', function (seriesModel) {\n commonLayout(seriesModel, api);\n });\n}\n\nfunction commonLayout(seriesModel, api) {\n var layoutInfo = getViewRect(seriesModel, api);\n seriesModel.layoutInfo = layoutInfo;\n var layout = seriesModel.get('layout');\n var width = 0;\n var height = 0;\n var separation = null;\n\n if (layout === 'radial') {\n width = 2 * Math.PI;\n height = Math.min(layoutInfo.height, layoutInfo.width) / 2;\n separation = sep(function (node1, node2) {\n return (node1.parentNode === node2.parentNode ? 1 : 2) / node1.depth;\n });\n } else {\n width = layoutInfo.width;\n height = layoutInfo.height;\n separation = sep();\n }\n\n var virtualRoot = seriesModel.getData().tree.root;\n var realRoot = virtualRoot.children[0];\n\n if (realRoot) {\n init(virtualRoot);\n eachAfter(realRoot, firstWalk, separation);\n virtualRoot.hierNode.modifier = -realRoot.hierNode.prelim;\n eachBefore(realRoot, secondWalk);\n var left = realRoot;\n var right = realRoot;\n var bottom = realRoot;\n eachBefore(realRoot, function (node) {\n var x = node.getLayout().x;\n\n if (x < left.getLayout().x) {\n left = node;\n }\n\n if (x > right.getLayout().x) {\n right = node;\n }\n\n if (node.depth > bottom.depth) {\n bottom = node;\n }\n });\n var delta = left === right ? 1 : separation(left, right) / 2;\n var tx = delta - left.getLayout().x;\n var kx = 0;\n var ky = 0;\n var coorX = 0;\n var coorY = 0;\n\n if (layout === 'radial') {\n kx = width / (right.getLayout().x + delta + tx); // here we use (node.depth - 1), bucause the real root's depth is 1\n\n ky = height / (bottom.depth - 1 || 1);\n eachBefore(realRoot, function (node) {\n coorX = (node.getLayout().x + tx) * kx;\n coorY = (node.depth - 1) * ky;\n var finalCoor = radialCoordinate(coorX, coorY);\n node.setLayout({\n x: finalCoor.x,\n y: finalCoor.y,\n rawX: coorX,\n rawY: coorY\n }, true);\n });\n } else {\n var orient = seriesModel.getOrient();\n\n if (orient === 'RL' || orient === 'LR') {\n ky = height / (right.getLayout().x + delta + tx);\n kx = width / (bottom.depth - 1 || 1);\n eachBefore(realRoot, function (node) {\n coorY = (node.getLayout().x + tx) * ky;\n coorX = orient === 'LR' ? (node.depth - 1) * kx : width - (node.depth - 1) * kx;\n node.setLayout({\n x: coorX,\n y: coorY\n }, true);\n });\n } else if (orient === 'TB' || orient === 'BT') {\n kx = width / (right.getLayout().x + delta + tx);\n ky = height / (bottom.depth - 1 || 1);\n eachBefore(realRoot, function (node) {\n coorX = (node.getLayout().x + tx) * kx;\n coorY = orient === 'TB' ? (node.depth - 1) * ky : height - (node.depth - 1) * ky;\n node.setLayout({\n x: coorX,\n y: coorY\n }, true);\n });\n }\n }\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\nrequire(\"./treemap/TreemapSeries\");\n\nrequire(\"./treemap/TreemapView\");\n\nrequire(\"./treemap/treemapAction\");\n\nvar treemapVisual = require(\"./treemap/treemapVisual\");\n\nvar treemapLayout = require(\"./treemap/treemapLayout\");\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*/\necharts.registerVisual(treemapVisual);\necharts.registerLayout(treemapLayout);","\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 layout = require(\"../../util/layout\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _treeHelper = require(\"../helper/treeHelper\");\n\nvar wrapTreePathInfo = _treeHelper.wrapTreePathInfo;\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 TEXT_PADDING = 8;\nvar ITEM_GAP = 8;\nvar ARRAY_LENGTH = 5;\n\nfunction Breadcrumb(containerGroup) {\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n this.group = new graphic.Group();\n containerGroup.add(this.group);\n}\n\nBreadcrumb.prototype = {\n constructor: Breadcrumb,\n render: function (seriesModel, api, targetNode, onSelect) {\n var model = seriesModel.getModel('breadcrumb');\n var thisGroup = this.group;\n thisGroup.removeAll();\n\n if (!model.get('show') || !targetNode) {\n return;\n }\n\n var normalStyleModel = model.getModel('itemStyle'); // var emphasisStyleModel = model.getModel('emphasis.itemStyle');\n\n var textStyleModel = normalStyleModel.getModel('textStyle');\n var layoutParam = {\n pos: {\n left: model.get('left'),\n right: model.get('right'),\n top: model.get('top'),\n bottom: model.get('bottom')\n },\n box: {\n width: api.getWidth(),\n height: api.getHeight()\n },\n emptyItemWidth: model.get('emptyItemWidth'),\n totalWidth: 0,\n renderList: []\n };\n\n this._prepare(targetNode, layoutParam, textStyleModel);\n\n this._renderContent(seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect);\n\n layout.positionElement(thisGroup, layoutParam.pos, layoutParam.box);\n },\n\n /**\n * Prepare render list and total width\n * @private\n */\n _prepare: function (targetNode, layoutParam, textStyleModel) {\n for (var node = targetNode; node; node = node.parentNode) {\n var text = node.getModel().get('name');\n var textRect = textStyleModel.getTextRect(text);\n var itemWidth = Math.max(textRect.width + TEXT_PADDING * 2, layoutParam.emptyItemWidth);\n layoutParam.totalWidth += itemWidth + ITEM_GAP;\n layoutParam.renderList.push({\n node: node,\n text: text,\n width: itemWidth\n });\n }\n },\n\n /**\n * @private\n */\n _renderContent: function (seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect) {\n // Start rendering.\n var lastX = 0;\n var emptyItemWidth = layoutParam.emptyItemWidth;\n var height = seriesModel.get('breadcrumb.height');\n var availableSize = layout.getAvailableSize(layoutParam.pos, layoutParam.box);\n var totalWidth = layoutParam.totalWidth;\n var renderList = layoutParam.renderList;\n\n for (var i = renderList.length - 1; i >= 0; i--) {\n var item = renderList[i];\n var itemNode = item.node;\n var itemWidth = item.width;\n var text = item.text; // Hdie text and shorten width if necessary.\n\n if (totalWidth > availableSize.width) {\n totalWidth -= itemWidth - emptyItemWidth;\n itemWidth = emptyItemWidth;\n text = null;\n }\n\n var el = new graphic.Polygon({\n shape: {\n points: makeItemPoints(lastX, 0, itemWidth, height, i === renderList.length - 1, i === 0)\n },\n style: zrUtil.defaults(normalStyleModel.getItemStyle(), {\n lineJoin: 'bevel',\n text: text,\n textFill: textStyleModel.getTextColor(),\n textFont: textStyleModel.getFont()\n }),\n z: 10,\n onclick: zrUtil.curry(onSelect, itemNode)\n });\n this.group.add(el);\n packEventData(el, seriesModel, itemNode);\n lastX += itemWidth + ITEM_GAP;\n }\n },\n\n /**\n * @override\n */\n remove: function () {\n this.group.removeAll();\n }\n};\n\nfunction makeItemPoints(x, y, itemWidth, itemHeight, head, tail) {\n var points = [[head ? x : x - ARRAY_LENGTH, y], [x + itemWidth, y], [x + itemWidth, y + itemHeight], [head ? x : x - ARRAY_LENGTH, y + itemHeight]];\n !tail && points.splice(2, 0, [x + itemWidth + ARRAY_LENGTH, y + itemHeight / 2]);\n !head && points.push([x, y + itemHeight / 2]);\n return points;\n} // Package custom mouse event.\n\n\nfunction packEventData(el, seriesModel, itemNode) {\n el.eventData = {\n componentType: 'series',\n componentSubType: 'treemap',\n componentIndex: seriesModel.componentIndex,\n seriesIndex: seriesModel.componentIndex,\n seriesName: seriesModel.name,\n seriesType: 'treemap',\n selfType: 'breadcrumb',\n // Distinguish with click event on treemap node.\n nodeData: {\n dataIndex: itemNode && itemNode.dataIndex,\n name: itemNode && itemNode.name\n },\n treePathInfo: itemNode && wrapTreePathInfo(itemNode, seriesModel)\n };\n}\n\nvar _default = Breadcrumb;\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 SeriesModel = require(\"../../model/Series\");\n\nvar Tree = require(\"../../data/Tree\");\n\nvar Model = require(\"../../model/Model\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\nvar addCommas = _format.addCommas;\n\nvar _treeHelper = require(\"../helper/treeHelper\");\n\nvar wrapTreePathInfo = _treeHelper.wrapTreePathInfo;\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 _default = SeriesModel.extend({\n type: 'series.treemap',\n layoutMode: 'box',\n dependencies: ['grid', 'polar'],\n preventUsingHoverLayer: true,\n\n /**\n * @type {module:echarts/data/Tree~Node}\n */\n _viewRoot: null,\n defaultOption: {\n // Disable progressive rendering\n progressive: 0,\n // center: ['50%', '50%'], // not supported in ec3.\n // size: ['80%', '80%'], // deprecated, compatible with ec2.\n left: 'center',\n top: 'middle',\n right: null,\n bottom: null,\n width: '80%',\n height: '80%',\n sort: true,\n // Can be null or false or true\n // (order by desc default, asc not supported yet (strange effect))\n clipWindow: 'origin',\n // Size of clipped window when zooming. 'origin' or 'fullscreen'\n squareRatio: 0.5 * (1 + Math.sqrt(5)),\n // golden ratio\n leafDepth: null,\n // Nodes on depth from root are regarded as leaves.\n // Count from zero (zero represents only view root).\n drillDownIcon: '▶',\n // Use html character temporarily because it is complicated\n // to align specialized icon. ▷▶❒❐▼✚\n zoomToNodeRatio: 0.32 * 0.32,\n // Be effective when using zoomToNode. Specify the proportion of the\n // target node area in the view area.\n roam: true,\n // true, false, 'scale' or 'zoom', 'move'.\n nodeClick: 'zoomToNode',\n // Leaf node click behaviour: 'zoomToNode', 'link', false.\n // If leafDepth is set and clicking a node which has children but\n // be on left depth, the behaviour would be changing root. Otherwise\n // use behavious defined above.\n animation: true,\n animationDurationUpdate: 900,\n animationEasing: 'quinticInOut',\n breadcrumb: {\n show: true,\n height: 22,\n left: 'center',\n top: 'bottom',\n // right\n // bottom\n emptyItemWidth: 25,\n // Width of empty node.\n itemStyle: {\n color: 'rgba(0,0,0,0.7)',\n //'#5793f3',\n borderColor: 'rgba(255,255,255,0.7)',\n borderWidth: 1,\n shadowColor: 'rgba(150,150,150,1)',\n shadowBlur: 3,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n textStyle: {\n color: '#fff'\n }\n },\n emphasis: {\n textStyle: {}\n }\n },\n label: {\n show: true,\n // Do not use textDistance, for ellipsis rect just the same as treemap node rect.\n distance: 0,\n padding: 5,\n position: 'inside',\n // Can be [5, '5%'] or position stirng like 'insideTopLeft', ...\n // formatter: null,\n color: '#fff',\n ellipsis: true // align\n // verticalAlign\n\n },\n upperLabel: {\n // Label when node is parent.\n show: false,\n position: [0, '50%'],\n height: 20,\n // formatter: null,\n color: '#fff',\n ellipsis: true,\n // align: null,\n verticalAlign: 'middle'\n },\n itemStyle: {\n color: null,\n // Can be 'none' if not necessary.\n colorAlpha: null,\n // Can be 'none' if not necessary.\n colorSaturation: null,\n // Can be 'none' if not necessary.\n borderWidth: 0,\n gapWidth: 0,\n borderColor: '#fff',\n borderColorSaturation: null // If specified, borderColor will be ineffective, and the\n // border color is evaluated by color of current node and\n // borderColorSaturation.\n\n },\n emphasis: {\n upperLabel: {\n show: true,\n position: [0, '50%'],\n color: '#fff',\n ellipsis: true,\n verticalAlign: 'middle'\n }\n },\n visualDimension: 0,\n // Can be 0, 1, 2, 3.\n visualMin: null,\n visualMax: null,\n color: [],\n // + treemapSeries.color should not be modified. Please only modified\n // level[n].color (if necessary).\n // + Specify color list of each level. level[0].color would be global\n // color list if not specified. (see method `setDefault`).\n // + But set as a empty array to forbid fetch color from global palette\n // when using nodeModel.get('color'), otherwise nodes on deep level\n // will always has color palette set and are not able to inherit color\n // from parent node.\n // + TreemapSeries.color can not be set as 'none', otherwise effect\n // legend color fetching (see seriesColor.js).\n colorAlpha: null,\n // Array. Specify color alpha range of each level, like [0.2, 0.8]\n colorSaturation: null,\n // Array. Specify color saturation of each level, like [0.2, 0.5]\n colorMappingBy: 'index',\n // 'value' or 'index' or 'id'.\n visibleMin: 10,\n // If area less than this threshold (unit: pixel^2), node will not\n // be rendered. Only works when sort is 'asc' or 'desc'.\n childrenVisibleMin: null,\n // If area of a node less than this threshold (unit: pixel^2),\n // grandchildren will not show.\n // Why grandchildren? If not grandchildren but children,\n // some siblings show children and some not,\n // the appearance may be mess and not consistent,\n levels: [] // Each item: {\n // visibleMin, itemStyle, visualDimension, label\n // }\n // data: {\n // value: [],\n // children: [],\n // link: 'http://xxx.xxx.xxx',\n // target: 'blank' or 'self'\n // }\n\n },\n\n /**\n * @override\n */\n getInitialData: function (option, ecModel) {\n // Create a virtual root.\n var root = {\n name: option.name,\n children: option.data\n };\n completeTreeValue(root);\n var levels = option.levels || []; // Used in \"visual priority\" in `treemapVisual.js`.\n // This way is a little tricky, must satisfy the precondition:\n // 1. There is no `treeNode.getModel('itemStyle.xxx')` used.\n // 2. The `Model.prototype.getModel()` will not use any clone-like way.\n\n var designatedVisualItemStyle = this.designatedVisualItemStyle = {};\n var designatedVisualModel = new Model({\n itemStyle: designatedVisualItemStyle\n }, this, ecModel);\n levels = option.levels = setDefault(levels, ecModel);\n var levelModels = zrUtil.map(levels || [], function (levelDefine) {\n return new Model(levelDefine, designatedVisualModel, ecModel);\n }, this); // Make sure always a new tree is created when setOption,\n // in TreemapView, we check whether oldTree === newTree\n // to choose mappings approach among old shapes and new shapes.\n\n var tree = Tree.createTree(root, this, beforeLink);\n\n function beforeLink(nodeData) {\n nodeData.wrapMethod('getItemModel', function (model, idx) {\n var node = tree.getNodeByDataIndex(idx);\n var levelModel = levelModels[node.depth]; // If no levelModel, we also need `designatedVisualModel`.\n\n model.parentModel = levelModel || designatedVisualModel;\n return model;\n });\n }\n\n return tree.data;\n },\n optionUpdated: function () {\n this.resetViewRoot();\n },\n\n /**\n * @override\n * @param {number} dataIndex\n * @param {boolean} [mutipleSeries=false]\n */\n formatTooltip: function (dataIndex) {\n var data = this.getData();\n var value = this.getRawValue(dataIndex);\n var formattedValue = zrUtil.isArray(value) ? addCommas(value[0]) : addCommas(value);\n var name = data.getName(dataIndex);\n return encodeHTML(name + ': ' + formattedValue);\n },\n\n /**\n * Add tree path to tooltip param\n *\n * @override\n * @param {number} dataIndex\n * @return {Object}\n */\n getDataParams: function (dataIndex) {\n var params = SeriesModel.prototype.getDataParams.apply(this, arguments);\n var node = this.getData().tree.getNodeByDataIndex(dataIndex);\n params.treePathInfo = wrapTreePathInfo(node, this);\n return params;\n },\n\n /**\n * @public\n * @param {Object} layoutInfo {\n * x: containerGroup x\n * y: containerGroup y\n * width: containerGroup width\n * height: containerGroup height\n * }\n */\n setLayoutInfo: function (layoutInfo) {\n /**\n * @readOnly\n * @type {Object}\n */\n this.layoutInfo = this.layoutInfo || {};\n zrUtil.extend(this.layoutInfo, layoutInfo);\n },\n\n /**\n * @param {string} id\n * @return {number} index\n */\n mapIdToIndex: function (id) {\n // A feature is implemented:\n // index is monotone increasing with the sequence of\n // input id at the first time.\n // This feature can make sure that each data item and its\n // mapped color have the same index between data list and\n // color list at the beginning, which is useful for user\n // to adjust data-color mapping.\n\n /**\n * @private\n * @type {Object}\n */\n var idIndexMap = this._idIndexMap;\n\n if (!idIndexMap) {\n idIndexMap = this._idIndexMap = zrUtil.createHashMap();\n /**\n * @private\n * @type {number}\n */\n\n this._idIndexMapCount = 0;\n }\n\n var index = idIndexMap.get(id);\n\n if (index == null) {\n idIndexMap.set(id, index = this._idIndexMapCount++);\n }\n\n return index;\n },\n getViewRoot: function () {\n return this._viewRoot;\n },\n\n /**\n * @param {module:echarts/data/Tree~Node} [viewRoot]\n */\n resetViewRoot: function (viewRoot) {\n viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot;\n var root = this.getRawData().tree.root;\n\n if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) {\n this._viewRoot = root;\n }\n }\n});\n/**\n * @param {Object} dataNode\n */\n\n\nfunction completeTreeValue(dataNode) {\n // Postorder travel tree.\n // If value of none-leaf node is not set,\n // calculate it by suming up the value of all children.\n var sum = 0;\n zrUtil.each(dataNode.children, function (child) {\n completeTreeValue(child);\n var childValue = child.value;\n zrUtil.isArray(childValue) && (childValue = childValue[0]);\n sum += childValue;\n });\n var thisValue = dataNode.value;\n\n if (zrUtil.isArray(thisValue)) {\n thisValue = thisValue[0];\n }\n\n if (thisValue == null || isNaN(thisValue)) {\n thisValue = sum;\n } // Value should not less than 0.\n\n\n if (thisValue < 0) {\n thisValue = 0;\n }\n\n zrUtil.isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue;\n}\n/**\n * set default to level configuration\n */\n\n\nfunction setDefault(levels, ecModel) {\n var globalColorList = ecModel.get('color');\n\n if (!globalColorList) {\n return;\n }\n\n levels = levels || [];\n var hasColorDefine;\n zrUtil.each(levels, function (levelDefine) {\n var model = new Model(levelDefine);\n var modelColor = model.get('color');\n\n if (model.get('itemStyle.color') || modelColor && modelColor !== 'none') {\n hasColorDefine = true;\n }\n });\n\n if (!hasColorDefine) {\n var level0 = levels[0] || (levels[0] = {});\n level0.color = globalColorList.slice();\n }\n\n return levels;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar DataDiffer = require(\"../../data/DataDiffer\");\n\nvar helper = require(\"../helper/treeHelper\");\n\nvar Breadcrumb = require(\"./Breadcrumb\");\n\nvar RoamController = require(\"../../component/helper/RoamController\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar animationUtil = require(\"../../util/animation\");\n\nvar makeStyleMapper = require(\"../../model/mixin/makeStyleMapper\");\n\nvar _format = require(\"../../util/format\");\n\nvar windowOpen = _format.windowOpen;\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 bind = zrUtil.bind;\nvar Group = graphic.Group;\nvar Rect = graphic.Rect;\nvar each = zrUtil.each;\nvar DRAG_THRESHOLD = 3;\nvar PATH_LABEL_NOAMAL = ['label'];\nvar PATH_LABEL_EMPHASIS = ['emphasis', 'label'];\nvar PATH_UPPERLABEL_NORMAL = ['upperLabel'];\nvar PATH_UPPERLABEL_EMPHASIS = ['emphasis', 'upperLabel'];\nvar Z_BASE = 10; // Should bigger than every z.\n\nvar Z_BG = 1;\nvar Z_CONTENT = 2;\nvar getItemStyleEmphasis = makeStyleMapper([['fill', 'color'], // `borderColor` and `borderWidth` has been occupied,\n// so use `stroke` to indicate the stroke of the rect.\n['stroke', 'strokeColor'], ['lineWidth', 'strokeWidth'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\n\nvar getItemStyleNormal = function (model) {\n // Normal style props should include emphasis style props.\n var itemStyle = getItemStyleEmphasis(model); // Clear styles set by emphasis.\n\n itemStyle.stroke = itemStyle.fill = itemStyle.lineWidth = null;\n return itemStyle;\n};\n\nvar _default = echarts.extendChartView({\n type: 'treemap',\n\n /**\n * @override\n */\n init: function (o, api) {\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n this._containerGroup;\n /**\n * @private\n * @type {Object.>}\n */\n\n this._storage = createStorage();\n /**\n * @private\n * @type {module:echarts/data/Tree}\n */\n\n this._oldTree;\n /**\n * @private\n * @type {module:echarts/chart/treemap/Breadcrumb}\n */\n\n this._breadcrumb;\n /**\n * @private\n * @type {module:echarts/component/helper/RoamController}\n */\n\n this._controller;\n /**\n * 'ready', 'animating'\n * @private\n */\n\n this._state = 'ready';\n },\n\n /**\n * @override\n */\n render: function (seriesModel, ecModel, api, payload) {\n var models = ecModel.findComponents({\n mainType: 'series',\n subType: 'treemap',\n query: payload\n });\n\n if (zrUtil.indexOf(models, seriesModel) < 0) {\n return;\n }\n\n this.seriesModel = seriesModel;\n this.api = api;\n this.ecModel = ecModel;\n var types = ['treemapZoomToNode', 'treemapRootToNode'];\n var targetInfo = helper.retrieveTargetInfo(payload, types, seriesModel);\n var payloadType = payload && payload.type;\n var layoutInfo = seriesModel.layoutInfo;\n var isInit = !this._oldTree;\n var thisStorage = this._storage; // Mark new root when action is treemapRootToNode.\n\n var reRoot = payloadType === 'treemapRootToNode' && targetInfo && thisStorage ? {\n rootNodeGroup: thisStorage.nodeGroup[targetInfo.node.getRawIndex()],\n direction: payload.direction\n } : null;\n\n var containerGroup = this._giveContainerGroup(layoutInfo);\n\n var renderResult = this._doRender(containerGroup, seriesModel, reRoot);\n\n !isInit && (!payloadType || payloadType === 'treemapZoomToNode' || payloadType === 'treemapRootToNode') ? this._doAnimation(containerGroup, renderResult, seriesModel, reRoot) : renderResult.renderFinally();\n\n this._resetController(api);\n\n this._renderBreadcrumb(seriesModel, api, targetInfo);\n },\n\n /**\n * @private\n */\n _giveContainerGroup: function (layoutInfo) {\n var containerGroup = this._containerGroup;\n\n if (!containerGroup) {\n // FIXME\n // 加一层containerGroup是为了clip,但是现在clip功能并没有实现。\n containerGroup = this._containerGroup = new Group();\n\n this._initEvents(containerGroup);\n\n this.group.add(containerGroup);\n }\n\n containerGroup.attr('position', [layoutInfo.x, layoutInfo.y]);\n return containerGroup;\n },\n\n /**\n * @private\n */\n _doRender: function (containerGroup, seriesModel, reRoot) {\n var thisTree = seriesModel.getData().tree;\n var oldTree = this._oldTree; // Clear last shape records.\n\n var lastsForAnimation = createStorage();\n var thisStorage = createStorage();\n var oldStorage = this._storage;\n var willInvisibleEls = [];\n var doRenderNode = zrUtil.curry(renderNode, seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls); // Notice: when thisTree and oldTree are the same tree (see list.cloneShallow),\n // the oldTree is actually losted, so we can not find all of the old graphic\n // elements from tree. So we use this stragegy: make element storage, move\n // from old storage to new storage, clear old storage.\n\n dualTravel(thisTree.root ? [thisTree.root] : [], oldTree && oldTree.root ? [oldTree.root] : [], containerGroup, thisTree === oldTree || !oldTree, 0); // Process all removing.\n\n var willDeleteEls = clearStorage(oldStorage);\n this._oldTree = thisTree;\n this._storage = thisStorage;\n return {\n lastsForAnimation: lastsForAnimation,\n willDeleteEls: willDeleteEls,\n renderFinally: renderFinally\n };\n\n function dualTravel(thisViewChildren, oldViewChildren, parentGroup, sameTree, depth) {\n // When 'render' is triggered by action,\n // 'this' and 'old' may be the same tree,\n // we use rawIndex in that case.\n if (sameTree) {\n oldViewChildren = thisViewChildren;\n each(thisViewChildren, function (child, index) {\n !child.isRemoved() && processNode(index, index);\n });\n } // Diff hierarchically (diff only in each subtree, but not whole).\n // because, consistency of view is important.\n else {\n new DataDiffer(oldViewChildren, thisViewChildren, getKey, getKey).add(processNode).update(processNode).remove(zrUtil.curry(processNode, null)).execute();\n }\n\n function getKey(node) {\n // Identify by name or raw index.\n return node.getId();\n }\n\n function processNode(newIndex, oldIndex) {\n var thisNode = newIndex != null ? thisViewChildren[newIndex] : null;\n var oldNode = oldIndex != null ? oldViewChildren[oldIndex] : null;\n var group = doRenderNode(thisNode, oldNode, parentGroup, depth);\n group && dualTravel(thisNode && thisNode.viewChildren || [], oldNode && oldNode.viewChildren || [], group, sameTree, depth + 1);\n }\n }\n\n function clearStorage(storage) {\n var willDeleteEls = createStorage();\n storage && each(storage, function (store, storageName) {\n var delEls = willDeleteEls[storageName];\n each(store, function (el) {\n el && (delEls.push(el), el.__tmWillDelete = 1);\n });\n });\n return willDeleteEls;\n }\n\n function renderFinally() {\n each(willDeleteEls, function (els) {\n each(els, function (el) {\n el.parent && el.parent.remove(el);\n });\n });\n each(willInvisibleEls, function (el) {\n el.invisible = true; // Setting invisible is for optimizing, so no need to set dirty,\n // just mark as invisible.\n\n el.dirty();\n });\n }\n },\n\n /**\n * @private\n */\n _doAnimation: function (containerGroup, renderResult, seriesModel, reRoot) {\n if (!seriesModel.get('animation')) {\n return;\n }\n\n var duration = seriesModel.get('animationDurationUpdate');\n var easing = seriesModel.get('animationEasing');\n var animationWrap = animationUtil.createWrap(); // Make delete animations.\n\n each(renderResult.willDeleteEls, function (store, storageName) {\n each(store, function (el, rawIndex) {\n if (el.invisible) {\n return;\n }\n\n var parent = el.parent; // Always has parent, and parent is nodeGroup.\n\n var target;\n\n if (reRoot && reRoot.direction === 'drillDown') {\n target = parent === reRoot.rootNodeGroup // This is the content element of view root.\n // Only `content` will enter this branch, because\n // `background` and `nodeGroup` will not be deleted.\n ? {\n shape: {\n x: 0,\n y: 0,\n width: parent.__tmNodeWidth,\n height: parent.__tmNodeHeight\n },\n style: {\n opacity: 0\n } // Others.\n\n } : {\n style: {\n opacity: 0\n }\n };\n } else {\n var targetX = 0;\n var targetY = 0;\n\n if (!parent.__tmWillDelete) {\n // Let node animate to right-bottom corner, cooperating with fadeout,\n // which is appropriate for user understanding.\n // Divided by 2 for reRoot rolling up effect.\n targetX = parent.__tmNodeWidth / 2;\n targetY = parent.__tmNodeHeight / 2;\n }\n\n target = storageName === 'nodeGroup' ? {\n position: [targetX, targetY],\n style: {\n opacity: 0\n }\n } : {\n shape: {\n x: targetX,\n y: targetY,\n width: 0,\n height: 0\n },\n style: {\n opacity: 0\n }\n };\n }\n\n target && animationWrap.add(el, target, duration, easing);\n });\n }); // Make other animations\n\n each(this._storage, function (store, storageName) {\n each(store, function (el, rawIndex) {\n var last = renderResult.lastsForAnimation[storageName][rawIndex];\n var target = {};\n\n if (!last) {\n return;\n }\n\n if (storageName === 'nodeGroup') {\n if (last.old) {\n target.position = el.position.slice();\n el.attr('position', last.old);\n }\n } else {\n if (last.old) {\n target.shape = zrUtil.extend({}, el.shape);\n el.setShape(last.old);\n }\n\n if (last.fadein) {\n el.setStyle('opacity', 0);\n target.style = {\n opacity: 1\n };\n } // When animation is stopped for succedent animation starting,\n // el.style.opacity might not be 1\n else if (el.style.opacity !== 1) {\n target.style = {\n opacity: 1\n };\n }\n }\n\n animationWrap.add(el, target, duration, easing);\n });\n }, this);\n this._state = 'animating';\n animationWrap.done(bind(function () {\n this._state = 'ready';\n renderResult.renderFinally();\n }, this)).start();\n },\n\n /**\n * @private\n */\n _resetController: function (api) {\n var controller = this._controller; // Init controller.\n\n if (!controller) {\n controller = this._controller = new RoamController(api.getZr());\n controller.enable(this.seriesModel.get('roam'));\n controller.on('pan', bind(this._onPan, this));\n controller.on('zoom', bind(this._onZoom, this));\n }\n\n var rect = new BoundingRect(0, 0, api.getWidth(), api.getHeight());\n controller.setPointerChecker(function (e, x, y) {\n return rect.contain(x, y);\n });\n },\n\n /**\n * @private\n */\n _clearController: function () {\n var controller = this._controller;\n\n if (controller) {\n controller.dispose();\n controller = null;\n }\n },\n\n /**\n * @private\n */\n _onPan: function (e) {\n if (this._state !== 'animating' && (Math.abs(e.dx) > DRAG_THRESHOLD || Math.abs(e.dy) > DRAG_THRESHOLD)) {\n // These param must not be cached.\n var root = this.seriesModel.getData().tree.root;\n\n if (!root) {\n return;\n }\n\n var rootLayout = root.getLayout();\n\n if (!rootLayout) {\n return;\n }\n\n this.api.dispatchAction({\n type: 'treemapMove',\n from: this.uid,\n seriesId: this.seriesModel.id,\n rootRect: {\n x: rootLayout.x + e.dx,\n y: rootLayout.y + e.dy,\n width: rootLayout.width,\n height: rootLayout.height\n }\n });\n }\n },\n\n /**\n * @private\n */\n _onZoom: function (e) {\n var mouseX = e.originX;\n var mouseY = e.originY;\n\n if (this._state !== 'animating') {\n // These param must not be cached.\n var root = this.seriesModel.getData().tree.root;\n\n if (!root) {\n return;\n }\n\n var rootLayout = root.getLayout();\n\n if (!rootLayout) {\n return;\n }\n\n var rect = new BoundingRect(rootLayout.x, rootLayout.y, rootLayout.width, rootLayout.height);\n var layoutInfo = this.seriesModel.layoutInfo; // Transform mouse coord from global to containerGroup.\n\n mouseX -= layoutInfo.x;\n mouseY -= layoutInfo.y; // Scale root bounding rect.\n\n var m = matrix.create();\n matrix.translate(m, m, [-mouseX, -mouseY]);\n matrix.scale(m, m, [e.scale, e.scale]);\n matrix.translate(m, m, [mouseX, mouseY]);\n rect.applyTransform(m);\n this.api.dispatchAction({\n type: 'treemapRender',\n from: this.uid,\n seriesId: this.seriesModel.id,\n rootRect: {\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n }\n });\n }\n },\n\n /**\n * @private\n */\n _initEvents: function (containerGroup) {\n containerGroup.on('click', function (e) {\n if (this._state !== 'ready') {\n return;\n }\n\n var nodeClick = this.seriesModel.get('nodeClick', true);\n\n if (!nodeClick) {\n return;\n }\n\n var targetInfo = this.findTarget(e.offsetX, e.offsetY);\n\n if (!targetInfo) {\n return;\n }\n\n var node = targetInfo.node;\n\n if (node.getLayout().isLeafRoot) {\n this._rootToNode(targetInfo);\n } else {\n if (nodeClick === 'zoomToNode') {\n this._zoomToNode(targetInfo);\n } else if (nodeClick === 'link') {\n var itemModel = node.hostTree.data.getItemModel(node.dataIndex);\n var link = itemModel.get('link', true);\n var linkTarget = itemModel.get('target', true) || 'blank';\n link && windowOpen(link, linkTarget);\n }\n }\n }, this);\n },\n\n /**\n * @private\n */\n _renderBreadcrumb: function (seriesModel, api, targetInfo) {\n if (!targetInfo) {\n targetInfo = seriesModel.get('leafDepth', true) != null ? {\n node: seriesModel.getViewRoot() // FIXME\n // better way?\n // Find breadcrumb tail on center of containerGroup.\n\n } : this.findTarget(api.getWidth() / 2, api.getHeight() / 2);\n\n if (!targetInfo) {\n targetInfo = {\n node: seriesModel.getData().tree.root\n };\n }\n }\n\n (this._breadcrumb || (this._breadcrumb = new Breadcrumb(this.group))).render(seriesModel, api, targetInfo.node, bind(onSelect, this));\n\n function onSelect(node) {\n if (this._state !== 'animating') {\n helper.aboveViewRoot(seriesModel.getViewRoot(), node) ? this._rootToNode({\n node: node\n }) : this._zoomToNode({\n node: node\n });\n }\n }\n },\n\n /**\n * @override\n */\n remove: function () {\n this._clearController();\n\n this._containerGroup && this._containerGroup.removeAll();\n this._storage = createStorage();\n this._state = 'ready';\n this._breadcrumb && this._breadcrumb.remove();\n },\n dispose: function () {\n this._clearController();\n },\n\n /**\n * @private\n */\n _zoomToNode: function (targetInfo) {\n this.api.dispatchAction({\n type: 'treemapZoomToNode',\n from: this.uid,\n seriesId: this.seriesModel.id,\n targetNode: targetInfo.node\n });\n },\n\n /**\n * @private\n */\n _rootToNode: function (targetInfo) {\n this.api.dispatchAction({\n type: 'treemapRootToNode',\n from: this.uid,\n seriesId: this.seriesModel.id,\n targetNode: targetInfo.node\n });\n },\n\n /**\n * @public\n * @param {number} x Global coord x.\n * @param {number} y Global coord y.\n * @return {Object} info If not found, return undefined;\n * @return {number} info.node Target node.\n * @return {number} info.offsetX x refer to target node.\n * @return {number} info.offsetY y refer to target node.\n */\n findTarget: function (x, y) {\n var targetInfo;\n var viewRoot = this.seriesModel.getViewRoot();\n viewRoot.eachNode({\n attr: 'viewChildren',\n order: 'preorder'\n }, function (node) {\n var bgEl = this._storage.background[node.getRawIndex()]; // If invisible, there might be no element.\n\n\n if (bgEl) {\n var point = bgEl.transformCoordToLocal(x, y);\n var shape = bgEl.shape; // For performance consideration, dont use 'getBoundingRect'.\n\n if (shape.x <= point[0] && point[0] <= shape.x + shape.width && shape.y <= point[1] && point[1] <= shape.y + shape.height) {\n targetInfo = {\n node: node,\n offsetX: point[0],\n offsetY: point[1]\n };\n } else {\n return false; // Suppress visit subtree.\n }\n }\n }, this);\n return targetInfo;\n }\n});\n/**\n * @inner\n */\n\n\nfunction createStorage() {\n return {\n nodeGroup: [],\n background: [],\n content: []\n };\n}\n/**\n * @inner\n * @return Return undefined means do not travel further.\n */\n\n\nfunction renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth) {\n // Whether under viewRoot.\n if (!thisNode) {\n // Deleting nodes will be performed finally. This method just find\n // element from old storage, or create new element, set them to new\n // storage, and set styles.\n return;\n } // -------------------------------------------------------------------\n // Start of closure variables available in \"Procedures in renderNode\".\n\n\n var thisLayout = thisNode.getLayout();\n var data = seriesModel.getData(); // Only for enabling highlight/downplay. Clear firstly.\n // Because some node will not be rendered.\n\n data.setItemGraphicEl(thisNode.dataIndex, null);\n\n if (!thisLayout || !thisLayout.isInView) {\n return;\n }\n\n var thisWidth = thisLayout.width;\n var thisHeight = thisLayout.height;\n var borderWidth = thisLayout.borderWidth;\n var thisInvisible = thisLayout.invisible;\n var thisRawIndex = thisNode.getRawIndex();\n var oldRawIndex = oldNode && oldNode.getRawIndex();\n var thisViewChildren = thisNode.viewChildren;\n var upperHeight = thisLayout.upperHeight;\n var isParent = thisViewChildren && thisViewChildren.length;\n var itemStyleNormalModel = thisNode.getModel('itemStyle');\n var itemStyleEmphasisModel = thisNode.getModel('emphasis.itemStyle'); // End of closure ariables available in \"Procedures in renderNode\".\n // -----------------------------------------------------------------\n // Node group\n\n var group = giveGraphic('nodeGroup', Group);\n\n if (!group) {\n return;\n }\n\n parentGroup.add(group); // x,y are not set when el is above view root.\n\n group.attr('position', [thisLayout.x || 0, thisLayout.y || 0]);\n group.__tmNodeWidth = thisWidth;\n group.__tmNodeHeight = thisHeight;\n\n if (thisLayout.isAboveViewRoot) {\n return group;\n }\n\n var nodeModel = thisNode.getModel(); // Background\n\n var bg = giveGraphic('background', Rect, depth, Z_BG);\n bg && renderBackground(group, bg, isParent && thisLayout.upperLabelHeight); // No children, render content.\n\n if (isParent) {\n // Because of the implementation about \"traverse\" in graphic hover style, we\n // can not set hover listener on the \"group\" of non-leaf node. Otherwise the\n // hover event from the descendents will be listenered.\n if (graphic.isHighDownDispatcher(group)) {\n graphic.setAsHighDownDispatcher(group, false);\n }\n\n if (bg) {\n graphic.setAsHighDownDispatcher(bg, true); // Only for enabling highlight/downplay.\n\n data.setItemGraphicEl(thisNode.dataIndex, bg);\n }\n } else {\n var content = giveGraphic('content', Rect, depth, Z_CONTENT);\n content && renderContent(group, content);\n\n if (bg && graphic.isHighDownDispatcher(bg)) {\n graphic.setAsHighDownDispatcher(bg, false);\n }\n\n graphic.setAsHighDownDispatcher(group, true); // Only for enabling highlight/downplay.\n\n data.setItemGraphicEl(thisNode.dataIndex, group);\n }\n\n return group; // ----------------------------\n // | Procedures in renderNode |\n // ----------------------------\n\n function renderBackground(group, bg, useUpperLabel) {\n // For tooltip.\n bg.dataIndex = thisNode.dataIndex;\n bg.seriesIndex = seriesModel.seriesIndex;\n bg.setShape({\n x: 0,\n y: 0,\n width: thisWidth,\n height: thisHeight\n });\n\n if (thisInvisible) {\n // If invisible, do not set visual, otherwise the element will\n // change immediately before animation. We think it is OK to\n // remain its origin color when moving out of the view window.\n processInvisible(bg);\n } else {\n bg.invisible = false;\n var visualBorderColor = thisNode.getVisual('borderColor', true);\n var emphasisBorderColor = itemStyleEmphasisModel.get('borderColor');\n var normalStyle = getItemStyleNormal(itemStyleNormalModel);\n normalStyle.fill = visualBorderColor;\n var emphasisStyle = getItemStyleEmphasis(itemStyleEmphasisModel);\n emphasisStyle.fill = emphasisBorderColor;\n\n if (useUpperLabel) {\n var upperLabelWidth = thisWidth - 2 * borderWidth;\n prepareText(normalStyle, emphasisStyle, visualBorderColor, upperLabelWidth, upperHeight, {\n x: borderWidth,\n y: 0,\n width: upperLabelWidth,\n height: upperHeight\n });\n } // For old bg.\n else {\n normalStyle.text = emphasisStyle.text = null;\n }\n\n bg.setStyle(normalStyle);\n graphic.setElementHoverStyle(bg, emphasisStyle);\n }\n\n group.add(bg);\n }\n\n function renderContent(group, content) {\n // For tooltip.\n content.dataIndex = thisNode.dataIndex;\n content.seriesIndex = seriesModel.seriesIndex;\n var contentWidth = Math.max(thisWidth - 2 * borderWidth, 0);\n var contentHeight = Math.max(thisHeight - 2 * borderWidth, 0);\n content.culling = true;\n content.setShape({\n x: borderWidth,\n y: borderWidth,\n width: contentWidth,\n height: contentHeight\n });\n\n if (thisInvisible) {\n // If invisible, do not set visual, otherwise the element will\n // change immediately before animation. We think it is OK to\n // remain its origin color when moving out of the view window.\n processInvisible(content);\n } else {\n content.invisible = false;\n var visualColor = thisNode.getVisual('color', true);\n var normalStyle = getItemStyleNormal(itemStyleNormalModel);\n normalStyle.fill = visualColor;\n var emphasisStyle = getItemStyleEmphasis(itemStyleEmphasisModel);\n prepareText(normalStyle, emphasisStyle, visualColor, contentWidth, contentHeight);\n content.setStyle(normalStyle);\n graphic.setElementHoverStyle(content, emphasisStyle);\n }\n\n group.add(content);\n }\n\n function processInvisible(element) {\n // Delay invisible setting utill animation finished,\n // avoid element vanish suddenly before animation.\n !element.invisible && willInvisibleEls.push(element);\n }\n\n function prepareText(normalStyle, emphasisStyle, visualColor, width, height, upperLabelRect) {\n var defaultText = nodeModel.get('name');\n var normalLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL);\n var emphasisLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_EMPHASIS : PATH_LABEL_EMPHASIS);\n var isShow = normalLabelModel.getShallow('show');\n graphic.setLabelStyle(normalStyle, emphasisStyle, normalLabelModel, emphasisLabelModel, {\n defaultText: isShow ? defaultText : null,\n autoColor: visualColor,\n isRectText: true,\n labelFetcher: seriesModel,\n labelDataIndex: thisNode.dataIndex,\n labelProp: upperLabelRect ? 'upperLabel' : 'label'\n });\n addDrillDownIcon(normalStyle, upperLabelRect, thisLayout);\n addDrillDownIcon(emphasisStyle, upperLabelRect, thisLayout);\n upperLabelRect && (normalStyle.textRect = zrUtil.clone(upperLabelRect));\n normalStyle.truncate = isShow && normalLabelModel.get('ellipsis') ? {\n outerWidth: width,\n outerHeight: height,\n minChar: 2\n } : null;\n }\n\n function addDrillDownIcon(style, upperLabelRect, thisLayout) {\n var text = style.text;\n\n if (!upperLabelRect && thisLayout.isLeafRoot && text != null) {\n var iconChar = seriesModel.get('drillDownIcon', true);\n style.text = iconChar ? iconChar + ' ' + text : text;\n }\n }\n\n function giveGraphic(storageName, Ctor, depth, z) {\n var element = oldRawIndex != null && oldStorage[storageName][oldRawIndex];\n var lasts = lastsForAnimation[storageName];\n\n if (element) {\n // Remove from oldStorage\n oldStorage[storageName][oldRawIndex] = null;\n prepareAnimationWhenHasOld(lasts, element, storageName);\n } // If invisible and no old element, do not create new element (for optimizing).\n else if (!thisInvisible) {\n element = new Ctor({\n z: calculateZ(depth, z)\n });\n element.__tmDepth = depth;\n element.__tmStorageName = storageName;\n prepareAnimationWhenNoOld(lasts, element, storageName);\n } // Set to thisStorage\n\n\n return thisStorage[storageName][thisRawIndex] = element;\n }\n\n function prepareAnimationWhenHasOld(lasts, element, storageName) {\n var lastCfg = lasts[thisRawIndex] = {};\n lastCfg.old = storageName === 'nodeGroup' ? element.position.slice() : zrUtil.extend({}, element.shape);\n } // If a element is new, we need to find the animation start point carefully,\n // otherwise it will looks strange when 'zoomToNode'.\n\n\n function prepareAnimationWhenNoOld(lasts, element, storageName) {\n var lastCfg = lasts[thisRawIndex] = {};\n var parentNode = thisNode.parentNode;\n\n if (parentNode && (!reRoot || reRoot.direction === 'drillDown')) {\n var parentOldX = 0;\n var parentOldY = 0; // New nodes appear from right-bottom corner in 'zoomToNode' animation.\n // For convenience, get old bounding rect from background.\n\n var parentOldBg = lastsForAnimation.background[parentNode.getRawIndex()];\n\n if (!reRoot && parentOldBg && parentOldBg.old) {\n parentOldX = parentOldBg.old.width;\n parentOldY = parentOldBg.old.height;\n } // When no parent old shape found, its parent is new too,\n // so we can just use {x:0, y:0}.\n\n\n lastCfg.old = storageName === 'nodeGroup' ? [0, parentOldY] : {\n x: parentOldX,\n y: parentOldY,\n width: 0,\n height: 0\n };\n } // Fade in, user can be aware that these nodes are new.\n\n\n lastCfg.fadein = storageName !== 'nodeGroup';\n }\n} // We can not set all backgroud with the same z, Because the behaviour of\n// drill down and roll up differ background creation sequence from tree\n// hierarchy sequence, which cause that lowser background element overlap\n// upper ones. So we calculate z based on depth.\n// Moreover, we try to shrink down z interval to [0, 1] to avoid that\n// treemap with large z overlaps other components.\n\n\nfunction calculateZ(depth, zInLevel) {\n var zb = depth * Z_BASE + zInLevel;\n return (zb - 1) / zb;\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\nvar helper = require(\"../helper/treeHelper\");\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 * @file Treemap action\n */\nvar noop = function () {};\n\nvar actionTypes = ['treemapZoomToNode', 'treemapRender', 'treemapMove'];\n\nfor (var i = 0; i < actionTypes.length; i++) {\n echarts.registerAction({\n type: actionTypes[i],\n update: 'updateView'\n }, noop);\n}\n\necharts.registerAction({\n type: 'treemapRootToNode',\n update: 'updateView'\n}, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'series',\n subType: 'treemap',\n query: payload\n }, handleRootToNode);\n\n function handleRootToNode(model, index) {\n var types = ['treemapZoomToNode', 'treemapRootToNode'];\n var targetInfo = helper.retrieveTargetInfo(payload, types, model);\n\n if (targetInfo) {\n var originViewRoot = model.getViewRoot();\n\n if (originViewRoot) {\n payload.direction = helper.aboveViewRoot(originViewRoot, targetInfo.node) ? 'rollUp' : 'drillDown';\n }\n\n model.resetViewRoot(targetInfo.node);\n }\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\nvar MAX_SAFE_INTEGER = _number.MAX_SAFE_INTEGER;\n\nvar layout = require(\"../../util/layout\");\n\nvar helper = require(\"../helper/treeHelper\");\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* A third-party license is embeded for some of the code in this file:\n* The treemap layout implementation was originally copied from\n* \"d3.js\" with some modifications made for this project.\n* (See more details in the comment of the method \"squarify\" below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar retrieveValue = zrUtil.retrieve;\nvar each = zrUtil.each;\nvar PATH_BORDER_WIDTH = ['itemStyle', 'borderWidth'];\nvar PATH_GAP_WIDTH = ['itemStyle', 'gapWidth'];\nvar PATH_UPPER_LABEL_SHOW = ['upperLabel', 'show'];\nvar PATH_UPPER_LABEL_HEIGHT = ['upperLabel', 'height'];\n/**\n * @public\n */\n\nvar _default = {\n seriesType: 'treemap',\n reset: function (seriesModel, ecModel, api, payload) {\n // Layout result in each node:\n // {x, y, width, height, area, borderWidth}\n var ecWidth = api.getWidth();\n var ecHeight = api.getHeight();\n var seriesOption = seriesModel.option;\n var layoutInfo = layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n var size = seriesOption.size || []; // Compatible with ec2.\n\n var containerWidth = parsePercent(retrieveValue(layoutInfo.width, size[0]), ecWidth);\n var containerHeight = parsePercent(retrieveValue(layoutInfo.height, size[1]), ecHeight); // Fetch payload info.\n\n var payloadType = payload && payload.type;\n var types = ['treemapZoomToNode', 'treemapRootToNode'];\n var targetInfo = helper.retrieveTargetInfo(payload, types, seriesModel);\n var rootRect = payloadType === 'treemapRender' || payloadType === 'treemapMove' ? payload.rootRect : null;\n var viewRoot = seriesModel.getViewRoot();\n var viewAbovePath = helper.getPathToRoot(viewRoot);\n\n if (payloadType !== 'treemapMove') {\n var rootSize = payloadType === 'treemapZoomToNode' ? estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) : rootRect ? [rootRect.width, rootRect.height] : [containerWidth, containerHeight];\n var sort = seriesOption.sort;\n\n if (sort && sort !== 'asc' && sort !== 'desc') {\n sort = 'desc';\n }\n\n var options = {\n squareRatio: seriesOption.squareRatio,\n sort: sort,\n leafDepth: seriesOption.leafDepth\n }; // layout should be cleared because using updateView but not update.\n\n viewRoot.hostTree.clearLayouts(); // TODO\n // optimize: if out of view clip, do not layout.\n // But take care that if do not render node out of view clip,\n // how to calculate start po\n\n var viewRootLayout = {\n x: 0,\n y: 0,\n width: rootSize[0],\n height: rootSize[1],\n area: rootSize[0] * rootSize[1]\n };\n viewRoot.setLayout(viewRootLayout);\n squarify(viewRoot, options, false, 0); // Supplement layout.\n\n var viewRootLayout = viewRoot.getLayout();\n each(viewAbovePath, function (node, index) {\n var childValue = (viewAbovePath[index + 1] || viewRoot).getValue();\n node.setLayout(zrUtil.extend({\n dataExtent: [childValue, childValue],\n borderWidth: 0,\n upperHeight: 0\n }, viewRootLayout));\n });\n }\n\n var treeRoot = seriesModel.getData().tree.root;\n treeRoot.setLayout(calculateRootPosition(layoutInfo, rootRect, targetInfo), true);\n seriesModel.setLayoutInfo(layoutInfo); // FIXME\n // 现在没有clip功能,暂时取ec高宽。\n\n prunning(treeRoot, // Transform to base element coordinate system.\n new BoundingRect(-layoutInfo.x, -layoutInfo.y, ecWidth, ecHeight), viewAbovePath, viewRoot, 0);\n }\n};\n/**\n * Layout treemap with squarify algorithm.\n * The original presentation of this algorithm\n * was made by Mark Bruls, Kees Huizing, and Jarke J. van Wijk\n * .\n * The implementation of this algorithm was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * @protected\n * @param {module:echarts/data/Tree~TreeNode} node\n * @param {Object} options\n * @param {string} options.sort 'asc' or 'desc'\n * @param {number} options.squareRatio\n * @param {boolean} hideChildren\n * @param {number} depth\n */\n\nfunction squarify(node, options, hideChildren, depth) {\n var width;\n var height;\n\n if (node.isRemoved()) {\n return;\n }\n\n var thisLayout = node.getLayout();\n width = thisLayout.width;\n height = thisLayout.height; // Considering border and gap\n\n var nodeModel = node.getModel();\n var borderWidth = nodeModel.get(PATH_BORDER_WIDTH);\n var halfGapWidth = nodeModel.get(PATH_GAP_WIDTH) / 2;\n var upperLabelHeight = getUpperLabelHeight(nodeModel);\n var upperHeight = Math.max(borderWidth, upperLabelHeight);\n var layoutOffset = borderWidth - halfGapWidth;\n var layoutOffsetUpper = upperHeight - halfGapWidth;\n var nodeModel = node.getModel();\n node.setLayout({\n borderWidth: borderWidth,\n upperHeight: upperHeight,\n upperLabelHeight: upperLabelHeight\n }, true);\n width = mathMax(width - 2 * layoutOffset, 0);\n height = mathMax(height - layoutOffset - layoutOffsetUpper, 0);\n var totalArea = width * height;\n var viewChildren = initChildren(node, nodeModel, totalArea, options, hideChildren, depth);\n\n if (!viewChildren.length) {\n return;\n }\n\n var rect = {\n x: layoutOffset,\n y: layoutOffsetUpper,\n width: width,\n height: height\n };\n var rowFixedLength = mathMin(width, height);\n var best = Infinity; // the best row score so far\n\n var row = [];\n row.area = 0;\n\n for (var i = 0, len = viewChildren.length; i < len;) {\n var child = viewChildren[i];\n row.push(child);\n row.area += child.getLayout().area;\n var score = worst(row, rowFixedLength, options.squareRatio); // continue with this orientation\n\n if (score <= best) {\n i++;\n best = score;\n } // abort, and try a different orientation\n else {\n row.area -= row.pop().getLayout().area;\n position(row, rowFixedLength, rect, halfGapWidth, false);\n rowFixedLength = mathMin(rect.width, rect.height);\n row.length = row.area = 0;\n best = Infinity;\n }\n }\n\n if (row.length) {\n position(row, rowFixedLength, rect, halfGapWidth, true);\n }\n\n if (!hideChildren) {\n var childrenVisibleMin = nodeModel.get('childrenVisibleMin');\n\n if (childrenVisibleMin != null && totalArea < childrenVisibleMin) {\n hideChildren = true;\n }\n }\n\n for (var i = 0, len = viewChildren.length; i < len; i++) {\n squarify(viewChildren[i], options, hideChildren, depth + 1);\n }\n}\n/**\n * Set area to each child, and calculate data extent for visual coding.\n */\n\n\nfunction initChildren(node, nodeModel, totalArea, options, hideChildren, depth) {\n var viewChildren = node.children || [];\n var orderBy = options.sort;\n orderBy !== 'asc' && orderBy !== 'desc' && (orderBy = null);\n var overLeafDepth = options.leafDepth != null && options.leafDepth <= depth; // leafDepth has higher priority.\n\n if (hideChildren && !overLeafDepth) {\n return node.viewChildren = [];\n } // Sort children, order by desc.\n\n\n viewChildren = zrUtil.filter(viewChildren, function (child) {\n return !child.isRemoved();\n });\n sort(viewChildren, orderBy);\n var info = statistic(nodeModel, viewChildren, orderBy);\n\n if (info.sum === 0) {\n return node.viewChildren = [];\n }\n\n info.sum = filterByThreshold(nodeModel, totalArea, info.sum, orderBy, viewChildren);\n\n if (info.sum === 0) {\n return node.viewChildren = [];\n } // Set area to each child.\n\n\n for (var i = 0, len = viewChildren.length; i < len; i++) {\n var area = viewChildren[i].getValue() / info.sum * totalArea; // Do not use setLayout({...}, true), because it is needed to clear last layout.\n\n viewChildren[i].setLayout({\n area: area\n });\n }\n\n if (overLeafDepth) {\n viewChildren.length && node.setLayout({\n isLeafRoot: true\n }, true);\n viewChildren.length = 0;\n }\n\n node.viewChildren = viewChildren;\n node.setLayout({\n dataExtent: info.dataExtent\n }, true);\n return viewChildren;\n}\n/**\n * Consider 'visibleMin'. Modify viewChildren and get new sum.\n */\n\n\nfunction filterByThreshold(nodeModel, totalArea, sum, orderBy, orderedChildren) {\n // visibleMin is not supported yet when no option.sort.\n if (!orderBy) {\n return sum;\n }\n\n var visibleMin = nodeModel.get('visibleMin');\n var len = orderedChildren.length;\n var deletePoint = len; // Always travel from little value to big value.\n\n for (var i = len - 1; i >= 0; i--) {\n var value = orderedChildren[orderBy === 'asc' ? len - i - 1 : i].getValue();\n\n if (value / sum * totalArea < visibleMin) {\n deletePoint = i;\n sum -= value;\n }\n }\n\n orderBy === 'asc' ? orderedChildren.splice(0, len - deletePoint) : orderedChildren.splice(deletePoint, len - deletePoint);\n return sum;\n}\n/**\n * Sort\n */\n\n\nfunction sort(viewChildren, orderBy) {\n if (orderBy) {\n viewChildren.sort(function (a, b) {\n var diff = orderBy === 'asc' ? a.getValue() - b.getValue() : b.getValue() - a.getValue();\n return diff === 0 ? orderBy === 'asc' ? a.dataIndex - b.dataIndex : b.dataIndex - a.dataIndex : diff;\n });\n }\n\n return viewChildren;\n}\n/**\n * Statistic\n */\n\n\nfunction statistic(nodeModel, children, orderBy) {\n // Calculate sum.\n var sum = 0;\n\n for (var i = 0, len = children.length; i < len; i++) {\n sum += children[i].getValue();\n } // Statistic data extent for latter visual coding.\n // Notice: data extent should be calculate based on raw children\n // but not filtered view children, otherwise visual mapping will not\n // be stable when zoom (where children is filtered by visibleMin).\n\n\n var dimension = nodeModel.get('visualDimension');\n var dataExtent; // The same as area dimension.\n\n if (!children || !children.length) {\n dataExtent = [NaN, NaN];\n } else if (dimension === 'value' && orderBy) {\n dataExtent = [children[children.length - 1].getValue(), children[0].getValue()];\n orderBy === 'asc' && dataExtent.reverse();\n } // Other dimension.\n else {\n var dataExtent = [Infinity, -Infinity];\n each(children, function (child) {\n var value = child.getValue(dimension);\n value < dataExtent[0] && (dataExtent[0] = value);\n value > dataExtent[1] && (dataExtent[1] = value);\n });\n }\n\n return {\n sum: sum,\n dataExtent: dataExtent\n };\n}\n/**\n * Computes the score for the specified row,\n * as the worst aspect ratio.\n */\n\n\nfunction worst(row, rowFixedLength, ratio) {\n var areaMax = 0;\n var areaMin = Infinity;\n\n for (var i = 0, area, len = row.length; i < len; i++) {\n area = row[i].getLayout().area;\n\n if (area) {\n area < areaMin && (areaMin = area);\n area > areaMax && (areaMax = area);\n }\n }\n\n var squareArea = row.area * row.area;\n var f = rowFixedLength * rowFixedLength * ratio;\n return squareArea ? mathMax(f * areaMax / squareArea, squareArea / (f * areaMin)) : Infinity;\n}\n/**\n * Positions the specified row of nodes. Modifies `rect`.\n */\n\n\nfunction position(row, rowFixedLength, rect, halfGapWidth, flush) {\n // When rowFixedLength === rect.width,\n // it is horizontal subdivision,\n // rowFixedLength is the width of the subdivision,\n // rowOtherLength is the height of the subdivision,\n // and nodes will be positioned from left to right.\n // wh[idx0WhenH] means: when horizontal,\n // wh[idx0WhenH] => wh[0] => 'width'.\n // xy[idx1WhenH] => xy[1] => 'y'.\n var idx0WhenH = rowFixedLength === rect.width ? 0 : 1;\n var idx1WhenH = 1 - idx0WhenH;\n var xy = ['x', 'y'];\n var wh = ['width', 'height'];\n var last = rect[xy[idx0WhenH]];\n var rowOtherLength = rowFixedLength ? row.area / rowFixedLength : 0;\n\n if (flush || rowOtherLength > rect[wh[idx1WhenH]]) {\n rowOtherLength = rect[wh[idx1WhenH]]; // over+underflow\n }\n\n for (var i = 0, rowLen = row.length; i < rowLen; i++) {\n var node = row[i];\n var nodeLayout = {};\n var step = rowOtherLength ? node.getLayout().area / rowOtherLength : 0;\n var wh1 = nodeLayout[wh[idx1WhenH]] = mathMax(rowOtherLength - 2 * halfGapWidth, 0); // We use Math.max/min to avoid negative width/height when considering gap width.\n\n var remain = rect[xy[idx0WhenH]] + rect[wh[idx0WhenH]] - last;\n var modWH = i === rowLen - 1 || remain < step ? remain : step;\n var wh0 = nodeLayout[wh[idx0WhenH]] = mathMax(modWH - 2 * halfGapWidth, 0);\n nodeLayout[xy[idx1WhenH]] = rect[xy[idx1WhenH]] + mathMin(halfGapWidth, wh1 / 2);\n nodeLayout[xy[idx0WhenH]] = last + mathMin(halfGapWidth, wh0 / 2);\n last += modWH;\n node.setLayout(nodeLayout, true);\n }\n\n rect[xy[idx1WhenH]] += rowOtherLength;\n rect[wh[idx1WhenH]] -= rowOtherLength;\n} // Return [containerWidth, containerHeight] as default.\n\n\nfunction estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) {\n // If targetInfo.node exists, we zoom to the node,\n // so estimate whold width and heigth by target node.\n var currNode = (targetInfo || {}).node;\n var defaultSize = [containerWidth, containerHeight];\n\n if (!currNode || currNode === viewRoot) {\n return defaultSize;\n }\n\n var parent;\n var viewArea = containerWidth * containerHeight;\n var area = viewArea * seriesModel.option.zoomToNodeRatio;\n\n while (parent = currNode.parentNode) {\n // jshint ignore:line\n var sum = 0;\n var siblings = parent.children;\n\n for (var i = 0, len = siblings.length; i < len; i++) {\n sum += siblings[i].getValue();\n }\n\n var currNodeValue = currNode.getValue();\n\n if (currNodeValue === 0) {\n return defaultSize;\n }\n\n area *= sum / currNodeValue; // Considering border, suppose aspect ratio is 1.\n\n var parentModel = parent.getModel();\n var borderWidth = parentModel.get(PATH_BORDER_WIDTH);\n var upperHeight = Math.max(borderWidth, getUpperLabelHeight(parentModel, borderWidth));\n area += 4 * borderWidth * borderWidth + (3 * borderWidth + upperHeight) * Math.pow(area, 0.5);\n area > MAX_SAFE_INTEGER && (area = MAX_SAFE_INTEGER);\n currNode = parent;\n }\n\n area < viewArea && (area = viewArea);\n var scale = Math.pow(area / viewArea, 0.5);\n return [containerWidth * scale, containerHeight * scale];\n} // Root postion base on coord of containerGroup\n\n\nfunction calculateRootPosition(layoutInfo, rootRect, targetInfo) {\n if (rootRect) {\n return {\n x: rootRect.x,\n y: rootRect.y\n };\n }\n\n var defaultPosition = {\n x: 0,\n y: 0\n };\n\n if (!targetInfo) {\n return defaultPosition;\n } // If targetInfo is fetched by 'retrieveTargetInfo',\n // old tree and new tree are the same tree,\n // so the node still exists and we can visit it.\n\n\n var targetNode = targetInfo.node;\n var layout = targetNode.getLayout();\n\n if (!layout) {\n return defaultPosition;\n } // Transform coord from local to container.\n\n\n var targetCenter = [layout.width / 2, layout.height / 2];\n var node = targetNode;\n\n while (node) {\n var nodeLayout = node.getLayout();\n targetCenter[0] += nodeLayout.x;\n targetCenter[1] += nodeLayout.y;\n node = node.parentNode;\n }\n\n return {\n x: layoutInfo.width / 2 - targetCenter[0],\n y: layoutInfo.height / 2 - targetCenter[1]\n };\n} // Mark nodes visible for prunning when visual coding and rendering.\n// Prunning depends on layout and root position, so we have to do it after layout.\n\n\nfunction prunning(node, clipRect, viewAbovePath, viewRoot, depth) {\n var nodeLayout = node.getLayout();\n var nodeInViewAbovePath = viewAbovePath[depth];\n var isAboveViewRoot = nodeInViewAbovePath && nodeInViewAbovePath === node;\n\n if (nodeInViewAbovePath && !isAboveViewRoot || depth === viewAbovePath.length && node !== viewRoot) {\n return;\n }\n\n node.setLayout({\n // isInView means: viewRoot sub tree + viewAbovePath\n isInView: true,\n // invisible only means: outside view clip so that the node can not\n // see but still layout for animation preparation but not render.\n invisible: !isAboveViewRoot && !clipRect.intersect(nodeLayout),\n isAboveViewRoot: isAboveViewRoot\n }, true); // Transform to child coordinate.\n\n var childClipRect = new BoundingRect(clipRect.x - nodeLayout.x, clipRect.y - nodeLayout.y, clipRect.width, clipRect.height);\n each(node.viewChildren || [], function (child) {\n prunning(child, childClipRect, viewAbovePath, viewRoot, depth + 1);\n });\n}\n\nfunction getUpperLabelHeight(model) {\n return model.get(PATH_UPPER_LABEL_SHOW) ? model.get(PATH_UPPER_LABEL_HEIGHT) : 0;\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 VisualMapping = require(\"../../visual/VisualMapping\");\n\nvar zrColor = require(\"zrender/lib/tool/color\");\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*/\nvar isArray = zrUtil.isArray;\nvar ITEM_STYLE_NORMAL = 'itemStyle';\nvar _default = {\n seriesType: 'treemap',\n reset: function (seriesModel, ecModel, api, payload) {\n var tree = seriesModel.getData().tree;\n var root = tree.root;\n\n if (root.isRemoved()) {\n return;\n }\n\n travelTree(root, // Visual should calculate from tree root but not view root.\n {}, seriesModel.getViewRoot().getAncestors(), seriesModel);\n }\n};\n\nfunction travelTree(node, designatedVisual, viewRootAncestors, seriesModel) {\n var nodeModel = node.getModel();\n var nodeLayout = node.getLayout(); // Optimize\n\n if (!nodeLayout || nodeLayout.invisible || !nodeLayout.isInView) {\n return;\n }\n\n var nodeItemStyleModel = node.getModel(ITEM_STYLE_NORMAL);\n var visuals = buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel); // calculate border color\n\n var borderColor = nodeItemStyleModel.get('borderColor');\n var borderColorSaturation = nodeItemStyleModel.get('borderColorSaturation');\n var thisNodeColor;\n\n if (borderColorSaturation != null) {\n // For performance, do not always execute 'calculateColor'.\n thisNodeColor = calculateColor(visuals, node);\n borderColor = calculateBorderColor(borderColorSaturation, thisNodeColor);\n }\n\n node.setVisual('borderColor', borderColor);\n var viewChildren = node.viewChildren;\n\n if (!viewChildren || !viewChildren.length) {\n thisNodeColor = calculateColor(visuals, node); // Apply visual to this node.\n\n node.setVisual('color', thisNodeColor);\n } else {\n var mapping = buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren); // Designate visual to children.\n\n zrUtil.each(viewChildren, function (child, index) {\n // If higher than viewRoot, only ancestors of viewRoot is needed to visit.\n if (child.depth >= viewRootAncestors.length || child === viewRootAncestors[child.depth]) {\n var childVisual = mapVisual(nodeModel, visuals, child, index, mapping, seriesModel);\n travelTree(child, childVisual, viewRootAncestors, seriesModel);\n }\n });\n }\n}\n\nfunction buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel) {\n var visuals = zrUtil.extend({}, designatedVisual);\n var designatedVisualItemStyle = seriesModel.designatedVisualItemStyle;\n zrUtil.each(['color', 'colorAlpha', 'colorSaturation'], function (visualName) {\n // Priority: thisNode > thisLevel > parentNodeDesignated > seriesModel\n designatedVisualItemStyle[visualName] = designatedVisual[visualName];\n var val = nodeItemStyleModel.get(visualName);\n designatedVisualItemStyle[visualName] = null;\n val != null && (visuals[visualName] = val);\n });\n return visuals;\n}\n\nfunction calculateColor(visuals) {\n var color = getValueVisualDefine(visuals, 'color');\n\n if (color) {\n var colorAlpha = getValueVisualDefine(visuals, 'colorAlpha');\n var colorSaturation = getValueVisualDefine(visuals, 'colorSaturation');\n\n if (colorSaturation) {\n color = zrColor.modifyHSL(color, null, null, colorSaturation);\n }\n\n if (colorAlpha) {\n color = zrColor.modifyAlpha(color, colorAlpha);\n }\n\n return color;\n }\n}\n\nfunction calculateBorderColor(borderColorSaturation, thisNodeColor) {\n return thisNodeColor != null ? zrColor.modifyHSL(thisNodeColor, null, null, borderColorSaturation) : null;\n}\n\nfunction getValueVisualDefine(visuals, name) {\n var value = visuals[name];\n\n if (value != null && value !== 'none') {\n return value;\n }\n}\n\nfunction buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren) {\n if (!viewChildren || !viewChildren.length) {\n return;\n }\n\n var rangeVisual = getRangeVisual(nodeModel, 'color') || visuals.color != null && visuals.color !== 'none' && (getRangeVisual(nodeModel, 'colorAlpha') || getRangeVisual(nodeModel, 'colorSaturation'));\n\n if (!rangeVisual) {\n return;\n }\n\n var visualMin = nodeModel.get('visualMin');\n var visualMax = nodeModel.get('visualMax');\n var dataExtent = nodeLayout.dataExtent.slice();\n visualMin != null && visualMin < dataExtent[0] && (dataExtent[0] = visualMin);\n visualMax != null && visualMax > dataExtent[1] && (dataExtent[1] = visualMax);\n var colorMappingBy = nodeModel.get('colorMappingBy');\n var opt = {\n type: rangeVisual.name,\n dataExtent: dataExtent,\n visual: rangeVisual.range\n };\n\n if (opt.type === 'color' && (colorMappingBy === 'index' || colorMappingBy === 'id')) {\n opt.mappingMethod = 'category';\n opt.loop = true; // categories is ordinal, so do not set opt.categories.\n } else {\n opt.mappingMethod = 'linear';\n }\n\n var mapping = new VisualMapping(opt);\n mapping.__drColorMappingBy = colorMappingBy;\n return mapping;\n} // Notice: If we dont have the attribute 'colorRange', but only use\n// attribute 'color' to represent both concepts of 'colorRange' and 'color',\n// (It means 'colorRange' when 'color' is Array, means 'color' when not array),\n// this problem will be encountered:\n// If a level-1 node dont have children, and its siblings has children,\n// and colorRange is set on level-1, then the node can not be colored.\n// So we separate 'colorRange' and 'color' to different attributes.\n\n\nfunction getRangeVisual(nodeModel, name) {\n // 'colorRange', 'colorARange', 'colorSRange'.\n // If not exsits on this node, fetch from levels and series.\n var range = nodeModel.get(name);\n return isArray(range) && range.length ? {\n name: name,\n range: range\n } : null;\n}\n\nfunction mapVisual(nodeModel, visuals, child, index, mapping, seriesModel) {\n var childVisuals = zrUtil.extend({}, visuals);\n\n if (mapping) {\n var mappingType = mapping.type;\n var colorMappingBy = mappingType === 'color' && mapping.__drColorMappingBy;\n var value = colorMappingBy === 'index' ? index : colorMappingBy === 'id' ? seriesModel.mapIdToIndex(child.getId()) : child.getValue(nodeModel.get('visualDimension'));\n childVisuals[mappingType] = mapping.mapValueToVisual(value);\n }\n\n return childVisuals;\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\nrequire(\"../coord/polar/polarCreator\");\n\nrequire(\"./axis/AngleAxisView\");","\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\nrequire(\"../coord/cartesian/AxisModel\");\n\nrequire(\"./axis/CartesianAxisView\");","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar axisPointerModelHelper = require(\"./axisPointer/modelHelper\");\n\nvar axisTrigger = require(\"./axisPointer/axisTrigger\");\n\nrequire(\"./axisPointer/AxisPointerModel\");\n\nrequire(\"./axisPointer/AxisPointerView\");\n\nrequire(\"./axisPointer/CartesianAxisPointer\");\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// CartesianAxisPointer is not supposed to be required here. But consider\n// echarts.simple.js and online build tooltip, which only require gridSimple,\n// CartesianAxisPointer should be able to required somewhere.\necharts.registerPreprocessor(function (option) {\n // Always has a global axisPointerModel for default setting.\n if (option) {\n (!option.axisPointer || option.axisPointer.length === 0) && (option.axisPointer = {});\n var link = option.axisPointer.link; // Normalize to array to avoid object mergin. But if link\n // is not set, remain null/undefined, otherwise it will\n // override existent link setting.\n\n if (link && !zrUtil.isArray(link)) {\n option.axisPointer.link = [link];\n }\n }\n}); // This process should proformed after coordinate systems created\n// and series data processed. So put it on statistic processing stage.\n\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) {\n // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n // allAxesInfo should be updated when setOption performed.\n ecModel.getComponent('axisPointer').coordSysAxesInfo = axisPointerModelHelper.collect(ecModel, api);\n}); // Broadcast to all views.\n\necharts.registerAction({\n type: 'updateAxisPointer',\n event: 'updateAxisPointer',\n update: ':updateAxisPointer'\n}, axisTrigger);","\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*/\nvar AxisPointerModel = echarts.extendComponentModel({\n type: 'axisPointer',\n coordSysAxesInfo: null,\n defaultOption: {\n // 'auto' means that show when triggered by tooltip or handle.\n show: 'auto',\n // 'click' | 'mousemove' | 'none'\n triggerOn: null,\n // set default in AxisPonterView.js\n zlevel: 0,\n z: 50,\n type: 'line',\n // 'line' 'shadow' 'cross' 'none'.\n // axispointer triggered by tootip determine snap automatically,\n // see `modelHelper`.\n snap: false,\n triggerTooltip: true,\n value: null,\n status: null,\n // Init value depends on whether handle is used.\n // [group0, group1, ...]\n // Each group can be: {\n // mapper: function () {},\n // singleTooltip: 'multiple', // 'multiple' or 'single'\n // xAxisId: ...,\n // yAxisName: ...,\n // angleAxisIndex: ...\n // }\n // mapper: can be ignored.\n // input: {axisInfo, value}\n // output: {axisInfo, value}\n link: [],\n // Do not set 'auto' here, otherwise global animation: false\n // will not effect at this axispointer.\n animation: null,\n animationDurationUpdate: 200,\n lineStyle: {\n color: '#aaa',\n width: 1,\n type: 'solid'\n },\n shadowStyle: {\n color: 'rgba(150,150,150,0.3)'\n },\n label: {\n show: true,\n formatter: null,\n // string | Function\n precision: 'auto',\n // Or a number like 0, 1, 2 ...\n margin: 3,\n color: '#fff',\n padding: [5, 7, 5, 7],\n backgroundColor: 'auto',\n // default: axis line color\n borderColor: null,\n borderWidth: 0,\n shadowBlur: 3,\n shadowColor: '#aaa' // Considering applicability, common style should\n // better not have shadowOffset.\n // shadowOffsetX: 0,\n // shadowOffsetY: 2\n\n },\n handle: {\n show: false,\n\n /* eslint-disable */\n icon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z',\n // jshint ignore:line\n\n /* eslint-enable */\n size: 45,\n // handle margin is from symbol center to axis, which is stable when circular move.\n margin: 50,\n // color: '#1b8bbd'\n // color: '#2f4554'\n color: '#333',\n shadowBlur: 3,\n shadowColor: '#aaa',\n shadowOffsetX: 0,\n shadowOffsetY: 2,\n // For mobile performance\n throttle: 40\n }\n }\n});\nvar _default = AxisPointerModel;\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\nvar globalListener = require(\"./globalListener\");\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 AxisPointerView = echarts.extendComponentView({\n type: 'axisPointer',\n render: function (globalAxisPointerModel, ecModel, api) {\n var globalTooltipModel = ecModel.getComponent('tooltip');\n var triggerOn = globalAxisPointerModel.get('triggerOn') || globalTooltipModel && globalTooltipModel.get('triggerOn') || 'mousemove|click'; // Register global listener in AxisPointerView to enable\n // AxisPointerView to be independent to Tooltip.\n\n globalListener.register('axisPointer', api, function (currTrigger, e, dispatchAction) {\n // If 'none', it is not controlled by mouse totally.\n if (triggerOn !== 'none' && (currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0)) {\n dispatchAction({\n type: 'updateAxisPointer',\n currTrigger: currTrigger,\n x: e && e.offsetX,\n y: e && e.offsetY\n });\n }\n });\n },\n\n /**\n * @override\n */\n remove: function (ecModel, api) {\n globalListener.unregister(api.getZr(), 'axisPointer');\n AxisPointerView.superApply(this._model, 'remove', arguments);\n },\n\n /**\n * @override\n */\n dispose: function (ecModel, api) {\n globalListener.unregister('axisPointer', api);\n AxisPointerView.superApply(this._model, 'dispose', arguments);\n }\n});\nvar _default = AxisPointerView;\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 clazzUtil = require(\"../../util/clazz\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar axisPointerModelHelper = require(\"./modelHelper\");\n\nvar eventTool = require(\"zrender/lib/core/event\");\n\nvar throttleUtil = require(\"../../util/throttle\");\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*/\nvar inner = makeInner();\nvar clone = zrUtil.clone;\nvar bind = zrUtil.bind;\n/**\n * Base axis pointer class in 2D.\n * Implemenents {module:echarts/component/axis/IAxisPointer}.\n */\n\nfunction BaseAxisPointer() {}\n\nBaseAxisPointer.prototype = {\n /**\n * @private\n */\n _group: null,\n\n /**\n * @private\n */\n _lastGraphicKey: null,\n\n /**\n * @private\n */\n _handle: null,\n\n /**\n * @private\n */\n _dragging: false,\n\n /**\n * @private\n */\n _lastValue: null,\n\n /**\n * @private\n */\n _lastStatus: null,\n\n /**\n * @private\n */\n _payloadInfo: null,\n\n /**\n * In px, arbitrary value. Do not set too small,\n * no animation is ok for most cases.\n * @protected\n */\n animationThreshold: 15,\n\n /**\n * @implement\n */\n render: function (axisModel, axisPointerModel, api, forceRender) {\n var value = axisPointerModel.get('value');\n var status = axisPointerModel.get('status'); // Bind them to `this`, not in closure, otherwise they will not\n // be replaced when user calling setOption in not merge mode.\n\n this._axisModel = axisModel;\n this._axisPointerModel = axisPointerModel;\n this._api = api; // Optimize: `render` will be called repeatly during mouse move.\n // So it is power consuming if performing `render` each time,\n // especially on mobile device.\n\n if (!forceRender && this._lastValue === value && this._lastStatus === status) {\n return;\n }\n\n this._lastValue = value;\n this._lastStatus = status;\n var group = this._group;\n var handle = this._handle;\n\n if (!status || status === 'hide') {\n // Do not clear here, for animation better.\n group && group.hide();\n handle && handle.hide();\n return;\n }\n\n group && group.show();\n handle && handle.show(); // Otherwise status is 'show'\n\n var elOption = {};\n this.makeElOption(elOption, value, axisModel, axisPointerModel, api); // Enable change axis pointer type.\n\n var graphicKey = elOption.graphicKey;\n\n if (graphicKey !== this._lastGraphicKey) {\n this.clear(api);\n }\n\n this._lastGraphicKey = graphicKey;\n var moveAnimation = this._moveAnimation = this.determineAnimation(axisModel, axisPointerModel);\n\n if (!group) {\n group = this._group = new graphic.Group();\n this.createPointerEl(group, elOption, axisModel, axisPointerModel);\n this.createLabelEl(group, elOption, axisModel, axisPointerModel);\n api.getZr().add(group);\n } else {\n var doUpdateProps = zrUtil.curry(updateProps, axisPointerModel, moveAnimation);\n this.updatePointerEl(group, elOption, doUpdateProps, axisPointerModel);\n this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);\n }\n\n updateMandatoryProps(group, axisPointerModel, true);\n\n this._renderHandle(value);\n },\n\n /**\n * @implement\n */\n remove: function (api) {\n this.clear(api);\n },\n\n /**\n * @implement\n */\n dispose: function (api) {\n this.clear(api);\n },\n\n /**\n * @protected\n */\n determineAnimation: function (axisModel, axisPointerModel) {\n var animation = axisPointerModel.get('animation');\n var axis = axisModel.axis;\n var isCategoryAxis = axis.type === 'category';\n var useSnap = axisPointerModel.get('snap'); // Value axis without snap always do not snap.\n\n if (!useSnap && !isCategoryAxis) {\n return false;\n }\n\n if (animation === 'auto' || animation == null) {\n var animationThreshold = this.animationThreshold;\n\n if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {\n return true;\n } // It is important to auto animation when snap used. Consider if there is\n // a dataZoom, animation will be disabled when too many points exist, while\n // it will be enabled for better visual effect when little points exist.\n\n\n if (useSnap) {\n var seriesDataCount = axisPointerModelHelper.getAxisInfo(axisModel).seriesDataCount;\n var axisExtent = axis.getExtent(); // Approximate band width\n\n return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;\n }\n\n return false;\n }\n\n return animation === true;\n },\n\n /**\n * add {pointer, label, graphicKey} to elOption\n * @protected\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {// Shoule be implemenented by sub-class.\n },\n\n /**\n * @protected\n */\n createPointerEl: function (group, elOption, axisModel, axisPointerModel) {\n var pointerOption = elOption.pointer;\n\n if (pointerOption) {\n var pointerEl = inner(group).pointerEl = new graphic[pointerOption.type](clone(elOption.pointer));\n group.add(pointerEl);\n }\n },\n\n /**\n * @protected\n */\n createLabelEl: function (group, elOption, axisModel, axisPointerModel) {\n if (elOption.label) {\n var labelEl = inner(group).labelEl = new graphic.Rect(clone(elOption.label));\n group.add(labelEl);\n updateLabelShowHide(labelEl, axisPointerModel);\n }\n },\n\n /**\n * @protected\n */\n updatePointerEl: function (group, elOption, updateProps) {\n var pointerEl = inner(group).pointerEl;\n\n if (pointerEl && elOption.pointer) {\n pointerEl.setStyle(elOption.pointer.style);\n updateProps(pointerEl, {\n shape: elOption.pointer.shape\n });\n }\n },\n\n /**\n * @protected\n */\n updateLabelEl: function (group, elOption, updateProps, axisPointerModel) {\n var labelEl = inner(group).labelEl;\n\n if (labelEl) {\n labelEl.setStyle(elOption.label.style);\n updateProps(labelEl, {\n // Consider text length change in vertical axis, animation should\n // be used on shape, otherwise the effect will be weird.\n shape: elOption.label.shape,\n position: elOption.label.position\n });\n updateLabelShowHide(labelEl, axisPointerModel);\n }\n },\n\n /**\n * @private\n */\n _renderHandle: function (value) {\n if (this._dragging || !this.updateHandleTransform) {\n return;\n }\n\n var axisPointerModel = this._axisPointerModel;\n\n var zr = this._api.getZr();\n\n var handle = this._handle;\n var handleModel = axisPointerModel.getModel('handle');\n var status = axisPointerModel.get('status');\n\n if (!handleModel.get('show') || !status || status === 'hide') {\n handle && zr.remove(handle);\n this._handle = null;\n return;\n }\n\n var isInit;\n\n if (!this._handle) {\n isInit = true;\n handle = this._handle = graphic.createIcon(handleModel.get('icon'), {\n cursor: 'move',\n draggable: true,\n onmousemove: function (e) {\n // Fot mobile devicem, prevent screen slider on the button.\n eventTool.stop(e.event);\n },\n onmousedown: bind(this._onHandleDragMove, this, 0, 0),\n drift: bind(this._onHandleDragMove, this),\n ondragend: bind(this._onHandleDragEnd, this)\n });\n zr.add(handle);\n }\n\n updateMandatoryProps(handle, axisPointerModel, false); // update style\n\n var includeStyles = ['color', 'borderColor', 'borderWidth', 'opacity', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\n handle.setStyle(handleModel.getItemStyle(null, includeStyles)); // update position\n\n var handleSize = handleModel.get('size');\n\n if (!zrUtil.isArray(handleSize)) {\n handleSize = [handleSize, handleSize];\n }\n\n handle.attr('scale', [handleSize[0] / 2, handleSize[1] / 2]);\n throttleUtil.createOrUpdate(this, '_doDispatchAxisPointer', handleModel.get('throttle') || 0, 'fixRate');\n\n this._moveHandleToValue(value, isInit);\n },\n\n /**\n * @private\n */\n _moveHandleToValue: function (value, isInit) {\n updateProps(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps(this.getHandleTransform(value, this._axisModel, this._axisPointerModel)));\n },\n\n /**\n * @private\n */\n _onHandleDragMove: function (dx, dy) {\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n this._dragging = true; // Persistent for throttle.\n\n var trans = this.updateHandleTransform(getHandleTransProps(handle), [dx, dy], this._axisModel, this._axisPointerModel);\n this._payloadInfo = trans;\n handle.stopAnimation();\n handle.attr(getHandleTransProps(trans));\n inner(handle).lastProp = null;\n\n this._doDispatchAxisPointer();\n },\n\n /**\n * Throttled method.\n * @private\n */\n _doDispatchAxisPointer: function () {\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n var payloadInfo = this._payloadInfo;\n var axisModel = this._axisModel;\n\n this._api.dispatchAction({\n type: 'updateAxisPointer',\n x: payloadInfo.cursorPoint[0],\n y: payloadInfo.cursorPoint[1],\n tooltipOption: payloadInfo.tooltipOption,\n axesInfo: [{\n axisDim: axisModel.axis.dim,\n axisIndex: axisModel.componentIndex\n }]\n });\n },\n\n /**\n * @private\n */\n _onHandleDragEnd: function (moveAnimation) {\n this._dragging = false;\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n var value = this._axisPointerModel.get('value'); // Consider snap or categroy axis, handle may be not consistent with\n // axisPointer. So move handle to align the exact value position when\n // drag ended.\n\n\n this._moveHandleToValue(value); // For the effect: tooltip will be shown when finger holding on handle\n // button, and will be hidden after finger left handle button.\n\n\n this._api.dispatchAction({\n type: 'hideTip'\n });\n },\n\n /**\n * Should be implemenented by sub-class if support `handle`.\n * @protected\n * @param {number} value\n * @param {module:echarts/model/Model} axisModel\n * @param {module:echarts/model/Model} axisPointerModel\n * @return {Object} {position: [x, y], rotation: 0}\n */\n getHandleTransform: null,\n\n /**\n * * Should be implemenented by sub-class if support `handle`.\n * @protected\n * @param {Object} transform {position, rotation}\n * @param {Array.} delta [dx, dy]\n * @param {module:echarts/model/Model} axisModel\n * @param {module:echarts/model/Model} axisPointerModel\n * @return {Object} {position: [x, y], rotation: 0, cursorPoint: [x, y]}\n */\n updateHandleTransform: null,\n\n /**\n * @private\n */\n clear: function (api) {\n this._lastValue = null;\n this._lastStatus = null;\n var zr = api.getZr();\n var group = this._group;\n var handle = this._handle;\n\n if (zr && group) {\n this._lastGraphicKey = null;\n group && zr.remove(group);\n handle && zr.remove(handle);\n this._group = null;\n this._handle = null;\n this._payloadInfo = null;\n }\n },\n\n /**\n * @protected\n */\n doClear: function () {// Implemented by sub-class if necessary.\n },\n\n /**\n * @protected\n * @param {Array.} xy\n * @param {Array.} wh\n * @param {number} [xDimIndex=0] or 1\n */\n buildLabel: function (xy, wh, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x: xy[xDimIndex],\n y: xy[1 - xDimIndex],\n width: wh[xDimIndex],\n height: wh[1 - xDimIndex]\n };\n }\n};\nBaseAxisPointer.prototype.constructor = BaseAxisPointer;\n\nfunction updateProps(animationModel, moveAnimation, el, props) {\n // Animation optimize.\n if (!propsEqual(inner(el).lastProp, props)) {\n inner(el).lastProp = props;\n moveAnimation ? graphic.updateProps(el, props, animationModel) : (el.stopAnimation(), el.attr(props));\n }\n}\n\nfunction propsEqual(lastProps, newProps) {\n if (zrUtil.isObject(lastProps) && zrUtil.isObject(newProps)) {\n var equals = true;\n zrUtil.each(newProps, function (item, key) {\n equals = equals && propsEqual(lastProps[key], item);\n });\n return !!equals;\n } else {\n return lastProps === newProps;\n }\n}\n\nfunction updateLabelShowHide(labelEl, axisPointerModel) {\n labelEl[axisPointerModel.get('label.show') ? 'show' : 'hide']();\n}\n\nfunction getHandleTransProps(trans) {\n return {\n position: trans.position.slice(),\n rotation: trans.rotation || 0\n };\n}\n\nfunction updateMandatoryProps(group, axisPointerModel, silent) {\n var z = axisPointerModel.get('z');\n var zlevel = axisPointerModel.get('zlevel');\n group && group.traverse(function (el) {\n if (el.type !== 'group') {\n z != null && (el.z = z);\n zlevel != null && (el.zlevel = zlevel);\n el.silent = silent;\n }\n });\n}\n\nclazzUtil.enableClassExtend(BaseAxisPointer);\nvar _default = BaseAxisPointer;\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 BaseAxisPointer = require(\"./BaseAxisPointer\");\n\nvar viewHelper = require(\"./viewHelper\");\n\nvar cartesianAxisHelper = require(\"../../coord/cartesian/cartesianAxisHelper\");\n\nvar AxisView = require(\"../axis/AxisView\");\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 CartesianAxisPointer = BaseAxisPointer.extend({\n /**\n * @override\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n var axis = axisModel.axis;\n var grid = axis.grid;\n var axisPointerType = axisPointerModel.get('type');\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));\n\n if (axisPointerType && axisPointerType !== 'none') {\n var elStyle = viewHelper.buildElStyle(axisPointerModel);\n var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\n pointerOption.style = elStyle;\n elOption.graphicKey = pointerOption.type;\n elOption.pointer = pointerOption;\n }\n\n var layoutInfo = cartesianAxisHelper.layout(grid.model, axisModel);\n viewHelper.buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\n },\n\n /**\n * @override\n */\n getHandleTransform: function (value, axisModel, axisPointerModel) {\n var layoutInfo = cartesianAxisHelper.layout(axisModel.axis.grid.model, axisModel, {\n labelInside: false\n });\n layoutInfo.labelMargin = axisPointerModel.get('handle.margin');\n return {\n position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),\n rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\n };\n },\n\n /**\n * @override\n */\n updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {\n var axis = axisModel.axis;\n var grid = axis.grid;\n var axisExtent = axis.getGlobalExtent(true);\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n var dimIndex = axis.dim === 'x' ? 0 : 1;\n var currPosition = transform.position;\n currPosition[dimIndex] += delta[dimIndex];\n currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\n currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\n var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n var cursorPoint = [cursorOtherValue, cursorOtherValue];\n cursorPoint[dimIndex] = currPosition[dimIndex]; // Make tooltip do not overlap axisPointer and in the middle of the grid.\n\n var tooltipOptions = [{\n verticalAlign: 'middle'\n }, {\n align: 'center'\n }];\n return {\n position: currPosition,\n rotation: transform.rotation,\n cursorPoint: cursorPoint,\n tooltipOption: tooltipOptions[dimIndex]\n };\n }\n});\n\nfunction getCartesian(grid, axis) {\n var opt = {};\n opt[axis.dim + 'AxisIndex'] = axis.index;\n return grid.getCartesian(opt);\n}\n\nvar pointerShapeBuilder = {\n line: function (axis, pixelValue, otherExtent) {\n var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis));\n return {\n type: 'Line',\n subPixelOptimize: true,\n shape: targetShape\n };\n },\n shadow: function (axis, pixelValue, otherExtent) {\n var bandWidth = Math.max(1, axis.getBandWidth());\n var span = otherExtent[1] - otherExtent[0];\n return {\n type: 'Rect',\n shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis))\n };\n }\n};\n\nfunction getAxisDimIndex(axis) {\n return axis.dim === 'x' ? 0 : 1;\n}\n\nAxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer);\nvar _default = CartesianAxisPointer;\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 formatUtil = require(\"../../util/format\");\n\nvar BaseAxisPointer = require(\"./BaseAxisPointer\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar viewHelper = require(\"./viewHelper\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar AxisBuilder = require(\"../axis/AxisBuilder\");\n\nvar AxisView = require(\"../axis/AxisView\");\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 PolarAxisPointer = BaseAxisPointer.extend({\n /**\n * @override\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n var axis = axisModel.axis;\n\n if (axis.dim === 'angle') {\n this.animationThreshold = Math.PI / 18;\n }\n\n var polar = axis.polar;\n var otherAxis = polar.getOtherAxis(axis);\n var otherExtent = otherAxis.getExtent();\n var coordValue;\n coordValue = axis['dataTo' + formatUtil.capitalFirst(axis.dim)](value);\n var axisPointerType = axisPointerModel.get('type');\n\n if (axisPointerType && axisPointerType !== 'none') {\n var elStyle = viewHelper.buildElStyle(axisPointerModel);\n var pointerOption = pointerShapeBuilder[axisPointerType](axis, polar, coordValue, otherExtent, elStyle);\n pointerOption.style = elStyle;\n elOption.graphicKey = pointerOption.type;\n elOption.pointer = pointerOption;\n }\n\n var labelMargin = axisPointerModel.get('label.margin');\n var labelPos = getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin);\n viewHelper.buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos);\n } // Do not support handle, utill any user requires it.\n\n});\n\nfunction getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin) {\n var axis = axisModel.axis;\n var coord = axis.dataToCoord(value);\n var axisAngle = polar.getAngleAxis().getExtent()[0];\n axisAngle = axisAngle / 180 * Math.PI;\n var radiusExtent = polar.getRadiusAxis().getExtent();\n var position;\n var align;\n var verticalAlign;\n\n if (axis.dim === 'radius') {\n var transform = matrix.create();\n matrix.rotate(transform, transform, axisAngle);\n matrix.translate(transform, transform, [polar.cx, polar.cy]);\n position = graphic.applyTransform([coord, -labelMargin], transform);\n var labelRotation = axisModel.getModel('axisLabel').get('rotate') || 0;\n var labelLayout = AxisBuilder.innerTextLayout(axisAngle, labelRotation * Math.PI / 180, -1);\n align = labelLayout.textAlign;\n verticalAlign = labelLayout.textVerticalAlign;\n } else {\n // angle axis\n var r = radiusExtent[1];\n position = polar.coordToPoint([r + labelMargin, coord]);\n var cx = polar.cx;\n var cy = polar.cy;\n align = Math.abs(position[0] - cx) / r < 0.3 ? 'center' : position[0] > cx ? 'left' : 'right';\n verticalAlign = Math.abs(position[1] - cy) / r < 0.3 ? 'middle' : position[1] > cy ? 'top' : 'bottom';\n }\n\n return {\n position: position,\n align: align,\n verticalAlign: verticalAlign\n };\n}\n\nvar pointerShapeBuilder = {\n line: function (axis, polar, coordValue, otherExtent, elStyle) {\n return axis.dim === 'angle' ? {\n type: 'Line',\n shape: viewHelper.makeLineShape(polar.coordToPoint([otherExtent[0], coordValue]), polar.coordToPoint([otherExtent[1], coordValue]))\n } : {\n type: 'Circle',\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r: coordValue\n }\n };\n },\n shadow: function (axis, polar, coordValue, otherExtent, elStyle) {\n var bandWidth = Math.max(1, axis.getBandWidth());\n var radian = Math.PI / 180;\n return axis.dim === 'angle' ? {\n type: 'Sector',\n shape: viewHelper.makeSectorShape(polar.cx, polar.cy, otherExtent[0], otherExtent[1], // In ECharts y is negative if angle is positive\n (-coordValue - bandWidth / 2) * radian, (-coordValue + bandWidth / 2) * radian)\n } : {\n type: 'Sector',\n shape: viewHelper.makeSectorShape(polar.cx, polar.cy, coordValue - bandWidth / 2, coordValue + bandWidth / 2, 0, Math.PI * 2)\n };\n }\n};\nAxisView.registerAxisPointerClass('PolarAxisPointer', PolarAxisPointer);\nvar _default = PolarAxisPointer;\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 BaseAxisPointer = require(\"./BaseAxisPointer\");\n\nvar viewHelper = require(\"./viewHelper\");\n\nvar singleAxisHelper = require(\"../../coord/single/singleAxisHelper\");\n\nvar AxisView = require(\"../axis/AxisView\");\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 XY = ['x', 'y'];\nvar WH = ['width', 'height'];\nvar SingleAxisPointer = BaseAxisPointer.extend({\n /**\n * @override\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n var axis = axisModel.axis;\n var coordSys = axis.coordinateSystem;\n var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis));\n var pixelValue = coordSys.dataToPoint(value)[0];\n var axisPointerType = axisPointerModel.get('type');\n\n if (axisPointerType && axisPointerType !== 'none') {\n var elStyle = viewHelper.buildElStyle(axisPointerModel);\n var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\n pointerOption.style = elStyle;\n elOption.graphicKey = pointerOption.type;\n elOption.pointer = pointerOption;\n }\n\n var layoutInfo = singleAxisHelper.layout(axisModel);\n viewHelper.buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\n },\n\n /**\n * @override\n */\n getHandleTransform: function (value, axisModel, axisPointerModel) {\n var layoutInfo = singleAxisHelper.layout(axisModel, {\n labelInside: false\n });\n layoutInfo.labelMargin = axisPointerModel.get('handle.margin');\n return {\n position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),\n rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\n };\n },\n\n /**\n * @override\n */\n updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {\n var axis = axisModel.axis;\n var coordSys = axis.coordinateSystem;\n var dimIndex = getPointDimIndex(axis);\n var axisExtent = getGlobalExtent(coordSys, dimIndex);\n var currPosition = transform.position;\n currPosition[dimIndex] += delta[dimIndex];\n currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\n currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\n var otherExtent = getGlobalExtent(coordSys, 1 - dimIndex);\n var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n var cursorPoint = [cursorOtherValue, cursorOtherValue];\n cursorPoint[dimIndex] = currPosition[dimIndex];\n return {\n position: currPosition,\n rotation: transform.rotation,\n cursorPoint: cursorPoint,\n tooltipOption: {\n verticalAlign: 'middle'\n }\n };\n }\n});\nvar pointerShapeBuilder = {\n line: function (axis, pixelValue, otherExtent) {\n var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getPointDimIndex(axis));\n return {\n type: 'Line',\n subPixelOptimize: true,\n shape: targetShape\n };\n },\n shadow: function (axis, pixelValue, otherExtent) {\n var bandWidth = axis.getBandWidth();\n var span = otherExtent[1] - otherExtent[0];\n return {\n type: 'Rect',\n shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getPointDimIndex(axis))\n };\n }\n};\n\nfunction getPointDimIndex(axis) {\n return axis.isHorizontal() ? 0 : 1;\n}\n\nfunction getGlobalExtent(coordSys, dimIndex) {\n var rect = coordSys.getRect();\n return [rect[XY[dimIndex]], rect[XY[dimIndex]] + rect[WH[dimIndex]]];\n}\n\nAxisView.registerAxisPointerClass('SingleAxisPointer', SingleAxisPointer);\nvar _default = SingleAxisPointer;\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 _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar modelHelper = require(\"./modelHelper\");\n\nvar findPointFromSeries = require(\"./findPointFromSeries\");\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 each = zrUtil.each;\nvar curry = zrUtil.curry;\nvar inner = makeInner();\n/**\n * Basic logic: check all axis, if they do not demand show/highlight,\n * then hide/downplay them.\n *\n * @param {Object} coordSysAxesInfo\n * @param {Object} payload\n * @param {string} [payload.currTrigger] 'click' | 'mousemove' | 'leave'\n * @param {Array.} [payload.x] x and y, which are mandatory, specify a point to\n * trigger axisPointer and tooltip.\n * @param {Array.} [payload.y] x and y, which are mandatory, specify a point to\n * trigger axisPointer and tooltip.\n * @param {Object} [payload.seriesIndex] finder, optional, restrict target axes.\n * @param {Object} [payload.dataIndex] finder, restrict target axes.\n * @param {Object} [payload.axesInfo] finder, restrict target axes.\n * [{\n * axisDim: 'x'|'y'|'angle'|...,\n * axisIndex: ...,\n * value: ...\n * }, ...]\n * @param {Function} [payload.dispatchAction]\n * @param {Object} [payload.tooltipOption]\n * @param {Object|Array.|Function} [payload.position] Tooltip position,\n * which can be specified in dispatchAction\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @return {Object} content of event obj for echarts.connect.\n */\n\nfunction _default(payload, ecModel, api) {\n var currTrigger = payload.currTrigger;\n var point = [payload.x, payload.y];\n var finder = payload;\n var dispatchAction = payload.dispatchAction || zrUtil.bind(api.dispatchAction, api);\n var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo; // Pending\n // See #6121. But we are not able to reproduce it yet.\n\n if (!coordSysAxesInfo) {\n return;\n }\n\n if (illegalPoint(point)) {\n // Used in the default behavior of `connection`: use the sample seriesIndex\n // and dataIndex. And also used in the tooltipView trigger.\n point = findPointFromSeries({\n seriesIndex: finder.seriesIndex,\n // Do not use dataIndexInside from other ec instance.\n // FIXME: auto detect it?\n dataIndex: finder.dataIndex\n }, ecModel).point;\n }\n\n var isIllegalPoint = illegalPoint(point); // Axis and value can be specified when calling dispatchAction({type: 'updateAxisPointer'}).\n // Notice: In this case, it is difficult to get the `point` (which is necessary to show\n // tooltip, so if point is not given, we just use the point found by sample seriesIndex\n // and dataIndex.\n\n var inputAxesInfo = finder.axesInfo;\n var axesInfo = coordSysAxesInfo.axesInfo;\n var shouldHide = currTrigger === 'leave' || illegalPoint(point);\n var outputFinder = {};\n var showValueMap = {};\n var dataByCoordSys = {\n list: [],\n map: {}\n };\n var updaters = {\n showPointer: curry(showPointer, showValueMap),\n showTooltip: curry(showTooltip, dataByCoordSys)\n }; // Process for triggered axes.\n\n each(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) {\n // If a point given, it must be contained by the coordinate system.\n var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point);\n each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) {\n var axis = axisInfo.axis;\n var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo); // If no inputAxesInfo, no axis is restricted.\n\n if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) {\n var val = inputAxisInfo && inputAxisInfo.value;\n\n if (val == null && !isIllegalPoint) {\n val = axis.pointToData(point);\n }\n\n val != null && processOnAxis(axisInfo, val, updaters, false, outputFinder);\n }\n });\n }); // Process for linked axes.\n\n var linkTriggers = {};\n each(axesInfo, function (tarAxisInfo, tarKey) {\n var linkGroup = tarAxisInfo.linkGroup; // If axis has been triggered in the previous stage, it should not be triggered by link.\n\n if (linkGroup && !showValueMap[tarKey]) {\n each(linkGroup.axesInfo, function (srcAxisInfo, srcKey) {\n var srcValItem = showValueMap[srcKey]; // If srcValItem exist, source axis is triggered, so link to target axis.\n\n if (srcAxisInfo !== tarAxisInfo && srcValItem) {\n var val = srcValItem.value;\n linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo))));\n linkTriggers[tarAxisInfo.key] = val;\n }\n });\n }\n });\n each(linkTriggers, function (val, tarKey) {\n processOnAxis(axesInfo[tarKey], val, updaters, true, outputFinder);\n });\n updateModelActually(showValueMap, axesInfo, outputFinder);\n dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction);\n dispatchHighDownActually(axesInfo, dispatchAction, api);\n return outputFinder;\n}\n\nfunction processOnAxis(axisInfo, newValue, updaters, dontSnap, outputFinder) {\n var axis = axisInfo.axis;\n\n if (axis.scale.isBlank() || !axis.containData(newValue)) {\n return;\n }\n\n if (!axisInfo.involveSeries) {\n updaters.showPointer(axisInfo, newValue);\n return;\n } // Heavy calculation. So put it after axis.containData checking.\n\n\n var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);\n var payloadBatch = payloadInfo.payloadBatch;\n var snapToValue = payloadInfo.snapToValue; // Fill content of event obj for echarts.connect.\n // By default use the first involved series data as a sample to connect.\n\n if (payloadBatch[0] && outputFinder.seriesIndex == null) {\n zrUtil.extend(outputFinder, payloadBatch[0]);\n } // If no linkSource input, this process is for collecting link\n // target, where snap should not be accepted.\n\n\n if (!dontSnap && axisInfo.snap) {\n if (axis.containData(snapToValue) && snapToValue != null) {\n newValue = snapToValue;\n }\n }\n\n updaters.showPointer(axisInfo, newValue, payloadBatch, outputFinder); // Tooltip should always be snapToValue, otherwise there will be\n // incorrect \"axis value ~ series value\" mapping displayed in tooltip.\n\n updaters.showTooltip(axisInfo, payloadInfo, snapToValue);\n}\n\nfunction buildPayloadsBySeries(value, axisInfo) {\n var axis = axisInfo.axis;\n var dim = axis.dim;\n var snapToValue = value;\n var payloadBatch = [];\n var minDist = Number.MAX_VALUE;\n var minDiff = -1;\n each(axisInfo.seriesModels, function (series, idx) {\n var dataDim = series.getData().mapDimension(dim, true);\n var seriesNestestValue;\n var dataIndices;\n\n if (series.getAxisTooltipData) {\n var result = series.getAxisTooltipData(dataDim, value, axis);\n dataIndices = result.dataIndices;\n seriesNestestValue = result.nestestValue;\n } else {\n dataIndices = series.getData().indicesOfNearest(dataDim[0], value, // Add a threshold to avoid find the wrong dataIndex\n // when data length is not same.\n // false,\n axis.type === 'category' ? 0.5 : null);\n\n if (!dataIndices.length) {\n return;\n }\n\n seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]);\n }\n\n if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {\n return;\n }\n\n var diff = value - seriesNestestValue;\n var dist = Math.abs(diff); // Consider category case\n\n if (dist <= minDist) {\n if (dist < minDist || diff >= 0 && minDiff < 0) {\n minDist = dist;\n minDiff = diff;\n snapToValue = seriesNestestValue;\n payloadBatch.length = 0;\n }\n\n each(dataIndices, function (dataIndex) {\n payloadBatch.push({\n seriesIndex: series.seriesIndex,\n dataIndexInside: dataIndex,\n dataIndex: series.getData().getRawIndex(dataIndex)\n });\n });\n }\n });\n return {\n payloadBatch: payloadBatch,\n snapToValue: snapToValue\n };\n}\n\nfunction showPointer(showValueMap, axisInfo, value, payloadBatch) {\n showValueMap[axisInfo.key] = {\n value: value,\n payloadBatch: payloadBatch\n };\n}\n\nfunction showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) {\n var payloadBatch = payloadInfo.payloadBatch;\n var axis = axisInfo.axis;\n var axisModel = axis.model;\n var axisPointerModel = axisInfo.axisPointerModel; // If no data, do not create anything in dataByCoordSys,\n // whose length will be used to judge whether dispatch action.\n\n if (!axisInfo.triggerTooltip || !payloadBatch.length) {\n return;\n }\n\n var coordSysModel = axisInfo.coordSys.model;\n var coordSysKey = modelHelper.makeKey(coordSysModel);\n var coordSysItem = dataByCoordSys.map[coordSysKey];\n\n if (!coordSysItem) {\n coordSysItem = dataByCoordSys.map[coordSysKey] = {\n coordSysId: coordSysModel.id,\n coordSysIndex: coordSysModel.componentIndex,\n coordSysType: coordSysModel.type,\n coordSysMainType: coordSysModel.mainType,\n dataByAxis: []\n };\n dataByCoordSys.list.push(coordSysItem);\n }\n\n coordSysItem.dataByAxis.push({\n axisDim: axis.dim,\n axisIndex: axisModel.componentIndex,\n axisType: axisModel.type,\n axisId: axisModel.id,\n value: value,\n // Caustion: viewHelper.getValueLabel is actually on \"view stage\", which\n // depends that all models have been updated. So it should not be performed\n // here. Considering axisPointerModel used here is volatile, which is hard\n // to be retrieve in TooltipView, we prepare parameters here.\n valueLabelOpt: {\n precision: axisPointerModel.get('label.precision'),\n formatter: axisPointerModel.get('label.formatter')\n },\n seriesDataIndices: payloadBatch.slice()\n });\n}\n\nfunction updateModelActually(showValueMap, axesInfo, outputFinder) {\n var outputAxesInfo = outputFinder.axesInfo = []; // Basic logic: If no 'show' required, 'hide' this axisPointer.\n\n each(axesInfo, function (axisInfo, key) {\n var option = axisInfo.axisPointerModel.option;\n var valItem = showValueMap[key];\n\n if (valItem) {\n !axisInfo.useHandle && (option.status = 'show');\n option.value = valItem.value; // For label formatter param and highlight.\n\n option.seriesDataIndices = (valItem.payloadBatch || []).slice();\n } // When always show (e.g., handle used), remain\n // original value and status.\n else {\n // If hide, value still need to be set, consider\n // click legend to toggle axis blank.\n !axisInfo.useHandle && (option.status = 'hide');\n } // If status is 'hide', should be no info in payload.\n\n\n option.status === 'show' && outputAxesInfo.push({\n axisDim: axisInfo.axis.dim,\n axisIndex: axisInfo.axis.model.componentIndex,\n value: option.value\n });\n });\n}\n\nfunction dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction) {\n // Basic logic: If no showTip required, hideTip will be dispatched.\n if (illegalPoint(point) || !dataByCoordSys.list.length) {\n dispatchAction({\n type: 'hideTip'\n });\n return;\n } // In most case only one axis (or event one series is used). It is\n // convinient to fetch payload.seriesIndex and payload.dataIndex\n // dirtectly. So put the first seriesIndex and dataIndex of the first\n // axis on the payload.\n\n\n var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};\n dispatchAction({\n type: 'showTip',\n escapeConnect: true,\n x: point[0],\n y: point[1],\n tooltipOption: payload.tooltipOption,\n position: payload.position,\n dataIndexInside: sampleItem.dataIndexInside,\n dataIndex: sampleItem.dataIndex,\n seriesIndex: sampleItem.seriesIndex,\n dataByCoordSys: dataByCoordSys.list\n });\n}\n\nfunction dispatchHighDownActually(axesInfo, dispatchAction, api) {\n // FIXME\n // highlight status modification shoule be a stage of main process?\n // (Consider confilct (e.g., legend and axisPointer) and setOption)\n var zr = api.getZr();\n var highDownKey = 'axisPointerLastHighlights';\n var lastHighlights = inner(zr)[highDownKey] || {};\n var newHighlights = inner(zr)[highDownKey] = {}; // Update highlight/downplay status according to axisPointer model.\n // Build hash map and remove duplicate incidentally.\n\n each(axesInfo, function (axisInfo, key) {\n var option = axisInfo.axisPointerModel.option;\n option.status === 'show' && each(option.seriesDataIndices, function (batchItem) {\n var key = batchItem.seriesIndex + ' | ' + batchItem.dataIndex;\n newHighlights[key] = batchItem;\n });\n }); // Diff.\n\n var toHighlight = [];\n var toDownplay = [];\n zrUtil.each(lastHighlights, function (batchItem, key) {\n !newHighlights[key] && toDownplay.push(batchItem);\n });\n zrUtil.each(newHighlights, function (batchItem, key) {\n !lastHighlights[key] && toHighlight.push(batchItem);\n });\n toDownplay.length && api.dispatchAction({\n type: 'downplay',\n escapeConnect: true,\n batch: toDownplay\n });\n toHighlight.length && api.dispatchAction({\n type: 'highlight',\n escapeConnect: true,\n batch: toHighlight\n });\n}\n\nfunction findInputAxisInfo(inputAxesInfo, axisInfo) {\n for (var i = 0; i < (inputAxesInfo || []).length; i++) {\n var inputAxisInfo = inputAxesInfo[i];\n\n if (axisInfo.axis.dim === inputAxisInfo.axisDim && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) {\n return inputAxisInfo;\n }\n }\n}\n\nfunction makeMapperParam(axisInfo) {\n var axisModel = axisInfo.axis.model;\n var item = {};\n var dim = item.axisDim = axisInfo.axis.dim;\n item.axisIndex = item[dim + 'AxisIndex'] = axisModel.componentIndex;\n item.axisName = item[dim + 'AxisName'] = axisModel.name;\n item.axisId = item[dim + 'AxisId'] = axisModel.id;\n return item;\n}\n\nfunction illegalPoint(point) {\n return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);\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 modelUtil = require(\"../../util/model\");\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 {Object} finder contains {seriesIndex, dataIndex, dataIndexInside}\n * @param {module:echarts/model/Global} ecModel\n * @return {Object} {point: [x, y], el: ...} point Will not be null.\n */\nfunction _default(finder, ecModel) {\n var point = [];\n var seriesIndex = finder.seriesIndex;\n var seriesModel;\n\n if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) {\n return {\n point: []\n };\n }\n\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, finder);\n\n if (dataIndex == null || dataIndex < 0 || zrUtil.isArray(dataIndex)) {\n return {\n point: []\n };\n }\n\n var el = data.getItemGraphicEl(dataIndex);\n var coordSys = seriesModel.coordinateSystem;\n\n if (seriesModel.getTooltipPosition) {\n point = seriesModel.getTooltipPosition(dataIndex) || [];\n } else if (coordSys && coordSys.dataToPoint) {\n point = coordSys.dataToPoint(data.getValues(zrUtil.map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }), dataIndex, true)) || [];\n } else if (el) {\n // Use graphic bounding rect\n var rect = el.getBoundingRect().clone();\n rect.applyTransform(el.transform);\n point = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n }\n\n return {\n point: point,\n el: el\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\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*/\nvar inner = makeInner();\nvar each = zrUtil.each;\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n * @param {Function} handler\n * param: {string} currTrigger\n * param: {Array.} point\n */\n\nfunction register(key, api, handler) {\n if (env.node) {\n return;\n }\n\n var zr = api.getZr();\n inner(zr).records || (inner(zr).records = {});\n initGlobalListeners(zr, api);\n var record = inner(zr).records[key] || (inner(zr).records[key] = {});\n record.handler = handler;\n}\n\nfunction initGlobalListeners(zr, api) {\n if (inner(zr).initialized) {\n return;\n }\n\n inner(zr).initialized = true;\n useHandler('click', zrUtil.curry(doEnter, 'click'));\n useHandler('mousemove', zrUtil.curry(doEnter, 'mousemove')); // useHandler('mouseout', onLeave);\n\n useHandler('globalout', onLeave);\n\n function useHandler(eventType, cb) {\n zr.on(eventType, function (e) {\n var dis = makeDispatchAction(api);\n each(inner(zr).records, function (record) {\n record && cb(record, e, dis.dispatchAction);\n });\n dispatchTooltipFinally(dis.pendings, api);\n });\n }\n}\n\nfunction dispatchTooltipFinally(pendings, api) {\n var showLen = pendings.showTip.length;\n var hideLen = pendings.hideTip.length;\n var actuallyPayload;\n\n if (showLen) {\n actuallyPayload = pendings.showTip[showLen - 1];\n } else if (hideLen) {\n actuallyPayload = pendings.hideTip[hideLen - 1];\n }\n\n if (actuallyPayload) {\n actuallyPayload.dispatchAction = null;\n api.dispatchAction(actuallyPayload);\n }\n}\n\nfunction onLeave(record, e, dispatchAction) {\n record.handler('leave', null, dispatchAction);\n}\n\nfunction doEnter(currTrigger, record, e, dispatchAction) {\n record.handler(currTrigger, e, dispatchAction);\n}\n\nfunction makeDispatchAction(api) {\n var pendings = {\n showTip: [],\n hideTip: []\n }; // FIXME\n // better approach?\n // 'showTip' and 'hideTip' can be triggered by axisPointer and tooltip,\n // which may be conflict, (axisPointer call showTip but tooltip call hideTip);\n // So we have to add \"final stage\" to merge those dispatched actions.\n\n var dispatchAction = function (payload) {\n var pendingList = pendings[payload.type];\n\n if (pendingList) {\n pendingList.push(payload);\n } else {\n payload.dispatchAction = dispatchAction;\n api.dispatchAction(payload);\n }\n };\n\n return {\n dispatchAction: dispatchAction,\n pendings: pendings\n };\n}\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\nfunction unregister(key, api) {\n if (env.node) {\n return;\n }\n\n var zr = api.getZr();\n var record = (inner(zr).records || {})[key];\n\n if (record) {\n inner(zr).records[key] = null;\n }\n}\n\nexports.register = register;\nexports.unregister = unregister;","\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 Model = require(\"../../model/Model\");\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 each = zrUtil.each;\nvar curry = zrUtil.curry; // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n// allAxesInfo should be updated when setOption performed.\n\nfunction collect(ecModel, api) {\n var result = {\n /**\n * key: makeKey(axis.model)\n * value: {\n * axis,\n * coordSys,\n * axisPointerModel,\n * triggerTooltip,\n * involveSeries,\n * snap,\n * seriesModels,\n * seriesDataCount\n * }\n */\n axesInfo: {},\n seriesInvolved: false,\n\n /**\n * key: makeKey(coordSys.model)\n * value: Object: key makeKey(axis.model), value: axisInfo\n */\n coordSysAxesInfo: {},\n coordSysMap: {}\n };\n collectAxesInfo(result, ecModel, api); // Check seriesInvolved for performance, in case too many series in some chart.\n\n result.seriesInvolved && collectSeriesInfo(result, ecModel);\n return result;\n}\n\nfunction collectAxesInfo(result, ecModel, api) {\n var globalTooltipModel = ecModel.getComponent('tooltip');\n var globalAxisPointerModel = ecModel.getComponent('axisPointer'); // links can only be set on global.\n\n var linksOption = globalAxisPointerModel.get('link', true) || [];\n var linkGroups = []; // Collect axes info.\n\n each(api.getCoordinateSystems(), function (coordSys) {\n // Some coordinate system do not support axes, like geo.\n if (!coordSys.axisPointerEnabled) {\n return;\n }\n\n var coordSysKey = makeKey(coordSys.model);\n var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {};\n result.coordSysMap[coordSysKey] = coordSys; // Set tooltip (like 'cross') is a convienent way to show axisPointer\n // for user. So we enable seting tooltip on coordSys model.\n\n var coordSysModel = coordSys.model;\n var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel);\n each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null)); // If axis tooltip used, choose tooltip axis for each coordSys.\n // Notice this case: coordSys is `grid` but not `cartesian2D` here.\n\n if (coordSys.getTooltipAxes && globalTooltipModel // If tooltip.showContent is set as false, tooltip will not\n // show but axisPointer will show as normal.\n && baseTooltipModel.get('show')) {\n // Compatible with previous logic. But series.tooltip.trigger: 'axis'\n // or series.data[n].tooltip.trigger: 'axis' are not support any more.\n var triggerAxis = baseTooltipModel.get('trigger') === 'axis';\n var cross = baseTooltipModel.get('axisPointer.type') === 'cross';\n var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get('axisPointer.axis'));\n\n if (triggerAxis || cross) {\n each(tooltipAxes.baseAxes, curry(saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis));\n }\n\n if (cross) {\n each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, 'cross', false));\n }\n } // fromTooltip: true | false | 'cross'\n // triggerTooltip: true | false | null\n\n\n function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {\n var axisPointerModel = axis.model.getModel('axisPointer', globalAxisPointerModel);\n var axisPointerShow = axisPointerModel.get('show');\n\n if (!axisPointerShow || axisPointerShow === 'auto' && !fromTooltip && !isHandleTrigger(axisPointerModel)) {\n return;\n }\n\n if (triggerTooltip == null) {\n triggerTooltip = axisPointerModel.get('triggerTooltip');\n }\n\n axisPointerModel = fromTooltip ? makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) : axisPointerModel;\n var snap = axisPointerModel.get('snap');\n var key = makeKey(axis.model);\n var involveSeries = triggerTooltip || snap || axis.type === 'category'; // If result.axesInfo[key] exist, override it (tooltip has higher priority).\n\n var axisInfo = result.axesInfo[key] = {\n key: key,\n axis: axis,\n coordSys: coordSys,\n axisPointerModel: axisPointerModel,\n triggerTooltip: triggerTooltip,\n involveSeries: involveSeries,\n snap: snap,\n useHandle: isHandleTrigger(axisPointerModel),\n seriesModels: []\n };\n axesInfoInCoordSys[key] = axisInfo;\n result.seriesInvolved |= involveSeries;\n var groupIndex = getLinkGroupIndex(linksOption, axis);\n\n if (groupIndex != null) {\n var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = {\n axesInfo: {}\n });\n linkGroup.axesInfo[key] = axisInfo;\n linkGroup.mapper = linksOption[groupIndex].mapper;\n axisInfo.linkGroup = linkGroup;\n }\n }\n });\n}\n\nfunction makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) {\n var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer');\n var volatileOption = {};\n each(['type', 'snap', 'lineStyle', 'shadowStyle', 'label', 'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z'], function (field) {\n volatileOption[field] = zrUtil.clone(tooltipAxisPointerModel.get(field));\n }); // category axis do not auto snap, otherwise some tick that do not\n // has value can not be hovered. value/time/log axis default snap if\n // triggered from tooltip and trigger tooltip.\n\n volatileOption.snap = axis.type !== 'category' && !!triggerTooltip; // Compatibel with previous behavior, tooltip axis do not show label by default.\n // Only these properties can be overrided from tooltip to axisPointer.\n\n if (tooltipAxisPointerModel.get('type') === 'cross') {\n volatileOption.type = 'line';\n }\n\n var labelOption = volatileOption.label || (volatileOption.label = {}); // Follow the convention, do not show label when triggered by tooltip by default.\n\n labelOption.show == null && (labelOption.show = false);\n\n if (fromTooltip === 'cross') {\n // When 'cross', both axes show labels.\n var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get('label.show');\n labelOption.show = tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true; // If triggerTooltip, this is a base axis, which should better not use cross style\n // (cross style is dashed by default)\n\n if (!triggerTooltip) {\n var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle');\n crossStyle && zrUtil.defaults(labelOption, crossStyle.textStyle);\n }\n }\n\n return axis.model.getModel('axisPointer', new Model(volatileOption, globalAxisPointerModel, ecModel));\n}\n\nfunction collectSeriesInfo(result, ecModel) {\n // Prepare data for axis trigger\n ecModel.eachSeries(function (seriesModel) {\n // Notice this case: this coordSys is `cartesian2D` but not `grid`.\n var coordSys = seriesModel.coordinateSystem;\n var seriesTooltipTrigger = seriesModel.get('tooltip.trigger', true);\n var seriesTooltipShow = seriesModel.get('tooltip.show', true);\n\n if (!coordSys || seriesTooltipTrigger === 'none' || seriesTooltipTrigger === false || seriesTooltipTrigger === 'item' || seriesTooltipShow === false || seriesModel.get('axisPointer.show', true) === false) {\n return;\n }\n\n each(result.coordSysAxesInfo[makeKey(coordSys.model)], function (axisInfo) {\n var axis = axisInfo.axis;\n\n if (coordSys.getAxis(axis.dim) === axis) {\n axisInfo.seriesModels.push(seriesModel);\n axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0);\n axisInfo.seriesDataCount += seriesModel.getData().count();\n }\n });\n }, this);\n}\n/**\n * For example:\n * {\n * axisPointer: {\n * links: [{\n * xAxisIndex: [2, 4],\n * yAxisIndex: 'all'\n * }, {\n * xAxisId: ['a5', 'a7'],\n * xAxisName: 'xxx'\n * }]\n * }\n * }\n */\n\n\nfunction getLinkGroupIndex(linksOption, axis) {\n var axisModel = axis.model;\n var dim = axis.dim;\n\n for (var i = 0; i < linksOption.length; i++) {\n var linkOption = linksOption[i] || {};\n\n if (checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id) || checkPropInLink(linkOption[dim + 'AxisIndex'], axisModel.componentIndex) || checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name)) {\n return i;\n }\n }\n}\n\nfunction checkPropInLink(linkPropValue, axisPropValue) {\n return linkPropValue === 'all' || zrUtil.isArray(linkPropValue) && zrUtil.indexOf(linkPropValue, axisPropValue) >= 0 || linkPropValue === axisPropValue;\n}\n\nfunction fixValue(axisModel) {\n var axisInfo = getAxisInfo(axisModel);\n\n if (!axisInfo) {\n return;\n }\n\n var axisPointerModel = axisInfo.axisPointerModel;\n var scale = axisInfo.axis.scale;\n var option = axisPointerModel.option;\n var status = axisPointerModel.get('status');\n var value = axisPointerModel.get('value'); // Parse init value for category and time axis.\n\n if (value != null) {\n value = scale.parse(value);\n }\n\n var useHandle = isHandleTrigger(axisPointerModel); // If `handle` used, `axisPointer` will always be displayed, so value\n // and status should be initialized.\n\n if (status == null) {\n option.status = useHandle ? 'show' : 'hide';\n }\n\n var extent = scale.getExtent().slice();\n extent[0] > extent[1] && extent.reverse();\n\n if ( // Pick a value on axis when initializing.\n value == null // If both `handle` and `dataZoom` are used, value may be out of axis extent,\n // where we should re-pick a value to keep `handle` displaying normally.\n || value > extent[1]) {\n // Make handle displayed on the end of the axis when init, which looks better.\n value = extent[1];\n }\n\n if (value < extent[0]) {\n value = extent[0];\n }\n\n option.value = value;\n\n if (useHandle) {\n option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show';\n }\n}\n\nfunction getAxisInfo(axisModel) {\n var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {}).coordSysAxesInfo;\n return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];\n}\n\nfunction getAxisPointerModel(axisModel) {\n var axisInfo = getAxisInfo(axisModel);\n return axisInfo && axisInfo.axisPointerModel;\n}\n\nfunction isHandleTrigger(axisPointerModel) {\n return !!axisPointerModel.get('handle.show');\n}\n/**\n * @param {module:echarts/model/Model} model\n * @return {string} unique key\n */\n\n\nfunction makeKey(model) {\n return model.type + '||' + model.id;\n}\n\nexports.collect = collect;\nexports.fixValue = fixValue;\nexports.getAxisInfo = getAxisInfo;\nexports.getAxisPointerModel = getAxisPointerModel;\nexports.makeKey = makeKey;","\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 graphic = require(\"../../util/graphic\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar AxisBuilder = require(\"../axis/AxisBuilder\");\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/model/Model} axisPointerModel\n */\nfunction buildElStyle(axisPointerModel) {\n var axisPointerType = axisPointerModel.get('type');\n var styleModel = axisPointerModel.getModel(axisPointerType + 'Style');\n var style;\n\n if (axisPointerType === 'line') {\n style = styleModel.getLineStyle();\n style.fill = null;\n } else if (axisPointerType === 'shadow') {\n style = styleModel.getAreaStyle();\n style.stroke = null;\n }\n\n return style;\n}\n/**\n * @param {Function} labelPos {align, verticalAlign, position}\n */\n\n\nfunction buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) {\n var value = axisPointerModel.get('value');\n var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get('seriesDataIndices'), {\n precision: axisPointerModel.get('label.precision'),\n formatter: axisPointerModel.get('label.formatter')\n });\n var labelModel = axisPointerModel.getModel('label');\n var paddings = formatUtil.normalizeCssArray(labelModel.get('padding') || 0);\n var font = labelModel.getFont();\n var textRect = textContain.getBoundingRect(text, font);\n var position = labelPos.position;\n var width = textRect.width + paddings[1] + paddings[3];\n var height = textRect.height + paddings[0] + paddings[2]; // Adjust by align.\n\n var align = labelPos.align;\n align === 'right' && (position[0] -= width);\n align === 'center' && (position[0] -= width / 2);\n var verticalAlign = labelPos.verticalAlign;\n verticalAlign === 'bottom' && (position[1] -= height);\n verticalAlign === 'middle' && (position[1] -= height / 2); // Not overflow ec container\n\n confineInContainer(position, width, height, api);\n var bgColor = labelModel.get('backgroundColor');\n\n if (!bgColor || bgColor === 'auto') {\n bgColor = axisModel.get('axisLine.lineStyle.color');\n }\n\n elOption.label = {\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height,\n r: labelModel.get('borderRadius')\n },\n position: position.slice(),\n // TODO: rich\n style: {\n text: text,\n textFont: font,\n textFill: labelModel.getTextColor(),\n textPosition: 'inside',\n textPadding: paddings,\n fill: bgColor,\n stroke: labelModel.get('borderColor') || 'transparent',\n lineWidth: labelModel.get('borderWidth') || 0,\n shadowBlur: labelModel.get('shadowBlur'),\n shadowColor: labelModel.get('shadowColor'),\n shadowOffsetX: labelModel.get('shadowOffsetX'),\n shadowOffsetY: labelModel.get('shadowOffsetY')\n },\n // Lable should be over axisPointer.\n z2: 10\n };\n} // Do not overflow ec container\n\n\nfunction confineInContainer(position, width, height, api) {\n var viewWidth = api.getWidth();\n var viewHeight = api.getHeight();\n position[0] = Math.min(position[0] + width, viewWidth) - width;\n position[1] = Math.min(position[1] + height, viewHeight) - height;\n position[0] = Math.max(position[0], 0);\n position[1] = Math.max(position[1], 0);\n}\n/**\n * @param {number} value\n * @param {module:echarts/coord/Axis} axis\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} opt\n * @param {Array.} seriesDataIndices\n * @param {number|string} opt.precision 'auto' or a number\n * @param {string|Function} opt.formatter label formatter\n */\n\n\nfunction getValueLabel(value, axis, ecModel, seriesDataIndices, opt) {\n value = axis.scale.parse(value);\n var text = axis.scale.getLabel( // If `precision` is set, width can be fixed (like '12.00500'), which\n // helps to debounce when when moving label.\n value, {\n precision: opt.precision\n });\n var formatter = opt.formatter;\n\n if (formatter) {\n var params = {\n value: axisHelper.getAxisRawValue(axis, value),\n axisDimension: axis.dim,\n axisIndex: axis.index,\n seriesData: []\n };\n zrUtil.each(seriesDataIndices, function (idxItem) {\n var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n var dataIndex = idxItem.dataIndexInside;\n var dataParams = series && series.getDataParams(dataIndex);\n dataParams && params.seriesData.push(dataParams);\n });\n\n if (zrUtil.isString(formatter)) {\n text = formatter.replace('{value}', text);\n } else if (zrUtil.isFunction(formatter)) {\n text = formatter(params);\n }\n }\n\n return text;\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @param {number} value\n * @param {Object} layoutInfo {\n * rotation, position, labelOffset, labelDirection, labelMargin\n * }\n */\n\n\nfunction getTransformedPosition(axis, value, layoutInfo) {\n var transform = matrix.create();\n matrix.rotate(transform, transform, layoutInfo.rotation);\n matrix.translate(transform, transform, layoutInfo.position);\n return graphic.applyTransform([axis.dataToCoord(value), (layoutInfo.labelOffset || 0) + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)], transform);\n}\n\nfunction buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) {\n var textLayout = AxisBuilder.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection);\n layoutInfo.labelMargin = axisPointerModel.get('label.margin');\n buildLabelElOption(elOption, axisModel, axisPointerModel, api, {\n position: getTransformedPosition(axisModel.axis, value, layoutInfo),\n align: textLayout.textAlign,\n verticalAlign: textLayout.textVerticalAlign\n });\n}\n/**\n * @param {Array.} p1\n * @param {Array.} p2\n * @param {number} [xDimIndex=0] or 1\n */\n\n\nfunction makeLineShape(p1, p2, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x1: p1[xDimIndex],\n y1: p1[1 - xDimIndex],\n x2: p2[xDimIndex],\n y2: p2[1 - xDimIndex]\n };\n}\n/**\n * @param {Array.} xy\n * @param {Array.} wh\n * @param {number} [xDimIndex=0] or 1\n */\n\n\nfunction makeRectShape(xy, wh, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x: xy[xDimIndex],\n y: xy[1 - xDimIndex],\n width: wh[xDimIndex],\n height: wh[1 - xDimIndex]\n };\n}\n\nfunction makeSectorShape(cx, cy, r0, r, startAngle, endAngle) {\n return {\n cx: cx,\n cy: cy,\n r0: r0,\n r: r,\n startAngle: startAngle,\n endAngle: endAngle,\n clockwise: true\n };\n}\n\nexports.buildElStyle = buildElStyle;\nexports.buildLabelElOption = buildLabelElOption;\nexports.getValueLabel = getValueLabel;\nexports.getTransformedPosition = getTransformedPosition;\nexports.buildCartesianSingleLabelElOption = buildCartesianSingleLabelElOption;\nexports.makeLineShape = makeLineShape;\nexports.makeRectShape = makeRectShape;\nexports.makeSectorShape = makeSectorShape;","\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 graphic = require(\"../../util/graphic\");\n\nvar Model = require(\"../../model/Model\");\n\nvar AxisView = require(\"./AxisView\");\n\nvar AxisBuilder = require(\"./AxisBuilder\");\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 elementList = ['axisLine', 'axisLabel', 'axisTick', 'minorTick', 'splitLine', 'minorSplitLine', 'splitArea'];\n\nfunction getAxisLineShape(polar, rExtent, angle) {\n rExtent[1] > rExtent[0] && (rExtent = rExtent.slice().reverse());\n var start = polar.coordToPoint([rExtent[0], angle]);\n var end = polar.coordToPoint([rExtent[1], angle]);\n return {\n x1: start[0],\n y1: start[1],\n x2: end[0],\n y2: end[1]\n };\n}\n\nfunction getRadiusIdx(polar) {\n var radiusAxis = polar.getRadiusAxis();\n return radiusAxis.inverse ? 0 : 1;\n} // Remove the last tick which will overlap the first tick\n\n\nfunction fixAngleOverlap(list) {\n var firstItem = list[0];\n var lastItem = list[list.length - 1];\n\n if (firstItem && lastItem && Math.abs(Math.abs(firstItem.coord - lastItem.coord) - 360) < 1e-4) {\n list.pop();\n }\n}\n\nvar _default = AxisView.extend({\n type: 'angleAxis',\n axisPointerClass: 'PolarAxisPointer',\n render: function (angleAxisModel, ecModel) {\n this.group.removeAll();\n\n if (!angleAxisModel.get('show')) {\n return;\n }\n\n var angleAxis = angleAxisModel.axis;\n var polar = angleAxis.polar;\n var radiusExtent = polar.getRadiusAxis().getExtent();\n var ticksAngles = angleAxis.getTicksCoords();\n var minorTickAngles = angleAxis.getMinorTicksCoords();\n var labels = zrUtil.map(angleAxis.getViewLabels(), function (labelItem) {\n var labelItem = zrUtil.clone(labelItem);\n labelItem.coord = angleAxis.dataToCoord(labelItem.tickValue);\n return labelItem;\n });\n fixAngleOverlap(labels);\n fixAngleOverlap(ticksAngles);\n zrUtil.each(elementList, function (name) {\n if (angleAxisModel.get(name + '.show') && (!angleAxis.scale.isBlank() || name === 'axisLine')) {\n this['_' + name](angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels);\n }\n }, this);\n },\n\n /**\n * @private\n */\n _axisLine: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n var lineStyleModel = angleAxisModel.getModel('axisLine.lineStyle'); // extent id of the axis radius (r0 and r)\n\n var rId = getRadiusIdx(polar);\n var r0Id = rId ? 0 : 1;\n var shape;\n\n if (radiusExtent[r0Id] === 0) {\n shape = new graphic.Circle({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r: radiusExtent[rId]\n },\n style: lineStyleModel.getLineStyle(),\n z2: 1,\n silent: true\n });\n } else {\n shape = new graphic.Ring({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r: radiusExtent[rId],\n r0: radiusExtent[r0Id]\n },\n style: lineStyleModel.getLineStyle(),\n z2: 1,\n silent: true\n });\n }\n\n shape.style.fill = null;\n this.group.add(shape);\n },\n\n /**\n * @private\n */\n _axisTick: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n var tickModel = angleAxisModel.getModel('axisTick');\n var tickLen = (tickModel.get('inside') ? -1 : 1) * tickModel.get('length');\n var radius = radiusExtent[getRadiusIdx(polar)];\n var lines = zrUtil.map(ticksAngles, function (tickAngleItem) {\n return new graphic.Line({\n shape: getAxisLineShape(polar, [radius, radius + tickLen], tickAngleItem.coord)\n });\n });\n this.group.add(graphic.mergePath(lines, {\n style: zrUtil.defaults(tickModel.getModel('lineStyle').getLineStyle(), {\n stroke: angleAxisModel.get('axisLine.lineStyle.color')\n })\n }));\n },\n\n /**\n * @private\n */\n _minorTick: function (angleAxisModel, polar, tickAngles, minorTickAngles, radiusExtent) {\n if (!minorTickAngles.length) {\n return;\n }\n\n var tickModel = angleAxisModel.getModel('axisTick');\n var minorTickModel = angleAxisModel.getModel('minorTick');\n var tickLen = (tickModel.get('inside') ? -1 : 1) * minorTickModel.get('length');\n var radius = radiusExtent[getRadiusIdx(polar)];\n var lines = [];\n\n for (var i = 0; i < minorTickAngles.length; i++) {\n for (var k = 0; k < minorTickAngles[i].length; k++) {\n lines.push(new graphic.Line({\n shape: getAxisLineShape(polar, [radius, radius + tickLen], minorTickAngles[i][k].coord)\n }));\n }\n }\n\n this.group.add(graphic.mergePath(lines, {\n style: zrUtil.defaults(minorTickModel.getModel('lineStyle').getLineStyle(), zrUtil.defaults(tickModel.getLineStyle(), {\n stroke: angleAxisModel.get('axisLine.lineStyle.color')\n }))\n }));\n },\n\n /**\n * @private\n */\n _axisLabel: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels) {\n var rawCategoryData = angleAxisModel.getCategories(true);\n var commonLabelModel = angleAxisModel.getModel('axisLabel');\n var labelMargin = commonLabelModel.get('margin');\n var triggerEvent = angleAxisModel.get('triggerEvent'); // Use length of ticksAngles because it may remove the last tick to avoid overlapping\n\n zrUtil.each(labels, function (labelItem, idx) {\n var labelModel = commonLabelModel;\n var tickValue = labelItem.tickValue;\n var r = radiusExtent[getRadiusIdx(polar)];\n var p = polar.coordToPoint([r + labelMargin, labelItem.coord]);\n var cx = polar.cx;\n var cy = polar.cy;\n var labelTextAlign = Math.abs(p[0] - cx) / r < 0.3 ? 'center' : p[0] > cx ? 'left' : 'right';\n var labelTextVerticalAlign = Math.abs(p[1] - cy) / r < 0.3 ? 'middle' : p[1] > cy ? 'top' : 'bottom';\n\n if (rawCategoryData && rawCategoryData[tickValue] && rawCategoryData[tickValue].textStyle) {\n labelModel = new Model(rawCategoryData[tickValue].textStyle, commonLabelModel, commonLabelModel.ecModel);\n }\n\n var textEl = new graphic.Text({\n silent: AxisBuilder.isLabelSilent(angleAxisModel)\n });\n this.group.add(textEl);\n graphic.setTextStyle(textEl.style, labelModel, {\n x: p[0],\n y: p[1],\n textFill: labelModel.getTextColor() || angleAxisModel.get('axisLine.lineStyle.color'),\n text: labelItem.formattedLabel,\n textAlign: labelTextAlign,\n textVerticalAlign: labelTextVerticalAlign\n }); // Pack data for mouse event\n\n if (triggerEvent) {\n textEl.eventData = AxisBuilder.makeAxisEventDataBase(angleAxisModel);\n textEl.eventData.targetType = 'axisLabel';\n textEl.eventData.value = labelItem.rawLabel;\n }\n }, this);\n },\n\n /**\n * @private\n */\n _splitLine: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n var splitLineModel = angleAxisModel.getModel('splitLine');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var lineColors = lineStyleModel.get('color');\n var lineCount = 0;\n lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n var splitLines = [];\n\n for (var i = 0; i < ticksAngles.length; i++) {\n var colorIndex = lineCount++ % lineColors.length;\n splitLines[colorIndex] = splitLines[colorIndex] || [];\n splitLines[colorIndex].push(new graphic.Line({\n shape: getAxisLineShape(polar, radiusExtent, ticksAngles[i].coord)\n }));\n } // Simple optimization\n // Batching the lines if color are the same\n\n\n for (var i = 0; i < splitLines.length; i++) {\n this.group.add(graphic.mergePath(splitLines[i], {\n style: zrUtil.defaults({\n stroke: lineColors[i % lineColors.length]\n }, lineStyleModel.getLineStyle()),\n silent: true,\n z: angleAxisModel.get('z')\n }));\n }\n },\n\n /**\n * @private\n */\n _minorSplitLine: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n if (!minorTickAngles.length) {\n return;\n }\n\n var minorSplitLineModel = angleAxisModel.getModel('minorSplitLine');\n var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n var lines = [];\n\n for (var i = 0; i < minorTickAngles.length; i++) {\n for (var k = 0; k < minorTickAngles[i].length; k++) {\n lines.push(new graphic.Line({\n shape: getAxisLineShape(polar, radiusExtent, minorTickAngles[i][k].coord)\n }));\n }\n }\n\n this.group.add(graphic.mergePath(lines, {\n style: lineStyleModel.getLineStyle(),\n silent: true,\n z: angleAxisModel.get('z')\n }));\n },\n\n /**\n * @private\n */\n _splitArea: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n if (!ticksAngles.length) {\n return;\n }\n\n var splitAreaModel = angleAxisModel.getModel('splitArea');\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\n var areaColors = areaStyleModel.get('color');\n var lineCount = 0;\n areaColors = areaColors instanceof Array ? areaColors : [areaColors];\n var splitAreas = [];\n var RADIAN = Math.PI / 180;\n var prevAngle = -ticksAngles[0].coord * RADIAN;\n var r0 = Math.min(radiusExtent[0], radiusExtent[1]);\n var r1 = Math.max(radiusExtent[0], radiusExtent[1]);\n var clockwise = angleAxisModel.get('clockwise');\n\n for (var i = 1; i < ticksAngles.length; i++) {\n var colorIndex = lineCount++ % areaColors.length;\n splitAreas[colorIndex] = splitAreas[colorIndex] || [];\n splitAreas[colorIndex].push(new graphic.Sector({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r0: r0,\n r: r1,\n startAngle: prevAngle,\n endAngle: -ticksAngles[i].coord * RADIAN,\n clockwise: clockwise\n },\n silent: true\n }));\n prevAngle = -ticksAngles[i].coord * RADIAN;\n } // Simple optimization\n // Batching the lines if color are the same\n\n\n for (var i = 0; i < splitAreas.length; i++) {\n this.group.add(graphic.mergePath(splitAreas[i], {\n style: zrUtil.defaults({\n fill: areaColors[i % areaColors.length]\n }, areaStyleModel.getAreaStyle()),\n silent: true\n }));\n }\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 _util = require(\"zrender/lib/core/util\");\n\nvar retrieve = _util.retrieve;\nvar defaults = _util.defaults;\nvar extend = _util.extend;\nvar each = _util.each;\n\nvar formatUtil = require(\"../../util/format\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Model = require(\"../../model/Model\");\n\nvar _number = require(\"../../util/number\");\n\nvar isRadianAroundZero = _number.isRadianAroundZero;\nvar remRadian = _number.remRadian;\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar matrixUtil = require(\"zrender/lib/core/matrix\");\n\nvar _vector = require(\"zrender/lib/core/vector\");\n\nvar v2ApplyTransform = _vector.applyTransform;\n\nvar _axisHelper = require(\"../../coord/axisHelper\");\n\nvar shouldShowAllLabels = _axisHelper.shouldShowAllLabels;\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 PI = Math.PI;\n/**\n * A final axis is translated and rotated from a \"standard axis\".\n * So opt.position and opt.rotation is required.\n *\n * A standard axis is and axis from [0, 0] to [0, axisExtent[1]],\n * for example: (0, 0) ------------> (0, 50)\n *\n * nameDirection or tickDirection or labelDirection is 1 means tick\n * or label is below the standard axis, whereas is -1 means above\n * the standard axis. labelOffset means offset between label and axis,\n * which is useful when 'onZero', where axisLabel is in the grid and\n * label in outside grid.\n *\n * Tips: like always,\n * positive rotation represents anticlockwise, and negative rotation\n * represents clockwise.\n * The direction of position coordinate is the same as the direction\n * of screen coordinate.\n *\n * Do not need to consider axis 'inverse', which is auto processed by\n * axis extent.\n *\n * @param {module:zrender/container/Group} group\n * @param {Object} axisModel\n * @param {Object} opt Standard axis parameters.\n * @param {Array.} opt.position [x, y]\n * @param {number} opt.rotation by radian\n * @param {number} [opt.nameDirection=1] 1 or -1 Used when nameLocation is 'middle' or 'center'.\n * @param {number} [opt.tickDirection=1] 1 or -1\n * @param {number} [opt.labelDirection=1] 1 or -1\n * @param {number} [opt.labelOffset=0] Usefull when onZero.\n * @param {string} [opt.axisLabelShow] default get from axisModel.\n * @param {string} [opt.axisName] default get from axisModel.\n * @param {number} [opt.axisNameAvailableWidth]\n * @param {number} [opt.labelRotate] by degree, default get from axisModel.\n * @param {number} [opt.strokeContainThreshold] Default label interval when label\n * @param {number} [opt.nameTruncateMaxWidth]\n */\n\nvar AxisBuilder = function (axisModel, opt) {\n /**\n * @readOnly\n */\n this.opt = opt;\n /**\n * @readOnly\n */\n\n this.axisModel = axisModel; // Default value\n\n defaults(opt, {\n labelOffset: 0,\n nameDirection: 1,\n tickDirection: 1,\n labelDirection: 1,\n silent: true\n });\n /**\n * @readOnly\n */\n\n this.group = new graphic.Group(); // FIXME Not use a seperate text group?\n\n var dumbGroup = new graphic.Group({\n position: opt.position.slice(),\n rotation: opt.rotation\n }); // this.group.add(dumbGroup);\n // this._dumbGroup = dumbGroup;\n\n dumbGroup.updateTransform();\n this._transform = dumbGroup.transform;\n this._dumbGroup = dumbGroup;\n};\n\nAxisBuilder.prototype = {\n constructor: AxisBuilder,\n hasBuilder: function (name) {\n return !!builders[name];\n },\n add: function (name) {\n builders[name].call(this);\n },\n getGroup: function () {\n return this.group;\n }\n};\nvar builders = {\n /**\n * @private\n */\n axisLine: function () {\n var opt = this.opt;\n var axisModel = this.axisModel;\n\n if (!axisModel.get('axisLine.show')) {\n return;\n }\n\n var extent = this.axisModel.axis.getExtent();\n var matrix = this._transform;\n var pt1 = [extent[0], 0];\n var pt2 = [extent[1], 0];\n\n if (matrix) {\n v2ApplyTransform(pt1, pt1, matrix);\n v2ApplyTransform(pt2, pt2, matrix);\n }\n\n var lineStyle = extend({\n lineCap: 'round'\n }, axisModel.getModel('axisLine.lineStyle').getLineStyle());\n this.group.add(new graphic.Line({\n // Id for animation\n anid: 'line',\n subPixelOptimize: true,\n shape: {\n x1: pt1[0],\n y1: pt1[1],\n x2: pt2[0],\n y2: pt2[1]\n },\n style: lineStyle,\n strokeContainThreshold: opt.strokeContainThreshold || 5,\n silent: true,\n z2: 1\n }));\n var arrows = axisModel.get('axisLine.symbol');\n var arrowSize = axisModel.get('axisLine.symbolSize');\n var arrowOffset = axisModel.get('axisLine.symbolOffset') || 0;\n\n if (typeof arrowOffset === 'number') {\n arrowOffset = [arrowOffset, arrowOffset];\n }\n\n if (arrows != null) {\n if (typeof arrows === 'string') {\n // Use the same arrow for start and end point\n arrows = [arrows, arrows];\n }\n\n if (typeof arrowSize === 'string' || typeof arrowSize === 'number') {\n // Use the same size for width and height\n arrowSize = [arrowSize, arrowSize];\n }\n\n var symbolWidth = arrowSize[0];\n var symbolHeight = arrowSize[1];\n each([{\n rotate: opt.rotation + Math.PI / 2,\n offset: arrowOffset[0],\n r: 0\n }, {\n rotate: opt.rotation - Math.PI / 2,\n offset: arrowOffset[1],\n r: Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0]) + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1]))\n }], function (point, index) {\n if (arrows[index] !== 'none' && arrows[index] != null) {\n var symbol = createSymbol(arrows[index], -symbolWidth / 2, -symbolHeight / 2, symbolWidth, symbolHeight, lineStyle.stroke, true); // Calculate arrow position with offset\n\n var r = point.r + point.offset;\n var pos = [pt1[0] + r * Math.cos(opt.rotation), pt1[1] - r * Math.sin(opt.rotation)];\n symbol.attr({\n rotation: point.rotate,\n position: pos,\n silent: true,\n z2: 11\n });\n this.group.add(symbol);\n }\n }, this);\n }\n },\n\n /**\n * @private\n */\n axisTickLabel: function () {\n var axisModel = this.axisModel;\n var opt = this.opt;\n var ticksEls = buildAxisMajorTicks(this, axisModel, opt);\n var labelEls = buildAxisLabel(this, axisModel, opt);\n fixMinMaxLabelShow(axisModel, labelEls, ticksEls);\n buildAxisMinorTicks(this, axisModel, opt);\n },\n\n /**\n * @private\n */\n axisName: function () {\n var opt = this.opt;\n var axisModel = this.axisModel;\n var name = retrieve(opt.axisName, axisModel.get('name'));\n\n if (!name) {\n return;\n }\n\n var nameLocation = axisModel.get('nameLocation');\n var nameDirection = opt.nameDirection;\n var textStyleModel = axisModel.getModel('nameTextStyle');\n var gap = axisModel.get('nameGap') || 0;\n var extent = this.axisModel.axis.getExtent();\n var gapSignal = extent[0] > extent[1] ? -1 : 1;\n var pos = [nameLocation === 'start' ? extent[0] - gapSignal * gap : nameLocation === 'end' ? extent[1] + gapSignal * gap : (extent[0] + extent[1]) / 2, // 'middle'\n // Reuse labelOffset.\n isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0];\n var labelLayout;\n var nameRotation = axisModel.get('nameRotate');\n\n if (nameRotation != null) {\n nameRotation = nameRotation * PI / 180; // To radian.\n }\n\n var axisNameAvailableWidth;\n\n if (isNameLocationCenter(nameLocation)) {\n labelLayout = innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, // Adapt to axis.\n nameDirection);\n } else {\n labelLayout = endTextLayout(opt, nameLocation, nameRotation || 0, extent);\n axisNameAvailableWidth = opt.axisNameAvailableWidth;\n\n if (axisNameAvailableWidth != null) {\n axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation));\n !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);\n }\n }\n\n var textFont = textStyleModel.getFont();\n var truncateOpt = axisModel.get('nameTruncate', true) || {};\n var ellipsis = truncateOpt.ellipsis;\n var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth); // FIXME\n // truncate rich text? (consider performance)\n\n var truncatedText = ellipsis != null && maxWidth != null ? formatUtil.truncateText(name, maxWidth, textFont, ellipsis, {\n minChar: 2,\n placeholder: truncateOpt.placeholder\n }) : name;\n var tooltipOpt = axisModel.get('tooltip', true);\n var mainType = axisModel.mainType;\n var formatterParams = {\n componentType: mainType,\n name: name,\n $vars: ['name']\n };\n formatterParams[mainType + 'Index'] = axisModel.componentIndex;\n var textEl = new graphic.Text({\n // Id for animation\n anid: 'name',\n __fullText: name,\n __truncatedText: truncatedText,\n position: pos,\n rotation: labelLayout.rotation,\n silent: isLabelSilent(axisModel),\n z2: 1,\n tooltip: tooltipOpt && tooltipOpt.show ? extend({\n content: name,\n formatter: function () {\n return name;\n },\n formatterParams: formatterParams\n }, tooltipOpt) : null\n });\n graphic.setTextStyle(textEl.style, textStyleModel, {\n text: truncatedText,\n textFont: textFont,\n textFill: textStyleModel.getTextColor() || axisModel.get('axisLine.lineStyle.color'),\n textAlign: textStyleModel.get('align') || labelLayout.textAlign,\n textVerticalAlign: textStyleModel.get('verticalAlign') || labelLayout.textVerticalAlign\n });\n\n if (axisModel.get('triggerEvent')) {\n textEl.eventData = makeAxisEventDataBase(axisModel);\n textEl.eventData.targetType = 'axisName';\n textEl.eventData.name = name;\n } // FIXME\n\n\n this._dumbGroup.add(textEl);\n\n textEl.updateTransform();\n this.group.add(textEl);\n textEl.decomposeTransform();\n }\n};\n\nvar makeAxisEventDataBase = AxisBuilder.makeAxisEventDataBase = function (axisModel) {\n var eventData = {\n componentType: axisModel.mainType,\n componentIndex: axisModel.componentIndex\n };\n eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex;\n return eventData;\n};\n/**\n * @public\n * @static\n * @param {Object} opt\n * @param {number} axisRotation in radian\n * @param {number} textRotation in radian\n * @param {number} direction\n * @return {Object} {\n * rotation, // according to axis\n * textAlign,\n * textVerticalAlign\n * }\n */\n\n\nvar innerTextLayout = AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {\n var rotationDiff = remRadian(textRotation - axisRotation);\n var textAlign;\n var textVerticalAlign;\n\n if (isRadianAroundZero(rotationDiff)) {\n // Label is parallel with axis line.\n textVerticalAlign = direction > 0 ? 'top' : 'bottom';\n textAlign = 'center';\n } else if (isRadianAroundZero(rotationDiff - PI)) {\n // Label is inverse parallel with axis line.\n textVerticalAlign = direction > 0 ? 'bottom' : 'top';\n textAlign = 'center';\n } else {\n textVerticalAlign = 'middle';\n\n if (rotationDiff > 0 && rotationDiff < PI) {\n textAlign = direction > 0 ? 'right' : 'left';\n } else {\n textAlign = direction > 0 ? 'left' : 'right';\n }\n }\n\n return {\n rotation: rotationDiff,\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n};\n\nfunction endTextLayout(opt, textPosition, textRotate, extent) {\n var rotationDiff = remRadian(textRotate - opt.rotation);\n var textAlign;\n var textVerticalAlign;\n var inverse = extent[0] > extent[1];\n var onLeft = textPosition === 'start' && !inverse || textPosition !== 'start' && inverse;\n\n if (isRadianAroundZero(rotationDiff - PI / 2)) {\n textVerticalAlign = onLeft ? 'bottom' : 'top';\n textAlign = 'center';\n } else if (isRadianAroundZero(rotationDiff - PI * 1.5)) {\n textVerticalAlign = onLeft ? 'top' : 'bottom';\n textAlign = 'center';\n } else {\n textVerticalAlign = 'middle';\n\n if (rotationDiff < PI * 1.5 && rotationDiff > PI / 2) {\n textAlign = onLeft ? 'left' : 'right';\n } else {\n textAlign = onLeft ? 'right' : 'left';\n }\n }\n\n return {\n rotation: rotationDiff,\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n}\n\nvar isLabelSilent = AxisBuilder.isLabelSilent = function (axisModel) {\n var tooltipOpt = axisModel.get('tooltip');\n return axisModel.get('silent') // Consider mouse cursor, add these restrictions.\n || !(axisModel.get('triggerEvent') || tooltipOpt && tooltipOpt.show);\n};\n\nfunction fixMinMaxLabelShow(axisModel, labelEls, tickEls) {\n if (shouldShowAllLabels(axisModel.axis)) {\n return;\n } // If min or max are user set, we need to check\n // If the tick on min(max) are overlap on their neighbour tick\n // If they are overlapped, we need to hide the min(max) tick label\n\n\n var showMinLabel = axisModel.get('axisLabel.showMinLabel');\n var showMaxLabel = axisModel.get('axisLabel.showMaxLabel'); // FIXME\n // Have not consider onBand yet, where tick els is more than label els.\n\n labelEls = labelEls || [];\n tickEls = tickEls || [];\n var firstLabel = labelEls[0];\n var nextLabel = labelEls[1];\n var lastLabel = labelEls[labelEls.length - 1];\n var prevLabel = labelEls[labelEls.length - 2];\n var firstTick = tickEls[0];\n var nextTick = tickEls[1];\n var lastTick = tickEls[tickEls.length - 1];\n var prevTick = tickEls[tickEls.length - 2];\n\n if (showMinLabel === false) {\n ignoreEl(firstLabel);\n ignoreEl(firstTick);\n } else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {\n if (showMinLabel) {\n ignoreEl(nextLabel);\n ignoreEl(nextTick);\n } else {\n ignoreEl(firstLabel);\n ignoreEl(firstTick);\n }\n }\n\n if (showMaxLabel === false) {\n ignoreEl(lastLabel);\n ignoreEl(lastTick);\n } else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {\n if (showMaxLabel) {\n ignoreEl(prevLabel);\n ignoreEl(prevTick);\n } else {\n ignoreEl(lastLabel);\n ignoreEl(lastTick);\n }\n }\n}\n\nfunction ignoreEl(el) {\n el && (el.ignore = true);\n}\n\nfunction isTwoLabelOverlapped(current, next, labelLayout) {\n // current and next has the same rotation.\n var firstRect = current && current.getBoundingRect().clone();\n var nextRect = next && next.getBoundingRect().clone();\n\n if (!firstRect || !nextRect) {\n return;\n } // When checking intersect of two rotated labels, we use mRotationBack\n // to avoid that boundingRect is enlarge when using `boundingRect.applyTransform`.\n\n\n var mRotationBack = matrixUtil.identity([]);\n matrixUtil.rotate(mRotationBack, mRotationBack, -current.rotation);\n firstRect.applyTransform(matrixUtil.mul([], mRotationBack, current.getLocalTransform()));\n nextRect.applyTransform(matrixUtil.mul([], mRotationBack, next.getLocalTransform()));\n return firstRect.intersect(nextRect);\n}\n\nfunction isNameLocationCenter(nameLocation) {\n return nameLocation === 'middle' || nameLocation === 'center';\n}\n\nfunction createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, aniid) {\n var tickEls = [];\n var pt1 = [];\n var pt2 = [];\n\n for (var i = 0; i < ticksCoords.length; i++) {\n var tickCoord = ticksCoords[i].coord;\n pt1[0] = tickCoord;\n pt1[1] = 0;\n pt2[0] = tickCoord;\n pt2[1] = tickEndCoord;\n\n if (tickTransform) {\n v2ApplyTransform(pt1, pt1, tickTransform);\n v2ApplyTransform(pt2, pt2, tickTransform);\n } // Tick line, Not use group transform to have better line draw\n\n\n var tickEl = new graphic.Line({\n // Id for animation\n anid: aniid + '_' + ticksCoords[i].tickValue,\n subPixelOptimize: true,\n shape: {\n x1: pt1[0],\n y1: pt1[1],\n x2: pt2[0],\n y2: pt2[1]\n },\n style: tickLineStyle,\n z2: 2,\n silent: true\n });\n tickEls.push(tickEl);\n }\n\n return tickEls;\n}\n\nfunction buildAxisMajorTicks(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var tickModel = axisModel.getModel('axisTick');\n\n if (!tickModel.get('show') || axis.scale.isBlank()) {\n return;\n }\n\n var lineStyleModel = tickModel.getModel('lineStyle');\n var tickEndCoord = opt.tickDirection * tickModel.get('length');\n var ticksCoords = axis.getTicksCoords();\n var ticksEls = createTicks(ticksCoords, axisBuilder._transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {\n stroke: axisModel.get('axisLine.lineStyle.color')\n }), 'ticks');\n\n for (var i = 0; i < ticksEls.length; i++) {\n axisBuilder.group.add(ticksEls[i]);\n }\n\n return ticksEls;\n}\n\nfunction buildAxisMinorTicks(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var minorTickModel = axisModel.getModel('minorTick');\n\n if (!minorTickModel.get('show') || axis.scale.isBlank()) {\n return;\n }\n\n var minorTicksCoords = axis.getMinorTicksCoords();\n\n if (!minorTicksCoords.length) {\n return;\n }\n\n var lineStyleModel = minorTickModel.getModel('lineStyle');\n var tickEndCoord = opt.tickDirection * minorTickModel.get('length');\n var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel('axisTick').getLineStyle(), {\n stroke: axisModel.get('axisLine.lineStyle.color')\n }));\n\n for (var i = 0; i < minorTicksCoords.length; i++) {\n var minorTicksEls = createTicks(minorTicksCoords[i], axisBuilder._transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i);\n\n for (var k = 0; k < minorTicksEls.length; k++) {\n axisBuilder.group.add(minorTicksEls[k]);\n }\n }\n}\n\nfunction buildAxisLabel(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var show = retrieve(opt.axisLabelShow, axisModel.get('axisLabel.show'));\n\n if (!show || axis.scale.isBlank()) {\n return;\n }\n\n var labelModel = axisModel.getModel('axisLabel');\n var labelMargin = labelModel.get('margin');\n var labels = axis.getViewLabels(); // Special label rotate.\n\n var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI / 180;\n var labelLayout = innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);\n var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);\n var labelEls = [];\n var silent = isLabelSilent(axisModel);\n var triggerEvent = axisModel.get('triggerEvent');\n each(labels, function (labelItem, index) {\n var tickValue = labelItem.tickValue;\n var formattedLabel = labelItem.formattedLabel;\n var rawLabel = labelItem.rawLabel;\n var itemLabelModel = labelModel;\n\n if (rawCategoryData && rawCategoryData[tickValue] && rawCategoryData[tickValue].textStyle) {\n itemLabelModel = new Model(rawCategoryData[tickValue].textStyle, labelModel, axisModel.ecModel);\n }\n\n var textColor = itemLabelModel.getTextColor() || axisModel.get('axisLine.lineStyle.color');\n var tickCoord = axis.dataToCoord(tickValue);\n var pos = [tickCoord, opt.labelOffset + opt.labelDirection * labelMargin];\n var textEl = new graphic.Text({\n // Id for animation\n anid: 'label_' + tickValue,\n position: pos,\n rotation: labelLayout.rotation,\n silent: silent,\n z2: 10\n });\n graphic.setTextStyle(textEl.style, itemLabelModel, {\n text: formattedLabel,\n textAlign: itemLabelModel.getShallow('align', true) || labelLayout.textAlign,\n textVerticalAlign: itemLabelModel.getShallow('verticalAlign', true) || itemLabelModel.getShallow('baseline', true) || labelLayout.textVerticalAlign,\n textFill: typeof textColor === 'function' ? textColor( // (1) In category axis with data zoom, tick is not the original\n // index of axis.data. So tick should not be exposed to user\n // in category axis.\n // (2) Compatible with previous version, which always use formatted label as\n // input. But in interval scale the formatted label is like '223,445', which\n // maked user repalce ','. So we modify it to return original val but remain\n // it as 'string' to avoid error in replacing.\n axis.type === 'category' ? rawLabel : axis.type === 'value' ? tickValue + '' : tickValue, index) : textColor\n }); // Pack data for mouse event\n\n if (triggerEvent) {\n textEl.eventData = makeAxisEventDataBase(axisModel);\n textEl.eventData.targetType = 'axisLabel';\n textEl.eventData.value = rawLabel;\n } // FIXME\n\n\n axisBuilder._dumbGroup.add(textEl);\n\n textEl.updateTransform();\n labelEls.push(textEl);\n axisBuilder.group.add(textEl);\n textEl.decomposeTransform();\n });\n return labelEls;\n}\n\nvar _default = AxisBuilder;\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar axisPointerModelHelper = require(\"../axisPointer/modelHelper\");\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 * Base class of AxisView.\n */\nvar AxisView = echarts.extendComponentView({\n type: 'axis',\n\n /**\n * @private\n */\n _axisPointer: null,\n\n /**\n * @protected\n * @type {string}\n */\n axisPointerClass: null,\n\n /**\n * @override\n */\n render: function (axisModel, ecModel, api, payload) {\n // FIXME\n // This process should proformed after coordinate systems updated\n // (axis scale updated), and should be performed each time update.\n // So put it here temporarily, although it is not appropriate to\n // put a model-writing procedure in `view`.\n this.axisPointerClass && axisPointerModelHelper.fixValue(axisModel);\n AxisView.superApply(this, 'render', arguments);\n updateAxisPointer(this, axisModel, ecModel, api, payload, true);\n },\n\n /**\n * Action handler.\n * @public\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n updateAxisPointer: function (axisModel, ecModel, api, payload, force) {\n updateAxisPointer(this, axisModel, ecModel, api, payload, false);\n },\n\n /**\n * @override\n */\n remove: function (ecModel, api) {\n var axisPointer = this._axisPointer;\n axisPointer && axisPointer.remove(api);\n AxisView.superApply(this, 'remove', arguments);\n },\n\n /**\n * @override\n */\n dispose: function (ecModel, api) {\n disposeAxisPointer(this, api);\n AxisView.superApply(this, 'dispose', arguments);\n }\n});\n\nfunction updateAxisPointer(axisView, axisModel, ecModel, api, payload, forceRender) {\n var Clazz = AxisView.getAxisPointerClass(axisView.axisPointerClass);\n\n if (!Clazz) {\n return;\n }\n\n var axisPointerModel = axisPointerModelHelper.getAxisPointerModel(axisModel);\n axisPointerModel ? (axisView._axisPointer || (axisView._axisPointer = new Clazz())).render(axisModel, axisPointerModel, api, forceRender) : disposeAxisPointer(axisView, api);\n}\n\nfunction disposeAxisPointer(axisView, ecModel, api) {\n var axisPointer = axisView._axisPointer;\n axisPointer && axisPointer.dispose(ecModel, api);\n axisView._axisPointer = null;\n}\n\nvar axisPointerClazz = [];\n\nAxisView.registerAxisPointerClass = function (type, clazz) {\n axisPointerClazz[type] = clazz;\n};\n\nAxisView.getAxisPointerClass = function (type) {\n return type && axisPointerClazz[type];\n};\n\nvar _default = AxisView;\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 graphic = require(\"../../util/graphic\");\n\nvar AxisBuilder = require(\"./AxisBuilder\");\n\nvar AxisView = require(\"./AxisView\");\n\nvar cartesianAxisHelper = require(\"../../coord/cartesian/cartesianAxisHelper\");\n\nvar _axisSplitHelper = require(\"./axisSplitHelper\");\n\nvar rectCoordAxisBuildSplitArea = _axisSplitHelper.rectCoordAxisBuildSplitArea;\nvar rectCoordAxisHandleRemove = _axisSplitHelper.rectCoordAxisHandleRemove;\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 axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitArea', 'splitLine', 'minorSplitLine'];\nvar CartesianAxisView = AxisView.extend({\n type: 'cartesianAxis',\n axisPointerClass: 'CartesianAxisPointer',\n\n /**\n * @override\n */\n render: function (axisModel, ecModel, api, payload) {\n this.group.removeAll();\n var oldAxisGroup = this._axisGroup;\n this._axisGroup = new graphic.Group();\n this.group.add(this._axisGroup);\n\n if (!axisModel.get('show')) {\n return;\n }\n\n var gridModel = axisModel.getCoordSysModel();\n var layout = cartesianAxisHelper.layout(gridModel, axisModel);\n var axisBuilder = new AxisBuilder(axisModel, layout);\n zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n\n this._axisGroup.add(axisBuilder.getGroup());\n\n zrUtil.each(selfBuilderAttrs, function (name) {\n if (axisModel.get(name + '.show')) {\n this['_' + name](axisModel, gridModel);\n }\n }, this);\n graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel);\n CartesianAxisView.superCall(this, 'render', axisModel, ecModel, api, payload);\n },\n remove: function () {\n rectCoordAxisHandleRemove(this);\n },\n\n /**\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @private\n */\n _splitLine: function (axisModel, gridModel) {\n var axis = axisModel.axis;\n\n if (axis.scale.isBlank()) {\n return;\n }\n\n var splitLineModel = axisModel.getModel('splitLine');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var lineColors = lineStyleModel.get('color');\n lineColors = zrUtil.isArray(lineColors) ? lineColors : [lineColors];\n var gridRect = gridModel.coordinateSystem.getRect();\n var isHorizontal = axis.isHorizontal();\n var lineCount = 0;\n var ticksCoords = axis.getTicksCoords({\n tickModel: splitLineModel\n });\n var p1 = [];\n var p2 = [];\n var lineStyle = lineStyleModel.getLineStyle();\n\n for (var i = 0; i < ticksCoords.length; i++) {\n var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n\n if (isHorizontal) {\n p1[0] = tickCoord;\n p1[1] = gridRect.y;\n p2[0] = tickCoord;\n p2[1] = gridRect.y + gridRect.height;\n } else {\n p1[0] = gridRect.x;\n p1[1] = tickCoord;\n p2[0] = gridRect.x + gridRect.width;\n p2[1] = tickCoord;\n }\n\n var colorIndex = lineCount++ % lineColors.length;\n var tickValue = ticksCoords[i].tickValue;\n\n this._axisGroup.add(new graphic.Line({\n anid: tickValue != null ? 'line_' + ticksCoords[i].tickValue : null,\n subPixelOptimize: true,\n shape: {\n x1: p1[0],\n y1: p1[1],\n x2: p2[0],\n y2: p2[1]\n },\n style: zrUtil.defaults({\n stroke: lineColors[colorIndex]\n }, lineStyle),\n silent: true\n }));\n }\n },\n\n /**\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @private\n */\n _minorSplitLine: function (axisModel, gridModel) {\n var axis = axisModel.axis;\n var minorSplitLineModel = axisModel.getModel('minorSplitLine');\n var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n var gridRect = gridModel.coordinateSystem.getRect();\n var isHorizontal = axis.isHorizontal();\n var minorTicksCoords = axis.getMinorTicksCoords();\n\n if (!minorTicksCoords.length) {\n return;\n }\n\n var p1 = [];\n var p2 = [];\n var lineStyle = lineStyleModel.getLineStyle();\n\n for (var i = 0; i < minorTicksCoords.length; i++) {\n for (var k = 0; k < minorTicksCoords[i].length; k++) {\n var tickCoord = axis.toGlobalCoord(minorTicksCoords[i][k].coord);\n\n if (isHorizontal) {\n p1[0] = tickCoord;\n p1[1] = gridRect.y;\n p2[0] = tickCoord;\n p2[1] = gridRect.y + gridRect.height;\n } else {\n p1[0] = gridRect.x;\n p1[1] = tickCoord;\n p2[0] = gridRect.x + gridRect.width;\n p2[1] = tickCoord;\n }\n\n this._axisGroup.add(new graphic.Line({\n anid: 'minor_line_' + minorTicksCoords[i][k].tickValue,\n subPixelOptimize: true,\n shape: {\n x1: p1[0],\n y1: p1[1],\n x2: p2[0],\n y2: p2[1]\n },\n style: lineStyle,\n silent: true\n }));\n }\n }\n },\n\n /**\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @private\n */\n _splitArea: function (axisModel, gridModel) {\n rectCoordAxisBuildSplitArea(this, this._axisGroup, axisModel, gridModel);\n }\n});\nCartesianAxisView.extend({\n type: 'xAxis'\n});\nCartesianAxisView.extend({\n type: 'yAxis'\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\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar AxisBuilder = require(\"./AxisBuilder\");\n\nvar BrushController = require(\"../helper/BrushController\");\n\nvar brushHelper = require(\"../helper/brushHelper\");\n\nvar graphic = require(\"../../util/graphic\");\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 elementList = ['axisLine', 'axisTickLabel', 'axisName'];\nvar AxisView = echarts.extendComponentView({\n type: 'parallelAxis',\n\n /**\n * @override\n */\n init: function (ecModel, api) {\n AxisView.superApply(this, 'init', arguments);\n /**\n * @type {module:echarts/component/helper/BrushController}\n */\n\n (this._brushController = new BrushController(api.getZr())).on('brush', zrUtil.bind(this._onBrush, this));\n },\n\n /**\n * @override\n */\n render: function (axisModel, ecModel, api, payload) {\n if (fromAxisAreaSelect(axisModel, ecModel, payload)) {\n return;\n }\n\n this.axisModel = axisModel;\n this.api = api;\n this.group.removeAll();\n var oldAxisGroup = this._axisGroup;\n this._axisGroup = new graphic.Group();\n this.group.add(this._axisGroup);\n\n if (!axisModel.get('show')) {\n return;\n }\n\n var coordSysModel = getCoordSysModel(axisModel, ecModel);\n var coordSys = coordSysModel.coordinateSystem;\n var areaSelectStyle = axisModel.getAreaSelectStyle();\n var areaWidth = areaSelectStyle.width;\n var dim = axisModel.axis.dim;\n var axisLayout = coordSys.getAxisLayout(dim);\n var builderOpt = zrUtil.extend({\n strokeContainThreshold: areaWidth\n }, axisLayout);\n var axisBuilder = new AxisBuilder(axisModel, builderOpt);\n zrUtil.each(elementList, axisBuilder.add, axisBuilder);\n\n this._axisGroup.add(axisBuilder.getGroup());\n\n this._refreshBrushController(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api);\n\n var animationModel = payload && payload.animation === false ? null : axisModel;\n graphic.groupTransition(oldAxisGroup, this._axisGroup, animationModel);\n },\n // /**\n // * @override\n // */\n // updateVisual: function (axisModel, ecModel, api, payload) {\n // this._brushController && this._brushController\n // .updateCovers(getCoverInfoList(axisModel));\n // },\n _refreshBrushController: function (builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api) {\n // After filtering, axis may change, select area needs to be update.\n var extent = axisModel.axis.getExtent();\n var extentLen = extent[1] - extent[0];\n var extra = Math.min(30, Math.abs(extentLen) * 0.1); // Arbitrary value.\n // width/height might be negative, which will be\n // normalized in BoundingRect.\n\n var rect = graphic.BoundingRect.create({\n x: extent[0],\n y: -areaWidth / 2,\n width: extentLen,\n height: areaWidth\n });\n rect.x -= extra;\n rect.width += 2 * extra;\n\n this._brushController.mount({\n enableGlobalPan: true,\n rotation: builderOpt.rotation,\n position: builderOpt.position\n }).setPanels([{\n panelId: 'pl',\n clipPath: brushHelper.makeRectPanelClipPath(rect),\n isTargetByCursor: brushHelper.makeRectIsTargetByCursor(rect, api, coordSysModel),\n getLinearBrushOtherExtent: brushHelper.makeLinearBrushOtherExtent(rect, 0)\n }]).enableBrush({\n brushType: 'lineX',\n brushStyle: areaSelectStyle,\n removeOnClick: true\n }).updateCovers(getCoverInfoList(axisModel));\n },\n _onBrush: function (coverInfoList, opt) {\n // Do not cache these object, because the mey be changed.\n var axisModel = this.axisModel;\n var axis = axisModel.axis;\n var intervals = zrUtil.map(coverInfoList, function (coverInfo) {\n return [axis.coordToData(coverInfo.range[0], true), axis.coordToData(coverInfo.range[1], true)];\n }); // If realtime is true, action is not dispatched on drag end, because\n // the drag end emits the same params with the last drag move event,\n // and may have some delay when using touch pad.\n\n if (!axisModel.option.realtime === opt.isEnd || opt.removeOnClick) {\n // jshint ignore:line\n this.api.dispatchAction({\n type: 'axisAreaSelect',\n parallelAxisId: axisModel.id,\n intervals: intervals\n });\n }\n },\n\n /**\n * @override\n */\n dispose: function () {\n this._brushController.dispose();\n }\n});\n\nfunction fromAxisAreaSelect(axisModel, ecModel, payload) {\n return payload && payload.type === 'axisAreaSelect' && ecModel.findComponents({\n mainType: 'parallelAxis',\n query: payload\n })[0] === axisModel;\n}\n\nfunction getCoverInfoList(axisModel) {\n var axis = axisModel.axis;\n return zrUtil.map(axisModel.activeIntervals, function (interval) {\n return {\n brushType: 'lineX',\n panelId: 'pl',\n range: [axis.dataToCoord(interval[0], true), axis.dataToCoord(interval[1], true)]\n };\n });\n}\n\nfunction getCoordSysModel(axisModel, ecModel) {\n return ecModel.getComponent('parallel', axisModel.get('parallelIndex'));\n}\n\nvar _default = AxisView;\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 graphic = require(\"../../util/graphic\");\n\nvar AxisBuilder = require(\"./AxisBuilder\");\n\nvar AxisView = require(\"./AxisView\");\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 axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitLine', 'splitArea', 'minorSplitLine'];\n\nvar _default = AxisView.extend({\n type: 'radiusAxis',\n axisPointerClass: 'PolarAxisPointer',\n render: function (radiusAxisModel, ecModel) {\n this.group.removeAll();\n\n if (!radiusAxisModel.get('show')) {\n return;\n }\n\n var radiusAxis = radiusAxisModel.axis;\n var polar = radiusAxis.polar;\n var angleAxis = polar.getAngleAxis();\n var ticksCoords = radiusAxis.getTicksCoords();\n var minorTicksCoords = radiusAxis.getMinorTicksCoords();\n var axisAngle = angleAxis.getExtent()[0];\n var radiusExtent = radiusAxis.getExtent();\n var layout = layoutAxis(polar, radiusAxisModel, axisAngle);\n var axisBuilder = new AxisBuilder(radiusAxisModel, layout);\n zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n this.group.add(axisBuilder.getGroup());\n zrUtil.each(selfBuilderAttrs, function (name) {\n if (radiusAxisModel.get(name + '.show') && !radiusAxis.scale.isBlank()) {\n this['_' + name](radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords);\n }\n }, this);\n },\n\n /**\n * @private\n */\n _splitLine: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\n var splitLineModel = radiusAxisModel.getModel('splitLine');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var lineColors = lineStyleModel.get('color');\n var lineCount = 0;\n lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n var splitLines = [];\n\n for (var i = 0; i < ticksCoords.length; i++) {\n var colorIndex = lineCount++ % lineColors.length;\n splitLines[colorIndex] = splitLines[colorIndex] || [];\n splitLines[colorIndex].push(new graphic.Circle({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r: ticksCoords[i].coord\n }\n }));\n } // Simple optimization\n // Batching the lines if color are the same\n\n\n for (var i = 0; i < splitLines.length; i++) {\n this.group.add(graphic.mergePath(splitLines[i], {\n style: zrUtil.defaults({\n stroke: lineColors[i % lineColors.length],\n fill: null\n }, lineStyleModel.getLineStyle()),\n silent: true\n }));\n }\n },\n\n /**\n * @private\n */\n _minorSplitLine: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords) {\n if (!minorTicksCoords.length) {\n return;\n }\n\n var minorSplitLineModel = radiusAxisModel.getModel('minorSplitLine');\n var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n var lines = [];\n\n for (var i = 0; i < minorTicksCoords.length; i++) {\n for (var k = 0; k < minorTicksCoords[i].length; k++) {\n lines.push(new graphic.Circle({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r: minorTicksCoords[i][k].coord\n }\n }));\n }\n }\n\n this.group.add(graphic.mergePath(lines, {\n style: zrUtil.defaults({\n fill: null\n }, lineStyleModel.getLineStyle()),\n silent: true\n }));\n },\n\n /**\n * @private\n */\n _splitArea: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\n if (!ticksCoords.length) {\n return;\n }\n\n var splitAreaModel = radiusAxisModel.getModel('splitArea');\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\n var areaColors = areaStyleModel.get('color');\n var lineCount = 0;\n areaColors = areaColors instanceof Array ? areaColors : [areaColors];\n var splitAreas = [];\n var prevRadius = ticksCoords[0].coord;\n\n for (var i = 1; i < ticksCoords.length; i++) {\n var colorIndex = lineCount++ % areaColors.length;\n splitAreas[colorIndex] = splitAreas[colorIndex] || [];\n splitAreas[colorIndex].push(new graphic.Sector({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r0: prevRadius,\n r: ticksCoords[i].coord,\n startAngle: 0,\n endAngle: Math.PI * 2\n },\n silent: true\n }));\n prevRadius = ticksCoords[i].coord;\n } // Simple optimization\n // Batching the lines if color are the same\n\n\n for (var i = 0; i < splitAreas.length; i++) {\n this.group.add(graphic.mergePath(splitAreas[i], {\n style: zrUtil.defaults({\n fill: areaColors[i % areaColors.length]\n }, areaStyleModel.getAreaStyle()),\n silent: true\n }));\n }\n }\n});\n/**\n * @inner\n */\n\n\nfunction layoutAxis(polar, radiusAxisModel, axisAngle) {\n return {\n position: [polar.cx, polar.cy],\n rotation: axisAngle / 180 * Math.PI,\n labelDirection: -1,\n tickDirection: -1,\n nameDirection: 1,\n labelRotate: radiusAxisModel.getModel('axisLabel').get('rotate'),\n // Over splitLine and splitArea\n z2: 1\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar AxisBuilder = require(\"./AxisBuilder\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar singleAxisHelper = require(\"../../coord/single/singleAxisHelper\");\n\nvar AxisView = require(\"./AxisView\");\n\nvar _axisSplitHelper = require(\"./axisSplitHelper\");\n\nvar rectCoordAxisBuildSplitArea = _axisSplitHelper.rectCoordAxisBuildSplitArea;\nvar rectCoordAxisHandleRemove = _axisSplitHelper.rectCoordAxisHandleRemove;\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 axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitArea', 'splitLine'];\nvar SingleAxisView = AxisView.extend({\n type: 'singleAxis',\n axisPointerClass: 'SingleAxisPointer',\n render: function (axisModel, ecModel, api, payload) {\n var group = this.group;\n group.removeAll();\n var oldAxisGroup = this._axisGroup;\n this._axisGroup = new graphic.Group();\n var layout = singleAxisHelper.layout(axisModel);\n var axisBuilder = new AxisBuilder(axisModel, layout);\n zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n group.add(this._axisGroup);\n group.add(axisBuilder.getGroup());\n zrUtil.each(selfBuilderAttrs, function (name) {\n if (axisModel.get(name + '.show')) {\n this['_' + name](axisModel);\n }\n }, this);\n graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel);\n SingleAxisView.superCall(this, 'render', axisModel, ecModel, api, payload);\n },\n remove: function () {\n rectCoordAxisHandleRemove(this);\n },\n _splitLine: function (axisModel) {\n var axis = axisModel.axis;\n\n if (axis.scale.isBlank()) {\n return;\n }\n\n var splitLineModel = axisModel.getModel('splitLine');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var lineWidth = lineStyleModel.get('width');\n var lineColors = lineStyleModel.get('color');\n lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n var gridRect = axisModel.coordinateSystem.getRect();\n var isHorizontal = axis.isHorizontal();\n var splitLines = [];\n var lineCount = 0;\n var ticksCoords = axis.getTicksCoords({\n tickModel: splitLineModel\n });\n var p1 = [];\n var p2 = [];\n\n for (var i = 0; i < ticksCoords.length; ++i) {\n var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n\n if (isHorizontal) {\n p1[0] = tickCoord;\n p1[1] = gridRect.y;\n p2[0] = tickCoord;\n p2[1] = gridRect.y + gridRect.height;\n } else {\n p1[0] = gridRect.x;\n p1[1] = tickCoord;\n p2[0] = gridRect.x + gridRect.width;\n p2[1] = tickCoord;\n }\n\n var colorIndex = lineCount++ % lineColors.length;\n splitLines[colorIndex] = splitLines[colorIndex] || [];\n splitLines[colorIndex].push(new graphic.Line({\n subPixelOptimize: true,\n shape: {\n x1: p1[0],\n y1: p1[1],\n x2: p2[0],\n y2: p2[1]\n },\n style: {\n lineWidth: lineWidth\n },\n silent: true\n }));\n }\n\n for (var i = 0; i < splitLines.length; ++i) {\n this.group.add(graphic.mergePath(splitLines[i], {\n style: {\n stroke: lineColors[i % lineColors.length],\n lineDash: lineStyleModel.getLineDash(lineWidth),\n lineWidth: lineWidth\n },\n silent: true\n }));\n }\n },\n _splitArea: function (axisModel) {\n rectCoordAxisBuildSplitArea(this, this._axisGroup, axisModel, axisModel);\n }\n});\nvar _default = SingleAxisView;\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 graphic = require(\"../../util/graphic\");\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 rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel) {\n var axis = axisModel.axis;\n\n if (axis.scale.isBlank()) {\n return;\n }\n\n var splitAreaModel = axisModel.getModel('splitArea');\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\n var areaColors = areaStyleModel.get('color');\n var gridRect = gridModel.coordinateSystem.getRect();\n var ticksCoords = axis.getTicksCoords({\n tickModel: splitAreaModel,\n clamp: true\n });\n\n if (!ticksCoords.length) {\n return;\n } // For Making appropriate splitArea animation, the color and anid\n // should be corresponding to previous one if possible.\n\n\n var areaColorsLen = areaColors.length;\n var lastSplitAreaColors = axisView.__splitAreaColors;\n var newSplitAreaColors = zrUtil.createHashMap();\n var colorIndex = 0;\n\n if (lastSplitAreaColors) {\n for (var i = 0; i < ticksCoords.length; i++) {\n var cIndex = lastSplitAreaColors.get(ticksCoords[i].tickValue);\n\n if (cIndex != null) {\n colorIndex = (cIndex + (areaColorsLen - 1) * i) % areaColorsLen;\n break;\n }\n }\n }\n\n var prev = axis.toGlobalCoord(ticksCoords[0].coord);\n var areaStyle = areaStyleModel.getAreaStyle();\n areaColors = zrUtil.isArray(areaColors) ? areaColors : [areaColors];\n\n for (var i = 1; i < ticksCoords.length; i++) {\n var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n var x;\n var y;\n var width;\n var height;\n\n if (axis.isHorizontal()) {\n x = prev;\n y = gridRect.y;\n width = tickCoord - x;\n height = gridRect.height;\n prev = x + width;\n } else {\n x = gridRect.x;\n y = prev;\n width = gridRect.width;\n height = tickCoord - y;\n prev = y + height;\n }\n\n var tickValue = ticksCoords[i - 1].tickValue;\n tickValue != null && newSplitAreaColors.set(tickValue, colorIndex);\n axisGroup.add(new graphic.Rect({\n anid: tickValue != null ? 'area_' + tickValue : null,\n shape: {\n x: x,\n y: y,\n width: width,\n height: height\n },\n style: zrUtil.defaults({\n fill: areaColors[colorIndex]\n }, areaStyle),\n silent: true\n }));\n colorIndex = (colorIndex + 1) % areaColorsLen;\n }\n\n axisView.__splitAreaColors = newSplitAreaColors;\n}\n\nfunction rectCoordAxisHandleRemove(axisView) {\n axisView.__splitAreaColors = null;\n}\n\nexports.rectCoordAxisBuildSplitArea = rectCoordAxisBuildSplitArea;\nexports.rectCoordAxisHandleRemove = rectCoordAxisHandleRemove;","\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 {string} parallelAxisId\n * @property {Array.>} intervals\n */\nvar actionInfo = {\n type: 'axisAreaSelect',\n event: 'axisAreaSelected' // update: 'updateVisual'\n\n};\necharts.registerAction(actionInfo, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'parallelAxis',\n query: payload\n }, function (parallelAxisModel) {\n parallelAxisModel.axis.model.setActiveIntervals(payload.intervals);\n });\n});\n/**\n * @payload\n */\n\necharts.registerAction('parallelAxisExpand', function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'parallel',\n query: payload\n }, function (parallelModel) {\n parallelModel.setAxisExpand(payload);\n });\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar preprocessor = require(\"./brush/preprocessor\");\n\nrequire(\"./brush/visualEncoding\");\n\nrequire(\"./brush/BrushModel\");\n\nrequire(\"./brush/BrushView\");\n\nrequire(\"./brush/brushAction\");\n\nrequire(\"./toolbox/feature/Brush\");\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 * Brush component entry\n */\necharts.registerPreprocessor(preprocessor);","\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar visualSolution = require(\"../../visual/visualSolution\");\n\nvar Model = require(\"../../model/Model\");\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 DEFAULT_OUT_OF_BRUSH_COLOR = ['#ddd'];\nvar BrushModel = echarts.extendComponentModel({\n type: 'brush',\n dependencies: ['geo', 'grid', 'xAxis', 'yAxis', 'parallel', 'series'],\n\n /**\n * @protected\n */\n defaultOption: {\n // inBrush: null,\n // outOfBrush: null,\n toolbox: null,\n // Default value see preprocessor.\n brushLink: null,\n // Series indices array, broadcast using dataIndex.\n // or 'all', which means all series. 'none' or null means no series.\n seriesIndex: 'all',\n // seriesIndex array, specify series controlled by this brush component.\n geoIndex: null,\n //\n xAxisIndex: null,\n yAxisIndex: null,\n brushType: 'rect',\n // Default brushType, see BrushController.\n brushMode: 'single',\n // Default brushMode, 'single' or 'multiple'\n transformable: true,\n // Default transformable.\n brushStyle: {\n // Default brushStyle\n borderWidth: 1,\n color: 'rgba(120,140,180,0.3)',\n borderColor: 'rgba(120,140,180,0.8)'\n },\n throttleType: 'fixRate',\n // Throttle in brushSelected event. 'fixRate' or 'debounce'.\n // If null, no throttle. Valid only in the first brush component\n throttleDelay: 0,\n // Unit: ms, 0 means every event will be triggered.\n // FIXME\n // 试验效果\n removeOnClick: true,\n z: 10000\n },\n\n /**\n * @readOnly\n * @type {Array.}\n */\n areas: [],\n\n /**\n * Current activated brush type.\n * If null, brush is inactived.\n * see module:echarts/component/helper/BrushController\n * @readOnly\n * @type {string}\n */\n brushType: null,\n\n /**\n * Current brush opt.\n * see module:echarts/component/helper/BrushController\n * @readOnly\n * @type {Object}\n */\n brushOption: {},\n\n /**\n * @readOnly\n * @type {Array.}\n */\n coordInfoList: [],\n optionUpdated: function (newOption, isInit) {\n var thisOption = this.option;\n !isInit && visualSolution.replaceVisualOption(thisOption, newOption, ['inBrush', 'outOfBrush']);\n var inBrush = thisOption.inBrush = thisOption.inBrush || {}; // Always give default visual, consider setOption at the second time.\n\n thisOption.outOfBrush = thisOption.outOfBrush || {\n color: DEFAULT_OUT_OF_BRUSH_COLOR\n };\n\n if (!inBrush.hasOwnProperty('liftZ')) {\n // Bigger than the highlight z lift, otherwise it will\n // be effected by the highlight z when brush.\n inBrush.liftZ = 5;\n }\n },\n\n /**\n * If ranges is null/undefined, range state remain.\n *\n * @param {Array.} [ranges]\n */\n setAreas: function (areas) {\n // If ranges is null/undefined, range state remain.\n // This helps user to dispatchAction({type: 'brush'}) with no areas\n // set but just want to get the current brush select info from a `brush` event.\n if (!areas) {\n return;\n }\n\n this.areas = zrUtil.map(areas, function (area) {\n return generateBrushOption(this.option, area);\n }, this);\n },\n\n /**\n * see module:echarts/component/helper/BrushController\n * @param {Object} brushOption\n */\n setBrushOption: function (brushOption) {\n this.brushOption = generateBrushOption(this.option, brushOption);\n this.brushType = this.brushOption.brushType;\n }\n});\n\nfunction generateBrushOption(option, brushOption) {\n return zrUtil.merge({\n brushType: option.brushType,\n brushMode: option.brushMode,\n transformable: option.transformable,\n brushStyle: new Model(option.brushStyle).getItemStyle(),\n removeOnClick: option.removeOnClick,\n z: option.z\n }, brushOption, true);\n}\n\nvar _default = BrushModel;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar BrushController = require(\"../helper/BrushController\");\n\nvar _visualEncoding = require(\"./visualEncoding\");\n\nvar layoutCovers = _visualEncoding.layoutCovers;\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 _default = echarts.extendComponentView({\n type: 'brush',\n init: function (ecModel, api) {\n /**\n * @readOnly\n * @type {module:echarts/model/Global}\n */\n this.ecModel = ecModel;\n /**\n * @readOnly\n * @type {module:echarts/ExtensionAPI}\n */\n\n this.api = api;\n /**\n * @readOnly\n * @type {module:echarts/component/brush/BrushModel}\n */\n\n this.model;\n /**\n * @private\n * @type {module:echarts/component/helper/BrushController}\n */\n\n (this._brushController = new BrushController(api.getZr())).on('brush', zrUtil.bind(this._onBrush, this)).mount();\n },\n\n /**\n * @override\n */\n render: function (brushModel) {\n this.model = brushModel;\n return updateController.apply(this, arguments);\n },\n\n /**\n * @override\n */\n updateTransform: function (brushModel, ecModel) {\n // PENDING: `updateTransform` is a little tricky, whose layout need\n // to be calculate mandatorily and other stages will not be performed.\n // Take care the correctness of the logic. See #11754 .\n layoutCovers(ecModel);\n return updateController.apply(this, arguments);\n },\n\n /**\n * @override\n */\n updateView: updateController,\n // /**\n // * @override\n // */\n // updateLayout: updateController,\n // /**\n // * @override\n // */\n // updateVisual: updateController,\n\n /**\n * @override\n */\n dispose: function () {\n this._brushController.dispose();\n },\n\n /**\n * @private\n */\n _onBrush: function (areas, opt) {\n var modelId = this.model.id;\n this.model.brushTargetManager.setOutputRanges(areas, this.ecModel); // Action is not dispatched on drag end, because the drag end\n // emits the same params with the last drag move event, and\n // may have some delay when using touch pad, which makes\n // animation not smooth (when using debounce).\n\n (!opt.isEnd || opt.removeOnClick) && this.api.dispatchAction({\n type: 'brush',\n brushId: modelId,\n areas: zrUtil.clone(areas),\n $from: modelId\n });\n opt.isEnd && this.api.dispatchAction({\n type: 'brushEnd',\n brushId: modelId,\n areas: zrUtil.clone(areas),\n $from: modelId\n });\n }\n});\n\nfunction updateController(brushModel, ecModel, api, payload) {\n // Do not update controller when drawing.\n (!payload || payload.$from !== brushModel.id) && this._brushController.setPanels(brushModel.brushTargetManager.makePanelOpts(api)).enableBrush(brushModel.brushOption).updateCovers(brushModel.areas.slice());\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 * brushIndex: number, or,\n * brushId: string, or,\n * brushName: string,\n * globalRanges: Array\n * }\n */\necharts.registerAction({\n type: 'brush',\n event: 'brush'\n /*, update: 'updateView' */\n\n}, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'brush',\n query: payload\n }, function (brushModel) {\n brushModel.setAreas(payload.areas);\n });\n});\n/**\n * payload: {\n * brushComponents: [\n * {\n * brushId,\n * brushIndex,\n * brushName,\n * series: [\n * {\n * seriesId,\n * seriesIndex,\n * seriesName,\n * rawIndices: [21, 34, ...]\n * },\n * ...\n * ]\n * },\n * ...\n * ]\n * }\n */\n\necharts.registerAction({\n type: 'brushSelect',\n event: 'brushSelected',\n update: 'none'\n}, function () {});\necharts.registerAction({\n type: 'brushEnd',\n event: 'brushEnd',\n update: 'none'\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 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*/\nvar DEFAULT_TOOLBOX_BTNS = ['rect', 'polygon', 'keep', 'clear'];\n\nfunction _default(option, isNew) {\n var brushComponents = option && option.brush;\n\n if (!zrUtil.isArray(brushComponents)) {\n brushComponents = brushComponents ? [brushComponents] : [];\n }\n\n if (!brushComponents.length) {\n return;\n }\n\n var brushComponentSpecifiedBtns = [];\n zrUtil.each(brushComponents, function (brushOpt) {\n var tbs = brushOpt.hasOwnProperty('toolbox') ? brushOpt.toolbox : [];\n\n if (tbs instanceof Array) {\n brushComponentSpecifiedBtns = brushComponentSpecifiedBtns.concat(tbs);\n }\n });\n var toolbox = option && option.toolbox;\n\n if (zrUtil.isArray(toolbox)) {\n toolbox = toolbox[0];\n }\n\n if (!toolbox) {\n toolbox = {\n feature: {}\n };\n option.toolbox = [toolbox];\n }\n\n var toolboxFeature = toolbox.feature || (toolbox.feature = {});\n var toolboxBrush = toolboxFeature.brush || (toolboxFeature.brush = {});\n var brushTypes = toolboxBrush.type || (toolboxBrush.type = []);\n brushTypes.push.apply(brushTypes, brushComponentSpecifiedBtns);\n removeDuplicate(brushTypes);\n\n if (isNew && !brushTypes.length) {\n brushTypes.push.apply(brushTypes, DEFAULT_TOOLBOX_BTNS);\n }\n}\n\nfunction removeDuplicate(arr) {\n var map = {};\n zrUtil.each(arr, function (val) {\n map[val] = 1;\n });\n arr.length = 0;\n zrUtil.each(map, function (flag, val) {\n arr.push(val);\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 polygonContain = require(\"zrender/lib/contain/polygon\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _graphic = require(\"../../util/graphic\");\n\nvar linePolygonIntersect = _graphic.linePolygonIntersect;\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// Key of the first level is brushType: `line`, `rect`, `polygon`.\n// Key of the second level is chart element type: `point`, `rect`.\n// See moudule:echarts/component/helper/BrushController\n// function param:\n// {Object} itemLayout fetch from data.getItemLayout(dataIndex)\n// {Object} selectors {point: selector, rect: selector, ...}\n// {Object} area {range: [[], [], ..], boudingRect}\n// function return:\n// {boolean} Whether in the given brush.\nvar selector = {\n lineX: getLineSelectors(0),\n lineY: getLineSelectors(1),\n rect: {\n point: function (itemLayout, selectors, area) {\n return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]);\n },\n rect: function (itemLayout, selectors, area) {\n return itemLayout && area.boundingRect.intersect(itemLayout);\n }\n },\n polygon: {\n point: function (itemLayout, selectors, area) {\n return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]) && polygonContain.contain(area.range, itemLayout[0], itemLayout[1]);\n },\n rect: function (itemLayout, selectors, area) {\n var points = area.range;\n\n if (!itemLayout || points.length <= 1) {\n return false;\n }\n\n var x = itemLayout.x;\n var y = itemLayout.y;\n var width = itemLayout.width;\n var height = itemLayout.height;\n var p = points[0];\n\n if (polygonContain.contain(points, x, y) || polygonContain.contain(points, x + width, y) || polygonContain.contain(points, x, y + height) || polygonContain.contain(points, x + width, y + height) || BoundingRect.create(itemLayout).contain(p[0], p[1]) || linePolygonIntersect(x, y, x + width, y, points) || linePolygonIntersect(x, y, x, y + height, points) || linePolygonIntersect(x + width, y, x + width, y + height, points) || linePolygonIntersect(x, y + height, x + width, y + height, points)) {\n return true;\n }\n }\n }\n};\n\nfunction getLineSelectors(xyIndex) {\n var xy = ['x', 'y'];\n var wh = ['width', 'height'];\n return {\n point: function (itemLayout, selectors, area) {\n if (itemLayout) {\n var range = area.range;\n var p = itemLayout[xyIndex];\n return inLineRange(p, range);\n }\n },\n rect: function (itemLayout, selectors, area) {\n if (itemLayout) {\n var range = area.range;\n var layoutRange = [itemLayout[xy[xyIndex]], itemLayout[xy[xyIndex]] + itemLayout[wh[xyIndex]]];\n layoutRange[1] < layoutRange[0] && layoutRange.reverse();\n return inLineRange(layoutRange[0], range) || inLineRange(layoutRange[1], range) || inLineRange(range[0], layoutRange) || inLineRange(range[1], layoutRange);\n }\n }\n };\n}\n\nfunction inLineRange(p, range) {\n return range[0] <= p && p <= range[1];\n}\n\nvar _default = selector;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar visualSolution = require(\"../../visual/visualSolution\");\n\nvar selector = require(\"./selector\");\n\nvar throttleUtil = require(\"../../util/throttle\");\n\nvar BrushTargetManager = require(\"../helper/BrushTargetManager\");\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 STATE_LIST = ['inBrush', 'outOfBrush'];\nvar DISPATCH_METHOD = '__ecBrushSelect';\nvar DISPATCH_FLAG = '__ecInBrushSelectEvent';\nvar PRIORITY_BRUSH = echarts.PRIORITY.VISUAL.BRUSH;\n/**\n * Layout for visual, the priority higher than other layout, and before brush visual.\n */\n\necharts.registerLayout(PRIORITY_BRUSH, function (ecModel, api, payload) {\n ecModel.eachComponent({\n mainType: 'brush'\n }, function (brushModel) {\n payload && payload.type === 'takeGlobalCursor' && brushModel.setBrushOption(payload.key === 'brush' ? payload.brushOption : {\n brushType: false\n });\n });\n layoutCovers(ecModel);\n});\n\nfunction layoutCovers(ecModel) {\n ecModel.eachComponent({\n mainType: 'brush'\n }, function (brushModel) {\n var brushTargetManager = brushModel.brushTargetManager = new BrushTargetManager(brushModel.option, ecModel);\n brushTargetManager.setInputRanges(brushModel.areas, ecModel);\n });\n}\n/**\n * Register the visual encoding if this modules required.\n */\n\n\necharts.registerVisual(PRIORITY_BRUSH, function (ecModel, api, payload) {\n var brushSelected = [];\n var throttleType;\n var throttleDelay;\n ecModel.eachComponent({\n mainType: 'brush'\n }, function (brushModel, brushIndex) {\n var thisBrushSelected = {\n brushId: brushModel.id,\n brushIndex: brushIndex,\n brushName: brushModel.name,\n areas: zrUtil.clone(brushModel.areas),\n selected: []\n }; // Every brush component exists in event params, convenient\n // for user to find by index.\n\n brushSelected.push(thisBrushSelected);\n var brushOption = brushModel.option;\n var brushLink = brushOption.brushLink;\n var linkedSeriesMap = [];\n var selectedDataIndexForLink = [];\n var rangeInfoBySeries = [];\n var hasBrushExists = 0;\n\n if (!brushIndex) {\n // Only the first throttle setting works.\n throttleType = brushOption.throttleType;\n throttleDelay = brushOption.throttleDelay;\n } // Add boundingRect and selectors to range.\n\n\n var areas = zrUtil.map(brushModel.areas, function (area) {\n return bindSelector(zrUtil.defaults({\n boundingRect: boundingRectBuilders[area.brushType](area)\n }, area));\n });\n var visualMappings = visualSolution.createVisualMappings(brushModel.option, STATE_LIST, function (mappingOption) {\n mappingOption.mappingMethod = 'fixed';\n });\n zrUtil.isArray(brushLink) && zrUtil.each(brushLink, function (seriesIndex) {\n linkedSeriesMap[seriesIndex] = 1;\n });\n\n function linkOthers(seriesIndex) {\n return brushLink === 'all' || linkedSeriesMap[seriesIndex];\n } // If no supported brush or no brush on the series,\n // all visuals should be in original state.\n\n\n function brushed(rangeInfoList) {\n return !!rangeInfoList.length;\n }\n /**\n * Logic for each series: (If the logic has to be modified one day, do it carefully!)\n *\n * ( brushed ┬ && ┬hasBrushExist ┬ && linkOthers ) => StepA: ┬record, ┬ StepB: ┬visualByRecord.\n * !brushed┘ ├hasBrushExist ┤ └nothing,┘ ├visualByRecord.\n * └!hasBrushExist┘ └nothing.\n * ( !brushed && ┬hasBrushExist ┬ && linkOthers ) => StepA: nothing, StepB: ┬visualByRecord.\n * └!hasBrushExist┘ └nothing.\n * ( brushed ┬ && !linkOthers ) => StepA: nothing, StepB: ┬visualByCheck.\n * !brushed┘ └nothing.\n * ( !brushed && !linkOthers ) => StepA: nothing, StepB: nothing.\n */\n // Step A\n\n\n ecModel.eachSeries(function (seriesModel, seriesIndex) {\n var rangeInfoList = rangeInfoBySeries[seriesIndex] = [];\n seriesModel.subType === 'parallel' ? stepAParallel(seriesModel, seriesIndex, rangeInfoList) : stepAOthers(seriesModel, seriesIndex, rangeInfoList);\n });\n\n function stepAParallel(seriesModel, seriesIndex) {\n var coordSys = seriesModel.coordinateSystem;\n hasBrushExists |= coordSys.hasAxisBrushed();\n linkOthers(seriesIndex) && coordSys.eachActiveState(seriesModel.getData(), function (activeState, dataIndex) {\n activeState === 'active' && (selectedDataIndexForLink[dataIndex] = 1);\n });\n }\n\n function stepAOthers(seriesModel, seriesIndex, rangeInfoList) {\n var selectorsByBrushType = getSelectorsByBrushType(seriesModel);\n\n if (!selectorsByBrushType || brushModelNotControll(brushModel, seriesIndex)) {\n return;\n }\n\n zrUtil.each(areas, function (area) {\n selectorsByBrushType[area.brushType] && brushModel.brushTargetManager.controlSeries(area, seriesModel, ecModel) && rangeInfoList.push(area);\n hasBrushExists |= brushed(rangeInfoList);\n });\n\n if (linkOthers(seriesIndex) && brushed(rangeInfoList)) {\n var data = seriesModel.getData();\n data.each(function (dataIndex) {\n if (checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex)) {\n selectedDataIndexForLink[dataIndex] = 1;\n }\n });\n }\n } // Step B\n\n\n ecModel.eachSeries(function (seriesModel, seriesIndex) {\n var seriesBrushSelected = {\n seriesId: seriesModel.id,\n seriesIndex: seriesIndex,\n seriesName: seriesModel.name,\n dataIndex: []\n }; // Every series exists in event params, convenient\n // for user to find series by seriesIndex.\n\n thisBrushSelected.selected.push(seriesBrushSelected);\n var selectorsByBrushType = getSelectorsByBrushType(seriesModel);\n var rangeInfoList = rangeInfoBySeries[seriesIndex];\n var data = seriesModel.getData();\n var getValueState = linkOthers(seriesIndex) ? function (dataIndex) {\n return selectedDataIndexForLink[dataIndex] ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') : 'outOfBrush';\n } : function (dataIndex) {\n return checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex) ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') : 'outOfBrush';\n }; // If no supported brush or no brush, all visuals are in original state.\n\n (linkOthers(seriesIndex) ? hasBrushExists : brushed(rangeInfoList)) && visualSolution.applyVisual(STATE_LIST, visualMappings, data, getValueState);\n });\n });\n dispatchAction(api, throttleType, throttleDelay, brushSelected, payload);\n});\n\nfunction dispatchAction(api, throttleType, throttleDelay, brushSelected, payload) {\n // This event will not be triggered when `setOpion`, otherwise dead lock may\n // triggered when do `setOption` in event listener, which we do not find\n // satisfactory way to solve yet. Some considered resolutions:\n // (a) Diff with prevoius selected data ant only trigger event when changed.\n // But store previous data and diff precisely (i.e., not only by dataIndex, but\n // also detect value changes in selected data) might bring complexity or fragility.\n // (b) Use spectial param like `silent` to suppress event triggering.\n // But such kind of volatile param may be weird in `setOption`.\n if (!payload) {\n return;\n }\n\n var zr = api.getZr();\n\n if (zr[DISPATCH_FLAG]) {\n return;\n }\n\n if (!zr[DISPATCH_METHOD]) {\n zr[DISPATCH_METHOD] = doDispatch;\n }\n\n var fn = throttleUtil.createOrUpdate(zr, DISPATCH_METHOD, throttleDelay, throttleType);\n fn(api, brushSelected);\n}\n\nfunction doDispatch(api, brushSelected) {\n if (!api.isDisposed()) {\n var zr = api.getZr();\n zr[DISPATCH_FLAG] = true;\n api.dispatchAction({\n type: 'brushSelect',\n batch: brushSelected\n });\n zr[DISPATCH_FLAG] = false;\n }\n}\n\nfunction checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex) {\n for (var i = 0, len = rangeInfoList.length; i < len; i++) {\n var area = rangeInfoList[i];\n\n if (selectorsByBrushType[area.brushType](dataIndex, data, area.selectors, area)) {\n return true;\n }\n }\n}\n\nfunction getSelectorsByBrushType(seriesModel) {\n var brushSelector = seriesModel.brushSelector;\n\n if (zrUtil.isString(brushSelector)) {\n var sels = [];\n zrUtil.each(selector, function (selectorsByElementType, brushType) {\n sels[brushType] = function (dataIndex, data, selectors, area) {\n var itemLayout = data.getItemLayout(dataIndex);\n return selectorsByElementType[brushSelector](itemLayout, selectors, area);\n };\n });\n return sels;\n } else if (zrUtil.isFunction(brushSelector)) {\n var bSelector = {};\n zrUtil.each(selector, function (sel, brushType) {\n bSelector[brushType] = brushSelector;\n });\n return bSelector;\n }\n\n return brushSelector;\n}\n\nfunction brushModelNotControll(brushModel, seriesIndex) {\n var seriesIndices = brushModel.option.seriesIndex;\n return seriesIndices != null && seriesIndices !== 'all' && (zrUtil.isArray(seriesIndices) ? zrUtil.indexOf(seriesIndices, seriesIndex) < 0 : seriesIndex !== seriesIndices);\n}\n\nfunction bindSelector(area) {\n var selectors = area.selectors = {};\n zrUtil.each(selector[area.brushType], function (selFn, elType) {\n // Do not use function binding or curry for performance.\n selectors[elType] = function (itemLayout) {\n return selFn(itemLayout, selectors, area);\n };\n });\n return area;\n}\n\nvar boundingRectBuilders = {\n lineX: zrUtil.noop,\n lineY: zrUtil.noop,\n rect: function (area) {\n return getBoundingRectFromMinMax(area.range);\n },\n polygon: function (area) {\n var minMax;\n var range = area.range;\n\n for (var i = 0, len = range.length; i < len; i++) {\n minMax = minMax || [[Infinity, -Infinity], [Infinity, -Infinity]];\n var rg = range[i];\n rg[0] < minMax[0][0] && (minMax[0][0] = rg[0]);\n rg[0] > minMax[0][1] && (minMax[0][1] = rg[0]);\n rg[1] < minMax[1][0] && (minMax[1][0] = rg[1]);\n rg[1] > minMax[1][1] && (minMax[1][1] = rg[1]);\n }\n\n return minMax && getBoundingRectFromMinMax(minMax);\n }\n};\n\nfunction getBoundingRectFromMinMax(minMax) {\n return new BoundingRect(minMax[0][0], minMax[1][0], minMax[0][1] - minMax[0][0], minMax[1][1] - minMax[1][0]);\n}\n\nexports.layoutCovers = layoutCovers;","\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\nrequire(\"../coord/calendar/Calendar\");\n\nrequire(\"../coord/calendar/CalendarModel\");\n\nrequire(\"./calendar/CalendarView\");","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar numberUtil = require(\"../../util/number\");\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 MONTH_TEXT = {\n EN: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n CN: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']\n};\nvar WEEK_TEXT = {\n EN: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n CN: ['日', '一', '二', '三', '四', '五', '六']\n};\n\nvar _default = echarts.extendComponentView({\n type: 'calendar',\n\n /**\n * top/left line points\n * @private\n */\n _tlpoints: null,\n\n /**\n * bottom/right line points\n * @private\n */\n _blpoints: null,\n\n /**\n * first day of month\n * @private\n */\n _firstDayOfMonth: null,\n\n /**\n * first day point of month\n * @private\n */\n _firstDayPoints: null,\n render: function (calendarModel, ecModel, api) {\n var group = this.group;\n group.removeAll();\n var coordSys = calendarModel.coordinateSystem; // range info\n\n var rangeData = coordSys.getRangeInfo();\n var orient = coordSys.getOrient();\n\n this._renderDayRect(calendarModel, rangeData, group); // _renderLines must be called prior to following function\n\n\n this._renderLines(calendarModel, rangeData, orient, group);\n\n this._renderYearText(calendarModel, rangeData, orient, group);\n\n this._renderMonthText(calendarModel, orient, group);\n\n this._renderWeekText(calendarModel, rangeData, orient, group);\n },\n // render day rect\n _renderDayRect: function (calendarModel, rangeData, group) {\n var coordSys = calendarModel.coordinateSystem;\n var itemRectStyleModel = calendarModel.getModel('itemStyle').getItemStyle();\n var sw = coordSys.getCellWidth();\n var sh = coordSys.getCellHeight();\n\n for (var i = rangeData.start.time; i <= rangeData.end.time; i = coordSys.getNextNDay(i, 1).time) {\n var point = coordSys.dataToRect([i], false).tl; // every rect\n\n var rect = new graphic.Rect({\n shape: {\n x: point[0],\n y: point[1],\n width: sw,\n height: sh\n },\n cursor: 'default',\n style: itemRectStyleModel\n });\n group.add(rect);\n }\n },\n // render separate line\n _renderLines: function (calendarModel, rangeData, orient, group) {\n var self = this;\n var coordSys = calendarModel.coordinateSystem;\n var lineStyleModel = calendarModel.getModel('splitLine.lineStyle').getLineStyle();\n var show = calendarModel.get('splitLine.show');\n var lineWidth = lineStyleModel.lineWidth;\n this._tlpoints = [];\n this._blpoints = [];\n this._firstDayOfMonth = [];\n this._firstDayPoints = [];\n var firstDay = rangeData.start;\n\n for (var i = 0; firstDay.time <= rangeData.end.time; i++) {\n addPoints(firstDay.formatedDate);\n\n if (i === 0) {\n firstDay = coordSys.getDateInfo(rangeData.start.y + '-' + rangeData.start.m);\n }\n\n var date = firstDay.date;\n date.setMonth(date.getMonth() + 1);\n firstDay = coordSys.getDateInfo(date);\n }\n\n addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate);\n\n function addPoints(date) {\n self._firstDayOfMonth.push(coordSys.getDateInfo(date));\n\n self._firstDayPoints.push(coordSys.dataToRect([date], false).tl);\n\n var points = self._getLinePointsOfOneWeek(calendarModel, date, orient);\n\n self._tlpoints.push(points[0]);\n\n self._blpoints.push(points[points.length - 1]);\n\n show && self._drawSplitline(points, lineStyleModel, group);\n } // render top/left line\n\n\n show && this._drawSplitline(self._getEdgesPoints(self._tlpoints, lineWidth, orient), lineStyleModel, group); // render bottom/right line\n\n show && this._drawSplitline(self._getEdgesPoints(self._blpoints, lineWidth, orient), lineStyleModel, group);\n },\n // get points at both ends\n _getEdgesPoints: function (points, lineWidth, orient) {\n var rs = [points[0].slice(), points[points.length - 1].slice()];\n var idx = orient === 'horizontal' ? 0 : 1; // both ends of the line are extend half lineWidth\n\n rs[0][idx] = rs[0][idx] - lineWidth / 2;\n rs[1][idx] = rs[1][idx] + lineWidth / 2;\n return rs;\n },\n // render split line\n _drawSplitline: function (points, lineStyleModel, group) {\n var poyline = new graphic.Polyline({\n z2: 20,\n shape: {\n points: points\n },\n style: lineStyleModel\n });\n group.add(poyline);\n },\n // render month line of one week points\n _getLinePointsOfOneWeek: function (calendarModel, date, orient) {\n var coordSys = calendarModel.coordinateSystem;\n date = coordSys.getDateInfo(date);\n var points = [];\n\n for (var i = 0; i < 7; i++) {\n var tmpD = coordSys.getNextNDay(date.time, i);\n var point = coordSys.dataToRect([tmpD.time], false);\n points[2 * tmpD.day] = point.tl;\n points[2 * tmpD.day + 1] = point[orient === 'horizontal' ? 'bl' : 'tr'];\n }\n\n return points;\n },\n _formatterLabel: function (formatter, params) {\n if (typeof formatter === 'string' && formatter) {\n return formatUtil.formatTplSimple(formatter, params);\n }\n\n if (typeof formatter === 'function') {\n return formatter(params);\n }\n\n return params.nameMap;\n },\n _yearTextPositionControl: function (textEl, point, orient, position, margin) {\n point = point.slice();\n var aligns = ['center', 'bottom'];\n\n if (position === 'bottom') {\n point[1] += margin;\n aligns = ['center', 'top'];\n } else if (position === 'left') {\n point[0] -= margin;\n } else if (position === 'right') {\n point[0] += margin;\n aligns = ['center', 'top'];\n } else {\n // top\n point[1] -= margin;\n }\n\n var rotate = 0;\n\n if (position === 'left' || position === 'right') {\n rotate = Math.PI / 2;\n }\n\n return {\n rotation: rotate,\n position: point,\n style: {\n textAlign: aligns[0],\n textVerticalAlign: aligns[1]\n }\n };\n },\n // render year\n _renderYearText: function (calendarModel, rangeData, orient, group) {\n var yearLabel = calendarModel.getModel('yearLabel');\n\n if (!yearLabel.get('show')) {\n return;\n }\n\n var margin = yearLabel.get('margin');\n var pos = yearLabel.get('position');\n\n if (!pos) {\n pos = orient !== 'horizontal' ? 'top' : 'left';\n }\n\n var points = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]];\n var xc = (points[0][0] + points[1][0]) / 2;\n var yc = (points[0][1] + points[1][1]) / 2;\n var idx = orient === 'horizontal' ? 0 : 1;\n var posPoints = {\n top: [xc, points[idx][1]],\n bottom: [xc, points[1 - idx][1]],\n left: [points[1 - idx][0], yc],\n right: [points[idx][0], yc]\n };\n var name = rangeData.start.y;\n\n if (+rangeData.end.y > +rangeData.start.y) {\n name = name + '-' + rangeData.end.y;\n }\n\n var formatter = yearLabel.get('formatter');\n var params = {\n start: rangeData.start.y,\n end: rangeData.end.y,\n nameMap: name\n };\n\n var content = this._formatterLabel(formatter, params);\n\n var yearText = new graphic.Text({\n z2: 30\n });\n graphic.setTextStyle(yearText.style, yearLabel, {\n text: content\n }), yearText.attr(this._yearTextPositionControl(yearText, posPoints[pos], orient, pos, margin));\n group.add(yearText);\n },\n _monthTextPositionControl: function (point, isCenter, orient, position, margin) {\n var align = 'left';\n var vAlign = 'top';\n var x = point[0];\n var y = point[1];\n\n if (orient === 'horizontal') {\n y = y + margin;\n\n if (isCenter) {\n align = 'center';\n }\n\n if (position === 'start') {\n vAlign = 'bottom';\n }\n } else {\n x = x + margin;\n\n if (isCenter) {\n vAlign = 'middle';\n }\n\n if (position === 'start') {\n align = 'right';\n }\n }\n\n return {\n x: x,\n y: y,\n textAlign: align,\n textVerticalAlign: vAlign\n };\n },\n // render month and year text\n _renderMonthText: function (calendarModel, orient, group) {\n var monthLabel = calendarModel.getModel('monthLabel');\n\n if (!monthLabel.get('show')) {\n return;\n }\n\n var nameMap = monthLabel.get('nameMap');\n var margin = monthLabel.get('margin');\n var pos = monthLabel.get('position');\n var align = monthLabel.get('align');\n var termPoints = [this._tlpoints, this._blpoints];\n\n if (zrUtil.isString(nameMap)) {\n nameMap = MONTH_TEXT[nameMap.toUpperCase()] || [];\n }\n\n var idx = pos === 'start' ? 0 : 1;\n var axis = orient === 'horizontal' ? 0 : 1;\n margin = pos === 'start' ? -margin : margin;\n var isCenter = align === 'center';\n\n for (var i = 0; i < termPoints[idx].length - 1; i++) {\n var tmp = termPoints[idx][i].slice();\n var firstDay = this._firstDayOfMonth[i];\n\n if (isCenter) {\n var firstDayPoints = this._firstDayPoints[i];\n tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2;\n }\n\n var formatter = monthLabel.get('formatter');\n var name = nameMap[+firstDay.m - 1];\n var params = {\n yyyy: firstDay.y,\n yy: (firstDay.y + '').slice(2),\n MM: firstDay.m,\n M: +firstDay.m,\n nameMap: name\n };\n\n var content = this._formatterLabel(formatter, params);\n\n var monthText = new graphic.Text({\n z2: 30\n });\n zrUtil.extend(graphic.setTextStyle(monthText.style, monthLabel, {\n text: content\n }), this._monthTextPositionControl(tmp, isCenter, orient, pos, margin));\n group.add(monthText);\n }\n },\n _weekTextPositionControl: function (point, orient, position, margin, cellSize) {\n var align = 'center';\n var vAlign = 'middle';\n var x = point[0];\n var y = point[1];\n var isStart = position === 'start';\n\n if (orient === 'horizontal') {\n x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2;\n align = isStart ? 'right' : 'left';\n } else {\n y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2;\n vAlign = isStart ? 'bottom' : 'top';\n }\n\n return {\n x: x,\n y: y,\n textAlign: align,\n textVerticalAlign: vAlign\n };\n },\n // render weeks\n _renderWeekText: function (calendarModel, rangeData, orient, group) {\n var dayLabel = calendarModel.getModel('dayLabel');\n\n if (!dayLabel.get('show')) {\n return;\n }\n\n var coordSys = calendarModel.coordinateSystem;\n var pos = dayLabel.get('position');\n var nameMap = dayLabel.get('nameMap');\n var margin = dayLabel.get('margin');\n var firstDayOfWeek = coordSys.getFirstDayOfWeek();\n\n if (zrUtil.isString(nameMap)) {\n nameMap = WEEK_TEXT[nameMap.toUpperCase()] || [];\n }\n\n var start = coordSys.getNextNDay(rangeData.end.time, 7 - rangeData.lweek).time;\n var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()];\n margin = numberUtil.parsePercent(margin, cellSize[orient === 'horizontal' ? 0 : 1]);\n\n if (pos === 'start') {\n start = coordSys.getNextNDay(rangeData.start.time, -(7 + rangeData.fweek)).time;\n margin = -margin;\n }\n\n for (var i = 0; i < 7; i++) {\n var tmpD = coordSys.getNextNDay(start, i);\n var point = coordSys.dataToRect([tmpD.time], false).center;\n var day = i;\n day = Math.abs((i + firstDayOfWeek) % 7);\n var weekText = new graphic.Text({\n z2: 30\n });\n zrUtil.extend(graphic.setTextStyle(weekText.style, dayLabel, {\n text: nameMap[day]\n }), this._weekTextPositionControl(point, orient, pos, margin, cellSize));\n group.add(weekText);\n }\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\nrequire(\"./dataZoomSlider\");\n\nrequire(\"./dataZoomInside\");","\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\nrequire(\"./dataZoom/typeDefaulter\");\n\nrequire(\"./dataZoom/DataZoomModel\");\n\nrequire(\"./dataZoom/DataZoomView\");\n\nrequire(\"./dataZoom/InsideZoomModel\");\n\nrequire(\"./dataZoom/InsideZoomView\");\n\nrequire(\"./dataZoom/dataZoomProcessor\");\n\nrequire(\"./dataZoom/dataZoomAction\");","\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\nrequire(\"./dataZoom/typeDefaulter\");\n\nrequire(\"./dataZoom/DataZoomModel\");\n\nrequire(\"./dataZoom/DataZoomView\");\n\nrequire(\"./dataZoom/SelectZoomModel\");\n\nrequire(\"./dataZoom/SelectZoomView\");\n\nrequire(\"./dataZoom/dataZoomProcessor\");\n\nrequire(\"./dataZoom/dataZoomAction\");","\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\nrequire(\"./dataZoom/typeDefaulter\");\n\nrequire(\"./dataZoom/DataZoomModel\");\n\nrequire(\"./dataZoom/DataZoomView\");\n\nrequire(\"./dataZoom/SliderZoomModel\");\n\nrequire(\"./dataZoom/SliderZoomView\");\n\nrequire(\"./dataZoom/dataZoomProcessor\");\n\nrequire(\"./dataZoom/dataZoomAction\");","\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 numberUtil = require(\"../../util/number\");\n\nvar helper = require(\"./helper\");\n\nvar sliderMove = require(\"../helper/sliderMove\");\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 each = zrUtil.each;\nvar asc = numberUtil.asc;\n/**\n * Operate single axis.\n * One axis can only operated by one axis operator.\n * Different dataZoomModels may be defined to operate the same axis.\n * (i.e. 'inside' data zoom and 'slider' data zoom components)\n * So dataZoomModels share one axisProxy in that case.\n *\n * @class\n */\n\nvar AxisProxy = function (dimName, axisIndex, dataZoomModel, ecModel) {\n /**\n * @private\n * @type {string}\n */\n this._dimName = dimName;\n /**\n * @private\n */\n\n this._axisIndex = axisIndex;\n /**\n * @private\n * @type {Array.}\n */\n\n this._valueWindow;\n /**\n * @private\n * @type {Array.}\n */\n\n this._percentWindow;\n /**\n * @private\n * @type {Array.}\n */\n\n this._dataExtent;\n /**\n * {minSpan, maxSpan, minValueSpan, maxValueSpan}\n * @private\n * @type {Object}\n */\n\n this._minMaxSpan;\n /**\n * @readOnly\n * @type {module: echarts/model/Global}\n */\n\n this.ecModel = ecModel;\n /**\n * @private\n * @type {module: echarts/component/dataZoom/DataZoomModel}\n */\n\n this._dataZoomModel = dataZoomModel; // /**\n // * @readOnly\n // * @private\n // */\n // this.hasSeriesStacked;\n};\n\nAxisProxy.prototype = {\n constructor: AxisProxy,\n\n /**\n * Whether the axisProxy is hosted by dataZoomModel.\n *\n * @public\n * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n * @return {boolean}\n */\n hostedBy: function (dataZoomModel) {\n return this._dataZoomModel === dataZoomModel;\n },\n\n /**\n * @return {Array.} Value can only be NaN or finite value.\n */\n getDataValueWindow: function () {\n return this._valueWindow.slice();\n },\n\n /**\n * @return {Array.}\n */\n getDataPercentWindow: function () {\n return this._percentWindow.slice();\n },\n\n /**\n * @public\n * @param {number} axisIndex\n * @return {Array} seriesModels\n */\n getTargetSeriesModels: function () {\n var seriesModels = [];\n var ecModel = this.ecModel;\n ecModel.eachSeries(function (seriesModel) {\n if (helper.isCoordSupported(seriesModel.get('coordinateSystem'))) {\n var dimName = this._dimName;\n var axisModel = ecModel.queryComponents({\n mainType: dimName + 'Axis',\n index: seriesModel.get(dimName + 'AxisIndex'),\n id: seriesModel.get(dimName + 'AxisId')\n })[0];\n\n if (this._axisIndex === (axisModel && axisModel.componentIndex)) {\n seriesModels.push(seriesModel);\n }\n }\n }, this);\n return seriesModels;\n },\n getAxisModel: function () {\n return this.ecModel.getComponent(this._dimName + 'Axis', this._axisIndex);\n },\n getOtherAxisModel: function () {\n var axisDim = this._dimName;\n var ecModel = this.ecModel;\n var axisModel = this.getAxisModel();\n var isCartesian = axisDim === 'x' || axisDim === 'y';\n var otherAxisDim;\n var coordSysIndexName;\n\n if (isCartesian) {\n coordSysIndexName = 'gridIndex';\n otherAxisDim = axisDim === 'x' ? 'y' : 'x';\n } else {\n coordSysIndexName = 'polarIndex';\n otherAxisDim = axisDim === 'angle' ? 'radius' : 'angle';\n }\n\n var foundOtherAxisModel;\n ecModel.eachComponent(otherAxisDim + 'Axis', function (otherAxisModel) {\n if ((otherAxisModel.get(coordSysIndexName) || 0) === (axisModel.get(coordSysIndexName) || 0)) {\n foundOtherAxisModel = otherAxisModel;\n }\n });\n return foundOtherAxisModel;\n },\n getMinMaxSpan: function () {\n return zrUtil.clone(this._minMaxSpan);\n },\n\n /**\n * Only calculate by given range and this._dataExtent, do not change anything.\n *\n * @param {Object} opt\n * @param {number} [opt.start]\n * @param {number} [opt.end]\n * @param {number} [opt.startValue]\n * @param {number} [opt.endValue]\n */\n calculateDataWindow: function (opt) {\n var dataExtent = this._dataExtent;\n var axisModel = this.getAxisModel();\n var scale = axisModel.axis.scale;\n\n var rangePropMode = this._dataZoomModel.getRangePropMode();\n\n var percentExtent = [0, 100];\n var percentWindow = [];\n var valueWindow = [];\n var hasPropModeValue;\n each(['start', 'end'], function (prop, idx) {\n var boundPercent = opt[prop];\n var boundValue = opt[prop + 'Value']; // Notice: dataZoom is based either on `percentProp` ('start', 'end') or\n // on `valueProp` ('startValue', 'endValue'). (They are based on the data extent\n // but not min/max of axis, which will be calculated by data window then).\n // The former one is suitable for cases that a dataZoom component controls multiple\n // axes with different unit or extent, and the latter one is suitable for accurate\n // zoom by pixel (e.g., in dataZoomSelect).\n // we use `getRangePropMode()` to mark which prop is used. `rangePropMode` is updated\n // only when setOption or dispatchAction, otherwise it remains its original value.\n // (Why not only record `percentProp` and always map to `valueProp`? Because\n // the map `valueProp` -> `percentProp` -> `valueProp` probably not the original\n // `valueProp`. consider two axes constrolled by one dataZoom. They have different\n // data extent. All of values that are overflow the `dataExtent` will be calculated\n // to percent '100%').\n\n if (rangePropMode[idx] === 'percent') {\n boundPercent == null && (boundPercent = percentExtent[idx]); // Use scale.parse to math round for category or time axis.\n\n boundValue = scale.parse(numberUtil.linearMap(boundPercent, percentExtent, dataExtent));\n } else {\n hasPropModeValue = true;\n boundValue = boundValue == null ? dataExtent[idx] : scale.parse(boundValue); // Calculating `percent` from `value` may be not accurate, because\n // This calculation can not be inversed, because all of values that\n // are overflow the `dataExtent` will be calculated to percent '100%'\n\n boundPercent = numberUtil.linearMap(boundValue, dataExtent, percentExtent);\n } // valueWindow[idx] = round(boundValue);\n // percentWindow[idx] = round(boundPercent);\n\n\n valueWindow[idx] = boundValue;\n percentWindow[idx] = boundPercent;\n });\n asc(valueWindow);\n asc(percentWindow); // The windows from user calling of `dispatchAction` might be out of the extent,\n // or do not obey the `min/maxSpan`, `min/maxValueSpan`. But we dont restrict window\n // by `zoomLock` here, because we see `zoomLock` just as a interaction constraint,\n // where API is able to initialize/modify the window size even though `zoomLock`\n // specified.\n\n var spans = this._minMaxSpan;\n hasPropModeValue ? restrictSet(valueWindow, percentWindow, dataExtent, percentExtent, false) : restrictSet(percentWindow, valueWindow, percentExtent, dataExtent, true);\n\n function restrictSet(fromWindow, toWindow, fromExtent, toExtent, toValue) {\n var suffix = toValue ? 'Span' : 'ValueSpan';\n sliderMove(0, fromWindow, fromExtent, 'all', spans['min' + suffix], spans['max' + suffix]);\n\n for (var i = 0; i < 2; i++) {\n toWindow[i] = numberUtil.linearMap(fromWindow[i], fromExtent, toExtent, true);\n toValue && (toWindow[i] = scale.parse(toWindow[i]));\n }\n }\n\n return {\n valueWindow: valueWindow,\n percentWindow: percentWindow\n };\n },\n\n /**\n * Notice: reset should not be called before series.restoreData() called,\n * so it is recommanded to be called in \"process stage\" but not \"model init\n * stage\".\n *\n * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n */\n reset: function (dataZoomModel) {\n if (dataZoomModel !== this._dataZoomModel) {\n return;\n }\n\n var targetSeries = this.getTargetSeriesModels(); // Culculate data window and data extent, and record them.\n\n this._dataExtent = calculateDataExtent(this, this._dimName, targetSeries); // this.hasSeriesStacked = false;\n // each(targetSeries, function (series) {\n // var data = series.getData();\n // var dataDim = data.mapDimension(this._dimName);\n // var stackedDimension = data.getCalculationInfo('stackedDimension');\n // if (stackedDimension && stackedDimension === dataDim) {\n // this.hasSeriesStacked = true;\n // }\n // }, this);\n // `calculateDataWindow` uses min/maxSpan.\n\n setMinMaxSpan(this);\n var dataWindow = this.calculateDataWindow(dataZoomModel.settledOption);\n this._valueWindow = dataWindow.valueWindow;\n this._percentWindow = dataWindow.percentWindow; // Update axis setting then.\n\n setAxisModel(this);\n },\n\n /**\n * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n */\n restore: function (dataZoomModel) {\n if (dataZoomModel !== this._dataZoomModel) {\n return;\n }\n\n this._valueWindow = this._percentWindow = null;\n setAxisModel(this, true);\n },\n\n /**\n * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n */\n filterData: function (dataZoomModel, api) {\n if (dataZoomModel !== this._dataZoomModel) {\n return;\n }\n\n var axisDim = this._dimName;\n var seriesModels = this.getTargetSeriesModels();\n var filterMode = dataZoomModel.get('filterMode');\n var valueWindow = this._valueWindow;\n\n if (filterMode === 'none') {\n return;\n } // FIXME\n // Toolbox may has dataZoom injected. And if there are stacked bar chart\n // with NaN data, NaN will be filtered and stack will be wrong.\n // So we need to force the mode to be set empty.\n // In fect, it is not a big deal that do not support filterMode-'filter'\n // when using toolbox#dataZoom, utill tooltip#dataZoom support \"single axis\n // selection\" some day, which might need \"adapt to data extent on the\n // otherAxis\", which is disabled by filterMode-'empty'.\n // But currently, stack has been fixed to based on value but not index,\n // so this is not an issue any more.\n // var otherAxisModel = this.getOtherAxisModel();\n // if (dataZoomModel.get('$fromToolbox')\n // && otherAxisModel\n // && otherAxisModel.hasSeriesStacked\n // ) {\n // filterMode = 'empty';\n // }\n // TODO\n // filterMode 'weakFilter' and 'empty' is not optimized for huge data yet.\n\n\n each(seriesModels, function (seriesModel) {\n var seriesData = seriesModel.getData();\n var dataDims = seriesData.mapDimension(axisDim, true);\n\n if (!dataDims.length) {\n return;\n }\n\n if (filterMode === 'weakFilter') {\n seriesData.filterSelf(function (dataIndex) {\n var leftOut;\n var rightOut;\n var hasValue;\n\n for (var i = 0; i < dataDims.length; i++) {\n var value = seriesData.get(dataDims[i], dataIndex);\n var thisHasValue = !isNaN(value);\n var thisLeftOut = value < valueWindow[0];\n var thisRightOut = value > valueWindow[1];\n\n if (thisHasValue && !thisLeftOut && !thisRightOut) {\n return true;\n }\n\n thisHasValue && (hasValue = true);\n thisLeftOut && (leftOut = true);\n thisRightOut && (rightOut = true);\n } // If both left out and right out, do not filter.\n\n\n return hasValue && leftOut && rightOut;\n });\n } else {\n each(dataDims, function (dim) {\n if (filterMode === 'empty') {\n seriesModel.setData(seriesData = seriesData.map(dim, function (value) {\n return !isInWindow(value) ? NaN : value;\n }));\n } else {\n var range = {};\n range[dim] = valueWindow; // console.time('select');\n\n seriesData.selectRange(range); // console.timeEnd('select');\n }\n });\n }\n\n each(dataDims, function (dim) {\n seriesData.setApproximateExtent(valueWindow, dim);\n });\n });\n\n function isInWindow(value) {\n return value >= valueWindow[0] && value <= valueWindow[1];\n }\n }\n};\n\nfunction calculateDataExtent(axisProxy, axisDim, seriesModels) {\n var dataExtent = [Infinity, -Infinity];\n each(seriesModels, function (seriesModel) {\n var seriesData = seriesModel.getData();\n\n if (seriesData) {\n each(seriesData.mapDimension(axisDim, true), function (dim) {\n var seriesExtent = seriesData.getApproximateExtent(dim);\n seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]);\n seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);\n });\n }\n });\n\n if (dataExtent[1] < dataExtent[0]) {\n dataExtent = [NaN, NaN];\n } // It is important to get \"consistent\" extent when more then one axes is\n // controlled by a `dataZoom`, otherwise those axes will not be synchronized\n // when zooming. But it is difficult to know what is \"consistent\", considering\n // axes have different type or even different meanings (For example, two\n // time axes are used to compare data of the same date in different years).\n // So basically dataZoom just obtains extent by series.data (in category axis\n // extent can be obtained from axis.data).\n // Nevertheless, user can set min/max/scale on axes to make extent of axes\n // consistent.\n\n\n fixExtentByAxis(axisProxy, dataExtent);\n return dataExtent;\n}\n\nfunction fixExtentByAxis(axisProxy, dataExtent) {\n var axisModel = axisProxy.getAxisModel();\n var min = axisModel.getMin(true); // For category axis, if min/max/scale are not set, extent is determined\n // by axis.data by default.\n\n var isCategoryAxis = axisModel.get('type') === 'category';\n var axisDataLen = isCategoryAxis && axisModel.getCategories().length;\n\n if (min != null && min !== 'dataMin' && typeof min !== 'function') {\n dataExtent[0] = min;\n } else if (isCategoryAxis) {\n dataExtent[0] = axisDataLen > 0 ? 0 : NaN;\n }\n\n var max = axisModel.getMax(true);\n\n if (max != null && max !== 'dataMax' && typeof max !== 'function') {\n dataExtent[1] = max;\n } else if (isCategoryAxis) {\n dataExtent[1] = axisDataLen > 0 ? axisDataLen - 1 : NaN;\n }\n\n if (!axisModel.get('scale', true)) {\n dataExtent[0] > 0 && (dataExtent[0] = 0);\n dataExtent[1] < 0 && (dataExtent[1] = 0);\n } // For value axis, if min/max/scale are not set, we just use the extent obtained\n // by series data, which may be a little different from the extent calculated by\n // `axisHelper.getScaleExtent`. But the different just affects the experience a\n // little when zooming. So it will not be fixed until some users require it strongly.\n\n\n return dataExtent;\n}\n\nfunction setAxisModel(axisProxy, isRestore) {\n var axisModel = axisProxy.getAxisModel();\n var percentWindow = axisProxy._percentWindow;\n var valueWindow = axisProxy._valueWindow;\n\n if (!percentWindow) {\n return;\n } // [0, 500]: arbitrary value, guess axis extent.\n\n\n var precision = numberUtil.getPixelPrecision(valueWindow, [0, 500]);\n precision = Math.min(precision, 20); // isRestore or isFull\n\n var useOrigin = isRestore || percentWindow[0] === 0 && percentWindow[1] === 100;\n axisModel.setRange(useOrigin ? null : +valueWindow[0].toFixed(precision), useOrigin ? null : +valueWindow[1].toFixed(precision));\n}\n\nfunction setMinMaxSpan(axisProxy) {\n var minMaxSpan = axisProxy._minMaxSpan = {};\n var dataZoomModel = axisProxy._dataZoomModel;\n var dataExtent = axisProxy._dataExtent;\n each(['min', 'max'], function (minMax) {\n var percentSpan = dataZoomModel.get(minMax + 'Span');\n var valueSpan = dataZoomModel.get(minMax + 'ValueSpan');\n valueSpan != null && (valueSpan = axisProxy.getAxisModel().axis.scale.parse(valueSpan)); // minValueSpan and maxValueSpan has higher priority than minSpan and maxSpan\n\n if (valueSpan != null) {\n percentSpan = numberUtil.linearMap(dataExtent[0] + valueSpan, dataExtent, [0, 100], true);\n } else if (percentSpan != null) {\n valueSpan = numberUtil.linearMap(percentSpan, [0, 100], dataExtent, true) - dataExtent[0];\n }\n\n minMaxSpan[minMax + 'Span'] = percentSpan;\n minMaxSpan[minMax + 'ValueSpan'] = valueSpan;\n });\n}\n\nvar _default = AxisProxy;\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar helper = require(\"./helper\");\n\nvar AxisProxy = require(\"./AxisProxy\");\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 each = zrUtil.each;\nvar eachAxisDim = helper.eachAxisDim;\nvar DataZoomModel = echarts.extendComponentModel({\n type: 'dataZoom',\n dependencies: ['xAxis', 'yAxis', 'zAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'series'],\n\n /**\n * @protected\n */\n defaultOption: {\n zlevel: 0,\n z: 4,\n // Higher than normal component (z: 2).\n orient: null,\n // Default auto by axisIndex. Possible value: 'horizontal', 'vertical'.\n xAxisIndex: null,\n // Default the first horizontal category axis.\n yAxisIndex: null,\n // Default the first vertical category axis.\n filterMode: 'filter',\n // Possible values: 'filter' or 'empty' or 'weakFilter'.\n // 'filter': data items which are out of window will be removed. This option is\n // applicable when filtering outliers. For each data item, it will be\n // filtered if one of the relevant dimensions is out of the window.\n // 'weakFilter': data items which are out of window will be removed. This option\n // is applicable when filtering outliers. For each data item, it will be\n // filtered only if all of the relevant dimensions are out of the same\n // side of the window.\n // 'empty': data items which are out of window will be set to empty.\n // This option is applicable when user should not neglect\n // that there are some data items out of window.\n // 'none': Do not filter.\n // Taking line chart as an example, line will be broken in\n // the filtered points when filterModel is set to 'empty', but\n // be connected when set to 'filter'.\n throttle: null,\n // Dispatch action by the fixed rate, avoid frequency.\n // default 100. Do not throttle when use null/undefined.\n // If animation === true and animationDurationUpdate > 0,\n // default value is 100, otherwise 20.\n start: 0,\n // Start percent. 0 ~ 100\n end: 100,\n // End percent. 0 ~ 100\n startValue: null,\n // Start value. If startValue specified, start is ignored.\n endValue: null,\n // End value. If endValue specified, end is ignored.\n minSpan: null,\n // 0 ~ 100\n maxSpan: null,\n // 0 ~ 100\n minValueSpan: null,\n // The range of dataZoom can not be smaller than that.\n maxValueSpan: null,\n // The range of dataZoom can not be larger than that.\n rangeMode: null // Array, can be 'value' or 'percent'.\n\n },\n\n /**\n * @override\n */\n init: function (option, parentModel, ecModel) {\n /**\n * key like x_0, y_1\n * @private\n * @type {Object}\n */\n this._dataIntervalByAxis = {};\n /**\n * @private\n */\n\n this._dataInfo = {};\n /**\n * key like x_0, y_1\n * @private\n */\n\n this._axisProxies = {};\n /**\n * @readOnly\n */\n\n this.textStyleModel;\n /**\n * @private\n */\n\n this._autoThrottle = true;\n /**\n * It is `[rangeModeForMin, rangeModeForMax]`.\n * The optional values for `rangeMode`:\n * + `'value'` mode: the axis extent will always be determined by\n * `dataZoom.startValue` and `dataZoom.endValue`, despite\n * how data like and how `axis.min` and `axis.max` are.\n * + `'percent'` mode: `100` represents 100% of the `[dMin, dMax]`,\n * where `dMin` is `axis.min` if `axis.min` specified, otherwise `data.extent[0]`,\n * and `dMax` is `axis.max` if `axis.max` specified, otherwise `data.extent[1]`.\n * Axis extent will be determined by the result of the percent of `[dMin, dMax]`.\n *\n * For example, when users are using dynamic data (update data periodically via `setOption`),\n * if in `'value`' mode, the window will be kept in a fixed value range despite how\n * data are appended, while if in `'percent'` mode, whe window range will be changed alone with\n * the appended data (suppose `axis.min` and `axis.max` are not specified).\n *\n * @private\n */\n\n this._rangePropMode = ['percent', 'percent'];\n var inputRawOption = retrieveRawOption(option);\n /**\n * Suppose a \"main process\" start at the point that model prepared (that is,\n * model initialized or merged or method called in `action`).\n * We should keep the `main process` idempotent, that is, given a set of values\n * on `option`, we get the same result.\n *\n * But sometimes, values on `option` will be updated for providing users\n * a \"final calculated value\" (`dataZoomProcessor` will do that). Those value\n * should not be the base/input of the `main process`.\n *\n * So in that case we should save and keep the input of the `main process`\n * separately, called `settledOption`.\n *\n * For example, consider the case:\n * (Step_1) brush zoom the grid by `toolbox.dataZoom`,\n * where the original input `option.startValue`, `option.endValue` are earsed by\n * calculated value.\n * (Step)2) click the legend to hide and show a series,\n * where the new range is calculated by the earsed `startValue` and `endValue`,\n * which brings incorrect result.\n *\n * @readOnly\n */\n\n this.settledOption = inputRawOption;\n this.mergeDefaultAndTheme(option, ecModel);\n this.doInit(inputRawOption);\n },\n\n /**\n * @override\n */\n mergeOption: function (newOption) {\n var inputRawOption = retrieveRawOption(newOption); //FIX #2591\n\n zrUtil.merge(this.option, newOption, true);\n zrUtil.merge(this.settledOption, inputRawOption, true);\n this.doInit(inputRawOption);\n },\n\n /**\n * @protected\n */\n doInit: function (inputRawOption) {\n var thisOption = this.option; // Disable realtime view update if canvas is not supported.\n\n if (!env.canvasSupported) {\n thisOption.realtime = false;\n }\n\n this._setDefaultThrottle(inputRawOption);\n\n updateRangeUse(this, inputRawOption);\n var settledOption = this.settledOption;\n each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\n // start/end has higher priority over startValue/endValue if they\n // both set, but we should make chart.setOption({endValue: 1000})\n // effective, rather than chart.setOption({endValue: 1000, end: null}).\n if (this._rangePropMode[index] === 'value') {\n thisOption[names[0]] = settledOption[names[0]] = null;\n } // Otherwise do nothing and use the merge result.\n\n }, this);\n this.textStyleModel = this.getModel('textStyle');\n\n this._resetTarget();\n\n this._giveAxisProxies();\n },\n\n /**\n * @private\n */\n _giveAxisProxies: function () {\n var axisProxies = this._axisProxies;\n this.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel, ecModel) {\n var axisModel = this.dependentModels[dimNames.axis][axisIndex]; // If exists, share axisProxy with other dataZoomModels.\n\n var axisProxy = axisModel.__dzAxisProxy || ( // Use the first dataZoomModel as the main model of axisProxy.\n axisModel.__dzAxisProxy = new AxisProxy(dimNames.name, axisIndex, this, ecModel)); // FIXME\n // dispose __dzAxisProxy\n\n axisProxies[dimNames.name + '_' + axisIndex] = axisProxy;\n }, this);\n },\n\n /**\n * @private\n */\n _resetTarget: function () {\n var thisOption = this.option;\n\n var autoMode = this._judgeAutoMode();\n\n eachAxisDim(function (dimNames) {\n var axisIndexName = dimNames.axisIndex;\n thisOption[axisIndexName] = modelUtil.normalizeToArray(thisOption[axisIndexName]);\n }, this);\n\n if (autoMode === 'axisIndex') {\n this._autoSetAxisIndex();\n } else if (autoMode === 'orient') {\n this._autoSetOrient();\n }\n },\n\n /**\n * @private\n */\n _judgeAutoMode: function () {\n // Auto set only works for setOption at the first time.\n // The following is user's reponsibility. So using merged\n // option is OK.\n var thisOption = this.option;\n var hasIndexSpecified = false;\n eachAxisDim(function (dimNames) {\n // When user set axisIndex as a empty array, we think that user specify axisIndex\n // but do not want use auto mode. Because empty array may be encountered when\n // some error occured.\n if (thisOption[dimNames.axisIndex] != null) {\n hasIndexSpecified = true;\n }\n }, this);\n var orient = thisOption.orient;\n\n if (orient == null && hasIndexSpecified) {\n return 'orient';\n } else if (!hasIndexSpecified) {\n if (orient == null) {\n thisOption.orient = 'horizontal';\n }\n\n return 'axisIndex';\n }\n },\n\n /**\n * @private\n */\n _autoSetAxisIndex: function () {\n var autoAxisIndex = true;\n var orient = this.get('orient', true);\n var thisOption = this.option;\n var dependentModels = this.dependentModels;\n\n if (autoAxisIndex) {\n // Find axis that parallel to dataZoom as default.\n var dimName = orient === 'vertical' ? 'y' : 'x';\n\n if (dependentModels[dimName + 'Axis'].length) {\n thisOption[dimName + 'AxisIndex'] = [0];\n autoAxisIndex = false;\n } else {\n each(dependentModels.singleAxis, function (singleAxisModel) {\n if (autoAxisIndex && singleAxisModel.get('orient', true) === orient) {\n thisOption.singleAxisIndex = [singleAxisModel.componentIndex];\n autoAxisIndex = false;\n }\n });\n }\n }\n\n if (autoAxisIndex) {\n // Find the first category axis as default. (consider polar)\n eachAxisDim(function (dimNames) {\n if (!autoAxisIndex) {\n return;\n }\n\n var axisIndices = [];\n var axisModels = this.dependentModels[dimNames.axis];\n\n if (axisModels.length && !axisIndices.length) {\n for (var i = 0, len = axisModels.length; i < len; i++) {\n if (axisModels[i].get('type') === 'category') {\n axisIndices.push(i);\n }\n }\n }\n\n thisOption[dimNames.axisIndex] = axisIndices;\n\n if (axisIndices.length) {\n autoAxisIndex = false;\n }\n }, this);\n }\n\n if (autoAxisIndex) {\n // FIXME\n // 这里是兼容ec2的写法(没指定xAxisIndex和yAxisIndex时把scatter和双数值轴折柱纳入dataZoom控制),\n // 但是实际是否需要Grid.js#getScaleByOption来判断(考虑time,log等axis type)?\n // If both dataZoom.xAxisIndex and dataZoom.yAxisIndex is not specified,\n // dataZoom component auto adopts series that reference to\n // both xAxis and yAxis which type is 'value'.\n this.ecModel.eachSeries(function (seriesModel) {\n if (this._isSeriesHasAllAxesTypeOf(seriesModel, 'value')) {\n eachAxisDim(function (dimNames) {\n var axisIndices = thisOption[dimNames.axisIndex];\n var axisIndex = seriesModel.get(dimNames.axisIndex);\n var axisId = seriesModel.get(dimNames.axisId);\n var axisModel = seriesModel.ecModel.queryComponents({\n mainType: dimNames.axis,\n index: axisIndex,\n id: axisId\n })[0];\n axisIndex = axisModel.componentIndex;\n\n if (zrUtil.indexOf(axisIndices, axisIndex) < 0) {\n axisIndices.push(axisIndex);\n }\n });\n }\n }, this);\n }\n },\n\n /**\n * @private\n */\n _autoSetOrient: function () {\n var dim; // Find the first axis\n\n this.eachTargetAxis(function (dimNames) {\n !dim && (dim = dimNames.name);\n }, this);\n this.option.orient = dim === 'y' ? 'vertical' : 'horizontal';\n },\n\n /**\n * @private\n */\n _isSeriesHasAllAxesTypeOf: function (seriesModel, axisType) {\n // FIXME\n // 需要series的xAxisIndex和yAxisIndex都首先自动设置上。\n // 例如series.type === scatter时。\n var is = true;\n eachAxisDim(function (dimNames) {\n var seriesAxisIndex = seriesModel.get(dimNames.axisIndex);\n var axisModel = this.dependentModels[dimNames.axis][seriesAxisIndex];\n\n if (!axisModel || axisModel.get('type') !== axisType) {\n is = false;\n }\n }, this);\n return is;\n },\n\n /**\n * @private\n */\n _setDefaultThrottle: function (inputRawOption) {\n // When first time user set throttle, auto throttle ends.\n if (inputRawOption.hasOwnProperty('throttle')) {\n this._autoThrottle = false;\n }\n\n if (this._autoThrottle) {\n var globalOption = this.ecModel.option;\n this.option.throttle = globalOption.animation && globalOption.animationDurationUpdate > 0 ? 100 : 20;\n }\n },\n\n /**\n * @public\n */\n getFirstTargetAxisModel: function () {\n var firstAxisModel;\n eachAxisDim(function (dimNames) {\n if (firstAxisModel == null) {\n var indices = this.get(dimNames.axisIndex);\n\n if (indices.length) {\n firstAxisModel = this.dependentModels[dimNames.axis][indices[0]];\n }\n }\n }, this);\n return firstAxisModel;\n },\n\n /**\n * @public\n * @param {Function} callback param: axisModel, dimNames, axisIndex, dataZoomModel, ecModel\n */\n eachTargetAxis: function (callback, context) {\n var ecModel = this.ecModel;\n eachAxisDim(function (dimNames) {\n each(this.get(dimNames.axisIndex), function (axisIndex) {\n callback.call(context, dimNames, axisIndex, this, ecModel);\n }, this);\n }, this);\n },\n\n /**\n * @param {string} dimName\n * @param {number} axisIndex\n * @return {module:echarts/component/dataZoom/AxisProxy} If not found, return null/undefined.\n */\n getAxisProxy: function (dimName, axisIndex) {\n return this._axisProxies[dimName + '_' + axisIndex];\n },\n\n /**\n * @param {string} dimName\n * @param {number} axisIndex\n * @return {module:echarts/model/Model} If not found, return null/undefined.\n */\n getAxisModel: function (dimName, axisIndex) {\n var axisProxy = this.getAxisProxy(dimName, axisIndex);\n return axisProxy && axisProxy.getAxisModel();\n },\n\n /**\n * If not specified, set to undefined.\n *\n * @public\n * @param {Object} opt\n * @param {number} [opt.start]\n * @param {number} [opt.end]\n * @param {number} [opt.startValue]\n * @param {number} [opt.endValue]\n */\n setRawRange: function (opt) {\n var thisOption = this.option;\n var settledOption = this.settledOption;\n each([['start', 'startValue'], ['end', 'endValue']], function (names) {\n // Consider the pair :\n // If one has value and the other one is `null/undefined`, we both set them\n // to `settledOption`. This strategy enables the feature to clear the original\n // value in `settledOption` to `null/undefined`.\n // But if both of them are `null/undefined`, we do not set them to `settledOption`\n // and keep `settledOption` with the original value. This strategy enables users to\n // only set but not set when calling\n // `dispatchAction`.\n // The pair is treated in the same way.\n if (opt[names[0]] != null || opt[names[1]] != null) {\n thisOption[names[0]] = settledOption[names[0]] = opt[names[0]];\n thisOption[names[1]] = settledOption[names[1]] = opt[names[1]];\n }\n }, this);\n updateRangeUse(this, opt);\n },\n\n /**\n * @public\n * @param {Object} opt\n * @param {number} [opt.start]\n * @param {number} [opt.end]\n * @param {number} [opt.startValue]\n * @param {number} [opt.endValue]\n */\n setCalculatedRange: function (opt) {\n var option = this.option;\n each(['start', 'startValue', 'end', 'endValue'], function (name) {\n option[name] = opt[name];\n });\n },\n\n /**\n * @public\n * @return {Array.} [startPercent, endPercent]\n */\n getPercentRange: function () {\n var axisProxy = this.findRepresentativeAxisProxy();\n\n if (axisProxy) {\n return axisProxy.getDataPercentWindow();\n }\n },\n\n /**\n * @public\n * For example, chart.getModel().getComponent('dataZoom').getValueRange('y', 0);\n *\n * @param {string} [axisDimName]\n * @param {number} [axisIndex]\n * @return {Array.} [startValue, endValue] value can only be '-' or finite number.\n */\n getValueRange: function (axisDimName, axisIndex) {\n if (axisDimName == null && axisIndex == null) {\n var axisProxy = this.findRepresentativeAxisProxy();\n\n if (axisProxy) {\n return axisProxy.getDataValueWindow();\n }\n } else {\n return this.getAxisProxy(axisDimName, axisIndex).getDataValueWindow();\n }\n },\n\n /**\n * @public\n * @param {module:echarts/model/Model} [axisModel] If axisModel given, find axisProxy\n * corresponding to the axisModel\n * @return {module:echarts/component/dataZoom/AxisProxy}\n */\n findRepresentativeAxisProxy: function (axisModel) {\n if (axisModel) {\n return axisModel.__dzAxisProxy;\n } // Find the first hosted axisProxy\n\n\n var axisProxies = this._axisProxies;\n\n for (var key in axisProxies) {\n if (axisProxies.hasOwnProperty(key) && axisProxies[key].hostedBy(this)) {\n return axisProxies[key];\n }\n } // If no hosted axis find not hosted axisProxy.\n // Consider this case: dataZoomModel1 and dataZoomModel2 control the same axis,\n // and the option.start or option.end settings are different. The percentRange\n // should follow axisProxy.\n // (We encounter this problem in toolbox data zoom.)\n\n\n for (var key in axisProxies) {\n if (axisProxies.hasOwnProperty(key) && !axisProxies[key].hostedBy(this)) {\n return axisProxies[key];\n }\n }\n },\n\n /**\n * @return {Array.}\n */\n getRangePropMode: function () {\n return this._rangePropMode.slice();\n }\n});\n/**\n * Retrieve the those raw params from option, which will be cached separately.\n * becasue they will be overwritten by normalized/calculated values in the main\n * process.\n */\n\nfunction retrieveRawOption(option) {\n var ret = {};\n each(['start', 'end', 'startValue', 'endValue', 'throttle'], function (name) {\n option.hasOwnProperty(name) && (ret[name] = option[name]);\n });\n return ret;\n}\n\nfunction updateRangeUse(dataZoomModel, inputRawOption) {\n var rangePropMode = dataZoomModel._rangePropMode;\n var rangeModeInOption = dataZoomModel.get('rangeMode');\n each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\n var percentSpecified = inputRawOption[names[0]] != null;\n var valueSpecified = inputRawOption[names[1]] != null;\n\n if (percentSpecified && !valueSpecified) {\n rangePropMode[index] = 'percent';\n } else if (!percentSpecified && valueSpecified) {\n rangePropMode[index] = 'value';\n } else if (rangeModeInOption) {\n rangePropMode[index] = rangeModeInOption[index];\n } else if (percentSpecified) {\n // percentSpecified && valueSpecified\n rangePropMode[index] = 'percent';\n } // else remain its original setting.\n\n });\n}\n\nvar _default = DataZoomModel;\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 ComponentView = require(\"../../view/Component\");\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 _default = ComponentView.extend({\n type: 'dataZoom',\n render: function (dataZoomModel, ecModel, api, payload) {\n this.dataZoomModel = dataZoomModel;\n this.ecModel = ecModel;\n this.api = api;\n },\n\n /**\n * Find the first target coordinate system.\n *\n * @protected\n * @return {Object} {\n * grid: [\n * {model: coord0, axisModels: [axis1, axis3], coordIndex: 1},\n * {model: coord1, axisModels: [axis0, axis2], coordIndex: 0},\n * ...\n * ], // cartesians must not be null/undefined.\n * polar: [\n * {model: coord0, axisModels: [axis4], coordIndex: 0},\n * ...\n * ], // polars must not be null/undefined.\n * singleAxis: [\n * {model: coord0, axisModels: [], coordIndex: 0}\n * ]\n */\n getTargetCoordInfo: function () {\n var dataZoomModel = this.dataZoomModel;\n var ecModel = this.ecModel;\n var coordSysLists = {};\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex) {\n var axisModel = ecModel.getComponent(dimNames.axis, axisIndex);\n\n if (axisModel) {\n var coordModel = axisModel.getCoordSysModel();\n coordModel && save(coordModel, axisModel, coordSysLists[coordModel.mainType] || (coordSysLists[coordModel.mainType] = []), coordModel.componentIndex);\n }\n }, this);\n\n function save(coordModel, axisModel, store, coordIndex) {\n var item;\n\n for (var i = 0; i < store.length; i++) {\n if (store[i].model === coordModel) {\n item = store[i];\n break;\n }\n }\n\n if (!item) {\n store.push(item = {\n model: coordModel,\n axisModels: [],\n coordIndex: coordIndex\n });\n }\n\n item.axisModels.push(axisModel);\n }\n\n return coordSysLists;\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 DataZoomModel = require(\"./DataZoomModel\");\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 _default = DataZoomModel.extend({\n type: 'dataZoom.inside',\n\n /**\n * @protected\n */\n defaultOption: {\n disabled: false,\n // Whether disable this inside zoom.\n zoomLock: false,\n // Whether disable zoom but only pan.\n zoomOnMouseWheel: true,\n // Can be: true / false / 'shift' / 'ctrl' / 'alt'.\n moveOnMouseMove: true,\n // Can be: true / false / 'shift' / 'ctrl' / 'alt'.\n moveOnMouseWheel: false,\n // Can be: true / false / 'shift' / 'ctrl' / 'alt'.\n preventDefaultMouseMove: true\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar DataZoomView = require(\"./DataZoomView\");\n\nvar sliderMove = require(\"../helper/sliderMove\");\n\nvar roams = require(\"./roams\");\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 bind = zrUtil.bind;\nvar InsideZoomView = DataZoomView.extend({\n type: 'dataZoom.inside',\n\n /**\n * @override\n */\n init: function (ecModel, api) {\n /**\n * 'throttle' is used in this.dispatchAction, so we save range\n * to avoid missing some 'pan' info.\n * @private\n * @type {Array.}\n */\n this._range;\n },\n\n /**\n * @override\n */\n render: function (dataZoomModel, ecModel, api, payload) {\n InsideZoomView.superApply(this, 'render', arguments); // Hence the `throttle` util ensures to preserve command order,\n // here simply updating range all the time will not cause missing\n // any of the the roam change.\n\n this._range = dataZoomModel.getPercentRange(); // Reset controllers.\n\n zrUtil.each(this.getTargetCoordInfo(), function (coordInfoList, coordSysName) {\n var allCoordIds = zrUtil.map(coordInfoList, function (coordInfo) {\n return roams.generateCoordId(coordInfo.model);\n });\n zrUtil.each(coordInfoList, function (coordInfo) {\n var coordModel = coordInfo.model;\n var getRange = {};\n zrUtil.each(['pan', 'zoom', 'scrollMove'], function (eventName) {\n getRange[eventName] = bind(roamHandlers[eventName], this, coordInfo, coordSysName);\n }, this);\n roams.register(api, {\n coordId: roams.generateCoordId(coordModel),\n allCoordIds: allCoordIds,\n containsPoint: function (e, x, y) {\n return coordModel.coordinateSystem.containPoint([x, y]);\n },\n dataZoomId: dataZoomModel.id,\n dataZoomModel: dataZoomModel,\n getRange: getRange\n });\n }, this);\n }, this);\n },\n\n /**\n * @override\n */\n dispose: function () {\n roams.unregister(this.api, this.dataZoomModel.id);\n InsideZoomView.superApply(this, 'dispose', arguments);\n this._range = null;\n }\n});\nvar roamHandlers = {\n /**\n * @this {module:echarts/component/dataZoom/InsideZoomView}\n */\n zoom: function (coordInfo, coordSysName, controller, e) {\n var lastRange = this._range;\n var range = lastRange.slice(); // Calculate transform by the first axis.\n\n var axisModel = coordInfo.axisModels[0];\n\n if (!axisModel) {\n return;\n }\n\n var directionInfo = getDirectionInfo[coordSysName](null, [e.originX, e.originY], axisModel, controller, coordInfo);\n var percentPoint = (directionInfo.signal > 0 ? directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel : directionInfo.pixel - directionInfo.pixelStart) / directionInfo.pixelLength * (range[1] - range[0]) + range[0];\n var scale = Math.max(1 / e.scale, 0);\n range[0] = (range[0] - percentPoint) * scale + percentPoint;\n range[1] = (range[1] - percentPoint) * scale + percentPoint; // Restrict range.\n\n var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n sliderMove(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan);\n this._range = range;\n\n if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\n return range;\n }\n },\n\n /**\n * @this {module:echarts/component/dataZoom/InsideZoomView}\n */\n pan: makeMover(function (range, axisModel, coordInfo, coordSysName, controller, e) {\n var directionInfo = getDirectionInfo[coordSysName]([e.oldX, e.oldY], [e.newX, e.newY], axisModel, controller, coordInfo);\n return directionInfo.signal * (range[1] - range[0]) * directionInfo.pixel / directionInfo.pixelLength;\n }),\n\n /**\n * @this {module:echarts/component/dataZoom/InsideZoomView}\n */\n scrollMove: makeMover(function (range, axisModel, coordInfo, coordSysName, controller, e) {\n var directionInfo = getDirectionInfo[coordSysName]([0, 0], [e.scrollDelta, e.scrollDelta], axisModel, controller, coordInfo);\n return directionInfo.signal * (range[1] - range[0]) * e.scrollDelta;\n })\n};\n\nfunction makeMover(getPercentDelta) {\n return function (coordInfo, coordSysName, controller, e) {\n var lastRange = this._range;\n var range = lastRange.slice(); // Calculate transform by the first axis.\n\n var axisModel = coordInfo.axisModels[0];\n\n if (!axisModel) {\n return;\n }\n\n var percentDelta = getPercentDelta(range, axisModel, coordInfo, coordSysName, controller, e);\n sliderMove(percentDelta, range, [0, 100], 'all');\n this._range = range;\n\n if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\n return range;\n }\n };\n}\n\nvar getDirectionInfo = {\n grid: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n var axis = axisModel.axis;\n var ret = {};\n var rect = coordInfo.model.coordinateSystem.getRect();\n oldPoint = oldPoint || [0, 0];\n\n if (axis.dim === 'x') {\n ret.pixel = newPoint[0] - oldPoint[0];\n ret.pixelLength = rect.width;\n ret.pixelStart = rect.x;\n ret.signal = axis.inverse ? 1 : -1;\n } else {\n // axis.dim === 'y'\n ret.pixel = newPoint[1] - oldPoint[1];\n ret.pixelLength = rect.height;\n ret.pixelStart = rect.y;\n ret.signal = axis.inverse ? -1 : 1;\n }\n\n return ret;\n },\n polar: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n var axis = axisModel.axis;\n var ret = {};\n var polar = coordInfo.model.coordinateSystem;\n var radiusExtent = polar.getRadiusAxis().getExtent();\n var angleExtent = polar.getAngleAxis().getExtent();\n oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0];\n newPoint = polar.pointToCoord(newPoint);\n\n if (axisModel.mainType === 'radiusAxis') {\n ret.pixel = newPoint[0] - oldPoint[0]; // ret.pixelLength = Math.abs(radiusExtent[1] - radiusExtent[0]);\n // ret.pixelStart = Math.min(radiusExtent[0], radiusExtent[1]);\n\n ret.pixelLength = radiusExtent[1] - radiusExtent[0];\n ret.pixelStart = radiusExtent[0];\n ret.signal = axis.inverse ? 1 : -1;\n } else {\n // 'angleAxis'\n ret.pixel = newPoint[1] - oldPoint[1]; // ret.pixelLength = Math.abs(angleExtent[1] - angleExtent[0]);\n // ret.pixelStart = Math.min(angleExtent[0], angleExtent[1]);\n\n ret.pixelLength = angleExtent[1] - angleExtent[0];\n ret.pixelStart = angleExtent[0];\n ret.signal = axis.inverse ? -1 : 1;\n }\n\n return ret;\n },\n singleAxis: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n var axis = axisModel.axis;\n var rect = coordInfo.model.coordinateSystem.getRect();\n var ret = {};\n oldPoint = oldPoint || [0, 0];\n\n if (axis.orient === 'horizontal') {\n ret.pixel = newPoint[0] - oldPoint[0];\n ret.pixelLength = rect.width;\n ret.pixelStart = rect.x;\n ret.signal = axis.inverse ? 1 : -1;\n } else {\n // 'vertical'\n ret.pixel = newPoint[1] - oldPoint[1];\n ret.pixelLength = rect.height;\n ret.pixelStart = rect.y;\n ret.signal = axis.inverse ? -1 : 1;\n }\n\n return ret;\n }\n};\nvar _default = InsideZoomView;\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 DataZoomModel = require(\"./DataZoomModel\");\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 _default = DataZoomModel.extend({\n type: 'dataZoom.select'\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 DataZoomView = require(\"./DataZoomView\");\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 _default = DataZoomView.extend({\n type: 'dataZoom.select'\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 DataZoomModel = require(\"./DataZoomModel\");\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 SliderZoomModel = DataZoomModel.extend({\n type: 'dataZoom.slider',\n layoutMode: 'box',\n\n /**\n * @protected\n */\n defaultOption: {\n show: true,\n // ph => placeholder. Using placehoder here because\n // deault value can only be drived in view stage.\n right: 'ph',\n // Default align to grid rect.\n top: 'ph',\n // Default align to grid rect.\n width: 'ph',\n // Default align to grid rect.\n height: 'ph',\n // Default align to grid rect.\n left: null,\n // Default align to grid rect.\n bottom: null,\n // Default align to grid rect.\n backgroundColor: 'rgba(47,69,84,0)',\n // Background of slider zoom component.\n // dataBackgroundColor: '#ddd', // Background coor of data shadow and border of box,\n // highest priority, remain for compatibility of\n // previous version, but not recommended any more.\n dataBackground: {\n lineStyle: {\n color: '#2f4554',\n width: 0.5,\n opacity: 0.3\n },\n areaStyle: {\n color: 'rgba(47,69,84,0.3)',\n opacity: 0.3\n }\n },\n borderColor: '#ddd',\n // border color of the box. For compatibility,\n // if dataBackgroundColor is set, borderColor\n // is ignored.\n fillerColor: 'rgba(167,183,204,0.4)',\n // Color of selected area.\n // handleColor: 'rgba(89,170,216,0.95)', // Color of handle.\n // handleIcon: 'path://M4.9,17.8c0-1.4,4.5-10.5,5.5-12.4c0-0.1,0.6-1.1,0.9-1.1c0.4,0,0.9,1,0.9,1.1c1.1,2.2,5.4,11,5.4,12.4v17.8c0,1.5-0.6,2.1-1.3,2.1H6.1c-0.7,0-1.3-0.6-1.3-2.1V17.8z',\n\n /* eslint-disable */\n handleIcon: 'M8.2,13.6V3.9H6.3v9.7H3.1v14.9h3.3v9.7h1.8v-9.7h3.3V13.6H8.2z M9.7,24.4H4.8v-1.4h4.9V24.4z M9.7,19.1H4.8v-1.4h4.9V19.1z',\n\n /* eslint-enable */\n // Percent of the slider height\n handleSize: '100%',\n handleStyle: {\n color: '#a7b7cc'\n },\n labelPrecision: null,\n labelFormatter: null,\n showDetail: true,\n showDataShadow: 'auto',\n // Default auto decision.\n realtime: true,\n zoomLock: false,\n // Whether disable zoom.\n textStyle: {\n color: '#333'\n }\n }\n});\nvar _default = SliderZoomModel;\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 eventTool = require(\"zrender/lib/core/event\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar throttle = require(\"../../util/throttle\");\n\nvar DataZoomView = require(\"./DataZoomView\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar layout = require(\"../../util/layout\");\n\nvar sliderMove = require(\"../helper/sliderMove\");\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 Rect = graphic.Rect;\nvar linearMap = numberUtil.linearMap;\nvar asc = numberUtil.asc;\nvar bind = zrUtil.bind;\nvar each = zrUtil.each; // Constants\n\nvar DEFAULT_LOCATION_EDGE_GAP = 7;\nvar DEFAULT_FRAME_BORDER_WIDTH = 1;\nvar DEFAULT_FILLER_SIZE = 30;\nvar HORIZONTAL = 'horizontal';\nvar VERTICAL = 'vertical';\nvar LABEL_GAP = 5;\nvar SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter'];\nvar SliderZoomView = DataZoomView.extend({\n type: 'dataZoom.slider',\n init: function (ecModel, api) {\n /**\n * @private\n * @type {Object}\n */\n this._displayables = {};\n /**\n * @private\n * @type {string}\n */\n\n this._orient;\n /**\n * [0, 100]\n * @private\n */\n\n this._range;\n /**\n * [coord of the first handle, coord of the second handle]\n * @private\n */\n\n this._handleEnds;\n /**\n * [length, thick]\n * @private\n * @type {Array.}\n */\n\n this._size;\n /**\n * @private\n * @type {number}\n */\n\n this._handleWidth;\n /**\n * @private\n * @type {number}\n */\n\n this._handleHeight;\n /**\n * @private\n */\n\n this._location;\n /**\n * @private\n */\n\n this._dragging;\n /**\n * @private\n */\n\n this._dataShadowInfo;\n this.api = api;\n },\n\n /**\n * @override\n */\n render: function (dataZoomModel, ecModel, api, payload) {\n SliderZoomView.superApply(this, 'render', arguments);\n throttle.createOrUpdate(this, '_dispatchZoomAction', this.dataZoomModel.get('throttle'), 'fixRate');\n this._orient = dataZoomModel.get('orient');\n\n if (this.dataZoomModel.get('show') === false) {\n this.group.removeAll();\n return;\n } // Notice: this._resetInterval() should not be executed when payload.type\n // is 'dataZoom', origin this._range should be maintained, otherwise 'pan'\n // or 'zoom' info will be missed because of 'throttle' of this.dispatchAction,\n\n\n if (!payload || payload.type !== 'dataZoom' || payload.from !== this.uid) {\n this._buildView();\n }\n\n this._updateView();\n },\n\n /**\n * @override\n */\n remove: function () {\n SliderZoomView.superApply(this, 'remove', arguments);\n throttle.clear(this, '_dispatchZoomAction');\n },\n\n /**\n * @override\n */\n dispose: function () {\n SliderZoomView.superApply(this, 'dispose', arguments);\n throttle.clear(this, '_dispatchZoomAction');\n },\n _buildView: function () {\n var thisGroup = this.group;\n thisGroup.removeAll();\n\n this._resetLocation();\n\n this._resetInterval();\n\n var barGroup = this._displayables.barGroup = new graphic.Group();\n\n this._renderBackground();\n\n this._renderHandle();\n\n this._renderDataShadow();\n\n thisGroup.add(barGroup);\n\n this._positionGroup();\n },\n\n /**\n * @private\n */\n _resetLocation: function () {\n var dataZoomModel = this.dataZoomModel;\n var api = this.api; // If some of x/y/width/height are not specified,\n // auto-adapt according to target grid.\n\n var coordRect = this._findCoordRect();\n\n var ecSize = {\n width: api.getWidth(),\n height: api.getHeight()\n }; // Default align by coordinate system rect.\n\n var positionInfo = this._orient === HORIZONTAL ? {\n // Why using 'right', because right should be used in vertical,\n // and it is better to be consistent for dealing with position param merge.\n right: ecSize.width - coordRect.x - coordRect.width,\n top: ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP,\n width: coordRect.width,\n height: DEFAULT_FILLER_SIZE\n } : {\n // vertical\n right: DEFAULT_LOCATION_EDGE_GAP,\n top: coordRect.y,\n width: DEFAULT_FILLER_SIZE,\n height: coordRect.height\n }; // Do not write back to option and replace value 'ph', because\n // the 'ph' value should be recalculated when resize.\n\n var layoutParams = layout.getLayoutParams(dataZoomModel.option); // Replace the placeholder value.\n\n zrUtil.each(['right', 'top', 'width', 'height'], function (name) {\n if (layoutParams[name] === 'ph') {\n layoutParams[name] = positionInfo[name];\n }\n });\n var layoutRect = layout.getLayoutRect(layoutParams, ecSize, dataZoomModel.padding);\n this._location = {\n x: layoutRect.x,\n y: layoutRect.y\n };\n this._size = [layoutRect.width, layoutRect.height];\n this._orient === VERTICAL && this._size.reverse();\n },\n\n /**\n * @private\n */\n _positionGroup: function () {\n var thisGroup = this.group;\n var location = this._location;\n var orient = this._orient; // Just use the first axis to determine mapping.\n\n var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel();\n var inverse = targetAxisModel && targetAxisModel.get('inverse');\n var barGroup = this._displayables.barGroup;\n var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse; // Transform barGroup.\n\n barGroup.attr(orient === HORIZONTAL && !inverse ? {\n scale: otherAxisInverse ? [1, 1] : [1, -1]\n } : orient === HORIZONTAL && inverse ? {\n scale: otherAxisInverse ? [-1, 1] : [-1, -1]\n } : orient === VERTICAL && !inverse ? {\n scale: otherAxisInverse ? [1, -1] : [1, 1],\n rotation: Math.PI / 2 // Dont use Math.PI, considering shadow direction.\n\n } : {\n scale: otherAxisInverse ? [-1, -1] : [-1, 1],\n rotation: Math.PI / 2\n }); // Position barGroup\n\n var rect = thisGroup.getBoundingRect([barGroup]);\n thisGroup.attr('position', [location.x - rect.x, location.y - rect.y]);\n },\n\n /**\n * @private\n */\n _getViewExtent: function () {\n return [0, this._size[0]];\n },\n _renderBackground: function () {\n var dataZoomModel = this.dataZoomModel;\n var size = this._size;\n var barGroup = this._displayables.barGroup;\n barGroup.add(new Rect({\n silent: true,\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n fill: dataZoomModel.get('backgroundColor')\n },\n z2: -40\n })); // Click panel, over shadow, below handles.\n\n barGroup.add(new Rect({\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n fill: 'transparent'\n },\n z2: 0,\n onclick: zrUtil.bind(this._onClickPanelClick, this)\n }));\n },\n _renderDataShadow: function () {\n var info = this._dataShadowInfo = this._prepareDataShadowInfo();\n\n if (!info) {\n return;\n }\n\n var size = this._size;\n var seriesModel = info.series;\n var data = seriesModel.getRawData();\n var otherDim = seriesModel.getShadowDim ? seriesModel.getShadowDim() // @see candlestick\n : info.otherDim;\n\n if (otherDim == null) {\n return;\n }\n\n var otherDataExtent = data.getDataExtent(otherDim); // Nice extent.\n\n var otherOffset = (otherDataExtent[1] - otherDataExtent[0]) * 0.3;\n otherDataExtent = [otherDataExtent[0] - otherOffset, otherDataExtent[1] + otherOffset];\n var otherShadowExtent = [0, size[1]];\n var thisShadowExtent = [0, size[0]];\n var areaPoints = [[size[0], 0], [0, 0]];\n var linePoints = [];\n var step = thisShadowExtent[1] / (data.count() - 1);\n var thisCoord = 0; // Optimize for large data shadow\n\n var stride = Math.round(data.count() / size[0]);\n var lastIsEmpty;\n data.each([otherDim], function (value, index) {\n if (stride > 0 && index % stride) {\n thisCoord += step;\n return;\n } // FIXME\n // Should consider axis.min/axis.max when drawing dataShadow.\n // FIXME\n // 应该使用统一的空判断?还是在list里进行空判断?\n\n\n var isEmpty = value == null || isNaN(value) || value === ''; // See #4235.\n\n var otherCoord = isEmpty ? 0 : linearMap(value, otherDataExtent, otherShadowExtent, true); // Attempt to draw data shadow precisely when there are empty value.\n\n if (isEmpty && !lastIsEmpty && index) {\n areaPoints.push([areaPoints[areaPoints.length - 1][0], 0]);\n linePoints.push([linePoints[linePoints.length - 1][0], 0]);\n } else if (!isEmpty && lastIsEmpty) {\n areaPoints.push([thisCoord, 0]);\n linePoints.push([thisCoord, 0]);\n }\n\n areaPoints.push([thisCoord, otherCoord]);\n linePoints.push([thisCoord, otherCoord]);\n thisCoord += step;\n lastIsEmpty = isEmpty;\n });\n var dataZoomModel = this.dataZoomModel; // var dataBackgroundModel = dataZoomModel.getModel('dataBackground');\n\n this._displayables.barGroup.add(new graphic.Polygon({\n shape: {\n points: areaPoints\n },\n style: zrUtil.defaults({\n fill: dataZoomModel.get('dataBackgroundColor')\n }, dataZoomModel.getModel('dataBackground.areaStyle').getAreaStyle()),\n silent: true,\n z2: -20\n }));\n\n this._displayables.barGroup.add(new graphic.Polyline({\n shape: {\n points: linePoints\n },\n style: dataZoomModel.getModel('dataBackground.lineStyle').getLineStyle(),\n silent: true,\n z2: -19\n }));\n },\n _prepareDataShadowInfo: function () {\n var dataZoomModel = this.dataZoomModel;\n var showDataShadow = dataZoomModel.get('showDataShadow');\n\n if (showDataShadow === false) {\n return;\n } // Find a representative series.\n\n\n var result;\n var ecModel = this.ecModel;\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex) {\n var seriesModels = dataZoomModel.getAxisProxy(dimNames.name, axisIndex).getTargetSeriesModels();\n zrUtil.each(seriesModels, function (seriesModel) {\n if (result) {\n return;\n }\n\n if (showDataShadow !== true && zrUtil.indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get('type')) < 0) {\n return;\n }\n\n var thisAxis = ecModel.getComponent(dimNames.axis, axisIndex).axis;\n var otherDim = getOtherDim(dimNames.name);\n var otherAxisInverse;\n var coordSys = seriesModel.coordinateSystem;\n\n if (otherDim != null && coordSys.getOtherAxis) {\n otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse;\n }\n\n otherDim = seriesModel.getData().mapDimension(otherDim);\n result = {\n thisAxis: thisAxis,\n series: seriesModel,\n thisDim: dimNames.name,\n otherDim: otherDim,\n otherAxisInverse: otherAxisInverse\n };\n }, this);\n }, this);\n return result;\n },\n _renderHandle: function () {\n var displaybles = this._displayables;\n var handles = displaybles.handles = [];\n var handleLabels = displaybles.handleLabels = [];\n var barGroup = this._displayables.barGroup;\n var size = this._size;\n var dataZoomModel = this.dataZoomModel;\n barGroup.add(displaybles.filler = new Rect({\n draggable: true,\n cursor: getCursor(this._orient),\n drift: bind(this._onDragMove, this, 'all'),\n ondragstart: bind(this._showDataInfo, this, true),\n ondragend: bind(this._onDragEnd, this),\n onmouseover: bind(this._showDataInfo, this, true),\n onmouseout: bind(this._showDataInfo, this, false),\n style: {\n fill: dataZoomModel.get('fillerColor'),\n textPosition: 'inside'\n }\n })); // Frame border.\n\n barGroup.add(new Rect({\n silent: true,\n subPixelOptimize: true,\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n stroke: dataZoomModel.get('dataBackgroundColor') || dataZoomModel.get('borderColor'),\n lineWidth: DEFAULT_FRAME_BORDER_WIDTH,\n fill: 'rgba(0,0,0,0)'\n }\n }));\n each([0, 1], function (handleIndex) {\n var path = graphic.createIcon(dataZoomModel.get('handleIcon'), {\n cursor: getCursor(this._orient),\n draggable: true,\n drift: bind(this._onDragMove, this, handleIndex),\n ondragend: bind(this._onDragEnd, this),\n onmouseover: bind(this._showDataInfo, this, true),\n onmouseout: bind(this._showDataInfo, this, false)\n }, {\n x: -1,\n y: 0,\n width: 2,\n height: 2\n });\n var bRect = path.getBoundingRect();\n this._handleHeight = numberUtil.parsePercent(dataZoomModel.get('handleSize'), this._size[1]);\n this._handleWidth = bRect.width / bRect.height * this._handleHeight;\n path.setStyle(dataZoomModel.getModel('handleStyle').getItemStyle());\n var handleColor = dataZoomModel.get('handleColor'); // Compatitable with previous version\n\n if (handleColor != null) {\n path.style.fill = handleColor;\n }\n\n barGroup.add(handles[handleIndex] = path);\n var textStyleModel = dataZoomModel.textStyleModel;\n this.group.add(handleLabels[handleIndex] = new graphic.Text({\n silent: true,\n invisible: true,\n style: {\n x: 0,\n y: 0,\n text: '',\n textVerticalAlign: 'middle',\n textAlign: 'center',\n textFill: textStyleModel.getTextColor(),\n textFont: textStyleModel.getFont()\n },\n z2: 10\n }));\n }, this);\n },\n\n /**\n * @private\n */\n _resetInterval: function () {\n var range = this._range = this.dataZoomModel.getPercentRange();\n\n var viewExtent = this._getViewExtent();\n\n this._handleEnds = [linearMap(range[0], [0, 100], viewExtent, true), linearMap(range[1], [0, 100], viewExtent, true)];\n },\n\n /**\n * @private\n * @param {(number|string)} handleIndex 0 or 1 or 'all'\n * @param {number} delta\n * @return {boolean} changed\n */\n _updateInterval: function (handleIndex, delta) {\n var dataZoomModel = this.dataZoomModel;\n var handleEnds = this._handleEnds;\n\n var viewExtend = this._getViewExtent();\n\n var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n var percentExtent = [0, 100];\n sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get('zoomLock') ? 'all' : handleIndex, minMaxSpan.minSpan != null ? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null ? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null);\n var lastRange = this._range;\n var range = this._range = asc([linearMap(handleEnds[0], viewExtend, percentExtent, true), linearMap(handleEnds[1], viewExtend, percentExtent, true)]);\n return !lastRange || lastRange[0] !== range[0] || lastRange[1] !== range[1];\n },\n\n /**\n * @private\n */\n _updateView: function (nonRealtime) {\n var displaybles = this._displayables;\n var handleEnds = this._handleEnds;\n var handleInterval = asc(handleEnds.slice());\n var size = this._size;\n each([0, 1], function (handleIndex) {\n // Handles\n var handle = displaybles.handles[handleIndex];\n var handleHeight = this._handleHeight;\n handle.attr({\n scale: [handleHeight / 2, handleHeight / 2],\n position: [handleEnds[handleIndex], size[1] / 2 - handleHeight / 2]\n });\n }, this); // Filler\n\n displaybles.filler.setShape({\n x: handleInterval[0],\n y: 0,\n width: handleInterval[1] - handleInterval[0],\n height: size[1]\n });\n\n this._updateDataInfo(nonRealtime);\n },\n\n /**\n * @private\n */\n _updateDataInfo: function (nonRealtime) {\n var dataZoomModel = this.dataZoomModel;\n var displaybles = this._displayables;\n var handleLabels = displaybles.handleLabels;\n var orient = this._orient;\n var labelTexts = ['', '']; // FIXME\n // date型,支持formatter,autoformatter(ec2 date.getAutoFormatter)\n\n if (dataZoomModel.get('showDetail')) {\n var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n\n if (axisProxy) {\n var axis = axisProxy.getAxisModel().axis;\n var range = this._range;\n var dataInterval = nonRealtime // See #4434, data and axis are not processed and reset yet in non-realtime mode.\n ? axisProxy.calculateDataWindow({\n start: range[0],\n end: range[1]\n }).valueWindow : axisProxy.getDataValueWindow();\n labelTexts = [this._formatLabel(dataInterval[0], axis), this._formatLabel(dataInterval[1], axis)];\n }\n }\n\n var orderedHandleEnds = asc(this._handleEnds.slice());\n setLabel.call(this, 0);\n setLabel.call(this, 1);\n\n function setLabel(handleIndex) {\n // Label\n // Text should not transform by barGroup.\n // Ignore handlers transform\n var barTransform = graphic.getTransform(displaybles.handles[handleIndex].parent, this.group);\n var direction = graphic.transformDirection(handleIndex === 0 ? 'right' : 'left', barTransform);\n var offset = this._handleWidth / 2 + LABEL_GAP;\n var textPoint = graphic.applyTransform([orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset : offset), this._size[1] / 2], barTransform);\n handleLabels[handleIndex].setStyle({\n x: textPoint[0],\n y: textPoint[1],\n textVerticalAlign: orient === HORIZONTAL ? 'middle' : direction,\n textAlign: orient === HORIZONTAL ? direction : 'center',\n text: labelTexts[handleIndex]\n });\n }\n },\n\n /**\n * @private\n */\n _formatLabel: function (value, axis) {\n var dataZoomModel = this.dataZoomModel;\n var labelFormatter = dataZoomModel.get('labelFormatter');\n var labelPrecision = dataZoomModel.get('labelPrecision');\n\n if (labelPrecision == null || labelPrecision === 'auto') {\n labelPrecision = axis.getPixelPrecision();\n }\n\n var valueStr = value == null || isNaN(value) ? '' // FIXME Glue code\n : axis.type === 'category' || axis.type === 'time' ? axis.scale.getLabel(Math.round(value)) // param of toFixed should less then 20.\n : value.toFixed(Math.min(labelPrecision, 20));\n return zrUtil.isFunction(labelFormatter) ? labelFormatter(value, valueStr) : zrUtil.isString(labelFormatter) ? labelFormatter.replace('{value}', valueStr) : valueStr;\n },\n\n /**\n * @private\n * @param {boolean} showOrHide true: show, false: hide\n */\n _showDataInfo: function (showOrHide) {\n // Always show when drgging.\n showOrHide = this._dragging || showOrHide;\n var handleLabels = this._displayables.handleLabels;\n handleLabels[0].attr('invisible', !showOrHide);\n handleLabels[1].attr('invisible', !showOrHide);\n },\n _onDragMove: function (handleIndex, dx, dy, event) {\n this._dragging = true; // For mobile device, prevent screen slider on the button.\n\n eventTool.stop(event.event); // Transform dx, dy to bar coordination.\n\n var barTransform = this._displayables.barGroup.getLocalTransform();\n\n var vertex = graphic.applyTransform([dx, dy], barTransform, true);\n\n var changed = this._updateInterval(handleIndex, vertex[0]);\n\n var realtime = this.dataZoomModel.get('realtime');\n\n this._updateView(!realtime); // Avoid dispatch dataZoom repeatly but range not changed,\n // which cause bad visual effect when progressive enabled.\n\n\n changed && realtime && this._dispatchZoomAction();\n },\n _onDragEnd: function () {\n this._dragging = false;\n\n this._showDataInfo(false); // While in realtime mode and stream mode, dispatch action when\n // drag end will cause the whole view rerender, which is unnecessary.\n\n\n var realtime = this.dataZoomModel.get('realtime');\n !realtime && this._dispatchZoomAction();\n },\n _onClickPanelClick: function (e) {\n var size = this._size;\n\n var localPoint = this._displayables.barGroup.transformCoordToLocal(e.offsetX, e.offsetY);\n\n if (localPoint[0] < 0 || localPoint[0] > size[0] || localPoint[1] < 0 || localPoint[1] > size[1]) {\n return;\n }\n\n var handleEnds = this._handleEnds;\n var center = (handleEnds[0] + handleEnds[1]) / 2;\n\n var changed = this._updateInterval('all', localPoint[0] - center);\n\n this._updateView();\n\n changed && this._dispatchZoomAction();\n },\n\n /**\n * This action will be throttled.\n * @private\n */\n _dispatchZoomAction: function () {\n var range = this._range;\n this.api.dispatchAction({\n type: 'dataZoom',\n from: this.uid,\n dataZoomId: this.dataZoomModel.id,\n start: range[0],\n end: range[1]\n });\n },\n\n /**\n * @private\n */\n _findCoordRect: function () {\n // Find the grid coresponding to the first axis referred by dataZoom.\n var rect;\n each(this.getTargetCoordInfo(), function (coordInfoList) {\n if (!rect && coordInfoList.length) {\n var coordSys = coordInfoList[0].model.coordinateSystem;\n rect = coordSys.getRect && coordSys.getRect();\n }\n });\n\n if (!rect) {\n var width = this.api.getWidth();\n var height = this.api.getHeight();\n rect = {\n x: width * 0.2,\n y: height * 0.2,\n width: width * 0.6,\n height: height * 0.6\n };\n }\n\n return rect;\n }\n});\n\nfunction getOtherDim(thisDim) {\n // FIXME\n // 这个逻辑和getOtherAxis里一致,但是写在这里是否不好\n var map = {\n x: 'y',\n y: 'x',\n radius: 'angle',\n angle: 'radius'\n };\n return map[thisDim];\n}\n\nfunction getCursor(orient) {\n return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\n\nvar _default = SliderZoomView;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar helper = require(\"./helper\");\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*/\necharts.registerAction('dataZoom', function (payload, ecModel) {\n var linkedNodesFinder = helper.createLinkedNodesFinder(zrUtil.bind(ecModel.eachComponent, ecModel, 'dataZoom'), helper.eachAxisDim, function (model, dimNames) {\n return model.get(dimNames.axisIndex);\n });\n var effectedModels = [];\n ecModel.eachComponent({\n mainType: 'dataZoom',\n query: payload\n }, function (model, index) {\n effectedModels.push.apply(effectedModels, linkedNodesFinder(model).nodes);\n });\n zrUtil.each(effectedModels, function (dataZoomModel, index) {\n dataZoomModel.setRawRange({\n start: payload.start,\n end: payload.end,\n startValue: payload.startValue,\n endValue: payload.endValue\n });\n });\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\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*/\necharts.registerProcessor({\n // `dataZoomProcessor` will only be performed in needed series. Consider if\n // there is a line series and a pie series, it is better not to update the\n // line series if only pie series is needed to be updated.\n getTargetSeries: function (ecModel) {\n var seriesModelMap = createHashMap();\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n var axisProxy = dataZoomModel.getAxisProxy(dimNames.name, axisIndex);\n each(axisProxy.getTargetSeriesModels(), function (seriesModel) {\n seriesModelMap.set(seriesModel.uid, seriesModel);\n });\n });\n });\n return seriesModelMap;\n },\n modifyOutputEnd: true,\n // Consider appendData, where filter should be performed. Because data process is\n // in block mode currently, it is not need to worry about that the overallProgress\n // execute every frame.\n overallReset: function (ecModel, api) {\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n // We calculate window and reset axis here but not in model\n // init stage and not after action dispatch handler, because\n // reset should be called after seriesData.restoreData.\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n dataZoomModel.getAxisProxy(dimNames.name, axisIndex).reset(dataZoomModel, api);\n }); // Caution: data zoom filtering is order sensitive when using\n // percent range and no min/max/scale set on axis.\n // For example, we have dataZoom definition:\n // [\n // {xAxisIndex: 0, start: 30, end: 70},\n // {yAxisIndex: 0, start: 20, end: 80}\n // ]\n // In this case, [20, 80] of y-dataZoom should be based on data\n // that have filtered by x-dataZoom using range of [30, 70],\n // but should not be based on full raw data. Thus sliding\n // x-dataZoom will change both ranges of xAxis and yAxis,\n // while sliding y-dataZoom will only change the range of yAxis.\n // So we should filter x-axis after reset x-axis immediately,\n // and then reset y-axis and filter y-axis.\n\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n dataZoomModel.getAxisProxy(dimNames.name, axisIndex).filterData(dataZoomModel, api);\n });\n });\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n // Fullfill all of the range props so that user\n // is able to get them from chart.getOption().\n var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n var percentRange = axisProxy.getDataPercentWindow();\n var valueRange = axisProxy.getDataValueWindow();\n dataZoomModel.setCalculatedRange({\n start: percentRange[0],\n end: percentRange[1],\n startValue: valueRange[0],\n endValue: valueRange[1]\n });\n });\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar formatUtil = require(\"../../util/format\");\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 AXIS_DIMS = ['x', 'y', 'z', 'radius', 'angle', 'single']; // Supported coords.\n\nvar COORDS = ['cartesian2d', 'polar', 'singleAxis'];\n/**\n * @param {string} coordType\n * @return {boolean}\n */\n\nfunction isCoordSupported(coordType) {\n return zrUtil.indexOf(COORDS, coordType) >= 0;\n}\n/**\n * Create \"each\" method to iterate names.\n *\n * @pubilc\n * @param {Array.} names\n * @param {Array.=} attrs\n * @return {Function}\n */\n\n\nfunction createNameEach(names, attrs) {\n names = names.slice();\n var capitalNames = zrUtil.map(names, formatUtil.capitalFirst);\n attrs = (attrs || []).slice();\n var capitalAttrs = zrUtil.map(attrs, formatUtil.capitalFirst);\n return function (callback, context) {\n zrUtil.each(names, function (name, index) {\n var nameObj = {\n name: name,\n capital: capitalNames[index]\n };\n\n for (var j = 0; j < attrs.length; j++) {\n nameObj[attrs[j]] = name + capitalAttrs[j];\n }\n\n callback.call(context, nameObj);\n });\n };\n}\n/**\n * Iterate each dimension name.\n *\n * @public\n * @param {Function} callback The parameter is like:\n * {\n * name: 'angle',\n * capital: 'Angle',\n * axis: 'angleAxis',\n * axisIndex: 'angleAixs',\n * index: 'angleIndex'\n * }\n * @param {Object} context\n */\n\n\nvar eachAxisDim = createNameEach(AXIS_DIMS, ['axisIndex', 'axis', 'index', 'id']);\n/**\n * If tow dataZoomModels has the same axis controlled, we say that they are 'linked'.\n * dataZoomModels and 'links' make up one or more graphics.\n * This function finds the graphic where the source dataZoomModel is in.\n *\n * @public\n * @param {Function} forEachNode Node iterator.\n * @param {Function} forEachEdgeType edgeType iterator\n * @param {Function} edgeIdGetter Giving node and edgeType, return an array of edge id.\n * @return {Function} Input: sourceNode, Output: Like {nodes: [], dims: {}}\n */\n\nfunction createLinkedNodesFinder(forEachNode, forEachEdgeType, edgeIdGetter) {\n return function (sourceNode) {\n var result = {\n nodes: [],\n records: {} // key: edgeType.name, value: Object (key: edge id, value: boolean).\n\n };\n forEachEdgeType(function (edgeType) {\n result.records[edgeType.name] = {};\n });\n\n if (!sourceNode) {\n return result;\n }\n\n absorb(sourceNode, result);\n var existsLink;\n\n do {\n existsLink = false;\n forEachNode(processSingleNode);\n } while (existsLink);\n\n function processSingleNode(node) {\n if (!isNodeAbsorded(node, result) && isLinked(node, result)) {\n absorb(node, result);\n existsLink = true;\n }\n }\n\n return result;\n };\n\n function isNodeAbsorded(node, result) {\n return zrUtil.indexOf(result.nodes, node) >= 0;\n }\n\n function isLinked(node, result) {\n var hasLink = false;\n forEachEdgeType(function (edgeType) {\n zrUtil.each(edgeIdGetter(node, edgeType) || [], function (edgeId) {\n result.records[edgeType.name][edgeId] && (hasLink = true);\n });\n });\n return hasLink;\n }\n\n function absorb(node, result) {\n result.nodes.push(node);\n forEachEdgeType(function (edgeType) {\n zrUtil.each(edgeIdGetter(node, edgeType) || [], function (edgeId) {\n result.records[edgeType.name][edgeId] = true;\n });\n });\n }\n}\n\nexports.isCoordSupported = isCoordSupported;\nexports.createNameEach = createNameEach;\nexports.eachAxisDim = eachAxisDim;\nexports.createLinkedNodesFinder = createLinkedNodesFinder;","\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*/\nvar each = zrUtil.each;\nvar ATTR = '\\0_ec_hist_store';\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} newSnapshot {dataZoomId, batch: [payloadInfo, ...]}\n */\n\nfunction push(ecModel, newSnapshot) {\n var store = giveStore(ecModel); // If previous dataZoom can not be found,\n // complete an range with current range.\n\n each(newSnapshot, function (batchItem, dataZoomId) {\n var i = store.length - 1;\n\n for (; i >= 0; i--) {\n var snapshot = store[i];\n\n if (snapshot[dataZoomId]) {\n break;\n }\n }\n\n if (i < 0) {\n // No origin range set, create one by current range.\n var dataZoomModel = ecModel.queryComponents({\n mainType: 'dataZoom',\n subType: 'select',\n id: dataZoomId\n })[0];\n\n if (dataZoomModel) {\n var percentRange = dataZoomModel.getPercentRange();\n store[0][dataZoomId] = {\n dataZoomId: dataZoomId,\n start: percentRange[0],\n end: percentRange[1]\n };\n }\n }\n });\n store.push(newSnapshot);\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n * @return {Object} snapshot\n */\n\n\nfunction pop(ecModel) {\n var store = giveStore(ecModel);\n var head = store[store.length - 1];\n store.length > 1 && store.pop(); // Find top for all dataZoom.\n\n var snapshot = {};\n each(head, function (batchItem, dataZoomId) {\n for (var i = store.length - 1; i >= 0; i--) {\n var batchItem = store[i][dataZoomId];\n\n if (batchItem) {\n snapshot[dataZoomId] = batchItem;\n break;\n }\n }\n });\n return snapshot;\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction clear(ecModel) {\n ecModel[ATTR] = null;\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n * @return {number} records. always >= 1.\n */\n\n\nfunction count(ecModel) {\n return giveStore(ecModel).length;\n}\n/**\n * [{key: dataZoomId, value: {dataZoomId, range}}, ...]\n * History length of each dataZoom may be different.\n * this._history[0] is used to store origin range.\n * @type {Array.}\n */\n\n\nfunction giveStore(ecModel) {\n var store = ecModel[ATTR];\n\n if (!store) {\n store = ecModel[ATTR] = [{}];\n }\n\n return store;\n}\n\nexports.push = push;\nexports.pop = pop;\nexports.clear = clear;\nexports.count = count;","\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 RoamController = require(\"../../component/helper/RoamController\");\n\nvar throttleUtil = require(\"../../util/throttle\");\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// Only create one roam controller for each coordinate system.\n// one roam controller might be refered by two inside data zoom\n// components (for example, one for x and one for y). When user\n// pan or zoom, only dispatch one action for those data zoom\n// components.\nvar ATTR = '\\0_ec_dataZoom_roams';\n/**\n * @public\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} dataZoomInfo\n * @param {string} dataZoomInfo.coordId\n * @param {Function} dataZoomInfo.containsPoint\n * @param {Array.} dataZoomInfo.allCoordIds\n * @param {string} dataZoomInfo.dataZoomId\n * @param {Object} dataZoomInfo.getRange\n * @param {Function} dataZoomInfo.getRange.pan\n * @param {Function} dataZoomInfo.getRange.zoom\n * @param {Function} dataZoomInfo.getRange.scrollMove\n * @param {boolean} dataZoomInfo.dataZoomModel\n */\n\nfunction register(api, dataZoomInfo) {\n var store = giveStore(api);\n var theDataZoomId = dataZoomInfo.dataZoomId;\n var theCoordId = dataZoomInfo.coordId; // Do clean when a dataZoom changes its target coordnate system.\n // Avoid memory leak, dispose all not-used-registered.\n\n zrUtil.each(store, function (record, coordId) {\n var dataZoomInfos = record.dataZoomInfos;\n\n if (dataZoomInfos[theDataZoomId] && zrUtil.indexOf(dataZoomInfo.allCoordIds, theCoordId) < 0) {\n delete dataZoomInfos[theDataZoomId];\n record.count--;\n }\n });\n cleanStore(store);\n var record = store[theCoordId]; // Create if needed.\n\n if (!record) {\n record = store[theCoordId] = {\n coordId: theCoordId,\n dataZoomInfos: {},\n count: 0\n };\n record.controller = createController(api, record);\n record.dispatchAction = zrUtil.curry(dispatchAction, api);\n } // Update reference of dataZoom.\n\n\n !record.dataZoomInfos[theDataZoomId] && record.count++;\n record.dataZoomInfos[theDataZoomId] = dataZoomInfo;\n var controllerParams = mergeControllerParams(record.dataZoomInfos);\n record.controller.enable(controllerParams.controlType, controllerParams.opt); // Consider resize, area should be always updated.\n\n record.controller.setPointerChecker(dataZoomInfo.containsPoint); // Update throttle.\n\n throttleUtil.createOrUpdate(record, 'dispatchAction', dataZoomInfo.dataZoomModel.get('throttle', true), 'fixRate');\n}\n/**\n * @public\n * @param {module:echarts/ExtensionAPI} api\n * @param {string} dataZoomId\n */\n\n\nfunction unregister(api, dataZoomId) {\n var store = giveStore(api);\n zrUtil.each(store, function (record) {\n record.controller.dispose();\n var dataZoomInfos = record.dataZoomInfos;\n\n if (dataZoomInfos[dataZoomId]) {\n delete dataZoomInfos[dataZoomId];\n record.count--;\n }\n });\n cleanStore(store);\n}\n/**\n * @public\n */\n\n\nfunction generateCoordId(coordModel) {\n return coordModel.type + '\\0_' + coordModel.id;\n}\n/**\n * Key: coordId, value: {dataZoomInfos: [], count, controller}\n * @type {Array.}\n */\n\n\nfunction giveStore(api) {\n // Mount store on zrender instance, so that we do not\n // need to worry about dispose.\n var zr = api.getZr();\n return zr[ATTR] || (zr[ATTR] = {});\n}\n\nfunction createController(api, newRecord) {\n var controller = new RoamController(api.getZr());\n zrUtil.each(['pan', 'zoom', 'scrollMove'], function (eventName) {\n controller.on(eventName, function (event) {\n var batch = [];\n zrUtil.each(newRecord.dataZoomInfos, function (info) {\n // Check whether the behaviors (zoomOnMouseWheel, moveOnMouseMove,\n // moveOnMouseWheel, ...) enabled.\n if (!event.isAvailableBehavior(info.dataZoomModel.option)) {\n return;\n }\n\n var method = (info.getRange || {})[eventName];\n var range = method && method(newRecord.controller, event);\n !info.dataZoomModel.get('disabled', true) && range && batch.push({\n dataZoomId: info.dataZoomId,\n start: range[0],\n end: range[1]\n });\n });\n batch.length && newRecord.dispatchAction(batch);\n });\n });\n return controller;\n}\n\nfunction cleanStore(store) {\n zrUtil.each(store, function (record, coordId) {\n if (!record.count) {\n record.controller.dispose();\n delete store[coordId];\n }\n });\n}\n/**\n * This action will be throttled.\n */\n\n\nfunction dispatchAction(api, batch) {\n api.dispatchAction({\n type: 'dataZoom',\n batch: batch\n });\n}\n/**\n * Merge roamController settings when multiple dataZooms share one roamController.\n */\n\n\nfunction mergeControllerParams(dataZoomInfos) {\n var controlType; // DO NOT use reserved word (true, false, undefined) as key literally. Even if encapsulated\n // as string, it is probably revert to reserved word by compress tool. See #7411.\n\n var prefix = 'type_';\n var typePriority = {\n 'type_true': 2,\n 'type_move': 1,\n 'type_false': 0,\n 'type_undefined': -1\n };\n var preventDefaultMouseMove = true;\n zrUtil.each(dataZoomInfos, function (dataZoomInfo) {\n var dataZoomModel = dataZoomInfo.dataZoomModel;\n var oneType = dataZoomModel.get('disabled', true) ? false : dataZoomModel.get('zoomLock', true) ? 'move' : true;\n\n if (typePriority[prefix + oneType] > typePriority[prefix + controlType]) {\n controlType = oneType;\n } // Prevent default move event by default. If one false, do not prevent. Otherwise\n // users may be confused why it does not work when multiple insideZooms exist.\n\n\n preventDefaultMouseMove &= dataZoomModel.get('preventDefaultMouseMove', true);\n });\n return {\n controlType: controlType,\n opt: {\n // RoamController will enable all of these functionalities,\n // and the final behavior is determined by its event listener\n // provided by each inside zoom.\n zoomOnMouseWheel: true,\n moveOnMouseMove: true,\n moveOnMouseWheel: true,\n preventDefaultMouseMove: !!preventDefaultMouseMove\n }\n };\n}\n\nexports.register = register;\nexports.unregister = unregister;\nexports.generateCoordId = generateCoordId;","\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 Component = require(\"../../model/Component\");\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*/\nComponent.registerSubTypeDefaulter('dataZoom', function () {\n // Default 'slider' when no type specified.\n return 'slider';\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\nvar ComponentModel = require(\"../model/Component\");\n\nvar ComponentView = require(\"../view/Component\");\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar detectSourceFormat = _sourceHelper.detectSourceFormat;\n\nvar _sourceType = require(\"../data/helper/sourceType\");\n\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\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 * This module is imported by echarts directly.\n *\n * Notice:\n * Always keep this file exists for backward compatibility.\n * Because before 4.1.0, dataset is an optional component,\n * some users may import this module manually.\n */\nComponentModel.extend({\n type: 'dataset',\n\n /**\n * @protected\n */\n defaultOption: {\n // 'row', 'column'\n seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,\n // null/'auto': auto detect header, see \"module:echarts/data/helper/sourceHelper\"\n sourceHeader: null,\n dimensions: null,\n source: null\n },\n optionUpdated: function () {\n detectSourceFormat(this);\n }\n});\nComponentView.extend({\n type: 'dataset'\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\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nrequire(\"../coord/geo/GeoModel\");\n\nrequire(\"../coord/geo/geoCreator\");\n\nrequire(\"./geo/GeoView\");\n\nrequire(\"../action/geoRoam\");\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 makeAction(method, actionInfo) {\n actionInfo.update = 'updateView';\n echarts.registerAction(actionInfo, function (payload, ecModel) {\n var selected = {};\n ecModel.eachComponent({\n mainType: 'geo',\n query: payload\n }, function (geoModel) {\n geoModel[method](payload.name);\n var geo = geoModel.coordinateSystem;\n zrUtil.each(geo.regions, function (region) {\n selected[region.name] = geoModel.isSelected(region.name) || false;\n });\n });\n return {\n selected: selected,\n name: payload.name\n };\n });\n}\n\nmakeAction('toggleSelected', {\n type: 'geoToggleSelect',\n event: 'geoselectchanged'\n});\nmakeAction('select', {\n type: 'geoSelect',\n event: 'geoselected'\n});\nmakeAction('unSelect', {\n type: 'geoUnSelect',\n event: 'geounselected'\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\nvar MapDraw = require(\"../helper/MapDraw\");\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*/\nvar _default = echarts.extendComponentView({\n type: 'geo',\n init: function (ecModel, api) {\n var mapDraw = new MapDraw(api, true);\n this._mapDraw = mapDraw;\n this.group.add(mapDraw.group);\n },\n render: function (geoModel, ecModel, api, payload) {\n // Not render if it is an toggleSelect action from self\n if (payload && payload.type === 'geoToggleSelect' && payload.from === this.uid) {\n return;\n }\n\n var mapDraw = this._mapDraw;\n\n if (geoModel.get('show')) {\n mapDraw.draw(geoModel, ecModel, api, this, payload);\n } else {\n this._mapDraw.group.removeAll();\n }\n\n this.group.silent = geoModel.get('silent');\n },\n dispose: function () {\n this._mapDraw && this._mapDraw.remove();\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 _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../util/model\");\n\nvar graphicUtil = require(\"../util/graphic\");\n\nvar layoutUtil = require(\"../util/layout\");\n\nvar _number = require(\"../util/number\");\n\nvar parsePercent = _number.parsePercent;\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 _nonShapeGraphicElements = {\n // Reserved but not supported in graphic component.\n path: null,\n compoundPath: null,\n // Supported in graphic component.\n group: graphicUtil.Group,\n image: graphicUtil.Image,\n text: graphicUtil.Text\n}; // -------------\n// Preprocessor\n// -------------\n\necharts.registerPreprocessor(function (option) {\n var graphicOption = option.graphic; // Convert\n // {graphic: [{left: 10, type: 'circle'}, ...]}\n // or\n // {graphic: {left: 10, type: 'circle'}}\n // to\n // {graphic: [{elements: [{left: 10, type: 'circle'}, ...]}]}\n\n if (zrUtil.isArray(graphicOption)) {\n if (!graphicOption[0] || !graphicOption[0].elements) {\n option.graphic = [{\n elements: graphicOption\n }];\n } else {\n // Only one graphic instance can be instantiated. (We dont\n // want that too many views are created in echarts._viewMap)\n option.graphic = [option.graphic[0]];\n }\n } else if (graphicOption && !graphicOption.elements) {\n option.graphic = [{\n elements: [graphicOption]\n }];\n }\n}); // ------\n// Model\n// ------\n\nvar GraphicModel = echarts.extendComponentModel({\n type: 'graphic',\n defaultOption: {\n // Extra properties for each elements:\n //\n // left/right/top/bottom: (like 12, '22%', 'center', default undefined)\n // If left/rigth is set, shape.x/shape.cx/position will not be used.\n // If top/bottom is set, shape.y/shape.cy/position will not be used.\n // This mechanism is useful when you want to position a group/element\n // against the right side or the center of this container.\n //\n // width/height: (can only be pixel value, default 0)\n // Only be used to specify contianer(group) size, if needed. And\n // can not be percentage value (like '33%'). See the reason in the\n // layout algorithm below.\n //\n // bounding: (enum: 'all' (default) | 'raw')\n // Specify how to calculate boundingRect when locating.\n // 'all': Get uioned and transformed boundingRect\n // from both itself and its descendants.\n // This mode simplies confining a group of elements in the bounding\n // of their ancester container (e.g., using 'right: 0').\n // 'raw': Only use the boundingRect of itself and before transformed.\n // This mode is similar to css behavior, which is useful when you\n // want an element to be able to overflow its container. (Consider\n // a rotated circle needs to be located in a corner.)\n // info: custom info. enables user to mount some info on elements and use them\n // in event handlers. Update them only when user specified, otherwise, remain.\n // Note: elements is always behind its ancestors in this elements array.\n elements: [],\n parentId: null\n },\n\n /**\n * Save el options for the sake of the performance (only update modified graphics).\n * The order is the same as those in option. (ancesters -> descendants)\n *\n * @private\n * @type {Array.}\n */\n _elOptionsToUpdate: null,\n\n /**\n * @override\n */\n mergeOption: function (option) {\n // Prevent default merge to elements\n var elements = this.option.elements;\n this.option.elements = null;\n GraphicModel.superApply(this, 'mergeOption', arguments);\n this.option.elements = elements;\n },\n\n /**\n * @override\n */\n optionUpdated: function (newOption, isInit) {\n var thisOption = this.option;\n var newList = (isInit ? thisOption : newOption).elements;\n var existList = thisOption.elements = isInit ? [] : thisOption.elements;\n var flattenedList = [];\n\n this._flatten(newList, flattenedList);\n\n var mappingResult = modelUtil.mappingToExists(existList, flattenedList);\n modelUtil.makeIdAndName(mappingResult); // Clear elOptionsToUpdate\n\n var elOptionsToUpdate = this._elOptionsToUpdate = [];\n zrUtil.each(mappingResult, function (resultItem, index) {\n var newElOption = resultItem.option;\n\n if (!newElOption) {\n return;\n }\n\n elOptionsToUpdate.push(newElOption);\n setKeyInfoToNewElOption(resultItem, newElOption);\n mergeNewElOptionToExist(existList, index, newElOption);\n setLayoutInfoToExist(existList[index], newElOption);\n }, this); // Clean\n\n for (var i = existList.length - 1; i >= 0; i--) {\n if (existList[i] == null) {\n existList.splice(i, 1);\n } else {\n // $action should be volatile, otherwise option gotten from\n // `getOption` will contain unexpected $action.\n delete existList[i].$action;\n }\n }\n },\n\n /**\n * Convert\n * [{\n * type: 'group',\n * id: 'xx',\n * children: [{type: 'circle'}, {type: 'polygon'}]\n * }]\n * to\n * [\n * {type: 'group', id: 'xx'},\n * {type: 'circle', parentId: 'xx'},\n * {type: 'polygon', parentId: 'xx'}\n * ]\n *\n * @private\n * @param {Array.} optionList option list\n * @param {Array.} result result of flatten\n * @param {Object} parentOption parent option\n */\n _flatten: function (optionList, result, parentOption) {\n zrUtil.each(optionList, function (option) {\n if (!option) {\n return;\n }\n\n if (parentOption) {\n option.parentOption = parentOption;\n }\n\n result.push(option);\n var children = option.children;\n\n if (option.type === 'group' && children) {\n this._flatten(children, result, option);\n } // Deleting for JSON output, and for not affecting group creation.\n\n\n delete option.children;\n }, this);\n },\n // FIXME\n // Pass to view using payload? setOption has a payload?\n useElOptionsToUpdate: function () {\n var els = this._elOptionsToUpdate; // Clear to avoid render duplicately when zooming.\n\n this._elOptionsToUpdate = null;\n return els;\n }\n}); // -----\n// View\n// -----\n\necharts.extendComponentView({\n type: 'graphic',\n\n /**\n * @override\n */\n init: function (ecModel, api) {\n /**\n * @private\n * @type {module:zrender/core/util.HashMap}\n */\n this._elMap = zrUtil.createHashMap();\n /**\n * @private\n * @type {module:echarts/graphic/GraphicModel}\n */\n\n this._lastGraphicModel;\n },\n\n /**\n * @override\n */\n render: function (graphicModel, ecModel, api) {\n // Having leveraged between use cases and algorithm complexity, a very\n // simple layout mechanism is used:\n // The size(width/height) can be determined by itself or its parent (not\n // implemented yet), but can not by its children. (Top-down travel)\n // The location(x/y) can be determined by the bounding rect of itself\n // (can including its descendants or not) and the size of its parent.\n // (Bottom-up travel)\n // When `chart.clear()` or `chart.setOption({...}, true)` with the same id,\n // view will be reused.\n if (graphicModel !== this._lastGraphicModel) {\n this._clear();\n }\n\n this._lastGraphicModel = graphicModel;\n\n this._updateElements(graphicModel);\n\n this._relocate(graphicModel, api);\n },\n\n /**\n * Update graphic elements.\n *\n * @private\n * @param {Object} graphicModel graphic model\n */\n _updateElements: function (graphicModel) {\n var elOptionsToUpdate = graphicModel.useElOptionsToUpdate();\n\n if (!elOptionsToUpdate) {\n return;\n }\n\n var elMap = this._elMap;\n var rootGroup = this.group; // Top-down tranverse to assign graphic settings to each elements.\n\n zrUtil.each(elOptionsToUpdate, function (elOption) {\n var $action = elOption.$action;\n var id = elOption.id;\n var existEl = elMap.get(id);\n var parentId = elOption.parentId;\n var targetElParent = parentId != null ? elMap.get(parentId) : rootGroup;\n var elOptionStyle = elOption.style;\n\n if (elOption.type === 'text' && elOptionStyle) {\n // In top/bottom mode, textVerticalAlign should not be used, which cause\n // inaccurately locating.\n if (elOption.hv && elOption.hv[1]) {\n elOptionStyle.textVerticalAlign = elOptionStyle.textBaseline = null;\n } // Compatible with previous setting: both support fill and textFill,\n // stroke and textStroke.\n\n\n !elOptionStyle.hasOwnProperty('textFill') && elOptionStyle.fill && (elOptionStyle.textFill = elOptionStyle.fill);\n !elOptionStyle.hasOwnProperty('textStroke') && elOptionStyle.stroke && (elOptionStyle.textStroke = elOptionStyle.stroke);\n } // Remove unnecessary props to avoid potential problems.\n\n\n var elOptionCleaned = getCleanedElOption(elOption); // For simple, do not support parent change, otherwise reorder is needed.\n\n if (!$action || $action === 'merge') {\n existEl ? existEl.attr(elOptionCleaned) : createEl(id, targetElParent, elOptionCleaned, elMap);\n } else if ($action === 'replace') {\n removeEl(existEl, elMap);\n createEl(id, targetElParent, elOptionCleaned, elMap);\n } else if ($action === 'remove') {\n removeEl(existEl, elMap);\n }\n\n var el = elMap.get(id);\n\n if (el) {\n el.__ecGraphicWidthOption = elOption.width;\n el.__ecGraphicHeightOption = elOption.height;\n setEventData(el, graphicModel, elOption);\n }\n });\n },\n\n /**\n * Locate graphic elements.\n *\n * @private\n * @param {Object} graphicModel graphic model\n * @param {module:echarts/ExtensionAPI} api extension API\n */\n _relocate: function (graphicModel, api) {\n var elOptions = graphicModel.option.elements;\n var rootGroup = this.group;\n var elMap = this._elMap;\n var apiWidth = api.getWidth();\n var apiHeight = api.getHeight(); // Top-down to calculate percentage width/height of group\n\n for (var i = 0; i < elOptions.length; i++) {\n var elOption = elOptions[i];\n var el = elMap.get(elOption.id);\n\n if (!el || !el.isGroup) {\n continue;\n }\n\n var parentEl = el.parent;\n var isParentRoot = parentEl === rootGroup; // Like 'position:absolut' in css, default 0.\n\n el.__ecGraphicWidth = parsePercent(el.__ecGraphicWidthOption, isParentRoot ? apiWidth : parentEl.__ecGraphicWidth) || 0;\n el.__ecGraphicHeight = parsePercent(el.__ecGraphicHeightOption, isParentRoot ? apiHeight : parentEl.__ecGraphicHeight) || 0;\n } // Bottom-up tranvese all elements (consider ec resize) to locate elements.\n\n\n for (var i = elOptions.length - 1; i >= 0; i--) {\n var elOption = elOptions[i];\n var el = elMap.get(elOption.id);\n\n if (!el) {\n continue;\n }\n\n var parentEl = el.parent;\n var containerInfo = parentEl === rootGroup ? {\n width: apiWidth,\n height: apiHeight\n } : {\n width: parentEl.__ecGraphicWidth,\n height: parentEl.__ecGraphicHeight\n }; // PENDING\n // Currently, when `bounding: 'all'`, the union bounding rect of the group\n // does not include the rect of [0, 0, group.width, group.height], which\n // is probably weird for users. Should we make a break change for it?\n\n layoutUtil.positionElement(el, elOption, containerInfo, null, {\n hv: elOption.hv,\n boundingMode: elOption.bounding\n });\n }\n },\n\n /**\n * Clear all elements.\n *\n * @private\n */\n _clear: function () {\n var elMap = this._elMap;\n elMap.each(function (el) {\n removeEl(el, elMap);\n });\n this._elMap = zrUtil.createHashMap();\n },\n\n /**\n * @override\n */\n dispose: function () {\n this._clear();\n }\n});\n\nfunction createEl(id, targetElParent, elOption, elMap) {\n var graphicType = elOption.type;\n var Clz = _nonShapeGraphicElements.hasOwnProperty(graphicType) // Those graphic elements are not shapes. They should not be\n // overwritten by users, so do them first.\n ? _nonShapeGraphicElements[graphicType] : graphicUtil.getShapeClass(graphicType);\n var el = new Clz(elOption);\n targetElParent.add(el);\n elMap.set(id, el);\n el.__ecGraphicId = id;\n}\n\nfunction removeEl(existEl, elMap) {\n var existElParent = existEl && existEl.parent;\n\n if (existElParent) {\n existEl.type === 'group' && existEl.traverse(function (el) {\n removeEl(el, elMap);\n });\n elMap.removeKey(existEl.__ecGraphicId);\n existElParent.remove(existEl);\n }\n} // Remove unnecessary props to avoid potential problems.\n\n\nfunction getCleanedElOption(elOption) {\n elOption = zrUtil.extend({}, elOption);\n zrUtil.each(['id', 'parentId', '$action', 'hv', 'bounding'].concat(layoutUtil.LOCATION_PARAMS), function (name) {\n delete elOption[name];\n });\n return elOption;\n}\n\nfunction isSetLoc(obj, props) {\n var isSet;\n zrUtil.each(props, function (prop) {\n obj[prop] != null && obj[prop] !== 'auto' && (isSet = true);\n });\n return isSet;\n}\n\nfunction setKeyInfoToNewElOption(resultItem, newElOption) {\n var existElOption = resultItem.exist; // Set id and type after id assigned.\n\n newElOption.id = resultItem.keyInfo.id;\n !newElOption.type && existElOption && (newElOption.type = existElOption.type); // Set parent id if not specified\n\n if (newElOption.parentId == null) {\n var newElParentOption = newElOption.parentOption;\n\n if (newElParentOption) {\n newElOption.parentId = newElParentOption.id;\n } else if (existElOption) {\n newElOption.parentId = existElOption.parentId;\n }\n } // Clear\n\n\n newElOption.parentOption = null;\n}\n\nfunction mergeNewElOptionToExist(existList, index, newElOption) {\n // Update existing options, for `getOption` feature.\n var newElOptCopy = zrUtil.extend({}, newElOption);\n var existElOption = existList[index];\n var $action = newElOption.$action || 'merge';\n\n if ($action === 'merge') {\n if (existElOption) {\n // We can ensure that newElOptCopy and existElOption are not\n // the same object, so `merge` will not change newElOptCopy.\n zrUtil.merge(existElOption, newElOptCopy, true); // Rigid body, use ignoreSize.\n\n layoutUtil.mergeLayoutParam(existElOption, newElOptCopy, {\n ignoreSize: true\n }); // Will be used in render.\n\n layoutUtil.copyLayoutParams(newElOption, existElOption);\n } else {\n existList[index] = newElOptCopy;\n }\n } else if ($action === 'replace') {\n existList[index] = newElOptCopy;\n } else if ($action === 'remove') {\n // null will be cleaned later.\n existElOption && (existList[index] = null);\n }\n}\n\nfunction setLayoutInfoToExist(existItem, newElOption) {\n if (!existItem) {\n return;\n }\n\n existItem.hv = newElOption.hv = [// Rigid body, dont care `width`.\n isSetLoc(newElOption, ['left', 'right']), // Rigid body, dont care `height`.\n isSetLoc(newElOption, ['top', 'bottom'])]; // Give default group size. Otherwise layout error may occur.\n\n if (existItem.type === 'group') {\n existItem.width == null && (existItem.width = newElOption.width = 0);\n existItem.height == null && (existItem.height = newElOption.height = 0);\n }\n}\n\nfunction setEventData(el, graphicModel, elOption) {\n var eventData = el.eventData; // Simple optimize for large amount of elements that no need event.\n\n if (!el.silent && !el.ignore && !eventData) {\n eventData = el.eventData = {\n componentType: 'graphic',\n componentIndex: graphicModel.componentIndex,\n name: el.name\n };\n } // `elOption.info` enables user to mount some info on\n // elements and use them in event handlers.\n\n\n if (eventData) {\n eventData.info = el.info;\n }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nrequire(\"./gridSimple\");\n\nrequire(\"./axisPointer/CartesianAxisPointer\");\n\nrequire(\"./axisPointer\");","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../util/graphic\");\n\nrequire(\"../coord/cartesian/Grid\");\n\nrequire(\"./axis\");\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// Grid view\necharts.extendComponentView({\n type: 'grid',\n render: function (gridModel, ecModel) {\n this.group.removeAll();\n\n if (gridModel.get('show')) {\n this.group.add(new graphic.Rect({\n shape: gridModel.coordinateSystem.getRect(),\n style: zrUtil.defaults({\n fill: gridModel.get('backgroundColor')\n }, gridModel.getItemStyle()),\n silent: true,\n z2: -1\n }));\n }\n }\n});\necharts.registerPreprocessor(function (option) {\n // Only create grid when need\n if (option.xAxis && option.yAxis && !option.grid) {\n option.grid = {};\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Eventful = require(\"zrender/lib/mixin/Eventful\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar interactionMutex = require(\"./interactionMutex\");\n\nvar DataDiffer = require(\"../../data/DataDiffer\");\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 curry = zrUtil.curry;\nvar each = zrUtil.each;\nvar map = zrUtil.map;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathPow = Math.pow;\nvar COVER_Z = 10000;\nvar UNSELECT_THRESHOLD = 6;\nvar MIN_RESIZE_LINE_WIDTH = 6;\nvar MUTEX_RESOURCE_KEY = 'globalPan';\nvar DIRECTION_MAP = {\n w: [0, 0],\n e: [0, 1],\n n: [1, 0],\n s: [1, 1]\n};\nvar CURSOR_MAP = {\n w: 'ew',\n e: 'ew',\n n: 'ns',\n s: 'ns',\n ne: 'nesw',\n sw: 'nesw',\n nw: 'nwse',\n se: 'nwse'\n};\nvar DEFAULT_BRUSH_OPT = {\n brushStyle: {\n lineWidth: 2,\n stroke: 'rgba(0,0,0,0.3)',\n fill: 'rgba(0,0,0,0.1)'\n },\n transformable: true,\n brushMode: 'single',\n removeOnClick: false\n};\nvar baseUID = 0;\n/**\n * @alias module:echarts/component/helper/BrushController\n * @constructor\n * @mixin {module:zrender/mixin/Eventful}\n * @event module:echarts/component/helper/BrushController#brush\n * params:\n * areas: Array., coord relates to container group,\n * If no container specified, to global.\n * opt {\n * isEnd: boolean,\n * removeOnClick: boolean\n * }\n *\n * @param {module:zrender/zrender~ZRender} zr\n */\n\nfunction BrushController(zr) {\n Eventful.call(this);\n /**\n * @type {module:zrender/zrender~ZRender}\n * @private\n */\n\n this._zr = zr;\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n\n this.group = new graphic.Group();\n /**\n * Only for drawing (after enabledBrush).\n * 'line', 'rect', 'polygon' or false\n * If passing false/null/undefined, disable brush.\n * If passing 'auto', determined by panel.defaultBrushType\n * @private\n * @type {string}\n */\n\n this._brushType;\n /**\n * Only for drawing (after enabledBrush).\n *\n * @private\n * @type {Object}\n */\n\n this._brushOption;\n /**\n * @private\n * @type {Object}\n */\n\n this._panels;\n /**\n * @private\n * @type {Array.}\n */\n\n this._track = [];\n /**\n * @private\n * @type {boolean}\n */\n\n this._dragging;\n /**\n * @private\n * @type {Array}\n */\n\n this._covers = [];\n /**\n * @private\n * @type {moudule:zrender/container/Group}\n */\n\n this._creatingCover;\n /**\n * `true` means global panel\n * @private\n * @type {module:zrender/container/Group|boolean}\n */\n\n this._creatingPanel;\n /**\n * @private\n * @type {boolean}\n */\n\n this._enableGlobalPan;\n /**\n * @private\n * @type {boolean}\n */\n\n /**\n * @private\n * @type {string}\n */\n this._uid = 'brushController_' + baseUID++;\n /**\n * @private\n * @type {Object}\n */\n\n this._handlers = {};\n each(pointerHandlers, function (handler, eventName) {\n this._handlers[eventName] = zrUtil.bind(handler, this);\n }, this);\n}\n\nBrushController.prototype = {\n constructor: BrushController,\n\n /**\n * If set to null/undefined/false, select disabled.\n * @param {Object} brushOption\n * @param {string|boolean} brushOption.brushType 'line', 'rect', 'polygon' or false\n * If passing false/null/undefined, disable brush.\n * If passing 'auto', determined by panel.defaultBrushType.\n * ('auto' can not be used in global panel)\n * @param {number} [brushOption.brushMode='single'] 'single' or 'multiple'\n * @param {boolean} [brushOption.transformable=true]\n * @param {boolean} [brushOption.removeOnClick=false]\n * @param {Object} [brushOption.brushStyle]\n * @param {number} [brushOption.brushStyle.width]\n * @param {number} [brushOption.brushStyle.lineWidth]\n * @param {string} [brushOption.brushStyle.stroke]\n * @param {string} [brushOption.brushStyle.fill]\n * @param {number} [brushOption.z]\n */\n enableBrush: function (brushOption) {\n this._brushType && doDisableBrush(this);\n brushOption.brushType && doEnableBrush(this, brushOption);\n return this;\n },\n\n /**\n * @param {Array.} panelOpts If not pass, it is global brush.\n * Each items: {\n * panelId, // mandatory.\n * clipPath, // mandatory. function.\n * isTargetByCursor, // mandatory. function.\n * defaultBrushType, // optional, only used when brushType is 'auto'.\n * getLinearBrushOtherExtent, // optional. function.\n * }\n */\n setPanels: function (panelOpts) {\n if (panelOpts && panelOpts.length) {\n var panels = this._panels = {};\n zrUtil.each(panelOpts, function (panelOpts) {\n panels[panelOpts.panelId] = zrUtil.clone(panelOpts);\n });\n } else {\n this._panels = null;\n }\n\n return this;\n },\n\n /**\n * @param {Object} [opt]\n * @return {boolean} [opt.enableGlobalPan=false]\n */\n mount: function (opt) {\n opt = opt || {};\n this._enableGlobalPan = opt.enableGlobalPan;\n var thisGroup = this.group;\n\n this._zr.add(thisGroup);\n\n thisGroup.attr({\n position: opt.position || [0, 0],\n rotation: opt.rotation || 0,\n scale: opt.scale || [1, 1]\n });\n this._transform = thisGroup.getLocalTransform();\n return this;\n },\n eachCover: function (cb, context) {\n each(this._covers, cb, context);\n },\n\n /**\n * Update covers.\n * @param {Array.} brushOptionList Like:\n * [\n * {id: 'xx', brushType: 'line', range: [23, 44], brushStyle, transformable},\n * {id: 'yy', brushType: 'rect', range: [[23, 44], [23, 54]]},\n * ...\n * ]\n * `brushType` is required in each cover info. (can not be 'auto')\n * `id` is not mandatory.\n * `brushStyle`, `transformable` is not mandatory, use DEFAULT_BRUSH_OPT by default.\n * If brushOptionList is null/undefined, all covers removed.\n */\n updateCovers: function (brushOptionList) {\n brushOptionList = zrUtil.map(brushOptionList, function (brushOption) {\n return zrUtil.merge(zrUtil.clone(DEFAULT_BRUSH_OPT), brushOption, true);\n });\n var tmpIdPrefix = '\\0-brush-index-';\n var oldCovers = this._covers;\n var newCovers = this._covers = [];\n var controller = this;\n var creatingCover = this._creatingCover;\n new DataDiffer(oldCovers, brushOptionList, oldGetKey, getKey).add(addOrUpdate).update(addOrUpdate).remove(remove).execute();\n return this;\n\n function getKey(brushOption, index) {\n return (brushOption.id != null ? brushOption.id : tmpIdPrefix + index) + '-' + brushOption.brushType;\n }\n\n function oldGetKey(cover, index) {\n return getKey(cover.__brushOption, index);\n }\n\n function addOrUpdate(newIndex, oldIndex) {\n var newBrushOption = brushOptionList[newIndex]; // Consider setOption in event listener of brushSelect,\n // where updating cover when creating should be forbiden.\n\n if (oldIndex != null && oldCovers[oldIndex] === creatingCover) {\n newCovers[newIndex] = oldCovers[oldIndex];\n } else {\n var cover = newCovers[newIndex] = oldIndex != null ? (oldCovers[oldIndex].__brushOption = newBrushOption, oldCovers[oldIndex]) : endCreating(controller, createCover(controller, newBrushOption));\n updateCoverAfterCreation(controller, cover);\n }\n }\n\n function remove(oldIndex) {\n if (oldCovers[oldIndex] !== creatingCover) {\n controller.group.remove(oldCovers[oldIndex]);\n }\n }\n },\n unmount: function () {\n this.enableBrush(false); // container may 'removeAll' outside.\n\n clearCovers(this);\n\n this._zr.remove(this.group);\n\n return this;\n },\n dispose: function () {\n this.unmount();\n this.off();\n }\n};\nzrUtil.mixin(BrushController, Eventful);\n\nfunction doEnableBrush(controller, brushOption) {\n var zr = controller._zr; // Consider roam, which takes globalPan too.\n\n if (!controller._enableGlobalPan) {\n interactionMutex.take(zr, MUTEX_RESOURCE_KEY, controller._uid);\n }\n\n mountHandlers(zr, controller._handlers);\n controller._brushType = brushOption.brushType;\n controller._brushOption = zrUtil.merge(zrUtil.clone(DEFAULT_BRUSH_OPT), brushOption, true);\n}\n\nfunction doDisableBrush(controller) {\n var zr = controller._zr;\n interactionMutex.release(zr, MUTEX_RESOURCE_KEY, controller._uid);\n unmountHandlers(zr, controller._handlers);\n controller._brushType = controller._brushOption = null;\n}\n\nfunction mountHandlers(zr, handlers) {\n each(handlers, function (handler, eventName) {\n zr.on(eventName, handler);\n });\n}\n\nfunction unmountHandlers(zr, handlers) {\n each(handlers, function (handler, eventName) {\n zr.off(eventName, handler);\n });\n}\n\nfunction createCover(controller, brushOption) {\n var cover = coverRenderers[brushOption.brushType].createCover(controller, brushOption);\n cover.__brushOption = brushOption;\n updateZ(cover, brushOption);\n controller.group.add(cover);\n return cover;\n}\n\nfunction endCreating(controller, creatingCover) {\n var coverRenderer = getCoverRenderer(creatingCover);\n\n if (coverRenderer.endCreating) {\n coverRenderer.endCreating(controller, creatingCover);\n updateZ(creatingCover, creatingCover.__brushOption);\n }\n\n return creatingCover;\n}\n\nfunction updateCoverShape(controller, cover) {\n var brushOption = cover.__brushOption;\n getCoverRenderer(cover).updateCoverShape(controller, cover, brushOption.range, brushOption);\n}\n\nfunction updateZ(cover, brushOption) {\n var z = brushOption.z;\n z == null && (z = COVER_Z);\n cover.traverse(function (el) {\n el.z = z;\n el.z2 = z; // Consider in given container.\n });\n}\n\nfunction updateCoverAfterCreation(controller, cover) {\n getCoverRenderer(cover).updateCommon(controller, cover);\n updateCoverShape(controller, cover);\n}\n\nfunction getCoverRenderer(cover) {\n return coverRenderers[cover.__brushOption.brushType];\n} // return target panel or `true` (means global panel)\n\n\nfunction getPanelByPoint(controller, e, localCursorPoint) {\n var panels = controller._panels;\n\n if (!panels) {\n return true; // Global panel\n }\n\n var panel;\n var transform = controller._transform;\n each(panels, function (pn) {\n pn.isTargetByCursor(e, localCursorPoint, transform) && (panel = pn);\n });\n return panel;\n} // Return a panel or true\n\n\nfunction getPanelByCover(controller, cover) {\n var panels = controller._panels;\n\n if (!panels) {\n return true; // Global panel\n }\n\n var panelId = cover.__brushOption.panelId; // User may give cover without coord sys info,\n // which is then treated as global panel.\n\n return panelId != null ? panels[panelId] : true;\n}\n\nfunction clearCovers(controller) {\n var covers = controller._covers;\n var originalLength = covers.length;\n each(covers, function (cover) {\n controller.group.remove(cover);\n }, controller);\n covers.length = 0;\n return !!originalLength;\n}\n\nfunction trigger(controller, opt) {\n var areas = map(controller._covers, function (cover) {\n var brushOption = cover.__brushOption;\n var range = zrUtil.clone(brushOption.range);\n return {\n brushType: brushOption.brushType,\n panelId: brushOption.panelId,\n range: range\n };\n });\n controller.trigger('brush', areas, {\n isEnd: !!opt.isEnd,\n removeOnClick: !!opt.removeOnClick\n });\n}\n\nfunction shouldShowCover(controller) {\n var track = controller._track;\n\n if (!track.length) {\n return false;\n }\n\n var p2 = track[track.length - 1];\n var p1 = track[0];\n var dx = p2[0] - p1[0];\n var dy = p2[1] - p1[1];\n var dist = mathPow(dx * dx + dy * dy, 0.5);\n return dist > UNSELECT_THRESHOLD;\n}\n\nfunction getTrackEnds(track) {\n var tail = track.length - 1;\n tail < 0 && (tail = 0);\n return [track[0], track[tail]];\n}\n\nfunction createBaseRectCover(doDrift, controller, brushOption, edgeNames) {\n var cover = new graphic.Group();\n cover.add(new graphic.Rect({\n name: 'main',\n style: makeStyle(brushOption),\n silent: true,\n draggable: true,\n cursor: 'move',\n drift: curry(doDrift, controller, cover, 'nswe'),\n ondragend: curry(trigger, controller, {\n isEnd: true\n })\n }));\n each(edgeNames, function (name) {\n cover.add(new graphic.Rect({\n name: name,\n style: {\n opacity: 0\n },\n draggable: true,\n silent: true,\n invisible: true,\n drift: curry(doDrift, controller, cover, name),\n ondragend: curry(trigger, controller, {\n isEnd: true\n })\n }));\n });\n return cover;\n}\n\nfunction updateBaseRect(controller, cover, localRange, brushOption) {\n var lineWidth = brushOption.brushStyle.lineWidth || 0;\n var handleSize = mathMax(lineWidth, MIN_RESIZE_LINE_WIDTH);\n var x = localRange[0][0];\n var y = localRange[1][0];\n var xa = x - lineWidth / 2;\n var ya = y - lineWidth / 2;\n var x2 = localRange[0][1];\n var y2 = localRange[1][1];\n var x2a = x2 - handleSize + lineWidth / 2;\n var y2a = y2 - handleSize + lineWidth / 2;\n var width = x2 - x;\n var height = y2 - y;\n var widtha = width + lineWidth;\n var heighta = height + lineWidth;\n updateRectShape(controller, cover, 'main', x, y, width, height);\n\n if (brushOption.transformable) {\n updateRectShape(controller, cover, 'w', xa, ya, handleSize, heighta);\n updateRectShape(controller, cover, 'e', x2a, ya, handleSize, heighta);\n updateRectShape(controller, cover, 'n', xa, ya, widtha, handleSize);\n updateRectShape(controller, cover, 's', xa, y2a, widtha, handleSize);\n updateRectShape(controller, cover, 'nw', xa, ya, handleSize, handleSize);\n updateRectShape(controller, cover, 'ne', x2a, ya, handleSize, handleSize);\n updateRectShape(controller, cover, 'sw', xa, y2a, handleSize, handleSize);\n updateRectShape(controller, cover, 'se', x2a, y2a, handleSize, handleSize);\n }\n}\n\nfunction updateCommon(controller, cover) {\n var brushOption = cover.__brushOption;\n var transformable = brushOption.transformable;\n var mainEl = cover.childAt(0);\n mainEl.useStyle(makeStyle(brushOption));\n mainEl.attr({\n silent: !transformable,\n cursor: transformable ? 'move' : 'default'\n });\n each(['w', 'e', 'n', 's', 'se', 'sw', 'ne', 'nw'], function (name) {\n var el = cover.childOfName(name);\n var globalDir = getGlobalDirection(controller, name);\n el && el.attr({\n silent: !transformable,\n invisible: !transformable,\n cursor: transformable ? CURSOR_MAP[globalDir] + '-resize' : null\n });\n });\n}\n\nfunction updateRectShape(controller, cover, name, x, y, w, h) {\n var el = cover.childOfName(name);\n el && el.setShape(pointsToRect(clipByPanel(controller, cover, [[x, y], [x + w, y + h]])));\n}\n\nfunction makeStyle(brushOption) {\n return zrUtil.defaults({\n strokeNoScale: true\n }, brushOption.brushStyle);\n}\n\nfunction formatRectRange(x, y, x2, y2) {\n var min = [mathMin(x, x2), mathMin(y, y2)];\n var max = [mathMax(x, x2), mathMax(y, y2)];\n return [[min[0], max[0]], // x range\n [min[1], max[1]] // y range\n ];\n}\n\nfunction getTransform(controller) {\n return graphic.getTransform(controller.group);\n}\n\nfunction getGlobalDirection(controller, localDirection) {\n if (localDirection.length > 1) {\n localDirection = localDirection.split('');\n var globalDir = [getGlobalDirection(controller, localDirection[0]), getGlobalDirection(controller, localDirection[1])];\n (globalDir[0] === 'e' || globalDir[0] === 'w') && globalDir.reverse();\n return globalDir.join('');\n } else {\n var map = {\n w: 'left',\n e: 'right',\n n: 'top',\n s: 'bottom'\n };\n var inverseMap = {\n left: 'w',\n right: 'e',\n top: 'n',\n bottom: 's'\n };\n var globalDir = graphic.transformDirection(map[localDirection], getTransform(controller));\n return inverseMap[globalDir];\n }\n}\n\nfunction driftRect(toRectRange, fromRectRange, controller, cover, name, dx, dy, e) {\n var brushOption = cover.__brushOption;\n var rectRange = toRectRange(brushOption.range);\n var localDelta = toLocalDelta(controller, dx, dy);\n each(name.split(''), function (namePart) {\n var ind = DIRECTION_MAP[namePart];\n rectRange[ind[0]][ind[1]] += localDelta[ind[0]];\n });\n brushOption.range = fromRectRange(formatRectRange(rectRange[0][0], rectRange[1][0], rectRange[0][1], rectRange[1][1]));\n updateCoverAfterCreation(controller, cover);\n trigger(controller, {\n isEnd: false\n });\n}\n\nfunction driftPolygon(controller, cover, dx, dy, e) {\n var range = cover.__brushOption.range;\n var localDelta = toLocalDelta(controller, dx, dy);\n each(range, function (point) {\n point[0] += localDelta[0];\n point[1] += localDelta[1];\n });\n updateCoverAfterCreation(controller, cover);\n trigger(controller, {\n isEnd: false\n });\n}\n\nfunction toLocalDelta(controller, dx, dy) {\n var thisGroup = controller.group;\n var localD = thisGroup.transformCoordToLocal(dx, dy);\n var localZero = thisGroup.transformCoordToLocal(0, 0);\n return [localD[0] - localZero[0], localD[1] - localZero[1]];\n}\n\nfunction clipByPanel(controller, cover, data) {\n var panel = getPanelByCover(controller, cover);\n return panel && panel !== true ? panel.clipPath(data, controller._transform) : zrUtil.clone(data);\n}\n\nfunction pointsToRect(points) {\n var xmin = mathMin(points[0][0], points[1][0]);\n var ymin = mathMin(points[0][1], points[1][1]);\n var xmax = mathMax(points[0][0], points[1][0]);\n var ymax = mathMax(points[0][1], points[1][1]);\n return {\n x: xmin,\n y: ymin,\n width: xmax - xmin,\n height: ymax - ymin\n };\n}\n\nfunction resetCursor(controller, e, localCursorPoint) {\n if ( // Check active\n !controller._brushType // resetCursor should be always called when mouse is in zr area,\n // but not called when mouse is out of zr area to avoid bad influence\n // if `mousemove`, `mouseup` are triggered from `document` event.\n || isOutsideZrArea(controller, e)) {\n return;\n }\n\n var zr = controller._zr;\n var covers = controller._covers;\n var currPanel = getPanelByPoint(controller, e, localCursorPoint); // Check whether in covers.\n\n if (!controller._dragging) {\n for (var i = 0; i < covers.length; i++) {\n var brushOption = covers[i].__brushOption;\n\n if (currPanel && (currPanel === true || brushOption.panelId === currPanel.panelId) && coverRenderers[brushOption.brushType].contain(covers[i], localCursorPoint[0], localCursorPoint[1])) {\n // Use cursor style set on cover.\n return;\n }\n }\n }\n\n currPanel && zr.setCursorStyle('crosshair');\n}\n\nfunction preventDefault(e) {\n var rawE = e.event;\n rawE.preventDefault && rawE.preventDefault();\n}\n\nfunction mainShapeContain(cover, x, y) {\n return cover.childOfName('main').contain(x, y);\n}\n\nfunction updateCoverByMouse(controller, e, localCursorPoint, isEnd) {\n var creatingCover = controller._creatingCover;\n var panel = controller._creatingPanel;\n var thisBrushOption = controller._brushOption;\n var eventParams;\n\n controller._track.push(localCursorPoint.slice());\n\n if (shouldShowCover(controller) || creatingCover) {\n if (panel && !creatingCover) {\n thisBrushOption.brushMode === 'single' && clearCovers(controller);\n var brushOption = zrUtil.clone(thisBrushOption);\n brushOption.brushType = determineBrushType(brushOption.brushType, panel);\n brushOption.panelId = panel === true ? null : panel.panelId;\n creatingCover = controller._creatingCover = createCover(controller, brushOption);\n\n controller._covers.push(creatingCover);\n }\n\n if (creatingCover) {\n var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)];\n var coverBrushOption = creatingCover.__brushOption;\n coverBrushOption.range = coverRenderer.getCreatingRange(clipByPanel(controller, creatingCover, controller._track));\n\n if (isEnd) {\n endCreating(controller, creatingCover);\n coverRenderer.updateCommon(controller, creatingCover);\n }\n\n updateCoverShape(controller, creatingCover);\n eventParams = {\n isEnd: isEnd\n };\n }\n } else if (isEnd && thisBrushOption.brushMode === 'single' && thisBrushOption.removeOnClick) {\n // Help user to remove covers easily, only by a tiny drag, in 'single' mode.\n // But a single click do not clear covers, because user may have casual\n // clicks (for example, click on other component and do not expect covers\n // disappear).\n // Only some cover removed, trigger action, but not every click trigger action.\n if (getPanelByPoint(controller, e, localCursorPoint) && clearCovers(controller)) {\n eventParams = {\n isEnd: isEnd,\n removeOnClick: true\n };\n }\n }\n\n return eventParams;\n}\n\nfunction determineBrushType(brushType, panel) {\n if (brushType === 'auto') {\n return panel.defaultBrushType;\n }\n\n return brushType;\n}\n\nvar pointerHandlers = {\n mousedown: function (e) {\n if (this._dragging) {\n // In case some browser do not support globalOut,\n // and release mose out side the browser.\n handleDragEnd(this, e);\n } else if (!e.target || !e.target.draggable) {\n preventDefault(e);\n var localCursorPoint = this.group.transformCoordToLocal(e.offsetX, e.offsetY);\n this._creatingCover = null;\n var panel = this._creatingPanel = getPanelByPoint(this, e, localCursorPoint);\n\n if (panel) {\n this._dragging = true;\n this._track = [localCursorPoint.slice()];\n }\n }\n },\n mousemove: function (e) {\n var x = e.offsetX;\n var y = e.offsetY;\n var localCursorPoint = this.group.transformCoordToLocal(x, y);\n resetCursor(this, e, localCursorPoint);\n\n if (this._dragging) {\n preventDefault(e);\n var eventParams = updateCoverByMouse(this, e, localCursorPoint, false);\n eventParams && trigger(this, eventParams);\n }\n },\n mouseup: function (e) {\n handleDragEnd(this, e);\n }\n};\n\nfunction handleDragEnd(controller, e) {\n if (controller._dragging) {\n preventDefault(e);\n var x = e.offsetX;\n var y = e.offsetY;\n var localCursorPoint = controller.group.transformCoordToLocal(x, y);\n var eventParams = updateCoverByMouse(controller, e, localCursorPoint, true);\n controller._dragging = false;\n controller._track = [];\n controller._creatingCover = null; // trigger event shoule be at final, after procedure will be nested.\n\n eventParams && trigger(controller, eventParams);\n }\n}\n\nfunction isOutsideZrArea(controller, x, y) {\n var zr = controller._zr;\n return x < 0 || x > zr.getWidth() || y < 0 || y > zr.getHeight();\n}\n/**\n * key: brushType\n * @type {Object}\n */\n\n\nvar coverRenderers = {\n lineX: getLineRenderer(0),\n lineY: getLineRenderer(1),\n rect: {\n createCover: function (controller, brushOption) {\n return createBaseRectCover(curry(driftRect, function (range) {\n return range;\n }, function (range) {\n return range;\n }), controller, brushOption, ['w', 'e', 'n', 's', 'se', 'sw', 'ne', 'nw']);\n },\n getCreatingRange: function (localTrack) {\n var ends = getTrackEnds(localTrack);\n return formatRectRange(ends[1][0], ends[1][1], ends[0][0], ends[0][1]);\n },\n updateCoverShape: function (controller, cover, localRange, brushOption) {\n updateBaseRect(controller, cover, localRange, brushOption);\n },\n updateCommon: updateCommon,\n contain: mainShapeContain\n },\n polygon: {\n createCover: function (controller, brushOption) {\n var cover = new graphic.Group(); // Do not use graphic.Polygon because graphic.Polyline do not close the\n // border of the shape when drawing, which is a better experience for user.\n\n cover.add(new graphic.Polyline({\n name: 'main',\n style: makeStyle(brushOption),\n silent: true\n }));\n return cover;\n },\n getCreatingRange: function (localTrack) {\n return localTrack;\n },\n endCreating: function (controller, cover) {\n cover.remove(cover.childAt(0)); // Use graphic.Polygon close the shape.\n\n cover.add(new graphic.Polygon({\n name: 'main',\n draggable: true,\n drift: curry(driftPolygon, controller, cover),\n ondragend: curry(trigger, controller, {\n isEnd: true\n })\n }));\n },\n updateCoverShape: function (controller, cover, localRange, brushOption) {\n cover.childAt(0).setShape({\n points: clipByPanel(controller, cover, localRange)\n });\n },\n updateCommon: updateCommon,\n contain: mainShapeContain\n }\n};\n\nfunction getLineRenderer(xyIndex) {\n return {\n createCover: function (controller, brushOption) {\n return createBaseRectCover(curry(driftRect, function (range) {\n var rectRange = [range, [0, 100]];\n xyIndex && rectRange.reverse();\n return rectRange;\n }, function (rectRange) {\n return rectRange[xyIndex];\n }), controller, brushOption, [['w', 'e'], ['n', 's']][xyIndex]);\n },\n getCreatingRange: function (localTrack) {\n var ends = getTrackEnds(localTrack);\n var min = mathMin(ends[0][xyIndex], ends[1][xyIndex]);\n var max = mathMax(ends[0][xyIndex], ends[1][xyIndex]);\n return [min, max];\n },\n updateCoverShape: function (controller, cover, localRange, brushOption) {\n var otherExtent; // If brushWidth not specified, fit the panel.\n\n var panel = getPanelByCover(controller, cover);\n\n if (panel !== true && panel.getLinearBrushOtherExtent) {\n otherExtent = panel.getLinearBrushOtherExtent(xyIndex, controller._transform);\n } else {\n var zr = controller._zr;\n otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]];\n }\n\n var rectRange = [localRange, otherExtent];\n xyIndex && rectRange.reverse();\n updateBaseRect(controller, cover, rectRange, brushOption);\n },\n updateCommon: updateCommon,\n contain: mainShapeContain\n };\n}\n\nvar _default = BrushController;\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar brushHelper = require(\"./brushHelper\");\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 each = zrUtil.each;\nvar indexOf = zrUtil.indexOf;\nvar curry = zrUtil.curry;\nvar COORD_CONVERTS = ['dataToPoint', 'pointToData']; // FIXME\n// how to genarialize to more coordinate systems.\n\nvar INCLUDE_FINDER_MAIN_TYPES = ['grid', 'xAxis', 'yAxis', 'geo', 'graph', 'polar', 'radiusAxis', 'angleAxis', 'bmap'];\n/**\n * [option in constructor]:\n * {\n * Index/Id/Name of geo, xAxis, yAxis, grid: See util/model#parseFinder.\n * }\n *\n *\n * [targetInfo]:\n *\n * There can be multiple axes in a single targetInfo. Consider the case\n * of `grid` component, a targetInfo represents a grid which contains one or more\n * cartesian and one or more axes. And consider the case of parallel system,\n * which has multiple axes in a coordinate system.\n * Can be {\n * panelId: ...,\n * coordSys: ,\n * coordSyses: all cartesians.\n * gridModel: \n * xAxes: correspond to coordSyses on index\n * yAxes: correspond to coordSyses on index\n * }\n * or {\n * panelId: ...,\n * coordSys: \n * coordSyses: []\n * geoModel: \n * }\n *\n *\n * [panelOpt]:\n *\n * Make from targetInfo. Input to BrushController.\n * {\n * panelId: ...,\n * rect: ...\n * }\n *\n *\n * [area]:\n *\n * Generated by BrushController or user input.\n * {\n * panelId: Used to locate coordInfo directly. If user inpput, no panelId.\n * brushType: determine how to convert to/from coord('rect' or 'polygon' or 'lineX/Y').\n * Index/Id/Name of geo, xAxis, yAxis, grid: See util/model#parseFinder.\n * range: pixel range.\n * coordRange: representitive coord range (the first one of coordRanges).\n * coordRanges: coord ranges, used in multiple cartesian in one grid.\n * }\n */\n\n/**\n * @param {Object} option contains Index/Id/Name of xAxis/yAxis/geo/grid\n * Each can be {number|Array.}. like: {xAxisIndex: [3, 4]}\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} [opt]\n * @param {Array.} [opt.include] include coordinate system types.\n */\n\nfunction BrushTargetManager(option, ecModel, opt) {\n /**\n * @private\n * @type {Array.}\n */\n var targetInfoList = this._targetInfoList = [];\n var info = {};\n var foundCpts = parseFinder(ecModel, option);\n each(targetInfoBuilders, function (builder, type) {\n if (!opt || !opt.include || indexOf(opt.include, type) >= 0) {\n builder(foundCpts, targetInfoList, info);\n }\n });\n}\n\nvar proto = BrushTargetManager.prototype;\n\nproto.setOutputRanges = function (areas, ecModel) {\n this.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {\n (area.coordRanges || (area.coordRanges = [])).push(coordRange); // area.coordRange is the first of area.coordRanges\n\n if (!area.coordRange) {\n area.coordRange = coordRange; // In 'category' axis, coord to pixel is not reversible, so we can not\n // rebuild range by coordRange accrately, which may bring trouble when\n // brushing only one item. So we use __rangeOffset to rebuilding range\n // by coordRange. And this it only used in brush component so it is no\n // need to be adapted to coordRanges.\n\n var result = coordConvert[area.brushType](0, coordSys, coordRange);\n area.__rangeOffset = {\n offset: diffProcessor[area.brushType](result.values, area.range, [1, 1]),\n xyMinMax: result.xyMinMax\n };\n }\n });\n};\n\nproto.matchOutputRanges = function (areas, ecModel, cb) {\n each(areas, function (area) {\n var targetInfo = this.findTargetInfo(area, ecModel);\n\n if (targetInfo && targetInfo !== true) {\n zrUtil.each(targetInfo.coordSyses, function (coordSys) {\n var result = coordConvert[area.brushType](1, coordSys, area.range);\n cb(area, result.values, coordSys, ecModel);\n });\n }\n }, this);\n};\n\nproto.setInputRanges = function (areas, ecModel) {\n each(areas, function (area) {\n var targetInfo = this.findTargetInfo(area, ecModel);\n area.range = area.range || []; // convert coordRange to global range and set panelId.\n\n if (targetInfo && targetInfo !== true) {\n area.panelId = targetInfo.panelId; // (1) area.range shoule always be calculate from coordRange but does\n // not keep its original value, for the sake of the dataZoom scenario,\n // where area.coordRange remains unchanged but area.range may be changed.\n // (2) Only support converting one coordRange to pixel range in brush\n // component. So do not consider `coordRanges`.\n // (3) About __rangeOffset, see comment above.\n\n var result = coordConvert[area.brushType](0, targetInfo.coordSys, area.coordRange);\n var rangeOffset = area.__rangeOffset;\n area.range = rangeOffset ? diffProcessor[area.brushType](result.values, rangeOffset.offset, getScales(result.xyMinMax, rangeOffset.xyMinMax)) : result.values;\n }\n }, this);\n};\n\nproto.makePanelOpts = function (api, getDefaultBrushType) {\n return zrUtil.map(this._targetInfoList, function (targetInfo) {\n var rect = targetInfo.getPanelRect();\n return {\n panelId: targetInfo.panelId,\n defaultBrushType: getDefaultBrushType && getDefaultBrushType(targetInfo),\n clipPath: brushHelper.makeRectPanelClipPath(rect),\n isTargetByCursor: brushHelper.makeRectIsTargetByCursor(rect, api, targetInfo.coordSysModel),\n getLinearBrushOtherExtent: brushHelper.makeLinearBrushOtherExtent(rect)\n };\n });\n};\n\nproto.controlSeries = function (area, seriesModel, ecModel) {\n // Check whether area is bound in coord, and series do not belong to that coord.\n // If do not do this check, some brush (like lineX) will controll all axes.\n var targetInfo = this.findTargetInfo(area, ecModel);\n return targetInfo === true || targetInfo && indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0;\n};\n/**\n * If return Object, a coord found.\n * If reutrn true, global found.\n * Otherwise nothing found.\n *\n * @param {Object} area\n * @param {Array} targetInfoList\n * @return {Object|boolean}\n */\n\n\nproto.findTargetInfo = function (area, ecModel) {\n var targetInfoList = this._targetInfoList;\n var foundCpts = parseFinder(ecModel, area);\n\n for (var i = 0; i < targetInfoList.length; i++) {\n var targetInfo = targetInfoList[i];\n var areaPanelId = area.panelId;\n\n if (areaPanelId) {\n if (targetInfo.panelId === areaPanelId) {\n return targetInfo;\n }\n } else {\n for (var i = 0; i < targetInfoMatchers.length; i++) {\n if (targetInfoMatchers[i](foundCpts, targetInfo)) {\n return targetInfo;\n }\n }\n }\n }\n\n return true;\n};\n\nfunction formatMinMax(minMax) {\n minMax[0] > minMax[1] && minMax.reverse();\n return minMax;\n}\n\nfunction parseFinder(ecModel, option) {\n return modelUtil.parseFinder(ecModel, option, {\n includeMainTypes: INCLUDE_FINDER_MAIN_TYPES\n });\n}\n\nvar targetInfoBuilders = {\n grid: function (foundCpts, targetInfoList) {\n var xAxisModels = foundCpts.xAxisModels;\n var yAxisModels = foundCpts.yAxisModels;\n var gridModels = foundCpts.gridModels; // Remove duplicated.\n\n var gridModelMap = zrUtil.createHashMap();\n var xAxesHas = {};\n var yAxesHas = {};\n\n if (!xAxisModels && !yAxisModels && !gridModels) {\n return;\n }\n\n each(xAxisModels, function (axisModel) {\n var gridModel = axisModel.axis.grid.model;\n gridModelMap.set(gridModel.id, gridModel);\n xAxesHas[gridModel.id] = true;\n });\n each(yAxisModels, function (axisModel) {\n var gridModel = axisModel.axis.grid.model;\n gridModelMap.set(gridModel.id, gridModel);\n yAxesHas[gridModel.id] = true;\n });\n each(gridModels, function (gridModel) {\n gridModelMap.set(gridModel.id, gridModel);\n xAxesHas[gridModel.id] = true;\n yAxesHas[gridModel.id] = true;\n });\n gridModelMap.each(function (gridModel) {\n var grid = gridModel.coordinateSystem;\n var cartesians = [];\n each(grid.getCartesians(), function (cartesian, index) {\n if (indexOf(xAxisModels, cartesian.getAxis('x').model) >= 0 || indexOf(yAxisModels, cartesian.getAxis('y').model) >= 0) {\n cartesians.push(cartesian);\n }\n });\n targetInfoList.push({\n panelId: 'grid--' + gridModel.id,\n gridModel: gridModel,\n coordSysModel: gridModel,\n // Use the first one as the representitive coordSys.\n coordSys: cartesians[0],\n coordSyses: cartesians,\n getPanelRect: panelRectBuilder.grid,\n xAxisDeclared: xAxesHas[gridModel.id],\n yAxisDeclared: yAxesHas[gridModel.id]\n });\n });\n },\n geo: function (foundCpts, targetInfoList) {\n each(foundCpts.geoModels, function (geoModel) {\n var coordSys = geoModel.coordinateSystem;\n targetInfoList.push({\n panelId: 'geo--' + geoModel.id,\n geoModel: geoModel,\n coordSysModel: geoModel,\n coordSys: coordSys,\n coordSyses: [coordSys],\n getPanelRect: panelRectBuilder.geo\n });\n });\n }\n};\nvar targetInfoMatchers = [// grid\nfunction (foundCpts, targetInfo) {\n var xAxisModel = foundCpts.xAxisModel;\n var yAxisModel = foundCpts.yAxisModel;\n var gridModel = foundCpts.gridModel;\n !gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model);\n !gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model);\n return gridModel && gridModel === targetInfo.gridModel;\n}, // geo\nfunction (foundCpts, targetInfo) {\n var geoModel = foundCpts.geoModel;\n return geoModel && geoModel === targetInfo.geoModel;\n}];\nvar panelRectBuilder = {\n grid: function () {\n // grid is not Transformable.\n return this.coordSys.grid.getRect().clone();\n },\n geo: function () {\n var coordSys = this.coordSys;\n var rect = coordSys.getBoundingRect().clone(); // geo roam and zoom transform\n\n rect.applyTransform(graphic.getTransform(coordSys));\n return rect;\n }\n};\nvar coordConvert = {\n lineX: curry(axisConvert, 0),\n lineY: curry(axisConvert, 1),\n rect: function (to, coordSys, rangeOrCoordRange) {\n var xminymin = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]]);\n var xmaxymax = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]]);\n var values = [formatMinMax([xminymin[0], xmaxymax[0]]), formatMinMax([xminymin[1], xmaxymax[1]])];\n return {\n values: values,\n xyMinMax: values\n };\n },\n polygon: function (to, coordSys, rangeOrCoordRange) {\n var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]];\n var values = zrUtil.map(rangeOrCoordRange, function (item) {\n var p = coordSys[COORD_CONVERTS[to]](item);\n xyMinMax[0][0] = Math.min(xyMinMax[0][0], p[0]);\n xyMinMax[1][0] = Math.min(xyMinMax[1][0], p[1]);\n xyMinMax[0][1] = Math.max(xyMinMax[0][1], p[0]);\n xyMinMax[1][1] = Math.max(xyMinMax[1][1], p[1]);\n return p;\n });\n return {\n values: values,\n xyMinMax: xyMinMax\n };\n }\n};\n\nfunction axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) {\n var axis = coordSys.getAxis(['x', 'y'][axisNameIndex]);\n var values = formatMinMax(zrUtil.map([0, 1], function (i) {\n return to ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i])) : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i]));\n }));\n var xyMinMax = [];\n xyMinMax[axisNameIndex] = values;\n xyMinMax[1 - axisNameIndex] = [NaN, NaN];\n return {\n values: values,\n xyMinMax: xyMinMax\n };\n}\n\nvar diffProcessor = {\n lineX: curry(axisDiffProcessor, 0),\n lineY: curry(axisDiffProcessor, 1),\n rect: function (values, refer, scales) {\n return [[values[0][0] - scales[0] * refer[0][0], values[0][1] - scales[0] * refer[0][1]], [values[1][0] - scales[1] * refer[1][0], values[1][1] - scales[1] * refer[1][1]]];\n },\n polygon: function (values, refer, scales) {\n return zrUtil.map(values, function (item, idx) {\n return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]];\n });\n }\n};\n\nfunction axisDiffProcessor(axisNameIndex, values, refer, scales) {\n return [values[0] - scales[axisNameIndex] * refer[0], values[1] - scales[axisNameIndex] * refer[1]];\n} // We have to process scale caused by dataZoom manually,\n// although it might be not accurate.\n\n\nfunction getScales(xyMinMaxCurr, xyMinMaxOrigin) {\n var sizeCurr = getSize(xyMinMaxCurr);\n var sizeOrigin = getSize(xyMinMaxOrigin);\n var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]];\n isNaN(scales[0]) && (scales[0] = 1);\n isNaN(scales[1]) && (scales[1] = 1);\n return scales;\n}\n\nfunction getSize(xyMinMax) {\n return xyMinMax ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]] : [NaN, NaN];\n}\n\nvar _default = BrushTargetManager;\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 RoamController = require(\"./RoamController\");\n\nvar roamHelper = require(\"../../component/helper/roamHelper\");\n\nvar _cursorHelper = require(\"../../component/helper/cursorHelper\");\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar geoSourceManager = require(\"../../coord/geo/geoSourceManager\");\n\nvar _component = require(\"../../util/component\");\n\nvar getUID = _component.getUID;\n\nvar Transformable = require(\"zrender/lib/mixin/Transformable\");\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 getFixedItemStyle(model) {\n var itemStyle = model.getItemStyle();\n var areaColor = model.get('areaColor'); // If user want the color not to be changed when hover,\n // they should both set areaColor and color to be null.\n\n if (areaColor != null) {\n itemStyle.fill = areaColor;\n }\n\n return itemStyle;\n}\n\nfunction updateMapSelectHandler(mapDraw, mapOrGeoModel, regionsGroup, api, fromView) {\n regionsGroup.off('click');\n regionsGroup.off('mousedown');\n\n if (mapOrGeoModel.get('selectedMode')) {\n regionsGroup.on('mousedown', function () {\n mapDraw._mouseDownFlag = true;\n });\n regionsGroup.on('click', function (e) {\n if (!mapDraw._mouseDownFlag) {\n return;\n }\n\n mapDraw._mouseDownFlag = false;\n var el = e.target;\n\n while (!el.__regions) {\n el = el.parent;\n }\n\n if (!el) {\n return;\n }\n\n var action = {\n type: (mapOrGeoModel.mainType === 'geo' ? 'geo' : 'map') + 'ToggleSelect',\n batch: zrUtil.map(el.__regions, function (region) {\n return {\n name: region.name,\n from: fromView.uid\n };\n })\n };\n action[mapOrGeoModel.mainType + 'Id'] = mapOrGeoModel.id;\n api.dispatchAction(action);\n updateMapSelected(mapOrGeoModel, regionsGroup);\n });\n }\n}\n\nfunction updateMapSelected(mapOrGeoModel, regionsGroup) {\n // FIXME\n regionsGroup.eachChild(function (otherRegionEl) {\n zrUtil.each(otherRegionEl.__regions, function (region) {\n otherRegionEl.trigger(mapOrGeoModel.isSelected(region.name) ? 'emphasis' : 'normal');\n });\n });\n}\n/**\n * @alias module:echarts/component/helper/MapDraw\n * @param {module:echarts/ExtensionAPI} api\n * @param {boolean} updateGroup\n */\n\n\nfunction MapDraw(api, updateGroup) {\n var group = new graphic.Group();\n /**\n * @type {string}\n * @private\n */\n\n this.uid = getUID('ec_map_draw');\n /**\n * @type {module:echarts/component/helper/RoamController}\n * @private\n */\n\n this._controller = new RoamController(api.getZr());\n /**\n * @type {Object} {target, zoom, zoomLimit}\n * @private\n */\n\n this._controllerHost = {\n target: updateGroup ? group : null\n };\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n\n this.group = group;\n /**\n * @type {boolean}\n * @private\n */\n\n this._updateGroup = updateGroup;\n /**\n * This flag is used to make sure that only one among\n * `pan`, `zoom`, `click` can occurs, otherwise 'selected'\n * action may be triggered when `pan`, which is unexpected.\n * @type {booelan}\n */\n\n this._mouseDownFlag;\n /**\n * @type {string}\n */\n\n this._mapName;\n /**\n * @type {boolean}\n */\n\n this._initialized;\n /**\n * @type {module:zrender/container/Group}\n */\n\n group.add(this._regionsGroup = new graphic.Group());\n /**\n * @type {module:zrender/container/Group}\n */\n\n group.add(this._backgroundGroup = new graphic.Group());\n}\n\nMapDraw.prototype = {\n constructor: MapDraw,\n draw: function (mapOrGeoModel, ecModel, api, fromView, payload) {\n var isGeo = mapOrGeoModel.mainType === 'geo'; // Map series has data. GEO model that controlled by map series\n // will be assigned with map data. Other GEO model has no data.\n\n var data = mapOrGeoModel.getData && mapOrGeoModel.getData();\n isGeo && ecModel.eachComponent({\n mainType: 'series',\n subType: 'map'\n }, function (mapSeries) {\n if (!data && mapSeries.getHostGeoModel() === mapOrGeoModel) {\n data = mapSeries.getData();\n }\n });\n var geo = mapOrGeoModel.coordinateSystem;\n\n this._updateBackground(geo);\n\n var regionsGroup = this._regionsGroup;\n var group = this.group;\n var transformInfo = geo.getTransformInfo(); // No animation when first draw or in action\n\n var isFirstDraw = !regionsGroup.childAt(0) || payload;\n var targetScale;\n\n if (isFirstDraw) {\n group.transform = transformInfo.roamTransform;\n group.decomposeTransform();\n group.dirty();\n } else {\n var target = new Transformable();\n target.transform = transformInfo.roamTransform;\n target.decomposeTransform();\n var props = {\n scale: target.scale,\n position: target.position\n };\n targetScale = target.scale;\n graphic.updateProps(group, props, mapOrGeoModel);\n }\n\n var scale = transformInfo.rawScale;\n var position = transformInfo.rawPosition;\n regionsGroup.removeAll();\n var itemStyleAccessPath = ['itemStyle'];\n var hoverItemStyleAccessPath = ['emphasis', 'itemStyle'];\n var labelAccessPath = ['label'];\n var hoverLabelAccessPath = ['emphasis', 'label'];\n var nameMap = zrUtil.createHashMap();\n zrUtil.each(geo.regions, function (region) {\n // Consider in GeoJson properties.name may be duplicated, for example,\n // there is multiple region named \"United Kindom\" or \"France\" (so many\n // colonies). And it is not appropriate to merge them in geo, which\n // will make them share the same label and bring trouble in label\n // location calculation.\n var regionGroup = nameMap.get(region.name) || nameMap.set(region.name, new graphic.Group());\n var compoundPath = new graphic.CompoundPath({\n segmentIgnoreThreshold: 1,\n shape: {\n paths: []\n }\n });\n regionGroup.add(compoundPath);\n var regionModel = mapOrGeoModel.getRegionModel(region.name) || mapOrGeoModel;\n var itemStyleModel = regionModel.getModel(itemStyleAccessPath);\n var hoverItemStyleModel = regionModel.getModel(hoverItemStyleAccessPath);\n var itemStyle = getFixedItemStyle(itemStyleModel);\n var hoverItemStyle = getFixedItemStyle(hoverItemStyleModel);\n var labelModel = regionModel.getModel(labelAccessPath);\n var hoverLabelModel = regionModel.getModel(hoverLabelAccessPath);\n var dataIdx; // Use the itemStyle in data if has data\n\n if (data) {\n dataIdx = data.indexOfName(region.name); // Only visual color of each item will be used. It can be encoded by dataRange\n // But visual color of series is used in symbol drawing\n //\n // Visual color for each series is for the symbol draw\n\n var visualColor = data.getItemVisual(dataIdx, 'color', true);\n\n if (visualColor) {\n itemStyle.fill = visualColor;\n }\n }\n\n var transformPoint = function (point) {\n return [point[0] * scale[0] + position[0], point[1] * scale[1] + position[1]];\n };\n\n zrUtil.each(region.geometries, function (geometry) {\n if (geometry.type !== 'polygon') {\n return;\n }\n\n var points = [];\n\n for (var i = 0; i < geometry.exterior.length; ++i) {\n points.push(transformPoint(geometry.exterior[i]));\n }\n\n compoundPath.shape.paths.push(new graphic.Polygon({\n segmentIgnoreThreshold: 1,\n shape: {\n points: points\n }\n }));\n\n for (var i = 0; i < (geometry.interiors ? geometry.interiors.length : 0); ++i) {\n var interior = geometry.interiors[i];\n var points = [];\n\n for (var j = 0; j < interior.length; ++j) {\n points.push(transformPoint(interior[j]));\n }\n\n compoundPath.shape.paths.push(new graphic.Polygon({\n segmentIgnoreThreshold: 1,\n shape: {\n points: points\n }\n }));\n }\n });\n compoundPath.setStyle(itemStyle);\n compoundPath.style.strokeNoScale = true;\n compoundPath.culling = true; // Label\n\n var showLabel = labelModel.get('show');\n var hoverShowLabel = hoverLabelModel.get('show');\n var isDataNaN = data && isNaN(data.get(data.mapDimension('value'), dataIdx));\n var itemLayout = data && data.getItemLayout(dataIdx); // In the following cases label will be drawn\n // 1. In map series and data value is NaN\n // 2. In geo component\n // 4. Region has no series legendSymbol, which will be add a showLabel flag in mapSymbolLayout\n\n if (isGeo || isDataNaN && (showLabel || hoverShowLabel) || itemLayout && itemLayout.showLabel) {\n var query = !isGeo ? dataIdx : region.name;\n var labelFetcher; // Consider dataIdx not found.\n\n if (!data || dataIdx >= 0) {\n labelFetcher = mapOrGeoModel;\n }\n\n var textEl = new graphic.Text({\n position: transformPoint(region.center.slice()),\n // FIXME\n // label rotation is not support yet in geo or regions of series-map\n // that has no data. The rotation will be effected by this `scale`.\n // So needed to change to RectText?\n scale: [1 / group.scale[0], 1 / group.scale[1]],\n z2: 10,\n silent: true\n });\n graphic.setLabelStyle(textEl.style, textEl.hoverStyle = {}, labelModel, hoverLabelModel, {\n labelFetcher: labelFetcher,\n labelDataIndex: query,\n defaultText: region.name,\n useInsideStyle: false\n }, {\n textAlign: 'center',\n textVerticalAlign: 'middle'\n });\n\n if (!isFirstDraw) {\n // Text animation\n var textScale = [1 / targetScale[0], 1 / targetScale[1]];\n graphic.updateProps(textEl, {\n scale: textScale\n }, mapOrGeoModel);\n }\n\n regionGroup.add(textEl);\n } // setItemGraphicEl, setHoverStyle after all polygons and labels\n // are added to the rigionGroup\n\n\n if (data) {\n data.setItemGraphicEl(dataIdx, regionGroup);\n } else {\n var regionModel = mapOrGeoModel.getRegionModel(region.name); // Package custom mouse event for geo component\n\n compoundPath.eventData = {\n componentType: 'geo',\n componentIndex: mapOrGeoModel.componentIndex,\n geoIndex: mapOrGeoModel.componentIndex,\n name: region.name,\n region: regionModel && regionModel.option || {}\n };\n }\n\n var groupRegions = regionGroup.__regions || (regionGroup.__regions = []);\n groupRegions.push(region);\n regionGroup.highDownSilentOnTouch = !!mapOrGeoModel.get('selectedMode');\n graphic.setHoverStyle(regionGroup, hoverItemStyle);\n regionsGroup.add(regionGroup);\n });\n\n this._updateController(mapOrGeoModel, ecModel, api);\n\n updateMapSelectHandler(this, mapOrGeoModel, regionsGroup, api, fromView);\n updateMapSelected(mapOrGeoModel, regionsGroup);\n },\n remove: function () {\n this._regionsGroup.removeAll();\n\n this._backgroundGroup.removeAll();\n\n this._controller.dispose();\n\n this._mapName && geoSourceManager.removeGraphic(this._mapName, this.uid);\n this._mapName = null;\n this._controllerHost = {};\n },\n _updateBackground: function (geo) {\n var mapName = geo.map;\n\n if (this._mapName !== mapName) {\n zrUtil.each(geoSourceManager.makeGraphic(mapName, this.uid), function (root) {\n this._backgroundGroup.add(root);\n }, this);\n }\n\n this._mapName = mapName;\n },\n _updateController: function (mapOrGeoModel, ecModel, api) {\n var geo = mapOrGeoModel.coordinateSystem;\n var controller = this._controller;\n var controllerHost = this._controllerHost;\n controllerHost.zoomLimit = mapOrGeoModel.get('scaleLimit');\n controllerHost.zoom = geo.getZoom(); // roamType is will be set default true if it is null\n\n controller.enable(mapOrGeoModel.get('roam') || false);\n var mainType = mapOrGeoModel.mainType;\n\n function makeActionBase() {\n var action = {\n type: 'geoRoam',\n componentType: mainType\n };\n action[mainType + 'Id'] = mapOrGeoModel.id;\n return action;\n }\n\n controller.off('pan').on('pan', function (e) {\n this._mouseDownFlag = false;\n roamHelper.updateViewOnPan(controllerHost, e.dx, e.dy);\n api.dispatchAction(zrUtil.extend(makeActionBase(), {\n dx: e.dx,\n dy: e.dy\n }));\n }, this);\n controller.off('zoom').on('zoom', function (e) {\n this._mouseDownFlag = false;\n roamHelper.updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\n api.dispatchAction(zrUtil.extend(makeActionBase(), {\n zoom: e.scale,\n originX: e.originX,\n originY: e.originY\n }));\n\n if (this._updateGroup) {\n var scale = this.group.scale;\n\n this._regionsGroup.traverse(function (el) {\n if (el.type === 'text') {\n el.attr('scale', [1 / scale[0], 1 / scale[1]]);\n }\n });\n }\n }, this);\n controller.setPointerChecker(function (e, x, y) {\n return geo.getViewRectAfterRoam().contain(x, y) && !onIrrelevantElement(e, api, mapOrGeoModel);\n });\n }\n};\nvar _default = MapDraw;\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 Eventful = require(\"zrender/lib/mixin/Eventful\");\n\nvar eventTool = require(\"zrender/lib/core/event\");\n\nvar interactionMutex = require(\"./interactionMutex\");\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 * @alias module:echarts/component/helper/RoamController\n * @constructor\n * @mixin {module:zrender/mixin/Eventful}\n *\n * @param {module:zrender/zrender~ZRender} zr\n */\nfunction RoamController(zr) {\n /**\n * @type {Function}\n */\n this.pointerChecker;\n /**\n * @type {module:zrender}\n */\n\n this._zr = zr;\n /**\n * @type {Object}\n */\n\n this._opt = {}; // Avoid two roamController bind the same handler\n\n var bind = zrUtil.bind;\n var mousedownHandler = bind(mousedown, this);\n var mousemoveHandler = bind(mousemove, this);\n var mouseupHandler = bind(mouseup, this);\n var mousewheelHandler = bind(mousewheel, this);\n var pinchHandler = bind(pinch, this);\n Eventful.call(this);\n /**\n * @param {Function} pointerChecker\n * input: x, y\n * output: boolean\n */\n\n this.setPointerChecker = function (pointerChecker) {\n this.pointerChecker = pointerChecker;\n };\n /**\n * Notice: only enable needed types. For example, if 'zoom'\n * is not needed, 'zoom' should not be enabled, otherwise\n * default mousewheel behaviour (scroll page) will be disabled.\n *\n * @param {boolean|string} [controlType=true] Specify the control type,\n * which can be null/undefined or true/false\n * or 'pan/move' or 'zoom'/'scale'\n * @param {Object} [opt]\n * @param {Object} [opt.zoomOnMouseWheel=true] The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n * @param {Object} [opt.moveOnMouseMove=true] The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n * @param {Object} [opt.moveOnMouseWheel=false] The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n * @param {Object} [opt.preventDefaultMouseMove=true] When pan.\n */\n\n\n this.enable = function (controlType, opt) {\n // Disable previous first\n this.disable();\n this._opt = zrUtil.defaults(zrUtil.clone(opt) || {}, {\n zoomOnMouseWheel: true,\n moveOnMouseMove: true,\n // By default, wheel do not trigger move.\n moveOnMouseWheel: false,\n preventDefaultMouseMove: true\n });\n\n if (controlType == null) {\n controlType = true;\n }\n\n if (controlType === true || controlType === 'move' || controlType === 'pan') {\n zr.on('mousedown', mousedownHandler);\n zr.on('mousemove', mousemoveHandler);\n zr.on('mouseup', mouseupHandler);\n }\n\n if (controlType === true || controlType === 'scale' || controlType === 'zoom') {\n zr.on('mousewheel', mousewheelHandler);\n zr.on('pinch', pinchHandler);\n }\n };\n\n this.disable = function () {\n zr.off('mousedown', mousedownHandler);\n zr.off('mousemove', mousemoveHandler);\n zr.off('mouseup', mouseupHandler);\n zr.off('mousewheel', mousewheelHandler);\n zr.off('pinch', pinchHandler);\n };\n\n this.dispose = this.disable;\n\n this.isDragging = function () {\n return this._dragging;\n };\n\n this.isPinching = function () {\n return this._pinching;\n };\n}\n\nzrUtil.mixin(RoamController, Eventful);\n\nfunction mousedown(e) {\n if (eventTool.isMiddleOrRightButtonOnMouseUpDown(e) || e.target && e.target.draggable) {\n return;\n }\n\n var x = e.offsetX;\n var y = e.offsetY; // Only check on mosedown, but not mousemove.\n // Mouse can be out of target when mouse moving.\n\n if (this.pointerChecker && this.pointerChecker(e, x, y)) {\n this._x = x;\n this._y = y;\n this._dragging = true;\n }\n}\n\nfunction mousemove(e) {\n if (!this._dragging || !isAvailableBehavior('moveOnMouseMove', e, this._opt) || e.gestureEvent === 'pinch' || interactionMutex.isTaken(this._zr, 'globalPan')) {\n return;\n }\n\n var x = e.offsetX;\n var y = e.offsetY;\n var oldX = this._x;\n var oldY = this._y;\n var dx = x - oldX;\n var dy = y - oldY;\n this._x = x;\n this._y = y;\n this._opt.preventDefaultMouseMove && eventTool.stop(e.event);\n trigger(this, 'pan', 'moveOnMouseMove', e, {\n dx: dx,\n dy: dy,\n oldX: oldX,\n oldY: oldY,\n newX: x,\n newY: y\n });\n}\n\nfunction mouseup(e) {\n if (!eventTool.isMiddleOrRightButtonOnMouseUpDown(e)) {\n this._dragging = false;\n }\n}\n\nfunction mousewheel(e) {\n var shouldZoom = isAvailableBehavior('zoomOnMouseWheel', e, this._opt);\n var shouldMove = isAvailableBehavior('moveOnMouseWheel', e, this._opt);\n var wheelDelta = e.wheelDelta;\n var absWheelDeltaDelta = Math.abs(wheelDelta);\n var originX = e.offsetX;\n var originY = e.offsetY; // wheelDelta maybe -0 in chrome mac.\n\n if (wheelDelta === 0 || !shouldZoom && !shouldMove) {\n return;\n } // If both `shouldZoom` and `shouldMove` is true, trigger\n // their event both, and the final behavior is determined\n // by event listener themselves.\n\n\n if (shouldZoom) {\n // Convenience:\n // Mac and VM Windows on Mac: scroll up: zoom out.\n // Windows: scroll up: zoom in.\n // FIXME: Should do more test in different environment.\n // wheelDelta is too complicated in difference nvironment\n // (https://developer.mozilla.org/en-US/docs/Web/Events/mousewheel),\n // although it has been normallized by zrender.\n // wheelDelta of mouse wheel is bigger than touch pad.\n var factor = absWheelDeltaDelta > 3 ? 1.4 : absWheelDeltaDelta > 1 ? 1.2 : 1.1;\n var scale = wheelDelta > 0 ? factor : 1 / factor;\n checkPointerAndTrigger(this, 'zoom', 'zoomOnMouseWheel', e, {\n scale: scale,\n originX: originX,\n originY: originY\n });\n }\n\n if (shouldMove) {\n // FIXME: Should do more test in different environment.\n var absDelta = Math.abs(wheelDelta); // wheelDelta of mouse wheel is bigger than touch pad.\n\n var scrollDelta = (wheelDelta > 0 ? 1 : -1) * (absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05);\n checkPointerAndTrigger(this, 'scrollMove', 'moveOnMouseWheel', e, {\n scrollDelta: scrollDelta,\n originX: originX,\n originY: originY\n });\n }\n}\n\nfunction pinch(e) {\n if (interactionMutex.isTaken(this._zr, 'globalPan')) {\n return;\n }\n\n var scale = e.pinchScale > 1 ? 1.1 : 1 / 1.1;\n checkPointerAndTrigger(this, 'zoom', null, e, {\n scale: scale,\n originX: e.pinchX,\n originY: e.pinchY\n });\n}\n\nfunction checkPointerAndTrigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\n if (controller.pointerChecker && controller.pointerChecker(e, contollerEvent.originX, contollerEvent.originY)) {\n // When mouse is out of roamController rect,\n // default befavoius should not be be disabled, otherwise\n // page sliding is disabled, contrary to expectation.\n eventTool.stop(e.event);\n trigger(controller, eventName, behaviorToCheck, e, contollerEvent);\n }\n}\n\nfunction trigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\n // Also provide behavior checker for event listener, for some case that\n // multiple components share one listener.\n contollerEvent.isAvailableBehavior = zrUtil.bind(isAvailableBehavior, null, behaviorToCheck, e);\n controller.trigger(eventName, contollerEvent);\n} // settings: {\n// zoomOnMouseWheel\n// moveOnMouseMove\n// moveOnMouseWheel\n// }\n// The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n\n\nfunction isAvailableBehavior(behaviorToCheck, e, settings) {\n var setting = settings[behaviorToCheck];\n return !behaviorToCheck || setting && (!zrUtil.isString(setting) || e.event[setting + 'Key']);\n}\n\nvar _default = RoamController;\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 BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _cursorHelper = require(\"./cursorHelper\");\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar graphicUtil = require(\"../../util/graphic\");\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 makeRectPanelClipPath(rect) {\n rect = normalizeRect(rect);\n return function (localPoints, transform) {\n return graphicUtil.clipPointsByRect(localPoints, rect);\n };\n}\n\nfunction makeLinearBrushOtherExtent(rect, specifiedXYIndex) {\n rect = normalizeRect(rect);\n return function (xyIndex) {\n var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex;\n var brushWidth = idx ? rect.width : rect.height;\n var base = idx ? rect.x : rect.y;\n return [base, base + (brushWidth || 0)];\n };\n}\n\nfunction makeRectIsTargetByCursor(rect, api, targetModel) {\n rect = normalizeRect(rect);\n return function (e, localCursorPoint, transform) {\n return rect.contain(localCursorPoint[0], localCursorPoint[1]) && !onIrrelevantElement(e, api, targetModel);\n };\n} // Consider width/height is negative.\n\n\nfunction normalizeRect(rect) {\n return BoundingRect.create(rect);\n}\n\nexports.makeRectPanelClipPath = makeRectPanelClipPath;\nexports.makeLinearBrushOtherExtent = makeLinearBrushOtherExtent;\nexports.makeRectIsTargetByCursor = makeRectIsTargetByCursor;","\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* 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 IRRELEVANT_EXCLUDES = {\n 'axisPointer': 1,\n 'tooltip': 1,\n 'brush': 1\n};\n/**\n * Avoid that: mouse click on a elements that is over geo or graph,\n * but roam is triggered.\n */\n\nfunction onIrrelevantElement(e, api, targetCoordSysModel) {\n var model = api.getComponentByElement(e.topTarget); // If model is axisModel, it works only if it is injected with coordinateSystem.\n\n var coordSys = model && model.coordinateSystem;\n return model && model !== targetCoordSysModel && !IRRELEVANT_EXCLUDES[model.mainType] && coordSys && coordSys.model !== targetCoordSysModel;\n}\n\nexports.onIrrelevantElement = onIrrelevantElement;","\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*/\nvar ATTR = '\\0_ec_interaction_mutex';\n\nfunction take(zr, resourceKey, userKey) {\n var store = getStore(zr);\n store[resourceKey] = userKey;\n}\n\nfunction release(zr, resourceKey, userKey) {\n var store = getStore(zr);\n var uKey = store[resourceKey];\n\n if (uKey === userKey) {\n store[resourceKey] = null;\n }\n}\n\nfunction isTaken(zr, resourceKey) {\n return !!getStore(zr)[resourceKey];\n}\n\nfunction getStore(zr) {\n return zr[ATTR] || (zr[ATTR] = {});\n}\n/**\n * payload: {\n * type: 'takeGlobalCursor',\n * key: 'dataZoomSelect', or 'brush', or ...,\n * If no userKey, release global cursor.\n * }\n */\n\n\necharts.registerAction({\n type: 'takeGlobalCursor',\n event: 'globalCursorTaken',\n update: 'update'\n}, function () {});\nexports.take = take;\nexports.release = release;\nexports.isTaken = isTaken;","\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 _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\nvar layoutBox = _layout.box;\nvar positionElement = _layout.positionElement;\n\nvar formatUtil = require(\"../../util/format\");\n\nvar graphic = require(\"../../util/graphic\");\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 * Layout list like component.\n * It will box layout each items in group of component and then position the whole group in the viewport\n * @param {module:zrender/group/Group} group\n * @param {module:echarts/model/Component} componentModel\n * @param {module:echarts/ExtensionAPI}\n */\nfunction layout(group, componentModel, api) {\n var boxLayoutParams = componentModel.getBoxLayoutParams();\n var padding = componentModel.get('padding');\n var viewportSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var rect = getLayoutRect(boxLayoutParams, viewportSize, padding);\n layoutBox(componentModel.get('orient'), group, componentModel.get('itemGap'), rect.width, rect.height);\n positionElement(group, boxLayoutParams, viewportSize, padding);\n}\n\nfunction makeBackground(rect, componentModel) {\n var padding = formatUtil.normalizeCssArray(componentModel.get('padding'));\n var style = componentModel.getItemStyle(['color', 'opacity']);\n style.fill = componentModel.get('backgroundColor');\n var rect = new graphic.Rect({\n shape: {\n x: rect.x - padding[3],\n y: rect.y - padding[0],\n width: rect.width + padding[1] + padding[3],\n height: rect.height + padding[0] + padding[2],\n r: componentModel.get('borderRadius')\n },\n style: style,\n silent: true,\n z2: -1\n }); // FIXME\n // `subPixelOptimizeRect` may bring some gap between edge of viewpart\n // and background rect when setting like `left: 0`, `top: 0`.\n // graphic.subPixelOptimizeRect(rect);\n\n return rect;\n}\n\nexports.layout = layout;\nexports.makeBackground = makeBackground;","\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* 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 * For geo and graph.\n *\n * @param {Object} controllerHost\n * @param {module:zrender/Element} controllerHost.target\n */\nfunction updateViewOnPan(controllerHost, dx, dy) {\n var target = controllerHost.target;\n var pos = target.position;\n pos[0] += dx;\n pos[1] += dy;\n target.dirty();\n}\n/**\n * For geo and graph.\n *\n * @param {Object} controllerHost\n * @param {module:zrender/Element} controllerHost.target\n * @param {number} controllerHost.zoom\n * @param {number} controllerHost.zoomLimit like: {min: 1, max: 2}\n */\n\n\nfunction updateViewOnZoom(controllerHost, zoomDelta, zoomX, zoomY) {\n var target = controllerHost.target;\n var zoomLimit = controllerHost.zoomLimit;\n var pos = target.position;\n var scale = target.scale;\n var newZoom = controllerHost.zoom = controllerHost.zoom || 1;\n newZoom *= zoomDelta;\n\n if (zoomLimit) {\n var zoomMin = zoomLimit.min || 0;\n var zoomMax = zoomLimit.max || Infinity;\n newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin);\n }\n\n var zoomScale = newZoom / controllerHost.zoom;\n controllerHost.zoom = newZoom; // Keep the mouse center when scaling\n\n pos[0] -= (zoomX - pos[0]) * (zoomScale - 1);\n pos[1] -= (zoomY - pos[1]) * (zoomScale - 1);\n scale[0] *= zoomScale;\n scale[1] *= zoomScale;\n target.dirty();\n}\n\nexports.updateViewOnPan = updateViewOnPan;\nexports.updateViewOnZoom = updateViewOnZoom;","\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*/\n\n/**\n * Data selectable mixin for chart series.\n * To eanble data select, option of series must have `selectedMode`.\n * And each data item will use `selected` to toggle itself selected status\n */\nvar _default = {\n /**\n * @param {Array.} targetList [{name, value, selected}, ...]\n * If targetList is an array, it should like [{name: ..., value: ...}, ...].\n * If targetList is a \"List\", it must have coordDim: 'value' dimension and name.\n */\n updateSelectedMap: function (targetList) {\n this._targetList = zrUtil.isArray(targetList) ? targetList.slice() : [];\n this._selectTargetMap = zrUtil.reduce(targetList || [], function (targetMap, target) {\n targetMap.set(target.name, target);\n return targetMap;\n }, zrUtil.createHashMap());\n },\n\n /**\n * Either name or id should be passed as input here.\n * If both of them are defined, id is used.\n *\n * @param {string|undefined} name name of data\n * @param {number|undefined} id dataIndex of data\n */\n // PENGING If selectedMode is null ?\n select: function (name, id) {\n var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n var selectedMode = this.get('selectedMode');\n\n if (selectedMode === 'single') {\n this._selectTargetMap.each(function (target) {\n target.selected = false;\n });\n }\n\n target && (target.selected = true);\n },\n\n /**\n * Either name or id should be passed as input here.\n * If both of them are defined, id is used.\n *\n * @param {string|undefined} name name of data\n * @param {number|undefined} id dataIndex of data\n */\n unSelect: function (name, id) {\n var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name); // var selectedMode = this.get('selectedMode');\n // selectedMode !== 'single' && target && (target.selected = false);\n\n target && (target.selected = false);\n },\n\n /**\n * Either name or id should be passed as input here.\n * If both of them are defined, id is used.\n *\n * @param {string|undefined} name name of data\n * @param {number|undefined} id dataIndex of data\n */\n toggleSelected: function (name, id) {\n var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n\n if (target != null) {\n this[target.selected ? 'unSelect' : 'select'](name, id);\n return target.selected;\n }\n },\n\n /**\n * Either name or id should be passed as input here.\n * If both of them are defined, id is used.\n *\n * @param {string|undefined} name name of data\n * @param {number|undefined} id dataIndex of data\n */\n isSelected: function (name, id) {\n var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n return target && target.selected;\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\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 * Calculate slider move result.\n * Usage:\n * (1) If both handle0 and handle1 are needed to be moved, set minSpan the same as\n * maxSpan and the same as `Math.abs(handleEnd[1] - handleEnds[0])`.\n * (2) If handle0 is forbidden to cross handle1, set minSpan as `0`.\n *\n * @param {number} delta Move length.\n * @param {Array.} handleEnds handleEnds[0] can be bigger then handleEnds[1].\n * handleEnds will be modified in this method.\n * @param {Array.} extent handleEnds is restricted by extent.\n * extent[0] should less or equals than extent[1].\n * @param {number|string} handleIndex Can be 'all', means that both move the two handleEnds.\n * @param {number} [minSpan] The range of dataZoom can not be smaller than that.\n * If not set, handle0 and cross handle1. If set as a non-negative\n * number (including `0`), handles will push each other when reaching\n * the minSpan.\n * @param {number} [maxSpan] The range of dataZoom can not be larger than that.\n * @return {Array.} The input handleEnds.\n */\nfunction _default(delta, handleEnds, extent, handleIndex, minSpan, maxSpan) {\n delta = delta || 0;\n var extentSpan = extent[1] - extent[0]; // Notice maxSpan and minSpan can be null/undefined.\n\n if (minSpan != null) {\n minSpan = restrict(minSpan, [0, extentSpan]);\n }\n\n if (maxSpan != null) {\n maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0);\n }\n\n if (handleIndex === 'all') {\n var handleSpan = Math.abs(handleEnds[1] - handleEnds[0]);\n handleSpan = restrict(handleSpan, [0, extentSpan]);\n minSpan = maxSpan = restrict(handleSpan, [minSpan, maxSpan]);\n handleIndex = 0;\n }\n\n handleEnds[0] = restrict(handleEnds[0], extent);\n handleEnds[1] = restrict(handleEnds[1], extent);\n var originalDistSign = getSpanSign(handleEnds, handleIndex);\n handleEnds[handleIndex] += delta; // Restrict in extent.\n\n var extentMinSpan = minSpan || 0;\n var realExtent = extent.slice();\n originalDistSign.sign < 0 ? realExtent[0] += extentMinSpan : realExtent[1] -= extentMinSpan;\n handleEnds[handleIndex] = restrict(handleEnds[handleIndex], realExtent); // Expand span.\n\n var currDistSign = getSpanSign(handleEnds, handleIndex);\n\n if (minSpan != null && (currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan)) {\n // If minSpan exists, 'cross' is forbidden.\n handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan;\n } // Shrink span.\n\n\n var currDistSign = getSpanSign(handleEnds, handleIndex);\n\n if (maxSpan != null && currDistSign.span > maxSpan) {\n handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan;\n }\n\n return handleEnds;\n}\n\nfunction getSpanSign(handleEnds, handleIndex) {\n var dist = handleEnds[handleIndex] - handleEnds[1 - handleIndex]; // If `handleEnds[0] === handleEnds[1]`, always believe that handleEnd[0]\n // is at left of handleEnds[1] for non-cross case.\n\n return {\n span: Math.abs(dist),\n sign: dist > 0 ? -1 : dist < 0 ? 1 : handleIndex ? -1 : 1\n };\n}\n\nfunction restrict(value, extend) {\n return Math.min(extend[1] != null ? extend[1] : Infinity, Math.max(extend[0] != null ? extend[0] : -Infinity, value));\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\nrequire(\"./legend/LegendModel\");\n\nrequire(\"./legend/legendAction\");\n\nrequire(\"./legend/LegendView\");\n\nvar legendFilter = require(\"./legend/legendFilter\");\n\nvar Component = require(\"../model/Component\");\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// Do not contain scrollable legend, for sake of file size.\n// Series Filter\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter);\nComponent.registerSubTypeDefaulter('legend', function () {\n // Default 'plain' when no type specified.\n return 'plain';\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\nrequire(\"./legend\");\n\nrequire(\"./legend/ScrollableLegendModel\");\n\nrequire(\"./legend/ScrollableLegendView\");\n\nrequire(\"./legend/scrollableLegendAction\");","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"../../model/Model\");\n\nvar _model = require(\"../../util/model\");\n\nvar isNameSpecified = _model.isNameSpecified;\n\nvar lang = require(\"../../lang\");\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 langSelector = lang.legend.selector;\nvar defaultSelectorOption = {\n all: {\n type: 'all',\n title: zrUtil.clone(langSelector.all)\n },\n inverse: {\n type: 'inverse',\n title: zrUtil.clone(langSelector.inverse)\n }\n};\nvar LegendModel = echarts.extendComponentModel({\n type: 'legend.plain',\n dependencies: ['series'],\n layoutMode: {\n type: 'box',\n // legend.width/height are maxWidth/maxHeight actually,\n // whereas realy width/height is calculated by its content.\n // (Setting {left: 10, right: 10} does not make sense).\n // So consider the case:\n // `setOption({legend: {left: 10});`\n // then `setOption({legend: {right: 10});`\n // The previous `left` should be cleared by setting `ignoreSize`.\n ignoreSize: true\n },\n init: function (option, parentModel, ecModel) {\n this.mergeDefaultAndTheme(option, ecModel);\n option.selected = option.selected || {};\n\n this._updateSelector(option);\n },\n mergeOption: function (option) {\n LegendModel.superCall(this, 'mergeOption', option);\n\n this._updateSelector(option);\n },\n _updateSelector: function (option) {\n var selector = option.selector;\n\n if (selector === true) {\n selector = option.selector = ['all', 'inverse'];\n }\n\n if (zrUtil.isArray(selector)) {\n zrUtil.each(selector, function (item, index) {\n zrUtil.isString(item) && (item = {\n type: item\n });\n selector[index] = zrUtil.merge(item, defaultSelectorOption[item.type]);\n });\n }\n },\n optionUpdated: function () {\n this._updateData(this.ecModel);\n\n var legendData = this._data; // If selectedMode is single, try to select one\n\n if (legendData[0] && this.get('selectedMode') === 'single') {\n var hasSelected = false; // If has any selected in option.selected\n\n for (var i = 0; i < legendData.length; i++) {\n var name = legendData[i].get('name');\n\n if (this.isSelected(name)) {\n // Force to unselect others\n this.select(name);\n hasSelected = true;\n break;\n }\n } // Try select the first if selectedMode is single\n\n\n !hasSelected && this.select(legendData[0].get('name'));\n }\n },\n _updateData: function (ecModel) {\n var potentialData = [];\n var availableNames = [];\n ecModel.eachRawSeries(function (seriesModel) {\n var seriesName = seriesModel.name;\n availableNames.push(seriesName);\n var isPotential;\n\n if (seriesModel.legendVisualProvider) {\n var provider = seriesModel.legendVisualProvider;\n var names = provider.getAllNames();\n\n if (!ecModel.isSeriesFiltered(seriesModel)) {\n availableNames = availableNames.concat(names);\n }\n\n if (names.length) {\n potentialData = potentialData.concat(names);\n } else {\n isPotential = true;\n }\n } else {\n isPotential = true;\n }\n\n if (isPotential && isNameSpecified(seriesModel)) {\n potentialData.push(seriesModel.name);\n }\n });\n /**\n * @type {Array.}\n * @private\n */\n\n this._availableNames = availableNames; // If legend.data not specified in option, use availableNames as data,\n // which is convinient for user preparing option.\n\n var rawData = this.get('data') || potentialData;\n var legendData = zrUtil.map(rawData, function (dataItem) {\n // Can be string or number\n if (typeof dataItem === 'string' || typeof dataItem === 'number') {\n dataItem = {\n name: dataItem\n };\n }\n\n return new Model(dataItem, this, this.ecModel);\n }, this);\n /**\n * @type {Array.}\n * @private\n */\n\n this._data = legendData;\n },\n\n /**\n * @return {Array.}\n */\n getData: function () {\n return this._data;\n },\n\n /**\n * @param {string} name\n */\n select: function (name) {\n var selected = this.option.selected;\n var selectedMode = this.get('selectedMode');\n\n if (selectedMode === 'single') {\n var data = this._data;\n zrUtil.each(data, function (dataItem) {\n selected[dataItem.get('name')] = false;\n });\n }\n\n selected[name] = true;\n },\n\n /**\n * @param {string} name\n */\n unSelect: function (name) {\n if (this.get('selectedMode') !== 'single') {\n this.option.selected[name] = false;\n }\n },\n\n /**\n * @param {string} name\n */\n toggleSelected: function (name) {\n var selected = this.option.selected; // Default is true\n\n if (!selected.hasOwnProperty(name)) {\n selected[name] = true;\n }\n\n this[selected[name] ? 'unSelect' : 'select'](name);\n },\n allSelect: function () {\n var data = this._data;\n var selected = this.option.selected;\n zrUtil.each(data, function (dataItem) {\n selected[dataItem.get('name', true)] = true;\n });\n },\n inverseSelect: function () {\n var data = this._data;\n var selected = this.option.selected;\n zrUtil.each(data, function (dataItem) {\n var name = dataItem.get('name', true); // Initially, default value is true\n\n if (!selected.hasOwnProperty(name)) {\n selected[name] = true;\n }\n\n selected[name] = !selected[name];\n });\n },\n\n /**\n * @param {string} name\n */\n isSelected: function (name) {\n var selected = this.option.selected;\n return !(selected.hasOwnProperty(name) && !selected[name]) && zrUtil.indexOf(this._availableNames, name) >= 0;\n },\n getOrient: function () {\n return this.get('orient') === 'vertical' ? {\n index: 1,\n name: 'vertical'\n } : {\n index: 0,\n name: 'horizontal'\n };\n },\n defaultOption: {\n // 一级层叠\n zlevel: 0,\n // 二级层叠\n z: 4,\n show: true,\n // 布局方式,默认为水平布局,可选为:\n // 'horizontal' | 'vertical'\n orient: 'horizontal',\n left: 'center',\n // right: 'center',\n top: 0,\n // bottom: null,\n // 水平对齐\n // 'auto' | 'left' | 'right'\n // 默认为 'auto', 根据 x 的位置判断是左对齐还是右对齐\n align: 'auto',\n backgroundColor: 'rgba(0,0,0,0)',\n // 图例边框颜色\n borderColor: '#ccc',\n borderRadius: 0,\n // 图例边框线宽,单位px,默认为0(无边框)\n borderWidth: 0,\n // 图例内边距,单位px,默认各方向内边距为5,\n // 接受数组分别设定上右下左边距,同css\n padding: 5,\n // 各个item之间的间隔,单位px,默认为10,\n // 横向布局时为水平间隔,纵向布局时为纵向间隔\n itemGap: 10,\n // the width of legend symbol\n itemWidth: 25,\n // the height of legend symbol\n itemHeight: 14,\n // the color of unselected legend symbol\n inactiveColor: '#ccc',\n // the borderColor of unselected legend symbol\n inactiveBorderColor: '#ccc',\n itemStyle: {\n // the default borderWidth of legend symbol\n borderWidth: 0\n },\n textStyle: {\n // 图例文字颜色\n color: '#333'\n },\n // formatter: '',\n // 选择模式,默认开启图例开关\n selectedMode: true,\n // 配置默认选中状态,可配合LEGEND.SELECTED事件做动态数据载入\n // selected: null,\n // 图例内容(详见legend.data,数组中每一项代表一个item\n // data: [],\n // Usage:\n // selector: [{type: 'all or inverse', title: xxx}]\n // or\n // selector: true\n // or\n // selector: ['all', 'inverse']\n selector: false,\n selectorLabel: {\n show: true,\n borderRadius: 10,\n padding: [3, 5, 3, 5],\n fontSize: 12,\n fontFamily: ' sans-serif',\n color: '#666',\n borderWidth: 1,\n borderColor: '#666'\n },\n emphasis: {\n selectorLabel: {\n show: true,\n color: '#eee',\n backgroundColor: '#666'\n }\n },\n // Value can be 'start' or 'end'\n selectorPosition: 'auto',\n selectorItemGap: 7,\n selectorButtonGap: 10,\n // Tooltip 相关配置\n tooltip: {\n show: false\n }\n }\n});\nvar _default = LegendModel;\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\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 _listComponent = require(\"../helper/listComponent\");\n\nvar makeBackground = _listComponent.makeBackground;\n\nvar layoutUtil = require(\"../../util/layout\");\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 curry = zrUtil.curry;\nvar each = zrUtil.each;\nvar Group = graphic.Group;\n\nvar _default = echarts.extendComponentView({\n type: 'legend.plain',\n newlineDisabled: false,\n\n /**\n * @override\n */\n init: function () {\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n this.group.add(this._contentGroup = new Group());\n /**\n * @private\n * @type {module:zrender/Element}\n */\n\n this._backgroundEl;\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n\n this.group.add(this._selectorGroup = new Group());\n /**\n * If first rendering, `contentGroup.position` is [0, 0], which\n * does not make sense and may cause unexepcted animation if adopted.\n * @private\n * @type {boolean}\n */\n\n this._isFirstRender = true;\n },\n\n /**\n * @protected\n */\n getContentGroup: function () {\n return this._contentGroup;\n },\n\n /**\n * @protected\n */\n getSelectorGroup: function () {\n return this._selectorGroup;\n },\n\n /**\n * @override\n */\n render: function (legendModel, ecModel, api) {\n var isFirstRender = this._isFirstRender;\n this._isFirstRender = false;\n this.resetInner();\n\n if (!legendModel.get('show', true)) {\n return;\n }\n\n var itemAlign = legendModel.get('align');\n var orient = legendModel.get('orient');\n\n if (!itemAlign || itemAlign === 'auto') {\n itemAlign = legendModel.get('left') === 'right' && orient === 'vertical' ? 'right' : 'left';\n }\n\n var selector = legendModel.get('selector', true);\n var selectorPosition = legendModel.get('selectorPosition', true);\n\n if (selector && (!selectorPosition || selectorPosition === 'auto')) {\n selectorPosition = orient === 'horizontal' ? 'end' : 'start';\n }\n\n this.renderInner(itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition); // Perform layout.\n\n var positionInfo = legendModel.getBoxLayoutParams();\n var viewportSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var padding = legendModel.get('padding');\n var maxSize = layoutUtil.getLayoutRect(positionInfo, viewportSize, padding);\n var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition); // Place mainGroup, based on the calculated `mainRect`.\n\n var layoutRect = layoutUtil.getLayoutRect(zrUtil.defaults({\n width: mainRect.width,\n height: mainRect.height\n }, positionInfo), viewportSize, padding);\n this.group.attr('position', [layoutRect.x - mainRect.x, layoutRect.y - mainRect.y]); // Render background after group is layout.\n\n this.group.add(this._backgroundEl = makeBackground(mainRect, legendModel));\n },\n\n /**\n * @protected\n */\n resetInner: function () {\n this.getContentGroup().removeAll();\n this._backgroundEl && this.group.remove(this._backgroundEl);\n this.getSelectorGroup().removeAll();\n },\n\n /**\n * @protected\n */\n renderInner: function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\n var contentGroup = this.getContentGroup();\n var legendDrawnMap = zrUtil.createHashMap();\n var selectMode = legendModel.get('selectedMode');\n var excludeSeriesId = [];\n ecModel.eachRawSeries(function (seriesModel) {\n !seriesModel.get('legendHoverLink') && excludeSeriesId.push(seriesModel.id);\n });\n each(legendModel.getData(), function (itemModel, dataIndex) {\n var name = itemModel.get('name'); // Use empty string or \\n as a newline string\n\n if (!this.newlineDisabled && (name === '' || name === '\\n')) {\n contentGroup.add(new Group({\n newline: true\n }));\n return;\n } // Representitive series.\n\n\n var seriesModel = ecModel.getSeriesByName(name)[0];\n\n if (legendDrawnMap.get(name)) {\n // Have been drawed\n return;\n } // Legend to control series.\n\n\n if (seriesModel) {\n var data = seriesModel.getData();\n var color = data.getVisual('color');\n var borderColor = data.getVisual('borderColor'); // If color is a callback function\n\n if (typeof color === 'function') {\n // Use the first data\n color = color(seriesModel.getDataParams(0));\n } // If borderColor is a callback function\n\n\n if (typeof borderColor === 'function') {\n // Use the first data\n borderColor = borderColor(seriesModel.getDataParams(0));\n } // Using rect symbol defaultly\n\n\n var legendSymbolType = data.getVisual('legendSymbol') || 'roundRect';\n var symbolType = data.getVisual('symbol');\n\n var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, borderColor, selectMode);\n\n itemGroup.on('click', curry(dispatchSelectAction, name, null, api, excludeSeriesId)).on('mouseover', curry(dispatchHighlightAction, seriesModel.name, null, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, seriesModel.name, null, api, excludeSeriesId));\n legendDrawnMap.set(name, true);\n } else {\n // Legend to control data. In pie and funnel.\n ecModel.eachRawSeries(function (seriesModel) {\n // In case multiple series has same data name\n if (legendDrawnMap.get(name)) {\n return;\n }\n\n if (seriesModel.legendVisualProvider) {\n var provider = seriesModel.legendVisualProvider;\n\n if (!provider.containName(name)) {\n return;\n }\n\n var idx = provider.indexOfName(name);\n var color = provider.getItemVisual(idx, 'color');\n var borderColor = provider.getItemVisual(idx, 'borderColor');\n var legendSymbolType = 'roundRect';\n\n var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, null, itemAlign, color, borderColor, selectMode); // FIXME: consider different series has items with the same name.\n\n\n itemGroup.on('click', curry(dispatchSelectAction, null, name, api, excludeSeriesId)) // Should not specify the series name, consider legend controls\n // more than one pie series.\n .on('mouseover', curry(dispatchHighlightAction, null, name, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, null, name, api, excludeSeriesId));\n legendDrawnMap.set(name, true);\n }\n }, this);\n }\n }, this);\n\n if (selector) {\n this._createSelector(selector, legendModel, api, orient, selectorPosition);\n }\n },\n _createSelector: function (selector, legendModel, api, orient, selectorPosition) {\n var selectorGroup = this.getSelectorGroup();\n each(selector, function (selectorItem) {\n createSelectorButton(selectorItem);\n });\n\n function createSelectorButton(selectorItem) {\n var type = selectorItem.type;\n var labelText = new graphic.Text({\n style: {\n x: 0,\n y: 0,\n align: 'center',\n verticalAlign: 'middle'\n },\n onclick: function () {\n api.dispatchAction({\n type: type === 'all' ? 'legendAllSelect' : 'legendInverseSelect'\n });\n }\n });\n selectorGroup.add(labelText);\n var labelModel = legendModel.getModel('selectorLabel');\n var emphasisLabelModel = legendModel.getModel('emphasis.selectorLabel');\n graphic.setLabelStyle(labelText.style, labelText.hoverStyle = {}, labelModel, emphasisLabelModel, {\n defaultText: selectorItem.title,\n isRectText: false\n });\n graphic.setHoverStyle(labelText);\n }\n },\n _createItem: function (name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, borderColor, selectMode) {\n var itemWidth = legendModel.get('itemWidth');\n var itemHeight = legendModel.get('itemHeight');\n var inactiveColor = legendModel.get('inactiveColor');\n var inactiveBorderColor = legendModel.get('inactiveBorderColor');\n var symbolKeepAspect = legendModel.get('symbolKeepAspect');\n var legendModelItemStyle = legendModel.getModel('itemStyle');\n var isSelected = legendModel.isSelected(name);\n var itemGroup = new Group();\n var textStyleModel = itemModel.getModel('textStyle');\n var itemIcon = itemModel.get('icon');\n var tooltipModel = itemModel.getModel('tooltip');\n var legendGlobalTooltipModel = tooltipModel.parentModel; // Use user given icon first\n\n legendSymbolType = itemIcon || legendSymbolType;\n var legendSymbol = createSymbol(legendSymbolType, 0, 0, itemWidth, itemHeight, isSelected ? color : inactiveColor, // symbolKeepAspect default true for legend\n symbolKeepAspect == null ? true : symbolKeepAspect);\n itemGroup.add(setSymbolStyle(legendSymbol, legendSymbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected)); // Compose symbols\n // PENDING\n\n if (!itemIcon && symbolType // At least show one symbol, can't be all none\n && (symbolType !== legendSymbolType || symbolType === 'none')) {\n var size = itemHeight * 0.8;\n\n if (symbolType === 'none') {\n symbolType = 'circle';\n }\n\n var legendSymbolCenter = createSymbol(symbolType, (itemWidth - size) / 2, (itemHeight - size) / 2, size, size, isSelected ? color : inactiveColor, // symbolKeepAspect default true for legend\n symbolKeepAspect == null ? true : symbolKeepAspect); // Put symbol in the center\n\n itemGroup.add(setSymbolStyle(legendSymbolCenter, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected));\n }\n\n var textX = itemAlign === 'left' ? itemWidth + 5 : -5;\n var textAlign = itemAlign;\n var formatter = legendModel.get('formatter');\n var content = name;\n\n if (typeof formatter === 'string' && formatter) {\n content = formatter.replace('{name}', name != null ? name : '');\n } else if (typeof formatter === 'function') {\n content = formatter(name);\n }\n\n itemGroup.add(new graphic.Text({\n style: graphic.setTextStyle({}, textStyleModel, {\n text: content,\n x: textX,\n y: itemHeight / 2,\n textFill: isSelected ? textStyleModel.getTextColor() : inactiveColor,\n textAlign: textAlign,\n textVerticalAlign: 'middle'\n })\n })); // Add a invisible rect to increase the area of mouse hover\n\n var hitRect = new graphic.Rect({\n shape: itemGroup.getBoundingRect(),\n invisible: true,\n tooltip: tooltipModel.get('show') ? zrUtil.extend({\n content: name,\n // Defaul formatter\n formatter: legendGlobalTooltipModel.get('formatter', true) || function () {\n return name;\n },\n formatterParams: {\n componentType: 'legend',\n legendIndex: legendModel.componentIndex,\n name: name,\n $vars: ['name']\n }\n }, tooltipModel.option) : null\n });\n itemGroup.add(hitRect);\n itemGroup.eachChild(function (child) {\n child.silent = true;\n });\n hitRect.silent = !selectMode;\n this.getContentGroup().add(itemGroup);\n graphic.setHoverStyle(itemGroup);\n itemGroup.__legendDataIndex = dataIndex;\n return itemGroup;\n },\n\n /**\n * @protected\n */\n layoutInner: function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\n var contentGroup = this.getContentGroup();\n var selectorGroup = this.getSelectorGroup(); // Place items in contentGroup.\n\n layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), maxSize.width, maxSize.height);\n var contentRect = contentGroup.getBoundingRect();\n var contentPos = [-contentRect.x, -contentRect.y];\n\n if (selector) {\n // Place buttons in selectorGroup\n layoutUtil.box( // Buttons in selectorGroup always layout horizontally\n 'horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\n var selectorRect = selectorGroup.getBoundingRect();\n var selectorPos = [-selectorRect.x, -selectorRect.y];\n var selectorButtonGap = legendModel.get('selectorButtonGap', true);\n var orientIdx = legendModel.getOrient().index;\n var wh = orientIdx === 0 ? 'width' : 'height';\n var hw = orientIdx === 0 ? 'height' : 'width';\n var yx = orientIdx === 0 ? 'y' : 'x';\n\n if (selectorPosition === 'end') {\n selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap;\n } else {\n contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap;\n } //Always align selector to content as 'middle'\n\n\n selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2;\n selectorGroup.attr('position', selectorPos);\n contentGroup.attr('position', contentPos);\n var mainRect = {\n x: 0,\n y: 0\n };\n mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh];\n mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]);\n mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]);\n return mainRect;\n } else {\n contentGroup.attr('position', contentPos);\n return this.group.getBoundingRect();\n }\n },\n\n /**\n * @protected\n */\n remove: function () {\n this.getContentGroup().removeAll();\n this._isFirstRender = true;\n }\n});\n\nfunction setSymbolStyle(symbol, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected) {\n var itemStyle;\n\n if (symbolType !== 'line' && symbolType.indexOf('empty') < 0) {\n itemStyle = legendModelItemStyle.getItemStyle();\n symbol.style.stroke = borderColor;\n\n if (!isSelected) {\n itemStyle.stroke = inactiveBorderColor;\n }\n } else {\n itemStyle = legendModelItemStyle.getItemStyle(['borderWidth', 'borderColor']);\n }\n\n return symbol.setStyle(itemStyle);\n}\n\nfunction dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) {\n // downplay before unselect\n dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId);\n api.dispatchAction({\n type: 'legendToggleSelect',\n name: seriesName != null ? seriesName : dataName\n }); // highlight after select\n\n dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId);\n}\n\nfunction dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) {\n // If element hover will move to a hoverLayer.\n var el = api.getZr().storage.getDisplayList()[0];\n\n if (!(el && el.useHoverLayer)) {\n api.dispatchAction({\n type: 'highlight',\n seriesName: seriesName,\n name: dataName,\n excludeSeriesId: excludeSeriesId\n });\n }\n}\n\nfunction dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) {\n // If element hover will move to a hoverLayer.\n var el = api.getZr().storage.getDisplayList()[0];\n\n if (!(el && el.useHoverLayer)) {\n api.dispatchAction({\n type: 'downplay',\n seriesName: seriesName,\n name: dataName,\n excludeSeriesId: excludeSeriesId\n });\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 LegendModel = require(\"./LegendModel\");\n\nvar _layout = require(\"../../util/layout\");\n\nvar mergeLayoutParam = _layout.mergeLayoutParam;\nvar getLayoutParams = _layout.getLayoutParams;\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 ScrollableLegendModel = LegendModel.extend({\n type: 'legend.scroll',\n\n /**\n * @param {number} scrollDataIndex\n */\n setScrollDataIndex: function (scrollDataIndex) {\n this.option.scrollDataIndex = scrollDataIndex;\n },\n defaultOption: {\n scrollDataIndex: 0,\n pageButtonItemGap: 5,\n pageButtonGap: null,\n pageButtonPosition: 'end',\n // 'start' or 'end'\n pageFormatter: '{current}/{total}',\n // If null/undefined, do not show page.\n pageIcons: {\n horizontal: ['M0,0L12,-10L12,10z', 'M0,0L-12,-10L-12,10z'],\n vertical: ['M0,0L20,0L10,-20z', 'M0,0L20,0L10,20z']\n },\n pageIconColor: '#2f4554',\n pageIconInactiveColor: '#aaa',\n pageIconSize: 15,\n // Can be [10, 3], which represents [width, height]\n pageTextStyle: {\n color: '#333'\n },\n animationDurationUpdate: 800\n },\n\n /**\n * @override\n */\n init: function (option, parentModel, ecModel, extraOpt) {\n var inputPositionParams = getLayoutParams(option);\n ScrollableLegendModel.superCall(this, 'init', option, parentModel, ecModel, extraOpt);\n mergeAndNormalizeLayoutParams(this, option, inputPositionParams);\n },\n\n /**\n * @override\n */\n mergeOption: function (option, extraOpt) {\n ScrollableLegendModel.superCall(this, 'mergeOption', option, extraOpt);\n mergeAndNormalizeLayoutParams(this, this.option, option);\n }\n}); // Do not `ignoreSize` to enable setting {left: 10, right: 10}.\n\nfunction mergeAndNormalizeLayoutParams(legendModel, target, raw) {\n var orient = legendModel.getOrient();\n var ignoreSize = [1, 1];\n ignoreSize[orient.index] = 0;\n mergeLayoutParam(target, raw, {\n type: 'box',\n ignoreSize: ignoreSize\n });\n}\n\nvar _default = ScrollableLegendModel;\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 graphic = require(\"../../util/graphic\");\n\nvar layoutUtil = require(\"../../util/layout\");\n\nvar LegendView = require(\"./LegendView\");\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 * Separate legend and scrollable legend to reduce package size.\n */\nvar Group = graphic.Group;\nvar WH = ['width', 'height'];\nvar XY = ['x', 'y'];\nvar ScrollableLegendView = LegendView.extend({\n type: 'legend.scroll',\n newlineDisabled: true,\n init: function () {\n ScrollableLegendView.superCall(this, 'init');\n /**\n * @private\n * @type {number} For `scroll`.\n */\n\n this._currentIndex = 0;\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n\n this.group.add(this._containerGroup = new Group());\n\n this._containerGroup.add(this.getContentGroup());\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n\n\n this.group.add(this._controllerGroup = new Group());\n /**\n *\n * @private\n */\n\n this._showController;\n },\n\n /**\n * @override\n */\n resetInner: function () {\n ScrollableLegendView.superCall(this, 'resetInner');\n\n this._controllerGroup.removeAll();\n\n this._containerGroup.removeClipPath();\n\n this._containerGroup.__rectSize = null;\n },\n\n /**\n * @override\n */\n renderInner: function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\n var me = this; // Render content items.\n\n ScrollableLegendView.superCall(this, 'renderInner', itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition);\n var controllerGroup = this._controllerGroup; // FIXME: support be 'auto' adapt to size number text length,\n // e.g., '3/12345' should not overlap with the control arrow button.\n\n var pageIconSize = legendModel.get('pageIconSize', true);\n\n if (!zrUtil.isArray(pageIconSize)) {\n pageIconSize = [pageIconSize, pageIconSize];\n }\n\n createPageButton('pagePrev', 0);\n var pageTextStyleModel = legendModel.getModel('pageTextStyle');\n controllerGroup.add(new graphic.Text({\n name: 'pageText',\n style: {\n textFill: pageTextStyleModel.getTextColor(),\n font: pageTextStyleModel.getFont(),\n textVerticalAlign: 'middle',\n textAlign: 'center'\n },\n silent: true\n }));\n createPageButton('pageNext', 1);\n\n function createPageButton(name, iconIdx) {\n var pageDataIndexName = name + 'DataIndex';\n var icon = graphic.createIcon(legendModel.get('pageIcons', true)[legendModel.getOrient().name][iconIdx], {\n // Buttons will be created in each render, so we do not need\n // to worry about avoiding using legendModel kept in scope.\n onclick: zrUtil.bind(me._pageGo, me, pageDataIndexName, legendModel, api)\n }, {\n x: -pageIconSize[0] / 2,\n y: -pageIconSize[1] / 2,\n width: pageIconSize[0],\n height: pageIconSize[1]\n });\n icon.name = name;\n controllerGroup.add(icon);\n }\n },\n\n /**\n * @override\n */\n layoutInner: function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\n var selectorGroup = this.getSelectorGroup();\n var orientIdx = legendModel.getOrient().index;\n var wh = WH[orientIdx];\n var xy = XY[orientIdx];\n var hw = WH[1 - orientIdx];\n var yx = XY[1 - orientIdx];\n selector && layoutUtil.box( // Buttons in selectorGroup always layout horizontally\n 'horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\n var selectorButtonGap = legendModel.get('selectorButtonGap', true);\n var selectorRect = selectorGroup.getBoundingRect();\n var selectorPos = [-selectorRect.x, -selectorRect.y];\n var processMaxSize = zrUtil.clone(maxSize);\n selector && (processMaxSize[wh] = maxSize[wh] - selectorRect[wh] - selectorButtonGap);\n\n var mainRect = this._layoutContentAndController(legendModel, isFirstRender, processMaxSize, orientIdx, wh, hw, yx);\n\n if (selector) {\n if (selectorPosition === 'end') {\n selectorPos[orientIdx] += mainRect[wh] + selectorButtonGap;\n } else {\n var offset = selectorRect[wh] + selectorButtonGap;\n selectorPos[orientIdx] -= offset;\n mainRect[xy] -= offset;\n }\n\n mainRect[wh] += selectorRect[wh] + selectorButtonGap;\n selectorPos[1 - orientIdx] += mainRect[yx] + mainRect[hw] / 2 - selectorRect[hw] / 2;\n mainRect[hw] = Math.max(mainRect[hw], selectorRect[hw]);\n mainRect[yx] = Math.min(mainRect[yx], selectorRect[yx] + selectorPos[1 - orientIdx]);\n selectorGroup.attr('position', selectorPos);\n }\n\n return mainRect;\n },\n _layoutContentAndController: function (legendModel, isFirstRender, maxSize, orientIdx, wh, hw, yx) {\n var contentGroup = this.getContentGroup();\n var containerGroup = this._containerGroup;\n var controllerGroup = this._controllerGroup; // Place items in contentGroup.\n\n layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), !orientIdx ? null : maxSize.width, orientIdx ? null : maxSize.height);\n layoutUtil.box( // Buttons in controller are layout always horizontally.\n 'horizontal', controllerGroup, legendModel.get('pageButtonItemGap', true));\n var contentRect = contentGroup.getBoundingRect();\n var controllerRect = controllerGroup.getBoundingRect();\n var showController = this._showController = contentRect[wh] > maxSize[wh];\n var contentPos = [-contentRect.x, -contentRect.y]; // Remain contentPos when scroll animation perfroming.\n // If first rendering, `contentGroup.position` is [0, 0], which\n // does not make sense and may cause unexepcted animation if adopted.\n\n if (!isFirstRender) {\n contentPos[orientIdx] = contentGroup.position[orientIdx];\n } // Layout container group based on 0.\n\n\n var containerPos = [0, 0];\n var controllerPos = [-controllerRect.x, -controllerRect.y];\n var pageButtonGap = zrUtil.retrieve2(legendModel.get('pageButtonGap', true), legendModel.get('itemGap', true)); // Place containerGroup and controllerGroup and contentGroup.\n\n if (showController) {\n var pageButtonPosition = legendModel.get('pageButtonPosition', true); // controller is on the right / bottom.\n\n if (pageButtonPosition === 'end') {\n controllerPos[orientIdx] += maxSize[wh] - controllerRect[wh];\n } // controller is on the left / top.\n else {\n containerPos[orientIdx] += controllerRect[wh] + pageButtonGap;\n }\n } // Always align controller to content as 'middle'.\n\n\n controllerPos[1 - orientIdx] += contentRect[hw] / 2 - controllerRect[hw] / 2;\n contentGroup.attr('position', contentPos);\n containerGroup.attr('position', containerPos);\n controllerGroup.attr('position', controllerPos); // Calculate `mainRect` and set `clipPath`.\n // mainRect should not be calculated by `this.group.getBoundingRect()`\n // for sake of the overflow.\n\n var mainRect = {\n x: 0,\n y: 0\n }; // Consider content may be overflow (should be clipped).\n\n mainRect[wh] = showController ? maxSize[wh] : contentRect[wh];\n mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw]); // `containerRect[yx] + containerPos[1 - orientIdx]` is 0.\n\n mainRect[yx] = Math.min(0, controllerRect[yx] + controllerPos[1 - orientIdx]);\n containerGroup.__rectSize = maxSize[wh];\n\n if (showController) {\n var clipShape = {\n x: 0,\n y: 0\n };\n clipShape[wh] = Math.max(maxSize[wh] - controllerRect[wh] - pageButtonGap, 0);\n clipShape[hw] = mainRect[hw];\n containerGroup.setClipPath(new graphic.Rect({\n shape: clipShape\n })); // Consider content may be larger than container, container rect\n // can not be obtained from `containerGroup.getBoundingRect()`.\n\n containerGroup.__rectSize = clipShape[wh];\n } else {\n // Do not remove or ignore controller. Keep them set as placeholders.\n controllerGroup.eachChild(function (child) {\n child.attr({\n invisible: true,\n silent: true\n });\n });\n } // Content translate animation.\n\n\n var pageInfo = this._getPageInfo(legendModel);\n\n pageInfo.pageIndex != null && graphic.updateProps(contentGroup, {\n position: pageInfo.contentPosition\n }, // When switch from \"show controller\" to \"not show controller\", view should be\n // updated immediately without animation, otherwise causes weird effect.\n showController ? legendModel : false);\n\n this._updatePageInfoView(legendModel, pageInfo);\n\n return mainRect;\n },\n _pageGo: function (to, legendModel, api) {\n var scrollDataIndex = this._getPageInfo(legendModel)[to];\n\n scrollDataIndex != null && api.dispatchAction({\n type: 'legendScroll',\n scrollDataIndex: scrollDataIndex,\n legendId: legendModel.id\n });\n },\n _updatePageInfoView: function (legendModel, pageInfo) {\n var controllerGroup = this._controllerGroup;\n zrUtil.each(['pagePrev', 'pageNext'], function (name) {\n var canJump = pageInfo[name + 'DataIndex'] != null;\n var icon = controllerGroup.childOfName(name);\n\n if (icon) {\n icon.setStyle('fill', canJump ? legendModel.get('pageIconColor', true) : legendModel.get('pageIconInactiveColor', true));\n icon.cursor = canJump ? 'pointer' : 'default';\n }\n });\n var pageText = controllerGroup.childOfName('pageText');\n var pageFormatter = legendModel.get('pageFormatter');\n var pageIndex = pageInfo.pageIndex;\n var current = pageIndex != null ? pageIndex + 1 : 0;\n var total = pageInfo.pageCount;\n pageText && pageFormatter && pageText.setStyle('text', zrUtil.isString(pageFormatter) ? pageFormatter.replace('{current}', current).replace('{total}', total) : pageFormatter({\n current: current,\n total: total\n }));\n },\n\n /**\n * @param {module:echarts/model/Model} legendModel\n * @return {Object} {\n * contentPosition: Array., null when data item not found.\n * pageIndex: number, null when data item not found.\n * pageCount: number, always be a number, can be 0.\n * pagePrevDataIndex: number, null when no previous page.\n * pageNextDataIndex: number, null when no next page.\n * }\n */\n _getPageInfo: function (legendModel) {\n var scrollDataIndex = legendModel.get('scrollDataIndex', true);\n var contentGroup = this.getContentGroup();\n var containerRectSize = this._containerGroup.__rectSize;\n var orientIdx = legendModel.getOrient().index;\n var wh = WH[orientIdx];\n var xy = XY[orientIdx];\n\n var targetItemIndex = this._findTargetItemIndex(scrollDataIndex);\n\n var children = contentGroup.children();\n var targetItem = children[targetItemIndex];\n var itemCount = children.length;\n var pCount = !itemCount ? 0 : 1;\n var result = {\n contentPosition: contentGroup.position.slice(),\n pageCount: pCount,\n pageIndex: pCount - 1,\n pagePrevDataIndex: null,\n pageNextDataIndex: null\n };\n\n if (!targetItem) {\n return result;\n }\n\n var targetItemInfo = getItemInfo(targetItem);\n result.contentPosition[orientIdx] = -targetItemInfo.s; // Strategy:\n // (1) Always align based on the left/top most item.\n // (2) It is user-friendly that the last item shown in the\n // current window is shown at the begining of next window.\n // Otherwise if half of the last item is cut by the window,\n // it will have no chance to display entirely.\n // (3) Consider that item size probably be different, we\n // have calculate pageIndex by size rather than item index,\n // and we can not get page index directly by division.\n // (4) The window is to narrow to contain more than\n // one item, we should make sure that the page can be fliped.\n\n for (var i = targetItemIndex + 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i <= itemCount; ++i) {\n currItemInfo = getItemInfo(children[i]);\n\n if ( // Half of the last item is out of the window.\n !currItemInfo && winEndItemInfo.e > winStartItemInfo.s + containerRectSize || // If the current item does not intersect with the window, the new page\n // can be started at the current item or the last item.\n currItemInfo && !intersect(currItemInfo, winStartItemInfo.s)) {\n if (winEndItemInfo.i > winStartItemInfo.i) {\n winStartItemInfo = winEndItemInfo;\n } else {\n // e.g., when page size is smaller than item size.\n winStartItemInfo = currItemInfo;\n }\n\n if (winStartItemInfo) {\n if (result.pageNextDataIndex == null) {\n result.pageNextDataIndex = winStartItemInfo.i;\n }\n\n ++result.pageCount;\n }\n }\n\n winEndItemInfo = currItemInfo;\n }\n\n for (var i = targetItemIndex - 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i >= -1; --i) {\n currItemInfo = getItemInfo(children[i]);\n\n if ( // If the the end item does not intersect with the window started\n // from the current item, a page can be settled.\n (!currItemInfo || !intersect(winEndItemInfo, currItemInfo.s)) && // e.g., when page size is smaller than item size.\n winStartItemInfo.i < winEndItemInfo.i) {\n winEndItemInfo = winStartItemInfo;\n\n if (result.pagePrevDataIndex == null) {\n result.pagePrevDataIndex = winStartItemInfo.i;\n }\n\n ++result.pageCount;\n ++result.pageIndex;\n }\n\n winStartItemInfo = currItemInfo;\n }\n\n return result;\n\n function getItemInfo(el) {\n if (el) {\n var itemRect = el.getBoundingRect();\n var start = itemRect[xy] + el.position[orientIdx];\n return {\n s: start,\n e: start + itemRect[wh],\n i: el.__legendDataIndex\n };\n }\n }\n\n function intersect(itemInfo, winStart) {\n return itemInfo.e >= winStart && itemInfo.s <= winStart + containerRectSize;\n }\n },\n _findTargetItemIndex: function (targetDataIndex) {\n if (!this._showController) {\n return 0;\n }\n\n var index;\n var contentGroup = this.getContentGroup();\n var defaultIndex;\n contentGroup.eachChild(function (child, idx) {\n var legendDataIdx = child.__legendDataIndex; // FIXME\n // If the given targetDataIndex (from model) is illegal,\n // we use defaultIndex. But the index on the legend model and\n // action payload is still illegal. That case will not be\n // changed until some scenario requires.\n\n if (defaultIndex == null && legendDataIdx != null) {\n defaultIndex = idx;\n }\n\n if (legendDataIdx === targetDataIndex) {\n index = idx;\n }\n });\n return index != null ? index : defaultIndex;\n }\n});\nvar _default = ScrollableLegendView;\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\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 legendSelectActionHandler(methodName, payload, ecModel) {\n var selectedMap = {};\n var isToggleSelect = methodName === 'toggleSelected';\n var isSelected; // Update all legend components\n\n ecModel.eachComponent('legend', function (legendModel) {\n if (isToggleSelect && isSelected != null) {\n // Force other legend has same selected status\n // Or the first is toggled to true and other are toggled to false\n // In the case one legend has some item unSelected in option. And if other legend\n // doesn't has the item, they will assume it is selected.\n legendModel[isSelected ? 'select' : 'unSelect'](payload.name);\n } else if (methodName === 'allSelect' || methodName === 'inverseSelect') {\n legendModel[methodName]();\n } else {\n legendModel[methodName](payload.name);\n isSelected = legendModel.isSelected(payload.name);\n }\n\n var legendData = legendModel.getData();\n zrUtil.each(legendData, function (model) {\n var name = model.get('name'); // Wrap element\n\n if (name === '\\n' || name === '') {\n return;\n }\n\n var isItemSelected = legendModel.isSelected(name);\n\n if (selectedMap.hasOwnProperty(name)) {\n // Unselected if any legend is unselected\n selectedMap[name] = selectedMap[name] && isItemSelected;\n } else {\n selectedMap[name] = isItemSelected;\n }\n });\n }); // Return the event explicitly\n\n return methodName === 'allSelect' || methodName === 'inverseSelect' ? {\n selected: selectedMap\n } : {\n name: payload.name,\n selected: selectedMap\n };\n}\n/**\n * @event legendToggleSelect\n * @type {Object}\n * @property {string} type 'legendToggleSelect'\n * @property {string} [from]\n * @property {string} name Series name or data item name\n */\n\n\necharts.registerAction('legendToggleSelect', 'legendselectchanged', zrUtil.curry(legendSelectActionHandler, 'toggleSelected'));\necharts.registerAction('legendAllSelect', 'legendselectall', zrUtil.curry(legendSelectActionHandler, 'allSelect'));\necharts.registerAction('legendInverseSelect', 'legendinverseselect', zrUtil.curry(legendSelectActionHandler, 'inverseSelect'));\n/**\n * @event legendSelect\n * @type {Object}\n * @property {string} type 'legendSelect'\n * @property {string} name Series name or data item name\n */\n\necharts.registerAction('legendSelect', 'legendselected', zrUtil.curry(legendSelectActionHandler, 'select'));\n/**\n * @event legendUnSelect\n * @type {Object}\n * @property {string} type 'legendUnSelect'\n * @property {string} name Series name or data item name\n */\n\necharts.registerAction('legendUnSelect', 'legendunselected', zrUtil.curry(legendSelectActionHandler, 'unSelect'));","\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* 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(ecModel) {\n var legendModels = ecModel.findComponents({\n mainType: 'legend'\n });\n\n if (legendModels && legendModels.length) {\n ecModel.filterSeries(function (series) {\n // If in any legend component the status is not selected.\n // Because in legend series is assumed selected when it is not in the legend data.\n for (var i = 0; i < legendModels.length; i++) {\n if (!legendModels[i].isSelected(series.name)) {\n return false;\n }\n }\n\n return true;\n });\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 * @event legendScroll\n * @type {Object}\n * @property {string} type 'legendScroll'\n * @property {string} scrollDataIndex\n */\necharts.registerAction('legendScroll', 'legendscroll', function (payload, ecModel) {\n var scrollDataIndex = payload.scrollDataIndex;\n scrollDataIndex != null && ecModel.eachComponent({\n mainType: 'legend',\n subType: 'scroll',\n query: payload\n }, function (legendModel) {\n legendModel.setScrollDataIndex(scrollDataIndex);\n });\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nrequire(\"./marker/MarkAreaModel\");\n\nrequire(\"./marker/MarkAreaView\");\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*/\necharts.registerPreprocessor(function (opt) {\n // Make sure markArea component is enabled\n opt.markArea = opt.markArea || {};\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\nvar echarts = require(\"../echarts\");\n\nrequire(\"./marker/MarkLineModel\");\n\nrequire(\"./marker/MarkLineView\");\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*/\necharts.registerPreprocessor(function (opt) {\n // Make sure markLine component is enabled\n opt.markLine = opt.markLine || {};\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\nvar echarts = require(\"../echarts\");\n\nrequire(\"./marker/MarkPointModel\");\n\nrequire(\"./marker/MarkPointView\");\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// HINT Markpoint can't be used too much\necharts.registerPreprocessor(function (opt) {\n // Make sure markPoint component is enabled\n opt.markPoint = opt.markPoint || {};\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\nvar MarkerModel = require(\"./MarkerModel\");\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 _default = MarkerModel.extend({\n type: 'markArea',\n defaultOption: {\n zlevel: 0,\n // PENDING\n z: 1,\n tooltip: {\n trigger: 'item'\n },\n // markArea should fixed on the coordinate system\n animation: false,\n label: {\n show: true,\n position: 'top'\n },\n itemStyle: {\n // color and borderColor default to use color from series\n // color: 'auto'\n // borderColor: 'auto'\n borderWidth: 0\n },\n emphasis: {\n label: {\n show: true,\n position: 'top'\n }\n }\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar colorUtil = require(\"zrender/lib/tool/color\");\n\nvar List = require(\"../../data/List\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar markerHelper = require(\"./markerHelper\");\n\nvar MarkerView = require(\"./MarkerView\");\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 Better on polar\nvar markAreaTransform = function (seriesModel, coordSys, maModel, item) {\n var lt = markerHelper.dataTransform(seriesModel, item[0]);\n var rb = markerHelper.dataTransform(seriesModel, item[1]);\n var retrieve = zrUtil.retrieve; // FIXME make sure lt is less than rb\n\n var ltCoord = lt.coord;\n var rbCoord = rb.coord;\n ltCoord[0] = retrieve(ltCoord[0], -Infinity);\n ltCoord[1] = retrieve(ltCoord[1], -Infinity);\n rbCoord[0] = retrieve(rbCoord[0], Infinity);\n rbCoord[1] = retrieve(rbCoord[1], Infinity); // Merge option into one\n\n var result = zrUtil.mergeAll([{}, lt, rb]);\n result.coord = [lt.coord, rb.coord];\n result.x0 = lt.x;\n result.y0 = lt.y;\n result.x1 = rb.x;\n result.y1 = rb.y;\n return result;\n};\n\nfunction isInifinity(val) {\n return !isNaN(val) && !isFinite(val);\n} // If a markArea has one dim\n\n\nfunction ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\n var otherDimIndex = 1 - dimIndex;\n return isInifinity(fromCoord[otherDimIndex]) && isInifinity(toCoord[otherDimIndex]);\n}\n\nfunction markAreaFilter(coordSys, item) {\n var fromCoord = item.coord[0];\n var toCoord = item.coord[1];\n\n if (coordSys.type === 'cartesian2d') {\n // In case\n // {\n // markArea: {\n // data: [{ yAxis: 2 }]\n // }\n // }\n if (fromCoord && toCoord && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) {\n return true;\n }\n }\n\n return markerHelper.dataFilter(coordSys, {\n coord: fromCoord,\n x: item.x0,\n y: item.y0\n }) || markerHelper.dataFilter(coordSys, {\n coord: toCoord,\n x: item.x1,\n y: item.y1\n });\n} // dims can be ['x0', 'y0'], ['x1', 'y1'], ['x0', 'y1'], ['x1', 'y0']\n\n\nfunction getSingleMarkerEndPoint(data, idx, dims, seriesModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var itemModel = data.getItemModel(idx);\n var point;\n var xPx = numberUtil.parsePercent(itemModel.get(dims[0]), api.getWidth());\n var yPx = numberUtil.parsePercent(itemModel.get(dims[1]), api.getHeight());\n\n if (!isNaN(xPx) && !isNaN(yPx)) {\n point = [xPx, yPx];\n } else {\n // Chart like bar may have there own marker positioning logic\n if (seriesModel.getMarkerPosition) {\n // Use the getMarkerPoisition\n point = seriesModel.getMarkerPosition(data.getValues(dims, idx));\n } else {\n var x = data.get(dims[0], idx);\n var y = data.get(dims[1], idx);\n var pt = [x, y];\n coordSys.clampData && coordSys.clampData(pt, pt);\n point = coordSys.dataToPoint(pt, true);\n }\n\n if (coordSys.type === 'cartesian2d') {\n var xAxis = coordSys.getAxis('x');\n var yAxis = coordSys.getAxis('y');\n var x = data.get(dims[0], idx);\n var y = data.get(dims[1], idx);\n\n if (isInifinity(x)) {\n point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[dims[0] === 'x0' ? 0 : 1]);\n } else if (isInifinity(y)) {\n point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[dims[1] === 'y0' ? 0 : 1]);\n }\n } // Use x, y if has any\n\n\n if (!isNaN(xPx)) {\n point[0] = xPx;\n }\n\n if (!isNaN(yPx)) {\n point[1] = yPx;\n }\n }\n\n return point;\n}\n\nvar dimPermutations = [['x0', 'y0'], ['x1', 'y0'], ['x1', 'y1'], ['x0', 'y1']];\nMarkerView.extend({\n type: 'markArea',\n // updateLayout: function (markAreaModel, ecModel, api) {\n // ecModel.eachSeries(function (seriesModel) {\n // var maModel = seriesModel.markAreaModel;\n // if (maModel) {\n // var areaData = maModel.getData();\n // areaData.each(function (idx) {\n // var points = zrUtil.map(dimPermutations, function (dim) {\n // return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);\n // });\n // // Layout\n // areaData.setItemLayout(idx, points);\n // var el = areaData.getItemGraphicEl(idx);\n // el.setShape('points', points);\n // });\n // }\n // }, this);\n // },\n updateTransform: function (markAreaModel, ecModel, api) {\n ecModel.eachSeries(function (seriesModel) {\n var maModel = seriesModel.markAreaModel;\n\n if (maModel) {\n var areaData = maModel.getData();\n areaData.each(function (idx) {\n var points = zrUtil.map(dimPermutations, function (dim) {\n return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);\n }); // Layout\n\n areaData.setItemLayout(idx, points);\n var el = areaData.getItemGraphicEl(idx);\n el.setShape('points', points);\n });\n }\n }, this);\n },\n renderSeries: function (seriesModel, maModel, ecModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var seriesId = seriesModel.id;\n var seriesData = seriesModel.getData();\n var areaGroupMap = this.markerGroupMap;\n var polygonGroup = areaGroupMap.get(seriesId) || areaGroupMap.set(seriesId, {\n group: new graphic.Group()\n });\n this.group.add(polygonGroup.group);\n polygonGroup.__keep = true;\n var areaData = createList(coordSys, seriesModel, maModel); // Line data for tooltip and formatter\n\n maModel.setData(areaData); // Update visual and layout of line\n\n areaData.each(function (idx) {\n // Layout\n var points = zrUtil.map(dimPermutations, function (dim) {\n return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);\n }); // If none of the area is inside coordSys, allClipped is set to be true\n // in layout so that label will not be displayed. See #12591\n\n var allClipped = true;\n zrUtil.each(dimPermutations, function (dim) {\n if (!allClipped) {\n return;\n }\n\n var xValue = areaData.get(dim[0], idx);\n var yValue = areaData.get(dim[1], idx); // If is infinity, the axis should be considered not clipped\n\n if ((isInifinity(xValue) || coordSys.getAxis('x').containData(xValue)) && (isInifinity(yValue) || coordSys.getAxis('y').containData(yValue))) {\n allClipped = false;\n }\n });\n areaData.setItemLayout(idx, {\n points: points,\n allClipped: allClipped\n }); // Visual\n\n areaData.setItemVisual(idx, {\n color: seriesData.getVisual('color')\n });\n });\n areaData.diff(polygonGroup.__data).add(function (idx) {\n var layout = areaData.getItemLayout(idx);\n\n if (!layout.allClipped) {\n var polygon = new graphic.Polygon({\n shape: {\n points: layout.points\n }\n });\n areaData.setItemGraphicEl(idx, polygon);\n polygonGroup.group.add(polygon);\n }\n }).update(function (newIdx, oldIdx) {\n var polygon = polygonGroup.__data.getItemGraphicEl(oldIdx);\n\n var layout = areaData.getItemLayout(newIdx);\n\n if (!layout.allClipped) {\n if (polygon) {\n graphic.updateProps(polygon, {\n shape: {\n points: layout.points\n }\n }, maModel, newIdx);\n } else {\n polygon = new graphic.Polygon({\n shape: {\n points: layout.points\n }\n });\n }\n\n areaData.setItemGraphicEl(newIdx, polygon);\n polygonGroup.group.add(polygon);\n } else if (polygon) {\n polygonGroup.group.remove(polygon);\n }\n }).remove(function (idx) {\n var polygon = polygonGroup.__data.getItemGraphicEl(idx);\n\n polygonGroup.group.remove(polygon);\n }).execute();\n areaData.eachItemGraphicEl(function (polygon, idx) {\n var itemModel = areaData.getItemModel(idx);\n var labelModel = itemModel.getModel('label');\n var labelHoverModel = itemModel.getModel('emphasis.label');\n var color = areaData.getItemVisual(idx, 'color');\n polygon.useStyle(zrUtil.defaults(itemModel.getModel('itemStyle').getItemStyle(), {\n fill: colorUtil.modifyAlpha(color, 0.4),\n stroke: color\n }));\n polygon.hoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n graphic.setLabelStyle(polygon.style, polygon.hoverStyle, labelModel, labelHoverModel, {\n labelFetcher: maModel,\n labelDataIndex: idx,\n defaultText: areaData.getName(idx) || '',\n isRectText: true,\n autoColor: color\n });\n graphic.setHoverStyle(polygon, {});\n polygon.dataModel = maModel;\n });\n polygonGroup.__data = areaData;\n polygonGroup.group.silent = maModel.get('silent') || seriesModel.get('silent');\n }\n});\n/**\n * @inner\n * @param {module:echarts/coord/*} coordSys\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Model} mpModel\n */\n\nfunction createList(coordSys, seriesModel, maModel) {\n var coordDimsInfos;\n var areaData;\n var dims = ['x0', 'y0', 'x1', 'y1'];\n\n if (coordSys) {\n coordDimsInfos = zrUtil.map(coordSys && coordSys.dimensions, function (coordDim) {\n var data = seriesModel.getData();\n var info = data.getDimensionInfo(data.mapDimension(coordDim)) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys\n\n return zrUtil.defaults({\n name: coordDim\n }, info);\n });\n areaData = new List(zrUtil.map(dims, function (dim, idx) {\n return {\n name: dim,\n type: coordDimsInfos[idx % 2].type\n };\n }), maModel);\n } else {\n coordDimsInfos = [{\n name: 'value',\n type: 'float'\n }];\n areaData = new List(coordDimsInfos, maModel);\n }\n\n var optData = zrUtil.map(maModel.get('data'), zrUtil.curry(markAreaTransform, seriesModel, coordSys, maModel));\n\n if (coordSys) {\n optData = zrUtil.filter(optData, zrUtil.curry(markAreaFilter, coordSys));\n }\n\n var dimValueGetter = coordSys ? function (item, dimName, dataIndex, dimIndex) {\n return item.coord[Math.floor(dimIndex / 2)][dimIndex % 2];\n } : function (item) {\n return item.value;\n };\n areaData.initData(optData, null, dimValueGetter);\n areaData.hasItemOption = true;\n return areaData;\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\nvar MarkerModel = require(\"./MarkerModel\");\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 _default = MarkerModel.extend({\n type: 'markLine',\n defaultOption: {\n zlevel: 0,\n z: 5,\n symbol: ['circle', 'arrow'],\n symbolSize: [8, 16],\n //symbolRotate: 0,\n precision: 2,\n tooltip: {\n trigger: 'item'\n },\n label: {\n show: true,\n position: 'end',\n distance: 5\n },\n lineStyle: {\n type: 'dashed'\n },\n emphasis: {\n label: {\n show: true\n },\n lineStyle: {\n width: 3\n }\n },\n animationEasing: 'linear'\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar List = require(\"../../data/List\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar markerHelper = require(\"./markerHelper\");\n\nvar LineDraw = require(\"../../chart/helper/LineDraw\");\n\nvar MarkerView = require(\"./MarkerView\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\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 markLineTransform = function (seriesModel, coordSys, mlModel, item) {\n var data = seriesModel.getData(); // Special type markLine like 'min', 'max', 'average', 'median'\n\n var mlType = item.type;\n\n if (!zrUtil.isArray(item) && (mlType === 'min' || mlType === 'max' || mlType === 'average' || mlType === 'median' // In case\n // data: [{\n // yAxis: 10\n // }]\n || item.xAxis != null || item.yAxis != null)) {\n var valueAxis;\n var value;\n\n if (item.yAxis != null || item.xAxis != null) {\n valueAxis = coordSys.getAxis(item.yAxis != null ? 'y' : 'x');\n value = zrUtil.retrieve(item.yAxis, item.xAxis);\n } else {\n var axisInfo = markerHelper.getAxisInfo(item, data, coordSys, seriesModel);\n valueAxis = axisInfo.valueAxis;\n var valueDataDim = getStackedDimension(data, axisInfo.valueDataDim);\n value = markerHelper.numCalculate(data, valueDataDim, mlType);\n }\n\n var valueIndex = valueAxis.dim === 'x' ? 0 : 1;\n var baseIndex = 1 - valueIndex;\n var mlFrom = zrUtil.clone(item);\n var mlTo = {};\n mlFrom.type = null;\n mlFrom.coord = [];\n mlTo.coord = [];\n mlFrom.coord[baseIndex] = -Infinity;\n mlTo.coord[baseIndex] = Infinity;\n var precision = mlModel.get('precision');\n\n if (precision >= 0 && typeof value === 'number') {\n value = +value.toFixed(Math.min(precision, 20));\n }\n\n mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value;\n item = [mlFrom, mlTo, {\n // Extra option for tooltip and label\n type: mlType,\n valueIndex: item.valueIndex,\n // Force to use the value of calculated value.\n value: value\n }];\n }\n\n item = [markerHelper.dataTransform(seriesModel, item[0]), markerHelper.dataTransform(seriesModel, item[1]), zrUtil.extend({}, item[2])]; // Avoid line data type is extended by from(to) data type\n\n item[2].type = item[2].type || ''; // Merge from option and to option into line option\n\n zrUtil.merge(item[2], item[0]);\n zrUtil.merge(item[2], item[1]);\n return item;\n};\n\nfunction isInifinity(val) {\n return !isNaN(val) && !isFinite(val);\n} // If a markLine has one dim\n\n\nfunction ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\n var otherDimIndex = 1 - dimIndex;\n var dimName = coordSys.dimensions[dimIndex];\n return isInifinity(fromCoord[otherDimIndex]) && isInifinity(toCoord[otherDimIndex]) && fromCoord[dimIndex] === toCoord[dimIndex] && coordSys.getAxis(dimName).containData(fromCoord[dimIndex]);\n}\n\nfunction markLineFilter(coordSys, item) {\n if (coordSys.type === 'cartesian2d') {\n var fromCoord = item[0].coord;\n var toCoord = item[1].coord; // In case\n // {\n // markLine: {\n // data: [{ yAxis: 2 }]\n // }\n // }\n\n if (fromCoord && toCoord && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) {\n return true;\n }\n }\n\n return markerHelper.dataFilter(coordSys, item[0]) && markerHelper.dataFilter(coordSys, item[1]);\n}\n\nfunction updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var itemModel = data.getItemModel(idx);\n var point;\n var xPx = numberUtil.parsePercent(itemModel.get('x'), api.getWidth());\n var yPx = numberUtil.parsePercent(itemModel.get('y'), api.getHeight());\n\n if (!isNaN(xPx) && !isNaN(yPx)) {\n point = [xPx, yPx];\n } else {\n // Chart like bar may have there own marker positioning logic\n if (seriesModel.getMarkerPosition) {\n // Use the getMarkerPoisition\n point = seriesModel.getMarkerPosition(data.getValues(data.dimensions, idx));\n } else {\n var dims = coordSys.dimensions;\n var x = data.get(dims[0], idx);\n var y = data.get(dims[1], idx);\n point = coordSys.dataToPoint([x, y]);\n } // Expand line to the edge of grid if value on one axis is Inifnity\n // In case\n // markLine: {\n // data: [{\n // yAxis: 2\n // // or\n // type: 'average'\n // }]\n // }\n\n\n if (coordSys.type === 'cartesian2d') {\n var xAxis = coordSys.getAxis('x');\n var yAxis = coordSys.getAxis('y');\n var dims = coordSys.dimensions;\n\n if (isInifinity(data.get(dims[0], idx))) {\n point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1]);\n } else if (isInifinity(data.get(dims[1], idx))) {\n point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1]);\n }\n } // Use x, y if has any\n\n\n if (!isNaN(xPx)) {\n point[0] = xPx;\n }\n\n if (!isNaN(yPx)) {\n point[1] = yPx;\n }\n }\n\n data.setItemLayout(idx, point);\n}\n\nvar _default = MarkerView.extend({\n type: 'markLine',\n // updateLayout: function (markLineModel, ecModel, api) {\n // ecModel.eachSeries(function (seriesModel) {\n // var mlModel = seriesModel.markLineModel;\n // if (mlModel) {\n // var mlData = mlModel.getData();\n // var fromData = mlModel.__from;\n // var toData = mlModel.__to;\n // // Update visual and layout of from symbol and to symbol\n // fromData.each(function (idx) {\n // updateSingleMarkerEndLayout(fromData, idx, true, seriesModel, api);\n // updateSingleMarkerEndLayout(toData, idx, false, seriesModel, api);\n // });\n // // Update layout of line\n // mlData.each(function (idx) {\n // mlData.setItemLayout(idx, [\n // fromData.getItemLayout(idx),\n // toData.getItemLayout(idx)\n // ]);\n // });\n // this.markerGroupMap.get(seriesModel.id).updateLayout();\n // }\n // }, this);\n // },\n updateTransform: function (markLineModel, ecModel, api) {\n ecModel.eachSeries(function (seriesModel) {\n var mlModel = seriesModel.markLineModel;\n\n if (mlModel) {\n var mlData = mlModel.getData();\n var fromData = mlModel.__from;\n var toData = mlModel.__to; // Update visual and layout of from symbol and to symbol\n\n fromData.each(function (idx) {\n updateSingleMarkerEndLayout(fromData, idx, true, seriesModel, api);\n updateSingleMarkerEndLayout(toData, idx, false, seriesModel, api);\n }); // Update layout of line\n\n mlData.each(function (idx) {\n mlData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]);\n });\n this.markerGroupMap.get(seriesModel.id).updateLayout();\n }\n }, this);\n },\n renderSeries: function (seriesModel, mlModel, ecModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var seriesId = seriesModel.id;\n var seriesData = seriesModel.getData();\n var lineDrawMap = this.markerGroupMap;\n var lineDraw = lineDrawMap.get(seriesId) || lineDrawMap.set(seriesId, new LineDraw());\n this.group.add(lineDraw.group);\n var mlData = createList(coordSys, seriesModel, mlModel);\n var fromData = mlData.from;\n var toData = mlData.to;\n var lineData = mlData.line;\n mlModel.__from = fromData;\n mlModel.__to = toData; // Line data for tooltip and formatter\n\n mlModel.setData(lineData);\n var symbolType = mlModel.get('symbol');\n var symbolSize = mlModel.get('symbolSize');\n\n if (!zrUtil.isArray(symbolType)) {\n symbolType = [symbolType, symbolType];\n }\n\n if (typeof symbolSize === 'number') {\n symbolSize = [symbolSize, symbolSize];\n } // Update visual and layout of from symbol and to symbol\n\n\n mlData.from.each(function (idx) {\n updateDataVisualAndLayout(fromData, idx, true);\n updateDataVisualAndLayout(toData, idx, false);\n }); // Update visual and layout of line\n\n lineData.each(function (idx) {\n var lineColor = lineData.getItemModel(idx).get('lineStyle.color');\n lineData.setItemVisual(idx, {\n color: lineColor || fromData.getItemVisual(idx, 'color')\n });\n lineData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]);\n lineData.setItemVisual(idx, {\n 'fromSymbolRotate': fromData.getItemVisual(idx, 'symbolRotate'),\n 'fromSymbolSize': fromData.getItemVisual(idx, 'symbolSize'),\n 'fromSymbol': fromData.getItemVisual(idx, 'symbol'),\n 'toSymbolRotate': toData.getItemVisual(idx, 'symbolRotate'),\n 'toSymbolSize': toData.getItemVisual(idx, 'symbolSize'),\n 'toSymbol': toData.getItemVisual(idx, 'symbol')\n });\n });\n lineDraw.updateData(lineData); // Set host model for tooltip\n // FIXME\n\n mlData.line.eachItemGraphicEl(function (el, idx) {\n el.traverse(function (child) {\n child.dataModel = mlModel;\n });\n });\n\n function updateDataVisualAndLayout(data, idx, isFrom) {\n var itemModel = data.getItemModel(idx);\n updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api);\n data.setItemVisual(idx, {\n symbolRotate: itemModel.get('symbolRotate'),\n symbolSize: itemModel.get('symbolSize') || symbolSize[isFrom ? 0 : 1],\n symbol: itemModel.get('symbol', true) || symbolType[isFrom ? 0 : 1],\n color: itemModel.get('itemStyle.color') || seriesData.getVisual('color')\n });\n }\n\n lineDraw.__keep = true;\n lineDraw.group.silent = mlModel.get('silent') || seriesModel.get('silent');\n }\n});\n/**\n * @inner\n * @param {module:echarts/coord/*} coordSys\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Model} mpModel\n */\n\n\nfunction createList(coordSys, seriesModel, mlModel) {\n var coordDimsInfos;\n\n if (coordSys) {\n coordDimsInfos = zrUtil.map(coordSys && coordSys.dimensions, function (coordDim) {\n var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys\n\n return zrUtil.defaults({\n name: coordDim\n }, info);\n });\n } else {\n coordDimsInfos = [{\n name: 'value',\n type: 'float'\n }];\n }\n\n var fromData = new List(coordDimsInfos, mlModel);\n var toData = new List(coordDimsInfos, mlModel); // No dimensions\n\n var lineData = new List([], mlModel);\n var optData = zrUtil.map(mlModel.get('data'), zrUtil.curry(markLineTransform, seriesModel, coordSys, mlModel));\n\n if (coordSys) {\n optData = zrUtil.filter(optData, zrUtil.curry(markLineFilter, coordSys));\n }\n\n var dimValueGetter = coordSys ? markerHelper.dimValueGetter : function (item) {\n return item.value;\n };\n fromData.initData(zrUtil.map(optData, function (item) {\n return item[0];\n }), null, dimValueGetter);\n toData.initData(zrUtil.map(optData, function (item) {\n return item[1];\n }), null, dimValueGetter);\n lineData.initData(zrUtil.map(optData, function (item) {\n return item[2];\n }));\n lineData.hasItemOption = true;\n return {\n from: fromData,\n to: toData,\n line: lineData\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 MarkerModel = require(\"./MarkerModel\");\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 _default = MarkerModel.extend({\n type: 'markPoint',\n defaultOption: {\n zlevel: 0,\n z: 5,\n symbol: 'pin',\n symbolSize: 50,\n //symbolRotate: 0,\n //symbolOffset: [0, 0]\n tooltip: {\n trigger: 'item'\n },\n label: {\n show: true,\n position: 'inside'\n },\n itemStyle: {\n borderWidth: 2\n },\n emphasis: {\n label: {\n show: true\n }\n }\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar SymbolDraw = require(\"../../chart/helper/SymbolDraw\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar List = require(\"../../data/List\");\n\nvar markerHelper = require(\"./markerHelper\");\n\nvar MarkerView = require(\"./MarkerView\");\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 updateMarkerLayout(mpData, seriesModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n mpData.each(function (idx) {\n var itemModel = mpData.getItemModel(idx);\n var point;\n var xPx = numberUtil.parsePercent(itemModel.get('x'), api.getWidth());\n var yPx = numberUtil.parsePercent(itemModel.get('y'), api.getHeight());\n\n if (!isNaN(xPx) && !isNaN(yPx)) {\n point = [xPx, yPx];\n } // Chart like bar may have there own marker positioning logic\n else if (seriesModel.getMarkerPosition) {\n // Use the getMarkerPoisition\n point = seriesModel.getMarkerPosition(mpData.getValues(mpData.dimensions, idx));\n } else if (coordSys) {\n var x = mpData.get(coordSys.dimensions[0], idx);\n var y = mpData.get(coordSys.dimensions[1], idx);\n point = coordSys.dataToPoint([x, y]);\n } // Use x, y if has any\n\n\n if (!isNaN(xPx)) {\n point[0] = xPx;\n }\n\n if (!isNaN(yPx)) {\n point[1] = yPx;\n }\n\n mpData.setItemLayout(idx, point);\n });\n}\n\nvar _default = MarkerView.extend({\n type: 'markPoint',\n // updateLayout: function (markPointModel, ecModel, api) {\n // ecModel.eachSeries(function (seriesModel) {\n // var mpModel = seriesModel.markPointModel;\n // if (mpModel) {\n // updateMarkerLayout(mpModel.getData(), seriesModel, api);\n // this.markerGroupMap.get(seriesModel.id).updateLayout(mpModel);\n // }\n // }, this);\n // },\n updateTransform: function (markPointModel, ecModel, api) {\n ecModel.eachSeries(function (seriesModel) {\n var mpModel = seriesModel.markPointModel;\n\n if (mpModel) {\n updateMarkerLayout(mpModel.getData(), seriesModel, api);\n this.markerGroupMap.get(seriesModel.id).updateLayout(mpModel);\n }\n }, this);\n },\n renderSeries: function (seriesModel, mpModel, ecModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var seriesId = seriesModel.id;\n var seriesData = seriesModel.getData();\n var symbolDrawMap = this.markerGroupMap;\n var symbolDraw = symbolDrawMap.get(seriesId) || symbolDrawMap.set(seriesId, new SymbolDraw());\n var mpData = createList(coordSys, seriesModel, mpModel); // FIXME\n\n mpModel.setData(mpData);\n updateMarkerLayout(mpModel.getData(), seriesModel, api);\n mpData.each(function (idx) {\n var itemModel = mpData.getItemModel(idx);\n var symbol = itemModel.getShallow('symbol');\n var symbolSize = itemModel.getShallow('symbolSize');\n var symbolRotate = itemModel.getShallow('symbolRotate');\n var isFnSymbol = zrUtil.isFunction(symbol);\n var isFnSymbolSize = zrUtil.isFunction(symbolSize);\n var isFnSymbolRotate = zrUtil.isFunction(symbolRotate);\n\n if (isFnSymbol || isFnSymbolSize || isFnSymbolRotate) {\n var rawIdx = mpModel.getRawValue(idx);\n var dataParams = mpModel.getDataParams(idx);\n\n if (isFnSymbol) {\n symbol = symbol(rawIdx, dataParams);\n }\n\n if (isFnSymbolSize) {\n // FIXME 这里不兼容 ECharts 2.x,2.x 貌似参数是整个数据?\n symbolSize = symbolSize(rawIdx, dataParams);\n }\n\n if (isFnSymbolRotate) {\n symbolRotate = symbolRotate(rawIdx, dataParams);\n }\n }\n\n mpData.setItemVisual(idx, {\n symbol: symbol,\n symbolSize: symbolSize,\n symbolRotate: symbolRotate,\n color: itemModel.get('itemStyle.color') || seriesData.getVisual('color')\n });\n }); // TODO Text are wrong\n\n symbolDraw.updateData(mpData);\n this.group.add(symbolDraw.group); // Set host model for tooltip\n // FIXME\n\n mpData.eachItemGraphicEl(function (el) {\n el.traverse(function (child) {\n child.dataModel = mpModel;\n });\n });\n symbolDraw.__keep = true;\n symbolDraw.group.silent = mpModel.get('silent') || seriesModel.get('silent');\n }\n});\n/**\n * @inner\n * @param {module:echarts/coord/*} [coordSys]\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Model} mpModel\n */\n\n\nfunction createList(coordSys, seriesModel, mpModel) {\n var coordDimsInfos;\n\n if (coordSys) {\n coordDimsInfos = zrUtil.map(coordSys && coordSys.dimensions, function (coordDim) {\n var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys\n\n return zrUtil.defaults({\n name: coordDim\n }, info);\n });\n } else {\n coordDimsInfos = [{\n name: 'value',\n type: 'float'\n }];\n }\n\n var mpData = new List(coordDimsInfos, mpModel);\n var dataOpt = zrUtil.map(mpModel.get('data'), zrUtil.curry(markerHelper.dataTransform, seriesModel));\n\n if (coordSys) {\n dataOpt = zrUtil.filter(dataOpt, zrUtil.curry(markerHelper.dataFilter, coordSys));\n }\n\n mpData.initData(dataOpt, null, coordSys ? markerHelper.dimValueGetter : function (item) {\n return item.value;\n });\n return mpData;\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar dataFormatMixin = require(\"../../model/mixin/dataFormat\");\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 addCommas = formatUtil.addCommas;\nvar encodeHTML = formatUtil.encodeHTML;\n\nfunction fillLabel(opt) {\n modelUtil.defaultEmphasis(opt, 'label', ['show']);\n}\n\nvar MarkerModel = echarts.extendComponentModel({\n type: 'marker',\n dependencies: ['series', 'grid', 'polar', 'geo'],\n\n /**\n * @overrite\n */\n init: function (option, parentModel, ecModel) {\n this.mergeDefaultAndTheme(option, ecModel);\n\n this._mergeOption(option, ecModel, false, true);\n },\n\n /**\n * @return {boolean}\n */\n isAnimationEnabled: function () {\n if (env.node) {\n return false;\n }\n\n var hostSeries = this.__hostSeries;\n return this.getShallow('animation') && hostSeries && hostSeries.isAnimationEnabled();\n },\n\n /**\n * @overrite\n */\n mergeOption: function (newOpt, ecModel) {\n this._mergeOption(newOpt, ecModel, false, false);\n },\n _mergeOption: function (newOpt, ecModel, createdBySelf, isInit) {\n var MarkerModel = this.constructor;\n var modelPropName = this.mainType + 'Model';\n\n if (!createdBySelf) {\n ecModel.eachSeries(function (seriesModel) {\n var markerOpt = seriesModel.get(this.mainType, true);\n var markerModel = seriesModel[modelPropName];\n\n if (!markerOpt || !markerOpt.data) {\n seriesModel[modelPropName] = null;\n return;\n }\n\n if (!markerModel) {\n if (isInit) {\n // Default label emphasis `position` and `show`\n fillLabel(markerOpt);\n }\n\n zrUtil.each(markerOpt.data, function (item) {\n // FIXME Overwrite fillLabel method ?\n if (item instanceof Array) {\n fillLabel(item[0]);\n fillLabel(item[1]);\n } else {\n fillLabel(item);\n }\n });\n markerModel = new MarkerModel(markerOpt, this, ecModel);\n zrUtil.extend(markerModel, {\n mainType: this.mainType,\n // Use the same series index and name\n seriesIndex: seriesModel.seriesIndex,\n name: seriesModel.name,\n createdBySelf: true\n });\n markerModel.__hostSeries = seriesModel;\n } else {\n markerModel._mergeOption(markerOpt, ecModel, true);\n }\n\n seriesModel[modelPropName] = markerModel;\n }, this);\n }\n },\n formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n var data = this.getData();\n var value = this.getRawValue(dataIndex);\n var formattedValue = zrUtil.isArray(value) ? zrUtil.map(value, addCommas).join(', ') : addCommas(value);\n var name = data.getName(dataIndex);\n var html = encodeHTML(this.name);\n var newLine = renderMode === 'html' ? '
' : '\\n';\n\n if (value != null || name) {\n html += newLine;\n }\n\n if (name) {\n html += encodeHTML(name);\n\n if (value != null) {\n html += ' : ';\n }\n }\n\n if (value != null) {\n html += encodeHTML(formattedValue);\n }\n\n return html;\n },\n getData: function () {\n return this._data;\n },\n setData: function (data) {\n this._data = data;\n }\n});\nzrUtil.mixin(MarkerModel, dataFormatMixin);\nvar _default = MarkerModel;\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\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*/\nvar _default = echarts.extendComponentView({\n type: 'marker',\n init: function () {\n /**\n * Markline grouped by series\n * @private\n * @type {module:zrender/core/util.HashMap}\n */\n this.markerGroupMap = zrUtil.createHashMap();\n },\n render: function (markerModel, ecModel, api) {\n var markerGroupMap = this.markerGroupMap;\n markerGroupMap.each(function (item) {\n item.__keep = false;\n });\n var markerModelKey = this.type + 'Model';\n ecModel.eachSeries(function (seriesModel) {\n var markerModel = seriesModel[markerModelKey];\n markerModel && this.renderSeries(seriesModel, markerModel, ecModel, api);\n }, this);\n markerGroupMap.each(function (item) {\n !item.__keep && this.group.remove(item.group);\n }, this);\n },\n renderSeries: function () {}\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 numberUtil = require(\"../../util/number\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\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 indexOf = zrUtil.indexOf;\n\nfunction hasXOrY(item) {\n return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y)));\n}\n\nfunction hasXAndY(item) {\n return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y));\n} // Make it simple, do not visit all stacked value to count precision.\n// function getPrecision(data, valueAxisDim, dataIndex) {\n// var precision = -1;\n// var stackedDim = data.mapDimension(valueAxisDim);\n// do {\n// precision = Math.max(\n// numberUtil.getPrecision(data.get(stackedDim, dataIndex)),\n// precision\n// );\n// var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\n// if (stackedOnSeries) {\n// var byValue = data.get(data.getCalculationInfo('stackedByDimension'), dataIndex);\n// data = stackedOnSeries.getData();\n// dataIndex = data.indexOf(data.getCalculationInfo('stackedByDimension'), byValue);\n// stackedDim = data.getCalculationInfo('stackedDimension');\n// }\n// else {\n// data = null;\n// }\n// } while (data);\n// return precision;\n// }\n\n\nfunction markerTypeCalculatorWithExtent(mlType, data, otherDataDim, targetDataDim, otherCoordIndex, targetCoordIndex) {\n var coordArr = [];\n var stacked = isDimensionStacked(data, targetDataDim\n /*, otherDataDim*/\n );\n var calcDataDim = stacked ? data.getCalculationInfo('stackResultDimension') : targetDataDim;\n var value = numCalculate(data, calcDataDim, mlType);\n var dataIndex = data.indicesOfNearest(calcDataDim, value)[0];\n coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex);\n coordArr[targetCoordIndex] = data.get(calcDataDim, dataIndex);\n var coordArrValue = data.get(targetDataDim, dataIndex); // Make it simple, do not visit all stacked value to count precision.\n\n var precision = numberUtil.getPrecision(data.get(targetDataDim, dataIndex));\n precision = Math.min(precision, 20);\n\n if (precision >= 0) {\n coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision);\n }\n\n return [coordArr, coordArrValue];\n}\n\nvar curry = zrUtil.curry; // TODO Specified percent\n\nvar markerTypeCalculator = {\n /**\n * @method\n * @param {module:echarts/data/List} data\n * @param {string} baseAxisDim\n * @param {string} valueAxisDim\n */\n min: curry(markerTypeCalculatorWithExtent, 'min'),\n\n /**\n * @method\n * @param {module:echarts/data/List} data\n * @param {string} baseAxisDim\n * @param {string} valueAxisDim\n */\n max: curry(markerTypeCalculatorWithExtent, 'max'),\n\n /**\n * @method\n * @param {module:echarts/data/List} data\n * @param {string} baseAxisDim\n * @param {string} valueAxisDim\n */\n average: curry(markerTypeCalculatorWithExtent, 'average')\n};\n/**\n * Transform markPoint data item to format used in List by do the following\n * 1. Calculate statistic like `max`, `min`, `average`\n * 2. Convert `item.xAxis`, `item.yAxis` to `item.coord` array\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/coord/*} [coordSys]\n * @param {Object} item\n * @return {Object}\n */\n\nfunction dataTransform(seriesModel, item) {\n var data = seriesModel.getData();\n var coordSys = seriesModel.coordinateSystem; // 1. If not specify the position with pixel directly\n // 2. If `coord` is not a data array. Which uses `xAxis`,\n // `yAxis` to specify the coord on each dimension\n // parseFloat first because item.x and item.y can be percent string like '20%'\n\n if (item && !hasXAndY(item) && !zrUtil.isArray(item.coord) && coordSys) {\n var dims = coordSys.dimensions;\n var axisInfo = getAxisInfo(item, data, coordSys, seriesModel); // Clone the option\n // Transform the properties xAxis, yAxis, radiusAxis, angleAxis, geoCoord to value\n\n item = zrUtil.clone(item);\n\n if (item.type && markerTypeCalculator[item.type] && axisInfo.baseAxis && axisInfo.valueAxis) {\n var otherCoordIndex = indexOf(dims, axisInfo.baseAxis.dim);\n var targetCoordIndex = indexOf(dims, axisInfo.valueAxis.dim);\n var coordInfo = markerTypeCalculator[item.type](data, axisInfo.baseDataDim, axisInfo.valueDataDim, otherCoordIndex, targetCoordIndex);\n item.coord = coordInfo[0]; // Force to use the value of calculated value.\n // let item use the value without stack.\n\n item.value = coordInfo[1];\n } else {\n // FIXME Only has one of xAxis and yAxis.\n var coord = [item.xAxis != null ? item.xAxis : item.radiusAxis, item.yAxis != null ? item.yAxis : item.angleAxis]; // Each coord support max, min, average\n\n for (var i = 0; i < 2; i++) {\n if (markerTypeCalculator[coord[i]]) {\n coord[i] = numCalculate(data, data.mapDimension(dims[i]), coord[i]);\n }\n }\n\n item.coord = coord;\n }\n }\n\n return item;\n}\n\nfunction getAxisInfo(item, data, coordSys, seriesModel) {\n var ret = {};\n\n if (item.valueIndex != null || item.valueDim != null) {\n ret.valueDataDim = item.valueIndex != null ? data.getDimension(item.valueIndex) : item.valueDim;\n ret.valueAxis = coordSys.getAxis(dataDimToCoordDim(seriesModel, ret.valueDataDim));\n ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis);\n ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\n } else {\n ret.baseAxis = seriesModel.getBaseAxis();\n ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis);\n ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\n ret.valueDataDim = data.mapDimension(ret.valueAxis.dim);\n }\n\n return ret;\n}\n\nfunction dataDimToCoordDim(seriesModel, dataDim) {\n var data = seriesModel.getData();\n var dimensions = data.dimensions;\n dataDim = data.getDimension(dataDim);\n\n for (var i = 0; i < dimensions.length; i++) {\n var dimItem = data.getDimensionInfo(dimensions[i]);\n\n if (dimItem.name === dataDim) {\n return dimItem.coordDim;\n }\n }\n}\n/**\n * Filter data which is out of coordinateSystem range\n * [dataFilter description]\n * @param {module:echarts/coord/*} [coordSys]\n * @param {Object} item\n * @return {boolean}\n */\n\n\nfunction dataFilter(coordSys, item) {\n // Alwalys return true if there is no coordSys\n return coordSys && coordSys.containData && item.coord && !hasXOrY(item) ? coordSys.containData(item.coord) : true;\n}\n\nfunction dimValueGetter(item, dimName, dataIndex, dimIndex) {\n // x, y, radius, angle\n if (dimIndex < 2) {\n return item.coord && item.coord[dimIndex];\n }\n\n return item.value;\n}\n\nfunction numCalculate(data, valueDataDim, type) {\n if (type === 'average') {\n var sum = 0;\n var count = 0;\n data.each(valueDataDim, function (val, idx) {\n if (!isNaN(val)) {\n sum += val;\n count++;\n }\n });\n return sum / count;\n } else if (type === 'median') {\n return data.getMedian(valueDataDim);\n } else {\n // max & min\n return data.getDataExtent(valueDataDim, true)[type === 'max' ? 1 : 0];\n }\n}\n\nexports.dataTransform = dataTransform;\nexports.getAxisInfo = getAxisInfo;\nexports.dataFilter = dataFilter;\nexports.dimValueGetter = dimValueGetter;\nexports.numCalculate = numCalculate;","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar throttleUtil = require(\"../util/throttle\");\n\nvar parallelPreprocessor = require(\"../coord/parallel/parallelPreprocessor\");\n\nrequire(\"../coord/parallel/parallelCreator\");\n\nrequire(\"../coord/parallel/ParallelModel\");\n\nrequire(\"./parallelAxis\");\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 CLICK_THRESHOLD = 5; // > 4\n// Parallel view\n\necharts.extendComponentView({\n type: 'parallel',\n render: function (parallelModel, ecModel, api) {\n this._model = parallelModel;\n this._api = api;\n\n if (!this._handlers) {\n this._handlers = {};\n zrUtil.each(handlers, function (handler, eventName) {\n api.getZr().on(eventName, this._handlers[eventName] = zrUtil.bind(handler, this));\n }, this);\n }\n\n throttleUtil.createOrUpdate(this, '_throttledDispatchExpand', parallelModel.get('axisExpandRate'), 'fixRate');\n },\n dispose: function (ecModel, api) {\n zrUtil.each(this._handlers, function (handler, eventName) {\n api.getZr().off(eventName, handler);\n });\n this._handlers = null;\n },\n\n /**\n * @param {Object} [opt] If null, cancle the last action triggering for debounce.\n */\n _throttledDispatchExpand: function (opt) {\n this._dispatchExpand(opt);\n },\n _dispatchExpand: function (opt) {\n opt && this._api.dispatchAction(zrUtil.extend({\n type: 'parallelAxisExpand'\n }, opt));\n }\n});\nvar handlers = {\n mousedown: function (e) {\n if (checkTrigger(this, 'click')) {\n this._mouseDownPoint = [e.offsetX, e.offsetY];\n }\n },\n mouseup: function (e) {\n var mouseDownPoint = this._mouseDownPoint;\n\n if (checkTrigger(this, 'click') && mouseDownPoint) {\n var point = [e.offsetX, e.offsetY];\n var dist = Math.pow(mouseDownPoint[0] - point[0], 2) + Math.pow(mouseDownPoint[1] - point[1], 2);\n\n if (dist > CLICK_THRESHOLD) {\n return;\n }\n\n var result = this._model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\n\n result.behavior !== 'none' && this._dispatchExpand({\n axisExpandWindow: result.axisExpandWindow\n });\n }\n\n this._mouseDownPoint = null;\n },\n mousemove: function (e) {\n // Should do nothing when brushing.\n if (this._mouseDownPoint || !checkTrigger(this, 'mousemove')) {\n return;\n }\n\n var model = this._model;\n var result = model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\n var behavior = result.behavior;\n behavior === 'jump' && this._throttledDispatchExpand.debounceNextCall(model.get('axisExpandDebounce'));\n\n this._throttledDispatchExpand(behavior === 'none' ? null // Cancle the last trigger, in case that mouse slide out of the area quickly.\n : {\n axisExpandWindow: result.axisExpandWindow,\n // Jumping uses animation, and sliding suppresses animation.\n animation: behavior === 'jump' ? null : false\n });\n }\n};\n\nfunction checkTrigger(view, triggerOn) {\n var model = view._model;\n return model.get('axisExpandable') && model.get('axisExpandTriggerOn') === triggerOn;\n}\n\necharts.registerPreprocessor(parallelPreprocessor);","\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\nrequire(\"../coord/parallel/parallelCreator\");\n\nrequire(\"./axis/parallelAxisAction\");\n\nrequire(\"./axis/ParallelAxisView\");","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar barPolar = require(\"../layout/barPolar\");\n\nrequire(\"../coord/polar/polarCreator\");\n\nrequire(\"./angleAxis\");\n\nrequire(\"./radiusAxis\");\n\nrequire(\"./axisPointer\");\n\nrequire(\"./axisPointer/PolarAxisPointer\");\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// For reducing size of echarts.min, barLayoutPolar is required by polar.\necharts.registerLayout(zrUtil.curry(barPolar, 'bar')); // Polar view\n\necharts.extendComponentView({\n type: 'polar'\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\nrequire(\"../coord/radar/Radar\");\n\nrequire(\"../coord/radar/RadarModel\");\n\nrequire(\"./radar/RadarView\");","\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar AxisBuilder = require(\"../axis/AxisBuilder\");\n\nvar graphic = require(\"../../util/graphic\");\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 axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\n\nvar _default = echarts.extendComponentView({\n type: 'radar',\n render: function (radarModel, ecModel, api) {\n var group = this.group;\n group.removeAll();\n\n this._buildAxes(radarModel);\n\n this._buildSplitLineAndArea(radarModel);\n },\n _buildAxes: function (radarModel) {\n var radar = radarModel.coordinateSystem;\n var indicatorAxes = radar.getIndicatorAxes();\n var axisBuilders = zrUtil.map(indicatorAxes, function (indicatorAxis) {\n var axisBuilder = new AxisBuilder(indicatorAxis.model, {\n position: [radar.cx, radar.cy],\n rotation: indicatorAxis.angle,\n labelDirection: -1,\n tickDirection: -1,\n nameDirection: 1\n });\n return axisBuilder;\n });\n zrUtil.each(axisBuilders, function (axisBuilder) {\n zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n this.group.add(axisBuilder.getGroup());\n }, this);\n },\n _buildSplitLineAndArea: function (radarModel) {\n var radar = radarModel.coordinateSystem;\n var indicatorAxes = radar.getIndicatorAxes();\n\n if (!indicatorAxes.length) {\n return;\n }\n\n var shape = radarModel.get('shape');\n var splitLineModel = radarModel.getModel('splitLine');\n var splitAreaModel = radarModel.getModel('splitArea');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\n var showSplitLine = splitLineModel.get('show');\n var showSplitArea = splitAreaModel.get('show');\n var splitLineColors = lineStyleModel.get('color');\n var splitAreaColors = areaStyleModel.get('color');\n splitLineColors = zrUtil.isArray(splitLineColors) ? splitLineColors : [splitLineColors];\n splitAreaColors = zrUtil.isArray(splitAreaColors) ? splitAreaColors : [splitAreaColors];\n var splitLines = [];\n var splitAreas = [];\n\n function getColorIndex(areaOrLine, areaOrLineColorList, idx) {\n var colorIndex = idx % areaOrLineColorList.length;\n areaOrLine[colorIndex] = areaOrLine[colorIndex] || [];\n return colorIndex;\n }\n\n if (shape === 'circle') {\n var ticksRadius = indicatorAxes[0].getTicksCoords();\n var cx = radar.cx;\n var cy = radar.cy;\n\n for (var i = 0; i < ticksRadius.length; i++) {\n if (showSplitLine) {\n var colorIndex = getColorIndex(splitLines, splitLineColors, i);\n splitLines[colorIndex].push(new graphic.Circle({\n shape: {\n cx: cx,\n cy: cy,\n r: ticksRadius[i].coord\n }\n }));\n }\n\n if (showSplitArea && i < ticksRadius.length - 1) {\n var colorIndex = getColorIndex(splitAreas, splitAreaColors, i);\n splitAreas[colorIndex].push(new graphic.Ring({\n shape: {\n cx: cx,\n cy: cy,\n r0: ticksRadius[i].coord,\n r: ticksRadius[i + 1].coord\n }\n }));\n }\n }\n } // Polyyon\n else {\n var realSplitNumber;\n var axesTicksPoints = zrUtil.map(indicatorAxes, function (indicatorAxis, idx) {\n var ticksCoords = indicatorAxis.getTicksCoords();\n realSplitNumber = realSplitNumber == null ? ticksCoords.length - 1 : Math.min(ticksCoords.length - 1, realSplitNumber);\n return zrUtil.map(ticksCoords, function (tickCoord) {\n return radar.coordToPoint(tickCoord.coord, idx);\n });\n });\n var prevPoints = [];\n\n for (var i = 0; i <= realSplitNumber; i++) {\n var points = [];\n\n for (var j = 0; j < indicatorAxes.length; j++) {\n points.push(axesTicksPoints[j][i]);\n } // Close\n\n\n if (points[0]) {\n points.push(points[0].slice());\n } else {}\n\n if (showSplitLine) {\n var colorIndex = getColorIndex(splitLines, splitLineColors, i);\n splitLines[colorIndex].push(new graphic.Polyline({\n shape: {\n points: points\n }\n }));\n }\n\n if (showSplitArea && prevPoints) {\n var colorIndex = getColorIndex(splitAreas, splitAreaColors, i - 1);\n splitAreas[colorIndex].push(new graphic.Polygon({\n shape: {\n points: points.concat(prevPoints)\n }\n }));\n }\n\n prevPoints = points.slice().reverse();\n }\n }\n\n var lineStyle = lineStyleModel.getLineStyle();\n var areaStyle = areaStyleModel.getAreaStyle(); // Add splitArea before splitLine\n\n zrUtil.each(splitAreas, function (splitAreas, idx) {\n this.group.add(graphic.mergePath(splitAreas, {\n style: zrUtil.defaults({\n stroke: 'none',\n fill: splitAreaColors[idx % splitAreaColors.length]\n }, areaStyle),\n silent: true\n }));\n }, this);\n zrUtil.each(splitLines, function (splitLines, idx) {\n this.group.add(graphic.mergePath(splitLines, {\n style: zrUtil.defaults({\n fill: 'none',\n stroke: splitLineColors[idx % splitLineColors.length]\n }, lineStyle),\n silent: true\n }));\n }, this);\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\nrequire(\"../coord/polar/polarCreator\");\n\nrequire(\"./axis/RadiusAxisView\");","\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\nrequire(\"../coord/single/singleCreator\");\n\nrequire(\"./axis/SingleAxisView\");\n\nrequire(\"../coord/single/AxisModel\");\n\nrequire(\"./axisPointer\");\n\nrequire(\"./axisPointer/SingleAxisPointer\");\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*/\necharts.extendComponentView({\n type: 'single'\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\nvar echarts = require(\"../echarts\");\n\nvar preprocessor = require(\"./timeline/preprocessor\");\n\nrequire(\"./timeline/typeDefaulter\");\n\nrequire(\"./timeline/timelineAction\");\n\nrequire(\"./timeline/SliderTimelineModel\");\n\nrequire(\"./timeline/SliderTimelineView\");\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 * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);","\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 TimelineModel = require(\"./TimelineModel\");\n\nvar dataFormatMixin = require(\"../../model/mixin/dataFormat\");\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 SliderTimelineModel = TimelineModel.extend({\n type: 'timeline.slider',\n\n /**\n * @protected\n */\n defaultOption: {\n backgroundColor: 'rgba(0,0,0,0)',\n // 时间轴背景颜色\n borderColor: '#ccc',\n // 时间轴边框颜色\n borderWidth: 0,\n // 时间轴边框线宽,单位px,默认为0(无边框)\n orient: 'horizontal',\n // 'vertical'\n inverse: false,\n tooltip: {\n // boolean or Object\n trigger: 'item' // data item may also have tootip attr.\n\n },\n symbol: 'emptyCircle',\n symbolSize: 10,\n lineStyle: {\n show: true,\n width: 2,\n color: '#304654'\n },\n label: {\n // 文本标签\n position: 'auto',\n // auto left right top bottom\n // When using number, label position is not\n // restricted by viewRect.\n // positive: right/bottom, negative: left/top\n show: true,\n interval: 'auto',\n rotate: 0,\n // formatter: null,\n // 其余属性默认使用全局文本样式,详见TEXTSTYLE\n color: '#304654'\n },\n itemStyle: {\n color: '#304654',\n borderWidth: 1\n },\n checkpointStyle: {\n symbol: 'circle',\n symbolSize: 13,\n color: '#c23531',\n borderWidth: 5,\n borderColor: 'rgba(194,53,49, 0.5)',\n animation: true,\n animationDuration: 300,\n animationEasing: 'quinticInOut'\n },\n controlStyle: {\n show: true,\n showPlayBtn: true,\n showPrevBtn: true,\n showNextBtn: true,\n itemSize: 22,\n itemGap: 12,\n position: 'left',\n // 'left' 'right' 'top' 'bottom'\n playIcon: 'path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z',\n // jshint ignore:line\n stopIcon: 'path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z',\n // jshint ignore:line\n nextIcon: 'path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z',\n // jshint ignore:line\n prevIcon: 'path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z',\n // jshint ignore:line\n color: '#304654',\n borderColor: '#304654',\n borderWidth: 1\n },\n emphasis: {\n label: {\n show: true,\n // 其余属性默认使用全局文本样式,详见TEXTSTYLE\n color: '#c23531'\n },\n itemStyle: {\n color: '#c23531'\n },\n controlStyle: {\n color: '#c23531',\n borderColor: '#c23531',\n borderWidth: 2\n }\n },\n data: []\n }\n});\nzrUtil.mixin(SliderTimelineModel, dataFormatMixin);\nvar _default = SliderTimelineModel;\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 BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar layout = require(\"../../util/layout\");\n\nvar TimelineView = require(\"./TimelineView\");\n\nvar TimelineAxis = require(\"./TimelineAxis\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\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 bind = zrUtil.bind;\nvar each = zrUtil.each;\nvar PI = Math.PI;\n\nvar _default = TimelineView.extend({\n type: 'timeline.slider',\n init: function (ecModel, api) {\n this.api = api;\n /**\n * @private\n * @type {module:echarts/component/timeline/TimelineAxis}\n */\n\n this._axis;\n /**\n * @private\n * @type {module:zrender/core/BoundingRect}\n */\n\n this._viewRect;\n /**\n * @type {number}\n */\n\n this._timer;\n /**\n * @type {module:zrender/Element}\n */\n\n this._currentPointer;\n /**\n * @type {module:zrender/container/Group}\n */\n\n this._mainGroup;\n /**\n * @type {module:zrender/container/Group}\n */\n\n this._labelGroup;\n },\n\n /**\n * @override\n */\n render: function (timelineModel, ecModel, api, payload) {\n this.model = timelineModel;\n this.api = api;\n this.ecModel = ecModel;\n this.group.removeAll();\n\n if (timelineModel.get('show', true)) {\n var layoutInfo = this._layout(timelineModel, api);\n\n var mainGroup = this._createGroup('mainGroup');\n\n var labelGroup = this._createGroup('labelGroup');\n /**\n * @private\n * @type {module:echarts/component/timeline/TimelineAxis}\n */\n\n\n var axis = this._axis = this._createAxis(layoutInfo, timelineModel);\n\n timelineModel.formatTooltip = function (dataIndex) {\n return encodeHTML(axis.scale.getLabel(dataIndex));\n };\n\n each(['AxisLine', 'AxisTick', 'Control', 'CurrentPointer'], function (name) {\n this['_render' + name](layoutInfo, mainGroup, axis, timelineModel);\n }, this);\n\n this._renderAxisLabel(layoutInfo, labelGroup, axis, timelineModel);\n\n this._position(layoutInfo, timelineModel);\n }\n\n this._doPlayStop();\n },\n\n /**\n * @override\n */\n remove: function () {\n this._clearTimer();\n\n this.group.removeAll();\n },\n\n /**\n * @override\n */\n dispose: function () {\n this._clearTimer();\n },\n _layout: function (timelineModel, api) {\n var labelPosOpt = timelineModel.get('label.position');\n var orient = timelineModel.get('orient');\n var viewRect = getViewRect(timelineModel, api); // Auto label offset.\n\n if (labelPosOpt == null || labelPosOpt === 'auto') {\n labelPosOpt = orient === 'horizontal' ? viewRect.y + viewRect.height / 2 < api.getHeight() / 2 ? '-' : '+' : viewRect.x + viewRect.width / 2 < api.getWidth() / 2 ? '+' : '-';\n } else if (isNaN(labelPosOpt)) {\n labelPosOpt = {\n horizontal: {\n top: '-',\n bottom: '+'\n },\n vertical: {\n left: '-',\n right: '+'\n }\n }[orient][labelPosOpt];\n }\n\n var labelAlignMap = {\n horizontal: 'center',\n vertical: labelPosOpt >= 0 || labelPosOpt === '+' ? 'left' : 'right'\n };\n var labelBaselineMap = {\n horizontal: labelPosOpt >= 0 || labelPosOpt === '+' ? 'top' : 'bottom',\n vertical: 'middle'\n };\n var rotationMap = {\n horizontal: 0,\n vertical: PI / 2\n }; // Position\n\n var mainLength = orient === 'vertical' ? viewRect.height : viewRect.width;\n var controlModel = timelineModel.getModel('controlStyle');\n var showControl = controlModel.get('show', true);\n var controlSize = showControl ? controlModel.get('itemSize') : 0;\n var controlGap = showControl ? controlModel.get('itemGap') : 0;\n var sizePlusGap = controlSize + controlGap; // Special label rotate.\n\n var labelRotation = timelineModel.get('label.rotate') || 0;\n labelRotation = labelRotation * PI / 180; // To radian.\n\n var playPosition;\n var prevBtnPosition;\n var nextBtnPosition;\n var axisExtent;\n var controlPosition = controlModel.get('position', true);\n var showPlayBtn = showControl && controlModel.get('showPlayBtn', true);\n var showPrevBtn = showControl && controlModel.get('showPrevBtn', true);\n var showNextBtn = showControl && controlModel.get('showNextBtn', true);\n var xLeft = 0;\n var xRight = mainLength; // position[0] means left, position[1] means middle.\n\n if (controlPosition === 'left' || controlPosition === 'bottom') {\n showPlayBtn && (playPosition = [0, 0], xLeft += sizePlusGap);\n showPrevBtn && (prevBtnPosition = [xLeft, 0], xLeft += sizePlusGap);\n showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n } else {\n // 'top' 'right'\n showPlayBtn && (playPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n showPrevBtn && (prevBtnPosition = [0, 0], xLeft += sizePlusGap);\n showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n }\n\n axisExtent = [xLeft, xRight];\n\n if (timelineModel.get('inverse')) {\n axisExtent.reverse();\n }\n\n return {\n viewRect: viewRect,\n mainLength: mainLength,\n orient: orient,\n rotation: rotationMap[orient],\n labelRotation: labelRotation,\n labelPosOpt: labelPosOpt,\n labelAlign: timelineModel.get('label.align') || labelAlignMap[orient],\n labelBaseline: timelineModel.get('label.verticalAlign') || timelineModel.get('label.baseline') || labelBaselineMap[orient],\n // Based on mainGroup.\n playPosition: playPosition,\n prevBtnPosition: prevBtnPosition,\n nextBtnPosition: nextBtnPosition,\n axisExtent: axisExtent,\n controlSize: controlSize,\n controlGap: controlGap\n };\n },\n _position: function (layoutInfo, timelineModel) {\n // Position is be called finally, because bounding rect is needed for\n // adapt content to fill viewRect (auto adapt offset).\n // Timeline may be not all in the viewRect when 'offset' is specified\n // as a number, because it is more appropriate that label aligns at\n // 'offset' but not the other edge defined by viewRect.\n var mainGroup = this._mainGroup;\n var labelGroup = this._labelGroup;\n var viewRect = layoutInfo.viewRect;\n\n if (layoutInfo.orient === 'vertical') {\n // transform to horizontal, inverse rotate by left-top point.\n var m = matrix.create();\n var rotateOriginX = viewRect.x;\n var rotateOriginY = viewRect.y + viewRect.height;\n matrix.translate(m, m, [-rotateOriginX, -rotateOriginY]);\n matrix.rotate(m, m, -PI / 2);\n matrix.translate(m, m, [rotateOriginX, rotateOriginY]);\n viewRect = viewRect.clone();\n viewRect.applyTransform(m);\n }\n\n var viewBound = getBound(viewRect);\n var mainBound = getBound(mainGroup.getBoundingRect());\n var labelBound = getBound(labelGroup.getBoundingRect());\n var mainPosition = mainGroup.position;\n var labelsPosition = labelGroup.position;\n labelsPosition[0] = mainPosition[0] = viewBound[0][0];\n var labelPosOpt = layoutInfo.labelPosOpt;\n\n if (isNaN(labelPosOpt)) {\n // '+' or '-'\n var mainBoundIdx = labelPosOpt === '+' ? 0 : 1;\n toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);\n toBound(labelsPosition, labelBound, viewBound, 1, 1 - mainBoundIdx);\n } else {\n var mainBoundIdx = labelPosOpt >= 0 ? 0 : 1;\n toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);\n labelsPosition[1] = mainPosition[1] + labelPosOpt;\n }\n\n mainGroup.attr('position', mainPosition);\n labelGroup.attr('position', labelsPosition);\n mainGroup.rotation = labelGroup.rotation = layoutInfo.rotation;\n setOrigin(mainGroup);\n setOrigin(labelGroup);\n\n function setOrigin(targetGroup) {\n var pos = targetGroup.position;\n targetGroup.origin = [viewBound[0][0] - pos[0], viewBound[1][0] - pos[1]];\n }\n\n function getBound(rect) {\n // [[xmin, xmax], [ymin, ymax]]\n return [[rect.x, rect.x + rect.width], [rect.y, rect.y + rect.height]];\n }\n\n function toBound(fromPos, from, to, dimIdx, boundIdx) {\n fromPos[dimIdx] += to[dimIdx][boundIdx] - from[dimIdx][boundIdx];\n }\n },\n _createAxis: function (layoutInfo, timelineModel) {\n var data = timelineModel.getData();\n var axisType = timelineModel.get('axisType');\n var scale = axisHelper.createScaleByModel(timelineModel, axisType); // Customize scale. The `tickValue` is `dataIndex`.\n\n scale.getTicks = function () {\n return data.mapArray(['value'], function (value) {\n return value;\n });\n };\n\n var dataExtent = data.getDataExtent('value');\n scale.setExtent(dataExtent[0], dataExtent[1]);\n scale.niceTicks();\n var axis = new TimelineAxis('value', scale, layoutInfo.axisExtent, axisType);\n axis.model = timelineModel;\n return axis;\n },\n _createGroup: function (name) {\n var newGroup = this['_' + name] = new graphic.Group();\n this.group.add(newGroup);\n return newGroup;\n },\n _renderAxisLine: function (layoutInfo, group, axis, timelineModel) {\n var axisExtent = axis.getExtent();\n\n if (!timelineModel.get('lineStyle.show')) {\n return;\n }\n\n group.add(new graphic.Line({\n shape: {\n x1: axisExtent[0],\n y1: 0,\n x2: axisExtent[1],\n y2: 0\n },\n style: zrUtil.extend({\n lineCap: 'round'\n }, timelineModel.getModel('lineStyle').getLineStyle()),\n silent: true,\n z2: 1\n }));\n },\n\n /**\n * @private\n */\n _renderAxisTick: function (layoutInfo, group, axis, timelineModel) {\n var data = timelineModel.getData(); // Show all ticks, despite ignoring strategy.\n\n var ticks = axis.scale.getTicks(); // The value is dataIndex, see the costomized scale.\n\n each(ticks, function (value) {\n var tickCoord = axis.dataToCoord(value);\n var itemModel = data.getItemModel(value);\n var itemStyleModel = itemModel.getModel('itemStyle');\n var hoverStyleModel = itemModel.getModel('emphasis.itemStyle');\n var symbolOpt = {\n position: [tickCoord, 0],\n onclick: bind(this._changeTimeline, this, value)\n };\n var el = giveSymbol(itemModel, itemStyleModel, group, symbolOpt);\n graphic.setHoverStyle(el, hoverStyleModel.getItemStyle());\n\n if (itemModel.get('tooltip')) {\n el.dataIndex = value;\n el.dataModel = timelineModel;\n } else {\n el.dataIndex = el.dataModel = null;\n }\n }, this);\n },\n\n /**\n * @private\n */\n _renderAxisLabel: function (layoutInfo, group, axis, timelineModel) {\n var labelModel = axis.getLabelModel();\n\n if (!labelModel.get('show')) {\n return;\n }\n\n var data = timelineModel.getData();\n var labels = axis.getViewLabels();\n each(labels, function (labelItem) {\n // The tickValue is dataIndex, see the costomized scale.\n var dataIndex = labelItem.tickValue;\n var itemModel = data.getItemModel(dataIndex);\n var normalLabelModel = itemModel.getModel('label');\n var hoverLabelModel = itemModel.getModel('emphasis.label');\n var tickCoord = axis.dataToCoord(labelItem.tickValue);\n var textEl = new graphic.Text({\n position: [tickCoord, 0],\n rotation: layoutInfo.labelRotation - layoutInfo.rotation,\n onclick: bind(this._changeTimeline, this, dataIndex),\n silent: false\n });\n graphic.setTextStyle(textEl.style, normalLabelModel, {\n text: labelItem.formattedLabel,\n textAlign: layoutInfo.labelAlign,\n textVerticalAlign: layoutInfo.labelBaseline\n });\n group.add(textEl);\n graphic.setHoverStyle(textEl, graphic.setTextStyle({}, hoverLabelModel));\n }, this);\n },\n\n /**\n * @private\n */\n _renderControl: function (layoutInfo, group, axis, timelineModel) {\n var controlSize = layoutInfo.controlSize;\n var rotation = layoutInfo.rotation;\n var itemStyle = timelineModel.getModel('controlStyle').getItemStyle();\n var hoverStyle = timelineModel.getModel('emphasis.controlStyle').getItemStyle();\n var rect = [0, -controlSize / 2, controlSize, controlSize];\n var playState = timelineModel.getPlayState();\n var inverse = timelineModel.get('inverse', true);\n makeBtn(layoutInfo.nextBtnPosition, 'controlStyle.nextIcon', bind(this._changeTimeline, this, inverse ? '-' : '+'));\n makeBtn(layoutInfo.prevBtnPosition, 'controlStyle.prevIcon', bind(this._changeTimeline, this, inverse ? '+' : '-'));\n makeBtn(layoutInfo.playPosition, 'controlStyle.' + (playState ? 'stopIcon' : 'playIcon'), bind(this._handlePlayClick, this, !playState), true);\n\n function makeBtn(position, iconPath, onclick, willRotate) {\n if (!position) {\n return;\n }\n\n var opt = {\n position: position,\n origin: [controlSize / 2, 0],\n rotation: willRotate ? -rotation : 0,\n rectHover: true,\n style: itemStyle,\n onclick: onclick\n };\n var btn = makeIcon(timelineModel, iconPath, rect, opt);\n group.add(btn);\n graphic.setHoverStyle(btn, hoverStyle);\n }\n },\n _renderCurrentPointer: function (layoutInfo, group, axis, timelineModel) {\n var data = timelineModel.getData();\n var currentIndex = timelineModel.getCurrentIndex();\n var pointerModel = data.getItemModel(currentIndex).getModel('checkpointStyle');\n var me = this;\n var callback = {\n onCreate: function (pointer) {\n pointer.draggable = true;\n pointer.drift = bind(me._handlePointerDrag, me);\n pointer.ondragend = bind(me._handlePointerDragend, me);\n pointerMoveTo(pointer, currentIndex, axis, timelineModel, true);\n },\n onUpdate: function (pointer) {\n pointerMoveTo(pointer, currentIndex, axis, timelineModel);\n }\n }; // Reuse when exists, for animation and drag.\n\n this._currentPointer = giveSymbol(pointerModel, pointerModel, this._mainGroup, {}, this._currentPointer, callback);\n },\n _handlePlayClick: function (nextState) {\n this._clearTimer();\n\n this.api.dispatchAction({\n type: 'timelinePlayChange',\n playState: nextState,\n from: this.uid\n });\n },\n _handlePointerDrag: function (dx, dy, e) {\n this._clearTimer();\n\n this._pointerChangeTimeline([e.offsetX, e.offsetY]);\n },\n _handlePointerDragend: function (e) {\n this._pointerChangeTimeline([e.offsetX, e.offsetY], true);\n },\n _pointerChangeTimeline: function (mousePos, trigger) {\n var toCoord = this._toAxisCoord(mousePos)[0];\n\n var axis = this._axis;\n var axisExtent = numberUtil.asc(axis.getExtent().slice());\n toCoord > axisExtent[1] && (toCoord = axisExtent[1]);\n toCoord < axisExtent[0] && (toCoord = axisExtent[0]);\n this._currentPointer.position[0] = toCoord;\n\n this._currentPointer.dirty();\n\n var targetDataIndex = this._findNearestTick(toCoord);\n\n var timelineModel = this.model;\n\n if (trigger || targetDataIndex !== timelineModel.getCurrentIndex() && timelineModel.get('realtime')) {\n this._changeTimeline(targetDataIndex);\n }\n },\n _doPlayStop: function () {\n this._clearTimer();\n\n if (this.model.getPlayState()) {\n this._timer = setTimeout(bind(handleFrame, this), this.model.get('playInterval'));\n }\n\n function handleFrame() {\n // Do not cache\n var timelineModel = this.model;\n\n this._changeTimeline(timelineModel.getCurrentIndex() + (timelineModel.get('rewind', true) ? -1 : 1));\n }\n },\n _toAxisCoord: function (vertex) {\n var trans = this._mainGroup.getLocalTransform();\n\n return graphic.applyTransform(vertex, trans, true);\n },\n _findNearestTick: function (axisCoord) {\n var data = this.model.getData();\n var dist = Infinity;\n var targetDataIndex;\n var axis = this._axis;\n data.each(['value'], function (value, dataIndex) {\n var coord = axis.dataToCoord(value);\n var d = Math.abs(coord - axisCoord);\n\n if (d < dist) {\n dist = d;\n targetDataIndex = dataIndex;\n }\n });\n return targetDataIndex;\n },\n _clearTimer: function () {\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = null;\n }\n },\n _changeTimeline: function (nextIndex) {\n var currentIndex = this.model.getCurrentIndex();\n\n if (nextIndex === '+') {\n nextIndex = currentIndex + 1;\n } else if (nextIndex === '-') {\n nextIndex = currentIndex - 1;\n }\n\n this.api.dispatchAction({\n type: 'timelineChange',\n currentIndex: nextIndex,\n from: this.uid\n });\n }\n});\n\nfunction getViewRect(model, api) {\n return layout.getLayoutRect(model.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n }, model.get('padding'));\n}\n\nfunction makeIcon(timelineModel, objPath, rect, opts) {\n var style = opts.style;\n var icon = graphic.createIcon(timelineModel.get(objPath), opts || {}, new BoundingRect(rect[0], rect[1], rect[2], rect[3])); // TODO createIcon won't use style in opt.\n\n if (style) {\n icon.setStyle(style);\n }\n\n return icon;\n}\n/**\n * Create symbol or update symbol\n * opt: basic position and event handlers\n */\n\n\nfunction giveSymbol(hostModel, itemStyleModel, group, opt, symbol, callback) {\n var color = itemStyleModel.get('color');\n\n if (!symbol) {\n var symbolType = hostModel.get('symbol');\n symbol = createSymbol(symbolType, -1, -1, 2, 2, color);\n symbol.setStyle('strokeNoScale', true);\n group.add(symbol);\n callback && callback.onCreate(symbol);\n } else {\n symbol.setColor(color);\n group.add(symbol); // Group may be new, also need to add.\n\n callback && callback.onUpdate(symbol);\n } // Style\n\n\n var itemStyle = itemStyleModel.getItemStyle(['color', 'symbol', 'symbolSize']);\n symbol.setStyle(itemStyle); // Transform and events.\n\n opt = zrUtil.merge({\n rectHover: true,\n z2: 100\n }, opt, true);\n var symbolSize = hostModel.get('symbolSize');\n symbolSize = symbolSize instanceof Array ? symbolSize.slice() : [+symbolSize, +symbolSize];\n symbolSize[0] /= 2;\n symbolSize[1] /= 2;\n opt.scale = symbolSize;\n var symbolOffset = hostModel.get('symbolOffset');\n\n if (symbolOffset) {\n var pos = opt.position = opt.position || [0, 0];\n pos[0] += numberUtil.parsePercent(symbolOffset[0], symbolSize[0]);\n pos[1] += numberUtil.parsePercent(symbolOffset[1], symbolSize[1]);\n }\n\n var symbolRotate = hostModel.get('symbolRotate');\n opt.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n symbol.attr(opt); // FIXME\n // (1) When symbol.style.strokeNoScale is true and updateTransform is not performed,\n // getBoundingRect will return wrong result.\n // (This is supposed to be resolved in zrender, but it is a little difficult to\n // leverage performance and auto updateTransform)\n // (2) All of ancesters of symbol do not scale, so we can just updateTransform symbol.\n\n symbol.updateTransform();\n return symbol;\n}\n\nfunction pointerMoveTo(pointer, dataIndex, axis, timelineModel, noAnimation) {\n if (pointer.dragging) {\n return;\n }\n\n var pointerModel = timelineModel.getModel('checkpointStyle');\n var toCoord = axis.dataToCoord(timelineModel.getData().get(['value'], dataIndex));\n\n if (noAnimation || !pointerModel.get('animation', true)) {\n pointer.attr({\n position: [toCoord, 0]\n });\n } else {\n pointer.stopAnimation(true);\n pointer.animateTo({\n position: [toCoord, 0]\n }, pointerModel.get('animationDuration', true), pointerModel.get('animationEasing', true));\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar Axis = require(\"../../coord/Axis\");\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 * Extend axis 2d\n * @constructor module:echarts/coord/cartesian/Axis2D\n * @extends {module:echarts/coord/cartesian/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.} coordExtent\n * @param {string} axisType\n * @param {string} position\n */\nvar TimelineAxis = function (dim, scale, coordExtent, axisType) {\n Axis.call(this, dim, scale, coordExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = axisType || 'value';\n /**\n * Axis model\n * @param {module:echarts/component/TimelineModel}\n */\n\n this.model = null;\n};\n\nTimelineAxis.prototype = {\n constructor: TimelineAxis,\n\n /**\n * @override\n */\n getLabelModel: function () {\n return this.model.getModel('label');\n },\n\n /**\n * @override\n */\n isHorizontal: function () {\n return this.model.get('orient') === 'horizontal';\n }\n};\nzrUtil.inherits(TimelineAxis, Axis);\nvar _default = TimelineAxis;\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 ComponentModel = require(\"../../model/Component\");\n\nvar List = require(\"../../data/List\");\n\nvar modelUtil = require(\"../../util/model\");\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 TimelineModel = ComponentModel.extend({\n type: 'timeline',\n layoutMode: 'box',\n\n /**\n * @protected\n */\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 4,\n // 二级层叠\n show: true,\n axisType: 'time',\n // 模式是时间类型,支持 value, category\n realtime: true,\n left: '20%',\n top: null,\n right: '20%',\n bottom: 0,\n width: null,\n height: 40,\n padding: 5,\n controlPosition: 'left',\n // 'left' 'right' 'top' 'bottom' 'none'\n autoPlay: false,\n rewind: false,\n // 反向播放\n loop: true,\n playInterval: 2000,\n // 播放时间间隔,单位ms\n currentIndex: 0,\n itemStyle: {},\n label: {\n color: '#000'\n },\n data: []\n },\n\n /**\n * @override\n */\n init: function (option, parentModel, ecModel) {\n /**\n * @private\n * @type {module:echarts/data/List}\n */\n this._data;\n /**\n * @private\n * @type {Array.}\n */\n\n this._names;\n this.mergeDefaultAndTheme(option, ecModel);\n\n this._initData();\n },\n\n /**\n * @override\n */\n mergeOption: function (option) {\n TimelineModel.superApply(this, 'mergeOption', arguments);\n\n this._initData();\n },\n\n /**\n * @param {number} [currentIndex]\n */\n setCurrentIndex: function (currentIndex) {\n if (currentIndex == null) {\n currentIndex = this.option.currentIndex;\n }\n\n var count = this._data.count();\n\n if (this.option.loop) {\n currentIndex = (currentIndex % count + count) % count;\n } else {\n currentIndex >= count && (currentIndex = count - 1);\n currentIndex < 0 && (currentIndex = 0);\n }\n\n this.option.currentIndex = currentIndex;\n },\n\n /**\n * @return {number} currentIndex\n */\n getCurrentIndex: function () {\n return this.option.currentIndex;\n },\n\n /**\n * @return {boolean}\n */\n isIndexMax: function () {\n return this.getCurrentIndex() >= this._data.count() - 1;\n },\n\n /**\n * @param {boolean} state true: play, false: stop\n */\n setPlayState: function (state) {\n this.option.autoPlay = !!state;\n },\n\n /**\n * @return {boolean} true: play, false: stop\n */\n getPlayState: function () {\n return !!this.option.autoPlay;\n },\n\n /**\n * @private\n */\n _initData: function () {\n var thisOption = this.option;\n var dataArr = thisOption.data || [];\n var axisType = thisOption.axisType;\n var names = this._names = [];\n\n if (axisType === 'category') {\n var idxArr = [];\n zrUtil.each(dataArr, function (item, index) {\n var value = modelUtil.getDataItemValue(item);\n var newItem;\n\n if (zrUtil.isObject(item)) {\n newItem = zrUtil.clone(item);\n newItem.value = index;\n } else {\n newItem = index;\n }\n\n idxArr.push(newItem);\n\n if (!zrUtil.isString(value) && (value == null || isNaN(value))) {\n value = '';\n }\n\n names.push(value + '');\n });\n dataArr = idxArr;\n }\n\n var dimType = {\n category: 'ordinal',\n time: 'time'\n }[axisType] || 'number';\n var data = this._data = new List([{\n name: 'value',\n type: dimType\n }], this);\n data.initData(dataArr, names);\n },\n getData: function () {\n return this._data;\n },\n\n /**\n * @public\n * @return {Array.} categoreis\n */\n getCategories: function () {\n if (this.get('axisType') === 'category') {\n return this._names.slice();\n }\n }\n});\nvar _default = TimelineModel;\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 ComponentView = require(\"../../view/Component\");\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 _default = ComponentView.extend({\n type: 'timeline'\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\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(option) {\n var timelineOpt = option && option.timeline;\n\n if (!zrUtil.isArray(timelineOpt)) {\n timelineOpt = timelineOpt ? [timelineOpt] : [];\n }\n\n zrUtil.each(timelineOpt, function (opt) {\n if (!opt) {\n return;\n }\n\n compatibleEC2(opt);\n });\n}\n\nfunction compatibleEC2(opt) {\n var type = opt.type;\n var ec2Types = {\n 'number': 'value',\n 'time': 'time'\n }; // Compatible with ec2\n\n if (ec2Types[type]) {\n opt.axisType = ec2Types[type];\n delete opt.type;\n }\n\n transferItem(opt);\n\n if (has(opt, 'controlPosition')) {\n var controlStyle = opt.controlStyle || (opt.controlStyle = {});\n\n if (!has(controlStyle, 'position')) {\n controlStyle.position = opt.controlPosition;\n }\n\n if (controlStyle.position === 'none' && !has(controlStyle, 'show')) {\n controlStyle.show = false;\n delete controlStyle.position;\n }\n\n delete opt.controlPosition;\n }\n\n zrUtil.each(opt.data || [], function (dataItem) {\n if (zrUtil.isObject(dataItem) && !zrUtil.isArray(dataItem)) {\n if (!has(dataItem, 'value') && has(dataItem, 'name')) {\n // In ec2, using name as value.\n dataItem.value = dataItem.name;\n }\n\n transferItem(dataItem);\n }\n });\n}\n\nfunction transferItem(opt) {\n var itemStyle = opt.itemStyle || (opt.itemStyle = {});\n var itemStyleEmphasis = itemStyle.emphasis || (itemStyle.emphasis = {}); // Transfer label out\n\n var label = opt.label || opt.label || {};\n var labelNormal = label.normal || (label.normal = {});\n var excludeLabelAttr = {\n normal: 1,\n emphasis: 1\n };\n zrUtil.each(label, function (value, name) {\n if (!excludeLabelAttr[name] && !has(labelNormal, name)) {\n labelNormal[name] = value;\n }\n });\n\n if (itemStyleEmphasis.label && !has(label, 'emphasis')) {\n label.emphasis = itemStyleEmphasis.label;\n delete itemStyleEmphasis.label;\n }\n}\n\nfunction has(obj, attr) {\n return obj.hasOwnProperty(attr);\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\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*/\necharts.registerAction({\n type: 'timelineChange',\n event: 'timelineChanged',\n update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n var timelineModel = ecModel.getComponent('timeline');\n\n if (timelineModel && payload.currentIndex != null) {\n timelineModel.setCurrentIndex(payload.currentIndex);\n\n if (!timelineModel.get('loop', true) && timelineModel.isIndexMax()) {\n timelineModel.setPlayState(false);\n }\n } // Set normalized currentIndex to payload.\n\n\n ecModel.resetOption('timeline');\n return zrUtil.defaults({\n currentIndex: timelineModel.option.currentIndex\n }, payload);\n});\necharts.registerAction({\n type: 'timelinePlayChange',\n event: 'timelinePlayChanged',\n update: 'update'\n}, function (payload, ecModel) {\n var timelineModel = ecModel.getComponent('timeline');\n\n if (timelineModel && payload.playState != null) {\n timelineModel.setPlayState(payload.playState);\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Component = require(\"../../model/Component\");\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*/\nComponent.registerSubTypeDefaulter('timeline', function () {\n // Only slider now.\n return 'slider';\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar echarts = require(\"../echarts\");\n\nvar graphic = require(\"../util/graphic\");\n\nvar _layout = require(\"../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar _format = require(\"../util/format\");\n\nvar windowOpen = _format.windowOpen;\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// Model\necharts.extendComponentModel({\n type: 'title',\n layoutMode: {\n type: 'box',\n ignoreSize: true\n },\n defaultOption: {\n // 一级层叠\n zlevel: 0,\n // 二级层叠\n z: 6,\n show: true,\n text: '',\n // 超链接跳转\n // link: null,\n // 仅支持self | blank\n target: 'blank',\n subtext: '',\n // 超链接跳转\n // sublink: null,\n // 仅支持self | blank\n subtarget: 'blank',\n // 'center' ¦ 'left' ¦ 'right'\n // ¦ {number}(x坐标,单位px)\n left: 0,\n // 'top' ¦ 'bottom' ¦ 'center'\n // ¦ {number}(y坐标,单位px)\n top: 0,\n // 水平对齐\n // 'auto' | 'left' | 'right' | 'center'\n // 默认根据 left 的位置判断是左对齐还是右对齐\n // textAlign: null\n //\n // 垂直对齐\n // 'auto' | 'top' | 'bottom' | 'middle'\n // 默认根据 top 位置判断是上对齐还是下对齐\n // textVerticalAlign: null\n // textBaseline: null // The same as textVerticalAlign.\n backgroundColor: 'rgba(0,0,0,0)',\n // 标题边框颜色\n borderColor: '#ccc',\n // 标题边框线宽,单位px,默认为0(无边框)\n borderWidth: 0,\n // 标题内边距,单位px,默认各方向内边距为5,\n // 接受数组分别设定上右下左边距,同css\n padding: 5,\n // 主副标题纵向间隔,单位px,默认为10,\n itemGap: 10,\n textStyle: {\n fontSize: 18,\n fontWeight: 'bolder',\n color: '#333'\n },\n subtextStyle: {\n color: '#aaa'\n }\n }\n}); // View\n\necharts.extendComponentView({\n type: 'title',\n render: function (titleModel, ecModel, api) {\n this.group.removeAll();\n\n if (!titleModel.get('show')) {\n return;\n }\n\n var group = this.group;\n var textStyleModel = titleModel.getModel('textStyle');\n var subtextStyleModel = titleModel.getModel('subtextStyle');\n var textAlign = titleModel.get('textAlign');\n var textVerticalAlign = zrUtil.retrieve2(titleModel.get('textBaseline'), titleModel.get('textVerticalAlign'));\n var textEl = new graphic.Text({\n style: graphic.setTextStyle({}, textStyleModel, {\n text: titleModel.get('text'),\n textFill: textStyleModel.getTextColor()\n }, {\n disableBox: true\n }),\n z2: 10\n });\n var textRect = textEl.getBoundingRect();\n var subText = titleModel.get('subtext');\n var subTextEl = new graphic.Text({\n style: graphic.setTextStyle({}, subtextStyleModel, {\n text: subText,\n textFill: subtextStyleModel.getTextColor(),\n y: textRect.height + titleModel.get('itemGap'),\n textVerticalAlign: 'top'\n }, {\n disableBox: true\n }),\n z2: 10\n });\n var link = titleModel.get('link');\n var sublink = titleModel.get('sublink');\n var triggerEvent = titleModel.get('triggerEvent', true);\n textEl.silent = !link && !triggerEvent;\n subTextEl.silent = !sublink && !triggerEvent;\n\n if (link) {\n textEl.on('click', function () {\n windowOpen(link, '_' + titleModel.get('target'));\n });\n }\n\n if (sublink) {\n subTextEl.on('click', function () {\n windowOpen(sublink, '_' + titleModel.get('subtarget'));\n });\n }\n\n textEl.eventData = subTextEl.eventData = triggerEvent ? {\n componentType: 'title',\n componentIndex: titleModel.componentIndex\n } : null;\n group.add(textEl);\n subText && group.add(subTextEl); // If no subText, but add subTextEl, there will be an empty line.\n\n var groupRect = group.getBoundingRect();\n var layoutOption = titleModel.getBoxLayoutParams();\n layoutOption.width = groupRect.width;\n layoutOption.height = groupRect.height;\n var layoutRect = getLayoutRect(layoutOption, {\n width: api.getWidth(),\n height: api.getHeight()\n }, titleModel.get('padding')); // Adjust text align based on position\n\n if (!textAlign) {\n // Align left if title is on the left. center and right is same\n textAlign = titleModel.get('left') || titleModel.get('right');\n\n if (textAlign === 'middle') {\n textAlign = 'center';\n } // Adjust layout by text align\n\n\n if (textAlign === 'right') {\n layoutRect.x += layoutRect.width;\n } else if (textAlign === 'center') {\n layoutRect.x += layoutRect.width / 2;\n }\n }\n\n if (!textVerticalAlign) {\n textVerticalAlign = titleModel.get('top') || titleModel.get('bottom');\n\n if (textVerticalAlign === 'center') {\n textVerticalAlign = 'middle';\n }\n\n if (textVerticalAlign === 'bottom') {\n layoutRect.y += layoutRect.height;\n } else if (textVerticalAlign === 'middle') {\n layoutRect.y += layoutRect.height / 2;\n }\n\n textVerticalAlign = textVerticalAlign || 'top';\n }\n\n group.attr('position', [layoutRect.x, layoutRect.y]);\n var alignStyle = {\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n textEl.setStyle(alignStyle);\n subTextEl.setStyle(alignStyle); // Render background\n // Get groupRect again because textAlign has been changed\n\n groupRect = group.getBoundingRect();\n var padding = layoutRect.margin;\n var style = titleModel.getItemStyle(['color', 'opacity']);\n style.fill = titleModel.get('backgroundColor');\n var rect = new graphic.Rect({\n shape: {\n x: groupRect.x - padding[3],\n y: groupRect.y - padding[0],\n width: groupRect.width + padding[1] + padding[3],\n height: groupRect.height + padding[0] + padding[2],\n r: titleModel.get('borderRadius')\n },\n style: style,\n subPixelOptimize: true,\n silent: true\n });\n group.add(rect);\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nrequire(\"./toolbox/ToolboxModel\");\n\nrequire(\"./toolbox/ToolboxView\");\n\nrequire(\"./toolbox/feature/SaveAsImage\");\n\nrequire(\"./toolbox/feature/MagicType\");\n\nrequire(\"./toolbox/feature/DataView\");\n\nrequire(\"./toolbox/feature/DataZoom\");\n\nrequire(\"./toolbox/feature/Restore\");","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar featureManager = require(\"./featureManager\");\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 ToolboxModel = echarts.extendComponentModel({\n type: 'toolbox',\n layoutMode: {\n type: 'box',\n ignoreSize: true\n },\n optionUpdated: function () {\n ToolboxModel.superApply(this, 'optionUpdated', arguments);\n zrUtil.each(this.option.feature, function (featureOpt, featureName) {\n var Feature = featureManager.get(featureName);\n Feature && zrUtil.merge(featureOpt, Feature.defaultOption);\n });\n },\n defaultOption: {\n show: true,\n z: 6,\n zlevel: 0,\n orient: 'horizontal',\n left: 'right',\n top: 'top',\n // right\n // bottom\n backgroundColor: 'transparent',\n borderColor: '#ccc',\n borderRadius: 0,\n borderWidth: 0,\n padding: 5,\n itemSize: 15,\n itemGap: 8,\n showTitle: true,\n iconStyle: {\n borderColor: '#666',\n color: 'none'\n },\n emphasis: {\n iconStyle: {\n borderColor: '#3E98C5'\n }\n },\n // textStyle: {},\n // feature\n tooltip: {\n show: false\n }\n }\n});\nvar _default = ToolboxModel;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar featureManager = require(\"./featureManager\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Model = require(\"../../model/Model\");\n\nvar DataDiffer = require(\"../../data/DataDiffer\");\n\nvar listComponentHelper = require(\"../helper/listComponent\");\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 _default = echarts.extendComponentView({\n type: 'toolbox',\n render: function (toolboxModel, ecModel, api, payload) {\n var group = this.group;\n group.removeAll();\n\n if (!toolboxModel.get('show')) {\n return;\n }\n\n var itemSize = +toolboxModel.get('itemSize');\n var featureOpts = toolboxModel.get('feature') || {};\n var features = this._features || (this._features = {});\n var featureNames = [];\n zrUtil.each(featureOpts, function (opt, name) {\n featureNames.push(name);\n });\n new DataDiffer(this._featureNames || [], featureNames).add(processFeature).update(processFeature).remove(zrUtil.curry(processFeature, null)).execute(); // Keep for diff.\n\n this._featureNames = featureNames;\n\n function processFeature(newIndex, oldIndex) {\n var featureName = featureNames[newIndex];\n var oldName = featureNames[oldIndex];\n var featureOpt = featureOpts[featureName];\n var featureModel = new Model(featureOpt, toolboxModel, toolboxModel.ecModel);\n var feature; // FIX#11236, merge feature title from MagicType newOption. TODO: consider seriesIndex ?\n\n if (payload && payload.newTitle != null && payload.featureName === featureName) {\n featureOpt.title = payload.newTitle;\n }\n\n if (featureName && !oldName) {\n // Create\n if (isUserFeatureName(featureName)) {\n feature = {\n model: featureModel,\n onclick: featureModel.option.onclick,\n featureName: featureName\n };\n } else {\n var Feature = featureManager.get(featureName);\n\n if (!Feature) {\n return;\n }\n\n feature = new Feature(featureModel, ecModel, api);\n }\n\n features[featureName] = feature;\n } else {\n feature = features[oldName]; // If feature does not exsit.\n\n if (!feature) {\n return;\n }\n\n feature.model = featureModel;\n feature.ecModel = ecModel;\n feature.api = api;\n }\n\n if (!featureName && oldName) {\n feature.dispose && feature.dispose(ecModel, api);\n return;\n }\n\n if (!featureModel.get('show') || feature.unusable) {\n feature.remove && feature.remove(ecModel, api);\n return;\n }\n\n createIconPaths(featureModel, feature, featureName);\n\n featureModel.setIconStatus = function (iconName, status) {\n var option = this.option;\n var iconPaths = this.iconPaths;\n option.iconStatus = option.iconStatus || {};\n option.iconStatus[iconName] = status; // FIXME\n\n iconPaths[iconName] && iconPaths[iconName].trigger(status);\n };\n\n if (feature.render) {\n feature.render(featureModel, ecModel, api, payload);\n }\n }\n\n function createIconPaths(featureModel, feature, featureName) {\n var iconStyleModel = featureModel.getModel('iconStyle');\n var iconStyleEmphasisModel = featureModel.getModel('emphasis.iconStyle'); // If one feature has mutiple icon. they are orginaized as\n // {\n // icon: {\n // foo: '',\n // bar: ''\n // },\n // title: {\n // foo: '',\n // bar: ''\n // }\n // }\n\n var icons = feature.getIcons ? feature.getIcons() : featureModel.get('icon');\n var titles = featureModel.get('title') || {};\n\n if (typeof icons === 'string') {\n var icon = icons;\n var title = titles;\n icons = {};\n titles = {};\n icons[featureName] = icon;\n titles[featureName] = title;\n }\n\n var iconPaths = featureModel.iconPaths = {};\n zrUtil.each(icons, function (iconStr, iconName) {\n var path = graphic.createIcon(iconStr, {}, {\n x: -itemSize / 2,\n y: -itemSize / 2,\n width: itemSize,\n height: itemSize\n });\n path.setStyle(iconStyleModel.getItemStyle());\n path.hoverStyle = iconStyleEmphasisModel.getItemStyle(); // Text position calculation\n\n path.setStyle({\n text: titles[iconName],\n textAlign: iconStyleEmphasisModel.get('textAlign'),\n textBorderRadius: iconStyleEmphasisModel.get('textBorderRadius'),\n textPadding: iconStyleEmphasisModel.get('textPadding'),\n textFill: null\n });\n var tooltipModel = toolboxModel.getModel('tooltip');\n\n if (tooltipModel && tooltipModel.get('show')) {\n path.attr('tooltip', zrUtil.extend({\n content: titles[iconName],\n formatter: tooltipModel.get('formatter', true) || function () {\n return titles[iconName];\n },\n formatterParams: {\n componentType: 'toolbox',\n name: iconName,\n title: titles[iconName],\n $vars: ['name', 'title']\n },\n position: tooltipModel.get('position', true) || 'bottom'\n }, tooltipModel.option));\n }\n\n graphic.setHoverStyle(path);\n\n if (toolboxModel.get('showTitle')) {\n path.__title = titles[iconName];\n path.on('mouseover', function () {\n // Should not reuse above hoverStyle, which might be modified.\n var hoverStyle = iconStyleEmphasisModel.getItemStyle();\n var defaultTextPosition = toolboxModel.get('orient') === 'vertical' ? toolboxModel.get('right') == null ? 'right' : 'left' : toolboxModel.get('bottom') == null ? 'bottom' : 'top';\n path.setStyle({\n textFill: iconStyleEmphasisModel.get('textFill') || hoverStyle.fill || hoverStyle.stroke || '#000',\n textBackgroundColor: iconStyleEmphasisModel.get('textBackgroundColor'),\n textPosition: iconStyleEmphasisModel.get('textPosition') || defaultTextPosition\n });\n }).on('mouseout', function () {\n path.setStyle({\n textFill: null,\n textBackgroundColor: null\n });\n });\n }\n\n path.trigger(featureModel.get('iconStatus.' + iconName) || 'normal');\n group.add(path);\n path.on('click', zrUtil.bind(feature.onclick, feature, ecModel, api, iconName));\n iconPaths[iconName] = path;\n });\n }\n\n listComponentHelper.layout(group, toolboxModel, api); // Render background after group is layout\n // FIXME\n\n group.add(listComponentHelper.makeBackground(group.getBoundingRect(), toolboxModel)); // Adjust icon title positions to avoid them out of screen\n\n group.eachChild(function (icon) {\n var titleText = icon.__title;\n var hoverStyle = icon.hoverStyle; // May be background element\n\n if (hoverStyle && titleText) {\n var rect = textContain.getBoundingRect(titleText, textContain.makeFont(hoverStyle));\n var offsetX = icon.position[0] + group.position[0];\n var offsetY = icon.position[1] + group.position[1] + itemSize;\n var needPutOnTop = false;\n\n if (offsetY + rect.height > api.getHeight()) {\n hoverStyle.textPosition = 'top';\n needPutOnTop = true;\n }\n\n var topOffset = needPutOnTop ? -5 - rect.height : itemSize + 8;\n\n if (offsetX + rect.width / 2 > api.getWidth()) {\n hoverStyle.textPosition = ['100%', topOffset];\n hoverStyle.textAlign = 'right';\n } else if (offsetX - rect.width / 2 < 0) {\n hoverStyle.textPosition = [0, topOffset];\n hoverStyle.textAlign = 'left';\n }\n }\n });\n },\n updateView: function (toolboxModel, ecModel, api, payload) {\n zrUtil.each(this._features, function (feature) {\n feature.updateView && feature.updateView(feature.model, ecModel, api, payload);\n });\n },\n // updateLayout: function (toolboxModel, ecModel, api, payload) {\n // zrUtil.each(this._features, function (feature) {\n // feature.updateLayout && feature.updateLayout(feature.model, ecModel, api, payload);\n // });\n // },\n remove: function (ecModel, api) {\n zrUtil.each(this._features, function (feature) {\n feature.remove && feature.remove(ecModel, api);\n });\n this.group.removeAll();\n },\n dispose: function (ecModel, api) {\n zrUtil.each(this._features, function (feature) {\n feature.dispose && feature.dispose(ecModel, api);\n });\n }\n});\n\nfunction isUserFeatureName(featureName) {\n return featureName.indexOf('my') === 0;\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\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 features = {};\n\nfunction register(name, ctor) {\n features[name] = ctor;\n}\n\nfunction get(name) {\n return features[name];\n}\n\nexports.register = register;\nexports.get = get;","\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 featureManager = require(\"../featureManager\");\n\nvar lang = require(\"../../../lang\");\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 brushLang = lang.toolbox.brush;\n\nfunction Brush(model, ecModel, api) {\n this.model = model;\n this.ecModel = ecModel;\n this.api = api;\n /**\n * @private\n * @type {string}\n */\n\n this._brushType;\n /**\n * @private\n * @type {string}\n */\n\n this._brushMode;\n}\n\nBrush.defaultOption = {\n show: true,\n type: ['rect', 'polygon', 'lineX', 'lineY', 'keep', 'clear'],\n icon: {\n /* eslint-disable */\n rect: 'M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13',\n // jshint ignore:line\n polygon: 'M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2',\n // jshint ignore:line\n lineX: 'M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4',\n // jshint ignore:line\n lineY: 'M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4',\n // jshint ignore:line\n keep: 'M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z',\n // jshint ignore:line\n clear: 'M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2' // jshint ignore:line\n\n /* eslint-enable */\n\n },\n // `rect`, `polygon`, `lineX`, `lineY`, `keep`, `clear`\n title: zrUtil.clone(brushLang.title)\n};\nvar proto = Brush.prototype; // proto.updateLayout = function (featureModel, ecModel, api) {\n\n/* eslint-disable */\n\nproto.render =\n/* eslint-enable */\nproto.updateView = function (featureModel, ecModel, api) {\n var brushType;\n var brushMode;\n var isBrushed;\n ecModel.eachComponent({\n mainType: 'brush'\n }, function (brushModel) {\n brushType = brushModel.brushType;\n brushMode = brushModel.brushOption.brushMode || 'single';\n isBrushed |= brushModel.areas.length;\n });\n this._brushType = brushType;\n this._brushMode = brushMode;\n zrUtil.each(featureModel.get('type', true), function (type) {\n featureModel.setIconStatus(type, (type === 'keep' ? brushMode === 'multiple' : type === 'clear' ? isBrushed : type === brushType) ? 'emphasis' : 'normal');\n });\n};\n\nproto.getIcons = function () {\n var model = this.model;\n var availableIcons = model.get('icon', true);\n var icons = {};\n zrUtil.each(model.get('type', true), function (type) {\n if (availableIcons[type]) {\n icons[type] = availableIcons[type];\n }\n });\n return icons;\n};\n\nproto.onclick = function (ecModel, api, type) {\n var brushType = this._brushType;\n var brushMode = this._brushMode;\n\n if (type === 'clear') {\n // Trigger parallel action firstly\n api.dispatchAction({\n type: 'axisAreaSelect',\n intervals: []\n });\n api.dispatchAction({\n type: 'brush',\n command: 'clear',\n // Clear all areas of all brush components.\n areas: []\n });\n } else {\n api.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'brush',\n brushOption: {\n brushType: type === 'keep' ? brushType : brushType === type ? false : type,\n brushMode: type === 'keep' ? brushMode === 'multiple' ? 'single' : 'multiple' : brushMode\n }\n });\n }\n};\n\nfeatureManager.register('brush', Brush);\nvar _default = Brush;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar eventTool = require(\"zrender/lib/core/event\");\n\nvar lang = require(\"../../../lang\");\n\nvar featureManager = require(\"../featureManager\");\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 dataViewLang = lang.toolbox.dataView;\nvar BLOCK_SPLITER = new Array(60).join('-');\nvar ITEM_SPLITER = '\\t';\n/**\n * Group series into two types\n * 1. on category axis, like line, bar\n * 2. others, like scatter, pie\n * @param {module:echarts/model/Global} ecModel\n * @return {Object}\n * @inner\n */\n\nfunction groupSeries(ecModel) {\n var seriesGroupByCategoryAxis = {};\n var otherSeries = [];\n var meta = [];\n ecModel.eachRawSeries(function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && (coordSys.type === 'cartesian2d' || coordSys.type === 'polar')) {\n var baseAxis = coordSys.getBaseAxis();\n\n if (baseAxis.type === 'category') {\n var key = baseAxis.dim + '_' + baseAxis.index;\n\n if (!seriesGroupByCategoryAxis[key]) {\n seriesGroupByCategoryAxis[key] = {\n categoryAxis: baseAxis,\n valueAxis: coordSys.getOtherAxis(baseAxis),\n series: []\n };\n meta.push({\n axisDim: baseAxis.dim,\n axisIndex: baseAxis.index\n });\n }\n\n seriesGroupByCategoryAxis[key].series.push(seriesModel);\n } else {\n otherSeries.push(seriesModel);\n }\n } else {\n otherSeries.push(seriesModel);\n }\n });\n return {\n seriesGroupByCategoryAxis: seriesGroupByCategoryAxis,\n other: otherSeries,\n meta: meta\n };\n}\n/**\n * Assemble content of series on cateogory axis\n * @param {Array.} series\n * @return {string}\n * @inner\n */\n\n\nfunction assembleSeriesWithCategoryAxis(series) {\n var tables = [];\n zrUtil.each(series, function (group, key) {\n var categoryAxis = group.categoryAxis;\n var valueAxis = group.valueAxis;\n var valueAxisDim = valueAxis.dim;\n var headers = [' '].concat(zrUtil.map(group.series, function (series) {\n return series.name;\n }));\n var columns = [categoryAxis.model.getCategories()];\n zrUtil.each(group.series, function (series) {\n var rawData = series.getRawData();\n columns.push(series.getRawData().mapArray(rawData.mapDimension(valueAxisDim), function (val) {\n return val;\n }));\n }); // Assemble table content\n\n var lines = [headers.join(ITEM_SPLITER)];\n\n for (var i = 0; i < columns[0].length; i++) {\n var items = [];\n\n for (var j = 0; j < columns.length; j++) {\n items.push(columns[j][i]);\n }\n\n lines.push(items.join(ITEM_SPLITER));\n }\n\n tables.push(lines.join('\\n'));\n });\n return tables.join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\n}\n/**\n * Assemble content of other series\n * @param {Array.} series\n * @return {string}\n * @inner\n */\n\n\nfunction assembleOtherSeries(series) {\n return zrUtil.map(series, function (series) {\n var data = series.getRawData();\n var lines = [series.name];\n var vals = [];\n data.each(data.dimensions, function () {\n var argLen = arguments.length;\n var dataIndex = arguments[argLen - 1];\n var name = data.getName(dataIndex);\n\n for (var i = 0; i < argLen - 1; i++) {\n vals[i] = arguments[i];\n }\n\n lines.push((name ? name + ITEM_SPLITER : '') + vals.join(ITEM_SPLITER));\n });\n return lines.join('\\n');\n }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\n}\n/**\n * @param {module:echarts/model/Global}\n * @return {Object}\n * @inner\n */\n\n\nfunction getContentFromModel(ecModel) {\n var result = groupSeries(ecModel);\n return {\n value: zrUtil.filter([assembleSeriesWithCategoryAxis(result.seriesGroupByCategoryAxis), assembleOtherSeries(result.other)], function (str) {\n return str.replace(/[\\n\\t\\s]/g, '');\n }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n'),\n meta: result.meta\n };\n}\n\nfunction trim(str) {\n return str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n}\n/**\n * If a block is tsv format\n */\n\n\nfunction isTSVFormat(block) {\n // Simple method to find out if a block is tsv format\n var firstLine = block.slice(0, block.indexOf('\\n'));\n\n if (firstLine.indexOf(ITEM_SPLITER) >= 0) {\n return true;\n }\n}\n\nvar itemSplitRegex = new RegExp('[' + ITEM_SPLITER + ']+', 'g');\n/**\n * @param {string} tsv\n * @return {Object}\n */\n\nfunction parseTSVContents(tsv) {\n var tsvLines = tsv.split(/\\n+/g);\n var headers = trim(tsvLines.shift()).split(itemSplitRegex);\n var categories = [];\n var series = zrUtil.map(headers, function (header) {\n return {\n name: header,\n data: []\n };\n });\n\n for (var i = 0; i < tsvLines.length; i++) {\n var items = trim(tsvLines[i]).split(itemSplitRegex);\n categories.push(items.shift());\n\n for (var j = 0; j < items.length; j++) {\n series[j] && (series[j].data[i] = items[j]);\n }\n }\n\n return {\n series: series,\n categories: categories\n };\n}\n/**\n * @param {string} str\n * @return {Array.}\n * @inner\n */\n\n\nfunction parseListContents(str) {\n var lines = str.split(/\\n+/g);\n var seriesName = trim(lines.shift());\n var data = [];\n\n for (var i = 0; i < lines.length; i++) {\n // if line is empty, ignore it.\n // there is a case that a user forgot to delete `\\n`.\n var line = trim(lines[i]);\n\n if (!line) {\n continue;\n }\n\n var items = line.split(itemSplitRegex);\n var name = '';\n var value;\n var hasName = false;\n\n if (isNaN(items[0])) {\n // First item is name\n hasName = true;\n name = items[0];\n items = items.slice(1);\n data[i] = {\n name: name,\n value: []\n };\n value = data[i].value;\n } else {\n value = data[i] = [];\n }\n\n for (var j = 0; j < items.length; j++) {\n value.push(+items[j]);\n }\n\n if (value.length === 1) {\n hasName ? data[i].value = value[0] : data[i] = value[0];\n }\n }\n\n return {\n name: seriesName,\n data: data\n };\n}\n/**\n * @param {string} str\n * @param {Array.} blockMetaList\n * @return {Object}\n * @inner\n */\n\n\nfunction parseContents(str, blockMetaList) {\n var blocks = str.split(new RegExp('\\n*' + BLOCK_SPLITER + '\\n*', 'g'));\n var newOption = {\n series: []\n };\n zrUtil.each(blocks, function (block, idx) {\n if (isTSVFormat(block)) {\n var result = parseTSVContents(block);\n var blockMeta = blockMetaList[idx];\n var axisKey = blockMeta.axisDim + 'Axis';\n\n if (blockMeta) {\n newOption[axisKey] = newOption[axisKey] || [];\n newOption[axisKey][blockMeta.axisIndex] = {\n data: result.categories\n };\n newOption.series = newOption.series.concat(result.series);\n }\n } else {\n var result = parseListContents(block);\n newOption.series.push(result);\n }\n });\n return newOption;\n}\n/**\n * @alias {module:echarts/component/toolbox/feature/DataView}\n * @constructor\n * @param {module:echarts/model/Model} model\n */\n\n\nfunction DataView(model) {\n this._dom = null;\n this.model = model;\n}\n\nDataView.defaultOption = {\n show: true,\n readOnly: false,\n optionToContent: null,\n contentToOption: null,\n icon: 'M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28',\n title: zrUtil.clone(dataViewLang.title),\n lang: zrUtil.clone(dataViewLang.lang),\n backgroundColor: '#fff',\n textColor: '#000',\n textareaColor: '#fff',\n textareaBorderColor: '#333',\n buttonColor: '#c23531',\n buttonTextColor: '#fff'\n};\n\nDataView.prototype.onclick = function (ecModel, api) {\n var container = api.getDom();\n var model = this.model;\n\n if (this._dom) {\n container.removeChild(this._dom);\n }\n\n var root = document.createElement('div');\n root.style.cssText = 'position:absolute;left:5px;top:5px;bottom:5px;right:5px;';\n root.style.backgroundColor = model.get('backgroundColor') || '#fff'; // Create elements\n\n var header = document.createElement('h4');\n var lang = model.get('lang') || [];\n header.innerHTML = lang[0] || model.get('title');\n header.style.cssText = 'margin: 10px 20px;';\n header.style.color = model.get('textColor');\n var viewMain = document.createElement('div');\n var textarea = document.createElement('textarea');\n viewMain.style.cssText = 'display:block;width:100%;overflow:auto;';\n var optionToContent = model.get('optionToContent');\n var contentToOption = model.get('contentToOption');\n var result = getContentFromModel(ecModel);\n\n if (typeof optionToContent === 'function') {\n var htmlOrDom = optionToContent(api.getOption());\n\n if (typeof htmlOrDom === 'string') {\n viewMain.innerHTML = htmlOrDom;\n } else if (zrUtil.isDom(htmlOrDom)) {\n viewMain.appendChild(htmlOrDom);\n }\n } else {\n // Use default textarea\n viewMain.appendChild(textarea);\n textarea.readOnly = model.get('readOnly');\n textarea.style.cssText = 'width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;';\n textarea.style.color = model.get('textColor');\n textarea.style.borderColor = model.get('textareaBorderColor');\n textarea.style.backgroundColor = model.get('textareaColor');\n textarea.value = result.value;\n }\n\n var blockMetaList = result.meta;\n var buttonContainer = document.createElement('div');\n buttonContainer.style.cssText = 'position:absolute;bottom:0;left:0;right:0;';\n var buttonStyle = 'float:right;margin-right:20px;border:none;' + 'cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px';\n var closeButton = document.createElement('div');\n var refreshButton = document.createElement('div');\n buttonStyle += ';background-color:' + model.get('buttonColor');\n buttonStyle += ';color:' + model.get('buttonTextColor');\n var self = this;\n\n function close() {\n container.removeChild(root);\n self._dom = null;\n }\n\n eventTool.addEventListener(closeButton, 'click', close);\n eventTool.addEventListener(refreshButton, 'click', function () {\n var newOption;\n\n try {\n if (typeof contentToOption === 'function') {\n newOption = contentToOption(viewMain, api.getOption());\n } else {\n newOption = parseContents(textarea.value, blockMetaList);\n }\n } catch (e) {\n close();\n throw new Error('Data view format error ' + e);\n }\n\n if (newOption) {\n api.dispatchAction({\n type: 'changeDataView',\n newOption: newOption\n });\n }\n\n close();\n });\n closeButton.innerHTML = lang[1];\n refreshButton.innerHTML = lang[2];\n refreshButton.style.cssText = buttonStyle;\n closeButton.style.cssText = buttonStyle;\n !model.get('readOnly') && buttonContainer.appendChild(refreshButton);\n buttonContainer.appendChild(closeButton);\n root.appendChild(header);\n root.appendChild(viewMain);\n root.appendChild(buttonContainer);\n viewMain.style.height = container.clientHeight - 80 + 'px';\n container.appendChild(root);\n this._dom = root;\n};\n\nDataView.prototype.remove = function (ecModel, api) {\n this._dom && api.getDom().removeChild(this._dom);\n};\n\nDataView.prototype.dispose = function (ecModel, api) {\n this.remove(ecModel, api);\n};\n/**\n * @inner\n */\n\n\nfunction tryMergeDataOption(newData, originalData) {\n return zrUtil.map(newData, function (newVal, idx) {\n var original = originalData && originalData[idx];\n\n if (zrUtil.isObject(original) && !zrUtil.isArray(original)) {\n var newValIsObject = zrUtil.isObject(newVal) && !zrUtil.isArray(newVal);\n\n if (!newValIsObject) {\n newVal = {\n value: newVal\n };\n } // original data has name but new data has no name\n\n\n var shouldDeleteName = original.name != null && newVal.name == null; // Original data has option\n\n newVal = zrUtil.defaults(newVal, original);\n shouldDeleteName && delete newVal.name;\n return newVal;\n } else {\n return newVal;\n }\n });\n}\n\nfeatureManager.register('dataView', DataView);\necharts.registerAction({\n type: 'changeDataView',\n event: 'dataViewChanged',\n update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n var newSeriesOptList = [];\n zrUtil.each(payload.newOption.series, function (seriesOpt) {\n var seriesModel = ecModel.getSeriesByName(seriesOpt.name)[0];\n\n if (!seriesModel) {\n // New created series\n // Geuss the series type\n newSeriesOptList.push(zrUtil.extend({\n // Default is scatter\n type: 'scatter'\n }, seriesOpt));\n } else {\n var originalData = seriesModel.get('data');\n newSeriesOptList.push({\n name: seriesOpt.name,\n data: tryMergeDataOption(seriesOpt.data, originalData)\n });\n }\n });\n ecModel.mergeOption(zrUtil.defaults({\n series: newSeriesOptList\n }, payload.newOption));\n});\nvar _default = DataView;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar BrushController = require(\"../../helper/BrushController\");\n\nvar BrushTargetManager = require(\"../../helper/BrushTargetManager\");\n\nvar history = require(\"../../dataZoom/history\");\n\nvar sliderMove = require(\"../../helper/sliderMove\");\n\nvar lang = require(\"../../../lang\");\n\nvar featureManager = require(\"../featureManager\");\n\nrequire(\"../../dataZoomSelect\");\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// Use dataZoomSelect\nvar dataZoomLang = lang.toolbox.dataZoom;\nvar each = zrUtil.each; // Spectial component id start with \\0ec\\0, see echarts/model/Global.js~hasInnerId\n\nvar DATA_ZOOM_ID_BASE = '\\0_ec_\\0toolbox-dataZoom_';\n\nfunction DataZoom(model, ecModel, api) {\n /**\n * @private\n * @type {module:echarts/component/helper/BrushController}\n */\n (this._brushController = new BrushController(api.getZr())).on('brush', zrUtil.bind(this._onBrush, this)).mount();\n /**\n * @private\n * @type {boolean}\n */\n\n this._isZoomActive;\n}\n\nDataZoom.defaultOption = {\n show: true,\n filterMode: 'filter',\n // Icon group\n icon: {\n zoom: 'M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1',\n back: 'M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26'\n },\n // `zoom`, `back`\n title: zrUtil.clone(dataZoomLang.title),\n brushStyle: {\n borderWidth: 0,\n color: 'rgba(0,0,0,0.2)'\n }\n};\nvar proto = DataZoom.prototype;\n\nproto.render = function (featureModel, ecModel, api, payload) {\n this.model = featureModel;\n this.ecModel = ecModel;\n this.api = api;\n updateZoomBtnStatus(featureModel, ecModel, this, payload, api);\n updateBackBtnStatus(featureModel, ecModel);\n};\n\nproto.onclick = function (ecModel, api, type) {\n handlers[type].call(this);\n};\n\nproto.remove = function (ecModel, api) {\n this._brushController.unmount();\n};\n\nproto.dispose = function (ecModel, api) {\n this._brushController.dispose();\n};\n/**\n * @private\n */\n\n\nvar handlers = {\n zoom: function () {\n var nextActive = !this._isZoomActive;\n this.api.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: nextActive\n });\n },\n back: function () {\n this._dispatchZoomAction(history.pop(this.ecModel));\n }\n};\n/**\n * @private\n */\n\nproto._onBrush = function (areas, opt) {\n if (!opt.isEnd || !areas.length) {\n return;\n }\n\n var snapshot = {};\n var ecModel = this.ecModel;\n\n this._brushController.updateCovers([]); // remove cover\n\n\n var brushTargetManager = new BrushTargetManager(retrieveAxisSetting(this.model.option), ecModel, {\n include: ['grid']\n });\n brushTargetManager.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {\n if (coordSys.type !== 'cartesian2d') {\n return;\n }\n\n var brushType = area.brushType;\n\n if (brushType === 'rect') {\n setBatch('x', coordSys, coordRange[0]);\n setBatch('y', coordSys, coordRange[1]);\n } else {\n setBatch({\n lineX: 'x',\n lineY: 'y'\n }[brushType], coordSys, coordRange);\n }\n });\n history.push(ecModel, snapshot);\n\n this._dispatchZoomAction(snapshot);\n\n function setBatch(dimName, coordSys, minMax) {\n var axis = coordSys.getAxis(dimName);\n var axisModel = axis.model;\n var dataZoomModel = findDataZoom(dimName, axisModel, ecModel); // Restrict range.\n\n var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy(axisModel).getMinMaxSpan();\n\n if (minMaxSpan.minValueSpan != null || minMaxSpan.maxValueSpan != null) {\n minMax = sliderMove(0, minMax.slice(), axis.scale.getExtent(), 0, minMaxSpan.minValueSpan, minMaxSpan.maxValueSpan);\n }\n\n dataZoomModel && (snapshot[dataZoomModel.id] = {\n dataZoomId: dataZoomModel.id,\n startValue: minMax[0],\n endValue: minMax[1]\n });\n }\n\n function findDataZoom(dimName, axisModel, ecModel) {\n var found;\n ecModel.eachComponent({\n mainType: 'dataZoom',\n subType: 'select'\n }, function (dzModel) {\n var has = dzModel.getAxisModel(dimName, axisModel.componentIndex);\n has && (found = dzModel);\n });\n return found;\n }\n};\n/**\n * @private\n */\n\n\nproto._dispatchZoomAction = function (snapshot) {\n var batch = []; // Convert from hash map to array.\n\n each(snapshot, function (batchItem, dataZoomId) {\n batch.push(zrUtil.clone(batchItem));\n });\n batch.length && this.api.dispatchAction({\n type: 'dataZoom',\n from: this.uid,\n batch: batch\n });\n};\n\nfunction retrieveAxisSetting(option) {\n var setting = {}; // Compatible with previous setting: null => all axis, false => no axis.\n\n zrUtil.each(['xAxisIndex', 'yAxisIndex'], function (name) {\n setting[name] = option[name];\n setting[name] == null && (setting[name] = 'all');\n (setting[name] === false || setting[name] === 'none') && (setting[name] = []);\n });\n return setting;\n}\n\nfunction updateBackBtnStatus(featureModel, ecModel) {\n featureModel.setIconStatus('back', history.count(ecModel) > 1 ? 'emphasis' : 'normal');\n}\n\nfunction updateZoomBtnStatus(featureModel, ecModel, view, payload, api) {\n var zoomActive = view._isZoomActive;\n\n if (payload && payload.type === 'takeGlobalCursor') {\n zoomActive = payload.key === 'dataZoomSelect' ? payload.dataZoomSelectActive : false;\n }\n\n view._isZoomActive = zoomActive;\n featureModel.setIconStatus('zoom', zoomActive ? 'emphasis' : 'normal');\n var brushTargetManager = new BrushTargetManager(retrieveAxisSetting(featureModel.option), ecModel, {\n include: ['grid']\n });\n\n view._brushController.setPanels(brushTargetManager.makePanelOpts(api, function (targetInfo) {\n return targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared ? 'lineX' : !targetInfo.xAxisDeclared && targetInfo.yAxisDeclared ? 'lineY' : 'rect';\n })).enableBrush(zoomActive ? {\n brushType: 'auto',\n brushStyle: featureModel.getModel('brushStyle').getItemStyle()\n } : false);\n}\n\nfeatureManager.register('dataZoom', DataZoom); // Create special dataZoom option for select\n// FIXME consider the case of merge option, where axes options are not exists.\n\necharts.registerPreprocessor(function (option) {\n if (!option) {\n return;\n }\n\n var dataZoomOpts = option.dataZoom || (option.dataZoom = []);\n\n if (!zrUtil.isArray(dataZoomOpts)) {\n option.dataZoom = dataZoomOpts = [dataZoomOpts];\n }\n\n var toolboxOpt = option.toolbox;\n\n if (toolboxOpt) {\n // Assume there is only one toolbox\n if (zrUtil.isArray(toolboxOpt)) {\n toolboxOpt = toolboxOpt[0];\n }\n\n if (toolboxOpt && toolboxOpt.feature) {\n var dataZoomOpt = toolboxOpt.feature.dataZoom; // FIXME: If add dataZoom when setOption in merge mode,\n // no axis info to be added. See `test/dataZoom-extreme.html`\n\n addForAxis('xAxis', dataZoomOpt);\n addForAxis('yAxis', dataZoomOpt);\n }\n }\n\n function addForAxis(axisName, dataZoomOpt) {\n if (!dataZoomOpt) {\n return;\n } // Try not to modify model, because it is not merged yet.\n\n\n var axisIndicesName = axisName + 'Index';\n var givenAxisIndices = dataZoomOpt[axisIndicesName];\n\n if (givenAxisIndices != null && givenAxisIndices !== 'all' && !zrUtil.isArray(givenAxisIndices)) {\n givenAxisIndices = givenAxisIndices === false || givenAxisIndices === 'none' ? [] : [givenAxisIndices];\n }\n\n forEachComponent(axisName, function (axisOpt, axisIndex) {\n if (givenAxisIndices != null && givenAxisIndices !== 'all' && zrUtil.indexOf(givenAxisIndices, axisIndex) === -1) {\n return;\n }\n\n var newOpt = {\n type: 'select',\n $fromToolbox: true,\n // Default to be filter\n filterMode: dataZoomOpt.filterMode || 'filter',\n // Id for merge mapping.\n id: DATA_ZOOM_ID_BASE + axisName + axisIndex\n }; // FIXME\n // Only support one axis now.\n\n newOpt[axisIndicesName] = axisIndex;\n dataZoomOpts.push(newOpt);\n });\n }\n\n function forEachComponent(mainType, cb) {\n var opts = option[mainType];\n\n if (!zrUtil.isArray(opts)) {\n opts = opts ? [opts] : [];\n }\n\n each(opts, cb);\n }\n});\nvar _default = DataZoom;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar lang = require(\"../../../lang\");\n\nvar featureManager = require(\"../featureManager\");\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 magicTypeLang = lang.toolbox.magicType;\nvar INNER_STACK_KEYWORD = '__ec_magicType_stack__';\n\nfunction MagicType(model) {\n this.model = model;\n}\n\nMagicType.defaultOption = {\n show: true,\n type: [],\n // Icon group\n icon: {\n /* eslint-disable */\n line: 'M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4',\n bar: 'M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7',\n stack: 'M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z' // jshint ignore:line\n\n /* eslint-enable */\n\n },\n // `line`, `bar`, `stack`, `tiled`\n title: zrUtil.clone(magicTypeLang.title),\n option: {},\n seriesIndex: {}\n};\nvar proto = MagicType.prototype;\n\nproto.getIcons = function () {\n var model = this.model;\n var availableIcons = model.get('icon');\n var icons = {};\n zrUtil.each(model.get('type'), function (type) {\n if (availableIcons[type]) {\n icons[type] = availableIcons[type];\n }\n });\n return icons;\n};\n\nvar seriesOptGenreator = {\n 'line': function (seriesType, seriesId, seriesModel, model) {\n if (seriesType === 'bar') {\n return zrUtil.merge({\n id: seriesId,\n type: 'line',\n // Preserve data related option\n data: seriesModel.get('data'),\n stack: seriesModel.get('stack'),\n markPoint: seriesModel.get('markPoint'),\n markLine: seriesModel.get('markLine')\n }, model.get('option.line') || {}, true);\n }\n },\n 'bar': function (seriesType, seriesId, seriesModel, model) {\n if (seriesType === 'line') {\n return zrUtil.merge({\n id: seriesId,\n type: 'bar',\n // Preserve data related option\n data: seriesModel.get('data'),\n stack: seriesModel.get('stack'),\n markPoint: seriesModel.get('markPoint'),\n markLine: seriesModel.get('markLine')\n }, model.get('option.bar') || {}, true);\n }\n },\n 'stack': function (seriesType, seriesId, seriesModel, model) {\n var isStack = seriesModel.get('stack') === INNER_STACK_KEYWORD;\n\n if (seriesType === 'line' || seriesType === 'bar') {\n model.setIconStatus('stack', isStack ? 'normal' : 'emphasis');\n return zrUtil.merge({\n id: seriesId,\n stack: isStack ? '' : INNER_STACK_KEYWORD\n }, model.get('option.stack') || {}, true);\n }\n }\n};\nvar radioTypes = [['line', 'bar'], ['stack']];\n\nproto.onclick = function (ecModel, api, type) {\n var model = this.model;\n var seriesIndex = model.get('seriesIndex.' + type); // Not supported magicType\n\n if (!seriesOptGenreator[type]) {\n return;\n }\n\n var newOption = {\n series: []\n };\n\n var generateNewSeriesTypes = function (seriesModel) {\n var seriesType = seriesModel.subType;\n var seriesId = seriesModel.id;\n var newSeriesOpt = seriesOptGenreator[type](seriesType, seriesId, seriesModel, model);\n\n if (newSeriesOpt) {\n // PENDING If merge original option?\n zrUtil.defaults(newSeriesOpt, seriesModel.option);\n newOption.series.push(newSeriesOpt);\n } // Modify boundaryGap\n\n\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.type === 'cartesian2d' && (type === 'line' || type === 'bar')) {\n var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\n\n if (categoryAxis) {\n var axisDim = categoryAxis.dim;\n var axisType = axisDim + 'Axis';\n var axisModel = ecModel.queryComponents({\n mainType: axisType,\n index: seriesModel.get(name + 'Index'),\n id: seriesModel.get(name + 'Id')\n })[0];\n var axisIndex = axisModel.componentIndex;\n newOption[axisType] = newOption[axisType] || [];\n\n for (var i = 0; i <= axisIndex; i++) {\n newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {};\n }\n\n newOption[axisType][axisIndex].boundaryGap = type === 'bar';\n }\n }\n };\n\n zrUtil.each(radioTypes, function (radio) {\n if (zrUtil.indexOf(radio, type) >= 0) {\n zrUtil.each(radio, function (item) {\n model.setIconStatus(item, 'normal');\n });\n }\n });\n model.setIconStatus(type, 'emphasis');\n ecModel.eachComponent({\n mainType: 'series',\n query: seriesIndex == null ? null : {\n seriesIndex: seriesIndex\n }\n }, generateNewSeriesTypes);\n var newTitle; // Change title of stack\n\n if (type === 'stack') {\n var isStack = newOption.series && newOption.series[0] && newOption.series[0].stack === INNER_STACK_KEYWORD;\n newTitle = isStack ? zrUtil.merge({\n stack: magicTypeLang.title.tiled\n }, magicTypeLang.title) : zrUtil.clone(magicTypeLang.title);\n }\n\n api.dispatchAction({\n type: 'changeMagicType',\n currentType: type,\n newOption: newOption,\n newTitle: newTitle,\n featureName: 'magicType'\n });\n};\n\necharts.registerAction({\n type: 'changeMagicType',\n event: 'magicTypeChanged',\n update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n ecModel.mergeOption(payload.newOption);\n});\nfeatureManager.register('magicType', MagicType);\nvar _default = MagicType;\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\nvar history = require(\"../../dataZoom/history\");\n\nvar lang = require(\"../../../lang\");\n\nvar featureManager = require(\"../featureManager\");\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 restoreLang = lang.toolbox.restore;\n\nfunction Restore(model) {\n this.model = model;\n}\n\nRestore.defaultOption = {\n show: true,\n\n /* eslint-disable */\n icon: 'M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5',\n\n /* eslint-enable */\n title: restoreLang.title\n};\nvar proto = Restore.prototype;\n\nproto.onclick = function (ecModel, api, type) {\n history.clear(ecModel);\n api.dispatchAction({\n type: 'restore',\n from: this.uid\n });\n};\n\nfeatureManager.register('restore', Restore);\necharts.registerAction({\n type: 'restore',\n event: 'restore',\n update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n ecModel.resetOption('recreate');\n});\nvar _default = Restore;\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 env = require(\"zrender/lib/core/env\");\n\nvar lang = require(\"../../../lang\");\n\nvar featureManager = require(\"../featureManager\");\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 Uint8Array */\nvar saveAsImageLang = lang.toolbox.saveAsImage;\n\nfunction SaveAsImage(model) {\n this.model = model;\n}\n\nSaveAsImage.defaultOption = {\n show: true,\n icon: 'M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0',\n title: saveAsImageLang.title,\n type: 'png',\n // Default use option.backgroundColor\n // backgroundColor: '#fff',\n connectedBackgroundColor: '#fff',\n name: '',\n excludeComponents: ['toolbox'],\n pixelRatio: 1,\n lang: saveAsImageLang.lang.slice()\n};\nSaveAsImage.prototype.unusable = !env.canvasSupported;\nvar proto = SaveAsImage.prototype;\n\nproto.onclick = function (ecModel, api) {\n var model = this.model;\n var title = model.get('name') || ecModel.get('title.0.text') || 'echarts';\n var isSvg = api.getZr().painter.getType() === 'svg';\n var type = isSvg ? 'svg' : model.get('type', true) || 'png';\n var url = api.getConnectedDataURL({\n type: type,\n backgroundColor: model.get('backgroundColor', true) || ecModel.get('backgroundColor') || '#fff',\n connectedBackgroundColor: model.get('connectedBackgroundColor'),\n excludeComponents: model.get('excludeComponents'),\n pixelRatio: model.get('pixelRatio')\n }); // Chrome and Firefox\n\n if (typeof MouseEvent === 'function' && !env.browser.ie && !env.browser.edge) {\n var $a = document.createElement('a');\n $a.download = title + '.' + type;\n $a.target = '_blank';\n $a.href = url;\n var evt = new MouseEvent('click', {\n // some micro front-end framework, window maybe is a Proxy\n view: document.defaultView,\n bubbles: true,\n cancelable: false\n });\n $a.dispatchEvent(evt);\n } // IE\n else {\n if (window.navigator.msSaveOrOpenBlob) {\n var bstr = atob(url.split(',')[1]);\n var n = bstr.length;\n var u8arr = new Uint8Array(n);\n\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n\n var blob = new Blob([u8arr]);\n window.navigator.msSaveOrOpenBlob(blob, title + '.' + type);\n } else {\n var lang = model.get('lang');\n var html = '' + '' + '' + '';\n var tab = window.open();\n tab.document.write(html);\n }\n }\n};\n\nfeatureManager.register('saveAsImage', SaveAsImage);\nvar _default = SaveAsImage;\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\nrequire(\"./axisPointer\");\n\nrequire(\"./tooltip/TooltipModel\");\n\nrequire(\"./tooltip/TooltipView\");\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// FIXME Better way to pack data in graphic element\n\n/**\n * @action\n * @property {string} type\n * @property {number} seriesIndex\n * @property {number} dataIndex\n * @property {number} [x]\n * @property {number} [y]\n */\necharts.registerAction({\n type: 'showTip',\n event: 'showTip',\n update: 'tooltip:manuallyShowTip'\n}, // noop\nfunction () {});\necharts.registerAction({\n type: 'hideTip',\n event: 'hideTip',\n update: 'tooltip:manuallyHideTip'\n}, // noop\nfunction () {});","\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 zrColor = require(\"zrender/lib/tool/color\");\n\nvar eventUtil = require(\"zrender/lib/core/event\");\n\nvar domUtil = require(\"zrender/lib/core/dom\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar formatUtil = require(\"../../util/format\");\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 each = zrUtil.each;\nvar toCamelCase = formatUtil.toCamelCase;\nvar vendors = ['', '-webkit-', '-moz-', '-o-'];\nvar gCssText = 'position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;';\n/**\n * @param {number} duration\n * @return {string}\n * @inner\n */\n\nfunction assembleTransition(duration) {\n var transitionCurve = 'cubic-bezier(0.23, 1, 0.32, 1)';\n var transitionText = 'left ' + duration + 's ' + transitionCurve + ',' + 'top ' + duration + 's ' + transitionCurve;\n return zrUtil.map(vendors, function (vendorPrefix) {\n return vendorPrefix + 'transition:' + transitionText;\n }).join(';');\n}\n/**\n * @param {Object} textStyle\n * @return {string}\n * @inner\n */\n\n\nfunction assembleFont(textStyleModel) {\n var cssText = [];\n var fontSize = textStyleModel.get('fontSize');\n var color = textStyleModel.getTextColor();\n color && cssText.push('color:' + color);\n cssText.push('font:' + textStyleModel.getFont());\n var lineHeight = textStyleModel.get('lineHeight');\n\n if (lineHeight == null) {\n lineHeight = Math.round(fontSize * 3 / 2);\n }\n\n fontSize && cssText.push('line-height:' + lineHeight + 'px');\n var shadowColor = textStyleModel.get('textShadowColor');\n var shadowBlur = textStyleModel.get('textShadowBlur') || 0;\n var shadowOffsetX = textStyleModel.get('textShadowOffsetX') || 0;\n var shadowOffsetY = textStyleModel.get('textShadowOffsetY') || 0;\n shadowBlur && cssText.push('text-shadow:' + shadowOffsetX + 'px ' + shadowOffsetY + 'px ' + shadowBlur + 'px ' + shadowColor);\n each(['decoration', 'align'], function (name) {\n var val = textStyleModel.get(name);\n val && cssText.push('text-' + name + ':' + val);\n });\n return cssText.join(';');\n}\n/**\n * @param {Object} tooltipModel\n * @return {string}\n * @inner\n */\n\n\nfunction assembleCssText(tooltipModel) {\n var cssText = [];\n var transitionDuration = tooltipModel.get('transitionDuration');\n var backgroundColor = tooltipModel.get('backgroundColor');\n var textStyleModel = tooltipModel.getModel('textStyle');\n var padding = tooltipModel.get('padding'); // Animation transition. Do not animate when transitionDuration is 0.\n\n transitionDuration && cssText.push(assembleTransition(transitionDuration));\n\n if (backgroundColor) {\n if (env.canvasSupported) {\n cssText.push('background-Color:' + backgroundColor);\n } else {\n // for ie\n cssText.push('background-Color:#' + zrColor.toHex(backgroundColor));\n cssText.push('filter:alpha(opacity=70)');\n }\n } // Border style\n\n\n each(['width', 'color', 'radius'], function (name) {\n var borderName = 'border-' + name;\n var camelCase = toCamelCase(borderName);\n var val = tooltipModel.get(camelCase);\n val != null && cssText.push(borderName + ':' + val + (name === 'color' ? '' : 'px'));\n }); // Text style\n\n cssText.push(assembleFont(textStyleModel)); // Padding\n\n if (padding != null) {\n cssText.push('padding:' + formatUtil.normalizeCssArray(padding).join('px ') + 'px');\n }\n\n return cssText.join(';') + ';';\n} // If not able to make, do not modify the input `out`.\n\n\nfunction makeStyleCoord(out, zr, appendToBody, zrX, zrY) {\n var zrPainter = zr && zr.painter;\n\n if (appendToBody) {\n var zrViewportRoot = zrPainter && zrPainter.getViewportRoot();\n\n if (zrViewportRoot) {\n // Some APPs might use scale on body, so we support CSS transform here.\n domUtil.transformLocalCoord(out, zrViewportRoot, document.body, zrX, zrY);\n }\n } else {\n out[0] = zrX;\n out[1] = zrY; // xy should be based on canvas root. But tooltipContent is\n // the sibling of canvas root. So padding of ec container\n // should be considered here.\n\n var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset();\n\n if (viewportRootOffset) {\n out[0] += viewportRootOffset.offsetLeft;\n out[1] += viewportRootOffset.offsetTop;\n }\n }\n\n out[2] = out[0] / zr.getWidth(); // The ratio of left to width\n\n out[3] = out[1] / zr.getHeight(); // The ratio of top to height\n}\n/**\n * @alias module:echarts/component/tooltip/TooltipContent\n * @param {HTMLElement} container\n * @param {ExtensionAPI} api\n * @param {Object} [opt]\n * @param {boolean} [opt.appendToBody]\n * `false`: the DOM element will be inside the container. Default value.\n * `true`: the DOM element will be appended to HTML body, which avoid\n * some overflow clip but intrude outside of the container.\n * @constructor\n */\n\n\nfunction TooltipContent(container, api, opt) {\n if (env.wxa) {\n return null;\n }\n\n var el = document.createElement('div');\n el.domBelongToZr = true;\n this.el = el;\n var zr = this._zr = api.getZr();\n var appendToBody = this._appendToBody = opt && opt.appendToBody;\n this._styleCoord = [0, 0, 0, 0]; // [left, top, left/width, top/height]\n\n makeStyleCoord(this._styleCoord, zr, appendToBody, api.getWidth() / 2, api.getHeight() / 2);\n\n if (appendToBody) {\n document.body.appendChild(el);\n } else {\n container.appendChild(el);\n }\n\n this._container = container;\n this._show = false;\n /**\n * @private\n */\n\n this._hideTimeout; // FIXME\n // Is it needed to trigger zr event manually if\n // the browser do not support `pointer-events: none`.\n\n var self = this;\n\n el.onmouseenter = function () {\n // clear the timeout in hideLater and keep showing tooltip\n if (self._enterable) {\n clearTimeout(self._hideTimeout);\n self._show = true;\n }\n\n self._inContent = true;\n };\n\n el.onmousemove = function (e) {\n e = e || window.event;\n\n if (!self._enterable) {\n // `pointer-events: none` is set to tooltip content div\n // if `enterable` is set as `false`, and `el.onmousemove`\n // can not be triggered. But in browser that do not\n // support `pointer-events`, we need to do this:\n // Try trigger zrender event to avoid mouse\n // in and out shape too frequently\n var handler = zr.handler;\n var zrViewportRoot = zr.painter.getViewportRoot();\n eventUtil.normalizeEvent(zrViewportRoot, e, true);\n handler.dispatch('mousemove', e);\n }\n };\n\n el.onmouseleave = function () {\n if (self._enterable) {\n if (self._show) {\n self.hideLater(self._hideDelay);\n }\n }\n\n self._inContent = false;\n };\n}\n\nTooltipContent.prototype = {\n constructor: TooltipContent,\n\n /**\n * @private\n * @type {boolean}\n */\n _enterable: true,\n\n /**\n * Update when tooltip is rendered\n */\n update: function (tooltipModel) {\n // FIXME\n // Move this logic to ec main?\n var container = this._container;\n var stl = container.currentStyle || document.defaultView.getComputedStyle(container);\n var domStyle = container.style;\n\n if (domStyle.position !== 'absolute' && stl.position !== 'absolute') {\n domStyle.position = 'relative';\n }\n\n var alwaysShowContent = tooltipModel.get('alwaysShowContent');\n alwaysShowContent && this._moveTooltipIfResized(); // Hide the tooltip\n // PENDING\n // this.hide();\n },\n\n /**\n * when `alwaysShowContent` is true,\n * we should move the tooltip after chart resized\n */\n _moveTooltipIfResized: function () {\n var ratioX = this._styleCoord[2]; // The ratio of left to width\n\n var ratioY = this._styleCoord[3]; // The ratio of top to height\n\n var realX = ratioX * this._zr.getWidth();\n\n var realY = ratioY * this._zr.getHeight();\n\n this.moveTo(realX, realY);\n },\n show: function (tooltipModel) {\n clearTimeout(this._hideTimeout);\n var el = this.el;\n var styleCoord = this._styleCoord;\n el.style.cssText = gCssText + assembleCssText(tooltipModel) // Because of the reason described in:\n // http://stackoverflow.com/questions/21125587/css3-transition-not-working-in-chrome-anymore\n // we should set initial value to `left` and `top`.\n + ';left:' + styleCoord[0] + 'px;top:' + styleCoord[1] + 'px;' + (tooltipModel.get('extraCssText') || '');\n el.style.display = el.innerHTML ? 'block' : 'none'; // If mouse occasionally move over the tooltip, a mouseout event will be\n // triggered by canvas, and cause some unexpectable result like dragging\n // stop, \"unfocusAdjacency\". Here `pointer-events: none` is used to solve\n // it. Although it is not supported by IE8~IE10, fortunately it is a rare\n // scenario.\n\n el.style.pointerEvents = this._enterable ? 'auto' : 'none';\n this._show = true;\n },\n setContent: function (content) {\n this.el.innerHTML = content == null ? '' : content;\n },\n setEnterable: function (enterable) {\n this._enterable = enterable;\n },\n getSize: function () {\n var el = this.el;\n return [el.clientWidth, el.clientHeight];\n },\n moveTo: function (zrX, zrY) {\n var styleCoord = this._styleCoord;\n makeStyleCoord(styleCoord, this._zr, this._appendToBody, zrX, zrY);\n var style = this.el.style;\n style.left = styleCoord[0] + 'px';\n style.top = styleCoord[1] + 'px';\n },\n hide: function () {\n this.el.style.display = 'none';\n this._show = false;\n },\n hideLater: function (time) {\n if (this._show && !(this._inContent && this._enterable)) {\n if (time) {\n this._hideDelay = time; // Set show false to avoid invoke hideLater multiple times\n\n this._show = false;\n this._hideTimeout = setTimeout(zrUtil.bind(this.hide, this), time);\n } else {\n this.hide();\n }\n }\n },\n isShow: function () {\n return this._show;\n },\n dispose: function () {\n this.el.parentNode.removeChild(this.el);\n },\n getOuterSize: function () {\n var width = this.el.clientWidth;\n var height = this.el.clientHeight; // Consider browser compatibility.\n // IE8 does not support getComputedStyle.\n\n if (document.defaultView && document.defaultView.getComputedStyle) {\n var stl = document.defaultView.getComputedStyle(this.el);\n\n if (stl) {\n width += parseInt(stl.borderLeftWidth, 10) + parseInt(stl.borderRightWidth, 10);\n height += parseInt(stl.borderTopWidth, 10) + parseInt(stl.borderBottomWidth, 10);\n }\n }\n\n return {\n width: width,\n height: height\n };\n }\n};\nvar _default = TooltipContent;\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*/\nvar _default = echarts.extendComponentModel({\n type: 'tooltip',\n dependencies: ['axisPointer'],\n defaultOption: {\n zlevel: 0,\n z: 60,\n show: true,\n // tooltip主体内容\n showContent: true,\n // 'trigger' only works on coordinate system.\n // 'item' | 'axis' | 'none'\n trigger: 'item',\n // 'click' | 'mousemove' | 'none'\n triggerOn: 'mousemove|click',\n alwaysShowContent: false,\n displayMode: 'single',\n // 'single' | 'multipleByCoordSys'\n renderMode: 'auto',\n // 'auto' | 'html' | 'richText'\n // 'auto': use html by default, and use non-html if `document` is not defined\n // 'html': use html for tooltip\n // 'richText': use canvas, svg, and etc. for tooltip\n // 位置 {Array} | {Function}\n // position: null\n // Consider triggered from axisPointer handle, verticalAlign should be 'middle'\n // align: null,\n // verticalAlign: null,\n // 是否约束 content 在 viewRect 中。默认 false 是为了兼容以前版本。\n confine: false,\n // 内容格式器:{string}(Template) ¦ {Function}\n // formatter: null\n showDelay: 0,\n // 隐藏延迟,单位ms\n hideDelay: 100,\n // 动画变换时间,单位s\n transitionDuration: 0.4,\n enterable: false,\n // 提示背景颜色,默认为透明度为0.7的黑色\n backgroundColor: 'rgba(50,50,50,0.7)',\n // 提示边框颜色\n borderColor: '#333',\n // 提示边框圆角,单位px,默认为4\n borderRadius: 4,\n // 提示边框线宽,单位px,默认为0(无边框)\n borderWidth: 0,\n // 提示内边距,单位px,默认各方向内边距为5,\n // 接受数组分别设定上右下左边距,同css\n padding: 5,\n // Extra css text\n extraCssText: '',\n // 坐标轴指示器,坐标轴触发有效\n axisPointer: {\n // 默认为直线\n // 可选为:'line' | 'shadow' | 'cross'\n type: 'line',\n // type 为 line 的时候有效,指定 tooltip line 所在的轴,可选\n // 可选 'x' | 'y' | 'angle' | 'radius' | 'auto'\n // 默认 'auto',会选择类型为 category 的轴,对于双数值轴,笛卡尔坐标系会默认选择 x 轴\n // 极坐标系会默认选择 angle 轴\n axis: 'auto',\n animation: 'auto',\n animationDurationUpdate: 200,\n animationEasingUpdate: 'exponentialOut',\n crossStyle: {\n color: '#999',\n width: 1,\n type: 'dashed',\n // TODO formatter\n textStyle: {} // lineStyle and shadowStyle should not be specified here,\n // otherwise it will always override those styles on option.axisPointer.\n\n }\n },\n textStyle: {\n color: '#fff',\n fontSize: 14\n }\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar Text = require(\"zrender/lib/graphic/Text\");\n\nvar graphicUtil = require(\"../../util/graphic\");\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// import Group from 'zrender/src/container/Group';\nfunction makeStyleCoord(out, zr, zrX, zrY) {\n out[0] = zrX;\n out[1] = zrY;\n out[2] = out[0] / zr.getWidth(); // The ratio of left to width\n\n out[3] = out[1] / zr.getHeight(); // The ratio of top to height\n}\n/**\n * @alias module:echarts/component/tooltip/TooltipRichContent\n * @constructor\n */\n\n\nfunction TooltipRichContent(api) {\n var zr = this._zr = api.getZr();\n this._styleCoord = [0, 0, 0, 0]; // [left, top, left/width, top/height]\n\n makeStyleCoord(this._styleCoord, zr, api.getWidth() / 2, api.getHeight() / 2);\n this._show = false;\n /**\n * @private\n */\n\n this._hideTimeout;\n}\n\nTooltipRichContent.prototype = {\n constructor: TooltipRichContent,\n\n /**\n * @private\n * @type {boolean}\n */\n _enterable: true,\n\n /**\n * Update when tooltip is rendered\n */\n update: function (tooltipModel) {\n var alwaysShowContent = tooltipModel.get('alwaysShowContent');\n alwaysShowContent && this._moveTooltipIfResized();\n },\n\n /**\n * when `alwaysShowContent` is true,\n * we should move the tooltip after chart resized\n */\n _moveTooltipIfResized: function () {\n var ratioX = this._styleCoord[2]; // The ratio of left to width\n\n var ratioY = this._styleCoord[3]; // The ratio of top to height\n\n var realX = ratioX * this._zr.getWidth();\n\n var realY = ratioY * this._zr.getHeight();\n\n this.moveTo(realX, realY);\n },\n show: function (tooltipModel) {\n if (this._hideTimeout) {\n clearTimeout(this._hideTimeout);\n }\n\n this.el.attr('show', true);\n this._show = true;\n },\n\n /**\n * Set tooltip content\n *\n * @param {string} content rich text string of content\n * @param {Object} markerRich rich text style\n * @param {Object} tooltipModel tooltip model\n */\n setContent: function (content, markerRich, tooltipModel) {\n if (this.el) {\n this._zr.remove(this.el);\n }\n\n var markers = {};\n var text = content;\n var prefix = '{marker';\n var suffix = '|}';\n var startId = text.indexOf(prefix);\n\n while (startId >= 0) {\n var endId = text.indexOf(suffix);\n var name = text.substr(startId + prefix.length, endId - startId - prefix.length);\n\n if (name.indexOf('sub') > -1) {\n markers['marker' + name] = {\n textWidth: 4,\n textHeight: 4,\n textBorderRadius: 2,\n textBackgroundColor: markerRich[name],\n // TODO: textOffset is not implemented for rich text\n textOffset: [3, 0]\n };\n } else {\n markers['marker' + name] = {\n textWidth: 10,\n textHeight: 10,\n textBorderRadius: 5,\n textBackgroundColor: markerRich[name]\n };\n }\n\n text = text.substr(endId + 1);\n startId = text.indexOf('{marker');\n }\n\n var textStyleModel = tooltipModel.getModel('textStyle');\n var fontSize = textStyleModel.get('fontSize');\n var lineHeight = tooltipModel.get('textLineHeight');\n\n if (lineHeight == null) {\n lineHeight = Math.round(fontSize * 3 / 2);\n }\n\n this.el = new Text({\n style: graphicUtil.setTextStyle({}, textStyleModel, {\n rich: markers,\n text: content,\n textBackgroundColor: tooltipModel.get('backgroundColor'),\n textBorderRadius: tooltipModel.get('borderRadius'),\n textFill: tooltipModel.get('textStyle.color'),\n textPadding: tooltipModel.get('padding'),\n textLineHeight: lineHeight\n }),\n z: tooltipModel.get('z')\n });\n\n this._zr.add(this.el);\n\n var self = this;\n this.el.on('mouseover', function () {\n // clear the timeout in hideLater and keep showing tooltip\n if (self._enterable) {\n clearTimeout(self._hideTimeout);\n self._show = true;\n }\n\n self._inContent = true;\n });\n this.el.on('mouseout', function () {\n if (self._enterable) {\n if (self._show) {\n self.hideLater(self._hideDelay);\n }\n }\n\n self._inContent = false;\n });\n },\n setEnterable: function (enterable) {\n this._enterable = enterable;\n },\n getSize: function () {\n var bounding = this.el.getBoundingRect();\n return [bounding.width, bounding.height];\n },\n moveTo: function (x, y) {\n if (this.el) {\n var styleCoord = this._styleCoord;\n makeStyleCoord(styleCoord, this._zr, x, y);\n this.el.attr('position', [styleCoord[0], styleCoord[1]]);\n }\n },\n hide: function () {\n if (this.el) {\n this.el.hide();\n }\n\n this._show = false;\n },\n hideLater: function (time) {\n if (this._show && !(this._inContent && this._enterable)) {\n if (time) {\n this._hideDelay = time; // Set show false to avoid invoke hideLater multiple times\n\n this._show = false;\n this._hideTimeout = setTimeout(zrUtil.bind(this.hide, this), time);\n } else {\n this.hide();\n }\n }\n },\n isShow: function () {\n return this._show;\n },\n dispose: function () {\n clearTimeout(this._hideTimeout);\n\n if (this.el) {\n this._zr.remove(this.el);\n }\n },\n getOuterSize: function () {\n var size = this.getSize();\n return {\n width: size[0],\n height: size[1]\n };\n }\n};\nvar _default = TooltipRichContent;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar TooltipContent = require(\"./TooltipContent\");\n\nvar TooltipRichContent = require(\"./TooltipRichContent\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar findPointFromSeries = require(\"../axisPointer/findPointFromSeries\");\n\nvar layoutUtil = require(\"../../util/layout\");\n\nvar Model = require(\"../../model/Model\");\n\nvar globalListener = require(\"../axisPointer/globalListener\");\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar axisPointerViewHelper = require(\"../axisPointer/viewHelper\");\n\nvar _model = require(\"../../util/model\");\n\nvar getTooltipRenderMode = _model.getTooltipRenderMode;\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 bind = zrUtil.bind;\nvar each = zrUtil.each;\nvar parsePercent = numberUtil.parsePercent;\nvar proxyRect = new graphic.Rect({\n shape: {\n x: -1,\n y: -1,\n width: 2,\n height: 2\n }\n});\n\nvar _default = echarts.extendComponentView({\n type: 'tooltip',\n init: function (ecModel, api) {\n if (env.node) {\n return;\n }\n\n var tooltipModel = ecModel.getComponent('tooltip');\n var renderMode = tooltipModel.get('renderMode');\n this._renderMode = getTooltipRenderMode(renderMode);\n var tooltipContent;\n\n if (this._renderMode === 'html') {\n tooltipContent = new TooltipContent(api.getDom(), api, {\n appendToBody: tooltipModel.get('appendToBody', true)\n });\n this._newLine = '
';\n } else {\n tooltipContent = new TooltipRichContent(api);\n this._newLine = '\\n';\n }\n\n this._tooltipContent = tooltipContent;\n },\n render: function (tooltipModel, ecModel, api) {\n if (env.node) {\n return;\n } // Reset\n\n\n this.group.removeAll();\n /**\n * @private\n * @type {module:echarts/component/tooltip/TooltipModel}\n */\n\n this._tooltipModel = tooltipModel;\n /**\n * @private\n * @type {module:echarts/model/Global}\n */\n\n this._ecModel = ecModel;\n /**\n * @private\n * @type {module:echarts/ExtensionAPI}\n */\n\n this._api = api;\n /**\n * Should be cleaned when render.\n * @private\n * @type {Array.>}\n */\n\n this._lastDataByCoordSys = null;\n /**\n * @private\n * @type {boolean}\n */\n\n this._alwaysShowContent = tooltipModel.get('alwaysShowContent');\n var tooltipContent = this._tooltipContent;\n tooltipContent.update(tooltipModel);\n tooltipContent.setEnterable(tooltipModel.get('enterable'));\n\n this._initGlobalListener();\n\n this._keepShow();\n },\n _initGlobalListener: function () {\n var tooltipModel = this._tooltipModel;\n var triggerOn = tooltipModel.get('triggerOn');\n globalListener.register('itemTooltip', this._api, bind(function (currTrigger, e, dispatchAction) {\n // If 'none', it is not controlled by mouse totally.\n if (triggerOn !== 'none') {\n if (triggerOn.indexOf(currTrigger) >= 0) {\n this._tryShow(e, dispatchAction);\n } else if (currTrigger === 'leave') {\n this._hide(dispatchAction);\n }\n }\n }, this));\n },\n _keepShow: function () {\n var tooltipModel = this._tooltipModel;\n var ecModel = this._ecModel;\n var api = this._api; // Try to keep the tooltip show when refreshing\n\n if (this._lastX != null && this._lastY != null // When user is willing to control tooltip totally using API,\n // self.manuallyShowTip({x, y}) might cause tooltip hide,\n // which is not expected.\n && tooltipModel.get('triggerOn') !== 'none') {\n var self = this;\n clearTimeout(this._refreshUpdateTimeout);\n this._refreshUpdateTimeout = setTimeout(function () {\n // Show tip next tick after other charts are rendered\n // In case highlight action has wrong result\n // FIXME\n !api.isDisposed() && self.manuallyShowTip(tooltipModel, ecModel, api, {\n x: self._lastX,\n y: self._lastY\n });\n });\n }\n },\n\n /**\n * Show tip manually by\n * dispatchAction({\n * type: 'showTip',\n * x: 10,\n * y: 10\n * });\n * Or\n * dispatchAction({\n * type: 'showTip',\n * seriesIndex: 0,\n * dataIndex or dataIndexInside or name\n * });\n *\n * TODO Batch\n */\n manuallyShowTip: function (tooltipModel, ecModel, api, payload) {\n if (payload.from === this.uid || env.node) {\n return;\n }\n\n var dispatchAction = makeDispatchAction(payload, api); // Reset ticket\n\n this._ticket = ''; // When triggered from axisPointer.\n\n var dataByCoordSys = payload.dataByCoordSys;\n\n if (payload.tooltip && payload.x != null && payload.y != null) {\n var el = proxyRect;\n el.position = [payload.x, payload.y];\n el.update();\n el.tooltip = payload.tooltip; // Manually show tooltip while view is not using zrender elements.\n\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n target: el\n }, dispatchAction);\n } else if (dataByCoordSys) {\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n position: payload.position,\n dataByCoordSys: payload.dataByCoordSys,\n tooltipOption: payload.tooltipOption\n }, dispatchAction);\n } else if (payload.seriesIndex != null) {\n if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) {\n return;\n }\n\n var pointInfo = findPointFromSeries(payload, ecModel);\n var cx = pointInfo.point[0];\n var cy = pointInfo.point[1];\n\n if (cx != null && cy != null) {\n this._tryShow({\n offsetX: cx,\n offsetY: cy,\n position: payload.position,\n target: pointInfo.el\n }, dispatchAction);\n }\n } else if (payload.x != null && payload.y != null) {\n // FIXME\n // should wrap dispatchAction like `axisPointer/globalListener` ?\n api.dispatchAction({\n type: 'updateAxisPointer',\n x: payload.x,\n y: payload.y\n });\n\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n position: payload.position,\n target: api.getZr().findHover(payload.x, payload.y).target\n }, dispatchAction);\n }\n },\n manuallyHideTip: function (tooltipModel, ecModel, api, payload) {\n var tooltipContent = this._tooltipContent;\n\n if (!this._alwaysShowContent && this._tooltipModel) {\n tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));\n }\n\n this._lastX = this._lastY = null;\n\n if (payload.from !== this.uid) {\n this._hide(makeDispatchAction(payload, api));\n }\n },\n // Be compatible with previous design, that is, when tooltip.type is 'axis' and\n // dispatchAction 'showTip' with seriesIndex and dataIndex will trigger axis pointer\n // and tooltip.\n _manuallyAxisShowTip: function (tooltipModel, ecModel, api, payload) {\n var seriesIndex = payload.seriesIndex;\n var dataIndex = payload.dataIndex;\n var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo;\n\n if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {\n return;\n }\n\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n\n if (!seriesModel) {\n return;\n }\n\n var data = seriesModel.getData();\n var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), seriesModel, (seriesModel.coordinateSystem || {}).model, tooltipModel]);\n\n if (tooltipModel.get('trigger') !== 'axis') {\n return;\n }\n\n api.dispatchAction({\n type: 'updateAxisPointer',\n seriesIndex: seriesIndex,\n dataIndex: dataIndex,\n position: payload.position\n });\n return true;\n },\n _tryShow: function (e, dispatchAction) {\n var el = e.target;\n var tooltipModel = this._tooltipModel;\n\n if (!tooltipModel) {\n return;\n } // Save mouse x, mouse y. So we can try to keep showing the tip if chart is refreshed\n\n\n this._lastX = e.offsetX;\n this._lastY = e.offsetY;\n var dataByCoordSys = e.dataByCoordSys;\n\n if (dataByCoordSys && dataByCoordSys.length) {\n this._showAxisTooltip(dataByCoordSys, e);\n } // Always show item tooltip if mouse is on the element with dataIndex\n else if (el && el.dataIndex != null) {\n this._lastDataByCoordSys = null;\n\n this._showSeriesItemTooltip(e, el, dispatchAction);\n } // Tooltip provided directly. Like legend.\n else if (el && el.tooltip) {\n this._lastDataByCoordSys = null;\n\n this._showComponentItemTooltip(e, el, dispatchAction);\n } else {\n this._lastDataByCoordSys = null;\n\n this._hide(dispatchAction);\n }\n },\n _showOrMove: function (tooltipModel, cb) {\n // showDelay is used in this case: tooltip.enterable is set\n // as true. User intent to move mouse into tooltip and click\n // something. `showDelay` makes it easier to enter the content\n // but tooltip do not move immediately.\n var delay = tooltipModel.get('showDelay');\n cb = zrUtil.bind(cb, this);\n clearTimeout(this._showTimout);\n delay > 0 ? this._showTimout = setTimeout(cb, delay) : cb();\n },\n _showAxisTooltip: function (dataByCoordSys, e) {\n var ecModel = this._ecModel;\n var globalTooltipModel = this._tooltipModel;\n var point = [e.offsetX, e.offsetY];\n var singleDefaultHTML = [];\n var singleParamsList = [];\n var singleTooltipModel = buildTooltipModel([e.tooltipOption, globalTooltipModel]);\n var renderMode = this._renderMode;\n var newLine = this._newLine;\n var markers = {};\n each(dataByCoordSys, function (itemCoordSys) {\n // var coordParamList = [];\n // var coordDefaultHTML = [];\n // var coordTooltipModel = buildTooltipModel([\n // e.tooltipOption,\n // itemCoordSys.tooltipOption,\n // ecModel.getComponent(itemCoordSys.coordSysMainType, itemCoordSys.coordSysIndex),\n // globalTooltipModel\n // ]);\n // var displayMode = coordTooltipModel.get('displayMode');\n // var paramsList = displayMode === 'single' ? singleParamsList : [];\n each(itemCoordSys.dataByAxis, function (item) {\n var axisModel = ecModel.getComponent(item.axisDim + 'Axis', item.axisIndex);\n var axisValue = item.value;\n var seriesDefaultHTML = [];\n\n if (!axisModel || axisValue == null) {\n return;\n }\n\n var valueLabel = axisPointerViewHelper.getValueLabel(axisValue, axisModel.axis, ecModel, item.seriesDataIndices, item.valueLabelOpt);\n zrUtil.each(item.seriesDataIndices, function (idxItem) {\n var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n var dataIndex = idxItem.dataIndexInside;\n var dataParams = series && series.getDataParams(dataIndex);\n dataParams.axisDim = item.axisDim;\n dataParams.axisIndex = item.axisIndex;\n dataParams.axisType = item.axisType;\n dataParams.axisId = item.axisId;\n dataParams.axisValue = axisHelper.getAxisRawValue(axisModel.axis, axisValue);\n dataParams.axisValueLabel = valueLabel;\n\n if (dataParams) {\n singleParamsList.push(dataParams);\n var seriesTooltip = series.formatTooltip(dataIndex, true, null, renderMode);\n var html;\n\n if (zrUtil.isObject(seriesTooltip)) {\n html = seriesTooltip.html;\n var newMarkers = seriesTooltip.markers;\n zrUtil.merge(markers, newMarkers);\n } else {\n html = seriesTooltip;\n }\n\n seriesDefaultHTML.push(html);\n }\n }); // Default tooltip content\n // FIXME\n // (1) should be the first data which has name?\n // (2) themeRiver, firstDataIndex is array, and first line is unnecessary.\n\n var firstLine = valueLabel;\n\n if (renderMode !== 'html') {\n singleDefaultHTML.push(seriesDefaultHTML.join(newLine));\n } else {\n singleDefaultHTML.push((firstLine ? formatUtil.encodeHTML(firstLine) + newLine : '') + seriesDefaultHTML.join(newLine));\n }\n });\n }, this); // In most case, the second axis is shown upper than the first one.\n\n singleDefaultHTML.reverse();\n singleDefaultHTML = singleDefaultHTML.join(this._newLine + this._newLine);\n var positionExpr = e.position;\n\n this._showOrMove(singleTooltipModel, function () {\n if (this._updateContentNotChangedOnAxis(dataByCoordSys)) {\n this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, singleParamsList);\n } else {\n this._showTooltipContent(singleTooltipModel, singleDefaultHTML, singleParamsList, Math.random(), point[0], point[1], positionExpr, undefined, markers);\n }\n }); // Do not trigger events here, because this branch only be entered\n // from dispatchAction.\n\n },\n _showSeriesItemTooltip: function (e, el, dispatchAction) {\n var ecModel = this._ecModel; // Use dataModel in element if possible\n // Used when mouseover on a element like markPoint or edge\n // In which case, the data is not main data in series.\n\n var seriesIndex = el.seriesIndex;\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex); // For example, graph link.\n\n var dataModel = el.dataModel || seriesModel;\n var dataIndex = el.dataIndex;\n var dataType = el.dataType;\n var data = dataModel.getData(dataType);\n var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), dataModel, seriesModel && (seriesModel.coordinateSystem || {}).model, this._tooltipModel]);\n var tooltipTrigger = tooltipModel.get('trigger');\n\n if (tooltipTrigger != null && tooltipTrigger !== 'item') {\n return;\n }\n\n var params = dataModel.getDataParams(dataIndex, dataType);\n var seriesTooltip = dataModel.formatTooltip(dataIndex, false, dataType, this._renderMode);\n var defaultHtml;\n var markers;\n\n if (zrUtil.isObject(seriesTooltip)) {\n defaultHtml = seriesTooltip.html;\n markers = seriesTooltip.markers;\n } else {\n defaultHtml = seriesTooltip;\n markers = null;\n }\n\n var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex;\n\n this._showOrMove(tooltipModel, function () {\n this._showTooltipContent(tooltipModel, defaultHtml, params, asyncTicket, e.offsetX, e.offsetY, e.position, e.target, markers);\n }); // FIXME\n // duplicated showtip if manuallyShowTip is called from dispatchAction.\n\n\n dispatchAction({\n type: 'showTip',\n dataIndexInside: dataIndex,\n dataIndex: data.getRawIndex(dataIndex),\n seriesIndex: seriesIndex,\n from: this.uid\n });\n },\n _showComponentItemTooltip: function (e, el, dispatchAction) {\n var tooltipOpt = el.tooltip;\n\n if (typeof tooltipOpt === 'string') {\n var content = tooltipOpt;\n tooltipOpt = {\n content: content,\n // Fixed formatter\n formatter: content\n };\n }\n\n var subTooltipModel = new Model(tooltipOpt, this._tooltipModel, this._ecModel);\n var defaultHtml = subTooltipModel.get('content');\n var asyncTicket = Math.random(); // Do not check whether `trigger` is 'none' here, because `trigger`\n // only works on coordinate system. In fact, we have not found case\n // that requires setting `trigger` nothing on component yet.\n\n this._showOrMove(subTooltipModel, function () {\n this._showTooltipContent(subTooltipModel, defaultHtml, subTooltipModel.get('formatterParams') || {}, asyncTicket, e.offsetX, e.offsetY, e.position, el);\n }); // If not dispatch showTip, tip may be hide triggered by axis.\n\n\n dispatchAction({\n type: 'showTip',\n from: this.uid\n });\n },\n _showTooltipContent: function (tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el, markers) {\n // Reset ticket\n this._ticket = '';\n\n if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) {\n return;\n }\n\n var tooltipContent = this._tooltipContent;\n var formatter = tooltipModel.get('formatter');\n positionExpr = positionExpr || tooltipModel.get('position');\n var html = defaultHtml;\n\n if (formatter && typeof formatter === 'string') {\n html = formatUtil.formatTpl(formatter, params, true);\n } else if (typeof formatter === 'function') {\n var callback = bind(function (cbTicket, html) {\n if (cbTicket === this._ticket) {\n tooltipContent.setContent(html, markers, tooltipModel);\n\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n }\n }, this);\n this._ticket = asyncTicket;\n html = formatter(params, asyncTicket, callback);\n }\n\n tooltipContent.setContent(html, markers, tooltipModel);\n tooltipContent.show(tooltipModel);\n\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n },\n\n /**\n * @param {string|Function|Array.|Object} positionExpr\n * @param {number} x Mouse x\n * @param {number} y Mouse y\n * @param {boolean} confine Whether confine tooltip content in view rect.\n * @param {Object|} params\n * @param {module:zrender/Element} el target element\n * @param {module:echarts/ExtensionAPI} api\n * @return {Array.}\n */\n _updatePosition: function (tooltipModel, positionExpr, x, y, content, params, el) {\n var viewWidth = this._api.getWidth();\n\n var viewHeight = this._api.getHeight();\n\n positionExpr = positionExpr || tooltipModel.get('position');\n var contentSize = content.getSize();\n var align = tooltipModel.get('align');\n var vAlign = tooltipModel.get('verticalAlign');\n var rect = el && el.getBoundingRect().clone();\n el && rect.applyTransform(el.transform);\n\n if (typeof positionExpr === 'function') {\n // Callback of position can be an array or a string specify the position\n positionExpr = positionExpr([x, y], params, content.el, rect, {\n viewSize: [viewWidth, viewHeight],\n contentSize: contentSize.slice()\n });\n }\n\n if (zrUtil.isArray(positionExpr)) {\n x = parsePercent(positionExpr[0], viewWidth);\n y = parsePercent(positionExpr[1], viewHeight);\n } else if (zrUtil.isObject(positionExpr)) {\n positionExpr.width = contentSize[0];\n positionExpr.height = contentSize[1];\n var layoutRect = layoutUtil.getLayoutRect(positionExpr, {\n width: viewWidth,\n height: viewHeight\n });\n x = layoutRect.x;\n y = layoutRect.y;\n align = null; // When positionExpr is left/top/right/bottom,\n // align and verticalAlign will not work.\n\n vAlign = null;\n } // Specify tooltip position by string 'top' 'bottom' 'left' 'right' around graphic element\n else if (typeof positionExpr === 'string' && el) {\n var pos = calcTooltipPosition(positionExpr, rect, contentSize);\n x = pos[0];\n y = pos[1];\n } else {\n var pos = refixTooltipPosition(x, y, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20);\n x = pos[0];\n y = pos[1];\n }\n\n align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === 'right' ? contentSize[0] : 0);\n vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === 'bottom' ? contentSize[1] : 0);\n\n if (tooltipModel.get('confine')) {\n var pos = confineTooltipPosition(x, y, content, viewWidth, viewHeight);\n x = pos[0];\n y = pos[1];\n }\n\n content.moveTo(x, y);\n },\n // FIXME\n // Should we remove this but leave this to user?\n _updateContentNotChangedOnAxis: function (dataByCoordSys) {\n var lastCoordSys = this._lastDataByCoordSys;\n var contentNotChanged = !!lastCoordSys && lastCoordSys.length === dataByCoordSys.length;\n contentNotChanged && each(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {\n var lastDataByAxis = lastItemCoordSys.dataByAxis || {};\n var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};\n var thisDataByAxis = thisItemCoordSys.dataByAxis || [];\n contentNotChanged &= lastDataByAxis.length === thisDataByAxis.length;\n contentNotChanged && each(lastDataByAxis, function (lastItem, indexAxis) {\n var thisItem = thisDataByAxis[indexAxis] || {};\n var lastIndices = lastItem.seriesDataIndices || [];\n var newIndices = thisItem.seriesDataIndices || [];\n contentNotChanged &= lastItem.value === thisItem.value && lastItem.axisType === thisItem.axisType && lastItem.axisId === thisItem.axisId && lastIndices.length === newIndices.length;\n contentNotChanged && each(lastIndices, function (lastIdxItem, j) {\n var newIdxItem = newIndices[j];\n contentNotChanged &= lastIdxItem.seriesIndex === newIdxItem.seriesIndex && lastIdxItem.dataIndex === newIdxItem.dataIndex;\n });\n });\n });\n this._lastDataByCoordSys = dataByCoordSys;\n return !!contentNotChanged;\n },\n _hide: function (dispatchAction) {\n // Do not directly hideLater here, because this behavior may be prevented\n // in dispatchAction when showTip is dispatched.\n // FIXME\n // duplicated hideTip if manuallyHideTip is called from dispatchAction.\n this._lastDataByCoordSys = null;\n dispatchAction({\n type: 'hideTip',\n from: this.uid\n });\n },\n dispose: function (ecModel, api) {\n if (env.node) {\n return;\n }\n\n this._tooltipContent.dispose();\n\n globalListener.unregister('itemTooltip', api);\n }\n});\n/**\n * @param {Array.} modelCascade\n * From top to bottom. (the last one should be globalTooltipModel);\n */\n\n\nfunction buildTooltipModel(modelCascade) {\n var resultModel = modelCascade.pop();\n\n while (modelCascade.length) {\n var tooltipOpt = modelCascade.pop();\n\n if (tooltipOpt) {\n if (Model.isInstance(tooltipOpt)) {\n tooltipOpt = tooltipOpt.get('tooltip', true);\n } // In each data item tooltip can be simply write:\n // {\n // value: 10,\n // tooltip: 'Something you need to know'\n // }\n\n\n if (typeof tooltipOpt === 'string') {\n tooltipOpt = {\n formatter: tooltipOpt\n };\n }\n\n resultModel = new Model(tooltipOpt, resultModel, resultModel.ecModel);\n }\n }\n\n return resultModel;\n}\n\nfunction makeDispatchAction(payload, api) {\n return payload.dispatchAction || zrUtil.bind(api.dispatchAction, api);\n}\n\nfunction refixTooltipPosition(x, y, content, viewWidth, viewHeight, gapH, gapV) {\n var size = content.getOuterSize();\n var width = size.width;\n var height = size.height;\n\n if (gapH != null) {\n if (x + width + gapH > viewWidth) {\n x -= width + gapH;\n } else {\n x += gapH;\n }\n }\n\n if (gapV != null) {\n if (y + height + gapV > viewHeight) {\n y -= height + gapV;\n } else {\n y += gapV;\n }\n }\n\n return [x, y];\n}\n\nfunction confineTooltipPosition(x, y, content, viewWidth, viewHeight) {\n var size = content.getOuterSize();\n var width = size.width;\n var height = size.height;\n x = Math.min(x + width, viewWidth) - width;\n y = Math.min(y + height, viewHeight) - height;\n x = Math.max(x, 0);\n y = Math.max(y, 0);\n return [x, y];\n}\n\nfunction calcTooltipPosition(position, rect, contentSize) {\n var domWidth = contentSize[0];\n var domHeight = contentSize[1];\n var gap = 5;\n var x = 0;\n var y = 0;\n var rectWidth = rect.width;\n var rectHeight = rect.height;\n\n switch (position) {\n case 'inside':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n break;\n\n case 'top':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y - domHeight - gap;\n break;\n\n case 'bottom':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y + rectHeight + gap;\n break;\n\n case 'left':\n x = rect.x - domWidth - gap;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n break;\n\n case 'right':\n x = rect.x + rectWidth + gap;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n }\n\n return [x, y];\n}\n\nfunction isCenterAlign(align) {\n return align === 'center' || align === 'middle';\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\nrequire(\"./visualMapContinuous\");\n\nrequire(\"./visualMapPiecewise\");","\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\nvar preprocessor = require(\"./visualMap/preprocessor\");\n\nrequire(\"./visualMap/typeDefaulter\");\n\nrequire(\"./visualMap/visualEncoding\");\n\nrequire(\"./visualMap/ContinuousModel\");\n\nrequire(\"./visualMap/ContinuousView\");\n\nrequire(\"./visualMap/visualMapAction\");\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 * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);","\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\nvar preprocessor = require(\"./visualMap/preprocessor\");\n\nrequire(\"./visualMap/typeDefaulter\");\n\nrequire(\"./visualMap/visualEncoding\");\n\nrequire(\"./visualMap/PiecewiseModel\");\n\nrequire(\"./visualMap/PiecewiseView\");\n\nrequire(\"./visualMap/visualMapAction\");\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 * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);","\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 VisualMapModel = require(\"./VisualMapModel\");\n\nvar numberUtil = require(\"../../util/number\");\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// Constant\nvar DEFAULT_BAR_BOUND = [20, 140];\nvar ContinuousModel = VisualMapModel.extend({\n type: 'visualMap.continuous',\n\n /**\n * @protected\n */\n defaultOption: {\n align: 'auto',\n // 'auto', 'left', 'right', 'top', 'bottom'\n calculable: false,\n // This prop effect default component type determine,\n // See echarts/component/visualMap/typeDefaulter.\n range: null,\n // selected range. In default case `range` is [min, max]\n // and can auto change along with modification of min max,\n // util use specifid a range.\n realtime: true,\n // Whether realtime update.\n itemHeight: null,\n // The length of the range control edge.\n itemWidth: null,\n // The length of the other side.\n hoverLink: true,\n // Enable hover highlight.\n hoverLinkDataSize: null,\n // The size of hovered data.\n hoverLinkOnHandle: null // Whether trigger hoverLink when hover handle.\n // If not specified, follow the value of `realtime`.\n\n },\n\n /**\n * @override\n */\n optionUpdated: function (newOption, isInit) {\n ContinuousModel.superApply(this, 'optionUpdated', arguments);\n this.resetExtent();\n this.resetVisual(function (mappingOption) {\n mappingOption.mappingMethod = 'linear';\n mappingOption.dataExtent = this.getExtent();\n });\n\n this._resetRange();\n },\n\n /**\n * @protected\n * @override\n */\n resetItemSize: function () {\n ContinuousModel.superApply(this, 'resetItemSize', arguments);\n var itemSize = this.itemSize;\n this._orient === 'horizontal' && itemSize.reverse();\n (itemSize[0] == null || isNaN(itemSize[0])) && (itemSize[0] = DEFAULT_BAR_BOUND[0]);\n (itemSize[1] == null || isNaN(itemSize[1])) && (itemSize[1] = DEFAULT_BAR_BOUND[1]);\n },\n\n /**\n * @private\n */\n _resetRange: function () {\n var dataExtent = this.getExtent();\n var range = this.option.range;\n\n if (!range || range.auto) {\n // `range` should always be array (so we dont use other\n // value like 'auto') for user-friend. (consider getOption).\n dataExtent.auto = 1;\n this.option.range = dataExtent;\n } else if (zrUtil.isArray(range)) {\n if (range[0] > range[1]) {\n range.reverse();\n }\n\n range[0] = Math.max(range[0], dataExtent[0]);\n range[1] = Math.min(range[1], dataExtent[1]);\n }\n },\n\n /**\n * @protected\n * @override\n */\n completeVisualOption: function () {\n VisualMapModel.prototype.completeVisualOption.apply(this, arguments);\n zrUtil.each(this.stateList, function (state) {\n var symbolSize = this.option.controller[state].symbolSize;\n\n if (symbolSize && symbolSize[0] !== symbolSize[1]) {\n symbolSize[0] = 0; // For good looking.\n }\n }, this);\n },\n\n /**\n * @override\n */\n setSelected: function (selected) {\n this.option.range = selected.slice();\n\n this._resetRange();\n },\n\n /**\n * @public\n */\n getSelected: function () {\n var dataExtent = this.getExtent();\n var dataInterval = numberUtil.asc((this.get('range') || []).slice()); // Clamp\n\n dataInterval[0] > dataExtent[1] && (dataInterval[0] = dataExtent[1]);\n dataInterval[1] > dataExtent[1] && (dataInterval[1] = dataExtent[1]);\n dataInterval[0] < dataExtent[0] && (dataInterval[0] = dataExtent[0]);\n dataInterval[1] < dataExtent[0] && (dataInterval[1] = dataExtent[0]);\n return dataInterval;\n },\n\n /**\n * @override\n */\n getValueState: function (value) {\n var range = this.option.range;\n var dataExtent = this.getExtent(); // When range[0] === dataExtent[0], any value larger than dataExtent[0] maps to 'inRange'.\n // range[1] is processed likewise.\n\n return (range[0] <= dataExtent[0] || range[0] <= value) && (range[1] >= dataExtent[1] || value <= range[1]) ? 'inRange' : 'outOfRange';\n },\n\n /**\n * @params {Array.} range target value: range[0] <= value && value <= range[1]\n * @return {Array.} [{seriesId, dataIndices: >}, ...]\n */\n findTargetDataIndices: function (range) {\n var result = [];\n this.eachTargetSeries(function (seriesModel) {\n var dataIndices = [];\n var data = seriesModel.getData();\n data.each(this.getDataDimension(data), function (value, dataIndex) {\n range[0] <= value && value <= range[1] && dataIndices.push(dataIndex);\n }, this);\n result.push({\n seriesId: seriesModel.id,\n dataIndex: dataIndices\n });\n }, this);\n return result;\n },\n\n /**\n * @implement\n */\n getVisualMeta: function (getColorVisual) {\n var oVals = getColorStopValues(this, 'outOfRange', this.getExtent());\n var iVals = getColorStopValues(this, 'inRange', this.option.range.slice());\n var stops = [];\n\n function setStop(value, valueState) {\n stops.push({\n value: value,\n color: getColorVisual(value, valueState)\n });\n } // Format to: outOfRange -- inRange -- outOfRange.\n\n\n var iIdx = 0;\n var oIdx = 0;\n var iLen = iVals.length;\n var oLen = oVals.length;\n\n for (; oIdx < oLen && (!iVals.length || oVals[oIdx] <= iVals[0]); oIdx++) {\n // If oVal[oIdx] === iVals[iIdx], oVal[oIdx] should be ignored.\n if (oVals[oIdx] < iVals[iIdx]) {\n setStop(oVals[oIdx], 'outOfRange');\n }\n }\n\n for (var first = 1; iIdx < iLen; iIdx++, first = 0) {\n // If range is full, value beyond min, max will be clamped.\n // make a singularity\n first && stops.length && setStop(iVals[iIdx], 'outOfRange');\n setStop(iVals[iIdx], 'inRange');\n }\n\n for (var first = 1; oIdx < oLen; oIdx++) {\n if (!iVals.length || iVals[iVals.length - 1] < oVals[oIdx]) {\n // make a singularity\n if (first) {\n stops.length && setStop(stops[stops.length - 1].value, 'outOfRange');\n first = 0;\n }\n\n setStop(oVals[oIdx], 'outOfRange');\n }\n }\n\n var stopsLen = stops.length;\n return {\n stops: stops,\n outerColors: [stopsLen ? stops[0].color : 'transparent', stopsLen ? stops[stopsLen - 1].color : 'transparent']\n };\n }\n});\n\nfunction getColorStopValues(visualMapModel, valueState, dataExtent) {\n if (dataExtent[0] === dataExtent[1]) {\n return dataExtent.slice();\n } // When using colorHue mapping, it is not linear color any more.\n // Moreover, canvas gradient seems not to be accurate linear.\n // FIXME\n // Should be arbitrary value 100? or based on pixel size?\n\n\n var count = 200;\n var step = (dataExtent[1] - dataExtent[0]) / count;\n var value = dataExtent[0];\n var stopValues = [];\n\n for (var i = 0; i <= count && value < dataExtent[1]; i++) {\n stopValues.push(value);\n value += step;\n }\n\n stopValues.push(dataExtent[1]);\n return stopValues;\n}\n\nvar _default = ContinuousModel;\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 LinearGradient = require(\"zrender/lib/graphic/LinearGradient\");\n\nvar eventTool = require(\"zrender/lib/core/event\");\n\nvar VisualMapView = require(\"./VisualMapView\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar sliderMove = require(\"../helper/sliderMove\");\n\nvar helper = require(\"./helper\");\n\nvar modelUtil = require(\"../../util/model\");\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 linearMap = numberUtil.linearMap;\nvar each = zrUtil.each;\nvar mathMin = Math.min;\nvar mathMax = Math.max; // Arbitrary value\n\nvar HOVER_LINK_SIZE = 12;\nvar HOVER_LINK_OUT = 6; // Notice:\n// Any \"interval\" should be by the order of [low, high].\n// \"handle0\" (handleIndex === 0) maps to\n// low data value: this._dataInterval[0] and has low coord.\n// \"handle1\" (handleIndex === 1) maps to\n// high data value: this._dataInterval[1] and has high coord.\n// The logic of transform is implemented in this._createBarGroup.\n\nvar ContinuousView = VisualMapView.extend({\n type: 'visualMap.continuous',\n\n /**\n * @override\n */\n init: function () {\n ContinuousView.superApply(this, 'init', arguments);\n /**\n * @private\n */\n\n this._shapes = {};\n /**\n * @private\n */\n\n this._dataInterval = [];\n /**\n * @private\n */\n\n this._handleEnds = [];\n /**\n * @private\n */\n\n this._orient;\n /**\n * @private\n */\n\n this._useHandle;\n /**\n * @private\n */\n\n this._hoverLinkDataIndices = [];\n /**\n * @private\n */\n\n this._dragging;\n /**\n * @private\n */\n\n this._hovering;\n },\n\n /**\n * @protected\n * @override\n */\n doRender: function (visualMapModel, ecModel, api, payload) {\n if (!payload || payload.type !== 'selectDataRange' || payload.from !== this.uid) {\n this._buildView();\n }\n },\n\n /**\n * @private\n */\n _buildView: function () {\n this.group.removeAll();\n var visualMapModel = this.visualMapModel;\n var thisGroup = this.group;\n this._orient = visualMapModel.get('orient');\n this._useHandle = visualMapModel.get('calculable');\n\n this._resetInterval();\n\n this._renderBar(thisGroup);\n\n var dataRangeText = visualMapModel.get('text');\n\n this._renderEndsText(thisGroup, dataRangeText, 0);\n\n this._renderEndsText(thisGroup, dataRangeText, 1); // Do this for background size calculation.\n\n\n this._updateView(true); // After updating view, inner shapes is built completely,\n // and then background can be rendered.\n\n\n this.renderBackground(thisGroup); // Real update view\n\n this._updateView();\n\n this._enableHoverLinkToSeries();\n\n this._enableHoverLinkFromSeries();\n\n this.positionGroup(thisGroup);\n },\n\n /**\n * @private\n */\n _renderEndsText: function (group, dataRangeText, endsIndex) {\n if (!dataRangeText) {\n return;\n } // Compatible with ec2, text[0] map to high value, text[1] map low value.\n\n\n var text = dataRangeText[1 - endsIndex];\n text = text != null ? text + '' : '';\n var visualMapModel = this.visualMapModel;\n var textGap = visualMapModel.get('textGap');\n var itemSize = visualMapModel.itemSize;\n var barGroup = this._shapes.barGroup;\n\n var position = this._applyTransform([itemSize[0] / 2, endsIndex === 0 ? -textGap : itemSize[1] + textGap], barGroup);\n\n var align = this._applyTransform(endsIndex === 0 ? 'bottom' : 'top', barGroup);\n\n var orient = this._orient;\n var textStyleModel = this.visualMapModel.textStyleModel;\n this.group.add(new graphic.Text({\n style: {\n x: position[0],\n y: position[1],\n textVerticalAlign: orient === 'horizontal' ? 'middle' : align,\n textAlign: orient === 'horizontal' ? align : 'center',\n text: text,\n textFont: textStyleModel.getFont(),\n textFill: textStyleModel.getTextColor()\n }\n }));\n },\n\n /**\n * @private\n */\n _renderBar: function (targetGroup) {\n var visualMapModel = this.visualMapModel;\n var shapes = this._shapes;\n var itemSize = visualMapModel.itemSize;\n var orient = this._orient;\n var useHandle = this._useHandle;\n var itemAlign = helper.getItemAlign(visualMapModel, this.api, itemSize);\n\n var barGroup = shapes.barGroup = this._createBarGroup(itemAlign); // Bar\n\n\n barGroup.add(shapes.outOfRange = createPolygon());\n barGroup.add(shapes.inRange = createPolygon(null, useHandle ? getCursor(this._orient) : null, zrUtil.bind(this._dragHandle, this, 'all', false), zrUtil.bind(this._dragHandle, this, 'all', true)));\n var textRect = visualMapModel.textStyleModel.getTextRect('国');\n var textSize = mathMax(textRect.width, textRect.height); // Handle\n\n if (useHandle) {\n shapes.handleThumbs = [];\n shapes.handleLabels = [];\n shapes.handleLabelPoints = [];\n\n this._createHandle(barGroup, 0, itemSize, textSize, orient, itemAlign);\n\n this._createHandle(barGroup, 1, itemSize, textSize, orient, itemAlign);\n }\n\n this._createIndicator(barGroup, itemSize, textSize, orient);\n\n targetGroup.add(barGroup);\n },\n\n /**\n * @private\n */\n _createHandle: function (barGroup, handleIndex, itemSize, textSize, orient) {\n var onDrift = zrUtil.bind(this._dragHandle, this, handleIndex, false);\n var onDragEnd = zrUtil.bind(this._dragHandle, this, handleIndex, true);\n var handleThumb = createPolygon(createHandlePoints(handleIndex, textSize), getCursor(this._orient), onDrift, onDragEnd);\n handleThumb.position[0] = itemSize[0];\n barGroup.add(handleThumb); // Text is always horizontal layout but should not be effected by\n // transform (orient/inverse). So label is built separately but not\n // use zrender/graphic/helper/RectText, and is located based on view\n // group (according to handleLabelPoint) but not barGroup.\n\n var textStyleModel = this.visualMapModel.textStyleModel;\n var handleLabel = new graphic.Text({\n draggable: true,\n drift: onDrift,\n onmousemove: function (e) {\n // Fot mobile devicem, prevent screen slider on the button.\n eventTool.stop(e.event);\n },\n ondragend: onDragEnd,\n style: {\n x: 0,\n y: 0,\n text: '',\n textFont: textStyleModel.getFont(),\n textFill: textStyleModel.getTextColor()\n }\n });\n this.group.add(handleLabel);\n var handleLabelPoint = [orient === 'horizontal' ? textSize / 2 : textSize * 1.5, orient === 'horizontal' ? handleIndex === 0 ? -(textSize * 1.5) : textSize * 1.5 : handleIndex === 0 ? -textSize / 2 : textSize / 2];\n var shapes = this._shapes;\n shapes.handleThumbs[handleIndex] = handleThumb;\n shapes.handleLabelPoints[handleIndex] = handleLabelPoint;\n shapes.handleLabels[handleIndex] = handleLabel;\n },\n\n /**\n * @private\n */\n _createIndicator: function (barGroup, itemSize, textSize, orient) {\n var indicator = createPolygon([[0, 0]], 'move');\n indicator.position[0] = itemSize[0];\n indicator.attr({\n invisible: true,\n silent: true\n });\n barGroup.add(indicator);\n var textStyleModel = this.visualMapModel.textStyleModel;\n var indicatorLabel = new graphic.Text({\n silent: true,\n invisible: true,\n style: {\n x: 0,\n y: 0,\n text: '',\n textFont: textStyleModel.getFont(),\n textFill: textStyleModel.getTextColor()\n }\n });\n this.group.add(indicatorLabel);\n var indicatorLabelPoint = [orient === 'horizontal' ? textSize / 2 : HOVER_LINK_OUT + 3, 0];\n var shapes = this._shapes;\n shapes.indicator = indicator;\n shapes.indicatorLabel = indicatorLabel;\n shapes.indicatorLabelPoint = indicatorLabelPoint;\n },\n\n /**\n * @private\n */\n _dragHandle: function (handleIndex, isEnd, dx, dy) {\n if (!this._useHandle) {\n return;\n }\n\n this._dragging = !isEnd;\n\n if (!isEnd) {\n // Transform dx, dy to bar coordination.\n var vertex = this._applyTransform([dx, dy], this._shapes.barGroup, true);\n\n this._updateInterval(handleIndex, vertex[1]); // Considering realtime, update view should be executed\n // before dispatch action.\n\n\n this._updateView();\n } // dragEnd do not dispatch action when realtime.\n\n\n if (isEnd === !this.visualMapModel.get('realtime')) {\n // jshint ignore:line\n this.api.dispatchAction({\n type: 'selectDataRange',\n from: this.uid,\n visualMapId: this.visualMapModel.id,\n selected: this._dataInterval.slice()\n });\n }\n\n if (isEnd) {\n !this._hovering && this._clearHoverLinkToSeries();\n } else if (useHoverLinkOnHandle(this.visualMapModel)) {\n this._doHoverLinkToSeries(this._handleEnds[handleIndex], false);\n }\n },\n\n /**\n * @private\n */\n _resetInterval: function () {\n var visualMapModel = this.visualMapModel;\n var dataInterval = this._dataInterval = visualMapModel.getSelected();\n var dataExtent = visualMapModel.getExtent();\n var sizeExtent = [0, visualMapModel.itemSize[1]];\n this._handleEnds = [linearMap(dataInterval[0], dataExtent, sizeExtent, true), linearMap(dataInterval[1], dataExtent, sizeExtent, true)];\n },\n\n /**\n * @private\n * @param {(number|string)} handleIndex 0 or 1 or 'all'\n * @param {number} dx\n * @param {number} dy\n */\n _updateInterval: function (handleIndex, delta) {\n delta = delta || 0;\n var visualMapModel = this.visualMapModel;\n var handleEnds = this._handleEnds;\n var sizeExtent = [0, visualMapModel.itemSize[1]];\n sliderMove(delta, handleEnds, sizeExtent, handleIndex, // cross is forbiden\n 0);\n var dataExtent = visualMapModel.getExtent(); // Update data interval.\n\n this._dataInterval = [linearMap(handleEnds[0], sizeExtent, dataExtent, true), linearMap(handleEnds[1], sizeExtent, dataExtent, true)];\n },\n\n /**\n * @private\n */\n _updateView: function (forSketch) {\n var visualMapModel = this.visualMapModel;\n var dataExtent = visualMapModel.getExtent();\n var shapes = this._shapes;\n var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]];\n var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds;\n\n var visualInRange = this._createBarVisual(this._dataInterval, dataExtent, inRangeHandleEnds, 'inRange');\n\n var visualOutOfRange = this._createBarVisual(dataExtent, dataExtent, outOfRangeHandleEnds, 'outOfRange');\n\n shapes.inRange.setStyle({\n fill: visualInRange.barColor,\n opacity: visualInRange.opacity\n }).setShape('points', visualInRange.barPoints);\n shapes.outOfRange.setStyle({\n fill: visualOutOfRange.barColor,\n opacity: visualOutOfRange.opacity\n }).setShape('points', visualOutOfRange.barPoints);\n\n this._updateHandle(inRangeHandleEnds, visualInRange);\n },\n\n /**\n * @private\n */\n _createBarVisual: function (dataInterval, dataExtent, handleEnds, forceState) {\n var opts = {\n forceState: forceState,\n convertOpacityToAlpha: true\n };\n\n var colorStops = this._makeColorGradient(dataInterval, opts);\n\n var symbolSizes = [this.getControllerVisual(dataInterval[0], 'symbolSize', opts), this.getControllerVisual(dataInterval[1], 'symbolSize', opts)];\n\n var barPoints = this._createBarPoints(handleEnds, symbolSizes);\n\n return {\n barColor: new LinearGradient(0, 0, 0, 1, colorStops),\n barPoints: barPoints,\n handlesColor: [colorStops[0].color, colorStops[colorStops.length - 1].color]\n };\n },\n\n /**\n * @private\n */\n _makeColorGradient: function (dataInterval, opts) {\n // Considering colorHue, which is not linear, so we have to sample\n // to calculate gradient color stops, but not only caculate head\n // and tail.\n var sampleNumber = 100; // Arbitrary value.\n\n var colorStops = [];\n var step = (dataInterval[1] - dataInterval[0]) / sampleNumber;\n colorStops.push({\n color: this.getControllerVisual(dataInterval[0], 'color', opts),\n offset: 0\n });\n\n for (var i = 1; i < sampleNumber; i++) {\n var currValue = dataInterval[0] + step * i;\n\n if (currValue > dataInterval[1]) {\n break;\n }\n\n colorStops.push({\n color: this.getControllerVisual(currValue, 'color', opts),\n offset: i / sampleNumber\n });\n }\n\n colorStops.push({\n color: this.getControllerVisual(dataInterval[1], 'color', opts),\n offset: 1\n });\n return colorStops;\n },\n\n /**\n * @private\n */\n _createBarPoints: function (handleEnds, symbolSizes) {\n var itemSize = this.visualMapModel.itemSize;\n return [[itemSize[0] - symbolSizes[0], handleEnds[0]], [itemSize[0], handleEnds[0]], [itemSize[0], handleEnds[1]], [itemSize[0] - symbolSizes[1], handleEnds[1]]];\n },\n\n /**\n * @private\n */\n _createBarGroup: function (itemAlign) {\n var orient = this._orient;\n var inverse = this.visualMapModel.get('inverse');\n return new graphic.Group(orient === 'horizontal' && !inverse ? {\n scale: itemAlign === 'bottom' ? [1, 1] : [-1, 1],\n rotation: Math.PI / 2\n } : orient === 'horizontal' && inverse ? {\n scale: itemAlign === 'bottom' ? [-1, 1] : [1, 1],\n rotation: -Math.PI / 2\n } : orient === 'vertical' && !inverse ? {\n scale: itemAlign === 'left' ? [1, -1] : [-1, -1]\n } : {\n scale: itemAlign === 'left' ? [1, 1] : [-1, 1]\n });\n },\n\n /**\n * @private\n */\n _updateHandle: function (handleEnds, visualInRange) {\n if (!this._useHandle) {\n return;\n }\n\n var shapes = this._shapes;\n var visualMapModel = this.visualMapModel;\n var handleThumbs = shapes.handleThumbs;\n var handleLabels = shapes.handleLabels;\n each([0, 1], function (handleIndex) {\n var handleThumb = handleThumbs[handleIndex];\n handleThumb.setStyle('fill', visualInRange.handlesColor[handleIndex]);\n handleThumb.position[1] = handleEnds[handleIndex]; // Update handle label position.\n\n var textPoint = graphic.applyTransform(shapes.handleLabelPoints[handleIndex], graphic.getTransform(handleThumb, this.group));\n handleLabels[handleIndex].setStyle({\n x: textPoint[0],\n y: textPoint[1],\n text: visualMapModel.formatValueText(this._dataInterval[handleIndex]),\n textVerticalAlign: 'middle',\n textAlign: this._applyTransform(this._orient === 'horizontal' ? handleIndex === 0 ? 'bottom' : 'top' : 'left', shapes.barGroup)\n });\n }, this);\n },\n\n /**\n * @private\n * @param {number} cursorValue\n * @param {number} textValue\n * @param {string} [rangeSymbol]\n * @param {number} [halfHoverLinkSize]\n */\n _showIndicator: function (cursorValue, textValue, rangeSymbol, halfHoverLinkSize) {\n var visualMapModel = this.visualMapModel;\n var dataExtent = visualMapModel.getExtent();\n var itemSize = visualMapModel.itemSize;\n var sizeExtent = [0, itemSize[1]];\n var pos = linearMap(cursorValue, dataExtent, sizeExtent, true);\n var shapes = this._shapes;\n var indicator = shapes.indicator;\n\n if (!indicator) {\n return;\n }\n\n indicator.position[1] = pos;\n indicator.attr('invisible', false);\n indicator.setShape('points', createIndicatorPoints(!!rangeSymbol, halfHoverLinkSize, pos, itemSize[1]));\n var opts = {\n convertOpacityToAlpha: true\n };\n var color = this.getControllerVisual(cursorValue, 'color', opts);\n indicator.setStyle('fill', color); // Update handle label position.\n\n var textPoint = graphic.applyTransform(shapes.indicatorLabelPoint, graphic.getTransform(indicator, this.group));\n var indicatorLabel = shapes.indicatorLabel;\n indicatorLabel.attr('invisible', false);\n\n var align = this._applyTransform('left', shapes.barGroup);\n\n var orient = this._orient;\n indicatorLabel.setStyle({\n text: (rangeSymbol ? rangeSymbol : '') + visualMapModel.formatValueText(textValue),\n textVerticalAlign: orient === 'horizontal' ? align : 'middle',\n textAlign: orient === 'horizontal' ? 'center' : align,\n x: textPoint[0],\n y: textPoint[1]\n });\n },\n\n /**\n * @private\n */\n _enableHoverLinkToSeries: function () {\n var self = this;\n\n this._shapes.barGroup.on('mousemove', function (e) {\n self._hovering = true;\n\n if (!self._dragging) {\n var itemSize = self.visualMapModel.itemSize;\n\n var pos = self._applyTransform([e.offsetX, e.offsetY], self._shapes.barGroup, true, true); // For hover link show when hover handle, which might be\n // below or upper than sizeExtent.\n\n\n pos[1] = mathMin(mathMax(0, pos[1]), itemSize[1]);\n\n self._doHoverLinkToSeries(pos[1], 0 <= pos[0] && pos[0] <= itemSize[0]);\n }\n }).on('mouseout', function () {\n // When mouse is out of handle, hoverLink still need\n // to be displayed when realtime is set as false.\n self._hovering = false;\n !self._dragging && self._clearHoverLinkToSeries();\n });\n },\n\n /**\n * @private\n */\n _enableHoverLinkFromSeries: function () {\n var zr = this.api.getZr();\n\n if (this.visualMapModel.option.hoverLink) {\n zr.on('mouseover', this._hoverLinkFromSeriesMouseOver, this);\n zr.on('mouseout', this._hideIndicator, this);\n } else {\n this._clearHoverLinkFromSeries();\n }\n },\n\n /**\n * @private\n */\n _doHoverLinkToSeries: function (cursorPos, hoverOnBar) {\n var visualMapModel = this.visualMapModel;\n var itemSize = visualMapModel.itemSize;\n\n if (!visualMapModel.option.hoverLink) {\n return;\n }\n\n var sizeExtent = [0, itemSize[1]];\n var dataExtent = visualMapModel.getExtent(); // For hover link show when hover handle, which might be below or upper than sizeExtent.\n\n cursorPos = mathMin(mathMax(sizeExtent[0], cursorPos), sizeExtent[1]);\n var halfHoverLinkSize = getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent);\n var hoverRange = [cursorPos - halfHoverLinkSize, cursorPos + halfHoverLinkSize];\n var cursorValue = linearMap(cursorPos, sizeExtent, dataExtent, true);\n var valueRange = [linearMap(hoverRange[0], sizeExtent, dataExtent, true), linearMap(hoverRange[1], sizeExtent, dataExtent, true)]; // Consider data range is out of visualMap range, see test/visualMap-continuous.html,\n // where china and india has very large population.\n\n hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity);\n hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity); // Do not show indicator when mouse is over handle,\n // otherwise labels overlap, especially when dragging.\n\n if (hoverOnBar) {\n if (valueRange[0] === -Infinity) {\n this._showIndicator(cursorValue, valueRange[1], '< ', halfHoverLinkSize);\n } else if (valueRange[1] === Infinity) {\n this._showIndicator(cursorValue, valueRange[0], '> ', halfHoverLinkSize);\n } else {\n this._showIndicator(cursorValue, cursorValue, '≈ ', halfHoverLinkSize);\n }\n } // When realtime is set as false, handles, which are in barGroup,\n // also trigger hoverLink, which help user to realize where they\n // focus on when dragging. (see test/heatmap-large.html)\n // When realtime is set as true, highlight will not show when hover\n // handle, because the label on handle, which displays a exact value\n // but not range, might mislead users.\n\n\n var oldBatch = this._hoverLinkDataIndices;\n var newBatch = [];\n\n if (hoverOnBar || useHoverLinkOnHandle(visualMapModel)) {\n newBatch = this._hoverLinkDataIndices = visualMapModel.findTargetDataIndices(valueRange);\n }\n\n var resultBatches = modelUtil.compressBatches(oldBatch, newBatch);\n\n this._dispatchHighDown('downplay', helper.makeHighDownBatch(resultBatches[0], visualMapModel));\n\n this._dispatchHighDown('highlight', helper.makeHighDownBatch(resultBatches[1], visualMapModel));\n },\n\n /**\n * @private\n */\n _hoverLinkFromSeriesMouseOver: function (e) {\n var el = e.target;\n var visualMapModel = this.visualMapModel;\n\n if (!el || el.dataIndex == null) {\n return;\n }\n\n var dataModel = this.ecModel.getSeriesByIndex(el.seriesIndex);\n\n if (!visualMapModel.isTargetSeries(dataModel)) {\n return;\n }\n\n var data = dataModel.getData(el.dataType);\n var value = data.get(visualMapModel.getDataDimension(data), el.dataIndex, true);\n\n if (!isNaN(value)) {\n this._showIndicator(value, value);\n }\n },\n\n /**\n * @private\n */\n _hideIndicator: function () {\n var shapes = this._shapes;\n shapes.indicator && shapes.indicator.attr('invisible', true);\n shapes.indicatorLabel && shapes.indicatorLabel.attr('invisible', true);\n },\n\n /**\n * @private\n */\n _clearHoverLinkToSeries: function () {\n this._hideIndicator();\n\n var indices = this._hoverLinkDataIndices;\n\n this._dispatchHighDown('downplay', helper.makeHighDownBatch(indices, this.visualMapModel));\n\n indices.length = 0;\n },\n\n /**\n * @private\n */\n _clearHoverLinkFromSeries: function () {\n this._hideIndicator();\n\n var zr = this.api.getZr();\n zr.off('mouseover', this._hoverLinkFromSeriesMouseOver);\n zr.off('mouseout', this._hideIndicator);\n },\n\n /**\n * @private\n */\n _applyTransform: function (vertex, element, inverse, global) {\n var transform = graphic.getTransform(element, global ? null : this.group);\n return graphic[zrUtil.isArray(vertex) ? 'applyTransform' : 'transformDirection'](vertex, transform, inverse);\n },\n\n /**\n * @private\n */\n _dispatchHighDown: function (type, batch) {\n batch && batch.length && this.api.dispatchAction({\n type: type,\n batch: batch\n });\n },\n\n /**\n * @override\n */\n dispose: function () {\n this._clearHoverLinkFromSeries();\n\n this._clearHoverLinkToSeries();\n },\n\n /**\n * @override\n */\n remove: function () {\n this._clearHoverLinkFromSeries();\n\n this._clearHoverLinkToSeries();\n }\n});\n\nfunction createPolygon(points, cursor, onDrift, onDragEnd) {\n return new graphic.Polygon({\n shape: {\n points: points\n },\n draggable: !!onDrift,\n cursor: cursor,\n drift: onDrift,\n onmousemove: function (e) {\n // Fot mobile devicem, prevent screen slider on the button.\n eventTool.stop(e.event);\n },\n ondragend: onDragEnd\n });\n}\n\nfunction createHandlePoints(handleIndex, textSize) {\n return handleIndex === 0 ? [[0, 0], [textSize, 0], [textSize, -textSize]] : [[0, 0], [textSize, 0], [textSize, textSize]];\n}\n\nfunction createIndicatorPoints(isRange, halfHoverLinkSize, pos, extentMax) {\n return isRange ? [// indicate range\n [0, -mathMin(halfHoverLinkSize, mathMax(pos, 0))], [HOVER_LINK_OUT, 0], [0, mathMin(halfHoverLinkSize, mathMax(extentMax - pos, 0))]] : [// indicate single value\n [0, 0], [5, -5], [5, 5]];\n}\n\nfunction getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent) {\n var halfHoverLinkSize = HOVER_LINK_SIZE / 2;\n var hoverLinkDataSize = visualMapModel.get('hoverLinkDataSize');\n\n if (hoverLinkDataSize) {\n halfHoverLinkSize = linearMap(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2;\n }\n\n return halfHoverLinkSize;\n}\n\nfunction useHoverLinkOnHandle(visualMapModel) {\n var hoverLinkOnHandle = visualMapModel.get('hoverLinkOnHandle');\n return !!(hoverLinkOnHandle == null ? visualMapModel.get('realtime') : hoverLinkOnHandle);\n}\n\nfunction getCursor(orient) {\n return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\n\nvar _default = ContinuousView;\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar VisualMapModel = require(\"./VisualMapModel\");\n\nvar VisualMapping = require(\"../../visual/VisualMapping\");\n\nvar visualDefault = require(\"../../visual/visualDefault\");\n\nvar _number = require(\"../../util/number\");\n\nvar reformIntervals = _number.reformIntervals;\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 PiecewiseModel = VisualMapModel.extend({\n type: 'visualMap.piecewise',\n\n /**\n * Order Rule:\n *\n * option.categories / option.pieces / option.text / option.selected:\n * If !option.inverse,\n * Order when vertical: ['top', ..., 'bottom'].\n * Order when horizontal: ['left', ..., 'right'].\n * If option.inverse, the meaning of\n * the order should be reversed.\n *\n * this._pieceList:\n * The order is always [low, ..., high].\n *\n * Mapping from location to low-high:\n * If !option.inverse\n * When vertical, top is high.\n * When horizontal, right is high.\n * If option.inverse, reverse.\n */\n\n /**\n * @protected\n */\n defaultOption: {\n selected: null,\n // Object. If not specified, means selected.\n // When pieces and splitNumber: {'0': true, '5': true}\n // When categories: {'cate1': false, 'cate3': true}\n // When selected === false, means all unselected.\n minOpen: false,\n // Whether include values that smaller than `min`.\n maxOpen: false,\n // Whether include values that bigger than `max`.\n align: 'auto',\n // 'auto', 'left', 'right'\n itemWidth: 20,\n // When put the controller vertically, it is the length of\n // horizontal side of each item. Otherwise, vertical side.\n itemHeight: 14,\n // When put the controller vertically, it is the length of\n // vertical side of each item. Otherwise, horizontal side.\n itemSymbol: 'roundRect',\n pieceList: null,\n // Each item is Object, with some of those attrs:\n // {min, max, lt, gt, lte, gte, value,\n // color, colorSaturation, colorAlpha, opacity,\n // symbol, symbolSize}, which customize the range or visual\n // coding of the certain piece. Besides, see \"Order Rule\".\n categories: null,\n // category names, like: ['some1', 'some2', 'some3'].\n // Attr min/max are ignored when categories set. See \"Order Rule\"\n splitNumber: 5,\n // If set to 5, auto split five pieces equally.\n // If set to 0 and component type not set, component type will be\n // determined as \"continuous\". (It is less reasonable but for ec2\n // compatibility, see echarts/component/visualMap/typeDefaulter)\n selectedMode: 'multiple',\n // Can be 'multiple' or 'single'.\n itemGap: 10,\n // The gap between two items, in px.\n hoverLink: true,\n // Enable hover highlight.\n showLabel: null // By default, when text is used, label will hide (the logic\n // is remained for compatibility reason)\n\n },\n\n /**\n * @override\n */\n optionUpdated: function (newOption, isInit) {\n PiecewiseModel.superApply(this, 'optionUpdated', arguments);\n /**\n * The order is always [low, ..., high].\n * [{text: string, interval: Array.}, ...]\n * @private\n * @type {Array.}\n */\n\n this._pieceList = [];\n this.resetExtent();\n /**\n * 'pieces', 'categories', 'splitNumber'\n * @type {string}\n */\n\n var mode = this._mode = this._determineMode();\n\n resetMethods[this._mode].call(this);\n\n this._resetSelected(newOption, isInit);\n\n var categories = this.option.categories;\n this.resetVisual(function (mappingOption, state) {\n if (mode === 'categories') {\n mappingOption.mappingMethod = 'category';\n mappingOption.categories = zrUtil.clone(categories);\n } else {\n mappingOption.dataExtent = this.getExtent();\n mappingOption.mappingMethod = 'piecewise';\n mappingOption.pieceList = zrUtil.map(this._pieceList, function (piece) {\n var piece = zrUtil.clone(piece);\n\n if (state !== 'inRange') {\n // FIXME\n // outOfRange do not support special visual in pieces.\n piece.visual = null;\n }\n\n return piece;\n });\n }\n });\n },\n\n /**\n * @protected\n * @override\n */\n completeVisualOption: function () {\n // Consider this case:\n // visualMap: {\n // pieces: [{symbol: 'circle', lt: 0}, {symbol: 'rect', gte: 0}]\n // }\n // where no inRange/outOfRange set but only pieces. So we should make\n // default inRange/outOfRange for this case, otherwise visuals that only\n // appear in `pieces` will not be taken into account in visual encoding.\n var option = this.option;\n var visualTypesInPieces = {};\n var visualTypes = VisualMapping.listVisualTypes();\n var isCategory = this.isCategory();\n zrUtil.each(option.pieces, function (piece) {\n zrUtil.each(visualTypes, function (visualType) {\n if (piece.hasOwnProperty(visualType)) {\n visualTypesInPieces[visualType] = 1;\n }\n });\n });\n zrUtil.each(visualTypesInPieces, function (v, visualType) {\n var exists = 0;\n zrUtil.each(this.stateList, function (state) {\n exists |= has(option, state, visualType) || has(option.target, state, visualType);\n }, this);\n !exists && zrUtil.each(this.stateList, function (state) {\n (option[state] || (option[state] = {}))[visualType] = visualDefault.get(visualType, state === 'inRange' ? 'active' : 'inactive', isCategory);\n });\n }, this);\n\n function has(obj, state, visualType) {\n return obj && obj[state] && (zrUtil.isObject(obj[state]) ? obj[state].hasOwnProperty(visualType) : obj[state] === visualType // e.g., inRange: 'symbol'\n );\n }\n\n VisualMapModel.prototype.completeVisualOption.apply(this, arguments);\n },\n _resetSelected: function (newOption, isInit) {\n var thisOption = this.option;\n var pieceList = this._pieceList; // Selected do not merge but all override.\n\n var selected = (isInit ? thisOption : newOption).selected || {};\n thisOption.selected = selected; // Consider 'not specified' means true.\n\n zrUtil.each(pieceList, function (piece, index) {\n var key = this.getSelectedMapKey(piece);\n\n if (!selected.hasOwnProperty(key)) {\n selected[key] = true;\n }\n }, this);\n\n if (thisOption.selectedMode === 'single') {\n // Ensure there is only one selected.\n var hasSel = false;\n zrUtil.each(pieceList, function (piece, index) {\n var key = this.getSelectedMapKey(piece);\n\n if (selected[key]) {\n hasSel ? selected[key] = false : hasSel = true;\n }\n }, this);\n } // thisOption.selectedMode === 'multiple', default: all selected.\n\n },\n\n /**\n * @public\n */\n getSelectedMapKey: function (piece) {\n return this._mode === 'categories' ? piece.value + '' : piece.index + '';\n },\n\n /**\n * @public\n */\n getPieceList: function () {\n return this._pieceList;\n },\n\n /**\n * @private\n * @return {string}\n */\n _determineMode: function () {\n var option = this.option;\n return option.pieces && option.pieces.length > 0 ? 'pieces' : this.option.categories ? 'categories' : 'splitNumber';\n },\n\n /**\n * @public\n * @override\n */\n setSelected: function (selected) {\n this.option.selected = zrUtil.clone(selected);\n },\n\n /**\n * @public\n * @override\n */\n getValueState: function (value) {\n var index = VisualMapping.findPieceIndex(value, this._pieceList);\n return index != null ? this.option.selected[this.getSelectedMapKey(this._pieceList[index])] ? 'inRange' : 'outOfRange' : 'outOfRange';\n },\n\n /**\n * @public\n * @params {number} pieceIndex piece index in visualMapModel.getPieceList()\n * @return {Array.} [{seriesId, dataIndex: >}, ...]\n */\n findTargetDataIndices: function (pieceIndex) {\n var result = [];\n this.eachTargetSeries(function (seriesModel) {\n var dataIndices = [];\n var data = seriesModel.getData();\n data.each(this.getDataDimension(data), function (value, dataIndex) {\n // Should always base on model pieceList, because it is order sensitive.\n var pIdx = VisualMapping.findPieceIndex(value, this._pieceList);\n pIdx === pieceIndex && dataIndices.push(dataIndex);\n }, this);\n result.push({\n seriesId: seriesModel.id,\n dataIndex: dataIndices\n });\n }, this);\n return result;\n },\n\n /**\n * @private\n * @param {Object} piece piece.value or piece.interval is required.\n * @return {number} Can be Infinity or -Infinity\n */\n getRepresentValue: function (piece) {\n var representValue;\n\n if (this.isCategory()) {\n representValue = piece.value;\n } else {\n if (piece.value != null) {\n representValue = piece.value;\n } else {\n var pieceInterval = piece.interval || [];\n representValue = pieceInterval[0] === -Infinity && pieceInterval[1] === Infinity ? 0 : (pieceInterval[0] + pieceInterval[1]) / 2;\n }\n }\n\n return representValue;\n },\n getVisualMeta: function (getColorVisual) {\n // Do not support category. (category axis is ordinal, numerical)\n if (this.isCategory()) {\n return;\n }\n\n var stops = [];\n var outerColors = [];\n var visualMapModel = this;\n\n function setStop(interval, valueState) {\n var representValue = visualMapModel.getRepresentValue({\n interval: interval\n });\n\n if (!valueState) {\n valueState = visualMapModel.getValueState(representValue);\n }\n\n var color = getColorVisual(representValue, valueState);\n\n if (interval[0] === -Infinity) {\n outerColors[0] = color;\n } else if (interval[1] === Infinity) {\n outerColors[1] = color;\n } else {\n stops.push({\n value: interval[0],\n color: color\n }, {\n value: interval[1],\n color: color\n });\n }\n } // Suplement\n\n\n var pieceList = this._pieceList.slice();\n\n if (!pieceList.length) {\n pieceList.push({\n interval: [-Infinity, Infinity]\n });\n } else {\n var edge = pieceList[0].interval[0];\n edge !== -Infinity && pieceList.unshift({\n interval: [-Infinity, edge]\n });\n edge = pieceList[pieceList.length - 1].interval[1];\n edge !== Infinity && pieceList.push({\n interval: [edge, Infinity]\n });\n }\n\n var curr = -Infinity;\n zrUtil.each(pieceList, function (piece) {\n var interval = piece.interval;\n\n if (interval) {\n // Fulfill gap.\n interval[0] > curr && setStop([curr, interval[0]], 'outOfRange');\n setStop(interval.slice());\n curr = interval[1];\n }\n }, this);\n return {\n stops: stops,\n outerColors: outerColors\n };\n }\n});\n/**\n * Key is this._mode\n * @type {Object}\n * @this {module:echarts/component/viusalMap/PiecewiseMode}\n */\n\nvar resetMethods = {\n splitNumber: function () {\n var thisOption = this.option;\n var pieceList = this._pieceList;\n var precision = Math.min(thisOption.precision, 20);\n var dataExtent = this.getExtent();\n var splitNumber = thisOption.splitNumber;\n splitNumber = Math.max(parseInt(splitNumber, 10), 1);\n thisOption.splitNumber = splitNumber;\n var splitStep = (dataExtent[1] - dataExtent[0]) / splitNumber; // Precision auto-adaption\n\n while (+splitStep.toFixed(precision) !== splitStep && precision < 5) {\n precision++;\n }\n\n thisOption.precision = precision;\n splitStep = +splitStep.toFixed(precision);\n\n if (thisOption.minOpen) {\n pieceList.push({\n interval: [-Infinity, dataExtent[0]],\n close: [0, 0]\n });\n }\n\n for (var index = 0, curr = dataExtent[0]; index < splitNumber; curr += splitStep, index++) {\n var max = index === splitNumber - 1 ? dataExtent[1] : curr + splitStep;\n pieceList.push({\n interval: [curr, max],\n close: [1, 1]\n });\n }\n\n if (thisOption.maxOpen) {\n pieceList.push({\n interval: [dataExtent[1], Infinity],\n close: [0, 0]\n });\n }\n\n reformIntervals(pieceList);\n zrUtil.each(pieceList, function (piece, index) {\n piece.index = index;\n piece.text = this.formatValueText(piece.interval);\n }, this);\n },\n categories: function () {\n var thisOption = this.option;\n zrUtil.each(thisOption.categories, function (cate) {\n // FIXME category模式也使用pieceList,但在visualMapping中不是使用pieceList。\n // 是否改一致。\n this._pieceList.push({\n text: this.formatValueText(cate, true),\n value: cate\n });\n }, this); // See \"Order Rule\".\n\n normalizeReverse(thisOption, this._pieceList);\n },\n pieces: function () {\n var thisOption = this.option;\n var pieceList = this._pieceList;\n zrUtil.each(thisOption.pieces, function (pieceListItem, index) {\n if (!zrUtil.isObject(pieceListItem)) {\n pieceListItem = {\n value: pieceListItem\n };\n }\n\n var item = {\n text: '',\n index: index\n };\n\n if (pieceListItem.label != null) {\n item.text = pieceListItem.label;\n }\n\n if (pieceListItem.hasOwnProperty('value')) {\n var value = item.value = pieceListItem.value;\n item.interval = [value, value];\n item.close = [1, 1];\n } else {\n // `min` `max` is legacy option.\n // `lt` `gt` `lte` `gte` is recommanded.\n var interval = item.interval = [];\n var close = item.close = [0, 0];\n var closeList = [1, 0, 1];\n var infinityList = [-Infinity, Infinity];\n var useMinMax = [];\n\n for (var lg = 0; lg < 2; lg++) {\n var names = [['gte', 'gt', 'min'], ['lte', 'lt', 'max']][lg];\n\n for (var i = 0; i < 3 && interval[lg] == null; i++) {\n interval[lg] = pieceListItem[names[i]];\n close[lg] = closeList[i];\n useMinMax[lg] = i === 2;\n }\n\n interval[lg] == null && (interval[lg] = infinityList[lg]);\n }\n\n useMinMax[0] && interval[1] === Infinity && (close[0] = 0);\n useMinMax[1] && interval[0] === -Infinity && (close[1] = 0);\n\n if (interval[0] === interval[1] && close[0] && close[1]) {\n // Consider: [{min: 5, max: 5, visual: {...}}, {min: 0, max: 5}],\n // we use value to lift the priority when min === max\n item.value = interval[0];\n }\n }\n\n item.visual = VisualMapping.retrieveVisuals(pieceListItem);\n pieceList.push(item);\n }, this); // See \"Order Rule\".\n\n normalizeReverse(thisOption, pieceList); // Only pieces\n\n reformIntervals(pieceList);\n zrUtil.each(pieceList, function (piece) {\n var close = piece.close;\n var edgeSymbols = [['<', '≤'][close[1]], ['>', '≥'][close[0]]];\n piece.text = piece.text || this.formatValueText(piece.value != null ? piece.value : piece.interval, false, edgeSymbols);\n }, this);\n }\n};\n\nfunction normalizeReverse(thisOption, pieceList) {\n var inverse = thisOption.inverse;\n\n if (thisOption.orient === 'vertical' ? !inverse : inverse) {\n pieceList.reverse();\n }\n}\n\nvar _default = PiecewiseModel;\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 VisualMapView = require(\"./VisualMapView\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar layout = require(\"../../util/layout\");\n\nvar helper = require(\"./helper\");\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 PiecewiseVisualMapView = VisualMapView.extend({\n type: 'visualMap.piecewise',\n\n /**\n * @protected\n * @override\n */\n doRender: function () {\n var thisGroup = this.group;\n thisGroup.removeAll();\n var visualMapModel = this.visualMapModel;\n var textGap = visualMapModel.get('textGap');\n var textStyleModel = visualMapModel.textStyleModel;\n var textFont = textStyleModel.getFont();\n var textFill = textStyleModel.getTextColor();\n\n var itemAlign = this._getItemAlign();\n\n var itemSize = visualMapModel.itemSize;\n\n var viewData = this._getViewData();\n\n var endsText = viewData.endsText;\n var showLabel = zrUtil.retrieve(visualMapModel.get('showLabel', true), !endsText);\n endsText && this._renderEndsText(thisGroup, endsText[0], itemSize, showLabel, itemAlign);\n zrUtil.each(viewData.viewPieceList, renderItem, this);\n endsText && this._renderEndsText(thisGroup, endsText[1], itemSize, showLabel, itemAlign);\n layout.box(visualMapModel.get('orient'), thisGroup, visualMapModel.get('itemGap'));\n this.renderBackground(thisGroup);\n this.positionGroup(thisGroup);\n\n function renderItem(item) {\n var piece = item.piece;\n var itemGroup = new graphic.Group();\n itemGroup.onclick = zrUtil.bind(this._onItemClick, this, piece);\n\n this._enableHoverLink(itemGroup, item.indexInModelPieceList);\n\n var representValue = visualMapModel.getRepresentValue(piece);\n\n this._createItemSymbol(itemGroup, representValue, [0, 0, itemSize[0], itemSize[1]]);\n\n if (showLabel) {\n var visualState = this.visualMapModel.getValueState(representValue);\n itemGroup.add(new graphic.Text({\n style: {\n x: itemAlign === 'right' ? -textGap : itemSize[0] + textGap,\n y: itemSize[1] / 2,\n text: piece.text,\n textVerticalAlign: 'middle',\n textAlign: itemAlign,\n textFont: textFont,\n textFill: textFill,\n opacity: visualState === 'outOfRange' ? 0.5 : 1\n }\n }));\n }\n\n thisGroup.add(itemGroup);\n }\n },\n\n /**\n * @private\n */\n _enableHoverLink: function (itemGroup, pieceIndex) {\n itemGroup.on('mouseover', zrUtil.bind(onHoverLink, this, 'highlight')).on('mouseout', zrUtil.bind(onHoverLink, this, 'downplay'));\n\n function onHoverLink(method) {\n var visualMapModel = this.visualMapModel;\n visualMapModel.option.hoverLink && this.api.dispatchAction({\n type: method,\n batch: helper.makeHighDownBatch(visualMapModel.findTargetDataIndices(pieceIndex), visualMapModel)\n });\n }\n },\n\n /**\n * @private\n */\n _getItemAlign: function () {\n var visualMapModel = this.visualMapModel;\n var modelOption = visualMapModel.option;\n\n if (modelOption.orient === 'vertical') {\n return helper.getItemAlign(visualMapModel, this.api, visualMapModel.itemSize);\n } else {\n // horizontal, most case left unless specifying right.\n var align = modelOption.align;\n\n if (!align || align === 'auto') {\n align = 'left';\n }\n\n return align;\n }\n },\n\n /**\n * @private\n */\n _renderEndsText: function (group, text, itemSize, showLabel, itemAlign) {\n if (!text) {\n return;\n }\n\n var itemGroup = new graphic.Group();\n var textStyleModel = this.visualMapModel.textStyleModel;\n itemGroup.add(new graphic.Text({\n style: {\n x: showLabel ? itemAlign === 'right' ? itemSize[0] : 0 : itemSize[0] / 2,\n y: itemSize[1] / 2,\n textVerticalAlign: 'middle',\n textAlign: showLabel ? itemAlign : 'center',\n text: text,\n textFont: textStyleModel.getFont(),\n textFill: textStyleModel.getTextColor()\n }\n }));\n group.add(itemGroup);\n },\n\n /**\n * @private\n * @return {Object} {peiceList, endsText} The order is the same as screen pixel order.\n */\n _getViewData: function () {\n var visualMapModel = this.visualMapModel;\n var viewPieceList = zrUtil.map(visualMapModel.getPieceList(), function (piece, index) {\n return {\n piece: piece,\n indexInModelPieceList: index\n };\n });\n var endsText = visualMapModel.get('text'); // Consider orient and inverse.\n\n var orient = visualMapModel.get('orient');\n var inverse = visualMapModel.get('inverse'); // Order of model pieceList is always [low, ..., high]\n\n if (orient === 'horizontal' ? inverse : !inverse) {\n viewPieceList.reverse();\n } // Origin order of endsText is [high, low]\n else if (endsText) {\n endsText = endsText.slice().reverse();\n }\n\n return {\n viewPieceList: viewPieceList,\n endsText: endsText\n };\n },\n\n /**\n * @private\n */\n _createItemSymbol: function (group, representValue, shapeParam) {\n group.add(createSymbol(this.getControllerVisual(representValue, 'symbol'), shapeParam[0], shapeParam[1], shapeParam[2], shapeParam[3], this.getControllerVisual(representValue, 'color')));\n },\n\n /**\n * @private\n */\n _onItemClick: function (piece) {\n var visualMapModel = this.visualMapModel;\n var option = visualMapModel.option;\n var selected = zrUtil.clone(option.selected);\n var newKey = visualMapModel.getSelectedMapKey(piece);\n\n if (option.selectedMode === 'single') {\n selected[newKey] = true;\n zrUtil.each(selected, function (o, key) {\n selected[key] = key === newKey;\n });\n } else {\n selected[newKey] = !selected[newKey];\n }\n\n this.api.dispatchAction({\n type: 'selectDataRange',\n from: this.uid,\n visualMapId: this.visualMapModel.id,\n selected: selected\n });\n }\n});\nvar _default = PiecewiseVisualMapView;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar visualDefault = require(\"../../visual/visualDefault\");\n\nvar VisualMapping = require(\"../../visual/VisualMapping\");\n\nvar visualSolution = require(\"../../visual/visualSolution\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar numberUtil = require(\"../../util/number\");\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 mapVisual = VisualMapping.mapVisual;\nvar eachVisual = VisualMapping.eachVisual;\nvar isArray = zrUtil.isArray;\nvar each = zrUtil.each;\nvar asc = numberUtil.asc;\nvar linearMap = numberUtil.linearMap;\nvar noop = zrUtil.noop;\nvar VisualMapModel = echarts.extendComponentModel({\n type: 'visualMap',\n dependencies: ['series'],\n\n /**\n * @readOnly\n * @type {Array.}\n */\n stateList: ['inRange', 'outOfRange'],\n\n /**\n * @readOnly\n * @type {Array.}\n */\n replacableOptionKeys: ['inRange', 'outOfRange', 'target', 'controller', 'color'],\n\n /**\n * [lowerBound, upperBound]\n *\n * @readOnly\n * @type {Array.}\n */\n dataBound: [-Infinity, Infinity],\n\n /**\n * @readOnly\n * @type {string|Object}\n */\n layoutMode: {\n type: 'box',\n ignoreSize: true\n },\n\n /**\n * @protected\n */\n defaultOption: {\n show: true,\n zlevel: 0,\n z: 4,\n seriesIndex: 'all',\n // 'all' or null/undefined: all series.\n // A number or an array of number: the specified series.\n // set min: 0, max: 200, only for campatible with ec2.\n // In fact min max should not have default value.\n min: 0,\n // min value, must specified if pieces is not specified.\n max: 200,\n // max value, must specified if pieces is not specified.\n dimension: null,\n inRange: null,\n // 'color', 'colorHue', 'colorSaturation', 'colorLightness', 'colorAlpha',\n // 'symbol', 'symbolSize'\n outOfRange: null,\n // 'color', 'colorHue', 'colorSaturation',\n // 'colorLightness', 'colorAlpha',\n // 'symbol', 'symbolSize'\n left: 0,\n // 'center' ¦ 'left' ¦ 'right' ¦ {number} (px)\n right: null,\n // The same as left.\n top: null,\n // 'top' ¦ 'bottom' ¦ 'center' ¦ {number} (px)\n bottom: 0,\n // The same as top.\n itemWidth: null,\n itemHeight: null,\n inverse: false,\n orient: 'vertical',\n // 'horizontal' ¦ 'vertical'\n backgroundColor: 'rgba(0,0,0,0)',\n borderColor: '#ccc',\n // 值域边框颜色\n contentColor: '#5793f3',\n inactiveColor: '#aaa',\n borderWidth: 0,\n // 值域边框线宽,单位px,默认为0(无边框)\n padding: 5,\n // 值域内边距,单位px,默认各方向内边距为5,\n // 接受数组分别设定上右下左边距,同css\n textGap: 10,\n //\n precision: 0,\n // 小数精度,默认为0,无小数点\n color: null,\n //颜色(deprecated,兼容ec2,顺序同pieces,不同于inRange/outOfRange)\n formatter: null,\n text: null,\n // 文本,如['高', '低'],兼容ec2,text[0]对应高值,text[1]对应低值\n textStyle: {\n color: '#333' // 值域文字颜色\n\n }\n },\n\n /**\n * @protected\n */\n init: function (option, parentModel, ecModel) {\n /**\n * @private\n * @type {Array.}\n */\n this._dataExtent;\n /**\n * @readOnly\n */\n\n this.targetVisuals = {};\n /**\n * @readOnly\n */\n\n this.controllerVisuals = {};\n /**\n * @readOnly\n */\n\n this.textStyleModel;\n /**\n * [width, height]\n * @readOnly\n * @type {Array.}\n */\n\n this.itemSize;\n this.mergeDefaultAndTheme(option, ecModel);\n },\n\n /**\n * @protected\n */\n optionUpdated: function (newOption, isInit) {\n var thisOption = this.option; // FIXME\n // necessary?\n // Disable realtime view update if canvas is not supported.\n\n if (!env.canvasSupported) {\n thisOption.realtime = false;\n }\n\n !isInit && visualSolution.replaceVisualOption(thisOption, newOption, this.replacableOptionKeys);\n this.textStyleModel = this.getModel('textStyle');\n this.resetItemSize();\n this.completeVisualOption();\n },\n\n /**\n * @protected\n */\n resetVisual: function (supplementVisualOption) {\n var stateList = this.stateList;\n supplementVisualOption = zrUtil.bind(supplementVisualOption, this);\n this.controllerVisuals = visualSolution.createVisualMappings(this.option.controller, stateList, supplementVisualOption);\n this.targetVisuals = visualSolution.createVisualMappings(this.option.target, stateList, supplementVisualOption);\n },\n\n /**\n * @protected\n * @return {Array.} An array of series indices.\n */\n getTargetSeriesIndices: function () {\n var optionSeriesIndex = this.option.seriesIndex;\n var seriesIndices = [];\n\n if (optionSeriesIndex == null || optionSeriesIndex === 'all') {\n this.ecModel.eachSeries(function (seriesModel, index) {\n seriesIndices.push(index);\n });\n } else {\n seriesIndices = modelUtil.normalizeToArray(optionSeriesIndex);\n }\n\n return seriesIndices;\n },\n\n /**\n * @public\n */\n eachTargetSeries: function (callback, context) {\n zrUtil.each(this.getTargetSeriesIndices(), function (seriesIndex) {\n callback.call(context, this.ecModel.getSeriesByIndex(seriesIndex));\n }, this);\n },\n\n /**\n * @pubilc\n */\n isTargetSeries: function (seriesModel) {\n var is = false;\n this.eachTargetSeries(function (model) {\n model === seriesModel && (is = true);\n });\n return is;\n },\n\n /**\n * @example\n * this.formatValueText(someVal); // format single numeric value to text.\n * this.formatValueText(someVal, true); // format single category value to text.\n * this.formatValueText([min, max]); // format numeric min-max to text.\n * this.formatValueText([this.dataBound[0], max]); // using data lower bound.\n * this.formatValueText([min, this.dataBound[1]]); // using data upper bound.\n *\n * @param {number|Array.} value Real value, or this.dataBound[0 or 1].\n * @param {boolean} [isCategory=false] Only available when value is number.\n * @param {Array.} edgeSymbols Open-close symbol when value is interval.\n * @return {string}\n * @protected\n */\n formatValueText: function (value, isCategory, edgeSymbols) {\n var option = this.option;\n var precision = option.precision;\n var dataBound = this.dataBound;\n var formatter = option.formatter;\n var isMinMax;\n var textValue;\n edgeSymbols = edgeSymbols || ['<', '>'];\n\n if (zrUtil.isArray(value)) {\n value = value.slice();\n isMinMax = true;\n }\n\n textValue = isCategory ? value : isMinMax ? [toFixed(value[0]), toFixed(value[1])] : toFixed(value);\n\n if (zrUtil.isString(formatter)) {\n return formatter.replace('{value}', isMinMax ? textValue[0] : textValue).replace('{value2}', isMinMax ? textValue[1] : textValue);\n } else if (zrUtil.isFunction(formatter)) {\n return isMinMax ? formatter(value[0], value[1]) : formatter(value);\n }\n\n if (isMinMax) {\n if (value[0] === dataBound[0]) {\n return edgeSymbols[0] + ' ' + textValue[1];\n } else if (value[1] === dataBound[1]) {\n return edgeSymbols[1] + ' ' + textValue[0];\n } else {\n return textValue[0] + ' - ' + textValue[1];\n }\n } else {\n // Format single value (includes category case).\n return textValue;\n }\n\n function toFixed(val) {\n return val === dataBound[0] ? 'min' : val === dataBound[1] ? 'max' : (+val).toFixed(Math.min(precision, 20));\n }\n },\n\n /**\n * @protected\n */\n resetExtent: function () {\n var thisOption = this.option; // Can not calculate data extent by data here.\n // Because series and data may be modified in processing stage.\n // So we do not support the feature \"auto min/max\".\n\n var extent = asc([thisOption.min, thisOption.max]);\n this._dataExtent = extent;\n },\n\n /**\n * @public\n * @param {module:echarts/data/List} list\n * @return {string} Concrete dimention. If return null/undefined,\n * no dimension used.\n */\n getDataDimension: function (list) {\n var optDim = this.option.dimension;\n var listDimensions = list.dimensions;\n\n if (optDim == null && !listDimensions.length) {\n return;\n }\n\n if (optDim != null) {\n return list.getDimension(optDim);\n }\n\n var dimNames = list.dimensions;\n\n for (var i = dimNames.length - 1; i >= 0; i--) {\n var dimName = dimNames[i];\n var dimInfo = list.getDimensionInfo(dimName);\n\n if (!dimInfo.isCalculationCoord) {\n return dimName;\n }\n }\n },\n\n /**\n * @public\n * @override\n */\n getExtent: function () {\n return this._dataExtent.slice();\n },\n\n /**\n * @protected\n */\n completeVisualOption: function () {\n var ecModel = this.ecModel;\n var thisOption = this.option;\n var base = {\n inRange: thisOption.inRange,\n outOfRange: thisOption.outOfRange\n };\n var target = thisOption.target || (thisOption.target = {});\n var controller = thisOption.controller || (thisOption.controller = {});\n zrUtil.merge(target, base); // Do not override\n\n zrUtil.merge(controller, base); // Do not override\n\n var isCategory = this.isCategory();\n completeSingle.call(this, target);\n completeSingle.call(this, controller);\n completeInactive.call(this, target, 'inRange', 'outOfRange'); // completeInactive.call(this, target, 'outOfRange', 'inRange');\n\n completeController.call(this, controller);\n\n function completeSingle(base) {\n // Compatible with ec2 dataRange.color.\n // The mapping order of dataRange.color is: [high value, ..., low value]\n // whereas inRange.color and outOfRange.color is [low value, ..., high value]\n // Notice: ec2 has no inverse.\n if (isArray(thisOption.color) // If there has been inRange: {symbol: ...}, adding color is a mistake.\n // So adding color only when no inRange defined.\n && !base.inRange) {\n base.inRange = {\n color: thisOption.color.slice().reverse()\n };\n } // Compatible with previous logic, always give a defautl color, otherwise\n // simple config with no inRange and outOfRange will not work.\n // Originally we use visualMap.color as the default color, but setOption at\n // the second time the default color will be erased. So we change to use\n // constant DEFAULT_COLOR.\n // If user do not want the default color, set inRange: {color: null}.\n\n\n base.inRange = base.inRange || {\n color: ecModel.get('gradientColor')\n }; // If using shortcut like: {inRange: 'symbol'}, complete default value.\n\n each(this.stateList, function (state) {\n var visualType = base[state];\n\n if (zrUtil.isString(visualType)) {\n var defa = visualDefault.get(visualType, 'active', isCategory);\n\n if (defa) {\n base[state] = {};\n base[state][visualType] = defa;\n } else {\n // Mark as not specified.\n delete base[state];\n }\n }\n }, this);\n }\n\n function completeInactive(base, stateExist, stateAbsent) {\n var optExist = base[stateExist];\n var optAbsent = base[stateAbsent];\n\n if (optExist && !optAbsent) {\n optAbsent = base[stateAbsent] = {};\n each(optExist, function (visualData, visualType) {\n if (!VisualMapping.isValidType(visualType)) {\n return;\n }\n\n var defa = visualDefault.get(visualType, 'inactive', isCategory);\n\n if (defa != null) {\n optAbsent[visualType] = defa; // Compatibable with ec2:\n // Only inactive color to rgba(0,0,0,0) can not\n // make label transparent, so use opacity also.\n\n if (visualType === 'color' && !optAbsent.hasOwnProperty('opacity') && !optAbsent.hasOwnProperty('colorAlpha')) {\n optAbsent.opacity = [0, 0];\n }\n }\n });\n }\n }\n\n function completeController(controller) {\n var symbolExists = (controller.inRange || {}).symbol || (controller.outOfRange || {}).symbol;\n var symbolSizeExists = (controller.inRange || {}).symbolSize || (controller.outOfRange || {}).symbolSize;\n var inactiveColor = this.get('inactiveColor');\n each(this.stateList, function (state) {\n var itemSize = this.itemSize;\n var visuals = controller[state]; // Set inactive color for controller if no other color\n // attr (like colorAlpha) specified.\n\n if (!visuals) {\n visuals = controller[state] = {\n color: isCategory ? inactiveColor : [inactiveColor]\n };\n } // Consistent symbol and symbolSize if not specified.\n\n\n if (visuals.symbol == null) {\n visuals.symbol = symbolExists && zrUtil.clone(symbolExists) || (isCategory ? 'roundRect' : ['roundRect']);\n }\n\n if (visuals.symbolSize == null) {\n visuals.symbolSize = symbolSizeExists && zrUtil.clone(symbolSizeExists) || (isCategory ? itemSize[0] : [itemSize[0], itemSize[0]]);\n } // Filter square and none.\n\n\n visuals.symbol = mapVisual(visuals.symbol, function (symbol) {\n return symbol === 'none' || symbol === 'square' ? 'roundRect' : symbol;\n }); // Normalize symbolSize\n\n var symbolSize = visuals.symbolSize;\n\n if (symbolSize != null) {\n var max = -Infinity; // symbolSize can be object when categories defined.\n\n eachVisual(symbolSize, function (value) {\n value > max && (max = value);\n });\n visuals.symbolSize = mapVisual(symbolSize, function (value) {\n return linearMap(value, [0, max], [0, itemSize[0]], true);\n });\n }\n }, this);\n }\n },\n\n /**\n * @protected\n */\n resetItemSize: function () {\n this.itemSize = [parseFloat(this.get('itemWidth')), parseFloat(this.get('itemHeight'))];\n },\n\n /**\n * @public\n */\n isCategory: function () {\n return !!this.option.categories;\n },\n\n /**\n * @public\n * @abstract\n */\n setSelected: noop,\n\n /**\n * @public\n * @abstract\n * @param {*|module:echarts/data/List} valueOrData\n * @param {number} dataIndex\n * @return {string} state See this.stateList\n */\n getValueState: noop,\n\n /**\n * FIXME\n * Do not publish to thirt-part-dev temporarily\n * util the interface is stable. (Should it return\n * a function but not visual meta?)\n *\n * @pubilc\n * @abstract\n * @param {Function} getColorVisual\n * params: value, valueState\n * return: color\n * @return {Object} visualMeta\n * should includes {stops, outerColors}\n * outerColor means [colorBeyondMinValue, colorBeyondMaxValue]\n */\n getVisualMeta: noop\n});\nvar _default = VisualMapModel;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar layout = require(\"../../util/layout\");\n\nvar VisualMapping = require(\"../../visual/VisualMapping\");\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 _default = echarts.extendComponentView({\n type: 'visualMap',\n\n /**\n * @readOnly\n * @type {Object}\n */\n autoPositionValues: {\n left: 1,\n right: 1,\n top: 1,\n bottom: 1\n },\n init: function (ecModel, api) {\n /**\n * @readOnly\n * @type {module:echarts/model/Global}\n */\n this.ecModel = ecModel;\n /**\n * @readOnly\n * @type {module:echarts/ExtensionAPI}\n */\n\n this.api = api;\n /**\n * @readOnly\n * @type {module:echarts/component/visualMap/visualMapModel}\n */\n\n this.visualMapModel;\n },\n\n /**\n * @protected\n */\n render: function (visualMapModel, ecModel, api, payload) {\n this.visualMapModel = visualMapModel;\n\n if (visualMapModel.get('show') === false) {\n this.group.removeAll();\n return;\n }\n\n this.doRender.apply(this, arguments);\n },\n\n /**\n * @protected\n */\n renderBackground: function (group) {\n var visualMapModel = this.visualMapModel;\n var padding = formatUtil.normalizeCssArray(visualMapModel.get('padding') || 0);\n var rect = group.getBoundingRect();\n group.add(new graphic.Rect({\n z2: -1,\n // Lay background rect on the lowest layer.\n silent: true,\n shape: {\n x: rect.x - padding[3],\n y: rect.y - padding[0],\n width: rect.width + padding[3] + padding[1],\n height: rect.height + padding[0] + padding[2]\n },\n style: {\n fill: visualMapModel.get('backgroundColor'),\n stroke: visualMapModel.get('borderColor'),\n lineWidth: visualMapModel.get('borderWidth')\n }\n }));\n },\n\n /**\n * @protected\n * @param {number} targetValue can be Infinity or -Infinity\n * @param {string=} visualCluster Only can be 'color' 'opacity' 'symbol' 'symbolSize'\n * @param {Object} [opts]\n * @param {string=} [opts.forceState] Specify state, instead of using getValueState method.\n * @param {string=} [opts.convertOpacityToAlpha=false] For color gradient in controller widget.\n * @return {*} Visual value.\n */\n getControllerVisual: function (targetValue, visualCluster, opts) {\n opts = opts || {};\n var forceState = opts.forceState;\n var visualMapModel = this.visualMapModel;\n var visualObj = {}; // Default values.\n\n if (visualCluster === 'symbol') {\n visualObj.symbol = visualMapModel.get('itemSymbol');\n }\n\n if (visualCluster === 'color') {\n var defaultColor = visualMapModel.get('contentColor');\n visualObj.color = defaultColor;\n }\n\n function getter(key) {\n return visualObj[key];\n }\n\n function setter(key, value) {\n visualObj[key] = value;\n }\n\n var mappings = visualMapModel.controllerVisuals[forceState || visualMapModel.getValueState(targetValue)];\n var visualTypes = VisualMapping.prepareVisualTypes(mappings);\n zrUtil.each(visualTypes, function (type) {\n var visualMapping = mappings[type];\n\n if (opts.convertOpacityToAlpha && type === 'opacity') {\n type = 'colorAlpha';\n visualMapping = mappings.__alphaForOpacity;\n }\n\n if (VisualMapping.dependsOn(type, visualCluster)) {\n visualMapping && visualMapping.applyVisual(targetValue, getter, setter);\n }\n });\n return visualObj[visualCluster];\n },\n\n /**\n * @protected\n */\n positionGroup: function (group) {\n var model = this.visualMapModel;\n var api = this.api;\n layout.positionElement(group, model.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n },\n\n /**\n * @protected\n * @abstract\n */\n doRender: zrUtil.noop\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 _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\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/component/visualMap/VisualMapModel} visualMapModel\\\n * @param {module:echarts/ExtensionAPI} api\n * @param {Array.} itemSize always [short, long]\n * @return {string} 'left' or 'right' or 'top' or 'bottom'\n */\nfunction getItemAlign(visualMapModel, api, itemSize) {\n var modelOption = visualMapModel.option;\n var itemAlign = modelOption.align;\n\n if (itemAlign != null && itemAlign !== 'auto') {\n return itemAlign;\n } // Auto decision align.\n\n\n var ecSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var realIndex = modelOption.orient === 'horizontal' ? 1 : 0;\n var paramsSet = [['left', 'right', 'width'], ['top', 'bottom', 'height']];\n var reals = paramsSet[realIndex];\n var fakeValue = [0, null, 10];\n var layoutInput = {};\n\n for (var i = 0; i < 3; i++) {\n layoutInput[paramsSet[1 - realIndex][i]] = fakeValue[i];\n layoutInput[reals[i]] = i === 2 ? itemSize[0] : modelOption[reals[i]];\n }\n\n var rParam = [['x', 'width', 3], ['y', 'height', 0]][realIndex];\n var rect = getLayoutRect(layoutInput, ecSize, modelOption.padding);\n return reals[(rect.margin[rParam[2]] || 0) + rect[rParam[0]] + rect[rParam[1]] * 0.5 < ecSize[rParam[1]] * 0.5 ? 0 : 1];\n}\n/**\n * Prepare dataIndex for outside usage, where dataIndex means rawIndex, and\n * dataIndexInside means filtered index.\n */\n\n\nfunction makeHighDownBatch(batch, visualMapModel) {\n zrUtil.each(batch || [], function (batchItem) {\n if (batchItem.dataIndex != null) {\n batchItem.dataIndexInside = batchItem.dataIndex;\n batchItem.dataIndex = null;\n }\n\n batchItem.highlightKey = 'visualMap' + (visualMapModel ? visualMapModel.componentIndex : '');\n });\n return batch;\n}\n\nexports.getItemAlign = getItemAlign;\nexports.makeHighDownBatch = makeHighDownBatch;","\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*/\nvar each = zrUtil.each;\n\nfunction _default(option) {\n var visualMap = option && option.visualMap;\n\n if (!zrUtil.isArray(visualMap)) {\n visualMap = visualMap ? [visualMap] : [];\n }\n\n each(visualMap, function (opt) {\n if (!opt) {\n return;\n } // rename splitList to pieces\n\n\n if (has(opt, 'splitList') && !has(opt, 'pieces')) {\n opt.pieces = opt.splitList;\n delete opt.splitList;\n }\n\n var pieces = opt.pieces;\n\n if (pieces && zrUtil.isArray(pieces)) {\n each(pieces, function (piece) {\n if (zrUtil.isObject(piece)) {\n if (has(piece, 'start') && !has(piece, 'min')) {\n piece.min = piece.start;\n }\n\n if (has(piece, 'end') && !has(piece, 'max')) {\n piece.max = piece.end;\n }\n }\n });\n }\n });\n}\n\nfunction has(obj, name) {\n return obj && obj.hasOwnProperty && obj.hasOwnProperty(name);\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 Component = require(\"../../model/Component\");\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*/\nComponent.registerSubTypeDefaulter('visualMap', function (option) {\n // Compatible with ec2, when splitNumber === 0, continuous visualMap will be used.\n return !option.categories && (!(option.pieces ? option.pieces.length > 0 : option.splitNumber > 0) || option.calculable) ? 'continuous' : 'piecewise';\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\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar visualSolution = require(\"../../visual/visualSolution\");\n\nvar VisualMapping = require(\"../../visual/VisualMapping\");\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 VISUAL_PRIORITY = echarts.PRIORITY.VISUAL.COMPONENT;\necharts.registerVisual(VISUAL_PRIORITY, {\n createOnAllSeries: true,\n reset: function (seriesModel, ecModel) {\n var resetDefines = [];\n ecModel.eachComponent('visualMap', function (visualMapModel) {\n var pipelineContext = seriesModel.pipelineContext;\n\n if (!visualMapModel.isTargetSeries(seriesModel) || pipelineContext && pipelineContext.large) {\n return;\n }\n\n resetDefines.push(visualSolution.incrementalApplyVisual(visualMapModel.stateList, visualMapModel.targetVisuals, zrUtil.bind(visualMapModel.getValueState, visualMapModel), visualMapModel.getDataDimension(seriesModel.getData())));\n });\n return resetDefines;\n }\n}); // Only support color.\n\necharts.registerVisual(VISUAL_PRIORITY, {\n createOnAllSeries: true,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n var visualMetaList = [];\n ecModel.eachComponent('visualMap', function (visualMapModel) {\n if (visualMapModel.isTargetSeries(seriesModel)) {\n var visualMeta = visualMapModel.getVisualMeta(zrUtil.bind(getColorVisual, null, seriesModel, visualMapModel)) || {\n stops: [],\n outerColors: []\n };\n var concreteDim = visualMapModel.getDataDimension(data);\n var dimInfo = data.getDimensionInfo(concreteDim);\n\n if (dimInfo != null) {\n // visualMeta.dimension should be dimension index, but not concrete dimension.\n visualMeta.dimension = dimInfo.index;\n visualMetaList.push(visualMeta);\n }\n }\n }); // console.log(JSON.stringify(visualMetaList.map(a => a.stops)));\n\n seriesModel.getData().setVisual('visualMeta', visualMetaList);\n }\n}); // FIXME\n// performance and export for heatmap?\n// value can be Infinity or -Infinity\n\nfunction getColorVisual(seriesModel, visualMapModel, value, valueState) {\n var mappings = visualMapModel.targetVisuals[valueState];\n var visualTypes = VisualMapping.prepareVisualTypes(mappings);\n var resultVisual = {\n color: seriesModel.getData().getVisual('color') // default color.\n\n };\n\n for (var i = 0, len = visualTypes.length; i < len; i++) {\n var type = visualTypes[i];\n var mapping = mappings[type === 'opacity' ? '__alphaForOpacity' : type];\n mapping && mapping.applyVisual(value, getVisual, setVisual);\n }\n\n return resultVisual.color;\n\n function getVisual(key) {\n return resultVisual[key];\n }\n\n function setVisual(key, value) {\n resultVisual[key] = value;\n }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\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*/\nvar actionInfo = {\n type: 'selectDataRange',\n event: 'dataRangeSelected',\n // FIXME use updateView appears wrong\n update: 'update'\n};\necharts.registerAction(actionInfo, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'visualMap',\n query: payload\n }, function (model) {\n model.setSelected(payload.selected);\n });\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* 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// (1) The code `if (__DEV__) ...` can be removed by build tool.\n// (2) If intend to use `__DEV__`, this module should be imported. Use a global\n// variable `__DEV__` may cause that miss the declaration (see #6535), or the\n// declaration is behind of the using position (for example in `Model.extent`,\n// And tools like rollup can not analysis the dependency if not import).\nvar dev; // In browser\n\nif (typeof window !== 'undefined') {\n dev = window.__DEV__;\n} // In node\nelse if (typeof global !== 'undefined') {\n dev = global.__DEV__;\n }\n\nif (typeof dev === 'undefined') {\n dev = true;\n}\n\nvar __DEV__ = dev;\nexports.__DEV__ = __DEV__;","\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 _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar map = _util.map;\n\nvar _number = require(\"../util/number\");\n\nvar linearMap = _number.linearMap;\nvar getPixelPrecision = _number.getPixelPrecision;\nvar round = _number.round;\n\nvar _axisTickLabelBuilder = require(\"./axisTickLabelBuilder\");\n\nvar createAxisTicks = _axisTickLabelBuilder.createAxisTicks;\nvar createAxisLabels = _axisTickLabelBuilder.createAxisLabels;\nvar calculateCategoryInterval = _axisTickLabelBuilder.calculateCategoryInterval;\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 NORMALIZED_EXTENT = [0, 1];\n/**\n * Base class of Axis.\n * @constructor\n */\n\nvar Axis = function (dim, scale, extent) {\n /**\n * Axis dimension. Such as 'x', 'y', 'z', 'angle', 'radius'.\n * @type {string}\n */\n this.dim = dim;\n /**\n * Axis scale\n * @type {module:echarts/coord/scale/*}\n */\n\n this.scale = scale;\n /**\n * @type {Array.}\n * @private\n */\n\n this._extent = extent || [0, 0];\n /**\n * @type {boolean}\n */\n\n this.inverse = false;\n /**\n * Usually true when axis has a ordinal scale\n * @type {boolean}\n */\n\n this.onBand = false;\n};\n\nAxis.prototype = {\n constructor: Axis,\n\n /**\n * If axis extent contain given coord\n * @param {number} coord\n * @return {boolean}\n */\n contain: function (coord) {\n var extent = this._extent;\n var min = Math.min(extent[0], extent[1]);\n var max = Math.max(extent[0], extent[1]);\n return coord >= min && coord <= max;\n },\n\n /**\n * If axis extent contain given data\n * @param {number} data\n * @return {boolean}\n */\n containData: function (data) {\n return this.scale.contain(data);\n },\n\n /**\n * Get coord extent.\n * @return {Array.}\n */\n getExtent: function () {\n return this._extent.slice();\n },\n\n /**\n * Get precision used for formatting\n * @param {Array.} [dataExtent]\n * @return {number}\n */\n getPixelPrecision: function (dataExtent) {\n return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);\n },\n\n /**\n * Set coord extent\n * @param {number} start\n * @param {number} end\n */\n setExtent: function (start, end) {\n var extent = this._extent;\n extent[0] = start;\n extent[1] = end;\n },\n\n /**\n * Convert data to coord. Data is the rank if it has an ordinal scale\n * @param {number} data\n * @param {boolean} clamp\n * @return {number}\n */\n dataToCoord: function (data, clamp) {\n var extent = this._extent;\n var scale = this.scale;\n data = scale.normalize(data);\n\n if (this.onBand && scale.type === 'ordinal') {\n extent = extent.slice();\n fixExtentWithBands(extent, scale.count());\n }\n\n return linearMap(data, NORMALIZED_EXTENT, extent, clamp);\n },\n\n /**\n * Convert coord to data. Data is the rank if it has an ordinal scale\n * @param {number} coord\n * @param {boolean} clamp\n * @return {number}\n */\n coordToData: function (coord, clamp) {\n var extent = this._extent;\n var scale = this.scale;\n\n if (this.onBand && scale.type === 'ordinal') {\n extent = extent.slice();\n fixExtentWithBands(extent, scale.count());\n }\n\n var t = linearMap(coord, extent, NORMALIZED_EXTENT, clamp);\n return this.scale.scale(t);\n },\n\n /**\n * Convert pixel point to data in axis\n * @param {Array.} point\n * @param {boolean} clamp\n * @return {number} data\n */\n pointToData: function (point, clamp) {// Should be implemented in derived class if necessary.\n },\n\n /**\n * Different from `zrUtil.map(axis.getTicks(), axis.dataToCoord, axis)`,\n * `axis.getTicksCoords` considers `onBand`, which is used by\n * `boundaryGap:true` of category axis and splitLine and splitArea.\n * @param {Object} [opt]\n * @param {Model} [opt.tickModel=axis.model.getModel('axisTick')]\n * @param {boolean} [opt.clamp] If `true`, the first and the last\n * tick must be at the axis end points. Otherwise, clip ticks\n * that outside the axis extent.\n * @return {Array.} [{\n * coord: ...,\n * tickValue: ...\n * }, ...]\n */\n getTicksCoords: function (opt) {\n opt = opt || {};\n var tickModel = opt.tickModel || this.getTickModel();\n var result = createAxisTicks(this, tickModel);\n var ticks = result.ticks;\n var ticksCoords = map(ticks, function (tickValue) {\n return {\n coord: this.dataToCoord(tickValue),\n tickValue: tickValue\n };\n }, this);\n var alignWithLabel = tickModel.get('alignWithLabel');\n fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp);\n return ticksCoords;\n },\n\n /**\n * @return {Array.>} [{ coord: ..., tickValue: ...}]\n */\n getMinorTicksCoords: function () {\n if (this.scale.type === 'ordinal') {\n // Category axis doesn't support minor ticks\n return [];\n }\n\n var minorTickModel = this.model.getModel('minorTick');\n var splitNumber = minorTickModel.get('splitNumber'); // Protection.\n\n if (!(splitNumber > 0 && splitNumber < 100)) {\n splitNumber = 5;\n }\n\n var minorTicks = this.scale.getMinorTicks(splitNumber);\n var minorTicksCoords = map(minorTicks, function (minorTicksGroup) {\n return map(minorTicksGroup, function (minorTick) {\n return {\n coord: this.dataToCoord(minorTick),\n tickValue: minorTick\n };\n }, this);\n }, this);\n return minorTicksCoords;\n },\n\n /**\n * @return {Array.} [{\n * formattedLabel: string,\n * rawLabel: axis.scale.getLabel(tickValue)\n * tickValue: number\n * }, ...]\n */\n getViewLabels: function () {\n return createAxisLabels(this).labels;\n },\n\n /**\n * @return {module:echarts/coord/model/Model}\n */\n getLabelModel: function () {\n return this.model.getModel('axisLabel');\n },\n\n /**\n * Notice here we only get the default tick model. For splitLine\n * or splitArea, we should pass the splitLineModel or splitAreaModel\n * manually when calling `getTicksCoords`.\n * In GL, this method may be overrided to:\n * `axisModel.getModel('axisTick', grid3DModel.getModel('axisTick'));`\n * @return {module:echarts/coord/model/Model}\n */\n getTickModel: function () {\n return this.model.getModel('axisTick');\n },\n\n /**\n * Get width of band\n * @return {number}\n */\n getBandWidth: function () {\n var axisExtent = this._extent;\n var dataExtent = this.scale.getExtent();\n var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0); // Fix #2728, avoid NaN when only one data.\n\n len === 0 && (len = 1);\n var size = Math.abs(axisExtent[1] - axisExtent[0]);\n return Math.abs(size) / len;\n },\n\n /**\n * @abstract\n * @return {boolean} Is horizontal\n */\n isHorizontal: null,\n\n /**\n * @abstract\n * @return {number} Get axis rotate, by degree.\n */\n getRotate: null,\n\n /**\n * Only be called in category axis.\n * Can be overrided, consider other axes like in 3D.\n * @return {number} Auto interval for cateogry axis tick and label\n */\n calculateCategoryInterval: function () {\n return calculateCategoryInterval(this);\n }\n};\n\nfunction fixExtentWithBands(extent, nTick) {\n var size = extent[1] - extent[0];\n var len = nTick;\n var margin = size / len / 2;\n extent[0] += margin;\n extent[1] -= margin;\n} // If axis has labels [1, 2, 3, 4]. Bands on the axis are\n// |---1---|---2---|---3---|---4---|.\n// So the displayed ticks and splitLine/splitArea should between\n// each data item, otherwise cause misleading (e.g., split tow bars\n// of a single data item when there are two bar series).\n// Also consider if tickCategoryInterval > 0 and onBand, ticks and\n// splitLine/spliteArea should layout appropriately corresponding\n// to displayed labels. (So we should not use `getBandWidth` in this\n// case).\n\n\nfunction fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp) {\n var ticksLen = ticksCoords.length;\n\n if (!axis.onBand || alignWithLabel || !ticksLen) {\n return;\n }\n\n var axisExtent = axis.getExtent();\n var last;\n var diffSize;\n\n if (ticksLen === 1) {\n ticksCoords[0].coord = axisExtent[0];\n last = ticksCoords[1] = {\n coord: axisExtent[0]\n };\n } else {\n var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue;\n var shift = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen;\n each(ticksCoords, function (ticksItem) {\n ticksItem.coord -= shift / 2;\n });\n var dataExtent = axis.scale.getExtent();\n diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue;\n last = {\n coord: ticksCoords[ticksLen - 1].coord + shift * diffSize\n };\n ticksCoords.push(last);\n }\n\n var inverse = axisExtent[0] > axisExtent[1]; // Handling clamp.\n\n if (littleThan(ticksCoords[0].coord, axisExtent[0])) {\n clamp ? ticksCoords[0].coord = axisExtent[0] : ticksCoords.shift();\n }\n\n if (clamp && littleThan(axisExtent[0], ticksCoords[0].coord)) {\n ticksCoords.unshift({\n coord: axisExtent[0]\n });\n }\n\n if (littleThan(axisExtent[1], last.coord)) {\n clamp ? last.coord = axisExtent[1] : ticksCoords.pop();\n }\n\n if (clamp && littleThan(last.coord, axisExtent[1])) {\n ticksCoords.push({\n coord: axisExtent[1]\n });\n }\n\n function littleThan(a, b) {\n // Avoid rounding error cause calculated tick coord different with extent.\n // It may cause an extra unecessary tick added.\n a = round(a);\n b = round(b);\n return inverse ? a > b : a < b;\n }\n}\n\nvar _default = Axis;\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 matrix = require(\"zrender/lib/core/matrix\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar Transformable = require(\"zrender/lib/mixin/Transformable\");\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 * Simple view coordinate system\n * Mapping given x, y to transformd view x, y\n */\nvar v2ApplyTransform = vector.applyTransform; // Dummy transform node\n\nfunction TransformDummy() {\n Transformable.call(this);\n}\n\nzrUtil.mixin(TransformDummy, Transformable);\n\nfunction View(name) {\n /**\n * @type {string}\n */\n this.name = name;\n /**\n * @type {Object}\n */\n\n this.zoomLimit;\n Transformable.call(this);\n this._roamTransformable = new TransformDummy();\n this._rawTransformable = new TransformDummy();\n this._center;\n this._zoom;\n}\n\nView.prototype = {\n constructor: View,\n type: 'view',\n\n /**\n * @param {Array.}\n * @readOnly\n */\n dimensions: ['x', 'y'],\n\n /**\n * Set bounding rect\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n */\n // PENDING to getRect\n setBoundingRect: function (x, y, width, height) {\n this._rect = new BoundingRect(x, y, width, height);\n return this._rect;\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n // PENDING to getRect\n getBoundingRect: function () {\n return this._rect;\n },\n\n /**\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n */\n setViewRect: function (x, y, width, height) {\n this.transformTo(x, y, width, height);\n this._viewRect = new BoundingRect(x, y, width, height);\n },\n\n /**\n * Transformed to particular position and size\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n */\n transformTo: function (x, y, width, height) {\n var rect = this.getBoundingRect();\n var rawTransform = this._rawTransformable;\n rawTransform.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));\n rawTransform.decomposeTransform();\n\n this._updateTransform();\n },\n\n /**\n * Set center of view\n * @param {Array.} [centerCoord]\n */\n setCenter: function (centerCoord) {\n if (!centerCoord) {\n return;\n }\n\n this._center = centerCoord;\n\n this._updateCenterAndZoom();\n },\n\n /**\n * @param {number} zoom\n */\n setZoom: function (zoom) {\n zoom = zoom || 1;\n var zoomLimit = this.zoomLimit;\n\n if (zoomLimit) {\n if (zoomLimit.max != null) {\n zoom = Math.min(zoomLimit.max, zoom);\n }\n\n if (zoomLimit.min != null) {\n zoom = Math.max(zoomLimit.min, zoom);\n }\n }\n\n this._zoom = zoom;\n\n this._updateCenterAndZoom();\n },\n\n /**\n * Get default center without roam\n */\n getDefaultCenter: function () {\n // Rect before any transform\n var rawRect = this.getBoundingRect();\n var cx = rawRect.x + rawRect.width / 2;\n var cy = rawRect.y + rawRect.height / 2;\n return [cx, cy];\n },\n getCenter: function () {\n return this._center || this.getDefaultCenter();\n },\n getZoom: function () {\n return this._zoom || 1;\n },\n\n /**\n * @return {Array.} data\n * @param {boolean} noRoam\n * @param {Array.} [out]\n * @return {Array.}\n */\n dataToPoint: function (data, noRoam, out) {\n var transform = noRoam ? this._rawTransform : this.transform;\n out = out || [];\n return transform ? v2ApplyTransform(out, data, transform) : vector.copy(out, data);\n },\n\n /**\n * Convert a (x, y) point to (lon, lat) data\n * @param {Array.} point\n * @return {Array.}\n */\n pointToData: function (point) {\n var invTransform = this.invTransform;\n return invTransform ? v2ApplyTransform([], point, invTransform) : [point[0], point[1]];\n },\n\n /**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),\n\n /**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n convertFromPixel: zrUtil.curry(doConvert, 'pointToData'),\n\n /**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n containPoint: function (point) {\n return this.getViewRectAfterRoam().contain(point[0], point[1]);\n }\n /**\n * @return {number}\n */\n // getScalarScale: function () {\n // // Use determinant square root of transform to mutiply scalar\n // var m = this.transform;\n // var det = Math.sqrt(Math.abs(m[0] * m[3] - m[2] * m[1]));\n // return det;\n // }\n\n};\nzrUtil.mixin(View, Transformable);\n\nfunction doConvert(methodName, ecModel, finder, value) {\n var seriesModel = finder.seriesModel;\n var coordSys = seriesModel ? seriesModel.coordinateSystem : null; // e.g., graph.\n\n return coordSys === this ? coordSys[methodName](value) : null;\n}\n\nvar _default = View;\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\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 defaultOption = {\n show: true,\n zlevel: 0,\n z: 0,\n // Inverse the axis.\n inverse: false,\n // Axis name displayed.\n name: '',\n // 'start' | 'middle' | 'end'\n nameLocation: 'end',\n // By degree. By default auto rotate by nameLocation.\n nameRotate: null,\n nameTruncate: {\n maxWidth: null,\n ellipsis: '...',\n placeholder: '.'\n },\n // Use global text style by default.\n nameTextStyle: {},\n // The gap between axisName and axisLine.\n nameGap: 15,\n // Default `false` to support tooltip.\n silent: false,\n // Default `false` to avoid legacy user event listener fail.\n triggerEvent: false,\n tooltip: {\n show: false\n },\n axisPointer: {},\n axisLine: {\n show: true,\n onZero: true,\n onZeroAxisIndex: null,\n lineStyle: {\n color: '#333',\n width: 1,\n type: 'solid'\n },\n // The arrow at both ends the the axis.\n symbol: ['none', 'none'],\n symbolSize: [10, 15]\n },\n axisTick: {\n show: true,\n // Whether axisTick is inside the grid or outside the grid.\n inside: false,\n // The length of axisTick.\n length: 5,\n lineStyle: {\n width: 1\n }\n },\n axisLabel: {\n show: true,\n // Whether axisLabel is inside the grid or outside the grid.\n inside: false,\n rotate: 0,\n // true | false | null/undefined (auto)\n showMinLabel: null,\n // true | false | null/undefined (auto)\n showMaxLabel: null,\n margin: 8,\n // formatter: null,\n fontSize: 12\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: ['#ccc'],\n width: 1,\n type: 'solid'\n }\n },\n splitArea: {\n show: false,\n areaStyle: {\n color: ['rgba(250,250,250,0.3)', 'rgba(200,200,200,0.3)']\n }\n }\n};\nvar axisDefault = {};\naxisDefault.categoryAxis = zrUtil.merge({\n // The gap at both ends of the axis. For categoryAxis, boolean.\n boundaryGap: true,\n // Set false to faster category collection.\n // Only usefull in the case like: category is\n // ['2012-01-01', '2012-01-02', ...], where the input\n // data has been ensured not duplicate and is large data.\n // null means \"auto\":\n // if axis.data provided, do not deduplication,\n // else do deduplication.\n deduplication: null,\n // splitArea: {\n // show: false\n // },\n splitLine: {\n show: false\n },\n axisTick: {\n // If tick is align with label when boundaryGap is true\n alignWithLabel: false,\n interval: 'auto'\n },\n axisLabel: {\n interval: 'auto'\n }\n}, defaultOption);\naxisDefault.valueAxis = zrUtil.merge({\n // The gap at both ends of the axis. For value axis, [GAP, GAP], where\n // `GAP` can be an absolute pixel number (like `35`), or percent (like `'30%'`)\n boundaryGap: [0, 0],\n // TODO\n // min/max: [30, datamin, 60] or [20, datamin] or [datamin, 60]\n // Min value of the axis. can be:\n // + a number\n // + 'dataMin': use the min value in data.\n // + null/undefined: auto decide min value (consider pretty look and boundaryGap).\n // min: null,\n // Max value of the axis. can be:\n // + a number\n // + 'dataMax': use the max value in data.\n // + null/undefined: auto decide max value (consider pretty look and boundaryGap).\n // max: null,\n // Readonly prop, specifies start value of the range when using data zoom.\n // rangeStart: null\n // Readonly prop, specifies end value of the range when using data zoom.\n // rangeEnd: null\n // Optional value can be:\n // + `false`: always include value 0.\n // + `true`: the extent do not consider value 0.\n // scale: false,\n // AxisTick and axisLabel and splitLine are caculated based on splitNumber.\n splitNumber: 5,\n // Interval specifies the span of the ticks is mandatorily.\n // interval: null\n // Specify min interval when auto calculate tick interval.\n // minInterval: null\n // Specify max interval when auto calculate tick interval.\n // maxInterval: null\n minorTick: {\n // Minor tick, not available for cateogry axis.\n show: false,\n // Split number of minor ticks. The value should be in range of (0, 100)\n splitNumber: 5,\n // Lenght of minor tick\n length: 3,\n // Same inside with axisTick\n // Line style\n lineStyle: {// Default to be same with axisTick\n }\n },\n minorSplitLine: {\n show: false,\n lineStyle: {\n color: '#eee',\n width: 1\n }\n }\n}, defaultOption);\naxisDefault.timeAxis = zrUtil.defaults({\n scale: true,\n min: 'dataMin',\n max: 'dataMax'\n}, axisDefault.valueAxis);\naxisDefault.logAxis = zrUtil.defaults({\n scale: true,\n logBase: 10\n}, axisDefault.valueAxis);\nvar _default = axisDefault;\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 _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar OrdinalScale = require(\"../scale/Ordinal\");\n\nvar IntervalScale = require(\"../scale/Interval\");\n\nvar Scale = require(\"../scale/Scale\");\n\nvar numberUtil = require(\"../util/number\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar prepareLayoutBarSeries = _barGrid.prepareLayoutBarSeries;\nvar makeColumnLayout = _barGrid.makeColumnLayout;\nvar retrieveColumnLayout = _barGrid.retrieveColumnLayout;\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nrequire(\"../scale/Time\");\n\nrequire(\"../scale/Log\");\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 * Get axis scale extent before niced.\n * Item of returned array can only be number (including Infinity and NaN).\n */\nfunction getScaleExtent(scale, model) {\n var scaleType = scale.type;\n var min = model.getMin();\n var max = model.getMax();\n var originalExtent = scale.getExtent();\n var axisDataLen;\n var boundaryGap;\n var span;\n\n if (scaleType === 'ordinal') {\n axisDataLen = model.getCategories().length;\n } else {\n boundaryGap = model.get('boundaryGap');\n\n if (!zrUtil.isArray(boundaryGap)) {\n boundaryGap = [boundaryGap || 0, boundaryGap || 0];\n }\n\n if (typeof boundaryGap[0] === 'boolean') {\n boundaryGap = [0, 0];\n }\n\n boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], 1);\n boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], 1);\n span = originalExtent[1] - originalExtent[0] || Math.abs(originalExtent[0]);\n } // Notice: When min/max is not set (that is, when there are null/undefined,\n // which is the most common case), these cases should be ensured:\n // (1) For 'ordinal', show all axis.data.\n // (2) For others:\n // + `boundaryGap` is applied (if min/max set, boundaryGap is\n // disabled).\n // + If `needCrossZero`, min/max should be zero, otherwise, min/max should\n // be the result that originalExtent enlarged by boundaryGap.\n // (3) If no data, it should be ensured that `scale.setBlank` is set.\n // FIXME\n // (1) When min/max is 'dataMin' or 'dataMax', should boundaryGap be able to used?\n // (2) When `needCrossZero` and all data is positive/negative, should it be ensured\n // that the results processed by boundaryGap are positive/negative?\n\n\n if (min === 'dataMin') {\n min = originalExtent[0];\n } else if (typeof min === 'function') {\n min = min({\n min: originalExtent[0],\n max: originalExtent[1]\n });\n }\n\n if (max === 'dataMax') {\n max = originalExtent[1];\n } else if (typeof max === 'function') {\n max = max({\n min: originalExtent[0],\n max: originalExtent[1]\n });\n }\n\n var fixMin = min != null;\n var fixMax = max != null;\n\n if (min == null) {\n min = scaleType === 'ordinal' ? axisDataLen ? 0 : NaN : originalExtent[0] - boundaryGap[0] * span;\n }\n\n if (max == null) {\n max = scaleType === 'ordinal' ? axisDataLen ? axisDataLen - 1 : NaN : originalExtent[1] + boundaryGap[1] * span;\n }\n\n (min == null || !isFinite(min)) && (min = NaN);\n (max == null || !isFinite(max)) && (max = NaN);\n scale.setBlank(zrUtil.eqNaN(min) || zrUtil.eqNaN(max) || scaleType === 'ordinal' && !scale.getOrdinalMeta().categories.length); // Evaluate if axis needs cross zero\n\n if (model.getNeedCrossZero()) {\n // Axis is over zero and min is not set\n if (min > 0 && max > 0 && !fixMin) {\n min = 0;\n } // Axis is under zero and max is not set\n\n\n if (min < 0 && max < 0 && !fixMax) {\n max = 0;\n }\n } // If bars are placed on a base axis of type time or interval account for axis boundary overflow and current axis\n // is base axis\n // FIXME\n // (1) Consider support value axis, where below zero and axis `onZero` should be handled properly.\n // (2) Refactor the logic with `barGrid`. Is it not need to `makeBarWidthAndOffsetInfo` twice with different extent?\n // Should not depend on series type `bar`?\n // (3) Fix that might overlap when using dataZoom.\n // (4) Consider other chart types using `barGrid`?\n // See #6728, #4862, `test/bar-overflow-time-plot.html`\n\n\n var ecModel = model.ecModel;\n\n if (ecModel && scaleType === 'time'\n /*|| scaleType === 'interval' */\n ) {\n var barSeriesModels = prepareLayoutBarSeries('bar', ecModel);\n var isBaseAxisAndHasBarSeries;\n zrUtil.each(barSeriesModels, function (seriesModel) {\n isBaseAxisAndHasBarSeries |= seriesModel.getBaseAxis() === model.axis;\n });\n\n if (isBaseAxisAndHasBarSeries) {\n // Calculate placement of bars on axis\n var barWidthAndOffset = makeColumnLayout(barSeriesModels); // Adjust axis min and max to account for overflow\n\n var adjustedScale = adjustScaleForOverflow(min, max, model, barWidthAndOffset);\n min = adjustedScale.min;\n max = adjustedScale.max;\n }\n }\n\n return {\n extent: [min, max],\n // \"fix\" means \"fixed\", the value should not be\n // changed in the subsequent steps.\n fixMin: fixMin,\n fixMax: fixMax\n };\n}\n\nfunction adjustScaleForOverflow(min, max, model, barWidthAndOffset) {\n // Get Axis Length\n var axisExtent = model.axis.getExtent();\n var axisLength = axisExtent[1] - axisExtent[0]; // Get bars on current base axis and calculate min and max overflow\n\n var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);\n\n if (barsOnCurrentAxis === undefined) {\n return {\n min: min,\n max: max\n };\n }\n\n var minOverflow = Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n minOverflow = Math.min(item.offset, minOverflow);\n });\n var maxOverflow = -Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n maxOverflow = Math.max(item.offset + item.width, maxOverflow);\n });\n minOverflow = Math.abs(minOverflow);\n maxOverflow = Math.abs(maxOverflow);\n var totalOverFlow = minOverflow + maxOverflow; // Calulate required buffer based on old range and overflow\n\n var oldRange = max - min;\n var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength;\n var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange;\n max += overflowBuffer * (maxOverflow / totalOverFlow);\n min -= overflowBuffer * (minOverflow / totalOverFlow);\n return {\n min: min,\n max: max\n };\n}\n\nfunction niceScaleExtent(scale, model) {\n var extentInfo = getScaleExtent(scale, model);\n var extent = extentInfo.extent;\n var splitNumber = model.get('splitNumber');\n\n if (scale.type === 'log') {\n scale.base = model.get('logBase');\n }\n\n var scaleType = scale.type;\n scale.setExtent(extent[0], extent[1]);\n scale.niceExtent({\n splitNumber: splitNumber,\n fixMin: extentInfo.fixMin,\n fixMax: extentInfo.fixMax,\n minInterval: scaleType === 'interval' || scaleType === 'time' ? model.get('minInterval') : null,\n maxInterval: scaleType === 'interval' || scaleType === 'time' ? model.get('maxInterval') : null\n }); // If some one specified the min, max. And the default calculated interval\n // is not good enough. He can specify the interval. It is often appeared\n // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard\n // to be 60.\n // FIXME\n\n var interval = model.get('interval');\n\n if (interval != null) {\n scale.setInterval && scale.setInterval(interval);\n }\n}\n/**\n * @param {module:echarts/model/Model} model\n * @param {string} [axisType] Default retrieve from model.type\n * @return {module:echarts/scale/*}\n */\n\n\nfunction createScaleByModel(model, axisType) {\n axisType = axisType || model.get('type');\n\n if (axisType) {\n switch (axisType) {\n // Buildin scale\n case 'category':\n return new OrdinalScale(model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(), [Infinity, -Infinity]);\n\n case 'value':\n return new IntervalScale();\n // Extended scale, like time and log\n\n default:\n return (Scale.getClass(axisType) || IntervalScale).create(model);\n }\n }\n}\n/**\n * Check if the axis corss 0\n */\n\n\nfunction ifAxisCrossZero(axis) {\n var dataExtent = axis.scale.getExtent();\n var min = dataExtent[0];\n var max = dataExtent[1];\n return !(min > 0 && max > 0 || min < 0 && max < 0);\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @return {Function} Label formatter function.\n * param: {number} tickValue,\n * param: {number} idx, the index in all ticks.\n * If category axis, this param is not requied.\n * return: {string} label string.\n */\n\n\nfunction makeLabelFormatter(axis) {\n var labelFormatter = axis.getLabelModel().get('formatter');\n var categoryTickStart = axis.type === 'category' ? axis.scale.getExtent()[0] : null;\n\n if (typeof labelFormatter === 'string') {\n labelFormatter = function (tpl) {\n return function (val) {\n // For category axis, get raw value; for numeric axis,\n // get foramtted label like '1,333,444'.\n val = axis.scale.getLabel(val);\n return tpl.replace('{value}', val != null ? val : '');\n };\n }(labelFormatter); // Consider empty array\n\n\n return labelFormatter;\n } else if (typeof labelFormatter === 'function') {\n return function (tickValue, idx) {\n // The original intention of `idx` is \"the index of the tick in all ticks\".\n // But the previous implementation of category axis do not consider the\n // `axisLabel.interval`, which cause that, for example, the `interval` is\n // `1`, then the ticks \"name5\", \"name7\", \"name9\" are displayed, where the\n // corresponding `idx` are `0`, `2`, `4`, but not `0`, `1`, `2`. So we keep\n // the definition here for back compatibility.\n if (categoryTickStart != null) {\n idx = tickValue - categoryTickStart;\n }\n\n return labelFormatter(getAxisRawValue(axis, tickValue), idx);\n };\n } else {\n return function (tick) {\n return axis.scale.getLabel(tick);\n };\n }\n}\n\nfunction getAxisRawValue(axis, value) {\n // In category axis with data zoom, tick is not the original\n // index of axis.data. So tick should not be exposed to user\n // in category axis.\n return axis.type === 'category' ? axis.scale.getLabel(value) : value;\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @return {module:zrender/core/BoundingRect} Be null/undefined if no labels.\n */\n\n\nfunction estimateLabelUnionRect(axis) {\n var axisModel = axis.model;\n var scale = axis.scale;\n\n if (!axisModel.get('axisLabel.show') || scale.isBlank()) {\n return;\n }\n\n var isCategory = axis.type === 'category';\n var realNumberScaleTicks;\n var tickCount;\n var categoryScaleExtent = scale.getExtent(); // Optimize for large category data, avoid call `getTicks()`.\n\n if (isCategory) {\n tickCount = scale.count();\n } else {\n realNumberScaleTicks = scale.getTicks();\n tickCount = realNumberScaleTicks.length;\n }\n\n var axisLabelModel = axis.getLabelModel();\n var labelFormatter = makeLabelFormatter(axis);\n var rect;\n var step = 1; // Simple optimization for large amount of labels\n\n if (tickCount > 40) {\n step = Math.ceil(tickCount / 40);\n }\n\n for (var i = 0; i < tickCount; i += step) {\n var tickValue = realNumberScaleTicks ? realNumberScaleTicks[i] : categoryScaleExtent[0] + i;\n var label = labelFormatter(tickValue);\n var unrotatedSingleRect = axisLabelModel.getTextRect(label);\n var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);\n rect ? rect.union(singleRect) : rect = singleRect;\n }\n\n return rect;\n}\n\nfunction rotateTextRect(textRect, rotate) {\n var rotateRadians = rotate * Math.PI / 180;\n var boundingBox = textRect.plain();\n var beforeWidth = boundingBox.width;\n var beforeHeight = boundingBox.height;\n var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians)) + Math.abs(beforeHeight * Math.sin(rotateRadians));\n var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians)) + Math.abs(beforeHeight * Math.cos(rotateRadians));\n var rotatedRect = new BoundingRect(boundingBox.x, boundingBox.y, afterWidth, afterHeight);\n return rotatedRect;\n}\n/**\n * @param {module:echarts/src/model/Model} model axisLabelModel or axisTickModel\n * @return {number|String} Can be null|'auto'|number|function\n */\n\n\nfunction getOptionCategoryInterval(model) {\n var interval = model.get('interval');\n return interval == null ? 'auto' : interval;\n}\n/**\n * Set `categoryInterval` as 0 implicitly indicates that\n * show all labels reguardless of overlap.\n * @param {Object} axis axisModel.axis\n * @return {boolean}\n */\n\n\nfunction shouldShowAllLabels(axis) {\n return axis.type === 'category' && getOptionCategoryInterval(axis.getLabelModel()) === 0;\n}\n\nexports.getScaleExtent = getScaleExtent;\nexports.niceScaleExtent = niceScaleExtent;\nexports.createScaleByModel = createScaleByModel;\nexports.ifAxisCrossZero = ifAxisCrossZero;\nexports.makeLabelFormatter = makeLabelFormatter;\nexports.getAxisRawValue = getAxisRawValue;\nexports.estimateLabelUnionRect = estimateLabelUnionRect;\nexports.getOptionCategoryInterval = getOptionCategoryInterval;\nexports.shouldShowAllLabels = shouldShowAllLabels;","\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*/\n// import * as axisHelper from './axisHelper';\nvar _default = {\n /**\n * @param {boolean} origin\n * @return {number|string} min value or 'dataMin' or null/undefined (means auto) or NaN\n */\n getMin: function (origin) {\n var option = this.option;\n var min = !origin && option.rangeStart != null ? option.rangeStart : option.min;\n\n if (this.axis && min != null && min !== 'dataMin' && typeof min !== 'function' && !zrUtil.eqNaN(min)) {\n min = this.axis.scale.parse(min);\n }\n\n return min;\n },\n\n /**\n * @param {boolean} origin\n * @return {number|string} max value or 'dataMax' or null/undefined (means auto) or NaN\n */\n getMax: function (origin) {\n var option = this.option;\n var max = !origin && option.rangeEnd != null ? option.rangeEnd : option.max;\n\n if (this.axis && max != null && max !== 'dataMax' && typeof max !== 'function' && !zrUtil.eqNaN(max)) {\n max = this.axis.scale.parse(max);\n }\n\n return max;\n },\n\n /**\n * @return {boolean}\n */\n getNeedCrossZero: function () {\n var option = this.option;\n return option.rangeStart != null || option.rangeEnd != null ? false : !option.scale;\n },\n\n /**\n * Should be implemented by each axis model if necessary.\n * @return {module:echarts/model/Component} coordinate system model\n */\n getCoordSysModel: zrUtil.noop,\n\n /**\n * @param {number} rangeStart Can only be finite number or null/undefined or NaN.\n * @param {number} rangeEnd Can only be finite number or null/undefined or NaN.\n */\n setRange: function (rangeStart, rangeEnd) {\n this.option.rangeStart = rangeStart;\n this.option.rangeEnd = rangeEnd;\n },\n\n /**\n * Reset range\n */\n resetRange: function () {\n // rangeStart and rangeEnd is readonly.\n this.option.rangeStart = this.option.rangeEnd = null;\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 axisDefault = require(\"./axisDefault\");\n\nvar ComponentModel = require(\"../model/Component\");\n\nvar _layout = require(\"../util/layout\");\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\n\nvar OrdinalMeta = require(\"../data/OrdinalMeta\");\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// FIXME axisType is fixed ?\nvar AXIS_TYPES = ['value', 'category', 'time', 'log'];\n/**\n * Generate sub axis model class\n * @param {string} axisName 'x' 'y' 'radius' 'angle' 'parallel'\n * @param {module:echarts/model/Component} BaseAxisModelClass\n * @param {Function} axisTypeDefaulter\n * @param {Object} [extraDefaultOption]\n */\n\nfunction _default(axisName, BaseAxisModelClass, axisTypeDefaulter, extraDefaultOption) {\n zrUtil.each(AXIS_TYPES, function (axisType) {\n BaseAxisModelClass.extend({\n /**\n * @readOnly\n */\n type: axisName + 'Axis.' + axisType,\n mergeDefaultAndTheme: function (option, ecModel) {\n var layoutMode = this.layoutMode;\n var inputPositionParams = layoutMode ? getLayoutParams(option) : {};\n var themeModel = ecModel.getTheme();\n zrUtil.merge(option, themeModel.get(axisType + 'Axis'));\n zrUtil.merge(option, this.getDefaultOption());\n option.type = axisTypeDefaulter(axisName, option);\n\n if (layoutMode) {\n mergeLayoutParam(option, inputPositionParams, layoutMode);\n }\n },\n\n /**\n * @override\n */\n optionUpdated: function () {\n var thisOption = this.option;\n\n if (thisOption.type === 'category') {\n this.__ordinalMeta = OrdinalMeta.createByAxisModel(this);\n }\n },\n\n /**\n * Should not be called before all of 'getInitailData' finished.\n * Because categories are collected during initializing data.\n */\n getCategories: function (rawData) {\n var option = this.option; // FIXME\n // warning if called before all of 'getInitailData' finished.\n\n if (option.type === 'category') {\n if (rawData) {\n return option.data;\n }\n\n return this.__ordinalMeta.categories;\n }\n },\n getOrdinalMeta: function () {\n return this.__ordinalMeta;\n },\n defaultOption: zrUtil.mergeAll([{}, axisDefault[axisType + 'Axis'], extraDefaultOption], true)\n });\n });\n ComponentModel.registerSubTypeDefaulter(axisName + 'Axis', zrUtil.curry(axisTypeDefaulter, axisName));\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 textContain = require(\"zrender/lib/contain/text\");\n\nvar _model = require(\"../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar _axisHelper = require(\"./axisHelper\");\n\nvar makeLabelFormatter = _axisHelper.makeLabelFormatter;\nvar getOptionCategoryInterval = _axisHelper.getOptionCategoryInterval;\nvar shouldShowAllLabels = _axisHelper.shouldShowAllLabels;\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 inner = makeInner();\n/**\n * @param {module:echats/coord/Axis} axis\n * @return {Object} {\n * labels: [{\n * formattedLabel: string,\n * rawLabel: string,\n * tickValue: number\n * }, ...],\n * labelCategoryInterval: number\n * }\n */\n\nfunction createAxisLabels(axis) {\n // Only ordinal scale support tick interval\n return axis.type === 'category' ? makeCategoryLabels(axis) : makeRealNumberLabels(axis);\n}\n/**\n * @param {module:echats/coord/Axis} axis\n * @param {module:echarts/model/Model} tickModel For example, can be axisTick, splitLine, splitArea.\n * @return {Object} {\n * ticks: Array.\n * tickCategoryInterval: number\n * }\n */\n\n\nfunction createAxisTicks(axis, tickModel) {\n // Only ordinal scale support tick interval\n return axis.type === 'category' ? makeCategoryTicks(axis, tickModel) : {\n ticks: axis.scale.getTicks()\n };\n}\n\nfunction makeCategoryLabels(axis) {\n var labelModel = axis.getLabelModel();\n var result = makeCategoryLabelsActually(axis, labelModel);\n return !labelModel.get('show') || axis.scale.isBlank() ? {\n labels: [],\n labelCategoryInterval: result.labelCategoryInterval\n } : result;\n}\n\nfunction makeCategoryLabelsActually(axis, labelModel) {\n var labelsCache = getListCache(axis, 'labels');\n var optionLabelInterval = getOptionCategoryInterval(labelModel);\n var result = listCacheGet(labelsCache, optionLabelInterval);\n\n if (result) {\n return result;\n }\n\n var labels;\n var numericLabelInterval;\n\n if (zrUtil.isFunction(optionLabelInterval)) {\n labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval);\n } else {\n numericLabelInterval = optionLabelInterval === 'auto' ? makeAutoCategoryInterval(axis) : optionLabelInterval;\n labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval);\n } // Cache to avoid calling interval function repeatly.\n\n\n return listCacheSet(labelsCache, optionLabelInterval, {\n labels: labels,\n labelCategoryInterval: numericLabelInterval\n });\n}\n\nfunction makeCategoryTicks(axis, tickModel) {\n var ticksCache = getListCache(axis, 'ticks');\n var optionTickInterval = getOptionCategoryInterval(tickModel);\n var result = listCacheGet(ticksCache, optionTickInterval);\n\n if (result) {\n return result;\n }\n\n var ticks;\n var tickCategoryInterval; // Optimize for the case that large category data and no label displayed,\n // we should not return all ticks.\n\n if (!tickModel.get('show') || axis.scale.isBlank()) {\n ticks = [];\n }\n\n if (zrUtil.isFunction(optionTickInterval)) {\n ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true);\n } // Always use label interval by default despite label show. Consider this\n // scenario, Use multiple grid with the xAxis sync, and only one xAxis shows\n // labels. `splitLine` and `axisTick` should be consistent in this case.\n else if (optionTickInterval === 'auto') {\n var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel());\n tickCategoryInterval = labelsResult.labelCategoryInterval;\n ticks = zrUtil.map(labelsResult.labels, function (labelItem) {\n return labelItem.tickValue;\n });\n } else {\n tickCategoryInterval = optionTickInterval;\n ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true);\n } // Cache to avoid calling interval function repeatly.\n\n\n return listCacheSet(ticksCache, optionTickInterval, {\n ticks: ticks,\n tickCategoryInterval: tickCategoryInterval\n });\n}\n\nfunction makeRealNumberLabels(axis) {\n var ticks = axis.scale.getTicks();\n var labelFormatter = makeLabelFormatter(axis);\n return {\n labels: zrUtil.map(ticks, function (tickValue, idx) {\n return {\n formattedLabel: labelFormatter(tickValue, idx),\n rawLabel: axis.scale.getLabel(tickValue),\n tickValue: tickValue\n };\n })\n };\n} // Large category data calculation is performence sensitive, and ticks and label\n// probably be fetched by multiple times. So we cache the result.\n// axis is created each time during a ec process, so we do not need to clear cache.\n\n\nfunction getListCache(axis, prop) {\n // Because key can be funciton, and cache size always be small, we use array cache.\n return inner(axis)[prop] || (inner(axis)[prop] = []);\n}\n\nfunction listCacheGet(cache, key) {\n for (var i = 0; i < cache.length; i++) {\n if (cache[i].key === key) {\n return cache[i].value;\n }\n }\n}\n\nfunction listCacheSet(cache, key, value) {\n cache.push({\n key: key,\n value: value\n });\n return value;\n}\n\nfunction makeAutoCategoryInterval(axis) {\n var result = inner(axis).autoInterval;\n return result != null ? result : inner(axis).autoInterval = axis.calculateCategoryInterval();\n}\n/**\n * Calculate interval for category axis ticks and labels.\n * To get precise result, at least one of `getRotate` and `isHorizontal`\n * should be implemented in axis.\n */\n\n\nfunction calculateCategoryInterval(axis) {\n var params = fetchAutoCategoryIntervalCalculationParams(axis);\n var labelFormatter = makeLabelFormatter(axis);\n var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI;\n var ordinalScale = axis.scale;\n var ordinalExtent = ordinalScale.getExtent(); // Providing this method is for optimization:\n // avoid generating a long array by `getTicks`\n // in large category data case.\n\n var tickCount = ordinalScale.count();\n\n if (ordinalExtent[1] - ordinalExtent[0] < 1) {\n return 0;\n }\n\n var step = 1; // Simple optimization. Empirical value: tick count should less than 40.\n\n if (tickCount > 40) {\n step = Math.max(1, Math.floor(tickCount / 40));\n }\n\n var tickValue = ordinalExtent[0];\n var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\n var unitW = Math.abs(unitSpan * Math.cos(rotation));\n var unitH = Math.abs(unitSpan * Math.sin(rotation));\n var maxW = 0;\n var maxH = 0; // Caution: Performance sensitive for large category data.\n // Consider dataZoom, we should make appropriate step to avoid O(n) loop.\n\n for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n var width = 0;\n var height = 0; // Not precise, do not consider align and vertical align\n // and each distance from axis line yet.\n\n var rect = textContain.getBoundingRect(labelFormatter(tickValue), params.font, 'center', 'top'); // Magic number\n\n width = rect.width * 1.3;\n height = rect.height * 1.3; // Min size, void long loop.\n\n maxW = Math.max(maxW, width, 7);\n maxH = Math.max(maxH, height, 7);\n }\n\n var dw = maxW / unitW;\n var dh = maxH / unitH; // 0/0 is NaN, 1/0 is Infinity.\n\n isNaN(dw) && (dw = Infinity);\n isNaN(dh) && (dh = Infinity);\n var interval = Math.max(0, Math.floor(Math.min(dw, dh)));\n var cache = inner(axis.model);\n var axisExtent = axis.getExtent();\n var lastAutoInterval = cache.lastAutoInterval;\n var lastTickCount = cache.lastTickCount; // Use cache to keep interval stable while moving zoom window,\n // otherwise the calculated interval might jitter when the zoom\n // window size is close to the interval-changing size.\n // For example, if all of the axis labels are `a, b, c, d, e, f, g`.\n // The jitter will cause that sometimes the displayed labels are\n // `a, d, g` (interval: 2) sometimes `a, c, e`(interval: 1).\n\n if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 // Always choose the bigger one, otherwise the critical\n // point is not the same when zooming in or zooming out.\n && lastAutoInterval > interval // If the axis change is caused by chart resize, the cache should not\n // be used. Otherwise some hiden labels might not be shown again.\n && cache.axisExtend0 === axisExtent[0] && cache.axisExtend1 === axisExtent[1]) {\n interval = lastAutoInterval;\n } // Only update cache if cache not used, otherwise the\n // changing of interval is too insensitive.\n else {\n cache.lastTickCount = tickCount;\n cache.lastAutoInterval = interval;\n cache.axisExtend0 = axisExtent[0];\n cache.axisExtend1 = axisExtent[1];\n }\n\n return interval;\n}\n\nfunction fetchAutoCategoryIntervalCalculationParams(axis) {\n var labelModel = axis.getLabelModel();\n return {\n axisRotate: axis.getRotate ? axis.getRotate() : axis.isHorizontal && !axis.isHorizontal() ? 90 : 0,\n labelRotate: labelModel.get('rotate') || 0,\n font: labelModel.getFont()\n };\n}\n\nfunction makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) {\n var labelFormatter = makeLabelFormatter(axis);\n var ordinalScale = axis.scale;\n var ordinalExtent = ordinalScale.getExtent();\n var labelModel = axis.getLabelModel();\n var result = []; // TODO: axisType: ordinalTime, pick the tick from each month/day/year/...\n\n var step = Math.max((categoryInterval || 0) + 1, 1);\n var startTick = ordinalExtent[0];\n var tickCount = ordinalScale.count(); // Calculate start tick based on zero if possible to keep label consistent\n // while zooming and moving while interval > 0. Otherwise the selection\n // of displayable ticks and symbols probably keep changing.\n // 3 is empirical value.\n\n if (startTick !== 0 && step > 1 && tickCount / step > 2) {\n startTick = Math.round(Math.ceil(startTick / step) * step);\n } // (1) Only add min max label here but leave overlap checking\n // to render stage, which also ensure the returned list\n // suitable for splitLine and splitArea rendering.\n // (2) Scales except category always contain min max label so\n // do not need to perform this process.\n\n\n var showAllLabel = shouldShowAllLabels(axis);\n var includeMinLabel = labelModel.get('showMinLabel') || showAllLabel;\n var includeMaxLabel = labelModel.get('showMaxLabel') || showAllLabel;\n\n if (includeMinLabel && startTick !== ordinalExtent[0]) {\n addItem(ordinalExtent[0]);\n } // Optimize: avoid generating large array by `ordinalScale.getTicks()`.\n\n\n var tickValue = startTick;\n\n for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n addItem(tickValue);\n }\n\n if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) {\n addItem(ordinalExtent[1]);\n }\n\n function addItem(tVal) {\n result.push(onlyTick ? tVal : {\n formattedLabel: labelFormatter(tVal),\n rawLabel: ordinalScale.getLabel(tVal),\n tickValue: tVal\n });\n }\n\n return result;\n} // When interval is function, the result `false` means ignore the tick.\n// It is time consuming for large category data.\n\n\nfunction makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) {\n var ordinalScale = axis.scale;\n var labelFormatter = makeLabelFormatter(axis);\n var result = [];\n zrUtil.each(ordinalScale.getTicks(), function (tickValue) {\n var rawLabel = ordinalScale.getLabel(tickValue);\n\n if (categoryInterval(tickValue, rawLabel)) {\n result.push(onlyTick ? tickValue : {\n formattedLabel: labelFormatter(tickValue),\n rawLabel: rawLabel,\n tickValue: tickValue\n });\n }\n });\n return result;\n}\n\nexports.createAxisLabels = createAxisLabels;\nexports.createAxisTicks = createAxisTicks;\nexports.calculateCategoryInterval = calculateCategoryInterval;","\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 layout = require(\"../../util/layout\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\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// (24*60*60*1000)\nvar PROXIMATE_ONE_DAY = 86400000;\n/**\n * Calendar\n *\n * @constructor\n *\n * @param {Object} calendarModel calendarModel\n * @param {Object} ecModel ecModel\n * @param {Object} api api\n */\n\nfunction Calendar(calendarModel, ecModel, api) {\n this._model = calendarModel;\n}\n\nCalendar.prototype = {\n constructor: Calendar,\n type: 'calendar',\n dimensions: ['time', 'value'],\n // Required in createListFromData\n getDimensionsInfo: function () {\n return [{\n name: 'time',\n type: 'time'\n }, 'value'];\n },\n getRangeInfo: function () {\n return this._rangeInfo;\n },\n getModel: function () {\n return this._model;\n },\n getRect: function () {\n return this._rect;\n },\n getCellWidth: function () {\n return this._sw;\n },\n getCellHeight: function () {\n return this._sh;\n },\n getOrient: function () {\n return this._orient;\n },\n\n /**\n * getFirstDayOfWeek\n *\n * @example\n * 0 : start at Sunday\n * 1 : start at Monday\n *\n * @return {number}\n */\n getFirstDayOfWeek: function () {\n return this._firstDayOfWeek;\n },\n\n /**\n * get date info\n *\n * @param {string|number} date date\n * @return {Object}\n * {\n * y: string, local full year, eg., '1940',\n * m: string, local month, from '01' ot '12',\n * d: string, local date, from '01' to '31' (if exists),\n * day: It is not date.getDay(). It is the location of the cell in a week, from 0 to 6,\n * time: timestamp,\n * formatedDate: string, yyyy-MM-dd,\n * date: original date object.\n * }\n */\n getDateInfo: function (date) {\n date = numberUtil.parseDate(date);\n var y = date.getFullYear();\n var m = date.getMonth() + 1;\n m = m < 10 ? '0' + m : m;\n var d = date.getDate();\n d = d < 10 ? '0' + d : d;\n var day = date.getDay();\n day = Math.abs((day + 7 - this.getFirstDayOfWeek()) % 7);\n return {\n y: y,\n m: m,\n d: d,\n day: day,\n time: date.getTime(),\n formatedDate: y + '-' + m + '-' + d,\n date: date\n };\n },\n getNextNDay: function (date, n) {\n n = n || 0;\n\n if (n === 0) {\n return this.getDateInfo(date);\n }\n\n date = new Date(this.getDateInfo(date).time);\n date.setDate(date.getDate() + n);\n return this.getDateInfo(date);\n },\n update: function (ecModel, api) {\n this._firstDayOfWeek = +this._model.getModel('dayLabel').get('firstDay');\n this._orient = this._model.get('orient');\n this._lineWidth = this._model.getModel('itemStyle').getItemStyle().lineWidth || 0;\n this._rangeInfo = this._getRangeInfo(this._initRangeOption());\n var weeks = this._rangeInfo.weeks || 1;\n var whNames = ['width', 'height'];\n\n var cellSize = this._model.get('cellSize').slice();\n\n var layoutParams = this._model.getBoxLayoutParams();\n\n var cellNumbers = this._orient === 'horizontal' ? [weeks, 7] : [7, weeks];\n zrUtil.each([0, 1], function (idx) {\n if (cellSizeSpecified(cellSize, idx)) {\n layoutParams[whNames[idx]] = cellSize[idx] * cellNumbers[idx];\n }\n });\n var whGlobal = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var calendarRect = this._rect = layout.getLayoutRect(layoutParams, whGlobal);\n zrUtil.each([0, 1], function (idx) {\n if (!cellSizeSpecified(cellSize, idx)) {\n cellSize[idx] = calendarRect[whNames[idx]] / cellNumbers[idx];\n }\n });\n\n function cellSizeSpecified(cellSize, idx) {\n return cellSize[idx] != null && cellSize[idx] !== 'auto';\n }\n\n this._sw = cellSize[0];\n this._sh = cellSize[1];\n },\n\n /**\n * Convert a time data(time, value) item to (x, y) point.\n *\n * @override\n * @param {Array|number} data data\n * @param {boolean} [clamp=true] out of range\n * @return {Array} point\n */\n dataToPoint: function (data, clamp) {\n zrUtil.isArray(data) && (data = data[0]);\n clamp == null && (clamp = true);\n var dayInfo = this.getDateInfo(data);\n var range = this._rangeInfo;\n var date = dayInfo.formatedDate; // if not in range return [NaN, NaN]\n\n if (clamp && !(dayInfo.time >= range.start.time && dayInfo.time < range.end.time + PROXIMATE_ONE_DAY)) {\n return [NaN, NaN];\n }\n\n var week = dayInfo.day;\n\n var nthWeek = this._getRangeInfo([range.start.time, date]).nthWeek;\n\n if (this._orient === 'vertical') {\n return [this._rect.x + week * this._sw + this._sw / 2, this._rect.y + nthWeek * this._sh + this._sh / 2];\n }\n\n return [this._rect.x + nthWeek * this._sw + this._sw / 2, this._rect.y + week * this._sh + this._sh / 2];\n },\n\n /**\n * Convert a (x, y) point to time data\n *\n * @override\n * @param {string} point point\n * @return {string} data\n */\n pointToData: function (point) {\n var date = this.pointToDate(point);\n return date && date.time;\n },\n\n /**\n * Convert a time date item to (x, y) four point.\n *\n * @param {Array} data date[0] is date\n * @param {boolean} [clamp=true] out of range\n * @return {Object} point\n */\n dataToRect: function (data, clamp) {\n var point = this.dataToPoint(data, clamp);\n return {\n contentShape: {\n x: point[0] - (this._sw - this._lineWidth) / 2,\n y: point[1] - (this._sh - this._lineWidth) / 2,\n width: this._sw - this._lineWidth,\n height: this._sh - this._lineWidth\n },\n center: point,\n tl: [point[0] - this._sw / 2, point[1] - this._sh / 2],\n tr: [point[0] + this._sw / 2, point[1] - this._sh / 2],\n br: [point[0] + this._sw / 2, point[1] + this._sh / 2],\n bl: [point[0] - this._sw / 2, point[1] + this._sh / 2]\n };\n },\n\n /**\n * Convert a (x, y) point to time date\n *\n * @param {Array} point point\n * @return {Object} date\n */\n pointToDate: function (point) {\n var nthX = Math.floor((point[0] - this._rect.x) / this._sw) + 1;\n var nthY = Math.floor((point[1] - this._rect.y) / this._sh) + 1;\n var range = this._rangeInfo.range;\n\n if (this._orient === 'vertical') {\n return this._getDateByWeeksAndDay(nthY, nthX - 1, range);\n }\n\n return this._getDateByWeeksAndDay(nthX, nthY - 1, range);\n },\n\n /**\n * @inheritDoc\n */\n convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),\n\n /**\n * @inheritDoc\n */\n convertFromPixel: zrUtil.curry(doConvert, 'pointToData'),\n\n /**\n * initRange\n *\n * @private\n * @return {Array} [start, end]\n */\n _initRangeOption: function () {\n var range = this._model.get('range');\n\n var rg = range;\n\n if (zrUtil.isArray(rg) && rg.length === 1) {\n rg = rg[0];\n }\n\n if (/^\\d{4}$/.test(rg)) {\n range = [rg + '-01-01', rg + '-12-31'];\n }\n\n if (/^\\d{4}[\\/|-]\\d{1,2}$/.test(rg)) {\n var start = this.getDateInfo(rg);\n var firstDay = start.date;\n firstDay.setMonth(firstDay.getMonth() + 1);\n var end = this.getNextNDay(firstDay, -1);\n range = [start.formatedDate, end.formatedDate];\n }\n\n if (/^\\d{4}[\\/|-]\\d{1,2}[\\/|-]\\d{1,2}$/.test(rg)) {\n range = [rg, rg];\n }\n\n var tmp = this._getRangeInfo(range);\n\n if (tmp.start.time > tmp.end.time) {\n range.reverse();\n }\n\n return range;\n },\n\n /**\n * range info\n *\n * @private\n * @param {Array} range range ['2017-01-01', '2017-07-08']\n * If range[0] > range[1], they will not be reversed.\n * @return {Object} obj\n */\n _getRangeInfo: function (range) {\n range = [this.getDateInfo(range[0]), this.getDateInfo(range[1])];\n var reversed;\n\n if (range[0].time > range[1].time) {\n reversed = true;\n range.reverse();\n }\n\n var allDay = Math.floor(range[1].time / PROXIMATE_ONE_DAY) - Math.floor(range[0].time / PROXIMATE_ONE_DAY) + 1; // Consider case1 (#11677 #10430):\n // Set the system timezone as \"UK\", set the range to `['2016-07-01', '2016-12-31']`\n // Consider case2:\n // Firstly set system timezone as \"Time Zone: America/Toronto\",\n // ```\n // var first = new Date(1478412000000 - 3600 * 1000 * 2.5);\n // var second = new Date(1478412000000);\n // var allDays = Math.floor(second / ONE_DAY) - Math.floor(first / ONE_DAY) + 1;\n // ```\n // will get wrong result because of DST. So we should fix it.\n\n var date = new Date(range[0].time);\n var startDateNum = date.getDate();\n var endDateNum = range[1].date.getDate();\n date.setDate(startDateNum + allDay - 1); // The bias can not over a month, so just compare date.\n\n var dateNum = date.getDate();\n\n if (dateNum !== endDateNum) {\n var sign = date.getTime() - range[1].time > 0 ? 1 : -1;\n\n while ((dateNum = date.getDate()) !== endDateNum && (date.getTime() - range[1].time) * sign > 0) {\n allDay -= sign;\n date.setDate(dateNum - sign);\n }\n }\n\n var weeks = Math.floor((allDay + range[0].day + 6) / 7);\n var nthWeek = reversed ? -weeks + 1 : weeks - 1;\n reversed && range.reverse();\n return {\n range: [range[0].formatedDate, range[1].formatedDate],\n start: range[0],\n end: range[1],\n allDay: allDay,\n weeks: weeks,\n // From 0.\n nthWeek: nthWeek,\n fweek: range[0].day,\n lweek: range[1].day\n };\n },\n\n /**\n * get date by nthWeeks and week day in range\n *\n * @private\n * @param {number} nthWeek the week\n * @param {number} day the week day\n * @param {Array} range [d1, d2]\n * @return {Object}\n */\n _getDateByWeeksAndDay: function (nthWeek, day, range) {\n var rangeInfo = this._getRangeInfo(range);\n\n if (nthWeek > rangeInfo.weeks || nthWeek === 0 && day < rangeInfo.fweek || nthWeek === rangeInfo.weeks && day > rangeInfo.lweek) {\n return false;\n }\n\n var nthDay = (nthWeek - 1) * 7 - rangeInfo.fweek + day;\n var date = new Date(rangeInfo.start.time);\n date.setDate(rangeInfo.start.d + nthDay);\n return this.getDateInfo(date);\n }\n};\nCalendar.dimensions = Calendar.prototype.dimensions;\nCalendar.getDimensionsInfo = Calendar.prototype.getDimensionsInfo;\n\nCalendar.create = function (ecModel, api) {\n var calendarList = [];\n ecModel.eachComponent('calendar', function (calendarModel) {\n var calendar = new Calendar(calendarModel, ecModel, api);\n calendarList.push(calendar);\n calendarModel.coordinateSystem = calendar;\n });\n ecModel.eachSeries(function (calendarSeries) {\n if (calendarSeries.get('coordinateSystem') === 'calendar') {\n // Inject coordinate system\n calendarSeries.coordinateSystem = calendarList[calendarSeries.get('calendarIndex') || 0];\n }\n });\n return calendarList;\n};\n\nfunction doConvert(methodName, ecModel, finder, value) {\n var calendarModel = finder.calendarModel;\n var seriesModel = finder.seriesModel;\n var coordSys = calendarModel ? calendarModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem : null;\n return coordSys === this ? coordSys[methodName](value) : null;\n}\n\nCoordinateSystem.register('calendar', Calendar);\nvar _default = Calendar;\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 ComponentModel = require(\"../../model/Component\");\n\nvar _layout = require(\"../../util/layout\");\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar sizeCalculable = _layout.sizeCalculable;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\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 CalendarModel = ComponentModel.extend({\n type: 'calendar',\n\n /**\n * @type {module:echarts/coord/calendar/Calendar}\n */\n coordinateSystem: null,\n defaultOption: {\n zlevel: 0,\n z: 2,\n left: 80,\n top: 60,\n cellSize: 20,\n // horizontal vertical\n orient: 'horizontal',\n // month separate line style\n splitLine: {\n show: true,\n lineStyle: {\n color: '#000',\n width: 1,\n type: 'solid'\n }\n },\n // rect style temporarily unused emphasis\n itemStyle: {\n color: '#fff',\n borderWidth: 1,\n borderColor: '#ccc'\n },\n // week text style\n dayLabel: {\n show: true,\n // a week first day\n firstDay: 0,\n // start end\n position: 'start',\n margin: '50%',\n // 50% of cellSize\n nameMap: 'en',\n color: '#000'\n },\n // month text style\n monthLabel: {\n show: true,\n // start end\n position: 'start',\n margin: 5,\n // center or left\n align: 'center',\n // cn en []\n nameMap: 'en',\n formatter: null,\n color: '#000'\n },\n // year text style\n yearLabel: {\n show: true,\n // top bottom left right\n position: null,\n margin: 30,\n formatter: null,\n color: '#ccc',\n fontFamily: 'sans-serif',\n fontWeight: 'bolder',\n fontSize: 20\n }\n },\n\n /**\n * @override\n */\n init: function (option, parentModel, ecModel, extraOpt) {\n var inputPositionParams = getLayoutParams(option);\n CalendarModel.superApply(this, 'init', arguments);\n mergeAndNormalizeLayoutParams(option, inputPositionParams);\n },\n\n /**\n * @override\n */\n mergeOption: function (option, extraOpt) {\n CalendarModel.superApply(this, 'mergeOption', arguments);\n mergeAndNormalizeLayoutParams(this.option, option);\n }\n});\n\nfunction mergeAndNormalizeLayoutParams(target, raw) {\n // Normalize cellSize\n var cellSize = target.cellSize;\n\n if (!zrUtil.isArray(cellSize)) {\n cellSize = target.cellSize = [cellSize, cellSize];\n } else if (cellSize.length === 1) {\n cellSize[1] = cellSize[0];\n }\n\n var ignoreSize = zrUtil.map([0, 1], function (hvIdx) {\n // If user have set `width` or both `left` and `right`, cellSize\n // will be automatically set to 'auto', otherwise the default\n // setting of cellSize will make `width` setting not work.\n if (sizeCalculable(raw, hvIdx)) {\n cellSize[hvIdx] = 'auto';\n }\n\n return cellSize[hvIdx] != null && cellSize[hvIdx] !== 'auto';\n });\n mergeLayoutParam(target, raw, {\n type: 'box',\n ignoreSize: ignoreSize\n });\n}\n\nvar _default = CalendarModel;\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\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(coordSys) {\n var rect = coordSys.getRect();\n var rangeInfo = coordSys.getRangeInfo();\n return {\n coordSys: {\n type: 'calendar',\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height,\n cellWidth: coordSys.getCellWidth(),\n cellHeight: coordSys.getCellHeight(),\n rangeInfo: {\n start: rangeInfo.start,\n end: rangeInfo.end,\n weeks: rangeInfo.weeks,\n dayCount: rangeInfo.allDay\n }\n },\n api: {\n coord: function (data, clamp) {\n return coordSys.dataToPoint(data, clamp);\n }\n }\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar Axis = require(\"../Axis\");\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 * Extend axis 2d\n * @constructor module:echarts/coord/cartesian/Axis2D\n * @extends {module:echarts/coord/cartesian/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.} coordExtent\n * @param {string} axisType\n * @param {string} position\n */\nvar Axis2D = function (dim, scale, coordExtent, axisType, position) {\n Axis.call(this, dim, scale, coordExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = axisType || 'value';\n /**\n * Axis position\n * - 'top'\n * - 'bottom'\n * - 'left'\n * - 'right'\n */\n\n this.position = position || 'bottom';\n};\n\nAxis2D.prototype = {\n constructor: Axis2D,\n\n /**\n * Index of axis, can be used as key\n */\n index: 0,\n\n /**\n * Implemented in .\n * @return {Array.}\n * If not on zero of other axis, return null/undefined.\n * If no axes, return an empty array.\n */\n getAxesOnZeroOf: null,\n\n /**\n * Axis model\n * @param {module:echarts/coord/cartesian/AxisModel}\n */\n model: null,\n isHorizontal: function () {\n var position = this.position;\n return position === 'top' || position === 'bottom';\n },\n\n /**\n * Each item cooresponds to this.getExtent(), which\n * means globalExtent[0] may greater than globalExtent[1],\n * unless `asc` is input.\n *\n * @param {boolean} [asc]\n * @return {Array.}\n */\n getGlobalExtent: function (asc) {\n var ret = this.getExtent();\n ret[0] = this.toGlobalCoord(ret[0]);\n ret[1] = this.toGlobalCoord(ret[1]);\n asc && ret[0] > ret[1] && ret.reverse();\n return ret;\n },\n getOtherAxis: function () {\n this.grid.getOtherAxis();\n },\n\n /**\n * @override\n */\n pointToData: function (point, clamp) {\n return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp);\n },\n\n /**\n * Transform global coord to local coord,\n * i.e. var localCoord = axis.toLocalCoord(80);\n * designate by module:echarts/coord/cartesian/Grid.\n * @type {Function}\n */\n toLocalCoord: null,\n\n /**\n * Transform global coord to local coord,\n * i.e. var globalCoord = axis.toLocalCoord(40);\n * designate by module:echarts/coord/cartesian/Grid.\n * @type {Function}\n */\n toGlobalCoord: null\n};\nzrUtil.inherits(Axis2D, Axis);\nvar _default = Axis2D;\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 ComponentModel = require(\"../../model/Component\");\n\nvar axisModelCreator = require(\"../axisModelCreator\");\n\nvar axisModelCommonMixin = require(\"../axisModelCommonMixin\");\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 AxisModel = ComponentModel.extend({\n type: 'cartesian2dAxis',\n\n /**\n * @type {module:echarts/coord/cartesian/Axis2D}\n */\n axis: null,\n\n /**\n * @override\n */\n init: function () {\n AxisModel.superApply(this, 'init', arguments);\n this.resetRange();\n },\n\n /**\n * @override\n */\n mergeOption: function () {\n AxisModel.superApply(this, 'mergeOption', arguments);\n this.resetRange();\n },\n\n /**\n * @override\n */\n restoreData: function () {\n AxisModel.superApply(this, 'restoreData', arguments);\n this.resetRange();\n },\n\n /**\n * @override\n * @return {module:echarts/model/Component}\n */\n getCoordSysModel: function () {\n return this.ecModel.queryComponents({\n mainType: 'grid',\n index: this.option.gridIndex,\n id: this.option.gridId\n })[0];\n }\n});\n\nfunction getAxisType(axisDim, option) {\n // Default axis with data is category axis\n return option.type || (option.data ? 'category' : 'value');\n}\n\nzrUtil.merge(AxisModel.prototype, axisModelCommonMixin);\nvar extraOption = {\n // gridIndex: 0,\n // gridId: '',\n // Offset is for multiple axis on the same position\n offset: 0\n};\naxisModelCreator('x', AxisModel, getAxisType, extraOption);\naxisModelCreator('y', AxisModel, getAxisType, extraOption);\nvar _default = AxisModel;\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\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 * Cartesian coordinate system\n * @module echarts/coord/Cartesian\n *\n */\nfunction dimAxisMapper(dim) {\n return this._axes[dim];\n}\n/**\n * @alias module:echarts/coord/Cartesian\n * @constructor\n */\n\n\nvar Cartesian = function (name) {\n this._axes = {};\n this._dimList = [];\n /**\n * @type {string}\n */\n\n this.name = name || '';\n};\n\nCartesian.prototype = {\n constructor: Cartesian,\n type: 'cartesian',\n\n /**\n * Get axis\n * @param {number|string} dim\n * @return {module:echarts/coord/Cartesian~Axis}\n */\n getAxis: function (dim) {\n return this._axes[dim];\n },\n\n /**\n * Get axes list\n * @return {Array.}\n */\n getAxes: function () {\n return zrUtil.map(this._dimList, dimAxisMapper, this);\n },\n\n /**\n * Get axes list by given scale type\n */\n getAxesByScale: function (scaleType) {\n scaleType = scaleType.toLowerCase();\n return zrUtil.filter(this.getAxes(), function (axis) {\n return axis.scale.type === scaleType;\n });\n },\n\n /**\n * Add axis\n * @param {module:echarts/coord/Cartesian.Axis}\n */\n addAxis: function (axis) {\n var dim = axis.dim;\n this._axes[dim] = axis;\n\n this._dimList.push(dim);\n },\n\n /**\n * Convert data to coord in nd space\n * @param {Array.|Object.} val\n * @return {Array.|Object.}\n */\n dataToCoord: function (val) {\n return this._dataCoordConvert(val, 'dataToCoord');\n },\n\n /**\n * Convert coord in nd space to data\n * @param {Array.|Object.} val\n * @return {Array.|Object.}\n */\n coordToData: function (val) {\n return this._dataCoordConvert(val, 'coordToData');\n },\n _dataCoordConvert: function (input, method) {\n var dimList = this._dimList;\n var output = input instanceof Array ? [] : {};\n\n for (var i = 0; i < dimList.length; i++) {\n var dim = dimList[i];\n var axis = this._axes[dim];\n output[dim] = axis[method](input[dim]);\n }\n\n return output;\n }\n};\nvar _default = Cartesian;\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 BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar Cartesian = require(\"./Cartesian\");\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 Cartesian2D(name) {\n Cartesian.call(this, name);\n}\n\nCartesian2D.prototype = {\n constructor: Cartesian2D,\n type: 'cartesian2d',\n\n /**\n * @type {Array.}\n * @readOnly\n */\n dimensions: ['x', 'y'],\n\n /**\n * Base axis will be used on stacking.\n *\n * @return {module:echarts/coord/cartesian/Axis2D}\n */\n getBaseAxis: function () {\n return this.getAxesByScale('ordinal')[0] || this.getAxesByScale('time')[0] || this.getAxis('x');\n },\n\n /**\n * If contain point\n * @param {Array.} point\n * @return {boolean}\n */\n containPoint: function (point) {\n var axisX = this.getAxis('x');\n var axisY = this.getAxis('y');\n return axisX.contain(axisX.toLocalCoord(point[0])) && axisY.contain(axisY.toLocalCoord(point[1]));\n },\n\n /**\n * If contain data\n * @param {Array.} data\n * @return {boolean}\n */\n containData: function (data) {\n return this.getAxis('x').containData(data[0]) && this.getAxis('y').containData(data[1]);\n },\n\n /**\n * @param {Array.} data\n * @param {Array.} out\n * @return {Array.}\n */\n dataToPoint: function (data, reserved, out) {\n var xAxis = this.getAxis('x');\n var yAxis = this.getAxis('y');\n out = out || [];\n out[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(data[0]));\n out[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(data[1]));\n return out;\n },\n\n /**\n * @param {Array.} data\n * @param {Array.} out\n * @return {Array.}\n */\n clampData: function (data, out) {\n var xScale = this.getAxis('x').scale;\n var yScale = this.getAxis('y').scale;\n var xAxisExtent = xScale.getExtent();\n var yAxisExtent = yScale.getExtent();\n var x = xScale.parse(data[0]);\n var y = yScale.parse(data[1]);\n out = out || [];\n out[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x), Math.max(xAxisExtent[0], xAxisExtent[1]));\n out[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y), Math.max(yAxisExtent[0], yAxisExtent[1]));\n return out;\n },\n\n /**\n * @param {Array.} point\n * @param {Array.} out\n * @return {Array.}\n */\n pointToData: function (point, out) {\n var xAxis = this.getAxis('x');\n var yAxis = this.getAxis('y');\n out = out || [];\n out[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]));\n out[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]));\n return out;\n },\n\n /**\n * Get other axis\n * @param {module:echarts/coord/cartesian/Axis2D} axis\n */\n getOtherAxis: function (axis) {\n return this.getAxis(axis.dim === 'x' ? 'y' : 'x');\n },\n\n /**\n * Get rect area of cartesian.\n * Area will have a contain function to determine if a point is in the coordinate system.\n * @return {BoundingRect}\n */\n getArea: function () {\n var xExtent = this.getAxis('x').getGlobalExtent();\n var yExtent = this.getAxis('y').getGlobalExtent();\n var x = Math.min(xExtent[0], xExtent[1]);\n var y = Math.min(yExtent[0], yExtent[1]);\n var width = Math.max(xExtent[0], xExtent[1]) - x;\n var height = Math.max(yExtent[0], yExtent[1]) - y;\n var rect = new BoundingRect(x, y, width, height);\n return rect;\n }\n};\nzrUtil.inherits(Cartesian2D, Cartesian);\nvar _default = Cartesian2D;\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isObject = _util.isObject;\nvar each = _util.each;\nvar map = _util.map;\nvar indexOf = _util.indexOf;\nvar retrieve = _util.retrieve;\n\nvar _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar _axisHelper = require(\"../../coord/axisHelper\");\n\nvar createScaleByModel = _axisHelper.createScaleByModel;\nvar ifAxisCrossZero = _axisHelper.ifAxisCrossZero;\nvar niceScaleExtent = _axisHelper.niceScaleExtent;\nvar estimateLabelUnionRect = _axisHelper.estimateLabelUnionRect;\n\nvar Cartesian2D = require(\"./Cartesian2D\");\n\nvar Axis2D = require(\"./Axis2D\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\nrequire(\"./GridModel\");\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 * Grid is a region which contains at most 4 cartesian systems\n *\n * TODO Default cartesian\n */\n// Depends on GridModel, AxisModel, which performs preprocess.\n\n/**\n * Check if the axis is used in the specified grid\n * @inner\n */\nfunction isAxisUsedInTheGrid(axisModel, gridModel, ecModel) {\n return axisModel.getCoordSysModel() === gridModel;\n}\n\nfunction Grid(gridModel, ecModel, api) {\n /**\n * @type {Object.}\n * @private\n */\n this._coordsMap = {};\n /**\n * @type {Array.}\n * @private\n */\n\n this._coordsList = [];\n /**\n * @type {Object.>}\n * @private\n */\n\n this._axesMap = {};\n /**\n * @type {Array.}\n * @private\n */\n\n this._axesList = [];\n\n this._initCartesian(gridModel, ecModel, api);\n\n this.model = gridModel;\n}\n\nvar gridProto = Grid.prototype;\ngridProto.type = 'grid';\ngridProto.axisPointerEnabled = true;\n\ngridProto.getRect = function () {\n return this._rect;\n};\n\ngridProto.update = function (ecModel, api) {\n var axesMap = this._axesMap;\n\n this._updateScale(ecModel, this.model);\n\n each(axesMap.x, function (xAxis) {\n niceScaleExtent(xAxis.scale, xAxis.model);\n });\n each(axesMap.y, function (yAxis) {\n niceScaleExtent(yAxis.scale, yAxis.model);\n }); // Key: axisDim_axisIndex, value: boolean, whether onZero target.\n\n var onZeroRecords = {};\n each(axesMap.x, function (xAxis) {\n fixAxisOnZero(axesMap, 'y', xAxis, onZeroRecords);\n });\n each(axesMap.y, function (yAxis) {\n fixAxisOnZero(axesMap, 'x', yAxis, onZeroRecords);\n }); // Resize again if containLabel is enabled\n // FIXME It may cause getting wrong grid size in data processing stage\n\n this.resize(this.model, api);\n};\n\nfunction fixAxisOnZero(axesMap, otherAxisDim, axis, onZeroRecords) {\n axis.getAxesOnZeroOf = function () {\n // TODO: onZero of multiple axes.\n return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : [];\n }; // onZero can not be enabled in these two situations:\n // 1. When any other axis is a category axis.\n // 2. When no axis is cross 0 point.\n\n\n var otherAxes = axesMap[otherAxisDim];\n var otherAxisOnZeroOf;\n var axisModel = axis.model;\n var onZero = axisModel.get('axisLine.onZero');\n var onZeroAxisIndex = axisModel.get('axisLine.onZeroAxisIndex');\n\n if (!onZero) {\n return;\n } // If target axis is specified.\n\n\n if (onZeroAxisIndex != null) {\n if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) {\n otherAxisOnZeroOf = otherAxes[onZeroAxisIndex];\n }\n } else {\n // Find the first available other axis.\n for (var idx in otherAxes) {\n if (otherAxes.hasOwnProperty(idx) && canOnZeroToAxis(otherAxes[idx]) // Consider that two Y axes on one value axis,\n // if both onZero, the two Y axes overlap.\n && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) {\n otherAxisOnZeroOf = otherAxes[idx];\n break;\n }\n }\n }\n\n if (otherAxisOnZeroOf) {\n onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true;\n }\n\n function getOnZeroRecordKey(axis) {\n return axis.dim + '_' + axis.index;\n }\n}\n\nfunction canOnZeroToAxis(axis) {\n return axis && axis.type !== 'category' && axis.type !== 'time' && ifAxisCrossZero(axis);\n}\n/**\n * Resize the grid\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\ngridProto.resize = function (gridModel, api, ignoreContainLabel) {\n var gridRect = getLayoutRect(gridModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n this._rect = gridRect;\n var axesList = this._axesList;\n adjustAxes(); // Minus label size\n\n if (!ignoreContainLabel && gridModel.get('containLabel')) {\n each(axesList, function (axis) {\n if (!axis.model.get('axisLabel.inside')) {\n var labelUnionRect = estimateLabelUnionRect(axis);\n\n if (labelUnionRect) {\n var dim = axis.isHorizontal() ? 'height' : 'width';\n var margin = axis.model.get('axisLabel.margin');\n gridRect[dim] -= labelUnionRect[dim] + margin;\n\n if (axis.position === 'top') {\n gridRect.y += labelUnionRect.height + margin;\n } else if (axis.position === 'left') {\n gridRect.x += labelUnionRect.width + margin;\n }\n }\n }\n });\n adjustAxes();\n }\n\n function adjustAxes() {\n each(axesList, function (axis) {\n var isHorizontal = axis.isHorizontal();\n var extent = isHorizontal ? [0, gridRect.width] : [0, gridRect.height];\n var idx = axis.inverse ? 1 : 0;\n axis.setExtent(extent[idx], extent[1 - idx]);\n updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y);\n });\n }\n};\n/**\n * @param {string} axisType\n * @param {number} [axisIndex]\n */\n\n\ngridProto.getAxis = function (axisType, axisIndex) {\n var axesMapOnDim = this._axesMap[axisType];\n\n if (axesMapOnDim != null) {\n if (axisIndex == null) {\n // Find first axis\n for (var name in axesMapOnDim) {\n if (axesMapOnDim.hasOwnProperty(name)) {\n return axesMapOnDim[name];\n }\n }\n }\n\n return axesMapOnDim[axisIndex];\n }\n};\n/**\n * @return {Array.}\n */\n\n\ngridProto.getAxes = function () {\n return this._axesList.slice();\n};\n/**\n * Usage:\n * grid.getCartesian(xAxisIndex, yAxisIndex);\n * grid.getCartesian(xAxisIndex);\n * grid.getCartesian(null, yAxisIndex);\n * grid.getCartesian({xAxisIndex: ..., yAxisIndex: ...});\n *\n * @param {number|Object} [xAxisIndex]\n * @param {number} [yAxisIndex]\n */\n\n\ngridProto.getCartesian = function (xAxisIndex, yAxisIndex) {\n if (xAxisIndex != null && yAxisIndex != null) {\n var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\n return this._coordsMap[key];\n }\n\n if (isObject(xAxisIndex)) {\n yAxisIndex = xAxisIndex.yAxisIndex;\n xAxisIndex = xAxisIndex.xAxisIndex;\n } // When only xAxisIndex or yAxisIndex given, find its first cartesian.\n\n\n for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {\n if (coordList[i].getAxis('x').index === xAxisIndex || coordList[i].getAxis('y').index === yAxisIndex) {\n return coordList[i];\n }\n }\n};\n\ngridProto.getCartesians = function () {\n return this._coordsList.slice();\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.convertToPixel = function (ecModel, finder, value) {\n var target = this._findConvertTarget(ecModel, finder);\n\n return target.cartesian ? target.cartesian.dataToPoint(value) : target.axis ? target.axis.toGlobalCoord(target.axis.dataToCoord(value)) : null;\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.convertFromPixel = function (ecModel, finder, value) {\n var target = this._findConvertTarget(ecModel, finder);\n\n return target.cartesian ? target.cartesian.pointToData(value) : target.axis ? target.axis.coordToData(target.axis.toLocalCoord(value)) : null;\n};\n/**\n * @inner\n */\n\n\ngridProto._findConvertTarget = function (ecModel, finder) {\n var seriesModel = finder.seriesModel;\n var xAxisModel = finder.xAxisModel || seriesModel && seriesModel.getReferringComponents('xAxis')[0];\n var yAxisModel = finder.yAxisModel || seriesModel && seriesModel.getReferringComponents('yAxis')[0];\n var gridModel = finder.gridModel;\n var coordsList = this._coordsList;\n var cartesian;\n var axis;\n\n if (seriesModel) {\n cartesian = seriesModel.coordinateSystem;\n indexOf(coordsList, cartesian) < 0 && (cartesian = null);\n } else if (xAxisModel && yAxisModel) {\n cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n } else if (xAxisModel) {\n axis = this.getAxis('x', xAxisModel.componentIndex);\n } else if (yAxisModel) {\n axis = this.getAxis('y', yAxisModel.componentIndex);\n } // Lowest priority.\n else if (gridModel) {\n var grid = gridModel.coordinateSystem;\n\n if (grid === this) {\n cartesian = this._coordsList[0];\n }\n }\n\n return {\n cartesian: cartesian,\n axis: axis\n };\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.containPoint = function (point) {\n var coord = this._coordsList[0];\n\n if (coord) {\n return coord.containPoint(point);\n }\n};\n/**\n * Initialize cartesian coordinate systems\n * @private\n */\n\n\ngridProto._initCartesian = function (gridModel, ecModel, api) {\n var axisPositionUsed = {\n left: false,\n right: false,\n top: false,\n bottom: false\n };\n var axesMap = {\n x: {},\n y: {}\n };\n var axesCount = {\n x: 0,\n y: 0\n }; /// Create axis\n\n ecModel.eachComponent('xAxis', createAxisCreator('x'), this);\n ecModel.eachComponent('yAxis', createAxisCreator('y'), this);\n\n if (!axesCount.x || !axesCount.y) {\n // Roll back when there no either x or y axis\n this._axesMap = {};\n this._axesList = [];\n return;\n }\n\n this._axesMap = axesMap; /// Create cartesian2d\n\n each(axesMap.x, function (xAxis, xAxisIndex) {\n each(axesMap.y, function (yAxis, yAxisIndex) {\n var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\n var cartesian = new Cartesian2D(key);\n cartesian.grid = this;\n cartesian.model = gridModel;\n this._coordsMap[key] = cartesian;\n\n this._coordsList.push(cartesian);\n\n cartesian.addAxis(xAxis);\n cartesian.addAxis(yAxis);\n }, this);\n }, this);\n\n function createAxisCreator(axisType) {\n return function (axisModel, idx) {\n if (!isAxisUsedInTheGrid(axisModel, gridModel, ecModel)) {\n return;\n }\n\n var axisPosition = axisModel.get('position');\n\n if (axisType === 'x') {\n // Fix position\n if (axisPosition !== 'top' && axisPosition !== 'bottom') {\n // Default bottom of X\n axisPosition = axisPositionUsed.bottom ? 'top' : 'bottom';\n }\n } else {\n // Fix position\n if (axisPosition !== 'left' && axisPosition !== 'right') {\n // Default left of Y\n axisPosition = axisPositionUsed.left ? 'right' : 'left';\n }\n }\n\n axisPositionUsed[axisPosition] = true;\n var axis = new Axis2D(axisType, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisPosition);\n var isCategory = axis.type === 'category';\n axis.onBand = isCategory && axisModel.get('boundaryGap');\n axis.inverse = axisModel.get('inverse'); // Inject axis into axisModel\n\n axisModel.axis = axis; // Inject axisModel into axis\n\n axis.model = axisModel; // Inject grid info axis\n\n axis.grid = this; // Index of axis, can be used as key\n\n axis.index = idx;\n\n this._axesList.push(axis);\n\n axesMap[axisType][idx] = axis;\n axesCount[axisType]++;\n };\n }\n};\n/**\n * Update cartesian properties from series\n * @param {module:echarts/model/Option} option\n * @private\n */\n\n\ngridProto._updateScale = function (ecModel, gridModel) {\n // Reset scale\n each(this._axesList, function (axis) {\n axis.scale.setExtent(Infinity, -Infinity);\n });\n ecModel.eachSeries(function (seriesModel) {\n if (isCartesian2D(seriesModel)) {\n var axesModels = findAxesModels(seriesModel, ecModel);\n var xAxisModel = axesModels[0];\n var yAxisModel = axesModels[1];\n\n if (!isAxisUsedInTheGrid(xAxisModel, gridModel, ecModel) || !isAxisUsedInTheGrid(yAxisModel, gridModel, ecModel)) {\n return;\n }\n\n var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n var data = seriesModel.getData();\n var xAxis = cartesian.getAxis('x');\n var yAxis = cartesian.getAxis('y');\n\n if (data.type === 'list') {\n unionExtent(data, xAxis, seriesModel);\n unionExtent(data, yAxis, seriesModel);\n }\n }\n }, this);\n\n function unionExtent(data, axis, seriesModel) {\n each(data.mapDimension(axis.dim, true), function (dim) {\n axis.scale.unionExtentFromData( // For example, the extent of the orginal dimension\n // is [0.1, 0.5], the extent of the `stackResultDimension`\n // is [7, 9], the final extent should not include [0.1, 0.5].\n data, getStackedDimension(data, dim));\n });\n }\n};\n/**\n * @param {string} [dim] 'x' or 'y' or 'auto' or null/undefined\n * @return {Object} {baseAxes: [], otherAxes: []}\n */\n\n\ngridProto.getTooltipAxes = function (dim) {\n var baseAxes = [];\n var otherAxes = [];\n each(this.getCartesians(), function (cartesian) {\n var baseAxis = dim != null && dim !== 'auto' ? cartesian.getAxis(dim) : cartesian.getBaseAxis();\n var otherAxis = cartesian.getOtherAxis(baseAxis);\n indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);\n indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);\n });\n return {\n baseAxes: baseAxes,\n otherAxes: otherAxes\n };\n};\n/**\n * @inner\n */\n\n\nfunction updateAxisTransform(axis, coordBase) {\n var axisExtent = axis.getExtent();\n var axisExtentSum = axisExtent[0] + axisExtent[1]; // Fast transform\n\n axis.toGlobalCoord = axis.dim === 'x' ? function (coord) {\n return coord + coordBase;\n } : function (coord) {\n return axisExtentSum - coord + coordBase;\n };\n axis.toLocalCoord = axis.dim === 'x' ? function (coord) {\n return coord - coordBase;\n } : function (coord) {\n return axisExtentSum - coord + coordBase;\n };\n}\n\nvar axesTypes = ['xAxis', 'yAxis'];\n/**\n * @inner\n */\n\nfunction findAxesModels(seriesModel, ecModel) {\n return map(axesTypes, function (axisType) {\n var axisModel = seriesModel.getReferringComponents(axisType)[0];\n return axisModel;\n });\n}\n/**\n * @inner\n */\n\n\nfunction isCartesian2D(seriesModel) {\n return seriesModel.get('coordinateSystem') === 'cartesian2d';\n}\n\nGrid.create = function (ecModel, api) {\n var grids = [];\n ecModel.eachComponent('grid', function (gridModel, idx) {\n var grid = new Grid(gridModel, ecModel, api);\n grid.name = 'grid_' + idx; // dataSampling requires axis extent, so resize\n // should be performed in create stage.\n\n grid.resize(gridModel, api, true);\n gridModel.coordinateSystem = grid;\n grids.push(grid);\n }); // Inject the coordinateSystems into seriesModel\n\n ecModel.eachSeries(function (seriesModel) {\n if (!isCartesian2D(seriesModel)) {\n return;\n }\n\n var axesModels = findAxesModels(seriesModel, ecModel);\n var xAxisModel = axesModels[0];\n var yAxisModel = axesModels[1];\n var gridModel = xAxisModel.getCoordSysModel();\n var grid = gridModel.coordinateSystem;\n seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n });\n return grids;\n}; // For deciding which dimensions to use when creating list data\n\n\nGrid.dimensions = Grid.prototype.dimensions = Cartesian2D.prototype.dimensions;\nCoordinateSystem.register('cartesian2d', Grid);\nvar _default = Grid;\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\nrequire(\"./AxisModel\");\n\nvar ComponentModel = require(\"../../model/Component\");\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// Grid 是在有直角坐标系的时候必须要存在的\n// 所以这里也要被 Cartesian2D 依赖\nvar _default = ComponentModel.extend({\n type: 'grid',\n dependencies: ['xAxis', 'yAxis'],\n layoutMode: 'box',\n\n /**\n * @type {module:echarts/coord/cartesian/Grid}\n */\n coordinateSystem: null,\n defaultOption: {\n show: false,\n zlevel: 0,\n z: 0,\n left: '10%',\n top: 60,\n right: '10%',\n bottom: 60,\n // If grid size contain label\n containLabel: false,\n // width: {totalWidth} - left - right,\n // height: {totalHeight} - top - bottom,\n backgroundColor: 'rgba(0,0,0,0)',\n borderWidth: 1,\n borderColor: '#ccc'\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 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 * Can only be called after coordinate system creation stage.\n * (Can be called before coordinate system update stage).\n *\n * @param {Object} opt {labelInside}\n * @return {Object} {\n * position, rotation, labelDirection, labelOffset,\n * tickDirection, labelRotate, z2\n * }\n */\nfunction layout(gridModel, axisModel, opt) {\n opt = opt || {};\n var grid = gridModel.coordinateSystem;\n var axis = axisModel.axis;\n var layout = {};\n var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0];\n var rawAxisPosition = axis.position;\n var axisPosition = otherAxisOnZeroOf ? 'onZero' : rawAxisPosition;\n var axisDim = axis.dim;\n var rect = grid.getRect();\n var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\n var idx = {\n left: 0,\n right: 1,\n top: 0,\n bottom: 1,\n onZero: 2\n };\n var axisOffset = axisModel.get('offset') || 0;\n var posBound = axisDim === 'x' ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset] : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];\n\n if (otherAxisOnZeroOf) {\n var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0));\n posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);\n } // Axis position\n\n\n layout.position = [axisDim === 'y' ? posBound[idx[axisPosition]] : rectBound[0], axisDim === 'x' ? posBound[idx[axisPosition]] : rectBound[3]]; // Axis rotation\n\n layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1); // Tick and label direction, x y is axisDim\n\n var dirMap = {\n top: -1,\n bottom: 1,\n left: -1,\n right: 1\n };\n layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];\n layout.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0;\n\n if (axisModel.get('axisTick.inside')) {\n layout.tickDirection = -layout.tickDirection;\n }\n\n if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {\n layout.labelDirection = -layout.labelDirection;\n } // Special label rotation\n\n\n var labelRotate = axisModel.get('axisLabel.rotate');\n layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate; // Over splitLine and splitArea\n\n layout.z2 = 1;\n return layout;\n}\n\nexports.layout = layout;","\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 dataToCoordSize(dataSize, dataItem) {\n // dataItem is necessary in log axis.\n dataItem = dataItem || [0, 0];\n return zrUtil.map(['x', 'y'], function (dim, dimIdx) {\n var axis = this.getAxis(dim);\n var val = dataItem[dimIdx];\n var halfSize = dataSize[dimIdx] / 2;\n return axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\n }, this);\n}\n\nfunction _default(coordSys) {\n var rect = coordSys.grid.getRect();\n return {\n coordSys: {\n // The name exposed to user is always 'cartesian2d' but not 'grid'.\n type: 'cartesian2d',\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n },\n api: {\n coord: function (data) {\n // do not provide \"out\" param\n return coordSys.dataToPoint(data);\n },\n size: zrUtil.bind(dataToCoordSize, coordSys)\n }\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar View = require(\"../View\");\n\nvar geoSourceManager = require(\"./geoSourceManager\");\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 * [Geo description]\n * For backward compatibility, the orginal interface:\n * `name, map, geoJson, specialAreas, nameMap` is kept.\n *\n * @param {string|Object} name\n * @param {string} map Map type\n * Specify the positioned areas by left, top, width, height\n * @param {Object.} [nameMap]\n * Specify name alias\n * @param {boolean} [invertLongitute=true]\n */\nfunction Geo(name, map, nameMap, invertLongitute) {\n View.call(this, name);\n /**\n * Map type\n * @type {string}\n */\n\n this.map = map;\n var source = geoSourceManager.load(map, nameMap);\n this._nameCoordMap = source.nameCoordMap;\n this._regionsMap = source.regionsMap;\n this._invertLongitute = invertLongitute == null ? true : invertLongitute;\n /**\n * @readOnly\n */\n\n this.regions = source.regions;\n /**\n * @type {module:zrender/src/core/BoundingRect}\n */\n\n this._rect = source.boundingRect;\n}\n\nGeo.prototype = {\n constructor: Geo,\n type: 'geo',\n\n /**\n * @param {Array.}\n * @readOnly\n */\n dimensions: ['lng', 'lat'],\n\n /**\n * If contain given lng,lat coord\n * @param {Array.}\n * @readOnly\n */\n containCoord: function (coord) {\n var regions = this.regions;\n\n for (var i = 0; i < regions.length; i++) {\n if (regions[i].contain(coord)) {\n return true;\n }\n }\n\n return false;\n },\n\n /**\n * @override\n */\n transformTo: function (x, y, width, height) {\n var rect = this.getBoundingRect();\n var invertLongitute = this._invertLongitute;\n rect = rect.clone();\n\n if (invertLongitute) {\n // Longitute is inverted\n rect.y = -rect.y - rect.height;\n }\n\n var rawTransformable = this._rawTransformable;\n rawTransformable.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));\n rawTransformable.decomposeTransform();\n\n if (invertLongitute) {\n var scale = rawTransformable.scale;\n scale[1] = -scale[1];\n }\n\n rawTransformable.updateTransform();\n\n this._updateTransform();\n },\n\n /**\n * @param {string} name\n * @return {module:echarts/coord/geo/Region}\n */\n getRegion: function (name) {\n return this._regionsMap.get(name);\n },\n getRegionByCoord: function (coord) {\n var regions = this.regions;\n\n for (var i = 0; i < regions.length; i++) {\n if (regions[i].contain(coord)) {\n return regions[i];\n }\n }\n },\n\n /**\n * Add geoCoord for indexing by name\n * @param {string} name\n * @param {Array.} geoCoord\n */\n addGeoCoord: function (name, geoCoord) {\n this._nameCoordMap.set(name, geoCoord);\n },\n\n /**\n * Get geoCoord by name\n * @param {string} name\n * @return {Array.}\n */\n getGeoCoord: function (name) {\n return this._nameCoordMap.get(name);\n },\n\n /**\n * @override\n */\n getBoundingRect: function () {\n return this._rect;\n },\n\n /**\n * @param {string|Array.} data\n * @param {boolean} noRoam\n * @param {Array.} [out]\n * @return {Array.}\n */\n dataToPoint: function (data, noRoam, out) {\n if (typeof data === 'string') {\n // Map area name to geoCoord\n data = this.getGeoCoord(data);\n }\n\n if (data) {\n return View.prototype.dataToPoint.call(this, data, noRoam, out);\n }\n },\n\n /**\n * @override\n */\n convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),\n\n /**\n * @override\n */\n convertFromPixel: zrUtil.curry(doConvert, 'pointToData')\n};\nzrUtil.mixin(Geo, View);\n\nfunction doConvert(methodName, ecModel, finder, value) {\n var geoModel = finder.geoModel;\n var seriesModel = finder.seriesModel;\n var coordSys = geoModel ? geoModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem // For map.\n || (seriesModel.getReferringComponents('geo')[0] || {}).coordinateSystem : null;\n return coordSys === this ? coordSys[methodName](value) : null;\n}\n\nvar _default = Geo;\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 modelUtil = require(\"../../util/model\");\n\nvar ComponentModel = require(\"../../model/Component\");\n\nvar Model = require(\"../../model/Model\");\n\nvar selectableMixin = require(\"../../component/helper/selectableMixin\");\n\nvar geoCreator = require(\"./geoCreator\");\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 GeoModel = ComponentModel.extend({\n type: 'geo',\n\n /**\n * @type {module:echarts/coord/geo/Geo}\n */\n coordinateSystem: null,\n layoutMode: 'box',\n init: function (option) {\n ComponentModel.prototype.init.apply(this, arguments); // Default label emphasis `show`\n\n modelUtil.defaultEmphasis(option, 'label', ['show']);\n },\n optionUpdated: function () {\n var option = this.option;\n var self = this;\n option.regions = geoCreator.getFilledRegions(option.regions, option.map, option.nameMap);\n this._optionModelMap = zrUtil.reduce(option.regions || [], function (optionModelMap, regionOpt) {\n if (regionOpt.name) {\n optionModelMap.set(regionOpt.name, new Model(regionOpt, self));\n }\n\n return optionModelMap;\n }, zrUtil.createHashMap());\n this.updateSelectedMap(option.regions);\n },\n defaultOption: {\n zlevel: 0,\n z: 0,\n show: true,\n left: 'center',\n top: 'center',\n // width:,\n // height:,\n // right\n // bottom\n // Aspect is width / height. Inited to be geoJson bbox aspect\n // This parameter is used for scale this aspect\n // If svg used, aspectScale is 1 by default.\n // aspectScale: 0.75,\n aspectScale: null,\n ///// Layout with center and size\n // If you wan't to put map in a fixed size box with right aspect ratio\n // This two properties may more conveninet\n // layoutCenter: [50%, 50%]\n // layoutSize: 100\n silent: false,\n // Map type\n map: '',\n // Define left-top, right-bottom coords to control view\n // For example, [ [180, 90], [-180, -90] ]\n boundingCoords: null,\n // Default on center of map\n center: null,\n zoom: 1,\n scaleLimit: null,\n // selectedMode: false\n label: {\n show: false,\n color: '#000'\n },\n itemStyle: {\n // color: 各异,\n borderWidth: 0.5,\n borderColor: '#444',\n color: '#eee'\n },\n emphasis: {\n label: {\n show: true,\n color: 'rgb(100,0,0)'\n },\n itemStyle: {\n color: 'rgba(255,215,0,0.8)'\n }\n },\n regions: []\n },\n\n /**\n * Get model of region\n * @param {string} name\n * @return {module:echarts/model/Model}\n */\n getRegionModel: function (name) {\n return this._optionModelMap.get(name) || new Model(null, this, this.ecModel);\n },\n\n /**\n * Format label\n * @param {string} name Region name\n * @param {string} [status='normal'] 'normal' or 'emphasis'\n * @return {string}\n */\n getFormattedLabel: function (name, status) {\n status = status || 'normal';\n var regionModel = this.getRegionModel(name);\n var formatter = regionModel.get((status === 'normal' ? '' : status + '.') + 'label.formatter');\n var params = {\n name: name\n };\n\n if (typeof formatter === 'function') {\n params.status = status;\n return formatter(params);\n } else if (typeof formatter === 'string') {\n return formatter.replace('{a}', name != null ? name : '');\n }\n },\n setZoom: function (zoom) {\n this.option.zoom = zoom;\n },\n setCenter: function (center) {\n this.option.center = center;\n }\n});\nzrUtil.mixin(GeoModel, selectableMixin);\nvar _default = GeoModel;\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 BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar bbox = require(\"zrender/lib/core/bbox\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar polygonContain = require(\"zrender/lib/contain/polygon\");\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/coord/geo/Region\n */\n\n/**\n * @param {string|Region} name\n * @param {Array} geometries\n * @param {Array.} cp\n */\nfunction Region(name, geometries, cp) {\n /**\n * @type {string}\n * @readOnly\n */\n this.name = name;\n /**\n * @type {Array.}\n * @readOnly\n */\n\n this.geometries = geometries;\n\n if (!cp) {\n var rect = this.getBoundingRect();\n cp = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n } else {\n cp = [cp[0], cp[1]];\n }\n /**\n * @type {Array.}\n */\n\n\n this.center = cp;\n}\n\nRegion.prototype = {\n constructor: Region,\n properties: null,\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getBoundingRect: function () {\n var rect = this._rect;\n\n if (rect) {\n return rect;\n }\n\n var MAX_NUMBER = Number.MAX_VALUE;\n var min = [MAX_NUMBER, MAX_NUMBER];\n var max = [-MAX_NUMBER, -MAX_NUMBER];\n var min2 = [];\n var max2 = [];\n var geometries = this.geometries;\n\n for (var i = 0; i < geometries.length; i++) {\n // Only support polygon\n if (geometries[i].type !== 'polygon') {\n continue;\n } // Doesn't consider hole\n\n\n var exterior = geometries[i].exterior;\n bbox.fromPoints(exterior, min2, max2);\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n } // No data\n\n\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n\n return this._rect = new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n },\n\n /**\n * @param {} coord\n * @return {boolean}\n */\n contain: function (coord) {\n var rect = this.getBoundingRect();\n var geometries = this.geometries;\n\n if (!rect.contain(coord[0], coord[1])) {\n return false;\n }\n\n loopGeo: for (var i = 0, len = geometries.length; i < len; i++) {\n // Only support polygon.\n if (geometries[i].type !== 'polygon') {\n continue;\n }\n\n var exterior = geometries[i].exterior;\n var interiors = geometries[i].interiors;\n\n if (polygonContain.contain(exterior, coord[0], coord[1])) {\n // Not in the region if point is in the hole.\n for (var k = 0; k < (interiors ? interiors.length : 0); k++) {\n if (polygonContain.contain(interiors[k])) {\n continue loopGeo;\n }\n }\n\n return true;\n }\n }\n\n return false;\n },\n transformTo: function (x, y, width, height) {\n var rect = this.getBoundingRect();\n var aspect = rect.width / rect.height;\n\n if (!width) {\n width = aspect * height;\n } else if (!height) {\n height = width / aspect;\n }\n\n var target = new BoundingRect(x, y, width, height);\n var transform = rect.calculateTransform(target);\n var geometries = this.geometries;\n\n for (var i = 0; i < geometries.length; i++) {\n // Only support polygon.\n if (geometries[i].type !== 'polygon') {\n continue;\n }\n\n var exterior = geometries[i].exterior;\n var interiors = geometries[i].interiors;\n\n for (var p = 0; p < exterior.length; p++) {\n vec2.applyTransform(exterior[p], exterior[p], transform);\n }\n\n for (var h = 0; h < (interiors ? interiors.length : 0); h++) {\n for (var p = 0; p < interiors[h].length; p++) {\n vec2.applyTransform(interiors[h][p], interiors[h][p], transform);\n }\n }\n }\n\n rect = this._rect;\n rect.copy(target); // Update center\n\n this.center = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n },\n cloneShallow: function (name) {\n name == null && (name = this.name);\n var newRegion = new Region(name, this.geometries, this.center);\n newRegion._rect = this._rect;\n newRegion.transformTo = null; // Simply avoid to be called.\n\n return newRegion;\n }\n};\nvar _default = Region;\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\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// Fix for 钓鱼岛\n// var Region = require('../Region');\n// var zrUtil = require('zrender/src/core/util');\n// var geoCoord = [126, 25];\nvar points = [[[123.45165252685547, 25.73527164402261], [123.49731445312499, 25.73527164402261], [123.49731445312499, 25.750734064600884], [123.45165252685547, 25.750734064600884], [123.45165252685547, 25.73527164402261]]];\n\nfunction _default(mapType, region) {\n if (mapType === 'china' && region.name === '台湾') {\n region.geometries.push({\n type: 'polygon',\n exterior: points[0]\n });\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\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 geoCoordMap = {\n 'Russia': [100, 60],\n 'United States': [-99, 38],\n 'United States of America': [-99, 38]\n};\n\nfunction _default(mapType, region) {\n if (mapType === 'world') {\n var geoCoord = geoCoordMap[region.name];\n\n if (geoCoord) {\n var cp = region.center;\n cp[0] = geoCoord[0];\n cp[1] = geoCoord[1];\n }\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar Region = require(\"../Region\");\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// Fix for 南海诸岛\nvar geoCoord = [126, 25];\nvar points = [[[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, 0.7], [52, 0.7], [56, 7.7], [59, 0.7], [64, 0.7], [64, 0], [5, 0], [0, 3.5]], [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]], [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]], [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]], [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]], [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]], [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]], [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]], [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]], [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]], [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]], [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4], [1, 92.4], [1, 3.5], [0, 3.5]]];\n\nfor (var i = 0; i < points.length; i++) {\n for (var k = 0; k < points[i].length; k++) {\n points[i][k][0] /= 10.5;\n points[i][k][1] /= -10.5 / 0.75;\n points[i][k][0] += geoCoord[0];\n points[i][k][1] += geoCoord[1];\n }\n}\n\nfunction _default(mapType, regions) {\n if (mapType === 'china') {\n regions.push(new Region('南海诸岛', zrUtil.map(points, function (exterior) {\n return {\n type: 'polygon',\n exterior: exterior\n };\n }), geoCoord));\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\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 coordsOffsetMap = {\n '南海诸岛': [32, 80],\n // 全国\n '广东': [0, -10],\n '香港': [10, 5],\n '澳门': [-10, 10],\n //'北京': [-10, 0],\n '天津': [5, 5]\n};\n\nfunction _default(mapType, region) {\n if (mapType === 'china') {\n var coordFix = coordsOffsetMap[region.name];\n\n if (coordFix) {\n var cp = region.center;\n cp[0] += coordFix[0] / 10.5;\n cp[1] += -coordFix[1] / (10.5 / 0.75);\n }\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Geo = require(\"./Geo\");\n\nvar layout = require(\"../../util/layout\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar geoSourceManager = require(\"./geoSourceManager\");\n\nvar mapDataStorage = require(\"./mapDataStorage\");\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 * Resize method bound to the geo\n * @param {module:echarts/coord/geo/GeoModel|module:echarts/chart/map/MapModel} geoModel\n * @param {module:echarts/ExtensionAPI} api\n */\nfunction resizeGeo(geoModel, api) {\n var boundingCoords = geoModel.get('boundingCoords');\n\n if (boundingCoords != null) {\n var leftTop = boundingCoords[0];\n var rightBottom = boundingCoords[1];\n\n if (isNaN(leftTop[0]) || isNaN(leftTop[1]) || isNaN(rightBottom[0]) || isNaN(rightBottom[1])) {} else {\n this.setBoundingRect(leftTop[0], leftTop[1], rightBottom[0] - leftTop[0], rightBottom[1] - leftTop[1]);\n }\n }\n\n var rect = this.getBoundingRect();\n var boxLayoutOption;\n var center = geoModel.get('layoutCenter');\n var size = geoModel.get('layoutSize');\n var viewWidth = api.getWidth();\n var viewHeight = api.getHeight();\n var aspect = rect.width / rect.height * this.aspectScale;\n var useCenterAndSize = false;\n\n if (center && size) {\n center = [numberUtil.parsePercent(center[0], viewWidth), numberUtil.parsePercent(center[1], viewHeight)];\n size = numberUtil.parsePercent(size, Math.min(viewWidth, viewHeight));\n\n if (!isNaN(center[0]) && !isNaN(center[1]) && !isNaN(size)) {\n useCenterAndSize = true;\n } else {}\n }\n\n var viewRect;\n\n if (useCenterAndSize) {\n var viewRect = {};\n\n if (aspect > 1) {\n // Width is same with size\n viewRect.width = size;\n viewRect.height = size / aspect;\n } else {\n viewRect.height = size;\n viewRect.width = size * aspect;\n }\n\n viewRect.y = center[1] - viewRect.height / 2;\n viewRect.x = center[0] - viewRect.width / 2;\n } else {\n // Use left/top/width/height\n boxLayoutOption = geoModel.getBoxLayoutParams(); // 0.75 rate\n\n boxLayoutOption.aspect = aspect;\n viewRect = layout.getLayoutRect(boxLayoutOption, {\n width: viewWidth,\n height: viewHeight\n });\n }\n\n this.setViewRect(viewRect.x, viewRect.y, viewRect.width, viewRect.height);\n this.setCenter(geoModel.get('center'));\n this.setZoom(geoModel.get('zoom'));\n}\n/**\n * @param {module:echarts/coord/Geo} geo\n * @param {module:echarts/model/Model} model\n * @inner\n */\n\n\nfunction setGeoCoords(geo, model) {\n zrUtil.each(model.get('geoCoord'), function (geoCoord, name) {\n geo.addGeoCoord(name, geoCoord);\n });\n}\n\nvar geoCreator = {\n // For deciding which dimensions to use when creating list data\n dimensions: Geo.prototype.dimensions,\n create: function (ecModel, api) {\n var geoList = []; // FIXME Create each time may be slow\n\n ecModel.eachComponent('geo', function (geoModel, idx) {\n var name = geoModel.get('map');\n var aspectScale = geoModel.get('aspectScale');\n var invertLongitute = true;\n var mapRecords = mapDataStorage.retrieveMap(name);\n\n if (mapRecords && mapRecords[0] && mapRecords[0].type === 'svg') {\n aspectScale == null && (aspectScale = 1);\n invertLongitute = false;\n } else {\n aspectScale == null && (aspectScale = 0.75);\n }\n\n var geo = new Geo(name + idx, name, geoModel.get('nameMap'), invertLongitute);\n geo.aspectScale = aspectScale;\n geo.zoomLimit = geoModel.get('scaleLimit');\n geoList.push(geo);\n setGeoCoords(geo, geoModel);\n geoModel.coordinateSystem = geo;\n geo.model = geoModel; // Inject resize method\n\n geo.resize = resizeGeo;\n geo.resize(geoModel, api);\n });\n ecModel.eachSeries(function (seriesModel) {\n var coordSys = seriesModel.get('coordinateSystem');\n\n if (coordSys === 'geo') {\n var geoIndex = seriesModel.get('geoIndex') || 0;\n seriesModel.coordinateSystem = geoList[geoIndex];\n }\n }); // If has map series\n\n var mapModelGroupBySeries = {};\n ecModel.eachSeriesByType('map', function (seriesModel) {\n if (!seriesModel.getHostGeoModel()) {\n var mapType = seriesModel.getMapType();\n mapModelGroupBySeries[mapType] = mapModelGroupBySeries[mapType] || [];\n mapModelGroupBySeries[mapType].push(seriesModel);\n }\n });\n zrUtil.each(mapModelGroupBySeries, function (mapSeries, mapType) {\n var nameMapList = zrUtil.map(mapSeries, function (singleMapSeries) {\n return singleMapSeries.get('nameMap');\n });\n var geo = new Geo(mapType, mapType, zrUtil.mergeAll(nameMapList));\n geo.zoomLimit = zrUtil.retrieve.apply(null, zrUtil.map(mapSeries, function (singleMapSeries) {\n return singleMapSeries.get('scaleLimit');\n }));\n geoList.push(geo); // Inject resize method\n\n geo.resize = resizeGeo;\n geo.aspectScale = mapSeries[0].get('aspectScale');\n geo.resize(mapSeries[0], api);\n zrUtil.each(mapSeries, function (singleMapSeries) {\n singleMapSeries.coordinateSystem = geo;\n setGeoCoords(geo, singleMapSeries);\n });\n });\n return geoList;\n },\n\n /**\n * Fill given regions array\n * @param {Array.} originRegionArr\n * @param {string} mapName\n * @param {Object} [nameMap]\n * @return {Array}\n */\n getFilledRegions: function (originRegionArr, mapName, nameMap) {\n // Not use the original\n var regionsArr = (originRegionArr || []).slice();\n var dataNameMap = zrUtil.createHashMap();\n\n for (var i = 0; i < regionsArr.length; i++) {\n dataNameMap.set(regionsArr[i].name, regionsArr[i]);\n }\n\n var source = geoSourceManager.load(mapName, nameMap);\n zrUtil.each(source.regions, function (region) {\n var name = region.name;\n !dataNameMap.get(name) && regionsArr.push({\n name: name\n });\n });\n return regionsArr;\n }\n};\necharts.registerCoordinateSystem('geo', geoCreator);\nvar _default = geoCreator;\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 _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\n\nvar parseGeoJson = require(\"./parseGeoJson\");\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar fixNanhai = require(\"./fix/nanhai\");\n\nvar fixTextCoord = require(\"./fix/textCoord\");\n\nvar fixGeoCoord = require(\"./fix/geoCoord\");\n\nvar fixDiaoyuIsland = require(\"./fix/diaoyuIsland\");\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// Built-in GEO fixer.\nvar inner = makeInner();\nvar _default = {\n /**\n * @param {string} mapName\n * @param {Object} mapRecord {specialAreas, geoJSON}\n * @param {string} nameProperty\n * @return {Object} {regions, boundingRect}\n */\n load: function (mapName, mapRecord, nameProperty) {\n var parsed = inner(mapRecord).parsed;\n\n if (parsed) {\n return parsed;\n }\n\n var specialAreas = mapRecord.specialAreas || {};\n var geoJSON = mapRecord.geoJSON;\n var regions; // https://jsperf.com/try-catch-performance-overhead\n\n try {\n regions = geoJSON ? parseGeoJson(geoJSON, nameProperty) : [];\n } catch (e) {\n throw new Error('Invalid geoJson format\\n' + e.message);\n }\n\n fixNanhai(mapName, regions);\n each(regions, function (region) {\n var regionName = region.name;\n fixTextCoord(mapName, region);\n fixGeoCoord(mapName, region);\n fixDiaoyuIsland(mapName, region); // Some area like Alaska in USA map needs to be tansformed\n // to look better\n\n var specialArea = specialAreas[regionName];\n\n if (specialArea) {\n region.transformTo(specialArea.left, specialArea.top, specialArea.width, specialArea.height);\n }\n });\n return inner(mapRecord).parsed = {\n regions: regions,\n boundingRect: getBoundingRect(regions)\n };\n }\n};\n\nfunction getBoundingRect(regions) {\n var rect;\n\n for (var i = 0; i < regions.length; i++) {\n var regionRect = regions[i].getBoundingRect();\n rect = rect || regionRect.clone();\n rect.union(regionRect);\n }\n\n return rect;\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 _parseSVG = require(\"zrender/lib/tool/parseSVG\");\n\nvar parseSVG = _parseSVG.parseSVG;\nvar makeViewBoxTransform = _parseSVG.makeViewBoxTransform;\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nvar Rect = require(\"zrender/lib/graphic/shape/Rect\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar assert = _util.assert;\nvar createHashMap = _util.createHashMap;\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\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*/\nvar inner = makeInner();\nvar _default = {\n /**\n * @param {string} mapName\n * @param {Object} mapRecord {specialAreas, geoJSON}\n * @return {Object} {root, boundingRect}\n */\n load: function (mapName, mapRecord) {\n var originRoot = inner(mapRecord).originRoot;\n\n if (originRoot) {\n return {\n root: originRoot,\n boundingRect: inner(mapRecord).boundingRect\n };\n }\n\n var graphic = buildGraphic(mapRecord);\n inner(mapRecord).originRoot = graphic.root;\n inner(mapRecord).boundingRect = graphic.boundingRect;\n return graphic;\n },\n makeGraphic: function (mapName, mapRecord, hostKey) {\n // For performance consideration (in large SVG), graphic only maked\n // when necessary and reuse them according to hostKey.\n var field = inner(mapRecord);\n var rootMap = field.rootMap || (field.rootMap = createHashMap());\n var root = rootMap.get(hostKey);\n\n if (root) {\n return root;\n }\n\n var originRoot = field.originRoot;\n var boundingRect = field.boundingRect; // For performance, if originRoot is not used by a view,\n // assign it to a view, but not reproduce graphic elements.\n\n if (!field.originRootHostKey) {\n field.originRootHostKey = hostKey;\n root = originRoot;\n } else {\n root = buildGraphic(mapRecord, boundingRect).root;\n }\n\n return rootMap.set(hostKey, root);\n },\n removeGraphic: function (mapName, mapRecord, hostKey) {\n var field = inner(mapRecord);\n var rootMap = field.rootMap;\n rootMap && rootMap.removeKey(hostKey);\n\n if (hostKey === field.originRootHostKey) {\n field.originRootHostKey = null;\n }\n }\n};\n\nfunction buildGraphic(mapRecord, boundingRect) {\n var svgXML = mapRecord.svgXML;\n var result;\n var root;\n\n try {\n result = svgXML && parseSVG(svgXML, {\n ignoreViewBox: true,\n ignoreRootClip: true\n }) || {};\n root = result.root;\n assert(root != null);\n } catch (e) {\n throw new Error('Invalid svg format\\n' + e.message);\n }\n\n var svgWidth = result.width;\n var svgHeight = result.height;\n var viewBoxRect = result.viewBoxRect;\n\n if (!boundingRect) {\n boundingRect = svgWidth == null || svgHeight == null ? // If svg width / height not specified, calculate\n // bounding rect as the width / height\n root.getBoundingRect() : new BoundingRect(0, 0, 0, 0);\n\n if (svgWidth != null) {\n boundingRect.width = svgWidth;\n }\n\n if (svgHeight != null) {\n boundingRect.height = svgHeight;\n }\n }\n\n if (viewBoxRect) {\n var viewBoxTransform = makeViewBoxTransform(viewBoxRect, boundingRect.width, boundingRect.height);\n var elRoot = root;\n root = new Group();\n root.add(elRoot);\n elRoot.scale = viewBoxTransform.scale;\n elRoot.position = viewBoxTransform.position;\n }\n\n root.setClipPath(new Rect({\n shape: boundingRect.plain()\n }));\n return {\n root: root,\n boundingRect: boundingRect\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar createHashMap = _util.createHashMap;\n\nvar mapDataStorage = require(\"./mapDataStorage\");\n\nvar geoJSONLoader = require(\"./geoJSONLoader\");\n\nvar geoSVGLoader = require(\"./geoSVGLoader\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\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 loaders = {\n geoJSON: geoJSONLoader,\n svg: geoSVGLoader\n};\nvar _default = {\n /**\n * @param {string} mapName\n * @param {Object} nameMap\n * @param {string} nameProperty\n * @return {Object} source {regions, regionsMap, nameCoordMap, boundingRect}\n */\n load: function (mapName, nameMap, nameProperty) {\n var regions = [];\n var regionsMap = createHashMap();\n var nameCoordMap = createHashMap();\n var boundingRect;\n var mapRecords = retrieveMap(mapName);\n each(mapRecords, function (record) {\n var singleSource = loaders[record.type].load(mapName, record, nameProperty);\n each(singleSource.regions, function (region) {\n var regionName = region.name; // Try use the alias in geoNameMap\n\n if (nameMap && nameMap.hasOwnProperty(regionName)) {\n region = region.cloneShallow(regionName = nameMap[regionName]);\n }\n\n regions.push(region);\n regionsMap.set(regionName, region);\n nameCoordMap.set(regionName, region.center);\n });\n var rect = singleSource.boundingRect;\n\n if (rect) {\n boundingRect ? boundingRect.union(rect) : boundingRect = rect.clone();\n }\n });\n return {\n regions: regions,\n regionsMap: regionsMap,\n nameCoordMap: nameCoordMap,\n // FIXME Always return new ?\n boundingRect: boundingRect || new BoundingRect(0, 0, 0, 0)\n };\n },\n\n /**\n * @param {string} mapName\n * @param {string} hostKey For cache.\n * @return {Array.} Roots.\n */\n makeGraphic: makeInvoker('makeGraphic'),\n\n /**\n * @param {string} mapName\n * @param {string} hostKey For cache.\n */\n removeGraphic: makeInvoker('removeGraphic')\n};\n\nfunction makeInvoker(methodName) {\n return function (mapName, hostKey) {\n var mapRecords = retrieveMap(mapName);\n var results = [];\n each(mapRecords, function (record) {\n var method = loaders[record.type][methodName];\n method && results.push(method(mapName, record, hostKey));\n });\n return results;\n };\n}\n\nfunction mapNotExistsError(mapName) {}\n\nfunction retrieveMap(mapName) {\n var mapRecords = mapDataStorage.retrieveMap(mapName) || [];\n return mapRecords;\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar isString = _util.isString;\nvar isArray = _util.isArray;\nvar each = _util.each;\nvar assert = _util.assert;\n\nvar _parseSVG = require(\"zrender/lib/tool/parseSVG\");\n\nvar parseXML = _parseSVG.parseXML;\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 storage = createHashMap(); // For minimize the code size of common echarts package,\n// do not put too much logic in this module.\n\nvar _default = {\n // The format of record: see `echarts.registerMap`.\n // Compatible with previous `echarts.registerMap`.\n registerMap: function (mapName, rawGeoJson, rawSpecialAreas) {\n var records;\n\n if (isArray(rawGeoJson)) {\n records = rawGeoJson;\n } else if (rawGeoJson.svg) {\n records = [{\n type: 'svg',\n source: rawGeoJson.svg,\n specialAreas: rawGeoJson.specialAreas\n }];\n } else {\n // Backward compatibility.\n if (rawGeoJson.geoJson && !rawGeoJson.features) {\n rawSpecialAreas = rawGeoJson.specialAreas;\n rawGeoJson = rawGeoJson.geoJson;\n }\n\n records = [{\n type: 'geoJSON',\n source: rawGeoJson,\n specialAreas: rawSpecialAreas\n }];\n }\n\n each(records, function (record) {\n var type = record.type;\n type === 'geoJson' && (type = record.type = 'geoJSON');\n var parse = parsers[type];\n parse(record);\n });\n return storage.set(mapName, records);\n },\n retrieveMap: function (mapName) {\n return storage.get(mapName);\n }\n};\nvar parsers = {\n geoJSON: function (record) {\n var source = record.source;\n record.geoJSON = !isString(source) ? source : typeof JSON !== 'undefined' && JSON.parse ? JSON.parse(source) : new Function('return (' + source + ');')();\n },\n // Only perform parse to XML object here, which might be time\n // consiming for large SVG.\n // Although convert XML to zrender element is also time consiming,\n // if we do it here, the clone of zrender elements has to be\n // required. So we do it once for each geo instance, util real\n // performance issues call for optimizing it.\n svg: function (record) {\n record.svgXML = parseXML(record.source);\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 Region = require(\"./Region\");\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 * Parse and decode geo json\n * @module echarts/coord/geo/parseGeoJson\n */\nfunction decode(json) {\n if (!json.UTF8Encoding) {\n return json;\n }\n\n var encodeScale = json.UTF8Scale;\n\n if (encodeScale == null) {\n encodeScale = 1024;\n }\n\n var features = json.features;\n\n for (var f = 0; f < features.length; f++) {\n var feature = features[f];\n var geometry = feature.geometry;\n var coordinates = geometry.coordinates;\n var encodeOffsets = geometry.encodeOffsets;\n\n for (var c = 0; c < coordinates.length; c++) {\n var coordinate = coordinates[c];\n\n if (geometry.type === 'Polygon') {\n coordinates[c] = decodePolygon(coordinate, encodeOffsets[c], encodeScale);\n } else if (geometry.type === 'MultiPolygon') {\n for (var c2 = 0; c2 < coordinate.length; c2++) {\n var polygon = coordinate[c2];\n coordinate[c2] = decodePolygon(polygon, encodeOffsets[c][c2], encodeScale);\n }\n }\n }\n } // Has been decoded\n\n\n json.UTF8Encoding = false;\n return json;\n}\n\nfunction decodePolygon(coordinate, encodeOffsets, encodeScale) {\n var result = [];\n var prevX = encodeOffsets[0];\n var prevY = encodeOffsets[1];\n\n for (var i = 0; i < coordinate.length; i += 2) {\n var x = coordinate.charCodeAt(i) - 64;\n var y = coordinate.charCodeAt(i + 1) - 64; // ZigZag decoding\n\n x = x >> 1 ^ -(x & 1);\n y = y >> 1 ^ -(y & 1); // Delta deocding\n\n x += prevX;\n y += prevY;\n prevX = x;\n prevY = y; // Dequantize\n\n result.push([x / encodeScale, y / encodeScale]);\n }\n\n return result;\n}\n/**\n * @alias module:echarts/coord/geo/parseGeoJson\n * @param {Object} geoJson\n * @param {string} nameProperty\n * @return {module:zrender/container/Group}\n */\n\n\nfunction _default(geoJson, nameProperty) {\n decode(geoJson);\n return zrUtil.map(zrUtil.filter(geoJson.features, function (featureObj) {\n // Output of mapshaper may have geometry null\n return featureObj.geometry && featureObj.properties && featureObj.geometry.coordinates.length > 0;\n }), function (featureObj) {\n var properties = featureObj.properties;\n var geo = featureObj.geometry;\n var coordinates = geo.coordinates;\n var geometries = [];\n\n if (geo.type === 'Polygon') {\n geometries.push({\n type: 'polygon',\n // According to the GeoJSON specification.\n // First must be exterior, and the rest are all interior(holes).\n exterior: coordinates[0],\n interiors: coordinates.slice(1)\n });\n }\n\n if (geo.type === 'MultiPolygon') {\n zrUtil.each(coordinates, function (item) {\n if (item[0]) {\n geometries.push({\n type: 'polygon',\n exterior: item[0],\n interiors: item.slice(1)\n });\n }\n });\n }\n\n var region = new Region(properties[nameProperty || 'name'], geometries, properties.cp);\n region.properties = properties;\n return region;\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 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 dataToCoordSize(dataSize, dataItem) {\n dataItem = dataItem || [0, 0];\n return zrUtil.map([0, 1], function (dimIdx) {\n var val = dataItem[dimIdx];\n var halfSize = dataSize[dimIdx] / 2;\n var p1 = [];\n var p2 = [];\n p1[dimIdx] = val - halfSize;\n p2[dimIdx] = val + halfSize;\n p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx];\n return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]);\n }, this);\n}\n\nfunction _default(coordSys) {\n var rect = coordSys.getBoundingRect();\n return {\n coordSys: {\n type: 'geo',\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height,\n zoom: coordSys.getZoom()\n },\n api: {\n coord: function (data) {\n // do not provide \"out\" and noRoam param,\n // Compatible with this usage:\n // echarts.util.map(item.points, api.coord)\n return coordSys.dataToPoint(data);\n },\n size: zrUtil.bind(dataToCoordSize, coordSys)\n }\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar ComponentModel = require(\"../../model/Component\");\n\nvar makeStyleMapper = require(\"../../model/mixin/makeStyleMapper\");\n\nvar axisModelCreator = require(\"../axisModelCreator\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar axisModelCommonMixin = require(\"../axisModelCommonMixin\");\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 AxisModel = ComponentModel.extend({\n type: 'baseParallelAxis',\n\n /**\n * @type {module:echarts/coord/parallel/Axis}\n */\n axis: null,\n\n /**\n * @type {Array.}\n * @readOnly\n */\n activeIntervals: [],\n\n /**\n * @return {Object}\n */\n getAreaSelectStyle: function () {\n return makeStyleMapper([['fill', 'color'], ['lineWidth', 'borderWidth'], ['stroke', 'borderColor'], ['width', 'width'], ['opacity', 'opacity']])(this.getModel('areaSelectStyle'));\n },\n\n /**\n * The code of this feature is put on AxisModel but not ParallelAxis,\n * because axisModel can be alive after echarts updating but instance of\n * ParallelAxis having been disposed. this._activeInterval should be kept\n * when action dispatched (i.e. legend click).\n *\n * @param {Array.>} intervals interval.length === 0\n * means set all active.\n * @public\n */\n setActiveIntervals: function (intervals) {\n var activeIntervals = this.activeIntervals = zrUtil.clone(intervals); // Normalize\n\n if (activeIntervals) {\n for (var i = activeIntervals.length - 1; i >= 0; i--) {\n numberUtil.asc(activeIntervals[i]);\n }\n }\n },\n\n /**\n * @param {number|string} [value] When attempting to detect 'no activeIntervals set',\n * value can not be input.\n * @return {string} 'normal': no activeIntervals set,\n * 'active',\n * 'inactive'.\n * @public\n */\n getActiveState: function (value) {\n var activeIntervals = this.activeIntervals;\n\n if (!activeIntervals.length) {\n return 'normal';\n }\n\n if (value == null || isNaN(value)) {\n return 'inactive';\n } // Simple optimization\n\n\n if (activeIntervals.length === 1) {\n var interval = activeIntervals[0];\n\n if (interval[0] <= value && value <= interval[1]) {\n return 'active';\n }\n } else {\n for (var i = 0, len = activeIntervals.length; i < len; i++) {\n if (activeIntervals[i][0] <= value && value <= activeIntervals[i][1]) {\n return 'active';\n }\n }\n }\n\n return 'inactive';\n }\n});\nvar defaultOption = {\n type: 'value',\n\n /**\n * @type {Array.}\n */\n dim: null,\n // 0, 1, 2, ...\n // parallelIndex: null,\n areaSelectStyle: {\n width: 20,\n borderWidth: 1,\n borderColor: 'rgba(160,197,232)',\n color: 'rgba(160,197,232)',\n opacity: 0.3\n },\n realtime: true,\n // Whether realtime update view when select.\n z: 10\n};\nzrUtil.merge(AxisModel.prototype, axisModelCommonMixin);\n\nfunction getAxisType(axisName, option) {\n return option.type || (option.data ? 'category' : 'value');\n}\n\naxisModelCreator('parallel', AxisModel, getAxisType, defaultOption);\nvar _default = AxisModel;\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 matrix = require(\"zrender/lib/core/matrix\");\n\nvar layoutUtil = require(\"../../util/layout\");\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar ParallelAxis = require(\"./ParallelAxis\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar sliderMove = require(\"../../component/helper/sliderMove\");\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 * Parallel Coordinates\n * \n */\nvar each = zrUtil.each;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathFloor = Math.floor;\nvar mathCeil = Math.ceil;\nvar round = numberUtil.round;\nvar PI = Math.PI;\n\nfunction Parallel(parallelModel, ecModel, api) {\n /**\n * key: dimension\n * @type {Object.}\n * @private\n */\n this._axesMap = zrUtil.createHashMap();\n /**\n * key: dimension\n * value: {position: [], rotation, }\n * @type {Object.}\n * @private\n */\n\n this._axesLayout = {};\n /**\n * Always follow axis order.\n * @type {Array.}\n * @readOnly\n */\n\n this.dimensions = parallelModel.dimensions;\n /**\n * @type {module:zrender/core/BoundingRect}\n */\n\n this._rect;\n /**\n * @type {module:echarts/coord/parallel/ParallelModel}\n */\n\n this._model = parallelModel;\n\n this._init(parallelModel, ecModel, api);\n}\n\nParallel.prototype = {\n type: 'parallel',\n constructor: Parallel,\n\n /**\n * Initialize cartesian coordinate systems\n * @private\n */\n _init: function (parallelModel, ecModel, api) {\n var dimensions = parallelModel.dimensions;\n var parallelAxisIndex = parallelModel.parallelAxisIndex;\n each(dimensions, function (dim, idx) {\n var axisIndex = parallelAxisIndex[idx];\n var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\n\n var axis = this._axesMap.set(dim, new ParallelAxis(dim, axisHelper.createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisIndex));\n\n var isCategory = axis.type === 'category';\n axis.onBand = isCategory && axisModel.get('boundaryGap');\n axis.inverse = axisModel.get('inverse'); // Injection\n\n axisModel.axis = axis;\n axis.model = axisModel;\n axis.coordinateSystem = axisModel.coordinateSystem = this;\n }, this);\n },\n\n /**\n * Update axis scale after data processed\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n update: function (ecModel, api) {\n this._updateAxesFromSeries(this._model, ecModel);\n },\n\n /**\n * @override\n */\n containPoint: function (point) {\n var layoutInfo = this._makeLayoutInfo();\n\n var axisBase = layoutInfo.axisBase;\n var layoutBase = layoutInfo.layoutBase;\n var pixelDimIndex = layoutInfo.pixelDimIndex;\n var pAxis = point[1 - pixelDimIndex];\n var pLayout = point[pixelDimIndex];\n return pAxis >= axisBase && pAxis <= axisBase + layoutInfo.axisLength && pLayout >= layoutBase && pLayout <= layoutBase + layoutInfo.layoutLength;\n },\n getModel: function () {\n return this._model;\n },\n\n /**\n * Update properties from series\n * @private\n */\n _updateAxesFromSeries: function (parallelModel, ecModel) {\n ecModel.eachSeries(function (seriesModel) {\n if (!parallelModel.contains(seriesModel, ecModel)) {\n return;\n }\n\n var data = seriesModel.getData();\n each(this.dimensions, function (dim) {\n var axis = this._axesMap.get(dim);\n\n axis.scale.unionExtentFromData(data, data.mapDimension(dim));\n axisHelper.niceScaleExtent(axis.scale, axis.model);\n }, this);\n }, this);\n },\n\n /**\n * Resize the parallel coordinate system.\n * @param {module:echarts/coord/parallel/ParallelModel} parallelModel\n * @param {module:echarts/ExtensionAPI} api\n */\n resize: function (parallelModel, api) {\n this._rect = layoutUtil.getLayoutRect(parallelModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n\n this._layoutAxes();\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getRect: function () {\n return this._rect;\n },\n\n /**\n * @private\n */\n _makeLayoutInfo: function () {\n var parallelModel = this._model;\n var rect = this._rect;\n var xy = ['x', 'y'];\n var wh = ['width', 'height'];\n var layout = parallelModel.get('layout');\n var pixelDimIndex = layout === 'horizontal' ? 0 : 1;\n var layoutLength = rect[wh[pixelDimIndex]];\n var layoutExtent = [0, layoutLength];\n var axisCount = this.dimensions.length;\n var axisExpandWidth = restrict(parallelModel.get('axisExpandWidth'), layoutExtent);\n var axisExpandCount = restrict(parallelModel.get('axisExpandCount') || 0, [0, axisCount]);\n var axisExpandable = parallelModel.get('axisExpandable') && axisCount > 3 && axisCount > axisExpandCount && axisExpandCount > 1 && axisExpandWidth > 0 && layoutLength > 0; // `axisExpandWindow` is According to the coordinates of [0, axisExpandLength],\n // for sake of consider the case that axisCollapseWidth is 0 (when screen is narrow),\n // where collapsed axes should be overlapped.\n\n var axisExpandWindow = parallelModel.get('axisExpandWindow');\n var winSize;\n\n if (!axisExpandWindow) {\n winSize = restrict(axisExpandWidth * (axisExpandCount - 1), layoutExtent);\n var axisExpandCenter = parallelModel.get('axisExpandCenter') || mathFloor(axisCount / 2);\n axisExpandWindow = [axisExpandWidth * axisExpandCenter - winSize / 2];\n axisExpandWindow[1] = axisExpandWindow[0] + winSize;\n } else {\n winSize = restrict(axisExpandWindow[1] - axisExpandWindow[0], layoutExtent);\n axisExpandWindow[1] = axisExpandWindow[0] + winSize;\n }\n\n var axisCollapseWidth = (layoutLength - winSize) / (axisCount - axisExpandCount); // Avoid axisCollapseWidth is too small.\n\n axisCollapseWidth < 3 && (axisCollapseWidth = 0); // Find the first and last indices > ewin[0] and < ewin[1].\n\n var winInnerIndices = [mathFloor(round(axisExpandWindow[0] / axisExpandWidth, 1)) + 1, mathCeil(round(axisExpandWindow[1] / axisExpandWidth, 1)) - 1]; // Pos in ec coordinates.\n\n var axisExpandWindow0Pos = axisCollapseWidth / axisExpandWidth * axisExpandWindow[0];\n return {\n layout: layout,\n pixelDimIndex: pixelDimIndex,\n layoutBase: rect[xy[pixelDimIndex]],\n layoutLength: layoutLength,\n axisBase: rect[xy[1 - pixelDimIndex]],\n axisLength: rect[wh[1 - pixelDimIndex]],\n axisExpandable: axisExpandable,\n axisExpandWidth: axisExpandWidth,\n axisCollapseWidth: axisCollapseWidth,\n axisExpandWindow: axisExpandWindow,\n axisCount: axisCount,\n winInnerIndices: winInnerIndices,\n axisExpandWindow0Pos: axisExpandWindow0Pos\n };\n },\n\n /**\n * @private\n */\n _layoutAxes: function () {\n var rect = this._rect;\n var axes = this._axesMap;\n var dimensions = this.dimensions;\n\n var layoutInfo = this._makeLayoutInfo();\n\n var layout = layoutInfo.layout;\n axes.each(function (axis) {\n var axisExtent = [0, layoutInfo.axisLength];\n var idx = axis.inverse ? 1 : 0;\n axis.setExtent(axisExtent[idx], axisExtent[1 - idx]);\n });\n each(dimensions, function (dim, idx) {\n var posInfo = (layoutInfo.axisExpandable ? layoutAxisWithExpand : layoutAxisWithoutExpand)(idx, layoutInfo);\n var positionTable = {\n horizontal: {\n x: posInfo.position,\n y: layoutInfo.axisLength\n },\n vertical: {\n x: 0,\n y: posInfo.position\n }\n };\n var rotationTable = {\n horizontal: PI / 2,\n vertical: 0\n };\n var position = [positionTable[layout].x + rect.x, positionTable[layout].y + rect.y];\n var rotation = rotationTable[layout];\n var transform = matrix.create();\n matrix.rotate(transform, transform, rotation);\n matrix.translate(transform, transform, position); // TODO\n // tick等排布信息。\n // TODO\n // 根据axis order 更新 dimensions顺序。\n\n this._axesLayout[dim] = {\n position: position,\n rotation: rotation,\n transform: transform,\n axisNameAvailableWidth: posInfo.axisNameAvailableWidth,\n axisLabelShow: posInfo.axisLabelShow,\n nameTruncateMaxWidth: posInfo.nameTruncateMaxWidth,\n tickDirection: 1,\n labelDirection: 1\n };\n }, this);\n },\n\n /**\n * Get axis by dim.\n * @param {string} dim\n * @return {module:echarts/coord/parallel/ParallelAxis} [description]\n */\n getAxis: function (dim) {\n return this._axesMap.get(dim);\n },\n\n /**\n * Convert a dim value of a single item of series data to Point.\n * @param {*} value\n * @param {string} dim\n * @return {Array}\n */\n dataToPoint: function (value, dim) {\n return this.axisCoordToPoint(this._axesMap.get(dim).dataToCoord(value), dim);\n },\n\n /**\n * Travel data for one time, get activeState of each data item.\n * @param {module:echarts/data/List} data\n * @param {Functio} cb param: {string} activeState 'active' or 'inactive' or 'normal'\n * {number} dataIndex\n * @param {number} [start=0] the start dataIndex that travel from.\n * @param {number} [end=data.count()] the next dataIndex of the last dataIndex will be travel.\n */\n eachActiveState: function (data, callback, start, end) {\n start == null && (start = 0);\n end == null && (end = data.count());\n var axesMap = this._axesMap;\n var dimensions = this.dimensions;\n var dataDimensions = [];\n var axisModels = [];\n zrUtil.each(dimensions, function (axisDim) {\n dataDimensions.push(data.mapDimension(axisDim));\n axisModels.push(axesMap.get(axisDim).model);\n });\n var hasActiveSet = this.hasAxisBrushed();\n\n for (var dataIndex = start; dataIndex < end; dataIndex++) {\n var activeState;\n\n if (!hasActiveSet) {\n activeState = 'normal';\n } else {\n activeState = 'active';\n var values = data.getValues(dataDimensions, dataIndex);\n\n for (var j = 0, lenj = dimensions.length; j < lenj; j++) {\n var state = axisModels[j].getActiveState(values[j]);\n\n if (state === 'inactive') {\n activeState = 'inactive';\n break;\n }\n }\n }\n\n callback(activeState, dataIndex);\n }\n },\n\n /**\n * Whether has any activeSet.\n * @return {boolean}\n */\n hasAxisBrushed: function () {\n var dimensions = this.dimensions;\n var axesMap = this._axesMap;\n var hasActiveSet = false;\n\n for (var j = 0, lenj = dimensions.length; j < lenj; j++) {\n if (axesMap.get(dimensions[j]).model.getActiveState() !== 'normal') {\n hasActiveSet = true;\n }\n }\n\n return hasActiveSet;\n },\n\n /**\n * Convert coords of each axis to Point.\n * Return point. For example: [10, 20]\n * @param {Array.} coords\n * @param {string} dim\n * @return {Array.}\n */\n axisCoordToPoint: function (coord, dim) {\n var axisLayout = this._axesLayout[dim];\n return graphic.applyTransform([coord, 0], axisLayout.transform);\n },\n\n /**\n * Get axis layout.\n */\n getAxisLayout: function (dim) {\n return zrUtil.clone(this._axesLayout[dim]);\n },\n\n /**\n * @param {Array.} point\n * @return {Object} {axisExpandWindow, delta, behavior: 'jump' | 'slide' | 'none'}.\n */\n getSlidedAxisExpandWindow: function (point) {\n var layoutInfo = this._makeLayoutInfo();\n\n var pixelDimIndex = layoutInfo.pixelDimIndex;\n var axisExpandWindow = layoutInfo.axisExpandWindow.slice();\n var winSize = axisExpandWindow[1] - axisExpandWindow[0];\n var extent = [0, layoutInfo.axisExpandWidth * (layoutInfo.axisCount - 1)]; // Out of the area of coordinate system.\n\n if (!this.containPoint(point)) {\n return {\n behavior: 'none',\n axisExpandWindow: axisExpandWindow\n };\n } // Conver the point from global to expand coordinates.\n\n\n var pointCoord = point[pixelDimIndex] - layoutInfo.layoutBase - layoutInfo.axisExpandWindow0Pos; // For dragging operation convenience, the window should not be\n // slided when mouse is the center area of the window.\n\n var delta;\n var behavior = 'slide';\n var axisCollapseWidth = layoutInfo.axisCollapseWidth;\n\n var triggerArea = this._model.get('axisExpandSlideTriggerArea'); // But consider touch device, jump is necessary.\n\n\n var useJump = triggerArea[0] != null;\n\n if (axisCollapseWidth) {\n if (useJump && axisCollapseWidth && pointCoord < winSize * triggerArea[0]) {\n behavior = 'jump';\n delta = pointCoord - winSize * triggerArea[2];\n } else if (useJump && axisCollapseWidth && pointCoord > winSize * (1 - triggerArea[0])) {\n behavior = 'jump';\n delta = pointCoord - winSize * (1 - triggerArea[2]);\n } else {\n (delta = pointCoord - winSize * triggerArea[1]) >= 0 && (delta = pointCoord - winSize * (1 - triggerArea[1])) <= 0 && (delta = 0);\n }\n\n delta *= layoutInfo.axisExpandWidth / axisCollapseWidth;\n delta ? sliderMove(delta, axisExpandWindow, extent, 'all') // Avoid nonsense triger on mousemove.\n : behavior = 'none';\n } // When screen is too narrow, make it visible and slidable, although it is hard to interact.\n else {\n var winSize = axisExpandWindow[1] - axisExpandWindow[0];\n var pos = extent[1] * pointCoord / winSize;\n axisExpandWindow = [mathMax(0, pos - winSize / 2)];\n axisExpandWindow[1] = mathMin(extent[1], axisExpandWindow[0] + winSize);\n axisExpandWindow[0] = axisExpandWindow[1] - winSize;\n }\n\n return {\n axisExpandWindow: axisExpandWindow,\n behavior: behavior\n };\n }\n};\n\nfunction restrict(len, extent) {\n return mathMin(mathMax(len, extent[0]), extent[1]);\n}\n\nfunction layoutAxisWithoutExpand(axisIndex, layoutInfo) {\n var step = layoutInfo.layoutLength / (layoutInfo.axisCount - 1);\n return {\n position: step * axisIndex,\n axisNameAvailableWidth: step,\n axisLabelShow: true\n };\n}\n\nfunction layoutAxisWithExpand(axisIndex, layoutInfo) {\n var layoutLength = layoutInfo.layoutLength;\n var axisExpandWidth = layoutInfo.axisExpandWidth;\n var axisCount = layoutInfo.axisCount;\n var axisCollapseWidth = layoutInfo.axisCollapseWidth;\n var winInnerIndices = layoutInfo.winInnerIndices;\n var position;\n var axisNameAvailableWidth = axisCollapseWidth;\n var axisLabelShow = false;\n var nameTruncateMaxWidth;\n\n if (axisIndex < winInnerIndices[0]) {\n position = axisIndex * axisCollapseWidth;\n nameTruncateMaxWidth = axisCollapseWidth;\n } else if (axisIndex <= winInnerIndices[1]) {\n position = layoutInfo.axisExpandWindow0Pos + axisIndex * axisExpandWidth - layoutInfo.axisExpandWindow[0];\n axisNameAvailableWidth = axisExpandWidth;\n axisLabelShow = true;\n } else {\n position = layoutLength - (axisCount - 1 - axisIndex) * axisCollapseWidth;\n nameTruncateMaxWidth = axisCollapseWidth;\n }\n\n return {\n position: position,\n axisNameAvailableWidth: axisNameAvailableWidth,\n axisLabelShow: axisLabelShow,\n nameTruncateMaxWidth: nameTruncateMaxWidth\n };\n}\n\nvar _default = Parallel;\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 Axis = require(\"../Axis\");\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 * @constructor module:echarts/coord/parallel/ParallelAxis\n * @extends {module:echarts/coord/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.} coordExtent\n * @param {string} axisType\n */\nvar ParallelAxis = function (dim, scale, coordExtent, axisType, axisIndex) {\n Axis.call(this, dim, scale, coordExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = axisType || 'value';\n /**\n * @type {number}\n * @readOnly\n */\n\n this.axisIndex = axisIndex;\n};\n\nParallelAxis.prototype = {\n constructor: ParallelAxis,\n\n /**\n * Axis model\n * @param {module:echarts/coord/parallel/AxisModel}\n */\n model: null,\n\n /**\n * @override\n */\n isHorizontal: function () {\n return this.coordinateSystem.getModel().get('layout') !== 'horizontal';\n }\n};\nzrUtil.inherits(ParallelAxis, Axis);\nvar _default = ParallelAxis;\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 Component = require(\"../../model/Component\");\n\nrequire(\"./AxisModel\");\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 _default = Component.extend({\n type: 'parallel',\n dependencies: ['parallelAxis'],\n\n /**\n * @type {module:echarts/coord/parallel/Parallel}\n */\n coordinateSystem: null,\n\n /**\n * Each item like: 'dim0', 'dim1', 'dim2', ...\n * @type {Array.}\n * @readOnly\n */\n dimensions: null,\n\n /**\n * Coresponding to dimensions.\n * @type {Array.}\n * @readOnly\n */\n parallelAxisIndex: null,\n layoutMode: 'box',\n defaultOption: {\n zlevel: 0,\n z: 0,\n left: 80,\n top: 60,\n right: 80,\n bottom: 60,\n // width: {totalWidth} - left - right,\n // height: {totalHeight} - top - bottom,\n layout: 'horizontal',\n // 'horizontal' or 'vertical'\n // FIXME\n // naming?\n axisExpandable: false,\n axisExpandCenter: null,\n axisExpandCount: 0,\n axisExpandWidth: 50,\n // FIXME '10%' ?\n axisExpandRate: 17,\n axisExpandDebounce: 50,\n // [out, in, jumpTarget]. In percentage. If use [null, 0.05], null means full.\n // Do not doc to user until necessary.\n axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4],\n axisExpandTriggerOn: 'click',\n // 'mousemove' or 'click'\n parallelAxisDefault: null\n },\n\n /**\n * @override\n */\n init: function () {\n Component.prototype.init.apply(this, arguments);\n this.mergeOption({});\n },\n\n /**\n * @override\n */\n mergeOption: function (newOption) {\n var thisOption = this.option;\n newOption && zrUtil.merge(thisOption, newOption, true);\n\n this._initDimensions();\n },\n\n /**\n * Whether series or axis is in this coordinate system.\n * @param {module:echarts/model/Series|module:echarts/coord/parallel/AxisModel} model\n * @param {module:echarts/model/Global} ecModel\n */\n contains: function (model, ecModel) {\n var parallelIndex = model.get('parallelIndex');\n return parallelIndex != null && ecModel.getComponent('parallel', parallelIndex) === this;\n },\n setAxisExpand: function (opt) {\n zrUtil.each(['axisExpandable', 'axisExpandCenter', 'axisExpandCount', 'axisExpandWidth', 'axisExpandWindow'], function (name) {\n if (opt.hasOwnProperty(name)) {\n this.option[name] = opt[name];\n }\n }, this);\n },\n\n /**\n * @private\n */\n _initDimensions: function () {\n var dimensions = this.dimensions = [];\n var parallelAxisIndex = this.parallelAxisIndex = [];\n var axisModels = zrUtil.filter(this.dependentModels.parallelAxis, function (axisModel) {\n // Can not use this.contains here, because\n // initialization has not been completed yet.\n return (axisModel.get('parallelIndex') || 0) === this.componentIndex;\n }, this);\n zrUtil.each(axisModels, function (axisModel) {\n dimensions.push('dim' + axisModel.get('dim'));\n parallelAxisIndex.push(axisModel.componentIndex);\n });\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 Parallel = require(\"./Parallel\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\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 * Parallel coordinate system creater.\n */\nfunction create(ecModel, api) {\n var coordSysList = [];\n ecModel.eachComponent('parallel', function (parallelModel, idx) {\n var coordSys = new Parallel(parallelModel, ecModel, api);\n coordSys.name = 'parallel_' + idx;\n coordSys.resize(parallelModel, api);\n parallelModel.coordinateSystem = coordSys;\n coordSys.model = parallelModel;\n coordSysList.push(coordSys);\n }); // Inject the coordinateSystems into seriesModel\n\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.get('coordinateSystem') === 'parallel') {\n var parallelModel = ecModel.queryComponents({\n mainType: 'parallel',\n index: seriesModel.get('parallelIndex'),\n id: seriesModel.get('parallelId')\n })[0];\n seriesModel.coordinateSystem = parallelModel.coordinateSystem;\n }\n });\n return coordSysList;\n}\n\nCoordinateSystem.register('parallel', {\n create: create\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../../util/model\");\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(option) {\n createParallelIfNeeded(option);\n mergeAxisOptionFromParallel(option);\n}\n/**\n * Create a parallel coordinate if not exists.\n * @inner\n */\n\n\nfunction createParallelIfNeeded(option) {\n if (option.parallel) {\n return;\n }\n\n var hasParallelSeries = false;\n zrUtil.each(option.series, function (seriesOpt) {\n if (seriesOpt && seriesOpt.type === 'parallel') {\n hasParallelSeries = true;\n }\n });\n\n if (hasParallelSeries) {\n option.parallel = [{}];\n }\n}\n/**\n * Merge aixs definition from parallel option (if exists) to axis option.\n * @inner\n */\n\n\nfunction mergeAxisOptionFromParallel(option) {\n var axes = modelUtil.normalizeToArray(option.parallelAxis);\n zrUtil.each(axes, function (axisOption) {\n if (!zrUtil.isObject(axisOption)) {\n return;\n }\n\n var parallelIndex = axisOption.parallelIndex || 0;\n var parallelOption = modelUtil.normalizeToArray(option.parallel)[parallelIndex];\n\n if (parallelOption && parallelOption.parallelAxisDefault) {\n zrUtil.merge(axisOption, parallelOption.parallelAxisDefault, false);\n }\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar Axis = require(\"../Axis\");\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*/\nvar inner = makeInner();\n\nfunction AngleAxis(scale, angleExtent) {\n angleExtent = angleExtent || [0, 360];\n Axis.call(this, 'angle', scale, angleExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = 'category';\n}\n\nAngleAxis.prototype = {\n constructor: AngleAxis,\n\n /**\n * @override\n */\n pointToData: function (point, clamp) {\n return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1];\n },\n dataToAngle: Axis.prototype.dataToCoord,\n angleToData: Axis.prototype.coordToData,\n\n /**\n * Only be called in category axis.\n * Angle axis uses text height to decide interval\n *\n * @override\n * @return {number} Auto interval for cateogry axis tick and label\n */\n calculateCategoryInterval: function () {\n var axis = this;\n var labelModel = axis.getLabelModel();\n var ordinalScale = axis.scale;\n var ordinalExtent = ordinalScale.getExtent(); // Providing this method is for optimization:\n // avoid generating a long array by `getTicks`\n // in large category data case.\n\n var tickCount = ordinalScale.count();\n\n if (ordinalExtent[1] - ordinalExtent[0] < 1) {\n return 0;\n }\n\n var tickValue = ordinalExtent[0];\n var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\n var unitH = Math.abs(unitSpan); // Not precise, just use height as text width\n // and each distance from axis line yet.\n\n var rect = textContain.getBoundingRect(tickValue, labelModel.getFont(), 'center', 'top');\n var maxH = Math.max(rect.height, 7);\n var dh = maxH / unitH; // 0/0 is NaN, 1/0 is Infinity.\n\n isNaN(dh) && (dh = Infinity);\n var interval = Math.max(0, Math.floor(dh));\n var cache = inner(axis.model);\n var lastAutoInterval = cache.lastAutoInterval;\n var lastTickCount = cache.lastTickCount; // Use cache to keep interval stable while moving zoom window,\n // otherwise the calculated interval might jitter when the zoom\n // window size is close to the interval-changing size.\n\n if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 // Always choose the bigger one, otherwise the critical\n // point is not the same when zooming in or zooming out.\n && lastAutoInterval > interval) {\n interval = lastAutoInterval;\n } // Only update cache if cache not used, otherwise the\n // changing of interval is too insensitive.\n else {\n cache.lastTickCount = tickCount;\n cache.lastAutoInterval = interval;\n }\n\n return interval;\n }\n};\nzrUtil.inherits(AngleAxis, Axis);\nvar _default = AngleAxis;\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 ComponentModel = require(\"../../model/Component\");\n\nvar axisModelCreator = require(\"../axisModelCreator\");\n\nvar axisModelCommonMixin = require(\"../axisModelCommonMixin\");\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 PolarAxisModel = ComponentModel.extend({\n type: 'polarAxis',\n\n /**\n * @type {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n */\n axis: null,\n\n /**\n * @override\n */\n getCoordSysModel: function () {\n return this.ecModel.queryComponents({\n mainType: 'polar',\n index: this.option.polarIndex,\n id: this.option.polarId\n })[0];\n }\n});\nzrUtil.merge(PolarAxisModel.prototype, axisModelCommonMixin);\nvar polarAxisDefaultExtendedOption = {\n angle: {\n // polarIndex: 0,\n // polarId: '',\n startAngle: 90,\n clockwise: true,\n splitNumber: 12,\n axisLabel: {\n rotate: false\n }\n },\n radius: {\n // polarIndex: 0,\n // polarId: '',\n splitNumber: 5\n }\n};\n\nfunction getAxisType(axisDim, option) {\n // Default axis with data is category axis\n return option.type || (option.data ? 'category' : 'value');\n}\n\naxisModelCreator('angle', PolarAxisModel, getAxisType, polarAxisDefaultExtendedOption.angle);\naxisModelCreator('radius', PolarAxisModel, getAxisType, polarAxisDefaultExtendedOption.radius);","\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 RadiusAxis = require(\"./RadiusAxis\");\n\nvar AngleAxis = require(\"./AngleAxis\");\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/coord/polar/Polar\n */\n\n/**\n * @alias {module:echarts/coord/polar/Polar}\n * @constructor\n * @param {string} name\n */\nvar Polar = function (name) {\n /**\n * @type {string}\n */\n this.name = name || '';\n /**\n * x of polar center\n * @type {number}\n */\n\n this.cx = 0;\n /**\n * y of polar center\n * @type {number}\n */\n\n this.cy = 0;\n /**\n * @type {module:echarts/coord/polar/RadiusAxis}\n * @private\n */\n\n this._radiusAxis = new RadiusAxis();\n /**\n * @type {module:echarts/coord/polar/AngleAxis}\n * @private\n */\n\n this._angleAxis = new AngleAxis();\n this._radiusAxis.polar = this._angleAxis.polar = this;\n};\n\nPolar.prototype = {\n type: 'polar',\n axisPointerEnabled: true,\n constructor: Polar,\n\n /**\n * @param {Array.}\n * @readOnly\n */\n dimensions: ['radius', 'angle'],\n\n /**\n * @type {module:echarts/coord/PolarModel}\n */\n model: null,\n\n /**\n * If contain coord\n * @param {Array.} point\n * @return {boolean}\n */\n containPoint: function (point) {\n var coord = this.pointToCoord(point);\n return this._radiusAxis.contain(coord[0]) && this._angleAxis.contain(coord[1]);\n },\n\n /**\n * If contain data\n * @param {Array.} data\n * @return {boolean}\n */\n containData: function (data) {\n return this._radiusAxis.containData(data[0]) && this._angleAxis.containData(data[1]);\n },\n\n /**\n * @param {string} dim\n * @return {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n */\n getAxis: function (dim) {\n return this['_' + dim + 'Axis'];\n },\n\n /**\n * @return {Array.}\n */\n getAxes: function () {\n return [this._radiusAxis, this._angleAxis];\n },\n\n /**\n * Get axes by type of scale\n * @param {string} scaleType\n * @return {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n */\n getAxesByScale: function (scaleType) {\n var axes = [];\n var angleAxis = this._angleAxis;\n var radiusAxis = this._radiusAxis;\n angleAxis.scale.type === scaleType && axes.push(angleAxis);\n radiusAxis.scale.type === scaleType && axes.push(radiusAxis);\n return axes;\n },\n\n /**\n * @return {module:echarts/coord/polar/AngleAxis}\n */\n getAngleAxis: function () {\n return this._angleAxis;\n },\n\n /**\n * @return {module:echarts/coord/polar/RadiusAxis}\n */\n getRadiusAxis: function () {\n return this._radiusAxis;\n },\n\n /**\n * @param {module:echarts/coord/polar/Axis}\n * @return {module:echarts/coord/polar/Axis}\n */\n getOtherAxis: function (axis) {\n var angleAxis = this._angleAxis;\n return axis === angleAxis ? this._radiusAxis : angleAxis;\n },\n\n /**\n * Base axis will be used on stacking.\n *\n * @return {module:echarts/coord/polar/Axis}\n */\n getBaseAxis: function () {\n return this.getAxesByScale('ordinal')[0] || this.getAxesByScale('time')[0] || this.getAngleAxis();\n },\n\n /**\n * @param {string} [dim] 'radius' or 'angle' or 'auto' or null/undefined\n * @return {Object} {baseAxes: [], otherAxes: []}\n */\n getTooltipAxes: function (dim) {\n var baseAxis = dim != null && dim !== 'auto' ? this.getAxis(dim) : this.getBaseAxis();\n return {\n baseAxes: [baseAxis],\n otherAxes: [this.getOtherAxis(baseAxis)]\n };\n },\n\n /**\n * Convert a single data item to (x, y) point.\n * Parameter data is an array which the first element is radius and the second is angle\n * @param {Array.} data\n * @param {boolean} [clamp=false]\n * @return {Array.}\n */\n dataToPoint: function (data, clamp) {\n return this.coordToPoint([this._radiusAxis.dataToRadius(data[0], clamp), this._angleAxis.dataToAngle(data[1], clamp)]);\n },\n\n /**\n * Convert a (x, y) point to data\n * @param {Array.} point\n * @param {boolean} [clamp=false]\n * @return {Array.}\n */\n pointToData: function (point, clamp) {\n var coord = this.pointToCoord(point);\n return [this._radiusAxis.radiusToData(coord[0], clamp), this._angleAxis.angleToData(coord[1], clamp)];\n },\n\n /**\n * Convert a (x, y) point to (radius, angle) coord\n * @param {Array.} point\n * @return {Array.}\n */\n pointToCoord: function (point) {\n var dx = point[0] - this.cx;\n var dy = point[1] - this.cy;\n var angleAxis = this.getAngleAxis();\n var extent = angleAxis.getExtent();\n var minAngle = Math.min(extent[0], extent[1]);\n var maxAngle = Math.max(extent[0], extent[1]); // Fix fixed extent in polarCreator\n // FIXME\n\n angleAxis.inverse ? minAngle = maxAngle - 360 : maxAngle = minAngle + 360;\n var radius = Math.sqrt(dx * dx + dy * dy);\n dx /= radius;\n dy /= radius;\n var radian = Math.atan2(-dy, dx) / Math.PI * 180; // move to angleExtent\n\n var dir = radian < minAngle ? 1 : -1;\n\n while (radian < minAngle || radian > maxAngle) {\n radian += dir * 360;\n }\n\n return [radius, radian];\n },\n\n /**\n * Convert a (radius, angle) coord to (x, y) point\n * @param {Array.} coord\n * @return {Array.}\n */\n coordToPoint: function (coord) {\n var radius = coord[0];\n var radian = coord[1] / 180 * Math.PI;\n var x = Math.cos(radian) * radius + this.cx; // Inverse the y\n\n var y = -Math.sin(radian) * radius + this.cy;\n return [x, y];\n },\n\n /**\n * Get ring area of cartesian.\n * Area will have a contain function to determine if a point is in the coordinate system.\n * @return {Ring}\n */\n getArea: function () {\n var angleAxis = this.getAngleAxis();\n var radiusAxis = this.getRadiusAxis();\n var radiusExtent = radiusAxis.getExtent().slice();\n radiusExtent[0] > radiusExtent[1] && radiusExtent.reverse();\n var angleExtent = angleAxis.getExtent();\n var RADIAN = Math.PI / 180;\n return {\n cx: this.cx,\n cy: this.cy,\n r0: radiusExtent[0],\n r: radiusExtent[1],\n startAngle: -angleExtent[0] * RADIAN,\n endAngle: -angleExtent[1] * RADIAN,\n clockwise: angleAxis.inverse,\n contain: function (x, y) {\n // It's a ring shape.\n // Start angle and end angle don't matter\n var dx = x - this.cx;\n var dy = y - this.cy;\n var d2 = dx * dx + dy * dy;\n var r = this.r;\n var r0 = this.r0;\n return d2 <= r * r && d2 >= r0 * r0;\n }\n };\n }\n};\nvar _default = Polar;\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\nrequire(\"./AxisModel\");\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 _default = echarts.extendComponentModel({\n type: 'polar',\n dependencies: ['polarAxis', 'angleAxis'],\n\n /**\n * @type {module:echarts/coord/polar/Polar}\n */\n coordinateSystem: null,\n\n /**\n * @param {string} axisType\n * @return {module:echarts/coord/polar/AxisModel}\n */\n findAxisModel: function (axisType) {\n var foundAxisModel;\n var ecModel = this.ecModel;\n ecModel.eachComponent(axisType, function (axisModel) {\n if (axisModel.getCoordSysModel() === this) {\n foundAxisModel = axisModel;\n }\n }, this);\n return foundAxisModel;\n },\n defaultOption: {\n zlevel: 0,\n z: 0,\n center: ['50%', '50%'],\n radius: '80%'\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar Axis = require(\"../Axis\");\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 RadiusAxis(scale, radiusExtent) {\n Axis.call(this, 'radius', scale, radiusExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = 'category';\n}\n\nRadiusAxis.prototype = {\n constructor: RadiusAxis,\n\n /**\n * @override\n */\n pointToData: function (point, clamp) {\n return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1];\n },\n dataToRadius: Axis.prototype.dataToCoord,\n radiusToData: Axis.prototype.coordToData\n};\nzrUtil.inherits(RadiusAxis, Axis);\nvar _default = RadiusAxis;\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Polar = require(\"./Polar\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _axisHelper = require(\"../../coord/axisHelper\");\n\nvar createScaleByModel = _axisHelper.createScaleByModel;\nvar niceScaleExtent = _axisHelper.niceScaleExtent;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\nrequire(\"./PolarModel\");\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 Axis scale\n\n/**\n * Resize method bound to the polar\n * @param {module:echarts/coord/polar/PolarModel} polarModel\n * @param {module:echarts/ExtensionAPI} api\n */\nfunction resizePolar(polar, polarModel, api) {\n var center = polarModel.get('center');\n var width = api.getWidth();\n var height = api.getHeight();\n polar.cx = parsePercent(center[0], width);\n polar.cy = parsePercent(center[1], height);\n var radiusAxis = polar.getRadiusAxis();\n var size = Math.min(width, height) / 2;\n var radius = polarModel.get('radius');\n\n if (radius == null) {\n radius = [0, '100%'];\n } else if (!zrUtil.isArray(radius)) {\n // r0 = 0\n radius = [0, radius];\n }\n\n radius = [parsePercent(radius[0], size), parsePercent(radius[1], size)];\n radiusAxis.inverse ? radiusAxis.setExtent(radius[1], radius[0]) : radiusAxis.setExtent(radius[0], radius[1]);\n}\n/**\n * Update polar\n */\n\n\nfunction updatePolarScale(ecModel, api) {\n var polar = this;\n var angleAxis = polar.getAngleAxis();\n var radiusAxis = polar.getRadiusAxis(); // Reset scale\n\n angleAxis.scale.setExtent(Infinity, -Infinity);\n radiusAxis.scale.setExtent(Infinity, -Infinity);\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.coordinateSystem === polar) {\n var data = seriesModel.getData();\n zrUtil.each(data.mapDimension('radius', true), function (dim) {\n radiusAxis.scale.unionExtentFromData(data, getStackedDimension(data, dim));\n });\n zrUtil.each(data.mapDimension('angle', true), function (dim) {\n angleAxis.scale.unionExtentFromData(data, getStackedDimension(data, dim));\n });\n }\n });\n niceScaleExtent(angleAxis.scale, angleAxis.model);\n niceScaleExtent(radiusAxis.scale, radiusAxis.model); // Fix extent of category angle axis\n\n if (angleAxis.type === 'category' && !angleAxis.onBand) {\n var extent = angleAxis.getExtent();\n var diff = 360 / angleAxis.scale.count();\n angleAxis.inverse ? extent[1] += diff : extent[1] -= diff;\n angleAxis.setExtent(extent[0], extent[1]);\n }\n}\n/**\n * Set common axis properties\n * @param {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n * @param {module:echarts/coord/polar/AxisModel}\n * @inner\n */\n\n\nfunction setAxis(axis, axisModel) {\n axis.type = axisModel.get('type');\n axis.scale = createScaleByModel(axisModel);\n axis.onBand = axisModel.get('boundaryGap') && axis.type === 'category';\n axis.inverse = axisModel.get('inverse');\n\n if (axisModel.mainType === 'angleAxis') {\n axis.inverse ^= axisModel.get('clockwise');\n var startAngle = axisModel.get('startAngle');\n axis.setExtent(startAngle, startAngle + (axis.inverse ? -360 : 360));\n } // Inject axis instance\n\n\n axisModel.axis = axis;\n axis.model = axisModel;\n}\n\nvar polarCreator = {\n dimensions: Polar.prototype.dimensions,\n create: function (ecModel, api) {\n var polarList = [];\n ecModel.eachComponent('polar', function (polarModel, idx) {\n var polar = new Polar(idx); // Inject resize and update method\n\n polar.update = updatePolarScale;\n var radiusAxis = polar.getRadiusAxis();\n var angleAxis = polar.getAngleAxis();\n var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n var angleAxisModel = polarModel.findAxisModel('angleAxis');\n setAxis(radiusAxis, radiusAxisModel);\n setAxis(angleAxis, angleAxisModel);\n resizePolar(polar, polarModel, api);\n polarList.push(polar);\n polarModel.coordinateSystem = polar;\n polar.model = polarModel;\n }); // Inject coordinateSystem to series\n\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.get('coordinateSystem') === 'polar') {\n var polarModel = ecModel.queryComponents({\n mainType: 'polar',\n index: seriesModel.get('polarIndex'),\n id: seriesModel.get('polarId')\n })[0];\n seriesModel.coordinateSystem = polarModel.coordinateSystem;\n }\n });\n return polarList;\n }\n};\nCoordinateSystem.register('polar', polarCreator);","\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 dataToCoordSize(dataSize, dataItem) {\n // dataItem is necessary in log axis.\n return zrUtil.map(['Radius', 'Angle'], function (dim, dimIdx) {\n var axis = this['get' + dim + 'Axis']();\n var val = dataItem[dimIdx];\n var halfSize = dataSize[dimIdx] / 2;\n var method = 'dataTo' + dim;\n var result = axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis[method](val - halfSize) - axis[method](val + halfSize));\n\n if (dim === 'Angle') {\n result = result * Math.PI / 180;\n }\n\n return result;\n }, this);\n}\n\nfunction _default(coordSys) {\n var radiusAxis = coordSys.getRadiusAxis();\n var angleAxis = coordSys.getAngleAxis();\n var radius = radiusAxis.getExtent();\n radius[0] > radius[1] && radius.reverse();\n return {\n coordSys: {\n type: 'polar',\n cx: coordSys.cx,\n cy: coordSys.cy,\n r: radius[1],\n r0: radius[0]\n },\n api: {\n coord: zrUtil.bind(function (data) {\n var radius = radiusAxis.dataToRadius(data[0]);\n var angle = angleAxis.dataToAngle(data[1]);\n var coord = coordSys.coordToPoint([radius, angle]);\n coord.push(radius, angle * Math.PI / 180);\n return coord;\n }),\n size: zrUtil.bind(dataToCoordSize, coordSys)\n }\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar Axis = require(\"../Axis\");\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 IndicatorAxis(dim, scale, radiusExtent) {\n Axis.call(this, dim, scale, radiusExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = 'value';\n this.angle = 0;\n /**\n * Indicator name\n * @type {string}\n */\n\n this.name = '';\n /**\n * @type {module:echarts/model/Model}\n */\n\n this.model;\n}\n\nzrUtil.inherits(IndicatorAxis, Axis);\nvar _default = IndicatorAxis;\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 IndicatorAxis = require(\"./IndicatorAxis\");\n\nvar IntervalScale = require(\"../../scale/Interval\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar _axisHelper = require(\"../axisHelper\");\n\nvar getScaleExtent = _axisHelper.getScaleExtent;\nvar niceScaleExtent = _axisHelper.niceScaleExtent;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar LogScale = require(\"../../scale/Log\");\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 clockwise\nfunction Radar(radarModel, ecModel, api) {\n this._model = radarModel;\n /**\n * Radar dimensions\n * @type {Array.}\n */\n\n this.dimensions = [];\n this._indicatorAxes = zrUtil.map(radarModel.getIndicatorModels(), function (indicatorModel, idx) {\n var dim = 'indicator_' + idx;\n var indicatorAxis = new IndicatorAxis(dim, indicatorModel.get('axisType') === 'log' ? new LogScale() : new IntervalScale());\n indicatorAxis.name = indicatorModel.get('name'); // Inject model and axis\n\n indicatorAxis.model = indicatorModel;\n indicatorModel.axis = indicatorAxis;\n this.dimensions.push(dim);\n return indicatorAxis;\n }, this);\n this.resize(radarModel, api);\n /**\n * @type {number}\n * @readOnly\n */\n\n this.cx;\n /**\n * @type {number}\n * @readOnly\n */\n\n this.cy;\n /**\n * @type {number}\n * @readOnly\n */\n\n this.r;\n /**\n * @type {number}\n * @readOnly\n */\n\n this.r0;\n /**\n * @type {number}\n * @readOnly\n */\n\n this.startAngle;\n}\n\nRadar.prototype.getIndicatorAxes = function () {\n return this._indicatorAxes;\n};\n\nRadar.prototype.dataToPoint = function (value, indicatorIndex) {\n var indicatorAxis = this._indicatorAxes[indicatorIndex];\n return this.coordToPoint(indicatorAxis.dataToCoord(value), indicatorIndex);\n};\n\nRadar.prototype.coordToPoint = function (coord, indicatorIndex) {\n var indicatorAxis = this._indicatorAxes[indicatorIndex];\n var angle = indicatorAxis.angle;\n var x = this.cx + coord * Math.cos(angle);\n var y = this.cy - coord * Math.sin(angle);\n return [x, y];\n};\n\nRadar.prototype.pointToData = function (pt) {\n var dx = pt[0] - this.cx;\n var dy = pt[1] - this.cy;\n var radius = Math.sqrt(dx * dx + dy * dy);\n dx /= radius;\n dy /= radius;\n var radian = Math.atan2(-dy, dx); // Find the closest angle\n // FIXME index can calculated directly\n\n var minRadianDiff = Infinity;\n var closestAxis;\n var closestAxisIdx = -1;\n\n for (var i = 0; i < this._indicatorAxes.length; i++) {\n var indicatorAxis = this._indicatorAxes[i];\n var diff = Math.abs(radian - indicatorAxis.angle);\n\n if (diff < minRadianDiff) {\n closestAxis = indicatorAxis;\n closestAxisIdx = i;\n minRadianDiff = diff;\n }\n }\n\n return [closestAxisIdx, +(closestAxis && closestAxis.coordToData(radius))];\n};\n\nRadar.prototype.resize = function (radarModel, api) {\n var center = radarModel.get('center');\n var viewWidth = api.getWidth();\n var viewHeight = api.getHeight();\n var viewSize = Math.min(viewWidth, viewHeight) / 2;\n this.cx = numberUtil.parsePercent(center[0], viewWidth);\n this.cy = numberUtil.parsePercent(center[1], viewHeight);\n this.startAngle = radarModel.get('startAngle') * Math.PI / 180; // radius may be single value like `20`, `'80%'`, or array like `[10, '80%']`\n\n var radius = radarModel.get('radius');\n\n if (typeof radius === 'string' || typeof radius === 'number') {\n radius = [0, radius];\n }\n\n this.r0 = numberUtil.parsePercent(radius[0], viewSize);\n this.r = numberUtil.parsePercent(radius[1], viewSize);\n zrUtil.each(this._indicatorAxes, function (indicatorAxis, idx) {\n indicatorAxis.setExtent(this.r0, this.r);\n var angle = this.startAngle + idx * Math.PI * 2 / this._indicatorAxes.length; // Normalize to [-PI, PI]\n\n angle = Math.atan2(Math.sin(angle), Math.cos(angle));\n indicatorAxis.angle = angle;\n }, this);\n};\n\nRadar.prototype.update = function (ecModel, api) {\n var indicatorAxes = this._indicatorAxes;\n var radarModel = this._model;\n zrUtil.each(indicatorAxes, function (indicatorAxis) {\n indicatorAxis.scale.setExtent(Infinity, -Infinity);\n });\n ecModel.eachSeriesByType('radar', function (radarSeries, idx) {\n if (radarSeries.get('coordinateSystem') !== 'radar' || ecModel.getComponent('radar', radarSeries.get('radarIndex')) !== radarModel) {\n return;\n }\n\n var data = radarSeries.getData();\n zrUtil.each(indicatorAxes, function (indicatorAxis) {\n indicatorAxis.scale.unionExtentFromData(data, data.mapDimension(indicatorAxis.dim));\n });\n }, this);\n var splitNumber = radarModel.get('splitNumber');\n\n function increaseInterval(interval) {\n var exp10 = Math.pow(10, Math.floor(Math.log(interval) / Math.LN10)); // Increase interval\n\n var f = interval / exp10;\n\n if (f === 2) {\n f = 5;\n } else {\n // f is 2 or 5\n f *= 2;\n }\n\n return f * exp10;\n } // Force all the axis fixing the maxSplitNumber.\n\n\n zrUtil.each(indicatorAxes, function (indicatorAxis, idx) {\n var rawExtent = getScaleExtent(indicatorAxis.scale, indicatorAxis.model).extent;\n niceScaleExtent(indicatorAxis.scale, indicatorAxis.model);\n var axisModel = indicatorAxis.model;\n var scale = indicatorAxis.scale;\n var fixedMin = axisModel.getMin();\n var fixedMax = axisModel.getMax();\n var interval = scale.getInterval();\n\n if (fixedMin != null && fixedMax != null) {\n // User set min, max, divide to get new interval\n scale.setExtent(+fixedMin, +fixedMax);\n scale.setInterval((fixedMax - fixedMin) / splitNumber);\n } else if (fixedMin != null) {\n var max; // User set min, expand extent on the other side\n\n do {\n max = fixedMin + interval * splitNumber;\n scale.setExtent(+fixedMin, max); // Interval must been set after extent\n // FIXME\n\n scale.setInterval(interval);\n interval = increaseInterval(interval);\n } while (max < rawExtent[1] && isFinite(max) && isFinite(rawExtent[1]));\n } else if (fixedMax != null) {\n var min; // User set min, expand extent on the other side\n\n do {\n min = fixedMax - interval * splitNumber;\n scale.setExtent(min, +fixedMax);\n scale.setInterval(interval);\n interval = increaseInterval(interval);\n } while (min > rawExtent[0] && isFinite(min) && isFinite(rawExtent[0]));\n } else {\n var nicedSplitNumber = scale.getTicks().length - 1;\n\n if (nicedSplitNumber > splitNumber) {\n interval = increaseInterval(interval);\n } // TODO\n\n\n var max = Math.ceil(rawExtent[1] / interval) * interval;\n var min = numberUtil.round(max - interval * splitNumber);\n scale.setExtent(min, max);\n scale.setInterval(interval);\n }\n });\n};\n/**\n * Radar dimensions is based on the data\n * @type {Array}\n */\n\n\nRadar.dimensions = [];\n\nRadar.create = function (ecModel, api) {\n var radarList = [];\n ecModel.eachComponent('radar', function (radarModel) {\n var radar = new Radar(radarModel, ecModel, api);\n radarList.push(radar);\n radarModel.coordinateSystem = radar;\n });\n ecModel.eachSeriesByType('radar', function (radarSeries) {\n if (radarSeries.get('coordinateSystem') === 'radar') {\n // Inject coordinate system\n radarSeries.coordinateSystem = radarList[radarSeries.get('radarIndex') || 0];\n }\n });\n return radarList;\n};\n\nCoordinateSystem.register('radar', Radar);\nvar _default = Radar;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar axisDefault = require(\"../axisDefault\");\n\nvar Model = require(\"../../model/Model\");\n\nvar axisModelCommonMixin = require(\"../axisModelCommonMixin\");\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 valueAxisDefault = axisDefault.valueAxis;\n\nfunction defaultsShow(opt, show) {\n return zrUtil.defaults({\n show: show\n }, opt);\n}\n\nvar RadarModel = echarts.extendComponentModel({\n type: 'radar',\n optionUpdated: function () {\n var boundaryGap = this.get('boundaryGap');\n var splitNumber = this.get('splitNumber');\n var scale = this.get('scale');\n var axisLine = this.get('axisLine');\n var axisTick = this.get('axisTick');\n var axisType = this.get('axisType');\n var axisLabel = this.get('axisLabel');\n var nameTextStyle = this.get('name');\n var showName = this.get('name.show');\n var nameFormatter = this.get('name.formatter');\n var nameGap = this.get('nameGap');\n var triggerEvent = this.get('triggerEvent');\n var indicatorModels = zrUtil.map(this.get('indicator') || [], function (indicatorOpt) {\n // PENDING\n if (indicatorOpt.max != null && indicatorOpt.max > 0 && !indicatorOpt.min) {\n indicatorOpt.min = 0;\n } else if (indicatorOpt.min != null && indicatorOpt.min < 0 && !indicatorOpt.max) {\n indicatorOpt.max = 0;\n }\n\n var iNameTextStyle = nameTextStyle;\n\n if (indicatorOpt.color != null) {\n iNameTextStyle = zrUtil.defaults({\n color: indicatorOpt.color\n }, nameTextStyle);\n } // Use same configuration\n\n\n indicatorOpt = zrUtil.merge(zrUtil.clone(indicatorOpt), {\n boundaryGap: boundaryGap,\n splitNumber: splitNumber,\n scale: scale,\n axisLine: axisLine,\n axisTick: axisTick,\n axisType: axisType,\n axisLabel: axisLabel,\n // Compatible with 2 and use text\n name: indicatorOpt.text,\n nameLocation: 'end',\n nameGap: nameGap,\n // min: 0,\n nameTextStyle: iNameTextStyle,\n triggerEvent: triggerEvent\n }, false);\n\n if (!showName) {\n indicatorOpt.name = '';\n }\n\n if (typeof nameFormatter === 'string') {\n var indName = indicatorOpt.name;\n indicatorOpt.name = nameFormatter.replace('{value}', indName != null ? indName : '');\n } else if (typeof nameFormatter === 'function') {\n indicatorOpt.name = nameFormatter(indicatorOpt.name, indicatorOpt);\n }\n\n var model = zrUtil.extend(new Model(indicatorOpt, null, this.ecModel), axisModelCommonMixin); // For triggerEvent.\n\n model.mainType = 'radar';\n model.componentIndex = this.componentIndex;\n return model;\n }, this);\n\n this.getIndicatorModels = function () {\n return indicatorModels;\n };\n },\n defaultOption: {\n zlevel: 0,\n z: 0,\n center: ['50%', '50%'],\n radius: '75%',\n startAngle: 90,\n name: {\n show: true // formatter: null\n // textStyle: {}\n\n },\n boundaryGap: [0, 0],\n splitNumber: 5,\n nameGap: 15,\n scale: false,\n // Polygon or circle\n shape: 'polygon',\n axisLine: zrUtil.merge({\n lineStyle: {\n color: '#bbb'\n }\n }, valueAxisDefault.axisLine),\n axisLabel: defaultsShow(valueAxisDefault.axisLabel, false),\n axisTick: defaultsShow(valueAxisDefault.axisTick, false),\n axisType: 'interval',\n splitLine: defaultsShow(valueAxisDefault.splitLine, true),\n splitArea: defaultsShow(valueAxisDefault.splitArea, true),\n // {text, min, max}\n indicator: []\n }\n});\nvar _default = RadarModel;\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 ComponentModel = require(\"../../model/Component\");\n\nvar axisModelCreator = require(\"../axisModelCreator\");\n\nvar axisModelCommonMixin = require(\"../axisModelCommonMixin\");\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 AxisModel = ComponentModel.extend({\n type: 'singleAxis',\n layoutMode: 'box',\n\n /**\n * @type {module:echarts/coord/single/SingleAxis}\n */\n axis: null,\n\n /**\n * @type {module:echarts/coord/single/Single}\n */\n coordinateSystem: null,\n\n /**\n * @override\n */\n getCoordSysModel: function () {\n return this;\n }\n});\nvar defaultOption = {\n left: '5%',\n top: '5%',\n right: '5%',\n bottom: '5%',\n type: 'value',\n position: 'bottom',\n orient: 'horizontal',\n axisLine: {\n show: true,\n lineStyle: {\n width: 1,\n type: 'solid'\n }\n },\n // Single coordinate system and single axis is the,\n // which is used as the parent tooltip model.\n // same model, so we set default tooltip show as true.\n tooltip: {\n show: true\n },\n axisTick: {\n show: true,\n length: 6,\n lineStyle: {\n width: 1\n }\n },\n axisLabel: {\n show: true,\n interval: 'auto'\n },\n splitLine: {\n show: true,\n lineStyle: {\n type: 'dashed',\n opacity: 0.2\n }\n }\n};\n\nfunction getAxisType(axisName, option) {\n return option.type || (option.data ? 'category' : 'value');\n}\n\nzrUtil.merge(AxisModel.prototype, axisModelCommonMixin);\naxisModelCreator('single', AxisModel, getAxisType, defaultOption);\nvar _default = AxisModel;\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 SingleAxis = require(\"./SingleAxis\");\n\nvar axisHelper = require(\"../axisHelper\");\n\nvar _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\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 * Single coordinates system.\n */\n\n/**\n * Create a single coordinates system.\n *\n * @param {module:echarts/coord/single/AxisModel} axisModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\nfunction Single(axisModel, ecModel, api) {\n /**\n * @type {string}\n * @readOnly\n */\n this.dimension = 'single';\n /**\n * Add it just for draw tooltip.\n *\n * @type {Array.}\n * @readOnly\n */\n\n this.dimensions = ['single'];\n /**\n * @private\n * @type {module:echarts/coord/single/SingleAxis}.\n */\n\n this._axis = null;\n /**\n * @private\n * @type {module:zrender/core/BoundingRect}\n */\n\n this._rect;\n\n this._init(axisModel, ecModel, api);\n /**\n * @type {module:echarts/coord/single/AxisModel}\n */\n\n\n this.model = axisModel;\n}\n\nSingle.prototype = {\n type: 'singleAxis',\n axisPointerEnabled: true,\n constructor: Single,\n\n /**\n * Initialize single coordinate system.\n *\n * @param {module:echarts/coord/single/AxisModel} axisModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @private\n */\n _init: function (axisModel, ecModel, api) {\n var dim = this.dimension;\n var axis = new SingleAxis(dim, axisHelper.createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisModel.get('position'));\n var isCategory = axis.type === 'category';\n axis.onBand = isCategory && axisModel.get('boundaryGap');\n axis.inverse = axisModel.get('inverse');\n axis.orient = axisModel.get('orient');\n axisModel.axis = axis;\n axis.model = axisModel;\n axis.coordinateSystem = this;\n this._axis = axis;\n },\n\n /**\n * Update axis scale after data processed\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n update: function (ecModel, api) {\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.coordinateSystem === this) {\n var data = seriesModel.getData();\n each(data.mapDimension(this.dimension, true), function (dim) {\n this._axis.scale.unionExtentFromData(data, dim);\n }, this);\n axisHelper.niceScaleExtent(this._axis.scale, this._axis.model);\n }\n }, this);\n },\n\n /**\n * Resize the single coordinate system.\n *\n * @param {module:echarts/coord/single/AxisModel} axisModel\n * @param {module:echarts/ExtensionAPI} api\n */\n resize: function (axisModel, api) {\n this._rect = getLayoutRect({\n left: axisModel.get('left'),\n top: axisModel.get('top'),\n right: axisModel.get('right'),\n bottom: axisModel.get('bottom'),\n width: axisModel.get('width'),\n height: axisModel.get('height')\n }, {\n width: api.getWidth(),\n height: api.getHeight()\n });\n\n this._adjustAxis();\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getRect: function () {\n return this._rect;\n },\n\n /**\n * @private\n */\n _adjustAxis: function () {\n var rect = this._rect;\n var axis = this._axis;\n var isHorizontal = axis.isHorizontal();\n var extent = isHorizontal ? [0, rect.width] : [0, rect.height];\n var idx = axis.reverse ? 1 : 0;\n axis.setExtent(extent[idx], extent[1 - idx]);\n\n this._updateAxisTransform(axis, isHorizontal ? rect.x : rect.y);\n },\n\n /**\n * @param {module:echarts/coord/single/SingleAxis} axis\n * @param {number} coordBase\n */\n _updateAxisTransform: function (axis, coordBase) {\n var axisExtent = axis.getExtent();\n var extentSum = axisExtent[0] + axisExtent[1];\n var isHorizontal = axis.isHorizontal();\n axis.toGlobalCoord = isHorizontal ? function (coord) {\n return coord + coordBase;\n } : function (coord) {\n return extentSum - coord + coordBase;\n };\n axis.toLocalCoord = isHorizontal ? function (coord) {\n return coord - coordBase;\n } : function (coord) {\n return extentSum - coord + coordBase;\n };\n },\n\n /**\n * Get axis.\n *\n * @return {module:echarts/coord/single/SingleAxis}\n */\n getAxis: function () {\n return this._axis;\n },\n\n /**\n * Get axis, add it just for draw tooltip.\n *\n * @return {[type]} [description]\n */\n getBaseAxis: function () {\n return this._axis;\n },\n\n /**\n * @return {Array.}\n */\n getAxes: function () {\n return [this._axis];\n },\n\n /**\n * @return {Object} {baseAxes: [], otherAxes: []}\n */\n getTooltipAxes: function () {\n return {\n baseAxes: [this.getAxis()]\n };\n },\n\n /**\n * If contain point.\n *\n * @param {Array.} point\n * @return {boolean}\n */\n containPoint: function (point) {\n var rect = this.getRect();\n var axis = this.getAxis();\n var orient = axis.orient;\n\n if (orient === 'horizontal') {\n return axis.contain(axis.toLocalCoord(point[0])) && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n } else {\n return axis.contain(axis.toLocalCoord(point[1])) && point[0] >= rect.y && point[0] <= rect.y + rect.height;\n }\n },\n\n /**\n * @param {Array.} point\n * @return {Array.}\n */\n pointToData: function (point) {\n var axis = this.getAxis();\n return [axis.coordToData(axis.toLocalCoord(point[axis.orient === 'horizontal' ? 0 : 1]))];\n },\n\n /**\n * Convert the series data to concrete point.\n *\n * @param {number|Array.} val\n * @return {Array.}\n */\n dataToPoint: function (val) {\n var axis = this.getAxis();\n var rect = this.getRect();\n var pt = [];\n var idx = axis.orient === 'horizontal' ? 0 : 1;\n\n if (val instanceof Array) {\n val = val[0];\n }\n\n pt[idx] = axis.toGlobalCoord(axis.dataToCoord(+val));\n pt[1 - idx] = idx === 0 ? rect.y + rect.height / 2 : rect.x + rect.width / 2;\n return pt;\n }\n};\nvar _default = Single;\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 Axis = require(\"../Axis\");\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 * @constructor module:echarts/coord/single/SingleAxis\n * @extends {module:echarts/coord/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.} coordExtent\n * @param {string} axisType\n * @param {string} position\n */\nvar SingleAxis = function (dim, scale, coordExtent, axisType, position) {\n Axis.call(this, dim, scale, coordExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = axisType || 'value';\n /**\n * Axis position\n * - 'top'\n * - 'bottom'\n * - 'left'\n * - 'right'\n * @type {string}\n */\n\n this.position = position || 'bottom';\n /**\n * Axis orient\n * - 'horizontal'\n * - 'vertical'\n * @type {[type]}\n */\n\n this.orient = null;\n};\n\nSingleAxis.prototype = {\n constructor: SingleAxis,\n\n /**\n * Axis model\n * @type {module:echarts/coord/single/AxisModel}\n */\n model: null,\n\n /**\n * Judge the orient of the axis.\n * @return {boolean}\n */\n isHorizontal: function () {\n var position = this.position;\n return position === 'top' || position === 'bottom';\n },\n\n /**\n * @override\n */\n pointToData: function (point, clamp) {\n return this.coordinateSystem.pointToData(point, clamp)[0];\n },\n\n /**\n * Convert the local coord(processed by dataToCoord())\n * to global coord(concrete pixel coord).\n * designated by module:echarts/coord/single/Single.\n * @type {Function}\n */\n toGlobalCoord: null,\n\n /**\n * Convert the global coord to local coord.\n * designated by module:echarts/coord/single/Single.\n * @type {Function}\n */\n toLocalCoord: null\n};\nzrUtil.inherits(SingleAxis, Axis);\nvar _default = SingleAxis;\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\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 dataToCoordSize(dataSize, dataItem) {\n // dataItem is necessary in log axis.\n var axis = this.getAxis();\n var val = dataItem instanceof Array ? dataItem[0] : dataItem;\n var halfSize = (dataSize instanceof Array ? dataSize[0] : dataSize) / 2;\n return axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\n}\n\nfunction _default(coordSys) {\n var rect = coordSys.getRect();\n return {\n coordSys: {\n type: 'singleAxis',\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n },\n api: {\n coord: function (val) {\n // do not provide \"out\" param\n return coordSys.dataToPoint(val);\n },\n size: zrUtil.bind(dataToCoordSize, coordSys)\n }\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 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 * @param {Object} opt {labelInside}\n * @return {Object} {\n * position, rotation, labelDirection, labelOffset,\n * tickDirection, labelRotate, z2\n * }\n */\nfunction layout(axisModel, opt) {\n opt = opt || {};\n var single = axisModel.coordinateSystem;\n var axis = axisModel.axis;\n var layout = {};\n var axisPosition = axis.position;\n var orient = axis.orient;\n var rect = single.getRect();\n var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\n var positionMap = {\n horizontal: {\n top: rectBound[2],\n bottom: rectBound[3]\n },\n vertical: {\n left: rectBound[0],\n right: rectBound[1]\n }\n };\n layout.position = [orient === 'vertical' ? positionMap.vertical[axisPosition] : rectBound[0], orient === 'horizontal' ? positionMap.horizontal[axisPosition] : rectBound[3]];\n var r = {\n horizontal: 0,\n vertical: 1\n };\n layout.rotation = Math.PI / 2 * r[orient];\n var directionMap = {\n top: -1,\n bottom: 1,\n right: 1,\n left: -1\n };\n layout.labelDirection = layout.tickDirection = layout.nameDirection = directionMap[axisPosition];\n\n if (axisModel.get('axisTick.inside')) {\n layout.tickDirection = -layout.tickDirection;\n }\n\n if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {\n layout.labelDirection = -layout.labelDirection;\n }\n\n var labelRotation = opt.rotate;\n labelRotation == null && (labelRotation = axisModel.get('axisLabel.rotate'));\n layout.labelRotation = axisPosition === 'top' ? -labelRotation : labelRotation;\n layout.z2 = 1;\n return layout;\n}\n\nexports.layout = layout;","\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 Single = require(\"./Single\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\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 * Single coordinate system creator.\n */\n\n/**\n * Create single coordinate system and inject it into seriesModel.\n *\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @return {Array.}\n */\nfunction create(ecModel, api) {\n var singles = [];\n ecModel.eachComponent('singleAxis', function (axisModel, idx) {\n var single = new Single(axisModel, ecModel, api);\n single.name = 'single_' + idx;\n single.resize(axisModel, api);\n axisModel.coordinateSystem = single;\n singles.push(single);\n });\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.get('coordinateSystem') === 'singleAxis') {\n var singleAxisModel = ecModel.queryComponents({\n mainType: 'singleAxis',\n index: seriesModel.get('singleAxisIndex'),\n id: seriesModel.get('singleAxisId')\n })[0];\n seriesModel.coordinateSystem = singleAxisModel && singleAxisModel.coordinateSystem;\n }\n });\n return singles;\n}\n\nCoordinateSystem.register('single', {\n create: create,\n dimensions: Single.prototype.dimensions\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* 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 defaultKeyGetter(item) {\n return item;\n}\n/**\n * @param {Array} oldArr\n * @param {Array} newArr\n * @param {Function} oldKeyGetter\n * @param {Function} newKeyGetter\n * @param {Object} [context] Can be visited by this.context in callback.\n */\n\n\nfunction DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter, context) {\n this._old = oldArr;\n this._new = newArr;\n this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;\n this._newKeyGetter = newKeyGetter || defaultKeyGetter;\n this.context = context;\n}\n\nDataDiffer.prototype = {\n constructor: DataDiffer,\n\n /**\n * Callback function when add a data\n */\n add: function (func) {\n this._add = func;\n return this;\n },\n\n /**\n * Callback function when update a data\n */\n update: function (func) {\n this._update = func;\n return this;\n },\n\n /**\n * Callback function when remove a data\n */\n remove: function (func) {\n this._remove = func;\n return this;\n },\n execute: function () {\n var oldArr = this._old;\n var newArr = this._new;\n var oldDataIndexMap = {};\n var newDataIndexMap = {};\n var oldDataKeyArr = [];\n var newDataKeyArr = [];\n var i;\n initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter', this);\n initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter', this);\n\n for (i = 0; i < oldArr.length; i++) {\n var key = oldDataKeyArr[i];\n var idx = newDataIndexMap[key]; // idx can never be empty array here. see 'set null' logic below.\n\n if (idx != null) {\n // Consider there is duplicate key (for example, use dataItem.name as key).\n // We should make sure every item in newArr and oldArr can be visited.\n var len = idx.length;\n\n if (len) {\n len === 1 && (newDataIndexMap[key] = null);\n idx = idx.shift();\n } else {\n newDataIndexMap[key] = null;\n }\n\n this._update && this._update(idx, i);\n } else {\n this._remove && this._remove(i);\n }\n }\n\n for (var i = 0; i < newDataKeyArr.length; i++) {\n var key = newDataKeyArr[i];\n\n if (newDataIndexMap.hasOwnProperty(key)) {\n var idx = newDataIndexMap[key];\n\n if (idx == null) {\n continue;\n } // idx can never be empty array here. see 'set null' logic above.\n\n\n if (!idx.length) {\n this._add && this._add(idx);\n } else {\n for (var j = 0, len = idx.length; j < len; j++) {\n this._add && this._add(idx[j]);\n }\n }\n }\n }\n }\n};\n\nfunction initIndexMap(arr, map, keyArr, keyGetterName, dataDiffer) {\n for (var i = 0; i < arr.length; i++) {\n // Add prefix to avoid conflict with Object.prototype.\n var key = '_ec_' + dataDiffer[keyGetterName](arr[i], i);\n var existence = map[key];\n\n if (existence == null) {\n keyArr.push(key);\n map[key] = i;\n } else {\n if (!existence.length) {\n map[key] = existence = [existence];\n }\n\n existence.push(i);\n }\n }\n}\n\nvar _default = DataDiffer;\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\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 * @class\n * @param {Object|DataDimensionInfo} [opt] All of the fields will be shallow copied.\n */\nfunction DataDimensionInfo(opt) {\n if (opt != null) {\n zrUtil.extend(this, opt);\n }\n /**\n * Dimension name.\n * Mandatory.\n * @type {string}\n */\n // this.name;\n\n /**\n * The origin name in dimsDef, see source helper.\n * If displayName given, the tooltip will displayed vertically.\n * Optional.\n * @type {string}\n */\n // this.displayName;\n\n /**\n * Which coordSys dimension this dimension mapped to.\n * A `coordDim` can be a \"coordSysDim\" that the coordSys required\n * (for example, an item in `coordSysDims` of `model/referHelper#CoordSysInfo`),\n * or an generated \"extra coord name\" if does not mapped to any \"coordSysDim\"\n * (That is determined by whether `isExtraCoord` is `true`).\n * Mandatory.\n * @type {string}\n */\n // this.coordDim;\n\n /**\n * The index of this dimension in `series.encode[coordDim]`.\n * Mandatory.\n * @type {number}\n */\n // this.coordDimIndex;\n\n /**\n * Dimension type. The enumerable values are the key of\n * `dataCtors` of `data/List`.\n * Optional.\n * @type {string}\n */\n // this.type;\n\n /**\n * This index of this dimension info in `data/List#_dimensionInfos`.\n * Mandatory after added to `data/List`.\n * @type {number}\n */\n // this.index;\n\n /**\n * The format of `otherDims` is:\n * ```js\n * {\n * tooltip: number optional,\n * label: number optional,\n * itemName: number optional,\n * seriesName: number optional,\n * }\n * ```\n *\n * A `series.encode` can specified these fields:\n * ```js\n * encode: {\n * // \"3, 1, 5\" is the index of data dimension.\n * tooltip: [3, 1, 5],\n * label: [0, 3],\n * ...\n * }\n * ```\n * `otherDims` is the parse result of the `series.encode` above, like:\n * ```js\n * // Suppose the index of this data dimension is `3`.\n * this.otherDims = {\n * // `3` is at the index `0` of the `encode.tooltip`\n * tooltip: 0,\n * // `3` is at the index `1` of the `encode.tooltip`\n * label: 1\n * };\n * ```\n *\n * This prop should never be `null`/`undefined` after initialized.\n * @type {Object}\n */\n\n\n this.otherDims = {};\n /**\n * Be `true` if this dimension is not mapped to any \"coordSysDim\" that the\n * \"coordSys\" required.\n * Mandatory.\n * @type {boolean}\n */\n // this.isExtraCoord;\n\n /**\n * @type {module:data/OrdinalMeta}\n */\n // this.ordinalMeta;\n\n /**\n * Whether to create inverted indices.\n * @type {boolean}\n */\n // this.createInvertedIndices;\n}\n\n;\nvar _default = DataDimensionInfo;\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 _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassCheck = _clazz.enableClassCheck;\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// id may be function name of Object, add a prefix to avoid this problem.\nfunction generateNodeKey(id) {\n return '_EC_' + id;\n}\n/**\n * @alias module:echarts/data/Graph\n * @constructor\n * @param {boolean} directed\n */\n\n\nvar Graph = function (directed) {\n /**\n * 是否是有向图\n * @type {boolean}\n * @private\n */\n this._directed = directed || false;\n /**\n * @type {Array.}\n * @readOnly\n */\n\n this.nodes = [];\n /**\n * @type {Array.}\n * @readOnly\n */\n\n this.edges = [];\n /**\n * @type {Object.}\n * @private\n */\n\n this._nodesMap = {};\n /**\n * @type {Object.}\n * @private\n */\n\n this._edgesMap = {};\n /**\n * @type {module:echarts/data/List}\n * @readOnly\n */\n\n this.data;\n /**\n * @type {module:echarts/data/List}\n * @readOnly\n */\n\n this.edgeData;\n};\n\nvar graphProto = Graph.prototype;\n/**\n * @type {string}\n */\n\ngraphProto.type = 'graph';\n/**\n * If is directed graph\n * @return {boolean}\n */\n\ngraphProto.isDirected = function () {\n return this._directed;\n};\n/**\n * Add a new node\n * @param {string} id\n * @param {number} [dataIndex]\n */\n\n\ngraphProto.addNode = function (id, dataIndex) {\n id = id == null ? '' + dataIndex : '' + id;\n var nodesMap = this._nodesMap;\n\n if (nodesMap[generateNodeKey(id)]) {\n return;\n }\n\n var node = new Node(id, dataIndex);\n node.hostGraph = this;\n this.nodes.push(node);\n nodesMap[generateNodeKey(id)] = node;\n return node;\n};\n/**\n * Get node by data index\n * @param {number} dataIndex\n * @return {module:echarts/data/Graph~Node}\n */\n\n\ngraphProto.getNodeByIndex = function (dataIndex) {\n var rawIdx = this.data.getRawIndex(dataIndex);\n return this.nodes[rawIdx];\n};\n/**\n * Get node by id\n * @param {string} id\n * @return {module:echarts/data/Graph.Node}\n */\n\n\ngraphProto.getNodeById = function (id) {\n return this._nodesMap[generateNodeKey(id)];\n};\n/**\n * Add a new edge\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {number} [dataIndex=-1]\n * @return {module:echarts/data/Graph.Edge}\n */\n\n\ngraphProto.addEdge = function (n1, n2, dataIndex) {\n var nodesMap = this._nodesMap;\n var edgesMap = this._edgesMap; // PNEDING\n\n if (typeof n1 === 'number') {\n n1 = this.nodes[n1];\n }\n\n if (typeof n2 === 'number') {\n n2 = this.nodes[n2];\n }\n\n if (!Node.isInstance(n1)) {\n n1 = nodesMap[generateNodeKey(n1)];\n }\n\n if (!Node.isInstance(n2)) {\n n2 = nodesMap[generateNodeKey(n2)];\n }\n\n if (!n1 || !n2) {\n return;\n }\n\n var key = n1.id + '-' + n2.id;\n var edge = new Edge(n1, n2, dataIndex);\n edge.hostGraph = this;\n\n if (this._directed) {\n n1.outEdges.push(edge);\n n2.inEdges.push(edge);\n }\n\n n1.edges.push(edge);\n\n if (n1 !== n2) {\n n2.edges.push(edge);\n }\n\n this.edges.push(edge);\n edgesMap[key] = edge;\n return edge;\n};\n/**\n * Get edge by data index\n * @param {number} dataIndex\n * @return {module:echarts/data/Graph~Node}\n */\n\n\ngraphProto.getEdgeByIndex = function (dataIndex) {\n var rawIdx = this.edgeData.getRawIndex(dataIndex);\n return this.edges[rawIdx];\n};\n/**\n * Get edge by two linked nodes\n * @param {module:echarts/data/Graph.Node|string} n1\n * @param {module:echarts/data/Graph.Node|string} n2\n * @return {module:echarts/data/Graph.Edge}\n */\n\n\ngraphProto.getEdge = function (n1, n2) {\n if (Node.isInstance(n1)) {\n n1 = n1.id;\n }\n\n if (Node.isInstance(n2)) {\n n2 = n2.id;\n }\n\n var edgesMap = this._edgesMap;\n\n if (this._directed) {\n return edgesMap[n1 + '-' + n2];\n } else {\n return edgesMap[n1 + '-' + n2] || edgesMap[n2 + '-' + n1];\n }\n};\n/**\n * Iterate all nodes\n * @param {Function} cb\n * @param {*} [context]\n */\n\n\ngraphProto.eachNode = function (cb, context) {\n var nodes = this.nodes;\n var len = nodes.length;\n\n for (var i = 0; i < len; i++) {\n if (nodes[i].dataIndex >= 0) {\n cb.call(context, nodes[i], i);\n }\n }\n};\n/**\n * Iterate all edges\n * @param {Function} cb\n * @param {*} [context]\n */\n\n\ngraphProto.eachEdge = function (cb, context) {\n var edges = this.edges;\n var len = edges.length;\n\n for (var i = 0; i < len; i++) {\n if (edges[i].dataIndex >= 0 && edges[i].node1.dataIndex >= 0 && edges[i].node2.dataIndex >= 0) {\n cb.call(context, edges[i], i);\n }\n }\n};\n/**\n * Breadth first traverse\n * @param {Function} cb\n * @param {module:echarts/data/Graph.Node} startNode\n * @param {string} [direction='none'] 'none'|'in'|'out'\n * @param {*} [context]\n */\n\n\ngraphProto.breadthFirstTraverse = function (cb, startNode, direction, context) {\n if (!Node.isInstance(startNode)) {\n startNode = this._nodesMap[generateNodeKey(startNode)];\n }\n\n if (!startNode) {\n return;\n }\n\n var edgeType = direction === 'out' ? 'outEdges' : direction === 'in' ? 'inEdges' : 'edges';\n\n for (var i = 0; i < this.nodes.length; i++) {\n this.nodes[i].__visited = false;\n }\n\n if (cb.call(context, startNode, null)) {\n return;\n }\n\n var queue = [startNode];\n\n while (queue.length) {\n var currentNode = queue.shift();\n var edges = currentNode[edgeType];\n\n for (var i = 0; i < edges.length; i++) {\n var e = edges[i];\n var otherNode = e.node1 === currentNode ? e.node2 : e.node1;\n\n if (!otherNode.__visited) {\n if (cb.call(context, otherNode, currentNode)) {\n // Stop traversing\n return;\n }\n\n queue.push(otherNode);\n otherNode.__visited = true;\n }\n }\n }\n}; // TODO\n// graphProto.depthFirstTraverse = function (\n// cb, startNode, direction, context\n// ) {\n// };\n// Filter update\n\n\ngraphProto.update = function () {\n var data = this.data;\n var edgeData = this.edgeData;\n var nodes = this.nodes;\n var edges = this.edges;\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n nodes[i].dataIndex = -1;\n }\n\n for (var i = 0, len = data.count(); i < len; i++) {\n nodes[data.getRawIndex(i)].dataIndex = i;\n }\n\n edgeData.filterSelf(function (idx) {\n var edge = edges[edgeData.getRawIndex(idx)];\n return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0;\n }); // Update edge\n\n for (var i = 0, len = edges.length; i < len; i++) {\n edges[i].dataIndex = -1;\n }\n\n for (var i = 0, len = edgeData.count(); i < len; i++) {\n edges[edgeData.getRawIndex(i)].dataIndex = i;\n }\n};\n/**\n * @return {module:echarts/data/Graph}\n */\n\n\ngraphProto.clone = function () {\n var graph = new Graph(this._directed);\n var nodes = this.nodes;\n var edges = this.edges;\n\n for (var i = 0; i < nodes.length; i++) {\n graph.addNode(nodes[i].id, nodes[i].dataIndex);\n }\n\n for (var i = 0; i < edges.length; i++) {\n var e = edges[i];\n graph.addEdge(e.node1.id, e.node2.id, e.dataIndex);\n }\n\n return graph;\n};\n/**\n * @alias module:echarts/data/Graph.Node\n */\n\n\nfunction Node(id, dataIndex) {\n /**\n * @type {string}\n */\n this.id = id == null ? '' : id;\n /**\n * @type {Array.}\n */\n\n this.inEdges = [];\n /**\n * @type {Array.}\n */\n\n this.outEdges = [];\n /**\n * @type {Array.}\n */\n\n this.edges = [];\n /**\n * @type {module:echarts/data/Graph}\n */\n\n this.hostGraph;\n /**\n * @type {number}\n */\n\n this.dataIndex = dataIndex == null ? -1 : dataIndex;\n}\n\nNode.prototype = {\n constructor: Node,\n\n /**\n * @return {number}\n */\n degree: function () {\n return this.edges.length;\n },\n\n /**\n * @return {number}\n */\n inDegree: function () {\n return this.inEdges.length;\n },\n\n /**\n * @return {number}\n */\n outDegree: function () {\n return this.outEdges.length;\n },\n\n /**\n * @param {string} [path]\n * @return {module:echarts/model/Model}\n */\n getModel: function (path) {\n if (this.dataIndex < 0) {\n return;\n }\n\n var graph = this.hostGraph;\n var itemModel = graph.data.getItemModel(this.dataIndex);\n return itemModel.getModel(path);\n }\n};\n/**\n * 图边\n * @alias module:echarts/data/Graph.Edge\n * @param {module:echarts/data/Graph.Node} n1\n * @param {module:echarts/data/Graph.Node} n2\n * @param {number} [dataIndex=-1]\n */\n\nfunction Edge(n1, n2, dataIndex) {\n /**\n * 节点1,如果是有向图则为源节点\n * @type {module:echarts/data/Graph.Node}\n */\n this.node1 = n1;\n /**\n * 节点2,如果是有向图则为目标节点\n * @type {module:echarts/data/Graph.Node}\n */\n\n this.node2 = n2;\n this.dataIndex = dataIndex == null ? -1 : dataIndex;\n}\n/**\n * @param {string} [path]\n * @return {module:echarts/model/Model}\n */\n\n\nEdge.prototype.getModel = function (path) {\n if (this.dataIndex < 0) {\n return;\n }\n\n var graph = this.hostGraph;\n var itemModel = graph.edgeData.getItemModel(this.dataIndex);\n return itemModel.getModel(path);\n};\n\nvar createGraphDataProxyMixin = function (hostName, dataName) {\n return {\n /**\n * @param {string=} [dimension='value'] Default 'value'. can be 'a', 'b', 'c', 'd', 'e'.\n * @return {number}\n */\n getValue: function (dimension) {\n var data = this[hostName][dataName];\n return data.get(data.getDimension(dimension || 'value'), this.dataIndex);\n },\n\n /**\n * @param {Object|string} key\n * @param {*} [value]\n */\n setVisual: function (key, value) {\n this.dataIndex >= 0 && this[hostName][dataName].setItemVisual(this.dataIndex, key, value);\n },\n\n /**\n * @param {string} key\n * @return {boolean}\n */\n getVisual: function (key, ignoreParent) {\n return this[hostName][dataName].getItemVisual(this.dataIndex, key, ignoreParent);\n },\n\n /**\n * @param {Object} layout\n * @return {boolean} [merge=false]\n */\n setLayout: function (layout, merge) {\n this.dataIndex >= 0 && this[hostName][dataName].setItemLayout(this.dataIndex, layout, merge);\n },\n\n /**\n * @return {Object}\n */\n getLayout: function () {\n return this[hostName][dataName].getItemLayout(this.dataIndex);\n },\n\n /**\n * @return {module:zrender/Element}\n */\n getGraphicEl: function () {\n return this[hostName][dataName].getItemGraphicEl(this.dataIndex);\n },\n\n /**\n * @return {number}\n */\n getRawIndex: function () {\n return this[hostName][dataName].getRawIndex(this.dataIndex);\n }\n };\n};\n\nzrUtil.mixin(Node, createGraphDataProxyMixin('hostGraph', 'data'));\nzrUtil.mixin(Edge, createGraphDataProxyMixin('hostGraph', 'edgeData'));\nGraph.Node = Node;\nGraph.Edge = Edge;\nenableClassCheck(Node);\nenableClassCheck(Edge);\nvar _default = Graph;\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 _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"../model/Model\");\n\nvar DataDiffer = require(\"./DataDiffer\");\n\nvar Source = require(\"./Source\");\n\nvar _dataProvider = require(\"./helper/dataProvider\");\n\nvar defaultDimValueGetters = _dataProvider.defaultDimValueGetters;\nvar DefaultDataProvider = _dataProvider.DefaultDataProvider;\n\nvar _dimensionHelper = require(\"./helper/dimensionHelper\");\n\nvar summarizeDimensions = _dimensionHelper.summarizeDimensions;\n\nvar DataDimensionInfo = require(\"./DataDimensionInfo\");\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 Float64Array, Int32Array, Uint32Array, Uint16Array */\n\n/**\n * List for data storage\n * @module echarts/data/List\n */\nvar isObject = zrUtil.isObject;\nvar UNDEFINED = 'undefined';\nvar INDEX_NOT_FOUND = -1; // Use prefix to avoid index to be the same as otherIdList[idx],\n// which will cause weird udpate animation.\n\nvar ID_PREFIX = 'e\\0\\0';\nvar dataCtors = {\n 'float': typeof Float64Array === UNDEFINED ? Array : Float64Array,\n 'int': typeof Int32Array === UNDEFINED ? Array : Int32Array,\n // Ordinal data type can be string or int\n 'ordinal': Array,\n 'number': Array,\n 'time': Array\n}; // Caution: MUST not use `new CtorUint32Array(arr, 0, len)`, because the Ctor of array is\n// different from the Ctor of typed array.\n\nvar CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;\nvar CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array;\nvar CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;\n\nfunction getIndicesCtor(list) {\n // The possible max value in this._indicies is always this._rawCount despite of filtering.\n return list._rawCount > 65535 ? CtorUint32Array : CtorUint16Array;\n}\n\nfunction cloneChunk(originalChunk) {\n var Ctor = originalChunk.constructor; // Only shallow clone is enough when Array.\n\n return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk);\n}\n\nvar TRANSFERABLE_PROPERTIES = ['hasItemOption', '_nameList', '_idList', '_invertedIndicesMap', '_rawData', '_chunkSize', '_chunkCount', '_dimValueGetter', '_count', '_rawCount', '_nameDimIdx', '_idDimIdx'];\nvar CLONE_PROPERTIES = ['_extent', '_approximateExtent', '_rawExtent'];\n\nfunction transferProperties(target, source) {\n zrUtil.each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function (propName) {\n if (source.hasOwnProperty(propName)) {\n target[propName] = source[propName];\n }\n });\n target.__wrappedMethods = source.__wrappedMethods;\n zrUtil.each(CLONE_PROPERTIES, function (propName) {\n target[propName] = zrUtil.clone(source[propName]);\n });\n target._calculationInfo = zrUtil.extend(source._calculationInfo);\n}\n/**\n * @constructor\n * @alias module:echarts/data/List\n *\n * @param {Array.} dimensions\n * For example, ['someDimName', {name: 'someDimName', type: 'someDimType'}, ...].\n * Dimensions should be concrete names like x, y, z, lng, lat, angle, radius\n * @param {module:echarts/model/Model} hostModel\n */\n\n\nvar List = function (dimensions, hostModel) {\n dimensions = dimensions || ['x', 'y'];\n var dimensionInfos = {};\n var dimensionNames = [];\n var invertedIndicesMap = {};\n\n for (var i = 0; i < dimensions.length; i++) {\n // Use the original dimensions[i], where other flag props may exists.\n var dimensionInfo = dimensions[i];\n\n if (zrUtil.isString(dimensionInfo)) {\n dimensionInfo = new DataDimensionInfo({\n name: dimensionInfo\n });\n } else if (!(dimensionInfo instanceof DataDimensionInfo)) {\n dimensionInfo = new DataDimensionInfo(dimensionInfo);\n }\n\n var dimensionName = dimensionInfo.name;\n dimensionInfo.type = dimensionInfo.type || 'float';\n\n if (!dimensionInfo.coordDim) {\n dimensionInfo.coordDim = dimensionName;\n dimensionInfo.coordDimIndex = 0;\n }\n\n dimensionInfo.otherDims = dimensionInfo.otherDims || {};\n dimensionNames.push(dimensionName);\n dimensionInfos[dimensionName] = dimensionInfo;\n dimensionInfo.index = i;\n\n if (dimensionInfo.createInvertedIndices) {\n invertedIndicesMap[dimensionName] = [];\n }\n }\n /**\n * @readOnly\n * @type {Array.}\n */\n\n\n this.dimensions = dimensionNames;\n /**\n * Infomation of each data dimension, like data type.\n * @type {Object}\n */\n\n this._dimensionInfos = dimensionInfos;\n /**\n * @type {module:echarts/model/Model}\n */\n\n this.hostModel = hostModel;\n /**\n * @type {module:echarts/model/Model}\n */\n\n this.dataType;\n /**\n * Indices stores the indices of data subset after filtered.\n * This data subset will be used in chart.\n * @type {Array.}\n * @readOnly\n */\n\n this._indices = null;\n this._count = 0;\n this._rawCount = 0;\n /**\n * Data storage\n * @type {Object.>}\n * @private\n */\n\n this._storage = {};\n /**\n * @type {Array.}\n */\n\n this._nameList = [];\n /**\n * @type {Array.}\n */\n\n this._idList = [];\n /**\n * Models of data option is stored sparse for optimizing memory cost\n * @type {Array.}\n * @private\n */\n\n this._optionModels = [];\n /**\n * Global visual properties after visual coding\n * @type {Object}\n * @private\n */\n\n this._visual = {};\n /**\n * Globel layout properties.\n * @type {Object}\n * @private\n */\n\n this._layout = {};\n /**\n * Item visual properties after visual coding\n * @type {Array.}\n * @private\n */\n\n this._itemVisuals = [];\n /**\n * Key: visual type, Value: boolean\n * @type {Object}\n * @readOnly\n */\n\n this.hasItemVisual = {};\n /**\n * Item layout properties after layout\n * @type {Array.}\n * @private\n */\n\n this._itemLayouts = [];\n /**\n * Graphic elemnents\n * @type {Array.}\n * @private\n */\n\n this._graphicEls = [];\n /**\n * Max size of each chunk.\n * @type {number}\n * @private\n */\n\n this._chunkSize = 1e5;\n /**\n * @type {number}\n * @private\n */\n\n this._chunkCount = 0;\n /**\n * @type {Array.}\n * @private\n */\n\n this._rawData;\n /**\n * Raw extent will not be cloned, but only transfered.\n * It will not be calculated util needed.\n * key: dim,\n * value: {end: number, extent: Array.}\n * @type {Object}\n * @private\n */\n\n this._rawExtent = {};\n /**\n * @type {Object}\n * @private\n */\n\n this._extent = {};\n /**\n * key: dim\n * value: extent\n * @type {Object}\n * @private\n */\n\n this._approximateExtent = {};\n /**\n * Cache summary info for fast visit. See \"dimensionHelper\".\n * @type {Object}\n * @private\n */\n\n this._dimensionsSummary = summarizeDimensions(this);\n /**\n * @type {Object.}\n * @private\n */\n\n this._invertedIndicesMap = invertedIndicesMap;\n /**\n * @type {Object}\n * @private\n */\n\n this._calculationInfo = {};\n /**\n * User output info of this data.\n * DO NOT use it in other places!\n *\n * When preparing user params for user callbacks, we have\n * to clone these inner data structures to prevent users\n * from modifying them to effect built-in logic. And for\n * performance consideration we make this `userOutput` to\n * avoid clone them too many times.\n *\n * @type {Object}\n * @readOnly\n */\n\n this.userOutput = this._dimensionsSummary.userOutput;\n};\n\nvar listProto = List.prototype;\nlistProto.type = 'list';\n/**\n * If each data item has it's own option\n * @type {boolean}\n */\n\nlistProto.hasItemOption = true;\n/**\n * The meanings of the input parameter `dim`:\n *\n * + If dim is a number (e.g., `1`), it means the index of the dimension.\n * For example, `getDimension(0)` will return 'x' or 'lng' or 'radius'.\n * + If dim is a number-like string (e.g., `\"1\"`):\n * + If there is the same concrete dim name defined in `this.dimensions`, it means that concrete name.\n * + If not, it will be converted to a number, which means the index of the dimension.\n * (why? because of the backward compatbility. We have been tolerating number-like string in\n * dimension setting, although now it seems that it is not a good idea.)\n * For example, `visualMap[i].dimension: \"1\"` is the same meaning as `visualMap[i].dimension: 1`,\n * if no dimension name is defined as `\"1\"`.\n * + If dim is a not-number-like string, it means the concrete dim name.\n * For example, it can be be default name `\"x\"`, `\"y\"`, `\"z\"`, `\"lng\"`, `\"lat\"`, `\"angle\"`, `\"radius\"`,\n * or customized in `dimensions` property of option like `\"age\"`.\n *\n * Get dimension name\n * @param {string|number} dim See above.\n * @return {string} Concrete dim name.\n */\n\nlistProto.getDimension = function (dim) {\n if (typeof dim === 'number' // If being a number-like string but not being defined a dimension name.\n || !isNaN(dim) && !this._dimensionInfos.hasOwnProperty(dim)) {\n dim = this.dimensions[dim];\n }\n\n return dim;\n};\n/**\n * Get type and calculation info of particular dimension\n * @param {string|number} dim\n * Dimension can be concrete names like x, y, z, lng, lat, angle, radius\n * Or a ordinal number. For example getDimensionInfo(0) will return 'x' or 'lng' or 'radius'\n */\n\n\nlistProto.getDimensionInfo = function (dim) {\n // Do not clone, because there may be categories in dimInfo.\n return this._dimensionInfos[this.getDimension(dim)];\n};\n/**\n * @return {Array.} concrete dimension name list on coord.\n */\n\n\nlistProto.getDimensionsOnCoord = function () {\n return this._dimensionsSummary.dataDimsOnCoord.slice();\n};\n/**\n * @param {string} coordDim\n * @param {number} [idx] A coordDim may map to more than one data dim.\n * If idx is `true`, return a array of all mapped dims.\n * If idx is not specified, return the first dim not extra.\n * @return {string|Array.} concrete data dim.\n * If idx is number, and not found, return null/undefined.\n * If idx is `true`, and not found, return empty array (always return array).\n */\n\n\nlistProto.mapDimension = function (coordDim, idx) {\n var dimensionsSummary = this._dimensionsSummary;\n\n if (idx == null) {\n return dimensionsSummary.encodeFirstDimNotExtra[coordDim];\n }\n\n var dims = dimensionsSummary.encode[coordDim];\n return idx === true // always return array if idx is `true`\n ? (dims || []).slice() : dims && dims[idx];\n};\n/**\n * Initialize from data\n * @param {Array.} data source or data or data provider.\n * @param {Array.} [nameLIst] The name of a datum is used on data diff and\n * default label/tooltip.\n * A name can be specified in encode.itemName,\n * or dataItem.name (only for series option data),\n * or provided in nameList from outside.\n * @param {Function} [dimValueGetter] (dataItem, dimName, dataIndex, dimIndex) => number\n */\n\n\nlistProto.initData = function (data, nameList, dimValueGetter) {\n var notProvider = Source.isInstance(data) || zrUtil.isArrayLike(data);\n\n if (notProvider) {\n data = new DefaultDataProvider(data, this.dimensions.length);\n }\n\n this._rawData = data; // Clear\n\n this._storage = {};\n this._indices = null;\n this._nameList = nameList || [];\n this._idList = [];\n this._nameRepeatCount = {};\n\n if (!dimValueGetter) {\n this.hasItemOption = false;\n }\n /**\n * @readOnly\n */\n\n\n this.defaultDimValueGetter = defaultDimValueGetters[this._rawData.getSource().sourceFormat]; // Default dim value getter\n\n this._dimValueGetter = dimValueGetter = dimValueGetter || this.defaultDimValueGetter;\n this._dimValueGetterArrayRows = defaultDimValueGetters.arrayRows; // Reset raw extent.\n\n this._rawExtent = {};\n\n this._initDataFromProvider(0, data.count()); // If data has no item option.\n\n\n if (data.pure) {\n this.hasItemOption = false;\n }\n};\n\nlistProto.getProvider = function () {\n return this._rawData;\n};\n/**\n * Caution: Can be only called on raw data (before `this._indices` created).\n */\n\n\nlistProto.appendData = function (data) {\n var rawData = this._rawData;\n var start = this.count();\n rawData.appendData(data);\n var end = rawData.count();\n\n if (!rawData.persistent) {\n end += start;\n }\n\n this._initDataFromProvider(start, end);\n};\n/**\n * Caution: Can be only called on raw data (before `this._indices` created).\n * This method does not modify `rawData` (`dataProvider`), but only\n * add values to storage.\n *\n * The final count will be increased by `Math.max(values.length, names.length)`.\n *\n * @param {Array.>} values That is the SourceType: 'arrayRows', like\n * [\n * [12, 33, 44],\n * [NaN, 43, 1],\n * ['-', 'asdf', 0]\n * ]\n * Each item is exaclty cooresponding to a dimension.\n * @param {Array.} [names]\n */\n\n\nlistProto.appendValues = function (values, names) {\n var chunkSize = this._chunkSize;\n var storage = this._storage;\n var dimensions = this.dimensions;\n var dimLen = dimensions.length;\n var rawExtent = this._rawExtent;\n var start = this.count();\n var end = start + Math.max(values.length, names ? names.length : 0);\n var originalChunkCount = this._chunkCount;\n\n for (var i = 0; i < dimLen; i++) {\n var dim = dimensions[i];\n\n if (!rawExtent[dim]) {\n rawExtent[dim] = getInitialExtent();\n }\n\n if (!storage[dim]) {\n storage[dim] = [];\n }\n\n prepareChunks(storage, this._dimensionInfos[dim], chunkSize, originalChunkCount, end);\n this._chunkCount = storage[dim].length;\n }\n\n var emptyDataItem = new Array(dimLen);\n\n for (var idx = start; idx < end; idx++) {\n var sourceIdx = idx - start;\n var chunkIndex = Math.floor(idx / chunkSize);\n var chunkOffset = idx % chunkSize; // Store the data by dimensions\n\n for (var k = 0; k < dimLen; k++) {\n var dim = dimensions[k];\n\n var val = this._dimValueGetterArrayRows(values[sourceIdx] || emptyDataItem, dim, sourceIdx, k);\n\n storage[dim][chunkIndex][chunkOffset] = val;\n var dimRawExtent = rawExtent[dim];\n val < dimRawExtent[0] && (dimRawExtent[0] = val);\n val > dimRawExtent[1] && (dimRawExtent[1] = val);\n }\n\n if (names) {\n this._nameList[idx] = names[sourceIdx];\n }\n }\n\n this._rawCount = this._count = end; // Reset data extent\n\n this._extent = {};\n prepareInvertedIndex(this);\n};\n\nlistProto._initDataFromProvider = function (start, end) {\n // Optimize.\n if (start >= end) {\n return;\n }\n\n var chunkSize = this._chunkSize;\n var rawData = this._rawData;\n var storage = this._storage;\n var dimensions = this.dimensions;\n var dimLen = dimensions.length;\n var dimensionInfoMap = this._dimensionInfos;\n var nameList = this._nameList;\n var idList = this._idList;\n var rawExtent = this._rawExtent;\n var nameRepeatCount = this._nameRepeatCount = {};\n var nameDimIdx;\n var originalChunkCount = this._chunkCount;\n\n for (var i = 0; i < dimLen; i++) {\n var dim = dimensions[i];\n\n if (!rawExtent[dim]) {\n rawExtent[dim] = getInitialExtent();\n }\n\n var dimInfo = dimensionInfoMap[dim];\n\n if (dimInfo.otherDims.itemName === 0) {\n nameDimIdx = this._nameDimIdx = i;\n }\n\n if (dimInfo.otherDims.itemId === 0) {\n this._idDimIdx = i;\n }\n\n if (!storage[dim]) {\n storage[dim] = [];\n }\n\n prepareChunks(storage, dimInfo, chunkSize, originalChunkCount, end);\n this._chunkCount = storage[dim].length;\n }\n\n var dataItem = new Array(dimLen);\n\n for (var idx = start; idx < end; idx++) {\n // NOTICE: Try not to write things into dataItem\n dataItem = rawData.getItem(idx, dataItem); // Each data item is value\n // [1, 2]\n // 2\n // Bar chart, line chart which uses category axis\n // only gives the 'y' value. 'x' value is the indices of category\n // Use a tempValue to normalize the value to be a (x, y) value\n\n var chunkIndex = Math.floor(idx / chunkSize);\n var chunkOffset = idx % chunkSize; // Store the data by dimensions\n\n for (var k = 0; k < dimLen; k++) {\n var dim = dimensions[k];\n var dimStorage = storage[dim][chunkIndex]; // PENDING NULL is empty or zero\n\n var val = this._dimValueGetter(dataItem, dim, idx, k);\n\n dimStorage[chunkOffset] = val;\n var dimRawExtent = rawExtent[dim];\n val < dimRawExtent[0] && (dimRawExtent[0] = val);\n val > dimRawExtent[1] && (dimRawExtent[1] = val);\n } // ??? FIXME not check by pure but sourceFormat?\n // TODO refactor these logic.\n\n\n if (!rawData.pure) {\n var name = nameList[idx];\n\n if (dataItem && name == null) {\n // If dataItem is {name: ...}, it has highest priority.\n // That is appropriate for many common cases.\n if (dataItem.name != null) {\n // There is no other place to persistent dataItem.name,\n // so save it to nameList.\n nameList[idx] = name = dataItem.name;\n } else if (nameDimIdx != null) {\n var nameDim = dimensions[nameDimIdx];\n var nameDimChunk = storage[nameDim][chunkIndex];\n\n if (nameDimChunk) {\n name = nameDimChunk[chunkOffset];\n var ordinalMeta = dimensionInfoMap[nameDim].ordinalMeta;\n\n if (ordinalMeta && ordinalMeta.categories.length) {\n name = ordinalMeta.categories[name];\n }\n }\n }\n } // Try using the id in option\n // id or name is used on dynamical data, mapping old and new items.\n\n\n var id = dataItem == null ? null : dataItem.id;\n\n if (id == null && name != null) {\n // Use name as id and add counter to avoid same name\n nameRepeatCount[name] = nameRepeatCount[name] || 0;\n id = name;\n\n if (nameRepeatCount[name] > 0) {\n id += '__ec__' + nameRepeatCount[name];\n }\n\n nameRepeatCount[name]++;\n }\n\n id != null && (idList[idx] = id);\n }\n }\n\n if (!rawData.persistent && rawData.clean) {\n // Clean unused data if data source is typed array.\n rawData.clean();\n }\n\n this._rawCount = this._count = end; // Reset data extent\n\n this._extent = {};\n prepareInvertedIndex(this);\n};\n\nfunction prepareChunks(storage, dimInfo, chunkSize, chunkCount, end) {\n var DataCtor = dataCtors[dimInfo.type];\n var lastChunkIndex = chunkCount - 1;\n var dim = dimInfo.name;\n var resizeChunkArray = storage[dim][lastChunkIndex];\n\n if (resizeChunkArray && resizeChunkArray.length < chunkSize) {\n var newStore = new DataCtor(Math.min(end - lastChunkIndex * chunkSize, chunkSize)); // The cost of the copy is probably inconsiderable\n // within the initial chunkSize.\n\n for (var j = 0; j < resizeChunkArray.length; j++) {\n newStore[j] = resizeChunkArray[j];\n }\n\n storage[dim][lastChunkIndex] = newStore;\n } // Create new chunks.\n\n\n for (var k = chunkCount * chunkSize; k < end; k += chunkSize) {\n storage[dim].push(new DataCtor(Math.min(end - k, chunkSize)));\n }\n}\n\nfunction prepareInvertedIndex(list) {\n var invertedIndicesMap = list._invertedIndicesMap;\n zrUtil.each(invertedIndicesMap, function (invertedIndices, dim) {\n var dimInfo = list._dimensionInfos[dim]; // Currently, only dimensions that has ordinalMeta can create inverted indices.\n\n var ordinalMeta = dimInfo.ordinalMeta;\n\n if (ordinalMeta) {\n invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(ordinalMeta.categories.length); // The default value of TypedArray is 0. To avoid miss\n // mapping to 0, we should set it as INDEX_NOT_FOUND.\n\n for (var i = 0; i < invertedIndices.length; i++) {\n invertedIndices[i] = INDEX_NOT_FOUND;\n }\n\n for (var i = 0; i < list._count; i++) {\n // Only support the case that all values are distinct.\n invertedIndices[list.get(dim, i)] = i;\n }\n }\n });\n}\n\nfunction getRawValueFromStore(list, dimIndex, rawIndex) {\n var val;\n\n if (dimIndex != null) {\n var chunkSize = list._chunkSize;\n var chunkIndex = Math.floor(rawIndex / chunkSize);\n var chunkOffset = rawIndex % chunkSize;\n var dim = list.dimensions[dimIndex];\n var chunk = list._storage[dim][chunkIndex];\n\n if (chunk) {\n val = chunk[chunkOffset];\n var ordinalMeta = list._dimensionInfos[dim].ordinalMeta;\n\n if (ordinalMeta && ordinalMeta.categories.length) {\n val = ordinalMeta.categories[val];\n }\n }\n }\n\n return val;\n}\n/**\n * @return {number}\n */\n\n\nlistProto.count = function () {\n return this._count;\n};\n\nlistProto.getIndices = function () {\n var newIndices;\n var indices = this._indices;\n\n if (indices) {\n var Ctor = indices.constructor;\n var thisCount = this._count; // `new Array(a, b, c)` is different from `new Uint32Array(a, b, c)`.\n\n if (Ctor === Array) {\n newIndices = new Ctor(thisCount);\n\n for (var i = 0; i < thisCount; i++) {\n newIndices[i] = indices[i];\n }\n } else {\n newIndices = new Ctor(indices.buffer, 0, thisCount);\n }\n } else {\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(this.count());\n\n for (var i = 0; i < newIndices.length; i++) {\n newIndices[i] = i;\n }\n }\n\n return newIndices;\n};\n/**\n * Get value. Return NaN if idx is out of range.\n * @param {string} dim Dim must be concrete name.\n * @param {number} idx\n * @param {boolean} stack\n * @return {number}\n */\n\n\nlistProto.get = function (dim, idx\n/*, stack */\n) {\n if (!(idx >= 0 && idx < this._count)) {\n return NaN;\n }\n\n var storage = this._storage;\n\n if (!storage[dim]) {\n // TODO Warn ?\n return NaN;\n }\n\n idx = this.getRawIndex(idx);\n var chunkIndex = Math.floor(idx / this._chunkSize);\n var chunkOffset = idx % this._chunkSize;\n var chunkStore = storage[dim][chunkIndex];\n var value = chunkStore[chunkOffset]; // FIXME ordinal data type is not stackable\n // if (stack) {\n // var dimensionInfo = this._dimensionInfos[dim];\n // if (dimensionInfo && dimensionInfo.stackable) {\n // var stackedOn = this.stackedOn;\n // while (stackedOn) {\n // // Get no stacked data of stacked on\n // var stackedValue = stackedOn.get(dim, idx);\n // // Considering positive stack, negative stack and empty data\n // if ((value >= 0 && stackedValue > 0) // Positive stack\n // || (value <= 0 && stackedValue < 0) // Negative stack\n // ) {\n // value += stackedValue;\n // }\n // stackedOn = stackedOn.stackedOn;\n // }\n // }\n // }\n\n return value;\n};\n/**\n * @param {string} dim concrete dim\n * @param {number} rawIndex\n * @return {number|string}\n */\n\n\nlistProto.getByRawIndex = function (dim, rawIdx) {\n if (!(rawIdx >= 0 && rawIdx < this._rawCount)) {\n return NaN;\n }\n\n var dimStore = this._storage[dim];\n\n if (!dimStore) {\n // TODO Warn ?\n return NaN;\n }\n\n var chunkIndex = Math.floor(rawIdx / this._chunkSize);\n var chunkOffset = rawIdx % this._chunkSize;\n var chunkStore = dimStore[chunkIndex];\n return chunkStore[chunkOffset];\n};\n/**\n * FIXME Use `get` on chrome maybe slow(in filterSelf and selectRange).\n * Hack a much simpler _getFast\n * @private\n */\n\n\nlistProto._getFast = function (dim, rawIdx) {\n var chunkIndex = Math.floor(rawIdx / this._chunkSize);\n var chunkOffset = rawIdx % this._chunkSize;\n var chunkStore = this._storage[dim][chunkIndex];\n return chunkStore[chunkOffset];\n};\n/**\n * Get value for multi dimensions.\n * @param {Array.} [dimensions] If ignored, using all dimensions.\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getValues = function (dimensions, idx\n/*, stack */\n) {\n var values = [];\n\n if (!zrUtil.isArray(dimensions)) {\n // stack = idx;\n idx = dimensions;\n dimensions = this.dimensions;\n }\n\n for (var i = 0, len = dimensions.length; i < len; i++) {\n values.push(this.get(dimensions[i], idx\n /*, stack */\n ));\n }\n\n return values;\n};\n/**\n * If value is NaN. Inlcuding '-'\n * Only check the coord dimensions.\n * @param {string} dim\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.hasValue = function (idx) {\n var dataDimsOnCoord = this._dimensionsSummary.dataDimsOnCoord;\n\n for (var i = 0, len = dataDimsOnCoord.length; i < len; i++) {\n // Ordinal type originally can be string or number.\n // But when an ordinal type is used on coord, it can\n // not be string but only number. So we can also use isNaN.\n if (isNaN(this.get(dataDimsOnCoord[i], idx))) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * Get extent of data in one dimension\n * @param {string} dim\n * @param {boolean} stack\n */\n\n\nlistProto.getDataExtent = function (dim\n/*, stack */\n) {\n // Make sure use concrete dim as cache name.\n dim = this.getDimension(dim);\n var dimData = this._storage[dim];\n var initialExtent = getInitialExtent(); // stack = !!((stack || false) && this.getCalculationInfo(dim));\n\n if (!dimData) {\n return initialExtent;\n } // Make more strict checkings to ensure hitting cache.\n\n\n var currEnd = this.count(); // var cacheName = [dim, !!stack].join('_');\n // var cacheName = dim;\n // Consider the most cases when using data zoom, `getDataExtent`\n // happened before filtering. We cache raw extent, which is not\n // necessary to be cleared and recalculated when restore data.\n\n var useRaw = !this._indices; // && !stack;\n\n var dimExtent;\n\n if (useRaw) {\n return this._rawExtent[dim].slice();\n }\n\n dimExtent = this._extent[dim];\n\n if (dimExtent) {\n return dimExtent.slice();\n }\n\n dimExtent = initialExtent;\n var min = dimExtent[0];\n var max = dimExtent[1];\n\n for (var i = 0; i < currEnd; i++) {\n // var value = stack ? this.get(dim, i, true) : this._getFast(dim, this.getRawIndex(i));\n var value = this._getFast(dim, this.getRawIndex(i));\n\n value < min && (min = value);\n value > max && (max = value);\n }\n\n dimExtent = [min, max];\n this._extent[dim] = dimExtent;\n return dimExtent;\n};\n/**\n * Optimize for the scenario that data is filtered by a given extent.\n * Consider that if data amount is more than hundreds of thousand,\n * extent calculation will cost more than 10ms and the cache will\n * be erased because of the filtering.\n */\n\n\nlistProto.getApproximateExtent = function (dim\n/*, stack */\n) {\n dim = this.getDimension(dim);\n return this._approximateExtent[dim] || this.getDataExtent(dim\n /*, stack */\n );\n};\n\nlistProto.setApproximateExtent = function (extent, dim\n/*, stack */\n) {\n dim = this.getDimension(dim);\n this._approximateExtent[dim] = extent.slice();\n};\n/**\n * @param {string} key\n * @return {*}\n */\n\n\nlistProto.getCalculationInfo = function (key) {\n return this._calculationInfo[key];\n};\n/**\n * @param {string|Object} key or k-v object\n * @param {*} [value]\n */\n\n\nlistProto.setCalculationInfo = function (key, value) {\n isObject(key) ? zrUtil.extend(this._calculationInfo, key) : this._calculationInfo[key] = value;\n};\n/**\n * Get sum of data in one dimension\n * @param {string} dim\n */\n\n\nlistProto.getSum = function (dim\n/*, stack */\n) {\n var dimData = this._storage[dim];\n var sum = 0;\n\n if (dimData) {\n for (var i = 0, len = this.count(); i < len; i++) {\n var value = this.get(dim, i\n /*, stack */\n );\n\n if (!isNaN(value)) {\n sum += value;\n }\n }\n }\n\n return sum;\n};\n/**\n * Get median of data in one dimension\n * @param {string} dim\n */\n\n\nlistProto.getMedian = function (dim\n/*, stack */\n) {\n var dimDataArray = []; // map all data of one dimension\n\n this.each(dim, function (val, idx) {\n if (!isNaN(val)) {\n dimDataArray.push(val);\n }\n }); // TODO\n // Use quick select?\n // immutability & sort\n\n var sortedDimDataArray = [].concat(dimDataArray).sort(function (a, b) {\n return a - b;\n });\n var len = this.count(); // calculate median\n\n return len === 0 ? 0 : len % 2 === 1 ? sortedDimDataArray[(len - 1) / 2] : (sortedDimDataArray[len / 2] + sortedDimDataArray[len / 2 - 1]) / 2;\n}; // /**\n// * Retreive the index with given value\n// * @param {string} dim Concrete dimension.\n// * @param {number} value\n// * @return {number}\n// */\n// Currently incorrect: should return dataIndex but not rawIndex.\n// Do not fix it until this method is to be used somewhere.\n// FIXME Precision of float value\n// listProto.indexOf = function (dim, value) {\n// var storage = this._storage;\n// var dimData = storage[dim];\n// var chunkSize = this._chunkSize;\n// if (dimData) {\n// for (var i = 0, len = this.count(); i < len; i++) {\n// var chunkIndex = Math.floor(i / chunkSize);\n// var chunkOffset = i % chunkSize;\n// if (dimData[chunkIndex][chunkOffset] === value) {\n// return i;\n// }\n// }\n// }\n// return -1;\n// };\n\n/**\n * Only support the dimension which inverted index created.\n * Do not support other cases until required.\n * @param {string} concrete dim\n * @param {number|string} value\n * @return {number} rawIndex\n */\n\n\nlistProto.rawIndexOf = function (dim, value) {\n var invertedIndices = dim && this._invertedIndicesMap[dim];\n var rawIndex = invertedIndices[value];\n\n if (rawIndex == null || isNaN(rawIndex)) {\n return INDEX_NOT_FOUND;\n }\n\n return rawIndex;\n};\n/**\n * Retreive the index with given name\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfName = function (name) {\n for (var i = 0, len = this.count(); i < len; i++) {\n if (this.getName(i) === name) {\n return i;\n }\n }\n\n return -1;\n};\n/**\n * Retreive the index with given raw data index\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfRawIndex = function (rawIndex) {\n if (rawIndex >= this._rawCount || rawIndex < 0) {\n return -1;\n }\n\n if (!this._indices) {\n return rawIndex;\n } // Indices are ascending\n\n\n var indices = this._indices; // If rawIndex === dataIndex\n\n var rawDataIndex = indices[rawIndex];\n\n if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) {\n return rawIndex;\n }\n\n var left = 0;\n var right = this._count - 1;\n\n while (left <= right) {\n var mid = (left + right) / 2 | 0;\n\n if (indices[mid] < rawIndex) {\n left = mid + 1;\n } else if (indices[mid] > rawIndex) {\n right = mid - 1;\n } else {\n return mid;\n }\n }\n\n return -1;\n};\n/**\n * Retreive the index of nearest value\n * @param {string} dim\n * @param {number} value\n * @param {number} [maxDistance=Infinity]\n * @return {Array.} If and only if multiple indices has\n * the same value, they are put to the result.\n */\n\n\nlistProto.indicesOfNearest = function (dim, value, maxDistance) {\n var storage = this._storage;\n var dimData = storage[dim];\n var nearestIndices = [];\n\n if (!dimData) {\n return nearestIndices;\n }\n\n if (maxDistance == null) {\n maxDistance = Infinity;\n }\n\n var minDist = Infinity;\n var minDiff = -1;\n var nearestIndicesLen = 0; // Check the test case of `test/ut/spec/data/List.js`.\n\n for (var i = 0, len = this.count(); i < len; i++) {\n var diff = value - this.get(dim, i);\n var dist = Math.abs(diff);\n\n if (dist <= maxDistance) {\n // When the `value` is at the middle of `this.get(dim, i)` and `this.get(dim, i+1)`,\n // we'd better not push both of them to `nearestIndices`, otherwise it is easy to\n // get more than one item in `nearestIndices` (more specifically, in `tooltip`).\n // So we chose the one that `diff >= 0` in this csae.\n // But if `this.get(dim, i)` and `this.get(dim, j)` get the same value, both of them\n // should be push to `nearestIndices`.\n if (dist < minDist || dist === minDist && diff >= 0 && minDiff < 0) {\n minDist = dist;\n minDiff = diff;\n nearestIndicesLen = 0;\n }\n\n if (diff === minDiff) {\n nearestIndices[nearestIndicesLen++] = i;\n }\n }\n }\n\n nearestIndices.length = nearestIndicesLen;\n return nearestIndices;\n};\n/**\n * Get raw data index\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawIndex = getRawIndexWithoutIndices;\n\nfunction getRawIndexWithoutIndices(idx) {\n return idx;\n}\n\nfunction getRawIndexWithIndices(idx) {\n if (idx < this._count && idx >= 0) {\n return this._indices[idx];\n }\n\n return -1;\n}\n/**\n * Get raw data item\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawDataItem = function (idx) {\n if (!this._rawData.persistent) {\n var val = [];\n\n for (var i = 0; i < this.dimensions.length; i++) {\n var dim = this.dimensions[i];\n val.push(this.get(dim, idx));\n }\n\n return val;\n } else {\n return this._rawData.getItem(this.getRawIndex(idx));\n }\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getName = function (idx) {\n var rawIndex = this.getRawIndex(idx);\n return this._nameList[rawIndex] || getRawValueFromStore(this, this._nameDimIdx, rawIndex) || '';\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getId = function (idx) {\n return getId(this, this.getRawIndex(idx));\n};\n\nfunction getId(list, rawIndex) {\n var id = list._idList[rawIndex];\n\n if (id == null) {\n id = getRawValueFromStore(list, list._idDimIdx, rawIndex);\n }\n\n if (id == null) {\n // FIXME Check the usage in graph, should not use prefix.\n id = ID_PREFIX + rawIndex;\n }\n\n return id;\n}\n\nfunction normalizeDimensions(dimensions) {\n if (!zrUtil.isArray(dimensions)) {\n dimensions = [dimensions];\n }\n\n return dimensions;\n}\n\nfunction validateDimensions(list, dims) {\n for (var i = 0; i < dims.length; i++) {\n // stroage may be empty when no data, so use\n // dimensionInfos to check.\n if (!list._dimensionInfos[dims[i]]) {\n console.error('Unkown dimension ' + dims[i]);\n }\n }\n}\n/**\n * Data iteration\n * @param {string|Array.}\n * @param {Function} cb\n * @param {*} [context=this]\n *\n * @example\n * list.each('x', function (x, idx) {});\n * list.each(['x', 'y'], function (x, y, idx) {});\n * list.each(function (idx) {})\n */\n\n\nlistProto.each = function (dims, cb, context, contextCompat) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n if (typeof dims === 'function') {\n contextCompat = context;\n context = cb;\n cb = dims;\n dims = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n dims = zrUtil.map(normalizeDimensions(dims), this.getDimension, this);\n var dimSize = dims.length;\n\n for (var i = 0; i < this.count(); i++) {\n // Simple optimization\n switch (dimSize) {\n case 0:\n cb.call(context, i);\n break;\n\n case 1:\n cb.call(context, this.get(dims[0], i), i);\n break;\n\n case 2:\n cb.call(context, this.get(dims[0], i), this.get(dims[1], i), i);\n break;\n\n default:\n var k = 0;\n var value = [];\n\n for (; k < dimSize; k++) {\n value[k] = this.get(dims[k], i);\n } // Index\n\n\n value[k] = i;\n cb.apply(context, value);\n }\n }\n};\n/**\n * Data filter\n * @param {string|Array.}\n * @param {Function} cb\n * @param {*} [context=this]\n */\n\n\nlistProto.filterSelf = function (dimensions, cb, context, contextCompat) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n if (typeof dimensions === 'function') {\n contextCompat = context;\n context = cb;\n cb = dimensions;\n dimensions = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n var count = this.count();\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(count);\n var value = [];\n var dimSize = dimensions.length;\n var offset = 0;\n var dim0 = dimensions[0];\n\n for (var i = 0; i < count; i++) {\n var keep;\n var rawIdx = this.getRawIndex(i); // Simple optimization\n\n if (dimSize === 0) {\n keep = cb.call(context, i);\n } else if (dimSize === 1) {\n var val = this._getFast(dim0, rawIdx);\n\n keep = cb.call(context, val, i);\n } else {\n for (var k = 0; k < dimSize; k++) {\n value[k] = this._getFast(dim0, rawIdx);\n }\n\n value[k] = i;\n keep = cb.apply(context, value);\n }\n\n if (keep) {\n newIndices[offset++] = rawIdx;\n }\n } // Set indices after filtered.\n\n\n if (offset < count) {\n this._indices = newIndices;\n }\n\n this._count = offset; // Reset data extent\n\n this._extent = {};\n this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return this;\n};\n/**\n * Select data in range. (For optimization of filter)\n * (Manually inline code, support 5 million data filtering in data zoom.)\n */\n\n\nlistProto.selectRange = function (range) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n var dimensions = [];\n\n for (var dim in range) {\n if (range.hasOwnProperty(dim)) {\n dimensions.push(dim);\n }\n }\n\n var dimSize = dimensions.length;\n\n if (!dimSize) {\n return;\n }\n\n var originalCount = this.count();\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(originalCount);\n var offset = 0;\n var dim0 = dimensions[0];\n var min = range[dim0][0];\n var max = range[dim0][1];\n var quickFinished = false;\n\n if (!this._indices) {\n // Extreme optimization for common case. About 2x faster in chrome.\n var idx = 0;\n\n if (dimSize === 1) {\n var dimStorage = this._storage[dimensions[0]];\n\n for (var k = 0; k < this._chunkCount; k++) {\n var chunkStorage = dimStorage[k];\n var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n for (var i = 0; i < len; i++) {\n var val = chunkStorage[i]; // NaN will not be filtered. Consider the case, in line chart, empty\n // value indicates the line should be broken. But for the case like\n // scatter plot, a data item with empty value will not be rendered,\n // but the axis extent may be effected if some other dim of the data\n // item has value. Fortunately it is not a significant negative effect.\n\n if (val >= min && val <= max || isNaN(val)) {\n newIndices[offset++] = idx;\n }\n\n idx++;\n }\n }\n\n quickFinished = true;\n } else if (dimSize === 2) {\n var dimStorage = this._storage[dim0];\n var dimStorage2 = this._storage[dimensions[1]];\n var min2 = range[dimensions[1]][0];\n var max2 = range[dimensions[1]][1];\n\n for (var k = 0; k < this._chunkCount; k++) {\n var chunkStorage = dimStorage[k];\n var chunkStorage2 = dimStorage2[k];\n var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n for (var i = 0; i < len; i++) {\n var val = chunkStorage[i];\n var val2 = chunkStorage2[i]; // Do not filter NaN, see comment above.\n\n if ((val >= min && val <= max || isNaN(val)) && (val2 >= min2 && val2 <= max2 || isNaN(val2))) {\n newIndices[offset++] = idx;\n }\n\n idx++;\n }\n }\n\n quickFinished = true;\n }\n }\n\n if (!quickFinished) {\n if (dimSize === 1) {\n for (var i = 0; i < originalCount; i++) {\n var rawIndex = this.getRawIndex(i);\n\n var val = this._getFast(dim0, rawIndex); // Do not filter NaN, see comment above.\n\n\n if (val >= min && val <= max || isNaN(val)) {\n newIndices[offset++] = rawIndex;\n }\n }\n } else {\n for (var i = 0; i < originalCount; i++) {\n var keep = true;\n var rawIndex = this.getRawIndex(i);\n\n for (var k = 0; k < dimSize; k++) {\n var dimk = dimensions[k];\n\n var val = this._getFast(dim, rawIndex); // Do not filter NaN, see comment above.\n\n\n if (val < range[dimk][0] || val > range[dimk][1]) {\n keep = false;\n }\n }\n\n if (keep) {\n newIndices[offset++] = this.getRawIndex(i);\n }\n }\n }\n } // Set indices after filtered.\n\n\n if (offset < originalCount) {\n this._indices = newIndices;\n }\n\n this._count = offset; // Reset data extent\n\n this._extent = {};\n this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return this;\n};\n/**\n * Data mapping to a plain array\n * @param {string|Array.} [dimensions]\n * @param {Function} cb\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.mapArray = function (dimensions, cb, context, contextCompat) {\n 'use strict';\n\n if (typeof dimensions === 'function') {\n contextCompat = context;\n context = cb;\n cb = dimensions;\n dimensions = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n var result = [];\n this.each(dimensions, function () {\n result.push(cb && cb.apply(this, arguments));\n }, context);\n return result;\n}; // Data in excludeDimensions is copied, otherwise transfered.\n\n\nfunction cloneListForMapAndSample(original, excludeDimensions) {\n var allDimensions = original.dimensions;\n var list = new List(zrUtil.map(allDimensions, original.getDimensionInfo, original), original.hostModel); // FIXME If needs stackedOn, value may already been stacked\n\n transferProperties(list, original);\n var storage = list._storage = {};\n var originalStorage = original._storage; // Init storage\n\n for (var i = 0; i < allDimensions.length; i++) {\n var dim = allDimensions[i];\n\n if (originalStorage[dim]) {\n // Notice that we do not reset invertedIndicesMap here, becuase\n // there is no scenario of mapping or sampling ordinal dimension.\n if (zrUtil.indexOf(excludeDimensions, dim) >= 0) {\n storage[dim] = cloneDimStore(originalStorage[dim]);\n list._rawExtent[dim] = getInitialExtent();\n list._extent[dim] = null;\n } else {\n // Direct reference for other dimensions\n storage[dim] = originalStorage[dim];\n }\n }\n }\n\n return list;\n}\n\nfunction cloneDimStore(originalDimStore) {\n var newDimStore = new Array(originalDimStore.length);\n\n for (var j = 0; j < originalDimStore.length; j++) {\n newDimStore[j] = cloneChunk(originalDimStore[j]);\n }\n\n return newDimStore;\n}\n\nfunction getInitialExtent() {\n return [Infinity, -Infinity];\n}\n/**\n * Data mapping to a new List with given dimensions\n * @param {string|Array.} dimensions\n * @param {Function} cb\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.map = function (dimensions, cb, context, contextCompat) {\n 'use strict'; // contextCompat just for compat echarts3\n\n context = context || contextCompat || this;\n dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n var list = cloneListForMapAndSample(this, dimensions); // Following properties are all immutable.\n // So we can reference to the same value\n\n list._indices = this._indices;\n list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n var storage = list._storage;\n var tmpRetValue = [];\n var chunkSize = this._chunkSize;\n var dimSize = dimensions.length;\n var dataCount = this.count();\n var values = [];\n var rawExtent = list._rawExtent;\n\n for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {\n for (var dimIndex = 0; dimIndex < dimSize; dimIndex++) {\n values[dimIndex] = this.get(dimensions[dimIndex], dataIndex\n /*, stack */\n );\n }\n\n values[dimSize] = dataIndex;\n var retValue = cb && cb.apply(context, values);\n\n if (retValue != null) {\n // a number or string (in oridinal dimension)?\n if (typeof retValue !== 'object') {\n tmpRetValue[0] = retValue;\n retValue = tmpRetValue;\n }\n\n var rawIndex = this.getRawIndex(dataIndex);\n var chunkIndex = Math.floor(rawIndex / chunkSize);\n var chunkOffset = rawIndex % chunkSize;\n\n for (var i = 0; i < retValue.length; i++) {\n var dim = dimensions[i];\n var val = retValue[i];\n var rawExtentOnDim = rawExtent[dim];\n var dimStore = storage[dim];\n\n if (dimStore) {\n dimStore[chunkIndex][chunkOffset] = val;\n }\n\n if (val < rawExtentOnDim[0]) {\n rawExtentOnDim[0] = val;\n }\n\n if (val > rawExtentOnDim[1]) {\n rawExtentOnDim[1] = val;\n }\n }\n }\n }\n\n return list;\n};\n/**\n * Large data down sampling on given dimension\n * @param {string} dimension\n * @param {number} rate\n * @param {Function} sampleValue\n * @param {Function} sampleIndex Sample index for name and id\n */\n\n\nlistProto.downSample = function (dimension, rate, sampleValue, sampleIndex) {\n var list = cloneListForMapAndSample(this, [dimension]);\n var targetStorage = list._storage;\n var frameValues = [];\n var frameSize = Math.floor(1 / rate);\n var dimStore = targetStorage[dimension];\n var len = this.count();\n var chunkSize = this._chunkSize;\n var rawExtentOnDim = list._rawExtent[dimension];\n var newIndices = new (getIndicesCtor(this))(len);\n var offset = 0;\n\n for (var i = 0; i < len; i += frameSize) {\n // Last frame\n if (frameSize > len - i) {\n frameSize = len - i;\n frameValues.length = frameSize;\n }\n\n for (var k = 0; k < frameSize; k++) {\n var dataIdx = this.getRawIndex(i + k);\n var originalChunkIndex = Math.floor(dataIdx / chunkSize);\n var originalChunkOffset = dataIdx % chunkSize;\n frameValues[k] = dimStore[originalChunkIndex][originalChunkOffset];\n }\n\n var value = sampleValue(frameValues);\n var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len - 1));\n var sampleChunkIndex = Math.floor(sampleFrameIdx / chunkSize);\n var sampleChunkOffset = sampleFrameIdx % chunkSize; // Only write value on the filtered data\n\n dimStore[sampleChunkIndex][sampleChunkOffset] = value;\n\n if (value < rawExtentOnDim[0]) {\n rawExtentOnDim[0] = value;\n }\n\n if (value > rawExtentOnDim[1]) {\n rawExtentOnDim[1] = value;\n }\n\n newIndices[offset++] = sampleFrameIdx;\n }\n\n list._count = offset;\n list._indices = newIndices;\n list.getRawIndex = getRawIndexWithIndices;\n return list;\n};\n/**\n * Get model of one data item.\n *\n * @param {number} idx\n */\n// FIXME Model proxy ?\n\n\nlistProto.getItemModel = function (idx) {\n var hostModel = this.hostModel;\n return new Model(this.getRawDataItem(idx), hostModel, hostModel && hostModel.ecModel);\n};\n/**\n * Create a data differ\n * @param {module:echarts/data/List} otherList\n * @return {module:echarts/data/DataDiffer}\n */\n\n\nlistProto.diff = function (otherList) {\n var thisList = this;\n return new DataDiffer(otherList ? otherList.getIndices() : [], this.getIndices(), function (idx) {\n return getId(otherList, idx);\n }, function (idx) {\n return getId(thisList, idx);\n });\n};\n/**\n * Get visual property.\n * @param {string} key\n */\n\n\nlistProto.getVisual = function (key) {\n var visual = this._visual;\n return visual && visual[key];\n};\n/**\n * Set visual property\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n * setVisual('color', color);\n * setVisual({\n * 'color': color\n * });\n */\n\n\nlistProto.setVisual = function (key, val) {\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.setVisual(name, key[name]);\n }\n }\n\n return;\n }\n\n this._visual = this._visual || {};\n this._visual[key] = val;\n};\n/**\n * Set layout property.\n * @param {string|Object} key\n * @param {*} [val]\n */\n\n\nlistProto.setLayout = function (key, val) {\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.setLayout(name, key[name]);\n }\n }\n\n return;\n }\n\n this._layout[key] = val;\n};\n/**\n * Get layout property.\n * @param {string} key.\n * @return {*}\n */\n\n\nlistProto.getLayout = function (key) {\n return this._layout[key];\n};\n/**\n * Get layout of single data item\n * @param {number} idx\n */\n\n\nlistProto.getItemLayout = function (idx) {\n return this._itemLayouts[idx];\n};\n/**\n * Set layout of single data item\n * @param {number} idx\n * @param {Object} layout\n * @param {boolean=} [merge=false]\n */\n\n\nlistProto.setItemLayout = function (idx, layout, merge) {\n this._itemLayouts[idx] = merge ? zrUtil.extend(this._itemLayouts[idx] || {}, layout) : layout;\n};\n/**\n * Clear all layout of single data item\n */\n\n\nlistProto.clearItemLayouts = function () {\n this._itemLayouts.length = 0;\n};\n/**\n * Get visual property of single data item\n * @param {number} idx\n * @param {string} key\n * @param {boolean} [ignoreParent=false]\n */\n\n\nlistProto.getItemVisual = function (idx, key, ignoreParent) {\n var itemVisual = this._itemVisuals[idx];\n var val = itemVisual && itemVisual[key];\n\n if (val == null && !ignoreParent) {\n // Use global visual property\n return this.getVisual(key);\n }\n\n return val;\n};\n/**\n * Set visual property of single data item\n *\n * @param {number} idx\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n * setItemVisual(0, 'color', color);\n * setItemVisual(0, {\n * 'color': color\n * });\n */\n\n\nlistProto.setItemVisual = function (idx, key, value) {\n var itemVisual = this._itemVisuals[idx] || {};\n var hasItemVisual = this.hasItemVisual;\n this._itemVisuals[idx] = itemVisual;\n\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n itemVisual[name] = key[name];\n hasItemVisual[name] = true;\n }\n }\n\n return;\n }\n\n itemVisual[key] = value;\n hasItemVisual[key] = true;\n};\n/**\n * Clear itemVisuals and list visual.\n */\n\n\nlistProto.clearAllVisual = function () {\n this._visual = {};\n this._itemVisuals = [];\n this.hasItemVisual = {};\n};\n\nvar setItemDataAndSeriesIndex = function (child) {\n child.seriesIndex = this.seriesIndex;\n child.dataIndex = this.dataIndex;\n child.dataType = this.dataType;\n};\n/**\n * Set graphic element relative to data. It can be set as null\n * @param {number} idx\n * @param {module:zrender/Element} [el]\n */\n\n\nlistProto.setItemGraphicEl = function (idx, el) {\n var hostModel = this.hostModel;\n\n if (el) {\n // Add data index and series index for indexing the data by element\n // Useful in tooltip\n el.dataIndex = idx;\n el.dataType = this.dataType;\n el.seriesIndex = hostModel && hostModel.seriesIndex;\n\n if (el.type === 'group') {\n el.traverse(setItemDataAndSeriesIndex, el);\n }\n }\n\n this._graphicEls[idx] = el;\n};\n/**\n * @param {number} idx\n * @return {module:zrender/Element}\n */\n\n\nlistProto.getItemGraphicEl = function (idx) {\n return this._graphicEls[idx];\n};\n/**\n * @param {Function} cb\n * @param {*} context\n */\n\n\nlistProto.eachItemGraphicEl = function (cb, context) {\n zrUtil.each(this._graphicEls, function (el, idx) {\n if (el) {\n cb && cb.call(context, el, idx);\n }\n });\n};\n/**\n * Shallow clone a new list except visual and layout properties, and graph elements.\n * New list only change the indices.\n */\n\n\nlistProto.cloneShallow = function (list) {\n if (!list) {\n var dimensionInfoList = zrUtil.map(this.dimensions, this.getDimensionInfo, this);\n list = new List(dimensionInfoList, this.hostModel);\n } // FIXME\n\n\n list._storage = this._storage;\n transferProperties(list, this); // Clone will not change the data extent and indices\n\n if (this._indices) {\n var Ctor = this._indices.constructor;\n list._indices = new Ctor(this._indices);\n } else {\n list._indices = null;\n }\n\n list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return list;\n};\n/**\n * Wrap some method to add more feature\n * @param {string} methodName\n * @param {Function} injectFunction\n */\n\n\nlistProto.wrapMethod = function (methodName, injectFunction) {\n var originalMethod = this[methodName];\n\n if (typeof originalMethod !== 'function') {\n return;\n }\n\n this.__wrappedMethods = this.__wrappedMethods || [];\n\n this.__wrappedMethods.push(methodName);\n\n this[methodName] = function () {\n var res = originalMethod.apply(this, arguments);\n return injectFunction.apply(this, [res].concat(zrUtil.slice(arguments)));\n };\n}; // Methods that create a new list based on this list should be listed here.\n// Notice that those method should `RETURN` the new list.\n\n\nlistProto.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'map']; // Methods that change indices of this list should be listed here.\n\nlistProto.CHANGABLE_METHODS = ['filterSelf', 'selectRange'];\nvar _default = List;\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 _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar isObject = _util.isObject;\nvar map = _util.map;\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 * @constructor\n * @param {Object} [opt]\n * @param {Object} [opt.categories=[]]\n * @param {Object} [opt.needCollect=false]\n * @param {Object} [opt.deduplication=false]\n */\nfunction OrdinalMeta(opt) {\n /**\n * @readOnly\n * @type {Array.}\n */\n this.categories = opt.categories || [];\n /**\n * @private\n * @type {boolean}\n */\n\n this._needCollect = opt.needCollect;\n /**\n * @private\n * @type {boolean}\n */\n\n this._deduplication = opt.deduplication;\n /**\n * @private\n * @type {boolean}\n */\n\n this._map;\n}\n/**\n * @param {module:echarts/model/Model} axisModel\n * @return {module:echarts/data/OrdinalMeta}\n */\n\n\nOrdinalMeta.createByAxisModel = function (axisModel) {\n var option = axisModel.option;\n var data = option.data;\n var categories = data && map(data, getName);\n return new OrdinalMeta({\n categories: categories,\n needCollect: !categories,\n // deduplication is default in axis.\n deduplication: option.dedplication !== false\n });\n};\n\nvar proto = OrdinalMeta.prototype;\n/**\n * @param {string} category\n * @return {number} ordinal\n */\n\nproto.getOrdinal = function (category) {\n return getOrCreateMap(this).get(category);\n};\n/**\n * @param {*} category\n * @return {number} The ordinal. If not found, return NaN.\n */\n\n\nproto.parseAndCollect = function (category) {\n var index;\n var needCollect = this._needCollect; // The value of category dim can be the index of the given category set.\n // This feature is only supported when !needCollect, because we should\n // consider a common case: a value is 2017, which is a number but is\n // expected to be tread as a category. This case usually happen in dataset,\n // where it happent to be no need of the index feature.\n\n if (typeof category !== 'string' && !needCollect) {\n return category;\n } // Optimize for the scenario:\n // category is ['2012-01-01', '2012-01-02', ...], where the input\n // data has been ensured not duplicate and is large data.\n // Notice, if a dataset dimension provide categroies, usually echarts\n // should remove duplication except user tell echarts dont do that\n // (set axis.deduplication = false), because echarts do not know whether\n // the values in the category dimension has duplication (consider the\n // parallel-aqi example)\n\n\n if (needCollect && !this._deduplication) {\n index = this.categories.length;\n this.categories[index] = category;\n return index;\n }\n\n var map = getOrCreateMap(this);\n index = map.get(category);\n\n if (index == null) {\n if (needCollect) {\n index = this.categories.length;\n this.categories[index] = category;\n map.set(category, index);\n } else {\n index = NaN;\n }\n }\n\n return index;\n}; // Consider big data, do not create map until needed.\n\n\nfunction getOrCreateMap(ordinalMeta) {\n return ordinalMeta._map || (ordinalMeta._map = createHashMap(ordinalMeta.categories));\n}\n\nfunction getName(obj) {\n if (isObject(obj) && obj.value != null) {\n return obj.value;\n } else {\n return obj + '';\n }\n}\n\nvar _default = OrdinalMeta;\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 _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar isTypedArray = _util.isTypedArray;\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassCheck = _clazz.enableClassCheck;\n\nvar _sourceType = require(\"./helper/sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\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 * [sourceFormat]\n *\n * + \"original\":\n * This format is only used in series.data, where\n * itemStyle can be specified in data item.\n *\n * + \"arrayRows\":\n * [\n * ['product', 'score', 'amount'],\n * ['Matcha Latte', 89.3, 95.8],\n * ['Milk Tea', 92.1, 89.4],\n * ['Cheese Cocoa', 94.4, 91.2],\n * ['Walnut Brownie', 85.4, 76.9]\n * ]\n *\n * + \"objectRows\":\n * [\n * {product: 'Matcha Latte', score: 89.3, amount: 95.8},\n * {product: 'Milk Tea', score: 92.1, amount: 89.4},\n * {product: 'Cheese Cocoa', score: 94.4, amount: 91.2},\n * {product: 'Walnut Brownie', score: 85.4, amount: 76.9}\n * ]\n *\n * + \"keyedColumns\":\n * {\n * 'product': ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'],\n * 'count': [823, 235, 1042, 988],\n * 'score': [95.8, 81.4, 91.2, 76.9]\n * }\n *\n * + \"typedArray\"\n *\n * + \"unknown\"\n */\n\n/**\n * @constructor\n * @param {Object} fields\n * @param {string} fields.sourceFormat\n * @param {Array|Object} fields.fromDataset\n * @param {Array|Object} [fields.data]\n * @param {string} [seriesLayoutBy='column']\n * @param {Array.} [dimensionsDefine]\n * @param {Objet|HashMap} [encodeDefine]\n * @param {number} [startIndex=0]\n * @param {number} [dimensionsDetectCount]\n */\nfunction Source(fields) {\n /**\n * @type {boolean}\n */\n this.fromDataset = fields.fromDataset;\n /**\n * Not null/undefined.\n * @type {Array|Object}\n */\n\n this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);\n /**\n * See also \"detectSourceFormat\".\n * Not null/undefined.\n * @type {string}\n */\n\n this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN;\n /**\n * 'row' or 'column'\n * Not null/undefined.\n * @type {string} seriesLayoutBy\n */\n\n this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;\n /**\n * dimensions definition in option.\n * can be null/undefined.\n * @type {Array.}\n */\n\n this.dimensionsDefine = fields.dimensionsDefine;\n /**\n * encode definition in option.\n * can be null/undefined.\n * @type {Objet|HashMap}\n */\n\n this.encodeDefine = fields.encodeDefine && createHashMap(fields.encodeDefine);\n /**\n * Not null/undefined, uint.\n * @type {number}\n */\n\n this.startIndex = fields.startIndex || 0;\n /**\n * Can be null/undefined (when unknown), uint.\n * @type {number}\n */\n\n this.dimensionsDetectCount = fields.dimensionsDetectCount;\n}\n/**\n * Wrap original series data for some compatibility cases.\n */\n\n\nSource.seriesDataToSource = function (data) {\n return new Source({\n data: data,\n sourceFormat: isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL,\n fromDataset: false\n });\n};\n\nenableClassCheck(Source);\nvar _default = Source;\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 linkList = require(\"./helper/linkList\");\n\nvar List = require(\"./List\");\n\nvar createDimensions = require(\"./helper/createDimensions\");\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 * Tree data structure\n *\n * @module echarts/data/Tree\n */\n\n/**\n * @constructor module:echarts/data/Tree~TreeNode\n * @param {string} name\n * @param {module:echarts/data/Tree} hostTree\n */\nvar TreeNode = function (name, hostTree) {\n /**\n * @type {string}\n */\n this.name = name || '';\n /**\n * Depth of node\n *\n * @type {number}\n * @readOnly\n */\n\n this.depth = 0;\n /**\n * Height of the subtree rooted at this node.\n * @type {number}\n * @readOnly\n */\n\n this.height = 0;\n /**\n * @type {module:echarts/data/Tree~TreeNode}\n * @readOnly\n */\n\n this.parentNode = null;\n /**\n * Reference to list item.\n * Do not persistent dataIndex outside,\n * besause it may be changed by list.\n * If dataIndex -1,\n * this node is logical deleted (filtered) in list.\n *\n * @type {Object}\n * @readOnly\n */\n\n this.dataIndex = -1;\n /**\n * @type {Array.}\n * @readOnly\n */\n\n this.children = [];\n /**\n * @type {Array.}\n * @pubilc\n */\n\n this.viewChildren = [];\n /**\n * @type {moduel:echarts/data/Tree}\n * @readOnly\n */\n\n this.hostTree = hostTree;\n};\n\nTreeNode.prototype = {\n constructor: TreeNode,\n\n /**\n * The node is removed.\n * @return {boolean} is removed.\n */\n isRemoved: function () {\n return this.dataIndex < 0;\n },\n\n /**\n * Travel this subtree (include this node).\n * Usage:\n * node.eachNode(function () { ... }); // preorder\n * node.eachNode('preorder', function () { ... }); // preorder\n * node.eachNode('postorder', function () { ... }); // postorder\n * node.eachNode(\n * {order: 'postorder', attr: 'viewChildren'},\n * function () { ... }\n * ); // postorder\n *\n * @param {(Object|string)} options If string, means order.\n * @param {string=} options.order 'preorder' or 'postorder'\n * @param {string=} options.attr 'children' or 'viewChildren'\n * @param {Function} cb If in preorder and return false,\n * its subtree will not be visited.\n * @param {Object} [context]\n */\n eachNode: function (options, cb, context) {\n if (typeof options === 'function') {\n context = cb;\n cb = options;\n options = null;\n }\n\n options = options || {};\n\n if (zrUtil.isString(options)) {\n options = {\n order: options\n };\n }\n\n var order = options.order || 'preorder';\n var children = this[options.attr || 'children'];\n var suppressVisitSub;\n order === 'preorder' && (suppressVisitSub = cb.call(context, this));\n\n for (var i = 0; !suppressVisitSub && i < children.length; i++) {\n children[i].eachNode(options, cb, context);\n }\n\n order === 'postorder' && cb.call(context, this);\n },\n\n /**\n * Update depth and height of this subtree.\n *\n * @param {number} depth\n */\n updateDepthAndHeight: function (depth) {\n var height = 0;\n this.depth = depth;\n\n for (var i = 0; i < this.children.length; i++) {\n var child = this.children[i];\n child.updateDepthAndHeight(depth + 1);\n\n if (child.height > height) {\n height = child.height;\n }\n }\n\n this.height = height + 1;\n },\n\n /**\n * @param {string} id\n * @return {module:echarts/data/Tree~TreeNode}\n */\n getNodeById: function (id) {\n if (this.getId() === id) {\n return this;\n }\n\n for (var i = 0, children = this.children, len = children.length; i < len; i++) {\n var res = children[i].getNodeById(id);\n\n if (res) {\n return res;\n }\n }\n },\n\n /**\n * @param {module:echarts/data/Tree~TreeNode} node\n * @return {boolean}\n */\n contains: function (node) {\n if (node === this) {\n return true;\n }\n\n for (var i = 0, children = this.children, len = children.length; i < len; i++) {\n var res = children[i].contains(node);\n\n if (res) {\n return res;\n }\n }\n },\n\n /**\n * @param {boolean} includeSelf Default false.\n * @return {Array.} order: [root, child, grandchild, ...]\n */\n getAncestors: function (includeSelf) {\n var ancestors = [];\n var node = includeSelf ? this : this.parentNode;\n\n while (node) {\n ancestors.push(node);\n node = node.parentNode;\n }\n\n ancestors.reverse();\n return ancestors;\n },\n\n /**\n * @param {string|Array=} [dimension='value'] Default 'value'. can be 0, 1, 2, 3\n * @return {number} Value.\n */\n getValue: function (dimension) {\n var data = this.hostTree.data;\n return data.get(data.getDimension(dimension || 'value'), this.dataIndex);\n },\n\n /**\n * @param {Object} layout\n * @param {boolean=} [merge=false]\n */\n setLayout: function (layout, merge) {\n this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, layout, merge);\n },\n\n /**\n * @return {Object} layout\n */\n getLayout: function () {\n return this.hostTree.data.getItemLayout(this.dataIndex);\n },\n\n /**\n * @param {string} [path]\n * @return {module:echarts/model/Model}\n */\n getModel: function (path) {\n if (this.dataIndex < 0) {\n return;\n }\n\n var hostTree = this.hostTree;\n var itemModel = hostTree.data.getItemModel(this.dataIndex);\n return itemModel.getModel(path);\n },\n\n /**\n * @example\n * setItemVisual('color', color);\n * setItemVisual({\n * 'color': color\n * });\n */\n setVisual: function (key, value) {\n this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, key, value);\n },\n\n /**\n * Get item visual\n */\n getVisual: function (key, ignoreParent) {\n return this.hostTree.data.getItemVisual(this.dataIndex, key, ignoreParent);\n },\n\n /**\n * @public\n * @return {number}\n */\n getRawIndex: function () {\n return this.hostTree.data.getRawIndex(this.dataIndex);\n },\n\n /**\n * @public\n * @return {string}\n */\n getId: function () {\n return this.hostTree.data.getId(this.dataIndex);\n },\n\n /**\n * if this is an ancestor of another node\n *\n * @public\n * @param {TreeNode} node another node\n * @return {boolean} if is ancestor\n */\n isAncestorOf: function (node) {\n var parent = node.parentNode;\n\n while (parent) {\n if (parent === this) {\n return true;\n }\n\n parent = parent.parentNode;\n }\n\n return false;\n },\n\n /**\n * if this is an descendant of another node\n *\n * @public\n * @param {TreeNode} node another node\n * @return {boolean} if is descendant\n */\n isDescendantOf: function (node) {\n return node !== this && node.isAncestorOf(this);\n }\n};\n/**\n * @constructor\n * @alias module:echarts/data/Tree\n * @param {module:echarts/model/Model} hostModel\n */\n\nfunction Tree(hostModel) {\n /**\n * @type {module:echarts/data/Tree~TreeNode}\n * @readOnly\n */\n this.root;\n /**\n * @type {module:echarts/data/List}\n * @readOnly\n */\n\n this.data;\n /**\n * Index of each item is the same as the raw index of coresponding list item.\n * @private\n * @type {Array.} sysDims Necessary dimensions, like ['x', 'y'], which\n * provides not only dim template, but also default order.\n * properties: 'name', 'type', 'displayName'.\n * `name` of each item provides default coord name.\n * [{dimsDef: [string|Object, ...]}, ...] dimsDef of sysDim item provides default dim name, and\n * provide dims count that the sysDim required.\n * [{ordinalMeta}] can be specified.\n * @param {module:echarts/data/Source|Array|Object} source or data (for compatibal with pervious)\n * @param {Object} [opt]\n * @param {Array.} [opt.dimsDef] option.series.dimensions User defined dimensions\n * For example: ['asdf', {name, type}, ...].\n * @param {Object|HashMap} [opt.encodeDef] option.series.encode {x: 2, y: [3, 1], tooltip: [1, 2], label: 3}\n * @param {Function} [opt.encodeDefaulter] Called if no `opt.encodeDef` exists.\n * If not specified, auto find the next available data dim.\n * param source {module:data/Source}\n * param dimCount {number}\n * return {Object} encode Never be `null/undefined`.\n * @param {string} [opt.generateCoord] Generate coord dim with the given name.\n * If not specified, extra dim names will be:\n * 'value', 'value0', 'value1', ...\n * @param {number} [opt.generateCoordCount] By default, the generated dim name is `generateCoord`.\n * If `generateCoordCount` specified, the generated dim names will be:\n * `generateCoord` + 0, `generateCoord` + 1, ...\n * can be Infinity, indicate that use all of the remain columns.\n * @param {number} [opt.dimCount] If not specified, guess by the first data item.\n * @return {Array.}\n */\nfunction completeDimensions(sysDims, source, opt) {\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n opt = opt || {};\n sysDims = (sysDims || []).slice();\n var dimsDef = (opt.dimsDef || []).slice();\n var dataDimNameMap = createHashMap();\n var coordDimNameMap = createHashMap(); // var valueCandidate;\n\n var result = [];\n var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimCount); // Apply user defined dims (`name` and `type`) and init result.\n\n for (var i = 0; i < dimCount; i++) {\n var dimDefItem = dimsDef[i] = extend({}, isObject(dimsDef[i]) ? dimsDef[i] : {\n name: dimsDef[i]\n });\n var userDimName = dimDefItem.name;\n var resultItem = result[i] = new DataDimensionInfo(); // Name will be applied later for avoiding duplication.\n\n if (userDimName != null && dataDimNameMap.get(userDimName) == null) {\n // Only if `series.dimensions` is defined in option\n // displayName, will be set, and dimension will be diplayed vertically in\n // tooltip by default.\n resultItem.name = resultItem.displayName = userDimName;\n dataDimNameMap.set(userDimName, i);\n }\n\n dimDefItem.type != null && (resultItem.type = dimDefItem.type);\n dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName);\n }\n\n var encodeDef = opt.encodeDef;\n\n if (!encodeDef && opt.encodeDefaulter) {\n encodeDef = opt.encodeDefaulter(source, dimCount);\n }\n\n encodeDef = createHashMap(encodeDef); // Set `coordDim` and `coordDimIndex` by `encodeDef` and normalize `encodeDef`.\n\n encodeDef.each(function (dataDims, coordDim) {\n dataDims = normalizeToArray(dataDims).slice(); // Note: It is allowed that `dataDims.length` is `0`, e.g., options is\n // `{encode: {x: -1, y: 1}}`. Should not filter anything in\n // this case.\n\n if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) {\n encodeDef.set(coordDim, false);\n return;\n }\n\n var validDataDims = encodeDef.set(coordDim, []);\n each(dataDims, function (resultDimIdx, idx) {\n // The input resultDimIdx can be dim name or index.\n isString(resultDimIdx) && (resultDimIdx = dataDimNameMap.get(resultDimIdx));\n\n if (resultDimIdx != null && resultDimIdx < dimCount) {\n validDataDims[idx] = resultDimIdx;\n applyDim(result[resultDimIdx], coordDim, idx);\n }\n });\n }); // Apply templetes and default order from `sysDims`.\n\n var availDimIdx = 0;\n each(sysDims, function (sysDimItem, sysDimIndex) {\n var coordDim;\n var sysDimItem;\n var sysDimItemDimsDef;\n var sysDimItemOtherDims;\n\n if (isString(sysDimItem)) {\n coordDim = sysDimItem;\n sysDimItem = {};\n } else {\n coordDim = sysDimItem.name;\n var ordinalMeta = sysDimItem.ordinalMeta;\n sysDimItem.ordinalMeta = null;\n sysDimItem = clone(sysDimItem);\n sysDimItem.ordinalMeta = ordinalMeta; // `coordDimIndex` should not be set directly.\n\n sysDimItemDimsDef = sysDimItem.dimsDef;\n sysDimItemOtherDims = sysDimItem.otherDims;\n sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = sysDimItem.dimsDef = sysDimItem.otherDims = null;\n }\n\n var dataDims = encodeDef.get(coordDim); // negative resultDimIdx means no need to mapping.\n\n if (dataDims === false) {\n return;\n }\n\n var dataDims = normalizeToArray(dataDims); // dimensions provides default dim sequences.\n\n if (!dataDims.length) {\n for (var i = 0; i < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i++) {\n while (availDimIdx < result.length && result[availDimIdx].coordDim != null) {\n availDimIdx++;\n }\n\n availDimIdx < result.length && dataDims.push(availDimIdx++);\n }\n } // Apply templates.\n\n\n each(dataDims, function (resultDimIdx, coordDimIndex) {\n var resultItem = result[resultDimIdx];\n applyDim(defaults(resultItem, sysDimItem), coordDim, coordDimIndex);\n\n if (resultItem.name == null && sysDimItemDimsDef) {\n var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex];\n !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = {\n name: sysDimItemDimsDefItem\n });\n resultItem.name = resultItem.displayName = sysDimItemDimsDefItem.name;\n resultItem.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip;\n } // FIXME refactor, currently only used in case: {otherDims: {tooltip: false}}\n\n\n sysDimItemOtherDims && defaults(resultItem.otherDims, sysDimItemOtherDims);\n });\n });\n\n function applyDim(resultItem, coordDim, coordDimIndex) {\n if (OTHER_DIMENSIONS.get(coordDim) != null) {\n resultItem.otherDims[coordDim] = coordDimIndex;\n } else {\n resultItem.coordDim = coordDim;\n resultItem.coordDimIndex = coordDimIndex;\n coordDimNameMap.set(coordDim, true);\n }\n } // Make sure the first extra dim is 'value'.\n\n\n var generateCoord = opt.generateCoord;\n var generateCoordCount = opt.generateCoordCount;\n var fromZero = generateCoordCount != null;\n generateCoordCount = generateCoord ? generateCoordCount || 1 : 0;\n var extra = generateCoord || 'value'; // Set dim `name` and other `coordDim` and other props.\n\n for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {\n var resultItem = result[resultDimIdx] = result[resultDimIdx] || new DataDimensionInfo();\n var coordDim = resultItem.coordDim;\n\n if (coordDim == null) {\n resultItem.coordDim = genName(extra, coordDimNameMap, fromZero);\n resultItem.coordDimIndex = 0;\n\n if (!generateCoord || generateCoordCount <= 0) {\n resultItem.isExtraCoord = true;\n }\n\n generateCoordCount--;\n }\n\n resultItem.name == null && (resultItem.name = genName(resultItem.coordDim, dataDimNameMap));\n\n if (resultItem.type == null && (guessOrdinal(source, resultDimIdx, resultItem.name) === BE_ORDINAL.Must // Consider the case:\n // {\n // dataset: {source: [\n // ['2001', 123],\n // ['2002', 456],\n // ...\n // ['The others', 987],\n // ]},\n // series: {type: 'pie'}\n // }\n // The first colum should better be treated as a \"ordinal\" although it\n // might not able to be detected as an \"ordinal\" by `guessOrdinal`.\n || resultItem.isExtraCoord && (resultItem.otherDims.itemName != null || resultItem.otherDims.seriesName != null))) {\n resultItem.type = 'ordinal';\n }\n }\n\n return result;\n} // ??? TODO\n// Originally detect dimCount by data[0]. Should we\n// optimize it to only by sysDims and dimensions and encode.\n// So only necessary dims will be initialized.\n// But\n// (1) custom series should be considered. where other dims\n// may be visited.\n// (2) sometimes user need to calcualte bubble size or use visualMap\n// on other dimensions besides coordSys needed.\n// So, dims that is not used by system, should be shared in storage?\n\n\nfunction getDimCount(source, sysDims, dimsDef, optDimCount) {\n // Note that the result dimCount should not small than columns count\n // of data, otherwise `dataDimNameMap` checking will be incorrect.\n var dimCount = Math.max(source.dimensionsDetectCount || 1, sysDims.length, dimsDef.length, optDimCount || 0);\n each(sysDims, function (sysDimItem) {\n var sysDimItemDimsDef = sysDimItem.dimsDef;\n sysDimItemDimsDef && (dimCount = Math.max(dimCount, sysDimItemDimsDef.length));\n });\n return dimCount;\n}\n\nfunction genName(name, map, fromZero) {\n if (fromZero || map.get(name) != null) {\n var i = 0;\n\n while (map.get(name + i) != null) {\n i++;\n }\n\n name += i;\n }\n\n map.set(name, true);\n return name;\n}\n\nvar _default = completeDimensions;\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 completeDimensions = require(\"./completeDimensions\");\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 * Substitute `completeDimensions`.\n * `completeDimensions` is to be deprecated.\n */\n\n/**\n * @param {module:echarts/data/Source|module:echarts/data/List} source or data.\n * @param {Object|Array} [opt]\n * @param {Array.} [opt.coordDimensions=[]]\n * @param {number} [opt.dimensionsCount]\n * @param {string} [opt.generateCoord]\n * @param {string} [opt.generateCoordCount]\n * @param {Array.} [opt.dimensionsDefine=source.dimensionsDefine] Overwrite source define.\n * @param {Object|HashMap} [opt.encodeDefine=source.encodeDefine] Overwrite source define.\n * @param {Function} [opt.encodeDefaulter] Make default encode if user not specified.\n * @return {Array.} dimensionsInfo\n */\nfunction _default(source, opt) {\n opt = opt || {};\n return completeDimensions(opt.coordDimensions || [], source, {\n dimsDef: opt.dimensionsDefine || source.dimensionsDefine,\n encodeDef: opt.encodeDefine || source.encodeDefine,\n dimCount: opt.dimensionsCount,\n encodeDefaulter: opt.encodeDefaulter,\n generateCoord: opt.generateCoord,\n generateCoordCount: opt.generateCoordCount\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isTypedArray = _util.isTypedArray;\nvar extend = _util.extend;\nvar assert = _util.assert;\nvar each = _util.each;\nvar isObject = _util.isObject;\n\nvar _model = require(\"../../util/model\");\n\nvar getDataItemValue = _model.getDataItemValue;\nvar isDataItemOption = _model.isDataItemOption;\n\nvar _number = require(\"../../util/number\");\n\nvar parseDate = _number.parseDate;\n\nvar Source = require(\"../Source\");\n\nvar _sourceType = require(\"./sourceType\");\n\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\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\n// ??? refactor? check the outer usage of data provider.\n// merge with defaultDimValueGetter?\n\n/**\n * If normal array used, mutable chunk size is supported.\n * If typed array used, chunk size must be fixed.\n */\nfunction DefaultDataProvider(source, dimSize) {\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n this._source = source;\n var data = this._data = source.data;\n var sourceFormat = source.sourceFormat; // Typed array. TODO IE10+?\n\n if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\n this._offset = 0;\n this._dimSize = dimSize;\n this._data = data;\n }\n\n var methods = providerMethods[sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ? sourceFormat + '_' + source.seriesLayoutBy : sourceFormat];\n extend(this, methods);\n}\n\nvar providerProto = DefaultDataProvider.prototype; // If data is pure without style configuration\n\nproviderProto.pure = false; // If data is persistent and will not be released after use.\n\nproviderProto.persistent = true; // ???! FIXME legacy data provider do not has method getSource\n\nproviderProto.getSource = function () {\n return this._source;\n};\n\nvar providerMethods = {\n 'arrayRows_column': {\n pure: true,\n count: function () {\n return Math.max(0, this._data.length - this._source.startIndex);\n },\n getItem: function (idx) {\n return this._data[idx + this._source.startIndex];\n },\n appendData: appendDataSimply\n },\n 'arrayRows_row': {\n pure: true,\n count: function () {\n var row = this._data[0];\n return row ? Math.max(0, row.length - this._source.startIndex) : 0;\n },\n getItem: function (idx) {\n idx += this._source.startIndex;\n var item = [];\n var data = this._data;\n\n for (var i = 0; i < data.length; i++) {\n var row = data[i];\n item.push(row ? row[idx] : null);\n }\n\n return item;\n },\n appendData: function () {\n throw new Error('Do not support appendData when set seriesLayoutBy: \"row\".');\n }\n },\n 'objectRows': {\n pure: true,\n count: countSimply,\n getItem: getItemSimply,\n appendData: appendDataSimply\n },\n 'keyedColumns': {\n pure: true,\n count: function () {\n var dimName = this._source.dimensionsDefine[0].name;\n var col = this._data[dimName];\n return col ? col.length : 0;\n },\n getItem: function (idx) {\n var item = [];\n var dims = this._source.dimensionsDefine;\n\n for (var i = 0; i < dims.length; i++) {\n var col = this._data[dims[i].name];\n item.push(col ? col[idx] : null);\n }\n\n return item;\n },\n appendData: function (newData) {\n var data = this._data;\n each(newData, function (newCol, key) {\n var oldCol = data[key] || (data[key] = []);\n\n for (var i = 0; i < (newCol || []).length; i++) {\n oldCol.push(newCol[i]);\n }\n });\n }\n },\n 'original': {\n count: countSimply,\n getItem: getItemSimply,\n appendData: appendDataSimply\n },\n 'typedArray': {\n persistent: false,\n pure: true,\n count: function () {\n return this._data ? this._data.length / this._dimSize : 0;\n },\n getItem: function (idx, out) {\n idx = idx - this._offset;\n out = out || [];\n var offset = this._dimSize * idx;\n\n for (var i = 0; i < this._dimSize; i++) {\n out[i] = this._data[offset + i];\n }\n\n return out;\n },\n appendData: function (newData) {\n this._data = newData;\n },\n // Clean self if data is already used.\n clean: function () {\n // PENDING\n this._offset += this.count();\n this._data = null;\n }\n }\n};\n\nfunction countSimply() {\n return this._data.length;\n}\n\nfunction getItemSimply(idx) {\n return this._data[idx];\n}\n\nfunction appendDataSimply(newData) {\n for (var i = 0; i < newData.length; i++) {\n this._data.push(newData[i]);\n }\n}\n\nvar rawValueGetters = {\n arrayRows: getRawValueSimply,\n objectRows: function (dataItem, dataIndex, dimIndex, dimName) {\n return dimIndex != null ? dataItem[dimName] : dataItem;\n },\n keyedColumns: getRawValueSimply,\n original: function (dataItem, dataIndex, dimIndex, dimName) {\n // FIXME\n // In some case (markpoint in geo (geo-map.html)), dataItem\n // is {coord: [...]}\n var value = getDataItemValue(dataItem);\n return dimIndex == null || !(value instanceof Array) ? value : value[dimIndex];\n },\n typedArray: getRawValueSimply\n};\n\nfunction getRawValueSimply(dataItem, dataIndex, dimIndex, dimName) {\n return dimIndex != null ? dataItem[dimIndex] : dataItem;\n}\n\nvar defaultDimValueGetters = {\n arrayRows: getDimValueSimply,\n objectRows: function (dataItem, dimName, dataIndex, dimIndex) {\n return converDataValue(dataItem[dimName], this._dimensionInfos[dimName]);\n },\n keyedColumns: getDimValueSimply,\n original: function (dataItem, dimName, dataIndex, dimIndex) {\n // Performance sensitive, do not use modelUtil.getDataItemValue.\n // If dataItem is an plain object with no value field, the var `value`\n // will be assigned with the object, but it will be tread correctly\n // in the `convertDataValue`.\n var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value); // If any dataItem is like { value: 10 }\n\n if (!this._rawData.pure && isDataItemOption(dataItem)) {\n this.hasItemOption = true;\n }\n\n return converDataValue(value instanceof Array ? value[dimIndex] // If value is a single number or something else not array.\n : value, this._dimensionInfos[dimName]);\n },\n typedArray: function (dataItem, dimName, dataIndex, dimIndex) {\n return dataItem[dimIndex];\n }\n};\n\nfunction getDimValueSimply(dataItem, dimName, dataIndex, dimIndex) {\n return converDataValue(dataItem[dimIndex], this._dimensionInfos[dimName]);\n}\n/**\n * This helper method convert value in data.\n * @param {string|number|Date} value\n * @param {Object|string} [dimInfo] If string (like 'x'), dimType defaults 'number'.\n * If \"dimInfo.ordinalParseAndSave\", ordinal value can be parsed.\n */\n\n\nfunction converDataValue(value, dimInfo) {\n // Performance sensitive.\n var dimType = dimInfo && dimInfo.type;\n\n if (dimType === 'ordinal') {\n // If given value is a category string\n var ordinalMeta = dimInfo && dimInfo.ordinalMeta;\n return ordinalMeta ? ordinalMeta.parseAndCollect(value) : value;\n }\n\n if (dimType === 'time' // spead up when using timestamp\n && typeof value !== 'number' && value != null && value !== '-') {\n value = +parseDate(value);\n } // dimType defaults 'number'.\n // If dimType is not ordinal and value is null or undefined or NaN or '-',\n // parse to NaN.\n\n\n return value == null || value === '' ? NaN // If string (like '-'), using '+' parse to NaN\n // If object, also parse to NaN\n : +value;\n} // ??? FIXME can these logic be more neat: getRawValue, getRawDataItem,\n// Consider persistent.\n// Caution: why use raw value to display on label or tooltip?\n// A reason is to avoid format. For example time value we do not know\n// how to format is expected. More over, if stack is used, calculated\n// value may be 0.91000000001, which have brings trouble to display.\n// TODO: consider how to treat null/undefined/NaN when display?\n\n/**\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string|number} [dim] dimName or dimIndex\n * @return {Array.|string|number} can be null/undefined.\n */\n\n\nfunction retrieveRawValue(data, dataIndex, dim) {\n if (!data) {\n return;\n } // Consider data may be not persistent.\n\n\n var dataItem = data.getRawDataItem(dataIndex);\n\n if (dataItem == null) {\n return;\n }\n\n var sourceFormat = data.getProvider().getSource().sourceFormat;\n var dimName;\n var dimIndex;\n var dimInfo = data.getDimensionInfo(dim);\n\n if (dimInfo) {\n dimName = dimInfo.name;\n dimIndex = dimInfo.index;\n }\n\n return rawValueGetters[sourceFormat](dataItem, dataIndex, dimIndex, dimName);\n}\n/**\n * Compatible with some cases (in pie, map) like:\n * data: [{name: 'xx', value: 5, selected: true}, ...]\n * where only sourceFormat is 'original' and 'objectRows' supported.\n *\n * ??? TODO\n * Supported detail options in data item when using 'arrayRows'.\n *\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string} attr like 'selected'\n */\n\n\nfunction retrieveRawAttr(data, dataIndex, attr) {\n if (!data) {\n return;\n }\n\n var sourceFormat = data.getProvider().getSource().sourceFormat;\n\n if (sourceFormat !== SOURCE_FORMAT_ORIGINAL && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) {\n return;\n }\n\n var dataItem = data.getRawDataItem(dataIndex);\n\n if (sourceFormat === SOURCE_FORMAT_ORIGINAL && !isObject(dataItem)) {\n dataItem = null;\n }\n\n if (dataItem) {\n return dataItem[attr];\n }\n}\n\nexports.DefaultDataProvider = DefaultDataProvider;\nexports.defaultDimValueGetters = defaultDimValueGetters;\nexports.retrieveRawValue = retrieveRawValue;\nexports.retrieveRawAttr = retrieveRawAttr;","\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 _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar isString = _util.isString;\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 * Note that it is too complicated to support 3d stack by value\n * (have to create two-dimension inverted index), so in 3d case\n * we just support that stacked by index.\n *\n * @param {module:echarts/model/Series} seriesModel\n * @param {Array.} dimensionInfoList The same as the input of .\n * The input dimensionInfoList will be modified.\n * @param {Object} [opt]\n * @param {boolean} [opt.stackedCoordDimension=''] Specify a coord dimension if needed.\n * @param {boolean} [opt.byIndex=false]\n * @return {Object} calculationInfo\n * {\n * stackedDimension: string\n * stackedByDimension: string\n * isStackedByIndex: boolean\n * stackedOverDimension: string\n * stackResultDimension: string\n * }\n */\nfunction enableDataStack(seriesModel, dimensionInfoList, opt) {\n opt = opt || {};\n var byIndex = opt.byIndex;\n var stackedCoordDimension = opt.stackedCoordDimension; // Compatibal: when `stack` is set as '', do not stack.\n\n var mayStack = !!(seriesModel && seriesModel.get('stack'));\n var stackedByDimInfo;\n var stackedDimInfo;\n var stackResultDimension;\n var stackedOverDimension;\n each(dimensionInfoList, function (dimensionInfo, index) {\n if (isString(dimensionInfo)) {\n dimensionInfoList[index] = dimensionInfo = {\n name: dimensionInfo\n };\n }\n\n if (mayStack && !dimensionInfo.isExtraCoord) {\n // Find the first ordinal dimension as the stackedByDimInfo.\n if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) {\n stackedByDimInfo = dimensionInfo;\n } // Find the first stackable dimension as the stackedDimInfo.\n\n\n if (!stackedDimInfo && dimensionInfo.type !== 'ordinal' && dimensionInfo.type !== 'time' && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) {\n stackedDimInfo = dimensionInfo;\n }\n }\n });\n\n if (stackedDimInfo && !byIndex && !stackedByDimInfo) {\n // Compatible with previous design, value axis (time axis) only stack by index.\n // It may make sense if the user provides elaborately constructed data.\n byIndex = true;\n } // Add stack dimension, they can be both calculated by coordinate system in `unionExtent`.\n // That put stack logic in List is for using conveniently in echarts extensions, but it\n // might not be a good way.\n\n\n if (stackedDimInfo) {\n // Use a weird name that not duplicated with other names.\n stackResultDimension = '__\\0ecstackresult';\n stackedOverDimension = '__\\0ecstackedover'; // Create inverted index to fast query index by value.\n\n if (stackedByDimInfo) {\n stackedByDimInfo.createInvertedIndices = true;\n }\n\n var stackedDimCoordDim = stackedDimInfo.coordDim;\n var stackedDimType = stackedDimInfo.type;\n var stackedDimCoordIndex = 0;\n each(dimensionInfoList, function (dimensionInfo) {\n if (dimensionInfo.coordDim === stackedDimCoordDim) {\n stackedDimCoordIndex++;\n }\n });\n dimensionInfoList.push({\n name: stackResultDimension,\n coordDim: stackedDimCoordDim,\n coordDimIndex: stackedDimCoordIndex,\n type: stackedDimType,\n isExtraCoord: true,\n isCalculationCoord: true\n });\n stackedDimCoordIndex++;\n dimensionInfoList.push({\n name: stackedOverDimension,\n // This dimension contains stack base (generally, 0), so do not set it as\n // `stackedDimCoordDim` to avoid extent calculation, consider log scale.\n coordDim: stackedOverDimension,\n coordDimIndex: stackedDimCoordIndex,\n type: stackedDimType,\n isExtraCoord: true,\n isCalculationCoord: true\n });\n }\n\n return {\n stackedDimension: stackedDimInfo && stackedDimInfo.name,\n stackedByDimension: stackedByDimInfo && stackedByDimInfo.name,\n isStackedByIndex: byIndex,\n stackedOverDimension: stackedOverDimension,\n stackResultDimension: stackResultDimension\n };\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {string} stackedDim\n */\n\n\nfunction isDimensionStacked(data, stackedDim\n/*, stackedByDim*/\n) {\n // Each single series only maps to one pair of axis. So we do not need to\n // check stackByDim, whatever stacked by a dimension or stacked by index.\n return !!stackedDim && stackedDim === data.getCalculationInfo('stackedDimension'); // && (\n // stackedByDim != null\n // ? stackedByDim === data.getCalculationInfo('stackedByDimension')\n // : data.getCalculationInfo('isStackedByIndex')\n // );\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {string} targetDim\n * @param {string} [stackedByDim] If not input this parameter, check whether\n * stacked by index.\n * @return {string} dimension\n */\n\n\nfunction getStackedDimension(data, targetDim) {\n return isDimensionStacked(data, targetDim) ? data.getCalculationInfo('stackResultDimension') : targetDim;\n}\n\nexports.enableDataStack = enableDataStack;\nexports.isDimensionStacked = isDimensionStacked;\nexports.getStackedDimension = getStackedDimension;","\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 _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar createHashMap = _util.createHashMap;\nvar assert = _util.assert;\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\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 OTHER_DIMENSIONS = createHashMap(['tooltip', 'label', 'itemName', 'itemId', 'seriesName']);\n\nfunction summarizeDimensions(data) {\n var summary = {};\n var encode = summary.encode = {};\n var notExtraCoordDimMap = createHashMap();\n var defaultedLabel = [];\n var defaultedTooltip = []; // See the comment of `List.js#userOutput`.\n\n var userOutput = summary.userOutput = {\n dimensionNames: data.dimensions.slice(),\n encode: {}\n };\n each(data.dimensions, function (dimName) {\n var dimItem = data.getDimensionInfo(dimName);\n var coordDim = dimItem.coordDim;\n\n if (coordDim) {\n var coordDimIndex = dimItem.coordDimIndex;\n getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName;\n\n if (!dimItem.isExtraCoord) {\n notExtraCoordDimMap.set(coordDim, 1); // Use the last coord dim (and label friendly) as default label,\n // because when dataset is used, it is hard to guess which dimension\n // can be value dimension. If both show x, y on label is not look good,\n // and conventionally y axis is focused more.\n\n if (mayLabelDimType(dimItem.type)) {\n defaultedLabel[0] = dimName;\n } // User output encode do not contain generated coords.\n // And it only has index. User can use index to retrieve value from the raw item array.\n\n\n getOrCreateEncodeArr(userOutput.encode, coordDim)[coordDimIndex] = dimItem.index;\n }\n\n if (dimItem.defaultTooltip) {\n defaultedTooltip.push(dimName);\n }\n }\n\n OTHER_DIMENSIONS.each(function (v, otherDim) {\n var encodeArr = getOrCreateEncodeArr(encode, otherDim);\n var dimIndex = dimItem.otherDims[otherDim];\n\n if (dimIndex != null && dimIndex !== false) {\n encodeArr[dimIndex] = dimItem.name;\n }\n });\n });\n var dataDimsOnCoord = [];\n var encodeFirstDimNotExtra = {};\n notExtraCoordDimMap.each(function (v, coordDim) {\n var dimArr = encode[coordDim]; // ??? FIXME extra coord should not be set in dataDimsOnCoord.\n // But should fix the case that radar axes: simplify the logic\n // of `completeDimension`, remove `extraPrefix`.\n\n encodeFirstDimNotExtra[coordDim] = dimArr[0]; // Not necessary to remove duplicate, because a data\n // dim canot on more than one coordDim.\n\n dataDimsOnCoord = dataDimsOnCoord.concat(dimArr);\n });\n summary.dataDimsOnCoord = dataDimsOnCoord;\n summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;\n var encodeLabel = encode.label; // FIXME `encode.label` is not recommanded, because formatter can not be set\n // in this way. Use label.formatter instead. May be remove this approach someday.\n\n if (encodeLabel && encodeLabel.length) {\n defaultedLabel = encodeLabel.slice();\n }\n\n var encodeTooltip = encode.tooltip;\n\n if (encodeTooltip && encodeTooltip.length) {\n defaultedTooltip = encodeTooltip.slice();\n } else if (!defaultedTooltip.length) {\n defaultedTooltip = defaultedLabel.slice();\n }\n\n encode.defaultedLabel = defaultedLabel;\n encode.defaultedTooltip = defaultedTooltip;\n return summary;\n}\n\nfunction getOrCreateEncodeArr(encode, dim) {\n if (!encode.hasOwnProperty(dim)) {\n encode[dim] = [];\n }\n\n return encode[dim];\n}\n\nfunction getDimensionTypeByAxis(axisType) {\n return axisType === 'category' ? 'ordinal' : axisType === 'time' ? 'time' : 'float';\n}\n\nfunction mayLabelDimType(dimType) {\n // In most cases, ordinal and time do not suitable for label.\n // Ordinal info can be displayed on axis. Time is too long.\n return !(dimType === 'ordinal' || dimType === 'time');\n} // function findTheLastDimMayLabel(data) {\n// // Get last value dim\n// var dimensions = data.dimensions.slice();\n// var valueType;\n// var valueDim;\n// while (dimensions.length && (\n// valueDim = dimensions.pop(),\n// valueType = data.getDimensionInfo(valueDim).type,\n// valueType === 'ordinal' || valueType === 'time'\n// )) {} // jshint ignore:line\n// return valueDim;\n// }\n\n\nexports.OTHER_DIMENSIONS = OTHER_DIMENSIONS;\nexports.summarizeDimensions = summarizeDimensions;\nexports.getDimensionTypeByAxis = getDimensionTypeByAxis;","\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*/\n\n/**\n * Link lists and struct (graph or tree)\n */\nvar each = zrUtil.each;\nvar DATAS = '\\0__link_datas';\nvar MAIN_DATA = '\\0__link_mainData'; // Caution:\n// In most case, either list or its shallow clones (see list.cloneShallow)\n// is active in echarts process. So considering heap memory consumption,\n// we do not clone tree or graph, but share them among list and its shallow clones.\n// But in some rare case, we have to keep old list (like do animation in chart). So\n// please take care that both the old list and the new list share the same tree/graph.\n\n/**\n * @param {Object} opt\n * @param {module:echarts/data/List} opt.mainData\n * @param {Object} [opt.struct] For example, instance of Graph or Tree.\n * @param {string} [opt.structAttr] designation: list[structAttr] = struct;\n * @param {Object} [opt.datas] {dataType: data},\n * like: {node: nodeList, edge: edgeList}.\n * Should contain mainData.\n * @param {Object} [opt.datasAttr] {dataType: attr},\n * designation: struct[datasAttr[dataType]] = list;\n */\n\nfunction linkList(opt) {\n var mainData = opt.mainData;\n var datas = opt.datas;\n\n if (!datas) {\n datas = {\n main: mainData\n };\n opt.datasAttr = {\n main: 'data'\n };\n }\n\n opt.datas = opt.mainData = null;\n linkAll(mainData, datas, opt); // Porxy data original methods.\n\n each(datas, function (data) {\n each(mainData.TRANSFERABLE_METHODS, function (methodName) {\n data.wrapMethod(methodName, zrUtil.curry(transferInjection, opt));\n });\n }); // Beyond transfer, additional features should be added to `cloneShallow`.\n\n mainData.wrapMethod('cloneShallow', zrUtil.curry(cloneShallowInjection, opt)); // Only mainData trigger change, because struct.update may trigger\n // another changable methods, which may bring about dead lock.\n\n each(mainData.CHANGABLE_METHODS, function (methodName) {\n mainData.wrapMethod(methodName, zrUtil.curry(changeInjection, opt));\n }); // Make sure datas contains mainData.\n\n zrUtil.assert(datas[mainData.dataType] === mainData);\n}\n\nfunction transferInjection(opt, res) {\n if (isMainData(this)) {\n // Transfer datas to new main data.\n var datas = zrUtil.extend({}, this[DATAS]);\n datas[this.dataType] = res;\n linkAll(res, datas, opt);\n } else {\n // Modify the reference in main data to point newData.\n linkSingle(res, this.dataType, this[MAIN_DATA], opt);\n }\n\n return res;\n}\n\nfunction changeInjection(opt, res) {\n opt.struct && opt.struct.update(this);\n return res;\n}\n\nfunction cloneShallowInjection(opt, res) {\n // cloneShallow, which brings about some fragilities, may be inappropriate\n // to be exposed as an API. So for implementation simplicity we can make\n // the restriction that cloneShallow of not-mainData should not be invoked\n // outside, but only be invoked here.\n each(res[DATAS], function (data, dataType) {\n data !== res && linkSingle(data.cloneShallow(), dataType, res, opt);\n });\n return res;\n}\n/**\n * Supplement method to List.\n *\n * @public\n * @param {string} [dataType] If not specified, return mainData.\n * @return {module:echarts/data/List}\n */\n\n\nfunction getLinkedData(dataType) {\n var mainData = this[MAIN_DATA];\n return dataType == null || mainData == null ? mainData : mainData[DATAS][dataType];\n}\n\nfunction isMainData(data) {\n return data[MAIN_DATA] === data;\n}\n\nfunction linkAll(mainData, datas, opt) {\n mainData[DATAS] = {};\n each(datas, function (data, dataType) {\n linkSingle(data, dataType, mainData, opt);\n });\n}\n\nfunction linkSingle(data, dataType, mainData, opt) {\n mainData[DATAS][dataType] = data;\n data[MAIN_DATA] = mainData;\n data.dataType = dataType;\n\n if (opt.struct) {\n data[opt.structAttr] = opt.struct;\n opt.struct[opt.datasAttr[dataType]] = data;\n } // Supplement method.\n\n\n data.getLinkedData = getLinkedData;\n}\n\nvar _default = linkList;\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\nvar getDataItemValue = _model.getDataItemValue;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\nvar map = _util.map;\nvar isArray = _util.isArray;\nvar isString = _util.isString;\nvar isObject = _util.isObject;\nvar isTypedArray = _util.isTypedArray;\nvar isArrayLike = _util.isArrayLike;\nvar extend = _util.extend;\nvar assert = _util.assert;\n\nvar Source = require(\"../Source\");\n\nvar _sourceType = require(\"./sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SERIES_LAYOUT_BY_ROW = _sourceType.SERIES_LAYOUT_BY_ROW;\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// The result of `guessOrdinal`.\nvar BE_ORDINAL = {\n Must: 1,\n // Encounter string but not '-' and not number-like.\n Might: 2,\n // Encounter string but number-like.\n Not: 3 // Other cases\n\n};\nvar inner = makeInner();\n/**\n * @see {module:echarts/data/Source}\n * @param {module:echarts/component/dataset/DatasetModel} datasetModel\n * @return {string} sourceFormat\n */\n\nfunction detectSourceFormat(datasetModel) {\n var data = datasetModel.option.source;\n var sourceFormat = SOURCE_FORMAT_UNKNOWN;\n\n if (isTypedArray(data)) {\n sourceFormat = SOURCE_FORMAT_TYPED_ARRAY;\n } else if (isArray(data)) {\n // FIXME Whether tolerate null in top level array?\n if (data.length === 0) {\n sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n }\n\n for (var i = 0, len = data.length; i < len; i++) {\n var item = data[i];\n\n if (item == null) {\n continue;\n } else if (isArray(item)) {\n sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n break;\n } else if (isObject(item)) {\n sourceFormat = SOURCE_FORMAT_OBJECT_ROWS;\n break;\n }\n }\n } else if (isObject(data)) {\n for (var key in data) {\n if (data.hasOwnProperty(key) && isArrayLike(data[key])) {\n sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS;\n break;\n }\n }\n } else if (data != null) {\n throw new Error('Invalid data');\n }\n\n inner(datasetModel).sourceFormat = sourceFormat;\n}\n/**\n * [Scenarios]:\n * (1) Provide source data directly:\n * series: {\n * encode: {...},\n * dimensions: [...]\n * seriesLayoutBy: 'row',\n * data: [[...]]\n * }\n * (2) Refer to datasetModel.\n * series: [{\n * encode: {...}\n * // Ignore datasetIndex means `datasetIndex: 0`\n * // and the dimensions defination in dataset is used\n * }, {\n * encode: {...},\n * seriesLayoutBy: 'column',\n * datasetIndex: 1\n * }]\n *\n * Get data from series itself or datset.\n * @return {module:echarts/data/Source} source\n */\n\n\nfunction getSource(seriesModel) {\n return inner(seriesModel).source;\n}\n/**\n * MUST be called before mergeOption of all series.\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction resetSourceDefaulter(ecModel) {\n // `datasetMap` is used to make default encode.\n inner(ecModel).datasetMap = createHashMap();\n}\n/**\n * [Caution]:\n * MUST be called after series option merged and\n * before \"series.getInitailData()\" called.\n *\n * [The rule of making default encode]:\n * Category axis (if exists) alway map to the first dimension.\n * Each other axis occupies a subsequent dimension.\n *\n * [Why make default encode]:\n * Simplify the typing of encode in option, avoiding the case like that:\n * series: [{encode: {x: 0, y: 1}}, {encode: {x: 0, y: 2}}, {encode: {x: 0, y: 3}}],\n * where the \"y\" have to be manually typed as \"1, 2, 3, ...\".\n *\n * @param {module:echarts/model/Series} seriesModel\n */\n\n\nfunction prepareSource(seriesModel) {\n var seriesOption = seriesModel.option;\n var data = seriesOption.data;\n var sourceFormat = isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL;\n var fromDataset = false;\n var seriesLayoutBy = seriesOption.seriesLayoutBy;\n var sourceHeader = seriesOption.sourceHeader;\n var dimensionsDefine = seriesOption.dimensions;\n var datasetModel = getDatasetModel(seriesModel);\n\n if (datasetModel) {\n var datasetOption = datasetModel.option;\n data = datasetOption.source;\n sourceFormat = inner(datasetModel).sourceFormat;\n fromDataset = true; // These settings from series has higher priority.\n\n seriesLayoutBy = seriesLayoutBy || datasetOption.seriesLayoutBy;\n sourceHeader == null && (sourceHeader = datasetOption.sourceHeader);\n dimensionsDefine = dimensionsDefine || datasetOption.dimensions;\n }\n\n var completeResult = completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine);\n inner(seriesModel).source = new Source({\n data: data,\n fromDataset: fromDataset,\n seriesLayoutBy: seriesLayoutBy,\n sourceFormat: sourceFormat,\n dimensionsDefine: completeResult.dimensionsDefine,\n startIndex: completeResult.startIndex,\n dimensionsDetectCount: completeResult.dimensionsDetectCount,\n // Note: dataset option does not have `encode`.\n encodeDefine: seriesOption.encode\n });\n} // return {startIndex, dimensionsDefine, dimensionsCount}\n\n\nfunction completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) {\n if (!data) {\n return {\n dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine)\n };\n }\n\n var dimensionsDetectCount;\n var startIndex;\n\n if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n // Rule: Most of the first line are string: it is header.\n // Caution: consider a line with 5 string and 1 number,\n // it still can not be sure it is a head, because the\n // 5 string may be 5 values of category columns.\n if (sourceHeader === 'auto' || sourceHeader == null) {\n arrayRowsTravelFirst(function (val) {\n // '-' is regarded as null/undefined.\n if (val != null && val !== '-') {\n if (isString(val)) {\n startIndex == null && (startIndex = 1);\n } else {\n startIndex = 0;\n }\n } // 10 is an experience number, avoid long loop.\n\n }, seriesLayoutBy, data, 10);\n } else {\n startIndex = sourceHeader ? 1 : 0;\n }\n\n if (!dimensionsDefine && startIndex === 1) {\n dimensionsDefine = [];\n arrayRowsTravelFirst(function (val, index) {\n dimensionsDefine[index] = val != null ? val : '';\n }, seriesLayoutBy, data);\n }\n\n dimensionsDetectCount = dimensionsDefine ? dimensionsDefine.length : seriesLayoutBy === SERIES_LAYOUT_BY_ROW ? data.length : data[0] ? data[0].length : null;\n } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n if (!dimensionsDefine) {\n dimensionsDefine = objectRowsCollectDimensions(data);\n }\n } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n if (!dimensionsDefine) {\n dimensionsDefine = [];\n each(data, function (colArr, key) {\n dimensionsDefine.push(key);\n });\n }\n } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var value0 = getDataItemValue(data[0]);\n dimensionsDetectCount = isArray(value0) && value0.length || 1;\n } else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {}\n\n return {\n startIndex: startIndex,\n dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine),\n dimensionsDetectCount: dimensionsDetectCount\n };\n} // Consider dimensions defined like ['A', 'price', 'B', 'price', 'C', 'price'],\n// which is reasonable. But dimension name is duplicated.\n// Returns undefined or an array contains only object without null/undefiend or string.\n\n\nfunction normalizeDimensionsDefine(dimensionsDefine) {\n if (!dimensionsDefine) {\n // The meaning of null/undefined is different from empty array.\n return;\n }\n\n var nameMap = createHashMap();\n return map(dimensionsDefine, function (item, index) {\n item = extend({}, isObject(item) ? item : {\n name: item\n }); // User can set null in dimensions.\n // We dont auto specify name, othewise a given name may\n // cause it be refered unexpectedly.\n\n if (item.name == null) {\n return item;\n } // Also consider number form like 2012.\n\n\n item.name += ''; // User may also specify displayName.\n // displayName will always exists except user not\n // specified or dim name is not specified or detected.\n // (A auto generated dim name will not be used as\n // displayName).\n\n if (item.displayName == null) {\n item.displayName = item.name;\n }\n\n var exist = nameMap.get(item.name);\n\n if (!exist) {\n nameMap.set(item.name, {\n count: 1\n });\n } else {\n item.name += '-' + exist.count++;\n }\n\n return item;\n });\n}\n\nfunction arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) {\n maxLoop == null && (maxLoop = Infinity);\n\n if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n cb(data[i] ? data[i][0] : null, i);\n }\n } else {\n var value0 = data[0] || [];\n\n for (var i = 0; i < value0.length && i < maxLoop; i++) {\n cb(value0[i], i);\n }\n }\n}\n\nfunction objectRowsCollectDimensions(data) {\n var firstIndex = 0;\n var obj;\n\n while (firstIndex < data.length && !(obj = data[firstIndex++])) {} // jshint ignore: line\n\n\n if (obj) {\n var dimensions = [];\n each(obj, function (value, key) {\n dimensions.push(key);\n });\n return dimensions;\n }\n}\n/**\n * [The strategy of the arrengment of data dimensions for dataset]:\n * \"value way\": all axes are non-category axes. So series one by one take\n * several (the number is coordSysDims.length) dimensions from dataset.\n * The result of data arrengment of data dimensions like:\n * | ser0_x | ser0_y | ser1_x | ser1_y | ser2_x | ser2_y |\n * \"category way\": at least one axis is category axis. So the the first data\n * dimension is always mapped to the first category axis and shared by\n * all of the series. The other data dimensions are taken by series like\n * \"value way\" does.\n * The result of data arrengment of data dimensions like:\n * | ser_shared_x | ser0_y | ser1_y | ser2_y |\n *\n * @param {Array.} coordDimensions [{name: , type: , dimsDef: }, ...]\n * @param {module:model/Series} seriesModel\n * @param {module:data/Source} source\n * @return {Object} encode Never be `null/undefined`.\n */\n\n\nfunction makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {\n var encode = {};\n var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n if (!datasetModel || !coordDimensions) {\n return encode;\n }\n\n var encodeItemName = [];\n var encodeSeriesName = [];\n var ecModel = seriesModel.ecModel;\n var datasetMap = inner(ecModel).datasetMap;\n var key = datasetModel.uid + '_' + source.seriesLayoutBy;\n var baseCategoryDimIndex;\n var categoryWayValueDimStart;\n coordDimensions = coordDimensions.slice();\n each(coordDimensions, function (coordDimInfo, coordDimIdx) {\n !isObject(coordDimInfo) && (coordDimensions[coordDimIdx] = {\n name: coordDimInfo\n });\n\n if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) {\n baseCategoryDimIndex = coordDimIdx;\n categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimensions[coordDimIdx]);\n }\n\n encode[coordDimInfo.name] = [];\n });\n var datasetRecord = datasetMap.get(key) || datasetMap.set(key, {\n categoryWayDim: categoryWayValueDimStart,\n valueWayDim: 0\n }); // TODO\n // Auto detect first time axis and do arrangement.\n\n each(coordDimensions, function (coordDimInfo, coordDimIdx) {\n var coordDimName = coordDimInfo.name;\n var count = getDataDimCountOnCoordDim(coordDimInfo); // In value way.\n\n if (baseCategoryDimIndex == null) {\n var start = datasetRecord.valueWayDim;\n pushDim(encode[coordDimName], start, count);\n pushDim(encodeSeriesName, start, count);\n datasetRecord.valueWayDim += count; // ??? TODO give a better default series name rule?\n // especially when encode x y specified.\n // consider: when mutiple series share one dimension\n // category axis, series name should better use\n // the other dimsion name. On the other hand, use\n // both dimensions name.\n } // In category way, the first category axis.\n else if (baseCategoryDimIndex === coordDimIdx) {\n pushDim(encode[coordDimName], 0, count);\n pushDim(encodeItemName, 0, count);\n } // In category way, the other axis.\n else {\n var start = datasetRecord.categoryWayDim;\n pushDim(encode[coordDimName], start, count);\n pushDim(encodeSeriesName, start, count);\n datasetRecord.categoryWayDim += count;\n }\n });\n\n function pushDim(dimIdxArr, idxFrom, idxCount) {\n for (var i = 0; i < idxCount; i++) {\n dimIdxArr.push(idxFrom + i);\n }\n }\n\n function getDataDimCountOnCoordDim(coordDimInfo) {\n var dimsDef = coordDimInfo.dimsDef;\n return dimsDef ? dimsDef.length : 1;\n }\n\n encodeItemName.length && (encode.itemName = encodeItemName);\n encodeSeriesName.length && (encode.seriesName = encodeSeriesName);\n return encode;\n}\n/**\n * Work for data like [{name: ..., value: ...}, ...].\n *\n * @param {module:model/Series} seriesModel\n * @param {module:data/Source} source\n * @return {Object} encode Never be `null/undefined`.\n */\n\n\nfunction makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {\n var encode = {};\n var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n if (!datasetModel) {\n return encode;\n }\n\n var sourceFormat = source.sourceFormat;\n var dimensionsDefine = source.dimensionsDefine;\n var potentialNameDimIndex;\n\n if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n each(dimensionsDefine, function (dim, idx) {\n if ((isObject(dim) ? dim.name : dim) === 'name') {\n potentialNameDimIndex = idx;\n }\n });\n } // idxResult: {v, n}.\n\n\n var idxResult = function () {\n var idxRes0 = {};\n var idxRes1 = {};\n var guessRecords = []; // 5 is an experience value.\n\n for (var i = 0, len = Math.min(5, dimCount); i < len; i++) {\n var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i);\n guessRecords.push(guessResult);\n var isPureNumber = guessResult === BE_ORDINAL.Not; // [Strategy of idxRes0]: find the first BE_ORDINAL.Not as the value dim,\n // and then find a name dim with the priority:\n // \"BE_ORDINAL.Might|BE_ORDINAL.Must\" > \"other dim\" > \"the value dim itself\".\n\n if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {\n idxRes0.v = i;\n }\n\n if (idxRes0.n == null || idxRes0.n === idxRes0.v || !isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not) {\n idxRes0.n = i;\n }\n\n if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {\n return idxRes0;\n } // [Strategy of idxRes1]: if idxRes0 not satisfied (that is, no BE_ORDINAL.Not),\n // find the first BE_ORDINAL.Might as the value dim,\n // and then find a name dim with the priority:\n // \"other dim\" > \"the value dim itself\".\n // That is for backward compat: number-like (e.g., `'3'`, `'55'`) can be\n // treated as number.\n\n\n if (!isPureNumber) {\n if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {\n idxRes1.v = i;\n }\n\n if (idxRes1.n == null || idxRes1.n === idxRes1.v) {\n idxRes1.n = i;\n }\n }\n }\n\n function fulfilled(idxResult) {\n return idxResult.v != null && idxResult.n != null;\n }\n\n return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;\n }();\n\n if (idxResult) {\n encode.value = idxResult.v; // `potentialNameDimIndex` has highest priority.\n\n var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n; // By default, label use itemName in charts.\n // So we dont set encodeLabel here.\n\n encode.itemName = [nameDimIndex];\n encode.seriesName = [nameDimIndex];\n }\n\n return encode;\n}\n/**\n * If return null/undefined, indicate that should not use datasetModel.\n */\n\n\nfunction getDatasetModel(seriesModel) {\n var option = seriesModel.option; // Caution: consider the scenario:\n // A dataset is declared and a series is not expected to use the dataset,\n // and at the beginning `setOption({series: { noData })` (just prepare other\n // option but no data), then `setOption({series: {data: [...]}); In this case,\n // the user should set an empty array to avoid that dataset is used by default.\n\n var thisData = option.data;\n\n if (!thisData) {\n return seriesModel.ecModel.getComponent('dataset', option.datasetIndex || 0);\n }\n}\n/**\n * The rule should not be complex, otherwise user might not\n * be able to known where the data is wrong.\n * The code is ugly, but how to make it neat?\n *\n * @param {module:echars/data/Source} source\n * @param {number} dimIndex\n * @return {BE_ORDINAL} guess result.\n */\n\n\nfunction guessOrdinal(source, dimIndex) {\n return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);\n} // dimIndex may be overflow source data.\n// return {BE_ORDINAL}\n\n\nfunction doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {\n var result; // Experience value.\n\n var maxLoop = 5;\n\n if (isTypedArray(data)) {\n return BE_ORDINAL.Not;\n } // When sourceType is 'objectRows' or 'keyedColumns', dimensionsDefine\n // always exists in source.\n\n\n var dimName;\n var dimType;\n\n if (dimensionsDefine) {\n var dimDefItem = dimensionsDefine[dimIndex];\n\n if (isObject(dimDefItem)) {\n dimName = dimDefItem.name;\n dimType = dimDefItem.type;\n } else if (isString(dimDefItem)) {\n dimName = dimDefItem;\n }\n }\n\n if (dimType != null) {\n return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not;\n }\n\n if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n var sample = data[dimIndex];\n\n for (var i = 0; i < (sample || []).length && i < maxLoop; i++) {\n if ((result = detectValue(sample[startIndex + i])) != null) {\n return result;\n }\n }\n } else {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var row = data[startIndex + i];\n\n if (row && (result = detectValue(row[dimIndex])) != null) {\n return result;\n }\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n if (!dimName) {\n return BE_ORDINAL.Not;\n }\n\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var item = data[i];\n\n if (item && (result = detectValue(item[dimName])) != null) {\n return result;\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n if (!dimName) {\n return BE_ORDINAL.Not;\n }\n\n var sample = data[dimName];\n\n if (!sample || isTypedArray(sample)) {\n return BE_ORDINAL.Not;\n }\n\n for (var i = 0; i < sample.length && i < maxLoop; i++) {\n if ((result = detectValue(sample[i])) != null) {\n return result;\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var item = data[i];\n var val = getDataItemValue(item);\n\n if (!isArray(val)) {\n return BE_ORDINAL.Not;\n }\n\n if ((result = detectValue(val[dimIndex])) != null) {\n return result;\n }\n }\n }\n\n function detectValue(val) {\n var beStr = isString(val); // Consider usage convenience, '1', '2' will be treated as \"number\".\n // `isFinit('')` get `true`.\n\n if (val != null && isFinite(val) && val !== '') {\n return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;\n } else if (beStr && val !== '-') {\n return BE_ORDINAL.Must;\n }\n }\n\n return BE_ORDINAL.Not;\n}\n\nexports.BE_ORDINAL = BE_ORDINAL;\nexports.detectSourceFormat = detectSourceFormat;\nexports.getSource = getSource;\nexports.resetSourceDefaulter = resetSourceDefaulter;\nexports.prepareSource = prepareSource;\nexports.makeSeriesEncodeForAxisCoordSys = makeSeriesEncodeForAxisCoordSys;\nexports.makeSeriesEncodeForNameBased = makeSeriesEncodeForNameBased;\nexports.guessOrdinal = guessOrdinal;","\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* 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// Avoid typo.\nvar SOURCE_FORMAT_ORIGINAL = 'original';\nvar SOURCE_FORMAT_ARRAY_ROWS = 'arrayRows';\nvar SOURCE_FORMAT_OBJECT_ROWS = 'objectRows';\nvar SOURCE_FORMAT_KEYED_COLUMNS = 'keyedColumns';\nvar SOURCE_FORMAT_UNKNOWN = 'unknown'; // ??? CHANGE A NAME\n\nvar SOURCE_FORMAT_TYPED_ARRAY = 'typedArray';\nvar SERIES_LAYOUT_BY_COLUMN = 'column';\nvar SERIES_LAYOUT_BY_ROW = 'row';\nexports.SOURCE_FORMAT_ORIGINAL = SOURCE_FORMAT_ORIGINAL;\nexports.SOURCE_FORMAT_ARRAY_ROWS = SOURCE_FORMAT_ARRAY_ROWS;\nexports.SOURCE_FORMAT_OBJECT_ROWS = SOURCE_FORMAT_OBJECT_ROWS;\nexports.SOURCE_FORMAT_KEYED_COLUMNS = SOURCE_FORMAT_KEYED_COLUMNS;\nexports.SOURCE_FORMAT_UNKNOWN = SOURCE_FORMAT_UNKNOWN;\nexports.SOURCE_FORMAT_TYPED_ARRAY = SOURCE_FORMAT_TYPED_ARRAY;\nexports.SERIES_LAYOUT_BY_COLUMN = SERIES_LAYOUT_BY_COLUMN;\nexports.SERIES_LAYOUT_BY_ROW = SERIES_LAYOUT_BY_ROW;","\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 _config = require(\"./config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrender = require(\"zrender/lib/zrender\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar timsort = require(\"zrender/lib/core/timsort\");\n\nvar Eventful = require(\"zrender/lib/mixin/Eventful\");\n\nvar GlobalModel = require(\"./model/Global\");\n\nvar ExtensionAPI = require(\"./ExtensionAPI\");\n\nvar CoordinateSystemManager = require(\"./CoordinateSystem\");\n\nvar OptionManager = require(\"./model/OptionManager\");\n\nvar backwardCompat = require(\"./preprocessor/backwardCompat\");\n\nvar dataStack = require(\"./processor/dataStack\");\n\nvar ComponentModel = require(\"./model/Component\");\n\nvar SeriesModel = require(\"./model/Series\");\n\nvar ComponentView = require(\"./view/Component\");\n\nvar ChartView = require(\"./view/Chart\");\n\nvar graphic = require(\"./util/graphic\");\n\nvar modelUtil = require(\"./util/model\");\n\nvar _throttle = require(\"./util/throttle\");\n\nvar throttle = _throttle.throttle;\n\nvar seriesColor = require(\"./visual/seriesColor\");\n\nvar aria = require(\"./visual/aria\");\n\nvar loadingDefault = require(\"./loading/default\");\n\nvar Scheduler = require(\"./stream/Scheduler\");\n\nvar lightTheme = require(\"./theme/light\");\n\nvar darkTheme = require(\"./theme/dark\");\n\nrequire(\"./component/dataset\");\n\nvar mapDataStorage = require(\"./coord/geo/mapDataStorage\");\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 assert = zrUtil.assert;\nvar each = zrUtil.each;\nvar isFunction = zrUtil.isFunction;\nvar isObject = zrUtil.isObject;\nvar parseClassType = ComponentModel.parseClassType;\nvar version = '4.9.0';\nvar dependencies = {\n zrender: '4.3.2'\n};\nvar TEST_FRAME_REMAIN_TIME = 1;\nvar PRIORITY_PROCESSOR_FILTER = 1000;\nvar PRIORITY_PROCESSOR_SERIES_FILTER = 800;\nvar PRIORITY_PROCESSOR_DATASTACK = 900;\nvar PRIORITY_PROCESSOR_STATISTIC = 5000;\nvar PRIORITY_VISUAL_LAYOUT = 1000;\nvar PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100;\nvar PRIORITY_VISUAL_GLOBAL = 2000;\nvar PRIORITY_VISUAL_CHART = 3000;\nvar PRIORITY_VISUAL_POST_CHART_LAYOUT = 3500;\nvar PRIORITY_VISUAL_COMPONENT = 4000; // FIXME\n// necessary?\n\nvar PRIORITY_VISUAL_BRUSH = 5000;\nvar PRIORITY = {\n PROCESSOR: {\n FILTER: PRIORITY_PROCESSOR_FILTER,\n SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER,\n STATISTIC: PRIORITY_PROCESSOR_STATISTIC\n },\n VISUAL: {\n LAYOUT: PRIORITY_VISUAL_LAYOUT,\n PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT,\n GLOBAL: PRIORITY_VISUAL_GLOBAL,\n CHART: PRIORITY_VISUAL_CHART,\n POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT,\n COMPONENT: PRIORITY_VISUAL_COMPONENT,\n BRUSH: PRIORITY_VISUAL_BRUSH\n }\n}; // Main process have three entries: `setOption`, `dispatchAction` and `resize`,\n// where they must not be invoked nestedly, except the only case: invoke\n// dispatchAction with updateMethod \"none\" in main process.\n// This flag is used to carry out this rule.\n// All events will be triggered out side main process (i.e. when !this[IN_MAIN_PROCESS]).\n\nvar IN_MAIN_PROCESS = '__flagInMainProcess';\nvar OPTION_UPDATED = '__optionUpdated';\nvar ACTION_REG = /^[a-zA-Z0-9_]+$/;\n\nfunction createRegisterEventWithLowercaseName(method, ignoreDisposed) {\n return function (eventName, handler, context) {\n if (!ignoreDisposed && this._disposed) {\n disposedWarning(this.id);\n return;\n } // Event name is all lowercase\n\n\n eventName = eventName && eventName.toLowerCase();\n Eventful.prototype[method].call(this, eventName, handler, context);\n };\n}\n/**\n * @module echarts~MessageCenter\n */\n\n\nfunction MessageCenter() {\n Eventful.call(this);\n}\n\nMessageCenter.prototype.on = createRegisterEventWithLowercaseName('on', true);\nMessageCenter.prototype.off = createRegisterEventWithLowercaseName('off', true);\nMessageCenter.prototype.one = createRegisterEventWithLowercaseName('one', true);\nzrUtil.mixin(MessageCenter, Eventful);\n/**\n * @module echarts~ECharts\n */\n\nfunction ECharts(dom, theme, opts) {\n opts = opts || {}; // Get theme by name\n\n if (typeof theme === 'string') {\n theme = themeStorage[theme];\n }\n /**\n * @type {string}\n */\n\n\n this.id;\n /**\n * Group id\n * @type {string}\n */\n\n this.group;\n /**\n * @type {HTMLElement}\n * @private\n */\n\n this._dom = dom;\n var defaultRenderer = 'canvas';\n\n /**\n * @type {module:zrender/ZRender}\n * @private\n */\n var zr = this._zr = zrender.init(dom, {\n renderer: opts.renderer || defaultRenderer,\n devicePixelRatio: opts.devicePixelRatio,\n width: opts.width,\n height: opts.height\n });\n /**\n * Expect 60 fps.\n * @type {Function}\n * @private\n */\n\n this._throttledZrFlush = throttle(zrUtil.bind(zr.flush, zr), 17);\n var theme = zrUtil.clone(theme);\n theme && backwardCompat(theme, true);\n /**\n * @type {Object}\n * @private\n */\n\n this._theme = theme;\n /**\n * @type {Array.}\n * @private\n */\n\n this._chartsViews = [];\n /**\n * @type {Object.}\n * @private\n */\n\n this._chartsMap = {};\n /**\n * @type {Array.}\n * @private\n */\n\n this._componentsViews = [];\n /**\n * @type {Object.}\n * @private\n */\n\n this._componentsMap = {};\n /**\n * @type {module:echarts/CoordinateSystem}\n * @private\n */\n\n this._coordSysMgr = new CoordinateSystemManager();\n /**\n * @type {module:echarts/ExtensionAPI}\n * @private\n */\n\n var api = this._api = createExtensionAPI(this); // Sort on demand\n\n function prioritySortFunc(a, b) {\n return a.__prio - b.__prio;\n }\n\n timsort(visualFuncs, prioritySortFunc);\n timsort(dataProcessorFuncs, prioritySortFunc);\n /**\n * @type {module:echarts/stream/Scheduler}\n */\n\n this._scheduler = new Scheduler(this, api, dataProcessorFuncs, visualFuncs);\n Eventful.call(this, this._ecEventProcessor = new EventProcessor());\n /**\n * @type {module:echarts~MessageCenter}\n * @private\n */\n\n this._messageCenter = new MessageCenter(); // Init mouse events\n\n this._initEvents(); // In case some people write `window.onresize = chart.resize`\n\n\n this.resize = zrUtil.bind(this.resize, this); // Can't dispatch action during rendering procedure\n\n this._pendingActions = [];\n zr.animation.on('frame', this._onframe, this);\n bindRenderedEvent(zr, this); // ECharts instance can be used as value.\n\n zrUtil.setAsPrimitive(this);\n}\n\nvar echartsProto = ECharts.prototype;\n\nechartsProto._onframe = function () {\n if (this._disposed) {\n return;\n }\n\n var scheduler = this._scheduler; // Lazy update\n\n if (this[OPTION_UPDATED]) {\n var silent = this[OPTION_UPDATED].silent;\n this[IN_MAIN_PROCESS] = true;\n prepare(this);\n updateMethods.update.call(this);\n this[IN_MAIN_PROCESS] = false;\n this[OPTION_UPDATED] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n } // Avoid do both lazy update and progress in one frame.\n else if (scheduler.unfinished) {\n // Stream progress.\n var remainTime = TEST_FRAME_REMAIN_TIME;\n var ecModel = this._model;\n var api = this._api;\n scheduler.unfinished = false;\n\n do {\n var startTime = +new Date();\n scheduler.performSeriesTasks(ecModel); // Currently dataProcessorFuncs do not check threshold.\n\n scheduler.performDataProcessorTasks(ecModel);\n updateStreamModes(this, ecModel); // Do not update coordinate system here. Because that coord system update in\n // each frame is not a good user experience. So we follow the rule that\n // the extent of the coordinate system is determin in the first frame (the\n // frame is executed immedietely after task reset.\n // this._coordSysMgr.update(ecModel, api);\n // console.log('--- ec frame visual ---', remainTime);\n\n scheduler.performVisualTasks(ecModel);\n renderSeries(this, this._model, api, 'remain');\n remainTime -= +new Date() - startTime;\n } while (remainTime > 0 && scheduler.unfinished); // Call flush explicitly for trigger finished event.\n\n\n if (!scheduler.unfinished) {\n this._zr.flush();\n } // Else, zr flushing be ensue within the same frame,\n // because zr flushing is after onframe event.\n\n }\n};\n/**\n * @return {HTMLElement}\n */\n\n\nechartsProto.getDom = function () {\n return this._dom;\n};\n/**\n * @return {module:zrender~ZRender}\n */\n\n\nechartsProto.getZr = function () {\n return this._zr;\n};\n/**\n * Usage:\n * chart.setOption(option, notMerge, lazyUpdate);\n * chart.setOption(option, {\n * notMerge: ...,\n * lazyUpdate: ...,\n * silent: ...\n * });\n *\n * @param {Object} option\n * @param {Object|boolean} [opts] opts or notMerge.\n * @param {boolean} [opts.notMerge=false]\n * @param {boolean} [opts.lazyUpdate=false] Useful when setOption frequently.\n */\n\n\nechartsProto.setOption = function (option, notMerge, lazyUpdate) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var silent;\n\n if (isObject(notMerge)) {\n lazyUpdate = notMerge.lazyUpdate;\n silent = notMerge.silent;\n notMerge = notMerge.notMerge;\n }\n\n this[IN_MAIN_PROCESS] = true;\n\n if (!this._model || notMerge) {\n var optionManager = new OptionManager(this._api);\n var theme = this._theme;\n var ecModel = this._model = new GlobalModel();\n ecModel.scheduler = this._scheduler;\n ecModel.init(null, null, theme, optionManager);\n }\n\n this._model.setOption(option, optionPreprocessorFuncs);\n\n if (lazyUpdate) {\n this[OPTION_UPDATED] = {\n silent: silent\n };\n this[IN_MAIN_PROCESS] = false;\n } else {\n prepare(this);\n updateMethods.update.call(this); // Ensure zr refresh sychronously, and then pixel in canvas can be\n // fetched after `setOption`.\n\n this._zr.flush();\n\n this[OPTION_UPDATED] = false;\n this[IN_MAIN_PROCESS] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n }\n};\n/**\n * @DEPRECATED\n */\n\n\nechartsProto.setTheme = function () {\n console.error('ECharts#setTheme() is DEPRECATED in ECharts 3.0');\n};\n/**\n * @return {module:echarts/model/Global}\n */\n\n\nechartsProto.getModel = function () {\n return this._model;\n};\n/**\n * @return {Object}\n */\n\n\nechartsProto.getOption = function () {\n return this._model && this._model.getOption();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getWidth = function () {\n return this._zr.getWidth();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getHeight = function () {\n return this._zr.getHeight();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getDevicePixelRatio = function () {\n return this._zr.painter.dpr || window.devicePixelRatio || 1;\n};\n/**\n * Get canvas which has all thing rendered\n * @param {Object} opts\n * @param {string} [opts.backgroundColor]\n * @return {string}\n */\n\n\nechartsProto.getRenderedCanvas = function (opts) {\n if (!env.canvasSupported) {\n return;\n }\n\n opts = opts || {};\n opts.pixelRatio = opts.pixelRatio || 1;\n opts.backgroundColor = opts.backgroundColor || this._model.get('backgroundColor');\n var zr = this._zr; // var list = zr.storage.getDisplayList();\n // Stop animations\n // Never works before in init animation, so remove it.\n // zrUtil.each(list, function (el) {\n // el.stopAnimation(true);\n // });\n\n return zr.painter.getRenderedCanvas(opts);\n};\n/**\n * Get svg data url\n * @return {string}\n */\n\n\nechartsProto.getSvgDataURL = function () {\n if (!env.svgSupported) {\n return;\n }\n\n var zr = this._zr;\n var list = zr.storage.getDisplayList(); // Stop animations\n\n zrUtil.each(list, function (el) {\n el.stopAnimation(true);\n });\n return zr.painter.toDataURL();\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n * @param {string} [opts.excludeComponents]\n */\n\n\nechartsProto.getDataURL = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n opts = opts || {};\n var excludeComponents = opts.excludeComponents;\n var ecModel = this._model;\n var excludesComponentViews = [];\n var self = this;\n each(excludeComponents, function (componentType) {\n ecModel.eachComponent({\n mainType: componentType\n }, function (component) {\n var view = self._componentsMap[component.__viewId];\n\n if (!view.group.ignore) {\n excludesComponentViews.push(view);\n view.group.ignore = true;\n }\n });\n });\n var url = this._zr.painter.getType() === 'svg' ? this.getSvgDataURL() : this.getRenderedCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png'));\n each(excludesComponentViews, function (view) {\n view.group.ignore = false;\n });\n return url;\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n */\n\n\nechartsProto.getConnectedDataURL = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (!env.canvasSupported) {\n return;\n }\n\n var isSvg = opts.type === 'svg';\n var groupId = this.group;\n var mathMin = Math.min;\n var mathMax = Math.max;\n var MAX_NUMBER = Infinity;\n\n if (connectedGroups[groupId]) {\n var left = MAX_NUMBER;\n var top = MAX_NUMBER;\n var right = -MAX_NUMBER;\n var bottom = -MAX_NUMBER;\n var canvasList = [];\n var dpr = opts && opts.pixelRatio || 1;\n zrUtil.each(instances, function (chart, id) {\n if (chart.group === groupId) {\n var canvas = isSvg ? chart.getZr().painter.getSvgDom().innerHTML : chart.getRenderedCanvas(zrUtil.clone(opts));\n var boundingRect = chart.getDom().getBoundingClientRect();\n left = mathMin(boundingRect.left, left);\n top = mathMin(boundingRect.top, top);\n right = mathMax(boundingRect.right, right);\n bottom = mathMax(boundingRect.bottom, bottom);\n canvasList.push({\n dom: canvas,\n left: boundingRect.left,\n top: boundingRect.top\n });\n }\n });\n left *= dpr;\n top *= dpr;\n right *= dpr;\n bottom *= dpr;\n var width = right - left;\n var height = bottom - top;\n var targetCanvas = zrUtil.createCanvas();\n var zr = zrender.init(targetCanvas, {\n renderer: isSvg ? 'svg' : 'canvas'\n });\n zr.resize({\n width: width,\n height: height\n });\n\n if (isSvg) {\n var content = '';\n each(canvasList, function (item) {\n var x = item.left - left;\n var y = item.top - top;\n content += '' + item.dom + '';\n });\n zr.painter.getSvgRoot().innerHTML = content;\n\n if (opts.connectedBackgroundColor) {\n zr.painter.setBackgroundColor(opts.connectedBackgroundColor);\n }\n\n zr.refreshImmediately();\n return zr.painter.toDataURL();\n } else {\n // Background between the charts\n if (opts.connectedBackgroundColor) {\n zr.add(new graphic.Rect({\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n style: {\n fill: opts.connectedBackgroundColor\n }\n }));\n }\n\n each(canvasList, function (item) {\n var img = new graphic.Image({\n style: {\n x: item.left * dpr - left,\n y: item.top * dpr - top,\n image: item.dom\n }\n });\n zr.add(img);\n });\n zr.refreshImmediately();\n return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png'));\n }\n } else {\n return this.getDataURL(opts);\n }\n};\n/**\n * Convert from logical coordinate system to pixel coordinate system.\n * See CoordinateSystem#convertToPixel.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId, geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName,\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {Array|number} result\n */\n\n\nechartsProto.convertToPixel = zrUtil.curry(doConvertPixel, 'convertToPixel');\n/**\n * Convert from pixel coordinate system to logical coordinate system.\n * See CoordinateSystem#convertFromPixel.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId / geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {Array|number} result\n */\n\nechartsProto.convertFromPixel = zrUtil.curry(doConvertPixel, 'convertFromPixel');\n\nfunction doConvertPixel(methodName, finder, value) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var ecModel = this._model;\n\n var coordSysList = this._coordSysMgr.getCoordinateSystems();\n\n var result;\n finder = modelUtil.parseFinder(ecModel, finder);\n\n for (var i = 0; i < coordSysList.length; i++) {\n var coordSys = coordSysList[i];\n\n if (coordSys[methodName] && (result = coordSys[methodName](ecModel, finder, value)) != null) {\n return result;\n }\n }\n}\n/**\n * Is the specified coordinate systems or components contain the given pixel point.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId / geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName,\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {boolean} result\n */\n\n\nechartsProto.containPixel = function (finder, value) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var ecModel = this._model;\n var result;\n finder = modelUtil.parseFinder(ecModel, finder);\n zrUtil.each(finder, function (models, key) {\n key.indexOf('Models') >= 0 && zrUtil.each(models, function (model) {\n var coordSys = model.coordinateSystem;\n\n if (coordSys && coordSys.containPoint) {\n result |= !!coordSys.containPoint(value);\n } else if (key === 'seriesModels') {\n var view = this._chartsMap[model.__viewId];\n\n if (view && view.containPoint) {\n result |= view.containPoint(value, model);\n } else {}\n } else {}\n }, this);\n }, this);\n return !!result;\n};\n/**\n * Get visual from series or data.\n * @param {string|Object} finder\n * If string, e.g., 'series', means {seriesIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * dataIndex / dataIndexInside\n * }\n * If dataIndex is not specified, series visual will be fetched,\n * but not data item visual.\n * If all of seriesIndex, seriesId, seriesName are not specified,\n * visual will be fetched from first series.\n * @param {string} visualType 'color', 'symbol', 'symbolSize'\n */\n\n\nechartsProto.getVisual = function (finder, visualType) {\n var ecModel = this._model;\n finder = modelUtil.parseFinder(ecModel, finder, {\n defaultMainType: 'series'\n });\n var seriesModel = finder.seriesModel;\n var data = seriesModel.getData();\n var dataIndexInside = finder.hasOwnProperty('dataIndexInside') ? finder.dataIndexInside : finder.hasOwnProperty('dataIndex') ? data.indexOfRawIndex(finder.dataIndex) : null;\n return dataIndexInside != null ? data.getItemVisual(dataIndexInside, visualType) : data.getVisual(visualType);\n};\n/**\n * Get view of corresponding component model\n * @param {module:echarts/model/Component} componentModel\n * @return {module:echarts/view/Component}\n */\n\n\nechartsProto.getViewOfComponentModel = function (componentModel) {\n return this._componentsMap[componentModel.__viewId];\n};\n/**\n * Get view of corresponding series model\n * @param {module:echarts/model/Series} seriesModel\n * @return {module:echarts/view/Chart}\n */\n\n\nechartsProto.getViewOfSeriesModel = function (seriesModel) {\n return this._chartsMap[seriesModel.__viewId];\n};\n\nvar updateMethods = {\n prepareAndUpdate: function (payload) {\n prepare(this);\n updateMethods.update.call(this, payload);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n update: function (payload) {\n // console.profile && console.profile('update');\n var ecModel = this._model;\n var api = this._api;\n var zr = this._zr;\n var coordSysMgr = this._coordSysMgr;\n var scheduler = this._scheduler; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n scheduler.restoreData(ecModel, payload);\n scheduler.performSeriesTasks(ecModel); // TODO\n // Save total ecModel here for undo/redo (after restoring data and before processing data).\n // Undo (restoration of total ecModel) can be carried out in 'action' or outside API call.\n // Create new coordinate system each update\n // In LineView may save the old coordinate system and use it to get the orignal point\n\n coordSysMgr.create(ecModel, api);\n scheduler.performDataProcessorTasks(ecModel, payload); // Current stream render is not supported in data process. So we can update\n // stream modes after data processing, where the filtered data is used to\n // deteming whether use progressive rendering.\n\n updateStreamModes(this, ecModel); // We update stream modes before coordinate system updated, then the modes info\n // can be fetched when coord sys updating (consider the barGrid extent fix). But\n // the drawback is the full coord info can not be fetched. Fortunately this full\n // coord is not requied in stream mode updater currently.\n\n coordSysMgr.update(ecModel, api);\n clearColorPalette(ecModel);\n scheduler.performVisualTasks(ecModel, payload);\n render(this, ecModel, api, payload); // Set background\n\n var backgroundColor = ecModel.get('backgroundColor') || 'transparent'; // In IE8\n\n if (!env.canvasSupported) {\n var colorArr = colorTool.parse(backgroundColor);\n backgroundColor = colorTool.stringify(colorArr, 'rgb');\n\n if (colorArr[3] === 0) {\n backgroundColor = 'transparent';\n }\n } else {\n zr.setBackgroundColor(backgroundColor);\n }\n\n performPostUpdateFuncs(ecModel, api); // console.profile && console.profileEnd('update');\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateTransform: function (payload) {\n var ecModel = this._model;\n var ecIns = this;\n var api = this._api; // update before setOption\n\n if (!ecModel) {\n return;\n } // ChartView.markUpdateMethod(payload, 'updateTransform');\n\n\n var componentDirtyList = [];\n ecModel.eachComponent(function (componentType, componentModel) {\n var componentView = ecIns.getViewOfComponentModel(componentModel);\n\n if (componentView && componentView.__alive) {\n if (componentView.updateTransform) {\n var result = componentView.updateTransform(componentModel, ecModel, api, payload);\n result && result.update && componentDirtyList.push(componentView);\n } else {\n componentDirtyList.push(componentView);\n }\n }\n });\n var seriesDirtyMap = zrUtil.createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n if (chartView.updateTransform) {\n var result = chartView.updateTransform(seriesModel, ecModel, api, payload);\n result && result.update && seriesDirtyMap.set(seriesModel.uid, 1);\n } else {\n seriesDirtyMap.set(seriesModel.uid, 1);\n }\n });\n clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true);\n\n this._scheduler.performVisualTasks(ecModel, payload, {\n setDirty: true,\n dirtyMap: seriesDirtyMap\n }); // Currently, not call render of components. Geo render cost a lot.\n // renderComponents(ecIns, ecModel, api, payload, componentDirtyList);\n\n\n renderSeries(ecIns, ecModel, api, payload, seriesDirtyMap);\n performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateView: function (payload) {\n var ecModel = this._model; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n ChartView.markUpdateMethod(payload, 'updateView');\n clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n\n this._scheduler.performVisualTasks(ecModel, payload, {\n setDirty: true\n });\n\n render(this, this._model, this._api, payload);\n performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateVisual: function (payload) {\n updateMethods.update.call(this, payload); // var ecModel = this._model;\n // // update before setOption\n // if (!ecModel) {\n // return;\n // }\n // ChartView.markUpdateMethod(payload, 'updateVisual');\n // clearColorPalette(ecModel);\n // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // this._scheduler.performVisualTasks(ecModel, payload, {visualType: 'visual', setDirty: true});\n // render(this, this._model, this._api, payload);\n // performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateLayout: function (payload) {\n updateMethods.update.call(this, payload); // var ecModel = this._model;\n // // update before setOption\n // if (!ecModel) {\n // return;\n // }\n // ChartView.markUpdateMethod(payload, 'updateLayout');\n // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true);\n // this._scheduler.performVisualTasks(ecModel, payload, {setDirty: true});\n // render(this, this._model, this._api, payload);\n // performPostUpdateFuncs(ecModel, this._api);\n }\n};\n\nfunction prepare(ecIns) {\n var ecModel = ecIns._model;\n var scheduler = ecIns._scheduler;\n scheduler.restorePipelines(ecModel);\n scheduler.prepareStageTasks();\n prepareView(ecIns, 'component', ecModel, scheduler);\n prepareView(ecIns, 'chart', ecModel, scheduler);\n scheduler.plan();\n}\n/**\n * @private\n */\n\n\nfunction updateDirectly(ecIns, method, payload, mainType, subType) {\n var ecModel = ecIns._model; // broadcast\n\n if (!mainType) {\n // FIXME\n // Chart will not be update directly here, except set dirty.\n // But there is no such scenario now.\n each(ecIns._componentsViews.concat(ecIns._chartsViews), callView);\n return;\n }\n\n var query = {};\n query[mainType + 'Id'] = payload[mainType + 'Id'];\n query[mainType + 'Index'] = payload[mainType + 'Index'];\n query[mainType + 'Name'] = payload[mainType + 'Name'];\n var condition = {\n mainType: mainType,\n query: query\n };\n subType && (condition.subType = subType); // subType may be '' by parseClassType;\n\n var excludeSeriesId = payload.excludeSeriesId;\n\n if (excludeSeriesId != null) {\n excludeSeriesId = zrUtil.createHashMap(modelUtil.normalizeToArray(excludeSeriesId));\n } // If dispatchAction before setOption, do nothing.\n\n\n ecModel && ecModel.eachComponent(condition, function (model) {\n if (!excludeSeriesId || excludeSeriesId.get(model.id) == null) {\n callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]);\n }\n }, ecIns);\n\n function callView(view) {\n view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload);\n }\n}\n/**\n * Resize the chart\n * @param {Object} opts\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n * @param {boolean} [opts.silent=false]\n */\n\n\nechartsProto.resize = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._zr.resize(opts);\n\n var ecModel = this._model; // Resize loading effect\n\n this._loadingFX && this._loadingFX.resize();\n\n if (!ecModel) {\n return;\n }\n\n var optionChanged = ecModel.resetOption('media');\n var silent = opts && opts.silent;\n this[IN_MAIN_PROCESS] = true;\n optionChanged && prepare(this);\n updateMethods.update.call(this);\n this[IN_MAIN_PROCESS] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n};\n\nfunction updateStreamModes(ecIns, ecModel) {\n var chartsMap = ecIns._chartsMap;\n var scheduler = ecIns._scheduler;\n ecModel.eachSeries(function (seriesModel) {\n scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]);\n });\n}\n/**\n * Show loading effect\n * @param {string} [name='default']\n * @param {Object} [cfg]\n */\n\n\nechartsProto.showLoading = function (name, cfg) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (isObject(name)) {\n cfg = name;\n name = '';\n }\n\n name = name || 'default';\n this.hideLoading();\n\n if (!loadingEffects[name]) {\n return;\n }\n\n var el = loadingEffects[name](this._api, cfg);\n var zr = this._zr;\n this._loadingFX = el;\n zr.add(el);\n};\n/**\n * Hide loading effect\n */\n\n\nechartsProto.hideLoading = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._loadingFX && this._zr.remove(this._loadingFX);\n this._loadingFX = null;\n};\n/**\n * @param {Object} eventObj\n * @return {Object}\n */\n\n\nechartsProto.makeActionFromEvent = function (eventObj) {\n var payload = zrUtil.extend({}, eventObj);\n payload.type = eventActionMap[eventObj.type];\n return payload;\n};\n/**\n * @pubilc\n * @param {Object} payload\n * @param {string} [payload.type] Action type\n * @param {Object|boolean} [opt] If pass boolean, means opt.silent\n * @param {boolean} [opt.silent=false] Whether trigger events.\n * @param {boolean} [opt.flush=undefined]\n * true: Flush immediately, and then pixel in canvas can be fetched\n * immediately. Caution: it might affect performance.\n * false: Not flush.\n * undefined: Auto decide whether perform flush.\n */\n\n\nechartsProto.dispatchAction = function (payload, opt) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (!isObject(opt)) {\n opt = {\n silent: !!opt\n };\n }\n\n if (!actions[payload.type]) {\n return;\n } // Avoid dispatch action before setOption. Especially in `connect`.\n\n\n if (!this._model) {\n return;\n } // May dispatchAction in rendering procedure\n\n\n if (this[IN_MAIN_PROCESS]) {\n this._pendingActions.push(payload);\n\n return;\n }\n\n doDispatchAction.call(this, payload, opt.silent);\n\n if (opt.flush) {\n this._zr.flush(true);\n } else if (opt.flush !== false && env.browser.weChat) {\n // In WeChat embeded browser, `requestAnimationFrame` and `setInterval`\n // hang when sliding page (on touch event), which cause that zr does not\n // refresh util user interaction finished, which is not expected.\n // But `dispatchAction` may be called too frequently when pan on touch\n // screen, which impacts performance if do not throttle them.\n this._throttledZrFlush();\n }\n\n flushPendingActions.call(this, opt.silent);\n triggerUpdatedEvent.call(this, opt.silent);\n};\n\nfunction doDispatchAction(payload, silent) {\n var payloadType = payload.type;\n var escapeConnect = payload.escapeConnect;\n var actionWrap = actions[payloadType];\n var actionInfo = actionWrap.actionInfo;\n var cptType = (actionInfo.update || 'update').split(':');\n var updateMethod = cptType.pop();\n cptType = cptType[0] != null && parseClassType(cptType[0]);\n this[IN_MAIN_PROCESS] = true;\n var payloads = [payload];\n var batched = false; // Batch action\n\n if (payload.batch) {\n batched = true;\n payloads = zrUtil.map(payload.batch, function (item) {\n item = zrUtil.defaults(zrUtil.extend({}, item), payload);\n item.batch = null;\n return item;\n });\n }\n\n var eventObjBatch = [];\n var eventObj;\n var isHighDown = payloadType === 'highlight' || payloadType === 'downplay';\n each(payloads, function (batchItem) {\n // Action can specify the event by return it.\n eventObj = actionWrap.action(batchItem, this._model, this._api); // Emit event outside\n\n eventObj = eventObj || zrUtil.extend({}, batchItem); // Convert type to eventType\n\n eventObj.type = actionInfo.event || eventObj.type;\n eventObjBatch.push(eventObj); // light update does not perform data process, layout and visual.\n\n if (isHighDown) {\n // method, payload, mainType, subType\n updateDirectly(this, updateMethod, batchItem, 'series');\n } else if (cptType) {\n updateDirectly(this, updateMethod, batchItem, cptType.main, cptType.sub);\n }\n }, this);\n\n if (updateMethod !== 'none' && !isHighDown && !cptType) {\n // Still dirty\n if (this[OPTION_UPDATED]) {\n // FIXME Pass payload ?\n prepare(this);\n updateMethods.update.call(this, payload);\n this[OPTION_UPDATED] = false;\n } else {\n updateMethods[updateMethod].call(this, payload);\n }\n } // Follow the rule of action batch\n\n\n if (batched) {\n eventObj = {\n type: actionInfo.event || payloadType,\n escapeConnect: escapeConnect,\n batch: eventObjBatch\n };\n } else {\n eventObj = eventObjBatch[0];\n }\n\n this[IN_MAIN_PROCESS] = false;\n !silent && this._messageCenter.trigger(eventObj.type, eventObj);\n}\n\nfunction flushPendingActions(silent) {\n var pendingActions = this._pendingActions;\n\n while (pendingActions.length) {\n var payload = pendingActions.shift();\n doDispatchAction.call(this, payload, silent);\n }\n}\n\nfunction triggerUpdatedEvent(silent) {\n !silent && this.trigger('updated');\n}\n/**\n * Event `rendered` is triggered when zr\n * rendered. It is useful for realtime\n * snapshot (reflect animation).\n *\n * Event `finished` is triggered when:\n * (1) zrender rendering finished.\n * (2) initial animation finished.\n * (3) progressive rendering finished.\n * (4) no pending action.\n * (5) no delayed setOption needs to be processed.\n */\n\n\nfunction bindRenderedEvent(zr, ecIns) {\n zr.on('rendered', function () {\n ecIns.trigger('rendered'); // The `finished` event should not be triggered repeatly,\n // so it should only be triggered when rendering indeed happend\n // in zrender. (Consider the case that dipatchAction is keep\n // triggering when mouse move).\n\n if ( // Although zr is dirty if initial animation is not finished\n // and this checking is called on frame, we also check\n // animation finished for robustness.\n zr.animation.isFinished() && !ecIns[OPTION_UPDATED] && !ecIns._scheduler.unfinished && !ecIns._pendingActions.length) {\n ecIns.trigger('finished');\n }\n });\n}\n/**\n * @param {Object} params\n * @param {number} params.seriesIndex\n * @param {Array|TypedArray} params.data\n */\n\n\nechartsProto.appendData = function (params) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var seriesIndex = params.seriesIndex;\n var ecModel = this.getModel();\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n seriesModel.appendData(params); // Note: `appendData` does not support that update extent of coordinate\n // system, util some scenario require that. In the expected usage of\n // `appendData`, the initial extent of coordinate system should better\n // be fixed by axis `min`/`max` setting or initial data, otherwise if\n // the extent changed while `appendData`, the location of the painted\n // graphic elements have to be changed, which make the usage of\n // `appendData` meaningless.\n\n this._scheduler.unfinished = true;\n};\n/**\n * Register event\n * @method\n */\n\n\nechartsProto.on = createRegisterEventWithLowercaseName('on', false);\nechartsProto.off = createRegisterEventWithLowercaseName('off', false);\nechartsProto.one = createRegisterEventWithLowercaseName('one', false);\n/**\n * Prepare view instances of charts and components\n * @param {module:echarts/model/Global} ecModel\n * @private\n */\n\nfunction prepareView(ecIns, type, ecModel, scheduler) {\n var isComponent = type === 'component';\n var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews;\n var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap;\n var zr = ecIns._zr;\n var api = ecIns._api;\n\n for (var i = 0; i < viewList.length; i++) {\n viewList[i].__alive = false;\n }\n\n isComponent ? ecModel.eachComponent(function (componentType, model) {\n componentType !== 'series' && doPrepare(model);\n }) : ecModel.eachSeries(doPrepare);\n\n function doPrepare(model) {\n // Consider: id same and type changed.\n var viewId = '_ec_' + model.id + '_' + model.type;\n var view = viewMap[viewId];\n\n if (!view) {\n var classType = parseClassType(model.type);\n var Clazz = isComponent ? ComponentView.getClass(classType.main, classType.sub) : ChartView.getClass(classType.sub);\n view = new Clazz();\n view.init(ecModel, api);\n viewMap[viewId] = view;\n viewList.push(view);\n zr.add(view.group);\n }\n\n model.__viewId = view.__id = viewId;\n view.__alive = true;\n view.__model = model;\n view.group.__ecComponentInfo = {\n mainType: model.mainType,\n index: model.componentIndex\n };\n !isComponent && scheduler.prepareView(view, model, ecModel, api);\n }\n\n for (var i = 0; i < viewList.length;) {\n var view = viewList[i];\n\n if (!view.__alive) {\n !isComponent && view.renderTask.dispose();\n zr.remove(view.group);\n view.dispose(ecModel, api);\n viewList.splice(i, 1);\n delete viewMap[view.__id];\n view.__id = view.group.__ecComponentInfo = null;\n } else {\n i++;\n }\n }\n} // /**\n// * Encode visual infomation from data after data processing\n// *\n// * @param {module:echarts/model/Global} ecModel\n// * @param {object} layout\n// * @param {boolean} [layoutFilter] `true`: only layout,\n// * `false`: only not layout,\n// * `null`/`undefined`: all.\n// * @param {string} taskBaseTag\n// * @private\n// */\n// function startVisualEncoding(ecIns, ecModel, api, payload, layoutFilter) {\n// each(visualFuncs, function (visual, index) {\n// var isLayout = visual.isLayout;\n// if (layoutFilter == null\n// || (layoutFilter === false && !isLayout)\n// || (layoutFilter === true && isLayout)\n// ) {\n// visual.func(ecModel, api, payload);\n// }\n// });\n// }\n\n\nfunction clearColorPalette(ecModel) {\n ecModel.clearColorPalette();\n ecModel.eachSeries(function (seriesModel) {\n seriesModel.clearColorPalette();\n });\n}\n\nfunction render(ecIns, ecModel, api, payload) {\n renderComponents(ecIns, ecModel, api, payload);\n each(ecIns._chartsViews, function (chart) {\n chart.__alive = false;\n });\n renderSeries(ecIns, ecModel, api, payload); // Remove groups of unrendered charts\n\n each(ecIns._chartsViews, function (chart) {\n if (!chart.__alive) {\n chart.remove(ecModel, api);\n }\n });\n}\n\nfunction renderComponents(ecIns, ecModel, api, payload, dirtyList) {\n each(dirtyList || ecIns._componentsViews, function (componentView) {\n var componentModel = componentView.__model;\n componentView.render(componentModel, ecModel, api, payload);\n updateZ(componentModel, componentView);\n });\n}\n/**\n * Render each chart and component\n * @private\n */\n\n\nfunction renderSeries(ecIns, ecModel, api, payload, dirtyMap) {\n // Render all charts\n var scheduler = ecIns._scheduler;\n var unfinished;\n ecModel.eachSeries(function (seriesModel) {\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n chartView.__alive = true;\n var renderTask = chartView.renderTask;\n scheduler.updatePayload(renderTask, payload);\n\n if (dirtyMap && dirtyMap.get(seriesModel.uid)) {\n renderTask.dirty();\n }\n\n unfinished |= renderTask.perform(scheduler.getPerformArgs(renderTask));\n chartView.group.silent = !!seriesModel.get('silent');\n updateZ(seriesModel, chartView);\n updateBlend(seriesModel, chartView);\n });\n scheduler.unfinished |= unfinished; // If use hover layer\n\n updateHoverLayerStatus(ecIns, ecModel); // Add aria\n\n aria(ecIns._zr.dom, ecModel);\n}\n\nfunction performPostUpdateFuncs(ecModel, api) {\n each(postUpdateFuncs, function (func) {\n func(ecModel, api);\n });\n}\n\nvar MOUSE_EVENT_NAMES = ['click', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mousedown', 'mouseup', 'globalout', 'contextmenu'];\n/**\n * @private\n */\n\nechartsProto._initEvents = function () {\n each(MOUSE_EVENT_NAMES, function (eveName) {\n var handler = function (e) {\n var ecModel = this.getModel();\n var el = e.target;\n var params;\n var isGlobalOut = eveName === 'globalout'; // no e.target when 'globalout'.\n\n if (isGlobalOut) {\n params = {};\n } else if (el && el.dataIndex != null) {\n var dataModel = el.dataModel || ecModel.getSeriesByIndex(el.seriesIndex);\n params = dataModel && dataModel.getDataParams(el.dataIndex, el.dataType, el) || {};\n } // If element has custom eventData of components\n else if (el && el.eventData) {\n params = zrUtil.extend({}, el.eventData);\n } // Contract: if params prepared in mouse event,\n // these properties must be specified:\n // {\n // componentType: string (component main type)\n // componentIndex: number\n // }\n // Otherwise event query can not work.\n\n\n if (params) {\n var componentType = params.componentType;\n var componentIndex = params.componentIndex; // Special handling for historic reason: when trigger by\n // markLine/markPoint/markArea, the componentType is\n // 'markLine'/'markPoint'/'markArea', but we should better\n // enable them to be queried by seriesIndex, since their\n // option is set in each series.\n\n if (componentType === 'markLine' || componentType === 'markPoint' || componentType === 'markArea') {\n componentType = 'series';\n componentIndex = params.seriesIndex;\n }\n\n var model = componentType && componentIndex != null && ecModel.getComponent(componentType, componentIndex);\n var view = model && this[model.mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId];\n params.event = e;\n params.type = eveName;\n this._ecEventProcessor.eventInfo = {\n targetEl: el,\n packedEvent: params,\n model: model,\n view: view\n };\n this.trigger(eveName, params);\n }\n }; // Consider that some component (like tooltip, brush, ...)\n // register zr event handler, but user event handler might\n // do anything, such as call `setOption` or `dispatchAction`,\n // which probably update any of the content and probably\n // cause problem if it is called previous other inner handlers.\n\n\n handler.zrEventfulCallAtLast = true;\n\n this._zr.on(eveName, handler, this);\n }, this);\n each(eventActionMap, function (actionType, eventType) {\n this._messageCenter.on(eventType, function (event) {\n this.trigger(eventType, event);\n }, this);\n }, this);\n};\n/**\n * @return {boolean}\n */\n\n\nechartsProto.isDisposed = function () {\n return this._disposed;\n};\n/**\n * Clear\n */\n\n\nechartsProto.clear = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this.setOption({\n series: []\n }, true);\n};\n/**\n * Dispose instance\n */\n\n\nechartsProto.dispose = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._disposed = true;\n modelUtil.setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');\n var api = this._api;\n var ecModel = this._model;\n each(this._componentsViews, function (component) {\n component.dispose(ecModel, api);\n });\n each(this._chartsViews, function (chart) {\n chart.dispose(ecModel, api);\n }); // Dispose after all views disposed\n\n this._zr.dispose();\n\n delete instances[this.id];\n};\n\nzrUtil.mixin(ECharts, Eventful);\n\nfunction disposedWarning(id) {}\n\nfunction updateHoverLayerStatus(ecIns, ecModel) {\n var zr = ecIns._zr;\n var storage = zr.storage;\n var elCount = 0;\n storage.traverse(function (el) {\n elCount++;\n });\n\n if (elCount > ecModel.get('hoverLayerThreshold') && !env.node) {\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.preventUsingHoverLayer) {\n return;\n }\n\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n if (chartView.__alive) {\n chartView.group.traverse(function (el) {\n // Don't switch back.\n el.useHoverLayer = true;\n });\n }\n });\n }\n}\n/**\n * Update chart progressive and blend.\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateBlend(seriesModel, chartView) {\n var blendMode = seriesModel.get('blendMode') || null;\n chartView.group.traverse(function (el) {\n // FIXME marker and other components\n if (!el.isGroup) {\n // Only set if blendMode is changed. In case element is incremental and don't wan't to rerender.\n if (el.style.blend !== blendMode) {\n el.setStyle('blend', blendMode);\n }\n }\n\n if (el.eachPendingDisplayable) {\n el.eachPendingDisplayable(function (displayable) {\n displayable.setStyle('blend', blendMode);\n });\n }\n });\n}\n/**\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateZ(model, view) {\n var z = model.get('z');\n var zlevel = model.get('zlevel'); // Set z and zlevel\n\n view.group.traverse(function (el) {\n if (el.type !== 'group') {\n z != null && (el.z = z);\n zlevel != null && (el.zlevel = zlevel);\n }\n });\n}\n\nfunction createExtensionAPI(ecInstance) {\n var coordSysMgr = ecInstance._coordSysMgr;\n return zrUtil.extend(new ExtensionAPI(ecInstance), {\n // Inject methods\n getCoordinateSystems: zrUtil.bind(coordSysMgr.getCoordinateSystems, coordSysMgr),\n getComponentByElement: function (el) {\n while (el) {\n var modelInfo = el.__ecComponentInfo;\n\n if (modelInfo != null) {\n return ecInstance._model.getComponent(modelInfo.mainType, modelInfo.index);\n }\n\n el = el.parent;\n }\n }\n });\n}\n/**\n * @class\n * Usage of query:\n * `chart.on('click', query, handler);`\n * The `query` can be:\n * + The component type query string, only `mainType` or `mainType.subType`,\n * like: 'xAxis', 'series', 'xAxis.category' or 'series.line'.\n * + The component query object, like:\n * `{seriesIndex: 2}`, `{seriesName: 'xx'}`, `{seriesId: 'some'}`,\n * `{xAxisIndex: 2}`, `{xAxisName: 'xx'}`, `{xAxisId: 'some'}`.\n * + The data query object, like:\n * `{dataIndex: 123}`, `{dataType: 'link'}`, `{name: 'some'}`.\n * + The other query object (cmponent customized query), like:\n * `{element: 'some'}` (only available in custom series).\n *\n * Caveat: If a prop in the `query` object is `null/undefined`, it is the\n * same as there is no such prop in the `query` object.\n */\n\n\nfunction EventProcessor() {\n // These info required: targetEl, packedEvent, model, view\n this.eventInfo;\n}\n\nEventProcessor.prototype = {\n constructor: EventProcessor,\n normalizeQuery: function (query) {\n var cptQuery = {};\n var dataQuery = {};\n var otherQuery = {}; // `query` is `mainType` or `mainType.subType` of component.\n\n if (zrUtil.isString(query)) {\n var condCptType = parseClassType(query); // `.main` and `.sub` may be ''.\n\n cptQuery.mainType = condCptType.main || null;\n cptQuery.subType = condCptType.sub || null;\n } // `query` is an object, convert to {mainType, index, name, id}.\n else {\n // `xxxIndex`, `xxxName`, `xxxId`, `name`, `dataIndex`, `dataType` is reserved,\n // can not be used in `compomentModel.filterForExposedEvent`.\n var suffixes = ['Index', 'Name', 'Id'];\n var dataKeys = {\n name: 1,\n dataIndex: 1,\n dataType: 1\n };\n zrUtil.each(query, function (val, key) {\n var reserved = false;\n\n for (var i = 0; i < suffixes.length; i++) {\n var propSuffix = suffixes[i];\n var suffixPos = key.lastIndexOf(propSuffix);\n\n if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) {\n var mainType = key.slice(0, suffixPos); // Consider `dataIndex`.\n\n if (mainType !== 'data') {\n cptQuery.mainType = mainType;\n cptQuery[propSuffix.toLowerCase()] = val;\n reserved = true;\n }\n }\n }\n\n if (dataKeys.hasOwnProperty(key)) {\n dataQuery[key] = val;\n reserved = true;\n }\n\n if (!reserved) {\n otherQuery[key] = val;\n }\n });\n }\n\n return {\n cptQuery: cptQuery,\n dataQuery: dataQuery,\n otherQuery: otherQuery\n };\n },\n filter: function (eventType, query, args) {\n // They should be assigned before each trigger call.\n var eventInfo = this.eventInfo;\n\n if (!eventInfo) {\n return true;\n }\n\n var targetEl = eventInfo.targetEl;\n var packedEvent = eventInfo.packedEvent;\n var model = eventInfo.model;\n var view = eventInfo.view; // For event like 'globalout'.\n\n if (!model || !view) {\n return true;\n }\n\n var cptQuery = query.cptQuery;\n var dataQuery = query.dataQuery;\n return check(cptQuery, model, 'mainType') && check(cptQuery, model, 'subType') && check(cptQuery, model, 'index', 'componentIndex') && check(cptQuery, model, 'name') && check(cptQuery, model, 'id') && check(dataQuery, packedEvent, 'name') && check(dataQuery, packedEvent, 'dataIndex') && check(dataQuery, packedEvent, 'dataType') && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent));\n\n function check(query, host, prop, propOnHost) {\n return query[prop] == null || host[propOnHost || prop] === query[prop];\n }\n },\n afterTrigger: function () {\n // Make sure the eventInfo wont be used in next trigger.\n this.eventInfo = null;\n }\n};\n/**\n * @type {Object} key: actionType.\n * @inner\n */\n\nvar actions = {};\n/**\n * Map eventType to actionType\n * @type {Object}\n */\n\nvar eventActionMap = {};\n/**\n * Data processor functions of each stage\n * @type {Array.>}\n * @inner\n */\n\nvar dataProcessorFuncs = [];\n/**\n * @type {Array.}\n * @inner\n */\n\nvar optionPreprocessorFuncs = [];\n/**\n * @type {Array.}\n * @inner\n */\n\nvar postUpdateFuncs = [];\n/**\n * Visual encoding functions of each stage\n * @type {Array.>}\n */\n\nvar visualFuncs = [];\n/**\n * Theme storage\n * @type {Object.}\n */\n\nvar themeStorage = {};\n/**\n * Loading effects\n */\n\nvar loadingEffects = {};\nvar instances = {};\nvar connectedGroups = {};\nvar idBase = new Date() - 0;\nvar groupIdBase = new Date() - 0;\nvar DOM_ATTRIBUTE_KEY = '_echarts_instance_';\n\nfunction enableConnect(chart) {\n var STATUS_PENDING = 0;\n var STATUS_UPDATING = 1;\n var STATUS_UPDATED = 2;\n var STATUS_KEY = '__connectUpdateStatus';\n\n function updateConnectedChartsStatus(charts, status) {\n for (var i = 0; i < charts.length; i++) {\n var otherChart = charts[i];\n otherChart[STATUS_KEY] = status;\n }\n }\n\n each(eventActionMap, function (actionType, eventType) {\n chart._messageCenter.on(eventType, function (event) {\n if (connectedGroups[chart.group] && chart[STATUS_KEY] !== STATUS_PENDING) {\n if (event && event.escapeConnect) {\n return;\n }\n\n var action = chart.makeActionFromEvent(event);\n var otherCharts = [];\n each(instances, function (otherChart) {\n if (otherChart !== chart && otherChart.group === chart.group) {\n otherCharts.push(otherChart);\n }\n });\n updateConnectedChartsStatus(otherCharts, STATUS_PENDING);\n each(otherCharts, function (otherChart) {\n if (otherChart[STATUS_KEY] !== STATUS_UPDATING) {\n otherChart.dispatchAction(action);\n }\n });\n updateConnectedChartsStatus(otherCharts, STATUS_UPDATED);\n }\n });\n });\n}\n/**\n * @param {HTMLElement} dom\n * @param {Object} [theme]\n * @param {Object} opts\n * @param {number} [opts.devicePixelRatio] Use window.devicePixelRatio by default\n * @param {string} [opts.renderer] Can choose 'canvas' or 'svg' to render the chart.\n * @param {number} [opts.width] Use clientWidth of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Use clientHeight of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n */\n\n\nfunction init(dom, theme, opts) {\n var existInstance = getInstanceByDom(dom);\n\n if (existInstance) {\n return existInstance;\n }\n\n var chart = new ECharts(dom, theme, opts);\n chart.id = 'ec_' + idBase++;\n instances[chart.id] = chart;\n modelUtil.setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);\n enableConnect(chart);\n return chart;\n}\n/**\n * @return {string|Array.} groupId\n */\n\n\nfunction connect(groupId) {\n // Is array of charts\n if (zrUtil.isArray(groupId)) {\n var charts = groupId;\n groupId = null; // If any chart has group\n\n each(charts, function (chart) {\n if (chart.group != null) {\n groupId = chart.group;\n }\n });\n groupId = groupId || 'g_' + groupIdBase++;\n each(charts, function (chart) {\n chart.group = groupId;\n });\n }\n\n connectedGroups[groupId] = true;\n return groupId;\n}\n/**\n * @DEPRECATED\n * @return {string} groupId\n */\n\n\nfunction disConnect(groupId) {\n connectedGroups[groupId] = false;\n}\n/**\n * @return {string} groupId\n */\n\n\nvar disconnect = disConnect;\n/**\n * Dispose a chart instance\n * @param {module:echarts~ECharts|HTMLDomElement|string} chart\n */\n\nfunction dispose(chart) {\n if (typeof chart === 'string') {\n chart = instances[chart];\n } else if (!(chart instanceof ECharts)) {\n // Try to treat as dom\n chart = getInstanceByDom(chart);\n }\n\n if (chart instanceof ECharts && !chart.isDisposed()) {\n chart.dispose();\n }\n}\n/**\n * @param {HTMLElement} dom\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceByDom(dom) {\n return instances[modelUtil.getAttribute(dom, DOM_ATTRIBUTE_KEY)];\n}\n/**\n * @param {string} key\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceById(key) {\n return instances[key];\n}\n/**\n * Register theme\n */\n\n\nfunction registerTheme(name, theme) {\n themeStorage[name] = theme;\n}\n/**\n * Register option preprocessor\n * @param {Function} preprocessorFunc\n */\n\n\nfunction registerPreprocessor(preprocessorFunc) {\n optionPreprocessorFuncs.push(preprocessorFunc);\n}\n/**\n * @param {number} [priority=1000]\n * @param {Object|Function} processor\n */\n\n\nfunction registerProcessor(priority, processor) {\n normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_FILTER);\n}\n/**\n * Register postUpdater\n * @param {Function} postUpdateFunc\n */\n\n\nfunction registerPostUpdate(postUpdateFunc) {\n postUpdateFuncs.push(postUpdateFunc);\n}\n/**\n * Usage:\n * registerAction('someAction', 'someEvent', function () { ... });\n * registerAction('someAction', function () { ... });\n * registerAction(\n * {type: 'someAction', event: 'someEvent', update: 'updateView'},\n * function () { ... }\n * );\n *\n * @param {(string|Object)} actionInfo\n * @param {string} actionInfo.type\n * @param {string} [actionInfo.event]\n * @param {string} [actionInfo.update]\n * @param {string} [eventName]\n * @param {Function} action\n */\n\n\nfunction registerAction(actionInfo, eventName, action) {\n if (typeof eventName === 'function') {\n action = eventName;\n eventName = '';\n }\n\n var actionType = isObject(actionInfo) ? actionInfo.type : [actionInfo, actionInfo = {\n event: eventName\n }][0]; // Event name is all lowercase\n\n actionInfo.event = (actionInfo.event || actionType).toLowerCase();\n eventName = actionInfo.event; // Validate action type and event name.\n\n assert(ACTION_REG.test(actionType) && ACTION_REG.test(eventName));\n\n if (!actions[actionType]) {\n actions[actionType] = {\n action: action,\n actionInfo: actionInfo\n };\n }\n\n eventActionMap[eventName] = actionType;\n}\n/**\n * @param {string} type\n * @param {*} CoordinateSystem\n */\n\n\nfunction registerCoordinateSystem(type, CoordinateSystem) {\n CoordinateSystemManager.register(type, CoordinateSystem);\n}\n/**\n * Get dimensions of specified coordinate system.\n * @param {string} type\n * @return {Array.}\n */\n\n\nfunction getCoordinateSystemDimensions(type) {\n var coordSysCreator = CoordinateSystemManager.get(type);\n\n if (coordSysCreator) {\n return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice();\n }\n}\n/**\n * Layout is a special stage of visual encoding\n * Most visual encoding like color are common for different chart\n * But each chart has it's own layout algorithm\n *\n * @param {number} [priority=1000]\n * @param {Function} layoutTask\n */\n\n\nfunction registerLayout(priority, layoutTask) {\n normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\n}\n/**\n * @param {number} [priority=3000]\n * @param {module:echarts/stream/Task} visualTask\n */\n\n\nfunction registerVisual(priority, visualTask) {\n normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\n}\n/**\n * @param {Object|Function} fn: {seriesType, createOnAllSeries, performRawSeries, reset}\n */\n\n\nfunction normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {\n if (isFunction(priority) || isObject(priority)) {\n fn = priority;\n priority = defaultPriority;\n }\n\n var stageHandler = Scheduler.wrapStageHandler(fn, visualType);\n stageHandler.__prio = priority;\n stageHandler.__raw = fn;\n targetList.push(stageHandler);\n return stageHandler;\n}\n/**\n * @param {string} name\n */\n\n\nfunction registerLoading(name, loadingFx) {\n loadingEffects[name] = loadingFx;\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentModel(opts\n/*, superClass*/\n) {\n // var Clazz = ComponentModel;\n // if (superClass) {\n // var classType = parseClassType(superClass);\n // Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n // }\n return ComponentModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentView(opts\n/*, superClass*/\n) {\n // var Clazz = ComponentView;\n // if (superClass) {\n // var classType = parseClassType(superClass);\n // Clazz = ComponentView.getClass(classType.main, classType.sub, true);\n // }\n return ComponentView.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendSeriesModel(opts\n/*, superClass*/\n) {\n // var Clazz = SeriesModel;\n // if (superClass) {\n // superClass = 'series.' + superClass.replace('series.', '');\n // var classType = parseClassType(superClass);\n // Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n // }\n return SeriesModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendChartView(opts\n/*, superClass*/\n) {\n // var Clazz = ChartView;\n // if (superClass) {\n // superClass = superClass.replace('series.', '');\n // var classType = parseClassType(superClass);\n // Clazz = ChartView.getClass(classType.main, true);\n // }\n return ChartView.extend(opts);\n}\n/**\n * ZRender need a canvas context to do measureText.\n * But in node environment canvas may be created by node-canvas.\n * So we need to specify how to create a canvas instead of using document.createElement('canvas')\n *\n * Be careful of using it in the browser.\n *\n * @param {Function} creator\n * @example\n * var Canvas = require('canvas');\n * var echarts = require('echarts');\n * echarts.setCanvasCreator(function () {\n * // Small size is enough.\n * return new Canvas(32, 32);\n * });\n */\n\n\nfunction setCanvasCreator(creator) {\n zrUtil.$override('createCanvas', creator);\n}\n/**\n * @param {string} mapName\n * @param {Array.|Object|string} geoJson\n * @param {Object} [specialAreas]\n *\n * @example GeoJSON\n * $.get('USA.json', function (geoJson) {\n * echarts.registerMap('USA', geoJson);\n * // Or\n * echarts.registerMap('USA', {\n * geoJson: geoJson,\n * specialAreas: {}\n * })\n * });\n *\n * $.get('airport.svg', function (svg) {\n * echarts.registerMap('airport', {\n * svg: svg\n * }\n * });\n *\n * echarts.registerMap('eu', [\n * {svg: eu-topographic.svg},\n * {geoJSON: eu.json}\n * ])\n */\n\n\nfunction registerMap(mapName, geoJson, specialAreas) {\n mapDataStorage.registerMap(mapName, geoJson, specialAreas);\n}\n/**\n * @param {string} mapName\n * @return {Object}\n */\n\n\nfunction getMap(mapName) {\n // For backward compatibility, only return the first one.\n var records = mapDataStorage.retrieveMap(mapName);\n return records && records[0] && {\n geoJson: records[0].geoJSON,\n specialAreas: records[0].specialAreas\n };\n}\n\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesColor);\nregisterPreprocessor(backwardCompat);\nregisterProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);\nregisterLoading('default', loadingDefault); // Default actions\n\nregisterAction({\n type: 'highlight',\n event: 'highlight',\n update: 'highlight'\n}, zrUtil.noop);\nregisterAction({\n type: 'downplay',\n event: 'downplay',\n update: 'downplay'\n}, zrUtil.noop); // Default theme\n\nregisterTheme('light', lightTheme);\nregisterTheme('dark', darkTheme); // For backward compatibility, where the namespace `dataTool` will\n// be mounted on `echarts` is the extension `dataTool` is imported.\n\nvar dataTool = {};\nexports.version = version;\nexports.dependencies = dependencies;\nexports.PRIORITY = PRIORITY;\nexports.init = init;\nexports.connect = connect;\nexports.disConnect = disConnect;\nexports.disconnect = disconnect;\nexports.dispose = dispose;\nexports.getInstanceByDom = getInstanceByDom;\nexports.getInstanceById = getInstanceById;\nexports.registerTheme = registerTheme;\nexports.registerPreprocessor = registerPreprocessor;\nexports.registerProcessor = registerProcessor;\nexports.registerPostUpdate = registerPostUpdate;\nexports.registerAction = registerAction;\nexports.registerCoordinateSystem = registerCoordinateSystem;\nexports.getCoordinateSystemDimensions = getCoordinateSystemDimensions;\nexports.registerLayout = registerLayout;\nexports.registerVisual = registerVisual;\nexports.registerLoading = registerLoading;\nexports.extendComponentModel = extendComponentModel;\nexports.extendComponentView = extendComponentView;\nexports.extendSeriesModel = extendSeriesModel;\nexports.extendChartView = extendChartView;\nexports.setCanvasCreator = setCanvasCreator;\nexports.registerMap = registerMap;\nexports.getMap = getMap;\nexports.dataTool = dataTool;\nvar ___ec_export = require(\"./export\");\n(function () {\n for (var key in ___ec_export) {\n if (___ec_export.hasOwnProperty(key)) {\n exports[key] = ___ec_export[key];\n }\n }\n})();","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrender = require(\"zrender/lib/zrender\");\n\nexports.zrender = zrender;\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nexports.matrix = matrix;\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nexports.vector = vector;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nexports.color = colorTool;\n\nvar graphicUtil = require(\"./util/graphic\");\n\nvar numberUtil = require(\"./util/number\");\n\nexports.number = numberUtil;\n\nvar formatUtil = require(\"./util/format\");\n\nexports.format = formatUtil;\n\nvar _throttle = require(\"./util/throttle\");\n\nvar throttle = _throttle.throttle;\nexports.throttle = _throttle.throttle;\n\nvar ecHelper = require(\"./helper\");\n\nexports.helper = ecHelper;\n\nvar parseGeoJSON = require(\"./coord/geo/parseGeoJson\");\n\nexports.parseGeoJSON = parseGeoJSON;\n\nvar _List = require(\"./data/List\");\n\nexports.List = _List;\n\nvar _Model = require(\"./model/Model\");\n\nexports.Model = _Model;\n\nvar _Axis = require(\"./coord/Axis\");\n\nexports.Axis = _Axis;\n\nvar _env = require(\"zrender/lib/core/env\");\n\nexports.env = _env;\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 * Do not mount those modules on 'src/echarts' for better tree shaking.\n */\nvar parseGeoJson = parseGeoJSON;\nvar ecUtil = {};\nzrUtil.each(['map', 'each', 'filter', 'indexOf', 'inherits', 'reduce', 'filter', 'bind', 'curry', 'isArray', 'isString', 'isObject', 'isFunction', 'extend', 'defaults', 'clone', 'merge'], function (name) {\n ecUtil[name] = zrUtil[name];\n});\nvar graphic = {};\nzrUtil.each(['extendShape', 'extendPath', 'makePath', 'makeImage', 'mergePath', 'resizePath', 'createIcon', 'setHoverStyle', 'setLabelStyle', 'setTextStyle', 'setText', 'getFont', 'updateProps', 'initProps', 'getTransform', 'clipPointsByRect', 'clipRectByRect', 'registerShape', 'getShapeClass', 'Group', 'Image', 'Text', 'Circle', 'Sector', 'Ring', 'Polygon', 'Polyline', 'Rect', 'Line', 'BezierCurve', 'Arc', 'IncrementalDisplayable', 'CompoundPath', 'LinearGradient', 'RadialGradient', 'BoundingRect'], function (name) {\n graphic[name] = graphicUtil[name];\n});\nexports.parseGeoJson = parseGeoJson;\nexports.util = ecUtil;\nexports.graphic = graphic;","\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 createListFromArray = require(\"./chart/helper/createListFromArray\");\n\nvar axisHelper = require(\"./coord/axisHelper\");\n\nvar axisModelCommonMixin = require(\"./coord/axisModelCommonMixin\");\n\nvar Model = require(\"./model/Model\");\n\nvar _layout = require(\"./util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\nexports.getLayoutRect = _layout.getLayoutRect;\n\nvar _dataStackHelper = require(\"./data/helper/dataStackHelper\");\n\nvar enableDataStack = _dataStackHelper.enableDataStack;\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\nvar _completeDimensions = require(\"./data/helper/completeDimensions\");\n\nexports.completeDimensions = _completeDimensions;\n\nvar _createDimensions = require(\"./data/helper/createDimensions\");\n\nexports.createDimensions = _createDimensions;\n\nvar _symbol = require(\"./util/symbol\");\n\nexports.createSymbol = _symbol.createSymbol;\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// import createGraphFromNodeEdge from './chart/helper/createGraphFromNodeEdge';\n\n/**\n * Create a muti dimension List structure from seriesModel.\n * @param {module:echarts/model/Model} seriesModel\n * @return {module:echarts/data/List} list\n */\nfunction createList(seriesModel) {\n return createListFromArray(seriesModel.getSource(), seriesModel);\n} // export function createGraph(seriesModel) {\n// var nodes = seriesModel.get('data');\n// var links = seriesModel.get('links');\n// return createGraphFromNodeEdge(nodes, links, seriesModel);\n// }\n\n\nvar dataStack = {\n isDimensionStacked: isDimensionStacked,\n enableDataStack: enableDataStack,\n getStackedDimension: getStackedDimension\n};\n/**\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\n * @param {string} symbolDesc\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {string} color\n */\n\n/**\n * Create scale\n * @param {Array.} dataExtent\n * @param {Object|module:echarts/Model} option\n */\nfunction createScale(dataExtent, option) {\n var axisModel = option;\n\n if (!Model.isInstance(option)) {\n axisModel = new Model(option);\n zrUtil.mixin(axisModel, axisModelCommonMixin);\n }\n\n var scale = axisHelper.createScaleByModel(axisModel);\n scale.setExtent(dataExtent[0], dataExtent[1]);\n axisHelper.niceScaleExtent(scale, axisModel);\n return scale;\n}\n/**\n * Mixin common methods to axis model,\n *\n * Inlcude methods\n * `getFormattedLabels() => Array.`\n * `getCategories() => Array.`\n * `getMin(origin: boolean) => number`\n * `getMax(origin: boolean) => number`\n * `getNeedCrossZero() => boolean`\n * `setRange(start: number, end: number)`\n * `resetRange()`\n */\n\n\nfunction mixinAxisModelCommonMethods(Model) {\n zrUtil.mixin(Model, axisModelCommonMixin);\n}\n\nexports.createList = createList;\nexports.dataStack = dataStack;\nexports.createScale = createScale;\nexports.mixinAxisModelCommonMethods = mixinAxisModelCommonMethods;","\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* 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 * Language: (Simplified) Chinese.\n */\nvar _default = {\n legend: {\n selector: {\n all: '全选',\n inverse: '反选'\n }\n },\n toolbox: {\n brush: {\n title: {\n rect: '矩形选择',\n polygon: '圈选',\n lineX: '横向选择',\n lineY: '纵向选择',\n keep: '保持选择',\n clear: '清除选择'\n }\n },\n dataView: {\n title: '数据视图',\n lang: ['数据视图', '关闭', '刷新']\n },\n dataZoom: {\n title: {\n zoom: '区域缩放',\n back: '区域缩放还原'\n }\n },\n magicType: {\n title: {\n line: '切换为折线图',\n bar: '切换为柱状图',\n stack: '切换为堆叠',\n tiled: '切换为平铺'\n }\n },\n restore: {\n title: '还原'\n },\n saveAsImage: {\n title: '保存为图片',\n lang: ['右键另存为图片']\n }\n },\n series: {\n typeNames: {\n pie: '饼图',\n bar: '柱状图',\n line: '折线图',\n scatter: '散点图',\n effectScatter: '涟漪散点图',\n radar: '雷达图',\n tree: '树图',\n treemap: '矩形树图',\n boxplot: '箱型图',\n candlestick: 'K线图',\n k: 'K线图',\n heatmap: '热力图',\n map: '地图',\n parallel: '平行坐标图',\n lines: '线图',\n graph: '关系图',\n sankey: '桑基图',\n funnel: '漏斗图',\n gauge: '仪表盘图',\n pictorialBar: '象形柱图',\n themeRiver: '主题河流图',\n sunburst: '旭日图'\n }\n },\n aria: {\n general: {\n withTitle: '这是一个关于“{title}”的图表。',\n withoutTitle: '这是一个图表,'\n },\n series: {\n single: {\n prefix: '',\n withName: '图表类型是{seriesType},表示{seriesName}。',\n withoutName: '图表类型是{seriesType}。'\n },\n multiple: {\n prefix: '它由{seriesCount}个图表系列组成。',\n withName: '第{seriesId}个系列是一个表示{seriesName}的{seriesType},',\n withoutName: '第{seriesId}个系列是一个{seriesType},',\n separator: {\n middle: ';',\n end: '。'\n }\n }\n },\n data: {\n allData: '其数据是——',\n partialData: '其中,前{displayCnt}项是——',\n withName: '{name}的数据是{value}',\n withoutName: '{value}',\n separator: {\n middle: ',',\n end: ''\n }\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar _number = require(\"../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _dataStackHelper = require(\"../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\nvar createRenderPlanner = require(\"../chart/helper/createRenderPlanner\");\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 */\nvar STACK_PREFIX = '__ec_stack_';\nvar LARGE_BAR_MIN_WIDTH = 0.5;\nvar LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\n\nfunction getSeriesStackId(seriesModel) {\n return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(axis) {\n return axis.dim + axis.index;\n}\n/**\n * @param {Object} opt\n * @param {module:echarts/coord/Axis} opt.axis Only support category axis currently.\n * @param {number} opt.count Positive interger.\n * @param {number} [opt.barWidth]\n * @param {number} [opt.barMaxWidth]\n * @param {number} [opt.barMinWidth]\n * @param {number} [opt.barGap]\n * @param {number} [opt.barCategoryGap]\n * @return {Object} {width, offset, offsetCenter} If axis.type is not 'category', return undefined.\n */\n\n\nfunction getLayoutOnAxis(opt) {\n var params = [];\n var baseAxis = opt.axis;\n var axisKey = 'axis0';\n\n if (baseAxis.type !== 'category') {\n return;\n }\n\n var bandWidth = baseAxis.getBandWidth();\n\n for (var i = 0; i < opt.count || 0; i++) {\n params.push(zrUtil.defaults({\n bandWidth: bandWidth,\n axisKey: axisKey,\n stackId: STACK_PREFIX + i\n }, opt));\n }\n\n var widthAndOffsets = doCalBarWidthAndOffset(params);\n var result = [];\n\n for (var i = 0; i < opt.count; i++) {\n var item = widthAndOffsets[axisKey][STACK_PREFIX + i];\n item.offsetCenter = item.offset + item.width / 2;\n result.push(item);\n }\n\n return result;\n}\n\nfunction prepareLayoutBarSeries(seriesType, ecModel) {\n var seriesModels = [];\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n // Check series coordinate, do layout for cartesian2d only\n if (isOnCartesian(seriesModel) && !isInLargeMode(seriesModel)) {\n seriesModels.push(seriesModel);\n }\n });\n return seriesModels;\n}\n/**\n * Map from (baseAxis.dim + '_' + baseAxis.index) to min gap of two adjacent\n * values.\n * This works for time axes, value axes, and log axes.\n * For a single time axis, return value is in the form like\n * {'x_0': [1000000]}.\n * The value of 1000000 is in milliseconds.\n */\n\n\nfunction getValueAxesMinGaps(barSeries) {\n /**\n * Map from axis.index to values.\n * For a single time axis, axisValues is in the form like\n * {'x_0': [1495555200000, 1495641600000, 1495728000000]}.\n * Items in axisValues[x], e.g. 1495555200000, are time values of all\n * series.\n */\n var axisValues = {};\n zrUtil.each(barSeries, function (seriesModel) {\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n\n if (baseAxis.type !== 'time' && baseAxis.type !== 'value') {\n return;\n }\n\n var data = seriesModel.getData();\n var key = baseAxis.dim + '_' + baseAxis.index;\n var dim = data.mapDimension(baseAxis.dim);\n\n for (var i = 0, cnt = data.count(); i < cnt; ++i) {\n var value = data.get(dim, i);\n\n if (!axisValues[key]) {\n // No previous data for the axis\n axisValues[key] = [value];\n } else {\n // No value in previous series\n axisValues[key].push(value);\n } // Ignore duplicated time values in the same axis\n\n }\n });\n var axisMinGaps = [];\n\n for (var key in axisValues) {\n if (axisValues.hasOwnProperty(key)) {\n var valuesInAxis = axisValues[key];\n\n if (valuesInAxis) {\n // Sort axis values into ascending order to calculate gaps\n valuesInAxis.sort(function (a, b) {\n return a - b;\n });\n var min = null;\n\n for (var j = 1; j < valuesInAxis.length; ++j) {\n var delta = valuesInAxis[j] - valuesInAxis[j - 1];\n\n if (delta > 0) {\n // Ignore 0 delta because they are of the same axis value\n min = min === null ? delta : Math.min(min, delta);\n }\n } // Set to null if only have one data\n\n\n axisMinGaps[key] = min;\n }\n }\n }\n\n return axisMinGaps;\n}\n\nfunction makeColumnLayout(barSeries) {\n var axisMinGaps = getValueAxesMinGaps(barSeries);\n var seriesInfoList = [];\n zrUtil.each(barSeries, function (seriesModel) {\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var axisExtent = baseAxis.getExtent();\n var bandWidth;\n\n if (baseAxis.type === 'category') {\n bandWidth = baseAxis.getBandWidth();\n } else if (baseAxis.type === 'value' || baseAxis.type === 'time') {\n var key = baseAxis.dim + '_' + baseAxis.index;\n var minGap = axisMinGaps[key];\n var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]);\n var scale = baseAxis.scale.getExtent();\n var scaleSpan = Math.abs(scale[1] - scale[0]);\n bandWidth = minGap ? extentSpan / scaleSpan * minGap : extentSpan; // When there is only one data value\n } else {\n var data = seriesModel.getData();\n bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n }\n\n var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n var barMinWidth = parsePercent( // barMinWidth by default is 1 in cartesian. Because in value axis,\n // the auto-calculated bar width might be less than 1.\n seriesModel.get('barMinWidth') || 1, bandWidth);\n var barGap = seriesModel.get('barGap');\n var barCategoryGap = seriesModel.get('barCategoryGap');\n seriesInfoList.push({\n bandWidth: bandWidth,\n barWidth: barWidth,\n barMaxWidth: barMaxWidth,\n barMinWidth: barMinWidth,\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n axisKey: getAxisKey(baseAxis),\n stackId: getSeriesStackId(seriesModel)\n });\n });\n return doCalBarWidthAndOffset(seriesInfoList);\n}\n\nfunction doCalBarWidthAndOffset(seriesInfoList) {\n // Columns info on each category axis. Key is cartesian name\n var columnsMap = {};\n zrUtil.each(seriesInfoList, function (seriesInfo, idx) {\n var axisKey = seriesInfo.axisKey;\n var bandWidth = seriesInfo.bandWidth;\n var columnsOnAxis = columnsMap[axisKey] || {\n bandWidth: bandWidth,\n remainedWidth: bandWidth,\n autoWidthCount: 0,\n categoryGap: '20%',\n gap: '30%',\n stacks: {}\n };\n var stacks = columnsOnAxis.stacks;\n columnsMap[axisKey] = columnsOnAxis;\n var stackId = seriesInfo.stackId;\n\n if (!stacks[stackId]) {\n columnsOnAxis.autoWidthCount++;\n }\n\n stacks[stackId] = stacks[stackId] || {\n width: 0,\n maxWidth: 0\n }; // Caution: In a single coordinate system, these barGrid attributes\n // will be shared by series. Consider that they have default values,\n // only the attributes set on the last series will work.\n // Do not change this fact unless there will be a break change.\n\n var barWidth = seriesInfo.barWidth;\n\n if (barWidth && !stacks[stackId].width) {\n // See #6312, do not restrict width.\n stacks[stackId].width = barWidth;\n barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n columnsOnAxis.remainedWidth -= barWidth;\n }\n\n var barMaxWidth = seriesInfo.barMaxWidth;\n barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n var barMinWidth = seriesInfo.barMinWidth;\n barMinWidth && (stacks[stackId].minWidth = barMinWidth);\n var barGap = seriesInfo.barGap;\n barGap != null && (columnsOnAxis.gap = barGap);\n var barCategoryGap = seriesInfo.barCategoryGap;\n barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n });\n var result = {};\n zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) {\n result[coordSysName] = {};\n var stacks = columnsOnAxis.stacks;\n var bandWidth = columnsOnAxis.bandWidth;\n var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);\n var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n var remainedWidth = columnsOnAxis.remainedWidth;\n var autoWidthCount = columnsOnAxis.autoWidthCount;\n var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n zrUtil.each(stacks, function (column) {\n var maxWidth = column.maxWidth;\n var minWidth = column.minWidth;\n\n if (!column.width) {\n var finalWidth = autoWidth;\n\n if (maxWidth && maxWidth < finalWidth) {\n finalWidth = Math.min(maxWidth, remainedWidth);\n } // `minWidth` has higher priority. `minWidth` decide that wheter the\n // bar is able to be visible. So `minWidth` should not be restricted\n // by `maxWidth` or `remainedWidth` (which is from `bandWidth`). In\n // the extreme cases for `value` axis, bars are allowed to overlap\n // with each other if `minWidth` specified.\n\n\n if (minWidth && minWidth > finalWidth) {\n finalWidth = minWidth;\n }\n\n if (finalWidth !== autoWidth) {\n column.width = finalWidth;\n remainedWidth -= finalWidth + barGapPercent * finalWidth;\n autoWidthCount--;\n }\n } else {\n // `barMinWidth/barMaxWidth` has higher priority than `barWidth`, as\n // CSS does. Becuase barWidth can be a percent value, where\n // `barMaxWidth` can be used to restrict the final width.\n var finalWidth = column.width;\n\n if (maxWidth) {\n finalWidth = Math.min(finalWidth, maxWidth);\n } // `minWidth` has higher priority, as described above\n\n\n if (minWidth) {\n finalWidth = Math.max(finalWidth, minWidth);\n }\n\n column.width = finalWidth;\n remainedWidth -= finalWidth + barGapPercent * finalWidth;\n autoWidthCount--;\n }\n }); // Recalculate width again\n\n autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0);\n var widthSum = 0;\n var lastColumn;\n zrUtil.each(stacks, function (column, idx) {\n if (!column.width) {\n column.width = autoWidth;\n }\n\n lastColumn = column;\n widthSum += column.width * (1 + barGapPercent);\n });\n\n if (lastColumn) {\n widthSum -= lastColumn.width * barGapPercent;\n }\n\n var offset = -widthSum / 2;\n zrUtil.each(stacks, function (column, stackId) {\n result[coordSysName][stackId] = result[coordSysName][stackId] || {\n bandWidth: bandWidth,\n offset: offset,\n width: column.width\n };\n offset += column.width * (1 + barGapPercent);\n });\n });\n return result;\n}\n/**\n * @param {Object} barWidthAndOffset The result of makeColumnLayout\n * @param {module:echarts/coord/Axis} axis\n * @param {module:echarts/model/Series} [seriesModel] If not provided, return all.\n * @return {Object} {stackId: {offset, width}} or {offset, width} if seriesModel provided.\n */\n\n\nfunction retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) {\n if (barWidthAndOffset && axis) {\n var result = barWidthAndOffset[getAxisKey(axis)];\n\n if (result != null && seriesModel != null) {\n result = result[getSeriesStackId(seriesModel)];\n }\n\n return result;\n }\n}\n/**\n * @param {string} seriesType\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction layout(seriesType, ecModel) {\n var seriesModels = prepareLayoutBarSeries(seriesType, ecModel);\n var barWidthAndOffset = makeColumnLayout(seriesModels);\n var lastStackCoords = {};\n var lastStackCoordsOrigin = {};\n zrUtil.each(seriesModels, function (seriesModel) {\n var data = seriesModel.getData();\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var stackId = getSeriesStackId(seriesModel);\n var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId];\n var columnOffset = columnLayoutInfo.offset;\n var columnWidth = columnLayoutInfo.width;\n var valueAxis = cartesian.getOtherAxis(baseAxis);\n var barMinHeight = seriesModel.get('barMinHeight') || 0;\n lastStackCoords[stackId] = lastStackCoords[stackId] || [];\n lastStackCoordsOrigin[stackId] = lastStackCoordsOrigin[stackId] || []; // Fix #4243\n\n data.setLayout({\n bandWidth: columnLayoutInfo.bandWidth,\n offset: columnOffset,\n size: columnWidth\n });\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var stacked = isDimensionStacked(data, valueDim\n /*, baseDim*/\n );\n var isValueAxisH = valueAxis.isHorizontal();\n var valueAxisStart = getValueAxisStart(baseAxis, valueAxis, stacked);\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n var value = data.get(valueDim, idx);\n var baseValue = data.get(baseDim, idx);\n var sign = value >= 0 ? 'p' : 'n';\n var baseCoord = valueAxisStart; // Because of the barMinHeight, we can not use the value in\n // stackResultDimension directly.\n\n if (stacked) {\n // Only ordinal axis can be stacked.\n if (!lastStackCoords[stackId][baseValue]) {\n lastStackCoords[stackId][baseValue] = {\n p: valueAxisStart,\n // Positive stack\n n: valueAxisStart // Negative stack\n\n };\n } // Should also consider #4243\n\n\n baseCoord = lastStackCoords[stackId][baseValue][sign];\n }\n\n var x;\n var y;\n var width;\n var height;\n\n if (isValueAxisH) {\n var coord = cartesian.dataToPoint([value, baseValue]);\n x = baseCoord;\n y = coord[1] + columnOffset;\n width = coord[0] - valueAxisStart;\n height = columnWidth;\n\n if (Math.abs(width) < barMinHeight) {\n width = (width < 0 ? -1 : 1) * barMinHeight;\n } // Ignore stack from NaN value\n\n\n if (!isNaN(width)) {\n stacked && (lastStackCoords[stackId][baseValue][sign] += width);\n }\n } else {\n var coord = cartesian.dataToPoint([baseValue, value]);\n x = coord[0] + columnOffset;\n y = baseCoord;\n width = columnWidth;\n height = coord[1] - valueAxisStart;\n\n if (Math.abs(height) < barMinHeight) {\n // Include zero to has a positive bar\n height = (height <= 0 ? -1 : 1) * barMinHeight;\n } // Ignore stack from NaN value\n\n\n if (!isNaN(height)) {\n stacked && (lastStackCoords[stackId][baseValue][sign] += height);\n }\n }\n\n data.setItemLayout(idx, {\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, this);\n} // TODO: Do not support stack in large mode yet.\n\n\nvar largeLayout = {\n seriesType: 'bar',\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n if (!isOnCartesian(seriesModel) || !isInLargeMode(seriesModel)) {\n return;\n }\n\n var data = seriesModel.getData();\n var cartesian = seriesModel.coordinateSystem;\n var coordLayout = cartesian.grid.getRect();\n var baseAxis = cartesian.getBaseAxis();\n var valueAxis = cartesian.getOtherAxis(baseAxis);\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var valueAxisHorizontal = valueAxis.isHorizontal();\n var valueDimIdx = valueAxisHorizontal ? 0 : 1;\n var barWidth = retrieveColumnLayout(makeColumnLayout([seriesModel]), baseAxis, seriesModel).width;\n\n if (!(barWidth > LARGE_BAR_MIN_WIDTH)) {\n // jshint ignore:line\n barWidth = LARGE_BAR_MIN_WIDTH;\n }\n\n return {\n progress: progress\n };\n\n function progress(params, data) {\n var count = params.count;\n var largePoints = new LargeArr(count * 2);\n var largeBackgroundPoints = new LargeArr(count * 2);\n var largeDataIndices = new LargeArr(count);\n var dataIndex;\n var coord = [];\n var valuePair = [];\n var pointsOffset = 0;\n var idxOffset = 0;\n\n while ((dataIndex = params.next()) != null) {\n valuePair[valueDimIdx] = data.get(valueDim, dataIndex);\n valuePair[1 - valueDimIdx] = data.get(baseDim, dataIndex);\n coord = cartesian.dataToPoint(valuePair, null, coord); // Data index might not be in order, depends on `progressiveChunkMode`.\n\n largeBackgroundPoints[pointsOffset] = valueAxisHorizontal ? coordLayout.x + coordLayout.width : coord[0];\n largePoints[pointsOffset++] = coord[0];\n largeBackgroundPoints[pointsOffset] = valueAxisHorizontal ? coord[1] : coordLayout.y + coordLayout.height;\n largePoints[pointsOffset++] = coord[1];\n largeDataIndices[idxOffset++] = dataIndex;\n }\n\n data.setLayout({\n largePoints: largePoints,\n largeDataIndices: largeDataIndices,\n largeBackgroundPoints: largeBackgroundPoints,\n barWidth: barWidth,\n valueAxisStart: getValueAxisStart(baseAxis, valueAxis, false),\n backgroundStart: valueAxisHorizontal ? coordLayout.x : coordLayout.y,\n valueAxisHorizontal: valueAxisHorizontal\n });\n }\n }\n};\n\nfunction isOnCartesian(seriesModel) {\n return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d';\n}\n\nfunction isInLargeMode(seriesModel) {\n return seriesModel.pipelineContext && seriesModel.pipelineContext.large;\n} // See cases in `test/bar-start.html` and `#7412`, `#8747`.\n\n\nfunction getValueAxisStart(baseAxis, valueAxis, stacked) {\n return valueAxis.toGlobalCoord(valueAxis.dataToCoord(valueAxis.type === 'log' ? 1 : 0));\n}\n\nexports.getLayoutOnAxis = getLayoutOnAxis;\nexports.prepareLayoutBarSeries = prepareLayoutBarSeries;\nexports.makeColumnLayout = makeColumnLayout;\nexports.retrieveColumnLayout = retrieveColumnLayout;\nexports.layout = layout;\nexports.largeLayout = largeLayout;","\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 _number = require(\"../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _dataStackHelper = require(\"../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\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 getSeriesStackId(seriesModel) {\n return seriesModel.get('stack') || '__ec_stack_' + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(polar, axis) {\n return axis.dim + polar.model.componentIndex;\n}\n/**\n * @param {string} seriesType\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\nfunction barLayoutPolar(seriesType, ecModel, api) {\n var lastStackCoords = {};\n var barWidthAndOffset = calRadialBar(zrUtil.filter(ecModel.getSeriesByType(seriesType), function (seriesModel) {\n return !ecModel.isSeriesFiltered(seriesModel) && seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'polar';\n }));\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n // Check series coordinate, do layout for polar only\n if (seriesModel.coordinateSystem.type !== 'polar') {\n return;\n }\n\n var data = seriesModel.getData();\n var polar = seriesModel.coordinateSystem;\n var baseAxis = polar.getBaseAxis();\n var axisKey = getAxisKey(polar, baseAxis);\n var stackId = getSeriesStackId(seriesModel);\n var columnLayoutInfo = barWidthAndOffset[axisKey][stackId];\n var columnOffset = columnLayoutInfo.offset;\n var columnWidth = columnLayoutInfo.width;\n var valueAxis = polar.getOtherAxis(baseAxis);\n var cx = seriesModel.coordinateSystem.cx;\n var cy = seriesModel.coordinateSystem.cy;\n var barMinHeight = seriesModel.get('barMinHeight') || 0;\n var barMinAngle = seriesModel.get('barMinAngle') || 0;\n lastStackCoords[stackId] = lastStackCoords[stackId] || [];\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var stacked = isDimensionStacked(data, valueDim\n /*, baseDim*/\n );\n var clampLayout = baseAxis.dim !== 'radius' || !seriesModel.get('roundCap', true);\n var valueAxisStart = valueAxis.dim === 'radius' ? valueAxis.dataToRadius(0) : valueAxis.dataToAngle(0);\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n var value = data.get(valueDim, idx);\n var baseValue = data.get(baseDim, idx);\n var sign = value >= 0 ? 'p' : 'n';\n var baseCoord = valueAxisStart; // Because of the barMinHeight, we can not use the value in\n // stackResultDimension directly.\n // Only ordinal axis can be stacked.\n\n if (stacked) {\n if (!lastStackCoords[stackId][baseValue]) {\n lastStackCoords[stackId][baseValue] = {\n p: valueAxisStart,\n // Positive stack\n n: valueAxisStart // Negative stack\n\n };\n } // Should also consider #4243\n\n\n baseCoord = lastStackCoords[stackId][baseValue][sign];\n }\n\n var r0;\n var r;\n var startAngle;\n var endAngle; // radial sector\n\n if (valueAxis.dim === 'radius') {\n var radiusSpan = valueAxis.dataToRadius(value) - valueAxisStart;\n var angle = baseAxis.dataToAngle(baseValue);\n\n if (Math.abs(radiusSpan) < barMinHeight) {\n radiusSpan = (radiusSpan < 0 ? -1 : 1) * barMinHeight;\n }\n\n r0 = baseCoord;\n r = baseCoord + radiusSpan;\n startAngle = angle - columnOffset;\n endAngle = startAngle - columnWidth;\n stacked && (lastStackCoords[stackId][baseValue][sign] = r);\n } // tangential sector\n else {\n var angleSpan = valueAxis.dataToAngle(value, clampLayout) - valueAxisStart;\n var radius = baseAxis.dataToRadius(baseValue);\n\n if (Math.abs(angleSpan) < barMinAngle) {\n angleSpan = (angleSpan < 0 ? -1 : 1) * barMinAngle;\n }\n\n r0 = radius + columnOffset;\n r = r0 + columnWidth;\n startAngle = baseCoord;\n endAngle = baseCoord + angleSpan; // if the previous stack is at the end of the ring,\n // add a round to differentiate it from origin\n // var extent = angleAxis.getExtent();\n // var stackCoord = angle;\n // if (stackCoord === extent[0] && value > 0) {\n // stackCoord = extent[1];\n // }\n // else if (stackCoord === extent[1] && value < 0) {\n // stackCoord = extent[0];\n // }\n\n stacked && (lastStackCoords[stackId][baseValue][sign] = endAngle);\n }\n\n data.setItemLayout(idx, {\n cx: cx,\n cy: cy,\n r0: r0,\n r: r,\n // Consider that positive angle is anti-clockwise,\n // while positive radian of sector is clockwise\n startAngle: -startAngle * Math.PI / 180,\n endAngle: -endAngle * Math.PI / 180\n });\n }\n }, this);\n}\n/**\n * Calculate bar width and offset for radial bar charts\n */\n\n\nfunction calRadialBar(barSeries, api) {\n // Columns info on each category axis. Key is polar name\n var columnsMap = {};\n zrUtil.each(barSeries, function (seriesModel, idx) {\n var data = seriesModel.getData();\n var polar = seriesModel.coordinateSystem;\n var baseAxis = polar.getBaseAxis();\n var axisKey = getAxisKey(polar, baseAxis);\n var axisExtent = baseAxis.getExtent();\n var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n var columnsOnAxis = columnsMap[axisKey] || {\n bandWidth: bandWidth,\n remainedWidth: bandWidth,\n autoWidthCount: 0,\n categoryGap: '20%',\n gap: '30%',\n stacks: {}\n };\n var stacks = columnsOnAxis.stacks;\n columnsMap[axisKey] = columnsOnAxis;\n var stackId = getSeriesStackId(seriesModel);\n\n if (!stacks[stackId]) {\n columnsOnAxis.autoWidthCount++;\n }\n\n stacks[stackId] = stacks[stackId] || {\n width: 0,\n maxWidth: 0\n };\n var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n var barGap = seriesModel.get('barGap');\n var barCategoryGap = seriesModel.get('barCategoryGap');\n\n if (barWidth && !stacks[stackId].width) {\n barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n stacks[stackId].width = barWidth;\n columnsOnAxis.remainedWidth -= barWidth;\n }\n\n barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n barGap != null && (columnsOnAxis.gap = barGap);\n barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n });\n var result = {};\n zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) {\n result[coordSysName] = {};\n var stacks = columnsOnAxis.stacks;\n var bandWidth = columnsOnAxis.bandWidth;\n var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);\n var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n var remainedWidth = columnsOnAxis.remainedWidth;\n var autoWidthCount = columnsOnAxis.autoWidthCount;\n var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n zrUtil.each(stacks, function (column, stack) {\n var maxWidth = column.maxWidth;\n\n if (maxWidth && maxWidth < autoWidth) {\n maxWidth = Math.min(maxWidth, remainedWidth);\n\n if (column.width) {\n maxWidth = Math.min(maxWidth, column.width);\n }\n\n remainedWidth -= maxWidth;\n column.width = maxWidth;\n autoWidthCount--;\n }\n }); // Recalculate width again\n\n autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0);\n var widthSum = 0;\n var lastColumn;\n zrUtil.each(stacks, function (column, idx) {\n if (!column.width) {\n column.width = autoWidth;\n }\n\n lastColumn = column;\n widthSum += column.width * (1 + barGapPercent);\n });\n\n if (lastColumn) {\n widthSum -= lastColumn.width * barGapPercent;\n }\n\n var offset = -widthSum / 2;\n zrUtil.each(stacks, function (column, stackId) {\n result[coordSysName][stackId] = result[coordSysName][stackId] || {\n offset: offset,\n width: column.width\n };\n offset += column.width * (1 + barGapPercent);\n });\n });\n return result;\n}\n\nvar _default = barLayoutPolar;\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 _util = require(\"zrender/lib/core/util\");\n\nvar map = _util.map;\n\nvar createRenderPlanner = require(\"../chart/helper/createRenderPlanner\");\n\nvar _dataStackHelper = require(\"../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\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 */\nfunction _default(seriesType) {\n return {\n seriesType: seriesType,\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var data = seriesModel.getData();\n var coordSys = seriesModel.coordinateSystem;\n var pipelineContext = seriesModel.pipelineContext;\n var isLargeRender = pipelineContext.large;\n\n if (!coordSys) {\n return;\n }\n\n var dims = map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }).slice(0, 2);\n var dimLen = dims.length;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n if (isDimensionStacked(data, dims[0]\n /*, dims[1]*/\n )) {\n dims[0] = stackResultDim;\n }\n\n if (isDimensionStacked(data, dims[1]\n /*, dims[0]*/\n )) {\n dims[1] = stackResultDim;\n }\n\n function progress(params, data) {\n var segCount = params.end - params.start;\n var points = isLargeRender && new Float32Array(segCount * dimLen);\n\n for (var i = params.start, offset = 0, tmpIn = [], tmpOut = []; i < params.end; i++) {\n var point;\n\n if (dimLen === 1) {\n var x = data.get(dims[0], i);\n point = !isNaN(x) && coordSys.dataToPoint(x, null, tmpOut);\n } else {\n var x = tmpIn[0] = data.get(dims[0], i);\n var y = tmpIn[1] = data.get(dims[1], i); // Also {Array.}, not undefined to avoid if...else... statement\n\n point = !isNaN(x) && !isNaN(y) && coordSys.dataToPoint(tmpIn, null, tmpOut);\n }\n\n if (isLargeRender) {\n points[offset++] = point ? point[0] : NaN;\n points[offset++] = point ? point[1] : NaN;\n } else {\n data.setItemLayout(i, point && point.slice() || [NaN, NaN]);\n }\n }\n\n isLargeRender && data.setLayout('symbolPoints', points);\n }\n\n return dimLen && {\n progress: progress\n };\n }\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../util/graphic\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\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 PI = Math.PI;\n/**\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} [opts]\n * @param {string} [opts.text]\n * @param {string} [opts.color]\n * @param {string} [opts.textColor]\n * @return {module:zrender/Element}\n */\n\nfunction _default(api, opts) {\n opts = opts || {};\n zrUtil.defaults(opts, {\n text: 'loading',\n textColor: '#000',\n fontSize: '12px',\n maskColor: 'rgba(255, 255, 255, 0.8)',\n showSpinner: true,\n color: '#c23531',\n spinnerRadius: 10,\n lineWidth: 5,\n zlevel: 0\n });\n var group = new graphic.Group();\n var mask = new graphic.Rect({\n style: {\n fill: opts.maskColor\n },\n zlevel: opts.zlevel,\n z: 10000\n });\n group.add(mask);\n var font = opts.fontSize + ' sans-serif';\n var labelRect = new graphic.Rect({\n style: {\n fill: 'none',\n text: opts.text,\n font: font,\n textPosition: 'right',\n textDistance: 10,\n textFill: opts.textColor\n },\n zlevel: opts.zlevel,\n z: 10001\n });\n group.add(labelRect);\n\n if (opts.showSpinner) {\n var arc = new graphic.Arc({\n shape: {\n startAngle: -PI / 2,\n endAngle: -PI / 2 + 0.1,\n r: opts.spinnerRadius\n },\n style: {\n stroke: opts.color,\n lineCap: 'round',\n lineWidth: opts.lineWidth\n },\n zlevel: opts.zlevel,\n z: 10001\n });\n arc.animateShape(true).when(1000, {\n endAngle: PI * 3 / 2\n }).start('circularInOut');\n arc.animateShape(true).when(1000, {\n startAngle: PI * 3 / 2\n }).delay(300).start('circularInOut');\n group.add(arc);\n } // Inject resize\n\n\n group.resize = function () {\n var textWidth = textContain.getWidth(opts.text, font);\n var r = opts.showSpinner ? opts.spinnerRadius : 0; // cx = (containerWidth - arcDiameter - textDistance - textWidth) / 2\n // textDistance needs to be calculated when both animation and text exist\n\n var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2 // only show the text\n - (opts.showSpinner ? 0 : textWidth / 2);\n var cy = api.getHeight() / 2;\n opts.showSpinner && arc.setShape({\n cx: cx,\n cy: cy\n });\n labelRect.setShape({\n x: cx - r,\n y: cy - r,\n width: r * 2,\n height: r * 2\n });\n mask.setShape({\n x: 0,\n y: 0,\n width: api.getWidth(),\n height: api.getHeight()\n });\n };\n\n group.resize();\n return group;\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 Model = require(\"./Model\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassManagement = _clazz.enableClassManagement;\nvar parseClassType = _clazz.parseClassType;\n\nvar _model = require(\"../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar layout = require(\"../util/layout\");\n\nvar boxLayoutMixin = require(\"./mixin/boxLayout\");\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 * Component model\n *\n * @module echarts/model/Component\n */\nvar inner = makeInner();\n/**\n * @alias module:echarts/model/Component\n * @constructor\n * @param {Object} option\n * @param {module:echarts/model/Model} parentModel\n * @param {module:echarts/model/Model} ecModel\n */\n\nvar ComponentModel = Model.extend({\n type: 'component',\n\n /**\n * @readOnly\n * @type {string}\n */\n id: '',\n\n /**\n * Because simplified concept is probably better, series.name (or component.name)\n * has been having too many resposibilities:\n * (1) Generating id (which requires name in option should not be modified).\n * (2) As an index to mapping series when merging option or calling API (a name\n * can refer to more then one components, which is convinient is some case).\n * (3) Display.\n * @readOnly\n */\n name: '',\n\n /**\n * @readOnly\n * @type {string}\n */\n mainType: '',\n\n /**\n * @readOnly\n * @type {string}\n */\n subType: '',\n\n /**\n * @readOnly\n * @type {number}\n */\n componentIndex: 0,\n\n /**\n * @type {Object}\n * @protected\n */\n defaultOption: null,\n\n /**\n * @type {module:echarts/model/Global}\n * @readOnly\n */\n ecModel: null,\n\n /**\n * key: componentType\n * value: Component model list, can not be null.\n * @type {Object.>}\n * @readOnly\n */\n dependentModels: [],\n\n /**\n * @type {string}\n * @readOnly\n */\n uid: null,\n\n /**\n * Support merge layout params.\n * Only support 'box' now (left/right/top/bottom/width/height).\n * @type {string|Object} Object can be {ignoreSize: true}\n * @readOnly\n */\n layoutMode: null,\n $constructor: function (option, parentModel, ecModel, extraOpt) {\n Model.call(this, option, parentModel, ecModel, extraOpt);\n this.uid = componentUtil.getUID('ec_cpt_model');\n },\n init: function (option, parentModel, ecModel, extraOpt) {\n this.mergeDefaultAndTheme(option, ecModel);\n },\n mergeDefaultAndTheme: function (option, ecModel) {\n var layoutMode = this.layoutMode;\n var inputPositionParams = layoutMode ? layout.getLayoutParams(option) : {};\n var themeModel = ecModel.getTheme();\n zrUtil.merge(option, themeModel.get(this.mainType));\n zrUtil.merge(option, this.getDefaultOption());\n\n if (layoutMode) {\n layout.mergeLayoutParam(option, inputPositionParams, layoutMode);\n }\n },\n mergeOption: function (option, extraOpt) {\n zrUtil.merge(this.option, option, true);\n var layoutMode = this.layoutMode;\n\n if (layoutMode) {\n layout.mergeLayoutParam(this.option, option, layoutMode);\n }\n },\n // Hooker after init or mergeOption\n optionUpdated: function (newCptOption, isInit) {},\n getDefaultOption: function () {\n var fields = inner(this);\n\n if (!fields.defaultOption) {\n var optList = [];\n var Class = this.constructor;\n\n while (Class) {\n var opt = Class.prototype.defaultOption;\n opt && optList.push(opt);\n Class = Class.superClass;\n }\n\n var defaultOption = {};\n\n for (var i = optList.length - 1; i >= 0; i--) {\n defaultOption = zrUtil.merge(defaultOption, optList[i], true);\n }\n\n fields.defaultOption = defaultOption;\n }\n\n return fields.defaultOption;\n },\n getReferringComponents: function (mainType) {\n return this.ecModel.queryComponents({\n mainType: mainType,\n index: this.get(mainType + 'Index', true),\n id: this.get(mainType + 'Id', true)\n });\n }\n}); // Reset ComponentModel.extend, add preConstruct.\n// clazzUtil.enableClassExtend(\n// ComponentModel,\n// function (option, parentModel, ecModel, extraOpt) {\n// // Set dependentModels, componentIndex, name, id, mainType, subType.\n// zrUtil.extend(this, extraOpt);\n// this.uid = componentUtil.getUID('componentModel');\n// // this.setReadOnly([\n// // 'type', 'id', 'uid', 'name', 'mainType', 'subType',\n// // 'dependentModels', 'componentIndex'\n// // ]);\n// }\n// );\n// Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nenableClassManagement(ComponentModel, {\n registerWhenExtend: true\n});\ncomponentUtil.enableSubTypeDefaulter(ComponentModel); // Add capability of ComponentModel.topologicalTravel.\n\ncomponentUtil.enableTopologicalTravel(ComponentModel, getDependencies);\n\nfunction getDependencies(componentType) {\n var deps = [];\n zrUtil.each(ComponentModel.getClassesByMainType(componentType), function (Clazz) {\n deps = deps.concat(Clazz.prototype.dependencies || []);\n }); // Ensure main type.\n\n deps = zrUtil.map(deps, function (type) {\n return parseClassType(type).main;\n }); // Hack dataset for convenience.\n\n if (componentType !== 'dataset' && zrUtil.indexOf(deps, 'dataset') <= 0) {\n deps.unshift('dataset');\n }\n\n return deps;\n}\n\nzrUtil.mixin(ComponentModel, boxLayoutMixin);\nvar _default = ComponentModel;\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 _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar filter = _util.filter;\nvar map = _util.map;\nvar isArray = _util.isArray;\nvar indexOf = _util.indexOf;\nvar isObject = _util.isObject;\nvar isString = _util.isString;\nvar createHashMap = _util.createHashMap;\nvar assert = _util.assert;\nvar clone = _util.clone;\nvar merge = _util.merge;\nvar extend = _util.extend;\nvar mixin = _util.mixin;\n\nvar modelUtil = require(\"../util/model\");\n\nvar Model = require(\"./Model\");\n\nvar ComponentModel = require(\"./Component\");\n\nvar globalDefault = require(\"./globalDefault\");\n\nvar colorPaletteMixin = require(\"./mixin/colorPalette\");\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar resetSourceDefaulter = _sourceHelper.resetSourceDefaulter;\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 * ECharts global model\n *\n * @module {echarts/model/Global}\n */\n\n/**\n * Caution: If the mechanism should be changed some day, these cases\n * should be considered:\n *\n * (1) In `merge option` mode, if using the same option to call `setOption`\n * many times, the result should be the same (try our best to ensure that).\n * (2) In `merge option` mode, if a component has no id/name specified, it\n * will be merged by index, and the result sequence of the components is\n * consistent to the original sequence.\n * (3) `reset` feature (in toolbox). Find detailed info in comments about\n * `mergeOption` in module:echarts/model/OptionManager.\n */\nvar OPTION_INNER_KEY = '\\0_ec_inner';\n/**\n * @alias module:echarts/model/Global\n *\n * @param {Object} option\n * @param {module:echarts/model/Model} parentModel\n * @param {Object} theme\n */\n\nvar GlobalModel = Model.extend({\n init: function (option, parentModel, theme, optionManager) {\n theme = theme || {};\n this.option = null; // Mark as not initialized.\n\n /**\n * @type {module:echarts/model/Model}\n * @private\n */\n\n this._theme = new Model(theme);\n /**\n * @type {module:echarts/model/OptionManager}\n */\n\n this._optionManager = optionManager;\n },\n setOption: function (option, optionPreprocessorFuncs) {\n assert(!(OPTION_INNER_KEY in option), 'please use chart.getOption()');\n\n this._optionManager.setOption(option, optionPreprocessorFuncs);\n\n this.resetOption(null);\n },\n\n /**\n * @param {string} type null/undefined: reset all.\n * 'recreate': force recreate all.\n * 'timeline': only reset timeline option\n * 'media': only reset media query option\n * @return {boolean} Whether option changed.\n */\n resetOption: function (type) {\n var optionChanged = false;\n var optionManager = this._optionManager;\n\n if (!type || type === 'recreate') {\n var baseOption = optionManager.mountOption(type === 'recreate');\n\n if (!this.option || type === 'recreate') {\n initBase.call(this, baseOption);\n } else {\n this.restoreData();\n this.mergeOption(baseOption);\n }\n\n optionChanged = true;\n }\n\n if (type === 'timeline' || type === 'media') {\n this.restoreData();\n }\n\n if (!type || type === 'recreate' || type === 'timeline') {\n var timelineOption = optionManager.getTimelineOption(this);\n timelineOption && (this.mergeOption(timelineOption), optionChanged = true);\n }\n\n if (!type || type === 'recreate' || type === 'media') {\n var mediaOptions = optionManager.getMediaOption(this, this._api);\n\n if (mediaOptions.length) {\n each(mediaOptions, function (mediaOption) {\n this.mergeOption(mediaOption, optionChanged = true);\n }, this);\n }\n }\n\n return optionChanged;\n },\n\n /**\n * @protected\n */\n mergeOption: function (newOption) {\n var option = this.option;\n var componentsMap = this._componentsMap;\n var newCptTypes = [];\n resetSourceDefaulter(this); // If no component class, merge directly.\n // For example: color, animaiton options, etc.\n\n each(newOption, function (componentOption, mainType) {\n if (componentOption == null) {\n return;\n }\n\n if (!ComponentModel.hasClass(mainType)) {\n // globalSettingTask.dirty();\n option[mainType] = option[mainType] == null ? clone(componentOption) : merge(option[mainType], componentOption, true);\n } else if (mainType) {\n newCptTypes.push(mainType);\n }\n });\n ComponentModel.topologicalTravel(newCptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this);\n\n function visitComponent(mainType, dependencies) {\n var newCptOptionList = modelUtil.normalizeToArray(newOption[mainType]);\n var mapResult = modelUtil.mappingToExists(componentsMap.get(mainType), newCptOptionList);\n modelUtil.makeIdAndName(mapResult); // Set mainType and complete subType.\n\n each(mapResult, function (item, index) {\n var opt = item.option;\n\n if (isObject(opt)) {\n item.keyInfo.mainType = mainType;\n item.keyInfo.subType = determineSubType(mainType, opt, item.exist);\n }\n });\n var dependentModels = getComponentsByTypes(componentsMap, dependencies);\n option[mainType] = [];\n componentsMap.set(mainType, []);\n each(mapResult, function (resultItem, index) {\n var componentModel = resultItem.exist;\n var newCptOption = resultItem.option;\n assert(isObject(newCptOption) || componentModel, 'Empty component definition'); // Consider where is no new option and should be merged using {},\n // see removeEdgeAndAdd in topologicalTravel and\n // ComponentModel.getAllClassMainTypes.\n\n if (!newCptOption) {\n componentModel.mergeOption({}, this);\n componentModel.optionUpdated({}, false);\n } else {\n var ComponentModelClass = ComponentModel.getClass(mainType, resultItem.keyInfo.subType, true);\n\n if (componentModel && componentModel.constructor === ComponentModelClass) {\n componentModel.name = resultItem.keyInfo.name; // componentModel.settingTask && componentModel.settingTask.dirty();\n\n componentModel.mergeOption(newCptOption, this);\n componentModel.optionUpdated(newCptOption, false);\n } else {\n // PENDING Global as parent ?\n var extraOpt = extend({\n dependentModels: dependentModels,\n componentIndex: index\n }, resultItem.keyInfo);\n componentModel = new ComponentModelClass(newCptOption, this, this, extraOpt);\n extend(componentModel, extraOpt);\n componentModel.init(newCptOption, this, this, extraOpt); // Call optionUpdated after init.\n // newCptOption has been used as componentModel.option\n // and may be merged with theme and default, so pass null\n // to avoid confusion.\n\n componentModel.optionUpdated(null, true);\n }\n }\n\n componentsMap.get(mainType)[index] = componentModel;\n option[mainType][index] = componentModel.option;\n }, this); // Backup series for filtering.\n\n if (mainType === 'series') {\n createSeriesIndices(this, componentsMap.get('series'));\n }\n }\n\n this._seriesIndicesMap = createHashMap(this._seriesIndices = this._seriesIndices || []);\n },\n\n /**\n * Get option for output (cloned option and inner info removed)\n * @public\n * @return {Object}\n */\n getOption: function () {\n var option = clone(this.option);\n each(option, function (opts, mainType) {\n if (ComponentModel.hasClass(mainType)) {\n var opts = modelUtil.normalizeToArray(opts);\n\n for (var i = opts.length - 1; i >= 0; i--) {\n // Remove options with inner id.\n if (modelUtil.isIdInner(opts[i])) {\n opts.splice(i, 1);\n }\n }\n\n option[mainType] = opts;\n }\n });\n delete option[OPTION_INNER_KEY];\n return option;\n },\n\n /**\n * @return {module:echarts/model/Model}\n */\n getTheme: function () {\n return this._theme;\n },\n\n /**\n * @param {string} mainType\n * @param {number} [idx=0]\n * @return {module:echarts/model/Component}\n */\n getComponent: function (mainType, idx) {\n var list = this._componentsMap.get(mainType);\n\n if (list) {\n return list[idx || 0];\n }\n },\n\n /**\n * If none of index and id and name used, return all components with mainType.\n * @param {Object} condition\n * @param {string} condition.mainType\n * @param {string} [condition.subType] If ignore, only query by mainType\n * @param {number|Array.} [condition.index] Either input index or id or name.\n * @param {string|Array.} [condition.id] Either input index or id or name.\n * @param {string|Array.} [condition.name] Either input index or id or name.\n * @return {Array.}\n */\n queryComponents: function (condition) {\n var mainType = condition.mainType;\n\n if (!mainType) {\n return [];\n }\n\n var index = condition.index;\n var id = condition.id;\n var name = condition.name;\n\n var cpts = this._componentsMap.get(mainType);\n\n if (!cpts || !cpts.length) {\n return [];\n }\n\n var result;\n\n if (index != null) {\n if (!isArray(index)) {\n index = [index];\n }\n\n result = filter(map(index, function (idx) {\n return cpts[idx];\n }), function (val) {\n return !!val;\n });\n } else if (id != null) {\n var isIdArray = isArray(id);\n result = filter(cpts, function (cpt) {\n return isIdArray && indexOf(id, cpt.id) >= 0 || !isIdArray && cpt.id === id;\n });\n } else if (name != null) {\n var isNameArray = isArray(name);\n result = filter(cpts, function (cpt) {\n return isNameArray && indexOf(name, cpt.name) >= 0 || !isNameArray && cpt.name === name;\n });\n } else {\n // Return all components with mainType\n result = cpts.slice();\n }\n\n return filterBySubType(result, condition);\n },\n\n /**\n * The interface is different from queryComponents,\n * which is convenient for inner usage.\n *\n * @usage\n * var result = findComponents(\n * {mainType: 'dataZoom', query: {dataZoomId: 'abc'}}\n * );\n * var result = findComponents(\n * {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}}\n * );\n * var result = findComponents(\n * {mainType: 'series',\n * filter: function (model, index) {...}}\n * );\n * // result like [component0, componnet1, ...]\n *\n * @param {Object} condition\n * @param {string} condition.mainType Mandatory.\n * @param {string} [condition.subType] Optional.\n * @param {Object} [condition.query] like {xxxIndex, xxxId, xxxName},\n * where xxx is mainType.\n * If query attribute is null/undefined or has no index/id/name,\n * do not filtering by query conditions, which is convenient for\n * no-payload situations or when target of action is global.\n * @param {Function} [condition.filter] parameter: component, return boolean.\n * @return {Array.}\n */\n findComponents: function (condition) {\n var query = condition.query;\n var mainType = condition.mainType;\n var queryCond = getQueryCond(query);\n var result = queryCond ? this.queryComponents(queryCond) : this._componentsMap.get(mainType);\n return doFilter(filterBySubType(result, condition));\n\n function getQueryCond(q) {\n var indexAttr = mainType + 'Index';\n var idAttr = mainType + 'Id';\n var nameAttr = mainType + 'Name';\n return q && (q[indexAttr] != null || q[idAttr] != null || q[nameAttr] != null) ? {\n mainType: mainType,\n // subType will be filtered finally.\n index: q[indexAttr],\n id: q[idAttr],\n name: q[nameAttr]\n } : null;\n }\n\n function doFilter(res) {\n return condition.filter ? filter(res, condition.filter) : res;\n }\n },\n\n /**\n * @usage\n * eachComponent('legend', function (legendModel, index) {\n * ...\n * });\n * eachComponent(function (componentType, model, index) {\n * // componentType does not include subType\n * // (componentType is 'xxx' but not 'xxx.aa')\n * });\n * eachComponent(\n * {mainType: 'dataZoom', query: {dataZoomId: 'abc'}},\n * function (model, index) {...}\n * );\n * eachComponent(\n * {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}},\n * function (model, index) {...}\n * );\n *\n * @param {string|Object=} mainType When mainType is object, the definition\n * is the same as the method 'findComponents'.\n * @param {Function} cb\n * @param {*} context\n */\n eachComponent: function (mainType, cb, context) {\n var componentsMap = this._componentsMap;\n\n if (typeof mainType === 'function') {\n context = cb;\n cb = mainType;\n componentsMap.each(function (components, componentType) {\n each(components, function (component, index) {\n cb.call(context, componentType, component, index);\n });\n });\n } else if (isString(mainType)) {\n each(componentsMap.get(mainType), cb, context);\n } else if (isObject(mainType)) {\n var queryResult = this.findComponents(mainType);\n each(queryResult, cb, context);\n }\n },\n\n /**\n * @param {string} name\n * @return {Array.}\n */\n getSeriesByName: function (name) {\n var series = this._componentsMap.get('series');\n\n return filter(series, function (oneSeries) {\n return oneSeries.name === name;\n });\n },\n\n /**\n * @param {number} seriesIndex\n * @return {module:echarts/model/Series}\n */\n getSeriesByIndex: function (seriesIndex) {\n return this._componentsMap.get('series')[seriesIndex];\n },\n\n /**\n * Get series list before filtered by type.\n * FIXME: rename to getRawSeriesByType?\n *\n * @param {string} subType\n * @return {Array.}\n */\n getSeriesByType: function (subType) {\n var series = this._componentsMap.get('series');\n\n return filter(series, function (oneSeries) {\n return oneSeries.subType === subType;\n });\n },\n\n /**\n * @return {Array.}\n */\n getSeries: function () {\n return this._componentsMap.get('series').slice();\n },\n\n /**\n * @return {number}\n */\n getSeriesCount: function () {\n return this._componentsMap.get('series').length;\n },\n\n /**\n * After filtering, series may be different\n * frome raw series.\n *\n * @param {Function} cb\n * @param {*} context\n */\n eachSeries: function (cb, context) {\n assertSeriesInitialized(this);\n each(this._seriesIndices, function (rawSeriesIndex) {\n var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n cb.call(context, series, rawSeriesIndex);\n }, this);\n },\n\n /**\n * Iterate raw series before filtered.\n *\n * @param {Function} cb\n * @param {*} context\n */\n eachRawSeries: function (cb, context) {\n each(this._componentsMap.get('series'), cb, context);\n },\n\n /**\n * After filtering, series may be different.\n * frome raw series.\n *\n * @param {string} subType.\n * @param {Function} cb\n * @param {*} context\n */\n eachSeriesByType: function (subType, cb, context) {\n assertSeriesInitialized(this);\n each(this._seriesIndices, function (rawSeriesIndex) {\n var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n if (series.subType === subType) {\n cb.call(context, series, rawSeriesIndex);\n }\n }, this);\n },\n\n /**\n * Iterate raw series before filtered of given type.\n *\n * @parma {string} subType\n * @param {Function} cb\n * @param {*} context\n */\n eachRawSeriesByType: function (subType, cb, context) {\n return each(this.getSeriesByType(subType), cb, context);\n },\n\n /**\n * @param {module:echarts/model/Series} seriesModel\n */\n isSeriesFiltered: function (seriesModel) {\n assertSeriesInitialized(this);\n return this._seriesIndicesMap.get(seriesModel.componentIndex) == null;\n },\n\n /**\n * @return {Array.}\n */\n getCurrentSeriesIndices: function () {\n return (this._seriesIndices || []).slice();\n },\n\n /**\n * @param {Function} cb\n * @param {*} context\n */\n filterSeries: function (cb, context) {\n assertSeriesInitialized(this);\n var filteredSeries = filter(this._componentsMap.get('series'), cb, context);\n createSeriesIndices(this, filteredSeries);\n },\n restoreData: function (payload) {\n var componentsMap = this._componentsMap;\n createSeriesIndices(this, componentsMap.get('series'));\n var componentTypes = [];\n componentsMap.each(function (components, componentType) {\n componentTypes.push(componentType);\n });\n ComponentModel.topologicalTravel(componentTypes, ComponentModel.getAllClassMainTypes(), function (componentType, dependencies) {\n each(componentsMap.get(componentType), function (component) {\n (componentType !== 'series' || !isNotTargetSeries(component, payload)) && component.restoreData();\n });\n });\n }\n});\n\nfunction isNotTargetSeries(seriesModel, payload) {\n if (payload) {\n var index = payload.seiresIndex;\n var id = payload.seriesId;\n var name = payload.seriesName;\n return index != null && seriesModel.componentIndex !== index || id != null && seriesModel.id !== id || name != null && seriesModel.name !== name;\n }\n}\n/**\n * @inner\n */\n\n\nfunction mergeTheme(option, theme) {\n // PENDING\n // NOT use `colorLayer` in theme if option has `color`\n var notMergeColorLayer = option.color && !option.colorLayer;\n each(theme, function (themeItem, name) {\n if (name === 'colorLayer' && notMergeColorLayer) {\n return;\n } // 如果有 component model 则把具体的 merge 逻辑交给该 model 处理\n\n\n if (!ComponentModel.hasClass(name)) {\n if (typeof themeItem === 'object') {\n option[name] = !option[name] ? clone(themeItem) : merge(option[name], themeItem, false);\n } else {\n if (option[name] == null) {\n option[name] = themeItem;\n }\n }\n }\n });\n}\n\nfunction initBase(baseOption) {\n baseOption = baseOption; // Using OPTION_INNER_KEY to mark that this option can not be used outside,\n // i.e. `chart.setOption(chart.getModel().option);` is forbiden.\n\n this.option = {};\n this.option[OPTION_INNER_KEY] = 1;\n /**\n * Init with series: [], in case of calling findSeries method\n * before series initialized.\n * @type {Object.>}\n * @private\n */\n\n this._componentsMap = createHashMap({\n series: []\n });\n /**\n * Mapping between filtered series list and raw series list.\n * key: filtered series indices, value: raw series indices.\n * @type {Array.}\n * @private\n */\n\n this._seriesIndices;\n this._seriesIndicesMap;\n mergeTheme(baseOption, this._theme.option); // TODO Needs clone when merging to the unexisted property\n\n merge(baseOption, globalDefault, false);\n this.mergeOption(baseOption);\n}\n/**\n * @inner\n * @param {Array.|string} types model types\n * @return {Object} key: {string} type, value: {Array.} models\n */\n\n\nfunction getComponentsByTypes(componentsMap, types) {\n if (!isArray(types)) {\n types = types ? [types] : [];\n }\n\n var ret = {};\n each(types, function (type) {\n ret[type] = (componentsMap.get(type) || []).slice();\n });\n return ret;\n}\n/**\n * @inner\n */\n\n\nfunction determineSubType(mainType, newCptOption, existComponent) {\n var subType = newCptOption.type ? newCptOption.type : existComponent ? existComponent.subType // Use determineSubType only when there is no existComponent.\n : ComponentModel.determineSubType(mainType, newCptOption); // tooltip, markline, markpoint may always has no subType\n\n return subType;\n}\n/**\n * @inner\n */\n\n\nfunction createSeriesIndices(ecModel, seriesModels) {\n ecModel._seriesIndicesMap = createHashMap(ecModel._seriesIndices = map(seriesModels, function (series) {\n return series.componentIndex;\n }) || []);\n}\n/**\n * @inner\n */\n\n\nfunction filterBySubType(components, condition) {\n // Using hasOwnProperty for restrict. Consider\n // subType is undefined in user payload.\n return condition.hasOwnProperty('subType') ? filter(components, function (cpt) {\n return cpt.subType === condition.subType;\n }) : components;\n}\n/**\n * @inner\n */\n\n\nfunction assertSeriesInitialized(ecModel) {}\n\nmixin(GlobalModel, colorPaletteMixin);\nvar _default = GlobalModel;\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 env = require(\"zrender/lib/core/env\");\n\nvar _model = require(\"../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassExtend = _clazz.enableClassExtend;\nvar enableClassCheck = _clazz.enableClassCheck;\n\nvar lineStyleMixin = require(\"./mixin/lineStyle\");\n\nvar areaStyleMixin = require(\"./mixin/areaStyle\");\n\nvar textStyleMixin = require(\"./mixin/textStyle\");\n\nvar itemStyleMixin = require(\"./mixin/itemStyle\");\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/model/Model\n */\nvar mixin = zrUtil.mixin;\nvar inner = makeInner();\n/**\n * @alias module:echarts/model/Model\n * @constructor\n * @param {Object} [option]\n * @param {module:echarts/model/Model} [parentModel]\n * @param {module:echarts/model/Global} [ecModel]\n */\n\nfunction Model(option, parentModel, ecModel) {\n /**\n * @type {module:echarts/model/Model}\n * @readOnly\n */\n this.parentModel = parentModel;\n /**\n * @type {module:echarts/model/Global}\n * @readOnly\n */\n\n this.ecModel = ecModel;\n /**\n * @type {Object}\n * @protected\n */\n\n this.option = option; // Simple optimization\n // if (this.init) {\n // if (arguments.length <= 4) {\n // this.init(option, parentModel, ecModel, extraOpt);\n // }\n // else {\n // this.init.apply(this, arguments);\n // }\n // }\n}\n\nModel.prototype = {\n constructor: Model,\n\n /**\n * Model 的初始化函数\n * @param {Object} option\n */\n init: null,\n\n /**\n * 从新的 Option merge\n */\n mergeOption: function (option) {\n zrUtil.merge(this.option, option, true);\n },\n\n /**\n * @param {string|Array.} path\n * @param {boolean} [ignoreParent=false]\n * @return {*}\n */\n get: function (path, ignoreParent) {\n if (path == null) {\n return this.option;\n }\n\n return doGet(this.option, this.parsePath(path), !ignoreParent && getParent(this, path));\n },\n\n /**\n * @param {string} key\n * @param {boolean} [ignoreParent=false]\n * @return {*}\n */\n getShallow: function (key, ignoreParent) {\n var option = this.option;\n var val = option == null ? option : option[key];\n var parentModel = !ignoreParent && getParent(this, key);\n\n if (val == null && parentModel) {\n val = parentModel.getShallow(key);\n }\n\n return val;\n },\n\n /**\n * @param {string|Array.} [path]\n * @param {module:echarts/model/Model} [parentModel]\n * @return {module:echarts/model/Model}\n */\n getModel: function (path, parentModel) {\n var obj = path == null ? this.option : doGet(this.option, path = this.parsePath(path));\n var thisParentModel;\n parentModel = parentModel || (thisParentModel = getParent(this, path)) && thisParentModel.getModel(path);\n return new Model(obj, parentModel, this.ecModel);\n },\n\n /**\n * If model has option\n */\n isEmpty: function () {\n return this.option == null;\n },\n restoreData: function () {},\n // Pending\n clone: function () {\n var Ctor = this.constructor;\n return new Ctor(zrUtil.clone(this.option));\n },\n setReadOnly: function (properties) {// clazzUtil.setReadOnly(this, properties);\n },\n // If path is null/undefined, return null/undefined.\n parsePath: function (path) {\n if (typeof path === 'string') {\n path = path.split('.');\n }\n\n return path;\n },\n\n /**\n * @param {Function} getParentMethod\n * param {Array.|string} path\n * return {module:echarts/model/Model}\n */\n customizeGetParent: function (getParentMethod) {\n inner(this).getParent = getParentMethod;\n },\n isAnimationEnabled: function () {\n if (!env.node) {\n if (this.option.animation != null) {\n return !!this.option.animation;\n } else if (this.parentModel) {\n return this.parentModel.isAnimationEnabled();\n }\n }\n }\n};\n\nfunction doGet(obj, pathArr, parentModel) {\n for (var i = 0; i < pathArr.length; i++) {\n // Ignore empty\n if (!pathArr[i]) {\n continue;\n } // obj could be number/string/... (like 0)\n\n\n obj = obj && typeof obj === 'object' ? obj[pathArr[i]] : null;\n\n if (obj == null) {\n break;\n }\n }\n\n if (obj == null && parentModel) {\n obj = parentModel.get(pathArr);\n }\n\n return obj;\n} // `path` can be null/undefined\n\n\nfunction getParent(model, path) {\n var getParentMethod = inner(model).getParent;\n return getParentMethod ? getParentMethod.call(model, path) : model.parentModel;\n} // Enable Model.extend.\n\n\nenableClassExtend(Model);\nenableClassCheck(Model);\nmixin(Model, lineStyleMixin);\nmixin(Model, areaStyleMixin);\nmixin(Model, textStyleMixin);\nmixin(Model, itemStyleMixin);\nvar _default = Model;\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 modelUtil = require(\"../util/model\");\n\nvar ComponentModel = require(\"./Component\");\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 * ECharts option manager\n *\n * @module {echarts/model/OptionManager}\n */\nvar each = zrUtil.each;\nvar clone = zrUtil.clone;\nvar map = zrUtil.map;\nvar merge = zrUtil.merge;\nvar QUERY_REG = /^(min|max)?(.+)$/;\n/**\n * TERM EXPLANATIONS:\n *\n * [option]:\n *\n * An object that contains definitions of components. For example:\n * var option = {\n * title: {...},\n * legend: {...},\n * visualMap: {...},\n * series: [\n * {data: [...]},\n * {data: [...]},\n * ...\n * ]\n * };\n *\n * [rawOption]:\n *\n * An object input to echarts.setOption. 'rawOption' may be an\n * 'option', or may be an object contains multi-options. For example:\n * var option = {\n * baseOption: {\n * title: {...},\n * legend: {...},\n * series: [\n * {data: [...]},\n * {data: [...]},\n * ...\n * ]\n * },\n * timeline: {...},\n * options: [\n * {title: {...}, series: {data: [...]}},\n * {title: {...}, series: {data: [...]}},\n * ...\n * ],\n * media: [\n * {\n * query: {maxWidth: 320},\n * option: {series: {x: 20}, visualMap: {show: false}}\n * },\n * {\n * query: {minWidth: 320, maxWidth: 720},\n * option: {series: {x: 500}, visualMap: {show: true}}\n * },\n * {\n * option: {series: {x: 1200}, visualMap: {show: true}}\n * }\n * ]\n * };\n *\n * @alias module:echarts/model/OptionManager\n * @param {module:echarts/ExtensionAPI} api\n */\n\nfunction OptionManager(api) {\n /**\n * @private\n * @type {module:echarts/ExtensionAPI}\n */\n this._api = api;\n /**\n * @private\n * @type {Array.}\n */\n\n this._timelineOptions = [];\n /**\n * @private\n * @type {Array.}\n */\n\n this._mediaList = [];\n /**\n * @private\n * @type {Object}\n */\n\n this._mediaDefault;\n /**\n * -1, means default.\n * empty means no media.\n * @private\n * @type {Array.}\n */\n\n this._currentMediaIndices = [];\n /**\n * @private\n * @type {Object}\n */\n\n this._optionBackup;\n /**\n * @private\n * @type {Object}\n */\n\n this._newBaseOption;\n} // timeline.notMerge is not supported in ec3. Firstly there is rearly\n// case that notMerge is needed. Secondly supporting 'notMerge' requires\n// rawOption cloned and backuped when timeline changed, which does no\n// good to performance. What's more, that both timeline and setOption\n// method supply 'notMerge' brings complex and some problems.\n// Consider this case:\n// (step1) chart.setOption({timeline: {notMerge: false}, ...}, false);\n// (step2) chart.setOption({timeline: {notMerge: true}, ...}, false);\n\n\nOptionManager.prototype = {\n constructor: OptionManager,\n\n /**\n * @public\n * @param {Object} rawOption Raw option.\n * @param {module:echarts/model/Global} ecModel\n * @param {Array.} optionPreprocessorFuncs\n * @return {Object} Init option\n */\n setOption: function (rawOption, optionPreprocessorFuncs) {\n if (rawOption) {\n // That set dat primitive is dangerous if user reuse the data when setOption again.\n zrUtil.each(modelUtil.normalizeToArray(rawOption.series), function (series) {\n series && series.data && zrUtil.isTypedArray(series.data) && zrUtil.setAsPrimitive(series.data);\n });\n } // Caution: some series modify option data, if do not clone,\n // it should ensure that the repeat modify correctly\n // (create a new object when modify itself).\n\n\n rawOption = clone(rawOption); // FIXME\n // 如果 timeline options 或者 media 中设置了某个属性,而baseOption中没有设置,则进行警告。\n\n var oldOptionBackup = this._optionBackup;\n var newParsedOption = parseRawOption.call(this, rawOption, optionPreprocessorFuncs, !oldOptionBackup);\n this._newBaseOption = newParsedOption.baseOption; // For setOption at second time (using merge mode);\n\n if (oldOptionBackup) {\n // Only baseOption can be merged.\n mergeOption(oldOptionBackup.baseOption, newParsedOption.baseOption); // For simplicity, timeline options and media options do not support merge,\n // that is, if you `setOption` twice and both has timeline options, the latter\n // timeline opitons will not be merged to the formers, but just substitude them.\n\n if (newParsedOption.timelineOptions.length) {\n oldOptionBackup.timelineOptions = newParsedOption.timelineOptions;\n }\n\n if (newParsedOption.mediaList.length) {\n oldOptionBackup.mediaList = newParsedOption.mediaList;\n }\n\n if (newParsedOption.mediaDefault) {\n oldOptionBackup.mediaDefault = newParsedOption.mediaDefault;\n }\n } else {\n this._optionBackup = newParsedOption;\n }\n },\n\n /**\n * @param {boolean} isRecreate\n * @return {Object}\n */\n mountOption: function (isRecreate) {\n var optionBackup = this._optionBackup; // TODO\n // 如果没有reset功能则不clone。\n\n this._timelineOptions = map(optionBackup.timelineOptions, clone);\n this._mediaList = map(optionBackup.mediaList, clone);\n this._mediaDefault = clone(optionBackup.mediaDefault);\n this._currentMediaIndices = [];\n return clone(isRecreate // this._optionBackup.baseOption, which is created at the first `setOption`\n // called, and is merged into every new option by inner method `mergeOption`\n // each time `setOption` called, can be only used in `isRecreate`, because\n // its reliability is under suspicion. In other cases option merge is\n // performed by `model.mergeOption`.\n ? optionBackup.baseOption : this._newBaseOption);\n },\n\n /**\n * @param {module:echarts/model/Global} ecModel\n * @return {Object}\n */\n getTimelineOption: function (ecModel) {\n var option;\n var timelineOptions = this._timelineOptions;\n\n if (timelineOptions.length) {\n // getTimelineOption can only be called after ecModel inited,\n // so we can get currentIndex from timelineModel.\n var timelineModel = ecModel.getComponent('timeline');\n\n if (timelineModel) {\n option = clone(timelineOptions[timelineModel.getCurrentIndex()], true);\n }\n }\n\n return option;\n },\n\n /**\n * @param {module:echarts/model/Global} ecModel\n * @return {Array.}\n */\n getMediaOption: function (ecModel) {\n var ecWidth = this._api.getWidth();\n\n var ecHeight = this._api.getHeight();\n\n var mediaList = this._mediaList;\n var mediaDefault = this._mediaDefault;\n var indices = [];\n var result = []; // No media defined.\n\n if (!mediaList.length && !mediaDefault) {\n return result;\n } // Multi media may be applied, the latter defined media has higher priority.\n\n\n for (var i = 0, len = mediaList.length; i < len; i++) {\n if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) {\n indices.push(i);\n }\n } // FIXME\n // 是否mediaDefault应该强制用户设置,否则可能修改不能回归。\n\n\n if (!indices.length && mediaDefault) {\n indices = [-1];\n }\n\n if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) {\n result = map(indices, function (index) {\n return clone(index === -1 ? mediaDefault.option : mediaList[index].option);\n });\n } // Otherwise return nothing.\n\n\n this._currentMediaIndices = indices;\n return result;\n }\n};\n\nfunction parseRawOption(rawOption, optionPreprocessorFuncs, isNew) {\n var timelineOptions = [];\n var mediaList = [];\n var mediaDefault;\n var baseOption; // Compatible with ec2.\n\n var timelineOpt = rawOption.timeline;\n\n if (rawOption.baseOption) {\n baseOption = rawOption.baseOption;\n } // For timeline\n\n\n if (timelineOpt || rawOption.options) {\n baseOption = baseOption || {};\n timelineOptions = (rawOption.options || []).slice();\n } // For media query\n\n\n if (rawOption.media) {\n baseOption = baseOption || {};\n var media = rawOption.media;\n each(media, function (singleMedia) {\n if (singleMedia && singleMedia.option) {\n if (singleMedia.query) {\n mediaList.push(singleMedia);\n } else if (!mediaDefault) {\n // Use the first media default.\n mediaDefault = singleMedia;\n }\n }\n });\n } // For normal option\n\n\n if (!baseOption) {\n baseOption = rawOption;\n } // Set timelineOpt to baseOption in ec3,\n // which is convenient for merge option.\n\n\n if (!baseOption.timeline) {\n baseOption.timeline = timelineOpt;\n } // Preprocess.\n\n\n each([baseOption].concat(timelineOptions).concat(zrUtil.map(mediaList, function (media) {\n return media.option;\n })), function (option) {\n each(optionPreprocessorFuncs, function (preProcess) {\n preProcess(option, isNew);\n });\n });\n return {\n baseOption: baseOption,\n timelineOptions: timelineOptions,\n mediaDefault: mediaDefault,\n mediaList: mediaList\n };\n}\n/**\n * @see \n * Support: width, height, aspectRatio\n * Can use max or min as prefix.\n */\n\n\nfunction applyMediaQuery(query, ecWidth, ecHeight) {\n var realMap = {\n width: ecWidth,\n height: ecHeight,\n aspectratio: ecWidth / ecHeight // lowser case for convenientce.\n\n };\n var applicatable = true;\n zrUtil.each(query, function (value, attr) {\n var matched = attr.match(QUERY_REG);\n\n if (!matched || !matched[1] || !matched[2]) {\n return;\n }\n\n var operator = matched[1];\n var realAttr = matched[2].toLowerCase();\n\n if (!compare(realMap[realAttr], value, operator)) {\n applicatable = false;\n }\n });\n return applicatable;\n}\n\nfunction compare(real, expect, operator) {\n if (operator === 'min') {\n return real >= expect;\n } else if (operator === 'max') {\n return real <= expect;\n } else {\n // Equals\n return real === expect;\n }\n}\n\nfunction indicesEquals(indices1, indices2) {\n // indices is always order by asc and has only finite number.\n return indices1.join(',') === indices2.join(',');\n}\n/**\n * Consider case:\n * `chart.setOption(opt1);`\n * Then user do some interaction like dataZoom, dataView changing.\n * `chart.setOption(opt2);`\n * Then user press 'reset button' in toolbox.\n *\n * After doing that all of the interaction effects should be reset, the\n * chart should be the same as the result of invoke\n * `chart.setOption(opt1); chart.setOption(opt2);`.\n *\n * Although it is not able ensure that\n * `chart.setOption(opt1); chart.setOption(opt2);` is equivalents to\n * `chart.setOption(merge(opt1, opt2));` exactly,\n * this might be the only simple way to implement that feature.\n *\n * MEMO: We've considered some other approaches:\n * 1. Each model handle its self restoration but not uniform treatment.\n * (Too complex in logic and error-prone)\n * 2. Use a shadow ecModel. (Performace expensive)\n */\n\n\nfunction mergeOption(oldOption, newOption) {\n newOption = newOption || {};\n each(newOption, function (newCptOpt, mainType) {\n if (newCptOpt == null) {\n return;\n }\n\n var oldCptOpt = oldOption[mainType];\n\n if (!ComponentModel.hasClass(mainType)) {\n oldOption[mainType] = merge(oldCptOpt, newCptOpt, true);\n } else {\n newCptOpt = modelUtil.normalizeToArray(newCptOpt);\n oldCptOpt = modelUtil.normalizeToArray(oldCptOpt);\n var mapResult = modelUtil.mappingToExists(oldCptOpt, newCptOpt);\n oldOption[mainType] = map(mapResult, function (item) {\n return item.option && item.exist ? merge(item.exist, item.option, true) : item.exist || item.option;\n });\n }\n });\n}\n\nvar _default = OptionManager;\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 _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar _format = require(\"../util/format\");\n\nvar formatTime = _format.formatTime;\nvar encodeHTML = _format.encodeHTML;\nvar addCommas = _format.addCommas;\nvar getTooltipMarker = _format.getTooltipMarker;\n\nvar modelUtil = require(\"../util/model\");\n\nvar ComponentModel = require(\"./Component\");\n\nvar colorPaletteMixin = require(\"./mixin/colorPalette\");\n\nvar dataFormatMixin = require(\"../model/mixin/dataFormat\");\n\nvar _layout = require(\"../util/layout\");\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\n\nvar _task = require(\"../stream/task\");\n\nvar createTask = _task.createTask;\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar prepareSource = _sourceHelper.prepareSource;\nvar getSource = _sourceHelper.getSource;\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*/\nvar inner = modelUtil.makeInner();\nvar SeriesModel = ComponentModel.extend({\n type: 'series.__base__',\n\n /**\n * @readOnly\n */\n seriesIndex: 0,\n // coodinateSystem will be injected in the echarts/CoordinateSystem\n coordinateSystem: null,\n\n /**\n * @type {Object}\n * @protected\n */\n defaultOption: null,\n\n /**\n * legend visual provider to the legend component\n * @type {Object}\n */\n // PENDING\n legendVisualProvider: null,\n\n /**\n * Access path of color for visual\n */\n visualColorAccessPath: 'itemStyle.color',\n\n /**\n * Access path of borderColor for visual\n */\n visualBorderColorAccessPath: 'itemStyle.borderColor',\n\n /**\n * Support merge layout params.\n * Only support 'box' now (left/right/top/bottom/width/height).\n * @type {string|Object} Object can be {ignoreSize: true}\n * @readOnly\n */\n layoutMode: null,\n init: function (option, parentModel, ecModel, extraOpt) {\n /**\n * @type {number}\n * @readOnly\n */\n this.seriesIndex = this.componentIndex;\n this.dataTask = createTask({\n count: dataTaskCount,\n reset: dataTaskReset\n });\n this.dataTask.context = {\n model: this\n };\n this.mergeDefaultAndTheme(option, ecModel);\n prepareSource(this);\n var data = this.getInitialData(option, ecModel);\n wrapData(data, this);\n this.dataTask.context.data = data;\n\n /**\n * @type {module:echarts/data/List|module:echarts/data/Tree|module:echarts/data/Graph}\n * @private\n */\n inner(this).dataBeforeProcessed = data; // If we reverse the order (make data firstly, and then make\n // dataBeforeProcessed by cloneShallow), cloneShallow will\n // cause data.graph.data !== data when using\n // module:echarts/data/Graph or module:echarts/data/Tree.\n // See module:echarts/data/helper/linkList\n // Theoretically, it is unreasonable to call `seriesModel.getData()` in the model\n // init or merge stage, because the data can be restored. So we do not `restoreData`\n // and `setData` here, which forbids calling `seriesModel.getData()` in this stage.\n // Call `seriesModel.getRawData()` instead.\n // this.restoreData();\n\n autoSeriesName(this);\n },\n\n /**\n * Util for merge default and theme to option\n * @param {Object} option\n * @param {module:echarts/model/Global} ecModel\n */\n mergeDefaultAndTheme: function (option, ecModel) {\n var layoutMode = this.layoutMode;\n var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; // Backward compat: using subType on theme.\n // But if name duplicate between series subType\n // (for example: parallel) add component mainType,\n // add suffix 'Series'.\n\n var themeSubType = this.subType;\n\n if (ComponentModel.hasClass(themeSubType)) {\n themeSubType += 'Series';\n }\n\n zrUtil.merge(option, ecModel.getTheme().get(this.subType));\n zrUtil.merge(option, this.getDefaultOption()); // Default label emphasis `show`\n\n modelUtil.defaultEmphasis(option, 'label', ['show']);\n this.fillDataTextStyle(option.data);\n\n if (layoutMode) {\n mergeLayoutParam(option, inputPositionParams, layoutMode);\n }\n },\n mergeOption: function (newSeriesOption, ecModel) {\n // this.settingTask.dirty();\n newSeriesOption = zrUtil.merge(this.option, newSeriesOption, true);\n this.fillDataTextStyle(newSeriesOption.data);\n var layoutMode = this.layoutMode;\n\n if (layoutMode) {\n mergeLayoutParam(this.option, newSeriesOption, layoutMode);\n }\n\n prepareSource(this);\n var data = this.getInitialData(newSeriesOption, ecModel);\n wrapData(data, this);\n this.dataTask.dirty();\n this.dataTask.context.data = data;\n inner(this).dataBeforeProcessed = data;\n autoSeriesName(this);\n },\n fillDataTextStyle: function (data) {\n // Default data label emphasis `show`\n // FIXME Tree structure data ?\n // FIXME Performance ?\n if (data && !zrUtil.isTypedArray(data)) {\n var props = ['show'];\n\n for (var i = 0; i < data.length; i++) {\n if (data[i] && data[i].label) {\n modelUtil.defaultEmphasis(data[i], 'label', props);\n }\n }\n }\n },\n\n /**\n * Init a data structure from data related option in series\n * Must be overwritten\n */\n getInitialData: function () {},\n\n /**\n * Append data to list\n * @param {Object} params\n * @param {Array|TypedArray} params.data\n */\n appendData: function (params) {\n // FIXME ???\n // (1) If data from dataset, forbidden append.\n // (2) support append data of dataset.\n var data = this.getRawData();\n data.appendData(params.data);\n },\n\n /**\n * Consider some method like `filter`, `map` need make new data,\n * We should make sure that `seriesModel.getData()` get correct\n * data in the stream procedure. So we fetch data from upstream\n * each time `task.perform` called.\n * @param {string} [dataType]\n * @return {module:echarts/data/List}\n */\n getData: function (dataType) {\n var task = getCurrentTask(this);\n\n if (task) {\n var data = task.context.data;\n return dataType == null ? data : data.getLinkedData(dataType);\n } else {\n // When series is not alive (that may happen when click toolbox\n // restore or setOption with not merge mode), series data may\n // be still need to judge animation or something when graphic\n // elements want to know whether fade out.\n return inner(this).data;\n }\n },\n\n /**\n * @param {module:echarts/data/List} data\n */\n setData: function (data) {\n var task = getCurrentTask(this);\n\n if (task) {\n var context = task.context; // Consider case: filter, data sample.\n\n if (context.data !== data && task.modifyOutputEnd) {\n task.setOutputEnd(data.count());\n }\n\n context.outputData = data; // Caution: setData should update context.data,\n // Because getData may be called multiply in a\n // single stage and expect to get the data just\n // set. (For example, AxisProxy, x y both call\n // getData and setDate sequentially).\n // So the context.data should be fetched from\n // upstream each time when a stage starts to be\n // performed.\n\n if (task !== this.dataTask) {\n context.data = data;\n }\n }\n\n inner(this).data = data;\n },\n\n /**\n * @see {module:echarts/data/helper/sourceHelper#getSource}\n * @return {module:echarts/data/Source} source\n */\n getSource: function () {\n return getSource(this);\n },\n\n /**\n * Get data before processed\n * @return {module:echarts/data/List}\n */\n getRawData: function () {\n return inner(this).dataBeforeProcessed;\n },\n\n /**\n * Get base axis if has coordinate system and has axis.\n * By default use coordSys.getBaseAxis();\n * Can be overrided for some chart.\n * @return {type} description\n */\n getBaseAxis: function () {\n var coordSys = this.coordinateSystem;\n return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis();\n },\n // FIXME\n\n /**\n * Default tooltip formatter\n *\n * @param {number} dataIndex\n * @param {boolean} [multipleSeries=false]\n * @param {number} [dataType]\n * @param {string} [renderMode='html'] valid values: 'html' and 'richText'.\n * 'html' is used for rendering tooltip in extra DOM form, and the result\n * string is used as DOM HTML content.\n * 'richText' is used for rendering tooltip in rich text form, for those where\n * DOM operation is not supported.\n * @return {Object} formatted tooltip with `html` and `markers`\n */\n formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n var series = this;\n renderMode = renderMode || 'html';\n var newLine = renderMode === 'html' ? '
' : '\\n';\n var isRichText = renderMode === 'richText';\n var markers = {};\n var markerId = 0;\n\n function formatArrayValue(value) {\n // ??? TODO refactor these logic.\n // check: category-no-encode-has-axis-data in dataset.html\n var vertially = zrUtil.reduce(value, function (vertially, val, idx) {\n var dimItem = data.getDimensionInfo(idx);\n return vertially |= dimItem && dimItem.tooltip !== false && dimItem.displayName != null;\n }, 0);\n var result = [];\n tooltipDims.length ? zrUtil.each(tooltipDims, function (dim) {\n setEachItem(retrieveRawValue(data, dataIndex, dim), dim);\n }) // By default, all dims is used on tooltip.\n : zrUtil.each(value, setEachItem);\n\n function setEachItem(val, dim) {\n var dimInfo = data.getDimensionInfo(dim); // If `dimInfo.tooltip` is not set, show tooltip.\n\n if (!dimInfo || dimInfo.otherDims.tooltip === false) {\n return;\n }\n\n var dimType = dimInfo.type;\n var markName = 'sub' + series.seriesIndex + 'at' + markerId;\n var dimHead = getTooltipMarker({\n color: color,\n type: 'subItem',\n renderMode: renderMode,\n markerId: markName\n });\n var dimHeadStr = typeof dimHead === 'string' ? dimHead : dimHead.content;\n var valStr = (vertially ? dimHeadStr + encodeHTML(dimInfo.displayName || '-') + ': ' : '') + // FIXME should not format time for raw data?\n encodeHTML(dimType === 'ordinal' ? val + '' : dimType === 'time' ? multipleSeries ? '' : formatTime('yyyy/MM/dd hh:mm:ss', val) : addCommas(val));\n valStr && result.push(valStr);\n\n if (isRichText) {\n markers[markName] = color;\n ++markerId;\n }\n }\n\n var newLine = vertially ? isRichText ? '\\n' : '
' : '';\n var content = newLine + result.join(newLine || ', ');\n return {\n renderMode: renderMode,\n content: content,\n style: markers\n };\n }\n\n function formatSingleValue(val) {\n // return encodeHTML(addCommas(val));\n return {\n renderMode: renderMode,\n content: encodeHTML(addCommas(val)),\n style: markers\n };\n }\n\n var data = this.getData();\n var tooltipDims = data.mapDimension('defaultedTooltip', true);\n var tooltipDimLen = tooltipDims.length;\n var value = this.getRawValue(dataIndex);\n var isValueArr = zrUtil.isArray(value);\n var color = data.getItemVisual(dataIndex, 'color');\n\n if (zrUtil.isObject(color) && color.colorStops) {\n color = (color.colorStops[0] || {}).color;\n }\n\n color = color || 'transparent'; // Complicated rule for pretty tooltip.\n\n var formattedValue = tooltipDimLen > 1 || isValueArr && !tooltipDimLen ? formatArrayValue(value) : tooltipDimLen ? formatSingleValue(retrieveRawValue(data, dataIndex, tooltipDims[0])) : formatSingleValue(isValueArr ? value[0] : value);\n var content = formattedValue.content;\n var markName = series.seriesIndex + 'at' + markerId;\n var colorEl = getTooltipMarker({\n color: color,\n type: 'item',\n renderMode: renderMode,\n markerId: markName\n });\n markers[markName] = color;\n ++markerId;\n var name = data.getName(dataIndex);\n var seriesName = this.name;\n\n if (!modelUtil.isNameSpecified(this)) {\n seriesName = '';\n }\n\n seriesName = seriesName ? encodeHTML(seriesName) + (!multipleSeries ? newLine : ': ') : '';\n var colorStr = typeof colorEl === 'string' ? colorEl : colorEl.content;\n var html = !multipleSeries ? seriesName + colorStr + (name ? encodeHTML(name) + ': ' + content : content) : colorStr + seriesName + content;\n return {\n html: html,\n markers: markers\n };\n },\n\n /**\n * @return {boolean}\n */\n isAnimationEnabled: function () {\n if (env.node) {\n return false;\n }\n\n var animationEnabled = this.getShallow('animation');\n\n if (animationEnabled) {\n if (this.getData().count() > this.getShallow('animationThreshold')) {\n animationEnabled = false;\n }\n }\n\n return animationEnabled;\n },\n restoreData: function () {\n this.dataTask.dirty();\n },\n getColorFromPalette: function (name, scope, requestColorNum) {\n var ecModel = this.ecModel; // PENDING\n\n var color = colorPaletteMixin.getColorFromPalette.call(this, name, scope, requestColorNum);\n\n if (!color) {\n color = ecModel.getColorFromPalette(name, scope, requestColorNum);\n }\n\n return color;\n },\n\n /**\n * Use `data.mapDimension(coordDim, true)` instead.\n * @deprecated\n */\n coordDimToDataDim: function (coordDim) {\n return this.getRawData().mapDimension(coordDim, true);\n },\n\n /**\n * Get progressive rendering count each step\n * @return {number}\n */\n getProgressive: function () {\n return this.get('progressive');\n },\n\n /**\n * Get progressive rendering count each step\n * @return {number}\n */\n getProgressiveThreshold: function () {\n return this.get('progressiveThreshold');\n },\n\n /**\n * Get data indices for show tooltip content. See tooltip.\n * @abstract\n * @param {Array.|string} dim\n * @param {Array.} value\n * @param {module:echarts/coord/single/SingleAxis} baseAxis\n * @return {Object} {dataIndices, nestestValue}.\n */\n getAxisTooltipData: null,\n\n /**\n * See tooltip.\n * @abstract\n * @param {number} dataIndex\n * @return {Array.} Point of tooltip. null/undefined can be returned.\n */\n getTooltipPosition: null,\n\n /**\n * @see {module:echarts/stream/Scheduler}\n */\n pipeTask: null,\n\n /**\n * Convinient for override in extended class.\n * @protected\n * @type {Function}\n */\n preventIncremental: null,\n\n /**\n * @public\n * @readOnly\n * @type {Object}\n */\n pipelineContext: null\n});\nzrUtil.mixin(SeriesModel, dataFormatMixin);\nzrUtil.mixin(SeriesModel, colorPaletteMixin);\n/**\n * MUST be called after `prepareSource` called\n * Here we need to make auto series, especially for auto legend. But we\n * do not modify series.name in option to avoid side effects.\n */\n\nfunction autoSeriesName(seriesModel) {\n // User specified name has higher priority, otherwise it may cause\n // series can not be queried unexpectedly.\n var name = seriesModel.name;\n\n if (!modelUtil.isNameSpecified(seriesModel)) {\n seriesModel.name = getSeriesAutoName(seriesModel) || name;\n }\n}\n\nfunction getSeriesAutoName(seriesModel) {\n var data = seriesModel.getRawData();\n var dataDims = data.mapDimension('seriesName', true);\n var nameArr = [];\n zrUtil.each(dataDims, function (dataDim) {\n var dimInfo = data.getDimensionInfo(dataDim);\n dimInfo.displayName && nameArr.push(dimInfo.displayName);\n });\n return nameArr.join(' ');\n}\n\nfunction dataTaskCount(context) {\n return context.model.getRawData().count();\n}\n\nfunction dataTaskReset(context) {\n var seriesModel = context.model;\n seriesModel.setData(seriesModel.getRawData().cloneShallow());\n return dataTaskProgress;\n}\n\nfunction dataTaskProgress(param, context) {\n // Avoid repead cloneShallow when data just created in reset.\n if (context.outputData && param.end > context.outputData.count()) {\n context.model.getRawData().cloneShallow(context.outputData);\n }\n} // TODO refactor\n\n\nfunction wrapData(data, seriesModel) {\n zrUtil.each(data.CHANGABLE_METHODS, function (methodName) {\n data.wrapMethod(methodName, zrUtil.curry(onDataSelfChange, seriesModel));\n });\n}\n\nfunction onDataSelfChange(seriesModel) {\n var task = getCurrentTask(seriesModel);\n\n if (task) {\n // Consider case: filter, selectRange\n task.setOutputEnd(this.count());\n }\n}\n\nfunction getCurrentTask(seriesModel) {\n var scheduler = (seriesModel.ecModel || {}).scheduler;\n var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid);\n\n if (pipeline) {\n // When pipline finished, the currrentTask keep the last\n // task (renderTask).\n var task = pipeline.currentTask;\n\n if (task) {\n var agentStubMap = task.agentStubMap;\n\n if (agentStubMap) {\n task = agentStubMap.get(seriesModel.uid);\n }\n }\n\n return task;\n }\n}\n\nvar _default = SeriesModel;\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\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 platform = ''; // Navigator not exists in node\n\nif (typeof navigator !== 'undefined') {\n platform = navigator.platform || '';\n}\n\nvar _default = {\n // backgroundColor: 'rgba(0,0,0,0)',\n // https://dribbble.com/shots/1065960-Infographic-Pie-chart-visualization\n // color: ['#5793f3', '#d14a61', '#fd9c35', '#675bba', '#fec42c', '#dd4444', '#d4df5a', '#cd4870'],\n // Light colors:\n // color: ['#bcd3bb', '#e88f70', '#edc1a5', '#9dc5c8', '#e1e8c8', '#7b7c68', '#e5b5b5', '#f0b489', '#928ea8', '#bda29a'],\n // color: ['#cc5664', '#9bd6ec', '#ea946e', '#8acaaa', '#f1ec64', '#ee8686', '#a48dc1', '#5da6bc', '#b9dcae'],\n // Dark colors:\n color: ['#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3'],\n gradientColor: ['#f6efa6', '#d88273', '#bf444c'],\n // If xAxis and yAxis declared, grid is created by default.\n // grid: {},\n textStyle: {\n // color: '#000',\n // decoration: 'none',\n // PENDING\n fontFamily: platform.match(/^Win/) ? 'Microsoft YaHei' : 'sans-serif',\n // fontFamily: 'Arial, Verdana, sans-serif',\n fontSize: 12,\n fontStyle: 'normal',\n fontWeight: 'normal'\n },\n // http://blogs.adobe.com/webplatform/2014/02/24/using-blend-modes-in-html-canvas/\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n // Default is source-over\n blendMode: null,\n animation: 'auto',\n animationDuration: 1000,\n animationDurationUpdate: 300,\n animationEasing: 'exponentialOut',\n animationEasingUpdate: 'cubicOut',\n animationThreshold: 2000,\n // Configuration for progressive/incremental rendering\n progressiveThreshold: 3000,\n progressive: 400,\n // Threshold of if use single hover layer to optimize.\n // It is recommended that `hoverLayerThreshold` is equivalent to or less than\n // `progressiveThreshold`, otherwise hover will cause restart of progressive,\n // which is unexpected.\n // see example .\n hoverLayerThreshold: 3000,\n // See: module:echarts/scale/Time\n useUTC: false\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 makeStyleMapper = require(\"./makeStyleMapper\");\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 getAreaStyle = makeStyleMapper([['fill', 'color'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['opacity'], ['shadowColor']]);\nvar _default = {\n getAreaStyle: function (excludes, includes) {\n return getAreaStyle(this, excludes, includes);\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\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 _default = {\n getBoxLayoutParams: function () {\n return {\n left: this.get('left'),\n top: this.get('top'),\n right: this.get('right'),\n bottom: this.get('bottom'),\n width: this.get('width'),\n height: this.get('height')\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 _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\nvar normalizeToArray = _model.normalizeToArray;\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 inner = makeInner();\n\nfunction getNearestColorPalette(colors, requestColorNum) {\n var paletteNum = colors.length; // TODO colors must be in order\n\n for (var i = 0; i < paletteNum; i++) {\n if (colors[i].length > requestColorNum) {\n return colors[i];\n }\n }\n\n return colors[paletteNum - 1];\n}\n\nvar _default = {\n clearColorPalette: function () {\n inner(this).colorIdx = 0;\n inner(this).colorNameMap = {};\n },\n\n /**\n * @param {string} name MUST NOT be null/undefined. Otherwise call this function\n * twise with the same parameters will get different result.\n * @param {Object} [scope=this]\n * @param {Object} [requestColorNum]\n * @return {string} color string.\n */\n getColorFromPalette: function (name, scope, requestColorNum) {\n scope = scope || this;\n var scopeFields = inner(scope);\n var colorIdx = scopeFields.colorIdx || 0;\n var colorNameMap = scopeFields.colorNameMap = scopeFields.colorNameMap || {}; // Use `hasOwnProperty` to avoid conflict with Object.prototype.\n\n if (colorNameMap.hasOwnProperty(name)) {\n return colorNameMap[name];\n }\n\n var defaultColorPalette = normalizeToArray(this.get('color', true));\n var layeredColorPalette = this.get('colorLayer', true);\n var colorPalette = requestColorNum == null || !layeredColorPalette ? defaultColorPalette : getNearestColorPalette(layeredColorPalette, requestColorNum); // In case can't find in layered color palette.\n\n colorPalette = colorPalette || defaultColorPalette;\n\n if (!colorPalette || !colorPalette.length) {\n return;\n }\n\n var color = colorPalette[colorIdx];\n\n if (name) {\n colorNameMap[name] = color;\n }\n\n scopeFields.colorIdx = (colorIdx + 1) % colorPalette.length;\n return color;\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 _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\nvar _format = require(\"../../util/format\");\n\nvar getTooltipMarker = _format.getTooltipMarker;\nvar formatTpl = _format.formatTpl;\n\nvar _model = require(\"../../util/model\");\n\nvar getTooltipRenderMode = _model.getTooltipRenderMode;\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 DIMENSION_LABEL_REG = /\\{@(.+?)\\}/g; // PENDING A little ugly\n\nvar _default = {\n /**\n * Get params for formatter\n * @param {number} dataIndex\n * @param {string} [dataType]\n * @return {Object}\n */\n getDataParams: function (dataIndex, dataType) {\n var data = this.getData(dataType);\n var rawValue = this.getRawValue(dataIndex, dataType);\n var rawDataIndex = data.getRawIndex(dataIndex);\n var name = data.getName(dataIndex);\n var itemOpt = data.getRawDataItem(dataIndex);\n var color = data.getItemVisual(dataIndex, 'color');\n var borderColor = data.getItemVisual(dataIndex, 'borderColor');\n var tooltipModel = this.ecModel.getComponent('tooltip');\n var renderModeOption = tooltipModel && tooltipModel.get('renderMode');\n var renderMode = getTooltipRenderMode(renderModeOption);\n var mainType = this.mainType;\n var isSeries = mainType === 'series';\n var userOutput = data.userOutput;\n return {\n componentType: mainType,\n componentSubType: this.subType,\n componentIndex: this.componentIndex,\n seriesType: isSeries ? this.subType : null,\n seriesIndex: this.seriesIndex,\n seriesId: isSeries ? this.id : null,\n seriesName: isSeries ? this.name : null,\n name: name,\n dataIndex: rawDataIndex,\n data: itemOpt,\n dataType: dataType,\n value: rawValue,\n color: color,\n borderColor: borderColor,\n dimensionNames: userOutput ? userOutput.dimensionNames : null,\n encode: userOutput ? userOutput.encode : null,\n marker: getTooltipMarker({\n color: color,\n renderMode: renderMode\n }),\n // Param name list for mapping `a`, `b`, `c`, `d`, `e`\n $vars: ['seriesName', 'name', 'value']\n };\n },\n\n /**\n * Format label\n * @param {number} dataIndex\n * @param {string} [status='normal'] 'normal' or 'emphasis'\n * @param {string} [dataType]\n * @param {number} [dimIndex] Only used in some chart that\n * use formatter in different dimensions, like radar.\n * @param {string} [labelProp='label']\n * @return {string} If not formatter, return null/undefined\n */\n getFormattedLabel: function (dataIndex, status, dataType, dimIndex, labelProp) {\n status = status || 'normal';\n var data = this.getData(dataType);\n var itemModel = data.getItemModel(dataIndex);\n var params = this.getDataParams(dataIndex, dataType);\n\n if (dimIndex != null && params.value instanceof Array) {\n params.value = params.value[dimIndex];\n }\n\n var formatter = itemModel.get(status === 'normal' ? [labelProp || 'label', 'formatter'] : [status, labelProp || 'label', 'formatter']);\n\n if (typeof formatter === 'function') {\n params.status = status;\n params.dimensionIndex = dimIndex;\n return formatter(params);\n } else if (typeof formatter === 'string') {\n var str = formatTpl(formatter, params); // Support 'aaa{@[3]}bbb{@product}ccc'.\n // Do not support '}' in dim name util have to.\n\n return str.replace(DIMENSION_LABEL_REG, function (origin, dim) {\n var len = dim.length;\n\n if (dim.charAt(0) === '[' && dim.charAt(len - 1) === ']') {\n dim = +dim.slice(1, len - 1); // Also: '[]' => 0\n }\n\n return retrieveRawValue(data, dataIndex, dim);\n });\n }\n },\n\n /**\n * Get raw value in option\n * @param {number} idx\n * @param {string} [dataType]\n * @return {Array|number|string}\n */\n getRawValue: function (idx, dataType) {\n return retrieveRawValue(this.getData(dataType), idx);\n },\n\n /**\n * Should be implemented.\n * @param {number} dataIndex\n * @param {boolean} [multipleSeries=false]\n * @param {number} [dataType]\n * @return {string} tooltip string\n */\n formatTooltip: function () {// Empty function\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 makeStyleMapper = require(\"./makeStyleMapper\");\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 getItemStyle = makeStyleMapper([['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor'], ['textPosition'], ['textAlign']]);\nvar _default = {\n getItemStyle: function (excludes, includes) {\n var style = getItemStyle(this, excludes, includes);\n var lineDash = this.getBorderLineDash();\n lineDash && (style.lineDash = lineDash);\n return style;\n },\n getBorderLineDash: function () {\n var lineType = this.get('borderType');\n return lineType === 'solid' || lineType == null ? null : lineType === 'dashed' ? [5, 5] : [1, 1];\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 makeStyleMapper = require(\"./makeStyleMapper\");\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 getLineStyle = makeStyleMapper([['lineWidth', 'width'], ['stroke', 'color'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\nvar _default = {\n getLineStyle: function (excludes) {\n var style = getLineStyle(this, excludes); // Always set lineDash whether dashed, otherwise we can not\n // erase the previous style when assigning to el.style.\n\n style.lineDash = this.getLineDash(style.lineWidth);\n return style;\n },\n getLineDash: function (lineWidth) {\n if (lineWidth == null) {\n lineWidth = 1;\n }\n\n var lineType = this.get('type');\n var dotSize = Math.max(lineWidth, 2);\n var dashSize = lineWidth * 4;\n return lineType === 'solid' || lineType == null ? // Use `false` but not `null` for the solid line here, because `null` might be\n // ignored when assigning to `el.style`. e.g., when setting `lineStyle.type` as\n // `'dashed'` and `emphasis.lineStyle.type` as `'solid'` in graph series, the\n // `lineDash` gotten form the latter one is not able to erase that from the former\n // one if using `null` here according to the emhpsis strategy in `util/graphic.js`.\n false : lineType === 'dashed' ? [dashSize, dashSize] : [dotSize, dotSize];\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\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 Parse shadow style\n// TODO Only shallow path support\nfunction _default(properties) {\n // Normalize\n for (var i = 0; i < properties.length; i++) {\n if (!properties[i][1]) {\n properties[i][1] = properties[i][0];\n }\n }\n\n return function (model, excludes, includes) {\n var style = {};\n\n for (var i = 0; i < properties.length; i++) {\n var propName = properties[i][1];\n\n if (excludes && zrUtil.indexOf(excludes, propName) >= 0 || includes && zrUtil.indexOf(includes, propName) < 0) {\n continue;\n }\n\n var val = model.getShallow(propName);\n\n if (val != null) {\n style[properties[i][0]] = val;\n }\n }\n\n return style;\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 textContain = require(\"zrender/lib/contain/text\");\n\nvar graphicUtil = require(\"../../util/graphic\");\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 PATH_COLOR = ['textStyle', 'color'];\nvar _default = {\n /**\n * Get color property or get color from option.textStyle.color\n * @param {boolean} [isEmphasis]\n * @return {string}\n */\n getTextColor: function (isEmphasis) {\n var ecModel = this.ecModel;\n return this.getShallow('color') || (!isEmphasis && ecModel ? ecModel.get(PATH_COLOR) : null);\n },\n\n /**\n * Create font string from fontStyle, fontWeight, fontSize, fontFamily\n * @return {string}\n */\n getFont: function () {\n return graphicUtil.getFont({\n fontStyle: this.getShallow('fontStyle'),\n fontWeight: this.getShallow('fontWeight'),\n fontSize: this.getShallow('fontSize'),\n fontFamily: this.getShallow('fontFamily')\n }, this.ecModel);\n },\n getTextRect: function (text) {\n return textContain.getBoundingRect(text, this.getFont(), this.getShallow('align'), this.getShallow('verticalAlign') || this.getShallow('baseline'), this.getShallow('padding'), this.getShallow('lineHeight'), this.getShallow('rich'), this.getShallow('truncateText'));\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 _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar retrieve = _util.retrieve;\nvar each = _util.each;\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 * Helper for model references.\n * There are many manners to refer axis/coordSys.\n */\n// TODO\n// merge relevant logic to this file?\n// check: \"modelHelper\" of tooltip and \"BrushTargetManager\".\n\n/**\n * @class\n * For example:\n * {\n * coordSysName: 'cartesian2d',\n * coordSysDims: ['x', 'y', ...],\n * axisMap: HashMap({\n * x: xAxisModel,\n * y: yAxisModel\n * }),\n * categoryAxisMap: HashMap({\n * x: xAxisModel,\n * y: undefined\n * }),\n * // The index of the first category axis in `coordSysDims`.\n * // `null/undefined` means no category axis exists.\n * firstCategoryDimIndex: 1,\n * // To replace user specified encode.\n * }\n */\nfunction CoordSysInfo(coordSysName) {\n /**\n * @type {string}\n */\n this.coordSysName = coordSysName;\n /**\n * @type {Array.}\n */\n\n this.coordSysDims = [];\n /**\n * @type {module:zrender/core/util#HashMap}\n */\n\n this.axisMap = createHashMap();\n /**\n * @type {module:zrender/core/util#HashMap}\n */\n\n this.categoryAxisMap = createHashMap();\n /**\n * @type {number}\n */\n\n this.firstCategoryDimIndex = null;\n}\n/**\n * @return {module:model/referHelper#CoordSysInfo}\n */\n\n\nfunction getCoordSysInfoBySeries(seriesModel) {\n var coordSysName = seriesModel.get('coordinateSystem');\n var result = new CoordSysInfo(coordSysName);\n var fetch = fetchers[coordSysName];\n\n if (fetch) {\n fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);\n return result;\n }\n}\n\nvar fetchers = {\n cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) {\n var xAxisModel = seriesModel.getReferringComponents('xAxis')[0];\n var yAxisModel = seriesModel.getReferringComponents('yAxis')[0];\n result.coordSysDims = ['x', 'y'];\n axisMap.set('x', xAxisModel);\n axisMap.set('y', yAxisModel);\n\n if (isCategory(xAxisModel)) {\n categoryAxisMap.set('x', xAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n\n if (isCategory(yAxisModel)) {\n categoryAxisMap.set('y', yAxisModel);\n result.firstCategoryDimIndex == null & (result.firstCategoryDimIndex = 1);\n }\n },\n singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) {\n var singleAxisModel = seriesModel.getReferringComponents('singleAxis')[0];\n result.coordSysDims = ['single'];\n axisMap.set('single', singleAxisModel);\n\n if (isCategory(singleAxisModel)) {\n categoryAxisMap.set('single', singleAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n },\n polar: function (seriesModel, result, axisMap, categoryAxisMap) {\n var polarModel = seriesModel.getReferringComponents('polar')[0];\n var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n var angleAxisModel = polarModel.findAxisModel('angleAxis');\n result.coordSysDims = ['radius', 'angle'];\n axisMap.set('radius', radiusAxisModel);\n axisMap.set('angle', angleAxisModel);\n\n if (isCategory(radiusAxisModel)) {\n categoryAxisMap.set('radius', radiusAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n\n if (isCategory(angleAxisModel)) {\n categoryAxisMap.set('angle', angleAxisModel);\n result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\n }\n },\n geo: function (seriesModel, result, axisMap, categoryAxisMap) {\n result.coordSysDims = ['lng', 'lat'];\n },\n parallel: function (seriesModel, result, axisMap, categoryAxisMap) {\n var ecModel = seriesModel.ecModel;\n var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();\n each(parallelModel.parallelAxisIndex, function (axisIndex, index) {\n var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\n var axisDim = coordSysDims[index];\n axisMap.set(axisDim, axisModel);\n\n if (isCategory(axisModel) && result.firstCategoryDimIndex == null) {\n categoryAxisMap.set(axisDim, axisModel);\n result.firstCategoryDimIndex = index;\n }\n });\n }\n};\n\nfunction isCategory(axisModel) {\n return axisModel.get('type') === 'category';\n}\n\nexports.getCoordSysInfoBySeries = getCoordSysInfoBySeries;","\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 _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar isArray = _util.isArray;\nvar isObject = _util.isObject;\n\nvar compatStyle = require(\"./helper/compatStyle\");\n\nvar _model = require(\"../util/model\");\n\nvar normalizeToArray = _model.normalizeToArray;\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// Compatitable with 2.0\nfunction get(opt, path) {\n path = path.split(',');\n var obj = opt;\n\n for (var i = 0; i < path.length; i++) {\n obj = obj && obj[path[i]];\n\n if (obj == null) {\n break;\n }\n }\n\n return obj;\n}\n\nfunction set(opt, path, val, overwrite) {\n path = path.split(',');\n var obj = opt;\n var key;\n\n for (var i = 0; i < path.length - 1; i++) {\n key = path[i];\n\n if (obj[key] == null) {\n obj[key] = {};\n }\n\n obj = obj[key];\n }\n\n if (overwrite || obj[path[i]] == null) {\n obj[path[i]] = val;\n }\n}\n\nfunction compatLayoutProperties(option) {\n each(LAYOUT_PROPERTIES, function (prop) {\n if (prop[0] in option && !(prop[1] in option)) {\n option[prop[1]] = option[prop[0]];\n }\n });\n}\n\nvar LAYOUT_PROPERTIES = [['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']];\nvar COMPATITABLE_COMPONENTS = ['grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline'];\n\nfunction _default(option, isTheme) {\n compatStyle(option, isTheme); // Make sure series array for model initialization.\n\n option.series = normalizeToArray(option.series);\n each(option.series, function (seriesOpt) {\n if (!isObject(seriesOpt)) {\n return;\n }\n\n var seriesType = seriesOpt.type;\n\n if (seriesType === 'line') {\n if (seriesOpt.clipOverflow != null) {\n seriesOpt.clip = seriesOpt.clipOverflow;\n }\n } else if (seriesType === 'pie' || seriesType === 'gauge') {\n if (seriesOpt.clockWise != null) {\n seriesOpt.clockwise = seriesOpt.clockWise;\n }\n } else if (seriesType === 'gauge') {\n var pointerColor = get(seriesOpt, 'pointer.color');\n pointerColor != null && set(seriesOpt, 'itemStyle.color', pointerColor);\n }\n\n compatLayoutProperties(seriesOpt);\n }); // dataRange has changed to visualMap\n\n if (option.dataRange) {\n option.visualMap = option.dataRange;\n }\n\n each(COMPATITABLE_COMPONENTS, function (componentName) {\n var options = option[componentName];\n\n if (options) {\n if (!isArray(options)) {\n options = [options];\n }\n\n each(options, function (option) {\n compatLayoutProperties(option);\n });\n }\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../../util/model\");\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 each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar POSSIBLE_STYLES = ['areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle', 'chordStyle', 'label', 'labelLine'];\n\nfunction compatEC2ItemStyle(opt) {\n var itemStyleOpt = opt && opt.itemStyle;\n\n if (!itemStyleOpt) {\n return;\n }\n\n for (var i = 0, len = POSSIBLE_STYLES.length; i < len; i++) {\n var styleName = POSSIBLE_STYLES[i];\n var normalItemStyleOpt = itemStyleOpt.normal;\n var emphasisItemStyleOpt = itemStyleOpt.emphasis;\n\n if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {\n opt[styleName] = opt[styleName] || {};\n\n if (!opt[styleName].normal) {\n opt[styleName].normal = normalItemStyleOpt[styleName];\n } else {\n zrUtil.merge(opt[styleName].normal, normalItemStyleOpt[styleName]);\n }\n\n normalItemStyleOpt[styleName] = null;\n }\n\n if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {\n opt[styleName] = opt[styleName] || {};\n\n if (!opt[styleName].emphasis) {\n opt[styleName].emphasis = emphasisItemStyleOpt[styleName];\n } else {\n zrUtil.merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]);\n }\n\n emphasisItemStyleOpt[styleName] = null;\n }\n }\n}\n\nfunction convertNormalEmphasis(opt, optType, useExtend) {\n if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) {\n var normalOpt = opt[optType].normal;\n var emphasisOpt = opt[optType].emphasis;\n\n if (normalOpt) {\n // Timeline controlStyle has other properties besides normal and emphasis\n if (useExtend) {\n opt[optType].normal = opt[optType].emphasis = null;\n zrUtil.defaults(opt[optType], normalOpt);\n } else {\n opt[optType] = normalOpt;\n }\n }\n\n if (emphasisOpt) {\n opt.emphasis = opt.emphasis || {};\n opt.emphasis[optType] = emphasisOpt;\n }\n }\n}\n\nfunction removeEC3NormalStatus(opt) {\n convertNormalEmphasis(opt, 'itemStyle');\n convertNormalEmphasis(opt, 'lineStyle');\n convertNormalEmphasis(opt, 'areaStyle');\n convertNormalEmphasis(opt, 'label');\n convertNormalEmphasis(opt, 'labelLine'); // treemap\n\n convertNormalEmphasis(opt, 'upperLabel'); // graph\n\n convertNormalEmphasis(opt, 'edgeLabel');\n}\n\nfunction compatTextStyle(opt, propName) {\n // Check whether is not object (string\\null\\undefined ...)\n var labelOptSingle = isObject(opt) && opt[propName];\n var textStyle = isObject(labelOptSingle) && labelOptSingle.textStyle;\n\n if (textStyle) {\n for (var i = 0, len = modelUtil.TEXT_STYLE_OPTIONS.length; i < len; i++) {\n var propName = modelUtil.TEXT_STYLE_OPTIONS[i];\n\n if (textStyle.hasOwnProperty(propName)) {\n labelOptSingle[propName] = textStyle[propName];\n }\n }\n }\n}\n\nfunction compatEC3CommonStyles(opt) {\n if (opt) {\n removeEC3NormalStatus(opt);\n compatTextStyle(opt, 'label');\n opt.emphasis && compatTextStyle(opt.emphasis, 'label');\n }\n}\n\nfunction processSeries(seriesOpt) {\n if (!isObject(seriesOpt)) {\n return;\n }\n\n compatEC2ItemStyle(seriesOpt);\n removeEC3NormalStatus(seriesOpt);\n compatTextStyle(seriesOpt, 'label'); // treemap\n\n compatTextStyle(seriesOpt, 'upperLabel'); // graph\n\n compatTextStyle(seriesOpt, 'edgeLabel');\n\n if (seriesOpt.emphasis) {\n compatTextStyle(seriesOpt.emphasis, 'label'); // treemap\n\n compatTextStyle(seriesOpt.emphasis, 'upperLabel'); // graph\n\n compatTextStyle(seriesOpt.emphasis, 'edgeLabel');\n }\n\n var markPoint = seriesOpt.markPoint;\n\n if (markPoint) {\n compatEC2ItemStyle(markPoint);\n compatEC3CommonStyles(markPoint);\n }\n\n var markLine = seriesOpt.markLine;\n\n if (markLine) {\n compatEC2ItemStyle(markLine);\n compatEC3CommonStyles(markLine);\n }\n\n var markArea = seriesOpt.markArea;\n\n if (markArea) {\n compatEC3CommonStyles(markArea);\n }\n\n var data = seriesOpt.data; // Break with ec3: if `setOption` again, there may be no `type` in option,\n // then the backward compat based on option type will not be performed.\n\n if (seriesOpt.type === 'graph') {\n data = data || seriesOpt.nodes;\n var edgeData = seriesOpt.links || seriesOpt.edges;\n\n if (edgeData && !zrUtil.isTypedArray(edgeData)) {\n for (var i = 0; i < edgeData.length; i++) {\n compatEC3CommonStyles(edgeData[i]);\n }\n }\n\n zrUtil.each(seriesOpt.categories, function (opt) {\n removeEC3NormalStatus(opt);\n });\n }\n\n if (data && !zrUtil.isTypedArray(data)) {\n for (var i = 0; i < data.length; i++) {\n compatEC3CommonStyles(data[i]);\n }\n } // mark point data\n\n\n var markPoint = seriesOpt.markPoint;\n\n if (markPoint && markPoint.data) {\n var mpData = markPoint.data;\n\n for (var i = 0; i < mpData.length; i++) {\n compatEC3CommonStyles(mpData[i]);\n }\n } // mark line data\n\n\n var markLine = seriesOpt.markLine;\n\n if (markLine && markLine.data) {\n var mlData = markLine.data;\n\n for (var i = 0; i < mlData.length; i++) {\n if (zrUtil.isArray(mlData[i])) {\n compatEC3CommonStyles(mlData[i][0]);\n compatEC3CommonStyles(mlData[i][1]);\n } else {\n compatEC3CommonStyles(mlData[i]);\n }\n }\n } // Series\n\n\n if (seriesOpt.type === 'gauge') {\n compatTextStyle(seriesOpt, 'axisLabel');\n compatTextStyle(seriesOpt, 'title');\n compatTextStyle(seriesOpt, 'detail');\n } else if (seriesOpt.type === 'treemap') {\n convertNormalEmphasis(seriesOpt.breadcrumb, 'itemStyle');\n zrUtil.each(seriesOpt.levels, function (opt) {\n removeEC3NormalStatus(opt);\n });\n } else if (seriesOpt.type === 'tree') {\n removeEC3NormalStatus(seriesOpt.leaves);\n } // sunburst starts from ec4, so it does not need to compat levels.\n\n}\n\nfunction toArr(o) {\n return zrUtil.isArray(o) ? o : o ? [o] : [];\n}\n\nfunction toObj(o) {\n return (zrUtil.isArray(o) ? o[0] : o) || {};\n}\n\nfunction _default(option, isTheme) {\n each(toArr(option.series), function (seriesOpt) {\n isObject(seriesOpt) && processSeries(seriesOpt);\n });\n var axes = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'parallelAxis', 'radar'];\n isTheme && axes.push('valueAxis', 'categoryAxis', 'logAxis', 'timeAxis');\n each(axes, function (axisName) {\n each(toArr(option[axisName]), function (axisOpt) {\n if (axisOpt) {\n compatTextStyle(axisOpt, 'axisLabel');\n compatTextStyle(axisOpt.axisPointer, 'label');\n }\n });\n });\n each(toArr(option.parallel), function (parallelOpt) {\n var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault;\n compatTextStyle(parallelAxisDefault, 'axisLabel');\n compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, 'label');\n });\n each(toArr(option.calendar), function (calendarOpt) {\n convertNormalEmphasis(calendarOpt, 'itemStyle');\n compatTextStyle(calendarOpt, 'dayLabel');\n compatTextStyle(calendarOpt, 'monthLabel');\n compatTextStyle(calendarOpt, 'yearLabel');\n }); // radar.name.textStyle\n\n each(toArr(option.radar), function (radarOpt) {\n compatTextStyle(radarOpt, 'name');\n });\n each(toArr(option.geo), function (geoOpt) {\n if (isObject(geoOpt)) {\n compatEC3CommonStyles(geoOpt);\n each(toArr(geoOpt.regions), function (regionObj) {\n compatEC3CommonStyles(regionObj);\n });\n }\n });\n each(toArr(option.timeline), function (timelineOpt) {\n compatEC3CommonStyles(timelineOpt);\n convertNormalEmphasis(timelineOpt, 'label');\n convertNormalEmphasis(timelineOpt, 'itemStyle');\n convertNormalEmphasis(timelineOpt, 'controlStyle', true);\n var data = timelineOpt.data;\n zrUtil.isArray(data) && zrUtil.each(data, function (item) {\n if (zrUtil.isObject(item)) {\n convertNormalEmphasis(item, 'label');\n convertNormalEmphasis(item, 'itemStyle');\n }\n });\n });\n each(toArr(option.toolbox), function (toolboxOpt) {\n convertNormalEmphasis(toolboxOpt, 'iconStyle');\n each(toolboxOpt.feature, function (featureOpt) {\n convertNormalEmphasis(featureOpt, 'iconStyle');\n });\n });\n compatTextStyle(toObj(option.axisPointer), 'label');\n compatTextStyle(toObj(option.tooltip).axisPointer, 'label');\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\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(seriesType) {\n return {\n seriesType: seriesType,\n reset: function (seriesModel, ecModel) {\n var legendModels = ecModel.findComponents({\n mainType: 'legend'\n });\n\n if (!legendModels || !legendModels.length) {\n return;\n }\n\n var data = seriesModel.getData();\n data.filterSelf(function (idx) {\n var name = data.getName(idx); // If in any legend component the status is not selected.\n\n for (var i = 0; i < legendModels.length; i++) {\n if (!legendModels[i].isSelected(name)) {\n return false;\n }\n }\n\n return true;\n });\n }\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\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 samplers = {\n average: function (frame) {\n var sum = 0;\n var count = 0;\n\n for (var i = 0; i < frame.length; i++) {\n if (!isNaN(frame[i])) {\n sum += frame[i];\n count++;\n }\n } // Return NaN if count is 0\n\n\n return count === 0 ? NaN : sum / count;\n },\n sum: function (frame) {\n var sum = 0;\n\n for (var i = 0; i < frame.length; i++) {\n // Ignore NaN\n sum += frame[i] || 0;\n }\n\n return sum;\n },\n max: function (frame) {\n var max = -Infinity;\n\n for (var i = 0; i < frame.length; i++) {\n frame[i] > max && (max = frame[i]);\n } // NaN will cause illegal axis extent.\n\n\n return isFinite(max) ? max : NaN;\n },\n min: function (frame) {\n var min = Infinity;\n\n for (var i = 0; i < frame.length; i++) {\n frame[i] < min && (min = frame[i]);\n } // NaN will cause illegal axis extent.\n\n\n return isFinite(min) ? min : NaN;\n },\n // TODO\n // Median\n nearest: function (frame) {\n return frame[0];\n }\n};\n\nvar indexSampler = function (frame, value) {\n return Math.round(frame.length / 2);\n};\n\nfunction _default(seriesType) {\n return {\n seriesType: seriesType,\n modifyOutputEnd: true,\n reset: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var sampling = seriesModel.get('sampling');\n var coordSys = seriesModel.coordinateSystem; // Only cartesian2d support down sampling\n\n if (coordSys.type === 'cartesian2d' && sampling) {\n var baseAxis = coordSys.getBaseAxis();\n var valueAxis = coordSys.getOtherAxis(baseAxis);\n var extent = baseAxis.getExtent(); // Coordinste system has been resized\n\n var size = Math.abs(extent[1] - extent[0]);\n var rate = Math.round(data.count() / size);\n\n if (rate > 1) {\n var sampler;\n\n if (typeof sampling === 'string') {\n sampler = samplers[sampling];\n } else if (typeof sampling === 'function') {\n sampler = sampling;\n }\n\n if (sampler) {\n // Only support sample the first dim mapped from value axis.\n seriesModel.setData(data.downSample(data.mapDimension(valueAxis.dim), 1 / rate, sampler, indexSampler));\n }\n }\n }\n }\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 _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\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// (1) [Caution]: the logic is correct based on the premises:\n// data processing stage is blocked in stream.\n// See \n// (2) Only register once when import repeatly.\n// Should be executed after series filtered and before stack calculation.\nfunction _default(ecModel) {\n var stackInfoMap = createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var stack = seriesModel.get('stack'); // Compatibal: when `stack` is set as '', do not stack.\n\n if (stack) {\n var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []);\n var data = seriesModel.getData();\n var stackInfo = {\n // Used for calculate axis extent automatically.\n stackResultDimension: data.getCalculationInfo('stackResultDimension'),\n stackedOverDimension: data.getCalculationInfo('stackedOverDimension'),\n stackedDimension: data.getCalculationInfo('stackedDimension'),\n stackedByDimension: data.getCalculationInfo('stackedByDimension'),\n isStackedByIndex: data.getCalculationInfo('isStackedByIndex'),\n data: data,\n seriesModel: seriesModel\n }; // If stacked on axis that do not support data stack.\n\n if (!stackInfo.stackedDimension || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) {\n return;\n }\n\n stackInfoList.length && data.setCalculationInfo('stackedOnSeries', stackInfoList[stackInfoList.length - 1].seriesModel);\n stackInfoList.push(stackInfo);\n }\n });\n stackInfoMap.each(calculateStack);\n}\n\nfunction calculateStack(stackInfoList) {\n each(stackInfoList, function (targetStackInfo, idxInStack) {\n var resultVal = [];\n var resultNaN = [NaN, NaN];\n var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension];\n var targetData = targetStackInfo.data;\n var isStackedByIndex = targetStackInfo.isStackedByIndex; // Should not write on raw data, because stack series model list changes\n // depending on legend selection.\n\n var newData = targetData.map(dims, function (v0, v1, dataIndex) {\n var sum = targetData.get(targetStackInfo.stackedDimension, dataIndex); // Consider `connectNulls` of line area, if value is NaN, stackedOver\n // should also be NaN, to draw a appropriate belt area.\n\n if (isNaN(sum)) {\n return resultNaN;\n }\n\n var byValue;\n var stackedDataRawIndex;\n\n if (isStackedByIndex) {\n stackedDataRawIndex = targetData.getRawIndex(dataIndex);\n } else {\n byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex);\n } // If stackOver is NaN, chart view will render point on value start.\n\n\n var stackedOver = NaN;\n\n for (var j = idxInStack - 1; j >= 0; j--) {\n var stackInfo = stackInfoList[j]; // Has been optimized by inverted indices on `stackedByDimension`.\n\n if (!isStackedByIndex) {\n stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue);\n }\n\n if (stackedDataRawIndex >= 0) {\n var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex); // Considering positive stack, negative stack and empty data\n\n if (sum >= 0 && val > 0 || // Positive stack\n sum <= 0 && val < 0 // Negative stack\n ) {\n sum += val;\n stackedOver = val;\n break;\n }\n }\n }\n\n resultVal[0] = sum;\n resultVal[1] = stackedOver;\n return resultVal;\n });\n targetData.hostModel.setData(newData); // Update for consequent calculation\n\n targetStackInfo.data = newData;\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 numberUtil = require(\"../util/number\");\n\nvar formatUtil = require(\"../util/format\");\n\nvar Scale = require(\"./Scale\");\n\nvar helper = require(\"./helper\");\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 * Interval scale\n * @module echarts/scale/Interval\n */\nvar roundNumber = numberUtil.round;\n/**\n * @alias module:echarts/coord/scale/Interval\n * @constructor\n */\n\nvar IntervalScale = Scale.extend({\n type: 'interval',\n _interval: 0,\n _intervalPrecision: 2,\n setExtent: function (start, end) {\n var thisExtent = this._extent; //start,end may be a Number like '25',so...\n\n if (!isNaN(start)) {\n thisExtent[0] = parseFloat(start);\n }\n\n if (!isNaN(end)) {\n thisExtent[1] = parseFloat(end);\n }\n },\n unionExtent: function (other) {\n var extent = this._extent;\n other[0] < extent[0] && (extent[0] = other[0]);\n other[1] > extent[1] && (extent[1] = other[1]); // unionExtent may called by it's sub classes\n\n IntervalScale.prototype.setExtent.call(this, extent[0], extent[1]);\n },\n\n /**\n * Get interval\n */\n getInterval: function () {\n return this._interval;\n },\n\n /**\n * Set interval\n */\n setInterval: function (interval) {\n this._interval = interval; // Dropped auto calculated niceExtent and use user setted extent\n // We assume user wan't to set both interval, min, max to get a better result\n\n this._niceExtent = this._extent.slice();\n this._intervalPrecision = helper.getIntervalPrecision(interval);\n },\n\n /**\n * @param {boolean} [expandToNicedExtent=false] If expand the ticks to niced extent.\n * @return {Array.}\n */\n getTicks: function (expandToNicedExtent) {\n var interval = this._interval;\n var extent = this._extent;\n var niceTickExtent = this._niceExtent;\n var intervalPrecision = this._intervalPrecision;\n var ticks = []; // If interval is 0, return [];\n\n if (!interval) {\n return ticks;\n } // Consider this case: using dataZoom toolbox, zoom and zoom.\n\n\n var safeLimit = 10000;\n\n if (extent[0] < niceTickExtent[0]) {\n if (expandToNicedExtent) {\n ticks.push(roundNumber(niceTickExtent[0] - interval, intervalPrecision));\n } else {\n ticks.push(extent[0]);\n }\n }\n\n var tick = niceTickExtent[0];\n\n while (tick <= niceTickExtent[1]) {\n ticks.push(tick); // Avoid rounding error\n\n tick = roundNumber(tick + interval, intervalPrecision);\n\n if (tick === ticks[ticks.length - 1]) {\n // Consider out of safe float point, e.g.,\n // -3711126.9907707 + 2e-10 === -3711126.9907707\n break;\n }\n\n if (ticks.length > safeLimit) {\n return [];\n }\n } // Consider this case: the last item of ticks is smaller\n // than niceTickExtent[1] and niceTickExtent[1] === extent[1].\n\n\n var lastNiceTick = ticks.length ? ticks[ticks.length - 1] : niceTickExtent[1];\n\n if (extent[1] > lastNiceTick) {\n if (expandToNicedExtent) {\n ticks.push(roundNumber(lastNiceTick + interval, intervalPrecision));\n } else {\n ticks.push(extent[1]);\n }\n }\n\n return ticks;\n },\n\n /**\n * @param {number} [splitNumber=5]\n * @return {Array.>}\n */\n getMinorTicks: function (splitNumber) {\n var ticks = this.getTicks(true);\n var minorTicks = [];\n var extent = this.getExtent();\n\n for (var i = 1; i < ticks.length; i++) {\n var nextTick = ticks[i];\n var prevTick = ticks[i - 1];\n var count = 0;\n var minorTicksGroup = [];\n var interval = nextTick - prevTick;\n var minorInterval = interval / splitNumber;\n\n while (count < splitNumber - 1) {\n var minorTick = numberUtil.round(prevTick + (count + 1) * minorInterval); // For the first and last interval. The count may be less than splitNumber.\n\n if (minorTick > extent[0] && minorTick < extent[1]) {\n minorTicksGroup.push(minorTick);\n }\n\n count++;\n }\n\n minorTicks.push(minorTicksGroup);\n }\n\n return minorTicks;\n },\n\n /**\n * @param {number} data\n * @param {Object} [opt]\n * @param {number|string} [opt.precision] If 'auto', use nice presision.\n * @param {boolean} [opt.pad] returns 1.50 but not 1.5 if precision is 2.\n * @return {string}\n */\n getLabel: function (data, opt) {\n if (data == null) {\n return '';\n }\n\n var precision = opt && opt.precision;\n\n if (precision == null) {\n precision = numberUtil.getPrecisionSafe(data) || 0;\n } else if (precision === 'auto') {\n // Should be more precise then tick.\n precision = this._intervalPrecision;\n } // (1) If `precision` is set, 12.005 should be display as '12.00500'.\n // (2) Use roundNumber (toFixed) to avoid scientific notation like '3.5e-7'.\n\n\n data = roundNumber(data, precision, true);\n return formatUtil.addCommas(data);\n },\n\n /**\n * Update interval and extent of intervals for nice ticks\n *\n * @param {number} [splitNumber = 5] Desired number of ticks\n * @param {number} [minInterval]\n * @param {number} [maxInterval]\n */\n niceTicks: function (splitNumber, minInterval, maxInterval) {\n splitNumber = splitNumber || 5;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n\n if (!isFinite(span)) {\n return;\n } // User may set axis min 0 and data are all negative\n // FIXME If it needs to reverse ?\n\n\n if (span < 0) {\n span = -span;\n extent.reverse();\n }\n\n var result = helper.intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval);\n this._intervalPrecision = result.intervalPrecision;\n this._interval = result.interval;\n this._niceExtent = result.niceTickExtent;\n },\n\n /**\n * Nice extent.\n * @param {Object} opt\n * @param {number} [opt.splitNumber = 5] Given approx tick number\n * @param {boolean} [opt.fixMin=false]\n * @param {boolean} [opt.fixMax=false]\n * @param {boolean} [opt.minInterval]\n * @param {boolean} [opt.maxInterval]\n */\n niceExtent: function (opt) {\n var extent = this._extent; // If extent start and end are same, expand them\n\n if (extent[0] === extent[1]) {\n if (extent[0] !== 0) {\n // Expand extent\n var expandSize = extent[0]; // In the fowllowing case\n // Axis has been fixed max 100\n // Plus data are all 100 and axis extent are [100, 100].\n // Extend to the both side will cause expanded max is larger than fixed max.\n // So only expand to the smaller side.\n\n if (!opt.fixMax) {\n extent[1] += expandSize / 2;\n extent[0] -= expandSize / 2;\n } else {\n extent[0] -= expandSize / 2;\n }\n } else {\n extent[1] = 1;\n }\n }\n\n var span = extent[1] - extent[0]; // If there are no data and extent are [Infinity, -Infinity]\n\n if (!isFinite(span)) {\n extent[0] = 0;\n extent[1] = 1;\n }\n\n this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); // var extent = this._extent;\n\n var interval = this._interval;\n\n if (!opt.fixMin) {\n extent[0] = roundNumber(Math.floor(extent[0] / interval) * interval);\n }\n\n if (!opt.fixMax) {\n extent[1] = roundNumber(Math.ceil(extent[1] / interval) * interval);\n }\n }\n});\n/**\n * @return {module:echarts/scale/Time}\n */\n\nIntervalScale.create = function () {\n return new IntervalScale();\n};\n\nvar _default = IntervalScale;\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 Scale = require(\"./Scale\");\n\nvar numberUtil = require(\"../util/number\");\n\nvar IntervalScale = require(\"./Interval\");\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 * Log scale\n * @module echarts/scale/Log\n */\n// Use some method of IntervalScale\nvar scaleProto = Scale.prototype;\nvar intervalScaleProto = IntervalScale.prototype;\nvar getPrecisionSafe = numberUtil.getPrecisionSafe;\nvar roundingErrorFix = numberUtil.round;\nvar mathFloor = Math.floor;\nvar mathCeil = Math.ceil;\nvar mathPow = Math.pow;\nvar mathLog = Math.log;\nvar LogScale = Scale.extend({\n type: 'log',\n base: 10,\n $constructor: function () {\n Scale.apply(this, arguments);\n this._originalScale = new IntervalScale();\n },\n\n /**\n * @param {boolean} [expandToNicedExtent=false] If expand the ticks to niced extent.\n * @return {Array.}\n */\n getTicks: function (expandToNicedExtent) {\n var originalScale = this._originalScale;\n var extent = this._extent;\n var originalExtent = originalScale.getExtent();\n return zrUtil.map(intervalScaleProto.getTicks.call(this, expandToNicedExtent), function (val) {\n var powVal = numberUtil.round(mathPow(this.base, val)); // Fix #4158\n\n powVal = val === extent[0] && originalScale.__fixMin ? fixRoundingError(powVal, originalExtent[0]) : powVal;\n powVal = val === extent[1] && originalScale.__fixMax ? fixRoundingError(powVal, originalExtent[1]) : powVal;\n return powVal;\n }, this);\n },\n\n /**\n * @param {number} splitNumber\n * @return {Array.>}\n */\n getMinorTicks: intervalScaleProto.getMinorTicks,\n\n /**\n * @param {number} val\n * @return {string}\n */\n getLabel: intervalScaleProto.getLabel,\n\n /**\n * @param {number} val\n * @return {number}\n */\n scale: function (val) {\n val = scaleProto.scale.call(this, val);\n return mathPow(this.base, val);\n },\n\n /**\n * @param {number} start\n * @param {number} end\n */\n setExtent: function (start, end) {\n var base = this.base;\n start = mathLog(start) / mathLog(base);\n end = mathLog(end) / mathLog(base);\n intervalScaleProto.setExtent.call(this, start, end);\n },\n\n /**\n * @return {number} end\n */\n getExtent: function () {\n var base = this.base;\n var extent = scaleProto.getExtent.call(this);\n extent[0] = mathPow(base, extent[0]);\n extent[1] = mathPow(base, extent[1]); // Fix #4158\n\n var originalScale = this._originalScale;\n var originalExtent = originalScale.getExtent();\n originalScale.__fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));\n originalScale.__fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));\n return extent;\n },\n\n /**\n * @param {Array.} extent\n */\n unionExtent: function (extent) {\n this._originalScale.unionExtent(extent);\n\n var base = this.base;\n extent[0] = mathLog(extent[0]) / mathLog(base);\n extent[1] = mathLog(extent[1]) / mathLog(base);\n scaleProto.unionExtent.call(this, extent);\n },\n\n /**\n * @override\n */\n unionExtentFromData: function (data, dim) {\n // TODO\n // filter value that <= 0\n this.unionExtent(data.getApproximateExtent(dim));\n },\n\n /**\n * Update interval and extent of intervals for nice ticks\n * @param {number} [approxTickNum = 10] Given approx tick number\n */\n niceTicks: function (approxTickNum) {\n approxTickNum = approxTickNum || 10;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n\n if (span === Infinity || span <= 0) {\n return;\n }\n\n var interval = numberUtil.quantity(span);\n var err = approxTickNum / span * interval; // Filter ticks to get closer to the desired count.\n\n if (err <= 0.5) {\n interval *= 10;\n } // Interval should be integer\n\n\n while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {\n interval *= 10;\n }\n\n var niceExtent = [numberUtil.round(mathCeil(extent[0] / interval) * interval), numberUtil.round(mathFloor(extent[1] / interval) * interval)];\n this._interval = interval;\n this._niceExtent = niceExtent;\n },\n\n /**\n * Nice extent.\n * @override\n */\n niceExtent: function (opt) {\n intervalScaleProto.niceExtent.call(this, opt);\n var originalScale = this._originalScale;\n originalScale.__fixMin = opt.fixMin;\n originalScale.__fixMax = opt.fixMax;\n }\n});\nzrUtil.each(['contain', 'normalize'], function (methodName) {\n LogScale.prototype[methodName] = function (val) {\n val = mathLog(val) / mathLog(this.base);\n return scaleProto[methodName].call(this, val);\n };\n});\n\nLogScale.create = function () {\n return new LogScale();\n};\n\nfunction fixRoundingError(val, originalVal) {\n return roundingErrorFix(val, getPrecisionSafe(originalVal));\n}\n\nvar _default = LogScale;\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 Scale = require(\"./Scale\");\n\nvar OrdinalMeta = require(\"../data/OrdinalMeta\");\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 * Linear continuous scale\n * @module echarts/coord/scale/Ordinal\n *\n * http://en.wikipedia.org/wiki/Level_of_measurement\n */\n// FIXME only one data\nvar scaleProto = Scale.prototype;\nvar OrdinalScale = Scale.extend({\n type: 'ordinal',\n\n /**\n * @param {module:echarts/data/OrdianlMeta|Array.} ordinalMeta\n */\n init: function (ordinalMeta, extent) {\n // Caution: Should not use instanceof, consider ec-extensions using\n // import approach to get OrdinalMeta class.\n if (!ordinalMeta || zrUtil.isArray(ordinalMeta)) {\n ordinalMeta = new OrdinalMeta({\n categories: ordinalMeta\n });\n }\n\n this._ordinalMeta = ordinalMeta;\n this._extent = extent || [0, ordinalMeta.categories.length - 1];\n },\n parse: function (val) {\n return typeof val === 'string' ? this._ordinalMeta.getOrdinal(val) // val might be float.\n : Math.round(val);\n },\n contain: function (rank) {\n rank = this.parse(rank);\n return scaleProto.contain.call(this, rank) && this._ordinalMeta.categories[rank] != null;\n },\n\n /**\n * Normalize given rank or name to linear [0, 1]\n * @param {number|string} [val]\n * @return {number}\n */\n normalize: function (val) {\n return scaleProto.normalize.call(this, this.parse(val));\n },\n scale: function (val) {\n return Math.round(scaleProto.scale.call(this, val));\n },\n\n /**\n * @return {Array}\n */\n getTicks: function () {\n var ticks = [];\n var extent = this._extent;\n var rank = extent[0];\n\n while (rank <= extent[1]) {\n ticks.push(rank);\n rank++;\n }\n\n return ticks;\n },\n\n /**\n * Get item on rank n\n * @param {number} n\n * @return {string}\n */\n getLabel: function (n) {\n if (!this.isBlank()) {\n // Note that if no data, ordinalMeta.categories is an empty array.\n return this._ordinalMeta.categories[n];\n }\n },\n\n /**\n * @return {number}\n */\n count: function () {\n return this._extent[1] - this._extent[0] + 1;\n },\n\n /**\n * @override\n */\n unionExtentFromData: function (data, dim) {\n this.unionExtent(data.getApproximateExtent(dim));\n },\n getOrdinalMeta: function () {\n return this._ordinalMeta;\n },\n niceTicks: zrUtil.noop,\n niceExtent: zrUtil.noop\n});\n/**\n * @return {module:echarts/scale/Time}\n */\n\nOrdinalScale.create = function () {\n return new OrdinalScale();\n};\n\nvar _default = OrdinalScale;\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 clazzUtil = require(\"../util/clazz\");\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 * // Scale class management\n * @module echarts/scale/Scale\n */\n\n/**\n * @param {Object} [setting]\n */\nfunction Scale(setting) {\n this._setting = setting || {};\n /**\n * Extent\n * @type {Array.}\n * @protected\n */\n\n this._extent = [Infinity, -Infinity];\n /**\n * Step is calculated in adjustExtent\n * @type {Array.}\n * @protected\n */\n\n this._interval = 0;\n this.init && this.init.apply(this, arguments);\n}\n/**\n * Parse input val to valid inner number.\n * @param {*} val\n * @return {number}\n */\n\n\nScale.prototype.parse = function (val) {\n // Notice: This would be a trap here, If the implementation\n // of this method depends on extent, and this method is used\n // before extent set (like in dataZoom), it would be wrong.\n // Nevertheless, parse does not depend on extent generally.\n return val;\n};\n\nScale.prototype.getSetting = function (name) {\n return this._setting[name];\n};\n\nScale.prototype.contain = function (val) {\n var extent = this._extent;\n return val >= extent[0] && val <= extent[1];\n};\n/**\n * Normalize value to linear [0, 1], return 0.5 if extent span is 0\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.normalize = function (val) {\n var extent = this._extent;\n\n if (extent[1] === extent[0]) {\n return 0.5;\n }\n\n return (val - extent[0]) / (extent[1] - extent[0]);\n};\n/**\n * Scale normalized value\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.scale = function (val) {\n var extent = this._extent;\n return val * (extent[1] - extent[0]) + extent[0];\n};\n/**\n * Set extent from data\n * @param {Array.} other\n */\n\n\nScale.prototype.unionExtent = function (other) {\n var extent = this._extent;\n other[0] < extent[0] && (extent[0] = other[0]);\n other[1] > extent[1] && (extent[1] = other[1]); // not setExtent because in log axis it may transformed to power\n // this.setExtent(extent[0], extent[1]);\n};\n/**\n * Set extent from data\n * @param {module:echarts/data/List} data\n * @param {string} dim\n */\n\n\nScale.prototype.unionExtentFromData = function (data, dim) {\n this.unionExtent(data.getApproximateExtent(dim));\n};\n/**\n * Get extent\n * @return {Array.}\n */\n\n\nScale.prototype.getExtent = function () {\n return this._extent.slice();\n};\n/**\n * Set extent\n * @param {number} start\n * @param {number} end\n */\n\n\nScale.prototype.setExtent = function (start, end) {\n var thisExtent = this._extent;\n\n if (!isNaN(start)) {\n thisExtent[0] = start;\n }\n\n if (!isNaN(end)) {\n thisExtent[1] = end;\n }\n};\n/**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\n\n\nScale.prototype.isBlank = function () {\n return this._isBlank;\n},\n/**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\nScale.prototype.setBlank = function (isBlank) {\n this._isBlank = isBlank;\n};\n/**\n * @abstract\n * @param {*} tick\n * @return {string} label of the tick.\n */\n\nScale.prototype.getLabel = null;\nclazzUtil.enableClassExtend(Scale);\nclazzUtil.enableClassManagement(Scale, {\n registerWhenExtend: true\n});\nvar _default = Scale;\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 numberUtil = require(\"../util/number\");\n\nvar formatUtil = require(\"../util/format\");\n\nvar scaleHelper = require(\"./helper\");\n\nvar IntervalScale = require(\"./Interval\");\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* A third-party license is embeded for some of the code in this file:\n* The \"scaleLevels\" was originally copied from \"d3.js\" with some\n* modifications made for this project.\n* (See more details in the comment on the definition of \"scaleLevels\" below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\n// [About UTC and local time zone]:\n// In most cases, `number.parseDate` will treat input data string as local time\n// (except time zone is specified in time string). And `format.formateTime` returns\n// local time by default. option.useUTC is false by default. This design have\n// concidered these common case:\n// (1) Time that is persistent in server is in UTC, but it is needed to be diplayed\n// in local time by default.\n// (2) By default, the input data string (e.g., '2011-01-02') should be displayed\n// as its original time, without any time difference.\nvar intervalScaleProto = IntervalScale.prototype;\nvar mathCeil = Math.ceil;\nvar mathFloor = Math.floor;\nvar ONE_SECOND = 1000;\nvar ONE_MINUTE = ONE_SECOND * 60;\nvar ONE_HOUR = ONE_MINUTE * 60;\nvar ONE_DAY = ONE_HOUR * 24; // FIXME 公用?\n\nvar bisect = function (a, x, lo, hi) {\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n\n if (a[mid][1] < x) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n\n return lo;\n};\n/**\n * @alias module:echarts/coord/scale/Time\n * @constructor\n */\n\n\nvar TimeScale = IntervalScale.extend({\n type: 'time',\n\n /**\n * @override\n */\n getLabel: function (val) {\n var stepLvl = this._stepLvl;\n var date = new Date(val);\n return formatUtil.formatTime(stepLvl[0], date, this.getSetting('useUTC'));\n },\n\n /**\n * @override\n */\n niceExtent: function (opt) {\n var extent = this._extent; // If extent start and end are same, expand them\n\n if (extent[0] === extent[1]) {\n // Expand extent\n extent[0] -= ONE_DAY;\n extent[1] += ONE_DAY;\n } // If there are no data and extent are [Infinity, -Infinity]\n\n\n if (extent[1] === -Infinity && extent[0] === Infinity) {\n var d = new Date();\n extent[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate());\n extent[0] = extent[1] - ONE_DAY;\n }\n\n this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); // var extent = this._extent;\n\n var interval = this._interval;\n\n if (!opt.fixMin) {\n extent[0] = numberUtil.round(mathFloor(extent[0] / interval) * interval);\n }\n\n if (!opt.fixMax) {\n extent[1] = numberUtil.round(mathCeil(extent[1] / interval) * interval);\n }\n },\n\n /**\n * @override\n */\n niceTicks: function (approxTickNum, minInterval, maxInterval) {\n approxTickNum = approxTickNum || 10;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n var approxInterval = span / approxTickNum;\n\n if (minInterval != null && approxInterval < minInterval) {\n approxInterval = minInterval;\n }\n\n if (maxInterval != null && approxInterval > maxInterval) {\n approxInterval = maxInterval;\n }\n\n var scaleLevelsLen = scaleLevels.length;\n var idx = bisect(scaleLevels, approxInterval, 0, scaleLevelsLen);\n var level = scaleLevels[Math.min(idx, scaleLevelsLen - 1)];\n var interval = level[1]; // Same with interval scale if span is much larger than 1 year\n\n if (level[0] === 'year') {\n var yearSpan = span / interval; // From \"Nice Numbers for Graph Labels\" of Graphic Gems\n // var niceYearSpan = numberUtil.nice(yearSpan, false);\n\n var yearStep = numberUtil.nice(yearSpan / approxTickNum, true);\n interval *= yearStep;\n }\n\n var timezoneOffset = this.getSetting('useUTC') ? 0 : new Date(+extent[0] || +extent[1]).getTimezoneOffset() * 60 * 1000;\n var niceExtent = [Math.round(mathCeil((extent[0] - timezoneOffset) / interval) * interval + timezoneOffset), Math.round(mathFloor((extent[1] - timezoneOffset) / interval) * interval + timezoneOffset)];\n scaleHelper.fixExtent(niceExtent, extent);\n this._stepLvl = level; // Interval will be used in getTicks\n\n this._interval = interval;\n this._niceExtent = niceExtent;\n },\n parse: function (val) {\n // val might be float.\n return +numberUtil.parseDate(val);\n }\n});\nzrUtil.each(['contain', 'normalize'], function (methodName) {\n TimeScale.prototype[methodName] = function (val) {\n return intervalScaleProto[methodName].call(this, this.parse(val));\n };\n});\n/**\n * This implementation was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n */\n\nvar scaleLevels = [// Format interval\n['hh:mm:ss', ONE_SECOND], // 1s\n['hh:mm:ss', ONE_SECOND * 5], // 5s\n['hh:mm:ss', ONE_SECOND * 10], // 10s\n['hh:mm:ss', ONE_SECOND * 15], // 15s\n['hh:mm:ss', ONE_SECOND * 30], // 30s\n['hh:mm\\nMM-dd', ONE_MINUTE], // 1m\n['hh:mm\\nMM-dd', ONE_MINUTE * 5], // 5m\n['hh:mm\\nMM-dd', ONE_MINUTE * 10], // 10m\n['hh:mm\\nMM-dd', ONE_MINUTE * 15], // 15m\n['hh:mm\\nMM-dd', ONE_MINUTE * 30], // 30m\n['hh:mm\\nMM-dd', ONE_HOUR], // 1h\n['hh:mm\\nMM-dd', ONE_HOUR * 2], // 2h\n['hh:mm\\nMM-dd', ONE_HOUR * 6], // 6h\n['hh:mm\\nMM-dd', ONE_HOUR * 12], // 12h\n['MM-dd\\nyyyy', ONE_DAY], // 1d\n['MM-dd\\nyyyy', ONE_DAY * 2], // 2d\n['MM-dd\\nyyyy', ONE_DAY * 3], // 3d\n['MM-dd\\nyyyy', ONE_DAY * 4], // 4d\n['MM-dd\\nyyyy', ONE_DAY * 5], // 5d\n['MM-dd\\nyyyy', ONE_DAY * 6], // 6d\n['week', ONE_DAY * 7], // 7d\n['MM-dd\\nyyyy', ONE_DAY * 10], // 10d\n['week', ONE_DAY * 14], // 2w\n['week', ONE_DAY * 21], // 3w\n['month', ONE_DAY * 31], // 1M\n['week', ONE_DAY * 42], // 6w\n['month', ONE_DAY * 62], // 2M\n['week', ONE_DAY * 70], // 10w\n['quarter', ONE_DAY * 95], // 3M\n['month', ONE_DAY * 31 * 4], // 4M\n['month', ONE_DAY * 31 * 5], // 5M\n['half-year', ONE_DAY * 380 / 2], // 6M\n['month', ONE_DAY * 31 * 8], // 8M\n['month', ONE_DAY * 31 * 10], // 10M\n['year', ONE_DAY * 380] // 1Y\n];\n/**\n * @param {module:echarts/model/Model}\n * @return {module:echarts/scale/Time}\n */\n\nTimeScale.create = function (model) {\n return new TimeScale({\n useUTC: model.ecModel.get('useUTC')\n });\n};\n\nvar _default = TimeScale;\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 numberUtil = require(\"../util/number\");\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 * For testable.\n */\nvar roundNumber = numberUtil.round;\n/**\n * @param {Array.} extent Both extent[0] and extent[1] should be valid number.\n * Should be extent[0] < extent[1].\n * @param {number} splitNumber splitNumber should be >= 1.\n * @param {number} [minInterval]\n * @param {number} [maxInterval]\n * @return {Object} {interval, intervalPrecision, niceTickExtent}\n */\n\nfunction intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval) {\n var result = {};\n var span = extent[1] - extent[0];\n var interval = result.interval = numberUtil.nice(span / splitNumber, true);\n\n if (minInterval != null && interval < minInterval) {\n interval = result.interval = minInterval;\n }\n\n if (maxInterval != null && interval > maxInterval) {\n interval = result.interval = maxInterval;\n } // Tow more digital for tick.\n\n\n var precision = result.intervalPrecision = getIntervalPrecision(interval); // Niced extent inside original extent\n\n var niceTickExtent = result.niceTickExtent = [roundNumber(Math.ceil(extent[0] / interval) * interval, precision), roundNumber(Math.floor(extent[1] / interval) * interval, precision)];\n fixExtent(niceTickExtent, extent);\n return result;\n}\n/**\n * @param {number} interval\n * @return {number} interval precision\n */\n\n\nfunction getIntervalPrecision(interval) {\n // Tow more digital for tick.\n return numberUtil.getPrecisionSafe(interval) + 2;\n}\n\nfunction clamp(niceTickExtent, idx, extent) {\n niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]);\n} // In some cases (e.g., splitNumber is 1), niceTickExtent may be out of extent.\n\n\nfunction fixExtent(niceTickExtent, extent) {\n !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent[0]);\n !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent[1]);\n clamp(niceTickExtent, 0, extent);\n clamp(niceTickExtent, 1, extent);\n\n if (niceTickExtent[0] > niceTickExtent[1]) {\n niceTickExtent[0] = niceTickExtent[1];\n }\n}\n\nexports.intervalScaleNiceTicks = intervalScaleNiceTicks;\nexports.getIntervalPrecision = getIntervalPrecision;\nexports.fixExtent = fixExtent;","\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 _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar map = _util.map;\nvar isFunction = _util.isFunction;\nvar createHashMap = _util.createHashMap;\nvar noop = _util.noop;\n\nvar _task = require(\"./task\");\n\nvar createTask = _task.createTask;\n\nvar _component = require(\"../util/component\");\n\nvar getUID = _component.getUID;\n\nvar GlobalModel = require(\"../model/Global\");\n\nvar ExtensionAPI = require(\"../ExtensionAPI\");\n\nvar _model = require(\"../util/model\");\n\nvar normalizeToArray = _model.normalizeToArray;\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/stream/Scheduler\n */\n\n/**\n * @constructor\n */\nfunction Scheduler(ecInstance, api, dataProcessorHandlers, visualHandlers) {\n this.ecInstance = ecInstance;\n this.api = api;\n this.unfinished; // Fix current processors in case that in some rear cases that\n // processors might be registered after echarts instance created.\n // Register processors incrementally for a echarts instance is\n // not supported by this stream architecture.\n\n var dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice();\n var visualHandlers = this._visualHandlers = visualHandlers.slice();\n this._allHandlers = dataProcessorHandlers.concat(visualHandlers);\n /**\n * @private\n * @type {\n * [handlerUID: string]: {\n * seriesTaskMap?: {\n * [seriesUID: string]: Task\n * },\n * overallTask?: Task\n * }\n * }\n */\n\n this._stageTaskMap = createHashMap();\n}\n\nvar proto = Scheduler.prototype;\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} payload\n */\n\nproto.restoreData = function (ecModel, payload) {\n // TODO: Only restore needed series and components, but not all components.\n // Currently `restoreData` of all of the series and component will be called.\n // But some independent components like `title`, `legend`, `graphic`, `toolbox`,\n // `tooltip`, `axisPointer`, etc, do not need series refresh when `setOption`,\n // and some components like coordinate system, axes, dataZoom, visualMap only\n // need their target series refresh.\n // (1) If we are implementing this feature some day, we should consider these cases:\n // if a data processor depends on a component (e.g., dataZoomProcessor depends\n // on the settings of `dataZoom`), it should be re-performed if the component\n // is modified by `setOption`.\n // (2) If a processor depends on sevral series, speicified by its `getTargetSeries`,\n // it should be re-performed when the result array of `getTargetSeries` changed.\n // We use `dependencies` to cover these issues.\n // (3) How to update target series when coordinate system related components modified.\n // TODO: simply the dirty mechanism? Check whether only the case here can set tasks dirty,\n // and this case all of the tasks will be set as dirty.\n ecModel.restoreData(payload); // Theoretically an overall task not only depends on each of its target series, but also\n // depends on all of the series.\n // The overall task is not in pipeline, and `ecModel.restoreData` only set pipeline tasks\n // dirty. If `getTargetSeries` of an overall task returns nothing, we should also ensure\n // that the overall task is set as dirty and to be performed, otherwise it probably cause\n // state chaos. So we have to set dirty of all of the overall tasks manually, otherwise it\n // probably cause state chaos (consider `dataZoomProcessor`).\n\n this._stageTaskMap.each(function (taskRecord) {\n var overallTask = taskRecord.overallTask;\n overallTask && overallTask.dirty();\n });\n}; // If seriesModel provided, incremental threshold is check by series data.\n\n\nproto.getPerformArgs = function (task, isBlock) {\n // For overall task\n if (!task.__pipeline) {\n return;\n }\n\n var pipeline = this._pipelineMap.get(task.__pipeline.id);\n\n var pCtx = pipeline.context;\n var incremental = !isBlock && pipeline.progressiveEnabled && (!pCtx || pCtx.progressiveRender) && task.__idxInPipeline > pipeline.blockIndex;\n var step = incremental ? pipeline.step : null;\n var modDataCount = pCtx && pCtx.modDataCount;\n var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null;\n return {\n step: step,\n modBy: modBy,\n modDataCount: modDataCount\n };\n};\n\nproto.getPipeline = function (pipelineId) {\n return this._pipelineMap.get(pipelineId);\n};\n/**\n * Current, progressive rendering starts from visual and layout.\n * Always detect render mode in the same stage, avoiding that incorrect\n * detection caused by data filtering.\n * Caution:\n * `updateStreamModes` use `seriesModel.getData()`.\n */\n\n\nproto.updateStreamModes = function (seriesModel, view) {\n var pipeline = this._pipelineMap.get(seriesModel.uid);\n\n var data = seriesModel.getData();\n var dataLen = data.count(); // `progressiveRender` means that can render progressively in each\n // animation frame. Note that some types of series do not provide\n // `view.incrementalPrepareRender` but support `chart.appendData`. We\n // use the term `incremental` but not `progressive` to describe the\n // case that `chart.appendData`.\n\n var progressiveRender = pipeline.progressiveEnabled && view.incrementalPrepareRender && dataLen >= pipeline.threshold;\n var large = seriesModel.get('large') && dataLen >= seriesModel.get('largeThreshold'); // TODO: modDataCount should not updated if `appendData`, otherwise cause whole repaint.\n // see `test/candlestick-large3.html`\n\n var modDataCount = seriesModel.get('progressiveChunkMode') === 'mod' ? dataLen : null;\n seriesModel.pipelineContext = pipeline.context = {\n progressiveRender: progressiveRender,\n modDataCount: modDataCount,\n large: large\n };\n};\n\nproto.restorePipelines = function (ecModel) {\n var scheduler = this;\n var pipelineMap = scheduler._pipelineMap = createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var progressive = seriesModel.getProgressive();\n var pipelineId = seriesModel.uid;\n pipelineMap.set(pipelineId, {\n id: pipelineId,\n head: null,\n tail: null,\n threshold: seriesModel.getProgressiveThreshold(),\n progressiveEnabled: progressive && !(seriesModel.preventIncremental && seriesModel.preventIncremental()),\n blockIndex: -1,\n step: Math.round(progressive || 700),\n count: 0\n });\n pipe(scheduler, seriesModel, seriesModel.dataTask);\n });\n};\n\nproto.prepareStageTasks = function () {\n var stageTaskMap = this._stageTaskMap;\n var ecModel = this.ecInstance.getModel();\n var api = this.api;\n each(this._allHandlers, function (handler) {\n var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, []);\n handler.reset && createSeriesStageTask(this, handler, record, ecModel, api);\n handler.overallReset && createOverallStageTask(this, handler, record, ecModel, api);\n }, this);\n};\n\nproto.prepareView = function (view, model, ecModel, api) {\n var renderTask = view.renderTask;\n var context = renderTask.context;\n context.model = model;\n context.ecModel = ecModel;\n context.api = api;\n renderTask.__block = !view.incrementalPrepareRender;\n pipe(this, model, renderTask);\n};\n\nproto.performDataProcessorTasks = function (ecModel, payload) {\n // If we do not use `block` here, it should be considered when to update modes.\n performStageTasks(this, this._dataProcessorHandlers, ecModel, payload, {\n block: true\n });\n}; // opt\n// opt.visualType: 'visual' or 'layout'\n// opt.setDirty\n\n\nproto.performVisualTasks = function (ecModel, payload, opt) {\n performStageTasks(this, this._visualHandlers, ecModel, payload, opt);\n};\n\nfunction performStageTasks(scheduler, stageHandlers, ecModel, payload, opt) {\n opt = opt || {};\n var unfinished;\n each(stageHandlers, function (stageHandler, idx) {\n if (opt.visualType && opt.visualType !== stageHandler.visualType) {\n return;\n }\n\n var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid);\n\n var seriesTaskMap = stageHandlerRecord.seriesTaskMap;\n var overallTask = stageHandlerRecord.overallTask;\n\n if (overallTask) {\n var overallNeedDirty;\n var agentStubMap = overallTask.agentStubMap;\n agentStubMap.each(function (stub) {\n if (needSetDirty(opt, stub)) {\n stub.dirty();\n overallNeedDirty = true;\n }\n });\n overallNeedDirty && overallTask.dirty();\n updatePayload(overallTask, payload);\n var performArgs = scheduler.getPerformArgs(overallTask, opt.block); // Execute stubs firstly, which may set the overall task dirty,\n // then execute the overall task. And stub will call seriesModel.setData,\n // which ensures that in the overallTask seriesModel.getData() will not\n // return incorrect data.\n\n agentStubMap.each(function (stub) {\n stub.perform(performArgs);\n });\n unfinished |= overallTask.perform(performArgs);\n } else if (seriesTaskMap) {\n seriesTaskMap.each(function (task, pipelineId) {\n if (needSetDirty(opt, task)) {\n task.dirty();\n }\n\n var performArgs = scheduler.getPerformArgs(task, opt.block); // FIXME\n // if intending to decalare `performRawSeries` in handlers, only\n // stream-independent (specifically, data item independent) operations can be\n // performed. Because is a series is filtered, most of the tasks will not\n // be performed. A stream-dependent operation probably cause wrong biz logic.\n // Perhaps we should not provide a separate callback for this case instead\n // of providing the config `performRawSeries`. The stream-dependent operaions\n // and stream-independent operations should better not be mixed.\n\n performArgs.skip = !stageHandler.performRawSeries && ecModel.isSeriesFiltered(task.context.model);\n updatePayload(task, payload);\n unfinished |= task.perform(performArgs);\n });\n }\n });\n\n function needSetDirty(opt, task) {\n return opt.setDirty && (!opt.dirtyMap || opt.dirtyMap.get(task.__pipeline.id));\n }\n\n scheduler.unfinished |= unfinished;\n}\n\nproto.performSeriesTasks = function (ecModel) {\n var unfinished;\n ecModel.eachSeries(function (seriesModel) {\n // Progress to the end for dataInit and dataRestore.\n unfinished |= seriesModel.dataTask.perform();\n });\n this.unfinished |= unfinished;\n};\n\nproto.plan = function () {\n // Travel pipelines, check block.\n this._pipelineMap.each(function (pipeline) {\n var task = pipeline.tail;\n\n do {\n if (task.__block) {\n pipeline.blockIndex = task.__idxInPipeline;\n break;\n }\n\n task = task.getUpstream();\n } while (task);\n });\n};\n\nvar updatePayload = proto.updatePayload = function (task, payload) {\n payload !== 'remain' && (task.context.payload = payload);\n};\n\nfunction createSeriesStageTask(scheduler, stageHandler, stageHandlerRecord, ecModel, api) {\n var seriesTaskMap = stageHandlerRecord.seriesTaskMap || (stageHandlerRecord.seriesTaskMap = createHashMap());\n var seriesType = stageHandler.seriesType;\n var getTargetSeries = stageHandler.getTargetSeries; // If a stageHandler should cover all series, `createOnAllSeries` should be declared mandatorily,\n // to avoid some typo or abuse. Otherwise if an extension do not specify a `seriesType`,\n // it works but it may cause other irrelevant charts blocked.\n\n if (stageHandler.createOnAllSeries) {\n ecModel.eachRawSeries(create);\n } else if (seriesType) {\n ecModel.eachRawSeriesByType(seriesType, create);\n } else if (getTargetSeries) {\n getTargetSeries(ecModel, api).each(create);\n }\n\n function create(seriesModel) {\n var pipelineId = seriesModel.uid; // Init tasks for each seriesModel only once.\n // Reuse original task instance.\n\n var task = seriesTaskMap.get(pipelineId) || seriesTaskMap.set(pipelineId, createTask({\n plan: seriesTaskPlan,\n reset: seriesTaskReset,\n count: seriesTaskCount\n }));\n task.context = {\n model: seriesModel,\n ecModel: ecModel,\n api: api,\n useClearVisual: stageHandler.isVisual && !stageHandler.isLayout,\n plan: stageHandler.plan,\n reset: stageHandler.reset,\n scheduler: scheduler\n };\n pipe(scheduler, seriesModel, task);\n } // Clear unused series tasks.\n\n\n var pipelineMap = scheduler._pipelineMap;\n seriesTaskMap.each(function (task, pipelineId) {\n if (!pipelineMap.get(pipelineId)) {\n task.dispose();\n seriesTaskMap.removeKey(pipelineId);\n }\n });\n}\n\nfunction createOverallStageTask(scheduler, stageHandler, stageHandlerRecord, ecModel, api) {\n var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask // For overall task, the function only be called on reset stage.\n || createTask({\n reset: overallTaskReset\n });\n overallTask.context = {\n ecModel: ecModel,\n api: api,\n overallReset: stageHandler.overallReset,\n scheduler: scheduler\n }; // Reuse orignal stubs.\n\n var agentStubMap = overallTask.agentStubMap = overallTask.agentStubMap || createHashMap();\n var seriesType = stageHandler.seriesType;\n var getTargetSeries = stageHandler.getTargetSeries;\n var overallProgress = true;\n var modifyOutputEnd = stageHandler.modifyOutputEnd; // An overall task with seriesType detected or has `getTargetSeries`, we add\n // stub in each pipelines, it will set the overall task dirty when the pipeline\n // progress. Moreover, to avoid call the overall task each frame (too frequent),\n // we set the pipeline block.\n\n if (seriesType) {\n ecModel.eachRawSeriesByType(seriesType, createStub);\n } else if (getTargetSeries) {\n getTargetSeries(ecModel, api).each(createStub);\n } // Otherwise, (usually it is legancy case), the overall task will only be\n // executed when upstream dirty. Otherwise the progressive rendering of all\n // pipelines will be disabled unexpectedly. But it still needs stubs to receive\n // dirty info from upsteam.\n else {\n overallProgress = false;\n each(ecModel.getSeries(), createStub);\n }\n\n function createStub(seriesModel) {\n var pipelineId = seriesModel.uid;\n var stub = agentStubMap.get(pipelineId);\n\n if (!stub) {\n stub = agentStubMap.set(pipelineId, createTask({\n reset: stubReset,\n onDirty: stubOnDirty\n })); // When the result of `getTargetSeries` changed, the overallTask\n // should be set as dirty and re-performed.\n\n overallTask.dirty();\n }\n\n stub.context = {\n model: seriesModel,\n overallProgress: overallProgress,\n modifyOutputEnd: modifyOutputEnd\n };\n stub.agent = overallTask;\n stub.__block = overallProgress;\n pipe(scheduler, seriesModel, stub);\n } // Clear unused stubs.\n\n\n var pipelineMap = scheduler._pipelineMap;\n agentStubMap.each(function (stub, pipelineId) {\n if (!pipelineMap.get(pipelineId)) {\n stub.dispose(); // When the result of `getTargetSeries` changed, the overallTask\n // should be set as dirty and re-performed.\n\n overallTask.dirty();\n agentStubMap.removeKey(pipelineId);\n }\n });\n}\n\nfunction overallTaskReset(context) {\n context.overallReset(context.ecModel, context.api, context.payload);\n}\n\nfunction stubReset(context, upstreamContext) {\n return context.overallProgress && stubProgress;\n}\n\nfunction stubProgress() {\n this.agent.dirty();\n this.getDownstream().dirty();\n}\n\nfunction stubOnDirty() {\n this.agent && this.agent.dirty();\n}\n\nfunction seriesTaskPlan(context) {\n return context.plan && context.plan(context.model, context.ecModel, context.api, context.payload);\n}\n\nfunction seriesTaskReset(context) {\n if (context.useClearVisual) {\n context.data.clearAllVisual();\n }\n\n var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload));\n return resetDefines.length > 1 ? map(resetDefines, function (v, idx) {\n return makeSeriesTaskProgress(idx);\n }) : singleSeriesTaskProgress;\n}\n\nvar singleSeriesTaskProgress = makeSeriesTaskProgress(0);\n\nfunction makeSeriesTaskProgress(resetDefineIdx) {\n return function (params, context) {\n var data = context.data;\n var resetDefine = context.resetDefines[resetDefineIdx];\n\n if (resetDefine && resetDefine.dataEach) {\n for (var i = params.start; i < params.end; i++) {\n resetDefine.dataEach(data, i);\n }\n } else if (resetDefine && resetDefine.progress) {\n resetDefine.progress(params, data);\n }\n };\n}\n\nfunction seriesTaskCount(context) {\n return context.data.count();\n}\n\nfunction pipe(scheduler, seriesModel, task) {\n var pipelineId = seriesModel.uid;\n\n var pipeline = scheduler._pipelineMap.get(pipelineId);\n\n !pipeline.head && (pipeline.head = task);\n pipeline.tail && pipeline.tail.pipe(task);\n pipeline.tail = task;\n task.__idxInPipeline = pipeline.count++;\n task.__pipeline = pipeline;\n}\n\nScheduler.wrapStageHandler = function (stageHandler, visualType) {\n if (isFunction(stageHandler)) {\n stageHandler = {\n overallReset: stageHandler,\n seriesType: detectSeriseType(stageHandler)\n };\n }\n\n stageHandler.uid = getUID('stageHandler');\n visualType && (stageHandler.visualType = visualType);\n return stageHandler;\n};\n/**\n * Only some legacy stage handlers (usually in echarts extensions) are pure function.\n * To ensure that they can work normally, they should work in block mode, that is,\n * they should not be started util the previous tasks finished. So they cause the\n * progressive rendering disabled. We try to detect the series type, to narrow down\n * the block range to only the series type they concern, but not all series.\n */\n\n\nfunction detectSeriseType(legacyFunc) {\n seriesType = null;\n\n try {\n // Assume there is no async when calling `eachSeriesByType`.\n legacyFunc(ecModelMock, apiMock);\n } catch (e) {}\n\n return seriesType;\n}\n\nvar ecModelMock = {};\nvar apiMock = {};\nvar seriesType;\nmockMethods(ecModelMock, GlobalModel);\nmockMethods(apiMock, ExtensionAPI);\n\necModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function (type) {\n seriesType = type;\n};\n\necModelMock.eachComponent = function (cond) {\n if (cond.mainType === 'series' && cond.subType) {\n seriesType = cond.subType;\n }\n};\n\nfunction mockMethods(target, Clz) {\n /* eslint-disable */\n for (var name in Clz.prototype) {\n // Do not use hasOwnProperty\n target[name] = noop;\n }\n /* eslint-enable */\n\n}\n\nvar _default = Scheduler;\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 _util = require(\"zrender/lib/core/util\");\n\nvar assert = _util.assert;\nvar isArray = _util.isArray;\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\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 {Object} define\n * @return See the return of `createTask`.\n */\nfunction createTask(define) {\n return new Task(define);\n}\n/**\n * @constructor\n * @param {Object} define\n * @param {Function} define.reset Custom reset\n * @param {Function} [define.plan] Returns 'reset' indicate reset immediately.\n * @param {Function} [define.count] count is used to determin data task.\n * @param {Function} [define.onDirty] count is used to determin data task.\n */\n\n\nfunction Task(define) {\n define = define || {};\n this._reset = define.reset;\n this._plan = define.plan;\n this._count = define.count;\n this._onDirty = define.onDirty;\n this._dirty = true; // Context must be specified implicitly, to\n // avoid miss update context when model changed.\n\n this.context;\n}\n\nvar taskProto = Task.prototype;\n/**\n * @param {Object} performArgs\n * @param {number} [performArgs.step] Specified step.\n * @param {number} [performArgs.skip] Skip customer perform call.\n * @param {number} [performArgs.modBy] Sampling window size.\n * @param {number} [performArgs.modDataCount] Sampling count.\n */\n\ntaskProto.perform = function (performArgs) {\n var upTask = this._upstream;\n var skip = performArgs && performArgs.skip; // TODO some refactor.\n // Pull data. Must pull data each time, because context.data\n // may be updated by Series.setData.\n\n if (this._dirty && upTask) {\n var context = this.context;\n context.data = context.outputData = upTask.context.outputData;\n }\n\n if (this.__pipeline) {\n this.__pipeline.currentTask = this;\n }\n\n var planResult;\n\n if (this._plan && !skip) {\n planResult = this._plan(this.context);\n } // Support sharding by mod, which changes the render sequence and makes the rendered graphic\n // elements uniformed distributed when progress, especially when moving or zooming.\n\n\n var lastModBy = normalizeModBy(this._modBy);\n var lastModDataCount = this._modDataCount || 0;\n var modBy = normalizeModBy(performArgs && performArgs.modBy);\n var modDataCount = performArgs && performArgs.modDataCount || 0;\n\n if (lastModBy !== modBy || lastModDataCount !== modDataCount) {\n planResult = 'reset';\n }\n\n function normalizeModBy(val) {\n !(val >= 1) && (val = 1); // jshint ignore:line\n\n return val;\n }\n\n var forceFirstProgress;\n\n if (this._dirty || planResult === 'reset') {\n this._dirty = false;\n forceFirstProgress = reset(this, skip);\n }\n\n this._modBy = modBy;\n this._modDataCount = modDataCount;\n var step = performArgs && performArgs.step;\n\n if (upTask) {\n this._dueEnd = upTask._outputDueEnd;\n } // DataTask or overallTask\n else {\n this._dueEnd = this._count ? this._count(this.context) : Infinity;\n } // Note: Stubs, that its host overall task let it has progress, has progress.\n // If no progress, pass index from upstream to downstream each time plan called.\n\n\n if (this._progress) {\n var start = this._dueIndex;\n var end = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd);\n\n if (!skip && (forceFirstProgress || start < end)) {\n var progress = this._progress;\n\n if (isArray(progress)) {\n for (var i = 0; i < progress.length; i++) {\n doProgress(this, progress[i], start, end, modBy, modDataCount);\n }\n } else {\n doProgress(this, progress, start, end, modBy, modDataCount);\n }\n }\n\n this._dueIndex = end; // If no `outputDueEnd`, assume that output data and\n // input data is the same, so use `dueIndex` as `outputDueEnd`.\n\n var outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : end;\n this._outputDueEnd = outputDueEnd;\n } else {\n // (1) Some overall task has no progress.\n // (2) Stubs, that its host overall task do not let it has progress, has no progress.\n // This should always be performed so it can be passed to downstream.\n this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd;\n }\n\n return this.unfinished();\n};\n\nvar iterator = function () {\n var end;\n var current;\n var modBy;\n var modDataCount;\n var winCount;\n var it = {\n reset: function (s, e, sStep, sCount) {\n current = s;\n end = e;\n modBy = sStep;\n modDataCount = sCount;\n winCount = Math.ceil(modDataCount / modBy);\n it.next = modBy > 1 && modDataCount > 0 ? modNext : sequentialNext;\n }\n };\n return it;\n\n function sequentialNext() {\n return current < end ? current++ : null;\n }\n\n function modNext() {\n var dataIndex = current % winCount * modBy + Math.ceil(current / winCount);\n var result = current >= end ? null : dataIndex < modDataCount ? dataIndex // If modDataCount is smaller than data.count() (consider `appendData` case),\n // Use normal linear rendering mode.\n : current;\n current++;\n return result;\n }\n}();\n\ntaskProto.dirty = function () {\n this._dirty = true;\n this._onDirty && this._onDirty(this.context);\n};\n\nfunction doProgress(taskIns, progress, start, end, modBy, modDataCount) {\n iterator.reset(start, end, modBy, modDataCount);\n taskIns._callingProgress = progress;\n\n taskIns._callingProgress({\n start: start,\n end: end,\n count: end - start,\n next: iterator.next\n }, taskIns.context);\n}\n\nfunction reset(taskIns, skip) {\n taskIns._dueIndex = taskIns._outputDueEnd = taskIns._dueEnd = 0;\n taskIns._settedOutputEnd = null;\n var progress;\n var forceFirstProgress;\n\n if (!skip && taskIns._reset) {\n progress = taskIns._reset(taskIns.context);\n\n if (progress && progress.progress) {\n forceFirstProgress = progress.forceFirstProgress;\n progress = progress.progress;\n } // To simplify no progress checking, array must has item.\n\n\n if (isArray(progress) && !progress.length) {\n progress = null;\n }\n }\n\n taskIns._progress = progress;\n taskIns._modBy = taskIns._modDataCount = null;\n var downstream = taskIns._downstream;\n downstream && downstream.dirty();\n return forceFirstProgress;\n}\n/**\n * @return {boolean}\n */\n\n\ntaskProto.unfinished = function () {\n return this._progress && this._dueIndex < this._dueEnd;\n};\n/**\n * @param {Object} downTask The downstream task.\n * @return {Object} The downstream task.\n */\n\n\ntaskProto.pipe = function (downTask) {\n // If already downstream, do not dirty downTask.\n if (this._downstream !== downTask || this._dirty) {\n this._downstream = downTask;\n downTask._upstream = this;\n downTask.dirty();\n }\n};\n\ntaskProto.dispose = function () {\n if (this._disposed) {\n return;\n }\n\n this._upstream && (this._upstream._downstream = null);\n this._downstream && (this._downstream._upstream = null);\n this._dirty = false;\n this._disposed = true;\n};\n\ntaskProto.getUpstream = function () {\n return this._upstream;\n};\n\ntaskProto.getDownstream = function () {\n return this._downstream;\n};\n\ntaskProto.setOutputEnd = function (end) {\n // This only happend in dataTask, dataZoom, map, currently.\n // where dataZoom do not set end each time, but only set\n // when reset. So we should record the setted end, in case\n // that the stub of dataZoom perform again and earse the\n // setted end by upstream.\n this._outputDueEnd = this._settedOutputEnd = end;\n}; ///////////////////////////////////////////////////////////\n// For stream debug (Should be commented out after used!)\n// Usage: printTask(this, 'begin');\n// Usage: printTask(this, null, {someExtraProp});\n// function printTask(task, prefix, extra) {\n// window.ecTaskUID == null && (window.ecTaskUID = 0);\n// task.uidDebug == null && (task.uidDebug = `task_${window.ecTaskUID++}`);\n// task.agent && task.agent.uidDebug == null && (task.agent.uidDebug = `task_${window.ecTaskUID++}`);\n// var props = [];\n// if (task.__pipeline) {\n// var val = `${task.__idxInPipeline}/${task.__pipeline.tail.__idxInPipeline} ${task.agent ? '(stub)' : ''}`;\n// props.push({text: 'idx', value: val});\n// } else {\n// var stubCount = 0;\n// task.agentStubMap.each(() => stubCount++);\n// props.push({text: 'idx', value: `overall (stubs: ${stubCount})`});\n// }\n// props.push({text: 'uid', value: task.uidDebug});\n// if (task.__pipeline) {\n// props.push({text: 'pid', value: task.__pipeline.id});\n// task.agent && props.push(\n// {text: 'stubFor', value: task.agent.uidDebug}\n// );\n// }\n// props.push(\n// {text: 'dirty', value: task._dirty},\n// {text: 'dueIndex', value: task._dueIndex},\n// {text: 'dueEnd', value: task._dueEnd},\n// {text: 'outputDueEnd', value: task._outputDueEnd}\n// );\n// if (extra) {\n// Object.keys(extra).forEach(key => {\n// props.push({text: key, value: extra[key]});\n// });\n// }\n// var args = ['color: blue'];\n// var msg = `%c[${prefix || 'T'}] %c` + props.map(item => (\n// args.push('color: black', 'color: red'),\n// `${item.text}: %c${item.value}`\n// )).join('%c, ');\n// console.log.apply(console, [msg].concat(args));\n// // console.log(this);\n// }\n\n\nexports.createTask = createTask;","\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* 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 contrastColor = '#eee';\n\nvar axisCommon = function () {\n return {\n axisLine: {\n lineStyle: {\n color: contrastColor\n }\n },\n axisTick: {\n lineStyle: {\n color: contrastColor\n }\n },\n axisLabel: {\n textStyle: {\n color: contrastColor\n }\n },\n splitLine: {\n lineStyle: {\n type: 'dashed',\n color: '#aaa'\n }\n },\n splitArea: {\n areaStyle: {\n color: contrastColor\n }\n }\n };\n};\n\nvar colorPalette = ['#dd6b66', '#759aa0', '#e69d87', '#8dc1a9', '#ea7e53', '#eedd78', '#73a373', '#73b9bc', '#7289ab', '#91ca8c', '#f49f42'];\nvar theme = {\n color: colorPalette,\n backgroundColor: '#333',\n tooltip: {\n axisPointer: {\n lineStyle: {\n color: contrastColor\n },\n crossStyle: {\n color: contrastColor\n },\n label: {\n color: '#000'\n }\n }\n },\n legend: {\n textStyle: {\n color: contrastColor\n }\n },\n textStyle: {\n color: contrastColor\n },\n title: {\n textStyle: {\n color: contrastColor\n }\n },\n toolbox: {\n iconStyle: {\n normal: {\n borderColor: contrastColor\n }\n }\n },\n dataZoom: {\n textStyle: {\n color: contrastColor\n }\n },\n visualMap: {\n textStyle: {\n color: contrastColor\n }\n },\n timeline: {\n lineStyle: {\n color: contrastColor\n },\n itemStyle: {\n normal: {\n color: colorPalette[1]\n }\n },\n label: {\n normal: {\n textStyle: {\n color: contrastColor\n }\n }\n },\n controlStyle: {\n normal: {\n color: contrastColor,\n borderColor: contrastColor\n }\n }\n },\n timeAxis: axisCommon(),\n logAxis: axisCommon(),\n valueAxis: axisCommon(),\n categoryAxis: axisCommon(),\n line: {\n symbol: 'circle'\n },\n graph: {\n color: colorPalette\n },\n gauge: {\n title: {\n textStyle: {\n color: contrastColor\n }\n }\n },\n candlestick: {\n itemStyle: {\n normal: {\n color: '#FD1050',\n color0: '#0CF49B',\n borderColor: '#FD1050',\n borderColor0: '#0CF49B'\n }\n }\n }\n};\ntheme.categoryAxis.splitLine.show = false;\nvar _default = theme;\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\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 colorAll = ['#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF'];\nvar _default = {\n color: colorAll,\n colorLayer: [['#37A2DA', '#ffd85c', '#fd7b5f'], ['#37A2DA', '#67E0E3', '#FFDB5C', '#ff9f7f', '#E062AE', '#9d96f5'], ['#37A2DA', '#32C5E9', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#e7bcf3', '#8378EA', '#96BFFF'], colorAll]\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\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 {number} [time=500] Time in ms\n * @param {string} [easing='linear']\n * @param {number} [delay=0]\n * @param {Function} [callback]\n *\n * @example\n * // Animate position\n * animation\n * .createWrap()\n * .add(el1, {position: [10, 10]})\n * .add(el2, {shape: {width: 500}, style: {fill: 'red'}}, 400)\n * .done(function () { // done })\n * .start('cubicOut');\n */\nfunction createWrap() {\n var storage = [];\n var elExistsMap = {};\n var doneCallback;\n return {\n /**\n * Caution: a el can only be added once, otherwise 'done'\n * might not be called. This method checks this (by el.id),\n * suppresses adding and returns false when existing el found.\n *\n * @param {modele:zrender/Element} el\n * @param {Object} target\n * @param {number} [time=500]\n * @param {number} [delay=0]\n * @param {string} [easing='linear']\n * @return {boolean} Whether adding succeeded.\n *\n * @example\n * add(el, target, time, delay, easing);\n * add(el, target, time, easing);\n * add(el, target, time);\n * add(el, target);\n */\n add: function (el, target, time, delay, easing) {\n if (zrUtil.isString(delay)) {\n easing = delay;\n delay = 0;\n }\n\n if (elExistsMap[el.id]) {\n return false;\n }\n\n elExistsMap[el.id] = 1;\n storage.push({\n el: el,\n target: target,\n time: time,\n delay: delay,\n easing: easing\n });\n return true;\n },\n\n /**\n * Only execute when animation finished. Will not execute when any\n * of 'stop' or 'stopAnimation' called.\n *\n * @param {Function} callback\n */\n done: function (callback) {\n doneCallback = callback;\n return this;\n },\n\n /**\n * Will stop exist animation firstly.\n */\n start: function () {\n var count = storage.length;\n\n for (var i = 0, len = storage.length; i < len; i++) {\n var item = storage[i];\n item.el.animateTo(item.target, item.time, item.delay, item.easing, done);\n }\n\n return this;\n\n function done() {\n count--;\n\n if (!count) {\n storage.length = 0;\n elExistsMap = {};\n doneCallback && doneCallback();\n }\n }\n }\n };\n}\n\nexports.createWrap = createWrap;","\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 _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\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*/\nvar TYPE_DELIMITER = '.';\nvar IS_CONTAINER = '___EC__COMPONENT__CONTAINER___';\n/**\n * Notice, parseClassType('') should returns {main: '', sub: ''}\n * @public\n */\n\nfunction parseClassType(componentType) {\n var ret = {\n main: '',\n sub: ''\n };\n\n if (componentType) {\n componentType = componentType.split(TYPE_DELIMITER);\n ret.main = componentType[0] || '';\n ret.sub = componentType[1] || '';\n }\n\n return ret;\n}\n/**\n * @public\n */\n\n\nfunction checkClassType(componentType) {\n zrUtil.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType \"' + componentType + '\" illegal');\n}\n/**\n * @public\n */\n\n\nfunction enableClassExtend(RootClass, mandatoryMethods) {\n RootClass.$constructor = RootClass;\n\n RootClass.extend = function (proto) {\n var superClass = this;\n\n var ExtendedClass = function () {\n if (!proto.$constructor) {\n superClass.apply(this, arguments);\n } else {\n proto.$constructor.apply(this, arguments);\n }\n };\n\n zrUtil.extend(ExtendedClass.prototype, proto);\n ExtendedClass.extend = this.extend;\n ExtendedClass.superCall = superCall;\n ExtendedClass.superApply = superApply;\n zrUtil.inherits(ExtendedClass, this);\n ExtendedClass.superClass = superClass;\n return ExtendedClass;\n };\n}\n\nvar classBase = 0;\n/**\n * Can not use instanceof, consider different scope by\n * cross domain or es module import in ec extensions.\n * Mount a method \"isInstance()\" to Clz.\n */\n\nfunction enableClassCheck(Clz) {\n var classAttr = ['__\\0is_clz', classBase++, Math.random().toFixed(3)].join('_');\n Clz.prototype[classAttr] = true;\n\n Clz.isInstance = function (obj) {\n return !!(obj && obj[classAttr]);\n };\n} // superCall should have class info, which can not be fetch from 'this'.\n// Consider this case:\n// class A has method f,\n// class B inherits class A, overrides method f, f call superApply('f'),\n// class C inherits class B, do not overrides method f,\n// then when method of class C is called, dead loop occured.\n\n\nfunction superCall(context, methodName) {\n var args = zrUtil.slice(arguments, 2);\n return this.superClass.prototype[methodName].apply(context, args);\n}\n\nfunction superApply(context, methodName, args) {\n return this.superClass.prototype[methodName].apply(context, args);\n}\n/**\n * @param {Object} entity\n * @param {Object} options\n * @param {boolean} [options.registerWhenExtend]\n * @public\n */\n\n\nfunction enableClassManagement(entity, options) {\n options = options || {};\n /**\n * Component model classes\n * key: componentType,\n * value:\n * componentClass, when componentType is 'xxx'\n * or Object., when componentType is 'xxx.yy'\n * @type {Object}\n */\n\n var storage = {};\n\n entity.registerClass = function (Clazz, componentType) {\n if (componentType) {\n checkClassType(componentType);\n componentType = parseClassType(componentType);\n\n if (!componentType.sub) {\n storage[componentType.main] = Clazz;\n } else if (componentType.sub !== IS_CONTAINER) {\n var container = makeContainer(componentType);\n container[componentType.sub] = Clazz;\n }\n }\n\n return Clazz;\n };\n\n entity.getClass = function (componentMainType, subType, throwWhenNotFound) {\n var Clazz = storage[componentMainType];\n\n if (Clazz && Clazz[IS_CONTAINER]) {\n Clazz = subType ? Clazz[subType] : null;\n }\n\n if (throwWhenNotFound && !Clazz) {\n throw new Error(!subType ? componentMainType + '.' + 'type should be specified.' : 'Component ' + componentMainType + '.' + (subType || '') + ' not exists. Load it first.');\n }\n\n return Clazz;\n };\n\n entity.getClassesByMainType = function (componentType) {\n componentType = parseClassType(componentType);\n var result = [];\n var obj = storage[componentType.main];\n\n if (obj && obj[IS_CONTAINER]) {\n zrUtil.each(obj, function (o, type) {\n type !== IS_CONTAINER && result.push(o);\n });\n } else {\n result.push(obj);\n }\n\n return result;\n };\n\n entity.hasClass = function (componentType) {\n // Just consider componentType.main.\n componentType = parseClassType(componentType);\n return !!storage[componentType.main];\n };\n /**\n * @return {Array.} Like ['aa', 'bb'], but can not be ['aa.xx']\n */\n\n\n entity.getAllClassMainTypes = function () {\n var types = [];\n zrUtil.each(storage, function (obj, type) {\n types.push(type);\n });\n return types;\n };\n /**\n * If a main type is container and has sub types\n * @param {string} mainType\n * @return {boolean}\n */\n\n\n entity.hasSubTypes = function (componentType) {\n componentType = parseClassType(componentType);\n var obj = storage[componentType.main];\n return obj && obj[IS_CONTAINER];\n };\n\n entity.parseClassType = parseClassType;\n\n function makeContainer(componentType) {\n var container = storage[componentType.main];\n\n if (!container || !container[IS_CONTAINER]) {\n container = storage[componentType.main] = {};\n container[IS_CONTAINER] = true;\n }\n\n return container;\n }\n\n if (options.registerWhenExtend) {\n var originalExtend = entity.extend;\n\n if (originalExtend) {\n entity.extend = function (proto) {\n var ExtendedClass = originalExtend.call(this, proto);\n return entity.registerClass(ExtendedClass, proto.type);\n };\n }\n }\n\n return entity;\n}\n/**\n * @param {string|Array.} properties\n */\n\n\nfunction setReadOnly(obj, properties) {// FIXME It seems broken in IE8 simulation of IE11\n // if (!zrUtil.isArray(properties)) {\n // properties = properties != null ? [properties] : [];\n // }\n // zrUtil.each(properties, function (prop) {\n // var value = obj[prop];\n // Object.defineProperty\n // && Object.defineProperty(obj, prop, {\n // value: value, writable: false\n // });\n // zrUtil.isArray(obj[prop])\n // && Object.freeze\n // && Object.freeze(obj[prop]);\n // });\n}\n\nexports.parseClassType = parseClassType;\nexports.enableClassExtend = enableClassExtend;\nexports.enableClassCheck = enableClassCheck;\nexports.enableClassManagement = enableClassManagement;\nexports.setReadOnly = setReadOnly;","\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 _clazz = require(\"./clazz\");\n\nvar parseClassType = _clazz.parseClassType;\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 base = 0;\n/**\n * @public\n * @param {string} type\n * @return {string}\n */\n\nfunction getUID(type) {\n // Considering the case of crossing js context,\n // use Math.random to make id as unique as possible.\n return [type || '', base++, Math.random().toFixed(5)].join('_');\n}\n/**\n * @inner\n */\n\n\nfunction enableSubTypeDefaulter(entity) {\n var subTypeDefaulters = {};\n\n entity.registerSubTypeDefaulter = function (componentType, defaulter) {\n componentType = parseClassType(componentType);\n subTypeDefaulters[componentType.main] = defaulter;\n };\n\n entity.determineSubType = function (componentType, option) {\n var type = option.type;\n\n if (!type) {\n var componentTypeMain = parseClassType(componentType).main;\n\n if (entity.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) {\n type = subTypeDefaulters[componentTypeMain](option);\n }\n }\n\n return type;\n };\n\n return entity;\n}\n/**\n * Topological travel on Activity Network (Activity On Vertices).\n * Dependencies is defined in Model.prototype.dependencies, like ['xAxis', 'yAxis'].\n *\n * If 'xAxis' or 'yAxis' is absent in componentTypeList, just ignore it in topology.\n *\n * If there is circle dependencey, Error will be thrown.\n *\n */\n\n\nfunction enableTopologicalTravel(entity, dependencyGetter) {\n /**\n * @public\n * @param {Array.} targetNameList Target Component type list.\n * Can be ['aa', 'bb', 'aa.xx']\n * @param {Array.} fullNameList By which we can build dependency graph.\n * @param {Function} callback Params: componentType, dependencies.\n * @param {Object} context Scope of callback.\n */\n entity.topologicalTravel = function (targetNameList, fullNameList, callback, context) {\n if (!targetNameList.length) {\n return;\n }\n\n var result = makeDepndencyGraph(fullNameList);\n var graph = result.graph;\n var stack = result.noEntryList;\n var targetNameSet = {};\n zrUtil.each(targetNameList, function (name) {\n targetNameSet[name] = true;\n });\n\n while (stack.length) {\n var currComponentType = stack.pop();\n var currVertex = graph[currComponentType];\n var isInTargetNameSet = !!targetNameSet[currComponentType];\n\n if (isInTargetNameSet) {\n callback.call(context, currComponentType, currVertex.originalDeps.slice());\n delete targetNameSet[currComponentType];\n }\n\n zrUtil.each(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge);\n }\n\n zrUtil.each(targetNameSet, function () {\n throw new Error('Circle dependency may exists');\n });\n\n function removeEdge(succComponentType) {\n graph[succComponentType].entryCount--;\n\n if (graph[succComponentType].entryCount === 0) {\n stack.push(succComponentType);\n }\n } // Consider this case: legend depends on series, and we call\n // chart.setOption({series: [...]}), where only series is in option.\n // If we do not have 'removeEdgeAndAdd', legendModel.mergeOption will\n // not be called, but only sereis.mergeOption is called. Thus legend\n // have no chance to update its local record about series (like which\n // name of series is available in legend).\n\n\n function removeEdgeAndAdd(succComponentType) {\n targetNameSet[succComponentType] = true;\n removeEdge(succComponentType);\n }\n };\n /**\n * DepndencyGraph: {Object}\n * key: conponentType,\n * value: {\n * successor: [conponentTypes...],\n * originalDeps: [conponentTypes...],\n * entryCount: {number}\n * }\n */\n\n\n function makeDepndencyGraph(fullNameList) {\n var graph = {};\n var noEntryList = [];\n zrUtil.each(fullNameList, function (name) {\n var thisItem = createDependencyGraphItem(graph, name);\n var originalDeps = thisItem.originalDeps = dependencyGetter(name);\n var availableDeps = getAvailableDependencies(originalDeps, fullNameList);\n thisItem.entryCount = availableDeps.length;\n\n if (thisItem.entryCount === 0) {\n noEntryList.push(name);\n }\n\n zrUtil.each(availableDeps, function (dependentName) {\n if (zrUtil.indexOf(thisItem.predecessor, dependentName) < 0) {\n thisItem.predecessor.push(dependentName);\n }\n\n var thatItem = createDependencyGraphItem(graph, dependentName);\n\n if (zrUtil.indexOf(thatItem.successor, dependentName) < 0) {\n thatItem.successor.push(name);\n }\n });\n });\n return {\n graph: graph,\n noEntryList: noEntryList\n };\n }\n\n function createDependencyGraphItem(graph, name) {\n if (!graph[name]) {\n graph[name] = {\n predecessor: [],\n successor: []\n };\n }\n\n return graph[name];\n }\n\n function getAvailableDependencies(originalDeps, fullNameList) {\n var availableDeps = [];\n zrUtil.each(originalDeps, function (dep) {\n zrUtil.indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep);\n });\n return availableDeps;\n }\n}\n\nexports.getUID = getUID;\nexports.enableSubTypeDefaulter = enableSubTypeDefaulter;\nexports.enableTopologicalTravel = enableTopologicalTravel;","\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 textContain = require(\"zrender/lib/contain/text\");\n\nvar numberUtil = require(\"./number\");\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// import Text from 'zrender/src/graphic/Text';\n\n/**\n * add commas after every three numbers\n * @param {string|number} x\n * @return {string}\n */\nfunction addCommas(x) {\n if (isNaN(x)) {\n return '-';\n }\n\n x = (x + '').split('.');\n return x[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, '$1,') + (x.length > 1 ? '.' + x[1] : '');\n}\n/**\n * @param {string} str\n * @param {boolean} [upperCaseFirst=false]\n * @return {string} str\n */\n\n\nfunction toCamelCase(str, upperCaseFirst) {\n str = (str || '').toLowerCase().replace(/-(.)/g, function (match, group1) {\n return group1.toUpperCase();\n });\n\n if (upperCaseFirst && str) {\n str = str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n return str;\n}\n\nvar normalizeCssArray = zrUtil.normalizeCssArray;\nvar replaceReg = /([&<>\"'])/g;\nvar replaceMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n};\n\nfunction encodeHTML(source) {\n return source == null ? '' : (source + '').replace(replaceReg, function (str, c) {\n return replaceMap[c];\n });\n}\n\nvar TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];\n\nvar wrapVar = function (varName, seriesIdx) {\n return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';\n};\n/**\n * Template formatter\n * @param {string} tpl\n * @param {Array.|Object} paramsList\n * @param {boolean} [encode=false]\n * @return {string}\n */\n\n\nfunction formatTpl(tpl, paramsList, encode) {\n if (!zrUtil.isArray(paramsList)) {\n paramsList = [paramsList];\n }\n\n var seriesLen = paramsList.length;\n\n if (!seriesLen) {\n return '';\n }\n\n var $vars = paramsList[0].$vars || [];\n\n for (var i = 0; i < $vars.length; i++) {\n var alias = TPL_VAR_ALIAS[i];\n tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0));\n }\n\n for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {\n for (var k = 0; k < $vars.length; k++) {\n var val = paramsList[seriesIdx][$vars[k]];\n tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val);\n }\n }\n\n return tpl;\n}\n/**\n * simple Template formatter\n *\n * @param {string} tpl\n * @param {Object} param\n * @param {boolean} [encode=false]\n * @return {string}\n */\n\n\nfunction formatTplSimple(tpl, param, encode) {\n zrUtil.each(param, function (value, key) {\n tpl = tpl.replace('{' + key + '}', encode ? encodeHTML(value) : value);\n });\n return tpl;\n}\n/**\n * @param {Object|string} [opt] If string, means color.\n * @param {string} [opt.color]\n * @param {string} [opt.extraCssText]\n * @param {string} [opt.type='item'] 'item' or 'subItem'\n * @param {string} [opt.renderMode='html'] render mode of tooltip, 'html' or 'richText'\n * @param {string} [opt.markerId='X'] id name for marker. If only one marker is in a rich text, this can be omitted.\n * @return {string}\n */\n\n\nfunction getTooltipMarker(opt, extraCssText) {\n opt = zrUtil.isString(opt) ? {\n color: opt,\n extraCssText: extraCssText\n } : opt || {};\n var color = opt.color;\n var type = opt.type;\n var extraCssText = opt.extraCssText;\n var renderMode = opt.renderMode || 'html';\n var markerId = opt.markerId || 'X';\n\n if (!color) {\n return '';\n }\n\n if (renderMode === 'html') {\n return type === 'subItem' ? '' : '';\n } else {\n // Space for rich element marker\n return {\n renderMode: renderMode,\n content: '{marker' + markerId + '|} ',\n style: {\n color: color\n }\n };\n }\n}\n\nfunction pad(str, len) {\n str += '';\n return '0000'.substr(0, len - str.length) + str;\n}\n/**\n * ISO Date format\n * @param {string} tpl\n * @param {number} value\n * @param {boolean} [isUTC=false] Default in local time.\n * see `module:echarts/scale/Time`\n * and `module:echarts/util/number#parseDate`.\n * @inner\n */\n\n\nfunction formatTime(tpl, value, isUTC) {\n if (tpl === 'week' || tpl === 'month' || tpl === 'quarter' || tpl === 'half-year' || tpl === 'year') {\n tpl = 'MM-dd\\nyyyy';\n }\n\n var date = numberUtil.parseDate(value);\n var utc = isUTC ? 'UTC' : '';\n var y = date['get' + utc + 'FullYear']();\n var M = date['get' + utc + 'Month']() + 1;\n var d = date['get' + utc + 'Date']();\n var h = date['get' + utc + 'Hours']();\n var m = date['get' + utc + 'Minutes']();\n var s = date['get' + utc + 'Seconds']();\n var S = date['get' + utc + 'Milliseconds']();\n tpl = tpl.replace('MM', pad(M, 2)).replace('M', M).replace('yyyy', y).replace('yy', y % 100).replace('dd', pad(d, 2)).replace('d', d).replace('hh', pad(h, 2)).replace('h', h).replace('mm', pad(m, 2)).replace('m', m).replace('ss', pad(s, 2)).replace('s', s).replace('SSS', pad(S, 3));\n return tpl;\n}\n/**\n * Capital first\n * @param {string} str\n * @return {string}\n */\n\n\nfunction capitalFirst(str) {\n return str ? str.charAt(0).toUpperCase() + str.substr(1) : str;\n}\n\nvar truncateText = textContain.truncateText;\n/**\n * @public\n * @param {Object} opt\n * @param {string} opt.text\n * @param {string} opt.font\n * @param {string} [opt.textAlign='left']\n * @param {string} [opt.textVerticalAlign='top']\n * @param {Array.} [opt.textPadding]\n * @param {number} [opt.textLineHeight]\n * @param {Object} [opt.rich]\n * @param {Object} [opt.truncate]\n * @return {Object} {x, y, width, height, lineHeight}\n */\n\nfunction getTextBoundingRect(opt) {\n return textContain.getBoundingRect(opt.text, opt.font, opt.textAlign, opt.textVerticalAlign, opt.textPadding, opt.textLineHeight, opt.rich, opt.truncate);\n}\n/**\n * @deprecated\n * the `textLineHeight` was added later.\n * For backward compatiblility, put it as the last parameter.\n * But deprecated this interface. Please use `getTextBoundingRect` instead.\n */\n\n\nfunction getTextRect(text, font, textAlign, textVerticalAlign, textPadding, rich, truncate, textLineHeight) {\n return textContain.getBoundingRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate);\n}\n/**\n * open new tab\n * @param {string} link url\n * @param {string} target blank or self\n */\n\n\nfunction windowOpen(link, target) {\n if (target === '_blank' || target === 'blank') {\n var blank = window.open();\n blank.opener = null;\n blank.location = link;\n } else {\n window.open(link, target);\n }\n}\n\nexports.addCommas = addCommas;\nexports.toCamelCase = toCamelCase;\nexports.normalizeCssArray = normalizeCssArray;\nexports.encodeHTML = encodeHTML;\nexports.formatTpl = formatTpl;\nexports.formatTplSimple = formatTplSimple;\nexports.getTooltipMarker = getTooltipMarker;\nexports.formatTime = formatTime;\nexports.capitalFirst = capitalFirst;\nexports.truncateText = truncateText;\nexports.getTextBoundingRect = getTextBoundingRect;\nexports.getTextRect = getTextRect;\nexports.windowOpen = windowOpen;","\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 pathTool = require(\"zrender/lib/tool/path\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar Transformable = require(\"zrender/lib/mixin/Transformable\");\n\nvar ZImage = require(\"zrender/lib/graphic/Image\");\n\nexports.Image = ZImage;\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nexports.Group = Group;\n\nvar Text = require(\"zrender/lib/graphic/Text\");\n\nexports.Text = Text;\n\nvar Circle = require(\"zrender/lib/graphic/shape/Circle\");\n\nexports.Circle = Circle;\n\nvar Sector = require(\"zrender/lib/graphic/shape/Sector\");\n\nexports.Sector = Sector;\n\nvar Ring = require(\"zrender/lib/graphic/shape/Ring\");\n\nexports.Ring = Ring;\n\nvar Polygon = require(\"zrender/lib/graphic/shape/Polygon\");\n\nexports.Polygon = Polygon;\n\nvar Polyline = require(\"zrender/lib/graphic/shape/Polyline\");\n\nexports.Polyline = Polyline;\n\nvar Rect = require(\"zrender/lib/graphic/shape/Rect\");\n\nexports.Rect = Rect;\n\nvar Line = require(\"zrender/lib/graphic/shape/Line\");\n\nexports.Line = Line;\n\nvar BezierCurve = require(\"zrender/lib/graphic/shape/BezierCurve\");\n\nexports.BezierCurve = BezierCurve;\n\nvar Arc = require(\"zrender/lib/graphic/shape/Arc\");\n\nexports.Arc = Arc;\n\nvar CompoundPath = require(\"zrender/lib/graphic/CompoundPath\");\n\nexports.CompoundPath = CompoundPath;\n\nvar LinearGradient = require(\"zrender/lib/graphic/LinearGradient\");\n\nexports.LinearGradient = LinearGradient;\n\nvar RadialGradient = require(\"zrender/lib/graphic/RadialGradient\");\n\nexports.RadialGradient = RadialGradient;\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nexports.BoundingRect = BoundingRect;\n\nvar IncrementalDisplayable = require(\"zrender/lib/graphic/IncrementalDisplayable\");\n\nexports.IncrementalDisplayable = IncrementalDisplayable;\n\nvar subPixelOptimizeUtil = require(\"zrender/lib/graphic/helper/subPixelOptimize\");\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 mathMax = Math.max;\nvar mathMin = Math.min;\nvar EMPTY_OBJ = {};\nvar Z2_EMPHASIS_LIFT = 1; // key: label model property nane, value: style property name.\n\nvar CACHED_LABEL_STYLE_PROPERTIES = {\n color: 'textFill',\n textBorderColor: 'textStroke',\n textBorderWidth: 'textStrokeWidth'\n};\nvar EMPHASIS = 'emphasis';\nvar NORMAL = 'normal'; // Reserve 0 as default.\n\nvar _highlightNextDigit = 1;\nvar _highlightKeyMap = {};\nvar _customShapeMap = {};\n/**\n * Extend shape with parameters\n */\n\nfunction extendShape(opts) {\n return Path.extend(opts);\n}\n/**\n * Extend path\n */\n\n\nfunction extendPath(pathData, opts) {\n return pathTool.extendFromString(pathData, opts);\n}\n/**\n * Register a user defined shape.\n * The shape class can be fetched by `getShapeClass`\n * This method will overwrite the registered shapes, including\n * the registered built-in shapes, if using the same `name`.\n * The shape can be used in `custom series` and\n * `graphic component` by declaring `{type: name}`.\n *\n * @param {string} name\n * @param {Object} ShapeClass Can be generated by `extendShape`.\n */\n\n\nfunction registerShape(name, ShapeClass) {\n _customShapeMap[name] = ShapeClass;\n}\n/**\n * Find shape class registered by `registerShape`. Usually used in\n * fetching user defined shape.\n *\n * [Caution]:\n * (1) This method **MUST NOT be used inside echarts !!!**, unless it is prepared\n * to use user registered shapes.\n * Because the built-in shape (see `getBuiltInShape`) will be registered by\n * `registerShape` by default. That enables users to get both built-in\n * shapes as well as the shapes belonging to themsleves. But users can overwrite\n * the built-in shapes by using names like 'circle', 'rect' via calling\n * `registerShape`. So the echarts inner featrues should not fetch shapes from here\n * in case that it is overwritten by users, except that some features, like\n * `custom series`, `graphic component`, do it deliberately.\n *\n * (2) In the features like `custom series`, `graphic component`, the user input\n * `{tpye: 'xxx'}` does not only specify shapes but also specify other graphic\n * elements like `'group'`, `'text'`, `'image'` or event `'path'`. Those names\n * are reserved names, that is, if some user register a shape named `'image'`,\n * the shape will not be used. If we intending to add some more reserved names\n * in feature, that might bring break changes (disable some existing user shape\n * names). But that case probably rearly happen. So we dont make more mechanism\n * to resolve this issue here.\n *\n * @param {string} name\n * @return {Object} The shape class. If not found, return nothing.\n */\n\n\nfunction getShapeClass(name) {\n if (_customShapeMap.hasOwnProperty(name)) {\n return _customShapeMap[name];\n }\n}\n/**\n * Create a path element from path data string\n * @param {string} pathData\n * @param {Object} opts\n * @param {module:zrender/core/BoundingRect} rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makePath(pathData, opts, rect, layout) {\n var path = pathTool.createFromString(pathData, opts);\n\n if (rect) {\n if (layout === 'center') {\n rect = centerGraphic(rect, path.getBoundingRect());\n }\n\n resizePath(path, rect);\n }\n\n return path;\n}\n/**\n * Create a image element from image url\n * @param {string} imageUrl image url\n * @param {Object} opts options\n * @param {module:zrender/core/BoundingRect} rect constrain rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makeImage(imageUrl, rect, layout) {\n var path = new ZImage({\n style: {\n image: imageUrl,\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n },\n onload: function (img) {\n if (layout === 'center') {\n var boundingRect = {\n width: img.width,\n height: img.height\n };\n path.setStyle(centerGraphic(rect, boundingRect));\n }\n }\n });\n return path;\n}\n/**\n * Get position of centered element in bounding box.\n *\n * @param {Object} rect element local bounding box\n * @param {Object} boundingRect constraint bounding box\n * @return {Object} element position containing x, y, width, and height\n */\n\n\nfunction centerGraphic(rect, boundingRect) {\n // Set rect to center, keep width / height ratio.\n var aspect = boundingRect.width / boundingRect.height;\n var width = rect.height * aspect;\n var height;\n\n if (width <= rect.width) {\n height = rect.height;\n } else {\n width = rect.width;\n height = width / aspect;\n }\n\n var cx = rect.x + rect.width / 2;\n var cy = rect.y + rect.height / 2;\n return {\n x: cx - width / 2,\n y: cy - height / 2,\n width: width,\n height: height\n };\n}\n\nvar mergePath = pathTool.mergePath;\n/**\n * Resize a path to fit the rect\n * @param {module:zrender/graphic/Path} path\n * @param {Object} rect\n */\n\nfunction resizePath(path, rect) {\n if (!path.applyTransform) {\n return;\n }\n\n var pathRect = path.getBoundingRect();\n var m = pathRect.calculateTransform(rect);\n path.applyTransform(m);\n}\n/**\n * Sub pixel optimize line for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x1]\n * @param {number} [param.shape.y1]\n * @param {number} [param.shape.x2]\n * @param {number} [param.shape.y2]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeLine(param) {\n subPixelOptimizeUtil.subPixelOptimizeLine(param.shape, param.shape, param.style);\n return param;\n}\n/**\n * Sub pixel optimize rect for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x]\n * @param {number} [param.shape.y]\n * @param {number} [param.shape.width]\n * @param {number} [param.shape.height]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeRect(param) {\n subPixelOptimizeUtil.subPixelOptimizeRect(param.shape, param.shape, param.style);\n return param;\n}\n/**\n * Sub pixel optimize for canvas\n *\n * @param {number} position Coordinate, such as x, y\n * @param {number} lineWidth Should be nonnegative integer.\n * @param {boolean=} positiveOrNegative Default false (negative).\n * @return {number} Optimized position.\n */\n\n\nvar subPixelOptimize = subPixelOptimizeUtil.subPixelOptimize;\n\nfunction hasFillOrStroke(fillOrStroke) {\n return fillOrStroke != null && fillOrStroke !== 'none';\n} // Most lifted color are duplicated.\n\n\nvar liftedColorMap = zrUtil.createHashMap();\nvar liftedColorCount = 0;\n\nfunction liftColor(color) {\n if (typeof color !== 'string') {\n return color;\n }\n\n var liftedColor = liftedColorMap.get(color);\n\n if (!liftedColor) {\n liftedColor = colorTool.lift(color, -0.1);\n\n if (liftedColorCount < 10000) {\n liftedColorMap.set(color, liftedColor);\n liftedColorCount++;\n }\n }\n\n return liftedColor;\n}\n\nfunction cacheElementStl(el) {\n if (!el.__hoverStlDirty) {\n return;\n }\n\n el.__hoverStlDirty = false;\n var hoverStyle = el.__hoverStl;\n\n if (!hoverStyle) {\n el.__cachedNormalStl = el.__cachedNormalZ2 = null;\n return;\n }\n\n var normalStyle = el.__cachedNormalStl = {};\n el.__cachedNormalZ2 = el.z2;\n var elStyle = el.style;\n\n for (var name in hoverStyle) {\n // See comment in `singleEnterEmphasis`.\n if (hoverStyle[name] != null) {\n normalStyle[name] = elStyle[name];\n }\n } // Always cache fill and stroke to normalStyle for lifting color.\n\n\n normalStyle.fill = elStyle.fill;\n normalStyle.stroke = elStyle.stroke;\n}\n\nfunction singleEnterEmphasis(el) {\n var hoverStl = el.__hoverStl;\n\n if (!hoverStl || el.__highlighted) {\n return;\n }\n\n var zr = el.__zr;\n var useHoverLayer = el.useHoverLayer && zr && zr.painter.type === 'canvas';\n el.__highlighted = useHoverLayer ? 'layer' : 'plain';\n\n if (el.isGroup || !zr && el.useHoverLayer) {\n return;\n }\n\n var elTarget = el;\n var targetStyle = el.style;\n\n if (useHoverLayer) {\n elTarget = zr.addHover(el);\n targetStyle = elTarget.style;\n }\n\n rollbackDefaultTextStyle(targetStyle);\n\n if (!useHoverLayer) {\n cacheElementStl(elTarget);\n } // styles can be:\n // {\n // label: {\n // show: false,\n // position: 'outside',\n // fontSize: 18\n // },\n // emphasis: {\n // label: {\n // show: true\n // }\n // }\n // },\n // where properties of `emphasis` may not appear in `normal`. We previously use\n // module:echarts/util/model#defaultEmphasis to merge `normal` to `emphasis`.\n // But consider rich text and setOption in merge mode, it is impossible to cover\n // all properties in merge. So we use merge mode when setting style here.\n // But we choose the merge strategy that only properties that is not `null/undefined`.\n // Because when making a textStyle (espacially rich text), it is not easy to distinguish\n // `hasOwnProperty` and `null/undefined` in code, so we trade them as the same for simplicity.\n // But this strategy brings a trouble that `null/undefined` can not be used to remove\n // style any more in `emphasis`. Users can both set properties directly on normal and\n // emphasis to avoid this issue, or we might support `'none'` for this case if required.\n\n\n targetStyle.extendFrom(hoverStl);\n setDefaultHoverFillStroke(targetStyle, hoverStl, 'fill');\n setDefaultHoverFillStroke(targetStyle, hoverStl, 'stroke');\n applyDefaultTextStyle(targetStyle);\n\n if (!useHoverLayer) {\n el.dirty(false);\n el.z2 += Z2_EMPHASIS_LIFT;\n }\n}\n\nfunction setDefaultHoverFillStroke(targetStyle, hoverStyle, prop) {\n if (!hasFillOrStroke(hoverStyle[prop]) && hasFillOrStroke(targetStyle[prop])) {\n targetStyle[prop] = liftColor(targetStyle[prop]);\n }\n}\n\nfunction singleEnterNormal(el) {\n var highlighted = el.__highlighted;\n\n if (!highlighted) {\n return;\n }\n\n el.__highlighted = false;\n\n if (el.isGroup) {\n return;\n }\n\n if (highlighted === 'layer') {\n el.__zr && el.__zr.removeHover(el);\n } else {\n var style = el.style;\n var normalStl = el.__cachedNormalStl;\n\n if (normalStl) {\n rollbackDefaultTextStyle(style);\n el.setStyle(normalStl);\n applyDefaultTextStyle(style);\n } // `__cachedNormalZ2` will not be reset if calling `setElementHoverStyle`\n // when `el` is on emphasis state. So here by comparing with 1, we try\n // hard to make the bug case rare.\n\n\n var normalZ2 = el.__cachedNormalZ2;\n\n if (normalZ2 != null && el.z2 - normalZ2 === Z2_EMPHASIS_LIFT) {\n el.z2 = normalZ2;\n }\n }\n}\n\nfunction traverseUpdate(el, updater, commonParam) {\n // If root is group, also enter updater for `highDownOnUpdate`.\n var fromState = NORMAL;\n var toState = NORMAL;\n var trigger; // See the rule of `highDownOnUpdate` on `graphic.setAsHighDownDispatcher`.\n\n el.__highlighted && (fromState = EMPHASIS, trigger = true);\n updater(el, commonParam);\n el.__highlighted && (toState = EMPHASIS, trigger = true);\n el.isGroup && el.traverse(function (child) {\n !child.isGroup && updater(child, commonParam);\n });\n trigger && el.__highDownOnUpdate && el.__highDownOnUpdate(fromState, toState);\n}\n/**\n * Set hover style (namely \"emphasis style\") of element, based on the current\n * style of the given `el`.\n * This method should be called after all of the normal styles have been adopted\n * to the `el`. See the reason on `setHoverStyle`.\n *\n * @param {module:zrender/Element} el Should not be `zrender/container/Group`.\n * @param {Object} [el.hoverStyle] Can be set on el or its descendants,\n * e.g., `el.hoverStyle = ...; graphic.setHoverStyle(el); `.\n * Often used when item group has a label element and it's hoverStyle is different.\n * @param {Object|boolean} [hoverStl] The specified hover style.\n * If set as `false`, disable the hover style.\n * Similarly, The `el.hoverStyle` can alse be set\n * as `false` to disable the hover style.\n * Otherwise, use the default hover style if not provided.\n */\n\n\nfunction setElementHoverStyle(el, hoverStl) {\n // For performance consideration, it might be better to make the \"hover style\" only the\n // difference properties from the \"normal style\", but not a entire copy of all styles.\n hoverStl = el.__hoverStl = hoverStl !== false && (el.hoverStyle || hoverStl || {});\n el.__hoverStlDirty = true; // FIXME\n // It is not completely right to save \"normal\"/\"emphasis\" flag on elements.\n // It probably should be saved on `data` of series. Consider the cases:\n // (1) A highlighted elements are moved out of the view port and re-enter\n // again by dataZoom.\n // (2) call `setOption` and replace elements totally when they are highlighted.\n\n if (el.__highlighted) {\n // Consider the case:\n // The styles of a highlighted `el` is being updated. The new \"emphasis style\"\n // should be adapted to the `el`. Notice here new \"normal styles\" should have\n // been set outside and the cached \"normal style\" is out of date.\n el.__cachedNormalStl = null; // Do not clear `__cachedNormalZ2` here, because setting `z2` is not a constraint\n // of this method. In most cases, `z2` is not set and hover style should be able\n // to rollback. Of course, that would bring bug, but only in a rare case, see\n // `doSingleLeaveHover` for details.\n\n singleEnterNormal(el);\n singleEnterEmphasis(el);\n }\n}\n\nfunction onElementMouseOver(e) {\n !shouldSilent(this, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n && !this.__highByOuter && traverseUpdate(this, singleEnterEmphasis);\n}\n\nfunction onElementMouseOut(e) {\n !shouldSilent(this, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n && !this.__highByOuter && traverseUpdate(this, singleEnterNormal);\n}\n\nfunction onElementEmphasisEvent(highlightDigit) {\n this.__highByOuter |= 1 << (highlightDigit || 0);\n traverseUpdate(this, singleEnterEmphasis);\n}\n\nfunction onElementNormalEvent(highlightDigit) {\n !(this.__highByOuter &= ~(1 << (highlightDigit || 0))) && traverseUpdate(this, singleEnterNormal);\n}\n\nfunction shouldSilent(el, e) {\n return el.__highDownSilentOnTouch && e.zrByTouch;\n}\n/**\n * Set hover style (namely \"emphasis style\") of element,\n * based on the current style of the given `el`.\n *\n * (1)\n * **CONSTRAINTS** for this method:\n * This method MUST be called after all of the normal styles having been adopted\n * to the `el`.\n * The input `hoverStyle` (that is, \"emphasis style\") MUST be the subset of the\n * \"normal style\" having been set to the el.\n * `color` MUST be one of the \"normal styles\" (because color might be lifted as\n * a default hover style).\n *\n * The reason: this method treat the current style of the `el` as the \"normal style\"\n * and cache them when enter/update the \"emphasis style\". Consider the case: the `el`\n * is in \"emphasis\" state and `setOption`/`dispatchAction` trigger the style updating\n * logic, where the el should shift from the original emphasis style to the new\n * \"emphasis style\" and should be able to \"downplay\" back to the new \"normal style\".\n *\n * Indeed, it is error-prone to make a interface has so many constraints, but I have\n * not found a better solution yet to fit the backward compatibility, performance and\n * the current programming style.\n *\n * (2)\n * Call the method for a \"root\" element once. Do not call it for each descendants.\n * If the descendants elemenets of a group has itself hover style different from the\n * root group, we can simply mount the style on `el.hoverStyle` for them, but should\n * not call this method for them.\n *\n * (3) These input parameters can be set directly on `el`:\n *\n * @param {module:zrender/Element} el\n * @param {Object} [el.hoverStyle] See `graphic.setElementHoverStyle`.\n * @param {boolean} [el.highDownSilentOnTouch=false] See `graphic.setAsHighDownDispatcher`.\n * @param {Function} [el.highDownOnUpdate] See `graphic.setAsHighDownDispatcher`.\n * @param {Object|boolean} [hoverStyle] See `graphic.setElementHoverStyle`.\n */\n\n\nfunction setHoverStyle(el, hoverStyle) {\n setAsHighDownDispatcher(el, true);\n traverseUpdate(el, setElementHoverStyle, hoverStyle);\n}\n/**\n * @param {module:zrender/Element} el\n * @param {Function} [el.highDownOnUpdate] Called when state updated.\n * Since `setHoverStyle` has the constraint that it must be called after\n * all of the normal style updated, `highDownOnUpdate` is not needed to\n * trigger if both `fromState` and `toState` is 'normal', and needed to\n * trigger if both `fromState` and `toState` is 'emphasis', which enables\n * to sync outside style settings to \"emphasis\" state.\n * @this {string} This dispatcher `el`.\n * @param {string} fromState Can be \"normal\" or \"emphasis\".\n * `fromState` might equal to `toState`,\n * for example, when this method is called when `el` is\n * on \"emphasis\" state.\n * @param {string} toState Can be \"normal\" or \"emphasis\".\n *\n * FIXME\n * CAUTION: Do not expose `highDownOnUpdate` outside echarts.\n * Because it is not a complete solution. The update\n * listener should not have been mount in element,\n * and the normal/emphasis state should not have\n * mantained on elements.\n *\n * @param {boolean} [el.highDownSilentOnTouch=false]\n * In touch device, mouseover event will be trigger on touchstart event\n * (see module:zrender/dom/HandlerProxy). By this mechanism, we can\n * conveniently use hoverStyle when tap on touch screen without additional\n * code for compatibility.\n * But if the chart/component has select feature, which usually also use\n * hoverStyle, there might be conflict between 'select-highlight' and\n * 'hover-highlight' especially when roam is enabled (see geo for example).\n * In this case, `highDownSilentOnTouch` should be used to disable\n * hover-highlight on touch device.\n * @param {boolean} [asDispatcher=true] If `false`, do not set as \"highDownDispatcher\".\n */\n\n\nfunction setAsHighDownDispatcher(el, asDispatcher) {\n var disable = asDispatcher === false; // Make `highDownSilentOnTouch` and `highDownOnUpdate` only work after\n // `setAsHighDownDispatcher` called. Avoid it is modified by user unexpectedly.\n\n el.__highDownSilentOnTouch = el.highDownSilentOnTouch;\n el.__highDownOnUpdate = el.highDownOnUpdate; // Simple optimize, since this method might be\n // called for each elements of a group in some cases.\n\n if (!disable || el.__highDownDispatcher) {\n var method = disable ? 'off' : 'on'; // Duplicated function will be auto-ignored, see Eventful.js.\n\n el[method]('mouseover', onElementMouseOver)[method]('mouseout', onElementMouseOut); // Emphasis, normal can be triggered manually by API or other components like hover link.\n\n el[method]('emphasis', onElementEmphasisEvent)[method]('normal', onElementNormalEvent); // Also keep previous record.\n\n el.__highByOuter = el.__highByOuter || 0;\n el.__highDownDispatcher = !disable;\n }\n}\n/**\n * @param {module:zrender/src/Element} el\n * @return {boolean}\n */\n\n\nfunction isHighDownDispatcher(el) {\n return !!(el && el.__highDownDispatcher);\n}\n/**\n * Support hightlight/downplay record on each elements.\n * For the case: hover highlight/downplay (legend, visualMap, ...) and\n * user triggerred hightlight/downplay should not conflict.\n * Only all of the highlightDigit cleared, return to normal.\n * @param {string} highlightKey\n * @return {number} highlightDigit\n */\n\n\nfunction getHighlightDigit(highlightKey) {\n var highlightDigit = _highlightKeyMap[highlightKey];\n\n if (highlightDigit == null && _highlightNextDigit <= 32) {\n highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++;\n }\n\n return highlightDigit;\n}\n/**\n * See more info in `setTextStyleCommon`.\n * @param {Object|module:zrender/graphic/Style} normalStyle\n * @param {Object} emphasisStyle\n * @param {module:echarts/model/Model} normalModel\n * @param {module:echarts/model/Model} emphasisModel\n * @param {Object} opt Check `opt` of `setTextStyleCommon` to find other props.\n * @param {string|Function} [opt.defaultText]\n * @param {module:echarts/model/Model} [opt.labelFetcher] Fetch text by\n * `opt.labelFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {number} [opt.labelDataIndex] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {number} [opt.labelDimIndex] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {string} [opt.labelProp] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {Object} [normalSpecified]\n * @param {Object} [emphasisSpecified]\n */\n\n\nfunction setLabelStyle(normalStyle, emphasisStyle, normalModel, emphasisModel, opt, normalSpecified, emphasisSpecified) {\n opt = opt || EMPTY_OBJ;\n var labelFetcher = opt.labelFetcher;\n var labelDataIndex = opt.labelDataIndex;\n var labelDimIndex = opt.labelDimIndex;\n var labelProp = opt.labelProp; // This scenario, `label.normal.show = true; label.emphasis.show = false`,\n // is not supported util someone requests.\n\n var showNormal = normalModel.getShallow('show');\n var showEmphasis = emphasisModel.getShallow('show'); // Consider performance, only fetch label when necessary.\n // If `normal.show` is `false` and `emphasis.show` is `true` and `emphasis.formatter` is not set,\n // label should be displayed, where text is fetched by `normal.formatter` or `opt.defaultText`.\n\n var baseText;\n\n if (showNormal || showEmphasis) {\n if (labelFetcher) {\n baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex, labelProp);\n }\n\n if (baseText == null) {\n baseText = zrUtil.isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt) : opt.defaultText;\n }\n }\n\n var normalStyleText = showNormal ? baseText : null;\n var emphasisStyleText = showEmphasis ? zrUtil.retrieve2(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, 'emphasis', null, labelDimIndex, labelProp) : null, baseText) : null; // Optimize: If style.text is null, text will not be drawn.\n\n if (normalStyleText != null || emphasisStyleText != null) {\n // Always set `textStyle` even if `normalStyle.text` is null, because default\n // values have to be set on `normalStyle`.\n // If we set default values on `emphasisStyle`, consider case:\n // Firstly, `setOption(... label: {normal: {text: null}, emphasis: {show: true}} ...);`\n // Secondly, `setOption(... label: {noraml: {show: true, text: 'abc', color: 'red'} ...);`\n // Then the 'red' will not work on emphasis.\n setTextStyle(normalStyle, normalModel, normalSpecified, opt);\n setTextStyle(emphasisStyle, emphasisModel, emphasisSpecified, opt, true);\n }\n\n normalStyle.text = normalStyleText;\n emphasisStyle.text = emphasisStyleText;\n}\n/**\n * Modify label style manually.\n * Only works after `setLabelStyle` and `setElementHoverStyle` called.\n *\n * @param {module:zrender/src/Element} el\n * @param {Object} [normalStyleProps] optional\n * @param {Object} [emphasisStyleProps] optional\n */\n\n\nfunction modifyLabelStyle(el, normalStyleProps, emphasisStyleProps) {\n var elStyle = el.style;\n\n if (normalStyleProps) {\n rollbackDefaultTextStyle(elStyle);\n el.setStyle(normalStyleProps);\n applyDefaultTextStyle(elStyle);\n }\n\n elStyle = el.__hoverStl;\n\n if (emphasisStyleProps && elStyle) {\n rollbackDefaultTextStyle(elStyle);\n zrUtil.extend(elStyle, emphasisStyleProps);\n applyDefaultTextStyle(elStyle);\n }\n}\n/**\n * Set basic textStyle properties.\n * See more info in `setTextStyleCommon`.\n * @param {Object|module:zrender/graphic/Style} textStyle\n * @param {module:echarts/model/Model} model\n * @param {Object} [specifiedTextStyle] Can be overrided by settings in model.\n * @param {Object} [opt] See `opt` of `setTextStyleCommon`.\n * @param {boolean} [isEmphasis]\n */\n\n\nfunction setTextStyle(textStyle, textStyleModel, specifiedTextStyle, opt, isEmphasis) {\n setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis);\n specifiedTextStyle && zrUtil.extend(textStyle, specifiedTextStyle); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n\n return textStyle;\n}\n/**\n * Set text option in the style.\n * See more info in `setTextStyleCommon`.\n * @deprecated\n * @param {Object} textStyle\n * @param {module:echarts/model/Model} labelModel\n * @param {string|boolean} defaultColor Default text color.\n * If set as false, it will be processed as a emphasis style.\n */\n\n\nfunction setText(textStyle, labelModel, defaultColor) {\n var opt = {\n isRectText: true\n };\n var isEmphasis;\n\n if (defaultColor === false) {\n isEmphasis = true;\n } else {\n // Support setting color as 'auto' to get visual color.\n opt.autoColor = defaultColor;\n }\n\n setTextStyleCommon(textStyle, labelModel, opt, isEmphasis); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n}\n/**\n * The uniform entry of set text style, that is, retrieve style definitions\n * from `model` and set to `textStyle` object.\n *\n * Never in merge mode, but in overwrite mode, that is, all of the text style\n * properties will be set. (Consider the states of normal and emphasis and\n * default value can be adopted, merge would make the logic too complicated\n * to manage.)\n *\n * The `textStyle` object can either be a plain object or an instance of\n * `zrender/src/graphic/Style`, and either be the style of normal or emphasis.\n * After this mothod called, the `textStyle` object can then be used in\n * `el.setStyle(textStyle)` or `el.hoverStyle = textStyle`.\n *\n * Default value will be adopted and `insideRollbackOpt` will be created.\n * See `applyDefaultTextStyle` `rollbackDefaultTextStyle` for more details.\n *\n * opt: {\n * disableBox: boolean, Whether diable drawing box of block (outer most).\n * isRectText: boolean,\n * autoColor: string, specify a color when color is 'auto',\n * for textFill, textStroke, textBackgroundColor, and textBorderColor.\n * If autoColor specified, it is used as default textFill.\n * useInsideStyle:\n * `true`: Use inside style (textFill, textStroke, textStrokeWidth)\n * if `textFill` is not specified.\n * `false`: Do not use inside style.\n * `null/undefined`: use inside style if `isRectText` is true and\n * `textFill` is not specified and textPosition contains `'inside'`.\n * forceRich: boolean\n * }\n */\n\n\nfunction setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis) {\n // Consider there will be abnormal when merge hover style to normal style if given default value.\n opt = opt || EMPTY_OBJ;\n\n if (opt.isRectText) {\n var textPosition;\n\n if (opt.getTextPosition) {\n textPosition = opt.getTextPosition(textStyleModel, isEmphasis);\n } else {\n textPosition = textStyleModel.getShallow('position') || (isEmphasis ? null : 'inside'); // 'outside' is not a valid zr textPostion value, but used\n // in bar series, and magric type should be considered.\n\n textPosition === 'outside' && (textPosition = 'top');\n }\n\n textStyle.textPosition = textPosition;\n textStyle.textOffset = textStyleModel.getShallow('offset');\n var labelRotate = textStyleModel.getShallow('rotate');\n labelRotate != null && (labelRotate *= Math.PI / 180);\n textStyle.textRotation = labelRotate;\n textStyle.textDistance = zrUtil.retrieve2(textStyleModel.getShallow('distance'), isEmphasis ? null : 5);\n }\n\n var ecModel = textStyleModel.ecModel;\n var globalTextStyle = ecModel && ecModel.option.textStyle; // Consider case:\n // {\n // data: [{\n // value: 12,\n // label: {\n // rich: {\n // // no 'a' here but using parent 'a'.\n // }\n // }\n // }],\n // rich: {\n // a: { ... }\n // }\n // }\n\n var richItemNames = getRichItemNames(textStyleModel);\n var richResult;\n\n if (richItemNames) {\n richResult = {};\n\n for (var name in richItemNames) {\n if (richItemNames.hasOwnProperty(name)) {\n // Cascade is supported in rich.\n var richTextStyle = textStyleModel.getModel(['rich', name]); // In rich, never `disableBox`.\n // FIXME: consider `label: {formatter: '{a|xx}', color: 'blue', rich: {a: {}}}`,\n // the default color `'blue'` will not be adopted if no color declared in `rich`.\n // That might confuses users. So probably we should put `textStyleModel` as the\n // root ancestor of the `richTextStyle`. But that would be a break change.\n\n setTokenTextStyle(richResult[name] = {}, richTextStyle, globalTextStyle, opt, isEmphasis);\n }\n }\n }\n\n textStyle.rich = richResult;\n setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, true);\n\n if (opt.forceRich && !opt.textStyle) {\n opt.textStyle = {};\n }\n\n return textStyle;\n} // Consider case:\n// {\n// data: [{\n// value: 12,\n// label: {\n// rich: {\n// // no 'a' here but using parent 'a'.\n// }\n// }\n// }],\n// rich: {\n// a: { ... }\n// }\n// }\n\n\nfunction getRichItemNames(textStyleModel) {\n // Use object to remove duplicated names.\n var richItemNameMap;\n\n while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {\n var rich = (textStyleModel.option || EMPTY_OBJ).rich;\n\n if (rich) {\n richItemNameMap = richItemNameMap || {};\n\n for (var name in rich) {\n if (rich.hasOwnProperty(name)) {\n richItemNameMap[name] = 1;\n }\n }\n }\n\n textStyleModel = textStyleModel.parentModel;\n }\n\n return richItemNameMap;\n}\n\nfunction setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, isBlock) {\n // In merge mode, default value should not be given.\n globalTextStyle = !isEmphasis && globalTextStyle || EMPTY_OBJ;\n textStyle.textFill = getAutoColor(textStyleModel.getShallow('color'), opt) || globalTextStyle.color;\n textStyle.textStroke = getAutoColor(textStyleModel.getShallow('textBorderColor'), opt) || globalTextStyle.textBorderColor;\n textStyle.textStrokeWidth = zrUtil.retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth);\n\n if (!isEmphasis) {\n if (isBlock) {\n textStyle.insideRollbackOpt = opt;\n applyDefaultTextStyle(textStyle);\n } // Set default finally.\n\n\n if (textStyle.textFill == null) {\n textStyle.textFill = opt.autoColor;\n }\n } // Do not use `getFont` here, because merge should be supported, where\n // part of these properties may be changed in emphasis style, and the\n // others should remain their original value got from normal style.\n\n\n textStyle.fontStyle = textStyleModel.getShallow('fontStyle') || globalTextStyle.fontStyle;\n textStyle.fontWeight = textStyleModel.getShallow('fontWeight') || globalTextStyle.fontWeight;\n textStyle.fontSize = textStyleModel.getShallow('fontSize') || globalTextStyle.fontSize;\n textStyle.fontFamily = textStyleModel.getShallow('fontFamily') || globalTextStyle.fontFamily;\n textStyle.textAlign = textStyleModel.getShallow('align');\n textStyle.textVerticalAlign = textStyleModel.getShallow('verticalAlign') || textStyleModel.getShallow('baseline');\n textStyle.textLineHeight = textStyleModel.getShallow('lineHeight');\n textStyle.textWidth = textStyleModel.getShallow('width');\n textStyle.textHeight = textStyleModel.getShallow('height');\n textStyle.textTag = textStyleModel.getShallow('tag');\n\n if (!isBlock || !opt.disableBox) {\n textStyle.textBackgroundColor = getAutoColor(textStyleModel.getShallow('backgroundColor'), opt);\n textStyle.textPadding = textStyleModel.getShallow('padding');\n textStyle.textBorderColor = getAutoColor(textStyleModel.getShallow('borderColor'), opt);\n textStyle.textBorderWidth = textStyleModel.getShallow('borderWidth');\n textStyle.textBorderRadius = textStyleModel.getShallow('borderRadius');\n textStyle.textBoxShadowColor = textStyleModel.getShallow('shadowColor');\n textStyle.textBoxShadowBlur = textStyleModel.getShallow('shadowBlur');\n textStyle.textBoxShadowOffsetX = textStyleModel.getShallow('shadowOffsetX');\n textStyle.textBoxShadowOffsetY = textStyleModel.getShallow('shadowOffsetY');\n }\n\n textStyle.textShadowColor = textStyleModel.getShallow('textShadowColor') || globalTextStyle.textShadowColor;\n textStyle.textShadowBlur = textStyleModel.getShallow('textShadowBlur') || globalTextStyle.textShadowBlur;\n textStyle.textShadowOffsetX = textStyleModel.getShallow('textShadowOffsetX') || globalTextStyle.textShadowOffsetX;\n textStyle.textShadowOffsetY = textStyleModel.getShallow('textShadowOffsetY') || globalTextStyle.textShadowOffsetY;\n}\n\nfunction getAutoColor(color, opt) {\n return color !== 'auto' ? color : opt && opt.autoColor ? opt.autoColor : null;\n}\n/**\n * Give some default value to the input `textStyle` object, based on the current settings\n * in this `textStyle` object.\n *\n * The Scenario:\n * when text position is `inside` and `textFill` is not specified, we show\n * text border by default for better view. But it should be considered that text position\n * might be changed when hovering or being emphasis, where the `insideRollback` is used to\n * restore the style.\n *\n * Usage (& NOTICE):\n * When a style object (eithor plain object or instance of `zrender/src/graphic/Style`) is\n * about to be modified on its text related properties, `rollbackDefaultTextStyle` should\n * be called before the modification and `applyDefaultTextStyle` should be called after that.\n * (For the case that all of the text related properties is reset, like `setTextStyleCommon`\n * does, `rollbackDefaultTextStyle` is not needed to be called).\n */\n\n\nfunction applyDefaultTextStyle(textStyle) {\n var textPosition = textStyle.textPosition;\n var opt = textStyle.insideRollbackOpt;\n var insideRollback;\n\n if (opt && textStyle.textFill == null) {\n var autoColor = opt.autoColor;\n var isRectText = opt.isRectText;\n var useInsideStyle = opt.useInsideStyle;\n var useInsideStyleCache = useInsideStyle !== false && (useInsideStyle === true || isRectText && textPosition // textPosition can be [10, 30]\n && typeof textPosition === 'string' && textPosition.indexOf('inside') >= 0);\n var useAutoColorCache = !useInsideStyleCache && autoColor != null; // All of the props declared in `CACHED_LABEL_STYLE_PROPERTIES` are to be cached.\n\n if (useInsideStyleCache || useAutoColorCache) {\n insideRollback = {\n textFill: textStyle.textFill,\n textStroke: textStyle.textStroke,\n textStrokeWidth: textStyle.textStrokeWidth\n };\n }\n\n if (useInsideStyleCache) {\n textStyle.textFill = '#fff'; // Consider text with #fff overflow its container.\n\n if (textStyle.textStroke == null) {\n textStyle.textStroke = autoColor;\n textStyle.textStrokeWidth == null && (textStyle.textStrokeWidth = 2);\n }\n }\n\n if (useAutoColorCache) {\n textStyle.textFill = autoColor;\n }\n } // Always set `insideRollback`, so that the previous one can be cleared.\n\n\n textStyle.insideRollback = insideRollback;\n}\n/**\n * Consider the case: in a scatter,\n * label: {\n * normal: {position: 'inside'},\n * emphasis: {position: 'top'}\n * }\n * In the normal state, the `textFill` will be set as '#fff' for pretty view (see\n * `applyDefaultTextStyle`), but when switching to emphasis state, the `textFill`\n * should be retured to 'autoColor', but not keep '#fff'.\n */\n\n\nfunction rollbackDefaultTextStyle(style) {\n var insideRollback = style.insideRollback;\n\n if (insideRollback) {\n // Reset all of the props in `CACHED_LABEL_STYLE_PROPERTIES`.\n style.textFill = insideRollback.textFill;\n style.textStroke = insideRollback.textStroke;\n style.textStrokeWidth = insideRollback.textStrokeWidth;\n style.insideRollback = null;\n }\n}\n\nfunction getFont(opt, ecModel) {\n var gTextStyleModel = ecModel && ecModel.getModel('textStyle');\n return zrUtil.trim([// FIXME in node-canvas fontWeight is before fontStyle\n opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '', opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '', (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px', opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'].join(' '));\n}\n\nfunction animateOrSetProps(isUpdate, el, props, animatableModel, dataIndex, cb) {\n if (typeof dataIndex === 'function') {\n cb = dataIndex;\n dataIndex = null;\n } // Do not check 'animation' property directly here. Consider this case:\n // animation model is an `itemModel`, whose does not have `isAnimationEnabled`\n // but its parent model (`seriesModel`) does.\n\n\n var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();\n\n if (animationEnabled) {\n var postfix = isUpdate ? 'Update' : '';\n var duration = animatableModel.getShallow('animationDuration' + postfix);\n var animationEasing = animatableModel.getShallow('animationEasing' + postfix);\n var animationDelay = animatableModel.getShallow('animationDelay' + postfix);\n\n if (typeof animationDelay === 'function') {\n animationDelay = animationDelay(dataIndex, animatableModel.getAnimationDelayParams ? animatableModel.getAnimationDelayParams(el, dataIndex) : null);\n }\n\n if (typeof duration === 'function') {\n duration = duration(dataIndex);\n }\n\n duration > 0 ? el.animateTo(props, duration, animationDelay || 0, animationEasing, cb, !!cb) : (el.stopAnimation(), el.attr(props), cb && cb());\n } else {\n el.stopAnimation();\n el.attr(props);\n cb && cb();\n }\n}\n/**\n * Update graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} [cb]\n * @example\n * graphic.updateProps(el, {\n * position: [100, 100]\n * }, seriesModel, dataIndex, function () { console.log('Animation done!'); });\n * // Or\n * graphic.updateProps(el, {\n * position: [100, 100]\n * }, seriesModel, function () { console.log('Animation done!'); });\n */\n\n\nfunction updateProps(el, props, animatableModel, dataIndex, cb) {\n animateOrSetProps(true, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Init graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} cb\n */\n\n\nfunction initProps(el, props, animatableModel, dataIndex, cb) {\n animateOrSetProps(false, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Get transform matrix of target (param target),\n * in coordinate of its ancestor (param ancestor)\n *\n * @param {module:zrender/mixin/Transformable} target\n * @param {module:zrender/mixin/Transformable} [ancestor]\n */\n\n\nfunction getTransform(target, ancestor) {\n var mat = matrix.identity([]);\n\n while (target && target !== ancestor) {\n matrix.mul(mat, target.getLocalTransform(), mat);\n target = target.parent;\n }\n\n return mat;\n}\n/**\n * Apply transform to an vertex.\n * @param {Array.} target [x, y]\n * @param {Array.|TypedArray.|Object} transform Can be:\n * + Transform matrix: like [1, 0, 0, 1, 0, 0]\n * + {position, rotation, scale}, the same as `zrender/Transformable`.\n * @param {boolean=} invert Whether use invert matrix.\n * @return {Array.} [x, y]\n */\n\n\nfunction applyTransform(target, transform, invert) {\n if (transform && !zrUtil.isArrayLike(transform)) {\n transform = Transformable.getLocalTransform(transform);\n }\n\n if (invert) {\n transform = matrix.invert([], transform);\n }\n\n return vector.applyTransform([], target, transform);\n}\n/**\n * @param {string} direction 'left' 'right' 'top' 'bottom'\n * @param {Array.} transform Transform matrix: like [1, 0, 0, 1, 0, 0]\n * @param {boolean=} invert Whether use invert matrix.\n * @return {string} Transformed direction. 'left' 'right' 'top' 'bottom'\n */\n\n\nfunction transformDirection(direction, transform, invert) {\n // Pick a base, ensure that transform result will not be (0, 0).\n var hBase = transform[4] === 0 || transform[5] === 0 || transform[0] === 0 ? 1 : Math.abs(2 * transform[4] / transform[0]);\n var vBase = transform[4] === 0 || transform[5] === 0 || transform[2] === 0 ? 1 : Math.abs(2 * transform[4] / transform[2]);\n var vertex = [direction === 'left' ? -hBase : direction === 'right' ? hBase : 0, direction === 'top' ? -vBase : direction === 'bottom' ? vBase : 0];\n vertex = applyTransform(vertex, transform, invert);\n return Math.abs(vertex[0]) > Math.abs(vertex[1]) ? vertex[0] > 0 ? 'right' : 'left' : vertex[1] > 0 ? 'bottom' : 'top';\n}\n/**\n * Apply group transition animation from g1 to g2.\n * If no animatableModel, no animation.\n */\n\n\nfunction groupTransition(g1, g2, animatableModel, cb) {\n if (!g1 || !g2) {\n return;\n }\n\n function getElMap(g) {\n var elMap = {};\n g.traverse(function (el) {\n if (!el.isGroup && el.anid) {\n elMap[el.anid] = el;\n }\n });\n return elMap;\n }\n\n function getAnimatableProps(el) {\n var obj = {\n position: vector.clone(el.position),\n rotation: el.rotation\n };\n\n if (el.shape) {\n obj.shape = zrUtil.extend({}, el.shape);\n }\n\n return obj;\n }\n\n var elMap1 = getElMap(g1);\n g2.traverse(function (el) {\n if (!el.isGroup && el.anid) {\n var oldEl = elMap1[el.anid];\n\n if (oldEl) {\n var newProp = getAnimatableProps(el);\n el.attr(getAnimatableProps(oldEl));\n updateProps(el, newProp, animatableModel, el.dataIndex);\n } // else {\n // if (el.previousProps) {\n // graphic.updateProps\n // }\n // }\n\n }\n });\n}\n/**\n * @param {Array.>} points Like: [[23, 44], [53, 66], ...]\n * @param {Object} rect {x, y, width, height}\n * @return {Array.>} A new clipped points.\n */\n\n\nfunction clipPointsByRect(points, rect) {\n // FIXME: this way migth be incorrect when grpahic clipped by a corner.\n // and when element have border.\n return zrUtil.map(points, function (point) {\n var x = point[0];\n x = mathMax(x, rect.x);\n x = mathMin(x, rect.x + rect.width);\n var y = point[1];\n y = mathMax(y, rect.y);\n y = mathMin(y, rect.y + rect.height);\n return [x, y];\n });\n}\n/**\n * @param {Object} targetRect {x, y, width, height}\n * @param {Object} rect {x, y, width, height}\n * @return {Object} A new clipped rect. If rect size are negative, return undefined.\n */\n\n\nfunction clipRectByRect(targetRect, rect) {\n var x = mathMax(targetRect.x, rect.x);\n var x2 = mathMin(targetRect.x + targetRect.width, rect.x + rect.width);\n var y = mathMax(targetRect.y, rect.y);\n var y2 = mathMin(targetRect.y + targetRect.height, rect.y + rect.height); // If the total rect is cliped, nothing, including the border,\n // should be painted. So return undefined.\n\n if (x2 >= x && y2 >= y) {\n return {\n x: x,\n y: y,\n width: x2 - x,\n height: y2 - y\n };\n }\n}\n/**\n * @param {string} iconStr Support 'image://' or 'path://' or direct svg path.\n * @param {Object} [opt] Properties of `module:zrender/Element`, except `style`.\n * @param {Object} [rect] {x, y, width, height}\n * @return {module:zrender/Element} Icon path or image element.\n */\n\n\nfunction createIcon(iconStr, opt, rect) {\n opt = zrUtil.extend({\n rectHover: true\n }, opt);\n var style = opt.style = {\n strokeNoScale: true\n };\n rect = rect || {\n x: -1,\n y: -1,\n width: 2,\n height: 2\n };\n\n if (iconStr) {\n return iconStr.indexOf('image://') === 0 ? (style.image = iconStr.slice(8), zrUtil.defaults(style, rect), new ZImage(opt)) : makePath(iconStr.replace('path://', ''), opt, rect, 'center');\n }\n}\n/**\n * Return `true` if the given line (line `a`) and the given polygon\n * are intersect.\n * Note that we do not count colinear as intersect here because no\n * requirement for that. We could do that if required in future.\n *\n * @param {number} a1x\n * @param {number} a1y\n * @param {number} a2x\n * @param {number} a2y\n * @param {Array.>} points Points of the polygon.\n * @return {boolean}\n */\n\n\nfunction linePolygonIntersect(a1x, a1y, a2x, a2y, points) {\n for (var i = 0, p2 = points[points.length - 1]; i < points.length; i++) {\n var p = points[i];\n\n if (lineLineIntersect(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) {\n return true;\n }\n\n p2 = p;\n }\n}\n/**\n * Return `true` if the given two lines (line `a` and line `b`)\n * are intersect.\n * Note that we do not count colinear as intersect here because no\n * requirement for that. We could do that if required in future.\n *\n * @param {number} a1x\n * @param {number} a1y\n * @param {number} a2x\n * @param {number} a2y\n * @param {number} b1x\n * @param {number} b1y\n * @param {number} b2x\n * @param {number} b2y\n * @return {boolean}\n */\n\n\nfunction lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\n // let `vec_m` to be `vec_a2 - vec_a1` and `vec_n` to be `vec_b2 - vec_b1`.\n var mx = a2x - a1x;\n var my = a2y - a1y;\n var nx = b2x - b1x;\n var ny = b2y - b1y; // `vec_m` and `vec_n` are parallel iff\n // exising `k` such that `vec_m = k · vec_n`, equivalent to `vec_m X vec_n = 0`.\n\n var nmCrossProduct = crossProduct2d(nx, ny, mx, my);\n\n if (nearZero(nmCrossProduct)) {\n return false;\n } // `vec_m` and `vec_n` are intersect iff\n // existing `p` and `q` in [0, 1] such that `vec_a1 + p * vec_m = vec_b1 + q * vec_n`,\n // such that `q = ((vec_a1 - vec_b1) X vec_m) / (vec_n X vec_m)`\n // and `p = ((vec_a1 - vec_b1) X vec_n) / (vec_n X vec_m)`.\n\n\n var b1a1x = a1x - b1x;\n var b1a1y = a1y - b1y;\n var q = crossProduct2d(b1a1x, b1a1y, mx, my) / nmCrossProduct;\n\n if (q < 0 || q > 1) {\n return false;\n }\n\n var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;\n\n if (p < 0 || p > 1) {\n return false;\n }\n\n return true;\n}\n/**\n * Cross product of 2-dimension vector.\n */\n\n\nfunction crossProduct2d(x1, y1, x2, y2) {\n return x1 * y2 - x2 * y1;\n}\n\nfunction nearZero(val) {\n return val <= 1e-6 && val >= -1e-6;\n} // Register built-in shapes. These shapes might be overwirtten\n// by users, although we do not recommend that.\n\n\nregisterShape('circle', Circle);\nregisterShape('sector', Sector);\nregisterShape('ring', Ring);\nregisterShape('polygon', Polygon);\nregisterShape('polyline', Polyline);\nregisterShape('rect', Rect);\nregisterShape('line', Line);\nregisterShape('bezierCurve', BezierCurve);\nregisterShape('arc', Arc);\nexports.Z2_EMPHASIS_LIFT = Z2_EMPHASIS_LIFT;\nexports.CACHED_LABEL_STYLE_PROPERTIES = CACHED_LABEL_STYLE_PROPERTIES;\nexports.extendShape = extendShape;\nexports.extendPath = extendPath;\nexports.registerShape = registerShape;\nexports.getShapeClass = getShapeClass;\nexports.makePath = makePath;\nexports.makeImage = makeImage;\nexports.mergePath = mergePath;\nexports.resizePath = resizePath;\nexports.subPixelOptimizeLine = subPixelOptimizeLine;\nexports.subPixelOptimizeRect = subPixelOptimizeRect;\nexports.subPixelOptimize = subPixelOptimize;\nexports.setElementHoverStyle = setElementHoverStyle;\nexports.setHoverStyle = setHoverStyle;\nexports.setAsHighDownDispatcher = setAsHighDownDispatcher;\nexports.isHighDownDispatcher = isHighDownDispatcher;\nexports.getHighlightDigit = getHighlightDigit;\nexports.setLabelStyle = setLabelStyle;\nexports.modifyLabelStyle = modifyLabelStyle;\nexports.setTextStyle = setTextStyle;\nexports.setText = setText;\nexports.getFont = getFont;\nexports.updateProps = updateProps;\nexports.initProps = initProps;\nexports.getTransform = getTransform;\nexports.applyTransform = applyTransform;\nexports.transformDirection = transformDirection;\nexports.groupTransition = groupTransition;\nexports.clipPointsByRect = clipPointsByRect;\nexports.clipRectByRect = clipRectByRect;\nexports.createIcon = createIcon;\nexports.linePolygonIntersect = linePolygonIntersect;\nexports.lineLineIntersect = lineLineIntersect;","\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 BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _number = require(\"./number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar formatUtil = require(\"./format\");\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// Layout helpers for each component positioning\nvar each = zrUtil.each;\n/**\n * @public\n */\n\nvar LOCATION_PARAMS = ['left', 'right', 'top', 'bottom', 'width', 'height'];\n/**\n * @public\n */\n\nvar HV_NAMES = [['width', 'left', 'right'], ['height', 'top', 'bottom']];\n\nfunction boxLayout(orient, group, gap, maxWidth, maxHeight) {\n var x = 0;\n var y = 0;\n\n if (maxWidth == null) {\n maxWidth = Infinity;\n }\n\n if (maxHeight == null) {\n maxHeight = Infinity;\n }\n\n var currentLineMaxSize = 0;\n group.eachChild(function (child, idx) {\n var position = child.position;\n var rect = child.getBoundingRect();\n var nextChild = group.childAt(idx + 1);\n var nextChildRect = nextChild && nextChild.getBoundingRect();\n var nextX;\n var nextY;\n\n if (orient === 'horizontal') {\n var moveX = rect.width + (nextChildRect ? -nextChildRect.x + rect.x : 0);\n nextX = x + moveX; // Wrap when width exceeds maxWidth or meet a `newline` group\n // FIXME compare before adding gap?\n\n if (nextX > maxWidth || child.newline) {\n x = 0;\n nextX = moveX;\n y += currentLineMaxSize + gap;\n currentLineMaxSize = rect.height;\n } else {\n // FIXME: consider rect.y is not `0`?\n currentLineMaxSize = Math.max(currentLineMaxSize, rect.height);\n }\n } else {\n var moveY = rect.height + (nextChildRect ? -nextChildRect.y + rect.y : 0);\n nextY = y + moveY; // Wrap when width exceeds maxHeight or meet a `newline` group\n\n if (nextY > maxHeight || child.newline) {\n x += currentLineMaxSize + gap;\n y = 0;\n nextY = moveY;\n currentLineMaxSize = rect.width;\n } else {\n currentLineMaxSize = Math.max(currentLineMaxSize, rect.width);\n }\n }\n\n if (child.newline) {\n return;\n }\n\n position[0] = x;\n position[1] = y;\n orient === 'horizontal' ? x = nextX + gap : y = nextY + gap;\n });\n}\n/**\n * VBox or HBox layouting\n * @param {string} orient\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\n\nvar box = boxLayout;\n/**\n * VBox layouting\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\nvar vbox = zrUtil.curry(boxLayout, 'vertical');\n/**\n * HBox layouting\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\nvar hbox = zrUtil.curry(boxLayout, 'horizontal');\n/**\n * If x or x2 is not specified or 'center' 'left' 'right',\n * the width would be as long as possible.\n * If y or y2 is not specified or 'middle' 'top' 'bottom',\n * the height would be as long as possible.\n *\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.x]\n * @param {number|string} [positionInfo.y]\n * @param {number|string} [positionInfo.x2]\n * @param {number|string} [positionInfo.y2]\n * @param {Object} containerRect {width, height}\n * @param {string|number} margin\n * @return {Object} {width, height}\n */\n\nfunction getAvailableSize(positionInfo, containerRect, margin) {\n var containerWidth = containerRect.width;\n var containerHeight = containerRect.height;\n var x = parsePercent(positionInfo.x, containerWidth);\n var y = parsePercent(positionInfo.y, containerHeight);\n var x2 = parsePercent(positionInfo.x2, containerWidth);\n var y2 = parsePercent(positionInfo.y2, containerHeight);\n (isNaN(x) || isNaN(parseFloat(positionInfo.x))) && (x = 0);\n (isNaN(x2) || isNaN(parseFloat(positionInfo.x2))) && (x2 = containerWidth);\n (isNaN(y) || isNaN(parseFloat(positionInfo.y))) && (y = 0);\n (isNaN(y2) || isNaN(parseFloat(positionInfo.y2))) && (y2 = containerHeight);\n margin = formatUtil.normalizeCssArray(margin || 0);\n return {\n width: Math.max(x2 - x - margin[1] - margin[3], 0),\n height: Math.max(y2 - y - margin[0] - margin[2], 0)\n };\n}\n/**\n * Parse position info.\n *\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.left]\n * @param {number|string} [positionInfo.top]\n * @param {number|string} [positionInfo.right]\n * @param {number|string} [positionInfo.bottom]\n * @param {number|string} [positionInfo.width]\n * @param {number|string} [positionInfo.height]\n * @param {number|string} [positionInfo.aspect] Aspect is width / height\n * @param {Object} containerRect\n * @param {string|number} [margin]\n *\n * @return {module:zrender/core/BoundingRect}\n */\n\n\nfunction getLayoutRect(positionInfo, containerRect, margin) {\n margin = formatUtil.normalizeCssArray(margin || 0);\n var containerWidth = containerRect.width;\n var containerHeight = containerRect.height;\n var left = parsePercent(positionInfo.left, containerWidth);\n var top = parsePercent(positionInfo.top, containerHeight);\n var right = parsePercent(positionInfo.right, containerWidth);\n var bottom = parsePercent(positionInfo.bottom, containerHeight);\n var width = parsePercent(positionInfo.width, containerWidth);\n var height = parsePercent(positionInfo.height, containerHeight);\n var verticalMargin = margin[2] + margin[0];\n var horizontalMargin = margin[1] + margin[3];\n var aspect = positionInfo.aspect; // If width is not specified, calculate width from left and right\n\n if (isNaN(width)) {\n width = containerWidth - right - horizontalMargin - left;\n }\n\n if (isNaN(height)) {\n height = containerHeight - bottom - verticalMargin - top;\n }\n\n if (aspect != null) {\n // If width and height are not given\n // 1. Graph should not exceeds the container\n // 2. Aspect must be keeped\n // 3. Graph should take the space as more as possible\n // FIXME\n // Margin is not considered, because there is no case that both\n // using margin and aspect so far.\n if (isNaN(width) && isNaN(height)) {\n if (aspect > containerWidth / containerHeight) {\n width = containerWidth * 0.8;\n } else {\n height = containerHeight * 0.8;\n }\n } // Calculate width or height with given aspect\n\n\n if (isNaN(width)) {\n width = aspect * height;\n }\n\n if (isNaN(height)) {\n height = width / aspect;\n }\n } // If left is not specified, calculate left from right and width\n\n\n if (isNaN(left)) {\n left = containerWidth - right - width - horizontalMargin;\n }\n\n if (isNaN(top)) {\n top = containerHeight - bottom - height - verticalMargin;\n } // Align left and top\n\n\n switch (positionInfo.left || positionInfo.right) {\n case 'center':\n left = containerWidth / 2 - width / 2 - margin[3];\n break;\n\n case 'right':\n left = containerWidth - width - horizontalMargin;\n break;\n }\n\n switch (positionInfo.top || positionInfo.bottom) {\n case 'middle':\n case 'center':\n top = containerHeight / 2 - height / 2 - margin[0];\n break;\n\n case 'bottom':\n top = containerHeight - height - verticalMargin;\n break;\n } // If something is wrong and left, top, width, height are calculated as NaN\n\n\n left = left || 0;\n top = top || 0;\n\n if (isNaN(width)) {\n // Width may be NaN if only one value is given except width\n width = containerWidth - horizontalMargin - left - (right || 0);\n }\n\n if (isNaN(height)) {\n // Height may be NaN if only one value is given except height\n height = containerHeight - verticalMargin - top - (bottom || 0);\n }\n\n var rect = new BoundingRect(left + margin[3], top + margin[0], width, height);\n rect.margin = margin;\n return rect;\n}\n/**\n * Position a zr element in viewport\n * Group position is specified by either\n * {left, top}, {right, bottom}\n * If all properties exists, right and bottom will be igonred.\n *\n * Logic:\n * 1. Scale (against origin point in parent coord)\n * 2. Rotate (against origin point in parent coord)\n * 3. Traslate (with el.position by this method)\n * So this method only fixes the last step 'Traslate', which does not affect\n * scaling and rotating.\n *\n * If be called repeatly with the same input el, the same result will be gotten.\n *\n * @param {module:zrender/Element} el Should have `getBoundingRect` method.\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.left]\n * @param {number|string} [positionInfo.top]\n * @param {number|string} [positionInfo.right]\n * @param {number|string} [positionInfo.bottom]\n * @param {number|string} [positionInfo.width] Only for opt.boundingModel: 'raw'\n * @param {number|string} [positionInfo.height] Only for opt.boundingModel: 'raw'\n * @param {Object} containerRect\n * @param {string|number} margin\n * @param {Object} [opt]\n * @param {Array.} [opt.hv=[1,1]] Only horizontal or only vertical.\n * @param {Array.} [opt.boundingMode='all']\n * Specify how to calculate boundingRect when locating.\n * 'all': Position the boundingRect that is transformed and uioned\n * both itself and its descendants.\n * This mode simplies confine the elements in the bounding\n * of their container (e.g., using 'right: 0').\n * 'raw': Position the boundingRect that is not transformed and only itself.\n * This mode is useful when you want a element can overflow its\n * container. (Consider a rotated circle needs to be located in a corner.)\n * In this mode positionInfo.width/height can only be number.\n */\n\n\nfunction positionElement(el, positionInfo, containerRect, margin, opt) {\n var h = !opt || !opt.hv || opt.hv[0];\n var v = !opt || !opt.hv || opt.hv[1];\n var boundingMode = opt && opt.boundingMode || 'all';\n\n if (!h && !v) {\n return;\n }\n\n var rect;\n\n if (boundingMode === 'raw') {\n rect = el.type === 'group' ? new BoundingRect(0, 0, +positionInfo.width || 0, +positionInfo.height || 0) : el.getBoundingRect();\n } else {\n rect = el.getBoundingRect();\n\n if (el.needLocalTransform()) {\n var transform = el.getLocalTransform(); // Notice: raw rect may be inner object of el,\n // which should not be modified.\n\n rect = rect.clone();\n rect.applyTransform(transform);\n }\n } // The real width and height can not be specified but calculated by the given el.\n\n\n positionInfo = getLayoutRect(zrUtil.defaults({\n width: rect.width,\n height: rect.height\n }, positionInfo), containerRect, margin); // Because 'tranlate' is the last step in transform\n // (see zrender/core/Transformable#getLocalTransform),\n // we can just only modify el.position to get final result.\n\n var elPos = el.position;\n var dx = h ? positionInfo.x - rect.x : 0;\n var dy = v ? positionInfo.y - rect.y : 0;\n el.attr('position', boundingMode === 'raw' ? [dx, dy] : [elPos[0] + dx, elPos[1] + dy]);\n}\n/**\n * @param {Object} option Contains some of the properties in HV_NAMES.\n * @param {number} hvIdx 0: horizontal; 1: vertical.\n */\n\n\nfunction sizeCalculable(option, hvIdx) {\n return option[HV_NAMES[hvIdx][0]] != null || option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null;\n}\n/**\n * Consider Case:\n * When defulat option has {left: 0, width: 100}, and we set {right: 0}\n * through setOption or media query, using normal zrUtil.merge will cause\n * {right: 0} does not take effect.\n *\n * @example\n * ComponentModel.extend({\n * init: function () {\n * ...\n * var inputPositionParams = layout.getLayoutParams(option);\n * this.mergeOption(inputPositionParams);\n * },\n * mergeOption: function (newOption) {\n * newOption && zrUtil.merge(thisOption, newOption, true);\n * layout.mergeLayoutParam(thisOption, newOption);\n * }\n * });\n *\n * @param {Object} targetOption\n * @param {Object} newOption\n * @param {Object|string} [opt]\n * @param {boolean|Array.} [opt.ignoreSize=false] Used for the components\n * that width (or height) should not be calculated by left and right (or top and bottom).\n */\n\n\nfunction mergeLayoutParam(targetOption, newOption, opt) {\n !zrUtil.isObject(opt) && (opt = {});\n var ignoreSize = opt.ignoreSize;\n !zrUtil.isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);\n var hResult = merge(HV_NAMES[0], 0);\n var vResult = merge(HV_NAMES[1], 1);\n copy(HV_NAMES[0], targetOption, hResult);\n copy(HV_NAMES[1], targetOption, vResult);\n\n function merge(names, hvIdx) {\n var newParams = {};\n var newValueCount = 0;\n var merged = {};\n var mergedValueCount = 0;\n var enoughParamNumber = 2;\n each(names, function (name) {\n merged[name] = targetOption[name];\n });\n each(names, function (name) {\n // Consider case: newOption.width is null, which is\n // set by user for removing width setting.\n hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]);\n hasValue(newParams, name) && newValueCount++;\n hasValue(merged, name) && mergedValueCount++;\n });\n\n if (ignoreSize[hvIdx]) {\n // Only one of left/right is premitted to exist.\n if (hasValue(newOption, names[1])) {\n merged[names[2]] = null;\n } else if (hasValue(newOption, names[2])) {\n merged[names[1]] = null;\n }\n\n return merged;\n } // Case: newOption: {width: ..., right: ...},\n // or targetOption: {right: ...} and newOption: {width: ...},\n // There is no conflict when merged only has params count\n // little than enoughParamNumber.\n\n\n if (mergedValueCount === enoughParamNumber || !newValueCount) {\n return merged;\n } // Case: newOption: {width: ..., right: ...},\n // Than we can make sure user only want those two, and ignore\n // all origin params in targetOption.\n else if (newValueCount >= enoughParamNumber) {\n return newParams;\n } else {\n // Chose another param from targetOption by priority.\n for (var i = 0; i < names.length; i++) {\n var name = names[i];\n\n if (!hasProp(newParams, name) && hasProp(targetOption, name)) {\n newParams[name] = targetOption[name];\n break;\n }\n }\n\n return newParams;\n }\n }\n\n function hasProp(obj, name) {\n return obj.hasOwnProperty(name);\n }\n\n function hasValue(obj, name) {\n return obj[name] != null && obj[name] !== 'auto';\n }\n\n function copy(names, target, source) {\n each(names, function (name) {\n target[name] = source[name];\n });\n }\n}\n/**\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\n * @param {Object} source\n * @return {Object} Result contains those props.\n */\n\n\nfunction getLayoutParams(source) {\n return copyLayoutParams({}, source);\n}\n/**\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\n * @param {Object} source\n * @return {Object} Result contains those props.\n */\n\n\nfunction copyLayoutParams(target, source) {\n source && target && each(LOCATION_PARAMS, function (name) {\n source.hasOwnProperty(name) && (target[name] = source[name]);\n });\n return target;\n}\n\nexports.LOCATION_PARAMS = LOCATION_PARAMS;\nexports.HV_NAMES = HV_NAMES;\nexports.box = box;\nexports.vbox = vbox;\nexports.hbox = hbox;\nexports.getAvailableSize = getAvailableSize;\nexports.getLayoutRect = getLayoutRect;\nexports.positionElement = positionElement;\nexports.sizeCalculable = sizeCalculable;\nexports.mergeLayoutParam = mergeLayoutParam;\nexports.getLayoutParams = getLayoutParams;\nexports.copyLayoutParams = copyLayoutParams;","\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 env = require(\"zrender/lib/core/env\");\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 each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar isArray = zrUtil.isArray;\n/**\n * Make the name displayable. But we should\n * make sure it is not duplicated with user\n * specified name, so use '\\0';\n */\n\nvar DUMMY_COMPONENT_NAME_PREFIX = 'series\\0';\n/**\n * If value is not array, then translate it to array.\n * @param {*} value\n * @return {Array} [value] or value\n */\n\nfunction normalizeToArray(value) {\n return value instanceof Array ? value : value == null ? [] : [value];\n}\n/**\n * Sync default option between normal and emphasis like `position` and `show`\n * In case some one will write code like\n * label: {\n * show: false,\n * position: 'outside',\n * fontSize: 18\n * },\n * emphasis: {\n * label: { show: true }\n * }\n * @param {Object} opt\n * @param {string} key\n * @param {Array.} subOpts\n */\n\n\nfunction defaultEmphasis(opt, key, subOpts) {\n // Caution: performance sensitive.\n if (opt) {\n opt[key] = opt[key] || {};\n opt.emphasis = opt.emphasis || {};\n opt.emphasis[key] = opt.emphasis[key] || {}; // Default emphasis option from normal\n\n for (var i = 0, len = subOpts.length; i < len; i++) {\n var subOptName = subOpts[i];\n\n if (!opt.emphasis[key].hasOwnProperty(subOptName) && opt[key].hasOwnProperty(subOptName)) {\n opt.emphasis[key][subOptName] = opt[key][subOptName];\n }\n }\n }\n}\n\nvar TEXT_STYLE_OPTIONS = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'rich', 'tag', 'color', 'textBorderColor', 'textBorderWidth', 'width', 'height', 'lineHeight', 'align', 'verticalAlign', 'baseline', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY', 'backgroundColor', 'borderColor', 'borderWidth', 'borderRadius', 'padding']; // modelUtil.LABEL_OPTIONS = modelUtil.TEXT_STYLE_OPTIONS.concat([\n// 'position', 'offset', 'rotate', 'origin', 'show', 'distance', 'formatter',\n// 'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\n// // FIXME: deprecated, check and remove it.\n// 'textStyle'\n// ]);\n\n/**\n * The method do not ensure performance.\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method retieves value from data.\n * @param {string|number|Date|Array|Object} dataItem\n * @return {number|string|Date|Array.}\n */\n\nfunction getDataItemValue(dataItem) {\n return isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date) ? dataItem.value : dataItem;\n}\n/**\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method determine if dataItem has extra option besides value\n * @param {string|number|Date|Array|Object} dataItem\n */\n\n\nfunction isDataItemOption(dataItem) {\n return isObject(dataItem) && !(dataItem instanceof Array); // // markLine data can be array\n // && !(dataItem[0] && isObject(dataItem[0]) && !(dataItem[0] instanceof Array));\n}\n/**\n * Mapping to exists for merge.\n *\n * @public\n * @param {Array.|Array.} exists\n * @param {Object|Array.} newCptOptions\n * @return {Array.} Result, like [{exist: ..., option: ...}, {}],\n * index of which is the same as exists.\n */\n\n\nfunction mappingToExists(exists, newCptOptions) {\n // Mapping by the order by original option (but not order of\n // new option) in merge mode. Because we should ensure\n // some specified index (like xAxisIndex) is consistent with\n // original option, which is easy to understand, espatially in\n // media query. And in most case, merge option is used to\n // update partial option but not be expected to change order.\n newCptOptions = (newCptOptions || []).slice();\n var result = zrUtil.map(exists || [], function (obj, index) {\n return {\n exist: obj\n };\n }); // Mapping by id or name if specified.\n\n each(newCptOptions, function (cptOption, index) {\n if (!isObject(cptOption)) {\n return;\n } // id has highest priority.\n\n\n for (var i = 0; i < result.length; i++) {\n if (!result[i].option // Consider name: two map to one.\n && cptOption.id != null && result[i].exist.id === cptOption.id + '') {\n result[i].option = cptOption;\n newCptOptions[index] = null;\n return;\n }\n }\n\n for (var i = 0; i < result.length; i++) {\n var exist = result[i].exist;\n\n if (!result[i].option // Consider name: two map to one.\n // Can not match when both ids exist but different.\n && (exist.id == null || cptOption.id == null) && cptOption.name != null && !isIdInner(cptOption) && !isIdInner(exist) && exist.name === cptOption.name + '') {\n result[i].option = cptOption;\n newCptOptions[index] = null;\n return;\n }\n }\n }); // Otherwise mapping by index.\n\n each(newCptOptions, function (cptOption, index) {\n if (!isObject(cptOption)) {\n return;\n }\n\n var i = 0;\n\n for (; i < result.length; i++) {\n var exist = result[i].exist;\n\n if (!result[i].option // Existing model that already has id should be able to\n // mapped to (because after mapping performed model may\n // be assigned with a id, whish should not affect next\n // mapping), except those has inner id.\n && !isIdInner(exist) // Caution:\n // Do not overwrite id. But name can be overwritten,\n // because axis use name as 'show label text'.\n // 'exist' always has id and name and we dont\n // need to check it.\n && cptOption.id == null) {\n result[i].option = cptOption;\n break;\n }\n }\n\n if (i >= result.length) {\n result.push({\n option: cptOption\n });\n }\n });\n return result;\n}\n/**\n * Make id and name for mapping result (result of mappingToExists)\n * into `keyInfo` field.\n *\n * @public\n * @param {Array.} Result, like [{exist: ..., option: ...}, {}],\n * which order is the same as exists.\n * @return {Array.} The input.\n */\n\n\nfunction makeIdAndName(mapResult) {\n // We use this id to hash component models and view instances\n // in echarts. id can be specified by user, or auto generated.\n // The id generation rule ensures new view instance are able\n // to mapped to old instance when setOption are called in\n // no-merge mode. So we generate model id by name and plus\n // type in view id.\n // name can be duplicated among components, which is convenient\n // to specify multi components (like series) by one name.\n // Ensure that each id is distinct.\n var idMap = zrUtil.createHashMap();\n each(mapResult, function (item, index) {\n var existCpt = item.exist;\n existCpt && idMap.set(existCpt.id, item);\n });\n each(mapResult, function (item, index) {\n var opt = item.option;\n zrUtil.assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, 'id duplicates: ' + (opt && opt.id));\n opt && opt.id != null && idMap.set(opt.id, item);\n !item.keyInfo && (item.keyInfo = {});\n }); // Make name and id.\n\n each(mapResult, function (item, index) {\n var existCpt = item.exist;\n var opt = item.option;\n var keyInfo = item.keyInfo;\n\n if (!isObject(opt)) {\n return;\n } // name can be overwitten. Consider case: axis.name = '20km'.\n // But id generated by name will not be changed, which affect\n // only in that case: setOption with 'not merge mode' and view\n // instance will be recreated, which can be accepted.\n\n\n keyInfo.name = opt.name != null ? opt.name + '' : existCpt ? existCpt.name // Avoid diffferent series has the same name,\n // because name may be used like in color pallet.\n : DUMMY_COMPONENT_NAME_PREFIX + index;\n\n if (existCpt) {\n keyInfo.id = existCpt.id;\n } else if (opt.id != null) {\n keyInfo.id = opt.id + '';\n } else {\n // Consider this situatoin:\n // optionA: [{name: 'a'}, {name: 'a'}, {..}]\n // optionB [{..}, {name: 'a'}, {name: 'a'}]\n // Series with the same name between optionA and optionB\n // should be mapped.\n var idNum = 0;\n\n do {\n keyInfo.id = '\\0' + keyInfo.name + '\\0' + idNum++;\n } while (idMap.get(keyInfo.id));\n }\n\n idMap.set(keyInfo.id, item);\n });\n}\n\nfunction isNameSpecified(componentModel) {\n var name = componentModel.name; // Is specified when `indexOf` get -1 or > 0.\n\n return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));\n}\n/**\n * @public\n * @param {Object} cptOption\n * @return {boolean}\n */\n\n\nfunction isIdInner(cptOption) {\n return isObject(cptOption) && cptOption.id && (cptOption.id + '').indexOf('\\0_ec_\\0') === 0;\n}\n/**\n * A helper for removing duplicate items between batchA and batchB,\n * and in themselves, and categorize by series.\n *\n * @param {Array.} batchA Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @param {Array.} batchB Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @return {Array., Array.>} result: [resultBatchA, resultBatchB]\n */\n\n\nfunction compressBatches(batchA, batchB) {\n var mapA = {};\n var mapB = {};\n makeMap(batchA || [], mapA);\n makeMap(batchB || [], mapB, mapA);\n return [mapToArray(mapA), mapToArray(mapB)];\n\n function makeMap(sourceBatch, map, otherMap) {\n for (var i = 0, len = sourceBatch.length; i < len; i++) {\n var seriesId = sourceBatch[i].seriesId;\n var dataIndices = normalizeToArray(sourceBatch[i].dataIndex);\n var otherDataIndices = otherMap && otherMap[seriesId];\n\n for (var j = 0, lenj = dataIndices.length; j < lenj; j++) {\n var dataIndex = dataIndices[j];\n\n if (otherDataIndices && otherDataIndices[dataIndex]) {\n otherDataIndices[dataIndex] = null;\n } else {\n (map[seriesId] || (map[seriesId] = {}))[dataIndex] = 1;\n }\n }\n }\n }\n\n function mapToArray(map, isData) {\n var result = [];\n\n for (var i in map) {\n if (map.hasOwnProperty(i) && map[i] != null) {\n if (isData) {\n result.push(+i);\n } else {\n var dataIndices = mapToArray(map[i], true);\n dataIndices.length && result.push({\n seriesId: i,\n dataIndex: dataIndices\n });\n }\n }\n }\n\n return result;\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Object} payload Contains dataIndex (means rawIndex) / dataIndexInside / name\n * each of which can be Array or primary type.\n * @return {number|Array.} dataIndex If not found, return undefined/null.\n */\n\n\nfunction queryDataIndex(data, payload) {\n if (payload.dataIndexInside != null) {\n return payload.dataIndexInside;\n } else if (payload.dataIndex != null) {\n return zrUtil.isArray(payload.dataIndex) ? zrUtil.map(payload.dataIndex, function (value) {\n return data.indexOfRawIndex(value);\n }) : data.indexOfRawIndex(payload.dataIndex);\n } else if (payload.name != null) {\n return zrUtil.isArray(payload.name) ? zrUtil.map(payload.name, function (value) {\n return data.indexOfName(value);\n }) : data.indexOfName(payload.name);\n }\n}\n/**\n * Enable property storage to any host object.\n * Notice: Serialization is not supported.\n *\n * For example:\n * var inner = zrUitl.makeInner();\n *\n * function some1(hostObj) {\n * inner(hostObj).someProperty = 1212;\n * ...\n * }\n * function some2() {\n * var fields = inner(this);\n * fields.someProperty1 = 1212;\n * fields.someProperty2 = 'xx';\n * ...\n * }\n *\n * @return {Function}\n */\n\n\nfunction makeInner() {\n // Consider different scope by es module import.\n var key = '__\\0ec_inner_' + innerUniqueIndex++ + '_' + Math.random().toFixed(5);\n return function (hostObj) {\n return hostObj[key] || (hostObj[key] = {});\n };\n}\n\nvar innerUniqueIndex = 0;\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex, seriesId, seriesName,\n * geoIndex, geoId, geoName,\n * bmapIndex, bmapId, bmapName,\n * xAxisIndex, xAxisId, xAxisName,\n * yAxisIndex, yAxisId, yAxisName,\n * gridIndex, gridId, gridName,\n * ... (can be extended)\n * }\n * Each properties can be number|string|Array.|Array.\n * For example, a finder could be\n * {\n * seriesIndex: 3,\n * geoId: ['aa', 'cc'],\n * gridName: ['xx', 'rr']\n * }\n * xxxIndex can be set as 'all' (means all xxx) or 'none' (means not specify)\n * If nothing or null/undefined specified, return nothing.\n * @param {Object} [opt]\n * @param {string} [opt.defaultMainType]\n * @param {Array.} [opt.includeMainTypes]\n * @return {Object} result like:\n * {\n * seriesModels: [seriesModel1, seriesModel2],\n * seriesModel: seriesModel1, // The first model\n * geoModels: [geoModel1, geoModel2],\n * geoModel: geoModel1, // The first model\n * ...\n * }\n */\n\nfunction parseFinder(ecModel, finder, opt) {\n if (zrUtil.isString(finder)) {\n var obj = {};\n obj[finder + 'Index'] = 0;\n finder = obj;\n }\n\n var defaultMainType = opt && opt.defaultMainType;\n\n if (defaultMainType && !has(finder, defaultMainType + 'Index') && !has(finder, defaultMainType + 'Id') && !has(finder, defaultMainType + 'Name')) {\n finder[defaultMainType + 'Index'] = 0;\n }\n\n var result = {};\n each(finder, function (value, key) {\n var value = finder[key]; // Exclude 'dataIndex' and other illgal keys.\n\n if (key === 'dataIndex' || key === 'dataIndexInside') {\n result[key] = value;\n return;\n }\n\n var parsedKey = key.match(/^(\\w+)(Index|Id|Name)$/) || [];\n var mainType = parsedKey[1];\n var queryType = (parsedKey[2] || '').toLowerCase();\n\n if (!mainType || !queryType || value == null || queryType === 'index' && value === 'none' || opt && opt.includeMainTypes && zrUtil.indexOf(opt.includeMainTypes, mainType) < 0) {\n return;\n }\n\n var queryParam = {\n mainType: mainType\n };\n\n if (queryType !== 'index' || value !== 'all') {\n queryParam[queryType] = value;\n }\n\n var models = ecModel.queryComponents(queryParam);\n result[mainType + 'Models'] = models;\n result[mainType + 'Model'] = models[0];\n });\n return result;\n}\n\nfunction has(obj, prop) {\n return obj && obj.hasOwnProperty(prop);\n}\n\nfunction setAttribute(dom, key, value) {\n dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value;\n}\n\nfunction getAttribute(dom, key) {\n return dom.getAttribute ? dom.getAttribute(key) : dom[key];\n}\n\nfunction getTooltipRenderMode(renderModeOption) {\n if (renderModeOption === 'auto') {\n // Using html when `document` exists, use richText otherwise\n return env.domSupported ? 'html' : 'richText';\n } else {\n return renderModeOption || 'html';\n }\n}\n/**\n * Group a list by key.\n *\n * @param {Array} array\n * @param {Function} getKey\n * param {*} Array item\n * return {string} key\n * @return {Object} Result\n * {Array}: keys,\n * {module:zrender/core/util/HashMap} buckets: {key -> Array}\n */\n\n\nfunction groupData(array, getKey) {\n var buckets = zrUtil.createHashMap();\n var keys = [];\n zrUtil.each(array, function (item) {\n var key = getKey(item);\n (buckets.get(key) || (keys.push(key), buckets.set(key, []))).push(item);\n });\n return {\n keys: keys,\n buckets: buckets\n };\n}\n\nexports.normalizeToArray = normalizeToArray;\nexports.defaultEmphasis = defaultEmphasis;\nexports.TEXT_STYLE_OPTIONS = TEXT_STYLE_OPTIONS;\nexports.getDataItemValue = getDataItemValue;\nexports.isDataItemOption = isDataItemOption;\nexports.mappingToExists = mappingToExists;\nexports.makeIdAndName = makeIdAndName;\nexports.isNameSpecified = isNameSpecified;\nexports.isIdInner = isIdInner;\nexports.compressBatches = compressBatches;\nexports.queryDataIndex = queryDataIndex;\nexports.makeInner = makeInner;\nexports.parseFinder = parseFinder;\nexports.setAttribute = setAttribute;\nexports.getAttribute = getAttribute;\nexports.getTooltipRenderMode = getTooltipRenderMode;\nexports.groupData = groupData;","\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*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* The method \"quantile\" was copied from \"d3.js\".\n* (See more details in the comment of the method below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\nvar RADIAN_EPSILON = 1e-4;\n\nfunction _trim(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n/**\n * Linear mapping a value from domain to range\n * @memberOf module:echarts/util/number\n * @param {(number|Array.)} val\n * @param {Array.} domain Domain extent domain[0] can be bigger than domain[1]\n * @param {Array.} range Range extent range[0] can be bigger than range[1]\n * @param {boolean} clamp\n * @return {(number|Array.}\n */\n\n\nfunction linearMap(val, domain, range, clamp) {\n var subDomain = domain[1] - domain[0];\n var subRange = range[1] - range[0];\n\n if (subDomain === 0) {\n return subRange === 0 ? range[0] : (range[0] + range[1]) / 2;\n } // Avoid accuracy problem in edge, such as\n // 146.39 - 62.83 === 83.55999999999999.\n // See echarts/test/ut/spec/util/number.js#linearMap#accuracyError\n // It is a little verbose for efficiency considering this method\n // is a hotspot.\n\n\n if (clamp) {\n if (subDomain > 0) {\n if (val <= domain[0]) {\n return range[0];\n } else if (val >= domain[1]) {\n return range[1];\n }\n } else {\n if (val >= domain[0]) {\n return range[0];\n } else if (val <= domain[1]) {\n return range[1];\n }\n }\n } else {\n if (val === domain[0]) {\n return range[0];\n }\n\n if (val === domain[1]) {\n return range[1];\n }\n }\n\n return (val - domain[0]) / subDomain * subRange + range[0];\n}\n/**\n * Convert a percent string to absolute number.\n * Returns NaN if percent is not a valid string or number\n * @memberOf module:echarts/util/number\n * @param {string|number} percent\n * @param {number} all\n * @return {number}\n */\n\n\nfunction parsePercent(percent, all) {\n switch (percent) {\n case 'center':\n case 'middle':\n percent = '50%';\n break;\n\n case 'left':\n case 'top':\n percent = '0%';\n break;\n\n case 'right':\n case 'bottom':\n percent = '100%';\n break;\n }\n\n if (typeof percent === 'string') {\n if (_trim(percent).match(/%$/)) {\n return parseFloat(percent) / 100 * all;\n }\n\n return parseFloat(percent);\n }\n\n return percent == null ? NaN : +percent;\n}\n/**\n * (1) Fix rounding error of float numbers.\n * (2) Support return string to avoid scientific notation like '3.5e-7'.\n *\n * @param {number} x\n * @param {number} [precision]\n * @param {boolean} [returnStr]\n * @return {number|string}\n */\n\n\nfunction round(x, precision, returnStr) {\n if (precision == null) {\n precision = 10;\n } // Avoid range error\n\n\n precision = Math.min(Math.max(0, precision), 20);\n x = (+x).toFixed(precision);\n return returnStr ? x : +x;\n}\n/**\n * asc sort arr.\n * The input arr will be modified.\n *\n * @param {Array} arr\n * @return {Array} The input arr.\n */\n\n\nfunction asc(arr) {\n arr.sort(function (a, b) {\n return a - b;\n });\n return arr;\n}\n/**\n * Get precision\n * @param {number} val\n */\n\n\nfunction getPrecision(val) {\n val = +val;\n\n if (isNaN(val)) {\n return 0;\n } // It is much faster than methods converting number to string as follows\n // var tmp = val.toString();\n // return tmp.length - 1 - tmp.indexOf('.');\n // especially when precision is low\n\n\n var e = 1;\n var count = 0;\n\n while (Math.round(val * e) / e !== val) {\n e *= 10;\n count++;\n }\n\n return count;\n}\n/**\n * @param {string|number} val\n * @return {number}\n */\n\n\nfunction getPrecisionSafe(val) {\n var str = val.toString(); // Consider scientific notation: '3.4e-12' '3.4e+12'\n\n var eIndex = str.indexOf('e');\n\n if (eIndex > 0) {\n var precision = +str.slice(eIndex + 1);\n return precision < 0 ? -precision : 0;\n } else {\n var dotIndex = str.indexOf('.');\n return dotIndex < 0 ? 0 : str.length - 1 - dotIndex;\n }\n}\n/**\n * Minimal dicernible data precisioin according to a single pixel.\n *\n * @param {Array.} dataExtent\n * @param {Array.} pixelExtent\n * @return {number} precision\n */\n\n\nfunction getPixelPrecision(dataExtent, pixelExtent) {\n var log = Math.log;\n var LN10 = Math.LN10;\n var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);\n var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10); // toFixed() digits argument must be between 0 and 20.\n\n var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);\n return !isFinite(precision) ? 20 : precision;\n}\n/**\n * Get a data of given precision, assuring the sum of percentages\n * in valueList is 1.\n * The largest remainer method is used.\n * https://en.wikipedia.org/wiki/Largest_remainder_method\n *\n * @param {Array.} valueList a list of all data\n * @param {number} idx index of the data to be processed in valueList\n * @param {number} precision integer number showing digits of precision\n * @return {number} percent ranging from 0 to 100\n */\n\n\nfunction getPercentWithPrecision(valueList, idx, precision) {\n if (!valueList[idx]) {\n return 0;\n }\n\n var sum = zrUtil.reduce(valueList, function (acc, val) {\n return acc + (isNaN(val) ? 0 : val);\n }, 0);\n\n if (sum === 0) {\n return 0;\n }\n\n var digits = Math.pow(10, precision);\n var votesPerQuota = zrUtil.map(valueList, function (val) {\n return (isNaN(val) ? 0 : val) / sum * digits * 100;\n });\n var targetSeats = digits * 100;\n var seats = zrUtil.map(votesPerQuota, function (votes) {\n // Assign automatic seats.\n return Math.floor(votes);\n });\n var currentSum = zrUtil.reduce(seats, function (acc, val) {\n return acc + val;\n }, 0);\n var remainder = zrUtil.map(votesPerQuota, function (votes, idx) {\n return votes - seats[idx];\n }); // Has remainding votes.\n\n while (currentSum < targetSeats) {\n // Find next largest remainder.\n var max = Number.NEGATIVE_INFINITY;\n var maxId = null;\n\n for (var i = 0, len = remainder.length; i < len; ++i) {\n if (remainder[i] > max) {\n max = remainder[i];\n maxId = i;\n }\n } // Add a vote to max remainder.\n\n\n ++seats[maxId];\n remainder[maxId] = 0;\n ++currentSum;\n }\n\n return seats[idx] / digits;\n} // Number.MAX_SAFE_INTEGER, ie do not support.\n\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * To 0 - 2 * PI, considering negative radian.\n * @param {number} radian\n * @return {number}\n */\n\nfunction remRadian(radian) {\n var pi2 = Math.PI * 2;\n return (radian % pi2 + pi2) % pi2;\n}\n/**\n * @param {type} radian\n * @return {boolean}\n */\n\n\nfunction isRadianAroundZero(val) {\n return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\n}\n/* eslint-disable */\n\n\nvar TIME_REG = /^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d\\d)(?::(\\d\\d)(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/; // jshint ignore:line\n\n/* eslint-enable */\n\n/**\n * @param {string|Date|number} value These values can be accepted:\n * + An instance of Date, represent a time in its own time zone.\n * + Or string in a subset of ISO 8601, only including:\n * + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06',\n * + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123',\n * + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00',\n * all of which will be treated as local time if time zone is not specified\n * (see ).\n * + Or other string format, including (all of which will be treated as loacal time):\n * '2012', '2012-3-1', '2012/3/1', '2012/03/01',\n * '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123'\n * + a timestamp, which represent a time in UTC.\n * @return {Date} date\n */\n\nfunction parseDate(value) {\n if (value instanceof Date) {\n return value;\n } else if (typeof value === 'string') {\n // Different browsers parse date in different way, so we parse it manually.\n // Some other issues:\n // new Date('1970-01-01') is UTC,\n // new Date('1970/01/01') and new Date('1970-1-01') is local.\n // See issue #3623\n var match = TIME_REG.exec(value);\n\n if (!match) {\n // return Invalid Date.\n return new Date(NaN);\n } // Use local time when no timezone offset specifed.\n\n\n if (!match[8]) {\n // match[n] can only be string or undefined.\n // But take care of '12' + 1 => '121'.\n return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, +match[7] || 0);\n } // Timezoneoffset of Javascript Date has considered DST (Daylight Saving Time,\n // https://tc39.github.io/ecma262/#sec-daylight-saving-time-adjustment).\n // For example, system timezone is set as \"Time Zone: America/Toronto\",\n // then these code will get different result:\n // `new Date(1478411999999).getTimezoneOffset(); // get 240`\n // `new Date(1478412000000).getTimezoneOffset(); // get 300`\n // So we should not use `new Date`, but use `Date.UTC`.\n else {\n var hour = +match[4] || 0;\n\n if (match[8].toUpperCase() !== 'Z') {\n hour -= match[8].slice(0, 3);\n }\n\n return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, +match[7] || 0));\n }\n } else if (value == null) {\n return new Date(NaN);\n }\n\n return new Date(Math.round(value));\n}\n/**\n * Quantity of a number. e.g. 0.1, 1, 10, 100\n *\n * @param {number} val\n * @return {number}\n */\n\n\nfunction quantity(val) {\n return Math.pow(10, quantityExponent(val));\n}\n/**\n * Exponent of the quantity of a number\n * e.g., 1234 equals to 1.234*10^3, so quantityExponent(1234) is 3\n *\n * @param {number} val non-negative value\n * @return {number}\n */\n\n\nfunction quantityExponent(val) {\n if (val === 0) {\n return 0;\n }\n\n var exp = Math.floor(Math.log(val) / Math.LN10);\n /**\n * exp is expected to be the rounded-down result of the base-10 log of val.\n * But due to the precision loss with Math.log(val), we need to restore it\n * using 10^exp to make sure we can get val back from exp. #11249\n */\n\n if (val / Math.pow(10, exp) >= 10) {\n exp++;\n }\n\n return exp;\n}\n/**\n * find a “nice” number approximately equal to x. Round the number if round = true,\n * take ceiling if round = false. The primary observation is that the “nicest”\n * numbers in decimal are 1, 2, and 5, and all power-of-ten multiples of these numbers.\n *\n * See \"Nice Numbers for Graph Labels\" of Graphic Gems.\n *\n * @param {number} val Non-negative value.\n * @param {boolean} round\n * @return {number}\n */\n\n\nfunction nice(val, round) {\n var exponent = quantityExponent(val);\n var exp10 = Math.pow(10, exponent);\n var f = val / exp10; // 1 <= f < 10\n\n var nf;\n\n if (round) {\n if (f < 1.5) {\n nf = 1;\n } else if (f < 2.5) {\n nf = 2;\n } else if (f < 4) {\n nf = 3;\n } else if (f < 7) {\n nf = 5;\n } else {\n nf = 10;\n }\n } else {\n if (f < 1) {\n nf = 1;\n } else if (f < 2) {\n nf = 2;\n } else if (f < 3) {\n nf = 3;\n } else if (f < 5) {\n nf = 5;\n } else {\n nf = 10;\n }\n }\n\n val = nf * exp10; // Fix 3 * 0.1 === 0.30000000000000004 issue (see IEEE 754).\n // 20 is the uppper bound of toFixed.\n\n return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;\n}\n/**\n * This code was copied from \"d3.js\"\n * .\n * See the license statement at the head of this file.\n * @param {Array.} ascArr\n */\n\n\nfunction quantile(ascArr, p) {\n var H = (ascArr.length - 1) * p + 1;\n var h = Math.floor(H);\n var v = +ascArr[h - 1];\n var e = H - h;\n return e ? v + e * (ascArr[h] - v) : v;\n}\n/**\n * Order intervals asc, and split them when overlap.\n * expect(numberUtil.reformIntervals([\n * {interval: [18, 62], close: [1, 1]},\n * {interval: [-Infinity, -70], close: [0, 0]},\n * {interval: [-70, -26], close: [1, 1]},\n * {interval: [-26, 18], close: [1, 1]},\n * {interval: [62, 150], close: [1, 1]},\n * {interval: [106, 150], close: [1, 1]},\n * {interval: [150, Infinity], close: [0, 0]}\n * ])).toEqual([\n * {interval: [-Infinity, -70], close: [0, 0]},\n * {interval: [-70, -26], close: [1, 1]},\n * {interval: [-26, 18], close: [0, 1]},\n * {interval: [18, 62], close: [0, 1]},\n * {interval: [62, 150], close: [0, 1]},\n * {interval: [150, Infinity], close: [0, 0]}\n * ]);\n * @param {Array.} list, where `close` mean open or close\n * of the interval, and Infinity can be used.\n * @return {Array.} The origin list, which has been reformed.\n */\n\n\nfunction reformIntervals(list) {\n list.sort(function (a, b) {\n return littleThan(a, b, 0) ? -1 : 1;\n });\n var curr = -Infinity;\n var currClose = 1;\n\n for (var i = 0; i < list.length;) {\n var interval = list[i].interval;\n var close = list[i].close;\n\n for (var lg = 0; lg < 2; lg++) {\n if (interval[lg] <= curr) {\n interval[lg] = curr;\n close[lg] = !lg ? 1 - currClose : 1;\n }\n\n curr = interval[lg];\n currClose = close[lg];\n }\n\n if (interval[0] === interval[1] && close[0] * close[1] !== 1) {\n list.splice(i, 1);\n } else {\n i++;\n }\n }\n\n return list;\n\n function littleThan(a, b, lg) {\n return a.interval[lg] < b.interval[lg] || a.interval[lg] === b.interval[lg] && (a.close[lg] - b.close[lg] === (!lg ? 1 : -1) || !lg && littleThan(a, b, 1));\n }\n}\n/**\n * parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n * ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n * subtraction forces infinities to NaN\n *\n * @param {*} v\n * @return {boolean}\n */\n\n\nfunction isNumeric(v) {\n return v - parseFloat(v) >= 0;\n}\n\nexports.linearMap = linearMap;\nexports.parsePercent = parsePercent;\nexports.round = round;\nexports.asc = asc;\nexports.getPrecision = getPrecision;\nexports.getPrecisionSafe = getPrecisionSafe;\nexports.getPixelPrecision = getPixelPrecision;\nexports.getPercentWithPrecision = getPercentWithPrecision;\nexports.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nexports.remRadian = remRadian;\nexports.isRadianAroundZero = isRadianAroundZero;\nexports.parseDate = parseDate;\nexports.quantity = quantity;\nexports.quantityExponent = quantityExponent;\nexports.nice = nice;\nexports.quantile = quantile;\nexports.reformIntervals = reformIntervals;\nexports.isNumeric = isNumeric;","\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(\"../graphic\");\n\nvar extendShape = _graphic.extendShape;\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 * Sausage: similar to sector, but have half circle on both sides\n * @public\n */\nvar _default = extendShape({\n type: 'sausage',\n shape: {\n cx: 0,\n cy: 0,\n r0: 0,\n r: 0,\n startAngle: 0,\n endAngle: Math.PI * 2,\n clockwise: true\n },\n buildPath: function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var r0 = Math.max(shape.r0 || 0, 0);\n var r = Math.max(shape.r, 0);\n var dr = (r - r0) * 0.5;\n var rCenter = r0 + dr;\n var startAngle = shape.startAngle;\n var endAngle = shape.endAngle;\n var clockwise = shape.clockwise;\n var unitStartX = Math.cos(startAngle);\n var unitStartY = Math.sin(startAngle);\n var unitEndX = Math.cos(endAngle);\n var unitEndY = Math.sin(endAngle);\n var lessThanCircle = clockwise ? endAngle - startAngle < Math.PI * 2 : startAngle - endAngle < Math.PI * 2;\n\n if (lessThanCircle) {\n ctx.moveTo(unitStartX * r0 + x, unitStartY * r0 + y);\n ctx.arc(unitStartX * rCenter + x, unitStartY * rCenter + y, dr, -Math.PI + startAngle, startAngle, !clockwise);\n }\n\n ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n ctx.moveTo(unitEndX * r + x, unitEndY * r + y);\n ctx.arc(unitEndX * rCenter + x, unitEndY * rCenter + y, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise);\n\n if (r0 !== 0) {\n ctx.arc(x, y, r0, endAngle, startAngle, clockwise);\n ctx.moveTo(unitStartX * r0 + x, unitEndY * r0 + y);\n }\n\n ctx.closePath();\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"./graphic\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _text = require(\"zrender/lib/contain/text\");\n\nvar calculateTextPosition = _text.calculateTextPosition;\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// Symbol factory\n\n/**\n * Triangle shape\n * @inner\n */\nvar Triangle = graphic.extendShape({\n type: 'triangle',\n shape: {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var cx = shape.cx;\n var cy = shape.cy;\n var width = shape.width / 2;\n var height = shape.height / 2;\n path.moveTo(cx, cy - height);\n path.lineTo(cx + width, cy + height);\n path.lineTo(cx - width, cy + height);\n path.closePath();\n }\n});\n/**\n * Diamond shape\n * @inner\n */\n\nvar Diamond = graphic.extendShape({\n type: 'diamond',\n shape: {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var cx = shape.cx;\n var cy = shape.cy;\n var width = shape.width / 2;\n var height = shape.height / 2;\n path.moveTo(cx, cy - height);\n path.lineTo(cx + width, cy);\n path.lineTo(cx, cy + height);\n path.lineTo(cx - width, cy);\n path.closePath();\n }\n});\n/**\n * Pin shape\n * @inner\n */\n\nvar Pin = graphic.extendShape({\n type: 'pin',\n shape: {\n // x, y on the cusp\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var x = shape.x;\n var y = shape.y;\n var w = shape.width / 5 * 3; // Height must be larger than width\n\n var h = Math.max(w, shape.height);\n var r = w / 2; // Dist on y with tangent point and circle center\n\n var dy = r * r / (h - r);\n var cy = y - h + r + dy;\n var angle = Math.asin(dy / r); // Dist on x with tangent point and circle center\n\n var dx = Math.cos(angle) * r;\n var tanX = Math.sin(angle);\n var tanY = Math.cos(angle);\n var cpLen = r * 0.6;\n var cpLen2 = r * 0.7;\n path.moveTo(x - dx, cy + dy);\n path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle);\n path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y);\n path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy);\n path.closePath();\n }\n});\n/**\n * Arrow shape\n * @inner\n */\n\nvar Arrow = graphic.extendShape({\n type: 'arrow',\n shape: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n buildPath: function (ctx, shape) {\n var height = shape.height;\n var width = shape.width;\n var x = shape.x;\n var y = shape.y;\n var dx = width / 3 * 2;\n ctx.moveTo(x, y);\n ctx.lineTo(x + dx, y + height);\n ctx.lineTo(x, y + height / 4 * 3);\n ctx.lineTo(x - dx, y + height);\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n});\n/**\n * Map of path contructors\n * @type {Object.}\n */\n\nvar symbolCtors = {\n line: graphic.Line,\n rect: graphic.Rect,\n roundRect: graphic.Rect,\n square: graphic.Rect,\n circle: graphic.Circle,\n diamond: Diamond,\n pin: Pin,\n arrow: Arrow,\n triangle: Triangle\n};\nvar symbolShapeMakers = {\n line: function (x, y, w, h, shape) {\n // FIXME\n shape.x1 = x;\n shape.y1 = y + h / 2;\n shape.x2 = x + w;\n shape.y2 = y + h / 2;\n },\n rect: function (x, y, w, h, shape) {\n shape.x = x;\n shape.y = y;\n shape.width = w;\n shape.height = h;\n },\n roundRect: function (x, y, w, h, shape) {\n shape.x = x;\n shape.y = y;\n shape.width = w;\n shape.height = h;\n shape.r = Math.min(w, h) / 4;\n },\n square: function (x, y, w, h, shape) {\n var size = Math.min(w, h);\n shape.x = x;\n shape.y = y;\n shape.width = size;\n shape.height = size;\n },\n circle: function (x, y, w, h, shape) {\n // Put circle in the center of square\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.r = Math.min(w, h) / 2;\n },\n diamond: function (x, y, w, h, shape) {\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n pin: function (x, y, w, h, shape) {\n shape.x = x + w / 2;\n shape.y = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n arrow: function (x, y, w, h, shape) {\n shape.x = x + w / 2;\n shape.y = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n triangle: function (x, y, w, h, shape) {\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.width = w;\n shape.height = h;\n }\n};\nvar symbolBuildProxies = {};\nzrUtil.each(symbolCtors, function (Ctor, name) {\n symbolBuildProxies[name] = new Ctor();\n});\nvar SymbolClz = graphic.extendShape({\n type: 'symbol',\n shape: {\n symbolType: '',\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n calculateTextPosition: function (out, style, rect) {\n var res = calculateTextPosition(out, style, rect);\n var shape = this.shape;\n\n if (shape && shape.symbolType === 'pin' && style.textPosition === 'inside') {\n res.y = rect.y + rect.height * 0.4;\n }\n\n return res;\n },\n buildPath: function (ctx, shape, inBundle) {\n var symbolType = shape.symbolType;\n\n if (symbolType !== 'none') {\n var proxySymbol = symbolBuildProxies[symbolType];\n\n if (!proxySymbol) {\n // Default rect\n symbolType = 'rect';\n proxySymbol = symbolBuildProxies[symbolType];\n }\n\n symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape);\n proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);\n }\n }\n}); // Provide setColor helper method to avoid determine if set the fill or stroke outside\n\nfunction symbolPathSetColor(color, innerColor) {\n if (this.type !== 'image') {\n var symbolStyle = this.style;\n var symbolShape = this.shape;\n\n if (symbolShape && symbolShape.symbolType === 'line') {\n symbolStyle.stroke = color;\n } else if (this.__isEmptyBrush) {\n symbolStyle.stroke = color;\n symbolStyle.fill = innerColor || '#fff';\n } else {\n // FIXME 判断图形默认是填充还是描边,使用 onlyStroke ?\n symbolStyle.fill && (symbolStyle.fill = color);\n symbolStyle.stroke && (symbolStyle.stroke = color);\n }\n\n this.dirty(false);\n }\n}\n/**\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\n * @param {string} symbolType\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {string} color\n * @param {boolean} [keepAspect=false] whether to keep the ratio of w/h,\n * for path and image only.\n */\n\n\nfunction createSymbol(symbolType, x, y, w, h, color, keepAspect) {\n // TODO Support image object, DynamicImage.\n var isEmpty = symbolType.indexOf('empty') === 0;\n\n if (isEmpty) {\n symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);\n }\n\n var symbolPath;\n\n if (symbolType.indexOf('image://') === 0) {\n symbolPath = graphic.makeImage(symbolType.slice(8), new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n } else if (symbolType.indexOf('path://') === 0) {\n symbolPath = graphic.makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n } else {\n symbolPath = new SymbolClz({\n shape: {\n symbolType: symbolType,\n x: x,\n y: y,\n width: w,\n height: h\n }\n });\n }\n\n symbolPath.__isEmptyBrush = isEmpty;\n symbolPath.setColor = symbolPathSetColor;\n symbolPath.setColor(color);\n return symbolPath;\n}\n\nexports.createSymbol = createSymbol;","\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* 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 ORIGIN_METHOD = '\\0__throttleOriginMethod';\nvar RATE = '\\0__throttleRate';\nvar THROTTLE_TYPE = '\\0__throttleType';\n/**\n * @public\n * @param {(Function)} fn\n * @param {number} [delay=0] Unit: ms.\n * @param {boolean} [debounce=false]\n * true: If call interval less than `delay`, only the last call works.\n * false: If call interval less than `delay, call works on fixed rate.\n * @return {(Function)} throttled fn.\n */\n\nfunction throttle(fn, delay, debounce) {\n var currCall;\n var lastCall = 0;\n var lastExec = 0;\n var timer = null;\n var diff;\n var scope;\n var args;\n var debounceNextCall;\n delay = delay || 0;\n\n function exec() {\n lastExec = new Date().getTime();\n timer = null;\n fn.apply(scope, args || []);\n }\n\n var cb = function () {\n currCall = new Date().getTime();\n scope = this;\n args = arguments;\n var thisDelay = debounceNextCall || delay;\n var thisDebounce = debounceNextCall || debounce;\n debounceNextCall = null;\n diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay;\n clearTimeout(timer); // Here we should make sure that: the `exec` SHOULD NOT be called later\n // than a new call of `cb`, that is, preserving the command order. Consider\n // calculating \"scale rate\" when roaming as an example. When a call of `cb`\n // happens, either the `exec` is called dierectly, or the call is delayed.\n // But the delayed call should never be later than next call of `cb`. Under\n // this assurance, we can simply update view state each time `dispatchAction`\n // triggered by user roaming, but not need to add extra code to avoid the\n // state being \"rolled-back\".\n\n if (thisDebounce) {\n timer = setTimeout(exec, thisDelay);\n } else {\n if (diff >= 0) {\n exec();\n } else {\n timer = setTimeout(exec, -diff);\n }\n }\n\n lastCall = currCall;\n };\n /**\n * Clear throttle.\n * @public\n */\n\n\n cb.clear = function () {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n };\n /**\n * Enable debounce once.\n */\n\n\n cb.debounceNextCall = function (debounceDelay) {\n debounceNextCall = debounceDelay;\n };\n\n return cb;\n}\n/**\n * Create throttle method or update throttle rate.\n *\n * @example\n * ComponentView.prototype.render = function () {\n * ...\n * throttle.createOrUpdate(\n * this,\n * '_dispatchAction',\n * this.model.get('throttle'),\n * 'fixRate'\n * );\n * };\n * ComponentView.prototype.remove = function () {\n * throttle.clear(this, '_dispatchAction');\n * };\n * ComponentView.prototype.dispose = function () {\n * throttle.clear(this, '_dispatchAction');\n * };\n *\n * @public\n * @param {Object} obj\n * @param {string} fnAttr\n * @param {number} [rate]\n * @param {string} [throttleType='fixRate'] 'fixRate' or 'debounce'\n * @return {Function} throttled function.\n */\n\n\nfunction createOrUpdate(obj, fnAttr, rate, throttleType) {\n var fn = obj[fnAttr];\n\n if (!fn) {\n return;\n }\n\n var originFn = fn[ORIGIN_METHOD] || fn;\n var lastThrottleType = fn[THROTTLE_TYPE];\n var lastRate = fn[RATE];\n\n if (lastRate !== rate || lastThrottleType !== throttleType) {\n if (rate == null || !throttleType) {\n return obj[fnAttr] = originFn;\n }\n\n fn = obj[fnAttr] = throttle(originFn, rate, throttleType === 'debounce');\n fn[ORIGIN_METHOD] = originFn;\n fn[THROTTLE_TYPE] = throttleType;\n fn[RATE] = rate;\n }\n\n return fn;\n}\n/**\n * Clear throttle. Example see throttle.createOrUpdate.\n *\n * @public\n * @param {Object} obj\n * @param {string} fnAttr\n */\n\n\nfunction clear(obj, fnAttr) {\n var fn = obj[fnAttr];\n\n if (fn && fn[ORIGIN_METHOD]) {\n obj[fnAttr] = fn[ORIGIN_METHOD];\n }\n}\n\nexports.throttle = throttle;\nexports.createOrUpdate = createOrUpdate;\nexports.clear = clear;","\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 _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar clazzUtil = require(\"../util/clazz\");\n\nvar modelUtil = require(\"../util/model\");\n\nvar graphicUtil = require(\"../util/graphic\");\n\nvar _task = require(\"../stream/task\");\n\nvar createTask = _task.createTask;\n\nvar createRenderPlanner = require(\"../chart/helper/createRenderPlanner\");\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 inner = modelUtil.makeInner();\nvar renderPlanner = createRenderPlanner();\n\nfunction Chart() {\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n this.group = new Group();\n /**\n * @type {string}\n * @readOnly\n */\n\n this.uid = componentUtil.getUID('viewChart');\n this.renderTask = createTask({\n plan: renderTaskPlan,\n reset: renderTaskReset\n });\n this.renderTask.context = {\n view: this\n };\n}\n\nChart.prototype = {\n type: 'chart',\n\n /**\n * Init the chart.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n init: function (ecModel, api) {},\n\n /**\n * Render the chart.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n render: function (seriesModel, ecModel, api, payload) {},\n\n /**\n * Highlight series or specified data item.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n highlight: function (seriesModel, ecModel, api, payload) {\n toggleHighlight(seriesModel.getData(), payload, 'emphasis');\n },\n\n /**\n * Downplay series or specified data item.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n downplay: function (seriesModel, ecModel, api, payload) {\n toggleHighlight(seriesModel.getData(), payload, 'normal');\n },\n\n /**\n * Remove self.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n remove: function (ecModel, api) {\n this.group.removeAll();\n },\n\n /**\n * Dispose self.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n dispose: function () {},\n\n /**\n * Rendering preparation in progressive mode.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n incrementalPrepareRender: null,\n\n /**\n * Render in progressive mode.\n * @param {Object} params See taskParams in `stream/task.js`\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n incrementalRender: null,\n\n /**\n * Update transform directly.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n * @return {Object} {update: true}\n */\n updateTransform: null,\n\n /**\n * The view contains the given point.\n * @interface\n * @param {Array.} point\n * @return {boolean}\n */\n // containPoint: function () {}\n\n /**\n * @param {string} eventType\n * @param {Object} query\n * @param {module:zrender/Element} targetEl\n * @param {Object} packedEvent\n * @return {boolen} Pass only when return `true`.\n */\n filterForExposedEvent: null\n};\nvar chartProto = Chart.prototype;\n\nchartProto.updateView = chartProto.updateLayout = chartProto.updateVisual = function (seriesModel, ecModel, api, payload) {\n this.render(seriesModel, ecModel, api, payload);\n};\n/**\n * Set state of single element\n * @param {module:zrender/Element} el\n * @param {string} state 'normal'|'emphasis'\n * @param {number} highlightDigit\n */\n\n\nfunction elSetState(el, state, highlightDigit) {\n if (el) {\n el.trigger(state, highlightDigit);\n\n if (el.isGroup // Simple optimize.\n && !graphicUtil.isHighDownDispatcher(el)) {\n for (var i = 0, len = el.childCount(); i < len; i++) {\n elSetState(el.childAt(i), state, highlightDigit);\n }\n }\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Object} payload\n * @param {string} state 'normal'|'emphasis'\n */\n\n\nfunction toggleHighlight(data, payload, state) {\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n var highlightDigit = payload && payload.highlightKey != null ? graphicUtil.getHighlightDigit(payload.highlightKey) : null;\n\n if (dataIndex != null) {\n each(modelUtil.normalizeToArray(dataIndex), function (dataIdx) {\n elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit);\n });\n } else {\n data.eachItemGraphicEl(function (el) {\n elSetState(el, state, highlightDigit);\n });\n }\n} // Enable Chart.extend.\n\n\nclazzUtil.enableClassExtend(Chart, ['dispose']); // Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nclazzUtil.enableClassManagement(Chart, {\n registerWhenExtend: true\n});\n\nChart.markUpdateMethod = function (payload, methodName) {\n inner(payload).updateMethod = methodName;\n};\n\nfunction renderTaskPlan(context) {\n return renderPlanner(context.model);\n}\n\nfunction renderTaskReset(context) {\n var seriesModel = context.model;\n var ecModel = context.ecModel;\n var api = context.api;\n var payload = context.payload; // ???! remove updateView updateVisual\n\n var progressiveRender = seriesModel.pipelineContext.progressiveRender;\n var view = context.view;\n var updateMethod = payload && inner(payload).updateMethod;\n var methodName = progressiveRender ? 'incrementalPrepareRender' : updateMethod && view[updateMethod] ? updateMethod // `appendData` is also supported when data amount\n // is less than progressive threshold.\n : 'render';\n\n if (methodName !== 'render') {\n view[methodName](seriesModel, ecModel, api, payload);\n }\n\n return progressMethodMap[methodName];\n}\n\nvar progressMethodMap = {\n incrementalPrepareRender: {\n progress: function (params, context) {\n context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload);\n }\n },\n render: {\n // Put view.render in `progress` to support appendData. But in this case\n // view.render should not be called in reset, otherwise it will be called\n // twise. Use `forceFirstProgress` to make sure that view.render is called\n // in any cases.\n forceFirstProgress: true,\n progress: function (params, context) {\n context.view.render(context.model, context.ecModel, context.api, context.payload);\n }\n }\n};\nvar _default = Chart;\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 Group = require(\"zrender/lib/container/Group\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar clazzUtil = require(\"../util/clazz\");\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 Component = function () {\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n this.group = new Group();\n /**\n * @type {string}\n * @readOnly\n */\n\n this.uid = componentUtil.getUID('viewComponent');\n};\n\nComponent.prototype = {\n constructor: Component,\n init: function (ecModel, api) {},\n render: function (componentModel, ecModel, api, payload) {},\n dispose: function () {},\n\n /**\n * @param {string} eventType\n * @param {Object} query\n * @param {module:zrender/Element} targetEl\n * @param {Object} packedEvent\n * @return {boolen} Pass only when return `true`.\n */\n filterForExposedEvent: null\n};\nvar componentProto = Component.prototype;\n\ncomponentProto.updateView = componentProto.updateLayout = componentProto.updateVisual = function (seriesModel, ecModel, api, payload) {// Do nothing;\n}; // Enable Component.extend.\n\n\nclazzUtil.enableClassExtend(Component); // Enable capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nclazzUtil.enableClassManagement(Component, {\n registerWhenExtend: true\n});\nvar _default = Component;\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\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 * LegendVisualProvider is an bridge that pick encoded color from data and\n * provide to the legend component.\n * @param {Function} getDataWithEncodedVisual Function to get data after filtered. It stores all the encoding info\n * @param {Function} getRawData Function to get raw data before filtered.\n */\nfunction LegendVisualProvider(getDataWithEncodedVisual, getRawData) {\n this.getAllNames = function () {\n var rawData = getRawData(); // We find the name from the raw data. In case it's filtered by the legend component.\n // Normally, the name can be found in rawData, but can't be found in filtered data will display as gray.\n\n return rawData.mapArray(rawData.getName);\n };\n\n this.containName = function (name) {\n var rawData = getRawData();\n return rawData.indexOfName(name) >= 0;\n };\n\n this.indexOfName = function (name) {\n // Only get data when necessary.\n // Because LegendVisualProvider constructor may be new in the stage that data is not prepared yet.\n // Invoking Series#getData immediately will throw an error.\n var dataWithEncodedVisual = getDataWithEncodedVisual();\n return dataWithEncodedVisual.indexOfName(name);\n };\n\n this.getItemVisual = function (dataIndex, key) {\n // Get encoded visual properties from final filtered data.\n var dataWithEncodedVisual = getDataWithEncodedVisual();\n return dataWithEncodedVisual.getItemVisual(dataIndex, key);\n };\n}\n\nvar _default = LegendVisualProvider;\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 zrColor = require(\"zrender/lib/tool/color\");\n\nvar _number = require(\"../util/number\");\n\nvar linearMap = _number.linearMap;\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 each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar CATEGORY_DEFAULT_VISUAL_INDEX = -1;\n/**\n * @param {Object} option\n * @param {string} [option.type] See visualHandlers.\n * @param {string} [option.mappingMethod] 'linear' or 'piecewise' or 'category' or 'fixed'\n * @param {Array.=} [option.dataExtent] [minExtent, maxExtent],\n * required when mappingMethod is 'linear'\n * @param {Array.=} [option.pieceList] [\n * {value: someValue},\n * {interval: [min1, max1], visual: {...}},\n * {interval: [min2, max2]}\n * ],\n * required when mappingMethod is 'piecewise'.\n * Visual for only each piece can be specified.\n * @param {Array.=} [option.categories] ['cate1', 'cate2']\n * required when mappingMethod is 'category'.\n * If no option.categories, categories is set\n * as [0, 1, 2, ...].\n * @param {boolean} [option.loop=false] Whether loop mapping when mappingMethod is 'category'.\n * @param {(Array|Object|*)} [option.visual] Visual data.\n * when mappingMethod is 'category',\n * visual data can be array or object\n * (like: {cate1: '#222', none: '#fff'})\n * or primary types (which represents\n * default category visual), otherwise visual\n * can be array or primary (which will be\n * normalized to array).\n *\n */\n\nvar VisualMapping = function (option) {\n var mappingMethod = option.mappingMethod;\n var visualType = option.type;\n /**\n * @readOnly\n * @type {Object}\n */\n\n var thisOption = this.option = zrUtil.clone(option);\n /**\n * @readOnly\n * @type {string}\n */\n\n this.type = visualType;\n /**\n * @readOnly\n * @type {string}\n */\n\n this.mappingMethod = mappingMethod;\n /**\n * @private\n * @type {Function}\n */\n\n this._normalizeData = normalizers[mappingMethod];\n var visualHandler = visualHandlers[visualType];\n /**\n * @public\n * @type {Function}\n */\n\n this.applyVisual = visualHandler.applyVisual;\n /**\n * @public\n * @type {Function}\n */\n\n this.getColorMapper = visualHandler.getColorMapper;\n /**\n * @private\n * @type {Function}\n */\n\n this._doMap = visualHandler._doMap[mappingMethod];\n\n if (mappingMethod === 'piecewise') {\n normalizeVisualRange(thisOption);\n preprocessForPiecewise(thisOption);\n } else if (mappingMethod === 'category') {\n thisOption.categories ? preprocessForSpecifiedCategory(thisOption) // categories is ordinal when thisOption.categories not specified,\n // which need no more preprocess except normalize visual.\n : normalizeVisualRange(thisOption, true);\n } else {\n // mappingMethod === 'linear' or 'fixed'\n zrUtil.assert(mappingMethod !== 'linear' || thisOption.dataExtent);\n normalizeVisualRange(thisOption);\n }\n};\n\nVisualMapping.prototype = {\n constructor: VisualMapping,\n mapValueToVisual: function (value) {\n var normalized = this._normalizeData(value);\n\n return this._doMap(normalized, value);\n },\n getNormalizer: function () {\n return zrUtil.bind(this._normalizeData, this);\n }\n};\nvar visualHandlers = VisualMapping.visualHandlers = {\n color: {\n applyVisual: makeApplyVisual('color'),\n\n /**\n * Create a mapper function\n * @return {Function}\n */\n getColorMapper: function () {\n var thisOption = this.option;\n return zrUtil.bind(thisOption.mappingMethod === 'category' ? function (value, isNormalized) {\n !isNormalized && (value = this._normalizeData(value));\n return doMapCategory.call(this, value);\n } : function (value, isNormalized, out) {\n // If output rgb array\n // which will be much faster and useful in pixel manipulation\n var returnRGBArray = !!out;\n !isNormalized && (value = this._normalizeData(value));\n out = zrColor.fastLerp(value, thisOption.parsedVisual, out);\n return returnRGBArray ? out : zrColor.stringify(out, 'rgba');\n }, this);\n },\n _doMap: {\n linear: function (normalized) {\n return zrColor.stringify(zrColor.fastLerp(normalized, this.option.parsedVisual), 'rgba');\n },\n category: doMapCategory,\n piecewise: function (normalized, value) {\n var result = getSpecifiedVisual.call(this, value);\n\n if (result == null) {\n result = zrColor.stringify(zrColor.fastLerp(normalized, this.option.parsedVisual), 'rgba');\n }\n\n return result;\n },\n fixed: doMapFixed\n }\n },\n colorHue: makePartialColorVisualHandler(function (color, value) {\n return zrColor.modifyHSL(color, value);\n }),\n colorSaturation: makePartialColorVisualHandler(function (color, value) {\n return zrColor.modifyHSL(color, null, value);\n }),\n colorLightness: makePartialColorVisualHandler(function (color, value) {\n return zrColor.modifyHSL(color, null, null, value);\n }),\n colorAlpha: makePartialColorVisualHandler(function (color, value) {\n return zrColor.modifyAlpha(color, value);\n }),\n opacity: {\n applyVisual: makeApplyVisual('opacity'),\n _doMap: makeDoMap([0, 1])\n },\n liftZ: {\n applyVisual: makeApplyVisual('liftZ'),\n _doMap: {\n linear: doMapFixed,\n category: doMapFixed,\n piecewise: doMapFixed,\n fixed: doMapFixed\n }\n },\n symbol: {\n applyVisual: function (value, getter, setter) {\n var symbolCfg = this.mapValueToVisual(value);\n\n if (zrUtil.isString(symbolCfg)) {\n setter('symbol', symbolCfg);\n } else if (isObject(symbolCfg)) {\n for (var name in symbolCfg) {\n if (symbolCfg.hasOwnProperty(name)) {\n setter(name, symbolCfg[name]);\n }\n }\n }\n },\n _doMap: {\n linear: doMapToArray,\n category: doMapCategory,\n piecewise: function (normalized, value) {\n var result = getSpecifiedVisual.call(this, value);\n\n if (result == null) {\n result = doMapToArray.call(this, normalized);\n }\n\n return result;\n },\n fixed: doMapFixed\n }\n },\n symbolSize: {\n applyVisual: makeApplyVisual('symbolSize'),\n _doMap: makeDoMap([0, 1])\n }\n};\n\nfunction preprocessForPiecewise(thisOption) {\n var pieceList = thisOption.pieceList;\n thisOption.hasSpecialVisual = false;\n zrUtil.each(pieceList, function (piece, index) {\n piece.originIndex = index; // piece.visual is \"result visual value\" but not\n // a visual range, so it does not need to be normalized.\n\n if (piece.visual != null) {\n thisOption.hasSpecialVisual = true;\n }\n });\n}\n\nfunction preprocessForSpecifiedCategory(thisOption) {\n // Hash categories.\n var categories = thisOption.categories;\n var visual = thisOption.visual;\n var categoryMap = thisOption.categoryMap = {};\n each(categories, function (cate, index) {\n categoryMap[cate] = index;\n }); // Process visual map input.\n\n if (!zrUtil.isArray(visual)) {\n var visualArr = [];\n\n if (zrUtil.isObject(visual)) {\n each(visual, function (v, cate) {\n var index = categoryMap[cate];\n visualArr[index != null ? index : CATEGORY_DEFAULT_VISUAL_INDEX] = v;\n });\n } else {\n // Is primary type, represents default visual.\n visualArr[CATEGORY_DEFAULT_VISUAL_INDEX] = visual;\n }\n\n visual = setVisualToOption(thisOption, visualArr);\n } // Remove categories that has no visual,\n // then we can mapping them to CATEGORY_DEFAULT_VISUAL_INDEX.\n\n\n for (var i = categories.length - 1; i >= 0; i--) {\n if (visual[i] == null) {\n delete categoryMap[categories[i]];\n categories.pop();\n }\n }\n}\n\nfunction normalizeVisualRange(thisOption, isCategory) {\n var visual = thisOption.visual;\n var visualArr = [];\n\n if (zrUtil.isObject(visual)) {\n each(visual, function (v) {\n visualArr.push(v);\n });\n } else if (visual != null) {\n visualArr.push(visual);\n }\n\n var doNotNeedPair = {\n color: 1,\n symbol: 1\n };\n\n if (!isCategory && visualArr.length === 1 && !doNotNeedPair.hasOwnProperty(thisOption.type)) {\n // Do not care visualArr.length === 0, which is illegal.\n visualArr[1] = visualArr[0];\n }\n\n setVisualToOption(thisOption, visualArr);\n}\n\nfunction makePartialColorVisualHandler(applyValue) {\n return {\n applyVisual: function (value, getter, setter) {\n value = this.mapValueToVisual(value); // Must not be array value\n\n setter('color', applyValue(getter('color'), value));\n },\n _doMap: makeDoMap([0, 1])\n };\n}\n\nfunction doMapToArray(normalized) {\n var visual = this.option.visual;\n return visual[Math.round(linearMap(normalized, [0, 1], [0, visual.length - 1], true))] || {};\n}\n\nfunction makeApplyVisual(visualType) {\n return function (value, getter, setter) {\n setter(visualType, this.mapValueToVisual(value));\n };\n}\n\nfunction doMapCategory(normalized) {\n var visual = this.option.visual;\n return visual[this.option.loop && normalized !== CATEGORY_DEFAULT_VISUAL_INDEX ? normalized % visual.length : normalized];\n}\n\nfunction doMapFixed() {\n return this.option.visual[0];\n}\n\nfunction makeDoMap(sourceExtent) {\n return {\n linear: function (normalized) {\n return linearMap(normalized, sourceExtent, this.option.visual, true);\n },\n category: doMapCategory,\n piecewise: function (normalized, value) {\n var result = getSpecifiedVisual.call(this, value);\n\n if (result == null) {\n result = linearMap(normalized, sourceExtent, this.option.visual, true);\n }\n\n return result;\n },\n fixed: doMapFixed\n };\n}\n\nfunction getSpecifiedVisual(value) {\n var thisOption = this.option;\n var pieceList = thisOption.pieceList;\n\n if (thisOption.hasSpecialVisual) {\n var pieceIndex = VisualMapping.findPieceIndex(value, pieceList);\n var piece = pieceList[pieceIndex];\n\n if (piece && piece.visual) {\n return piece.visual[this.type];\n }\n }\n}\n\nfunction setVisualToOption(thisOption, visualArr) {\n thisOption.visual = visualArr;\n\n if (thisOption.type === 'color') {\n thisOption.parsedVisual = zrUtil.map(visualArr, function (item) {\n return zrColor.parse(item);\n });\n }\n\n return visualArr;\n}\n/**\n * Normalizers by mapping methods.\n */\n\n\nvar normalizers = {\n linear: function (value) {\n return linearMap(value, this.option.dataExtent, [0, 1], true);\n },\n piecewise: function (value) {\n var pieceList = this.option.pieceList;\n var pieceIndex = VisualMapping.findPieceIndex(value, pieceList, true);\n\n if (pieceIndex != null) {\n return linearMap(pieceIndex, [0, pieceList.length - 1], [0, 1], true);\n }\n },\n category: function (value) {\n var index = this.option.categories ? this.option.categoryMap[value] : value; // ordinal\n\n return index == null ? CATEGORY_DEFAULT_VISUAL_INDEX : index;\n },\n fixed: zrUtil.noop\n};\n/**\n * List available visual types.\n *\n * @public\n * @return {Array.}\n */\n\nVisualMapping.listVisualTypes = function () {\n var visualTypes = [];\n zrUtil.each(visualHandlers, function (handler, key) {\n visualTypes.push(key);\n });\n return visualTypes;\n};\n/**\n * @public\n */\n\n\nVisualMapping.addVisualHandler = function (name, handler) {\n visualHandlers[name] = handler;\n};\n/**\n * @public\n */\n\n\nVisualMapping.isValidType = function (visualType) {\n return visualHandlers.hasOwnProperty(visualType);\n};\n/**\n * Convinent method.\n * Visual can be Object or Array or primary type.\n *\n * @public\n */\n\n\nVisualMapping.eachVisual = function (visual, callback, context) {\n if (zrUtil.isObject(visual)) {\n zrUtil.each(visual, callback, context);\n } else {\n callback.call(context, visual);\n }\n};\n\nVisualMapping.mapVisual = function (visual, callback, context) {\n var isPrimary;\n var newVisual = zrUtil.isArray(visual) ? [] : zrUtil.isObject(visual) ? {} : (isPrimary = true, null);\n VisualMapping.eachVisual(visual, function (v, key) {\n var newVal = callback.call(context, v, key);\n isPrimary ? newVisual = newVal : newVisual[key] = newVal;\n });\n return newVisual;\n};\n/**\n * @public\n * @param {Object} obj\n * @return {Object} new object containers visual values.\n * If no visuals, return null.\n */\n\n\nVisualMapping.retrieveVisuals = function (obj) {\n var ret = {};\n var hasVisual;\n obj && each(visualHandlers, function (h, visualType) {\n if (obj.hasOwnProperty(visualType)) {\n ret[visualType] = obj[visualType];\n hasVisual = true;\n }\n });\n return hasVisual ? ret : null;\n};\n/**\n * Give order to visual types, considering colorSaturation, colorAlpha depends on color.\n *\n * @public\n * @param {(Object|Array)} visualTypes If Object, like: {color: ..., colorSaturation: ...}\n * IF Array, like: ['color', 'symbol', 'colorSaturation']\n * @return {Array.} Sorted visual types.\n */\n\n\nVisualMapping.prepareVisualTypes = function (visualTypes) {\n if (isObject(visualTypes)) {\n var types = [];\n each(visualTypes, function (item, type) {\n types.push(type);\n });\n visualTypes = types;\n } else if (zrUtil.isArray(visualTypes)) {\n visualTypes = visualTypes.slice();\n } else {\n return [];\n }\n\n visualTypes.sort(function (type1, type2) {\n // color should be front of colorSaturation, colorAlpha, ...\n // symbol and symbolSize do not matter.\n return type2 === 'color' && type1 !== 'color' && type1.indexOf('color') === 0 ? 1 : -1;\n });\n return visualTypes;\n};\n/**\n * 'color', 'colorSaturation', 'colorAlpha', ... are depends on 'color'.\n * Other visuals are only depends on themself.\n *\n * @public\n * @param {string} visualType1\n * @param {string} visualType2\n * @return {boolean}\n */\n\n\nVisualMapping.dependsOn = function (visualType1, visualType2) {\n return visualType2 === 'color' ? !!(visualType1 && visualType1.indexOf(visualType2) === 0) : visualType1 === visualType2;\n};\n/**\n * @param {number} value\n * @param {Array.} pieceList [{value: ..., interval: [min, max]}, ...]\n * Always from small to big.\n * @param {boolean} [findClosestWhenOutside=false]\n * @return {number} index\n */\n\n\nVisualMapping.findPieceIndex = function (value, pieceList, findClosestWhenOutside) {\n var possibleI;\n var abs = Infinity; // value has the higher priority.\n\n for (var i = 0, len = pieceList.length; i < len; i++) {\n var pieceValue = pieceList[i].value;\n\n if (pieceValue != null) {\n if (pieceValue === value // FIXME\n // It is supposed to compare value according to value type of dimension,\n // but currently value type can exactly be string or number.\n // Compromise for numeric-like string (like '12'), especially\n // in the case that visualMap.categories is ['22', '33'].\n || typeof pieceValue === 'string' && pieceValue === value + '') {\n return i;\n }\n\n findClosestWhenOutside && updatePossible(pieceValue, i);\n }\n }\n\n for (var i = 0, len = pieceList.length; i < len; i++) {\n var piece = pieceList[i];\n var interval = piece.interval;\n var close = piece.close;\n\n if (interval) {\n if (interval[0] === -Infinity) {\n if (littleThan(close[1], value, interval[1])) {\n return i;\n }\n } else if (interval[1] === Infinity) {\n if (littleThan(close[0], interval[0], value)) {\n return i;\n }\n } else if (littleThan(close[0], interval[0], value) && littleThan(close[1], value, interval[1])) {\n return i;\n }\n\n findClosestWhenOutside && updatePossible(interval[0], i);\n findClosestWhenOutside && updatePossible(interval[1], i);\n }\n }\n\n if (findClosestWhenOutside) {\n return value === Infinity ? pieceList.length - 1 : value === -Infinity ? 0 : possibleI;\n }\n\n function updatePossible(val, index) {\n var newAbs = Math.abs(val - value);\n\n if (newAbs < abs) {\n abs = newAbs;\n possibleI = index;\n }\n }\n};\n\nfunction littleThan(close, a, b) {\n return close ? a <= b : a < b;\n}\n\nvar _default = VisualMapping;\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 lang = require(\"../lang\");\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*/\nfunction _default(dom, ecModel) {\n var ariaModel = ecModel.getModel('aria');\n\n if (!ariaModel.get('show')) {\n return;\n } else if (ariaModel.get('description')) {\n dom.setAttribute('aria-label', ariaModel.get('description'));\n return;\n }\n\n var seriesCnt = 0;\n ecModel.eachSeries(function (seriesModel, idx) {\n ++seriesCnt;\n }, this);\n var maxDataCnt = ariaModel.get('data.maxCount') || 10;\n var maxSeriesCnt = ariaModel.get('series.maxCount') || 10;\n var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt);\n var ariaLabel;\n\n if (seriesCnt < 1) {\n // No series, no aria label\n return;\n } else {\n var title = getTitle();\n\n if (title) {\n ariaLabel = replace(getConfig('general.withTitle'), {\n title: title\n });\n } else {\n ariaLabel = getConfig('general.withoutTitle');\n }\n\n var seriesLabels = [];\n var prefix = seriesCnt > 1 ? 'series.multiple.prefix' : 'series.single.prefix';\n ariaLabel += replace(getConfig(prefix), {\n seriesCount: seriesCnt\n });\n ecModel.eachSeries(function (seriesModel, idx) {\n if (idx < displaySeriesCnt) {\n var seriesLabel;\n var seriesName = seriesModel.get('name');\n var seriesTpl = 'series.' + (seriesCnt > 1 ? 'multiple' : 'single') + '.';\n seriesLabel = getConfig(seriesName ? seriesTpl + 'withName' : seriesTpl + 'withoutName');\n seriesLabel = replace(seriesLabel, {\n seriesId: seriesModel.seriesIndex,\n seriesName: seriesModel.get('name'),\n seriesType: getSeriesTypeName(seriesModel.subType)\n });\n var data = seriesModel.getData();\n window.data = data;\n\n if (data.count() > maxDataCnt) {\n // Show part of data\n seriesLabel += replace(getConfig('data.partialData'), {\n displayCnt: maxDataCnt\n });\n } else {\n seriesLabel += getConfig('data.allData');\n }\n\n var dataLabels = [];\n\n for (var i = 0; i < data.count(); i++) {\n if (i < maxDataCnt) {\n var name = data.getName(i);\n var value = retrieveRawValue(data, i);\n dataLabels.push(replace(name ? getConfig('data.withName') : getConfig('data.withoutName'), {\n name: name,\n value: value\n }));\n }\n }\n\n seriesLabel += dataLabels.join(getConfig('data.separator.middle')) + getConfig('data.separator.end');\n seriesLabels.push(seriesLabel);\n }\n });\n ariaLabel += seriesLabels.join(getConfig('series.multiple.separator.middle')) + getConfig('series.multiple.separator.end');\n dom.setAttribute('aria-label', ariaLabel);\n }\n\n function replace(str, keyValues) {\n if (typeof str !== 'string') {\n return str;\n }\n\n var result = str;\n zrUtil.each(keyValues, function (value, key) {\n result = result.replace(new RegExp('\\\\{\\\\s*' + key + '\\\\s*\\\\}', 'g'), value);\n });\n return result;\n }\n\n function getConfig(path) {\n var userConfig = ariaModel.get(path);\n\n if (userConfig == null) {\n var pathArr = path.split('.');\n var result = lang.aria;\n\n for (var i = 0; i < pathArr.length; ++i) {\n result = result[pathArr[i]];\n }\n\n return result;\n } else {\n return userConfig;\n }\n }\n\n function getTitle() {\n var title = ecModel.getModel('title').option;\n\n if (title && title.length) {\n title = title[0];\n }\n\n return title && title.text;\n }\n\n function getSeriesTypeName(type) {\n return lang.series.typeNames[type] || '自定义图';\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 _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\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// Pick color from palette for each data item.\n// Applicable for charts that require applying color palette\n// in data level (like pie, funnel, chord).\nfunction _default(seriesType) {\n return {\n getTargetSeries: function (ecModel) {\n // Pie and funnel may use diferrent scope\n var paletteScope = {};\n var seiresModelMap = createHashMap();\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n seriesModel.__paletteScope = paletteScope;\n seiresModelMap.set(seriesModel.uid, seriesModel);\n });\n return seiresModelMap;\n },\n reset: function (seriesModel, ecModel) {\n var dataAll = seriesModel.getRawData();\n var idxMap = {};\n var data = seriesModel.getData();\n data.each(function (idx) {\n var rawIdx = data.getRawIndex(idx);\n idxMap[rawIdx] = idx;\n });\n dataAll.each(function (rawIdx) {\n var filteredIdx = idxMap[rawIdx]; // If series.itemStyle.normal.color is a function. itemVisual may be encoded\n\n var singleDataColor = filteredIdx != null && data.getItemVisual(filteredIdx, 'color', true);\n var singleDataBorderColor = filteredIdx != null && data.getItemVisual(filteredIdx, 'borderColor', true);\n var itemModel;\n\n if (!singleDataColor || !singleDataBorderColor) {\n // FIXME Performance\n itemModel = dataAll.getItemModel(rawIdx);\n }\n\n if (!singleDataColor) {\n var color = itemModel.get('itemStyle.color') || seriesModel.getColorFromPalette(dataAll.getName(rawIdx) || rawIdx + '', seriesModel.__paletteScope, dataAll.count()); // Data is not filtered\n\n if (filteredIdx != null) {\n data.setItemVisual(filteredIdx, 'color', color);\n }\n }\n\n if (!singleDataBorderColor) {\n var borderColor = itemModel.get('itemStyle.borderColor'); // Data is not filtered\n\n if (filteredIdx != null) {\n data.setItemVisual(filteredIdx, 'borderColor', borderColor);\n }\n }\n });\n }\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 Gradient = require(\"zrender/lib/graphic/Gradient\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isFunction = _util.isFunction;\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 _default = {\n createOnAllSeries: true,\n performRawSeries: true,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n var colorAccessPath = (seriesModel.visualColorAccessPath || 'itemStyle.color').split('.'); // Set in itemStyle\n\n var color = seriesModel.get(colorAccessPath);\n var colorCallback = isFunction(color) && !(color instanceof Gradient) ? color : null; // Default color\n\n if (!color || colorCallback) {\n color = seriesModel.getColorFromPalette( // TODO series count changed.\n seriesModel.name, null, ecModel.getSeriesCount());\n }\n\n data.setVisual('color', color);\n var borderColorAccessPath = (seriesModel.visualBorderColorAccessPath || 'itemStyle.borderColor').split('.');\n var borderColor = seriesModel.get(borderColorAccessPath);\n data.setVisual('borderColor', borderColor); // Only visible series has each data be visual encoded\n\n if (!ecModel.isSeriesFiltered(seriesModel)) {\n if (colorCallback) {\n data.each(function (idx) {\n data.setItemVisual(idx, 'color', colorCallback(seriesModel.getDataParams(idx)));\n });\n } // itemStyle in each data item\n\n\n var dataEach = function (data, idx) {\n var itemModel = data.getItemModel(idx);\n var color = itemModel.get(colorAccessPath, true);\n var borderColor = itemModel.get(borderColorAccessPath, true);\n\n if (color != null) {\n data.setItemVisual(idx, 'color', color);\n }\n\n if (borderColor != null) {\n data.setItemVisual(idx, 'borderColor', borderColor);\n }\n };\n\n return {\n dataEach: data.hasItemOption ? dataEach : null\n };\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 _util = require(\"zrender/lib/core/util\");\n\nvar isFunction = _util.isFunction;\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(seriesType, defaultSymbolType, legendSymbol) {\n // Encoding visual for all series include which is filtered for legend drawing\n return {\n seriesType: seriesType,\n // For legend.\n performRawSeries: true,\n reset: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var symbolType = seriesModel.get('symbol');\n var symbolSize = seriesModel.get('symbolSize');\n var keepAspect = seriesModel.get('symbolKeepAspect');\n var symbolRotate = seriesModel.get('symbolRotate');\n var hasSymbolTypeCallback = isFunction(symbolType);\n var hasSymbolSizeCallback = isFunction(symbolSize);\n var hasSymbolRotateCallback = isFunction(symbolRotate);\n var hasCallback = hasSymbolTypeCallback || hasSymbolSizeCallback || hasSymbolRotateCallback;\n var seriesSymbol = !hasSymbolTypeCallback && symbolType ? symbolType : defaultSymbolType;\n var seriesSymbolSize = !hasSymbolSizeCallback ? symbolSize : null;\n var seriesSymbolRotate = !hasSymbolRotateCallback ? seriesSymbolRotate : null;\n data.setVisual({\n legendSymbol: legendSymbol || seriesSymbol,\n // If seting callback functions on `symbol` or `symbolSize`, for simplicity and avoiding\n // to bring trouble, we do not pick a reuslt from one of its calling on data item here,\n // but just use the default value. Callback on `symbol` or `symbolSize` is convenient in\n // some cases but generally it is not recommanded.\n symbol: seriesSymbol,\n symbolSize: seriesSymbolSize,\n symbolKeepAspect: keepAspect,\n symbolRotate: symbolRotate\n }); // Only visible series has each data be visual encoded\n\n if (ecModel.isSeriesFiltered(seriesModel)) {\n return;\n }\n\n function dataEach(data, idx) {\n if (hasCallback) {\n var rawValue = seriesModel.getRawValue(idx);\n var params = seriesModel.getDataParams(idx);\n hasSymbolTypeCallback && data.setItemVisual(idx, 'symbol', symbolType(rawValue, params));\n hasSymbolSizeCallback && data.setItemVisual(idx, 'symbolSize', symbolSize(rawValue, params));\n hasSymbolRotateCallback && data.setItemVisual(idx, 'symbolRotate', symbolRotate(rawValue, params));\n }\n\n if (data.hasItemOption) {\n var itemModel = data.getItemModel(idx);\n var itemSymbolType = itemModel.getShallow('symbol', true);\n var itemSymbolSize = itemModel.getShallow('symbolSize', true);\n var itemSymbolRotate = itemModel.getShallow('symbolRotate', true);\n var itemSymbolKeepAspect = itemModel.getShallow('symbolKeepAspect', true); // If has item symbol\n\n if (itemSymbolType != null) {\n data.setItemVisual(idx, 'symbol', itemSymbolType);\n }\n\n if (itemSymbolSize != null) {\n // PENDING Transform symbolSize ?\n data.setItemVisual(idx, 'symbolSize', itemSymbolSize);\n }\n\n if (itemSymbolRotate != null) {\n data.setItemVisual(idx, 'symbolRotate', itemSymbolRotate);\n }\n\n if (itemSymbolKeepAspect != null) {\n data.setItemVisual(idx, 'symbolKeepAspect', itemSymbolKeepAspect);\n }\n }\n }\n\n return {\n dataEach: data.hasItemOption || hasCallback ? dataEach : null\n };\n }\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 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 * @file Visual mapping.\n */\nvar visualDefault = {\n /**\n * @public\n */\n get: function (visualType, key, isCategory) {\n var value = zrUtil.clone((defaultOption[visualType] || {})[key]);\n return isCategory ? zrUtil.isArray(value) ? value[value.length - 1] : value : value;\n }\n};\nvar defaultOption = {\n color: {\n active: ['#006edd', '#e0ffff'],\n inactive: ['rgba(0,0,0,0)']\n },\n colorHue: {\n active: [0, 360],\n inactive: [0, 0]\n },\n colorSaturation: {\n active: [0.3, 1],\n inactive: [0, 0]\n },\n colorLightness: {\n active: [0.9, 0.5],\n inactive: [0, 0]\n },\n colorAlpha: {\n active: [0.3, 1],\n inactive: [0, 0]\n },\n opacity: {\n active: [0.3, 1],\n inactive: [0, 0]\n },\n symbol: {\n active: ['circle', 'roundRect', 'diamond'],\n inactive: ['none']\n },\n symbolSize: {\n active: [10, 50],\n inactive: [0, 0]\n }\n};\nvar _default = visualDefault;\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 VisualMapping = require(\"./VisualMapping\");\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 * @file Visual solution, for consistent option specification.\n */\nvar each = zrUtil.each;\n\nfunction hasKeys(obj) {\n if (obj) {\n for (var name in obj) {\n if (obj.hasOwnProperty(name)) {\n return true;\n }\n }\n }\n}\n/**\n * @param {Object} option\n * @param {Array.} stateList\n * @param {Function} [supplementVisualOption]\n * @return {Object} visualMappings >\n */\n\n\nfunction createVisualMappings(option, stateList, supplementVisualOption) {\n var visualMappings = {};\n each(stateList, function (state) {\n var mappings = visualMappings[state] = createMappings();\n each(option[state], function (visualData, visualType) {\n if (!VisualMapping.isValidType(visualType)) {\n return;\n }\n\n var mappingOption = {\n type: visualType,\n visual: visualData\n };\n supplementVisualOption && supplementVisualOption(mappingOption, state);\n mappings[visualType] = new VisualMapping(mappingOption); // Prepare a alpha for opacity, for some case that opacity\n // is not supported, such as rendering using gradient color.\n\n if (visualType === 'opacity') {\n mappingOption = zrUtil.clone(mappingOption);\n mappingOption.type = 'colorAlpha';\n mappings.__hidden.__alphaForOpacity = new VisualMapping(mappingOption);\n }\n });\n });\n return visualMappings;\n\n function createMappings() {\n var Creater = function () {}; // Make sure hidden fields will not be visited by\n // object iteration (with hasOwnProperty checking).\n\n\n Creater.prototype.__hidden = Creater.prototype;\n var obj = new Creater();\n return obj;\n }\n}\n/**\n * @param {Object} thisOption\n * @param {Object} newOption\n * @param {Array.} keys\n */\n\n\nfunction replaceVisualOption(thisOption, newOption, keys) {\n // Visual attributes merge is not supported, otherwise it\n // brings overcomplicated merge logic. See #2853. So if\n // newOption has anyone of these keys, all of these keys\n // will be reset. Otherwise, all keys remain.\n var has;\n zrUtil.each(keys, function (key) {\n if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\n has = true;\n }\n });\n has && zrUtil.each(keys, function (key) {\n if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\n thisOption[key] = zrUtil.clone(newOption[key]);\n } else {\n delete thisOption[key];\n }\n });\n}\n/**\n * @param {Array.} stateList\n * @param {Object} visualMappings >\n * @param {module:echarts/data/List} list\n * @param {Function} getValueState param: valueOrIndex, return: state.\n * @param {object} [scope] Scope for getValueState\n * @param {string} [dimension] Concrete dimension, if used.\n */\n// ???! handle brush?\n\n\nfunction applyVisual(stateList, visualMappings, data, getValueState, scope, dimension) {\n var visualTypesMap = {};\n zrUtil.each(stateList, function (state) {\n var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\n visualTypesMap[state] = visualTypes;\n });\n var dataIndex;\n\n function getVisual(key) {\n return data.getItemVisual(dataIndex, key);\n }\n\n function setVisual(key, value) {\n data.setItemVisual(dataIndex, key, value);\n }\n\n if (dimension == null) {\n data.each(eachItem);\n } else {\n data.each([dimension], eachItem);\n }\n\n function eachItem(valueOrIndex, index) {\n dataIndex = dimension == null ? valueOrIndex : index;\n var rawDataItem = data.getRawDataItem(dataIndex); // Consider performance\n\n if (rawDataItem && rawDataItem.visualMap === false) {\n return;\n }\n\n var valueState = getValueState.call(scope, valueOrIndex);\n var mappings = visualMappings[valueState];\n var visualTypes = visualTypesMap[valueState];\n\n for (var i = 0, len = visualTypes.length; i < len; i++) {\n var type = visualTypes[i];\n mappings[type] && mappings[type].applyVisual(valueOrIndex, getVisual, setVisual);\n }\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Array.} stateList\n * @param {Object} visualMappings >\n * @param {Function} getValueState param: valueOrIndex, return: state.\n * @param {number} [dim] dimension or dimension index.\n */\n\n\nfunction incrementalApplyVisual(stateList, visualMappings, getValueState, dim) {\n var visualTypesMap = {};\n zrUtil.each(stateList, function (state) {\n var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\n visualTypesMap[state] = visualTypes;\n });\n\n function progress(params, data) {\n if (dim != null) {\n dim = data.getDimension(dim);\n }\n\n function getVisual(key) {\n return data.getItemVisual(dataIndex, key);\n }\n\n function setVisual(key, value) {\n data.setItemVisual(dataIndex, key, value);\n }\n\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var rawDataItem = data.getRawDataItem(dataIndex); // Consider performance\n\n if (rawDataItem && rawDataItem.visualMap === false) {\n continue;\n }\n\n var value = dim != null ? data.get(dim, dataIndex, true) : dataIndex;\n var valueState = getValueState(value);\n var mappings = visualMappings[valueState];\n var visualTypes = visualTypesMap[valueState];\n\n for (var i = 0, len = visualTypes.length; i < len; i++) {\n var type = visualTypes[i];\n mappings[type] && mappings[type].applyVisual(value, getVisual, setVisual);\n }\n }\n }\n\n return {\n progress: progress\n };\n}\n\nexports.createVisualMappings = createVisualMappings;\nexports.replaceVisualOption = replaceVisualOption;\nexports.applyVisual = applyVisual;\nexports.incrementalApplyVisual = incrementalApplyVisual;","/*\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(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['exports', 'echarts'], factory);\n } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {\n // CommonJS\n factory(exports, require('echarts'));\n } else {\n // Browser globals\n factory({}, root.echarts);\n }\n}(this, function (exports, echarts) {\n var log = function (msg) {\n if (typeof console !== 'undefined') {\n console && console.error && console.error(msg);\n }\n }\n if (!echarts) {\n log('ECharts is not Loaded');\n return;\n }\n if (!echarts.registerMap) {\n log('ECharts Map is not loaded')\n return;\n }\n echarts.registerMap('china', {\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"id\":\"710000\",\"properties\":{\"id\":\"710000\",\"cp\":[121.509062,24.044332],\"name\":\"台湾\",\"childNum\":6},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@°Ü¯Û\"],[\"@@ƛĴÕƊÉɼģºðʀ\\\\ƎsÆNŌÔĚäœnÜƤɊĂǀĆĴžĤNJŨxĚĮǂƺòƌ‚–âÔ®ĮXŦţƸZûЋƕƑGđ¨ĭMó·ęcëƝɉlÝƯֹÅŃ^Ó·śŃNjƏďíåɛGɉ™¿@ăƑŽ¥ĘWǬÏĶŁâ\"],[\"@@\\\\p|WoYG¿¥I†j@¢\"],[\"@@…¡‰@ˆV^RqˆBbAŒnTXeRz¤Lž«³I\"],[\"@@ÆEE—„kWqë @œ\"],[\"@@fced\"],[\"@@„¯ɜÄèaì¯ØǓIġĽ\"],[\"@@çûĖ롖hòř \"]],\"encodeOffsets\":[[[122886,24033]],[[123335,22980]],[[122375,24193]],[[122518,24117]],[[124427,22618]],[[124862,26043]],[[126259,26318]],[[127671,26683]]]}},{\"type\":\"Feature\",\"id\":\"130000\",\"properties\":{\"id\":\"130000\",\"cp\":[114.502461,38.045474],\"name\":\"河北\",\"childNum\":3},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@o~†Z]‚ªr‰ºc_ħ²G¼s`jΟnüsœłNX_“M`ǽÓnUK…Ĝēs¤­©yrý§uģŒc†JŠ›e\"],[\"@@U`Ts¿m‚\"],[\"@@oºƋÄd–eVŽDJj£€J|Ådz•Ft~žKŨ¸IÆv|”‡¢r}膎onb˜}`RÎÄn°ÒdÞ²„^®’lnÐèĄlðӜ×]ªÆ}LiĂ±Ö`^°Ç¶p®đDcœŋ`–ZÔ’¶êqvFƚ†N®ĆTH®¦O’¾ŠIbÐã´BĐɢŴÆíȦp–ĐÞXR€·nndOž¤’OÀĈƒ­Qg˜µFo|gȒęSWb©osx|hYh•gŃfmÖĩnº€T̒Sp›¢dYĤ¶UĈjl’ǐpäìë|³kÛfw²Xjz~ÂqbTŠÑ„ěŨ@|oM‡’zv¢ZrÃVw¬ŧĖ¸fŒ°ÐT€ªqŽs{Sž¯r æÝlNd®²Ğ džiGʂJ™¼lr}~K¨ŸƐÌWö€™ÆŠzRš¤lêmĞL΄’@¡|q]SvK€ÑcwpÏρ†ĿćènĪWlĄkT}ˆJ”¤~ƒÈT„d„™pddʾĬŠ”ŽBVt„EÀ¢ôPĎƗè@~‚k–ü\\\\rÊĔÖæW_§¼F˜†´©òDòj’ˆYÈrbĞāøŀG{ƀ|¦ðrb|ÀH`pʞkv‚GpuARhÞÆǶgʊTǼƹS£¨¡ù³ŘÍ]¿Ây™ôEP xX¶¹܇O¡“gÚ¡IwÃ鑦ÅB‡Ï|Ç°…N«úmH¯‹âŸDùŽyŜžŲIÄuШDž•¸dɂ‡‚FŸƒ•›Oh‡đ©OŸ›iÃ`ww^ƒÌkŸ‘ÑH«ƇǤŗĺtFu…{Z}Ö@U‡´…ʚLg®¯Oı°ÃwŸ ^˜—€VbÉs‡ˆmA…ê]]w„§›RRl£‡ȭµu¯b{ÍDěïÿȧŽuT£ġƒěŗƃĝ“Q¨fV†Ƌ•ƅn­a@‘³@šď„yýIĹÊKšŭfċŰóŒxV@tˆƯŒJ”]eƒR¾fe|rHA˜|h~Ėƍl§ÏŠlTíb ØoˆÅbbx³^zÃĶš¶Sj®A”yÂhðk`š«P€”ˈµEF†Û¬Y¨Ļrõqi¼‰Wi°§’б´°^[ˆÀ|ĠO@ÆxO\\\\tŽa\\\\tĕtû{ġŒȧXýĪÓjùÎRb›š^ΛfK[ݏděYfíÙTyŽuUSyŌŏů@Oi½’éŅ­aVcř§ax¹XŻác‡žWU£ôãºQ¨÷Ñws¥qEH‰Ù|‰›šYQoŕÇyáĂ£MðoťÊ‰P¡mšWO¡€v†{ôvîēÜISpÌhp¨ ‘j†deŔQÖj˜X³à™Ĉ[n`Yp@Už–cM`’RKhŒEbœ”pŞlNut®Etq‚nsÁŠgA‹iú‹oH‡qCX‡”hfgu“~ϋWP½¢G^}¯ÅīGCŸÑ^ãziMáļMTÃƘrMc|O_ž¯Ŏ´|‡morDkO\\\\mĆJfl@cĢ¬¢aĦtRıҙ¾ùƀ^juųœK­ƒUFy™—Ɲ…›īÛ÷ąV×qƥV¿aȉd³B›qPBm›aËđŻģm“Å®VŠ¹d^K‡KoŸnYg“¯Xhqa”Ldu¥•ÍpDž¡KąÅƒkĝęěhq‡}HyÓ]¹ǧ£…Í÷¿qᵧš™g‘¤o^á¾ZE‡¤i`ij{n•ƒOl»ŸWÝĔįhg›F[¿¡—ßkOüš_‰€ū‹i„DZàUtėGylƒ}ŒÓM}€jpEC~¡FtoQi‘šHkk{Ãmï‚\"]],\"encodeOffsets\":[[[119712,40641]],[[121616,39981]],[[116462,37237]]]}},{\"type\":\"Feature\",\"id\":\"140000\",\"properties\":{\"id\":\"140000\",\"cp\":[111.849248,36.857014],\"name\":\"山西\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@Þĩ҃S‰ra}Á€yWix±Üe´lè“ßÓǏok‘ćiµVZģ¡coœ‘TS˹ĪmnÕńe–hZg{gtwªpXaĚThȑp{¶Eh—®RćƑP¿£‘Pmc¸mQÝW•ďȥoÅîɡųAďä³aωJ‘½¥PG­ąSM­™…EÅruµé€‘Yӎ•Ō_d›ĒCo­Èµ]¯_²ÕjāŽK~©ÅØ^ԛkïçămϑk]­±ƒcݯÑÃmQÍ~_a—pm…~ç¡q“ˆu{JÅŧ·Ls}–EyÁÆcI{¤IiCfUc•ƌÃp§]웫vD@¡SÀ‘µM‚ÅwuŽYY‡¡DbÑc¡hƒ×]nkoQdaMç~eD•ÛtT‰©±@¥ù@É¡‰ZcW|WqOJmĩl«ħşvOÓ«IqăV—¥ŸD[mI~Ó¢cehiÍ]Ɠ~ĥqXŠ·eƷœn±“}v•[ěďŽŕ]_‘œ•`‰¹ƒ§ÕōI™o©b­s^}Ét±ū«³p£ÿ·Wµ|¡¥ăFÏs׌¥ŅxŸÊdÒ{ºvĴÎêÌɊ²¶€ü¨|ÞƸµȲ‘LLúÉƎ¤ϊęĔV`„_bª‹S^|ŸdŠzY|dz¥p†ZbÆ£¶ÒK}tĦÔņƠ‚PYzn€ÍvX¶Ěn ĠÔ„zý¦ª˜÷žÑĸَUȌ¸‚dòÜJð´’ìúNM¬ŒXZ´‘¤ŊǸ_tldIš{¦ƀðĠȤ¥NehXnYG‚‡R° ƬDj¬¸|CĞ„Kq‚ºfƐiĺ©ª~ĆOQª ¤@ìǦɌ²æBŒÊ”TœŸ˜ʂōĖ’šĴŞ–ȀœÆÿȄlŤĒö„t”νî¼ĨXhŒ‘˜|ªM¤Ðz\"],\"encodeOffsets\":[[116874,41716]]}},{\"type\":\"Feature\",\"id\":\"150000\",\"properties\":{\"id\":\"150000\",\"cp\":[111.670801,41.818311],\"name\":\"内蒙古\",\"childNum\":2},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@¯PqƒFB…‰|S•³C|kñ•H‹d‘iÄ¥sˆʼnő…PóÑÑE^‘ÅPpy_YtS™hQ·aHwsOnʼnÚs©iqj›‰€USiº]ïWš‰«gW¡A–Rë¥_ŽsgÁnUI«m‰…„‹]j‡vV¼euhwqA„aW˜ƒ_µj…»çjioQR¹ēÃßt@r³[ÛlćË^ÍÉáG“›OUۗOB±•XŸkŇ¹£k|e]ol™ŸkVͼÕqtaÏõjgÁ£§U^Œ”RLˆËnX°Ç’Bz†^~wfvˆypV ¯„ƫĉ˭ȫƗŷɿÿĿƑ˃ĝÿÃǃßËőó©ǐȍŒĖM×ÍEyx‹þp]Évïè‘vƀnÂĴÖ@‚‰†V~Ĉv¦wĖt—ējyÄDXÄxGQuv_›i¦aBçw‘˛wD™©{ŸtāmQ€{EJ§KPśƘƿ¥@‰sCT•É}ɃwˆƇy±ŸgÑ“}T[÷kÐ禫…SÒ¥¸ëBX½‰HáŵÀğtSÝÂa[ƣ°¯¦P]£ġ“–“Òk®G²„èQ°óMq}EŠóƐÇ\\\\ƒ‡@áügQ͋u¥Fƒ“T՛¿Jû‡]|mvāÎYua^WoÀa·­ząÒot׶CLƗi¯¤mƎHNJ¤îìɾŊìTdåwsRÖgĒųúÍġäÕ}Q¶—ˆ¿A•†‹[¡Œ{d×uQAƒ›M•xV‹vMOmăl«ct[wº_šÇʊŽŸjb£ĦS_é“QZ“_lwgOiýe`YYLq§IÁˆdz£ÙË[ÕªuƏ³ÍT—s·bÁĽäė[›b[ˆŗfãcn¥îC¿÷µ[ŏÀQ­ōšĉm¿Á^£mJVm‡—L[{Ï_£›F¥Ö{ŹA}…×Wu©ÅaųijƳhB{·TQqÙIķˑZđ©Yc|M¡…L•eVUóK_QWk’_ĥ‘¿ãZ•»X\\\\ĴuUƒè‡lG®ěłTĠğDєOrÍd‚ÆÍz]‹±…ŭ©ŸÅ’]ŒÅÐ}UË¥©Tċ™ïxgckfWgi\\\\ÏĒ¥HkµE˜ë{»ÏetcG±ahUiñiWsɁˆ·c–C‚Õk]wȑ|ća}w…VaĚ᠞ŒG°ùnM¬¯†{ȈÐÆA’¥ÄêJxÙ¢”hP¢Ûˆº€µwWOŸóFŽšÁz^ÀŗÎú´§¢T¤ǻƺSė‰ǵhÝÅQgvBHouʝl_o¿Ga{ïq{¥|ſĿHĂ÷aĝÇq‡Z‘ñiñC³ª—…»E`¨åXēÕqÉû[l•}ç@čƘóO¿¡ƒFUsA‰“ʽīccšocƒ‚ƒÇS}„“£‡IS~ălkĩXçmĈ…ŀЂoÐdxÒuL^T{r@¢‘žÍƒĝKén£kQ™‰yšÅõËXŷƏL§~}kqš»IHėDžjĝŸ»ÑÞoŸå°qTt|r©ÏS‹¯·eŨĕx«È[eMˆ¿yuˆ‘pN~¹ÏyN£{©’—g‹ħWí»Í¾s“əšDž_ÃĀɗ±ą™ijĉʍŌŷ—S›É“A‹±åǥɋ@럣R©ąP©}ĹªƏj¹erƒLDĝ·{i«ƫC£µsKCš…GS|úþX”gp›{ÁX¿Ÿć{ƱȏñZáĔyoÁhA™}ŅĆfdʼn„_¹„Y°ėǩÑ¡H¯¶oMQqð¡Ë™|‘Ñ`ƭŁX½·óۓxğįÅcQ‡ˆ“ƒs«tȋDžF“Ÿù^i‘t«Č¯[›hAi©á¥ÇĚ×l|¹y¯YȵƓ‹ñǙµï‚ċ™Ļ|Dœ™üȭ¶¡˜›oŽäÕG\\\\ďT¿Òõr¯œŸLguÏYęRƩšɷŌO\\\\İТæ^Ŋ IJȶȆbÜGŽĝ¬¿ĚVĎgª^íu½jÿĕęjık@Ľƒ]ėl¥Ë‡ĭûÁ„ƒėéV©±ćn©­ȇžÍq¯½•YÃÔʼn“ÉNѝÅÝy¹NqáʅDǡËñ­ƁYÅy̱os§ȋµʽǘǏƬɱà‘ưN¢ƔÊuľýľώȪƺɂļžxœZĈ}ÌʼnŪ˜ĺœŽĭFЛĽ̅ȣͽÒŵìƩÇϋÿȮǡŏçƑůĕ~Ǎ›¼ȳÐUf†dIxÿ\\\\G ˆzâɏÙOº·pqy£†@ŒŠqþ@Ǟ˽IBäƣzsÂZ†ÁàĻdñ°ŕzéØűzșCìDȐĴĺf®ŽÀľưø@ɜÖÞKĊŇƄ§‚͑těï͡VAġÑÑ»d³öǍÝXĉĕÖ{þĉu¸ËʅğU̎éhɹƆ̗̮ȘNJ֥ड़ࡰţાíϲäʮW¬®ҌeרūȠkɬɻ̼ãüfƠSצɩςåȈHϚÎKdzͲOðÏȆƘ¼CϚǚ࢚˼ФԂ¤ƌžĞ̪Qʤ´¼mȠJˀŸƲÀɠmǐnǔĎȆÞǠN~€ʢĜ‚¶ƌĆĘźʆȬ˪ĚĒ¸ĞGȖƴƀj`ĢçĶāàŃºēĢƒĖćšYŒÀŎüôQÐÂŎŞdžŞêƖš˜oˆDĤÕºÑǘÛˤ³̀gńƘĔÀ^žªƂ`ªt¾äƚêĦĀ¼Ð€Ĕǎ¨Ȕ»͠^ˮÊȦƤøxRrŜH¤¸ÂxDĝŒ|ø˂˜ƮÐ¬ɚwɲFjĔ²Äw°dždÀɞ_ĸdîàŎjʜêTЪŌ‡ŜWÈ|tqĢUB~´°ÎFC•ŽU¼pĀēƄN¦¾O¶ŠłKĊOj“Ě”j´ĜYp˜{¦„ˆSĚÍ\\\\Tš×ªV–÷Ší¨ÅDK°ßtŇĔKš¨ǵÂcḷ̌ĚǣȄĽF‡lġUĵœŇ‹ȣFʉɁƒMğįʏƶɷØŭOǽ«ƽū¹Ʊő̝Ȩ§ȞʘĖiɜɶʦ}¨֪ࠜ̀ƇǬ¹ǨE˦ĥªÔêFŽxúQ„Er´W„rh¤Ɛ \\\\talĈDJ˜Ü|[Pll̚¸ƎGú´Pž¬W¦†^¦–H]prR“n|or¾wLVnÇIujkmon£cX^Bh`¥V”„¦U¤¸}€xRj–[^xN[~ªŠxQ„‚[`ªHÆÂExx^wšN¶Ê˜|¨ì†˜€MrœdYp‚oRzNy˜ÀDs~€bcfÌ`L–¾n‹|¾T‚°c¨È¢a‚r¤–`[|òDŞĔöxElÖdH„ÀI`„Ď\\\\Àì~ƎR¼tf•¦^¢ķ¶e”ÐÚMŒptgj–„ɡČÅyġLû™ŇV®ŠÄÈƀ†Ď°P|ªVV†ªj–¬ĚÒêp¬–E|ŬÂc|ÀtƐK fˆ{ĘFĒœƌXƲąo½Ę‘\\\\¥–o}›Ûu£ç­kX‘{uĩ«āíÓUŅßŢq€Ť¥lyň[€oi{¦‹L‡ń‡ðFȪȖ”ĒL„¿Ì‹ˆfŒ£K£ʺ™oqNŸƒwğc`ue—tOj×°KJ±qƒÆġm‰Ěŗos¬…qehqsuœƒH{¸kH¡Š…ÊRǪÇƌbȆ¢´ä܍¢NìÉʖ¦â©Ġu¦öČ^â£Ăh–šĖMÈÄw‚\\\\fŦ°W ¢¾luŸD„wŠ\\\\̀ʉÌÛM…Ā[bӞEn}¶Vc…ê“sƒ\"]],\"encodeOffsets\":[[[129102,52189]]]}},{\"type\":\"Feature\",\"id\":\"210000\",\"properties\":{\"id\":\"210000\",\"cp\":[123.429096,41.796767],\"name\":\"辽宁\",\"childNum\":16},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@L–Ž@@s™a\"],[\"@@MnNm\"],[\"@@d‚c\"],[\"@@eÀ‚C@b‚“‰\"],[\"@@f‡…Xwkbr–Ä`qg\"],[\"@@^jtW‘Q\"],[\"@@~ Y]c\"],[\"@@G`ĔN^_¿Z‚ÃM\"],[\"@@iX¶B‹Y\"],[\"@@„YƒZ\"],[\"@@L_{Epf\"],[\"@@^WqCT\\\\\"],[\"@@\\\\[“‹§t|”¤_\"],[\"@@m`n_\"],[\"@@Ïxnj{q_×^Giip\"],[\"@@@œé^B†‡ntˆaÊU—˜Ÿ]x ¯ÄPIJ­°h€ʙK³†VˆÕ@Y~†|EvĹsDŽ¦­L^p²ŸÒG ’Ël]„xxÄ_˜fT¤Ď¤cŽœP„–C¨¸TVjbgH²sdÎdHt`Bˆ—²¬GJję¶[ÐhjeXdlwhšðSȦªVÊπ‹Æ‘Z˜ÆŶ®²†^ŒÎyÅÎcPqń“ĚDMħĜŁH­ˆk„çvV[ij¼W–‚YÀäĦ’‘`XlžR`žôLUVžfK–¢†{NZdĒª’YĸÌÚJRr¸SA|ƴgŴĴÆbvªØX~†źBŽ|¦ÕœEž¤Ð`\\\\|Kˆ˜UnnI]¤ÀÂĊnŎ™R®Ő¿¶\\\\ÀøíDm¦ÎbŨab‰œaĘ\\\\ľã‚¸a˜tÎSƐ´©v\\\\ÖÚÌǴ¤Â‡¨JKr€Z_Z€fjþhPkx€`Y”’RIŒjJcVf~sCN¤ ˆE‚œhæm‰–sHy¨SðÑÌ\\\\\\\\ŸĐRZk°IS§fqŒßýáЍÙÉÖ[^¯ǤŲ„ê´\\\\¦¬ĆPM¯£Ÿˆ»uïpùzEx€žanµyoluqe¦W^£ÊL}ñrkqWňûP™‰UP¡ôJŠoo·ŒU}£Œ„[·¨@XŒĸŸ“‹‹DXm­Ûݏº‡›GU‹CÁª½{íĂ^cj‡k“¶Ã[q¤“LÉö³cux«zZfƒ²BWÇ®Yß½ve±ÃC•ý£W{Ú^’q^sÑ·¨‹ÍOt“¹·C¥‡GD›rí@wÕKţ݋˜Ÿ«V·i}xËÍ÷‘i©ĝ‡ɝǡ]ƒˆ{c™±OW‹³Ya±Ÿ‰_穂Hžĕoƫ€Ňqƒr³‰Lys[„ñ³¯OS–ďOMisZ†±ÅFC¥Pq{‚Ã[Pg}\\\\—¿ghćO…•k^ģÁFıĉĥM­oEqqZûěʼn³F‘¦oĵ—hŸÕP{¯~TÍlª‰N‰ßY“Ð{Ps{ÃVU™™eĎwk±ʼnVÓ½ŽJãÇÇ»Jm°dhcÀff‘dF~ˆ€ĀeĖ€d`sx² šƒ®EżĀdQ‹Âd^~ăÔHˆ¦\\\\›LKpĄVez¤NP ǹӗR™ÆąJSh­a[¦´Âghwm€BÐ¨źhI|žVVŽ—Ž|p] Â¼èNä¶ÜBÖ¼“L`‚¼bØæŒKV”ŸpoœúNZÞÒKxpw|ÊEMnzEQšŽIZ”ŽZ‡NBˆčÚFÜçmĩ‚WĪñt‘ÞĵÇñZ«uD‚±|Əlij¥ãn·±PmÍa‰–da‡ CL‡Ǒkùó¡³Ï«QaċϑOÃ¥ÕđQȥċƭy‹³ÃA\"]],\"encodeOffsets\":[[[123686,41445]],[[126019,40435]],[[124393,40128]],[[126117,39963]],[[125322,40140]],[[126686,40700]],[[126041,40374]],[[125584,40168]],[[125453,40165]],[[125362,40214]],[[125280,40291]],[[125774,39997]],[[125976,40496]],[[125822,39993]],[[125509,40217]],[[122731,40949]]]}},{\"type\":\"Feature\",\"id\":\"220000\",\"properties\":{\"id\":\"220000\",\"cp\":[125.3245,43.886841],\"name\":\"吉林\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@‘p䔳PClƒFbbÍzš€wBG’ĭ€Z„Åi“»ƒlY­ċ²SgŽkÇ£—^S‰“qd¯•‹R…©éŽ£¯S†\\\\cZ¹iűƏCuƍÓX‡oR}“M^o•£…R}oªU­F…uuXHlEŕ‡€Ï©¤ÛmTŽþ¤D–²ÄufàÀ­XXȱAe„yYw¬dvõ´KÊ£”\\\\rµÄl”iˆdā]|DÂVŒœH¹ˆÞ®ÜWnŒC”Œķ W‹§@\\\\¸‹ƒ~¤‹Vp¸‰póIO¢ŠVOšŇürXql~òÉK]¤¥Xrfkvzpm¶bwyFoúvð‡¼¤ N°ąO¥«³[ƒéǡű_°Õ\\\\ÚÊĝŽþâőàerR¨­JYlďQ[ ÏYëЧTGz•tnŠß¡gFkMŸāGÁ¤ia É‰™È¹`\\\\xs€¬dĆkNnuNUŠ–užP@‚vRY¾•–\\\\¢…ŒGªóĄ~RãÖÎĢù‚đŴÕhQŽxtcæëSɽʼníëlj£ƍG£nj°KƘµDsØÑpyƸ®¿bXp‚]vbÍZuĂ{nˆ^IüœÀSք”¦EŒvRÎûh@℈[‚Əȉô~FNr¯ôçR±ƒ­HÑl•’Ģ–^¤¢‚OðŸŒævxsŒ]ÞÁTĠs¶¿âƊGW¾ìA¦·TѬ†è¥€ÏÐJ¨¼ÒÖ¼ƒƦɄxÊ~S–tD@ŠĂ¼Ŵ¡jlºWžvЉˆzƦZЎ²CH— „Axiukd‹ŒGgetqmcžÛ£Ozy¥cE}|…¾cZ…k‚‰¿uŐã[oxGikfeäT@…šSUwpiÚFM©’£è^ڟ‚`@v¶eň†f h˜eP¶žt“äOlÔUgƒÞzŸU`lœ}ÔÆUvØ_Ō¬Öi^ĉi§²ÃŠB~¡Ĉ™ÚEgc|DC_Ȧm²rBx¼MÔ¦ŮdĨÃâYx‘ƘDVÇĺĿg¿cwÅ\\\\¹˜¥Yĭlœ¤žOv†šLjM_a W`zļMž·\\\\swqÝSA‡š—q‰Śij¯Š‘°kŠRē°wx^Đkǂғ„œž“œŽ„‹\\\\]˜nrĂ}²ĊŲÒøãh·M{yMzysěnĒġV·°“G³¼XÀ““™¤¹i´o¤ŃšŸÈ`̃DzÄUĞd\\\\i֚ŒˆmÈBĤÜɲDEh LG¾ƀľ{WaŒYÍȏĢĘÔRîĐj‹}Ǟ“ccj‡oUb½š{“h§Ǿ{K‹ƖµÎ÷žGĀÖŠåưÎs­l›•yiē«‹`姝H¥Ae^§„GK}iã\\\\c]v©ģZ“mÃ|“[M}ģTɟĵ‘Â`À–çm‰‘FK¥ÚíÁbXš³ÌQґHof{‰]e€pt·GŋĜYünĎųVY^’˜ydõkÅZW„«WUa~U·Sb•wGçǑ‚“iW^q‹F‚“›uNĝ—·Ew„‹UtW·Ýďæ©PuqEzwAV•—XR‰ãQ`­©GŒM‡ehc›c”ďϝd‡©ÑW_ϗYƅŒ»…é\\\\ƒɹ~ǙG³mØ©BšuT§Ĥ½¢Ã_ý‘L¡‘ýŸqT^rme™\\\\Pp•ZZbƒyŸ’uybQ—efµ]UhĿDCmûvašÙNSkCwn‰cćfv~…Y‹„ÇG\"],\"encodeOffsets\":[[130196,42528]]}},{\"type\":\"Feature\",\"id\":\"230000\",\"properties\":{\"id\":\"230000\",\"cp\":[128.642464,46.756967],\"name\":\"黑龙江\",\"childNum\":2},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@UƒµNÿ¥īè灋•HÍøƕ¶LŒǽ|g¨|”™Ža¾pViˆdd”~ÈiŒíďÓQġėǐZ΋ŽXb½|ſÃH½ŸKFgɱCģÛÇA‡n™‹jÕc[VĝDZÃ˄Ç_™ £ń³pŽj£º”š¿”»WH´¯”U¸đĢmžtĜyzzNN|g¸÷äűѱĉā~mq^—Œ[ƒ”››”ƒǁÑďlw]¯xQĔ‰¯l‰’€°řĴrŠ™˜BˆÞTxr[tŽ¸ĻN_yŸX`biN™Ku…P›£k‚ZĮ—¦[ºxÆÀdhŽĹŀUÈƗCw’áZħÄŭcÓ¥»NAw±qȥnD`{ChdÙFćš}¢‰A±Äj¨]ĊÕjŋ«×`VuÓś~_kŷVÝyh„“VkÄãPs”Oµ—fŸge‚Ň…µf@u_Ù ÙcŸªNªÙEojVx™T@†ãSefjlwH\\\\pŏäÀvŠŽlY†½d{†F~¦dyz¤PÜndsrhf‹HcŒvlwjFœ£G˜±DύƥY‡yϊu¹XikĿ¦ÏqƗǀOŜ¨LI|FRĂn sª|Cš˜zxAè¥bœfudTrFWÁ¹Am|˜ĔĕsķÆF‡´Nš‰}ć…UŠÕ@Áijſmužç’uð^ÊýowŒFzØÎĕNőžǏȎôªÌŒDŽàĀÄ˄ĞŀƒʀĀƘŸˮȬƬĊ°ƒUŸzou‡xe]}Ž…AyȑW¯ÌmK‡“Q]‹Īºif¸ÄX|sZt|½ÚUΠlkš^p{f¤lˆºlÆW –€A²˜PVܜPH”Êâ]ÎĈÌÜk´\\\\@qàsĔÄQºpRij¼èi†`¶—„bXƒrBgxfv»ŽuUiˆŒ^v~”J¬mVp´£Œ´VWrnP½ì¢BX‚¬h™ŠðX¹^TjVœŠriªj™tŊÄm€tPGx¸bgRšŽsT`ZozÆO]’ÒFô҆Oƒ‡ŊŒvŞ”p’cGŒêŠsx´DR–Œ{A†„EOr°Œ•žx|íœbˆ³Wm~DVjºéNN†Ëܲɶ­GƒxŷCStŸ}]ûō•SmtuÇÃĕN•™āg»šíT«u}ç½BĵÞʣ¥ëÊ¡Mێ³ãȅ¡ƋaǩÈÉQ‰†G¢·lG|›„tvgrrf«†ptęŘnŠÅĢr„I²¯LiØsPf˜_vĠd„xM prʹšL¤‹¤‡eˌƒÀđK“žïÙVY§]I‡óáĥ]ķ†Kˆ¥Œj|pŇ\\\\kzţ¦šnņäÔVĂîĪ¬|vW’®l¤èØr‚˜•xm¶ă~lÄƯĄ̈́öȄEÔ¤ØQĄ–Ą»ƢjȦOǺ¨ìSŖÆƬy”Qœv`–cwƒZSÌ®ü±DŽ]ŀç¬B¬©ńzƺŷɄeeOĨS’Œfm Ċ‚ƀP̎ēz©Ċ‚ÄÕÊmgŸÇsJ¥ƔˆŊśæ’΁Ñqv¿íUOµª‰ÂnĦÁ_½ä@ê텣P}Ġ[@gġ}g“ɊדûÏWXá¢užƻÌsNͽƎÁ§č՛AēeL³àydl›¦ĘVçŁpśdžĽĺſʃQíÜçÛġԏsĕ¬—Ǹ¯YßċġHµ ¡eå`ļƒrĉŘóƢFì“ĎWøxÊk†”ƈdƬv|–I|·©NqńRŀƒ¤é”eŊœŀ›ˆàŀU²ŕƀB‚Q£Ď}L¹Îk@©ĈuǰųǨ”Ú§ƈnTËÇéƟÊcfčŤ^Xm‡—HĊĕË«W·ċëx³ǔķÐċJā‚wİ_ĸ˜Ȁ^ôWr­°oú¬Ħ…ŨK~”ȰCĐ´Ƕ£’fNÎèâw¢XnŮeÂÆĶŽ¾¾xäLĴĘlļO¤ÒĨA¢Êɚ¨®‚ØCÔ ŬGƠ”ƦYĜ‡ĘÜƬDJ—g_ͥœ@čŅĻA“¶¯@wÎqC½Ĉ»NŸăëK™ďÍQ“Ùƫ[«Ãí•gßÔÇOÝáW‘ñuZ“¯ĥ€Ÿŕā¡ÑķJu¤E Ÿå¯°WKɱ_d_}}vyŸõu¬ï¹ÓU±½@gÏ¿rýD‰†g…Cd‰µ—°MFYxw¿CG£‹Rƛ½Õ{]L§{qqąš¿BÇƻğëšܭNJË|c²}Fµ}›ÙRsÓpg±ŠQNqǫŋRwŕnéÑÉKŸ†«SeYR…ŋ‹@{¤SJ}šD Ûǖ֍Ÿ]gr¡µŷjqWÛham³~S«“„›Þ]\"]],\"encodeOffsets\":[[[134456,44547]]]}},{\"type\":\"Feature\",\"id\":\"320000\",\"properties\":{\"id\":\"320000\",\"cp\":[119.767413,33.041544],\"name\":\"江苏\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@cþÅPiŠ`ZŸRu¥É\\\\]~°ŽY`µ†Óƒ^phÁbnÀşúŽòa–ĬºTÖŒb‚˜e¦¦€{¸ZâćNpŒ©žHr|^ˆmjhŠSEb\\\\afv`sz^lkŽlj‹Ätg‹¤D˜­¾Xš¿À’|ДiZ„ȀåB·î}GL¢õcßjaŸyBFµÏC^ĭ•cÙt¿sğH]j{s©HM¢ƒQnDÀ©DaÜތ·jgàiDbPufjDk`dPOîƒhw¡ĥ‡¥šG˜ŸP²ĐobºrY†„î¶aHŢ´ ]´‚rılw³r_{£DB_Ûdåuk|ˆŨ¯F Cºyr{XFy™e³Þċ‡¿Â™kĭB¿„MvÛpm`rÚã”@Ę¹hågËÖƿxnlč¶Åì½Ot¾dJlŠVJʜǀœŞqvnOŠ^ŸJ”Z‘ż·Q}ê͎ÅmµÒ]Žƍ¦Dq}¬R^èĂ´ŀĻĊIԒtžIJyQŐĠMNtœR®òLh‰›Ěs©»œ}OӌGZz¶A\\\\jĨFˆäOĤ˜HYš†JvÞHNiÜaϚɖnFQlšNM¤ˆB´ĄNöɂtp–Ŭdf先‹qm¿QûŠùއÚb¤uŃJŴu»¹Ą•lȖħŴw̌ŵ²ǹǠ͛hĭłƕrçü±Y™xci‡tğ®jű¢KOķ•Coy`å®VTa­_Ā]ŐÝɞï²ʯÊ^]afYǸÃĆēĪȣJđ͍ôƋĝÄ͎ī‰çÛɈǥ£­ÛmY`ó£Z«§°Ó³QafusNıDž_k}¢m[ÝóDµ—¡RLčiXy‡ÅNïă¡¸iĔϑNÌŕoēdōîåŤûHcs}~Ûwbù¹£¦ÓCt‹OPrƒE^ÒoŠg™ĉIµžÛÅʹK…¤½phMŠü`o怆ŀ\"],\"encodeOffsets\":[[121740,32276]]}},{\"type\":\"Feature\",\"id\":\"330000\",\"properties\":{\"id\":\"330000\",\"cp\":[120.153576,29.287459],\"name\":\"浙江\",\"childNum\":45},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@E^dQ]K\"],[\"@@jX^j‡\"],[\"@@sfŠbU‡\"],[\"@@qP\\\\xz[ck\"],[\"@@‘Rƒ¢‚FX}°[s_\"],[\"@@Cbœ\\\\—}\"],[\"@@e|v\\\\la{u\"],[\"@@v~u}\"],[\"@@QxÂF¯}\"],[\"@@¹nŒvÞs¯o\"],[\"@@rSkUEj\"],[\"@@bi­ZŒP\"],[\"@@p[}INf\"],[\"@@À¿€\"],[\"@@¹dnbŒ…\"],[\"@@rSŸBnR\"],[\"@@g~h}\"],[\"@@FlEk\"],[\"@@OdPc\"],[\"@@v[u\\\\\"],[\"@@FjâL~wyoo~›sµL–\\\\\"],[\"@@¬e¹aNˆ\"],[\"@@\\\\nÔ¡q]L³ë\\\\ÿ®ŒQ֎\"],[\"@@ÊA­©[¬\"],[\"@@KxŒv­\"],[\"@@@hlIk]\"],[\"@@pW{o||j\"],[\"@@Md|_mC\"],[\"@@¢…X£ÏylD¼XˆtH\"],[\"@@hlÜ[LykAvyfw^Ež›¤\"],[\"@@fp¤Mus“R\"],[\"@@®_ma~•LÁ¬šZ\"],[\"@@iM„xZ\"],[\"@@ZcYd\"],[\"@@Z~dOSo|A¿qZv\"],[\"@@@`”EN¡v\"],[\"@@|–TY{\"],[\"@@@n@m\"],[\"@@XWkCT\\\\\"],[\"@@ºwšZRkĕWO¢\"],[\"@@™X®±Grƪ\\\\ÔáXq{‹\"],[\"@@ůTG°ĄLHm°UC‹\"],[\"@@¤Ž€aÜx~}dtüGæţŎíĔcŖpMËВjē¢·ðĄÆMzˆjWKĎ¢Q¶˜À_꒔_Bı€i«pZ€gf€¤Nrq]§ĂN®«H±‡yƳí¾×ŸīàLłčŴǝĂíÀBŖÕªˆŠÁŖHŗʼnåqûõi¨hÜ·ƒñt»¹ýv_[«¸m‰YL¯‰Qª…mĉÅdMˆ•gÇjcº«•ęœ¬­K­´ƒB«Âącoċ\\\\xKd¡gěŧ«®á’[~ıxu·Å”KsËɏc¢Ù\\\\ĭƛëbf¹­ģSƒĜkáƉÔ­ĈZB{ŠaM‘µ‰fzʼnfåÂŧįƋǝÊĕġć£g³ne­ą»@­¦S®‚\\\\ßðCšh™iqªĭiAu‡A­µ”_W¥ƣO\\\\lċĢttC¨£t`ˆ™PZäuXßBs‡Ļyek€OđġĵHuXBšµ]׌‡­­\\\\›°®¬F¢¾pµ¼kŘó¬Wät’¸|@ž•L¨¸µr“ºù³Ù~§WI‹ŸZWŽ®’±Ð¨ÒÉx€`‰²pĜ•rOògtÁZ}þÙ]„’¡ŒŸFK‚wsPlU[}¦Rvn`hq¬\\\\”nQ´ĘRWb”‚_ rtČFI֊kŠŠĦPJ¶ÖÀÖJĈĄTĚòžC ²@Pú…Øzœ©PœCÈڜĒ±„hŖ‡l¬â~nm¨f©–iļ«m‡nt–u†ÖZÜÄj“ŠLŽ®E̜Fª²iÊxبžIÈhhst\"],[\"@@o\\\\V’zRZ}y\"],[\"@@†@°¡mۛGĕ¨§Ianá[ýƤjfæ‡ØL–•äGr™\"]],\"encodeOffsets\":[[[125592,31553]],[[125785,31436]],[[125729,31431]],[[125513,31380]],[[125223,30438]],[[125115,30114]],[[124815,29155]],[[124419,28746]],[[124095,28635]],[[124005,28609]],[[125000,30713]],[[125111,30698]],[[125078,30682]],[[125150,30684]],[[124014,28103]],[[125008,31331]],[[125411,31468]],[[125329,31479]],[[125626,30916]],[[125417,30956]],[[125254,30976]],[[125199,30997]],[[125095,31058]],[[125083,30915]],[[124885,31015]],[[125218,30798]],[[124867,30838]],[[124755,30788]],[[124802,30809]],[[125267,30657]],[[125218,30578]],[[125200,30562]],[[124968,30474]],[[125167,30396]],[[124955,29879]],[[124714,29781]],[[124762,29462]],[[124325,28754]],[[123990,28459]],[[125366,31477]],[[125115,30363]],[[125369,31139]],[[122495,31878]],[[125329,30690]],[[125192,30787]]]}},{\"type\":\"Feature\",\"id\":\"340000\",\"properties\":{\"id\":\"340000\",\"cp\":[117.283042,31.26119],\"name\":\"安徽\",\"childNum\":3},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@^iuLX^\"],[\"@@‚e©Ehl\"],[\"@@°ZÆëϵmkǀwÌÕæhºgBĝâqÙĊz›ÖgņtÀÁÊÆá’hEz|WzqD¹€Ÿ°E‡ŧl{ævÜcA`¤C`|´qžxIJkq^³³ŸGšµbƒíZ…¹qpa±ď OH—¦™Ħˆx¢„gPícOl_iCveaOjCh߸i݋bÛªCC¿€m„RV§¢A|t^iĠGÀtÚs–d]ĮÐDE¶zAb àiödK¡~H¸íæAžǿYƒ“j{ď¿‘™À½W—®£ChŒÃsiŒkkly]_teu[bFa‰Tig‡n{]Gqªo‹ĈMYá|·¥f¥—őaSÕė™NµñĞ«ImŒ_m¿Âa]uĜp …Z_§{Cƒäg¤°r[_Yj‰ÆOdý“[ŽI[á·¥“Q_n‡ùgL¾mv™ˊBÜƶĊJhšp“c¹˜O]iŠ]œ¥ jtsggJǧw×jÉ©±›EFˍ­‰Ki”ÛÃÕYv…s•ˆm¬njĻª•§emná}k«ŕˆƒgđ²Ù›DǤ›í¡ªOy›†×Où±@DŸñSęćăÕIÕ¿IµĥO‰‰jNÕËT¡¿tNæŇàåyķrĕq§ÄĩsWÆߎF¶žX®¿‰mŒ™w…RIޓfßoG‘³¾©uyH‘į{Ɓħ¯AFnuP…ÍÔzšŒV—dàôº^Ðæd´€‡oG¤{S‰¬ćxã}›ŧ×Kǥĩ«žÕOEзÖdÖsƘѨ[’Û^Xr¢¼˜§xvěƵ`K”§ tÒ´Cvlo¸fzŨð¾NY´ı~ÉĔē…ßúLÃϖ_ÈÏ|]ÂÏFl”g`bšežž€n¾¢pU‚h~ƴĖ¶_‚r sĄ~cž”ƈ]|r c~`¼{À{ȒiJjz`îÀT¥Û³…]’u}›f…ïQl{skl“oNdŸjŸäËzDvčoQŠďHI¦rb“tHĔ~BmlRš—V_„ħTLnñH±’DžœL‘¼L˜ªl§Ťa¸ŒĚlK²€\\\\RòvDcÎJbt[¤€D@®hh~kt°ǾzÖ@¾ªdb„YhüóZ ň¶vHrľ\\\\ʗJuxAT|dmÀO„‹[ÃԋG·ĚąĐlŪÚpSJ¨ĸˆLvÞcPæķŨŽ®mАˆálŸwKhïgA¢ųƩޖ¤OȜm’°ŒK´\"]],\"encodeOffsets\":[[[121722,32278]],[[119475,30423]],[[119168,35472]]]}},{\"type\":\"Feature\",\"id\":\"350000\",\"properties\":{\"id\":\"350000\",\"cp\":[118.306239,26.075302],\"name\":\"福建\",\"childNum\":18},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@“zht´‡]\"],[\"@@aj^~ĆG—©O\"],[\"@@ed¨„C}}i\"],[\"@@@vˆPGsQ\"],[\"@@‰sBz‚ddW]Q\"],[\"@@SŽ¨Q“{\"],[\"@@NŽVucW\"],[\"@@qptBAq\"],[\"@@‰’¸[mu\"],[\"@@Q\\\\pD]_\"],[\"@@jSwUadpF\"],[\"@@eXª~ƒ•\"],[\"@@AjvFso\"],[\"@@fT–›_Çí\\\\Ÿ™—v|ba¦jZÆy€°\"],[\"@@IjJi\"],[\"@@wJI€ˆxš«¼AoNe{M­\"],[\"@@K‰±¡Óˆ”ČäeZ\"],[\"@@k¡¹Eh~c®wBk‹UplÀ¡I•~Māe£bN¨gZý¡a±Öcp©PhžI”Ÿ¢Qq…ÇGj‹|¥U™ g[Ky¬ŏ–v@OpˆtÉEŸF„\\\\@ åA¬ˆV{Xģ‰ĐBy…cpě…¼³Ăp·¤ƒ¥o“hqqÚ¡ŅLsƒ^ᗞ§qlŸÀhH¨MCe»åÇGD¥zPO£čÙkJA¼ß–ėu›ĕeûҍiÁŧSW¥˜QŠûŗ½ùěcݧSùĩąSWó«íęACµ›eR—åǃRCÒÇZÍ¢‹ź±^dlsŒtjD¸•‚ZpužÔâÒH¾oLUêÃÔjjēò´ĄW‚ƛ…^Ñ¥‹ĦŸ@Çò–ŠmŒƒOw¡õyJ†yD}¢ďÑÈġfŠZd–a©º²z£šN–ƒjD°Ötj¶¬ZSÎ~¾c°¶Ðm˜x‚O¸¢Pl´žSL|¥žA†ȪĖM’ņIJg®áIJČĒü` ŽQF‡¬h|ÓJ@zµ |ê³È ¸UÖŬŬÀEttĸr‚]€˜ðŽM¤ĶIJHtÏ A’†žĬkvsq‡^aÎbvŒd–™fÊòSD€´Z^’xPsÞrv‹ƞŀ˜jJd×ŘÉ ®A–ΦĤd€xĆqAŒ†ZR”ÀMźŒnĊ»ŒİÐZ— YX–æJŠyĊ²ˆ·¶q§·–K@·{s‘Xãô«lŗ¶»o½E¡­«¢±¨Yˆ®Ø‹¶^A™vWĶGĒĢžPlzfˆļŽtàAvWYãšO_‡¤sD§ssČġ[kƤPX¦Ž`¶“ž®ˆBBvĪjv©šjx[L¥àï[F…¼ÍË»ğV`«•Ip™}ccÅĥZE‹ãoP…´B@ŠD—¸m±“z«Ƴ—¿å³BRضˆœWlâþäą`“]Z£Tc— ĹGµ¶H™m@_©—kŒ‰¾xĨ‡ôȉðX«½đCIbćqK³Á‹Äš¬OAwã»aLʼn‡ËĥW[“ÂGI—ÂNxij¤D¢ŽîĎÎB§°_JœGsƒ¥E@…¤uć…P‘å†cuMuw¢BI¿‡]zG¹guĮck\\\\_\"]],\"encodeOffsets\":[[[123250,27563]],[[122541,27268]],[[123020,27189]],[[122916,27125]],[[122887,26845]],[[122808,26762]],[[122568,25912]],[[122778,26197]],[[122515,26757]],[[122816,26587]],[[123388,27005]],[[122450,26243]],[[122578,25962]],[[121255,25103]],[[120987,24903]],[[122339,25802]],[[121042,25093]],[[122439,26024]]]}},{\"type\":\"Feature\",\"id\":\"360000\",\"properties\":{\"id\":\"360000\",\"cp\":[115.592151,27.676493],\"name\":\"江西\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@ĢĨƐgļˆ¼ÂMD~ņªe^\\\\^§„ý©j׍cZ†Ø¨zdÒa¶ˆlҍJŒìõ`oz÷@¤u޸´†ôęöY¼‰HČƶajlÞƩ¥éZ[”|h}^U Œ ¥p„ĄžƦO lt¸Æ €Q\\\\€ŠaÆ|CnÂOjt­ĚĤd’ÈŒF`’¶„@Ð딠¦ōҞ¨Sêv†HĢûXD®…QgėWiØPÞìºr¤dž€NĠ¢l–•ĄtZoœCƞÔºCxrpĠV®Ê{f_Y`_ƒeq’’®Aot`@o‚DXfkp¨|Šs¬\\\\D‘ÄSfè©Hn¬…^DhÆyøJh“ØxĢĀLʈ„ƠPżċĄwȠ̦G®ǒĤäTŠÆ~ĦwŠ«|TF¡Šn€c³Ïå¹]ĉđxe{ÎӐ†vOEm°BƂĨİ|G’vz½ª´€H’àp”eJ݆Qšxn‹ÀŠW­žEµàXÅĪt¨ÃĖrÄwÀFÎ|ňÓMå¼ibµ¯»åDT±m[“r«_gŽmQu~¥V\\\\OkxtL E¢‹ƒ‘Ú^~ýê‹Pó–qo슱_Êw§ÑªåƗā¼‹mĉŹ‹¿NQ“…YB‹ąrwģcÍ¥B•Ÿ­ŗÊcØiI—žƝĿuŒqtāwO]‘³YCñTeɕš‹caub͈]trlu€ī…B‘ПGsĵıN£ï—^ķqss¿FūūV՟·´Ç{éĈý‰ÿ›OEˆR_ŸđûIċâJh­ŅıN‘ȩĕB…¦K{Tk³¡OP·wn—µÏd¯}½TÍ«YiµÕsC¯„iM•¤™­•¦¯P|ÿUHv“he¥oFTu‰õ\\\\ŽOSs‹MòđƇiaºćXŸĊĵà·çhƃ÷ǜ{‘ígu^›đg’m[×zkKN‘¶Õ»lčÓ{XSƉv©_ÈëJbVk„ĔVÀ¤P¾ºÈMÖxlò~ªÚàGĂ¢B„±’ÌŒK˜y’áV‡¼Ã~­…`g›ŸsÙfI›Ƌlę¹e|–~udjˆuTlXµf`¿JdŠ[\\\\˜„L‚‘²\"],\"encodeOffsets\":[[116689,26234]]}},{\"type\":\"Feature\",\"id\":\"370000\",\"properties\":{\"id\":\"370000\",\"cp\":[118.000923,36.275807],\"name\":\"山东\",\"childNum\":13},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@Xjd]{K\"],[\"@@itbFHy\"],[\"@@HlGk\"],[\"@@T‚ŒGŸy\"],[\"@@K¬˜•‹U\"],[\"@@WdXc\"],[\"@@PtOs\"],[\"@@•LnXhc\"],[\"@@ppVƒu]Or\"],[\"@@cdzAUa\"],[\"@@udRhnCI‡\"],[\"@@ˆoIƒpR„\"],[\"@@Ľč{fzƤî’Kš–ÎMĮ]†—ZFˆ½Y]â£ph’™š¶¨râøÀ†ÎǨ¤^ºÄ”Gzˆ~grĚĜlĞƄLĆdž¢Îo¦–cv“Kb€gr°Wh”mZp ˆL]LºcU‰Æ­n”żĤÌĒœbAnrOAœ´žȊcÀbƦUØrĆUÜøœĬƞ†š˜Ez„VL®öØBkŖÝĐĖ¹ŧ̄±ÀbÎɜnb²ĦhņBĖ›žįĦåXćì@L¯´ywƕCéõė ƿ¸‘lµ¾Z|†ZWyFYŸ¨Mf~C¿`€à_RÇzwƌfQnny´INoƬˆèôº|sT„JUš›‚L„îVj„ǎ¾Ē؍‚Dz²XPn±ŴPè¸ŔLƔÜƺ_T‘üÃĤBBċȉöA´fa„˜M¨{«M`‡¶d¡ô‰Ö°šmȰBÔjjŒ´PM|”c^d¤u•ƒ¤Û´Œä«ƢfPk¶Môlˆ]Lb„}su^ke{lC‘…M•rDŠÇ­]NÑFsmoõľH‰yGă{{çrnÓE‰‹ƕZGª¹Fj¢ïW…uøCǷ돡ąuhÛ¡^Kx•C`C\\\\bÅxì²ĝÝ¿_N‰īCȽĿåB¥¢·IŖÕy\\\\‡¹kx‡Ã£Č×GDyÕ¤ÁçFQ¡„KtŵƋ]CgÏAùSed‡cÚź—ŠuYfƒyMmhUWpSyGwMPqŀ—›Á¼zK›¶†G•­Y§Ëƒ@–´śÇµƕBmœ@Io‚g——Z¯u‹TMx}C‘‰VK‚ï{éƵP—™_K«™pÛÙqċtkkù]gŽ‹Tğwo•ɁsMõ³ă‡AN£™MRkmEʕč™ÛbMjÝGu…IZ™—GPģ‡ãħE[iµBEuŸDPԛ~ª¼ętŠœ]ŒûG§€¡QMsğNPŏįzs£Ug{đJĿļā³]ç«Qr~¥CƎÑ^n¶ÆéÎR~Ż¸Y’I“] P‰umŝrƿ›‰›Iā‹[x‰edz‹L‘¯v¯s¬ÁY…~}…ťuŁŒg›ƋpÝĄ_ņī¶ÏSR´ÁP~ž¿Cyžċßdwk´Ss•X|t‰`Ä Èð€AªìÎT°¦Dd–€a^lĎDĶÚY°Ž`ĪŴǒˆ”àŠv\\\\ebŒZH„ŖR¬ŢƱùęO•ÑM­³FۃWp[ƒ\"]],\"encodeOffsets\":[[[123806,39303]],[[123821,39266]],[[123742,39256]],[[123702,39203]],[[123649,39066]],[[123847,38933]],[[123580,38839]],[[123894,37288]],[[123043,36624]],[[123344,38676]],[[123522,38857]],[[123628,38858]],[[118260,36742]]]}},{\"type\":\"Feature\",\"id\":\"410000\",\"properties\":{\"id\":\"410000\",\"cp\":[113.665412,33.757975],\"name\":\"河南\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@•ýL™ùµP³swIÓxcŢĞð†´E®žÚPt†ĴXØx¶˜@«ŕŕQGƒ‹Yfa[şu“ßǩ™đš_X³ijÕčC]kbc•¥CS¯ëÍB©÷‹–³­Siˆ_}m˜YTtž³xlàcȂzÀD}ÂOQ³ÐTĨ¯†ƗòËŖ[hœł‹Ŧv~††}ÂZž«¤lPǕ£ªÝŴÅR§ØnhcŒtâk‡nύ­ľŹUÓÝdKuķ‡I§oTũÙďkęĆH¸ÓŒ\\\\ăŒ¿PcnS{wBIvɘĽ[GqµuŸŇôYgûƒZcaŽ©@½Õǽys¯}lgg@­C\\\\£as€IdÍuCQñ[L±ęk·‹ţb¨©kK—’»›KC²‘òGKmĨS`ƒ˜UQ™nk}AGē”sqaJ¥ĐGR‰ĎpCuÌy ã iMc”plk|tRk†ðœev~^‘´†¦ÜŽSí¿_iyjI|ȑ|¿_»d}qŸ^{“Ƈdă}Ÿtqµ`Ƴĕg}V¡om½fa™Ço³TTj¥„tĠ—Ry”K{ùÓjuµ{t}uËR‘iŸvGŠçJFjµŠÍyqΘàQÂFewixGw½Yŷpµú³XU›½ġy™łå‰kÚwZXˆ·l„¢Á¢K”zO„Λ΀jc¼htoDHr…|­J“½}JZ_¯iPq{tę½ĕ¦Zpĵø«kQ…Ťƒ]MÛfaQpě±ǽ¾]u­Fu‹÷nƒ™čįADp}AjmcEǒaª³o³ÆÍSƇĈÙDIzˑ赟^ˆKLœ—i—Þñ€[œƒaA²zz‰Ì÷Dœ|[šíijgf‚ÕÞd®|`ƒĆ~„oĠƑô³Ŋ‘D×°¯CsŠøÀ«ì‰UMhTº¨¸ǡîS–Ô„DruÂÇZ•ÖEŽ’vPZ„žW”~؋ÐtĄE¢¦Ðy¸bŠô´oŬ¬Ž²Ês~€€]®tªašpŎJ¨Öº„_ŠŔ–`’Ŗ^Ѝ\\\\Ĝu–”~m²Ƹ›¸fW‰ĦrƔ}Î^gjdfÔ¡J}\\\\n C˜¦þWxªJRÔŠu¬ĨĨmF†dM{\\\\d\\\\ŠYÊ¢ú@@¦ª²SŠÜsC–}fNècbpRmlØ^g„d¢aÒ¢CZˆZxvÆ¶N¿’¢T@€uCœ¬^ĊðÄn|žlGl’™Rjsp¢ED}€Fio~ÔNŽ‹„~zkĘHVsDzßjƒŬŒŠŢ`Pûàl¢˜\\\\ÀœEhŽİgÞē X¼Pk–„|m\"],\"encodeOffsets\":[[118256,37017]]}},{\"type\":\"Feature\",\"id\":\"420000\",\"properties\":{\"id\":\"420000\",\"cp\":[113.298572,30.684355],\"name\":\"湖北\",\"childNum\":3},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@AB‚\"],[\"@@lskt\"],[\"@@¾«}{ra®pîÃ\\\\™›{øCŠËyyB±„b\\\\›ò˜Ý˜jK›‡L ]ĎĽÌ’JyÚCƈćÎT´Å´pb©È‘dFin~BCo°BĎĚømvŒ®E^vǾ½Ĝ²Ro‚bÜeNŽ„^ĺ£R†¬lĶ÷YoĖ¥Ě¾|sOr°jY`~I”¾®I†{GqpCgyl{‡£œÍƒÍyPL“¡ƒ¡¸kW‡xYlÙ抚ŁĢzœ¾žV´W¶ùŸo¾ZHxjwfx„GNÁ•³Xéæl¶‰EièIH‰ u’jÌQ~v|sv¶Ôi|ú¢Fh˜Qsğ¦ƒSiŠBg™ÐE^ÁÐ{–čnOÂȞUÎóĔ†ÊēIJ}Z³½Mŧïeyp·uk³DsѨŸL“¶_œÅuèw»—€¡WqÜ]\\\\‘Ò§tƗcÕ¸ÕFÏǝĉăxŻČƟO‡ƒKÉġÿ×wg”÷IÅzCg†]m«ªGeçÃTC’«[‰t§{loWeC@ps_Bp‘­r‘„f_``Z|ei¡—oċMqow€¹DƝӛDYpûs•–‹Ykıǃ}s¥ç³[§ŸcYŠ§HK„«Qy‰]¢“wwö€¸ïx¼ņ¾Xv®ÇÀµRĠЋžHMž±cÏd„ƒǍũȅȷ±DSyúĝ£ŤĀàtÖÿï[îb\\\\}pĭÉI±Ñy…¿³x¯N‰o‰|¹H™ÏÛm‹júË~Tš•u˜ęjCöAwě¬R’đl¯ Ñb­‰ŇT†Ŀ_[Œ‘IčĄʿnM¦ğ\\\\É[T·™k¹œ©oĕ@A¾w•ya¥Y\\\\¥Âaz¯ãÁ¡k¥ne£Ûw†E©Êō¶˓uoj_Uƒ¡cF¹­[Wv“P©w—huÕyBF“ƒ`R‹qJUw\\\\i¡{jŸŸEPïÿ½fć…QÑÀQ{ž‚°‡fLԁ~wXg—ītêݾ–ĺ‘Hdˆ³fJd]‹HJ²…E€ƒoU¥†HhwQsƐ»Xmg±çve›]Dm͂PˆoCc¾‹_h”–høYrŊU¶eD°Č_N~øĹĚ·`z’]Äþp¼…äÌQŒv\\\\rCŒé¾TnkžŐڀÜa‡“¼ÝƆĢ¶Ûo…d…ĔňТJq’Pb ¾|JŒ¾fXŠƐîĨ_Z¯À}úƲ‹N_ĒĊ^„‘ĈaŐyp»CÇĕKŠšñL³ŠġMŒ²wrIÒŭxjb[œžn«øœ˜—æˆàƒ ^²­h¯Ú€ŐªÞ¸€Y²ĒVø}Ā^İ™´‚LŠÚm„¥ÀJÞ{JVŒųÞŃx×sxxƈē ģMř–ÚðòIf–Ċ“Œ\\\\Ʈ±ŒdʧĘD†vČ_Àæ~DŒċ´A®µ†¨ØLV¦êHÒ¤\"]],\"encodeOffsets\":[[[113712,34000]],[[115612,30507]],[[113649,34054]]]}},{\"type\":\"Feature\",\"id\":\"430000\",\"properties\":{\"id\":\"430000\",\"cp\":[111.782279,28.09409],\"name\":\"湖南\",\"childNum\":3},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@—n„FTs\"],[\"@@ßÅÆችÔXr—†CO™“…ËR‘ïÿĩ­TooQyšÓ[‹ŅBE¬–ÎÓXa„į§Ã¸G °ITxp‰úxÚij¥Ïš–Ģ¾ŠedžÄ©ĸG…œàGh‚€M¤–Â_U}Ċ}¢pczfŠþg¤€”ÇòAV‘‹M\"],[\"@@©K—ƒA·³CQ±Á«³BUŠƑ¹AŠtćOw™D]ŒJiØSm¯b£‘ylƒ›X…HËѱH•«–‘C^õľA–Å§¤É¥„ïyuǙuA¢^{ÌC´­¦ŷJ£^[†“ª¿‡ĕ~•Ƈ…•N… skóā‡¹¿€ï]ă~÷O§­@—Vm¡‹Qđ¦¢Ĥ{ºjԏŽŒª¥nf´•~ÕoŸž×Ûą‹MąıuZœmZcÒ IJĪ²SÊDŽŶ¨ƚƒ’CÖŎªQؼrŭŽ­«}NÏürʬŒmjr€@ĘrTW ­SsdHzƓ^ÇÂyUi¯DÅYlŹu{hTœ}mĉ–¹¥ě‰Dÿë©ıÓ[Oº£ž“¥ót€ł¹MՄžƪƒ`Pš…Di–ÛUŠ¾Å‌ìˆU’ñB“È£ýhe‰dy¡oċ€`pfmjP~‚kZa…ZsÐd°wj§ƒ@€Ĵ®w~^‚kÀÅKvNmX\\\\¨a“”сqvíó¿F„¤¡@ũÑVw}S@j}¾«pĂr–ªg àÀ²NJ¶¶Dô…K‚|^ª†Ž°LX¾ŴäPĪ±œ£EXd›”^¶›IJÞܓ~‘u¸ǔ˜Ž›MRhsR…e†`ÄofIÔ\\\\Ø  i”ćymnú¨cj ¢»–GČìƊÿШXeĈĀ¾Oð Fi ¢|[jVxrIQŒ„_E”zAN¦zLU`œcªx”OTu RLÄ¢dV„i`p˔vŎµªÉžF~ƒØ€d¢ºgİàw¸Áb[¦Zb¦–z½xBĖ@ªpº›šlS¸Ö\\\\Ĕ[N¥ˀmĎă’J\\\\‹ŀ`€…ňSڊĖÁĐiO“Ĝ«BxDõĚiv—ž–S™Ì}iùŒžÜnšÐºGŠ{Šp°M´w†ÀÒzJ²ò¨ oTçüöoÛÿñŽőФ‚ùTz²CȆȸǎŪƒƑÐc°dPÎŸğ˶[Ƚu¯½WM¡­Éž“’B·rížnZŸÒ `‡¨GA¾\\\\pē˜XhÆRC­üWGġu…T靧Ŏѝ©ò³I±³}_‘‹EÃħg®ęisÁPDmÅ{‰b[Rşs·€kPŸŽƥƒóRo”O‹ŸVŸ~]{g\\\\“êYƪ¦kÝbiċƵŠGZ»Ěõ…ó·³vŝž£ø@pyö_‹ëŽIkѵ‡bcѧy…×dY؎ªiþž¨ƒ[]f]Ņ©C}ÁN‡»hĻħƏ’ĩ\"]],\"encodeOffsets\":[[[115640,30489]],[[112543,27312]],[[116690,26230]]]}},{\"type\":\"Feature\",\"id\":\"440000\",\"properties\":{\"id\":\"440000\",\"cp\":[113.280637,23.125178],\"name\":\"广东\",\"childNum\":24},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@QdˆAua\"],[\"@@ƒlxDLo\"],[\"@@sbhNLo\"],[\"@@Ă āŸ\"],[\"@@WltO[[\"],[\"@@Krœ]S\"],[\"@@e„„I]y\"],[\"@@I|„Mym\"],[\"@@ƒÛ³LSŒž¼Y\"],[\"@@nvºB–ëui©`¾\"],[\"@@zdšÛ›Jw®\"],[\"@@†°…¯\"],[\"@@a yAª¸ËJIx،@€ĀHAmßV¡o•fu•o\"],[\"@@šs‰ŗÃÔėAƁ›ZšÄ ~°ČP‚‹äh\"],[\"@@‹¶Ý’Ì‚vmĞh­ı‡Q\"],[\"@@HœŠdSjĒ¢D}war…“u«ZqadYM\"],[\"@@elŒ\\\\LqqU\"],[\"@@~rMo\\\\\"],[\"@@f„^ƒC\"],[\"@@øPªoj÷ÍÝħXČx”°Q¨ıXNv\"],[\"@@gÇƳˆŽˆ”oˆŠˆ[~tly\"],[\"@@E–ÆC¿‘\"],[\"@@OŽP\"],[\"@@w‹†đóg‰™ĝ—[³‹¡VÙæÅöM̳¹pÁaËýý©D©Ü“JŹƕģGą¤{Ùū…ǘO²«BƱéA—Ò‰ĥ‡¡«BhlmtÃPµyU¯uc“d·w_bŝcīímGOŽ|KP’ȏ‡ŹãŝIŕŭŕ@Óoo¿ē‹±ß}Ž…ŭ‚ŸIJWÈCőâUâǙI›ğʼn©I›ijEׅÁ”³Aó›wXJþ±ÌŒÜӔĨ£L]ĈÙƺZǾĆĖMĸĤfŒÎĵl•ŨnȈ‘ĐtF”Š–FĤ–‚êk¶œ^k°f¶gŠŽœ}®Fa˜f`vXŲxl˜„¦–ÔÁ²¬ÐŸ¦pqÊ̲ˆi€XŸØRDÎ}†Ä@ZĠ’s„x®AR~®ETtĄZ†–ƈfŠŠHâÒÐA†µ\\\\S¸„^wĖkRzŠalŽŜ|E¨ÈNĀňZTŒ’pBh£\\\\ŒĎƀuXĖtKL–¶G|Ž»ĺEļĞ~ÜĢÛĊrˆO˜Ùîvd]nˆ¬VœÊĜ°R֟pM††–‚ƂªFbwžEÀˆ˜©Œž\\\\…¤]ŸI®¥D³|ˎ]CöAŤ¦…æ’´¥¸Lv¼€•¢ĽBaô–F~—š®²GÌҐEY„„œzk¤’°ahlV՞I^‹šCxĈPŽsB‰ƒºV‰¸@¾ªR²ĨN]´_eavSi‡vc•}p}Đ¼ƌkJœÚe thœ†_¸ ºx±ò_xN›Ë‹²‘@ƒă¡ßH©Ùñ}wkNÕ¹ÇO½¿£ĕ]ly_WìIžÇª`ŠuTÅxYĒÖ¼k֞’µ‚MžjJÚwn\\\\h‘œĒv]îh|’È›Ƅøègž¸Ķß ĉĈWb¹ƀdéʌNTtP[ŠöSvrCZžžaGuœbo´ŖÒÇА~¡zCI…özx¢„Pn‹•‰Èñ @ŒĥÒ¦†]ƞŠV}³ăĔñiiÄÓVépKG½Ä‘ÓávYo–C·sit‹iaÀy„ŧΡÈYDÑům}‰ý|m[węõĉZÅxUO}÷N¹³ĉo_qtă“qwµŁYلǝŕ¹tïÛUïmRCº…ˆĭ|µ›ÕÊK™½R‘ē ó]‘–GªęAx–»HO£|ām‡¡diď×YïYWªʼnOeÚtĐ«zđ¹T…ā‡úE™á²\\\\‹ķÍ}jYàÙÆſ¿Çdğ·ùTßÇţʄ¡XgWÀLJğ·¿ÃˆOj YÇ÷Qě‹i\"]],\"encodeOffsets\":[[[117381,22988]],[[116552,22934]],[[116790,22617]],[[116973,22545]],[[116444,22536]],[[116931,22515]],[[116496,22490]],[[116453,22449]],[[113301,21439]],[[118726,21604]],[[118709,21486]],[[113210,20816]],[[115482,22082]],[[113171,21585]],[[113199,21590]],[[115232,22102]],[[115739,22373]],[[115134,22184]],[[113056,21175]],[[119573,21271]],[[119957,24020]],[[115859,22356]],[[116561,22649]],[[116285,22746]]]}},{\"type\":\"Feature\",\"id\":\"450000\",\"properties\":{\"id\":\"450000\",\"cp\":[108.320004,22.82402],\"name\":\"广西\",\"childNum\":2},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@H– TQ§•A\"],[\"@@ĨʪƒLƒƊDÎĹĐCǦė¸zÚGn£¾›rªŀÜt¬@֛ڈSx~øOŒ˜ŶÐÂæȠ\\\\„ÈÜObĖw^oބLf¬°bI lTØB̈F£Ć¹gñĤaY“t¿¤VSñœK¸¤nM†¼‚JE±„½¸šŠño‹ÜCƆæĪ^ŠĚQÖ¦^‡ˆˆf´Q†üÜʝz¯šlzUĺš@쇀p¶n]sxtx¶@„~ÒĂJb©gk‚{°‚~c°`ԙ¬rV\\\\“la¼¤ôá`¯¹LC†ÆbŒxEræO‚v[H­˜„[~|aB£ÖsºdAĐzNÂðsŽÞƔ…Ĥªbƒ–ab`ho¡³F«èVloŽ¤™ÔRzpp®SŽĪº¨ÖƒºN…ij„d`’a”¦¤F³ºDÎńĀìŠCžĜº¦Ċ•~nS›|gźvZkCÆj°zVÈÁƔ]LÊFZg…čP­kini«‹qǀcz͔Y®¬Ů»qR×ō©DՄ‘§ƙǃŵTÉĩ±ŸıdÑnYY›IJvNĆƌØÜ Öp–}e³¦m‹©iÓ|¹Ÿħņ›|ª¦QF¢Â¬ʖovg¿em‡^ucà÷gՎuŒíÙćĝ}FĻ¼Ĺ{µHK•sLSđƃr‹č¤[Ag‘oS‹ŇYMÿ§Ç{Fśbky‰lQxĕƒ]T·¶[B…ÑÏGáşşƇe€…•ăYSs­FQ}­Bƒw‘tYğÃ@~…C̀Q ×W‡j˱rÉ¥oÏ ±«ÓÂ¥•ƒ€k—ŽwWűŒmcih³K›~‰µh¯e]lµ›él•Eģ‰•E“ďs‡’mǖŧē`ãògK_ÛsUʝ“ćğ¶hŒöŒO¤Ǜn³Žc‘`¡y‹¦C‘ez€YŠwa™–‘[ďĵűMę§]X˜Î_‚훘Û]é’ÛUćİÕBƣ±…dƒy¹T^džûÅÑŦ·‡PĻþÙ`K€¦˜…¢ÍeœĥR¿Œ³£[~Œäu¼dl‰t‚†W¸oRM¢ď\\\\zœ}Æzdvň–{ÎXF¶°Â_„ÒÂÏL©Ö•TmuŸ¼ãl‰›īkiqéfA„·Êµ\\\\őDc¥ÝF“y›Ôć˜c€űH_hL܋êĺШc}rn`½„Ì@¸¶ªVLŒŠhŒ‹\\\\•Ţĺk~ŽĠið°|gŒtTĭĸ^x‘vK˜VGréAé‘bUu›MJ‰VÃO¡…qĂXËS‰ģãlýàŸ_ju‡YÛÒB†œG^˜é֊¶§ŽƒEG”ÅzěƒƯ¤Ek‡N[kdåucé¬dnYpAyČ{`]þ¯T’bÜÈk‚¡Ġ•vŒàh„ÂƄ¢J\"]],\"encodeOffsets\":[[[111707,21520]],[[107619,25527]]]}},{\"type\":\"Feature\",\"id\":\"460000\",\"properties\":{\"id\":\"460000\",\"cp\":[109.83119,19.031971],\"name\":\"海南\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@š¦Ŝil¢”XƦ‘ƞò–ïè§ŞCêɕrŧůÇąĻõ™·ĉ³œ̅kÇm@ċȧƒŧĥ‰Ľʉ­ƅſ“ȓÒ˦ŝE}ºƑ[ÍĜȋ gÎfǐÏĤ¨êƺ\\\\Ɔ¸ĠĎvʄȀœÐ¾jNðĀÒRŒšZdž™zÐŘΰH¨Ƣb²_Ġ \"],\"encodeOffsets\":[[112750,20508]]}},{\"type\":\"Feature\",\"id\":\"510000\",\"properties\":{\"id\":\"510000\",\"cp\":[104.065735,30.659462],\"name\":\"四川\",\"childNum\":2},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@LqKr\"],[\"@@Š[ĻéV£ž_ţġñpG •réÏ·~ąSfy×͂·ºſƽiÍıƣıĻmHH}siaX@iÇ°ÁÃ×t«ƒ­Tƒ¤J–JJŒyJ•ÈŠ`Ohߦ¡uËhIyCjmÿw…ZG……Ti‹SˆsO‰žB²ŸfNmsPaˆ{M{ŠõE‘^Hj}gYpaeuž¯‘oáwHjÁ½M¡pM“–uå‡mni{fk”\\\\oƒÎqCw†EZ¼K›ĝŠƒAy{m÷L‡wO×SimRI¯rK™õBS«sFe‡]fµ¢óY_ÆPRcue°Cbo׌bd£ŌIHgtrnyPt¦foaXďx›lBowz‹_{ÊéWiêE„GhܸºuFĈIxf®Ž•Y½ĀǙ]¤EyŸF²ċ’w¸¿@g¢§RGv»–áŸW`ÃĵJwi]t¥wO­½a[׈]`Ãi­üL€¦LabbTÀå’c}Íh™Æhˆ‹®BH€î|Ék­¤S†y£„ia©taį·Ɖ`ō¥Uh“O…ƒĝLk}©Fos‰´›Jm„µlŁu—…ø–nÑJWΪ–YÀïAetTžŅ‚ӍG™Ë«bo‰{ıwodƟ½ƒžOġܑµxàNÖ¾P²§HKv¾–]|•B‡ÆåoZ`¡Ø`ÀmºĠ~ÌЧnDž¿¤]wğ@sƒ‰rğu‰~‘Io”[é±¹ ¿žſđӉ@q‹gˆ¹zƱřaí°KtǤV»Ã[ĩǭƑ^ÇÓ@ỗs›Zϕ‹œÅĭ€Ƌ•ěpwDóÖሯneQˌq·•GCœýS]xŸ·ý‹q³•O՜Œ¶Qzßti{ř‰áÍÇWŝŭñzÇW‹pç¿JŒ™‚Xœĩè½cŒF–ÂLiVjx}\\\\N†ŇĖ¥Ge–“JA¼ÄHfÈu~¸Æ«dE³ÉMA|b˜Ò…˜ćhG¬CM‚õŠ„ƤąAvƒüV€éŀ‰_V̳ĐwQj´·ZeÈÁ¨X´Æ¡Qu·»Ÿ“˜ÕZ³ġqDo‰y`L¬gdp°şŠp¦ėìÅĮZŽ°Iä”h‚‘ˆzŠĵœf²å ›ĚрKp‹IN|‹„Ñz]ń……·FU×é»R³™MƒÉ»GM«€ki€™ér™}Ã`¹ăÞmȝnÁîRǀ³ĜoİzŔwǶVÚ£À]ɜ»ĆlƂ²Ġ…þTº·àUȞÏʦ¶†I’«dĽĢdĬ¿–»Ĕ׊h\\\\c¬†ä²GêëĤł¥ÀǿżÃÆMº}BÕĢyFVvw–ˆxBèĻĒ©Ĉ“tCĢɽŠȣ¦āæ·HĽî“ôNԓ~^¤Ɗœu„œ^s¼{TA¼ø°¢İªDè¾Ň¶ÝJ‘®Z´ğ~Sn|ªWÚ©òzPOȸ‚bð¢|‹øĞŠŒœŒQìÛÐ@Ğ™ǎRS¤Á§d…i“´ezÝúØã]Hq„kIŸþËQǦÃsǤ[E¬ÉŪÍxXƒ·ÖƁİlƞ¹ª¹|XÊwn‘ÆƄmÀêErĒtD®ċæcQƒ”E®³^ĭ¥©l}äQto˜ŖÜqƎkµ–„ªÔĻĴ¡@Ċ°B²Èw^^RsºTĀ£ŚæœQP‘JvÄz„^Đ¹Æ¯fLà´GC²‘dt˜­ĀRt¼¤ĦOðğfÔðDŨŁĞƘïžPȆ®âbMüÀXZ ¸£@Ś›»»QÉ­™]d“sÖ×_͖_ÌêŮPrĔĐÕGĂeZÜîĘqBhtO ¤tE[h|Y‹Ô‚ZśÎs´xº±UŒ’ñˆt|O’ĩĠºNbgþŠJy^dÂY Į„]Řz¦gC‚³€R`ĀŠz’¢AjŒ¸CL„¤RÆ»@­Ŏk\\\\Ç´£YW}z@Z}‰Ã¶“oû¶]´^N‡Ò}èN‚ª–P˜Íy¹`S°´†ATe€VamdUĐwʄvĮÕ\\\\ƒu‹Æŗ¨Yp¹àZÂm™Wh{á„}WØǍ•Éüw™ga§áCNęÎ[ĀÕĪgÖɪX˜øx¬½Ů¦¦[€—„NΆL€ÜUÖ´òrÙŠxR^–†J˜k„ijnDX{Uƒ~ET{ļº¦PZc”jF²Ė@Žp˜g€ˆ¨“B{ƒu¨ŦyhoÚD®¯¢˜ WòàFΤ¨GDäz¦kŮPœġq˚¥À]€Ÿ˜eŽâÚ´ªKxī„Pˆ—Ö|æ[xäJÞĥ‚s’NÖ½ž€I†¬nĨY´®Ð—ƐŠ€mD™ŝuäđđEb…e’e_™v¡}ìęNJē}q”É埁T¯µRs¡M@}ůa†a­¯wvƉåZwž\\\\Z{åû^›\"]],\"encodeOffsets\":[[[108815,30935]],[[110617,31811]]]}},{\"type\":\"Feature\",\"id\":\"520000\",\"properties\":{\"id\":\"520000\",\"cp\":[106.713478,26.578343],\"name\":\"贵州\",\"childNum\":3},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@†G\\\\†lY£‘in\"],[\"@@q‚|ˆ‚mc¯tχVSÎ\"],[\"@@hÑ£Is‡NgßH†›HªķÃh_¹ƒ¡ĝħń¦uيùŽgS¯JHŸ|sÝÅtÁïyMDč»eÕtA¤{b\\\\}—ƒG®u\\\\åPFq‹wÅaD…žK°ºâ_£ùbµ”mÁ‹ÛœĹM[q|hlaªāI}тƒµ@swtwm^oµˆD鼊yV™ky°ÉžûÛR…³‚‡eˆ‡¥]RՋěħ[ƅåÛDpŒ”J„iV™™‰ÂF²I…»mN·£›LbÒYb—WsÀbŽ™pki™TZĄă¶HŒq`……ĥ_JŸ¯ae«ƒKpÝx]aĕÛPƒÇȟ[ÁåŵÏő—÷Pw}‡TœÙ@Õs«ĿÛq©½œm¤ÙH·yǥĘĉBµĨÕnđ]K„©„œá‹ŸG纍§Õßg‡ǗĦTèƤƺ{¶ÉHÎd¾ŚÊ·OÐjXWrãLyzÉAL¾ę¢bĶėy_qMĔąro¼hĊžw¶øV¤w”²Ĉ]ʚKx|`ź¦ÂÈdr„cȁbe¸›`I¼čTF´¼Óýȃr¹ÍJ©k_șl³´_pН`oÒhŽ¶pa‚^ÓĔ}D»^Xyœ`d˜[Kv…JPhèhCrĂĚÂ^Êƌ wˆZL­Ġ£šÁbrzOIl’MM”ĪŐžËr×ÎeŦŽtw|Œ¢mKjSǘňĂStÎŦEtqFT†¾†E쬬ôxÌO¢Ÿ KŠ³ŀºäY†„”PVgŎ¦Ŋm޼VZwVlŒ„z¤…ž£Tl®ctĽÚó{G­A‡ŒÇgeš~Αd¿æaSba¥KKûj®_ć^\\\\ؾbP®¦x^sxjĶI_Ä X‚⼕Hu¨Qh¡À@Ëô}Ž±žGNìĎlT¸ˆ…`V~R°tbÕĊ`¸úÛtπFDu€[ƒMfqGH·¥yA‰ztMFe|R‚_Gk†ChZeÚ°to˜v`x‹b„ŒDnÐ{E}šZ˜è€x—†NEފREn˜[Pv@{~rĆAB§‚EO¿|UZ~ì„Uf¨J²ĂÝƀ‚sª–B`„s¶œfvö¦ŠÕ~dÔq¨¸º»uù[[§´sb¤¢zþFœ¢Æ…Àhˆ™ÂˆW\\\\ıŽËI݊o±ĭŠ£þˆÊs}¡R]ŒěƒD‚g´VG¢‚j±®è†ºÃmpU[Á›‘Œëº°r›ÜbNu¸}Žº¼‡`ni”ºÔXĄ¤¼Ôdaµ€Á_À…†ftQQgœR—‘·Ǔ’v”}Ýלĵ]µœ“Wc¤F²›OĩųãW½¯K‚©…]€{†LóµCIµ±Mß¿hŸ•©āq¬o‚½ž~@i~TUxŪÒ¢@ƒ£ÀEîôruń‚”“‚b[§nWuMÆLl¿]x}ij­€½\"]],\"encodeOffsets\":[[[112158,27383]],[[112105,27474]],[[112095,27476]]]}},{\"type\":\"Feature\",\"id\":\"530000\",\"properties\":{\"id\":\"530000\",\"cp\":[101.512251,24.740609],\"name\":\"云南\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@[„ùx½}ÑRH‘YīĺûsÍn‘iEoã½Ya²ė{c¬ĝg•ĂsA•ØÅwď‚õzFjw}—«Dx¿}UũlŸê™@•HÅ­F‰¨ÇoJ´Ónũuą¡Ã¢pÒŌ“Ø TF²‚xa²ËX€‚cʋlHîAßËŁkŻƑŷÉ©h™W­æßU‡“Ës¡¦}•teèƶStǀÇ}Fd£j‹ĈZĆÆ‹¤T‚č\\\\Dƒ}O÷š£Uˆ§~ŃG™‚åŃDĝ¸œTsd¶¶Bªš¤u¢ŌĎo~t¾ÍŶÒtD¦Ú„iôö‰€z›ØX²ghįh½Û±¯€ÿm·zR¦Ɵ`ªŊÃh¢rOԍ´£Ym¼èêf¯ŪĽn„†cÚbŒw\\\\zlvWžªâˆ ¦g–mĿBş£¢ƹřbĥkǫßeeZkÙIKueT»sVesb‘aĕ  ¶®dNœĄÄpªyŽ¼—„³BE˜®l‡ŽGœŭCœǶwêżĔÂe„pÍÀQƞpC„–¼ŲÈ­AÎô¶R„ä’Q^Øu¬°š_Èôc´¹ò¨P΢hlϦ´Ħ“Æ´sâDŽŲPnÊD^¯°’Upv†}®BP̪–jǬx–Söwlfòªv€qĸ|`H€­viļ€ndĜ­Ćhň•‚em·FyށqóžSį¯‘³X_ĞçêtryvL¤§z„¦c¦¥jnŞk˜ˆlD¤øz½ĜàžĂŧMÅ|áƆàÊcðÂF܎‚áŢ¥\\\\\\\\º™İøÒÐJĴ‡„îD¦zK²ǏÎEh~’CD­hMn^ÌöÄ©ČZÀžaü„fɭyœpį´ěFűk]Ôě¢qlÅĆÙa¶~Äqššê€ljN¬¼H„ÊšNQ´ê¼VظE††^ŃÒyŒƒM{ŒJLoÒœęæŸe±Ķ›y‰’‡gã“¯JYÆĭĘëo¥Š‰o¯hcK«z_pŠrC´ĢÖY”—¼ v¸¢RŽÅW³Â§fǸYi³xR´ďUˊ`êĿU„û€uĆBƒƣö‰N€DH«Ĉg†——Ñ‚aB{ÊNF´¬c·Åv}eÇÃGB»”If•¦HňĕM…~[iwjUÁKE•Ž‹¾dĪçW›šI‹èÀŒoÈXòyŞŮÈXâÎŚŠj|àsRy‹µÖ›–Pr´þŒ ¸^wþTDŔ–Hr¸‹žRÌmf‡żÕâCôox–ĜƌÆĮŒ›Ð–œY˜tâŦÔ@]ÈǮƒ\\\\Ī¼Ä£UsȯLbîƲŚºyh‡rŒŠ@ĒԝƀŸÀ²º\\\\êp“’JŠ}ĠvŠqt„Ġ@^xÀ£È†¨mËÏğ}n¹_¿¢×Y_æpˆÅ–A^{½•Lu¨GO±Õ½ßM¶w’ÁĢۂP‚›Ƣ¼pcIJxŠ|ap̬HšÐŒŊSfsðBZ¿©“XÏÒK•k†÷Eû¿‰S…rEFsÕūk”óVǥʼniTL‚¡n{‹uxţÏh™ôŝ¬ğōN“‘NJkyPaq™Âğ¤K®‡YŸxÉƋÁ]āęDqçgOg†ILu—\\\\_gz—]W¼ž~CÔē]bµogpў_oď`´³Țkl`IªºÎȄqÔþž»E³ĎSJ»œ_f·‚adÇqƒÇc¥Á_Źw{™L^ɱćx“U£µ÷xgĉp»ĆqNē`rĘzaĵĚ¡K½ÊBzyäKXqiWPÏɸ½řÍcÊG|µƕƣG˛÷Ÿk°_^ý|_zċBZocmø¯hhcæ\\\\lˆMFlư£Ĝ„ÆyH“„F¨‰µêÕ]—›HA…àӄ^it `þßäkŠĤÎT~Wlÿ¨„ÔPzUC–NVv [jâôDôď[}ž‰z¿–msSh‹¯{jïğl}šĹ[–őŒ‰gK‹©U·µË@¾ƒm_~q¡f¹…ÅË^»‘f³ø}Q•„¡Ö˳gͱ^ǁ…\\\\ëÃA_—¿bW›Ï[¶ƛ鏝£F{īZgm@|kHǭƁć¦UĔťƒ×ë}ǝƒeďºȡȘÏíBə£āĘPªij¶“ʼnÿ‡y©n‰ď£G¹¡I›Š±LÉĺÑdĉ܇W¥˜‰}g˜Á†{aqÃ¥aŠıęÏZ—ï`\"],\"encodeOffsets\":[[104636,22969]]}},{\"type\":\"Feature\",\"id\":\"540000\",\"properties\":{\"id\":\"540000\",\"cp\":[89.132212,30.860361],\"name\":\"西藏\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@hžľxŽŖ‰xƒÒVŽ†ºÅâAĪÝȆµę¯Ňa±r_w~uSÕň‘qOj]ɄQ…£Z……UDûoY’»©M[‹L¼qãË{V͕çWViŽ]ë©Ä÷àyƛh›ÚU°ŒŒa”d„cQƒ~Mx¥™cc¡ÙaSyF—ցk­ŒuRýq¿Ôµ•QĽ³aG{¿FµëªéĜÿª@¬·–K‰·àariĕĀ«V»Ŷ™Ĵū˜gèLǴŇƶaf‹tŒèBŚ£^Šâ†ǐÝ®–šM¦ÁǞÿ¬LhŸŽJ¾óƾƺcxw‹f]Y…´ƒ¦|œQLn°aœdĊ…œ\\\\¨o’œǀÍŎœ´ĩĀd`tÊQŞŕ|‚¨C^©œĈ¦„¦ÎJĊ{ŽëĎjª²rЉšl`¼Ą[t|¦St辉PŒÜK¸€d˜Ƅı]s¤—î_v¹ÎVòŦj˜£Əsc—¬_Ğ´|Ł˜¦AvŽ¦w`ăaÝaa­¢e¤ı²©ªSªšÈMĄwžÉØŔì@T‘¤—Ę™\\\\õª@”þo´­xA s”ÂtŎKzó´ÇĊµ¢rž^nĊ­Æ¬×üGž¢‚³ {âĊ]š™G‚~bÀgVjzlhǶf€žOšfdŠ‰ªB]pj„•TO–tĊ‚n¤}®¦ƒČ¥d¢¼»ddš”Y¼Žt—¢eȤJ¤}Ǿ¡°§¤AГlc@ĝ”sªćļđAç‡wx•UuzEÖġ~AN¹ÄÅȀŻ¦¿ģŁéì±H…ãd«g[؉¼ēÀ•cīľġ¬cJ‘µ…ÐʥVȝ¸ßS¹†ý±ğkƁ¼ą^ɛ¤Ûÿ‰b[}¬ōõÃ]ËNm®g@•Bg}ÍF±ǐyL¥íCˆƒIij€Ï÷њį[¹¦[⚍EÛïÁÉdƅß{âNÆāŨߝ¾ě÷yC£‡k­´ÓH@¹†TZ¥¢įƒ·ÌAЧ®—Zc…v½ŸZ­¹|ŕWZqgW“|ieZÅYVӁqdq•bc²R@†c‡¥Rã»Ge†ŸeƃīQ•}J[ғK…¬Ə|o’ėjġĠÑN¡ð¯EBčnwôɍėªƒ²•CλŹġǝʅįĭạ̃ūȹ]ΓͧgšsgȽóϧµǛ†ęgſ¶ҍć`ĘąŌJޚä¤rÅň¥ÖÁUětęuůÞiĊÄÀ\\\\Æs¦ÓRb|Â^řÌkÄŷ¶½÷‡f±iMݑ›‰@ĥ°G¬ÃM¥n£Øą‚ğ¯ß”§aëbéüÑOčœk£{\\\\‘eµª×M‘šÉfm«Ƒ{Å׃Gŏǩãy³©WÑăû‚··‘Q—òı}¯ã‰I•éÕÂZ¨īès¶ZÈsŽæĔTŘvŽgÌsN@îá¾ó@‰˜ÙwU±ÉT廣TđŸWxq¹Zo‘b‹s[׌¯cĩv‡Œėŧ³BM|¹k‰ªħ—¥TzNYnݍßpęrñĠĉRS~½ŠěVVŠµ‚õ‡«ŒM££µB•ĉ¥áºae~³AuĐh`Ü³ç@BۘïĿa©|z²Ý¼D”£àč²‹ŸƒIƒû›I ā€óK¥}rÝ_Á´éMaň¨€~ªSĈ½Ž½KÙóĿeƃÆBŽ·¬ën×W|Uº}LJrƳ˜lŒµ`bÔ`QˆˆÐÓ@s¬ñIŒÍ@ûws¡åQÑßÁ`ŋĴ{Ī“T•ÚÅTSij‚‹Yo|Ç[ǾµMW¢ĭiÕØ¿@˜šMh…pÕ]j†éò¿OƇĆƇp€êĉâlØw–ěsˆǩ‚ĵ¸c…bU¹ř¨WavquSMzeo_^gsÏ·¥Ó@~¯¿RiīB™Š\\\\”qTGªÇĜçPoŠÿfñòą¦óQīÈáP•œābß{ƒZŗĸIæńhnszÁCËìñšÏ·ąĚÝUm®ó­L·ăU›Èíoù´Êj°ŁŤ_uµ^‘°Œìǖ@tĶĒ¡Æ‡M³Ģ«˜İĨÅ®ğ†RŽāð“ggheÆ¢z‚Ê©Ô\\\\°ÝĎz~ź¤Pn–MĪÖB£Ÿk™n鄧żćŠ˜ĆK„Ē°¼L¶è‰âz¨u¦¥LDĘz¬ýÎmĘd¾ß”Fz“hg²™Fy¦ĝ¤ċņbΛ@y‚Ąæm°NĮZRÖíŽJ²öLĸÒ¨Y®ƌÐV‰à˜tt_ڀÂyĠzž]Ţh€zĎ{†ĢX”ˆc|šÐqŽšfO¢¤ög‚ÌHNŽ„PKŖœŽ˜Uú´xx[xˆvĐCûĀŠìÖT¬¸^}Ìsòd´_Ž‡KgžLĴ…ÀBon|H@–Êx˜—¦BpŰˆŌ¿fµƌA¾zLjRxŠ¶F”œkĄźRzŀˆ~¶[”´Hnª–VƞuĒ­È¨ƎcƽÌm¸ÁÈM¦x͊ëÀxdžB’šú^´W†£–d„kɾĬpœw‚˂ØɦļĬIŚœÊ•n›Ŕa¸™~J°î”lɌxĤÊÈðhÌ®‚g˜T´øŽàCˆŽÀ^ªerrƘdž¢İP|Ė ŸWœªĦ^¶´ÂL„aT±üWƜ˜ǀRšŶUńšĖ[QhlLüA†‹Ü\\\\†qR›Ą©\"],\"encodeOffsets\":[[90849,37210]]}},{\"type\":\"Feature\",\"id\":\"610000\",\"properties\":{\"id\":\"610000\",\"cp\":[108.948024,34.263161],\"name\":\"陕西\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@˜p¢—ȮµšûG™Ħ}Ħšðǚ¶òƄ€jɂz°{ºØkÈęâ¦jª‚Bg‚\\\\œċ°s¬Ž’]jžú ‚E”Ȍdž¬s„t‡”RˆÆdĠݎwܔ¸ôW¾ƮłÒ_{’Ìšû¼„jº¹¢GǪÒ¯ĘƒZ`ºŊƒecņąš~BÂgzpâēòYǠȰÌTΨÂWœ|fcŸă§uF—Œ@NŸ¢XLƒŠRMº[ğȣſï|¥J™kc`sʼnǷ’Y¹‹W@µ÷K…ãï³ÛIcñ·VȋڍÒķø©—þ¥ƒy‚ÓŸğęmWµÎumZyOŅƟĥÓ~sÑL¤µaŅY¦ocyZ{‰y c]{ŒTa©ƒ`U_Ěē£ωÊƍKù’K¶ȱÝƷ§{û»ÅÁȹÍéuij|¹cÑd‘ŠìUYƒŽO‘uF–ÕÈYvÁCqӃT•Ǣí§·S¹NgŠV¬ë÷Át‡°Dد’C´ʼnƒópģ}„ċcE˅FŸŸéGU¥×K…§­¶³B‹Č}C¿åċ`wġB·¤őcƭ²ő[Å^axwQO…ÿEËߌ•ĤNĔŸwƇˆÄŠńwĪ­Šo[„_KÓª³“ÙnK‰Çƒěœÿ]ď€ă_d©·©Ýŏ°Ù®g]±„Ÿ‡ß˜å›—¬÷m\\\\›iaǑkěX{¢|ZKlçhLt€Ňîŵ€œè[€É@ƉĄEœ‡tƇÏ˜³­ħZ«mJ…›×¾‘MtÝĦ£IwÄå\\\\Õ{‡˜ƒOwĬ©LÙ³ÙgBƕŀr̛ĢŭO¥lãyC§HÍ£ßEñŸX¡—­°ÙCgpťz‘ˆb`wI„vA|§”‡—hoĕ@E±“iYd¥OĻ¹S|}F@¾oAO²{tfžÜ—¢Fǂ҈W²°BĤh^Wx{@„¬‚­F¸¡„ķn£P|ŸªĴ@^ĠĈæb–Ôc¶l˜Yi…–^Mi˜cĎ°Â[ä€vï¶gv@À“Ĭ·lJ¸sn|¼u~a]’ÆÈtŌºJp’ƒþ£KKf~Š¦UbyäIšĺãn‡Ô¿^­žŵMT–hĠܤko¼Ŏìąǜh`[tŒRd²IJ_œXPrɲ‰l‘‚XžiL§àƒ–¹ŽH˜°Ȧqº®QC—bA†„ŌJ¸ĕÚ³ĺ§ `d¨YjžiZvRĺ±öVKkjGȊĐePОZmļKÀ€‚[ŠŽ`ösìh†ïÎoĬdtKÞ{¬èÒÒBŒÔpIJÇĬJŊ¦±J«ˆY§‹@·pH€µàåVKe›pW†ftsAÅqC·¬ko«pHÆuK@oŸHĆۄķhx“e‘n›S³àǍrqƶRbzy€¸ËАl›¼EºpĤ¼Œx¼½~Ğ’”à@†ÚüdK^ˆmÌSj\"],\"encodeOffsets\":[[110234,38774]]}},{\"type\":\"Feature\",\"id\":\"620000\",\"properties\":{\"id\":\"620000\",\"cp\":[103.823557,36.058039],\"name\":\"甘肃\",\"childNum\":2},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@VuUv\"],[\"@@ũ‹EĠtt~nkh`Q‰¦ÅÄÜdw˜Ab×ĠąJˆ¤DüègĺqBqœj°lI¡ĨÒ¤úSHbš‡ŠjΑBŠ°aZˆ¢KJŽ’O[|A£žDx}Nì•HUnrk„ kp€¼Y kMJn[aG‚áÚÏ[½rc†}aQxOgsPMnUs‡nc‹Z…ž–sKúvA›t„Þġ’£®ĀYKdnFwš¢JE°”Latf`¼h¬we|€Æ‡šbj}GA€·~WŽ”—`†¢MC¤tL©IJ°qdf”O‚“bÞĬ¹ttu`^ZúE`Œ[@„Æsîz®¡’C„ƳƜG²“R‘¢R’m”fŽwĸg܃‚ą G@pzJM½mŠhVy¸uÈÔO±¨{LfæU¶ßGĂq\\\\ª¬‡²I‚¥IʼnÈīoı‹ÓÑAçÑ|«LÝcspīðÍg…të_õ‰\\\\ĉñLYnĝg’ŸRǡÁiHLlõUĹ²uQjYi§Z_c¨Ÿ´ĹĖÙ·ŋI…ƒaBD˜­R¹ȥr—¯G•ºß„K¨jWk’ɱŠOq›Wij\\\\a­‹Q\\\\sg_ĆǛōëp»£lğۀgS•ŶN®À]ˆÓäm™ĹãJaz¥V}‰Le¤L„ýo‘¹IsŋÅÇ^‘Žbz…³tmEÁ´aŠ¹cčecÇN•ĊãÁ\\\\č¯—dNj•]j†—ZµkÓda•ćå]ğij@ ©O{¤ĸm¢ƒE·®ƒ«|@Xwg]Aģ±¯‡XǁÑdzªc›wQÚŝñsÕ³ÛV_ýƒ˜¥\\\\ů¥©¾÷w—Ž©WÕÊĩhÿÖÁRo¸V¬âDb¨šhûx–Ê×nj~Zâƒg|šXÁnßYoº§ZÅŘvŒ[„ĭÖʃuďxcVbnUSf…B¯³_Tzº—ΕO©çMÑ~Mˆ³]µ^püµ”ŠÄY~y@X~¤Z³€[Èōl@®Å¼£QKƒ·Di‹¡By‘ÿ‰Q_´D¥hŗyƒ^ŸĭÁZ]cIzý‰ah¹MĪğP‘s{ò‡‹‘²Vw¹t³Ŝˁ[ŽÑ}X\\\\gsFŸ£sPAgěp×ëfYHāďÖqēŭOÏë“dLü•\\\\iŒ”t^c®šRʺ¶—¢H°mˆ‘rYŸ£BŸ¹čIoľu¶uI]vģSQ{ƒUŻ”Å}QÂ|̋°ƅ¤ĩŪU ęĄžÌZҞ\\\\v˜²PĔ»ƢNHƒĂyAmƂwVmž`”]ȏb•”H`‰Ì¢²ILvĜ—H®¤Dlt_„¢JJÄämèÔDëþgºƫ™”aʎÌrêYi~ ÎݤNpÀA¾Ĕ¼b…ð÷’Žˆ‡®‚”üs”zMzÖĖQdȨý†v§Tè|ªH’þa¸|šÐ ƒwKĢx¦ivr^ÿ ¸l öæfƟĴ·PJv}n\\\\h¹¶v†·À|\\\\ƁĚN´Ĝ€çèÁz]ġ¤²¨QÒŨTIl‡ªťØ}¼˗ƦvÄùØE‹’«Fï˛Iq”ōŒTvāÜŏ‚íÛߜÛV—j³âwGăÂíNOŠˆŠPìyV³ʼnĖýZso§HіiYw[߆\\\\X¦¥c]ÔƩÜ·«j‡ÐqvÁ¦m^ċ±R™¦΋ƈťĚgÀ»IïĨʗƮŽ°Ɲ˜ĻþÍAƉſ±tÍEÕÞāNU͗¡\\\\ſčåÒʻĘm ƭÌŹöʥ’ëQ¤µ­ÇcƕªoIýˆ‰Iɐ_mkl³ă‰Ɠ¦j—¡Yz•Ňi–}Msßõ–īʋ —}ƒÁVmŸ_[n}eı­Uĥ¼‘ª•I{ΧDӜƻėoj‘qYhĹT©oūĶ£]ďxĩ‹ǑMĝ‰q`B´ƃ˺Ч—ç~™²ņj@”¥@đ´ί}ĥtPńǾV¬ufӃÉC‹tÓ̻‰…¹£G³€]ƖƾŎĪŪĘ̖¨ʈĢƂlɘ۪üºňUðǜȢƢż̌ȦǼ‚ĤŊɲĖ­Kq´ï¦—ºĒDzņɾªǀÞĈĂD†½ĄĎÌŗĞrôñnŽœN¼â¾ʄľԆ|DŽŽ֦ज़ȗlj̘̭ɺƅêgV̍ʆĠ·ÌĊv|ýĖÕWĊǎÞ´õ¼cÒÒBĢ͢UĜð͒s¨ňƃLĉÕÝ@ɛƯ÷¿Ľ­ĹeȏijëCȚDŲyê×Ŗyò¯ļcÂßY…tÁƤyAã˾J@ǝrý‹‰@¤…rz¸oP¹ɐÚyᐇHŸĀ[Jw…cVeȴϜ»ÈŽĖ}ƒŰŐèȭǢόĀƪÈŶë;Ñ̆ȤМľĮEŔ—ĹŊũ~ËUă{ŸĻƹɁύȩþĽvĽƓÉ@ē„ĽɲßǐƫʾǗĒpäWÐxnsÀ^ƆwW©¦cÅ¡Ji§vúF¶Ž¨c~c¼īŒeXǚ‹\\\\đ¾JŽwÀďksãA‹fÕ¦L}wa‚o”Z’‹D½†Ml«]eÒÅaɲáo½FõÛ]ĻÒ¡wYR£¢rvÓ®y®LF‹LzĈ„ôe]gx}•|KK}xklL]c¦£fRtív¦†PĤoH{tK\"]],\"encodeOffsets\":[[[108619,36299]],[[108589,36341]]]}},{\"type\":\"Feature\",\"id\":\"630000\",\"properties\":{\"id\":\"630000\",\"cp\":[96.778916,35.623178],\"name\":\"青海\",\"childNum\":2},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@InJm\"],[\"@@CƒÆ½OŃĦsΰ~Ē³¦@@“Ņiš±è}ؘƄ˹A³r_ĞŠǒNĪŒĐw¤^ŬĵªpĺSZg’rpiƼĘԛ¨C|͖J’©Ħ»®VIJ~f\\\\m `Un„˜~ʌŸ•ĬàöNt•~ňjy–¢Zi˜Ɣ¥ĄŠk´nl`JʇŠJþ©pdƖ®È£¶ìRʦ‘źõƮËnŸʼėæÑƀĎ[‚˜¢VÎĂMÖÝÎF²sƊƀÎBļýƞ—¯ʘƭðħ¼Jh¿ŦęΌƇš¥²Q]Č¥nuÂÏriˆ¸¬ƪÛ^Ó¦d€¥[Wà…x\\\\ZŽjҕ¨GtpþYŊĕ´€zUO뇉P‰îMĄÁxH´á˜iÜUà›îÜՁĂÛSuŎ‹r“œJð̬EŒ‘FÁú×uÃÎkr“Ē{V}İ«O_ÌËĬ©ŽÓŧSRѱ§Ģ£^ÂyèçěM³Ƃę{[¸¿u…ºµ[gt£¸OƤĿéYŸõ·kĀŸq]juw¥Dĩƍ€õÇPéĽG‘ž©ã‡¤G…uȧþRcÕĕNy“yût“ˆ­‡ø‘†ï»a½ē¿BMoį£ŸÍj}éZËqbʍš“Ƭh¹ìÿÓAçãnIáI`ƒks£CG­ě˜Uy×Cy•…’Ÿ@¶ʡÊBnāzG„ơMē¼±O÷õJËĚăVŸĪũƆ£Œ¯{ËL½Ìzż“„VR|ĠTbuvJvµhĻĖH”Aëáa…­OÇðñęNw‡…œľ·L›mI±íĠĩPÉ×®ÿs—’cB³±JKßĊ«`…ađ»·QAmO’‘Vţéÿ¤¹SQt]]Çx€±¯A@ĉij¢Óļ©•ƒl¶ÅÛr—ŕspãRk~¦ª]Į­´“FR„åd­ČsCqđéFn¿Åƃm’Éx{W©ºƝºįkÕƂƑ¸wWūЩÈFž£\\\\tÈ¥ÄRÈýÌJ ƒlGr^×äùyÞ³fj”c†€¨£ÂZ|ǓMĝšÏ@ëÜőR‹›ĝ‰Œ÷¡{aïȷPu°ËXÙ{©TmĠ}Y³’­ÞIňµç½©C¡į÷¯B»|St»›]vƒųƒs»”}MÓ ÿʪƟǭA¡fs˜»PY¼c¡»¦c„ċ­¥£~msĉP•–Siƒ^o©A‰Šec‚™PeǵŽkg‚yUi¿h}aH™šĉ^|ᴟ¡HØûÅ«ĉ®]m€¡qĉ¶³ÈyôōLÁst“BŸ®wn±ă¥HSòėš£˜S’ë@לÊăxÇN©™©T±ª£IJ¡fb®ÞbŽb_Ą¥xu¥B—ž{łĝ³«`d˜Ɛt—¤ťiñžÍUuºí`£˜^tƃIJc—·ÛLO‹½Šsç¥Ts{ă\\\\_»™kϊ±q©čiìĉ|ÍIƒ¥ć¥›€]ª§D{ŝŖÉR_sÿc³Īō›ƿΑ›§p›[ĉ†›c¯bKm›R¥{³„Z†e^ŽŒwx¹dƽŽôIg §Mĕ ƹĴ¿—ǣÜ̓]‹Ý–]snåA{‹eŒƭ`ǻŊĿ\\\\ijŬű”YÂÿ¬jĖqŽßbŠ¸•L«¸©@ěĀ©ê¶ìÀEH|´bRľž–Ó¶rÀQþ‹vl®Õ‚E˜TzÜdb ˜hw¤{LR„ƒd“c‹b¯‹ÙVgœ‚ƜßzÃô쮍^jUèXΖ|UäÌ»rKŽ\\\\ŒªN‘¼pZCü†VY††¤ɃRi^rPҒTÖ}|br°qňbĚ°ªiƶGQ¾²„x¦PœmlŜ‘[Ĥ¡ΞsĦŸÔÏâ\\\\ªÚŒU\\\\f…¢N²§x|¤§„xĔsZPòʛ²SÐqF`ª„VƒÞŜĶƨVZŒÌL`ˆ¢dŐIqr\\\\oäõ–F礻Ŷ×h¹]Clـ\\\\¦ďÌį¬řtTӺƙgQÇÓHţĒ”´ÃbEÄlbʔC”|CˆŮˆk„Ʈ[ʼ¬ňœ´KŮÈΰÌĪ¶ƶlð”ļA†TUvdTŠG†º̼ŠÔ€ŒsÊDԄveOg\"]],\"encodeOffsets\":[[[105308,37219]],[[95370,40081]]]}},{\"type\":\"Feature\",\"id\":\"640000\",\"properties\":{\"id\":\"640000\",\"cp\":[106.278179,37.26637],\"name\":\"宁夏\",\"childNum\":2},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@KëÀęĞ«OęȿȕŸı]ʼn¡åįÕÔ«Ǵõƪ™ĚQÐZhv K°›öqÀѐS[ÃÖHƖčË‡nL]ûc…Ùß@‚“ĝ‘¾}w»»‹oģF¹œ»kÌÏ·{zPƒ§B­¢íyÅt@ƒ@áš]Yv_ssģ¼i߁”ĻL¾ġsKD£¡N_…“˜X¸}B~Haiˆ™Åf{«x»ge_bs“KF¯¡Ix™mELcÿZ¤­Ģ‘ƒÝœsuBLù•t†ŒYdˆmVtNmtOPhRw~bd…¾qÐ\\\\âÙH\\\\bImlNZŸ»loƒŸqlVm–Gā§~QCw¤™{A\\\\‘PKŸNY‡¯bF‡kC¥’sk‹Šs_Ã\\\\ă«¢ħkJi¯r›rAhĹûç£CU‡ĕĊ_ԗBixÅُĄnªÑaM~ħpOu¥sîeQ¥¤^dkKwlL~{L~–hw^‚ófćƒKyEŒ­K­zuÔ¡qQ¤xZÑ¢^ļöܾEpž±âbÊÑÆ^fk¬…NC¾‘Œ“YpxbK~¥Že֎ŒäBlt¿Đx½I[ĒǙŒWž‹f»Ĭ}d§dµùEuj¨‚IÆ¢¥dXªƅx¿]mtÏwßRĶŒX¢͎vÆzƂZò®ǢÌʆCrâºMÞzžÆMҔÊÓŊZľ–r°Î®Ȉmª²ĈUªĚøºˆĮ¦ÌĘk„^FłĬhĚiĀĖ¾iİbjÕ\"],[\"@@mfwěwMrŢªv@G‰\"]],\"encodeOffsets\":[[[109366,40242]],[[108600,36303]]]}},{\"type\":\"Feature\",\"id\":\"650000\",\"properties\":{\"id\":\"650000\",\"cp\":[85.617733,40.792818],\"name\":\"新疆\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@QØĔ²X¨”~ǘBºjʐßØvK”ƔX¨vĊOžÃƒ·¢i@~c—‡ĝe_«”Eš“}QxgɪëÏÃ@sÅyXoŖ{ô«ŸuX…ê•Îf`œC‚¹ÂÿÐGĮÕĞXŪōŸMźÈƺQèĽôe|¿ƸJR¤ĘEjcUóº¯Ĩ_ŘÁMª÷Ð¥Oéȇ¿ÖğǤǷÂF҇zÉx[]­Ĥĝ‰œ¦EP}ûƥé¿İƷTėƫœŕƅ™ƱB»Đ±’ēO…¦E–•}‘`cȺrĦáŖuҞª«IJ‡πdƺÏØZƴwʄ¤ĖGЙǂZĶƒèH¶}ÚZצʥĪï|ÇĦMŔ»İĝLj‹ì¥Βœba­¯¥ǕǚkĆŵĦɑĺƯxūД̵nơʃĽá½M»›òmqóŘĝč˾ăC…ćāƿÝɽ©DZŅ¹đ¥˜³ðLrÁ®ɱĕģʼnǻ̋ȥơŻǛȡVï¹Ň۩ûkɗġƁ§ʇė̕ĩũƽō^ƕŠUv£ƁQï“Ƶkŏ½ΉÃŭdzLқʻ«ƭ\\\\lƒ‡ŭD‡“{ʓDkaFÃÄa“³ŤđÔGRÈƚhSӹŚsİ«ĐË[¥ÚDkº^Øg¼ŵ¸£EÍö•€ůʼnT¡c_‡ËKY‹ƧUśĵ„݃U_©rETÏʜ±OñtYwē¨ƒ{£¨uM³x½şL©Ùá[ÓÐĥ Νtģ¢\\\\‚ś’nkO›w¥±ƒT»ƷFɯàĩÞáB¹Æ…ÑUw„੍žĽw[“mG½Èå~‡Æ÷QyŠěCFmĭZī—ŵVÁ™ƿQƛ—ûXS²‰b½KϽĉS›©ŷXĕŸ{ŽĕK·¥Ɨcqq©f¿]‡ßDõU³h—­gËÇïģÉɋw“k¯í}I·šœbmœÉ–ř›īJɥĻˁ×xo›ɹī‡l•c…¤³Xù]‘™DžA¿w͉ì¥wÇN·ÂËnƾƍdǧđ®Ɲv•Um©³G\\\\“}µĿ‡QyŹl㓛µEw‰LJQ½yƋBe¶ŋÀů‡ož¥A—˜Éw@•{Gpm¿Aij†ŽKLhˆ³`ñcËtW‚±»ÕS‰ëüÿďD‡u\\\\wwwù³—V›LŕƒOMËGh£õP¡™er™Ïd{“‡ġWÁ…č|yšg^ğyÁzÙs`—s|ÉåªÇ}m¢Ń¨`x¥’ù^•}ƒÌ¥H«‰Yªƅ”Aйn~ź¯šf¤áÀz„gŠÇDIԝ´AňĀ҄¶ûEYospõD[{ù°]u›Jq•U•|Soċxţ[õÔĥkŋÞŭZ˺óYËüċrw €ÞkrťË¿XGÉbřaDü·Ē÷Aê[Ää€I®BÕИÞ_¢āĠpŠÛÄȉĖġDKwbm‡ÄNô‡ŠfœƫVÉvi†dz—H‘‹QµâFšù­Âœ³¦{YGžƒd¢ĚÜO „€{Ö¦ÞÍÀPŒ^b–ƾŠlŽ[„vt×ĈÍE˨¡Đ~´î¸ùÎh€uè`¸ŸHÕŔVºwĠââWò‡@{œÙNÝ´ə²ȕn{¿¥{l—÷eé^e’ďˆXj©î\\\\ªÑò˜Üìc\\\\üqˆÕ[Č¡xoÂċªbØ­Œø|€¶ȴZdÆšońéŒGš\\\\”¼C°ÌƁn´nxšÊOĨ’Ūƴĸ¢¸òTxÊǪMīИÖŲÃɎOvˆʦƢ~FŽ‡Rěò—¿ġ~åŊœú‰Nšžš¸qŽ’Ę[Ĕ¶ÂćnÒPĒÜvúĀÊbÖ{Äî¸~Ŕünp¤ÂH¾œĄYÒ©ÊfºmԈĘcDoĬMŬ’˜S¤„s²‚”ʘچžȂVŦ –ŽèW°ªB|IJXŔþÈJĦÆæFĚêŠYĂªĂ]øªŖNÞüA€’fɨJ€˜¯ÎrDDšĤ€`€mz\\\\„§~D¬{vJÂ˜«lµĂb–¤p€ŌŰNĄ¨ĊXW|ų ¿¾ɄĦƐMT”‡òP˜÷fØĶK¢ȝ˔Sô¹òEð­”`Ɩ½ǒÂň×äı–§ĤƝ§C~¡‚hlå‚ǺŦŞkâ’~}ŽFøàIJaĞ‚fƠ¥Ž„Ŕdž˜®U¸ˆźXœv¢aƆúŪtŠųƠjd•ƺŠƺÅìnrh\\\\ĺ¯äɝĦ]èpĄ¦´LƞĬŠ´ƤǬ˼Ēɸ¤rºǼ²¨zÌPðŀbþ¹ļD¢¹œ\\\\ĜÑŚŸ¶ZƄ³àjĨoâŠȴLʉȮŒĐ­ĚăŽÀêZǚŐ¤qȂ\\\\L¢ŌİfÆs|zºeªÙæ§΢{Ā´ƐÚ¬¨Ĵà²łhʺKÞºÖTŠiƢ¾ªì°`öøu®Ê¾ãØ\"],\"encodeOffsets\":[[88824,50096]]}},{\"type\":\"Feature\",\"id\":\"110000\",\"properties\":{\"id\":\"110000\",\"cp\":[116.405285,39.904989],\"name\":\"北京\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@ĽOÁ›ûtŷmiÍt_H»Ĩ±d`Š¹­{bw…Yr“³S]§§o¹€qGtm_Sŧ€“oa›‹FLg‘QN_•dV€@Zom_ć\\\\ߚc±x¯oœRcfe…£’o§ËgToÛJíĔóu…|wP¤™XnO¢ÉˆŦ¯rNÄā¤zâŖÈRpŢZŠœÚ{GŠrFt¦Òx§ø¹RóäV¤XdˆżâºWbwŚ¨Ud®bêņ¾‘jnŎGŃŶŠnzÚSeîĜZczî¾i]͜™QaúÍÔiþĩȨWĢ‹ü|Ėu[qb[swP@ÅğP¿{\\\\‡¥A¨Ï‘Ѩj¯ŠX\\\\¯œMK‘pA³[H…īu}}\"],\"encodeOffsets\":[[120023,41045]]}},{\"type\":\"Feature\",\"id\":\"120000\",\"properties\":{\"id\":\"120000\",\"cp\":[117.190182,39.125596],\"name\":\"天津\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@ŬgX§Ü«E…¶Ḟ“¬O_™ïlÁg“z±AXe™µÄĵ{¶]gitgšIj·›¥îakS€‰¨ÐƎk}ĕ{gB—qGf{¿a†U^fI“ư‹³õ{YƒıëNĿžk©ïËZŏ‘R§òoY×Ógc…ĥs¡bġ«@dekąI[nlPqCnp{ˆō³°`{PNdƗqSÄĻNNâyj]äžÒD ĬH°Æ]~¡HO¾ŒX}ÐxŒgp“gWˆrDGˆŒpù‚Š^L‚ˆrzWxˆZ^¨´T\\\\|~@I‰zƒ–bĤ‹œjeĊªz£®Ĕvě€L†mV¾Ô_ȔNW~zbĬvG†²ZmDM~”~\"],\"encodeOffsets\":[[120237,41215]]}},{\"type\":\"Feature\",\"id\":\"310000\",\"properties\":{\"id\":\"310000\",\"cp\":[121.472644,31.231706],\"name\":\"上海\",\"childNum\":6},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@ɧư¬EpƸÁxc‡\"],[\"@@©„ªƒ\"],[\"@@”MA‹‘š\"],[\"@@Qp݁E§ÉC¾\"],[\"@@bŝՕÕEȣÚƥêImɇǦèÜĠŒÚžÃƌÃ͎ó\"],[\"@@ǜûȬɋŠŭ™×^‰sYŒɍDŋ‘ŽąñCG²«ªč@h–_p¯A{‡oloY€¬j@IJ`•gQڛhr|ǀ^MIJvtbe´R¯Ô¬¨YŽô¤r]ì†Ƭį\"]],\"encodeOffsets\":[[[124702,32062]],[[124547,32200]],[[124808,31991]],[[124726,32110]],[[124903,32376]],[[124438,32149]]]}},{\"type\":\"Feature\",\"id\":\"500000\",\"properties\":{\"id\":\"500000\",\"cp\":[107.304962,29.533155],\"name\":\"重庆\",\"childNum\":2},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@vjG~nGŘŬĶȂƀƾ¹¸ØÎezĆT¸}êЖqHŸðqĖ䒊¥^CƒIj–²p…\\\\_ æüY|[YxƊæuž°xb®…Űb@~¢NQt°¶‚S栓Ê~rljĔëĚ¢~šuf`‘‚†fa‚ĔJåĊ„nÖ]„jƎćÊ@Š£¾a®£Ű{ŶĕF‹ègLk{Y|¡ĜWƔtƬJÑxq‹±ĢN´‰òK‰™–LÈüD|s`ŋ’ć]ƒÃ‰`đŒMûƱ½~Y°ħ`ƏíW‰½eI‹½{aŸ‘OIrÏ¡ĕŇa†p†µÜƅġ‘œ^ÖÛbÙŽŏml½S‹êqDu[R‹ãË»†ÿw`»y‘¸_ĺę}÷`M¯ċfCVµqʼn÷Z•gg“Œ`d½pDO‡ÎCnœ^uf²ènh¼WtƏxRGg¦…pV„†FI±ŽG^ŒIc´ec‡’G•ĹÞ½sëĬ„h˜xW‚}Kӈe­Xsbk”F¦›L‘ØgTkïƵNï¶}Gy“w\\\\oñ¡nmĈzjŸ•@™Óc£»Wă¹Ój“_m»ˆ¹·~MvÛaqœ»­‰êœ’\\\\ÂoVnŽÓØ͙²«‹bq¿efE „€‹Ĝ^Qž~ Évý‡ş¤²Į‰pEİ}zcĺƒL‹½‡š¿gņ›¡ýE¡ya£³t\\\\¨\\\\vú»¼§·Ñr_oÒý¥u‚•_n»_ƒ•At©Þűā§IVeëƒY}{VPÀFA¨ąB}q@|Ou—\\\\Fm‰QF݅Mw˜å}]•€|FmϋCaƒwŒu_p—¯sfÙgY…DHl`{QEfNysBŠ¦zG¸rHe‚„N\\\\CvEsÐùÜ_·ÖĉsaQ¯€}_U‡†xÃđŠq›NH¬•Äd^ÝŰR¬ã°wećJEž·vÝ·Hgƒ‚éFXjÉê`|yŒpxkAwœWĐpb¥eOsmzwqChóUQl¥F^laf‹anòsr›EvfQdÁUVf—ÎvÜ^efˆtET¬ôA\\\\œ¢sJŽnQTjP؈xøK|nBz‰„œĞ»LY‚…FDxӄvr“[ehľš•vN”¢o¾NiÂxGp⬐z›bfZo~hGi’]öF|‰|Nb‡tOMn eA±ŠtPT‡LjpYQ|†SH††YĀxinzDJ€Ìg¢và¥Pg‰_–ÇzII‹€II•„£®S¬„Øs쐣ŒN\"],[\"@@ifjN@s\"]],\"encodeOffsets\":[[[109628,30765]],[[111725,31320]]]}},{\"type\":\"Feature\",\"id\":\"810000\",\"properties\":{\"id\":\"810000\",\"cp\":[114.173355,22.320048],\"name\":\"香港\",\"childNum\":5},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@AlBk\"],[\"@@mŽn\"],[\"@@EpFo\"],[\"@@ea¢pl¸Eõ¹‡hj[ƒ]ÔCΖ@lj˜¡uBXŸ…•´‹AI¹…[‹yDUˆ]W`çwZkmc–…M›žp€Åv›}I‹oJlcaƒfёKŽ°ä¬XJmРđhI®æÔtSHn€Eˆ„ÒrÈc\"],[\"@@rMUw‡AS®€e\"]],\"encodeOffsets\":[[[117111,23002]],[[117072,22876]],[[117045,22887]],[[116975,23082]],[[116882,22747]]]}},{\"type\":\"Feature\",\"id\":\"820000\",\"properties\":{\"id\":\"820000\",\"cp\":[113.54909,22.198951],\"name\":\"澳门\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@kÊd°å§s\"],\"encodeOffsets\":[[116279,22639]]}}],\"UTF8Encoding\":true});\n}));\n","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 97);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 97:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/button/src/button-group.vue?vue&type=template&id=3d8661d0&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"el-button-group\" }, [_vm._t(\"default\")], 2)\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/button/src/button-group.vue?vue&type=template&id=3d8661d0&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/button/src/button-group.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n\n/* harmony default export */ var button_groupvue_type_script_lang_js_ = ({\n name: 'ElButtonGroup'\n});\n// CONCATENATED MODULE: ./packages/button/src/button-group.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_button_groupvue_type_script_lang_js_ = (button_groupvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/button/src/button-group.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_button_groupvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/button/src/button-group.vue\"\n/* harmony default export */ var button_group = (component.exports);\n// CONCATENATED MODULE: ./packages/button-group/index.js\n\n\n/* istanbul ignore next */\nbutton_group.install = function (Vue) {\n Vue.component(button_group.name, button_group);\n};\n\n/* harmony default export */ var packages_button_group = __webpack_exports__[\"default\"] = (button_group);\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 96);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 96:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/button/src/button.vue?vue&type=template&id=ca859fb4&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"button\",\n {\n staticClass: \"el-button\",\n class: [\n _vm.type ? \"el-button--\" + _vm.type : \"\",\n _vm.buttonSize ? \"el-button--\" + _vm.buttonSize : \"\",\n {\n \"is-disabled\": _vm.buttonDisabled,\n \"is-loading\": _vm.loading,\n \"is-plain\": _vm.plain,\n \"is-round\": _vm.round,\n \"is-circle\": _vm.circle\n }\n ],\n attrs: {\n disabled: _vm.buttonDisabled || _vm.loading,\n autofocus: _vm.autofocus,\n type: _vm.nativeType\n },\n on: { click: _vm.handleClick }\n },\n [\n _vm.loading ? _c(\"i\", { staticClass: \"el-icon-loading\" }) : _vm._e(),\n _vm.icon && !_vm.loading ? _c(\"i\", { class: _vm.icon }) : _vm._e(),\n _vm.$slots.default ? _c(\"span\", [_vm._t(\"default\")], 2) : _vm._e()\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/button/src/button.vue?vue&type=template&id=ca859fb4&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/button/src/button.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var buttonvue_type_script_lang_js_ = ({\n name: 'ElButton',\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n props: {\n type: {\n type: String,\n default: 'default'\n },\n size: String,\n icon: {\n type: String,\n default: ''\n },\n nativeType: {\n type: String,\n default: 'button'\n },\n loading: Boolean,\n disabled: Boolean,\n plain: Boolean,\n autofocus: Boolean,\n round: Boolean,\n circle: Boolean\n },\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n buttonSize: function buttonSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n buttonDisabled: function buttonDisabled() {\n return this.$options.propsData.hasOwnProperty('disabled') ? this.disabled : (this.elForm || {}).disabled;\n }\n },\n\n methods: {\n handleClick: function handleClick(evt) {\n this.$emit('click', evt);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/button/src/button.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_buttonvue_type_script_lang_js_ = (buttonvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/button/src/button.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_buttonvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/button/src/button.vue\"\n/* harmony default export */ var src_button = (component.exports);\n// CONCATENATED MODULE: ./packages/button/index.js\n\n\n/* istanbul ignore next */\nsrc_button.install = function (Vue) {\n Vue.component(src_button.name, src_button);\n};\n\n/* harmony default export */ var packages_button = __webpack_exports__[\"default\"] = (src_button);\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 61);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 15:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/scrollbar\");\n\n/***/ }),\n\n/***/ 18:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/checkbox\");\n\n/***/ }),\n\n/***/ 21:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/shared\");\n\n/***/ }),\n\n/***/ 26:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"babel-helper-vue-jsx-merge-props\");\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/util\");\n\n/***/ }),\n\n/***/ 31:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/scroll-into-view\");\n\n/***/ }),\n\n/***/ 41:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/aria-utils\");\n\n/***/ }),\n\n/***/ 52:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/radio\");\n\n/***/ }),\n\n/***/ 6:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/locale\");\n\n/***/ }),\n\n/***/ 61:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader-panel/src/cascader-panel.vue?vue&type=template&id=34932346&\nvar cascader_panelvue_type_template_id_34932346_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n class: [\"el-cascader-panel\", _vm.border && \"is-bordered\"],\n on: { keydown: _vm.handleKeyDown }\n },\n _vm._l(_vm.menus, function(menu, index) {\n return _c(\"cascader-menu\", {\n key: index,\n ref: \"menu\",\n refInFor: true,\n attrs: { index: index, nodes: menu }\n })\n }),\n 1\n )\n}\nvar staticRenderFns = []\ncascader_panelvue_type_template_id_34932346_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-panel.vue?vue&type=template&id=34932346&\n\n// EXTERNAL MODULE: external \"babel-helper-vue-jsx-merge-props\"\nvar external_babel_helper_vue_jsx_merge_props_ = __webpack_require__(26);\nvar external_babel_helper_vue_jsx_merge_props_default = /*#__PURE__*/__webpack_require__.n(external_babel_helper_vue_jsx_merge_props_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/scrollbar\"\nvar scrollbar_ = __webpack_require__(15);\nvar scrollbar_default = /*#__PURE__*/__webpack_require__.n(scrollbar_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/checkbox\"\nvar checkbox_ = __webpack_require__(18);\nvar checkbox_default = /*#__PURE__*/__webpack_require__.n(checkbox_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/radio\"\nvar radio_ = __webpack_require__(52);\nvar radio_default = /*#__PURE__*/__webpack_require__.n(radio_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/util\"\nvar util_ = __webpack_require__(3);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader-panel/src/cascader-node.vue?vue&type=script&lang=js&\n\n\n\n\n\n\nvar stopPropagation = function stopPropagation(e) {\n return e.stopPropagation();\n};\n\n/* harmony default export */ var cascader_nodevue_type_script_lang_js_ = ({\n inject: ['panel'],\n\n components: {\n ElCheckbox: checkbox_default.a,\n ElRadio: radio_default.a\n },\n\n props: {\n node: {\n required: true\n },\n nodeId: String\n },\n\n computed: {\n config: function config() {\n return this.panel.config;\n },\n isLeaf: function isLeaf() {\n return this.node.isLeaf;\n },\n isDisabled: function isDisabled() {\n return this.node.isDisabled;\n },\n checkedValue: function checkedValue() {\n return this.panel.checkedValue;\n },\n isChecked: function isChecked() {\n return this.node.isSameNode(this.checkedValue);\n },\n inActivePath: function inActivePath() {\n return this.isInPath(this.panel.activePath);\n },\n inCheckedPath: function inCheckedPath() {\n var _this = this;\n\n if (!this.config.checkStrictly) return false;\n\n return this.panel.checkedNodePaths.some(function (checkedPath) {\n return _this.isInPath(checkedPath);\n });\n },\n value: function value() {\n return this.node.getValueByOption();\n }\n },\n\n methods: {\n handleExpand: function handleExpand() {\n var _this2 = this;\n\n var panel = this.panel,\n node = this.node,\n isDisabled = this.isDisabled,\n config = this.config;\n var multiple = config.multiple,\n checkStrictly = config.checkStrictly;\n\n\n if (!checkStrictly && isDisabled || node.loading) return;\n\n if (config.lazy && !node.loaded) {\n panel.lazyLoad(node, function () {\n // do not use cached leaf value here, invoke this.isLeaf to get new value.\n var isLeaf = _this2.isLeaf;\n\n\n if (!isLeaf) _this2.handleExpand();\n if (multiple) {\n // if leaf sync checked state, else clear checked state\n var checked = isLeaf ? node.checked : false;\n _this2.handleMultiCheckChange(checked);\n }\n });\n } else {\n panel.handleExpand(node);\n }\n },\n handleCheckChange: function handleCheckChange() {\n var panel = this.panel,\n value = this.value,\n node = this.node;\n\n panel.handleCheckChange(value);\n panel.handleExpand(node);\n },\n handleMultiCheckChange: function handleMultiCheckChange(checked) {\n this.node.doCheck(checked);\n this.panel.calculateMultiCheckedValue();\n },\n isInPath: function isInPath(pathNodes) {\n var node = this.node;\n\n var selectedPathNode = pathNodes[node.level - 1] || {};\n return selectedPathNode.uid === node.uid;\n },\n renderPrefix: function renderPrefix(h) {\n var isLeaf = this.isLeaf,\n isChecked = this.isChecked,\n config = this.config;\n var checkStrictly = config.checkStrictly,\n multiple = config.multiple;\n\n\n if (multiple) {\n return this.renderCheckbox(h);\n } else if (checkStrictly) {\n return this.renderRadio(h);\n } else if (isLeaf && isChecked) {\n return this.renderCheckIcon(h);\n }\n\n return null;\n },\n renderPostfix: function renderPostfix(h) {\n var node = this.node,\n isLeaf = this.isLeaf;\n\n\n if (node.loading) {\n return this.renderLoadingIcon(h);\n } else if (!isLeaf) {\n return this.renderExpandIcon(h);\n }\n\n return null;\n },\n renderCheckbox: function renderCheckbox(h) {\n var node = this.node,\n config = this.config,\n isDisabled = this.isDisabled;\n\n var events = {\n on: { change: this.handleMultiCheckChange },\n nativeOn: {}\n };\n\n if (config.checkStrictly) {\n // when every node is selectable, click event should not trigger expand event.\n events.nativeOn.click = stopPropagation;\n }\n\n return h('el-checkbox', external_babel_helper_vue_jsx_merge_props_default()([{\n attrs: {\n value: node.checked,\n indeterminate: node.indeterminate,\n disabled: isDisabled\n }\n }, events]));\n },\n renderRadio: function renderRadio(h) {\n var checkedValue = this.checkedValue,\n value = this.value,\n isDisabled = this.isDisabled;\n\n // to keep same reference if value cause radio's checked state is calculated by reference comparision;\n\n if (Object(util_[\"isEqual\"])(value, checkedValue)) {\n value = checkedValue;\n }\n\n return h(\n 'el-radio',\n {\n attrs: {\n value: checkedValue,\n label: value,\n disabled: isDisabled\n },\n on: {\n 'change': this.handleCheckChange\n },\n nativeOn: {\n 'click': stopPropagation\n }\n },\n [h('span')]\n );\n },\n renderCheckIcon: function renderCheckIcon(h) {\n return h('i', { 'class': 'el-icon-check el-cascader-node__prefix' });\n },\n renderLoadingIcon: function renderLoadingIcon(h) {\n return h('i', { 'class': 'el-icon-loading el-cascader-node__postfix' });\n },\n renderExpandIcon: function renderExpandIcon(h) {\n return h('i', { 'class': 'el-icon-arrow-right el-cascader-node__postfix' });\n },\n renderContent: function renderContent(h) {\n var panel = this.panel,\n node = this.node;\n\n var render = panel.renderLabelFn;\n var vnode = render ? render({ node: node, data: node.data }) : null;\n\n return h(\n 'span',\n { 'class': 'el-cascader-node__label' },\n [vnode || node.label]\n );\n }\n },\n\n render: function render(h) {\n var _this3 = this;\n\n var inActivePath = this.inActivePath,\n inCheckedPath = this.inCheckedPath,\n isChecked = this.isChecked,\n isLeaf = this.isLeaf,\n isDisabled = this.isDisabled,\n config = this.config,\n nodeId = this.nodeId;\n var expandTrigger = config.expandTrigger,\n checkStrictly = config.checkStrictly,\n multiple = config.multiple;\n\n var disabled = !checkStrictly && isDisabled;\n var events = { on: {} };\n\n if (expandTrigger === 'click') {\n events.on.click = this.handleExpand;\n } else {\n events.on.mouseenter = function (e) {\n _this3.handleExpand();\n _this3.$emit('expand', e);\n };\n events.on.focus = function (e) {\n _this3.handleExpand();\n _this3.$emit('expand', e);\n };\n }\n if (isLeaf && !isDisabled && !checkStrictly && !multiple) {\n events.on.click = this.handleCheckChange;\n }\n\n return h(\n 'li',\n external_babel_helper_vue_jsx_merge_props_default()([{\n attrs: {\n role: 'menuitem',\n id: nodeId,\n 'aria-expanded': inActivePath,\n tabindex: disabled ? null : -1\n },\n 'class': {\n 'el-cascader-node': true,\n 'is-selectable': checkStrictly,\n 'in-active-path': inActivePath,\n 'in-checked-path': inCheckedPath,\n 'is-active': isChecked,\n 'is-disabled': disabled\n }\n }, events]),\n [this.renderPrefix(h), this.renderContent(h), this.renderPostfix(h)]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-node.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_cascader_nodevue_type_script_lang_js_ = (cascader_nodevue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-node.vue\nvar cascader_node_render, cascader_node_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_cascader_nodevue_type_script_lang_js_,\n cascader_node_render,\n cascader_node_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/cascader-panel/src/cascader-node.vue\"\n/* harmony default export */ var cascader_node = (component.exports);\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/locale\"\nvar locale_ = __webpack_require__(6);\nvar locale_default = /*#__PURE__*/__webpack_require__.n(locale_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader-panel/src/cascader-menu.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n/* harmony default export */ var cascader_menuvue_type_script_lang_js_ = ({\n name: 'ElCascaderMenu',\n\n mixins: [locale_default.a],\n\n inject: ['panel'],\n\n components: {\n ElScrollbar: scrollbar_default.a,\n CascaderNode: cascader_node\n },\n\n props: {\n nodes: {\n type: Array,\n required: true\n },\n index: Number\n },\n\n data: function data() {\n return {\n activeNode: null,\n hoverTimer: null,\n id: Object(util_[\"generateId\"])()\n };\n },\n\n\n computed: {\n isEmpty: function isEmpty() {\n return !this.nodes.length;\n },\n menuId: function menuId() {\n return 'cascader-menu-' + this.id + '-' + this.index;\n }\n },\n\n methods: {\n handleExpand: function handleExpand(e) {\n this.activeNode = e.target;\n },\n handleMouseMove: function handleMouseMove(e) {\n var activeNode = this.activeNode,\n hoverTimer = this.hoverTimer;\n var hoverZone = this.$refs.hoverZone;\n\n\n if (!activeNode || !hoverZone) return;\n\n if (activeNode.contains(e.target)) {\n clearTimeout(hoverTimer);\n\n var _$el$getBoundingClien = this.$el.getBoundingClientRect(),\n left = _$el$getBoundingClien.left;\n\n var startX = e.clientX - left;\n var _$el = this.$el,\n offsetWidth = _$el.offsetWidth,\n offsetHeight = _$el.offsetHeight;\n\n var top = activeNode.offsetTop;\n var bottom = top + activeNode.offsetHeight;\n\n hoverZone.innerHTML = '\\n \\n \\n ';\n } else if (!hoverTimer) {\n this.hoverTimer = setTimeout(this.clearHoverZone, this.panel.config.hoverThreshold);\n }\n },\n clearHoverZone: function clearHoverZone() {\n var hoverZone = this.$refs.hoverZone;\n\n if (!hoverZone) return;\n hoverZone.innerHTML = '';\n },\n renderEmptyText: function renderEmptyText(h) {\n return h(\n 'div',\n { 'class': 'el-cascader-menu__empty-text' },\n [this.t('el.cascader.noData')]\n );\n },\n renderNodeList: function renderNodeList(h) {\n var menuId = this.menuId;\n var isHoverMenu = this.panel.isHoverMenu;\n\n var events = { on: {} };\n\n if (isHoverMenu) {\n events.on.expand = this.handleExpand;\n }\n\n var nodes = this.nodes.map(function (node, index) {\n var hasChildren = node.hasChildren;\n\n return h('cascader-node', external_babel_helper_vue_jsx_merge_props_default()([{\n key: node.uid,\n attrs: { node: node,\n 'node-id': menuId + '-' + index,\n 'aria-haspopup': hasChildren,\n 'aria-owns': hasChildren ? menuId : null\n }\n }, events]));\n });\n\n return [].concat(nodes, [isHoverMenu ? h('svg', { ref: 'hoverZone', 'class': 'el-cascader-menu__hover-zone' }) : null]);\n }\n },\n\n render: function render(h) {\n var isEmpty = this.isEmpty,\n menuId = this.menuId;\n\n var events = { nativeOn: {} };\n\n // optimize hover to expand experience (#8010)\n if (this.panel.isHoverMenu) {\n events.nativeOn.mousemove = this.handleMouseMove;\n // events.nativeOn.mouseleave = this.clearHoverZone;\n }\n\n return h(\n 'el-scrollbar',\n external_babel_helper_vue_jsx_merge_props_default()([{\n attrs: {\n tag: 'ul',\n role: 'menu',\n id: menuId,\n\n 'wrap-class': 'el-cascader-menu__wrap',\n 'view-class': {\n 'el-cascader-menu__list': true,\n 'is-empty': isEmpty\n }\n },\n 'class': 'el-cascader-menu' }, events]),\n [isEmpty ? this.renderEmptyText(h) : this.renderNodeList(h)]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-menu.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_cascader_menuvue_type_script_lang_js_ = (cascader_menuvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-menu.vue\nvar cascader_menu_render, cascader_menu_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar cascader_menu_component = Object(componentNormalizer[\"a\" /* default */])(\n src_cascader_menuvue_type_script_lang_js_,\n cascader_menu_render,\n cascader_menu_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var cascader_menu_api; }\ncascader_menu_component.options.__file = \"packages/cascader-panel/src/cascader-menu.vue\"\n/* harmony default export */ var cascader_menu = (cascader_menu_component.exports);\n// EXTERNAL MODULE: external \"element-ui/lib/utils/shared\"\nvar shared_ = __webpack_require__(21);\n\n// CONCATENATED MODULE: ./packages/cascader-panel/src/node.js\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\nvar uid = 0;\n\nvar node_Node = function () {\n function Node(data, config, parentNode) {\n _classCallCheck(this, Node);\n\n this.data = data;\n this.config = config;\n this.parent = parentNode || null;\n this.level = !this.parent ? 1 : this.parent.level + 1;\n this.uid = uid++;\n\n this.initState();\n this.initChildren();\n }\n\n Node.prototype.initState = function initState() {\n var _config = this.config,\n valueKey = _config.value,\n labelKey = _config.label;\n\n\n this.value = this.data[valueKey];\n this.label = this.data[labelKey];\n this.pathNodes = this.calculatePathNodes();\n this.path = this.pathNodes.map(function (node) {\n return node.value;\n });\n this.pathLabels = this.pathNodes.map(function (node) {\n return node.label;\n });\n\n // lazy load\n this.loading = false;\n this.loaded = false;\n };\n\n Node.prototype.initChildren = function initChildren() {\n var _this = this;\n\n var config = this.config;\n\n var childrenKey = config.children;\n var childrenData = this.data[childrenKey];\n this.hasChildren = Array.isArray(childrenData);\n this.children = (childrenData || []).map(function (child) {\n return new Node(child, config, _this);\n });\n };\n\n Node.prototype.calculatePathNodes = function calculatePathNodes() {\n var nodes = [this];\n var parent = this.parent;\n\n while (parent) {\n nodes.unshift(parent);\n parent = parent.parent;\n }\n\n return nodes;\n };\n\n Node.prototype.getPath = function getPath() {\n return this.path;\n };\n\n Node.prototype.getValue = function getValue() {\n return this.value;\n };\n\n Node.prototype.getValueByOption = function getValueByOption() {\n return this.config.emitPath ? this.getPath() : this.getValue();\n };\n\n Node.prototype.getText = function getText(allLevels, separator) {\n return allLevels ? this.pathLabels.join(separator) : this.label;\n };\n\n Node.prototype.isSameNode = function isSameNode(checkedValue) {\n var value = this.getValueByOption();\n return this.config.multiple && Array.isArray(checkedValue) ? checkedValue.some(function (val) {\n return Object(util_[\"isEqual\"])(val, value);\n }) : Object(util_[\"isEqual\"])(checkedValue, value);\n };\n\n Node.prototype.broadcast = function broadcast(event) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var handlerName = 'onParent' + Object(util_[\"capitalize\"])(event);\n\n this.children.forEach(function (child) {\n if (child) {\n // bottom up\n child.broadcast.apply(child, [event].concat(args));\n child[handlerName] && child[handlerName].apply(child, args);\n }\n });\n };\n\n Node.prototype.emit = function emit(event) {\n var parent = this.parent;\n\n var handlerName = 'onChild' + Object(util_[\"capitalize\"])(event);\n if (parent) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n parent[handlerName] && parent[handlerName].apply(parent, args);\n parent.emit.apply(parent, [event].concat(args));\n }\n };\n\n Node.prototype.onParentCheck = function onParentCheck(checked) {\n if (!this.isDisabled) {\n this.setCheckState(checked);\n }\n };\n\n Node.prototype.onChildCheck = function onChildCheck() {\n var children = this.children;\n\n var validChildren = children.filter(function (child) {\n return !child.isDisabled;\n });\n var checked = validChildren.length ? validChildren.every(function (child) {\n return child.checked;\n }) : false;\n\n this.setCheckState(checked);\n };\n\n Node.prototype.setCheckState = function setCheckState(checked) {\n var totalNum = this.children.length;\n var checkedNum = this.children.reduce(function (c, p) {\n var num = p.checked ? 1 : p.indeterminate ? 0.5 : 0;\n return c + num;\n }, 0);\n\n this.checked = checked;\n this.indeterminate = checkedNum !== totalNum && checkedNum > 0;\n };\n\n Node.prototype.syncCheckState = function syncCheckState(checkedValue) {\n var value = this.getValueByOption();\n var checked = this.isSameNode(checkedValue, value);\n\n this.doCheck(checked);\n };\n\n Node.prototype.doCheck = function doCheck(checked) {\n if (this.checked !== checked) {\n if (this.config.checkStrictly) {\n this.checked = checked;\n } else {\n // bottom up to unify the calculation of the indeterminate state\n this.broadcast('check', checked);\n this.setCheckState(checked);\n this.emit('check');\n }\n }\n };\n\n _createClass(Node, [{\n key: 'isDisabled',\n get: function get() {\n var data = this.data,\n parent = this.parent,\n config = this.config;\n\n var disabledKey = config.disabled;\n var checkStrictly = config.checkStrictly;\n\n return data[disabledKey] || !checkStrictly && parent && parent.isDisabled;\n }\n }, {\n key: 'isLeaf',\n get: function get() {\n var data = this.data,\n loaded = this.loaded,\n hasChildren = this.hasChildren,\n children = this.children;\n var _config2 = this.config,\n lazy = _config2.lazy,\n leafKey = _config2.leaf;\n\n if (lazy) {\n var isLeaf = Object(shared_[\"isDef\"])(data[leafKey]) ? data[leafKey] : loaded ? !children.length : false;\n this.hasChildren = !isLeaf;\n return isLeaf;\n }\n return !hasChildren;\n }\n }]);\n\n return Node;\n}();\n\n/* harmony default export */ var src_node = (node_Node);\n// CONCATENATED MODULE: ./packages/cascader-panel/src/store.js\nfunction store_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\nvar flatNodes = function flatNodes(data, leafOnly) {\n return data.reduce(function (res, node) {\n if (node.isLeaf) {\n res.push(node);\n } else {\n !leafOnly && res.push(node);\n res = res.concat(flatNodes(node.children, leafOnly));\n }\n return res;\n }, []);\n};\n\nvar store_Store = function () {\n function Store(data, config) {\n store_classCallCheck(this, Store);\n\n this.config = config;\n this.initNodes(data);\n }\n\n Store.prototype.initNodes = function initNodes(data) {\n var _this = this;\n\n data = Object(util_[\"coerceTruthyValueToArray\"])(data);\n this.nodes = data.map(function (nodeData) {\n return new src_node(nodeData, _this.config);\n });\n this.flattedNodes = this.getFlattedNodes(false, false);\n this.leafNodes = this.getFlattedNodes(true, false);\n };\n\n Store.prototype.appendNode = function appendNode(nodeData, parentNode) {\n var node = new src_node(nodeData, this.config, parentNode);\n var children = parentNode ? parentNode.children : this.nodes;\n\n children.push(node);\n };\n\n Store.prototype.appendNodes = function appendNodes(nodeDataList, parentNode) {\n var _this2 = this;\n\n nodeDataList = Object(util_[\"coerceTruthyValueToArray\"])(nodeDataList);\n nodeDataList.forEach(function (nodeData) {\n return _this2.appendNode(nodeData, parentNode);\n });\n };\n\n Store.prototype.getNodes = function getNodes() {\n return this.nodes;\n };\n\n Store.prototype.getFlattedNodes = function getFlattedNodes(leafOnly) {\n var cached = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var cachedNodes = leafOnly ? this.leafNodes : this.flattedNodes;\n return cached ? cachedNodes : flatNodes(this.nodes, leafOnly);\n };\n\n Store.prototype.getNodeByValue = function getNodeByValue(value) {\n var nodes = this.getFlattedNodes(false, !this.config.lazy).filter(function (node) {\n return Object(util_[\"valueEquals\"])(node.path, value) || node.value === value;\n });\n return nodes && nodes.length ? nodes[0] : null;\n };\n\n return Store;\n}();\n\n/* harmony default export */ var src_store = (store_Store);\n// EXTERNAL MODULE: external \"element-ui/lib/utils/merge\"\nvar merge_ = __webpack_require__(9);\nvar merge_default = /*#__PURE__*/__webpack_require__.n(merge_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/aria-utils\"\nvar aria_utils_ = __webpack_require__(41);\nvar aria_utils_default = /*#__PURE__*/__webpack_require__.n(aria_utils_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/scroll-into-view\"\nvar scroll_into_view_ = __webpack_require__(31);\nvar scroll_into_view_default = /*#__PURE__*/__webpack_require__.n(scroll_into_view_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader-panel/src/cascader-panel.vue?vue&type=script&lang=js&\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\nvar KeyCode = aria_utils_default.a.keys;\n\nvar DefaultProps = {\n expandTrigger: 'click', // or hover\n multiple: false,\n checkStrictly: false, // whether all nodes can be selected\n emitPath: true, // wether to emit an array of all levels value in which node is located\n lazy: false,\n lazyLoad: util_[\"noop\"],\n value: 'value',\n label: 'label',\n children: 'children',\n leaf: 'leaf',\n disabled: 'disabled',\n hoverThreshold: 500\n};\n\nvar cascader_panelvue_type_script_lang_js_isLeaf = function isLeaf(el) {\n return !el.getAttribute('aria-owns');\n};\n\nvar getSibling = function getSibling(el, distance) {\n var parentNode = el.parentNode;\n\n if (parentNode) {\n var siblings = parentNode.querySelectorAll('.el-cascader-node[tabindex=\"-1\"]');\n var index = Array.prototype.indexOf.call(siblings, el);\n return siblings[index + distance] || null;\n }\n return null;\n};\n\nvar getMenuIndex = function getMenuIndex(el, distance) {\n if (!el) return;\n var pieces = el.id.split('-');\n return Number(pieces[pieces.length - 2]);\n};\n\nvar focusNode = function focusNode(el) {\n if (!el) return;\n el.focus();\n !cascader_panelvue_type_script_lang_js_isLeaf(el) && el.click();\n};\n\nvar checkNode = function checkNode(el) {\n if (!el) return;\n\n var input = el.querySelector('input');\n if (input) {\n input.click();\n } else if (cascader_panelvue_type_script_lang_js_isLeaf(el)) {\n el.click();\n }\n};\n\n/* harmony default export */ var cascader_panelvue_type_script_lang_js_ = ({\n name: 'ElCascaderPanel',\n\n components: {\n CascaderMenu: cascader_menu\n },\n\n props: {\n value: {},\n options: Array,\n props: Object,\n border: {\n type: Boolean,\n default: true\n },\n renderLabel: Function\n },\n\n provide: function provide() {\n return {\n panel: this\n };\n },\n data: function data() {\n return {\n checkedValue: null,\n checkedNodePaths: [],\n store: [],\n menus: [],\n activePath: [],\n loadCount: 0\n };\n },\n\n\n computed: {\n config: function config() {\n return merge_default()(_extends({}, DefaultProps), this.props || {});\n },\n multiple: function multiple() {\n return this.config.multiple;\n },\n checkStrictly: function checkStrictly() {\n return this.config.checkStrictly;\n },\n leafOnly: function leafOnly() {\n return !this.checkStrictly;\n },\n isHoverMenu: function isHoverMenu() {\n return this.config.expandTrigger === 'hover';\n },\n renderLabelFn: function renderLabelFn() {\n return this.renderLabel || this.$scopedSlots.default;\n }\n },\n\n watch: {\n value: function value() {\n this.syncCheckedValue();\n this.checkStrictly && this.calculateCheckedNodePaths();\n },\n\n options: {\n handler: function handler() {\n this.initStore();\n },\n immediate: true,\n deep: true\n },\n checkedValue: function checkedValue(val) {\n if (!Object(util_[\"isEqual\"])(val, this.value)) {\n this.checkStrictly && this.calculateCheckedNodePaths();\n this.$emit('input', val);\n this.$emit('change', val);\n }\n }\n },\n\n mounted: function mounted() {\n if (!this.isEmptyValue(this.value)) {\n this.syncCheckedValue();\n }\n },\n\n\n methods: {\n initStore: function initStore() {\n var config = this.config,\n options = this.options;\n\n if (config.lazy && Object(util_[\"isEmpty\"])(options)) {\n this.lazyLoad();\n } else {\n this.store = new src_store(options, config);\n this.menus = [this.store.getNodes()];\n this.syncMenuState();\n }\n },\n syncCheckedValue: function syncCheckedValue() {\n var value = this.value,\n checkedValue = this.checkedValue;\n\n if (!Object(util_[\"isEqual\"])(value, checkedValue)) {\n this.activePath = [];\n this.checkedValue = value;\n this.syncMenuState();\n }\n },\n syncMenuState: function syncMenuState() {\n var multiple = this.multiple,\n checkStrictly = this.checkStrictly;\n\n this.syncActivePath();\n multiple && this.syncMultiCheckState();\n checkStrictly && this.calculateCheckedNodePaths();\n this.$nextTick(this.scrollIntoView);\n },\n syncMultiCheckState: function syncMultiCheckState() {\n var _this = this;\n\n var nodes = this.getFlattedNodes(this.leafOnly);\n\n nodes.forEach(function (node) {\n node.syncCheckState(_this.checkedValue);\n });\n },\n isEmptyValue: function isEmptyValue(val) {\n var multiple = this.multiple,\n config = this.config;\n var emitPath = config.emitPath;\n\n if (multiple || emitPath) {\n return Object(util_[\"isEmpty\"])(val);\n }\n return false;\n },\n syncActivePath: function syncActivePath() {\n var _this2 = this;\n\n var store = this.store,\n multiple = this.multiple,\n activePath = this.activePath,\n checkedValue = this.checkedValue;\n\n\n if (!Object(util_[\"isEmpty\"])(activePath)) {\n var nodes = activePath.map(function (node) {\n return _this2.getNodeByValue(node.getValue());\n });\n this.expandNodes(nodes);\n } else if (!this.isEmptyValue(checkedValue)) {\n var value = multiple ? checkedValue[0] : checkedValue;\n var checkedNode = this.getNodeByValue(value) || {};\n var _nodes = (checkedNode.pathNodes || []).slice(0, -1);\n this.expandNodes(_nodes);\n } else {\n this.activePath = [];\n this.menus = [store.getNodes()];\n }\n },\n expandNodes: function expandNodes(nodes) {\n var _this3 = this;\n\n nodes.forEach(function (node) {\n return _this3.handleExpand(node, true /* silent */);\n });\n },\n calculateCheckedNodePaths: function calculateCheckedNodePaths() {\n var _this4 = this;\n\n var checkedValue = this.checkedValue,\n multiple = this.multiple;\n\n var checkedValues = multiple ? Object(util_[\"coerceTruthyValueToArray\"])(checkedValue) : [checkedValue];\n this.checkedNodePaths = checkedValues.map(function (v) {\n var checkedNode = _this4.getNodeByValue(v);\n return checkedNode ? checkedNode.pathNodes : [];\n });\n },\n handleKeyDown: function handleKeyDown(e) {\n var target = e.target,\n keyCode = e.keyCode;\n\n\n switch (keyCode) {\n case KeyCode.up:\n var prev = getSibling(target, -1);\n focusNode(prev);\n break;\n case KeyCode.down:\n var next = getSibling(target, 1);\n focusNode(next);\n break;\n case KeyCode.left:\n var preMenu = this.$refs.menu[getMenuIndex(target) - 1];\n if (preMenu) {\n var expandedNode = preMenu.$el.querySelector('.el-cascader-node[aria-expanded=\"true\"]');\n focusNode(expandedNode);\n }\n break;\n case KeyCode.right:\n var nextMenu = this.$refs.menu[getMenuIndex(target) + 1];\n if (nextMenu) {\n var firstNode = nextMenu.$el.querySelector('.el-cascader-node[tabindex=\"-1\"]');\n focusNode(firstNode);\n }\n break;\n case KeyCode.enter:\n checkNode(target);\n break;\n case KeyCode.esc:\n case KeyCode.tab:\n this.$emit('close');\n break;\n default:\n return;\n }\n },\n handleExpand: function handleExpand(node, silent) {\n var activePath = this.activePath;\n var level = node.level;\n\n var path = activePath.slice(0, level - 1);\n var menus = this.menus.slice(0, level);\n\n if (!node.isLeaf) {\n path.push(node);\n menus.push(node.children);\n }\n\n this.activePath = path;\n this.menus = menus;\n\n if (!silent) {\n var pathValues = path.map(function (node) {\n return node.getValue();\n });\n var activePathValues = activePath.map(function (node) {\n return node.getValue();\n });\n if (!Object(util_[\"valueEquals\"])(pathValues, activePathValues)) {\n this.$emit('active-item-change', pathValues); // Deprecated\n this.$emit('expand-change', pathValues);\n }\n }\n },\n handleCheckChange: function handleCheckChange(value) {\n this.checkedValue = value;\n },\n lazyLoad: function lazyLoad(node, onFullfiled) {\n var _this5 = this;\n\n var config = this.config;\n\n if (!node) {\n node = node || { root: true, level: 0 };\n this.store = new src_store([], config);\n this.menus = [this.store.getNodes()];\n }\n node.loading = true;\n var resolve = function resolve(dataList) {\n var parent = node.root ? null : node;\n dataList && dataList.length && _this5.store.appendNodes(dataList, parent);\n node.loading = false;\n node.loaded = true;\n\n // dispose default value on lazy load mode\n if (Array.isArray(_this5.checkedValue)) {\n var nodeValue = _this5.checkedValue[_this5.loadCount++];\n var valueKey = _this5.config.value;\n var leafKey = _this5.config.leaf;\n\n if (Array.isArray(dataList) && dataList.filter(function (item) {\n return item[valueKey] === nodeValue;\n }).length > 0) {\n var checkedNode = _this5.store.getNodeByValue(nodeValue);\n\n if (!checkedNode.data[leafKey]) {\n _this5.lazyLoad(checkedNode, function () {\n _this5.handleExpand(checkedNode);\n });\n }\n\n if (_this5.loadCount === _this5.checkedValue.length) {\n _this5.$parent.computePresentText();\n }\n }\n }\n\n onFullfiled && onFullfiled(dataList);\n };\n config.lazyLoad(node, resolve);\n },\n\n\n /**\n * public methods\n */\n calculateMultiCheckedValue: function calculateMultiCheckedValue() {\n this.checkedValue = this.getCheckedNodes(this.leafOnly).map(function (node) {\n return node.getValueByOption();\n });\n },\n scrollIntoView: function scrollIntoView() {\n if (this.$isServer) return;\n\n var menus = this.$refs.menu || [];\n menus.forEach(function (menu) {\n var menuElement = menu.$el;\n if (menuElement) {\n var container = menuElement.querySelector('.el-scrollbar__wrap');\n var activeNode = menuElement.querySelector('.el-cascader-node.is-active') || menuElement.querySelector('.el-cascader-node.in-active-path');\n scroll_into_view_default()(container, activeNode);\n }\n });\n },\n getNodeByValue: function getNodeByValue(val) {\n return this.store.getNodeByValue(val);\n },\n getFlattedNodes: function getFlattedNodes(leafOnly) {\n var cached = !this.config.lazy;\n return this.store.getFlattedNodes(leafOnly, cached);\n },\n getCheckedNodes: function getCheckedNodes(leafOnly) {\n var checkedValue = this.checkedValue,\n multiple = this.multiple;\n\n if (multiple) {\n var nodes = this.getFlattedNodes(leafOnly);\n return nodes.filter(function (node) {\n return node.checked;\n });\n } else {\n return this.isEmptyValue(checkedValue) ? [] : [this.getNodeByValue(checkedValue)];\n }\n },\n clearCheckedNodes: function clearCheckedNodes() {\n var config = this.config,\n leafOnly = this.leafOnly;\n var multiple = config.multiple,\n emitPath = config.emitPath;\n\n if (multiple) {\n this.getCheckedNodes(leafOnly).filter(function (node) {\n return !node.isDisabled;\n }).forEach(function (node) {\n return node.doCheck(false);\n });\n this.calculateMultiCheckedValue();\n } else {\n this.checkedValue = emitPath ? [] : null;\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-panel.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_cascader_panelvue_type_script_lang_js_ = (cascader_panelvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-panel.vue\n\n\n\n\n\n/* normalize component */\n\nvar cascader_panel_component = Object(componentNormalizer[\"a\" /* default */])(\n src_cascader_panelvue_type_script_lang_js_,\n cascader_panelvue_type_template_id_34932346_render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var cascader_panel_api; }\ncascader_panel_component.options.__file = \"packages/cascader-panel/src/cascader-panel.vue\"\n/* harmony default export */ var cascader_panel = (cascader_panel_component.exports);\n// CONCATENATED MODULE: ./packages/cascader-panel/index.js\n\n\n/* istanbul ignore next */\ncascader_panel.install = function (Vue) {\n Vue.component(cascader_panel.name, cascader_panel);\n};\n\n/* harmony default export */ var packages_cascader_panel = __webpack_exports__[\"default\"] = (cascader_panel);\n\n/***/ }),\n\n/***/ 9:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/merge\");\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 93);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/emitter\");\n\n/***/ }),\n\n/***/ 93:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox-group.vue?vue&type=template&id=7289a290&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-checkbox-group\",\n attrs: { role: \"group\", \"aria-label\": \"checkbox-group\" }\n },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox-group.vue?vue&type=template&id=7289a290&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __webpack_require__(4);\nvar emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox-group.vue?vue&type=script&lang=js&\n\n\n\n/* harmony default export */ var checkbox_groupvue_type_script_lang_js_ = ({\n name: 'ElCheckboxGroup',\n\n componentName: 'ElCheckboxGroup',\n\n mixins: [emitter_default.a],\n\n inject: {\n elFormItem: {\n default: ''\n }\n },\n\n props: {\n value: {},\n disabled: Boolean,\n min: Number,\n max: Number,\n size: String,\n fill: String,\n textColor: String\n },\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n checkboxGroupSize: function checkboxGroupSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n }\n },\n\n watch: {\n value: function value(_value) {\n this.dispatch('ElFormItem', 'el.form.change', [_value]);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox-group.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_checkbox_groupvue_type_script_lang_js_ = (checkbox_groupvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox-group.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_checkbox_groupvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/checkbox/src/checkbox-group.vue\"\n/* harmony default export */ var checkbox_group = (component.exports);\n// CONCATENATED MODULE: ./packages/checkbox-group/index.js\n\n\n/* istanbul ignore next */\ncheckbox_group.install = function (Vue) {\n Vue.component(checkbox_group.name, checkbox_group);\n};\n\n/* harmony default export */ var packages_checkbox_group = __webpack_exports__[\"default\"] = (checkbox_group);\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 91);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/emitter\");\n\n/***/ }),\n\n/***/ 91:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox.vue?vue&type=template&id=d0387074&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"label\",\n {\n staticClass: \"el-checkbox\",\n class: [\n _vm.border && _vm.checkboxSize\n ? \"el-checkbox--\" + _vm.checkboxSize\n : \"\",\n { \"is-disabled\": _vm.isDisabled },\n { \"is-bordered\": _vm.border },\n { \"is-checked\": _vm.isChecked }\n ],\n attrs: { id: _vm.id }\n },\n [\n _c(\n \"span\",\n {\n staticClass: \"el-checkbox__input\",\n class: {\n \"is-disabled\": _vm.isDisabled,\n \"is-checked\": _vm.isChecked,\n \"is-indeterminate\": _vm.indeterminate,\n \"is-focus\": _vm.focus\n },\n attrs: {\n tabindex: _vm.indeterminate ? 0 : false,\n role: _vm.indeterminate ? \"checkbox\" : false,\n \"aria-checked\": _vm.indeterminate ? \"mixed\" : false\n }\n },\n [\n _c(\"span\", { staticClass: \"el-checkbox__inner\" }),\n _vm.trueLabel || _vm.falseLabel\n ? _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.model,\n expression: \"model\"\n }\n ],\n staticClass: \"el-checkbox__original\",\n attrs: {\n type: \"checkbox\",\n \"aria-hidden\": _vm.indeterminate ? \"true\" : \"false\",\n name: _vm.name,\n disabled: _vm.isDisabled,\n \"true-value\": _vm.trueLabel,\n \"false-value\": _vm.falseLabel\n },\n domProps: {\n checked: Array.isArray(_vm.model)\n ? _vm._i(_vm.model, null) > -1\n : _vm._q(_vm.model, _vm.trueLabel)\n },\n on: {\n change: [\n function($event) {\n var $$a = _vm.model,\n $$el = $event.target,\n $$c = $$el.checked ? _vm.trueLabel : _vm.falseLabel\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.model = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.model = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.model = $$c\n }\n },\n _vm.handleChange\n ],\n focus: function($event) {\n _vm.focus = true\n },\n blur: function($event) {\n _vm.focus = false\n }\n }\n })\n : _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.model,\n expression: \"model\"\n }\n ],\n staticClass: \"el-checkbox__original\",\n attrs: {\n type: \"checkbox\",\n \"aria-hidden\": _vm.indeterminate ? \"true\" : \"false\",\n disabled: _vm.isDisabled,\n name: _vm.name\n },\n domProps: {\n value: _vm.label,\n checked: Array.isArray(_vm.model)\n ? _vm._i(_vm.model, _vm.label) > -1\n : _vm.model\n },\n on: {\n change: [\n function($event) {\n var $$a = _vm.model,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = _vm.label,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.model = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.model = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.model = $$c\n }\n },\n _vm.handleChange\n ],\n focus: function($event) {\n _vm.focus = true\n },\n blur: function($event) {\n _vm.focus = false\n }\n }\n })\n ]\n ),\n _vm.$slots.default || _vm.label\n ? _c(\n \"span\",\n { staticClass: \"el-checkbox__label\" },\n [\n _vm._t(\"default\"),\n !_vm.$slots.default ? [_vm._v(_vm._s(_vm.label))] : _vm._e()\n ],\n 2\n )\n : _vm._e()\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue?vue&type=template&id=d0387074&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __webpack_require__(4);\nvar emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var checkboxvue_type_script_lang_js_ = ({\n name: 'ElCheckbox',\n\n mixins: [emitter_default.a],\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n componentName: 'ElCheckbox',\n\n data: function data() {\n return {\n selfModel: false,\n focus: false,\n isLimitExceeded: false\n };\n },\n\n\n computed: {\n model: {\n get: function get() {\n return this.isGroup ? this.store : this.value !== undefined ? this.value : this.selfModel;\n },\n set: function set(val) {\n if (this.isGroup) {\n this.isLimitExceeded = false;\n this._checkboxGroup.min !== undefined && val.length < this._checkboxGroup.min && (this.isLimitExceeded = true);\n\n this._checkboxGroup.max !== undefined && val.length > this._checkboxGroup.max && (this.isLimitExceeded = true);\n\n this.isLimitExceeded === false && this.dispatch('ElCheckboxGroup', 'input', [val]);\n } else {\n this.$emit('input', val);\n this.selfModel = val;\n }\n }\n },\n\n isChecked: function isChecked() {\n if ({}.toString.call(this.model) === '[object Boolean]') {\n return this.model;\n } else if (Array.isArray(this.model)) {\n return this.model.indexOf(this.label) > -1;\n } else if (this.model !== null && this.model !== undefined) {\n return this.model === this.trueLabel;\n }\n },\n isGroup: function isGroup() {\n var parent = this.$parent;\n while (parent) {\n if (parent.$options.componentName !== 'ElCheckboxGroup') {\n parent = parent.$parent;\n } else {\n this._checkboxGroup = parent;\n return true;\n }\n }\n return false;\n },\n store: function store() {\n return this._checkboxGroup ? this._checkboxGroup.value : this.value;\n },\n\n\n /* used to make the isDisabled judgment under max/min props */\n isLimitDisabled: function isLimitDisabled() {\n var _checkboxGroup = this._checkboxGroup,\n max = _checkboxGroup.max,\n min = _checkboxGroup.min;\n\n return !!(max || min) && this.model.length >= max && !this.isChecked || this.model.length <= min && this.isChecked;\n },\n isDisabled: function isDisabled() {\n return this.isGroup ? this._checkboxGroup.disabled || this.disabled || (this.elForm || {}).disabled || this.isLimitDisabled : this.disabled || (this.elForm || {}).disabled;\n },\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n checkboxSize: function checkboxSize() {\n var temCheckboxSize = this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n return this.isGroup ? this._checkboxGroup.checkboxGroupSize || temCheckboxSize : temCheckboxSize;\n }\n },\n\n props: {\n value: {},\n label: {},\n indeterminate: Boolean,\n disabled: Boolean,\n checked: Boolean,\n name: String,\n trueLabel: [String, Number],\n falseLabel: [String, Number],\n id: String, /* 当indeterminate为真时,为controls提供相关连的checkbox的id,表明元素间的控制关系*/\n controls: String, /* 当indeterminate为真时,为controls提供相关连的checkbox的id,表明元素间的控制关系*/\n border: Boolean,\n size: String\n },\n\n methods: {\n addToStore: function addToStore() {\n if (Array.isArray(this.model) && this.model.indexOf(this.label) === -1) {\n this.model.push(this.label);\n } else {\n this.model = this.trueLabel || true;\n }\n },\n handleChange: function handleChange(ev) {\n var _this = this;\n\n if (this.isLimitExceeded) return;\n var value = void 0;\n if (ev.target.checked) {\n value = this.trueLabel === undefined ? true : this.trueLabel;\n } else {\n value = this.falseLabel === undefined ? false : this.falseLabel;\n }\n this.$emit('change', value, ev);\n this.$nextTick(function () {\n if (_this.isGroup) {\n _this.dispatch('ElCheckboxGroup', 'change', [_this._checkboxGroup.value]);\n }\n });\n }\n },\n\n created: function created() {\n this.checked && this.addToStore();\n },\n mounted: function mounted() {\n // 为indeterminate元素 添加aria-controls 属性\n if (this.indeterminate) {\n this.$el.setAttribute('aria-controls', this.controls);\n }\n },\n\n\n watch: {\n value: function value(_value) {\n this.dispatch('ElFormItem', 'el.form.change', _value);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_checkboxvue_type_script_lang_js_ = (checkboxvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_checkboxvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/checkbox/src/checkbox.vue\"\n/* harmony default export */ var src_checkbox = (component.exports);\n// CONCATENATED MODULE: ./packages/checkbox/index.js\n\n\n/* istanbul ignore next */\nsrc_checkbox.install = function (Vue) {\n Vue.component(src_checkbox.name, src_checkbox);\n};\n\n/* harmony default export */ var packages_checkbox = __webpack_exports__[\"default\"] = (src_checkbox);\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 46);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/date-util\");\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/dom\");\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/util\");\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/emitter\");\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/locale\");\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/vue-popper\");\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"vue\");\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/merge\");\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/input\");\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/migrating\");\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/clickoutside\");\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/popup\");\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/locale\");\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/button\");\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/checkbox\");\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/resize-event\");\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/types\");\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"throttle-debounce/debounce\");\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/scrollbar\");\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/shared\");\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/date\");\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/transitions/collapse-transition\");\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/vdom\");\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/focus\");\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"babel-helper-vue-jsx-merge-props\");\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"throttle-debounce/throttle\");\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/tooltip\");\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/scroll-into-view\");\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/lodash\");\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/button-group\");\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/tag\");\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/scrollbar-width\");\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/checkbox-group\");\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/after-leave\");\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/progress\");\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/aria-utils\");\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"throttle-debounce\");\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/select\");\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/option\");\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"normalize-wheel\");\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/aria-dialog\");\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"async-validator\");\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/input-number\");\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/cascader-panel\");\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/radio\");\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/popover\");\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(47);\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/pagination/src/pager.vue?vue&type=template&id=7274f267&\nvar pagervue_type_template_id_7274f267_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"ul\",\n { staticClass: \"el-pager\", on: { click: _vm.onPagerClick } },\n [\n _vm.pageCount > 0\n ? _c(\n \"li\",\n {\n staticClass: \"number\",\n class: { active: _vm.currentPage === 1, disabled: _vm.disabled }\n },\n [_vm._v(\"1\")]\n )\n : _vm._e(),\n _vm.showPrevMore\n ? _c(\"li\", {\n staticClass: \"el-icon more btn-quickprev\",\n class: [_vm.quickprevIconClass, { disabled: _vm.disabled }],\n on: {\n mouseenter: function($event) {\n _vm.onMouseenter(\"left\")\n },\n mouseleave: function($event) {\n _vm.quickprevIconClass = \"el-icon-more\"\n }\n }\n })\n : _vm._e(),\n _vm._l(_vm.pagers, function(pager) {\n return _c(\n \"li\",\n {\n key: pager,\n staticClass: \"number\",\n class: { active: _vm.currentPage === pager, disabled: _vm.disabled }\n },\n [_vm._v(_vm._s(pager))]\n )\n }),\n _vm.showNextMore\n ? _c(\"li\", {\n staticClass: \"el-icon more btn-quicknext\",\n class: [_vm.quicknextIconClass, { disabled: _vm.disabled }],\n on: {\n mouseenter: function($event) {\n _vm.onMouseenter(\"right\")\n },\n mouseleave: function($event) {\n _vm.quicknextIconClass = \"el-icon-more\"\n }\n }\n })\n : _vm._e(),\n _vm.pageCount > 1\n ? _c(\n \"li\",\n {\n staticClass: \"number\",\n class: {\n active: _vm.currentPage === _vm.pageCount,\n disabled: _vm.disabled\n }\n },\n [_vm._v(_vm._s(_vm.pageCount))]\n )\n : _vm._e()\n ],\n 2\n )\n}\nvar staticRenderFns = []\npagervue_type_template_id_7274f267_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/pagination/src/pager.vue?vue&type=template&id=7274f267&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/pagination/src/pager.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var pagervue_type_script_lang_js_ = ({\n name: 'ElPager',\n\n props: {\n currentPage: Number,\n\n pageCount: Number,\n\n pagerCount: Number,\n\n disabled: Boolean\n },\n\n watch: {\n showPrevMore: function showPrevMore(val) {\n if (!val) this.quickprevIconClass = 'el-icon-more';\n },\n showNextMore: function showNextMore(val) {\n if (!val) this.quicknextIconClass = 'el-icon-more';\n }\n },\n\n methods: {\n onPagerClick: function onPagerClick(event) {\n var target = event.target;\n if (target.tagName === 'UL' || this.disabled) {\n return;\n }\n\n var newPage = Number(event.target.textContent);\n var pageCount = this.pageCount;\n var currentPage = this.currentPage;\n var pagerCountOffset = this.pagerCount - 2;\n\n if (target.className.indexOf('more') !== -1) {\n if (target.className.indexOf('quickprev') !== -1) {\n newPage = currentPage - pagerCountOffset;\n } else if (target.className.indexOf('quicknext') !== -1) {\n newPage = currentPage + pagerCountOffset;\n }\n }\n\n /* istanbul ignore if */\n if (!isNaN(newPage)) {\n if (newPage < 1) {\n newPage = 1;\n }\n\n if (newPage > pageCount) {\n newPage = pageCount;\n }\n }\n\n if (newPage !== currentPage) {\n this.$emit('change', newPage);\n }\n },\n onMouseenter: function onMouseenter(direction) {\n if (this.disabled) return;\n if (direction === 'left') {\n this.quickprevIconClass = 'el-icon-d-arrow-left';\n } else {\n this.quicknextIconClass = 'el-icon-d-arrow-right';\n }\n }\n },\n\n computed: {\n pagers: function pagers() {\n var pagerCount = this.pagerCount;\n var halfPagerCount = (pagerCount - 1) / 2;\n\n var currentPage = Number(this.currentPage);\n var pageCount = Number(this.pageCount);\n\n var showPrevMore = false;\n var showNextMore = false;\n\n if (pageCount > pagerCount) {\n if (currentPage > pagerCount - halfPagerCount) {\n showPrevMore = true;\n }\n\n if (currentPage < pageCount - halfPagerCount) {\n showNextMore = true;\n }\n }\n\n var array = [];\n\n if (showPrevMore && !showNextMore) {\n var startPage = pageCount - (pagerCount - 2);\n for (var i = startPage; i < pageCount; i++) {\n array.push(i);\n }\n } else if (!showPrevMore && showNextMore) {\n for (var _i = 2; _i < pagerCount; _i++) {\n array.push(_i);\n }\n } else if (showPrevMore && showNextMore) {\n var offset = Math.floor(pagerCount / 2) - 1;\n for (var _i2 = currentPage - offset; _i2 <= currentPage + offset; _i2++) {\n array.push(_i2);\n }\n } else {\n for (var _i3 = 2; _i3 < pageCount; _i3++) {\n array.push(_i3);\n }\n }\n\n this.showPrevMore = showPrevMore;\n this.showNextMore = showNextMore;\n\n return array;\n }\n },\n\n data: function data() {\n return {\n current: null,\n showPrevMore: false,\n showNextMore: false,\n quicknextIconClass: 'el-icon-more',\n quickprevIconClass: 'el-icon-more'\n };\n }\n});\n// CONCATENATED MODULE: ./packages/pagination/src/pager.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_pagervue_type_script_lang_js_ = (pagervue_type_script_lang_js_); \n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n// CONCATENATED MODULE: ./packages/pagination/src/pager.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = normalizeComponent(\n src_pagervue_type_script_lang_js_,\n pagervue_type_template_id_7274f267_render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/pagination/src/pager.vue\"\n/* harmony default export */ var pager = (component.exports);\n// EXTERNAL MODULE: external \"element-ui/lib/select\"\nvar select_ = __webpack_require__(37);\nvar select_default = /*#__PURE__*/__webpack_require__.n(select_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/option\"\nvar option_ = __webpack_require__(38);\nvar option_default = /*#__PURE__*/__webpack_require__.n(option_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/input\"\nvar input_ = __webpack_require__(8);\nvar input_default = /*#__PURE__*/__webpack_require__.n(input_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/locale\"\nvar locale_ = __webpack_require__(4);\nvar locale_default = /*#__PURE__*/__webpack_require__.n(locale_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/util\"\nvar util_ = __webpack_require__(2);\n\n// CONCATENATED MODULE: ./packages/pagination/src/pagination.js\n\n\n\n\n\n\n\n/* harmony default export */ var pagination = ({\n name: 'ElPagination',\n\n props: {\n pageSize: {\n type: Number,\n default: 10\n },\n\n small: Boolean,\n\n total: Number,\n\n pageCount: Number,\n\n pagerCount: {\n type: Number,\n validator: function validator(value) {\n return (value | 0) === value && value > 4 && value < 22 && value % 2 === 1;\n },\n\n default: 7\n },\n\n currentPage: {\n type: Number,\n default: 1\n },\n\n layout: {\n default: 'prev, pager, next, jumper, ->, total'\n },\n\n pageSizes: {\n type: Array,\n default: function _default() {\n return [10, 20, 30, 40, 50, 100];\n }\n },\n\n popperClass: String,\n\n prevText: String,\n\n nextText: String,\n\n background: Boolean,\n\n disabled: Boolean,\n\n hideOnSinglePage: Boolean\n },\n\n data: function data() {\n return {\n internalCurrentPage: 1,\n internalPageSize: 0,\n lastEmittedPage: -1,\n userChangePageSize: false\n };\n },\n render: function render(h) {\n var layout = this.layout;\n if (!layout) return null;\n if (this.hideOnSinglePage && (!this.internalPageCount || this.internalPageCount === 1)) return null;\n\n var template = h('div', { 'class': ['el-pagination', {\n 'is-background': this.background,\n 'el-pagination--small': this.small\n }] });\n var TEMPLATE_MAP = {\n prev: h('prev'),\n jumper: h('jumper'),\n pager: h('pager', {\n attrs: { currentPage: this.internalCurrentPage, pageCount: this.internalPageCount, pagerCount: this.pagerCount, disabled: this.disabled },\n on: {\n 'change': this.handleCurrentChange\n }\n }),\n next: h('next'),\n sizes: h('sizes', {\n attrs: { pageSizes: this.pageSizes }\n }),\n slot: h('slot', [this.$slots.default ? this.$slots.default : '']),\n total: h('total')\n };\n var components = layout.split(',').map(function (item) {\n return item.trim();\n });\n var rightWrapper = h('div', { 'class': 'el-pagination__rightwrapper' });\n var haveRightWrapper = false;\n\n template.children = template.children || [];\n rightWrapper.children = rightWrapper.children || [];\n components.forEach(function (compo) {\n if (compo === '->') {\n haveRightWrapper = true;\n return;\n }\n\n if (!haveRightWrapper) {\n template.children.push(TEMPLATE_MAP[compo]);\n } else {\n rightWrapper.children.push(TEMPLATE_MAP[compo]);\n }\n });\n\n if (haveRightWrapper) {\n template.children.unshift(rightWrapper);\n }\n\n return template;\n },\n\n\n components: {\n Prev: {\n render: function render(h) {\n return h(\n 'button',\n {\n attrs: {\n type: 'button',\n\n disabled: this.$parent.disabled || this.$parent.internalCurrentPage <= 1\n },\n 'class': 'btn-prev', on: {\n 'click': this.$parent.prev\n }\n },\n [this.$parent.prevText ? h('span', [this.$parent.prevText]) : h('i', { 'class': 'el-icon el-icon-arrow-left' })]\n );\n }\n },\n\n Next: {\n render: function render(h) {\n return h(\n 'button',\n {\n attrs: {\n type: 'button',\n\n disabled: this.$parent.disabled || this.$parent.internalCurrentPage === this.$parent.internalPageCount || this.$parent.internalPageCount === 0\n },\n 'class': 'btn-next', on: {\n 'click': this.$parent.next\n }\n },\n [this.$parent.nextText ? h('span', [this.$parent.nextText]) : h('i', { 'class': 'el-icon el-icon-arrow-right' })]\n );\n }\n },\n\n Sizes: {\n mixins: [locale_default.a],\n\n props: {\n pageSizes: Array\n },\n\n watch: {\n pageSizes: {\n immediate: true,\n handler: function handler(newVal, oldVal) {\n if (Object(util_[\"valueEquals\"])(newVal, oldVal)) return;\n if (Array.isArray(newVal)) {\n this.$parent.internalPageSize = newVal.indexOf(this.$parent.pageSize) > -1 ? this.$parent.pageSize : this.pageSizes[0];\n }\n }\n }\n },\n\n render: function render(h) {\n var _this = this;\n\n return h(\n 'span',\n { 'class': 'el-pagination__sizes' },\n [h(\n 'el-select',\n {\n attrs: {\n value: this.$parent.internalPageSize,\n popperClass: this.$parent.popperClass || '',\n size: 'mini',\n\n disabled: this.$parent.disabled },\n on: {\n 'input': this.handleChange\n }\n },\n [this.pageSizes.map(function (item) {\n return h('el-option', {\n attrs: {\n value: item,\n label: item + _this.t('el.pagination.pagesize') }\n });\n })]\n )]\n );\n },\n\n\n components: {\n ElSelect: select_default.a,\n ElOption: option_default.a\n },\n\n methods: {\n handleChange: function handleChange(val) {\n if (val !== this.$parent.internalPageSize) {\n this.$parent.internalPageSize = val = parseInt(val, 10);\n this.$parent.userChangePageSize = true;\n this.$parent.$emit('update:pageSize', val);\n this.$parent.$emit('size-change', val);\n }\n }\n }\n },\n\n Jumper: {\n mixins: [locale_default.a],\n\n components: { ElInput: input_default.a },\n\n data: function data() {\n return {\n userInput: null\n };\n },\n\n\n watch: {\n '$parent.internalCurrentPage': function $parentInternalCurrentPage() {\n this.userInput = null;\n }\n },\n\n methods: {\n handleKeyup: function handleKeyup(_ref) {\n var keyCode = _ref.keyCode,\n target = _ref.target;\n\n // Chrome, Safari, Firefox triggers change event on Enter\n // Hack for IE: https://github.com/ElemeFE/element/issues/11710\n // Drop this method when we no longer supports IE\n if (keyCode === 13) {\n this.handleChange(target.value);\n }\n },\n handleInput: function handleInput(value) {\n this.userInput = value;\n },\n handleChange: function handleChange(value) {\n this.$parent.internalCurrentPage = this.$parent.getValidCurrentPage(value);\n this.$parent.emitChange();\n this.userInput = null;\n }\n },\n\n render: function render(h) {\n return h(\n 'span',\n { 'class': 'el-pagination__jump' },\n [this.t('el.pagination.goto'), h('el-input', {\n 'class': 'el-pagination__editor is-in-pagination',\n attrs: { min: 1,\n max: this.$parent.internalPageCount,\n value: this.userInput !== null ? this.userInput : this.$parent.internalCurrentPage,\n type: 'number',\n disabled: this.$parent.disabled\n },\n nativeOn: {\n 'keyup': this.handleKeyup\n },\n on: {\n 'input': this.handleInput,\n 'change': this.handleChange\n }\n }), this.t('el.pagination.pageClassifier')]\n );\n }\n },\n\n Total: {\n mixins: [locale_default.a],\n\n render: function render(h) {\n return typeof this.$parent.total === 'number' ? h(\n 'span',\n { 'class': 'el-pagination__total' },\n [this.t('el.pagination.total', { total: this.$parent.total })]\n ) : '';\n }\n },\n\n Pager: pager\n },\n\n methods: {\n handleCurrentChange: function handleCurrentChange(val) {\n this.internalCurrentPage = this.getValidCurrentPage(val);\n this.userChangePageSize = true;\n this.emitChange();\n },\n prev: function prev() {\n if (this.disabled) return;\n var newVal = this.internalCurrentPage - 1;\n this.internalCurrentPage = this.getValidCurrentPage(newVal);\n this.$emit('prev-click', this.internalCurrentPage);\n this.emitChange();\n },\n next: function next() {\n if (this.disabled) return;\n var newVal = this.internalCurrentPage + 1;\n this.internalCurrentPage = this.getValidCurrentPage(newVal);\n this.$emit('next-click', this.internalCurrentPage);\n this.emitChange();\n },\n getValidCurrentPage: function getValidCurrentPage(value) {\n value = parseInt(value, 10);\n\n var havePageCount = typeof this.internalPageCount === 'number';\n\n var resetValue = void 0;\n if (!havePageCount) {\n if (isNaN(value) || value < 1) resetValue = 1;\n } else {\n if (value < 1) {\n resetValue = 1;\n } else if (value > this.internalPageCount) {\n resetValue = this.internalPageCount;\n }\n }\n\n if (resetValue === undefined && isNaN(value)) {\n resetValue = 1;\n } else if (resetValue === 0) {\n resetValue = 1;\n }\n\n return resetValue === undefined ? value : resetValue;\n },\n emitChange: function emitChange() {\n var _this2 = this;\n\n this.$nextTick(function () {\n if (_this2.internalCurrentPage !== _this2.lastEmittedPage || _this2.userChangePageSize) {\n _this2.$emit('current-change', _this2.internalCurrentPage);\n _this2.lastEmittedPage = _this2.internalCurrentPage;\n _this2.userChangePageSize = false;\n }\n });\n }\n },\n\n computed: {\n internalPageCount: function internalPageCount() {\n if (typeof this.total === 'number') {\n return Math.max(1, Math.ceil(this.total / this.internalPageSize));\n } else if (typeof this.pageCount === 'number') {\n return Math.max(1, this.pageCount);\n }\n return null;\n }\n },\n\n watch: {\n currentPage: {\n immediate: true,\n handler: function handler(val) {\n this.internalCurrentPage = this.getValidCurrentPage(val);\n }\n },\n\n pageSize: {\n immediate: true,\n handler: function handler(val) {\n this.internalPageSize = isNaN(val) ? 10 : val;\n }\n },\n\n internalCurrentPage: {\n immediate: true,\n handler: function handler(newVal) {\n this.$emit('update:currentPage', newVal);\n this.lastEmittedPage = -1;\n }\n },\n\n internalPageCount: function internalPageCount(newVal) {\n /* istanbul ignore if */\n var oldPage = this.internalCurrentPage;\n if (newVal > 0 && oldPage === 0) {\n this.internalCurrentPage = 1;\n } else if (oldPage > newVal) {\n this.internalCurrentPage = newVal === 0 ? 1 : newVal;\n this.userChangePageSize && this.emitChange();\n }\n this.userChangePageSize = false;\n }\n }\n});\n// CONCATENATED MODULE: ./packages/pagination/index.js\n\n\n/* istanbul ignore next */\npagination.install = function (Vue) {\n Vue.component(pagination.name, pagination);\n};\n\n/* harmony default export */ var packages_pagination = (pagination);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/dialog/src/component.vue?vue&type=template&id=60140e62&\nvar componentvue_type_template_id_60140e62_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n {\n attrs: { name: \"dialog-fade\" },\n on: { \"after-enter\": _vm.afterEnter, \"after-leave\": _vm.afterLeave }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-dialog__wrapper\",\n on: {\n click: function($event) {\n if ($event.target !== $event.currentTarget) {\n return null\n }\n return _vm.handleWrapperClick($event)\n }\n }\n },\n [\n _c(\n \"div\",\n {\n key: _vm.key,\n ref: \"dialog\",\n class: [\n \"el-dialog\",\n {\n \"is-fullscreen\": _vm.fullscreen,\n \"el-dialog--center\": _vm.center\n },\n _vm.customClass\n ],\n style: _vm.style,\n attrs: {\n role: \"dialog\",\n \"aria-modal\": \"true\",\n \"aria-label\": _vm.title || \"dialog\"\n }\n },\n [\n _c(\n \"div\",\n { staticClass: \"el-dialog__header\" },\n [\n _vm._t(\"title\", [\n _c(\"span\", { staticClass: \"el-dialog__title\" }, [\n _vm._v(_vm._s(_vm.title))\n ])\n ]),\n _vm.showClose\n ? _c(\n \"button\",\n {\n staticClass: \"el-dialog__headerbtn\",\n attrs: { type: \"button\", \"aria-label\": \"Close\" },\n on: { click: _vm.handleClose }\n },\n [\n _c(\"i\", {\n staticClass:\n \"el-dialog__close el-icon el-icon-close\"\n })\n ]\n )\n : _vm._e()\n ],\n 2\n ),\n _vm.rendered\n ? _c(\n \"div\",\n { staticClass: \"el-dialog__body\" },\n [_vm._t(\"default\")],\n 2\n )\n : _vm._e(),\n _vm.$slots.footer\n ? _c(\n \"div\",\n { staticClass: \"el-dialog__footer\" },\n [_vm._t(\"footer\")],\n 2\n )\n : _vm._e()\n ]\n )\n ]\n )\n ]\n )\n}\nvar componentvue_type_template_id_60140e62_staticRenderFns = []\ncomponentvue_type_template_id_60140e62_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/dialog/src/component.vue?vue&type=template&id=60140e62&\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/popup\"\nvar popup_ = __webpack_require__(11);\nvar popup_default = /*#__PURE__*/__webpack_require__.n(popup_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/migrating\"\nvar migrating_ = __webpack_require__(9);\nvar migrating_default = /*#__PURE__*/__webpack_require__.n(migrating_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __webpack_require__(3);\nvar emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/dialog/src/component.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var componentvue_type_script_lang_js_ = ({\n name: 'ElDialog',\n\n mixins: [popup_default.a, emitter_default.a, migrating_default.a],\n\n props: {\n title: {\n type: String,\n default: ''\n },\n\n modal: {\n type: Boolean,\n default: true\n },\n\n modalAppendToBody: {\n type: Boolean,\n default: true\n },\n\n appendToBody: {\n type: Boolean,\n default: false\n },\n\n lockScroll: {\n type: Boolean,\n default: true\n },\n\n closeOnClickModal: {\n type: Boolean,\n default: true\n },\n\n closeOnPressEscape: {\n type: Boolean,\n default: true\n },\n\n showClose: {\n type: Boolean,\n default: true\n },\n\n width: String,\n\n fullscreen: Boolean,\n\n customClass: {\n type: String,\n default: ''\n },\n\n top: {\n type: String,\n default: '15vh'\n },\n beforeClose: Function,\n center: {\n type: Boolean,\n default: false\n },\n\n destroyOnClose: Boolean\n },\n\n data: function data() {\n return {\n closed: false,\n key: 0\n };\n },\n\n\n watch: {\n visible: function visible(val) {\n var _this = this;\n\n if (val) {\n this.closed = false;\n this.$emit('open');\n this.$el.addEventListener('scroll', this.updatePopper);\n this.$nextTick(function () {\n _this.$refs.dialog.scrollTop = 0;\n });\n if (this.appendToBody) {\n document.body.appendChild(this.$el);\n }\n } else {\n this.$el.removeEventListener('scroll', this.updatePopper);\n if (!this.closed) this.$emit('close');\n if (this.destroyOnClose) {\n this.$nextTick(function () {\n _this.key++;\n });\n }\n }\n }\n },\n\n computed: {\n style: function style() {\n var style = {};\n if (!this.fullscreen) {\n style.marginTop = this.top;\n if (this.width) {\n style.width = this.width;\n }\n }\n return style;\n }\n },\n\n methods: {\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'size': 'size is removed.'\n }\n };\n },\n handleWrapperClick: function handleWrapperClick() {\n if (!this.closeOnClickModal) return;\n this.handleClose();\n },\n handleClose: function handleClose() {\n if (typeof this.beforeClose === 'function') {\n this.beforeClose(this.hide);\n } else {\n this.hide();\n }\n },\n hide: function hide(cancel) {\n if (cancel !== false) {\n this.$emit('update:visible', false);\n this.$emit('close');\n this.closed = true;\n }\n },\n updatePopper: function updatePopper() {\n this.broadcast('ElSelectDropdown', 'updatePopper');\n this.broadcast('ElDropdownMenu', 'updatePopper');\n },\n afterEnter: function afterEnter() {\n this.$emit('opened');\n },\n afterLeave: function afterLeave() {\n this.$emit('closed');\n }\n },\n\n mounted: function mounted() {\n if (this.visible) {\n this.rendered = true;\n this.open();\n if (this.appendToBody) {\n document.body.appendChild(this.$el);\n }\n }\n },\n destroyed: function destroyed() {\n // if appendToBody is true, remove DOM node after destroy\n if (this.appendToBody && this.$el && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/dialog/src/component.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_componentvue_type_script_lang_js_ = (componentvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/dialog/src/component.vue\n\n\n\n\n\n/* normalize component */\n\nvar component_component = normalizeComponent(\n src_componentvue_type_script_lang_js_,\n componentvue_type_template_id_60140e62_render,\n componentvue_type_template_id_60140e62_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var component_api; }\ncomponent_component.options.__file = \"packages/dialog/src/component.vue\"\n/* harmony default export */ var src_component = (component_component.exports);\n// CONCATENATED MODULE: ./packages/dialog/index.js\n\n\n/* istanbul ignore next */\nsrc_component.install = function (Vue) {\n Vue.component(src_component.name, src_component);\n};\n\n/* harmony default export */ var dialog = (src_component);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/autocomplete/src/autocomplete.vue?vue&type=template&id=152f2ee6&\nvar autocompletevue_type_template_id_152f2ee6_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"clickoutside\",\n rawName: \"v-clickoutside\",\n value: _vm.close,\n expression: \"close\"\n }\n ],\n staticClass: \"el-autocomplete\",\n attrs: {\n \"aria-haspopup\": \"listbox\",\n role: \"combobox\",\n \"aria-expanded\": _vm.suggestionVisible,\n \"aria-owns\": _vm.id\n }\n },\n [\n _c(\n \"el-input\",\n _vm._b(\n {\n ref: \"input\",\n on: {\n input: _vm.handleInput,\n change: _vm.handleChange,\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n clear: _vm.handleClear\n },\n nativeOn: {\n keydown: [\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n _vm.highlight(_vm.highlightedIndex - 1)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n _vm.highlight(_vm.highlightedIndex + 1)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.handleKeyEnter($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")\n ) {\n return null\n }\n return _vm.close($event)\n }\n ]\n }\n },\n \"el-input\",\n [_vm.$props, _vm.$attrs],\n false\n ),\n [\n _vm.$slots.prepend\n ? _c(\"template\", { slot: \"prepend\" }, [_vm._t(\"prepend\")], 2)\n : _vm._e(),\n _vm.$slots.append\n ? _c(\"template\", { slot: \"append\" }, [_vm._t(\"append\")], 2)\n : _vm._e(),\n _vm.$slots.prefix\n ? _c(\"template\", { slot: \"prefix\" }, [_vm._t(\"prefix\")], 2)\n : _vm._e(),\n _vm.$slots.suffix\n ? _c(\"template\", { slot: \"suffix\" }, [_vm._t(\"suffix\")], 2)\n : _vm._e()\n ],\n 2\n ),\n _c(\n \"el-autocomplete-suggestions\",\n {\n ref: \"suggestions\",\n class: [_vm.popperClass ? _vm.popperClass : \"\"],\n attrs: {\n \"visible-arrow\": \"\",\n \"popper-options\": _vm.popperOptions,\n \"append-to-body\": _vm.popperAppendToBody,\n placement: _vm.placement,\n id: _vm.id\n }\n },\n _vm._l(_vm.suggestions, function(item, index) {\n return _c(\n \"li\",\n {\n key: index,\n class: { highlighted: _vm.highlightedIndex === index },\n attrs: {\n id: _vm.id + \"-item-\" + index,\n role: \"option\",\n \"aria-selected\": _vm.highlightedIndex === index\n },\n on: {\n click: function($event) {\n _vm.select(item)\n }\n }\n },\n [\n _vm._t(\n \"default\",\n [\n _vm._v(\"\\n \" + _vm._s(item[_vm.valueKey]) + \"\\n \")\n ],\n { item: item }\n )\n ],\n 2\n )\n }),\n 0\n )\n ],\n 1\n )\n}\nvar autocompletevue_type_template_id_152f2ee6_staticRenderFns = []\nautocompletevue_type_template_id_152f2ee6_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete.vue?vue&type=template&id=152f2ee6&\n\n// EXTERNAL MODULE: external \"throttle-debounce/debounce\"\nvar debounce_ = __webpack_require__(17);\nvar debounce_default = /*#__PURE__*/__webpack_require__.n(debounce_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/clickoutside\"\nvar clickoutside_ = __webpack_require__(10);\nvar clickoutside_default = /*#__PURE__*/__webpack_require__.n(clickoutside_);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/autocomplete/src/autocomplete-suggestions.vue?vue&type=template&id=cd10dcf0&\nvar autocomplete_suggestionsvue_type_template_id_cd10dcf0_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n { attrs: { name: \"el-zoom-in-top\" }, on: { \"after-leave\": _vm.doDestroy } },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showPopper,\n expression: \"showPopper\"\n }\n ],\n staticClass: \"el-autocomplete-suggestion el-popper\",\n class: {\n \"is-loading\": !_vm.parent.hideLoading && _vm.parent.loading\n },\n style: { width: _vm.dropdownWidth },\n attrs: { role: \"region\" }\n },\n [\n _c(\n \"el-scrollbar\",\n {\n attrs: {\n tag: \"ul\",\n \"wrap-class\": \"el-autocomplete-suggestion__wrap\",\n \"view-class\": \"el-autocomplete-suggestion__list\"\n }\n },\n [\n !_vm.parent.hideLoading && _vm.parent.loading\n ? _c(\"li\", [_c(\"i\", { staticClass: \"el-icon-loading\" })])\n : _vm._t(\"default\")\n ],\n 2\n )\n ],\n 1\n )\n ]\n )\n}\nvar autocomplete_suggestionsvue_type_template_id_cd10dcf0_staticRenderFns = []\nautocomplete_suggestionsvue_type_template_id_cd10dcf0_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete-suggestions.vue?vue&type=template&id=cd10dcf0&\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/vue-popper\"\nvar vue_popper_ = __webpack_require__(5);\nvar vue_popper_default = /*#__PURE__*/__webpack_require__.n(vue_popper_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/scrollbar\"\nvar scrollbar_ = __webpack_require__(18);\nvar scrollbar_default = /*#__PURE__*/__webpack_require__.n(scrollbar_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/autocomplete/src/autocomplete-suggestions.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var autocomplete_suggestionsvue_type_script_lang_js_ = ({\n components: { ElScrollbar: scrollbar_default.a },\n mixins: [vue_popper_default.a, emitter_default.a],\n\n componentName: 'ElAutocompleteSuggestions',\n\n data: function data() {\n return {\n parent: this.$parent,\n dropdownWidth: ''\n };\n },\n\n\n props: {\n options: {\n default: function _default() {\n return {\n gpuAcceleration: false\n };\n }\n },\n id: String\n },\n\n methods: {\n select: function select(item) {\n this.dispatch('ElAutocomplete', 'item-click', item);\n }\n },\n\n updated: function updated() {\n var _this = this;\n\n this.$nextTick(function (_) {\n _this.popperJS && _this.updatePopper();\n });\n },\n mounted: function mounted() {\n this.$parent.popperElm = this.popperElm = this.$el;\n this.referenceElm = this.$parent.$refs.input.$refs.input || this.$parent.$refs.input.$refs.textarea;\n this.referenceList = this.$el.querySelector('.el-autocomplete-suggestion__list');\n this.referenceList.setAttribute('role', 'listbox');\n this.referenceList.setAttribute('id', this.id);\n },\n created: function created() {\n var _this2 = this;\n\n this.$on('visible', function (val, inputWidth) {\n _this2.dropdownWidth = inputWidth + 'px';\n _this2.showPopper = val;\n });\n }\n});\n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete-suggestions.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_autocomplete_suggestionsvue_type_script_lang_js_ = (autocomplete_suggestionsvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete-suggestions.vue\n\n\n\n\n\n/* normalize component */\n\nvar autocomplete_suggestions_component = normalizeComponent(\n src_autocomplete_suggestionsvue_type_script_lang_js_,\n autocomplete_suggestionsvue_type_template_id_cd10dcf0_render,\n autocomplete_suggestionsvue_type_template_id_cd10dcf0_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var autocomplete_suggestions_api; }\nautocomplete_suggestions_component.options.__file = \"packages/autocomplete/src/autocomplete-suggestions.vue\"\n/* harmony default export */ var autocomplete_suggestions = (autocomplete_suggestions_component.exports);\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/focus\"\nvar focus_ = __webpack_require__(23);\nvar focus_default = /*#__PURE__*/__webpack_require__.n(focus_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/autocomplete/src/autocomplete.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var autocompletevue_type_script_lang_js_ = ({\n name: 'ElAutocomplete',\n\n mixins: [emitter_default.a, focus_default()('input'), migrating_default.a],\n\n inheritAttrs: false,\n\n componentName: 'ElAutocomplete',\n\n components: {\n ElInput: input_default.a,\n ElAutocompleteSuggestions: autocomplete_suggestions\n },\n\n directives: { Clickoutside: clickoutside_default.a },\n\n props: {\n valueKey: {\n type: String,\n default: 'value'\n },\n popperClass: String,\n popperOptions: Object,\n placeholder: String,\n clearable: {\n type: Boolean,\n default: false\n },\n disabled: Boolean,\n name: String,\n size: String,\n value: String,\n maxlength: Number,\n minlength: Number,\n autofocus: Boolean,\n fetchSuggestions: Function,\n triggerOnFocus: {\n type: Boolean,\n default: true\n },\n customItem: String,\n selectWhenUnmatched: {\n type: Boolean,\n default: false\n },\n prefixIcon: String,\n suffixIcon: String,\n label: String,\n debounce: {\n type: Number,\n default: 300\n },\n placement: {\n type: String,\n default: 'bottom-start'\n },\n hideLoading: Boolean,\n popperAppendToBody: {\n type: Boolean,\n default: true\n },\n highlightFirstItem: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n activated: false,\n suggestions: [],\n loading: false,\n highlightedIndex: -1,\n suggestionDisabled: false\n };\n },\n\n computed: {\n suggestionVisible: function suggestionVisible() {\n var suggestions = this.suggestions;\n var isValidData = Array.isArray(suggestions) && suggestions.length > 0;\n return (isValidData || this.loading) && this.activated;\n },\n id: function id() {\n return 'el-autocomplete-' + Object(util_[\"generateId\"])();\n }\n },\n watch: {\n suggestionVisible: function suggestionVisible(val) {\n var $input = this.getInput();\n if ($input) {\n this.broadcast('ElAutocompleteSuggestions', 'visible', [val, $input.offsetWidth]);\n }\n }\n },\n methods: {\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'custom-item': 'custom-item is removed, use scoped slot instead.',\n 'props': 'props is removed, use value-key instead.'\n }\n };\n },\n getData: function getData(queryString) {\n var _this = this;\n\n if (this.suggestionDisabled) {\n return;\n }\n this.loading = true;\n this.fetchSuggestions(queryString, function (suggestions) {\n _this.loading = false;\n if (_this.suggestionDisabled) {\n return;\n }\n if (Array.isArray(suggestions)) {\n _this.suggestions = suggestions;\n _this.highlightedIndex = _this.highlightFirstItem ? 0 : -1;\n } else {\n console.error('[Element Error][Autocomplete]autocomplete suggestions must be an array');\n }\n });\n },\n handleInput: function handleInput(value) {\n this.$emit('input', value);\n this.suggestionDisabled = false;\n if (!this.triggerOnFocus && !value) {\n this.suggestionDisabled = true;\n this.suggestions = [];\n return;\n }\n this.debouncedGetData(value);\n },\n handleChange: function handleChange(value) {\n this.$emit('change', value);\n },\n handleFocus: function handleFocus(event) {\n this.activated = true;\n this.$emit('focus', event);\n if (this.triggerOnFocus) {\n this.debouncedGetData(this.value);\n }\n },\n handleBlur: function handleBlur(event) {\n this.$emit('blur', event);\n },\n handleClear: function handleClear() {\n this.activated = false;\n this.$emit('clear');\n },\n close: function close(e) {\n this.activated = false;\n },\n handleKeyEnter: function handleKeyEnter(e) {\n var _this2 = this;\n\n if (this.suggestionVisible && this.highlightedIndex >= 0 && this.highlightedIndex < this.suggestions.length) {\n e.preventDefault();\n this.select(this.suggestions[this.highlightedIndex]);\n } else if (this.selectWhenUnmatched) {\n this.$emit('select', { value: this.value });\n this.$nextTick(function (_) {\n _this2.suggestions = [];\n _this2.highlightedIndex = -1;\n });\n }\n },\n select: function select(item) {\n var _this3 = this;\n\n this.$emit('input', item[this.valueKey]);\n this.$emit('select', item);\n this.$nextTick(function (_) {\n _this3.suggestions = [];\n _this3.highlightedIndex = -1;\n });\n },\n highlight: function highlight(index) {\n if (!this.suggestionVisible || this.loading) {\n return;\n }\n if (index < 0) {\n this.highlightedIndex = -1;\n return;\n }\n if (index >= this.suggestions.length) {\n index = this.suggestions.length - 1;\n }\n var suggestion = this.$refs.suggestions.$el.querySelector('.el-autocomplete-suggestion__wrap');\n var suggestionList = suggestion.querySelectorAll('.el-autocomplete-suggestion__list li');\n\n var highlightItem = suggestionList[index];\n var scrollTop = suggestion.scrollTop;\n var offsetTop = highlightItem.offsetTop;\n\n if (offsetTop + highlightItem.scrollHeight > scrollTop + suggestion.clientHeight) {\n suggestion.scrollTop += highlightItem.scrollHeight;\n }\n if (offsetTop < scrollTop) {\n suggestion.scrollTop -= highlightItem.scrollHeight;\n }\n this.highlightedIndex = index;\n var $input = this.getInput();\n $input.setAttribute('aria-activedescendant', this.id + '-item-' + this.highlightedIndex);\n },\n getInput: function getInput() {\n return this.$refs.input.getInput();\n }\n },\n mounted: function mounted() {\n var _this4 = this;\n\n this.debouncedGetData = debounce_default()(this.debounce, this.getData);\n this.$on('item-click', function (item) {\n _this4.select(item);\n });\n var $input = this.getInput();\n $input.setAttribute('role', 'textbox');\n $input.setAttribute('aria-autocomplete', 'list');\n $input.setAttribute('aria-controls', 'id');\n $input.setAttribute('aria-activedescendant', this.id + '-item-' + this.highlightedIndex);\n },\n beforeDestroy: function beforeDestroy() {\n this.$refs.suggestions.$destroy();\n }\n});\n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_autocompletevue_type_script_lang_js_ = (autocompletevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete.vue\n\n\n\n\n\n/* normalize component */\n\nvar autocomplete_component = normalizeComponent(\n src_autocompletevue_type_script_lang_js_,\n autocompletevue_type_template_id_152f2ee6_render,\n autocompletevue_type_template_id_152f2ee6_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var autocomplete_api; }\nautocomplete_component.options.__file = \"packages/autocomplete/src/autocomplete.vue\"\n/* harmony default export */ var autocomplete = (autocomplete_component.exports);\n// CONCATENATED MODULE: ./packages/autocomplete/index.js\n\n\n/* istanbul ignore next */\nautocomplete.install = function (Vue) {\n Vue.component(autocomplete.name, autocomplete);\n};\n\n/* harmony default export */ var packages_autocomplete = (autocomplete);\n// EXTERNAL MODULE: external \"element-ui/lib/button\"\nvar button_ = __webpack_require__(13);\nvar button_default = /*#__PURE__*/__webpack_require__.n(button_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/button-group\"\nvar button_group_ = __webpack_require__(29);\nvar button_group_default = /*#__PURE__*/__webpack_require__.n(button_group_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/dropdown/src/dropdown.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n/* harmony default export */ var dropdownvue_type_script_lang_js_ = ({\n name: 'ElDropdown',\n\n componentName: 'ElDropdown',\n\n mixins: [emitter_default.a, migrating_default.a],\n\n directives: { Clickoutside: clickoutside_default.a },\n\n components: {\n ElButton: button_default.a,\n ElButtonGroup: button_group_default.a\n },\n\n provide: function provide() {\n return {\n dropdown: this\n };\n },\n\n\n props: {\n trigger: {\n type: String,\n default: 'hover'\n },\n type: String,\n size: {\n type: String,\n default: ''\n },\n splitButton: Boolean,\n hideOnClick: {\n type: Boolean,\n default: true\n },\n placement: {\n type: String,\n default: 'bottom-end'\n },\n visibleArrow: {\n default: true\n },\n showTimeout: {\n type: Number,\n default: 250\n },\n hideTimeout: {\n type: Number,\n default: 150\n },\n tabindex: {\n type: Number,\n default: 0\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n\n data: function data() {\n return {\n timeout: null,\n visible: false,\n triggerElm: null,\n menuItems: null,\n menuItemsArray: null,\n dropdownElm: null,\n focusing: false,\n listId: 'dropdown-menu-' + Object(util_[\"generateId\"])()\n };\n },\n\n\n computed: {\n dropdownSize: function dropdownSize() {\n return this.size || (this.$ELEMENT || {}).size;\n }\n },\n\n mounted: function mounted() {\n this.$on('menu-item-click', this.handleMenuItemClick);\n },\n\n\n watch: {\n visible: function visible(val) {\n this.broadcast('ElDropdownMenu', 'visible', val);\n this.$emit('visible-change', val);\n },\n focusing: function focusing(val) {\n var selfDefine = this.$el.querySelector('.el-dropdown-selfdefine');\n if (selfDefine) {\n // 自定义\n if (val) {\n selfDefine.className += ' focusing';\n } else {\n selfDefine.className = selfDefine.className.replace('focusing', '');\n }\n }\n }\n },\n\n methods: {\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'menu-align': 'menu-align is renamed to placement.'\n }\n };\n },\n show: function show() {\n var _this = this;\n\n if (this.disabled) return;\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () {\n _this.visible = true;\n }, this.trigger === 'click' ? 0 : this.showTimeout);\n },\n hide: function hide() {\n var _this2 = this;\n\n if (this.disabled) return;\n this.removeTabindex();\n if (this.tabindex >= 0) {\n this.resetTabindex(this.triggerElm);\n }\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () {\n _this2.visible = false;\n }, this.trigger === 'click' ? 0 : this.hideTimeout);\n },\n handleClick: function handleClick() {\n if (this.disabled) return;\n if (this.visible) {\n this.hide();\n } else {\n this.show();\n }\n },\n handleTriggerKeyDown: function handleTriggerKeyDown(ev) {\n var keyCode = ev.keyCode;\n if ([38, 40].indexOf(keyCode) > -1) {\n // up/down\n this.removeTabindex();\n this.resetTabindex(this.menuItems[0]);\n this.menuItems[0].focus();\n ev.preventDefault();\n ev.stopPropagation();\n } else if (keyCode === 13) {\n // space enter选中\n this.handleClick();\n } else if ([9, 27].indexOf(keyCode) > -1) {\n // tab || esc\n this.hide();\n }\n },\n handleItemKeyDown: function handleItemKeyDown(ev) {\n var keyCode = ev.keyCode;\n var target = ev.target;\n var currentIndex = this.menuItemsArray.indexOf(target);\n var max = this.menuItemsArray.length - 1;\n var nextIndex = void 0;\n if ([38, 40].indexOf(keyCode) > -1) {\n // up/down\n if (keyCode === 38) {\n // up\n nextIndex = currentIndex !== 0 ? currentIndex - 1 : 0;\n } else {\n // down\n nextIndex = currentIndex < max ? currentIndex + 1 : max;\n }\n this.removeTabindex();\n this.resetTabindex(this.menuItems[nextIndex]);\n this.menuItems[nextIndex].focus();\n ev.preventDefault();\n ev.stopPropagation();\n } else if (keyCode === 13) {\n // enter选中\n this.triggerElmFocus();\n target.click();\n if (this.hideOnClick) {\n // click关闭\n this.visible = false;\n }\n } else if ([9, 27].indexOf(keyCode) > -1) {\n // tab // esc\n this.hide();\n this.triggerElmFocus();\n }\n },\n resetTabindex: function resetTabindex(ele) {\n // 下次tab时组件聚焦元素\n this.removeTabindex();\n ele.setAttribute('tabindex', '0'); // 下次期望的聚焦元素\n },\n removeTabindex: function removeTabindex() {\n this.triggerElm.setAttribute('tabindex', '-1');\n this.menuItemsArray.forEach(function (item) {\n item.setAttribute('tabindex', '-1');\n });\n },\n initAria: function initAria() {\n this.dropdownElm.setAttribute('id', this.listId);\n this.triggerElm.setAttribute('aria-haspopup', 'list');\n this.triggerElm.setAttribute('aria-controls', this.listId);\n\n if (!this.splitButton) {\n // 自定义\n this.triggerElm.setAttribute('role', 'button');\n this.triggerElm.setAttribute('tabindex', this.tabindex);\n this.triggerElm.setAttribute('class', (this.triggerElm.getAttribute('class') || '') + ' el-dropdown-selfdefine'); // 控制\n }\n },\n initEvent: function initEvent() {\n var _this3 = this;\n\n var trigger = this.trigger,\n show = this.show,\n hide = this.hide,\n handleClick = this.handleClick,\n splitButton = this.splitButton,\n handleTriggerKeyDown = this.handleTriggerKeyDown,\n handleItemKeyDown = this.handleItemKeyDown;\n\n this.triggerElm = splitButton ? this.$refs.trigger.$el : this.$slots.default[0].elm;\n\n var dropdownElm = this.dropdownElm;\n\n this.triggerElm.addEventListener('keydown', handleTriggerKeyDown); // triggerElm keydown\n dropdownElm.addEventListener('keydown', handleItemKeyDown, true); // item keydown\n // 控制自定义元素的样式\n if (!splitButton) {\n this.triggerElm.addEventListener('focus', function () {\n _this3.focusing = true;\n });\n this.triggerElm.addEventListener('blur', function () {\n _this3.focusing = false;\n });\n this.triggerElm.addEventListener('click', function () {\n _this3.focusing = false;\n });\n }\n if (trigger === 'hover') {\n this.triggerElm.addEventListener('mouseenter', show);\n this.triggerElm.addEventListener('mouseleave', hide);\n dropdownElm.addEventListener('mouseenter', show);\n dropdownElm.addEventListener('mouseleave', hide);\n } else if (trigger === 'click') {\n this.triggerElm.addEventListener('click', handleClick);\n }\n },\n handleMenuItemClick: function handleMenuItemClick(command, instance) {\n if (this.hideOnClick) {\n this.visible = false;\n }\n this.$emit('command', command, instance);\n },\n triggerElmFocus: function triggerElmFocus() {\n this.triggerElm.focus && this.triggerElm.focus();\n },\n initDomOperation: function initDomOperation() {\n this.dropdownElm = this.popperElm;\n this.menuItems = this.dropdownElm.querySelectorAll(\"[tabindex='-1']\");\n this.menuItemsArray = [].slice.call(this.menuItems);\n\n this.initEvent();\n this.initAria();\n }\n },\n\n render: function render(h) {\n var _this4 = this;\n\n var hide = this.hide,\n splitButton = this.splitButton,\n type = this.type,\n dropdownSize = this.dropdownSize,\n disabled = this.disabled;\n\n\n var handleMainButtonClick = function handleMainButtonClick(event) {\n _this4.$emit('click', event);\n hide();\n };\n\n var triggerElm = null;\n if (splitButton) {\n triggerElm = h('el-button-group', [h(\n 'el-button',\n {\n attrs: { type: type, size: dropdownSize, disabled: disabled },\n nativeOn: {\n 'click': handleMainButtonClick\n }\n },\n [this.$slots.default]\n ), h(\n 'el-button',\n { ref: 'trigger', attrs: { type: type, size: dropdownSize, disabled: disabled },\n 'class': 'el-dropdown__caret-button' },\n [h('i', { 'class': 'el-dropdown__icon el-icon-arrow-down' })]\n )]);\n } else {\n triggerElm = this.$slots.default;\n var vnodeData = triggerElm[0].data || {};\n var _vnodeData$attrs = vnodeData.attrs,\n attrs = _vnodeData$attrs === undefined ? {} : _vnodeData$attrs;\n\n if (disabled && !attrs.disabled) {\n attrs.disabled = true;\n vnodeData.attrs = attrs;\n }\n }\n var menuElm = disabled ? null : this.$slots.dropdown;\n\n return h(\n 'div',\n { 'class': 'el-dropdown', directives: [{\n name: 'clickoutside',\n value: hide\n }],\n attrs: { 'aria-disabled': disabled }\n },\n [triggerElm, menuElm]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_dropdownvue_type_script_lang_js_ = (dropdownvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown.vue\nvar dropdown_render, dropdown_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar dropdown_component = normalizeComponent(\n src_dropdownvue_type_script_lang_js_,\n dropdown_render,\n dropdown_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var dropdown_api; }\ndropdown_component.options.__file = \"packages/dropdown/src/dropdown.vue\"\n/* harmony default export */ var dropdown = (dropdown_component.exports);\n// CONCATENATED MODULE: ./packages/dropdown/index.js\n\n\n/* istanbul ignore next */\ndropdown.install = function (Vue) {\n Vue.component(dropdown.name, dropdown);\n};\n\n/* harmony default export */ var packages_dropdown = (dropdown);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/dropdown/src/dropdown-menu.vue?vue&type=template&id=0da6b714&\nvar dropdown_menuvue_type_template_id_0da6b714_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n { attrs: { name: \"el-zoom-in-top\" }, on: { \"after-leave\": _vm.doDestroy } },\n [\n _c(\n \"ul\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showPopper,\n expression: \"showPopper\"\n }\n ],\n staticClass: \"el-dropdown-menu el-popper\",\n class: [_vm.size && \"el-dropdown-menu--\" + _vm.size]\n },\n [_vm._t(\"default\")],\n 2\n )\n ]\n )\n}\nvar dropdown_menuvue_type_template_id_0da6b714_staticRenderFns = []\ndropdown_menuvue_type_template_id_0da6b714_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-menu.vue?vue&type=template&id=0da6b714&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/dropdown/src/dropdown-menu.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var dropdown_menuvue_type_script_lang_js_ = ({\n name: 'ElDropdownMenu',\n\n componentName: 'ElDropdownMenu',\n\n mixins: [vue_popper_default.a],\n\n props: {\n visibleArrow: {\n type: Boolean,\n default: true\n },\n arrowOffset: {\n type: Number,\n default: 0\n }\n },\n\n data: function data() {\n return {\n size: this.dropdown.dropdownSize\n };\n },\n\n\n inject: ['dropdown'],\n\n created: function created() {\n var _this = this;\n\n this.$on('updatePopper', function () {\n if (_this.showPopper) _this.updatePopper();\n });\n this.$on('visible', function (val) {\n _this.showPopper = val;\n });\n },\n mounted: function mounted() {\n this.dropdown.popperElm = this.popperElm = this.$el;\n this.referenceElm = this.dropdown.$el;\n // compatible with 2.6 new v-slot syntax\n // issue link https://github.com/ElemeFE/element/issues/14345\n this.dropdown.initDomOperation();\n },\n\n\n watch: {\n 'dropdown.placement': {\n immediate: true,\n handler: function handler(val) {\n this.currentPlacement = val;\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-menu.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_dropdown_menuvue_type_script_lang_js_ = (dropdown_menuvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-menu.vue\n\n\n\n\n\n/* normalize component */\n\nvar dropdown_menu_component = normalizeComponent(\n src_dropdown_menuvue_type_script_lang_js_,\n dropdown_menuvue_type_template_id_0da6b714_render,\n dropdown_menuvue_type_template_id_0da6b714_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var dropdown_menu_api; }\ndropdown_menu_component.options.__file = \"packages/dropdown/src/dropdown-menu.vue\"\n/* harmony default export */ var dropdown_menu = (dropdown_menu_component.exports);\n// CONCATENATED MODULE: ./packages/dropdown-menu/index.js\n\n\n/* istanbul ignore next */\ndropdown_menu.install = function (Vue) {\n Vue.component(dropdown_menu.name, dropdown_menu);\n};\n\n/* harmony default export */ var packages_dropdown_menu = (dropdown_menu);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/dropdown/src/dropdown-item.vue?vue&type=template&id=6359102a&\nvar dropdown_itemvue_type_template_id_6359102a_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"li\",\n {\n staticClass: \"el-dropdown-menu__item\",\n class: {\n \"is-disabled\": _vm.disabled,\n \"el-dropdown-menu__item--divided\": _vm.divided\n },\n attrs: {\n \"aria-disabled\": _vm.disabled,\n tabindex: _vm.disabled ? null : -1\n },\n on: { click: _vm.handleClick }\n },\n [_vm.icon ? _c(\"i\", { class: _vm.icon }) : _vm._e(), _vm._t(\"default\")],\n 2\n )\n}\nvar dropdown_itemvue_type_template_id_6359102a_staticRenderFns = []\ndropdown_itemvue_type_template_id_6359102a_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-item.vue?vue&type=template&id=6359102a&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/dropdown/src/dropdown-item.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var dropdown_itemvue_type_script_lang_js_ = ({\n name: 'ElDropdownItem',\n\n mixins: [emitter_default.a],\n\n props: {\n command: {},\n disabled: Boolean,\n divided: Boolean,\n icon: String\n },\n\n methods: {\n handleClick: function handleClick(e) {\n this.dispatch('ElDropdown', 'menu-item-click', [this.command, this]);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-item.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_dropdown_itemvue_type_script_lang_js_ = (dropdown_itemvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-item.vue\n\n\n\n\n\n/* normalize component */\n\nvar dropdown_item_component = normalizeComponent(\n src_dropdown_itemvue_type_script_lang_js_,\n dropdown_itemvue_type_template_id_6359102a_render,\n dropdown_itemvue_type_template_id_6359102a_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var dropdown_item_api; }\ndropdown_item_component.options.__file = \"packages/dropdown/src/dropdown-item.vue\"\n/* harmony default export */ var dropdown_item = (dropdown_item_component.exports);\n// CONCATENATED MODULE: ./packages/dropdown-item/index.js\n\n\n/* istanbul ignore next */\ndropdown_item.install = function (Vue) {\n Vue.component(dropdown_item.name, dropdown_item);\n};\n\n/* harmony default export */ var packages_dropdown_item = (dropdown_item);\n// CONCATENATED MODULE: ./src/utils/aria-utils.js\nvar aria = aria || {};\n\naria.Utils = aria.Utils || {};\n\n/**\n * @desc Set focus on descendant nodes until the first focusable element is\n * found.\n * @param element\n * DOM node for which to find the first focusable descendant.\n * @returns\n * true if a focusable element is found and focus is set.\n */\naria.Utils.focusFirstDescendant = function (element) {\n for (var i = 0; i < element.childNodes.length; i++) {\n var child = element.childNodes[i];\n if (aria.Utils.attemptFocus(child) || aria.Utils.focusFirstDescendant(child)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @desc Find the last descendant node that is focusable.\n * @param element\n * DOM node for which to find the last focusable descendant.\n * @returns\n * true if a focusable element is found and focus is set.\n */\n\naria.Utils.focusLastDescendant = function (element) {\n for (var i = element.childNodes.length - 1; i >= 0; i--) {\n var child = element.childNodes[i];\n if (aria.Utils.attemptFocus(child) || aria.Utils.focusLastDescendant(child)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @desc Set Attempt to set focus on the current node.\n * @param element\n * The node to attempt to focus on.\n * @returns\n * true if element is focused.\n */\naria.Utils.attemptFocus = function (element) {\n if (!aria.Utils.isFocusable(element)) {\n return false;\n }\n aria.Utils.IgnoreUtilFocusChanges = true;\n try {\n element.focus();\n } catch (e) {}\n aria.Utils.IgnoreUtilFocusChanges = false;\n return document.activeElement === element;\n};\n\naria.Utils.isFocusable = function (element) {\n if (element.tabIndex > 0 || element.tabIndex === 0 && element.getAttribute('tabIndex') !== null) {\n return true;\n }\n\n if (element.disabled) {\n return false;\n }\n\n switch (element.nodeName) {\n case 'A':\n return !!element.href && element.rel !== 'ignore';\n case 'INPUT':\n return element.type !== 'hidden' && element.type !== 'file';\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n default:\n return false;\n }\n};\n\n/**\n * 触发一个事件\n * mouseenter, mouseleave, mouseover, keyup, change, click 等\n * @param {Element} elm\n * @param {String} name\n * @param {*} opts\n */\naria.Utils.triggerEvent = function (elm, name) {\n var eventName = void 0;\n\n if (/^mouse|click/.test(name)) {\n eventName = 'MouseEvents';\n } else if (/^key/.test(name)) {\n eventName = 'KeyboardEvent';\n } else {\n eventName = 'HTMLEvents';\n }\n var evt = document.createEvent(eventName);\n\n for (var _len = arguments.length, opts = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n opts[_key - 2] = arguments[_key];\n }\n\n evt.initEvent.apply(evt, [name].concat(opts));\n elm.dispatchEvent ? elm.dispatchEvent(evt) : elm.fireEvent('on' + name, evt);\n\n return elm;\n};\n\naria.Utils.keys = {\n tab: 9,\n enter: 13,\n space: 32,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n esc: 27\n};\n\n/* harmony default export */ var aria_utils = (aria.Utils);\n// CONCATENATED MODULE: ./src/utils/menu/aria-submenu.js\n\n\nvar SubMenu = function SubMenu(parent, domNode) {\n this.domNode = domNode;\n this.parent = parent;\n this.subMenuItems = [];\n this.subIndex = 0;\n this.init();\n};\n\nSubMenu.prototype.init = function () {\n this.subMenuItems = this.domNode.querySelectorAll('li');\n this.addListeners();\n};\n\nSubMenu.prototype.gotoSubIndex = function (idx) {\n if (idx === this.subMenuItems.length) {\n idx = 0;\n } else if (idx < 0) {\n idx = this.subMenuItems.length - 1;\n }\n this.subMenuItems[idx].focus();\n this.subIndex = idx;\n};\n\nSubMenu.prototype.addListeners = function () {\n var _this = this;\n\n var keys = aria_utils.keys;\n var parentNode = this.parent.domNode;\n Array.prototype.forEach.call(this.subMenuItems, function (el) {\n el.addEventListener('keydown', function (event) {\n var prevDef = false;\n switch (event.keyCode) {\n case keys.down:\n _this.gotoSubIndex(_this.subIndex + 1);\n prevDef = true;\n break;\n case keys.up:\n _this.gotoSubIndex(_this.subIndex - 1);\n prevDef = true;\n break;\n case keys.tab:\n aria_utils.triggerEvent(parentNode, 'mouseleave');\n break;\n case keys.enter:\n case keys.space:\n prevDef = true;\n event.currentTarget.click();\n break;\n }\n if (prevDef) {\n event.preventDefault();\n event.stopPropagation();\n }\n return false;\n });\n });\n};\n\n/* harmony default export */ var aria_submenu = (SubMenu);\n// CONCATENATED MODULE: ./src/utils/menu/aria-menuitem.js\n\n\n\nvar MenuItem = function MenuItem(domNode) {\n this.domNode = domNode;\n this.submenu = null;\n this.init();\n};\n\nMenuItem.prototype.init = function () {\n this.domNode.setAttribute('tabindex', '0');\n var menuChild = this.domNode.querySelector('.el-menu');\n if (menuChild) {\n this.submenu = new aria_submenu(this, menuChild);\n }\n this.addListeners();\n};\n\nMenuItem.prototype.addListeners = function () {\n var _this = this;\n\n var keys = aria_utils.keys;\n this.domNode.addEventListener('keydown', function (event) {\n var prevDef = false;\n switch (event.keyCode) {\n case keys.down:\n aria_utils.triggerEvent(event.currentTarget, 'mouseenter');\n _this.submenu && _this.submenu.gotoSubIndex(0);\n prevDef = true;\n break;\n case keys.up:\n aria_utils.triggerEvent(event.currentTarget, 'mouseenter');\n _this.submenu && _this.submenu.gotoSubIndex(_this.submenu.subMenuItems.length - 1);\n prevDef = true;\n break;\n case keys.tab:\n aria_utils.triggerEvent(event.currentTarget, 'mouseleave');\n break;\n case keys.enter:\n case keys.space:\n prevDef = true;\n event.currentTarget.click();\n break;\n }\n if (prevDef) {\n event.preventDefault();\n }\n });\n};\n\n/* harmony default export */ var aria_menuitem = (MenuItem);\n// CONCATENATED MODULE: ./src/utils/menu/aria-menubar.js\n\n\nvar Menu = function Menu(domNode) {\n this.domNode = domNode;\n this.init();\n};\n\nMenu.prototype.init = function () {\n var menuChildren = this.domNode.childNodes;\n [].filter.call(menuChildren, function (child) {\n return child.nodeType === 1;\n }).forEach(function (child) {\n new aria_menuitem(child); // eslint-disable-line\n });\n};\n/* harmony default export */ var aria_menubar = (Menu);\n// EXTERNAL MODULE: external \"element-ui/lib/utils/dom\"\nvar dom_ = __webpack_require__(1);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/menu.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n/* harmony default export */ var menuvue_type_script_lang_js_ = ({\n name: 'ElMenu',\n\n render: function render(h) {\n var component = h(\n 'ul',\n {\n attrs: {\n role: 'menubar'\n },\n key: +this.collapse,\n style: { backgroundColor: this.backgroundColor || '' },\n 'class': {\n 'el-menu--horizontal': this.mode === 'horizontal',\n 'el-menu--collapse': this.collapse,\n \"el-menu\": true\n }\n },\n [this.$slots.default]\n );\n\n if (this.collapseTransition) {\n return h('el-menu-collapse-transition', [component]);\n } else {\n return component;\n }\n },\n\n\n componentName: 'ElMenu',\n\n mixins: [emitter_default.a, migrating_default.a],\n\n provide: function provide() {\n return {\n rootMenu: this\n };\n },\n\n\n components: {\n 'el-menu-collapse-transition': {\n functional: true,\n render: function render(createElement, context) {\n var data = {\n props: {\n mode: 'out-in'\n },\n on: {\n beforeEnter: function beforeEnter(el) {\n el.style.opacity = 0.2;\n },\n enter: function enter(el) {\n Object(dom_[\"addClass\"])(el, 'el-opacity-transition');\n el.style.opacity = 1;\n },\n afterEnter: function afterEnter(el) {\n Object(dom_[\"removeClass\"])(el, 'el-opacity-transition');\n el.style.opacity = '';\n },\n beforeLeave: function beforeLeave(el) {\n if (!el.dataset) el.dataset = {};\n\n if (Object(dom_[\"hasClass\"])(el, 'el-menu--collapse')) {\n Object(dom_[\"removeClass\"])(el, 'el-menu--collapse');\n el.dataset.oldOverflow = el.style.overflow;\n el.dataset.scrollWidth = el.clientWidth;\n Object(dom_[\"addClass\"])(el, 'el-menu--collapse');\n } else {\n Object(dom_[\"addClass\"])(el, 'el-menu--collapse');\n el.dataset.oldOverflow = el.style.overflow;\n el.dataset.scrollWidth = el.clientWidth;\n Object(dom_[\"removeClass\"])(el, 'el-menu--collapse');\n }\n\n el.style.width = el.scrollWidth + 'px';\n el.style.overflow = 'hidden';\n },\n leave: function leave(el) {\n Object(dom_[\"addClass\"])(el, 'horizontal-collapse-transition');\n el.style.width = el.dataset.scrollWidth + 'px';\n }\n }\n };\n return createElement('transition', data, context.children);\n }\n }\n },\n\n props: {\n mode: {\n type: String,\n default: 'vertical'\n },\n defaultActive: {\n type: String,\n default: ''\n },\n defaultOpeneds: Array,\n uniqueOpened: Boolean,\n router: Boolean,\n menuTrigger: {\n type: String,\n default: 'hover'\n },\n collapse: Boolean,\n backgroundColor: String,\n textColor: String,\n activeTextColor: String,\n collapseTransition: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n return {\n activeIndex: this.defaultActive,\n openedMenus: this.defaultOpeneds && !this.collapse ? this.defaultOpeneds.slice(0) : [],\n items: {},\n submenus: {}\n };\n },\n\n computed: {\n hoverBackground: function hoverBackground() {\n return this.backgroundColor ? this.mixColor(this.backgroundColor, 0.2) : '';\n },\n isMenuPopup: function isMenuPopup() {\n return this.mode === 'horizontal' || this.mode === 'vertical' && this.collapse;\n }\n },\n watch: {\n defaultActive: function defaultActive(value) {\n if (!this.items[value]) {\n this.activeIndex = null;\n }\n this.updateActiveIndex(value);\n },\n defaultOpeneds: function defaultOpeneds(value) {\n if (!this.collapse) {\n this.openedMenus = value;\n }\n },\n collapse: function collapse(value) {\n if (value) this.openedMenus = [];\n this.broadcast('ElSubmenu', 'toggle-collapse', value);\n }\n },\n methods: {\n updateActiveIndex: function updateActiveIndex(val) {\n var item = this.items[val] || this.items[this.activeIndex] || this.items[this.defaultActive];\n if (item) {\n this.activeIndex = item.index;\n this.initOpenedMenu();\n } else {\n this.activeIndex = null;\n }\n },\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'theme': 'theme is removed.'\n }\n };\n },\n getColorChannels: function getColorChannels(color) {\n color = color.replace('#', '');\n if (/^[0-9a-fA-F]{3}$/.test(color)) {\n color = color.split('');\n for (var i = 2; i >= 0; i--) {\n color.splice(i, 0, color[i]);\n }\n color = color.join('');\n }\n if (/^[0-9a-fA-F]{6}$/.test(color)) {\n return {\n red: parseInt(color.slice(0, 2), 16),\n green: parseInt(color.slice(2, 4), 16),\n blue: parseInt(color.slice(4, 6), 16)\n };\n } else {\n return {\n red: 255,\n green: 255,\n blue: 255\n };\n }\n },\n mixColor: function mixColor(color, percent) {\n var _getColorChannels = this.getColorChannels(color),\n red = _getColorChannels.red,\n green = _getColorChannels.green,\n blue = _getColorChannels.blue;\n\n if (percent > 0) {\n // shade given color\n red *= 1 - percent;\n green *= 1 - percent;\n blue *= 1 - percent;\n } else {\n // tint given color\n red += (255 - red) * percent;\n green += (255 - green) * percent;\n blue += (255 - blue) * percent;\n }\n return 'rgb(' + Math.round(red) + ', ' + Math.round(green) + ', ' + Math.round(blue) + ')';\n },\n addItem: function addItem(item) {\n this.$set(this.items, item.index, item);\n },\n removeItem: function removeItem(item) {\n delete this.items[item.index];\n },\n addSubmenu: function addSubmenu(item) {\n this.$set(this.submenus, item.index, item);\n },\n removeSubmenu: function removeSubmenu(item) {\n delete this.submenus[item.index];\n },\n openMenu: function openMenu(index, indexPath) {\n var openedMenus = this.openedMenus;\n if (openedMenus.indexOf(index) !== -1) return;\n // 将不在该菜单路径下的其余菜单收起\n // collapse all menu that are not under current menu item\n if (this.uniqueOpened) {\n this.openedMenus = openedMenus.filter(function (index) {\n return indexPath.indexOf(index) !== -1;\n });\n }\n this.openedMenus.push(index);\n },\n closeMenu: function closeMenu(index) {\n var i = this.openedMenus.indexOf(index);\n if (i !== -1) {\n this.openedMenus.splice(i, 1);\n }\n },\n handleSubmenuClick: function handleSubmenuClick(submenu) {\n var index = submenu.index,\n indexPath = submenu.indexPath;\n\n var isOpened = this.openedMenus.indexOf(index) !== -1;\n\n if (isOpened) {\n this.closeMenu(index);\n this.$emit('close', index, indexPath);\n } else {\n this.openMenu(index, indexPath);\n this.$emit('open', index, indexPath);\n }\n },\n handleItemClick: function handleItemClick(item) {\n var _this = this;\n\n var index = item.index,\n indexPath = item.indexPath;\n\n var oldActiveIndex = this.activeIndex;\n var hasIndex = item.index !== null;\n\n if (hasIndex) {\n this.activeIndex = item.index;\n }\n\n this.$emit('select', index, indexPath, item);\n\n if (this.mode === 'horizontal' || this.collapse) {\n this.openedMenus = [];\n }\n\n if (this.router && hasIndex) {\n this.routeToItem(item, function (error) {\n _this.activeIndex = oldActiveIndex;\n if (error) {\n // vue-router 3.1.0+ push/replace cause NavigationDuplicated error \n // https://github.com/ElemeFE/element/issues/17044\n if (error.name === 'NavigationDuplicated') return;\n console.error(error);\n }\n });\n }\n },\n\n // 初始化展开菜单\n // initialize opened menu\n initOpenedMenu: function initOpenedMenu() {\n var _this2 = this;\n\n var index = this.activeIndex;\n var activeItem = this.items[index];\n if (!activeItem || this.mode === 'horizontal' || this.collapse) return;\n\n var indexPath = activeItem.indexPath;\n\n // 展开该菜单项的路径上所有子菜单\n // expand all submenus of the menu item\n indexPath.forEach(function (index) {\n var submenu = _this2.submenus[index];\n submenu && _this2.openMenu(index, submenu.indexPath);\n });\n },\n routeToItem: function routeToItem(item, onError) {\n var route = item.route || item.index;\n try {\n this.$router.push(route, function () {}, onError);\n } catch (e) {\n console.error(e);\n }\n },\n open: function open(index) {\n var _this3 = this;\n\n var indexPath = this.submenus[index.toString()].indexPath;\n\n indexPath.forEach(function (i) {\n return _this3.openMenu(i, indexPath);\n });\n },\n close: function close(index) {\n this.closeMenu(index);\n }\n },\n mounted: function mounted() {\n this.initOpenedMenu();\n this.$on('item-click', this.handleItemClick);\n this.$on('submenu-click', this.handleSubmenuClick);\n if (this.mode === 'horizontal') {\n new aria_menubar(this.$el); // eslint-disable-line\n }\n this.$watch('items', this.updateActiveIndex);\n }\n});\n// CONCATENATED MODULE: ./packages/menu/src/menu.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_menuvue_type_script_lang_js_ = (menuvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/menu/src/menu.vue\nvar menu_render, menu_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar menu_component = normalizeComponent(\n src_menuvue_type_script_lang_js_,\n menu_render,\n menu_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var menu_api; }\nmenu_component.options.__file = \"packages/menu/src/menu.vue\"\n/* harmony default export */ var src_menu = (menu_component.exports);\n// CONCATENATED MODULE: ./packages/menu/index.js\n\n\n/* istanbul ignore next */\nsrc_menu.install = function (Vue) {\n Vue.component(src_menu.name, src_menu);\n};\n\n/* harmony default export */ var packages_menu = (src_menu);\n// EXTERNAL MODULE: external \"element-ui/lib/transitions/collapse-transition\"\nvar collapse_transition_ = __webpack_require__(21);\nvar collapse_transition_default = /*#__PURE__*/__webpack_require__.n(collapse_transition_);\n\n// CONCATENATED MODULE: ./packages/menu/src/menu-mixin.js\n/* harmony default export */ var menu_mixin = ({\n inject: ['rootMenu'],\n computed: {\n indexPath: function indexPath() {\n var path = [this.index];\n var parent = this.$parent;\n while (parent.$options.componentName !== 'ElMenu') {\n if (parent.index) {\n path.unshift(parent.index);\n }\n parent = parent.$parent;\n }\n return path;\n },\n parentMenu: function parentMenu() {\n var parent = this.$parent;\n while (parent && ['ElMenu', 'ElSubmenu'].indexOf(parent.$options.componentName) === -1) {\n parent = parent.$parent;\n }\n return parent;\n },\n paddingStyle: function paddingStyle() {\n if (this.rootMenu.mode !== 'vertical') return {};\n\n var padding = 20;\n var parent = this.$parent;\n\n if (this.rootMenu.collapse) {\n padding = 20;\n } else {\n while (parent && parent.$options.componentName !== 'ElMenu') {\n if (parent.$options.componentName === 'ElSubmenu') {\n padding += 20;\n }\n parent = parent.$parent;\n }\n }\n return { paddingLeft: padding + 'px' };\n }\n }\n});\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/submenu.vue?vue&type=script&lang=js&\n\n\n\n\n\n\nvar poperMixins = {\n props: {\n transformOrigin: {\n type: [Boolean, String],\n default: false\n },\n offset: vue_popper_default.a.props.offset,\n boundariesPadding: vue_popper_default.a.props.boundariesPadding,\n popperOptions: vue_popper_default.a.props.popperOptions\n },\n data: vue_popper_default.a.data,\n methods: vue_popper_default.a.methods,\n beforeDestroy: vue_popper_default.a.beforeDestroy,\n deactivated: vue_popper_default.a.deactivated\n};\n\n/* harmony default export */ var submenuvue_type_script_lang_js_ = ({\n name: 'ElSubmenu',\n\n componentName: 'ElSubmenu',\n\n mixins: [menu_mixin, emitter_default.a, poperMixins],\n\n components: { ElCollapseTransition: collapse_transition_default.a },\n\n props: {\n index: {\n type: String,\n required: true\n },\n showTimeout: {\n type: Number,\n default: 300\n },\n hideTimeout: {\n type: Number,\n default: 300\n },\n popperClass: String,\n disabled: Boolean,\n popperAppendToBody: {\n type: Boolean,\n default: undefined\n }\n },\n\n data: function data() {\n return {\n popperJS: null,\n timeout: null,\n items: {},\n submenus: {},\n mouseInChild: false\n };\n },\n\n watch: {\n opened: function opened(val) {\n var _this = this;\n\n if (this.isMenuPopup) {\n this.$nextTick(function (_) {\n _this.updatePopper();\n });\n }\n }\n },\n computed: {\n // popper option\n appendToBody: function appendToBody() {\n return this.popperAppendToBody === undefined ? this.isFirstLevel : this.popperAppendToBody;\n },\n menuTransitionName: function menuTransitionName() {\n return this.rootMenu.collapse ? 'el-zoom-in-left' : 'el-zoom-in-top';\n },\n opened: function opened() {\n return this.rootMenu.openedMenus.indexOf(this.index) > -1;\n },\n active: function active() {\n var isActive = false;\n var submenus = this.submenus;\n var items = this.items;\n\n Object.keys(items).forEach(function (index) {\n if (items[index].active) {\n isActive = true;\n }\n });\n\n Object.keys(submenus).forEach(function (index) {\n if (submenus[index].active) {\n isActive = true;\n }\n });\n\n return isActive;\n },\n hoverBackground: function hoverBackground() {\n return this.rootMenu.hoverBackground;\n },\n backgroundColor: function backgroundColor() {\n return this.rootMenu.backgroundColor || '';\n },\n activeTextColor: function activeTextColor() {\n return this.rootMenu.activeTextColor || '';\n },\n textColor: function textColor() {\n return this.rootMenu.textColor || '';\n },\n mode: function mode() {\n return this.rootMenu.mode;\n },\n isMenuPopup: function isMenuPopup() {\n return this.rootMenu.isMenuPopup;\n },\n titleStyle: function titleStyle() {\n if (this.mode !== 'horizontal') {\n return {\n color: this.textColor\n };\n }\n return {\n borderBottomColor: this.active ? this.rootMenu.activeTextColor ? this.activeTextColor : '' : 'transparent',\n color: this.active ? this.activeTextColor : this.textColor\n };\n },\n isFirstLevel: function isFirstLevel() {\n var isFirstLevel = true;\n var parent = this.$parent;\n while (parent && parent !== this.rootMenu) {\n if (['ElSubmenu', 'ElMenuItemGroup'].indexOf(parent.$options.componentName) > -1) {\n isFirstLevel = false;\n break;\n } else {\n parent = parent.$parent;\n }\n }\n return isFirstLevel;\n }\n },\n methods: {\n handleCollapseToggle: function handleCollapseToggle(value) {\n if (value) {\n this.initPopper();\n } else {\n this.doDestroy();\n }\n },\n addItem: function addItem(item) {\n this.$set(this.items, item.index, item);\n },\n removeItem: function removeItem(item) {\n delete this.items[item.index];\n },\n addSubmenu: function addSubmenu(item) {\n this.$set(this.submenus, item.index, item);\n },\n removeSubmenu: function removeSubmenu(item) {\n delete this.submenus[item.index];\n },\n handleClick: function handleClick() {\n var rootMenu = this.rootMenu,\n disabled = this.disabled;\n\n if (rootMenu.menuTrigger === 'hover' && rootMenu.mode === 'horizontal' || rootMenu.collapse && rootMenu.mode === 'vertical' || disabled) {\n return;\n }\n this.dispatch('ElMenu', 'submenu-click', this);\n },\n handleMouseenter: function handleMouseenter(event) {\n var _this2 = this;\n\n var showTimeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.showTimeout;\n\n\n if (!('ActiveXObject' in window) && event.type === 'focus' && !event.relatedTarget) {\n return;\n }\n var rootMenu = this.rootMenu,\n disabled = this.disabled;\n\n if (rootMenu.menuTrigger === 'click' && rootMenu.mode === 'horizontal' || !rootMenu.collapse && rootMenu.mode === 'vertical' || disabled) {\n return;\n }\n this.dispatch('ElSubmenu', 'mouse-enter-child');\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () {\n _this2.rootMenu.openMenu(_this2.index, _this2.indexPath);\n }, showTimeout);\n\n if (this.appendToBody) {\n this.$parent.$el.dispatchEvent(new MouseEvent('mouseenter'));\n }\n },\n handleMouseleave: function handleMouseleave() {\n var _this3 = this;\n\n var deepDispatch = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var rootMenu = this.rootMenu;\n\n if (rootMenu.menuTrigger === 'click' && rootMenu.mode === 'horizontal' || !rootMenu.collapse && rootMenu.mode === 'vertical') {\n return;\n }\n this.dispatch('ElSubmenu', 'mouse-leave-child');\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () {\n !_this3.mouseInChild && _this3.rootMenu.closeMenu(_this3.index);\n }, this.hideTimeout);\n\n if (this.appendToBody && deepDispatch) {\n if (this.$parent.$options.name === 'ElSubmenu') {\n this.$parent.handleMouseleave(true);\n }\n }\n },\n handleTitleMouseenter: function handleTitleMouseenter() {\n if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;\n var title = this.$refs['submenu-title'];\n title && (title.style.backgroundColor = this.rootMenu.hoverBackground);\n },\n handleTitleMouseleave: function handleTitleMouseleave() {\n if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;\n var title = this.$refs['submenu-title'];\n title && (title.style.backgroundColor = this.rootMenu.backgroundColor || '');\n },\n updatePlacement: function updatePlacement() {\n this.currentPlacement = this.mode === 'horizontal' && this.isFirstLevel ? 'bottom-start' : 'right-start';\n },\n initPopper: function initPopper() {\n this.referenceElm = this.$el;\n this.popperElm = this.$refs.menu;\n this.updatePlacement();\n }\n },\n created: function created() {\n var _this4 = this;\n\n this.$on('toggle-collapse', this.handleCollapseToggle);\n this.$on('mouse-enter-child', function () {\n _this4.mouseInChild = true;\n clearTimeout(_this4.timeout);\n });\n this.$on('mouse-leave-child', function () {\n _this4.mouseInChild = false;\n clearTimeout(_this4.timeout);\n });\n },\n mounted: function mounted() {\n this.parentMenu.addSubmenu(this);\n this.rootMenu.addSubmenu(this);\n this.initPopper();\n },\n beforeDestroy: function beforeDestroy() {\n this.parentMenu.removeSubmenu(this);\n this.rootMenu.removeSubmenu(this);\n },\n render: function render(h) {\n var _this5 = this;\n\n var active = this.active,\n opened = this.opened,\n paddingStyle = this.paddingStyle,\n titleStyle = this.titleStyle,\n backgroundColor = this.backgroundColor,\n rootMenu = this.rootMenu,\n currentPlacement = this.currentPlacement,\n menuTransitionName = this.menuTransitionName,\n mode = this.mode,\n disabled = this.disabled,\n popperClass = this.popperClass,\n $slots = this.$slots,\n isFirstLevel = this.isFirstLevel;\n\n\n var popupMenu = h(\n 'transition',\n {\n attrs: { name: menuTransitionName }\n },\n [h(\n 'div',\n {\n ref: 'menu',\n directives: [{\n name: 'show',\n value: opened\n }],\n\n 'class': ['el-menu--' + mode, popperClass],\n on: {\n 'mouseenter': function mouseenter($event) {\n return _this5.handleMouseenter($event, 100);\n },\n 'mouseleave': function mouseleave() {\n return _this5.handleMouseleave(true);\n },\n 'focus': function focus($event) {\n return _this5.handleMouseenter($event, 100);\n }\n }\n },\n [h(\n 'ul',\n {\n attrs: {\n role: 'menu'\n },\n 'class': ['el-menu el-menu--popup', 'el-menu--popup-' + currentPlacement],\n style: { backgroundColor: rootMenu.backgroundColor || '' } },\n [$slots.default]\n )]\n )]\n );\n\n var inlineMenu = h('el-collapse-transition', [h(\n 'ul',\n {\n attrs: {\n role: 'menu'\n },\n 'class': 'el-menu el-menu--inline',\n directives: [{\n name: 'show',\n value: opened\n }],\n\n style: { backgroundColor: rootMenu.backgroundColor || '' } },\n [$slots.default]\n )]);\n\n var submenuTitleIcon = rootMenu.mode === 'horizontal' && isFirstLevel || rootMenu.mode === 'vertical' && !rootMenu.collapse ? 'el-icon-arrow-down' : 'el-icon-arrow-right';\n\n return h(\n 'li',\n {\n 'class': {\n 'el-submenu': true,\n 'is-active': active,\n 'is-opened': opened,\n 'is-disabled': disabled\n },\n attrs: { role: 'menuitem',\n 'aria-haspopup': 'true',\n 'aria-expanded': opened\n },\n on: {\n 'mouseenter': this.handleMouseenter,\n 'mouseleave': function mouseleave() {\n return _this5.handleMouseleave(false);\n },\n 'focus': this.handleMouseenter\n }\n },\n [h(\n 'div',\n {\n 'class': 'el-submenu__title',\n ref: 'submenu-title',\n on: {\n 'click': this.handleClick,\n 'mouseenter': this.handleTitleMouseenter,\n 'mouseleave': this.handleTitleMouseleave\n },\n\n style: [paddingStyle, titleStyle, { backgroundColor: backgroundColor }]\n },\n [$slots.title, h('i', { 'class': ['el-submenu__icon-arrow', submenuTitleIcon] })]\n ), this.isMenuPopup ? popupMenu : inlineMenu]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/menu/src/submenu.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_submenuvue_type_script_lang_js_ = (submenuvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/menu/src/submenu.vue\nvar submenu_render, submenu_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar submenu_component = normalizeComponent(\n src_submenuvue_type_script_lang_js_,\n submenu_render,\n submenu_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var submenu_api; }\nsubmenu_component.options.__file = \"packages/menu/src/submenu.vue\"\n/* harmony default export */ var submenu = (submenu_component.exports);\n// CONCATENATED MODULE: ./packages/submenu/index.js\n\n\n/* istanbul ignore next */\nsubmenu.install = function (Vue) {\n Vue.component(submenu.name, submenu);\n};\n\n/* harmony default export */ var packages_submenu = (submenu);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/menu-item.vue?vue&type=template&id=2a5dbfea&\nvar menu_itemvue_type_template_id_2a5dbfea_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"li\",\n {\n staticClass: \"el-menu-item\",\n class: {\n \"is-active\": _vm.active,\n \"is-disabled\": _vm.disabled\n },\n style: [\n _vm.paddingStyle,\n _vm.itemStyle,\n { backgroundColor: _vm.backgroundColor }\n ],\n attrs: { role: \"menuitem\", tabindex: \"-1\" },\n on: {\n click: _vm.handleClick,\n mouseenter: _vm.onMouseEnter,\n focus: _vm.onMouseEnter,\n blur: _vm.onMouseLeave,\n mouseleave: _vm.onMouseLeave\n }\n },\n [\n _vm.parentMenu.$options.componentName === \"ElMenu\" &&\n _vm.rootMenu.collapse &&\n _vm.$slots.title\n ? _c(\"el-tooltip\", { attrs: { effect: \"dark\", placement: \"right\" } }, [\n _c(\n \"div\",\n { attrs: { slot: \"content\" }, slot: \"content\" },\n [_vm._t(\"title\")],\n 2\n ),\n _c(\n \"div\",\n {\n staticStyle: {\n position: \"absolute\",\n left: \"0\",\n top: \"0\",\n height: \"100%\",\n width: \"100%\",\n display: \"inline-block\",\n \"box-sizing\": \"border-box\",\n padding: \"0 20px\"\n }\n },\n [_vm._t(\"default\")],\n 2\n )\n ])\n : [_vm._t(\"default\"), _vm._t(\"title\")]\n ],\n 2\n )\n}\nvar menu_itemvue_type_template_id_2a5dbfea_staticRenderFns = []\nmenu_itemvue_type_template_id_2a5dbfea_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/menu/src/menu-item.vue?vue&type=template&id=2a5dbfea&\n\n// EXTERNAL MODULE: external \"element-ui/lib/tooltip\"\nvar tooltip_ = __webpack_require__(26);\nvar tooltip_default = /*#__PURE__*/__webpack_require__.n(tooltip_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/menu-item.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var menu_itemvue_type_script_lang_js_ = ({\n name: 'ElMenuItem',\n\n componentName: 'ElMenuItem',\n\n mixins: [menu_mixin, emitter_default.a],\n\n components: { ElTooltip: tooltip_default.a },\n\n props: {\n index: {\n default: null,\n validator: function validator(val) {\n return typeof val === 'string' || val === null;\n }\n },\n route: [String, Object],\n disabled: Boolean\n },\n computed: {\n active: function active() {\n return this.index === this.rootMenu.activeIndex;\n },\n hoverBackground: function hoverBackground() {\n return this.rootMenu.hoverBackground;\n },\n backgroundColor: function backgroundColor() {\n return this.rootMenu.backgroundColor || '';\n },\n activeTextColor: function activeTextColor() {\n return this.rootMenu.activeTextColor || '';\n },\n textColor: function textColor() {\n return this.rootMenu.textColor || '';\n },\n mode: function mode() {\n return this.rootMenu.mode;\n },\n itemStyle: function itemStyle() {\n var style = {\n color: this.active ? this.activeTextColor : this.textColor\n };\n if (this.mode === 'horizontal' && !this.isNested) {\n style.borderBottomColor = this.active ? this.rootMenu.activeTextColor ? this.activeTextColor : '' : 'transparent';\n }\n return style;\n },\n isNested: function isNested() {\n return this.parentMenu !== this.rootMenu;\n }\n },\n methods: {\n onMouseEnter: function onMouseEnter() {\n if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;\n this.$el.style.backgroundColor = this.hoverBackground;\n },\n onMouseLeave: function onMouseLeave() {\n if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;\n this.$el.style.backgroundColor = this.backgroundColor;\n },\n handleClick: function handleClick() {\n if (!this.disabled) {\n this.dispatch('ElMenu', 'item-click', this);\n this.$emit('click', this);\n }\n }\n },\n mounted: function mounted() {\n this.parentMenu.addItem(this);\n this.rootMenu.addItem(this);\n },\n beforeDestroy: function beforeDestroy() {\n this.parentMenu.removeItem(this);\n this.rootMenu.removeItem(this);\n }\n});\n// CONCATENATED MODULE: ./packages/menu/src/menu-item.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_menu_itemvue_type_script_lang_js_ = (menu_itemvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/menu/src/menu-item.vue\n\n\n\n\n\n/* normalize component */\n\nvar menu_item_component = normalizeComponent(\n src_menu_itemvue_type_script_lang_js_,\n menu_itemvue_type_template_id_2a5dbfea_render,\n menu_itemvue_type_template_id_2a5dbfea_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var menu_item_api; }\nmenu_item_component.options.__file = \"packages/menu/src/menu-item.vue\"\n/* harmony default export */ var menu_item = (menu_item_component.exports);\n// CONCATENATED MODULE: ./packages/menu-item/index.js\n\n\n/* istanbul ignore next */\nmenu_item.install = function (Vue) {\n Vue.component(menu_item.name, menu_item);\n};\n\n/* harmony default export */ var packages_menu_item = (menu_item);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/menu-item-group.vue?vue&type=template&id=543b7bdc&\nvar menu_item_groupvue_type_template_id_543b7bdc_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"li\", { staticClass: \"el-menu-item-group\" }, [\n _c(\n \"div\",\n {\n staticClass: \"el-menu-item-group__title\",\n style: { paddingLeft: _vm.levelPadding + \"px\" }\n },\n [!_vm.$slots.title ? [_vm._v(_vm._s(_vm.title))] : _vm._t(\"title\")],\n 2\n ),\n _c(\"ul\", [_vm._t(\"default\")], 2)\n ])\n}\nvar menu_item_groupvue_type_template_id_543b7bdc_staticRenderFns = []\nmenu_item_groupvue_type_template_id_543b7bdc_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/menu/src/menu-item-group.vue?vue&type=template&id=543b7bdc&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/menu-item-group.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var menu_item_groupvue_type_script_lang_js_ = ({\n name: 'ElMenuItemGroup',\n\n componentName: 'ElMenuItemGroup',\n\n inject: ['rootMenu'],\n props: {\n title: {\n type: String\n }\n },\n data: function data() {\n return {\n paddingLeft: 20\n };\n },\n\n computed: {\n levelPadding: function levelPadding() {\n var padding = 20;\n var parent = this.$parent;\n if (this.rootMenu.collapse) return 20;\n while (parent && parent.$options.componentName !== 'ElMenu') {\n if (parent.$options.componentName === 'ElSubmenu') {\n padding += 20;\n }\n parent = parent.$parent;\n }\n return padding;\n }\n }\n});\n// CONCATENATED MODULE: ./packages/menu/src/menu-item-group.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_menu_item_groupvue_type_script_lang_js_ = (menu_item_groupvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/menu/src/menu-item-group.vue\n\n\n\n\n\n/* normalize component */\n\nvar menu_item_group_component = normalizeComponent(\n src_menu_item_groupvue_type_script_lang_js_,\n menu_item_groupvue_type_template_id_543b7bdc_render,\n menu_item_groupvue_type_template_id_543b7bdc_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var menu_item_group_api; }\nmenu_item_group_component.options.__file = \"packages/menu/src/menu-item-group.vue\"\n/* harmony default export */ var menu_item_group = (menu_item_group_component.exports);\n// CONCATENATED MODULE: ./packages/menu-item-group/index.js\n\n\n/* istanbul ignore next */\nmenu_item_group.install = function (Vue) {\n Vue.component(menu_item_group.name, menu_item_group);\n};\n\n/* harmony default export */ var packages_menu_item_group = (menu_item_group);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/input/src/input.vue?vue&type=template&id=343dd774&\nvar inputvue_type_template_id_343dd774_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n class: [\n _vm.type === \"textarea\" ? \"el-textarea\" : \"el-input\",\n _vm.inputSize ? \"el-input--\" + _vm.inputSize : \"\",\n {\n \"is-disabled\": _vm.inputDisabled,\n \"is-exceed\": _vm.inputExceed,\n \"el-input-group\": _vm.$slots.prepend || _vm.$slots.append,\n \"el-input-group--append\": _vm.$slots.append,\n \"el-input-group--prepend\": _vm.$slots.prepend,\n \"el-input--prefix\": _vm.$slots.prefix || _vm.prefixIcon,\n \"el-input--suffix\":\n _vm.$slots.suffix ||\n _vm.suffixIcon ||\n _vm.clearable ||\n _vm.showPassword\n }\n ],\n on: {\n mouseenter: function($event) {\n _vm.hovering = true\n },\n mouseleave: function($event) {\n _vm.hovering = false\n }\n }\n },\n [\n _vm.type !== \"textarea\"\n ? [\n _vm.$slots.prepend\n ? _c(\n \"div\",\n { staticClass: \"el-input-group__prepend\" },\n [_vm._t(\"prepend\")],\n 2\n )\n : _vm._e(),\n _vm.type !== \"textarea\"\n ? _c(\n \"input\",\n _vm._b(\n {\n ref: \"input\",\n staticClass: \"el-input__inner\",\n attrs: {\n tabindex: _vm.tabindex,\n type: _vm.showPassword\n ? _vm.passwordVisible\n ? \"text\"\n : \"password\"\n : _vm.type,\n disabled: _vm.inputDisabled,\n readonly: _vm.readonly,\n autocomplete: _vm.autoComplete || _vm.autocomplete,\n \"aria-label\": _vm.label\n },\n on: {\n compositionstart: _vm.handleCompositionStart,\n compositionupdate: _vm.handleCompositionUpdate,\n compositionend: _vm.handleCompositionEnd,\n input: _vm.handleInput,\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n change: _vm.handleChange\n }\n },\n \"input\",\n _vm.$attrs,\n false\n )\n )\n : _vm._e(),\n _vm.$slots.prefix || _vm.prefixIcon\n ? _c(\n \"span\",\n { staticClass: \"el-input__prefix\" },\n [\n _vm._t(\"prefix\"),\n _vm.prefixIcon\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: _vm.prefixIcon\n })\n : _vm._e()\n ],\n 2\n )\n : _vm._e(),\n _vm.getSuffixVisible()\n ? _c(\"span\", { staticClass: \"el-input__suffix\" }, [\n _c(\n \"span\",\n { staticClass: \"el-input__suffix-inner\" },\n [\n !_vm.showClear ||\n !_vm.showPwdVisible ||\n !_vm.isWordLimitVisible\n ? [\n _vm._t(\"suffix\"),\n _vm.suffixIcon\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: _vm.suffixIcon\n })\n : _vm._e()\n ]\n : _vm._e(),\n _vm.showClear\n ? _c(\"i\", {\n staticClass:\n \"el-input__icon el-icon-circle-close el-input__clear\",\n on: {\n mousedown: function($event) {\n $event.preventDefault()\n },\n click: _vm.clear\n }\n })\n : _vm._e(),\n _vm.showPwdVisible\n ? _c(\"i\", {\n staticClass:\n \"el-input__icon el-icon-view el-input__clear\",\n on: { click: _vm.handlePasswordVisible }\n })\n : _vm._e(),\n _vm.isWordLimitVisible\n ? _c(\"span\", { staticClass: \"el-input__count\" }, [\n _c(\n \"span\",\n { staticClass: \"el-input__count-inner\" },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.textLength) +\n \"/\" +\n _vm._s(_vm.upperLimit) +\n \"\\n \"\n )\n ]\n )\n ])\n : _vm._e()\n ],\n 2\n ),\n _vm.validateState\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: [\"el-input__validateIcon\", _vm.validateIcon]\n })\n : _vm._e()\n ])\n : _vm._e(),\n _vm.$slots.append\n ? _c(\n \"div\",\n { staticClass: \"el-input-group__append\" },\n [_vm._t(\"append\")],\n 2\n )\n : _vm._e()\n ]\n : _c(\n \"textarea\",\n _vm._b(\n {\n ref: \"textarea\",\n staticClass: \"el-textarea__inner\",\n style: _vm.textareaStyle,\n attrs: {\n tabindex: _vm.tabindex,\n disabled: _vm.inputDisabled,\n readonly: _vm.readonly,\n autocomplete: _vm.autoComplete || _vm.autocomplete,\n \"aria-label\": _vm.label\n },\n on: {\n compositionstart: _vm.handleCompositionStart,\n compositionupdate: _vm.handleCompositionUpdate,\n compositionend: _vm.handleCompositionEnd,\n input: _vm.handleInput,\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n change: _vm.handleChange\n }\n },\n \"textarea\",\n _vm.$attrs,\n false\n )\n ),\n _vm.isWordLimitVisible && _vm.type === \"textarea\"\n ? _c(\"span\", { staticClass: \"el-input__count\" }, [\n _vm._v(_vm._s(_vm.textLength) + \"/\" + _vm._s(_vm.upperLimit))\n ])\n : _vm._e()\n ],\n 2\n )\n}\nvar inputvue_type_template_id_343dd774_staticRenderFns = []\ninputvue_type_template_id_343dd774_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/input/src/input.vue?vue&type=template&id=343dd774&\n\n// CONCATENATED MODULE: ./packages/input/src/calcTextareaHeight.js\nvar hiddenTextarea = void 0;\n\nvar HIDDEN_STYLE = '\\n height:0 !important;\\n visibility:hidden !important;\\n overflow:hidden !important;\\n position:absolute !important;\\n z-index:-1000 !important;\\n top:0 !important;\\n right:0 !important\\n';\n\nvar CONTEXT_STYLE = ['letter-spacing', 'line-height', 'padding-top', 'padding-bottom', 'font-family', 'font-weight', 'font-size', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-left', 'padding-right', 'border-width', 'box-sizing'];\n\nfunction calculateNodeStyling(targetElement) {\n var style = window.getComputedStyle(targetElement);\n\n var boxSizing = style.getPropertyValue('box-sizing');\n\n var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));\n\n var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));\n\n var contextStyle = CONTEXT_STYLE.map(function (name) {\n return name + ':' + style.getPropertyValue(name);\n }).join(';');\n\n return { contextStyle: contextStyle, paddingSize: paddingSize, borderSize: borderSize, boxSizing: boxSizing };\n}\n\nfunction calcTextareaHeight(targetElement) {\n var minRows = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var maxRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n document.body.appendChild(hiddenTextarea);\n }\n\n var _calculateNodeStyling = calculateNodeStyling(targetElement),\n paddingSize = _calculateNodeStyling.paddingSize,\n borderSize = _calculateNodeStyling.borderSize,\n boxSizing = _calculateNodeStyling.boxSizing,\n contextStyle = _calculateNodeStyling.contextStyle;\n\n hiddenTextarea.setAttribute('style', contextStyle + ';' + HIDDEN_STYLE);\n hiddenTextarea.value = targetElement.value || targetElement.placeholder || '';\n\n var height = hiddenTextarea.scrollHeight;\n var result = {};\n\n if (boxSizing === 'border-box') {\n height = height + borderSize;\n } else if (boxSizing === 'content-box') {\n height = height - paddingSize;\n }\n\n hiddenTextarea.value = '';\n var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n\n if (minRows !== null) {\n var minHeight = singleRowHeight * minRows;\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n height = Math.max(minHeight, height);\n result.minHeight = minHeight + 'px';\n }\n if (maxRows !== null) {\n var maxHeight = singleRowHeight * maxRows;\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n height = Math.min(maxHeight, height);\n }\n result.height = height + 'px';\n hiddenTextarea.parentNode && hiddenTextarea.parentNode.removeChild(hiddenTextarea);\n hiddenTextarea = null;\n return result;\n};\n// EXTERNAL MODULE: external \"element-ui/lib/utils/merge\"\nvar merge_ = __webpack_require__(7);\nvar merge_default = /*#__PURE__*/__webpack_require__.n(merge_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/shared\"\nvar shared_ = __webpack_require__(19);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/input/src/input.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n/* harmony default export */ var inputvue_type_script_lang_js_ = ({\n name: 'ElInput',\n\n componentName: 'ElInput',\n\n mixins: [emitter_default.a, migrating_default.a],\n\n inheritAttrs: false,\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n data: function data() {\n return {\n textareaCalcStyle: {},\n hovering: false,\n focused: false,\n isComposing: false,\n passwordVisible: false\n };\n },\n\n\n props: {\n value: [String, Number],\n size: String,\n resize: String,\n form: String,\n disabled: Boolean,\n readonly: Boolean,\n type: {\n type: String,\n default: 'text'\n },\n autosize: {\n type: [Boolean, Object],\n default: false\n },\n autocomplete: {\n type: String,\n default: 'off'\n },\n /** @Deprecated in next major version */\n autoComplete: {\n type: String,\n validator: function validator(val) {\n false && false;\n return true;\n }\n },\n validateEvent: {\n type: Boolean,\n default: true\n },\n suffixIcon: String,\n prefixIcon: String,\n label: String,\n clearable: {\n type: Boolean,\n default: false\n },\n showPassword: {\n type: Boolean,\n default: false\n },\n showWordLimit: {\n type: Boolean,\n default: false\n },\n tabindex: String\n },\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n validateState: function validateState() {\n return this.elFormItem ? this.elFormItem.validateState : '';\n },\n needStatusIcon: function needStatusIcon() {\n return this.elForm ? this.elForm.statusIcon : false;\n },\n validateIcon: function validateIcon() {\n return {\n validating: 'el-icon-loading',\n success: 'el-icon-circle-check',\n error: 'el-icon-circle-close'\n }[this.validateState];\n },\n textareaStyle: function textareaStyle() {\n return merge_default()({}, this.textareaCalcStyle, { resize: this.resize });\n },\n inputSize: function inputSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n inputDisabled: function inputDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n },\n nativeInputValue: function nativeInputValue() {\n return this.value === null || this.value === undefined ? '' : String(this.value);\n },\n showClear: function showClear() {\n return this.clearable && !this.inputDisabled && !this.readonly && this.nativeInputValue && (this.focused || this.hovering);\n },\n showPwdVisible: function showPwdVisible() {\n return this.showPassword && !this.inputDisabled && !this.readonly && (!!this.nativeInputValue || this.focused);\n },\n isWordLimitVisible: function isWordLimitVisible() {\n return this.showWordLimit && this.$attrs.maxlength && (this.type === 'text' || this.type === 'textarea') && !this.inputDisabled && !this.readonly && !this.showPassword;\n },\n upperLimit: function upperLimit() {\n return this.$attrs.maxlength;\n },\n textLength: function textLength() {\n if (typeof this.value === 'number') {\n return String(this.value).length;\n }\n\n return (this.value || '').length;\n },\n inputExceed: function inputExceed() {\n // show exceed style if length of initial value greater then maxlength\n return this.isWordLimitVisible && this.textLength > this.upperLimit;\n }\n },\n\n watch: {\n value: function value(val) {\n this.$nextTick(this.resizeTextarea);\n if (this.validateEvent) {\n this.dispatch('ElFormItem', 'el.form.change', [val]);\n }\n },\n\n // native input value is set explicitly\n // do not use v-model / :value in template\n // see: https://github.com/ElemeFE/element/issues/14521\n nativeInputValue: function nativeInputValue() {\n this.setNativeInputValue();\n },\n\n // when change between and