{"version":3,"file":"js/chunk-vendors.js","mappings":";;;;;;;;;;;;;;;AAeA,SAASA,EAAUC,EAASC,EAAYC,EAAGC,GACvC,SAASC,EAAMC,GAAS,OAAOA,aAAiBH,EAAIG,EAAQ,IAAIH,GAAE,SAAUI,GAAWA,EAAQD,EAAQ,GAAI,CAC3G,OAAO,IAAKH,IAAMA,EAAIK,WAAU,SAAUD,EAASE,GAC/C,SAASC,EAAUJ,GAAS,IAAMK,EAAKP,EAAUQ,KAAKN,GAAS,CAAE,MAAOO,GAAKJ,EAAOI,EAAI,CAAE,CAC1F,SAASC,EAASR,GAAS,IAAMK,EAAKP,EAAU,SAASE,GAAS,CAAE,MAAOO,GAAKJ,EAAOI,EAAI,CAAE,CAC7F,SAASF,EAAKI,GAAUA,EAAOC,KAAOT,EAAQQ,EAAOT,OAASD,EAAMU,EAAOT,OAAOW,KAAKP,EAAWI,EAAW,CAC7GH,GAAMP,EAAYA,EAAUc,MAAMjB,EAASC,GAAc,KAAKU,OAClE,GACJ,C,kBAMA,IAAIO,EAAgB,SAASC,EAAMC,EAAGC,GACpC,GAAID,IAAMC,EAAG,OAAO,EAEpB,GAAID,GAAKC,GAAiB,iBAALD,GAA6B,iBAALC,EAAe,CAC1D,GAAID,EAAEE,cAAgBD,EAAEC,YAAa,OAAO,EAE5C,IAAIC,EAAQC,EAAGC,EACf,GAAIC,MAAMC,QAAQP,GAAI,CAEpB,GADAG,EAASH,EAAEG,OACPA,GAAUF,EAAEE,OAAQ,OAAO,EAC/B,IAAKC,EAAID,EAAgB,IAARC,KACf,IAAKL,EAAMC,EAAEI,GAAIH,EAAEG,IAAK,OAAO,EACjC,OAAO,CACT,CAIA,GAAIJ,EAAEE,cAAgBM,OAAQ,OAAOR,EAAES,SAAWR,EAAEQ,QAAUT,EAAEU,QAAUT,EAAES,MAC5E,GAAIV,EAAEW,UAAYC,OAAOC,UAAUF,QAAS,OAAOX,EAAEW,YAAcV,EAAEU,UACrE,GAAIX,EAAEc,WAAaF,OAAOC,UAAUC,SAAU,OAAOd,EAAEc,aAAeb,EAAEa,WAIxE,GAFAT,EAAOO,OAAOP,KAAKL,GACnBG,EAASE,EAAKF,OACVA,IAAWS,OAAOP,KAAKJ,GAAGE,OAAQ,OAAO,EAE7C,IAAKC,EAAID,EAAgB,IAARC,KACf,IAAKQ,OAAOC,UAAUE,eAAeC,KAAKf,EAAGI,EAAKD,IAAK,OAAO,EAEhE,IAAKA,EAAID,EAAgB,IAARC,KAAY,CAC3B,IAAIa,EAAMZ,EAAKD,GAEf,IAAKL,EAAMC,EAAEiB,GAAMhB,EAAEgB,IAAO,OAAO,CACrC,CAEA,OAAO,CACT,CAGA,OAAOjB,IAAIA,GAAKC,IAAIA,CACtB,EAiBA,MAAMiB,EAAa,uBAInB,IAAIC,GACJ,SAAWA,GACPA,EAAaA,EAAa,eAAiB,GAAK,cAChDA,EAAaA,EAAa,WAAa,GAAK,UAC5CA,EAAaA,EAAa,WAAa,GAAK,UAC5CA,EAAaA,EAAa,WAAa,GAAK,SAC/C,EALD,CAKGA,IAAiBA,EAAe,CAAC,IAoBpC,MAAMC,EAUF,WAAAlB,EAAY,OAAEmB,EAAM,mBAAEC,EAAkB,QAAEC,EAAO,OAAEC,EAAM,GAAEC,EAAKP,EAAU,SAAEQ,EAAQ,UAAEC,EAAY,GAAE,OAAEC,EAAM,MAAEC,EAAK,OAAEC,EAAM,QAAEC,EAAU,EAAC,IAAEC,EAAM,0CAAyC,QAAEC,IAkBvL,GAjBAC,KAAKC,UAAY,GACjBD,KAAKvC,MAAO,EACZuC,KAAKE,SAAU,EACfF,KAAKG,OAAS,GACdH,KAAKb,OAASA,EACda,KAAKZ,mBAAqBA,EAC1BY,KAAKX,QAAUA,EACfW,KAAKV,OAASA,EACdU,KAAKT,GAAKA,GAAMP,EAChBgB,KAAKR,SAAWA,EAChBQ,KAAKP,UAAYA,EACjBO,KAAKN,OAASA,EACdM,KAAKL,MAAQA,EACbK,KAAKJ,OAASA,EACdI,KAAKH,QAAUA,EACfG,KAAKF,IAAMA,EACXE,KAAKD,QAAUA,EACXb,EAAOkB,SAAU,CACjB,IAAKxC,EAAcoC,KAAKK,QAASnB,EAAOkB,SAASC,SAC7C,MAAM,IAAIC,MAAM,2DAA2DC,KAAKC,UAAUR,KAAKK,gBAAgBE,KAAKC,UAAUtB,EAAOkB,SAASC,YAElJ,OAAOnB,EAAOkB,QAClB,CACAlB,EAAOkB,SAAWJ,IACtB,CACA,WAAIK,GACA,MAAO,CACHN,QAASC,KAAKD,QACdZ,OAAQa,KAAKb,OACbE,QAASW,KAAKX,QACdC,OAAQU,KAAKV,OACbC,GAAIS,KAAKT,GACTE,UAAWO,KAAKP,UAChBD,SAAUQ,KAAKR,SACfI,OAAQI,KAAKJ,OACbF,OAAQM,KAAKN,OACbC,MAAOK,KAAKL,MACZG,IAAKE,KAAKF,IACVV,mBAAoBY,KAAKZ,mBAEjC,CACA,UAAIqB,GACA,OAAIT,KAAKG,OAAOlC,OACLgB,EAAayB,QAEpBV,KAAKvC,KACEwB,EAAa0B,QAEpBX,KAAKE,QACEjB,EAAa2B,QAEjB3B,EAAa4B,WACxB,CACA,UAAIC,GACA,OAAOd,KAAKvC,OAASuC,KAAKE,SAAWF,KAAKG,OAAOlC,QAAU+B,KAAKH,QAAU,CAC9E,CAOA,SAAAkB,GACI,IAAIjB,EAAME,KAAKF,IA6Bf,OA5BAA,GAAO,iCACHE,KAAKb,SACLW,GAAO,QAAQE,KAAKb,UAEpBa,KAAKX,UACLS,GAAO,YAAYE,KAAKX,WAExBW,KAAKV,SACLQ,GAAO,WAAWE,KAAKV,UAEvBU,KAAKP,UAAUxB,OAAS,IACxB6B,GAAO,cAAcE,KAAKP,UAAUuB,KAAK,QAEzChB,KAAKR,WACLM,GAAO,aAAaE,KAAKR,YAEzBQ,KAAKJ,SACLE,GAAO,WAAWE,KAAKJ,UAEvBI,KAAKD,UACLD,GAAO,MAAME,KAAKD,WAElBC,KAAKN,SACLI,GAAO,YAAYE,KAAKN,OAAOsB,KAAK,QAEpChB,KAAKZ,qBACLU,GAAO,yBAAyBE,KAAKZ,sBAElCU,CACX,CACA,YAAAmB,GACI,MAAMC,EAASC,SAASC,eAAepB,KAAKT,IACxC2B,GACAA,EAAOG,QAEf,CAKA,IAAAC,GACI,OAAOtB,KAAKuB,aAChB,CAOA,WAAAA,GACI,OAAO,IAAItE,SAAQ,CAACD,EAASE,KACzB8C,KAAKwB,cAAcC,IACVA,EAIDvE,EAAOuE,EAAIC,OAHX1E,EAAQ2E,OAAOC,OAInB,GACF,GAEV,CACA,aAAAC,CAAcC,GAEV,OADA9B,KAAK+B,UACEH,OAAOI,KAAKH,cAAcC,EACrC,CAKA,YAAAN,CAAaS,GACTjC,KAAKC,UAAUiC,KAAKD,GACpBjC,KAAK+B,SACT,CAIA,SAAAI,GACI,IAAIC,EAAIC,EACR,GAAIlB,SAASC,eAAepB,KAAKT,IAG7B,YADAS,KAAKsC,WAGT,MAAMC,EAAS,CACXxD,IAAKiB,KAAKb,OACVE,QAASW,KAAKX,QACdC,OAAQU,KAAKV,OACbG,UAAWO,KAAKP,UAAUxB,QAAU+B,KAAKP,UACzC+C,EAAGxC,KAAKD,QACRL,OAAQM,KAAKN,OACbF,SAAUQ,KAAKR,SACfI,OAAQI,KAAKJ,OACbR,mBAAoBY,KAAKZ,oBAG7BV,OAAOP,KAAKoE,GAAQE,SAEnB1D,IAASwD,EAAOxD,WAAewD,EAAOxD,MAC4F,QAA5HsD,EAA8E,QAAxED,EAAgB,OAAXT,aAA8B,IAAXA,YAAoB,EAASA,OAAOC,cAA2B,IAAPQ,OAAgB,EAASA,EAAGJ,YAAyB,IAAPK,OAAgB,EAASA,EAAGR,gBAInK,CAAEa,IAEE,IAAIC,EAAG7E,EAAG8E,EAAGC,EAAI,iCAAkCC,EAAI,SAAUC,EAAI,gBAAiBC,EAAI,SAAUC,EAAI9B,SAAUpD,EAAI4D,OAEtH5D,EAAIA,EAAE+E,KAAO/E,EAAE+E,GAAK,CAAC,GAErB,MAAMI,EAAInF,EAAEiE,OAASjE,EAAEiE,KAAO,CAAC,GAAImB,EAAI,IAAIC,IAAO9F,EAAI,IAAI+F,gBAAmBC,EAAI,IAEjFX,IAAMA,EAAI,IAAI1F,SAAQ,CAACsG,EAAGC,IAAM/G,EAAUuD,UAAM,OAAQ,GAAQ,YAC5D,IAAIoC,EAKJ,IAAKQ,WAJE9E,EAAImF,EAAEQ,cAAc,UAC3B3F,EAAEyB,GAAKS,KAAKT,GACZjC,EAAEoG,IAAI,YAAa,IAAIP,GAAK,IAElBT,EACNpF,EAAEoG,IAAId,EAAEe,QAAQ,UAAWC,GAAM,IAAMA,EAAE,GAAGC,gBAAgBnB,EAAEE,IAClEtF,EAAEoG,IAAI,WAAYZ,EAAI,SAAWE,GACjClF,EAAEgG,IAAM9D,KAAKF,IAAM,IAAMxC,EACzB4F,EAAEF,GAAKO,EACPzF,EAAEiG,QAAU,IAAOpB,EAAIa,EAAElD,MAAMuC,EAAI,qBAEnC/E,EAAE6B,MAAQK,KAAKL,QAAsD,QAA3CyC,EAAKa,EAAEe,cAAc,wBAAqC,IAAP5B,OAAgB,EAASA,EAAGzC,QAAU,GACnHsD,EAAEgB,KAAKC,OAAOpG,EAClB,OAEAoF,EAAEH,GAAKoB,QAAQC,KAAKvB,EAAI,8BAA+BH,GAAMQ,EAAEH,GAAK,CAACQ,KAAMC,IAAML,EAAEkB,IAAId,IAAMD,IAAI5F,MAAK,IAAMwF,EAAEH,GAAGQ,KAAMC,IAC1H,EA1BD,CA0BGjB,GAMP,MAAM+B,EAAkBtE,KAAKP,UAAU8E,KAAKC,GAAYxE,KAAK6B,cAAc2C,KAEtEF,EAAgBrG,QACjBqG,EAAgBpC,KAAKlC,KAAK6B,cAAc,SAE5C5E,QAAQwH,IAAIH,GAAiB5G,MAAK,IAAMsC,KAAKsC,aAAaZ,IACtD,MAAMgD,EAAQ,IAAIC,WAAW,QAAS,CAAEjD,UACxC1B,KAAK4E,kBAAkBF,EAAM,GAErC,CAIA,KAAAG,GACI7E,KAAKiB,eACLjB,KAAKvC,MAAO,EACZuC,KAAKE,SAAU,EACfF,KAAKG,OAAS,GACdH,KAAK8E,aAAe,IACxB,CACA,qBAAAC,GACQ/E,KAAKc,QACLd,KAAK6E,OAEb,CACA,iBAAAD,CAAkBtH,GAEd,GADA0C,KAAKG,OAAO+B,KAAK5E,GACb0C,KAAKG,OAAOlC,QAAU+B,KAAKH,QAAS,CACpC,MAAMmF,EAAQhF,KAAKG,OAAOlC,OAASgH,KAAKC,IAAI,EAAGlF,KAAKG,OAAOlC,QAC3DkG,QAAQzC,MAAM,kDAAkDsD,SAChEG,YAAW,KACPnF,KAAKiB,eACLjB,KAAKmC,WAAW,GACjB6C,EACP,MAEIhF,KAAK8E,aAAexH,EACpB0C,KAAKsC,UAEb,CACA,QAAAA,GACItC,KAAKvC,MAAO,EACZuC,KAAKE,SAAU,EACfF,KAAKC,UAAUwC,SAAS2C,IACpBA,EAAGpF,KAAK8E,aAAa,IAEzB9E,KAAKC,UAAY,EACrB,CACA,OAAA8B,GAEI,GADA/B,KAAK+E,wBACD/E,KAAKvC,KACLuC,KAAKsC,eAEJ,CAED,GAAIX,OAAOC,QAAUD,OAAOC,OAAOI,MAAQL,OAAOC,OAAOI,KAAKjC,QAI1D,OAHAoE,QAAQC,KAAK,6JAEbpE,KAAKsC,WAGLtC,KAAKE,UAELF,KAAKE,SAAU,EACfF,KAAKmC,YAEb,CACJ,E;;;;;;CClYJ,SAAWkD,EAAQC,GAC8CC,EAAOC,QAAUF,EAAQ,EAAQ,KAAkB,EAAQ,MAA2B,EAAQ,MAAqB,EAAQ,MAG3L,EAJD,CAIGtF,GAAM,SAAWyF,EAAMC,EAAcC,EAAQC,GAAY,aAc1D,MAAMC,EAAU,QAMhB,MAAMC,UAAsBH,EAC1B,WAAA3H,CAAY+H,EAASC,GACnBC,QACAF,EAAUH,EAASM,WAAWH,GACzBA,IAGL/F,KAAKmG,SAAWJ,EAChB/F,KAAKoG,QAAUpG,KAAKqG,WAAWL,GAC/BP,EAAK/B,IAAI1D,KAAKmG,SAAUnG,KAAKhC,YAAYsI,SAAUtG,MACrD,CAGA,OAAAuG,GACEd,EAAKpE,OAAOrB,KAAKmG,SAAUnG,KAAKhC,YAAYsI,UAC5CZ,EAAac,IAAIxG,KAAKmG,SAAUnG,KAAKhC,YAAYyI,WACjD,IAAK,MAAMC,KAAgBhI,OAAOiI,oBAAoB3G,MACpDA,KAAK0G,GAAgB,IAEzB,CACA,cAAAE,CAAetE,EAAUyD,EAASc,GAAa,GAC7CjB,EAASkB,uBAAuBxE,EAAUyD,EAASc,EACrD,CACA,UAAAR,CAAWL,GAIT,OAHAA,EAAShG,KAAK+G,gBAAgBf,EAAQhG,KAAKmG,UAC3CH,EAAShG,KAAKgH,kBAAkBhB,GAChChG,KAAKiH,iBAAiBjB,GACfA,CACT,CAGA,kBAAOkB,CAAYnB,GACjB,OAAON,EAAK0B,IAAIvB,EAASM,WAAWH,GAAU/F,KAAKsG,SACrD,CACA,0BAAOc,CAAoBrB,EAASC,EAAS,CAAC,GAC5C,OAAOhG,KAAKkH,YAAYnB,IAAY,IAAI/F,KAAK+F,EAA2B,kBAAXC,EAAsBA,EAAS,KAC9F,CACA,kBAAWH,GACT,OAAOA,CACT,CACA,mBAAWS,GACT,MAAO,MAAMtG,KAAKqH,MACpB,CACA,oBAAWZ,GACT,MAAO,IAAIzG,KAAKsG,UAClB,CACA,gBAAOgB,CAAUxF,GACf,MAAO,GAAGA,IAAO9B,KAAKyG,WACxB,EAGF,OAAOX,CAER,G;;;;;;CC7ED,SAAWT,EAAQC,GAC8CC,EAAOC,QAAUF,GAGjF,EAJD,CAIGtF,GAAM,WAAe,aAatB,MAAMuH,EAAa,IAAIC,IACjBC,EAAO,CACX,GAAA/D,CAAIqC,EAAShH,EAAKqB,GACXmH,EAAWG,IAAI3B,IAClBwB,EAAW7D,IAAIqC,EAAS,IAAIyB,KAE9B,MAAMG,EAAcJ,EAAWJ,IAAIpB,GAI9B4B,EAAYD,IAAI3I,IAA6B,IAArB4I,EAAYC,KAKzCD,EAAYjE,IAAI3E,EAAKqB,GAHnB+D,QAAQzC,MAAM,+EAA+EtD,MAAMyJ,KAAKF,EAAYxJ,QAAQ,MAIhI,EACA,GAAAgJ,CAAIpB,EAAShH,GACX,OAAIwI,EAAWG,IAAI3B,IACVwB,EAAWJ,IAAIpB,GAASoB,IAAIpI,IAE9B,IACT,EACA,MAAAsC,CAAO0E,EAAShH,GACd,IAAKwI,EAAWG,IAAI3B,GAClB,OAEF,MAAM4B,EAAcJ,EAAWJ,IAAIpB,GACnC4B,EAAYG,OAAO/I,GAGM,IAArB4I,EAAYC,MACdL,EAAWO,OAAO/B,EAEtB,GAGF,OAAO0B,CAER,G;;;;;;CCxDD,SAAWpC,EAAQC,GAC8CC,EAAOC,QAAUF,EAAQ,EAAQ,MAGjG,EAJD,CAIGtF,GAAM,SAAW4F,GAAY,aAc9B,MAAMmC,EAAiB,qBACjBC,EAAiB,OACjBC,EAAgB,SAChBC,EAAgB,CAAC,EACvB,IAAIC,EAAW,EACf,MAAMC,EAAe,CACnBC,WAAY,YACZC,WAAY,YAERC,EAAe,IAAInF,IAAI,CAAC,QAAS,WAAY,UAAW,YAAa,cAAe,aAAc,iBAAkB,YAAa,WAAY,YAAa,cAAe,YAAa,UAAW,WAAY,QAAS,oBAAqB,aAAc,YAAa,WAAY,cAAe,cAAe,cAAe,YAAa,eAAgB,gBAAiB,eAAgB,gBAAiB,aAAc,QAAS,OAAQ,SAAU,QAAS,SAAU,SAAU,UAAW,WAAY,OAAQ,SAAU,eAAgB,SAAU,OAAQ,mBAAoB,mBAAoB,QAAS,QAAS,WAM/lB,SAASoF,EAAazC,EAAS0C,GAC7B,OAAOA,GAAO,GAAGA,MAAQN,OAAgBpC,EAAQoC,UAAYA,GAC/D,CACA,SAASO,EAAiB3C,GACxB,MAAM0C,EAAMD,EAAazC,GAGzB,OAFAA,EAAQoC,SAAWM,EACnBP,EAAcO,GAAOP,EAAcO,IAAQ,CAAC,EACrCP,EAAcO,EACvB,CACA,SAASE,EAAiB5C,EAAS9D,GACjC,OAAO,SAAS2G,EAAQlE,GAOtB,OANAmE,EAAWnE,EAAO,CAChBoE,eAAgB/C,IAEd6C,EAAQG,QACVrD,EAAac,IAAIT,EAASrB,EAAMsE,KAAM/G,GAEjCA,EAAGtE,MAAMoI,EAAS,CAACrB,GAC5B,CACF,CACA,SAASuE,EAA2BlD,EAASmD,EAAUjH,GACrD,OAAO,SAAS2G,EAAQlE,GACtB,MAAMyE,EAAcpD,EAAQqD,iBAAiBF,GAC7C,IAAK,IAAI,OACPG,GACE3E,EAAO2E,GAAUA,IAAWrJ,KAAMqJ,EAASA,EAAOC,WACpD,IAAK,MAAMC,KAAcJ,EACvB,GAAII,IAAeF,EASnB,OANAR,EAAWnE,EAAO,CAChBoE,eAAgBO,IAEdT,EAAQG,QACVrD,EAAac,IAAIT,EAASrB,EAAMsE,KAAME,EAAUjH,GAE3CA,EAAGtE,MAAM0L,EAAQ,CAAC3E,GAG/B,CACF,CACA,SAAS8E,EAAYC,EAAQC,EAAUC,EAAqB,MAC1D,OAAOjL,OAAOkL,OAAOH,GAAQI,MAAKnF,GAASA,EAAMgF,WAAaA,GAAYhF,EAAMiF,qBAAuBA,GACzG,CACA,SAASG,EAAoBC,EAAmBnB,EAASoB,GACvD,MAAMC,EAAiC,kBAAZrB,EAErBc,EAAWO,EAAcD,EAAqBpB,GAAWoB,EAC/D,IAAIE,EAAYC,EAAaJ,GAI7B,OAHKxB,EAAab,IAAIwC,KACpBA,EAAYH,GAEP,CAACE,EAAaP,EAAUQ,EACjC,CACA,SAASE,EAAWrE,EAASgE,EAAmBnB,EAASoB,EAAoBjB,GAC3E,GAAiC,kBAAtBgB,IAAmChE,EAC5C,OAEF,IAAKkE,EAAaP,EAAUQ,GAAaJ,EAAoBC,EAAmBnB,EAASoB,GAIzF,GAAID,KAAqB3B,EAAc,CACrC,MAAMiC,EAAepI,GACZ,SAAUyC,GACf,IAAKA,EAAM4F,eAAiB5F,EAAM4F,gBAAkB5F,EAAMoE,iBAAmBpE,EAAMoE,eAAeyB,SAAS7F,EAAM4F,eAC/G,OAAOrI,EAAGnD,KAAKkB,KAAM0E,EAEzB,EAEFgF,EAAWW,EAAaX,EAC1B,CACA,MAAMD,EAASf,EAAiB3C,GAC1ByE,EAAWf,EAAOS,KAAeT,EAAOS,GAAa,CAAC,GACtDO,EAAmBjB,EAAYgB,EAAUd,EAAUO,EAAcrB,EAAU,MACjF,GAAI6B,EAEF,YADAA,EAAiB1B,OAAS0B,EAAiB1B,QAAUA,GAGvD,MAAMN,EAAMD,EAAakB,EAAUK,EAAkBpG,QAAQoE,EAAgB,KACvE9F,EAAKgI,EAAchB,EAA2BlD,EAAS6C,EAASc,GAAYf,EAAiB5C,EAAS2D,GAC5GzH,EAAG0H,mBAAqBM,EAAcrB,EAAU,KAChD3G,EAAGyH,SAAWA,EACdzH,EAAG8G,OAASA,EACZ9G,EAAGkG,SAAWM,EACd+B,EAAS/B,GAAOxG,EAChB8D,EAAQ2E,iBAAiBR,EAAWjI,EAAIgI,EAC1C,CACA,SAASU,EAAc5E,EAAS0D,EAAQS,EAAWtB,EAASe,GAC1D,MAAM1H,EAAKuH,EAAYC,EAAOS,GAAYtB,EAASe,GAC9C1H,IAGL8D,EAAQ6E,oBAAoBV,EAAWjI,EAAI4I,QAAQlB,WAC5CF,EAAOS,GAAWjI,EAAGkG,UAC9B,CACA,SAAS2C,EAAyB/E,EAAS0D,EAAQS,EAAWa,GAC5D,MAAMC,EAAoBvB,EAAOS,IAAc,CAAC,EAChD,IAAK,MAAOe,EAAYvG,KAAUhG,OAAOwM,QAAQF,GAC3CC,EAAWE,SAASJ,IACtBJ,EAAc5E,EAAS0D,EAAQS,EAAWxF,EAAMgF,SAAUhF,EAAMiF,mBAGtE,CACA,SAASQ,EAAazF,GAGpB,OADAA,EAAQA,EAAMf,QAAQqE,EAAgB,IAC/BI,EAAa1D,IAAUA,CAChC,CACA,MAAMgB,EAAe,CACnB,EAAA0F,CAAGrF,EAASrB,EAAOkE,EAASoB,GAC1BI,EAAWrE,EAASrB,EAAOkE,EAASoB,GAAoB,EAC1D,EACA,GAAAqB,CAAItF,EAASrB,EAAOkE,EAASoB,GAC3BI,EAAWrE,EAASrB,EAAOkE,EAASoB,GAAoB,EAC1D,EACA,GAAAxD,CAAIT,EAASgE,EAAmBnB,EAASoB,GACvC,GAAiC,kBAAtBD,IAAmChE,EAC5C,OAEF,MAAOkE,EAAaP,EAAUQ,GAAaJ,EAAoBC,EAAmBnB,EAASoB,GACrFsB,EAAcpB,IAAcH,EAC5BN,EAASf,EAAiB3C,GAC1BiF,EAAoBvB,EAAOS,IAAc,CAAC,EAC1CqB,EAAcxB,EAAkByB,WAAW,KACjD,GAAwB,qBAAb9B,EAAX,CAQA,GAAI6B,EACF,IAAK,MAAME,KAAgB/M,OAAOP,KAAKsL,GACrCqB,EAAyB/E,EAAS0D,EAAQgC,EAAc1B,EAAkB2B,MAAM,IAGpF,IAAK,MAAOC,EAAajH,KAAUhG,OAAOwM,QAAQF,GAAoB,CACpE,MAAMC,EAAaU,EAAYhI,QAAQsE,EAAe,IACjDqD,IAAevB,EAAkBoB,SAASF,IAC7CN,EAAc5E,EAAS0D,EAAQS,EAAWxF,EAAMgF,SAAUhF,EAAMiF,mBAEpE,CAXA,KAPA,CAEE,IAAKjL,OAAOP,KAAK6M,GAAmB/M,OAClC,OAEF0M,EAAc5E,EAAS0D,EAAQS,EAAWR,EAAUO,EAAcrB,EAAU,KAE9E,CAYF,EACA,OAAAgD,CAAQ7F,EAASrB,EAAOmH,GACtB,GAAqB,kBAAVnH,IAAuBqB,EAChC,OAAO,KAET,MAAM+F,EAAIlG,EAASmG,YACb7B,EAAYC,EAAazF,GACzB4G,EAAc5G,IAAUwF,EAC9B,IAAI8B,EAAc,KACdC,GAAU,EACVC,GAAiB,EACjBC,GAAmB,EACnBb,GAAeQ,IACjBE,EAAcF,EAAEM,MAAM1H,EAAOmH,GAC7BC,EAAE/F,GAAS6F,QAAQI,GACnBC,GAAWD,EAAYK,uBACvBH,GAAkBF,EAAYM,gCAC9BH,EAAmBH,EAAYO,sBAEjC,MAAMC,EAAM3D,EAAW,IAAIuD,MAAM1H,EAAO,CACtCuH,UACAQ,YAAY,IACVZ,GAUJ,OATIM,GACFK,EAAIE,iBAEFR,GACFnG,EAAQ4G,cAAcH,GAEpBA,EAAIL,kBAAoBH,GAC1BA,EAAYU,iBAEPF,CACT,GAEF,SAAS3D,EAAW+D,EAAKC,EAAO,CAAC,GAC/B,IAAK,MAAO9N,EAAKhC,KAAU2B,OAAOwM,QAAQ2B,GACxC,IACED,EAAI7N,GAAOhC,CACb,CAAE,MAAO+P,GACPpO,OAAOqO,eAAeH,EAAK7N,EAAK,CAC9BiO,cAAc,EACd,GAAA7F,GACE,OAAOpK,CACT,GAEJ,CAEF,OAAO6P,CACT,CAEA,OAAOlH,CAER,G;;;;;;CCtOD,SAAWL,EAAQC,GAC8CC,EAAOC,QAAUF,GAGjF,EAJD,CAIGtF,GAAM,WAAe,aAStB,SAASiN,EAAclQ,GACrB,GAAc,SAAVA,EACF,OAAO,EAET,GAAc,UAAVA,EACF,OAAO,EAET,GAAIA,IAAUmQ,OAAOnQ,GAAO6B,WAC1B,OAAOsO,OAAOnQ,GAEhB,GAAc,KAAVA,GAA0B,SAAVA,EAClB,OAAO,KAET,GAAqB,kBAAVA,EACT,OAAOA,EAET,IACE,OAAOwD,KAAK4M,MAAMC,mBAAmBrQ,GACvC,CAAE,MAAO+P,GACP,OAAO/P,CACT,CACF,CACA,SAASsQ,EAAiBtO,GACxB,OAAOA,EAAI4E,QAAQ,UAAU2J,GAAO,IAAIA,EAAIzJ,iBAC9C,CACA,MAAM0J,EAAc,CAClB,gBAAAC,CAAiBzH,EAAShH,EAAKhC,GAC7BgJ,EAAQ0H,aAAa,WAAWJ,EAAiBtO,KAAQhC,EAC3D,EACA,mBAAA2Q,CAAoB3H,EAAShH,GAC3BgH,EAAQ4H,gBAAgB,WAAWN,EAAiBtO,KACtD,EACA,iBAAA6O,CAAkB7H,GAChB,IAAKA,EACH,MAAO,CAAC,EAEV,MAAM8H,EAAa,CAAC,EACdC,EAASpP,OAAOP,KAAK4H,EAAQgI,SAASC,QAAOjP,GAAOA,EAAIyM,WAAW,QAAUzM,EAAIyM,WAAW,cAClG,IAAK,MAAMzM,KAAO+O,EAAQ,CACxB,IAAIG,EAAUlP,EAAI4E,QAAQ,MAAO,IACjCsK,EAAUA,EAAQC,OAAO,GAAGrK,cAAgBoK,EAAQvC,MAAM,EAAGuC,EAAQhQ,QACrE4P,EAAWI,GAAWhB,EAAclH,EAAQgI,QAAQhP,GACtD,CACA,OAAO8O,CACT,EACA,gBAAAM,CAAiBpI,EAAShH,GACxB,OAAOkO,EAAclH,EAAQqI,aAAa,WAAWf,EAAiBtO,MACxE,GAGF,OAAOwO,CAER,G;;;;;;CCjED,SAAWlI,EAAQC,GAC8CC,EAAOC,QAAUF,EAAQ,EAAQ,MAGjG,EAJD,CAIGtF,GAAM,SAAW4F,GAAY,aAS9B,MAAMyI,EAActI,IAClB,IAAImD,EAAWnD,EAAQqI,aAAa,kBACpC,IAAKlF,GAAyB,MAAbA,EAAkB,CACjC,IAAIoF,EAAgBvI,EAAQqI,aAAa,QAMzC,IAAKE,IAAkBA,EAAcnD,SAAS,OAASmD,EAAc9C,WAAW,KAC9E,OAAO,KAIL8C,EAAcnD,SAAS,OAASmD,EAAc9C,WAAW,OAC3D8C,EAAgB,IAAIA,EAAcC,MAAM,KAAK,MAE/CrF,EAAWoF,GAAmC,MAAlBA,EAAwB1I,EAAS4I,cAAcF,EAAcG,QAAU,IACrG,CACA,OAAOvF,CAAQ,EAEXwF,EAAiB,CACrB,IAAA7E,CAAKX,EAAUnD,EAAU5E,SAASwN,iBAChC,MAAO,GAAGC,UAAUC,QAAQlQ,UAAUyK,iBAAiBtK,KAAKiH,EAASmD,GACvE,EACA,OAAA4F,CAAQ5F,EAAUnD,EAAU5E,SAASwN,iBACnC,OAAOE,QAAQlQ,UAAUqF,cAAclF,KAAKiH,EAASmD,EACvD,EACA,QAAA6F,CAAShJ,EAASmD,GAChB,MAAO,GAAG0F,UAAU7I,EAAQgJ,UAAUf,QAAOgB,GAASA,EAAMC,QAAQ/F,IACtE,EACA,OAAAgG,CAAQnJ,EAASmD,GACf,MAAMgG,EAAU,GAChB,IAAIC,EAAWpJ,EAAQuD,WAAW8F,QAAQlG,GAC1C,MAAOiG,EACLD,EAAQhN,KAAKiN,GACbA,EAAWA,EAAS7F,WAAW8F,QAAQlG,GAEzC,OAAOgG,CACT,EACA,IAAAG,CAAKtJ,EAASmD,GACZ,IAAIoG,EAAWvJ,EAAQwJ,uBACvB,MAAOD,EAAU,CACf,GAAIA,EAASL,QAAQ/F,GACnB,MAAO,CAACoG,GAEVA,EAAWA,EAASC,sBACtB,CACA,MAAO,EACT,EAEA,IAAAlS,CAAK0I,EAASmD,GACZ,IAAI7L,EAAO0I,EAAQyJ,mBACnB,MAAOnS,EAAM,CACX,GAAIA,EAAK4R,QAAQ/F,GACf,MAAO,CAAC7L,GAEVA,EAAOA,EAAKmS,kBACd,CACA,MAAO,EACT,EACA,iBAAAC,CAAkB1J,GAChB,MAAM2J,EAAa,CAAC,IAAK,SAAU,QAAS,WAAY,SAAU,UAAW,aAAc,4BAA4BnL,KAAI2E,GAAY,GAAGA,2BAAiClI,KAAK,KAChL,OAAOhB,KAAK6J,KAAK6F,EAAY3J,GAASiI,QAAO2B,IAAO/J,EAASgK,WAAWD,IAAO/J,EAASiK,UAAUF,IACpG,EACA,sBAAAG,CAAuB/J,GACrB,MAAMmD,EAAWmF,EAAYtI,GAC7B,OAAImD,GACKwF,EAAeI,QAAQ5F,GAAYA,EAErC,IACT,EACA,sBAAA6G,CAAuBhK,GACrB,MAAMmD,EAAWmF,EAAYtI,GAC7B,OAAOmD,EAAWwF,EAAeI,QAAQ5F,GAAY,IACvD,EACA,+BAAA8G,CAAgCjK,GAC9B,MAAMmD,EAAWmF,EAAYtI,GAC7B,OAAOmD,EAAWwF,EAAe7E,KAAKX,GAAY,EACpD,GAGF,OAAOwF,CAER,G;;;;;;CCjGD,SAAWrJ,EAAQC,GAC8CC,EAAOC,QAAUF,EAAQ,EAAQ,MAAwB,EAAQ,MAA2B,EAAQ,MAA6B,EAAQ,MAAuB,EAAQ,MAAkC,EAAQ,KAAwB,EAAQ,MAAoB,EAAQ,MAG9U,EAJD,CAIGtF,GAAM,SAAW8F,EAAeJ,EAAcgJ,EAAgBuB,EAAUC,EAAuBC,EAAWvK,EAAUwK,GAAmB,aAcxI,MAAM/I,EAAO,QACPf,EAAW,WACXG,EAAY,IAAIH,IAChB+J,EAAe,YACfC,EAAa,SACbC,EAAa,OAAO9J,IACpB+J,EAAuB,gBAAgB/J,IACvCgK,EAAe,SAAShK,IACxBiK,EAAa,OAAOjK,IACpBkK,EAAc,QAAQlK,IACtBmK,EAAe,SAASnK,IACxBoK,EAAsB,gBAAgBpK,IACtCqK,EAA0B,oBAAoBrK,IAC9CsK,EAAwB,kBAAkBtK,IAC1CuK,EAAuB,QAAQvK,IAAY4J,IAC3CY,EAAkB,aAClBC,EAAkB,OAClBC,EAAkB,OAClBC,EAAoB,eACpBC,EAAgB,cAChBC,EAAkB,gBAClBC,EAAsB,cACtBC,EAAuB,2BACvBC,EAAU,CACdC,UAAU,EACVC,OAAO,EACPC,UAAU,GAENC,EAAc,CAClBH,SAAU,mBACVC,MAAO,UACPC,SAAU,WAOZ,MAAME,UAAchM,EAClB,WAAA9H,CAAY+H,EAASC,GACnBC,MAAMF,EAASC,GACfhG,KAAK+R,QAAUrD,EAAeI,QAAQwC,EAAiBtR,KAAKmG,UAC5DnG,KAAKgS,UAAYhS,KAAKiS,sBACtBjS,KAAKkS,WAAalS,KAAKmS,uBACvBnS,KAAKoS,UAAW,EAChBpS,KAAKqS,kBAAmB,EACxBrS,KAAKsS,WAAa,IAAIlC,EACtBpQ,KAAKuS,oBACP,CAGA,kBAAWd,GACT,OAAOA,CACT,CACA,sBAAWI,GACT,OAAOA,CACT,CACA,eAAWxK,GACT,OAAOA,CACT,CAGA,MAAAmL,CAAOlI,GACL,OAAOtK,KAAKoS,SAAWpS,KAAKyS,OAASzS,KAAK0S,KAAKpI,EACjD,CACA,IAAAoI,CAAKpI,GACH,GAAItK,KAAKoS,UAAYpS,KAAKqS,iBACxB,OAEF,MAAMM,EAAYjN,EAAakG,QAAQ5L,KAAKmG,SAAUuK,EAAY,CAChEpG,kBAEEqI,EAAUxG,mBAGdnM,KAAKoS,UAAW,EAChBpS,KAAKqS,kBAAmB,EACxBrS,KAAKsS,WAAWG,OAChBtR,SAASyR,KAAKC,UAAUxO,IAAI4M,GAC5BjR,KAAK8S,gBACL9S,KAAKgS,UAAUU,MAAK,IAAM1S,KAAK+S,aAAazI,KAC9C,CACA,IAAAmI,GACE,IAAKzS,KAAKoS,UAAYpS,KAAKqS,iBACzB,OAEF,MAAMW,EAAYtN,EAAakG,QAAQ5L,KAAKmG,SAAUoK,GAClDyC,EAAU7G,mBAGdnM,KAAKoS,UAAW,EAChBpS,KAAKqS,kBAAmB,EACxBrS,KAAKkS,WAAWe,aAChBjT,KAAKmG,SAAS0M,UAAUxR,OAAO8P,GAC/BnR,KAAK4G,gBAAe,IAAM5G,KAAKkT,cAAclT,KAAKmG,SAAUnG,KAAKmT,eACnE,CACA,OAAA5M,GACEb,EAAac,IAAI7E,OAAQ8E,GACzBf,EAAac,IAAIxG,KAAK+R,QAAStL,GAC/BzG,KAAKgS,UAAUzL,UACfvG,KAAKkS,WAAWe,aAChBhN,MAAMM,SACR,CACA,YAAA6M,GACEpT,KAAK8S,eACP,CAGA,mBAAAb,GACE,OAAO,IAAIhC,EAAS,CAClBJ,UAAWhF,QAAQ7K,KAAKoG,QAAQsL,UAEhC7K,WAAY7G,KAAKmT,eAErB,CACA,oBAAAhB,GACE,OAAO,IAAIhC,EAAU,CACnBkD,YAAarT,KAAKmG,UAEtB,CACA,YAAA4M,CAAazI,GAENnJ,SAASyR,KAAKrI,SAASvK,KAAKmG,WAC/BhF,SAASyR,KAAK1O,OAAOlE,KAAKmG,UAE5BnG,KAAKmG,SAASmN,MAAMC,QAAU,QAC9BvT,KAAKmG,SAASwH,gBAAgB,eAC9B3N,KAAKmG,SAASsH,aAAa,cAAc,GACzCzN,KAAKmG,SAASsH,aAAa,OAAQ,UACnCzN,KAAKmG,SAASqN,UAAY,EAC1B,MAAMC,EAAY/E,EAAeI,QAAQyC,EAAqBvR,KAAK+R,SAC/D0B,IACFA,EAAUD,UAAY,GAExB5N,EAAS8N,OAAO1T,KAAKmG,UACrBnG,KAAKmG,SAAS0M,UAAUxO,IAAI8M,GAC5B,MAAMwC,EAAqB,KACrB3T,KAAKoG,QAAQuL,OACf3R,KAAKkS,WAAW0B,WAElB5T,KAAKqS,kBAAmB,EACxB3M,EAAakG,QAAQ5L,KAAKmG,SAAUwK,EAAa,CAC/CrG,iBACA,EAEJtK,KAAK4G,eAAe+M,EAAoB3T,KAAK+R,QAAS/R,KAAKmT,cAC7D,CACA,kBAAAZ,GACE7M,EAAa0F,GAAGpL,KAAKmG,SAAU4K,GAAuBrM,IAChDA,EAAM3F,MAAQuR,IAGdtQ,KAAKoG,QAAQwL,SACf5R,KAAKyS,OAGPzS,KAAK6T,6BAA4B,IAEnCnO,EAAa0F,GAAGzJ,OAAQiP,GAAc,KAChC5Q,KAAKoS,WAAapS,KAAKqS,kBACzBrS,KAAK8S,eACP,IAEFpN,EAAa0F,GAAGpL,KAAKmG,SAAU2K,GAAyBpM,IAEtDgB,EAAa2F,IAAIrL,KAAKmG,SAAU0K,GAAqBiD,IAC/C9T,KAAKmG,WAAazB,EAAM2E,QAAUrJ,KAAKmG,WAAa2N,EAAOzK,SAGjC,WAA1BrJ,KAAKoG,QAAQsL,SAIb1R,KAAKoG,QAAQsL,UACf1R,KAAKyS,OAJLzS,KAAK6T,6BAKP,GACA,GAEN,CACA,UAAAX,GACElT,KAAKmG,SAASmN,MAAMC,QAAU,OAC9BvT,KAAKmG,SAASsH,aAAa,eAAe,GAC1CzN,KAAKmG,SAASwH,gBAAgB,cAC9B3N,KAAKmG,SAASwH,gBAAgB,QAC9B3N,KAAKqS,kBAAmB,EACxBrS,KAAKgS,UAAUS,MAAK,KAClBtR,SAASyR,KAAKC,UAAUxR,OAAO4P,GAC/BjR,KAAK+T,oBACL/T,KAAKsS,WAAWzN,QAChBa,EAAakG,QAAQ5L,KAAKmG,SAAUsK,EAAa,GAErD,CACA,WAAA0C,GACE,OAAOnT,KAAKmG,SAAS0M,UAAUtI,SAAS2G,EAC1C,CACA,0BAAA2C,GACE,MAAMb,EAAYtN,EAAakG,QAAQ5L,KAAKmG,SAAUqK,GACtD,GAAIwC,EAAU7G,iBACZ,OAEF,MAAM6H,EAAqBhU,KAAKmG,SAAS8N,aAAe9S,SAASwN,gBAAgBuF,aAC3EC,EAAmBnU,KAAKmG,SAASmN,MAAMc,UAEpB,WAArBD,GAAiCnU,KAAKmG,SAAS0M,UAAUtI,SAAS6G,KAGjE4C,IACHhU,KAAKmG,SAASmN,MAAMc,UAAY,UAElCpU,KAAKmG,SAAS0M,UAAUxO,IAAI+M,GAC5BpR,KAAK4G,gBAAe,KAClB5G,KAAKmG,SAAS0M,UAAUxR,OAAO+P,GAC/BpR,KAAK4G,gBAAe,KAClB5G,KAAKmG,SAASmN,MAAMc,UAAYD,CAAgB,GAC/CnU,KAAK+R,QAAQ,GACf/R,KAAK+R,SACR/R,KAAKmG,SAASwL,QAChB,CAMA,aAAAmB,GACE,MAAMkB,EAAqBhU,KAAKmG,SAAS8N,aAAe9S,SAASwN,gBAAgBuF,aAC3EG,EAAiBrU,KAAKsS,WAAWgC,WACjCC,EAAoBF,EAAiB,EAC3C,GAAIE,IAAsBP,EAAoB,CAC5C,MAAMQ,EAAW5O,EAAS6O,QAAU,cAAgB,eACpDzU,KAAKmG,SAASmN,MAAMkB,GAAY,GAAGH,KACrC,CACA,IAAKE,GAAqBP,EAAoB,CAC5C,MAAMQ,EAAW5O,EAAS6O,QAAU,eAAiB,cACrDzU,KAAKmG,SAASmN,MAAMkB,GAAY,GAAGH,KACrC,CACF,CACA,iBAAAN,GACE/T,KAAKmG,SAASmN,MAAMoB,YAAc,GAClC1U,KAAKmG,SAASmN,MAAMqB,aAAe,EACrC,CAGA,sBAAOC,CAAgB5O,EAAQsE,GAC7B,OAAOtK,KAAK6U,MAAK,WACf,MAAMpN,EAAOqK,EAAM1K,oBAAoBpH,KAAMgG,GAC7C,GAAsB,kBAAXA,EAAX,CAGA,GAA4B,qBAAjByB,EAAKzB,GACd,MAAM,IAAI8O,UAAU,oBAAoB9O,MAE1CyB,EAAKzB,GAAQsE,EAJb,CAKF,GACF,EAwCF,OAjCA5E,EAAa0F,GAAGjK,SAAU6P,EAAsBQ,GAAsB,SAAU9M,GAC9E,MAAM2E,EAASqF,EAAeqB,uBAAuB/P,MACjD,CAAC,IAAK,QAAQmL,SAASnL,KAAK+U,UAC9BrQ,EAAMgI,iBAERhH,EAAa2F,IAAIhC,EAAQqH,GAAYiC,IAC/BA,EAAUxG,kBAIdzG,EAAa2F,IAAIhC,EAAQoH,GAAc,KACjC7K,EAASiK,UAAU7P,OACrBA,KAAK2R,OACP,GACA,IAIJ,MAAMqD,EAActG,EAAeI,QAAQuC,GACvC2D,GACFlD,EAAM5K,YAAY8N,GAAavC,OAEjC,MAAMhL,EAAOqK,EAAM1K,oBAAoBiC,GACvC5B,EAAK+K,OAAOxS,KACd,IACAkQ,EAAsB+E,qBAAqBnD,GAM3ClM,EAASsP,mBAAmBpD,GAErBA,CAER,G;;;;;;CCzTD,SAAWzM,EAAQC,GAC8CC,EAAOC,QAAUF,EAAQ,EAAQ,MAA4B,EAAQ,MAAgB,EAAQ,MAG7J,EAJD,CAIGtF,GAAM,SAAW0F,EAAcC,EAAQC,GAAY,aAcpD,MAAMyB,EAAO,WACP6J,EAAkB,OAClBC,EAAkB,OAClBgE,EAAkB,gBAAgB9N,IAClCoK,EAAU,CACd2D,UAAW,iBACXC,cAAe,KACfxO,YAAY,EACZgJ,WAAW,EAEXyF,YAAa,QAGTzD,EAAc,CAClBuD,UAAW,SACXC,cAAe,kBACfxO,WAAY,UACZgJ,UAAW,UACXyF,YAAa,oBAOf,MAAMrF,UAAiBtK,EACrB,WAAA3H,CAAYgI,GACVC,QACAjG,KAAKoG,QAAUpG,KAAKqG,WAAWL,GAC/BhG,KAAKuV,aAAc,EACnBvV,KAAKmG,SAAW,IAClB,CAGA,kBAAWsL,GACT,OAAOA,CACT,CACA,sBAAWI,GACT,OAAOA,CACT,CACA,eAAWxK,GACT,OAAOA,CACT,CAGA,IAAAqL,CAAKpQ,GACH,IAAKtC,KAAKoG,QAAQyJ,UAEhB,YADAjK,EAAS7D,QAAQO,GAGnBtC,KAAKwV,UACL,MAAMzP,EAAU/F,KAAKyV,cACjBzV,KAAKoG,QAAQS,YACfjB,EAAS8N,OAAO3N,GAElBA,EAAQ8M,UAAUxO,IAAI8M,GACtBnR,KAAK0V,mBAAkB,KACrB9P,EAAS7D,QAAQO,EAAS,GAE9B,CACA,IAAAmQ,CAAKnQ,GACEtC,KAAKoG,QAAQyJ,WAIlB7P,KAAKyV,cAAc5C,UAAUxR,OAAO8P,GACpCnR,KAAK0V,mBAAkB,KACrB1V,KAAKuG,UACLX,EAAS7D,QAAQO,EAAS,KAN1BsD,EAAS7D,QAAQO,EAQrB,CACA,OAAAiE,GACOvG,KAAKuV,cAGV7P,EAAac,IAAIxG,KAAKmG,SAAUgP,GAChCnV,KAAKmG,SAAS9E,SACdrB,KAAKuV,aAAc,EACrB,CAGA,WAAAE,GACE,IAAKzV,KAAKmG,SAAU,CAClB,MAAMuL,EAAWvQ,SAASsC,cAAc,OACxCiO,EAAS0D,UAAYpV,KAAKoG,QAAQgP,UAC9BpV,KAAKoG,QAAQS,YACf6K,EAASmB,UAAUxO,IAAI6M,GAEzBlR,KAAKmG,SAAWuL,CAClB,CACA,OAAO1R,KAAKmG,QACd,CACA,iBAAAa,CAAkBhB,GAGhB,OADAA,EAAOsP,YAAc1P,EAASM,WAAWF,EAAOsP,aACzCtP,CACT,CACA,OAAAwP,GACE,GAAIxV,KAAKuV,YACP,OAEF,MAAMxP,EAAU/F,KAAKyV,cACrBzV,KAAKoG,QAAQkP,YAAYpR,OAAO6B,GAChCL,EAAa0F,GAAGrF,EAASoP,GAAiB,KACxCvP,EAAS7D,QAAQ/B,KAAKoG,QAAQiP,cAAc,IAE9CrV,KAAKuV,aAAc,CACrB,CACA,iBAAAG,CAAkBpT,GAChBsD,EAASkB,uBAAuBxE,EAAUtC,KAAKyV,cAAezV,KAAKoG,QAAQS,WAC7E,EAGF,OAAOoJ,CAER,G;;;;;;CCrID,SAAW5K,EAAQC,GAC8CA,EAAQE,EAAS,EAAQ,MAA4B,EAAQ,MAA8B,EAAQ,MAGnK,EAJD,CAIGxF,GAAM,SAAWwF,EAASE,EAAcgJ,EAAgB9I,GAAY,aASrE,MAAMqP,EAAuB,CAACU,EAAWC,EAAS,UAChD,MAAMC,EAAa,gBAAgBF,EAAUlP,YACvC3E,EAAO6T,EAAUtO,KACvB3B,EAAa0F,GAAGjK,SAAU0U,EAAY,qBAAqB/T,OAAU,SAAU4C,GAI7E,GAHI,CAAC,IAAK,QAAQyG,SAASnL,KAAK+U,UAC9BrQ,EAAMgI,iBAEJ9G,EAASgK,WAAW5P,MACtB,OAEF,MAAMqJ,EAASqF,EAAeqB,uBAAuB/P,OAASA,KAAKoP,QAAQ,IAAItN,KACzE1B,EAAWuV,EAAUvO,oBAAoBiC,GAG/CjJ,EAASwV,IACX,GAAE,EAGJpQ,EAAQyP,qBAAuBA,EAE/BvW,OAAOqO,eAAevH,EAASsQ,OAAOC,YAAa,CAAEhZ,MAAO,UAE7D,G;;;;;;CCnCD,SAAWsI,EAAQC,GAC8CC,EAAOC,QAAUF,EAAQ,EAAQ,MAA0B,EAAQ,MAGnI,EAJD,CAIGtF,GAAM,SAAWuN,EAAa3H,GAAY,aAc3C,MAAMD,EAEJ,kBAAW8L,GACT,MAAO,CAAC,CACV,CACA,sBAAWI,GACT,MAAO,CAAC,CACV,CACA,eAAWxK,GACT,MAAM,IAAI/G,MAAM,sEAClB,CACA,UAAA+F,CAAWL,GAIT,OAHAA,EAAShG,KAAK+G,gBAAgBf,GAC9BA,EAAShG,KAAKgH,kBAAkBhB,GAChChG,KAAKiH,iBAAiBjB,GACfA,CACT,CACA,iBAAAgB,CAAkBhB,GAChB,OAAOA,CACT,CACA,eAAAe,CAAgBf,EAAQD,GACtB,MAAMiQ,EAAapQ,EAASqQ,UAAUlQ,GAAWwH,EAAYY,iBAAiBpI,EAAS,UAAY,CAAC,EAEpG,MAAO,IACF/F,KAAKhC,YAAYyT,WACM,kBAAfuE,EAA0BA,EAAa,CAAC,KAC/CpQ,EAASqQ,UAAUlQ,GAAWwH,EAAYK,kBAAkB7H,GAAW,CAAC,KACtD,kBAAXC,EAAsBA,EAAS,CAAC,EAE/C,CACA,gBAAAiB,CAAiBjB,EAAQkQ,EAAclW,KAAKhC,YAAY6T,aACtD,IAAK,MAAO2C,EAAU2B,KAAkBzX,OAAOwM,QAAQgL,GAAc,CACnE,MAAMnZ,EAAQiJ,EAAOwO,GACf4B,EAAYxQ,EAASqQ,UAAUlZ,GAAS,UAAY6I,EAASyQ,OAAOtZ,GAC1E,IAAK,IAAIuB,OAAO6X,GAAeG,KAAKF,GAClC,MAAM,IAAItB,UAAU,GAAG9U,KAAKhC,YAAYqJ,KAAKkP,0BAA0B/B,qBAA4B4B,yBAAiCD,MAExI,CACF,EAGF,OAAOxQ,CAER,G;;;;;;CC7DD,SAAWN,EAAQC,GAC8CC,EAAOC,QAAUF,EAAQ,EAAQ,MAA4B,EAAQ,MAA8B,EAAQ,MAG3K,EAJD,CAIGtF,GAAM,SAAW0F,EAAcgJ,EAAgB/I,GAAU,aAc1D,MAAM0B,EAAO,YACPf,EAAW,eACXG,EAAY,IAAIH,IAChBkQ,EAAgB,UAAU/P,IAC1BgQ,EAAoB,cAAchQ,IAClCiQ,EAAU,MACVC,EAAkB,UAClBC,EAAmB,WACnBnF,EAAU,CACdoF,WAAW,EACXxD,YAAa,MAGTxB,EAAc,CAClBgF,UAAW,UACXxD,YAAa,WAOf,MAAMlD,UAAkBxK,EACtB,WAAA3H,CAAYgI,GACVC,QACAjG,KAAKoG,QAAUpG,KAAKqG,WAAWL,GAC/BhG,KAAK8W,WAAY,EACjB9W,KAAK+W,qBAAuB,IAC9B,CAGA,kBAAWtF,GACT,OAAOA,CACT,CACA,sBAAWI,GACT,OAAOA,CACT,CACA,eAAWxK,GACT,OAAOA,CACT,CAGA,QAAAuM,GACM5T,KAAK8W,YAGL9W,KAAKoG,QAAQyQ,WACf7W,KAAKoG,QAAQiN,YAAY1B,QAE3BjM,EAAac,IAAIrF,SAAUsF,GAC3Bf,EAAa0F,GAAGjK,SAAUqV,GAAe9R,GAAS1E,KAAKgX,eAAetS,KACtEgB,EAAa0F,GAAGjK,SAAUsV,GAAmB/R,GAAS1E,KAAKiX,eAAevS,KAC1E1E,KAAK8W,WAAY,EACnB,CACA,UAAA7D,GACOjT,KAAK8W,YAGV9W,KAAK8W,WAAY,EACjBpR,EAAac,IAAIrF,SAAUsF,GAC7B,CAGA,cAAAuQ,CAAetS,GACb,MAAM,YACJ2O,GACErT,KAAKoG,QACT,GAAI1B,EAAM2E,SAAWlI,UAAYuD,EAAM2E,SAAWgK,GAAeA,EAAY9I,SAAS7F,EAAM2E,QAC1F,OAEF,MAAM6N,EAAWxI,EAAee,kBAAkB4D,GAC1B,IAApB6D,EAASjZ,OACXoV,EAAY1B,QACH3R,KAAK+W,uBAAyBH,EACvCM,EAASA,EAASjZ,OAAS,GAAG0T,QAE9BuF,EAAS,GAAGvF,OAEhB,CACA,cAAAsF,CAAevS,GACTA,EAAM3F,MAAQ2X,IAGlB1W,KAAK+W,qBAAuBrS,EAAMyS,SAAWP,EAAmBD,EAClE,EAGF,OAAOxG,CAER,G;;;;;;CC3GD,SAAW9K,EAAQC,GAC8CA,EAAQE,EAGxE,EAJD,CAIGxF,GAAM,SAAWwF,GAAW,aAS7B,MAAM4R,EAAU,IACVC,EAA0B,IAC1BC,EAAiB,gBAOjB9I,EAAgBtF,IAChBA,GAAYvH,OAAO4V,KAAO5V,OAAO4V,IAAIC,SAEvCtO,EAAWA,EAASvF,QAAQ,iBAAiB,CAAC8T,EAAOlY,IAAO,IAAIgY,IAAIC,OAAOjY,QAEtE2J,GAIHmN,EAASqB,GACE,OAAXA,QAA8BC,IAAXD,EACd,GAAGA,IAELhZ,OAAOC,UAAUC,SAASE,KAAK4Y,GAAQD,MAAM,eAAe,GAAG5T,cAOlE+T,EAASC,IACb,GACEA,GAAU5S,KAAK6S,MAAM7S,KAAK8S,SAAWX,SAC9BjW,SAASC,eAAeyW,IACjC,OAAOA,CAAM,EAETG,EAAmCjS,IACvC,IAAKA,EACH,OAAO,EAIT,IAAI,mBACFkS,EAAkB,gBAClBC,GACEvW,OAAOwW,iBAAiBpS,GAC5B,MAAMqS,EAA0BlL,OAAOmL,WAAWJ,GAC5CK,EAAuBpL,OAAOmL,WAAWH,GAG/C,OAAKE,GAA4BE,GAKjCL,EAAqBA,EAAmB1J,MAAM,KAAK,GACnD2J,EAAkBA,EAAgB3J,MAAM,KAAK,IACrCrB,OAAOmL,WAAWJ,GAAsB/K,OAAOmL,WAAWH,IAAoBb,GAN7E,CAMoG,EAEzGkB,EAAuBxS,IAC3BA,EAAQ4G,cAAc,IAAIP,MAAMkL,GAAgB,EAE5CrB,EAAYyB,MACXA,GAA4B,kBAAXA,KAGO,qBAAlBA,EAAOc,SAChBd,EAASA,EAAO,IAEgB,qBAApBA,EAAOe,UAEjBvS,EAAawR,GAEbzB,EAAUyB,GACLA,EAAOc,OAASd,EAAO,GAAKA,EAEf,kBAAXA,GAAuBA,EAAOzZ,OAAS,EACzCkD,SAAS6C,cAAcwK,EAAckJ,IAEvC,KAEH7H,EAAY9J,IAChB,IAAKkQ,EAAUlQ,IAAgD,IAApCA,EAAQ2S,iBAAiBza,OAClD,OAAO,EAET,MAAM0a,EAAgF,YAA7DR,iBAAiBpS,GAAS6S,iBAAiB,cAE9DC,EAAgB9S,EAAQqJ,QAAQ,uBACtC,IAAKyJ,EACH,OAAOF,EAET,GAAIE,IAAkB9S,EAAS,CAC7B,MAAM+S,EAAU/S,EAAQqJ,QAAQ,WAChC,GAAI0J,GAAWA,EAAQxP,aAAeuP,EACpC,OAAO,EAET,GAAgB,OAAZC,EACF,OAAO,CAEX,CACA,OAAOH,CAAgB,EAEnB/I,EAAa7J,IACZA,GAAWA,EAAQ0S,WAAaM,KAAKC,iBAGtCjT,EAAQ8M,UAAUtI,SAAS,cAGC,qBAArBxE,EAAQkT,SACVlT,EAAQkT,SAEVlT,EAAQmT,aAAa,aAAoD,UAArCnT,EAAQqI,aAAa,cAE5D+K,EAAiBpT,IACrB,IAAK5E,SAASwN,gBAAgByK,aAC5B,OAAO,KAIT,GAAmC,oBAAxBrT,EAAQsT,YAA4B,CAC7C,MAAMC,EAAOvT,EAAQsT,cACrB,OAAOC,aAAgBC,WAAaD,EAAO,IAC7C,CACA,OAAIvT,aAAmBwT,WACdxT,EAIJA,EAAQuD,WAGN6P,EAAepT,EAAQuD,YAFrB,IAEgC,EAErCkQ,EAAO,OAUP9F,EAAS3N,IACbA,EAAQ0T,YAAY,EAGhB1N,EAAY,IACZpK,OAAO+X,SAAWvY,SAASyR,KAAKsG,aAAa,qBACxCvX,OAAO+X,OAET,KAEHC,EAA4B,GAC5BC,EAAqBtX,IACG,YAAxBnB,SAAS0Y,YAENF,EAA0B1b,QAC7BkD,SAASuJ,iBAAiB,oBAAoB,KAC5C,IAAK,MAAMpI,KAAYqX,EACrBrX,GACF,IAGJqX,EAA0BzX,KAAKI,IAE/BA,GACF,EAEImS,EAAQ,IAAuC,QAAjCtT,SAASwN,gBAAgBmL,IACvC5E,EAAqB6E,IACzBH,GAAmB,KACjB,MAAM9N,EAAIC,IAEV,GAAID,EAAG,CACL,MAAMhK,EAAOiY,EAAO1S,KACd2S,EAAqBlO,EAAE7J,GAAGH,GAChCgK,EAAE7J,GAAGH,GAAQiY,EAAOnF,gBACpB9I,EAAE7J,GAAGH,GAAMmY,YAAcF,EACzBjO,EAAE7J,GAAGH,GAAMoY,WAAa,KACtBpO,EAAE7J,GAAGH,GAAQkY,EACND,EAAOnF,gBAElB,IACA,EAEE7S,EAAU,CAACoY,EAAkBtO,EAAO,GAAIuO,EAAeD,IACxB,oBAArBA,EAAkCA,KAAoBtO,GAAQuO,EAExEtT,EAAyB,CAACxE,EAAU+X,EAAmBC,GAAoB,KAC/E,IAAKA,EAEH,YADAvY,EAAQO,GAGV,MAAMiY,EAAkB,EAClBC,EAAmBxC,EAAiCqC,GAAqBE,EAC/E,IAAIE,GAAS,EACb,MAAM7R,EAAU,EACdS,aAEIA,IAAWgR,IAGfI,GAAS,EACTJ,EAAkBzP,oBAAoB0M,EAAgB1O,GACtD7G,EAAQO,GAAS,EAEnB+X,EAAkB3P,iBAAiB4M,EAAgB1O,GACnDzD,YAAW,KACJsV,GACHlC,EAAqB8B,EACvB,GACCG,EAAiB,EAYhBE,EAAuB,CAACC,EAAMC,EAAeC,EAAeC,KAChE,MAAMC,EAAaJ,EAAK1c,OACxB,IAAI+c,EAAQL,EAAKM,QAAQL,GAIzB,OAAe,IAAXI,GACMH,GAAiBC,EAAiBH,EAAKI,EAAa,GAAKJ,EAAK,IAExEK,GAASH,EAAgB,GAAK,EAC1BC,IACFE,GAASA,EAAQD,GAAcA,GAE1BJ,EAAK1V,KAAKiW,IAAI,EAAGjW,KAAKkW,IAAIH,EAAOD,EAAa,KAAI,EAG3DvV,EAAQ0P,mBAAqBA,EAC7B1P,EAAQzD,QAAUA,EAClByD,EAAQsB,uBAAyBA,EACjCtB,EAAQ2T,eAAiBA,EACzB3T,EAAQU,WAAaA,EACrBV,EAAQkV,qBAAuBA,EAC/BlV,EAAQwS,iCAAmCA,EAC3CxS,EAAQoS,OAASA,EACjBpS,EAAQuG,UAAYA,EACpBvG,EAAQoK,WAAaA,EACrBpK,EAAQyQ,UAAYA,EACpBzQ,EAAQiP,MAAQA,EAChBjP,EAAQqK,UAAYA,EACpBrK,EAAQgU,KAAOA,EACfhU,EAAQoU,mBAAqBA,EAC7BpU,EAAQgJ,cAAgBA,EACxBhJ,EAAQkO,OAASA,EACjBlO,EAAQ6Q,OAASA,EACjB7Q,EAAQ+S,qBAAuBA,EAE/B7Z,OAAOqO,eAAevH,EAASsQ,OAAOC,YAAa,CAAEhZ,MAAO,UAE7D,G;;;;;;CCnRD,SAAWsI,EAAQC,GAC8CC,EAAOC,QAAUF,EAAQ,EAAQ,MAA0B,EAAQ,MAA8B,EAAQ,MAGzK,EAJD,CAIGtF,GAAM,SAAWuN,EAAamB,EAAgB9I,GAAY,aAc3D,MAAMwV,EAAyB,oDACzBC,EAA0B,cAC1BC,EAAmB,gBACnBC,EAAkB,eAMxB,MAAMnL,EACJ,WAAApS,GACEgC,KAAKmG,SAAWhF,SAASyR,IAC3B,CAGA,QAAA0B,GAEE,MAAMkH,EAAgBra,SAASwN,gBAAgB8M,YAC/C,OAAOxW,KAAKyW,IAAI/Z,OAAOga,WAAaH,EACtC,CACA,IAAA/I,GACE,MAAMmJ,EAAQ5b,KAAKsU,WACnBtU,KAAK6b,mBAEL7b,KAAK8b,sBAAsB9b,KAAKmG,SAAUmV,GAAkBS,GAAmBA,EAAkBH,IAEjG5b,KAAK8b,sBAAsBV,EAAwBE,GAAkBS,GAAmBA,EAAkBH,IAC1G5b,KAAK8b,sBAAsBT,EAAyBE,GAAiBQ,GAAmBA,EAAkBH,GAC5G,CACA,KAAA/W,GACE7E,KAAKgc,wBAAwBhc,KAAKmG,SAAU,YAC5CnG,KAAKgc,wBAAwBhc,KAAKmG,SAAUmV,GAC5Ctb,KAAKgc,wBAAwBZ,EAAwBE,GACrDtb,KAAKgc,wBAAwBX,EAAyBE,EACxD,CACA,aAAAU,GACE,OAAOjc,KAAKsU,WAAa,CAC3B,CAGA,gBAAAuH,GACE7b,KAAKkc,sBAAsBlc,KAAKmG,SAAU,YAC1CnG,KAAKmG,SAASmN,MAAM6I,SAAW,QACjC,CACA,qBAAAL,CAAsB5S,EAAUkT,EAAe9Z,GAC7C,MAAM+R,EAAiBrU,KAAKsU,WACtB+H,EAAuBtW,IAC3B,GAAIA,IAAY/F,KAAKmG,UAAYxE,OAAOga,WAAa5V,EAAQ0V,YAAcpH,EACzE,OAEFrU,KAAKkc,sBAAsBnW,EAASqW,GACpC,MAAML,EAAkBpa,OAAOwW,iBAAiBpS,GAAS6S,iBAAiBwD,GAC1ErW,EAAQuN,MAAMgJ,YAAYF,EAAe,GAAG9Z,EAAS4K,OAAOmL,WAAW0D,QAAsB,EAE/F/b,KAAKuc,2BAA2BrT,EAAUmT,EAC5C,CACA,qBAAAH,CAAsBnW,EAASqW,GAC7B,MAAMI,EAAczW,EAAQuN,MAAMsF,iBAAiBwD,GAC/CI,GACFjP,EAAYC,iBAAiBzH,EAASqW,EAAeI,EAEzD,CACA,uBAAAR,CAAwB9S,EAAUkT,GAChC,MAAMC,EAAuBtW,IAC3B,MAAMhJ,EAAQwQ,EAAYY,iBAAiBpI,EAASqW,GAEtC,OAAVrf,GAIJwQ,EAAYG,oBAAoB3H,EAASqW,GACzCrW,EAAQuN,MAAMgJ,YAAYF,EAAerf,IAJvCgJ,EAAQuN,MAAMmJ,eAAeL,EAIgB,EAEjDpc,KAAKuc,2BAA2BrT,EAAUmT,EAC5C,CACA,0BAAAE,CAA2BrT,EAAUwT,GACnC,GAAI9W,EAASqQ,UAAU/M,GACrBwT,EAASxT,QAGX,IAAK,MAAMyT,KAAOjO,EAAe7E,KAAKX,EAAUlJ,KAAKmG,UACnDuW,EAASC,EAEb,EAGF,OAAOvM,CAER,G,iBC/GD,IAAIkJ,EAAO,EAAQ,MAGfxD,EAASwD,EAAKxD,OAElBvQ,EAAOC,QAAUsQ,C,WCIjB,SAAS8G,EAASC,EAAOC,GACvB,IAAI9B,GAAS,EACT/c,EAAkB,MAAT4e,EAAgB,EAAIA,EAAM5e,OACnCT,EAASY,MAAMH,GAEnB,QAAS+c,EAAQ/c,EACfT,EAAOwd,GAAS8B,EAASD,EAAM7B,GAAQA,EAAO6B,GAEhD,OAAOrf,CACT,CAEA+H,EAAOC,QAAUoX,C,WCRjB,SAASG,EAAYF,EAAOC,EAAUE,EAAaC,GACjD,IAAIjC,GAAS,EACT/c,EAAkB,MAAT4e,EAAgB,EAAIA,EAAM5e,OAEnCgf,GAAahf,IACf+e,EAAcH,IAAQ7B,IAExB,QAASA,EAAQ/c,EACf+e,EAAcF,EAASE,EAAaH,EAAM7B,GAAQA,EAAO6B,GAE3D,OAAOG,CACT,CAEAzX,EAAOC,QAAUuX,C,WClBjB,SAASG,EAAaC,GACpB,OAAOA,EAAO5O,MAAM,GACtB,CAEAhJ,EAAOC,QAAU0X,C,WCVjB,IAAIE,EAAc,4CASlB,SAASC,EAAWF,GAClB,OAAOA,EAAO1F,MAAM2F,IAAgB,EACtC,CAEA7X,EAAOC,QAAU6X,C,iBCdjB,IAAIvH,EAAS,EAAQ,MACjBwH,EAAY,EAAQ,MACpBC,EAAiB,EAAQ,MAGzBC,EAAU,gBACVC,EAAe,qBAGfC,EAAiB5H,EAASA,EAAOC,iBAAc4B,EASnD,SAASgG,EAAW5gB,GAClB,OAAa,MAATA,OACe4a,IAAV5a,EAAsB0gB,EAAeD,EAEtCE,GAAkBA,KAAkBhf,OAAO3B,GAC/CugB,EAAUvgB,GACVwgB,EAAexgB,EACrB,CAEAwI,EAAOC,QAAUmY,C,WCpBjB,SAASC,EAAelG,GACtB,OAAO,SAAS3Y,GACd,OAAiB,MAAV2Y,OAAiBC,EAAYD,EAAO3Y,EAC7C,CACF,CAEAwG,EAAOC,QAAUoY,C,WCJjB,SAASC,EAAUhB,EAAOiB,EAAOC,GAC/B,IAAI/C,GAAS,EACT/c,EAAS4e,EAAM5e,OAEf6f,EAAQ,IACVA,GAASA,EAAQ7f,EAAS,EAAKA,EAAS6f,GAE1CC,EAAMA,EAAM9f,EAASA,EAAS8f,EAC1BA,EAAM,IACRA,GAAO9f,GAETA,EAAS6f,EAAQC,EAAM,EAAMA,EAAMD,IAAW,EAC9CA,KAAW,EAEX,IAAItgB,EAASY,MAAMH,GACnB,QAAS+c,EAAQ/c,EACfT,EAAOwd,GAAS6B,EAAM7B,EAAQ8C,GAEhC,OAAOtgB,CACT,CAEA+H,EAAOC,QAAUqY,C,gBC9BjB,IAAI/H,EAAS,EAAQ,MACjB8G,EAAW,EAAQ,MACnBve,EAAU,EAAQ,MAClB2f,EAAW,EAAQ,MAGnBC,EAAW,IAGXC,EAAcpI,EAASA,EAAOnX,eAAYgZ,EAC1CwG,EAAiBD,EAAcA,EAAYtf,cAAW+Y,EAU1D,SAASyG,EAAarhB,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIsB,EAAQtB,GAEV,OAAO6f,EAAS7f,EAAOqhB,GAAgB,GAEzC,GAAIJ,EAASjhB,GACX,OAAOohB,EAAiBA,EAAerf,KAAK/B,GAAS,GAEvD,IAAIS,EAAUT,EAAQ,GACtB,MAAkB,KAAVS,GAAkB,EAAIT,IAAWkhB,EAAY,KAAOzgB,CAC9D,CAEA+H,EAAOC,QAAU4Y,C,gBCpCjB,IAAIP,EAAY,EAAQ,MAWxB,SAASQ,EAAUxB,EAAOiB,EAAOC,GAC/B,IAAI9f,EAAS4e,EAAM5e,OAEnB,OADA8f,OAAcpG,IAARoG,EAAoB9f,EAAS8f,GAC1BD,GAASC,GAAO9f,EAAU4e,EAAQgB,EAAUhB,EAAOiB,EAAOC,EACrE,CAEAxY,EAAOC,QAAU6Y,C,iBCjBjB,IAAIA,EAAY,EAAQ,KACpBC,EAAa,EAAQ,MACrBC,EAAgB,EAAQ,MACxB3f,EAAW,EAAQ,MASvB,SAAS4f,EAAgBC,GACvB,OAAO,SAAStB,GACdA,EAASve,EAASue,GAElB,IAAIuB,EAAaJ,EAAWnB,GACxBoB,EAAcpB,QACdxF,EAEArK,EAAMoR,EACNA,EAAW,GACXvB,EAAOjP,OAAO,GAEdyQ,EAAWD,EACXL,EAAUK,EAAY,GAAG1d,KAAK,IAC9Bmc,EAAOzR,MAAM,GAEjB,OAAO4B,EAAImR,KAAgBE,CAC7B,CACF,CAEApZ,EAAOC,QAAUgZ,C,iBChCjB,IAAIzB,EAAc,EAAQ,MACtB6B,EAAS,EAAQ,MACjBC,EAAQ,EAAQ,MAGhBC,EAAS,OAGTC,EAASzgB,OAAOwgB,EAAQ,KAS5B,SAASE,EAAiB1c,GACxB,OAAO,SAAS6a,GACd,OAAOJ,EAAY8B,EAAMD,EAAOzB,GAAQxZ,QAAQob,EAAQ,KAAMzc,EAAU,GAC1E,CACF,CAEAiD,EAAOC,QAAUwZ,C,iBCvBjB,IAAIpB,EAAiB,EAAQ,MAGzBqB,EAAkB,CAEpB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IACnC,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAER,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,KAWxBC,EAAetB,EAAeqB,GAElC1Z,EAAOC,QAAU0Z,C,iBCrEjB,IAAIC,EAA8B,iBAAV,EAAAzc,GAAsB,EAAAA,GAAU,EAAAA,EAAOhE,SAAWA,QAAU,EAAAgE,EAEpF6C,EAAOC,QAAU2Z,C,iBCHjB,IAAIrJ,EAAS,EAAQ,MAGjBsJ,EAAc1gB,OAAOC,UAGrBE,EAAiBugB,EAAYvgB,eAO7BwgB,EAAuBD,EAAYxgB,SAGnC8e,EAAiB5H,EAASA,EAAOC,iBAAc4B,EASnD,SAAS2F,EAAUvgB,GACjB,IAAIuiB,EAAQzgB,EAAeC,KAAK/B,EAAO2gB,GACnC6B,EAAMxiB,EAAM2gB,GAEhB,IACE3gB,EAAM2gB,QAAkB/F,EACxB,IAAI6H,GAAW,CACjB,CAAE,MAAOliB,GAAI,CAEb,IAAIE,EAAS6hB,EAAqBvgB,KAAK/B,GAQvC,OAPIyiB,IACEF,EACFviB,EAAM2gB,GAAkB6B,SAEjBxiB,EAAM2gB,IAGVlgB,CACT,CAEA+H,EAAOC,QAAU8X,C,WC5CjB,IAAImC,EAAgB,kBAChBC,EAAoB,kBACpBC,EAAwB,kBACxBC,EAAsB,kBACtBC,EAAeH,EAAoBC,EAAwBC,EAC3DE,EAAa,iBAGbC,EAAQ,UAGRC,EAAe1hB,OAAO,IAAMyhB,EAAQN,EAAiBI,EAAeC,EAAa,KASrF,SAASxB,EAAWnB,GAClB,OAAO6C,EAAa1J,KAAK6G,EAC3B,CAEA5X,EAAOC,QAAU8Y,C,WCxBjB,IAAI2B,EAAmB,qEASvB,SAASC,EAAe/C,GACtB,OAAO8C,EAAiB3J,KAAK6G,EAC/B,CAEA5X,EAAOC,QAAU0a,C,WCbjB,IAAId,EAAc1gB,OAAOC,UAOrB0gB,EAAuBD,EAAYxgB,SASvC,SAAS2e,EAAexgB,GACtB,OAAOsiB,EAAqBvgB,KAAK/B,EACnC,CAEAwI,EAAOC,QAAU+X,C,iBCrBjB,IAAI4B,EAAa,EAAQ,MAGrBgB,EAA0B,iBAARC,MAAoBA,MAAQA,KAAK1hB,SAAWA,QAAU0hB,KAGxE9G,EAAO6F,GAAcgB,GAAYE,SAAS,cAATA,GAErC9a,EAAOC,QAAU8T,C,iBCRjB,IAAI4D,EAAe,EAAQ,MACvBoB,EAAa,EAAQ,MACrBgC,EAAiB,EAAQ,KAS7B,SAAS/B,EAAcpB,GACrB,OAAOmB,EAAWnB,GACdmD,EAAenD,GACfD,EAAaC,EACnB,CAEA5X,EAAOC,QAAU+Y,C,UChBjB,IAAIkB,EAAgB,kBAChBC,EAAoB,kBACpBC,EAAwB,kBACxBC,EAAsB,kBACtBC,EAAeH,EAAoBC,EAAwBC,EAC3DE,EAAa,iBAGbS,EAAW,IAAMd,EAAgB,IACjCe,EAAU,IAAMX,EAAe,IAC/BY,EAAS,2BACTC,EAAa,MAAQF,EAAU,IAAMC,EAAS,IAC9CE,EAAc,KAAOlB,EAAgB,IACrCmB,EAAa,kCACbC,EAAa,qCACbd,EAAQ,UAGRe,EAAWJ,EAAa,IACxBK,EAAW,IAAMjB,EAAa,KAC9BkB,EAAY,MAAQjB,EAAQ,MAAQ,CAACY,EAAaC,EAAYC,GAAY7f,KAAK,KAAO,IAAM+f,EAAWD,EAAW,KAClHG,EAAQF,EAAWD,EAAWE,EAC9BE,EAAW,MAAQ,CAACP,EAAcH,EAAU,IAAKA,EAASI,EAAYC,EAAYN,GAAUvf,KAAK,KAAO,IAGxGmgB,EAAY7iB,OAAOmiB,EAAS,MAAQA,EAAS,KAAOS,EAAWD,EAAO,KAS1E,SAASX,EAAenD,GACtB,OAAOA,EAAO1F,MAAM0J,IAAc,EACpC,CAEA5b,EAAOC,QAAU8a,C,WCtCjB,IAAIb,EAAgB,kBAChBC,EAAoB,kBACpBC,EAAwB,kBACxBC,EAAsB,kBACtBC,EAAeH,EAAoBC,EAAwBC,EAC3DwB,EAAiB,kBACjBC,EAAe,4BACfC,EAAgB,uBAChBC,EAAiB,+CACjBC,EAAqB,kBACrBC,EAAe,+JACfC,EAAe,4BACf5B,EAAa,iBACb6B,EAAeL,EAAgBC,EAAiBC,EAAqBC,EAGrE3C,EAAS,OACT8C,EAAU,IAAMD,EAAe,IAC/BnB,EAAU,IAAMX,EAAe,IAC/BgC,EAAW,OACXC,EAAY,IAAMV,EAAiB,IACnCW,EAAU,IAAMV,EAAe,IAC/BW,EAAS,KAAOvC,EAAgBkC,EAAeE,EAAWT,EAAiBC,EAAeK,EAAe,IACzGjB,EAAS,2BACTC,EAAa,MAAQF,EAAU,IAAMC,EAAS,IAC9CE,EAAc,KAAOlB,EAAgB,IACrCmB,EAAa,kCACbC,EAAa,qCACboB,EAAU,IAAMP,EAAe,IAC/B3B,EAAQ,UAGRmC,EAAc,MAAQH,EAAU,IAAMC,EAAS,IAC/CG,EAAc,MAAQF,EAAU,IAAMD,EAAS,IAC/CI,EAAkB,MAAQtD,EAAS,yBACnCuD,EAAkB,MAAQvD,EAAS,yBACnCgC,EAAWJ,EAAa,IACxBK,EAAW,IAAMjB,EAAa,KAC9BkB,EAAY,MAAQjB,EAAQ,MAAQ,CAACY,EAAaC,EAAYC,GAAY7f,KAAK,KAAO,IAAM+f,EAAWD,EAAW,KAClHwB,EAAa,mDACbC,EAAa,mDACbtB,EAAQF,EAAWD,EAAWE,EAC9BwB,EAAU,MAAQ,CAACV,EAAWlB,EAAYC,GAAY7f,KAAK,KAAO,IAAMigB,EAGxEwB,EAAgBnkB,OAAO,CACzB2jB,EAAU,IAAMF,EAAU,IAAMK,EAAkB,MAAQ,CAACR,EAASK,EAAS,KAAKjhB,KAAK,KAAO,IAC9FmhB,EAAc,IAAME,EAAkB,MAAQ,CAACT,EAASK,EAAUC,EAAa,KAAKlhB,KAAK,KAAO,IAChGihB,EAAU,IAAMC,EAAc,IAAME,EACpCH,EAAU,IAAMI,EAChBE,EACAD,EACAT,EACAW,GACAxhB,KAAK,KAAM,KASb,SAAS0hB,EAAavF,GACpB,OAAOA,EAAO1F,MAAMgL,IAAkB,EACxC,CAEAld,EAAOC,QAAUkd,C,iBCpEjB,IAAIC,EAAa,EAAQ,MACrB3D,EAAmB,EAAQ,MAsB3B4D,EAAY5D,GAAiB,SAASxhB,EAAQqlB,EAAM7H,GAEtD,OADA6H,EAAOA,EAAKhf,cACLrG,GAAUwd,EAAQ2H,EAAWE,GAAQA,EAC9C,IAEAtd,EAAOC,QAAUod,C,iBC5BjB,IAAIhkB,EAAW,EAAQ,MACnBkkB,EAAa,EAAQ,MAiBzB,SAASH,EAAWxF,GAClB,OAAO2F,EAAWlkB,EAASue,GAAQtZ,cACrC,CAEA0B,EAAOC,QAAUmd,C,iBCtBjB,IAAIzD,EAAe,EAAQ,MACvBtgB,EAAW,EAAQ,MAGnBmkB,EAAU,8CAGVrD,EAAoB,kBACpBC,EAAwB,kBACxBC,EAAsB,kBACtBC,EAAeH,EAAoBC,EAAwBC,EAG3DY,EAAU,IAAMX,EAAe,IAM/BmD,EAAc1kB,OAAOkiB,EAAS,KAoBlC,SAAS5B,EAAOzB,GAEd,OADAA,EAASve,EAASue,GACXA,GAAUA,EAAOxZ,QAAQof,EAAS7D,GAAcvb,QAAQqf,EAAa,GAC9E,CAEAzd,EAAOC,QAAUoZ,C,WCrBjB,IAAIvgB,EAAUD,MAAMC,QAEpBkH,EAAOC,QAAUnH,C,WCDjB,SAAS4kB,EAAalmB,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,CAEAwI,EAAOC,QAAUyd,C,iBC5BjB,IAAItF,EAAa,EAAQ,MACrBsF,EAAe,EAAQ,MAGvBC,EAAY,kBAmBhB,SAASlF,EAASjhB,GAChB,MAAuB,iBAATA,GACXkmB,EAAalmB,IAAU4gB,EAAW5gB,IAAUmmB,CACjD,CAEA3d,EAAOC,QAAUwY,C,iBC5BjB,IAAII,EAAe,EAAQ,KAuB3B,SAASxf,EAAS7B,GAChB,OAAgB,MAATA,EAAgB,GAAKqhB,EAAarhB,EAC3C,CAEAwI,EAAOC,QAAU5G,C,iBC3BjB,IAAI4f,EAAkB,EAAQ,MAmB1BsE,EAAatE,EAAgB,eAEjCjZ,EAAOC,QAAUsd,C,iBCrBjB,IAAIzF,EAAa,EAAQ,MACrB6C,EAAiB,EAAQ,MACzBthB,EAAW,EAAQ,MACnB8jB,EAAe,EAAQ,MAqB3B,SAAS7D,EAAM1B,EAAQgG,EAASC,GAI9B,OAHAjG,EAASve,EAASue,GAClBgG,EAAUC,OAAQzL,EAAYwL,OAEdxL,IAAZwL,EACKjD,EAAe/C,GAAUuF,EAAavF,GAAUE,EAAWF,GAE7DA,EAAO1F,MAAM0L,IAAY,EAClC,CAEA5d,EAAOC,QAAUqZ,C,8BCtBjB,SAASwE,EAASzW,GACd,OAAgB,OAARA,GACW,kBAARA,GACP,gBAAiBA,GACjBA,EAAI5O,cAAgBU,MAC5B,CACA,SAAS4kB,EAAOja,EAAQvF,QACL,IAAXuF,IAAqBA,EAAS,CAAC,QACvB,IAARvF,IAAkBA,EAAM,CAAC,GAC7BpF,OAAOP,KAAK2F,GAAKrB,SAAQ,SAAU1D,GACJ,qBAAhBsK,EAAOtK,GACdsK,EAAOtK,GAAO+E,EAAI/E,GACbskB,EAASvf,EAAI/E,KAClBskB,EAASha,EAAOtK,KAChBL,OAAOP,KAAK2F,EAAI/E,IAAMd,OAAS,GAC/BqlB,EAAOja,EAAOtK,GAAM+E,EAAI/E,GAEhC,GACJ,C,yWAEA,IAAIwkB,EAAc,CACd3Q,KAAM,CAAC,EACPlI,iBAAkB,WAAc,EAChCE,oBAAqB,WAAc,EACnCgQ,cAAe,CACX4I,KAAM,WAAc,EACpBC,SAAU,IAEdzf,cAAe,WACX,OAAO,IACX,EACAoF,iBAAkB,WACd,MAAO,EACX,EACAhI,eAAgB,WACZ,OAAO,IACX,EACAsiB,YAAa,WACT,MAAO,CACHC,UAAW,WAAc,EAEjC,EACAlgB,cAAe,WACX,MAAO,CACHsL,SAAU,GACV6U,WAAY,GACZtQ,MAAO,CAAC,EACR7F,aAAc,WAAc,EAC5BoW,qBAAsB,WAClB,MAAO,EACX,EAER,EACAC,gBAAiB,WACb,MAAO,CAAC,CACZ,EACAC,WAAY,WACR,OAAO,IACX,EACAC,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGhB,SAASC,IACL,IAAIC,EAA0B,qBAAbvjB,SAA2BA,SAAW,CAAC,EAExD,OADAmiB,EAAOoB,EAAKnB,GACLmB,CACX,CAEA,IAAIC,EAAY,CACZxjB,SAAUoiB,EACVqB,UAAW,CACPC,UAAW,IAEfb,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEZM,QAAS,CACLC,aAAc,WAAc,EAC5BC,UAAW,WAAc,EACzBC,GAAI,WAAc,EAClBC,KAAM,WAAc,GAExBC,YAAa,WACT,OAAOnlB,IACX,EACA0K,iBAAkB,WAAc,EAChCE,oBAAqB,WAAc,EACnCuN,iBAAkB,WACd,MAAO,CACHS,iBAAkB,WACd,MAAO,EACX,EAER,EACAwM,MAAO,WAAc,EACrBC,KAAM,WAAc,EACpBC,OAAQ,CAAC,EACTngB,WAAY,WAAc,EAC1BogB,aAAc,WAAc,EAC5BC,WAAY,WACR,MAAO,CAAC,CACZ,EACAC,sBAAuB,SAAUnjB,GAC7B,MAA0B,qBAAf6C,YACP7C,IACO,MAEJ6C,WAAW7C,EAAU,EAChC,EACAojB,qBAAsB,SAAUnmB,GACF,qBAAf4F,YAGXogB,aAAahmB,EACjB,GAEJ,SAAS,IACL,IAAIomB,EAAwB,qBAAXhkB,OAAyBA,OAAS,CAAC,EAEpD,OADA2hB,EAAOqC,EAAKhB,GACLgB,CACX,CCtIA,SAASC,EAAeC,EAAUC,GAChCD,EAASlnB,UAAYD,OAAOqnB,OAAOD,EAAWnnB,WAC9CknB,EAASlnB,UAAUX,YAAc6nB,EACjCA,EAASG,UAAYF,CACvB,CAEA,SAASG,EAAgBC,GAIvB,OAHAD,EAAkBvnB,OAAOynB,eAAiBznB,OAAO0nB,eAAiB,SAAyBF,GACzF,OAAOA,EAAEF,WAAatnB,OAAO0nB,eAAeF,EAC9C,EACOD,EAAgBC,EACzB,CAEA,SAASG,EAAgBH,EAAGrjB,GAM1B,OALAwjB,EAAkB3nB,OAAOynB,gBAAkB,SAAyBD,EAAGrjB,GAErE,OADAqjB,EAAEF,UAAYnjB,EACPqjB,CACT,EAEOG,EAAgBH,EAAGrjB,EAC5B,CAEA,SAASyjB,IACP,GAAuB,qBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVC,MAAsB,OAAO,EAExC,IAEE,OADArB,KAAK1mB,UAAUC,SAASE,KAAKynB,QAAQC,UAAUnB,KAAM,IAAI,WAAa,MAC/D,CACT,CAAE,MAAO/nB,GACP,OAAO,CACT,CACF,CAEA,SAASqpB,EAAWC,EAAQ/a,EAAMgb,GAchC,OAZEF,EADEL,IACWC,QAAQC,UAER,SAAoBI,EAAQ/a,EAAMgb,GAC7C,IAAI/oB,EAAI,CAAC,MACTA,EAAEoE,KAAKvE,MAAMG,EAAG+N,GAChB,IAAIoO,EAAcoG,SAASyG,KAAKnpB,MAAMipB,EAAQ9oB,GAC1CsC,EAAW,IAAI6Z,EAEnB,OADI4M,GAAOR,EAAgBjmB,EAAUymB,EAAMloB,WACpCyB,CACT,EAGKumB,EAAWhpB,MAAM,KAAMopB,UAChC,CAEA,SAASC,EAAkB/kB,GACzB,OAAgE,IAAzDoe,SAASzhB,SAASE,KAAKmD,GAAIgZ,QAAQ,gBAC5C,CAEA,SAASgM,EAAiBJ,GACxB,IAAIK,EAAwB,oBAAR1f,IAAqB,IAAIA,SAAQmQ,EA8BrD,OA5BAsP,EAAmB,SAA0BJ,GAC3C,GAAc,OAAVA,IAAmBG,EAAkBH,GAAQ,OAAOA,EAExD,GAAqB,oBAAVA,EACT,MAAM,IAAI/R,UAAU,sDAGtB,GAAsB,qBAAXoS,EAAwB,CACjC,GAAIA,EAAOxf,IAAImf,GAAQ,OAAOK,EAAO/f,IAAI0f,GAEzCK,EAAOxjB,IAAImjB,EAAOM,EACpB,CAEA,SAASA,IACP,OAAOR,EAAWE,EAAOE,UAAWd,EAAgBjmB,MAAMhC,YAC5D,CAUA,OARAmpB,EAAQxoB,UAAYD,OAAOqnB,OAAOc,EAAMloB,UAAW,CACjDX,YAAa,CACXjB,MAAOoqB,EACPC,YAAY,EACZC,UAAU,EACVra,cAAc,KAGXqZ,EAAgBc,EAASN,EAClC,EAEOI,EAAiBJ,EAC1B,CAEA,SAASS,EAAuBlH,GAC9B,QAAa,IAATA,EACF,MAAM,IAAImH,eAAe,6DAG3B,OAAOnH,CACT,CAGA,SAASoH,EAAa5a,GACpB,IAAI6a,EAAQ7a,EAAIoZ,UAChBtnB,OAAOqO,eAAeH,EAAK,YAAa,CACtCzF,IAAK,WACH,OAAOsgB,CACT,EACA/jB,IAAK,SAAa3G,GAChB0qB,EAAMzB,UAAYjpB,CACpB,GAEJ,CAEA,IAAI2qB,EAAoB,SAAUC,GAGhC,SAASD,EAAKE,GACZ,IAAIC,EAIJ,OAFAA,EAAQF,EAAO7oB,KAAKnB,MAAMgqB,EAAQ,CAAC3nB,MAAM4O,OAAOgZ,KAAW5nB,KAC3DwnB,EAAaF,EAAuBO,IAC7BA,CACT,CAEA,OAVAjC,EAAe8B,EAAMC,GAUdD,CACT,CAZwB,CAYRT,EAAiB7oB,QAEjC,SAAS0pB,EAAUC,QACL,IAARA,IACFA,EAAM,IAGR,IAAIC,EAAM,GAQV,OAPAD,EAAItlB,SAAQ,SAAUkN,GAChBvR,MAAMC,QAAQsR,GAChBqY,EAAI9lB,KAAKvE,MAAMqqB,EAAKF,EAAUnY,IAE9BqY,EAAI9lB,KAAKyN,EAEb,IACOqY,CACT,CACA,SAASC,EAAYF,EAAKzlB,GACxB,OAAOlE,MAAMO,UAAUqP,OAAOlP,KAAKipB,EAAKzlB,EAC1C,CACA,SAAS4lB,EAAYH,GAGnB,IAFA,IAAII,EAAc,GAETjqB,EAAI,EAAGA,EAAI6pB,EAAI9pB,OAAQC,GAAK,GACE,IAAjCiqB,EAAYlN,QAAQ8M,EAAI7pB,KAAYiqB,EAAYjmB,KAAK6lB,EAAI7pB,IAG/D,OAAOiqB,CACT,CAOA,SAASC,EAAIlf,EAAUmf,GACrB,GAAwB,kBAAbnf,EACT,MAAO,CAACA,GAMV,IAHA,IAAIpL,EAAI,GACJkqB,EAAMK,EAAQjf,iBAAiBF,GAE1BhL,EAAI,EAAGA,EAAI8pB,EAAI/pB,OAAQC,GAAK,EACnCJ,EAAEoE,KAAK8lB,EAAI9pB,IAGb,OAAOJ,CACT,CAEA,SAASgO,EAAE5C,EAAUmf,GACnB,IAAI1mB,EAAS,IACTR,EAAWsjB,IACXsD,EAAM,GAEV,IAAKM,GAAWnf,aAAoBwe,EAClC,OAAOxe,EAGT,IAAKA,EACH,OAAO,IAAIwe,EAAKK,GAGlB,GAAwB,kBAAb7e,EAAuB,CAChC,IAAIof,EAAOpf,EAASuF,OAEpB,GAAI6Z,EAAKrN,QAAQ,MAAQ,GAAKqN,EAAKrN,QAAQ,MAAQ,EAAG,CACpD,IAAIsN,EAAW,MACa,IAAxBD,EAAKrN,QAAQ,SAAcsN,EAAW,MACd,IAAxBD,EAAKrN,QAAQ,SAAcsN,EAAW,SACd,IAAxBD,EAAKrN,QAAQ,QAAwC,IAAxBqN,EAAKrN,QAAQ,SAAcsN,EAAW,MACxC,IAA3BD,EAAKrN,QAAQ,YAAiBsN,EAAW,SACb,IAA5BD,EAAKrN,QAAQ,aAAkBsN,EAAW,UAC9C,IAAIC,EAAarnB,EAASsC,cAAc8kB,GACxCC,EAAWC,UAAYH,EAEvB,IAAK,IAAIpqB,EAAI,EAAGA,EAAIsqB,EAAW5E,WAAW3lB,OAAQC,GAAK,EACrD6pB,EAAI7lB,KAAKsmB,EAAW5E,WAAW1lB,GAEnC,MACE6pB,EAAMK,EAAIlf,EAASuF,OAAQ4Z,GAAWlnB,EAG1C,MAAO,GAAI+H,EAASuP,UAAYvP,IAAavH,GAAUuH,IAAa/H,EAClE4mB,EAAI7lB,KAAKgH,QACJ,GAAI9K,MAAMC,QAAQ6K,GAAW,CAClC,GAAIA,aAAoBwe,EAAM,OAAOxe,EACrC6e,EAAM7e,CACR,CAEA,OAAO,IAAIwe,EAAKQ,EAAYH,GAC9B,CAIA,SAASW,IACP,IAAK,IAAIC,EAAO5B,UAAU9oB,OAAQ2qB,EAAU,IAAIxqB,MAAMuqB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAClFD,EAAQC,GAAQ9B,UAAU8B,GAG5B,IAAIC,EAAahB,EAAUc,EAAQrkB,KAAI,SAAUzB,GAC/C,OAAOA,EAAEyL,MAAM,IACjB,KAMA,OALAvO,KAAKyC,SAAQ,SAAUkN,GACrB,IAAIoZ,GAEHA,EAAgBpZ,EAAGkD,WAAWxO,IAAI1G,MAAMorB,EAAeD,EAC1D,IACO9oB,IACT,CAEA,SAASgpB,IACP,IAAK,IAAIC,EAAQlC,UAAU9oB,OAAQ2qB,EAAU,IAAIxqB,MAAM6qB,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACvFN,EAAQM,GAASnC,UAAUmC,GAG7B,IAAIJ,EAAahB,EAAUc,EAAQrkB,KAAI,SAAUzB,GAC/C,OAAOA,EAAEyL,MAAM,IACjB,KAMA,OALAvO,KAAKyC,SAAQ,SAAUkN,GACrB,IAAIwZ,GAEHA,EAAiBxZ,EAAGkD,WAAWxR,OAAO1D,MAAMwrB,EAAgBL,EAC/D,IACO9oB,IACT,CAEA,SAASopB,IACP,IAAK,IAAIC,EAAQtC,UAAU9oB,OAAQ2qB,EAAU,IAAIxqB,MAAMirB,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACvFV,EAAQU,GAASvC,UAAUuC,GAG7B,IAAIR,EAAahB,EAAUc,EAAQrkB,KAAI,SAAUzB,GAC/C,OAAOA,EAAEyL,MAAM,IACjB,KACAvO,KAAKyC,SAAQ,SAAUkN,GACrBmZ,EAAWrmB,SAAQ,SAAU2S,GAC3BzF,EAAGkD,UAAUL,OAAO4C,EACtB,GACF,GACF,CAEA,SAASmU,IACP,IAAK,IAAIC,EAAQzC,UAAU9oB,OAAQ2qB,EAAU,IAAIxqB,MAAMorB,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACvFb,EAAQa,GAAS1C,UAAU0C,GAG7B,IAAIX,EAAahB,EAAUc,EAAQrkB,KAAI,SAAUzB,GAC/C,OAAOA,EAAEyL,MAAM,IACjB,KACA,OAAO0Z,EAAYjoB,MAAM,SAAU2P,GACjC,OAAOmZ,EAAW9a,QAAO,SAAUoH,GACjC,OAAOzF,EAAGkD,UAAUtI,SAAS6K,EAC/B,IAAGnX,OAAS,CACd,IAAGA,OAAS,CACd,CAEA,SAASyrB,EAAKC,EAAO5sB,GACnB,GAAyB,IAArBgqB,UAAU9oB,QAAiC,kBAAV0rB,EAEnC,OAAI3pB,KAAK,GAAWA,KAAK,GAAGoO,aAAaub,QACzC,EAIF,IAAK,IAAIzrB,EAAI,EAAGA,EAAI8B,KAAK/B,OAAQC,GAAK,EACpC,GAAyB,IAArB6oB,UAAU9oB,OAEZ+B,KAAK9B,GAAGuP,aAAakc,EAAO5sB,QAG5B,IAAK,IAAI6sB,KAAYD,EACnB3pB,KAAK9B,GAAG0rB,GAAYD,EAAMC,GAC1B5pB,KAAK9B,GAAGuP,aAAamc,EAAUD,EAAMC,IAK3C,OAAO5pB,IACT,CAEA,SAAS6pB,EAAWH,GAClB,IAAK,IAAIxrB,EAAI,EAAGA,EAAI8B,KAAK/B,OAAQC,GAAK,EACpC8B,KAAK9B,GAAGyP,gBAAgB+b,GAG1B,OAAO1pB,IACT,CAoIA,SAAS8pB,EAAUA,GACjB,IAAK,IAAI5rB,EAAI,EAAGA,EAAI8B,KAAK/B,OAAQC,GAAK,EACpC8B,KAAK9B,GAAGoV,MAAMwW,UAAYA,EAG5B,OAAO9pB,IACT,CAEA,SAAS+pB,EAAWC,GAClB,IAAK,IAAI9rB,EAAI,EAAGA,EAAI8B,KAAK/B,OAAQC,GAAK,EACpC8B,KAAK9B,GAAGoV,MAAM2E,mBAAyC,kBAAb+R,EAAwBA,EAAW,KAAOA,EAGtF,OAAOhqB,IACT,CAEA,SAASoL,IACP,IAAK,IAAI6e,EAAQlD,UAAU9oB,OAAQ4N,EAAO,IAAIzN,MAAM6rB,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFre,EAAKqe,GAASnD,UAAUmD,GAG1B,IAAIC,EAAYte,EAAK,GACjBue,EAAiBve,EAAK,GACtBwe,EAAWxe,EAAK,GAChBye,EAAUze,EAAK,GAWnB,SAAS0e,EAAgBjtB,GACvB,IAAI+L,EAAS/L,EAAE+L,OACf,GAAKA,EAAL,CACA,IAAImhB,EAAYltB,EAAE+L,OAAOohB,eAAiB,GAM1C,GAJID,EAAUvP,QAAQ3d,GAAK,GACzBktB,EAAUE,QAAQptB,GAGhBwO,EAAEzC,GAAQshB,GAAGP,GAAiBC,EAAS1sB,MAAM0L,EAAQmhB,QAIvD,IAHA,IAAII,EAAW9e,EAAEzC,GAAQ6F,UAGhBtM,EAAI,EAAGA,EAAIgoB,EAAS3sB,OAAQ2E,GAAK,EACpCkJ,EAAE8e,EAAShoB,IAAI+nB,GAAGP,IAAiBC,EAAS1sB,MAAMitB,EAAShoB,GAAI4nB,EAZpD,CAerB,CAEA,SAASK,EAAYvtB,GACnB,IAAIktB,EAAYltB,GAAKA,EAAE+L,QAAS/L,EAAE+L,OAAOohB,eAAsB,GAE3DD,EAAUvP,QAAQ3d,GAAK,GACzBktB,EAAUE,QAAQptB,GAGpB+sB,EAAS1sB,MAAMqC,KAAMwqB,EACvB,CApCuB,oBAAZ3e,EAAK,KACdse,EAAYte,EAAK,GACjBwe,EAAWxe,EAAK,GAChBye,EAAUze,EAAK,GACfue,OAAiBzS,GAGd2S,IAASA,GAAU,GAkCxB,IAHA,IACIQ,EADArhB,EAAS0gB,EAAU5b,MAAM,KAGpBrQ,EAAI,EAAGA,EAAI8B,KAAK/B,OAAQC,GAAK,EAAG,CACvC,IAAIyR,EAAK3P,KAAK9B,GAEd,GAAKksB,EAaH,IAAKU,EAAI,EAAGA,EAAIrhB,EAAOxL,OAAQ6sB,GAAK,EAAG,CACrC,IAAIC,EAASthB,EAAOqhB,GACfnb,EAAGqb,oBAAmBrb,EAAGqb,kBAAoB,CAAC,GAC9Crb,EAAGqb,kBAAkBD,KAASpb,EAAGqb,kBAAkBD,GAAU,IAElEpb,EAAGqb,kBAAkBD,GAAQ7oB,KAAK,CAChCmoB,SAAUA,EACVY,cAAeV,IAGjB5a,EAAGjF,iBAAiBqgB,EAAQR,EAAiBD,EAC/C,MAvBA,IAAKQ,EAAI,EAAGA,EAAIrhB,EAAOxL,OAAQ6sB,GAAK,EAAG,CACrC,IAAIpmB,EAAQ+E,EAAOqhB,GACdnb,EAAGub,gBAAevb,EAAGub,cAAgB,CAAC,GACtCvb,EAAGub,cAAcxmB,KAAQiL,EAAGub,cAAcxmB,GAAS,IACxDiL,EAAGub,cAAcxmB,GAAOxC,KAAK,CAC3BmoB,SAAUA,EACVY,cAAeJ,IAEjBlb,EAAGjF,iBAAiBhG,EAAOmmB,EAAaP,EAC1C,CAgBJ,CAEA,OAAOtqB,IACT,CAEA,SAASwG,IACP,IAAK,IAAI2kB,EAAQpE,UAAU9oB,OAAQ4N,EAAO,IAAIzN,MAAM+sB,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFvf,EAAKuf,GAASrE,UAAUqE,GAG1B,IAAIjB,EAAYte,EAAK,GACjBue,EAAiBve,EAAK,GACtBwe,EAAWxe,EAAK,GAChBye,EAAUze,EAAK,GAEI,oBAAZA,EAAK,KACdse,EAAYte,EAAK,GACjBwe,EAAWxe,EAAK,GAChBye,EAAUze,EAAK,GACfue,OAAiBzS,GAGd2S,IAASA,GAAU,GAGxB,IAFA,IAAI7gB,EAAS0gB,EAAU5b,MAAM,KAEpBrQ,EAAI,EAAGA,EAAIuL,EAAOxL,OAAQC,GAAK,EAGtC,IAFA,IAAIwG,EAAQ+E,EAAOvL,GAEV4sB,EAAI,EAAGA,EAAI9qB,KAAK/B,OAAQ6sB,GAAK,EAAG,CACvC,IAAInb,EAAK3P,KAAK8qB,GACVtgB,OAAW,EAQf,IANK4f,GAAkBza,EAAGub,cACxB1gB,EAAWmF,EAAGub,cAAcxmB,GACnB0lB,GAAkBza,EAAGqb,oBAC9BxgB,EAAWmF,EAAGqb,kBAAkBtmB,IAG9B8F,GAAYA,EAASvM,OACvB,IAAK,IAAI2E,EAAI4H,EAASvM,OAAS,EAAG2E,GAAK,EAAGA,GAAK,EAAG,CAChD,IAAIgG,EAAU4B,EAAS5H,GAEnBynB,GAAYzhB,EAAQyhB,WAAaA,GAG1BA,GAAYzhB,EAAQyhB,UAAYzhB,EAAQyhB,SAASgB,WAAaziB,EAAQyhB,SAASgB,YAAchB,GAFtG1a,EAAG/E,oBAAoBlG,EAAOkE,EAAQqiB,cAAeX,GACrD9f,EAAS8gB,OAAO1oB,EAAG,IAITynB,IACV1a,EAAG/E,oBAAoBlG,EAAOkE,EAAQqiB,cAAeX,GACrD9f,EAAS8gB,OAAO1oB,EAAG,GAEvB,CAEJ,CAGF,OAAO5C,IACT,CAsCA,SAAS4L,IAGP,IAFA,IAAIjK,EAAS,IAEJ4pB,EAAQxE,UAAU9oB,OAAQ4N,EAAO,IAAIzN,MAAMmtB,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF3f,EAAK2f,GAASzE,UAAUyE,GAM1B,IAHA,IAAI/hB,EAASoC,EAAK,GAAG0C,MAAM,KACvBic,EAAY3e,EAAK,GAEZ3N,EAAI,EAAGA,EAAIuL,EAAOxL,OAAQC,GAAK,EAGtC,IAFA,IAAIwG,EAAQ+E,EAAOvL,GAEV4sB,EAAI,EAAGA,EAAI9qB,KAAK/B,OAAQ6sB,GAAK,EAAG,CACvC,IAAInb,EAAK3P,KAAK8qB,GAEd,GAAInpB,EAAOwjB,YAAa,CACtB,IAAI3Y,EAAM,IAAI7K,EAAOwjB,YAAYzgB,EAAO,CACtC+mB,OAAQjB,EACRve,SAAS,EACTQ,YAAY,IAEdkD,EAAG8a,cAAgB5e,EAAKmC,QAAO,SAAUvG,EAAMikB,GAC7C,OAAOA,EAAY,CACrB,IACA/b,EAAGhD,cAAcH,GACjBmD,EAAG8a,cAAgB,UACZ9a,EAAG8a,aACZ,CACF,CAGF,OAAOzqB,IACT,CAEA,SAAS2rB,EAAcrpB,GACrB,IAAIspB,EAAM5rB,KAEV,SAAS6rB,EAAavuB,GAChBA,EAAE+L,SAAWrJ,OACjBsC,EAASxD,KAAKkB,KAAM1C,GACpBsuB,EAAIplB,IAAI,gBAAiBqlB,GAC3B,CAMA,OAJIvpB,GACFspB,EAAIxgB,GAAG,gBAAiBygB,GAGnB7rB,IACT,CAgCA,SAAS,EAAW8rB,GAClB,GAAI9rB,KAAK/B,OAAS,EAAG,CACnB,GAAI6tB,EAAgB,CAClB,IAAIC,EAAU/rB,KAAKgsB,SAEnB,OAAOhsB,KAAK,GAAGisB,YAAc5T,WAAW0T,EAAQnT,iBAAiB,iBAAmBP,WAAW0T,EAAQnT,iBAAiB,eAC1H,CAEA,OAAO5Y,KAAK,GAAGisB,WACjB,CAEA,OAAO,IACT,CAgBA,SAAS,EAAYH,GACnB,GAAI9rB,KAAK/B,OAAS,EAAG,CACnB,GAAI6tB,EAAgB,CAClB,IAAII,EAAWlsB,KAAKgsB,SAEpB,OAAOhsB,KAAK,GAAGyZ,aAAepB,WAAW6T,EAAStT,iBAAiB,eAAiBP,WAAW6T,EAAStT,iBAAiB,iBAC3H,CAEA,OAAO5Y,KAAK,GAAGyZ,YACjB,CAEA,OAAO,IACT,CAEA,SAAS0S,IACP,GAAInsB,KAAK/B,OAAS,EAAG,CACnB,IAAI0D,EAAS,IACTR,EAAWsjB,IACX9U,EAAK3P,KAAK,GACVosB,EAAMzc,EAAG0c,wBACTzZ,EAAOzR,EAASyR,KAChB0Z,EAAY3c,EAAG2c,WAAa1Z,EAAK0Z,WAAa,EAC9CC,EAAa5c,EAAG4c,YAAc3Z,EAAK2Z,YAAc,EACjD/Y,EAAY7D,IAAOhO,EAASA,EAAO6qB,QAAU7c,EAAG6D,UAChDiZ,EAAa9c,IAAOhO,EAASA,EAAO+qB,QAAU/c,EAAG8c,WACrD,MAAO,CACLE,IAAKP,EAAIO,IAAMnZ,EAAY8Y,EAC3BM,KAAMR,EAAIQ,KAAOH,EAAaF,EAElC,CAEA,OAAO,IACT,CA6BA,SAASP,IACP,IAAIrqB,EAAS,IACb,OAAI3B,KAAK,GAAW2B,EAAOwW,iBAAiBnY,KAAK,GAAI,MAC9C,CAAC,CACV,CAEA,SAAS6sB,EAAIC,EAAO/vB,GAClB,IACImB,EADAyD,EAAS,IAGb,GAAyB,IAArBolB,UAAU9oB,OAAc,CAC1B,GAAqB,kBAAV6uB,EAGJ,CAEL,IAAK5uB,EAAI,EAAGA,EAAI8B,KAAK/B,OAAQC,GAAK,EAChC,IAAK,IAAI6uB,KAASD,EAChB9sB,KAAK9B,GAAGoV,MAAMyZ,GAASD,EAAMC,GAIjC,OAAO/sB,IACT,CAVE,GAAIA,KAAK,GAAI,OAAO2B,EAAOwW,iBAAiBnY,KAAK,GAAI,MAAM4Y,iBAAiBkU,EAWhF,CAEA,GAAyB,IAArB/F,UAAU9oB,QAAiC,kBAAV6uB,EAAoB,CAEvD,IAAK5uB,EAAI,EAAGA,EAAI8B,KAAK/B,OAAQC,GAAK,EAChC8B,KAAK9B,GAAGoV,MAAMwZ,GAAS/vB,EAGzB,OAAOiD,IACT,CAEA,OAAOA,IACT,CAEA,SAAS6U,EAAKvS,GACZ,OAAKA,GACLtC,KAAKyC,SAAQ,SAAUkN,EAAIqL,GACzB1Y,EAAS3E,MAAMgS,EAAI,CAACA,EAAIqL,GAC1B,IACOhb,MAJeA,IAKxB,CAEA,SAASgO,EAAO1L,GACd,IAAI9E,EAASyqB,EAAYjoB,KAAMsC,GAC/B,OAAOwJ,EAAEtO,EACX,CAEA,SAAS8qB,EAAKA,GACZ,GAAoB,qBAATA,EACT,OAAOtoB,KAAK,GAAKA,KAAK,GAAGyoB,UAAY,KAGvC,IAAK,IAAIvqB,EAAI,EAAGA,EAAI8B,KAAK/B,OAAQC,GAAK,EACpC8B,KAAK9B,GAAGuqB,UAAYH,EAGtB,OAAOtoB,IACT,CAEA,SAAS,EAAKgtB,GACZ,GAAoB,qBAATA,EACT,OAAOhtB,KAAK,GAAKA,KAAK,GAAGitB,YAAYxe,OAAS,KAGhD,IAAK,IAAIvQ,EAAI,EAAGA,EAAI8B,KAAK/B,OAAQC,GAAK,EACpC8B,KAAK9B,GAAG+uB,YAAcD,EAGxB,OAAOhtB,IACT,CAEA,SAAS2qB,EAAGzhB,GACV,IAGIgkB,EACAhvB,EAJAyD,EAAS,IACTR,EAAWsjB,IACX9U,EAAK3P,KAAK,GAGd,IAAK2P,GAA0B,qBAAbzG,EAA0B,OAAO,EAEnD,GAAwB,kBAAbA,EAAuB,CAChC,GAAIyG,EAAGV,QAAS,OAAOU,EAAGV,QAAQ/F,GAClC,GAAIyG,EAAGwd,sBAAuB,OAAOxd,EAAGwd,sBAAsBjkB,GAC9D,GAAIyG,EAAGyd,kBAAmB,OAAOzd,EAAGyd,kBAAkBlkB,GAGtD,IAFAgkB,EAAcphB,EAAE5C,GAEXhL,EAAI,EAAGA,EAAIgvB,EAAYjvB,OAAQC,GAAK,EACvC,GAAIgvB,EAAYhvB,KAAOyR,EAAI,OAAO,EAGpC,OAAO,CACT,CAEA,GAAIzG,IAAa/H,EACf,OAAOwO,IAAOxO,EAGhB,GAAI+H,IAAavH,EACf,OAAOgO,IAAOhO,EAGhB,GAAIuH,EAASuP,UAAYvP,aAAoBwe,EAAM,CAGjD,IAFAwF,EAAchkB,EAASuP,SAAW,CAACvP,GAAYA,EAE1ChL,EAAI,EAAGA,EAAIgvB,EAAYjvB,OAAQC,GAAK,EACvC,GAAIgvB,EAAYhvB,KAAOyR,EAAI,OAAO,EAGpC,OAAO,CACT,CAEA,OAAO,CACT,CAEA,SAASqL,IACP,IACI9c,EADA8Q,EAAQhP,KAAK,GAGjB,GAAIgP,EAAO,CACT9Q,EAAI,EAEJ,MAA2C,QAAnC8Q,EAAQA,EAAMqe,iBACG,IAAnBre,EAAMyJ,WAAgBva,GAAK,GAGjC,OAAOA,CACT,CAGF,CAEA,SAASovB,EAAGtS,GACV,GAAqB,qBAAVA,EAAuB,OAAOhb,KACzC,IAAI/B,EAAS+B,KAAK/B,OAElB,GAAI+c,EAAQ/c,EAAS,EACnB,OAAO6N,EAAE,IAGX,GAAIkP,EAAQ,EAAG,CACb,IAAIuS,EAActvB,EAAS+c,EAC3B,OAA4BlP,EAAxByhB,EAAc,EAAY,GACrB,CAACvtB,KAAKutB,IACjB,CAEA,OAAOzhB,EAAE,CAAC9L,KAAKgb,IACjB,CAEA,SAAS9W,IAIP,IAHA,IAAIspB,EACArsB,EAAWsjB,IAEN7hB,EAAI,EAAGA,EAAImkB,UAAU9oB,OAAQ2E,GAAK,EAAG,CAC5C4qB,EAAW5qB,EAAI,GAAKmkB,UAAU9oB,QAAU2E,OAAI+U,EAAYoP,UAAUnkB,GAElE,IAAK,IAAI1E,EAAI,EAAGA,EAAI8B,KAAK/B,OAAQC,GAAK,EACpC,GAAwB,kBAAbsvB,EAAuB,CAChC,IAAIC,EAAUtsB,EAASsC,cAAc,OACrCgqB,EAAQhF,UAAY+E,EAEpB,MAAOC,EAAQC,WACb1tB,KAAK9B,GAAGyvB,YAAYF,EAAQC,WAEhC,MAAO,GAAIF,aAAoB9F,EAC7B,IAAK,IAAIoD,EAAI,EAAGA,EAAI0C,EAASvvB,OAAQ6sB,GAAK,EACxC9qB,KAAK9B,GAAGyvB,YAAYH,EAAS1C,SAG/B9qB,KAAK9B,GAAGyvB,YAAYH,EAG1B,CAEA,OAAOxtB,IACT,CAOA,SAAS4tB,EAAQJ,GACf,IACItvB,EACA4sB,EAFA3pB,EAAWsjB,IAIf,IAAKvmB,EAAI,EAAGA,EAAI8B,KAAK/B,OAAQC,GAAK,EAChC,GAAwB,kBAAbsvB,EAAuB,CAChC,IAAIC,EAAUtsB,EAASsC,cAAc,OAGrC,IAFAgqB,EAAQhF,UAAY+E,EAEf1C,EAAI2C,EAAQ7J,WAAW3lB,OAAS,EAAG6sB,GAAK,EAAGA,GAAK,EACnD9qB,KAAK9B,GAAG2vB,aAAaJ,EAAQ7J,WAAWkH,GAAI9qB,KAAK9B,GAAG0lB,WAAW,GAEnE,MAAO,GAAI4J,aAAoB9F,EAC7B,IAAKoD,EAAI,EAAGA,EAAI0C,EAASvvB,OAAQ6sB,GAAK,EACpC9qB,KAAK9B,GAAG2vB,aAAaL,EAAS1C,GAAI9qB,KAAK9B,GAAG0lB,WAAW,SAGvD5jB,KAAK9B,GAAG2vB,aAAaL,EAAUxtB,KAAK9B,GAAG0lB,WAAW,IAItD,OAAO5jB,IACT,CAmCA,SAAS3C,EAAK6L,GACZ,OAAIlJ,KAAK/B,OAAS,EACZiL,EACElJ,KAAK,GAAGwP,oBAAsB1D,EAAE9L,KAAK,GAAGwP,oBAAoBmb,GAAGzhB,GAC1D4C,EAAE,CAAC9L,KAAK,GAAGwP,qBAGb1D,EAAE,IAGP9L,KAAK,GAAGwP,mBAA2B1D,EAAE,CAAC9L,KAAK,GAAGwP,qBAC3C1D,EAAE,IAGJA,EAAE,GACX,CAEA,SAASgiB,EAAQ5kB,GACf,IAAI6kB,EAAU,GACVpe,EAAK3P,KAAK,GACd,IAAK2P,EAAI,OAAO7D,EAAE,IAElB,MAAO6D,EAAGH,mBAAoB,CAC5B,IAAIwe,EAAQre,EAAGH,mBAEXtG,EACE4C,EAAEkiB,GAAOrD,GAAGzhB,IAAW6kB,EAAQ7rB,KAAK8rB,GACnCD,EAAQ7rB,KAAK8rB,GAEpBre,EAAKqe,CACP,CAEA,OAAOliB,EAAEiiB,EACX,CAEA,SAAS1e,EAAKnG,GACZ,GAAIlJ,KAAK/B,OAAS,EAAG,CACnB,IAAI0R,EAAK3P,KAAK,GAEd,OAAIkJ,EACEyG,EAAGJ,wBAA0BzD,EAAE6D,EAAGJ,wBAAwBob,GAAGzhB,GACxD4C,EAAE,CAAC6D,EAAGJ,yBAGRzD,EAAE,IAGP6D,EAAGJ,uBAA+BzD,EAAE,CAAC6D,EAAGJ,yBACrCzD,EAAE,GACX,CAEA,OAAOA,EAAE,GACX,CAEA,SAASmiB,EAAQ/kB,GACf,IAAIglB,EAAU,GACVve,EAAK3P,KAAK,GACd,IAAK2P,EAAI,OAAO7D,EAAE,IAElB,MAAO6D,EAAGJ,uBAAwB,CAChC,IAAI4e,EAAQxe,EAAGJ,uBAEXrG,EACE4C,EAAEqiB,GAAOxD,GAAGzhB,IAAWglB,EAAQhsB,KAAKisB,GACnCD,EAAQhsB,KAAKisB,GAEpBxe,EAAKwe,CACP,CAEA,OAAOriB,EAAEoiB,EACX,CAMA,SAAS,GAAOhlB,GAGd,IAFA,IAAIgG,EAAU,GAELhR,EAAI,EAAGA,EAAI8B,KAAK/B,OAAQC,GAAK,EACT,OAAvB8B,KAAK9B,GAAGoL,aACNJ,EACE4C,EAAE9L,KAAK9B,GAAGoL,YAAYqhB,GAAGzhB,IAAWgG,EAAQhN,KAAKlC,KAAK9B,GAAGoL,YAE7D4F,EAAQhN,KAAKlC,KAAK9B,GAAGoL,aAK3B,OAAOwC,EAAEoD,EACX,CAEA,SAASA,GAAQhG,GAGf,IAFA,IAAIgG,EAAU,GAELhR,EAAI,EAAGA,EAAI8B,KAAK/B,OAAQC,GAAK,EAAG,CACvC,IAAIkwB,EAAUpuB,KAAK9B,GAAGoL,WAEtB,MAAO8kB,EACDllB,EACE4C,EAAEsiB,GAASzD,GAAGzhB,IAAWgG,EAAQhN,KAAKksB,GAE1Clf,EAAQhN,KAAKksB,GAGfA,EAAUA,EAAQ9kB,UAEtB,CAEA,OAAOwC,EAAEoD,EACX,CAEA,SAASE,GAAQlG,GACf,IAAIkG,EAAUpP,KAEd,MAAwB,qBAAbkJ,EACF4C,EAAE,KAGNsD,EAAQub,GAAGzhB,KACdkG,EAAUA,EAAQF,QAAQhG,GAAUokB,GAAG,IAGlCle,EACT,CAEA,SAASvF,GAAKX,GAGZ,IAFA,IAAImlB,EAAgB,GAEXnwB,EAAI,EAAGA,EAAI8B,KAAK/B,OAAQC,GAAK,EAGpC,IAFA,IAAIowB,EAAQtuB,KAAK9B,GAAGkL,iBAAiBF,GAE5B4hB,EAAI,EAAGA,EAAIwD,EAAMrwB,OAAQ6sB,GAAK,EACrCuD,EAAcnsB,KAAKosB,EAAMxD,IAI7B,OAAOhf,EAAEuiB,EACX,CAEA,SAAStf,GAAS7F,GAGhB,IAFA,IAAI6F,EAAW,GAEN7Q,EAAI,EAAGA,EAAI8B,KAAK/B,OAAQC,GAAK,EAGpC,IAFA,IAAI0lB,EAAa5jB,KAAK9B,GAAG6Q,SAEhB+b,EAAI,EAAGA,EAAIlH,EAAW3lB,OAAQ6sB,GAAK,EACrC5hB,IAAY4C,EAAE8X,EAAWkH,IAAIH,GAAGzhB,IACnC6F,EAAS7M,KAAK0hB,EAAWkH,IAK/B,OAAOhf,EAAEiD,EACX,CAEA,SAAS1N,KACP,IAAK,IAAInD,EAAI,EAAGA,EAAI8B,KAAK/B,OAAQC,GAAK,EAChC8B,KAAK9B,GAAGoL,YAAYtJ,KAAK9B,GAAGoL,WAAWilB,YAAYvuB,KAAK9B,IAG9D,OAAO8B,IACT,CAh+BA8L,EAAE7J,GAAKylB,EAAK/oB,UAm4CZ,IAAI6vB,GAAY,gBAAgBjgB,MAAM,KAEtC,SAASkgB,GAAS3sB,GAChB,SAAS4sB,IACP,IAAK,IAAI/F,EAAO5B,UAAU9oB,OAAQ4N,EAAO,IAAIzN,MAAMuqB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/Ehd,EAAKgd,GAAQ9B,UAAU8B,GAGzB,GAAuB,qBAAZhd,EAAK,GAAoB,CAClC,IAAK,IAAI3N,EAAI,EAAGA,EAAI8B,KAAK/B,OAAQC,GAAK,EAChCswB,GAAUvT,QAAQnZ,GAAQ,IACxBA,KAAQ9B,KAAK9B,GAAI8B,KAAK9B,GAAG4D,KAC3BgK,EAAE9L,KAAK9B,IAAI0N,QAAQ9J,IAKzB,OAAO9B,IACT,CAEA,OAAOA,KAAKoL,GAAGzN,MAAMqC,KAAM,CAAC8B,GAAM8M,OAAO/C,GAC3C,CAEA,OAAO6iB,CACT,CAEYD,GAAS,SACVA,GAAS,QACRA,GAAS,SACPA,GAAS,WACRA,GAAS,YACZA,GAAS,SACPA,GAAS,WACRA,GAAS,YACXA,GAAS,UACTA,GAAS,UACNA,GAAS,aACTA,GAAS,aACXA,GAAS,WACNA,GAAS,cACTA,GAAS,cACXA,GAAS,YACRA,GAAS,aACRA,GAAS,cACXA,GAAS,YACRA,GAAS,aACZA,GAAS,UACTA,GAAS,UCtpDtB,IAAIE,GAAU,CACZjG,SAAUA,EACVM,YAAaA,EACbO,SAAUA,EACVH,YAAaA,EACbM,KAAMA,EACNG,WAAYA,EACZC,UAAWA,EACXC,WAAYA,EACZ3e,GAAIA,EACJ5E,IAAKA,EACLoF,QAASA,EACT+f,cAAeA,EACfiD,WAAY,EACZC,YAAa,EACb7C,OAAQA,EACRG,OAAQA,EACRU,IAAKA,EACLhY,KAAMA,EACNyT,KAAMA,EACN0E,KAAM,EACNrC,GAAIA,EACJ3P,MAAOA,EACPsS,GAAIA,EACJppB,OAAQA,EACR0pB,QAASA,EACTvwB,KAAMA,EACNywB,QAASA,EACTze,KAAMA,EACN4e,QAASA,EACTa,OAAQ,GACR5f,QAASA,GACTE,QAASA,GACTvF,KAAMA,GACNkF,SAAUA,GACVf,OAAQA,EACR3M,OAAQA,IAEV3C,OAAOP,KAAKwwB,IAASlsB,SAAQ,SAAUgc,GACrC/f,OAAOqO,eAAejB,EAAE7J,GAAIwc,EAAY,CACtC1hB,MAAO4xB,GAAQlQ,GACf4I,UAAU,GAEd,IACA,WC3CA,SAAS0H,GAAYniB,GACnB,IAAI8K,EAAS9K,EACblO,OAAOP,KAAKuZ,GAAQjV,SAAQ,SAAU1D,GACpC,IACE2Y,EAAO3Y,GAAO,IAChB,CAAE,MAAOzB,GACT,CAEA,WACSoa,EAAO3Y,EAChB,CAAE,MAAOzB,GACT,CACF,GACF,CAEA,SAAS0xB,GAAS1sB,EAAU0C,GAK1B,YAJc,IAAVA,IACFA,EAAQ,GAGHG,WAAW7C,EAAU0C,EAC9B,CAEA,SAASiqB,KACP,OAAO5J,KAAK4J,KACd,CAEA,SAAS,GAAiBtf,GACxB,IACI2D,EADA3R,EAAS,IAeb,OAZIA,EAAOwW,mBACT7E,EAAQ3R,EAAOwW,iBAAiBxI,EAAI,QAGjC2D,GAAS3D,EAAGuf,eACf5b,EAAQ3D,EAAGuf,cAGR5b,IACHA,EAAQ3D,EAAG2D,OAGNA,CACT,CAEA,SAAS6b,GAAaxf,EAAIyf,QACX,IAATA,IACFA,EAAO,KAGT,IACIC,EACAC,EACAC,EAHA5tB,EAAS,IAIT6tB,EAAW,GAAiB7f,EAAI,MAiCpC,OA/BIhO,EAAO8tB,iBACTH,EAAeE,EAAS1F,WAAa0F,EAASE,gBAE1CJ,EAAa/gB,MAAM,KAAKtQ,OAAS,IACnCqxB,EAAeA,EAAa/gB,MAAM,MAAMhK,KAAI,SAAUzG,GACpD,OAAOA,EAAE6F,QAAQ,IAAK,IACxB,IAAG3C,KAAK,OAKVuuB,EAAkB,IAAI5tB,EAAO8tB,gBAAiC,SAAjBH,EAA0B,GAAKA,KAE5EC,EAAkBC,EAASG,cAAgBH,EAASI,YAAcJ,EAASK,aAAeL,EAASM,aAAeN,EAAS1F,WAAa0F,EAAS5W,iBAAiB,aAAajV,QAAQ,aAAc,sBACrM0rB,EAASE,EAAgB3wB,WAAW2P,MAAM,MAG/B,MAAT6gB,IAE0BE,EAAxB3tB,EAAO8tB,gBAAgCF,EAAgBQ,IAChC,KAAlBV,EAAOpxB,OAA8Boa,WAAWgX,EAAO,KAC1ChX,WAAWgX,EAAO,KAG7B,MAATD,IAE0BE,EAAxB3tB,EAAO8tB,gBAAgCF,EAAgBS,IAChC,KAAlBX,EAAOpxB,OAA8Boa,WAAWgX,EAAO,KAC1ChX,WAAWgX,EAAO,KAGnCC,GAAgB,CACzB,CAEA,SAAS,GAASpJ,GAChB,MAAoB,kBAANA,GAAwB,OAANA,GAAcA,EAAEloB,aAAkE,WAAnDU,OAAOC,UAAUC,SAASE,KAAKonB,GAAGxa,MAAM,GAAI,EAC7G,CAEA,SAASukB,GAAOC,GAEd,MAAsB,qBAAXvuB,QAAwD,qBAAvBA,OAAOwuB,YAC1CD,aAAgBC,YAGlBD,IAA2B,IAAlBA,EAAKzX,UAAoC,KAAlByX,EAAKzX,SAC9C,CAEA,SAAS,KAIP,IAHA,IAAI2X,EAAK1xB,OAAOqoB,UAAU9oB,QAAU,OAAI0Z,EAAYoP,UAAU,IAC1DsJ,EAAW,CAAC,YAAa,cAAe,aAEnCnyB,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,GAAK,EAAG,CAC5C,IAAIoyB,EAAapyB,EAAI,GAAK6oB,UAAU9oB,QAAUC,OAAIyZ,EAAYoP,UAAU7oB,GAExE,QAAmByZ,IAAf2Y,GAA2C,OAAfA,IAAwBL,GAAOK,GAK7D,IAJA,IAAIC,EAAY7xB,OAAOP,KAAKO,OAAO4xB,IAAatiB,QAAO,SAAUjP,GAC/D,OAAOsxB,EAASpV,QAAQlc,GAAO,CACjC,IAESyxB,EAAY,EAAGC,EAAMF,EAAUtyB,OAAQuyB,EAAYC,EAAKD,GAAa,EAAG,CAC/E,IAAIE,EAAUH,EAAUC,GACpBG,EAAOjyB,OAAOkyB,yBAAyBN,EAAYI,QAE1C/Y,IAATgZ,GAAsBA,EAAKvJ,aACzB,GAASgJ,EAAGM,KAAa,GAASJ,EAAWI,IAC3CJ,EAAWI,GAASG,WACtBT,EAAGM,GAAWJ,EAAWI,GAEzB,GAAON,EAAGM,GAAUJ,EAAWI,KAEvB,GAASN,EAAGM,KAAa,GAASJ,EAAWI,KACvDN,EAAGM,GAAW,CAAC,EAEXJ,EAAWI,GAASG,WACtBT,EAAGM,GAAWJ,EAAWI,GAEzB,GAAON,EAAGM,GAAUJ,EAAWI,KAGjCN,EAAGM,GAAWJ,EAAWI,GAG/B,CAEJ,CAEA,OAAON,CACT,CAEA,SAASU,GAAkB1wB,EAAUwM,GACnClO,OAAOP,KAAKyO,GAAKnK,SAAQ,SAAU1D,GAC7B,GAAS6N,EAAI7N,KACfL,OAAOP,KAAKyO,EAAI7N,IAAM0D,SAAQ,SAAUsuB,GACN,oBAArBnkB,EAAI7N,GAAKgyB,KAClBnkB,EAAI7N,GAAKgyB,GAAUnkB,EAAI7N,GAAKgyB,GAAQjK,KAAK1mB,GAE7C,IAGFA,EAASrB,GAAO6N,EAAI7N,EACtB,GACF,CAEA,SAASiyB,GAAkBpI,GAKzB,YAJgB,IAAZA,IACFA,EAAU,IAGL,IAAMA,EAAQna,OAAO9K,QAAQ,cAAe,QAClDA,QAAQ,KAAM,IACjB,CAEA,SAASstB,GAA0BC,EAAY3uB,EAAQ4uB,EAAgBC,GACrE,IAAIjwB,EAAWsjB,IAaf,OAXI0M,GACFzyB,OAAOP,KAAKizB,GAAY3uB,SAAQ,SAAU1D,GACxC,IAAKwD,EAAOxD,KAAwB,IAAhBwD,EAAO8uB,KAAe,CACxC,IAAItrB,EAAU5E,EAASsC,cAAc,OACrCsC,EAAQqP,UAAYgc,EAAWryB,GAC/BmyB,EAAWhtB,OAAO6B,GAClBxD,EAAOxD,GAAOgH,CAChB,CACF,IAGKxD,CACT,CCzLA,IAAI+uB,GCCAC,GCDAC,GFEJ,SAASC,KACP,IAAI9vB,EAAS,IACTR,EAAWsjB,IACf,MAAO,CACLiN,SAAU,iBAAkB/vB,GAAUA,EAAOgwB,eAAiBxwB,aAAoBQ,EAAOgwB,eACzFC,gBAAiBjwB,EAAOkwB,cAAgB,mBAAoBlwB,EAAOijB,WAAajjB,EAAOijB,UAAUkN,gBAAkB,EACnHC,SAAU,WACR,MAAO,qBAAsBpwB,GAAU,2BAA4BA,CACrE,CAFU,GAGVqwB,gBAAiB,WACf,IAAIC,GAAkB,EAEtB,IACE,IAAIC,EAAOxzB,OAAOqO,eAAe,CAAC,EAAG,UAAW,CAE9C5F,IAAK,WACH8qB,GAAkB,CACpB,IAEFtwB,EAAO+I,iBAAiB,sBAAuB,KAAMwnB,EACvD,CAAE,MAAO50B,GACT,CAEA,OAAO20B,CACT,CAfiB,GAgBjBE,SAAU,WACR,MAAO,mBAAoBxwB,CAC7B,CAFU,GAId,CAEA,SAASywB,KAKP,OAJKd,KACHA,GAAUG,MAGLH,EACT,CCpCA,SAASe,GAAWC,GAClB,IAAIC,OAAiB,IAAVD,EAAmB,CAAC,EAAIA,EAC/BzN,EAAY0N,EAAK1N,UAEjByM,EAAUc,KACVzwB,EAAS,IACT6wB,EAAW7wB,EAAOijB,UAAU4N,SAC5BC,EAAK5N,GAAaljB,EAAOijB,UAAUC,UACnC0M,EAAS,CACXmB,KAAK,EACLC,SAAS,GAEPC,EAAcjxB,EAAO2jB,OAAO1J,MAC5BiX,EAAelxB,EAAO2jB,OAAOwN,OAC7BH,EAAUF,EAAGhb,MAAM,+BAEnBsb,EAAON,EAAGhb,MAAM,wBAChBub,EAAOP,EAAGhb,MAAM,2BAChBwb,GAAUF,GAAQN,EAAGhb,MAAM,8BAC3Byb,EAAuB,UAAbV,EACVW,EAAqB,aAAbX,EAERY,EAAc,CAAC,YAAa,YAAa,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAoBzJ,OAlBKL,GAAQI,GAAS7B,EAAQI,OAAS0B,EAAYnY,QAAQ2X,EAAc,IAAMC,IAAiB,IAC9FE,EAAON,EAAGhb,MAAM,uBACXsb,IAAMA,EAAO,CAAC,EAAG,EAAG,WACzBI,GAAQ,GAINR,IAAYO,IACd3B,EAAO8B,GAAK,UACZ9B,EAAOoB,SAAU,IAGfI,GAAQE,GAAUD,KACpBzB,EAAO8B,GAAK,MACZ9B,EAAOmB,KAAM,GAIRnB,CACT,CAEA,SAAS+B,GAAUC,GASjB,YARkB,IAAdA,IACFA,EAAY,CAAC,GAGVhC,KACHA,GAASc,GAAWkB,IAGfhC,EACT,CCxDA,SAASiC,KACP,IAAI7xB,EAAS,IAEb,SAAS8xB,IACP,IAAIhB,EAAK9wB,EAAOijB,UAAUC,UAAUhhB,cACpC,OAAO4uB,EAAGxX,QAAQ,WAAa,GAAKwX,EAAGxX,QAAQ,UAAY,GAAKwX,EAAGxX,QAAQ,WAAa,CAC1F,CAEA,MAAO,CACLyY,SAAU/xB,EAAOijB,UAAUC,UAAUpN,MAAM,SAC3Cgc,SAAUA,IACVE,UAAW,+CAA+Crd,KAAK3U,EAAOijB,UAAUC,WAEpF,CAEA,SAAS+O,KAKP,OAJKpC,KACHA,GAAUgC,MAGLhC,EACT,CCrBA,IAAIqC,GAAyB,WAC3B,IAAIlyB,EAAS,IACb,MAAwC,qBAA1BA,EAAOmyB,cACvB,EAEA,UACEhyB,KAAM,SACNikB,OAAQ,WACN,IAAIgO,EAAS/zB,KACb,GAAO+zB,EAAQ,CACbC,OAAQ,CACNjC,SAAU,KACVkC,eAAgB,WACTF,IAAUA,EAAOG,WAAcH,EAAOI,cAC3CJ,EAAOC,OAAOjC,SAAW,IAAI+B,gBAAe,SAAU5oB,GACpD,IAAI0Q,EAAQmY,EAAOnY,MACfkX,EAASiB,EAAOjB,OAChBsB,EAAWxY,EACXyY,EAAYvB,EAChB5nB,EAAQzI,SAAQ,SAAU8vB,GACxB,IAAI+B,EAAiB/B,EAAK+B,eACtBC,EAAchC,EAAKgC,YACnBlrB,EAASkpB,EAAKlpB,OACdA,GAAUA,IAAW0qB,EAAOpkB,KAChCykB,EAAWG,EAAcA,EAAY3Y,OAAS0Y,EAAe,IAAMA,GAAgBE,WACnFH,EAAYE,EAAcA,EAAYzB,QAAUwB,EAAe,IAAMA,GAAgBG,UACvF,IAEIL,IAAaxY,GAASyY,IAAcvB,GACtCiB,EAAOC,OAAOU,eAElB,IACAX,EAAOC,OAAOjC,SAAS4C,QAAQZ,EAAOpkB,IACxC,EACAilB,eAAgB,WACVb,EAAOC,OAAOjC,UAAYgC,EAAOC,OAAOjC,SAAS8C,WAAad,EAAOpkB,KACvEokB,EAAOC,OAAOjC,SAAS8C,UAAUd,EAAOpkB,IACxCokB,EAAOC,OAAOjC,SAAW,KAE7B,EACA2C,cAAe,WACRX,IAAUA,EAAOG,WAAcH,EAAOI,cAC3CJ,EAAOe,KAAK,gBACZf,EAAOe,KAAK,UACd,EACAC,yBAA0B,WACnBhB,IAAUA,EAAOG,WAAcH,EAAOI,aAC3CJ,EAAOe,KAAK,oBACd,IAGN,EACA1pB,GAAI,CACF4pB,KAAM,SAAcjB,GAClB,IAAIpyB,EAAS,IAEToyB,EAAOxxB,OAAO0yB,gBAAkBpB,KAClCE,EAAOC,OAAOC,kBAKhBtyB,EAAO+I,iBAAiB,SAAUqpB,EAAOC,OAAOU,eAEhD/yB,EAAO+I,iBAAiB,oBAAqBqpB,EAAOC,OAAOe,0BAC7D,EACAG,QAAS,SAAiBnB,GACxB,IAAIpyB,EAAS,IACboyB,EAAOC,OAAOY,iBACdjzB,EAAOiJ,oBAAoB,SAAUmpB,EAAOC,OAAOU,eACnD/yB,EAAOiJ,oBAAoB,oBAAqBmpB,EAAOC,OAAOe,yBAChE,IC1EJ,SAASI,KAA2Q,OAA9PA,GAAWz2B,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU8rB,GAASx3B,MAAMqC,KAAM+mB,UAAY,CAI5T,IAAIsO,GAAW,CACbC,OAAQ,SAAgBjsB,EAAQhJ,QACd,IAAZA,IACFA,EAAU,CAAC,GAGb,IAAIsB,EAAS,IACToyB,EAAS/zB,KACTu1B,EAAe5zB,EAAO6zB,kBAAoB7zB,EAAO8zB,uBACjD1D,EAAW,IAAIwD,GAAa,SAAUG,GAIxC,GAAyB,IAArBA,EAAUz3B,OAAd,CAKA,IAAI03B,EAAiB,WACnB5B,EAAOe,KAAK,iBAAkBY,EAAU,GAC1C,EAEI/zB,EAAO8jB,sBACT9jB,EAAO8jB,sBAAsBkQ,GAE7Bh0B,EAAOwD,WAAWwwB,EAAgB,EATpC,MAFE5B,EAAOe,KAAK,iBAAkBY,EAAU,GAa5C,IACA3D,EAAS4C,QAAQtrB,EAAQ,CACvBwE,WAA0C,qBAAvBxN,EAAQwN,YAAoCxN,EAAQwN,WACvE+nB,UAAwC,qBAAtBv1B,EAAQu1B,WAAmCv1B,EAAQu1B,UACrEC,cAAgD,qBAA1Bx1B,EAAQw1B,eAAuCx1B,EAAQw1B,gBAE/E9B,EAAOhC,SAAS+D,UAAU5zB,KAAK6vB,EACjC,EACAiD,KAAM,WACJ,IAAIjB,EAAS/zB,KACb,GAAK+zB,EAAOzC,QAAQS,UAAagC,EAAOxxB,OAAOwvB,SAA/C,CAEA,GAAIgC,EAAOxxB,OAAOwzB,eAGhB,IAFA,IAAIC,EAAmBjC,EAAOkC,IAAI/mB,UAEzBhR,EAAI,EAAGA,EAAI83B,EAAiB/3B,OAAQC,GAAK,EAChD61B,EAAOhC,SAASuD,OAAOU,EAAiB93B,IAK5C61B,EAAOhC,SAASuD,OAAOvB,EAAOkC,IAAI,GAAI,CACpCL,UAAW7B,EAAOxxB,OAAO2zB,uBAG3BnC,EAAOhC,SAASuD,OAAOvB,EAAOoC,WAAW,GAAI,CAC3CtoB,YAAY,GAhBiD,CAkBjE,EACAqnB,QAAS,WACP,IAAInB,EAAS/zB,KACb+zB,EAAOhC,SAAS+D,UAAUrzB,SAAQ,SAAUsvB,GAC1CA,EAASqE,YACX,IACArC,EAAOhC,SAAS+D,UAAY,EAC9B,GAEF,UACEh0B,KAAM,WACNS,OAAQ,CACNwvB,UAAU,EACVgE,gBAAgB,EAChBG,sBAAsB,GAExBnQ,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxBhC,SAAUoD,GAAS,CAAC,EAAGE,GAAU,CAC/BS,UAAW,MAGjB,EACA1qB,GAAI,CACF4pB,KAAM,SAAcjB,GAClBA,EAAOhC,SAASiD,MAClB,EACAE,QAAS,SAAiBnB,GACxBA,EAAOhC,SAASmD,SAClB,ICxFJ,IACEmB,UAAW,SAAmBC,GAC5B,IAAIl2B,EAAWJ,KACVI,EAASm2B,SACd73B,OAAOP,KAAKiC,EAASm2B,SAAS9zB,SAAQ,SAAU+zB,GAC9C,IAAIjxB,EAASnF,EAASm2B,QAAQC,GAE1BjxB,EAAOhD,QACT,GAAO+zB,EAAgB/wB,EAAOhD,OAElC,GACF,EACAk0B,WAAY,SAAoBC,QACR,IAAlBA,IACFA,EAAgB,CAAC,GAGnB,IAAIt2B,EAAWJ,KACVI,EAASm2B,SACd73B,OAAOP,KAAKiC,EAASm2B,SAAS9zB,SAAQ,SAAU+zB,GAC9C,IAAIjxB,EAASnF,EAASm2B,QAAQC,GAC1BG,EAAeD,EAAcF,IAAe,CAAC,EAE7CjxB,EAAO6F,IAAMhL,EAASgL,IACxB1M,OAAOP,KAAKoH,EAAO6F,IAAI3I,SAAQ,SAAUm0B,GACvCx2B,EAASgL,GAAGwrB,EAAiBrxB,EAAO6F,GAAGwrB,GACzC,IAIErxB,EAAOwgB,QACTxgB,EAAOwgB,OAAOe,KAAK1mB,EAAnBmF,CAA6BoxB,EAEjC,GACF,GClCF,IACEvrB,GAAI,SAAY3B,EAAQb,EAASiuB,GAC/B,IAAIzW,EAAOpgB,KACX,GAAuB,oBAAZ4I,EAAwB,OAAOwX,EAC1C,IAAIxK,EAASihB,EAAW,UAAY,OAKpC,OAJAptB,EAAO8E,MAAM,KAAK9L,SAAQ,SAAUiC,GAC7B0b,EAAK0W,gBAAgBpyB,KAAQ0b,EAAK0W,gBAAgBpyB,GAAS,IAChE0b,EAAK0W,gBAAgBpyB,GAAOkR,GAAQhN,EACtC,IACOwX,CACT,EACA2W,KAAM,SAActtB,EAAQb,EAASiuB,GACnC,IAAIzW,EAAOpgB,KACX,GAAuB,oBAAZ4I,EAAwB,OAAOwX,EAE1C,SAAS4W,IACP5W,EAAK5Z,IAAIiD,EAAQutB,GAEbA,EAAYC,uBACPD,EAAYC,eAGrB,IAAK,IAAItO,EAAO5B,UAAU9oB,OAAQ4N,EAAO,IAAIzN,MAAMuqB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/Ehd,EAAKgd,GAAQ9B,UAAU8B,GAGzBjgB,EAAQjL,MAAMyiB,EAAMvU,EACtB,CAGA,OADAmrB,EAAYC,eAAiBruB,EACtBwX,EAAKhV,GAAG3B,EAAQutB,EAAaH,EACtC,EACAK,MAAO,SAAetuB,EAASiuB,GAC7B,IAAIzW,EAAOpgB,KACX,GAAuB,oBAAZ4I,EAAwB,OAAOwX,EAC1C,IAAIxK,EAASihB,EAAW,UAAY,OAMpC,OAJIzW,EAAK+W,mBAAmBlc,QAAQrS,GAAW,GAC7CwX,EAAK+W,mBAAmBvhB,GAAQhN,GAG3BwX,CACT,EACAgX,OAAQ,SAAgBxuB,GACtB,IAAIwX,EAAOpgB,KACX,IAAKogB,EAAK+W,mBAAoB,OAAO/W,EACrC,IAAIpF,EAAQoF,EAAK+W,mBAAmBlc,QAAQrS,GAM5C,OAJIoS,GAAS,GACXoF,EAAK+W,mBAAmB7L,OAAOtQ,EAAO,GAGjCoF,CACT,EACA5Z,IAAK,SAAaiD,EAAQb,GACxB,IAAIwX,EAAOpgB,KACX,OAAKogB,EAAK0W,iBACVrtB,EAAO8E,MAAM,KAAK9L,SAAQ,SAAUiC,GACX,qBAAZkE,EACTwX,EAAK0W,gBAAgBpyB,GAAS,GACrB0b,EAAK0W,gBAAgBpyB,IAC9B0b,EAAK0W,gBAAgBpyB,GAAOjC,SAAQ,SAAUisB,EAAc1T,IACtD0T,IAAiB9lB,GAAW8lB,EAAauI,gBAAkBvI,EAAauI,iBAAmBruB,IAC7FwX,EAAK0W,gBAAgBpyB,GAAO4mB,OAAOtQ,EAAO,EAE9C,GAEJ,IACOoF,GAZ2BA,CAapC,EACA0U,KAAM,WACJ,IAEIrrB,EACAhC,EACA4gB,EAJAjI,EAAOpgB,KACX,IAAKogB,EAAK0W,gBAAiB,OAAO1W,EAKlC,IAAK,IAAI6I,EAAQlC,UAAU9oB,OAAQ4N,EAAO,IAAIzN,MAAM6qB,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFrd,EAAKqd,GAASnC,UAAUmC,GAGH,kBAAZrd,EAAK,IAAmBzN,MAAMC,QAAQwN,EAAK,KACpDpC,EAASoC,EAAK,GACdpE,EAAOoE,EAAKH,MAAM,EAAGG,EAAK5N,QAC1BoqB,EAAUjI,IAEV3W,EAASoC,EAAK,GAAGpC,OACjBhC,EAAOoE,EAAK,GAAGpE,KACf4gB,EAAUxc,EAAK,GAAGwc,SAAWjI,GAG/B3Y,EAAKijB,QAAQrC,GACb,IAAIgP,EAAcj5B,MAAMC,QAAQoL,GAAUA,EAASA,EAAO8E,MAAM,KAchE,OAbA8oB,EAAY50B,SAAQ,SAAUiC,GACxB0b,EAAK+W,oBAAsB/W,EAAK+W,mBAAmBl5B,QACrDmiB,EAAK+W,mBAAmB10B,SAAQ,SAAUisB,GACxCA,EAAa/wB,MAAM0qB,EAAS,CAAC3jB,GAAOkK,OAAOnH,GAC7C,IAGE2Y,EAAK0W,iBAAmB1W,EAAK0W,gBAAgBpyB,IAC/C0b,EAAK0W,gBAAgBpyB,GAAOjC,SAAQ,SAAUisB,GAC5CA,EAAa/wB,MAAM0qB,EAAS5gB,EAC9B,GAEJ,IACO2Y,CACT,GC3Ga,SAASkX,KACtB,IACI1b,EACAkX,EAFAiB,EAAS/zB,KAGTi2B,EAAMlC,EAAOkC,IAGfra,EADiC,qBAAxBmY,EAAOxxB,OAAOqZ,OAAiD,OAAxBmY,EAAOxxB,OAAOqZ,MACtDmY,EAAOxxB,OAAOqZ,MAEdqa,EAAI,GAAGxa,YAIfqX,EADkC,qBAAzBiB,EAAOxxB,OAAOuwB,QAAmD,OAAzBiB,EAAOxxB,OAAOuwB,OACtDiB,EAAOxxB,OAAOuwB,OAEdmD,EAAI,GAAG/hB,aAGJ,IAAV0H,GAAemY,EAAOwD,gBAA6B,IAAXzE,GAAgBiB,EAAOyD,eAKnE5b,EAAQA,EAAQ6b,SAASxB,EAAIpJ,IAAI,iBAAmB,EAAG,IAAM4K,SAASxB,EAAIpJ,IAAI,kBAAoB,EAAG,IACrGiG,EAASA,EAAS2E,SAASxB,EAAIpJ,IAAI,gBAAkB,EAAG,IAAM4K,SAASxB,EAAIpJ,IAAI,mBAAqB,EAAG,IACnG3f,OAAOwqB,MAAM9b,KAAQA,EAAQ,GAC7B1O,OAAOwqB,MAAM5E,KAASA,EAAS,GACnC,GAAOiB,EAAQ,CACbnY,MAAOA,EACPkX,OAAQA,EACRlrB,KAAMmsB,EAAOwD,eAAiB3b,EAAQkX,IAE1C,CChCe,SAAS6E,KACtB,IAAI5D,EAAS/zB,KAEb,SAAS43B,EAAkBpjB,GACzB,OAAIuf,EAAOwD,eACF/iB,EAIF,CACL,MAAS,SACT,aAAc,cACd,iBAAkB,eAClB,cAAe,aACf,eAAgB,gBAChB,eAAgB,cAChB,gBAAiB,iBACjB,YAAe,gBACfA,EACJ,CAEA,SAASqjB,EAA0B3H,EAAM4H,GACvC,OAAOzf,WAAW6X,EAAKtX,iBAAiBgf,EAAkBE,KAAW,EACvE,CAEA,IAAIv1B,EAASwxB,EAAOxxB,OAChB4zB,EAAapC,EAAOoC,WACpB4B,EAAahE,EAAOnsB,KACpBowB,EAAMjE,EAAOkE,aACbC,EAAWnE,EAAOmE,SAClBC,EAAYpE,EAAOqE,SAAW71B,EAAO61B,QAAQC,QAC7CC,EAAuBH,EAAYpE,EAAOqE,QAAQG,OAAOt6B,OAAS81B,EAAOwE,OAAOt6B,OAChFs6B,EAASpC,EAAWpnB,SAAS,IAAMglB,EAAOxxB,OAAOi2B,YACjDC,EAAeN,EAAYpE,EAAOqE,QAAQG,OAAOt6B,OAASs6B,EAAOt6B,OACjEy6B,EAAW,GACXC,EAAa,GACbC,EAAkB,GAClBC,EAAet2B,EAAOu2B,mBAEE,oBAAjBD,IACTA,EAAet2B,EAAOu2B,mBAAmBh6B,KAAKi1B,IAGhD,IAAIgF,EAAcx2B,EAAOy2B,kBAEE,oBAAhBD,IACTA,EAAcx2B,EAAOy2B,kBAAkBl6B,KAAKi1B,IAG9C,IAAIkF,EAAyBlF,EAAO2E,SAASz6B,OACzCi7B,EAA2BnF,EAAO4E,WAAW16B,OAC7Ck7B,EAAe52B,EAAO42B,aACtBC,GAAiBP,EACjBQ,EAAgB,EAChBre,EAAQ,EAEZ,GAA0B,qBAAf+c,EAAX,CAmBA,IAAIuB,EAeAC,EA9BwB,kBAAjBJ,GAA6BA,EAAale,QAAQ,MAAQ,IACnEke,EAAe9gB,WAAW8gB,EAAax1B,QAAQ,IAAK,KAAO,IAAMo0B,GAGnEhE,EAAOyF,aAAeL,EAElBnB,EAAKO,EAAO1L,IAAI,CAClB4M,WAAY,GACZC,aAAc,GACdC,UAAW,KACLpB,EAAO1L,IAAI,CACjB+M,YAAa,GACbF,aAAc,GACdC,UAAW,KAITp3B,EAAOs3B,gBAAkB,IAEzBP,EADEr0B,KAAK6S,MAAM2gB,EAAel2B,EAAOs3B,mBAAqBpB,EAAe1E,EAAOxxB,OAAOs3B,gBAC5DpB,EAEAxzB,KAAK60B,KAAKrB,EAAel2B,EAAOs3B,iBAAmBt3B,EAAOs3B,gBAGxD,SAAzBt3B,EAAOw3B,eAA2D,QAA/Bx3B,EAAOy3B,sBAC5CV,EAAyBr0B,KAAKiW,IAAIoe,EAAwB/2B,EAAOw3B,cAAgBx3B,EAAOs3B,mBAU5F,IAJA,IAiIII,EASEC,EAMAC,EAhJFN,EAAkBt3B,EAAOs3B,gBACzBO,EAAed,EAAyBO,EACxCQ,EAAiBp1B,KAAK6S,MAAM2gB,EAAel2B,EAAOs3B,iBAE7C37B,EAAI,EAAGA,EAAIu6B,EAAcv6B,GAAK,EAAG,CACxCq7B,EAAY,EACZ,IAAIe,EAAQ/B,EAAOjL,GAAGpvB,GAEtB,GAAIqE,EAAOs3B,gBAAkB,EAAG,CAE9B,IAAIU,OAAqB,EACrBC,OAAS,EACTC,OAAM,EAEV,GAAmC,QAA/Bl4B,EAAOy3B,qBAAiCz3B,EAAOm4B,eAAiB,EAAG,CACrE,IAAIC,EAAa11B,KAAK6S,MAAM5Z,GAAKqE,EAAOm4B,eAAiBn4B,EAAOs3B,kBAC5De,EAAoB18B,EAAIqE,EAAOs3B,gBAAkBt3B,EAAOm4B,eAAiBC,EACzEE,EAAgC,IAAfF,EAAmBp4B,EAAOm4B,eAAiBz1B,KAAKkW,IAAIlW,KAAK60B,MAAMrB,EAAekC,EAAad,EAAkBt3B,EAAOm4B,gBAAkBb,GAAkBt3B,EAAOm4B,gBACpLD,EAAMx1B,KAAK6S,MAAM8iB,EAAoBC,GACrCL,EAASI,EAAoBH,EAAMI,EAAiBF,EAAap4B,EAAOm4B,eACxEH,EAAqBC,EAASC,EAAMnB,EAAyBO,EAC7DS,EAAMzN,IAAI,CACR,4BAA6B0N,EAC7B,yBAA0BA,EAC1B,iBAAkBA,EAClB,gBAAiBA,EACjBO,MAAOP,GAEX,KAA0C,WAA/Bh4B,EAAOy3B,qBAChBQ,EAASv1B,KAAK6S,MAAM5Z,EAAI27B,GACxBY,EAAMv8B,EAAIs8B,EAASX,GAEfW,EAASH,GAAkBG,IAAWH,GAAkBI,IAAQZ,EAAkB,KACpFY,GAAO,EAEHA,GAAOZ,IACTY,EAAM,EACND,GAAU,MAIdC,EAAMx1B,KAAK6S,MAAM5Z,EAAIk8B,GACrBI,EAASt8B,EAAIu8B,EAAML,GAGrBE,EAAMzN,IAAI+K,EAAkB,cAAuB,IAAR6C,EAAYl4B,EAAO42B,cAAgB52B,EAAO42B,aAAe,KAAO,GAC7G,CAEA,GAA6B,SAAzBmB,EAAMzN,IAAI,WAAd,CAEA,GAA6B,SAAzBtqB,EAAOw3B,cAA0B,CACnC,IAAIgB,EAAc5iB,iBAAiBmiB,EAAM,IACrCU,EAAmBV,EAAM,GAAGhnB,MAAMwW,UAClCmR,EAAyBX,EAAM,GAAGhnB,MAAMoc,gBAU5C,GARIsL,IACFV,EAAM,GAAGhnB,MAAMwW,UAAY,QAGzBmR,IACFX,EAAM,GAAGhnB,MAAMoc,gBAAkB,QAG/BntB,EAAO24B,aACT3B,EAAYxF,EAAOwD,eAAiB+C,EAAM1L,YAAW,GAAQ0L,EAAMzL,aAAY,OAC1E,CAEL,IAAIjT,EAAQic,EAA0BkD,EAAa,SAC/CrmB,EAAcmjB,EAA0BkD,EAAa,gBACrDpmB,EAAekjB,EAA0BkD,EAAa,iBACtDtB,EAAa5B,EAA0BkD,EAAa,eACpDnB,EAAc/B,EAA0BkD,EAAa,gBACrDI,EAAYJ,EAAYniB,iBAAiB,cAE7C,GAAIuiB,GAA2B,eAAdA,EACf5B,EAAY3d,EAAQ6d,EAAaG,MAC5B,CACL,IAAIwB,EAAUd,EAAM,GAChB7e,EAAc2f,EAAQ3f,YACtBwQ,EAAcmP,EAAQnP,YAC1BsN,EAAY3d,EAAQlH,EAAcC,EAAe8kB,EAAaG,GAAe3N,EAAcxQ,EAC7F,CACF,CAEIuf,IACFV,EAAM,GAAGhnB,MAAMwW,UAAYkR,GAGzBC,IACFX,EAAM,GAAGhnB,MAAMoc,gBAAkBuL,GAG/B14B,EAAO24B,eAAc3B,EAAYt0B,KAAK6S,MAAMyhB,GAClD,MACEA,GAAaxB,GAAcx1B,EAAOw3B,cAAgB,GAAKZ,GAAgB52B,EAAOw3B,cAC1Ex3B,EAAO24B,eAAc3B,EAAYt0B,KAAK6S,MAAMyhB,IAE5ChB,EAAOr6B,KACTq6B,EAAOr6B,GAAGoV,MAAMskB,EAAkB,UAAY2B,EAAY,MAI1DhB,EAAOr6B,KACTq6B,EAAOr6B,GAAGm9B,gBAAkB9B,GAG9BX,EAAgB12B,KAAKq3B,GAEjBh3B,EAAO+4B,gBACTlC,EAAgBA,EAAgBG,EAAY,EAAIF,EAAgB,EAAIF,EAC9C,IAAlBE,GAA6B,IAANn7B,IAASk7B,EAAgBA,EAAgBrB,EAAa,EAAIoB,GAC3E,IAANj7B,IAASk7B,EAAgBA,EAAgBrB,EAAa,EAAIoB,GAC1Dl0B,KAAKyW,IAAI0d,GAAiB,OAAUA,EAAgB,GACpD72B,EAAO24B,eAAc9B,EAAgBn0B,KAAK6S,MAAMshB,IAChDpe,EAAQzY,EAAOm4B,iBAAmB,GAAGhC,EAASx2B,KAAKk3B,GACvDT,EAAWz2B,KAAKk3B,KAEZ72B,EAAO24B,eAAc9B,EAAgBn0B,KAAK6S,MAAMshB,KAC/Cpe,EAAQ/V,KAAKkW,IAAI4Y,EAAOxxB,OAAOg5B,mBAAoBvgB,IAAU+Y,EAAOxxB,OAAOm4B,iBAAmB,GAAGhC,EAASx2B,KAAKk3B,GACpHT,EAAWz2B,KAAKk3B,GAChBA,EAAgBA,EAAgBG,EAAYJ,GAG9CpF,EAAOyF,aAAeD,EAAYJ,EAClCE,EAAgBE,EAChBve,GAAS,CA7EoC,CA8E/C,CAWA,GATA+Y,EAAOyF,YAAcv0B,KAAKiW,IAAI6Y,EAAOyF,YAAazB,GAAcgB,EAG5Df,GAAOE,IAA+B,UAAlB31B,EAAOi5B,QAAwC,cAAlBj5B,EAAOi5B,SAC1DrF,EAAWtJ,IAAI,CACbjR,MAAOmY,EAAOyF,YAAcj3B,EAAO42B,aAAe,OAIlD52B,EAAOk5B,eAGTtF,EAAWtJ,KAAKqN,EAAkB,CAAC,EAAGA,EAAgBtC,EAAkB,UAAY7D,EAAOyF,YAAcj3B,EAAO42B,aAAe,KAAMe,IAGvI,GAAI33B,EAAOs3B,gBAAkB,EAO3B,GAJA9F,EAAOyF,aAAeD,EAAYh3B,EAAO42B,cAAgBG,EACzDvF,EAAOyF,YAAcv0B,KAAK60B,KAAK/F,EAAOyF,YAAcj3B,EAAOs3B,iBAAmBt3B,EAAO42B,aACrFhD,EAAWtJ,KAAKsN,EAAmB,CAAC,EAAGA,EAAiBvC,EAAkB,UAAY7D,EAAOyF,YAAcj3B,EAAO42B,aAAe,KAAMgB,IAEnI53B,EAAO+4B,eAAgB,CACzBrB,EAAgB,GAEhB,IAAK,IAAIyB,EAAK,EAAGA,EAAKhD,EAASz6B,OAAQy9B,GAAM,EAAG,CAC9C,IAAIC,EAAiBjD,EAASgD,GAC1Bn5B,EAAO24B,eAAcS,EAAiB12B,KAAK6S,MAAM6jB,IACjDjD,EAASgD,GAAM3H,EAAOyF,YAAcd,EAAS,IAAIuB,EAAc/3B,KAAKy5B,EAC1E,CAEAjD,EAAWuB,CACb,CAIF,IAAK13B,EAAO+4B,eAAgB,CAC1BrB,EAAgB,GAEhB,IAAK,IAAI2B,EAAM,EAAGA,EAAMlD,EAASz6B,OAAQ29B,GAAO,EAAG,CACjD,IAAIC,GAAkBnD,EAASkD,GAC3Br5B,EAAO24B,eAAcW,GAAkB52B,KAAK6S,MAAM+jB,KAElDnD,EAASkD,IAAQ7H,EAAOyF,YAAczB,GACxCkC,EAAc/3B,KAAK25B,GAEvB,CAEAnD,EAAWuB,EAEPh1B,KAAK6S,MAAMic,EAAOyF,YAAczB,GAAc9yB,KAAK6S,MAAM4gB,EAASA,EAASz6B,OAAS,IAAM,GAC5Fy6B,EAASx2B,KAAK6xB,EAAOyF,YAAczB,EAEvC,CAIA,GAFwB,IAApBW,EAASz6B,SAAcy6B,EAAW,CAAC,IAEX,IAAxBn2B,EAAO42B,aAAoB,CAC7B,IAAI2C,GAEA/8B,GAAMg1B,EAAOwD,gBAAkBS,EAAM,aAAeJ,EAAkB,eAC1EW,EAAOvqB,QAAO,SAAU+tB,EAAGC,GACzB,OAAKz5B,EAAO05B,SAERD,IAAezD,EAAOt6B,OAAS,CAKrC,IAAG4uB,KAAKiP,GAAqB,CAAC,EAAGA,GAAmB/8B,IAAOo6B,EAAe,KAAM2C,IAClF,CAEA,GAAIv5B,EAAO+4B,gBAAkB/4B,EAAO25B,qBAAsB,CACxD,IAAIC,GAAgB,EACpBvD,EAAgBn2B,SAAQ,SAAU25B,GAChCD,IAAiBC,GAAkB75B,EAAO42B,aAAe52B,EAAO42B,aAAe,EACjF,IACAgD,IAAiB55B,EAAO42B,aACxB,IAAIkD,GAAUF,GAAgBpE,EAC9BW,EAAWA,EAASn0B,KAAI,SAAU+3B,GAChC,OAAIA,EAAO,GAAWzD,EAClByD,EAAOD,GAAgBA,GAAUtD,EAC9BuD,CACT,GACF,CAEA,GAAI/5B,EAAOg6B,yBAA0B,CACnC,IAAIC,GAAiB,EAMrB,GALA5D,EAAgBn2B,SAAQ,SAAU25B,GAChCI,IAAkBJ,GAAkB75B,EAAO42B,aAAe52B,EAAO42B,aAAe,EAClF,IACAqD,IAAkBj6B,EAAO42B,aAErBqD,GAAiBzE,EAAY,CAC/B,IAAI0E,IAAmB1E,EAAayE,IAAkB,EACtD9D,EAASj2B,SAAQ,SAAU65B,EAAMI,GAC/BhE,EAASgE,GAAaJ,EAAOG,EAC/B,IACA9D,EAAWl2B,SAAQ,SAAU65B,EAAMI,GACjC/D,EAAW+D,GAAaJ,EAAOG,EACjC,GACF,CACF,CAEA,GAAO1I,EAAQ,CACbwE,OAAQA,EACRG,SAAUA,EACVC,WAAYA,EACZC,gBAAiBA,IAGfH,IAAiBH,GACnBvE,EAAOe,KAAK,sBAGV4D,EAASz6B,SAAWg7B,IAClBlF,EAAOxxB,OAAOo6B,eAAe5I,EAAO6I,gBACxC7I,EAAOe,KAAK,yBAGV6D,EAAW16B,SAAWi7B,GACxBnF,EAAOe,KAAK,2BAGVvyB,EAAOs6B,qBAAuBt6B,EAAOu6B,wBACvC/I,EAAOgJ,oBA9RT,CAgSF,CC3Ve,SAASC,GAAiBC,GACvC,IAII/+B,EAJA61B,EAAS/zB,KACTk9B,EAAe,GACf/E,EAAYpE,EAAOqE,SAAWrE,EAAOxxB,OAAO61B,QAAQC,QACpDhE,EAAY,EAGK,kBAAV4I,EACTlJ,EAAOoJ,cAAcF,IACF,IAAVA,GACTlJ,EAAOoJ,cAAcpJ,EAAOxxB,OAAO06B,OAGrC,IAAIG,EAAkB,SAAyBpiB,GAC7C,OAAImd,EACKpE,EAAOwE,OAAOvqB,QAAO,SAAU2B,GACpC,OAAO8nB,SAAS9nB,EAAGvB,aAAa,2BAA4B,MAAQ4M,CACtE,IAAG,GAGE+Y,EAAOwE,OAAOjL,GAAGtS,GAAO,EACjC,EAGA,GAAoC,SAAhC+Y,EAAOxxB,OAAOw3B,eAA4BhG,EAAOxxB,OAAOw3B,cAAgB,EAC1E,GAAIhG,EAAOxxB,OAAO+4B,eAChBvH,EAAOsJ,cAAcxoB,MAAK,SAAUylB,GAClC4C,EAAah7B,KAAKo4B,EACpB,SAEA,IAAKp8B,EAAI,EAAGA,EAAI+G,KAAK60B,KAAK/F,EAAOxxB,OAAOw3B,eAAgB77B,GAAK,EAAG,CAC9D,IAAI8c,EAAQ+Y,EAAOuJ,YAAcp/B,EACjC,GAAI8c,EAAQ+Y,EAAOwE,OAAOt6B,SAAWk6B,EAAW,MAChD+E,EAAah7B,KAAKk7B,EAAgBpiB,GACpC,MAGFkiB,EAAah7B,KAAKk7B,EAAgBrJ,EAAOuJ,cAI3C,IAAKp/B,EAAI,EAAGA,EAAIg/B,EAAaj/B,OAAQC,GAAK,EACxC,GAA+B,qBAApBg/B,EAAah/B,GAAoB,CAC1C,IAAI40B,EAASoK,EAAah/B,GAAGub,aAC7B4a,EAAYvB,EAASuB,EAAYvB,EAASuB,CAC5C,CAIEA,GAAWN,EAAOoC,WAAWtJ,IAAI,SAAUwH,EAAY,KAC7D,CClDe,SAAS0I,KAItB,IAHA,IAAIhJ,EAAS/zB,KACTu4B,EAASxE,EAAOwE,OAEXr6B,EAAI,EAAGA,EAAIq6B,EAAOt6B,OAAQC,GAAK,EACtCq6B,EAAOr6B,GAAGq/B,kBAAoBxJ,EAAOwD,eAAiBgB,EAAOr6B,GAAGs/B,WAAajF,EAAOr6B,GAAGu/B,SAE3F,CCNe,SAASC,GAAqBC,QACzB,IAAdA,IACFA,EAAY39B,MAAQA,KAAK29B,WAAa,GAGxC,IAAI5J,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAChBg2B,EAASxE,EAAOwE,OAChBP,EAAMjE,EAAOkE,aACjB,GAAsB,IAAlBM,EAAOt6B,OAAX,CAC2C,qBAAhCs6B,EAAO,GAAGgF,mBAAmCxJ,EAAOgJ,qBAC/D,IAAIa,GAAgBD,EAChB3F,IAAK4F,EAAeD,GAExBpF,EAAOvP,YAAYzmB,EAAOs7B,mBAC1B9J,EAAO+J,qBAAuB,GAC9B/J,EAAOsJ,cAAgB,GAEvB,IAAK,IAAIn/B,EAAI,EAAGA,EAAIq6B,EAAOt6B,OAAQC,GAAK,EAAG,CACzC,IAAIo8B,EAAQ/B,EAAOr6B,GACf6/B,GAAiBH,GAAgBr7B,EAAO+4B,eAAiBvH,EAAOiK,eAAiB,GAAK1D,EAAMiD,oBAAsBjD,EAAMe,gBAAkB94B,EAAO42B,cAErJ,GAAI52B,EAAOu6B,uBAAyBv6B,EAAO+4B,gBAAkB/4B,EAAO07B,WAAY,CAC9E,IAAIC,IAAgBN,EAAetD,EAAMiD,mBACrCY,EAAaD,EAAcnK,EAAO6E,gBAAgB16B,GAClD2R,EAAYquB,GAAe,GAAKA,EAAcnK,EAAOnsB,KAAO,GAAKu2B,EAAa,GAAKA,GAAcpK,EAAOnsB,MAAQs2B,GAAe,GAAKC,GAAcpK,EAAOnsB,KAEzJiI,IACFkkB,EAAOsJ,cAAcn7B,KAAKo4B,GAC1BvG,EAAO+J,qBAAqB57B,KAAKhE,GACjCq6B,EAAOjL,GAAGpvB,GAAGwqB,SAASnmB,EAAOs7B,mBAEjC,CAEAvD,EAAM8D,SAAWpG,GAAO+F,EAAgBA,CAC1C,CAEAhK,EAAOsJ,cAAgB,GAAEtJ,EAAOsJ,cA5BD,CA6BjC,CCtCe,SAASgB,GAAeV,GACrC,IAAI5J,EAAS/zB,KAEb,GAAyB,qBAAd29B,EAA2B,CACpC,IAAIW,EAAavK,EAAOkE,cAAgB,EAAI,EAE5C0F,EAAY5J,GAAUA,EAAO4J,WAAa5J,EAAO4J,UAAYW,GAAc,CAC7E,CAEA,IAAI/7B,EAASwxB,EAAOxxB,OAChBg8B,EAAiBxK,EAAOyK,eAAiBzK,EAAOiK,eAChDI,EAAWrK,EAAOqK,SAClBK,EAAc1K,EAAO0K,YACrBC,EAAQ3K,EAAO2K,MACfC,EAAeF,EACfG,EAASF,EAEU,IAAnBH,GACFH,EAAW,EACXK,GAAc,EACdC,GAAQ,IAERN,GAAYT,EAAY5J,EAAOiK,gBAAkBO,EACjDE,EAAcL,GAAY,EAC1BM,EAAQN,GAAY,GAGtB,GAAOrK,EAAQ,CACbqK,SAAUA,EACVK,YAAaA,EACbC,MAAOA,KAELn8B,EAAOs6B,qBAAuBt6B,EAAOu6B,uBAAyBv6B,EAAO+4B,gBAAkB/4B,EAAO07B,aAAYlK,EAAO2J,qBAAqBC,GAEtIc,IAAgBE,GAClB5K,EAAOe,KAAK,yBAGV4J,IAAUE,GACZ7K,EAAOe,KAAK,oBAGV6J,IAAiBF,GAAeG,IAAWF,IAC7C3K,EAAOe,KAAK,YAGdf,EAAOe,KAAK,WAAYsJ,EAC1B,CChDe,SAASS,KACtB,IAQIC,EARA/K,EAAS/zB,KACTu4B,EAASxE,EAAOwE,OAChBh2B,EAASwxB,EAAOxxB,OAChB4zB,EAAapC,EAAOoC,WACpBmH,EAAcvJ,EAAOuJ,YACrByB,EAAYhL,EAAOgL,UACnB5G,EAAYpE,EAAOqE,SAAW71B,EAAO61B,QAAQC,QACjDE,EAAOvP,YAAYzmB,EAAOy8B,iBAAmB,IAAMz8B,EAAO08B,eAAiB,IAAM18B,EAAO28B,eAAiB,IAAM38B,EAAO48B,0BAA4B,IAAM58B,EAAO68B,wBAA0B,IAAM78B,EAAO88B,yBAIpMP,EADE3G,EACYpE,EAAOoC,WAAWtsB,KAAK,IAAMtH,EAAOi2B,WAAa,6BAAgC8E,EAAc,MAE/F/E,EAAOjL,GAAGgQ,GAI1BwB,EAAYpW,SAASnmB,EAAOy8B,kBAExBz8B,EAAO+8B,OAELR,EAAYvV,SAAShnB,EAAOg9B,qBAC9BpJ,EAAWpnB,SAAS,IAAMxM,EAAOi2B,WAAa,SAAWj2B,EAAOg9B,oBAAsB,8BAAiCR,EAAY,MAAOrW,SAASnmB,EAAO48B,2BAE1JhJ,EAAWpnB,SAAS,IAAMxM,EAAOi2B,WAAa,IAAMj2B,EAAOg9B,oBAAsB,6BAAgCR,EAAY,MAAOrW,SAASnmB,EAAO48B,4BAKxJ,IAAIK,EAAYV,EAAYhR,QAAQ,IAAMvrB,EAAOi2B,YAAYlL,GAAG,GAAG5E,SAASnmB,EAAO08B,gBAE/E18B,EAAO+8B,MAA6B,IAArBE,EAAUvhC,SAC3BuhC,EAAYjH,EAAOjL,GAAG,GACtBkS,EAAU9W,SAASnmB,EAAO08B,iBAI5B,IAAIQ,EAAYX,EAAY7Q,QAAQ,IAAM1rB,EAAOi2B,YAAYlL,GAAG,GAAG5E,SAASnmB,EAAO28B,gBAE/E38B,EAAO+8B,MAA6B,IAArBG,EAAUxhC,SAC3BwhC,EAAYlH,EAAOjL,IAAI,GACvBmS,EAAU/W,SAASnmB,EAAO28B,iBAGxB38B,EAAO+8B,OAELE,EAAUjW,SAAShnB,EAAOg9B,qBAC5BpJ,EAAWpnB,SAAS,IAAMxM,EAAOi2B,WAAa,SAAWj2B,EAAOg9B,oBAAsB,8BAAiCC,EAAU9V,KAAK,2BAA6B,MAAOhB,SAASnmB,EAAO68B,yBAE1LjJ,EAAWpnB,SAAS,IAAMxM,EAAOi2B,WAAa,IAAMj2B,EAAOg9B,oBAAsB,6BAAgCC,EAAU9V,KAAK,2BAA6B,MAAOhB,SAASnmB,EAAO68B,yBAGlLK,EAAUlW,SAAShnB,EAAOg9B,qBAC5BpJ,EAAWpnB,SAAS,IAAMxM,EAAOi2B,WAAa,SAAWj2B,EAAOg9B,oBAAsB,8BAAiCE,EAAU/V,KAAK,2BAA6B,MAAOhB,SAASnmB,EAAO88B,yBAE1LlJ,EAAWpnB,SAAS,IAAMxM,EAAOi2B,WAAa,IAAMj2B,EAAOg9B,oBAAsB,6BAAgCE,EAAU/V,KAAK,2BAA6B,MAAOhB,SAASnmB,EAAO88B,0BAIxLtL,EAAO2L,mBACT,CC5De,SAASC,GAAkBC,GACxC,IASIlD,EATA3I,EAAS/zB,KACT29B,EAAY5J,EAAOkE,aAAelE,EAAO4J,WAAa5J,EAAO4J,UAC7DhF,EAAa5E,EAAO4E,WACpBD,EAAW3E,EAAO2E,SAClBn2B,EAASwxB,EAAOxxB,OAChBs9B,EAAgB9L,EAAOuJ,YACvBwC,EAAoB/L,EAAOgL,UAC3BgB,EAAoBhM,EAAO2I,UAC3BY,EAAcsC,EAGlB,GAA2B,qBAAhBtC,EAA6B,CACtC,IAAK,IAAIp/B,EAAI,EAAGA,EAAIy6B,EAAW16B,OAAQC,GAAK,EACT,qBAAtBy6B,EAAWz6B,EAAI,GACpBy/B,GAAahF,EAAWz6B,IAAMy/B,EAAYhF,EAAWz6B,EAAI,IAAMy6B,EAAWz6B,EAAI,GAAKy6B,EAAWz6B,IAAM,EACtGo/B,EAAcp/B,EACLy/B,GAAahF,EAAWz6B,IAAMy/B,EAAYhF,EAAWz6B,EAAI,KAClEo/B,EAAcp/B,EAAI,GAEXy/B,GAAahF,EAAWz6B,KACjCo/B,EAAcp/B,GAKdqE,EAAOy9B,sBACL1C,EAAc,GAA4B,qBAAhBA,KAA6BA,EAAc,EAE7E,CAEA,GAAI5E,EAASzd,QAAQ0iB,IAAc,EACjCjB,EAAYhE,EAASzd,QAAQ0iB,OACxB,CACL,IAAIsC,EAAOh7B,KAAKkW,IAAI5Y,EAAOg5B,mBAAoB+B,GAC/CZ,EAAYuD,EAAOh7B,KAAK6S,OAAOwlB,EAAc2C,GAAQ19B,EAAOm4B,eAC9D,CAIA,GAFIgC,GAAahE,EAASz6B,SAAQy+B,EAAYhE,EAASz6B,OAAS,GAE5Dq/B,IAAgBuC,EAApB,CAUA,IAAId,EAAYtH,SAAS1D,EAAOwE,OAAOjL,GAAGgQ,GAAa5T,KAAK,4BAA8B4T,EAAa,IACvG,GAAOvJ,EAAQ,CACb2I,UAAWA,EACXqC,UAAWA,EACXc,cAAeA,EACfvC,YAAaA,IAEfvJ,EAAOe,KAAK,qBACZf,EAAOe,KAAK,mBAERgL,IAAsBf,GACxBhL,EAAOe,KAAK,oBAGVf,EAAOI,aAAeJ,EAAOxxB,OAAO29B,qBACtCnM,EAAOe,KAAK,cAlBd,MANM4H,IAAcqD,IAChBhM,EAAO2I,UAAYA,EACnB3I,EAAOe,KAAK,mBAwBlB,CCnEe,SAASqL,GAAmB7iC,GACzC,IAII0+B,EAJAjI,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAChB+3B,EAAQ,GAAEh9B,EAAE+L,QAAQ+F,QAAQ,IAAM7M,EAAOi2B,YAAY,GACrD4H,GAAa,EAGjB,GAAI9F,EACF,IAAK,IAAIp8B,EAAI,EAAGA,EAAI61B,EAAOwE,OAAOt6B,OAAQC,GAAK,EAC7C,GAAI61B,EAAOwE,OAAOr6B,KAAOo8B,EAAO,CAC9B8F,GAAa,EACbpE,EAAa99B,EACb,KACF,CAIJ,IAAIo8B,IAAS8F,EAWX,OAFArM,EAAOsM,kBAAe1oB,OACtBoc,EAAOuM,kBAAe3oB,GATtBoc,EAAOsM,aAAe/F,EAElBvG,EAAOqE,SAAWrE,EAAOxxB,OAAO61B,QAAQC,QAC1CtE,EAAOuM,aAAe7I,SAAS,GAAE6C,GAAO5Q,KAAK,2BAA4B,IAEzEqK,EAAOuM,aAAetE,EAQtBz5B,EAAOg+B,0BAA+C5oB,IAAxBoc,EAAOuM,cAA8BvM,EAAOuM,eAAiBvM,EAAOuJ,aACpGvJ,EAAOwM,qBAEX,CC1BA,UACEjJ,WAAYA,GACZK,aAAcA,GACdqF,iBAAkBA,GAClBD,mBAAoBA,GACpBW,qBAAsBA,GACtBW,eAAgBA,GAChBQ,oBAAqBA,GACrBc,kBAAmBA,GACnBQ,mBAAoBA,ICjBP,SAASK,GAAmBpR,QAC5B,IAATA,IACFA,EAAOpvB,KAAKu3B,eAAiB,IAAM,KAGrC,IAAIxD,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAChBy1B,EAAMjE,EAAOkE,aACb0F,EAAY5J,EAAO4J,UACnBxH,EAAapC,EAAOoC,WAExB,GAAI5zB,EAAOk+B,iBACT,OAAOzI,GAAO2F,EAAYA,EAG5B,GAAIp7B,EAAO05B,QACT,OAAO0B,EAGT,IAAI+C,EAAmBvR,GAAagH,EAAW,GAAI/G,GAEnD,OADI4I,IAAK0I,GAAoBA,GACtBA,GAAoB,CAC7B,CCvBe,SAASC,GAAahD,EAAWiD,GAC9C,IA8BIC,EA9BA9M,EAAS/zB,KACTg4B,EAAMjE,EAAOkE,aACb11B,EAASwxB,EAAOxxB,OAChB4zB,EAAapC,EAAOoC,WACpB2K,EAAY/M,EAAO+M,UACnB1C,EAAWrK,EAAOqK,SAClB2C,EAAI,EACJC,EAAI,EACJC,EAAI,EAEJlN,EAAOwD,eACTwJ,EAAI/I,GAAO2F,EAAYA,EAEvBqD,EAAIrD,EAGFp7B,EAAO24B,eACT6F,EAAI97B,KAAK6S,MAAMipB,GACfC,EAAI/7B,KAAK6S,MAAMkpB,IAGbz+B,EAAO05B,QACT6E,EAAU/M,EAAOwD,eAAiB,aAAe,aAAexD,EAAOwD,gBAAkBwJ,GAAKC,EACpFz+B,EAAOk+B,kBACjBtK,EAAWrM,UAAU,eAAiBiX,EAAI,OAASC,EAAI,OAASC,EAAI,OAGtElN,EAAOmN,kBAAoBnN,EAAO4J,UAClC5J,EAAO4J,UAAY5J,EAAOwD,eAAiBwJ,EAAIC,EAG/C,IAAIzC,EAAiBxK,EAAOyK,eAAiBzK,EAAOiK,eAGlD6C,EADqB,IAAnBtC,EACY,GAECZ,EAAY5J,EAAOiK,gBAAkBO,EAGlDsC,IAAgBzC,GAClBrK,EAAOsK,eAAeV,GAGxB5J,EAAOe,KAAK,eAAgBf,EAAO4J,UAAWiD,EAChD,CC7Ce,SAAS5C,KACtB,OAAQh+B,KAAK04B,SAAS,EACxB,CCFe,SAAS8F,KACtB,OAAQx+B,KAAK04B,SAAS14B,KAAK04B,SAASz6B,OAAS,EAC/C,CCFe,SAASkjC,GAAYxD,EAAWV,EAAOmE,EAAcC,EAAiBC,QACjE,IAAd3D,IACFA,EAAY,QAGA,IAAVV,IACFA,EAAQj9B,KAAKuC,OAAO06B,YAGD,IAAjBmE,IACFA,GAAe,QAGO,IAApBC,IACFA,GAAkB,GAGpB,IAAItN,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAChBu+B,EAAY/M,EAAO+M,UAEvB,GAAI/M,EAAOwN,WAAah/B,EAAOi/B,+BAC7B,OAAO,EAGT,IAEIC,EAFAzD,EAAejK,EAAOiK,eACtBQ,EAAezK,EAAOyK,eAM1B,GAJiDiD,EAA7CJ,GAAmB1D,EAAYK,EAA6BA,EAAsBqD,GAAmB1D,EAAYa,EAA6BA,EAAiCb,EAEnL5J,EAAOsK,eAAeoD,GAElBl/B,EAAO05B,QAAS,CAClB,IAOQyF,EAPJC,EAAM5N,EAAOwD,eAEjB,GAAc,IAAV0F,EACF6D,EAAUa,EAAM,aAAe,cAAgBF,OAG/C,GAAIX,EAAUc,SAGZd,EAAUc,UAAUF,EAAsB,CAAC,EAAGA,EAAoBC,EAAM,OAAS,QAAUF,EAAcC,EAAoBG,SAAW,SAAUH,SAElJZ,EAAUa,EAAM,aAAe,cAAgBF,EAInD,OAAO,CACT,CA0CA,OAxCc,IAAVxE,GACFlJ,EAAOoJ,cAAc,GACrBpJ,EAAO4M,aAAac,GAEhBL,IACFrN,EAAOe,KAAK,wBAAyBmI,EAAOqE,GAC5CvN,EAAOe,KAAK,oBAGdf,EAAOoJ,cAAcF,GACrBlJ,EAAO4M,aAAac,GAEhBL,IACFrN,EAAOe,KAAK,wBAAyBmI,EAAOqE,GAC5CvN,EAAOe,KAAK,oBAGTf,EAAOwN,YACVxN,EAAOwN,WAAY,EAEdxN,EAAO+N,oCACV/N,EAAO+N,kCAAoC,SAAuBxkC,GAC3Dy2B,IAAUA,EAAOG,WAClB52B,EAAE+L,SAAWrJ,OACjB+zB,EAAOoC,WAAW,GAAGvrB,oBAAoB,gBAAiBmpB,EAAO+N,mCACjE/N,EAAOoC,WAAW,GAAGvrB,oBAAoB,sBAAuBmpB,EAAO+N,mCACvE/N,EAAO+N,kCAAoC,YACpC/N,EAAO+N,kCAEVV,GACFrN,EAAOe,KAAK,iBAEhB,GAGFf,EAAOoC,WAAW,GAAGzrB,iBAAiB,gBAAiBqpB,EAAO+N,mCAC9D/N,EAAOoC,WAAW,GAAGzrB,iBAAiB,sBAAuBqpB,EAAO+N,sCAIjE,CACT,CCvFA,UACE3S,aAAc,GACdwR,aAAcA,GACd3C,aAAcA,GACdQ,aAAcA,GACd2C,YAAaA,ICVA,SAAShE,GAAcnT,EAAU4W,GAC9C,IAAI7M,EAAS/zB,KAER+zB,EAAOxxB,OAAO05B,SACjBlI,EAAOoC,WAAWpM,WAAWC,GAG/B+J,EAAOe,KAAK,gBAAiB9K,EAAU4W,EACzC,CCRe,SAASmB,GAAgBX,EAAcY,QAC/B,IAAjBZ,IACFA,GAAe,GAGjB,IAAIrN,EAAS/zB,KACTs9B,EAAcvJ,EAAOuJ,YACrB/6B,EAASwxB,EAAOxxB,OAChBs9B,EAAgB9L,EAAO8L,cAC3B,IAAIt9B,EAAO05B,QAAX,CAEI15B,EAAO07B,YACTlK,EAAOiJ,mBAGT,IAAIljB,EAAMkoB,EAQV,GANKloB,IAC8BA,EAA7BwjB,EAAcuC,EAAqB,OAAgBvC,EAAcuC,EAAqB,OAAkB,SAG9G9L,EAAOe,KAAK,mBAERsM,GAAgB9D,IAAgBuC,EAAe,CACjD,GAAY,UAAR/lB,EAEF,YADAia,EAAOe,KAAK,6BAIdf,EAAOe,KAAK,8BAEA,SAARhb,EACFia,EAAOe,KAAK,4BAEZf,EAAOe,KAAK,2BAEhB,CA3B0B,CA4B5B,CCrCe,SAAS,GAAcsM,EAAcY,QAC7B,IAAjBZ,IACFA,GAAe,GAGjB,IAAIrN,EAAS/zB,KACTs9B,EAAcvJ,EAAOuJ,YACrBuC,EAAgB9L,EAAO8L,cACvBt9B,EAASwxB,EAAOxxB,OAEpB,GADAwxB,EAAOwN,WAAY,GACfh/B,EAAO05B,QAAX,CACAlI,EAAOoJ,cAAc,GACrB,IAAIrjB,EAAMkoB,EAQV,GANKloB,IAC8BA,EAA7BwjB,EAAcuC,EAAqB,OAAgBvC,EAAcuC,EAAqB,OAAkB,SAG9G9L,EAAOe,KAAK,iBAERsM,GAAgB9D,IAAgBuC,EAAe,CACjD,GAAY,UAAR/lB,EAEF,YADAia,EAAOe,KAAK,2BAIdf,EAAOe,KAAK,4BAEA,SAARhb,EACFia,EAAOe,KAAK,0BAEZf,EAAOe,KAAK,yBAEhB,CAvB0B,CAwB5B,CC/BA,UACEqI,cAAeA,GACf4E,gBAAiBA,GACjBpW,cAAe,ICNF,SAASsW,GAAQjnB,EAAOiiB,EAAOmE,EAAcE,EAAUY,GAapE,QAZc,IAAVlnB,IACFA,EAAQ,QAGI,IAAViiB,IACFA,EAAQj9B,KAAKuC,OAAO06B,YAGD,IAAjBmE,IACFA,GAAe,GAGI,kBAAVpmB,GAAuC,kBAAVA,EACtC,MAAM,IAAI1a,MAAM,kFAAoF0a,EAAQ,YAG9G,GAAqB,kBAAVA,EAAoB,CAK7B,IAAImnB,EAAgB1K,SAASzc,EAAO,IAOhConB,EAAgBC,SAASF,GAE7B,IAAKC,EACH,MAAM,IAAI9hC,MAAM,sEAAwE0a,EAAQ,YAKlGA,EAAQmnB,CACV,CAEA,IAAIpO,EAAS/zB,KACTg8B,EAAahhB,EACbghB,EAAa,IAAGA,EAAa,GACjC,IAAIz5B,EAASwxB,EAAOxxB,OAChBm2B,EAAW3E,EAAO2E,SAClBC,EAAa5E,EAAO4E,WACpBkH,EAAgB9L,EAAO8L,cACvBvC,EAAcvJ,EAAOuJ,YACrBtF,EAAMjE,EAAOkE,aACb6I,EAAY/M,EAAO+M,UACnBzI,EAAUtE,EAAOsE,QAErB,GAAItE,EAAOwN,WAAah/B,EAAOi/B,iCAAmCnJ,IAAYiJ,IAAaY,EACzF,OAAO,EAGT,IAAIjC,EAAOh7B,KAAKkW,IAAI4Y,EAAOxxB,OAAOg5B,mBAAoBS,GAClDU,EAAYuD,EAAOh7B,KAAK6S,OAAOkkB,EAAaiE,GAAQlM,EAAOxxB,OAAOm4B,gBAClEgC,GAAahE,EAASz6B,SAAQy+B,EAAYhE,EAASz6B,OAAS,IAE3Dq/B,GAAe/6B,EAAO+/B,cAAgB,MAAQzC,GAAiB,IAAMuB,GACxErN,EAAOe,KAAK,0BAGd,IAiCIkN,EAjCArE,GAAajF,EAASgE,GAI1B,GAFA3I,EAAOsK,eAAeV,GAElBp7B,EAAOy9B,oBACT,IAAK,IAAI9hC,EAAI,EAAGA,EAAIy6B,EAAW16B,OAAQC,GAAK,EAAG,CAC7C,IAAIqkC,GAAuBt9B,KAAK6S,MAAkB,IAAZ6lB,GAClC6E,EAAiBv9B,KAAK6S,MAAsB,IAAhB6gB,EAAWz6B,IACvCukC,EAAqBx9B,KAAK6S,MAA0B,IAApB6gB,EAAWz6B,EAAI,IAElB,qBAAtBy6B,EAAWz6B,EAAI,GACpBqkC,GAAuBC,GAAkBD,EAAsBE,GAAsBA,EAAqBD,GAAkB,EAC9HxG,EAAa99B,EACJqkC,GAAuBC,GAAkBD,EAAsBE,IACxEzG,EAAa99B,EAAI,GAEVqkC,GAAuBC,IAChCxG,EAAa99B,EAEjB,CAIF,GAAI61B,EAAOI,aAAe6H,IAAesB,EAAa,CACpD,IAAKvJ,EAAO2O,gBAAkB/E,EAAY5J,EAAO4J,WAAaA,EAAY5J,EAAOiK,eAC/E,OAAO,EAGT,IAAKjK,EAAO4O,gBAAkBhF,EAAY5J,EAAO4J,WAAaA,EAAY5J,EAAOyK,iBAC1ElB,GAAe,KAAOtB,EAAY,OAAO,CAElD,CAKA,GAF8BgG,EAA1BhG,EAAasB,EAAyB,OAAgBtB,EAAasB,EAAyB,OAAwB,QAEpHtF,IAAQ2F,IAAc5J,EAAO4J,YAAc3F,GAAO2F,IAAc5J,EAAO4J,UAkBzE,OAjBA5J,EAAO4L,kBAAkB3D,GAErBz5B,EAAO07B,YACTlK,EAAOiJ,mBAGTjJ,EAAO8K,sBAEe,UAAlBt8B,EAAOi5B,QACTzH,EAAO4M,aAAahD,GAGJ,UAAdqE,IACFjO,EAAOgO,gBAAgBX,EAAcY,GACrCjO,EAAOpI,cAAcyV,EAAcY,KAG9B,EAGT,GAAIz/B,EAAO05B,QAAS,CAClB,IAYQyF,EAZJC,EAAM5N,EAAOwD,eACb3zB,GAAK+5B,EAMT,GAJI3F,IACFp0B,EAAIk9B,EAAU8B,YAAc9B,EAAU7U,YAAcroB,GAGxC,IAAVq5B,EACF6D,EAAUa,EAAM,aAAe,aAAe/9B,OAG9C,GAAIk9B,EAAUc,SAGZd,EAAUc,UAAUF,EAAsB,CAAC,EAAGA,EAAoBC,EAAM,OAAS,OAAS/9B,EAAG89B,EAAoBG,SAAW,SAAUH,SAEtIZ,EAAUa,EAAM,aAAe,aAAe/9B,EAIlD,OAAO,CACT,CAsCA,OApCc,IAAVq5B,GACFlJ,EAAOoJ,cAAc,GACrBpJ,EAAO4M,aAAahD,GACpB5J,EAAO4L,kBAAkB3D,GACzBjI,EAAO8K,sBACP9K,EAAOe,KAAK,wBAAyBmI,EAAOqE,GAC5CvN,EAAOgO,gBAAgBX,EAAcY,GACrCjO,EAAOpI,cAAcyV,EAAcY,KAEnCjO,EAAOoJ,cAAcF,GACrBlJ,EAAO4M,aAAahD,GACpB5J,EAAO4L,kBAAkB3D,GACzBjI,EAAO8K,sBACP9K,EAAOe,KAAK,wBAAyBmI,EAAOqE,GAC5CvN,EAAOgO,gBAAgBX,EAAcY,GAEhCjO,EAAOwN,YACVxN,EAAOwN,WAAY,EAEdxN,EAAO8O,gCACV9O,EAAO8O,8BAAgC,SAAuBvlC,GACvDy2B,IAAUA,EAAOG,WAClB52B,EAAE+L,SAAWrJ,OACjB+zB,EAAOoC,WAAW,GAAGvrB,oBAAoB,gBAAiBmpB,EAAO8O,+BACjE9O,EAAOoC,WAAW,GAAGvrB,oBAAoB,sBAAuBmpB,EAAO8O,+BACvE9O,EAAO8O,8BAAgC,YAChC9O,EAAO8O,8BACd9O,EAAOpI,cAAcyV,EAAcY,GACrC,GAGFjO,EAAOoC,WAAW,GAAGzrB,iBAAiB,gBAAiBqpB,EAAO8O,+BAC9D9O,EAAOoC,WAAW,GAAGzrB,iBAAiB,sBAAuBqpB,EAAO8O,kCAIjE,CACT,CCtLe,SAASC,GAAY9nB,EAAOiiB,EAAOmE,EAAcE,QAChD,IAAVtmB,IACFA,EAAQ,QAGI,IAAViiB,IACFA,EAAQj9B,KAAKuC,OAAO06B,YAGD,IAAjBmE,IACFA,GAAe,GAGjB,IAAIrN,EAAS/zB,KACT+iC,EAAW/nB,EAMf,OAJI+Y,EAAOxxB,OAAO+8B,OAChByD,GAAYhP,EAAOiP,cAGdjP,EAAOkO,QAAQc,EAAU9F,EAAOmE,EAAcE,EACvD,CCpBe,SAAS2B,GAAUhG,EAAOmE,EAAcE,QACvC,IAAVrE,IACFA,EAAQj9B,KAAKuC,OAAO06B,YAGD,IAAjBmE,IACFA,GAAe,GAGjB,IAAIrN,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAChBg/B,EAAYxN,EAAOwN,UACnBlJ,EAAUtE,EAAOsE,QACrB,IAAKA,EAAS,OAAOtE,EACrB,IAAImP,EAAYnP,EAAOuJ,YAAc/6B,EAAOg5B,mBAAqB,EAAIh5B,EAAOm4B,eAE5E,GAAIn4B,EAAO+8B,KAAM,CACf,GAAIiC,GAAah/B,EAAO4gC,kBAAmB,OAAO,EAClDpP,EAAOqP,UAEPrP,EAAOsP,YAActP,EAAOoC,WAAW,GAAG5J,UAC5C,CAEA,OAAOwH,EAAOkO,QAAQlO,EAAOuJ,YAAc4F,EAAWjG,EAAOmE,EAAcE,EAC7E,CCxBe,SAASgC,GAAUrG,EAAOmE,EAAcE,QACvC,IAAVrE,IACFA,EAAQj9B,KAAKuC,OAAO06B,YAGD,IAAjBmE,IACFA,GAAe,GAGjB,IAAIrN,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAChBg/B,EAAYxN,EAAOwN,UACnB7I,EAAW3E,EAAO2E,SAClBC,EAAa5E,EAAO4E,WACpBV,EAAelE,EAAOkE,aACtBI,EAAUtE,EAAOsE,QACrB,IAAKA,EAAS,OAAOtE,EAErB,GAAIxxB,EAAO+8B,KAAM,CACf,GAAIiC,GAAah/B,EAAO4gC,kBAAmB,OAAO,EAClDpP,EAAOqP,UAEPrP,EAAOsP,YAActP,EAAOoC,WAAW,GAAG5J,UAC5C,CAEA,IAAIoR,EAAY1F,EAAelE,EAAO4J,WAAa5J,EAAO4J,UAE1D,SAAS4F,EAAUC,GACjB,OAAIA,EAAM,GAAWv+B,KAAK6S,MAAM7S,KAAKyW,IAAI8nB,IAClCv+B,KAAK6S,MAAM0rB,EACpB,CAEA,IAYIC,EAZAlB,EAAsBgB,EAAU5F,GAChC+F,EAAqBhL,EAASn0B,KAAI,SAAUi/B,GAC9C,OAAOD,EAAUC,EACnB,IACIG,EAAWjL,EAASgL,EAAmBzoB,QAAQsnB,GAAuB,GAe1E,MAbwB,qBAAboB,GAA4BphC,EAAO05B,SAC5CvD,EAASj2B,SAAQ,SAAU65B,IACpBqH,GAAYpB,GAAuBjG,IAAMqH,EAAWrH,EAC3D,IAKsB,qBAAbqH,IACTF,EAAY9K,EAAW1d,QAAQ0oB,GAC3BF,EAAY,IAAGA,EAAY1P,EAAOuJ,YAAc,IAG/CvJ,EAAOkO,QAAQwB,EAAWxG,EAAOmE,EAAcE,EACxD,CCpDe,SAASsC,GAAW3G,EAAOmE,EAAcE,QACxC,IAAVrE,IACFA,EAAQj9B,KAAKuC,OAAO06B,YAGD,IAAjBmE,IACFA,GAAe,GAGjB,IAAIrN,EAAS/zB,KACb,OAAO+zB,EAAOkO,QAAQlO,EAAOuJ,YAAaL,EAAOmE,EAAcE,EACjE,CCXe,SAASuC,GAAe5G,EAAOmE,EAAcE,EAAUwC,QACtD,IAAV7G,IACFA,EAAQj9B,KAAKuC,OAAO06B,YAGD,IAAjBmE,IACFA,GAAe,QAGC,IAAd0C,IACFA,EAAY,IAGd,IAAI/P,EAAS/zB,KACTgb,EAAQ+Y,EAAOuJ,YACf2C,EAAOh7B,KAAKkW,IAAI4Y,EAAOxxB,OAAOg5B,mBAAoBvgB,GAClD0hB,EAAYuD,EAAOh7B,KAAK6S,OAAOkD,EAAQilB,GAAQlM,EAAOxxB,OAAOm4B,gBAC7DiD,EAAY5J,EAAOkE,aAAelE,EAAO4J,WAAa5J,EAAO4J,UAEjE,GAAIA,GAAa5J,EAAO2E,SAASgE,GAAY,CAG3C,IAAIqH,EAAchQ,EAAO2E,SAASgE,GAC9BsH,EAAWjQ,EAAO2E,SAASgE,EAAY,GAEvCiB,EAAYoG,GAAeC,EAAWD,GAAeD,IACvD9oB,GAAS+Y,EAAOxxB,OAAOm4B,eAE3B,KAAO,CAGL,IAAIiJ,EAAW5P,EAAO2E,SAASgE,EAAY,GACvCuH,EAAelQ,EAAO2E,SAASgE,GAE/BiB,EAAYgG,IAAaM,EAAeN,GAAYG,IACtD9oB,GAAS+Y,EAAOxxB,OAAOm4B,eAE3B,CAIA,OAFA1f,EAAQ/V,KAAKiW,IAAIF,EAAO,GACxBA,EAAQ/V,KAAKkW,IAAIH,EAAO+Y,EAAO4E,WAAW16B,OAAS,GAC5C81B,EAAOkO,QAAQjnB,EAAOiiB,EAAOmE,EAAcE,EACpD,CCzCe,SAASf,KACtB,IAKIxB,EALAhL,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAChB4zB,EAAapC,EAAOoC,WACpB4D,EAAyC,SAAzBx3B,EAAOw3B,cAA2BhG,EAAOmQ,uBAAyB3hC,EAAOw3B,cACzFoK,EAAepQ,EAAOuM,aAG1B,GAAI/9B,EAAO+8B,KAAM,CACf,GAAIvL,EAAOwN,UAAW,OACtBxC,EAAYtH,SAAS,GAAE1D,EAAOsM,cAAc3W,KAAK,2BAA4B,IAEzEnnB,EAAO+4B,eACL6I,EAAepQ,EAAOiP,aAAejJ,EAAgB,GAAKoK,EAAepQ,EAAOwE,OAAOt6B,OAAS81B,EAAOiP,aAAejJ,EAAgB,GACxIhG,EAAOqP,UACPe,EAAehO,EAAWpnB,SAAS,IAAMxM,EAAOi2B,WAAa,6BAAgCuG,EAAY,WAAcx8B,EAAOg9B,oBAAsB,KAAKjS,GAAG,GAAGtS,QAC/JgU,IAAS,WACP+E,EAAOkO,QAAQkC,EACjB,KAEApQ,EAAOkO,QAAQkC,GAERA,EAAepQ,EAAOwE,OAAOt6B,OAAS87B,GAC/ChG,EAAOqP,UACPe,EAAehO,EAAWpnB,SAAS,IAAMxM,EAAOi2B,WAAa,6BAAgCuG,EAAY,WAAcx8B,EAAOg9B,oBAAsB,KAAKjS,GAAG,GAAGtS,QAC/JgU,IAAS,WACP+E,EAAOkO,QAAQkC,EACjB,KAEApQ,EAAOkO,QAAQkC,EAEnB,MACEpQ,EAAOkO,QAAQkC,EAEnB,CC7BA,UACElC,QAASA,GACTa,YAAaA,GACbG,UAAWA,GACXK,UAAWA,GACXM,WAAYA,GACZC,eAAgBA,GAChBtD,oBAAqBA,ICZR,SAAS6D,KACtB,IAAIrQ,EAAS/zB,KACTmB,EAAWsjB,IACXliB,EAASwxB,EAAOxxB,OAChB4zB,EAAapC,EAAOoC,WAExBA,EAAWpnB,SAAS,IAAMxM,EAAOi2B,WAAa,IAAMj2B,EAAOg9B,qBAAqBl+B,SAChF,IAAIk3B,EAASpC,EAAWpnB,SAAS,IAAMxM,EAAOi2B,YAE9C,GAAIj2B,EAAO8hC,uBAAwB,CACjC,IAAIC,EAAiB/hC,EAAOm4B,eAAiBnC,EAAOt6B,OAASsE,EAAOm4B,eAEpE,GAAI4J,IAAmB/hC,EAAOm4B,eAAgB,CAC5C,IAAK,IAAIx8B,EAAI,EAAGA,EAAIomC,EAAgBpmC,GAAK,EAAG,CAC1C,IAAIqmC,EAAY,GAAEpjC,EAASsC,cAAc,QAAQilB,SAASnmB,EAAOi2B,WAAa,IAAMj2B,EAAOiiC,iBAC3FrO,EAAWjyB,OAAOqgC,EACpB,CAEAhM,EAASpC,EAAWpnB,SAAS,IAAMxM,EAAOi2B,WAC5C,CACF,CAE6B,SAAzBj2B,EAAOw3B,eAA6Bx3B,EAAOygC,eAAczgC,EAAOygC,aAAezK,EAAOt6B,QAC1F81B,EAAOiP,aAAe/9B,KAAK60B,KAAKzhB,WAAW9V,EAAOygC,cAAgBzgC,EAAOw3B,cAAe,KACxFhG,EAAOiP,cAAgBzgC,EAAOkiC,qBAE1B1Q,EAAOiP,aAAezK,EAAOt6B,SAC/B81B,EAAOiP,aAAezK,EAAOt6B,QAG/B,IAAIymC,EAAgB,GAChBC,EAAe,GACnBpM,EAAO1jB,MAAK,SAAUlF,EAAIqL,GACxB,IAAIsf,EAAQ,GAAE3qB,GAEVqL,EAAQ+Y,EAAOiP,cACjB2B,EAAaziC,KAAKyN,GAGhBqL,EAAQud,EAAOt6B,QAAU+c,GAASud,EAAOt6B,OAAS81B,EAAOiP,cAC3D0B,EAAcxiC,KAAKyN,GAGrB2qB,EAAM5Q,KAAK,0BAA2B1O,EACxC,IAEA,IAAK,IAAI0gB,EAAK,EAAGA,EAAKiJ,EAAa1mC,OAAQy9B,GAAM,EAC/CvF,EAAWjyB,OAAO,GAAEygC,EAAajJ,GAAIkJ,WAAU,IAAOlc,SAASnmB,EAAOg9B,sBAGxE,IAAK,IAAI3D,EAAM8I,EAAczmC,OAAS,EAAG29B,GAAO,EAAGA,GAAO,EACxDzF,EAAWvI,QAAQ,GAAE8W,EAAc9I,GAAKgJ,WAAU,IAAOlc,SAASnmB,EAAOg9B,qBAE7E,CCvDe,SAAS6D,KACtB,IAAIrP,EAAS/zB,KACb+zB,EAAOe,KAAK,iBACZ,IAOIiO,EAPAzF,EAAcvJ,EAAOuJ,YACrB/E,EAASxE,EAAOwE,OAChByK,EAAejP,EAAOiP,aACtBL,EAAiB5O,EAAO4O,eACxBD,EAAiB3O,EAAO2O,eACxBhK,EAAW3E,EAAO2E,SAClBV,EAAMjE,EAAOkE,aAEjBlE,EAAO4O,gBAAiB,EACxB5O,EAAO2O,gBAAiB,EACxB,IAAImC,GAAiBnM,EAAS4E,GAC1BwH,EAAOD,EAAgB9Q,EAAO5E,eAElC,GAAImO,EAAc0F,EAAc,CAC9BD,EAAWxK,EAAOt6B,OAAwB,EAAf+kC,EAAmB1F,EAC9CyF,GAAYC,EACZ,IAAI+B,EAAehR,EAAOkO,QAAQc,EAAU,GAAG,GAAO,GAElDgC,GAAyB,IAATD,GAClB/Q,EAAO4M,cAAc3I,GAAOjE,EAAO4J,UAAY5J,EAAO4J,WAAamH,EAEvE,MAAO,GAAIxH,GAAe/E,EAAOt6B,OAAS+kC,EAAc,CAEtDD,GAAYxK,EAAOt6B,OAASq/B,EAAc0F,EAC1CD,GAAYC,EAEZ,IAAIgC,EAAgBjR,EAAOkO,QAAQc,EAAU,GAAG,GAAO,GAEnDiC,GAA0B,IAATF,GACnB/Q,EAAO4M,cAAc3I,GAAOjE,EAAO4J,UAAY5J,EAAO4J,WAAamH,EAEvE,CAEA/Q,EAAO4O,eAAiBA,EACxB5O,EAAO2O,eAAiBA,EACxB3O,EAAOe,KAAK,UACd,CCvCe,SAASmQ,KACtB,IAAIlR,EAAS/zB,KACTm2B,EAAapC,EAAOoC,WACpB5zB,EAASwxB,EAAOxxB,OAChBg2B,EAASxE,EAAOwE,OACpBpC,EAAWpnB,SAAS,IAAMxM,EAAOi2B,WAAa,IAAMj2B,EAAOg9B,oBAAsB,KAAOh9B,EAAOi2B,WAAa,IAAMj2B,EAAOiiC,iBAAiBnjC,SAC1Ik3B,EAAO1O,WAAW,0BACpB,CCJA,UACEua,WAAYA,GACZhB,QAASA,GACT6B,YAAaA,ICNA,SAASC,GAAcC,GACpC,IAAIpR,EAAS/zB,KACb,KAAI+zB,EAAOzC,QAAQI,QAAUqC,EAAOxxB,OAAO6iC,eAAiBrR,EAAOxxB,OAAOo6B,eAAiB5I,EAAOsR,UAAYtR,EAAOxxB,OAAO05B,SAA5H,CACA,IAAItsB,EAAKokB,EAAOpkB,GAChBA,EAAG2D,MAAMgyB,OAAS,OAClB31B,EAAG2D,MAAMgyB,OAASH,EAAS,mBAAqB,eAChDx1B,EAAG2D,MAAMgyB,OAASH,EAAS,eAAiB,YAC5Cx1B,EAAG2D,MAAMgyB,OAASH,EAAS,WAAa,MALmG,CAM7I,CCRe,SAASI,KACtB,IAAIxR,EAAS/zB,KAET+zB,EAAOzC,QAAQI,OAASqC,EAAOxxB,OAAOo6B,eAAiB5I,EAAOsR,UAAYtR,EAAOxxB,OAAO05B,UAI5FlI,EAAOpkB,GAAG2D,MAAMgyB,OAAS,GAC3B,CCNA,UACEJ,cAAeA,GACfK,gBAAiBA,ICJJ,SAASC,GAAYjN,GAClC,IAAIxE,EAAS/zB,KACTm2B,EAAapC,EAAOoC,WACpB5zB,EAASwxB,EAAOxxB,OAMpB,GAJIA,EAAO+8B,MACTvL,EAAOkR,cAGa,kBAAX1M,GAAuB,WAAYA,EAC5C,IAAK,IAAIr6B,EAAI,EAAGA,EAAIq6B,EAAOt6B,OAAQC,GAAK,EAClCq6B,EAAOr6B,IAAIi4B,EAAWjyB,OAAOq0B,EAAOr6B,SAG1Ci4B,EAAWjyB,OAAOq0B,GAGhBh2B,EAAO+8B,MACTvL,EAAOqQ,aAGH7hC,EAAOwvB,UAAYgC,EAAOzC,QAAQS,UACtCgC,EAAO0R,QAEX,CCxBe,SAASC,GAAanN,GACnC,IAAIxE,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAChB4zB,EAAapC,EAAOoC,WACpBmH,EAAcvJ,EAAOuJ,YAErB/6B,EAAO+8B,MACTvL,EAAOkR,cAGT,IAAIrF,EAAiBtC,EAAc,EAEnC,GAAsB,kBAAX/E,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAIr6B,EAAI,EAAGA,EAAIq6B,EAAOt6B,OAAQC,GAAK,EAClCq6B,EAAOr6B,IAAIi4B,EAAWvI,QAAQ2K,EAAOr6B,IAG3C0hC,EAAiBtC,EAAc/E,EAAOt6B,MACxC,MACEk4B,EAAWvI,QAAQ2K,GAGjBh2B,EAAO+8B,MACTvL,EAAOqQ,aAGH7hC,EAAOwvB,UAAYgC,EAAOzC,QAAQS,UACtCgC,EAAO0R,SAGT1R,EAAOkO,QAAQrC,EAAgB,GAAG,EACpC,CC/Be,SAAS+F,GAAS3qB,EAAOud,GACtC,IAAIxE,EAAS/zB,KACTm2B,EAAapC,EAAOoC,WACpB5zB,EAASwxB,EAAOxxB,OAChB+6B,EAAcvJ,EAAOuJ,YACrBsI,EAAoBtI,EAEpB/6B,EAAO+8B,OACTsG,GAAqB7R,EAAOiP,aAC5BjP,EAAOkR,cACPlR,EAAOwE,OAASpC,EAAWpnB,SAAS,IAAMxM,EAAOi2B,aAGnD,IAAIqN,EAAa9R,EAAOwE,OAAOt6B,OAE/B,GAAI+c,GAAS,EACX+Y,EAAO2R,aAAanN,QAItB,GAAIvd,GAAS6qB,EACX9R,EAAOyR,YAAYjN,OADrB,CAQA,IAHA,IAAIqH,EAAiBgG,EAAoB5qB,EAAQ4qB,EAAoB,EAAIA,EACrEE,EAAe,GAEV5nC,EAAI2nC,EAAa,EAAG3nC,GAAK8c,EAAO9c,GAAK,EAAG,CAC/C,IAAI6nC,EAAehS,EAAOwE,OAAOjL,GAAGpvB,GACpC6nC,EAAa1kC,SACbykC,EAAapb,QAAQqb,EACvB,CAEA,GAAsB,kBAAXxN,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAImD,EAAK,EAAGA,EAAKnD,EAAOt6B,OAAQy9B,GAAM,EACrCnD,EAAOmD,IAAKvF,EAAWjyB,OAAOq0B,EAAOmD,IAG3CkE,EAAiBgG,EAAoB5qB,EAAQ4qB,EAAoBrN,EAAOt6B,OAAS2nC,CACnF,MACEzP,EAAWjyB,OAAOq0B,GAGpB,IAAK,IAAIqD,EAAM,EAAGA,EAAMkK,EAAa7nC,OAAQ29B,GAAO,EAClDzF,EAAWjyB,OAAO4hC,EAAalK,IAG7Br5B,EAAO+8B,MACTvL,EAAOqQ,aAGH7hC,EAAOwvB,UAAYgC,EAAOzC,QAAQS,UACtCgC,EAAO0R,SAGLljC,EAAO+8B,KACTvL,EAAOkO,QAAQrC,EAAiB7L,EAAOiP,aAAc,GAAG,GAExDjP,EAAOkO,QAAQrC,EAAgB,GAAG,EApCpC,CAsCF,CC7De,SAASoG,GAAYC,GAClC,IAAIlS,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAChB4zB,EAAapC,EAAOoC,WACpBmH,EAAcvJ,EAAOuJ,YACrBsI,EAAoBtI,EAEpB/6B,EAAO+8B,OACTsG,GAAqB7R,EAAOiP,aAC5BjP,EAAOkR,cACPlR,EAAOwE,OAASpC,EAAWpnB,SAAS,IAAMxM,EAAOi2B,aAGnD,IACI0N,EADAtG,EAAiBgG,EAGrB,GAA6B,kBAAlBK,GAA8B,WAAYA,EAAe,CAClE,IAAK,IAAI/nC,EAAI,EAAGA,EAAI+nC,EAAchoC,OAAQC,GAAK,EAC7CgoC,EAAgBD,EAAc/nC,GAC1B61B,EAAOwE,OAAO2N,IAAgBnS,EAAOwE,OAAOjL,GAAG4Y,GAAe7kC,SAC9D6kC,EAAgBtG,IAAgBA,GAAkB,GAGxDA,EAAiB36B,KAAKiW,IAAI0kB,EAAgB,EAC5C,MACEsG,EAAgBD,EACZlS,EAAOwE,OAAO2N,IAAgBnS,EAAOwE,OAAOjL,GAAG4Y,GAAe7kC,SAC9D6kC,EAAgBtG,IAAgBA,GAAkB,GACtDA,EAAiB36B,KAAKiW,IAAI0kB,EAAgB,GAGxCr9B,EAAO+8B,MACTvL,EAAOqQ,aAGH7hC,EAAOwvB,UAAYgC,EAAOzC,QAAQS,UACtCgC,EAAO0R,SAGLljC,EAAO+8B,KACTvL,EAAOkO,QAAQrC,EAAiB7L,EAAOiP,aAAc,GAAG,GAExDjP,EAAOkO,QAAQrC,EAAgB,GAAG,EAEtC,CC5Ce,SAASuG,KAItB,IAHA,IAAIpS,EAAS/zB,KACTimC,EAAgB,GAEX/nC,EAAI,EAAGA,EAAI61B,EAAOwE,OAAOt6B,OAAQC,GAAK,EAC7C+nC,EAAc/jC,KAAKhE,GAGrB61B,EAAOiS,YAAYC,EACrB,CCJA,UACET,YAAaA,GACbE,aAAcA,GACdC,SAAUA,GACVK,YAAaA,GACbG,gBAAiBA,ICNnB,SAASC,GAAel9B,EAAUm9B,GAKhC,SAASC,EAAc32B,GACrB,IAAKA,GAAMA,IAAO8U,KAAiB9U,IAAO,IAAa,OAAO,KAC1DA,EAAG42B,eAAc52B,EAAKA,EAAG42B,cAC7B,IAAIjY,EAAQ3e,EAAGP,QAAQlG,GACvB,OAAOolB,GAASgY,EAAc32B,EAAG0J,cAAc6K,KACjD,CAEA,YAXa,IAATmiB,IACFA,EAAOrmC,MAUFsmC,EAAcD,EACvB,CAEe,SAASG,GAAa9hC,GACnC,IAAIqvB,EAAS/zB,KACTmB,EAAWsjB,IACX9iB,EAAS,IACT8F,EAAOssB,EAAO0S,gBACdlkC,EAASwxB,EAAOxxB,OAChBmkC,EAAU3S,EAAO2S,QACjBrO,EAAUtE,EAAOsE,QACrB,GAAKA,KAEDtE,EAAOwN,YAAah/B,EAAOi/B,gCAA/B,CAIA,IAAIlkC,EAAIoH,EACJpH,EAAEqpC,gBAAerpC,EAAIA,EAAEqpC,eAC3B,IAAIC,EAAY,GAAEtpC,EAAE+L,QAEpB,IAAiC,YAA7B9G,EAAOskC,mBACJD,EAAUx3B,QAAQ2kB,EAAO+M,WAAW7iC,UAG3CwJ,EAAKq/B,aAA0B,eAAXxpC,EAAE0L,MACjBvB,EAAKq/B,gBAAgB,UAAWxpC,IAAiB,IAAZA,EAAEypC,WACvCt/B,EAAKq/B,cAAgB,WAAYxpC,GAAKA,EAAE0pC,OAAS,MAClDv/B,EAAKw/B,YAAax/B,EAAKy/B,UAA3B,CAEA,IAAIC,IAAyB5kC,EAAO6kC,gBAA4C,KAA1B7kC,EAAO6kC,eAEzDD,GAAwB7pC,EAAE+L,QAAU/L,EAAE+L,OAAOg+B,YAAc3iC,EAAM4iC,MAAQ5iC,EAAM4iC,KAAK,KACtFV,EAAY,GAAEliC,EAAM4iC,KAAK,KAG3B,IAAIC,EAAoBhlC,EAAOglC,kBAAoBhlC,EAAOglC,kBAAoB,IAAMhlC,EAAO6kC,eACvFI,KAAoBlqC,EAAE+L,SAAU/L,EAAE+L,OAAOg+B,YAE7C,GAAI9kC,EAAOklC,YAAcD,EAAiBpB,GAAemB,EAAmBjqC,EAAE+L,QAAUu9B,EAAUx3B,QAAQm4B,GAAmB,IAC3HxT,EAAO2T,YAAa,OAItB,IAAInlC,EAAOolC,cACJf,EAAUx3B,QAAQ7M,EAAOolC,cAAc,GAD9C,CAIAjB,EAAQkB,SAAsB,eAAXtqC,EAAE0L,KAAwB1L,EAAEuqC,cAAc,GAAGC,MAAQxqC,EAAEwqC,MAC1EpB,EAAQqB,SAAsB,eAAXzqC,EAAE0L,KAAwB1L,EAAEuqC,cAAc,GAAGG,MAAQ1qC,EAAE0qC,MAC1E,IAAIC,EAASvB,EAAQkB,SACjBM,EAASxB,EAAQqB,SAEjBI,EAAqB5lC,EAAO4lC,oBAAsB5lC,EAAO6lC,sBACzDC,EAAqB9lC,EAAO8lC,oBAAsB9lC,EAAO+lC,sBAE7D,GAAIH,IAAuBF,GAAUI,GAAsBJ,GAAUtmC,EAAOga,WAAa0sB,GAAqB,CAC5G,GAA2B,YAAvBF,EAGF,OAFAzjC,EAAMgI,gBAIV,CAiBA,GAfA,GAAOjF,EAAM,CACXw/B,WAAW,EACXC,SAAS,EACTqB,qBAAqB,EACrBC,iBAAa7wB,EACb8wB,iBAAa9wB,IAEf+uB,EAAQuB,OAASA,EACjBvB,EAAQwB,OAASA,EACjBzgC,EAAKihC,eAAiBzZ,KACtB8E,EAAO2T,YAAa,EACpB3T,EAAOuD,aACPvD,EAAO4U,oBAAiBhxB,EACpBpV,EAAOuhC,UAAY,IAAGr8B,EAAKmhC,oBAAqB,GAErC,eAAXtrC,EAAE0L,KAAuB,CAC3B,IAAI0D,GAAiB,EACjBk6B,EAAUjc,GAAGljB,EAAKohC,qBAAoBn8B,GAAiB,GAEvDvL,EAASyZ,eAAiB,GAAEzZ,EAASyZ,eAAe+P,GAAGljB,EAAKohC,oBAAsB1nC,EAASyZ,gBAAkBgsB,EAAU,IACzHzlC,EAASyZ,cAAc4I,OAGzB,IAAIslB,EAAuBp8B,GAAkBqnB,EAAOgV,gBAAkBxmC,EAAOymC,0BAExEzmC,EAAO0mC,gCAAiCH,GAA0BlC,EAAU,GAAGsC,mBAClF5rC,EAAEoP,gBAEN,CAEAqnB,EAAOe,KAAK,aAAcx3B,EAhD1B,CAlB0C,CAb1C,CAgFF,CC5Ge,SAAS6rC,GAAYzkC,GAClC,IAAIvD,EAAWsjB,IACXsP,EAAS/zB,KACTyH,EAAOssB,EAAO0S,gBACdlkC,EAASwxB,EAAOxxB,OAChBmkC,EAAU3S,EAAO2S,QACjB1O,EAAMjE,EAAOkE,aACbI,EAAUtE,EAAOsE,QACrB,GAAKA,EAAL,CACA,IAAI/6B,EAAIoH,EAGR,GAFIpH,EAAEqpC,gBAAerpC,EAAIA,EAAEqpC,eAEtBl/B,EAAKw/B,WAQV,IAAIx/B,EAAKq/B,cAA2B,cAAXxpC,EAAE0L,KAA3B,CACA,IAAIogC,EAAyB,cAAX9rC,EAAE0L,MAAwB1L,EAAEuqC,gBAAkBvqC,EAAEuqC,cAAc,IAAMvqC,EAAE+rC,eAAe,IACnGvB,EAAmB,cAAXxqC,EAAE0L,KAAuBogC,EAAYtB,MAAQxqC,EAAEwqC,MACvDE,EAAmB,cAAX1qC,EAAE0L,KAAuBogC,EAAYpB,MAAQ1qC,EAAE0qC,MAE3D,GAAI1qC,EAAEgsC,wBAGJ,OAFA5C,EAAQuB,OAASH,OACjBpB,EAAQwB,OAASF,GAInB,IAAKjU,EAAOgV,eAcV,OAZAhV,EAAO2T,YAAa,OAEhBjgC,EAAKw/B,YACP,GAAOP,EAAS,CACduB,OAAQH,EACRI,OAAQF,EACRJ,SAAUE,EACVC,SAAUC,IAEZvgC,EAAKihC,eAAiBzZ,OAM1B,GAAIxnB,EAAKq/B,cAAgBvkC,EAAOgnC,sBAAwBhnC,EAAO+8B,KAC7D,GAAIvL,EAAOyD,cAET,GAAIwQ,EAAQtB,EAAQwB,QAAUnU,EAAO4J,WAAa5J,EAAOyK,gBAAkBwJ,EAAQtB,EAAQwB,QAAUnU,EAAO4J,WAAa5J,EAAOiK,eAG9H,OAFAv2B,EAAKw/B,WAAY,OACjBx/B,EAAKy/B,SAAU,QAGZ,GAAIY,EAAQpB,EAAQuB,QAAUlU,EAAO4J,WAAa5J,EAAOyK,gBAAkBsJ,EAAQpB,EAAQuB,QAAUlU,EAAO4J,WAAa5J,EAAOiK,eACrI,OAIJ,GAAIv2B,EAAKq/B,cAAgB3lC,EAASyZ,eAC5Btd,EAAE+L,SAAWlI,EAASyZ,eAAiB,GAAEtd,EAAE+L,QAAQshB,GAAGljB,EAAKohC,mBAG7D,OAFAphC,EAAKy/B,SAAU,OACfnT,EAAO2T,YAAa,GASxB,GAJIjgC,EAAK8gC,qBACPxU,EAAOe,KAAK,YAAax3B,KAGvBA,EAAEuqC,eAAiBvqC,EAAEuqC,cAAc5pC,OAAS,GAAhD,CACAyoC,EAAQkB,SAAWE,EACnBpB,EAAQqB,SAAWC,EACnB,IAAIwB,EAAQ9C,EAAQkB,SAAWlB,EAAQuB,OACnCwB,EAAQ/C,EAAQqB,SAAWrB,EAAQwB,OACvC,KAAInU,EAAOxxB,OAAOuhC,WAAa7+B,KAAKykC,KAAKzkC,KAAKC,IAAIskC,EAAO,GAAKvkC,KAAKC,IAAIukC,EAAO,IAAM1V,EAAOxxB,OAAOuhC,WAAlG,CAGE,IAAI6F,EADN,GAAgC,qBAArBliC,EAAK+gC,YAGVzU,EAAOwD,gBAAkBmP,EAAQqB,WAAarB,EAAQwB,QAAUnU,EAAOyD,cAAgBkP,EAAQkB,WAAalB,EAAQuB,OACtHxgC,EAAK+gC,aAAc,EAGfgB,EAAQA,EAAQC,EAAQA,GAAS,KACnCE,EAA4D,IAA/C1kC,KAAK2kC,MAAM3kC,KAAKyW,IAAI+tB,GAAQxkC,KAAKyW,IAAI8tB,IAAgBvkC,KAAK4kC,GACvEpiC,EAAK+gC,YAAczU,EAAOwD,eAAiBoS,EAAapnC,EAAOonC,WAAa,GAAKA,EAAapnC,EAAOonC,YAe3G,GAVIliC,EAAK+gC,aACPzU,EAAOe,KAAK,oBAAqBx3B,GAGH,qBAArBmK,EAAKghC,cACV/B,EAAQkB,WAAalB,EAAQuB,QAAUvB,EAAQqB,WAAarB,EAAQwB,SACtEzgC,EAAKghC,aAAc,IAInBhhC,EAAK+gC,YACP/gC,EAAKw/B,WAAY,OAInB,GAAKx/B,EAAKghC,YAAV,CAIA1U,EAAO2T,YAAa,GAEfnlC,EAAO05B,SAAW3+B,EAAEmP,YACvBnP,EAAEoP,iBAGAnK,EAAOunC,2BAA6BvnC,EAAOwnC,QAC7CzsC,EAAE0sC,kBAGCviC,EAAKy/B,UACJ3kC,EAAO+8B,MACTvL,EAAOqP,UAGT37B,EAAKwiC,eAAiBlW,EAAO5E,eAC7B4E,EAAOoJ,cAAc,GAEjBpJ,EAAOwN,WACTxN,EAAOoC,WAAWvqB,QAAQ,qCAG5BnE,EAAKyiC,qBAAsB,GAEvB3nC,EAAO4nC,aAAyC,IAA1BpW,EAAO2O,iBAAqD,IAA1B3O,EAAO4O,gBACjE5O,EAAOmR,eAAc,GAGvBnR,EAAOe,KAAK,kBAAmBx3B,IAGjCy2B,EAAOe,KAAK,aAAcx3B,GAC1BmK,EAAKy/B,SAAU,EACf,IAAIpC,EAAO/Q,EAAOwD,eAAiBiS,EAAQC,EAC3C/C,EAAQ5B,KAAOA,EACfA,GAAQviC,EAAO6nC,WACXpS,IAAK8M,GAAQA,GACjB/Q,EAAO4U,eAAiB7D,EAAO,EAAI,OAAS,OAC5Cr9B,EAAKi5B,iBAAmBoE,EAAOr9B,EAAKwiC,eACpC,IAAII,GAAsB,EACtBC,EAAkB/nC,EAAO+nC,gBAgC7B,GA9BI/nC,EAAOgnC,sBACTe,EAAkB,GAGhBxF,EAAO,GAAKr9B,EAAKi5B,iBAAmB3M,EAAOiK,gBAC7CqM,GAAsB,EAClB9nC,EAAOgoC,aAAY9iC,EAAKi5B,iBAAmB3M,EAAOiK,eAAiB,EAAI/4B,KAAKC,KAAK6uB,EAAOiK,eAAiBv2B,EAAKwiC,eAAiBnF,EAAMwF,KAChIxF,EAAO,GAAKr9B,EAAKi5B,iBAAmB3M,EAAOyK,iBACpD6L,GAAsB,EAClB9nC,EAAOgoC,aAAY9iC,EAAKi5B,iBAAmB3M,EAAOyK,eAAiB,EAAIv5B,KAAKC,IAAI6uB,EAAOyK,eAAiB/2B,EAAKwiC,eAAiBnF,EAAMwF,KAGtID,IACF/sC,EAAEgsC,yBAA0B,IAIzBvV,EAAO2O,gBAA4C,SAA1B3O,EAAO4U,gBAA6BlhC,EAAKi5B,iBAAmBj5B,EAAKwiC,iBAC7FxiC,EAAKi5B,iBAAmBj5B,EAAKwiC,iBAG1BlW,EAAO4O,gBAA4C,SAA1B5O,EAAO4U,gBAA6BlhC,EAAKi5B,iBAAmBj5B,EAAKwiC,iBAC7FxiC,EAAKi5B,iBAAmBj5B,EAAKwiC,gBAG1BlW,EAAO4O,gBAAmB5O,EAAO2O,iBACpCj7B,EAAKi5B,iBAAmBj5B,EAAKwiC,gBAI3B1nC,EAAOuhC,UAAY,EAAG,CACxB,KAAI7+B,KAAKyW,IAAIopB,GAAQviC,EAAOuhC,WAAar8B,EAAKmhC,oBAW5C,YADAnhC,EAAKi5B,iBAAmBj5B,EAAKwiC,gBAT7B,IAAKxiC,EAAKmhC,mBAMR,OALAnhC,EAAKmhC,oBAAqB,EAC1BlC,EAAQuB,OAASvB,EAAQkB,SACzBlB,EAAQwB,OAASxB,EAAQqB,SACzBtgC,EAAKi5B,iBAAmBj5B,EAAKwiC,oBAC7BvD,EAAQ5B,KAAO/Q,EAAOwD,eAAiBmP,EAAQkB,SAAWlB,EAAQuB,OAASvB,EAAQqB,SAAWrB,EAAQwB,OAO5G,CAEK3lC,EAAOioC,eAAgBjoC,EAAO05B,WAE/B15B,EAAOkoC,UAAYloC,EAAOs6B,qBAAuBt6B,EAAOu6B,yBAC1D/I,EAAO4L,oBACP5L,EAAO8K,uBAGLt8B,EAAOkoC,WAEsB,IAA3BhjC,EAAKijC,WAAWzsC,QAClBwJ,EAAKijC,WAAWxoC,KAAK,CACnByoC,SAAUjE,EAAQ3S,EAAOwD,eAAiB,SAAW,UACrDqT,KAAMnjC,EAAKihC,iBAIfjhC,EAAKijC,WAAWxoC,KAAK,CACnByoC,SAAUjE,EAAQ3S,EAAOwD,eAAiB,WAAa,YACvDqT,KAAM3b,QAKV8E,EAAOsK,eAAe52B,EAAKi5B,kBAE3B3M,EAAO4M,aAAal5B,EAAKi5B,kBAnHzB,CAjCmH,CAL1D,CArDF,OAPjDj5B,EAAKghC,aAAehhC,EAAK+gC,aAC3BzU,EAAOe,KAAK,oBAAqBx3B,EANjB,CA2NtB,CCrOe,SAASutC,GAAWnmC,GACjC,IAAIqvB,EAAS/zB,KACTyH,EAAOssB,EAAO0S,gBACdlkC,EAASwxB,EAAOxxB,OAChBmkC,EAAU3S,EAAO2S,QACjB1O,EAAMjE,EAAOkE,aACb9B,EAAapC,EAAOoC,WACpBwC,EAAa5E,EAAO4E,WACpBD,EAAW3E,EAAO2E,SAClBL,EAAUtE,EAAOsE,QACrB,GAAKA,EAAL,CACA,IAAI/6B,EAAIoH,EASR,GARIpH,EAAEqpC,gBAAerpC,EAAIA,EAAEqpC,eAEvBl/B,EAAK8gC,qBACPxU,EAAOe,KAAK,WAAYx3B,GAG1BmK,EAAK8gC,qBAAsB,GAEtB9gC,EAAKw/B,UAOR,OANIx/B,EAAKy/B,SAAW3kC,EAAO4nC,YACzBpW,EAAOmR,eAAc,GAGvBz9B,EAAKy/B,SAAU,OACfz/B,EAAKghC,aAAc,GAKjBlmC,EAAO4nC,YAAc1iC,EAAKy/B,SAAWz/B,EAAKw/B,aAAwC,IAA1BlT,EAAO2O,iBAAqD,IAA1B3O,EAAO4O,iBACnG5O,EAAOmR,eAAc,GAIvB,IA2BI4F,EA3BAC,EAAe9b,KACf+b,EAAWD,EAAetjC,EAAKihC,eAgBnC,GAdI3U,EAAO2T,aACT3T,EAAOoM,mBAAmB7iC,GAC1By2B,EAAOe,KAAK,YAAax3B,GAErB0tC,EAAW,KAAOD,EAAetjC,EAAKwjC,cAAgB,KACxDlX,EAAOe,KAAK,wBAAyBx3B,IAIzCmK,EAAKwjC,cAAgBhc,KACrBD,IAAS,WACF+E,EAAOG,YAAWH,EAAO2T,YAAa,EAC7C,KAEKjgC,EAAKw/B,YAAcx/B,EAAKy/B,UAAYnT,EAAO4U,gBAAmC,IAAjBjC,EAAQ5B,MAAcr9B,EAAKi5B,mBAAqBj5B,EAAKwiC,eAIrH,OAHAxiC,EAAKw/B,WAAY,EACjBx/B,EAAKy/B,SAAU,OACfz/B,EAAKghC,aAAc,GAerB,GAXAhhC,EAAKw/B,WAAY,EACjBx/B,EAAKy/B,SAAU,EACfz/B,EAAKghC,aAAc,EAIjBqC,EADEvoC,EAAOioC,aACIxS,EAAMjE,EAAO4J,WAAa5J,EAAO4J,WAEhCl2B,EAAKi5B,kBAGjBn+B,EAAO05B,QAIX,GAAI15B,EAAOkoC,SAAX,CACE,GAAIK,GAAc/W,EAAOiK,eAEvB,YADAjK,EAAOkO,QAAQlO,EAAOuJ,aAIxB,GAAIwN,GAAc/W,EAAOyK,eAOvB,YANIzK,EAAOwE,OAAOt6B,OAASy6B,EAASz6B,OAClC81B,EAAOkO,QAAQvJ,EAASz6B,OAAS,GAEjC81B,EAAOkO,QAAQlO,EAAOwE,OAAOt6B,OAAS,IAM1C,GAAIsE,EAAO2oC,iBAAkB,CAC3B,GAAIzjC,EAAKijC,WAAWzsC,OAAS,EAAG,CAC9B,IAAIktC,EAAgB1jC,EAAKijC,WAAWU,MAChCC,EAAgB5jC,EAAKijC,WAAWU,MAChCE,EAAWH,EAAcR,SAAWU,EAAcV,SAClDC,EAAOO,EAAcP,KAAOS,EAAcT,KAC9C7W,EAAOwX,SAAWD,EAAWV,EAC7B7W,EAAOwX,UAAY,EAEftmC,KAAKyW,IAAIqY,EAAOwX,UAAYhpC,EAAOipC,0BACrCzX,EAAOwX,SAAW,IAKhBX,EAAO,KAAO3b,KAAQkc,EAAcP,KAAO,OAC7C7W,EAAOwX,SAAW,EAEtB,MACExX,EAAOwX,SAAW,EAGpBxX,EAAOwX,UAAYhpC,EAAOkpC,8BAC1BhkC,EAAKijC,WAAWzsC,OAAS,EACzB,IAAIytC,EAAmB,IAAOnpC,EAAOopC,sBACjCC,EAAmB7X,EAAOwX,SAAWG,EACrCG,EAAc9X,EAAO4J,UAAYiO,EACjC5T,IAAK6T,GAAeA,GACxB,IACIC,EAEAC,EAHAC,GAAW,EAEXC,EAA2C,GAA5BhnC,KAAKyW,IAAIqY,EAAOwX,UAAiBhpC,EAAO2pC,4BAG3D,GAAIL,EAAc9X,EAAOyK,eACnBj8B,EAAO4pC,wBACLN,EAAc9X,EAAOyK,gBAAkByN,IACzCJ,EAAc9X,EAAOyK,eAAiByN,GAGxCH,EAAsB/X,EAAOyK,eAC7BwN,GAAW,EACXvkC,EAAKyiC,qBAAsB,GAE3B2B,EAAc9X,EAAOyK,eAGnBj8B,EAAO+8B,MAAQ/8B,EAAO+4B,iBAAgByQ,GAAe,QACpD,GAAIF,EAAc9X,EAAOiK,eAC1Bz7B,EAAO4pC,wBACLN,EAAc9X,EAAOiK,eAAiBiO,IACxCJ,EAAc9X,EAAOiK,eAAiBiO,GAGxCH,EAAsB/X,EAAOiK,eAC7BgO,GAAW,EACXvkC,EAAKyiC,qBAAsB,GAE3B2B,EAAc9X,EAAOiK,eAGnBz7B,EAAO+8B,MAAQ/8B,EAAO+4B,iBAAgByQ,GAAe,QACpD,GAAIxpC,EAAO6pC,eAAgB,CAGhC,IAFA,IAAI5M,EAEK1U,EAAI,EAAGA,EAAI4N,EAASz6B,OAAQ6sB,GAAK,EACxC,GAAI4N,EAAS5N,IAAM+gB,EAAa,CAC9BrM,EAAY1U,EACZ,KACF,CAIA+gB,EADE5mC,KAAKyW,IAAIgd,EAAS8G,GAAaqM,GAAe5mC,KAAKyW,IAAIgd,EAAS8G,EAAY,GAAKqM,IAA0C,SAA1B9X,EAAO4U,eAC5FjQ,EAAS8G,GAET9G,EAAS8G,EAAY,GAGrCqM,GAAeA,CACjB,CASA,GAPIE,GACFhY,EAAOgD,KAAK,iBAAiB,WAC3BhD,EAAOqP,SACT,IAIsB,IAApBrP,EAAOwX,UAOT,GALEG,EADE1T,EACiB/yB,KAAKyW,MAAMmwB,EAAc9X,EAAO4J,WAAa5J,EAAOwX,UAEpDtmC,KAAKyW,KAAKmwB,EAAc9X,EAAO4J,WAAa5J,EAAOwX,UAGpEhpC,EAAO6pC,eAAgB,CAQzB,IAAIC,EAAepnC,KAAKyW,KAAKsc,GAAO6T,EAAcA,GAAe9X,EAAO4J,WACpE2O,EAAmBvY,EAAO6E,gBAAgB7E,EAAOuJ,aAGnDoO,EADEW,EAAeC,EACE/pC,EAAO06B,MACjBoP,EAAe,EAAIC,EACM,IAAf/pC,EAAO06B,MAEQ,IAAf16B,EAAO06B,KAE9B,OACK,GAAI16B,EAAO6pC,eAEhB,YADArY,EAAO8P,iBAILthC,EAAO4pC,wBAA0BH,GACnCjY,EAAOsK,eAAeyN,GACtB/X,EAAOoJ,cAAcuO,GACrB3X,EAAO4M,aAAakL,GACpB9X,EAAOgO,iBAAgB,EAAMhO,EAAO4U,gBACpC5U,EAAOwN,WAAY,EACnBpL,EAAWxK,eAAc,WAClBoI,IAAUA,EAAOG,WAAczsB,EAAKyiC,sBACzCnW,EAAOe,KAAK,kBACZf,EAAOoJ,cAAc56B,EAAO06B,OAC5B93B,YAAW,WACT4uB,EAAO4M,aAAamL,GACpB3V,EAAWxK,eAAc,WAClBoI,IAAUA,EAAOG,WACtBH,EAAOpI,eACT,GACF,GAAG,GACL,KACSoI,EAAOwX,UAChBxX,EAAOsK,eAAewN,GACtB9X,EAAOoJ,cAAcuO,GACrB3X,EAAO4M,aAAakL,GACpB9X,EAAOgO,iBAAgB,EAAMhO,EAAO4U,gBAE/B5U,EAAOwN,YACVxN,EAAOwN,WAAY,EACnBpL,EAAWxK,eAAc,WAClBoI,IAAUA,EAAOG,WACtBH,EAAOpI,eACT,OAGFoI,EAAOe,KAAK,8BACZf,EAAOsK,eAAewN,IAGxB9X,EAAO4L,oBACP5L,EAAO8K,qBACT,KAAO,IAAIt8B,EAAO6pC,eAEhB,YADArY,EAAO8P,iBAEEthC,EAAOkoC,UAChB1W,EAAOe,KAAK,6BACd,GAEKvyB,EAAO2oC,kBAAoBF,GAAYzoC,EAAOgqC,gBACjDxY,EAAOsK,iBACPtK,EAAO4L,oBACP5L,EAAO8K,sBAIX,KA1LA,CAgMA,IAHA,IAAI2N,EAAY,EACZC,EAAY1Y,EAAO6E,gBAAgB,GAE9B16B,EAAI,EAAGA,EAAIy6B,EAAW16B,OAAQC,GAAKA,EAAIqE,EAAOg5B,mBAAqB,EAAIh5B,EAAOm4B,eAAgB,CACrG,IAAIgS,EAAaxuC,EAAIqE,EAAOg5B,mBAAqB,EAAI,EAAIh5B,EAAOm4B,eAEtB,qBAA/B/B,EAAWz6B,EAAIwuC,GACpB5B,GAAcnS,EAAWz6B,IAAM4sC,EAAanS,EAAWz6B,EAAIwuC,KAC7DF,EAAYtuC,EACZuuC,EAAY9T,EAAWz6B,EAAIwuC,GAAc/T,EAAWz6B,IAE7C4sC,GAAcnS,EAAWz6B,KAClCsuC,EAAYtuC,EACZuuC,EAAY9T,EAAWA,EAAW16B,OAAS,GAAK06B,EAAWA,EAAW16B,OAAS,GAEnF,CAGA,IAAI0uC,GAAS7B,EAAanS,EAAW6T,IAAcC,EAC/CvJ,EAAYsJ,EAAYjqC,EAAOg5B,mBAAqB,EAAI,EAAIh5B,EAAOm4B,eAEvE,GAAIsQ,EAAWzoC,EAAOgqC,aAAc,CAElC,IAAKhqC,EAAOqqC,WAEV,YADA7Y,EAAOkO,QAAQlO,EAAOuJ,aAIM,SAA1BvJ,EAAO4U,iBACLgE,GAASpqC,EAAOsqC,gBAAiB9Y,EAAOkO,QAAQuK,EAAYtJ,GAAgBnP,EAAOkO,QAAQuK,IAGnE,SAA1BzY,EAAO4U,iBACLgE,EAAQ,EAAIpqC,EAAOsqC,gBAAiB9Y,EAAOkO,QAAQuK,EAAYtJ,GAAgBnP,EAAOkO,QAAQuK,GAEtG,KAAO,CAEL,IAAKjqC,EAAOuqC,YAEV,YADA/Y,EAAOkO,QAAQlO,EAAOuJ,aAIxB,IAAIyP,EAAoBhZ,EAAOiZ,aAAe1vC,EAAE+L,SAAW0qB,EAAOiZ,WAAWC,QAAU3vC,EAAE+L,SAAW0qB,EAAOiZ,WAAWE,QAEjHH,EAQMzvC,EAAE+L,SAAW0qB,EAAOiZ,WAAWC,OACxClZ,EAAOkO,QAAQuK,EAAYtJ,GAE3BnP,EAAOkO,QAAQuK,IAVe,SAA1BzY,EAAO4U,gBACT5U,EAAOkO,QAAQuK,EAAYtJ,GAGC,SAA1BnP,EAAO4U,gBACT5U,EAAOkO,QAAQuK,GAOrB,CA5DA,CA3PoB,CAwTtB,CCnUe,SAASW,KACtB,IAAIpZ,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAChBoN,EAAKokB,EAAOpkB,GAChB,IAAIA,GAAyB,IAAnBA,EAAGsc,YAAb,CAEI1pB,EAAO6qC,aACTrZ,EAAOsZ,gBAIT,IAAI3K,EAAiB3O,EAAO2O,eACxBC,EAAiB5O,EAAO4O,eACxBjK,EAAW3E,EAAO2E,SAEtB3E,EAAO2O,gBAAiB,EACxB3O,EAAO4O,gBAAiB,EACxB5O,EAAOuD,aACPvD,EAAO4D,eACP5D,EAAO8K,uBAEuB,SAAzBt8B,EAAOw3B,eAA4Bx3B,EAAOw3B,cAAgB,IAAMhG,EAAO2K,QAAU3K,EAAO0K,cAAgB1K,EAAOxxB,OAAO+4B,eACzHvH,EAAOkO,QAAQlO,EAAOwE,OAAOt6B,OAAS,EAAG,GAAG,GAAO,GAEnD81B,EAAOkO,QAAQlO,EAAOuJ,YAAa,GAAG,GAAO,GAG3CvJ,EAAOuZ,UAAYvZ,EAAOuZ,SAASC,SAAWxZ,EAAOuZ,SAASE,QAChEzZ,EAAOuZ,SAASG,MAIlB1Z,EAAO4O,eAAiBA,EACxB5O,EAAO2O,eAAiBA,EAEpB3O,EAAOxxB,OAAOo6B,eAAiBjE,IAAa3E,EAAO2E,UACrD3E,EAAO6I,eAhC6B,CAkCxC,CCtCe,SAAS8Q,GAAQpwC,GAC9B,IAAIy2B,EAAS/zB,KACR+zB,EAAOsE,UAEPtE,EAAO2T,aACN3T,EAAOxxB,OAAOorC,eAAerwC,EAAEoP,iBAE/BqnB,EAAOxxB,OAAOqrC,0BAA4B7Z,EAAOwN,YACnDjkC,EAAE0sC,kBACF1sC,EAAEuwC,6BAGR,CCZe,SAASC,KACtB,IAAI/Z,EAAS/zB,KACT8gC,EAAY/M,EAAO+M,UACnB7I,EAAelE,EAAOkE,aACtBI,EAAUtE,EAAOsE,QACrB,GAAKA,EAAL,CAiBA,IAAIwI,EAhBJ9M,EAAOmN,kBAAoBnN,EAAO4J,UAE9B5J,EAAOwD,eAEPxD,EAAO4J,UADL1F,EACiB6I,EAAU8B,YAAc9B,EAAU7U,YAAc6U,EAAUrU,YAEzDqU,EAAUrU,WAGhCsH,EAAO4J,WAAamD,EAAUttB,WAIN,IAAtBugB,EAAO4J,YAAkB5J,EAAO4J,UAAY,GAChD5J,EAAO4L,oBACP5L,EAAO8K,sBAEP,IAAIN,EAAiBxK,EAAOyK,eAAiBzK,EAAOiK,eAGlD6C,EADqB,IAAnBtC,EACY,GAECxK,EAAO4J,UAAY5J,EAAOiK,gBAAkBO,EAGzDsC,IAAgB9M,EAAOqK,UACzBrK,EAAOsK,eAAepG,GAAgBlE,EAAO4J,UAAY5J,EAAO4J,WAGlE5J,EAAOe,KAAK,eAAgBf,EAAO4J,WAAW,EA9B1B,CA+BtB,CC7BA,IAAIoQ,IAAqB,EAEzB,SAASC,KAAsB,CAE/B,SAASC,KACP,IAAIla,EAAS/zB,KACTmB,EAAWsjB,IACXliB,EAASwxB,EAAOxxB,OAChB2rC,EAAcna,EAAOma,YACrBv+B,EAAKokB,EAAOpkB,GACZmxB,EAAY/M,EAAO+M,UACnBvP,EAASwC,EAAOxC,OAChBD,EAAUyC,EAAOzC,QACrByC,EAAOyS,aAAeA,GAAa1f,KAAKiN,GACxCA,EAAOoV,YAAcA,GAAYriB,KAAKiN,GACtCA,EAAO8W,WAAaA,GAAW/jB,KAAKiN,GAEhCxxB,EAAO05B,UACTlI,EAAO+Z,SAAWA,GAAShnB,KAAKiN,IAGlCA,EAAO2Z,QAAUA,GAAQ5mB,KAAKiN,GAC9B,IAAIzJ,IAAY/nB,EAAOwnC,OAEvB,IAAKzY,EAAQI,OAASJ,EAAQM,cAC5BjiB,EAAGjF,iBAAiBwjC,EAAYpwB,MAAOiW,EAAOyS,cAAc,GAC5DrlC,EAASuJ,iBAAiBwjC,EAAYC,KAAMpa,EAAOoV,YAAa7e,GAChEnpB,EAASuJ,iBAAiBwjC,EAAYnwB,IAAKgW,EAAO8W,YAAY,OACzD,CACL,GAAIvZ,EAAQI,MAAO,CACjB,IAAIM,IAAwC,eAAtBkc,EAAYpwB,QAA0BwT,EAAQU,kBAAmBzvB,EAAO6rC,mBAAmB,CAC/GC,SAAS,EACT/jB,SAAS,GAEX3a,EAAGjF,iBAAiBwjC,EAAYpwB,MAAOiW,EAAOyS,aAAcxU,GAC5DriB,EAAGjF,iBAAiBwjC,EAAYC,KAAMpa,EAAOoV,YAAa7X,EAAQU,gBAAkB,CAClFqc,SAAS,EACT/jB,QAASA,GACPA,GACJ3a,EAAGjF,iBAAiBwjC,EAAYnwB,IAAKgW,EAAO8W,WAAY7Y,GAEpDkc,EAAYI,QACd3+B,EAAGjF,iBAAiBwjC,EAAYI,OAAQva,EAAO8W,WAAY7Y,GAGxD+b,KACH5sC,EAASuJ,iBAAiB,aAAcsjC,IACxCD,IAAqB,EAEzB,EAEIxrC,EAAO6iC,gBAAkB7T,EAAOmB,MAAQnB,EAAOoB,SAAWpwB,EAAO6iC,gBAAkB9T,EAAQI,OAASH,EAAOmB,OAC7G/iB,EAAGjF,iBAAiB,YAAaqpB,EAAOyS,cAAc,GACtDrlC,EAASuJ,iBAAiB,YAAaqpB,EAAOoV,YAAa7e,GAC3DnpB,EAASuJ,iBAAiB,UAAWqpB,EAAO8W,YAAY,GAE5D,EAGItoC,EAAOorC,eAAiBprC,EAAOqrC,2BACjCj+B,EAAGjF,iBAAiB,QAASqpB,EAAO2Z,SAAS,GAG3CnrC,EAAO05B,SACT6E,EAAUp2B,iBAAiB,SAAUqpB,EAAO+Z,UAI1CvrC,EAAOgsC,qBACTxa,EAAO3oB,GAAGmmB,EAAOmB,KAAOnB,EAAOoB,QAAU,0CAA4C,wBAAyBwa,IAAU,GAExHpZ,EAAO3oB,GAAG,iBAAkB+hC,IAAU,EAE1C,CAEA,SAASqB,KACP,IAAIza,EAAS/zB,KACTmB,EAAWsjB,IACXliB,EAASwxB,EAAOxxB,OAChB2rC,EAAcna,EAAOma,YACrBv+B,EAAKokB,EAAOpkB,GACZmxB,EAAY/M,EAAO+M,UACnBvP,EAASwC,EAAOxC,OAChBD,EAAUyC,EAAOzC,QACjBhH,IAAY/nB,EAAOwnC,OAEvB,IAAKzY,EAAQI,OAASJ,EAAQM,cAC5BjiB,EAAG/E,oBAAoBsjC,EAAYpwB,MAAOiW,EAAOyS,cAAc,GAC/DrlC,EAASyJ,oBAAoBsjC,EAAYC,KAAMpa,EAAOoV,YAAa7e,GACnEnpB,EAASyJ,oBAAoBsjC,EAAYnwB,IAAKgW,EAAO8W,YAAY,OAC5D,CACL,GAAIvZ,EAAQI,MAAO,CACjB,IAAIM,IAAwC,iBAAtBkc,EAAYpwB,QAA4BwT,EAAQU,kBAAmBzvB,EAAO6rC,mBAAmB,CACjHC,SAAS,EACT/jB,SAAS,GAEX3a,EAAG/E,oBAAoBsjC,EAAYpwB,MAAOiW,EAAOyS,aAAcxU,GAC/DriB,EAAG/E,oBAAoBsjC,EAAYC,KAAMpa,EAAOoV,YAAa7e,GAC7D3a,EAAG/E,oBAAoBsjC,EAAYnwB,IAAKgW,EAAO8W,WAAY7Y,GAEvDkc,EAAYI,QACd3+B,EAAG/E,oBAAoBsjC,EAAYI,OAAQva,EAAO8W,WAAY7Y,EAElE,EAEIzvB,EAAO6iC,gBAAkB7T,EAAOmB,MAAQnB,EAAOoB,SAAWpwB,EAAO6iC,gBAAkB9T,EAAQI,OAASH,EAAOmB,OAC7G/iB,EAAG/E,oBAAoB,YAAampB,EAAOyS,cAAc,GACzDrlC,EAASyJ,oBAAoB,YAAampB,EAAOoV,YAAa7e,GAC9DnpB,EAASyJ,oBAAoB,UAAWmpB,EAAO8W,YAAY,GAE/D,EAGItoC,EAAOorC,eAAiBprC,EAAOqrC,2BACjCj+B,EAAG/E,oBAAoB,QAASmpB,EAAO2Z,SAAS,GAG9CnrC,EAAO05B,SACT6E,EAAUl2B,oBAAoB,SAAUmpB,EAAO+Z,UAIjD/Z,EAAOvtB,IAAI+qB,EAAOmB,KAAOnB,EAAOoB,QAAU,0CAA4C,wBAAyBwa,GACjH,CAEA,UACEc,aAAcA,GACdO,aAAcA,ICrID,SAASnB,KACtB,IAAItZ,EAAS/zB,KACTs9B,EAAcvJ,EAAOuJ,YACrBnJ,EAAcJ,EAAOI,YACrBsa,EAAuB1a,EAAOiP,aAC9BA,OAAwC,IAAzByL,EAAkC,EAAIA,EACrDlsC,EAASwxB,EAAOxxB,OAChB0zB,EAAMlC,EAAOkC,IACbmX,EAAc7qC,EAAO6qC,YACzB,GAAKA,KAAeA,GAAmD,IAApC1uC,OAAOP,KAAKivC,GAAanvC,QAA5D,CAEA,IAAIywC,EAAa3a,EAAO4a,cAAcvB,EAAarZ,EAAOxxB,OAAOqsC,gBAAiB7a,EAAOpkB,IACzF,GAAK++B,GAAc3a,EAAO8a,oBAAsBH,EAAhD,CACA,IAAII,EAAuBJ,KAActB,EAAcA,EAAYsB,QAAc/2B,EAE7Em3B,GACF,CAAC,gBAAiB,eAAgB,iBAAkB,qBAAsB,mBAAmBrsC,SAAQ,SAAUssC,GAC7G,IAAIC,EAAaF,EAAqBC,GACZ,qBAAfC,IAKTF,EAAqBC,GAHT,kBAAVA,GAA6C,SAAfC,GAAwC,SAAfA,EAEtC,kBAAVD,EACqB12B,WAAW22B,GAEXvX,SAASuX,EAAY,IAJrB,OAMlC,IAGF,IAAIC,EAAmBH,GAAwB/a,EAAOmb,eAClDC,EAAc5sC,EAAOs3B,gBAAkB,EACvCuV,EAAaH,EAAiBpV,gBAAkB,EAChDwV,EAAa9sC,EAAO81B,QAEpB8W,IAAgBC,GAClBnZ,EAAIjN,YAAYzmB,EAAO+sC,uBAAyB,YAAc/sC,EAAO+sC,uBAAyB,mBAC9Fvb,EAAOwb,yBACGJ,GAAeC,IACzBnZ,EAAIvN,SAASnmB,EAAO+sC,uBAAyB,aAEzCL,EAAiBjV,qBAAgE,WAAzCiV,EAAiBjV,sBAAqCiV,EAAiBjV,qBAAsD,WAA/Bz3B,EAAOy3B,sBAC/I/D,EAAIvN,SAASnmB,EAAO+sC,uBAAyB,mBAG/Cvb,EAAOwb,wBAGT,IAAIC,EAAmBP,EAAiBjN,WAAaiN,EAAiBjN,YAAcz/B,EAAOy/B,UACvFyN,EAAcltC,EAAO+8B,OAAS2P,EAAiBlV,gBAAkBx3B,EAAOw3B,eAAiByV,GAEzFA,GAAoBrb,GACtBJ,EAAO2b,kBAGT,GAAO3b,EAAOxxB,OAAQ0sC,GACtB,IAAIU,EAAY5b,EAAOxxB,OAAO81B,QAC9B,GAAOtE,EAAQ,CACbgV,eAAgBhV,EAAOxxB,OAAOwmC,eAC9BrG,eAAgB3O,EAAOxxB,OAAOmgC,eAC9BC,eAAgB5O,EAAOxxB,OAAOogC,iBAG5B0M,IAAeM,EACjB5b,EAAO6b,WACGP,GAAcM,GACxB5b,EAAO8b,SAGT9b,EAAO8a,kBAAoBH,EAC3B3a,EAAOe,KAAK,oBAAqBma,GAE7BQ,GAAetb,IACjBJ,EAAOkR,cACPlR,EAAOqQ,aACPrQ,EAAO4D,eACP5D,EAAOkO,QAAQ3E,EAAc0F,EAAejP,EAAOiP,aAAc,GAAG,IAGtEjP,EAAOe,KAAK,aAAcma,EAnEwC,CAHc,CAuElF,CChFe,SAASN,GAAcvB,EAAa/G,EAAMyJ,GAKvD,QAJa,IAATzJ,IACFA,EAAO,UAGJ+G,IAAwB,cAAT/G,GAAyByJ,GAA7C,CACA,IAAIpB,GAAa,EACb/sC,EAAS,IACTouC,EAAyB,WAAT1J,EAAoB1kC,EAAOquC,YAAcF,EAAY57B,aACrE+7B,EAASvxC,OAAOP,KAAKivC,GAAa7oC,KAAI,SAAU2rC,GAClD,GAAqB,kBAAVA,GAA6C,IAAvBA,EAAMj1B,QAAQ,KAAY,CACzD,IAAIk1B,EAAW93B,WAAW63B,EAAME,OAAO,IACnCrzC,EAAQgzC,EAAgBI,EAC5B,MAAO,CACLpzC,MAAOA,EACPmzC,MAAOA,EAEX,CAEA,MAAO,CACLnzC,MAAOmzC,EACPA,MAAOA,EAEX,IACAD,EAAOI,MAAK,SAAUvyC,EAAGC,GACvB,OAAO05B,SAAS35B,EAAEf,MAAO,IAAM06B,SAAS15B,EAAEhB,MAAO,GACnD,IAEA,IAAK,IAAImB,EAAI,EAAGA,EAAI+xC,EAAOhyC,OAAQC,GAAK,EAAG,CACzC,IAAIoyC,EAAYL,EAAO/xC,GACnBgyC,EAAQI,EAAUJ,MAClBnzC,EAAQuzC,EAAUvzC,MAET,WAATspC,EACE1kC,EAAO6jB,WAAW,eAAiBzoB,EAAQ,OAAOkS,UACpDy/B,EAAawB,GAENnzC,GAAS+yC,EAAYr0B,cAC9BizB,EAAawB,EAEjB,CAEA,OAAOxB,GAAc,KArCqD,CAsC5E,CC1CA,UACErB,cAAeA,GACfsB,cAAeA,ICJjB,SAAS4B,GAAerlC,EAAS2M,GAC/B,IAAI24B,EAAgB,GAYpB,OAXAtlC,EAAQzI,SAAQ,SAAUguC,GACJ,kBAATA,EACT/xC,OAAOP,KAAKsyC,GAAMhuC,SAAQ,SAAUqmB,GAC9B2nB,EAAK3nB,IACP0nB,EAActuC,KAAK2V,EAASiR,EAEhC,IACyB,kBAAT2nB,GAChBD,EAActuC,KAAK2V,EAAS44B,EAEhC,IACOD,CACT,CAEe,SAASE,KACtB,IAAI3c,EAAS/zB,KACT8oB,EAAaiL,EAAOjL,WACpBvmB,EAASwxB,EAAOxxB,OAChBy1B,EAAMjE,EAAOiE,IACb/B,EAAMlC,EAAOkC,IACb1E,EAASwC,EAAOxC,OAChBD,EAAUyC,EAAOzC,QAEjBqf,EAAWJ,GAAe,CAAC,cAAehuC,EAAOy/B,UAAW,CAC9D,iBAAkB1Q,EAAQM,gBAAkBN,EAAQI,OACnD,CACD,YAAanvB,EAAOkoC,UACnB,CACD,WAAcloC,EAAO07B,YACpB,CACD,IAAOjG,GACN,CACD,SAAYz1B,EAAOs3B,gBAAkB,GACpC,CACD,kBAAmBt3B,EAAOs3B,gBAAkB,GAAoC,WAA/Bt3B,EAAOy3B,qBACvD,CACD,QAAWzI,EAAOoB,SACjB,CACD,IAAOpB,EAAOmB,KACb,CACD,WAAYnwB,EAAO05B,UACjB15B,EAAO+sC,wBACXxmB,EAAW5mB,KAAKvE,MAAMmrB,EAAY6nB,GAClC1a,EAAIvN,SAAS,GAAG9Z,OAAOka,GAAY9nB,KAAK,MACxC+yB,EAAOwb,sBACT,CC/Ce,SAASqB,KACtB,IAAI7c,EAAS/zB,KACTi2B,EAAMlC,EAAOkC,IACbnN,EAAaiL,EAAOjL,WACxBmN,EAAIjN,YAAYF,EAAW9nB,KAAK,MAChC+yB,EAAOwb,sBACT,CCJA,UACEmB,WAAYA,GACZE,cAAeA,ICFF,SAASC,GAAUC,EAAShtC,EAAKitC,EAAQC,EAAOC,EAAkB3uC,GAC/E,IACI4uC,EADAvvC,EAAS,IAGb,SAASwvC,IACH7uC,GAAUA,GAChB,CAEA,IAAI8uC,EAAY,GAAEN,GAAShiB,OAAO,WAAW,GAExCsiB,GAAeN,EAAQO,UAAaJ,EAsBvCE,IArBIrtC,GACFotC,EAAQ,IAAIvvC,EAAOyjB,MACnB8rB,EAAMI,OAASH,EACfD,EAAMntC,QAAUotC,EAEZH,IACFE,EAAMF,MAAQA,GAGZD,IACFG,EAAMH,OAASA,GAGbjtC,IACFotC,EAAMptC,IAAMA,IAGdqtC,GAMN,CCpCe,SAASI,KACtB,IAAIxd,EAAS/zB,KAGb,SAASmxC,IACe,qBAAXpd,GAAqC,OAAXA,GAAoBA,IAAUA,EAAOG,iBAC9Cvc,IAAxBoc,EAAOyd,eAA4Bzd,EAAOyd,cAAgB,GAE1Dzd,EAAOyd,eAAiBzd,EAAO0d,aAAaxzC,SAC1C81B,EAAOxxB,OAAOmvC,qBAAqB3d,EAAO0R,SAC9C1R,EAAOe,KAAK,gBAEhB,CAVAf,EAAO0d,aAAe1d,EAAOkC,IAAIpsB,KAAK,OAYtC,IAAK,IAAI3L,EAAI,EAAGA,EAAI61B,EAAO0d,aAAaxzC,OAAQC,GAAK,EAAG,CACtD,IAAI4yC,EAAU/c,EAAO0d,aAAavzC,GAClC61B,EAAO8c,UAAUC,EAASA,EAAQa,YAAcb,EAAQ1iC,aAAa,OAAQ0iC,EAAQC,QAAUD,EAAQ1iC,aAAa,UAAW0iC,EAAQE,OAASF,EAAQ1iC,aAAa,UAAU,EAAM+iC,EACvL,CACF,CChBA,UACEN,UAAWA,GACXU,cAAeA,ICJjB,SAAS3U,KACP,IAAI7I,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAChBqvC,EAAY7d,EAAOsR,SACnBwM,EAAoB9d,EAAOwE,OAAOt6B,OAAS,GAAKsE,EAAOu2B,mBAAqBv2B,EAAO42B,cAAgBpF,EAAOwE,OAAOt6B,OAAS,GAAK81B,EAAOwE,OAAO,GAAGtM,YAAc8H,EAAOwE,OAAOt6B,OAE5KsE,EAAOu2B,oBAAsBv2B,EAAOy2B,mBAAqB6Y,EAC3D9d,EAAOsR,SAAWwM,GAAqB9d,EAAOnsB,KAE9CmsB,EAAOsR,SAAsC,IAA3BtR,EAAO2E,SAASz6B,OAGpC81B,EAAO2O,gBAAkB3O,EAAOsR,SAChCtR,EAAO4O,gBAAkB5O,EAAOsR,SAE5BuM,IAAc7d,EAAOsR,UAAUtR,EAAOe,KAAKf,EAAOsR,SAAW,OAAS,UAEtEuM,GAAaA,IAAc7d,EAAOsR,WACpCtR,EAAO2K,OAAQ,EACX3K,EAAOiZ,YAAYjZ,EAAOiZ,WAAWvH,SAE7C,CAEA,UACE7I,cAAeA,ICxBjB,IACE5H,MAAM,EACNgN,UAAW,aACX6E,kBAAmB,YACnBvE,aAAc,EACdrF,MAAO,IACPhB,SAAS,EACTsS,sBAAsB,EACtBtZ,gBAAgB,EAChB8U,QAAQ,EACR5Y,gBAAgB,EAChBkH,SAAS,EACTwQ,kBAAmB,wDAEnBjtB,MAAO,KACPkX,OAAQ,KAER0O,gCAAgC,EAEhC3c,UAAW,KACX/kB,IAAK,KAELqoC,oBAAoB,EACpBE,mBAAoB,GAEpBoC,UAAU,EACVS,kBAAkB,EAClBS,sBAAuB,EACvBQ,wBAAwB,EACxBD,4BAA6B,EAC7BT,8BAA+B,EAC/BW,gBAAgB,EAChBZ,wBAAyB,IAEzBvN,YAAY,EAEZxC,gBAAgB,EAEhBgF,kBAAkB,EAElBjF,OAAQ,QAGR4R,iBAAaz1B,EACbi3B,gBAAiB,SAEjBzV,aAAc,EACdY,cAAe,EACfF,gBAAiB,EACjBG,oBAAqB,SACrBU,eAAgB,EAChBa,mBAAoB,EACpBD,gBAAgB,EAChBY,sBAAsB,EACtBpD,mBAAoB,EAEpBE,kBAAmB,EAEnBgH,qBAAqB,EACrBzD,0BAA0B,EAE1BI,eAAe,EAEfzB,cAAc,EAEdkP,WAAY,EACZT,WAAY,GACZvE,eAAe,EACf0H,aAAa,EACbF,YAAY,EACZC,gBAAiB,GACjBN,aAAc,IACd/B,cAAc,EACdzB,gBAAgB,EAChBjF,UAAW,EACXgG,0BAA0B,EAC1Bd,0BAA0B,EAC1BC,+BAA+B,EAC/BM,qBAAqB,EAErBuI,mBAAmB,EAEnBvH,YAAY,EACZD,gBAAiB,IAEjBzN,qBAAqB,EACrBC,uBAAuB,EAEvBqN,YAAY,EAEZwD,eAAe,EACfC,0BAA0B,EAC1BrN,qBAAqB,EAErBgR,eAAe,EACfG,qBAAqB,EAErBpS,MAAM,EACNmF,qBAAsB,EACtBzB,aAAc,KACdqB,wBAAwB,EACxBlB,mBAAmB,EAEnBR,gBAAgB,EAChBD,gBAAgB,EAChBiF,aAAc,KAEdF,WAAW,EACXL,eAAgB,oBAChBG,kBAAmB,KAEnB6G,kBAAkB,EAElBkB,uBAAwB,oBAExB9W,WAAY,eACZgM,gBAAiB,+BACjBxF,iBAAkB,sBAClBG,0BAA2B,gCAC3BtB,kBAAmB,uBACnB0B,oBAAqB,yBACrBN,eAAgB,oBAChBG,wBAAyB,8BACzBF,eAAgB,oBAChBG,wBAAyB,8BACzB0S,aAAc,iBAEd7R,oBAAoB,EAEpB8R,cAAc,GCjIhB,SAASC,GAAkB5oC,EAAQyjB,GAAS,IAAK,IAAI5uB,EAAI,EAAGA,EAAI4uB,EAAM7uB,OAAQC,IAAK,CAAE,IAAIg0C,EAAaplB,EAAM5uB,GAAIg0C,EAAW9qB,WAAa8qB,EAAW9qB,aAAc,EAAO8qB,EAAWllC,cAAe,EAAU,UAAWklC,IAAYA,EAAW7qB,UAAW,GAAM3oB,OAAOqO,eAAe1D,EAAQ6oC,EAAWnzC,IAAKmzC,EAAa,CAAE,CAE5T,SAASC,GAAal4B,EAAam4B,EAAYC,GAAmJ,OAAhID,GAAYH,GAAkBh4B,EAAYtb,UAAWyzC,GAAiBC,GAAaJ,GAAkBh4B,EAAao4B,GAAqBp4B,CAAa,CA0BtN,IAAIq4B,GAAa,CACfC,QAASA,GACTC,cAAe,GACf/M,OAAQA,GACR9H,UAAWA,GACX5T,WAAY,GACZuQ,MAAOA,GACPgF,KAAMA,GACN6K,WAAY,GACZsI,aAAcA,GACdhpC,OAAQA,GACR2jC,YAAaA,GACbxQ,cAAe,GACfhU,QAASA,GACT8pB,OAAQ,IAENC,GAAmB,CAAC,EAEpBC,GAAsB,WACxB,SAASA,IAIP,IAHA,IAAIjjC,EACApN,EAEKomB,EAAO5B,UAAU9oB,OAAQ4N,EAAO,IAAIzN,MAAMuqB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/Ehd,EAAKgd,GAAQ9B,UAAU8B,GAczB,GAXoB,IAAhBhd,EAAK5N,QAAgB4N,EAAK,GAAG7N,aAAwE,WAAzDU,OAAOC,UAAUC,SAASE,KAAK+M,EAAK,IAAIH,MAAM,GAAI,GAChGnJ,EAASsJ,EAAK,IAEd8D,EAAK9D,EAAK,GACVtJ,EAASsJ,EAAK,IAGXtJ,IAAQA,EAAS,CAAC,GACvBA,EAAS,GAAO,CAAC,EAAGA,GAChBoN,IAAOpN,EAAOoN,KAAIpN,EAAOoN,GAAKA,GAE9BpN,EAAOoN,IAAM,GAAEpN,EAAOoN,IAAI1R,OAAS,EAAG,CACxC,IAAI40C,EAAU,GAOd,OANA,GAAEtwC,EAAOoN,IAAIkF,MAAK,SAAUi7B,GAC1B,IAAIgD,EAAY,GAAO,CAAC,EAAGvwC,EAAQ,CACjCoN,GAAImgC,IAEN+C,EAAQ3wC,KAAK,IAAI0wC,EAAOE,GAC1B,IACOD,CACT,CAGA,IAAI9e,EAAS/zB,KACb+zB,EAAOlD,YAAa,EACpBkD,EAAOzC,QAAUc,KACjB2B,EAAOxC,OAAS+B,GAAU,CACxBzO,UAAWtiB,EAAOsiB,YAEpBkP,EAAOvC,QAAUoC,KACjBG,EAAO+C,gBAAkB,CAAC,EAC1B/C,EAAOoD,mBAAqB,GAEE,qBAAnBpD,EAAOwC,UAChBxC,EAAOwC,QAAU,CAAC,GAGpB73B,OAAOP,KAAK41B,EAAOwC,SAAS9zB,SAAQ,SAAU+zB,GAC5C,IAAIjxB,EAASwuB,EAAOwC,QAAQC,GAE5B,GAAIjxB,EAAOhD,OAAQ,CACjB,IAAIwwC,EAAkBr0C,OAAOP,KAAKoH,EAAOhD,QAAQ,GAC7Co0B,EAAepxB,EAAOhD,OAAOwwC,GACjC,GAA4B,kBAAjBpc,GAA8C,OAAjBA,EAAuB,OAQ/D,GANI,CAAC,aAAc,aAAc,aAAa1b,QAAQ83B,IAAoB,IAAiC,IAA5BxwC,EAAOwwC,KACpFxwC,EAAOwwC,GAAmB,CACxB1hB,MAAM,MAIJ0hB,KAAmBxwC,MAAU,YAAao0B,GAAe,QAE/B,IAA5Bp0B,EAAOwwC,KACTxwC,EAAOwwC,GAAmB,CACxB1a,SAAS,IAI0B,kBAA5B91B,EAAOwwC,IAAmC,YAAaxwC,EAAOwwC,KACvExwC,EAAOwwC,GAAiB1a,SAAU,GAG/B91B,EAAOwwC,KAAkBxwC,EAAOwwC,GAAmB,CACtD1a,SAAS,GAEb,CACF,IAEA,IAAI2a,EAAe,GAAO,CAAC,EAAGC,IAsH9B,OArHAlf,EAAOsC,UAAU2c,GAEjBjf,EAAOxxB,OAAS,GAAO,CAAC,EAAGywC,EAAcL,GAAkBpwC,GAC3DwxB,EAAOmb,eAAiB,GAAO,CAAC,EAAGnb,EAAOxxB,QAC1CwxB,EAAOmf,aAAe,GAAO,CAAC,EAAG3wC,GAE7BwxB,EAAOxxB,QAAUwxB,EAAOxxB,OAAO6I,IACjC1M,OAAOP,KAAK41B,EAAOxxB,OAAO6I,IAAI3I,SAAQ,SAAU6E,GAC9CysB,EAAO3oB,GAAG9D,EAAWysB,EAAOxxB,OAAO6I,GAAG9D,GACxC,IAGEysB,EAAOxxB,QAAUwxB,EAAOxxB,OAAO20B,OACjCnD,EAAOmD,MAAMnD,EAAOxxB,OAAO20B,OAI7BnD,EAAOjoB,EAAI,GAEX,GAAOioB,EAAQ,CACbsE,QAAStE,EAAOxxB,OAAO81B,QACvB1oB,GAAIA,EAEJmZ,WAAY,GAEZyP,OAAQ,KACRI,WAAY,GACZD,SAAU,GACVE,gBAAiB,GAEjBrB,aAAc,WACZ,MAAmC,eAA5BxD,EAAOxxB,OAAOy/B,SACvB,EACAxK,WAAY,WACV,MAAmC,aAA5BzD,EAAOxxB,OAAOy/B,SACvB,EAEA1E,YAAa,EACbyB,UAAW,EAEXN,aAAa,EACbC,OAAO,EAEPf,UAAW,EACXuD,kBAAmB,EACnB9C,SAAU,EACVmN,SAAU,EACVhK,WAAW,EAEXmB,eAAgB3O,EAAOxxB,OAAOmgC,eAC9BC,eAAgB5O,EAAOxxB,OAAOogC,eAE9BuL,YAAa,WACX,IAAIxc,EAAQ,CAAC,aAAc,YAAa,WAAY,eAChDyhB,EAAU,CAAC,YAAa,YAAa,WAiBzC,OAfIpf,EAAOzC,QAAQM,gBACjBuhB,EAAU,CAAC,cAAe,cAAe,cAG3Cpf,EAAOqf,iBAAmB,CACxBt1B,MAAO4T,EAAM,GACbyc,KAAMzc,EAAM,GACZ3T,IAAK2T,EAAM,GACX4c,OAAQ5c,EAAM,IAEhBqC,EAAOsf,mBAAqB,CAC1Bv1B,MAAOq1B,EAAQ,GACfhF,KAAMgF,EAAQ,GACdp1B,IAAKo1B,EAAQ,IAERpf,EAAOzC,QAAQI,QAAUqC,EAAOxxB,OAAO6iC,cAAgBrR,EAAOqf,iBAAmBrf,EAAOsf,kBACjG,CApBa,GAqBb5M,gBAAiB,CACfQ,eAAWtvB,EACXuvB,aAASvvB,EACT4wB,yBAAqB5wB,EACrB+wB,oBAAgB/wB,EAChB6wB,iBAAa7wB,EACb+oB,sBAAkB/oB,EAClBsyB,oBAAgBtyB,EAChBixB,wBAAoBjxB,EAEpBkxB,kBAAmB9U,EAAOxxB,OAAOsmC,kBAEjCoC,cAAehc,KACfqkB,kBAAc37B,EAEd+yB,WAAY,GACZR,yBAAqBvyB,EACrBmvB,kBAAcnvB,EACd8wB,iBAAa9wB,GAGf+vB,YAAY,EAEZqB,eAAgBhV,EAAOxxB,OAAOwmC,eAC9BrC,QAAS,CACPuB,OAAQ,EACRC,OAAQ,EACRN,SAAU,EACVG,SAAU,EACVjD,KAAM,GAGR2M,aAAc,GACdD,aAAc,IAGhBzd,EAAO0C,aACP1C,EAAOe,KAAK,WAERf,EAAOxxB,OAAOyyB,MAChBjB,EAAOiB,OAIFjB,CACT,CAEA,IAAIwf,EAASX,EAAOj0C,UAsYpB,OApYA40C,EAAO1D,OAAS,WACd,IAAI9b,EAAS/zB,KACT+zB,EAAOsE,UACXtE,EAAOsE,SAAU,EAEbtE,EAAOxxB,OAAO4nC,YAChBpW,EAAOmR,gBAGTnR,EAAOe,KAAK,UACd,EAEAye,EAAO3D,QAAU,WACf,IAAI7b,EAAS/zB,KACR+zB,EAAOsE,UACZtE,EAAOsE,SAAU,EAEbtE,EAAOxxB,OAAO4nC,YAChBpW,EAAOwR,kBAGTxR,EAAOe,KAAK,WACd,EAEAye,EAAOC,YAAc,SAAqBpV,EAAUnB,GAClD,IAAIlJ,EAAS/zB,KACbo+B,EAAWn5B,KAAKkW,IAAIlW,KAAKiW,IAAIkjB,EAAU,GAAI,GAC3C,IAAIjjB,EAAM4Y,EAAOiK,eACb9iB,EAAM6Y,EAAOyK,eACbiV,GAAWv4B,EAAMC,GAAOijB,EAAWjjB,EACvC4Y,EAAOoN,YAAYsS,EAA0B,qBAAVxW,EAAwB,EAAIA,GAC/DlJ,EAAO4L,oBACP5L,EAAO8K,qBACT,EAEA0U,EAAOhE,qBAAuB,WAC5B,IAAIxb,EAAS/zB,KACb,GAAK+zB,EAAOxxB,OAAOyvC,cAAiBje,EAAOpkB,GAA3C,CACA,IAAIiZ,EAAUmL,EAAOpkB,GAAGyF,UAAU7G,MAAM,KAAKP,QAAO,SAAUoH,GAC5D,OAAiD,IAA1CA,EAAU6F,QAAQ,qBAAyF,IAA5D7F,EAAU6F,QAAQ8Y,EAAOxxB,OAAO+sC,uBACxF,IACAvb,EAAOe,KAAK,oBAAqBlM,EAAQ5nB,KAAK,KAJO,CAKvD,EAEAuyC,EAAOG,gBAAkB,SAAyBC,GAChD,IAAI5f,EAAS/zB,KACb,OAAO2zC,EAAQv+B,UAAU7G,MAAM,KAAKP,QAAO,SAAUoH,GACnD,OAA6C,IAAtCA,EAAU6F,QAAQ,iBAAyE,IAAhD7F,EAAU6F,QAAQ8Y,EAAOxxB,OAAOi2B,WACpF,IAAGx3B,KAAK,IACV,EAEAuyC,EAAO7T,kBAAoB,WACzB,IAAI3L,EAAS/zB,KACb,GAAK+zB,EAAOxxB,OAAOyvC,cAAiBje,EAAOpkB,GAA3C,CACA,IAAIikC,EAAU,GACd7f,EAAOwE,OAAO1jB,MAAK,SAAU8+B,GAC3B,IAAI7qB,EAAaiL,EAAO2f,gBAAgBC,GACxCC,EAAQ1xC,KAAK,CACXyxC,QAASA,EACT7qB,WAAYA,IAEdiL,EAAOe,KAAK,cAAe6e,EAAS7qB,EACtC,IACAiL,EAAOe,KAAK,gBAAiB8e,EAVwB,CAWvD,EAEAL,EAAOrP,qBAAuB,WAC5B,IAAInQ,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAChBg2B,EAASxE,EAAOwE,OAChBI,EAAa5E,EAAO4E,WACpBZ,EAAahE,EAAOnsB,KACpB01B,EAAcvJ,EAAOuJ,YACrBuW,EAAM,EAEV,GAAItxC,EAAO+4B,eAAgB,CAIzB,IAHA,IACIwY,EADAva,EAAYhB,EAAO+E,GAAajC,gBAG3Bn9B,EAAIo/B,EAAc,EAAGp/B,EAAIq6B,EAAOt6B,OAAQC,GAAK,EAChDq6B,EAAOr6B,KAAO41C,IAChBva,GAAahB,EAAOr6B,GAAGm9B,gBACvBwY,GAAO,EACHta,EAAYxB,IAAY+b,GAAY,IAI5C,IAAK,IAAIpY,EAAK4B,EAAc,EAAG5B,GAAM,EAAGA,GAAM,EACxCnD,EAAOmD,KAAQoY,IACjBva,GAAahB,EAAOmD,GAAIL,gBACxBwY,GAAO,EACHta,EAAYxB,IAAY+b,GAAY,GAG9C,MACE,IAAK,IAAIlY,EAAM0B,EAAc,EAAG1B,EAAMrD,EAAOt6B,OAAQ29B,GAAO,EACtDjD,EAAWiD,GAAOjD,EAAW2E,GAAevF,IAC9C8b,GAAO,GAKb,OAAOA,CACT,EAEAN,EAAO9N,OAAS,WACd,IAAI1R,EAAS/zB,KACb,GAAK+zB,IAAUA,EAAOG,UAAtB,CACA,IAoBI6f,EApBArb,EAAW3E,EAAO2E,SAClBn2B,EAASwxB,EAAOxxB,OAEhBA,EAAO6qC,aACTrZ,EAAOsZ,gBAGTtZ,EAAOuD,aACPvD,EAAO4D,eACP5D,EAAOsK,iBACPtK,EAAO8K,sBAYH9K,EAAOxxB,OAAOkoC,UAChB9J,IAEI5M,EAAOxxB,OAAO07B,YAChBlK,EAAOiJ,qBAIP+W,GADmC,SAAhChgB,EAAOxxB,OAAOw3B,eAA4BhG,EAAOxxB,OAAOw3B,cAAgB,IAAMhG,EAAO2K,QAAU3K,EAAOxxB,OAAO+4B,eACnGvH,EAAOkO,QAAQlO,EAAOwE,OAAOt6B,OAAS,EAAG,GAAG,GAAO,GAEnD81B,EAAOkO,QAAQlO,EAAOuJ,YAAa,GAAG,GAAO,GAGvDyW,GACHpT,KAIAp+B,EAAOo6B,eAAiBjE,IAAa3E,EAAO2E,UAC9C3E,EAAO6I,gBAGT7I,EAAOe,KAAK,SA7C2B,CAavC,SAAS6L,IACP,IAAIqT,EAAiBjgB,EAAOkE,cAAmC,EAApBlE,EAAO4J,UAAiB5J,EAAO4J,UACtE8D,EAAex8B,KAAKkW,IAAIlW,KAAKiW,IAAI84B,EAAgBjgB,EAAOyK,gBAAiBzK,EAAOiK,gBACpFjK,EAAO4M,aAAac,GACpB1N,EAAO4L,oBACP5L,EAAO8K,qBACT,CA2BF,EAEA0U,EAAO7D,gBAAkB,SAAyBuE,EAAcC,QAC3C,IAAfA,IACFA,GAAa,GAGf,IAAIngB,EAAS/zB,KACTm0C,EAAmBpgB,EAAOxxB,OAAOy/B,UAOrC,OALKiS,IAEHA,EAAoC,eAArBE,EAAoC,WAAa,cAG9DF,IAAiBE,GAAqC,eAAjBF,GAAkD,aAAjBA,IAI1ElgB,EAAOkC,IAAIjN,YAAY,GAAK+K,EAAOxxB,OAAO+sC,uBAAyB6E,GAAkBzrB,SAAS,GAAKqL,EAAOxxB,OAAO+sC,uBAAyB2E,GAC1IlgB,EAAOwb,uBACPxb,EAAOxxB,OAAOy/B,UAAYiS,EAC1BlgB,EAAOwE,OAAO1jB,MAAK,SAAU8+B,GACN,aAAjBM,EACFN,EAAQrgC,MAAMsI,MAAQ,GAEtB+3B,EAAQrgC,MAAMwf,OAAS,EAE3B,IACAiB,EAAOe,KAAK,mBACRof,GAAYngB,EAAO0R,UAdd1R,CAgBX,EAEAwf,EAAOa,MAAQ,SAAezkC,GAC5B,IAAIokB,EAAS/zB,KACb,GAAI+zB,EAAOsgB,QAAS,OAAO,EAE3B,IAAIpe,EAAM,GAAEtmB,GAAMokB,EAAOxxB,OAAOoN,IAGhC,GAFAA,EAAKsmB,EAAI,IAEJtmB,EACH,OAAO,EAGTA,EAAGokB,OAASA,EAEZ,IAAIugB,EAAqB,WACvB,MAAO,KAAOvgB,EAAOxxB,OAAOwvC,cAAgB,IAAItjC,OAAOF,MAAM,KAAKvN,KAAK,IACzE,EAEIuzC,EAAa,WACf,GAAI5kC,GAAMA,EAAG03B,YAAc13B,EAAG03B,WAAWrjC,cAAe,CACtD,IAAIgkB,EAAM,GAAErY,EAAG03B,WAAWrjC,cAAcswC,MAMxC,OAJAtsB,EAAIjZ,SAAW,SAAU1O,GACvB,OAAO41B,EAAIlnB,SAAS1O,EACtB,EAEO2nB,CACT,CAEA,OAAOiO,EAAIlnB,SAASulC,IACtB,EAGIne,EAAaoe,IAEjB,GAA0B,IAAtBpe,EAAWl4B,QAAgB81B,EAAOxxB,OAAO4uB,eAAgB,CAC3D,IAAIhwB,EAAWsjB,IACX+vB,EAAUrzC,EAASsC,cAAc,OACrC0yB,EAAa,GAAEqe,GACfA,EAAQp/B,UAAY2e,EAAOxxB,OAAOwvC,aAClC9b,EAAI/xB,OAAOswC,GACXve,EAAIlnB,SAAS,IAAMglB,EAAOxxB,OAAOi2B,YAAY3jB,MAAK,SAAU8+B,GAC1Dxd,EAAWjyB,OAAOyvC,EACpB,GACF,CAaA,OAXA,GAAO5f,EAAQ,CACbkC,IAAKA,EACLtmB,GAAIA,EACJwmB,WAAYA,EACZ2K,UAAW3K,EAAW,GACtBke,SAAS,EAETrc,IAA8B,QAAzBroB,EAAGmK,IAAIjW,eAAoD,QAAzBoyB,EAAIpJ,IAAI,aAC/CoL,aAA0C,eAA5BlE,EAAOxxB,OAAOy/B,YAAwD,QAAzBryB,EAAGmK,IAAIjW,eAAoD,QAAzBoyB,EAAIpJ,IAAI,cACrGqL,SAAwC,gBAA9B/B,EAAWtJ,IAAI,cAEpB,CACT,EAEA0mB,EAAOve,KAAO,SAAcrlB,GAC1B,IAAIokB,EAAS/zB,KACb,GAAI+zB,EAAOI,YAAa,OAAOJ,EAC/B,IAAIsgB,EAAUtgB,EAAOqgB,MAAMzkC,GAC3B,OAAgB,IAAZ0kC,IACJtgB,EAAOe,KAAK,cAERf,EAAOxxB,OAAO6qC,aAChBrZ,EAAOsZ,gBAITtZ,EAAO2c,aAEH3c,EAAOxxB,OAAO+8B,MAChBvL,EAAOqQ,aAITrQ,EAAOuD,aAEPvD,EAAO4D,eAEH5D,EAAOxxB,OAAOo6B,eAChB5I,EAAO6I,gBAIL7I,EAAOxxB,OAAO4nC,YAAcpW,EAAOsE,SACrCtE,EAAOmR,gBAGLnR,EAAOxxB,OAAOgvC,eAChBxd,EAAOwd,gBAILxd,EAAOxxB,OAAO+8B,KAChBvL,EAAOkO,QAAQlO,EAAOxxB,OAAO+/B,aAAevO,EAAOiP,aAAc,EAAGjP,EAAOxxB,OAAO29B,oBAAoB,GAAO,GAE7GnM,EAAOkO,QAAQlO,EAAOxxB,OAAO+/B,aAAc,EAAGvO,EAAOxxB,OAAO29B,oBAAoB,GAAO,GAIzFnM,EAAOka,eAEPla,EAAOI,aAAc,EAErBJ,EAAOe,KAAK,QACZf,EAAOe,KAAK,cA7CkBf,CA+ChC,EAEAwf,EAAOre,QAAU,SAAiBuf,EAAgBC,QACzB,IAAnBD,IACFA,GAAiB,QAGC,IAAhBC,IACFA,GAAc,GAGhB,IAAI3gB,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAChB0zB,EAAMlC,EAAOkC,IACbE,EAAapC,EAAOoC,WACpBoC,EAASxE,EAAOwE,OAEpB,MAA6B,qBAAlBxE,EAAOxxB,QAA0BwxB,EAAOG,YAInDH,EAAOe,KAAK,iBAEZf,EAAOI,aAAc,EAErBJ,EAAOya,eAEHjsC,EAAO+8B,MACTvL,EAAOkR,cAILyP,IACF3gB,EAAO6c,gBACP3a,EAAIpM,WAAW,SACfsM,EAAWtM,WAAW,SAElB0O,GAAUA,EAAOt6B,QACnBs6B,EAAOvP,YAAY,CAACzmB,EAAOs7B,kBAAmBt7B,EAAOy8B,iBAAkBz8B,EAAO08B,eAAgB18B,EAAO28B,gBAAgBl+B,KAAK,MAAM6oB,WAAW,SAASA,WAAW,4BAInKkK,EAAOe,KAAK,WAEZp2B,OAAOP,KAAK41B,EAAO+C,iBAAiBr0B,SAAQ,SAAU6E,GACpDysB,EAAOvtB,IAAIc,EACb,KAEuB,IAAnBmtC,IACF1gB,EAAOkC,IAAI,GAAGlC,OAAS,KACvBhF,GAAYgF,IAGdA,EAAOG,WAAY,GAnCV,IAqCX,EAEA0e,EAAO+B,eAAiB,SAAwBC,GAC9C,GAAOjC,GAAkBiC,EAC3B,EAEAhC,EAAOiC,cAAgB,SAAuBtvC,GACvCqtC,EAAOj0C,UAAU43B,UAASqc,EAAOj0C,UAAU43B,QAAU,CAAC,GAC3D,IAAIz0B,EAAOyD,EAAOzD,MAAQpD,OAAOP,KAAKy0C,EAAOj0C,UAAU43B,SAASt4B,OAAS,IAAMgxB,KAC/E2jB,EAAOj0C,UAAU43B,QAAQz0B,GAAQyD,CACnC,EAEAqtC,EAAOkC,IAAM,SAAavvC,GACxB,OAAInH,MAAMC,QAAQkH,IAChBA,EAAO9C,SAAQ,SAAUQ,GACvB,OAAO2vC,EAAOiC,cAAc5xC,EAC9B,IACO2vC,IAGTA,EAAOiC,cAActvC,GACdqtC,EACT,EAEAT,GAAaS,EAAQ,KAAM,CAAC,CAC1B7zC,IAAK,mBACLoI,IAAK,WACH,OAAOwrC,EACT,GACC,CACD5zC,IAAK,WACLoI,IAAK,WACH,OAAO8rC,EACT,KAGKL,CACT,CA9kB0B,GAglB1Bl0C,OAAOP,KAAKm0C,IAAY7vC,SAAQ,SAAUsyC,GACxCr2C,OAAOP,KAAKm0C,GAAWyC,IAAiBtyC,SAAQ,SAAUuyC,GACxDpC,GAAOj0C,UAAUq2C,GAAe1C,GAAWyC,GAAgBC,EAC7D,GACF,IACApC,GAAOkC,IAAI,CAAC,GAAQ,KACpB,YCpoBA,SAAS,KAA2Q,OAA9P,GAAWp2C,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAI5T,IAAIkuB,GAAU,CACZxP,OAAQ,SAAgByP,GACtB,IAAInhB,EAAS/zB,KACTm1C,EAAiBphB,EAAOxxB,OACxBw3B,EAAgBob,EAAepb,cAC/BW,EAAiBya,EAAeza,eAChCY,EAAiB6Z,EAAe7Z,eAChC8Z,EAAwBrhB,EAAOxxB,OAAO61B,QACtCid,EAAkBD,EAAsBC,gBACxCC,EAAiBF,EAAsBE,eACvCC,EAAkBxhB,EAAOqE,QACzBod,EAAeD,EAAgB1tC,KAC/B4tC,EAAaF,EAAgBnlB,GAC7BmI,EAASgd,EAAgBhd,OACzBmd,EAAqBH,EAAgB5c,WACrCgd,EAAcJ,EAAgBI,YAC9BC,EAAiBL,EAAgBppB,OACrC4H,EAAO4L,oBACP,IACIkW,EAEAC,EACAC,EAJAzY,EAAcvJ,EAAOuJ,aAAe,EAEfuY,EAArB9hB,EAAOkE,aAA2B,QAA0BlE,EAAOwD,eAAiB,OAAS,MAI7F+D,GACFwa,EAAc7wC,KAAK6S,MAAMiiB,EAAgB,GAAKW,EAAiB4a,EAC/DS,EAAe9wC,KAAK6S,MAAMiiB,EAAgB,GAAKW,EAAiB2a,IAEhES,EAAc/b,GAAiBW,EAAiB,GAAK4a,EACrDS,EAAerb,EAAiB2a,GAGlC,IAAIxtC,EAAO5C,KAAKiW,KAAKoiB,GAAe,GAAKyY,EAAc,GACnD3lB,EAAKnrB,KAAKkW,KAAKmiB,GAAe,GAAKwY,EAAavd,EAAOt6B,OAAS,GAChEkuB,GAAU4H,EAAO4E,WAAW9wB,IAAS,IAAMksB,EAAO4E,WAAW,IAAM,GAQvE,SAASqd,IACPjiB,EAAO4D,eACP5D,EAAOsK,iBACPtK,EAAO8K,sBAEH9K,EAAOkiB,MAAQliB,EAAOxxB,OAAO0zC,KAAK5d,SACpCtE,EAAOkiB,KAAK30C,MAEhB,CAEA,GAjBA,GAAOyyB,EAAOqE,QAAS,CACrBvwB,KAAMA,EACNuoB,GAAIA,EACJjE,OAAQA,EACRwM,WAAY5E,EAAO4E,aAajB6c,IAAiB3tC,GAAQ4tC,IAAerlB,IAAO8kB,EAMjD,OALInhB,EAAO4E,aAAe+c,GAAsBvpB,IAAWypB,GACzD7hB,EAAOwE,OAAO1L,IAAIgpB,EAAY1pB,EAAS,WAGzC4H,EAAOsK,iBAIT,GAAItK,EAAOxxB,OAAO61B,QAAQ8d,eAoBxB,OAnBAniB,EAAOxxB,OAAO61B,QAAQ8d,eAAep3C,KAAKi1B,EAAQ,CAChD5H,OAAQA,EACRtkB,KAAMA,EACNuoB,GAAIA,EACJmI,OAAQ,WAGN,IAFA,IAAI4d,EAAiB,GAEZj4C,EAAI2J,EAAM3J,GAAKkyB,EAAIlyB,GAAK,EAC/Bi4C,EAAej0C,KAAKq2B,EAAOr6B,IAG7B,OAAOi4C,CACT,CARQ,UAWNpiB,EAAOxxB,OAAO61B,QAAQge,sBACxBJ,KAMJ,IAAIK,EAAiB,GACjBC,EAAgB,GAEpB,GAAIpB,EACFnhB,EAAOoC,WAAWtsB,KAAK,IAAMkqB,EAAOxxB,OAAOi2B,YAAYn3B,cAEvD,IAAK,IAAInD,EAAIs3C,EAAct3C,GAAKu3C,EAAYv3C,GAAK,GAC3CA,EAAI2J,GAAQ3J,EAAIkyB,IAClB2D,EAAOoC,WAAWtsB,KAAK,IAAMkqB,EAAOxxB,OAAOi2B,WAAa,6BAAgCt6B,EAAI,MAAOmD,SAKzG,IAAK,IAAIq6B,EAAK,EAAGA,EAAKnD,EAAOt6B,OAAQy9B,GAAM,EACrCA,GAAM7zB,GAAQ6zB,GAAMtL,IACI,qBAAfqlB,GAA8BP,EACvCoB,EAAcp0C,KAAKw5B,IAEfA,EAAK+Z,GAAYa,EAAcp0C,KAAKw5B,GACpCA,EAAK8Z,GAAca,EAAen0C,KAAKw5B,KAKjD4a,EAAc7zC,SAAQ,SAAUuY,GAC9B+Y,EAAOoC,WAAWjyB,OAAOyxC,EAAYpd,EAAOvd,GAAQA,GACtD,IACAq7B,EAAehG,MAAK,SAAUvyC,EAAGC,GAC/B,OAAOA,EAAID,CACb,IAAG2E,SAAQ,SAAUuY,GACnB+Y,EAAOoC,WAAWvI,QAAQ+nB,EAAYpd,EAAOvd,GAAQA,GACvD,IACA+Y,EAAOoC,WAAWpnB,SAAS,iBAAiB8d,IAAIgpB,EAAY1pB,EAAS,MACrE6pB,GACF,EACAL,YAAa,SAAqBrb,EAAOtf,GACvC,IAAI+Y,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAAO61B,QAE3B,GAAI71B,EAAOg0C,OAASxiB,EAAOqE,QAAQme,MAAMv7B,GACvC,OAAO+Y,EAAOqE,QAAQme,MAAMv7B,GAG9B,IAAIw7B,EAAWj0C,EAAOozC,YAAc,GAAEpzC,EAAOozC,YAAY72C,KAAKi1B,EAAQuG,EAAOtf,IAAU,GAAE,eAAkB+Y,EAAOxxB,OAAOi2B,WAAa,8BAAkCxd,EAAQ,KAAQsf,EAAQ,UAGhM,OAFKkc,EAAS9sB,KAAK,4BAA4B8sB,EAAS9sB,KAAK,0BAA2B1O,GACpFzY,EAAOg0C,QAAOxiB,EAAOqE,QAAQme,MAAMv7B,GAASw7B,GACzCA,CACT,EACAhR,YAAa,SAAqBjN,GAChC,IAAIxE,EAAS/zB,KAEb,GAAsB,kBAAXu4B,GAAuB,WAAYA,EAC5C,IAAK,IAAIr6B,EAAI,EAAGA,EAAIq6B,EAAOt6B,OAAQC,GAAK,EAClCq6B,EAAOr6B,IAAI61B,EAAOqE,QAAQG,OAAOr2B,KAAKq2B,EAAOr6B,SAGnD61B,EAAOqE,QAAQG,OAAOr2B,KAAKq2B,GAG7BxE,EAAOqE,QAAQqN,QAAO,EACxB,EACAC,aAAc,SAAsBnN,GAClC,IAAIxE,EAAS/zB,KACTs9B,EAAcvJ,EAAOuJ,YACrBsC,EAAiBtC,EAAc,EAC/BmZ,EAAoB,EAExB,GAAIr4C,MAAMC,QAAQk6B,GAAS,CACzB,IAAK,IAAIr6B,EAAI,EAAGA,EAAIq6B,EAAOt6B,OAAQC,GAAK,EAClCq6B,EAAOr6B,IAAI61B,EAAOqE,QAAQG,OAAO7N,QAAQ6N,EAAOr6B,IAGtD0hC,EAAiBtC,EAAc/E,EAAOt6B,OACtCw4C,EAAoBle,EAAOt6B,MAC7B,MACE81B,EAAOqE,QAAQG,OAAO7N,QAAQ6N,GAGhC,GAAIxE,EAAOxxB,OAAO61B,QAAQme,MAAO,CAC/B,IAAIA,EAAQxiB,EAAOqE,QAAQme,MACvBG,EAAW,CAAC,EAChBh4C,OAAOP,KAAKo4C,GAAO9zC,SAAQ,SAAUk0C,GACnC,IAAIC,EAAYL,EAAMI,GAClBE,EAAgBD,EAAUltB,KAAK,2BAE/BmtB,GACFD,EAAUltB,KAAK,0BAA2B+N,SAASof,EAAe,IAAM,GAG1EH,EAASjf,SAASkf,EAAa,IAAMF,GAAqBG,CAC5D,IACA7iB,EAAOqE,QAAQme,MAAQG,CACzB,CAEA3iB,EAAOqE,QAAQqN,QAAO,GACtB1R,EAAOkO,QAAQrC,EAAgB,EACjC,EACAoG,YAAa,SAAqBC,GAChC,IAAIlS,EAAS/zB,KACb,GAA6B,qBAAlBimC,GAAmD,OAAlBA,EAA5C,CACA,IAAI3I,EAAcvJ,EAAOuJ,YAEzB,GAAIl/B,MAAMC,QAAQ4nC,GAChB,IAAK,IAAI/nC,EAAI+nC,EAAchoC,OAAS,EAAGC,GAAK,EAAGA,GAAK,EAClD61B,EAAOqE,QAAQG,OAAOjN,OAAO2a,EAAc/nC,GAAI,GAE3C61B,EAAOxxB,OAAO61B,QAAQme,cACjBxiB,EAAOqE,QAAQme,MAAMtQ,EAAc/nC,IAGxC+nC,EAAc/nC,GAAKo/B,IAAaA,GAAe,GACnDA,EAAcr4B,KAAKiW,IAAIoiB,EAAa,QAGtCvJ,EAAOqE,QAAQG,OAAOjN,OAAO2a,EAAe,GAExClS,EAAOxxB,OAAO61B,QAAQme,cACjBxiB,EAAOqE,QAAQme,MAAMtQ,GAG1BA,EAAgB3I,IAAaA,GAAe,GAChDA,EAAcr4B,KAAKiW,IAAIoiB,EAAa,GAGtCvJ,EAAOqE,QAAQqN,QAAO,GACtB1R,EAAOkO,QAAQ3E,EAAa,EA1B8C,CA2B5E,EACA6I,gBAAiB,WACf,IAAIpS,EAAS/zB,KACb+zB,EAAOqE,QAAQG,OAAS,GAEpBxE,EAAOxxB,OAAO61B,QAAQme,QACxBxiB,EAAOqE,QAAQme,MAAQ,CAAC,GAG1BxiB,EAAOqE,QAAQqN,QAAO,GACtB1R,EAAOkO,QAAQ,EAAG,EACpB,GAEF,UACEngC,KAAM,UACNS,OAAQ,CACN61B,QAAS,CACPC,SAAS,EACTE,OAAQ,GACRge,OAAO,EACPZ,YAAa,KACbO,eAAgB,KAChBE,sBAAsB,EACtBf,gBAAiB,EACjBC,eAAgB,IAGpBvvB,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxBqE,QAAS,GAAS,CAAC,EAAG6c,GAAS,CAC7B1c,OAAQxE,EAAOxxB,OAAO61B,QAAQG,OAC9Bge,MAAO,CAAC,KAGd,EACAnrC,GAAI,CACF0rC,WAAY,SAAoB/iB,GAC9B,GAAKA,EAAOxxB,OAAO61B,QAAQC,QAA3B,CACAtE,EAAOjL,WAAW5mB,KAAK6xB,EAAOxxB,OAAO+sC,uBAAyB,WAC9D,IAAIyH,EAAkB,CACpBla,qBAAqB,GAEvB,GAAO9I,EAAOxxB,OAAQw0C,GACtB,GAAOhjB,EAAOmb,eAAgB6H,GAEzBhjB,EAAOxxB,OAAO+/B,cACjBvO,EAAOqE,QAAQqN,QATyB,CAW5C,EACA9E,aAAc,SAAsB5M,GAC7BA,EAAOxxB,OAAO61B,QAAQC,SAC3BtE,EAAOqE,QAAQqN,QACjB,IC3QJ,SAAS,KAA2Q,OAA9P,GAAW/mC,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAM5T,IAAIiwB,GAAW,CACbC,OAAQ,SAAgBvyC,GACtB,IAAIqvB,EAAS/zB,KACb,GAAK+zB,EAAOsE,QAAZ,CACA,IAAI12B,EAAS,IACTR,EAAWsjB,IACXuT,EAAMjE,EAAOkE,aACb36B,EAAIoH,EACJpH,EAAEqpC,gBAAerpC,EAAIA,EAAEqpC,eAE3B,IAAIuQ,EAAK55C,EAAE65C,SAAW75C,EAAE85C,SACpBC,EAAatjB,EAAOxxB,OAAOqP,SAASylC,WACpCC,EAAWD,GAAqB,KAAPH,EACzBK,EAAaF,GAAqB,KAAPH,EAC3BM,EAAqB,KAAPN,EACdO,EAAsB,KAAPP,EACfQ,EAAmB,KAAPR,EACZS,EAAqB,KAAPT,EAElB,IAAKnjB,EAAO2O,iBAAmB3O,EAAOwD,gBAAkBkgB,GAAgB1jB,EAAOyD,cAAgBmgB,GAAeJ,GAC5G,OAAO,EAGT,IAAKxjB,EAAO4O,iBAAmB5O,EAAOwD,gBAAkBigB,GAAezjB,EAAOyD,cAAgBkgB,GAAaJ,GACzG,OAAO,EAGT,KAAIh6C,EAAE6Z,UAAY7Z,EAAEs6C,QAAUt6C,EAAEu6C,SAAWv6C,EAAEw6C,YAIzC32C,EAASyZ,gBAAiBzZ,EAASyZ,cAAc6I,UAA+D,UAAlDtiB,EAASyZ,cAAc6I,SAAS5f,eAA+E,aAAlD1C,EAASyZ,cAAc6I,SAAS5f,eAA/J,CAIA,GAAIkwB,EAAOxxB,OAAOqP,SAASmmC,iBAAmBT,GAAYC,GAAcC,GAAeC,GAAgBC,GAAaC,GAAc,CAChI,IAAIK,GAAS,EAEb,GAAIjkB,EAAOkC,IAAI/mB,QAAQ,IAAM6kB,EAAOxxB,OAAOi2B,YAAYv6B,OAAS,GAAyE,IAApE81B,EAAOkC,IAAI/mB,QAAQ,IAAM6kB,EAAOxxB,OAAOy8B,kBAAkB/gC,OAC5H,OAGF,IAAIg4B,EAAMlC,EAAOkC,IACbgiB,EAAchiB,EAAI,GAAGxa,YACrBy8B,EAAejiB,EAAI,GAAG/hB,aACtBikC,EAAcx2C,EAAOga,WACrBy8B,EAAez2C,EAAOquC,YACtBqI,EAAetkB,EAAOkC,IAAI9J,SAC1B6L,IAAKqgB,EAAazrB,MAAQmH,EAAOkC,IAAI,GAAGxJ,YAG5C,IAFA,IAAI6rB,EAAc,CAAC,CAACD,EAAazrB,KAAMyrB,EAAa1rB,KAAM,CAAC0rB,EAAazrB,KAAOqrB,EAAaI,EAAa1rB,KAAM,CAAC0rB,EAAazrB,KAAMyrB,EAAa1rB,IAAMurB,GAAe,CAACG,EAAazrB,KAAOqrB,EAAaI,EAAa1rB,IAAMurB,IAEjNh6C,EAAI,EAAGA,EAAIo6C,EAAYr6C,OAAQC,GAAK,EAAG,CAC9C,IAAIgyC,EAAQoI,EAAYp6C,GAExB,GAAIgyC,EAAM,IAAM,GAAKA,EAAM,IAAMiI,GAAejI,EAAM,IAAM,GAAKA,EAAM,IAAMkI,EAAc,CACzF,GAAiB,IAAblI,EAAM,IAAyB,IAAbA,EAAM,GAAU,SAEtC8H,GAAS,CACX,CACF,CAEA,IAAKA,EAAQ,MACf,CAEIjkB,EAAOwD,iBACL+f,GAAYC,GAAcC,GAAeC,KACvCn6C,EAAEoP,eAAgBpP,EAAEoP,iBAAsBpP,EAAEi7C,aAAc,KAG3DhB,GAAcE,KAAkBzf,IAAQsf,GAAYE,IAAgBxf,IAAKjE,EAAOkP,cAChFqU,GAAYE,KAAiBxf,IAAQuf,GAAcE,IAAiBzf,IAAKjE,EAAOuP,eAEjFgU,GAAYC,GAAcG,GAAaC,KACrCr6C,EAAEoP,eAAgBpP,EAAEoP,iBAAsBpP,EAAEi7C,aAAc,IAG5DhB,GAAcI,IAAa5jB,EAAOkP,aAClCqU,GAAYI,IAAW3jB,EAAOuP,aAGpCvP,EAAOe,KAAK,WAAYoiB,EA/CxB,CA9B2B,CA+E7B,EACArH,OAAQ,WACN,IAAI9b,EAAS/zB,KACTmB,EAAWsjB,IACXsP,EAAOniB,SAASymB,UACpB,GAAEl3B,GAAUiK,GAAG,UAAW2oB,EAAOniB,SAASqlC,QAC1CljB,EAAOniB,SAASymB,SAAU,EAC5B,EACAuX,QAAS,WACP,IAAI7b,EAAS/zB,KACTmB,EAAWsjB,IACVsP,EAAOniB,SAASymB,UACrB,GAAEl3B,GAAUqF,IAAI,UAAWutB,EAAOniB,SAASqlC,QAC3CljB,EAAOniB,SAASymB,SAAU,EAC5B,GAEF,UACEv2B,KAAM,WACNS,OAAQ,CACNqP,SAAU,CACRymB,SAAS,EACT0f,gBAAgB,EAChBV,YAAY,IAGhBtxB,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxBniB,SAAU,GAAS,CACjBymB,SAAS,GACR2e,KAEP,EACA5rC,GAAI,CACF4pB,KAAM,SAAcjB,GACdA,EAAOxxB,OAAOqP,SAASymB,SACzBtE,EAAOniB,SAASi+B,QAEpB,EACA3a,QAAS,SAAiBnB,GACpBA,EAAOniB,SAASymB,SAClBtE,EAAOniB,SAASg+B,SAEpB,IC9HJ,SAAS4I,KACP,IAAIr3C,EAAWsjB,IACXnd,EAAY,UACZmxC,EAAenxC,KAAanG,EAEhC,IAAKs3C,EAAa,CAChB,IAAI1yC,EAAU5E,EAASsC,cAAc,OACrCsC,EAAQ0H,aAAanG,EAAW,WAChCmxC,EAA4C,oBAAvB1yC,EAAQuB,EAC/B,CASA,OAPKmxC,GAAet3C,EAASu3C,gBAAkBv3C,EAASu3C,eAAeC,aAExB,IAA/Cx3C,EAASu3C,eAAeC,WAAW,GAAI,MAErCF,EAAct3C,EAASu3C,eAAeC,WAAW,eAAgB,QAG5DF,CACT,CAEA,IAAIG,GAAa,CACfC,eAAgB5pB,KAChB6pB,yBAAqBnhC,EACrBohC,kBAAmB,GACnBr0C,MAAO,WACL,IAAI/C,EAAS,IACb,OAAIA,EAAOijB,UAAUC,UAAU5J,QAAQ,YAAc,EAAU,iBACxDu9B,KAAqB,QAAU,YACxC,EACAjV,UAAW,SAAmBjmC,GAE5B,IAAI07C,EAAa,GACbC,EAAc,GACdC,EAAc,IACdC,EAAK,EACLC,EAAK,EAELC,EAAK,EACLC,EAAK,EA+DT,MA5DI,WAAYh8C,IACd87C,EAAK97C,EAAEmuB,QAGL,eAAgBnuB,IAClB87C,GAAM97C,EAAEi8C,WAAa,KAGnB,gBAAiBj8C,IACnB87C,GAAM97C,EAAEk8C,YAAc,KAGpB,gBAAiBl8C,IACnB67C,GAAM77C,EAAEm8C,YAAc,KAIpB,SAAUn8C,GAAKA,EAAE8xB,OAAS9xB,EAAEo8C,kBAC9BP,EAAKC,EACLA,EAAK,GAGPC,EAAKF,EAAKH,EACVM,EAAKF,EAAKJ,EAEN,WAAY17C,IACdg8C,EAAKh8C,EAAEq8C,QAGL,WAAYr8C,IACd+7C,EAAK/7C,EAAEs8C,QAGLt8C,EAAE6Z,WAAakiC,IAEjBA,EAAKC,EACLA,EAAK,IAGFD,GAAMC,IAAOh8C,EAAEu8C,YACE,IAAhBv8C,EAAEu8C,WAEJR,GAAMJ,EACNK,GAAML,IAGNI,GAAMH,EACNI,GAAMJ,IAKNG,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAGjBC,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAGd,CACLQ,MAAOX,EACPY,MAAOX,EACPY,OAAQX,EACRY,OAAQX,EAEZ,EACAY,iBAAkB,WAChB,IAAInmB,EAAS/zB,KACR+zB,EAAOsE,UACZtE,EAAOomB,cAAe,EACxB,EACAC,iBAAkB,WAChB,IAAIrmB,EAAS/zB,KACR+zB,EAAOsE,UACZtE,EAAOomB,cAAe,EACxB,EACAlD,OAAQ,SAAgBvyC,GACtB,IAAIpH,EAAIoH,EACJ2lC,GAAsB,EACtBtW,EAAS/zB,KACb,GAAK+zB,EAAOsE,QAAZ,CACA,IAAI91B,EAASwxB,EAAOxxB,OAAO83C,WAEvBtmB,EAAOxxB,OAAO05B,SAChB3+B,EAAEoP,iBAGJ,IAAIrD,EAAS0qB,EAAOkC,IAMpB,GAJ8C,cAA1ClC,EAAOxxB,OAAO83C,WAAWC,eAC3BjxC,EAAS,GAAE0qB,EAAOxxB,OAAO83C,WAAWC,gBAGjCvmB,EAAOomB,eAAiB9wC,EAAO,GAAGkB,SAASjN,EAAE+L,UAAY9G,EAAOg4C,eAAgB,OAAO,EACxFj9C,EAAEqpC,gBAAerpC,EAAIA,EAAEqpC,eAE3B,IAAI6T,EAAQ,EACRC,EAAY1mB,EAAOkE,cAAgB,EAAI,EACvCxwB,EAAOmxC,GAAWrV,UAAUjmC,GAEhC,GAAIiF,EAAOm4C,YACT,GAAI3mB,EAAOwD,eAAgB,CACzB,KAAItyB,KAAKyW,IAAIjU,EAAKuyC,QAAU/0C,KAAKyW,IAAIjU,EAAKwyC,SAA+C,OAAO,EAA7CO,GAAS/yC,EAAKuyC,OAASS,CAC5E,KAAO,MAAIx1C,KAAKyW,IAAIjU,EAAKwyC,QAAUh1C,KAAKyW,IAAIjU,EAAKuyC,SAAmC,OAAO,EAAjCQ,GAAS/yC,EAAKwyC,MAAuB,MAE/FO,EAAQv1C,KAAKyW,IAAIjU,EAAKuyC,QAAU/0C,KAAKyW,IAAIjU,EAAKwyC,SAAWxyC,EAAKuyC,OAASS,GAAahzC,EAAKwyC,OAG3F,GAAc,IAAVO,EAAa,OAAO,EACpBj4C,EAAOo4C,SAAQH,GAASA,GAE5B,IAAII,EAAY7mB,EAAO5E,eAAiBqrB,EAAQj4C,EAAOs4C,YAavD,GAZID,GAAa7mB,EAAOiK,iBAAgB4c,EAAY7mB,EAAOiK,gBACvD4c,GAAa7mB,EAAOyK,iBAAgBoc,EAAY7mB,EAAOyK,gBAQ3D6L,IAAsBtW,EAAOxxB,OAAO+8B,QAAgBsb,IAAc7mB,EAAOiK,gBAAkB4c,IAAc7mB,EAAOyK,gBAC5G6L,GAAuBtW,EAAOxxB,OAAOwnC,QAAQzsC,EAAE0sC,kBAE9CjW,EAAOxxB,OAAOkoC,SAoCZ,CAML,IAAIqQ,EAAY,CACdlQ,KAAM3b,KACNurB,MAAOv1C,KAAKyW,IAAI8+B,GAChBxY,UAAW/8B,KAAK81C,KAAKP,IAEnB1B,EAAsB/kB,EAAOsmB,WAAWvB,oBACxCkC,EAAoBlC,GAAuBgC,EAAUlQ,KAAOkO,EAAoBlO,KAAO,KAAOkQ,EAAUN,OAAS1B,EAAoB0B,OAASM,EAAU9Y,YAAc8W,EAAoB9W,UAE9L,IAAKgZ,EAAmB,CACtBjnB,EAAOsmB,WAAWvB,yBAAsBnhC,EAEpCoc,EAAOxxB,OAAO+8B,MAChBvL,EAAOqP,UAGT,IAAIuH,EAAW5W,EAAO5E,eAAiBqrB,EAAQj4C,EAAOs4C,YAClDlc,EAAe5K,EAAO0K,YACtBG,EAAS7K,EAAO2K,MAapB,GAZIiM,GAAY5W,EAAOiK,iBAAgB2M,EAAW5W,EAAOiK,gBACrD2M,GAAY5W,EAAOyK,iBAAgBmM,EAAW5W,EAAOyK,gBACzDzK,EAAOoJ,cAAc,GACrBpJ,EAAO4M,aAAagK,GACpB5W,EAAOsK,iBACPtK,EAAO4L,oBACP5L,EAAO8K,wBAEFF,GAAgB5K,EAAO0K,cAAgBG,GAAU7K,EAAO2K,QAC3D3K,EAAO8K,sBAGL9K,EAAOxxB,OAAO6pC,eAAgB,CAYhC7mB,aAAawO,EAAOsmB,WAAWY,SAC/BlnB,EAAOsmB,WAAWY,aAAUtjC,EAC5B,IAAIujC,EAAqBnnB,EAAOsmB,WAAWtB,kBAEvCmC,EAAmBj9C,QAAU,IAC/Bi9C,EAAmBC,QAIrB,IAAIC,EAAaF,EAAmBj9C,OAASi9C,EAAmBA,EAAmBj9C,OAAS,QAAK0Z,EAE7F0jC,EAAaH,EAAmB,GAIpC,GAFAA,EAAmBh5C,KAAK44C,GAEpBM,IAAeN,EAAUN,MAAQY,EAAWZ,OAASM,EAAU9Y,YAAcoZ,EAAWpZ,WAE1FkZ,EAAmB5vB,OAAO,QACrB,GAAI4vB,EAAmBj9C,QAAU,IAAM68C,EAAUlQ,KAAOyQ,EAAWzQ,KAAO,KAAOyQ,EAAWb,MAAQM,EAAUN,OAAS,GAAKM,EAAUN,OAAS,EAAG,CAOvJ,IAAIc,EAAkBd,EAAQ,EAAI,GAAM,GACxCzmB,EAAOsmB,WAAWvB,oBAAsBgC,EAExCI,EAAmB5vB,OAAO,GAE1ByI,EAAOsmB,WAAWY,QAAUjsB,IAAS,WACnC+E,EAAO8P,eAAe9P,EAAOxxB,OAAO06B,OAAO,OAAMtlB,EAAW2jC,EAC9D,GAAG,EACL,CAEKvnB,EAAOsmB,WAAWY,UAIrBlnB,EAAOsmB,WAAWY,QAAUjsB,IAAS,WACnC,IAAIssB,EAAkB,GACtBvnB,EAAOsmB,WAAWvB,oBAAsBgC,EAExCI,EAAmB5vB,OAAO,GAE1ByI,EAAO8P,eAAe9P,EAAOxxB,OAAO06B,OAAO,OAAMtlB,EAAW2jC,EAC9D,GAAG,KAEP,CAOA,GAJKN,GAAmBjnB,EAAOe,KAAK,SAAUx3B,GAE1Cy2B,EAAOxxB,OAAO+qC,UAAYvZ,EAAOxxB,OAAOg5C,8BAA8BxnB,EAAOuZ,SAASkO,OAEtF7Q,IAAa5W,EAAOiK,gBAAkB2M,IAAa5W,EAAOyK,eAAgB,OAAO,CACvF,CACF,KA7I6B,CAE3B,IAAIid,EAAW,CACb7Q,KAAM3b,KACNurB,MAAOv1C,KAAKyW,IAAI8+B,GAChBxY,UAAW/8B,KAAK81C,KAAKP,GACrBkB,IAAKh3C,GAGHq0C,EAAoBhlB,EAAOsmB,WAAWtB,kBAEtCA,EAAkB96C,QAAU,GAC9B86C,EAAkBoC,QAGpB,IAAIQ,EAAY5C,EAAkB96C,OAAS86C,EAAkBA,EAAkB96C,OAAS,QAAK0Z,EAkB7F,GAjBAohC,EAAkB72C,KAAKu5C,GAOnBE,GACEF,EAASzZ,YAAc2Z,EAAU3Z,WAAayZ,EAASjB,MAAQmB,EAAUnB,OAASiB,EAAS7Q,KAAO+Q,EAAU/Q,KAAO,MACrH7W,EAAOsmB,WAAWuB,cAAcH,GAGlC1nB,EAAOsmB,WAAWuB,cAAcH,GAK9B1nB,EAAOsmB,WAAWwB,cAAcJ,GAClC,OAAO,CAEX,CA4GA,OADIn+C,EAAEoP,eAAgBpP,EAAEoP,iBAAsBpP,EAAEi7C,aAAc,GACvD,CA5LoB,CA6L7B,EACAqD,cAAe,SAAuBH,GACpC,IAAI1nB,EAAS/zB,KACT2B,EAAS,IAEb,QAAI3B,KAAKuC,OAAO83C,WAAWyB,gBAAkBL,EAASjB,MAAQx6C,KAAKuC,OAAO83C,WAAWyB,oBAKjF97C,KAAKuC,OAAO83C,WAAW0B,eAAiB9sB,KAAQ8E,EAAOsmB,WAAWxB,eAAiB74C,KAAKuC,OAAO83C,WAAW0B,iBAQ1GN,EAASjB,OAAS,GAAKvrB,KAAQ8E,EAAOsmB,WAAWxB,eAAiB,KAiBlE4C,EAASzZ,UAAY,EACjBjO,EAAO2K,QAAS3K,EAAOxxB,OAAO+8B,MAAUvL,EAAOwN,YACnDxN,EAAOkP,YACPlP,EAAOe,KAAK,SAAU2mB,EAASC,MAEtB3nB,EAAO0K,cAAe1K,EAAOxxB,OAAO+8B,MAAUvL,EAAOwN,YAChExN,EAAOuP,YACPvP,EAAOe,KAAK,SAAU2mB,EAASC,MAIjC3nB,EAAOsmB,WAAWxB,gBAAiB,IAAIl3C,EAAO0jB,MAAO22B,WAE9C,IACT,EACAH,cAAe,SAAuBJ,GACpC,IAAI1nB,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAAO83C,WAE3B,GAAIoB,EAASzZ,UAAY,GACvB,GAAIjO,EAAO2K,QAAU3K,EAAOxxB,OAAO+8B,MAAQ/8B,EAAOg4C,eAEhD,OAAO,OAEJ,GAAIxmB,EAAO0K,cAAgB1K,EAAOxxB,OAAO+8B,MAAQ/8B,EAAOg4C,eAE7D,OAAO,EAGT,OAAO,CACT,EACA1K,OAAQ,WACN,IAAI9b,EAAS/zB,KACT0E,EAAQk0C,GAAWl0C,QAEvB,GAAIqvB,EAAOxxB,OAAO05B,QAEhB,OADAlI,EAAO+M,UAAUl2B,oBAAoBlG,EAAOqvB,EAAOsmB,WAAWpD,SACvD,EAGT,IAAKvyC,EAAO,OAAO,EACnB,GAAIqvB,EAAOsmB,WAAWhiB,QAAS,OAAO,EACtC,IAAIhvB,EAAS0qB,EAAOkC,IAUpB,MAR8C,cAA1ClC,EAAOxxB,OAAO83C,WAAWC,eAC3BjxC,EAAS,GAAE0qB,EAAOxxB,OAAO83C,WAAWC,eAGtCjxC,EAAO+B,GAAG,aAAc2oB,EAAOsmB,WAAWH,kBAC1C7wC,EAAO+B,GAAG,aAAc2oB,EAAOsmB,WAAWD,kBAC1C/wC,EAAO+B,GAAG1G,EAAOqvB,EAAOsmB,WAAWpD,QACnCljB,EAAOsmB,WAAWhiB,SAAU,GACrB,CACT,EACAuX,QAAS,WACP,IAAI7b,EAAS/zB,KACT0E,EAAQk0C,GAAWl0C,QAEvB,GAAIqvB,EAAOxxB,OAAO05B,QAEhB,OADAlI,EAAO+M,UAAUp2B,iBAAiBhG,EAAOqvB,EAAOsmB,WAAWpD,SACpD,EAGT,IAAKvyC,EAAO,OAAO,EACnB,IAAKqvB,EAAOsmB,WAAWhiB,QAAS,OAAO,EACvC,IAAIhvB,EAAS0qB,EAAOkC,IAQpB,MAN8C,cAA1ClC,EAAOxxB,OAAO83C,WAAWC,eAC3BjxC,EAAS,GAAE0qB,EAAOxxB,OAAO83C,WAAWC,eAGtCjxC,EAAO7C,IAAI9B,EAAOqvB,EAAOsmB,WAAWpD,QACpCljB,EAAOsmB,WAAWhiB,SAAU,GACrB,CACT,GAEF,UACEv2B,KAAM,aACNS,OAAQ,CACN83C,WAAY,CACVhiB,SAAS,EACTkiB,gBAAgB,EAChBI,QAAQ,EACRD,aAAa,EACbG,YAAa,EACbP,aAAc,YACdwB,eAAgB,KAChBC,cAAe,OAGnBh2B,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxBsmB,WAAY,CACVhiB,SAAS,EACTwgB,eAAgB5pB,KAChB6pB,yBAAqBnhC,EACrBohC,kBAAmB,GACnBlJ,OAAQ+I,GAAW/I,OACnBD,QAASgJ,GAAWhJ,QACpBqH,OAAQ2B,GAAW3B,OACnBiD,iBAAkBtB,GAAWsB,iBAC7BE,iBAAkBxB,GAAWwB,iBAC7BwB,cAAehD,GAAWgD,cAC1BC,cAAejD,GAAWiD,gBAGhC,EACAzwC,GAAI,CACF4pB,KAAM,SAAcjB,IACbA,EAAOxxB,OAAO83C,WAAWhiB,SAAWtE,EAAOxxB,OAAO05B,SACrDlI,EAAOsmB,WAAWzK,UAGhB7b,EAAOxxB,OAAO83C,WAAWhiB,SAAStE,EAAOsmB,WAAWxK,QAC1D,EACA3a,QAAS,SAAiBnB,GACpBA,EAAOxxB,OAAO05B,SAChBlI,EAAOsmB,WAAWxK,SAGhB9b,EAAOsmB,WAAWhiB,SAAStE,EAAOsmB,WAAWzK,SACnD,IC1dJ,SAAS,KAA2Q,OAA9P,GAAWlxC,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAI5T,IAAIk1B,GAAa,CACfC,SAAU,SAAkBjmB,EAAKhd,GAC/Bgd,EAAIhd,EAAW,WAAa,eAAejZ,KAAKuC,OAAOyqC,WAAWmP,eAC9DlmB,EAAI,IAAyB,WAAnBA,EAAI,GAAGlhB,UAAsBkhB,EAAI,GAAGhd,SAAWA,EAC/D,EACAwsB,OAAQ,WAEN,IAAI1R,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAAOyqC,WACvBkP,EAAWnoB,EAAOiZ,WAAWkP,SACjC,IAAInoB,EAAOxxB,OAAO+8B,KAAlB,CACA,IAAI8c,EAAqBroB,EAAOiZ,WAC5BqP,EAAUD,EAAmBC,QAC7BC,EAAUF,EAAmBE,QAE7BA,GAAWA,EAAQr+C,OAAS,IAC1B81B,EAAO0K,YACTyd,EAASI,GAAS,GAElBJ,EAASI,GAAS,GAGhBvoB,EAAOxxB,OAAOo6B,eAAiB5I,EAAOsE,SACxCikB,EAAQvoB,EAAOsR,SAAW,WAAa,eAAe9iC,EAAOg6C,YAI7DF,GAAWA,EAAQp+C,OAAS,IAC1B81B,EAAO2K,MACTwd,EAASG,GAAS,GAElBH,EAASG,GAAS,GAGhBtoB,EAAOxxB,OAAOo6B,eAAiB5I,EAAOsE,SACxCgkB,EAAQtoB,EAAOsR,SAAW,WAAa,eAAe9iC,EAAOg6C,WAzBnC,CA4BhC,EACAC,YAAa,SAAqBl/C,GAChC,IAAIy2B,EAAS/zB,KACb1C,EAAEoP,iBACEqnB,EAAO0K,cAAgB1K,EAAOxxB,OAAO+8B,MACzCvL,EAAOuP,WACT,EACAmZ,YAAa,SAAqBn/C,GAChC,IAAIy2B,EAAS/zB,KACb1C,EAAEoP,iBACEqnB,EAAO2K,QAAU3K,EAAOxxB,OAAO+8B,MACnCvL,EAAOkP,WACT,EACAjO,KAAM,WACJ,IAOIqnB,EACAC,EARAvoB,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAAOyqC,YAC3BjZ,EAAOxxB,OAAOyqC,WAAa/b,GAA0B8C,EAAOkC,IAAKlC,EAAOxxB,OAAOyqC,WAAYjZ,EAAOxxB,OAAO4uB,eAAgB,CACvH8b,OAAQ,qBACRC,OAAQ,uBAEJ3qC,EAAO0qC,QAAU1qC,EAAO2qC,UAI1B3qC,EAAO0qC,SACToP,EAAU,GAAE95C,EAAO0qC,QAEflZ,EAAOxxB,OAAOuvC,mBAA8C,kBAAlBvvC,EAAO0qC,QAAuBoP,EAAQp+C,OAAS,GAA+C,IAA1C81B,EAAOkC,IAAIpsB,KAAKtH,EAAO0qC,QAAQhvC,SAC/Ho+C,EAAUtoB,EAAOkC,IAAIpsB,KAAKtH,EAAO0qC,UAIjC1qC,EAAO2qC,SACToP,EAAU,GAAE/5C,EAAO2qC,QAEfnZ,EAAOxxB,OAAOuvC,mBAA8C,kBAAlBvvC,EAAO2qC,QAAuBoP,EAAQr+C,OAAS,GAA+C,IAA1C81B,EAAOkC,IAAIpsB,KAAKtH,EAAO2qC,QAAQjvC,SAC/Hq+C,EAAUvoB,EAAOkC,IAAIpsB,KAAKtH,EAAO2qC,UAIjCmP,GAAWA,EAAQp+C,OAAS,GAC9Bo+C,EAAQjxC,GAAG,QAAS2oB,EAAOiZ,WAAWyP,aAGpCH,GAAWA,EAAQr+C,OAAS,GAC9Bq+C,EAAQlxC,GAAG,QAAS2oB,EAAOiZ,WAAWwP,aAGxC,GAAOzoB,EAAOiZ,WAAY,CACxBqP,QAASA,EACTpP,OAAQoP,GAAWA,EAAQ,GAC3BC,QAASA,EACTpP,OAAQoP,GAAWA,EAAQ,KAGxBvoB,EAAOsE,UACNgkB,GAASA,EAAQ3zB,SAASnmB,EAAOg6C,WACjCD,GAASA,EAAQ5zB,SAASnmB,EAAOg6C,YAEzC,EACArnB,QAAS,WACP,IAAInB,EAAS/zB,KACT08C,EAAsB3oB,EAAOiZ,WAC7BqP,EAAUK,EAAoBL,QAC9BC,EAAUI,EAAoBJ,QAE9BD,GAAWA,EAAQp+C,SACrBo+C,EAAQ71C,IAAI,QAASutB,EAAOiZ,WAAWyP,aACvCJ,EAAQrzB,YAAY+K,EAAOxxB,OAAOyqC,WAAWmP,gBAG3CG,GAAWA,EAAQr+C,SACrBq+C,EAAQ91C,IAAI,QAASutB,EAAOiZ,WAAWwP,aACvCF,EAAQtzB,YAAY+K,EAAOxxB,OAAOyqC,WAAWmP,eAEjD,GAEF,UACEr6C,KAAM,aACNS,OAAQ,CACNyqC,WAAY,CACVC,OAAQ,KACRC,OAAQ,KACRyP,aAAa,EACbR,cAAe,yBACfS,YAAa,uBACbL,UAAW,uBAGfx2B,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxBiZ,WAAY,GAAS,CAAC,EAAGiP,KAE7B,EACA7wC,GAAI,CACF4pB,KAAM,SAAcjB,GAClBA,EAAOiZ,WAAWhY,OAClBjB,EAAOiZ,WAAWvH,QACpB,EACAoX,OAAQ,SAAgB9oB,GACtBA,EAAOiZ,WAAWvH,QACpB,EACAqX,SAAU,SAAkB/oB,GAC1BA,EAAOiZ,WAAWvH,QACpB,EACAvQ,QAAS,SAAiBnB,GACxBA,EAAOiZ,WAAW9X,SACpB,EACA,iBAAkB,SAAuBnB,GACvC,IAAIgpB,EAAsBhpB,EAAOiZ,WAC7BqP,EAAUU,EAAoBV,QAC9BC,EAAUS,EAAoBT,QAE9BD,GACFA,EAAQtoB,EAAOsE,QAAU,cAAgB,YAAYtE,EAAOxxB,OAAOyqC,WAAWuP,WAG5ED,GACFA,EAAQvoB,EAAOsE,QAAU,cAAgB,YAAYtE,EAAOxxB,OAAOyqC,WAAWuP,UAElF,EACAS,MAAO,SAAejpB,EAAQz2B,GAC5B,IAAI2/C,EAAsBlpB,EAAOiZ,WAC7BqP,EAAUY,EAAoBZ,QAC9BC,EAAUW,EAAoBX,QAC9BY,EAAW5/C,EAAE+L,OAEjB,GAAI0qB,EAAOxxB,OAAOyqC,WAAW2P,cAAgB,GAAEO,GAAUvyB,GAAG2xB,KAAa,GAAEY,GAAUvyB,GAAG0xB,GAAU,CAChG,GAAItoB,EAAOopB,YAAcppB,EAAOxxB,OAAO46C,YAAcppB,EAAOxxB,OAAO46C,WAAWC,YAAcrpB,EAAOopB,WAAWxtC,KAAOutC,GAAYnpB,EAAOopB,WAAWxtC,GAAGpF,SAAS2yC,IAAY,OAC3K,IAAIG,EAEAhB,EACFgB,EAAWhB,EAAQ9yB,SAASwK,EAAOxxB,OAAOyqC,WAAW4P,aAC5CN,IACTe,EAAWf,EAAQ/yB,SAASwK,EAAOxxB,OAAOyqC,WAAW4P,eAGtC,IAAbS,EACFtpB,EAAOe,KAAK,kBAEZf,EAAOe,KAAK,kBAGVunB,GACFA,EAAQjzB,YAAY2K,EAAOxxB,OAAOyqC,WAAW4P,aAG3CN,GACFA,EAAQlzB,YAAY2K,EAAOxxB,OAAOyqC,WAAW4P,YAEjD,CACF,IClMJ,SAAS,KAA2Q,OAA9P,GAAWl+C,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAI5T,IAAIu2B,GAAa,CACf7X,OAAQ,WAEN,IAAI1R,EAAS/zB,KACTg4B,EAAMjE,EAAOiE,IACbz1B,EAASwxB,EAAOxxB,OAAO46C,WAC3B,GAAK56C,EAAOoN,IAAOokB,EAAOopB,WAAWxtC,IAAOokB,EAAOopB,WAAWlnB,KAAwC,IAAjClC,EAAOopB,WAAWlnB,IAAIh4B,OAA3F,CACA,IAGIw1C,EAHAhb,EAAe1E,EAAOqE,SAAWrE,EAAOxxB,OAAO61B,QAAQC,QAAUtE,EAAOqE,QAAQG,OAAOt6B,OAAS81B,EAAOwE,OAAOt6B,OAC9Gg4B,EAAMlC,EAAOopB,WAAWlnB,IAGxBsnB,EAAQxpB,EAAOxxB,OAAO+8B,KAAOr6B,KAAK60B,MAAMrB,EAAqC,EAAtB1E,EAAOiP,cAAoBjP,EAAOxxB,OAAOm4B,gBAAkB3G,EAAO2E,SAASz6B,OAkBtI,GAhBI81B,EAAOxxB,OAAO+8B,MAChBmU,EAAUxuC,KAAK60B,MAAM/F,EAAOuJ,YAAcvJ,EAAOiP,cAAgBjP,EAAOxxB,OAAOm4B,gBAE3E+Y,EAAUhb,EAAe,EAA0B,EAAtB1E,EAAOiP,eACtCyQ,GAAWhb,EAAqC,EAAtB1E,EAAOiP,cAG/ByQ,EAAU8J,EAAQ,IAAG9J,GAAW8J,GAChC9J,EAAU,GAAsC,YAAjC1f,EAAOxxB,OAAOi7C,iBAA8B/J,EAAU8J,EAAQ9J,IAEjFA,EADqC,qBAArB1f,EAAO2I,UACb3I,EAAO2I,UAEP3I,EAAOuJ,aAAe,EAId,YAAhB/6B,EAAOyG,MAAsB+qB,EAAOopB,WAAWM,SAAW1pB,EAAOopB,WAAWM,QAAQx/C,OAAS,EAAG,CAClG,IACIy/C,EACAC,EACAC,EAHAH,EAAU1pB,EAAOopB,WAAWM,QA0BhC,GArBIl7C,EAAOs7C,iBACT9pB,EAAOopB,WAAWW,WAAaL,EAAQnwB,GAAG,GAAGyG,EAAOwD,eAAiB,aAAe,gBAAe,GACnGtB,EAAIpJ,IAAIkH,EAAOwD,eAAiB,QAAU,SAAUxD,EAAOopB,WAAWW,YAAcv7C,EAAOw7C,mBAAqB,GAAK,MAEjHx7C,EAAOw7C,mBAAqB,QAA8BpmC,IAAzBoc,EAAO8L,gBAC1C9L,EAAOopB,WAAWa,oBAAsBvK,EAAU1f,EAAO8L,cAErD9L,EAAOopB,WAAWa,mBAAqBz7C,EAAOw7C,mBAAqB,EACrEhqB,EAAOopB,WAAWa,mBAAqBz7C,EAAOw7C,mBAAqB,EAC1DhqB,EAAOopB,WAAWa,mBAAqB,IAChDjqB,EAAOopB,WAAWa,mBAAqB,IAI3CN,EAAajK,EAAU1f,EAAOopB,WAAWa,mBACzCL,EAAYD,GAAcz4C,KAAKkW,IAAIsiC,EAAQx/C,OAAQsE,EAAOw7C,oBAAsB,GAChFH,GAAYD,EAAYD,GAAc,GAGxCD,EAAQz0B,YAAYzmB,EAAO07C,kBAAoB,IAAM17C,EAAO07C,kBAAoB,SAAW17C,EAAO07C,kBAAoB,cAAgB17C,EAAO07C,kBAAoB,SAAW17C,EAAO07C,kBAAoB,cAAgB17C,EAAO07C,kBAAoB,SAE9OhoB,EAAIh4B,OAAS,EACfw/C,EAAQ5oC,MAAK,SAAUqpC,GACrB,IAAIC,EAAU,GAAED,GACZE,EAAcD,EAAQnjC,QAEtBojC,IAAgB3K,GAClB0K,EAAQz1B,SAASnmB,EAAO07C,mBAGtB17C,EAAOs7C,iBACLO,GAAeV,GAAcU,GAAeT,GAC9CQ,EAAQz1B,SAASnmB,EAAO07C,kBAAoB,SAG1CG,IAAgBV,GAClBS,EAAQ9uC,OAAOqZ,SAASnmB,EAAO07C,kBAAoB,SAAS5uC,OAAOqZ,SAASnmB,EAAO07C,kBAAoB,cAGrGG,IAAgBT,GAClBQ,EAAQ9gD,OAAOqrB,SAASnmB,EAAO07C,kBAAoB,SAAS5gD,OAAOqrB,SAASnmB,EAAO07C,kBAAoB,cAG7G,QACK,CACL,IAAIE,EAAUV,EAAQnwB,GAAGmmB,GACrB2K,EAAcD,EAAQnjC,QAG1B,GAFAmjC,EAAQz1B,SAASnmB,EAAO07C,mBAEpB17C,EAAOs7C,eAAgB,CAIzB,IAHA,IAAIQ,EAAwBZ,EAAQnwB,GAAGowB,GACnCY,EAAuBb,EAAQnwB,GAAGqwB,GAE7Bz/C,EAAIw/C,EAAYx/C,GAAKy/C,EAAWz/C,GAAK,EAC5Cu/C,EAAQnwB,GAAGpvB,GAAGwqB,SAASnmB,EAAO07C,kBAAoB,SAGpD,GAAIlqB,EAAOxxB,OAAO+8B,KAChB,GAAI8e,GAAeX,EAAQx/C,OAASsE,EAAOw7C,mBAAoB,CAC7D,IAAK,IAAIriB,EAAKn5B,EAAOw7C,mBAAoBriB,GAAM,EAAGA,GAAM,EACtD+hB,EAAQnwB,GAAGmwB,EAAQx/C,OAASy9B,GAAIhT,SAASnmB,EAAO07C,kBAAoB,SAGtER,EAAQnwB,GAAGmwB,EAAQx/C,OAASsE,EAAOw7C,mBAAqB,GAAGr1B,SAASnmB,EAAO07C,kBAAoB,QACjG,MACEI,EAAsBhvC,OAAOqZ,SAASnmB,EAAO07C,kBAAoB,SAAS5uC,OAAOqZ,SAASnmB,EAAO07C,kBAAoB,cACrHK,EAAqBjhD,OAAOqrB,SAASnmB,EAAO07C,kBAAoB,SAAS5gD,OAAOqrB,SAASnmB,EAAO07C,kBAAoB,mBAGtHI,EAAsBhvC,OAAOqZ,SAASnmB,EAAO07C,kBAAoB,SAAS5uC,OAAOqZ,SAASnmB,EAAO07C,kBAAoB,cACrHK,EAAqBjhD,OAAOqrB,SAASnmB,EAAO07C,kBAAoB,SAAS5gD,OAAOqrB,SAASnmB,EAAO07C,kBAAoB,aAExH,CACF,CAEA,GAAI17C,EAAOs7C,eAAgB,CACzB,IAAIU,EAAuBt5C,KAAKkW,IAAIsiC,EAAQx/C,OAAQsE,EAAOw7C,mBAAqB,GAC5ES,GAAiBzqB,EAAOopB,WAAWW,WAAaS,EAAuBxqB,EAAOopB,WAAWW,YAAc,EAAIF,EAAW7pB,EAAOopB,WAAWW,WACxIjI,EAAa7d,EAAM,QAAU,OACjCylB,EAAQ5wB,IAAIkH,EAAOwD,eAAiBse,EAAa,MAAO2I,EAAgB,KAC1E,CACF,CAOA,GALoB,aAAhBj8C,EAAOyG,OACTitB,EAAIpsB,KAAKmnB,GAAkBzuB,EAAOk8C,eAAezxB,KAAKzqB,EAAOm8C,sBAAsBjL,EAAU,IAC7Fxd,EAAIpsB,KAAKmnB,GAAkBzuB,EAAOo8C,aAAa3xB,KAAKzqB,EAAOq8C,oBAAoBrB,KAG7D,gBAAhBh7C,EAAOyG,KAAwB,CACjC,IAAI61C,EAGFA,EADEt8C,EAAOu8C,oBACc/qB,EAAOwD,eAAiB,WAAa,aAErCxD,EAAOwD,eAAiB,aAAe,WAGhE,IAAIwnB,GAAStL,EAAU,GAAK8J,EACxByB,EAAS,EACTC,EAAS,EAEgB,eAAzBJ,EACFG,EAASD,EAETE,EAASF,EAGX9oB,EAAIpsB,KAAKmnB,GAAkBzuB,EAAO28C,uBAAuBp1B,UAAU,6BAA+Bk1B,EAAS,YAAcC,EAAS,KAAKl1B,WAAWgK,EAAOxxB,OAAO06B,MAClK,CAEoB,WAAhB16B,EAAOyG,MAAqBzG,EAAO48C,cACrClpB,EAAI3N,KAAK/lB,EAAO48C,aAAaprB,EAAQ0f,EAAU,EAAG8J,IAClDxpB,EAAOe,KAAK,mBAAoBmB,EAAI,KAEpClC,EAAOe,KAAK,mBAAoBmB,EAAI,IAGlClC,EAAOxxB,OAAOo6B,eAAiB5I,EAAOsE,SACxCpC,EAAIlC,EAAOsR,SAAW,WAAa,eAAe9iC,EAAOg6C,UAnJoD,CAqJjH,EACA6C,OAAQ,WAEN,IAAIrrB,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAAO46C,WAC3B,GAAK56C,EAAOoN,IAAOokB,EAAOopB,WAAWxtC,IAAOokB,EAAOopB,WAAWlnB,KAAwC,IAAjClC,EAAOopB,WAAWlnB,IAAIh4B,OAA3F,CACA,IAAIw6B,EAAe1E,EAAOqE,SAAWrE,EAAOxxB,OAAO61B,QAAQC,QAAUtE,EAAOqE,QAAQG,OAAOt6B,OAAS81B,EAAOwE,OAAOt6B,OAC9Gg4B,EAAMlC,EAAOopB,WAAWlnB,IACxBopB,EAAiB,GAErB,GAAoB,YAAhB98C,EAAOyG,KAAoB,CAC7B,IAAIs2C,EAAkBvrB,EAAOxxB,OAAO+8B,KAAOr6B,KAAK60B,MAAMrB,EAAqC,EAAtB1E,EAAOiP,cAAoBjP,EAAOxxB,OAAOm4B,gBAAkB3G,EAAO2E,SAASz6B,OAE5I81B,EAAOxxB,OAAOkoC,WAAa1W,EAAOxxB,OAAO+8B,MAAQggB,EAAkB7mB,IACrE6mB,EAAkB7mB,GAGpB,IAAK,IAAIv6B,EAAI,EAAGA,EAAIohD,EAAiBphD,GAAK,EACpCqE,EAAOg9C,aACTF,GAAkB98C,EAAOg9C,aAAazgD,KAAKi1B,EAAQ71B,EAAGqE,EAAOi9C,aAE7DH,GAAkB,IAAM98C,EAAOk9C,cAAgB,WAAcl9C,EAAOi9C,YAAc,OAAUj9C,EAAOk9C,cAAgB,IAIvHxpB,EAAI3N,KAAK+2B,GACTtrB,EAAOopB,WAAWM,QAAUxnB,EAAIpsB,KAAKmnB,GAAkBzuB,EAAOi9C,aAChE,CAEoB,aAAhBj9C,EAAOyG,OAEPq2C,EADE98C,EAAOm9C,eACQn9C,EAAOm9C,eAAe5gD,KAAKi1B,EAAQxxB,EAAOk8C,aAAcl8C,EAAOo8C,YAE/D,gBAAmBp8C,EAAOk8C,aAA1B,4BAAoFl8C,EAAOo8C,WAAa,YAG3H1oB,EAAI3N,KAAK+2B,IAGS,gBAAhB98C,EAAOyG,OAEPq2C,EADE98C,EAAOo9C,kBACQp9C,EAAOo9C,kBAAkB7gD,KAAKi1B,EAAQxxB,EAAO28C,sBAE7C,gBAAmB38C,EAAO28C,qBAAuB,YAGpEjpB,EAAI3N,KAAK+2B,IAGS,WAAhB98C,EAAOyG,MACT+qB,EAAOe,KAAK,mBAAoBf,EAAOopB,WAAWlnB,IAAI,GA7CuD,CA+CjH,EACAjB,KAAM,WACJ,IAAIjB,EAAS/zB,KACb+zB,EAAOxxB,OAAO46C,WAAalsB,GAA0B8C,EAAOkC,IAAKlC,EAAOxxB,OAAO46C,WAAYppB,EAAOxxB,OAAO4uB,eAAgB,CACvHxhB,GAAI,sBAEN,IAAIpN,EAASwxB,EAAOxxB,OAAO46C,WAC3B,GAAK56C,EAAOoN,GAAZ,CACA,IAAIsmB,EAAM,GAAE1zB,EAAOoN,IACA,IAAfsmB,EAAIh4B,SAEJ81B,EAAOxxB,OAAOuvC,mBAA0C,kBAAdvvC,EAAOoN,IAAmBsmB,EAAIh4B,OAAS,IACnFg4B,EAAMlC,EAAOkC,IAAIpsB,KAAKtH,EAAOoN,KAGX,YAAhBpN,EAAOyG,MAAsBzG,EAAO66C,WACtCnnB,EAAIvN,SAASnmB,EAAOq9C,gBAGtB3pB,EAAIvN,SAASnmB,EAAOs9C,cAAgBt9C,EAAOyG,MAEvB,YAAhBzG,EAAOyG,MAAsBzG,EAAOs7C,iBACtC5nB,EAAIvN,SAAS,GAAKnmB,EAAOs9C,cAAgBt9C,EAAOyG,KAAO,YACvD+qB,EAAOopB,WAAWa,mBAAqB,EAEnCz7C,EAAOw7C,mBAAqB,IAC9Bx7C,EAAOw7C,mBAAqB,IAIZ,gBAAhBx7C,EAAOyG,MAA0BzG,EAAOu8C,qBAC1C7oB,EAAIvN,SAASnmB,EAAOu9C,0BAGlBv9C,EAAO66C,WACTnnB,EAAI7qB,GAAG,QAAS4lB,GAAkBzuB,EAAOi9C,cAAc,SAAiBliD,GACtEA,EAAEoP,iBACF,IAAIsO,EAAQ,GAAEhb,MAAMgb,QAAU+Y,EAAOxxB,OAAOm4B,eACxC3G,EAAOxxB,OAAO+8B,OAAMtkB,GAAS+Y,EAAOiP,cACxCjP,EAAOkO,QAAQjnB,EACjB,IAGF,GAAO+Y,EAAOopB,WAAY,CACxBlnB,IAAKA,EACLtmB,GAAIsmB,EAAI,KAGLlC,EAAOsE,SACVpC,EAAIvN,SAASnmB,EAAOg6C,WA1CA,CA4CxB,EACArnB,QAAS,WACP,IAAInB,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAAO46C,WAC3B,GAAK56C,EAAOoN,IAAOokB,EAAOopB,WAAWxtC,IAAOokB,EAAOopB,WAAWlnB,KAAwC,IAAjClC,EAAOopB,WAAWlnB,IAAIh4B,OAA3F,CACA,IAAIg4B,EAAMlC,EAAOopB,WAAWlnB,IAC5BA,EAAIjN,YAAYzmB,EAAOq6C,aACvB3mB,EAAIjN,YAAYzmB,EAAOs9C,cAAgBt9C,EAAOyG,MAC1C+qB,EAAOopB,WAAWM,SAAS1pB,EAAOopB,WAAWM,QAAQz0B,YAAYzmB,EAAO07C,mBAExE17C,EAAO66C,WACTnnB,EAAIzvB,IAAI,QAASwqB,GAAkBzuB,EAAOi9C,aAPmE,CASjH,GAEF,UACE19C,KAAM,aACNS,OAAQ,CACN46C,WAAY,CACVxtC,GAAI,KACJ8vC,cAAe,OACfrC,WAAW,EACXT,aAAa,EACb4C,aAAc,KACdI,kBAAmB,KACnBD,eAAgB,KAChBP,aAAc,KACdL,qBAAqB,EACrB91C,KAAM,UAEN60C,gBAAgB,EAChBE,mBAAoB,EACpBW,sBAAuB,SAA+BqB,GACpD,OAAOA,CACT,EACAnB,oBAAqB,SAA6BmB,GAChD,OAAOA,CACT,EACAP,YAAa,2BACbvB,kBAAmB,kCACnB4B,cAAe,qBAEfpB,aAAc,4BACdE,WAAY,0BACZ/B,YAAa,2BACbsC,qBAAsB,qCACtBY,yBAA0B,yCAC1BF,eAAgB,8BAEhBrD,UAAW,2BAGfx2B,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxBopB,WAAY,GAAS,CACnBa,mBAAoB,GACnBV,KAEP,EACAlyC,GAAI,CACF4pB,KAAM,SAAcjB,GAClBA,EAAOopB,WAAWnoB,OAClBjB,EAAOopB,WAAWiC,SAClBrrB,EAAOopB,WAAW1X,QACpB,EACAua,kBAAmB,SAA2BjsB,IACxCA,EAAOxxB,OAAO+8B,MAEqB,qBAArBvL,EAAO2I,YADvB3I,EAAOopB,WAAW1X,QAItB,EACAwa,gBAAiB,SAAyBlsB,GACnCA,EAAOxxB,OAAO+8B,MACjBvL,EAAOopB,WAAW1X,QAEtB,EACAya,mBAAoB,SAA4BnsB,GAC1CA,EAAOxxB,OAAO+8B,OAChBvL,EAAOopB,WAAWiC,SAClBrrB,EAAOopB,WAAW1X,SAEtB,EACA0a,qBAAsB,SAA8BpsB,GAC7CA,EAAOxxB,OAAO+8B,OACjBvL,EAAOopB,WAAWiC,SAClBrrB,EAAOopB,WAAW1X,SAEtB,EACAvQ,QAAS,SAAiBnB,GACxBA,EAAOopB,WAAWjoB,SACpB,EACA,iBAAkB,SAAuBnB,GACvC,IAAIkC,EAAMlC,EAAOopB,WAAWlnB,IAExBA,GACFA,EAAIlC,EAAOsE,QAAU,cAAgB,YAAYtE,EAAOxxB,OAAO46C,WAAWZ,UAE9E,EACAS,MAAO,SAAejpB,EAAQz2B,GAC5B,IAAI4/C,EAAW5/C,EAAE+L,OAEjB,GAAI0qB,EAAOxxB,OAAO46C,WAAWxtC,IAAMokB,EAAOxxB,OAAO46C,WAAWR,aAAe5oB,EAAOopB,WAAWlnB,IAAIh4B,OAAS,IAAM,GAAEi/C,GAAU3zB,SAASwK,EAAOxxB,OAAO46C,WAAWqC,aAAc,CAC1K,GAAIzrB,EAAOiZ,aAAejZ,EAAOiZ,WAAWC,QAAUiQ,IAAanpB,EAAOiZ,WAAWC,QAAUlZ,EAAOiZ,WAAWE,QAAUgQ,IAAanpB,EAAOiZ,WAAWE,QAAS,OACnK,IAAImQ,EAAWtpB,EAAOopB,WAAWlnB,IAAI1M,SAASwK,EAAOxxB,OAAO46C,WAAWP,cAEtD,IAAbS,EACFtpB,EAAOe,KAAK,kBAEZf,EAAOe,KAAK,kBAGdf,EAAOopB,WAAWlnB,IAAI7M,YAAY2K,EAAOxxB,OAAO46C,WAAWP,YAC7D,CACF,ICzXJ,SAAS,KAA2Q,OAA9P,GAAWl+C,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAK5T,IAAIq5B,GAAY,CACdzf,aAAc,WACZ,IAAI5M,EAAS/zB,KACb,GAAK+zB,EAAOxxB,OAAO89C,UAAU1wC,IAAOokB,EAAOssB,UAAU1wC,GAArD,CACA,IAAI0wC,EAAYtsB,EAAOssB,UACnBroB,EAAMjE,EAAOkE,aACbmG,EAAWrK,EAAOqK,SAClBkiB,EAAWD,EAAUC,SACrBC,EAAYF,EAAUE,UACtBC,EAAUH,EAAUG,QACpBvqB,EAAMoqB,EAAUpqB,IAChB1zB,EAASwxB,EAAOxxB,OAAO89C,UACvBI,EAAUH,EACVI,GAAUH,EAAYD,GAAYliB,EAElCpG,GACF0oB,GAAUA,EAENA,EAAS,GACXD,EAAUH,EAAWI,EACrBA,EAAS,IACCA,EAASJ,EAAWC,IAC9BE,EAAUF,EAAYG,IAEfA,EAAS,GAClBD,EAAUH,EAAWI,EACrBA,EAAS,GACAA,EAASJ,EAAWC,IAC7BE,EAAUF,EAAYG,GAGpB3sB,EAAOwD,gBACTipB,EAAQ12B,UAAU,eAAiB42B,EAAS,aAC5CF,EAAQ,GAAGltC,MAAMsI,MAAQ6kC,EAAU,OAEnCD,EAAQ12B,UAAU,oBAAsB42B,EAAS,UACjDF,EAAQ,GAAGltC,MAAMwf,OAAS2tB,EAAU,MAGlCl+C,EAAOkQ,OACT8S,aAAawO,EAAOssB,UAAUpF,SAC9BhlB,EAAI,GAAG3iB,MAAMqtC,QAAU,EACvB5sB,EAAOssB,UAAUpF,QAAU91C,YAAW,WACpC8wB,EAAI,GAAG3iB,MAAMqtC,QAAU,EACvB1qB,EAAIlM,WAAW,IACjB,GAAG,KA1C0D,CA4CjE,EACAoT,cAAe,SAAuBnT,GACpC,IAAI+J,EAAS/zB,KACR+zB,EAAOxxB,OAAO89C,UAAU1wC,IAAOokB,EAAOssB,UAAU1wC,IACrDokB,EAAOssB,UAAUG,QAAQz2B,WAAWC,EACtC,EACAsN,WAAY,WACV,IAAIvD,EAAS/zB,KACb,GAAK+zB,EAAOxxB,OAAO89C,UAAU1wC,IAAOokB,EAAOssB,UAAU1wC,GAArD,CACA,IAAI0wC,EAAYtsB,EAAOssB,UACnBG,EAAUH,EAAUG,QACpBvqB,EAAMoqB,EAAUpqB,IACpBuqB,EAAQ,GAAGltC,MAAMsI,MAAQ,GACzB4kC,EAAQ,GAAGltC,MAAMwf,OAAS,GAC1B,IAGIwtB,EAHAC,EAAYxsB,EAAOwD,eAAiBtB,EAAI,GAAGhK,YAAcgK,EAAI,GAAGxc,aAChEmnC,EAAU7sB,EAAOnsB,KAAOmsB,EAAOyF,YAC/BqnB,EAAcD,GAAWL,EAAYxsB,EAAOnsB,MAI9C04C,EADuC,SAArCvsB,EAAOxxB,OAAO89C,UAAUC,SACfC,EAAYK,EAEZnpB,SAAS1D,EAAOxxB,OAAO89C,UAAUC,SAAU,IAGpDvsB,EAAOwD,eACTipB,EAAQ,GAAGltC,MAAMsI,MAAQ0kC,EAAW,KAEpCE,EAAQ,GAAGltC,MAAMwf,OAASwtB,EAAW,KAIrCrqB,EAAI,GAAG3iB,MAAMC,QADXqtC,GAAW,EACU,OAEA,GAGrB7sB,EAAOxxB,OAAO89C,UAAU5tC,OAC1BwjB,EAAI,GAAG3iB,MAAMqtC,QAAU,GAGzB,GAAON,EAAW,CAChBE,UAAWA,EACXK,QAASA,EACTC,YAAaA,EACbP,SAAUA,IAGRvsB,EAAOxxB,OAAOo6B,eAAiB5I,EAAOsE,SACxCgoB,EAAUpqB,IAAIlC,EAAOsR,SAAW,WAAa,eAAetR,EAAOxxB,OAAO89C,UAAU9D,UAzCvB,CA2CjE,EACAuE,mBAAoB,SAA4BxjD,GAC9C,IAAIy2B,EAAS/zB,KAEb,OAAI+zB,EAAOwD,eACS,eAAXj6B,EAAE0L,MAAoC,cAAX1L,EAAE0L,KAAuB1L,EAAEuqC,cAAc,GAAGkZ,QAAUzjD,EAAEyjD,QAG1E,eAAXzjD,EAAE0L,MAAoC,cAAX1L,EAAE0L,KAAuB1L,EAAEuqC,cAAc,GAAGmZ,QAAU1jD,EAAE0jD,OAC5F,EACAC,gBAAiB,SAAyB3jD,GACxC,IAOI4jD,EAPAntB,EAAS/zB,KACTqgD,EAAYtsB,EAAOssB,UACnBroB,EAAMjE,EAAOkE,aACbhC,EAAMoqB,EAAUpqB,IAChBqqB,EAAWD,EAAUC,SACrBC,EAAYF,EAAUE,UACtBY,EAAed,EAAUc,aAE7BD,GAAiBb,EAAUS,mBAAmBxjD,GAAK24B,EAAI9J,SAAS4H,EAAOwD,eAAiB,OAAS,QAA2B,OAAjB4pB,EAAwBA,EAAeb,EAAW,KAAOC,EAAYD,GAChLY,EAAgBj8C,KAAKiW,IAAIjW,KAAKkW,IAAI+lC,EAAe,GAAI,GAEjDlpB,IACFkpB,EAAgB,EAAIA,GAGtB,IAAIvW,EAAW5W,EAAOiK,gBAAkBjK,EAAOyK,eAAiBzK,EAAOiK,gBAAkBkjB,EACzFntB,EAAOsK,eAAesM,GACtB5W,EAAO4M,aAAagK,GACpB5W,EAAO4L,oBACP5L,EAAO8K,qBACT,EACAuiB,YAAa,SAAqB9jD,GAChC,IAAIy2B,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAAO89C,UACvBA,EAAYtsB,EAAOssB,UACnBlqB,EAAapC,EAAOoC,WACpBF,EAAMoqB,EAAUpqB,IAChBuqB,EAAUH,EAAUG,QACxBzsB,EAAOssB,UAAUpZ,WAAY,EAC7BlT,EAAOssB,UAAUc,aAAe7jD,EAAE+L,SAAWm3C,EAAQ,IAAMljD,EAAE+L,SAAWm3C,EAAUH,EAAUS,mBAAmBxjD,GAAKA,EAAE+L,OAAOgjB,wBAAwB0H,EAAOwD,eAAiB,OAAS,OAAS,KAC/Lj6B,EAAEoP,iBACFpP,EAAE0sC,kBACF7T,EAAWpM,WAAW,KACtBy2B,EAAQz2B,WAAW,KACnBs2B,EAAUY,gBAAgB3jD,GAC1BioB,aAAawO,EAAOssB,UAAUgB,aAC9BprB,EAAIlM,WAAW,GAEXxnB,EAAOkQ,MACTwjB,EAAIpJ,IAAI,UAAW,GAGjBkH,EAAOxxB,OAAO05B,SAChBlI,EAAOoC,WAAWtJ,IAAI,mBAAoB,QAG5CkH,EAAOe,KAAK,qBAAsBx3B,EACpC,EACAgkD,WAAY,SAAoBhkD,GAC9B,IAAIy2B,EAAS/zB,KACTqgD,EAAYtsB,EAAOssB,UACnBlqB,EAAapC,EAAOoC,WACpBF,EAAMoqB,EAAUpqB,IAChBuqB,EAAUH,EAAUG,QACnBzsB,EAAOssB,UAAUpZ,YAClB3pC,EAAEoP,eAAgBpP,EAAEoP,iBAAsBpP,EAAEi7C,aAAc,EAC9D8H,EAAUY,gBAAgB3jD,GAC1B64B,EAAWpM,WAAW,GACtBkM,EAAIlM,WAAW,GACfy2B,EAAQz2B,WAAW,GACnBgK,EAAOe,KAAK,oBAAqBx3B,GACnC,EACAikD,UAAW,SAAmBjkD,GAC5B,IAAIy2B,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAAO89C,UACvBA,EAAYtsB,EAAOssB,UACnBlqB,EAAapC,EAAOoC,WACpBF,EAAMoqB,EAAUpqB,IACflC,EAAOssB,UAAUpZ,YACtBlT,EAAOssB,UAAUpZ,WAAY,EAEzBlT,EAAOxxB,OAAO05B,UAChBlI,EAAOoC,WAAWtJ,IAAI,mBAAoB,IAC1CsJ,EAAWpM,WAAW,KAGpBxnB,EAAOkQ,OACT8S,aAAawO,EAAOssB,UAAUgB,aAC9BttB,EAAOssB,UAAUgB,YAAcryB,IAAS,WACtCiH,EAAIpJ,IAAI,UAAW,GACnBoJ,EAAIlM,WAAW,IACjB,GAAG,MAGLgK,EAAOe,KAAK,mBAAoBx3B,GAE5BiF,EAAOi/C,eACTztB,EAAO8P,iBAEX,EACA4d,gBAAiB,WACf,IAAI1tB,EAAS/zB,KACb,GAAK+zB,EAAOxxB,OAAO89C,UAAU1wC,GAA7B,CACA,IAAIxO,EAAWsjB,IACX47B,EAAYtsB,EAAOssB,UACnBjN,EAAmBrf,EAAOqf,iBAC1BC,EAAqBtf,EAAOsf,mBAC5B9wC,EAASwxB,EAAOxxB,OAChB+uB,EAAUyC,EAAOzC,QACjB2E,EAAMoqB,EAAUpqB,IAChB5sB,EAAS4sB,EAAI,GACbyrB,KAAiBpwB,EAAQU,kBAAmBzvB,EAAO6rC,mBAAmB,CACxEC,SAAS,EACT/jB,SAAS,GAEP0H,KAAkBV,EAAQU,kBAAmBzvB,EAAO6rC,mBAAmB,CACzEC,SAAS,EACT/jB,SAAS,GAENjhB,IAEAioB,EAAQI,OAKXroB,EAAOqB,iBAAiB0oC,EAAiBt1B,MAAOiW,EAAOssB,UAAUe,YAAaM,GAC9Er4C,EAAOqB,iBAAiB0oC,EAAiBjF,KAAMpa,EAAOssB,UAAUiB,WAAYI,GAC5Er4C,EAAOqB,iBAAiB0oC,EAAiBr1B,IAAKgW,EAAOssB,UAAUkB,UAAWvvB,KAN1E3oB,EAAOqB,iBAAiB2oC,EAAmBv1B,MAAOiW,EAAOssB,UAAUe,YAAaM,GAChFvgD,EAASuJ,iBAAiB2oC,EAAmBlF,KAAMpa,EAAOssB,UAAUiB,WAAYI,GAChFvgD,EAASuJ,iBAAiB2oC,EAAmBt1B,IAAKgW,EAAOssB,UAAUkB,UAAWvvB,IAtBzC,CA4BzC,EACA2vB,iBAAkB,WAChB,IAAI5tB,EAAS/zB,KACb,GAAK+zB,EAAOxxB,OAAO89C,UAAU1wC,GAA7B,CACA,IAAIxO,EAAWsjB,IACX47B,EAAYtsB,EAAOssB,UACnBjN,EAAmBrf,EAAOqf,iBAC1BC,EAAqBtf,EAAOsf,mBAC5B9wC,EAASwxB,EAAOxxB,OAChB+uB,EAAUyC,EAAOzC,QACjB2E,EAAMoqB,EAAUpqB,IAChB5sB,EAAS4sB,EAAI,GACbyrB,KAAiBpwB,EAAQU,kBAAmBzvB,EAAO6rC,mBAAmB,CACxEC,SAAS,EACT/jB,SAAS,GAEP0H,KAAkBV,EAAQU,kBAAmBzvB,EAAO6rC,mBAAmB,CACzEC,SAAS,EACT/jB,SAAS,GAENjhB,IAEAioB,EAAQI,OAKXroB,EAAOuB,oBAAoBwoC,EAAiBt1B,MAAOiW,EAAOssB,UAAUe,YAAaM,GACjFr4C,EAAOuB,oBAAoBwoC,EAAiBjF,KAAMpa,EAAOssB,UAAUiB,WAAYI,GAC/Er4C,EAAOuB,oBAAoBwoC,EAAiBr1B,IAAKgW,EAAOssB,UAAUkB,UAAWvvB,KAN7E3oB,EAAOuB,oBAAoByoC,EAAmBv1B,MAAOiW,EAAOssB,UAAUe,YAAaM,GACnFvgD,EAASyJ,oBAAoByoC,EAAmBlF,KAAMpa,EAAOssB,UAAUiB,WAAYI,GACnFvgD,EAASyJ,oBAAoByoC,EAAmBt1B,IAAKgW,EAAOssB,UAAUkB,UAAWvvB,IAtB5C,CA4BzC,EACAgD,KAAM,WACJ,IAAIjB,EAAS/zB,KACTqgD,EAAYtsB,EAAOssB,UACnBuB,EAAY7tB,EAAOkC,IACvBlC,EAAOxxB,OAAO89C,UAAYpvB,GAA0B2wB,EAAW7tB,EAAOxxB,OAAO89C,UAAWtsB,EAAOxxB,OAAO4uB,eAAgB,CACpHxhB,GAAI,qBAEN,IAAIpN,EAASwxB,EAAOxxB,OAAO89C,UAC3B,GAAK99C,EAAOoN,GAAZ,CACA,IAAIsmB,EAAM,GAAE1zB,EAAOoN,IAEfokB,EAAOxxB,OAAOuvC,mBAA0C,kBAAdvvC,EAAOoN,IAAmBsmB,EAAIh4B,OAAS,GAA0C,IAArC2jD,EAAU/3C,KAAKtH,EAAOoN,IAAI1R,SAClHg4B,EAAM2rB,EAAU/3C,KAAKtH,EAAOoN,KAG9B,IAAI6wC,EAAUvqB,EAAIpsB,KAAK,IAAMkqB,EAAOxxB,OAAO89C,UAAUwB,WAE9B,IAAnBrB,EAAQviD,SACVuiD,EAAU,GAAE,eAAkBzsB,EAAOxxB,OAAO89C,UAAUwB,UAAY,YAClE5rB,EAAI/xB,OAAOs8C,IAGb,GAAOH,EAAW,CAChBpqB,IAAKA,EACLtmB,GAAIsmB,EAAI,GACRuqB,QAASA,EACTsB,OAAQtB,EAAQ,KAGdj+C,EAAOw/C,WACT1B,EAAUoB,kBAGRxrB,GACFA,EAAIlC,EAAOsE,QAAU,cAAgB,YAAYtE,EAAOxxB,OAAO89C,UAAU9D,UA1BrD,CA4BxB,EACArnB,QAAS,WACP,IAAInB,EAAS/zB,KACb+zB,EAAOssB,UAAUsB,kBACnB,GAEF,UACE7/C,KAAM,YACNS,OAAQ,CACN89C,UAAW,CACT1wC,GAAI,KACJ2wC,SAAU,OACV7tC,MAAM,EACNsvC,WAAW,EACXP,eAAe,EACfjF,UAAW,wBACXsF,UAAW,0BAGf97B,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxBssB,UAAW,GAAS,CAClBpZ,WAAW,EACXgU,QAAS,KACToG,YAAa,MACZjB,KAEP,EACAh1C,GAAI,CACF4pB,KAAM,SAAcjB,GAClBA,EAAOssB,UAAUrrB,OACjBjB,EAAOssB,UAAU/oB,aACjBvD,EAAOssB,UAAU1f,cACnB,EACA8E,OAAQ,SAAgB1R,GACtBA,EAAOssB,UAAU/oB,YACnB,EACAtD,OAAQ,SAAgBD,GACtBA,EAAOssB,UAAU/oB,YACnB,EACA3B,eAAgB,SAAwB5B,GACtCA,EAAOssB,UAAU/oB,YACnB,EACAqJ,aAAc,SAAsB5M,GAClCA,EAAOssB,UAAU1f,cACnB,EACAxD,cAAe,SAAuBpJ,EAAQ/J,GAC5C+J,EAAOssB,UAAUljB,cAAcnT,EACjC,EACA,iBAAkB,SAAuB+J,GACvC,IAAIkC,EAAMlC,EAAOssB,UAAUpqB,IAEvBA,GACFA,EAAIlC,EAAOsE,QAAU,cAAgB,YAAYtE,EAAOxxB,OAAO89C,UAAU9D,UAE7E,EACArnB,QAAS,SAAiBnB,GACxBA,EAAOssB,UAAUnrB,SACnB,ICzWJ,SAAS,KAA2Q,OAA9P,GAAWx2B,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAI5T,IAAIi7B,GAAW,CACbC,aAAc,SAAsBtyC,EAAIyuB,GACtC,IAAIrK,EAAS/zB,KACTg4B,EAAMjE,EAAOiE,IACb/B,EAAM,GAAEtmB,GACR8qC,EAAYziB,GAAO,EAAI,EACvBn1B,EAAIozB,EAAIvM,KAAK,yBAA2B,IACxCqX,EAAI9K,EAAIvM,KAAK,0BACbsX,EAAI/K,EAAIvM,KAAK,0BACbq1B,EAAQ9oB,EAAIvM,KAAK,8BACjBi3B,EAAU1qB,EAAIvM,KAAK,gCAyBvB,GAvBIqX,GAAKC,GACPD,EAAIA,GAAK,IACTC,EAAIA,GAAK,KACAjN,EAAOwD,gBAChBwJ,EAAIl+B,EACJm+B,EAAI,MAEJA,EAAIn+B,EACJk+B,EAAI,KAIJA,EADEA,EAAE9lB,QAAQ,MAAQ,EAChBwc,SAASsJ,EAAG,IAAM3C,EAAWqc,EAAY,IAEzC1Z,EAAI3C,EAAWqc,EAAY,KAI/BzZ,EADEA,EAAE/lB,QAAQ,MAAQ,EAChBwc,SAASuJ,EAAG,IAAM5C,EAAW,IAE7B4C,EAAI5C,EAAW,KAGE,qBAAZuiB,GAAuC,OAAZA,EAAkB,CACtD,IAAIuB,EAAiBvB,GAAWA,EAAU,IAAM,EAAI17C,KAAKyW,IAAI0iB,IAC7DnI,EAAI,GAAG3iB,MAAMqtC,QAAUuB,CACzB,CAEA,GAAqB,qBAAVnD,GAAmC,OAAVA,EAClC9oB,EAAInM,UAAU,eAAiBiX,EAAI,KAAOC,EAAI,cACzC,CACL,IAAImhB,EAAepD,GAASA,EAAQ,IAAM,EAAI95C,KAAKyW,IAAI0iB,IACvDnI,EAAInM,UAAU,eAAiBiX,EAAI,KAAOC,EAAI,gBAAkBmhB,EAAe,IACjF,CACF,EACAxhB,aAAc,WACZ,IAAI5M,EAAS/zB,KACTi2B,EAAMlC,EAAOkC,IACbsC,EAASxE,EAAOwE,OAChB6F,EAAWrK,EAAOqK,SAClB1F,EAAW3E,EAAO2E,SACtBzC,EAAIlnB,SAAS,4IAA4I8F,MAAK,SAAUlF,GACtKokB,EAAOquB,SAASH,aAAatyC,EAAIyuB,EACnC,IACA7F,EAAO1jB,MAAK,SAAU8+B,EAAS3X,GAC7B,IAAI+B,EAAgB4V,EAAQvV,SAExBrK,EAAOxxB,OAAOm4B,eAAiB,GAAqC,SAAhC3G,EAAOxxB,OAAOw3B,gBACpDgE,GAAiB94B,KAAK60B,KAAKkC,EAAa,GAAKoC,GAAY1F,EAASz6B,OAAS,IAG7E8/B,EAAgB94B,KAAKkW,IAAIlW,KAAKiW,IAAI6iB,GAAgB,GAAI,GACtD,GAAE4V,GAAS9pC,KAAK,4IAA4IgL,MAAK,SAAUlF,GACzKokB,EAAOquB,SAASH,aAAatyC,EAAIouB,EACnC,GACF,GACF,EACAZ,cAAe,SAAuBnT,QACnB,IAAbA,IACFA,EAAWhqB,KAAKuC,OAAO06B,OAGzB,IAAIlJ,EAAS/zB,KACTi2B,EAAMlC,EAAOkC,IACjBA,EAAIpsB,KAAK,4IAA4IgL,MAAK,SAAUwtC,GAClK,IAAIC,EAAc,GAAED,GAChBE,EAAmB9qB,SAAS6qB,EAAY54B,KAAK,iCAAkC,KAAOM,EACzE,IAAbA,IAAgBu4B,EAAmB,GACvCD,EAAYv4B,WAAWw4B,EACzB,GACF,GAEF,UACEzgD,KAAM,WACNS,OAAQ,CACN6/C,SAAU,CACR/pB,SAAS,IAGbtS,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxBquB,SAAU,GAAS,CAAC,EAAGJ,KAE3B,EACA52C,GAAI,CACF0rC,WAAY,SAAoB/iB,GACzBA,EAAOxxB,OAAO6/C,SAAS/pB,UAC5BtE,EAAOxxB,OAAOs6B,qBAAsB,EACpC9I,EAAOmb,eAAerS,qBAAsB,EAC9C,EACA7H,KAAM,SAAcjB,GACbA,EAAOxxB,OAAO6/C,SAAS/pB,SAC5BtE,EAAOquB,SAASzhB,cAClB,EACAA,aAAc,SAAsB5M,GAC7BA,EAAOxxB,OAAO6/C,SAAS/pB,SAC5BtE,EAAOquB,SAASzhB,cAClB,EACAxD,cAAe,SAAuBpJ,EAAQ/J,GACvC+J,EAAOxxB,OAAO6/C,SAAS/pB,SAC5BtE,EAAOquB,SAASjlB,cAAcnT,EAChC,ICtHJ,SAAS,KAA2Q,OAA9P,GAAWtrB,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAK5T,IAAIy7B,GAAO,CAETC,0BAA2B,SAAmCnlD,GAC5D,GAAIA,EAAEuqC,cAAc5pC,OAAS,EAAG,OAAO,EACvC,IAAIykD,EAAKplD,EAAEuqC,cAAc,GAAGC,MACxB6a,EAAKrlD,EAAEuqC,cAAc,GAAGG,MACxB4a,EAAKtlD,EAAEuqC,cAAc,GAAGC,MACxB+a,EAAKvlD,EAAEuqC,cAAc,GAAGG,MACxBsD,EAAWrmC,KAAKykC,KAAKzkC,KAAKC,IAAI09C,EAAKF,EAAI,GAAKz9C,KAAKC,IAAI29C,EAAKF,EAAI,IAClE,OAAOrX,CACT,EAEAwX,eAAgB,SAAwBxlD,GACtC,IAAIy2B,EAAS/zB,KACTsxB,EAAUyC,EAAOzC,QACjB/uB,EAASwxB,EAAOxxB,OAAOwgD,KACvBA,EAAOhvB,EAAOgvB,KACdC,EAAUD,EAAKC,QAInB,GAHAD,EAAKE,oBAAqB,EAC1BF,EAAKG,kBAAmB,GAEnB5xB,EAAQa,SAAU,CACrB,GAAe,eAAX70B,EAAE0L,MAAoC,eAAX1L,EAAE0L,MAAyB1L,EAAEuqC,cAAc5pC,OAAS,EACjF,OAGF8kD,EAAKE,oBAAqB,EAC1BD,EAAQG,WAAaX,GAAKC,0BAA0BnlD,EACtD,CAEK0lD,EAAQxM,UAAawM,EAAQxM,SAASv4C,SACzC+kD,EAAQxM,SAAW,GAAEl5C,EAAE+L,QAAQ+F,QAAQ,IAAM2kB,EAAOxxB,OAAOi2B,YAC3B,IAA5BwqB,EAAQxM,SAASv4C,SAAc+kD,EAAQxM,SAAWziB,EAAOwE,OAAOjL,GAAGyG,EAAOuJ,cAC9E0lB,EAAQI,SAAWJ,EAAQxM,SAAS3sC,KAAK,kDACzCm5C,EAAQK,aAAeL,EAAQI,SAASt0B,OAAO,IAAMvsB,EAAO+gD,gBAC5DN,EAAQO,SAAWP,EAAQK,aAAa35B,KAAK,qBAAuBnnB,EAAOghD,SAEvC,IAAhCP,EAAQK,aAAaplD,SAMvB+kD,EAAQI,UACVJ,EAAQI,SAASr5B,WAAW,GAG9BgK,EAAOgvB,KAAKS,WAAY,GATpBR,EAAQI,cAAWzrC,CAUzB,EACA8rC,gBAAiB,SAAyBnmD,GACxC,IAAIy2B,EAAS/zB,KACTsxB,EAAUyC,EAAOzC,QACjB/uB,EAASwxB,EAAOxxB,OAAOwgD,KACvBA,EAAOhvB,EAAOgvB,KACdC,EAAUD,EAAKC,QAEnB,IAAK1xB,EAAQa,SAAU,CACrB,GAAe,cAAX70B,EAAE0L,MAAmC,cAAX1L,EAAE0L,MAAwB1L,EAAEuqC,cAAc5pC,OAAS,EAC/E,OAGF8kD,EAAKG,kBAAmB,EACxBF,EAAQU,UAAYlB,GAAKC,0BAA0BnlD,EACrD,CAEK0lD,EAAQI,UAAwC,IAA5BJ,EAAQI,SAASnlD,QAKtCqzB,EAAQa,SACV4wB,EAAKhE,MAAQzhD,EAAEyhD,MAAQgE,EAAKZ,aAE5BY,EAAKhE,MAAQiE,EAAQU,UAAYV,EAAQG,WAAaJ,EAAKZ,aAGzDY,EAAKhE,MAAQiE,EAAQO,WACvBR,EAAKhE,MAAQiE,EAAQO,SAAW,EAAIt+C,KAAKC,IAAI69C,EAAKhE,MAAQiE,EAAQO,SAAW,EAAG,KAG9ER,EAAKhE,MAAQx8C,EAAO4tC,WACtB4S,EAAKhE,MAAQx8C,EAAO4tC,SAAW,EAAIlrC,KAAKC,IAAI3C,EAAO4tC,SAAW4S,EAAKhE,MAAQ,EAAG,KAGhFiE,EAAQI,SAASt5B,UAAU,4BAA8Bi5B,EAAKhE,MAAQ,MAlBrD,kBAAXzhD,EAAE0L,MAA0B+5C,EAAKD,eAAexlD,EAmBxD,EACAqmD,aAAc,SAAsBrmD,GAClC,IAAIy2B,EAAS/zB,KACTuxB,EAASwC,EAAOxC,OAChBD,EAAUyC,EAAOzC,QACjB/uB,EAASwxB,EAAOxxB,OAAOwgD,KACvBA,EAAOhvB,EAAOgvB,KACdC,EAAUD,EAAKC,QAEnB,IAAK1xB,EAAQa,SAAU,CACrB,IAAK4wB,EAAKE,qBAAuBF,EAAKG,iBACpC,OAGF,GAAe,aAAX5lD,EAAE0L,MAAkC,aAAX1L,EAAE0L,MAAuB1L,EAAE+rC,eAAeprC,OAAS,IAAMszB,EAAOoB,QAC3F,OAGFowB,EAAKE,oBAAqB,EAC1BF,EAAKG,kBAAmB,CAC1B,CAEKF,EAAQI,UAAwC,IAA5BJ,EAAQI,SAASnlD,SAC1C8kD,EAAKhE,MAAQ95C,KAAKiW,IAAIjW,KAAKkW,IAAI4nC,EAAKhE,MAAOiE,EAAQO,UAAWhhD,EAAO4tC,UACrE6S,EAAQI,SAASr5B,WAAWgK,EAAOxxB,OAAO06B,OAAOnT,UAAU,4BAA8Bi5B,EAAKhE,MAAQ,KACtGgE,EAAKZ,aAAeY,EAAKhE,MACzBgE,EAAKS,WAAY,EACE,IAAfT,EAAKhE,QAAaiE,EAAQxM,cAAW7+B,GAC3C,EACA6uB,aAAc,SAAsBlpC,GAClC,IAAIy2B,EAAS/zB,KACTuxB,EAASwC,EAAOxC,OAChBwxB,EAAOhvB,EAAOgvB,KACdC,EAAUD,EAAKC,QACf9R,EAAQ6R,EAAK7R,MACZ8R,EAAQI,UAAwC,IAA5BJ,EAAQI,SAASnlD,SACtCizC,EAAMjK,YACN1V,EAAOoB,SAAWr1B,EAAEmP,YAAYnP,EAAEoP,iBACtCwkC,EAAMjK,WAAY,EAClBiK,EAAM0S,aAAa7iB,EAAe,eAAXzjC,EAAE0L,KAAwB1L,EAAEuqC,cAAc,GAAGC,MAAQxqC,EAAEwqC,MAC9EoJ,EAAM0S,aAAa5iB,EAAe,eAAX1jC,EAAE0L,KAAwB1L,EAAEuqC,cAAc,GAAGG,MAAQ1qC,EAAE0qC,OAChF,EACAmB,YAAa,SAAqB7rC,GAChC,IAAIy2B,EAAS/zB,KACT+iD,EAAOhvB,EAAOgvB,KACdC,EAAUD,EAAKC,QACf9R,EAAQ6R,EAAK7R,MACb3F,EAAWwX,EAAKxX,SACpB,GAAKyX,EAAQI,UAAwC,IAA5BJ,EAAQI,SAASnlD,SAC1C81B,EAAO2T,YAAa,EACfwJ,EAAMjK,WAAc+b,EAAQxM,UAAjC,CAEKtF,EAAMhK,UACTgK,EAAMt1B,MAAQonC,EAAQI,SAAS,GAAGn3B,YAClCilB,EAAMpe,OAASkwB,EAAQI,SAAS,GAAG3pC,aACnCy3B,EAAMjJ,OAAS9Y,GAAa6zB,EAAQK,aAAa,GAAI,MAAQ,EAC7DnS,EAAMhJ,OAAS/Y,GAAa6zB,EAAQK,aAAa,GAAI,MAAQ,EAC7DL,EAAQa,WAAab,EAAQxM,SAAS,GAAGvqB,YACzC+2B,EAAQc,YAAcd,EAAQxM,SAAS,GAAG/8B,aAC1CupC,EAAQK,aAAat5B,WAAW,IAIlC,IAAIg6B,EAAc7S,EAAMt1B,MAAQmnC,EAAKhE,MACjCiF,EAAe9S,EAAMpe,OAASiwB,EAAKhE,MACvC,KAAIgF,EAAcf,EAAQa,YAAcG,EAAehB,EAAQc,aAA/D,CAQA,GAPA5S,EAAM+S,KAAOh/C,KAAKkW,IAAI6nC,EAAQa,WAAa,EAAIE,EAAc,EAAG,GAChE7S,EAAMgT,MAAQhT,EAAM+S,KACpB/S,EAAMiT,KAAOl/C,KAAKkW,IAAI6nC,EAAQc,YAAc,EAAIE,EAAe,EAAG,GAClE9S,EAAMkT,MAAQlT,EAAMiT,KACpBjT,EAAMmT,eAAetjB,EAAe,cAAXzjC,EAAE0L,KAAuB1L,EAAEuqC,cAAc,GAAGC,MAAQxqC,EAAEwqC,MAC/EoJ,EAAMmT,eAAerjB,EAAe,cAAX1jC,EAAE0L,KAAuB1L,EAAEuqC,cAAc,GAAGG,MAAQ1qC,EAAE0qC,OAE1EkJ,EAAMhK,UAAY6b,EAAKS,UAAW,CACrC,GAAIzvB,EAAOwD,iBAAmBtyB,KAAK6S,MAAMo5B,EAAM+S,QAAUh/C,KAAK6S,MAAMo5B,EAAMjJ,SAAWiJ,EAAMmT,eAAetjB,EAAImQ,EAAM0S,aAAa7iB,GAAK97B,KAAK6S,MAAMo5B,EAAMgT,QAAUj/C,KAAK6S,MAAMo5B,EAAMjJ,SAAWiJ,EAAMmT,eAAetjB,EAAImQ,EAAM0S,aAAa7iB,GAEvO,YADAmQ,EAAMjK,WAAY,GAIpB,IAAKlT,EAAOwD,iBAAmBtyB,KAAK6S,MAAMo5B,EAAMiT,QAAUl/C,KAAK6S,MAAMo5B,EAAMhJ,SAAWgJ,EAAMmT,eAAerjB,EAAIkQ,EAAM0S,aAAa5iB,GAAK/7B,KAAK6S,MAAMo5B,EAAMkT,QAAUn/C,KAAK6S,MAAMo5B,EAAMhJ,SAAWgJ,EAAMmT,eAAerjB,EAAIkQ,EAAM0S,aAAa5iB,GAExO,YADAkQ,EAAMjK,WAAY,EAGtB,CAEI3pC,EAAEmP,YACJnP,EAAEoP,iBAGJpP,EAAE0sC,kBACFkH,EAAMhK,SAAU,EAChBgK,EAAMtJ,SAAWsJ,EAAMmT,eAAetjB,EAAImQ,EAAM0S,aAAa7iB,EAAImQ,EAAMjJ,OACvEiJ,EAAMnJ,SAAWmJ,EAAMmT,eAAerjB,EAAIkQ,EAAM0S,aAAa5iB,EAAIkQ,EAAMhJ,OAEnEgJ,EAAMtJ,SAAWsJ,EAAM+S,OACzB/S,EAAMtJ,SAAWsJ,EAAM+S,KAAO,EAAIh/C,KAAKC,IAAIgsC,EAAM+S,KAAO/S,EAAMtJ,SAAW,EAAG,KAG1EsJ,EAAMtJ,SAAWsJ,EAAMgT,OACzBhT,EAAMtJ,SAAWsJ,EAAMgT,KAAO,EAAIj/C,KAAKC,IAAIgsC,EAAMtJ,SAAWsJ,EAAMgT,KAAO,EAAG,KAG1EhT,EAAMnJ,SAAWmJ,EAAMiT,OACzBjT,EAAMnJ,SAAWmJ,EAAMiT,KAAO,EAAIl/C,KAAKC,IAAIgsC,EAAMiT,KAAOjT,EAAMnJ,SAAW,EAAG,KAG1EmJ,EAAMnJ,SAAWmJ,EAAMkT,OACzBlT,EAAMnJ,SAAWmJ,EAAMkT,KAAO,EAAIn/C,KAAKC,IAAIgsC,EAAMnJ,SAAWmJ,EAAMkT,KAAO,EAAG,KAIzE7Y,EAAS+Y,gBAAe/Y,EAAS+Y,cAAgBpT,EAAMmT,eAAetjB,GACtEwK,EAASgZ,gBAAehZ,EAASgZ,cAAgBrT,EAAMmT,eAAerjB,GACtEuK,EAASiZ,WAAUjZ,EAASiZ,SAAWn/B,KAAK4J,OACjDsc,EAASxK,GAAKmQ,EAAMmT,eAAetjB,EAAIwK,EAAS+Y,gBAAkBj/B,KAAK4J,MAAQsc,EAASiZ,UAAY,EACpGjZ,EAASvK,GAAKkQ,EAAMmT,eAAerjB,EAAIuK,EAASgZ,gBAAkBl/B,KAAK4J,MAAQsc,EAASiZ,UAAY,EAChGv/C,KAAKyW,IAAIw1B,EAAMmT,eAAetjB,EAAIwK,EAAS+Y,eAAiB,IAAG/Y,EAASxK,EAAI,GAC5E97B,KAAKyW,IAAIw1B,EAAMmT,eAAerjB,EAAIuK,EAASgZ,eAAiB,IAAGhZ,EAASvK,EAAI,GAChFuK,EAAS+Y,cAAgBpT,EAAMmT,eAAetjB,EAC9CwK,EAASgZ,cAAgBrT,EAAMmT,eAAerjB,EAC9CuK,EAASiZ,SAAWn/B,KAAK4J,MACzB+zB,EAAQK,aAAav5B,UAAU,eAAiBonB,EAAMtJ,SAAW,OAASsJ,EAAMnJ,SAAW,QAxDT,CAfjC,CAwEnD,EACA8C,WAAY,WACV,IAAI9W,EAAS/zB,KACT+iD,EAAOhvB,EAAOgvB,KACdC,EAAUD,EAAKC,QACf9R,EAAQ6R,EAAK7R,MACb3F,EAAWwX,EAAKxX,SACpB,GAAKyX,EAAQI,UAAwC,IAA5BJ,EAAQI,SAASnlD,OAA1C,CAEA,IAAKizC,EAAMjK,YAAciK,EAAMhK,QAG7B,OAFAgK,EAAMjK,WAAY,OAClBiK,EAAMhK,SAAU,GAIlBgK,EAAMjK,WAAY,EAClBiK,EAAMhK,SAAU,EAChB,IAAIud,EAAoB,IACpBC,EAAoB,IACpBC,EAAoBpZ,EAASxK,EAAI0jB,EACjCG,EAAe1T,EAAMtJ,SAAW+c,EAChCE,EAAoBtZ,EAASvK,EAAI0jB,EACjCI,EAAe5T,EAAMnJ,SAAW8c,EAEjB,IAAftZ,EAASxK,IAAS0jB,EAAoBx/C,KAAKyW,KAAKkpC,EAAe1T,EAAMtJ,UAAY2D,EAASxK,IAC3E,IAAfwK,EAASvK,IAAS0jB,EAAoBz/C,KAAKyW,KAAKopC,EAAe5T,EAAMnJ,UAAYwD,EAASvK,IAC9F,IAAI0K,EAAmBzmC,KAAKiW,IAAIupC,EAAmBC,GACnDxT,EAAMtJ,SAAWgd,EACjB1T,EAAMnJ,SAAW+c,EAEjB,IAAIf,EAAc7S,EAAMt1B,MAAQmnC,EAAKhE,MACjCiF,EAAe9S,EAAMpe,OAASiwB,EAAKhE,MACvC7N,EAAM+S,KAAOh/C,KAAKkW,IAAI6nC,EAAQa,WAAa,EAAIE,EAAc,EAAG,GAChE7S,EAAMgT,MAAQhT,EAAM+S,KACpB/S,EAAMiT,KAAOl/C,KAAKkW,IAAI6nC,EAAQc,YAAc,EAAIE,EAAe,EAAG,GAClE9S,EAAMkT,MAAQlT,EAAMiT,KACpBjT,EAAMtJ,SAAW3iC,KAAKiW,IAAIjW,KAAKkW,IAAI+1B,EAAMtJ,SAAUsJ,EAAMgT,MAAOhT,EAAM+S,MACtE/S,EAAMnJ,SAAW9iC,KAAKiW,IAAIjW,KAAKkW,IAAI+1B,EAAMnJ,SAAUmJ,EAAMkT,MAAOlT,EAAMiT,MACtEnB,EAAQK,aAAat5B,WAAW2hB,GAAkB5hB,UAAU,eAAiBonB,EAAMtJ,SAAW,OAASsJ,EAAMnJ,SAAW,QA/B1D,CAgChE,EACAgd,gBAAiB,WACf,IAAIhxB,EAAS/zB,KACT+iD,EAAOhvB,EAAOgvB,KACdC,EAAUD,EAAKC,QAEfA,EAAQxM,UAAYziB,EAAO8L,gBAAkB9L,EAAOuJ,cAClD0lB,EAAQI,UACVJ,EAAQI,SAASt5B,UAAU,+BAGzBk5B,EAAQK,cACVL,EAAQK,aAAav5B,UAAU,sBAGjCi5B,EAAKhE,MAAQ,EACbgE,EAAKZ,aAAe,EACpBa,EAAQxM,cAAW7+B,EACnBqrC,EAAQI,cAAWzrC,EACnBqrC,EAAQK,kBAAe1rC,EAE3B,EAEAnF,OAAQ,SAAgBlV,GACtB,IAAIy2B,EAAS/zB,KACT+iD,EAAOhvB,EAAOgvB,KAEdA,EAAKhE,OAAwB,IAAfgE,EAAKhE,MAErBgE,EAAKiC,MAGLjC,EAAKkC,GAAG3nD,EAEZ,EACA2nD,GAAI,SAAa3nD,GACf,IA0BI4nD,EACAC,EACAC,EACAC,EACA7b,EACAC,EACA6b,EACAC,EACAC,EACAC,EACA1B,EACAC,EACA0B,EACAC,EACAC,EACAC,EACAhC,EACAC,EA3CA/vB,EAAS/zB,KACT2B,EAAS,IACTohD,EAAOhvB,EAAOgvB,KACdxgD,EAASwxB,EAAOxxB,OAAOwgD,KACvBC,EAAUD,EAAKC,QACf9R,EAAQ6R,EAAK7R,OAEZ8R,EAAQxM,WACPl5C,GAAKA,EAAE+L,SACT25C,EAAQxM,SAAW,GAAEl5C,EAAE+L,QAAQ+F,QAAQ,IAAM2kB,EAAOxxB,OAAOi2B,aAGxDwqB,EAAQxM,WACPziB,EAAOxxB,OAAO61B,SAAWrE,EAAOxxB,OAAO61B,QAAQC,SAAWtE,EAAOqE,QACnE4qB,EAAQxM,SAAWziB,EAAOoC,WAAWpnB,SAAS,IAAMglB,EAAOxxB,OAAOy8B,kBAElEgkB,EAAQxM,SAAWziB,EAAOwE,OAAOjL,GAAGyG,EAAOuJ,cAI/C0lB,EAAQI,SAAWJ,EAAQxM,SAAS3sC,KAAK,kDACzCm5C,EAAQK,aAAeL,EAAQI,SAASt0B,OAAO,IAAMvsB,EAAO+gD,iBAGzDN,EAAQI,UAAwC,IAA5BJ,EAAQI,SAASnlD,QAAiB+kD,EAAQK,cAAgD,IAAhCL,EAAQK,aAAaplD,UACxG+kD,EAAQxM,SAAS9tB,SAAS,GAAKnmB,EAAOujD,kBAoBF,qBAAzB5U,EAAM0S,aAAa7iB,GAAqBzjC,GACjD4nD,EAAoB,aAAX5nD,EAAE0L,KAAsB1L,EAAE+rC,eAAe,GAAGvB,MAAQxqC,EAAEwqC,MAC/Dqd,EAAoB,aAAX7nD,EAAE0L,KAAsB1L,EAAE+rC,eAAe,GAAGrB,MAAQ1qC,EAAE0qC,QAE/Dkd,EAAShU,EAAM0S,aAAa7iB,EAC5BokB,EAASjU,EAAM0S,aAAa5iB,GAG9B+hB,EAAKhE,MAAQiE,EAAQK,aAAa35B,KAAK,qBAAuBnnB,EAAOghD,SACrER,EAAKZ,aAAea,EAAQK,aAAa35B,KAAK,qBAAuBnnB,EAAOghD,SAExEjmD,GACFumD,EAAab,EAAQxM,SAAS,GAAGvqB,YACjC63B,EAAcd,EAAQxM,SAAS,GAAG/8B,aAClC2rC,EAAUpC,EAAQxM,SAASrqB,SAASS,KAAOjrB,EAAO+qB,QAClD24B,EAAUrC,EAAQxM,SAASrqB,SAASQ,IAAMhrB,EAAO6qB,QACjDgd,EAAQ4b,EAAUvB,EAAa,EAAIqB,EACnCzb,EAAQ4b,EAAUvB,EAAc,EAAIqB,EACpCK,EAAaxC,EAAQI,SAAS,GAAGn3B,YACjCw5B,EAAczC,EAAQI,SAAS,GAAG3pC,aAClCsqC,EAAcyB,EAAazC,EAAKhE,MAChCiF,EAAeyB,EAAc1C,EAAKhE,MAClC2G,EAAgBzgD,KAAKkW,IAAI0oC,EAAa,EAAIE,EAAc,EAAG,GAC3D4B,EAAgB1gD,KAAKkW,IAAI2oC,EAAc,EAAIE,EAAe,EAAG,GAC7D4B,GAAiBF,EACjBG,GAAiBF,EACjBL,EAAa9b,EAAQuZ,EAAKhE,MAC1BwG,EAAa9b,EAAQsZ,EAAKhE,MAEtBuG,EAAaI,IACfJ,EAAaI,GAGXJ,EAAaM,IACfN,EAAaM,GAGXL,EAAaI,IACfJ,EAAaI,GAGXJ,EAAaM,IACfN,EAAaM,KAGfP,EAAa,EACbC,EAAa,GAGfvC,EAAQK,aAAat5B,WAAW,KAAKD,UAAU,eAAiBw7B,EAAa,OAASC,EAAa,SACnGvC,EAAQI,SAASr5B,WAAW,KAAKD,UAAU,4BAA8Bi5B,EAAKhE,MAAQ,KACxF,EACAiG,IAAK,WACH,IAAIjxB,EAAS/zB,KACT+iD,EAAOhvB,EAAOgvB,KACdxgD,EAASwxB,EAAOxxB,OAAOwgD,KACvBC,EAAUD,EAAKC,QAEdA,EAAQxM,WACPziB,EAAOxxB,OAAO61B,SAAWrE,EAAOxxB,OAAO61B,QAAQC,SAAWtE,EAAOqE,QACnE4qB,EAAQxM,SAAWziB,EAAOoC,WAAWpnB,SAAS,IAAMglB,EAAOxxB,OAAOy8B,kBAElEgkB,EAAQxM,SAAWziB,EAAOwE,OAAOjL,GAAGyG,EAAOuJ,aAG7C0lB,EAAQI,SAAWJ,EAAQxM,SAAS3sC,KAAK,kDACzCm5C,EAAQK,aAAeL,EAAQI,SAASt0B,OAAO,IAAMvsB,EAAO+gD,iBAGzDN,EAAQI,UAAwC,IAA5BJ,EAAQI,SAASnlD,QAAiB+kD,EAAQK,cAAgD,IAAhCL,EAAQK,aAAaplD,SACxG8kD,EAAKhE,MAAQ,EACbgE,EAAKZ,aAAe,EACpBa,EAAQK,aAAat5B,WAAW,KAAKD,UAAU,sBAC/Ck5B,EAAQI,SAASr5B,WAAW,KAAKD,UAAU,+BAC3Ck5B,EAAQxM,SAASxtB,YAAY,GAAKzmB,EAAOujD,kBACzC9C,EAAQxM,cAAW7+B,EACrB,EACAouC,eAAgB,SAAwBnwC,GACtC,IAAIme,EAAS/zB,KACT+iD,EAAOhvB,EAAOgvB,KACd75C,EAAW65C,EAAKiD,cAChB3X,EAAU0U,EAAK/wB,gBACnB+B,EAAOoC,WAAWvgB,GAAQ,eAAgB1M,EAAU65C,EAAKD,eAAgBzU,GACzEta,EAAOoC,WAAWvgB,GAAQ,gBAAiB1M,EAAU65C,EAAKU,gBAAiBpV,GAC3Eta,EAAOoC,WAAWvgB,GAAQ,aAAc1M,EAAU65C,EAAKY,aAActV,EACvE,EACA4X,eAAgB,WACVjmD,KAAK+iD,KAAKmD,kBACdlmD,KAAK+iD,KAAKmD,iBAAkB,EAC5BlmD,KAAK+iD,KAAKgD,eAAe,MAC3B,EACAI,gBAAiB,WACVnmD,KAAK+iD,KAAKmD,kBACflmD,KAAK+iD,KAAKmD,iBAAkB,EAC5BlmD,KAAK+iD,KAAKgD,eAAe,OAC3B,EAEAlW,OAAQ,WACN,IAAI9b,EAAS/zB,KACTsxB,EAAUyC,EAAOzC,QACjByxB,EAAOhvB,EAAOgvB,KAClB,IAAIA,EAAK1qB,QAAT,CACA0qB,EAAK1qB,SAAU,EACf,IAAIrG,IAA+C,eAA7B+B,EAAOma,YAAYpwB,QAA0BwT,EAAQU,kBAAmB+B,EAAOxxB,OAAO6rC,mBAAmB,CAC7HC,SAAS,EACT/jB,SAAS,GAEP87B,GAA4B90B,EAAQU,iBAAkB,CACxDqc,SAAS,EACT/jB,SAAS,GAEP07B,EAAgB,IAAMjyB,EAAOxxB,OAAOi2B,WACxCzE,EAAOgvB,KAAK/wB,gBAAkBA,EAC9B+B,EAAOgvB,KAAKiD,cAAgBA,EAExB10B,EAAQa,UACV4B,EAAOoC,WAAW/qB,GAAG2oB,EAAOma,YAAYpwB,MAAOiW,EAAOgvB,KAAKkD,eAAgBj0B,GAC3E+B,EAAOoC,WAAW/qB,GAAG2oB,EAAOma,YAAYnwB,IAAKgW,EAAOgvB,KAAKoD,gBAAiBn0B,IACpC,eAA7B+B,EAAOma,YAAYpwB,QAC5BiW,EAAOoC,WAAW/qB,GAAG2oB,EAAOma,YAAYpwB,MAAOkoC,EAAejD,EAAKD,eAAgB9wB,GACnF+B,EAAOoC,WAAW/qB,GAAG2oB,EAAOma,YAAYC,KAAM6X,EAAejD,EAAKU,gBAAiB2C,GACnFryB,EAAOoC,WAAW/qB,GAAG2oB,EAAOma,YAAYnwB,IAAKioC,EAAejD,EAAKY,aAAc3xB,GAE3E+B,EAAOma,YAAYI,QACrBva,EAAOoC,WAAW/qB,GAAG2oB,EAAOma,YAAYI,OAAQ0X,EAAejD,EAAKY,aAAc3xB,IAKtF+B,EAAOoC,WAAW/qB,GAAG2oB,EAAOma,YAAYC,KAAM,IAAMpa,EAAOxxB,OAAOwgD,KAAKO,eAAgBP,EAAK5Z,YAAaid,EA5BjF,CA6B1B,EACAxW,QAAS,WACP,IAAI7b,EAAS/zB,KACT+iD,EAAOhvB,EAAOgvB,KAClB,GAAKA,EAAK1qB,QAAV,CACA,IAAI/G,EAAUyC,EAAOzC,QACrByC,EAAOgvB,KAAK1qB,SAAU,EACtB,IAAIrG,IAA+C,eAA7B+B,EAAOma,YAAYpwB,QAA0BwT,EAAQU,kBAAmB+B,EAAOxxB,OAAO6rC,mBAAmB,CAC7HC,SAAS,EACT/jB,SAAS,GAEP87B,GAA4B90B,EAAQU,iBAAkB,CACxDqc,SAAS,EACT/jB,SAAS,GAEP07B,EAAgB,IAAMjyB,EAAOxxB,OAAOi2B,WAEpClH,EAAQa,UACV4B,EAAOoC,WAAW3vB,IAAIutB,EAAOma,YAAYpwB,MAAOiW,EAAOgvB,KAAKkD,eAAgBj0B,GAC5E+B,EAAOoC,WAAW3vB,IAAIutB,EAAOma,YAAYnwB,IAAKgW,EAAOgvB,KAAKoD,gBAAiBn0B,IACrC,eAA7B+B,EAAOma,YAAYpwB,QAC5BiW,EAAOoC,WAAW3vB,IAAIutB,EAAOma,YAAYpwB,MAAOkoC,EAAejD,EAAKD,eAAgB9wB,GACpF+B,EAAOoC,WAAW3vB,IAAIutB,EAAOma,YAAYC,KAAM6X,EAAejD,EAAKU,gBAAiB2C,GACpFryB,EAAOoC,WAAW3vB,IAAIutB,EAAOma,YAAYnwB,IAAKioC,EAAejD,EAAKY,aAAc3xB,GAE5E+B,EAAOma,YAAYI,QACrBva,EAAOoC,WAAW3vB,IAAIutB,EAAOma,YAAYI,OAAQ0X,EAAejD,EAAKY,aAAc3xB,IAKvF+B,EAAOoC,WAAW3vB,IAAIutB,EAAOma,YAAYC,KAAM,IAAMpa,EAAOxxB,OAAOwgD,KAAKO,eAAgBP,EAAK5Z,YAAaid,EA3BjF,CA4B3B,GAEF,UACEtkD,KAAM,OACNS,OAAQ,CACNwgD,KAAM,CACJ1qB,SAAS,EACTkrB,SAAU,EACVpT,SAAU,EACV39B,QAAQ,EACR8wC,eAAgB,wBAChBwC,iBAAkB,wBAGtB//B,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxBgvB,KAAM,GAAS,CACb1qB,SAAS,EACT0mB,MAAO,EACPoD,aAAc,EACdqB,WAAW,EACXR,QAAS,CACPxM,cAAU7+B,EACVksC,gBAAYlsC,EACZmsC,iBAAansC,EACbyrC,cAAUzrC,EACV0rC,kBAAc1rC,EACd4rC,SAAU,GAEZrS,MAAO,CACLjK,eAAWtvB,EACXuvB,aAASvvB,EACTiwB,cAAUjwB,EACVowB,cAAUpwB,EACVssC,UAAMtsC,EACNwsC,UAAMxsC,EACNusC,UAAMvsC,EACNysC,UAAMzsC,EACNiE,WAAOjE,EACPmb,YAAQnb,EACRswB,YAAQtwB,EACRuwB,YAAQvwB,EACRisC,aAAc,CAAC,EACfS,eAAgB,CAAC,GAEnB9Y,SAAU,CACRxK,OAAGppB,EACHqpB,OAAGrpB,EACH2sC,mBAAe3sC,EACf4sC,mBAAe5sC,EACf6sC,cAAU7sC,IAEX6qC,MAEL,IAAIzD,EAAQ,EACZrgD,OAAOqO,eAAegnB,EAAOgvB,KAAM,QAAS,CAC1C57C,IAAK,WACH,OAAO43C,CACT,EACAr7C,IAAK,SAAa3G,GAChB,GAAIgiD,IAAUhiD,EAAO,CACnB,IAAI+zC,EAAU/c,EAAOgvB,KAAKC,QAAQI,SAAWrvB,EAAOgvB,KAAKC,QAAQI,SAAS,QAAKzrC,EAC3Eg8B,EAAU5f,EAAOgvB,KAAKC,QAAQxM,SAAWziB,EAAOgvB,KAAKC,QAAQxM,SAAS,QAAK7+B,EAC/Eoc,EAAOe,KAAK,aAAc/3B,EAAO+zC,EAAS6C,EAC5C,CAEAoL,EAAQhiD,CACV,GAEJ,EACAqO,GAAI,CACF4pB,KAAM,SAAcjB,GACdA,EAAOxxB,OAAOwgD,KAAK1qB,SACrBtE,EAAOgvB,KAAKlT,QAEhB,EACA3a,QAAS,SAAiBnB,GACxBA,EAAOgvB,KAAKnT,SACd,EACAyW,WAAY,SAAoBtyB,EAAQz2B,GACjCy2B,EAAOgvB,KAAK1qB,SACjBtE,EAAOgvB,KAAKvc,aAAalpC,EAC3B,EACAgpD,SAAU,SAAkBvyB,EAAQz2B,GAC7By2B,EAAOgvB,KAAK1qB,SACjBtE,EAAOgvB,KAAKlY,WAAWvtC,EACzB,EACAipD,UAAW,SAAmBxyB,EAAQz2B,IAC/By2B,EAAOwN,WAAaxN,EAAOxxB,OAAOwgD,KAAK1qB,SAAWtE,EAAOgvB,KAAK1qB,SAAWtE,EAAOxxB,OAAOwgD,KAAKvwC,QAC/FuhB,EAAOgvB,KAAKvwC,OAAOlV,EAEvB,EACAquB,cAAe,SAAuBoI,GAChCA,EAAOgvB,KAAK1qB,SAAWtE,EAAOxxB,OAAOwgD,KAAK1qB,SAC5CtE,EAAOgvB,KAAKgC,iBAEhB,EACAyB,YAAa,SAAqBzyB,GAC5BA,EAAOgvB,KAAK1qB,SAAWtE,EAAOxxB,OAAOwgD,KAAK1qB,SAAWtE,EAAOxxB,OAAO05B,SACrElI,EAAOgvB,KAAKgC,iBAEhB,ICplBJ,SAAS,KAA2Q,OAA9P,GAAWrmD,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAK5T,IAAI0/B,GAAO,CACTC,YAAa,SAAqB1rC,EAAO2rC,QACf,IAApBA,IACFA,GAAkB,GAGpB,IAAI5yB,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAAO0zC,KAC3B,GAAqB,qBAAVj7B,GACkB,IAAzB+Y,EAAOwE,OAAOt6B,OAAlB,CACA,IAAIk6B,EAAYpE,EAAOqE,SAAWrE,EAAOxxB,OAAO61B,QAAQC,QACpDme,EAAWre,EAAYpE,EAAOoC,WAAWpnB,SAAS,IAAMglB,EAAOxxB,OAAOi2B,WAAa,6BAAgCxd,EAAQ,MAAS+Y,EAAOwE,OAAOjL,GAAGtS,GACrJ4rC,EAAUpQ,EAAS3sC,KAAK,IAAMtH,EAAOskD,aAAe,SAAWtkD,EAAOukD,YAAc,UAAYvkD,EAAOwkD,aAAe,MAEtHvQ,EAASjtB,SAAShnB,EAAOskD,eAAkBrQ,EAASjtB,SAAShnB,EAAOukD,cAAiBtQ,EAASjtB,SAAShnB,EAAOwkD,eAChHH,EAAQ1kD,KAAKs0C,EAAS,IAGD,IAAnBoQ,EAAQ3oD,QACZ2oD,EAAQ/xC,MAAK,SAAUi8B,GACrB,IAAIsS,EAAW,GAAEtS,GACjBsS,EAAS16B,SAASnmB,EAAOwkD,cACzB,IAAIC,EAAa5D,EAAS15B,KAAK,mBAC3B5lB,EAAMs/C,EAAS15B,KAAK,YACpBqnB,EAASqS,EAAS15B,KAAK,eACvBsnB,EAAQoS,EAAS15B,KAAK,cACtBu9B,EAAa7D,EAASt0B,OAAO,WACjCiF,EAAO8c,UAAUuS,EAAS,GAAIt/C,GAAOkjD,EAAYjW,EAAQC,GAAO,GAAO,WACrE,GAAsB,qBAAXjd,GAAqC,OAAXA,GAAoBA,KAAUA,GAAWA,EAAOxxB,UAAUwxB,EAAOG,UAAtG,CAoCA,GAlCI8yB,GACF5D,EAASv2B,IAAI,mBAAoB,QAAWm6B,EAAa,MACzD5D,EAASv5B,WAAW,qBAEhBknB,IACFqS,EAAS15B,KAAK,SAAUqnB,GACxBqS,EAASv5B,WAAW,gBAGlBmnB,IACFoS,EAAS15B,KAAK,QAASsnB,GACvBoS,EAASv5B,WAAW,eAGlBo9B,EAAWhpD,QACbgpD,EAAWl4C,SAAS,UAAU8F,MAAK,SAAUqyC,GAC3C,IAAIC,EAAU,GAAED,GAEZC,EAAQz9B,KAAK,iBACfy9B,EAAQz9B,KAAK,SAAUy9B,EAAQz9B,KAAK,gBACpCy9B,EAAQt9B,WAAW,eAEvB,IAGE/lB,IACFs/C,EAAS15B,KAAK,MAAO5lB,GACrBs/C,EAASv5B,WAAW,cAIxBu5B,EAAS16B,SAASnmB,EAAOukD,aAAa99B,YAAYzmB,EAAOwkD,cACzDvQ,EAAS3sC,KAAK,IAAMtH,EAAO6kD,gBAAgB/lD,SAEvC0yB,EAAOxxB,OAAO+8B,MAAQqnB,EAAiB,CACzC,IAAIU,EAAqB7Q,EAAS9sB,KAAK,2BAEvC,GAAI8sB,EAASjtB,SAASwK,EAAOxxB,OAAOg9B,qBAAsB,CACxD,IAAI+nB,EAAgBvzB,EAAOoC,WAAWpnB,SAAS,6BAAgCs4C,EAAqB,WAActzB,EAAOxxB,OAAOg9B,oBAAsB,KACtJxL,EAAOkiB,KAAKyQ,YAAYY,EAActsC,SAAS,EACjD,KAAO,CACL,IAAIusC,EAAkBxzB,EAAOoC,WAAWpnB,SAAS,IAAMglB,EAAOxxB,OAAOg9B,oBAAsB,6BAAgC8nB,EAAqB,MAChJtzB,EAAOkiB,KAAKyQ,YAAYa,EAAgBvsC,SAAS,EACnD,CACF,CAEA+Y,EAAOe,KAAK,iBAAkB0hB,EAAS,GAAI4M,EAAS,IAEhDrvB,EAAOxxB,OAAO07B,YAChBlK,EAAOiJ,kBAnD8G,CAqDzH,IACAjJ,EAAOe,KAAK,gBAAiB0hB,EAAS,GAAI4M,EAAS,GACrD,GA1EsC,CA2ExC,EACA9hD,KAAM,WACJ,IAAIyyB,EAAS/zB,KACTm2B,EAAapC,EAAOoC,WACpB6c,EAAejf,EAAOxxB,OACtBg2B,EAASxE,EAAOwE,OAChB+E,EAAcvJ,EAAOuJ,YACrBnF,EAAYpE,EAAOqE,SAAW4a,EAAa5a,QAAQC,QACnD91B,EAASywC,EAAaiD,KACtBlc,EAAgBiZ,EAAajZ,cAMjC,SAASytB,EAAWxsC,GAClB,GAAImd,GACF,GAAIhC,EAAWpnB,SAAS,IAAMikC,EAAaxa,WAAa,6BAAgCxd,EAAQ,MAAO/c,OACrG,OAAO,OAEJ,GAAIs6B,EAAOvd,GAAQ,OAAO,EAEjC,OAAO,CACT,CAEA,SAASghB,EAAW2X,GAClB,OAAIxb,EACK,GAAEwb,GAASjqB,KAAK,2BAGlB,GAAEiqB,GAAS34B,OACpB,CAIA,GAxBsB,SAAlB+e,IACFA,EAAgB,GAqBbhG,EAAOkiB,KAAKwR,qBAAoB1zB,EAAOkiB,KAAKwR,oBAAqB,GAElE1zB,EAAOxxB,OAAOu6B,sBAChB3G,EAAWpnB,SAAS,IAAMikC,EAAanV,mBAAmBhpB,MAAK,SAAU8+B,GACvE,IAAI34B,EAAQmd,EAAY,GAAEwb,GAASjqB,KAAK,2BAA6B,GAAEiqB,GAAS34B,QAChF+Y,EAAOkiB,KAAKyQ,YAAY1rC,EAC1B,SACK,GAAI+e,EAAgB,EACzB,IAAK,IAAI77B,EAAIo/B,EAAap/B,EAAIo/B,EAAcvD,EAAe77B,GAAK,EAC1DspD,EAAWtpD,IAAI61B,EAAOkiB,KAAKyQ,YAAYxoD,QAG7C61B,EAAOkiB,KAAKyQ,YAAYppB,GAG1B,GAAI/6B,EAAOmlD,aACT,GAAI3tB,EAAgB,GAAKx3B,EAAOolD,oBAAsBplD,EAAOolD,mBAAqB,EAAG,CAMnF,IALA,IAAIC,EAASrlD,EAAOolD,mBAChB9T,EAAM9Z,EACN8tB,EAAW5iD,KAAKkW,IAAImiB,EAAcuW,EAAM5uC,KAAKiW,IAAI0sC,EAAQ/T,GAAMtb,EAAOt6B,QACtE6pD,EAAW7iD,KAAKiW,IAAIoiB,EAAcr4B,KAAKiW,IAAI24B,EAAK+T,GAAS,GAEpDlsB,EAAK4B,EAAcvD,EAAe2B,EAAKmsB,EAAUnsB,GAAM,EAC1D8rB,EAAW9rB,IAAK3H,EAAOkiB,KAAKyQ,YAAYhrB,GAI9C,IAAK,IAAIE,EAAMksB,EAAUlsB,EAAM0B,EAAa1B,GAAO,EAC7C4rB,EAAW5rB,IAAM7H,EAAOkiB,KAAKyQ,YAAY9qB,EAEjD,KAAO,CACL,IAAI4D,EAAYrJ,EAAWpnB,SAAS,IAAMikC,EAAa/T,gBACnDO,EAAUvhC,OAAS,GAAG81B,EAAOkiB,KAAKyQ,YAAY1qB,EAAWwD,IAC7D,IAAIC,EAAYtJ,EAAWpnB,SAAS,IAAMikC,EAAa9T,gBACnDO,EAAUxhC,OAAS,GAAG81B,EAAOkiB,KAAKyQ,YAAY1qB,EAAWyD,GAC/D,CAEJ,EACAsoB,kBAAmB,WACjB,IAAIpmD,EAAS,IACToyB,EAAS/zB,KACb,GAAK+zB,IAAUA,EAAOG,UAAtB,CACA,IAAI8zB,EAAiBj0B,EAAOxxB,OAAO0zC,KAAKgS,iBAAmB,GAAEl0B,EAAOxxB,OAAO0zC,KAAKgS,kBAAoB,GAAEtmD,GAClGumD,EAAWF,EAAe,KAAOrmD,EACjCwmD,EAAqBD,EAAWvmD,EAAOga,WAAaqsC,EAAe,GAAG/7B,YACtEm8B,EAAsBF,EAAWvmD,EAAOquC,YAAcgY,EAAe,GAAGvuC,aACxE4+B,EAAetkB,EAAOkC,IAAI9J,SAC1B6L,EAAMjE,EAAOkE,aACb+f,GAAS,EACThgB,IAAKqgB,EAAazrB,MAAQmH,EAAOkC,IAAI,GAAGxJ,YAG5C,IAFA,IAAI6rB,EAAc,CAAC,CAACD,EAAazrB,KAAMyrB,EAAa1rB,KAAM,CAAC0rB,EAAazrB,KAAOmH,EAAOnY,MAAOy8B,EAAa1rB,KAAM,CAAC0rB,EAAazrB,KAAMyrB,EAAa1rB,IAAMoH,EAAOjB,QAAS,CAACulB,EAAazrB,KAAOmH,EAAOnY,MAAOy8B,EAAa1rB,IAAMoH,EAAOjB,SAE3N50B,EAAI,EAAGA,EAAIo6C,EAAYr6C,OAAQC,GAAK,EAAG,CAC9C,IAAIgyC,EAAQoI,EAAYp6C,GAExB,GAAIgyC,EAAM,IAAM,GAAKA,EAAM,IAAMiY,GAAsBjY,EAAM,IAAM,GAAKA,EAAM,IAAMkY,EAAqB,CACvG,GAAiB,IAAblY,EAAM,IAAyB,IAAbA,EAAM,GAAU,SAEtC8H,GAAS,CACX,CACF,CAEA,IAAIhmB,IAA+C,eAA7B+B,EAAOma,YAAYpwB,QAA0BiW,EAAOzC,QAAQU,kBAAmB+B,EAAOxxB,OAAO6rC,mBAAmB,CACpIC,SAAS,EACT/jB,SAAS,GAGP0tB,GACFjkB,EAAOkiB,KAAK30C,OACZ0mD,EAAexhD,IAAI,SAAUutB,EAAOkiB,KAAK8R,kBAAmB/1B,IAClD+B,EAAOkiB,KAAKoS,wBACtBt0B,EAAOkiB,KAAKoS,uBAAwB,EACpCL,EAAe58C,GAAG,SAAU2oB,EAAOkiB,KAAK8R,kBAAmB/1B,GA/BtB,CAiCzC,GAEF,UACElwB,KAAM,OACNS,OAAQ,CACN0zC,KAAM,CACJqS,aAAa,EACbjwB,SAAS,EACTqvB,cAAc,EACdC,mBAAoB,EACpBY,uBAAuB,EACvBN,iBAAkB,GAClBpB,aAAc,cACdE,aAAc,sBACdD,YAAa,qBACbM,eAAgB,0BAGpBrhC,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxBkiB,KAAM,GAAS,CACbwR,oBAAoB,GACnBhB,KAEP,EACAr7C,GAAI,CACF0rC,WAAY,SAAoB/iB,GAC1BA,EAAOxxB,OAAO0zC,KAAK5d,SAAWtE,EAAOxxB,OAAOgvC,gBAC9Cxd,EAAOxxB,OAAOgvC,eAAgB,EAElC,EACAvc,KAAM,SAAcjB,GACdA,EAAOxxB,OAAO0zC,KAAK5d,UAAYtE,EAAOxxB,OAAO+8B,MAAuC,IAA/BvL,EAAOxxB,OAAO+/B,eACjEvO,EAAOxxB,OAAO0zC,KAAKqS,YACrBv0B,EAAOkiB,KAAK8R,oBAEZh0B,EAAOkiB,KAAK30C,OAGlB,EACAknD,OAAQ,SAAgBz0B,GAClBA,EAAOxxB,OAAOkoC,WAAa1W,EAAOxxB,OAAO6pC,gBAC3CrY,EAAOkiB,KAAK30C,MAEhB,EACA,sDAAuD,SAAkByyB,GACnEA,EAAOxxB,OAAO0zC,KAAK5d,SACrBtE,EAAOkiB,KAAK30C,MAEhB,EACAygC,gBAAiB,SAAyBhO,GACpCA,EAAOxxB,OAAO0zC,KAAK5d,UACjBtE,EAAOxxB,OAAO0zC,KAAKsS,wBAA0Bx0B,EAAOxxB,OAAO0zC,KAAKsS,wBAA0Bx0B,EAAOkiB,KAAKwR,qBACxG1zB,EAAOkiB,KAAK30C,MAGlB,EACAqqB,cAAe,SAAuBoI,GAChCA,EAAOxxB,OAAO0zC,KAAK5d,UAAYtE,EAAOxxB,OAAO0zC,KAAKsS,uBACpDx0B,EAAOkiB,KAAK30C,MAEhB,EACAklD,YAAa,SAAqBzyB,GAChC,IAAIohB,EAAiBphB,EAAOxxB,OACxB0zC,EAAOd,EAAec,KACtBha,EAAUkZ,EAAelZ,QACzBa,EAAwBqY,EAAerY,sBACvCD,EAAsBsY,EAAetY,oBACrC0M,EAAsB4L,EAAe5L,oBACrCe,EAAkB6K,EAAe7K,gBAEjC2L,EAAK5d,UAAY4D,IAAYa,GAAyBD,KAAyB0M,GAA2C,IAApBe,KACxGvW,EAAOkiB,KAAK30C,MAEhB,IC/QJ,SAAS,KAA2Q,OAA9P,GAAW5C,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAI5T,IAAI0hC,GAAa,CACfC,aAAc,SAAsB3nB,EAAGC,GACrC,IA4BI2nB,EACAC,EA7BAC,EAAe,WACjB,IAAIhB,EACAC,EACAgB,EACJ,OAAO,SAAUjsC,EAAO2mB,GACtBskB,GAAY,EACZD,EAAWhrC,EAAM5e,OAEjB,MAAO4pD,EAAWC,EAAW,EAC3BgB,EAAQjB,EAAWC,GAAY,EAE3BjrC,EAAMisC,IAAUtlB,EAClBskB,EAAWgB,EAEXjB,EAAWiB,EAIf,OAAOjB,CACT,CACF,CApBmB,GAyCnB,OAnBA7nD,KAAK+gC,EAAIA,EACT/gC,KAAKghC,EAAIA,EACThhC,KAAK29C,UAAY5c,EAAE9iC,OAAS,EAO5B+B,KAAK+oD,YAAc,SAAqBnG,GACtC,OAAKA,GAELgG,EAAKC,EAAa7oD,KAAK+gC,EAAG6hB,GAC1B+F,EAAKC,EAAK,GAGFhG,EAAK5iD,KAAK+gC,EAAE4nB,KAAQ3oD,KAAKghC,EAAE4nB,GAAM5oD,KAAKghC,EAAE2nB,KAAQ3oD,KAAK+gC,EAAE6nB,GAAM5oD,KAAK+gC,EAAE4nB,IAAO3oD,KAAKghC,EAAE2nB,IAN1E,CAOlB,EAEO3oD,IACT,EAEAgpD,uBAAwB,SAAgClmD,GACtD,IAAIixB,EAAS/zB,KAER+zB,EAAOk1B,WAAWC,SACrBn1B,EAAOk1B,WAAWC,OAASn1B,EAAOxxB,OAAO+8B,KAAO,IAAImpB,GAAWC,aAAa30B,EAAO4E,WAAY71B,EAAE61B,YAAc,IAAI8vB,GAAWC,aAAa30B,EAAO2E,SAAU51B,EAAE41B,UAElK,EACAiI,aAAc,SAAsBwoB,EAAevoB,GACjD,IAEItC,EACA8qB,EAHAr1B,EAAS/zB,KACTqpD,EAAat1B,EAAOk1B,WAAWK,QAG/B1W,EAAS7e,EAAO/1B,YAEpB,SAASurD,EAAuBzmD,GAK9B,IAAI66B,EAAY5J,EAAOkE,cAAgBlE,EAAO4J,UAAY5J,EAAO4J,UAE7B,UAAhC5J,EAAOxxB,OAAO0mD,WAAWO,KAC3Bz1B,EAAOk1B,WAAWD,uBAAuBlmD,GAGzCsmD,GAAuBr1B,EAAOk1B,WAAWC,OAAOH,aAAaprB,IAG1DyrB,GAAuD,cAAhCr1B,EAAOxxB,OAAO0mD,WAAWO,KACnDlrB,GAAcx7B,EAAE07B,eAAiB17B,EAAEk7B,iBAAmBjK,EAAOyK,eAAiBzK,EAAOiK,gBACrForB,GAAuBzrB,EAAY5J,EAAOiK,gBAAkBM,EAAax7B,EAAEk7B,gBAGzEjK,EAAOxxB,OAAO0mD,WAAWQ,UAC3BL,EAAsBtmD,EAAE07B,eAAiB4qB,GAG3CtmD,EAAEu7B,eAAe+qB,GACjBtmD,EAAE69B,aAAayoB,EAAqBr1B,GACpCjxB,EAAE68B,oBACF78B,EAAE+7B,qBACJ,CAEA,GAAIzgC,MAAMC,QAAQgrD,GAChB,IAAK,IAAInrD,EAAI,EAAGA,EAAImrD,EAAWprD,OAAQC,GAAK,EACtCmrD,EAAWnrD,KAAO0iC,GAAgByoB,EAAWnrD,aAAc00C,GAC7D2W,EAAuBF,EAAWnrD,SAG7BmrD,aAAsBzW,GAAUhS,IAAiByoB,GAC1DE,EAAuBF,EAE3B,EACAlsB,cAAe,SAAuBnT,EAAU4W,GAC9C,IAGI1iC,EAHA61B,EAAS/zB,KACT4yC,EAAS7e,EAAO/1B,YAChBqrD,EAAat1B,EAAOk1B,WAAWK,QAGnC,SAASI,EAAwB5mD,GAC/BA,EAAEq6B,cAAcnT,EAAU+J,GAET,IAAb/J,IACFlnB,EAAEi/B,kBAEEj/B,EAAEP,OAAO07B,YACXjP,IAAS,WACPlsB,EAAEk6B,kBACJ,IAGFl6B,EAAEqzB,WAAWxK,eAAc,WACpB09B,IAEDvmD,EAAEP,OAAO+8B,MAAwC,UAAhCvL,EAAOxxB,OAAO0mD,WAAWO,IAC5C1mD,EAAEsgC,UAGJtgC,EAAE6oB,gBACJ,IAEJ,CAEA,GAAIvtB,MAAMC,QAAQgrD,GAChB,IAAKnrD,EAAI,EAAGA,EAAImrD,EAAWprD,OAAQC,GAAK,EAClCmrD,EAAWnrD,KAAO0iC,GAAgByoB,EAAWnrD,aAAc00C,GAC7D8W,EAAwBL,EAAWnrD,SAG9BmrD,aAAsBzW,GAAUhS,IAAiByoB,GAC1DK,EAAwBL,EAE5B,GAEF,UACEvnD,KAAM,aACNS,OAAQ,CACN0mD,WAAY,CACVK,aAAS3xC,EACT8xC,SAAS,EACTD,GAAI,UAIRzjC,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxBk1B,WAAY,GAAS,CACnBK,QAASv1B,EAAOxxB,OAAO0mD,WAAWK,SACjCb,KAEP,EACAr9C,GAAI,CACFq6B,OAAQ,SAAgB1R,GACjBA,EAAOk1B,WAAWK,SAEnBv1B,EAAOk1B,WAAWC,SACpBn1B,EAAOk1B,WAAWC,YAASvxC,SACpBoc,EAAOk1B,WAAWC,OAE7B,EACAl1B,OAAQ,SAAgBD,GACjBA,EAAOk1B,WAAWK,SAEnBv1B,EAAOk1B,WAAWC,SACpBn1B,EAAOk1B,WAAWC,YAASvxC,SACpBoc,EAAOk1B,WAAWC,OAE7B,EACAvzB,eAAgB,SAAwB5B,GACjCA,EAAOk1B,WAAWK,SAEnBv1B,EAAOk1B,WAAWC,SACpBn1B,EAAOk1B,WAAWC,YAASvxC,SACpBoc,EAAOk1B,WAAWC,OAE7B,EACAvoB,aAAc,SAAsB5M,EAAQ4J,EAAWiD,GAChD7M,EAAOk1B,WAAWK,SACvBv1B,EAAOk1B,WAAWtoB,aAAahD,EAAWiD,EAC5C,EACAzD,cAAe,SAAuBpJ,EAAQ/J,EAAU4W,GACjD7M,EAAOk1B,WAAWK,SACvBv1B,EAAOk1B,WAAW9rB,cAAcnT,EAAU4W,EAC5C,IClMJ,SAAS,KAA2Q,OAA9P,GAAWliC,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAI5T,IAAI4iC,GAAO,CACTC,gBAAiB,SAAyBhiD,QAC3B,IAATA,IACFA,EAAO,IAGT,IAAIiiD,EAAa,WACf,OAAO5kD,KAAK6kD,MAAM,GAAK7kD,KAAK8S,UAAUnZ,SAAS,GACjD,EAEA,MAAO,IAAImrD,OAAOniD,GAAMjE,QAAQ,KAAMkmD,EACxC,EACAG,gBAAiB,SAAyB/zB,GAExC,OADAA,EAAIvM,KAAK,WAAY,KACduM,CACT,EACAg0B,mBAAoB,SAA4Bh0B,GAE9C,OADAA,EAAIvM,KAAK,WAAY,MACduM,CACT,EACAi0B,UAAW,SAAmBj0B,EAAKk0B,GAEjC,OADAl0B,EAAIvM,KAAK,OAAQygC,GACVl0B,CACT,EACAm0B,qBAAsB,SAA8Bn0B,EAAKo0B,GAEvD,OADAp0B,EAAIvM,KAAK,uBAAwB2gC,GAC1Bp0B,CACT,EACAq0B,cAAe,SAAuBr0B,EAAKs0B,GAEzC,OADAt0B,EAAIvM,KAAK,gBAAiB6gC,GACnBt0B,CACT,EACAu0B,WAAY,SAAoBv0B,EAAK6B,GAEnC,OADA7B,EAAIvM,KAAK,aAAcoO,GAChB7B,CACT,EACAw0B,QAAS,SAAiBx0B,EAAK12B,GAE7B,OADA02B,EAAIvM,KAAK,KAAMnqB,GACR02B,CACT,EACAy0B,UAAW,SAAmBz0B,EAAK00B,GAEjC,OADA10B,EAAIvM,KAAK,YAAaihC,GACf10B,CACT,EACA20B,UAAW,SAAmB30B,GAE5B,OADAA,EAAIvM,KAAK,iBAAiB,GACnBuM,CACT,EACA40B,SAAU,SAAkB50B,GAE1B,OADAA,EAAIvM,KAAK,iBAAiB,GACnBuM,CACT,EACA60B,kBAAmB,SAA2BxtD,GAC5C,GAAkB,KAAdA,EAAE65C,SAAgC,KAAd75C,EAAE65C,QAA1B,CACA,IAAIpjB,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAAOwoD,KACvBnkB,EAAY,GAAEtpC,EAAE+L,QAEhB0qB,EAAOiZ,YAAcjZ,EAAOiZ,WAAWqP,SAAWzV,EAAUjc,GAAGoJ,EAAOiZ,WAAWqP,WAC7EtoB,EAAO2K,QAAU3K,EAAOxxB,OAAO+8B,MACnCvL,EAAOkP,YAGLlP,EAAO2K,MACT3K,EAAOg3B,KAAKC,OAAOzoD,EAAO0oD,kBAE1Bl3B,EAAOg3B,KAAKC,OAAOzoD,EAAO2oD,mBAI1Bn3B,EAAOiZ,YAAcjZ,EAAOiZ,WAAWsP,SAAW1V,EAAUjc,GAAGoJ,EAAOiZ,WAAWsP,WAC7EvoB,EAAO0K,cAAgB1K,EAAOxxB,OAAO+8B,MACzCvL,EAAOuP,YAGLvP,EAAO0K,YACT1K,EAAOg3B,KAAKC,OAAOzoD,EAAO4oD,mBAE1Bp3B,EAAOg3B,KAAKC,OAAOzoD,EAAO6oD,mBAI1Br3B,EAAOopB,YAAcvW,EAAUjc,GAAGqG,GAAkB+C,EAAOxxB,OAAO46C,WAAWqC,eAC/E5Y,EAAU,GAAGoW,OA9BiC,CAgClD,EACAgO,OAAQ,SAAgBK,GACtB,IAAIt3B,EAAS/zB,KACTsrD,EAAev3B,EAAOg3B,KAAKQ,WACH,IAAxBD,EAAartD,SACjBqtD,EAAahjC,KAAK,IAClBgjC,EAAahjC,KAAK+iC,GACpB,EACAG,iBAAkB,WAChB,IAAIz3B,EAAS/zB,KACb,IAAI+zB,EAAOxxB,OAAO+8B,MAASvL,EAAOiZ,WAAlC,CACA,IAAIoP,EAAqBroB,EAAOiZ,WAC5BqP,EAAUD,EAAmBC,QAC7BC,EAAUF,EAAmBE,QAE7BA,GAAWA,EAAQr+C,OAAS,IAC1B81B,EAAO0K,aACT1K,EAAOg3B,KAAKH,UAAUtO,GACtBvoB,EAAOg3B,KAAKd,mBAAmB3N,KAE/BvoB,EAAOg3B,KAAKF,SAASvO,GACrBvoB,EAAOg3B,KAAKf,gBAAgB1N,KAI5BD,GAAWA,EAAQp+C,OAAS,IAC1B81B,EAAO2K,OACT3K,EAAOg3B,KAAKH,UAAUvO,GACtBtoB,EAAOg3B,KAAKd,mBAAmB5N,KAE/BtoB,EAAOg3B,KAAKF,SAASxO,GACrBtoB,EAAOg3B,KAAKf,gBAAgB3N,IArBoB,CAwBtD,EACAoP,iBAAkB,WAChB,IAAI13B,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAAOwoD,KAEvBh3B,EAAOopB,YAAcppB,EAAOxxB,OAAO46C,WAAWC,WAAarpB,EAAOopB,WAAWM,SAAW1pB,EAAOopB,WAAWM,QAAQx/C,QACpH81B,EAAOopB,WAAWM,QAAQ5oC,MAAK,SAAU62C,GACvC,IAAIC,EAAY,GAAED,GAClB33B,EAAOg3B,KAAKf,gBAAgB2B,GAEvB53B,EAAOxxB,OAAO46C,WAAWoC,eAC5BxrB,EAAOg3B,KAAKb,UAAUyB,EAAW,UACjC53B,EAAOg3B,KAAKP,WAAWmB,EAAWppD,EAAOqpD,wBAAwBjoD,QAAQ,gBAAiBgoD,EAAU3wC,QAAU,IAElH,GAEJ,EACAga,KAAM,WACJ,IAAIjB,EAAS/zB,KACTuC,EAASwxB,EAAOxxB,OAAOwoD,KAC3Bh3B,EAAOkC,IAAI/xB,OAAO6vB,EAAOg3B,KAAKQ,YAE9B,IAAIM,EAAe93B,EAAOkC,IAEtB1zB,EAAOupD,iCACT/3B,EAAOg3B,KAAKX,qBAAqByB,EAActpD,EAAOupD,iCAGpDvpD,EAAOwpD,kBACTh4B,EAAOg3B,KAAKP,WAAWqB,EAActpD,EAAOwpD,kBAI9C,IAAI51B,EAAapC,EAAOoC,WACpB61B,EAAY71B,EAAWzM,KAAK,OAAS,kBAAoBqK,EAAOg3B,KAAKnB,gBAAgB,IACrFe,EAAO52B,EAAOxxB,OAAO+qC,UAAYvZ,EAAOxxB,OAAO+qC,SAASjV,QAAU,MAAQ,SAC9EtE,EAAOg3B,KAAKN,QAAQt0B,EAAY61B,GAChCj4B,EAAOg3B,KAAKL,UAAUv0B,EAAYw0B,GAE9BpoD,EAAO0pD,4BACTl4B,EAAOg3B,KAAKX,qBAAqB,GAAEr2B,EAAOwE,QAASh2B,EAAO0pD,4BAG5Dl4B,EAAOg3B,KAAKb,UAAU,GAAEn2B,EAAOwE,QAASh2B,EAAO2pD,WAC/C,IAUI7P,EACAC,EAXA7jB,EAAe1E,EAAOxxB,OAAO+8B,KAAOvL,EAAOwE,OAAOvqB,QAAO,SAAU2B,GACrE,OAAQA,EAAGkD,UAAUtI,SAASwpB,EAAOxxB,OAAOg9B,oBAC9C,IAAGthC,OAAS81B,EAAOwE,OAAOt6B,OAC1B81B,EAAOwE,OAAO1jB,MAAK,SAAU8+B,EAAS34B,GACpC,IAAIw7B,EAAW,GAAE7C,GACb3X,EAAajI,EAAOxxB,OAAO+8B,KAAO7H,SAAS+e,EAAS9sB,KAAK,2BAA4B,IAAM1O,EAC3FmxC,EAAmB5pD,EAAO6pD,kBAAkBzoD,QAAQ,gBAAiBq4B,EAAa,GAAGr4B,QAAQ,uBAAwB80B,GACzH1E,EAAOg3B,KAAKP,WAAWhU,EAAU2V,EACnC,IAKIp4B,EAAOiZ,YAAcjZ,EAAOiZ,WAAWqP,UACzCA,EAAUtoB,EAAOiZ,WAAWqP,SAG1BtoB,EAAOiZ,YAAcjZ,EAAOiZ,WAAWsP,UACzCA,EAAUvoB,EAAOiZ,WAAWsP,SAG1BD,GAAWA,EAAQp+C,SACrB81B,EAAOg3B,KAAKf,gBAAgB3N,GAED,WAAvBA,EAAQ,GAAGtnC,UACbgf,EAAOg3B,KAAKb,UAAU7N,EAAS,UAC/BA,EAAQjxC,GAAG,UAAW2oB,EAAOg3B,KAAKD,oBAGpC/2B,EAAOg3B,KAAKP,WAAWnO,EAAS95C,EAAO2oD,kBACvCn3B,EAAOg3B,KAAKT,cAAcjO,EAAS2P,IAGjC1P,GAAWA,EAAQr+C,SACrB81B,EAAOg3B,KAAKf,gBAAgB1N,GAED,WAAvBA,EAAQ,GAAGvnC,UACbgf,EAAOg3B,KAAKb,UAAU5N,EAAS,UAC/BA,EAAQlxC,GAAG,UAAW2oB,EAAOg3B,KAAKD,oBAGpC/2B,EAAOg3B,KAAKP,WAAWlO,EAAS/5C,EAAO6oD,kBACvCr3B,EAAOg3B,KAAKT,cAAchO,EAAS0P,IAIjCj4B,EAAOopB,YAAcppB,EAAOxxB,OAAO46C,WAAWC,WAAarpB,EAAOopB,WAAWM,SAAW1pB,EAAOopB,WAAWM,QAAQx/C,QACpH81B,EAAOopB,WAAWlnB,IAAI7qB,GAAG,UAAW4lB,GAAkB+C,EAAOxxB,OAAO46C,WAAWqC,aAAczrB,EAAOg3B,KAAKD,kBAE7G,EACA51B,QAAS,WACP,IAEImnB,EACAC,EAHAvoB,EAAS/zB,KACT+zB,EAAOg3B,KAAKQ,YAAcx3B,EAAOg3B,KAAKQ,WAAWttD,OAAS,GAAG81B,EAAOg3B,KAAKQ,WAAWlqD,SAIpF0yB,EAAOiZ,YAAcjZ,EAAOiZ,WAAWqP,UACzCA,EAAUtoB,EAAOiZ,WAAWqP,SAG1BtoB,EAAOiZ,YAAcjZ,EAAOiZ,WAAWsP,UACzCA,EAAUvoB,EAAOiZ,WAAWsP,SAG1BD,GACFA,EAAQ71C,IAAI,UAAWutB,EAAOg3B,KAAKD,mBAGjCxO,GACFA,EAAQ91C,IAAI,UAAWutB,EAAOg3B,KAAKD,mBAIjC/2B,EAAOopB,YAAcppB,EAAOxxB,OAAO46C,WAAWC,WAAarpB,EAAOopB,WAAWM,SAAW1pB,EAAOopB,WAAWM,QAAQx/C,QACpH81B,EAAOopB,WAAWlnB,IAAIzvB,IAAI,UAAWwqB,GAAkB+C,EAAOxxB,OAAO46C,WAAWqC,aAAczrB,EAAOg3B,KAAKD,kBAE9G,GAEF,UACEhpD,KAAM,OACNS,OAAQ,CACNwoD,KAAM,CACJ1yB,SAAS,EACTg0B,kBAAmB,sBACnBjB,iBAAkB,iBAClBF,iBAAkB,aAClBC,kBAAmB,0BACnBF,iBAAkB,yBAClBW,wBAAyB,wBACzBQ,kBAAmB,+BACnBL,iBAAkB,KAClBD,gCAAiC,KACjCG,2BAA4B,KAC5BC,UAAW,UAGfnmC,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxBg3B,KAAM,GAAS,CAAC,EAAGpB,GAAM,CACvB4B,WAAY,GAAE,gBAAmBx3B,EAAOxxB,OAAOwoD,KAAKsB,kBAAoB,yDAG9E,EACAjhD,GAAI,CACFkhD,UAAW,SAAmBv4B,GACvBA,EAAOxxB,OAAOwoD,KAAK1yB,UACxBtE,EAAOg3B,KAAK/1B,OACZjB,EAAOg3B,KAAKS,mBACd,EACA3O,OAAQ,SAAgB9oB,GACjBA,EAAOxxB,OAAOwoD,KAAK1yB,SACxBtE,EAAOg3B,KAAKS,kBACd,EACA1O,SAAU,SAAkB/oB,GACrBA,EAAOxxB,OAAOwoD,KAAK1yB,SACxBtE,EAAOg3B,KAAKS,kBACd,EACAe,iBAAkB,SAA0Bx4B,GACrCA,EAAOxxB,OAAOwoD,KAAK1yB,SACxBtE,EAAOg3B,KAAKU,kBACd,EACAv2B,QAAS,SAAiBnB,GACnBA,EAAOxxB,OAAOwoD,KAAK1yB,SACxBtE,EAAOg3B,KAAK71B,SACd,ICpSJ,SAAS,KAA2Q,OAA9P,GAAWx2B,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAI5T,IAAIylC,GAAU,CACZx3B,KAAM,WACJ,IAAIjB,EAAS/zB,KACT2B,EAAS,IACb,GAAKoyB,EAAOxxB,OAAOuiB,QAAnB,CAEA,IAAKnjB,EAAOmjB,UAAYnjB,EAAOmjB,QAAQE,UAGrC,OAFA+O,EAAOxxB,OAAOuiB,QAAQuT,SAAU,OAChCtE,EAAOxxB,OAAOkqD,eAAep0B,SAAU,GAIzC,IAAIvT,EAAUiP,EAAOjP,QACrBA,EAAQqP,aAAc,EACtBrP,EAAQ4nC,MAAQF,GAAQG,cAAc54B,EAAOxxB,OAAOzC,MAC/CglB,EAAQ4nC,MAAM3tD,KAAQ+lB,EAAQ4nC,MAAM3vD,SACzC+nB,EAAQ8nC,cAAc,EAAG9nC,EAAQ4nC,MAAM3vD,MAAOg3B,EAAOxxB,OAAO29B,oBAEvDnM,EAAOxxB,OAAOuiB,QAAQC,cACzBpjB,EAAO+I,iBAAiB,WAAYqpB,EAAOjP,QAAQ+nC,oBAfnB,CAiBpC,EACA33B,QAAS,WACP,IAAInB,EAAS/zB,KACT2B,EAAS,IAERoyB,EAAOxxB,OAAOuiB,QAAQC,cACzBpjB,EAAOiJ,oBAAoB,WAAYmpB,EAAOjP,QAAQ+nC,mBAE1D,EACAA,mBAAoB,WAClB,IAAI94B,EAAS/zB,KACb+zB,EAAOjP,QAAQ4nC,MAAQF,GAAQG,cAAc54B,EAAOxxB,OAAOzC,KAC3Di0B,EAAOjP,QAAQ8nC,cAAc74B,EAAOxxB,OAAO06B,MAAOlJ,EAAOjP,QAAQ4nC,MAAM3vD,OAAO,EAChF,EACA4vD,cAAe,SAAuBG,GACpC,IACI9oC,EADAriB,EAAS,IAIXqiB,EADE8oC,EACS,IAAIC,IAAID,GAERnrD,EAAOqiB,SAGpB,IAAIgpC,EAAYhpC,EAASM,SAAS5Y,MAAM,GAAG6C,MAAM,KAAKP,QAAO,SAAUi/C,GACrE,MAAgB,KAATA,CACT,IACI1P,EAAQyP,EAAU/uD,OAClBc,EAAMiuD,EAAUzP,EAAQ,GACxBxgD,EAAQiwD,EAAUzP,EAAQ,GAC9B,MAAO,CACLx+C,IAAKA,EACLhC,MAAOA,EAEX,EACAmwD,WAAY,SAAoBnuD,EAAKic,GACnC,IAAI+Y,EAAS/zB,KACT2B,EAAS,IACb,GAAKoyB,EAAOjP,QAAQqP,aAAgBJ,EAAOxxB,OAAOuiB,QAAQuT,QAA1D,CACA,IAAIrU,EAGFA,EADE+P,EAAOxxB,OAAOzC,IACL,IAAIitD,IAAIh5B,EAAOxxB,OAAOzC,KAEtB6B,EAAOqiB,SAGpB,IAAIsW,EAAQvG,EAAOwE,OAAOjL,GAAGtS,GACzBje,EAAQyvD,GAAQW,QAAQ7yB,EAAM5Q,KAAK,iBAEvC,GAAIqK,EAAOxxB,OAAOuiB,QAAQxL,KAAKrb,OAAS,EAAG,CACzC,IAAIqb,EAAOya,EAAOxxB,OAAOuiB,QAAQxL,KACH,MAA1BA,EAAKA,EAAKrb,OAAS,KAAYqb,EAAOA,EAAK5N,MAAM,EAAG4N,EAAKrb,OAAS,IACtElB,EAAQuc,EAAO,IAAMva,EAAM,IAAMhC,CACnC,MAAYinB,EAASM,SAASnZ,SAASpM,KACrChC,EAAQgC,EAAM,IAAMhC,GAGtB,IAAIqwD,EAAezrD,EAAOmjB,QAAQuoC,MAE9BD,GAAgBA,EAAarwD,QAAUA,IAIvCg3B,EAAOxxB,OAAOuiB,QAAQC,aACxBpjB,EAAOmjB,QAAQC,aAAa,CAC1BhoB,MAAOA,GACN,KAAMA,GAET4E,EAAOmjB,QAAQE,UAAU,CACvBjoB,MAAOA,GACN,KAAMA,GAjC8D,CAmC3E,EACAowD,QAAS,SAAiBngC,GACxB,OAAOA,EAAKpuB,WAAW+E,QAAQ,OAAQ,KAAKA,QAAQ,WAAY,IAAIA,QAAQ,OAAQ,KAAKA,QAAQ,MAAO,IAAIA,QAAQ,MAAO,GAC7H,EACAipD,cAAe,SAAuB3vB,EAAOlgC,EAAOqkC,GAClD,IAAIrN,EAAS/zB,KAEb,GAAIjD,EACF,IAAK,IAAImB,EAAI,EAAGD,EAAS81B,EAAOwE,OAAOt6B,OAAQC,EAAID,EAAQC,GAAK,EAAG,CACjE,IAAIo8B,EAAQvG,EAAOwE,OAAOjL,GAAGpvB,GACzBovD,EAAed,GAAQW,QAAQ7yB,EAAM5Q,KAAK,iBAE9C,GAAI4jC,IAAiBvwD,IAAUu9B,EAAM/Q,SAASwK,EAAOxxB,OAAOg9B,qBAAsB,CAChF,IAAIvkB,EAAQsf,EAAMtf,QAClB+Y,EAAOkO,QAAQjnB,EAAOiiB,EAAOmE,EAC/B,CACF,MAEArN,EAAOkO,QAAQ,EAAGhF,EAAOmE,EAE7B,GAEF,UACEt/B,KAAM,UACNS,OAAQ,CACNuiB,QAAS,CACPuT,SAAS,EACT/e,KAAM,GACNyL,cAAc,EACdhmB,IAAK,WAGTgnB,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxBjP,QAAS,GAAS,CAAC,EAAG0nC,KAE1B,EACAphD,GAAI,CACF4pB,KAAM,SAAcjB,GACdA,EAAOxxB,OAAOuiB,QAAQuT,SACxBtE,EAAOjP,QAAQkQ,MAEnB,EACAE,QAAS,SAAiBnB,GACpBA,EAAOxxB,OAAOuiB,QAAQuT,SACxBtE,EAAOjP,QAAQoQ,SAEnB,EACA,2CAA4C,SAAiDnB,GACvFA,EAAOjP,QAAQqP,aACjBJ,EAAOjP,QAAQooC,WAAWn5B,EAAOxxB,OAAOuiB,QAAQ/lB,IAAKg1B,EAAOuJ,YAEhE,EACAkpB,YAAa,SAAqBzyB,GAC5BA,EAAOjP,QAAQqP,aAAeJ,EAAOxxB,OAAO05B,SAC9ClI,EAAOjP,QAAQooC,WAAWn5B,EAAOxxB,OAAOuiB,QAAQ/lB,IAAKg1B,EAAOuJ,YAEhE,IC5JJ,SAAS,KAA2Q,OAA9P,GAAW5+B,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAK5T,IAAIwmC,GAAiB,CACnBC,aAAc,WACZ,IAAIz5B,EAAS/zB,KACTmB,EAAWsjB,IACfsP,EAAOe,KAAK,cACZ,IAAI24B,EAAUtsD,EAAS6iB,SAASC,KAAKtgB,QAAQ,IAAK,IAC9C+pD,EAAkB35B,EAAOwE,OAAOjL,GAAGyG,EAAOuJ,aAAa5T,KAAK,aAEhE,GAAI+jC,IAAYC,EAAiB,CAC/B,IAAI3qB,EAAWhP,EAAOoC,WAAWpnB,SAAS,IAAMglB,EAAOxxB,OAAOi2B,WAAa,eAAkBi1B,EAAU,MAAOzyC,QAC9G,GAAwB,qBAAb+nB,EAA0B,OACrChP,EAAOkO,QAAQc,EACjB,CACF,EACA4qB,QAAS,WACP,IAAI55B,EAAS/zB,KACT2B,EAAS,IACTR,EAAWsjB,IACf,GAAKsP,EAAO04B,eAAet4B,aAAgBJ,EAAOxxB,OAAOkqD,eAAep0B,QAExE,GAAItE,EAAOxxB,OAAOkqD,eAAe1nC,cAAgBpjB,EAAOmjB,SAAWnjB,EAAOmjB,QAAQC,aAChFpjB,EAAOmjB,QAAQC,aAAa,KAAM,KAAM,IAAMgP,EAAOwE,OAAOjL,GAAGyG,EAAOuJ,aAAa5T,KAAK,cAAgB,GACxGqK,EAAOe,KAAK,eACP,CACL,IAAIwF,EAAQvG,EAAOwE,OAAOjL,GAAGyG,EAAOuJ,aAChCrZ,EAAOqW,EAAM5Q,KAAK,cAAgB4Q,EAAM5Q,KAAK,gBACjDvoB,EAAS6iB,SAASC,KAAOA,GAAQ,GACjC8P,EAAOe,KAAK,UACd,CACF,EACAE,KAAM,WACJ,IAAIjB,EAAS/zB,KACTmB,EAAWsjB,IACX9iB,EAAS,IACb,MAAKoyB,EAAOxxB,OAAOkqD,eAAep0B,SAAWtE,EAAOxxB,OAAOuiB,SAAWiP,EAAOxxB,OAAOuiB,QAAQuT,SAA5F,CACAtE,EAAO04B,eAAet4B,aAAc,EACpC,IAAIlQ,EAAO9iB,EAAS6iB,SAASC,KAAKtgB,QAAQ,IAAK,IAE/C,GAAIsgB,EAGF,IAFA,IAAIgZ,EAAQ,EAEH/+B,EAAI,EAAGD,EAAS81B,EAAOwE,OAAOt6B,OAAQC,EAAID,EAAQC,GAAK,EAAG,CACjE,IAAIo8B,EAAQvG,EAAOwE,OAAOjL,GAAGpvB,GACzB0vD,EAAYtzB,EAAM5Q,KAAK,cAAgB4Q,EAAM5Q,KAAK,gBAEtD,GAAIkkC,IAAc3pC,IAASqW,EAAM/Q,SAASwK,EAAOxxB,OAAOg9B,qBAAsB,CAC5E,IAAIvkB,EAAQsf,EAAMtf,QAClB+Y,EAAOkO,QAAQjnB,EAAOiiB,EAAOlJ,EAAOxxB,OAAO29B,oBAAoB,EACjE,CACF,CAGEnM,EAAOxxB,OAAOkqD,eAAeoB,YAC/B,GAAElsD,GAAQyJ,GAAG,aAAc2oB,EAAO04B,eAAee,aAnBwD,CAqB7G,EACAt4B,QAAS,WACP,IAAInB,EAAS/zB,KACT2B,EAAS,IAEToyB,EAAOxxB,OAAOkqD,eAAeoB,YAC/B,GAAElsD,GAAQ6E,IAAI,aAAcutB,EAAO04B,eAAee,aAEtD,GAEF,UACE1rD,KAAM,kBACNS,OAAQ,CACNkqD,eAAgB,CACdp0B,SAAS,EACTtT,cAAc,EACd8oC,YAAY,IAGhB9nC,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxB04B,eAAgB,GAAS,CACvBt4B,aAAa,GACZo5B,KAEP,EACAniD,GAAI,CACF4pB,KAAM,SAAcjB,GACdA,EAAOxxB,OAAOkqD,eAAep0B,SAC/BtE,EAAO04B,eAAez3B,MAE1B,EACAE,QAAS,SAAiBnB,GACpBA,EAAOxxB,OAAOkqD,eAAep0B,SAC/BtE,EAAO04B,eAAev3B,SAE1B,EACA,2CAA4C,SAAiDnB,GACvFA,EAAO04B,eAAet4B,aACxBJ,EAAO04B,eAAekB,SAE1B,EACAnH,YAAa,SAAqBzyB,GAC5BA,EAAO04B,eAAet4B,aAAeJ,EAAOxxB,OAAO05B,SACrDlI,EAAO04B,eAAekB,SAE1B,IC3GJ,SAAS,KAA2Q,OAA9P,GAAWjvD,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAK5T,IAAI+mC,GAAW,CACbrgB,IAAK,WACH,IAAI1Z,EAAS/zB,KACT+tD,EAAiBh6B,EAAOwE,OAAOjL,GAAGyG,EAAOuJ,aACzCt4B,EAAQ+uB,EAAOxxB,OAAO+qC,SAAStoC,MAE/B+oD,EAAerkC,KAAK,0BACtB1kB,EAAQ+oD,EAAerkC,KAAK,yBAA2BqK,EAAOxxB,OAAO+qC,SAAStoC,OAGhFugB,aAAawO,EAAOuZ,SAAS2N,SAC7BlnB,EAAOuZ,SAAS2N,QAAUjsB,IAAS,WACjC,IAAIg/B,EAEAj6B,EAAOxxB,OAAO+qC,SAAS2gB,iBACrBl6B,EAAOxxB,OAAO+8B,MAChBvL,EAAOqP,UACP4qB,EAAiBj6B,EAAOuP,UAAUvP,EAAOxxB,OAAO06B,OAAO,GAAM,GAC7DlJ,EAAOe,KAAK,aACFf,EAAO0K,YAGP1K,EAAOxxB,OAAO+qC,SAAS4gB,gBAIjCn6B,EAAOuZ,SAASkO,QAHhBwS,EAAiBj6B,EAAOkO,QAAQlO,EAAOwE,OAAOt6B,OAAS,EAAG81B,EAAOxxB,OAAO06B,OAAO,GAAM,GACrFlJ,EAAOe,KAAK,cAJZk5B,EAAiBj6B,EAAOuP,UAAUvP,EAAOxxB,OAAO06B,OAAO,GAAM,GAC7DlJ,EAAOe,KAAK,aAOLf,EAAOxxB,OAAO+8B,MACvBvL,EAAOqP,UACP4qB,EAAiBj6B,EAAOkP,UAAUlP,EAAOxxB,OAAO06B,OAAO,GAAM,GAC7DlJ,EAAOe,KAAK,aACFf,EAAO2K,MAGP3K,EAAOxxB,OAAO+qC,SAAS4gB,gBAIjCn6B,EAAOuZ,SAASkO,QAHhBwS,EAAiBj6B,EAAOkO,QAAQ,EAAGlO,EAAOxxB,OAAO06B,OAAO,GAAM,GAC9DlJ,EAAOe,KAAK,cAJZk5B,EAAiBj6B,EAAOkP,UAAUlP,EAAOxxB,OAAO06B,OAAO,GAAM,GAC7DlJ,EAAOe,KAAK,cAQVf,EAAOxxB,OAAO05B,SAAWlI,EAAOuZ,SAASC,UAA2D,IAAnBygB,IAA/Bj6B,EAAOuZ,SAASG,KAGxE,GAAGzoC,EACL,EACA8Y,MAAO,WACL,IAAIiW,EAAS/zB,KACb,MAAuC,qBAA5B+zB,EAAOuZ,SAAS2N,WACvBlnB,EAAOuZ,SAASC,UACpBxZ,EAAOuZ,SAASC,SAAU,EAC1BxZ,EAAOe,KAAK,iBACZf,EAAOuZ,SAASG,OACT,GACT,EACA+N,KAAM,WACJ,IAAIznB,EAAS/zB,KACb,QAAK+zB,EAAOuZ,SAASC,UACkB,qBAA5BxZ,EAAOuZ,SAAS2N,UAEvBlnB,EAAOuZ,SAAS2N,UAClB11B,aAAawO,EAAOuZ,SAAS2N,SAC7BlnB,EAAOuZ,SAAS2N,aAAUtjC,GAG5Boc,EAAOuZ,SAASC,SAAU,EAC1BxZ,EAAOe,KAAK,iBACL,GACT,EACAq5B,MAAO,SAAelxB,GACpB,IAAIlJ,EAAS/zB,KACR+zB,EAAOuZ,SAASC,UACjBxZ,EAAOuZ,SAASE,SAChBzZ,EAAOuZ,SAAS2N,SAAS11B,aAAawO,EAAOuZ,SAAS2N,SAC1DlnB,EAAOuZ,SAASE,QAAS,EAEX,IAAVvQ,GAAgBlJ,EAAOxxB,OAAO+qC,SAAShzB,kBAIzC,CAAC,gBAAiB,uBAAuB7X,SAAQ,SAAUiC,GACzDqvB,EAAOoC,WAAW,GAAGzrB,iBAAiBhG,EAAOqvB,EAAOuZ,SAASyX,gBAC/D,KALAhxB,EAAOuZ,SAASE,QAAS,EACzBzZ,EAAOuZ,SAASG,QAMpB,EACA2gB,mBAAoB,WAClB,IAAIr6B,EAAS/zB,KACTmB,EAAWsjB,IAEkB,WAA7BtjB,EAASktD,iBAAgCt6B,EAAOuZ,SAASC,SAC3DxZ,EAAOuZ,SAAS6gB,QAGe,YAA7BhtD,EAASktD,iBAAiCt6B,EAAOuZ,SAASE,SAC5DzZ,EAAOuZ,SAASG,MAChB1Z,EAAOuZ,SAASE,QAAS,EAE7B,EACAuX,gBAAiB,SAAyBznD,GACxC,IAAIy2B,EAAS/zB,KACR+zB,IAAUA,EAAOG,WAAcH,EAAOoC,YACvC74B,EAAE+L,SAAW0qB,EAAOoC,WAAW,KACnC,CAAC,gBAAiB,uBAAuB1zB,SAAQ,SAAUiC,GACzDqvB,EAAOoC,WAAW,GAAGvrB,oBAAoBlG,EAAOqvB,EAAOuZ,SAASyX,gBAClE,IACAhxB,EAAOuZ,SAASE,QAAS,EAEpBzZ,EAAOuZ,SAASC,QAGnBxZ,EAAOuZ,SAASG,MAFhB1Z,EAAOuZ,SAASkO,OAIpB,EACA8S,aAAc,WACZ,IAAIv6B,EAAS/zB,KAET+zB,EAAOxxB,OAAO+qC,SAASihB,qBACzBx6B,EAAOuZ,SAASkO,OAEhBznB,EAAOuZ,SAAS6gB,QAGlB,CAAC,gBAAiB,uBAAuB1rD,SAAQ,SAAUiC,GACzDqvB,EAAOoC,WAAW,GAAGvrB,oBAAoBlG,EAAOqvB,EAAOuZ,SAASyX,gBAClE,GACF,EACAyJ,aAAc,WACZ,IAAIz6B,EAAS/zB,KAET+zB,EAAOxxB,OAAO+qC,SAASihB,uBAI3Bx6B,EAAOuZ,SAASE,QAAS,EACzBzZ,EAAOuZ,SAASG,MAClB,EACAghB,kBAAmB,WACjB,IAAI16B,EAAS/zB,KAET+zB,EAAOxxB,OAAO+qC,SAASohB,oBACzB36B,EAAOkC,IAAI7qB,GAAG,aAAc2oB,EAAOuZ,SAASghB,cAC5Cv6B,EAAOkC,IAAI7qB,GAAG,aAAc2oB,EAAOuZ,SAASkhB,cAEhD,EACAG,kBAAmB,WACjB,IAAI56B,EAAS/zB,KACb+zB,EAAOkC,IAAIzvB,IAAI,aAAcutB,EAAOuZ,SAASghB,cAC7Cv6B,EAAOkC,IAAIzvB,IAAI,aAAcutB,EAAOuZ,SAASkhB,aAC/C,GAEF,UACE1sD,KAAM,WACNS,OAAQ,CACN+qC,SAAU,CACRjV,SAAS,EACTrzB,MAAO,IACPsV,mBAAmB,EACnBi0C,sBAAsB,EACtBL,iBAAiB,EACjBD,kBAAkB,EAClBS,mBAAmB,IAGvB3oC,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxBuZ,SAAU,GAAS,CAAC,EAAGwgB,GAAU,CAC/BvgB,SAAS,EACTC,QAAQ,KAGd,EACApiC,GAAI,CACF4pB,KAAM,SAAcjB,GAClB,GAAIA,EAAOxxB,OAAO+qC,SAASjV,QAAS,CAClCtE,EAAOuZ,SAASxvB,QAChB,IAAI3c,EAAWsjB,IACftjB,EAASuJ,iBAAiB,mBAAoBqpB,EAAOuZ,SAAS8gB,oBAC9Dr6B,EAAOuZ,SAASmhB,mBAClB,CACF,EACAG,sBAAuB,SAA+B76B,EAAQkJ,EAAOqE,GAC/DvN,EAAOuZ,SAASC,UACdjM,IAAavN,EAAOxxB,OAAO+qC,SAASihB,qBACtCx6B,EAAOuZ,SAAS6gB,MAAMlxB,GAEtBlJ,EAAOuZ,SAASkO,OAGtB,EACAqT,gBAAiB,SAAyB96B,GACpCA,EAAOuZ,SAASC,UACdxZ,EAAOxxB,OAAO+qC,SAASihB,qBACzBx6B,EAAOuZ,SAASkO,OAEhBznB,EAAOuZ,SAAS6gB,QAGtB,EACA7H,SAAU,SAAkBvyB,GACtBA,EAAOxxB,OAAO05B,SAAWlI,EAAOuZ,SAASE,SAAWzZ,EAAOxxB,OAAO+qC,SAASihB,sBAC7Ex6B,EAAOuZ,SAASG,KAEpB,EACAvY,QAAS,SAAiBnB,GACxBA,EAAOuZ,SAASqhB,oBAEZ56B,EAAOuZ,SAASC,SAClBxZ,EAAOuZ,SAASkO,OAGlB,IAAIr6C,EAAWsjB,IACftjB,EAASyJ,oBAAoB,mBAAoBmpB,EAAOuZ,SAAS8gB,mBACnE,IC3NJ,SAAS,KAA2Q,OAA9P,GAAW1vD,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAG5T,IAAI+nC,GAAO,CACTnuB,aAAc,WAIZ,IAHA,IAAI5M,EAAS/zB,KACTu4B,EAASxE,EAAOwE,OAEXr6B,EAAI,EAAGA,EAAIq6B,EAAOt6B,OAAQC,GAAK,EAAG,CACzC,IAAIs4C,EAAWziB,EAAOwE,OAAOjL,GAAGpvB,GAC5BiuB,EAASqqB,EAAS,GAAGjZ,kBACrBwxB,GAAM5iC,EACL4H,EAAOxxB,OAAOk+B,mBAAkBsuB,GAAMh7B,EAAO4J,WAClD,IAAIqxB,EAAK,EAEJj7B,EAAOwD,iBACVy3B,EAAKD,EACLA,EAAK,GAGP,IAAIE,EAAel7B,EAAOxxB,OAAO2sD,WAAWC,UAAYlqD,KAAKiW,IAAI,EAAIjW,KAAKyW,IAAI86B,EAAS,GAAGpY,UAAW,GAAK,EAAIn5B,KAAKkW,IAAIlW,KAAKiW,IAAIs7B,EAAS,GAAGpY,UAAW,GAAI,GAC3JoY,EAAS3pB,IAAI,CACX8zB,QAASsO,IACRnlC,UAAU,eAAiBilC,EAAK,OAASC,EAAK,WACnD,CACF,EACA7xB,cAAe,SAAuBnT,GACpC,IAAI+J,EAAS/zB,KACTu4B,EAASxE,EAAOwE,OAChBpC,EAAapC,EAAOoC,WAGxB,GAFAoC,EAAOxO,WAAWC,GAEd+J,EAAOxxB,OAAOk+B,kBAAiC,IAAbzW,EAAgB,CACpD,IAAIolC,GAAiB,EACrB72B,EAAO5M,eAAc,WACnB,IAAIyjC,GACCr7B,IAAUA,EAAOG,UAAtB,CACAk7B,GAAiB,EACjBr7B,EAAOwN,WAAY,EAGnB,IAFA,IAAI8tB,EAAgB,CAAC,sBAAuB,iBAEnCnxD,EAAI,EAAGA,EAAImxD,EAAcpxD,OAAQC,GAAK,EAC7Ci4B,EAAWvqB,QAAQyjD,EAAcnxD,GANI,CAQzC,GACF,CACF,GAEF,UACE4D,KAAM,cACNS,OAAQ,CACN2sD,WAAY,CACVC,WAAW,IAGfppC,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxBm7B,WAAY,GAAS,CAAC,EAAGJ,KAE7B,EACA1jD,GAAI,CACF0rC,WAAY,SAAoB/iB,GAC9B,GAA6B,SAAzBA,EAAOxxB,OAAOi5B,OAAlB,CACAzH,EAAOjL,WAAW5mB,KAAK6xB,EAAOxxB,OAAO+sC,uBAAyB,QAC9D,IAAIyH,EAAkB,CACpBhd,cAAe,EACfF,gBAAiB,EACjBa,eAAgB,EAChBmC,qBAAqB,EACrB1D,aAAc,EACdsH,kBAAkB,GAEpB,GAAO1M,EAAOxxB,OAAQw0C,GACtB,GAAOhjB,EAAOmb,eAAgB6H,EAXa,CAY7C,EACApW,aAAc,SAAsB5M,GACL,SAAzBA,EAAOxxB,OAAOi5B,QAClBzH,EAAOm7B,WAAWvuB,cACpB,EACAxD,cAAe,SAAuBpJ,EAAQ/J,GACf,SAAzB+J,EAAOxxB,OAAOi5B,QAClBzH,EAAOm7B,WAAW/xB,cAAcnT,EAClC,ICnFJ,SAAS,KAA2Q,OAA9P,GAAWtrB,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAI5T,IAAIuoC,GAAO,CACT3uB,aAAc,WACZ,IAaI4uB,EAbAx7B,EAAS/zB,KACTi2B,EAAMlC,EAAOkC,IACbE,EAAapC,EAAOoC,WACpBoC,EAASxE,EAAOwE,OAChB0f,EAAclkB,EAAOnY,MACrBs8B,EAAenkB,EAAOjB,OACtBkF,EAAMjE,EAAOkE,aACbF,EAAahE,EAAOnsB,KACpB4pB,EAAUuC,EAAOvC,QACjBjvB,EAASwxB,EAAOxxB,OAAOitD,WACvBj4B,EAAexD,EAAOwD,eACtBY,EAAYpE,EAAOqE,SAAWrE,EAAOxxB,OAAO61B,QAAQC,QACpDo3B,EAAgB,EAGhBltD,EAAOmtD,SACLn4B,GACFg4B,EAAgBp5B,EAAWtsB,KAAK,uBAEH,IAAzB0lD,EAActxD,SAChBsxD,EAAgB,GAAE,0CAClBp5B,EAAWjyB,OAAOqrD,IAGpBA,EAAc1iC,IAAI,CAChBiG,OAAQmlB,EAAc,SAGxBsX,EAAgBt5B,EAAIpsB,KAAK,uBAEI,IAAzB0lD,EAActxD,SAChBsxD,EAAgB,GAAE,0CAClBt5B,EAAI/xB,OAAOqrD,MAKjB,IAAK,IAAIrxD,EAAI,EAAGA,EAAIq6B,EAAOt6B,OAAQC,GAAK,EAAG,CACzC,IAAIs4C,EAAWje,EAAOjL,GAAGpvB,GACrB89B,EAAa99B,EAEbi6B,IACF6D,EAAavE,SAAS+e,EAAS9sB,KAAK,2BAA4B,KAGlE,IAAIimC,EAA0B,GAAb3zB,EACb8tB,EAAQ7kD,KAAK6S,MAAM63C,EAAa,KAEhC33B,IACF23B,GAAcA,EACd7F,EAAQ7kD,KAAK6S,OAAO63C,EAAa,MAGnC,IAAIvxB,EAAWn5B,KAAKiW,IAAIjW,KAAKkW,IAAIq7B,EAAS,GAAGpY,SAAU,IAAK,GACxD2wB,EAAK,EACLC,EAAK,EACLY,EAAK,EAEL5zB,EAAa,IAAM,GACrB+yB,EAAc,GAARjF,EAAY/xB,EAClB63B,EAAK,IACK5zB,EAAa,GAAK,IAAM,GAClC+yB,EAAK,EACLa,EAAc,GAAR9F,EAAY/xB,IACRiE,EAAa,GAAK,IAAM,GAClC+yB,EAAKh3B,EAAqB,EAAR+xB,EAAY/xB,EAC9B63B,EAAK73B,IACKiE,EAAa,GAAK,IAAM,IAClC+yB,GAAMh3B,EACN63B,EAAK,EAAI73B,EAA0B,EAAbA,EAAiB+xB,GAGrC9xB,IACF+2B,GAAMA,GAGHx3B,IACHy3B,EAAKD,EACLA,EAAK,GAGP,IAAIjlC,EAAY,YAAcyN,EAAe,GAAKo4B,GAAc,iBAAmBp4B,EAAeo4B,EAAa,GAAK,oBAAsBZ,EAAK,OAASC,EAAK,OAASY,EAAK,MAS3K,GAPIxxB,GAAY,GAAKA,GAAY,IAC/BqxB,EAA6B,GAAbzzB,EAA6B,GAAXoC,EAC9BpG,IAAKy3B,EAA8B,IAAbzzB,EAA6B,GAAXoC,IAG9CoY,EAAS1sB,UAAUA,GAEfvnB,EAAOstD,aAAc,CAEvB,IAAIC,EAAev4B,EAAeif,EAAS3sC,KAAK,6BAA+B2sC,EAAS3sC,KAAK,4BACzFkmD,EAAcx4B,EAAeif,EAAS3sC,KAAK,8BAAgC2sC,EAAS3sC,KAAK,+BAEjE,IAAxBimD,EAAa7xD,SACf6xD,EAAe,GAAE,oCAAuCv4B,EAAe,OAAS,OAAS,YACzFif,EAAStyC,OAAO4rD,IAGS,IAAvBC,EAAY9xD,SACd8xD,EAAc,GAAE,oCAAuCx4B,EAAe,QAAU,UAAY,YAC5Fif,EAAStyC,OAAO6rD,IAGdD,EAAa7xD,SAAQ6xD,EAAa,GAAGx8C,MAAMqtC,QAAU17C,KAAKiW,KAAKkjB,EAAU,IACzE2xB,EAAY9xD,SAAQ8xD,EAAY,GAAGz8C,MAAMqtC,QAAU17C,KAAKiW,IAAIkjB,EAAU,GAC5E,CACF,CASA,GAPAjI,EAAWtJ,IAAI,CACb,2BAA4B,YAAckL,EAAa,EAAI,KAC3D,wBAAyB,YAAcA,EAAa,EAAI,KACxD,uBAAwB,YAAcA,EAAa,EAAI,KACvD,mBAAoB,YAAcA,EAAa,EAAI,OAGjDx1B,EAAOmtD,OACT,GAAIn4B,EACFg4B,EAAczlC,UAAU,qBAAuBmuB,EAAc,EAAI11C,EAAOytD,cAAgB,QAAU/X,EAAc,EAAI,0CAA4C11C,EAAO0tD,YAAc,SAChL,CACL,IAAIC,EAAcjrD,KAAKyW,IAAI+zC,GAA4D,GAA3CxqD,KAAK6S,MAAM7S,KAAKyW,IAAI+zC,GAAiB,IAC7EnxB,EAAa,KAAOr5B,KAAKkrD,IAAkB,EAAdD,EAAkBjrD,KAAK4kC,GAAK,KAAO,EAAI5kC,KAAKmrD,IAAkB,EAAdF,EAAkBjrD,KAAK4kC,GAAK,KAAO,GAChHwmB,EAAS9tD,EAAO0tD,YAChBK,EAAS/tD,EAAO0tD,YAAc3xB,EAC9BnS,EAAS5pB,EAAOytD,aACpBT,EAAczlC,UAAU,WAAaumC,EAAS,QAAUC,EAAS,uBAAyBpY,EAAe,EAAI/rB,GAAU,QAAU+rB,EAAe,EAAIoY,EAAS,sBAC/J,CAGF,IAAIC,EAAU/+B,EAAQiC,UAAYjC,EAAQmC,WAAaoE,EAAa,EAAI,EACxE5B,EAAWrM,UAAU,qBAAuBymC,EAAU,gBAAkBx8B,EAAOwD,eAAiB,EAAIk4B,GAAiB,iBAAmB17B,EAAOwD,gBAAkBk4B,EAAgB,GAAK,OACxL,EACAtyB,cAAe,SAAuBnT,GACpC,IAAI+J,EAAS/zB,KACTi2B,EAAMlC,EAAOkC,IACbsC,EAASxE,EAAOwE,OACpBA,EAAOxO,WAAWC,GAAUngB,KAAK,gHAAgHkgB,WAAWC,GAExJ+J,EAAOxxB,OAAOitD,WAAWE,SAAW37B,EAAOwD,gBAC7CtB,EAAIpsB,KAAK,uBAAuBkgB,WAAWC,EAE/C,GAEF,UACEloB,KAAM,cACNS,OAAQ,CACNitD,WAAY,CACVK,cAAc,EACdH,QAAQ,EACRM,aAAc,GACdC,YAAa,MAGjBlqC,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxBy7B,WAAY,GAAS,CAAC,EAAGF,KAE7B,EACAlkD,GAAI,CACF0rC,WAAY,SAAoB/iB,GAC9B,GAA6B,SAAzBA,EAAOxxB,OAAOi5B,OAAlB,CACAzH,EAAOjL,WAAW5mB,KAAK6xB,EAAOxxB,OAAO+sC,uBAAyB,QAC9Dvb,EAAOjL,WAAW5mB,KAAK6xB,EAAOxxB,OAAO+sC,uBAAyB,MAC9D,IAAIyH,EAAkB,CACpBhd,cAAe,EACfF,gBAAiB,EACjBa,eAAgB,EAChBmC,qBAAqB,EACrByN,gBAAiB,EACjBnR,aAAc,EACdmC,gBAAgB,EAChBmF,kBAAkB,GAEpB,GAAO1M,EAAOxxB,OAAQw0C,GACtB,GAAOhjB,EAAOmb,eAAgB6H,EAda,CAe7C,EACApW,aAAc,SAAsB5M,GACL,SAAzBA,EAAOxxB,OAAOi5B,QAClBzH,EAAOy7B,WAAW7uB,cACpB,EACAxD,cAAe,SAAuBpJ,EAAQ/J,GACf,SAAzB+J,EAAOxxB,OAAOi5B,QAClBzH,EAAOy7B,WAAWryB,cAAcnT,EAClC,IC/LJ,SAAS,KAA2Q,OAA9P,GAAWtrB,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAI5T,IAAIypC,GAAO,CACT7vB,aAAc,WAKZ,IAJA,IAAI5M,EAAS/zB,KACTu4B,EAASxE,EAAOwE,OAChBP,EAAMjE,EAAOkE,aAER/5B,EAAI,EAAGA,EAAIq6B,EAAOt6B,OAAQC,GAAK,EAAG,CACzC,IAAIs4C,EAAWje,EAAOjL,GAAGpvB,GACrBkgC,EAAWoY,EAAS,GAAGpY,SAEvBrK,EAAOxxB,OAAOkuD,WAAWC,gBAC3BtyB,EAAWn5B,KAAKiW,IAAIjW,KAAKkW,IAAIq7B,EAAS,GAAGpY,SAAU,IAAK,IAG1D,IAAIjS,EAASqqB,EAAS,GAAGjZ,kBACrBozB,GAAU,IAAMvyB,EAChBwyB,EAAUD,EACVE,EAAU,EACV9B,GAAM5iC,EACN6iC,EAAK,EAaT,GAXKj7B,EAAOwD,eAKDS,IACT44B,GAAWA,IALX5B,EAAKD,EACLA,EAAK,EACL8B,GAAWD,EACXA,EAAU,GAKZpa,EAAS,GAAGljC,MAAMw9C,QAAU7rD,KAAKyW,IAAIzW,KAAK6kD,MAAM1rB,IAAa7F,EAAOt6B,OAEhE81B,EAAOxxB,OAAOkuD,WAAWZ,aAAc,CAEzC,IAAIC,EAAe/7B,EAAOwD,eAAiBif,EAAS3sC,KAAK,6BAA+B2sC,EAAS3sC,KAAK,4BAClGkmD,EAAch8B,EAAOwD,eAAiBif,EAAS3sC,KAAK,8BAAgC2sC,EAAS3sC,KAAK,+BAE1E,IAAxBimD,EAAa7xD,SACf6xD,EAAe,GAAE,oCAAuC/7B,EAAOwD,eAAiB,OAAS,OAAS,YAClGif,EAAStyC,OAAO4rD,IAGS,IAAvBC,EAAY9xD,SACd8xD,EAAc,GAAE,oCAAuCh8B,EAAOwD,eAAiB,QAAU,UAAY,YACrGif,EAAStyC,OAAO6rD,IAGdD,EAAa7xD,SAAQ6xD,EAAa,GAAGx8C,MAAMqtC,QAAU17C,KAAKiW,KAAKkjB,EAAU,IACzE2xB,EAAY9xD,SAAQ8xD,EAAY,GAAGz8C,MAAMqtC,QAAU17C,KAAKiW,IAAIkjB,EAAU,GAC5E,CAEAoY,EAAS1sB,UAAU,eAAiBilC,EAAK,OAASC,EAAK,oBAAsB6B,EAAU,gBAAkBD,EAAU,OACrH,CACF,EACAzzB,cAAe,SAAuBnT,GACpC,IAAI+J,EAAS/zB,KACTu4B,EAASxE,EAAOwE,OAChB+E,EAAcvJ,EAAOuJ,YACrBnH,EAAapC,EAAOoC,WAGxB,GAFAoC,EAAOxO,WAAWC,GAAUngB,KAAK,gHAAgHkgB,WAAWC,GAExJ+J,EAAOxxB,OAAOk+B,kBAAiC,IAAbzW,EAAgB,CACpD,IAAIolC,GAAiB,EAErB72B,EAAOjL,GAAGgQ,GAAa3R,eAAc,WACnC,IAAIyjC,GACCr7B,IAAUA,EAAOG,UAAtB,CAEAk7B,GAAiB,EACjBr7B,EAAOwN,WAAY,EAGnB,IAFA,IAAI8tB,EAAgB,CAAC,sBAAuB,iBAEnCnxD,EAAI,EAAGA,EAAImxD,EAAcpxD,OAAQC,GAAK,EAC7Ci4B,EAAWvqB,QAAQyjD,EAAcnxD,GAPI,CASzC,GACF,CACF,GAEF,UACE4D,KAAM,cACNS,OAAQ,CACNkuD,WAAY,CACVZ,cAAc,EACda,eAAe,IAGnB3qC,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxB08B,WAAY,GAAS,CAAC,EAAGD,KAE7B,EACAplD,GAAI,CACF0rC,WAAY,SAAoB/iB,GAC9B,GAA6B,SAAzBA,EAAOxxB,OAAOi5B,OAAlB,CACAzH,EAAOjL,WAAW5mB,KAAK6xB,EAAOxxB,OAAO+sC,uBAAyB,QAC9Dvb,EAAOjL,WAAW5mB,KAAK6xB,EAAOxxB,OAAO+sC,uBAAyB,MAC9D,IAAIyH,EAAkB,CACpBhd,cAAe,EACfF,gBAAiB,EACjBa,eAAgB,EAChBmC,qBAAqB,EACrB1D,aAAc,EACdsH,kBAAkB,GAEpB,GAAO1M,EAAOxxB,OAAQw0C,GACtB,GAAOhjB,EAAOmb,eAAgB6H,EAZa,CAa7C,EACApW,aAAc,SAAsB5M,GACL,SAAzBA,EAAOxxB,OAAOi5B,QAClBzH,EAAO08B,WAAW9vB,cACpB,EACAxD,cAAe,SAAuBpJ,EAAQ/J,GACf,SAAzB+J,EAAOxxB,OAAOi5B,QAClBzH,EAAO08B,WAAWtzB,cAAcnT,EAClC,ICxHJ,SAAS,KAA2Q,OAA9P,GAAWtrB,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAI5T,IAAIgqC,GAAY,CACdpwB,aAAc,WAaZ,IAZA,IAAI5M,EAAS/zB,KACTi4C,EAAclkB,EAAOnY,MACrBs8B,EAAenkB,EAAOjB,OACtByF,EAASxE,EAAOwE,OAChBK,EAAkB7E,EAAO6E,gBACzBr2B,EAASwxB,EAAOxxB,OAAOyuD,gBACvBz5B,EAAexD,EAAOwD,eACtBzN,EAAYiK,EAAO4J,UACnBszB,EAAS15B,EAA4B0gB,EAAc,EAA1BnuB,EAA2CouB,EAAe,EAA3BpuB,EACxD6mC,EAASp5B,EAAeh1B,EAAOouD,QAAUpuD,EAAOouD,OAChDhzB,EAAYp7B,EAAO2uD,MAEdhzD,EAAI,EAAGD,EAASs6B,EAAOt6B,OAAQC,EAAID,EAAQC,GAAK,EAAG,CAC1D,IAAIs4C,EAAWje,EAAOjL,GAAGpvB,GACrBq7B,EAAYX,EAAgB16B,GAC5BizD,EAAc3a,EAAS,GAAGjZ,kBAC1B6zB,GAAoBH,EAASE,EAAc53B,EAAY,GAAKA,EAAYh3B,EAAO8uD,SAC/ET,EAAUr5B,EAAeo5B,EAASS,EAAmB,EACrDP,EAAUt5B,EAAe,EAAIo5B,EAASS,EAEtCE,GAAc3zB,EAAY14B,KAAKyW,IAAI01C,GACnCG,EAAUhvD,EAAOgvD,QAEE,kBAAZA,IAAkD,IAA1BA,EAAQt2C,QAAQ,OACjDs2C,EAAUl5C,WAAW9V,EAAOgvD,SAAW,IAAMh4B,GAG/C,IAAIgsB,EAAahuB,EAAe,EAAIg6B,EAAUH,EAC1C9L,EAAa/tB,EAAeg6B,EAAUH,EAAmB,EACzDrS,EAAQ,GAAK,EAAIx8C,EAAOw8C,OAAS95C,KAAKyW,IAAI01C,GAE1CnsD,KAAKyW,IAAI4pC,GAAc,OAAOA,EAAa,GAC3CrgD,KAAKyW,IAAI6pC,GAAc,OAAOA,EAAa,GAC3CtgD,KAAKyW,IAAI41C,GAAc,OAAOA,EAAa,GAC3CrsD,KAAKyW,IAAIk1C,GAAW,OAAOA,EAAU,GACrC3rD,KAAKyW,IAAIm1C,GAAW,OAAOA,EAAU,GACrC5rD,KAAKyW,IAAIqjC,GAAS,OAAOA,EAAQ,GACrC,IAAIyS,EAAiB,eAAiBlM,EAAa,MAAQC,EAAa,MAAQ+L,EAAa,gBAAkBT,EAAU,gBAAkBD,EAAU,cAAgB7R,EAAQ,IAI7K,GAHAvI,EAAS1sB,UAAU0nC,GACnBhb,EAAS,GAAGljC,MAAMw9C,OAAmD,EAAzC7rD,KAAKyW,IAAIzW,KAAK6kD,MAAMsH,IAE5C7uD,EAAOstD,aAAc,CAEvB,IAAI4B,EAAkBl6B,EAAeif,EAAS3sC,KAAK,6BAA+B2sC,EAAS3sC,KAAK,4BAC5F6nD,EAAiBn6B,EAAeif,EAAS3sC,KAAK,8BAAgC2sC,EAAS3sC,KAAK,+BAEjE,IAA3B4nD,EAAgBxzD,SAClBwzD,EAAkB,GAAE,oCAAuCl6B,EAAe,OAAS,OAAS,YAC5Fif,EAAStyC,OAAOutD,IAGY,IAA1BC,EAAezzD,SACjByzD,EAAiB,GAAE,oCAAuCn6B,EAAe,QAAU,UAAY,YAC/Fif,EAAStyC,OAAOwtD,IAGdD,EAAgBxzD,SAAQwzD,EAAgB,GAAGn+C,MAAMqtC,QAAUyQ,EAAmB,EAAIA,EAAmB,GACrGM,EAAezzD,SAAQyzD,EAAe,GAAGp+C,MAAMqtC,SAAWyQ,EAAmB,GAAKA,EAAmB,EAC3G,CACF,CACF,EACAj0B,cAAe,SAAuBnT,GACpC,IAAI+J,EAAS/zB,KACb+zB,EAAOwE,OAAOxO,WAAWC,GAAUngB,KAAK,gHAAgHkgB,WAAWC,EACrK,GAEF,UACEloB,KAAM,mBACNS,OAAQ,CACNyuD,gBAAiB,CACfL,OAAQ,GACRY,QAAS,EACTL,MAAO,IACPnS,MAAO,EACPsS,SAAU,EACVxB,cAAc,IAGlB9pC,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxBi9B,gBAAiB,GAAS,CAAC,EAAGD,KAElC,EACA3lD,GAAI,CACF0rC,WAAY,SAAoB/iB,GACD,cAAzBA,EAAOxxB,OAAOi5B,SAClBzH,EAAOjL,WAAW5mB,KAAK6xB,EAAOxxB,OAAO+sC,uBAAyB,aAC9Dvb,EAAOjL,WAAW5mB,KAAK6xB,EAAOxxB,OAAO+sC,uBAAyB,MAC9Dvb,EAAOxxB,OAAOs6B,qBAAsB,EACpC9I,EAAOmb,eAAerS,qBAAsB,EAC9C,EACA8D,aAAc,SAAsB5M,GACL,cAAzBA,EAAOxxB,OAAOi5B,QAClBzH,EAAOi9B,gBAAgBrwB,cACzB,EACAxD,cAAe,SAAuBpJ,EAAQ/J,GACf,cAAzB+J,EAAOxxB,OAAOi5B,QAClBzH,EAAOi9B,gBAAgB7zB,cAAcnT,EACvC,ICzGJ,SAAS,KAA2Q,OAA9P,GAAWtrB,OAAO02B,QAAU,SAAU/rB,GAAU,IAAK,IAAInL,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAAK,CAAE,IAAIK,EAASwoB,UAAU7oB,GAAI,IAAK,IAAIa,KAAOR,EAAcG,OAAOC,UAAUE,eAAeC,KAAKP,EAAQQ,KAAQsK,EAAOtK,GAAOR,EAAOQ,GAAU,CAAE,OAAOsK,CAAQ,EAAU,GAAS1L,MAAMqC,KAAM+mB,UAAY,CAI5T,IAAI4qC,GAAS,CACX38B,KAAM,WACJ,IAAIjB,EAAS/zB,KACT4xD,EAAe79B,EAAOxxB,OAAOsvD,OACjC,GAAI99B,EAAO89B,OAAO19B,YAAa,OAAO,EACtCJ,EAAO89B,OAAO19B,aAAc,EAC5B,IAAI29B,EAAc/9B,EAAO/1B,YAuBzB,OArBI4zD,EAAa79B,kBAAkB+9B,GACjC/9B,EAAO89B,OAAO99B,OAAS69B,EAAa79B,OACpC,GAAOA,EAAO89B,OAAO99B,OAAOmb,eAAgB,CAC1CrS,qBAAqB,EACrB0D,qBAAqB,IAEvB,GAAOxM,EAAO89B,OAAO99B,OAAOxxB,OAAQ,CAClCs6B,qBAAqB,EACrB0D,qBAAqB,KAEd,GAASqxB,EAAa79B,UAC/BA,EAAO89B,OAAO99B,OAAS,IAAI+9B,EAAY,GAAO,CAAC,EAAGF,EAAa79B,OAAQ,CACrE+I,uBAAuB,EACvBD,qBAAqB,EACrB0D,qBAAqB,KAEvBxM,EAAO89B,OAAOE,eAAgB,GAGhCh+B,EAAO89B,OAAO99B,OAAOkC,IAAIvN,SAASqL,EAAOxxB,OAAOsvD,OAAOG,sBACvDj+B,EAAO89B,OAAO99B,OAAO3oB,GAAG,MAAO2oB,EAAO89B,OAAOI,eACtC,CACT,EACAA,aAAc,WACZ,IAAIl+B,EAAS/zB,KACTkyD,EAAen+B,EAAO89B,OAAO99B,OACjC,GAAKm+B,EAAL,CACA,IAAI5xB,EAAe4xB,EAAa5xB,aAC5BD,EAAe6xB,EAAa7xB,aAChC,KAAIA,IAAgB,GAAEA,GAAc9W,SAASwK,EAAOxxB,OAAOsvD,OAAOM,yBACtC,qBAAjB7xB,GAAiD,OAAjBA,EAA3C,CACA,IAAI6D,EAQJ,GALEA,EADE+tB,EAAa3vD,OAAO+8B,KACP7H,SAAS,GAAEy6B,EAAa7xB,cAAc3W,KAAK,2BAA4B,IAEvE4W,EAGbvM,EAAOxxB,OAAO+8B,KAAM,CACtB,IAAI8yB,EAAer+B,EAAOuJ,YAEtBvJ,EAAOwE,OAAOjL,GAAG8kC,GAAc7oC,SAASwK,EAAOxxB,OAAOg9B,uBACxDxL,EAAOqP,UAEPrP,EAAOsP,YAActP,EAAOoC,WAAW,GAAG5J,WAC1C6lC,EAAer+B,EAAOuJ,aAGxB,IAAImG,EAAY1P,EAAOwE,OAAOjL,GAAG8kC,GAAcnkC,QAAQ,6BAAgCkW,EAAe,MAAO7W,GAAG,GAAGtS,QAC/GwV,EAAYuD,EAAOwE,OAAOjL,GAAG8kC,GAActkC,QAAQ,6BAAgCqW,EAAe,MAAO7W,GAAG,GAAGtS,QAC7EmpB,EAAb,qBAAdV,EAA0CjT,EAAwC,qBAAdA,EAA0CiT,EAAmBjT,EAAY4hC,EAAeA,EAAe3uB,EAA0BjT,EAA8BiT,CAChP,CAEA1P,EAAOkO,QAAQkC,EAxByD,CAJ/C,CA6B3B,EACAsB,OAAQ,SAAgBvD,GACtB,IAAInO,EAAS/zB,KACTkyD,EAAen+B,EAAO89B,OAAO99B,OACjC,GAAKm+B,EAAL,CACA,IAAIn4B,EAAsD,SAAtCm4B,EAAa3vD,OAAOw3B,cAA2Bm4B,EAAahuB,uBAAyBguB,EAAa3vD,OAAOw3B,cACzHs4B,EAAmBt+B,EAAOxxB,OAAOsvD,OAAOQ,iBACxCC,EAAYD,IAAqBH,EAAa3vD,OAAO+8B,KAEzD,GAAIvL,EAAOgL,YAAcmzB,EAAanzB,WAAauzB,EAAW,CAC5D,IACIC,EACAvwB,EAFAwwB,EAAqBN,EAAa50B,YAItC,GAAI40B,EAAa3vD,OAAO+8B,KAAM,CACxB4yB,EAAa35B,OAAOjL,GAAGklC,GAAoBjpC,SAAS2oC,EAAa3vD,OAAOg9B,uBAC1E2yB,EAAa9uB,UAEb8uB,EAAa7uB,YAAc6uB,EAAa/7B,WAAW,GAAG5J,WACtDimC,EAAqBN,EAAa50B,aAIpC,IAAIm1B,EAAkBP,EAAa35B,OAAOjL,GAAGklC,GAAoBvkC,QAAQ,6BAAgC8F,EAAOgL,UAAY,MAAOzR,GAAG,GAAGtS,QACrI03C,EAAkBR,EAAa35B,OAAOjL,GAAGklC,GAAoB1kC,QAAQ,6BAAgCiG,EAAOgL,UAAY,MAAOzR,GAAG,GAAGtS,QAGvIu3C,EAD6B,qBAApBE,EACQC,EACmB,qBAApBA,EACCD,EACRC,EAAkBF,IAAuBA,EAAqBC,EACtDP,EAAa3vD,OAAOm4B,eAAiB,EAAIg4B,EAAkBF,EACnEE,EAAkBF,EAAqBA,EAAqBC,EACpDC,EAEAD,EAGnBzwB,EAAYjO,EAAOuJ,YAAcvJ,EAAO8L,cAAgB,OAAS,MACnE,MACE0yB,EAAiBx+B,EAAOgL,UACxBiD,EAAYuwB,EAAiBx+B,EAAO8L,cAAgB,OAAS,OAG3DyyB,IACFC,GAAgC,SAAdvwB,EAAuBqwB,GAAoB,EAAIA,GAG/DH,EAAap0B,sBAAwBo0B,EAAap0B,qBAAqB7iB,QAAQs3C,GAAkB,IAC/FL,EAAa3vD,OAAO+4B,eAEpBi3B,EADEA,EAAiBC,EACFD,EAAiBttD,KAAK6S,MAAMiiB,EAAgB,GAAK,EAEjDw4B,EAAiBttD,KAAK6S,MAAMiiB,EAAgB,GAAK,EAE3Dw4B,EAAiBC,GAAsBN,EAAa3vD,OAAOm4B,eAGtEw3B,EAAajwB,QAAQswB,EAAgBrwB,EAAU,OAAIvqB,GAEvD,CAGA,IAAIg7C,EAAmB,EACnBC,EAAmB7+B,EAAOxxB,OAAOsvD,OAAOM,sBAa5C,GAXIp+B,EAAOxxB,OAAOw3B,cAAgB,IAAMhG,EAAOxxB,OAAO+4B,iBACpDq3B,EAAmB5+B,EAAOxxB,OAAOw3B,eAG9BhG,EAAOxxB,OAAOsvD,OAAOgB,uBACxBF,EAAmB,GAGrBA,EAAmB1tD,KAAK6S,MAAM66C,GAC9BT,EAAa35B,OAAOvP,YAAY4pC,GAE5BV,EAAa3vD,OAAO+8B,MAAQ4yB,EAAa3vD,OAAO61B,SAAW85B,EAAa3vD,OAAO61B,QAAQC,QACzF,IAAK,IAAIn6B,EAAI,EAAGA,EAAIy0D,EAAkBz0D,GAAK,EACzCg0D,EAAa/7B,WAAWpnB,SAAS,8BAAiCglB,EAAOgL,UAAY7gC,GAAK,MAAOwqB,SAASkqC,QAG5G,IAAK,IAAIl3B,EAAK,EAAGA,EAAKi3B,EAAkBj3B,GAAM,EAC5Cw2B,EAAa35B,OAAOjL,GAAGyG,EAAOgL,UAAYrD,GAAIhT,SAASkqC,EA/ElC,CAkF3B,GAEF,UACE9wD,KAAM,SACNS,OAAQ,CACNsvD,OAAQ,CACN99B,OAAQ,KACR8+B,sBAAsB,EACtBR,iBAAkB,EAClBF,sBAAuB,4BACvBH,qBAAsB,4BAG1BjsC,OAAQ,WACN,IAAIgO,EAAS/zB,KACb8wB,GAAkBiD,EAAQ,CACxB89B,OAAQ,GAAS,CACf99B,OAAQ,KACRI,aAAa,GACZw9B,KAEP,EACAvmD,GAAI,CACF0rC,WAAY,SAAoB/iB,GAC9B,IAAI89B,EAAS99B,EAAOxxB,OAAOsvD,OACtBA,GAAWA,EAAO99B,SACvBA,EAAO89B,OAAO78B,OACdjB,EAAO89B,OAAOpsB,QAAO,GACvB,EACA+gB,YAAa,SAAqBzyB,GAC3BA,EAAO89B,OAAO99B,QACnBA,EAAO89B,OAAOpsB,QAChB,EACAA,OAAQ,SAAgB1R,GACjBA,EAAO89B,OAAO99B,QACnBA,EAAO89B,OAAOpsB,QAChB,EACAzR,OAAQ,SAAgBD,GACjBA,EAAO89B,OAAO99B,QACnBA,EAAO89B,OAAOpsB,QAChB,EACA9P,eAAgB,SAAwB5B,GACjCA,EAAO89B,OAAO99B,QACnBA,EAAO89B,OAAOpsB,QAChB,EACAtI,cAAe,SAAuBpJ,EAAQ/J,GAC5C,IAAIkoC,EAAen+B,EAAO89B,OAAO99B,OAC5Bm+B,GACLA,EAAa/0B,cAAcnT,EAC7B,EACA8oC,cAAe,SAAuB/+B,GACpC,IAAIm+B,EAAen+B,EAAO89B,OAAO99B,OAC5Bm+B,GAEDn+B,EAAO89B,OAAOE,eAAiBG,GACjCA,EAAah9B,SAEjB,G,+JC5MA69B,EAEAC,E,oBAGAC,EAAa,EACbC,EAAa,EAEjB,SAASC,EAAG9yD,EAAS+yD,EAAKjnC,GACxB,IAAIjuB,EAAIk1D,GAAOjnC,GAAU,EACrBpuB,EAAIq1D,GAAO,IAAIh1D,MAAM,IACzBiC,EAAUA,GAAW,CAAC,EACtB,IAAI6vB,EAAO7vB,EAAQ6vB,MAAQ6iC,EACvBM,OAAgC17C,IAArBtX,EAAQgzD,SAAyBhzD,EAAQgzD,SAAWL,EAInE,GAAY,MAAR9iC,GAA4B,MAAZmjC,EAAkB,CACpC,IAAIC,EAAYjzD,EAAQ0X,SAAW1X,EAAQkzD,KAAOA,EAAA,KAEtC,MAARrjC,IAEFA,EAAO6iC,EAAU,CAAgB,EAAfO,EAAU,GAAWA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,KAG3F,MAAZD,IAEFA,EAAWL,EAAiD,OAApCM,EAAU,IAAM,EAAIA,EAAU,IAE1D,CAMA,IAAIE,OAA0B77C,IAAlBtX,EAAQmzD,MAAsBnzD,EAAQmzD,MAAQnuC,KAAK4J,MAG3DwkC,OAA0B97C,IAAlBtX,EAAQozD,MAAsBpzD,EAAQozD,MAAQP,EAAa,EAEnEQ,EAAKF,EAAQP,GAAcQ,EAAQP,GAAc,IAarD,GAXIQ,EAAK,QAA0B/7C,IAArBtX,EAAQgzD,WACpBA,EAAWA,EAAW,EAAI,QAKvBK,EAAK,GAAKF,EAAQP,SAAiCt7C,IAAlBtX,EAAQozD,QAC5CA,EAAQ,GAINA,GAAS,IACX,MAAM,IAAInzD,MAAM,mDAGlB2yD,EAAaO,EACbN,EAAaO,EACbT,EAAYK,EAEZG,GAAS,YAET,IAAIG,GAA4B,KAAb,UAARH,GAA6BC,GAAS,WACjD11D,EAAEG,KAAOy1D,IAAO,GAAK,IACrB51D,EAAEG,KAAOy1D,IAAO,GAAK,IACrB51D,EAAEG,KAAOy1D,IAAO,EAAI,IACpB51D,EAAEG,KAAY,IAALy1D,EAET,IAAIC,EAAMJ,EAAQ,WAAc,IAAQ,UACxCz1D,EAAEG,KAAO01D,IAAQ,EAAI,IACrB71D,EAAEG,KAAa,IAAN01D,EAET71D,EAAEG,KAAO01D,IAAQ,GAAK,GAAM,GAE5B71D,EAAEG,KAAO01D,IAAQ,GAAK,IAEtB71D,EAAEG,KAAOm1D,IAAa,EAAI,IAE1Bt1D,EAAEG,KAAkB,IAAXm1D,EAET,IAAK,IAAI7vD,EAAI,EAAGA,EAAI,IAAKA,EACvBzF,EAAEG,EAAIsF,GAAK0sB,EAAK1sB,GAGlB,OAAO4vD,IAAO,EAAA5yD,EAAA,GAAUzC,EAC1B,CAEA,U,cC5FA,SAASoP,EAAM0mD,GACb,KAAK,EAAAC,EAAA,GAASD,GACZ,MAAM/+C,UAAU,gBAGlB,IAAItS,EACAulB,EAAM,IAAIgsC,WAAW,IAuBzB,OArBAhsC,EAAI,IAAMvlB,EAAIi1B,SAASo8B,EAAKnoD,MAAM,EAAG,GAAI,OAAS,GAClDqc,EAAI,GAAKvlB,IAAM,GAAK,IACpBulB,EAAI,GAAKvlB,IAAM,EAAI,IACnBulB,EAAI,GAAS,IAAJvlB,EAETulB,EAAI,IAAMvlB,EAAIi1B,SAASo8B,EAAKnoD,MAAM,EAAG,IAAK,OAAS,EACnDqc,EAAI,GAAS,IAAJvlB,EAETulB,EAAI,IAAMvlB,EAAIi1B,SAASo8B,EAAKnoD,MAAM,GAAI,IAAK,OAAS,EACpDqc,EAAI,GAAS,IAAJvlB,EAETulB,EAAI,IAAMvlB,EAAIi1B,SAASo8B,EAAKnoD,MAAM,GAAI,IAAK,OAAS,EACpDqc,EAAI,GAAS,IAAJvlB,EAGTulB,EAAI,KAAOvlB,EAAIi1B,SAASo8B,EAAKnoD,MAAM,GAAI,IAAK,KAAO,cAAgB,IACnEqc,EAAI,IAAMvlB,EAAI,WAAc,IAC5BulB,EAAI,IAAMvlB,IAAM,GAAK,IACrBulB,EAAI,IAAMvlB,IAAM,GAAK,IACrBulB,EAAI,IAAMvlB,IAAM,EAAI,IACpBulB,EAAI,IAAU,IAAJvlB,EACHulB,CACT,CAEA,UC/BA,SAASisC,EAAcC,GACrBA,EAAMC,SAASC,mBAAmBF,IAIlC,IAFA,IAAIG,EAAQ,GAEHl2D,EAAI,EAAGA,EAAI+1D,EAAIh2D,SAAUC,EAChCk2D,EAAMlyD,KAAK+xD,EAAII,WAAWn2D,IAG5B,OAAOk2D,CACT,CAEO,IAAIE,EAAM,uCACNvH,EAAM,uCACF,SAAS,EAACjrD,EAAM/B,EAASw0D,GACtC,SAASC,EAAaz3D,EAAOgO,EAAWqoD,EAAKjnC,GAS3C,GARqB,kBAAVpvB,IACTA,EAAQi3D,EAAcj3D,IAGC,kBAAdgO,IACTA,EAAY,EAAMA,IAGK,KAArBA,EAAU9M,OACZ,MAAM6W,UAAU,oEAMlB,IAAIs/C,EAAQ,IAAIL,WAAW,GAAKh3D,EAAMkB,QAOtC,GANAm2D,EAAM1wD,IAAIqH,GACVqpD,EAAM1wD,IAAI3G,EAAOgO,EAAU9M,QAC3Bm2D,EAAQG,EAASH,GACjBA,EAAM,GAAgB,GAAXA,EAAM,GAAYr0D,EAC7Bq0D,EAAM,GAAgB,GAAXA,EAAM,GAAY,IAEzBhB,EAAK,CACPjnC,EAASA,GAAU,EAEnB,IAAK,IAAIjuB,EAAI,EAAGA,EAAI,KAAMA,EACxBk1D,EAAIjnC,EAASjuB,GAAKk2D,EAAMl2D,GAG1B,OAAOk1D,CACT,CAEA,OAAO,EAAA5yD,EAAA,GAAU4zD,EACnB,CAGA,IACEI,EAAa1yD,KAAOA,CACtB,CAAE,MAAOL,GAAM,CAKf,OAFA+yD,EAAaF,IAAMA,EACnBE,EAAazH,IAAMA,EACZyH,CACT,CC3CA,SAASC,EAAIL,GACX,GAAqB,kBAAVA,EAAoB,CAC7B,IAAIM,EAAMR,SAASC,mBAAmBC,IAEtCA,EAAQ,IAAIL,WAAWW,EAAIz2D,QAE3B,IAAK,IAAIC,EAAI,EAAGA,EAAIw2D,EAAIz2D,SAAUC,EAChCk2D,EAAMl2D,GAAKw2D,EAAIL,WAAWn2D,EAE9B,CAEA,OAAOy2D,EAAqBC,EAAWC,EAAaT,GAAuB,EAAfA,EAAMn2D,QACpE,CAMA,SAAS02D,EAAqBG,GAK5B,IAJA,IAAIC,EAAS,GACTC,EAA0B,GAAfF,EAAM72D,OACjBg3D,EAAS,mBAEJ/2D,EAAI,EAAGA,EAAI82D,EAAU92D,GAAK,EAAG,CACpC,IAAI6iC,EAAI+zB,EAAM52D,GAAK,KAAOA,EAAI,GAAK,IAC/Bg3D,EAAMz9B,SAASw9B,EAAO/mD,OAAO6yB,IAAM,EAAI,IAAQk0B,EAAO/mD,OAAW,GAAJ6yB,GAAW,IAC5Eg0B,EAAO7yD,KAAKgzD,EACd,CAEA,OAAOH,CACT,CAMA,SAASI,EAAgBC,GACvB,OAAwC,IAAhCA,EAAe,KAAO,GAAK,GAAU,CAC/C,CAMA,SAASR,EAAW7zB,EAAGtQ,GAErBsQ,EAAEtQ,GAAO,IAAM,KAAQA,EAAM,GAC7BsQ,EAAEo0B,EAAgB1kC,GAAO,GAAKA,EAM9B,IALA,IAAI3yB,EAAI,WACJC,GAAK,UACL+E,GAAK,WACLI,EAAI,UAEChF,EAAI,EAAGA,EAAI6iC,EAAE9iC,OAAQC,GAAK,GAAI,CACrC,IAAIm3D,EAAOv3D,EACPw3D,EAAOv3D,EACPw3D,EAAOzyD,EACP0yD,EAAOtyD,EACXpF,EAAI23D,EAAM33D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAE7iC,GAAI,GAAI,WAChCgF,EAAIuyD,EAAMvyD,EAAGpF,EAAGC,EAAG+E,EAAGi+B,EAAE7iC,EAAI,GAAI,IAAK,WACrC4E,EAAI2yD,EAAM3yD,EAAGI,EAAGpF,EAAGC,EAAGgjC,EAAE7iC,EAAI,GAAI,GAAI,WACpCH,EAAI03D,EAAM13D,EAAG+E,EAAGI,EAAGpF,EAAGijC,EAAE7iC,EAAI,GAAI,IAAK,YACrCJ,EAAI23D,EAAM33D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAE7iC,EAAI,GAAI,GAAI,WACpCgF,EAAIuyD,EAAMvyD,EAAGpF,EAAGC,EAAG+E,EAAGi+B,EAAE7iC,EAAI,GAAI,GAAI,YACpC4E,EAAI2yD,EAAM3yD,EAAGI,EAAGpF,EAAGC,EAAGgjC,EAAE7iC,EAAI,GAAI,IAAK,YACrCH,EAAI03D,EAAM13D,EAAG+E,EAAGI,EAAGpF,EAAGijC,EAAE7iC,EAAI,GAAI,IAAK,UACrCJ,EAAI23D,EAAM33D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAE7iC,EAAI,GAAI,EAAG,YACnCgF,EAAIuyD,EAAMvyD,EAAGpF,EAAGC,EAAG+E,EAAGi+B,EAAE7iC,EAAI,GAAI,IAAK,YACrC4E,EAAI2yD,EAAM3yD,EAAGI,EAAGpF,EAAGC,EAAGgjC,EAAE7iC,EAAI,IAAK,IAAK,OACtCH,EAAI03D,EAAM13D,EAAG+E,EAAGI,EAAGpF,EAAGijC,EAAE7iC,EAAI,IAAK,IAAK,YACtCJ,EAAI23D,EAAM33D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAE7iC,EAAI,IAAK,EAAG,YACpCgF,EAAIuyD,EAAMvyD,EAAGpF,EAAGC,EAAG+E,EAAGi+B,EAAE7iC,EAAI,IAAK,IAAK,UACtC4E,EAAI2yD,EAAM3yD,EAAGI,EAAGpF,EAAGC,EAAGgjC,EAAE7iC,EAAI,IAAK,IAAK,YACtCH,EAAI03D,EAAM13D,EAAG+E,EAAGI,EAAGpF,EAAGijC,EAAE7iC,EAAI,IAAK,GAAI,YACrCJ,EAAI43D,EAAM53D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAE7iC,EAAI,GAAI,GAAI,WACpCgF,EAAIwyD,EAAMxyD,EAAGpF,EAAGC,EAAG+E,EAAGi+B,EAAE7iC,EAAI,GAAI,GAAI,YACpC4E,EAAI4yD,EAAM5yD,EAAGI,EAAGpF,EAAGC,EAAGgjC,EAAE7iC,EAAI,IAAK,GAAI,WACrCH,EAAI23D,EAAM33D,EAAG+E,EAAGI,EAAGpF,EAAGijC,EAAE7iC,GAAI,IAAK,WACjCJ,EAAI43D,EAAM53D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAE7iC,EAAI,GAAI,GAAI,WACpCgF,EAAIwyD,EAAMxyD,EAAGpF,EAAGC,EAAG+E,EAAGi+B,EAAE7iC,EAAI,IAAK,EAAG,UACpC4E,EAAI4yD,EAAM5yD,EAAGI,EAAGpF,EAAGC,EAAGgjC,EAAE7iC,EAAI,IAAK,IAAK,WACtCH,EAAI23D,EAAM33D,EAAG+E,EAAGI,EAAGpF,EAAGijC,EAAE7iC,EAAI,GAAI,IAAK,WACrCJ,EAAI43D,EAAM53D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAE7iC,EAAI,GAAI,EAAG,WACnCgF,EAAIwyD,EAAMxyD,EAAGpF,EAAGC,EAAG+E,EAAGi+B,EAAE7iC,EAAI,IAAK,GAAI,YACrC4E,EAAI4yD,EAAM5yD,EAAGI,EAAGpF,EAAGC,EAAGgjC,EAAE7iC,EAAI,GAAI,IAAK,WACrCH,EAAI23D,EAAM33D,EAAG+E,EAAGI,EAAGpF,EAAGijC,EAAE7iC,EAAI,GAAI,GAAI,YACpCJ,EAAI43D,EAAM53D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAE7iC,EAAI,IAAK,GAAI,YACrCgF,EAAIwyD,EAAMxyD,EAAGpF,EAAGC,EAAG+E,EAAGi+B,EAAE7iC,EAAI,GAAI,GAAI,UACpC4E,EAAI4yD,EAAM5yD,EAAGI,EAAGpF,EAAGC,EAAGgjC,EAAE7iC,EAAI,GAAI,GAAI,YACpCH,EAAI23D,EAAM33D,EAAG+E,EAAGI,EAAGpF,EAAGijC,EAAE7iC,EAAI,IAAK,IAAK,YACtCJ,EAAI63D,EAAM73D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAE7iC,EAAI,GAAI,GAAI,QACpCgF,EAAIyyD,EAAMzyD,EAAGpF,EAAGC,EAAG+E,EAAGi+B,EAAE7iC,EAAI,GAAI,IAAK,YACrC4E,EAAI6yD,EAAM7yD,EAAGI,EAAGpF,EAAGC,EAAGgjC,EAAE7iC,EAAI,IAAK,GAAI,YACrCH,EAAI43D,EAAM53D,EAAG+E,EAAGI,EAAGpF,EAAGijC,EAAE7iC,EAAI,IAAK,IAAK,UACtCJ,EAAI63D,EAAM73D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAE7iC,EAAI,GAAI,GAAI,YACpCgF,EAAIyyD,EAAMzyD,EAAGpF,EAAGC,EAAG+E,EAAGi+B,EAAE7iC,EAAI,GAAI,GAAI,YACpC4E,EAAI6yD,EAAM7yD,EAAGI,EAAGpF,EAAGC,EAAGgjC,EAAE7iC,EAAI,GAAI,IAAK,WACrCH,EAAI43D,EAAM53D,EAAG+E,EAAGI,EAAGpF,EAAGijC,EAAE7iC,EAAI,IAAK,IAAK,YACtCJ,EAAI63D,EAAM73D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAE7iC,EAAI,IAAK,EAAG,WACpCgF,EAAIyyD,EAAMzyD,EAAGpF,EAAGC,EAAG+E,EAAGi+B,EAAE7iC,GAAI,IAAK,WACjC4E,EAAI6yD,EAAM7yD,EAAGI,EAAGpF,EAAGC,EAAGgjC,EAAE7iC,EAAI,GAAI,IAAK,WACrCH,EAAI43D,EAAM53D,EAAG+E,EAAGI,EAAGpF,EAAGijC,EAAE7iC,EAAI,GAAI,GAAI,UACpCJ,EAAI63D,EAAM73D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAE7iC,EAAI,GAAI,GAAI,WACpCgF,EAAIyyD,EAAMzyD,EAAGpF,EAAGC,EAAG+E,EAAGi+B,EAAE7iC,EAAI,IAAK,IAAK,WACtC4E,EAAI6yD,EAAM7yD,EAAGI,EAAGpF,EAAGC,EAAGgjC,EAAE7iC,EAAI,IAAK,GAAI,WACrCH,EAAI43D,EAAM53D,EAAG+E,EAAGI,EAAGpF,EAAGijC,EAAE7iC,EAAI,GAAI,IAAK,WACrCJ,EAAI83D,EAAM93D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAE7iC,GAAI,GAAI,WAChCgF,EAAI0yD,EAAM1yD,EAAGpF,EAAGC,EAAG+E,EAAGi+B,EAAE7iC,EAAI,GAAI,GAAI,YACpC4E,EAAI8yD,EAAM9yD,EAAGI,EAAGpF,EAAGC,EAAGgjC,EAAE7iC,EAAI,IAAK,IAAK,YACtCH,EAAI63D,EAAM73D,EAAG+E,EAAGI,EAAGpF,EAAGijC,EAAE7iC,EAAI,GAAI,IAAK,UACrCJ,EAAI83D,EAAM93D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAE7iC,EAAI,IAAK,EAAG,YACpCgF,EAAI0yD,EAAM1yD,EAAGpF,EAAGC,EAAG+E,EAAGi+B,EAAE7iC,EAAI,GAAI,IAAK,YACrC4E,EAAI8yD,EAAM9yD,EAAGI,EAAGpF,EAAGC,EAAGgjC,EAAE7iC,EAAI,IAAK,IAAK,SACtCH,EAAI63D,EAAM73D,EAAG+E,EAAGI,EAAGpF,EAAGijC,EAAE7iC,EAAI,GAAI,IAAK,YACrCJ,EAAI83D,EAAM93D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAE7iC,EAAI,GAAI,EAAG,YACnCgF,EAAI0yD,EAAM1yD,EAAGpF,EAAGC,EAAG+E,EAAGi+B,EAAE7iC,EAAI,IAAK,IAAK,UACtC4E,EAAI8yD,EAAM9yD,EAAGI,EAAGpF,EAAGC,EAAGgjC,EAAE7iC,EAAI,GAAI,IAAK,YACrCH,EAAI63D,EAAM73D,EAAG+E,EAAGI,EAAGpF,EAAGijC,EAAE7iC,EAAI,IAAK,GAAI,YACrCJ,EAAI83D,EAAM93D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAE7iC,EAAI,GAAI,GAAI,WACpCgF,EAAI0yD,EAAM1yD,EAAGpF,EAAGC,EAAG+E,EAAGi+B,EAAE7iC,EAAI,IAAK,IAAK,YACtC4E,EAAI8yD,EAAM9yD,EAAGI,EAAGpF,EAAGC,EAAGgjC,EAAE7iC,EAAI,GAAI,GAAI,WACpCH,EAAI63D,EAAM73D,EAAG+E,EAAGI,EAAGpF,EAAGijC,EAAE7iC,EAAI,GAAI,IAAK,WACrCJ,EAAI+3D,EAAQ/3D,EAAGu3D,GACft3D,EAAI83D,EAAQ93D,EAAGu3D,GACfxyD,EAAI+yD,EAAQ/yD,EAAGyyD,GACfryD,EAAI2yD,EAAQ3yD,EAAGsyD,EACjB,CAEA,MAAO,CAAC13D,EAAGC,EAAG+E,EAAGI,EACnB,CAOA,SAAS2xD,EAAaC,GACpB,GAAqB,IAAjBA,EAAM72D,OACR,MAAO,GAMT,IAHA,IAAI63D,EAAyB,EAAfhB,EAAM72D,OAChB82D,EAAS,IAAIgB,YAAYZ,EAAgBW,IAEpC53D,EAAI,EAAGA,EAAI43D,EAAS53D,GAAK,EAChC62D,EAAO72D,GAAK,KAAsB,IAAf42D,EAAM52D,EAAI,KAAcA,EAAI,GAGjD,OAAO62D,CACT,CAOA,SAASc,EAAQ90B,EAAGC,GAClB,IAAIg1B,GAAW,MAAJj1B,IAAmB,MAAJC,GACtBi1B,GAAOl1B,GAAK,KAAOC,GAAK,KAAOg1B,GAAO,IAC1C,OAAOC,GAAO,GAAW,MAAND,CACrB,CAMA,SAASE,EAAcC,EAAKC,GAC1B,OAAOD,GAAOC,EAAMD,IAAQ,GAAKC,CACnC,CAMA,SAASC,EAAOrzD,EAAGlF,EAAGC,EAAGgjC,EAAGu1B,EAAG1yD,GAC7B,OAAOiyD,EAAQK,EAAcL,EAAQA,EAAQ/3D,EAAGkF,GAAI6yD,EAAQ90B,EAAGn9B,IAAK0yD,GAAIv4D,EAC1E,CAEA,SAAS03D,EAAM33D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAGu1B,EAAG1yD,GAC/B,OAAOyyD,EAAOt4D,EAAI+E,GAAK/E,EAAImF,EAAGpF,EAAGC,EAAGgjC,EAAGu1B,EAAG1yD,EAC5C,CAEA,SAAS8xD,EAAM53D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAGu1B,EAAG1yD,GAC/B,OAAOyyD,EAAOt4D,EAAImF,EAAIJ,GAAKI,EAAGpF,EAAGC,EAAGgjC,EAAGu1B,EAAG1yD,EAC5C,CAEA,SAAS+xD,EAAM73D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAGu1B,EAAG1yD,GAC/B,OAAOyyD,EAAOt4D,EAAI+E,EAAII,EAAGpF,EAAGC,EAAGgjC,EAAGu1B,EAAG1yD,EACvC,CAEA,SAASgyD,EAAM93D,EAAGC,EAAG+E,EAAGI,EAAG69B,EAAGu1B,EAAG1yD,GAC/B,OAAOyyD,EAAOvzD,GAAK/E,GAAKmF,GAAIpF,EAAGC,EAAGgjC,EAAGu1B,EAAG1yD,EAC1C,CAEA,UCpNA,IAAI2yD,EAAKC,EAAI,KAAM,GAAM,GACzB,U,cCDA,SAASjzD,EAAE+yD,EAAGv1B,EAAGC,EAAGC,GAClB,OAAQq1B,GACN,KAAK,EACH,OAAOv1B,EAAIC,GAAKD,EAAIE,EAEtB,KAAK,EACH,OAAOF,EAAIC,EAAIC,EAEjB,KAAK,EACH,OAAOF,EAAIC,EAAID,EAAIE,EAAID,EAAIC,EAE7B,KAAK,EACH,OAAOF,EAAIC,EAAIC,EAErB,CAEA,SAASw1B,EAAK11B,EAAGv9B,GACf,OAAOu9B,GAAKv9B,EAAIu9B,IAAM,GAAKv9B,CAC7B,CAEA,SAASkzD,EAAKtC,GACZ,IAAIuC,EAAI,CAAC,WAAY,WAAY,WAAY,YACzCC,EAAI,CAAC,WAAY,WAAY,WAAY,UAAY,YAEzD,GAAqB,kBAAVxC,EAAoB,CAC7B,IAAIM,EAAMR,SAASC,mBAAmBC,IAEtCA,EAAQ,GAER,IAAK,IAAIl2D,EAAI,EAAGA,EAAIw2D,EAAIz2D,SAAUC,EAChCk2D,EAAMlyD,KAAKwyD,EAAIL,WAAWn2D,GAE9B,MAAYE,MAAMC,QAAQ+1D,KAExBA,EAAQh2D,MAAMO,UAAU+M,MAAM5M,KAAKs1D,IAGrCA,EAAMlyD,KAAK,KAKX,IAJA,IAAIa,EAAIqxD,EAAMn2D,OAAS,EAAI,EACvB44D,EAAI5xD,KAAK60B,KAAK/2B,EAAI,IAClB+zD,EAAI,IAAI14D,MAAMy4D,GAETn7B,EAAK,EAAGA,EAAKm7B,IAAKn7B,EAAI,CAG7B,IAFA,IAAI3T,EAAM,IAAIguC,YAAY,IAEjBjrC,EAAI,EAAGA,EAAI,KAAMA,EACxB/C,EAAI+C,GAAKspC,EAAW,GAAL14B,EAAc,EAAJ5Q,IAAU,GAAKspC,EAAW,GAAL14B,EAAc,EAAJ5Q,EAAQ,IAAM,GAAKspC,EAAW,GAAL14B,EAAc,EAAJ5Q,EAAQ,IAAM,EAAIspC,EAAW,GAAL14B,EAAc,EAAJ5Q,EAAQ,GAGvIgsC,EAAEp7B,GAAM3T,CACV,CAEA+uC,EAAED,EAAI,GAAG,IAA2B,GAApBzC,EAAMn2D,OAAS,GAASgH,KAAKC,IAAI,EAAG,IACpD4xD,EAAED,EAAI,GAAG,IAAM5xD,KAAK6S,MAAMg/C,EAAED,EAAI,GAAG,KACnCC,EAAED,EAAI,GAAG,IAA2B,GAApBzC,EAAMn2D,OAAS,GAAS,WAExC,IAAK,IAAI29B,EAAM,EAAGA,EAAMi7B,IAAKj7B,EAAK,CAGhC,IAFA,IAAIm7B,EAAI,IAAIhB,YAAY,IAEfnyD,EAAI,EAAGA,EAAI,KAAMA,EACxBmzD,EAAEnzD,GAAKkzD,EAAEl7B,GAAKh4B,GAGhB,IAAK,IAAIozD,EAAK,GAAIA,EAAK,KAAMA,EAC3BD,EAAEC,GAAMP,EAAKM,EAAEC,EAAK,GAAKD,EAAEC,EAAK,GAAKD,EAAEC,EAAK,IAAMD,EAAEC,EAAK,IAAK,GAShE,IANA,IAAIl5D,EAAI84D,EAAE,GACN74D,EAAI64D,EAAE,GACN9zD,EAAI8zD,EAAE,GACN1zD,EAAI0zD,EAAE,GACNt5D,EAAIs5D,EAAE,GAEDK,EAAM,EAAGA,EAAM,KAAMA,EAAK,CACjC,IAAIX,EAAIrxD,KAAK6S,MAAMm/C,EAAM,IACrBC,EAAIT,EAAK34D,EAAG,GAAKyF,EAAE+yD,EAAGv4D,EAAG+E,EAAGI,GAAK5F,EAAIq5D,EAAEL,GAAKS,EAAEE,KAAS,EAC3D35D,EAAI4F,EACJA,EAAIJ,EACJA,EAAI2zD,EAAK14D,EAAG,MAAQ,EACpBA,EAAID,EACJA,EAAIo5D,CACN,CAEAN,EAAE,GAAKA,EAAE,GAAK94D,IAAM,EACpB84D,EAAE,GAAKA,EAAE,GAAK74D,IAAM,EACpB64D,EAAE,GAAKA,EAAE,GAAK9zD,IAAM,EACpB8zD,EAAE,GAAKA,EAAE,GAAK1zD,IAAM,EACpB0zD,EAAE,GAAKA,EAAE,GAAKt5D,IAAM,CACtB,CAEA,MAAO,CAACs5D,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GACxV,CAEA,UC7FA,IAAIO,EAAKX,EAAI,KAAM,GAAM,GACzB,UCHA,yCCEA,SAASz2D,EAAQ8zD,GACf,KAAK,EAAAC,EAAA,GAASD,GACZ,MAAM/+C,UAAU,gBAGlB,OAAO2iB,SAASo8B,EAAKzjB,OAAO,GAAI,GAAI,GACtC,CAEA,S,8BCPA,IAAIgnB,E,iBACJ,IAAIC,EAAQ,IAAItD,WAAW,IACZ,SAASR,IAEtB,IAAK6D,IAGHA,EAAoC,qBAAXE,QAA0BA,OAAOF,iBAAmBE,OAAOF,gBAAgBtwC,KAAKwwC,SAA+B,qBAAbC,UAAgE,oBAA7BA,SAASH,iBAAkCG,SAASH,gBAAgBtwC,KAAKywC,WAElOH,GACH,MAAM,IAAI92D,MAAM,4GAIpB,OAAO82D,EAAgBC,EACzB,C,+CCVA,I,cAFIG,EAAY,GAEPt5D,EAAI,EAAGA,EAAI,MAAOA,EACzBs5D,EAAUt1D,MAAMhE,EAAI,KAAOU,SAAS,IAAIwxC,OAAO,IAGjD,SAAS5vC,EAAUunB,GACjB,IAAIoE,EAASpF,UAAU9oB,OAAS,QAAsB0Z,IAAjBoP,UAAU,GAAmBA,UAAU,GAAK,EAG7E8sC,GAAQ2D,EAAUzvC,EAAIoE,EAAS,IAAMqrC,EAAUzvC,EAAIoE,EAAS,IAAMqrC,EAAUzvC,EAAIoE,EAAS,IAAMqrC,EAAUzvC,EAAIoE,EAAS,IAAM,IAAMqrC,EAAUzvC,EAAIoE,EAAS,IAAMqrC,EAAUzvC,EAAIoE,EAAS,IAAM,IAAMqrC,EAAUzvC,EAAIoE,EAAS,IAAMqrC,EAAUzvC,EAAIoE,EAAS,IAAM,IAAMqrC,EAAUzvC,EAAIoE,EAAS,IAAMqrC,EAAUzvC,EAAIoE,EAAS,IAAM,IAAMqrC,EAAUzvC,EAAIoE,EAAS,KAAOqrC,EAAUzvC,EAAIoE,EAAS,KAAOqrC,EAAUzvC,EAAIoE,EAAS,KAAOqrC,EAAUzvC,EAAIoE,EAAS,KAAOqrC,EAAUzvC,EAAIoE,EAAS,KAAOqrC,EAAUzvC,EAAIoE,EAAS,MAAMtoB,cAMzf,KAAK,OAASgwD,GACZ,MAAM/+C,UAAU,+BAGlB,OAAO++C,CACT,CAEA,S,uEC1BA,SAAS4D,EAAGp3D,EAAS+yD,EAAKjnC,GACxB9rB,EAAUA,GAAW,CAAC,EACtB,IAAIq3D,EAAOr3D,EAAQ0X,SAAW1X,EAAQkzD,KAAO,OAK7C,GAHAmE,EAAK,GAAe,GAAVA,EAAK,GAAY,GAC3BA,EAAK,GAAe,GAAVA,EAAK,GAAY,IAEvBtE,EAAK,CACPjnC,EAASA,GAAU,EAEnB,IAAK,IAAIjuB,EAAI,EAAGA,EAAI,KAAMA,EACxBk1D,EAAIjnC,EAASjuB,GAAKw5D,EAAKx5D,GAGzB,OAAOk1D,CACT,CAEA,OAAO,OAAUsE,EACnB,CAEA,S,+CCvBA,8HCEA,SAAS5D,EAASD,GAChB,MAAuB,kBAATA,GAAqB,EAAMv9C,KAAKu9C,EAChD,CAEA,S,4BCFAruD,EAAQ,EAAU,CAACmyD,EAAK7qC,KACpB,MAAMzjB,EAASsuD,EAAIC,WAAaD,EAChC,IAAK,MAAO54D,EAAKykC,KAAQ1W,EACrBzjB,EAAOtK,GAAOykC,EAElB,OAAOn6B,CAAM,C,uqGCTjB,SAAS,EAAQ4qD,EAAK4D,GACpB,MAAMn0D,EAAM,IAAIN,IAAI6wD,EAAI1lD,MAAM,MAC9B,OAAOspD,EAAoBr0B,GAAQ9/B,EAAIgE,IAAI87B,EAAI3/B,eAAkB2/B,GAAQ9/B,EAAIgE,IAAI87B,EACnF,C,knGAEA,MAAMs0B,EAA4E,CAAC,EAC7EC,EAA4E,GAC5E,EAAO,OAEP,EAAK,KAAM,EACXC,EAAQj5D,GAA8B,MAAtBA,EAAIs1D,WAAW,IAAoC,MAAtBt1D,EAAIs1D,WAAW,KACjEt1D,EAAIs1D,WAAW,GAAK,KAAOt1D,EAAIs1D,WAAW,GAAK,IAC1C4D,EAAmBl5D,GAAQA,EAAIyM,WAAW,aAC1C,EAAS9M,OAAO02B,OAChB/zB,EAAS,CAAC0mB,EAAKpY,KACnB,MAAMzR,EAAI6pB,EAAI9M,QAAQtL,GAClBzR,GAAK,GACP6pB,EAAIuD,OAAOptB,EAAG,EAChB,EAEI,EAAiBQ,OAAOC,UAAUE,eAClC,EAAS,CAAC2kC,EAAKzkC,IAAQ,EAAeD,KAAK0kC,EAAKzkC,GAChD,EAAUX,MAAMC,QAChB65D,EAAS10B,GAA8B,iBAAtB20B,EAAa30B,GAC9B40B,EAAS50B,GAA8B,iBAAtB20B,EAAa30B,GAC9B60B,EAAU70B,GAA8B,kBAAtB20B,EAAa30B,GAC/B80B,EAAY90B,GAA8B,oBAAtB20B,EAAa30B,GACjC+0B,EAAc/0B,GAAuB,oBAARA,EAC7B,EAAYA,GAAuB,kBAARA,EAC3BxlB,EAAYwlB,GAAuB,kBAARA,EAC3B,EAAYA,GAAgB,OAARA,GAA+B,kBAARA,EAC3Cg1B,EAAah1B,IACT,EAASA,IAAQ+0B,EAAW/0B,KAAS+0B,EAAW/0B,EAAI9lC,OAAS66D,EAAW/0B,EAAIi1B,OAEhFl7C,EAAiB7e,OAAOC,UAAUC,SAClCu5D,EAAgBp7D,GAAUwgB,EAAeze,KAAK/B,GAC9C,EAAaA,GACVo7D,EAAap7D,GAAO2O,MAAM,GAAI,GAEjCgtD,EAAiBl1B,GAA8B,oBAAtB20B,EAAa30B,GACtCm1B,EAAgB55D,GAAQ,EAASA,IAAgB,QAARA,GAA4B,MAAXA,EAAI,IAAc,GAAK04B,SAAS14B,EAAK,MAAQA,EACvG65D,EAAiC,EAErC,uIAEI,EAAqC,EACzC,6EAEIC,EAAuB52D,IAC3B,MAAMs0C,EAAwB73C,OAAOqnB,OAAO,MAC5C,OAAQkuC,IACN,MAAM6E,EAAMviB,EAAM0d,GAClB,OAAO6E,IAAQviB,EAAM0d,GAAOhyD,EAAGgyD,GAAK,CACrC,EAEG8E,EAAa,SACbC,EAAWH,GAAqB5E,GAC7BA,EAAItwD,QAAQo1D,GAAY,CAACh9B,EAAGj5B,IAAMA,EAAIA,EAAEyT,cAAgB,OAE3D0iD,EAAc,aACd,EAAYJ,GACf5E,GAAQA,EAAItwD,QAAQs1D,EAAa,OAAOp1D,gBAErC,EAAag1D,GAAqB5E,GAC/BA,EAAI/lD,OAAO,GAAGqI,cAAgB09C,EAAIvoD,MAAM,KAE3CwtD,EAAeL,GAAqB5E,IACxC,MAAMqC,EAAIrC,EAAM,KAAK,EAAWA,KAAS,GACzC,OAAOqC,CAAC,IAEJ6C,EAAa,CAACp8D,EAAOq8D,KAAc16D,OAAOisB,GAAG5tB,EAAOq8D,GACpDC,EAAiB,CAACC,EAAKC,KAC3B,IAAK,IAAIr7D,EAAI,EAAGA,EAAIo7D,EAAIr7D,OAAQC,IAC9Bo7D,EAAIp7D,GAAGq7D,EACT,EAEIC,EAAM,CAAC5sD,EAAK7N,EAAKhC,KACrB2B,OAAOqO,eAAeH,EAAK7N,EAAK,CAC9BiO,cAAc,EACdoa,YAAY,EACZrqB,SACA,EAEE08D,EAAiBj2B,IACrB,MAAMhgC,EAAI6U,WAAWmrB,GACrB,OAAO9L,MAAMl0B,GAAKggC,EAAMhgC,CAAC,EAErBk2D,EAAYl2B,IAChB,MAAMhgC,EAAI,EAASggC,GAAOt2B,OAAOs2B,GAAOm2B,IACxC,OAAOjiC,MAAMl0B,GAAKggC,EAAMhgC,CAAC,EAE3B,IAAIo2D,EACJ,MAAMC,EAAgB,IACbD,IAAgBA,EAAoC,qBAAfE,WAA6BA,WAA6B,qBAAT15C,KAAuBA,KAAyB,qBAAXze,OAAyBA,OAA2B,qBAAX,EAAAe,EAAyB,EAAAA,EAAS,CAAC,GAOhN,MA8BMq3D,EAAiB,CACrB,CAAC,GAAI,OACL,CAAC,GAAI,QACL,CAAC,GAAI,QACL,CAAC,GAAI,QACL,CAAC,IAAK,aACN,CAAC,IAAK,iBACN,CAAC,IAAK,kBACN,CAAC,KAAM,iBACP,CAAC,KAAM,mBACP,CAAC,KAAM,aACP,CAAC,MAAO,gBACR,CAAC,MAAO,oBACR,EAAE,GAAI,UACN,EAAE,GAAI,QA0CFC,EAAkB,iNAClBC,EAAoC,EAAQD,GA2ClD,SAAS,EAAej9D,GACtB,GAAI,EAAQA,GAAQ,CAClB,MAAMirB,EAAM,CAAC,EACb,IAAK,IAAI9pB,EAAI,EAAGA,EAAInB,EAAMkB,OAAQC,IAAK,CACrC,MAAMuyC,EAAO1zC,EAAMmB,GACbg8D,EAAa,EAASzpB,GAAQ0pB,EAAiB1pB,GAAQ,EAAeA,GAC5E,GAAIypB,EACF,IAAK,MAAMn7D,KAAOm7D,EAChBlyC,EAAIjpB,GAAOm7D,EAAWn7D,EAG5B,CACA,OAAOipB,CACT,CAAO,GAAI,EAASjrB,IAAU,EAASA,GACrC,OAAOA,CAEX,CACA,MAAMq9D,EAAkB,gBAClBC,EAAsB,UACtBC,EAAiB,iBACvB,SAASH,EAAiBI,GACxB,MAAMC,EAAM,CAAC,EAOb,OANAD,EAAQ52D,QAAQ22D,EAAgB,IAAI/rD,MAAM6rD,GAAiB33D,SAASguC,IAClE,GAAIA,EAAM,CACR,MAAMgqB,EAAMhqB,EAAKliC,MAAM8rD,GACvBI,EAAIx8D,OAAS,IAAMu8D,EAAIC,EAAI,GAAGhsD,QAAUgsD,EAAI,GAAGhsD,OACjD,KAEK+rD,CACT,CAeA,SAAS,GAAez9D,GACtB,IAAIirB,EAAM,GACV,GAAI,EAASjrB,GACXirB,EAAMjrB,OACD,GAAI,EAAQA,GACjB,IAAK,IAAImB,EAAI,EAAGA,EAAInB,EAAMkB,OAAQC,IAAK,CACrC,MAAMg8D,EAAa,GAAen9D,EAAMmB,IACpCg8D,IACFlyC,GAAOkyC,EAAa,IAExB,MACK,GAAI,EAASn9D,GAClB,IAAK,MAAM+E,KAAQ/E,EACbA,EAAM+E,KACRkmB,GAAOlmB,EAAO,KAIpB,OAAOkmB,EAAIvZ,MACb,CACA,SAASisD,GAAe5tC,GACtB,IAAKA,EACH,OAAO,KACT,IAAM6tC,MAAOC,EAAK,MAAEtnD,GAAUwZ,EAO9B,OANI8tC,IAAU,EAASA,KACrB9tC,EAAM6tC,MAAQ,GAAeC,IAE3BtnD,IACFwZ,EAAMxZ,MAAQ,EAAeA,IAExBwZ,CACT,CAEA,MAAM+tC,GAAY,ilBACZC,GAAW,opBACXC,GAAY,qVACZC,GAAY,uEACZ,GAA4B,EAAQH,IACpC,GAA2B,EAAQC,IACnC,GAA8B,EAAQC,IACtCE,GAA4B,EAAQD,IAEpCE,GAAsB,8EACtBC,GAAuC,EAAQD,IAIrD,SAAS,GAAmBn+D,GAC1B,QAASA,GAAmB,KAAVA,CACpB,CAsEA,SAASq+D,GAAmBt9D,EAAGC,GAC7B,GAAID,EAAEG,SAAWF,EAAEE,OACjB,OAAO,EACT,IAAIJ,GAAQ,EACZ,IAAK,IAAIK,EAAI,EAAGL,GAASK,EAAIJ,EAAEG,OAAQC,IACrCL,EAAQw9D,GAAWv9D,EAAEI,GAAIH,EAAEG,IAE7B,OAAOL,CACT,CACA,SAASw9D,GAAWv9D,EAAGC,GACrB,GAAID,IAAMC,EACR,OAAO,EACT,IAAIu9D,EAAajD,EAAOv6D,GACpBy9D,EAAalD,EAAOt6D,GACxB,GAAIu9D,GAAcC,EAChB,SAAOD,IAAcC,IAAaz9D,EAAEk+C,YAAcj+C,EAAEi+C,UAItD,GAFAsf,EAAat9C,EAASlgB,GACtBy9D,EAAav9C,EAASjgB,GAClBu9D,GAAcC,EAChB,OAAOz9D,IAAMC,EAIf,GAFAu9D,EAAa,EAAQx9D,GACrBy9D,EAAa,EAAQx9D,GACjBu9D,GAAcC,EAChB,SAAOD,IAAcC,IAAaH,GAAmBt9D,EAAGC,GAI1D,GAFAu9D,EAAa,EAASx9D,GACtBy9D,EAAa,EAASx9D,GAClBu9D,GAAcC,EAAY,CAC5B,IAAKD,IAAeC,EAClB,OAAO,EAET,MAAMC,EAAa98D,OAAOP,KAAKL,GAAGG,OAC5Bw9D,EAAa/8D,OAAOP,KAAKJ,GAAGE,OAClC,GAAIu9D,IAAeC,EACjB,OAAO,EAET,IAAK,MAAM18D,KAAOjB,EAAG,CACnB,MAAM49D,EAAU59D,EAAEe,eAAeE,GAC3B48D,EAAU59D,EAAEc,eAAeE,GACjC,GAAI28D,IAAYC,IAAYD,GAAWC,IAAYN,GAAWv9D,EAAEiB,GAAMhB,EAAEgB,IACtE,OAAO,CAEX,CACF,CACA,OAAO68D,OAAO99D,KAAO89D,OAAO79D,EAC9B,CACA,SAAS89D,GAAa9zC,EAAKyb,GACzB,OAAOzb,EAAI+zC,WAAWrrB,GAAS4qB,GAAW5qB,EAAMjN,IAClD,CAEA,MAAMu4B,GAAmBv4B,GAChB,EAASA,GAAOA,EAAa,MAAPA,EAAc,GAAK,EAAQA,IAAQ,EAASA,KAASA,EAAI5kC,WAAa2e,IAAmBg7C,EAAW/0B,EAAI5kC,WAAa2B,KAAKC,UAAUgjC,EAAKw4B,GAAU,GAAKJ,OAAOp4B,GAExLw4B,GAAW,CAACnzC,EAAM2a,IAClBA,GAAOA,EAAIy4B,UACND,GAASnzC,EAAM2a,EAAIzmC,OACjBm7D,EAAM10B,GACR,CACL,CAAC,OAAOA,EAAI57B,SAAU,IAAI47B,EAAIt4B,WAAWgxD,QACvC,CAAChxD,GAAUnM,EAAKo9D,GAAOj+D,KACrBgN,EAAQkxD,GAAgBr9D,EAAKb,GAAK,OAASi+D,EACpCjxD,IAET,CAAC,IAGIktD,EAAM50B,GACR,CACL,CAAC,OAAOA,EAAI57B,SAAU,IAAI47B,EAAI55B,UAAUrF,KAAK/B,GAAM45D,GAAgB55D,MAE5Dwb,EAASwlB,GACX44B,GAAgB54B,IACd,EAASA,IAAS,EAAQA,IAASk1B,EAAcl1B,GAGrDA,EAFEo4B,OAAOp4B,GAIZ44B,GAAkB,CAAC55D,EAAGtE,EAAI,MAC9B,IAAIkE,EACJ,OAAO4b,EAASxb,GAAK,UAAkC,OAAvBJ,EAAKI,EAAE6nD,aAAuBjoD,EAAKlE,KAAOsE,CAAC,ECpd7E,IAAI65D,GAoGAC,GAnGJ,MAAMC,GACJ,WAAAv+D,CAAYw+D,GAAW,GACrBx8D,KAAKw8D,SAAWA,EAIhBx8D,KAAKy8D,SAAU,EAIfz8D,KAAK08D,QAAU,GAIf18D,KAAK28D,SAAW,GAChB38D,KAAK8uB,OAASutC,IACTG,GAAYH,KACfr8D,KAAKgb,OAASqhD,GAAkBO,SAAWP,GAAkBO,OAAS,KAAK16D,KACzElC,MACE,EAER,CACA,UAAI68D,GACF,OAAO78D,KAAKy8D,OACd,CACA,GAAAhvB,CAAIxrC,GACF,GAAIjC,KAAKy8D,QAAS,CAChB,MAAMK,EAAqBT,GAC3B,IAEE,OADAA,GAAoBr8D,KACbiC,GACT,CAAE,QACAo6D,GAAoBS,CACtB,CACF,MAAW,CAGb,CAKA,EAAA1xD,GACEixD,GAAoBr8D,IACtB,CAKA,GAAAwG,GACE61D,GAAoBr8D,KAAK8uB,MAC3B,CACA,IAAA0sB,CAAKuhB,GACH,GAAI/8D,KAAKy8D,QAAS,CAChB,IAAIv+D,EAAG6E,EACP,IAAK7E,EAAI,EAAG6E,EAAI/C,KAAK08D,QAAQz+D,OAAQC,EAAI6E,EAAG7E,IAC1C8B,KAAK08D,QAAQx+D,GAAGs9C,OAElB,IAAKt9C,EAAI,EAAG6E,EAAI/C,KAAK28D,SAAS1+D,OAAQC,EAAI6E,EAAG7E,IAC3C8B,KAAK28D,SAASz+D,KAEhB,GAAI8B,KAAK48D,OACP,IAAK1+D,EAAI,EAAG6E,EAAI/C,KAAK48D,OAAO3+D,OAAQC,EAAI6E,EAAG7E,IACzC8B,KAAK48D,OAAO1+D,GAAGs9C,MAAK,GAGxB,IAAKx7C,KAAKw8D,UAAYx8D,KAAK8uB,SAAWiuC,EAAY,CAChD,MAAMC,EAAOh9D,KAAK8uB,OAAO8tC,OAAOxxB,MAC5B4xB,GAAQA,IAASh9D,OACnBA,KAAK8uB,OAAO8tC,OAAO58D,KAAKgb,OAASgiD,EACjCA,EAAKhiD,MAAQhb,KAAKgb,MAEtB,CACAhb,KAAK8uB,YAAS,EACd9uB,KAAKy8D,SAAU,CACjB,CACF,EAEF,SAASQ,GAAYT,GACnB,OAAO,IAAID,GAAYC,EACzB,CACA,SAASU,GAAkB1hC,EAAQ2hC,EAAQd,IACrCc,GAASA,EAAMN,QACjBM,EAAMT,QAAQx6D,KAAKs5B,EAEvB,CACA,SAAS4hC,KACP,OAAOf,EACT,CACA,SAASgB,GAAep7D,GAClBo6D,IACFA,GAAkBM,SAASz6D,KAAKD,EAMpC,CAGA,MAAMq7D,GACJ,WAAAt/D,CAAYiE,EAAI2J,EAAS2xD,EAAWJ,GAClCn9D,KAAKiC,GAAKA,EACVjC,KAAK4L,QAAUA,EACf5L,KAAKu9D,UAAYA,EACjBv9D,KAAK68D,QAAS,EACd78D,KAAKw9D,KAAO,GAIZx9D,KAAKy9D,YAAc,EAInBz9D,KAAK09D,SAAW,EAIhB19D,KAAK29D,UAAY,EAIjB39D,KAAK49D,WAAa,EAIlB59D,KAAK69D,YAAc,EACnBX,GAAkBl9D,KAAMm9D,EAC1B,CACA,SAAIW,GACF,GAAyB,IAArB99D,KAAKy9D,YAAmB,CAC1Bz9D,KAAKy9D,YAAc,EACnBz9D,KAAK49D,aACLG,KACA,IAAK,MAAMC,KAAOh+D,KAAKw9D,KACrB,GAAIQ,EAAIC,WACNC,GAAgBF,EAAIC,UAChBj+D,KAAKy9D,aAAe,GACtB,MAINU,KACAn+D,KAAK49D,YACP,CACA,OAAO59D,KAAKy9D,aAAe,CAC7B,CACA,SAAIK,CAAMt7D,GACRxC,KAAKy9D,YAAcj7D,EAAI,EAAI,CAC7B,CACA,GAAAirC,GAEE,GADAztC,KAAKy9D,YAAc,GACdz9D,KAAK68D,OACR,OAAO78D,KAAKiC,KAEd,IAAIm8D,EAAkBC,GAClBC,EAAahC,GACjB,IAKE,OAJA+B,IAAc,EACd/B,GAAet8D,KACfA,KAAK29D,YACLY,GAAiBv+D,MACVA,KAAKiC,IACd,CAAE,QACAu8D,GAAkBx+D,MAClBA,KAAK29D,YACLrB,GAAegC,EACfD,GAAcD,CAChB,CACF,CACA,IAAA5iB,GACE,IAAIp5C,EACApC,KAAK68D,SACP0B,GAAiBv+D,MACjBw+D,GAAkBx+D,MACI,OAArBoC,EAAKpC,KAAKy+D,SAA2Br8D,EAAGtD,KAAKkB,MAC9CA,KAAK68D,QAAS,EAElB,EAEF,SAASqB,GAAgBD,GACvB,OAAOA,EAASlhE,KAClB,CACA,SAASwhE,GAAiBG,GACxBA,EAAQhB,WACRgB,EAAQb,YAAc,CACxB,CACA,SAASW,GAAkBE,GACzB,GAAIA,EAAQlB,MAAQkB,EAAQlB,KAAKv/D,OAASygE,EAAQb,YAAa,CAC7D,IAAK,IAAI3/D,EAAIwgE,EAAQb,YAAa3/D,EAAIwgE,EAAQlB,KAAKv/D,OAAQC,IACzDygE,GAAiBD,EAAQlB,KAAKt/D,GAAIwgE,GAEpCA,EAAQlB,KAAKv/D,OAASygE,EAAQb,WAChC,CACF,CACA,SAASc,GAAiBX,EAAKU,GAC7B,MAAME,EAAUZ,EAAI72D,IAAIu3D,QACR,IAAZE,GAAsBF,EAAQhB,WAAakB,IAC7CZ,EAAIl2D,OAAO42D,GACM,IAAbV,EAAIp2D,MACNo2D,EAAIa,UAGV,CACA,SAASrjC,GAAOv5B,EAAI5B,GACd4B,EAAGu5B,kBAAkB8hC,KACvBr7D,EAAKA,EAAGu5B,OAAOv5B,IAEjB,MAAM68D,EAAU,IAAIxB,GAAer7D,EAAI,GAAM,KACvC68D,EAAQhB,OACVgB,EAAQrxB,KACV,IAEEptC,IACF,EAAOy+D,EAASz+D,GACZA,EAAQ88D,OACVD,GAAkB4B,EAASz+D,EAAQ88D,QAElC98D,GAAYA,EAAQ41C,MACvB6oB,EAAQrxB,MAEV,MAAMsxB,EAASD,EAAQrxB,IAAI3mB,KAAKg4C,GAEhC,OADAC,EAAOvjC,OAASsjC,EACTC,CACT,CACA,SAASvjB,GAAKujB,GACZA,EAAOvjC,OAAOggB,MAChB,CACA,IAAI6iB,IAAc,EACdW,GAAqB,EACzB,MAAMC,GAAa,GACnB,SAASlB,KACPkB,GAAW/8D,KAAKm8D,IAChBA,IAAc,CAChB,CAKA,SAASF,KACP,MAAMnB,EAAOiC,GAAW7zB,MACxBizB,QAAuB,IAATrB,GAAyBA,CACzC,CACA,SAASkC,KACPF,IACF,CACA,SAASG,KACPH,KACA,OAAQA,IAAsBI,GAAsBnhE,OAClDmhE,GAAsBjkB,OAAtBikB,EAEJ,CACA,SAASC,GAAYX,EAASV,EAAKsB,GAEjC,GAAItB,EAAI72D,IAAIu3D,KAAaA,EAAQhB,SAAU,CACzCM,EAAIt6D,IAAIg7D,EAASA,EAAQhB,UACzB,MAAM6B,EAASb,EAAQlB,KAAKkB,EAAQb,aAChC0B,IAAWvB,GACTuB,GACFZ,GAAiBY,EAAQb,GAE3BA,EAAQlB,KAAKkB,EAAQb,eAAiBG,GAEtCU,EAAQb,aAKZ,CACF,CACA,MAAMuB,GAAwB,GAC9B,SAASI,GAAexB,EAAKyB,EAAYH,GAEvCJ,KACA,IAAK,MAAMR,KAAWV,EAAI7/D,OACxB,IAAKugE,EAAQgB,eAAgBhB,EAAQf,YAGjCe,EAAQjB,YAAcgC,KAAgBf,EAAQf,WAA4B,IAAf8B,GAAmB,CAChF,MAAME,EAAiBjB,EAAQjB,YAC/BiB,EAAQjB,YAAcgC,EACC,IAAnBE,GAA0BjB,EAAQd,YAA6B,IAAf6B,IAIlDf,EAAQ9yD,UACJ8yD,EAAQnB,WACV6B,GAAsBl9D,KAAKw8D,EAAQnB,WAGzC,CAEF4B,IACF,CAEA,MAAMS,GAAY,CAACf,EAASZ,KAC1B,MAAMD,EAAsB,IAAIx2D,IAGhC,OAFAw2D,EAAIa,QAAUA,EACdb,EAAIC,SAAWA,EACRD,CAAG,EAGN6B,GAA4B,IAAIC,QAChCC,GAAcjqD,OAA+D,IAC7EkqD,GAAsBlqD,OAAuE,IACnG,SAAS,GAAMzM,EAAQL,EAAMjK,GAC3B,GAAIs/D,IAAe/B,GAAc,CAC/B,IAAI2D,EAAUJ,GAAU14D,IAAIkC,GACvB42D,GACHJ,GAAUn8D,IAAI2F,EAAQ42D,EAA0B,IAAIz4D,KAEtD,IAAIw2D,EAAMiC,EAAQ94D,IAAIpI,GACjBi/D,GACHiC,EAAQv8D,IAAI3E,EAAKi/D,EAAM4B,IAAU,IAAMK,EAAQn4D,OAAO/I,MAExDsgE,GACE/C,GACA0B,OAKI,EAER,CACF,CACA,SAASpyD,GAAQvC,EAAQL,EAAMjK,EAAKmhE,EAAU9G,EAAU+G,GACtD,MAAMF,EAAUJ,GAAU14D,IAAIkC,GAC9B,IAAK42D,EACH,OAEF,IAAIzC,EAAO,GACX,GAAa,UAATx0D,EACFw0D,EAAO,IAAIyC,EAAQr2D,eACd,GAAY,WAAR7K,GAAoB,EAAQsK,GAAS,CAC9C,MAAM+2D,EAAYlzD,OAAOgzD,GACzBD,EAAQx9D,SAAQ,CAACu7D,EAAKqC,MACP,WAATA,IAAsBriD,EAASqiD,IAASA,GAAQD,IAClD5C,EAAKt7D,KAAK87D,EACZ,GAEJ,MAIE,YAHY,IAARj/D,GACFy+D,EAAKt7D,KAAK+9D,EAAQ94D,IAAIpI,IAEhBiK,GACN,IAAK,MACE,EAAQK,GAKFsvD,EAAa55D,IACtBy+D,EAAKt7D,KAAK+9D,EAAQ94D,IAAI,YALtBq2D,EAAKt7D,KAAK+9D,EAAQ94D,IAAI44D,KAClB7H,EAAM7uD,IACRm0D,EAAKt7D,KAAK+9D,EAAQ94D,IAAI64D,MAK1B,MACF,IAAK,SACE,EAAQ32D,KACXm0D,EAAKt7D,KAAK+9D,EAAQ94D,IAAI44D,KAClB7H,EAAM7uD,IACRm0D,EAAKt7D,KAAK+9D,EAAQ94D,IAAI64D,MAG1B,MACF,IAAK,MACC9H,EAAM7uD,IACRm0D,EAAKt7D,KAAK+9D,EAAQ94D,IAAI44D,KAExB,MAGNb,KACA,IAAK,MAAMlB,KAAOR,EACZQ,GACFwB,GACExB,EACA,OAQI,GAIVmB,IACF,CACA,SAASmB,GAAmB5oD,EAAQ3Y,GAClC,IAAIqD,EACJ,OAAuC,OAA/BA,EAAKy9D,GAAU14D,IAAIuQ,SAAmB,EAAStV,EAAG+E,IAAIpI,EAChE,CAEA,MAAMwhE,GAAqC,EAAQ,+BAC7CC,GAAiB,IAAIp9D,IACT1E,OAAOiI,oBAAoBmP,QAAQ9H,QAAQjP,GAAgB,cAARA,GAA+B,WAARA,IAAkBwF,KAAKxF,GAAQ+W,OAAO/W,KAAMiP,OAAOgQ,IAEzIyiD,GAAwCC,KAC9C,SAASA,KACP,MAAMC,EAAmB,CAAC,EAyB1B,MAxBA,CAAC,WAAY,UAAW,eAAel+D,SAAS1D,IAC9C4hE,EAAiB5hE,GAAO,YAAY8M,GAClC,MAAMkc,EAAM,GAAM/nB,MAClB,IAAK,IAAI9B,EAAI,EAAG6E,EAAI/C,KAAK/B,OAAQC,EAAI6E,EAAG7E,IACtC,GAAM6pB,EAAK,MAAO7pB,EAAI,IAExB,MAAM8pB,EAAMD,EAAIhpB,MAAQ8M,GACxB,OAAa,IAATmc,IAAsB,IAARA,EACTD,EAAIhpB,MAAQ8M,EAAKtH,IAAI,KAErByjB,CAEX,CAAC,IAEH,CAAC,OAAQ,MAAO,QAAS,UAAW,UAAUvlB,SAAS1D,IACrD4hE,EAAiB5hE,GAAO,YAAY8M,GAClCkyD,KACAmB,KACA,MAAMl3C,EAAM,GAAMhoB,MAAMjB,GAAKpB,MAAMqC,KAAM6L,GAGzC,OAFAszD,KACAhB,KACOn2C,CACT,CAAC,IAEI24C,CACT,CACA,SAAS,GAAe5hE,GACtB,MAAM6N,EAAM,GAAM5M,MAElB,OADA,GAAM4M,EAAK,MAAO7N,GACX6N,EAAI/N,eAAeE,EAC5B,CACA,MAAM6hE,GACJ,WAAA5iE,CAAY6iE,GAAc,EAAOC,GAAW,GAC1C9gE,KAAK6gE,YAAcA,EACnB7gE,KAAK8gE,SAAWA,CAClB,CACA,GAAA35D,CAAIkC,EAAQtK,EAAKgiE,GACf,MAAMC,EAAchhE,KAAK6gE,YAAaI,EAAUjhE,KAAK8gE,SACrD,GAAY,mBAAR/hE,EACF,OAAQiiE,EACH,GAAY,mBAARjiE,EACT,OAAOiiE,EACF,GAAY,kBAARjiE,EACT,OAAOkiE,EACF,GAAY,YAARliE,EACT,OAAIgiE,KAAcC,EAAcC,EAAUC,GAAqBC,GAAcF,EAAUG,GAAqBC,IAAal6D,IAAIkC,IAE7H3K,OAAO0nB,eAAe/c,KAAY3K,OAAO0nB,eAAe26C,GAC/C13D,OAET,EAEF,MAAMi4D,EAAgB,EAAQj4D,GAC9B,IAAK23D,EAAa,CAChB,GAAIM,GAAiB,EAAOb,GAAuB1hE,GACjD,OAAOwnB,QAAQpf,IAAIs5D,GAAuB1hE,EAAKgiE,GAEjD,GAAY,mBAARhiE,EACF,OAAO,EAEX,CACA,MAAMipB,EAAMzB,QAAQpf,IAAIkC,EAAQtK,EAAKgiE,GACrC,OAAI/iD,EAASjf,GAAOyhE,GAAe94D,IAAI3I,GAAOwhE,GAAmBxhE,IACxDipB,GAEJg5C,GACH,GAAM33D,EAAQ,MAAOtK,GAEnBkiE,EACKj5C,EAELu5C,GAAMv5C,GACDs5C,GAAiB3I,EAAa55D,GAAOipB,EAAMA,EAAIjrB,MAEpD,EAASirB,GACJg5C,EAAcQ,GAASx5C,GAAOy5C,GAASz5C,GAEzCA,EACT,EAEF,MAAM05C,WAA+Bd,GACnC,WAAA5iE,CAAYijE,GAAU,GACpBh7D,OAAM,EAAOg7D,EACf,CACA,GAAAv9D,CAAI2F,EAAQtK,EAAKhC,EAAOgkE,GACtB,IAAI3H,EAAW/vD,EAAOtK,GACtB,IAAKiB,KAAK8gE,SAAU,CAClB,MAAMa,EAAqBC,GAAWxI,GAKtC,GAJKyI,GAAU9kE,IAAW6kE,GAAW7kE,KACnCq8D,EAAW,GAAMA,GACjBr8D,EAAQ,GAAMA,KAEX,EAAQsM,IAAWk4D,GAAMnI,KAAcmI,GAAMxkE,GAChD,OAAI4kE,IAGFvI,EAASr8D,MAAQA,GACV,EAGb,CACA,MAAM+kE,EAAS,EAAQz4D,IAAWsvD,EAAa55D,GAAOmO,OAAOnO,GAAOsK,EAAOpL,OAAS,EAAOoL,EAAQtK,GAC7FvB,EAAS+oB,QAAQ7iB,IAAI2F,EAAQtK,EAAKhC,EAAOgkE,GAQ/C,OAPI13D,IAAW,GAAM03D,KACde,EAEM3I,EAAWp8D,EAAOq8D,IAC3BxtD,GAAQvC,EAAQ,MAAOtK,EAAKhC,EAAOq8D,GAFnCxtD,GAAQvC,EAAQ,MAAOtK,EAAKhC,IAKzBS,CACT,CACA,cAAAukE,CAAe14D,EAAQtK,GACrB,MAAM+iE,EAAS,EAAOz4D,EAAQtK,GACxBq6D,EAAW/vD,EAAOtK,GAClBvB,EAAS+oB,QAAQw7C,eAAe14D,EAAQtK,GAI9C,OAHIvB,GAAUskE,GACZl2D,GAAQvC,EAAQ,SAAUtK,OAAK,EAAQq6D,GAElC57D,CACT,CACA,GAAAkK,CAAI2B,EAAQtK,GACV,MAAMvB,EAAS+oB,QAAQ7e,IAAI2B,EAAQtK,GAInC,OAHKif,EAASjf,IAASyhE,GAAe94D,IAAI3I,IACxC,GAAMsK,EAAQ,MAAOtK,GAEhBvB,CACT,CACA,OAAAwkE,CAAQ34D,GAMN,OALA,GACEA,EACA,UACA,EAAQA,GAAU,SAAW02D,IAExBx5C,QAAQy7C,QAAQ34D,EACzB,EAEF,MAAM44D,WAAgCrB,GACpC,WAAA5iE,CAAYijE,GAAU,GACpBh7D,OAAM,EAAMg7D,EACd,CACA,GAAAv9D,CAAI2F,EAAQtK,GAOV,OAAO,CACT,CACA,cAAAgjE,CAAe14D,EAAQtK,GAOrB,OAAO,CACT,EAEF,MAAMmjE,GAAkC,IAAIR,GACtCS,GAAmC,IAAIF,GACvCG,GAA0C,IAAIV,IAClD,GAEIW,GAA0C,IAAIJ,IAAwB,GAEtEK,GAAavlE,GAAUA,EACvBwlE,GAAY//D,GAAM+jB,QAAQH,eAAe5jB,GAC/C,SAAS2E,GAAIkC,EAAQtK,EAAK6iE,GAAa,EAAOC,GAAY,GACxDx4D,EAASA,EAAO,WAChB,MAAMm5D,EAAY,GAAMn5D,GAClBo5D,EAAS,GAAM1jE,GAChB6iE,IACCzI,EAAWp6D,EAAK0jE,IAClB,GAAMD,EAAW,MAAOzjE,GAE1B,GAAMyjE,EAAW,MAAOC,IAE1B,MAAQ/6D,IAAKg7D,GAASH,GAASC,GACzBG,EAAOd,EAAYS,GAAYV,EAAagB,GAAaC,GAC/D,OAAIH,EAAK5jE,KAAK0jE,EAAWzjE,GAChB4jE,EAAKt5D,EAAOlC,IAAIpI,IACd2jE,EAAK5jE,KAAK0jE,EAAWC,GACvBE,EAAKt5D,EAAOlC,IAAIs7D,SACdp5D,IAAWm5D,GACpBn5D,EAAOlC,IAAIpI,GAEf,CACA,SAAS2I,GAAI3I,EAAK6iE,GAAa,GAC7B,MAAMv4D,EAASrJ,KAAK,WACdwiE,EAAY,GAAMn5D,GAClBo5D,EAAS,GAAM1jE,GAOrB,OANK6iE,IACCzI,EAAWp6D,EAAK0jE,IAClB,GAAMD,EAAW,MAAOzjE,GAE1B,GAAMyjE,EAAW,MAAOC,IAEnB1jE,IAAQ0jE,EAASp5D,EAAO3B,IAAI3I,GAAOsK,EAAO3B,IAAI3I,IAAQsK,EAAO3B,IAAI+6D,EAC1E,CACA,SAAS76D,GAAKyB,EAAQu4D,GAAa,GAGjC,OAFAv4D,EAASA,EAAO,YACfu4D,GAAc,GAAM,GAAMv4D,GAAS,UAAW02D,IACxCx5C,QAAQpf,IAAIkC,EAAQ,OAAQA,EACrC,CACA,SAAShF,GAAItH,GACXA,EAAQ,GAAMA,GACd,MAAMsM,EAAS,GAAMrJ,MACfynB,EAAQ86C,GAASl5D,GACjBy4D,EAASr6C,EAAM/f,IAAI5I,KAAKuK,EAAQtM,GAKtC,OAJK+kE,IACHz4D,EAAOhF,IAAItH,GACX6O,GAAQvC,EAAQ,MAAOtM,EAAOA,IAEzBiD,IACT,CACA,SAAS0D,GAAI3E,EAAKhC,GAChBA,EAAQ,GAAMA,GACd,MAAMsM,EAAS,GAAMrJ,OACb0H,IAAKg7D,EAAMv7D,IAAK27D,GAASP,GAASl5D,GAC1C,IAAIy4D,EAASY,EAAK5jE,KAAKuK,EAAQtK,GAC1B+iE,IACH/iE,EAAM,GAAMA,GACZ+iE,EAASY,EAAK5jE,KAAKuK,EAAQtK,IAI7B,MAAMq6D,EAAW0J,EAAKhkE,KAAKuK,EAAQtK,GAOnC,OANAsK,EAAO3F,IAAI3E,EAAKhC,GACX+kE,EAEM3I,EAAWp8D,EAAOq8D,IAC3BxtD,GAAQvC,EAAQ,MAAOtK,EAAKhC,EAAOq8D,GAFnCxtD,GAAQvC,EAAQ,MAAOtK,EAAKhC,GAIvBiD,IACT,CACA,SAAS+iE,GAAYhkE,GACnB,MAAMsK,EAAS,GAAMrJ,OACb0H,IAAKg7D,EAAMv7D,IAAK27D,GAASP,GAASl5D,GAC1C,IAAIy4D,EAASY,EAAK5jE,KAAKuK,EAAQtK,GAC1B+iE,IACH/iE,EAAM,GAAMA,GACZ+iE,EAASY,EAAK5jE,KAAKuK,EAAQtK,IAI7B,MAAMq6D,EAAW0J,EAAOA,EAAKhkE,KAAKuK,EAAQtK,QAAO,EAC3CvB,EAAS6L,EAAOvB,OAAO/I,GAI7B,OAHI+iE,GACFl2D,GAAQvC,EAAQ,SAAUtK,OAAK,EAAQq6D,GAElC57D,CACT,CACA,SAASwlE,KACP,MAAM35D,EAAS,GAAMrJ,MACfijE,EAA2B,IAAhB55D,EAAOzB,KAClBu4D,OAA4G,EAC5G3iE,EAAS6L,EAAO25D,QAItB,OAHIC,GACFr3D,GAAQvC,EAAQ,aAAS,OAAQ,EAAQ82D,GAEpC3iE,CACT,CACA,SAAS0lE,GAActB,EAAYC,GACjC,OAAO,SAAiBv/D,EAAU5F,GAChC,MAAMymE,EAAWnjE,KACXqJ,EAAS85D,EAAS,WAClBX,EAAY,GAAMn5D,GAClBs5D,EAAOd,EAAYS,GAAYV,EAAagB,GAAaC,GAE/D,OADCjB,GAAc,GAAMY,EAAW,UAAWzC,IACpC12D,EAAO5G,SAAQ,CAAC1F,EAAOgC,IACrBuD,EAASxD,KAAKpC,EAASimE,EAAK5lE,GAAQ4lE,EAAK5jE,GAAMokE,IAE1D,CACF,CACA,SAASC,GAAqBxtD,EAAQgsD,EAAYC,GAChD,OAAO,YAAYh2D,GACjB,MAAMxC,EAASrJ,KAAK,WACdwiE,EAAY,GAAMn5D,GAClBg6D,EAAcnL,EAAMsK,GACpBc,EAAoB,YAAX1tD,GAAwBA,IAAWE,OAAOytD,UAAYF,EAC/DG,EAAuB,SAAX5tD,GAAqBytD,EACjCI,EAAgBp6D,EAAOuM,MAAW/J,GAClC82D,EAAOd,EAAYS,GAAYV,EAAagB,GAAaC,GAM/D,OALCjB,GAAc,GACbY,EACA,UACAgB,EAAYxD,GAAsBD,IAE7B,CAEL,IAAA1iE,GACE,MAAM,MAAEN,EAAK,KAAEU,GAASgmE,EAAcpmE,OACtC,OAAOI,EAAO,CAAEV,QAAOU,QAAS,CAC9BV,MAAOumE,EAAS,CAACX,EAAK5lE,EAAM,IAAK4lE,EAAK5lE,EAAM,KAAO4lE,EAAK5lE,GACxDU,OAEJ,EAEA,CAACqY,OAAOytD,YACN,OAAOvjE,IACT,EAEJ,CACF,CACA,SAAS0jE,GAAqB16D,GAC5B,OAAO,YAAY6C,GAQjB,MAAgB,WAAT7C,IAAqC,UAATA,OAAmB,EAAShJ,KACjE,CACF,CACA,SAAS2jE,KACP,MAAMC,EAA2B,CAC/B,GAAAz8D,CAAIpI,GACF,OAAOoI,GAAInH,KAAMjB,EACnB,EACA,QAAI6I,GACF,OAAOA,GAAK5H,KACd,EACA0H,OACArD,OACAX,OACAoE,OAAQi7D,GACRC,SACAvgE,QAASygE,IAAc,GAAO,IAE1BW,EAA2B,CAC/B,GAAA18D,CAAIpI,GACF,OAAOoI,GAAInH,KAAMjB,GAAK,GAAO,EAC/B,EACA,QAAI6I,GACF,OAAOA,GAAK5H,KACd,EACA0H,OACArD,OACAX,OACAoE,OAAQi7D,GACRC,SACAvgE,QAASygE,IAAc,GAAO,IAE1BY,EAA4B,CAChC,GAAA38D,CAAIpI,GACF,OAAOoI,GAAInH,KAAMjB,GAAK,EACxB,EACA,QAAI6I,GACF,OAAOA,GAAK5H,MAAM,EACpB,EACA,GAAA0H,CAAI3I,GACF,OAAO2I,GAAI5I,KAAKkB,KAAMjB,GAAK,EAC7B,EACAsF,IAAKq/D,GAAqB,OAC1BhgE,IAAKggE,GAAqB,OAC1B57D,OAAQ47D,GAAqB,UAC7BV,MAAOU,GAAqB,SAC5BjhE,QAASygE,IAAc,GAAM,IAEzBa,EAAmC,CACvC,GAAA58D,CAAIpI,GACF,OAAOoI,GAAInH,KAAMjB,GAAK,GAAM,EAC9B,EACA,QAAI6I,GACF,OAAOA,GAAK5H,MAAM,EACpB,EACA,GAAA0H,CAAI3I,GACF,OAAO2I,GAAI5I,KAAKkB,KAAMjB,GAAK,EAC7B,EACAsF,IAAKq/D,GAAqB,OAC1BhgE,IAAKggE,GAAqB,OAC1B57D,OAAQ47D,GAAqB,UAC7BV,MAAOU,GAAqB,SAC5BjhE,QAASygE,IAAc,GAAM,IAEzBc,EAAkB,CAAC,OAAQ,SAAU,UAAWluD,OAAOytD,UAuB7D,OAtBAS,EAAgBvhE,SAASmT,IACvBguD,EAAyBhuD,GAAUwtD,GACjCxtD,GACA,GACA,GAEFkuD,EAA0BluD,GAAUwtD,GAClCxtD,GACA,GACA,GAEFiuD,EAAyBjuD,GAAUwtD,GACjCxtD,GACA,GACA,GAEFmuD,EAAiCnuD,GAAUwtD,GACzCxtD,GACA,GACA,EACD,IAEI,CACLguD,EACAE,EACAD,EACAE,EAEJ,CACA,MACEE,GACAC,GACAC,GACAC,IACkBT,KACpB,SAASU,GAA4BzC,EAAYX,GAC/C,MAAMN,EAAmBM,EAAUW,EAAawC,GAAkCD,GAA0BvC,EAAasC,GAA2BD,GACpJ,MAAO,CAAC56D,EAAQtK,EAAKgiE,IACP,mBAARhiE,GACM6iE,EACS,mBAAR7iE,EACF6iE,EACU,YAAR7iE,EACFsK,EAEFkd,QAAQpf,IACb,EAAOw5D,EAAkB5hE,IAAQA,KAAOsK,EAASs3D,EAAmBt3D,EACpEtK,EACAgiE,EAGN,CACA,MAAMuD,GAA4B,CAChCn9D,IAAqBk9D,IAA4B,GAAO,IAEpDE,GAA4B,CAChCp9D,IAAqBk9D,IAA4B,GAAO,IAEpDG,GAA6B,CACjCr9D,IAAqBk9D,IAA4B,GAAM,IAEnDI,GAAoC,CACxCt9D,IAAqBk9D,IAA4B,GAAM,IAYzD,MAAMhD,GAA8B,IAAIvB,QAClCsB,GAAqC,IAAItB,QACzCqB,GAA8B,IAAIrB,QAClCoB,GAAqC,IAAIpB,QAC/C,SAAS4E,GAAcC,GACrB,OAAQA,GACN,IAAK,SACL,IAAK,QACH,OAAO,EACT,IAAK,MACL,IAAK,MACL,IAAK,UACL,IAAK,UACH,OAAO,EACT,QACE,OAAO,EAEb,CACA,SAASC,GAAc7nE,GACrB,OAAOA,EAAM,cAAgB2B,OAAOmmE,aAAa9nE,GAAS,EAAkB2nE,GAAc,EAAU3nE,GACtG,CACA,SAAS0kE,GAASp4D,GAChB,OAAIu4D,GAAWv4D,GACNA,EAEFy7D,GACLz7D,GACA,EACA64D,GACAoC,GACAjD,GAEJ,CACA,SAAS0D,GAAgB17D,GACvB,OAAOy7D,GACLz7D,GACA,EACA+4D,GACAmC,GACAnD,GAEJ,CACA,SAASI,GAASn4D,GAChB,OAAOy7D,GACLz7D,GACA,EACA84D,GACAqC,GACArD,GAEJ,CACA,SAAS6D,GAAgB37D,GACvB,OAAOy7D,GACLz7D,GACA,EACAg5D,GACAoC,GACAvD,GAEJ,CACA,SAAS4D,GAAqBz7D,EAAQ23D,EAAaiE,EAAcC,EAAoBC,GACnF,IAAK,EAAS97D,GAIZ,OAAOA,EAET,GAAIA,EAAO,cAAgB23D,IAAe33D,EAAO,mBAC/C,OAAOA,EAET,MAAM+7D,EAAgBD,EAASh+D,IAAIkC,GACnC,GAAI+7D,EACF,OAAOA,EAET,MAAMC,EAAaT,GAAcv7D,GACjC,GAAmB,IAAfg8D,EACF,OAAOh8D,EAET,MAAMi8D,EAAQ,IAAI5+C,MAChBrd,EACe,IAAfg8D,EAAoCH,EAAqBD,GAG3D,OADAE,EAASzhE,IAAI2F,EAAQi8D,GACdA,CACT,CACA,SAASC,GAAWxoE,GAClB,OAAI6kE,GAAW7kE,GACNwoE,GAAWxoE,EAAM,eAEhBA,IAASA,EAAM,kBAC3B,CACA,SAAS6kE,GAAW7kE,GAClB,SAAUA,IAASA,EAAM,kBAC3B,CACA,SAAS8kE,GAAU9kE,GACjB,SAAUA,IAASA,EAAM,iBAC3B,CACA,SAASyoE,GAAQzoE,GACf,OAAOwoE,GAAWxoE,IAAU6kE,GAAW7kE,EACzC,CACA,SAAS,GAAMomE,GACb,MAAMznB,EAAMynB,GAAYA,EAAS,WACjC,OAAOznB,EAAM,GAAMA,GAAOynB,CAC5B,CACA,SAASsC,GAAQ1oE,GAEf,OADAy8D,EAAIz8D,EAAO,YAAY,GAChBA,CACT,CACA,MAAM8lE,GAAc9lE,GAAU,EAASA,GAAS0kE,GAAS1kE,GAASA,EAC5D6lE,GAAc7lE,GAAU,EAASA,GAASykE,GAASzkE,GAASA,EAElE,MAAM2oE,GACJ,WAAA1nE,CAAY2nE,EAAQC,EAAShE,EAAYiE,GACvC7lE,KAAK4lE,QAAUA,EACf5lE,KAAKg+D,SAAM,EACXh+D,KAAKi8D,WAAY,EACjBj8D,KAAK,mBAAoB,EACzBA,KAAKw7B,OAAS,IAAI8hC,IAChB,IAAMqI,EAAO3lE,KAAK8lE,UAClB,IAAMC,GAAgB/lE,KAAM,KAE9BA,KAAKw7B,OAAOyiC,SAAWj+D,KACvBA,KAAKw7B,OAAOqhC,OAAS78D,KAAKgmE,YAAcH,EACxC7lE,KAAK,kBAAoB4hE,CAC3B,CACA,SAAI7kE,GACF,MAAMqjB,EAAO,GAAMpgB,MAOnB,OANAimE,GAAc7lD,GACTA,EAAK4lD,aAAc5lD,EAAKob,OAAOsiC,OAC9B3E,EAAW/4C,EAAK0lD,OAAQ1lD,EAAK0lD,OAAS1lD,EAAKob,OAAOiS,QACpDs4B,GAAgB3lD,EAAM,GAGnBA,EAAK0lD,MACd,CACA,SAAI/oE,CAAMmjE,GACRlgE,KAAK4lE,QAAQ1F,EACf,CAEA,UAAIgG,GACF,OAAOlmE,KAAKw7B,OAAOsiC,KACrB,CACA,UAAIoI,CAAO1jE,GACTxC,KAAKw7B,OAAOsiC,MAAQt7D,CACtB,EAGF,SAASy7D,GAASkI,EAAiBC,EAAcP,GAAQ,GACvD,IAAIF,EACAU,EACJ,MAAMC,EAAa/N,EAAW4N,GAC1BG,GACFX,EAASQ,EACTE,EAEI,IAEJV,EAASQ,EAAgBh/D,IACzBk/D,EAASF,EAAgBziE,KAE3B,MAAM6iE,EAAO,IAAIb,GAAgBC,EAAQU,EAAQC,IAAeD,EAAQR,GAKxE,OAAOU,CACT,CAEA,SAASN,GAAcO,GACjBnI,IAAe/B,KACjBkK,EAAO,GAAMA,GACbnH,GACE/C,GACAkK,EAAKxI,MAAQwI,EAAKxI,IAAM4B,IACtB,IAAM4G,EAAKxI,SAAM,GACjBwI,aAAgBd,GAAkBc,OAAO,SAMvC,GAGV,CACA,SAAST,GAAgBS,EAAM/G,EAAa,EAAGgH,GAC7CD,EAAO,GAAMA,GACb,MAAMxI,EAAMwI,EAAKxI,IACbA,GACFwB,GACExB,EACAyB,OAMI,EAGV,CACA,SAAS8B,GAAMp+D,GACb,SAAUA,IAAqB,IAAhBA,EAAE84D,UACnB,CACA,SAASyK,GAAI3pE,GACX,OAAO4pE,GAAU5pE,GAAO,EAC1B,CACA,SAAS6pE,GAAW7pE,GAClB,OAAO4pE,GAAU5pE,GAAO,EAC1B,CACA,SAAS4pE,GAAUE,EAAU5F,GAC3B,OAAIM,GAAMsF,GACDA,EAEF,IAAIC,GAAQD,EAAU5F,EAC/B,CACA,MAAM6F,GACJ,WAAA9oE,CAAYjB,EAAOgqE,GACjB/mE,KAAK+mE,cAAgBA,EACrB/mE,KAAKg+D,SAAM,EACXh+D,KAAKi8D,WAAY,EACjBj8D,KAAKgnE,UAAYD,EAAgBhqE,EAAQ,GAAMA,GAC/CiD,KAAK8lE,OAASiB,EAAgBhqE,EAAQ8lE,GAAW9lE,EACnD,CACA,SAAIA,GAEF,OADAkpE,GAAcjmE,MACPA,KAAK8lE,MACd,CACA,SAAI/oE,CAAM0pE,GACR,MAAMQ,EAAiBjnE,KAAK+mE,eAAiBlF,GAAU4E,IAAW7E,GAAW6E,GAC7EA,EAASQ,EAAiBR,EAAS,GAAMA,GACrCtN,EAAWsN,EAAQzmE,KAAKgnE,aAC1BhnE,KAAKgnE,UAAYP,EACjBzmE,KAAK8lE,OAASmB,EAAiBR,EAAS5D,GAAW4D,GACnDV,GAAgB/lE,KAAM,EAAGymE,GAE7B,EAEF,SAASS,GAAWV,GAClBT,GAAgBS,EAAM,OAA4D,EACpF,CACA,SAASW,GAAMX,GACb,OAAOjF,GAAMiF,GAAQA,EAAKzpE,MAAQypE,CACpC,CACA,SAASY,GAAQ7oE,GACf,OAAOg6D,EAAWh6D,GAAUA,IAAW4oE,GAAM5oE,EAC/C,CACA,MAAM8oE,GAAwB,CAC5BlgE,IAAK,CAACkC,EAAQtK,EAAKgiE,IAAaoG,GAAM5gD,QAAQpf,IAAIkC,EAAQtK,EAAKgiE,IAC/Dr9D,IAAK,CAAC2F,EAAQtK,EAAKhC,EAAOgkE,KACxB,MAAM3H,EAAW/vD,EAAOtK,GACxB,OAAIwiE,GAAMnI,KAAcmI,GAAMxkE,IAC5Bq8D,EAASr8D,MAAQA,GACV,GAEAwpB,QAAQ7iB,IAAI2F,EAAQtK,EAAKhC,EAAOgkE,EACzC,GAGJ,SAASuG,GAAUC,GACjB,OAAOhC,GAAWgC,GAAkBA,EAAiB,IAAI7gD,MAAM6gD,EAAgBF,GACjF,CACA,MAAMG,GACJ,WAAAxpE,CAAYsH,GACVtF,KAAKg+D,SAAM,EACXh+D,KAAKi8D,WAAY,EACjB,MAAM,IAAE90D,EAAG,IAAEzD,GAAQ4B,GACnB,IAAM2gE,GAAcjmE,QACpB,IAAM+lE,GAAgB/lE,QAExBA,KAAKynE,KAAOtgE,EACZnH,KAAK0nE,KAAOhkE,CACd,CACA,SAAI3G,GACF,OAAOiD,KAAKynE,MACd,CACA,SAAI1qE,CAAM0pE,GACRzmE,KAAK0nE,KAAKjB,EACZ,EAEF,SAASkB,GAAUriE,GACjB,OAAO,IAAIkiE,GAAcliE,EAC3B,CACA,SAASsiE,GAAOlwD,GAId,MAAM8iD,EAAM,EAAQ9iD,GAAU,IAAItZ,MAAMsZ,EAAOzZ,QAAU,CAAC,EAC1D,IAAK,MAAMc,KAAO2Y,EAChB8iD,EAAIz7D,GAAO8oE,GAAcnwD,EAAQ3Y,GAEnC,OAAOy7D,CACT,CACA,MAAMsN,GACJ,WAAA9pE,CAAY+pE,EAASl/C,EAAMm/C,GACzBhoE,KAAK+nE,QAAUA,EACf/nE,KAAK6oB,KAAOA,EACZ7oB,KAAKgoE,cAAgBA,EACrBhoE,KAAKi8D,WAAY,CACnB,CACA,SAAIl/D,GACF,MAAMymC,EAAMxjC,KAAK+nE,QAAQ/nE,KAAK6oB,MAC9B,YAAe,IAAR2a,EAAiBxjC,KAAKgoE,cAAgBxkC,CAC/C,CACA,SAAIzmC,CAAM0pE,GACRzmE,KAAK+nE,QAAQ/nE,KAAK6oB,MAAQ49C,CAC5B,CACA,OAAIzI,GACF,OAAOsC,GAAmB,GAAMtgE,KAAK+nE,SAAU/nE,KAAK6oB,KACtD,EAEF,MAAMo/C,GACJ,WAAAjqE,CAAYkqE,GACVloE,KAAKkoE,QAAUA,EACfloE,KAAKi8D,WAAY,EACjBj8D,KAAKmoE,gBAAiB,CACxB,CACA,SAAIprE,GACF,OAAOiD,KAAKkoE,SACd,EAEF,SAASE,GAAM7pE,EAAQQ,EAAKqb,GAC1B,OAAImnD,GAAMhjE,GACDA,EACEg6D,EAAWh6D,GACb,IAAI0pE,GAAc1pE,GAChB,EAASA,IAAWwoB,UAAU9oB,OAAS,EACzC4pE,GAActpE,EAAQQ,EAAKqb,GAE3BssD,GAAInoE,EAEf,CACA,SAASspE,GAActpE,EAAQQ,EAAKqb,GAClC,MAAMopB,EAAMjlC,EAAOQ,GACnB,OAAOwiE,GAAM/9B,GAAOA,EAAM,IAAIskC,GAAcvpE,EAAQQ,EAAKqb,EAC3D,CAEA,MAEMiuD,GAAe,CACnB,IAAO,MACP,IAAO,MACP,QAAW,WAEPC,GAAiB,CACrB,IAAO,MACP,IAAO,MACP,OAAU,SACV,MAAS,SCtrCLC,GAAQ,GAOd,SAASC,GAAO9T,KAAQ7oD,GACtBkyD,KACA,MAAM39D,EAAWmoE,GAAMtqE,OAASsqE,GAAMA,GAAMtqE,OAAS,GAAG0X,UAAY,KAC9D8yD,EAAiBroE,GAAYA,EAASsoE,WAAW1iE,OAAO2iE,YACxDC,EAAQC,KACd,GAAIJ,EACFK,GACEL,EACAroE,EACA,GACA,CACEs0D,EAAM7oD,EAAK7K,KAAK,IAChBZ,GAAYA,EAASklE,MACrBsD,EAAMrkE,KACJ,EAAGwkE,WAAY,OAAOC,GAAoB5oE,EAAU2oE,EAAM//D,WAC1DhI,KAAK,MACP4nE,QAGC,CACL,MAAMK,EAAW,CAAC,eAAevU,OAAU7oD,GACvC+8D,EAAM3qE,QAERgrE,EAAS/mE,KAAK,QACdgnE,GAAYN,IAEdzkE,QAAQC,QAAQ6kE,EAClB,CACA9K,IACF,CACA,SAAS0K,KACP,IAAIM,EAAeZ,GAAMA,GAAMtqE,OAAS,GACxC,IAAKkrE,EACH,MAAO,GAET,MAAMC,EAAkB,GACxB,MAAOD,EAAc,CACnB,MAAMnM,EAAOoM,EAAgB,GACzBpM,GAAQA,EAAK+L,QAAUI,EACzBnM,EAAKqM,eAELD,EAAgBlnE,KAAK,CACnB6mE,MAAOI,EACPE,aAAc,IAGlB,MAAMC,EAAiBH,EAAaxzD,WAAawzD,EAAaxzD,UAAUmZ,OACxEq6C,EAAeG,GAAkBA,EAAeP,KAClD,CACA,OAAOK,CACT,CACA,SAASF,GAAYN,GACnB,MAAMW,EAAO,GAKb,OAJAX,EAAMnmE,SAAQ,CAAC+mE,EAAOtrE,KACpBqrE,EAAKrnE,QAAc,IAANhE,EAAU,GAAK,CAAC,SAC1BurE,GAAiBD,GAAO,IAEtBD,CACT,CACA,SAASE,IAAiB,MAAEV,EAAK,aAAEM,IACjC,MAAMK,EAAUL,EAAe,EAAI,QAAQA,qBAAkC,GACvEM,IAASZ,EAAMpzD,WAAsC,MAA1BozD,EAAMpzD,UAAUmZ,OAC3C86C,EAAO,QAAQZ,GACnBD,EAAMpzD,UACNozD,EAAM//D,KACN2gE,KAEIE,EAAQ,IAAMH,EACpB,OAAOX,EAAMj8C,MAAQ,CAAC88C,KAASE,GAAYf,EAAMj8C,OAAQ+8C,GAAS,CAACD,EAAOC,EAC5E,CACA,SAASC,GAAYh9C,GACnB,MAAM9E,EAAM,GACN7pB,EAAOO,OAAOP,KAAK2uB,GAOzB,OANA3uB,EAAKuN,MAAM,EAAG,GAAGjJ,SAAS1D,IACxBipB,EAAI9lB,QAAQ6nE,GAAWhrE,EAAK+tB,EAAM/tB,IAAM,IAEtCZ,EAAKF,OAAS,GAChB+pB,EAAI9lB,KAAK,QAEJ8lB,CACT,CACA,SAAS+hD,GAAWhrE,EAAKhC,EAAO2+C,GAC9B,OAAI,EAAS3+C,IACXA,EAAQwD,KAAKC,UAAUzD,GAChB2+C,EAAM3+C,EAAQ,CAAC,GAAGgC,KAAOhC,MACN,kBAAVA,GAAuC,mBAAVA,GAAgC,MAATA,EAC7D2+C,EAAM3+C,EAAQ,CAAC,GAAGgC,KAAOhC,KACvBwkE,GAAMxkE,IACfA,EAAQgtE,GAAWhrE,EAAK,GAAMhC,EAAMA,QAAQ,GACrC2+C,EAAM3+C,EAAQ,CAAC,GAAGgC,SAAYhC,EAAO,MACnCw7D,EAAWx7D,GACb,CAAC,GAAGgC,OAAShC,EAAM+E,KAAO,IAAI/E,EAAM+E,QAAU,OAErD/E,EAAQ,GAAMA,GACP2+C,EAAM3+C,EAAQ,CAAC,GAAGgC,KAAQhC,GAErC,CACA,SAASitE,GAAaxmC,EAAKx6B,GAU3B,CAEA,MAAMihE,GAAa,CACjB,eAAkB,EAClB,EAAK,iBACL,gBAAmB,EACnB,EAAK,kBACL,aAAgB,EAChB,EAAK,eACL,eAAkB,EAClB,EAAK,iBACL,cAAiB,EACjB,EAAK,gBACL,qBAAwB,EACxB,EAAK,uBACL,wBAA2B,EAC3B,EAAK,0BACL,WAAc,EACd,EAAK,aACL,eAAkB,EAClB,EAAK,iBACL,gBAAmB,EACnB,EAAK,kBACL,kBAAqB,GACrB,GAAM,oBACN,iBAAoB,GACpB,GAAM,mBACN,aAAgB,GAChB,GAAM,eACN,uBAA0B,GAC1B,GAAM,yBACN,UAAa,GACb,GAAM,aAEFC,GAAqB,CACzB,CAAC,MAAO,sBACR,CAAC,MAAO,oBACR,CAAC,KAAM,eACP,CAAC,MAAO,mBACR,CAAC,KAAM,eACP,CAAC,MAAO,oBACR,CAAC,KAAM,UACP,CAAC,OAAQ,qBACT,CAAC,MAAO,iBACR,CAAC,KAAM,iBACP,CAAC,MAAO,mBACR,CAAC,MAAO,qBACR,CAAC,OAAQ,qBACT,CAAC,OAAQ,uBACT,CAAC,GAAI,iBACL,CAAC,GAAI,kBACL,CAAC,GAAI,iBACL,CAAC,GAAI,mBACL,CAAC,GAAI,2BACL,CAAC,GAAI,uBACL,CAAC,GAAI,0BACL,CAAC,GAAI,aACL,CAAC,GAAI,iBACL,CAAC,GAAI,kBACL,CAAC,IAAK,mBACN,CAAC,IAAK,kBACN,CAAC,IAAK,eACN,CAAC,IAAK,yBACN,CAAC,IAAK,gHAER,SAASpB,GAAsB7mE,EAAI7B,EAAU4I,EAAM6C,GACjD,IAAImc,EACJ,IACEA,EAAMnc,EAAO5J,KAAM4J,GAAQ5J,GAC7B,CAAE,MAAOR,GACP0oE,GAAY1oE,EAAKrB,EAAU4I,EAC7B,CACA,OAAOgf,CACT,CACA,SAASoiD,GAA2BnoE,EAAI7B,EAAU4I,EAAM6C,GACtD,GAAI0sD,EAAWt2D,GAAK,CAClB,MAAM+lB,EAAM8gD,GAAsB7mE,EAAI7B,EAAU4I,EAAM6C,GAMtD,OALImc,GAAOwwC,EAAUxwC,IACnBA,EAAIywC,OAAOh3D,IACT0oE,GAAY1oE,EAAKrB,EAAU4I,EAAK,IAG7Bgf,CACT,CACA,MAAMpe,EAAS,GACf,IAAK,IAAI1L,EAAI,EAAGA,EAAI+D,EAAGhE,OAAQC,IAC7B0L,EAAO1H,KAAKkoE,GAA2BnoE,EAAG/D,GAAIkC,EAAU4I,EAAM6C,IAEhE,OAAOjC,CACT,CACA,SAASugE,GAAY1oE,EAAKrB,EAAU4I,EAAMqhE,GAAa,GACrD,MAAMC,EAAelqE,EAAWA,EAAS2oE,MAAQ,KACjD,GAAI3oE,EAAU,CACZ,IAAImqE,EAAMnqE,EAAS0uB,OACnB,MAAM07C,EAAkBpqE,EAASklE,MAC3BmF,EAAmF,qCAAqCzhE,IAC9H,MAAOuhE,EAAK,CACV,MAAMG,EAAqBH,EAAII,GAC/B,GAAID,EACF,IAAK,IAAIxsE,EAAI,EAAGA,EAAIwsE,EAAmBzsE,OAAQC,IAC7C,IAA+D,IAA3DwsE,EAAmBxsE,GAAGuD,EAAK+oE,EAAiBC,GAC9C,OAINF,EAAMA,EAAIz7C,MACZ,CACA,MAAM87C,EAAkBxqE,EAASsoE,WAAW1iE,OAAO6kE,aACnD,GAAID,EAOF,YANA9B,GACE8B,EACA,KACA,GACA,CAACnpE,EAAK+oE,EAAiBC,GAI7B,CACAK,GAASrpE,EAAKuH,EAAMshE,EAAcD,EACpC,CACA,SAASS,GAASrpE,EAAKuH,EAAMshE,EAAcD,GAAa,GAgBpDlmE,QAAQzC,MAAMD,EAElB,CAEA,IAAIspE,IAAa,EACbC,IAAiB,EACrB,MAAMC,GAAQ,GACd,IAAIC,GAAa,EACjB,MAAMC,GAAsB,GAC5B,IAAIC,GAAqB,KACrBC,GAAiB,EACrB,MAAMC,GAAkCruE,QAAQD,UAChD,IAAIuuE,GAAsB,KAE1B,SAASv8C,GAAS/sB,GAChB,MAAMY,EAAI0oE,IAAuBD,GACjC,OAAOrpE,EAAKY,EAAEnF,KAAKsC,KAAOiC,EAAG6kB,KAAK9mB,MAAQiC,GAAMY,CAClD,CACA,SAAS2oE,GAAmBjsE,GAC1B,IAAIue,EAAQotD,GAAa,EACrBntD,EAAMktD,GAAMhtE,OAChB,MAAO6f,EAAQC,EAAK,CAClB,MAAM0tD,EAAS3tD,EAAQC,IAAQ,EACzB2tD,EAAYT,GAAMQ,GAClBE,EAAcC,GAAMF,GACtBC,EAAcpsE,GAAMosE,IAAgBpsE,GAAMmsE,EAAUG,IACtD/tD,EAAQ2tD,EAAS,EAEjB1tD,EAAM0tD,CAEV,CACA,OAAO3tD,CACT,CACA,SAASguD,GAASC,GACXd,GAAMhtE,QAAWgtE,GAAM9/D,SAC1B4gE,EACAhB,IAAcgB,EAAIrM,aAAewL,GAAa,EAAIA,MAEpC,MAAVa,EAAIxsE,GACN0rE,GAAM/oE,KAAK6pE,GAEXd,GAAM3/C,OAAOkgD,GAAmBO,EAAIxsE,IAAK,EAAGwsE,GAE9CC,KAEJ,CACA,SAASA,KACFjB,IAAeC,KAClBA,IAAiB,EACjBO,GAAsBD,GAAgB5tE,KAAKuuE,IAE/C,CACA,SAASC,GAAcH,GACrB,MAAM7tE,EAAI+sE,GAAMhwD,QAAQ8wD,GACpB7tE,EAAIgtE,IACND,GAAM3/C,OAAOptB,EAAG,EAEpB,CACA,SAASiuE,GAAiB/mE,GACnB,EAAQA,GAQX+lE,GAAoBjpE,QAAQkD,GAPvBgmE,IAAuBA,GAAmBjgE,SAC7C/F,EACAA,EAAGs6D,aAAe2L,GAAiB,EAAIA,KAEvCF,GAAoBjpE,KAAKkD,GAK7B4mE,IACF,CACA,SAASI,GAAiBhsE,EAAUisE,EAAMnuE,GAAI6sE,GAAaG,GAAa,EAAI,IAI1E,IAHI,EAGGhtE,EAAI+sE,GAAMhtE,OAAQC,IAAK,CAC5B,MAAMkH,EAAK6lE,GAAM/sE,GACjB,GAAIkH,GAAMA,EAAGymE,IAAK,CAChB,GAAIzrE,GAAYgF,EAAG7F,KAAOa,EAASqI,IACjC,SAEE,EAGJwiE,GAAM3/C,OAAOptB,EAAG,GAChBA,IACAkH,GACF,CACF,CACF,CACA,SAASknE,GAAkBD,GACzB,GAAIlB,GAAoBltE,OAAQ,CAC9B,MAAMsuE,EAAU,IAAI,IAAInpE,IAAI+nE,KAE5B,GADAA,GAAoBltE,OAAS,EACzBmtE,GAEF,YADAA,GAAmBlpE,QAAQqqE,GAQ7B,IALAnB,GAAqBmB,EAIrBnB,GAAmB/6B,MAAK,CAACvyC,EAAGC,IAAM6tE,GAAM9tE,GAAK8tE,GAAM7tE,KAC9CstE,GAAiB,EAAGA,GAAiBD,GAAmBntE,OAAQotE,KAInED,GAAmBC,MAErBD,GAAqB,KACrBC,GAAiB,CACnB,CACF,CACA,MAAMO,GAASG,GAAkB,MAAVA,EAAIxsE,GAAaitE,IAAWT,EAAIxsE,GACjDktE,GAAa,CAAC3uE,EAAGC,KACrB,MAAM+mC,EAAO8mC,GAAM9tE,GAAK8tE,GAAM7tE,GAC9B,GAAa,IAAT+mC,EAAY,CACd,GAAIhnC,EAAE+tE,MAAQ9tE,EAAE8tE,IACd,OAAQ,EACV,GAAI9tE,EAAE8tE,MAAQ/tE,EAAE+tE,IACd,OAAO,CACX,CACA,OAAO/mC,CAAI,EAEb,SAASmnC,GAAUI,GACjBrB,IAAiB,EACjBD,IAAa,EAIbE,GAAM56B,KAAKo8B,IAEX,IACE,IAAKvB,GAAa,EAAGA,GAAaD,GAAMhtE,OAAQitE,KAAc,CAC5D,MAAMa,EAAMd,GAAMC,IACda,IAAsB,IAAfA,EAAIlP,QAIbiM,GAAsBiD,EAAK,KAAM,GAErC,CACF,CAAE,QACAb,GAAa,EACbD,GAAMhtE,OAAS,EACfquE,GAAkBD,GAClBtB,IAAa,EACbQ,GAAsB,MAClBN,GAAMhtE,QAAUktE,GAAoBltE,SACtCguE,GAAUI,EAEd,CACF,CA2OA,SAASv3C,GAAK10B,EAAUsE,KAAUgoE,GAChC,GAAItsE,EAASusE,YACX,OACF,MAAM7/C,EAAQ1sB,EAAS2oE,MAAMj8C,OAASgrC,EA0BtC,IAAIjsD,EAAO6gE,EACX,MAAMzU,EAAkBvzD,EAAM8G,WAAW,WACnCohE,EAAW3U,GAAmBvzD,EAAMgH,MAAM,GAChD,GAAIkhE,GAAYA,KAAY9/C,EAAO,CACjC,MAAM+/C,EAAe,GAAgB,eAAbD,EAA4B,QAAUA,cACxD,OAAE7sB,EAAM,KAAEtxC,GAASqe,EAAM+/C,IAAiB/U,EAC5CrpD,IACF5C,EAAO6gE,EAAQnoE,KAAKzG,GAAM,EAASA,GAAKA,EAAE2Q,OAAS3Q,KAEjDiiD,IACFl0C,EAAO6gE,EAAQnoE,IAAIk1D,GAEvB,CAiBA,IAAIqT,EACJ,IAAIlkE,EAAUkkB,EAAMggD,EAAc5T,EAAax0D,KAC/CooB,EAAMggD,EAAc5T,EAAaF,EAASt0D,MACrCkE,GAAWqvD,IACdrvD,EAAUkkB,EAAMggD,EAAc5T,EAAa,EAAUx0D,MAEnDkE,GACFwhE,GACExhE,EACAxI,EACA,EACAyL,GAGJ,MAAMmrB,EAAclK,EAAMggD,EAAc,QACxC,GAAI91C,EAAa,CACf,GAAK52B,EAAS2sE,SAEP,GAAI3sE,EAAS2sE,QAAQD,GAC1B,YAFA1sE,EAAS2sE,QAAU,CAAC,EAItB3sE,EAAS2sE,QAAQD,IAAe,EAChC1C,GACEpzC,EACA52B,EACA,EACAyL,EAEJ,CACF,CACA,SAASmhE,GAAsBC,EAAMvE,EAAYwE,GAAU,GACzD,MAAM32B,EAAQmyB,EAAWyE,WACnBC,EAAS72B,EAAMpvC,IAAI8lE,GACzB,QAAe,IAAXG,EACF,OAAOA,EAET,MAAM1xB,EAAMuxB,EAAKI,MACjB,IAAInT,EAAa,CAAC,EACdoT,GAAa,EACjB,IAA4B/U,EAAW0U,GAAO,CAC5C,MAAMM,EAAeC,IACnB,MAAMC,EAAuBT,GAAsBQ,EAAM9E,GAAY,GACjE+E,IACFH,GAAa,EACb,EAAOpT,EAAYuT,GACrB,GAEGP,GAAWxE,EAAWgF,OAAOzvE,QAChCyqE,EAAWgF,OAAOjrE,QAAQ8qE,GAExBN,EAAKU,SACPJ,EAAYN,EAAKU,SAEfV,EAAKS,QACPT,EAAKS,OAAOjrE,QAAQ8qE,EAExB,CACA,OAAK7xB,GAAQ4xB,GAMT,EAAQ5xB,GACVA,EAAIj5C,SAAS1D,GAAQm7D,EAAWn7D,GAAO,OAEvC,EAAOm7D,EAAYxe,GAEjB,EAASuxB,IACX12B,EAAM7yC,IAAIupE,EAAM/S,GAEXA,IAbD,EAAS+S,IACX12B,EAAM7yC,IAAIupE,EAAM,MAEX,KAWX,CACA,SAASW,GAAevtE,EAAStB,GAC/B,SAAKsB,IAAY23D,EAAKj5D,MAGtBA,EAAMA,EAAI2M,MAAM,GAAG/H,QAAQ,QAAS,IAC7B,EAAOtD,EAAStB,EAAI,GAAG8E,cAAgB9E,EAAI2M,MAAM,KAAO,EAAOrL,EAAS,EAAUtB,KAAS,EAAOsB,EAAStB,GACpH,CAEA,IAAI8uE,GAA2B,KAC3BC,GAAiB,KACrB,SAASC,GAA4B3tE,GACnC,MAAMiP,EAAOw+D,GAGb,OAFAA,GAA2BztE,EAC3B0tE,GAAiB1tE,GAAYA,EAAS4I,KAAKglE,WAAa,KACjD3+D,CACT,CACA,SAAS4+D,GAAY1uE,GACnBuuE,GAAiBvuE,CACnB,CACA,SAAS2uE,KACPJ,GAAiB,IACnB,CACA,MAAMK,GAAeC,GAAQC,GAC7B,SAASA,GAAQpsE,EAAIqsE,EAAMT,GAA0BU,GACnD,IAAKD,EACH,OAAOrsE,EACT,GAAIA,EAAGusE,GACL,OAAOvsE,EAET,MAAMwsE,EAAsB,IAAI5iE,KAC1B4iE,EAAoBC,IACtBC,IAAkB,GAEpB,MAAMC,EAAeb,GAA4BO,GACjD,IAAItmD,EACJ,IACEA,EAAM/lB,KAAM4J,EACd,CAAE,QACAkiE,GAA4Ba,GACxBH,EAAoBC,IACtBC,GAAiB,EAErB,CAIA,OAAO3mD,CAAG,EAKZ,OAHAymD,EAAoBD,IAAK,EACzBC,EAAoBI,IAAK,EACzBJ,EAAoBC,IAAK,EAClBD,CACT,CAMA,SAASK,GAAoB1uE,GAC3B,MACE4I,KAAM+lE,EAAS,MACfhG,EAAK,MACLzD,EAAK,UACL0J,EAAS,MACTliD,EACAmiD,cAAeA,GAAa,MAC5BC,EAAK,MACLvlD,EAAK,KACLmL,EAAI,OACJsqB,EAAM,YACN+vB,EAAW,KACX1nE,EAAI,WACJ2nE,EAAU,IACVd,EAAG,aACHe,GACEjvE,EACJ,IAAI5C,EACA8xE,EACJ,MAAMjgE,EAAO0+D,GAA4B3tE,GAIzC,IACE,GAAsB,EAAlB2oE,EAAMwG,UAAe,CACvB,MAAMC,EAAaR,GAAa1J,EAC1BmK,EASDD,EACLhyE,EAASkyE,GACPtwB,EAAOtgD,KACL2wE,EACAD,EACAL,EACAriD,EACAsiD,EACA3nE,EACA6mE,IAGJgB,EAAmB3lD,CACrB,KAAO,CACL,MAAMgmD,EAAUZ,EACZ,EAGJvxE,EAASkyE,GACPC,EAAQ1xE,OAAS,EAAI0xE,EACnB7iD,EAQI,CAAEnD,QAAOulD,QAAOp6C,SAClB66C,EACF7iD,EACA,OAIJwiD,EAAmBP,EAAUjiD,MAAQnD,EAAQimD,GAAyBjmD,EACxE,CACF,CAAE,MAAOloB,GACPouE,GAAW5xE,OAAS,EACpBksE,GAAY1oE,EAAKrB,EAAU,GAC3B5C,EAASsyE,GAAYC,GACvB,CACA,IAAIz2D,EAAO9b,EAKX,GAAI8xE,IAAqC,IAAjBD,EAAwB,CAC9C,MAAMlxE,EAAOO,OAAOP,KAAKmxE,IACnB,UAAEC,GAAcj2D,EAClBnb,EAAKF,QACS,EAAZsxE,IACEN,GAAgB9wE,EAAK6xE,KAAK/X,KAC5BqX,EAAmBW,GACjBX,EACAL,IAGJ31D,EAAO42D,GAAW52D,EAAMg2D,GA2B9B,CAwBA,OAvBIvG,EAAMoH,OAMR72D,EAAO42D,GAAW52D,GAClBA,EAAK62D,KAAO72D,EAAK62D,KAAO72D,EAAK62D,KAAKvhE,OAAOm6D,EAAMoH,MAAQpH,EAAMoH,MAE3DpH,EAAMh/C,aAMRzQ,EAAKyQ,WAAag/C,EAAMh/C,YAKxBvsB,EAAS8b,EAEXy0D,GAA4B1+D,GACrB7R,CACT,CAsBA,SAAS4yE,GAAiBrhE,GACxB,IAAIshE,EACJ,IAAK,IAAInyE,EAAI,EAAGA,EAAI6Q,EAAS9Q,OAAQC,IAAK,CACxC,MAAM8Q,EAAQD,EAAS7Q,GACvB,IAAIoyE,GAAQthE,GASV,OARA,GAAIA,EAAMhG,OAAS+mE,IAA8B,SAAnB/gE,EAAMD,SAAqB,CACvD,GAAIshE,EACF,OAEAA,EAAarhE,CAEjB,CAIJ,CACA,OAAOqhE,CACT,CACA,MAAMT,GAA4BjmD,IAChC,IAAI3B,EACJ,IAAK,MAAMjpB,KAAO4qB,GACJ,UAAR5qB,GAA2B,UAARA,GAAmBi5D,EAAKj5D,OAC5CipB,IAAQA,EAAM,CAAC,IAAIjpB,GAAO4qB,EAAM5qB,IAGrC,OAAOipB,CAAG,EAENioD,GAAuB,CAACtmD,EAAOmD,KACnC,MAAM9E,EAAM,CAAC,EACb,IAAK,MAAMjpB,KAAO4qB,EACXsuC,EAAgBl5D,IAAUA,EAAI2M,MAAM,KAAMohB,IAC7C9E,EAAIjpB,GAAO4qB,EAAM5qB,IAGrB,OAAOipB,CAAG,EAKZ,SAASuoD,GAAsBC,EAAWC,EAAWC,GACnD,MAAQ5jD,MAAO6jD,EAAW5hE,SAAU6hE,EAAY,UAAEj7D,GAAc66D,GACxD1jD,MAAO+jD,EAAW9hE,SAAU+hE,EAAY,UAAEC,GAAcN,EAC1DpD,EAAQ13D,EAAUq7D,aAIxB,GAAIP,EAAUN,MAAQM,EAAU1mD,WAC9B,OAAO,EAET,KAAI2mD,GAAaK,GAAa,GAmB5B,SAAIH,IAAgBE,GACbA,GAAiBA,EAAaG,UAIjCN,IAAcE,IAGbF,GAGAE,GAGEK,GAAgBP,EAAWE,EAAWxD,KALlCwD,GA3BX,GAAgB,KAAZE,EACF,OAAO,EAET,GAAgB,GAAZA,EACF,OAAKJ,EAGEO,GAAgBP,EAAWE,EAAWxD,KAFlCwD,EAGN,GAAgB,EAAZE,EAAe,CACxB,MAAMI,EAAeV,EAAUU,aAC/B,IAAK,IAAIjzE,EAAI,EAAGA,EAAIizE,EAAalzE,OAAQC,IAAK,CAC5C,MAAMa,EAAMoyE,EAAajzE,GACzB,GAAI2yE,EAAU9xE,KAAS4xE,EAAU5xE,KAAS6uE,GAAeP,EAAOtuE,GAC9D,OAAO,CAEX,CACF,CAkBF,OAAO,CACT,CACA,SAASmyE,GAAgBP,EAAWE,EAAWG,GAC7C,MAAMI,EAAW1yE,OAAOP,KAAK0yE,GAC7B,GAAIO,EAASnzE,SAAWS,OAAOP,KAAKwyE,GAAW1yE,OAC7C,OAAO,EAET,IAAK,IAAIC,EAAI,EAAGA,EAAIkzE,EAASnzE,OAAQC,IAAK,CACxC,MAAMa,EAAMqyE,EAASlzE,GACrB,GAAI2yE,EAAU9xE,KAAS4xE,EAAU5xE,KAAS6uE,GAAeoD,EAAcjyE,GACrE,OAAO,CAEX,CACA,OAAO,CACT,CACA,SAASsyE,IAAgB,MAAEtI,EAAK,OAAEj6C,GAAUnf,GAC1C,GAAKA,EAEL,MAAOmf,EAAQ,CACb,MAAMxV,EAAOwV,EAAOwiD,QAIpB,GAHIh4D,EAAKi4D,UAAYj4D,EAAKi4D,SAASC,eAAiBzI,IAClDzvD,EAAK3J,GAAKo5D,EAAMp5D,IAEd2J,IAASyvD,EAIX,OAHCA,EAAQj6C,EAAOi6C,OAAOp5D,GAAKA,EAC5Bmf,EAASA,EAAOA,MAIpB,CACF,CAEA,MAAM2iD,GAAa,aACbC,GAAa,aACnB,SAASC,GAAiB7vE,EAAM8vE,GAC9B,OAAOC,GAAaJ,GAAY3vE,GAAM,EAAM8vE,IAAuB9vE,CACrE,CACA,MAAMgwE,GAAyBh8D,OAAOi8D,IAAI,SAC1C,SAASC,GAAwBr8D,GAC/B,OAAI,EAASA,GACJk8D,GAAaJ,GAAY97D,GAAW,IAAUA,EAE9CA,GAAam8D,EAExB,CACA,SAASG,GAAiBnwE,GACxB,OAAO+vE,GAAaH,GAAY5vE,EAClC,CACA,SAAS+vE,GAAa7oE,EAAMlH,EAAMowE,GAAc,EAAMN,GAAqB,GACzE,MAAMxxE,EAAWytE,IAA4BsE,GAC7C,GAAI/xE,EAAU,CACZ,MAAM2uE,EAAY3uE,EAAS4I,KAC3B,GAAIA,IAASyoE,GAAY,CACvB,MAAMW,EAAWC,GACftD,GACA,GAEF,GAAIqD,IAAaA,IAAatwE,GAAQswE,IAAapZ,EAASl3D,IAASswE,IAAa,EAAWpZ,EAASl3D,KACpG,OAAOitE,CAEX,CACA,MAAM/mD,EAGJhrB,GAAQoD,EAAS4I,IAAS+lE,EAAU/lE,GAAOlH,IAC3C9E,GAAQoD,EAASsoE,WAAW1/D,GAAOlH,GAErC,OAAKkmB,GAAO4pD,EACH7C,EAOF/mD,CACT,CAKF,CACA,SAAShrB,GAAQs1E,EAAUxwE,GACzB,OAAOwwE,IAAaA,EAASxwE,IAASwwE,EAAStZ,EAASl3D,KAAUwwE,EAAS,EAAWtZ,EAASl3D,KACjG,CAEA,MAAMywE,GAAcvpE,GAASA,EAAKwpE,aAClC,IAAIC,GAAa,EACjB,MAAMC,GAAe,CACnB5wE,KAAM,WAKN0wE,cAAc,EACd,OAAAG,CAAQC,EAAIC,EAAIC,EAAWC,EAAQC,EAAiBC,EAAgBloE,EAAWmoE,EAAcxC,EAAWyC,GAC5F,MAANP,EACFQ,GACEP,EACAC,EACAC,EACAC,EACAC,EACAloE,EACAmoE,EACAxC,EACAyC,GAGFE,GACET,EACAC,EACAC,EACAC,EACAC,EACAjoE,EACAmoE,EACAxC,EACAyC,EAGN,EACAG,QAASC,GACTxtD,OAAQytD,GACRjwC,UAAWkwC,IAEPC,GAAWhB,GACjB,SAASiB,GAAa5K,EAAOjnE,GAC3B,MAAM8xE,EAAgB7K,EAAMj8C,OAASi8C,EAAMj8C,MAAMhrB,GAC7Cy2D,EAAWqb,IACbA,GAEJ,CACA,SAASR,GAAcrK,EAAO+J,EAAWC,EAAQC,EAAiBC,EAAgBloE,EAAWmoE,EAAcxC,EAAWyC,GACpH,MACEtwE,EAAGgxE,EACH3tD,GAAG,cAAEziB,IACH0vE,EACEW,EAAkBrwE,EAAc,OAChC8tE,EAAWxI,EAAMwI,SAAWiC,GAChCzK,EACAkK,EACAD,EACAF,EACAgB,EACAf,EACAhoE,EACAmoE,EACAxC,EACAyC,GAEFU,EACE,KACAtC,EAASwC,cAAgBhL,EAAMiL,UAC/BF,EACA,KACAd,EACAzB,EACAxmE,EACAmoE,GAEE3B,EAAS/T,KAAO,GAClBmW,GAAa5K,EAAO,aACpB4K,GAAa5K,EAAO,cACpB8K,EACE,KACA9K,EAAMkL,WACNnB,EACAC,EACAC,EACA,KAEAjoE,EACAmoE,GAEFgB,GAAgB3C,EAAUxI,EAAMkL,aAEhC1C,EAASv0E,SAAQ,GAAO,EAE5B,CACA,SAASq2E,GAAcT,EAAIC,EAAIC,EAAWC,EAAQC,EAAiBjoE,EAAWmoE,EAAcxC,GAAa7tE,EAAGgxE,EAAOM,GAAIC,EAASluD,GAAG,cAAEziB,KACnI,MAAM8tE,EAAWsB,EAAGtB,SAAWqB,EAAGrB,SAClCA,EAASxI,MAAQ8J,EACjBA,EAAGljE,GAAKijE,EAAGjjE,GACX,MAAM0kE,EAAYxB,EAAGmB,UACfM,EAAczB,EAAGoB,YACjB,aAAEzC,EAAY,cAAEuC,EAAa,aAAEQ,EAAY,YAAEC,GAAgBjD,EACnE,GAAIwC,EACFxC,EAASwC,cAAgBM,EACrBI,GAAgBJ,EAAWN,IAC7BF,EACEE,EACAM,EACA9C,EAASuC,gBACT,KACAd,EACAzB,EACAxmE,EACAmoE,EACAxC,GAEEa,EAAS/T,MAAQ,EACnB+T,EAASv0E,UACAu3E,IACJC,IACHX,EACErC,EACA8C,EACAxB,EACAC,EACAC,EACA,KAEAjoE,EACAmoE,EACAxC,GAEFwD,GAAgB3C,EAAU+C,OAI9B/C,EAASmD,UAAYjC,KACjB+B,GACFjD,EAASiD,aAAc,EACvBjD,EAASC,aAAeuC,GAExBK,EAAQL,EAAef,EAAiBzB,GAE1CA,EAAS/T,KAAO,EAChB+T,EAAS7U,QAAQz+D,OAAS,EAC1BszE,EAASuC,gBAAkBrwE,EAAc,OACrC8wE,GACFV,EACE,KACAQ,EACA9C,EAASuC,gBACT,KACAd,EACAzB,EACAxmE,EACAmoE,EACAxC,GAEEa,EAAS/T,MAAQ,EACnB+T,EAASv0E,WAET62E,EACErC,EACA8C,EACAxB,EACAC,EACAC,EACA,KAEAjoE,EACAmoE,EACAxC,GAEFwD,GAAgB3C,EAAU+C,KAEnB9C,GAAgBiD,GAAgBJ,EAAW7C,IACpDqC,EACErC,EACA6C,EACAvB,EACAC,EACAC,EACAzB,EACAxmE,EACAmoE,EACAxC,GAEFa,EAASv0E,SAAQ,KAEjB62E,EACE,KACAQ,EACA9C,EAASuC,gBACT,KACAd,EACAzB,EACAxmE,EACAmoE,EACAxC,GAEEa,EAAS/T,MAAQ,GACnB+T,EAASv0E,iBAKf,GAAIw0E,GAAgBiD,GAAgBJ,EAAW7C,GAC7CqC,EACErC,EACA6C,EACAvB,EACAC,EACAC,EACAzB,EACAxmE,EACAmoE,EACAxC,GAEFwD,GAAgB3C,EAAU8C,QAoB1B,GAlBAV,GAAad,EAAI,aACjBtB,EAASwC,cAAgBM,EACC,IAAtBA,EAAU9E,UACZgC,EAASmD,UAAYL,EAAU1+D,UAAU88D,WAEzClB,EAASmD,UAAYjC,KAEvBoB,EACE,KACAQ,EACA9C,EAASuC,gBACT,KACAd,EACAzB,EACAxmE,EACAmoE,EACAxC,GAEEa,EAAS/T,MAAQ,EACnB+T,EAASv0E,cACJ,CACL,MAAM,QAAEi+C,EAAO,UAAEy5B,GAAcnD,EAC3Bt2B,EAAU,EACZ91C,YAAW,KACLosE,EAASmD,YAAcA,GACzBnD,EAASoD,SAASL,EACpB,GACCr5B,GACkB,IAAZA,GACTs2B,EAASoD,SAASL,EAEtB,CAGN,CAEA,SAASd,GAAuBzK,EAAOkK,EAAgBD,EAAiBF,EAAWgB,EAAiBf,EAAQhoE,EAAWmoE,EAAcxC,EAAWyC,EAAmBqB,GAAc,GAO/K,MACE3xE,EAAGgxE,EACH5wE,EAAGkrC,EACHgmC,GAAIC,EACJ5wE,EAAGnG,EACH6oB,GAAG,WAAE5c,EAAU,OAAEjI,IACf8xE,EACJ,IAAIyB,EACJ,MAAMC,EAAgBC,GAAmB/L,GACrC8L,IACoB,MAAlB5B,OAAyB,EAASA,EAAec,iBACnDa,EAAmB3B,EAAeyB,UAClCzB,EAAezV,QAGnB,MAAMviB,EAAU8tB,EAAMj8C,MAAQ4sC,EAASqP,EAAMj8C,MAAMmuB,cAAW,EAI9D,MAAMs2B,EAAW,CACfxI,QACAj6C,OAAQmkD,EACRD,kBACAjoE,YACA+nE,YACAgB,kBACAf,SACAvV,KAAM,EACNkX,UAAW,EACXz5B,QAA4B,kBAAZA,EAAuBA,GAAW,EAClDu2B,aAAc,KACduC,cAAe,KACfQ,cAAeC,EACfA,cACA7H,aAAa,EACbjQ,QAAS,GACT,OAAA1/D,CAAQ+3E,GAAS,EAAOC,GAAO,GAa7B,MACEjM,MAAOkM,EAAM,aACbzD,EAAY,cACZuC,EAAa,UACbW,EAAS,QACThY,EACAsW,gBAAiBkC,EACjBpC,UAAWqC,GACT5D,EACJ,IAAI6D,GAAa,EACjB,GAAI7D,EAASiD,YACXjD,EAASiD,aAAc,OAClB,IAAKO,EAAQ,CAClBK,EAAa5D,GAAgBuC,EAAchqD,YAAgD,WAAlCgqD,EAAchqD,WAAWsrD,KAC9ED,IACF5D,EAAaznD,WAAWurD,WAAa,KAC/BZ,IAAcnD,EAASmD,YACzBvmC,EACE4lC,EACAoB,EACA93E,EAAKm0E,GACL,GAEFrF,GAAiBzP,GACnB,GAGJ,IAAMqW,OAAQwC,GAAYhE,EACtBC,IACF+D,EAAUl4E,EAAKm0E,GACf4C,EAAQ5C,EAAc0D,EAAkB3D,GAAU,IAE/C6D,GACHjnC,EAAK4lC,EAAeoB,EAAYI,EAAS,EAE7C,CACArB,GAAgB3C,EAAUwC,GAC1BxC,EAASwC,cAAgB,KACzBxC,EAASgD,cAAe,EACxB,IAAIzlD,EAASyiD,EAASziD,OAClB0mD,GAAwB,EAC5B,MAAO1mD,EAAQ,CACb,GAAIA,EAAOilD,cAAe,CACxBjlD,EAAO4tC,QAAQx6D,QAAQw6D,GACvB8Y,GAAwB,EACxB,KACF,CACA1mD,EAASA,EAAOA,MAClB,CACK0mD,GAA0BJ,GAC7BjJ,GAAiBzP,GAEnB6U,EAAS7U,QAAU,GACfmY,GACE5B,GAAkBA,EAAec,eAAiBa,IAAqB3B,EAAeyB,YACxFzB,EAAezV,OACa,IAAxByV,EAAezV,MAAewX,GAChC/B,EAAej2E,WAIrB22E,GAAasB,EAAQ,YACvB,EACA,QAAAN,CAASc,GACP,IAAKlE,EAASwC,cACZ,OAEF,MAAQhL,MAAOkM,EAAM,aAAEzD,EAAcwB,gBAAiBkC,EAAkBpC,UAAWqC,EAAYpqE,UAAW2qE,GAAenE,EACzHoC,GAAasB,EAAQ,cACrB,MAAMM,EAAUl4E,EAAKm0E,GACfmE,EAAgB,KACfpE,EAASgD,eAGdV,EACE,KACA4B,EACAN,EACAI,EACAL,EACA,KAEAQ,EACAxC,EACAxC,GAEFwD,GAAgB3C,EAAUkE,GAAc,EAEpCL,EAAaK,EAAc1rD,YAAgD,WAAlC0rD,EAAc1rD,WAAWsrD,KACpED,IACF5D,EAAaznD,WAAWurD,WAAaK,GAEvCpE,EAASgD,cAAe,EACxBH,EACE5C,EACA0D,EACA,MAEA,GAGGE,GACHO,GAEJ,EACA,IAAAxnC,CAAKgnC,EAAYI,EAASvsE,GACxBuoE,EAASC,cAAgBrjC,EAAKojC,EAASC,aAAc2D,EAAYI,EAASvsE,GAC1EuoE,EAASuB,UAAYqC,CACvB,EACA,IAAA93E,GACE,OAAOk0E,EAASC,cAAgBn0E,EAAKk0E,EAASC,aAChD,EACA,WAAAoE,CAAYx1E,EAAUy1E,GACpB,MAAMC,IAAwBvE,EAASwC,cACnC+B,GACFvE,EAAS/T,OAEX,MAAMuY,EAAa31E,EAAS2oE,MAAMp5D,GAClCvP,EAAS41E,SAASvd,OAAOh3D,IACvB0oE,GAAY1oE,EAAKrB,EAAU,EAAE,IAC5B1C,MAAMu4E,IACP,GAAI71E,EAASusE,aAAe4E,EAAS5E,aAAe4E,EAASmD,YAAct0E,EAASqyE,WAClF,OAEFryE,EAAS81E,eAAgB,EACzB,MAAQnN,MAAOkM,GAAW70E,EAI1B+1E,GAAkB/1E,EAAU61E,GAAkB,GAC1CF,IACFd,EAAOtlE,GAAKomE,GAEd,MAAMK,GAAeL,GAAc31E,EAASkxE,QAAQ3hE,GACpDkmE,EACEz1E,EACA60E,EAIA3rE,EAAWysE,GAAc31E,EAASkxE,QAAQ3hE,IAG1ComE,EAAa,KAAO14E,EAAK+C,EAASkxE,SAClCC,EACAxmE,EACA2lE,GAEE0F,GACF/0E,EAAO+0E,GAET/E,GAAgBjxE,EAAU60E,EAAOtlE,IAI7BmmE,GAA2C,MAAlBvE,EAAS/T,MACpC+T,EAASv0E,SACX,GAEJ,EACA,OAAAo3E,CAAQiC,EAAiBC,GACvB/E,EAAS5E,aAAc,EACnB4E,EAASC,cACX4C,EACE7C,EAASC,aACTwB,EACAqD,EACAC,GAGA/E,EAASwC,eACXK,EACE7C,EAASwC,cACTf,EACAqD,EACAC,EAGN,GAEF,OAAO/E,CACT,CACA,SAASgC,GAAgBrjD,EAAM64C,EAAOiK,EAAiBC,EAAgBloE,EAAWmoE,EAAcxC,EAAWyC,EAAmBoD,GAC5H,MAAMhF,EAAWxI,EAAMwI,SAAWiC,GAChCzK,EACAkK,EACAD,EACA9iD,EAAK5mB,WAELnI,SAASsC,cAAc,OACvB,KACAsH,EACAmoE,EACAxC,EACAyC,GACA,GAEI31E,EAAS+4E,EACbrmD,EACAqhD,EAASwC,cAAgBhL,EAAMiL,UAC/BhB,EACAzB,EACA2B,EACAxC,GAKF,OAHsB,IAAlBa,EAAS/T,MACX+T,EAASv0E,SAAQ,GAAO,GAEnBQ,CACT,CACA,SAASi2E,GAA0B1K,GACjC,MAAM,UAAEwG,EAAS,SAAExgE,GAAag6D,EAC1ByN,EAA6B,GAAZjH,EACvBxG,EAAMiL,UAAYyC,GAChBD,EAAiBznE,EAAS2nE,QAAU3nE,GAEtCg6D,EAAMkL,WAAauC,EAAiBC,GAAsB1nE,EAAS4lE,UAAY7E,GAAYC,GAC7F,CACA,SAAS0G,GAAsBngB,GAC7B,IAAIqgB,EACJ,GAAIpe,EAAWjC,GAAI,CACjB,MAAMsgB,EAAaC,IAAsBvgB,EAAEuY,GACvC+H,IACFtgB,EAAEoY,IAAK,EACPoI,MAEFxgB,EAAIA,IACAsgB,IACFtgB,EAAEoY,IAAK,EACPiI,EAAQI,GACRC,KAEJ,CACA,GAAI,EAAQ1gB,GAAI,CACd,MAAM2gB,EAAc7G,GAAiB9Z,GACjC,EAGJA,EAAI2gB,CACN,CAKA,OAJA3gB,EAAIoZ,GAAepZ,GACfqgB,IAAUrgB,EAAE4gB,kBACd5gB,EAAE4gB,gBAAkBP,EAAM3oE,QAAQlL,GAAMA,IAAMwzD,KAEzCA,CACT,CACA,SAAS6gB,GAAwBl1E,EAAIsvE,GAC/BA,GAAYA,EAASwC,cACnB,EAAQ9xE,GACVsvE,EAAS7U,QAAQx6D,QAAQD,GAEzBsvE,EAAS7U,QAAQx6D,KAAKD,GAGxBkqE,GAAiBlqE,EAErB,CACA,SAASiyE,GAAgB3C,EAAU6F,GACjC7F,EAASC,aAAe4F,EACxB,MAAM,MAAErO,EAAK,gBAAEiK,GAAoBzB,EAC7B5hE,EAAKo5D,EAAMp5D,GAAKynE,EAAOznE,GACzBqjE,GAAmBA,EAAgB1B,UAAYvI,IACjDiK,EAAgBjK,MAAMp5D,GAAKA,EAC3B0hE,GAAgB2B,EAAiBrjE,GAErC,CACA,SAASmlE,GAAmB/L,GAC1B,IAAI3mE,EACJ,OAAiE,OAAnC,OAArBA,EAAK2mE,EAAMj8C,YAAiB,EAAS1qB,EAAGi1E,eAAoD,IAA5BtO,EAAMj8C,MAAMuqD,WACvF,CAEA,MAAMC,GAAgBxhE,OAAOi8D,IAAI,SAC3BwF,GAAgB,KACpB,CACE,MAAMjJ,EAAMkJ,GAAOF,IAMnB,OAAOhJ,CACT,GAGF,SAASmJ,GAAYj8C,EAAQn7B,GAC3B,OAAOq3E,GAAQl8C,EAAQ,KAAMn7B,EAC/B,CACA,SAASs3E,GAAgBn8C,EAAQn7B,GAC/B,OAAOq3E,GACLl8C,EACA,KACqF,CAAEo8C,MAAO,QAElG,CACA,SAASC,GAAgBr8C,EAAQn7B,GAC/B,OAAOq3E,GACLl8C,EACA,KACqF,CAAEo8C,MAAO,QAElG,CACA,MAAME,GAAwB,CAAC,EAC/B,SAASC,GAAMx5E,EAAQ6G,EAAI/E,GAMzB,OAAOq3E,GAAQn5E,EAAQ6G,EAAI/E,EAC7B,CACA,SAASq3E,GAAQn5E,EAAQ6G,GAAI,UAC3B4yE,EAAS,KACTC,EAAI,MACJL,EAAK,KACL7gD,EAAI,QACJmhD,EAAO,UACPC,GACErgB,GACF,IAAI11D,EACJ,GAAIgD,GAAM2xB,EAAM,CACd,MAAMqhD,EAAMhzE,EACZA,EAAK,IAAIyG,KACPusE,KAAOvsE,GACPwsE,GAAS,CAEb,CAkBA,MAOMj4E,EAAWg9D,QAAiD,OAAzBh7D,EAAK+vE,SAA2B,EAAS/vE,EAAG+6D,OAASgV,GAAkB,KAChH,IAAIxM,EAkDA9G,EAjDAyZ,GAAe,EACfC,GAAgB,EA4CpB,GA3CIhX,GAAMhjE,IACRonE,EAAS,IAAMpnE,EAAOxB,MACtBu7E,EAAezW,GAAYtjE,IAClBgnE,GAAWhnE,IACpBonE,EAAS9D,GAAYtjE,KAAoB,IAAT05E,EAAiB,IAAMO,GAASj6E,EAAQ,GAAK,IAAMi6E,GAASj6E,GAC5F+5E,GAAe,GACN,EAAQ/5E,IACjBg6E,GAAgB,EAChBD,EAAe/5E,EAAOyxE,MAAM1Z,GAAMiP,GAAWjP,IAAMuL,GAAYvL,KAC/DqP,EAAS,IAAMpnE,EAAOgG,KAAK+xD,GACrBiL,GAAMjL,GACDA,EAAEv5D,MACAwoE,GAAWjP,GACbkiB,GAASliB,EAAGuL,GAAYvL,KAAe,IAAT2hB,EAAiB,OAAI,GACjD1f,EAAWjC,GACbwS,GAAsBxS,EAAGl2D,EAAU,QADrC,KAQPulE,EAFOpN,EAAWh6D,GAChB6G,EACO,IAAM0jE,GAAsBvqE,EAAQ6B,EAAU,GAE9C,KACP,IAAIA,IAAYA,EAASusE,YAMzB,OAHI9N,GACFA,IAEKuL,GACL7rE,EACA6B,EACA,EACA,CAACq4E,GACF,EAII,EAGPrzE,GAAM6yE,EAAM,CACd,MAAMS,EAAa/S,EACnBA,EAAS,IAAM6S,GAASE,IAC1B,CAEA,IAMIC,EANAF,EAAax2E,IACf48D,EAAUrjC,EAAOijC,OAAS,KACxBqK,GAAsB7mE,EAAI7B,EAAU,GACpCy+D,EAAUrjC,EAAOijC,YAAS,CAAM,CACjC,EAGH,GAAIma,GAAuB,CAWzB,GAVAH,EAAY,EACPrzE,EAEM4yE,GACT5N,GAA2BhlE,EAAIhF,EAAU,EAAG,CAC1CulE,IACA4S,EAAgB,QAAK,EACrBE,IALF9S,IAQY,SAAViS,EAIF,OAAO,EAJa,CACpB,MAAMtJ,EAAMiJ,KACZoB,EAAarK,EAAIuK,mBAAqBvK,EAAIuK,iBAAmB,GAC/D,CAGF,CACA,IAAIzf,EAAWmf,EAAgB,IAAIn6E,MAAMG,EAAON,QAAQ66E,KAAKhB,IAAyBA,GACtF,MAAM/L,EAAM,KACV,GAAKvwC,EAAOqhC,QAAWrhC,EAAOsiC,MAG9B,GAAI14D,EAAI,CACN,MAAM86D,EAAW1kC,EAAOiS,OACpBwqC,GAAQK,IAAiBC,EAAgBrY,EAAS8P,MAAK,CAACxtE,EAAGtE,IAAMi7D,EAAW32D,EAAG42D,EAASl7D,MAAOi7D,EAAW+G,EAAU9G,OAClHyF,GACFA,IAEFuL,GAA2BhlE,EAAIhF,EAAU,EAAG,CAC1C8/D,EAEA9G,IAAa0e,QAAwB,EAASS,GAAiBnf,EAAS,KAAO0e,GAAwB,GAAK1e,EAC5Gqf,IAEFrf,EAAW8G,EAEf,MACE1kC,EAAOiS,KACT,EAGF,IAAI8vB,EADJwO,EAAIrM,eAAiBt6D,EAEP,SAAVwyE,EACFra,EAAYwO,EACO,SAAV6L,EACTra,EAAY,IAAMwb,GAAsBhN,EAAK3rE,GAAYA,EAASmxE,WAElExF,EAAIF,KAAM,EACNzrE,IACF2rE,EAAIxsE,GAAKa,EAASqI,KACpB80D,EAAY,IAAMuO,GAASC,IAE7B,MAAMvwC,EAAS,IAAI8hC,GAAeqI,EAAQ,EAAMpI,GAC1C8a,EAAU,KACd78C,EAAOggB,OACHp7C,GAAYA,EAAS+8D,OACvB97D,EAAOjB,EAAS+8D,MAAMT,QAASlhC,EACjC,EAsBF,OAhBIp2B,EACE4yE,EACFjM,IAEA3S,EAAW59B,EAAOiS,MAED,SAAVmqC,EACTmB,GACEv9C,EAAOiS,IAAI3mB,KAAK0U,GAChBp7B,GAAYA,EAASmxE,UAGvB/1C,EAAOiS,MAELkrC,GACFA,EAAWz2E,KAAKm2E,GACXA,CACT,CACA,SAASW,GAAcz6E,EAAQxB,EAAOsD,GACpC,MAAM44E,EAAaj5E,KAAKslE,MAClBK,EAAS,EAASpnE,GAAUA,EAAO4M,SAAS,KAAO+tE,GAAiBD,EAAY16E,GAAU,IAAM06E,EAAW16E,GAAUA,EAAOuoB,KAAKmyD,EAAYA,GACnJ,IAAI7zE,EACAmzD,EAAWx7D,GACbqI,EAAKrI,GAELqI,EAAKrI,EAAM6L,QACXvI,EAAUtD,GAEZ,MAAMwtE,EAAM4H,GACZgH,GAAmBn5E,MACnB,MAAMgoB,EAAM0vD,GAAQ/R,EAAQvgE,EAAG0hB,KAAKmyD,GAAa54E,GAMjD,OALIkqE,EACF4O,GAAmB5O,GAEnB6O,KAEKpxD,CACT,CACA,SAASkxD,GAAiB5K,EAAKhnC,GAC7B,MAAM+xC,EAAW/xC,EAAK/4B,MAAM,KAC5B,MAAO,KACL,IAAIg8D,EAAM+D,EACV,IAAK,IAAIpwE,EAAI,EAAGA,EAAIm7E,EAASp7E,QAAUssE,EAAKrsE,IAC1CqsE,EAAMA,EAAI8O,EAASn7E,IAErB,OAAOqsE,CAAG,CAEd,CACA,SAASiO,GAASz7E,EAAOm0D,EAAOooB,EAAe,EAAGjN,GAChD,IAAK,EAAStvE,IAAUA,EAAM,YAC5B,OAAOA,EAET,GAAIm0D,GAASA,EAAQ,EAAG,CACtB,GAAIooB,GAAgBpoB,EAClB,OAAOn0D,EAETu8E,GACF,CAEA,GADAjN,EAAOA,GAAwB,IAAIjpE,IAC/BipE,EAAK3kE,IAAI3K,GACX,OAAOA,EAGT,GADAsvE,EAAKhoE,IAAItH,GACLwkE,GAAMxkE,GACRy7E,GAASz7E,EAAMA,MAAOm0D,EAAOooB,EAAcjN,QACtC,GAAI,EAAQtvE,GACjB,IAAK,IAAImB,EAAI,EAAGA,EAAInB,EAAMkB,OAAQC,IAChCs6E,GAASz7E,EAAMmB,GAAIgzD,EAAOooB,EAAcjN,QAErC,GAAIjU,EAAMr7D,IAAUm7D,EAAMn7D,GAC/BA,EAAM0F,SAASD,IACbg2E,GAASh2E,EAAG0uD,EAAOooB,EAAcjN,EAAK,SAEnC,GAAI3T,EAAc37D,GACvB,IAAK,MAAMgC,KAAOhC,EAChBy7E,GAASz7E,EAAMgC,GAAMmyD,EAAOooB,EAAcjN,GAG9C,OAAOtvE,CACT,CAOA,SAASw8E,GAAexQ,EAAOyQ,GAC7B,MAAMC,EAAmB5L,GACzB,GAAyB,OAArB4L,EAEF,OAAO1Q,EAET,MAAM3oE,EAAWs5E,GAAeD,IAAqBA,EAAiBnU,MAChEqU,EAAW5Q,EAAMoH,OAASpH,EAAMoH,KAAO,IAC7C,IAAK,IAAIjyE,EAAI,EAAGA,EAAIs7E,EAAWv7E,OAAQC,IAAK,CAC1C,IAAK4b,EAAK/c,EAAOw8D,EAAKqgB,EAAY9hB,GAAa0hB,EAAWt7E,GACtD4b,IACEy+C,EAAWz+C,KACbA,EAAM,CACJu6B,QAASv6B,EACT+/D,QAAS//D,IAGTA,EAAIm+D,MACNO,GAASz7E,GAEX48E,EAASz3E,KAAK,CACZ4X,MACA1Z,WACArD,QACAq8D,cAAU,EACVG,MACAqgB,cAGN,CACA,OAAO7Q,CACT,CACA,SAAS+Q,GAAoB/Q,EAAOyH,EAAWpwE,EAAU0B,GACvD,MAAM63E,EAAW5Q,EAAMoH,KACjB4J,EAAcvJ,GAAaA,EAAUL,KAC3C,IAAK,IAAIjyE,EAAI,EAAGA,EAAIy7E,EAAS17E,OAAQC,IAAK,CACxC,MAAM87E,EAAUL,EAASz7E,GACrB67E,IACFC,EAAQ5gB,SAAW2gB,EAAY77E,GAAGnB,OAEpC,IAAIk9E,EAAOD,EAAQlgE,IAAIhY,GACnBm4E,IACFlc,KACAqM,GAA2B6P,EAAM75E,EAAU,EAAG,CAC5C2oE,EAAMp5D,GACNqqE,EACAjR,EACAyH,IAEFrS,KAEJ,CACF,CAEA,MAAM+b,GAAapkE,OAAO,YACpBqkE,GAAarkE,OAAO,YAC1B,SAASskE,KACP,MAAM/sB,EAAQ,CACZgtB,WAAW,EACXC,WAAW,EACXC,cAAc,EACdC,cAA+B,IAAIhzE,KAQrC,OANAizE,IAAU,KACRptB,EAAMgtB,WAAY,CAAI,IAExBK,IAAgB,KACdrtB,EAAMktB,cAAe,CAAI,IAEpBltB,CACT,CACA,MAAMstB,GAA0B,CAACt6D,SAAUjiB,OACrCw8E,GAAgC,CACpCvF,KAAMzZ,OACNif,OAAQhwE,QACRiwE,UAAWjwE,QAEXkwE,cAAeJ,GACfK,QAASL,GACTM,aAAcN,GACdO,iBAAkBP,GAElBQ,cAAeR,GACfS,QAAST,GACTU,aAAcV,GACdW,iBAAkBX,GAElBY,eAAgBZ,GAChBa,SAAUb,GACVc,cAAed,GACfe,kBAAmBf,IAEfgB,GAAqB,CACzB75E,KAAM,iBACNgrB,MAAO8tD,GACP,KAAAgB,CAAM9uD,GAAO,MAAEoiD,IACb,MAAM9uE,EAAWy7E,KACXxuB,EAAQ+sB,KACd,IAAI0B,EACJ,MAAO,KACL,MAAM/sE,EAAWmgE,EAAMwH,SAAWqF,GAAyB7M,EAAMwH,WAAW,GAC5E,IAAK3nE,IAAaA,EAAS9Q,OACzB,OAEF,IAAI+Q,EAAQD,EAAS,GACrB,GAAIA,EAAS9Q,OAAS,EAAG,CACvB,IAAI+9E,GAAW,EACf,IAAK,MAAMl5E,KAAKiM,EACd,GAAIjM,EAAEkG,OAAS+mE,GAAS,CAClB,EAMJ/gE,EAAQlM,EACRk5E,GAAW,EAET,KACJ,CAEJ,CACA,MAAMC,EAAW,GAAMnvD,IACjB,KAAEuoD,GAAS4G,EAIjB,GAAI5uB,EAAMitB,UACR,OAAO4B,GAAiBltE,GAE1B,MAAMmtE,EAAaC,GAAkBptE,GACrC,IAAKmtE,EACH,OAAOD,GAAiBltE,GAE1B,MAAMqtE,EAAaC,GACjBH,EACAF,EACA5uB,EACAjtD,GAEFm8E,GAAmBJ,EAAYE,GAC/B,MAAMG,EAAWp8E,EAASkxE,QACpBmL,EAAgBD,GAAYJ,GAAkBI,GACpD,IAAIE,GAAuB,EAC3B,MAAM,iBAAEC,GAAqBR,EAAWnzE,KACxC,GAAI2zE,EAAkB,CACpB,MAAM59E,EAAM49E,SACc,IAAtBb,EACFA,EAAoB/8E,EACXA,IAAQ+8E,IACjBA,EAAoB/8E,EACpB29E,GAAuB,EAE3B,CACA,GAAID,GAAiBA,EAAczzE,OAAS+mE,MAAa0E,GAAgB0H,EAAYM,IAAkBC,GAAuB,CAC5H,MAAME,EAAeN,GACnBG,EACAR,EACA5uB,EACAjtD,GAGF,GADAm8E,GAAmBE,EAAeG,GACrB,WAATvH,EASF,OARAhoB,EAAMitB,WAAY,EAClBsC,EAAatH,WAAa,KACxBjoB,EAAMitB,WAAY,GACa,IAA3Bl6E,EAASqlC,OAAOo3B,SAClBz8D,EAASo7B,OAAOsiC,OAAQ,EACxB19D,EAASqlC,SACX,EAEKy2C,GAAiBltE,GACN,WAATqmE,GAAqB8G,EAAWnzE,OAAS+mE,KAClD6M,EAAaC,WAAa,CAACltE,EAAImtE,EAAaC,KAC1C,MAAMC,EAAqBC,GACzB5vB,EACAovB,GAEFO,EAAmBphB,OAAO6gB,EAAc19E,MAAQ09E,EAChD9sE,EAAGuqE,IAAc,KACf4C,IACAntE,EAAGuqE,SAAc,SACVmC,EAAWU,YAAY,EAEhCV,EAAWU,aAAeA,CAAY,EAG5C,CACA,OAAO/tE,CAAK,CAEhB,GAEIkuE,GAAiBvB,GACvB,SAASsB,GAAuB5vB,EAAO0b,GACrC,MAAM,cAAEyR,GAAkBntB,EAC1B,IAAI2vB,EAAqBxC,EAAcrzE,IAAI4hE,EAAM//D,MAKjD,OAJKg0E,IACHA,EAAqCt+E,OAAOqnB,OAAO,MACnDy0D,EAAc92E,IAAIqlE,EAAM//D,KAAMg0E,IAEzBA,CACT,CACA,SAASV,GAAuBvT,EAAOj8C,EAAOugC,EAAOjtD,GACnD,MAAM,OACJy6E,EAAM,KACNxF,EAAI,UACJyF,GAAY,EAAK,cACjBC,EAAa,QACbC,EAAO,aACPC,EAAY,iBACZC,EAAgB,cAChBC,EAAa,QACbC,EAAO,aACPC,EAAY,iBACZC,EAAgB,eAChBC,EAAc,SACdC,EAAQ,cACRC,EAAa,kBACbC,GACE5uD,EACE/tB,EAAM68D,OAAOmN,EAAMhqE,KACnBi+E,EAAqBC,GAAuB5vB,EAAO0b,GACnDoU,EAAW,CAAClD,EAAMpuE,KACtBouE,GAAQ7P,GACN6P,EACA75E,EACA,EACAyL,EACD,EAEGuxE,EAAgB,CAACnD,EAAMpuE,KAC3B,MAAMpO,EAAOoO,EAAK,GAClBsxE,EAASlD,EAAMpuE,GACX,EAAQouE,GACNA,EAAKoD,OAAOC,GAAUA,EAAMr/E,QAAU,KACxCR,IACOw8E,EAAKh8E,QAAU,GACxBR,GACF,EAEI8/E,EAAQ,CACZlI,OACAyF,YACA,WAAA0C,CAAY7tE,GACV,IAAIsqE,EAAOc,EACX,IAAK1tB,EAAMgtB,UAAW,CACpB,IAAIQ,EAGF,OAFAZ,EAAOsB,GAAkBR,CAI7B,CACIprE,EAAGuqE,KACLvqE,EAAGuqE,KACD,GAIJ,MAAMuD,EAAeT,EAAmBj+E,GACpC0+E,GAAgBhJ,GAAgB1L,EAAO0U,IAAiBA,EAAa9tE,GAAGuqE,KAC1EuD,EAAa9tE,GAAGuqE,MAElBiD,EAASlD,EAAM,CAACtqE,GAClB,EACA,KAAA+tE,CAAM/tE,GACJ,IAAIsqE,EAAOe,EACP2C,EAAY1C,EACZ2C,EAAa1C,EACjB,IAAK7tB,EAAMgtB,UAAW,CACpB,IAAIQ,EAKF,OAJAZ,EAAOuB,GAAYR,EACnB2C,EAAYlC,GAAiBR,EAC7B2C,EAAalC,GAAqBR,CAItC,CACA,IAAIzgE,GAAS,EACb,MAAMhd,EAAOkS,EAAGwqE,IAAe0D,IACzBpjE,IAEJA,GAAS,EAEP0iE,EADEU,EACOD,EAEAD,EAFY,CAAChuE,IAIpB4tE,EAAMR,cACRQ,EAAMR,eAERptE,EAAGwqE,SAAc,EAAM,EAErBF,EACFmD,EAAcnD,EAAM,CAACtqE,EAAIlS,IAEzBA,GAEJ,EACA,KAAAqgF,CAAMnuE,EAAItO,GACR,MAAMg/D,EAAOzE,OAAOmN,EAAMhqE,KAO1B,GANI4Q,EAAGwqE,KACLxqE,EAAGwqE,KACD,GAIA9sB,EAAMktB,aACR,OAAOl5E,IAET87E,EAAShC,EAAe,CAACxrE,IACzB,IAAI8K,GAAS,EACb,MAAMhd,EAAOkS,EAAGuqE,IAAe2D,IACzBpjE,IAEJA,GAAS,EACTpZ,IAEE87E,EADEU,EACOvC,EAEAD,EAFkB,CAAC1rE,IAI9BA,EAAGuqE,SAAc,EACb8C,EAAmB3c,KAAU0I,UACxBiU,EAAmB3c,GAC5B,EAEF2c,EAAmB3c,GAAQ0I,EACvBqS,EACFgC,EAAchC,EAAS,CAACzrE,EAAIlS,IAE5BA,GAEJ,EACA,KAAAsgF,CAAM9I,GACJ,OAAOqH,GAAuBrH,EAAQnoD,EAAOugC,EAAOjtD,EACtD,GAEF,OAAOm9E,CACT,CACA,SAASrB,GAAiBnT,GACxB,GAAIiV,GAAYjV,GAGd,OAFAA,EAAQmH,GAAWnH,GACnBA,EAAMh6D,SAAW,KACVg6D,CAEX,CACA,SAASqT,GAAkBrT,GACzB,OAAOiV,GAAYjV,GAGwEA,EAAMh6D,SAAWg6D,EAAMh6D,SAAS,QAAK,EAC5Hg6D,CACN,CACA,SAASwT,GAAmBxT,EAAOwU,GACX,EAAlBxU,EAAMwG,WAAiBxG,EAAMpzD,UAC/B4mE,GAAmBxT,EAAMpzD,UAAU27D,QAASiM,GACjB,IAAlBxU,EAAMwG,WACfxG,EAAMiL,UAAUjqD,WAAawzD,EAAMQ,MAAMhV,EAAMiL,WAC/CjL,EAAMkL,WAAWlqD,WAAawzD,EAAMQ,MAAMhV,EAAMkL,aAEhDlL,EAAMh/C,WAAawzD,CAEvB,CACA,SAASxB,GAAyBhtE,EAAUkvE,GAAc,EAAOC,GAC/D,IAAI1jB,EAAM,GACN2jB,EAAqB,EACzB,IAAK,IAAIjgF,EAAI,EAAGA,EAAI6Q,EAAS9Q,OAAQC,IAAK,CACxC,IAAI8Q,EAAQD,EAAS7Q,GACrB,MAAMa,EAAmB,MAAbm/E,EAAoBlvE,EAAMjQ,IAAM68D,OAAOsiB,GAAatiB,OAAoB,MAAb5sD,EAAMjQ,IAAciQ,EAAMjQ,IAAMb,GACnG8Q,EAAMhG,OAASo1E,IACK,IAAlBpvE,EAAM+hE,WACRoN,IACF3jB,EAAMA,EAAI5rD,OACRmtE,GAAyB/sE,EAAMD,SAAUkvE,EAAal/E,MAE/Ck/E,GAAejvE,EAAMhG,OAAS+mE,KACvCvV,EAAIt4D,KAAY,MAAPnD,EAAcmxE,GAAWlhE,EAAO,CAAEjQ,QAASiQ,EAExD,CACA,GAAImvE,EAAqB,EACvB,IAAK,IAAIjgF,EAAI,EAAGA,EAAIs8D,EAAIv8D,OAAQC,IAC9Bs8D,EAAIt8D,GAAG6yE,WAAa,EAGxB,OAAOvW,CACT;2BAIA,SAAS6jB,GAAgBh+E,EAASi+E,GAChC,OAAO/lB,EAAWl4D,GAGA,KAAO,EAAO,CAAEyB,KAAMzB,EAAQyB,MAAQw8E,EAAc,CAAE1C,MAAOv7E,IAHlD,GAIzBA,CACN,CAEA,MAAMk+E,GAAkBrgF,KAAQA,EAAE8K,KAAKw1E;4BAGvC,SAASC,GAAqBlgF,GACxBg6D,EAAWh6D,KACbA,EAAS,CAAEmgF,OAAQngF,IAErB,MAAM,OACJmgF,EAAM,iBACNC,EAAgB,eAChBC,EAAc,MACd55E,EAAQ,IAAG,QACXi2C,EAAO,YAEPo8B,GAAc,EACdwH,QAASC,GACPvgF,EACJ,IACIwgF,EADAC,EAAiB,KAEjBn/E,EAAU,EACd,MAAMo/E,EAAQ,KACZp/E,IACAm/E,EAAiB,KACV19E,KAEHA,EAAO,KACX,IAAI49E,EACJ,OAAOF,IAAmBE,EAAcF,EAAiBN,IAASjmB,OAAOh3D,IAEvE,GADAA,EAAMA,aAAenB,MAAQmB,EAAM,IAAInB,MAAMs7D,OAAOn6D,IAChDq9E,EACF,OAAO,IAAI7hF,SAAQ,CAACD,EAASE,KAC3B,MAAMiiF,EAAY,IAAMniF,EAAQiiF,KAC1BG,EAAW,IAAMliF,EAAOuE,GAC9Bq9E,EAAYr9E,EAAK09E,EAAWC,EAAUv/E,EAAU,EAAE,IAGpD,MAAM4B,CACR,IACC/D,MAAMuvE,GACHiS,IAAgBF,GAAkBA,EAC7BA,GAOL/R,IAASA,EAAKoS,YAA2C,WAA7BpS,EAAKn3D,OAAOC,gBAC1Ck3D,EAAOA,EAAKyJ,SAKdqI,EAAe9R,EACRA,KACN,EAEL,OAAOoR,GAAgB,CACrBv8E,KAAM,wBACN08E,cAAel9E,EACf,mBAAIg+E,GACF,OAAOP,CACT,EACA,KAAAnD,GACE,MAAMx7E,EAAW+xE,GACjB,GAAI4M,EACF,MAAO,IAAMQ,GAAgBR,EAAc3+E,GAE7C,MAAMy+E,EAAWp9E,IACfu9E,EAAiB,KACjB7U,GACE1oE,EACArB,EACA,IACCw+E,EACF,EAEH,GAAIvH,GAAej3E,EAASmxE,UAAYqH,GACtC,OAAOt3E,IAAO5D,MAAMuvE,GACX,IAAMsS,GAAgBtS,EAAM7sE,KAClCq4D,OAAOh3D,IACRo9E,EAAQp9E,GACD,IAAMm9E,EAAiB9O,GAAY8O,EAAgB,CACxDl9E,MAAOD,IACJ,QAGT,MAAM+9E,EAAS9Y,IAAI,GACbhlE,EAAQglE,KACR+Y,EAAU/Y,KAAM1hE,GA2BtB,OA1BIA,GACFG,YAAW,KACTs6E,EAAQ1iF,OAAQ,CAAK,GACpBiI,GAEU,MAAXi2C,GACF91C,YAAW,KACT,IAAKq6E,EAAOziF,QAAU2E,EAAM3E,MAAO,CACjC,MAAM0E,EAAM,IAAInB,MACd,mCAAmC26C,QAErC4jC,EAAQp9E,GACRC,EAAM3E,MAAQ0E,CAChB,IACCw5C,GAEL35C,IAAO5D,MAAK,KACV8hF,EAAOziF,OAAQ,EACXqD,EAAS0uB,QAAUkvD,GAAY59E,EAAS0uB,OAAOi6C,SACjD3oE,EAAS0uB,OAAO0M,OAAOsiC,OAAQ,EAC/BgO,GAAS1rE,EAAS0uB,OAAO2W,QAC3B,IACCgzB,OAAOh3D,IACRo9E,EAAQp9E,GACRC,EAAM3E,MAAQ0E,CAAG,IAEZ,IACD+9E,EAAOziF,OAASgiF,EACXQ,GAAgBR,EAAc3+E,GAC5BsB,EAAM3E,OAAS6hF,EACjB9O,GAAY8O,EAAgB,CACjCl9E,MAAOA,EAAM3E,QAEN4hF,IAAqBc,EAAQ1iF,MAC/B+yE,GAAY6O,QADd,CAIX,GAEJ,CACA,SAASY,GAAgBtS,EAAMn+C,GAC7B,MAAQ43C,IAAKF,EAAI,MAAE15C,EAAK,SAAE/d,EAAQ,GAAE2wE,GAAO5wD,EAAOi6C,MAC5CA,EAAQ+G,GAAY7C,EAAMngD,EAAO/d,GAIvC,OAHAg6D,EAAMrC,IAAMF,EACZuC,EAAM2W,GAAKA,SACJ5wD,EAAOi6C,MAAM2W,GACb3W,CACT,CAEA,MAAMiV,GAAejV,GAAUA,EAAM//D,KAAK22E,cACpCC,GAAgB,CACpB99E,KAAM,YAIN69E,eAAe,EACf7yD,MAAO,CACL+yD,QAAS,CAACjkB,OAAQt9D,OAAQF,OAC1B0hF,QAAS,CAAClkB,OAAQt9D,OAAQF,OAC1B8c,IAAK,CAAC0gD,OAAQ1uD,SAEhB,KAAA0uE,CAAM9uD,GAAO,MAAEoiD,IACb,MAAM9uE,EAAWy7E,KACXkE,EAAgB3/E,EAASkuE,IAC/B,IAAKyR,EAAcC,SACjB,MAAO,KACL,MAAMjxE,EAAWmgE,EAAMwH,SAAWxH,EAAMwH,UACxC,OAAO3nE,GAAgC,IAApBA,EAAS9Q,OAAe8Q,EAAS,GAAKA,CAAQ,EAGrE,MAAMwnC,EAAwB,IAAI/uC,IAC5BrJ,EAAuB,IAAIiF,IACjC,IAAIqwC,EAAU,KAId,MAAMw/B,EAAiB7yE,EAASmxE,UAE9ByO,UACEn9E,EAAGgxE,EACH5wE,EAAGkrC,EACHgmC,GAAI8L,EACJ/5D,GAAG,cAAEziB,KAELs8E,EACEG,EAAmBz8E,EAAc,OA8CvC,SAAS2wE,EAAQrL,GACfoX,GAAepX,GACfkX,EAASlX,EAAO3oE,EAAU6yE,GAAgB,EAC5C,CACA,SAASmN,EAAWpyE,GAClBuoC,EAAM9zC,SAAQ,CAACsmE,EAAOhqE,KACpB,MAAM+C,EAAOuwE,GAAiBtJ,EAAM//D,OAChClH,GAAUkM,GAAWA,EAAOlM,IAC9Bu+E,EAAgBthF,EAClB,GAEJ,CACA,SAASshF,EAAgBthF,GACvB,MAAMquE,EAAS72B,EAAMpvC,IAAIpI,GACpB00C,GAAYghC,GAAgBrH,EAAQ35B,GAE9BA,GACT0sC,GAAe1sC,GAFf2gC,EAAQhH,GAIV72B,EAAMzuC,OAAO/I,GACbZ,EAAK2J,OAAO/I,EACd,CAlEAghF,EAAcnsE,SAAW,CAACm1D,EAAO+J,EAAWC,EAAQhoE,EAAW2lE,KAC7D,MAAM4P,EAAYvX,EAAMpzD,UACxBw4B,EAAK46B,EAAO+J,EAAWC,EAAQ,EAAGE,GAClCY,EACEyM,EAAUvX,MACVA,EACA+J,EACAC,EACAuN,EACArN,EACAloE,EACAg+D,EAAMmK,aACNxC,GAEFqI,IAAsB,KACpBuH,EAAUC,eAAgB,EACtBD,EAAUxiF,GACZu7D,EAAeinB,EAAUxiF,GAE3B,MAAM0iF,EAAYzX,EAAMj8C,OAASi8C,EAAMj8C,MAAM2zD,eACzCD,GACFE,GAAgBF,EAAWF,EAAUxxD,OAAQi6C,EAC/C,GACCkK,EACsE,EAI3E8M,EAAc9sE,WAAc81D,IAC1B,MAAMuX,EAAYvX,EAAMpzD,UACxBw4B,EAAK46B,EAAOmX,EAAkB,KAAM,EAAGjN,GACvC8F,IAAsB,KAChBuH,EAAUK,IACZtnB,EAAeinB,EAAUK,IAE3B,MAAMH,EAAYzX,EAAMj8C,OAASi8C,EAAMj8C,MAAM8zD,iBACzCJ,GACFE,GAAgBF,EAAWF,EAAUxxD,OAAQi6C,GAE/CuX,EAAUC,eAAgB,CAAI,GAC7BtN,EACsE,EA0B3E8E,IACE,IAAM,CAACjrD,EAAM+yD,QAAS/yD,EAAMgzD,WAC5B,EAAED,EAASC,MACTD,GAAWO,GAAYt+E,GAASmN,GAAQ4wE,EAAS/9E,KACjDg+E,GAAWM,GAAYt+E,IAAUmN,GAAQ6wE,EAASh+E,IAAM,GAG1D,CAAE81E,MAAO,OAAQK,MAAM,IAEzB,IAAI4I,EAAkB,KACtB,MAAMC,EAAe,KACI,MAAnBD,GACFtqC,EAAM7yC,IAAIm9E,EAAiBE,GAAc3gF,EAASkxE,SACpD,EAiBF,OAfAmJ,GAAUqG,GACVE,GAAUF,GACVpG,IAAgB,KACdnkC,EAAM9zC,SAAS2qE,IACb,MAAM,QAAEkE,EAAO,SAAEC,GAAanxE,EACxB2oE,EAAQgY,GAAczP,GAC5B,GAAIlE,EAAOpkE,OAAS+/D,EAAM//D,MAAQokE,EAAOruE,MAAQgqE,EAAMhqE,IAMvDq1E,EAAQhH,OANR,CACE+S,GAAepX,GACf,MAAM4X,EAAK5X,EAAMpzD,UAAUgrE,GAC3BA,GAAM5H,GAAsB4H,EAAIpP,EAElC,CACe,GACf,IAEG,KAEL,GADAsP,EAAkB,MACb3R,EAAMwH,QACT,OAAO,KAET,MAAM3nE,EAAWmgE,EAAMwH,UACjBuK,EAAWlyE,EAAS,GAC1B,GAAIA,EAAS9Q,OAAS,EAKpB,OADAw1C,EAAU,KACH1kC,EACF,IAAKuhE,GAAQ2Q,MAAoC,EAArBA,EAAS1R,cAAyC,IAArB0R,EAAS1R,WAEvE,OADA97B,EAAU,KACHwtC,EAET,IAAIlY,EAAQgY,GAAcE,GAC1B,MAAMhU,EAAOlE,EAAM//D,KACblH,EAAOuwE,GACXkM,GAAexV,GAASA,EAAM//D,KAAKs2E,iBAAmB,CAAC,EAAIrS,IAEvD,QAAE4S,EAAO,QAAEC,EAAO,IAAE5kE,GAAQ4R,EAClC,GAAI+yD,KAAa/9E,IAASmN,GAAQ4wE,EAAS/9E,KAAUg+E,GAAWh+E,GAAQmN,GAAQ6wE,EAASh+E,GAEvF,OADA2xC,EAAUs1B,EACHkY,EAET,MAAMliF,EAAmB,MAAbgqE,EAAMhqE,IAAckuE,EAAOlE,EAAMhqE,IACvCmiF,EAAc3qC,EAAMpvC,IAAIpI,GAyB9B,OAxBIgqE,EAAMp5D,KACRo5D,EAAQmH,GAAWnH,GACM,IAArBkY,EAAS1R,YACX0R,EAASjN,UAAYjL,IAGzB8X,EAAkB9hF,EACdmiF,GACFnY,EAAMp5D,GAAKuxE,EAAYvxE,GACvBo5D,EAAMpzD,UAAYurE,EAAYvrE,UAC1BozD,EAAMh/C,YACRwyD,GAAmBxT,EAAOA,EAAMh/C,YAElCg/C,EAAMwG,WAAa,IACnBpxE,EAAK2J,OAAO/I,GACZZ,EAAKkG,IAAItF,KAETZ,EAAKkG,IAAItF,GACLmc,GAAO/c,EAAKyJ,KAAO6vB,SAASvc,EAAK,KACnCmlE,EAAgBliF,EAAKyL,SAASvM,OAAON,QAGzCgsE,EAAMwG,WAAa,IACnB97B,EAAUs1B,EACHwJ,GAAW0O,EAASj4E,MAAQi4E,EAAWlY,CAAK,CAEvD,GAEIoY,GAAYvB,GAClB,SAAS3wE,GAAQkU,EAASrhB,GACxB,OAAI,EAAQqhB,GACHA,EAAQ6sD,MAAMntE,GAAMoM,GAAQpM,EAAGf,KAC7B,EAASqhB,GACXA,EAAQ5U,MAAM,KAAKpD,SAASrJ,KAC1Bw2D,EAASn1C,IACXA,EAAQ7M,KAAKxU,EAGxB,CACA,SAASs/E,GAAYnH,EAAM5wE,GACzBg4E,GAAsBpH,EAAM,IAAK5wE,EACnC,CACA,SAASi4E,GAAcrH,EAAM5wE,GAC3Bg4E,GAAsBpH,EAAM,KAAM5wE,EACpC,CACA,SAASg4E,GAAsBpH,EAAMjxE,EAAMK,EAAS8oE,IAClD,MAAMoP,EAActH,EAAKuH,QAAUvH,EAAKuH,MAAQ,KAC9C,IAAI/tC,EAAUpqC,EACd,MAAOoqC,EAAS,CACd,GAAIA,EAAQ8sC,cACV,OAEF9sC,EAAUA,EAAQ3kB,MACpB,CACA,OAAOmrD,GAAM,GAGf,GADAwH,GAAWz4E,EAAMu4E,EAAal4E,GAC1BA,EAAQ,CACV,IAAIoqC,EAAUpqC,EAAOylB,OACrB,MAAO2kB,GAAWA,EAAQ3kB,OACpBkvD,GAAYvqC,EAAQ3kB,OAAOi6C,QAC7B2Y,GAAsBH,EAAav4E,EAAMK,EAAQoqC,GAEnDA,EAAUA,EAAQ3kB,MAEtB,CACF,CACA,SAAS4yD,GAAsBzH,EAAMjxE,EAAMK,EAAQs4E,GACjD,MAAMC,EAAWH,GACfz4E,EACAixE,EACA0H,GACA,GAGFE,IAAY,KACVxgF,EAAOsgF,EAAc34E,GAAO44E,EAAS,GACpCv4E,EACL,CACA,SAAS82E,GAAepX,GACtBA,EAAMwG,YAAa,IACnBxG,EAAMwG,YAAa,GACrB,CACA,SAASwR,GAAchY,GACrB,OAAyB,IAAlBA,EAAMwG,UAAkBxG,EAAMiL,UAAYjL,CACnD,CAEA,SAAS0Y,GAAWz4E,EAAMixE,EAAM5wE,EAAS8oE,GAAiBvkD,GAAU,GAClE,GAAIvkB,EAAQ,CACV,MAAMk0E,EAAQl0E,EAAOL,KAAUK,EAAOL,GAAQ,IACxCu4E,EAActH,EAAK6H,QAAU7H,EAAK6H,MAAQ,IAAIj2E,KAClD,GAAIxC,EAAOsjE,YACT,OAEF5O,KACAob,GAAmB9vE,GACnB,MAAM2e,EAAMoiD,GAA2B6P,EAAM5wE,EAAQL,EAAM6C,GAG3D,OAFAutE,KACAjb,KACOn2C,CAAG,GAOZ,OALI4F,EACF2vD,EAAM7yD,QAAQ62D,GAEdhE,EAAMr7E,KAAKq/E,GAENA,CACT,CAMF,CACA,MAAMQ,GAAcC,GAAc,CAAC/H,EAAM5wE,EAAS8oE,OAE9CyG,IAAuC,OAAdoJ,IAAuBP,GAAWO,GAAW,IAAIn2E,IAASouE,KAAQpuE,IAAOxC,GAEhG44E,GAAgBF,GAAW,MAC3BtH,GAAYsH,GAAW,KACvBG,GAAiBH,GAAW,MAC5Bf,GAAYe,GAAW,KACvBrH,GAAkBqH,GAAW,OAC7BF,GAAcE,GAAW,MACzBI,GAAmBJ,GAAW,MAC9BK,GAAoBL,GACxB,OAEIM,GAAkBN,GACtB,OAEF,SAASO,GAAgBrI,EAAM5wE,EAAS8oE,IACtCsP,GAAW,KAAMxH,EAAM5wE,EACzB,CAEA,SAASk5E,GAAWhkF,EAAQikF,EAAYjsC,EAAOv7B,GAC7C,IAAIw/C,EACJ,MAAM4S,EAAS72B,GAASA,EAAMv7B,GAC9B,GAAI,EAAQzc,IAAW,EAASA,GAAS,CACvCi8D,EAAM,IAAIp8D,MAAMG,EAAON,QACvB,IAAK,IAAIC,EAAI,EAAG6E,EAAIxE,EAAON,OAAQC,EAAI6E,EAAG7E,IACxCs8D,EAAIt8D,GAAKskF,EAAWjkF,EAAOL,GAAIA,OAAG,EAAQkvE,GAAUA,EAAOlvE,GAE/D,MAAO,GAAsB,kBAAXK,EAAqB,CACjC,EAGJi8D,EAAM,IAAIp8D,MAAMG,GAChB,IAAK,IAAIL,EAAI,EAAGA,EAAIK,EAAQL,IAC1Bs8D,EAAIt8D,GAAKskF,EAAWtkF,EAAI,EAAGA,OAAG,EAAQkvE,GAAUA,EAAOlvE,GAE3D,MAAO,GAAI,EAASK,GAClB,GAAIA,EAAOuX,OAAOytD,UAChB/I,EAAMp8D,MAAMyJ,KACVtJ,GACA,CAACkyC,EAAMvyC,IAAMskF,EAAW/xC,EAAMvyC,OAAG,EAAQkvE,GAAUA,EAAOlvE,UAEvD,CACL,MAAMC,EAAOO,OAAOP,KAAKI,GACzBi8D,EAAM,IAAIp8D,MAAMD,EAAKF,QACrB,IAAK,IAAIC,EAAI,EAAG6E,EAAI5E,EAAKF,OAAQC,EAAI6E,EAAG7E,IAAK,CAC3C,MAAMa,EAAMZ,EAAKD,GACjBs8D,EAAIt8D,GAAKskF,EAAWjkF,EAAOQ,GAAMA,EAAKb,EAAGkvE,GAAUA,EAAOlvE,GAC5D,CACF,MAEAs8D,EAAM,GAKR,OAHIjkB,IACFA,EAAMv7B,GAASw/C,GAEVA,CACT,CAEA,SAASioB,GAAYvT,EAAOwT,GAC1B,IAAK,IAAIxkF,EAAI,EAAGA,EAAIwkF,EAAazkF,OAAQC,IAAK,CAC5C,MAAMykF,EAAOD,EAAaxkF,GAC1B,GAAI,EAAQykF,GACV,IAAK,IAAI73D,EAAI,EAAGA,EAAI63D,EAAK1kF,OAAQ6sB,IAC/BokD,EAAMyT,EAAK73D,GAAGhpB,MAAQ6gF,EAAK73D,GAAG7oB,QAEvB0gF,IACTzT,EAAMyT,EAAK7gF,MAAQ6gF,EAAK5jF,IAAM,IAAI8M,KAChC,MAAMmc,EAAM26D,EAAK1gF,MAAM4J,GAGvB,OAFImc,IACFA,EAAIjpB,IAAM4jF,EAAK5jF,KACVipB,CAAG,EACR26D,EAAK1gF,GAEb,CACA,OAAOitE,CACT,CAEA,SAAS0T,GAAW1T,EAAOptE,EAAMgrB,EAAQ,CAAC,EAAG6nD,EAAUkO,GACrD,GAAIhV,GAAyBiV,MAAQjV,GAAyB/+C,QAAUyvD,GAAe1Q,GAAyB/+C,SAAW++C,GAAyB/+C,OAAOg0D,KAGzJ,MAFa,YAAThhF,IACFgrB,EAAMhrB,KAAOA,GACRguE,GAAY,OAAQhjD,EAAO6nD,GAAYA,KAEhD,IAAIgO,EAAOzT,EAAMptE,GAOb6gF,GAAQA,EAAK9T,KACf8T,EAAKjU,IAAK,GAEZoI,KACA,MAAMiM,EAAmBJ,GAAQK,GAAiBL,EAAK71D,IACjDm2D,EAAWC,GACf9E,GACA,CACEr/E,IAAK+tB,EAAM/tB,KAEXgkF,GAAoBA,EAAiBhkF,KAAO,IAAI+C,KAElDihF,IAAqBpO,EAAWA,IAAa,IAC7CoO,GAAgC,IAAZ7T,EAAMnzC,EAAU,IAAM,GAQ5C,OANK8mD,GAAaI,EAASE,UACzBF,EAAS/P,aAAe,CAAC+P,EAASE,QAAU,OAE1CR,GAAQA,EAAK9T,KACf8T,EAAKjU,IAAK,GAELuU,CACT,CACA,SAASD,GAAiBI,GACxB,OAAOA,EAAOpT,MAAMhhE,IACbshE,GAAQthE,IAETA,EAAMhG,OAAS+mE,MAEf/gE,EAAMhG,OAASo1E,KAAa4E,GAAiBh0E,EAAMD,aAGpDq0E,EAAS,IAChB,CAEA,SAASC,GAAWz2E,EAAK02E,GACvB,MAAM9oB,EAAM,CAAC,EAKb,IAAK,MAAMz7D,KAAO6N,EAChB4tD,EAAI8oB,GAA2B,QAAQhtE,KAAKvX,GAAO,MAAMA,IAAQm6D,EAAan6D,IAAQ6N,EAAI7N,GAE5F,OAAOy7D,CACT,CAEA,MAAM+oB,GAAqBrlF,GACpBA,EAEDslF,GAAoBtlF,GACfw7E,GAAex7E,IAAMA,EAAEonE,MACzBie,GAAkBrlF,EAAE4wB,QAHlB,KAKL20D,GAGY,EAAuB/kF,OAAOqnB,OAAO,MAAO,CAC1Dja,EAAI5N,GAAMA,EACV+3B,IAAM/3B,GAAMA,EAAE6qE,MAAMp5D,GACpB+zE,MAAQxlF,GAAMA,EAAEuJ,KAChBk8E,OAASzlF,GAA6EA,EAAE4uB,MACxF82D,OAAS1lF,GAA6EA,EAAEyrB,MACxFk6D,OAAS3lF,GAA6EA,EAAEgxE,MACxF4U,MAAQ5lF,GAA4EA,EAAE6lF,KACtFC,QAAU9lF,GAAMqlF,GAAkBrlF,EAAE4wB,QACpCm1D,MAAQ/lF,GAAMqlF,GAAkBrlF,EAAEob,MAClC4qE,MAAQhmF,GAAMA,EAAE42B,KAChBqvD,SAAWjmF,GAA4BkmF,GAAqBlmF,GAC5DmmF,aAAenmF,GAAMA,EAAEqF,IAAMrF,EAAEqF,EAAI,KACjCrF,EAAEs9B,OAAOsiC,OAAQ,EACjBgO,GAAS5tE,EAAEunC,OAAO,GAEpB6+C,UAAYpmF,GAAMA,EAAEsF,IAAMtF,EAAEsF,EAAIwrB,GAASlI,KAAK5oB,EAAEonE,QAChDif,OAASrmF,GAA4B86E,GAAclyD,KAAK5oB,KAItDsmF,GAAkB,CAACn3B,EAAOtuD,IAAQsuD,IAAUyK,IAAczK,EAAMo3B,iBAAmB,EAAOp3B,EAAOtuD,GACjG2lF,GAA8B,CAClC,GAAAv9E,EAAM40B,EAAG37B,GAAYrB,GACnB,MAAM,IAAEuvE,EAAG,WAAEc,EAAU,KAAE3nE,EAAI,MAAEqlB,EAAK,YAAE63D,EAAW,KAAE37E,EAAI,WAAE0/D,GAAetoE,EAIxE,IAAIwkF,EACJ,GAAe,MAAX7lF,EAAI,GAAY,CAClB,MAAMyE,EAAImhF,EAAY5lF,GACtB,QAAU,IAANyE,EACF,OAAQA,GACN,KAAK,EACH,OAAO4rE,EAAWrwE,GACpB,KAAK,EACH,OAAO0I,EAAK1I,GACd,KAAK,EACH,OAAOuvE,EAAIvvE,GACb,KAAK,EACH,OAAO+tB,EAAM/tB,OAEZ,IAAIylF,GAAgBpV,EAAYrwE,GAErC,OADA4lF,EAAY5lF,GAAO,EACZqwE,EAAWrwE,GACb,GAAI0I,IAASqwD,GAAa,EAAOrwD,EAAM1I,GAE5C,OADA4lF,EAAY5lF,GAAO,EACZ0I,EAAK1I,GACP,IAGJ6lF,EAAkBxkF,EAAS6uE,aAAa,KAAO,EAAO2V,EAAiB7lF,GAGxE,OADA4lF,EAAY5lF,GAAO,EACZ+tB,EAAM/tB,GACR,GAAIuvE,IAAQxW,GAAa,EAAOwW,EAAKvvE,GAE1C,OADA4lF,EAAY5lF,GAAO,EACZuvE,EAAIvvE,GACsB8lF,KACjCF,EAAY5lF,GAAO,EACrB,CACF,CACA,MAAM+lF,EAAerB,GAAoB1kF,GACzC,IAAIgmF,EAAWC,EACf,OAAIF,GACU,WAAR/lF,GACF,GAAMqB,EAAU,MAAOrB,GAKlB+lF,EAAa1kF,KAGnB2kF,EAAY/7E,EAAKi8E,gBAAkBF,EAAYA,EAAUhmF,IAEnDgmF,EACEzW,IAAQxW,GAAa,EAAOwW,EAAKvvE,IAC1C4lF,EAAY5lF,GAAO,EACZuvE,EAAIvvE,KAGXimF,EAAmBtc,EAAW1iE,OAAOg/E,iBAAkB,EAAOA,EAAkBjmF,GAGvEimF,EAAiBjmF,QALrB,EAsBT,EACA,GAAA2E,EAAMq4B,EAAG37B,GAAYrB,EAAKhC,GACxB,MAAM,KAAE0K,EAAI,WAAE2nE,EAAU,IAAEd,GAAQluE,EAClC,OAAIokF,GAAgBpV,EAAYrwE,IAC9BqwE,EAAWrwE,GAAOhC,GACX,GAIE0K,IAASqwD,GAAa,EAAOrwD,EAAM1I,IAC5C0I,EAAK1I,GAAOhC,GACL,IACE,EAAOqD,EAAS0sB,MAAO/tB,MAInB,MAAXA,EAAI,MAAcA,EAAI2M,MAAM,KAAMtL,MAalCkuE,EAAIvvE,GAAOhC,GAGR,GACT,EACA,GAAA2K,EACEq0B,GAAG,KAAEt0B,EAAI,WAAE2nE,EAAU,YAAEuV,EAAW,IAAErW,EAAG,WAAE5F,EAAU,aAAEuG,IACpDlwE,GACD,IAAI6lF,EACJ,QAASD,EAAY5lF,IAAQ0I,IAASqwD,GAAa,EAAOrwD,EAAM1I,IAAQylF,GAAgBpV,EAAYrwE,KAAS6lF,EAAkB3V,EAAa,KAAO,EAAO2V,EAAiB7lF,IAAQ,EAAOuvE,EAAKvvE,IAAQ,EAAO0kF,GAAqB1kF,IAAQ,EAAO2pE,EAAW1iE,OAAOg/E,iBAAkBjmF,EACxR,EACA,cAAAgO,CAAe1D,EAAQtK,EAAKmzC,GAM1B,OALsB,MAAlBA,EAAW/qC,IACbkC,EAAO0yB,EAAE4oD,YAAY5lF,GAAO,EACnB,EAAOmzC,EAAY,UAC5BlyC,KAAK0D,IAAI2F,EAAQtK,EAAKmzC,EAAWn1C,MAAO,MAEnCwpB,QAAQxZ,eAAe1D,EAAQtK,EAAKmzC,EAC7C,GAUF,MAAMgzC,GAA6D,EACjE,CAAC,EACDR,GACA,CACE,GAAAv9E,CAAIkC,EAAQtK,GACV,GAAIA,IAAQ+W,OAAOqvE,YAGnB,OAAOT,GAA4Bv9E,IAAIkC,EAAQtK,EAAKsK,EACtD,EACA,GAAA3B,CAAIq0B,EAAGh9B,GACL,MAAM2I,EAAiB,MAAX3I,EAAI,KAAek7D,EAAkBl7D,GAQjD,OAAO2I,CACT,IA+DJ,SAAS09E,KAIP,OAAO,IACT,CACA,SAASC,KAIP,OAAO,IACT,CACA,SAASC,GAAaC,GAChB,CAGN,CACA,SAASC,GAAcnlF,GACjB,CAGN,CACA,SAASolF,KAIP,OAAO,IACT,CACA,SAASC,KACH,CAGN,CACA,SAASC,GAAa74D,EAAOmmB,GAI3B,OAAO,IACT,CACA,SAAS2yC,KACP,OAAOC,KAAa3W,KACtB,CACA,SAAS4W,KACP,OAAOD,KAAal8D,KACtB,CACA,SAASo8D,GAASj5D,EAAOhrB,EAAMzB,EAAUy3D,GACvC,MAAM55D,EAAI29E,KASV,MAAMmK,EAAgBhtB,EAASl3D,GACzBkmB,EAAM2/C,IAAU,CAACse,EAAOr6E,KAC5B,IAAIs6E,EAQJ,OAPArO,IAAgB,KACd,MAAMsO,EAAYr5D,EAAMhrB,GACpBq3D,EAAW+sB,EAAYC,KACzBD,EAAaC,EACbv6E,IACF,IAEK,CACL,GAAAzE,GAEE,OADA8+E,IACO5lF,EAAQ8G,IAAM9G,EAAQ8G,IAAI++E,GAAcA,CACjD,EACA,GAAAxiF,CAAI3G,GACF,MAAMk/E,EAAW/9E,EAAE6qE,MAAMj8C,MACnBmvD,IACLn6E,KAAQm6E,GAAY+J,KAAiB/J,KAAc,YAAYn6E,MAAUm6E,GAAY,YAAY+J,MAAmB/J,KAAc9iB,EAAWp8D,EAAOmpF,KACnJA,EAAanpF,EACb6O,KAEF1N,EAAE42B,KAAK,UAAUhzB,IAAQzB,EAAQqD,IAAMrD,EAAQqD,IAAI3G,GAASA,EAC9D,EACD,IAEGqpF,EAAuB,eAATtkF,EAAwB,iBAAmB,GAAGA,aAalE,OAZAkmB,EAAIlS,OAAOytD,UAAY,KACrB,IAAI8iB,EAAK,EACT,MAAO,CACL,IAAAhpF,GACE,OAAIgpF,EAAK,EACA,CAAEtpF,MAAOspF,IAAOv5D,EAAMs5D,IAAgB,CAAC,EAAIp+D,EAAKvqB,MAAM,GAEtD,CAAEA,MAAM,EAEnB,EACD,EAEIuqB,CACT,CACA,SAAS69D,KACP,MAAM3nF,EAAI29E,KAIV,OAAO39E,EAAEooF,eAAiBpoF,EAAEooF,aAAeC,GAAmBroF,GAChE,CACA,SAASsoF,GAAsB15D,GAC7B,OAAO,EAAQA,GAASA,EAAMovC,QAC5B,CAAChC,EAAYr3D,KAAOq3D,EAAWr3D,GAAK,KAAMq3D,IAC1C,CAAC,GACCptC,CACN,CACA,SAAS25D,GAAc/qC,EAAKzI,GAC1B,MAAMnmB,EAAQ05D,GAAsB9qC,GACpC,IAAK,MAAM38C,KAAOk0C,EAAU,CAC1B,GAAIl0C,EAAIyM,WAAW,UACjB,SACF,IAAIk7E,EAAM55D,EAAM/tB,GACZ2nF,EACE,EAAQA,IAAQnuB,EAAWmuB,GAC7BA,EAAM55D,EAAM/tB,GAAO,CAAEiK,KAAM09E,EAAKhQ,QAASzjC,EAASl0C,IAElD2nF,EAAIhQ,QAAUzjC,EAASl0C,GAER,OAAR2nF,IACTA,EAAM55D,EAAM/tB,GAAO,CAAE23E,QAASzjC,EAASl0C,KAIrC2nF,GAAOzzC,EAAS,UAAUl0C,OAC5B2nF,EAAIC,aAAc,EAEtB,CACA,OAAO75D,CACT,CACA,SAAS85D,GAAY9oF,EAAGC,GACtB,OAAKD,GAAMC,EAEP,EAAQD,IAAM,EAAQC,GACjBD,EAAE8Q,OAAO7Q,GACX,EAAO,CAAC,EAAGyoF,GAAsB1oF,GAAI0oF,GAAsBzoF,IAHzDD,GAAKC,CAIhB,CACA,SAAS8oF,GAAqB/5D,EAAOg6D,GACnC,MAAMtsB,EAAM,CAAC,EACb,IAAK,MAAMz7D,KAAO+tB,EACXg6D,EAAa37E,SAASpM,IACzBL,OAAOqO,eAAeytD,EAAKz7D,EAAK,CAC9BqoB,YAAY,EACZjgB,IAAK,IAAM2lB,EAAM/tB,KAIvB,OAAOy7D,CACT,CACA,SAASusB,GAAiBC,GACxB,MAAM1Y,EAAMuN,KAMZ,IAAIoL,EAAYD,IAQhB,OAPA5N,KACI5gB,EAAUyuB,KACZA,EAAYA,EAAUxuB,OAAOn7D,IAE3B,MADA67E,GAAmB7K,GACbhxE,CAAC,KAGJ,CAAC2pF,EAAW,IAAM9N,GAAmB7K,GAC9C,CAYA,IAAIuW,IAAoB,EACxB,SAASqC,GAAa9mF,GACpB,MAAMC,EAAU+jF,GAAqBhkF,GAC/B64E,EAAa74E,EAASklE,MACtBgJ,EAAMluE,EAASkuE,IACrBuW,IAAoB,EAChBxkF,EAAQ8mF,cACVhK,GAAS98E,EAAQ8mF,aAAc/mF,EAAU,MAE3C,MAEEqH,KAAM2/E,EACNnpB,SAAUopB,EAAe,QACzBC,EACAvP,MAAOwP,EACPC,QAASC,EACTjQ,OAAQkQ,EAAa,QAErBC,EAAO,YACPC,EAAW,QACXvzC,EAAO,aACPwzC,EAAY,QACZhO,EAAO,UACPiO,EAAS,YACTC,EAAW,cACXj1B,EAAa,cACbk1B,EAAa,UACb9zD,EAAS,UACT+zD,EAAS,OACT7oC,EAAM,cACN8oC,EAAa,gBACbC,EAAe,cACfC,EAAa,eACbC,EAAc,OAEdC,EAAM,aACNjZ,EAAY,WAEZkZ,EAAU,WACV/O,EAAU,QACVgP,GACEnoF,EACEooF,EAAkG,KAYxG,GAHIf,GACFgB,GAAkBhB,EAAepZ,EAAKma,GAEpCnB,EACF,IAAK,MAAMvoF,KAAOuoF,EAAS,CACzB,MAAMqB,EAAgBrB,EAAQvoF,GAC1Bw5D,EAAWowB,KASXra,EAAIvvE,GAAO4pF,EAAc7hE,KAAKmyD,GAUpC,CAEF,GAAImO,EAAa,CACX,EAKJ,MAAM3/E,EAAO2/E,EAAYtoF,KAAKm6E,EAAYA,GACtC,EAKC,EAASxxE,KAGZrH,EAASqH,KAAOg6D,GAASh6D,GAe7B,CAEA,GADAo9E,IAAoB,EAChBwC,EACF,IAAK,MAAMtoF,KAAOsoF,EAAiB,CACjC,MAAMX,EAAMW,EAAgBtoF,GACtBoI,EAAMoxD,EAAWmuB,GAAOA,EAAI5/D,KAAKmyD,EAAYA,GAAc1gB,EAAWmuB,EAAIv/E,KAAOu/E,EAAIv/E,IAAI2f,KAAKmyD,EAAYA,GAAc,EAC1H,EAGJ,MAAMv1E,GAAO60D,EAAWmuB,IAAQnuB,EAAWmuB,EAAIhjF,KAAOgjF,EAAIhjF,IAAIojB,KAAKmyD,GAI/D,EACEn2E,EAAI,GAAS,CACjBqE,MACAzD,QAEFhF,OAAOqO,eAAeuhE,EAAKvvE,EAAK,CAC9BqoB,YAAY,EACZpa,cAAc,EACd7F,IAAK,IAAMrE,EAAE/F,MACb2G,IAAMlB,GAAMM,EAAE/F,MAAQyF,GAK1B,CAEF,GAAI+kF,EACF,IAAK,MAAMxoF,KAAOwoF,EAChBqB,GAAcrB,EAAaxoF,GAAMuvE,EAAK2K,EAAYl6E,GAGtD,GAAI0oF,EAAgB,CAClB,MAAMoB,EAAWtwB,EAAWkvB,GAAkBA,EAAe3oF,KAAKm6E,GAAcwO,EAChFlhE,QAAQy7C,QAAQ6mB,GAAUpmF,SAAS1D,IACjCyoF,GAAQzoF,EAAK8pF,EAAS9pF,GAAK,GAE/B,CAIA,SAAS+pF,EAAsBC,EAAU9O,GACnC,EAAQA,GACVA,EAAKx3E,SAASumF,GAAUD,EAASC,EAAMliE,KAAKmyD,MACnCgB,GACT8O,EAAS9O,EAAKnzD,KAAKmyD,GAEvB,CAaA,GAtBI0O,GACFxK,GAASwK,EAASvnF,EAAU,KAS9B0oF,EAAsB7G,GAAe2F,GACrCkB,EAAsBrO,GAAWpmC,GACjCy0C,EAAsB5G,GAAgB2F,GACtCiB,EAAsB9H,GAAWnH,GACjCiP,EAAsB1H,GAAa0G,GACnCgB,EAAsBxH,GAAeyG,GACrCe,EAAsBxG,GAAiB8F,GACvCU,EAAsBzG,GAAiB6F,GACvCY,EAAsB1G,GAAmB+F,GACzCW,EAAsBpO,GAAiBsN,GACvCc,EAAsBjH,GAAaoG,GACnCa,EAAsB3G,GAAkBkG,GACpC,EAAQC,GACV,GAAIA,EAAOrqF,OAAQ,CACjB,MAAMsnF,EAAUnlF,EAASmlF,UAAYnlF,EAASmlF,QAAU,CAAC,GACzD+C,EAAO7lF,SAAS1D,IACdL,OAAOqO,eAAew4E,EAASxmF,EAAK,CAClCoI,IAAK,IAAM8xE,EAAWl6E,GACtB2E,IAAM8/B,GAAQy1C,EAAWl6E,GAAOykC,GAChC,GAEN,MAAYpjC,EAASmlF,UACnBnlF,EAASmlF,QAAU,CAAC,GAGpBnmC,GAAUh/C,EAASg/C,SAAW,IAChCh/C,EAASg/C,OAASA,GAEA,MAAhBiwB,IACFjvE,EAASivE,aAAeA,GAEtBkZ,IACFnoF,EAASmoF,WAAaA,GACpB/O,IACFp5E,EAASo5E,WAAaA,EAC1B,CACA,SAASkP,GAAkBhB,EAAepZ,EAAKma,EAA2B,GACpE,EAAQf,KACVA,EAAgBuB,GAAgBvB,IAElC,IAAK,MAAM3oF,KAAO2oF,EAAe,CAC/B,MAAMhB,EAAMgB,EAAc3oF,GAC1B,IAAI6iF,EAGAA,EAFA,EAAS8E,GACP,YAAaA,EACJlP,GACTkP,EAAI7+E,MAAQ9I,EACZ2nF,EAAIhQ,SACJ,GAGSc,GAAOkP,EAAI7+E,MAAQ9I,GAGrBy4E,GAAOkP,GAEhBnlB,GAAMqgB,GACRljF,OAAOqO,eAAeuhE,EAAKvvE,EAAK,CAC9BqoB,YAAY,EACZpa,cAAc,EACd7F,IAAK,IAAMy6E,EAAS7kF,MACpB2G,IAAMlB,GAAMo/E,EAAS7kF,MAAQyF,IAG/B8rE,EAAIvvE,GAAO6iF,CAKf,CACF,CACA,SAASzE,GAASlD,EAAM75E,EAAU4I,GAChCohE,GACE,EAAQ6P,GAAQA,EAAK11E,KAAK5B,GAAMA,EAAEmkB,KAAK1mB,EAASklE,SAAU2U,EAAKnzD,KAAK1mB,EAASklE,OAC7EllE,EACA4I,EAEJ,CACA,SAAS4/E,GAAcltC,EAAK4yB,EAAK2K,EAAYl6E,GAC3C,MAAM4mE,EAAS5mE,EAAIoM,SAAS,KAAO+tE,GAAiBD,EAAYl6E,GAAO,IAAMk6E,EAAWl6E,GACxF,GAAI,EAAS28C,GAAM,CACjB,MAAM9yC,EAAU0lE,EAAI5yB,GAChB6c,EAAW3vD,IACbmvE,GAAMpS,EAAQ/8D,EAIlB,MAAO,GAAI2vD,EAAW7c,GACpBq8B,GAAMpS,EAAQjqB,EAAI50B,KAAKmyD,SAClB,GAAI,EAASv9B,GAClB,GAAI,EAAQA,GACVA,EAAIj5C,SAASU,GAAMylF,GAAczlF,EAAGmrE,EAAK2K,EAAYl6E,SAChD,CACL,MAAM6J,EAAU2vD,EAAW7c,EAAI9yC,SAAW8yC,EAAI9yC,QAAQke,KAAKmyD,GAAc3K,EAAI5yB,EAAI9yC,SAC7E2vD,EAAW3vD,IACbmvE,GAAMpS,EAAQ/8D,EAAS8yC,EAI3B,MACS,CAGb,CACA,SAAS0oC,GAAqBhkF,GAC5B,MAAMimC,EAAOjmC,EAAS4I,MAChB,OAAE0kE,EAAQC,QAASub,GAAmB7iD,GAE1CqnC,OAAQyb,EACRC,aAAc7yC,EACdvwC,QAAQ,sBAAEqjF,IACRjpF,EAASsoE,WACP0E,EAAS72B,EAAMpvC,IAAIk/B,GACzB,IAAIijD,EAmBJ,OAlBIlc,EACFkc,EAAWlc,EACD+b,EAAalrF,QAAWyvE,GAAWwb,GAK7CI,EAAW,CAAC,EACRH,EAAalrF,QACfkrF,EAAa1mF,SACVQ,GAAMsmF,GAAaD,EAAUrmF,EAAGomF,GAAuB,KAG5DE,GAAaD,EAAUjjD,EAAMgjD,IAT3BC,EAAWjjD,EAWX,EAASA,IACXkQ,EAAM7yC,IAAI2iC,EAAMijD,GAEXA,CACT,CACA,SAASC,GAAan5D,EAAIvoB,EAAM2hF,EAAQtc,GAAU,GAChD,MAAM,OAAEQ,EAAQC,QAASub,GAAmBrhF,EACxCqhF,GACFK,GAAan5D,EAAI84D,EAAgBM,GAAQ,GAEvC9b,GACFA,EAAOjrE,SACJQ,GAAMsmF,GAAan5D,EAAIntB,EAAGumF,GAAQ,KAGvC,IAAK,MAAMzqF,KAAO8I,EAChB,GAAIqlE,GAAmB,WAARnuE,OAIR,CACL,MAAM0qF,EAAQC,GAA0B3qF,IAAQyqF,GAAUA,EAAOzqF,GACjEqxB,EAAGrxB,GAAO0qF,EAAQA,EAAMr5D,EAAGrxB,GAAM8I,EAAK9I,IAAQ8I,EAAK9I,EACrD,CAEF,OAAOqxB,CACT,CACA,MAAMs5D,GAA4B,CAChCjiF,KAAMkiF,GACN78D,MAAO88D,GACPvc,MAAOuc,GAEPtC,QAASuC,GACT5rB,SAAU4rB,GAEV1C,aAAc2C,GACdnC,QAASmC,GACTlC,YAAakC,GACbz1C,QAASy1C,GACTjC,aAAciC,GACdjQ,QAASiQ,GACTh3B,cAAeg3B,GACf9B,cAAe8B,GACf51D,UAAW41D,GACX7B,UAAW6B,GACXhC,UAAWgC,GACX/B,YAAa+B,GACb1B,cAAe0B,GACfzB,eAAgByB,GAEhBvB,WAAYsB,GACZrQ,WAAYqQ,GAEZ9R,MAAOgS,GAEPvC,QAASmC,GACTnS,OAAQwS,IAEV,SAASL,GAAYv5D,EAAIvoB,GACvB,OAAKA,EAGAuoB,EAGE,WACL,OAAO,EACLmoC,EAAWnoC,GAAMA,EAAGtxB,KAAKkB,KAAMA,MAAQowB,EACvCmoC,EAAW1wD,GAAQA,EAAK/I,KAAKkB,KAAMA,MAAQ6H,EAE/C,EAPSA,EAHAuoB,CAWX,CACA,SAAS45D,GAAY55D,EAAIvoB,GACvB,OAAOgiF,GAAmBZ,GAAgB74D,GAAK64D,GAAgBphF,GACjE,CACA,SAASohF,GAAgBvtC,GACvB,GAAI,EAAQA,GAAM,CAChB,MAAM1zB,EAAM,CAAC,EACb,IAAK,IAAI9pB,EAAI,EAAGA,EAAIw9C,EAAIz9C,OAAQC,IAC9B8pB,EAAI0zB,EAAIx9C,IAAMw9C,EAAIx9C,GAEpB,OAAO8pB,CACT,CACA,OAAO0zB,CACT,CACA,SAASouC,GAAa15D,EAAIvoB,GACxB,OAAOuoB,EAAK,IAAI,IAAIhtB,IAAI,GAAGwL,OAAOwhB,EAAIvoB,KAAUA,CAClD,CACA,SAASgiF,GAAmBz5D,EAAIvoB,GAC9B,OAAOuoB,EAAK,EAAuB1xB,OAAOqnB,OAAO,MAAOqK,EAAIvoB,GAAQA,CACtE,CACA,SAAS+hF,GAAyBx5D,EAAIvoB,GACpC,OAAIuoB,EACE,EAAQA,IAAO,EAAQvoB,GAClB,IAAoB,IAAIzE,IAAI,IAAIgtB,KAAOvoB,KAEzC,EACWnJ,OAAOqnB,OAAO,MAC9BygE,GAAsBp2D,GACtBo2D,GAA8B,MAAR3+E,EAAeA,EAAO,CAAC,IAGxCA,CAEX,CACA,SAASkiF,GAAkB35D,EAAIvoB,GAC7B,IAAKuoB,EACH,OAAOvoB,EACT,IAAKA,EACH,OAAOuoB,EACT,MAAM65D,EAAS,EAAuBvrF,OAAOqnB,OAAO,MAAOqK,GAC3D,IAAK,MAAMrxB,KAAO8I,EAChBoiF,EAAOlrF,GAAO+qF,GAAa15D,EAAGrxB,GAAM8I,EAAK9I,IAE3C,OAAOkrF,CACT,CAEA,SAASC,KACP,MAAO,CACLC,IAAK,KACLnkF,OAAQ,CACNokF,YAAa,EACbC,aAAa,EACbrF,iBAAkB,CAAC,EACnBqE,sBAAuB,CAAC,EACxBxe,kBAAc,EACdlC,iBAAa,EACb2hB,gBAAiB,CAAC,GAEpB5c,OAAQ,GACR6a,WAAY,CAAC,EACb/O,WAAY,CAAC,EACbqP,SAA0BnqF,OAAOqnB,OAAO,MACxCqjE,aAA8B,IAAItpB,QAClCyqB,WAA4B,IAAIzqB,QAChCqN,WAA4B,IAAIrN,QAEpC,CACA,IAAI0qB,GAAQ,EACZ,SAASC,GAAarrC,EAAQk0B,GAC5B,OAAO,SAAmBoX,EAAeC,EAAY,MAC9CpyB,EAAWmyB,KACdA,EAAgB,EAAO,CAAC,EAAGA,IAEZ,MAAbC,GAAsB,EAASA,KAEjCA,EAAY,MAEd,MAAMtiE,EAAU6hE,KACVU,EAAmC,IAAIC,QAC7C,IAAIxQ,GAAY,EAChB,MAAM8P,EAAM9hE,EAAQ8hE,IAAM,CACxBW,KAAMN,KACNO,WAAYL,EACZM,OAAQL,EACRM,WAAY,KACZC,SAAU7iE,EACV8iE,UAAW,KACXprF,WACA,UAAIiG,GACF,OAAOqiB,EAAQriB,MACjB,EACA,UAAIA,CAAOxD,GACL,CAKN,EACA,GAAAsyC,CAAI/6B,KAAW1Z,GAcb,OAbIuqF,EAAiBljF,IAAIqS,KAEdA,GAAUw+C,EAAWx+C,EAAOqxE,UACrCR,EAAiBvmF,IAAI0V,GACrBA,EAAOqxE,QAAQjB,KAAQ9pF,IACdk4D,EAAWx+C,KACpB6wE,EAAiBvmF,IAAI0V,GACrBA,EAAOowE,KAAQ9pF,KAMV8pF,CACT,EACA,KAAAkB,CAAMA,GAYJ,OAVOhjE,EAAQqlD,OAAOviE,SAASkgF,IAC3BhjE,EAAQqlD,OAAOxrE,KAAKmpF,GASjBlB,CACT,EACA,SAAAx0E,CAAU7T,EAAM6T,GAId,OAAKA,GAML0S,EAAQkgE,WAAWzmF,GAAQ6T,EACpBw0E,GANE9hE,EAAQkgE,WAAWzmF,EAO9B,EACA,SAAAwpF,CAAUxpF,EAAMwpF,GAId,OAAKA,GAMLjjE,EAAQmxD,WAAW13E,GAAQwpF,EACpBnB,GANE9hE,EAAQmxD,WAAW13E,EAO9B,EACA,KAAAsyC,CAAMm3C,EAAeC,EAAWzgF,GAC9B,IAAKsvE,EAAW,CACV,EAMJ,MAAMtR,EAAQ+G,GAAY4a,EAAeC,GA4BzC,OA3BA5hB,EAAML,WAAargD,GACD,IAAdtd,EACFA,EAAY,OACW,IAAdA,IACTA,OAAY,GAWVygF,GAAalY,EACfA,EAAQvK,EAAOwiB,GAEfnsC,EAAO2pB,EAAOwiB,EAAexgF,GAE/BsvE,GAAY,EACZ8P,EAAIc,WAAaM,EACjBA,EAAcE,YAActB,EAKrBzQ,GAAe3Q,EAAMpzD,YAAcozD,EAAMpzD,UAAU2vD,KAC5D,CAMF,EACA,OAAA8O,GACMiG,IACFj7B,EAAO,KAAM+qC,EAAIc,mBAKVd,EAAIc,WAAWQ,YAI1B,EACA,OAAAjE,CAAQzoF,EAAKhC,GAOX,OADAsrB,EAAQwgE,SAAS9pF,GAAOhC,EACjBotF,CACT,EACA,cAAAuB,CAAezpF,GACb0pF,GAAaxB,EACb,IACE,OAAOloF,GACT,CAAE,QACA0pF,GAAa,IACf,CACF,GAEF,OAAOxB,CACT,CACF,CACA,IAAIwB,GAAa,KAEjB,SAASnE,GAAQzoF,EAAKhC,GACpB,GAAKo1E,GAIE,CACL,IAAI0W,EAAW1W,GAAgB0W,SAC/B,MAAM+C,EAAiBzZ,GAAgBrjD,QAAUqjD,GAAgBrjD,OAAO+5D,SACpE+C,IAAmB/C,IACrBA,EAAW1W,GAAgB0W,SAAWnqF,OAAOqnB,OAAO6lE,IAEtD/C,EAAS9pF,GAAOhC,CAClB,MAVM,CAWR,CACA,SAASy6E,GAAOz4E,EAAKqb,EAAcyxE,GAAwB,GACzD,MAAMzrF,EAAW+xE,IAAmBtE,GACpC,GAAIztE,GAAYurF,GAAY,CAC1B,MAAM9C,EAAWzoF,EAA8B,MAAnBA,EAAS0uB,OAAiB1uB,EAAS2oE,MAAML,YAActoE,EAAS2oE,MAAML,WAAWmgB,SAAWzoF,EAAS0uB,OAAO+5D,SAAW8C,GAAWT,SAASrC,SACvK,GAAIA,GAAY9pF,KAAO8pF,EACrB,OAAOA,EAAS9pF,GACX,GAAIgoB,UAAU9oB,OAAS,EAC5B,OAAO4tF,GAAyBtzB,EAAWn+C,GAAgBA,EAAatb,KAAKsB,GAAYA,EAASklE,OAASlrD,CAI/G,MAAW,CAGb,CACA,SAAS0xE,KACP,SAAU3Z,IAAmBtE,IAA4B8d,GAC3D,CAEA,SAASI,GAAU3rF,EAAU67E,EAAU+P,EAAYnmB,GAAQ,GACzD,MAAM/4C,EAAQ,CAAC,EACTnD,EAAQ,CAAC,EACf6vC,EAAI7vC,EAAOsiE,GAAmB,GAC9B7rF,EAAS8rF,cAAgCxtF,OAAOqnB,OAAO,MACvDomE,GAAa/rF,EAAU67E,EAAUnvD,EAAOnD,GACxC,IAAK,MAAM5qB,KAAOqB,EAAS6uE,aAAa,GAChClwE,KAAO+tB,IACXA,EAAM/tB,QAAO,GAMbitF,EACF5rF,EAAS0sB,MAAQ+4C,EAAQ/4C,EAAQi4C,GAAgBj4C,GAE5C1sB,EAAS4I,KAAK8jB,MAGjB1sB,EAAS0sB,MAAQA,EAFjB1sB,EAAS0sB,MAAQnD,EAKrBvpB,EAASupB,MAAQA,CACnB,CAQA,SAASyiE,GAAYhsF,EAAU67E,EAAUoQ,EAAc3b,GACrD,MAAM,MACJ5jD,EAAK,MACLnD,EACAo/C,OAAO,UAAEgI,IACP3wE,EACEksF,EAAkB,GAAMx/D,IACvBzsB,GAAWD,EAAS6uE,aAC3B,IAAIsd,GAAkB,EACtB,KAI+E7b,GAAaK,EAAY,IAAoB,GAAZA,EAmCzG,CAIL,IAAIyb,EAHAL,GAAa/rF,EAAU67E,EAAUnvD,EAAOnD,KAC1C4iE,GAAkB,GAGpB,IAAK,MAAMxtF,KAAOutF,EACXrQ,IACJ,EAAOA,EAAUl9E,KAEhBytF,EAAW,EAAUztF,MAAUA,GAAQ,EAAOk9E,EAAUuQ,MACpDnsF,GACEgsF,QACmB,IAAtBA,EAAattF,SACa,IAA3BstF,EAAaG,KACX1/D,EAAM/tB,GAAO0tF,GACXpsF,EACAisF,EACAvtF,OACA,EACAqB,GACA,WAIG0sB,EAAM/tB,IAInB,GAAI4qB,IAAU2iE,EACZ,IAAK,MAAMvtF,KAAO4qB,EACXsyD,GAAa,EAAOA,EAAUl9E,YAC1B4qB,EAAM5qB,GACbwtF,GAAkB,EAI1B,MArEE,GAAgB,EAAZxb,EAAe,CACjB,MAAM2b,EAAgBtsF,EAAS2oE,MAAMoI,aACrC,IAAK,IAAIjzE,EAAI,EAAGA,EAAIwuF,EAAczuF,OAAQC,IAAK,CAC7C,IAAIa,EAAM2tF,EAAcxuF,GACxB,GAAI0vE,GAAextE,EAAS4wE,aAAcjyE,GACxC,SAEF,MAAMhC,EAAQk/E,EAASl9E,GACvB,GAAIsB,EACF,GAAI,EAAOspB,EAAO5qB,GACZhC,IAAU4sB,EAAM5qB,KAClB4qB,EAAM5qB,GAAOhC,EACbwvF,GAAkB,OAEf,CACL,MAAMI,EAAe3zB,EAASj6D,GAC9B+tB,EAAM6/D,GAAgBF,GACpBpsF,EACAisF,EACAK,EACA5vF,EACAqD,GACA,EAEJ,MAEIrD,IAAU4sB,EAAM5qB,KAClB4qB,EAAM5qB,GAAOhC,EACbwvF,GAAkB,EAGxB,CACF,CAsCEA,GACF3gF,GAAQxL,EAAU,MAAO,SAK7B,CACA,SAAS+rF,GAAa/rF,EAAU67E,EAAUnvD,EAAOnD,GAC/C,MAAOtpB,EAASusF,GAAgBxsF,EAAS6uE,aACzC,IACI4d,EADAN,GAAkB,EAEtB,GAAItQ,EACF,IAAK,IAAIl9E,KAAOk9E,EAAU,CACxB,GAAIrjB,EAAe75D,GACjB,SAEF,MAAMhC,EAAQk/E,EAASl9E,GACvB,IAAI+tF,EACAzsF,GAAW,EAAOA,EAASysF,EAAW9zB,EAASj6D,IAC5C6tF,GAAiBA,EAAazhF,SAAS2hF,IAGzCD,IAAkBA,EAAgB,CAAC,IAAIC,GAAY/vF,EAFpD+vB,EAAMggE,GAAY/vF,EAIV6wE,GAAextE,EAAS4wE,aAAcjyE,IAC1CA,KAAO4qB,GAAU5sB,IAAU4sB,EAAM5qB,KACrC4qB,EAAM5qB,GAAOhC,EACbwvF,GAAkB,EAGxB,CAEF,GAAIK,EAAc,CAChB,MAAMN,EAAkB,GAAMx/D,GACxBigE,EAAaF,GAAiB/0B,EACpC,IAAK,IAAI55D,EAAI,EAAGA,EAAI0uF,EAAa3uF,OAAQC,IAAK,CAC5C,MAAMa,EAAM6tF,EAAa1uF,GACzB4uB,EAAM/tB,GAAO0tF,GACXpsF,EACAisF,EACAvtF,EACAguF,EAAWhuF,GACXqB,GACC,EAAO2sF,EAAYhuF,GAExB,CACF,CACA,OAAOwtF,CACT,CACA,SAASE,GAAiBpsF,EAASysB,EAAO/tB,EAAKhC,EAAOqD,EAAU4sF,GAC9D,MAAMtG,EAAMrmF,EAAQtB,GACpB,GAAW,MAAP2nF,EAAa,CACf,MAAMuG,EAAa,EAAOvG,EAAK,WAC/B,GAAIuG,QAAwB,IAAVlwF,EAAkB,CAClC,MAAMqd,EAAessE,EAAIhQ,QACzB,GAAIgQ,EAAI19E,OAASqX,WAAaqmE,EAAIC,aAAepuB,EAAWn+C,GAAe,CACzE,MAAM,cAAE8xE,GAAkB9rF,EACtBrB,KAAOmtF,EACTnvF,EAAQmvF,EAAcntF,IAEtBo6E,GAAmB/4E,GACnBrD,EAAQmvF,EAAcntF,GAAOqb,EAAatb,KACxC,KACAguB,GAEFssD,KAEJ,MACEr8E,EAAQqd,CAEZ,CACIssE,EAAI,KACFsG,IAAaC,EACflwF,GAAQ,GACC2pF,EAAI,IAAsC,KAAV3pF,GAAgBA,IAAU,EAAUgC,KAC7EhC,GAAQ,GAGd,CACA,OAAOA,CACT,CACA,SAASmwF,GAAsBjgB,EAAMvE,EAAYwE,GAAU,GACzD,MAAM32B,EAAQmyB,EAAW6hB,WACnBnd,EAAS72B,EAAMpvC,IAAI8lE,GACzB,GAAIG,EACF,OAAOA,EAET,MAAM1xB,EAAMuxB,EAAKngD,MACXotC,EAAa,CAAC,EACd0yB,EAAe,GACrB,IAAItf,GAAa,EACjB,IAA4B/U,EAAW0U,GAAO,CAC5C,MAAMkgB,EAAe3f,IACnBF,GAAa,EACb,MAAOxgD,EAAO3uB,GAAQ+uF,GAAsB1f,EAAM9E,GAAY,GAC9D,EAAOxO,EAAYptC,GACf3uB,GACFyuF,EAAa1qF,QAAQ/D,EAAK,GAEzB+uE,GAAWxE,EAAWgF,OAAOzvE,QAChCyqE,EAAWgF,OAAOjrE,QAAQ0qF,GAExBlgB,EAAKU,SACPwf,EAAYlgB,EAAKU,SAEfV,EAAKS,QACPT,EAAKS,OAAOjrE,QAAQ0qF,EAExB,CACA,IAAKzxC,IAAQ4xB,EAIX,OAHI,EAASL,IACX12B,EAAM7yC,IAAIupE,EAAMlV,GAEXA,EAET,GAAI,EAAQrc,GACV,IAAK,IAAIx9C,EAAI,EAAGA,EAAIw9C,EAAIz9C,OAAQC,IAAK,CAC/B,EAGJ,MAAMkvF,EAAgBp0B,EAAStd,EAAIx9C,IAC/BmvF,GAAiBD,KACnBlzB,EAAWkzB,GAAiBt1B,EAEhC,MACK,GAAIpc,EAAK,CACV,EAGJ,IAAK,MAAM38C,KAAO28C,EAAK,CACrB,MAAM0xC,EAAgBp0B,EAASj6D,GAC/B,GAAIsuF,GAAiBD,GAAgB,CACnC,MAAM1G,EAAMhrC,EAAI38C,GACVuuF,EAAOpzB,EAAWkzB,GAAiB,EAAQ1G,IAAQnuB,EAAWmuB,GAAO,CAAE19E,KAAM09E,GAAQ,EAAO,CAAC,EAAGA,GACtG,GAAI4G,EAAM,CACR,MAAMC,EAAeC,GAAa3iF,QAASyiF,EAAKtkF,MAC1CykF,EAAcD,GAAa5xB,OAAQ0xB,EAAKtkF,MAC9CskF,EAAK,GAAsBC,GAAgB,EAC3CD,EAAK,GAA0BG,EAAc,GAAKF,EAAeE,GAC7DF,GAAgB,GAAK,EAAOD,EAAM,aACpCV,EAAa1qF,KAAKkrF,EAEtB,CACF,CACF,CACF,CACA,MAAMplE,EAAM,CAACkyC,EAAY0yB,GAIzB,OAHI,EAAS3f,IACX12B,EAAM7yC,IAAIupE,EAAMjlD,GAEXA,CACT,CACA,SAASqlE,GAAiBtuF,GACxB,MAAe,MAAXA,EAAI,EAMV,CACA,SAAS2uF,GAAQC,GACf,MAAMl2E,EAAQk2E,GAAQA,EAAK/uF,WAAW6Y,MAAM,8BAC5C,OAAOA,EAAQA,EAAM,GAAc,OAATk2E,EAAgB,OAAS,EACrD,CACA,SAASC,GAAW9vF,EAAGC,GACrB,OAAO2vF,GAAQ5vF,KAAO4vF,GAAQ3vF,EAChC,CACA,SAASyvF,GAAaxkF,EAAMmN,GAC1B,OAAI,EAAQA,GACHA,EAAc2lD,WAAWl4D,GAAMgqF,GAAWhqF,EAAGoF,KAC3CuvD,EAAWpiD,IACby3E,GAAWz3E,EAAenN,GAAQ,GAEnC,CACV,CAyGA,MAAM6kF,GAAiB9uF,GAAmB,MAAXA,EAAI,IAAsB,YAARA,EAC3C+uF,GAAsB/wF,GAAU,EAAQA,GAASA,EAAMwH,IAAImrE,IAAkB,CAACA,GAAe3yE,IAC7FgxF,GAAgB,CAAChvF,EAAKivF,EAAS1f,KACnC,GAAI0f,EAAQxf,GACV,OAAOwf,EAET,MAAM9zB,EAAamU,IAAQ,IAAIxiE,IAMtBiiF,GAAmBE,KAAWniF,KACpCyiE,GAEH,OADApU,EAAW2U,IAAK,EACT3U,CAAU,EAEb+zB,GAAuB,CAACC,EAAUhf,EAAO9uE,KAC7C,MAAMkuE,EAAM4f,EAASC,KACrB,IAAK,MAAMpvF,KAAOmvF,EAAU,CAC1B,GAAIL,GAAc9uF,GAChB,SACF,MAAMhC,EAAQmxF,EAASnvF,GACvB,GAAIw5D,EAAWx7D,GACbmyE,EAAMnwE,GAAOgvF,GAAchvF,EAAKhC,EAAOuxE,QAClC,GAAa,MAATvxE,EAAe,CACpB,EAKJ,MAAMm9D,EAAa4zB,GAAmB/wF,GACtCmyE,EAAMnwE,GAAO,IAAMm7D,CACrB,CACF,GAEIk0B,GAAsB,CAAChuF,EAAU2O,KAMrC,MAAMmrD,EAAa4zB,GAAmB/+E,GACtC3O,EAAS8uE,MAAMwH,QAAU,IAAMxc,CAAU,EAErCm0B,GAAY,CAACjuF,EAAU2O,KAC3B,GAA+B,GAA3B3O,EAAS2oE,MAAMwG,UAAgB,CACjC,MAAMvmE,EAAO+F,EAASgtB,EAClB/yB,GACF5I,EAAS8uE,MAAQ,GAAMngE,GACvByqD,EAAIzqD,EAAU,IAAK/F,IAEnBilF,GACEl/E,EACA3O,EAAS8uE,MAAQ,CAAC,EAExB,MACE9uE,EAAS8uE,MAAQ,CAAC,EACdngE,GACFq/E,GAAoBhuF,EAAU2O,GAGlCyqD,EAAIp5D,EAAS8uE,MAAO+c,GAAmB,EAAE,EAErCqC,GAAc,CAACluF,EAAU2O,EAAU2hE,KACvC,MAAM,MAAE3H,EAAK,MAAEmG,GAAU9uE,EACzB,IAAImuF,GAAoB,EACpBC,EAA2B12B,EAC/B,GAAsB,GAAlBiR,EAAMwG,UAAgB,CACxB,MAAMvmE,EAAO+F,EAASgtB,EAClB/yB,EAIS0nE,GAAsB,IAAT1nE,EACtBulF,GAAoB,GAEpB,EAAOrf,EAAOngE,GACT2hE,GAAsB,IAAT1nE,UACTkmE,EAAMnzC,IAIjBwyD,GAAqBx/E,EAASkiE,QAC9Bgd,GAAqBl/E,EAAUmgE,IAEjCsf,EAA2Bz/E,CAC7B,MAAWA,IACTq/E,GAAoBhuF,EAAU2O,GAC9By/E,EAA2B,CAAE9X,QAAS,IAExC,GAAI6X,EACF,IAAK,MAAMxvF,KAAOmwE,EACX2e,GAAc9uF,IAAyC,MAAjCyvF,EAAyBzvF,WAC3CmwE,EAAMnwE,EAGnB,EAGF,SAAS0vF,GAAOC,EAAQC,EAAW1b,EAAgBlK,EAAO6lB,GAAY,GACpE,GAAI,EAAQF,GAUV,YATAA,EAAOjsF,SACL,CAACU,EAAGjF,IAAMuwF,GACRtrF,EACAwrF,IAAc,EAAQA,GAAaA,EAAUzwF,GAAKywF,GAClD1b,EACAlK,EACA6lB,KAKN,GAAIrQ,GAAexV,KAAW6lB,EAC5B,OAEF,MAAMC,EAA6B,EAAlB9lB,EAAMwG,UAAgBmK,GAAe3Q,EAAMpzD,YAAcozD,EAAMpzD,UAAU2vD,MAAQyD,EAAMp5D,GAClG5S,EAAQ6xF,EAAY,KAAOC,GACzB3wF,EAAG4wF,EAAO3rF,EAAGujE,GAAQgoB,EAO7B,MAAMK,EAASJ,GAAaA,EAAUxrF,EAChC4gF,EAAO+K,EAAM/K,OAASjsB,EAAYg3B,EAAM/K,KAAO,CAAC,EAAI+K,EAAM/K,KAC1D3U,EAAa0f,EAAM1f,WAWzB,GAVc,MAAV2f,GAAkBA,IAAWroB,IAC3B,EAASqoB,IACXhL,EAAKgL,GAAU,KACX,EAAO3f,EAAY2f,KACrB3f,EAAW2f,GAAU,OAEdxtB,GAAMwtB,KACfA,EAAOhyF,MAAQ,OAGfw7D,EAAWmO,GACboC,GAAsBpC,EAAKooB,EAAO,GAAI,CAAC/xF,EAAOgnF,QACzC,CACL,MAAMiL,EAAY,EAAStoB,GACrBuoB,EAAS1tB,GAAMmF,GACrB,GAAIsoB,GAAaC,EAAQ,CACvB,MAAMC,EAAQ,KACZ,GAAIR,EAAOnrF,EAAG,CACZ,MAAM4rF,EAAWH,EAAY,EAAO5f,EAAY1I,GAAO0I,EAAW1I,GAAOqd,EAAKrd,GAAOA,EAAI3pE,MACrF6xF,EACF,EAAQO,IAAa9tF,EAAO8tF,EAAUN,GAEjC,EAAQM,GAWDA,EAAShkF,SAAS0jF,IAC5BM,EAASjtF,KAAK2sF,GAXVG,GACFjL,EAAKrd,GAAO,CAACmoB,GACT,EAAOzf,EAAY1I,KACrB0I,EAAW1I,GAAOqd,EAAKrd,MAGzBA,EAAI3pE,MAAQ,CAAC8xF,GACTH,EAAO9rF,IACTmhF,EAAK2K,EAAO9rF,GAAK8jE,EAAI3pE,OAM/B,MAAWiyF,GACTjL,EAAKrd,GAAO3pE,EACR,EAAOqyE,EAAY1I,KACrB0I,EAAW1I,GAAO3pE,IAEXkyF,IACTvoB,EAAI3pE,MAAQA,EACR2xF,EAAO9rF,IACTmhF,EAAK2K,EAAO9rF,GAAK7F,GACkC,EAIrDA,GACFmyF,EAAM3vF,IAAM,EACZw5E,GAAsBmW,EAAOjc,IAE7Bic,GAEJ,MAAW,CAGb,CACF,CAEA,IAAIE,IAAc,EAClB,MAAMC,GAAkBvc,GAAcA,EAAUwc,aAAankF,SAAS,QAAgC,kBAAtB2nE,EAAU/9D,QACpFw6E,GAAqBzc,GAAcA,EAAUwc,aAAankF,SAAS,UACnEqkF,GAAoB1c,GACpBuc,GAAevc,GACV,MACLyc,GAAkBzc,GACb,cADT,EAII2c,GAAav/D,GAA2B,IAAlBA,EAAKzX,SACjC,SAASi3E,GAAyBvc,GAChC,MACEwc,GAAIC,EACJ/sF,EAAGgxE,EACH3tD,GAAG,UACD2pE,EAAS,WACTC,EAAU,YACVC,EAAW,WACXzmF,EAAU,OACVjI,EAAM,OACN2uF,EAAM,cACNC,IAEA9c,EACEG,EAAU,CAACvK,EAAO+J,KACtB,IAAKA,EAAUod,gBAOb,OAN8CC,yCAA4C3nB,GACxF,gGAEFqL,EAAM,KAAM9K,EAAO+J,GACnBxG,UACAwG,EAAUsd,OAASrnB,GAGrBqmB,IAAc,EACd7Y,EAAYzD,EAAUplD,WAAYq7C,EAAO,KAAM,KAAM,MACrDuD,KACAwG,EAAUsd,OAASrnB,EACfqmB,IACFjrF,QAAQzC,MAAM,+CAChB,EAEI60E,EAAc,CAACrmD,EAAM64C,EAAOiK,EAAiBC,EAAgBC,EAAcxC,GAAY,KAC3F,MAAM2f,EAAkBZ,GAAUv/D,IAAuB,MAAdA,EAAKzoB,KAC1C6oF,EAAa,IAAMC,EACvBrgE,EACA64C,EACAiK,EACAC,EACAC,EACAmd,IAEI,KAAErnF,EAAI,IAAE09D,EAAG,UAAE6I,EAAS,UAAEwB,GAAchI,EAC5C,IAAIynB,EAAUtgE,EAAKzX,SACnBswD,EAAMp5D,GAAKugB,GAeQ,IAAf6gD,IACFL,GAAY,EACZ3H,EAAMmO,gBAAkB,MAE1B,IAAIuZ,EAAW,KACf,OAAQznF,GACN,KAAK0nF,GACa,IAAZF,EACqB,KAAnBznB,EAAMh6D,UACRihF,EAAOjnB,EAAMp5D,GAAKmgF,EAAW,IAAKxmF,EAAW4mB,GAAOA,GACpDugE,EAAWvgE,GAEXugE,EAAWH,KAGTpgE,EAAKzoB,OAASshE,EAAMh6D,WACtBqgF,IAAc,EACgCe,yCAA4C3nB,GACxF,6BACAt4C,EAAK5mB,WACL,6BACY/I,KAAKC,UACf0vB,EAAKzoB,kCAEKlH,KAAKC,UAAUuoE,EAAMh6D,aAEnCmhB,EAAKzoB,KAAOshE,EAAMh6D,UAEpB0hF,EAAWV,EAAY7/D,IAEzB,MACF,KAAK6/C,GACC4gB,EAAezgE,IACjBugE,EAAWV,EAAY7/D,GACvB0gE,EACE7nB,EAAMp5D,GAAKugB,EAAK2gE,QAAQnjE,WACxBwC,EACA8iD,IAGFyd,EADqB,IAAZD,GAA+BH,EAC7BC,IAEAP,EAAY7/D,GAEzB,MACF,KAAK4gE,GAKH,GAJIT,IACFngE,EAAO6/D,EAAY7/D,GACnBsgE,EAAUtgE,EAAKzX,UAED,IAAZ+3E,GAA2C,IAAZA,EAA0B,CAC3DC,EAAWvgE,EACX,MAAM6gE,GAAsBhoB,EAAMh6D,SAAS9Q,OAC3C,IAAK,IAAIC,EAAI,EAAGA,EAAI6qE,EAAMioB,YAAa9yF,IACjC6yF,IACFhoB,EAAMh6D,UAAkC,IAAtB0hF,EAASh4E,SAA+Bg4E,EAASQ,UAAYR,EAAShpF,MACtFvJ,IAAM6qE,EAAMioB,YAAc,IAC5BjoB,EAAMgK,OAAS0d,GAEjBA,EAAWV,EAAYU,GAEzB,OAAOJ,EAAkBN,EAAYU,GAAYA,CACnD,CACEH,IAEF,MACF,KAAKlS,GAIDqS,EAHGJ,EAGQa,EACThhE,EACA64C,EACAiK,EACAC,EACAC,EACAxC,GARS4f,IAWb,MACF,QACE,GAAgB,EAAZ/gB,EAIAkhB,EAHe,IAAZD,GAA+BznB,EAAM//D,KAAKnF,gBAAkBqsB,EAAKnb,QAAQlR,eAAmB8sF,EAAezgE,GAGnGihE,EACTjhE,EACA64C,EACAiK,EACAC,EACAC,EACAxC,GARS4f,SAWR,GAAgB,EAAZ/gB,EAAe,CACxBxG,EAAMmK,aAAeA,EACrB,MAAMJ,EAAYxpE,EAAW4mB,GAiB7B,GAfEugE,EADEJ,EACSe,EAAoBlhE,GACtBu/D,GAAUv/D,IAAuB,mBAAdA,EAAKzoB,KACtB2pF,EAAoBlhE,EAAMA,EAAKzoB,KAAM,gBAErCsoF,EAAY7/D,GAEzB0/D,EACE7mB,EACA+J,EACA,KACAE,EACAC,EACAuc,GAAiB1c,GACjBpC,GAEE6N,GAAexV,GAAQ,CACzB,IAAIuI,EACA+e,GACF/e,EAAUxB,GAAYsO,IACtB9M,EAAQyB,OAAS0d,EAAWA,EAASpjE,gBAAkBylD,EAAUue,WAEjE/f,EAA4B,IAAlBphD,EAAKzX,SAAiB64E,GAAgB,IAAMxhB,GAAY,OAEpEwB,EAAQ3hE,GAAKugB,EACb64C,EAAMpzD,UAAU27D,QAAUA,CAC5B,CACF,MAAuB,GAAZ/B,EAEPkhB,EADc,IAAZD,EACSF,IAEAvnB,EAAM//D,KAAKsqE,QACpBpjD,EACA64C,EACAiK,EACAC,EACAC,EACAxC,EACAyC,EACAoe,GAGiB,IAAZhiB,EACTkhB,EAAW1nB,EAAM//D,KAAKsqE,QACpBpjD,EACA64C,EACAiK,EACAC,EACAuc,GAAiBlmF,EAAW4mB,IAC5BgjD,EACAxC,EACAyC,EACAoD,GAEoD4Z,yCACtD3nB,GAAO,0BAA2Bx/D,EAAM,WAAWA,MAMzD,OAHW,MAAP09D,GACF+nB,GAAO/nB,EAAK,KAAMuM,EAAgBlK,GAE7B0nB,CAAQ,EAEXU,EAAiB,CAACxhF,EAAIo5D,EAAOiK,EAAiBC,EAAgBC,EAAcxC,KAChFA,EAAYA,KAAe3H,EAAMmO,gBACjC,MAAM,KAAEluE,EAAI,MAAE8jB,EAAK,UAAEikD,EAAS,UAAExB,EAAS,KAAEY,EAAI,WAAEpmD,GAAeg/C,EAC1DyoB,EAAsB,UAATxoF,GAA6B,WAATA,EACvC,GAAiDwoF,IAA6B,IAAfzgB,EAAkB,CAC3EZ,GACF2J,GAAoB/Q,EAAO,KAAMiK,EAAiB,WAEpD,IAiFIye,EAjFAC,GAA0B,EAC9B,GAAIf,EAAehhF,GAAK,CACtB+hF,EAA0BC,GAAe1e,EAAgBlpD,IAAeipD,GAAmBA,EAAgBjK,MAAMj8C,OAASkmD,EAAgBjK,MAAMj8C,MAAM+tD,OACtJ,MAAMgW,EAAUlhF,EAAGkhF,QAAQnjE,WACvBgkE,GACF3nE,EAAWyzD,YAAYqT,GAEzBD,EAAYC,EAASlhF,EAAIqjE,GACzBjK,EAAMp5D,GAAKA,EAAKkhF,CAClB,CACA,GAAgB,GAAZthB,KACFziD,IAAUA,EAAMrE,YAAaqE,EAAMG,aAAe,CAClD,IAAI5vB,EAAOk0F,EACT5hF,EAAG+d,WACHq7C,EACAp5D,EACAqjE,EACAC,EACAC,EACAxC,GAEEkhB,GAAY,EAChB,MAAOv0F,EAAM,CACX+xF,IAAc,EACoCe,0CAA6CyB,IAC7FppB,GACE,iCACA74D,EACA,yEAGFiiF,GAAY,GAEd,MAAMrnB,EAAMltE,EACZA,EAAOA,EAAK0yF,YACZ1uF,EAAOkpE,EACT,CACF,MAAuB,EAAZgF,GACL5/D,EAAGsd,cAAgB87C,EAAMh6D,WAC3BqgF,IAAc,EACgCe,yCAA4C3nB,GACxF,qCACA74D,EACA,6BACcA,EAAGsd,wCACH87C,EAAMh6D,YAEtBY,EAAGsd,YAAc87C,EAAMh6D,UAG3B,GAAI+d,EACF,GAAiD0kE,IAAe9gB,GAAyB,GAAZK,EAC3E,IAAK,MAAMhyE,KAAO+tB,GAIZ0kE,IAAezyF,EAAI8yF,SAAS,UAAoB,kBAAR9yF,IAA4Bi5D,EAAKj5D,KAAS65D,EAAe75D,IAC1F,MAAXA,EAAI,KACF8wF,EACElgF,EACA5Q,EACA,KACA+tB,EAAM/tB,QACN,OACA,EACAi0E,QAIGlmD,EAAM4gB,SACfmiD,EACElgF,EACA,UACA,KACAmd,EAAM4gB,aACN,OACA,EACAslC,IAKFye,EAAa3kE,GAASA,EAAMglE,qBAC9BpR,GAAgB+Q,EAAYze,EAAiBjK,GAE3CoH,GACF2J,GAAoB/Q,EAAO,KAAMiK,EAAiB,iBAE/Cye,EAAa3kE,GAASA,EAAM2zD,iBAAmBtQ,GAAQuhB,IAC1Dva,IAAwB,KACtBsa,GAAc/Q,GAAgB+Q,EAAYze,EAAiBjK,GAC3D2oB,GAA2B3nE,EAAW2zD,MAAM/tE,GAC5CwgE,GAAQ2J,GAAoB/Q,EAAO,KAAMiK,EAAiB,UAAU,GACnEC,EAEP,CACA,OAAOtjE,EAAGogF,WAAW,EAEjBwB,EAAkB,CAACrhE,EAAM6hE,EAAajf,EAAWE,EAAiBC,EAAgBC,EAAcxC,KACpGA,EAAYA,KAAeqhB,EAAY7a,gBACvC,MAAMnoE,EAAWgjF,EAAYhjF,SACvBhM,EAAIgM,EAAS9Q,OACnB,IAAI2zF,GAAY,EAChB,IAAK,IAAI1zF,EAAI,EAAGA,EAAI6E,EAAG7E,IAAK,CAC1B,MAAM6qE,EAAQ2H,EAAY3hE,EAAS7Q,GAAK6Q,EAAS7Q,GAAKwxE,GAAe3gE,EAAS7Q,IAC9E,GAAIgyB,EACFA,EAAOqmD,EACLrmD,EACA64C,EACAiK,EACAC,EACAC,EACAxC,OAEG,IAAI3H,EAAM//D,OAAS0nF,KAAS3nB,EAAMh6D,SACvC,SAEAqgF,IAAc,EACoCe,0CAA6CyB,IAC7FppB,GACE,iCACAsK,EACA,0EAGF8e,GAAY,GAEd/d,EACE,KACA9K,EACA+J,EACA,KACAE,EACAC,EACAuc,GAAiB1c,GACjBI,EAEJ,CACF,CACA,OAAOhjD,CAAI,EAEPghE,EAAkB,CAAChhE,EAAM64C,EAAOiK,EAAiBC,EAAgBC,EAAcxC,KACnF,MAAQwC,aAAc8e,GAAyBjpB,EAC3CipB,IACF9e,EAAeA,EAAeA,EAAatkE,OAAOojF,GAAwBA,GAE5E,MAAMlf,EAAYxpE,EAAW4mB,GACvB7yB,EAAOk0F,EACXxB,EAAY7/D,GACZ64C,EACA+J,EACAE,EACAC,EACAC,EACAxC,GAEF,OAAIrzE,GAAQoyF,GAAUpyF,IAAuB,MAAdA,EAAKoK,KAC3BsoF,EAAYhnB,EAAMgK,OAAS11E,IAElC+xF,IAAc,EACdY,EAAOjnB,EAAMgK,OAASkd,EAAc,KAAMnd,EAAWz1E,GAC9CA,EACT,EAEIkzF,EAAiB,CAACrgE,EAAM64C,EAAOiK,EAAiBC,EAAgBC,EAAc+e,KAYlF,GAXA7C,IAAc,EACgCe,yCAA4C3nB,GACxF,kDAEAt4C,EACkB,IAAlBA,EAAKzX,SAA4B,SAAWg3E,GAAUv/D,IAAuB,MAAdA,EAAKzoB,KAAe,sBAAwB,GAC3G,0BAEAshE,EAAM//D,MAER+/D,EAAMp5D,GAAK,KACPsiF,EAAY,CACd,MAAMl0E,EAAMqzE,EAAoBlhE,GAChC,MAAO,EAAM,CACX,MAAMgiE,EAAQnC,EAAY7/D,GAC1B,IAAIgiE,GAASA,IAAUn0E,EAGrB,MAFA1c,EAAO6wF,EAIX,CACF,CACA,MAAM70F,EAAO0yF,EAAY7/D,GACnB4iD,EAAYxpE,EAAW4mB,GAY7B,OAXA7uB,EAAO6uB,GACP2jD,EACE,KACA9K,EACA+J,EACAz1E,EACA21E,EACAC,EACAuc,GAAiB1c,GACjBI,GAEK71E,CAAI,EAEP+zF,EAAsB,CAAClhE,EAAM05C,EAAO,IAAKC,EAAQ,OACrD,IAAIpyD,EAAQ,EACZ,MAAOyY,EAEL,GADAA,EAAO6/D,EAAY7/D,GACfA,GAAQu/D,GAAUv/D,KAChBA,EAAKzoB,OAASmiE,GAChBnyD,IACEyY,EAAKzoB,OAASoiE,GAAO,CACvB,GAAc,IAAVpyD,EACF,OAAOs4E,EAAY7/D,GAEnBzY,GAEJ,CAGJ,OAAOyY,CAAI,EAEP0gE,EAAc,CAACuB,EAASC,EAASpf,KACrC,MAAMqf,EAAcD,EAAQ9oF,WACxB+oF,GACFA,EAAYC,aAAaH,EAASC,GAEpC,IAAItjE,EAASkkD,EACb,MAAOlkD,EACDA,EAAOi6C,MAAMp5D,KAAOyiF,IACtBtjE,EAAOi6C,MAAMp5D,GAAKmf,EAAOwiD,QAAQ3hE,GAAKwiF,GAExCrjE,EAASA,EAAOA,MAClB,EAEI6hE,EAAkBzgE,GACG,IAAlBA,EAAKzX,UAA+D,aAA/ByX,EAAKnb,QAAQlR,cAE3D,MAAO,CAACyvE,EAASiD,EACnB,CAgGA,SAASgc,KAUgD,mBAA5CpC,0CAETt2B,IAAgBs2B,yCAA0C,EAU9D,CAEA,MAAMpX,GAAwB5B,GAC9B,SAASqb,GAAenyF,GACtB,OAAOoyF,GAAmBpyF,EAC5B,CACA,SAASqyF,GAAwBryF,GAC/B,OAAOoyF,GAAmBpyF,EAASqvF,GACrC,CACA,SAAS+C,GAAmBpyF,EAASsyF,GAEjCJ,KAEF,MAAMlpF,EAASwwD,IACfxwD,EAAOupF,SAAU,EAIjB,MACE5C,OAAQ6C,EACRxxF,OAAQyxF,EACRjD,UAAWkD,EACXtvF,cAAeuvF,EACflD,WAAYmD,EACZhD,cAAeiD,EACfC,QAASC,EACTC,eAAgBC,EAChBhqF,WAAYiqF,EACZxD,YAAayD,EACbC,WAAYC,EAAiB,EAC7BC,oBAAqBC,GACnBvzF,EACEwzE,EAAQ,CAACjB,EAAIC,EAAIC,EAAWC,EAAS,KAAMC,EAAkB,KAAMC,EAAiB,KAAMloE,OAAY,EAAQmoE,EAAe,KAAMxC,IAAmFmC,EAAGqE,mBAC7N,GAAItE,IAAOC,EACT,OAEED,IAAO6B,GAAgB7B,EAAIC,KAC7BE,EAAS8gB,EAAgBjhB,GACzBwB,EAAQxB,EAAII,EAAiBC,GAAgB,GAC7CL,EAAK,OAEe,IAAlBC,EAAG9B,YACLL,GAAY,EACZmC,EAAGqE,gBAAkB,MAEvB,MAAM,KAAEluE,EAAI,IAAE09D,EAAG,UAAE6I,GAAcsD,EACjC,OAAQ7pE,GACN,KAAK0nF,GACHoD,EAAYlhB,EAAIC,EAAIC,EAAWC,GAC/B,MACF,KAAKhD,GACHgkB,EAAmBnhB,EAAIC,EAAIC,EAAWC,GACtC,MACF,KAAK+d,GACO,MAANle,GACFohB,EAAgBnhB,EAAIC,EAAWC,EAAQhoE,GAIzC,MACF,KAAKqzE,GACH6V,EACErhB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAloE,EACAmoE,EACAxC,GAEF,MACF,QACkB,EAAZnB,EACF2kB,EACEthB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAloE,EACAmoE,EACAxC,GAEmB,EAAZnB,EACT4kB,EACEvhB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAloE,EACAmoE,EACAxC,IAEmB,GAAZnB,GAaY,IAAZA,IAZTvmE,EAAK2pE,QACHC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAloE,EACAmoE,EACAxC,EACA0jB,GAmBG,MAAP1tB,GAAesM,GACjByb,GAAO/nB,EAAKkM,GAAMA,EAAGlM,IAAKuM,EAAgBJ,GAAMD,GAAKC,EACvD,EAEIihB,EAAc,CAAClhB,EAAIC,EAAIC,EAAWC,KACtC,GAAU,MAANH,EACFigB,EACEhgB,EAAGljE,GAAKsjF,EAAepgB,EAAG9jE,UAC1B+jE,EACAC,OAEG,CACL,MAAMpjE,EAAKkjE,EAAGljE,GAAKijE,EAAGjjE,GAClBkjE,EAAG9jE,WAAa6jE,EAAG7jE,UACrBqkF,EAAYzjF,EAAIkjE,EAAG9jE,SAEvB,GAEIglF,EAAqB,CAACnhB,EAAIC,EAAIC,EAAWC,KACnC,MAANH,EACFigB,EACEhgB,EAAGljE,GAAKujF,EAAkBrgB,EAAG9jE,UAAY,IACzC+jE,EACAC,GAGFF,EAAGljE,GAAKijE,EAAGjjE,EACb,EAEIqkF,EAAkB,CAACnhB,EAAIC,EAAWC,EAAQhoE,MAC7C8nE,EAAGljE,GAAIkjE,EAAGE,QAAU6gB,EACnB/gB,EAAG9jE,SACH+jE,EACAC,EACAhoE,EACA8nE,EAAGljE,GACHkjE,EAAGE,OACJ,EAiBGshB,EAAiB,EAAG1kF,KAAIojE,UAAUD,EAAWid,KACjD,IAAI1yF,EACJ,MAAOsS,GAAMA,IAAOojE,EAClB11E,EAAOm2F,EAAgB7jF,GACvBkjF,EAAWljF,EAAImjE,EAAWid,GAC1BpgF,EAAKtS,EAEPw1F,EAAW9f,EAAQD,EAAWid,EAAY,EAEtCuE,EAAmB,EAAG3kF,KAAIojE,aAC9B,IAAI11E,EACJ,MAAOsS,GAAMA,IAAOojE,EAClB11E,EAAOm2F,EAAgB7jF,GACvBmjF,EAAWnjF,GACXA,EAAKtS,EAEPy1F,EAAW/f,EAAO,EAEdmhB,EAAiB,CAACthB,EAAIC,EAAIC,EAAWC,EAAQC,EAAiBC,EAAgBloE,EAAWmoE,EAAcxC,KAC3F,QAAZmC,EAAG7pE,KACL+B,EAAY,MACS,SAAZ8nE,EAAG7pE,OACZ+B,EAAY,UAEJ,MAAN6nE,EACF2hB,EACE1hB,EACAC,EACAC,EACAC,EACAC,EACAloE,EACAmoE,EACAxC,GAGF8jB,EACE5hB,EACAC,EACAG,EACAC,EACAloE,EACAmoE,EACAxC,EAEJ,EAEI6jB,EAAe,CAACxrB,EAAO+J,EAAWC,EAAQC,EAAiBC,EAAgBloE,EAAWmoE,EAAcxC,KACxG,IAAI/gE,EACA6wE,EACJ,MAAM,MAAE1zD,EAAK,UAAEyiD,EAAS,WAAExlD,EAAU,KAAEomD,GAASpH,EAyB/C,GAxBAp5D,EAAKo5D,EAAMp5D,GAAKqjF,EACdjqB,EAAM//D,KACN+B,EACA+hB,GAASA,EAAMnC,GACfmC,GAEc,EAAZyiD,EACF+jB,EAAmB3jF,EAAIo5D,EAAMh6D,UACR,GAAZwgE,GACTklB,EACE1rB,EAAMh6D,SACNY,EACA,KACAqjE,EACAC,EACAyhB,GAAyB3rB,EAAOh+D,GAChCmoE,EACAxC,GAGAP,GACF2J,GAAoB/Q,EAAO,KAAMiK,EAAiB,WAEpDygB,EAAW9jF,EAAIo5D,EAAOA,EAAMoa,QAASjQ,EAAcF,GAC/ClmD,EAAO,CACT,IAAK,MAAM/tB,KAAO+tB,EACJ,UAAR/tB,GAAoB65D,EAAe75D,IACrCg0F,EACEpjF,EACA5Q,EACA,KACA+tB,EAAM/tB,GACNgM,EACAg+D,EAAMh6D,SACNikE,EACAC,EACA0hB,GAIF,UAAW7nE,GACbimE,EAAcpjF,EAAI,QAAS,KAAMmd,EAAM/vB,MAAOgO,IAE5Cy1E,EAAY1zD,EAAMglE,qBACpBpR,GAAgBF,EAAWxN,EAAiBjK,EAEhD,CAWIoH,GACF2J,GAAoB/Q,EAAO,KAAMiK,EAAiB,eAEpD,MAAM0e,EAA0BC,GAAe1e,EAAgBlpD,GAC3D2nE,GACF3nE,EAAWyzD,YAAY7tE,GAEzBkjF,EAAWljF,EAAImjE,EAAWC,KACrByN,EAAY1zD,GAASA,EAAM2zD,iBAAmBiR,GAA2BvhB,IAC5E4I,IAAsB,KACpByH,GAAaE,GAAgBF,EAAWxN,EAAiBjK,GACzD2oB,GAA2B3nE,EAAW2zD,MAAM/tE,GAC5CwgE,GAAQ2J,GAAoB/Q,EAAO,KAAMiK,EAAiB,UAAU,GACnEC,EACL,EAEIwgB,EAAa,CAAC9jF,EAAIo5D,EAAOoa,EAASjQ,EAAcF,KAIpD,GAHImQ,GACFuQ,EAAe/jF,EAAIwzE,GAEjBjQ,EACF,IAAK,IAAIh1E,EAAI,EAAGA,EAAIg1E,EAAaj1E,OAAQC,IACvCw1F,EAAe/jF,EAAIujE,EAAah1E,IAGpC,GAAI80E,EAAiB,CACnB,IAAI1B,EAAU0B,EAAgB1B,QAI9B,GAAIvI,IAAUuI,EAAS,CACrB,MAAMygB,EAAc/e,EAAgBjK,MACpC0qB,EACE9jF,EACAoiF,EACAA,EAAY5O,QACZ4O,EAAY7e,aACZF,EAAgBlkD,OAEpB,CACF,GAEI2lE,EAAgB,CAAC1lF,EAAU+jE,EAAWC,EAAQC,EAAiBC,EAAgBloE,EAAWmoE,EAAcxC,EAAW5yD,EAAQ,KAC/H,IAAK,IAAI5f,EAAI4f,EAAO5f,EAAI6Q,EAAS9Q,OAAQC,IAAK,CAC5C,MAAM8Q,EAAQD,EAAS7Q,GAAKwyE,EAAYkkB,GAAe7lF,EAAS7Q,IAAMwxE,GAAe3gE,EAAS7Q,IAC9F21E,EACE,KACA7kE,EACA8jE,EACAC,EACAC,EACAC,EACAloE,EACAmoE,EACAxC,EAEJ,GAEI8jB,EAAe,CAAC5hB,EAAIC,EAAIG,EAAiBC,EAAgBloE,EAAWmoE,EAAcxC,KACtF,MAAM/gE,EAAKkjE,EAAGljE,GAAKijE,EAAGjjE,GACtB,IAAI,UAAEohE,EAAS,gBAAEmG,EAAe,KAAE/G,GAAS0C,EAC3C9B,GAA4B,GAAf6B,EAAG7B,UAChB,MAAM8jB,EAAWjiB,EAAG9lD,OAASgrC,EACvBg9B,EAAWjiB,EAAG/lD,OAASgrC,EAC7B,IAAI0oB,EAwCJ,GAvCAxN,GAAmB+hB,GAAc/hB,GAAiB,IAC9CwN,EAAYsU,EAASE,sBACvBtU,GAAgBF,EAAWxN,EAAiBH,EAAID,GAE9CzC,GACF2J,GAAoBjH,EAAID,EAAII,EAAiB,gBAE/CA,GAAmB+hB,GAAc/hB,GAAiB,GAM9CkE,EACF+d,EACEriB,EAAGsE,gBACHA,EACAvnE,EACAqjE,EACAC,EACAyhB,GAAyB7hB,EAAI9nE,GAC7BmoE,GAKQxC,GACVwkB,EACEtiB,EACAC,EACAljE,EACA,KACAqjE,EACAC,EACAyhB,GAAyB7hB,EAAI9nE,GAC7BmoE,GACA,GAGAnC,EAAY,EAAG,CACjB,GAAgB,GAAZA,EACFokB,EACExlF,EACAkjE,EACAgiB,EACAC,EACA9hB,EACAC,EACAloE,QAWF,GARgB,EAAZgmE,GACE8jB,EAASl6B,QAAUm6B,EAASn6B,OAC9Bo4B,EAAcpjF,EAAI,QAAS,KAAMmlF,EAASn6B,MAAO5vD,GAGrC,EAAZgmE,GACFgiB,EAAcpjF,EAAI,QAASklF,EAASvhF,MAAOwhF,EAASxhF,MAAOvI,GAE7C,EAAZgmE,EAAe,CACjB,MAAM2b,EAAgB7Z,EAAG1B,aACzB,IAAK,IAAIjzE,EAAI,EAAGA,EAAIwuF,EAAczuF,OAAQC,IAAK,CAC7C,MAAMa,EAAM2tF,EAAcxuF,GACpBmR,EAAOwlF,EAAS91F,GAChB1B,EAAOy3F,EAAS/1F,GAClB1B,IAASgS,GAAgB,UAARtQ,GACnBg0F,EACEpjF,EACA5Q,EACAsQ,EACAhS,EACA0N,EACA6nE,EAAG7jE,SACHikE,EACAC,EACA0hB,EAGN,CACF,CAEc,EAAZ5jB,GACE6B,EAAG7jE,WAAa8jE,EAAG9jE,UACrBukF,EAAmB3jF,EAAIkjE,EAAG9jE,SAGhC,MAAY2hE,GAAgC,MAAnBwG,GACvBie,EACExlF,EACAkjE,EACAgiB,EACAC,EACA9hB,EACAC,EACAloE,KAGCy1E,EAAYsU,EAASM,iBAAmBjlB,IAC3C4I,IAAsB,KACpByH,GAAaE,GAAgBF,EAAWxN,EAAiBH,EAAID,GAC7DzC,GAAQ2J,GAAoBjH,EAAID,EAAII,EAAiB,UAAU,GAC9DC,EACL,EAEIgiB,EAAqB,CAACI,EAAaC,EAAaC,EAAmBviB,EAAiBC,EAAgBloE,EAAWmoE,KACnH,IAAK,IAAIh1E,EAAI,EAAGA,EAAIo3F,EAAYr3F,OAAQC,IAAK,CAC3C,MAAMs3F,EAAWH,EAAYn3F,GACvBu3F,EAAWH,EAAYp3F,GACvB40E,EAGJ0iB,EAAS7lF,KAER6lF,EAASxsF,OAASo1E,KAElB3J,GAAgB+gB,EAAUC,IACN,GAArBD,EAASjmB,WAAwBgkB,EAAeiC,EAAS7lF,IAAM,EAMjEkkE,EACE2hB,EACAC,EACA3iB,EACA,KACAE,EACAC,EACAloE,EACAmoE,GACA,EAEJ,GAEIiiB,EAAa,CAACxlF,EAAIo5D,EAAO8rB,EAAUC,EAAU9hB,EAAiBC,EAAgBloE,KAClF,GAAI8pF,IAAaC,EAAU,CACzB,GAAID,IAAa/8B,EACf,IAAK,MAAM/4D,KAAO81F,EACXj8B,EAAe75D,IAAUA,KAAO+1F,GACnC/B,EACEpjF,EACA5Q,EACA81F,EAAS91F,GACT,KACAgM,EACAg+D,EAAMh6D,SACNikE,EACAC,EACA0hB,GAKR,IAAK,MAAM51F,KAAO+1F,EAAU,CAC1B,GAAIl8B,EAAe75D,GACjB,SACF,MAAM1B,EAAOy3F,EAAS/1F,GAChBsQ,EAAOwlF,EAAS91F,GAClB1B,IAASgS,GAAgB,UAARtQ,GACnBg0F,EACEpjF,EACA5Q,EACAsQ,EACAhS,EACA0N,EACAg+D,EAAMh6D,SACNikE,EACAC,EACA0hB,EAGN,CACI,UAAWG,GACb/B,EAAcpjF,EAAI,QAASklF,EAAS93F,MAAO+3F,EAAS/3F,MAAOgO,EAE/D,GAEIkpF,EAAkB,CAACrhB,EAAIC,EAAIC,EAAWC,EAAQC,EAAiBC,EAAgBloE,EAAWmoE,EAAcxC,KAC5G,MAAMglB,EAAsB7iB,EAAGljE,GAAKijE,EAAKA,EAAGjjE,GAAKsjF,EAAe,IAC1D0C,EAAoB9iB,EAAGE,OAASH,EAAKA,EAAGG,OAASkgB,EAAe,IACtE,IAAI,UAAEliB,EAAS,gBAAEmG,EAAiBhE,aAAc8e,GAAyBnf,EAOrEmf,IACF9e,EAAeA,EAAeA,EAAatkE,OAAOojF,GAAwBA,GAElE,MAANpf,GACFigB,EAAW6C,EAAqB5iB,EAAWC,GAC3C8f,EAAW8C,EAAmB7iB,EAAWC,GACzC0hB,EACE5hB,EAAG9jE,SACH+jE,EACA6iB,EACA3iB,EACAC,EACAloE,EACAmoE,EACAxC,IAGEK,EAAY,GAAiB,GAAZA,GAAkBmG,GAEvCtE,EAAGsE,iBACD+d,EACEriB,EAAGsE,gBACHA,EACApE,EACAE,EACAC,EACAloE,EACAmoE,IASU,MAAVL,EAAG9zE,KAAei0E,GAAmBH,IAAOG,EAAgB1B,UAE5DskB,GACEhjB,EACAC,GACA,IAKJqiB,EACEtiB,EACAC,EACAC,EACA6iB,EACA3iB,EACAC,EACAloE,EACAmoE,EACAxC,EAGN,EAEIyjB,EAAmB,CAACvhB,EAAIC,EAAIC,EAAWC,EAAQC,EAAiBC,EAAgBloE,EAAWmoE,EAAcxC,KAC7GmC,EAAGK,aAAeA,EACR,MAANN,EACiB,IAAfC,EAAGtD,UACLyD,EAAgB1E,IAAI16D,SAClBi/D,EACAC,EACAC,EACAhoE,EACA2lE,GAGFkf,EACE/c,EACAC,EACAC,EACAC,EACAC,EACAloE,EACA2lE,GAIJmlB,EAAgBjjB,EAAIC,EAAInC,EAC1B,EAEIkf,EAAiB,CAACkG,EAAchjB,EAAWC,EAAQC,EAAiBC,EAAgBloE,EAAW2lE,KACnG,MAAMtwE,EAAY01F,EAAangF,UAAYogF,GACzCD,EACA9iB,EACAC,GAqBF,GAZI+K,GAAY8X,KACd11F,EAASkuE,IAAI0R,SAAWoU,GAMxB4B,GAAe51F,GAKbA,EAAS41E,UAEX,GADA/C,GAAkBA,EAAe2C,YAAYx1E,EAAUy1E,IAClDigB,EAAanmF,GAAI,CACpB,MAAMymE,EAAch2E,EAASkxE,QAAUxB,GAAYC,IACnDgkB,EAAmB,KAAM3d,EAAatD,EAAWC,EACnD,OAEA8C,EACEz1E,EACA01F,EACAhjB,EACAC,EACAE,EACAloE,EACA2lE,EAG4C,EAK5CmlB,EAAkB,CAACjjB,EAAIC,EAAInC,KAC/B,MAAMtwE,EAAWyyE,EAAGl9D,UAAYi9D,EAAGj9D,UACnC,GAAI46D,GAAsBqC,EAAIC,EAAInC,GAAY,CAC5C,GAAItwE,EAAS41E,WAAa51E,EAAS81E,cAQjC,YAJA+f,EAAyB71F,EAAUyyE,EAAInC,GAMvCtwE,EAAS/C,KAAOw1E,EAChB3G,GAAc9rE,EAASqlC,QACvBrlC,EAASo7B,OAAOsiC,OAAQ,EACxB19D,EAASqlC,QAEb,MACEotC,EAAGljE,GAAKijE,EAAGjjE,GACXvP,EAAS2oE,MAAQ8J,CACnB,EAEIgD,EAAoB,CAACz1E,EAAU01F,EAAchjB,EAAWC,EAAQE,EAAgBloE,EAAW2lE,KAC/F,MAAMwlB,EAAoB,KACxB,GAAK91F,EAASi6E,UA0FP,CACL,IAAI,KAAEh9E,EAAI,GAAE84F,EAAE,EAAE7yF,EAAC,OAAEwrB,EAAM,MAAEi6C,GAAU3oE,EACrC,CACE,MAAMg2F,EAAuBC,GAA2Bj2F,GACxD,GAAIg2F,EAUF,OATI/4F,IACFA,EAAKsS,GAAKo5D,EAAMp5D,GAChBsmF,EAAyB71F,EAAU/C,EAAMqzE,SAE3C0lB,EAAqBpgB,SAASt4E,MAAK,KAC5B0C,EAASusE,aACZupB,GACF,GAIN,CACA,IACI1V,EADA8V,EAAaj5F,EAEb,EAGJ03F,GAAc30F,GAAU,GACpB/C,GACFA,EAAKsS,GAAKo5D,EAAMp5D,GAChBsmF,EAAyB71F,EAAU/C,EAAMqzE,IAEzCrzE,EAAO0rE,EAELotB,GACF98B,EAAe88B,IAEb3V,EAAYnjF,EAAKyvB,OAASzvB,EAAKyvB,MAAMkoE,sBACvCtU,GAAgBF,EAAW1xD,EAAQzxB,EAAM0rE,GAE3CgsB,GAAc30F,GAAU,GAIxB,MAAMm2F,EAAWznB,GAAoB1uE,GACjC,EAGJ,MAAMo2F,EAAWp2F,EAASkxE,QAC1BlxE,EAASkxE,QAAUilB,EAInB1iB,EACE2iB,EACAD,EAEAhD,EAAeiD,EAAS7mF,IAExBkkF,EAAgB2C,GAChBp2F,EACA6yE,EACAloE,GAKF1N,EAAKsS,GAAK4mF,EAAS5mF,GACA,OAAf2mF,GACFjlB,GAAgBjxE,EAAUm2F,EAAS5mF,IAEjCrM,GACFy1E,GAAsBz1E,EAAG2vE,IAEvBuN,EAAYnjF,EAAKyvB,OAASzvB,EAAKyvB,MAAMsoE,iBACvCrc,IACE,IAAM2H,GAAgBF,EAAW1xD,EAAQzxB,EAAM0rE,IAC/CkK,EASN,KA3KyB,CACvB,IAAIuN,EACJ,MAAM,GAAE7wE,EAAE,MAAEmd,GAAUgpE,GAChB,GAAEW,EAAE,EAAExzF,EAAC,OAAE6rB,GAAW1uB,EACpBs2F,EAAsBnY,GAAeuX,GAS3C,GARAf,GAAc30F,GAAU,GACpBq2F,GACFp9B,EAAeo9B,IAEZC,IAAwBlW,EAAY1zD,GAASA,EAAMglE,qBACtDpR,GAAgBF,EAAW1xD,EAAQgnE,GAErCf,GAAc30F,GAAU,GACpBuP,GAAM4mE,EAAa,CACrB,MAAMogB,EAAiB,KAIrBv2F,EAASkxE,QAAUxC,GAAoB1uE,GAOvCm2E,EACE5mE,EACAvP,EAASkxE,QACTlxE,EACA6yE,EACA,KAE8C,EAI9CyjB,EACFZ,EAAa9sF,KAAKw1E,gBAAgB9gF,MAKhC,KAAO0C,EAASusE,aAAegqB,MAGjCA,GAEJ,KAAO,CACD,EAGJ,MAAMrlB,EAAUlxE,EAASkxE,QAAUxC,GAAoB1uE,GACnD,EAMJyzE,EACE,KACAvC,EACAwB,EACAC,EACA3yE,EACA6yE,EACAloE,GAKF+qF,EAAanmF,GAAK2hE,EAAQ3hE,EAC5B,CAIA,GAHI1M,GACF81E,GAAsB91E,EAAGgwE,IAEtByjB,IAAwBlW,EAAY1zD,GAASA,EAAM2zD,gBAAiB,CACvE,MAAMmW,EAAqBd,EAC3B/c,IACE,IAAM2H,GAAgBF,EAAW1xD,EAAQ8nE,IACzC3jB,EAEJ,EAC6B,IAAzB6iB,EAAavmB,WAAmBzgD,GAAUyvD,GAAezvD,EAAOi6C,QAAmC,IAAzBj6C,EAAOi6C,MAAMwG,YACzFnvE,EAAStC,GAAKi7E,GAAsB34E,EAAStC,EAAGm1E,GAElD7yE,EAASi6E,WAAY,EAIrByb,EAAehjB,EAAYC,EAAS,IACtC,CAiFA,EAEIv3C,EAASp7B,EAASo7B,OAAS,IAAI8hC,GACnC44B,EACA,GACA,IAAMpqB,GAASrmC,IACfrlC,EAAS+8D,OAGL13B,EAASrlC,EAASqlC,OAAS,KAC3BjK,EAAOsiC,OACTtiC,EAAOiS,KACT,EAEFhI,EAAOlmC,GAAKa,EAASqI,IACrBssF,GAAc30F,GAAU,GAMxBqlC,GAAQ,EAEJwwD,EAA2B,CAAC71F,EAAUqwE,EAAWC,KACrDD,EAAU96D,UAAYvV,EACtB,MAAMuwE,EAAYvwE,EAAS2oE,MAAMj8C,MACjC1sB,EAAS2oE,MAAQ0H,EACjBrwE,EAAS/C,KAAO,KAChB+uF,GAAYhsF,EAAUqwE,EAAU3jD,MAAO6jD,EAAWD,GAClD4d,GAAYluF,EAAUqwE,EAAU1hE,SAAU2hE,GAC1C3S,KACAqO,GAAiBhsE,GACjB+9D,IAAe,EAEX+2B,EAAgB,CAACtiB,EAAIC,EAAIC,EAAWC,EAAQC,EAAiBC,EAAgBloE,EAAWmoE,EAAcxC,GAAY,KACtH,MAAMmmB,EAAKjkB,GAAMA,EAAG7jE,SACd+nF,EAAgBlkB,EAAKA,EAAGrD,UAAY,EACpCwnB,EAAKlkB,EAAG9jE,UACR,UAAEgiE,EAAS,UAAExB,GAAcsD,EACjC,GAAI9B,EAAY,EAAG,CACjB,GAAgB,IAAZA,EAYF,YAXAimB,EACEH,EACAE,EACAjkB,EACAC,EACAC,EACAC,EACAloE,EACAmoE,EACAxC,GAGG,GAAgB,IAAZK,EAYT,YAXAkmB,EACEJ,EACAE,EACAjkB,EACAC,EACAC,EACAC,EACAloE,EACAmoE,EACAxC,EAIN,CACgB,EAAZnB,GACkB,GAAhBunB,GACFnC,EAAgBkC,EAAI7jB,EAAiBC,GAEnC8jB,IAAOF,GACTvD,EAAmBxgB,EAAWikB,IAGZ,GAAhBD,EACc,GAAZvnB,EACFynB,EACEH,EACAE,EACAjkB,EACAC,EACAC,EACAC,EACAloE,EACAmoE,EACAxC,GAGFikB,EAAgBkC,EAAI7jB,EAAiBC,GAAgB,IAGnC,EAAhB6jB,GACFxD,EAAmBxgB,EAAW,IAEhB,GAAZvD,GACFklB,EACEsC,EACAjkB,EACAC,EACAC,EACAC,EACAloE,EACAmoE,EACAxC,GAIR,EAEIumB,EAAuB,CAACJ,EAAIE,EAAIjkB,EAAWC,EAAQC,EAAiBC,EAAgBloE,EAAWmoE,EAAcxC,KACjHmmB,EAAKA,GAAM9+B,EACXg/B,EAAKA,GAAMh/B,EACX,MAAMm/B,EAAYL,EAAG54F,OACfmiE,EAAY22B,EAAG94F,OACfk5F,EAAelyF,KAAKkW,IAAI+7E,EAAW92B,GACzC,IAAIliE,EACJ,IAAKA,EAAI,EAAGA,EAAIi5F,EAAcj5F,IAAK,CACjC,MAAMk5F,EAAYL,EAAG74F,GAAKwyE,EAAYkkB,GAAemC,EAAG74F,IAAMwxE,GAAeqnB,EAAG74F,IAChF21E,EACEgjB,EAAG34F,GACHk5F,EACAtkB,EACA,KACAE,EACAC,EACAloE,EACAmoE,EACAxC,EAEJ,CACIwmB,EAAY92B,EACdu0B,EACEkC,EACA7jB,EACAC,GACA,GACA,EACAkkB,GAGF1C,EACEsC,EACAjkB,EACAC,EACAC,EACAC,EACAloE,EACAmoE,EACAxC,EACAymB,EAEJ,EAEIH,EAAqB,CAACH,EAAIE,EAAIjkB,EAAWukB,EAAcrkB,EAAiBC,EAAgBloE,EAAWmoE,EAAcxC,KACrH,IAAIxyE,EAAI,EACR,MAAMo5F,EAAKP,EAAG94F,OACd,IAAIs5F,EAAKV,EAAG54F,OAAS,EACjBu5F,EAAKF,EAAK,EACd,MAAOp5F,GAAKq5F,GAAMr5F,GAAKs5F,EAAI,CACzB,MAAM5kB,EAAKikB,EAAG34F,GACR20E,EAAKkkB,EAAG74F,GAAKwyE,EAAYkkB,GAAemC,EAAG74F,IAAMwxE,GAAeqnB,EAAG74F,IACzE,IAAIu2E,GAAgB7B,EAAIC,GAatB,MAZAgB,EACEjB,EACAC,EACAC,EACA,KACAE,EACAC,EACAloE,EACAmoE,EACAxC,GAKJxyE,GACF,CACA,MAAOA,GAAKq5F,GAAMr5F,GAAKs5F,EAAI,CACzB,MAAM5kB,EAAKikB,EAAGU,GACR1kB,EAAKkkB,EAAGS,GAAM9mB,EAAYkkB,GAAemC,EAAGS,IAAO9nB,GAAeqnB,EAAGS,IAC3E,IAAI/iB,GAAgB7B,EAAIC,GAatB,MAZAgB,EACEjB,EACAC,EACAC,EACA,KACAE,EACAC,EACAloE,EACAmoE,EACAxC,GAKJ6mB,IACAC,GACF,CACA,GAAIt5F,EAAIq5F,GACN,GAAIr5F,GAAKs5F,EAAI,CACX,MAAMC,EAAUD,EAAK,EACfzkB,EAAS0kB,EAAUH,EAAKP,EAAGU,GAAS9nF,GAAK0nF,EAC/C,MAAOn5F,GAAKs5F,EACV3jB,EACE,KACAkjB,EAAG74F,GAAKwyE,EAAYkkB,GAAemC,EAAG74F,IAAMwxE,GAAeqnB,EAAG74F,IAC9D40E,EACAC,EACAC,EACAC,EACAloE,EACAmoE,EACAxC,GAEFxyE,GAEJ,OACK,GAAIA,EAAIs5F,EACb,MAAOt5F,GAAKq5F,EACVnjB,EAAQyiB,EAAG34F,GAAI80E,EAAiBC,GAAgB,GAChD/0E,QAEG,CACL,MAAMw5F,EAAKx5F,EACLy5F,EAAKz5F,EACL05F,EAAmC,IAAIpwF,IAC7C,IAAKtJ,EAAIy5F,EAAIz5F,GAAKs5F,EAAIt5F,IAAK,CACzB,MAAMk5F,EAAYL,EAAG74F,GAAKwyE,EAAYkkB,GAAemC,EAAG74F,IAAMwxE,GAAeqnB,EAAG74F,IAC3D,MAAjBk5F,EAAUr4F,KAQZ64F,EAAiBl0F,IAAI0zF,EAAUr4F,IAAKb,EAExC,CACA,IAAI4sB,EACA+sE,EAAU,EACd,MAAMC,EAAcN,EAAKG,EAAK,EAC9B,IAAII,GAAQ,EACRC,EAAmB,EACvB,MAAMC,EAAwB,IAAI75F,MAAM05F,GACxC,IAAK55F,EAAI,EAAGA,EAAI45F,EAAa55F,IAC3B+5F,EAAsB/5F,GAAK,EAC7B,IAAKA,EAAIw5F,EAAIx5F,GAAKq5F,EAAIr5F,IAAK,CACzB,MAAMg6F,EAAYrB,EAAG34F,GACrB,GAAI25F,GAAWC,EAAa,CAC1B1jB,EAAQ8jB,EAAWllB,EAAiBC,GAAgB,GACpD,QACF,CACA,IAAIlwC,EACJ,GAAqB,MAAjBm1D,EAAUn5F,IACZgkC,EAAW60D,EAAiBzwF,IAAI+wF,EAAUn5F,UAE1C,IAAK+rB,EAAI6sE,EAAI7sE,GAAK0sE,EAAI1sE,IACpB,GAAsC,IAAlCmtE,EAAsBntE,EAAI6sE,IAAaljB,GAAgByjB,EAAWnB,EAAGjsE,IAAK,CAC5EiY,EAAWjY,EACX,KACF,MAGa,IAAbiY,EACFqxC,EAAQ8jB,EAAWllB,EAAiBC,GAAgB,IAEpDglB,EAAsBl1D,EAAW40D,GAAMz5F,EAAI,EACvC6kC,GAAYi1D,EACdA,EAAmBj1D,EAEnBg1D,GAAQ,EAEVlkB,EACEqkB,EACAnB,EAAGh0D,GACH+vC,EACA,KACAE,EACAC,EACAloE,EACAmoE,EACAxC,GAEFmnB,IAEJ,CACA,MAAMM,EAA6BJ,EAAQK,GAAYH,GAAyBlgC,EAEhF,IADAjtC,EAAIqtE,EAA2Bl6F,OAAS,EACnCC,EAAI45F,EAAc,EAAG55F,GAAK,EAAGA,IAAK,CACrC,MAAMsyB,EAAYmnE,EAAKz5F,EACjBk5F,EAAYL,EAAGvmE,GACfuiD,EAASviD,EAAY,EAAI8mE,EAAKP,EAAGvmE,EAAY,GAAG7gB,GAAK0nF,EAC1B,IAA7BY,EAAsB/5F,GACxB21E,EACE,KACAujB,EACAtkB,EACAC,EACAC,EACAC,EACAloE,EACAmoE,EACAxC,GAEOqnB,IACLjtE,EAAI,GAAK5sB,IAAMi6F,EAA2BrtE,GAC5CqjB,EAAKipD,EAAWtkB,EAAWC,EAAQ,GAEnCjoD,IAGN,CACF,GAEIqjB,EAAO,CAAC46B,EAAO+J,EAAWC,EAAQslB,EAAUplB,EAAiB,QACjE,MAAM,GAAEtjE,EAAE,KAAE3G,EAAI,WAAE+gB,EAAU,SAAEhb,EAAQ,UAAEwgE,GAAcxG,EACtD,GAAgB,EAAZwG,EAEF,YADAphC,EAAK46B,EAAMpzD,UAAU27D,QAASwB,EAAWC,EAAQslB,GAGnD,GAAgB,IAAZ9oB,EAEF,YADAxG,EAAMwI,SAASpjC,KAAK2kC,EAAWC,EAAQslB,GAGzC,GAAgB,GAAZ9oB,EAEF,YADAvmE,EAAKmlC,KAAK46B,EAAO+J,EAAWC,EAAQqhB,GAGtC,GAAIprF,IAASo1E,GAAU,CACrByU,EAAWljF,EAAImjE,EAAWC,GAC1B,IAAK,IAAI70E,EAAI,EAAGA,EAAI6Q,EAAS9Q,OAAQC,IACnCiwC,EAAKp/B,EAAS7Q,GAAI40E,EAAWC,EAAQslB,GAGvC,YADAxF,EAAW9pB,EAAMgK,OAAQD,EAAWC,EAEtC,CACA,GAAI/pE,IAAS8nF,GAEX,YADAuD,EAAetrB,EAAO+J,EAAWC,GAGnC,MAAMulB,EAA+B,IAAbD,GAA8B,EAAZ9oB,GAAiBxlD,EAC3D,GAAIuuE,EACF,GAAiB,IAAbD,EACFtuE,EAAWyzD,YAAY7tE,GACvBkjF,EAAWljF,EAAImjE,EAAWC,GAC1BgG,IAAsB,IAAMhvD,EAAW2zD,MAAM/tE,IAAKsjE,OAC7C,CACL,MAAM,MAAE6K,EAAK,WAAEjB,EAAU,WAAEvH,GAAevrD,EACpCwuE,EAAU,IAAM1F,EAAWljF,EAAImjE,EAAWC,GAC1CylB,EAAe,KACnB1a,EAAMnuE,GAAI,KACR4oF,IACAjjB,GAAcA,GAAY,GAC1B,EAEAuH,EACFA,EAAWltE,EAAI4oF,EAASC,GAExBA,GAEJ,MAEA3F,EAAWljF,EAAImjE,EAAWC,EAC5B,EAEIqB,EAAU,CAACrL,EAAOiK,EAAiBC,EAAgBqD,GAAW,EAAO5F,GAAY,KACrF,MAAM,KACJ1nE,EAAI,MACJ8jB,EAAK,IACL45C,EAAG,SACH33D,EAAQ,gBACRmoE,EAAe,UACf3H,EAAS,UACTwB,EAAS,KACTZ,GACEpH,EAIJ,GAHW,MAAPrC,GACF+nB,GAAO/nB,EAAK,KAAMuM,EAAgBlK,GAAO,GAE3B,IAAZwG,EAEF,YADAyD,EAAgB1E,IAAIr7D,WAAW81D,GAGjC,MAAM0vB,EAA+B,EAAZlpB,GAAiBY,EACpCuoB,GAAyBna,GAAexV,GAC9C,IAAIyX,EAIJ,GAHIkY,IAA0BlY,EAAY1zD,GAASA,EAAM6rE,uBACvDjY,GAAgBF,EAAWxN,EAAiBjK,GAE9B,EAAZwG,EACFqpB,EAAiB7vB,EAAMpzD,UAAWs9D,EAAgBqD,OAC7C,CACL,GAAgB,IAAZ/G,EAEF,YADAxG,EAAMwI,SAAS6C,QAAQnB,EAAgBqD,GAGrCmiB,GACF3e,GAAoB/Q,EAAO,KAAMiK,EAAiB,iBAEpC,GAAZzD,EACFxG,EAAM//D,KAAK3H,OACT0nE,EACAiK,EACAC,EACAvC,EACA0jB,EACA9d,GAEOY,IACVluE,IAASo1E,IAAYrN,EAAY,GAAiB,GAAZA,GACrC4jB,EACEzd,EACAlE,EACAC,GACA,GACA,IAEOjqE,IAASo1E,IAAwB,IAAZrN,IAA4BL,GAAyB,GAAZnB,IACvEolB,EAAgB5lF,EAAUikE,EAAiBC,GAEzCqD,GACFj1E,EAAO0nE,EAEX,EACI2vB,IAA0BlY,EAAY1zD,GAASA,EAAM8zD,mBAAqB6X,IAC5E1f,IAAsB,KACpByH,GAAaE,GAAgBF,EAAWxN,EAAiBjK,GACzD0vB,GAAoB3e,GAAoB/Q,EAAO,KAAMiK,EAAiB,YAAY,GACjFC,EACL,EAEI5xE,EAAU0nE,IACd,MAAM,KAAE//D,EAAI,GAAE2G,EAAE,OAAEojE,EAAM,WAAEhpD,GAAeg/C,EACzC,GAAI//D,IAASo1E,GAYX,YAFEya,EAAelpF,EAAIojE,GAIvB,GAAI/pE,IAAS8nF,GAEX,YADAwD,EAAiBvrB,GAGnB,MAAM+vB,EAAgB,KACpBhG,EAAWnjF,GACPoa,IAAeA,EAAW+wD,WAAa/wD,EAAWurD,YACpDvrD,EAAWurD,YACb,EAEF,GAAsB,EAAlBvM,EAAMwG,WAAiBxlD,IAAeA,EAAW+wD,UAAW,CAC9D,MAAM,MAAEgD,EAAK,WAAEjB,GAAe9yD,EACxByuE,EAAe,IAAM1a,EAAMnuE,EAAImpF,GACjCjc,EACFA,EAAW9T,EAAMp5D,GAAImpF,EAAeN,GAEpCA,GAEJ,MACEM,GACF,EAEID,EAAiB,CAACtuB,EAAKxsD,KAC3B,IAAI1gB,EACJ,MAAOktE,IAAQxsD,EACb1gB,EAAOm2F,EAAgBjpB,GACvBuoB,EAAWvoB,GACXA,EAAMltE,EAERy1F,EAAW/0E,EAAI,EAEX66E,EAAmB,CAACx4F,EAAU6yE,EAAgBqD,KAIlD,MAAM,IAAEyiB,EAAG,MAAE57B,EAAK,OAAE13B,EAAM,QAAE6rC,EAAO,GAAE6C,GAAO/zE,EACxC24F,GACF1/B,EAAe0/B,GAEjB57B,EAAM3hB,OACF/V,IACFA,EAAOo3B,QAAS,EAChBuX,EAAQ9C,EAASlxE,EAAU6yE,EAAgBqD,IAEzCnC,GACF4E,GAAsB5E,EAAIlB,GAE5B8F,IAAsB,KACpB34E,EAASusE,aAAc,CAAI,GAC1BsG,GACCA,GAAkBA,EAAec,gBAAkBd,EAAetG,aAAevsE,EAAS41E,WAAa51E,EAAS81E,eAAiB91E,EAASqyE,aAAeQ,EAAeyB,YAC1KzB,EAAezV,OACa,IAAxByV,EAAezV,MACjByV,EAAej2E,UAGsD,EAIrE23F,EAAkB,CAAC5lF,EAAUikE,EAAiBC,EAAgBqD,GAAW,EAAO5F,GAAY,EAAO5yD,EAAQ,KAC/G,IAAK,IAAI5f,EAAI4f,EAAO5f,EAAI6Q,EAAS9Q,OAAQC,IACvCk2E,EAAQrlE,EAAS7Q,GAAI80E,EAAiBC,EAAgBqD,EAAU5F,EAClE,EAEImjB,EAAmB9qB,GACD,EAAlBA,EAAMwG,UACDskB,EAAgB9qB,EAAMpzD,UAAU27D,SAEnB,IAAlBvI,EAAMwG,UACDxG,EAAMwI,SAASl0E,OAEjBm2F,EAAgBzqB,EAAMgK,QAAUhK,EAAMp5D,IAEzCyvC,EAAS,CAAC2pB,EAAO+J,EAAW/nE,KACnB,MAATg+D,EACE+J,EAAUsd,QACZhc,EAAQtB,EAAUsd,OAAQ,KAAM,MAAM,GAGxCvc,EACEf,EAAUsd,QAAU,KACpBrnB,EACA+J,EACA,KACA,KACA,KACA/nE,GAGJqhE,KACAE,KACAwG,EAAUsd,OAASrnB,CAAK,EAEpBqrB,EAAY,CAChBvxF,EAAGgxE,EACHM,GAAIC,EACJnxE,EAAGkrC,EACHhrC,EAAG9B,EACHsuF,GAAIC,EACJoJ,GAAIvE,EACJwE,GAAI/D,EACJgE,IAAKjE,EACLzxF,EAAGqwF,EACH3tE,EAAG7lB,GAEL,IAAIizE,EACAiD,EAMJ,OALIoc,KACDrf,EAASiD,GAAeoc,EACvByB,IAGG,CACLh1C,SACAk0B,UACA6lB,UAAW1O,GAAarrC,EAAQk0B,GAEpC,CACA,SAASohB,IAAyB,KAAE1rF,EAAI,MAAE8jB,GAASssE,GACjD,MAA4B,QAArBA,GAAuC,kBAATpwF,GAAiD,WAArBowF,GAA0C,mBAATpwF,GAA6B8jB,GAASA,EAAMusE,UAAYvsE,EAAMusE,SAASluF,SAAS,aAAU,EAASiuF,CACvM,CACA,SAASrE,IAAc,OAAEv5D,EAAM,OAAEiK,GAAU6zD,GACzC99D,EAAOkkC,aAAej6B,EAAOi6B,aAAe45B,CAC9C,CACA,SAAS3H,GAAe1e,EAAgBlpD,GACtC,QAASkpD,GAAkBA,IAAmBA,EAAec,gBAAkBhqD,IAAeA,EAAW+wD,SAC3G,CACA,SAAS8a,GAAuBhjB,EAAIC,EAAI5R,GAAU,GAChD,MAAMs4B,EAAM3mB,EAAG7jE,SACTyqF,EAAM3mB,EAAG9jE,SACf,GAAI,EAAQwqF,IAAQ,EAAQC,GAC1B,IAAK,IAAIt7F,EAAI,EAAGA,EAAIq7F,EAAIt7F,OAAQC,IAAK,CACnC,MAAM24F,EAAK0C,EAAIr7F,GACf,IAAI64F,EAAKyC,EAAIt7F,GACM,EAAf64F,EAAGxnB,YAAkBwnB,EAAG7f,mBACtB6f,EAAGhmB,WAAa,GAAsB,KAAjBgmB,EAAGhmB,aAC1BgmB,EAAKyC,EAAIt7F,GAAK02F,GAAe4E,EAAIt7F,IACjC64F,EAAGpnF,GAAKknF,EAAGlnF,IAERsxD,GACH20B,GAAuBiB,EAAIE,IAE3BA,EAAG/tF,OAAS0nF,KACdqG,EAAGpnF,GAAKknF,EAAGlnF,GAKf,CAEJ,CACA,SAASyoF,GAAYrwE,GACnB,MAAMllB,EAAIklB,EAAIrc,QACRlO,EAAS,CAAC,GAChB,IAAIU,EAAG4sB,EAAGxnB,EAAGd,EAAGM,EAChB,MAAM2tB,EAAM1I,EAAI9pB,OAChB,IAAKC,EAAI,EAAGA,EAAIuyB,EAAKvyB,IAAK,CACxB,MAAMu7F,EAAO1xE,EAAI7pB,GACjB,GAAa,IAATu7F,EAAY,CAEd,GADA3uE,EAAIttB,EAAOA,EAAOS,OAAS,GACvB8pB,EAAI+C,GAAK2uE,EAAM,CACjB52F,EAAE3E,GAAK4sB,EACPttB,EAAO0E,KAAKhE,GACZ,QACF,CACAoF,EAAI,EACJd,EAAIhF,EAAOS,OAAS,EACpB,MAAOqF,EAAId,EACTM,EAAIQ,EAAId,GAAK,EACTulB,EAAIvqB,EAAOsF,IAAM22F,EACnBn2F,EAAIR,EAAI,EAERN,EAAIM,EAGJ22F,EAAO1xE,EAAIvqB,EAAO8F,MAChBA,EAAI,IACNT,EAAE3E,GAAKV,EAAO8F,EAAI,IAEpB9F,EAAO8F,GAAKpF,EAEhB,CACF,CACAoF,EAAI9F,EAAOS,OACXuE,EAAIhF,EAAO8F,EAAI,GACf,MAAOA,KAAM,EACX9F,EAAO8F,GAAKd,EACZA,EAAIK,EAAEL,GAER,OAAOhF,CACT,CACA,SAAS64F,GAA2Bj2F,GAClC,MAAMs5F,EAAet5F,EAASkxE,QAAQ37D,UACtC,GAAI+jF,EACF,OAAIA,EAAa1jB,WAAa0jB,EAAaxjB,cAClCwjB,EAEArD,GAA2BqD,EAGxC,CAEA,MAAMC,GAAc3wF,GAASA,EAAK4wF,aAC5BC,GAAsB/sE,GAAUA,IAAUA,EAAM7T,UAA+B,KAAnB6T,EAAM7T,UAClE6gF,GAAezwF,GAAiC,qBAAf0wF,YAA8B1wF,aAAkB0wF,WACjFC,GAAkB3wF,GAAoC,oBAAlB4wF,eAAgC5wF,aAAkB4wF,cACtFC,GAAgB,CAACptE,EAAOqtE,KAC5B,MAAM/vE,EAAiB0C,GAASA,EAAMsD,GACtC,GAAI,EAAShG,GAAiB,CAC5B,GAAK+vE,EAKE,CACL,MAAM9wF,EAAS8wF,EAAO/vE,GAMtB,OAAO/gB,CACT,CATE,OAAO,IAUX,CAIE,OAAO+gB,CACT,EAEIgwE,GAAe,CACnBt4F,KAAM,WACN83F,cAAc,EACd,OAAAjnB,CAAQC,EAAIC,EAAIC,EAAWC,EAAQC,EAAiBC,EAAgBloE,EAAWmoE,EAAcxC,EAAW0jB,GACtG,MACE4E,GAAIvE,EACJwE,GAAI/D,EACJgE,IAAKjE,EACL/uE,GAAG,OAAE8pE,EAAM,cAAEhsF,EAAa,WAAE8rF,EAAU,cAAEG,IACtCmE,EACEn7E,EAAW4gF,GAAmBhnB,EAAG/lD,OACvC,IAAI,UAAEyiD,EAAS,SAAExgE,EAAQ,gBAAEmoE,GAAoBrE,EAK/C,GAAU,MAAND,EAAY,CACd,MAAMwD,EAAcvD,EAAGljE,GAAmFmgF,EAAW,IAC/GuK,EAAaxnB,EAAGE,OAAqF+c,EAAW,IACtHE,EAAO5Z,EAAatD,EAAWC,GAC/Bid,EAAOqK,EAAYvnB,EAAWC,GAC9B,MAAM1pE,EAASwpE,EAAGxpE,OAAS6wF,GAAcrnB,EAAG/lD,MAAO9oB,GAC7Cs2F,EAAeznB,EAAGynB,aAAexK,EAAW,IAC9CzmF,IACF2mF,EAAOsK,EAAcjxF,GACH,QAAd0B,GAAuB+uF,GAAYzwF,GACrC0B,EAAY,OACW,WAAdA,GAA0BivF,GAAe3wF,MAClD0B,EAAY,WAKhB,MAAMqpC,EAAQ,CAAC+gC,EAAYI,KACT,GAAZhG,GACFklB,EACE1lF,EACAomE,EACAI,EACAvC,EACAC,EACAloE,EACAmoE,EACAxC,EAEJ,EAEEz3D,EACFm7B,EAAM0+B,EAAWunB,GACRhxF,GACT+qC,EAAM/qC,EAAQixF,EAElB,KAAO,CACLznB,EAAGljE,GAAKijE,EAAGjjE,GACX,MAAM0qF,EAAaxnB,EAAGE,OAASH,EAAGG,OAC5B1pE,EAASwpE,EAAGxpE,OAASupE,EAAGvpE,OACxBixF,EAAeznB,EAAGynB,aAAe1nB,EAAG0nB,aACpCC,EAAcV,GAAmBjnB,EAAG9lD,OACpC0tE,EAAmBD,EAAcznB,EAAYzpE,EAC7CoxF,EAAgBF,EAAcF,EAAaC,EA8BjD,GA7BkB,QAAdvvF,GAAuB+uF,GAAYzwF,GACrC0B,EAAY,OACW,WAAdA,GAA0BivF,GAAe3wF,MAClD0B,EAAY,UAEVmsE,GACF+d,EACEriB,EAAGsE,gBACHA,EACAsjB,EACAxnB,EACAC,EACAloE,EACAmoE,GAEF0iB,GAAuBhjB,EAAIC,GAAI,IACrBnC,GACVwkB,EACEtiB,EACAC,EACA2nB,EACAC,EACAznB,EACAC,EACAloE,EACAmoE,GACA,GAGAj6D,EACGshF,EASC1nB,EAAG/lD,OAAS8lD,EAAG9lD,OAAS+lD,EAAG/lD,MAAMsD,KAAOwiD,EAAG9lD,MAAMsD,KACnDyiD,EAAG/lD,MAAMsD,GAAKwiD,EAAG9lD,MAAMsD,IATzBsqE,GACE7nB,EACAC,EACAunB,EACAjG,EACA,QAQJ,IAAKvhB,EAAG/lD,OAAS+lD,EAAG/lD,MAAMsD,OAASwiD,EAAG9lD,OAAS8lD,EAAG9lD,MAAMsD,IAAK,CAC3D,MAAMuqE,EAAa9nB,EAAGxpE,OAAS6wF,GAC7BrnB,EAAG/lD,MACH9oB,GAEE22F,GACFD,GACE7nB,EACA8nB,EACA,KACAvG,EACA,EASN,MAAWmG,GACTG,GACE7nB,EACAxpE,EACAixF,EACAlG,EACA,EAIR,CACAwG,GAAc/nB,EAChB,EACA,MAAAxxE,CAAO0nE,EAAOiK,EAAiBC,EAAgBvC,GAAayD,GAAIC,EAASluD,GAAK7kB,OAAQyxF,IAAgBxc,GACpG,MAAM,UAAE/G,EAAS,SAAExgE,EAAQ,OAAEgkE,EAAM,aAAEunB,EAAY,OAAEjxF,EAAM,MAAEyjB,GAAUi8C,EAKrE,GAJI1/D,GACFypF,EAAWwH,GAEbhkB,GAAYwc,EAAW/f,GACP,GAAZxD,EAAgB,CAClB,MAAMsrB,EAAevkB,IAAaujB,GAAmB/sE,GACrD,IAAK,IAAI5uB,EAAI,EAAGA,EAAI6Q,EAAS9Q,OAAQC,IAAK,CACxC,MAAM8Q,EAAQD,EAAS7Q,GACvBk2E,EACEplE,EACAgkE,EACAC,EACA4nB,IACE7rF,EAAMkoE,gBAEZ,CACF,CACF,EACA/oC,KAAMusD,GACNpnB,QAASwnB,IAEX,SAASJ,GAAa3xB,EAAO+J,EAAWukB,GAAgBnxE,GAAG,OAAE8pE,GAAU/sF,EAAGkrC,GAAQkqD,EAAW,GAC1E,IAAbA,GACFrI,EAAOjnB,EAAMuxB,aAAcxnB,EAAWukB,GAExC,MAAM,GAAE1nF,EAAE,OAAEojE,EAAM,UAAExD,EAAS,SAAExgE,EAAQ,MAAE+d,GAAUi8C,EAC7CgyB,EAAyB,IAAb1C,EAIlB,GAHI0C,GACF/K,EAAOrgF,EAAImjE,EAAWukB,KAEnB0D,GAAalB,GAAmB/sE,KACnB,GAAZyiD,EACF,IAAK,IAAIrxE,EAAI,EAAGA,EAAI6Q,EAAS9Q,OAAQC,IACnCiwC,EACEp/B,EAAS7Q,GACT40E,EACAukB,EACA,GAKJ0D,GACF/K,EAAOjd,EAAQD,EAAWukB,EAE9B,CACA,SAASyD,GAAgB5qE,EAAM64C,EAAOiK,EAAiBC,EAAgBC,EAAcxC,GACnFxqD,GAAG,YAAE6pE,EAAW,WAAEzmF,EAAU,cAAEtF,IAC7ButF,GACD,MAAMloF,EAAS0/D,EAAM1/D,OAAS6wF,GAC5BnxB,EAAMj8C,MACN9oB,GAEF,GAAIqF,EAAQ,CACV,MAAM2xF,EAAa3xF,EAAO4xF,MAAQ5xF,EAAOqkB,WACzC,GAAsB,GAAlBq7C,EAAMwG,UACR,GAAIsqB,GAAmB9wB,EAAMj8C,OAC3Bi8C,EAAMgK,OAASwe,EACbxB,EAAY7/D,GACZ64C,EACAz/D,EAAW4mB,GACX8iD,EACAC,EACAC,EACAxC,GAEF3H,EAAMuxB,aAAeU,MAChB,CACLjyB,EAAMgK,OAASgd,EAAY7/D,GAC3B,IAAIoqE,EAAeU,EACnB,MAAOV,EAEL,GADAA,EAAevK,EAAYuK,GACvBA,GAA0C,IAA1BA,EAAa7hF,UAAwC,oBAAtB6hF,EAAa7yF,KAA4B,CAC1FshE,EAAMuxB,aAAeA,EACrBjxF,EAAO4xF,KAAOlyB,EAAMuxB,cAAgBvK,EAAYhnB,EAAMuxB,cACtD,KACF,CAEF/I,EACEyJ,EACAjyB,EACA1/D,EACA2pE,EACAC,EACAC,EACAxC,EAEJ,CAEFkqB,GAAc7xB,EAChB,CACA,OAAOA,EAAMgK,QAAUgd,EAAYhnB,EAAMgK,OAC3C,CACA,MAAMmoB,GAAWd,GACjB,SAASQ,GAAc7xB,GACrB,MAAMuF,EAAMvF,EAAMuF,IAClB,GAAIA,GAAOA,EAAI6sB,GAAI,CACjB,IAAIjrE,EAAO64C,EAAMh6D,SAAS,GAAGY,GAC7B,MAAOugB,GAAQA,IAAS64C,EAAMuxB,aACN,IAAlBpqE,EAAKzX,UACPyX,EAAKziB,aAAa,eAAgB6gE,EAAI7lE,KACxCynB,EAAOA,EAAK6/D,YAEdzhB,EAAI6sB,IACN,CACF,CAEA,MAAM/c,GAAWtoE,OAAOi8D,IAAI,SACtB2e,GAAO56E,OAAOi8D,IAAI,SAClBhC,GAAUj6D,OAAOi8D,IAAI,SACrB+e,GAASh7E,OAAOi8D,IAAI,SACpBlC,GAAa,GACnB,IAAIkH,GAAe,KACnB,SAASD,GAAUskB,GAAkB,GACnCvrB,GAAW3tE,KAAK60E,GAAeqkB,EAAkB,KAAO,GAC1D,CACA,SAASpkB,KACPnH,GAAWzkC,MACX2rC,GAAelH,GAAWA,GAAW5xE,OAAS,IAAM,IACtD,CACA,IAgDIo9F,GAhDAxkB,GAAqB,EACzB,SAASlI,GAAiB5xE,GACxB85E,IAAsB95E,CACxB,CACA,SAASu+F,GAAWvyB,GAMlB,OALAA,EAAMmO,gBAAkBL,GAAqB,EAAIE,IAAgBhf,EAAY,KAC7Eif,KACIH,GAAqB,GAAKE,IAC5BA,GAAa70E,KAAK6mE,GAEbA,CACT,CACA,SAASwyB,GAAmBvyF,EAAM8jB,EAAO/d,EAAUgiE,EAAWI,EAAc5B,GAC1E,OAAO+rB,GACLE,GACExyF,EACA8jB,EACA/d,EACAgiE,EACAI,EACA5B,GACA,GAGN,CACA,SAAS2T,GAAYl6E,EAAM8jB,EAAO/d,EAAUgiE,EAAWI,GACrD,OAAOmqB,GACLxrB,GACE9mE,EACA8jB,EACA/d,EACAgiE,EACAI,GACA,GAGN,CACA,SAASb,GAAQvzE,GACf,QAAOA,IAA8B,IAAtBA,EAAM0+F,WACvB,CACA,SAAShnB,GAAgB7B,EAAIC,GAM3B,OAAOD,EAAG5pE,OAAS6pE,EAAG7pE,MAAQ4pE,EAAG7zE,MAAQ8zE,EAAG9zE,GAC9C,CAEA,SAAS28F,GAAmBC,GAC1BN,GAAuBM,CACzB,CACA,MAKM1P,GAAoB,cACpB2P,GAAe,EAAG78F,SAAiB,MAAPA,EAAcA,EAAM,KAChD88F,GAAe,EACnBn1B,MACAo1B,UACAC,cAEmB,kBAARr1B,IACTA,EAAM,GAAKA,GAEC,MAAPA,EAAc,EAASA,IAAQnF,GAAMmF,IAAQnO,EAAWmO,GAAO,CAAExoE,EAAG2vE,GAA0B1qE,EAAGujE,EAAK9jE,EAAGk5F,EAASv4F,IAAKw4F,GAAYr1B,EAAM,MAElJ,SAAS80B,GAAgBxyF,EAAM8jB,EAAQ,KAAM/d,EAAW,KAAMgiE,EAAY,EAAGI,EAAe,KAAM5B,GAAYvmE,IAASo1E,GAAW,EAAI,GAAG4d,GAAc,EAAOC,GAAgC,GAC5L,MAAMlzB,EAAQ,CACZ0yB,aAAa,EACbS,UAAU,EACVlzF,OACA8jB,QACA/tB,IAAK+tB,GAAS8uE,GAAa9uE,GAC3B45C,IAAK55C,GAAS+uE,GAAa/uE,GAC3Bq2D,QAASrV,GACToF,aAAc,KACdnkE,WACA4G,UAAW,KACX47D,SAAU,KACVyC,UAAW,KACXC,WAAY,KACZ9D,KAAM,KACNpmD,WAAY,KACZpa,GAAI,KACJojE,OAAQ,KACR1pE,OAAQ,KACRixF,aAAc,KACdtJ,YAAa,EACbzhB,YACAwB,YACAI,eACA+F,gBAAiB,KACjBxO,WAAY,KACZ4F,IAAKT,IAwBP,OAtBIouB,GACFE,GAAkBpzB,EAAOh6D,GACT,IAAZwgE,GACFvmE,EAAKu6B,UAAUwlC,IAERh6D,IACTg6D,EAAMwG,WAAa,EAASxgE,GAAY,EAAI,IAK1C8nE,GAAqB,IACxBmlB,GACDjlB,KAIChO,EAAMgI,UAAY,GAAiB,EAAZxB,IAEJ,KAApBxG,EAAMgI,WACJgG,GAAa70E,KAAK6mE,GAEbA,CACT,CACA,MAAM+G,GAAyFssB,GAC/F,SAASA,GAAapzF,EAAM8jB,EAAQ,KAAM/d,EAAW,KAAMgiE,EAAY,EAAGI,EAAe,KAAM6qB,GAAc,GAO3G,GANKhzF,GAAQA,IAAS8oE,KAIpB9oE,EAAO+mE,IAELO,GAAQtnE,GAAO,CACjB,MAAMqzF,EAASnsB,GACblnE,EACA8jB,GACA,GAcF,OAXI/d,GACFotF,GAAkBE,EAAQttF,GAExB8nE,GAAqB,IAAMmlB,GAAejlB,KACrB,EAAnBslB,EAAO9sB,UACTwH,GAAaA,GAAa97D,QAAQjS,IAASqzF,EAE3CtlB,GAAa70E,KAAKm6F,IAGtBA,EAAOtrB,YAAc,EACdsrB,CACT,CAIA,GAHIC,GAAiBtzF,KACnBA,EAAOA,EAAK4uD,WAEV9qC,EAAO,CACTA,EAAQyvE,GAAmBzvE,GAC3B,IAAM6tC,MAAOC,EAAK,MAAEtnD,GAAUwZ,EAC1B8tC,IAAU,EAASA,KACrB9tC,EAAM6tC,MAAQ,GAAeC,IAE3B,EAAStnD,KACPkyD,GAAQlyD,KAAW,EAAQA,KAC7BA,EAAQ,EAAO,CAAC,EAAGA,IAErBwZ,EAAMxZ,MAAQ,EAAeA,GAEjC,CACA,MAAMi8D,EAAY,EAASvmE,GAAQ,EAAIupE,GAAWvpE,GAAQ,IAAM2wF,GAAW3wF,GAAQ,GAAK,EAASA,GAAQ,EAAIuvD,EAAWvvD,GAAQ,EAAI,EAUpI,OAAOwyF,GACLxyF,EACA8jB,EACA/d,EACAgiE,EACAI,EACA5B,EACAysB,GACA,EAEJ,CACA,SAASO,GAAmBzvE,GAC1B,OAAKA,EAEE04C,GAAQ14C,IAAUm/D,MAAqBn/D,EAAQ,EAAO,CAAC,EAAGA,GAASA,EADjE,IAEX,CACA,SAASojD,GAAWnH,EAAOyzB,EAAYC,GAAW,GAChD,MAAM,MAAE3vE,EAAK,IAAE45C,EAAG,UAAEqK,EAAS,SAAEhiE,GAAag6D,EACtC2zB,EAAcF,EAAaG,GAAW7vE,GAAS,CAAC,EAAG0vE,GAAc1vE,EACjEuvE,EAAS,CACbZ,aAAa,EACbS,UAAU,EACVlzF,KAAM+/D,EAAM//D,KACZ8jB,MAAO4vE,EACP39F,IAAK29F,GAAed,GAAac,GACjCh2B,IAAK81B,GAAcA,EAAW91B,IAI5B+1B,GAAY/1B,EAAM,EAAQA,GAAOA,EAAI93D,OAAOitF,GAAaW,IAAe,CAAC91B,EAAKm1B,GAAaW,IAAeX,GAAaW,GACrH91B,EACJyc,QAASpa,EAAMoa,QACfjQ,aAAcnK,EAAMmK,aACpBnkE,SAA8HA,EAC9H1F,OAAQ0/D,EAAM1/D,OACdixF,aAAcvxB,EAAMuxB,aACpBtJ,YAAajoB,EAAMioB,YACnBzhB,UAAWxG,EAAMwG,UAKjBwB,UAAWyrB,GAAczzB,EAAM//D,OAASo1E,IAA0B,IAAfrN,EAAmB,GAAiB,GAAZA,EAAiBA,EAC5FI,aAAcpI,EAAMoI,aACpB+F,gBAAiBnO,EAAMmO,gBACvBxO,WAAYK,EAAML,WAClByH,KAAMpH,EAAMoH,KACZpmD,WAAYg/C,EAAMh/C,WAKlBpU,UAAWozD,EAAMpzD,UACjB47D,SAAUxI,EAAMwI,SAChByC,UAAWjL,EAAMiL,WAAa9D,GAAWnH,EAAMiL,WAC/CC,WAAYlL,EAAMkL,YAAc/D,GAAWnH,EAAMkL,YACjDtkE,GAAIo5D,EAAMp5D,GACVojE,OAAQhK,EAAMgK,OACdzE,IAAKvF,EAAMuF,IACXoR,GAAI3W,EAAM2W,IAEZ,OAAO2c,CACT,CAQA,SAAS/K,GAAgBtkE,EAAO,IAAK4vE,EAAO,GAC1C,OAAO9sB,GAAY4gB,GAAM,KAAM1jE,EAAM4vE,EACvC,CACA,SAASC,GAAkBhM,EAASiM,GAClC,MAAM/zB,EAAQ+G,GAAYghB,GAAQ,KAAMD,GAExC,OADA9nB,EAAMioB,YAAc8L,EACb/zB,CACT,CACA,SAASg0B,GAAmB/vE,EAAO,GAAIgwE,GAAU,GAC/C,OAAOA,GAAWlmB,KAAaoM,GAAYnT,GAAS,KAAM/iD,IAAS8iD,GAAYC,GAAS,KAAM/iD,EAChG,CACA,SAAS0iD,GAAe1gE,GACtB,OAAa,MAATA,GAAkC,mBAAVA,EACnB8gE,GAAYC,IACV,EAAQ/gE,GACV8gE,GACLsO,GACA,KAEApvE,EAAMtD,SAEkB,kBAAVsD,EACT4lF,GAAe5lF,GAEf8gE,GAAY4gB,GAAM,KAAM90B,OAAO5sD,GAE1C,CACA,SAAS4lF,GAAe5lF,GACtB,OAAoB,OAAbA,EAAMW,KAAoC,IAArBX,EAAM+hE,WAAoB/hE,EAAMiuF,KAAOjuF,EAAQkhE,GAAWlhE,EACxF,CACA,SAASmtF,GAAkBpzB,EAAOh6D,GAChC,IAAI/F,EAAO,EACX,MAAM,UAAEumE,GAAcxG,EACtB,GAAgB,MAAZh6D,EACFA,EAAW,UACN,GAAI,EAAQA,GACjB/F,EAAO,QACF,GAAwB,kBAAb+F,EAAuB,CACvC,GAAgB,GAAZwgE,EAAsB,CACxB,MAAMoT,EAAO5zE,EAAS2nE,QAMtB,YALIiM,IACFA,EAAK9T,KAAO8T,EAAKjU,IAAK,GACtBytB,GAAkBpzB,EAAO4Z,KACzBA,EAAK9T,KAAO8T,EAAKjU,IAAK,IAG1B,CAAO,CACL1lE,EAAO,GACP,MAAMk0F,EAAWnuF,EAASgtB,EACrBmhE,GAAcjR,MAAqBl9E,EAEhB,IAAbmuF,GAAkBrvB,KACc,IAArCA,GAAyBqB,MAAMnzC,EACjChtB,EAASgtB,EAAI,GAEbhtB,EAASgtB,EAAI,EACbgtC,EAAMgI,WAAa,OANrBhiE,EAASo/E,KAAOtgB,EASpB,CACF,MAAWtV,EAAWxpD,IACpBA,EAAW,CAAE2nE,QAAS3nE,EAAUo/E,KAAMtgB,IACtC7kE,EAAO,KAEP+F,EAAW6sD,OAAO7sD,GACF,GAAZwgE,GACFvmE,EAAO,GACP+F,EAAW,CAACuiF,GAAgBviF,KAE5B/F,EAAO,GAGX+/D,EAAMh6D,SAAWA,EACjBg6D,EAAMwG,WAAavmE,CACrB,CACA,SAAS2zF,MAAc9wF,GACrB,MAAM2uD,EAAM,CAAC,EACb,IAAK,IAAIt8D,EAAI,EAAGA,EAAI2N,EAAK5N,OAAQC,IAAK,CACpC,MAAMi/F,EAAUtxF,EAAK3N,GACrB,IAAK,MAAMa,KAAOo+F,EAChB,GAAY,UAARp+F,EACEy7D,EAAIG,QAAUwiC,EAAQxiC,QACxBH,EAAIG,MAAQ,GAAe,CAACH,EAAIG,MAAOwiC,EAAQxiC,cAE5C,GAAY,UAAR57D,EACTy7D,EAAIlnD,MAAQ,EAAe,CAACknD,EAAIlnD,MAAO6pF,EAAQ7pF,aAC1C,GAAI0kD,EAAKj5D,GAAM,CACpB,MAAMowF,EAAW30B,EAAIz7D,GACfq+F,EAAWD,EAAQp+F,IACrBq+F,GAAYjO,IAAaiO,GAAc,EAAQjO,IAAaA,EAAShkF,SAASiyF,KAChF5iC,EAAIz7D,GAAOowF,EAAW,GAAGvgF,OAAOugF,EAAUiO,GAAYA,EAE1D,KAAmB,KAARr+F,IACTy7D,EAAIz7D,GAAOo+F,EAAQp+F,GAGzB,CACA,OAAOy7D,CACT,CACA,SAASkmB,GAAgBzG,EAAM75E,EAAU2oE,EAAOyH,EAAY,MAC1DpG,GAA2B6P,EAAM75E,EAAU,EAAG,CAC5C2oE,EACAyH,GAEJ,CAEA,MAAM6sB,GAAkBnT,KACxB,IAAIzhF,GAAM,EACV,SAASstF,GAAwBhtB,EAAOj6C,EAAQyiD,GAC9C,MAAMvoE,EAAO+/D,EAAM//D,KACb0/D,GAAc55C,EAASA,EAAO45C,WAAaK,EAAML,aAAe20B,GAChEj9F,EAAW,CACfqI,IAAKA,KACLsgE,QACA//D,OACA8lB,SACA45C,aACApvD,KAAM,KAENjc,KAAM,KACNi0E,QAAS,KAET91C,OAAQ,KACRiK,OAAQ,KAER03B,MAAO,IAAIZ,IACT,GAGFnd,OAAQ,KACRkmB,MAAO,KACPigB,QAAS,KACT+X,YAAa,KACbtuB,UAAW,KACX6Z,SAAU/5D,EAASA,EAAO+5D,SAAWnqF,OAAOqnB,OAAO2iD,EAAWmgB,UAC9DlE,YAAa,KACbxV,YAAa,GAEboZ,WAAY,KACZ/O,WAAY,KAEZvK,aAAcie,GAAsBlkF,EAAM0/D,GAC1CsI,aAAchE,GAAsBhkE,EAAM0/D,GAE1C5zC,KAAM,KAENi4C,QAAS,KAETmf,cAAep0B,EAEfuX,aAAcrmE,EAAKqmE,aAEnBf,IAAKxW,EACLrwD,KAAMqwD,EACNhrC,MAAOgrC,EACPnuC,MAAOmuC,EACPoX,MAAOpX,EACPisB,KAAMjsB,EACNsX,WAAYtX,EACZwuB,aAAc,KACdiX,WAAY,KACZC,WAAY,KAEZjsB,WACAkB,WAAYlB,EAAWA,EAASmD,UAAY,EAC5CsB,SAAU,KACVE,eAAe,EAGfmE,WAAW,EACX1N,aAAa,EACb4T,eAAe,EACfkd,GAAI,KACJ36F,EAAG,KACH2zF,GAAI,KACJxzF,EAAG,KACHkzF,GAAI,KACJ7yF,EAAG,KACH6wE,GAAI,KACJ4kB,IAAK,KACLpY,GAAI,KACJ7iF,EAAG,KACH4/F,IAAK,KACLC,IAAK,KACLhzB,GAAI,KACJizB,GAAI,MAYN,OAPEx9F,EAASkuE,IAAM,CAAEvyC,EAAG37B,GAEtBA,EAASkZ,KAAOwV,EAASA,EAAOxV,KAAOlZ,EACvCA,EAAS00B,KAAOA,GAAKhO,KAAK,KAAM1mB,GAC5B2oE,EAAM2W,IACR3W,EAAM2W,GAAGt/E,GAEJA,CACT,CACA,IAAI+xE,GAAkB,KACtB,MAAM0J,GAAqB,IAAM1J,IAAmBtE,GACpD,IAAIgwB,GACAC,GACJ,CACE,MAAMp7F,EAAIm3D,IACJkkC,EAAuB,CAACh/F,EAAKsnE,KACjC,IAAI23B,EAIJ,OAHMA,EAAUt7F,EAAE3D,MAChBi/F,EAAUt7F,EAAE3D,GAAO,IACrBi/F,EAAQ97F,KAAKmkE,GACL7jE,IACFw7F,EAAQ//F,OAAS,EACnB+/F,EAAQv7F,SAASiB,GAAQA,EAAIlB,KAE7Bw7F,EAAQ,GAAGx7F,EAAE,CAChB,EAEHq7F,GAA6BE,EAC3B,4BACCv7F,GAAM2vE,GAAkB3vE,IAE3Bs7F,GAAqBC,EACnB,uBACCv7F,GAAMo2E,GAAwBp2E,GAEnC,CACA,MAAM22E,GAAsB/4E,IAC1By9F,GAA2Bz9F,GAC3BA,EAAS+8D,MAAM/xD,IAAI,EAEfguE,GAAuB,KAC3BjH,IAAmBA,GAAgBhV,MAAM32D,MACzCq3F,GAA2B,KAAK,EAWlC,SAASra,GAAoBpjF,GAC3B,OAAkC,EAA3BA,EAAS2oE,MAAMwG,SACxB,CACA,IA4GI0uB,GACAC,GA7GAtlB,IAAwB,EAC5B,SAASod,GAAe51F,EAAUylE,GAAQ,GACxCA,GAASi4B,GAAmBj4B,GAC5B,MAAM,MAAE/4C,EAAK,SAAE/d,GAAa3O,EAAS2oE,MAC/BijB,EAAaxI,GAAoBpjF,GACvC2rF,GAAU3rF,EAAU0sB,EAAOk/D,EAAYnmB,GACvCwoB,GAAUjuF,EAAU2O,GACpB,MAAMovF,EAAcnS,EAAaoS,GAAuBh+F,EAAUylE,QAAS,EAE3E,OADAA,GAASi4B,IAAmB,GACrBK,CACT,CACA,SAASC,GAAuBh+F,EAAUylE,GAExC,MAAMkJ,EAAY3uE,EAAS4I,KAuB3B5I,EAASukF,YAA8BjmF,OAAOqnB,OAAO,MACrD3lB,EAASklE,MAAQG,GAAQ,IAAI/+C,MAAMtmB,EAASkuE,IAAKoW,KAIjD,MAAM,MAAE9I,GAAU7M,EAClB,GAAI6M,EAAO,CACT,MAAM0K,EAAelmF,EAASkmF,aAAe1K,EAAM39E,OAAS,EAAIsoF,GAAmBnmF,GAAY,KAC/F+4E,GAAmB/4E,GACnB29D,KACA,MAAMogC,EAAcr1B,GAClB8S,EACAx7E,EACA,EACA,CACgFA,EAAS0sB,MACvFw5D,IAKJ,GAFAnoB,KACAib,KACI5gB,EAAU2lC,GAAc,CAE1B,GADAA,EAAYzgG,KAAK07E,GAAsBA,IACnCvT,EACF,OAAOs4B,EAAYzgG,MAAM2gG,IACvBloB,GAAkB/1E,EAAUi+F,EAAgBx4B,EAAM,IACjDpN,OAAOn7D,IACR6sE,GAAY7sE,EAAG8C,EAAU,EAAE,IAG7BA,EAAS41E,SAAWmoB,CAQxB,MACEhoB,GAAkB/1E,EAAU+9F,EAAat4B,EAE7C,MACEy4B,GAAqBl+F,EAAUylE,EAEnC,CACA,SAASsQ,GAAkB/1E,EAAU+9F,EAAat4B,GAC5CtN,EAAW4lC,GACT/9F,EAAS4I,KAAKu1F,kBAChBn+F,EAASo+F,UAAYL,EAErB/9F,EAASg/C,OAAS++C,EAEX,EAASA,KASlB/9F,EAASgvE,WAAa9H,GAAU62B,IASlCG,GAAqBl+F,EAAUylE,EACjC,CAGA,SAAS44B,GAAwBC,GAC/BT,GAAUS,EACVR,GAAoBhgG,IACdA,EAAEkhD,OAAOu/C,MACXzgG,EAAE8wE,UAAY,IAAItoD,MAAMxoB,EAAEowE,IAAK4W,IACjC,CAEJ,CACA,MAAM,GAAgB,KAAO+Y,GAC7B,SAASK,GAAqBl+F,EAAUylE,EAAO+4B,GAC7C,MAAM7vB,EAAY3uE,EAAS4I,KAC3B,IAAK5I,EAASg/C,OAAQ,CACpB,IAAKymB,GAASo4B,KAAYlvB,EAAU3vB,OAAQ,CAC1C,MAAMy/C,EAAW9vB,EAAU8vB,UAAYza,GAAqBhkF,GAAUy+F,SACtE,GAAIA,EAAU,CACR,EAGJ,MAAM,gBAAEC,EAAe,gBAAExU,GAAoBlqF,EAASsoE,WAAW1iE,QAC3D,WAAE+4F,EAAYzU,gBAAiB0U,GAA6BjwB,EAC5DkwB,EAAuB,EAC3B,EACE,CACEH,kBACAC,cAEFzU,GAEF0U,GAEFjwB,EAAU3vB,OAAS6+C,GAAQY,EAAUI,EAIvC,CACF,CACA7+F,EAASg/C,OAAS2vB,EAAU3vB,QAAU,EAClC8+C,IACFA,GAAiB99F,EAErB,CAEE+4E,GAAmB/4E,GACnB29D,KACA,IACEmpB,GAAa9mF,EACf,CAAE,QACA+9D,KACAib,IACF,CAWJ,CACA,SAAS8lB,GAAc9+F,GACrB,OAAOA,EAASm9F,aAAen9F,EAASm9F,WAAa,IAAI72E,MACvDtmB,EAASupB,MAeL,CACF,GAAAxiB,CAAIkC,EAAQtK,GAEV,OADA,GAAMqB,EAAU,MAAO,UAChBiJ,EAAOtK,EAChB,IAGN,CASA,SAASwnF,GAAmBnmF,GAC1B,MAAMkoF,EAAU/C,IAqBdnlF,EAASmlF,QAAUA,GAAW,CAAC,CAAC,EAgBhC,MAAO,CACL,SAAI57D,GACF,OAAOu1E,GAAc9+F,EACvB,EACA8uE,MAAO9uE,EAAS8uE,MAChBp6C,KAAM10B,EAAS00B,KACfwzD,SAGN,CACA,SAAS5O,GAAet5E,GACtB,GAAIA,EAASmlF,QACX,OAAOnlF,EAASk9F,cAAgBl9F,EAASk9F,YAAc,IAAI52E,MAAM4gD,GAAU7B,GAAQrlE,EAASmlF,UAAW,CACrG,GAAAp+E,CAAIkC,EAAQtK,GACV,OAAIA,KAAOsK,EACFA,EAAOtK,GACLA,KAAO0kF,GACTA,GAAoB1kF,GAAKqB,QAD3B,CAGT,EACA,GAAAsH,CAAI2B,EAAQtK,GACV,OAAOA,KAAOsK,GAAUtK,KAAO0kF,EACjC,IAGN,CACA,MAAM0b,GAAa,kBACbC,GAAYnrC,GAAQA,EAAItwD,QAAQw7F,IAAar8F,GAAMA,EAAEyT,gBAAe5S,QAAQ,QAAS,IAC3F,SAAS0uE,GAAiBtD,EAAWswB,GAAkB,GACrD,OAAO9mC,EAAWwW,GAAaA,EAAUuwB,aAAevwB,EAAUjtE,KAAOitE,EAAUjtE,MAAQu9F,GAAmBtwB,EAAUwwB,MAC1H,CACA,SAASv2B,GAAoB5oE,EAAU2uE,EAAWpF,GAAS,GACzD,IAAI7nE,EAAOuwE,GAAiBtD,GAC5B,IAAKjtE,GAAQitE,EAAUywB,OAAQ,CAC7B,MAAM/nF,EAAQs3D,EAAUywB,OAAO/nF,MAAM,mBACjCA,IACF3V,EAAO2V,EAAM,GAEjB,CACA,IAAK3V,GAAQ1B,GAAYA,EAAS0uB,OAAQ,CACxC,MAAM2wE,EAAqBntB,IACzB,IAAK,MAAMvzE,KAAOuzE,EAChB,GAAIA,EAASvzE,KAASgwE,EACpB,OAAOhwE,CAEX,EAEF+C,EAAO29F,EACLr/F,EAASmoF,YAAcnoF,EAAS0uB,OAAO9lB,KAAKu/E,aACzCkX,EAAkBr/F,EAASsoE,WAAW6f,WAC7C,CACA,OAAOzmF,EAAOs9F,GAASt9F,GAAQ6nE,EAAS,MAAQ,WAClD,CACA,SAAS2yB,GAAiBv/F,GACxB,OAAOw7D,EAAWx7D,IAAU,cAAeA,CAC7C,CAEA,MAAM,GAAW,CAACopE,EAAiBC,IAC1BnI,GAAWkI,EAAiBC,EAAcwS,IAGnD,SAASj2E,GAAEqG,EAAM02F,EAAiB3wF,GAChC,MAAMhM,EAAIgkB,UAAU9oB,OACpB,OAAU,IAAN8E,EACE,EAAS28F,KAAqB,EAAQA,GACpCpvB,GAAQovB,GACH5vB,GAAY9mE,EAAM,KAAM,CAAC02F,IAE3B5vB,GAAY9mE,EAAM02F,GAElB5vB,GAAY9mE,EAAM,KAAM02F,IAG7B38F,EAAI,EACNgM,EAAW3Q,MAAMO,UAAU+M,MAAM5M,KAAKioB,UAAW,GAClC,IAANhkB,GAAWutE,GAAQvhE,KAC5BA,EAAW,CAACA,IAEP+gE,GAAY9mE,EAAM02F,EAAiB3wF,GAE9C,CAMA,SAAS,KAEL,aA4KJ,CAEA,SAAS4wF,GAAS1C,EAAM79C,EAAQ7I,EAAOv7B,GACrC,MAAMoyD,EAAS72B,EAAMv7B,GACrB,GAAIoyD,GAAUwyB,GAAWxyB,EAAQ6vB,GAC/B,OAAO7vB,EAET,MAAM5S,EAAMpb,IAEZ,OADAob,EAAIyiC,KAAOA,EAAKvxF,QACT6qC,EAAMv7B,GAASw/C,CACxB,CACA,SAASolC,GAAWxyB,EAAQ6vB,GAC1B,MAAM5tF,EAAO+9D,EAAO6vB,KACpB,GAAI5tF,EAAKpR,QAAUg/F,EAAKh/F,OACtB,OAAO,EAET,IAAK,IAAIC,EAAI,EAAGA,EAAImR,EAAKpR,OAAQC,IAC/B,GAAIi7D,EAAW9pD,EAAKnR,GAAI++F,EAAK/+F,IAC3B,OAAO,EAMX,OAHI24E,GAAqB,GAAKE,IAC5BA,GAAa70E,KAAKkrE,IAEb,CACT,CAEA,MAAMrtE,GAAU,QACV,GAA4D,EAC5D8/F,GAAmB31B,GACnB41B,QAA6F,EAC7FC,GAA2G,EAC3GC,GAAY,CAChBjK,2BACAC,kBACAlnB,uBACAf,+BACAuC,QAASA,GACTZ,mBAEIuwB,GAAWD,GACXE,GAAgB,KAChBC,GAAc,KACdC,GAAmB,KCv4PnBC,GAAQ,6BACRC,GAAW,qCACX57E,GAA0B,qBAAbvjB,SAA2BA,SAAW,KACnDo/F,GAAoB77E,IAAuBA,GAAIjhB,cAAc,YAC7D+8F,GAAU,CACdxQ,OAAQ,CAAChhF,EAAO8f,EAAQikD,KACtBjkD,EAAOjB,aAAa7e,EAAO+jE,GAAU,KAAK,EAE5C1xE,OAAS2N,IACP,MAAM8f,EAAS9f,EAAM1F,WACjBwlB,GACFA,EAAOP,YAAYvf,EACrB,EAEFvL,cAAe,CAAC8b,EAAKxU,EAAW4f,EAAImC,KAClC,MAAMnd,EAAmB,QAAd5E,EAAsB2Z,GAAIZ,gBAAgBu8E,GAAO9gF,GAAqB,WAAdxU,EAAyB2Z,GAAIZ,gBAAgBw8E,GAAU/gF,GAAOmF,GAAIjhB,cAAc8b,EAAKoL,EAAK,CAAEA,WAAO,GAItK,MAHY,WAARpL,GAAoBuN,GAA2B,MAAlBA,EAAM2zE,UACrC9wF,EAAGlC,aAAa,WAAYqf,EAAM2zE,UAE7B9wF,CAAE,EAEXmgF,WAAa9iE,GAAStI,GAAIg8E,eAAe1zE,GACzCijE,cAAgBjjE,GAAStI,GAAIurE,cAAcjjE,GAC3CmmE,QAAS,CAACjjE,EAAMlD,KACdkD,EAAKywE,UAAY3zE,CAAI,EAEvBqmE,eAAgB,CAAC1jF,EAAIqd,KACnBrd,EAAGsd,YAAcD,CAAI,EAEvB1jB,WAAa4mB,GAASA,EAAK5mB,WAC3BymF,YAAc7/D,GAASA,EAAK6/D,YAC5B/rF,cAAgBkF,GAAawb,GAAI1gB,cAAckF,GAC/C,UAAAuqF,CAAW9jF,EAAIpQ,GACboQ,EAAGlC,aAAalO,EAAI,GACtB,EAKA,mBAAAo0F,CAAoB9C,EAAS/hE,EAAQikD,EAAQhoE,EAAW+S,EAAOC,GAC7D,MAAM6iF,EAAS7tB,EAASA,EAAO1lD,gBAAkByB,EAAOuiE,UACxD,GAAIvzE,IAAUA,IAAUC,GAAOD,EAAMiyE,cACnC,MAAO,EAEL,GADAjhE,EAAOjB,aAAa/P,EAAM8mB,WAAU,GAAOmuC,GACvCj1D,IAAUC,KAASD,EAAQA,EAAMiyE,aACnC,UAEC,CACLwQ,GAAkB93E,UAA0B,QAAd1d,EAAsB,QAAQ8lF,UAAgC,WAAd9lF,EAAyB,SAAS8lF,WAAmBA,EACnI,MAAMgO,EAAW0B,GAAkB1P,QACnC,GAAkB,QAAd9lF,GAAqC,WAAdA,EAAwB,CACjD,MAAMypC,EAAUqqD,EAASnxE,WACzB,MAAO8mB,EAAQ9mB,WACbmxE,EAASlxE,YAAY6mB,EAAQ9mB,YAE/BmxE,EAAStwE,YAAYimB,EACvB,CACA1lB,EAAOjB,aAAagxE,EAAU9rB,EAChC,CACA,MAAO,CAEL6tB,EAASA,EAAO7Q,YAAcjhE,EAAOpB,WAErCqlD,EAASA,EAAO1lD,gBAAkByB,EAAOuiE,UAE7C,GAGIwP,GAAa,aACbC,GAAY,YACZC,GAASjrF,OAAO,QAChBkrF,GAAa,CAACl0E,GAASoiD,WAAYvsE,GAAEu6E,GAAgB+jB,GAAuBn0E,GAAQoiD,GAC1F8xB,GAAW1B,YAAc,aACzB,MAAM4B,GAA+B,CACnCp/F,KAAM85D,OACN5yD,KAAM4yD,OACN/uC,IAAK,CACH7jB,KAAM6B,QACN6rE,SAAS,GAEX1sD,SAAU,CAAC4xC,OAAQ1uD,OAAQxO,QAC3ByiG,eAAgBvlC,OAChBwlC,iBAAkBxlC,OAClBylC,aAAczlC,OACd0lC,gBAAiB1lC,OACjB2lC,kBAAmB3lC,OACnB4lC,cAAe5lC,OACf6lC,eAAgB7lC,OAChB8lC,iBAAkB9lC,OAClB+lC,aAAc/lC,QAEVgmC,GAA4BZ,GAAWl0E,MAAwB,EACnE,CAAC,EACD8tD,GACAsmB,IAEI,GAAW,CAACjnB,EAAMpuE,EAAO,MACzB,EAAQouE,GACVA,EAAKx3E,SAASo/F,GAAOA,KAAMh2F,KAClBouE,GACTA,KAAQpuE,EACV,EAEIi2F,GAAuB7nB,KACpBA,IAAO,EAAQA,GAAQA,EAAKjK,MAAM6xB,GAAOA,EAAG5jG,OAAS,IAAKg8E,EAAKh8E,OAAS,GAEjF,SAASgjG,GAAuBhlB,GAC9B,MAAM8lB,EAAY,CAAC,EACnB,IAAK,MAAMhjG,KAAOk9E,EACVl9E,KAAOmiG,KACXa,EAAUhjG,GAAOk9E,EAASl9E,IAG9B,IAAqB,IAAjBk9E,EAASpvD,IACX,OAAOk1E,EAET,MAAM,KACJjgG,EAAO,IAAG,KACVkH,EAAI,SACJghB,EAAQ,eACRm3E,EAAiB,GAAGr/F,eAAiB,iBACrCs/F,EAAmB,GAAGt/F,iBAAmB,aACzCu/F,EAAe,GAAGv/F,aAAe,gBACjCw/F,EAAkBH,EAAc,kBAChCI,EAAoBH,EAAgB,cACpCI,EAAgBH,EAAY,eAC5BI,EAAiB,GAAG3/F,eAAiB,iBACrC4/F,EAAmB,GAAG5/F,iBAAmB,aACzC6/F,EAAe,GAAG7/F,cAChBm6E,EACE+lB,EAAYC,GAAkBj4E,GAC9Bk4E,EAAgBF,GAAaA,EAAU,GACvCG,EAAgBH,GAAaA,EAAU,IACvC,cACJjnB,EAAa,QACbC,EAAO,iBACPE,EAAgB,QAChBE,EAAO,iBACPE,EAAgB,eAChBC,EAAiBR,EAAa,SAC9BS,EAAWR,EAAO,kBAClBU,EAAoBR,GAClB6mB,EACEK,EAAc,CAACzyF,EAAI0yF,EAAU5kG,KACjC6kG,GAAsB3yF,EAAI0yF,EAAWb,EAAgBH,GACrDiB,GAAsB3yF,EAAI0yF,EAAWd,EAAoBH,GACzD3jG,GAAQA,GAAM,EAEV8kG,EAAc,CAAC5yF,EAAIlS,KACvBkS,EAAG6yF,YAAa,EAChBF,GAAsB3yF,EAAI8xF,GAC1Ba,GAAsB3yF,EAAIgyF,GAC1BW,GAAsB3yF,EAAI+xF,GAC1BjkG,GAAQA,GAAM,EAEVglG,EAAiBJ,GACd,CAAC1yF,EAAIlS,KACV,MAAMw8E,EAAOooB,EAAW7mB,EAAWR,EAC7Bh+E,EAAU,IAAMolG,EAAYzyF,EAAI0yF,EAAU5kG,GAChD,GAASw8E,EAAM,CAACtqE,EAAI3S,IACpB0lG,IAAU,KACRJ,GAAsB3yF,EAAI0yF,EAAWf,EAAkBH,GACvDwB,GAAmBhzF,EAAI0yF,EAAWb,EAAgBH,GAC7CS,GAAoB7nB,IACvB2oB,GAAmBjzF,EAAI3G,EAAMk5F,EAAellG,EAC9C,GACA,EAGN,OAAO,EAAO+kG,EAAW,CACvB,aAAAhnB,CAAcprE,GACZ,GAASorE,EAAe,CAACprE,IACzBgzF,GAAmBhzF,EAAIwxF,GACvBwB,GAAmBhzF,EAAIyxF,EACzB,EACA,cAAA7lB,CAAe5rE,GACb,GAAS4rE,EAAgB,CAAC5rE,IAC1BgzF,GAAmBhzF,EAAI2xF,GACvBqB,GAAmBhzF,EAAI4xF,EACzB,EACAvmB,QAASynB,GAAc,GACvBjnB,SAAUinB,GAAc,GACxB,OAAArnB,CAAQzrE,EAAIlS,GACVkS,EAAG6yF,YAAa,EAChB,MAAMxlG,EAAU,IAAMulG,EAAY5yF,EAAIlS,GACtCklG,GAAmBhzF,EAAI8xF,GACvBoB,KACAF,GAAmBhzF,EAAI+xF,GACvBgB,IAAU,KACH/yF,EAAG6yF,aAGRF,GAAsB3yF,EAAI8xF,GAC1BkB,GAAmBhzF,EAAIgyF,GAClBG,GAAoB1mB,IACvBwnB,GAAmBjzF,EAAI3G,EAAMm5F,EAAenlG,GAC9C,IAEF,GAASo+E,EAAS,CAACzrE,EAAI3S,GACzB,EACA,gBAAAk+E,CAAiBvrE,GACfyyF,EAAYzyF,GAAI,GAChB,GAASurE,EAAkB,CAACvrE,GAC9B,EACA,iBAAA+rE,CAAkB/rE,GAChByyF,EAAYzyF,GAAI,GAChB,GAAS+rE,EAAmB,CAAC/rE,GAC/B,EACA,gBAAA2rE,CAAiB3rE,GACf4yF,EAAY5yF,GACZ,GAAS2rE,EAAkB,CAAC3rE,GAC9B,GAEJ,CACA,SAASsyF,GAAkBj4E,GACzB,GAAgB,MAAZA,EACF,OAAO,KACF,GAAI,EAASA,GAClB,MAAO,CAAC84E,GAAS94E,EAAS0zD,OAAQolB,GAAS94E,EAAS8zD,QAC/C,CACL,MAAMt6E,EAAIs/F,GAAS94E,GACnB,MAAO,CAACxmB,EAAGA,EACb,CACF,CACA,SAASs/F,GAASt/D,GAChB,MAAMxb,EAAM0xC,EAASl2B,GAIrB,OAAOxb,CACT,CACA,SAAS26E,GAAmBhzF,EAAIozF,GAC9BA,EAAIx0F,MAAM,OAAO9L,SAASK,GAAMA,GAAK6M,EAAGkD,UAAUxO,IAAIvB,MACrD6M,EAAGoxF,MAAYpxF,EAAGoxF,IAA0B,IAAI39F,MAAQiB,IAAI0+F,EAC/D,CACA,SAAST,GAAsB3yF,EAAIozF,GACjCA,EAAIx0F,MAAM,OAAO9L,SAASK,GAAMA,GAAK6M,EAAGkD,UAAUxR,OAAOyB,KACzD,MAAMkgG,EAAOrzF,EAAGoxF,IACZiC,IACFA,EAAKl7F,OAAOi7F,GACPC,EAAKp7F,OACR+H,EAAGoxF,SAAU,GAGnB,CACA,SAAS2B,GAAUt9F,GACjBqgB,uBAAsB,KACpBA,sBAAsBrgB,EAAG,GAE7B,CACA,IAAI69F,GAAQ,EACZ,SAASL,GAAmBjzF,EAAIuzF,EAAcC,EAAiBnmG,GAC7D,MAAMuC,EAAKoQ,EAAGyzF,SAAWH,GACnBI,EAAoB,KACpB9jG,IAAOoQ,EAAGyzF,QACZpmG,GACF,EAEF,GAAImmG,EACF,OAAOh+F,WAAWk+F,EAAmBF,GAEvC,MAAM,KAAEn6F,EAAI,QAAEiyC,EAAO,UAAEqoD,GAAcC,GAAkB5zF,EAAIuzF,GAC3D,IAAKl6F,EACH,OAAOhM,IAET,MAAMwmG,EAAWx6F,EAAO,MACxB,IAAIy6F,EAAQ,EACZ,MAAM1lF,EAAM,KACVpO,EAAG/E,oBAAoB44F,EAAUE,GACjCL,GAAmB,EAEfK,EAASpmG,IACTA,EAAE+L,SAAWsG,KAAQ8zF,GAASH,GAChCvlF,GACF,EAEF5Y,YAAW,KACLs+F,EAAQH,GACVvlF,GACF,GACCk9B,EAAU,GACbtrC,EAAGjF,iBAAiB84F,EAAUE,EAChC,CACA,SAASH,GAAkB5zF,EAAIuzF,GAC7B,MAAMl3E,EAASrqB,OAAOwW,iBAAiBxI,GACjCg0F,EAAsB5kG,IAASitB,EAAOjtB,IAAQ,IAAIwP,MAAM,MACxDq1F,EAAmBD,EAAmB,GAAG9C,WACzCgD,EAAsBF,EAAmB,GAAG9C,cAC5CiD,EAAoBC,GAAWH,EAAkBC,GACjDG,EAAkBL,EAAmB,GAAG7C,WACxCmD,EAAqBN,EAAmB,GAAG7C,cAC3CoD,EAAmBH,GAAWC,EAAiBC,GACrD,IAAIj7F,EAAO,KACPiyC,EAAU,EACVqoD,EAAY,EACZJ,IAAiBrC,GACfiD,EAAoB,IACtB96F,EAAO63F,GACP5lD,EAAU6oD,EACVR,EAAYO,EAAoB5lG,QAEzBilG,IAAiBpC,GACtBoD,EAAmB,IACrBl7F,EAAO83F,GACP7lD,EAAUipD,EACVZ,EAAYW,EAAmBhmG,SAGjCg9C,EAAUh2C,KAAKiW,IAAI4oF,EAAmBI,GACtCl7F,EAAOiyC,EAAU,EAAI6oD,EAAoBI,EAAmBrD,GAAaC,GAAY,KACrFwC,EAAYt6F,EAAOA,IAAS63F,GAAagD,EAAoB5lG,OAASgmG,EAAmBhmG,OAAS,GAEpG,MAAMkmG,EAAen7F,IAAS63F,IAAc,yBAAyBvqF,KACnEqtF,EAAmB,GAAG9C,cAAsBjiG,YAE9C,MAAO,CACLoK,OACAiyC,UACAqoD,YACAa,eAEJ,CACA,SAASJ,GAAWK,EAAQpC,GAC1B,MAAOoC,EAAOnmG,OAAS+jG,EAAU/jG,OAC/BmmG,EAASA,EAAOx1F,OAAOw1F,GAEzB,OAAOn/F,KAAKiW,OAAO8mF,EAAUz9F,KAAI,CAACrB,EAAGhF,IAAMmmG,GAAKnhG,GAAKmhG,GAAKD,EAAOlmG,MACnE,CACA,SAASmmG,GAAK/tC,GACZ,MAAU,SAANA,EACK,EACyC,IAA3CppD,OAAOopD,EAAE5qD,MAAM,GAAI,GAAG/H,QAAQ,IAAK,KAC5C,CACA,SAASk/F,KACP,OAAO1hG,SAASyR,KAAK6G,YACvB,CAEA,SAAS6qF,GAAW30F,EAAI5S,EAAOwnG,GAC7B,MAAMC,EAAoB70F,EAAGoxF,IACzByD,IACFznG,GAASA,EAAQ,CAACA,KAAUynG,GAAqB,IAAIA,IAAoBxjG,KAAK,MAEnE,MAATjE,EACF4S,EAAGhC,gBAAgB,SACV42F,EACT50F,EAAGlC,aAAa,QAAS1Q,GAEzB4S,EAAGyF,UAAYrY,CAEnB,CAEA,MAAM0nG,GAAc3uF,OAAO,QACrB4uF,GAAQ,CACZ,WAAA9c,CAAYj4E,GAAI,MAAE5S,IAAS,WAAEgtB,IAC3Bpa,EAAG80F,IAAoC,SAArB90F,EAAG2D,MAAMC,QAAqB,GAAK5D,EAAG2D,MAAMC,QAC1DwW,GAAchtB,EAChBgtB,EAAWyzD,YAAY7tE,GAEvBg1F,GAAWh1F,EAAI5S,EAEnB,EACA,OAAAs3C,CAAQ1kC,GAAI,MAAE5S,IAAS,WAAEgtB,IACnBA,GAAchtB,GAChBgtB,EAAW2zD,MAAM/tE,EAErB,EACA,OAAAkqE,CAAQlqE,GAAI,MAAE5S,EAAK,SAAEq8D,IAAY,WAAErvC,KAC5BhtB,KAAWq8D,IAEZrvC,EACEhtB,GACFgtB,EAAWyzD,YAAY7tE,GACvBg1F,GAAWh1F,GAAI,GACfoa,EAAW2zD,MAAM/tE,IAEjBoa,EAAW+zD,MAAMnuE,GAAI,KACnBg1F,GAAWh1F,GAAI,EAAM,IAIzBg1F,GAAWh1F,EAAI5S,GAEnB,EACA,aAAAirF,CAAcr4E,GAAI,MAAE5S,IAClB4nG,GAAWh1F,EAAI5S,EACjB,GAEF,SAAS4nG,GAAWh1F,EAAI5S,GACtB4S,EAAG2D,MAAMC,QAAUxW,EAAQ4S,EAAG80F,IAAe,MAC/C,CACA,SAASG,KACPF,GAAMG,YAAc,EAAG9nG,YACrB,IAAKA,EACH,MAAO,CAAEuW,MAAO,CAAEC,QAAS,QAC7B,CAEJ,CAEA,MAAMuxF,GAAehvF,OAAoE,IACzF,SAASivF,GAAWp/B,GAClB,MAAMvlE,EAAWy7E,KACjB,IAAKz7E,EAEH,OAEF,MAAM4kG,EAAkB5kG,EAAS+6F,GAAK,CAAC8J,EAAOt/B,EAAOvlE,EAASklE,UAC5DlnE,MAAMyJ,KACJ1G,SAASiI,iBAAiB,kBAAkBhJ,EAASqI,UACrDhG,SAASytB,GAASg1E,GAAch1E,EAAM+0E,IAAM,EAE1CE,EAAU,KACd,MAAMF,EAAOt/B,EAAOvlE,EAASklE,OAC7B8/B,GAAehlG,EAASkxE,QAAS2zB,GACjCD,EAAgBC,EAAK,EAEvBttB,GAAgBwtB,GAChB1qB,IAAU,KACR,MAAM4qB,EAAK,IAAI7vE,iBAAiB2vE,GAChCE,EAAG1wE,QAAQv0B,EAASkxE,QAAQ3hE,GAAGrG,WAAY,CAAEssB,WAAW,IACxDisD,IAAY,IAAMwjB,EAAGjvE,cAAa,GAEtC,CACA,SAASgvE,GAAer8B,EAAOk8B,GAC7B,GAAsB,IAAlBl8B,EAAMwG,UAAiB,CACzB,MAAMgC,EAAWxI,EAAMwI,SACvBxI,EAAQwI,EAASC,aACbD,EAASwC,gBAAkBxC,EAASiD,aACtCjD,EAAS7U,QAAQx6D,MAAK,KACpBkjG,GAAe7zB,EAASC,aAAcyzB,EAAK,GAGjD,CACA,MAAOl8B,EAAMpzD,UACXozD,EAAQA,EAAMpzD,UAAU27D,QAE1B,GAAsB,EAAlBvI,EAAMwG,WAAiBxG,EAAMp5D,GAC/Bu1F,GAAcn8B,EAAMp5D,GAAIs1F,QACnB,GAAIl8B,EAAM//D,OAASo1E,GACxBrV,EAAMh6D,SAAStM,SAASK,GAAMsiG,GAAetiG,EAAGmiG,UAC3C,GAAIl8B,EAAM//D,OAAS8nF,GAAQ,CAChC,IAAI,GAAEnhF,EAAE,OAAEojE,GAAWhK,EACrB,MAAOp5D,EAAI,CAET,GADAu1F,GAAcv1F,EAAIs1F,GACdt1F,IAAOojE,EACT,MACFpjE,EAAKA,EAAGogF,WACV,CACF,CACF,CACA,SAASmV,GAAcv1F,EAAIs1F,GACzB,GAAoB,IAAhBt1F,EAAG8I,SAAgB,CACrB,MAAMnF,EAAQ3D,EAAG2D,MACjB,IAAIinD,EAAU,GACd,IAAK,MAAMx7D,KAAOkmG,EAChB3xF,EAAMgJ,YAAY,KAAKvd,IAAOkmG,EAAKlmG,IACnCw7D,GAAW,KAAKx7D,MAAQkmG,EAAKlmG,MAE/BuU,EAAMwxF,IAAgBvqC,CACxB,CACF,CAEA,SAAS+qC,GAAW31F,EAAIN,EAAMhS,GAC5B,MAAMiW,EAAQ3D,EAAG2D,MACXiyF,EAAc,EAASloG,GAC7B,GAAIA,IAASkoG,EAAa,CACxB,GAAIl2F,IAAS,EAASA,GACpB,IAAK,MAAMtQ,KAAOsQ,EACC,MAAbhS,EAAK0B,IACPymG,GAASlyF,EAAOvU,EAAK,IAI3B,IAAK,MAAMA,KAAO1B,EAChBmoG,GAASlyF,EAAOvU,EAAK1B,EAAK0B,GAE9B,KAAO,CACL,MAAM0mG,EAAiBnyF,EAAMC,QAC7B,GAAIgyF,GACF,GAAIl2F,IAAShS,EAAM,CACjB,MAAMqoG,EAAapyF,EAAMwxF,IACrBY,IACFroG,GAAQ,IAAMqoG,GAEhBpyF,EAAMinD,QAAUl9D,CAClB,OACSgS,GACTM,EAAGhC,gBAAgB,SAEjB82F,MAAe90F,IACjB2D,EAAMC,QAAUkyF,EAEpB,CACF,CACA,MACME,GAAc,iBACpB,SAASH,GAASlyF,EAAOxR,EAAM0hC,GAC7B,GAAI,EAAQA,GACVA,EAAI/gC,SAASD,GAAMgjG,GAASlyF,EAAOxR,EAAMU,UAWzC,GATW,MAAPghC,IACFA,EAAM,IAQJ1hC,EAAK0J,WAAW,MAClB8H,EAAMgJ,YAAYxa,EAAM0hC,OACnB,CACL,MAAMoiE,EAAWC,GAAWvyF,EAAOxR,GAC/B6jG,GAAYrvF,KAAKktB,GACnBlwB,EAAMgJ,YACJ,EAAUspF,GACVpiE,EAAI7/B,QAAQgiG,GAAa,IACzB,aAGFryF,EAAMsyF,GAAYpiE,CAEtB,CAEJ,CACA,MAAMsiE,GAAW,CAAC,SAAU,MAAO,MAC7BC,GAAc,CAAC,EACrB,SAASF,GAAWvyF,EAAO0yF,GACzB,MAAM54B,EAAS24B,GAAYC,GAC3B,GAAI54B,EACF,OAAOA,EAET,IAAItrE,EAAOk3D,EAASgtC,GACpB,GAAa,WAATlkG,GAAqBA,KAAQwR,EAC/B,OAAOyyF,GAAYC,GAAWlkG,EAEhCA,EAAO,EAAWA,GAClB,IAAK,IAAI5D,EAAI,EAAGA,EAAI4nG,GAAS7nG,OAAQC,IAAK,CACxC,MAAM0nG,EAAWE,GAAS5nG,GAAK4D,EAC/B,GAAI8jG,KAAYtyF,EACd,OAAOyyF,GAAYC,GAAWJ,CAElC,CACA,OAAOI,CACT,CAEA,MAAMC,GAAU,+BAChB,SAASC,GAAUv2F,EAAI5Q,EAAKhC,EAAOwnG,EAAOnkG,GACxC,GAAImkG,GAASxlG,EAAIyM,WAAW,UACb,MAATzO,EACF4S,EAAGw2F,kBAAkBF,GAASlnG,EAAI2M,MAAM,EAAG3M,EAAId,SAE/C0R,EAAGy2F,eAAeH,GAASlnG,EAAKhC,OAE7B,CACL,MAAMspG,EAAYlrC,GAAqBp8D,GAC1B,MAAThC,GAAiBspG,IAAc,GAAmBtpG,GACpD4S,EAAGhC,gBAAgB5O,GAEnB4Q,EAAGlC,aAAa1O,EAAKsnG,EAAY,GAAKtpG,EAE1C,CACF,CAEA,SAASupG,GAAa32F,EAAI5Q,EAAKhC,EAAO6zE,EAAcoC,EAAiBC,EAAgB0hB,GACnF,GAAY,cAAR51F,GAA+B,gBAARA,EAKzB,OAJI6xE,GACF+jB,EAAgB/jB,EAAcoC,EAAiBC,QAEjDtjE,EAAG5Q,GAAgB,MAAThC,EAAgB,GAAKA,GAGjC,MAAMwiB,EAAM5P,EAAGoF,QACf,GAAY,UAARhW,GAA2B,aAARwgB,IACtBA,EAAIpU,SAAS,KAAM,CAClBwE,EAAGm2D,OAAS/oE,EACZ,MAAMq8D,EAAmB,WAAR75C,EAAmB5P,EAAGvB,aAAa,SAAWuB,EAAG5S,MAC5DmjE,EAAoB,MAATnjE,EAAgB,GAAKA,EAOtC,OANIq8D,IAAa8G,IACfvwD,EAAG5S,MAAQmjE,QAEA,MAATnjE,GACF4S,EAAGhC,gBAAgB5O,GAGvB,CACA,IAAIwnG,GAAa,EACjB,GAAc,KAAVxpG,GAAyB,MAATA,EAAe,CACjC,MAAMiM,SAAc2G,EAAG5Q,GACV,YAATiK,EACFjM,EAAQ,GAAmBA,GACT,MAATA,GAA0B,WAATiM,GAC1BjM,EAAQ,GACRwpG,GAAa,GACK,WAATv9F,IACTjM,EAAQ,EACRwpG,GAAa,EAEjB,CACA,IACE52F,EAAG5Q,GAAOhC,CACZ,CAAE,MAAOO,GACH,CAMN,CACAipG,GAAc52F,EAAGhC,gBAAgB5O,EACnC,CAEA,SAAS2L,GAAiBiF,EAAIjL,EAAOkE,EAASvI,GAC5CsP,EAAGjF,iBAAiBhG,EAAOkE,EAASvI,EACtC,CACA,SAASuK,GAAoB+E,EAAIjL,EAAOkE,EAASvI,GAC/CsP,EAAG/E,oBAAoBlG,EAAOkE,EAASvI,EACzC,CACA,MAAMmmG,GAAS1wF,OAAO,QACtB,SAAS2wF,GAAW92F,EAAIq2F,EAASU,EAAWC,EAAWvmG,EAAW,MAChE,MAAMwmG,EAAWj3F,EAAG62F,MAAY72F,EAAG62F,IAAU,CAAC,GACxCK,EAAkBD,EAASZ,GACjC,GAAIW,GAAaE,EACfA,EAAgB9pG,MAAQ4pG,MACnB,CACL,MAAO7kG,EAAMzB,GAAWymG,GAAUd,GAClC,GAAIW,EAAW,CACb,MAAMI,EAAUH,EAASZ,GAAWgB,GAAcL,EAAWvmG,GAC7DsK,GAAiBiF,EAAI7N,EAAMilG,EAAS1mG,EACtC,MAAWwmG,IACTj8F,GAAoB+E,EAAI7N,EAAM+kG,EAAiBxmG,GAC/CumG,EAASZ,QAAW,EAExB,CACF,CACA,MAAMiB,GAAoB,4BAC1B,SAASH,GAAUhlG,GACjB,IAAIzB,EACJ,GAAI4mG,GAAkB3wF,KAAKxU,GAAO,CAEhC,IAAImB,EADJ5C,EAAU,CAAC,EAEX,MAAO4C,EAAInB,EAAK2V,MAAMwvF,IACpBnlG,EAAOA,EAAK4J,MAAM,EAAG5J,EAAK7D,OAASgF,EAAE,GAAGhF,QACxCoC,EAAQ4C,EAAE,GAAGY,gBAAiB,CAElC,CACA,MAAMa,EAAoB,MAAZ5C,EAAK,GAAaA,EAAK4J,MAAM,GAAK,EAAU5J,EAAK4J,MAAM,IACrE,MAAO,CAAChH,EAAOrE,EACjB,CACA,IAAI6mG,GAAY,EAChB,MAAMrkG,GAAoB5F,QAAQD,UAC5BmqG,GAAS,IAAMD,KAAcrkG,GAAEnF,MAAK,IAAMwpG,GAAY,IAAIA,GAAY7hF,KAAK4J,OACjF,SAAS+3E,GAAcI,EAAchnG,GACnC,MAAM2mG,EAAWzpG,IACf,GAAKA,EAAE+pG,MAEA,GAAI/pG,EAAE+pG,MAAQN,EAAQO,SAC3B,YAFAhqG,EAAE+pG,KAAOhiF,KAAK4J,MAIhBm7C,GACEm9B,GAA8BjqG,EAAGypG,EAAQhqG,OACzCqD,EACA,EACA,CAAC9C,GACF,EAIH,OAFAypG,EAAQhqG,MAAQqqG,EAChBL,EAAQO,SAAWH,KACZJ,CACT,CACA,SAASQ,GAA8BjqG,EAAGP,GACxC,GAAI,EAAQA,GAAQ,CAClB,MAAMyqG,EAAelqG,EAAEuwC,yBAKvB,OAJAvwC,EAAEuwC,yBAA2B,KAC3B25D,EAAa1oG,KAAKxB,GAClBA,EAAEmqG,UAAW,CAAI,EAEZ1qG,EAAMwH,KAAKtC,GAAQu1F,IAAQA,EAAGiQ,UAAYxlG,GAAMA,EAAGu1F,IAC5D,CACE,OAAOz6F,CAEX,CAEA,MAAM2qG,GAAc3oG,GAA8B,MAAtBA,EAAIs1D,WAAW,IAAoC,MAAtBt1D,EAAIs1D,WAAW,IACxEt1D,EAAIs1D,WAAW,GAAK,IAAMt1D,EAAIs1D,WAAW,GAAK,IACxCw7B,GAAY,CAAClgF,EAAI5Q,EAAK2nG,EAAWC,EAAW57F,EAAW6lE,EAAcoC,EAAiBC,EAAgB0hB,KAC1G,MAAM4P,EAAsB,QAAdx5F,EACF,UAARhM,EACFulG,GAAW30F,EAAIg3F,EAAWpC,GACT,UAARxlG,EACTumG,GAAW31F,EAAI+2F,EAAWC,GACjB3uC,EAAKj5D,GACTk5D,EAAgBl5D,IACnB0nG,GAAW92F,EAAI5Q,EAAK2nG,EAAWC,EAAW3zB,IAExB,MAAXj0E,EAAI,IAAcA,EAAMA,EAAI2M,MAAM,GAAI,GAAmB,MAAX3M,EAAI,IAAcA,EAAMA,EAAI2M,MAAM,GAAI,GAASi8F,GAAgBh4F,EAAI5Q,EAAK4nG,EAAWpC,IAC1I+B,GACE32F,EACA5Q,EACA4nG,EACA/1B,EACAoC,EACAC,EACA0hB,IAGU,eAAR51F,EACF4Q,EAAGi4F,WAAajB,EACC,gBAAR5nG,IACT4Q,EAAGk4F,YAAclB,GAEnBT,GAAUv2F,EAAI5Q,EAAK4nG,EAAWpC,GAChC,EAEF,SAASoD,GAAgBh4F,EAAI5Q,EAAKhC,EAAOwnG,GACvC,GAAIA,EACF,MAAY,cAARxlG,GAA+B,gBAARA,MAGvBA,KAAO4Q,GAAM+3F,GAAW3oG,IAAQw5D,EAAWx7D,IAKjD,GAAY,eAARgC,GAAgC,cAARA,GAA+B,cAARA,EACjD,OAAO,EAET,GAAY,SAARA,EACF,OAAO,EAET,GAAY,SAARA,GAAiC,UAAf4Q,EAAGoF,QACvB,OAAO,EAET,GAAY,SAARhW,GAAiC,aAAf4Q,EAAGoF,QACvB,OAAO,EAET,GAAY,UAARhW,GAA2B,WAARA,EAAkB,CACvC,MAAMwgB,EAAM5P,EAAGoF,QACf,GAAY,QAARwK,GAAyB,UAARA,GAA2B,WAARA,GAA4B,WAARA,EAC1D,OAAO,CAEX,CACA,QAAImoF,GAAW3oG,KAAQ,EAAShC,KAGzBgC,KAAO4Q,CAChB;2BAIA,SAASm4F,GAAoBznG,EAAS0nG,GACpC,MAAMC,EAAO3pB,GAAgBh+E,GAC7B,MAAM4nG,UAAyBC,GAC7B,WAAAlqG,CAAYmqG,GACVliG,MAAM+hG,EAAMG,EAAcJ,EAC5B,EAGF,OADAE,EAAiBzuC,IAAMwuC,EAChBC,CACT;2BAEA,MAAMG,GAAqD/nG,GAClCynG,GAAoBznG,EAASizE,IAEhD+0B,GAAmC,qBAAhBl4E,YAA8BA,YAAc,QAErE,MAAM+3E,WAAmBG,GACvB,WAAArqG,CAAYsqG,EAAMtd,EAAS,CAAC,EAAG+c,GAC7B9hG,QACAjG,KAAKsoG,KAAOA,EACZtoG,KAAKgrF,OAASA,EAIdhrF,KAAKmrF,UAAY,KACjBnrF,KAAKuoG,YAAa,EAClBvoG,KAAKwoG,WAAY,EACjBxoG,KAAKyoG,aAAe,KACpBzoG,KAAK0oG,IAAM,KACP1oG,KAAKqnC,YAAc0gE,EACrBA,EAAS/nG,KAAKo8F,eAAgBp8F,KAAKqnC,aAOnCrnC,KAAKoZ,aAAa,CAAEi8D,KAAM,SACrBr1E,KAAKsoG,KAAK9pB,eACbx+E,KAAK2oG,cAAc3oG,KAAKsoG,MAG9B,CACA,iBAAAM,GACE5oG,KAAKuoG,YAAa,EACbvoG,KAAKmrF,YACJnrF,KAAKwoG,UACPxoG,KAAK6oG,UAEL7oG,KAAK8oG,cAGX,CACA,oBAAAC,GACE/oG,KAAKuoG,YAAa,EACdvoG,KAAK0oG,MACP1oG,KAAK0oG,IAAItyE,aACTp2B,KAAK0oG,IAAM,MAEb15E,IAAS,KACFhvB,KAAKuoG,aACRnpD,GAAO,KAAMp/C,KAAKqnC,YAClBrnC,KAAKmrF,UAAY,KACnB,GAEJ,CAIA,WAAA2d,GACE9oG,KAAKwoG,WAAY,EACjB,IAAK,IAAItqG,EAAI,EAAGA,EAAI8B,KAAK6N,WAAW5P,OAAQC,IAC1C8B,KAAKgpG,SAAShpG,KAAK6N,WAAW3P,GAAG4D,MAEnC9B,KAAK0oG,IAAM,IAAIlzE,kBAAkBE,IAC/B,IAAK,MAAMzyB,KAAKyyB,EACd11B,KAAKgpG,SAAS/lG,EAAEgmG,cAClB,IAEFjpG,KAAK0oG,IAAI/zE,QAAQ30B,KAAM,CAAE6N,YAAY,IACrC,MAAM7Q,EAAU,CAACw8D,EAAK0vC,GAAU,KAC9B,MAAM,MAAEp8E,EAAK,OAAEd,GAAWwtC,EAC1B,IAAI2vC,EACJ,GAAIr8E,IAAU,EAAQA,GACpB,IAAK,MAAM/tB,KAAO+tB,EAAO,CACvB,MAAM45D,EAAM55D,EAAM/tB,IACd2nF,IAAQx5E,QAAUw5E,GAAOA,EAAI19E,OAASkE,UACpCnO,KAAOiB,KAAKgrF,SACdhrF,KAAKgrF,OAAOjsF,GAAO26D,EAAS15D,KAAKgrF,OAAOjsF,MAEzCoqG,IAAgBA,EAA8BzqG,OAAOqnB,OAAO,QAAQizC,EAAWj6D,KAAQ,EAE5F,CAEFiB,KAAKyoG,aAAeU,EAChBD,GACFlpG,KAAK2oG,cAAcnvC,GAErBx5D,KAAKopG,aAAap9E,GAClBhsB,KAAK6oG,SAAS,EAEVQ,EAAWrpG,KAAKsoG,KAAK9pB,cACvB6qB,EACFA,IAAW3rG,MAAM87D,GAAQx8D,EAAQw8D,GAAK,KAEtCx8D,EAAQgD,KAAKsoG,KAEjB,CACA,aAAAK,CAAcnvC,GACZ,MAAM,MAAE1sC,GAAU0sC,EACZ8vC,EAAmB,EAAQx8E,GAASA,EAAQpuB,OAAOP,KAAK2uB,GAAS,CAAC,GACxE,IAAK,MAAM/tB,KAAOL,OAAOP,KAAK6B,MACb,MAAXjB,EAAI,IAAcuqG,EAAiBn+F,SAASpM,IAC9CiB,KAAKupG,SAASxqG,EAAKiB,KAAKjB,IAAM,GAAM,GAGxC,IAAK,MAAMA,KAAOuqG,EAAiB/kG,IAAIy0D,GACrCt6D,OAAOqO,eAAe/M,KAAMjB,EAAK,CAC/B,GAAAoI,GACE,OAAOnH,KAAKwpG,SAASzqG,EACvB,EACA,GAAA2E,CAAI8/B,GACFxjC,KAAKupG,SAASxqG,EAAKykC,EACrB,GAGN,CACA,QAAAwlE,CAASjqG,GACP,IAAIhC,EAAQiD,KAAKoO,aAAarP,GAC9B,MAAM+tF,EAAW9zB,EAAWj6D,GACxBiB,KAAKyoG,cAAgBzoG,KAAKyoG,aAAa3b,KACzC/vF,EAAQ28D,EAAS38D,IAEnBiD,KAAKupG,SAASzc,EAAU/vF,GAAO,EACjC,CAIA,QAAAysG,CAASzqG,GACP,OAAOiB,KAAKgrF,OAAOjsF,EACrB,CAIA,QAAAwqG,CAASxqG,EAAKykC,EAAKimE,GAAgB,EAAMC,GAAe,GAClDlmE,IAAQxjC,KAAKgrF,OAAOjsF,KACtBiB,KAAKgrF,OAAOjsF,GAAOykC,EACfkmE,GAAgB1pG,KAAKmrF,WACvBnrF,KAAK6oG,UAEHY,KACU,IAARjmE,EACFxjC,KAAKyN,aAAa,EAAU1O,GAAM,IACV,kBAARykC,GAAmC,kBAARA,EAC3CxjC,KAAKyN,aAAa,EAAU1O,GAAMykC,EAAM,IAC9BA,GACVxjC,KAAK2N,gBAAgB,EAAU5O,KAIvC,CACA,OAAA8pG,GACEzpD,GAAOp/C,KAAKo8F,eAAgBp8F,KAAKqnC,WACnC,CACA,YAAA+0D,GACE,MAAMrzB,EAAQ+G,GAAY9vE,KAAKsoG,KAAM,EAAO,CAAC,EAAGtoG,KAAKgrF,SAuCrD,OAtCKhrF,KAAKmrF,YACRpiB,EAAM2W,GAAMt/E,IACVJ,KAAKmrF,UAAY/qF,EACjBA,EAAS0iF,MAAO,EAYhB,MAAM6mB,EAAW,CAACjlG,EAAOmH,KACvB7L,KAAK2M,cACH,IAAIwY,YAAYzgB,EAAO,CACrB+mB,OAAQ5f,IAEX,EAEHzL,EAAS00B,KAAO,CAACpwB,KAAUmH,KACzB89F,EAASjlG,EAAOmH,GACZ,EAAUnH,KAAWA,GACvBilG,EAAS,EAAUjlG,GAAQmH,EAC7B,EAEF,IAAIijB,EAAS9uB,KACb,MAAO8uB,EAASA,IAAWA,EAAOxlB,YAAcwlB,EAAO5K,MACrD,GAAI4K,aAAkBo5E,GAAY,CAChC9nG,EAAS0uB,OAASA,EAAOq8D,UACzB/qF,EAASyoF,SAAW/5D,EAAOq8D,UAAUtC,SACrC,KACF,CACF,GAGG9f,CACT,CACA,YAAAqgC,CAAap9E,GACPA,GACFA,EAAOvpB,SAASoqB,IACd,MAAMypC,EAAIn1D,SAASsC,cAAc,SACjC6yD,EAAErpC,YAAcJ,EAChB7sB,KAAKqnC,WAAW1Z,YAAY2oC,EACoB,GAKtD,EAGF,SAASszC,GAAa9nG,EAAO,UAC3B,CACE,MAAM1B,EAAWy7E,KACjB,IAAKz7E,EAEH,OAAO03D,EAET,MAAMvhC,EAAUn2B,EAAS4I,KAAKi8E,aAC9B,IAAK1uD,EAEH,OAAOuhC,EAET,MAAM+xC,EAAMtzE,EAAQz0B,GACpB,OAAK+nG,GAEI/xC,CAGX,CACF,CAEA,MAAMgyC,GAA8B,IAAIhqC,QAClCiqC,GAAiC,IAAIjqC,QACrCkqC,GAAYl0F,OAAO,WACnB,GAAaA,OAAO,YACpBm0F,GAAsB,CAC1BnoG,KAAM,kBACNgrB,MAAuB,EAAO,CAAC,EAAG80E,GAA2B,CAC3DriF,IAAKq8C,OACLsuC,UAAWtuC,SAEb,KAAAggB,CAAM9uD,GAAO,MAAEoiD,IACb,MAAM9uE,EAAWy7E,KACXxuB,EAAQ+sB,KACd,IAAIxJ,EACA7hE,EAmCJ,OAlCAiyE,IAAU,KACR,IAAKpQ,EAAa3yE,OAChB,OAEF,MAAMisG,EAAYp9E,EAAMo9E,WAAa,GAAGp9E,EAAMhrB,MAAQ,WACtD,IAAKqoG,GACHv5B,EAAa,GAAGjhE,GAChBvP,EAAS2oE,MAAMp5D,GACfu6F,GAEA,OAEFt5B,EAAanuE,QAAQ2nG,IACrBx5B,EAAanuE,QAAQ4nG,IACrB,MAAMC,EAAgB15B,EAAa5iE,OAAOu8F,IAC1C1H,KACAyH,EAAc7nG,SAASK,IACrB,MAAM6M,EAAK7M,EAAE6M,GACP2D,EAAQ3D,EAAG2D,MACjBqvF,GAAmBhzF,EAAIu6F,GACvB52F,EAAMwW,UAAYxW,EAAMoc,gBAAkBpc,EAAM2E,mBAAqB,GACrE,MAAM7S,EAAKuK,EAAGq6F,IAAc1sG,IACtBA,GAAKA,EAAE+L,SAAWsG,GAGjBrS,IAAK,aAAagZ,KAAKhZ,EAAEoJ,gBAC5BiJ,EAAG/E,oBAAoB,gBAAiBxF,GACxCuK,EAAGq6F,IAAa,KAChB1H,GAAsB3yF,EAAIu6F,GAC5B,EAEFv6F,EAAGjF,iBAAiB,gBAAiBtF,EAAG,GACxC,IAEG,KACL,MAAM62E,EAAW,GAAMnvD,GACjB09E,EAAqBvJ,GAAuBhlB,GAClD,IAAI18D,EAAM08D,EAAS18D,KAAO6+D,GAC1BxN,EAAe7hE,EACfA,EAAWmgE,EAAMwH,QAAUqF,GAAyB7M,EAAMwH,WAAa,GACvE,IAAK,IAAIx4E,EAAI,EAAGA,EAAI6Q,EAAS9Q,OAAQC,IAAK,CACxC,MAAM8Q,EAAQD,EAAS7Q,GACN,MAAb8Q,EAAMjQ,KACRw9E,GACEvtE,EACAstE,GAAuBttE,EAAOw7F,EAAoBn9C,EAAOjtD,GAK/D,CACA,GAAIwwE,EACF,IAAK,IAAI1yE,EAAI,EAAGA,EAAI0yE,EAAa3yE,OAAQC,IAAK,CAC5C,MAAM8Q,EAAQ4hE,EAAa1yE,GAC3Bq+E,GACEvtE,EACAstE,GAAuBttE,EAAOw7F,EAAoBn9C,EAAOjtD,IAE3D0pG,GAAYpmG,IAAIsL,EAAOA,EAAMW,GAAG0c,wBAClC,CAEF,OAAOyjD,GAAYvwD,EAAK,KAAMxQ,EAAS,CAE3C,GAGyBk7F,GAAoBn9E,MAC/C,MAAM29E,GAAkBR,GACxB,SAASG,GAAetnG,GACtB,MAAM6M,EAAK7M,EAAE6M,GACTA,EAAGq6F,KACLr6F,EAAGq6F,MAEDr6F,EAAG,KACLA,EAAG,KAEP,CACA,SAAS06F,GAAevnG,GACtBinG,GAAermG,IAAIZ,EAAGA,EAAE6M,GAAG0c,wBAC7B,CACA,SAASk+E,GAAiBznG,GACxB,MAAM4nG,EAASZ,GAAY3iG,IAAIrE,GACzB49C,EAASqpD,GAAe5iG,IAAIrE,GAC5B6nG,EAAKD,EAAO99E,KAAO8zB,EAAO9zB,KAC1Bg+E,EAAKF,EAAO/9E,IAAM+zB,EAAO/zB,IAC/B,GAAIg+E,GAAMC,EAAI,CACZ,MAAMt0C,EAAIxzD,EAAE6M,GAAG2D,MAGf,OAFAgjD,EAAExsC,UAAYwsC,EAAE5mC,gBAAkB,aAAai7E,OAAQC,OACvDt0C,EAAEr+C,mBAAqB,KAChBnV,CACT,CACF,CACA,SAASqnG,GAAgBx6F,EAAI2J,EAAM4wF,GACjC,MAAMnsB,EAAQpuE,EAAGi1B,YACXo+D,EAAOrzF,EAAGoxF,IACZiC,GACFA,EAAKvgG,SAASsgG,IACZA,EAAIx0F,MAAM,OAAO9L,SAASK,GAAMA,GAAKi7E,EAAMlrE,UAAUxR,OAAOyB,IAAG,IAGnEonG,EAAU37F,MAAM,OAAO9L,SAASK,GAAMA,GAAKi7E,EAAMlrE,UAAUxO,IAAIvB,KAC/Di7E,EAAMzqE,MAAMC,QAAU,OACtB,MAAMu/D,EAA8B,IAAlBx5D,EAAKb,SAAiBa,EAAOA,EAAKhQ,WACpDwpE,EAAUnlD,YAAYowD,GACtB,MAAM,aAAEomB,GAAiBZ,GAAkBxlB,GAE3C,OADAjL,EAAUvkD,YAAYwvD,GACfomB,CACT,CAEA,MAAM0G,GAAoB9hC,IACxB,MAAM9mE,EAAK8mE,EAAMj8C,MAAM,yBAA0B,EACjD,OAAO,EAAQ7qB,GAAOlF,GAAUs8D,EAAep3D,EAAIlF,GAASkF,CAAE,EAEhE,SAAS6oG,GAAmBxtG,GAC1BA,EAAE+L,OAAO0hG,WAAY,CACvB,CACA,SAASC,GAAiB1tG,GACxB,MAAM+L,EAAS/L,EAAE+L,OACbA,EAAO0hG,YACT1hG,EAAO0hG,WAAY,EACnB1hG,EAAOsD,cAAc,IAAIP,MAAM,UAEnC,CACA,MAAM6+F,GAAYn1F,OAAO,WACnBo1F,GAAa,CACjB,OAAAvjB,CAAQh4E,GAAMiqE,WAAW,KAAE3jC,EAAI,KAAExnC,EAAI,OAAEsxC,IAAYgpB,GACjDp5D,EAAGs7F,IAAaJ,GAAiB9hC,GACjC,MAAMoiC,EAAeprD,GAAUgpB,EAAMj8C,OAA8B,WAArBi8C,EAAMj8C,MAAM9jB,KAC1D0B,GAAiBiF,EAAIsmC,EAAO,SAAW,SAAU34C,IAC/C,GAAIA,EAAE+L,OAAO0hG,UACX,OACF,IAAIK,EAAWz7F,EAAG5S,MACd0R,IACF28F,EAAWA,EAAS38F,QAElB08F,IACFC,EAAW3xC,EAAc2xC,IAE3Bz7F,EAAGs7F,IAAWG,EAAS,IAErB38F,GACF/D,GAAiBiF,EAAI,UAAU,KAC7BA,EAAG5S,MAAQ4S,EAAG5S,MAAM0R,MAAM,IAGzBwnC,IACHvrC,GAAiBiF,EAAI,mBAAoBm7F,IACzCpgG,GAAiBiF,EAAI,iBAAkBq7F,IACvCtgG,GAAiBiF,EAAI,SAAUq7F,IAEnC,EAEA,OAAA32D,CAAQ1kC,GAAI,MAAE5S,IACZ4S,EAAG5S,MAAiB,MAATA,EAAgB,GAAKA,CAClC,EACA,YAAA8qF,CAAal4E,GAAI,MAAE5S,EAAO68E,WAAW,KAAE3jC,EAAI,KAAExnC,EAAI,OAAEsxC,IAAYgpB,GAE7D,GADAp5D,EAAGs7F,IAAaJ,GAAiB9hC,GAC7Bp5D,EAAGo7F,UACL,OACF,MAAMM,EAAUtrD,GAAsB,WAAZpwC,EAAG3G,KAAoBywD,EAAc9pD,EAAG5S,OAAS4S,EAAG5S,MACxEmjE,EAAoB,MAATnjE,EAAgB,GAAKA,EACtC,GAAIsuG,IAAYnrC,EAAhB,CAGA,GAAI/+D,SAASyZ,gBAAkBjL,GAAkB,UAAZA,EAAG3G,KAAkB,CACxD,GAAIitC,EACF,OAEF,GAAIxnC,GAAQkB,EAAG5S,MAAM0R,SAAWyxD,EAC9B,MAEJ,CACAvwD,EAAG5S,MAAQmjE,CATX,CAUF,GAEIorC,GAAiB,CAErBrzB,MAAM,EACN,OAAA0P,CAAQh4E,EAAIosB,EAAGgtC,GACbp5D,EAAGs7F,IAAaJ,GAAiB9hC,GACjCr+D,GAAiBiF,EAAI,UAAU,KAC7B,MAAM47F,EAAa57F,EAAG67F,YAChBC,EAAeC,GAAS/7F,GACxBg8F,EAAUh8F,EAAGg8F,QACbv2E,EAASzlB,EAAGs7F,IAClB,GAAI,EAAQM,GAAa,CACvB,MAAMvwF,EAAQ6gD,GAAa0vC,EAAYE,GACjCn9E,GAAmB,IAAXtT,EACd,GAAI2wF,IAAYr9E,EACd8G,EAAOm2E,EAAW38F,OAAO68F,SACpB,IAAKE,GAAWr9E,EAAO,CAC5B,MAAMs9E,EAAW,IAAIL,GACrBK,EAAStgF,OAAOtQ,EAAO,GACvBoa,EAAOw2E,EACT,CACF,MAAO,GAAIxzC,EAAMmzC,GAAa,CAC5B,MAAMlP,EAAS,IAAIj5F,IAAImoG,GACnBI,EACFtP,EAAOh4F,IAAIonG,GAEXpP,EAAOv0F,OAAO2jG,GAEhBr2E,EAAOinE,EACT,MACEjnE,EAAOy2E,GAAiBl8F,EAAIg8F,GAC9B,GAEJ,EAEAt3D,QAASy3D,GACT,YAAAjkB,CAAal4E,EAAIqqE,EAASjR,GACxBp5D,EAAGs7F,IAAaJ,GAAiB9hC,GACjC+iC,GAAWn8F,EAAIqqE,EAASjR,EAC1B,GAEF,SAAS+iC,GAAWn8F,GAAI,MAAE5S,EAAK,SAAEq8D,GAAY2P,GAC3Cp5D,EAAG67F,YAAczuG,EACb,EAAQA,GACV4S,EAAGg8F,QAAU9vC,GAAa9+D,EAAOgsE,EAAMj8C,MAAM/vB,QAAU,EAC9Cq7D,EAAMr7D,GACf4S,EAAGg8F,QAAU5uG,EAAM2K,IAAIqhE,EAAMj8C,MAAM/vB,OAC1BA,IAAUq8D,IACnBzpD,EAAGg8F,QAAUtwC,GAAWt+D,EAAO8uG,GAAiBl8F,GAAI,IAExD,CACA,MAAMo8F,GAAc,CAClB,OAAApkB,CAAQh4E,GAAI,MAAE5S,GAASgsE,GACrBp5D,EAAGg8F,QAAUtwC,GAAWt+D,EAAOgsE,EAAMj8C,MAAM/vB,OAC3C4S,EAAGs7F,IAAaJ,GAAiB9hC,GACjCr+D,GAAiBiF,EAAI,UAAU,KAC7BA,EAAGs7F,IAAWS,GAAS/7F,GAAI,GAE/B,EACA,YAAAk4E,CAAal4E,GAAI,MAAE5S,EAAK,SAAEq8D,GAAY2P,GACpCp5D,EAAGs7F,IAAaJ,GAAiB9hC,GAC7BhsE,IAAUq8D,IACZzpD,EAAGg8F,QAAUtwC,GAAWt+D,EAAOgsE,EAAMj8C,MAAM/vB,OAE/C,GAEIivG,GAAe,CAEnB/zB,MAAM,EACN,OAAA0P,CAAQh4E,GAAI,MAAE5S,EAAO68E,WAAW,OAAE75B,IAAYgpB,GAC5C,MAAMkjC,EAAa7zC,EAAMr7D,GACzB2N,GAAiBiF,EAAI,UAAU,KAC7B,MAAMu8F,EAAc9tG,MAAMO,UAAUqP,OAAOlP,KAAK6Q,EAAGtP,SAAU6lB,GAAMA,EAAEimF,WAAU5nG,KAC5E2hB,GAAM65B,EAAS0Z,EAAciyC,GAASxlF,IAAMwlF,GAASxlF,KAExDvW,EAAGs7F,IACDt7F,EAAG8wF,SAAWwL,EAAa,IAAI7oG,IAAI8oG,GAAeA,EAAcA,EAAY,GAC7E,IAEHv8F,EAAGs7F,IAAaJ,GAAiB9hC,EACnC,EAGA,OAAA10B,CAAQ1kC,GAAI,MAAE5S,IACZqvG,GAAYz8F,EAAI5S,EAClB,EACA,YAAA8qF,CAAal4E,EAAI08F,EAAUtjC,GACzBp5D,EAAGs7F,IAAaJ,GAAiB9hC,EACnC,EACA,OAAA8Q,CAAQlqE,GAAI,MAAE5S,IACZqvG,GAAYz8F,EAAI5S,EAClB,GAEF,SAASqvG,GAAYz8F,EAAI5S,GACvB,MAAMuvG,EAAa38F,EAAG8wF,SACtB,IAAI6L,GAAe,EAAQvvG,IAAWq7D,EAAMr7D,GAA5C,CAMA,IAAK,IAAImB,EAAI,EAAG6E,EAAI4M,EAAGtP,QAAQpC,OAAQC,EAAI6E,EAAG7E,IAAK,CACjD,MAAMquG,EAAS58F,EAAGtP,QAAQnC,GACpBsuG,EAAcd,GAASa,GAC7B,GAAID,EACE,EAAQvvG,GACVwvG,EAAOJ,SAAWtwC,GAAa9+D,EAAOyvG,IAAgB,EAEtDD,EAAOJ,SAAWpvG,EAAM2K,IAAI8kG,QAG9B,GAAInxC,GAAWqwC,GAASa,GAASxvG,GAG/B,YAFI4S,EAAG88F,gBAAkBvuG,IACvByR,EAAG88F,cAAgBvuG,GAI3B,CACKouG,IAAoC,IAAtB38F,EAAG88F,gBACpB98F,EAAG88F,eAAiB,EAnBtB,CAqBF,CACA,SAASf,GAAS/7F,GAChB,MAAO,WAAYA,EAAKA,EAAGm2D,OAASn2D,EAAG5S,KACzC,CACA,SAAS8uG,GAAiBl8F,EAAIg8F,GAC5B,MAAM5sG,EAAM4sG,EAAU,aAAe,cACrC,OAAO5sG,KAAO4Q,EAAKA,EAAG5Q,GAAO4sG,CAC/B,CACA,MAAMe,GAAgB,CACpB,OAAA/kB,CAAQh4E,EAAIqqE,EAASjR,GACnB4jC,GAAch9F,EAAIqqE,EAASjR,EAAO,KAAM,UAC1C,EACA,OAAA10B,CAAQ1kC,EAAIqqE,EAASjR,GACnB4jC,GAAch9F,EAAIqqE,EAASjR,EAAO,KAAM,UAC1C,EACA,YAAA8e,CAAal4E,EAAIqqE,EAASjR,EAAOyH,GAC/Bm8B,GAAch9F,EAAIqqE,EAASjR,EAAOyH,EAAW,eAC/C,EACA,OAAAqJ,CAAQlqE,EAAIqqE,EAASjR,EAAOyH,GAC1Bm8B,GAAch9F,EAAIqqE,EAASjR,EAAOyH,EAAW,UAC/C,GAEF,SAASo8B,GAAoB73F,EAAS/L,GACpC,OAAQ+L,GACN,IAAK,SACH,OAAOi3F,GACT,IAAK,WACH,OAAOd,GACT,QACE,OAAQliG,GACN,IAAK,WACH,OAAOsiG,GACT,IAAK,QACH,OAAOS,GACT,QACE,OAAOb,IAGjB,CACA,SAASyB,GAAch9F,EAAIqqE,EAASjR,EAAOyH,EAAWyJ,GACpD,MAAM4yB,EAAaD,GACjBj9F,EAAGoF,QACHg0D,EAAMj8C,OAASi8C,EAAMj8C,MAAM9jB,MAEvB/G,EAAK4qG,EAAW5yB,GACtBh4E,GAAMA,EAAG0N,EAAIqqE,EAASjR,EAAOyH,EAC/B,CACA,SAASs8B,KACP5B,GAAWrG,YAAc,EAAG9nG,YAAY,CAAGA,UAC3CgvG,GAAYlH,YAAc,EAAG9nG,SAASgsE,KACpC,GAAIA,EAAMj8C,OAASuuC,GAAW0N,EAAMj8C,MAAM/vB,MAAOA,GAC/C,MAAO,CAAE4uG,SAAS,EACpB,EAEFL,GAAezG,YAAc,EAAG9nG,SAASgsE,KACvC,GAAI,EAAQhsE,IACV,GAAIgsE,EAAMj8C,OAAS+uC,GAAa9+D,EAAOgsE,EAAMj8C,MAAM/vB,QAAU,EAC3D,MAAO,CAAE4uG,SAAS,QAEf,GAAIvzC,EAAMr7D,IACf,GAAIgsE,EAAMj8C,OAAS/vB,EAAM2K,IAAIqhE,EAAMj8C,MAAM/vB,OACvC,MAAO,CAAE4uG,SAAS,QAEf,GAAI5uG,EACT,MAAO,CAAE4uG,SAAS,EACpB,EAEFe,GAAc7H,YAAc,CAAC7qB,EAASjR,KACpC,GAA0B,kBAAfA,EAAM//D,KACf,OAEF,MAAM6jG,EAAaD,GAEjB7jC,EAAM//D,KAAKuN,cACXwyD,EAAMj8C,OAASi8C,EAAMj8C,MAAM9jB,MAE7B,OAAI6jG,EAAWhI,YACNgI,EAAWhI,YAAY7qB,EAASjR,QADzC,CAEA,CAEJ,CAEA,MAAMgkC,GAAkB,CAAC,OAAQ,QAAS,MAAO,QAC3CC,GAAiB,CACrBxxD,KAAOl+C,GAAMA,EAAE0sC,kBACfijE,QAAU3vG,GAAMA,EAAEoP,iBAClB0T,KAAO9iB,GAAMA,EAAE+L,SAAW/L,EAAE4vG,cAC5BC,KAAO7vG,IAAOA,EAAEu6C,QAChBsD,MAAQ79C,IAAOA,EAAE6Z,SACjBi2F,IAAM9vG,IAAOA,EAAEs6C,OACf/qC,KAAOvP,IAAOA,EAAEw6C,QAChBlrB,KAAOtvB,GAAM,WAAYA,GAAkB,IAAbA,EAAE0pC,OAChCykC,OAASnuE,GAAM,WAAYA,GAAkB,IAAbA,EAAE0pC,OAClCqmE,MAAQ/vG,GAAM,WAAYA,GAAkB,IAAbA,EAAE0pC,OACjCsmE,MAAO,CAAChwG,EAAGs8E,IAAcmzB,GAAgB/8B,MAAM/sE,GAAM3F,EAAE,GAAG2F,UAAY22E,EAAUzuE,SAASlI,MAErFsqG,GAAgB,CAACtrG,EAAI23E,KACzB,MAAMrjC,EAAQt0C,EAAGurG,YAAcvrG,EAAGurG,UAAY,CAAC,GACzCC,EAAW7zB,EAAU54E,KAAK,KAChC,OAAOu1C,EAAMk3D,KAAcl3D,EAAMk3D,GAAY,CAAC/oG,KAAUmH,KACtD,IAAK,IAAI3N,EAAI,EAAGA,EAAI07E,EAAU37E,OAAQC,IAAK,CACzC,MAAMklB,EAAQ4pF,GAAepzB,EAAU17E,IACvC,GAAIklB,GAASA,EAAM1e,EAAOk1E,GACxB,MACJ,CACA,OAAO33E,EAAGyC,KAAUmH,EAAK,EACzB,EAEE6hG,GAAW,CACfC,IAAK,SACLC,MAAO,IACPC,GAAI,WACJjhF,KAAM,aACNygF,MAAO,cACPS,KAAM,aACNhmG,OAAQ,aAEJimG,GAAW,CAAC9rG,EAAI23E,KACpB,MAAMrjC,EAAQt0C,EAAG+rG,YAAc/rG,EAAG+rG,UAAY,CAAC,GACzCP,EAAW7zB,EAAU54E,KAAK,KAChC,OAAOu1C,EAAMk3D,KAAcl3D,EAAMk3D,GAAa/oG,IAC5C,KAAM,QAASA,GACb,OAEF,MAAMupG,EAAW,EAAUvpG,EAAM3F,KACjC,OAAI66E,EAAU5J,MAAMptE,GAAMA,IAAMqrG,GAAYP,GAAS9qG,KAAOqrG,IACnDhsG,EAAGyC,QADZ,CAEA,EACA,EAGEwpG,GAAkC,EAAO,CAAEre,cAAa2Q,IAC9D,IAAIxgB,GACAmuB,IAAmB,EACvB,SAASC,KACP,OAAOpuB,KAAaA,GAAWwS,GAAe0b,IAChD,CACA,SAASG,KAGP,OAFAruB,GAAWmuB,GAAmBnuB,GAAW0S,GAAwBwb,IACjEC,IAAmB,EACZnuB,EACT,CACA,MAAM5gC,GAAS,IAAIvzC,KACjBuiG,KAAiBhvD,UAAUvzC,EAAK,EAE5BynE,GAAU,IAAIznE,KAClBwiG,KAA0B/6B,WAAWznE,EAAK,EAEtCstF,GAAY,IAAIttF,KACpB,MAAMs+E,EAAMikB,KAAiBjV,aAAattF,GAK1C,MAAM,MAAEuoC,GAAU+1C,EAiBlB,OAhBAA,EAAI/1C,MAASk6D,IACX,MAAMx7B,EAAYy7B,GAAmBD,GACrC,IAAKx7B,EACH,OACF,MAAMn9D,EAAYw0E,EAAIY,WACjBxyB,EAAW5iD,IAAeA,EAAUypC,QAAWzpC,EAAUkpF,WAC5DlpF,EAAUkpF,SAAW/rB,EAAUrqD,WAEjCqqD,EAAUrqD,UAAY,GACtB,MAAM68C,EAAQlxB,EAAM0+B,GAAW,EAAO07B,GAAqB17B,IAK3D,OAJIA,aAAqBjkE,UACvBikE,EAAUnlE,gBAAgB,WAC1BmlE,EAAUrlE,aAAa,aAAc,KAEhC63D,CAAK,EAEP6kB,CAAG,EAENskB,GAAe,IAAI5iG,KACvB,MAAMs+E,EAAMkkB,KAA0BlV,aAAattF,GAKnD,MAAM,MAAEuoC,GAAU+1C,EAOlB,OANAA,EAAI/1C,MAASk6D,IACX,MAAMx7B,EAAYy7B,GAAmBD,GACrC,GAAIx7B,EACF,OAAO1+B,EAAM0+B,GAAW,EAAM07B,GAAqB17B,GACrD,EAEKqX,CAAG,EAEZ,SAASqkB,GAAqB17B,GAC5B,OAAIA,aAAqBinB,WAChB,MAEoB,oBAAlBE,eAAgCnnB,aAAqBmnB,cACvD,cADT,CAGF,CAoCA,SAASsU,GAAmBz7B,GAC1B,GAAI,EAASA,GAAY,CACvB,MAAM9qD,EAAM7mB,SAAS6C,cAAc8uE,GAMnC,OAAO9qD,CACT,CAMA,OAAO8qD,CACT,CACA,IAAI47B,IAA0B,EAC9B,MAAMC,GAAuB,KACtBD,KACHA,IAA0B,EAC1B5B,KACAlI,KACF,ECnhDIgK,GAAW94F,OAAgE,IAC3E+4F,GAAW/4F,OAAgE,IAC3Eg5F,GAAWh5F,OAAgE,IAC3Ei5F,GAAaj5F,OAAiE,IAC9Ek5F,GAAkBl5F,OAAsE,IACxFm5F,GAAan5F,OAAiE,IAC9Eo5F,GAAep5F,OAAmE,IAClFq5F,GAAuBr5F,OAA0E,IACjGs5F,GAAet5F,OAAmE,IAClFu5F,GAAuBv5F,OAA0E,IACjGw5F,GAAiBx5F,OAA0E,IAC3Fy5F,GAAcz5F,OAAuE,IACrF05F,GAAgB15F,OAAyE,IACzF25F,GAAoB35F,OAAwE,IAC5F45F,GAA4B55F,OACwC,IAEpE65F,GAAoB75F,OAAwE,IAC5F85F,GAAiB95F,OAAqE,IACtF+5F,GAAkB/5F,OAAsE,IACxFg6F,GAAch6F,OAAkE,IAChFi6F,GAAcj6F,OAAkE,IAChFk6F,GAAel6F,OAAmE,IAClFm6F,GAAoBn6F,OAAuE,IAC3Fo6F,GAAcp6F,OAAkE,IAChFq6F,GAAkBr6F,OAAsE,IACxFs6F,GAAkBt6F,OAAsE,IACxFu6F,GAAkBv6F,OAAsE,IACxFw6F,GAAuBx6F,OAA0E,IACjGy6F,GAAcz6F,OAAkE,IAChF06F,GAAW16F,OAAgE,IAC3E26F,GAAa36F,OAAkE,IAC/E46F,GAAiB56F,OAAoE,IACrF66F,GAAqB76F,OAAwE,IAC7F86F,GAAgB96F,OAAmE,IACnF+6F,GAAe/6F,OAAkE,IACjFg7F,GAAWh7F,OAA+D,IAC1Ei7F,GAAQj7F,OAA6D,IACrEk7F,GAASl7F,OAA6D,IACtEm7F,GAAYn7F,OAAgE,IAC5Eo7F,GAAep7F,OAAkE,IACjFq7F,GAAgB,CACpB,CAACvC,IAAW,WACZ,CAACC,IAAW,WACZ,CAACC,IAAW,WACZ,CAACC,IAAa,YACd,CAACC,IAAkB,iBACnB,CAACC,IAAa,YACd,CAACC,IAAe,cAChB,CAACC,IAAuB,qBACxB,CAACC,IAAe,cAChB,CAACC,IAAuB,qBACxB,CAACC,IAAiB,qBAClB,CAACC,IAAc,kBACf,CAACC,IAAgB,oBACjB,CAACC,IAAoB,mBACrB,CAACC,IAA4B,0BAC7B,CAACC,IAAoB,mBACrB,CAACC,IAAiB,gBAClB,CAACC,IAAkB,iBACnB,CAACC,IAAc,aACf,CAACC,IAAc,aACf,CAACC,IAAe,cAChB,CAACC,IAAoB,kBACrB,CAACC,IAAc,aACf,CAACC,IAAkB,iBACnB,CAACC,IAAkB,iBACnB,CAACC,IAAkB,iBACnB,CAACC,IAAuB,qBACxB,CAACC,IAAc,aACf,CAACC,IAAW,WACZ,CAACC,IAAa,aACd,CAACC,IAAiB,eAClB,CAACC,IAAqB,mBACtB,CAACC,IAAgB,cACjB,CAACC,IAAe,aAChB,CAACC,IAAW,UACZ,CAACC,IAAQ,QACT,CAACC,IAAS,QACV,CAACC,IAAY,WACb,CAACC,IAAe,cAElB,SAASE,GAAuBC,GAC9B3yG,OAAO4yG,sBAAsBD,GAAS5uG,SAAS6zD,IAC7C66C,GAAc76C,GAAK+6C,EAAQ/6C,EAAE,GAEjC,CAEA,MAoFMi7C,GAAU,CACdzzF,MAAO,CAAE0zF,KAAM,EAAGh3E,OAAQ,EAAGrO,OAAQ,GACrCpO,IAAK,CAAEyzF,KAAM,EAAGh3E,OAAQ,EAAGrO,OAAQ,GACnC5tB,OAAQ,IAEV,SAASkzG,GAAW1iG,EAAUxQ,EAAS,IACrC,MAAO,CACLyK,KAAM,EACNzK,SACAwQ,WACAsiG,QAAyB,IAAIjuG,IAC7BmlF,WAAY,GACZ/O,WAAY,GACZk4B,OAAQ,GACRC,QAAS,GACTvkC,OAAQ,EACRwkC,MAAO,EACPC,iBAAa,EACbC,IAAKP,GAET,CACA,SAASQ,GAAgB1pF,EAAS9I,EAAKuN,EAAO/d,EAAUgiE,EAAWI,EAAcqI,EAAYw4B,GAAU,EAAO5W,GAAkB,EAAO6W,GAAc,EAAOH,EAAMP,IAYhK,OAXIlpF,IACE2pF,GACF3pF,EAAQ6pF,OAAOjD,IACf5mF,EAAQ6pF,OAAOC,GAAoB9pF,EAAQ+pF,MAAOH,KAElD5pF,EAAQ6pF,OAAOG,GAAehqF,EAAQ+pF,MAAOH,IAE3Cz4B,GACFnxD,EAAQ6pF,OAAOrC,KAGZ,CACL7mG,KAAM,GACNuW,MACAuN,QACA/d,WACAgiE,YACAI,eACAqI,aACAw4B,UACA5W,kBACA6W,cACAH,MAEJ,CACA,SAASQ,GAAsBp7F,EAAU46F,EAAMP,IAC7C,MAAO,CACLvoG,KAAM,GACN8oG,MACA56F,WAEJ,CACA,SAASq7F,GAAuBC,EAAYV,EAAMP,IAChD,MAAO,CACLvoG,KAAM,GACN8oG,MACAU,aAEJ,CACA,SAASC,GAAqB1zG,EAAKhC,GACjC,MAAO,CACLiM,KAAM,GACN8oG,IAAKP,GACLxyG,IAAK,EAASA,GAAO2zG,GAAuB3zG,GAAK,GAAQA,EACzDhC,QAEJ,CACA,SAAS21G,GAAuB7hB,EAAS8hB,GAAW,EAAOb,EAAMP,GAASqB,EAAY,GACpF,MAAO,CACL5pG,KAAM,EACN8oG,MACAjhB,UACA8hB,WACAC,UAAWD,EAAW,EAAIC,EAE9B,CAQA,SAASC,GAAyB9jG,EAAU+iG,EAAMP,IAChD,MAAO,CACLvoG,KAAM,EACN8oG,MACA/iG,WAEJ,CACA,SAAS+jG,GAAqBC,EAAQlnG,EAAO,GAAIimG,EAAMP,IACrD,MAAO,CACLvoG,KAAM,GACN8oG,MACAiB,SACAhsF,UAAWlb,EAEf,CACA,SAASmnG,GAAyBzwG,EAAQ0wG,OAAU,EAAQC,GAAU,EAAOC,GAAS,EAAOrB,EAAMP,IACjG,MAAO,CACLvoG,KAAM,GACNzG,SACA0wG,UACAC,UACAC,SACArB,MAEJ,CACA,SAASsB,GAA4B98F,EAAM+8F,EAAYC,EAAWJ,GAAU,GAC1E,MAAO,CACLlqG,KAAM,GACNsN,OACA+8F,aACAC,YACAJ,UACApB,IAAKP,GAET,CACA,SAASgC,GAAsBv4F,EAAOje,EAAOuzE,GAAU,GACrD,MAAO,CACLtnE,KAAM,GACNgS,QACAje,QACAuzE,UACAwhC,IAAKP,GAET,CACA,SAASiC,GAAqB5gG,GAC5B,MAAO,CACL5J,KAAM,GACN4J,OACAk/F,IAAKP,GAET,CAuCA,SAASc,GAAeoB,EAAKxB,GAC3B,OAAOwB,GAAOxB,EAAc7C,GAAeC,EAC7C,CACA,SAAS8C,GAAoBsB,EAAKxB,GAChC,OAAOwB,GAAOxB,EAAc/C,GAAeC,EAC7C,CACA,SAASuE,GAAexjF,GAAM,OAAEgiF,EAAM,aAAEyB,EAAY,MAAEvB,IAC/CliF,EAAK8hF,UACR9hF,EAAK8hF,SAAU,EACf2B,EAAatB,GAAeD,EAAOliF,EAAK+hF,cACxCC,EAAOjD,IACPiD,EAAOC,GAAoBC,EAAOliF,EAAK+hF,cAE3C,CAEA,MAAM2B,GAAwB,IAAI7/C,WAAW,CAAC,IAAK,MAC7C8/C,GAAyB,IAAI9/C,WAAW,CAAC,IAAK,MACpD,SAAS+/C,GAAehxG,GACtB,OAAOA,GAAK,IAAMA,GAAK,KAAOA,GAAK,IAAMA,GAAK,EAChD,CACA,SAASixG,GAAajxG,GACpB,OAAa,KAANA,GAAkB,KAANA,GAAkB,IAANA,GAAiB,KAANA,GAAkB,KAANA,CACxD,CACA,SAASkxG,GAAkBlxG,GACzB,OAAa,KAANA,GAAkB,KAANA,GAAYixG,GAAajxG,EAC9C,CACA,SAASmxG,GAAYhgD,GACnB,MAAMuG,EAAM,IAAIzG,WAAWE,EAAIh2D,QAC/B,IAAK,IAAIC,EAAI,EAAGA,EAAI+1D,EAAIh2D,OAAQC,IAC9Bs8D,EAAIt8D,GAAK+1D,EAAII,WAAWn2D,GAE1B,OAAOs8D,CACT,CACA,MAAM05C,GAAY,CAChBC,MAAO,IAAIpgD,WAAW,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,KAE3CqgD,SAAU,IAAIrgD,WAAW,CAAC,GAAI,GAAI,KAElCsgD,WAAY,IAAItgD,WAAW,CAAC,GAAI,GAAI,KAEpCugD,UAAW,IAAIvgD,WAAW,CAAC,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,MAE3DwgD,SAAU,IAAIxgD,WAAW,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,MAEtDygD,SAAU,IAAIzgD,WAAW,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,MAEtD0gD,YAAa,IAAI1gD,WAAW,CAC1B,GACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,MAIJ,MAAM2gD,GACJ,WAAA12G,CAAYuqE,EAAOosC,GACjB30G,KAAKuoE,MAAQA,EACbvoE,KAAK20G,IAAMA,EAEX30G,KAAKqtD,MAAQ,EAEbrtD,KAAK40G,OAAS,GAEd50G,KAAK60G,aAAe,EAEpB70G,KAAKgb,MAAQ,EAEbhb,KAAK80G,YAAc,EAEnB90G,KAAK+0G,UAAY,EAEjB/0G,KAAKg1G,UAAW,EAEhBh1G,KAAKi1G,OAAQ,EAEbj1G,KAAKk1G,QAAS,EAEdl1G,KAAKm1G,SAAW,GAChBn1G,KAAKq1E,KAAO,EACZr1E,KAAKo1G,cAAgBxB,GACrB5zG,KAAKq1G,eAAiBxB,GACtB7zG,KAAKs1G,gBAAkB,EACvBt1G,KAAKu1G,qBAAkB,EACvBv1G,KAAKw1G,cAAgB,CACvB,CACA,aAAIC,GACF,OAAqB,IAAdz1G,KAAKq1E,MAAoC,IAAtBr1E,KAAKuoE,MAAMtqE,MACvC,CACA,KAAA4G,GACE7E,KAAKqtD,MAAQ,EACbrtD,KAAKq1E,KAAO,EACZr1E,KAAK40G,OAAS,GACd50G,KAAK60G,aAAe,EACpB70G,KAAKgb,MAAQ,EACbhb,KAAK+0G,UAAY,EACjB/0G,KAAKg1G,UAAW,EAChBh1G,KAAKu1G,qBAAkB,EACvBv1G,KAAKm1G,SAASl3G,OAAS,EACvB+B,KAAKo1G,cAAgBxB,GACrB5zG,KAAKq1G,eAAiBxB,EACxB,CAOA,MAAA6B,CAAO16F,GACL,IAAIw2F,EAAO,EACPh3E,EAASxf,EAAQ,EACrB,IAAK,IAAI9c,EAAI8B,KAAKm1G,SAASl3G,OAAS,EAAGC,GAAK,EAAGA,IAAK,CAClD,MAAMy3G,EAAe31G,KAAKm1G,SAASj3G,GACnC,GAAI8c,EAAQ26F,EAAc,CACxBnE,EAAOtzG,EAAI,EACXs8B,EAASxf,EAAQ26F,EACjB,KACF,CACF,CACA,MAAO,CACLn7E,SACAg3E,OACArlF,OAAQnR,EAEZ,CACA,IAAA46F,GACE,OAAO51G,KAAK40G,OAAOvgD,WAAWr0D,KAAKgb,MAAQ,EAC7C,CACA,SAAA66F,CAAU/yG,GACE,KAANA,GACE9C,KAAKgb,MAAQhb,KAAK60G,cACpB70G,KAAK20G,IAAImB,OAAO91G,KAAK60G,aAAc70G,KAAKgb,OAE1Chb,KAAKqtD,MAAQ,EACbrtD,KAAK60G,aAAe70G,KAAKgb,OACfhb,KAAKk1G,QAAUpyG,IAAM9C,KAAKo1G,cAAc,KAClDp1G,KAAKqtD,MAAQ,EACbrtD,KAAKs1G,eAAiB,EACtBt1G,KAAK+1G,uBAAuBjzG,GAEhC,CACA,sBAAAizG,CAAuBjzG,GACrB,GAAIA,IAAM9C,KAAKo1G,cAAcp1G,KAAKs1G,gBAChC,GAAIt1G,KAAKs1G,iBAAmBt1G,KAAKo1G,cAAcn3G,OAAS,EAAG,CACzD,MAAM6f,EAAQ9d,KAAKgb,MAAQ,EAAIhb,KAAKo1G,cAAcn3G,OAC9C6f,EAAQ9d,KAAK60G,cACf70G,KAAK20G,IAAImB,OAAO91G,KAAK60G,aAAc/2F,GAErC9d,KAAKqtD,MAAQ,EACbrtD,KAAK60G,aAAe/2F,CACtB,MACE9d,KAAKs1G,sBAEEt1G,KAAKg1G,UACdh1G,KAAKqtD,MAAQ,GACbrtD,KAAKg2G,cAAclzG,KAEnB9C,KAAKqtD,MAAQ,EACbrtD,KAAK61G,UAAU/yG,GAEnB,CACA,kBAAAmzG,CAAmBnzG,GACbA,IAAM9C,KAAKq1G,eAAe,KAC5Br1G,KAAKqtD,MAAQ,EACbrtD,KAAKs1G,eAAiB,EACtBt1G,KAAKk2G,wBAAwBpzG,GAEjC,CACA,uBAAAozG,CAAwBpzG,GAClBA,IAAM9C,KAAKq1G,eAAer1G,KAAKs1G,gBAC7Bt1G,KAAKs1G,iBAAmBt1G,KAAKq1G,eAAep3G,OAAS,GACvD+B,KAAK20G,IAAIwB,gBAAgBn2G,KAAK60G,aAAc70G,KAAKgb,MAAQ,GACrDhb,KAAKg1G,SACPh1G,KAAKqtD,MAAQ,GAEbrtD,KAAKqtD,MAAQ,EAEfrtD,KAAK60G,aAAe70G,KAAKgb,MAAQ,GAEjChb,KAAKs1G,kBAGPt1G,KAAKqtD,MAAQ,EACbrtD,KAAKi2G,mBAAmBnzG,GAE5B,CACA,yBAAAszG,CAA0BtzG,GACxB,MAAM47B,EAAQ1+B,KAAKw1G,gBAAkBx1G,KAAKu1G,gBAAgBt3G,OACpDo4G,EAAU33E,EAEds1E,GAAkBlxG,IAGb,GAAJA,KAAY9C,KAAKu1G,gBAAgBv1G,KAAKw1G,eAEzC,GAAKa,GAEE,IAAK33E,EAEV,YADA1+B,KAAKw1G,qBAFLx1G,KAAKg1G,UAAW,EAKlBh1G,KAAKw1G,cAAgB,EACrBx1G,KAAKqtD,MAAQ,EACbrtD,KAAKs2G,eAAexzG,EACtB,CAEA,aAAAkzG,CAAclzG,GACZ,GAAI9C,KAAKw1G,gBAAkBx1G,KAAKu1G,gBAAgBt3G,OAAQ,CACtD,GAAU,KAAN6E,GAAYixG,GAAajxG,GAAI,CAC/B,MAAMyzG,EAAYv2G,KAAKgb,MAAQhb,KAAKu1G,gBAAgBt3G,OACpD,GAAI+B,KAAK60G,aAAe0B,EAAW,CACjC,MAAMC,EAAcx2G,KAAKgb,MACzBhb,KAAKgb,MAAQu7F,EACbv2G,KAAK20G,IAAImB,OAAO91G,KAAK60G,aAAc0B,GACnCv2G,KAAKgb,MAAQw7F,CACf,CAIA,OAHAx2G,KAAK60G,aAAe0B,EAAY,EAChCv2G,KAAKy2G,sBAAsB3zG,QAC3B9C,KAAKg1G,UAAW,EAElB,CACAh1G,KAAKw1G,cAAgB,CACvB,EACS,GAAJ1yG,KAAY9C,KAAKu1G,gBAAgBv1G,KAAKw1G,eACzCx1G,KAAKw1G,eAAiB,EACU,IAAvBx1G,KAAKw1G,cACVx1G,KAAKu1G,kBAAoBrB,GAAUM,UAAYx0G,KAAKu1G,kBAAoBrB,GAAUO,cAAgBz0G,KAAKy1G,UACrG3yG,IAAM9C,KAAKo1G,cAAc,KAC3Bp1G,KAAKqtD,MAAQ,EACbrtD,KAAKs1G,eAAiB,EACtBt1G,KAAK+1G,uBAAuBjzG,IAErB9C,KAAK02G,cAAc,MAC5B12G,KAAKw1G,cAAgB,GAGvBx1G,KAAKw1G,cAAgBtoG,OAAa,KAANpK,EAEhC,CACA,kBAAA6zG,CAAmB7zG,GACbA,IAAMoxG,GAAUC,MAAMn0G,KAAKw1G,iBACvBx1G,KAAKw1G,gBAAkBtB,GAAUC,MAAMl2G,SAC3C+B,KAAKqtD,MAAQ,GACbrtD,KAAKu1G,gBAAkBrB,GAAUE,SACjCp0G,KAAKw1G,cAAgB,EACrBx1G,KAAK60G,aAAe70G,KAAKgb,MAAQ,IAGnChb,KAAKw1G,cAAgB,EACrBx1G,KAAKqtD,MAAQ,GACbrtD,KAAK42G,mBAAmB9zG,GAE5B,CAOA,aAAA4zG,CAAc5zG,GACZ,QAAS9C,KAAKgb,MAAQhb,KAAK40G,OAAO32G,OAAQ,CACxC,MAAM44G,EAAK72G,KAAK40G,OAAOvgD,WAAWr0D,KAAKgb,OAIvC,GAHW,KAAP67F,GACF72G,KAAKm1G,SAASjzG,KAAKlC,KAAKgb,OAEtB67F,IAAO/zG,EACT,OAAO,CAEX,CAEA,OADA9C,KAAKgb,MAAQhb,KAAK40G,OAAO32G,OAAS,GAC3B,CACT,CASA,kBAAA64G,CAAmBh0G,GACbA,IAAM9C,KAAKu1G,gBAAgBv1G,KAAKw1G,iBAC5Bx1G,KAAKw1G,gBAAkBx1G,KAAKu1G,gBAAgBt3G,SAC5C+B,KAAKu1G,kBAAoBrB,GAAUE,SACrCp0G,KAAK20G,IAAIoC,QAAQ/2G,KAAK60G,aAAc70G,KAAKgb,MAAQ,GAEjDhb,KAAK20G,IAAIqC,UAAUh3G,KAAK60G,aAAc70G,KAAKgb,MAAQ,GAErDhb,KAAKw1G,cAAgB,EACrBx1G,KAAK60G,aAAe70G,KAAKgb,MAAQ,EACjChb,KAAKqtD,MAAQ,GAEiB,IAAvBrtD,KAAKw1G,cACVx1G,KAAK02G,cAAc12G,KAAKu1G,gBAAgB,MAC1Cv1G,KAAKw1G,cAAgB,GAEd1yG,IAAM9C,KAAKu1G,gBAAgBv1G,KAAKw1G,cAAgB,KACzDx1G,KAAKw1G,cAAgB,EAEzB,CACA,YAAAyB,CAAaC,EAAU/qF,GACrBnsB,KAAKm3G,YAAYD,EAAU/qF,GAC3BnsB,KAAKqtD,MAAQ,EACf,CACA,WAAA8pD,CAAYD,EAAU/qF,GACpBnsB,KAAKg1G,UAAW,EAChBh1G,KAAKu1G,gBAAkB2B,EACvBl3G,KAAKw1G,cAAgBrpF,CACvB,CACA,kBAAAirF,CAAmBt0G,GACjB,GAAU,KAANA,EACF9C,KAAKqtD,MAAQ,GACbrtD,KAAK60G,aAAe70G,KAAKgb,MAAQ,OAC5B,GAAU,KAANlY,EACT9C,KAAKqtD,MAAQ,GACbrtD,KAAK60G,aAAe70G,KAAKgb,MAAQ,OAC5B,GAAI84F,GAAehxG,GAExB,GADA9C,KAAK60G,aAAe70G,KAAKgb,MACP,IAAdhb,KAAKq1E,KACPr1E,KAAKqtD,MAAQ,OACR,GAAIrtD,KAAKy1G,UACdz1G,KAAKqtD,MAAQ,QACR,GAAKrtD,KAAKi1G,MAQfj1G,KAAKqtD,MAAQ,MARS,CACtB,MAAMgqD,EAAY,GAAJv0G,EAEZ9C,KAAKqtD,MADO,MAAVgqD,EACW,GAEU,MAAVA,EAAgB,GAAK,CAEtC,MAGe,KAANv0G,EACT9C,KAAKqtD,MAAQ,GAEbrtD,KAAKqtD,MAAQ,EACbrtD,KAAK61G,UAAU/yG,GAEnB,CACA,cAAAwzG,CAAexzG,GACTkxG,GAAkBlxG,IACpB9C,KAAKs3G,cAAcx0G,EAEvB,CACA,qBAAAy0G,CAAsBz0G,GACpB,GAAIkxG,GAAkBlxG,GAAI,CACxB,MAAMyc,EAAMvf,KAAK40G,OAAOlpG,MAAM1L,KAAK60G,aAAc70G,KAAKgb,OAC1C,aAARuE,GACFvf,KAAKm3G,YAAYlD,GAAY,KAAO10F,GAAM,GAE5Cvf,KAAKs3G,cAAcx0G,EACrB,CACF,CACA,aAAAw0G,CAAcx0G,GACZ9C,KAAK20G,IAAI6C,cAAcx3G,KAAK60G,aAAc70G,KAAKgb,OAC/Chb,KAAK60G,cAAgB,EACrB70G,KAAKqtD,MAAQ,GACbrtD,KAAKy3G,oBAAoB30G,EAC3B,CACA,yBAAA40G,CAA0B50G,GACpBixG,GAAajxG,KAAqB,KAANA,GAI9B9C,KAAKqtD,MAAQ,EACbrtD,KAAK60G,aAAe70G,KAAKgb,MAAQ,IAEjChb,KAAKqtD,MAAQymD,GAAehxG,GAAK,EAAI,GACrC9C,KAAK60G,aAAe70G,KAAKgb,OAE7B,CACA,qBAAAy7F,CAAsB3zG,IACV,KAANA,GAAYixG,GAAajxG,MAC3B9C,KAAK20G,IAAIgD,WAAW33G,KAAK60G,aAAc70G,KAAKgb,OAC5Chb,KAAK60G,cAAgB,EACrB70G,KAAKqtD,MAAQ,GACbrtD,KAAK43G,yBAAyB90G,GAElC,CACA,wBAAA80G,CAAyB90G,GACb,KAANA,IACF9C,KAAKqtD,MAAQ,EACbrtD,KAAK60G,aAAe70G,KAAKgb,MAAQ,EAErC,CACA,mBAAAy8F,CAAoB30G,GACR,KAANA,GACF9C,KAAK20G,IAAIkD,aAAa73G,KAAKgb,OACvBhb,KAAKg1G,SACPh1G,KAAKqtD,MAAQ,GAEbrtD,KAAKqtD,MAAQ,EAEfrtD,KAAK60G,aAAe70G,KAAKgb,MAAQ,GAClB,KAANlY,EACT9C,KAAKqtD,MAAQ,EAIE,KAANvqD,GAA4B,KAAhB9C,KAAK41G,QAC1B51G,KAAK20G,IAAIkD,aAAa73G,KAAKgb,OAC3Bhb,KAAKqtD,MAAQ,EACbrtD,KAAK60G,aAAe70G,KAAKgb,OACf+4F,GAAajxG,IAOvB9C,KAAK83G,gBAAgBh1G,EAEzB,CACA,eAAAg1G,CAAgBh1G,GACJ,MAANA,GAA6B,KAAhB9C,KAAK41G,QACpB51G,KAAKqtD,MAAQ,GACbrtD,KAAK60G,aAAe70G,KAAKgb,OACV,KAANlY,GAAkB,KAANA,GAAkB,KAANA,GAAkB,KAANA,GAC7C9C,KAAK20G,IAAIoD,UAAU/3G,KAAKgb,MAAOhb,KAAKgb,MAAQ,GAC5Chb,KAAKqtD,MAAQ,GACbrtD,KAAK60G,aAAe70G,KAAKgb,MAAQ,IAEjChb,KAAKqtD,MAAQ,GACbrtD,KAAK60G,aAAe70G,KAAKgb,MAE7B,CACA,qBAAAg9F,CAAsBl1G,GACV,KAANA,GACF9C,KAAK20G,IAAIsD,iBAAiBj4G,KAAKgb,OAC/Bhb,KAAKqtD,MAAQ,EACbrtD,KAAK60G,aAAe70G,KAAKgb,MAAQ,EACjChb,KAAKg1G,UAAW,GACNjB,GAAajxG,KACvB9C,KAAKqtD,MAAQ,GACbrtD,KAAKy3G,oBAAoB30G,GAE7B,CACA,eAAAo1G,CAAgBp1G,IACJ,KAANA,GAAYkxG,GAAkBlxG,MAChC9C,KAAK20G,IAAIwD,aAAan4G,KAAK60G,aAAc70G,KAAKgb,OAC9Chb,KAAKo4G,kBAAkBt1G,GAO3B,CACA,cAAAu1G,CAAev1G,GACH,KAANA,GAAYkxG,GAAkBlxG,IAChC9C,KAAK20G,IAAIoD,UAAU/3G,KAAK60G,aAAc70G,KAAKgb,OAC3Chb,KAAKo4G,kBAAkBt1G,IACR,KAANA,GACT9C,KAAK20G,IAAIoD,UAAU/3G,KAAK60G,aAAc70G,KAAKgb,OAC3Chb,KAAKqtD,MAAQ,GACbrtD,KAAK60G,aAAe70G,KAAKgb,MAAQ,GAClB,KAANlY,IACT9C,KAAK20G,IAAIoD,UAAU/3G,KAAK60G,aAAc70G,KAAKgb,OAC3Chb,KAAKqtD,MAAQ,GACbrtD,KAAK60G,aAAe70G,KAAKgb,MAAQ,EAErC,CACA,aAAAs9F,CAAcx1G,GACF,KAANA,GAAYkxG,GAAkBlxG,IAChC9C,KAAK20G,IAAI4D,SAASv4G,KAAK60G,aAAc70G,KAAKgb,OAC1Chb,KAAKo4G,kBAAkBt1G,IACR,KAANA,EACT9C,KAAKqtD,MAAQ,GACE,KAANvqD,IACT9C,KAAK20G,IAAI4D,SAASv4G,KAAK60G,aAAc70G,KAAKgb,OAC1Chb,KAAKqtD,MAAQ,GACbrtD,KAAK60G,aAAe70G,KAAKgb,MAAQ,EAErC,CACA,oBAAAw9F,CAAqB11G,GACT,KAANA,EACF9C,KAAKqtD,MAAQ,IACE,KAANvqD,GAAYkxG,GAAkBlxG,MACvC9C,KAAK20G,IAAI4D,SAASv4G,KAAK60G,aAAc70G,KAAKgb,MAAQ,GAClDhb,KAAKo4G,kBAAkBt1G,GAQ3B,CACA,kBAAA21G,CAAmB31G,GACP,KAANA,GAAYkxG,GAAkBlxG,IAChC9C,KAAK20G,IAAI+D,cAAc14G,KAAK60G,aAAc70G,KAAKgb,OAC/Chb,KAAKo4G,kBAAkBt1G,IACR,KAANA,IACT9C,KAAK20G,IAAI+D,cAAc14G,KAAK60G,aAAc70G,KAAKgb,OAC/Chb,KAAK60G,aAAe70G,KAAKgb,MAAQ,EAErC,CACA,iBAAAo9F,CAAkBt1G,GAChB9C,KAAK60G,aAAe70G,KAAKgb,MACzBhb,KAAKqtD,MAAQ,GACbrtD,KAAK20G,IAAIgE,gBAAgB34G,KAAKgb,OAC9Bhb,KAAK44G,mBAAmB91G,EAC1B,CACA,kBAAA81G,CAAmB91G,GACP,KAANA,EACF9C,KAAKqtD,MAAQ,GACE,KAANvqD,GAAkB,KAANA,GACrB9C,KAAK20G,IAAIkE,YAAY,EAAG74G,KAAK60G,cAC7B70G,KAAK60G,cAAgB,EACrB70G,KAAKqtD,MAAQ,GACbrtD,KAAKy3G,oBAAoB30G,IACfixG,GAAajxG,KACvB9C,KAAK20G,IAAIkE,YAAY,EAAG74G,KAAK60G,cAC7B70G,KAAK83G,gBAAgBh1G,GAEzB,CACA,oBAAAg2G,CAAqBh2G,GACT,KAANA,GACF9C,KAAKqtD,MAAQ,GACbrtD,KAAK60G,aAAe70G,KAAKgb,MAAQ,GAClB,KAANlY,GACT9C,KAAKqtD,MAAQ,GACbrtD,KAAK60G,aAAe70G,KAAKgb,MAAQ,GACvB+4F,GAAajxG,KACvB9C,KAAK60G,aAAe70G,KAAKgb,MACzBhb,KAAKqtD,MAAQ,GACbrtD,KAAK+4G,yBAAyBj2G,GAElC,CACA,iBAAAk2G,CAAkBl2G,EAAGm2G,IACfn2G,IAAMm2G,GAASj5G,KAAK02G,cAAcuC,MACpCj5G,KAAK20G,IAAIuE,aAAal5G,KAAK60G,aAAc70G,KAAKgb,OAC9Chb,KAAK60G,cAAgB,EACrB70G,KAAK20G,IAAIkE,YACG,KAAVI,EAAe,EAAI,EACnBj5G,KAAKgb,MAAQ,GAEfhb,KAAKqtD,MAAQ,GAEjB,CACA,4BAAA8rD,CAA6Br2G,GAC3B9C,KAAKg5G,kBAAkBl2G,EAAG,GAC5B,CACA,4BAAAs2G,CAA6Bt2G,GAC3B9C,KAAKg5G,kBAAkBl2G,EAAG,GAC5B,CACA,wBAAAi2G,CAAyBj2G,GACnBixG,GAAajxG,IAAY,KAANA,GACrB9C,KAAK20G,IAAIuE,aAAal5G,KAAK60G,aAAc70G,KAAKgb,OAC9Chb,KAAK60G,cAAgB,EACrB70G,KAAK20G,IAAIkE,YAAY,EAAG74G,KAAKgb,OAC7Bhb,KAAKqtD,MAAQ,GACbrtD,KAAKy3G,oBAAoB30G,IAC0D,KAANA,GAAkB,KAANA,GAAkB,KAANA,GAAkB,KAANA,GACjH9C,KAAK20G,IAAI0E,MACP,GACAr5G,KAAKgb,MAGX,CACA,sBAAAs+F,CAAuBx2G,GACX,KAANA,GACF9C,KAAKqtD,MAAQ,GACbrtD,KAAKw1G,cAAgB,GAErBx1G,KAAKqtD,MAAc,KAANvqD,EAAW,GAAK,EAEjC,CACA,kBAAA8zG,CAAmB9zG,IACP,KAANA,GAAY9C,KAAK02G,cAAc,OACjC12G,KAAKqtD,MAAQ,EACbrtD,KAAK60G,aAAe70G,KAAKgb,MAAQ,EAErC,CACA,4BAAAu+F,CAA6Bz2G,IACjB,KAANA,GAAY9C,KAAK02G,cAAc,OACjC12G,KAAK20G,IAAI6E,wBAAwBx5G,KAAK60G,aAAc70G,KAAKgb,OACzDhb,KAAKqtD,MAAQ,EACbrtD,KAAK60G,aAAe70G,KAAKgb,MAAQ,EAErC,CACA,kBAAAy+F,CAAmB32G,GACP,KAANA,GACF9C,KAAKqtD,MAAQ,GACbrtD,KAAKu1G,gBAAkBrB,GAAUG,WACjCr0G,KAAKw1G,cAAgB,EACrBx1G,KAAK60G,aAAe70G,KAAKgb,MAAQ,GAEjChb,KAAKqtD,MAAQ,EAEjB,CACA,qBAAAqsD,CAAsB52G,IACV,KAANA,GAAY9C,KAAK02G,cAAc,OACjC12G,KAAK20G,IAAIqC,UAAUh3G,KAAK60G,aAAc70G,KAAKgb,OAC3Chb,KAAKqtD,MAAQ,EACbrtD,KAAK60G,aAAe70G,KAAKgb,MAAQ,EAErC,CACA,mBAAA2+F,CAAoB72G,GAClB,MAAMu0G,EAAY,GAAJv0G,EACVu0G,IAAUnD,GAAUI,UAAU,GAChCt0G,KAAKi3G,aAAa/C,GAAUI,UAAW,GAC9B+C,IAAUnD,GAAUK,SAAS,GACtCv0G,KAAKi3G,aAAa/C,GAAUK,SAAU,IAEtCv0G,KAAKqtD,MAAQ,EACbrtD,KAAKs2G,eAAexzG,GAExB,CACA,mBAAA82G,CAAoB92G,GAClB,MAAMu0G,EAAY,GAAJv0G,EACVu0G,IAAUnD,GAAUM,SAAS,GAC/Bx0G,KAAKi3G,aAAa/C,GAAUM,SAAU,GAC7B6C,IAAUnD,GAAUO,YAAY,GACzCz0G,KAAKi3G,aAAa/C,GAAUO,YAAa,IAEzCz0G,KAAKqtD,MAAQ,EACbrtD,KAAKs2G,eAAexzG,GAExB,CACA,WAAA+2G,GACA,CACA,aAAAC,GACA,CAMA,KAAA3sG,CAAM2nD,GACJ90D,KAAK40G,OAAS9/C,EACd,MAAO90D,KAAKgb,MAAQhb,KAAK40G,OAAO32G,OAAQ,CACtC,MAAM6E,EAAI9C,KAAK40G,OAAOvgD,WAAWr0D,KAAKgb,OAItC,OAHU,KAANlY,GACF9C,KAAKm1G,SAASjzG,KAAKlC,KAAKgb,OAElBhb,KAAKqtD,OACX,KAAK,EACHrtD,KAAK61G,UAAU/yG,GACf,MAEF,KAAK,EACH9C,KAAK+1G,uBAAuBjzG,GAC5B,MAEF,KAAK,EACH9C,KAAKi2G,mBAAmBnzG,GACxB,MAEF,KAAK,EACH9C,KAAKk2G,wBAAwBpzG,GAC7B,MAEF,KAAK,GACH9C,KAAKo2G,0BAA0BtzG,GAC/B,MAEF,KAAK,GACH9C,KAAKg2G,cAAclzG,GACnB,MAEF,KAAK,GACH9C,KAAK22G,mBAAmB7zG,GACxB,MAEF,KAAK,GACH9C,KAAKm5G,6BAA6Br2G,GAClC,MAEF,KAAK,GACH9C,KAAKk4G,gBAAgBp1G,GACrB,MAEF,KAAK,GACH9C,KAAKq4G,eAAev1G,GACpB,MAEF,KAAK,GACH9C,KAAKs4G,cAAcx1G,GACnB,MAEF,KAAK,GACH9C,KAAKw4G,qBAAqB11G,GAC1B,MAEF,KAAK,GACH9C,KAAKy4G,mBAAmB31G,GACxB,MAEF,KAAK,GACH9C,KAAK82G,mBAAmBh0G,GACxB,MAEF,KAAK,GACH9C,KAAK05G,sBAAsB52G,GAC3B,MAEF,KAAK,GACH9C,KAAKy3G,oBAAoB30G,GACzB,MAEF,KAAK,EACH9C,KAAKs2G,eAAexzG,GACpB,MAEF,KAAK,GACH9C,KAAKu3G,sBAAsBz0G,GAC3B,MAEF,KAAK,EACH9C,KAAKy2G,sBAAsB3zG,GAC3B,MAEF,KAAK,EACH9C,KAAKo3G,mBAAmBt0G,GACxB,MAEF,KAAK,GACH9C,KAAK44G,mBAAmB91G,GACxB,MAEF,KAAK,GACH9C,KAAKo5G,6BAA6Bt2G,GAClC,MAEF,KAAK,GACH9C,KAAK84G,qBAAqBh2G,GAC1B,MAEF,KAAK,EACH9C,KAAK03G,0BAA0B50G,GAC/B,MAEF,KAAK,GACH9C,KAAK43G,yBAAyB90G,GAC9B,MAEF,KAAK,GACH9C,KAAK25G,oBAAoB72G,GACzB,MAEF,KAAK,GACH9C,KAAK45G,oBAAoB92G,GACzB,MAEF,KAAK,GACH9C,KAAK+4G,yBAAyBj2G,GAC9B,MAEF,KAAK,EACH9C,KAAKg4G,sBAAsBl1G,GAC3B,MAEF,KAAK,GACH9C,KAAK42G,mBAAmB9zG,GACxB,MAEF,KAAK,GACH9C,KAAKs5G,uBAAuBx2G,GAC5B,MAEF,KAAK,GACH9C,KAAKy5G,mBAAmB32G,GACxB,MAEF,KAAK,GACH9C,KAAKu5G,6BAA6Bz2G,GAClC,MAEF,KAAK,GACH9C,KAAK85G,gBACL,MAGJ95G,KAAKgb,OACP,CACAhb,KAAK6+D,UACL7+D,KAAK+5G,QACP,CAIA,OAAAl7C,GACM7+D,KAAK60G,eAAiB70G,KAAKgb,QACV,IAAfhb,KAAKqtD,OAA8B,KAAfrtD,KAAKqtD,OAAuC,IAAvBrtD,KAAKw1G,eAChDx1G,KAAK20G,IAAImB,OAAO91G,KAAK60G,aAAc70G,KAAKgb,OACxChb,KAAK60G,aAAe70G,KAAKgb,OACD,KAAfhb,KAAKqtD,OAA+B,KAAfrtD,KAAKqtD,OAA+B,KAAfrtD,KAAKqtD,QACxDrtD,KAAK20G,IAAIuE,aAAal5G,KAAK60G,aAAc70G,KAAKgb,OAC9Chb,KAAK60G,aAAe70G,KAAKgb,OAG/B,CACA,MAAA++F,GACE/5G,KAAKg6G,qBACLh6G,KAAK20G,IAAIsF,OACX,CAEA,kBAAAD,GACE,MAAME,EAAWl6G,KAAK40G,OAAO32G,OACzB+B,KAAK60G,cAAgBqF,IAGN,KAAfl6G,KAAKqtD,MACHrtD,KAAKu1G,kBAAoBrB,GAAUE,SACrCp0G,KAAK20G,IAAIoC,QAAQ/2G,KAAK60G,aAAcqF,GAEpCl6G,KAAK20G,IAAIqC,UAAUh3G,KAAK60G,aAAcqF,GAEhB,IAAfl6G,KAAKqtD,OAA8B,KAAfrtD,KAAKqtD,OAA+B,KAAfrtD,KAAKqtD,OAA+B,KAAfrtD,KAAKqtD,OAA+B,KAAfrtD,KAAKqtD,OAA+B,KAAfrtD,KAAKqtD,OAA+B,KAAfrtD,KAAKqtD,OAA+B,KAAfrtD,KAAKqtD,OAA+B,KAAfrtD,KAAKqtD,OAA+B,KAAfrtD,KAAKqtD,OAA+B,KAAfrtD,KAAKqtD,OAA+B,KAAfrtD,KAAKqtD,OAA+B,IAAfrtD,KAAKqtD,OACzQrtD,KAAK20G,IAAImB,OAAO91G,KAAK60G,aAAcqF,GAEvC,CACA,aAAAC,CAAcC,EAAIC,GAClB,EA8CF,SAASC,GAAev7G,GAAK,aAAEw7G,IAC7B,MAAMx9G,EAAQw9G,GAAgBA,EAAax7G,GAC3C,MAAY,SAARA,EACKhC,GAAS,EAETA,CAEX,CACA,SAASy9G,GAAgBz7G,EAAKspB,GAC5B,MAAMgtD,EAAOilC,GAAe,OAAQjyF,GAC9BtrB,EAAQu9G,GAAev7G,EAAKspB,GAClC,OAAgB,IAATgtD,GAAuB,IAAVt4E,GAA2B,IAAVA,CACvC,CACA,SAAS09G,GAAmB17G,EAAKspB,EAASypF,KAAQjmG,GAChD,MAAMwsB,EAAUmiF,GAAgBz7G,EAAKspB,GAIrC,OAAOgQ,CACT,CAgBA,SAASqiF,GAAeh5G,GACtB,MAAMA,CACR,CACA,SAASi5G,GAAcjmD,GAEvB,CACA,SAASkmD,GAAoBC,EAAM/I,EAAKgJ,EAAUC,GAChD,MAAMrmD,EAA2H,sCAAsCmmD,IACjKn5G,EAAQ,IAAIs5G,YAAYp/C,OAAOlH,IAGrC,OAFAhzD,EAAMm5G,KAAOA,EACbn5G,EAAMowG,IAAMA,EACLpwG,CACT,CAiSA,MAAMu5G,GAAep4G,GAAiB,IAAXA,EAAEmG,MAAcnG,EAAE8vG,SAC7C,SAASuI,GAAgB37F,GACvB,OAAQA,GACN,IAAK,WACL,IAAK,WACH,OAAOsvF,GACT,IAAK,WACL,IAAK,WACH,OAAOC,GACT,IAAK,YACL,IAAK,aACH,OAAOC,GACT,IAAK,iBACL,IAAK,kBACH,OAAOC,GAEb,CACA,MAAMmM,GAAkB,cAClBC,GAAsBt5G,IAAUq5G,GAAgB7kG,KAAKxU,GACrDu5G,GAAwB,wBACxBC,GAAmB,uBACnBC,GAAe,yBACfC,GAA6Bl0E,IACjCA,EAAOA,EAAK74B,OAAO9K,QAAQ43G,IAAejlD,GAAMA,EAAE7nD,SAClD,IAAI4+C,EAAQ,EACRouD,EAAa,GACbC,EAA0B,EAC1BC,EAAyB,EACzBC,EAAoB,KACxB,IAAK,IAAI19G,EAAI,EAAGA,EAAIopC,EAAKrpC,OAAQC,IAAK,CACpC,MAAM29G,EAAOv0E,EAAKp5B,OAAOhQ,GACzB,OAAQmvD,GACN,KAAK,EACH,GAAa,MAATwuD,EACFJ,EAAWv5G,KAAKmrD,GAChBA,EAAQ,EACRquD,SACK,GAAa,MAATG,EACTJ,EAAWv5G,KAAKmrD,GAChBA,EAAQ,EACRsuD,SACK,KAAY,IAANz9G,EAAUm9G,GAAwBC,IAAkBhlG,KAAKulG,GACpE,OAAO,EAET,MACF,KAAK,EACU,MAATA,GAAyB,MAATA,GAAyB,MAATA,GAClCJ,EAAWv5G,KAAKmrD,GAChBA,EAAQ,EACRuuD,EAAoBC,GACF,MAATA,EACTH,IACkB,MAATG,MACFH,IACLruD,EAAQouD,EAAWrwE,QAGvB,MACF,KAAK,EACH,GAAa,MAATywE,GAAyB,MAATA,GAAyB,MAATA,EAClCJ,EAAWv5G,KAAKmrD,GAChBA,EAAQ,EACRuuD,EAAoBC,OACf,GAAa,MAATA,EACTF,SACK,GAAa,MAATE,EAAc,CACvB,GAAI39G,IAAMopC,EAAKrpC,OAAS,EACtB,OAAO,IAEF09G,IACLtuD,EAAQouD,EAAWrwE,MAEvB,CACA,MACF,KAAK,EACCywE,IAASD,IACXvuD,EAAQouD,EAAWrwE,MACnBwwE,EAAoB,MAEtB,MAEN,CACA,OAAQF,IAA4BC,CAAsB,EAGtDG,GAAqBN,GA+B3B,SAASO,GAAQ7rF,EAAMpuB,EAAMk6G,GAAa,GACxC,IAAK,IAAI99G,EAAI,EAAGA,EAAIgyB,EAAKpD,MAAM7uB,OAAQC,IAAK,CAC1C,MAAM2E,EAAIqtB,EAAKpD,MAAM5uB,GACrB,GAAe,IAAX2E,EAAEmG,OAAegzG,GAAcn5G,EAAEo5G,OAAS,EAASn6G,GAAQe,EAAEf,OAASA,EAAOA,EAAKwU,KAAKzT,EAAEf,OAC3F,OAAOe,CAEX,CACF,CACA,SAASq5G,GAAShsF,EAAMpuB,EAAMq6G,GAAc,EAAOH,GAAa,GAC9D,IAAK,IAAI99G,EAAI,EAAGA,EAAIgyB,EAAKpD,MAAM7uB,OAAQC,IAAK,CAC1C,MAAM2E,EAAIqtB,EAAKpD,MAAM5uB,GACrB,GAAe,IAAX2E,EAAEmG,KAAY,CAChB,GAAImzG,EACF,SACF,GAAIt5G,EAAEf,OAASA,IAASe,EAAE9F,OAASi/G,GACjC,OAAOn5G,CAEX,MAAO,GAAe,SAAXA,EAAEf,OAAoBe,EAAEo5G,KAAOD,IAAeI,GAAcv5G,EAAE02D,IAAKz3D,GAC5E,OAAOe,CAEX,CACF,CACA,SAASu5G,GAAc7iD,EAAKz3D,GAC1B,SAAUy3D,IAAO0hD,GAAY1hD,IAAQA,EAAIs3B,UAAY/uF,EACvD,CACA,SAASu6G,GAAmBnsF,GAC1B,OAAOA,EAAKpD,MAAMkjD,MACfntE,GAAiB,IAAXA,EAAEmG,MAAyB,SAAXnG,EAAEf,QAAqBe,EAAE02D,KACjC,IAAf12D,EAAE02D,IAAIvwD,OACLnG,EAAE02D,IAAIo5C,WAGX,CACA,SAAS2J,GAASpsF,GAChB,OAAqB,IAAdA,EAAKlnB,MAA4B,IAAdknB,EAAKlnB,IACjC,CACA,SAASuzG,GAAQ15G,GACf,OAAkB,IAAXA,EAAEmG,MAAyB,SAAXnG,EAAEf,IAC3B,CACA,SAAS6uF,GAAezgE,GACtB,OAAqB,IAAdA,EAAKlnB,MAA+B,IAAjBknB,EAAKssF,OACjC,CACA,SAASC,GAAavsF,GACpB,OAAqB,IAAdA,EAAKlnB,MAA+B,IAAjBknB,EAAKssF,OACjC,CACA,MAAME,GAAiC,IAAIt5G,IAAI,CAACitG,GAAiBC,KACjE,SAASqM,GAAqB7vF,EAAO8vF,EAAW,IAC9C,GAAI9vF,IAAU,EAASA,IAAyB,KAAfA,EAAM9jB,KAAa,CAClD,MAAM+pG,EAASjmF,EAAMimF,OACrB,IAAK,EAASA,IAAW2J,GAAeh1G,IAAIqrG,GAC1C,OAAO4J,GACL7vF,EAAM/F,UAAU,GAChB61F,EAAShuG,OAAOke,GAGtB,CACA,MAAO,CAACA,EAAO8vF,EACjB,CACA,SAASC,GAAW3sF,EAAMo9D,EAAMjlE,GAC9B,IAAIy0F,EAGAC,EAFAjwF,EAAsB,KAAdoD,EAAKlnB,KAAcknB,EAAKpD,MAAQoD,EAAKnJ,UAAU,GACvD61F,EAAW,GAEf,GAAI9vF,IAAU,EAASA,IAAyB,KAAfA,EAAM9jB,KAAa,CAClD,MAAMwxD,EAAMmiD,GAAqB7vF,GACjCA,EAAQ0tC,EAAI,GACZoiD,EAAWpiD,EAAI,GACfuiD,EAAaH,EAASA,EAAS3+G,OAAS,EAC1C,CACA,GAAa,MAAT6uB,GAAiB,EAASA,GAC5BgwF,EAAqBvK,GAAuB,CAACjlB,SACxC,GAAmB,KAAfxgE,EAAM9jB,KAAa,CAC5B,MAAMg0G,EAAQlwF,EAAM/F,UAAU,GACzB,EAASi2F,IAAyB,KAAfA,EAAMh0G,KAKxB8jB,EAAMimF,SAAWxC,GACnBuM,EAAqBhK,GAAqBzqF,EAAQ6pF,OAAOhC,IAAc,CACrEqC,GAAuB,CAACjlB,IACxBxgE,IAGFA,EAAM/F,UAAU2D,QAAQ6nF,GAAuB,CAACjlB,KAV7C2vB,GAAQ3vB,EAAM0vB,IACjBA,EAAMxK,WAAW9nF,QAAQ4iE,IAY5BwvB,IAAuBA,EAAqBhwF,EAC/C,MAA0B,KAAfA,EAAM9jB,MACVi0G,GAAQ3vB,EAAMxgE,IACjBA,EAAM0lF,WAAW9nF,QAAQ4iE,GAE3BwvB,EAAqBhwF,IAErBgwF,EAAqBhK,GAAqBzqF,EAAQ6pF,OAAOhC,IAAc,CACrEqC,GAAuB,CAACjlB,IACxBxgE,IAEEiwF,GAAcA,EAAWhK,SAAWzC,KACtCyM,EAAaH,EAASA,EAAS3+G,OAAS,KAG1B,KAAdiyB,EAAKlnB,KACH+zG,EACFA,EAAWh2F,UAAU,GAAK+1F,EAE1B5sF,EAAKpD,MAAQgwF,EAGXC,EACFA,EAAWh2F,UAAU,GAAK+1F,EAE1B5sF,EAAKnJ,UAAU,GAAK+1F,CAG1B,CACA,SAASG,GAAQ3vB,EAAMxgE,GACrB,IAAItvB,GAAS,EACb,GAAsB,IAAlB8vF,EAAKvuF,IAAIiK,KAAY,CACvB,MAAMk0G,EAAc5vB,EAAKvuF,IAAI8xF,QAC7BrzF,EAASsvB,EAAM0lF,WAAWxiC,MACvBntE,GAAqB,IAAfA,EAAE9D,IAAIiK,MAAcnG,EAAE9D,IAAI8xF,UAAYqsB,GAEjD,CACA,OAAO1/G,CACT,CACA,SAAS2/G,GAAer7G,EAAMkH,GAC5B,MAAO,IAAIA,KAAQlH,EAAK6B,QAAQ,UAAU,CAACy5G,EAAaC,IAC/B,MAAhBD,EAAsB,IAAMt7G,EAAKuyD,WAAWgpD,GAAcz+G,cAErE,CAyCA,SAAS0+G,GAAmBptF,GAC1B,OAAkB,KAAdA,EAAKlnB,MAAeknB,EAAK6iF,SAAW9B,GAC/B/gF,EAAKnJ,UAAU,GAAGksF,QAElB/iF,CAEX,CACA,MAAMqtF,GAAa,qCAEbC,GAAuB,CAC3BC,UAAW,OACXC,GAAI,EACJ3e,WAAY,CAAC,KAAM,MACnB4e,aAAc,IAAM,EACpB1iD,UAAW,EACX2iD,SAAU,EACV9e,gBAAiB,EACjBjgB,QAAS67B,GACTmD,OAAQlD,GACRmD,UAAU,EACVC,mBAAmB,GAErB,IAAIC,GAAiBR,GACjBS,GAAc,KACdC,GAAe,GACfC,GAAiB,KACjBC,GAAc,KACdC,GAAmB,GACnBC,IAAyB,EACzBC,IAAuB,EACvBC,GAAQ,EACRtJ,IAAS,EACTuJ,GAAsB,KAC1B,MAAM,GAAQ,GACRC,GAAY,IAAIhK,GAAU,GAAO,CACrC2E,MAAOsF,GACP,MAAA7I,CAAOh4F,EAAOC,GACZ6gG,GAAOC,GAAS/gG,EAAOC,GAAMD,EAAOC,EACtC,EACA,YAAA+gG,CAAajD,EAAM/9F,EAAOC,GACxB6gG,GAAO/C,EAAM/9F,EAAOC,EACtB,EACA,eAAAo4F,CAAgBr4F,EAAOC,GACrB,GAAIm3F,GACF,OAAO0J,GAAOC,GAAS/gG,EAAOC,GAAMD,EAAOC,GAE7C,IAAIghG,EAAajhG,EAAQ4gG,GAAUtJ,cAAcn3G,OAC7C+gH,EAAWjhG,EAAM2gG,GAAUrJ,eAAep3G,OAC9C,MAAO81G,GAAamK,GAAa7pD,WAAW0qD,IAC1CA,IAEF,MAAOhL,GAAamK,GAAa7pD,WAAW2qD,EAAW,IACrDA,IAEF,IAAI/C,EAAM4C,GAASE,EAAYC,GAC3B/C,EAAI9wG,SAAS,OAEb8wG,EAAM+B,GAAeiB,eAAehD,GAAK,IAG7CiD,GAAQ,CACNl2G,KAAM,EACN6nF,QAASsuB,GAAUlD,GAAK,EAAOmD,GAAOL,EAAYC,IAClDlN,IAAKsN,GAAOthG,EAAOC,IAEvB,EACA,aAAAy5F,CAAc15F,EAAOC,GACnB,MAAMjc,EAAO+8G,GAAS/gG,EAAOC,GAC7BogG,GAAiB,CACfn1G,KAAM,EACNuW,IAAKzd,EACL47G,GAAIM,GAAeL,aAAa77G,EAAM,GAAM,GAAIk8G,GAAeN,IAC/DlB,QAAS,EAET1vF,MAAO,GACP/d,SAAU,GACV+iG,IAAKsN,GAAOthG,EAAQ,EAAGC,GACvB8zF,iBAAa,EAEjB,EACA,YAAAgG,CAAa95F,GACXshG,GAAWthG,EACb,EACA,UAAA45F,CAAW75F,EAAOC,GAChB,MAAMjc,EAAO+8G,GAAS/gG,EAAOC,GAC7B,IAAKigG,GAAe/iD,UAAUn5D,GAAO,CACnC,IAAIwsB,GAAQ,EACZ,IAAK,IAAIpwB,EAAI,EAAGA,EAAI,GAAMD,OAAQC,IAAK,CACrC,MAAMZ,EAAI,GAAMY,GAChB,GAAIZ,EAAEiiB,IAAI1b,gBAAkB/B,EAAK+B,cAAe,CAC9CyqB,GAAQ,EACJpwB,EAAI,GACNygH,GAAU,GAAI,GAAM,GAAG7M,IAAIh0F,MAAMqO,QAEnC,IAAK,IAAIrB,EAAI,EAAGA,GAAK5sB,EAAG4sB,IAAK,CAC3B,MAAMnb,EAAK,GAAMwrC,QACjBmkE,GAAW3vG,EAAIoO,EAAK+M,EAAI5sB,EAC1B,CACA,KACF,CACF,CACKowB,GACHqwF,GAAU,GAAIY,GAAUzhG,EAAO,IAEnC,CACF,EACA,gBAAAm6F,CAAiBl6F,GACf,IAAI3b,EACJ,MAAMN,EAAOq8G,GAAe5+F,IAC5B4+F,GAAeqB,eAAgB,EAC/BH,GAAWthG,IACa,OAAlB3b,EAAK,GAAM,SAAc,EAASA,EAAGmd,OAASzd,GAClDw9G,GAAW,GAAMnkE,QAASp9B,EAE9B,EACA,YAAAo6F,CAAar6F,EAAOC,GAClBqgG,GAAc,CACZp1G,KAAM,EACNlH,KAAM+8G,GAAS/gG,EAAOC,GACtB0hG,QAASL,GAAOthG,EAAOC,GACvBhhB,WAAO,EACP+0G,IAAKsN,GAAOthG,GAEhB,EACA,SAAAi6F,CAAUj6F,EAAOC,GACf,MAAM29B,EAAMmjE,GAAS/gG,EAAOC,GACtBjc,EAAe,MAAR45C,GAAuB,MAARA,EAAc,OAAiB,MAARA,EAAc,KAAe,MAARA,EAAc,OAASA,EAAIhwC,MAAM,GAIzG,GAHKwpG,IAAmB,KAATpzG,GACb68G,GAAU,GAAI7gG,GAEZo3F,IAAmB,KAATpzG,EACZs8G,GAAc,CACZp1G,KAAM,EACNlH,KAAM45C,EACN+jE,QAASL,GAAOthG,EAAOC,GACvBhhB,WAAO,EACP+0G,IAAKsN,GAAOthG,SAYd,GATAsgG,GAAc,CACZp1G,KAAM,EACNlH,OACAkkG,QAAStqD,EACTugE,SAAK,EACL1iD,SAAK,EACLqgB,UAAmB,MAARl+B,EAAc,CAAC,QAAU,GACpCo2D,IAAKsN,GAAOthG,IAED,QAAThc,EAAgB,CAClBozG,GAASwJ,GAAUxJ,QAAS,EAC5BuJ,GAAsBN,GACtB,MAAMrxF,EAAQqxF,GAAerxF,MAC7B,IAAK,IAAI5uB,EAAI,EAAGA,EAAI4uB,EAAM7uB,OAAQC,IACV,IAAlB4uB,EAAM5uB,GAAG8K,OACX8jB,EAAM5uB,GAAKwhH,GAAU5yF,EAAM5uB,IAGjC,CAEJ,EACA,QAAAq6G,CAASz6F,EAAOC,GACd,GAAID,IAAUC,EACZ,OACF,MAAMw7C,EAAMslD,GAAS/gG,EAAOC,GAC5B,GAAIm3F,GACFkJ,GAAYt8G,MAAQy3D,EACpBomD,GAAUvB,GAAYqB,QAAS1hG,OAC1B,CACL,MAAM40F,EAAsB,MAAXp5C,EAAI,GACrB6kD,GAAY7kD,IAAM4lD,GAChBxM,EAAWp5C,EAAMA,EAAI7tD,MAAM,GAAI,GAC/BinG,EACAyM,GAAOthG,EAAOC,GACd40F,EAAW,EAAI,EAEnB,CACF,EACA,aAAA+F,CAAc56F,EAAOC,GACnB,MAAM8rF,EAAMgV,GAAS/gG,EAAOC,GAC5B,GAAIm3F,GACFkJ,GAAYt8G,MAAQ,IAAM+nG,EAC1B8V,GAAUvB,GAAYqB,QAAS1hG,QAC1B,GAAyB,SAArBqgG,GAAYt8G,KAAiB,CACtC,MAAMy3D,EAAM6kD,GAAY7kD,IACpBA,IACFA,EAAIs3B,SAAW,IAAMgZ,EACrB8V,GAAUpmD,EAAIu4C,IAAK/zF,GAEvB,MACEqgG,GAAYxkC,UAAU13E,KAAK2nG,EAE/B,EACA,YAAAqP,CAAap7F,EAAOC,GAClBsgG,IAAoBQ,GAAS/gG,EAAOC,GAChCugG,GAAwB,IAC1BA,GAAwBxgG,GAC1BygG,GAAsBxgG,CACxB,EACA,cAAA6hG,CAAe/D,EAAM/9F,EAAOC,GAC1BsgG,IAAoBxC,EAChByC,GAAwB,IAC1BA,GAAwBxgG,GAC1BygG,GAAsBxgG,CACxB,EACA,eAAA46F,CAAgB56F,GACd,MAAMD,EAAQsgG,GAAYtM,IAAIh0F,MAAMqO,OAC9BrqB,EAAO+8G,GAAS/gG,EAAOC,GACJ,IAArBqgG,GAAYp1G,OACdo1G,GAAYpY,QAAUlkG,GAEpBq8G,GAAerxF,MAAMkjD,MACtBntE,IAAkB,IAAXA,EAAEmG,KAAanG,EAAEmjG,QAAUnjG,EAAEf,QAAUA,KAE/C68G,GAAU,EAAG7gG,EAEjB,EACA,WAAA+6F,CAAYI,EAAOl7F,GACjB,GAAIogG,IAAkBC,GAAa,CAEjC,GADAuB,GAAUvB,GAAYtM,IAAK/zF,GACb,IAAVk7F,EAOF,GANIoF,GAAiBlzG,SAAS,OAC5BkzG,GAAmBL,GAAeiB,eAChCZ,IACA,IAGqB,IAArBD,GAAYp1G,KACW,UAArBo1G,GAAYt8G,OACdu8G,GAAmBwB,GAASxB,IAAkB5vG,QAElC,IAAVwqG,GAAgBoF,IAClBM,GAAU,GAAI5gG,GAEhBqgG,GAAYrhH,MAAQ,CAClBiM,KAAM,EACN6nF,QAASwtB,GACTvM,IAAe,IAAVmH,EAAcmG,GAAOd,GAAuBC,IAAuBa,GAAOd,GAAwB,EAAGC,GAAsB,IAE9HG,GAAUjJ,WAAoC,aAAvB0I,GAAe5+F,KAA2C,SAArB6+F,GAAYt8G,MAAmBu8G,IAAyC,SAArBA,IACjHK,GAAUvH,YAAYlD,GAAY,cAAe,OAE9C,CACL,IAAI6L,EAAe,EACnB1B,GAAYnC,IAAMkD,GAChBd,IACA,EACAe,GAAOd,GAAuBC,IAC9B,EACAuB,GAEuB,QAArB1B,GAAYt8G,OACds8G,GAAY2B,eAAiBC,GAAmB5B,GAAYnC,MAE9D,IAAIgE,GAAa,EACQ,SAArB7B,GAAYt8G,OAAoBm+G,EAAY7B,GAAYxkC,UAAU3+D,QAAQ,UAAY,GAAKw/F,GAC7F,uBACAuD,GACAI,GAAYtM,IACZsM,GAAYpY,WAEZoY,GAAYt8G,KAAO,QACnBs8G,GAAYxkC,UAAUtuD,OAAO20F,EAAW,GAE5C,CAEuB,IAArB7B,GAAYp1G,MAAmC,QAArBo1G,GAAYt8G,MACxCq8G,GAAerxF,MAAM5qB,KAAKk8G,GAE9B,CACAC,GAAmB,GACnBC,GAAwBC,IAAuB,CACjD,EACA,SAAAvH,CAAUl5F,EAAOC,GACXigG,GAAeF,UACjBoB,GAAQ,CACNl2G,KAAM,EACN6nF,QAASguB,GAAS/gG,EAAOC,GACzB+zF,IAAKsN,GAAOthG,EAAQ,EAAGC,EAAM,IAGnC,EACA,KAAAk8F,GACE,MAAMl8F,EAAMmgG,GAAajgH,OAuCzB,IAAK,IAAI+c,EAAQ,EAAGA,EAAQ,GAAM/c,OAAQ+c,IACxCskG,GAAW,GAAMtkG,GAAQ+C,EAAM,GAC/B4gG,GAAU,GAAI,GAAM3jG,GAAO82F,IAAIh0F,MAAMqO,OAEzC,EACA,OAAA4qF,CAAQj5F,EAAOC,GACO,IAAhB,GAAM,GAAG2/F,GACXkB,GAAOC,GAAS/gG,EAAOC,GAAMD,EAAOC,GAEpC4gG,GAAU,EAAG7gG,EAAQ,EAEzB,EACA,uBAAA07F,CAAwB17F,GAC+B,KAAhD,GAAM,GAAK,GAAM,GAAG4/F,GAAKM,GAAeN,KAC3CiB,GACE,GACA7gG,EAAQ,EAGd,IAEIoiG,GAAgB,iCAChBC,GAAgB,WACtB,SAASH,GAAmBlrD,GAC1B,MAAMg9C,EAAMh9C,EAAMg9C,IACZmK,EAAMnnD,EAAM+7B,QACZuvB,EAAUnE,EAAIxkG,MAAM8lG,IAC1B,IAAK6C,EACH,OACF,MAAO,CAAEC,EAAKC,GAAOF,EACfG,EAAwB,CAAC1vB,EAAS1kE,EAAQq0F,GAAU,KACxD,MAAM1iG,EAAQg0F,EAAIh0F,MAAMqO,OAASA,EAC3BpO,EAAMD,EAAQ+yE,EAAQ5yF,OAC5B,OAAOkhH,GACLtuB,GACA,EACAuuB,GAAOthG,EAAOC,GACd,EACAyiG,EAAU,EAAiB,EAC5B,EAEGhjH,EAAS,CACbe,OAAQgiH,EAAsBD,EAAI7xG,OAAQwtG,EAAIhhG,QAAQqlG,EAAKD,EAAIpiH,SAC/DlB,WAAO,EACPgC,SAAK,EACLic,WAAO,EACPylG,WAAW,GAEb,IAAIC,EAAeL,EAAI5xG,OAAO9K,QAAQw8G,GAAe,IAAI1xG,OACzD,MAAMkyG,EAAgBN,EAAIplG,QAAQylG,GAC5BE,EAAgBF,EAAajpG,MAAMyoG,IACzC,GAAIU,EAAe,CACjBF,EAAeA,EAAa/8G,QAAQu8G,GAAe,IAAIzxG,OACvD,MAAMoyG,EAAaD,EAAc,GAAGnyG,OACpC,IAAIqyG,EAKJ,GAJID,IACFC,EAAY7E,EAAIhhG,QAAQ4lG,EAAYF,EAAgBD,EAAaziH,QACjET,EAAOuB,IAAMwhH,EAAsBM,EAAYC,GAAW,IAExDF,EAAc,GAAI,CACpB,MAAMG,EAAeH,EAAc,GAAGnyG,OAClCsyG,IACFvjH,EAAOwd,MAAQulG,EACbQ,EACA9E,EAAIhhG,QACF8lG,EACAvjH,EAAOuB,IAAM+hH,EAAYD,EAAW5iH,OAAS0iH,EAAgBD,EAAaziH,SAE5E,GAGN,CACF,CAIA,OAHIyiH,IACFljH,EAAOT,MAAQwjH,EAAsBG,EAAcC,GAAe,IAE7DnjH,CACT,CACA,SAASqhH,GAAS/gG,EAAOC,GACvB,OAAOmgG,GAAaxyG,MAAMoS,EAAOC,EACnC,CACA,SAASshG,GAAWthG,GACd2gG,GAAUjJ,YACZ0I,GAAe6C,SAAW5B,GAAOrhG,EAAM,EAAGA,EAAM,IAElDmhG,GAAQf,IACR,MAAM,IAAE5+F,EAAG,GAAEm+F,GAAOS,GACT,IAAPT,GAAYM,GAAeJ,SAASr+F,IACtCi/F,KAEER,GAAe/iD,UAAU17C,GAC3B+/F,GAAWnB,GAAgBpgG,IAE3B,GAAM2M,QAAQyzF,IACH,IAAPT,GAAmB,IAAPA,IACdgB,GAAUzJ,OAAQ,IAGtBkJ,GAAiB,IACnB,CACA,SAASS,GAAO/tB,EAAS/yE,EAAOC,GAC9B,IAAI3b,EACJ,CACE,MAAMmd,EAAyB,OAAlBnd,EAAK,GAAM,SAAc,EAASA,EAAGmd,IACtC,WAARA,GAA4B,UAARA,GAAmBsxE,EAAQ1lF,SAAS,OAC1D0lF,EAAUmtB,GAAeiB,eAAepuB,GAAS,GAErD,CACA,MAAM/hE,EAAS,GAAM,IAAMmvF,GACrBgD,EAAWnyF,EAAO/f,SAAS+f,EAAO/f,SAAS9Q,OAAS,GACN,KAAnC,MAAZgjH,OAAmB,EAASA,EAASj4G,OACxCi4G,EAASpwB,SAAWA,EACpB8uB,GAAUsB,EAASnP,IAAK/zF,IAExB+Q,EAAO/f,SAAS7M,KAAK,CACnB8G,KAAM,EACN6nF,UACAihB,IAAKsN,GAAOthG,EAAOC,IAGzB,CACA,SAASuhG,GAAW3vG,EAAIoO,EAAKmjG,GAAY,GAErCvB,GAAUhwG,EAAGmiG,IADXoP,EACgB3B,GAAUxhG,EAAK,IAEfA,EAAM,GAEtB2gG,GAAUjJ,YACR9lG,EAAGZ,SAAS9Q,OACd0R,EAAGqxG,SAASjjG,IAAM,EAAO,CAAC,EAAGpO,EAAGZ,SAASY,EAAGZ,SAAS9Q,OAAS,GAAG6zG,IAAI/zF,KAErEpO,EAAGqxG,SAASjjG,IAAM,EAAO,CAAC,EAAGpO,EAAGqxG,SAASljG,OAE3CnO,EAAGqxG,SAASziH,OAASsgH,GACnBlvG,EAAGqxG,SAASljG,MAAMqO,OAClBxc,EAAGqxG,SAASjjG,IAAIoO,SAGpB,MAAM,IAAE5M,EAAG,GAAEm+F,GAAO/tG,EACfulG,KACS,SAAR31F,EACF5P,EAAG6sG,QAAU,EACJ2E,GAAmBxxG,GAC5BA,EAAG6sG,QAAU,EACJvK,GAAYtiG,KACrBA,EAAG6sG,QAAU,IAGZkC,GAAU1J,WACbrlG,EAAGZ,SAAWqyG,GAAmBzxG,EAAGZ,SAAUY,EAAG4P,MAExC,IAAPm+F,GAAYM,GAAeJ,SAASr+F,IACtCi/F,KAEEC,KAAwB9uG,IAC1BulG,GAASwJ,GAAUxJ,QAAS,EAC5BuJ,GAAsB,MAEpBC,GAAUzJ,OAA0D,KAAhD,GAAM,GAAK,GAAM,GAAGyI,GAAKM,GAAeN,MAC9DgB,GAAUzJ,OAAQ,GAEpB,CACE,MAAMnoF,EAAQnd,EAAGmd,MA0BjB,GAAI0tF,GACF,2BACAwD,KACc,aAAXruG,EAAG4P,MAAuB4hG,GAAmBxxG,GAAK,CAMrD,MAAMmf,EAAS,GAAM,IAAMmvF,GACrBjjG,EAAQ8T,EAAO/f,SAASkM,QAAQtL,GACtCmf,EAAO/f,SAASuc,OAAOtQ,EAAO,KAAMrL,EAAGZ,SACzC,CACA,MAAMsyG,EAAqBv0F,EAAMjjB,MAC9BhH,GAAiB,IAAXA,EAAEmG,MAAyB,oBAAXnG,EAAEf,OAEvBu/G,GAAsB5G,GACxB,2BACAuD,GACAqD,EAAmBvP,MAChBniG,EAAGZ,SAAS9Q,SACfojH,EAAmBtkH,MAAQ,CACzBiM,KAAM,EACN6nF,QAASguB,GACPlvG,EAAGZ,SAAS,GAAG+iG,IAAIh0F,MAAMqO,OACzBxc,EAAGZ,SAASY,EAAGZ,SAAS9Q,OAAS,GAAG6zG,IAAI/zF,IAAIoO,QAE9C2lF,IAAKuP,EAAmBvP,KAG9B,CACF,CACA,SAASyN,GAAUvkG,EAAOlY,GACxB,IAAI5E,EAAI8c,EACR,MAAOkjG,GAAa7pD,WAAWn2D,KAAO4E,GAAK5E,GAAK,EAC9CA,IACF,OAAOA,CACT,CACA,MAAMojH,GAAqC,IAAIl+G,IAAI,CAAC,KAAM,OAAQ,UAAW,MAAO,SACpF,SAAS+9G,IAAmB,IAAE5hG,EAAG,MAAEuN,IACjC,GAAY,aAARvN,EACF,IAAK,IAAIrhB,EAAI,EAAGA,EAAI4uB,EAAM7uB,OAAQC,IAChC,GAAsB,IAAlB4uB,EAAM5uB,GAAG8K,MAAcs4G,GAAmB55G,IAAIolB,EAAM5uB,GAAG4D,MACzD,OAAO,EAIb,OAAO,CACT,CACA,SAASmwG,IAAY,IAAE1yF,EAAG,MAAEuN,IAC1B,IAAI1qB,EACJ,GAAI47G,GAAelf,gBAAgBv/E,GACjC,OAAO,EAET,GAAY,cAARA,GAAuBgiG,GAAYhiG,EAAI80C,WAAW,KAAO6mD,GAAgB37F,KAAqD,OAA3Cnd,EAAK47G,GAAewD,yBAA8B,EAASp/G,EAAGtD,KAAKk/G,GAAgBz+F,KAASy+F,GAAe5zB,cAAgB4zB,GAAe5zB,YAAY7qE,GAC3O,OAAO,EAET,IAAK,IAAIrhB,EAAI,EAAGA,EAAI4uB,EAAM7uB,OAAQC,IAAK,CACrC,MAAM2E,EAAIiqB,EAAM5uB,GAChB,GAAe,IAAX2E,EAAEmG,MACJ,GAAe,OAAXnG,EAAEf,MAAiBe,EAAE9F,MAAO,CAC9B,GAAI8F,EAAE9F,MAAM8zF,QAAQrlF,WAAW,QAC7B,OAAO,EACF,GAAIivG,GACT,yBACAuD,GACAn7G,EAAEivG,KAEF,OAAO,CAEX,OACK,GACI,SAAXjvG,EAAEf,MAAmBs6G,GAAcv5G,EAAE02D,IAAK,OAASkhD,GACjD,yBACAuD,GACAn7G,EAAEivG,KAEF,OAAO,CAEX,CACA,OAAO,CACT,CACA,SAASyP,GAAYz+G,GACnB,OAAOA,EAAI,IAAMA,EAAI,EACvB,CACA,MAAM2+G,GAAmB,QACzB,SAASL,GAAmBM,EAAOniG,GACjC,IAAInd,EAAIC,EACR,MAAMs/G,EAA+C,aAA9B3D,GAAe4D,WACtC,IAAIC,GAAoB,EACxB,IAAK,IAAI3jH,EAAI,EAAGA,EAAIwjH,EAAMzjH,OAAQC,IAAK,CACrC,MAAMgyB,EAAOwxF,EAAMxjH,GACnB,GAAkB,IAAdgyB,EAAKlnB,KACP,GAAKw1G,GAcHtuF,EAAK2gE,QAAU3gE,EAAK2gE,QAAQltF,QAAQ89G,GAAkB,WAbtD,GAAIK,GAAgB5xF,EAAK2gE,SAAU,CACjC,MAAMxhF,EAA8B,OAAtBjN,EAAKs/G,EAAMxjH,EAAI,SAAc,EAASkE,EAAG4G,KACjD3L,EAA8B,OAAtBgF,EAAKq/G,EAAMxjH,EAAI,SAAc,EAASmE,EAAG2G,MAClDqG,IAAShS,GAAQskH,IAA4B,IAATtyG,IAAwB,IAAThS,GAAuB,IAATA,IAAwB,IAATgS,IAAwB,IAAThS,GAAuB,IAATA,GAAc0kH,GAAe7xF,EAAK2gE,YAClJgxB,GAAoB,EACpBH,EAAMxjH,GAAK,MAEXgyB,EAAK2gE,QAAU,GAEnB,MAAW8wB,IACTzxF,EAAK2gE,QAAUgvB,GAAS3vF,EAAK2gE,SAMrC,CACA,GAAI2tB,IAASj/F,GAAOy+F,GAAeJ,SAASr+F,GAAM,CAChD,MAAMy9F,EAAQ0E,EAAM,GAChB1E,GAAwB,IAAfA,EAAMh0G,OACjBg0G,EAAMnsB,QAAUmsB,EAAMnsB,QAAQltF,QAAQ,SAAU,IAEpD,CACA,OAAOk+G,EAAoBH,EAAM1zG,OAAOnD,SAAW62G,CACrD,CACA,SAASI,GAAgB7tD,GACvB,IAAK,IAAI/1D,EAAI,EAAGA,EAAI+1D,EAAIh2D,OAAQC,IAC9B,IAAK61G,GAAa9/C,EAAII,WAAWn2D,IAC/B,OAAO,EAGX,OAAO,CACT,CACA,SAAS6jH,GAAe9tD,GACtB,IAAK,IAAI/1D,EAAI,EAAGA,EAAI+1D,EAAIh2D,OAAQC,IAAK,CACnC,MAAM4E,EAAImxD,EAAII,WAAWn2D,GACzB,GAAU,KAAN4E,GAAkB,KAANA,EACd,OAAO,CAEX,CACA,OAAO,CACT,CACA,SAAS+8G,GAAS5rD,GAChB,IAAIuG,EAAM,GACNwnD,GAAuB,EAC3B,IAAK,IAAI9jH,EAAI,EAAGA,EAAI+1D,EAAIh2D,OAAQC,IAC1B61G,GAAa9/C,EAAII,WAAWn2D,IACzB8jH,IACHxnD,GAAO,IACPwnD,GAAuB,IAGzBxnD,GAAOvG,EAAI/1D,GACX8jH,GAAuB,GAG3B,OAAOxnD,CACT,CACA,SAAS0kD,GAAQhvF,IACd,GAAM,IAAM+tF,IAAalvG,SAAS7M,KAAKguB,EAC1C,CACA,SAASkvF,GAAOthG,EAAOC,GACrB,MAAO,CACLD,MAAO4gG,GAAUhJ,OAAO53F,GAExBC,IAAY,MAAPA,EAAcA,EAAM2gG,GAAUhJ,OAAO33F,GAE1Cxf,OAAe,MAAPwf,EAAcA,EAAM8gG,GAAS/gG,EAAOC,GAEhD,CACA,SAAS4hG,GAAU7N,EAAK/zF,GACtB+zF,EAAI/zF,IAAM2gG,GAAUhJ,OAAO33F,GAC3B+zF,EAAIvzG,OAASsgH,GAAS/M,EAAIh0F,MAAMqO,OAAQpO,EAC1C,CACA,SAAS2hG,GAAU5lG,GACjB,MAAM4P,EAAO,CACX1gB,KAAM,EACNlH,KAAMgY,EAAIksF,QACVyZ,QAASL,GACPtlG,EAAIg4F,IAAIh0F,MAAMqO,OACdrS,EAAIg4F,IAAIh0F,MAAMqO,OAASrS,EAAIksF,QAAQ/nG,QAErClB,WAAO,EACP+0G,IAAKh4F,EAAIg4F,KAEX,GAAIh4F,EAAImiG,IAAK,CACX,MAAMnK,EAAMh4F,EAAImiG,IAAInK,IAChBA,EAAI/zF,IAAIoO,OAASrS,EAAIg4F,IAAI/zF,IAAIoO,SAC/B2lF,EAAIh0F,MAAMqO,SACV2lF,EAAIh0F,MAAM0c,SACVs3E,EAAI/zF,IAAIoO,SACR2lF,EAAI/zF,IAAIyc,UAEV9Q,EAAK3sB,MAAQ,CACXiM,KAAM,EACN6nF,QAAS/2E,EAAImiG,IAAIprB,QACjBihB,MAEJ,CACA,OAAOpoF,CACT,CACA,SAASy1F,GAAUtuB,EAAS8hB,GAAW,EAAOb,EAAKc,EAAY,EAAG6K,EAAY,GAC5E,MAAMxB,EAAMvJ,GAAuB7hB,EAAS8hB,EAAUb,EAAKc,GAC3D,OAAOqJ,CACT,CACA,SAAS0C,GAAU9D,EAAM7/F,EAAOqwC,GAC9B2yD,GAAen/B,QACb+7B,GAAoBC,EAAMuE,GAAOpkG,EAAOA,QAAQ,EAAQqwC,GAE5D,CACA,SAAS,KACPqzD,GAAU75G,QACVs5G,GAAiB,KACjBC,GAAc,KACdC,GAAmB,GACnBC,IAAyB,EACzBC,IAAuB,EACvB,GAAMtgH,OAAS,CACjB,CACA,SAAS,GAAU62D,EAAOz0D,GAIxB,GAHA,KACA69G,GAAeppD,EACfkpD,GAAiB,EAAO,CAAC,EAAGR,IACxBn9G,EAAS,CACX,IAAItB,EACJ,IAAKA,KAAOsB,EACU,MAAhBA,EAAQtB,KACVi/G,GAAej/G,GAAOsB,EAAQtB,GAGpC,CAQA2/G,GAAUrpC,KAAoC,SAA7B2oC,GAAeP,UAAuB,EAAiC,QAA7BO,GAAeP,UAAsB,EAAI,EACpGiB,GAAUzJ,MAA8B,IAAtB+I,GAAeN,IAAkC,IAAtBM,GAAeN,GAC5D,MAAM3e,EAAwB,MAAX1+F,OAAkB,EAASA,EAAQ0+F,WAClDA,IACF2f,GAAUtJ,cAAgBnB,GAAYlV,EAAW,IACjD2f,GAAUrJ,eAAiBpB,GAAYlV,EAAW,KAEpD,MAAMzlF,EAAO2kG,GAAcxM,GAAW,GAAI38C,GAK1C,OAJA4pD,GAAUvxG,MAAM+wG,IAChB5kG,EAAKw4F,IAAMsN,GAAO,EAAGtqD,EAAM72D,QAC3Bqb,EAAKvK,SAAWqyG,GAAmB9nG,EAAKvK,UACxCkvG,GAAc,KACP3kG,CACT,CAEA,SAAS2oG,GAAY3oG,EAAM+O,GACzB65F,GACE5oG,EACA+O,EAGA85F,GAAoB7oG,EAAMA,EAAKvK,SAAS,IAE5C,CACA,SAASozG,GAAoB7oG,EAAMtK,GACjC,MAAM,SAAED,GAAauK,EACrB,OAA2B,IAApBvK,EAAS9Q,QAA+B,IAAf+Q,EAAMhG,OAAeyzG,GAAaztG,EACpE,CACA,SAASkzG,GAAKhyF,EAAM7H,EAAS+5F,GAAiB,GAC5C,MAAM,SAAErzG,GAAamhB,EACfmyF,EAAgBtzG,EAAS9Q,OAC/B,IAAIqkH,EAAe,EACnB,IAAK,IAAIpkH,EAAI,EAAGA,EAAI6Q,EAAS9Q,OAAQC,IAAK,CACxC,MAAM8Q,EAAQD,EAAS7Q,GACvB,GAAmB,IAAf8Q,EAAMhG,MAAgC,IAAlBgG,EAAMwtG,QAAe,CAC3C,MAAM+F,EAAeH,EAAiB,EAAII,GAAgBxzG,EAAOqZ,GACjE,GAAIk6F,EAAe,GACjB,GAAIA,GAAgB,EAAG,CACrBvzG,EAAM6iG,YAAY9gC,UAAY,KAC9B/hE,EAAM6iG,YAAcxpF,EAAQo6F,MAAMzzG,EAAM6iG,aACxCyQ,IACA,QACF,MACK,CACL,MAAMzQ,EAAc7iG,EAAM6iG,YAC1B,GAAyB,KAArBA,EAAY7oG,KAAa,CAC3B,MAAM4zF,EAAO8lB,GAAa7Q,GAC1B,KAAMjV,GAAiB,MAATA,GAAyB,IAATA,IAAe+lB,GAA8B3zG,EAAOqZ,IAAY,EAAG,CAC/F,MAAMyE,EAAQ81F,GAAa5zG,GACvB8d,IACF+kF,EAAY/kF,MAAQzE,EAAQo6F,MAAM31F,GAEtC,CACI+kF,EAAY1gC,eACd0gC,EAAY1gC,aAAe9oD,EAAQo6F,MAAM5Q,EAAY1gC,cAEzD,CACF,CACF,CACA,GAAmB,IAAfniE,EAAMhG,KAAY,CACpB,MAAMipG,EAAgC,IAAlBjjG,EAAMwtG,QACtBvK,GACF5pF,EAAQu0C,OAAOimD,QAEjBX,GAAKlzG,EAAOqZ,GACR4pF,GACF5pF,EAAQu0C,OAAOimD,OAEnB,MAAO,GAAmB,KAAf7zG,EAAMhG,KACfk5G,GAAKlzG,EAAOqZ,EAAmC,IAA1BrZ,EAAMD,SAAS9Q,aAC/B,GAAmB,IAAf+Q,EAAMhG,KACf,IAAK,IAAIq9E,EAAK,EAAGA,EAAKr3E,EAAM8zG,SAAS7kH,OAAQooF,IAC3C67B,GACElzG,EAAM8zG,SAASz8B,GACfh+D,EACuC,IAAvCrZ,EAAM8zG,SAASz8B,GAAIt3E,SAAS9Q,OAIpC,CAIA,GAHIqkH,GAAgBj6F,EAAQ06F,gBAC1B16F,EAAQ06F,eAAeh0G,EAAUsZ,EAAS6H,GAExCoyF,GAAgBA,IAAiBD,GAA+B,IAAdnyF,EAAKlnB,MAA+B,IAAjBknB,EAAKssF,SAAiBtsF,EAAK2hF,aAAyC,KAA1B3hF,EAAK2hF,YAAY7oG,MAAe,EAAQknB,EAAK2hF,YAAY9iG,UAAW,CACrL,MAAMi0G,EAAU36F,EAAQo6F,MACtBnQ,GAAsBpiF,EAAK2hF,YAAY9iG,WAErCsZ,EAAQ46F,MACVD,EAAQnyB,QAAU,OAAOmyB,EAAQnyB,YAEnC3gE,EAAK2hF,YAAY9iG,SAAWi0G,CAC9B,CACF,CACA,SAASR,GAAgBtyF,EAAM7H,GAC7B,MAAM,cAAE66F,GAAkB76F,EAC1B,OAAQ6H,EAAKlnB,MACX,KAAK,EACH,GAAqB,IAAjBknB,EAAKssF,QACP,OAAO,EAET,MAAMpvC,EAAS81C,EAAc/7G,IAAI+oB,GACjC,QAAe,IAAXk9C,EACF,OAAOA,EAET,MAAMykC,EAAc3hF,EAAK2hF,YACzB,GAAyB,KAArBA,EAAY7oG,KACd,OAAO,EAET,GAAI6oG,EAAYG,SAAwB,QAAb9hF,EAAK3Q,KAA8B,kBAAb2Q,EAAK3Q,IACpD,OAAO,EAET,MAAMq9E,EAAO8lB,GAAa7Q,GAC1B,GAAKjV,EAsDH,OADAsmB,EAAcx/G,IAAIwsB,EAAM,GACjB,EAtDE,CACT,IAAIizF,EAAc,EAClB,MAAMC,EAAqBT,GAA8BzyF,EAAM7H,GAC/D,GAA2B,IAAvB+6F,EAEF,OADAF,EAAcx/G,IAAIwsB,EAAM,GACjB,EAELkzF,EAAqBD,IACvBA,EAAcC,GAEhB,IAAK,IAAIllH,EAAI,EAAGA,EAAIgyB,EAAKnhB,SAAS9Q,OAAQC,IAAK,CAC7C,MAAMmlH,EAAYb,GAAgBtyF,EAAKnhB,SAAS7Q,GAAImqB,GACpD,GAAkB,IAAdg7F,EAEF,OADAH,EAAcx/G,IAAIwsB,EAAM,GACjB,EAELmzF,EAAYF,IACdA,EAAcE,EAElB,CACA,GAAIF,EAAc,EAChB,IAAK,IAAIjlH,EAAI,EAAGA,EAAIgyB,EAAKpD,MAAM7uB,OAAQC,IAAK,CAC1C,MAAM2E,EAAIqtB,EAAKpD,MAAM5uB,GACrB,GAAe,IAAX2E,EAAEmG,MAAyB,SAAXnG,EAAEf,MAAmBe,EAAEo5G,IAAK,CAC9C,MAAMqH,EAAUd,GAAgB3/G,EAAEo5G,IAAK5zF,GACvC,GAAgB,IAAZi7F,EAEF,OADAJ,EAAcx/G,IAAIwsB,EAAM,GACjB,EAELozF,EAAUH,IACZA,EAAcG,EAElB,CACF,CAEF,GAAIzR,EAAYG,QAAS,CACvB,IAAK,IAAI9zG,EAAI,EAAGA,EAAIgyB,EAAKpD,MAAM7uB,OAAQC,IAAK,CAC1C,MAAM2E,EAAIqtB,EAAKpD,MAAM5uB,GACrB,GAAe,IAAX2E,EAAEmG,KAEJ,OADAk6G,EAAcx/G,IAAIwsB,EAAM,GACjB,CAEX,CACA7H,EAAQsrF,aAAa1E,IACrB5mF,EAAQsrF,aACNxB,GAAoB9pF,EAAQ+pF,MAAOP,EAAYI,cAEjDJ,EAAYG,SAAU,EACtB3pF,EAAQ6pF,OAAOG,GAAehqF,EAAQ+pF,MAAOP,EAAYI,aAC3D,CAEA,OADAiR,EAAcx/G,IAAIwsB,EAAMizF,GACjBA,CACT,CAIF,KAAK,EACL,KAAK,EACH,OAAO,EACT,KAAK,EACL,KAAK,GACL,KAAK,GACH,OAAO,EACT,KAAK,EACL,KAAK,GACH,OAAOX,GAAgBtyF,EAAK2gE,QAASxoE,GACvC,KAAK,EACH,OAAO6H,EAAK0iF,UACd,KAAK,EACH,IAAI2Q,EAAa,EACjB,IAAK,IAAIrlH,EAAI,EAAGA,EAAIgyB,EAAKnhB,SAAS9Q,OAAQC,IAAK,CAC7C,MAAM8Q,EAAQkhB,EAAKnhB,SAAS7Q,GAC5B,GAAI,EAAS8Q,IAAUgP,EAAShP,GAC9B,SAEF,MAAMq0G,EAAYb,GAAgBxzG,EAAOqZ,GACzC,GAAkB,IAAdg7F,EACF,OAAO,EACEA,EAAYE,IACrBA,EAAaF,EAEjB,CACA,OAAOE,EACT,QAEE,OAAO,EAEb,CACA,MAAMC,GAAwC,IAAIpgH,IAAI,CACpD+sG,GACAC,GACAC,GACAC,KAEF,SAASmT,GAA4B1mH,EAAOsrB,GAC1C,GAAmB,KAAftrB,EAAMiM,OAAgB,EAASjM,EAAMg2G,SAAWyQ,GAAsB97G,IAAI3K,EAAMg2G,QAAS,CAC3F,MAAMx5C,EAAMx8D,EAAMgqB,UAAU,GAC5B,GAAiB,IAAbwyC,EAAIvwD,KACN,OAAOw5G,GAAgBjpD,EAAKlxC,GACvB,GAAiB,KAAbkxC,EAAIvwD,KACb,OAAOy6G,GAA4BlqD,EAAKlxC,EAE5C,CACA,OAAO,CACT,CACA,SAASs6F,GAA8BzyF,EAAM7H,GAC3C,IAAIk7F,EAAa,EACjB,MAAMz2F,EAAQ81F,GAAa1yF,GAC3B,GAAIpD,GAAwB,KAAfA,EAAM9jB,KAAa,CAC9B,MAAM,WAAEwpG,GAAe1lF,EACvB,IAAK,IAAI5uB,EAAI,EAAGA,EAAIs0G,EAAWv0G,OAAQC,IAAK,CAC1C,MAAM,IAAEa,EAAG,MAAEhC,GAAUy1G,EAAWt0G,GAC5BwlH,EAAUlB,GAAgBzjH,EAAKspB,GACrC,GAAgB,IAAZq7F,EACF,OAAOA,EAKT,IAAIttG,EAQJ,GAXIstG,EAAUH,IACZA,EAAaG,GAIbttG,EADiB,IAAfrZ,EAAMiM,KACIw5G,GAAgBzlH,EAAOsrB,GACX,KAAftrB,EAAMiM,KACHy6G,GAA4B1mH,EAAOsrB,GAEnC,EAEI,IAAdjS,EACF,OAAOA,EAELA,EAAYmtG,IACdA,EAAantG,EAEjB,CACF,CACA,OAAOmtG,CACT,CACA,SAASX,GAAa1yF,GACpB,MAAM2hF,EAAc3hF,EAAK2hF,YACzB,GAAyB,KAArBA,EAAY7oG,KACd,OAAO6oG,EAAY/kF,KAEvB,CACA,SAAS41F,GAAaxyF,GACpB,MAAM0sE,EAAO1sE,EAAK6gD,UAClB,OAAO6rB,EAAOnlE,SAASmlE,EAAM,SAAM,CACrC,CAEA,SAAS+mB,GAAuBrqG,GAAM,SACpCsqG,EAAW,GAAE,kBACb7F,GAAoB,EACpBkE,YAAa4B,GAAe,EAAK,IACjCZ,GAAM,EAAK,cACXa,GAAgB,EAAK,eACrBC,EAAiB,GAAE,oBACnBC,EAAsB,CAAC,EAAC,eACxBjB,EAAiB,KAAI,mBACrBvB,EAAqB,EAAI,gBACzB1iB,EAAkB,EAAI,kBACtBmlB,EAAoB,GAAE,QACtB9gC,EAAU,KAAI,QACd+gC,GAAU,EAAI,IACdzQ,GAAM,EAAK,MACXrB,GAAQ,EAAK,WACb+R,EAAa,GAAE,gBACfC,EAAkBtsD,EAAS,OAC3BusD,GAAS,EAAK,KACdC,GAAO,EAAK,QACZzlC,EAAU67B,GAAc,OACxBmD,EAASlD,GAAa,aACtBJ,IAEA,MAAMgK,EAAYX,EAASjgH,QAAQ,QAAS,IAAI8T,MAAM,mBAChD4Q,EAAU,CAEdu7F,WACAxxC,SAAUmyC,GAAa,EAAWvrD,EAASurD,EAAU,KACrDxG,oBACAkE,YAAa4B,EACbZ,MACAa,gBACAC,iBACAC,sBACAjB,iBACAvB,qBACA1iB,kBACAmlB,oBACA9gC,UACA+gC,UACAzQ,MACArB,QACA+R,aACAC,kBACAC,SACAC,OACAzlC,UACAg/B,SACAtD,eAEAjhG,OACA+3F,QAAyB,IAAI7pG,IAC7B+gF,WAA4B,IAAInlF,IAChCo2E,WAA4B,IAAIp2E,IAChCsuG,OAAQ,GACRC,QAAS,GACTuR,cAA+B,IAAIpjD,QACnC8xC,MAAO,EACPxkC,OAAQ,EACRo3C,YAA6B9lH,OAAOqnB,OAAO,MAC3C62C,OAAQ,CACN6nD,KAAM,EACN5B,MAAO,EACP6B,KAAM,EACNC,MAAO,GAET71F,OAAQ,KACR81F,YAAatrG,EACburG,WAAY,EACZC,SAAS,EAET,MAAA5S,CAAOpwG,GACL,MAAMijH,EAAQ18F,EAAQgpF,QAAQlqG,IAAIrF,IAAS,EAE3C,OADAumB,EAAQgpF,QAAQ3tG,IAAI5B,EAAMijH,EAAQ,GAC3BjjH,CACT,EACA,YAAA6xG,CAAa7xG,GACX,MAAMijH,EAAQ18F,EAAQgpF,QAAQlqG,IAAIrF,GAClC,GAAIijH,EAAO,CACT,MAAMC,EAAeD,EAAQ,EACxBC,EAGH38F,EAAQgpF,QAAQ3tG,IAAI5B,EAAMkjH,GAF1B38F,EAAQgpF,QAAQvpG,OAAOhG,EAI3B,CACF,EACA,YAAAmjH,CAAanjH,GACX,MAAO,IAAIqvG,GAAc9oF,EAAQ6pF,OAAOpwG,KAC1C,EACA,WAAA8uF,CAAY1gE,GASV7H,EAAQyG,OAAO/f,SAASsZ,EAAQw8F,YAAcx8F,EAAQu8F,YAAc10F,CACtE,EACA,UAAAg1F,CAAWh1F,GAIT,MAAMvV,EAAO0N,EAAQyG,OAAO/f,SACtBo2G,EAAej1F,EAAOvV,EAAKM,QAAQiV,GAAQ7H,EAAQu8F,YAAcv8F,EAAQw8F,YAAc,EAIxF30F,GAAQA,IAAS7H,EAAQu8F,YAIxBv8F,EAAQw8F,WAAaM,IACvB98F,EAAQw8F,aACRx8F,EAAQ+8F,kBALV/8F,EAAQu8F,YAAc,KACtBv8F,EAAQ+8F,iBAOV/8F,EAAQyG,OAAO/f,SAASuc,OAAO65F,EAAc,EAC/C,EACAC,cAAe,OAEf,cAAAC,CAAepJ,GACf,EACA,iBAAAqJ,CAAkBrJ,GAClB,EACA,KAAAwG,CAAMxG,GACA,EAASA,KACXA,EAAMvJ,GAAuBuJ,IAC/B5zF,EAAQqpF,OAAOxvG,KAAK+5G,GACpB,MAAMsJ,EAAa7S,GACjB,YAAYrqF,EAAQqpF,OAAOzzG,UAC3B,EACAg+G,EAAInK,IACJ,GAGF,OADAyT,EAAWvC,QAAU/G,EACdsJ,CACT,EACA,KAAAhvE,CAAM0lE,EAAK3rC,GAAU,GACnB,OAAOijC,GAAsBlrF,EAAQ+kD,SAAU6uC,EAAK3rC,EACtD,GAKF,OAFEjoD,EAAQmgE,QAA0B,IAAIplF,IAEjCilB,CACT,CACA,SAASyB,GAAUxQ,EAAMjZ,GACvB,MAAMgoB,EAAUs7F,GAAuBrqG,EAAMjZ,GAC7CmlH,GAAalsG,EAAM+O,GACfhoB,EAAQ4hH,aACVA,GAAY3oG,EAAM+O,GAEfhoB,EAAQozG,KACXgS,GAAkBnsG,EAAM+O,GAE1B/O,EAAK+3F,QAA0B,IAAIjuG,IAAI,IAAIilB,EAAQgpF,QAAQlzG,SAC3Dmb,EAAKivE,WAAa,IAAIlgE,EAAQkgE,YAC9BjvE,EAAKkgE,WAAa,IAAInxD,EAAQmxD,YAC9BlgE,EAAKq4F,QAAUtpF,EAAQspF,QACvBr4F,EAAKo4F,OAASrpF,EAAQqpF,OACtBp4F,EAAKs4F,MAAQvpF,EAAQupF,MACrBt4F,EAAK8zD,OAAS/kD,EAAQ+kD,OACtB9zD,EAAKosG,aAAc,EAEjBpsG,EAAKkvE,QAAU,IAAIngE,EAAQmgE,QAE/B,CACA,SAASi9B,GAAkBnsG,EAAM+O,GAC/B,MAAM,OAAE6pF,GAAW7pF,GACb,SAAEtZ,GAAauK,EACrB,GAAwB,IAApBvK,EAAS9Q,OAAc,CACzB,MAAM+Q,EAAQD,EAAS,GACvB,GAAIozG,GAAoB7oG,EAAMtK,IAAUA,EAAM6iG,YAAa,CACzD,MAAMA,EAAc7iG,EAAM6iG,YACD,KAArBA,EAAY7oG,MACd0qG,GAAe7B,EAAaxpF,GAE9B/O,EAAKu4F,YAAcA,CACrB,MACEv4F,EAAKu4F,YAAc7iG,CAEvB,MAAO,GAAID,EAAS9Q,OAAS,EAAG,CAC9B,IAAI8yE,EAAY,GACIhX,EAAe,IAC/B,EAIJzgD,EAAKu4F,YAAcE,GACjB1pF,EACA6pF,EAAOtD,SACP,EACAt1F,EAAKvK,SACLgiE,EAAqF,QACrF,OACA,GACA,OACA,GACA,EAEJ,CACF,CACA,SAAS40C,GAAiB72F,EAAQzG,GAChC,IAAInqB,EAAI,EACR,MAAM0nH,EAAc,KAClB1nH,GAAG,EAEL,KAAOA,EAAI4wB,EAAO/f,SAAS9Q,OAAQC,IAAK,CACtC,MAAM8Q,EAAQ8f,EAAO/f,SAAS7Q,GAC1B,EAAS8Q,KAEbqZ,EAAQyG,OAASA,EACjBzG,EAAQw8F,WAAa3mH,EACrBmqB,EAAQ+8F,cAAgBQ,EACxBJ,GAAax2G,EAAOqZ,GACtB,CACF,CACA,SAASm9F,GAAat1F,EAAM7H,GAC1BA,EAAQu8F,YAAc10F,EACtB,MAAM,eAAE6zF,GAAmB17F,EACrBw9F,EAAU,GAChB,IAAK,IAAIx/B,EAAK,EAAGA,EAAK09B,EAAe9lH,OAAQooF,IAAM,CACjD,MAAMy/B,EAAS/B,EAAe19B,GAAIn2D,EAAM7H,GAQxC,GAPIy9F,IACE,EAAQA,GACVD,EAAQ3jH,QAAQ4jH,GAEhBD,EAAQ3jH,KAAK4jH,KAGZz9F,EAAQu8F,YACX,OAEA10F,EAAO7H,EAAQu8F,WAEnB,CACA,OAAQ10F,EAAKlnB,MACX,KAAK,EACEqf,EAAQorF,KACXprF,EAAQ6pF,OAAO5C,IAEjB,MACF,KAAK,EACEjnF,EAAQorF,KACXprF,EAAQ6pF,OAAOjC,IAEjB,MACF,KAAK,EACH,IAAK,IAAI5pB,EAAK,EAAGA,EAAKn2D,EAAK4yF,SAAS7kH,OAAQooF,IAC1Cm/B,GAAat1F,EAAK4yF,SAASz8B,GAAKh+D,GAElC,MACF,KAAK,GACL,KAAK,GACL,KAAK,EACL,KAAK,EACHs9F,GAAiBz1F,EAAM7H,GACvB,MAEJA,EAAQu8F,YAAc10F,EACtB,IAAIhyB,EAAI2nH,EAAQ5nH,OAChB,MAAOC,IACL2nH,EAAQ3nH,IAEZ,CACA,SAAS6nH,GAAmCjkH,EAAMG,GAChD,MAAMgN,EAAU,EAASnN,GAAS0B,GAAMA,IAAM1B,EAAQ0B,GAAM1B,EAAKwU,KAAK9S,GACtE,MAAO,CAAC0sB,EAAM7H,KACZ,GAAkB,IAAd6H,EAAKlnB,KAAY,CACnB,MAAM,MAAE8jB,GAAUoD,EAClB,GAAqB,IAAjBA,EAAKssF,SAAiB1vF,EAAMkjD,KAAKusC,IACnC,OAEF,MAAMsJ,EAAU,GAChB,IAAK,IAAI3nH,EAAI,EAAGA,EAAI4uB,EAAM7uB,OAAQC,IAAK,CACrC,MAAMovF,EAAOxgE,EAAM5uB,GACnB,GAAkB,IAAdovF,EAAKtkF,MAAciG,EAAQq+E,EAAKxrF,MAAO,CACzCgrB,EAAMxB,OAAOptB,EAAG,GAChBA,IACA,MAAM4nH,EAAS7jH,EAAGiuB,EAAMo9D,EAAMjlE,GAC1By9F,GACFD,EAAQ3jH,KAAK4jH,EACjB,CACF,CACA,OAAOD,CACT,EAEJ,CAEA,MAAMG,GAAkB,gBAClBC,GAAe3vD,GAAM,GAAG66C,GAAc76C,QAAQ66C,GAAc76C,KAClE,SAAS4vD,GAAqBC,GAAK,KACjC9wC,EAAO,WAAU,kBACjB0oC,EAA6B,WAAT1oC,EAAiB,UACrC+wC,GAAY,EAAK,SACjBxC,EAAW,oBAAmB,QAC9BzgC,EAAU,KAAI,gBACdkjC,GAAkB,EAAK,kBACvBC,EAAoB,MAAK,kBACzBC,EAAoB,MAAK,qBACzBC,EAAuB,sBAAqB,IAC5C/S,GAAM,EAAK,KACX6Q,GAAO,EAAK,MACZlS,GAAQ,IAER,MAAM/pF,EAAU,CACdgtD,OACA0oC,oBACAqI,YACAxC,WACAzgC,UACAkjC,kBACAC,oBACAC,oBACAC,uBACA/S,MACA6Q,OACAlS,QACA7zG,OAAQ4nH,EAAI5nH,OACZs8G,KAAM,GACNrgF,OAAQ,EACRg3E,KAAM,EACNrlF,OAAQ,EACRs6F,YAAa,EACbC,MAAM,EACNniH,SAAK,EACL,MAAA2tG,CAAOnzG,GACL,MAAO,IAAIoyG,GAAcpyG,IAC3B,EACA,IAAAmD,CAAK24G,EAAMlF,GAAe,EAAezlF,GACvC7H,EAAQwyF,MAAQA,CAClB,EACA,MAAA8L,GACEzT,IAAU7qF,EAAQo+F,YACpB,EACA,QAAAG,CAASC,GAAiB,GACpBA,IACAx+F,EAAQo+F,YAEVvT,IAAU7qF,EAAQo+F,YAEtB,EACA,OAAAvT,GACEA,EAAQ7qF,EAAQo+F,YAClB,GAEF,SAASvT,EAAQ1vG,GACf6kB,EAAQnmB,KAAK,KAAO,KAAK6nD,OAAOvmD,GAAI,EACtC,CACA,OAAO6kB,CACT,CACA,SAASy+F,GAASX,EAAK9lH,EAAU,CAAC,GAChC,MAAMgoB,EAAU69F,GAAqBC,EAAK9lH,GACtCA,EAAQ0mH,kBACV1mH,EAAQ0mH,iBAAiB1+F,GAC3B,MAAM,KACJgtD,EAAI,KACJnzE,EAAI,kBACJ67G,EAAiB,OACjB4I,EAAM,SACNC,EAAQ,QACR1T,EAAO,QACP/vB,EAAO,IACPswB,GACEprF,EACEgpF,EAAUjzG,MAAMyJ,KAAKs+G,EAAI9U,SACzB2V,EAAa3V,EAAQpzG,OAAS,EAC9BgpH,GAAgBlJ,GAA8B,WAAT1oC,EACrC6xC,GAAiB,EACjBC,EAAkBD,EAAiBhB,GAAqBC,EAAK9lH,GAAWgoB,EAE5E++F,GAAoBjB,EAAKgB,GAE3B,MAAME,EAAe5T,EAAM,YAAc,SACnC5nG,EAAO4nG,EAAM,CAAC,OAAQ,QAAS,UAAW,UAAY,CAAC,OAAQ,UAC/D6T,EAAYz7G,EAAK7K,KAAK,MAkC5B,GAhCEkB,EAAK,YAAYmlH,KAAgBC,QAEnCX,IACIM,IACF/kH,EAAK,iBACLykH,IACIK,IACF9kH,EACE,WAAWmvG,EAAQ9sG,IAAI0hH,IAAajlH,KAAK,oBAExC,GAEHkyG,MAGAiT,EAAI59B,WAAWtqF,SACjBspH,GAAUpB,EAAI59B,WAAY,YAAalgE,IACnC89F,EAAI3sC,WAAWv7E,QAAUkoH,EAAIvU,MAAQ,IACvCsB,KAGAiT,EAAI3sC,WAAWv7E,SACjBspH,GAAUpB,EAAI3sC,WAAY,YAAanxD,GACnC89F,EAAIvU,MAAQ,GACdsB,KAGAiT,EAAI39B,SAAW29B,EAAI39B,QAAQvqF,SAC7Bi1G,IACAqU,GAAUpB,EAAI39B,QAAS,SAAUngE,GACjC6qF,KAEEiT,EAAIvU,MAAQ,EAAG,CACjB1vG,EAAK,QACL,IAAK,IAAIhE,EAAI,EAAGA,EAAIioH,EAAIvU,MAAO1zG,IAC7BgE,EAAK,GAAGhE,EAAI,EAAI,KAAO,UAAUA,IAErC,CAoBA,OAnBIioH,EAAI59B,WAAWtqF,QAAUkoH,EAAI3sC,WAAWv7E,QAAUkoH,EAAIvU,SACxD1vG,EAAK,KACN,GACCgxG,KAEGO,GACHvxG,EAAK,WAEHikH,EAAItU,YACN2V,GAAQrB,EAAItU,YAAaxpF,GAEzBnmB,EAAK,QAEH+kH,IACFL,IACA1kH,EAAK,MAEP0kH,IACA1kH,EAAK,KACE,CACLikH,MACAtL,KAAMxyF,EAAQwyF,KACd4M,SAAUP,EAAiBC,EAAgBtM,KAAO,GAClDt2G,IAAK8jB,EAAQ9jB,IAAM8jB,EAAQ9jB,IAAImjH,cAAW,EAE9C,CACA,SAASN,GAAoBjB,EAAK99F,GAChC,MAAM,IACJorF,EAAG,kBACHsK,EAAiB,KACjB77G,EAAI,QACJgxG,EAAO,kBACPqT,EAAiB,kBACjBD,EAAiB,qBACjBE,GACEn+F,EACEs/F,EAAarB,EACbjV,EAAUjzG,MAAMyJ,KAAKs+G,EAAI9U,SAC/B,GAAIA,EAAQpzG,OAAS,IAEjBiE,EAAK,gBAAgBylH,OACvB,GACMxB,EAAIzU,OAAOzzG,QAAQ,CACrB,MAAM2pH,EAAgB,CACpBxY,GACAC,GACAC,GACAC,GACAC,IACAxhG,QAAQkkG,GAAWb,EAAQlmG,SAAS+mG,KAAS3tG,IAAI0hH,IAAajlH,KAAK,MACrEkB,EAAK,WAAW0lH,gBACpB,EACE,CAGJC,GAAU1B,EAAIzU,OAAQrpF,GACtB6qF,IACAhxG,EAAK,UACP,CACA,SAASqlH,GAAUO,EAAQ9+G,GAAM,OAAEkpG,EAAM,KAAEhwG,EAAI,QAAEgxG,EAAO,KAAEoR,IACxD,MAAMyD,EAAW7V,EACN,WAATlpG,EAAoB4mG,GAA0B,cAAT5mG,EAAuBymG,GAAoBE,IAElF,IAAK,IAAIzxG,EAAI,EAAGA,EAAI4pH,EAAO7pH,OAAQC,IAAK,CACtC,IAAIqB,EAAKuoH,EAAO5pH,GAChB,MAAM0zE,EAAqBryE,EAAGsyF,SAAS,UACnCjgB,IACFryE,EAAKA,EAAGmM,MAAM,GAAI,IAEpBxJ,EACE,SAASi7G,GAAe59G,EAAIyJ,QAAW++G,KAAYxnH,KAAKC,UAAUjB,KAAMqyE,EAAqB,SAAW,MAAM0yC,EAAO,IAAM,MAEzHpmH,EAAI4pH,EAAO7pH,OAAS,GACtBi1G,GAEJ,CACF,CACA,SAAS2U,GAAUnW,EAAQrpF,GACzB,IAAKqpF,EAAOzzG,OACV,OAEFoqB,EAAQq+F,MAAO,EACf,MAAM,KAAExkH,EAAI,QAAEgxG,EAAO,OAAEhB,EAAM,QAAE/uB,EAAO,KAAE9N,GAAShtD,EACjD6qF,IACA,IAAK,IAAIh1G,EAAI,EAAGA,EAAIwzG,EAAOzzG,OAAQC,IAAK,CACtC,MAAM+9G,EAAMvK,EAAOxzG,GACf+9G,IACF/5G,EACE,kBAAkBhE,EAAI,QAExBspH,GAAQvL,EAAK5zF,GACb6qF,IAEJ,CACA7qF,EAAQq+F,MAAO,CACjB,CAIA,SAASsB,GAAmBtG,EAAOr5F,GACjC,MAAM4/F,EAAavG,EAAMzjH,OAAS,IAAK,EACvCoqB,EAAQnmB,KAAK,KACb+lH,GAAc5/F,EAAQs+F,SACtBuB,GAAYxG,EAAOr5F,EAAS4/F,GAC5BA,GAAc5/F,EAAQu+F,WACtBv+F,EAAQnmB,KAAK,IACf,CACA,SAASgmH,GAAYxG,EAAOr5F,EAAS4/F,GAAa,EAAOE,GAAQ,GAC/D,MAAM,KAAEjmH,EAAI,QAAEgxG,GAAY7qF,EAC1B,IAAK,IAAInqB,EAAI,EAAGA,EAAIwjH,EAAMzjH,OAAQC,IAAK,CACrC,MAAMgyB,EAAOwxF,EAAMxjH,GACf,EAASgyB,GACXhuB,EAAKguB,GAAO,GACH,EAAQA,GACjB83F,GAAmB93F,EAAM7H,GAEzBm/F,GAAQt3F,EAAM7H,GAEZnqB,EAAIwjH,EAAMzjH,OAAS,IACjBgqH,GACFE,GAASjmH,EAAK,KACdgxG,KAEAiV,GAASjmH,EAAK,MAGpB,CACF,CACA,SAASslH,GAAQt3F,EAAM7H,GACrB,GAAI,EAAS6H,GACX7H,EAAQnmB,KAAKguB,GAAO,QAGtB,GAAIlS,EAASkS,GACX7H,EAAQnmB,KAAKmmB,EAAQ6pF,OAAOhiF,SAG9B,OAAQA,EAAKlnB,MACX,KAAK,EACL,KAAK,EACL,KAAK,GAKHw+G,GAAQt3F,EAAK2hF,YAAaxpF,GAC1B,MACF,KAAK,EACH+/F,GAAQl4F,EAAM7H,GACd,MACF,KAAK,EACHggG,GAAcn4F,EAAM7H,GACpB,MACF,KAAK,EACHigG,GAAiBp4F,EAAM7H,GACvB,MACF,KAAK,GACHm/F,GAAQt3F,EAAK2hF,YAAaxpF,GAC1B,MACF,KAAK,EACHkgG,GAAsBr4F,EAAM7H,GAC5B,MACF,KAAK,EACHmgG,GAAWt4F,EAAM7H,GACjB,MACF,KAAK,GACHogG,GAAav4F,EAAM7H,GACnB,MACF,KAAK,GACHqgG,GAAkBx4F,EAAM7H,GACxB,MACF,KAAK,GACHsgG,GAAoBz4F,EAAM7H,GAC1B,MACF,KAAK,GACHugG,GAAmB14F,EAAM7H,GACzB,MACF,KAAK,GACHwgG,GAAsB34F,EAAM7H,GAC5B,MACF,KAAK,GACHygG,GAAyB54F,EAAM7H,GAC/B,MACF,KAAK,GACH0gG,GAAmB74F,EAAM7H,GACzB,MACF,KAAK,GACH6/F,GAAYh4F,EAAKtd,KAAMyV,GAAS,GAAM,GACtC,MACF,KAAK,GACH,MACF,KAAK,GACH,MACF,KAAK,GACH,MACF,KAAK,GACH,MACF,KAAK,GACH,MACF,KAAK,GACH,MACF,QACM,EAMV,CACA,SAAS+/F,GAAQl4F,EAAM7H,GACrBA,EAAQnmB,KAAK3B,KAAKC,UAAU0vB,EAAK2gE,UAAW,EAAiB3gE,EAC/D,CACA,SAASm4F,GAAcn4F,EAAM7H,GAC3B,MAAM,QAAEwoE,EAAO,SAAE8hB,GAAaziF,EAC9B7H,EAAQnmB,KACNywG,EAAWpyG,KAAKC,UAAUqwF,GAAWA,GACpC,EACD3gE,EAEJ,CACA,SAASo4F,GAAiBp4F,EAAM7H,GAC9B,MAAM,KAAEnmB,EAAI,OAAEgwG,EAAM,KAAEwU,GAASr+F,EAC3Bq+F,GACFxkH,EAAK8jH,IACP9jH,EAAK,GAAGgwG,EAAOjC,QACfuX,GAAQt3F,EAAK2gE,QAASxoE,GACtBnmB,EAAK,IACP,CACA,SAASqmH,GAAsBr4F,EAAM7H,GACnC,IAAK,IAAInqB,EAAI,EAAGA,EAAIgyB,EAAKnhB,SAAS9Q,OAAQC,IAAK,CAC7C,MAAM8Q,EAAQkhB,EAAKnhB,SAAS7Q,GACxB,EAAS8Q,GACXqZ,EAAQnmB,KAAK8M,GAAQ,GAErBw4G,GAAQx4G,EAAOqZ,EAEnB,CACF,CACA,SAAS2gG,GAA2B94F,EAAM7H,GACxC,MAAM,KAAEnmB,GAASmmB,EACjB,GAAkB,IAAd6H,EAAKlnB,KACP9G,EAAK,KACLqmH,GAAsBr4F,EAAM7H,GAC5BnmB,EAAK,UACA,GAAIguB,EAAKyiF,SAAU,CACxB,MAAM3lF,EAAOouF,GAAmBlrF,EAAK2gE,SAAW3gE,EAAK2gE,QAAUtwF,KAAKC,UAAU0vB,EAAK2gE,SACnF3uF,EAAK8qB,GAAO,EAAckD,EAC5B,MACEhuB,EAAK,IAAIguB,EAAK2gE,YAAa,EAAiB3gE,EAEhD,CACA,SAASs4F,GAAWt4F,EAAM7H,GACxB,MAAM,KAAEnmB,EAAI,OAAEgwG,EAAM,KAAEwU,GAASr+F,EAC3Bq+F,GACFxkH,EAAK8jH,IAEP9jH,EACE,GAAGgwG,EAAO5C,OAAmB/uG,KAAKC,UAAU0vB,EAAK2gE,aAChD,EACD3gE,EAEJ,CACA,SAASu4F,GAAav4F,EAAM7H,GAC1B,MAAM,KAAEnmB,EAAI,OAAEgwG,EAAM,KAAEwU,GAASr+F,GACzB,IACJ9I,EAAG,MACHuN,EAAK,SACL/d,EAAQ,UACRgiE,EAAS,aACTI,EAAY,WACZqI,EAAU,QACVw4B,EAAO,gBACP5W,EAAe,YACf6W,GACE/hF,EACAspD,GACFt3E,EAAKgwG,EAAOrC,IAAmB,KAE7BmC,GACF9vG,EAAK,IAAIgwG,EAAOjD,OAAe7T,EAAkB,OAAS,SAExDsrB,GACFxkH,EAAK8jH,IAEP,MAAMiD,EAAajX,EAAUG,GAAoB9pF,EAAQ+pF,MAAOH,GAAeI,GAAehqF,EAAQ+pF,MAAOH,GAC7G/vG,EAAKgwG,EAAO+W,GAAc,KAAM,EAAc/4F,GAC9Cg4F,GACEgB,GAAgB,CAAC3pG,EAAKuN,EAAO/d,EAAUgiE,EAAWI,IAClD9oD,GAEFnmB,EAAK,KACD8vG,GACF9vG,EAAK,KAEHs3E,IACFt3E,EAAK,MACLslH,GAAQhuC,EAAYnxD,GACpBnmB,EAAK,KAET,CACA,SAASgnH,GAAgBr9G,GACvB,IAAI3N,EAAI2N,EAAK5N,OACb,MAAOC,IACL,GAAe,MAAX2N,EAAK3N,GACP,MAEJ,OAAO2N,EAAKH,MAAM,EAAGxN,EAAI,GAAGqG,KAAKg1D,GAAQA,GAAO,QAClD,CACA,SAASmvD,GAAkBx4F,EAAM7H,GAC/B,MAAM,KAAEnmB,EAAI,OAAEgwG,EAAM,KAAEwU,GAASr+F,EACzB0qF,EAAS,EAAS7iF,EAAK6iF,QAAU7iF,EAAK6iF,OAASb,EAAOhiF,EAAK6iF,QAC7D2T,GACFxkH,EAAK8jH,IAEP9jH,EAAK6wG,EAAS,KAAM,EAAc7iF,GAClCg4F,GAAYh4F,EAAKnJ,UAAWsB,GAC5BnmB,EAAK,IACP,CACA,SAASymH,GAAoBz4F,EAAM7H,GACjC,MAAM,KAAEnmB,EAAI,OAAEykH,EAAM,SAAEC,EAAQ,QAAE1T,GAAY7qF,GACtC,WAAEmqF,GAAetiF,EACvB,IAAKsiF,EAAWv0G,OAEd,YADAiE,EAAK,MAAO,EAAcguB,GAG5B,MAAM+3F,EAAazV,EAAWv0G,OAAS,IAAK,EAC5CiE,EAAK+lH,EAAa,IAAM,MACxBA,GAActB,IACd,IAAK,IAAIzoH,EAAI,EAAGA,EAAIs0G,EAAWv0G,OAAQC,IAAK,CAC1C,MAAM,IAAEa,EAAG,MAAEhC,GAAUy1G,EAAWt0G,GAClC8qH,GAA2BjqH,EAAKspB,GAChCnmB,EAAK,MACLslH,GAAQzqH,EAAOsrB,GACXnqB,EAAIs0G,EAAWv0G,OAAS,IAC1BiE,EAAK,KACLgxG,IAEJ,CACA+U,GAAcrB,IACd1kH,EAAK+lH,EAAa,IAAM,KAC1B,CACA,SAASW,GAAmB14F,EAAM7H,GAChC2/F,GAAmB93F,EAAKhZ,SAAUmR,EACpC,CACA,SAASwgG,GAAsB34F,EAAM7H,GACnC,MAAM,KAAEnmB,EAAI,OAAEykH,EAAM,SAAEC,GAAav+F,GAC7B,OAAE9lB,EAAM,QAAE0wG,EAAO,KAAErgG,EAAI,QAAEsgG,EAAO,OAAEC,GAAWjjF,EAC/CijF,GACFjxG,EAAK,IAAIivG,GAAcL,QAEzB5uG,EAAK,KAAM,EAAcguB,GACrB,EAAQ3tB,GACV2lH,GAAY3lH,EAAQ8lB,GACX9lB,GACTilH,GAAQjlH,EAAQ8lB,GAElBnmB,EAAK,UACDgxG,GAAWtgG,KACb1Q,EAAK,KACLykH,KAEE1T,GACEC,GACFhxG,EAAK,WAEH,EAAQ+wG,GACV+U,GAAmB/U,EAAS5qF,GAE5Bm/F,GAAQvU,EAAS5qF,IAEVzV,GACT40G,GAAQ50G,EAAMyV,IAEZ6qF,GAAWtgG,KACbg0G,IACA1kH,EAAK,MAEHixG,IACEjjF,EAAKq+C,iBACPrsE,EAAK,qBAEPA,EAAK,KAET,CACA,SAAS4mH,GAAyB54F,EAAM7H,GACtC,MAAM,KAAE/R,EAAI,WAAE+8F,EAAU,UAAEC,EAAWJ,QAASiW,GAAgBj5F,GACxD,KAAEhuB,EAAI,OAAEykH,EAAM,SAAEC,EAAQ,QAAE1T,GAAY7qF,EAC5C,GAAkB,IAAd/R,EAAKtN,KAAY,CACnB,MAAMogH,GAAehO,GAAmB9kG,EAAKu6E,SAC7Cu4B,GAAelnH,EAAK,KACpBmmH,GAAc/xG,EAAM+R,GACpB+gG,GAAelnH,EAAK,IACtB,MACEA,EAAK,KACLslH,GAAQlxG,EAAM+R,GACdnmB,EAAK,KAEPinH,GAAexC,IACft+F,EAAQo+F,cACR0C,GAAejnH,EAAK,KACpBA,EAAK,MACLslH,GAAQnU,EAAYhrF,GACpBA,EAAQo+F,cACR0C,GAAejW,IACfiW,GAAejnH,EAAK,KACpBA,EAAK,MACL,MAAMmnH,EAA8B,KAAnB/V,EAAUtqG,KACtBqgH,GACHhhG,EAAQo+F,cAEVe,GAAQlU,EAAWjrF,GACdghG,GACHhhG,EAAQo+F,cAEV0C,GAAevC,GACb,EAGJ,CACA,SAASmC,GAAmB74F,EAAM7H,GAChC,MAAM,KAAEnmB,EAAI,OAAEgwG,EAAM,OAAEyU,EAAM,SAAEC,EAAQ,QAAE1T,GAAY7qF,EACpDnmB,EAAK,UAAUguB,EAAKlV,eAChBkV,EAAKogD,UACPq2C,IACAzkH,EAAK,GAAGgwG,EAAOvB,YACfuC,KAEFhxG,EAAK,UAAUguB,EAAKlV,aACpBwsG,GAAQt3F,EAAKnzB,MAAOsrB,GAChB6H,EAAKogD,UACPpuE,EAAK,KACLgxG,IACAhxG,EAAK,GAAGgwG,EAAOvB,WACfuC,IACAhxG,EAAK,UAAUguB,EAAKlV,UACpB4rG,KAEF1kH,EAAK,IACP,CAE4B,IAAI5D,OAC9B,MAAQ,sMAAsMiQ,MAAM,KAAKvN,KAAK,WAAa,OA0E7O,MAAMsoH,GAAcvD,GAClB,uBACA,CAAC71F,EAAMpW,EAAKuO,IACHkhG,GAAUr5F,EAAMpW,EAAKuO,GAAS,CAACmhG,EAAQpyC,EAAQzN,KACpD,MAAM8/C,EAAWphG,EAAQyG,OAAO/f,SAChC,IAAI7Q,EAAIurH,EAASxuG,QAAQuuG,GACrBzqH,EAAM,EACV,MAAOb,MAAO,EAAG,CACf,MAAMwrH,EAAUD,EAASvrH,GACrBwrH,GAA4B,IAAjBA,EAAQ1gH,OACrBjK,GAAO2qH,EAAQ5G,SAAS7kH,OAE5B,CACA,MAAO,KACL,GAAI0rE,EACF6/C,EAAO3X,YAAc8X,GACnBvyC,EACAr4E,EACAspB,OAEG,CACL,MAAMuhG,EAAkBC,GAAmBL,EAAO3X,aAClD+X,EAAgBtW,UAAYqW,GAC1BvyC,EACAr4E,EAAMyqH,EAAO1G,SAAS7kH,OAAS,EAC/BoqB,EAEJ,EACD,MAIP,SAASkhG,GAAUr5F,EAAMpW,EAAKuO,EAASyhG,GACrC,GAAiB,SAAbhwG,EAAIhY,QAAqBgY,EAAImiG,MAAQniG,EAAImiG,IAAIprB,QAAQpiF,QAAS,CAChE,MAAMqjG,EAAMh4F,EAAImiG,IAAMniG,EAAImiG,IAAInK,IAAM5hF,EAAK4hF,IACzCzpF,EAAQw2D,QACN+7B,GAAoB,GAAI9gG,EAAIg4F,MAE9Bh4F,EAAImiG,IAAMvJ,GAAuB,QAAQ,EAAOZ,EAClD,CAIA,GAAiB,OAAbh4F,EAAIhY,KAAe,CACrB,MAAMs1E,EAAS2yC,GAAe75F,EAAMpW,GAC9B0vG,EAAS,CACbxgH,KAAM,EACN8oG,IAAK5hF,EAAK4hF,IACVgR,SAAU,CAAC1rC,IAGb,GADA/uD,EAAQuoE,YAAY44B,GAChBM,EACF,OAAOA,EAAeN,EAAQpyC,GAAQ,EAE1C,KAAO,CACL,MAAMqyC,EAAWphG,EAAQyG,OAAO/f,SAEhC,IAAI7Q,EAAIurH,EAASxuG,QAAQiV,GACzB,MAAOhyB,OAAQ,EAAG,CAChB,MAAMwrH,EAAUD,EAASvrH,GACzB,GAAIwrH,GAA4B,IAAjBA,EAAQ1gH,KACrBqf,EAAQ68F,WAAWwE,OADrB,CAKA,IAAIA,GAA4B,IAAjBA,EAAQ1gH,MAAe0gH,EAAQ74B,QAAQpiF,OAAOxQ,OAA7D,CAIA,GAAIyrH,GAA4B,IAAjBA,EAAQ1gH,KAAY,CAChB,YAAb8Q,EAAIhY,WAAkF,IAA5D4nH,EAAQ5G,SAAS4G,EAAQ5G,SAAS7kH,OAAS,GAAG+rH,WAC1E3hG,EAAQw2D,QACN+7B,GAAoB,GAAI1qF,EAAK4hF,MAGjCzpF,EAAQ68F,aACR,MAAM9tC,EAAS2yC,GAAe75F,EAAMpW,GAChC,EAmBJ4vG,EAAQ5G,SAAS5gH,KAAKk1E,GACtB,MAAM0uC,EAASgE,GAAkBA,EAAeJ,EAAStyC,GAAQ,GACjEouC,GAAapuC,EAAQ/uD,GACjBy9F,GACFA,IACFz9F,EAAQu8F,YAAc,IACxB,MACEv8F,EAAQw2D,QACN+7B,GAAoB,GAAI1qF,EAAK4hF,MAGjC,KAvCA,CAFEzpF,EAAQ68F,WAAWwE,EAFrB,CA4CF,CACF,CACF,CACA,SAASK,GAAe75F,EAAMpW,GAC5B,MAAMmwG,EAAgC,IAAjB/5F,EAAKssF,QAC1B,MAAO,CACLxzG,KAAM,GACN8oG,IAAK5hF,EAAK4hF,IACVkY,UAAwB,SAAblwG,EAAIhY,UAAkB,EAASgY,EAAImiG,IAC9CltG,SAAUk7G,IAAiBlO,GAAQ7rF,EAAM,OAASA,EAAKnhB,SAAW,CAACmhB,GACnEg6F,QAAShO,GAAShsF,EAAM,OACxB+5F,eAEJ,CACA,SAASN,GAA2BvyC,EAAQ+yC,EAAU9hG,GACpD,OAAI+uD,EAAO4yC,UACF5W,GACLh8B,EAAO4yC,UACPI,GAA0BhzC,EAAQ+yC,EAAU9hG,GAG5CyqF,GAAqBzqF,EAAQ6pF,OAAO5C,IAAiB,CACI,KACvD,UAIG8a,GAA0BhzC,EAAQ+yC,EAAU9hG,EAEvD,CACA,SAAS+hG,GAA0BhzC,EAAQ+yC,EAAU9hG,GACnD,MAAM,OAAE6pF,GAAW7pF,EACbgiG,EAAc5X,GAClB,MACAC,GACE,GAAGyX,KACH,EACA5Y,GACA,KAGE,SAAExiG,GAAaqoE,EACf1pD,EAAa3e,EAAS,GACtBu7G,EAA0C,IAApBv7G,EAAS9Q,QAAoC,IAApByvB,EAAW1kB,KAChE,GAAIshH,EAAqB,CACvB,GAAwB,IAApBv7G,EAAS9Q,QAAoC,KAApByvB,EAAW1kB,KAAa,CACnD,MAAMuhH,EAAY78F,EAAWmkF,YAE7B,OADAgL,GAAW0N,EAAWF,EAAahiG,GAC5BkiG,CACT,CAAO,CACL,IAAIx5C,EAAY,GACIhX,EAAe,IAKnC,OAAOg4C,GACL1pF,EACA6pF,EAAOtD,IACP2D,GAAuB,CAAC8X,IACxBt7G,EACAgiE,EAAqF,QACrF,OACA,GACA,GACA,GACA,EACAqG,EAAO06B,IAEX,CACF,CAAO,CACL,MAAMt3C,EAAM9sC,EAAWmkF,YACjB0Y,EAAYjN,GAAmB9iD,GAKrC,OAJuB,KAAnB+vD,EAAUvhH,MACZ0qG,GAAe6W,EAAWliG,GAE5Bw0F,GAAW0N,EAAWF,EAAahiG,GAC5BmyC,CACT,CACF,CAqBA,SAASqvD,GAAmB35F,GAC1B,MAAO,EACL,GAAkB,KAAdA,EAAKlnB,KAAa,CACpB,GAA4B,KAAxBknB,EAAKojF,UAAUtqG,KAGjB,OAAOknB,EAFPA,EAAOA,EAAKojF,SAIhB,MAAyB,KAAdpjF,EAAKlnB,OACdknB,EAAOA,EAAKnzB,MAGlB,CAEA,MAAMytH,GAAezE,GACnB,OACA,CAAC71F,EAAMpW,EAAKuO,KACV,MAAM,OAAE6pF,EAAM,aAAEyB,GAAiBtrF,EACjC,OAAOoiG,GAAWv6F,EAAMpW,EAAKuO,GAAUqiG,IACrC,MAAMC,EAAY7X,GAAqBZ,EAAOpC,IAAc,CAC1D4a,EAAQnsH,SAEJqsH,EAAaj6B,GAAezgE,GAC5B+sE,EAAO8e,GAAQ7rF,EAAM,QACrB26F,EAAU3O,GAAShsF,EAAM,OACzB46F,EAASD,IAA6B,IAAjBA,EAAQ7hH,KAAa0pG,GAAuBmY,EAAQ9tH,MAAM8zF,SAAS,GAAQg6B,EAAQ5O,KACxGoO,EAAcQ,EAAUpY,GAAqB,MAAOqY,GAAU,KAC9DC,EAA2C,IAAxBL,EAAQnsH,OAAOyK,MAAc0hH,EAAQnsH,OAAOq0G,UAAY,EAC3EoY,EAAeD,EAAmB,GAAKF,EAAU,IAAM,IAc7D,OAbAH,EAAQ7Y,YAAcE,GACpB1pF,EACA6pF,EAAOtD,SACP,EACA+b,EACAK,EAAuG,QACvG,OACA,GACA,GACCD,GACD,EACA76F,EAAK4hF,KAEA,KACL,IAAImZ,EACJ,MAAM,SAAEl8G,GAAa27G,EAiBrB,MAAMJ,EAA0C,IAApBv7G,EAAS9Q,QAAqC,IAArB8Q,EAAS,GAAG/F,KAC3DkiH,EAAazO,GAAavsF,GAAQA,EAAO06F,GAAuC,IAAzB16F,EAAKnhB,SAAS9Q,QAAgBw+G,GAAavsF,EAAKnhB,SAAS,IAAMmhB,EAAKnhB,SAAS,GAAK,KA4C/I,GA3CIm8G,GACFD,EAAaC,EAAWrZ,YACpB+Y,GAAcP,GAChBxN,GAAWoO,EAAYZ,EAAahiG,IAE7BiiG,EACTW,EAAalZ,GACX1pF,EACA6pF,EAAOtD,IACPyb,EAAc9X,GAAuB,CAAC8X,SAAgB,EACtDn6F,EAAKnhB,SACL,UACA,OACA,GACA,OACA,GACA,IAGFk8G,EAAal8G,EAAS,GAAG8iG,YACrB+Y,GAAcP,GAChBxN,GAAWoO,EAAYZ,EAAahiG,GAElC4iG,EAAWjZ,WAAa+Y,IACtBE,EAAWjZ,SACb2B,EAAa1E,IACb0E,EACExB,GAAoB9pF,EAAQ+pF,MAAO6Y,EAAWhZ,eAGhD0B,EACEtB,GAAehqF,EAAQ+pF,MAAO6Y,EAAWhZ,eAI/CgZ,EAAWjZ,SAAW+Y,EAClBE,EAAWjZ,SACbE,EAAOjD,IACPiD,EAAOC,GAAoB9pF,EAAQ+pF,MAAO6Y,EAAWhZ,eAErDC,EAAOG,GAAehqF,EAAQ+pF,MAAO6Y,EAAWhZ,eAGhDhV,EAAM,CACR,MAAM39D,EAAO0zE,GACXmY,GAAoBT,EAAQU,YAAa,CACvC1Y,GAAuB,cAG3BpzE,EAAK1sB,KAAO4gG,GAAqB,CAC/BX,GAAyB,CAAC,kBAAmB5V,EAAKgf,IAAK,MACvDpJ,GAAyB,CACvB,iBACGiY,EAAS,CAAC,uBAAwBA,GAAU,GAC/C,OAAOziG,EAAQ48F,aACb/T,wCAGJ2B,GAAyB,CAAC,iBAAkBoY,IAC5CvY,GAAuB,sBACvBA,GAAuB,kBAEzBiY,EAAU5jG,UAAU7kB,KAClBo9B,EACAozE,GAAuB,UACvBA,GAAuB92C,OAAOvzC,EAAQ+kD,WAE1C,MACEu9C,EAAU5jG,UAAU7kB,KAClB8wG,GACEmY,GAAoBT,EAAQU,aAC5BH,GACA,GAGN,CACD,GACD,IAGN,SAASR,GAAWv6F,EAAMpW,EAAKuO,EAASyhG,GACtC,IAAKhwG,EAAImiG,IAIP,YAHA5zF,EAAQw2D,QACN+7B,GAAoB,GAAI9gG,EAAIg4F,MAIhC,MAAMsZ,EAActxG,EAAIimG,eACxB,IAAKqL,EAIH,YAHA/iG,EAAQw2D,QACN+7B,GAAoB,GAAI9gG,EAAIg4F,MAIhCuZ,GAAuBD,EAAa/iG,GACpC,MAAM,eAAEg9F,EAAc,kBAAEC,EAAiB,OAAE1oD,GAAWv0C,GAChD,OAAE9pB,EAAM,MAAExB,EAAK,IAAEgC,EAAG,MAAEic,GAAUowG,EAChCV,EAAU,CACd1hH,KAAM,GACN8oG,IAAKh4F,EAAIg4F,IACTvzG,SACA+sH,WAAYvuH,EACZwuH,SAAUxsH,EACVysH,iBAAkBxwG,EAClBowG,cACAr8G,SAAU4hF,GAAezgE,GAAQA,EAAKnhB,SAAW,CAACmhB,IAEpD7H,EAAQuoE,YAAY85B,GACpB9tD,EAAO6nD,OACP,MAAMqB,EAASgE,GAAkBA,EAAeY,GAChD,MAAO,KACL9tD,EAAO6nD,OACHqB,GACFA,GAAQ,CAEd,CACA,SAASuF,GAAuB7tH,EAAQ6qB,GAClC7qB,EAAOijH,YA0BXjjH,EAAOijH,WAAY,EACrB,CACA,SAAS0K,IAAoB,MAAEpuH,EAAK,IAAEgC,EAAG,MAAEic,GAASywG,EAAW,IAC7D,OAAOC,GAAiB,CAAC3uH,EAAOgC,EAAKic,KAAUywG,GACjD,CACA,SAASC,GAAiB7/G,GACxB,IAAI3N,EAAI2N,EAAK5N,OACb,MAAOC,IACL,GAAI2N,EAAK3N,GACP,MAEJ,OAAO2N,EAAKH,MAAM,EAAGxN,EAAI,GAAGqG,KAAI,CAACg1D,EAAK8sB,IAAO9sB,GAAOm5C,GAAuB,IAAI3oD,OAAOs8B,EAAK,IAAI,IACjG,CAEA,MAAMslC,GAAkBjZ,GAAuB,aAAa,GACtDkZ,GAAkB,CAAC17F,EAAM7H,KAC7B,GAAkB,IAAd6H,EAAKlnB,OAAgC,IAAjBknB,EAAKssF,SAAkC,IAAjBtsF,EAAKssF,SAAgB,CACjE,MAAMqG,EAAQ9G,GAAQ7rF,EAAM,QAC5B,GAAI2yF,EAGF,OAFAA,EAAM5G,IACN5zF,EAAQu0C,OAAOimD,QACR,KACLx6F,EAAQu0C,OAAOimD,OAAO,CAG5B,GAqBIgJ,GAAoB,CAAC/+F,EAAOg/F,EAAU/8G,EAAU+iG,IAAQkB,GAC5DlmF,EACA/d,GACA,GACA,EACAA,EAAS9Q,OAAS8Q,EAAS,GAAG+iG,IAAMA,GAEtC,SAASia,GAAW77F,EAAM7H,EAAS2jG,EAAcH,IAC/CxjG,EAAQ6pF,OAAOpB,IACf,MAAM,SAAE/hG,EAAQ,IAAE+iG,GAAQ5hF,EACpB+7F,EAAkB,GAClBvpC,EAAe,GACrB,IAAIwpC,EAAkB7jG,EAAQu0C,OAAOimD,MAAQ,GAAKx6F,EAAQu0C,OAAO6nD,KAAO,EACxE,MAAM0H,EAAkBpQ,GAAQ7rF,EAAM,QAAQ,GAC9C,GAAIi8F,EAAiB,CACnB,MAAM,IAAE5yD,EAAG,IAAE0iD,GAAQkQ,EACjB5yD,IAAQ0hD,GAAY1hD,KACtB2yD,GAAkB,GAEpBD,EAAgB/pH,KACduwG,GACEl5C,GAAOm5C,GAAuB,WAAW,GACzCsZ,EAAY/P,OAAK,EAAQltG,EAAU+iG,IAGzC,CACA,IAAIsa,GAAmB,EACnBC,GAAsB,EAC1B,MAAMC,EAA0B,GAC1BC,EAAgC,IAAInpH,IAC1C,IAAIopH,EAAyB,EAC7B,IAAK,IAAItuH,EAAI,EAAGA,EAAI6Q,EAAS9Q,OAAQC,IAAK,CACxC,MAAMuuH,EAAc19G,EAAS7Q,GAC7B,IAAIwuH,EACJ,IAAK/7B,GAAe87B,MAAkBC,EAAU3Q,GAAQ0Q,EAAa,QAAQ,IAAQ,CAC1D,IAArBA,EAAYzjH,MACdsjH,EAAwBpqH,KAAKuqH,GAE/B,QACF,CACA,GAAIN,EAAiB,CACnB9jG,EAAQw2D,QACN+7B,GAAoB,GAAI8R,EAAQ5a,MAElC,KACF,CACAsa,GAAmB,EACnB,MAAQr9G,SAAU49G,EAAc7a,IAAK8a,GAAYH,GAE/ClzD,IAAKszD,EAAWna,GAAuB,WAAW,GAClDuJ,IAAK6Q,EACLhb,IAAKib,GACHL,EACJ,IAAIM,EACA/R,GAAY4R,GACdG,EAAiBH,EAAWA,EAASh8B,QAAU,UAE/Cq7B,GAAkB,EAEpB,MAAMzH,EAAO1I,GAAQ0Q,EAAa,OAC5BQ,EAAejB,EAAYc,EAAWrI,EAAMkI,EAAcC,GAChE,IAAIM,EACAC,EACJ,GAAID,EAAMnR,GAAQ0Q,EAAa,MAC7BP,GAAkB,EAClBxpC,EAAaxgF,KACXkxG,GACE8Z,EAAIjR,IACJmR,GAAiBP,EAAUI,EAAcT,KACzCb,UAGC,GAAIwB,EAAQpR,GACjB0Q,EACA,gBACA,GAEC,CACD,IACIp9G,EADAyb,EAAI5sB,EAER,MAAO4sB,IAEL,GADAzb,EAAON,EAAS+b,GACE,IAAdzb,EAAKrG,KACP,MAGJ,GAAIqG,GAAQshF,GAAethF,IAAS0sG,GAAQ1sG,EAAM,MAAO,CACvDN,EAASuc,OAAOptB,EAAG,GACnBA,IACA,IAAImvH,EAAc3qC,EAAaA,EAAazkF,OAAS,GACrD,MAAsC,KAA/BovH,EAAY/Z,UAAUtqG,KAC3BqkH,EAAcA,EAAY/Z,UAE5B+Z,EAAY/Z,UAAY6Z,EAAMlR,IAAM7I,GAClC+Z,EAAMlR,IACNmR,GACEP,EACAI,EACAT,KAEFb,IACEyB,GAAiBP,EAAUI,EAAcT,IAC/C,MACEnkG,EAAQw2D,QACN+7B,GAAoB,GAAIuS,EAAMrb,KAGpC,MAAO,GAAI2S,EAAM,CACfyH,GAAkB,EAClB,MAAMd,EAAc3G,EAAK1E,eACrBqL,GACFC,GAAuBD,EAAa/iG,GACpCq6D,EAAaxgF,KACX4wG,GAAqBzqF,EAAQ6pF,OAAOpC,IAAc,CAChDsb,EAAY7sH,OACZy0G,GACEmY,GAAoBC,GACpBgC,GAAiBP,EAAUI,IAC3B,OAKN5kG,EAAQw2D,QACN+7B,GACE,GACA6J,EAAK3S,KAIb,KAAO,CACL,GAAIkb,EAAgB,CAClB,GAAIT,EAAc7kH,IAAIslH,GAAiB,CACrC3kG,EAAQw2D,QACN+7B,GACE,GACAmS,IAGJ,QACF,CACAR,EAAcloH,IAAI2oH,GACK,YAAnBA,IACFX,GAAsB,EAE1B,CACAJ,EAAgB/pH,KAAKuwG,GAAqBoa,EAAUI,GACtD,CACF,CACA,IAAKd,EAAiB,CACpB,MAAMmB,EAA2B,CAACxgG,EAAOygG,KACvC,MAAMtrH,EAAK+pH,EAAYl/F,OAAO,EAAQygG,EAAWzb,GAIjD,OAHIzpF,EAAQkyF,eACVt4G,EAAGssE,iBAAkB,GAEhBkkC,GAAqB,UAAWxwG,EAAG,EAEvCmqH,EAEME,EAAwBruH,QAGnCquH,EAAwBt8C,MAAMw9C,GAAUC,GAAuBD,OACzDnB,EACFhkG,EAAQw2D,QACN+7B,GACE,GACA0R,EAAwB,GAAGxa,MAI/Bma,EAAgB/pH,KACdorH,OAAyB,EAAQhB,KAdrCL,EAAgB/pH,KAAKorH,OAAyB,EAAQv+G,GAkB1D,CACA,MAAMmuF,EAAWgvB,EAAkB,EAAIwB,GAAkBx9F,EAAKnhB,UAAY,EAAI,EAC9E,IAAImgE,EAAQqjC,GACV0Z,EAAgBr9G,OACd6jG,GACE,IAGAC,GACExV,EAA8F,IAC9F,KAIN4U,GAQF,OANIpvB,EAAazkF,SACfixE,EAAQ4jC,GAAqBzqF,EAAQ6pF,OAAOlC,IAAe,CACzD9gC,EACAojC,GAAsB5vB,MAGnB,CACLxT,QACAg9C,kBAEJ,CACA,SAASkB,GAAiBtrH,EAAMG,EAAI+Y,GAClC,MAAM8R,EAAQ,CACZ2lF,GAAqB,OAAQ3wG,GAC7B2wG,GAAqB,KAAMxwG,IAO7B,OALa,MAAT+Y,GACF8R,EAAM5qB,KACJuwG,GAAqB,MAAOC,GAAuB92C,OAAO5gD,IAAQ,KAG/Du3F,GAAuBzlF,EAChC,CACA,SAAS4gG,GAAkB3+G,GACzB,IAAK,IAAI7Q,EAAI,EAAGA,EAAI6Q,EAAS9Q,OAAQC,IAAK,CACxC,MAAM8Q,EAAQD,EAAS7Q,GACvB,OAAQ8Q,EAAMhG,MACZ,KAAK,EACH,GAAsB,IAAlBgG,EAAMwtG,SAAiBkR,GAAkB1+G,EAAMD,UACjD,OAAO,EAET,MACF,KAAK,EACH,GAAI2+G,GAAkB1+G,EAAM8zG,UAC1B,OAAO,EACT,MACF,KAAK,GACL,KAAK,GACH,GAAI4K,GAAkB1+G,EAAMD,UAC1B,OAAO,EACT,MAEN,CACA,OAAO,CACT,CACA,SAAS0+G,GAAuBv9F,GAC9B,OAAkB,IAAdA,EAAKlnB,MAA4B,KAAdknB,EAAKlnB,OAEP,IAAdknB,EAAKlnB,OAAeknB,EAAK2gE,QAAQpiF,OAASg/G,GAAuBv9F,EAAK2gE,SAC/E,CAEA,MAAM88B,GAAqC,IAAI7tD,QACzC8tD,GAAmB,CAAC19F,EAAM7H,IACvB,WAEL,GADA6H,EAAO7H,EAAQu8F,YACK,IAAd10F,EAAKlnB,MAAgC,IAAjBknB,EAAKssF,SAAkC,IAAjBtsF,EAAKssF,QACnD,OAEF,MAAM,IAAEj9F,EAAG,MAAEuN,GAAUoD,EACjB+hF,EAA+B,IAAjB/hF,EAAKssF,QACzB,IAAIqR,EAAW5b,EAAc6b,GAAqB59F,EAAM7H,GAAW,IAAI9I,KACvE,MAAMwuG,EAAqB,EAASF,IAAaA,EAAS9a,SAAWrD,GACrE,IAAIse,EACAC,EACAC,EAEAC,EACAC,EACAC,EAHAt9C,EAAY,EAIZu9C,EAEFP,GAAsBF,IAAahf,IAAYgf,IAAa/e,KAAamD,IAIhE,QAAR1yF,GAAyB,kBAARA,GAEpB,GAAIuN,EAAM7uB,OAAS,EAAG,CACpB,MAAMswH,EAAmBC,GACvBt+F,EACA7H,OACA,EACA4pF,EACA8b,GAEFC,EAAaO,EAAiBzhG,MAC9BikD,EAAYw9C,EAAiBx9C,UAC7Bq9C,EAAmBG,EAAiBH,iBACpC,MAAM50C,EAAa+0C,EAAiB/0C,WACpC60C,EAAkB70C,GAAcA,EAAWv7E,OAASq0G,GAClD94B,EAAWj1E,KAAKuV,GAAQ20G,GAAmB30G,EAAKuO,WAC9C,EACAkmG,EAAiBD,iBACnBA,GAAiB,EAErB,CACA,GAAIp+F,EAAKnhB,SAAS9Q,OAAS,EAAG,CACxB4vH,IAAa9e,KACfuf,GAAiB,EACjBv9C,GAAa,MAWf,MAAM29C,EAAqBzc,GAC3B4b,IAAahf,IACbgf,IAAa9e,GACb,GAAI2f,EAAoB,CACtB,MAAM,MAAEx/C,EAAK,gBAAEg9C,GAAoBH,GAAW77F,EAAM7H,GACpD4lG,EAAgB/+C,EACZg9C,IACFn7C,GAAa,KAEjB,MAAO,GAA6B,IAAzB7gD,EAAKnhB,SAAS9Q,QAAgB4vH,IAAahf,GAAU,CAC9D,MAAM7/F,EAAQkhB,EAAKnhB,SAAS,GACtB/F,EAAOgG,EAAMhG,KACb2lH,EAA+B,IAAT3lH,GAAuB,IAATA,EACtC2lH,GAA2D,IAApCnM,GAAgBxzG,EAAOqZ,KAChD0oD,GAAa,GAGbk9C,EADEU,GAAgC,IAAT3lH,EACTgG,EAEAkhB,EAAKnhB,QAEzB,MACEk/G,EAAgB/9F,EAAKnhB,QAEzB,CACkB,IAAdgiE,IASAm9C,EAAiBtyD,OAAOmV,GAEtBq9C,GAAoBA,EAAiBnwH,SACvCkwH,EAAoBS,GAA0BR,KAGlDl+F,EAAK2hF,YAAcE,GACjB1pF,EACAwlG,EACAG,EACAC,EACAC,EACAC,EACAE,IACEC,GACF,EACArc,EACA/hF,EAAK4hF,IAET,EAEF,SAASgc,GAAqB59F,EAAM7H,EAASorF,GAAM,GACjD,IAAI,IAAEl0F,GAAQ2Q,EACd,MAAM2+F,EAAoBC,GAAevvG,GACnCwvG,EAAS7S,GAAShsF,EAAM,MAC9B,GAAI6+F,EACF,GAAIF,GAAqBrU,GACvB,yBACAnyF,GACC,CACD,MAAM4zF,EAAsB,IAAhB8S,EAAO/lH,KAAa+lH,EAAOhyH,OAAS21G,GAAuBqc,EAAOhyH,MAAM8zF,SAAS,GAAQk+B,EAAO9S,IAC5G,GAAIA,EACF,OAAOnJ,GAAqBzqF,EAAQ6pF,OAAOxC,IAA4B,CACrEuM,GAGN,MAA2B,IAAhB8S,EAAO/lH,MAAc+lH,EAAOhyH,MAAM8zF,QAAQrlF,WAAW,UAC9D+T,EAAMwvG,EAAOhyH,MAAM8zF,QAAQnlF,MAAM,IAGrC,MAAMsjH,EAAU9T,GAAgB37F,IAAQ8I,EAAQm5F,mBAAmBjiG,GACnE,OAAIyvG,GACGvb,GACHprF,EAAQ6pF,OAAO8c,GACVA,IAET3mG,EAAQ6pF,OAAOzC,IACfpnF,EAAQkgE,WAAWlkF,IAAIkb,GAChB49F,GAAe59F,EAAK,aAC7B,CACA,SAASivG,GAAWt+F,EAAM7H,EAASyE,EAAQoD,EAAKpD,MAAOmlF,EAAa8b,EAAoBta,GAAM,GAC5F,MAAM,IAAEl0F,EAAKuyF,IAAKmd,EAAU,SAAElgH,GAAamhB,EAC3C,IAAIsiF,EAAa,GACjB,MAAM0c,EAAY,GACZC,EAAoB,GACpBC,EAAcrgH,EAAS9Q,OAAS,EACtC,IAAIqwH,GAAiB,EACjBv9C,EAAY,EACZs+C,GAAS,EACTC,GAAkB,EAClBC,GAAkB,EAClBC,GAA2B,EAC3BC,GAAiB,EACjBC,GAAe,EACnB,MAAMtB,EAAmB,GACnBuB,EAAgBp2D,IAChBi5C,EAAWv0G,SACbixH,EAAUhtH,KACRqwG,GAAuBqd,GAAiBpd,GAAayc,IAEvDzc,EAAa,IAEXj5C,GACF21D,EAAUhtH,KAAKq3D,EAAI,EAEjBs2D,EAAmB,EAAG9wH,MAAKhC,YAC/B,GAAIk+G,GAAYl8G,GAAM,CACpB,MAAM+C,EAAO/C,EAAI8xF,QACXi/B,EAAiB93D,EAAKl2D,GAc5B,IAbIguH,GAAoB7d,IAAe8b,GAEhB,YAAvBjsH,EAAK+B,eACI,wBAAT/B,GACC82D,EAAe92D,KACd0tH,GAA2B,GAEzBM,GAAkBl3D,EAAe92D,KACnC4tH,GAAe,GAEbI,GAAiC,KAAf/yH,EAAMiM,OAC1BjM,EAAQA,EAAMgqB,UAAU,IAEP,KAAfhqB,EAAMiM,OAA+B,IAAfjM,EAAMiM,MAA6B,IAAfjM,EAAMiM,OAAew5G,GAAgBzlH,EAAOsrB,GAAW,EACnG,OAEW,QAATvmB,EACFutH,GAAS,EACS,UAATvtH,EACTwtH,GAAkB,EACA,UAATxtH,EACTytH,GAAkB,EACA,QAATztH,GAAmBssH,EAAiBjjH,SAASrJ,IACtDssH,EAAiBlsH,KAAKJ,IAEpBmwG,GAAyB,UAATnwG,GAA6B,UAATA,GAAsBssH,EAAiBjjH,SAASrJ,IACtFssH,EAAiBlsH,KAAKJ,EAE1B,MACE2tH,GAAiB,CACnB,EAEF,IAAK,IAAIvxH,EAAI,EAAGA,EAAI4uB,EAAM7uB,OAAQC,IAAK,CACrC,MAAMovF,EAAOxgE,EAAM5uB,GACnB,GAAkB,IAAdovF,EAAKtkF,KAAY,CACnB,MAAM,IAAE8oG,EAAG,KAAEhwG,EAAI,QAAE29G,EAAO,MAAE1iH,GAAUuwF,EACtC,IAAIqlB,GAAW,EAYf,GAXa,QAAT7wG,IACFutH,GAAS,EACLhnG,EAAQu0C,OAAO6nD,KAAO,GACxBjS,EAAWtwG,KACTuwG,GACEC,GAAuB,WAAW,GAClCA,GAAuB,WAKlB,OAAT5wG,IAAkBgtH,GAAevvG,IAAQxiB,GAASA,EAAM8zF,QAAQrlF,WAAW,SAAWgvG,GACxF,yBACAnyF,IAEA,SAEFmqF,EAAWtwG,KACTuwG,GACEC,GAAuB5wG,GAAM,EAAM29G,GACnC/M,GACE31G,EAAQA,EAAM8zF,QAAU,GACxB8hB,EACA51G,EAAQA,EAAM+0G,IAAMA,IAI5B,KAAO,CACL,MAAM,KAAEhwG,EAAI,IAAEy3D,EAAG,IAAE0iD,EAAG,IAAEnK,EAAG,UAAEl4B,GAAc0T,EACrCyiC,EAAmB,SAATjuH,EACVkuH,EAAiB,OAATluH,EACd,GAAa,SAATA,EAAiB,CACdmwG,GACH5pF,EAAQw2D,QACN+7B,GAAoB,GAAI9I,IAG5B,QACF,CACA,GAAa,SAAThwG,GAA4B,SAATA,EACrB,SAEF,GAAa,OAATA,GAAiBiuH,GAAW3T,GAAc7iD,EAAK,QAAUu1D,GAAevvG,IAAQi7F,GAClF,yBACAnyF,IAEA,SAEF,GAAI2nG,GAASvc,EACX,SAkBF,IAdEsc,GAAW3T,GAAc7iD,EAAK,QAE9By2D,GAASZ,GAAehT,GAAc7iD,EAAK,wBAE3C+0D,GAAiB,GAEfyB,GAAW3T,GAAc7iD,EAAK,QAAUlxC,EAAQu0C,OAAO6nD,KAAO,GAChEjS,EAAWtwG,KACTuwG,GACEC,GAAuB,WAAW,GAClCA,GAAuB,WAIxBn5C,IAAQw2D,GAAWC,GAAQ,CAE9B,GADAP,GAAiB,EACbxT,EACF,GAAI8T,EAAS,CAwBT,GAvBFJ,IAuBMnV,GACF,+BACAnyF,GACC,CACD6mG,EAAUxkG,QAAQuxF,GAClB,QACF,CAEFiT,EAAUhtH,KAAK+5G,EACjB,MACE0T,EAAa,CACX3mH,KAAM,GACN8oG,MACAiB,OAAQ1qF,EAAQ6pF,OAAO3B,IACvBxpF,UAAWkrF,EAAc,CAACgK,GAAO,CAACA,EAAK,eAI3C5zF,EAAQw2D,QACN+7B,GACEmV,EAAU,GAAK,GACfje,IAIN,QACF,CACIie,GAAWn2C,EAAUzuE,SAAS,UAChC4lE,GAAa,IAEf,MAAMk/C,EAAqB5nG,EAAQ27F,oBAAoBliH,GACvD,GAAImuH,EAAoB,CACtB,MAAQnjG,MAAOojG,EAAM,YAAEC,GAAgBF,EAAmB3iC,EAAMp9D,EAAM7H,IACrEorF,GAAOyc,EAAOztH,QAAQotH,GACnBG,GAASz2D,IAAQ0hD,GAAY1hD,GAC/Bo2D,EAAapd,GAAuB2d,EAAQjB,IAE5Czc,EAAWtwG,QAAQguH,GAEjBC,IACFhB,EAAkBjtH,KAAKorF,GACnBtvE,EAASmyG,IACXxC,GAAmBjqH,IAAI4pF,EAAM6iC,GAGnC,MAAY,EAAmBruH,KAC7BqtH,EAAkBjtH,KAAKorF,GACnB8hC,IACFd,GAAiB,GAGvB,CACF,CACA,IAAI8B,EAqCJ,GApCIlB,EAAUjxH,QACZ0xH,IAEES,EADElB,EAAUjxH,OAAS,EACH60G,GAChBzqF,EAAQ6pF,OAAOhC,IACfgf,EACAD,GAGgBC,EAAU,IAErB1c,EAAWv0G,SACpBmyH,EAAkB7d,GAChBqd,GAAiBpd,GACjByc,IAGAQ,EACF1+C,GAAa,IAETu+C,IAAoBrd,IACtBlhC,GAAa,GAEXw+C,IAAoBtd,IACtBlhC,GAAa,GAEXq9C,EAAiBnwH,SACnB8yE,GAAa,GAEXy+C,IACFz+C,GAAa,KAGZu9C,GAAiC,IAAdv9C,GAAiC,KAAdA,KAAsBs+C,GAAUK,GAAgBP,EAAkBlxH,OAAS,KACpH8yE,GAAa,MAEV1oD,EAAQ+pF,OAASge,EACpB,OAAQA,EAAgBpnH,MACtB,KAAK,GACH,IAAIqnH,GAAiB,EACjBC,GAAiB,EACjBC,GAAgB,EACpB,IAAK,IAAIryH,EAAI,EAAGA,EAAIkyH,EAAgB5d,WAAWv0G,OAAQC,IAAK,CAC1D,MAAMa,EAAMqxH,EAAgB5d,WAAWt0G,GAAGa,IACtCk8G,GAAYl8G,GACM,UAAhBA,EAAI8xF,QACNw/B,EAAgBnyH,EACS,UAAhBa,EAAI8xF,UACby/B,EAAgBpyH,GAERa,EAAIyxH,eACdD,GAAgB,EAEpB,CACA,MAAME,EAAYL,EAAgB5d,WAAW6d,GACvCK,EAAYN,EAAgB5d,WAAW8d,GACxCC,EAkBHH,EAAkBtd,GAChBzqF,EAAQ6pF,OAAO7B,IACf,CAAC+f,KAnBCK,IAAcxV,GAAYwV,EAAU1zH,SACtC0zH,EAAU1zH,MAAQ+1G,GAChBzqF,EAAQ6pF,OAAO/B,IACf,CAACsgB,EAAU1zH,SAGX2zH,IAEHnB,GAA4C,IAAzBmB,EAAU3zH,MAAMiM,MAAoD,MAAtC0nH,EAAU3zH,MAAM8zF,QAAQpiF,OAAO,IAExD,KAAzBiiH,EAAU3zH,MAAMiM,QACd0nH,EAAU3zH,MAAQ+1G,GAChBzqF,EAAQ6pF,OAAO9B,IACf,CAACsgB,EAAU3zH,UASjB,MACF,KAAK,GACH,MACF,QACEqzH,EAAkBtd,GAChBzqF,EAAQ6pF,OAAO7B,IACf,CACEyC,GAAqBzqF,EAAQ6pF,OAAO5B,IAAuB,CACzD8f,MAIN,MAGN,MAAO,CACLtjG,MAAOsjG,EACP52C,WAAY21C,EACZp+C,YACAq9C,mBACAE,iBAEJ,CACA,SAASsB,GAAiBpd,GACxB,MAAMme,EAA6B,IAAInpH,IACjC+kE,EAAU,GAChB,IAAK,IAAIruE,EAAI,EAAGA,EAAIs0G,EAAWv0G,OAAQC,IAAK,CAC1C,MAAMovF,EAAOklB,EAAWt0G,GACxB,GAAsB,IAAlBovF,EAAKvuF,IAAIiK,OAAeskF,EAAKvuF,IAAI4zG,SAAU,CAC7CpmC,EAAQrqE,KAAKorF,GACb,QACF,CACA,MAAMxrF,EAAOwrF,EAAKvuF,IAAI8xF,QAChB1B,EAAWwhC,EAAWxpH,IAAIrF,GAC5BqtF,GACW,UAATrtF,GAA6B,UAATA,GAAoBk2D,EAAKl2D,KAC/C,GAAaqtF,EAAU7B,IAGzBqjC,EAAWjtH,IAAI5B,EAAMwrF,GACrB/gB,EAAQrqE,KAAKorF,GAEjB,CACA,OAAO/gB,CACT,CACA,SAAS,GAAa4iB,EAAUiO,GACF,KAAxBjO,EAASpyF,MAAMiM,KACjBmmF,EAASpyF,MAAMma,SAAShV,KAAKk7F,EAASrgG,OAEtCoyF,EAASpyF,MAAQu1G,GACf,CAACnjB,EAASpyF,MAAOqgG,EAASrgG,OAC1BoyF,EAAS2iB,IAGf,CACA,SAAS2c,GAAmB30G,EAAKuO,GAC/B,MAAMuoG,EAAU,GACVC,EAAUlD,GAAmBxmH,IAAI2S,GACnC+2G,EACFD,EAAQ1uH,KAAKmmB,EAAQ48F,aAAa4L,KAGhCxoG,EAAQ6pF,OAAOvC,IACftnF,EAAQmxD,WAAWn1E,IAAIyV,EAAIhY,MAC3B8uH,EAAQ1uH,KAAKi7G,GAAerjG,EAAIhY,KAAM,eAG1C,MAAM,IAAEgwG,GAAQh4F,EAShB,GARIA,EAAImiG,KACN2U,EAAQ1uH,KAAK4X,EAAImiG,KACfniG,EAAIy/C,MACDz/C,EAAImiG,KACP2U,EAAQ1uH,KAAK,UAEf0uH,EAAQ1uH,KAAK4X,EAAIy/C,MAEf76D,OAAOP,KAAK2b,EAAI8/D,WAAW37E,OAAQ,CAChC6b,EAAIy/C,MACFz/C,EAAImiG,KACP2U,EAAQ1uH,KAAK,UAEf0uH,EAAQ1uH,KAAK,WAEf,MAAM4uH,EAAiBpe,GAAuB,QAAQ,EAAOZ,GAC7D8e,EAAQ1uH,KACNqwG,GACEz4F,EAAI8/D,UAAUr1E,KACX8sD,GAAaohD,GAAqBphD,EAAUy/D,KAE/Chf,GAGN,CACA,OAAOQ,GAAsBse,EAAS92G,EAAIg4F,IAC5C,CACA,SAAS8c,GAA0B9hG,GACjC,IAAIikG,EAAmB,IACvB,IAAK,IAAI7yH,EAAI,EAAG6E,EAAI+pB,EAAM7uB,OAAQC,EAAI6E,EAAG7E,IACvC6yH,GAAoBxwH,KAAKC,UAAUssB,EAAM5uB,IACrCA,EAAI6E,EAAI,IACVguH,GAAoB,MAExB,OAAOA,EAAmB,GAC5B,CACA,SAASjC,GAAevvG,GACtB,MAAe,cAARA,GAA+B,cAARA,CAChC,CAEA,MAAMyxG,GAAsB,CAAC9gG,EAAM7H,KACjC,GAAIo0F,GAAavsF,GAAO,CACtB,MAAM,SAAEnhB,EAAQ,IAAE+iG,GAAQ5hF,GACpB,SAAE28F,EAAQ,UAAEC,GAAcmE,GAAkB/gG,EAAM7H,GAClD6oG,EAAW,CACf7oG,EAAQ01F,kBAAoB,cAAgB,SAC5C8O,EACA,KACA,YACA,QAEF,IAAIsE,EAAc,EACdrE,IACFoE,EAAS,GAAKpE,EACdqE,EAAc,GAEZpiH,EAAS9Q,SACXizH,EAAS,GAAKle,GAAyB,GAAIjkG,GAAU,GAAO,EAAO+iG,GACnEqf,EAAc,GAEZ9oG,EAAQ86D,UAAY96D,EAAQ67F,UAC9BiN,EAAc,GAEhBD,EAAS5lG,OAAO6lG,GAChBjhG,EAAK2hF,YAAciB,GACjBzqF,EAAQ6pF,OAAOnC,IACfmhB,EACApf,EAEJ,GAEF,SAASmf,GAAkB/gG,EAAM7H,GAC/B,IACIykG,EADAD,EAAW,YAEf,MAAMuE,EAAe,GACrB,IAAK,IAAIlzH,EAAI,EAAGA,EAAIgyB,EAAKpD,MAAM7uB,OAAQC,IAAK,CAC1C,MAAM2E,EAAIqtB,EAAKpD,MAAM5uB,GACN,IAAX2E,EAAEmG,KACAnG,EAAE9F,QACW,SAAX8F,EAAEf,KACJ+qH,EAAWtsH,KAAKC,UAAUqC,EAAE9F,MAAM8zF,UAElChuF,EAAEf,KAAOk3D,EAASn2D,EAAEf,MACpBsvH,EAAalvH,KAAKW,KAIP,SAAXA,EAAEf,MAAmBs6G,GAAcv5G,EAAE02D,IAAK,QACxC12D,EAAEo5G,MACJ4Q,EAAWhqH,EAAEo5G,MAEA,SAAXp5G,EAAEf,MAAmBe,EAAE02D,KAAO0hD,GAAYp4G,EAAE02D,OAC9C12D,EAAE02D,IAAIs3B,QAAU73B,EAASn2D,EAAE02D,IAAIs3B,UAEjCugC,EAAalvH,KAAKW,GAGxB,CACA,GAAIuuH,EAAanzH,OAAS,EAAG,CAC3B,MAAM,MAAE6uB,EAAK,WAAE0sD,GAAeg1C,GAC5Bt+F,EACA7H,EACA+oG,GACA,GACA,GAEFtE,EAAYhgG,EACR0sD,EAAWv7E,QACboqB,EAAQw2D,QACN+7B,GACE,GACAphC,EAAW,GAAGs4B,KAItB,CACA,MAAO,CACL+a,WACAC,YAEJ,CAEA,MAAMuE,GAAU,+FACVC,GAAc,CAACx3G,EAAKoW,EAAM7H,EAASkpG,KACvC,MAAM,IAAEzf,EAAG,UAAEl4B,EAAS,IAAErgB,GAAQz/C,EAIhC,IAAIxS,EACJ,GAJKwS,EAAImiG,KAAQriC,EAAU37E,QACzBoqB,EAAQw2D,QAAQ+7B,GAAoB,GAAI9I,IAGzB,IAAbv4C,EAAIvwD,KACN,GAAIuwD,EAAIo5C,SAAU,CAChB,IAAI3M,EAAUzsC,EAAIs3B,QACd,EAGAmV,EAAQx6F,WAAW,UACrBw6F,EAAU,SAASA,EAAQt6F,MAAM,MAEnC,MAAM8lH,EAA+B,IAAjBthG,EAAKssF,SAAiBxW,EAAQx6F,WAAW,WAAa,QAAQ8K,KAAK0vF,GAGrF9sC,EAAaF,EAASgtC,IACpB,MAGIA,IAER1+F,EAAYorG,GAAuB8e,GAAa,EAAMj4D,EAAIu4C,IAC5D,MACExqG,EAAYurG,GAAyB,CACnC,GAAGxqF,EAAQ48F,aAAavU,OACxBn3C,EACA,WAIJjyD,EAAYiyD,EACZjyD,EAAUyH,SAAS2b,QAAQ,GAAGrC,EAAQ48F,aAAavU,QACnDppG,EAAUyH,SAAS7M,KAAK,KAE1B,IAAI+5G,EAAMniG,EAAImiG,IACVA,IAAQA,EAAIprB,QAAQpiF,SACtBwtG,OAAM,GAER,IAAIwV,EAAcppG,EAAQy7F,gBAAkB7H,IAAQ5zF,EAAQy8F,QAC5D,GAAI7I,EAAK,CACP,MAAMyV,EAAc5V,GAAmBG,EAAIprB,SACrC8gC,IAAsBD,GAAeL,GAAQ/6G,KAAK2lG,EAAIprB,UACtD+gC,EAAwB3V,EAAIprB,QAAQ1lF,SAAS,KAC/C,GAQAwmH,GAAqBF,GAAeC,KACtCzV,EAAMpJ,GAAyB,CAC7B,GAAG8e,EAAoB,SAAW,kBAAuBC,EAAwB,IAAM,MACvF3V,EACA2V,EAAwB,IAAM,MAGpC,CACA,IAAIp3D,EAAM,CACR1tC,MAAO,CACL2lF,GACEnrG,EACA20G,GAAOvJ,GAAuB,YAAY,EAAOZ,MAWvD,OAPIyf,IACF/2D,EAAM+2D,EAAU/2D,IAEdi3D,IACFj3D,EAAI1tC,MAAM,GAAG/vB,MAAQsrB,EAAQkuB,MAAMikB,EAAI1tC,MAAM,GAAG/vB,QAElDy9D,EAAI1tC,MAAMrqB,SAASI,GAAMA,EAAE9D,IAAIyxH,cAAe,IACvCh2D,CAAG,EAGNq3D,GAAgB,CAAC/3G,EAAKg4G,EAAOzpG,KACjC,MAAM,UAAEuxD,EAAS,IAAEk4B,GAAQh4F,EACrBy/C,EAAMz/C,EAAIy/C,IAChB,IAAI,IAAE0iD,GAAQniG,EACd,IAAKmiG,GAAoB,IAAb1iD,EAAIvwD,KAAY,CAC1B,MAAM+oH,EAAW/4D,EAASO,EAAIs3B,SAC9BorB,EAAMniG,EAAImiG,IAAMvJ,GAAuBqf,GAAU,EAAOx4D,EAAIu4C,IAC9D,CA2BA,OA1BiB,IAAbv4C,EAAIvwD,MACNuwD,EAAIxqD,SAAS2b,QAAQ,KACrB6uC,EAAIxqD,SAAS7M,KAAK,YACRq3D,EAAIo5C,WACdp5C,EAAIs3B,QAAU,GAAGt3B,EAAIs3B,iBAEnBjX,EAAUzuE,SAAS,WACJ,IAAbouD,EAAIvwD,KACFuwD,EAAIo5C,SACNp5C,EAAIs3B,QAAU73B,EAASO,EAAIs3B,SAE3Bt3B,EAAIs3B,QAAU,GAAGxoE,EAAQ48F,aAAazU,OAAaj3C,EAAIs3B,YAGzDt3B,EAAIxqD,SAAS2b,QAAQ,GAAGrC,EAAQ48F,aAAazU,QAC7Cj3C,EAAIxqD,SAAS7M,KAAK,OAGjBmmB,EAAQ+pF,QACPx4B,EAAUzuE,SAAS,SACrB6mH,GAAaz4D,EAAK,KAEhBqgB,EAAUzuE,SAAS,SACrB6mH,GAAaz4D,EAAK,OAGjB0iD,GAAoB,IAAbA,EAAIjzG,OAAeizG,EAAIprB,QAAQpiF,QACzC4Z,EAAQw2D,QAAQ+7B,GAAoB,GAAI9I,IACjC,CACLhlF,MAAO,CAAC2lF,GAAqBl5C,EAAKm5C,GAAuB,IAAI,EAAMZ,OAGhE,CACLhlF,MAAO,CAAC2lF,GAAqBl5C,EAAK0iD,IACnC,EAEG+V,GAAe,CAACz4D,EAAK1hD,KACR,IAAb0hD,EAAIvwD,KACFuwD,EAAIo5C,SACNp5C,EAAIs3B,QAAUh5E,EAAS0hD,EAAIs3B,QAE3Bt3B,EAAIs3B,QAAU,KAAKh5E,OAAY0hD,EAAIs3B,cAGrCt3B,EAAIxqD,SAAS2b,QAAQ,IAAI7S,UACzB0hD,EAAIxqD,SAAS7M,KAAK,KACpB,EAGI+vH,GAAgB,CAAC/hG,EAAM7H,KAC3B,GAAkB,IAAd6H,EAAKlnB,MAA4B,IAAdknB,EAAKlnB,MAA4B,KAAdknB,EAAKlnB,MAA6B,KAAdknB,EAAKlnB,KACjE,MAAO,KACL,MAAM+F,EAAWmhB,EAAKnhB,SACtB,IAAIyrF,EACA03B,GAAU,EACd,IAAK,IAAIh0H,EAAI,EAAGA,EAAI6Q,EAAS9Q,OAAQC,IAAK,CACxC,MAAM8Q,EAAQD,EAAS7Q,GACvB,GAAIo+G,GAASttG,GAAQ,CACnBkjH,GAAU,EACV,IAAK,IAAIpnG,EAAI5sB,EAAI,EAAG4sB,EAAI/b,EAAS9Q,OAAQ6sB,IAAK,CAC5C,MAAMztB,EAAO0R,EAAS+b,GACtB,IAAIwxF,GAASj/G,GAUN,CACLm9F,OAAmB,EACnB,KACF,CAZOA,IACHA,EAAmBzrF,EAAS7Q,GAAK20G,GAC/B,CAAC7jG,GACDA,EAAM8iG,MAGVtX,EAAiBzrF,SAAS7M,KAAK,MAAO7E,GACtC0R,EAASuc,OAAOR,EAAG,GACnBA,GAKJ,CACF,CACF,CACA,GAAKonG,IAIe,IAApBnjH,EAAS9Q,QAA+B,IAAdiyB,EAAKlnB,OAA4B,IAAdknB,EAAKlnB,MAA+B,IAAjBknB,EAAKssF,SAKpEtsF,EAAKpD,MAAMjjB,MACThH,GAAiB,IAAXA,EAAEmG,OAAeqf,EAAQ27F,oBAAoBnhH,EAAEf,SAIzC,aAAbouB,EAAK3Q,MAGP,IAAK,IAAIrhB,EAAI,EAAGA,EAAI6Q,EAAS9Q,OAAQC,IAAK,CACxC,MAAM8Q,EAAQD,EAAS7Q,GACvB,GAAIo+G,GAASttG,IAAyB,IAAfA,EAAMhG,KAAY,CACvC,MAAMmpH,EAAW,GACE,IAAfnjH,EAAMhG,MAAgC,MAAlBgG,EAAM6hF,SAC5BshC,EAASjwH,KAAK8M,GAEXqZ,EAAQorF,KAA2C,IAApC+O,GAAgBxzG,EAAOqZ,IACzC8pG,EAASjwH,KACP,KAGJ6M,EAAS7Q,GAAK,CACZ8K,KAAM,GACN6nF,QAAS7hF,EACT8iG,IAAK9iG,EAAM8iG,IACXD,YAAaiB,GACXzqF,EAAQ6pF,OAAO3C,IACf4iB,GAGN,CACF,EAEJ,EAGIC,GAAyB,IAAIvnC,QAC7BwnC,GAAgB,CAACniG,EAAM7H,KAC3B,GAAkB,IAAd6H,EAAKlnB,MAAc+yG,GAAQ7rF,EAAM,QAAQ,GAAO,CAClD,GAAIkiG,GAAO1qH,IAAIwoB,IAAS7H,EAAQy8F,SAAWz8F,EAAQ+pF,MACjD,OAKF,OAHAggB,GAAO/tH,IAAI6rB,GACX7H,EAAQy8F,SAAU,EAClBz8F,EAAQ6pF,OAAOvB,IACR,KACLtoF,EAAQy8F,SAAU,EAClB,MAAMv6C,EAAMliD,EAAQu8F,YAChBr6C,EAAIsnC,cACNtnC,EAAIsnC,YAAcxpF,EAAQkuB,MACxBg0B,EAAIsnC,aACJ,GAGJ,CAEJ,GAGIygB,GAAiB,CAACx4G,EAAKoW,EAAM7H,KACjC,MAAM,IAAE4zF,EAAG,IAAE1iD,GAAQz/C,EACrB,IAAKmiG,EAIH,OAHA5zF,EAAQw2D,QACN+7B,GAAoB,GAAI9gG,EAAIg4F,MAEvBygB,KAET,MAAMC,EAASvW,EAAInK,IAAIvzG,OACjBk0H,EAAyB,IAAbxW,EAAIjzG,KAAaizG,EAAIprB,QAAU2hC,EAC3CE,EAAcrqG,EAAQ+7F,gBAAgBoO,GAC5C,GAAoB,UAAhBE,GAA2C,kBAAhBA,EAE7B,OADArqG,EAAQw2D,QAAQ+7B,GAAoB,GAAIqB,EAAInK,MACrCygB,KAET,MAAMI,GAAW,EACjB,IAAKF,EAAUhkH,SAAWqtG,GAAmB2W,KAAeE,EAI1D,OAHAtqG,EAAQw2D,QACN+7B,GAAoB,GAAIqB,EAAInK,MAEvBygB,KAET,MAAMR,EAAWx4D,GAAYm5C,GAAuB,cAAc,GAC5DprG,EAAYiyD,EAAM0hD,GAAY1hD,GAAO,YAAYP,EAASO,EAAIs3B,WAAagiB,GAAyB,CAAC,iBAAkBt5C,IAAQ,sBACrI,IAAIq5D,EACJ,MAAMC,EAAWxqG,EAAQi8F,KAAO,gBAAkB,SAEhDsO,EAAgB/f,GAAyB,CACvC,GAAGggB,UACH5W,EACA,gBAGJ,MAAMnvF,EAAQ,CAEZ2lF,GAAqBsf,EAAUj4G,EAAImiG,KAEnCxJ,GAAqBnrG,EAAWsrH,IAElC,GAAI94G,EAAI8/D,UAAU37E,QAA2B,IAAjBiyB,EAAKssF,QAAe,CAC9C,MAAM5iC,EAAY9/D,EAAI8/D,UAAUr1E,KAAKtB,IAAOm4G,GAAmBn4G,GAAKA,EAAI1C,KAAKC,UAAUyC,IAAM,WAAUjC,KAAK,MACtG6rE,EAAetT,EAAM0hD,GAAY1hD,GAAO,GAAGA,EAAIs3B,mBAAqBgiB,GAAyB,CAACt5C,EAAK,mBAAqB,iBAC9HzsC,EAAM5qB,KACJuwG,GACE5lC,EACA6lC,GACE,KAAK94B,OACL,EACA9/D,EAAIg4F,IACJ,IAIR,CACA,OAAOygB,GAAqBzlG,EAAM,EAEpC,SAASylG,GAAqBzlG,EAAQ,IACpC,MAAO,CAAEA,QACX,CAEA,MAAMgmG,GAAsB,gBACtBC,GAAkB,CAAC7iG,EAAM7H,KACxBmyF,GAAgB,mBAAoBnyF,KAGvB,IAAd6H,EAAKlnB,MACPgqH,GAAc9iG,EAAK2gE,QAASxoE,GAEZ,IAAd6H,EAAKlnB,MACPknB,EAAKpD,MAAMrqB,SAAS6qF,IACA,IAAdA,EAAKtkF,MAA4B,QAAdskF,EAAKxrF,MAAkBwrF,EAAK2uB,KACjD+W,GAAc1lC,EAAK2uB,IAAK5zF,EAC1B,IAEJ,EAEF,SAAS2qG,GAAc9iG,EAAM7H,GAC3B,GAAkB,IAAd6H,EAAKlnB,KACPiqH,GAAY/iG,EAAM7H,QAElB,IAAK,IAAInqB,EAAI,EAAGA,EAAIgyB,EAAKnhB,SAAS9Q,OAAQC,IAAK,CAC7C,MAAM8Q,EAAQkhB,EAAKnhB,SAAS7Q,GACP,kBAAV8Q,IAEQ,IAAfA,EAAMhG,KACRiqH,GAAYjkH,EAAOqZ,GACK,IAAfrZ,EAAMhG,KACfgqH,GAAc9iG,EAAM7H,GACI,IAAfrZ,EAAMhG,MACfgqH,GAAchkH,EAAM6hF,QAASxoE,GAEjC,CAEJ,CACA,SAAS4qG,GAAY/iG,EAAM7H,GACzB,MAAM4zF,EAAM/rF,EAAK2gE,QACjB,IAQI/tF,EAAGuM,EAAMnR,EAAGg1H,EARZC,GAAW,EACXC,GAAW,EACXC,GAAmB,EACnBC,GAAU,EACVC,EAAQ,EACRC,EAAS,EACTC,EAAQ,EACRC,EAAkB,EACMlrC,EAAU,GACtC,IAAKtqF,EAAI,EAAGA,EAAI+9G,EAAIh+G,OAAQC,IAG1B,GAFAmR,EAAOvM,EACPA,EAAIm5G,EAAI5nD,WAAWn2D,GACfi1H,EACQ,KAANrwH,GAAqB,KAATuM,IACd8jH,GAAW,QACR,GAAIC,EACC,KAANtwH,GAAqB,KAATuM,IACd+jH,GAAW,QACR,GAAIC,EACC,KAANvwH,GAAqB,KAATuM,IACdgkH,GAAmB,QAChB,GAAIC,EACC,KAANxwH,GAAqB,KAATuM,IACdikH,GAAU,QACP,GAAU,MAANxwH,GACe,MAA1Bm5G,EAAI5nD,WAAWn2D,EAAI,IAAwC,MAA1B+9G,EAAI5nD,WAAWn2D,EAAI,IAAeq1H,GAAUC,GAAWC,EAOjF,CACL,OAAQ3wH,GACN,KAAK,GACHswH,GAAW,EACX,MACF,KAAK,GACHD,GAAW,EACX,MACF,KAAK,GACHE,GAAmB,EACnB,MACF,KAAK,GACHI,IACA,MACF,KAAK,GACHA,IACA,MACF,KAAK,GACHD,IACA,MACF,KAAK,GACHA,IACA,MACF,KAAK,IACHD,IACA,MACF,KAAK,IACHA,IACA,MAEJ,GAAU,KAANzwH,EAAU,CACZ,IACID,EADAioB,EAAI5sB,EAAI,EAEZ,KAAO4sB,GAAK,EAAGA,IAEb,GADAjoB,EAAIo5G,EAAI/tG,OAAO4c,GACL,MAANjoB,EACF,MAECA,GAAMiwH,GAAoBx8G,KAAKzT,KAClCywH,GAAU,EAEd,CACF,WAhDqB,IAAfJ,GACFQ,EAAkBx1H,EAAI,EACtBg1H,EAAajX,EAAIvwG,MAAM,EAAGxN,GAAGuQ,QAE7BklH,IAmDN,SAASA,IACPnrC,EAAQtmF,KAAK+5G,EAAIvwG,MAAMgoH,EAAiBx1H,GAAGuQ,QAC3CilH,EAAkBx1H,EAAI,CACxB,CACA,QATmB,IAAfg1H,EACFA,EAAajX,EAAIvwG,MAAM,EAAGxN,GAAGuQ,OACA,IAApBilH,GACTC,IAMEnrC,EAAQvqF,OAAQ,CAMlB,IAAKC,EAAI,EAAGA,EAAIsqF,EAAQvqF,OAAQC,IAC9Bg1H,EAAaU,GAAWV,EAAY1qC,EAAQtqF,GAAImqB,GAElD6H,EAAK2gE,QAAUqiC,CACjB,CACF,CACA,SAASU,GAAW3X,EAAKjuG,EAAQqa,GAC/BA,EAAQ6pF,OAAOtC,IACf,MAAM1xG,EAAI8P,EAAOiN,QAAQ,KACzB,GAAI/c,EAAI,EAEN,OADAmqB,EAAQmgE,QAAQnkF,IAAI2J,GACb,GAAGmvG,GAAenvG,EAAQ,aAAaiuG,KACzC,CACL,MAAMn6G,EAAOkM,EAAOtC,MAAM,EAAGxN,GACvB2N,EAAOmC,EAAOtC,MAAMxN,EAAI,GAE9B,OADAmqB,EAAQmgE,QAAQnkF,IAAIvC,GACb,GAAGq7G,GAAer7G,EAAM,aAAam6G,IAAe,MAATpwG,EAAe,IAAMA,EAAOA,GAChF,CACF,CAEA,MAAMwgE,GAAuB,IAAIwe,QAC3BgpC,GAAgB,CAAC3jG,EAAM7H,KAC3B,GAAkB,IAAd6H,EAAKlnB,KAAY,CACnB,MAAM8Q,EAAMiiG,GAAQ7rF,EAAM,QAC1B,IAAKpW,GAAOuyD,GAAK3kE,IAAIwoB,GACnB,OAGF,OADAm8C,GAAKhoE,IAAI6rB,GACF,KACL,MAAM2hF,EAAc3hF,EAAK2hF,aAAexpF,EAAQu8F,YAAY/S,YACxDA,GAAoC,KAArBA,EAAY7oG,OACR,IAAjBknB,EAAKssF,SACP9I,GAAe7B,EAAaxpF,GAE9B6H,EAAK2hF,YAAciB,GAAqBzqF,EAAQ6pF,OAAOjB,IAAY,CACjEn3F,EAAImiG,IACJjJ,QAAyB,EAAQnB,GACjC,SACAj2C,OAAOvzC,EAAQ+kD,YAEnB,CAEJ,GAGF,SAAS0mD,GAAuB/V,GAC9B,MAAO,CACL,CACEsU,GACA/I,GACAuK,GACArJ,GACIuI,GAEJ/B,GACApD,GACAhC,GACAqG,IAEF,CACE7mH,GAAIkmH,GACJxqG,KAAM+qG,GACNkC,MAAOzB,IAGb,CACA,SAAS0B,GAAYz1H,EAAQ8B,EAAU,CAAC,GACtC,MAAMw+E,EAAUx+E,EAAQw+E,SAAW67B,GAC7BuZ,EAAgC,WAAjB5zH,EAAQg1E,MAEO,IAA9Bh1E,EAAQ09G,kBACVl/B,EAAQ+7B,GAAoB,KACnBqZ,GACTp1C,EAAQ+7B,GAAoB,KAGhC,MAAMmD,GAAoB,EACtB19G,EAAQyjH,eACVjlC,EAAQ+7B,GAAoB,KAE1Bv6G,EAAQ8iF,UAAY8wC,GACtBp1C,EAAQ+7B,GAAoB,KAE9B,MAAMsZ,EAAkB,EAAO,CAAC,EAAG7zH,EAAS,CAC1C09G,sBAEIoI,EAAM,EAAS5nH,GAAU,GAAUA,EAAQ21H,GAAmB31H,GAC7DwlH,EAAgBC,GAAuB8P,KAiB9C,OAhBAhqG,GACEq8F,EACA,EAAO,CAAC,EAAG+N,EAAiB,CAC1BnQ,eAAgB,IACXA,KACA1jH,EAAQ0jH,gBAAkB,IAG/BC,oBAAqB,EACnB,CAAC,EACDA,EACA3jH,EAAQ2jH,qBAAuB,CAAC,MAK/B8C,GAASX,EAAK+N,EACvB,CAEA,MAaMC,GAAyB,KAAM,CAAGrnG,MAAO,KCtgLzCsnG,GAAgBt+G,OAAmE,IACnFu+G,GAAmBv+G,OAAsE,IACzFw+G,GAAex+G,OAAkE,IACjFy+G,GAAiBz+G,OAAoE,IACrF0+G,GAAkB1+G,OAAqE,IACvF2+G,GAAsB3+G,OAAyE,IAC/F4+G,GAAiB5+G,OAAoE,IACrF6+G,GAAS7+G,OAA6D,IACtE,GAAaA,OAAkE,IAC/E8+G,GAAmB9+G,OAAuE,IAchG,IAAI++G,GACJ,SAASC,GAAkBp5E,EAAKq5E,GAAS,GAIvC,OAHKF,KACHA,GAAU1zH,SAASsC,cAAc,QAE/BsxH,GACFF,GAAQpsG,UAAY,aAAaizB,EAAI/3C,QAAQ,KAAM,cAC5CkxH,GAAQ9lH,SAAS,GAAGX,aAAa,SAExCymH,GAAQpsG,UAAYizB,EACbm5E,GAAQ5nG,YAEnB,CAzBAmkF,GAAuB,CACrB,CAACgjB,IAAgB,cACjB,CAACC,IAAmB,iBACpB,CAACC,IAAe,aAChB,CAACC,IAAiB,eAClB,CAACC,IAAkB,gBACnB,CAACC,IAAsB,gBACvB,CAACC,IAAiB,WAClB,CAACC,IAAS,QACV,CAAC,IAAa,aACd,CAACC,IAAmB,oBAiBtB,MAAMI,GAAgB,CACpBvX,UAAW,OACXxiD,UAAS,GACTmvB,YAAc7qE,GAAQ,GAAUA,IAAQ,GAASA,IAAQ,GAAYA,GACrEq+F,SAAWr+F,GAAgB,QAARA,EACnB0/F,eAAgB6V,GAChBtT,mBAAqBjiG,GACP,eAARA,GAAgC,eAARA,EACnB,GACU,oBAARA,GAAqC,qBAARA,EAC/Bq1G,QADF,EAKT,YAAAjX,CAAap+F,EAAKuP,EAAQmmG,GACxB,IAAIvX,EAAK5uF,EAASA,EAAO4uF,GAAKuX,EAC9B,GAAInmG,GAAiB,IAAP4uF,EACZ,GAAmB,mBAAf5uF,EAAOvP,IAA0B,CACnC,GAAY,QAARA,EACF,OAAO,EAELuP,EAAOhC,MAAMkjD,MACdlyE,GAAiB,IAAXA,EAAEkL,MAAyB,aAAXlL,EAAEgE,MAAkC,MAAXhE,EAAEf,QAAsC,cAApBe,EAAEf,MAAM8zF,SAA+C,0BAApB/yF,EAAEf,MAAM8zF,aAE/G6sB,EAAK,EAET,KAAW,qBAAqBpnG,KAAKwY,EAAOvP,MAAgB,WAARA,GAA4B,eAARA,IACtEm+F,EAAK,QAEE5uF,GAAiB,IAAP4uF,IACA,kBAAf5uF,EAAOvP,KAA0C,SAAfuP,EAAOvP,KAAiC,UAAfuP,EAAOvP,MACpEm+F,EAAK,IAGT,GAAW,IAAPA,EAAU,CACZ,GAAY,QAARn+F,EACF,OAAO,EAET,GAAY,SAARA,EACF,OAAO,CAEX,CACA,OAAOm+F,CACT,GAGIwX,GAAkBhlG,IACJ,IAAdA,EAAKlnB,MACPknB,EAAKpD,MAAMrqB,SAAQ,CAACI,EAAG3E,KACN,IAAX2E,EAAEmG,MAAyB,UAAXnG,EAAEf,MAAoBe,EAAE9F,QAC1CmzB,EAAKpD,MAAM5uB,GAAK,CACd8K,KAAM,EACNlH,KAAM,OACNy3D,IAAKm5C,GAAuB,SAAS,EAAM7vG,EAAEivG,KAC7CmK,IAAKkZ,GAAetyH,EAAE9F,MAAM8zF,QAAShuF,EAAEivG,KACvCl4B,UAAW,GACXk4B,IAAKjvG,EAAEivG,KAEX,GAEJ,EAEIqjB,GAAiB,CAAC56D,EAASu3C,KAC/B,MAAM53C,EAAaC,EAAiBI,GACpC,OAAOm4C,GACLnyG,KAAKC,UAAU05D,IACf,EACA43C,EACA,EACD,EAGH,SAASsjB,GAAuBva,EAAM/I,GACpC,OAAO8I,GACLC,EACA/I,OACwE,EAE5E,CACA,MAwCMujB,GAAiB,CAACv7G,EAAKoW,EAAM7H,KACjC,MAAM,IAAE4zF,EAAG,IAAEnK,GAAQh4F,EAYrB,OAXKmiG,GACH5zF,EAAQw2D,QACNu2C,GAAuB,GAAItjB,IAG3B5hF,EAAKnhB,SAAS9Q,SAChBoqB,EAAQw2D,QACNu2C,GAAuB,GAAItjB,IAE7B5hF,EAAKnhB,SAAS9Q,OAAS,GAElB,CACL6uB,MAAO,CACL2lF,GACEC,GAAuB,aAAa,EAAMZ,GAC1CmK,GAAOvJ,GAAuB,IAAI,KAGvC,EAGG4iB,GAAiB,CAACx7G,EAAKoW,EAAM7H,KACjC,MAAM,IAAE4zF,EAAG,IAAEnK,GAAQh4F,EAYrB,OAXKmiG,GACH5zF,EAAQw2D,QACNu2C,GAAuB,GAAItjB,IAG3B5hF,EAAKnhB,SAAS9Q,SAChBoqB,EAAQw2D,QACNu2C,GAAuB,GAAItjB,IAE7B5hF,EAAKnhB,SAAS9Q,OAAS,GAElB,CACL6uB,MAAO,CACL2lF,GACEC,GAAuB,eAAe,GACtCuJ,EAAMuG,GAAgBvG,EAAK5zF,GAAW,EAAI4zF,EAAMnJ,GAC9CzqF,EAAQ48F,aAAahV,IACrB,CAACgM,GACDnK,GACEY,GAAuB,IAAI,KAGpC,EAGG,GAAiB,CAAC54F,EAAKoW,EAAM7H,KACjC,MAAMktG,EAAajD,GAAiBx4G,EAAKoW,EAAM7H,GAC/C,IAAKktG,EAAWzoG,MAAM7uB,QAA2B,IAAjBiyB,EAAKssF,QACnC,OAAO+Y,EAELz7G,EAAIy/C,KACNlxC,EAAQw2D,QACNu2C,GACE,GACAt7G,EAAIy/C,IAAIu4C,MAed,MAAM,IAAEvyF,GAAQ2Q,EACV4uE,EAAkBz2E,EAAQy2E,gBAAgBv/E,GAChD,GAAY,UAARA,GAA2B,aAARA,GAA8B,WAARA,GAAoBu/E,EAAiB,CAChF,IAAI02B,EAAiBlB,GACjBmB,GAAgB,EACpB,GAAY,UAARl2G,GAAmBu/E,EAAiB,CACtC,MAAM91F,EAAOkzG,GAAShsF,EAAM,QAC5B,GAAIlnB,GACF,GAAkB,IAAdA,EAAKA,KACPwsH,EAAiBhB,QACZ,GAAIxrH,EAAKjM,MACd,OAAQiM,EAAKjM,MAAM8zF,SACjB,IAAK,QACH2kC,EAAiBpB,GACjB,MACF,IAAK,WACHoB,EAAiBnB,GACjB,MACF,IAAK,OACHoB,GAAgB,EAChBptG,EAAQw2D,QACNu2C,GACE,GACAt7G,EAAIg4F,MAGR,MACF,QAEE,YAGGuK,GAAmBnsF,KAC5BslG,EAAiBhB,GAIrB,KAAmB,WAARj1G,IACTi2G,EAAiBjB,IAIdkB,IACHF,EAAWpF,YAAc9nG,EAAQ6pF,OAAOsjB,GAE5C,MACEntG,EAAQw2D,QACNu2C,GACE,GACAt7G,EAAIg4F,MAOV,OAHAyjB,EAAWzoG,MAAQyoG,EAAWzoG,MAAM9e,QACjCnL,KAAuB,IAAfA,EAAE9D,IAAIiK,MAAgC,eAAlBnG,EAAE9D,IAAI8xF,WAE9B0kC,CAAU,EAGbG,GAAwC,EAAQ,wBAChDC,GAAmC,EAEvC,sDAEIC,GAAmC,EAAQ,cAC3CC,GAAkC,EACtC,gCACA,GAEIC,GAAmB,CAAC/2H,EAAK66E,EAAWvxD,EAASypF,KACjD,MAAMikB,EAAe,GACfC,EAAkB,GAClBC,EAAuB,GAC7B,IAAK,IAAI/3H,EAAI,EAAGA,EAAI07E,EAAU37E,OAAQC,IAAK,CACzC,MAAMmzD,EAAWuoB,EAAU17E,GACV,WAAbmzD,GAAyBopD,GAC3B,uBACApyF,EACAypF,IAGS4jB,GAAsBrkE,GAD/B4kE,EAAqB/zH,KAAKmvD,GAItBukE,GAAiBvkE,GACf4pD,GAAYl8G,GACV82H,GAAgB92H,EAAI8xF,SACtBklC,EAAa7zH,KAAKmvD,GAElB2kE,EAAgB9zH,KAAKmvD,IAGvB0kE,EAAa7zH,KAAKmvD,GAClB2kE,EAAgB9zH,KAAKmvD,IAGnBskE,GAAiBtkE,GACnB2kE,EAAgB9zH,KAAKmvD,GAErB0kE,EAAa7zH,KAAKmvD,EAI1B,CACA,MAAO,CACL0kE,eACAC,kBACAC,uBACD,EAEGC,GAAiB,CAACn3H,EAAK2F,KAC3B,MAAMyxH,EAAgBlb,GAAYl8G,IAAsC,YAA9BA,EAAI8xF,QAAQhtF,cACtD,OAAOsyH,EAAgBzjB,GAAuBhuG,GAAO,GAAqB,IAAb3F,EAAIiK,KAAa6pG,GAAyB,CACrG,IACA9zG,EACA,sBAAsB2F,SACtB3F,EACA,MACGA,CAAG,EAEJ,GAAc,CAAC+a,EAAKoW,EAAM7H,IACvBipG,GAAcx3G,EAAKoW,EAAM7H,GAAUktG,IACxC,MAAM,UAAE37C,GAAc9/D,EACtB,IAAK8/D,EAAU37E,OACb,OAAOs3H,EACT,IAAI,IAAEx2H,EAAKhC,MAAOq5H,GAAeb,EAAWzoG,MAAM,GAClD,MAAM,aAAEipG,EAAY,gBAAEC,EAAe,qBAAEC,GAAyBH,GAAiB/2H,EAAK66E,EAAWvxD,EAASvO,EAAIg4F,KAoB9G,GAnBIkkB,EAAgB7qH,SAAS,WAC3BpM,EAAMm3H,GAAen3H,EAAK,kBAExBi3H,EAAgB7qH,SAAS,YAC3BpM,EAAMm3H,GAAen3H,EAAK,cAExBi3H,EAAgB/3H,SAClBm4H,EAAatjB,GAAqBzqF,EAAQ6pF,OAAOuiB,IAAsB,CACrE2B,EACA71H,KAAKC,UAAUw1H,OAGfD,EAAa93H,QACfg9G,GAAYl8G,KAAQ82H,GAAgB92H,EAAI8xF,WACxCulC,EAAatjB,GAAqBzqF,EAAQ6pF,OAAOwiB,IAAiB,CAChE0B,EACA71H,KAAKC,UAAUu1H,MAGfE,EAAqBh4H,OAAQ,CAC/B,MAAMo4H,EAAkBJ,EAAqB1xH,IAAI,GAAYvD,KAAK,IAClEjC,EAAMk8G,GAAYl8G,GAAO2zG,GAAuB,GAAG3zG,EAAI8xF,UAAUwlC,KAAmB,GAAQxjB,GAAyB,CAAC,IAAK9zG,EAAK,QAAQs3H,MAC1I,CACA,MAAO,CACLvpG,MAAO,CAAC2lF,GAAqB1zG,EAAKq3H,IACnC,IAICE,GAAgB,CAACx8G,EAAKoW,EAAM7H,KAChC,MAAM,IAAE4zF,EAAG,IAAEnK,GAAQh4F,EAMrB,OALKmiG,GACH5zF,EAAQw2D,QACNu2C,GAAuB,GAAItjB,IAGxB,CACLhlF,MAAO,GACPqjG,YAAa9nG,EAAQ6pF,OAAOyiB,IAC7B,EAiDH,MAAM4B,GAAuB,CAACrmG,EAAM7H,KAChB,IAAd6H,EAAKlnB,MAA+B,IAAjBknB,EAAKssF,SAA+B,WAAbtsF,EAAK3Q,KAAiC,UAAb2Q,EAAK3Q,KAO1E8I,EAAQ68F,YACV,EAGIsR,GAAoB,CACxBtB,IAGIuB,GAAyB,CAC7BC,MAAOvC,GACP7rG,KAAM+sG,GACNroG,KAAMsoG,GACNvB,MAAO,GAEP3oH,GAAI,GAEJsH,KAAM4jH,IAER,SAAS,GAAQxyH,EAAKzD,EAAU,CAAC,GAC/B,OAAO2zH,GACLlwH,EACA,EAAO,CAAC,EAAGkxH,GAAe30H,EAAS,CACjC0jH,eAAgB,CAIdwS,MACGC,MACAn2H,EAAQ0jH,gBAAkB,IAE/BC,oBAAqB,EACnB,CAAC,EACDyS,GACAp2H,EAAQ2jH,qBAAuB,CAAC,GAElCjB,eAAgB,OAGtB,CCheA,MAAM4T,GAA+B,IAAI72D,QACzC,SAAS82D,GAASv2H,GAChB,IAAIyC,EAAI6zH,GAAaxvH,IAAe,MAAX9G,EAAkBA,EAAUy3D,GAKrD,OAJKh1D,IACHA,EAAoBpE,OAAOqnB,OAAO,MAClC4wG,GAAajzH,IAAe,MAAXrD,EAAkBA,EAAUy3D,EAAWh1D,IAEnDA,CACT,CACA,SAAS+zH,GAAkBh4B,EAAUx+F,GACnC,IAAK,EAASw+F,GAAW,CACvB,IAAIA,EAASpmF,SAIX,OAAO,EAHPomF,EAAWA,EAASp2E,SAKxB,CACA,MAAM1pB,EAAM8/F,EACNtoD,EAAQqgF,GAASv2H,GACjB+sE,EAAS72B,EAAMx3C,GACrB,GAAIquE,EACF,OAAOA,EAET,GAAoB,MAAhByxB,EAAS,GAAY,CACvB,MAAMlvF,EAAKxO,SAAS6C,cAAc66F,GAC9B,EAGJA,EAAWlvF,EAAKA,EAAG8Y,UAAY,EACjC,CACA,MAAMyJ,EAAO,EACX,CACE+vF,aAAa,EACbpjC,aAA+D,EAC/Dg/B,OAA8E,GAEhFx9G,GAEG6xB,EAAK4sE,iBAA6C,qBAAnBg4B,iBAClC5kG,EAAK4sE,gBAAmBv/E,KAAUu3G,eAAe3vH,IAAIoY,IAEvD,MAAM,KAAEs7F,GAAS,GAAQhc,EAAU3sE,GAWnC,MAAMktB,EAAS,IAAI/+B,SAAS,MAAOw6F,EAApB,CAA0B,GAEzC,OADAz7D,EAAOu/C,KAAM,EACNpoD,EAAMx3C,GAAOqgD,CACtB,CACAq/C,GAAwBo4B,G;;;;;;;AClExB,SAASr9G,IAAQ,C,g3BACjB,MAAM/Q,EAAO,WACX,IAAIlJ,EAAK,EACT,OAAO,WACL,OAAOA,GACT,CACF,CALY,GAMZ,SAASw3H,EAAch6H,GACrB,OAAiB,OAAVA,GAAmC,qBAAVA,CAClC,CACA,SAASsB,EAAQtB,GACf,GAAIqB,MAAMC,SAAWD,MAAMC,QAAQtB,GACjC,OAAO,EAET,MAAMiM,EAAOtK,OAAOC,UAAUC,SAASE,KAAK/B,GAC5C,MAAyB,YAArBiM,EAAK0C,MAAM,EAAG,IAAuC,WAAnB1C,EAAK0C,OAAO,EAIpD,CACA,SAAS2X,EAAStmB,GAChB,OAAiB,OAAVA,GAA4D,oBAA1C2B,OAAOC,UAAUC,SAASE,KAAK/B,EAC1D,CACA,MAAMi6H,EAAkBj6H,IAA4B,kBAAVA,GAAsBA,aAAiBmQ,SAAWm1B,UAAUtlC,GACtG,SAASk6H,EAAgBl6H,EAAOqd,GAC9B,OAAO48G,EAAej6H,GAASA,EAAQqd,CACzC,CACA,SAAS88G,EAAen6H,EAAOqd,GAC7B,MAAwB,qBAAVrd,EAAwBqd,EAAerd,CACvD,CACA,MAAMo6H,EAAe,CAACp6H,EAAOq6H,IACV,kBAAVr6H,GAAsBA,EAAM80F,SAAS,KAC1Cx5E,WAAWtb,GAAS,IAClBA,EAAQq6H,EACRC,EAAc,CAACt6H,EAAOq6H,IACT,kBAAVr6H,GAAsBA,EAAM80F,SAAS,KAC1Cx5E,WAAWtb,GAAS,IAAMq6H,GACvBr6H,EACP,SAASuF,EAASL,EAAI4J,EAAMnP,GAC1B,GAAIuF,GAAyB,oBAAZA,EAAGnD,KAClB,OAAOmD,EAAGtE,MAAMjB,EAASmP,EAE7B,CACA,SAASgJ,EAAKyiH,EAAUr1H,EAAIvF,EAAS66H,GACnC,IAAIr5H,EAAGuyB,EAAKtyB,EACZ,GAAIE,EAAQi5H,GAEV,GADA7mG,EAAM6mG,EAASr5H,OACXs5H,EACF,IAAKr5H,EAAIuyB,EAAM,EAAGvyB,GAAK,EAAGA,IACxB+D,EAAGnD,KAAKpC,EAAS46H,EAASp5H,GAAIA,QAGhC,IAAKA,EAAI,EAAGA,EAAIuyB,EAAKvyB,IACnB+D,EAAGnD,KAAKpC,EAAS46H,EAASp5H,GAAIA,QAG7B,GAAImlB,EAASi0G,GAGlB,IAFAn5H,EAAOO,OAAOP,KAAKm5H,GACnB7mG,EAAMtyB,EAAKF,OACNC,EAAI,EAAGA,EAAIuyB,EAAKvyB,IACnB+D,EAAGnD,KAAKpC,EAAS46H,EAASn5H,EAAKD,IAAKC,EAAKD,GAG/C,CACA,SAASs5H,EAAeC,EAAIC,GAC1B,IAAIx5H,EAAGy5H,EAAMC,EAAIzkE,EACjB,IAAKskE,IAAOC,GAAMD,EAAGx5H,SAAWy5H,EAAGz5H,OACjC,OAAO,EAET,IAAKC,EAAI,EAAGy5H,EAAOF,EAAGx5H,OAAQC,EAAIy5H,IAAQz5H,EAGxC,GAFA05H,EAAKH,EAAGv5H,GACRi1D,EAAKukE,EAAGx5H,GACJ05H,EAAGC,eAAiB1kE,EAAG0kE,cAAgBD,EAAG58G,QAAUm4C,EAAGn4C,MACzD,OAAO,EAGX,OAAO,CACT,CACA,SAAS88G,EAAQv5H,GACf,GAAIF,EAAQE,GACV,OAAOA,EAAOgG,IAAIuzH,GAEpB,GAAIz0G,EAAS9kB,GAAS,CACpB,MAAM8K,EAAS3K,OAAOqnB,OAAO,MACvB5nB,EAAOO,OAAOP,KAAKI,GACnBw5H,EAAO55H,EAAKF,OAClB,IAAI2E,EAAI,EACR,KAAOA,EAAIm1H,IAAQn1H,EACjByG,EAAOlL,EAAKyE,IAAMk1H,EAAQv5H,EAAOJ,EAAKyE,KAExC,OAAOyG,CACT,CACA,OAAO9K,CACT,CACA,SAASy5H,EAAWj5H,GAClB,OAAmE,IAA5D,CAAC,YAAa,YAAa,eAAekc,QAAQlc,EAC3D,CACA,SAASk5H,EAAQl5H,EAAKsK,EAAQ9K,EAAQ8B,GACpC,IAAK23H,EAAWj5H,GACd,OAEF,MAAMm5H,EAAO7uH,EAAOtK,GACdo5H,EAAO55H,EAAOQ,GAChBskB,EAAS60G,IAAS70G,EAAS80G,GAC7BC,EAAMF,EAAMC,EAAM93H,GAElBgJ,EAAOtK,GAAO+4H,EAAQK,EAE1B,CACA,SAASC,EAAM/uH,EAAQ9K,EAAQ8B,GAC7B,MAAMg4H,EAAUh6H,EAAQE,GAAUA,EAAS,CAACA,GACtCo5H,EAAOU,EAAQp6H,OACrB,IAAKolB,EAASha,GACZ,OAAOA,EAEThJ,EAAUA,GAAW,CAAC,EACtB,MAAMi4H,EAASj4H,EAAQi4H,QAAUL,EACjC,IAAK,IAAI/5H,EAAI,EAAGA,EAAIy5H,IAAQz5H,EAAG,CAE7B,GADAK,EAAS85H,EAAQn6H,IACZmlB,EAAS9kB,GACZ,SAEF,MAAMJ,EAAOO,OAAOP,KAAKI,GACzB,IAAK,IAAIqE,EAAI,EAAGm1H,EAAO55H,EAAKF,OAAQ2E,EAAIm1H,IAAQn1H,EAC9C01H,EAAOn6H,EAAKyE,GAAIyG,EAAQ9K,EAAQ8B,EAEpC,CACA,OAAOgJ,CACT,CACA,SAASkvH,EAAQlvH,EAAQ9K,GACvB,OAAO65H,EAAM/uH,EAAQ9K,EAAQ,CAAC+5H,OAAQE,GACxC,CACA,SAASA,EAAUz5H,EAAKsK,EAAQ9K,GAC9B,IAAKy5H,EAAWj5H,GACd,OAEF,MAAMm5H,EAAO7uH,EAAOtK,GACdo5H,EAAO55H,EAAOQ,GAChBskB,EAAS60G,IAAS70G,EAAS80G,GAC7BI,EAAQL,EAAMC,GACJz5H,OAAOC,UAAUE,eAAeC,KAAKuK,EAAQtK,KACvDsK,EAAOtK,GAAO+4H,EAAQK,GAE1B,CAOA,MAAMM,EAAe,CACnB,GAAIj2H,GAAKA,EACTu+B,EAAG7a,GAAKA,EAAE6a,EACVC,EAAG9a,GAAKA,EAAE8a,GAEZ,SAAS03F,EAAiB9rH,EAAK7N,GAC7B,MAAMgpH,EAAW0Q,EAAa15H,KAAS05H,EAAa15H,GAAO45H,EAAgB55H,IAC3E,OAAOgpH,EAASn7G,EAClB,CACA,SAAS+rH,EAAgB55H,GACvB,MAAMZ,EAAOy6H,EAAU75H,GACvB,OAAO6N,IACL,IAAK,MAAMhK,KAAKzE,EAAM,CACpB,GAAU,KAANyE,EACF,MAEFgK,EAAMA,GAAOA,EAAIhK,EACnB,CACA,OAAOgK,CAAG,CAEd,CACA,SAASgsH,EAAU75H,GACjB,MAAM85H,EAAQ95H,EAAIwP,MAAM,KAClBpQ,EAAO,GACb,IAAIs8D,EAAM,GACV,IAAK,MAAMxN,KAAQ4rE,EACjBp+D,GAAOxN,EACHwN,EAAIo3B,SAAS,MACfp3B,EAAMA,EAAI/uD,MAAM,GAAI,GAAK,KAEzBvN,EAAK+D,KAAKu4D,GACVA,EAAM,IAGV,OAAOt8D,CACT,CACA,SAAS26H,EAAY7kE,GACnB,OAAOA,EAAI/lD,OAAO,GAAGqI,cAAgB09C,EAAIvoD,MAAM,EACjD,CACA,MAAMqtH,EAAWh8H,GAA2B,qBAAVA,EAC5Bw7D,EAAcx7D,GAA2B,oBAAVA,EAC/Bi8H,EAAY,CAACl7H,EAAGC,KACpB,GAAID,EAAE8J,OAAS7J,EAAE6J,KACf,OAAO,EAET,IAAK,MAAM6oC,KAAQ3yC,EACjB,IAAKC,EAAE2J,IAAI+oC,GACT,OAAO,EAGX,OAAO,CAAI,EAEb,SAASwoF,EAAc37H,GACrB,MAAkB,YAAXA,EAAE0L,MAAiC,UAAX1L,EAAE0L,MAA+B,gBAAX1L,EAAE0L,IACzD,CAEA,MAAM6gC,EAAK5kC,KAAK4kC,GACVqvF,EAAM,EAAIrvF,EACVsvF,EAAQD,EAAMrvF,EACd5rB,EAAW/Q,OAAOksH,kBAClBC,EAAcxvF,EAAK,IACnByvF,EAAUzvF,EAAK,EACf0vF,EAAa1vF,EAAK,EAClB2vF,EAAqB,EAAL3vF,EAAS,EACzB4vF,EAAQx0H,KAAKw0H,MACb1+E,EAAO91C,KAAK81C,KAClB,SAAS2+E,EAAQC,GACf,MAAMC,EAAe30H,KAAK6kD,MAAM6vE,GAChCA,EAAQE,EAAaF,EAAOC,EAAcD,EAAQ,KAAQC,EAAeD,EACzE,MAAMG,EAAY70H,KAAKC,IAAI,GAAID,KAAK6S,MAAM2hH,EAAME,KAC1CI,EAAWJ,EAAQG,EACnBE,EAAeD,GAAY,EAAI,EAAIA,GAAY,EAAI,EAAIA,GAAY,EAAI,EAAI,GACjF,OAAOC,EAAeF,CACxB,CACA,SAASG,EAAWl9H,GAClB,MAAMS,EAAS,GACTksC,EAAOzkC,KAAKykC,KAAK3sC,GACvB,IAAImB,EACJ,IAAKA,EAAI,EAAGA,EAAIwrC,EAAMxrC,IAChBnB,EAAQmB,IAAM,IAChBV,EAAO0E,KAAKhE,GACZV,EAAO0E,KAAKnF,EAAQmB,IAOxB,OAJIwrC,KAAiB,EAAPA,IACZlsC,EAAO0E,KAAKwnC,GAEdlsC,EAAO6yC,MAAK,CAACvyC,EAAGC,IAAMD,EAAIC,IAAGqtC,MACtB5tC,CACT,CACA,SAAS08H,EAAS12H,GAChB,OAAQk0B,MAAMrf,WAAW7U,KAAO6+B,SAAS7+B,EAC3C,CACA,SAASq2H,EAAa94F,EAAGC,EAAGm5F,GAC1B,OAAOl1H,KAAKyW,IAAIqlB,EAAIC,GAAKm5F,CAC3B,CACA,SAASC,EAAYr5F,EAAGo5F,GACtB,MAAME,EAAUp1H,KAAK6kD,MAAM/oB,GAC3B,OAASs5F,EAAUF,GAAYp5F,GAAQs5F,EAAUF,GAAYp5F,CAC/D,CACA,SAASu5F,EAAmBz9G,EAAOxT,EAAQmL,GACzC,IAAItW,EAAGy5H,EAAM56H,EACb,IAAKmB,EAAI,EAAGy5H,EAAO96G,EAAM5e,OAAQC,EAAIy5H,EAAMz5H,IACzCnB,EAAQ8f,EAAM3e,GAAGsW,GACZkjB,MAAM36B,KACTsM,EAAO8R,IAAMlW,KAAKkW,IAAI9R,EAAO8R,IAAKpe,GAClCsM,EAAO6R,IAAMjW,KAAKiW,IAAI7R,EAAO6R,IAAKne,GAGxC,CACA,SAASw9H,EAAUC,GACjB,OAAOA,GAAW3wF,EAAK,IACzB,CACA,SAAS4wF,EAAUC,GACjB,OAAOA,GAAW,IAAM7wF,EAC1B,CACA,SAAS8wF,EAAe55F,GACtB,IAAKi2F,EAAej2F,GAClB,OAEF,IAAIzjC,EAAI,EACJuF,EAAI,EACR,MAAOoC,KAAK6kD,MAAM/oB,EAAIzjC,GAAKA,IAAMyjC,EAC/BzjC,GAAK,GACLuF,IAEF,OAAOA,CACT,CACA,SAAS+3H,EAAkBC,EAAaC,GACtC,MAAMC,EAAsBD,EAAW/5F,EAAI85F,EAAY95F,EACjDi6F,EAAsBF,EAAW95F,EAAI65F,EAAY75F,EACjDi6F,EAA2Bh2H,KAAKykC,KAAKqxF,EAAsBA,EAAsBC,EAAsBA,GAC7G,IAAIE,EAAQj2H,KAAK2kC,MAAMoxF,EAAqBD,GAI5C,OAHIG,GAAU,GAAMrxF,IAClBqxF,GAAShC,GAEJ,CACLgC,QACA5vF,SAAU2vF,EAEd,CACA,SAASE,EAAsBC,EAAKC,GAClC,OAAOp2H,KAAKykC,KAAKzkC,KAAKC,IAAIm2H,EAAIt6F,EAAIq6F,EAAIr6F,EAAG,GAAK97B,KAAKC,IAAIm2H,EAAIr6F,EAAIo6F,EAAIp6F,EAAG,GACxE,CACA,SAASs6F,EAAWx9H,EAAGC,GACrB,OAAQD,EAAIC,EAAIo7H,GAASD,EAAMrvF,CACjC,CACA,SAAS0xF,EAAgBz9H,GACvB,OAAQA,EAAIo7H,EAAMA,GAAOA,CAC3B,CACA,SAASsC,GAAcN,EAAOp9G,EAAOC,EAAK09G,GACxC,MAAM39H,EAAIy9H,EAAgBL,GACpB5kE,EAAIilE,EAAgBz9G,GACpBxgB,EAAIi+H,EAAgBx9G,GACpB29G,EAAeH,EAAgBjlE,EAAIx4D,GACnC69H,EAAaJ,EAAgBj+H,EAAIQ,GACjC89H,EAAeL,EAAgBz9H,EAAIw4D,GACnCulE,EAAaN,EAAgBz9H,EAAIR,GACvC,OAAOQ,IAAMw4D,GAAKx4D,IAAMR,GAAMm+H,GAAyBnlE,IAAMh5D,GACvDo+H,EAAeC,GAAcC,EAAeC,CACpD,CACA,SAASC,GAAY/+H,EAAOoe,EAAKD,GAC/B,OAAOjW,KAAKiW,IAAIC,EAAKlW,KAAKkW,IAAID,EAAKne,GACrC,CACA,SAASg/H,GAAYh/H,GACnB,OAAO++H,GAAY/+H,GAAQ,MAAO,MACpC,CACA,SAASi/H,GAAWj/H,EAAO+gB,EAAOC,EAAKo8G,EAAU,MAC/C,OAAOp9H,GAASkI,KAAKkW,IAAI2C,EAAOC,GAAOo8G,GAAWp9H,GAASkI,KAAKiW,IAAI4C,EAAOC,GAAOo8G,CACpF,CAEA,SAAS8B,GAAQC,EAAOn/H,EAAOo/H,GAC7BA,EAAMA,GAAO,CAAEnhH,GAAUkhH,EAAMlhH,GAASje,GACxC,IAEIq/H,EAFAC,EAAKH,EAAMj+H,OAAS,EACpBq+H,EAAK,EAET,MAAOD,EAAKC,EAAK,EACfF,EAAOE,EAAKD,GAAO,EACfF,EAAIC,GACNE,EAAKF,EAELC,EAAKD,EAGT,MAAO,CAACE,KAAID,KACd,CACA,MAAME,GAAe,CAACL,EAAOn9H,EAAKhC,EAAOigE,IACvCi/D,GAAQC,EAAOn/H,EAAOigE,EAClBhiD,GAASkhH,EAAMlhH,GAAOjc,IAAQhC,EAC9Bie,GAASkhH,EAAMlhH,GAAOjc,GAAOhC,GAC7By/H,GAAgB,CAACN,EAAOn9H,EAAKhC,IACjCk/H,GAAQC,EAAOn/H,GAAOie,GAASkhH,EAAMlhH,GAAOjc,IAAQhC,IACtD,SAAS0/H,GAAe7yH,EAAQuR,EAAKD,GACnC,IAAI4C,EAAQ,EACRC,EAAMnU,EAAO3L,OACjB,MAAO6f,EAAQC,GAAOnU,EAAOkU,GAAS3C,EACpC2C,IAEF,MAAOC,EAAMD,GAASlU,EAAOmU,EAAM,GAAK7C,EACtC6C,IAEF,OAAOD,EAAQ,GAAKC,EAAMnU,EAAO3L,OAC7B2L,EAAO8B,MAAMoS,EAAOC,GACpBnU,CACN,CACA,MAAM8yH,GAAc,CAAC,OAAQ,MAAO,QAAS,SAAU,WACvD,SAASC,GAAkB9/G,EAAOwN,GAC5BxN,EAAM+/G,SACR//G,EAAM+/G,SAASC,UAAU36H,KAAKmoB,IAGhC3rB,OAAOqO,eAAe8P,EAAO,WAAY,CACvC7P,cAAc,EACdoa,YAAY,EACZrqB,MAAO,CACL8/H,UAAW,CAACxyG,MAGhBqyG,GAAYj6H,SAAS1D,IACnB,MAAM6W,EAAS,UAAYkjH,EAAY/5H,GACjCsnC,EAAOxpB,EAAM9d,GACnBL,OAAOqO,eAAe8P,EAAO9d,EAAK,CAChCiO,cAAc,EACdoa,YAAY,EACZ,KAAArqB,IAAS8O,GACP,MAAMmc,EAAMqe,EAAK1oC,MAAMqC,KAAM6L,GAM7B,OALAgR,EAAM+/G,SAASC,UAAUp6H,SAASiV,IACF,oBAAnBA,EAAO9B,IAChB8B,EAAO9B,MAAW/J,EACpB,IAEKmc,CACT,GACA,IAEN,CACA,SAAS80G,GAAoBjgH,EAAOwN,GAClC,MAAM0yG,EAAOlgH,EAAM+/G,SACnB,IAAKG,EACH,OAEF,MAAMF,EAAYE,EAAKF,UACjB7hH,EAAQ6hH,EAAU5hH,QAAQoP,IACjB,IAAXrP,GACF6hH,EAAUvxG,OAAOtQ,EAAO,GAEtB6hH,EAAU5+H,OAAS,IAGvBy+H,GAAYj6H,SAAS1D,WACZ8d,EAAM9d,EAAI,WAEZ8d,EAAM+/G,SACf,CACA,SAASI,GAAap1G,GACpB,MAAMlkB,EAAM,IAAIN,IAChB,IAAIlF,EAAGy5H,EACP,IAAKz5H,EAAI,EAAGy5H,EAAO/vG,EAAM3pB,OAAQC,EAAIy5H,IAAQz5H,EAC3CwF,EAAIW,IAAIujB,EAAM1pB,IAEhB,OAAIwF,EAAIkE,OAAS+vH,EACR/vG,EAEFxpB,MAAMyJ,KAAKnE,EACpB,CAKA,MAAMu5H,GAAoB,WACxB,MAAsB,qBAAXt7H,OACF,SAASW,GACd,OAAOA,GACT,EAEKX,OAAO8jB,qBAChB,CAPyB,GAQzB,SAASy3G,GAAUj7H,EAAIvF,EAASygI,GAC9B,MAAMC,EAAaD,GAAY,CAAEtxH,GAASzN,MAAMO,UAAU+M,MAAM5M,KAAK+M,IACrE,IAAIwxH,GAAU,EACVxxH,EAAO,GACX,OAAO,YAAYyxH,GACjBzxH,EAAOuxH,EAAWE,GACbD,IACHA,GAAU,EACVJ,GAAiBn+H,KAAK6C,QAAQ,KAC5B07H,GAAU,EACVp7H,EAAGtE,MAAMjB,EAASmP,EAAK,IAG7B,CACF,CACA,SAAS0xH,GAASt7H,EAAI+C,GACpB,IAAIi2C,EACJ,OAAO,YAAYpvC,GAOjB,OANI7G,GACFugB,aAAa01B,GACbA,EAAU91C,WAAWlD,EAAI+C,EAAO6G,IAEhC5J,EAAGtE,MAAMqC,KAAM6L,GAEV7G,CACT,CACF,CACA,MAAMw4H,GAAsBC,GAAoB,UAAVA,EAAoB,OAAmB,QAAVA,EAAkB,QAAU,SACzFC,GAAiB,CAACD,EAAO3/G,EAAOC,IAAkB,UAAV0/G,EAAoB3/G,EAAkB,QAAV2/G,EAAkB1/G,GAAOD,EAAQC,GAAO,EAC5G4/G,GAAS,CAACF,EAAO7wG,EAAMygF,EAAOr1E,KAClC,MAAM4lG,EAAQ5lG,EAAM,OAAS,QAC7B,OAAOylG,IAAUG,EAAQvwB,EAAkB,WAAVowB,GAAsB7wG,EAAOygF,GAAS,EAAIzgF,CAAI,EAEjF,SAASixG,GAAiChxH,EAAMojC,EAAQ6tF,GACtD,MAAMC,EAAa9tF,EAAOhyC,OAC1B,IAAI6f,EAAQ,EACRinG,EAAQgZ,EACZ,GAAIlxH,EAAKmxH,QAAS,CAChB,MAAM,OAACC,EAAM,QAAEC,GAAWrxH,EACpBuiB,EAAO6uG,EAAO7uG,MACd,IAACjU,EAAG,IAAED,EAAG,WAAEijH,EAAU,WAAEC,GAAcH,EAAOI,gBAC9CF,IACFrgH,EAAQg+G,GAAY72H,KAAKkW,IACvBohH,GAAa2B,EAASD,EAAO7uG,KAAMjU,GAAKmhH,GACxCwB,EAAqBC,EAAaxB,GAAatsF,EAAQ7gB,EAAM6uG,EAAOK,iBAAiBnjH,IAAMmhH,IAC7F,EAAGyB,EAAa,IAGhBhZ,EADEqZ,EACMtC,GAAY72H,KAAKiW,IACvBqhH,GAAa2B,EAASD,EAAO7uG,KAAMlU,GAAK,GAAMmhH,GAAK,EACnDyB,EAAqB,EAAIvB,GAAatsF,EAAQ7gB,EAAM6uG,EAAOK,iBAAiBpjH,IAAM,GAAMmhH,GAAK,GAC/Fv+G,EAAOigH,GAAcjgH,EAEbigH,EAAajgH,CAEzB,CACA,MAAO,CAACA,QAAOinG,QACjB,CACA,SAASwZ,GAAoB1xH,GAC3B,MAAM,OAAC2xH,EAAM,OAAEC,EAAM,aAAEC,GAAgB7xH,EACjC8xH,EAAY,CAChBC,KAAMJ,EAAOrjH,IACb0jH,KAAML,EAAOtjH,IACb4jH,KAAML,EAAOtjH,IACb4jH,KAAMN,EAAOvjH,KAEf,IAAKwjH,EAEH,OADA7xH,EAAK6xH,aAAeC,GACb,EAET,MAAMK,EAAUN,EAAaE,OAASJ,EAAOrjH,KAC1CujH,EAAaG,OAASL,EAAOtjH,KAC7BwjH,EAAaI,OAASL,EAAOtjH,KAC7BujH,EAAaK,OAASN,EAAOvjH,IAEhC,OADAxc,OAAO02B,OAAOspG,EAAcC,GACrBK,CACT,CAEA,MAAMC,GAAUr7H,GAAY,IAANA,GAAiB,IAANA,EAC3Bs7H,GAAY,CAACt7H,EAAG0yD,EAAGzzD,KAAQoC,KAAKC,IAAI,EAAG,IAAMtB,GAAK,IAAMqB,KAAKkrD,KAAKvsD,EAAI0yD,GAAK4iE,EAAMr2H,GACjFs8H,GAAa,CAACv7H,EAAG0yD,EAAGzzD,IAAMoC,KAAKC,IAAI,GAAI,GAAKtB,GAAKqB,KAAKkrD,KAAKvsD,EAAI0yD,GAAK4iE,EAAMr2H,GAAK,EAC/E65D,GAAU,CACd0iE,OAAQx7H,GAAKA,EACby7H,WAAYz7H,GAAKA,EAAIA,EACrB07H,YAAa17H,IAAMA,GAAKA,EAAI,GAC5B27H,cAAe37H,IAAOA,GAAK,IAAO,EAC9B,GAAMA,EAAIA,GACT,MAAUA,GAAMA,EAAI,GAAK,GAC9B47H,YAAa57H,GAAKA,EAAIA,EAAIA,EAC1B67H,aAAc77H,IAAMA,GAAK,GAAKA,EAAIA,EAAI,EACtC87H,eAAgB97H,IAAOA,GAAK,IAAO,EAC/B,GAAMA,EAAIA,EAAIA,EACd,KAAQA,GAAK,GAAKA,EAAIA,EAAI,GAC9B+7H,YAAa/7H,GAAKA,EAAIA,EAAIA,EAAIA,EAC9Bg8H,aAAch8H,MAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,GAC5Ci8H,eAAgBj8H,IAAOA,GAAK,IAAO,EAC/B,GAAMA,EAAIA,EAAIA,EAAIA,GACjB,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,GACnCk8H,YAAal8H,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAClCm8H,aAAcn8H,IAAMA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,EAC9Co8H,eAAgBp8H,IAAOA,GAAK,IAAO,EAC/B,GAAMA,EAAIA,EAAIA,EAAIA,EAAIA,EACtB,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,GACtCq8H,WAAYr8H,GAA8B,EAAxBqB,KAAKmrD,IAAIxsD,EAAI01H,GAC/B4G,YAAat8H,GAAKqB,KAAKkrD,IAAIvsD,EAAI01H,GAC/B6G,cAAev8H,IAAM,IAAOqB,KAAKmrD,IAAIvmB,EAAKjmC,GAAK,GAC/Cw8H,WAAYx8H,GAAY,IAANA,EAAW,EAAIqB,KAAKC,IAAI,EAAG,IAAMtB,EAAI,IACvDy8H,YAAaz8H,GAAY,IAANA,EAAW,EAA4B,EAAvBqB,KAAKC,IAAI,GAAI,GAAKtB,GACrD08H,cAAe18H,GAAKq7H,GAAOr7H,GAAKA,EAAIA,EAAI,GACpC,GAAMqB,KAAKC,IAAI,EAAG,IAAU,EAAJtB,EAAQ,IAChC,IAAyC,EAAjCqB,KAAKC,IAAI,GAAI,IAAU,EAAJtB,EAAQ,KACvC28H,WAAY38H,GAAMA,GAAK,EAAKA,IAAMqB,KAAKykC,KAAK,EAAI9lC,EAAIA,GAAK,GACzD48H,YAAa58H,GAAKqB,KAAKykC,KAAK,GAAK9lC,GAAK,GAAKA,GAC3C68H,cAAe78H,IAAOA,GAAK,IAAO,GAC7B,IAAOqB,KAAKykC,KAAK,EAAI9lC,EAAIA,GAAK,GAC/B,IAAOqB,KAAKykC,KAAK,GAAK9lC,GAAK,GAAKA,GAAK,GACzC88H,cAAe98H,GAAKq7H,GAAOr7H,GAAKA,EAAIs7H,GAAUt7H,EAAG,KAAO,IACxD+8H,eAAgB/8H,GAAKq7H,GAAOr7H,GAAKA,EAAIu7H,GAAWv7H,EAAG,KAAO,IAC1D,gBAAAg9H,CAAiBh9H,GACf,MAAM0yD,EAAI,MACJzzD,EAAI,IACV,OAAOo8H,GAAOr7H,GAAKA,EACjBA,EAAI,GACA,GAAMs7H,GAAc,EAAJt7H,EAAO0yD,EAAGzzD,GAC1B,GAAM,GAAMs8H,GAAe,EAAJv7H,EAAQ,EAAG0yD,EAAGzzD,EAC7C,EACA,UAAAg+H,CAAWj9H,GACT,MAAM0yD,EAAI,QACV,OAAO1yD,EAAIA,IAAM0yD,EAAI,GAAK1yD,EAAI0yD,EAChC,EACA,WAAAwqE,CAAYl9H,GACV,MAAM0yD,EAAI,QACV,OAAQ1yD,GAAK,GAAKA,IAAM0yD,EAAI,GAAK1yD,EAAI0yD,GAAK,CAC5C,EACA,aAAAyqE,CAAcn9H,GACZ,IAAI0yD,EAAI,QACR,OAAK1yD,GAAK,IAAO,EACDA,EAAIA,IAAuB,GAAhB0yD,GAAK,QAAgB1yD,EAAI0yD,GAA3C,GAEF,KAAQ1yD,GAAK,GAAKA,IAAuB,GAAhB0yD,GAAK,QAAgB1yD,EAAI0yD,GAAK,EAChE,EACA0qE,aAAcp9H,GAAK,EAAI84D,GAAQukE,cAAc,EAAIr9H,GACjD,aAAAq9H,CAAcr9H,GACZ,MAAMX,EAAI,OACJC,EAAI,KACV,OAAIU,EAAK,EAAIV,EACJD,EAAIW,EAAIA,EAEbA,EAAK,EAAIV,EACJD,GAAKW,GAAM,IAAMV,GAAMU,EAAI,IAEhCA,EAAK,IAAMV,EACND,GAAKW,GAAM,KAAOV,GAAMU,EAAI,MAE9BX,GAAKW,GAAM,MAAQV,GAAMU,EAAI,OACtC,EACAs9H,gBAAiBt9H,GAAMA,EAAI,GACO,GAA9B84D,GAAQskE,aAAiB,EAAJp9H,GACc,GAAnC84D,GAAQukE,cAAkB,EAAJr9H,EAAQ,GAAW;;;;;;;AAS/C,SAASkmD,GAAMtnD,GACb,OAAOA,EAAI,GAAM,CACnB,CACA,MAAM2+H,GAAM,CAAC3+H,EAAGO,EAAGJ,IAAMsC,KAAKiW,IAAIjW,KAAKkW,IAAI3Y,EAAGG,GAAII,GAClD,SAASq+H,GAAI5+H,GACX,OAAO2+H,GAAIr3E,GAAU,KAAJtnD,GAAW,EAAG,IACjC,CACA,SAAS6+H,GAAI7+H,GACX,OAAO2+H,GAAIr3E,GAAU,IAAJtnD,GAAU,EAAG,IAChC,CACA,SAAS8+H,GAAI9+H,GACX,OAAO2+H,GAAIr3E,GAAMtnD,EAAI,MAAQ,IAAK,EAAG,EACvC,CACA,SAAS++H,GAAI/+H,GACX,OAAO2+H,GAAIr3E,GAAU,IAAJtnD,GAAU,EAAG,IAChC,CACA,MAAMg/H,GAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAGC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIhkI,EAAG,GAAIC,EAAG,GAAI+E,EAAG,GAAII,EAAG,GAAI5F,EAAG,GAAIiG,EAAG,IACrJ2xD,GAAM,IAAI,oBACV6sE,GAAKhkI,GAAKm3D,GAAQ,GAAJn3D,GACd8jG,GAAK9jG,GAAKm3D,IAAS,IAAJn3D,IAAa,GAAKm3D,GAAQ,GAAJn3D,GACrCuvB,GAAKvvB,IAAW,IAAJA,IAAa,KAAY,GAAJA,GACjCikI,GAAUx/H,GAAK8qB,GAAG9qB,EAAEW,IAAMmqB,GAAG9qB,EAAEE,IAAM4qB,GAAG9qB,EAAEzE,IAAMuvB,GAAG9qB,EAAE1E,GAC3D,SAASmkI,GAAShuE,GAChB,IACIuG,EADA/pC,EAAMwjC,EAAIh2D,OAmBd,MAjBe,MAAXg2D,EAAI,KACM,IAARxjC,GAAqB,IAARA,EACf+pC,EAAM,CACJr3D,EAAG,IAAsB,GAAhBq+H,GAAMvtE,EAAI,IACnBvxD,EAAG,IAAsB,GAAhB8+H,GAAMvtE,EAAI,IACnBl2D,EAAG,IAAsB,GAAhByjI,GAAMvtE,EAAI,IACnBn2D,EAAW,IAAR2yB,EAA4B,GAAhB+wG,GAAMvtE,EAAI,IAAW,KAErB,IAARxjC,GAAqB,IAARA,IACtB+pC,EAAM,CACJr3D,EAAGq+H,GAAMvtE,EAAI,KAAO,EAAIutE,GAAMvtE,EAAI,IAClCvxD,EAAG8+H,GAAMvtE,EAAI,KAAO,EAAIutE,GAAMvtE,EAAI,IAClCl2D,EAAGyjI,GAAMvtE,EAAI,KAAO,EAAIutE,GAAMvtE,EAAI,IAClCn2D,EAAW,IAAR2yB,EAAa+wG,GAAMvtE,EAAI,KAAO,EAAIutE,GAAMvtE,EAAI,IAAO,OAIrDuG,CACT,CACA,MAAM0nE,GAAQ,CAACpkI,EAAGyF,IAAMzF,EAAI,IAAMyF,EAAEzF,GAAK,GACzC,SAASqkI,GAAU3/H,GACjB,IAAIe,EAAIy+H,GAAQx/H,GAAKu/H,GAAKlgC,GAC1B,OAAOr/F,EACH,IAAMe,EAAEf,EAAEW,GAAKI,EAAEf,EAAEE,GAAKa,EAAEf,EAAEzE,GAAKmkI,GAAM1/H,EAAE1E,EAAGyF,QAC5CoU,CACN,CACA,MAAMyqH,GAAS,+GACf,SAASC,GAAS1/H,EAAG2zD,EAAGvzD,GACtB,MAAMjF,EAAIw4D,EAAIrxD,KAAKkW,IAAIpY,EAAG,EAAIA,GACxBQ,EAAI,CAACC,EAAGZ,GAAKY,EAAIb,EAAI,IAAM,KAAOI,EAAIjF,EAAImH,KAAKiW,IAAIjW,KAAKkW,IAAIvY,EAAI,EAAG,EAAIA,EAAG,IAAK,GACrF,MAAO,CAACW,EAAE,GAAIA,EAAE,GAAIA,EAAE,GACxB,CACA,SAAS++H,GAAS3/H,EAAG2zD,EAAG9zD,GACtB,MAAMe,EAAI,CAACC,EAAGZ,GAAKY,EAAIb,EAAI,IAAM,IAAMH,EAAIA,EAAI8zD,EAAIrxD,KAAKiW,IAAIjW,KAAKkW,IAAIvY,EAAG,EAAIA,EAAG,GAAI,GACnF,MAAO,CAACW,EAAE,GAAIA,EAAE,GAAIA,EAAE,GACxB,CACA,SAASg/H,GAAS5/H,EAAG6/H,EAAGzkI,GACtB,MAAM0kI,EAAMJ,GAAS1/H,EAAG,EAAG,IAC3B,IAAIzE,EAMJ,IALIskI,EAAIzkI,EAAI,IACVG,EAAI,GAAKskI,EAAIzkI,GACbykI,GAAKtkI,EACLH,GAAKG,GAEFA,EAAI,EAAGA,EAAI,EAAGA,IACjBukI,EAAIvkI,IAAM,EAAIskI,EAAIzkI,EAClB0kI,EAAIvkI,IAAMskI,EAEZ,OAAOC,CACT,CACA,SAASC,GAASv/H,EAAGT,EAAG3E,EAAGmF,EAAGgY,GAC5B,OAAI/X,IAAM+X,GACCxY,EAAI3E,GAAKmF,GAAMR,EAAI3E,EAAI,EAAI,GAElC2E,IAAMwY,GACAnd,EAAIoF,GAAKD,EAAI,GAEfC,EAAIT,GAAKQ,EAAI,CACvB,CACA,SAASy/H,GAAQngI,GACf,MAAMm3H,EAAQ,IACRx2H,EAAIX,EAAEW,EAAIw2H,EACVj3H,EAAIF,EAAEE,EAAIi3H,EACV57H,EAAIyE,EAAEzE,EAAI47H,EACVz+G,EAAMjW,KAAKiW,IAAI/X,EAAGT,EAAG3E,GACrBod,EAAMlW,KAAKkW,IAAIhY,EAAGT,EAAG3E,GACrBgF,GAAKmY,EAAMC,GAAO,EACxB,IAAIxY,EAAG2zD,EAAGpzD,EAOV,OANIgY,IAAQC,IACVjY,EAAIgY,EAAMC,EACVm7C,EAAIvzD,EAAI,GAAMG,GAAK,EAAIgY,EAAMC,GAAOjY,GAAKgY,EAAMC,GAC/CxY,EAAI+/H,GAASv/H,EAAGT,EAAG3E,EAAGmF,EAAGgY,GACzBvY,EAAQ,GAAJA,EAAS,IAER,CAAK,EAAJA,EAAO2zD,GAAK,EAAGvzD,EACzB,CACA,SAAS6/H,GAAMr/H,EAAGzF,EAAGC,EAAG+E,GACtB,OACE1E,MAAMC,QAAQP,GACVyF,EAAEzF,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAChByF,EAAEzF,EAAGC,EAAG+E,IACZyB,IAAI88H,GACR,CACA,SAASwB,GAAQlgI,EAAG2zD,EAAGvzD,GACrB,OAAO6/H,GAAMP,GAAU1/H,EAAG2zD,EAAGvzD,EAC/B,CACA,SAAS+/H,GAAQngI,EAAG6/H,EAAGzkI,GACrB,OAAO6kI,GAAML,GAAU5/H,EAAG6/H,EAAGzkI,EAC/B,CACA,SAASglI,GAAQpgI,EAAG2zD,EAAG9zD,GACrB,OAAOogI,GAAMN,GAAU3/H,EAAG2zD,EAAG9zD,EAC/B,CACA,SAASwgI,GAAIrgI,GACX,OAAQA,EAAI,IAAM,KAAO,GAC3B,CACA,SAASsgI,GAAShvE,GAChB,MAAMhxD,EAAIm/H,GAAOc,KAAKjvE,GACtB,IACIzxD,EADA1E,EAAI,IAER,IAAKmF,EACH,OAEEA,EAAE,KAAOT,IACX1E,EAAImF,EAAE,GAAKm+H,IAAKn+H,EAAE,IAAMo+H,IAAKp+H,EAAE,KAEjC,MAAMN,EAAIqgI,IAAK//H,EAAE,IACXkgI,GAAMlgI,EAAE,GAAK,IACbmgI,GAAMngI,EAAE,GAAK,IAQnB,OANET,EADW,QAATS,EAAE,GACA6/H,GAAQngI,EAAGwgI,EAAIC,GACD,QAATngI,EAAE,GACP8/H,GAAQpgI,EAAGwgI,EAAIC,GAEfP,GAAQlgI,EAAGwgI,EAAIC,GAEd,CACLjgI,EAAGX,EAAE,GACLE,EAAGF,EAAE,GACLzE,EAAGyE,EAAE,GACL1E,EAAGA,EAEP,CACA,SAAS6yD,GAAOnuD,EAAG6gI,GACjB,IAAI1gI,EAAIggI,GAAQngI,GAChBG,EAAE,GAAKqgI,GAAIrgI,EAAE,GAAK0gI,GAClB1gI,EAAIkgI,GAAQlgI,GACZH,EAAEW,EAAIR,EAAE,GACRH,EAAEE,EAAIC,EAAE,GACRH,EAAEzE,EAAI4E,EAAE,EACV,CACA,SAAS2gI,GAAU9gI,GACjB,IAAKA,EACH,OAEF,MAAM1E,EAAI6kI,GAAQngI,GACZG,EAAI7E,EAAE,GACNw4D,EAAIirE,GAAIzjI,EAAE,IACViF,EAAIw+H,GAAIzjI,EAAE,IAChB,OAAO0E,EAAE1E,EAAI,IACT,QAAQ6E,MAAM2zD,OAAOvzD,OAAOu+H,GAAI9+H,EAAE1E,MAClC,OAAO6E,MAAM2zD,OAAOvzD,KAC1B,CACA,MAAMwB,GAAM,CACVw8B,EAAG,OACHwiG,EAAG,QACHC,EAAG,KACHC,EAAG,MACH1sE,EAAG,KACH2sE,EAAG,SACHC,EAAG,QACHlC,EAAG,KACHvqE,EAAG,KACH0sE,EAAG,KACHlC,EAAG,KACHC,EAAG,QACHC,EAAG,QACHiC,EAAG,KACHC,EAAG,WACHjC,EAAG,KACHjlI,EAAG,KACHmnI,EAAG,KACHltE,EAAG,KACHC,EAAG,KACHktE,EAAG,QACHlC,EAAG,KACHnrE,EAAG,KACHstE,EAAG,OACHrtE,EAAG,KACHstE,EAAG,QACHC,EAAG,MAECC,GAAU,CACdC,OAAQ,SACRC,YAAa,SACbC,KAAM,OACNC,UAAW,SACXC,KAAM,SACNC,MAAO,SACPC,OAAQ,SACRC,MAAO,IACPC,aAAc,SACdC,GAAI,KACJC,QAAS,SACTC,KAAM,SACNC,UAAW,SACXC,OAAQ,SACRC,SAAU,SACVC,QAAS,SACTC,IAAK,SACLC,YAAa,SACbC,QAAS,SACTC,QAAS,SACTC,KAAM,OACNC,IAAK,KACLC,MAAO,OACPC,QAAS,SACTC,KAAM,SACNC,KAAM,OACNC,KAAM,SACNC,OAAQ,SACRC,QAAS,SACTC,SAAU,SACVC,OAAQ,SACRC,MAAO,SACPC,IAAK,SACLC,OAAQ,SACRC,OAAQ,SACRC,KAAM,SACNC,MAAO,SACPC,MAAO,SACPC,IAAK,OACLC,OAAQ,SACRC,OAAQ,SACRC,SAAU,OACVC,OAAQ,SACRC,OAAQ,SACRC,SAAU,SACVC,SAAU,SACVC,SAAU,SACVC,SAAU,SACVC,OAAQ,SACRC,QAAS,SACTC,UAAW,SACXC,IAAK,SACLC,OAAQ,SACRC,IAAK,SACLC,IAAK,OACLC,MAAO,SACPC,IAAK,SACLC,QAAS,SACTC,OAAQ,SACRC,QAAS,SACTC,MAAO,SACPC,KAAM,SACNC,MAAO,SACPC,OAAQ,SACRC,UAAW,SACXC,QAAS,SACTC,WAAY,SACZC,IAAK,SACLC,KAAM,SACNC,MAAO,SACPC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,OAAQ,SACRC,OAAQ,SACRC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,QAAS,SACTC,IAAK,SACLC,KAAM,OACNC,QAAS,SACTC,IAAK,SACLC,OAAQ,SACRC,MAAO,SACPC,WAAY,SACZC,IAAK,KACLC,MAAO,SACPC,OAAQ,SACRC,OAAQ,SACRC,KAAM,SACNC,UAAW,OACXC,IAAK,SACLC,SAAU,SACVC,WAAY,SACZC,QAAS,SACTC,SAAU,SACVC,QAAS,SACTC,WAAY,SACZC,KAAM,KACNC,OAAQ,SACRC,KAAM,SACNC,QAAS,SACTC,MAAO,SACPC,QAAS,SACTC,KAAM,SACNC,UAAW,SACXC,OAAQ,SACRC,MAAO,SACPC,WAAY,SACZC,UAAW,SACXC,QAAS,SACTC,KAAM,SACNC,IAAK,SACLC,KAAM,SACNC,QAAS,SACTC,MAAO,SACPC,YAAa,SACbC,GAAI,SACJC,SAAU,SACVC,MAAO,SACPC,UAAW,SACXC,MAAO,SACPC,UAAW,SACXC,MAAO,SACPC,QAAS,SACTC,MAAO,SACPC,OAAQ,SACRC,MAAO,SACPC,IAAK,SACLC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,SAAU,OACVC,OAAQ,SACRC,IAAK,SACLC,IAAK,OACLC,MAAO,SACPC,OAAQ,SACRC,GAAI,SACJC,MAAO,SACPC,IAAK,SACLC,KAAM,SACNC,UAAW,SACXC,GAAI,SACJC,MAAO,UAET,SAASC,KACP,MAAMC,EAAW,CAAC,EACZvvI,EAAOO,OAAOP,KAAKimI,IACnBuJ,EAAQjvI,OAAOP,KAAKoG,IAC1B,IAAIrG,EAAG4sB,EAAGloB,EAAGgrI,EAAIC,EACjB,IAAK3vI,EAAI,EAAGA,EAAIC,EAAKF,OAAQC,IAAK,CAEhC,IADA0vI,EAAKC,EAAK1vI,EAAKD,GACV4sB,EAAI,EAAGA,EAAI6iH,EAAM1vI,OAAQ6sB,IAC5BloB,EAAI+qI,EAAM7iH,GACV+iH,EAAKA,EAAGlqI,QAAQf,EAAG2B,GAAI3B,IAEzBA,EAAI60B,SAAS2sG,GAAQwJ,GAAK,IAC1BF,EAASG,GAAM,CAACjrI,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAU,IAAJA,EACjD,CACA,OAAO8qI,CACT,CACA,IAAII,GACJ,SAASC,GAAU95E,GACZ65E,KACHA,GAAQL,KACRK,GAAME,YAAc,CAAC,EAAG,EAAG,EAAG,IAEhC,MAAMlwI,EAAIgwI,GAAM75E,EAAIpwD,eACpB,OAAO/F,GAAK,CACVqF,EAAGrF,EAAE,GACL4E,EAAG5E,EAAE,GACLC,EAAGD,EAAE,GACLA,EAAgB,IAAbA,EAAEG,OAAeH,EAAE,GAAK,IAE/B,CACA,MAAMmwI,GAAS,uGACf,SAASC,GAASj6E,GAChB,MAAMhxD,EAAIgrI,GAAO/K,KAAKjvE,GACtB,IACI9wD,EAAGT,EAAG3E,EADND,EAAI,IAER,GAAKmF,EAAL,CAGA,GAAIA,EAAE,KAAOE,EAAG,CACd,MAAMX,GAAKS,EAAE,GACbnF,EAAImF,EAAE,GAAKm+H,GAAI5+H,GAAK2+H,GAAQ,IAAJ3+H,EAAS,EAAG,IACtC,CAOA,OANAW,GAAKF,EAAE,GACPP,GAAKO,EAAE,GACPlF,GAAKkF,EAAE,GACPE,EAAI,KAAOF,EAAE,GAAKm+H,GAAIj+H,GAAKg+H,GAAIh+H,EAAG,EAAG,MACrCT,EAAI,KAAOO,EAAE,GAAKm+H,GAAI1+H,GAAKy+H,GAAIz+H,EAAG,EAAG,MACrC3E,EAAI,KAAOkF,EAAE,GAAKm+H,GAAIrjI,GAAKojI,GAAIpjI,EAAG,EAAG,MAC9B,CACLoF,EAAGA,EACHT,EAAGA,EACH3E,EAAGA,EACHD,EAAGA,EAfL,CAiBF,CACA,SAASqwI,GAAU3rI,GACjB,OAAOA,IACLA,EAAE1E,EAAI,IACF,QAAQ0E,EAAEW,MAAMX,EAAEE,MAAMF,EAAEzE,MAAMujI,GAAI9+H,EAAE1E,MACtC,OAAO0E,EAAEW,MAAMX,EAAEE,MAAMF,EAAEzE,KAEjC,CACA,MAAMqyB,GAAK5tB,GAAKA,GAAK,SAAgB,MAAJA,EAAqC,MAAzByC,KAAKC,IAAI1C,EAAG,EAAM,KAAe,KACxEqF,GAAOrF,GAAKA,GAAK,OAAUA,EAAI,MAAQyC,KAAKC,KAAK1C,EAAI,MAAS,MAAO,KAC3E,SAASumD,GAAYqlF,EAAMC,EAAMzqI,GAC/B,MAAMT,EAAI0E,GAAKy5H,GAAI8M,EAAKjrI,IAClBT,EAAImF,GAAKy5H,GAAI8M,EAAK1rI,IAClB3E,EAAI8J,GAAKy5H,GAAI8M,EAAKrwI,IACxB,MAAO,CACLoF,EAAGk+H,GAAIjxG,GAAGjtB,EAAIS,GAAKiE,GAAKy5H,GAAI+M,EAAKlrI,IAAMA,KACvCT,EAAG2+H,GAAIjxG,GAAG1tB,EAAIkB,GAAKiE,GAAKy5H,GAAI+M,EAAK3rI,IAAMA,KACvC3E,EAAGsjI,GAAIjxG,GAAGryB,EAAI6F,GAAKiE,GAAKy5H,GAAI+M,EAAKtwI,IAAMA,KACvCD,EAAGswI,EAAKtwI,EAAI8F,GAAKyqI,EAAKvwI,EAAIswI,EAAKtwI,GAEnC,CACA,SAASwwI,GAAO9rI,EAAGtE,EAAGyuC,GACpB,GAAInqC,EAAG,CACL,IAAIi4D,EAAMkoE,GAAQngI,GAClBi4D,EAAIv8D,GAAK+G,KAAKiW,IAAI,EAAGjW,KAAKkW,IAAIs/C,EAAIv8D,GAAKu8D,EAAIv8D,GAAKyuC,EAAa,IAANzuC,EAAU,IAAM,IACvEu8D,EAAMooE,GAAQpoE,GACdj4D,EAAEW,EAAIs3D,EAAI,GACVj4D,EAAEE,EAAI+3D,EAAI,GACVj4D,EAAEzE,EAAI08D,EAAI,EACZ,CACF,CACA,SAASsjB,GAAMv7E,EAAGilB,GAChB,OAAOjlB,EAAI9D,OAAO02B,OAAO3N,GAAS,CAAC,EAAGjlB,GAAKA,CAC7C,CACA,SAAS+rI,GAAWz5E,GAClB,IAAItyD,EAAI,CAACW,EAAG,EAAGT,EAAG,EAAG3E,EAAG,EAAGD,EAAG,KAY9B,OAXIM,MAAMC,QAAQy2D,GACZA,EAAM72D,QAAU,IAClBuE,EAAI,CAACW,EAAG2xD,EAAM,GAAIpyD,EAAGoyD,EAAM,GAAI/2D,EAAG+2D,EAAM,GAAIh3D,EAAG,KAC3Cg3D,EAAM72D,OAAS,IACjBuE,EAAE1E,EAAIujI,GAAIvsE,EAAM,OAIpBtyD,EAAIu7E,GAAMjpB,EAAO,CAAC3xD,EAAG,EAAGT,EAAG,EAAG3E,EAAG,EAAGD,EAAG,IACvC0E,EAAE1E,EAAIujI,GAAI7+H,EAAE1E,IAEP0E,CACT,CACA,SAASgsI,GAAcv6E,GACrB,MAAsB,MAAlBA,EAAI/lD,OAAO,GACNggI,GAASj6E,GAEXgvE,GAAShvE,EAClB,CACA,MAAMw6E,GACJ,WAAAzwI,CAAY82D,GACV,GAAIA,aAAiB25E,GACnB,OAAO35E,EAET,MAAM9rD,SAAc8rD,EACpB,IAAItyD,EACS,WAATwG,EACFxG,EAAI+rI,GAAWz5E,GACG,WAAT9rD,IACTxG,EAAIy/H,GAASntE,IAAUi5E,GAAUj5E,IAAU05E,GAAc15E,IAE3D90D,KAAK0uI,KAAOlsI,EACZxC,KAAK2uI,SAAWnsI,CAClB,CACA,SAAIosI,GACF,OAAO5uI,KAAK2uI,MACd,CACA,OAAIlM,GACF,IAAIjgI,EAAIu7E,GAAM/9E,KAAK0uI,MAInB,OAHIlsI,IACFA,EAAE1E,EAAIwjI,GAAI9+H,EAAE1E,IAEP0E,CACT,CACA,OAAIigI,CAAI71H,GACN5M,KAAK0uI,KAAOH,GAAW3hI,EACzB,CACA,SAAAuhI,GACE,OAAOnuI,KAAK2uI,OAASR,GAAUnuI,KAAK0uI,WAAQ/2H,CAC9C,CACA,SAAAwqH,GACE,OAAOniI,KAAK2uI,OAASxM,GAAUniI,KAAK0uI,WAAQ/2H,CAC9C,CACA,SAAA2rH,GACE,OAAOtjI,KAAK2uI,OAASrL,GAAUtjI,KAAK0uI,WAAQ/2H,CAC9C,CACA,GAAAk3H,CAAIC,EAAOC,GACT,GAAID,EAAO,CACT,MAAMj4C,EAAK72F,KAAKyiI,IACV1rC,EAAK+3C,EAAMrM,IACjB,IAAIuM,EACJ,MAAMnsI,EAAIksI,IAAWC,EAAK,GAAMD,EAC1BvM,EAAI,EAAI3/H,EAAI,EACZ/E,EAAI+4F,EAAG/4F,EAAIi5F,EAAGj5F,EACdmxI,IAAOzM,EAAI1kI,KAAO,EAAI0kI,GAAKA,EAAI1kI,IAAM,EAAI0kI,EAAI1kI,IAAM,GAAK,EAC9DkxI,EAAK,EAAIC,EACTp4C,EAAG1zF,EAAI,IAAO8rI,EAAKp4C,EAAG1zF,EAAI6rI,EAAKj4C,EAAG5zF,EAAI,GACtC0zF,EAAGn0F,EAAI,IAAOusI,EAAKp4C,EAAGn0F,EAAIssI,EAAKj4C,EAAGr0F,EAAI,GACtCm0F,EAAG94F,EAAI,IAAOkxI,EAAKp4C,EAAG94F,EAAIixI,EAAKj4C,EAAGh5F,EAAI,GACtC84F,EAAG/4F,EAAI+E,EAAIg0F,EAAG/4F,GAAK,EAAI+E,GAAKk0F,EAAGj5F,EAC/BkC,KAAKyiI,IAAM5rC,CACb,CACA,OAAO72F,IACT,CACA,WAAA+oD,CAAY+lF,EAAOlrI,GAIjB,OAHIkrI,IACF9uI,KAAK0uI,KAAO3lF,GAAY/oD,KAAK0uI,KAAMI,EAAMJ,KAAM9qI,IAE1C5D,IACT,CACA,KAAA+9E,GACE,OAAO,IAAI0wD,GAAMzuI,KAAKyiI,IACxB,CACA,KAAAP,CAAMpkI,GAEJ,OADAkC,KAAK0uI,KAAK5wI,EAAIujI,GAAIvjI,GACXkC,IACT,CACA,OAAAkvI,CAAQviG,GACN,MAAM81F,EAAMziI,KAAK0uI,KAEjB,OADAjM,EAAI3kI,GAAK,EAAI6uC,EACN3sC,IACT,CACA,SAAAmvI,GACE,MAAM1M,EAAMziI,KAAK0uI,KACXlrG,EAAMsmB,GAAc,GAAR24E,EAAIt/H,EAAkB,IAARs/H,EAAI//H,EAAmB,IAAR+/H,EAAI1kI,GAEnD,OADA0kI,EAAIt/H,EAAIs/H,EAAI//H,EAAI+/H,EAAI1kI,EAAIylC,EACjBxjC,IACT,CACA,OAAAovI,CAAQziG,GACN,MAAM81F,EAAMziI,KAAK0uI,KAEjB,OADAjM,EAAI3kI,GAAK,EAAI6uC,EACN3sC,IACT,CACA,MAAAqvI,GACE,MAAM7sI,EAAIxC,KAAK0uI,KAIf,OAHAlsI,EAAEW,EAAI,IAAMX,EAAEW,EACdX,EAAEE,EAAI,IAAMF,EAAEE,EACdF,EAAEzE,EAAI,IAAMyE,EAAEzE,EACPiC,IACT,CACA,OAAAsvI,CAAQ3iG,GAEN,OADA2hG,GAAOtuI,KAAK0uI,KAAM,EAAG/hG,GACd3sC,IACT,CACA,MAAAuvI,CAAO5iG,GAEL,OADA2hG,GAAOtuI,KAAK0uI,KAAM,GAAI/hG,GACf3sC,IACT,CACA,QAAAwvI,CAAS7iG,GAEP,OADA2hG,GAAOtuI,KAAK0uI,KAAM,EAAG/hG,GACd3sC,IACT,CACA,UAAAyvI,CAAW9iG,GAET,OADA2hG,GAAOtuI,KAAK0uI,KAAM,GAAI/hG,GACf3sC,IACT,CACA,MAAA2wD,CAAO0yE,GAEL,OADA1yE,GAAO3wD,KAAK0uI,KAAMrL,GACXrjI,IACT,EAEF,SAAS0vI,GAAU56E,GACjB,OAAO,IAAI25E,GAAM35E,EACnB,CAEA,SAAS66E,GAAoB5yI,GAC3B,GAAIA,GAA0B,kBAAVA,EAAoB,CACtC,MAAMiM,EAAOjM,EAAM6B,WACnB,MAAgB,2BAAToK,GAA8C,4BAATA,CAC9C,CACA,OAAO,CACT,CACA,SAAS8lI,GAAM/xI,GACb,OAAO4yI,GAAoB5yI,GAASA,EAAQ2yI,GAAU3yI,EACxD,CACA,SAAS6yI,GAAc7yI,GACrB,OAAO4yI,GAAoB5yI,GACvBA,EACA2yI,GAAU3yI,GAAOyyI,SAAS,IAAKD,OAAO,IAAKpN,WACjD,CAEA,MAAM5uG,GAAY70B,OAAOqnB,OAAO,MAC1B8pH,GAAcnxI,OAAOqnB,OAAO,MAClC,SAAS+pH,GAAW5/G,EAAMnxB,GACxB,IAAKA,EACH,OAAOmxB,EAET,MAAM/xB,EAAOY,EAAIwP,MAAM,KACvB,IAAK,IAAIrQ,EAAI,EAAGsF,EAAIrF,EAAKF,OAAQC,EAAIsF,IAAKtF,EAAG,CAC3C,MAAM0E,EAAIzE,EAAKD,GACfgyB,EAAOA,EAAKttB,KAAOstB,EAAKttB,GAAKlE,OAAOqnB,OAAO,MAC7C,CACA,OAAOmK,CACT,CACA,SAASxsB,GAAI4V,EAAM6jD,EAAOvzD,GACxB,MAAqB,kBAAVuzD,EACFi7D,EAAM0X,GAAWx2H,EAAM6jD,GAAQvzD,GAEjCwuH,EAAM0X,GAAWx2H,EAAM,IAAK6jD,EACrC,CACA,MAAM4yE,GACJ,WAAA/xI,CAAYgyI,GACVhwI,KAAKiwI,eAAYt4H,EACjB3X,KAAKkwI,gBAAkB,kBACvBlwI,KAAKmwI,YAAc,kBACnBnwI,KAAK8uI,MAAQ,OACb9uI,KAAKowI,SAAW,CAAC,EACjBpwI,KAAKqwI,iBAAoBhoH,GAAYA,EAAQioH,MAAM99G,SAAS+9G,sBAC5DvwI,KAAKkX,SAAW,CAAC,EACjBlX,KAAKyJ,OAAS,CACZ,YACA,WACA,QACA,aACA,aAEFzJ,KAAKwwI,KAAO,CACVC,OAAQ,qDACR7oI,KAAM,GACN0L,MAAO,SACPo9H,WAAY,IACZ3B,OAAQ,MAEV/uI,KAAK2wI,MAAQ,CAAC,EACd3wI,KAAK4wI,qBAAuB,CAACtiE,EAAKjuE,IAAYuvI,GAAcvvI,EAAQ6vI,iBACpElwI,KAAK6wI,iBAAmB,CAACviE,EAAKjuE,IAAYuvI,GAAcvvI,EAAQ8vI,aAChEnwI,KAAK8wI,WAAa,CAACxiE,EAAKjuE,IAAYuvI,GAAcvvI,EAAQyuI,OAC1D9uI,KAAK+wI,UAAY,IACjB/wI,KAAKgxI,YAAc,CACjB37D,KAAM,UACN47D,WAAW,EACXC,kBAAkB,GAEpBlxI,KAAKmxI,qBAAsB,EAC3BnxI,KAAKoxI,QAAU,KACfpxI,KAAK0tC,QAAU,KACf1tC,KAAKqxI,SAAU,EACfrxI,KAAKsxI,QAAU,CAAC,EAChBtxI,KAAKuxI,YAAa,EAClBvxI,KAAK++C,WAAQpnC,EACb3X,KAAKwxI,OAAS,CAAC,EACfxxI,KAAKyxI,UAAW,EAChBzxI,KAAK0xI,yBAA0B,EAC/B1xI,KAAK2xI,SAAS3B,EAChB,CACA,GAAAtsI,CAAIy5D,EAAOvzD,GACT,OAAOlG,GAAI1D,KAAMm9D,EAAOvzD,EAC1B,CACA,GAAAzC,CAAIg2D,GACF,OAAO2yE,GAAW9vI,KAAMm9D,EAC1B,CACA,QAAAw0E,CAASx0E,EAAOvzD,GACd,OAAOlG,GAAImsI,GAAa1yE,EAAOvzD,EACjC,CACA,QAAAgoI,CAASz0E,EAAOvzD,GACd,OAAOlG,GAAI6vB,GAAW4pC,EAAOvzD,EAC/B,CACA,KAAAioI,CAAM10E,EAAOr7D,EAAMgwI,EAAaC,GAC9B,MAAMC,EAAclC,GAAW9vI,KAAMm9D,GAC/B80E,EAAoBnC,GAAW9vI,KAAM8xI,GACrCI,EAAc,IAAMpwI,EAC1BpD,OAAOyzI,iBAAiBH,EAAa,CACnC,CAACE,GAAc,CACbn1I,MAAOi1I,EAAYlwI,GACnBulB,UAAU,GAEZ,CAACvlB,GAAO,CACNslB,YAAY,EACZ,GAAAjgB,GACE,MAAMirI,EAAQpyI,KAAKkyI,GACb7oI,EAAS4oI,EAAkBF,GACjC,OAAI1uH,EAAS+uH,GACJ1zI,OAAO02B,OAAO,CAAC,EAAG/rB,EAAQ+oI,GAE5Blb,EAAekb,EAAO/oI,EAC/B,EACA,GAAA3F,CAAI3G,GACFiD,KAAKkyI,GAAen1I,CACtB,IAGN,EAEF,IAAIk2C,GAAW,IAAI88F,GAAS,CAC1BsC,YAAcvwI,IAAUA,EAAK0J,WAAW,MACxC8mI,WAAaxwI,GAAkB,WAATA,EACtB6uI,MAAO,CACL4B,UAAW,eAEbvB,YAAa,CACXqB,aAAa,EACbC,YAAY,KAIhB,SAASE,GAAahC,GACpB,OAAKA,GAAQzZ,EAAcyZ,EAAK5oI,OAASmvH,EAAcyZ,EAAKC,QACnD,MAEDD,EAAKl9H,MAAQk9H,EAAKl9H,MAAQ,IAAM,KACrCk9H,EAAKzB,OAASyB,EAAKzB,OAAS,IAAM,IACnCyB,EAAK5oI,KAAO,MACZ4oI,EAAKC,MACT,CACA,SAASgC,GAAankE,EAAK7mE,EAAMirI,EAAIC,EAASx1H,GAC5C,IAAIy1H,EAAYnrI,EAAK0V,GAQrB,OAPKy1H,IACHA,EAAYnrI,EAAK0V,GAAUmxD,EAAIukE,YAAY11H,GAAQvB,MACnD82H,EAAGxwI,KAAKib,IAENy1H,EAAYD,IACdA,EAAUC,GAELD,CACT,CACA,SAASG,GAAaxkE,EAAKkiE,EAAMuC,EAAex8F,GAC9CA,EAAQA,GAAS,CAAC,EAClB,IAAI9uC,EAAO8uC,EAAM9uC,KAAO8uC,EAAM9uC,MAAQ,CAAC,EACnCirI,EAAKn8F,EAAMy8F,eAAiBz8F,EAAMy8F,gBAAkB,GACpDz8F,EAAMi6F,OAASA,IACjB/oI,EAAO8uC,EAAM9uC,KAAO,CAAC,EACrBirI,EAAKn8F,EAAMy8F,eAAiB,GAC5Bz8F,EAAMi6F,KAAOA,GAEfliE,EAAI2kE,OACJ3kE,EAAIkiE,KAAOA,EACX,IAAImC,EAAU,EACd,MAAMhb,EAAOob,EAAc90I,OAC3B,IAAIC,EAAG4sB,EAAGooH,EAAMC,EAAOC,EACvB,IAAKl1I,EAAI,EAAGA,EAAIy5H,EAAMz5H,IAEpB,GADAi1I,EAAQJ,EAAc70I,QACRyZ,IAAVw7H,GAAiC,OAAVA,IAAqC,IAAnB90I,EAAQ80I,GACnDR,EAAUF,GAAankE,EAAK7mE,EAAMirI,EAAIC,EAASQ,QAC1C,GAAI90I,EAAQ80I,GACjB,IAAKroH,EAAI,EAAGooH,EAAOC,EAAMl1I,OAAQ6sB,EAAIooH,EAAMpoH,IACzCsoH,EAAcD,EAAMroH,QACAnT,IAAhBy7H,GAA6C,OAAhBA,GAAyB/0I,EAAQ+0I,KAChET,EAAUF,GAAankE,EAAK7mE,EAAMirI,EAAIC,EAASS,IAKvD9kE,EAAI+kE,UACJ,MAAMC,EAAQZ,EAAGz0I,OAAS,EAC1B,GAAIq1I,EAAQP,EAAc90I,OAAQ,CAChC,IAAKC,EAAI,EAAGA,EAAIo1I,EAAOp1I,WACduJ,EAAKirI,EAAGx0I,IAEjBw0I,EAAGpnH,OAAO,EAAGgoH,EACf,CACA,OAAOX,CACT,CACA,SAASY,GAAYjD,EAAOkD,EAAO53H,GACjC,MAAMy0H,EAAmBC,EAAMmD,wBACzBC,EAAsB,IAAV93H,EAAc3W,KAAKiW,IAAIU,EAAQ,EAAG,IAAO,EAC3D,OAAO3W,KAAK6kD,OAAO0pF,EAAQE,GAAarD,GAAoBA,EAAmBqD,CACjF,CACA,SAASC,GAAYC,EAAQtlE,GAC3BA,EAAMA,GAAOslE,EAAO/tD,WAAW,MAC/BvX,EAAI2kE,OACJ3kE,EAAIulE,iBACJvlE,EAAIwlE,UAAU,EAAG,EAAGF,EAAOh4H,MAAOg4H,EAAO9gH,QACzCw7C,EAAI+kE,SACN,CACA,SAASU,GAAUzlE,EAAKjuE,EAAS0gC,EAAGC,GAClCgzG,GAAgB1lE,EAAKjuE,EAAS0gC,EAAGC,EAAG,KACtC,CACA,SAASgzG,GAAgB1lE,EAAKjuE,EAAS0gC,EAAGC,EAAGwhG,GAC3C,IAAIx5H,EAAMirI,EAASC,EAAStsI,EAAMusI,EAAcv4H,EAChD,MAAMtI,EAAQjT,EAAQ+zI,WAChBC,EAAWh0I,EAAQg0I,SACnBC,EAASj0I,EAAQi0I,OACvB,IAAIC,GAAOF,GAAY,GAAKhb,EAC5B,GAAI/lH,GAA0B,kBAAVA,IAClBtK,EAAOsK,EAAM1U,WACA,8BAAToK,GAAiD,+BAATA,GAM1C,OALAslE,EAAI2kE,OACJ3kE,EAAI3wC,UAAUoD,EAAGC,GACjBstC,EAAI3d,OAAO4jF,GACXjmE,EAAIkmE,UAAUlhI,GAAQA,EAAMsI,MAAQ,GAAItI,EAAMwf,OAAS,EAAGxf,EAAMsI,MAAOtI,EAAMwf,aAC7Ew7C,EAAI+kE,UAIR,KAAI37G,MAAM48G,IAAWA,GAAU,GAA/B,CAIA,OADAhmE,EAAImmE,YACInhI,GACR,QACMkvH,EACFl0D,EAAIomE,QAAQ3zG,EAAGC,EAAGwhG,EAAI,EAAG8R,EAAQ,EAAG,EAAGpb,GAEvC5qD,EAAIqmE,IAAI5zG,EAAGC,EAAGszG,EAAQ,EAAGpb,GAE3B5qD,EAAIsmE,YACJ,MACF,IAAK,WACHtmE,EAAIumE,OAAO9zG,EAAI97B,KAAKkrD,IAAIokF,GAAOD,EAAQtzG,EAAI/7B,KAAKmrD,IAAImkF,GAAOD,GAC3DC,GAAO/a,EACPlrD,EAAIwmE,OAAO/zG,EAAI97B,KAAKkrD,IAAIokF,GAAOD,EAAQtzG,EAAI/7B,KAAKmrD,IAAImkF,GAAOD,GAC3DC,GAAO/a,EACPlrD,EAAIwmE,OAAO/zG,EAAI97B,KAAKkrD,IAAIokF,GAAOD,EAAQtzG,EAAI/7B,KAAKmrD,IAAImkF,GAAOD,GAC3DhmE,EAAIsmE,YACJ,MACF,IAAK,cACHT,EAAwB,KAATG,EACf1sI,EAAO0sI,EAASH,EAChBF,EAAUhvI,KAAKmrD,IAAImkF,EAAMhb,GAAc3xH,EACvCssI,EAAUjvI,KAAKkrD,IAAIokF,EAAMhb,GAAc3xH,EACvC0mE,EAAIqmE,IAAI5zG,EAAIkzG,EAASjzG,EAAIkzG,EAASC,EAAcI,EAAM1qG,EAAI0qG,EAAMjb,GAChEhrD,EAAIqmE,IAAI5zG,EAAImzG,EAASlzG,EAAIizG,EAASE,EAAcI,EAAMjb,EAASib,GAC/DjmE,EAAIqmE,IAAI5zG,EAAIkzG,EAASjzG,EAAIkzG,EAASC,EAAcI,EAAKA,EAAMjb,GAC3DhrD,EAAIqmE,IAAI5zG,EAAImzG,EAASlzG,EAAIizG,EAASE,EAAcI,EAAMjb,EAASib,EAAM1qG,GACrEykC,EAAIsmE,YACJ,MACF,IAAK,OACH,IAAKP,EAAU,CACbzsI,EAAO3C,KAAK8vI,QAAUT,EACtB14H,EAAQ4mH,EAAIA,EAAI,EAAI56H,EACpB0mE,EAAI0mE,KAAKj0G,EAAInlB,EAAOolB,EAAIp5B,EAAM,EAAIgU,EAAO,EAAIhU,GAC7C,KACF,CACA2sI,GAAOhb,EACT,IAAK,UACH0a,EAAUhvI,KAAKmrD,IAAImkF,GAAOD,EAC1BJ,EAAUjvI,KAAKkrD,IAAIokF,GAAOD,EAC1BhmE,EAAIumE,OAAO9zG,EAAIkzG,EAASjzG,EAAIkzG,GAC5B5lE,EAAIwmE,OAAO/zG,EAAImzG,EAASlzG,EAAIizG,GAC5B3lE,EAAIwmE,OAAO/zG,EAAIkzG,EAASjzG,EAAIkzG,GAC5B5lE,EAAIwmE,OAAO/zG,EAAImzG,EAASlzG,EAAIizG,GAC5B3lE,EAAIsmE,YACJ,MACF,IAAK,WACHL,GAAOhb,EACT,IAAK,QACH0a,EAAUhvI,KAAKmrD,IAAImkF,GAAOD,EAC1BJ,EAAUjvI,KAAKkrD,IAAIokF,GAAOD,EAC1BhmE,EAAIumE,OAAO9zG,EAAIkzG,EAASjzG,EAAIkzG,GAC5B5lE,EAAIwmE,OAAO/zG,EAAIkzG,EAASjzG,EAAIkzG,GAC5B5lE,EAAIumE,OAAO9zG,EAAImzG,EAASlzG,EAAIizG,GAC5B3lE,EAAIwmE,OAAO/zG,EAAImzG,EAASlzG,EAAIizG,GAC5B,MACF,IAAK,OACHA,EAAUhvI,KAAKmrD,IAAImkF,GAAOD,EAC1BJ,EAAUjvI,KAAKkrD,IAAIokF,GAAOD,EAC1BhmE,EAAIumE,OAAO9zG,EAAIkzG,EAASjzG,EAAIkzG,GAC5B5lE,EAAIwmE,OAAO/zG,EAAIkzG,EAASjzG,EAAIkzG,GAC5B5lE,EAAIumE,OAAO9zG,EAAImzG,EAASlzG,EAAIizG,GAC5B3lE,EAAIwmE,OAAO/zG,EAAImzG,EAASlzG,EAAIizG,GAC5BM,GAAOhb,EACP0a,EAAUhvI,KAAKmrD,IAAImkF,GAAOD,EAC1BJ,EAAUjvI,KAAKkrD,IAAIokF,GAAOD,EAC1BhmE,EAAIumE,OAAO9zG,EAAIkzG,EAASjzG,EAAIkzG,GAC5B5lE,EAAIwmE,OAAO/zG,EAAIkzG,EAASjzG,EAAIkzG,GAC5B5lE,EAAIumE,OAAO9zG,EAAImzG,EAASlzG,EAAIizG,GAC5B3lE,EAAIwmE,OAAO/zG,EAAImzG,EAASlzG,EAAIizG,GAC5B,MACF,IAAK,OACHA,EAAUzR,EAAIA,EAAI,EAAIv9H,KAAKmrD,IAAImkF,GAAOD,EACtCJ,EAAUjvI,KAAKkrD,IAAIokF,GAAOD,EAC1BhmE,EAAIumE,OAAO9zG,EAAIkzG,EAASjzG,EAAIkzG,GAC5B5lE,EAAIwmE,OAAO/zG,EAAIkzG,EAASjzG,EAAIkzG,GAC5B,MACF,IAAK,OACH5lE,EAAIumE,OAAO9zG,EAAGC,GACdstC,EAAIwmE,OAAO/zG,EAAI97B,KAAKmrD,IAAImkF,GAAOD,EAAQtzG,EAAI/7B,KAAKkrD,IAAIokF,GAAOD,GAC3D,MAEFhmE,EAAIwK,OACAz4E,EAAQ40I,YAAc,GACxB3mE,EAAI4mE,QArFN,CAuFF,CACA,SAASC,GAAejlG,EAAOklG,EAAMC,GAEnC,OADAA,EAASA,GAAU,IACXD,GAASllG,GAASA,EAAMnP,EAAIq0G,EAAKxoH,KAAOyoH,GAAUnlG,EAAMnP,EAAIq0G,EAAK/nC,MAAQgoC,GACjFnlG,EAAMlP,EAAIo0G,EAAKzoH,IAAM0oH,GAAUnlG,EAAMlP,EAAIo0G,EAAKE,OAASD,CACzD,CACA,SAASE,GAASjnE,EAAK8mE,GACrB9mE,EAAI2kE,OACJ3kE,EAAImmE,YACJnmE,EAAI0mE,KAAKI,EAAKxoH,KAAMwoH,EAAKzoH,IAAKyoH,EAAK/nC,MAAQ+nC,EAAKxoH,KAAMwoH,EAAKE,OAASF,EAAKzoH,KACzE2hD,EAAIknE,MACN,CACA,SAASC,GAAWnnE,GAClBA,EAAI+kE,SACN,CACA,SAASqC,GAAepnE,EAAKh/D,EAAUjG,EAAQssI,EAAMtgE,GACnD,IAAK/lE,EACH,OAAOg/D,EAAIwmE,OAAOzrI,EAAO03B,EAAG13B,EAAO23B,GAErC,GAAa,WAATq0C,EAAmB,CACrB,MAAMugE,GAAYtmI,EAASyxB,EAAI13B,EAAO03B,GAAK,EAC3CutC,EAAIwmE,OAAOc,EAAUtmI,EAAS0xB,GAC9BstC,EAAIwmE,OAAOc,EAAUvsI,EAAO23B,EAC9B,KAAoB,UAATq0C,MAAuBsgE,EAChCrnE,EAAIwmE,OAAOxlI,EAASyxB,EAAG13B,EAAO23B,GAE9BstC,EAAIwmE,OAAOzrI,EAAO03B,EAAGzxB,EAAS0xB,GAEhCstC,EAAIwmE,OAAOzrI,EAAO03B,EAAG13B,EAAO23B,EAC9B,CACA,SAAS60G,GAAevnE,EAAKh/D,EAAUjG,EAAQssI,GAC7C,IAAKrmI,EACH,OAAOg/D,EAAIwmE,OAAOzrI,EAAO03B,EAAG13B,EAAO23B,GAErCstC,EAAIwnE,cACFH,EAAOrmI,EAASymI,KAAOzmI,EAAS0mI,KAChCL,EAAOrmI,EAAS2mI,KAAO3mI,EAAS4mI,KAChCP,EAAOtsI,EAAO2sI,KAAO3sI,EAAO0sI,KAC5BJ,EAAOtsI,EAAO6sI,KAAO7sI,EAAO4sI,KAC5B5sI,EAAO03B,EACP13B,EAAO23B,EACX,CACA,SAASm1G,GAAW7nE,EAAKthD,EAAM+T,EAAGC,EAAGwvG,EAAMt+G,EAAO,CAAC,GACjD,MAAMkkH,EAAQ/3I,EAAQ2uB,GAAQA,EAAO,CAACA,GAChCkoH,EAAShjH,EAAKmkH,YAAc,GAA0B,KAArBnkH,EAAKokH,YAC5C,IAAIp4I,EAAGszG,EAIP,IAHAljC,EAAI2kE,OACJ3kE,EAAIkiE,KAAOA,EAAKrzH,OAChBo5H,GAAcjoE,EAAKp8C,GACdh0B,EAAI,EAAGA,EAAIk4I,EAAMn4I,SAAUC,EAC9BszG,EAAO4kC,EAAMl4I,GACTg3I,IACEhjH,EAAKokH,cACPhoE,EAAIkoE,YAActkH,EAAKokH,aAEpBvf,EAAc7kG,EAAKmkH,eACtB/nE,EAAImoE,UAAYvkH,EAAKmkH,aAEvB/nE,EAAIooE,WAAWllC,EAAMzwE,EAAGC,EAAG9O,EAAKykH,WAElCroE,EAAIsoE,SAASplC,EAAMzwE,EAAGC,EAAG9O,EAAKykH,UAC9BE,GAAavoE,EAAKvtC,EAAGC,EAAGwwE,EAAMt/E,GAC9B8O,GAAKwvG,EAAKE,WAEZpiE,EAAI+kE,SACN,CACA,SAASkD,GAAcjoE,EAAKp8C,GACtBA,EAAK4kH,aACPxoE,EAAI3wC,UAAUzL,EAAK4kH,YAAY,GAAI5kH,EAAK4kH,YAAY,IAEjD/f,EAAc7kG,EAAKmiH,WACtB/lE,EAAI3d,OAAOz+B,EAAKmiH,UAEdniH,EAAK48G,QACPxgE,EAAIyoE,UAAY7kH,EAAK48G,OAEnB58G,EAAK8kH,YACP1oE,EAAI0oE,UAAY9kH,EAAK8kH,WAEnB9kH,EAAK+kH,eACP3oE,EAAI2oE,aAAe/kH,EAAK+kH,aAE5B,CACA,SAASJ,GAAavoE,EAAKvtC,EAAGC,EAAGwwE,EAAMt/E,GACrC,GAAIA,EAAKglH,eAAiBhlH,EAAKilH,UAAW,CACxC,MAAMC,EAAU9oE,EAAIukE,YAAYrhC,GAC1B5kF,EAAOmU,EAAIq2G,EAAQC,sBACnBhqC,EAAQtsE,EAAIq2G,EAAQE,uBACpB3qH,EAAMqU,EAAIo2G,EAAQG,wBAClBjC,EAASt0G,EAAIo2G,EAAQI,yBACrBC,EAAcvlH,EAAKglH,eAAiBvqH,EAAM2oH,GAAU,EAAIA,EAC9DhnE,EAAIkoE,YAAcloE,EAAIyoE,UACtBzoE,EAAImmE,YACJnmE,EAAImoE,UAAYvkH,EAAKwlH,iBAAmB,EACxCppE,EAAIumE,OAAOjoH,EAAM6qH,GACjBnpE,EAAIwmE,OAAOznC,EAAOoqC,GAClBnpE,EAAI4mE,QACN,CACF,CACA,SAASyC,GAAmBrpE,EAAK0mE,GAC/B,MAAM,EAACj0G,EAAC,EAAEC,EAAC,EAAEwhG,EAAC,EAAE7/H,EAAC,OAAE2xI,GAAUU,EAC7B1mE,EAAIqmE,IAAI5zG,EAAIuzG,EAAOsD,QAAS52G,EAAIszG,EAAOsD,QAAStD,EAAOsD,SAAUte,EAASzvF,GAAI,GAC9EykC,EAAIwmE,OAAO/zG,EAAGC,EAAIr+B,EAAI2xI,EAAOuD,YAC7BvpE,EAAIqmE,IAAI5zG,EAAIuzG,EAAOuD,WAAY72G,EAAIr+B,EAAI2xI,EAAOuD,WAAYvD,EAAOuD,WAAYhuG,EAAIyvF,GAAS,GAC1FhrD,EAAIwmE,OAAO/zG,EAAIyhG,EAAI8R,EAAOwD,YAAa92G,EAAIr+B,GAC3C2rE,EAAIqmE,IAAI5zG,EAAIyhG,EAAI8R,EAAOwD,YAAa92G,EAAIr+B,EAAI2xI,EAAOwD,YAAaxD,EAAOwD,YAAaxe,EAAS,GAAG,GAChGhrD,EAAIwmE,OAAO/zG,EAAIyhG,EAAGxhG,EAAIszG,EAAOyD,UAC7BzpE,EAAIqmE,IAAI5zG,EAAIyhG,EAAI8R,EAAOyD,SAAU/2G,EAAIszG,EAAOyD,SAAUzD,EAAOyD,SAAU,GAAIze,GAAS,GACpFhrD,EAAIwmE,OAAO/zG,EAAIuzG,EAAOsD,QAAS52G,EACjC,CAEA,MAAMiY,GAAc,IAAI36C,OAAO,wCACzB05I,GAAa,IAAI15I,OAAO,yEAC9B,SAAS25I,GAAal7I,EAAO6K,GAC3B,MAAMqH,GAAW,GAAKlS,GAAO0a,MAAMwhC,IACnC,IAAKhqC,GAA0B,WAAfA,EAAQ,GACtB,OAAc,IAAPrH,EAGT,OADA7K,GAASkS,EAAQ,GACTA,EAAQ,IAChB,IAAK,KACH,OAAOlS,EACT,IAAK,IACHA,GAAS,IACT,MAEF,OAAO6K,EAAO7K,CAChB,CACA,MAAMm7I,GAAe11I,IAAMA,GAAK,EAChC,SAAS21I,GAAkBp7I,EAAO+vB,GAChC,MAAM0tC,EAAM,CAAC,EACP49E,EAAW/0H,EAASyJ,GACpB3uB,EAAOi6I,EAAW15I,OAAOP,KAAK2uB,GAASA,EACvCurH,EAAOh1H,EAAStmB,GAClBq7I,EACE9qD,GAAQ4pC,EAAen6H,EAAMuwF,GAAOvwF,EAAM+vB,EAAMwgE,KAChDA,GAAQvwF,EAAMuwF,GAChB,IAAMvwF,EACV,IAAK,MAAMuwF,KAAQnvF,EACjBq8D,EAAI8yB,GAAQ4qD,GAAaG,EAAK/qD,IAEhC,OAAO9yB,CACT,CACA,SAAS89E,GAAOv7I,GACd,OAAOo7I,GAAkBp7I,EAAO,CAAC4vB,IAAK,IAAK0gF,MAAO,IAAKioC,OAAQ,IAAK1oH,KAAM,KAC5E,CACA,SAAS2rH,GAAcx7I,GACrB,OAAOo7I,GAAkBp7I,EAAO,CAAC,UAAW,WAAY,aAAc,eACxE,CACA,SAASy7I,GAAUz7I,GACjB,MAAM6P,EAAM0rI,GAAOv7I,GAGnB,OAFA6P,EAAIgP,MAAQhP,EAAIggB,KAAOhgB,EAAIygG,MAC3BzgG,EAAIkmB,OAASlmB,EAAI+f,IAAM/f,EAAI0oI,OACpB1oI,CACT,CACA,SAAS6rI,GAAOp4I,EAASs0E,GACvBt0E,EAAUA,GAAW,CAAC,EACtBs0E,EAAWA,GAAY1hC,GAASu9F,KAChC,IAAI5oI,EAAOsvH,EAAe72H,EAAQuH,KAAM+sE,EAAS/sE,MAC7B,kBAATA,IACTA,EAAO6vB,SAAS7vB,EAAM,KAExB,IAAI0L,EAAQ4jH,EAAe72H,EAAQiT,MAAOqhE,EAASrhE,OAC/CA,KAAW,GAAKA,GAAOmE,MAAMugI,MAC/B7zI,QAAQC,KAAK,kCAAoCkP,EAAQ,KACzDA,EAAQ,IAEV,MAAMk9H,EAAO,CACXC,OAAQvZ,EAAe72H,EAAQowI,OAAQ97D,EAAS87D,QAChDC,WAAYuH,GAAa/gB,EAAe72H,EAAQqwI,WAAY/7D,EAAS+7D,YAAa9oI,GAClFA,OACA0L,QACAy7H,OAAQ7X,EAAe72H,EAAQ0uI,OAAQp6D,EAASo6D,QAChD5xH,OAAQ,IAGV,OADAqzH,EAAKrzH,OAASq1H,GAAahC,GACpBA,CACT,CACA,SAASxzI,GAAQ07I,EAAQrwH,EAASrN,EAAO29H,GACvC,IACIz6I,EAAGy5H,EAAM56H,EADT67I,GAAY,EAEhB,IAAK16I,EAAI,EAAGy5H,EAAO+gB,EAAOz6I,OAAQC,EAAIy5H,IAAQz5H,EAE5C,GADAnB,EAAQ27I,EAAOx6I,QACDyZ,IAAV5a,SAGY4a,IAAZ0Q,GAA0C,oBAAVtrB,IAClCA,EAAQA,EAAMsrB,GACduwH,GAAY,QAEAjhI,IAAVqD,GAAuB3c,EAAQtB,KACjCA,EAAQA,EAAMie,EAAQje,EAAMkB,QAC5B26I,GAAY,QAEAjhI,IAAV5a,GAIF,OAHI47I,IAASC,IACXD,EAAKC,WAAY,GAEZ77I,CAGb,CACA,SAAS87I,GAAUC,EAAQC,EAAOC,GAChC,MAAM,IAAC79H,EAAG,IAAED,GAAO49H,EACbG,EAAS5hB,EAAY0hB,GAAQ79H,EAAMC,GAAO,GAC1C+9H,EAAW,CAACn8I,EAAOsH,IAAQ20I,GAAyB,IAAVj8I,EAAc,EAAIA,EAAQsH,EAC1E,MAAO,CACL8W,IAAK+9H,EAAS/9H,GAAMlW,KAAKyW,IAAIu9H,IAC7B/9H,IAAKg+H,EAASh+H,EAAK+9H,GAEvB,CACA,SAASE,GAAcC,EAAe/wH,GACpC,OAAO3pB,OAAO02B,OAAO12B,OAAOqnB,OAAOqzH,GAAgB/wH,EACrD,CAEA,SAASgxH,GAAgBz8E,EAAQkpC,EAAW,CAAC,IAAKwzC,EAAa18E,EAAQ+X,EAAU4kE,EAAY,IAAM38E,EAAO,IACnGm8D,EAAQpkD,KACXA,EAAW6kE,GAAS,YAAa58E,IAEnC,MAAMrmB,EAAQ,CACZ,CAACzgC,OAAOC,aAAc,SACtBiwD,YAAY,EACZyzE,QAAS78E,EACT88E,YAAaJ,EACb/G,UAAW59D,EACXglE,WAAYJ,EACZ3H,SAAWz0E,GAAUk8E,GAAgB,CAACl8E,KAAUP,GAASkpC,EAAUwzC,EAAY3kE,IAEjF,OAAO,IAAIjuD,MAAM6vB,EAAO,CACtB,cAAAwrB,CAAe14D,EAAQikF,GAIrB,cAHOjkF,EAAOikF,UACPjkF,EAAOuwI,aACPh9E,EAAO,GAAG0wB,IACV,CACT,EACA,GAAAnmF,CAAIkC,EAAQikF,GACV,OAAOusD,GAAQxwI,EAAQikF,GACrB,IAAMwsD,GAAqBxsD,EAAMwY,EAAUlpC,EAAQvzD,IACvD,EACA,wBAAAunB,CAAyBvnB,EAAQikF,GAC/B,OAAO/mE,QAAQqK,yBAAyBvnB,EAAOowI,QAAQ,GAAInsD,EAC7D,EACA,cAAAlnE,GACE,OAAOG,QAAQH,eAAew2C,EAAO,GACvC,EACA,GAAAl1D,CAAI2B,EAAQikF,GACV,OAAOysD,GAAqB1wI,GAAQ8B,SAASmiF,EAC/C,EACA,OAAAtrB,CAAQ34D,GACN,OAAO0wI,GAAqB1wI,EAC9B,EACA,GAAA3F,CAAI2F,EAAQikF,EAAMvwF,GAChB,MAAMi9I,EAAU3wI,EAAO4wI,WAAa5wI,EAAO4wI,SAAWV,KAGtD,OAFAlwI,EAAOikF,GAAQ0sD,EAAQ1sD,GAAQvwF,SACxBsM,EAAOuwI,OACP,CACT,GAEJ,CACA,SAASM,GAAe50E,EAAOj9C,EAAS8xH,EAAUC,GAChD,MAAM7jG,EAAQ,CACZyvB,YAAY,EACZq0E,OAAQ/0E,EACR4lB,SAAU7iE,EACViyH,UAAWH,EACXI,OAAQ,IAAIn3I,IACZ4sI,aAAcA,GAAa1qE,EAAO80E,GAClCI,WAAalsE,GAAQ4rE,GAAe50E,EAAOgJ,EAAK6rE,EAAUC,GAC1DxI,SAAWz0E,GAAU+8E,GAAe50E,EAAMssE,SAASz0E,GAAQ90C,EAAS8xH,EAAUC,IAEhF,OAAO,IAAI1zH,MAAM6vB,EAAO,CACtB,cAAAwrB,CAAe14D,EAAQikF,GAGrB,cAFOjkF,EAAOikF,UACPhoB,EAAMgoB,IACN,CACT,EACA,GAAAnmF,CAAIkC,EAAQikF,EAAMvsB,GAChB,OAAO84E,GAAQxwI,EAAQikF,GACrB,IAAMmtD,GAAoBpxI,EAAQikF,EAAMvsB,IAC5C,EACA,wBAAAnwC,CAAyBvnB,EAAQikF,GAC/B,OAAOjkF,EAAO2mI,aAAa0K,QACvBn0H,QAAQ7e,IAAI49D,EAAOgoB,GAAQ,CAAClmE,YAAY,EAAMpa,cAAc,QAAQ2K,EACpE4O,QAAQqK,yBAAyB00C,EAAOgoB,EAC9C,EACA,cAAAlnE,GACE,OAAOG,QAAQH,eAAek/C,EAChC,EACA,GAAA59D,CAAI2B,EAAQikF,GACV,OAAO/mE,QAAQ7e,IAAI49D,EAAOgoB,EAC5B,EACA,OAAAtrB,GACE,OAAOz7C,QAAQy7C,QAAQsD,EACzB,EACA,GAAA5hE,CAAI2F,EAAQikF,EAAMvwF,GAGhB,OAFAuoE,EAAMgoB,GAAQvwF,SACPsM,EAAOikF,IACP,CACT,GAEJ,CACA,SAAS0iD,GAAa1qE,EAAOryB,EAAW,CAAC0nG,YAAY,EAAMC,WAAW,IACpE,MAAM,YAACvI,EAAcp/F,EAAS0nG,WAAU,WAAErI,EAAar/F,EAAS2nG,UAAS,SAAEC,EAAW5nG,EAASynG,SAAWp1E,EAC1G,MAAO,CACLo1E,QAASG,EACTF,WAAYtI,EACZuI,UAAWtI,EACXwI,aAAcviF,EAAW85E,GAAeA,EAAc,IAAMA,EAC5D0I,YAAaxiF,EAAW+5E,GAAcA,EAAa,IAAMA,EAE7D,CACA,MAAM0I,GAAU,CAACnjI,EAAQ/V,IAAS+V,EAASA,EAASihH,EAAYh3H,GAAQA,EAClEm5I,GAAmB,CAAC3tD,EAAMvwF,IAAUsmB,EAAStmB,IAAmB,aAATuwF,IACzB,OAAjC5uF,OAAO0nB,eAAerpB,IAAmBA,EAAMiB,cAAgBU,QAClE,SAASm7I,GAAQxwI,EAAQikF,EAAMtwF,GAC7B,GAAI0B,OAAOC,UAAUE,eAAeC,KAAKuK,EAAQikF,GAC/C,OAAOjkF,EAAOikF,GAEhB,MAAMvwF,EAAQC,IAEd,OADAqM,EAAOikF,GAAQvwF,EACRA,CACT,CACA,SAAS09I,GAAoBpxI,EAAQikF,EAAMvsB,GACzC,MAAM,OAACs5E,EAAM,SAAEnvD,EAAQ,UAAEovD,EAAWtK,aAAcH,GAAexmI,EACjE,IAAItM,EAAQs9I,EAAO/sD,GAUnB,OATI/0B,EAAWx7D,IAAU8yI,EAAYiL,aAAaxtD,KAChDvwF,EAAQm+I,GAAmB5tD,EAAMvwF,EAAOsM,EAAQ03D,IAE9C1iE,EAAQtB,IAAUA,EAAMkB,SAC1BlB,EAAQo+I,GAAc7tD,EAAMvwF,EAAOsM,EAAQwmI,EAAYkL,cAErDE,GAAiB3tD,EAAMvwF,KACzBA,EAAQm9I,GAAen9I,EAAOmuF,EAAUovD,GAAaA,EAAUhtD,GAAOuiD,IAEjE9yI,CACT,CACA,SAASm+I,GAAmB5tD,EAAMvwF,EAAOsM,EAAQ03D,GAC/C,MAAM,OAACs5E,EAAM,SAAEnvD,EAAQ,UAAEovD,EAAS,OAAEC,GAAUlxI,EAC9C,GAAIkxI,EAAO7yI,IAAI4lF,GACb,MAAM,IAAIhtF,MAAM,uBAAyBlC,MAAMyJ,KAAK0yI,GAAQv5I,KAAK,MAAQ,KAAOssF,GAQlF,OANAitD,EAAOl2I,IAAIipF,GACXvwF,EAAQA,EAAMmuF,EAAUovD,GAAav5E,GACrCw5E,EAAOzyI,OAAOwlF,GACV2tD,GAAiB3tD,EAAMvwF,KACzBA,EAAQq+I,GAAkBf,EAAOZ,QAASY,EAAQ/sD,EAAMvwF,IAEnDA,CACT,CACA,SAASo+I,GAAc7tD,EAAMvwF,EAAOsM,EAAQ0xI,GAC1C,MAAM,OAACV,EAAM,SAAEnvD,EAAQ,UAAEovD,EAAWtK,aAAcH,GAAexmI,EACjE,GAAI0vH,EAAQ7tC,EAASlwE,QAAU+/H,EAAYztD,GACzCvwF,EAAQA,EAAMmuF,EAASlwE,MAAQje,EAAMkB,aAChC,GAAIolB,EAAStmB,EAAM,IAAK,CAC7B,MAAMgrB,EAAMhrB,EACN6/D,EAASy9E,EAAOZ,QAAQzrI,QAAOsoD,GAAKA,IAAMvuC,IAChDhrB,EAAQ,GACR,IAAK,MAAM0zC,KAAQ1oB,EAAK,CACtB,MAAMggG,EAAWqzB,GAAkBx+E,EAAQy9E,EAAQ/sD,EAAM78C,GACzD1zC,EAAMmF,KAAKg4I,GAAenyB,EAAU78B,EAAUovD,GAAaA,EAAUhtD,GAAOuiD,GAC9E,CACF,CACA,OAAO9yI,CACT,CACA,SAASs+I,GAAgB1mE,EAAU2Y,EAAMvwF,GACvC,OAAOw7D,EAAWoc,GAAYA,EAAS2Y,EAAMvwF,GAAS43E,CACxD,CACA,MAAM2mE,GAAW,CAACv8I,EAAK+vB,KAAmB,IAAR/vB,EAAe+vB,EAC9B,kBAAR/vB,EAAmB25H,EAAiB5pG,EAAQ/vB,QAAO4Y,EAC9D,SAAS4jI,GAAU73I,EAAK83I,EAAcz8I,EAAK08I,EAAgB1+I,GACzD,IAAK,MAAM+xB,KAAU0sH,EAAc,CACjC,MAAMr+E,EAAQm+E,GAASv8I,EAAK+vB,GAC5B,GAAIquC,EAAO,CACTz5D,EAAIW,IAAI84D,GACR,MAAMwX,EAAW0mE,GAAgBl+E,EAAMo1E,UAAWxzI,EAAKhC,GACvD,GAAIg8H,EAAQpkD,IAAaA,IAAa51E,GAAO41E,IAAa8mE,EACxD,OAAO9mE,CAEX,MAAO,IAAc,IAAVxX,GAAmB47D,EAAQ0iB,IAAmB18I,IAAQ08I,EAC/D,OAAO,IAEX,CACA,OAAO,CACT,CACA,SAASL,GAAkBI,EAAczzB,EAAUz6B,EAAMvwF,GACvD,MAAMu8I,EAAavxB,EAAS2xB,YACtB/kE,EAAW0mE,GAAgBtzB,EAASwqB,UAAWjlD,EAAMvwF,GACrD2+I,EAAY,IAAIF,KAAiBlC,GACjC51I,EAAM,IAAIN,IAChBM,EAAIW,IAAItH,GACR,IAAIgC,EAAM48I,GAAiBj4I,EAAKg4I,EAAWpuD,EAAM3Y,GAAY2Y,EAAMvwF,GACnE,OAAY,OAARgC,MAGAg6H,EAAQpkD,IAAaA,IAAa2Y,IACpCvuF,EAAM48I,GAAiBj4I,EAAKg4I,EAAW/mE,EAAU51E,EAAKhC,GAC1C,OAARgC,KAICs6I,GAAgBj7I,MAAMyJ,KAAKnE,GAAM,CAAC,IAAK41I,EAAY3kE,GACxD,IAAMinE,GAAa7zB,EAAUz6B,EAAMvwF,KACvC,CACA,SAAS4+I,GAAiBj4I,EAAKg4I,EAAW38I,EAAK41E,EAAUlkC,GACvD,MAAO1xC,EACLA,EAAMw8I,GAAU73I,EAAKg4I,EAAW38I,EAAK41E,EAAUlkC,GAEjD,OAAO1xC,CACT,CACA,SAAS68I,GAAa7zB,EAAUz6B,EAAMvwF,GACpC,MAAM+xB,EAASi5F,EAAS4xB,aAClBrsD,KAAQx+D,IACZA,EAAOw+D,GAAQ,CAAC,GAElB,MAAMjkF,EAASylB,EAAOw+D,GACtB,OAAIjvF,EAAQgL,IAAWga,EAAStmB,GACvBA,EAEFsM,CACT,CACA,SAASywI,GAAqBxsD,EAAMwY,EAAUlpC,EAAQ0I,GACpD,IAAIvoE,EACJ,IAAK,MAAM8a,KAAUiuF,EAEnB,GADA/oG,EAAQy8I,GAASwB,GAAQnjI,EAAQy1E,GAAO1wB,GACpCm8D,EAAQh8H,GACV,OAAOk+I,GAAiB3tD,EAAMvwF,GAC1Bq+I,GAAkBx+E,EAAQ0I,EAAOgoB,EAAMvwF,GACvCA,CAGV,CACA,SAASy8I,GAASz6I,EAAK69D,GACrB,IAAK,MAAMO,KAASP,EAAQ,CAC1B,IAAKO,EACH,SAEF,MAAMpgE,EAAQogE,EAAMp+D,GACpB,GAAIg6H,EAAQh8H,GACV,OAAOA,CAEX,CACF,CACA,SAASg9I,GAAqB1wI,GAC5B,IAAIlL,EAAOkL,EAAOuwI,MAIlB,OAHKz7I,IACHA,EAAOkL,EAAOuwI,MAAQiC,GAAyBxyI,EAAOowI,UAEjDt7I,CACT,CACA,SAAS09I,GAAyBj/E,GAChC,MAAMl5D,EAAM,IAAIN,IAChB,IAAK,MAAM+5D,KAASP,EAClB,IAAK,MAAM79D,KAAOL,OAAOP,KAAKg/D,GAAOnvD,QAAOpL,IAAMA,EAAE4I,WAAW,OAC7D9H,EAAIW,IAAItF,GAGZ,OAAOX,MAAMyJ,KAAKnE,EACpB,CACA,SAASo4I,GAA4BjvI,EAAMpF,EAAMqW,EAAOinG,GACtD,MAAM,OAACkZ,GAAUpxH,GACX,IAAC9N,EAAM,KAAOiB,KAAK+7I,SACnBC,EAAS,IAAI59I,MAAM2mH,GACzB,IAAI7mH,EAAGy5H,EAAM38G,EAAOy1B,EACpB,IAAKvyC,EAAI,EAAGy5H,EAAO5S,EAAO7mH,EAAIy5H,IAAQz5H,EACpC8c,EAAQ9c,EAAI4f,EACZ2yB,EAAOhpC,EAAKuT,GACZghI,EAAO99I,GAAK,CACViF,EAAG86H,EAAO9wH,MAAMurH,EAAiBjoF,EAAM1xC,GAAMic,IAGjD,OAAOghI,CACT,CAEA,MAAMC,GAAU/uI,OAAO+uI,SAAW,MAC5BC,GAAW,CAACjsG,EAAQ/xC,IAAMA,EAAI+xC,EAAOhyC,SAAWgyC,EAAO/xC,GAAG+hC,MAAQgQ,EAAO/xC,GACzEi+I,GAAgBpL,GAA4B,MAAdA,EAAoB,IAAM,IAC9D,SAASqL,GAAYC,EAAYC,EAAaC,EAAY34I,GACxD,MAAM0L,EAAW+sI,EAAWp8G,KAAOq8G,EAAcD,EAC3C5oG,EAAU6oG,EACVj/I,EAAOk/I,EAAWt8G,KAAOq8G,EAAcC,EACvCC,EAAMrhB,EAAsB1nF,EAASnkC,GACrCmtI,EAAMthB,EAAsB99H,EAAMo2C,GACxC,IAAIipG,EAAMF,GAAOA,EAAMC,GACnBE,EAAMF,GAAOD,EAAMC,GACvBC,EAAMhlH,MAAMglH,GAAO,EAAIA,EACvBC,EAAMjlH,MAAMilH,GAAO,EAAIA,EACvB,MAAMC,EAAKh5I,EAAI84I,EACTG,EAAKj5I,EAAI+4I,EACf,MAAO,CACLrtI,SAAU,CACRyxB,EAAG0S,EAAQ1S,EAAI67G,GAAMv/I,EAAK0jC,EAAIzxB,EAASyxB,GACvCC,EAAGyS,EAAQzS,EAAI47G,GAAMv/I,EAAK2jC,EAAI1xB,EAAS0xB,IAEzC3jC,KAAM,CACJ0jC,EAAG0S,EAAQ1S,EAAI87G,GAAMx/I,EAAK0jC,EAAIzxB,EAASyxB,GACvCC,EAAGyS,EAAQzS,EAAI67G,GAAMx/I,EAAK2jC,EAAI1xB,EAAS0xB,IAG7C,CACA,SAAS87G,GAAe7sG,EAAQ8sG,EAAQC,GACtC,MAAMC,EAAYhtG,EAAOhyC,OACzB,IAAIi/I,EAAQC,EAAOC,EAAMC,EAAkBC,EACvCC,EAAarB,GAASjsG,EAAQ,GAClC,IAAK,IAAI/xC,EAAI,EAAGA,EAAI++I,EAAY,IAAK/+I,EACnCo/I,EAAeC,EACfA,EAAarB,GAASjsG,EAAQ/xC,EAAI,GAC7Bo/I,GAAiBC,IAGlB1jB,EAAakjB,EAAO7+I,GAAI,EAAG+9I,IAC7Be,EAAG9+I,GAAK8+I,EAAG9+I,EAAI,GAAK,GAGtBg/I,EAASF,EAAG9+I,GAAK6+I,EAAO7+I,GACxBi/I,EAAQH,EAAG9+I,EAAI,GAAK6+I,EAAO7+I,GAC3Bm/I,EAAmBp4I,KAAKC,IAAIg4I,EAAQ,GAAKj4I,KAAKC,IAAIi4I,EAAO,GACrDE,GAAoB,IAGxBD,EAAO,EAAIn4I,KAAKykC,KAAK2zG,GACrBL,EAAG9+I,GAAKg/I,EAASE,EAAOL,EAAO7+I,GAC/B8+I,EAAG9+I,EAAI,GAAKi/I,EAAQC,EAAOL,EAAO7+I,KAEtC,CACA,SAASs/I,GAAgBvtG,EAAQ+sG,EAAIjM,EAAY,KAC/C,MAAM0M,EAAYtB,GAAapL,GACzBkM,EAAYhtG,EAAOhyC,OACzB,IAAIu8C,EAAOkjG,EAAaJ,EACpBC,EAAarB,GAASjsG,EAAQ,GAClC,IAAK,IAAI/xC,EAAI,EAAGA,EAAI++I,IAAa/+I,EAAG,CAIlC,GAHAw/I,EAAcJ,EACdA,EAAeC,EACfA,EAAarB,GAASjsG,EAAQ/xC,EAAI,IAC7Bo/I,EACH,SAEF,MAAMK,EAASL,EAAavM,GACtB6M,EAASN,EAAaG,GACxBC,IACFljG,GAASmjG,EAASD,EAAY3M,IAAc,EAC5CuM,EAAa,MAAMvM,KAAe4M,EAASnjG,EAC3C8iG,EAAa,MAAMG,KAAeG,EAASpjG,EAAQwiG,EAAG9+I,IAEpDq/I,IACF/iG,GAAS+iG,EAAWxM,GAAa4M,GAAU,EAC3CL,EAAa,MAAMvM,KAAe4M,EAASnjG,EAC3C8iG,EAAa,MAAMG,KAAeG,EAASpjG,EAAQwiG,EAAG9+I,GAE1D,CACF,CACA,SAAS2/I,GAAoB5tG,EAAQ8gG,EAAY,KAC/C,MAAM0M,EAAYtB,GAAapL,GACzBkM,EAAYhtG,EAAOhyC,OACnB8+I,EAAS3+I,MAAM6+I,GAAWnkE,KAAK,GAC/BkkE,EAAK5+I,MAAM6+I,GACjB,IAAI/+I,EAAGw/I,EAAaJ,EAChBC,EAAarB,GAASjsG,EAAQ,GAClC,IAAK/xC,EAAI,EAAGA,EAAI++I,IAAa/+I,EAI3B,GAHAw/I,EAAcJ,EACdA,EAAeC,EACfA,EAAarB,GAASjsG,EAAQ/xC,EAAI,GAC7Bo/I,EAAL,CAGA,GAAIC,EAAY,CACd,MAAMO,EAAaP,EAAWxM,GAAauM,EAAavM,GACxDgM,EAAO7+I,GAAoB,IAAf4/I,GAAoBP,EAAWE,GAAaH,EAAaG,IAAcK,EAAa,CAClG,CACAd,EAAG9+I,GAAMw/I,EACJH,EACAxiG,EAAKgiG,EAAO7+I,EAAI,MAAQ68C,EAAKgiG,EAAO7+I,IAAO,GAC3C6+I,EAAO7+I,EAAI,GAAK6+I,EAAO7+I,IAAM,EAFhB6+I,EAAO7+I,EAAI,GADN6+I,EAAO7+I,EAL9B,CAUF4+I,GAAe7sG,EAAQ8sG,EAAQC,GAC/BQ,GAAgBvtG,EAAQ+sG,EAAIjM,EAC9B,CACA,SAASgN,GAAgBC,EAAI7iI,EAAKD,GAChC,OAAOjW,KAAKiW,IAAIjW,KAAKkW,IAAI6iI,EAAI9iI,GAAMC,EACrC,CACA,SAAS8iI,GAAgBhuG,EAAQmlG,GAC/B,IAAIl3I,EAAGy5H,EAAMznF,EAAOguG,EAAQC,EACxBC,EAAajJ,GAAellG,EAAO,GAAImlG,GAC3C,IAAKl3I,EAAI,EAAGy5H,EAAO1nF,EAAOhyC,OAAQC,EAAIy5H,IAAQz5H,EAC5CigJ,EAAaD,EACbA,EAASE,EACTA,EAAalgJ,EAAIy5H,EAAO,GAAKwd,GAAellG,EAAO/xC,EAAI,GAAIk3I,GACtD8I,IAGLhuG,EAAQD,EAAO/xC,GACXigJ,IACFjuG,EAAM6lG,KAAOgI,GAAgB7tG,EAAM6lG,KAAMX,EAAKxoH,KAAMwoH,EAAK/nC,OACzDn9D,EAAM+lG,KAAO8H,GAAgB7tG,EAAM+lG,KAAMb,EAAKzoH,IAAKyoH,EAAKE,SAEtD8I,IACFluG,EAAM8lG,KAAO+H,GAAgB7tG,EAAM8lG,KAAMZ,EAAKxoH,KAAMwoH,EAAK/nC,OACzDn9D,EAAMgmG,KAAO6H,GAAgB7tG,EAAMgmG,KAAMd,EAAKzoH,IAAKyoH,EAAKE,SAG9D,CACA,SAAS+I,GAA2BpuG,EAAQ5vC,EAAS+0I,EAAM91G,EAAMyxG,GAC/D,IAAI7yI,EAAGy5H,EAAMznF,EAAOouG,EAIpB,GAHIj+I,EAAQk+I,WACVtuG,EAASA,EAAOjiC,QAAQgwI,IAAQA,EAAG/9G,QAEE,aAAnC5/B,EAAQm+I,uBACVX,GAAoB5tG,EAAQ8gG,OACvB,CACL,IAAI1hI,EAAOiwB,EAAO2Q,EAAOA,EAAOhyC,OAAS,GAAKgyC,EAAO,GACrD,IAAK/xC,EAAI,EAAGy5H,EAAO1nF,EAAOhyC,OAAQC,EAAIy5H,IAAQz5H,EAC5CgyC,EAAQD,EAAO/xC,GACfogJ,EAAgBlC,GACd/sI,EACA6gC,EACAD,EAAOhrC,KAAKkW,IAAIjd,EAAI,EAAGy5H,GAAQr4F,EAAO,EAAI,IAAMq4F,GAChDt3H,EAAQo+I,SAEVvuG,EAAM6lG,KAAOuI,EAAchvI,SAASyxB,EACpCmP,EAAM+lG,KAAOqI,EAAchvI,SAAS0xB,EACpCkP,EAAM8lG,KAAOsI,EAAcjhJ,KAAK0jC,EAChCmP,EAAMgmG,KAAOoI,EAAcjhJ,KAAK2jC,EAChC3xB,EAAO6gC,CAEX,CACI7vC,EAAQ49I,iBACVA,GAAgBhuG,EAAQmlG,EAE5B,CAEA,SAASsJ,KACP,MAAyB,qBAAX/8I,QAA8C,qBAAbR,QACjD,CACA,SAASw9I,GAAeC,GACtB,IAAI9vH,EAAS8vH,EAAQt1I,WAIrB,OAHIwlB,GAAgC,wBAAtBA,EAAOlwB,aACnBkwB,EAASA,EAAO5K,MAEX4K,CACT,CACA,SAAS+vH,GAAcC,EAAY5uH,EAAM6uH,GACvC,IAAIC,EASJ,MAR0B,kBAAfF,GACTE,EAAgBvnH,SAASqnH,EAAY,KACJ,IAA7BA,EAAW7jI,QAAQ,OACrB+jI,EAAgBA,EAAgB,IAAM9uH,EAAK5mB,WAAWy1I,KAGxDC,EAAgBF,EAEXE,CACT,CACA,MAAM7mI,GAAoBpS,GAAYpE,OAAOwW,iBAAiBpS,EAAS,MACvE,SAASk5I,GAAStvI,EAAI6E,GACpB,OAAO2D,GAAiBxI,GAAIiJ,iBAAiBpE,EAC/C,CACA,MAAMomC,GAAY,CAAC,MAAO,QAAS,SAAU,QAC7C,SAASskG,GAAmBlzH,EAAQ1Y,EAAO6rI,GACzC,MAAM3hJ,EAAS,CAAC,EAChB2hJ,EAASA,EAAS,IAAMA,EAAS,GACjC,IAAK,IAAIjhJ,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAMkhJ,EAAMxkG,GAAU18C,GACtBV,EAAO4hJ,GAAO/mI,WAAW2T,EAAO1Y,EAAQ,IAAM8rI,EAAMD,KAAY,CAClE,CAGA,OAFA3hJ,EAAOoe,MAAQpe,EAAOovB,KAAOpvB,EAAO6vG,MACpC7vG,EAAOs1B,OAASt1B,EAAOmvB,IAAMnvB,EAAO83I,OAC7B93I,CACT,CACA,MAAM6hJ,GAAe,CAACt+G,EAAGC,EAAG33B,KAAY03B,EAAI,GAAKC,EAAI,MAAQ33B,IAAWA,EAAOg+B,YAC/E,SAASi4G,GAAkBhiJ,EAAGs2I,GAC5B,MAAMltG,EAAUppC,EAAEopC,QACZnoC,EAASmoC,GAAWA,EAAQzoC,OAASyoC,EAAQ,GAAKppC,GAClD,QAAC8nD,EAAO,QAAEC,GAAW9mD,EAC3B,IACIwiC,EAAGC,EADH5U,GAAM,EAEV,GAAIizH,GAAaj6F,EAASC,EAAS/nD,EAAE+L,QACnC03B,EAAIqkB,EACJpkB,EAAIqkB,MACC,CACL,MAAM2vF,EAAOpB,EAAOvnH,wBACpB0U,EAAIxiC,EAAOwiD,QAAUi0F,EAAKpoH,KAC1BoU,EAAIziC,EAAOyiD,QAAUg0F,EAAKroH,IAC1BP,GAAM,CACR,CACA,MAAO,CAAC2U,IAAGC,IAAG5U,MAChB,CACA,SAASmzH,GAAoB/yI,EAAK8jI,GAChC,GAAI,WAAY9jI,EACd,OAAOA,EAET,MAAM,OAAConI,EAAM,wBAAEH,GAA2BnD,EACpCh9H,EAAQ6E,GAAiBy7H,GACzB4L,EAAgC,eAApBlsI,EAAM6nB,UAClBskH,EAAWP,GAAmB5rI,EAAO,WACrCosI,EAAUR,GAAmB5rI,EAAO,SAAU,UAC9C,EAACytB,EAAC,EAAEC,EAAC,IAAE5U,GAAOkzH,GAAkB9yI,EAAKonI,GACrCK,EAAUwL,EAAS7yH,MAAQR,GAAOszH,EAAQ9yH,MAC1CsnH,EAAUuL,EAAS9yH,KAAOP,GAAOszH,EAAQ/yH,KAC/C,IAAI,MAAC/Q,EAAK,OAAEkX,GAAUw9G,EAKtB,OAJIkP,IACF5jI,GAAS6jI,EAAS7jI,MAAQ8jI,EAAQ9jI,MAClCkX,GAAU2sH,EAAS3sH,OAAS4sH,EAAQ5sH,QAE/B,CACLiO,EAAG97B,KAAK6kD,OAAO/oB,EAAIkzG,GAAWr4H,EAAQg4H,EAAOh4H,MAAQ63H,GACrDzyG,EAAG/7B,KAAK6kD,OAAO9oB,EAAIkzG,GAAWphH,EAAS8gH,EAAO9gH,OAAS2gH,GAE3D,CACA,SAASkM,GAAiB/L,EAAQh4H,EAAOkX,GACvC,IAAI6jH,EAAUiJ,EACd,QAAcjoI,IAAViE,QAAkCjE,IAAXmb,EAAsB,CAC/C,MAAMggD,EAAY6rE,GAAe/K,GACjC,GAAK9gE,EAGE,CACL,MAAMkiE,EAAOliE,EAAUzmD,wBACjBwzH,EAAiB1nI,GAAiB26D,GAClCgtE,EAAkBZ,GAAmBW,EAAgB,SAAU,SAC/DE,EAAmBb,GAAmBW,EAAgB,WAC5DjkI,EAAQo5H,EAAKp5H,MAAQmkI,EAAiBnkI,MAAQkkI,EAAgBlkI,MAC9DkX,EAASkiH,EAAKliH,OAASitH,EAAiBjtH,OAASgtH,EAAgBhtH,OACjE6jH,EAAWkI,GAAcgB,EAAelJ,SAAU7jE,EAAW,eAC7D8sE,EAAYf,GAAcgB,EAAeD,UAAW9sE,EAAW,eACjE,MAXEl3D,EAAQg4H,EAAOn4H,YACfqX,EAAS8gH,EAAO1/H,YAWpB,CACA,MAAO,CACL0H,QACAkX,SACA6jH,SAAUA,GAAY14H,EACtB2hI,UAAWA,GAAa3hI,EAE5B,CACA,MAAM+hI,GAASx9I,GAAKyC,KAAK6kD,MAAU,GAAJtnD,GAAU,GACzC,SAASy9I,GAAerM,EAAQsM,EAASC,EAAUC,GACjD,MAAM9sI,EAAQ6E,GAAiBy7H,GACzByM,EAAUnB,GAAmB5rI,EAAO,UACpCqjI,EAAWkI,GAAcvrI,EAAMqjI,SAAU/C,EAAQ,gBAAkB31H,EACnE2hI,EAAYf,GAAcvrI,EAAMssI,UAAWhM,EAAQ,iBAAmB31H,EACtEqiI,EAAgBX,GAAiB/L,EAAQsM,EAASC,GACxD,IAAI,MAACvkI,EAAK,OAAEkX,GAAUwtH,EACtB,GAAwB,gBAApBhtI,EAAM6nB,UAA6B,CACrC,MAAMukH,EAAUR,GAAmB5rI,EAAO,SAAU,SAC9CmsI,EAAWP,GAAmB5rI,EAAO,WAC3CsI,GAAS6jI,EAAS7jI,MAAQ8jI,EAAQ9jI,MAClCkX,GAAU2sH,EAAS3sH,OAAS4sH,EAAQ5sH,MACtC,CAQA,OAPAlX,EAAQ3W,KAAKiW,IAAI,EAAGU,EAAQykI,EAAQzkI,OACpCkX,EAAS7tB,KAAKiW,IAAI,EAAGklI,EAAcn7I,KAAK6S,MAAM8D,EAAQwkI,GAAettH,EAASutH,EAAQvtH,QACtFlX,EAAQokI,GAAO/6I,KAAKkW,IAAIS,EAAO+6H,EAAU2J,EAAc3J,WACvD7jH,EAASktH,GAAO/6I,KAAKkW,IAAI2X,EAAQ8sH,EAAWU,EAAcV,YACtDhkI,IAAUkX,IACZA,EAASktH,GAAOpkI,EAAQ,IAEnB,CACLA,QACAkX,SAEJ,CACA,SAASytH,GAAYjQ,EAAOkQ,EAAYC,GACtC,MAAMC,EAAaF,GAAc,EAC3BG,EAAe17I,KAAK6S,MAAMw4H,EAAMx9G,OAAS4tH,GACzCE,EAAc37I,KAAK6S,MAAMw4H,EAAM10H,MAAQ8kI,GAC7CpQ,EAAMx9G,OAAS6tH,EAAeD,EAC9BpQ,EAAM10H,MAAQglI,EAAcF,EAC5B,MAAM9M,EAAStD,EAAMsD,OAKrB,OAJIA,EAAOtgI,QAAUmtI,IAAgB7M,EAAOtgI,MAAMwf,SAAW8gH,EAAOtgI,MAAMsI,SACxEg4H,EAAOtgI,MAAMwf,OAAS,GAAGw9G,EAAMx9G,WAC/B8gH,EAAOtgI,MAAMsI,MAAQ,GAAG00H,EAAM10H,YAE5B00H,EAAMmD,0BAA4BiN,GAC/B9M,EAAO9gH,SAAW6tH,GAClB/M,EAAOh4H,QAAUglI,KACtBtQ,EAAMmD,wBAA0BiN,EAChC9M,EAAO9gH,OAAS6tH,EAChB/M,EAAOh4H,MAAQglI,EACftQ,EAAMhiE,IAAIrsB,aAAay+F,EAAY,EAAG,EAAGA,EAAY,EAAG,IACjD,EAGX,CACA,MAAMG,GAAgC,WACpC,IAAIC,GAAmB,EACvB,IACE,MAAMzgJ,EAAU,CACd,WAAIguC,GAEF,OADAyyG,GAAmB,GACZ,CACT,GAEFn/I,OAAO+I,iBAAiB,OAAQ,KAAMrK,GACtCsB,OAAOiJ,oBAAoB,OAAQ,KAAMvK,EAC3C,CAAE,MAAO/C,GACT,CACA,OAAOwjJ,CACT,CAdqC,GAerC,SAASC,GAAah7I,EAASyO,GAC7B,MAAMzX,EAAQkiJ,GAASl5I,EAASyO,GAC1BvF,EAAUlS,GAASA,EAAM0a,MAAM,qBACrC,OAAOxI,GAAWA,EAAQ,QAAK0I,CACjC,CAEA,SAASqpI,GAAa7d,EAAIC,EAAIx/H,EAAGyxE,GAC/B,MAAO,CACLt0C,EAAGoiG,EAAGpiG,EAAIn9B,GAAKw/H,EAAGriG,EAAIoiG,EAAGpiG,GACzBC,EAAGmiG,EAAGniG,EAAIp9B,GAAKw/H,EAAGpiG,EAAImiG,EAAGniG,GAE7B,CACA,SAASigH,GAAsB9d,EAAIC,EAAIx/H,EAAGyxE,GACxC,MAAO,CACLt0C,EAAGoiG,EAAGpiG,EAAIn9B,GAAKw/H,EAAGriG,EAAIoiG,EAAGpiG,GACzBC,EAAY,WAATq0C,EAAoBzxE,EAAI,GAAMu/H,EAAGniG,EAAIoiG,EAAGpiG,EAChC,UAATq0C,EAAmBzxE,EAAI,EAAIu/H,EAAGniG,EAAIoiG,EAAGpiG,EACrCp9B,EAAI,EAAIw/H,EAAGpiG,EAAImiG,EAAGniG,EAExB,CACA,SAASkgH,GAAqB/d,EAAIC,EAAIx/H,EAAGyxE,GACvC,MAAM8rE,EAAM,CAACpgH,EAAGoiG,EAAG6S,KAAMh1G,EAAGmiG,EAAG+S,MACzBkL,EAAM,CAACrgH,EAAGqiG,EAAG2S,KAAM/0G,EAAGoiG,EAAG6S,MACzBn4I,EAAIkjJ,GAAa7d,EAAIge,EAAKv9I,GAC1B7F,EAAIijJ,GAAaG,EAAKC,EAAKx9I,GAC3Bd,EAAIk+I,GAAaI,EAAKhe,EAAIx/H,GAC1BV,EAAI89I,GAAaljJ,EAAGC,EAAG6F,GACvBtG,EAAI0jJ,GAAajjJ,EAAG+E,EAAGc,GAC7B,OAAOo9I,GAAa99I,EAAG5F,EAAGsG,EAC5B,CAEA,MAAMy9I,GAAY,IAAI75I,IACtB,SAAS85I,GAAgBC,EAAQlhJ,GAC/BA,EAAUA,GAAW,CAAC,EACtB,MAAMotG,EAAW8zC,EAAShhJ,KAAKC,UAAUH,GACzC,IAAImhJ,EAAYH,GAAUl6I,IAAIsmG,GAK9B,OAJK+zC,IACHA,EAAY,IAAIC,KAAKC,aAAaH,EAAQlhJ,GAC1CghJ,GAAU39I,IAAI+pG,EAAU+zC,IAEnBA,CACT,CACA,SAASG,GAAaxrF,EAAKorF,EAAQlhJ,GACjC,OAAOihJ,GAAgBC,EAAQlhJ,GAASuhJ,OAAOzrF,EACjD,CAEA,MAAM0rF,GAAwB,SAASC,EAAOlmI,GAC5C,MAAO,CACL,CAAAmlB,CAAEA,GACA,OAAO+gH,EAAQA,EAAQlmI,EAAQmlB,CACjC,EACA,QAAAghH,CAASvf,GACP5mH,EAAQ4mH,CACV,EACA,SAAAwU,CAAUvZ,GACR,MAAc,WAAVA,EACKA,EAEQ,UAAVA,EAAoB,OAAS,OACtC,EACA,KAAAukB,CAAMjhH,EAAGhkC,GACP,OAAOgkC,EAAIhkC,CACb,EACA,UAAAklJ,CAAWlhH,EAAGmhH,GACZ,OAAOnhH,EAAImhH,CACb,EAEJ,EACMC,GAAwB,WAC5B,MAAO,CACL,CAAAphH,CAAEA,GACA,OAAOA,CACT,EACA,QAAAghH,CAASvf,GACT,EACA,SAAAwU,CAAUvZ,GACR,OAAOA,CACT,EACA,KAAAukB,CAAMjhH,EAAGhkC,GACP,OAAOgkC,EAAIhkC,CACb,EACA,UAAAklJ,CAAWlhH,EAAGqhH,GACZ,OAAOrhH,CACT,EAEJ,EACA,SAASshH,GAAcrqH,EAAK8pH,EAAOlmI,GACjC,OAAOoc,EAAM6pH,GAAsBC,EAAOlmI,GAASumI,IACrD,CACA,SAASG,GAAsBh0E,EAAKtsC,GAClC,IAAI1uB,EAAOivI,EACO,QAAdvgH,GAAqC,QAAdA,IACzB1uB,EAAQg7D,EAAIslE,OAAOtgI,MACnBivI,EAAW,CACTjvI,EAAMsF,iBAAiB,aACvBtF,EAAMkvI,oBAAoB,cAE5BlvI,EAAMgJ,YAAY,YAAa0lB,EAAW,aAC1CssC,EAAIm0E,kBAAoBF,EAE5B,CACA,SAASG,GAAqBp0E,EAAKi0E,QAChB5qI,IAAb4qI,WACKj0E,EAAIm0E,kBACXn0E,EAAIslE,OAAOtgI,MAAMgJ,YAAY,YAAaimI,EAAS,GAAIA,EAAS,IAEpE,CAEA,SAASI,GAAWnuI,GAClB,MAAiB,UAAbA,EACK,CACLouI,QAASpnB,GACTqnB,QAASvnB,EACT/3F,UAAWg4F,GAGR,CACLqnB,QAAS5mB,GACT6mB,QAAS,CAAC/kJ,EAAGC,IAAMD,EAAIC,EACvBwlC,UAAWxC,GAAKA,EAEpB,CACA,SAAS+hH,IAAiB,MAAChlI,EAAK,IAAEC,EAAG,MAAEgnG,EAAK,KAAEzlF,EAAI,MAAEhsB,IAClD,MAAO,CACLwK,MAAOA,EAAQinG,EACfhnG,IAAKA,EAAMgnG,EACXzlF,KAAMA,IAASvhB,EAAMD,EAAQ,GAAKinG,IAAU,EAC5CzxG,QAEJ,CACA,SAASyvI,GAAWC,EAAS/yG,EAAQgzG,GACnC,MAAM,SAACzuI,EAAUsJ,MAAOolI,EAAYnlI,IAAKolI,GAAYF,GAC/C,QAACL,EAAO,UAAEr/G,GAAao/G,GAAWnuI,GAClCuwG,EAAQ90E,EAAOhyC,OACrB,IACIC,EAAGy5H,GADH,MAAC75G,EAAK,IAAEC,EAAG,KAAEuhB,GAAQ0jH,EAEzB,GAAI1jH,EAAM,CAGR,IAFAxhB,GAASinG,EACThnG,GAAOgnG,EACF7mH,EAAI,EAAGy5H,EAAO5S,EAAO7mH,EAAIy5H,IAAQz5H,EAAG,CACvC,IAAK0kJ,EAAQr/G,EAAU0M,EAAOnyB,EAAQinG,GAAOvwG,IAAY0uI,EAAYC,GACnE,MAEFrlI,IACAC,GACF,CACAD,GAASinG,EACThnG,GAAOgnG,CACT,CAIA,OAHIhnG,EAAMD,IACRC,GAAOgnG,GAEF,CAACjnG,QAAOC,MAAKuhB,OAAMhsB,MAAO0vI,EAAQ1vI,MAC3C,CACA,SAAS8vI,GAAcJ,EAAS/yG,EAAQgzG,GACtC,IAAKA,EACH,MAAO,CAACD,GAEV,MAAM,SAACxuI,EAAUsJ,MAAOolI,EAAYnlI,IAAKolI,GAAYF,EAC/Cl+B,EAAQ90E,EAAOhyC,QACf,QAAC4kJ,EAAO,QAAED,EAAO,UAAEr/G,GAAao/G,GAAWnuI,IAC3C,MAACsJ,EAAK,IAAEC,EAAG,KAAEuhB,EAAI,MAAEhsB,GAASyvI,GAAWC,EAAS/yG,EAAQgzG,GACxDzlJ,EAAS,GACf,IAEIT,EAAOmzC,EAAOw2D,EAFd28C,GAAS,EACTC,EAAW,KAEf,MAAMC,EAAgB,IAAMX,EAAQM,EAAYx8C,EAAW3pG,IAA6C,IAAnC8lJ,EAAQK,EAAYx8C,GACnF88C,EAAc,IAAmC,IAA7BX,EAAQM,EAAUpmJ,IAAgB6lJ,EAAQO,EAAUz8C,EAAW3pG,GACnF0mJ,EAAc,IAAMJ,GAAUE,IAC9BG,EAAa,KAAOL,GAAUG,IACpC,IAAK,IAAItlJ,EAAI4f,EAAOzO,EAAOyO,EAAO5f,GAAK6f,IAAO7f,EAC5CgyC,EAAQD,EAAO/xC,EAAI6mH,GACf70E,EAAMjQ,OAGVljC,EAAQwmC,EAAU2M,EAAM17B,IACpBzX,IAAU2pG,IAGd28C,EAAST,EAAQ7lJ,EAAOmmJ,EAAYC,GACnB,OAAbG,GAAqBG,MACvBH,EAA0C,IAA/BT,EAAQ9lJ,EAAOmmJ,GAAoBhlJ,EAAImR,GAEnC,OAAbi0I,GAAqBI,MACvBlmJ,EAAO0E,KAAK4gJ,GAAiB,CAAChlI,MAAOwlI,EAAUvlI,IAAK7f,EAAGohC,OAAMylF,QAAOzxG,WACpEgwI,EAAW,MAEbj0I,EAAOnR,EACPwoG,EAAY3pG,IAKd,OAHiB,OAAbumJ,GACF9lJ,EAAO0E,KAAK4gJ,GAAiB,CAAChlI,MAAOwlI,EAAUvlI,MAAKuhB,OAAMylF,QAAOzxG,WAE5D9V,CACT,CACA,SAASmmJ,GAAenyC,EAAMyxC,GAC5B,MAAMzlJ,EAAS,GACT67E,EAAWm4B,EAAKn4B,SACtB,IAAK,IAAIn7E,EAAI,EAAGA,EAAIm7E,EAASp7E,OAAQC,IAAK,CACxC,MAAM0lJ,EAAMR,GAAc/pE,EAASn7E,GAAIszG,EAAKvhE,OAAQgzG,GAChDW,EAAI3lJ,QACNT,EAAO0E,QAAQ0hJ,EAEnB,CACA,OAAOpmJ,CACT,CACA,SAASqmJ,GAAgB5zG,EAAQ80E,EAAOzlF,EAAMi/G,GAC5C,IAAIzgI,EAAQ,EACRC,EAAMgnG,EAAQ,EAClB,GAAIzlF,IAASi/G,EACX,MAAOzgI,EAAQinG,IAAU90E,EAAOnyB,GAAOmiB,KACrCniB,IAGJ,MAAOA,EAAQinG,GAAS90E,EAAOnyB,GAAOmiB,KACpCniB,IAEFA,GAASinG,EACLzlF,IACFvhB,GAAOD,GAET,MAAOC,EAAMD,GAASmyB,EAAOlyB,EAAMgnG,GAAO9kF,KACxCliB,IAGF,OADAA,GAAOgnG,EACA,CAACjnG,QAAOC,MACjB,CACA,SAAS+lI,GAAc7zG,EAAQnyB,EAAO5C,EAAKokB,GACzC,MAAMylF,EAAQ90E,EAAOhyC,OACfT,EAAS,GACf,IAEIugB,EAFAi/C,EAAOl/C,EACPzO,EAAO4gC,EAAOnyB,GAElB,IAAKC,EAAMD,EAAQ,EAAGC,GAAO7C,IAAO6C,EAAK,CACvC,MAAMwsD,EAAMt6B,EAAOlyB,EAAMgnG,GACrBx6C,EAAItqC,MAAQsqC,EAAI/uB,KACbnsC,EAAK4wB,OACRX,GAAO,EACP9hC,EAAO0E,KAAK,CAAC4b,MAAOA,EAAQinG,EAAOhnG,KAAMA,EAAM,GAAKgnG,EAAOzlF,SAC3DxhB,EAAQk/C,EAAOuN,EAAI/uB,KAAOz9B,EAAM,OAGlCi/C,EAAOj/C,EACH1O,EAAK4wB,OACPniB,EAAQC,IAGZ1O,EAAOk7D,CACT,CAIA,OAHa,OAATvN,GACFx/D,EAAO0E,KAAK,CAAC4b,MAAOA,EAAQinG,EAAOhnG,IAAKi/C,EAAO+nD,EAAOzlF,SAEjD9hC,CACT,CACA,SAASumJ,GAAiBvyC,EAAMwyC,GAC9B,MAAM/zG,EAASuhE,EAAKvhE,OACdsuG,EAAW/sC,EAAKnxG,QAAQk+I,SACxBx5B,EAAQ90E,EAAOhyC,OACrB,IAAK8mH,EACH,MAAO,GAET,MAAMzlF,IAASkyE,EAAKyyC,OACd,MAACnmI,EAAK,IAAEC,GAAO8lI,GAAgB5zG,EAAQ80E,EAAOzlF,EAAMi/G,GAC1D,IAAiB,IAAbA,EACF,OAAO2F,GAAc1yC,EAAM,CAAC,CAAC1zF,QAAOC,MAAKuhB,SAAQ2Q,EAAQ+zG,GAE3D,MAAM9oI,EAAM6C,EAAMD,EAAQC,EAAMgnG,EAAQhnG,EAClComI,IAAiB3yC,EAAK4yC,WAAuB,IAAVtmI,GAAeC,IAAQgnG,EAAQ,EACxE,OAAOm/B,GAAc1yC,EAAMsyC,GAAc7zG,EAAQnyB,EAAO5C,EAAKipI,GAAel0G,EAAQ+zG,EACtF,CACA,SAASE,GAAc1yC,EAAMn4B,EAAUppC,EAAQ+zG,GAC7C,OAAKA,GAAmBA,EAAexJ,YAAevqG,EAG/Co0G,GAAgB7yC,EAAMn4B,EAAUppC,EAAQ+zG,GAFtC3qE,CAGX,CACA,SAASgrE,GAAgB7yC,EAAMn4B,EAAUppC,EAAQ+zG,GAC/C,MAAMM,EAAe9yC,EAAK+yC,OAAO1+D,aAC3B2+D,EAAYC,GAAUjzC,EAAKnxG,UAC1BqkJ,cAAe7sB,EAAcx3H,SAAS,SAACk+I,IAAa/sC,EACrDuT,EAAQ90E,EAAOhyC,OACfT,EAAS,GACf,IAAImnJ,EAAYH,EACZ1mI,EAAQu7D,EAAS,GAAGv7D,MACpB5f,EAAI4f,EACR,SAAS8mI,EAAStuF,EAAGh5D,EAAGyF,EAAG8hJ,GACzB,MAAM/qI,EAAMykI,GAAY,EAAI,EAC5B,GAAIjoF,IAAMh5D,EAAV,CAGAg5D,GAAKyuD,EACL,MAAO90E,EAAOqmB,EAAIyuD,GAAO9kF,KACvBq2B,GAAKx8C,EAEP,MAAOm2B,EAAO3yC,EAAIynH,GAAO9kF,KACvB3iC,GAAKwc,EAEHw8C,EAAIyuD,IAAUznH,EAAIynH,IACpBvnH,EAAO0E,KAAK,CAAC4b,MAAOw4C,EAAIyuD,EAAOhnG,IAAKzgB,EAAIynH,EAAOzlF,KAAMv8B,EAAGuQ,MAAOuxI,IAC/DF,EAAYE,EACZ/mI,EAAQxgB,EAAIynH,EAXd,CAaF,CACA,IAAK,MAAMi+B,KAAW3pE,EAAU,CAC9Bv7D,EAAQygI,EAAWzgI,EAAQklI,EAAQllI,MACnC,IACIxK,EADAjE,EAAO4gC,EAAOnyB,EAAQinG,GAE1B,IAAK7mH,EAAI4f,EAAQ,EAAG5f,GAAK8kJ,EAAQjlI,IAAK7f,IAAK,CACzC,MAAM8/I,EAAK/tG,EAAO/xC,EAAI6mH,GACtBzxG,EAAQmxI,GAAUT,EAAexJ,WAAWrB,GAAcmL,EAAc,CACtEt7I,KAAM,UACN87I,GAAIz1I,EACJ8zH,GAAI6a,EACJ+G,aAAc7mJ,EAAI,GAAK6mH,EACvBigC,YAAa9mJ,EAAI6mH,EACjB8S,mBAEEotB,GAAa3xI,EAAOqxI,IACtBC,EAAS9mI,EAAO5f,EAAI,EAAG8kJ,EAAQ1jH,KAAMqlH,GAEvCt1I,EAAO2uI,EACP2G,EAAYrxI,CACd,CACIwK,EAAQ5f,EAAI,GACd0mJ,EAAS9mI,EAAO5f,EAAI,EAAG8kJ,EAAQ1jH,KAAMqlH,EAEzC,CACA,OAAOnnJ,CACT,CACA,SAASinJ,GAAUpkJ,GACjB,MAAO,CACL6vI,gBAAiB7vI,EAAQ6vI,gBACzBgV,eAAgB7kJ,EAAQ6kJ,eACxBC,WAAY9kJ,EAAQ8kJ,WACpBC,iBAAkB/kJ,EAAQ+kJ,iBAC1BC,gBAAiBhlJ,EAAQglJ,gBACzBpQ,YAAa50I,EAAQ40I,YACrB9E,YAAa9vI,EAAQ8vI,YAEzB,CACA,SAAS8U,GAAa3xI,EAAOqxI,GAC3B,OAAOA,GAAapkJ,KAAKC,UAAU8S,KAAW/S,KAAKC,UAAUmkJ,EAC/D;;;;;;;AC/iFA,MAAMW,GACJ,WAAAtnJ,GACEgC,KAAKulJ,SAAW,KAChBvlJ,KAAKwlJ,QAAU,IAAIh+I,IACnBxH,KAAKylJ,UAAW,EAChBzlJ,KAAK0lJ,eAAY/tI,CACnB,CACA,OAAAguI,CAAQrV,EAAOsV,EAAOC,EAAM78I,GAC1B,MAAM/I,EAAY2lJ,EAAM/oB,UAAU7zH,GAC5B88I,EAAWF,EAAM57H,SACvB/pB,EAAUwC,SAAQR,GAAMA,EAAG,CACzBquI,QACApuG,QAAS0jH,EAAM1jH,QACf4jH,WACAC,YAAa9gJ,KAAKkW,IAAI0qI,EAAOD,EAAM9nI,MAAOgoI,MAE9C,CACA,QAAAE,GACMhmJ,KAAKulJ,WAGTvlJ,KAAKylJ,UAAW,EAChBzlJ,KAAKulJ,SAAWtoB,GAAiBn+H,KAAK6C,QAAQ,KAC5C3B,KAAK6oG,UACL7oG,KAAKulJ,SAAW,KACZvlJ,KAAKylJ,UACPzlJ,KAAKgmJ,UACP,IAEJ,CACA,OAAAn9C,CAAQg9C,EAAOxgI,KAAK4J,OAClB,IAAIg3H,EAAY,EAChBjmJ,KAAKwlJ,QAAQ/iJ,SAAQ,CAACmjJ,EAAOtV,KAC3B,IAAKsV,EAAMr4G,UAAYq4G,EAAMh+H,MAAM3pB,OACjC,OAEF,MAAM2pB,EAAQg+H,EAAMh+H,MACpB,IAEI6oB,EAFAvyC,EAAI0pB,EAAM3pB,OAAS,EACnBioJ,GAAO,EAEX,KAAOhoJ,GAAK,IAAKA,EACfuyC,EAAO7oB,EAAM1pB,GACTuyC,EAAKgsB,SACHhsB,EAAK01G,OAASP,EAAM57H,WACtB47H,EAAM57H,SAAWymB,EAAK01G,QAExB11G,EAAK21G,KAAKP,GACVK,GAAO,IAEPt+H,EAAM1pB,GAAK0pB,EAAMA,EAAM3pB,OAAS,GAChC2pB,EAAMwjB,OAGN86G,IACF5V,EAAM4V,OACNlmJ,KAAK2lJ,QAAQrV,EAAOsV,EAAOC,EAAM,aAE9Bj+H,EAAM3pB,SACT2nJ,EAAMr4G,SAAU,EAChBvtC,KAAK2lJ,QAAQrV,EAAOsV,EAAOC,EAAM,YACjCD,EAAM1jH,SAAU,GAElB+jH,GAAar+H,EAAM3pB,MAAM,IAE3B+B,KAAK0lJ,UAAYG,EACC,IAAdI,IACFjmJ,KAAKylJ,UAAW,EAEpB,CACA,SAAAY,CAAU/V,GACR,MAAMgW,EAAStmJ,KAAKwlJ,QACpB,IAAII,EAAQU,EAAOn/I,IAAImpI,GAavB,OAZKsV,IACHA,EAAQ,CACNr4G,SAAS,EACTrL,SAAS,EACTta,MAAO,GACPi1G,UAAW,CACTxrF,SAAU,GACVjT,SAAU,KAGdkoH,EAAO5iJ,IAAI4sI,EAAOsV,IAEbA,CACT,CACA,MAAAW,CAAOjW,EAAO5rI,EAAOU,GACnBpF,KAAKqmJ,UAAU/V,GAAOzT,UAAUn4H,GAAOxC,KAAKkD,EAC9C,CACA,GAAAf,CAAIisI,EAAO1oH,GACJA,GAAUA,EAAM3pB,QAGrB+B,KAAKqmJ,UAAU/V,GAAO1oH,MAAM1lB,QAAQ0lB,EACtC,CACA,GAAAlgB,CAAI4oI,GACF,OAAOtwI,KAAKqmJ,UAAU/V,GAAO1oH,MAAM3pB,OAAS,CAC9C,CACA,KAAA6f,CAAMwyH,GACJ,MAAMsV,EAAQ5lJ,KAAKwlJ,QAAQr+I,IAAImpI,GAC1BsV,IAGLA,EAAMr4G,SAAU,EAChBq4G,EAAM9nI,MAAQuH,KAAK4J,MACnB22H,EAAM57H,SAAW47H,EAAMh+H,MAAMs0C,QAAO,CAACsqF,EAAKj8E,IAAQtlE,KAAKiW,IAAIsrI,EAAKj8E,EAAIk8E,YAAY,GAChFzmJ,KAAKgmJ,WACP,CACA,OAAAz4G,CAAQ+iG,GACN,IAAKtwI,KAAKylJ,SACR,OAAO,EAET,MAAMG,EAAQ5lJ,KAAKwlJ,QAAQr+I,IAAImpI,GAC/B,SAAKsV,GAAUA,EAAMr4G,SAAYq4G,EAAMh+H,MAAM3pB,OAI/C,CACA,IAAAu9C,CAAK80F,GACH,MAAMsV,EAAQ5lJ,KAAKwlJ,QAAQr+I,IAAImpI,GAC/B,IAAKsV,IAAUA,EAAMh+H,MAAM3pB,OACzB,OAEF,MAAM2pB,EAAQg+H,EAAMh+H,MACpB,IAAI1pB,EAAI0pB,EAAM3pB,OAAS,EACvB,KAAOC,GAAK,IAAKA,EACf0pB,EAAM1pB,GAAGowC,SAEXs3G,EAAMh+H,MAAQ,GACd5nB,KAAK2lJ,QAAQrV,EAAOsV,EAAOvgI,KAAK4J,MAAO,WACzC,CACA,MAAA5tB,CAAOivI,GACL,OAAOtwI,KAAKwlJ,QAAQ19I,OAAOwoI,EAC7B,EAEF,IAAIoW,GAAW,IAAIpB,GAEnB,MAAMtX,GAAc,cACd2Y,GAAgB,CACpB,OAAAC,CAAQ/+I,EAAMuoB,EAAIy2H,GAChB,OAAOA,EAAS,GAAMz2H,EAAKvoB,CAC7B,EACA,KAAAinI,CAAMjnI,EAAMuoB,EAAIy2H,GACd,MAAMC,EAAKhY,GAAMjnI,GAAQmmI,IACnBn3C,EAAKiwD,EAAGlY,OAASE,GAAM1+G,GAAM49G,IACnC,OAAOn3C,GAAMA,EAAG+3C,MACZ/3C,EAAGg4C,IAAIiY,EAAID,GAAQ1kB,YACnB/xG,CACN,EACA,MAAA2vB,CAAOl4C,EAAMuoB,EAAIy2H,GACf,OAAOh/I,GAAQuoB,EAAKvoB,GAAQg/I,CAC9B,GAEF,MAAME,GACJ,WAAA/oJ,CAAYgpJ,EAAK39I,EAAQikF,EAAMl9D,GAC7B,MAAM62H,EAAe59I,EAAOikF,GAC5Bl9D,EAAKpzB,GAAQ,CAACgqJ,EAAI52H,GAAIA,EAAI62H,EAAcD,EAAIn/I,OAC5C,MAAMA,EAAO7K,GAAQ,CAACgqJ,EAAIn/I,KAAMo/I,EAAc72H,IAC9CpwB,KAAKy8D,SAAU,EACfz8D,KAAKknJ,IAAMF,EAAI/kJ,IAAM0kJ,GAAcK,EAAIh+I,aAAenB,GACtD7H,KAAKmnJ,QAAUzqF,GAAQsqF,EAAII,SAAW1qF,GAAQ0iE,OAC9Cp/H,KAAKqnJ,OAASpiJ,KAAK6S,MAAMuN,KAAK4J,OAAS+3H,EAAIhiJ,OAAS,IACpDhF,KAAKymJ,UAAYzmJ,KAAKmmJ,OAASlhJ,KAAK6S,MAAMkvI,EAAIh9H,UAC9ChqB,KAAKikJ,QAAU+C,EAAI1nH,KACnBt/B,KAAKsnJ,QAAUj+I,EACfrJ,KAAK+sB,MAAQugE,EACbttF,KAAKunJ,MAAQ1/I,EACb7H,KAAKwnJ,IAAMp3H,EACXpwB,KAAKynJ,eAAY9vI,CACnB,CACA,MAAAklD,GACE,OAAO78D,KAAKy8D,OACd,CACA,MAAAh3B,CAAOuhH,EAAK52H,EAAIy1H,GACd,GAAI7lJ,KAAKy8D,QAAS,CAChBz8D,KAAK2lJ,SAAQ,GACb,MAAMsB,EAAejnJ,KAAKsnJ,QAAQtnJ,KAAK+sB,OACjC26H,EAAU7B,EAAO7lJ,KAAKqnJ,OACtBM,EAAS3nJ,KAAKymJ,UAAYiB,EAChC1nJ,KAAKqnJ,OAASxB,EACd7lJ,KAAKymJ,UAAYxhJ,KAAK6S,MAAM7S,KAAKiW,IAAIysI,EAAQX,EAAIh9H,WACjDhqB,KAAKmmJ,QAAUuB,EACf1nJ,KAAKikJ,QAAU+C,EAAI1nH,KACnBt/B,KAAKwnJ,IAAMxqJ,GAAQ,CAACgqJ,EAAI52H,GAAIA,EAAI62H,EAAcD,EAAIn/I,OAClD7H,KAAKunJ,MAAQvqJ,GAAQ,CAACgqJ,EAAIn/I,KAAMo/I,EAAc72H,GAChD,CACF,CACA,MAAAke,GACMtuC,KAAKy8D,UACPz8D,KAAKomJ,KAAK/gI,KAAK4J,OACfjvB,KAAKy8D,SAAU,EACfz8D,KAAK2lJ,SAAQ,GAEjB,CACA,IAAAS,CAAKP,GACH,MAAM6B,EAAU7B,EAAO7lJ,KAAKqnJ,OACtBr9H,EAAWhqB,KAAKymJ,UAChBn5D,EAAOttF,KAAK+sB,MACZllB,EAAO7H,KAAKunJ,MACZjoH,EAAOt/B,KAAKikJ,MACZ7zH,EAAKpwB,KAAKwnJ,IAChB,IAAIX,EAEJ,GADA7mJ,KAAKy8D,QAAU50D,IAASuoB,IAAOkP,GAASooH,EAAU19H,IAC7ChqB,KAAKy8D,QAGR,OAFAz8D,KAAKsnJ,QAAQh6D,GAAQl9D,OACrBpwB,KAAK2lJ,SAAQ,GAGX+B,EAAU,EACZ1nJ,KAAKsnJ,QAAQh6D,GAAQzlF,GAGvBg/I,EAAUa,EAAU19H,EAAY,EAChC68H,EAASvnH,GAAQunH,EAAS,EAAI,EAAIA,EAASA,EAC3CA,EAAS7mJ,KAAKmnJ,QAAQliJ,KAAKkW,IAAI,EAAGlW,KAAKiW,IAAI,EAAG2rI,KAC9C7mJ,KAAKsnJ,QAAQh6D,GAAQttF,KAAKknJ,IAAIr/I,EAAMuoB,EAAIy2H,GAC1C,CACA,IAAAe,GACE,MAAMC,EAAW7nJ,KAAKynJ,YAAcznJ,KAAKynJ,UAAY,IACrD,OAAO,IAAIxqJ,SAAQ,CAAC+qB,EAAK8/H,KACvBD,EAAS3lJ,KAAK,CAAC8lB,MAAK8/H,OAAK,GAE7B,CACA,OAAAnC,CAAQr8D,GACN,MAAM1zE,EAAS0zE,EAAW,MAAQ,MAC5Bu+D,EAAW7nJ,KAAKynJ,WAAa,GACnC,IAAK,IAAIvpJ,EAAI,EAAGA,EAAI2pJ,EAAS5pJ,OAAQC,IACnC2pJ,EAAS3pJ,GAAG0X,IAEhB,EAGF,MAAMmyI,GAAU,CAAC,IAAK,IAAK,cAAe,SAAU,WAC9CC,GAAS,CAAC,QAAS,cAAe,mBACxC/0G,GAASvvC,IAAI,YAAa,CACxBsB,WAAO2S,EACPqS,SAAU,IACVo9H,OAAQ,eACRnlJ,QAAI0V,EACJ9P,UAAM8P,EACN2nB,UAAM3nB,EACNyY,QAAIzY,EACJ3O,UAAM2O,IAER,MAAMswI,GAAmBvpJ,OAAOP,KAAK80C,GAASg9F,WAC9Ch9F,GAAS0+F,SAAS,YAAa,CAC7BY,WAAW,EACXD,YAAY,EACZD,YAAcvwI,GAAkB,eAATA,GAAkC,eAATA,GAAkC,OAATA,IAE3EmxC,GAASvvC,IAAI,aAAc,CACzBskJ,OAAQ,CACNh/I,KAAM,QACNwpG,WAAYw1C,IAEdD,QAAS,CACP/+I,KAAM,SACNwpG,WAAYu1C,MAGhB90G,GAAS0+F,SAAS,aAAc,CAC9BY,UAAW,cAEbt/F,GAASvvC,IAAI,cAAe,CAC1Bm5D,OAAQ,CACNozE,UAAW,CACTjmH,SAAU,MAGdgK,OAAQ,CACNi8G,UAAW,CACTjmH,SAAU,IAGdtX,KAAM,CACJw1I,WAAY,CACVF,OAAQ,CACNngJ,KAAM,eAERsgJ,QAAS,CACPn/I,KAAM,UACNghB,SAAU,KAIhBvX,KAAM,CACJy1I,WAAY,CACVF,OAAQ,CACN53H,GAAI,eAEN+3H,QAAS,CACPn/I,KAAM,UACNo+I,OAAQ,SACRnlJ,GAAIO,GAAS,EAAJA,OAKjB,MAAM4lJ,GACJ,WAAApqJ,CAAYsyI,EAAOtqI,GACjBhG,KAAKukJ,OAASjU,EACdtwI,KAAKqoJ,YAAc,IAAI7gJ,IACvBxH,KAAKsoJ,UAAUtiJ,EACjB,CACA,SAAAsiJ,CAAUtiJ,GACR,IAAKqd,EAASrd,GACZ,OAEF,MAAMuiJ,EAAgBvoJ,KAAKqoJ,YAC3B3pJ,OAAOiI,oBAAoBX,GAAQvD,SAAQ1D,IACzC,MAAMioJ,EAAMhhJ,EAAOjH,GACnB,IAAKskB,EAAS2jI,GACZ,OAEF,MAAM19D,EAAW,CAAC,EAClB,IAAK,MAAMijB,KAAU07C,GACnB3+D,EAASijB,GAAUy6C,EAAIz6C,IAExBluG,EAAQ2oJ,EAAIx0C,aAAew0C,EAAIx0C,YAAc,CAACzzG,IAAM0D,SAAS6qF,IACxDA,IAASvuF,GAAQwpJ,EAAc7gJ,IAAI4lF,IACrCi7D,EAAc7kJ,IAAI4pF,EAAMhE,EAC1B,GACA,GAEN,CACA,eAAAk/D,CAAgBn/I,EAAQO,GACtB,MAAM6+I,EAAa7+I,EAAOvJ,QACpBA,EAAUqoJ,GAAqBr/I,EAAQo/I,GAC7C,IAAKpoJ,EACH,MAAO,GAET,MAAM6nJ,EAAaloJ,KAAK2oJ,kBAAkBtoJ,EAASooJ,GAOnD,OANIA,EAAWG,SACbC,GAASx/I,EAAOhJ,QAAQyoJ,YAAaL,GAAY/qJ,MAAK,KACpD2L,EAAOhJ,QAAUooJ,CAAU,IAC1B,SAGEP,CACT,CACA,iBAAAS,CAAkBt/I,EAAQO,GACxB,MAAM2+I,EAAgBvoJ,KAAKqoJ,YACrBH,EAAa,GACb36G,EAAUlkC,EAAOy/I,cAAgBz/I,EAAOy/I,YAAc,CAAC,GACvDh8H,EAAQpuB,OAAOP,KAAKyL,GACpBi8I,EAAOxgI,KAAK4J,MAClB,IAAI/wB,EACJ,IAAKA,EAAI4uB,EAAM7uB,OAAS,EAAGC,GAAK,IAAKA,EAAG,CACtC,MAAMovF,EAAOxgE,EAAM5uB,GACnB,GAAuB,MAAnBovF,EAAKp/E,OAAO,GACd,SAEF,GAAa,YAATo/E,EAAoB,CACtB46D,EAAWhmJ,QAAQlC,KAAKwoJ,gBAAgBn/I,EAAQO,IAChD,QACF,CACA,MAAM7M,EAAQ6M,EAAO0jF,GACrB,IAAI2iD,EAAY1iG,EAAQ+/C,GACxB,MAAM05D,EAAMuB,EAAcphJ,IAAImmF,GAC9B,GAAI2iD,EAAW,CACb,GAAI+W,GAAO/W,EAAUpzE,SAAU,CAC7BozE,EAAUxqG,OAAOuhH,EAAKjqJ,EAAO8oJ,GAC7B,QACF,CACE5V,EAAU3hG,QAEd,CACK04G,GAAQA,EAAIh9H,UAIjBujB,EAAQ+/C,GAAQ2iD,EAAY,IAAI8W,GAAUC,EAAK39I,EAAQikF,EAAMvwF,GAC7DmrJ,EAAWhmJ,KAAK+tI,IAJd5mI,EAAOikF,GAAQvwF,CAKnB,CACA,OAAOmrJ,CACT,CACA,MAAAziH,CAAOp8B,EAAQO,GACb,GAA8B,IAA1B5J,KAAKqoJ,YAAYzgJ,KAEnB,YADAlJ,OAAO02B,OAAO/rB,EAAQO,GAGxB,MAAMs+I,EAAaloJ,KAAK2oJ,kBAAkBt/I,EAAQO,GAClD,OAAIs+I,EAAWjqJ,QACbyoJ,GAASriJ,IAAIrE,KAAKukJ,OAAQ2D,IACnB,QAFT,CAIF,EAEF,SAASW,GAASX,EAAY11C,GAC5B,MAAMjlE,EAAU,GACVpvC,EAAOO,OAAOP,KAAKq0G,GACzB,IAAK,IAAIt0G,EAAI,EAAGA,EAAIC,EAAKF,OAAQC,IAAK,CACpC,MAAM6qJ,EAAOb,EAAW/pJ,EAAKD,IACzB6qJ,GAAQA,EAAKlsF,UACftvB,EAAQrrC,KAAK6mJ,EAAKnB,OAEtB,CACA,OAAO3qJ,QAAQwH,IAAI8oC,EACrB,CACA,SAASm7G,GAAqBr/I,EAAQo/I,GACpC,IAAKA,EACH,OAEF,IAAIpoJ,EAAUgJ,EAAOhJ,QACrB,GAAKA,EAOL,OAHIA,EAAQuoJ,UACVv/I,EAAOhJ,QAAUA,EAAU3B,OAAO02B,OAAO,CAAC,EAAG/0B,EAAS,CAACuoJ,SAAS,EAAOE,YAAa,CAAC,KAEhFzoJ,EANLgJ,EAAOhJ,QAAUooJ,CAOrB,CAEA,SAASO,GAAUjqG,EAAOkqG,GACxB,MAAM/2H,EAAO6sB,GAASA,EAAM1+C,SAAW,CAAC,EAClCk3H,EAAUrlG,EAAKqlG,QACfp8G,OAAmBxD,IAAbua,EAAK/W,IAAoB8tI,EAAkB,EACjD/tI,OAAmBvD,IAAbua,EAAKhX,IAAoB+tI,EAAkB,EACvD,MAAO,CACLnrI,MAAOy5G,EAAUr8G,EAAMC,EACvB4C,IAAKw5G,EAAUp8G,EAAMD,EAEzB,CACA,SAASguI,GAAY1qB,EAAQC,EAAQwqB,GACnC,IAAwB,IAApBA,EACF,OAAO,EAET,MAAMloH,EAAIioH,GAAUxqB,EAAQyqB,GACtBjoH,EAAIgoH,GAAUvqB,EAAQwqB,GAC5B,MAAO,CACLt8H,IAAKqU,EAAEjjB,IACPsvF,MAAOtsE,EAAEhjB,IACTu3H,OAAQt0G,EAAEljB,MACV8O,KAAMmU,EAAEjjB,MAEZ,CACA,SAASqrI,GAAOpsJ,GACd,IAAI6G,EAAGT,EAAGpF,EAAGgF,EASb,OARIsgB,EAAStmB,IACX6G,EAAI7G,EAAM4vB,IACVxpB,EAAIpG,EAAMswG,MACVtvG,EAAIhB,EAAMu4I,OACVvyI,EAAIhG,EAAM6vB,MAEVhpB,EAAIT,EAAIpF,EAAIgF,EAAIhG,EAEX,CACL4vB,IAAK/oB,EACLypG,MAAOlqG,EACPmyI,OAAQv3I,EACR6uB,KAAM7pB,EACNkW,UAAoB,IAAVlc,EAEd,CACA,SAASqsJ,GAAwB9Y,EAAO+Y,GACtC,MAAMlrJ,EAAO,GACPmrJ,EAAWhZ,EAAMiZ,uBAAuBF,GAC9C,IAAInrJ,EAAGy5H,EACP,IAAKz5H,EAAI,EAAGy5H,EAAO2xB,EAASrrJ,OAAQC,EAAIy5H,IAAQz5H,EAC9CC,EAAK+D,KAAKonJ,EAASprJ,GAAG8c,OAExB,OAAO7c,CACT,CACA,SAASqrJ,GAAWjhF,EAAOxrE,EAAO0sJ,EAASppJ,EAAU,CAAC,GACpD,MAAMlC,EAAOoqE,EAAMpqE,KACburJ,EAA8B,WAAjBrpJ,EAAQg1E,KAC3B,IAAIn3E,EAAGy5H,EAAME,EAAc8xB,EAC3B,GAAc,OAAV5sJ,EAAJ,CAGA,IAAKmB,EAAI,EAAGy5H,EAAOx5H,EAAKF,OAAQC,EAAIy5H,IAAQz5H,EAAG,CAE7C,GADA25H,GAAgB15H,EAAKD,GACjB25H,IAAiB4xB,EAAS,CAC5B,GAAIppJ,EAAQoE,IACV,SAEF,KACF,CACAklJ,EAAaphF,EAAM3+D,OAAOiuH,GACtBb,EAAe2yB,KAAgBD,GAAyB,IAAV3sJ,GAAeg+C,EAAKh+C,KAAWg+C,EAAK4uG,MACpF5sJ,GAAS4sJ,EAEb,CACA,OAAO5sJ,CAdP,CAeF,CACA,SAAS6sJ,GAAyBniJ,GAChC,MAAMtJ,EAAOO,OAAOP,KAAKsJ,GACnBoiJ,EAAQ,IAAIzrJ,MAAMD,EAAKF,QAC7B,IAAIC,EAAGy5H,EAAM54H,EACb,IAAKb,EAAI,EAAGy5H,EAAOx5H,EAAKF,OAAQC,EAAIy5H,IAAQz5H,EAC1Ca,EAAMZ,EAAKD,GACX2rJ,EAAM3rJ,GAAK,CACT6iC,EAAGhiC,EACHiiC,EAAGv5B,EAAK1I,IAGZ,OAAO8qJ,CACT,CACA,SAASC,GAAU/qG,EAAOlyC,GACxB,MAAMk9I,EAAUhrG,GAASA,EAAM1+C,QAAQ0pJ,QACvC,OAAOA,QAAwBpyI,IAAZoyI,QAAwCpyI,IAAf9K,EAAK07D,KACnD,CACA,SAASyhF,GAAYC,EAAYC,EAAYr9I,GAC3C,MAAO,GAAGo9I,EAAW1qJ,MAAM2qJ,EAAW3qJ,MAAMsN,EAAK07D,OAAS17D,EAAK7D,MACjE,CACA,SAASq1H,GAAct/E,GACrB,MAAM,IAAC5jC,EAAG,IAAED,EAAG,WAAEijH,EAAU,WAAEC,GAAcr/E,EAAMs/E,gBACjD,MAAO,CACLljH,IAAKgjH,EAAahjH,EAAMjO,OAAOi9I,kBAC/BjvI,IAAKkjH,EAAaljH,EAAMhO,OAAOksH,kBAEnC,CACA,SAASgxB,GAAiBC,EAAQC,EAAUC,GAC1C,MAAMC,EAAWH,EAAOC,KAAcD,EAAOC,GAAY,CAAC,GAC1D,OAAOE,EAASD,KAAgBC,EAASD,GAAc,CAAC,EAC1D,CACA,SAASE,GAAoBliF,EAAOmiF,EAAQC,EAAU3hJ,GACpD,IAAK,MAAM6D,KAAQ69I,EAAOE,wBAAwB5hJ,GAAMuuH,UAAW,CACjE,MAAMx6H,EAAQwrE,EAAM17D,EAAKmO,OACzB,GAAK2vI,GAAY5tJ,EAAQ,IAAQ4tJ,GAAY5tJ,EAAQ,EACnD,OAAO8P,EAAKmO,KAEhB,CACA,OAAO,IACT,CACA,SAAS6vI,GAAa5hG,EAAY+yF,GAChC,MAAM,MAAC1L,EAAOwa,YAAaj+I,GAAQo8C,EAC7BohG,EAAS/Z,EAAMya,UAAYza,EAAMya,QAAU,CAAC,IAC5C,OAAC9sB,EAAM,OAAEysB,EAAQ1vI,MAAO68G,GAAgBhrH,EACxCm+I,EAAQ/sB,EAAO7uG,KACf67H,EAAQP,EAAOt7H,KACfrwB,EAAMirJ,GAAY/rB,EAAQysB,EAAQ79I,GAClC8qH,EAAOqkB,EAAO/9I,OACpB,IAAIsqE,EACJ,IAAK,IAAIrqE,EAAI,EAAGA,EAAIy5H,IAAQz5H,EAAG,CAC7B,MAAMuyC,EAAOurG,EAAO99I,IACb,CAAC8sJ,GAAQhwI,EAAO,CAACiwI,GAAQluJ,GAAS0zC,EACnCy6G,EAAaz6G,EAAKs6G,UAAYt6G,EAAKs6G,QAAU,CAAC,GACpDxiF,EAAQ2iF,EAAWD,GAASb,GAAiBC,EAAQtrJ,EAAKic,GAC1DutD,EAAMsvD,GAAgB96H,EACtBwrE,EAAM4iF,KAAOV,GAAoBliF,EAAOmiF,GAAQ,EAAM79I,EAAK7D,MAC3Du/D,EAAM6iF,QAAUX,GAAoBliF,EAAOmiF,GAAQ,EAAO79I,EAAK7D,KACjE,CACF,CACA,SAASqiJ,GAAgB/a,EAAOlhH,GAC9B,MAAMoiH,EAASlB,EAAMkB,OACrB,OAAO9yI,OAAOP,KAAKqzI,GAAQxjI,QAAOjP,GAAOyyI,EAAOzyI,GAAKqwB,OAASA,IAAM+rB,OACtE,CACA,SAASmwG,GAAqBx8H,EAAQ9T,GACpC,OAAOm+H,GAAcrqH,EACnB,CACE+tC,QAAQ,EACR9uD,aAAS4J,EACTkgH,aAAc78G,EACdA,QACAq6D,KAAM,UACNrsE,KAAM,WAGZ,CACA,SAASuiJ,GAAkBz8H,EAAQ9T,EAAOjV,GACxC,OAAOozI,GAAcrqH,EAAQ,CAC3B+tC,QAAQ,EACRnxC,UAAW1Q,EACXghI,YAAQrkI,EACR+jC,SAAK/jC,EACL5R,UACAiV,QACAq6D,KAAM,UACNrsE,KAAM,QAEV,CACA,SAASwiJ,GAAY3+I,EAAM+a,GACzB,MAAMiwG,EAAehrH,EAAKo8C,WAAWjuC,MAC/BoU,EAAOviB,EAAK69I,QAAU79I,EAAK69I,OAAOt7H,KACxC,GAAKA,EAAL,CAGAxH,EAAQA,GAAS/a,EAAKqxH,QACtB,IAAK,MAAM8d,KAAUp0H,EAAO,CAC1B,MAAMyiI,EAASrO,EAAO+O,QACtB,IAAKV,QAA2B1yI,IAAjB0yI,EAAOj7H,SAAsDzX,IAA/B0yI,EAAOj7H,GAAMyoG,GACxD,cAEKwyB,EAAOj7H,GAAMyoG,EACtB,CARA,CASF,CACA,MAAM4zB,GAAsBp2E,GAAkB,UAATA,GAA6B,SAATA,EACnDq2E,GAAmB,CAACt+E,EAAQu+E,IAAWA,EAASv+E,EAAS1uE,OAAO02B,OAAO,CAAC,EAAGg4C,GAC3Ew+E,GAAc,CAACC,EAAUh/I,EAAMyjI,IAAUub,IAAah/I,EAAKi/I,QAAUj/I,EAAKk/I,UAC3E,CAAC5tJ,KAAMirJ,GAAwB9Y,GAAO,GAAO1mI,OAAQ,MAC1D,MAAMoiJ,GACJ,WAAAhuJ,CAAYsyI,EAAOzY,GACjB73H,KAAKswI,MAAQA,EACbtwI,KAAKmuF,KAAOmiD,EAAMhiE,IAClBtuE,KAAKgb,MAAQ68G,EACb73H,KAAKisJ,gBAAkB,CAAC,EACxBjsJ,KAAK8qJ,YAAc9qJ,KAAKksJ,UACxBlsJ,KAAKmsJ,MAAQnsJ,KAAK8qJ,YAAY9hJ,KAC9BhJ,KAAKK,aAAUsX,EACf3X,KAAK+7I,UAAW,EAChB/7I,KAAKosJ,WAAQz0I,EACb3X,KAAKqsJ,iBAAc10I,EACnB3X,KAAKssJ,oBAAiB30I,EACtB3X,KAAKusJ,gBAAa50I,EAClB3X,KAAKwsJ,gBAAa70I,EAClB3X,KAAKysJ,qBAAsB,EAC3BzsJ,KAAK0sJ,oBAAqB,EAC1B1sJ,KAAK2sJ,cAAWh1I,EAChB3X,KAAK4sJ,UAAY,GACjB5sJ,KAAK6sJ,YACP,CACA,UAAAA,GACE,MAAMhgJ,EAAO7M,KAAK8qJ,YAClB9qJ,KAAKsoJ,YACLtoJ,KAAK8sJ,aACLjgJ,EAAKk/I,SAAWjC,GAAUj9I,EAAK69I,OAAQ79I,GACvC7M,KAAK+sJ,aACP,CACA,WAAAC,CAAYn1B,GACN73H,KAAKgb,QAAU68G,GACjB2zB,GAAYxrJ,KAAK8qJ,aAEnB9qJ,KAAKgb,MAAQ68G,CACf,CACA,UAAAi1B,GACE,MAAMxc,EAAQtwI,KAAKswI,MACbzjI,EAAO7M,KAAK8qJ,YACZ/8I,EAAU/N,KAAKitJ,aACfC,EAAW,CAAC99H,EAAM2R,EAAGC,EAAG79B,IAAe,MAATisB,EAAe2R,EAAa,MAAT3R,EAAejsB,EAAI69B,EACpEmsH,EAAMtgJ,EAAKugJ,QAAUl2B,EAAenpH,EAAQq/I,QAAS/B,GAAgB/a,EAAO,MAC5E+c,EAAMxgJ,EAAKygJ,QAAUp2B,EAAenpH,EAAQu/I,QAASjC,GAAgB/a,EAAO,MAC5Eid,EAAM1gJ,EAAK2gJ,QAAUt2B,EAAenpH,EAAQy/I,QAASnC,GAAgB/a,EAAO,MAC5ES,EAAYlkI,EAAKkkI,UACjB0c,EAAM5gJ,EAAK6gJ,QAAUR,EAASnc,EAAWoc,EAAKE,EAAKE,GACnDI,EAAM9gJ,EAAK+gJ,QAAUV,EAASnc,EAAWsc,EAAKF,EAAKI,GACzD1gJ,EAAK2xH,OAASx+H,KAAK6tJ,cAAcV,GACjCtgJ,EAAK4xH,OAASz+H,KAAK6tJ,cAAcR,GACjCxgJ,EAAKihJ,OAAS9tJ,KAAK6tJ,cAAcN,GACjC1gJ,EAAKoxH,OAASj+H,KAAK6tJ,cAAcJ,GACjC5gJ,EAAK69I,OAAS1qJ,KAAK6tJ,cAAcF,EACnC,CACA,UAAAV,GACE,OAAOjtJ,KAAKswI,MAAM7oI,KAAK2oI,SAASpwI,KAAKgb,MACvC,CACA,OAAAkxI,GACE,OAAOlsJ,KAAKswI,MAAMyd,eAAe/tJ,KAAKgb,MACxC,CACA,aAAA6yI,CAAcG,GACZ,OAAOhuJ,KAAKswI,MAAMkB,OAAOwc,EAC3B,CACA,cAAAC,CAAelvG,GACb,MAAMlyC,EAAO7M,KAAK8qJ,YAClB,OAAO/rG,IAAUlyC,EAAKoxH,OAClBpxH,EAAK69I,OACL79I,EAAKoxH,MACX,CACA,KAAAp5H,GACE7E,KAAK6oG,QAAQ,QACf,CACA,QAAAqlD,GACE,MAAMrhJ,EAAO7M,KAAK8qJ,YACd9qJ,KAAKosJ,OACPtvB,GAAoB98H,KAAKosJ,MAAOpsJ,MAE9B6M,EAAKk/I,UACPP,GAAY3+I,EAEhB,CACA,UAAAshJ,GACE,MAAMpgJ,EAAU/N,KAAKitJ,aACfxlJ,EAAOsG,EAAQtG,OAASsG,EAAQtG,KAAO,IACvC2kJ,EAAQpsJ,KAAKosJ,MACnB,GAAI/oI,EAAS5b,GACXzH,KAAKosJ,MAAQxC,GAAyBniJ,QACjC,GAAI2kJ,IAAU3kJ,EAAM,CACzB,GAAI2kJ,EAAO,CACTtvB,GAAoBsvB,EAAOpsJ,MAC3B,MAAM6M,EAAO7M,KAAK8qJ,YAClBU,GAAY3+I,GACZA,EAAKqxH,QAAU,EACjB,CACIz2H,GAAQ/I,OAAOmmE,aAAap9D,IAC9Bk1H,GAAkBl1H,EAAMzH,MAE1BA,KAAK4sJ,UAAY,GACjB5sJ,KAAKosJ,MAAQ3kJ,CACf,CACF,CACA,WAAAslJ,GACE,MAAMlgJ,EAAO7M,KAAK8qJ,YAClB9qJ,KAAKmuJ,aACDnuJ,KAAKouJ,qBACPvhJ,EAAKkB,QAAU,IAAI/N,KAAKouJ,mBAE5B,CACA,qBAAAC,CAAsBC,GACpB,MAAMzhJ,EAAO7M,KAAK8qJ,YACZ/8I,EAAU/N,KAAKitJ,aACrB,IAAIsB,GAAe,EACnBvuJ,KAAKmuJ,aACL,MAAMK,EAAa3hJ,EAAKk/I,SACxBl/I,EAAKk/I,SAAWjC,GAAUj9I,EAAK69I,OAAQ79I,GACnCA,EAAK07D,QAAUx6D,EAAQw6D,QACzBgmF,GAAe,EACf/C,GAAY3+I,GACZA,EAAK07D,MAAQx6D,EAAQw6D,OAEvBvoE,KAAKyuJ,gBAAgBH,IACjBC,GAAgBC,IAAe3hJ,EAAKk/I,WACtClB,GAAa7qJ,KAAM6M,EAAKqxH,QAE5B,CACA,SAAAoqB,GACE,MAAMtiJ,EAAShG,KAAKswI,MAAMtqI,OACpB0oJ,EAAY1oJ,EAAO2oJ,iBAAiB3uJ,KAAKmsJ,OACzCvvF,EAAS52D,EAAO4oJ,gBAAgB5uJ,KAAKitJ,aAAcyB,GAAW,GACpE1uJ,KAAKK,QAAU2F,EAAO6oJ,eAAejyF,EAAQ58D,KAAK6lF,cAClD7lF,KAAK+7I,SAAW/7I,KAAKK,QAAQgxI,QAC7BrxI,KAAKisJ,gBAAkB,CAAC,CAC1B,CACA,KAAA9+I,CAAM2Q,EAAOinG,GACX,MAAO+lC,YAAaj+I,EAAMu/I,MAAO3kJ,GAAQzH,MACnC,OAACi+H,EAAM,SAAE8tB,GAAYl/I,EACrBm+I,EAAQ/sB,EAAO7uG,KACrB,IAEIlxB,EAAGqsE,EAAKyxE,EAFR8S,EAAmB,IAAVhxI,GAAeinG,IAAUt9G,EAAKxJ,QAAgB4O,EAAKmxH,QAC5D3uH,EAAOyO,EAAQ,GAAKjR,EAAKqxH,QAAQpgH,EAAQ,GAE7C,IAAsB,IAAlB9d,KAAK+7I,SACPlvI,EAAKqxH,QAAUz2H,EACfoF,EAAKmxH,SAAU,EACfge,EAASv0I,MACJ,CAEHu0I,EADE39I,EAAQoJ,EAAKqW,IACN9d,KAAK+uJ,eAAeliJ,EAAMpF,EAAMqW,EAAOinG,GACvC1hG,EAAS5b,EAAKqW,IACd9d,KAAKgvJ,gBAAgBniJ,EAAMpF,EAAMqW,EAAOinG,GAExC/kH,KAAKivJ,mBAAmBpiJ,EAAMpF,EAAMqW,EAAOinG,GAEtD,MAAMmqC,EAA6B,IAAqB,OAAf3kF,EAAIygF,IAAoB37I,GAAQk7D,EAAIygF,GAAS37I,EAAK27I,GAC3F,IAAK9sJ,EAAI,EAAGA,EAAI6mH,IAAS7mH,EACvB2O,EAAKqxH,QAAQhgI,EAAI4f,GAASysD,EAAMyxE,EAAO99I,GACnC4wJ,IACEI,MACFJ,GAAS,GAEXz/I,EAAOk7D,GAGX19D,EAAKmxH,QAAU8wB,CACjB,CACI/C,GACFlB,GAAa7qJ,KAAMg8I,EAEvB,CACA,kBAAAiT,CAAmBpiJ,EAAMpF,EAAMqW,EAAOinG,GACpC,MAAM,OAACkZ,EAAM,OAAEysB,GAAU79I,EACnBm+I,EAAQ/sB,EAAO7uG,KACf67H,EAAQP,EAAOt7H,KACf+/H,EAASlxB,EAAOmxB,YAChBC,EAAcpxB,IAAWysB,EACzB1O,EAAS,IAAI59I,MAAM2mH,GACzB,IAAI7mH,EAAGy5H,EAAM38G,EACb,IAAK9c,EAAI,EAAGy5H,EAAO5S,EAAO7mH,EAAIy5H,IAAQz5H,EACpC8c,EAAQ9c,EAAI4f,EACZk+H,EAAO99I,GAAK,CACV,CAAC8sJ,GAAQqE,GAAepxB,EAAO9wH,MAAMgiJ,EAAOn0I,GAAQA,GACpD,CAACiwI,GAAQP,EAAOv9I,MAAM1F,EAAKuT,GAAQA,IAGvC,OAAOghI,CACT,CACA,cAAA+S,CAAeliJ,EAAMpF,EAAMqW,EAAOinG,GAChC,MAAM,OAACyZ,EAAM,OAAEC,GAAU5xH,EACnBmvI,EAAS,IAAI59I,MAAM2mH,GACzB,IAAI7mH,EAAGy5H,EAAM38G,EAAOy1B,EACpB,IAAKvyC,EAAI,EAAGy5H,EAAO5S,EAAO7mH,EAAIy5H,IAAQz5H,EACpC8c,EAAQ9c,EAAI4f,EACZ2yB,EAAOhpC,EAAKuT,GACZghI,EAAO99I,GAAK,CACV6iC,EAAGy9F,EAAOrxH,MAAMsjC,EAAK,GAAIz1B,GACzBgmB,EAAGy9F,EAAOtxH,MAAMsjC,EAAK,GAAIz1B,IAG7B,OAAOghI,CACT,CACA,eAAAgT,CAAgBniJ,EAAMpF,EAAMqW,EAAOinG,GACjC,MAAM,OAACyZ,EAAM,OAAEC,GAAU5xH,GACnB,SAACyiJ,EAAW,IAAG,SAAEC,EAAW,KAAOvvJ,KAAK+7I,SACxCC,EAAS,IAAI59I,MAAM2mH,GACzB,IAAI7mH,EAAGy5H,EAAM38G,EAAOy1B,EACpB,IAAKvyC,EAAI,EAAGy5H,EAAO5S,EAAO7mH,EAAIy5H,IAAQz5H,EACpC8c,EAAQ9c,EAAI4f,EACZ2yB,EAAOhpC,EAAKuT,GACZghI,EAAO99I,GAAK,CACV6iC,EAAGy9F,EAAOrxH,MAAMurH,EAAiBjoF,EAAM6+G,GAAWt0I,GAClDgmB,EAAGy9F,EAAOtxH,MAAMurH,EAAiBjoF,EAAM8+G,GAAWv0I,IAGtD,OAAOghI,CACT,CACA,SAAAwT,CAAUx0I,GACR,OAAOhb,KAAK8qJ,YAAY5sB,QAAQljH,EAClC,CACA,cAAAy0I,CAAez0I,GACb,OAAOhb,KAAK8qJ,YAAYrjJ,KAAKuT,EAC/B,CACA,UAAAwuI,CAAWzqG,EAAOi9F,EAAQ3mE,GACxB,MAAMi7D,EAAQtwI,KAAKswI,MACbzjI,EAAO7M,KAAK8qJ,YACZ/tJ,EAAQi/I,EAAOj9F,EAAM3vB,MACrBm5C,EAAQ,CACZpqE,KAAMirJ,GAAwB9Y,GAAO,GACrC1mI,OAAQoyI,EAAO+O,QAAQhsG,EAAM3vB,OAE/B,OAAOo6H,GAAWjhF,EAAOxrE,EAAO8P,EAAKmO,MAAO,CAACq6D,QAC/C,CACA,qBAAAq6E,CAAsB/1B,EAAO56E,EAAOi9F,EAAQzzE,GAC1C,MAAMonF,EAAc3T,EAAOj9F,EAAM3vB,MACjC,IAAIryB,EAAwB,OAAhB4yJ,EAAuBh2F,IAAMg2F,EACzC,MAAM/lJ,EAAS2+D,GAASyzE,EAAO+O,QAAQhsG,EAAM3vB,MACzCm5C,GAAS3+D,IACX2+D,EAAM3+D,OAASA,EACf7M,EAAQysJ,GAAWjhF,EAAOonF,EAAa3vJ,KAAK8qJ,YAAY9vI,QAE1D2+G,EAAMx+G,IAAMlW,KAAKkW,IAAIw+G,EAAMx+G,IAAKpe,GAChC48H,EAAMz+G,IAAMjW,KAAKiW,IAAIy+G,EAAMz+G,IAAKne,EAClC,CACA,SAAA6yJ,CAAU7wG,EAAO8sG,GACf,MAAMh/I,EAAO7M,KAAK8qJ,YACZ5sB,EAAUrxH,EAAKqxH,QACf4wB,EAASjiJ,EAAKmxH,SAAWj/E,IAAUlyC,EAAKoxH,OACxCtG,EAAOuG,EAAQjgI,OACf4xJ,EAAa7vJ,KAAKiuJ,eAAelvG,GACjCwpB,EAAQqjF,GAAYC,EAAUh/I,EAAM7M,KAAKswI,OACzC3W,EAAQ,CAACx+G,IAAKjO,OAAOksH,kBAAmBl+G,IAAKhO,OAAOi9I,oBACnDhvI,IAAK20I,EAAU50I,IAAK60I,GAAY1xB,GAAcwxB,GACrD,IAAI3xJ,EAAG89I,EACP,SAASgU,IACPhU,EAAS9d,EAAQhgI,GACjB,MAAMyrJ,EAAa3N,EAAO6T,EAAWzgI,MACrC,OAAQ4nG,EAAeglB,EAAOj9F,EAAM3vB,QAAU0gI,EAAWnG,GAAcoG,EAAWpG,CACpF,CACA,IAAKzrJ,EAAI,EAAGA,EAAIy5H,IAAQz5H,EACtB,IAAI8xJ,MAGJhwJ,KAAK0vJ,sBAAsB/1B,EAAO56E,EAAOi9F,EAAQzzE,GAC7CumF,GACF,MAGJ,GAAIA,EACF,IAAK5wJ,EAAIy5H,EAAO,EAAGz5H,GAAK,IAAKA,EAC3B,IAAI8xJ,IAAJ,CAGAhwJ,KAAK0vJ,sBAAsB/1B,EAAO56E,EAAOi9F,EAAQzzE,GACjD,KAFA,CAKJ,OAAOoxD,CACT,CACA,kBAAAs2B,CAAmBlxG,GACjB,MAAMi9F,EAASh8I,KAAK8qJ,YAAY5sB,QAC1Bt0H,EAAS,GACf,IAAI1L,EAAGy5H,EAAM56H,EACb,IAAKmB,EAAI,EAAGy5H,EAAOqkB,EAAO/9I,OAAQC,EAAIy5H,IAAQz5H,EAC5CnB,EAAQi/I,EAAO99I,GAAG6gD,EAAM3vB,MACpB4nG,EAAej6H,IACjB6M,EAAO1H,KAAKnF,GAGhB,OAAO6M,CACT,CACA,cAAAsmJ,GACE,OAAO,CACT,CACA,gBAAAC,CAAiBn1I,GACf,MAAMnO,EAAO7M,KAAK8qJ,YACZ7sB,EAASpxH,EAAKoxH,OACdysB,EAAS79I,EAAK69I,OACd1O,EAASh8I,KAAKwvJ,UAAUx0I,GAC9B,MAAO,CACL8c,MAAOmmG,EAAS,GAAKA,EAAOmyB,iBAAiBpU,EAAO/d,EAAO7uG,OAAS,GACpEryB,MAAO2tJ,EAAS,GAAKA,EAAO0F,iBAAiBpU,EAAO0O,EAAOt7H,OAAS,GAExE,CACA,OAAAy5E,CAAQxzB,GACN,MAAMxoE,EAAO7M,KAAK8qJ,YAClB9qJ,KAAKylC,OAAO4vC,GAAQ,WACpBxoE,EAAKwjJ,MAAQlH,GAAOjyB,EAAel3H,KAAKK,QAAQm1I,KAAM0T,GAAYr8I,EAAK2xH,OAAQ3xH,EAAK4xH,OAAQz+H,KAAKkwJ,mBACnG,CACA,MAAAzqH,CAAO4vC,GAAO,CACd,IAAA6wE,GACE,MAAM53E,EAAMtuE,KAAKmuF,KACXmiD,EAAQtwI,KAAKswI,MACbzjI,EAAO7M,KAAK8qJ,YACZ5zI,EAAWrK,EAAKpF,MAAQ,GACxB2tI,EAAO9E,EAAMggB,UACbzzF,EAAS,GACT/+C,EAAQ9d,KAAKusJ,YAAc,EAC3BxnC,EAAQ/kH,KAAKwsJ,YAAet1I,EAASjZ,OAAS6f,EAC9C4zH,EAA0B1xI,KAAKK,QAAQqxI,wBAC7C,IAAIxzI,EAIJ,IAHI2O,EAAKkB,SACPlB,EAAKkB,QAAQm4I,KAAK53E,EAAK8mE,EAAMt3H,EAAOinG,GAEjC7mH,EAAI4f,EAAO5f,EAAI4f,EAAQinG,IAAS7mH,EAAG,CACtC,MAAM6H,EAAUmR,EAAShZ,GACrB6H,EAAQ+lJ,SAGR/lJ,EAAQ82D,QAAU60E,EACpB70E,EAAO36D,KAAK6D,GAEZA,EAAQmgJ,KAAK53E,EAAK8mE,GAEtB,CACA,IAAKl3I,EAAI,EAAGA,EAAI2+D,EAAO5+D,SAAUC,EAC/B2+D,EAAO3+D,GAAGgoJ,KAAK53E,EAAK8mE,EAExB,CACA,QAAA6J,CAASjkI,EAAO6hD,GACd,MAAMwY,EAAOxY,EAAS,SAAW,UACjC,YAAiBllD,IAAVqD,GAAuBhb,KAAK8qJ,YAAY/8I,QAC3C/N,KAAKuwJ,6BAA6Bl7E,GAClCr1E,KAAKwwJ,0BAA0Bx1I,GAAS,EAAGq6D,EACjD,CACA,UAAAwQ,CAAW7qE,EAAO6hD,EAAQwY,GACxB,MAAMtnE,EAAU/N,KAAKitJ,aACrB,IAAI5kI,EACJ,GAAIrN,GAAS,GAAKA,EAAQhb,KAAK8qJ,YAAYrjJ,KAAKxJ,OAAQ,CACtD,MAAM8H,EAAU/F,KAAK8qJ,YAAYrjJ,KAAKuT,GACtCqN,EAAUtiB,EAAQ4mJ,WACf5mJ,EAAQ4mJ,SAAWpB,GAAkBvrJ,KAAK6lF,aAAc7qE,EAAOjV,IAClEsiB,EAAQ2zH,OAASh8I,KAAKwvJ,UAAUx0I,GAChCqN,EAAQqzB,IAAM3tC,EAAQtG,KAAKuT,GAC3BqN,EAAQrN,MAAQqN,EAAQqD,UAAY1Q,CACtC,MACEqN,EAAUroB,KAAK2sJ,WACZ3sJ,KAAK2sJ,SAAWrB,GAAqBtrJ,KAAKswI,MAAMzqD,aAAc7lF,KAAKgb,QACtEqN,EAAQta,QAAUA,EAClBsa,EAAQrN,MAAQqN,EAAQwvG,aAAe73H,KAAKgb,MAI9C,OAFAqN,EAAQw0C,SAAWA,EACnBx0C,EAAQgtD,KAAOA,EACRhtD,CACT,CACA,4BAAAkoI,CAA6Bl7E,GAC3B,OAAOr1E,KAAKywJ,uBAAuBzwJ,KAAKouJ,mBAAmB7uJ,GAAI81E,EACjE,CACA,yBAAAm7E,CAA0Bx1I,EAAOq6D,GAC/B,OAAOr1E,KAAKywJ,uBAAuBzwJ,KAAK0wJ,gBAAgBnxJ,GAAI81E,EAAMr6D,EACpE,CACA,sBAAAy1I,CAAuBE,EAAat7E,EAAO,UAAWr6D,GACpD,MAAM6hD,EAAkB,WAATwY,EACT9+B,EAAQv2C,KAAKisJ,gBACbx+C,EAAWkjD,EAAc,IAAMt7E,EAC/BjI,EAAS72B,EAAMk3D,GACfmjD,EAAU5wJ,KAAKysJ,qBAAuB1zB,EAAQ/9G,GACpD,GAAIoyD,EACF,OAAOs+E,GAAiBt+E,EAAQwjF,GAElC,MAAM5qJ,EAAShG,KAAKswI,MAAMtqI,OACpB0oJ,EAAY1oJ,EAAO6qJ,wBAAwB7wJ,KAAKmsJ,MAAOwE,GACvD7qD,EAAWjpC,EAAS,CAAC,GAAG8zF,SAAoB,QAASA,EAAa,IAAM,CAACA,EAAa,IACtF/zF,EAAS52D,EAAO4oJ,gBAAgB5uJ,KAAKitJ,aAAcyB,GACnD5gB,EAAQpvI,OAAOP,KAAK80C,GAAS/7B,SAASy5I,IACtCtoI,EAAU,IAAMroB,KAAK6lF,WAAW7qE,EAAO6hD,GACvCjzD,EAAS5D,EAAO8qJ,oBAAoBl0F,EAAQkxE,EAAOzlH,EAASy9E,GAKlE,OAJIl8F,EAAOg/I,UACTh/I,EAAOg/I,QAAUgI,EACjBr6G,EAAMk3D,GAAY/uG,OAAOqyJ,OAAOrF,GAAiB9hJ,EAAQgnJ,KAEpDhnJ,CACT,CACA,kBAAAonJ,CAAmBh2I,EAAO+O,EAAY8yC,GACpC,MAAMyzE,EAAQtwI,KAAKswI,MACb/5F,EAAQv2C,KAAKisJ,gBACbx+C,EAAW,aAAa1jF,IACxBqjD,EAAS72B,EAAMk3D,GACrB,GAAIrgC,EACF,OAAOA,EAET,IAAI/sE,EACJ,IAAgC,IAA5BiwI,EAAMjwI,QAAQ4vI,UAAqB,CACrC,MAAMjqI,EAAShG,KAAKswI,MAAMtqI,OACpB0oJ,EAAY1oJ,EAAOirJ,0BAA0BjxJ,KAAKmsJ,MAAOpiI,GACzD6yC,EAAS52D,EAAO4oJ,gBAAgB5uJ,KAAKitJ,aAAcyB,GACzDruJ,EAAU2F,EAAO6oJ,eAAejyF,EAAQ58D,KAAK6lF,WAAW7qE,EAAO6hD,EAAQ9yC,GACzE,CACA,MAAMm+H,EAAa,IAAIE,GAAW9X,EAAOjwI,GAAWA,EAAQ6nJ,YAI5D,OAHI7nJ,GAAWA,EAAQ2lE,aACrBzvB,EAAMk3D,GAAY/uG,OAAOqyJ,OAAO7I,IAE3BA,CACT,CACA,gBAAAgJ,CAAiB7wJ,GACf,GAAKA,EAAQuoJ,QAGb,OAAO5oJ,KAAKssJ,iBAAmBtsJ,KAAKssJ,eAAiB5tJ,OAAO02B,OAAO,CAAC,EAAG/0B,GACzE,CACA,cAAA8wJ,CAAe97E,EAAM+7E,GACnB,OAAQA,GAAiB3F,GAAmBp2E,IAASr1E,KAAKswI,MAAM+gB,mBAClE,CACA,iBAAAC,CAAkBxzI,EAAOu3D,GACvB,MAAMk8E,EAAYvxJ,KAAKwwJ,0BAA0B1yI,EAAOu3D,GAClDm8E,EAA0BxxJ,KAAKssJ,eAC/B8E,EAAgBpxJ,KAAKkxJ,iBAAiBK,GACtCJ,EAAiBnxJ,KAAKmxJ,eAAe97E,EAAM+7E,IAAmBA,IAAkBI,EAEtF,OADAxxJ,KAAKyxJ,oBAAoBL,EAAe/7E,EAAMk8E,GACvC,CAACH,gBAAeD,iBACzB,CACA,aAAAO,CAAc3rJ,EAASiV,EAAOw3F,EAAYn9B,GACpCo2E,GAAmBp2E,GACrB32E,OAAO02B,OAAOrvB,EAASysG,GAEvBxyG,KAAKgxJ,mBAAmBh2I,EAAOq6D,GAAM5vC,OAAO1/B,EAASysG,EAEzD,CACA,mBAAAi/C,CAAoBL,EAAe/7E,EAAMozE,GACnC2I,IAAkB3F,GAAmBp2E,IACvCr1E,KAAKgxJ,wBAAmBr5I,EAAW09D,GAAM5vC,OAAO2rH,EAAe3I,EAEnE,CACA,SAAAkJ,CAAU5rJ,EAASiV,EAAOq6D,EAAMxY,GAC9B92D,EAAQ82D,OAASA,EACjB,MAAMx8D,EAAUL,KAAKi/I,SAASjkI,EAAO6hD,GACrC78D,KAAKgxJ,mBAAmBh2I,EAAOq6D,EAAMxY,GAAQp3B,OAAO1/B,EAAS,CAC3D1F,SAAWw8D,GAAU78D,KAAKkxJ,iBAAiB7wJ,IAAaA,GAE5D,CACA,gBAAAuxJ,CAAiB7rJ,EAAS8xH,EAAc78G,GACtChb,KAAK2xJ,UAAU5rJ,EAASiV,EAAO,UAAU,EAC3C,CACA,aAAA62I,CAAc9rJ,EAAS8xH,EAAc78G,GACnChb,KAAK2xJ,UAAU5rJ,EAASiV,EAAO,UAAU,EAC3C,CACA,wBAAA82I,GACE,MAAM/rJ,EAAU/F,KAAK8qJ,YAAY/8I,QAC7BhI,GACF/F,KAAK2xJ,UAAU5rJ,OAAS4R,EAAW,UAAU,EAEjD,CACA,qBAAAo6I,GACE,MAAMhsJ,EAAU/F,KAAK8qJ,YAAY/8I,QAC7BhI,GACF/F,KAAK2xJ,UAAU5rJ,OAAS4R,EAAW,UAAU,EAEjD,CACA,eAAA82I,CAAgBH,GACd,MAAM7mJ,EAAOzH,KAAKosJ,MACZl1I,EAAWlX,KAAK8qJ,YAAYrjJ,KAClC,IAAK,MAAOmO,EAAQo8I,EAAMC,KAASjyJ,KAAK4sJ,UACtC5sJ,KAAK4V,GAAQo8I,EAAMC,GAErBjyJ,KAAK4sJ,UAAY,GACjB,MAAMsF,EAAUh7I,EAASjZ,OACnBk0J,EAAU1qJ,EAAKxJ,OACf8mH,EAAQ9/G,KAAKkW,IAAIg3I,EAASD,GAC5BntC,GACF/kH,KAAKmN,MAAM,EAAG43G,GAEZotC,EAAUD,EACZlyJ,KAAKoyJ,gBAAgBF,EAASC,EAAUD,EAAS5D,GACxC6D,EAAUD,GACnBlyJ,KAAKqyJ,gBAAgBF,EAASD,EAAUC,EAE5C,CACA,eAAAC,CAAgBt0I,EAAOinG,EAAOupC,GAAmB,GAC/C,MAAMzhJ,EAAO7M,KAAK8qJ,YACZrjJ,EAAOoF,EAAKpF,KACZsW,EAAMD,EAAQinG,EACpB,IAAI7mH,EACJ,MAAMiwC,EAAQpmB,IAEZ,IADAA,EAAI9pB,QAAU8mH,EACT7mH,EAAI6pB,EAAI9pB,OAAS,EAAGC,GAAK6f,EAAK7f,IACjC6pB,EAAI7pB,GAAK6pB,EAAI7pB,EAAI6mH,EACnB,EAGF,IADA52E,EAAK1mC,GACAvJ,EAAI4f,EAAO5f,EAAI6f,IAAO7f,EACzBuJ,EAAKvJ,GAAK,IAAI8B,KAAK0wJ,gBAEjB1wJ,KAAK+7I,UACP5tG,EAAKthC,EAAKqxH,SAEZl+H,KAAKmN,MAAM2Q,EAAOinG,GACdupC,GACFtuJ,KAAKsyJ,eAAe7qJ,EAAMqW,EAAOinG,EAAO,QAE5C,CACA,cAAAutC,CAAevsJ,EAAS+X,EAAOinG,EAAO1vC,GAAO,CAC7C,eAAAg9E,CAAgBv0I,EAAOinG,GACrB,MAAMl4G,EAAO7M,KAAK8qJ,YAClB,GAAI9qJ,KAAK+7I,SAAU,CACjB,MAAMwW,EAAU1lJ,EAAKqxH,QAAQ5yG,OAAOxN,EAAOinG,GACvCl4G,EAAKk/I,UACPP,GAAY3+I,EAAM0lJ,EAEtB,CACA1lJ,EAAKpF,KAAK6jB,OAAOxN,EAAOinG,EAC1B,CACA,KAAAytC,CAAM3mJ,GACJ,GAAI7L,KAAK+7I,SACP/7I,KAAK4sJ,UAAU1qJ,KAAK2J,OACf,CACL,MAAO+J,EAAQo8I,EAAMC,GAAQpmJ,EAC7B7L,KAAK4V,GAAQo8I,EAAMC,EACrB,CACAjyJ,KAAKswI,MAAMmiB,aAAavwJ,KAAK,CAAClC,KAAKgb,SAAUnP,GAC/C,CACA,WAAA6mJ,GACE,MAAM3tC,EAAQh+F,UAAU9oB,OACxB+B,KAAKwyJ,MAAM,CAAC,kBAAmBxyJ,KAAKitJ,aAAaxlJ,KAAKxJ,OAAS8mH,EAAOA,GACxE,CACA,UAAA4tC,GACE3yJ,KAAKwyJ,MAAM,CAAC,kBAAmBxyJ,KAAK8qJ,YAAYrjJ,KAAKxJ,OAAS,EAAG,GACnE,CACA,YAAA20J,GACE5yJ,KAAKwyJ,MAAM,CAAC,kBAAmB,EAAG,GACpC,CACA,aAAAK,CAAc/0I,EAAOinG,GACfA,GACF/kH,KAAKwyJ,MAAM,CAAC,kBAAmB10I,EAAOinG,IAExC,MAAM+tC,EAAW/rI,UAAU9oB,OAAS,EAChC60J,GACF9yJ,KAAKwyJ,MAAM,CAAC,kBAAmB10I,EAAOg1I,GAE1C,CACA,cAAAC,GACE/yJ,KAAKwyJ,MAAM,CAAC,kBAAmB,EAAGzrI,UAAU9oB,QAC9C,EAMF,SAAS+0J,GAAkBj0G,EAAO/1C,GAChC,IAAK+1C,EAAM73B,OAAO+rI,KAAM,CACtB,MAAMC,EAAen0G,EAAM6rG,wBAAwB5hJ,GACnD,IAAIY,EAAS,GACb,IAAK,IAAI1L,EAAI,EAAGy5H,EAAOu7B,EAAaj1J,OAAQC,EAAIy5H,EAAMz5H,IACpD0L,EAASA,EAAOgF,OAAOskJ,EAAah1J,GAAG+qD,WAAWgnG,mBAAmBlxG,IAEvEA,EAAM73B,OAAO+rI,KAAOj2B,GAAapzH,EAAOymC,MAAK,CAACvyC,EAAGC,IAAMD,EAAIC,IAC7D,CACA,OAAOghD,EAAM73B,OAAO+rI,IACtB,CACA,SAASE,GAAqBtmJ,GAC5B,MAAMkyC,EAAQlyC,EAAKoxH,OACbr0H,EAASopJ,GAAkBj0G,EAAOlyC,EAAK7D,MAC7C,IACI9K,EAAGy5H,EAAMy7B,EAAM/jJ,EADf8L,EAAM4jC,EAAMs0G,QAEhB,MAAMC,EAAmB,KACV,QAATF,IAA4B,QAAVA,IAGlBr6B,EAAQ1pH,KACV8L,EAAMlW,KAAKkW,IAAIA,EAAKlW,KAAKyW,IAAI03I,EAAO/jJ,IAAS8L,IAE/C9L,EAAO+jJ,EAAI,EAEb,IAAKl1J,EAAI,EAAGy5H,EAAO/tH,EAAO3L,OAAQC,EAAIy5H,IAAQz5H,EAC5Ck1J,EAAOr0G,EAAMu/E,iBAAiB10H,EAAO1L,IACrCo1J,IAGF,IADAjkJ,OAAOsI,EACFzZ,EAAI,EAAGy5H,EAAO54E,EAAMw0G,MAAMt1J,OAAQC,EAAIy5H,IAAQz5H,EACjDk1J,EAAOr0G,EAAMy0G,gBAAgBt1J,GAC7Bo1J,IAEF,OAAOn4I,CACT,CACA,SAASs4I,GAAyBz4I,EAAO04I,EAAOrzJ,EAASszJ,GACvD,MAAMC,EAAYvzJ,EAAQwzJ,aAC1B,IAAIjsJ,EAAM+kC,EAQV,OAPIoqF,EAAc68B,IAChBhsJ,EAAO8rJ,EAAMv4I,IAAM9a,EAAQyzJ,mBAC3BnnH,EAAQtsC,EAAQ0zJ,gBAEhBnsJ,EAAOgsJ,EAAYD,EACnBhnH,EAAQ,GAEH,CACLqnH,MAAOpsJ,EAAO+rJ,EACdhnH,QACA7uB,MAAO41I,EAAMO,OAAOj5I,GAAUpT,EAAO,EAEzC,CACA,SAASssJ,GAA0Bl5I,EAAO04I,EAAOrzJ,EAASszJ,GACxD,MAAMM,EAASP,EAAMO,OACfb,EAAOa,EAAOj5I,GACpB,IAAI3L,EAAO2L,EAAQ,EAAIi5I,EAAOj5I,EAAQ,GAAK,KACvC3d,EAAO2d,EAAQi5I,EAAOh2J,OAAS,EAAIg2J,EAAOj5I,EAAQ,GAAK,KAC3D,MAAMm5I,EAAU9zJ,EAAQyzJ,mBACX,OAATzkJ,IACFA,EAAO+jJ,GAAiB,OAAT/1J,EAAgBq2J,EAAM31I,IAAM21I,EAAM51I,MAAQzgB,EAAO+1J,IAErD,OAAT/1J,IACFA,EAAO+1J,EAAOA,EAAO/jJ,GAEvB,MAAMyO,EAAQs1I,GAAQA,EAAOnuJ,KAAKkW,IAAI9L,EAAMhS,IAAS,EAAI82J,EACnDvsJ,EAAO3C,KAAKyW,IAAIre,EAAOgS,GAAQ,EAAI8kJ,EACzC,MAAO,CACLH,MAAOpsJ,EAAO+rJ,EACdhnH,MAAOtsC,EAAQ0zJ,cACfj2I,QAEJ,CACA,SAASs2I,GAAc5qF,EAAO/4B,EAAMi6G,EAAQxsJ,GAC1C,MAAMm2J,EAAa3J,EAAOv9I,MAAMq8D,EAAM,GAAItrE,GACpCo2J,EAAW5J,EAAOv9I,MAAMq8D,EAAM,GAAItrE,GAClCid,EAAMlW,KAAKkW,IAAIk5I,EAAYC,GAC3Bp5I,EAAMjW,KAAKiW,IAAIm5I,EAAYC,GACjC,IAAIC,EAAWp5I,EACXq5I,EAASt5I,EACTjW,KAAKyW,IAAIP,GAAOlW,KAAKyW,IAAIR,KAC3Bq5I,EAAWr5I,EACXs5I,EAASr5I,GAEXs1B,EAAKi6G,EAAOt7H,MAAQolI,EACpB/jH,EAAKgkH,QAAU,CACbF,WACAC,SACA12I,MAAOu2I,EACPt2I,IAAKu2I,EACLn5I,MACAD,MAEJ,CACA,SAASw5I,GAAWlrF,EAAO/4B,EAAMi6G,EAAQxsJ,GAMvC,OALIG,EAAQmrE,GACV4qF,GAAc5qF,EAAO/4B,EAAMi6G,EAAQxsJ,GAEnCuyC,EAAKi6G,EAAOt7H,MAAQs7H,EAAOv9I,MAAMq8D,EAAOtrE,GAEnCuyC,CACT,CACA,SAASkkH,GAAsB9nJ,EAAMpF,EAAMqW,EAAOinG,GAChD,MAAMkZ,EAASpxH,EAAKoxH,OACdysB,EAAS79I,EAAK69I,OACdyE,EAASlxB,EAAOmxB,YAChBC,EAAcpxB,IAAWysB,EACzB1O,EAAS,GACf,IAAI99I,EAAGy5H,EAAMlnF,EAAM+4B,EACnB,IAAKtrE,EAAI4f,EAAO65G,EAAO75G,EAAQinG,EAAO7mH,EAAIy5H,IAAQz5H,EAChDsrE,EAAQ/hE,EAAKvJ,GACbuyC,EAAO,CAAC,EACRA,EAAKwtF,EAAO7uG,MAAQigI,GAAepxB,EAAO9wH,MAAMgiJ,EAAOjxJ,GAAIA,GAC3D89I,EAAO95I,KAAKwyJ,GAAWlrF,EAAO/4B,EAAMi6G,EAAQxsJ,IAE9C,OAAO89I,CACT,CACA,SAAS4Y,GAAWC,GAClB,OAAOA,QAA8Bl9I,IAApBk9I,EAAON,eAA4C58I,IAAlBk9I,EAAOL,MAC3D,CACA,SAASM,GAAQltJ,EAAM8iJ,EAAQqK,GAC7B,OAAa,IAATntJ,EACKmzC,EAAKnzC,IAEN8iJ,EAAOnzH,eAAiB,GAAK,IAAMmzH,EAAOvvI,KAAO45I,EAAa,GAAK,EAC7E,CACA,SAASC,GAAYxiD,GACnB,IAAI+kB,EAASz5G,EAAOC,EAAK4O,EAAK2oH,EAiB9B,OAhBI9iC,EAAWyiD,YACb19B,EAAU/kB,EAAWnsE,KAAOmsE,EAAWzxE,EACvCjjB,EAAQ,OACRC,EAAM,UAENw5G,EAAU/kB,EAAWnsE,KAAOmsE,EAAWxxE,EACvCljB,EAAQ,SACRC,EAAM,OAEJw5G,GACF5qG,EAAM,MACN2oH,EAAS,UAET3oH,EAAM,QACN2oH,EAAS,OAEJ,CAACx3H,QAAOC,MAAKw5G,UAAS5qG,MAAK2oH,SACpC,CACA,SAAS4f,GAAiB1iD,EAAYnyG,EAASkoE,EAAOvtD,GACpD,IAAIm6I,EAAO90J,EAAQ+0J,cACnB,MAAMptI,EAAM,CAAC,EACb,IAAKmtI,EAEH,YADA3iD,EAAW4iD,cAAgBptI,GAG7B,IAAa,IAATmtI,EAEF,YADA3iD,EAAW4iD,cAAgB,CAACzoI,KAAK,EAAM0gF,OAAO,EAAMioC,QAAQ,EAAM1oH,MAAM,IAG1E,MAAM,MAAC9O,EAAK,IAAEC,EAAG,QAAEw5G,EAAO,IAAE5qG,EAAG,OAAE2oH,GAAU0f,GAAYxiD,GAC1C,WAAT2iD,GAAqB5sF,IACvBiqC,EAAW6iD,oBAAqB,GAC3B9sF,EAAM4iF,MAAQ,KAAOnwI,EACxBm6I,EAAOxoI,GACG47C,EAAM6iF,SAAW,KAAOpwI,EAClCm6I,EAAO7f,GAEPttH,EAAIstI,GAAUhgB,EAAQx3H,EAAOC,EAAKw5G,KAAY,EAC9C49B,EAAOxoI,IAGX3E,EAAIstI,GAAUH,EAAMr3I,EAAOC,EAAKw5G,KAAY,EAC5C/kB,EAAW4iD,cAAgBptI,CAC7B,CACA,SAASstI,GAAUH,EAAMr3J,EAAGC,EAAGw5H,GAO7B,OANIA,GACF49B,EAAOI,GAAKJ,EAAMr3J,EAAGC,GACrBo3J,EAAOK,GAASL,EAAMp3J,EAAGD,IAEzBq3J,EAAOK,GAASL,EAAMr3J,EAAGC,GAEpBo3J,CACT,CACA,SAASI,GAAKE,EAAMtiG,EAAIuiG,GACtB,OAAOD,IAAStiG,EAAKuiG,EAAKD,IAASC,EAAKviG,EAAKsiG,CAC/C,CACA,SAASD,GAAShzJ,EAAGsb,EAAOC,GAC1B,MAAa,UAANvb,EAAgBsb,EAAc,QAANtb,EAAcub,EAAMvb,CACrD,CACA,SAASmzJ,GAAiBnjD,GAAY,cAACojD,GAAgBjpH,GACrD6lE,EAAWojD,cAAkC,SAAlBA,EACb,IAAVjpH,EAAc,IAAO,EACrBipH,CACN,CAlMA5J,GAAkB/4G,SAAW,CAAC,EAC9B+4G,GAAkBrtJ,UAAUyvJ,mBAAqB,KACjDpC,GAAkBrtJ,UAAU+xJ,gBAAkB,KAiM9C,MAAMmF,WAAsB7J,GAC1B,kBAAAiD,CAAmBpiJ,EAAMpF,EAAMqW,EAAOinG,GACpC,OAAO4vC,GAAsB9nJ,EAAMpF,EAAMqW,EAAOinG,EAClD,CACA,cAAAgqC,CAAeliJ,EAAMpF,EAAMqW,EAAOinG,GAChC,OAAO4vC,GAAsB9nJ,EAAMpF,EAAMqW,EAAOinG,EAClD,CACA,eAAAiqC,CAAgBniJ,EAAMpF,EAAMqW,EAAOinG,GACjC,MAAM,OAACkZ,EAAM,OAAEysB,GAAU79I,GACnB,SAACyiJ,EAAW,IAAG,SAAEC,EAAW,KAAOvvJ,KAAK+7I,SACxC+Z,EAA2B,MAAhB73B,EAAO7uG,KAAekgI,EAAWC,EAC5CwG,EAA2B,MAAhBrL,EAAOt7H,KAAekgI,EAAWC,EAC5CvT,EAAS,GACf,IAAI99I,EAAGy5H,EAAMlnF,EAAM7jC,EACnB,IAAK1O,EAAI4f,EAAO65G,EAAO75G,EAAQinG,EAAO7mH,EAAIy5H,IAAQz5H,EAChD0O,EAAMnF,EAAKvJ,GACXuyC,EAAO,CAAC,EACRA,EAAKwtF,EAAO7uG,MAAQ6uG,EAAO9wH,MAAMurH,EAAiB9rH,EAAKkpJ,GAAW53J,GAClE89I,EAAO95I,KAAKwyJ,GAAWh8B,EAAiB9rH,EAAKmpJ,GAAWtlH,EAAMi6G,EAAQxsJ,IAExE,OAAO89I,CACT,CACA,qBAAA0T,CAAsB/1B,EAAO56E,EAAOi9F,EAAQzzE,GAC1CtiE,MAAMypJ,sBAAsB/1B,EAAO56E,EAAOi9F,EAAQzzE,GAClD,MAAMssF,EAAS7Y,EAAOyY,QAClBI,GAAU91G,IAAU/+C,KAAK8qJ,YAAYJ,SACvC/wB,EAAMx+G,IAAMlW,KAAKkW,IAAIw+G,EAAMx+G,IAAK05I,EAAO15I,KACvCw+G,EAAMz+G,IAAMjW,KAAKiW,IAAIy+G,EAAMz+G,IAAK25I,EAAO35I,KAE3C,CACA,cAAAg1I,GACE,OAAO,CACT,CACA,gBAAAC,CAAiBn1I,GACf,MAAMnO,EAAO7M,KAAK8qJ,aACZ,OAAC7sB,EAAM,OAAEysB,GAAU79I,EACnBmvI,EAASh8I,KAAKwvJ,UAAUx0I,GACxB65I,EAAS7Y,EAAOyY,QAChB13J,EAAQ63J,GAAWC,GACrB,IAAMA,EAAO/2I,MAAQ,KAAO+2I,EAAO92I,IAAM,IACzC,GAAK2sI,EAAO0F,iBAAiBpU,EAAO0O,EAAOt7H,OAC/C,MAAO,CACL0I,MAAO,GAAKmmG,EAAOmyB,iBAAiBpU,EAAO/d,EAAO7uG,OAClDryB,QAEJ,CACA,UAAA8vJ,GACE7sJ,KAAKysJ,qBAAsB,EAC3BxmJ,MAAM4mJ,aACN,MAAMhgJ,EAAO7M,KAAK8qJ,YAClBj+I,EAAK07D,MAAQvoE,KAAKitJ,aAAa1kF,KACjC,CACA,MAAA9iC,CAAO4vC,GACL,MAAMxoE,EAAO7M,KAAK8qJ,YAClB9qJ,KAAKsyJ,eAAezlJ,EAAKpF,KAAM,EAAGoF,EAAKpF,KAAKxJ,OAAQo3E,EACtD,CACA,cAAAi9E,CAAe0D,EAAMl4I,EAAOinG,EAAO1vC,GACjC,MAAMxwE,EAAiB,UAATwwE,GACR,MAACr6D,EAAO8vI,aAAa,OAACJ,IAAW1qJ,KACjCqmC,EAAOqkH,EAAOuL,eACdhB,EAAavK,EAAOnzH,eACpBm8H,EAAQ1zJ,KAAKk2J,aACb,cAAC9E,EAAa,eAAED,GAAkBnxJ,KAAKsxJ,kBAAkBxzI,EAAOu3D,GACtE,IAAK,IAAIn3E,EAAI4f,EAAO5f,EAAI4f,EAAQinG,EAAO7mH,IAAK,CAC1C,MAAM89I,EAASh8I,KAAKwvJ,UAAUtxJ,GACxBi4J,EAAUtxJ,GAASkyH,EAAcilB,EAAO0O,EAAOt7H,OAAS,CAACiX,OAAMpiC,KAAMoiC,GAAQrmC,KAAKo2J,yBAAyBl4J,GAC3Gm4J,EAAUr2J,KAAKs2J,yBAAyBp4J,EAAGw1J,GAC3CnrF,GAASyzE,EAAO+O,SAAW,CAAC,GAAGL,EAAOt7H,MACtCojF,EAAa,CACjByiD,aACA5uH,KAAM8vH,EAAQ9vH,KACdgvH,oBAAqB9sF,GAASqsF,GAAW5Y,EAAOyY,UAAaz5I,IAAUutD,EAAM4iF,MAAQnwI,IAAUutD,EAAM6iF,QACrGrqH,EAAGk0H,EAAakB,EAAQlyJ,KAAOoyJ,EAAQplG,OACvCjwB,EAAGi0H,EAAaoB,EAAQplG,OAASklG,EAAQlyJ,KACzC6uB,OAAQmiI,EAAaoB,EAAQzuJ,KAAO3C,KAAKyW,IAAIy6I,EAAQvuJ,MACrDgU,MAAOq5I,EAAahwJ,KAAKyW,IAAIy6I,EAAQvuJ,MAAQyuJ,EAAQzuJ,MAEnDupJ,IACF3+C,EAAWnyG,QAAU+wJ,GAAiBpxJ,KAAKwwJ,0BAA0BtyJ,EAAG83J,EAAK93J,GAAG2+D,OAAS,SAAWwY,IAEtG,MAAMh1E,EAAUmyG,EAAWnyG,SAAW21J,EAAK93J,GAAGmC,QAC9C60J,GAAiB1iD,EAAYnyG,EAASkoE,EAAOvtD,GAC7C26I,GAAiBnjD,EAAYnyG,EAASqzJ,EAAM/mH,OAC5C3sC,KAAK0xJ,cAAcsE,EAAK93J,GAAIA,EAAGs0G,EAAYn9B,EAC7C,CACF,CACA,UAAAkhF,CAAWv5F,EAAMtxC,GACf,MAAM,OAACuyG,GAAUj+H,KAAK8qJ,YAChBxB,EAAWrrB,EAAO2sB,wBAAwB5qJ,KAAKmsJ,OAClDn+I,QAAOnB,GAAQA,EAAKo8C,WAAW5oD,QAAQm2J,UACpCzM,EAAU9rB,EAAO59H,QAAQ0pJ,QACzBM,EAAS,GACToM,EAAY5pJ,IAChB,MAAMmvI,EAASnvI,EAAKo8C,WAAWumG,UAAU9jI,GACnC8X,EAAMw4G,GAAUA,EAAOnvI,EAAK69I,OAAOt7H,MACzC,GAAI2nG,EAAcvzF,IAAQ9L,MAAM8L,GAC9B,OAAO,CACT,EAEF,IAAK,MAAM32B,KAAQy8I,EACjB,SAAkB3xI,IAAd+T,IAA2B+qI,EAAS5pJ,QAGxB,IAAZk9I,IAAqD,IAAhCM,EAAOpvI,QAAQpO,EAAK07D,aAClC5wD,IAAZoyI,QAAwCpyI,IAAf9K,EAAK07D,QAC3B8hF,EAAOnoJ,KAAK2K,EAAK07D,OAEf17D,EAAKmO,QAAUgiD,GACjB,MAMJ,OAHKqtF,EAAOpsJ,QACVosJ,EAAOnoJ,UAAKyV,GAEP0yI,CACT,CACA,cAAAqM,CAAe17I,GACb,OAAOhb,KAAKu2J,gBAAW5+I,EAAWqD,GAAO/c,MAC3C,CACA,cAAA04J,CAAe9+B,EAAc/1H,EAAM4pB,GACjC,MAAM2+H,EAASrqJ,KAAKu2J,WAAW1+B,EAAcnsG,GACvC1Q,OAAkBrD,IAAT7V,EACXuoJ,EAAOpvI,QAAQnZ,IACd,EACL,OAAmB,IAAXkZ,EACJqvI,EAAOpsJ,OAAS,EAChB+c,CACN,CACA,SAAAk7I,GACE,MAAMhkI,EAAOlyB,KAAKK,QACZwM,EAAO7M,KAAK8qJ,YACZ7sB,EAASpxH,EAAKoxH,OACdg2B,EAAS,GACf,IAAI/1J,EAAGy5H,EACP,IAAKz5H,EAAI,EAAGy5H,EAAO9qH,EAAKpF,KAAKxJ,OAAQC,EAAIy5H,IAAQz5H,EAC/C+1J,EAAO/xJ,KAAK+7H,EAAOK,iBAAiBt+H,KAAKwvJ,UAAUtxJ,GAAG+/H,EAAO7uG,MAAOlxB,IAEtE,MAAM21J,EAAe3hI,EAAK2hI,aACpB14I,EAAM04I,GAAgBV,GAAqBtmJ,GACjD,MAAO,CACLsO,MACA84I,SACAn2I,MAAOmgH,EAAO24B,YACd74I,IAAKkgH,EAAO44B,UACZlD,WAAY3zJ,KAAK02J,iBACjB33G,MAAOk/E,EACPu4B,QAAStkI,EAAKskI,QACd7pH,MAAOknH,EAAe,EAAI3hI,EAAK4hI,mBAAqB5hI,EAAK6hI,cAE7D,CACA,wBAAAqC,CAAyBp7I,GACvB,MAAO8vI,aAAa,OAACJ,EAAM,SAAEqB,GAAW1rJ,SAAUgmC,KAAMywH,EAAS,aAAEC,IAAiB/2J,KAC9E+0J,EAAa+B,GAAa,EAC1B9a,EAASh8I,KAAKwvJ,UAAUx0I,GACxB65I,EAAS7Y,EAAOyY,QAChBuC,EAAWpC,GAAWC,GAC5B,IAGI5wJ,EAAM2D,EAHN7K,EAAQi/I,EAAO0O,EAAOt7H,MACtBtR,EAAQ,EACR7f,EAAS8tJ,EAAW/rJ,KAAKwpJ,WAAWkB,EAAQ1O,EAAQ+P,GAAYhvJ,EAEhEkB,IAAWlB,IACb+gB,EAAQ7f,EAASlB,EACjBkB,EAASlB,GAEPi6J,IACFj6J,EAAQ83J,EAAON,SACft2J,EAAS42J,EAAOL,OAASK,EAAON,SAClB,IAAVx3J,GAAeg+C,EAAKh+C,KAAWg+C,EAAK85G,EAAOL,UAC7C12I,EAAQ,GAEVA,GAAS/gB,GAEX,MAAMs3J,EAAct9B,EAAc+/B,IAAeE,EAAuBl5I,EAAZg5I,EAC5D,IAAIzwH,EAAOqkH,EAAOpsB,iBAAiB+1B,GAOnC,GALEpwJ,EADEjE,KAAKswI,MAAM2mB,kBAAkBj8I,GACxB0vI,EAAOpsB,iBAAiBxgH,EAAQ7f,GAEhCooC,EAETz+B,EAAO3D,EAAOoiC,EACVphC,KAAKyW,IAAI9T,GAAQmvJ,EAAc,CACjCnvJ,EAAOktJ,GAAQltJ,EAAM8iJ,EAAQqK,GAAcgC,EACvCh6J,IAAUg4J,IACZ1uH,GAAQz+B,EAAO,GAEjB,MAAMsvJ,EAAaxM,EAAOyM,mBAAmB,GACvCC,EAAW1M,EAAOyM,mBAAmB,GACrCh8I,EAAMlW,KAAKkW,IAAI+7I,EAAYE,GAC3Bl8I,EAAMjW,KAAKiW,IAAIg8I,EAAYE,GACjC/wH,EAAOphC,KAAKiW,IAAIjW,KAAKkW,IAAIkrB,EAAMnrB,GAAMC,GACrClX,EAAOoiC,EAAOz+B,CAChB,CACA,GAAIy+B,IAASqkH,EAAOpsB,iBAAiBy2B,GAAa,CAChD,MAAMsC,EAAWt8G,EAAKnzC,GAAQ8iJ,EAAO4M,qBAAqBvC,GAAc,EACxE1uH,GAAQgxH,EACRzvJ,GAAQyvJ,CACV,CACA,MAAO,CACLzvJ,OACAy+B,OACApiC,OACAgtD,OAAQhtD,EAAO2D,EAAO,EAE1B,CACA,wBAAA0uJ,CAAyBt7I,EAAO04I,GAC9B,MAAM30G,EAAQ20G,EAAM30G,MACd1+C,EAAUL,KAAKK,QACfo2J,EAAWp2J,EAAQo2J,SACnBc,EAAkBrgC,EAAe72H,EAAQk3J,gBAAiB/qF,KAChE,IAAIvb,EAAQrpD,EACZ,GAAI8rJ,EAAM8C,QAAS,CACjB,MAAM7C,EAAa8C,EAAWz2J,KAAK02J,eAAe17I,GAAS04I,EAAMC,WAC3Dh6B,EAAiC,SAAzBt5H,EAAQwzJ,aAClBK,GAA0Bl5I,EAAO04I,EAAOrzJ,EAASszJ,GACjDF,GAAyBz4I,EAAO04I,EAAOrzJ,EAASszJ,GAC9C6D,EAAax3J,KAAK22J,eAAe32J,KAAKgb,MAAOhb,KAAK8qJ,YAAYviF,MAAOkuF,EAAWz7I,OAAQrD,GAC9Fs5C,EAAS0oE,EAAM77G,MAAS67G,EAAMq6B,MAAQwD,EAAe79B,EAAMq6B,MAAQ,EACnEpsJ,EAAO3C,KAAKkW,IAAIo8I,EAAiB59B,EAAMq6B,MAAQr6B,EAAMhtF,MACvD,MACEskB,EAASlS,EAAMu/E,iBAAiBt+H,KAAKwvJ,UAAUx0I,GAAO+jC,EAAM3vB,MAAOpU,GACnEpT,EAAO3C,KAAKkW,IAAIo8I,EAAiB7D,EAAMv4I,IAAMu4I,EAAM/mH,OAErD,MAAO,CACLtG,KAAM4qB,EAASrpD,EAAO,EACtB3D,KAAMgtD,EAASrpD,EAAO,EACtBqpD,SACArpD,OAEJ,CACA,IAAAs+I,GACE,MAAMr5I,EAAO7M,KAAK8qJ,YACZJ,EAAS79I,EAAK69I,OACd+M,EAAQ5qJ,EAAKpF,KACbkwH,EAAO8/B,EAAMx5J,OACnB,IAAIC,EAAI,EACR,KAAOA,EAAIy5H,IAAQz5H,EACsB,OAAnC8B,KAAKwvJ,UAAUtxJ,GAAGwsJ,EAAOt7H,OAC3BqoI,EAAMv5J,GAAGgoJ,KAAKlmJ,KAAKmuF,KAGzB,EAEF0nE,GAAct2J,GAAK,MACnBs2J,GAAc5iH,SAAW,CACvBm7G,oBAAoB,EACpBsC,gBAAiB,MACjBoD,mBAAoB,GACpBC,cAAe,GACfyC,SAAS,EACTtO,WAAY,CACVH,QAAS,CACP/+I,KAAM,SACNwpG,WAAY,CAAC,IAAK,IAAK,OAAQ,QAAS,aAI9CqjD,GAActiI,UAAY,CACxBi+G,OAAQ,CACNkmB,QAAS,CACP1uJ,KAAM,WACNmjB,QAAQ,EACRwrI,KAAM,CACJxrI,QAAQ,IAGZyrI,QAAS,CACP5uJ,KAAM,SACNgwI,aAAa,KAKnB,MAAM6e,WAAyB7L,GAC7B,UAAAa,GACE7sJ,KAAKysJ,qBAAsB,EAC3BxmJ,MAAM4mJ,YACR,CACA,kBAAAoC,CAAmBpiJ,EAAMpF,EAAMqW,EAAOinG,GACpC,MAAMi3B,EAAS/1I,MAAMgpJ,mBAAmBpiJ,EAAMpF,EAAMqW,EAAOinG,GAC3D,IAAK,IAAI7mH,EAAI,EAAGA,EAAI89I,EAAO/9I,OAAQC,IACjC89I,EAAO99I,GAAGu2J,QAAUz0J,KAAKwwJ,0BAA0BtyJ,EAAI4f,GAAOw2H,OAEhE,OAAO0H,CACT,CACA,cAAA+S,CAAeliJ,EAAMpF,EAAMqW,EAAOinG,GAChC,MAAMi3B,EAAS/1I,MAAM8oJ,eAAeliJ,EAAMpF,EAAMqW,EAAOinG,GACvD,IAAK,IAAI7mH,EAAI,EAAGA,EAAI89I,EAAO/9I,OAAQC,IAAK,CACtC,MAAMuyC,EAAOhpC,EAAKqW,EAAQ5f,GAC1B89I,EAAO99I,GAAGu2J,QAAUv9B,EAAezmF,EAAK,GAAIzwC,KAAKwwJ,0BAA0BtyJ,EAAI4f,GAAOw2H,OACxF,CACA,OAAO0H,CACT,CACA,eAAAgT,CAAgBniJ,EAAMpF,EAAMqW,EAAOinG,GACjC,MAAMi3B,EAAS/1I,MAAM+oJ,gBAAgBniJ,EAAMpF,EAAMqW,EAAOinG,GACxD,IAAK,IAAI7mH,EAAI,EAAGA,EAAI89I,EAAO/9I,OAAQC,IAAK,CACtC,MAAMuyC,EAAOhpC,EAAKqW,EAAQ5f,GAC1B89I,EAAO99I,GAAGu2J,QAAUv9B,EAAezmF,GAAQA,EAAKttC,IAAMstC,EAAKttC,EAAGnD,KAAKwwJ,0BAA0BtyJ,EAAI4f,GAAOw2H,OAC1G,CACA,OAAO0H,CACT,CACA,cAAAkU,GACE,MAAMzoJ,EAAOzH,KAAK8qJ,YAAYrjJ,KAC9B,IAAIyT,EAAM,EACV,IAAK,IAAIhd,EAAIuJ,EAAKxJ,OAAS,EAAGC,GAAK,IAAKA,EACtCgd,EAAMjW,KAAKiW,IAAIA,EAAKzT,EAAKvJ,GAAG0J,KAAK5H,KAAKwwJ,0BAA0BtyJ,IAAM,GAExE,OAAOgd,EAAM,GAAKA,CACpB,CACA,gBAAAi1I,CAAiBn1I,GACf,MAAMnO,EAAO7M,KAAK8qJ,aACZ,OAACtsB,EAAM,OAAEC,GAAU5xH,EACnBmvI,EAASh8I,KAAKwvJ,UAAUx0I,GACxB+lB,EAAIy9F,EAAO4xB,iBAAiBpU,EAAOj7G,GACnCC,EAAIy9F,EAAO2xB,iBAAiBpU,EAAOh7G,GACnC79B,EAAI64I,EAAOyY,QACjB,MAAO,CACL38H,MAAOjrB,EAAKirB,MACZ/6B,MAAO,IAAMgkC,EAAI,KAAOC,GAAK79B,EAAI,KAAOA,EAAI,IAAM,IAEtD,CACA,MAAAsiC,CAAO4vC,GACL,MAAMplC,EAASjwC,KAAK8qJ,YAAYrjJ,KAChCzH,KAAKsyJ,eAAeriH,EAAQ,EAAGA,EAAOhyC,OAAQo3E,EAChD,CACA,cAAAi9E,CAAeriH,EAAQnyB,EAAOinG,EAAO1vC,GACnC,MAAMxwE,EAAiB,UAATwwE,GACR,OAAC4oD,EAAM,OAAEysB,GAAU1qJ,KAAK8qJ,aACxB,cAACsG,EAAa,eAAED,GAAkBnxJ,KAAKsxJ,kBAAkBxzI,EAAOu3D,GAChE21E,EAAQ/sB,EAAO7uG,KACf67H,EAAQP,EAAOt7H,KACrB,IAAK,IAAIlxB,EAAI4f,EAAO5f,EAAI4f,EAAQinG,EAAO7mH,IAAK,CAC1C,MAAMgyC,EAAQD,EAAO/xC,GACf89I,GAAUn3I,GAAS7E,KAAKwvJ,UAAUtxJ,GAClCs0G,EAAa,CAAC,EACdmrC,EAASnrC,EAAWw4C,GAASnmJ,EAAQo5H,EAAOk5B,mBAAmB,IAAOl5B,EAAOK,iBAAiB0d,EAAOgP,IACrGpN,EAASprC,EAAWy4C,GAASpmJ,EAAQ6lJ,EAAOuL,eAAiBvL,EAAOpsB,iBAAiB0d,EAAOiP,IAClGz4C,EAAWvyE,KAAOvI,MAAMimH,IAAWjmH,MAAMkmH,GACrCuT,IACF3+C,EAAWnyG,QAAU+wJ,GAAiBpxJ,KAAKwwJ,0BAA0BtyJ,EAAGgyC,EAAM2sB,OAAS,SAAWwY,GAC9FxwE,IACF2tG,EAAWnyG,QAAQi0I,OAAS,IAGhCt0I,KAAK0xJ,cAAcxhH,EAAOhyC,EAAGs0G,EAAYn9B,EAC3C,CACF,CACA,yBAAAm7E,CAA0Bx1I,EAAOq6D,GAC/B,MAAM2mE,EAASh8I,KAAKwvJ,UAAUx0I,GAC9B,IAAIpR,EAAS3D,MAAMuqJ,0BAA0Bx1I,EAAOq6D,GAChDzrE,EAAOg/I,UACTh/I,EAASlL,OAAO02B,OAAO,CAAC,EAAGxrB,EAAQ,CAACg/I,SAAS,KAE/C,MAAMtU,EAAS1qI,EAAO0qI,OAKtB,MAJa,WAATj/D,IACFzrE,EAAO0qI,OAAS,GAElB1qI,EAAO0qI,QAAUpd,EAAe8kB,GAAUA,EAAOyY,QAASngB,GACnD1qI,CACT,EAiCF,SAASkuJ,GAAkBzjB,EAAU0jB,EAAeC,GAClD,IAAIC,EAAS,EACTC,EAAS,EACT9yG,EAAU,EACVC,EAAU,EACd,GAAI0yG,EAAgB7+B,EAAK,CACvB,MAAMi/B,EAAa9jB,EACb+jB,EAAWD,EAAaJ,EACxB9vH,EAAShjC,KAAKmrD,IAAI+nG,GAClBjwH,EAASjjC,KAAKkrD,IAAIgoG,GAClBE,EAAOpzJ,KAAKmrD,IAAIgoG,GAChBE,EAAOrzJ,KAAKkrD,IAAIioG,GAChBG,EAAU,CAACr9B,EAAOp9H,EAAGC,IAAMy9H,GAAcN,EAAOi9B,EAAYC,GAAU,GAAQ,EAAInzJ,KAAKiW,IAAIpd,EAAGA,EAAIk6J,EAAQj6J,EAAGA,EAAIi6J,GACjHQ,EAAU,CAACt9B,EAAOp9H,EAAGC,IAAMy9H,GAAcN,EAAOi9B,EAAYC,GAAU,IAAS,EAAInzJ,KAAKkW,IAAIrd,EAAGA,EAAIk6J,EAAQj6J,EAAGA,EAAIi6J,GAClH9zG,EAAOq0G,EAAQ,EAAGtwH,EAAQowH,GAC1Bj0G,EAAOm0G,EAAQj/B,EAASpxF,EAAQowH,GAChCr0G,EAAOu0G,EAAQ3uH,EAAI5B,EAAQowH,GAC3Bl0G,EAAOq0G,EAAQ3uH,EAAKyvF,EAASpxF,EAAQowH,GAC3CL,GAAU/zG,EAAOD,GAAQ,EACzBi0G,GAAU9zG,EAAOD,GAAQ,EACzBiB,IAAYlB,EAAOD,GAAQ,EAC3BoB,IAAYjB,EAAOD,GAAQ,CAC7B,CACA,MAAO,CAAC8zG,SAAQC,SAAQ9yG,UAASC,UACnC,CAvDAwyG,GAAiBt4J,GAAK,SACtBs4J,GAAiB5kH,SAAW,CAC1Bm7G,oBAAoB,EACpBsC,gBAAiB,QACjBxI,WAAY,CACVH,QAAS,CACP/+I,KAAM,SACNwpG,WAAY,CAAC,IAAK,IAAK,cAAe,aAI5CqlD,GAAiBtkI,UAAY,CAC3Bi+G,OAAQ,CACNzwG,EAAG,CACD/3B,KAAM,UAERg4B,EAAG,CACDh4B,KAAM,WAGVsoI,QAAS,CACPmnB,QAAS,CACPx4J,UAAW,CACT,KAAAy4J,GACE,MAAO,EACT,MA+BR,MAAMC,WAA2B3M,GAC/B,WAAAhuJ,CAAYsyI,EAAOzY,GACjB5xH,MAAMqqI,EAAOzY,GACb73H,KAAKysJ,qBAAsB,EAC3BzsJ,KAAK44J,iBAAcjhJ,EACnB3X,KAAK64J,iBAAclhJ,EACnB3X,KAAKolD,aAAUztC,EACf3X,KAAKqlD,aAAU1tC,CACjB,CACA,UAAAm1I,GAAc,CACd,KAAA3/I,CAAM2Q,EAAOinG,GACX,MAAMt9G,EAAOzH,KAAKitJ,aAAaxlJ,KACzBoF,EAAO7M,KAAK8qJ,YAClB,IAAsB,IAAlB9qJ,KAAK+7I,SACPlvI,EAAKqxH,QAAUz2H,MACV,CACL,IAKIvJ,EAAGy5H,EALHhyD,EAAUznE,IAAOuJ,EAAKvJ,GAC1B,GAAImlB,EAAS5b,EAAKqW,IAAS,CACzB,MAAM,IAAC/e,EAAM,SAAWiB,KAAK+7I,SAC7Bp2E,EAAUznE,IAAOw6H,EAAiBjxH,EAAKvJ,GAAIa,EAC7C,CAEA,IAAKb,EAAI4f,EAAO65G,EAAO75G,EAAQinG,EAAO7mH,EAAIy5H,IAAQz5H,EAChD2O,EAAKqxH,QAAQhgI,GAAKynE,EAAOznE,EAE7B,CACF,CACA,YAAA46J,GACE,OAAOv+B,EAAUv6H,KAAKK,QAAQg0I,SAAW,GAC3C,CACA,iBAAA0kB,GACE,OAAOx+B,EAAUv6H,KAAKK,QAAQ03J,cAChC,CACA,mBAAAiB,GACE,IAAI79I,EAAM+9G,EACNh+G,GAAOg+G,EACX,IAAK,IAAIh7H,EAAI,EAAGA,EAAI8B,KAAKswI,MAAM7oI,KAAK2oI,SAASnyI,SAAUC,EACrD,GAAI8B,KAAKswI,MAAM2oB,iBAAiB/6J,GAAI,CAClC,MAAM+qD,EAAajpD,KAAKswI,MAAMyd,eAAe7vJ,GAAG+qD,WAC1CorF,EAAWprF,EAAW6vG,eACtBf,EAAgB9uG,EAAW8vG,oBACjC59I,EAAMlW,KAAKkW,IAAIA,EAAKk5H,GACpBn5H,EAAMjW,KAAKiW,IAAIA,EAAKm5H,EAAW0jB,EACjC,CAEF,MAAO,CACL1jB,SAAUl5H,EACV48I,cAAe78I,EAAMC,EAEzB,CACA,MAAAsqB,CAAO4vC,GACL,MAAMi7D,EAAQtwI,KAAKswI,OACb,UAACggB,GAAahgB,EACdzjI,EAAO7M,KAAK8qJ,YACZoO,EAAOrsJ,EAAKpF,KACZ0xJ,EAAUn5J,KAAKo5J,oBAAsBp5J,KAAKq5J,aAAaH,GAAQl5J,KAAKK,QAAQ84J,QAC5EG,EAAUr0J,KAAKiW,KAAKjW,KAAKkW,IAAIm1I,EAAU10I,MAAO00I,EAAUx9H,QAAUqmI,GAAW,EAAG,GAChFnB,EAAS/yJ,KAAKkW,IAAIg8G,EAAan3H,KAAKK,QAAQ23J,OAAQsB,GAAU,GAC9DC,EAAcv5J,KAAKw5J,eAAex5J,KAAKgb,QACvC,cAAC+8I,EAAa,SAAE1jB,GAAYr0I,KAAKg5J,uBACjC,OAACf,EAAM,OAAEC,EAAM,QAAE9yG,EAAO,QAAEC,GAAWyyG,GAAkBzjB,EAAU0jB,EAAeC,GAChFrhB,GAAY2Z,EAAU10I,MAAQu9I,GAAWlB,EACzCrY,GAAa0Q,EAAUx9H,OAASqmI,GAAWjB,EAC3CuB,EAAYx0J,KAAKiW,IAAIjW,KAAKkW,IAAIw7H,EAAUiJ,GAAa,EAAG,GACxDiZ,EAAcxhC,EAAYr3H,KAAKK,QAAQi0I,OAAQmlB,GAC/Cb,EAAc3zJ,KAAKiW,IAAI29I,EAAcb,EAAQ,GAC7C0B,GAAgBb,EAAcD,GAAe54J,KAAK25J,gCACxD35J,KAAKolD,QAAUA,EAAUyzG,EACzB74J,KAAKqlD,QAAUA,EAAUwzG,EACzBhsJ,EAAK0wC,MAAQv9C,KAAK45J,iBAClB55J,KAAK64J,YAAcA,EAAca,EAAe15J,KAAK65J,qBAAqB75J,KAAKgb,OAC/Ehb,KAAK44J,YAAc3zJ,KAAKiW,IAAIlb,KAAK64J,YAAca,EAAeH,EAAa,GAC3Ev5J,KAAKsyJ,eAAe4G,EAAM,EAAGA,EAAKj7J,OAAQo3E,EAC5C,CACA,cAAAykF,CAAe57J,EAAG2G,GAChB,MAAMqtB,EAAOlyB,KAAKK,QACZwM,EAAO7M,KAAK8qJ,YACZiN,EAAgB/3J,KAAK+4J,oBAC3B,OAAKl0J,GAASqtB,EAAK+9G,UAAU8pB,gBAAmB/5J,KAAKswI,MAAM2mB,kBAAkB/4J,IAA0B,OAApB2O,EAAKqxH,QAAQhgI,IAAe2O,EAAKpF,KAAKvJ,GAAG4tJ,OACnH,EAEF9rJ,KAAKg6J,uBAAuBntJ,EAAKqxH,QAAQhgI,GAAK65J,EAAgB7+B,EACvE,CACA,cAAAo5B,CAAe4G,EAAMp7I,EAAOinG,EAAO1vC,GACjC,MAAMxwE,EAAiB,UAATwwE,EACRi7D,EAAQtwI,KAAKswI,MACbggB,EAAYhgB,EAAMggB,UAClBp+H,EAAOo+G,EAAMjwI,QACb45J,EAAgB/nI,EAAK+9G,UACrBiqB,GAAW5J,EAAU1jI,KAAO0jI,EAAUjjD,OAAS,EAC/C8sD,GAAW7J,EAAU3jI,IAAM2jI,EAAUhb,QAAU,EAC/C8kB,EAAev1J,GAASo1J,EAAcG,aACtCxB,EAAcwB,EAAe,EAAIp6J,KAAK44J,YACtCC,EAAcuB,EAAe,EAAIp6J,KAAK64J,aACtC,cAACzH,EAAa,eAAED,GAAkBnxJ,KAAKsxJ,kBAAkBxzI,EAAOu3D,GACtE,IACIn3E,EADAi6J,EAAan4J,KAAK84J,eAEtB,IAAK56J,EAAI,EAAGA,EAAI4f,IAAS5f,EACvBi6J,GAAcn4J,KAAK85J,eAAe57J,EAAG2G,GAEvC,IAAK3G,EAAI4f,EAAO5f,EAAI4f,EAAQinG,IAAS7mH,EAAG,CACtC,MAAM65J,EAAgB/3J,KAAK85J,eAAe57J,EAAG2G,GACvC8vI,EAAMukB,EAAKh7J,GACXs0G,EAAa,CACjBzxE,EAAGm5H,EAAUl6J,KAAKolD,QAClBpkB,EAAGm5H,EAAUn6J,KAAKqlD,QAClB8yG,aACAC,SAAUD,EAAaJ,EACvBA,gBACAc,cACAD,eAEEzH,IACF3+C,EAAWnyG,QAAU+wJ,GAAiBpxJ,KAAKwwJ,0BAA0BtyJ,EAAGy2I,EAAI93E,OAAS,SAAWwY,IAElG8iF,GAAcJ,EACd/3J,KAAK0xJ,cAAc/c,EAAKz2I,EAAGs0G,EAAYn9B,EACzC,CACF,CACA,cAAAukF,GACE,MAAM/sJ,EAAO7M,KAAK8qJ,YACZuP,EAAWxtJ,EAAKpF,KACtB,IACIvJ,EADAq/C,EAAQ,EAEZ,IAAKr/C,EAAI,EAAGA,EAAIm8J,EAASp8J,OAAQC,IAAK,CACpC,MAAMnB,EAAQ8P,EAAKqxH,QAAQhgI,GACb,OAAVnB,GAAmB26B,MAAM36B,KAAUiD,KAAKswI,MAAM2mB,kBAAkB/4J,IAAOm8J,EAASn8J,GAAG4tJ,SACrFvuG,GAASt4C,KAAKyW,IAAI3e,GAEtB,CACA,OAAOwgD,CACT,CACA,sBAAAy8G,CAAuBj9J,GACrB,MAAMwgD,EAAQv9C,KAAK8qJ,YAAYvtG,MAC/B,OAAIA,EAAQ,IAAM7lB,MAAM36B,GACfm8H,GAAOj0H,KAAKyW,IAAI3e,GAASwgD,GAE3B,CACT,CACA,gBAAA4yG,CAAiBn1I,GACf,MAAMnO,EAAO7M,KAAK8qJ,YACZxa,EAAQtwI,KAAKswI,MACb6e,EAAS7e,EAAM7oI,KAAK0nJ,QAAU,GAC9BpyJ,EAAQ4kJ,GAAa90I,EAAKqxH,QAAQljH,GAAQs1H,EAAMjwI,QAAQkhJ,QAC9D,MAAO,CACLzpH,MAAOq3H,EAAOn0I,IAAU,GACxBje,QAEJ,CACA,iBAAAq8J,CAAkBF,GAChB,IAAIh+I,EAAM,EACV,MAAMo1H,EAAQtwI,KAAKswI,MACnB,IAAIpyI,EAAGy5H,EAAM9qH,EAAMo8C,EAAY5oD,EAC/B,IAAK64J,EACH,IAAKh7J,EAAI,EAAGy5H,EAAO2Y,EAAM7oI,KAAK2oI,SAASnyI,OAAQC,EAAIy5H,IAAQz5H,EACzD,GAAIoyI,EAAM2oB,iBAAiB/6J,GAAI,CAC7B2O,EAAOyjI,EAAMyd,eAAe7vJ,GAC5Bg7J,EAAOrsJ,EAAKpF,KACZwhD,EAAap8C,EAAKo8C,WAClB,KACF,CAGJ,IAAKiwG,EACH,OAAO,EAET,IAAKh7J,EAAI,EAAGy5H,EAAOuhC,EAAKj7J,OAAQC,EAAIy5H,IAAQz5H,EAC1CmC,EAAU4oD,EAAWunG,0BAA0BtyJ,GACnB,UAAxBmC,EAAQi6J,cACVp/I,EAAMjW,KAAKiW,IAAIA,EAAK7a,EAAQ40I,aAAe,EAAG50I,EAAQk6J,kBAAoB,IAG9E,OAAOr/I,CACT,CACA,YAAAm+I,CAAaH,GACX,IAAIh+I,EAAM,EACV,IAAK,IAAIhd,EAAI,EAAGy5H,EAAOuhC,EAAKj7J,OAAQC,EAAIy5H,IAAQz5H,EAAG,CACjD,MAAMmC,EAAUL,KAAKwwJ,0BAA0BtyJ,GAC/Cgd,EAAMjW,KAAKiW,IAAIA,EAAK7a,EAAQ8rB,QAAU,EAAG9rB,EAAQm6J,aAAe,EAClE,CACA,OAAOt/I,CACT,CACA,oBAAA2+I,CAAqBhiC,GACnB,IAAI4iC,EAAmB,EACvB,IAAK,IAAIv8J,EAAI,EAAGA,EAAI25H,IAAgB35H,EAC9B8B,KAAKswI,MAAM2oB,iBAAiB/6J,KAC9Bu8J,GAAoBz6J,KAAKw5J,eAAet7J,IAG5C,OAAOu8J,CACT,CACA,cAAAjB,CAAe3hC,GACb,OAAO5yH,KAAKiW,IAAIg8G,EAAel3H,KAAKswI,MAAM7oI,KAAK2oI,SAASvY,GAAckX,OAAQ,GAAI,EACpF,CACA,6BAAA4qB,GACE,OAAO35J,KAAK65J,qBAAqB75J,KAAKswI,MAAM7oI,KAAK2oI,SAASnyI,SAAW,CACvE,EAEF06J,GAAmBp5J,GAAK,WACxBo5J,GAAmB1lH,SAAW,CAC5Bm7G,oBAAoB,EACpBsC,gBAAiB,MACjBzgB,UAAW,CACT8pB,eAAe,EACfK,cAAc,GAEhBlS,WAAY,CACVH,QAAS,CACP/+I,KAAM,SACNwpG,WAAY,CAAC,gBAAiB,WAAY,cAAe,cAAe,aAAc,IAAK,IAAK,SAAU,cAAe,aAG7HwlD,OAAQ,MACR3jB,SAAU,EACV0jB,cAAe,IACfzjB,OAAQ,OACR6kB,QAAS,EACTpoB,UAAW,KAEb4nB,GAAmB9oB,YAAc,CAC/BwC,YAAcvwI,GAAkB,YAATA,EACvBwwI,WAAaxwI,GAAkB,YAATA,GAExB62J,GAAmBplI,UAAY,CAC7B6sH,YAAa,EACb9O,QAAS,CACPopB,OAAQ,CACNvL,OAAQ,CACN,cAAAwL,CAAerqB,GACb,MAAM7oI,EAAO6oI,EAAM7oI,KACnB,GAAIA,EAAK0nJ,OAAOlxJ,QAAUwJ,EAAK2oI,SAASnyI,OAAQ,CAC9C,MAAOkxJ,QAAQ,WAAC/a,IAAe9D,EAAMoqB,OAAOr6J,QAC5C,OAAOoH,EAAK0nJ,OAAO5qJ,KAAI,CAACuzB,EAAO55B,KAC7B,MAAM2O,EAAOyjI,EAAMyd,eAAe,GAC5Bz6I,EAAQzG,EAAKo8C,WAAWg2F,SAAS/gJ,GACvC,MAAO,CACL8uB,KAAM8K,EACNi/G,UAAWzjI,EAAM48H,gBACjBsG,YAAaljI,EAAM68H,YACnBsG,UAAWnjI,EAAM2hI,YACjBb,WAAYA,EACZ0X,QAASxb,EAAM2mB,kBAAkB/4J,GACjC8c,MAAO9c,EACR,GAEL,CACA,MAAO,EACT,GAEF,OAAAwvC,CAAQpwC,EAAGs9J,EAAYF,GACrBA,EAAOpqB,MAAMuqB,qBAAqBD,EAAW5/I,OAC7C0/I,EAAOpqB,MAAM7qG,QACf,GAEFgzH,QAAS,CACPx4J,UAAW,CACT,KAAAy4J,GACE,MAAO,EACT,EACA,KAAA5gI,CAAMgjI,GACJ,IAAIC,EAAYD,EAAYhjI,MAC5B,MAAM/6B,EAAQ,KAAO+9J,EAAYE,eAOjC,OANI38J,EAAQ08J,IACVA,EAAYA,EAAUrvJ,QACtBqvJ,EAAU,IAAMh+J,GAEhBg+J,GAAah+J,EAERg+J,CACT,MAMR,MAAME,WAAuBjP,GAC3B,UAAAa,GACE7sJ,KAAKysJ,qBAAsB,EAC3BzsJ,KAAK0sJ,oBAAqB,EAC1BzmJ,MAAM4mJ,YACR,CACA,MAAApnH,CAAO4vC,GACL,MAAMxoE,EAAO7M,KAAK8qJ,aACX/8I,QAASyjG,EAAM/pG,KAAMwoC,EAAS,GAAE,SAAEirH,GAAYruJ,EAC/CixH,EAAqB99H,KAAKswI,MAAM+gB,oBACtC,IAAI,MAACvzI,EAAK,MAAEinG,GAAS8Y,GAAiChxH,EAAMojC,EAAQ6tF,GACpE99H,KAAKusJ,WAAazuI,EAClB9d,KAAKwsJ,WAAaznC,EACdwZ,GAAoB1xH,KACtBiR,EAAQ,EACRinG,EAAQ90E,EAAOhyC,QAEjBuzG,EAAK+yC,OAASvkJ,KAAKswI,MACnB9+B,EAAKkzC,cAAgB1kJ,KAAKgb,MAC1Bw2F,EAAK2pD,aAAeD,EAASC,WAC7B3pD,EAAKvhE,OAASA,EACd,MAAM5vC,EAAUL,KAAKuwJ,6BAA6Bl7E,GAC7Cr1E,KAAKK,QAAQoxI,WAChBpxI,EAAQ40I,YAAc,GAExB50I,EAAQ2iJ,QAAUhjJ,KAAKK,QAAQ2iJ,QAC/BhjJ,KAAK0xJ,cAAclgD,OAAM75F,EAAW,CAClCyjJ,UAAWt9B,EACXz9H,WACCg1E,GACHr1E,KAAKsyJ,eAAeriH,EAAQnyB,EAAOinG,EAAO1vC,EAC5C,CACA,cAAAi9E,CAAeriH,EAAQnyB,EAAOinG,EAAO1vC,GACnC,MAAMxwE,EAAiB,UAATwwE,GACR,OAAC4oD,EAAM,OAAEysB,EAAM,SAAEqB,EAAQ,SAAEmP,GAAYl7J,KAAK8qJ,aAC5C,cAACsG,EAAa,eAAED,GAAkBnxJ,KAAKsxJ,kBAAkBxzI,EAAOu3D,GAChE21E,EAAQ/sB,EAAO7uG,KACf67H,EAAQP,EAAOt7H,MACf,SAACmvH,EAAQ,QAAEyE,GAAWhjJ,KAAKK,QAC3Bg7J,EAAenhC,EAASqkB,GAAYA,EAAWrxI,OAAOksH,kBACtDkiC,EAAet7J,KAAKswI,MAAM+gB,qBAAuBxsJ,GAAkB,SAATwwE,EAChE,IAAIkmF,EAAaz9I,EAAQ,GAAK9d,KAAKwvJ,UAAU1xI,EAAQ,GACrD,IAAK,IAAI5f,EAAI4f,EAAO5f,EAAI4f,EAAQinG,IAAS7mH,EAAG,CAC1C,MAAMgyC,EAAQD,EAAO/xC,GACf89I,EAASh8I,KAAKwvJ,UAAUtxJ,GACxBs0G,EAAa8oD,EAAeprH,EAAQ,CAAC,EACrCsrH,EAAWzkC,EAAcilB,EAAOiP,IAChCtN,EAASnrC,EAAWw4C,GAAS/sB,EAAOK,iBAAiB0d,EAAOgP,GAAQ9sJ,GACpE0/I,EAASprC,EAAWy4C,GAASpmJ,GAAS22J,EAAW9Q,EAAOuL,eAAiBvL,EAAOpsB,iBAAiBytB,EAAW/rJ,KAAKwpJ,WAAWkB,EAAQ1O,EAAQ+P,GAAY/P,EAAOiP,GAAQ/sJ,GAC7Ks0G,EAAWvyE,KAAOvI,MAAMimH,IAAWjmH,MAAMkmH,IAAW4d,EACpDhpD,EAAWh3D,KAAOt9C,EAAI,GAAM+G,KAAKyW,IAAIsgI,EAAOgP,GAASuQ,EAAWvQ,IAAWqQ,EACvErY,IACFxwC,EAAWwpC,OAASA,EACpBxpC,EAAW92D,IAAMw/G,EAASzzJ,KAAKvJ,IAE7BizJ,IACF3+C,EAAWnyG,QAAU+wJ,GAAiBpxJ,KAAKwwJ,0BAA0BtyJ,EAAGgyC,EAAM2sB,OAAS,SAAWwY,IAE/FimF,GACHt7J,KAAK0xJ,cAAcxhH,EAAOhyC,EAAGs0G,EAAYn9B,GAE3CkmF,EAAavf,CACf,CACF,CACA,cAAAkU,GACE,MAAMrjJ,EAAO7M,KAAK8qJ,YACZ/8I,EAAUlB,EAAKkB,QACf0tJ,EAAS1tJ,EAAQ1N,SAAW0N,EAAQ1N,QAAQ40I,aAAe,EAC3DxtI,EAAOoF,EAAKpF,MAAQ,GAC1B,IAAKA,EAAKxJ,OACR,OAAOw9J,EAET,MAAMpf,EAAa50I,EAAK,GAAGG,KAAK5H,KAAKwwJ,0BAA0B,IACzDkL,EAAYj0J,EAAKA,EAAKxJ,OAAS,GAAG2J,KAAK5H,KAAKwwJ,0BAA0B/oJ,EAAKxJ,OAAS,IAC1F,OAAOgH,KAAKiW,IAAIugJ,EAAQpf,EAAYqf,GAAa,CACnD,CACA,IAAAxV,GACE,MAAMr5I,EAAO7M,KAAK8qJ,YAClBj+I,EAAKkB,QAAQ4tJ,oBAAoB37J,KAAKswI,MAAMggB,UAAWzjJ,EAAKoxH,OAAO7uG,MACnEnpB,MAAMigJ,MACR,EAEF+U,GAAe17J,GAAK,OACpB07J,GAAehoH,SAAW,CACxBm7G,mBAAoB,OACpBsC,gBAAiB,QACjBjf,UAAU,EACV8M,UAAU,GAEZ0c,GAAe1nI,UAAY,CACzBi+G,OAAQ,CACNkmB,QAAS,CACP1uJ,KAAM,YAER4uJ,QAAS,CACP5uJ,KAAM,YAKZ,MAAM4yJ,WAA4B5P,GAChC,WAAAhuJ,CAAYsyI,EAAOzY,GACjB5xH,MAAMqqI,EAAOzY,GACb73H,KAAK44J,iBAAcjhJ,EACnB3X,KAAK64J,iBAAclhJ,CACrB,CACA,gBAAAw4I,CAAiBn1I,GACf,MAAMnO,EAAO7M,KAAK8qJ,YACZxa,EAAQtwI,KAAKswI,MACb6e,EAAS7e,EAAM7oI,KAAK0nJ,QAAU,GAC9BpyJ,EAAQ4kJ,GAAa90I,EAAKqxH,QAAQljH,GAAO7X,EAAGmtI,EAAMjwI,QAAQkhJ,QAChE,MAAO,CACLzpH,MAAOq3H,EAAOn0I,IAAU,GACxBje,QAEJ,CACA,eAAAiyJ,CAAgBniJ,EAAMpF,EAAMqW,EAAOinG,GACjC,OAAO+2B,GAA4Bh1H,KAAK9mB,KAAjC87I,CAAuCjvI,EAAMpF,EAAMqW,EAAOinG,EACnE,CACA,MAAAt/E,CAAO4vC,GACL,MAAM6jF,EAAOl5J,KAAK8qJ,YAAYrjJ,KAC9BzH,KAAK67J,gBACL77J,KAAKsyJ,eAAe4G,EAAM,EAAGA,EAAKj7J,OAAQo3E,EAC5C,CACA,SAAAu6E,GACE,MAAM/iJ,EAAO7M,KAAK8qJ,YACZnxB,EAAQ,CAACx+G,IAAKjO,OAAOksH,kBAAmBl+G,IAAKhO,OAAOi9I,mBAY1D,OAXAt9I,EAAKpF,KAAKhF,SAAQ,CAACsD,EAASiV,KAC1B,MAAMghI,EAASh8I,KAAKwvJ,UAAUx0I,GAAO7X,GAChCu0B,MAAMskH,IAAWh8I,KAAKswI,MAAM2mB,kBAAkBj8I,KAC7CghI,EAASriB,EAAMx+G,MACjBw+G,EAAMx+G,IAAM6gI,GAEVA,EAASriB,EAAMz+G,MACjBy+G,EAAMz+G,IAAM8gI,GAEhB,IAEKriB,CACT,CACA,aAAAkiC,GACE,MAAMvrB,EAAQtwI,KAAKswI,MACbggB,EAAYhgB,EAAMggB,UAClBp+H,EAAOo+G,EAAMjwI,QACby7J,EAAU72J,KAAKkW,IAAIm1I,EAAUjjD,MAAQijD,EAAU1jI,KAAM0jI,EAAUhb,OAASgb,EAAU3jI,KAClFksI,EAAc5zJ,KAAKiW,IAAI4gJ,EAAU,EAAG,GACpClD,EAAc3zJ,KAAKiW,IAAIgX,EAAK6pI,iBAAoBlD,EAAc,IAAQ3mI,EAAqB,iBAAI,EAAG,GAClGwnI,GAAgBb,EAAcD,GAAetoB,EAAM0rB,yBACzDh8J,KAAK64J,YAAcA,EAAea,EAAe15J,KAAKgb,MACtDhb,KAAK44J,YAAc54J,KAAK64J,YAAca,CACxC,CACA,cAAApH,CAAe4G,EAAMp7I,EAAOinG,EAAO1vC,GACjC,MAAMxwE,EAAiB,UAATwwE,EACRi7D,EAAQtwI,KAAKswI,MACbp+G,EAAOo+G,EAAMjwI,QACb45J,EAAgB/nI,EAAK+9G,UACrBlxF,EAAQ/+C,KAAK8qJ,YAAYgD,OACzBoM,EAAUn7G,EAAMk9G,QAChB9B,EAAUp7G,EAAMm9G,QAChBC,EAAoBp9G,EAAMq9G,cAAc,GAAK,GAAMvyH,EACzD,IACI3rC,EADAg9H,EAAQihC,EAEZ,MAAME,EAAe,IAAMr8J,KAAKs8J,uBAChC,IAAKp+J,EAAI,EAAGA,EAAI4f,IAAS5f,EACvBg9H,GAASl7H,KAAKu8J,cAAcr+J,EAAGm3E,EAAMgnF,GAEvC,IAAKn+J,EAAI4f,EAAO5f,EAAI4f,EAAQinG,EAAO7mH,IAAK,CACtC,MAAMy2I,EAAMukB,EAAKh7J,GACjB,IAAIi6J,EAAaj9B,EACbk9B,EAAWl9B,EAAQl7H,KAAKu8J,cAAcr+J,EAAGm3E,EAAMgnF,GAC/CxD,EAAcvoB,EAAM2mB,kBAAkB/4J,GAAK6gD,EAAMy9G,8BAA8Bx8J,KAAKwvJ,UAAUtxJ,GAAGiF,GAAK,EAC1G+3H,EAAQk9B,EACJvzJ,IACEo1J,EAAcG,eAChBvB,EAAc,GAEZoB,EAAcF,gBAChB5B,EAAaC,EAAW+D,IAG5B,MAAM3pD,EAAa,CACjBzxE,EAAGm5H,EACHl5H,EAAGm5H,EACHvB,YAAa,EACbC,cACAV,aACAC,WACA/3J,QAASL,KAAKwwJ,0BAA0BtyJ,EAAGy2I,EAAI93E,OAAS,SAAWwY,IAErEr1E,KAAK0xJ,cAAc/c,EAAKz2I,EAAGs0G,EAAYn9B,EACzC,CACF,CACA,oBAAAinF,GACE,MAAMzvJ,EAAO7M,KAAK8qJ,YAClB,IAAI/lC,EAAQ,EAMZ,OALAl4G,EAAKpF,KAAKhF,SAAQ,CAACsD,EAASiV,MACrB0c,MAAM13B,KAAKwvJ,UAAUx0I,GAAO7X,IAAMnD,KAAKswI,MAAM2mB,kBAAkBj8I,IAClE+pG,GACF,IAEKA,CACT,CACA,aAAAw3C,CAAcvhJ,EAAOq6D,EAAMgnF,GACzB,OAAOr8J,KAAKswI,MAAM2mB,kBAAkBj8I,GAChCu/G,EAAUv6H,KAAKwwJ,0BAA0Bx1I,EAAOq6D,GAAM6lD,OAASmhC,GAC/D,CACN,EAEFT,GAAoBr8J,GAAK,YACzBq8J,GAAoB3oH,SAAW,CAC7By9G,gBAAiB,MACjBzgB,UAAW,CACT8pB,eAAe,EACfK,cAAc,GAEhBlS,WAAY,CACVH,QAAS,CACP/+I,KAAM,SACNwpG,WAAY,CAAC,IAAK,IAAK,aAAc,WAAY,cAAe,iBAGpEu+B,UAAW,IACXonB,WAAY,GAEdyD,GAAoBroI,UAAY,CAC9B6sH,YAAa,EACb9O,QAAS,CACPopB,OAAQ,CACNvL,OAAQ,CACN,cAAAwL,CAAerqB,GACb,MAAM7oI,EAAO6oI,EAAM7oI,KACnB,GAAIA,EAAK0nJ,OAAOlxJ,QAAUwJ,EAAK2oI,SAASnyI,OAAQ,CAC9C,MAAOkxJ,QAAQ,WAAC/a,IAAe9D,EAAMoqB,OAAOr6J,QAC5C,OAAOoH,EAAK0nJ,OAAO5qJ,KAAI,CAACuzB,EAAO55B,KAC7B,MAAM2O,EAAOyjI,EAAMyd,eAAe,GAC5Bz6I,EAAQzG,EAAKo8C,WAAWg2F,SAAS/gJ,GACvC,MAAO,CACL8uB,KAAM8K,EACNi/G,UAAWzjI,EAAM48H,gBACjBsG,YAAaljI,EAAM68H,YACnBsG,UAAWnjI,EAAM2hI,YACjBb,WAAYA,EACZ0X,QAASxb,EAAM2mB,kBAAkB/4J,GACjC8c,MAAO9c,EACR,GAEL,CACA,MAAO,EACT,GAEF,OAAAwvC,CAAQpwC,EAAGs9J,EAAYF,GACrBA,EAAOpqB,MAAMuqB,qBAAqBD,EAAW5/I,OAC7C0/I,EAAOpqB,MAAM7qG,QACf,GAEFgzH,QAAS,CACPx4J,UAAW,CACT,KAAAy4J,GACE,MAAO,EACT,EACA,KAAA5gI,CAAMzP,GACJ,OAAOA,EAAQioH,MAAM7oI,KAAK0nJ,OAAO9mI,EAAQqD,WAAa,KAAOrD,EAAQ2yI,cACvE,KAINxpB,OAAQ,CACNruI,EAAG,CACD6F,KAAM,eACNyzJ,WAAY,CACVlpJ,SAAS,GAEXylI,aAAa,EACb2e,KAAM,CACJ+E,UAAU,GAEZC,YAAa,CACXppJ,SAAS,GAEX4kJ,WAAY,KAKlB,MAAMyE,WAAsBjE,IAE5BiE,GAAcr9J,GAAK,MACnBq9J,GAAc3pH,SAAW,CACvB+kH,OAAQ,EACR3jB,SAAU,EACV0jB,cAAe,IACfzjB,OAAQ,QAGV,MAAMuoB,WAAwB7Q,GAC5B,gBAAAmE,CAAiBn1I,GACf,MAAM0vI,EAAS1qJ,KAAK8qJ,YAAYJ,OAC1B1O,EAASh8I,KAAKwvJ,UAAUx0I,GAC9B,MAAO,CACL8c,MAAO4yH,EAAO0E,YAAYp0I,GAC1Bje,MAAO,GAAK2tJ,EAAO0F,iBAAiBpU,EAAO0O,EAAOt7H,OAEtD,CACA,eAAA4/H,CAAgBniJ,EAAMpF,EAAMqW,EAAOinG,GACjC,OAAO+2B,GAA4Bh1H,KAAK9mB,KAAjC87I,CAAuCjvI,EAAMpF,EAAMqW,EAAOinG,EACnE,CACA,MAAAt/E,CAAO4vC,GACL,MAAMxoE,EAAO7M,KAAK8qJ,YACZt5C,EAAO3kG,EAAKkB,QACZkiC,EAASpjC,EAAKpF,MAAQ,GACtB0nJ,EAAStiJ,EAAKoxH,OAAOmxB,YAE3B,GADA59C,EAAKvhE,OAASA,EACD,WAATolC,EAAmB,CACrB,MAAMh1E,EAAUL,KAAKuwJ,6BAA6Bl7E,GAC7Cr1E,KAAKK,QAAQoxI,WAChBpxI,EAAQ40I,YAAc,GAExB,MAAMziC,EAAa,CACjByxC,OAAO,EACPG,UAAW+K,EAAOlxJ,SAAWgyC,EAAOhyC,OACpCoC,WAEFL,KAAK0xJ,cAAclgD,OAAM75F,EAAW66F,EAAYn9B,EAClD,CACAr1E,KAAKsyJ,eAAeriH,EAAQ,EAAGA,EAAOhyC,OAAQo3E,EAChD,CACA,cAAAi9E,CAAeriH,EAAQnyB,EAAOinG,EAAO1vC,GACnC,MAAMt2B,EAAQ/+C,KAAK8qJ,YAAYgD,OACzBjpJ,EAAiB,UAATwwE,EACd,IAAK,IAAIn3E,EAAI4f,EAAO5f,EAAI4f,EAAQinG,EAAO7mH,IAAK,CAC1C,MAAMgyC,EAAQD,EAAO/xC,GACfmC,EAAUL,KAAKwwJ,0BAA0BtyJ,EAAGgyC,EAAM2sB,OAAS,SAAWwY,GACtEynF,EAAgB/9G,EAAMg+G,yBAAyB7+J,EAAG8B,KAAKwvJ,UAAUtxJ,GAAGiF,GACpE49B,EAAIl8B,EAAQk6C,EAAMk9G,QAAUa,EAAc/7H,EAC1CC,EAAIn8B,EAAQk6C,EAAMm9G,QAAUY,EAAc97H,EAC1CwxE,EAAa,CACjBzxE,IACAC,IACAk6F,MAAO4hC,EAAc5hC,MACrBj7F,KAAMvI,MAAMqJ,IAAMrJ,MAAMsJ,GACxB3gC,WAEFL,KAAK0xJ,cAAcxhH,EAAOhyC,EAAGs0G,EAAYn9B,EAC3C,CACF,EAEFwnF,GAAgBt9J,GAAK,QACrBs9J,GAAgB5pH,SAAW,CACzBm7G,mBAAoB,OACpBsC,gBAAiB,QACjB3f,UAAW,IACXU,UAAU,EACVv6H,SAAU,CACRs6F,KAAM,CACJ14B,KAAM,WAIZ+jF,GAAgBtpI,UAAY,CAC1B6sH,YAAa,EACb5O,OAAQ,CACNruI,EAAG,CACD6F,KAAM,kBAKZ,MAAM6F,GACJ,WAAA7Q,GACEgC,KAAK+gC,OAAIppB,EACT3X,KAAKghC,OAAIrpB,EACT3X,KAAK68D,QAAS,EACd78D,KAAKK,aAAUsX,EACf3X,KAAK8oJ,iBAAcnxI,CACrB,CACA,eAAAqlJ,CAAgBC,GACd,MAAM,EAACl8H,EAAC,EAAEC,GAAKhhC,KAAKk9J,SAAS,CAAC,IAAK,KAAMD,GACzC,MAAO,CAACl8H,IAAGC,IACb,CACA,QAAAm8H,GACE,OAAOjjC,EAASl6H,KAAK+gC,IAAMm5F,EAASl6H,KAAKghC,EAC3C,CACA,QAAAk8H,CAASpwI,EAAOswI,GACd,MAAMxX,EAAQ5lJ,KAAK8oJ,YACnB,IAAKsU,IAAUxX,EACb,OAAO5lJ,KAET,MAAMw6D,EAAM,CAAC,EAIb,OAHA1tC,EAAMrqB,SAAQ6qF,IACZ9yB,EAAI8yB,GAAQs4D,EAAMt4D,IAASs4D,EAAMt4D,GAAMzwB,SAAW+oF,EAAMt4D,GAAMk6D,IAAMxnJ,KAAKstF,EAAK,IAEzE9yB,CACT,EAEF3rD,GAAQokC,SAAW,CAAC,EACpBpkC,GAAQwuJ,mBAAgB1lJ,EAExB,MAAM2lJ,GAAa,CACjB,MAAA1zJ,CAAO7M,GACL,OAAOsB,EAAQtB,GAASA,EAAQ,GAAKA,CACvC,EACA,OAAAwgK,CAAQC,EAAWxiJ,EAAOu4I,GACxB,GAAkB,IAAdiK,EACF,MAAO,IAET,MAAMjc,EAASvhJ,KAAKswI,MAAMjwI,QAAQkhJ,OAClC,IAAIkc,EACAjjH,EAAQgjH,EACZ,GAAIjK,EAAMt1J,OAAS,EAAG,CACpB,MAAMy/J,EAAUz4J,KAAKiW,IAAIjW,KAAKyW,IAAI63I,EAAM,GAAGx2J,OAAQkI,KAAKyW,IAAI63I,EAAMA,EAAMt1J,OAAS,GAAGlB,SAChF2gK,EAAU,MAAQA,EAAU,QAC9BD,EAAW,cAEbjjH,EAAQmjH,GAAeH,EAAWjK,EACpC,CACA,MAAMqK,EAAWnkC,EAAMx0H,KAAKyW,IAAI8+B,IAC1BqjH,EAAa54J,KAAKiW,IAAIjW,KAAKkW,KAAK,EAAIlW,KAAK6S,MAAM8lJ,GAAW,IAAK,GAC/Dv9J,EAAU,CAACo9J,WAAUK,sBAAuBD,EAAYE,sBAAuBF,GAErF,OADAn/J,OAAO02B,OAAO/0B,EAASL,KAAKK,QAAQkzJ,MAAM3R,QACnCD,GAAa6b,EAAWjc,EAAQlhJ,EACzC,EACA,WAAA29J,CAAYR,EAAWxiJ,EAAOu4I,GAC5B,GAAkB,IAAdiK,EACF,MAAO,IAET,MAAM7V,EAAS6V,EAAav4J,KAAKC,IAAI,GAAID,KAAK6S,MAAM2hH,EAAM+jC,KAC1D,OAAe,IAAX7V,GAA2B,IAAXA,GAA2B,IAAXA,EAC3B2V,GAAWC,QAAQz+J,KAAKkB,KAAMw9J,EAAWxiJ,EAAOu4I,GAElD,EACT,GAEF,SAASoK,GAAeH,EAAWjK,GACjC,IAAI/4G,EAAQ+4G,EAAMt1J,OAAS,EAAIs1J,EAAM,GAAGx2J,MAAQw2J,EAAM,GAAGx2J,MAAQw2J,EAAM,GAAGx2J,MAAQw2J,EAAM,GAAGx2J,MAI3F,OAHIkI,KAAKyW,IAAI8+B,IAAU,GAAKgjH,IAAcv4J,KAAK6S,MAAM0lJ,KACnDhjH,EAAQgjH,EAAYv4J,KAAK6S,MAAM0lJ,IAE1BhjH,CACT,CACA,IAAIyjH,GAAQ,CAACX,eAqEb,SAASY,GAASn/G,EAAOw0G,GACvB,MAAM4K,EAAWp/G,EAAM1+C,QAAQkzJ,MACzB6K,EAAaD,EAASE,eAAiBC,GAAkBv/G,GACzDw/G,EAAeJ,EAASK,MAAMnmI,QAAUomI,GAAgBlL,GAAS,GACjEmL,EAAkBH,EAAatgK,OAC/B++G,EAAQuhD,EAAa,GACrBvhG,EAAOuhG,EAAaG,EAAkB,GACtCC,EAAW,GACjB,GAAID,EAAkBN,EAEpB,OADAQ,GAAWrL,EAAOoL,EAAUJ,EAAcG,EAAkBN,GACrDO,EAET,MAAMxF,EAAU0F,GAAiBN,EAAchL,EAAO6K,GACtD,GAAIM,EAAkB,EAAG,CACvB,IAAIxgK,EAAGy5H,EACP,MAAMmnC,EAAkBJ,EAAkB,EAAIz5J,KAAK6kD,OAAOkT,EAAOggD,IAAU0hD,EAAkB,IAAM,KAEnG,IADAz+H,GAAKszH,EAAOoL,EAAUxF,EAASpiC,EAAc+nC,GAAmB,EAAI9hD,EAAQ8hD,EAAiB9hD,GACxF9+G,EAAI,EAAGy5H,EAAO+mC,EAAkB,EAAGxgK,EAAIy5H,EAAMz5H,IAChD+hC,GAAKszH,EAAOoL,EAAUxF,EAASoF,EAAargK,GAAIqgK,EAAargK,EAAI,IAGnE,OADA+hC,GAAKszH,EAAOoL,EAAUxF,EAASn8F,EAAM+5D,EAAc+nC,GAAmBvL,EAAMt1J,OAAS++D,EAAO8hG,GACrFH,CACT,CAEA,OADA1+H,GAAKszH,EAAOoL,EAAUxF,GACfwF,CACT,CACA,SAASL,GAAkBv/G,GACzB,MAAM5yB,EAAS4yB,EAAM1+C,QAAQ8rB,OACvB4yI,EAAahgH,EAAMigH,YACnBC,EAAWlgH,EAAMs0G,QAAU0L,GAAc5yI,EAAS,EAAI,GACtD+yI,EAAWngH,EAAMogH,WAAaJ,EACpC,OAAO95J,KAAK6S,MAAM7S,KAAKkW,IAAI8jJ,EAAUC,GACvC,CACA,SAASL,GAAiBN,EAAchL,EAAO6K,GAC7C,MAAMgB,EAAmBC,GAAed,GAClCpF,EAAU5F,EAAMt1J,OAASmgK,EAC/B,IAAKgB,EACH,OAAOn6J,KAAKiW,IAAIi+I,EAAS,GAE3B,MAAMmG,EAAUrlC,EAAWmlC,GAC3B,IAAK,IAAIlhK,EAAI,EAAGy5H,EAAO2nC,EAAQrhK,OAAS,EAAGC,EAAIy5H,EAAMz5H,IAAK,CACxD,MAAM2oJ,EAASyY,EAAQphK,GACvB,GAAI2oJ,EAASsS,EACX,OAAOtS,CAEX,CACA,OAAO5hJ,KAAKiW,IAAIi+I,EAAS,EAC3B,CACA,SAASsF,GAAgBlL,GACvB,MAAM/1J,EAAS,GACf,IAAIU,EAAGy5H,EACP,IAAKz5H,EAAI,EAAGy5H,EAAO47B,EAAMt1J,OAAQC,EAAIy5H,EAAMz5H,IACrCq1J,EAAMr1J,GAAGsgK,OACXhhK,EAAO0E,KAAKhE,GAGhB,OAAOV,CACT,CACA,SAASohK,GAAWrL,EAAOoL,EAAUJ,EAAcpF,GACjD,IAEIj7J,EAFA6mH,EAAQ,EACR1nH,EAAOkhK,EAAa,GAGxB,IADApF,EAAUl0J,KAAK60B,KAAKq/H,GACfj7J,EAAI,EAAGA,EAAIq1J,EAAMt1J,OAAQC,IACxBA,IAAMb,IACRshK,EAASz8J,KAAKqxJ,EAAMr1J,IACpB6mH,IACA1nH,EAAOkhK,EAAax5C,EAAQo0C,GAGlC,CACA,SAASl5H,GAAKszH,EAAOoL,EAAUxF,EAASoG,EAAYC,GAClD,MAAM1hJ,EAAQo5G,EAAeqoC,EAAY,GACnCxhJ,EAAM9Y,KAAKkW,IAAI+7G,EAAesoC,EAAUjM,EAAMt1J,QAASs1J,EAAMt1J,QACnE,IACIA,EAAQC,EAAGb,EADX0nH,EAAQ,EAEZo0C,EAAUl0J,KAAK60B,KAAKq/H,GAChBqG,IACFvhK,EAASuhK,EAAWD,EACpBpG,EAAUl7J,EAASgH,KAAK6S,MAAM7Z,EAASk7J,IAEzC97J,EAAOygB,EACP,MAAOzgB,EAAO,EACZ0nH,IACA1nH,EAAO4H,KAAK6kD,MAAMhsC,EAAQinG,EAAQo0C,GAEpC,IAAKj7J,EAAI+G,KAAKiW,IAAI4C,EAAO,GAAI5f,EAAI6f,EAAK7f,IAChCA,IAAMb,IACRshK,EAASz8J,KAAKqxJ,EAAMr1J,IACpB6mH,IACA1nH,EAAO4H,KAAK6kD,MAAMhsC,EAAQinG,EAAQo0C,GAGxC,CACA,SAASkG,GAAet3I,GACtB,MAAM0I,EAAM1I,EAAI9pB,OAChB,IAAIC,EAAG4mC,EACP,GAAIrU,EAAM,EACR,OAAO,EAET,IAAKqU,EAAO/c,EAAI,GAAI7pB,EAAI,EAAGA,EAAIuyB,IAAOvyB,EACpC,GAAI6pB,EAAI7pB,GAAK6pB,EAAI7pB,EAAI,KAAO4mC,EAC1B,OAAO,EAGX,OAAOA,CACT,CA7KAmO,GAASvvC,IAAI,QAAS,CACpB6P,SAAS,EACT4Y,QAAQ,EACRorG,SAAS,EACTyhB,aAAa,EACbiK,OAAQ,QACRlK,MAAO,EACP4e,KAAM,CACJpkJ,SAAS,EACTkjI,UAAW,EACXgpB,YAAY,EACZC,iBAAiB,EACjBC,WAAW,EACXZ,WAAY,EACZa,UAAW,CAACzxE,EAAM9tF,IAAYA,EAAQo2I,UACtCopB,UAAW,CAAC1xE,EAAM9tF,IAAYA,EAAQyuI,MACtC3iH,QAAQ,EACRg5H,WAAY,GACZC,iBAAkB,EAClBnQ,YAAa,GAEfyjB,MAAO,CACLnlJ,SAAS,EACTyZ,KAAM,GACN8yI,QAAS,CACPnzI,IAAK,EACL2oH,OAAQ,IAGZie,MAAO,CACLwM,YAAa,EACbC,YAAa,GACbC,QAAQ,EACRC,gBAAiB,EACjBC,gBAAiB,GACjBL,QAAS,EACTvsJ,SAAS,EACT2qJ,UAAU,EACVkC,gBAAiB,EACjBC,YAAa,EACb/9J,SAAU27J,GAAMX,WAAW1zJ,OAC3B02J,MAAO,CAAC,EACR9B,MAAO,CAAC,EACR/gC,MAAO,SACP8iC,WAAY,OACZC,mBAAmB,EACnBC,cAAe,4BACfC,gBAAiB,KAGrBztH,GAAS4+F,MAAM,cAAe,QAAS,GAAI,SAC3C5+F,GAAS4+F,MAAM,aAAc,QAAS,GAAI,eAC1C5+F,GAAS4+F,MAAM,aAAc,cAAe,GAAI,eAChD5+F,GAAS4+F,MAAM,cAAe,QAAS,GAAI,SAC3C5+F,GAAS0+F,SAAS,QAAS,CACzBY,WAAW,EACXF,YAAcvwI,IAAUA,EAAK0J,WAAW,YAAc1J,EAAK0J,WAAW,UAAqB,aAAT1J,GAAgC,WAATA,EACzGwwI,WAAaxwI,GAAkB,eAATA,GAAkC,mBAATA,IAEjDmxC,GAAS0+F,SAAS,SAAU,CAC1BY,UAAW,UAEbt/F,GAAS0+F,SAAS,cAAe,CAC/BU,YAAcvwI,GAAkB,oBAATA,GAAuC,aAATA,EACrDwwI,WAAaxwI,GAAkB,oBAATA,IA+GxB,MAAM6+J,GAAgBljC,GAAoB,SAAVA,EAAmB,QAAoB,UAAVA,EAAoB,OAASA,EACpFmjC,GAAiB,CAAC7hH,EAAOo2G,EAAMhpI,IAAoB,QAATgpI,GAA2B,SAATA,EAAkBp2G,EAAMo2G,GAAQhpI,EAAS4yB,EAAMo2G,GAAQhpI,EACzH,SAAS00I,GAAO94I,EAAK+4I,GACnB,MAAMtjK,EAAS,GACT0lC,EAAYnb,EAAI9pB,OAAS6iK,EACzBrwI,EAAM1I,EAAI9pB,OAChB,IAAIC,EAAI,EACR,KAAOA,EAAIuyB,EAAKvyB,GAAKglC,EACnB1lC,EAAO0E,KAAK6lB,EAAI9iB,KAAK6S,MAAM5Z,KAE7B,OAAOV,CACT,CACA,SAASujK,GAAoBhiH,EAAO/jC,EAAOgmJ,GACzC,MAAM/iK,EAAS8gD,EAAMw0G,MAAMt1J,OACrBgjK,EAAah8J,KAAKkW,IAAIH,EAAO/c,EAAS,GACtC6f,EAAQihC,EAAM63G,YACd74I,EAAMghC,EAAM83G,UACZ18B,EAAU,KAChB,IACIhuG,EADA+0I,EAAYniH,EAAMy0G,gBAAgByN,GAEtC,KAAID,IAEA70I,EADa,IAAXluB,EACOgH,KAAKiW,IAAIgmJ,EAAYpjJ,EAAOC,EAAMmjJ,GACxB,IAAVlmJ,GACC+jC,EAAMy0G,gBAAgB,GAAK0N,GAAa,GAExCA,EAAYniH,EAAMy0G,gBAAgByN,EAAa,IAAM,EAEjEC,GAAaD,EAAajmJ,EAAQmR,GAAUA,EACxC+0I,EAAYpjJ,EAAQq8G,GAAW+mC,EAAYnjJ,EAAMo8G,IAIvD,OAAO+mC,CACT,CACA,SAASluB,GAAemuB,EAAQljK,GAC9B4W,EAAKssJ,GAAS5qH,IACZ,MAAMm8F,EAAKn8F,EAAMm8F,GACXY,EAAQZ,EAAGz0I,OAAS,EAC1B,IAAIC,EACJ,GAAIo1I,EAAQr1I,EAAQ,CAClB,IAAKC,EAAI,EAAGA,EAAIo1I,IAASp1I,SAChBq4C,EAAM9uC,KAAKirI,EAAGx0I,IAEvBw0I,EAAGpnH,OAAO,EAAGgoH,EACf,IAEJ,CACA,SAAS8tB,GAAkB/gK,GACzB,OAAOA,EAAQs/J,UAAYt/J,EAAQ0+J,WAAa,CAClD,CACA,SAASsC,GAAehhK,EAASs0E,GAC/B,IAAKt0E,EAAQkT,QACX,OAAO,EAET,MAAMi9H,EAAOiI,GAAOp4I,EAAQmwI,KAAM77D,GAC5BmrF,EAAUtnB,GAAUn4I,EAAQy/J,SAC5B1pB,EAAQ/3I,EAAQgC,EAAQ2sB,MAAQ3sB,EAAQ2sB,KAAK/uB,OAAS,EAC5D,OAAQm4I,EAAQ5F,EAAKE,WAAcovB,EAAQhtI,MAC7C,CACA,SAASwuI,GAAmBxyI,EAAQiwB,GAClC,OAAOo6F,GAAcrqH,EAAQ,CAC3BiwB,QACA/1C,KAAM,SAEV,CACA,SAASu4J,GAAkBzyI,EAAQ9T,EAAOorI,GACxC,OAAOjN,GAAcrqH,EAAQ,CAC3Bs3H,OACAprI,QACAhS,KAAM,QAEV,CACA,SAASw4J,GAAW/jC,EAAO9yF,EAAU4sF,GACnC,IAAI/8D,EAAMgjE,GAAmBC,GAI7B,OAHKlG,GAAwB,UAAb5sF,IAA2B4sF,GAAwB,UAAb5sF,KACpD6vB,EAAMmmG,GAAanmG,IAEdA,CACT,CACA,SAASinG,GAAU1iH,EAAO5yB,EAAQwe,EAAU8yF,GAC1C,MAAM,IAAC9wG,EAAG,KAAEC,EAAI,OAAE0oH,EAAM,MAAEjoC,EAAK,MAAEijC,GAASvxF,GACpC,UAACuxG,EAAS,OAAE9e,GAAUlB,EAC5B,IACIqG,EAAU+qB,EAAQC,EADlBttB,EAAW,EAEf,MAAMvhH,EAASwiH,EAAS3oH,EAClB/Q,EAAQyxF,EAAQzgF,EACtB,GAAImyB,EAAMxnB,eAAgB,CAExB,GADAmqI,EAAShkC,GAAeD,EAAO7wG,EAAMygF,GACjChqF,EAASsnB,GAAW,CACtB,MAAMi3H,EAAiBljK,OAAOP,KAAKwsC,GAAU,GACvC5tC,EAAQ4tC,EAASi3H,GACvBD,EAASnwB,EAAOowB,GAAgBtjC,iBAAiBvhI,GAAS+1B,EAAS3G,CACrE,MACEw1I,EADsB,WAAbh3H,GACC2lH,EAAUhb,OAASgb,EAAU3jI,KAAO,EAAImG,EAAS3G,EAElDy0I,GAAe7hH,EAAOpU,EAAUxe,GAE3CwqH,EAAWtpC,EAAQzgF,CACrB,KAAO,CACL,GAAIvJ,EAASsnB,GAAW,CACtB,MAAMi3H,EAAiBljK,OAAOP,KAAKwsC,GAAU,GACvC5tC,EAAQ4tC,EAASi3H,GACvBF,EAASlwB,EAAOowB,GAAgBtjC,iBAAiBvhI,GAAS6e,EAAQuQ,CACpE,MACEu1I,EADsB,WAAb/2H,GACC2lH,EAAU1jI,KAAO0jI,EAAUjjD,OAAS,EAAIzxF,EAAQuQ,EAEjDy0I,GAAe7hH,EAAOpU,EAAUxe,GAE3Cw1I,EAASjkC,GAAeD,EAAO6X,EAAQ3oH,GACvC0nH,EAAwB,SAAb1pG,GAAuB2uF,EAAUA,CAC9C,CACA,MAAO,CAACooC,SAAQC,SAAQhrB,WAAUtC,WACpC,CACA,MAAMwtB,WAAchzJ,GAClB,WAAA7Q,CAAYgpJ,GACV/gJ,QACAjG,KAAKT,GAAKynJ,EAAIznJ,GACdS,KAAKgJ,KAAOg+I,EAAIh+I,KAChBhJ,KAAKK,aAAUsX,EACf3X,KAAKsuE,IAAM04E,EAAI14E,IACftuE,KAAKswI,MAAQ0W,EAAI1W,MACjBtwI,KAAK2sB,SAAMhV,EACX3X,KAAKs1I,YAAS39H,EACd3X,KAAK4sB,UAAOjV,EACZ3X,KAAKqtG,WAAQ11F,EACb3X,KAAK4b,WAAQjE,EACb3X,KAAK8yB,YAASnb,EACd3X,KAAK8hK,SAAW,CACdl1I,KAAM,EACNygF,MAAO,EACP1gF,IAAK,EACL2oH,OAAQ,GAEVt1I,KAAK22I,cAAWh/H,EAChB3X,KAAK4/I,eAAYjoI,EACjB3X,KAAK+hK,gBAAapqJ,EAClB3X,KAAKgiK,mBAAgBrqJ,EACrB3X,KAAK0U,iBAAciD,EACnB3X,KAAK2U,kBAAegD,EACpB3X,KAAKovB,UAAOzX,EACZ3X,KAAKiiK,mBAAgBtqJ,EACrB3X,KAAKmb,SAAMxD,EACX3X,KAAKkb,SAAMvD,EACX3X,KAAKkiK,YAASvqJ,EACd3X,KAAKuzJ,MAAQ,GACbvzJ,KAAKmiK,eAAiB,KACtBniK,KAAKoiK,YAAc,KACnBpiK,KAAKqiK,YAAc,KACnBriK,KAAKqzJ,QAAU,EACfrzJ,KAAKm/J,WAAa,EAClBn/J,KAAKsiK,kBAAoB,CAAC,EAC1BtiK,KAAK42J,iBAAcj/I,EACnB3X,KAAK62J,eAAYl/I,EACjB3X,KAAKuiK,gBAAiB,EACtBviK,KAAKwiK,cAAW7qJ,EAChB3X,KAAKyiK,cAAW9qJ,EAChB3X,KAAK0iK,mBAAgB/qJ,EACrB3X,KAAK2iK,mBAAgBhrJ,EACrB3X,KAAK4iK,aAAe,EACpB5iK,KAAK6iK,aAAe,EACpB7iK,KAAKknB,OAAS,CAAC,EACflnB,KAAK8iK,mBAAoB,EACzB9iK,KAAK2sJ,cAAWh1I,CAClB,CACA,IAAAqd,CAAK30B,GACHL,KAAKK,QAAUA,EAAQm6I,WAAWx6I,KAAK6lF,cACvC7lF,KAAKovB,KAAO/uB,EAAQ+uB,KACpBpvB,KAAKyiK,SAAWziK,KAAKmN,MAAM9M,EAAQ8a,KACnCnb,KAAKwiK,SAAWxiK,KAAKmN,MAAM9M,EAAQ6a,KACnClb,KAAK2iK,cAAgB3iK,KAAKmN,MAAM9M,EAAQ0iK,cACxC/iK,KAAK0iK,cAAgB1iK,KAAKmN,MAAM9M,EAAQ2iK,aAC1C,CACA,KAAA71J,CAAMuuC,EAAK1gC,GACT,OAAO0gC,CACT,CACA,aAAA2iF,GACE,IAAI,SAACokC,EAAQ,SAAED,EAAQ,cAAEG,EAAa,cAAED,GAAiB1iK,KAKzD,OAJAyiK,EAAWxrC,EAAgBwrC,EAAUv1J,OAAOksH,mBAC5CopC,EAAWvrC,EAAgBurC,EAAUt1J,OAAOi9I,mBAC5CwY,EAAgB1rC,EAAgB0rC,EAAez1J,OAAOksH,mBACtDspC,EAAgBzrC,EAAgByrC,EAAex1J,OAAOi9I,mBAC/C,CACLhvI,IAAK87G,EAAgBwrC,EAAUE,GAC/BznJ,IAAK+7G,EAAgBurC,EAAUE,GAC/BvkC,WAAYnH,EAAeyrC,GAC3BrkC,WAAYpH,EAAewrC,GAE/B,CACA,SAAA5S,CAAU/D,GACR,IACIlyB,GADA,IAACx+G,EAAG,IAAED,EAAG,WAAEijH,EAAU,WAAEC,GAAcp+H,KAAKq+H,gBAE9C,GAAIF,GAAcC,EAChB,MAAO,CAACjjH,MAAKD,OAEf,MAAM+nJ,EAAQjjK,KAAK4qJ,0BACnB,IAAK,IAAI1sJ,EAAI,EAAGy5H,EAAOsrC,EAAMhlK,OAAQC,EAAIy5H,IAAQz5H,EAC/Cy7H,EAAQspC,EAAM/kK,GAAG+qD,WAAW2mG,UAAU5vJ,KAAM6rJ,GACvC1tB,IACHhjH,EAAMlW,KAAKkW,IAAIA,EAAKw+G,EAAMx+G,MAEvBijH,IACHljH,EAAMjW,KAAKiW,IAAIA,EAAKy+G,EAAMz+G,MAK9B,OAFAC,EAAMijH,GAAcjjH,EAAMD,EAAMA,EAAMC,EACtCD,EAAMijH,GAAchjH,EAAMD,EAAMC,EAAMD,EAC/B,CACLC,IAAK87G,EAAgB97G,EAAK87G,EAAgB/7G,EAAKC,IAC/CD,IAAK+7G,EAAgB/7G,EAAK+7G,EAAgB97G,EAAKD,IAEnD,CACA,UAAAgoJ,GACE,MAAO,CACLt2I,KAAM5sB,KAAK0U,aAAe,EAC1BiY,IAAK3sB,KAAK+hK,YAAc,EACxB10D,MAAOrtG,KAAK2U,cAAgB,EAC5B2gI,OAAQt1I,KAAKgiK,eAAiB,EAElC,CACA,QAAAmB,GACE,OAAOnjK,KAAKuzJ,KACd,CACA,SAAAnE,GACE,MAAM3nJ,EAAOzH,KAAKswI,MAAM7oI,KACxB,OAAOzH,KAAKK,QAAQ8uJ,SAAWnvJ,KAAKu3B,eAAiB9vB,EAAK27J,QAAU37J,EAAK47J,UAAY57J,EAAK0nJ,QAAU,EACtG,CACA,YAAAmU,GACEtjK,KAAKknB,OAAS,CAAC,EACflnB,KAAK8iK,mBAAoB,CAC3B,CACA,YAAAj7E,GACEvlF,EAAStC,KAAKK,QAAQwnF,aAAc,CAAC7nF,MACvC,CACA,MAAAylC,CAAOkxG,EAAUiJ,EAAWS,GAC1B,MAAM,YAACrH,EAAW,MAAED,EAAOwa,MAAO4K,GAAYn+J,KAAKK,QAC7CkjK,EAAapF,EAASoF,WAC5BvjK,KAAK6nF,eACL7nF,KAAK22I,SAAWA,EAChB32I,KAAK4/I,UAAYA,EACjB5/I,KAAK8hK,SAAWzhB,EAAU3hJ,OAAO02B,OAAO,CACtCxI,KAAM,EACNygF,MAAO,EACP1gF,IAAK,EACL2oH,OAAQ,GACP+K,GACHrgJ,KAAKuzJ,MAAQ,KACbvzJ,KAAKqiK,YAAc,KACnBriK,KAAKmiK,eAAiB,KACtBniK,KAAKoiK,YAAc,KACnBpiK,KAAKwjK,sBACLxjK,KAAKyjK,gBACLzjK,KAAK0jK,qBACL1jK,KAAKm/J,WAAan/J,KAAKu3B,eACnBv3B,KAAK4b,MAAQykI,EAAQzzH,KAAOyzH,EAAQhzC,MACpCrtG,KAAK8yB,OAASutH,EAAQ1zH,IAAM0zH,EAAQ/K,OACnCt1I,KAAK8iK,oBACR9iK,KAAK2jK,mBACL3jK,KAAK4jK,sBACL5jK,KAAK6jK,kBACL7jK,KAAKkiK,OAASrpB,GAAU74I,KAAM+4I,EAAOC,GACrCh5I,KAAK8iK,mBAAoB,GAE3B9iK,KAAK8jK,mBACL9jK,KAAKuzJ,MAAQvzJ,KAAK+jK,cAAgB,GAClC/jK,KAAKgkK,kBACL,MAAMC,EAAkBV,EAAavjK,KAAKuzJ,MAAMt1J,OAChD+B,KAAKkkK,sBAAsBD,EAAkBpD,GAAO7gK,KAAKuzJ,MAAOgQ,GAAcvjK,KAAKuzJ,OACnFvzJ,KAAKsoJ,YACLtoJ,KAAKmkK,+BACLnkK,KAAKokK,yBACLpkK,KAAKqkK,8BACDlG,EAAS5qJ,UAAY4qJ,EAASD,UAAgC,SAApBC,EAAS5/J,UACrDyB,KAAKuzJ,MAAQ2K,GAASl+J,KAAMA,KAAKuzJ,OACjCvzJ,KAAKqiK,YAAc,KACnBriK,KAAKskK,iBAEHL,GACFjkK,KAAKkkK,sBAAsBlkK,KAAKuzJ,OAElCvzJ,KAAKukK,YACLvkK,KAAKwkK,MACLxkK,KAAKykK,WACLzkK,KAAK0kK,aACP,CACA,SAAApc,GACE,IACI4O,EAAYE,EADZuN,EAAgB3kK,KAAKK,QAAQk3H,QAE7Bv3H,KAAKu3B,gBACP2/H,EAAal3J,KAAK4sB,KAClBwqI,EAAWp3J,KAAKqtG,QAEhB6pD,EAAal3J,KAAK2sB,IAClByqI,EAAWp3J,KAAKs1I,OAChBqvB,GAAiBA,GAEnB3kK,KAAK42J,YAAcM,EACnBl3J,KAAK62J,UAAYO,EACjBp3J,KAAKuiK,eAAiBoC,EACtB3kK,KAAKqzJ,QAAU+D,EAAWF,EAC1Bl3J,KAAK4kK,eAAiB5kK,KAAKK,QAAQwkK,aACrC,CACA,WAAAH,GACEpiK,EAAStC,KAAKK,QAAQqkK,YAAa,CAAC1kK,MACtC,CACA,mBAAAwjK,GACElhK,EAAStC,KAAKK,QAAQmjK,oBAAqB,CAACxjK,MAC9C,CACA,aAAAyjK,GACMzjK,KAAKu3B,gBACPv3B,KAAK4b,MAAQ5b,KAAK22I,SAClB32I,KAAK4sB,KAAO,EACZ5sB,KAAKqtG,MAAQrtG,KAAK4b,QAElB5b,KAAK8yB,OAAS9yB,KAAK4/I,UACnB5/I,KAAK2sB,IAAM,EACX3sB,KAAKs1I,OAASt1I,KAAK8yB,QAErB9yB,KAAK0U,YAAc,EACnB1U,KAAK+hK,WAAa,EAClB/hK,KAAK2U,aAAe,EACpB3U,KAAKgiK,cAAgB,CACvB,CACA,kBAAA0B,GACEphK,EAAStC,KAAKK,QAAQqjK,mBAAoB,CAAC1jK,MAC7C,CACA,UAAA8kK,CAAWhjK,GACT9B,KAAKswI,MAAMy0B,cAAcjjK,EAAM9B,KAAK6lF,cACpCvjF,EAAStC,KAAKK,QAAQyB,GAAO,CAAC9B,MAChC,CACA,gBAAA2jK,GACE3jK,KAAK8kK,WAAW,mBAClB,CACA,mBAAAlB,GAAuB,CACvB,eAAAC,GACE7jK,KAAK8kK,WAAW,kBAClB,CACA,gBAAAhB,GACE9jK,KAAK8kK,WAAW,mBAClB,CACA,UAAAf,GACE,MAAO,EACT,CACA,eAAAC,GACEhkK,KAAK8kK,WAAW,kBAClB,CACA,2BAAAE,GACE1iK,EAAStC,KAAKK,QAAQ2kK,4BAA6B,CAAChlK,MACtD,CACA,kBAAAilK,CAAmB1R,GACjB,MAAM4K,EAAWn+J,KAAKK,QAAQkzJ,MAC9B,IAAIr1J,EAAGy5H,EAAMyuB,EACb,IAAKloJ,EAAI,EAAGy5H,EAAO47B,EAAMt1J,OAAQC,EAAIy5H,EAAMz5H,IACzCkoJ,EAAOmN,EAAMr1J,GACbkoJ,EAAKtuH,MAAQx1B,EAAS67J,EAAS77J,SAAU,CAAC8jJ,EAAKrpJ,MAAOmB,EAAGq1J,GAAQvzJ,KAErE,CACA,0BAAAklK,GACE5iK,EAAStC,KAAKK,QAAQ6kK,2BAA4B,CAACllK,MACrD,CACA,4BAAAmkK,GACE7hK,EAAStC,KAAKK,QAAQ8jK,6BAA8B,CAACnkK,MACvD,CACA,sBAAAokK,GACE,MAAM/jK,EAAUL,KAAKK,QACf89J,EAAW99J,EAAQkzJ,MACnB4R,EAAWnlK,KAAKuzJ,MAAMt1J,OACtB8hK,EAAc5B,EAAS4B,aAAe,EACtCC,EAAc7B,EAAS6B,YAC7B,IACIJ,EAAWhgB,EAAWwlB,EADtBnD,EAAgBlC,EAEpB,IAAK//J,KAAKqlK,eAAiBlH,EAAS5qJ,SAAWwsJ,GAAeC,GAAemF,GAAY,IAAMnlK,KAAKu3B,eAElG,YADAv3B,KAAKiiK,cAAgBlC,GAGvB,MAAMuF,EAAatlK,KAAKulK,iBAClBC,EAAgBF,EAAWG,OAAO7pJ,MAClC8pJ,EAAiBJ,EAAWK,QAAQ7yI,OACpC6jH,EAAW7a,GAAY97H,KAAKswI,MAAM10H,MAAQ4pJ,EAAe,EAAGxlK,KAAK22I,UACvEipB,EAAYv/J,EAAQ8rB,OAASnsB,KAAK22I,SAAWwuB,EAAWxuB,GAAYwuB,EAAW,GAC3EK,EAAgB,EAAI5F,IACtBA,EAAYjpB,GAAYwuB,GAAY9kK,EAAQ8rB,OAAS,GAAM,IAC3DyzH,EAAY5/I,KAAK4/I,UAAYwhB,GAAkB/gK,EAAQs3J,MACvDwG,EAAS2B,QAAUuB,GAAehhK,EAAQq4J,MAAO14J,KAAKswI,MAAMjwI,QAAQmwI,MACpE40B,EAAmBngK,KAAKykC,KAAK87H,EAAgBA,EAAgBE,EAAiBA,GAC9EzD,EAAgBxnC,EAAUx1H,KAAKkW,IAC7BlW,KAAK2gK,KAAK9pC,IAAawpC,EAAWK,QAAQ7yI,OAAS,GAAK8sI,GAAY,EAAG,IACvE36J,KAAK2gK,KAAK9pC,GAAY8jB,EAAYwlB,GAAmB,EAAG,IAAMngK,KAAK2gK,KAAK9pC,GAAY4pC,EAAiBN,GAAmB,EAAG,MAE7HnD,EAAgBh9J,KAAKiW,IAAI6kJ,EAAa96J,KAAKkW,IAAI6kJ,EAAaiC,KAE9DjiK,KAAKiiK,cAAgBA,CACvB,CACA,2BAAAoC,GACE/hK,EAAStC,KAAKK,QAAQgkK,4BAA6B,CAACrkK,MACtD,CACA,aAAAskK,GAAiB,CACjB,SAAAC,GACEjiK,EAAStC,KAAKK,QAAQkkK,UAAW,CAACvkK,MACpC,CACA,GAAAwkK,GACE,MAAM1I,EAAU,CACdlgJ,MAAO,EACPkX,OAAQ,IAEJ,MAACw9G,EAAOjwI,SAAUkzJ,MAAO4K,EAAUzF,MAAOmN,EAAWlO,KAAMmO,IAAa9lK,KACxEuT,EAAUvT,KAAKqlK,aACf9tI,EAAev3B,KAAKu3B,eAC1B,GAAIhkB,EAAS,CACX,MAAMwyJ,EAAc1E,GAAewE,EAAWv1B,EAAMjwI,QAAQmwI,MAQ5D,GAPIj5G,GACFukI,EAAQlgJ,MAAQ5b,KAAK22I,SACrBmlB,EAAQhpI,OAASsuI,GAAkB0E,GAAYC,IAE/CjK,EAAQhpI,OAAS9yB,KAAK4/I,UACtBkc,EAAQlgJ,MAAQwlJ,GAAkB0E,GAAYC,GAE5C5H,EAAS5qJ,SAAWvT,KAAKuzJ,MAAMt1J,OAAQ,CACzC,MAAM,MAAC++G,EAAK,KAAEhgD,EAAI,OAAEyoG,EAAM,QAAEE,GAAW3lK,KAAKulK,iBACtCS,EAAiC,EAAnB7H,EAAS2B,QACvBmG,EAAe1rC,EAAUv6H,KAAKiiK,eAC9B7xG,EAAMnrD,KAAKmrD,IAAI61G,GACf91G,EAAMlrD,KAAKkrD,IAAI81G,GACrB,GAAI1uI,EAAc,CAChB,MAAM2uI,EAAc/H,EAAS8B,OAAS,EAAI9vG,EAAMs1G,EAAO7pJ,MAAQw0C,EAAMu1G,EAAQ7yI,OAC7EgpI,EAAQhpI,OAAS7tB,KAAKkW,IAAInb,KAAK4/I,UAAWkc,EAAQhpI,OAASozI,EAAcF,EAC3E,KAAO,CACL,MAAMG,EAAahI,EAAS8B,OAAS,EAAI7vG,EAAMq1G,EAAO7pJ,MAAQu0C,EAAMw1G,EAAQ7yI,OAC5EgpI,EAAQlgJ,MAAQ3W,KAAKkW,IAAInb,KAAK22I,SAAUmlB,EAAQlgJ,MAAQuqJ,EAAaH,EACvE,CACAhmK,KAAKomK,kBAAkBppD,EAAOhgD,EAAM7M,EAAKC,EAC3C,CACF,CACApwD,KAAKqmK,iBACD9uI,GACFv3B,KAAK4b,MAAQ5b,KAAKqzJ,QAAU/iB,EAAM10H,MAAQ5b,KAAK8hK,SAASl1I,KAAO5sB,KAAK8hK,SAASz0D,MAC7ErtG,KAAK8yB,OAASgpI,EAAQhpI,SAEtB9yB,KAAK4b,MAAQkgJ,EAAQlgJ,MACrB5b,KAAK8yB,OAAS9yB,KAAKqzJ,QAAU/iB,EAAMx9G,OAAS9yB,KAAK8hK,SAASn1I,IAAM3sB,KAAK8hK,SAASxsB,OAElF,CACA,iBAAA8wB,CAAkBppD,EAAOhgD,EAAM7M,EAAKC,GAClC,MAAOmjG,OAAO,MAAC91B,EAAK,QAAEqiC,GAAQ,SAAEn1H,GAAY3qC,KAAKK,QAC3CimK,EAAmC,IAAvBtmK,KAAKiiK,cACjBsE,EAAgC,QAAb57H,GAAoC,MAAd3qC,KAAKovB,KACpD,GAAIpvB,KAAKu3B,eAAgB,CACvB,MAAMiG,EAAax9B,KAAKwzJ,gBAAgB,GAAKxzJ,KAAK4sB,KAC5C45I,EAAcxmK,KAAKqtG,MAAQrtG,KAAKwzJ,gBAAgBxzJ,KAAKuzJ,MAAMt1J,OAAS,GAC1E,IAAIyW,EAAc,EACdC,EAAe,EACf2xJ,EACEC,GACF7xJ,EAAc07C,EAAM4sD,EAAMphG,MAC1BjH,EAAew7C,EAAM6M,EAAKlqC,SAE1Bpe,EAAcy7C,EAAM6sD,EAAMlqF,OAC1Bne,EAAey7C,EAAM4M,EAAKphD,OAET,UAAV6hH,EACT9oH,EAAeqoD,EAAKphD,MACD,QAAV6hH,EACT/oH,EAAcsoG,EAAMphG,MACD,UAAV6hH,IACT/oH,EAAcsoG,EAAMphG,MAAQ,EAC5BjH,EAAeqoD,EAAKphD,MAAQ,GAE9B5b,KAAK0U,YAAczP,KAAKiW,KAAKxG,EAAc8oB,EAAasiI,GAAW9/J,KAAK4b,OAAS5b,KAAK4b,MAAQ4hB,GAAa,GAC3Gx9B,KAAK2U,aAAe1P,KAAKiW,KAAKvG,EAAe6xJ,EAAc1G,GAAW9/J,KAAK4b,OAAS5b,KAAK4b,MAAQ4qJ,GAAc,EACjH,KAAO,CACL,IAAIzE,EAAa/kG,EAAKlqC,OAAS,EAC3BkvI,EAAgBhlD,EAAMlqF,OAAS,EACrB,UAAV2qG,GACFskC,EAAa,EACbC,EAAgBhlD,EAAMlqF,QACH,QAAV2qG,IACTskC,EAAa/kG,EAAKlqC,OAClBkvI,EAAgB,GAElBhiK,KAAK+hK,WAAaA,EAAajC,EAC/B9/J,KAAKgiK,cAAgBA,EAAgBlC,CACvC,CACF,CACA,cAAAuG,GACMrmK,KAAK8hK,WACP9hK,KAAK8hK,SAASl1I,KAAO3nB,KAAKiW,IAAIlb,KAAK0U,YAAa1U,KAAK8hK,SAASl1I,MAC9D5sB,KAAK8hK,SAASn1I,IAAM1nB,KAAKiW,IAAIlb,KAAK+hK,WAAY/hK,KAAK8hK,SAASn1I,KAC5D3sB,KAAK8hK,SAASz0D,MAAQpoG,KAAKiW,IAAIlb,KAAK2U,aAAc3U,KAAK8hK,SAASz0D,OAChErtG,KAAK8hK,SAASxsB,OAASrwI,KAAKiW,IAAIlb,KAAKgiK,cAAehiK,KAAK8hK,SAASxsB,QAEtE,CACA,QAAAmvB,GACEniK,EAAStC,KAAKK,QAAQokK,SAAU,CAACzkK,MACnC,CACA,YAAAu3B,GACE,MAAM,KAACnI,EAAI,SAAEub,GAAY3qC,KAAKK,QAC9B,MAAoB,QAAbsqC,GAAmC,WAAbA,GAAkC,MAATvb,CACxD,CACA,UAAAq3I,GACE,OAAOzmK,KAAKK,QAAQqmK,QACtB,CACA,qBAAAxC,CAAsB3Q,GAGpB,IAAIr1J,EAAGy5H,EACP,IAHA33H,KAAKglK,8BACLhlK,KAAKilK,mBAAmB1R,GAEnBr1J,EAAI,EAAGy5H,EAAO47B,EAAMt1J,OAAQC,EAAIy5H,EAAMz5H,IACrC64H,EAAcw8B,EAAMr1J,GAAG45B,SACzBy7H,EAAMjoI,OAAOptB,EAAG,GAChBy5H,IACAz5H,KAGJ8B,KAAKklK,4BACP,CACA,cAAAK,GACE,IAAID,EAAatlK,KAAKqiK,YACtB,IAAKiD,EAAY,CACf,MAAM/B,EAAavjK,KAAKK,QAAQkzJ,MAAMgQ,WACtC,IAAIhQ,EAAQvzJ,KAAKuzJ,MACbgQ,EAAahQ,EAAMt1J,SACrBs1J,EAAQsN,GAAOtN,EAAOgQ,IAExBvjK,KAAKqiK,YAAciD,EAAatlK,KAAK2mK,mBAAmBpT,EAAOA,EAAMt1J,OACvE,CACA,OAAOqnK,CACT,CACA,kBAAAqB,CAAmBpT,EAAOt1J,GACxB,MAAM,IAACqwE,EAAKg0F,kBAAmBnB,GAAUnhK,KACnC4mK,EAAS,GACTC,EAAU,GAChB,IAEI3oK,EAAG4sB,EAAGooH,EAAMp7G,EAAOgvI,EAAUC,EAAYxwH,EAAOm6F,EAAY90H,EAAOkX,EAAQk0I,EAF3EC,EAAkB,EAClBC,EAAmB,EAEvB,IAAKhpK,EAAI,EAAGA,EAAID,IAAUC,EAAG,CAO3B,GANA45B,EAAQy7H,EAAMr1J,GAAG45B,MACjBgvI,EAAW9mK,KAAKmnK,wBAAwBjpK,GACxCowE,EAAIkiE,KAAOu2B,EAAaD,EAAS3pJ,OACjCo5B,EAAQ4qH,EAAO4F,GAAc5F,EAAO4F,IAAe,CAACt/J,KAAM,CAAC,EAAGirI,GAAI,IAClEhC,EAAao2B,EAASp2B,WACtB90H,EAAQkX,EAAS,EACZikG,EAAcj/F,IAAWz5B,EAAQy5B,IAG/B,GAAIz5B,EAAQy5B,GACjB,IAAKhN,EAAI,EAAGooH,EAAOp7G,EAAM75B,OAAQ6sB,EAAIooH,IAAQpoH,EAC3Ck8I,EAAclvI,EAAMhN,GACfisG,EAAciwC,IAAiB3oK,EAAQ2oK,KAC1CprJ,EAAQ62H,GAAankE,EAAK/3B,EAAM9uC,KAAM8uC,EAAMm8F,GAAI92H,EAAOorJ,GACvDl0I,GAAU49G,QAPd90H,EAAQ62H,GAAankE,EAAK/3B,EAAM9uC,KAAM8uC,EAAMm8F,GAAI92H,EAAOkc,GACvDhF,EAAS49G,EAUXk2B,EAAO1kK,KAAK0Z,GACZirJ,EAAQ3kK,KAAK4wB,GACbm0I,EAAkBhiK,KAAKiW,IAAIU,EAAOqrJ,GAClCC,EAAmBjiK,KAAKiW,IAAI4X,EAAQo0I,EACtC,CACAl0B,GAAemuB,EAAQljK,GACvB,MAAMwnK,EAASmB,EAAO3rJ,QAAQgsJ,GACxBtB,EAAUkB,EAAQ5rJ,QAAQisJ,GAC1BE,EAAWC,IAAQ,CAAEzrJ,MAAOgrJ,EAAOS,IAAQ,EAAGv0I,OAAQ+zI,EAAQQ,IAAQ,IAC5E,MAAO,CACLrqD,MAAOoqD,EAAQ,GACfpqG,KAAMoqG,EAAQnpK,EAAS,GACvBwnK,OAAQ2B,EAAQ3B,GAChBE,QAASyB,EAAQzB,GACjBiB,SACAC,UAEJ,CACA,gBAAAzW,CAAiBrzJ,GACf,OAAOA,CACT,CACA,gBAAAuhI,CAAiBvhI,EAAOie,GACtB,OAAO2+C,GACT,CACA,gBAAA2tG,CAAiB9zB,GAAQ,CACzB,eAAAggB,CAAgBx4I,GACd,MAAMu4I,EAAQvzJ,KAAKuzJ,MACnB,OAAIv4I,EAAQ,GAAKA,EAAQu4I,EAAMt1J,OAAS,EAC/B,KAEF+B,KAAKs+H,iBAAiBi1B,EAAMv4I,GAAOje,MAC5C,CACA,kBAAAo6J,CAAmBoQ,GACbvnK,KAAKuiK,iBACPgF,EAAU,EAAIA,GAEhB,MAAM/zB,EAAQxzI,KAAK42J,YAAc2Q,EAAUvnK,KAAKqzJ,QAChD,OAAOt3B,GAAY/7H,KAAK4kK,eAAiBrxB,GAAYvzI,KAAKswI,MAAOkD,EAAO,GAAKA,EAC/E,CACA,kBAAAg0B,CAAmBh0B,GACjB,MAAM+zB,GAAW/zB,EAAQxzI,KAAK42J,aAAe52J,KAAKqzJ,QAClD,OAAOrzJ,KAAKuiK,eAAiB,EAAIgF,EAAUA,CAC7C,CACA,YAAAtR,GACE,OAAOj2J,KAAKs+H,iBAAiBt+H,KAAKynK,eACpC,CACA,YAAAA,GACE,MAAM,IAACtsJ,EAAG,IAAED,GAAOlb,KACnB,OAAOmb,EAAM,GAAKD,EAAM,EAAIA,EAC1BC,EAAM,GAAKD,EAAM,EAAIC,EACrB,CACJ,CACA,UAAA0qE,CAAW7qE,GACT,MAAMu4I,EAAQvzJ,KAAKuzJ,OAAS,GAC5B,GAAIv4I,GAAS,GAAKA,EAAQu4I,EAAMt1J,OAAQ,CACtC,MAAMmoJ,EAAOmN,EAAMv4I,GACnB,OAAOorI,EAAKuG,WACbvG,EAAKuG,SAAW4U,GAAkBvhK,KAAK6lF,aAAc7qE,EAAOorI,GAC7D,CACA,OAAOpmJ,KAAK2sJ,WACZ3sJ,KAAK2sJ,SAAW2U,GAAmBthK,KAAKswI,MAAMzqD,aAAc7lF,MAC9D,CACA,SAAAg/J,GACE,MAAM0I,EAAc1nK,KAAKK,QAAQkzJ,MAC3BoU,EAAMptC,EAAUv6H,KAAKiiK,eACrB7xG,EAAMnrD,KAAKyW,IAAIzW,KAAKmrD,IAAIu3G,IACxBx3G,EAAMlrD,KAAKyW,IAAIzW,KAAKkrD,IAAIw3G,IACxBrC,EAAatlK,KAAKulK,iBAClBzF,EAAU4H,EAAYtH,iBAAmB,EACzC59B,EAAI8iC,EAAaA,EAAWG,OAAO7pJ,MAAQkkJ,EAAU,EACrDn9J,EAAI2iK,EAAaA,EAAWK,QAAQ7yI,OAASgtI,EAAU,EAC7D,OAAO9/J,KAAKu3B,eACR50B,EAAIytD,EAAMoyE,EAAIryE,EAAMqyE,EAAIpyE,EAAMztD,EAAIwtD,EAClCxtD,EAAIwtD,EAAMqyE,EAAIpyE,EAAMztD,EAAIytD,EAAMoyE,EAAIryE,CACxC,CACA,UAAAk1G,GACE,MAAM9xJ,EAAUvT,KAAKK,QAAQkT,QAC7B,MAAgB,SAAZA,IACOA,EAEJvT,KAAK4qJ,0BAA0B3sJ,OAAS,CACjD,CACA,qBAAA2pK,CAAsBtX,GACpB,MAAMlhI,EAAOpvB,KAAKovB,KACZkhH,EAAQtwI,KAAKswI,MACbjwI,EAAUL,KAAKK,SACf,KAACs3J,EAAI,SAAEhtH,GAAYtqC,EACnB8rB,EAASwrI,EAAKxrI,OACdoL,EAAev3B,KAAKu3B,eACpBg8H,EAAQvzJ,KAAKuzJ,MACbsU,EAActU,EAAMt1J,QAAUkuB,EAAS,EAAI,GAC3CwnC,EAAKytG,GAAkBzJ,GACvB/vI,EAAQ,GACRkgJ,EAAanQ,EAAKnd,WAAWx6I,KAAK6lF,cAClCkiF,EAAYD,EAAWrI,WAAaqI,EAAW7yB,YAAc,EAC7D+yB,EAAgBD,EAAY,EAC5BE,EAAmB,SAASz0B,GAChC,OAAOD,GAAYjD,EAAOkD,EAAOu0B,EACnC,EACA,IAAIG,EAAahqK,EAAGgjK,EAAWiH,EAC3BC,EAAKC,EAAKC,EAAKC,EAAK7lH,EAAIC,EAAIC,EAAIC,EACpC,GAAiB,QAAblY,EACFu9H,EAAcD,EAAiBjoK,KAAKs1I,QACpC+yB,EAAMroK,KAAKs1I,OAAS3hF,EACpB40G,EAAML,EAAcF,EACpBrlH,EAAKslH,EAAiB3X,EAAU3jI,KAAOq7I,EACvCnlH,EAAKytG,EAAUhb,YACV,GAAiB,WAAb3qG,EACTu9H,EAAcD,EAAiBjoK,KAAK2sB,KACpCg2B,EAAK2tG,EAAU3jI,IACfk2B,EAAKolH,EAAiB3X,EAAUhb,QAAU0yB,EAC1CK,EAAMH,EAAcF,EACpBO,EAAMvoK,KAAK2sB,IAAMgnC,OACZ,GAAiB,SAAbhpB,EACTu9H,EAAcD,EAAiBjoK,KAAKqtG,OACpC+6D,EAAMpoK,KAAKqtG,MAAQ15C,EACnB20G,EAAMJ,EAAcF,EACpBtlH,EAAKulH,EAAiB3X,EAAU1jI,MAAQo7I,EACxCplH,EAAK0tG,EAAUjjD,WACV,GAAiB,UAAb1iE,EACTu9H,EAAcD,EAAiBjoK,KAAK4sB,MACpC81B,EAAK4tG,EAAU1jI,KACfg2B,EAAKqlH,EAAiB3X,EAAUjjD,OAAS26D,EACzCI,EAAMF,EAAcF,EACpBM,EAAMtoK,KAAK4sB,KAAO+mC,OACb,GAAa,MAATvkC,EAAc,CACvB,GAAiB,WAAbub,EACFu9H,EAAcD,GAAkB3X,EAAU3jI,IAAM2jI,EAAUhb,QAAU,EAAI,SACnE,GAAIjyH,EAASsnB,GAAW,CAC7B,MAAMi3H,EAAiBljK,OAAOP,KAAKwsC,GAAU,GACvC5tC,EAAQ4tC,EAASi3H,GACvBsG,EAAcD,EAAiBjoK,KAAKswI,MAAMkB,OAAOowB,GAAgBtjC,iBAAiBvhI,GACpF,CACA4lD,EAAK2tG,EAAU3jI,IACfk2B,EAAKytG,EAAUhb,OACf+yB,EAAMH,EAAcF,EACpBO,EAAMF,EAAM10G,CACd,MAAO,GAAa,MAATvkC,EAAc,CACvB,GAAiB,WAAbub,EACFu9H,EAAcD,GAAkB3X,EAAU1jI,KAAO0jI,EAAUjjD,OAAS,QAC/D,GAAIhqF,EAASsnB,GAAW,CAC7B,MAAMi3H,EAAiBljK,OAAOP,KAAKwsC,GAAU,GACvC5tC,EAAQ4tC,EAASi3H,GACvBsG,EAAcD,EAAiBjoK,KAAKswI,MAAMkB,OAAOowB,GAAgBtjC,iBAAiBvhI,GACpF,CACAqrK,EAAMF,EAAcF,EACpBM,EAAMF,EAAMz0G,EACZjR,EAAK4tG,EAAU1jI,KACfg2B,EAAK0tG,EAAUjjD,KACjB,CACA,MAAMm7D,EAAQtxC,EAAe72H,EAAQkzJ,MAAM8K,cAAewJ,GACpDzqK,EAAO6H,KAAKiW,IAAI,EAAGjW,KAAK60B,KAAK+tI,EAAcW,IACjD,IAAKtqK,EAAI,EAAGA,EAAI2pK,EAAa3pK,GAAKd,EAAM,CACtC,MAAMqrK,EAAc9Q,EAAKnd,WAAWx6I,KAAK6lF,WAAW3nF,IAC9Cu4I,EAAYgyB,EAAYhyB,UACxBiyB,EAAYD,EAAY35B,MACxBqW,EAAasjB,EAAYtjB,YAAc,GACvCC,EAAmBqjB,EAAYrjB,iBAC/Bwa,EAAY6I,EAAY7I,UACxBC,EAAY4I,EAAY5I,UACxB8I,EAAiBF,EAAYE,gBAAkB,GAC/CC,EAAuBH,EAAYG,qBACzC1H,EAAYH,GAAoB/gK,KAAM9B,EAAGiuB,QACvBxU,IAAdupJ,IAGJiH,EAAmB50B,GAAYjD,EAAO4wB,EAAWzqB,GAC7Cl/G,EACF6wI,EAAME,EAAM5lH,EAAKE,EAAKulH,EAEtBE,EAAME,EAAM5lH,EAAKE,EAAKslH,EAExBvgJ,EAAM1lB,KAAK,CACTkmK,MACAC,MACAC,MACAC,MACA7lH,KACAC,KACAC,KACAC,KACAjnC,MAAO66H,EACP3H,MAAO45B,EACPvjB,aACAC,mBACAwa,YACAC,YACA8I,iBACAC,yBAEJ,CAGA,OAFA5oK,KAAK4iK,aAAeiF,EACpB7nK,KAAK6iK,aAAeqF,EACbtgJ,CACT,CACA,kBAAAihJ,CAAmBvY,GACjB,MAAMlhI,EAAOpvB,KAAKovB,KACZ/uB,EAAUL,KAAKK,SACf,SAACsqC,EAAU4oH,MAAOmU,GAAernK,EACjCk3B,EAAev3B,KAAKu3B,eACpBg8H,EAAQvzJ,KAAKuzJ,OACb,MAAC91B,EAAK,WAAE8iC,EAAU,QAAET,EAAO,OAAEG,GAAUyH,EACvC/zG,EAAKytG,GAAkB/gK,EAAQs3J,MAC/BmR,EAAiBn1G,EAAKmsG,EACtBiJ,EAAkB9I,GAAUH,EAAUgJ,EACtCz0B,GAAY9Z,EAAUv6H,KAAKiiK,eAC3Br6I,EAAQ,GACd,IAAI1pB,EAAGy5H,EAAMyuB,EAAMtuH,EAAOiJ,EAAGC,EAAGg2G,EAAWxD,EAAOhD,EAAME,EAAYs4B,EAAWC,EAC3EhyB,EAAe,SACnB,GAAiB,QAAbtsG,EACF3J,EAAIhhC,KAAKs1I,OAASyzB,EAClB/xB,EAAYh3I,KAAKkpK,+BACZ,GAAiB,WAAbv+H,EACT3J,EAAIhhC,KAAK2sB,IAAMo8I,EACf/xB,EAAYh3I,KAAKkpK,+BACZ,GAAiB,SAAbv+H,EAAqB,CAC9B,MAAM6vB,EAAMx6D,KAAKmpK,wBAAwBx1G,GACzCqjF,EAAYx8E,EAAIw8E,UAChBj2G,EAAIy5B,EAAIz5B,CACV,MAAO,GAAiB,UAAb4J,EAAsB,CAC/B,MAAM6vB,EAAMx6D,KAAKmpK,wBAAwBx1G,GACzCqjF,EAAYx8E,EAAIw8E,UAChBj2G,EAAIy5B,EAAIz5B,CACV,MAAO,GAAa,MAAT3R,EAAc,CACvB,GAAiB,WAAbub,EACF3J,GAAMsvH,EAAU3jI,IAAM2jI,EAAUhb,QAAU,EAAKwzB,OAC1C,GAAIzlJ,EAASsnB,GAAW,CAC7B,MAAMi3H,EAAiBljK,OAAOP,KAAKwsC,GAAU,GACvC5tC,EAAQ4tC,EAASi3H,GACvB5gI,EAAIhhC,KAAKswI,MAAMkB,OAAOowB,GAAgBtjC,iBAAiBvhI,GAAS+rK,CAClE,CACA9xB,EAAYh3I,KAAKkpK,yBACnB,MAAO,GAAa,MAAT95I,EAAc,CACvB,GAAiB,WAAbub,EACF5J,GAAMuvH,EAAU1jI,KAAO0jI,EAAUjjD,OAAS,EAAKy7D,OAC1C,GAAIzlJ,EAASsnB,GAAW,CAC7B,MAAMi3H,EAAiBljK,OAAOP,KAAKwsC,GAAU,GACvC5tC,EAAQ4tC,EAASi3H,GACvB7gI,EAAI/gC,KAAKswI,MAAMkB,OAAOowB,GAAgBtjC,iBAAiBvhI,EACzD,CACAi6I,EAAYh3I,KAAKmpK,wBAAwBx1G,GAAIqjF,SAC/C,CACa,MAAT5nH,IACY,UAAVquG,EACFwZ,EAAe,MACI,QAAVxZ,IACTwZ,EAAe,WAGnB,MAAMquB,EAAatlK,KAAKulK,iBACxB,IAAKrnK,EAAI,EAAGy5H,EAAO47B,EAAMt1J,OAAQC,EAAIy5H,IAAQz5H,EAAG,CAC9CkoJ,EAAOmN,EAAMr1J,GACb45B,EAAQsuH,EAAKtuH,MACb,MAAM2wI,EAAcf,EAAYltB,WAAWx6I,KAAK6lF,WAAW3nF,IAC3Ds1I,EAAQxzI,KAAKwzJ,gBAAgBt1J,GAAKwpK,EAAYrH,YAC9C7vB,EAAOxwI,KAAKmnK,wBAAwBjpK,GACpCwyI,EAAaF,EAAKE,WAClBs4B,EAAY3qK,EAAQy5B,GAASA,EAAM75B,OAAS,EAC5C,MAAMmrK,EAAYJ,EAAY,EACxBl6B,EAAQ25B,EAAY35B,MACpBwH,EAAcmyB,EAAYtI,gBAC1B9pB,EAAcoyB,EAAYvI,gBAChC,IAoCIxuJ,EApCA23J,EAAgBryB,EAqCpB,GApCIz/G,GACFwJ,EAAIyyG,EACc,UAAdwD,IAEAqyB,EADEnrK,IAAMy5H,EAAO,EACE33H,KAAKK,QAAQk3H,QAAoB,OAAV,QACzB,IAANr5H,EACQ8B,KAAKK,QAAQk3H,QAAmB,QAAT,OAExB,UAKhB0xC,EAFa,QAAbt+H,EACiB,SAAf41H,GAAsC,IAAblsB,GACb20B,EAAYt4B,EAAaA,EAAa,EAC5B,WAAf6vB,GACK+E,EAAWK,QAAQ7yI,OAAS,EAAIs2I,EAAY14B,EAAaA,GAEzD40B,EAAWK,QAAQ7yI,OAAS49G,EAAa,EAGtC,SAAf6vB,GAAsC,IAAblsB,EACd3D,EAAa,EACF,WAAf6vB,EACI+E,EAAWK,QAAQ7yI,OAAS,EAAIs2I,EAAY14B,EAE5C40B,EAAWK,QAAQ7yI,OAASk2I,EAAYt4B,EAGrDuvB,IACFgJ,IAAe,KAGjBjoI,EAAIwyG,EACJy1B,GAAc,EAAID,GAAat4B,EAAa,GAG1C+3B,EAAYjI,kBAAmB,CACjC,MAAM8I,EAAe9wB,GAAUiwB,EAAY/H,iBACrC5tI,EAASwyI,EAAWuB,QAAQ3oK,GAC5B0d,EAAQ0pJ,EAAWsB,OAAO1oK,GAChC,IAAIyuB,EAAMqU,EAAIioI,EAAaK,EAAa38I,IACpCC,EAAOmU,EAAIuoI,EAAa18I,KAC5B,OAAQqqH,GACR,IAAK,SACHtqH,GAAOmG,EAAS,EAChB,MACF,IAAK,SACHnG,GAAOmG,EACP,MAEF,OAAQkkH,GACR,IAAK,SACHpqH,GAAQhR,EAAQ,EAChB,MACF,IAAK,QACHgR,GAAQhR,EACR,MAEFlK,EAAW,CACTkb,OACAD,MACA/Q,MAAOA,EAAQ0tJ,EAAa1tJ,MAC5BkX,OAAQA,EAASw2I,EAAax2I,OAC9Bg8G,MAAO25B,EAAYhI,cAEvB,CACA74I,EAAM1lB,KAAK,CACTmyI,WACAv8G,QACA04G,OACA1B,QACAwH,cACAD,cACA4yB,aACAjyB,UAAWqyB,EACXpyB,eACAH,YAAa,CAAC/1G,EAAGC,GACjBtvB,YAEJ,CACA,OAAOkW,CACT,CACA,uBAAAshJ,GACE,MAAM,SAACv+H,EAAQ,MAAE4oH,GAASvzJ,KAAKK,QACzBg0I,GAAY9Z,EAAUv6H,KAAKiiK,eACjC,GAAI5tB,EACF,MAAoB,QAAb1pG,EAAqB,OAAS,QAEvC,IAAI8yF,EAAQ,SAQZ,MAPoB,UAAhB81B,EAAM91B,MACRA,EAAQ,OACiB,QAAhB81B,EAAM91B,MACfA,EAAQ,QACiB,UAAhB81B,EAAM91B,QACfA,EAAQ,SAEHA,CACT,CACA,uBAAA0rC,CAAwBx1G,GACtB,MAAM,SAAChpB,EAAU4oH,OAAO,WAACgN,EAAU,OAAEN,EAAM,QAAEH,IAAY9/J,KAAKK,QACxDilK,EAAatlK,KAAKulK,iBAClBuD,EAAiBn1G,EAAKmsG,EACtB2F,EAASH,EAAWG,OAAO7pJ,MACjC,IAAIo7H,EACAj2G,EAoDJ,MAnDiB,SAAb4J,EACEs1H,GACFl/H,EAAI/gC,KAAKqtG,MAAQyyD,EACE,SAAfS,EACFvpB,EAAY,OACY,WAAfupB,GACTvpB,EAAY,SACZj2G,GAAM0kI,EAAS,IAEfzuB,EAAY,QACZj2G,GAAK0kI,KAGP1kI,EAAI/gC,KAAKqtG,MAAQy7D,EACE,SAAfvI,EACFvpB,EAAY,QACY,WAAfupB,GACTvpB,EAAY,SACZj2G,GAAM0kI,EAAS,IAEfzuB,EAAY,OACZj2G,EAAI/gC,KAAK4sB,OAGS,UAAb+d,EACLs1H,GACFl/H,EAAI/gC,KAAK4sB,KAAOkzI,EACG,SAAfS,EACFvpB,EAAY,QACY,WAAfupB,GACTvpB,EAAY,SACZj2G,GAAM0kI,EAAS,IAEfzuB,EAAY,OACZj2G,GAAK0kI,KAGP1kI,EAAI/gC,KAAK4sB,KAAOk8I,EACG,SAAfvI,EACFvpB,EAAY,OACY,WAAfupB,GACTvpB,EAAY,SACZj2G,GAAK0kI,EAAS,IAEdzuB,EAAY,QACZj2G,EAAI/gC,KAAKqtG,QAIb2pC,EAAY,QAEP,CAACA,YAAWj2G,IACrB,CACA,iBAAAwoI,GACE,GAAIvpK,KAAKK,QAAQkzJ,MAAM0M,OACrB,OAEF,MAAM3vB,EAAQtwI,KAAKswI,MACb3lG,EAAW3qC,KAAKK,QAAQsqC,SAC9B,MAAiB,SAAbA,GAAoC,UAAbA,EAClB,CAAChe,IAAK,EAAGC,KAAM5sB,KAAK4sB,KAAM0oH,OAAQhF,EAAMx9G,OAAQu6E,MAAOrtG,KAAKqtG,OAClD,QAAb1iE,GAAmC,WAAbA,EACnB,CAAChe,IAAK3sB,KAAK2sB,IAAKC,KAAM,EAAG0oH,OAAQt1I,KAAKs1I,OAAQjoC,MAAOijC,EAAM10H,YADlE,CAGJ,CACA,cAAA4tJ,GACE,MAAM,IAACl7F,EAAKjuE,SAAS,gBAAC6vI,GAAgB,KAAEtjH,EAAI,IAAED,EAAG,MAAE/Q,EAAK,OAAEkX,GAAU9yB,KAChEkwI,IACF5hE,EAAI2kE,OACJ3kE,EAAIyoE,UAAY7G,EAChB5hE,EAAIm7F,SAAS78I,EAAMD,EAAK/Q,EAAOkX,GAC/Bw7C,EAAI+kE,UAER,CACA,oBAAAikB,CAAqBv6J,GACnB,MAAM46J,EAAO33J,KAAKK,QAAQs3J,KAC1B,IAAK33J,KAAKqlK,eAAiB1N,EAAKpkJ,QAC9B,OAAO,EAET,MAAMggJ,EAAQvzJ,KAAKuzJ,MACbv4I,EAAQu4I,EAAMz3F,WAAUl4D,GAAKA,EAAE7G,QAAUA,IAC/C,GAAIie,GAAS,EAAG,CACd,MAAMkX,EAAOylI,EAAKnd,WAAWx6I,KAAK6lF,WAAW7qE,IAC7C,OAAOkX,EAAKukH,SACd,CACA,OAAO,CACT,CACA,QAAAizB,CAASpZ,GACP,MAAMqH,EAAO33J,KAAKK,QAAQs3J,KACpBrpF,EAAMtuE,KAAKsuE,IACX1mD,EAAQ5nB,KAAKmiK,iBAAmBniK,KAAKmiK,eAAiBniK,KAAK4nK,sBAAsBtX,IACvF,IAAIpyJ,EAAGy5H,EACP,MAAMgyC,EAAW,CAACxmC,EAAIC,EAAI9vH,KACnBA,EAAMsI,OAAUtI,EAAMw7H,QAG3BxgE,EAAI2kE,OACJ3kE,EAAImoE,UAAYnjI,EAAMsI,MACtB0yD,EAAIkoE,YAAcljI,EAAMw7H,MACxBxgE,EAAIs7F,YAAYt2J,EAAM6xI,YAAc,IACpC72E,EAAIu7F,eAAiBv2J,EAAM8xI,iBAC3B92E,EAAImmE,YACJnmE,EAAIumE,OAAO1R,EAAGpiG,EAAGoiG,EAAGniG,GACpBstC,EAAIwmE,OAAO1R,EAAGriG,EAAGqiG,EAAGpiG,GACpBstC,EAAI4mE,SACJ5mE,EAAI+kE,UAAS,EAEf,GAAIskB,EAAKpkJ,QACP,IAAKrV,EAAI,EAAGy5H,EAAO/vG,EAAM3pB,OAAQC,EAAIy5H,IAAQz5H,EAAG,CAC9C,MAAMuyC,EAAO7oB,EAAM1pB,GACfy5J,EAAK+H,iBACPiK,EACE,CAAC5oI,EAAG0P,EAAKiS,GAAI1hB,EAAGyP,EAAKkS,IACrB,CAAC5hB,EAAG0P,EAAKmS,GAAI5hB,EAAGyP,EAAKoS,IACrBpS,GAGAknH,EAAKgI,WACPgK,EACE,CAAC5oI,EAAG0P,EAAK23H,IAAKpnI,EAAGyP,EAAK43H,KACtB,CAACtnI,EAAG0P,EAAK63H,IAAKtnI,EAAGyP,EAAK83H,KACtB,CACEz5B,MAAOr+F,EAAKovH,UACZjkJ,MAAO60B,EAAKmvH,UACZza,WAAY10G,EAAKk4H,eACjBvjB,iBAAkB30G,EAAKm4H,sBAI/B,CAEJ,CACA,UAAAnJ,GACE,MAAM,MAACnvB,EAAK,IAAEhiE,EAAKjuE,SAAS,KAACs3J,IAAS33J,KAChC8nK,EAAanQ,EAAKnd,WAAWx6I,KAAK6lF,cAClCkiF,EAAYpQ,EAAK8H,WAAaqI,EAAW7yB,YAAc,EAC7D,IAAK8yB,EACH,OAEF,MAAM+B,EAAgBnS,EAAKnd,WAAWx6I,KAAK6lF,WAAW,IAAI4wD,UACpDyxB,EAAcloK,KAAK6iK,aACzB,IAAIngH,EAAIE,EAAID,EAAIE,EACZ7iD,KAAKu3B,gBACPmrB,EAAK6wF,GAAYjD,EAAOtwI,KAAK4sB,KAAMm7I,GAAaA,EAAY,EAC5DnlH,EAAK2wF,GAAYjD,EAAOtwI,KAAKqtG,MAAOy8D,GAAiBA,EAAgB,EACrEnnH,EAAKE,EAAKqlH,IAEVvlH,EAAK4wF,GAAYjD,EAAOtwI,KAAK2sB,IAAKo7I,GAAaA,EAAY,EAC3DllH,EAAK0wF,GAAYjD,EAAOtwI,KAAKs1I,OAAQw0B,GAAiBA,EAAgB,EACtEpnH,EAAKE,EAAKslH,GAEZ55F,EAAI2kE,OACJ3kE,EAAImoE,UAAYqxB,EAAW7yB,YAC3B3mE,EAAIkoE,YAAcsxB,EAAW33B,YAC7B7hE,EAAImmE,YACJnmE,EAAIumE,OAAOnyF,EAAIC,GACf2rB,EAAIwmE,OAAOlyF,EAAIC,GACfyrB,EAAI4mE,SACJ5mE,EAAI+kE,SACN,CACA,UAAA02B,CAAWzZ,GACT,MAAMoX,EAAc1nK,KAAKK,QAAQkzJ,MACjC,IAAKmU,EAAYn0J,QACf,OAEF,MAAM+6D,EAAMtuE,KAAKsuE,IACX8mE,EAAOp1I,KAAKupK,oBACdn0B,GACFG,GAASjnE,EAAK8mE,GAEhB,MAAMxtH,EAAQ5nB,KAAKoiK,cAAgBpiK,KAAKoiK,YAAcpiK,KAAK6oK,mBAAmBvY,IAC9E,IAAIpyJ,EAAGy5H,EACP,IAAKz5H,EAAI,EAAGy5H,EAAO/vG,EAAM3pB,OAAQC,EAAIy5H,IAAQz5H,EAAG,CAC9C,MAAMuyC,EAAO7oB,EAAM1pB,GACb4oK,EAAWr2H,EAAK+/F,KAChB14G,EAAQ2Y,EAAK3Y,MACf2Y,EAAK/+B,WACP48D,EAAIyoE,UAAYtmG,EAAK/+B,SAASo9H,MAC9BxgE,EAAIm7F,SAASh5H,EAAK/+B,SAASkb,KAAM6jB,EAAK/+B,SAASib,IAAK8jB,EAAK/+B,SAASkK,MAAO60B,EAAK/+B,SAASohB,SAEzF,IAAIkO,EAAIyP,EAAKw4H,WACb9yB,GAAW7nE,EAAKx2C,EAAO,EAAGkJ,EAAG8lI,EAAUr2H,EACzC,CACI2kG,GACFK,GAAWnnE,EAEf,CACA,SAAA07F,GACE,MAAM,IAAC17F,EAAKjuE,SAAS,SAACsqC,EAAQ,MAAE+tH,EAAK,QAAEnhC,IAAYv3H,KACnD,IAAK04J,EAAMnlJ,QACT,OAEF,MAAMi9H,EAAOiI,GAAOigB,EAAMloB,MACpBsvB,EAAUtnB,GAAUkgB,EAAMoH,SAC1BriC,EAAQi7B,EAAMj7B,MACpB,IAAItxG,EAASqkH,EAAKE,WAAa,EACd,WAAb/lG,GAAsC,WAAbA,GAAyBtnB,EAASsnB,IAC7Dxe,GAAU2zI,EAAQxqB,OACdj3I,EAAQq6J,EAAM1rI,QAChBb,GAAUqkH,EAAKE,YAAcgoB,EAAM1rI,KAAK/uB,OAAS,KAGnDkuB,GAAU2zI,EAAQnzI,IAEpB,MAAM,OAAC+0I,EAAM,OAAEC,EAAM,SAAEhrB,EAAQ,SAAEtC,GAAYotB,GAAUzhK,KAAMmsB,EAAQwe,EAAU8yF,GAC/E0Y,GAAW7nE,EAAKoqF,EAAM1rI,KAAM,EAAG,EAAGwjH,EAAM,CACtC1B,MAAO4pB,EAAM5pB,MACb6H,WACAtC,WACA2C,UAAWwqB,GAAW/jC,EAAO9yF,EAAU4sF,GACvC0f,aAAc,SACdH,YAAa,CAAC4qB,EAAQC,IAE1B,CACA,IAAAzb,CAAKoK,GACEtwJ,KAAKqlK,eAGVrlK,KAAKwpK,iBACLxpK,KAAK0pK,SAASpZ,GACdtwJ,KAAKy/J,aACLz/J,KAAKgqK,YACLhqK,KAAK+pK,WAAWzZ,GAClB,CACA,OAAA2Z,GACE,MAAM/3I,EAAOlyB,KAAKK,QACZuvD,EAAK19B,EAAKqhI,OAASrhI,EAAKqhI,MAAMtyH,GAAK,EACnCipI,EAAKhzC,EAAehlG,EAAKylI,MAAQzlI,EAAKylI,KAAK12H,GAAI,GACrD,OAAKjhC,KAAKqlK,cAAgBrlK,KAAKkmJ,OAAS2b,GAAMljK,UAAUunJ,KAQjD,CAAC,CACNjlH,EAAGipI,EACHhkB,KAAOoK,IACLtwJ,KAAKwpK,iBACLxpK,KAAK0pK,SAASpZ,GACdtwJ,KAAKgqK,WAAW,GAEjB,CACD/oI,EAAGipI,EAAK,EACRhkB,KAAM,KACJlmJ,KAAKy/J,YAAY,GAElB,CACDx+H,EAAG2uB,EACHs2F,KAAOoK,IACLtwJ,KAAK+pK,WAAWzZ,EAAU,IAtBrB,CAAC,CACNrvH,EAAG2uB,EACHs2F,KAAOoK,IACLtwJ,KAAKkmJ,KAAKoK,EAAU,GAsB5B,CACA,uBAAA1F,CAAwB5hJ,GACtB,MAAMi6J,EAAQjjK,KAAKswI,MAAM65B,+BACnBC,EAASpqK,KAAKovB,KAAO,SACrB5xB,EAAS,GACf,IAAIU,EAAGy5H,EACP,IAAKz5H,EAAI,EAAGy5H,EAAOsrC,EAAMhlK,OAAQC,EAAIy5H,IAAQz5H,EAAG,CAC9C,MAAM2O,EAAOo2J,EAAM/kK,GACf2O,EAAKu9J,KAAYpqK,KAAKT,IAAQyJ,GAAQ6D,EAAK7D,OAASA,GACtDxL,EAAO0E,KAAK2K,EAEhB,CACA,OAAOrP,CACT,CACA,uBAAA2pK,CAAwBnsJ,GACtB,MAAMkX,EAAOlyB,KAAKK,QAAQkzJ,MAAM/Y,WAAWx6I,KAAK6lF,WAAW7qE,IAC3D,OAAOy9H,GAAOvmH,EAAKs+G,KACrB,CACA,UAAA65B,GACE,MAAMC,EAAWtqK,KAAKmnK,wBAAwB,GAAGz2B,WACjD,OAAQ1wI,KAAKu3B,eAAiBv3B,KAAK4b,MAAQ5b,KAAK8yB,QAAUw3I,CAC5D,EAGF,MAAMC,GACJ,WAAAvsK,CAAYgL,EAAMm0D,EAAOy0E,GACvB5xI,KAAKgJ,KAAOA,EACZhJ,KAAKm9D,MAAQA,EACbn9D,KAAK4xI,SAAWA,EAChB5xI,KAAK4nB,MAAQlpB,OAAOqnB,OAAO,KAC7B,CACA,SAAAykJ,CAAUxhK,GACR,OAAOtK,OAAOC,UAAU8rK,cAAc3rK,KAAKkB,KAAKgJ,KAAKrK,UAAWqK,EAAKrK,UACvE,CACA,QAAAoqF,CAASt4C,GACP,MAAMhpB,EAAQ/oB,OAAO0nB,eAAeqqB,GACpC,IAAIi6H,EACAC,GAAkBljJ,KACpBijJ,EAAc1qK,KAAK+oF,SAASthE,IAE9B,MAAMG,EAAQ5nB,KAAK4nB,MACbroB,EAAKkxC,EAAKlxC,GACV49D,EAAQn9D,KAAKm9D,MAAQ,IAAM59D,EACjC,IAAKA,EACH,MAAM,IAAIe,MAAM,2BAA6BmwC,GAE/C,OAAIlxC,KAAMqoB,IAGVA,EAAMroB,GAAMkxC,EACZm6H,GAAiBn6H,EAAM0sB,EAAOutG,GAC1B1qK,KAAK4xI,UACP3+F,GAAS2+F,SAASnhG,EAAKlxC,GAAIkxC,EAAKld,YALzB4pC,CAQX,CACA,GAAAh2D,CAAI5H,GACF,OAAOS,KAAK4nB,MAAMroB,EACpB,CACA,UAAAsrK,CAAWp6H,GACT,MAAM7oB,EAAQ5nB,KAAK4nB,MACbroB,EAAKkxC,EAAKlxC,GACV49D,EAAQn9D,KAAKm9D,MACf59D,KAAMqoB,UACDA,EAAMroB,GAEX49D,GAAS59D,KAAM0zC,GAASkqB,YACnBlqB,GAASkqB,GAAO59D,GACnBS,KAAK4xI,iBACAr+G,GAAUh0B,GAGvB,EAEF,SAASqrK,GAAiBn6H,EAAM0sB,EAAOutG,GACrC,MAAMI,EAAe1yC,EAAM15H,OAAOqnB,OAAO,MAAO,CAC9C2kJ,EAAcz3H,GAAS9rC,IAAIujK,GAAe,CAAC,EAC3Cz3H,GAAS9rC,IAAIg2D,GACb1sB,EAAKwC,WAEPA,GAASvvC,IAAIy5D,EAAO2tG,GAChBr6H,EAAK4sH,eACP0N,GAAc5tG,EAAO1sB,EAAK4sH,eAExB5sH,EAAKo/F,aACP58F,GAAS0+F,SAASx0E,EAAO1sB,EAAKo/F,YAElC,CACA,SAASk7B,GAAc5tG,EAAO6tG,GAC5BtsK,OAAOP,KAAK6sK,GAAQvoK,SAAQ+R,IAC1B,MAAMy2J,EAAgBz2J,EAASjG,MAAM,KAC/B28J,EAAaD,EAAc7/H,MAC3B+/H,EAAc,CAAChuG,GAAOvuD,OAAOq8J,GAAejqK,KAAK,KACjD63H,EAAQmyC,EAAOx2J,GAAUjG,MAAM,KAC/BwjI,EAAalZ,EAAMztF,MACnB0mG,EAAcjZ,EAAM73H,KAAK,KAC/BiyC,GAAS4+F,MAAMs5B,EAAaD,EAAYp5B,EAAaC,EAAW,GAEpE,CACA,SAAS44B,GAAkBljJ,GACzB,MAAO,OAAQA,GAAS,aAAcA,CACxC,CAEA,MAAM2jJ,GACJ,WAAAptK,GACEgC,KAAKqrK,YAAc,IAAId,GAAcve,GAAmB,YAAY,GACpEhsJ,KAAKkX,SAAW,IAAIqzJ,GAAc17J,GAAS,YAC3C7O,KAAKsxI,QAAU,IAAIi5B,GAAc7rK,OAAQ,WACzCsB,KAAKwxI,OAAS,IAAI+4B,GAAc1I,GAAO,UACvC7hK,KAAKsrK,iBAAmB,CAACtrK,KAAKqrK,YAAarrK,KAAKwxI,OAAQxxI,KAAKkX,SAC/D,CACA,GAAA7S,IAAOwH,GACL7L,KAAKurK,MAAM,WAAY1/J,EACzB,CACA,MAAAxK,IAAUwK,GACR7L,KAAKurK,MAAM,aAAc1/J,EAC3B,CACA,cAAA2/J,IAAkB3/J,GAChB7L,KAAKurK,MAAM,WAAY1/J,EAAM7L,KAAKqrK,YACpC,CACA,WAAAte,IAAelhJ,GACb7L,KAAKurK,MAAM,WAAY1/J,EAAM7L,KAAKkX,SACpC,CACA,UAAAu0J,IAAc5/J,GACZ7L,KAAKurK,MAAM,WAAY1/J,EAAM7L,KAAKsxI,QACpC,CACA,SAAAo6B,IAAa7/J,GACX7L,KAAKurK,MAAM,WAAY1/J,EAAM7L,KAAKwxI,OACpC,CACA,aAAAm6B,CAAcpsK,GACZ,OAAOS,KAAKynE,KAAKloE,EAAIS,KAAKqrK,YAAa,aACzC,CACA,UAAAnlK,CAAW3G,GACT,OAAOS,KAAKynE,KAAKloE,EAAIS,KAAKkX,SAAU,UACtC,CACA,SAAA00J,CAAUrsK,GACR,OAAOS,KAAKynE,KAAKloE,EAAIS,KAAKsxI,QAAS,SACrC,CACA,QAAAu6B,CAAStsK,GACP,OAAOS,KAAKynE,KAAKloE,EAAIS,KAAKwxI,OAAQ,QACpC,CACA,iBAAAs6B,IAAqBjgK,GACnB7L,KAAKurK,MAAM,aAAc1/J,EAAM7L,KAAKqrK,YACtC,CACA,cAAAU,IAAkBlgK,GAChB7L,KAAKurK,MAAM,aAAc1/J,EAAM7L,KAAKkX,SACtC,CACA,aAAA80J,IAAiBngK,GACf7L,KAAKurK,MAAM,aAAc1/J,EAAM7L,KAAKsxI,QACtC,CACA,YAAA26B,IAAgBpgK,GACd7L,KAAKurK,MAAM,aAAc1/J,EAAM7L,KAAKwxI,OACtC,CACA,KAAA+5B,CAAM31J,EAAQ/J,EAAMqgK,GAClB,IAAIrgK,GAAMpJ,SAAQ82D,IAChB,MAAM4yG,EAAMD,GAAiBlsK,KAAKosK,oBAAoB7yG,GAClD2yG,GAAiBC,EAAI3B,UAAUjxG,IAAS4yG,IAAQnsK,KAAKsxI,SAAW/3E,EAAIh6D,GACtES,KAAKqsK,MAAMz2J,EAAQu2J,EAAK5yG,GAExB1kD,EAAK0kD,GAAK9oB,IACR,MAAM67H,EAAUJ,GAAiBlsK,KAAKosK,oBAAoB37H,GAC1DzwC,KAAKqsK,MAAMz2J,EAAQ02J,EAAS77H,EAAK,GAErC,GAEJ,CACA,KAAA47H,CAAMz2J,EAAQ08D,EAAU38D,GACtB,MAAM42J,EAAczzC,EAAYljH,GAChCtT,EAASqT,EAAU,SAAW42J,GAAc,GAAI52J,GAChD28D,EAAS18D,GAAQD,GACjBrT,EAASqT,EAAU,QAAU42J,GAAc,GAAI52J,EACjD,CACA,mBAAAy2J,CAAoBpjK,GAClB,IAAK,IAAI9K,EAAI,EAAGA,EAAI8B,KAAKsrK,iBAAiBrtK,OAAQC,IAAK,CACrD,MAAMiuK,EAAMnsK,KAAKsrK,iBAAiBptK,GAClC,GAAIiuK,EAAI3B,UAAUxhK,GAChB,OAAOmjK,CAEX,CACA,OAAOnsK,KAAKsxI,OACd,CACA,IAAA7pE,CAAKloE,EAAI2sK,EAAeljK,GACtB,MAAMynC,EAAOy7H,EAAc/kK,IAAI5H,GAC/B,QAAaoY,IAAT84B,EACF,MAAM,IAAInwC,MAAM,IAAMf,EAAK,yBAA2ByJ,EAAO,KAE/D,OAAOynC,CACT,EAEF,IAAI6hC,GAAW,IAAI84F,GAEnB,MAAMoB,WAA0BxgB,GAC9B,MAAAvmH,CAAO4vC,GACL,MAAMxoE,EAAO7M,KAAK8qJ,aACXrjJ,KAAMwoC,EAAS,IAAMpjC,EACtBixH,EAAqB99H,KAAKswI,MAAM+gB,oBACtC,IAAI,MAACvzI,EAAK,MAAEinG,GAAS8Y,GAAiChxH,EAAMojC,EAAQ6tF,GAOpE,GANA99H,KAAKusJ,WAAazuI,EAClB9d,KAAKwsJ,WAAaznC,EACdwZ,GAAoB1xH,KACtBiR,EAAQ,EACRinG,EAAQ90E,EAAOhyC,QAEb+B,KAAKK,QAAQoxI,SAAU,CACzB,MAAO1jI,QAASyjG,EAAI,SAAE0pD,GAAYruJ,EAClC2kG,EAAK+yC,OAASvkJ,KAAKswI,MACnB9+B,EAAKkzC,cAAgB1kJ,KAAKgb,MAC1Bw2F,EAAK2pD,aAAeD,EAASC,WAC7B3pD,EAAKvhE,OAASA,EACd,MAAM5vC,EAAUL,KAAKuwJ,6BAA6Bl7E,GAClDh1E,EAAQ2iJ,QAAUhjJ,KAAKK,QAAQ2iJ,QAC/BhjJ,KAAK0xJ,cAAclgD,OAAM75F,EAAW,CAClCyjJ,UAAWt9B,EACXz9H,WACCg1E,EACL,CACAr1E,KAAKsyJ,eAAeriH,EAAQnyB,EAAOinG,EAAO1vC,EAC5C,CACA,WAAA03E,GACE,MAAM,SAACtb,GAAYzxI,KAAKK,SACnBL,KAAKouJ,oBAAsB3c,IAC9BzxI,KAAKouJ,mBAAqB97E,GAASpsE,WAAW,SAEhDD,MAAM8mJ,aACR,CACA,cAAAuF,CAAeriH,EAAQnyB,EAAOinG,EAAO1vC,GACnC,MAAMxwE,EAAiB,UAATwwE,GACR,OAAC4oD,EAAM,OAAEysB,EAAM,SAAEqB,EAAQ,SAAEmP,GAAYl7J,KAAK8qJ,YAC5CyG,EAAYvxJ,KAAKwwJ,0BAA0B1yI,EAAOu3D,GAClD+7E,EAAgBpxJ,KAAKkxJ,iBAAiBK,GACtCJ,EAAiBnxJ,KAAKmxJ,eAAe97E,EAAM+7E,GAC3CpG,EAAQ/sB,EAAO7uG,KACf67H,EAAQP,EAAOt7H,MACf,SAACmvH,EAAQ,QAAEyE,GAAWhjJ,KAAKK,QAC3Bg7J,EAAenhC,EAASqkB,GAAYA,EAAWrxI,OAAOksH,kBACtDkiC,EAAet7J,KAAKswI,MAAM+gB,qBAAuBxsJ,GAAkB,SAATwwE,EAChE,IAAIkmF,EAAaz9I,EAAQ,GAAK9d,KAAKwvJ,UAAU1xI,EAAQ,GACrD,IAAK,IAAI5f,EAAI4f,EAAO5f,EAAI4f,EAAQinG,IAAS7mH,EAAG,CAC1C,MAAMgyC,EAAQD,EAAO/xC,GACf89I,EAASh8I,KAAKwvJ,UAAUtxJ,GACxBs0G,EAAa8oD,EAAeprH,EAAQ,CAAC,EACrCsrH,EAAWzkC,EAAcilB,EAAOiP,IAChCtN,EAASnrC,EAAWw4C,GAAS/sB,EAAOK,iBAAiB0d,EAAOgP,GAAQ9sJ,GACpE0/I,EAASprC,EAAWy4C,GAASpmJ,GAAS22J,EAAW9Q,EAAOuL,eAAiBvL,EAAOpsB,iBAAiBytB,EAAW/rJ,KAAKwpJ,WAAWkB,EAAQ1O,EAAQ+P,GAAY/P,EAAOiP,GAAQ/sJ,GAC7Ks0G,EAAWvyE,KAAOvI,MAAMimH,IAAWjmH,MAAMkmH,IAAW4d,EACpDhpD,EAAWh3D,KAAOt9C,EAAI,GAAM+G,KAAKyW,IAAIsgI,EAAOgP,GAASuQ,EAAWvQ,IAAWqQ,EACvErY,IACFxwC,EAAWwpC,OAASA,EACpBxpC,EAAW92D,IAAMw/G,EAASzzJ,KAAKvJ,IAE7BizJ,IACF3+C,EAAWnyG,QAAU+wJ,GAAiBpxJ,KAAKwwJ,0BAA0BtyJ,EAAGgyC,EAAM2sB,OAAS,SAAWwY,IAE/FimF,GACHt7J,KAAK0xJ,cAAcxhH,EAAOhyC,EAAGs0G,EAAYn9B,GAE3CkmF,EAAavf,CACf,CACAh8I,KAAKyxJ,oBAAoBL,EAAe/7E,EAAMk8E,EAChD,CACA,cAAArB,GACE,MAAMrjJ,EAAO7M,KAAK8qJ,YACZrjJ,EAAOoF,EAAKpF,MAAQ,GAC1B,IAAKzH,KAAKK,QAAQoxI,SAAU,CAC1B,IAAIv2H,EAAM,EACV,IAAK,IAAIhd,EAAIuJ,EAAKxJ,OAAS,EAAGC,GAAK,IAAKA,EACtCgd,EAAMjW,KAAKiW,IAAIA,EAAKzT,EAAKvJ,GAAG0J,KAAK5H,KAAKwwJ,0BAA0BtyJ,IAAM,GAExE,OAAOgd,EAAM,GAAKA,CACpB,CACA,MAAMnN,EAAUlB,EAAKkB,QACf0tJ,EAAS1tJ,EAAQ1N,SAAW0N,EAAQ1N,QAAQ40I,aAAe,EACjE,IAAKxtI,EAAKxJ,OACR,OAAOw9J,EAET,MAAMpf,EAAa50I,EAAK,GAAGG,KAAK5H,KAAKwwJ,0BAA0B,IACzDkL,EAAYj0J,EAAKA,EAAKxJ,OAAS,GAAG2J,KAAK5H,KAAKwwJ,0BAA0B/oJ,EAAKxJ,OAAS,IAC1F,OAAOgH,KAAKiW,IAAIugJ,EAAQpf,EAAYqf,GAAa,CACnD,EAEF8Q,GAAkBjtK,GAAK,UACvBitK,GAAkBv5H,SAAW,CAC3Bm7G,oBAAoB,EACpBsC,gBAAiB,QACjBjf,UAAU,EACV34D,MAAM,GAER0zF,GAAkBj5I,UAAY,CAC5By9G,YAAa,CACX37D,KAAM,SAERi8D,QAAS,CACPmnB,QAAS,CACPx4J,UAAW,CACT,KAAAy4J,GACE,MAAO,EACT,EACA,KAAA5gI,CAAM2Y,GACJ,MAAO,IAAMA,EAAK3Y,MAAQ,KAAO2Y,EAAKuqH,eAAiB,GACzD,KAINxpB,OAAQ,CACNzwG,EAAG,CACD/3B,KAAM,UAERg4B,EAAG,CACDh4B,KAAM,YAKZ,IAAIqiK,GAA2B3sK,OAAOqyJ,OAAO,CAC7C/qI,UAAW,KACX6vI,cAAeA,GACfgC,iBAAkBA,GAClBc,mBAAoBA,GACpBsC,eAAgBA,GAChBW,oBAAqBA,GACrBgB,cAAeA,GACfC,gBAAiBA,GACjB2P,kBAAmBA,KAGnB,SAAS,KACP,MAAM,IAAIlsK,MAAM,kFAClB,CACA,MAAMmsK,GACJ,WAAAzuK,CAAYqC,GACVL,KAAKK,QAAUA,GAAW,CAAC,CAC7B,CACA,IAAA20B,CAAK03I,GAAe,CACpB,OAAAC,GACE,OAAO,IACT,CACA,KAAAx/J,CAAMpQ,EAAO6kJ,GACX,OAAO,IACT,CACA,MAAAA,CAAOgrB,EAAWhrB,GAChB,OAAO,IACT,CACA,GAAAv9I,CAAIuoK,EAAWhlH,EAAQilH,GACrB,OAAO,IACT,CACA,IAAA/nI,CAAKhnC,EAAGC,EAAG8uK,GACT,OAAO,IACT,CACA,OAAAC,CAAQF,EAAWC,EAAME,GACvB,OAAO,IACT,CACA,KAAAC,CAAMJ,EAAWC,GACf,OAAO,IACT,EAEFJ,GAAY76B,SAAW,SAASq7B,GAC9BvuK,OAAO02B,OAAOq3I,GAAY9tK,UAAWsuK,EACvC,EACA,IAAIC,GAAW,CACbC,MAAOV,IAGT,SAAS5jH,GAAaukH,EAASh+I,EAAMryB,EAAOk0I,GAC1C,MAAM,WAAChoF,EAAU,KAAExhD,EAAI,QAAEu2H,GAAWovC,EAC9BnvC,EAASh1E,EAAW6hG,YAAY7sB,OACtC,GAAIA,GAAU7uG,IAAS6uG,EAAO7uG,MAAiB,MAATA,GAAgB4uG,GAAWv2H,EAAKxJ,OAAQ,CAC5E,MAAMovK,EAAepvC,EAAOskC,eAAiB/lC,GAAgBD,GAC7D,IAAK0U,EACH,OAAOo8B,EAAa5lK,EAAM2nB,EAAMryB,GAC3B,GAAIksD,EAAWqjG,eAAgB,CACpC,MAAM38I,EAAKlI,EAAK,GACVkyH,EAA+B,oBAAhBhqH,EAAG29J,UAA2B39J,EAAG29J,SAASl+I,GAC/D,GAAIuqG,EAAO,CACT,MAAM77G,EAAQuvJ,EAAa5lK,EAAM2nB,EAAMryB,EAAQ48H,GACzC57G,EAAMsvJ,EAAa5lK,EAAM2nB,EAAMryB,EAAQ48H,GAC7C,MAAO,CAAC2C,GAAIx+G,EAAMw+G,GAAID,GAAIt+G,EAAIs+G,GAChC,CACF,CACF,CACA,MAAO,CAACC,GAAI,EAAGD,GAAI50H,EAAKxJ,OAAS,EACnC,CACA,SAASsvK,GAAyBj9B,EAAOlhH,EAAMub,EAAU/hC,EAASqoI,GAChE,MAAMqY,EAAWhZ,EAAM65B,+BACjBptK,EAAQ4tC,EAASvb,GACvB,IAAK,IAAIlxB,EAAI,EAAGy5H,EAAO2xB,EAASrrJ,OAAQC,EAAIy5H,IAAQz5H,EAAG,CACrD,MAAM,MAAC8c,EAAK,KAAEvT,GAAQ6hJ,EAASprJ,IACzB,GAACo+H,EAAE,GAAED,GAAMxzE,GAAaygG,EAASprJ,GAAIkxB,EAAMryB,EAAOk0I,GACxD,IAAK,IAAInmH,EAAIwxG,EAAIxxG,GAAKuxG,IAAMvxG,EAAG,CAC7B,MAAM/kB,EAAU0B,EAAKqjB,GAChB/kB,EAAQk6B,MACXr3B,EAAQ7C,EAASiV,EAAO8P,EAE5B,CACF,CACF,CACA,SAAS0iJ,GAAyBp+I,GAChC,MAAMq+I,GAA8B,IAAvBr+I,EAAKnU,QAAQ,KACpByyJ,GAA8B,IAAvBt+I,EAAKnU,QAAQ,KAC1B,OAAO,SAASmgH,EAAKC,GACnB,MAAMzhF,EAAS6zH,EAAOxoK,KAAKyW,IAAI0/G,EAAIr6F,EAAIs6F,EAAIt6F,GAAK,EAC1C4Y,EAAS+zH,EAAOzoK,KAAKyW,IAAI0/G,EAAIp6F,EAAIq6F,EAAIr6F,GAAK,EAChD,OAAO/7B,KAAKykC,KAAKzkC,KAAKC,IAAI00C,EAAQ,GAAK30C,KAAKC,IAAIy0C,EAAQ,GAC1D,CACF,CACA,SAASg0H,GAAkBr9B,EAAO3lG,EAAUvb,EAAM6tI,EAAkB/rB,GAClE,MAAMtpH,EAAQ,GACd,IAAKspH,IAAqBZ,EAAMs9B,cAAcjjI,GAC5C,OAAO/iB,EAET,MAAMimJ,EAAiB,SAAS9nK,EAAS8xH,EAAc78G,IAChDk2H,GAAqBiE,GAAepvI,EAASuqI,EAAMggB,UAAW,KAG/DvqJ,EAAQ+nK,QAAQnjI,EAAS5J,EAAG4J,EAAS3J,EAAGi8H,IAC1Cr1I,EAAM1lB,KAAK,CAAC6D,UAAS8xH,eAAc78G,SAEvC,EAEA,OADAuyJ,GAAyBj9B,EAAOlhH,EAAMub,EAAUkjI,GAAgB,GACzDjmJ,CACT,CACA,SAASmmJ,GAAsBz9B,EAAO3lG,EAAUvb,EAAM6tI,GACpD,IAAIr1I,EAAQ,GACZ,SAASimJ,EAAe9nK,EAAS8xH,EAAc78G,GAC7C,MAAM,WAACm9I,EAAU,SAAEC,GAAYryJ,EAAQm3J,SAAS,CAAC,aAAc,YAAaD,IACtE,MAAC/hC,GAASN,EAAkB70H,EAAS,CAACg7B,EAAG4J,EAAS5J,EAAGC,EAAG2J,EAAS3J,IACnEw6F,GAAcN,EAAOi9B,EAAYC,IACnCxwI,EAAM1lB,KAAK,CAAC6D,UAAS8xH,eAAc78G,SAEvC,CAEA,OADAuyJ,GAAyBj9B,EAAOlhH,EAAMub,EAAUkjI,GACzCjmJ,CACT,CACA,SAASomJ,GAAyB19B,EAAO3lG,EAAUvb,EAAM6hH,EAAWgsB,EAAkB/rB,GACpF,IAAItpH,EAAQ,GACZ,MAAMqmJ,EAAiBT,GAAyBp+I,GAChD,IAAI8+I,EAAchhK,OAAOksH,kBACzB,SAASy0C,EAAe9nK,EAAS8xH,EAAc78G,GAC7C,MAAM8yJ,EAAU/nK,EAAQ+nK,QAAQnjI,EAAS5J,EAAG4J,EAAS3J,EAAGi8H,GACxD,GAAIhsB,IAAc68B,EAChB,OAEF,MAAM78G,EAASlrD,EAAQooK,eAAelR,GAChCmR,IAAgBl9B,GAAoBZ,EAAMs9B,cAAc38G,GAC9D,IAAKm9G,IAAgBN,EACnB,OAEF,MAAMxiI,EAAW2iI,EAAetjI,EAAUsmB,GACtC3lB,EAAW4iI,GACbtmJ,EAAQ,CAAC,CAAC7hB,UAAS8xH,eAAc78G,UACjCkzJ,EAAc5iI,GACLA,IAAa4iI,GACtBtmJ,EAAM1lB,KAAK,CAAC6D,UAAS8xH,eAAc78G,SAEvC,CAEA,OADAuyJ,GAAyBj9B,EAAOlhH,EAAMub,EAAUkjI,GACzCjmJ,CACT,CACA,SAASymJ,GAAgB/9B,EAAO3lG,EAAUvb,EAAM6hH,EAAWgsB,EAAkB/rB,GAC3E,OAAKA,GAAqBZ,EAAMs9B,cAAcjjI,GAG9B,MAATvb,GAAiB6hH,EAEpB+8B,GAAyB19B,EAAO3lG,EAAUvb,EAAM6hH,EAAWgsB,EAAkB/rB,GAD7E68B,GAAsBz9B,EAAO3lG,EAAUvb,EAAM6tI,GAHxC,EAKX,CACA,SAASqR,GAAah+B,EAAO3lG,EAAUvb,EAAM6hH,EAAWgsB,GACtD,MAAMr1I,EAAQ,GACR2mJ,EAAuB,MAATn/I,EAAe,WAAa,WAChD,IAAIo/I,GAAiB,EAOrB,OANAjB,GAAyBj9B,EAAOlhH,EAAMub,GAAU,CAAC5kC,EAAS8xH,EAAc78G,KAClEjV,EAAQwoK,GAAa5jI,EAASvb,GAAO6tI,KACvCr1I,EAAM1lB,KAAK,CAAC6D,UAAS8xH,eAAc78G,UACnCwzJ,EAAiBA,GAAkBzoK,EAAQ+nK,QAAQnjI,EAAS5J,EAAG4J,EAAS3J,EAAGi8H,GAC7E,IAEEhsB,IAAcu9B,EACT,GAEF5mJ,CACT,CACA,IAAI6mJ,GAAc,CAChBlB,4BACAmB,MAAO,CACL,KAAA1zJ,CAAMs1H,EAAOhzI,EAAG+C,EAAS48J,GACvB,MAAMtyH,EAAW40G,GAAoBjiJ,EAAGgzI,GAClClhH,EAAO/uB,EAAQ+uB,MAAQ,IACvB8hH,EAAmB7wI,EAAQ6wI,mBAAoB,EAC/CtpH,EAAQvnB,EAAQ4wI,UAClB08B,GAAkBr9B,EAAO3lG,EAAUvb,EAAM6tI,EAAkB/rB,GAC3Dm9B,GAAgB/9B,EAAO3lG,EAAUvb,GAAM,EAAO6tI,EAAkB/rB,GAC9Dh6H,EAAW,GACjB,OAAK0Q,EAAM3pB,QAGXqyI,EAAM65B,+BAA+B1nK,SAASoK,IAC5C,MAAMmO,EAAQ4M,EAAM,GAAG5M,MACjBjV,EAAU8G,EAAKpF,KAAKuT,GACtBjV,IAAYA,EAAQk6B,MACtB/oB,EAAShV,KAAK,CAAC6D,UAAS8xH,aAAchrH,EAAKmO,MAAOA,SACpD,IAEK9D,GATE,EAUX,EACA,OAAAnJ,CAAQuiI,EAAOhzI,EAAG+C,EAAS48J,GACzB,MAAMtyH,EAAW40G,GAAoBjiJ,EAAGgzI,GAClClhH,EAAO/uB,EAAQ+uB,MAAQ,KACvB8hH,EAAmB7wI,EAAQ6wI,mBAAoB,EACrD,IAAItpH,EAAQvnB,EAAQ4wI,UAChB08B,GAAkBr9B,EAAO3lG,EAAUvb,EAAM6tI,EAAkB/rB,GAC7Dm9B,GAAgB/9B,EAAO3lG,EAAUvb,GAAM,EAAO6tI,EAAkB/rB,GAClE,GAAItpH,EAAM3pB,OAAS,EAAG,CACpB,MAAM45H,EAAejwG,EAAM,GAAGiwG,aACxBpwH,EAAO6oI,EAAMyd,eAAel2B,GAAcpwH,KAChDmgB,EAAQ,GACR,IAAK,IAAI1pB,EAAI,EAAGA,EAAIuJ,EAAKxJ,SAAUC,EACjC0pB,EAAM1lB,KAAK,CAAC6D,QAAS0B,EAAKvJ,GAAI25H,eAAc78G,MAAO9c,GAEvD,CACA,OAAO0pB,CACT,EACA,KAAAsoB,CAAMogG,EAAOhzI,EAAG+C,EAAS48J,GACvB,MAAMtyH,EAAW40G,GAAoBjiJ,EAAGgzI,GAClClhH,EAAO/uB,EAAQ+uB,MAAQ,KACvB8hH,EAAmB7wI,EAAQ6wI,mBAAoB,EACrD,OAAOy8B,GAAkBr9B,EAAO3lG,EAAUvb,EAAM6tI,EAAkB/rB,EACpE,EACA,OAAAy9B,CAAQr+B,EAAOhzI,EAAG+C,EAAS48J,GACzB,MAAMtyH,EAAW40G,GAAoBjiJ,EAAGgzI,GAClClhH,EAAO/uB,EAAQ+uB,MAAQ,KACvB8hH,EAAmB7wI,EAAQ6wI,mBAAoB,EACrD,OAAOm9B,GAAgB/9B,EAAO3lG,EAAUvb,EAAM/uB,EAAQ4wI,UAAWgsB,EAAkB/rB,EACrF,EACA,CAAAnwG,CAAEuvG,EAAOhzI,EAAG+C,EAAS48J,GACnB,MAAMtyH,EAAW40G,GAAoBjiJ,EAAGgzI,GACxC,OAAOg+B,GAAah+B,EAAO3lG,EAAU,IAAKtqC,EAAQ4wI,UAAWgsB,EAC/D,EACA,CAAAj8H,CAAEsvG,EAAOhzI,EAAG+C,EAAS48J,GACnB,MAAMtyH,EAAW40G,GAAoBjiJ,EAAGgzI,GACxC,OAAOg+B,GAAah+B,EAAO3lG,EAAU,IAAKtqC,EAAQ4wI,UAAWgsB,EAC/D,IAIJ,MAAM2R,GAAmB,CAAC,OAAQ,MAAO,QAAS,UAClD,SAASC,GAAiBhyJ,EAAO8tB,GAC/B,OAAO9tB,EAAM7O,QAAOxL,GAAKA,EAAE48I,MAAQz0G,GACrC,CACA,SAASmkI,GAA4BjyJ,EAAOuS,GAC1C,OAAOvS,EAAM7O,QAAOxL,IAA0C,IAArCosK,GAAiB3zJ,QAAQzY,EAAE48I,MAAe58I,EAAE4pB,IAAIgD,OAASA,GACpF,CACA,SAAS2/I,GAAalyJ,EAAO06G,GAC3B,OAAO16G,EAAMwzB,MAAK,CAACvyC,EAAGC,KACpB,MAAM65H,EAAKL,EAAUx5H,EAAID,EACnBq1D,EAAKokE,EAAUz5H,EAAIC,EACzB,OAAO65H,EAAGmX,SAAW57E,EAAG47E,OACtBnX,EAAG58G,MAAQm4C,EAAGn4C,MACd48G,EAAGmX,OAAS57E,EAAG47E,MAAM,GAE3B,CACA,SAASigC,GAAUC,GACjB,MAAMC,EAAc,GACpB,IAAIhxK,EAAGy5H,EAAMvrG,EAAKgzH,EAAK72E,EAAO4mG,EAC9B,IAAKjxK,EAAI,EAAGy5H,GAAQs3C,GAAS,IAAIhxK,OAAQC,EAAIy5H,IAAQz5H,EACnDkuB,EAAM6iJ,EAAM/wK,KACVysC,SAAUy0G,EAAK/+I,SAAUkoE,QAAO4mG,cAAc,IAAM/iJ,GACtD8iJ,EAAYhtK,KAAK,CACf8Y,MAAO9c,EACPkuB,MACAgzH,MACA6V,WAAY7oI,EAAImL,eAChBw3G,OAAQ3iH,EAAI2iH,OACZxmE,MAAOA,GAAU62E,EAAM72E,EACvB4mG,gBAGJ,OAAOD,CACT,CACA,SAASE,GAAYC,GACnB,MAAMhlB,EAAS,CAAC,EAChB,IAAK,MAAM1nF,KAAQ0sG,EAAS,CAC1B,MAAM,MAAC9mG,EAAK,IAAE62E,EAAG,YAAE+vB,GAAexsG,EAClC,IAAK4F,IAAUqmG,GAAiBzjK,SAASi0I,GACvC,SAEF,MAAM7E,EAAS8P,EAAO9hF,KAAW8hF,EAAO9hF,GAAS,CAACw8C,MAAO,EAAGuqD,OAAQ,EAAGvgC,OAAQ,EAAGnnI,KAAM,IACxF2yI,EAAOx1B,QACPw1B,EAAOxL,QAAUogC,CACnB,CACA,OAAO9kB,CACT,CACA,SAASklB,GAAcF,EAAS9sK,GAC9B,MAAM8nJ,EAAS+kB,GAAYC,IACrB,aAACG,EAAY,cAAEC,GAAiBltK,EACtC,IAAIrE,EAAGy5H,EAAM+3C,EACb,IAAKxxK,EAAI,EAAGy5H,EAAO03C,EAAQpxK,OAAQC,EAAIy5H,IAAQz5H,EAAG,CAChDwxK,EAASL,EAAQnxK,GACjB,MAAM,SAACwoK,GAAYgJ,EAAOtjJ,IACpBm8C,EAAQ8hF,EAAOqlB,EAAOnnG,OACtBs+E,EAASt+E,GAASmnG,EAAOP,YAAc5mG,EAAMwmE,OAC/C2gC,EAAOza,YACTya,EAAO9zJ,MAAQirI,EAASA,EAAS2oB,EAAe9I,GAAYnkK,EAAOotK,eACnED,EAAO58I,OAAS28I,IAEhBC,EAAO9zJ,MAAQ4zJ,EACfE,EAAO58I,OAAS+zH,EAASA,EAAS4oB,EAAgB/I,GAAYnkK,EAAOqtK,gBAEzE,CACA,OAAOvlB,CACT,CACA,SAASwlB,GAAiBZ,GACxB,MAAMC,EAAcF,GAAUC,GACxBvI,EAAWqI,GAAaG,EAAYlhK,QAAO20D,GAAQA,EAAKv2C,IAAIs6I,YAAW,GACvE95I,EAAOmiJ,GAAaF,GAAiBK,EAAa,SAAS,GAC3D7hE,EAAQ0hE,GAAaF,GAAiBK,EAAa,UACnDviJ,EAAMoiJ,GAAaF,GAAiBK,EAAa,QAAQ,GACzD55B,EAASy5B,GAAaF,GAAiBK,EAAa,WACpDY,EAAmBhB,GAA4BI,EAAa,KAC5Da,EAAiBjB,GAA4BI,EAAa,KAChE,MAAO,CACLxI,WACAsJ,WAAYpjJ,EAAKhe,OAAO+d,GACxBsjJ,eAAgB5iE,EAAMz+F,OAAOmhK,GAAgBnhK,OAAO0mI,GAAQ1mI,OAAOkhK,GACnExf,UAAWue,GAAiBK,EAAa,aACzCgB,SAAUtjJ,EAAKhe,OAAOy+F,GAAOz+F,OAAOmhK,GACpC9a,WAAYtoI,EAAI/d,OAAO0mI,GAAQ1mI,OAAOkhK,GAE1C,CACA,SAASK,GAAeC,EAAY9f,EAAWxyJ,EAAGC,GAChD,OAAOkH,KAAKiW,IAAIk1J,EAAWtyK,GAAIwyJ,EAAUxyJ,IAAMmH,KAAKiW,IAAIk1J,EAAWryK,GAAIuyJ,EAAUvyJ,GACnF,CACA,SAASsyK,GAAiBD,EAAYE,GACpCF,EAAWzjJ,IAAM1nB,KAAKiW,IAAIk1J,EAAWzjJ,IAAK2jJ,EAAW3jJ,KACrDyjJ,EAAWxjJ,KAAO3nB,KAAKiW,IAAIk1J,EAAWxjJ,KAAM0jJ,EAAW1jJ,MACvDwjJ,EAAW96B,OAASrwI,KAAKiW,IAAIk1J,EAAW96B,OAAQg7B,EAAWh7B,QAC3D86B,EAAW/iE,MAAQpoG,KAAKiW,IAAIk1J,EAAW/iE,MAAOijE,EAAWjjE,MAC3D,CACA,SAASkjE,GAAWjgB,EAAW/tJ,EAAQmtK,EAAQrlB,GAC7C,MAAM,IAACjL,EAAG,IAAEhzH,GAAOsjJ,EACbU,EAAa9f,EAAU8f,WAC7B,IAAK/sJ,EAAS+7H,GAAM,CACdswB,EAAO9nK,OACT0oJ,EAAUlR,IAAQswB,EAAO9nK,MAE3B,MAAM2gE,EAAQ8hF,EAAOqlB,EAAOnnG,QAAU,CAAC3gE,KAAM,EAAGm9G,MAAO,GACvDx8C,EAAM3gE,KAAO3C,KAAKiW,IAAIqtD,EAAM3gE,KAAM8nK,EAAOza,WAAa7oI,EAAI0G,OAAS1G,EAAIxQ,OACvE8zJ,EAAO9nK,KAAO2gE,EAAM3gE,KAAO2gE,EAAMw8C,MACjCurC,EAAUlR,IAAQswB,EAAO9nK,IAC3B,CACIwkB,EAAI82I,YACNmN,GAAiBD,EAAYhkJ,EAAI82I,cAEnC,MAAM9uI,EAAWnvB,KAAKiW,IAAI,EAAG3Y,EAAOqsB,WAAauhJ,GAAeC,EAAY9f,EAAW,OAAQ,UACzFj8H,EAAYpvB,KAAKiW,IAAI,EAAG3Y,EAAOssB,YAAcshJ,GAAeC,EAAY9f,EAAW,MAAO,WAC1FkgB,EAAep8I,IAAak8H,EAAU9tB,EACtCiuC,EAAgBp8I,IAAci8H,EAAU3tJ,EAG9C,OAFA2tJ,EAAU9tB,EAAIpuG,EACdk8H,EAAU3tJ,EAAI0xB,EACPq7I,EAAOza,WACV,CAACyb,KAAMF,EAAcG,MAAOF,GAC5B,CAACC,KAAMD,EAAeE,MAAOH,EACnC,CACA,SAASI,GAAiBtgB,GACxB,MAAM8f,EAAa9f,EAAU8f,WAC7B,SAASS,EAAUzxB,GACjB,MAAMnG,EAASh0I,KAAKiW,IAAIk1J,EAAWhxB,GAAOkR,EAAUlR,GAAM,GAE1D,OADAkR,EAAUlR,IAAQnG,EACXA,CACT,CACAqX,EAAUtvH,GAAK6vI,EAAU,OACzBvgB,EAAUvvH,GAAK8vI,EAAU,QACzBA,EAAU,SACVA,EAAU,SACZ,CACA,SAASC,GAAW7b,EAAY3E,GAC9B,MAAM8f,EAAa9f,EAAU8f,WAC7B,SAASW,EAAmBn2H,GAC1B,MAAMy6F,EAAS,CAACzoH,KAAM,EAAGD,IAAK,EAAG0gF,MAAO,EAAGioC,OAAQ,GAInD,OAHA16F,EAAUn4C,SAAS28I,IACjB/J,EAAO+J,GAAOn6I,KAAKiW,IAAIo1I,EAAUlR,GAAMgxB,EAAWhxB,GAAK,IAElD/J,CACT,CACA,OACI07B,EADG9b,EACgB,CAAC,OAAQ,SACT,CAAC,MAAO,UACjC,CACA,SAAS+b,GAAS/B,EAAO3e,EAAW/tJ,EAAQ8nJ,GAC1C,MAAM4mB,EAAa,GACnB,IAAI/yK,EAAGy5H,EAAM+3C,EAAQtjJ,EAAK8kJ,EAAOlyC,EACjC,IAAK9gI,EAAI,EAAGy5H,EAAOs3C,EAAMhxK,OAAQizK,EAAQ,EAAGhzK,EAAIy5H,IAAQz5H,EAAG,CACzDwxK,EAAST,EAAM/wK,GACfkuB,EAAMsjJ,EAAOtjJ,IACbA,EAAIqZ,OACFiqI,EAAO9zJ,OAAS00I,EAAU9tB,EAC1BktC,EAAO58I,QAAUw9H,EAAU3tJ,EAC3BmuK,GAAWpB,EAAOza,WAAY3E,IAEhC,MAAM,KAACogB,EAAI,MAAEC,GAASJ,GAAWjgB,EAAW/tJ,EAAQmtK,EAAQrlB,GAC5D6mB,GAASR,GAAQO,EAAWhzK,OAC5B+gI,EAAUA,GAAW2xC,EAChBvkJ,EAAIs6I,UACPuK,EAAW/uK,KAAKwtK,EAEpB,CACA,OAAOwB,GAASF,GAASC,EAAY3gB,EAAW/tJ,EAAQ8nJ,IAAWrrB,CACrE,CACA,SAASmyC,GAAW/kJ,EAAKQ,EAAMD,EAAK/Q,EAAOkX,GACzC1G,EAAIO,IAAMA,EACVP,EAAIQ,KAAOA,EACXR,EAAIihF,MAAQzgF,EAAOhR,EACnBwQ,EAAIkpH,OAAS3oH,EAAMmG,EACnB1G,EAAIxQ,MAAQA,EACZwQ,EAAI0G,OAASA,CACf,CACA,SAASs+I,GAAWnC,EAAO3e,EAAW/tJ,EAAQ8nJ,GAC5C,MAAMgnB,EAAc9uK,EAAOu9J,QAC3B,IAAI,EAAC/+H,EAAC,EAAEC,GAAKsvH,EACb,IAAK,MAAMof,KAAUT,EAAO,CAC1B,MAAM7iJ,EAAMsjJ,EAAOtjJ,IACbm8C,EAAQ8hF,EAAOqlB,EAAOnnG,QAAU,CAACw8C,MAAO,EAAGuqD,OAAQ,EAAGvgC,OAAQ,GAC9DA,EAAU2gC,EAAOP,YAAc5mG,EAAMwmE,QAAW,EACtD,GAAI2gC,EAAOza,WAAY,CACrB,MAAMr5I,EAAQ00I,EAAU9tB,EAAIuM,EACtBj8G,EAASy1C,EAAM3gE,MAAQwkB,EAAI0G,OAC7BimG,EAAQxwD,EAAMzqD,SAChBkjB,EAAIunC,EAAMzqD,OAERsO,EAAIs6I,SACNyK,GAAW/kJ,EAAKilJ,EAAYzkJ,KAAMoU,EAAGz+B,EAAOqsB,WAAayiJ,EAAYhkE,MAAQgkE,EAAYzkJ,KAAMkG,GAE/Fq+I,GAAW/kJ,EAAKkkI,EAAU1jI,KAAO27C,EAAM+mG,OAAQtuI,EAAGplB,EAAOkX,GAE3Dy1C,EAAMzqD,MAAQkjB,EACdunC,EAAM+mG,QAAU1zJ,EAChBolB,EAAI5U,EAAIkpH,MACV,KAAO,CACL,MAAMxiH,EAASw9H,EAAU3tJ,EAAIosI,EACvBnzH,EAAQ2sD,EAAM3gE,MAAQwkB,EAAIxQ,MAC5Bm9G,EAAQxwD,EAAMzqD,SAChBijB,EAAIwnC,EAAMzqD,OAERsO,EAAIs6I,SACNyK,GAAW/kJ,EAAK2U,EAAGswI,EAAY1kJ,IAAK/Q,EAAOrZ,EAAOssB,YAAcwiJ,EAAY/7B,OAAS+7B,EAAY1kJ,KAEjGwkJ,GAAW/kJ,EAAK2U,EAAGuvH,EAAU3jI,IAAM47C,EAAM+mG,OAAQ1zJ,EAAOkX,GAE1Dy1C,EAAMzqD,MAAQijB,EACdwnC,EAAM+mG,QAAUx8I,EAChBiO,EAAI3U,EAAIihF,KACV,CACF,CACAijD,EAAUvvH,EAAIA,EACduvH,EAAUtvH,EAAIA,CAChB,CACAiS,GAASvvC,IAAI,SAAU,CACrB4tK,aAAa,EACbxR,QAAS,CACPnzI,IAAK,EACL0gF,MAAO,EACPioC,OAAQ,EACR1oH,KAAM,KAGV,IAAIyiJ,GAAU,CACZ,MAAAkC,CAAOjhC,EAAO7/F,GACP6/F,EAAM2+B,QACT3+B,EAAM2+B,MAAQ,IAEhBx+H,EAAKi2H,SAAWj2H,EAAKi2H,WAAY,EACjCj2H,EAAK9F,SAAW8F,EAAK9F,UAAY,MACjC8F,EAAKs+F,OAASt+F,EAAKs+F,QAAU,EAC7Bt+F,EAAKw5H,QAAUx5H,EAAKw5H,SAAW,WAC7B,MAAO,CAAC,CACNhpI,EAAG,EACH,IAAAilH,CAAKoK,GACH7/G,EAAKy1G,KAAKoK,EACZ,GAEJ,EACAhgB,EAAM2+B,MAAM/sK,KAAKuuC,EACnB,EACA,SAAA+gI,CAAUlhC,EAAOmhC,GACf,MAAMz2J,EAAQs1H,EAAM2+B,MAAQ3+B,EAAM2+B,MAAMh0J,QAAQw2J,IAAe,GAChD,IAAXz2J,GACFs1H,EAAM2+B,MAAM3jJ,OAAOtQ,EAAO,EAE9B,EACA,SAAAstI,CAAUhY,EAAO7/F,EAAMpwC,GACrBowC,EAAKi2H,SAAWrmK,EAAQqmK,SACxBj2H,EAAK9F,SAAWtqC,EAAQsqC,SACxB8F,EAAKs+F,OAAS1uI,EAAQ0uI,MACxB,EACA,MAAAtpG,CAAO6qG,EAAO10H,EAAOkX,EAAQ4+I,GAC3B,IAAKphC,EACH,OAEF,MAAMwvB,EAAUtnB,GAAUlI,EAAMjwI,QAAQqvK,OAAO5P,SACzC6P,EAAiB1qK,KAAKiW,IAAIU,EAAQkkJ,EAAQlkJ,MAAO,GACjDg0J,EAAkB3qK,KAAKiW,IAAI4X,EAASgtI,EAAQhtI,OAAQ,GACpDm8I,EAAQY,GAAiBv/B,EAAM2+B,OAC/B0C,EAAgB1C,EAAMiB,SACtB0B,EAAkB3C,EAAMha,WAC9BpgJ,EAAKy7H,EAAM2+B,OAAO7iJ,IACgB,oBAArBA,EAAIk3I,cACbl3I,EAAIk3I,cACN,IAEF,MAAMuO,EAA0BF,EAAcz1G,QAAO,CAAC3e,EAAOolB,IAC3DA,EAAKv2C,IAAI/rB,UAAwC,IAA7BsiE,EAAKv2C,IAAI/rB,QAAQkT,QAAoBgqC,EAAQA,EAAQ,GAAG,IAAM,EAC9Eh7C,EAAS7D,OAAOqyJ,OAAO,CAC3BniI,WAAYhT,EACZiT,YAAaiE,EACbgtI,UACA6P,iBACAC,kBACAJ,aAAcG,EAAiB,EAAIkC,EACnCpC,cAAeG,EAAkB,IAE7BQ,EAAa1xK,OAAO02B,OAAO,CAAC,EAAG0qI,GACrCuQ,GAAiBD,EAAY53B,GAAUk5B,IACvC,MAAMphB,EAAY5xJ,OAAO02B,OAAO,CAC9Bg7I,aACA5tC,EAAGmtC,EACHhtK,EAAGitK,EACH7uI,EAAG++H,EAAQlzI,KACXoU,EAAG8+H,EAAQnzI,KACVmzI,GACGzV,EAASklB,GAAcoC,EAAc/iK,OAAOgjK,GAAkBrvK,GACpEyuK,GAAS/B,EAAMvI,SAAUpW,EAAW/tJ,EAAQ8nJ,GAC5C2mB,GAASW,EAAerhB,EAAW/tJ,EAAQ8nJ,GACvC2mB,GAASY,EAAiBthB,EAAW/tJ,EAAQ8nJ,IAC/C2mB,GAASW,EAAerhB,EAAW/tJ,EAAQ8nJ,GAE7CumB,GAAiBtgB,GACjB8gB,GAAWnC,EAAMe,WAAY1f,EAAW/tJ,EAAQ8nJ,GAChDiG,EAAUvvH,GAAKuvH,EAAU9tB,EACzB8tB,EAAUtvH,GAAKsvH,EAAU3tJ,EACzByuK,GAAWnC,EAAMgB,eAAgB3f,EAAW/tJ,EAAQ8nJ,GACpD/Z,EAAMggB,UAAY,CAChB1jI,KAAM0jI,EAAU1jI,KAChBD,IAAK2jI,EAAU3jI,IACf0gF,MAAOijD,EAAU1jI,KAAO0jI,EAAU9tB,EAClC8S,OAAQgb,EAAU3jI,IAAM2jI,EAAU3tJ,EAClCmwB,OAAQw9H,EAAU3tJ,EAClBiZ,MAAO00I,EAAU9tB,GAEnB3tH,EAAKo6J,EAAM3e,WAAYof,IACrB,MAAMtjJ,EAAMsjJ,EAAOtjJ,IACnB1tB,OAAO02B,OAAOhJ,EAAKkkH,EAAMggB,WACzBlkI,EAAIqZ,OAAO6qH,EAAU9tB,EAAG8tB,EAAU3tJ,EAAG,CAACiqB,KAAM,EAAGD,IAAK,EAAG0gF,MAAO,EAAGioC,OAAQ,GAAG,GAEhF,GAGF,MAAMw8B,GACJ,cAAAC,CAAen+B,EAAQwM,GAAc,CACrC,cAAA4xB,CAAe3pJ,GACb,OAAO,CACT,CACA,gBAAA3d,CAAiB4lI,EAAOtnI,EAAMqhB,GAAW,CACzC,mBAAAzf,CAAoB0lI,EAAOtnI,EAAMqhB,GAAW,CAC5C,mBAAAkmH,GACE,OAAO,CACT,CACA,cAAA0P,CAAel6I,EAAS6V,EAAOkX,EAAQstH,GAGrC,OAFAxkI,EAAQ3W,KAAKiW,IAAI,EAAGU,GAAS7V,EAAQ6V,OACrCkX,EAASA,GAAU/sB,EAAQ+sB,OACpB,CACLlX,QACAkX,OAAQ7tB,KAAKiW,IAAI,EAAGklI,EAAcn7I,KAAK6S,MAAM8D,EAAQwkI,GAAettH,GAExE,CACA,UAAAm/I,CAAWr+B,GACT,OAAO,CACT,CACA,YAAAs+B,CAAalsK,GACb,EAGF,MAAMmsK,WAAsBL,GAC1B,cAAAC,CAAethI,GACb,OAAOA,GAAQA,EAAKo1C,YAAcp1C,EAAKo1C,WAAW,OAAS,IAC7D,CACA,YAAAqsF,CAAalsK,GACXA,EAAO3F,QAAQ4vI,WAAY,CAC7B,EAGF,MAAMmiC,GAAc,WACdC,GAAc,CAClBC,WAAY,YACZC,UAAW,YACXC,SAAU,UACVC,aAAc,aACdC,YAAa,YACbC,YAAa,YACbC,UAAW,UACXC,aAAc,WACdC,WAAY,YAERC,GAAgBh2K,GAAmB,OAAVA,GAA4B,KAAVA,EACjD,SAASi2K,GAAWp/B,EAAQwM,GAC1B,MAAM9sI,EAAQsgI,EAAOtgI,MACf2/J,EAAer/B,EAAOxlI,aAAa,UACnC8kK,EAAct/B,EAAOxlI,aAAa,SAcxC,GAbAwlI,EAAOw+B,IAAe,CACpBlwI,QAAS,CACPpP,OAAQmgJ,EACRr3J,MAAOs3J,EACP5/J,MAAO,CACLC,QAASD,EAAMC,QACfuf,OAAQxf,EAAMwf,OACdlX,MAAOtI,EAAMsI,SAInBtI,EAAMC,QAAUD,EAAMC,SAAW,QACjCD,EAAM6nB,UAAY7nB,EAAM6nB,WAAa,aACjC43I,GAAcG,GAAc,CAC9B,MAAMC,EAAepyB,GAAanN,EAAQ,cACrBj8H,IAAjBw7J,IACFv/B,EAAOh4H,MAAQu3J,EAEnB,CACA,GAAIJ,GAAcE,GAChB,GAA4B,KAAxBr/B,EAAOtgI,MAAMwf,OACf8gH,EAAO9gH,OAAS8gH,EAAOh4H,OAASwkI,GAAe,OAC1C,CACL,MAAMgzB,EAAgBryB,GAAanN,EAAQ,eACrBj8H,IAAlBy7J,IACFx/B,EAAO9gH,OAASsgJ,EAEpB,CAEF,OAAOx/B,CACT,CACA,MAAMy/B,KAAuBxyB,IAA+B,CAACxyG,SAAS,GACtE,SAASilI,GAAYpjJ,EAAMlnB,EAAMqhB,GAC/B6F,EAAKxlB,iBAAiB1B,EAAMqhB,EAAUgpJ,GACxC,CACA,SAASE,GAAejjC,EAAOtnI,EAAMqhB,GACnCimH,EAAMsD,OAAOhpI,oBAAoB5B,EAAMqhB,EAAUgpJ,GACnD,CACA,SAASG,GAAgB9uK,EAAO4rI,GAC9B,MAAMtnI,EAAOqpK,GAAY3tK,EAAMsE,OAAStE,EAAMsE,MACxC,EAAC+3B,EAAC,EAAEC,GAAKu+G,GAAoB76I,EAAO4rI,GAC1C,MAAO,CACLtnI,OACAsnI,QACAmjC,OAAQ/uK,EACRq8B,OAASppB,IAANopB,EAAkBA,EAAI,KACzBC,OAASrpB,IAANqpB,EAAkBA,EAAI,KAE7B,CACA,SAAS0yI,GAAiBC,EAAU//B,GAClC,IAAK,MAAM1jH,KAAQyjJ,EACjB,GAAIzjJ,IAAS0jH,GAAU1jH,EAAK3lB,SAASqpI,GACnC,OAAO,CAGb,CACA,SAASggC,GAAqBtjC,EAAOtnI,EAAMqhB,GACzC,MAAMupH,EAAStD,EAAMsD,OACf7hH,EAAW,IAAIyD,kBAAiBtqB,IACpC,IAAIU,GAAU,EACd,IAAK,MAAM49D,KAASt+D,EAClBU,EAAUA,GAAW8nK,GAAiBlqG,EAAMqqG,WAAYjgC,GACxDhoI,EAAUA,IAAY8nK,GAAiBlqG,EAAMsqG,aAAclgC,GAEzDhoI,GACFye,GACF,IAGF,OADA0H,EAAS4C,QAAQxzB,SAAU,CAACy0B,WAAW,EAAMm+I,SAAS,IAC/ChiJ,CACT,CACA,SAASiiJ,GAAqB1jC,EAAOtnI,EAAMqhB,GACzC,MAAMupH,EAAStD,EAAMsD,OACf7hH,EAAW,IAAIyD,kBAAiBtqB,IACpC,IAAIU,GAAU,EACd,IAAK,MAAM49D,KAASt+D,EAClBU,EAAUA,GAAW8nK,GAAiBlqG,EAAMsqG,aAAclgC,GAC1DhoI,EAAUA,IAAY8nK,GAAiBlqG,EAAMqqG,WAAYjgC,GAEvDhoI,GACFye,GACF,IAGF,OADA0H,EAAS4C,QAAQxzB,SAAU,CAACy0B,WAAW,EAAMm+I,SAAS,IAC/ChiJ,CACT,CACA,MAAMkiJ,GAAqB,IAAIzsK,IAC/B,IAAI0sK,GAAsB,EAC1B,SAASC,KACP,MAAMC,EAAMzyK,OAAO0uI,iBACf+jC,IAAQF,KAGZA,GAAsBE,EACtBH,GAAmBxxK,SAAQ,CAACuxB,EAAQs8G,KAC9BA,EAAMmD,0BAA4B2gC,GACpCpgJ,GACF,IAEJ,CACA,SAASqgJ,GAA8B/jC,EAAOt8G,GACvCigJ,GAAmBrsK,MACtBjG,OAAO+I,iBAAiB,SAAUypK,IAEpCF,GAAmBvwK,IAAI4sI,EAAOt8G,EAChC,CACA,SAASsgJ,GAAgChkC,GACvC2jC,GAAmBnsK,OAAOwoI,GACrB2jC,GAAmBrsK,MACtBjG,OAAOiJ,oBAAoB,SAAUupK,GAEzC,CACA,SAASI,GAAqBjkC,EAAOtnI,EAAMqhB,GACzC,MAAMupH,EAAStD,EAAMsD,OACf9gE,EAAY8gE,GAAU+K,GAAe/K,GAC3C,IAAK9gE,EACH,OAEF,MAAM9+C,EAASkpG,IAAU,CAACthH,EAAOkX,KAC/B,MAAM0vG,EAAI1vD,EAAUr3D,YACpB4O,EAASzO,EAAOkX,GACZ0vG,EAAI1vD,EAAUr3D,aAChB4O,GACF,GACC1oB,QACGowB,EAAW,IAAI+B,gBAAe5oB,IAClC,MAAMs+D,EAAQt+D,EAAQ,GAChB0Q,EAAQ4tD,EAAMj1C,YAAY3Y,MAC1BkX,EAAS02C,EAAMj1C,YAAYzB,OACnB,IAAVlX,GAA0B,IAAXkX,GAGnBkB,EAAOpY,EAAOkX,EAAO,IAIvB,OAFAf,EAAS4C,QAAQm+C,GACjBuhG,GAA8B/jC,EAAOt8G,GAC9BjC,CACT,CACA,SAASyiJ,GAAgBlkC,EAAOtnI,EAAM+oB,GAChCA,GACFA,EAASqE,aAEE,WAATptB,GACFsrK,GAAgChkC,EAEpC,CACA,SAASmkC,GAAqBnkC,EAAOtnI,EAAMqhB,GACzC,MAAMupH,EAAStD,EAAMsD,OACftuE,EAAQ43D,IAAWx4H,IACL,OAAd4rI,EAAMhiE,KACRjkD,EAASmpJ,GAAgB9uK,EAAO4rI,GAClC,GACCA,GAAQzkI,IACT,MAAMnH,EAAQmH,EAAK,GACnB,MAAO,CAACnH,EAAOA,EAAM0gD,QAAS1gD,EAAM2gD,QAAQ,IAG9C,OADAiuH,GAAY1/B,EAAQ5qI,EAAMs8D,GACnBA,CACT,CACA,MAAMovG,WAAoB5C,GACxB,cAAAC,CAAen+B,EAAQwM,GACrB,MAAM/3H,EAAUurH,GAAUA,EAAO/tD,YAAc+tD,EAAO/tD,WAAW,MACjE,OAAIx9D,GAAWA,EAAQurH,SAAWA,GAChCo/B,GAAWp/B,EAAQwM,GACZ/3H,GAEF,IACT,CACA,cAAA2pJ,CAAe3pJ,GACb,MAAMurH,EAASvrH,EAAQurH,OACvB,IAAKA,EAAOw+B,IACV,OAAO,EAET,MAAMlwI,EAAU0xG,EAAOw+B,IAAalwI,QACpC,CAAC,SAAU,SAASz/B,SAAS6qF,IAC3B,MAAMvwF,EAAQmlC,EAAQorD,GAClBypC,EAAch6H,GAChB62I,EAAOjmI,gBAAgB2/E,GAEvBsmD,EAAOnmI,aAAa6/E,EAAMvwF,EAC5B,IAEF,MAAMuW,EAAQ4uB,EAAQ5uB,OAAS,CAAC,EAMhC,OALA5U,OAAOP,KAAKmV,GAAO7Q,SAAS1D,IAC1B60I,EAAOtgI,MAAMvU,GAAOuU,EAAMvU,EAAI,IAEhC60I,EAAOh4H,MAAQg4H,EAAOh4H,aACfg4H,EAAOw+B,KACP,CACT,CACA,gBAAA1nK,CAAiB4lI,EAAOtnI,EAAMqhB,GAC5BrqB,KAAK4K,oBAAoB0lI,EAAOtnI,GAChC,MAAM2rK,EAAUrkC,EAAMskC,WAAatkC,EAAMskC,SAAW,CAAC,GAC/CpqK,EAAW,CACf8qB,OAAQs+I,GACRiB,OAAQb,GACRhgJ,OAAQugJ,IAEJ3rK,EAAU4B,EAASxB,IAASyrK,GAClCE,EAAQ3rK,GAAQJ,EAAQ0nI,EAAOtnI,EAAMqhB,EACvC,CACA,mBAAAzf,CAAoB0lI,EAAOtnI,GACzB,MAAM2rK,EAAUrkC,EAAMskC,WAAatkC,EAAMskC,SAAW,CAAC,GAC/CtvG,EAAQqvG,EAAQ3rK,GACtB,IAAKs8D,EACH,OAEF,MAAM96D,EAAW,CACf8qB,OAAQk/I,GACRK,OAAQL,GACRxgJ,OAAQwgJ,IAEJ5rK,EAAU4B,EAASxB,IAASuqK,GAClC3qK,EAAQ0nI,EAAOtnI,EAAMs8D,GACrBqvG,EAAQ3rK,QAAQ2O,CAClB,CACA,mBAAA44H,GACE,OAAO5uI,OAAO0uI,gBAChB,CACA,cAAA4P,CAAerM,EAAQh4H,EAAOkX,EAAQstH,GACpC,OAAOH,GAAerM,EAAQh4H,EAAOkX,EAAQstH,EAC/C,CACA,UAAA6xB,CAAWr+B,GACT,MAAM9gE,EAAY6rE,GAAe/K,GACjC,SAAU9gE,IAAaA,EAAUgiG,YACnC,EAGF,SAASC,GAAgBnhC,GACvB,OAAK8K,MAAiD,qBAApBs2B,iBAAmCphC,aAAkBohC,gBAC9E7C,GAEFuC,EACT,CAEA,MAAMO,GACJ,WAAAj3K,GACEgC,KAAKk1K,MAAQ,EACf,CACA,MAAAlqH,CAAOslF,EAAOr2D,EAAMpuE,EAAMmC,GACX,eAATisE,IACFj6E,KAAKk1K,MAAQl1K,KAAKm1K,mBAAmB7kC,GAAO,GAC5CtwI,KAAK2lJ,QAAQ3lJ,KAAKk1K,MAAO5kC,EAAO,YAElC,MAAMT,EAAc7hI,EAAShO,KAAKgwI,aAAaM,GAAOtiI,OAAOA,GAAUhO,KAAKgwI,aAAaM,GACnF9yI,EAASwC,KAAK2lJ,QAAQ9V,EAAaS,EAAOr2D,EAAMpuE,GAKtD,MAJa,iBAATouE,IACFj6E,KAAK2lJ,QAAQ9V,EAAaS,EAAO,QACjCtwI,KAAK2lJ,QAAQ3lJ,KAAKk1K,MAAO5kC,EAAO,cAE3B9yI,CACT,CACA,OAAAmoJ,CAAQ9V,EAAaS,EAAOr2D,EAAMpuE,GAChCA,EAAOA,GAAQ,CAAC,EAChB,IAAK,MAAMqmC,KAAc29F,EAAa,CACpC,MAAM91H,EAASm4B,EAAWn4B,OACpBnE,EAASmE,EAAOkgE,GAChB13E,EAAS,CAAC+tI,EAAOzkI,EAAMqmC,EAAW7xC,SACxC,IAAyC,IAArCiC,EAASsT,EAAQrT,EAAQwX,IAAqBlO,EAAKY,WACrD,OAAO,CAEX,CACA,OAAO,CACT,CACA,UAAA2oK,GACOr+C,EAAc/2H,KAAKknB,UACtBlnB,KAAKq1K,UAAYr1K,KAAKknB,OACtBlnB,KAAKknB,YAASvP,EAElB,CACA,YAAAq4H,CAAaM,GACX,GAAItwI,KAAKknB,OACP,OAAOlnB,KAAKknB,OAEd,MAAM2oH,EAAc7vI,KAAKknB,OAASlnB,KAAKm1K,mBAAmB7kC,GAE1D,OADAtwI,KAAKs1K,oBAAoBhlC,GAClBT,CACT,CACA,kBAAAslC,CAAmB7kC,EAAO7rI,GACxB,MAAMuB,EAASsqI,GAASA,EAAMtqI,OACxB3F,EAAU62H,EAAelxH,EAAO3F,SAAW2F,EAAO3F,QAAQixI,QAAS,CAAC,GACpEA,EAAUikC,GAAWvvK,GAC3B,OAAmB,IAAZ3F,GAAsBoE,EAAW+wK,GAAkBllC,EAAOgB,EAASjxI,EAASoE,GAAhD,EACrC,CACA,mBAAA6wK,CAAoBhlC,GAClB,MAAMmlC,EAAsBz1K,KAAKq1K,WAAa,GACxCxlC,EAAc7vI,KAAKknB,OACnB4d,EAAO,CAAChnC,EAAGC,IAAMD,EAAEkQ,QAAO+yB,IAAMhjC,EAAEiyE,MAAKhvC,GAAKD,EAAEhnB,OAAOxa,KAAOyhC,EAAEjnB,OAAOxa,OAC3ES,KAAK2lJ,QAAQ7gH,EAAK2wI,EAAqB5lC,GAAcS,EAAO,QAC5DtwI,KAAK2lJ,QAAQ7gH,EAAK+qG,EAAa4lC,GAAsBnlC,EAAO,QAC9D,EAEF,SAASilC,GAAWvvK,GAClB,MAAM0vK,EAAW,CAAC,EACZpkC,EAAU,GACVnzI,EAAOO,OAAOP,KAAKm0E,GAASg/D,QAAQ1pH,OAC1C,IAAK,IAAI1pB,EAAI,EAAGA,EAAIC,EAAKF,OAAQC,IAC/BozI,EAAQpvI,KAAKowE,GAASs5F,UAAUztK,EAAKD,KAEvC,MAAMk0I,EAAQpsI,EAAOsrI,SAAW,GAChC,IAAK,IAAIpzI,EAAI,EAAGA,EAAIk0I,EAAMn0I,OAAQC,IAAK,CACrC,MAAM6b,EAASq4H,EAAMl0I,IACY,IAA7BozI,EAAQr2H,QAAQlB,KAClBu3H,EAAQpvI,KAAK6X,GACb27J,EAAS37J,EAAOxa,KAAM,EAE1B,CACA,MAAO,CAAC+xI,UAASokC,WACnB,CACA,SAASC,GAAQt1K,EAASoE,GACxB,OAAKA,IAAmB,IAAZpE,GAGI,IAAZA,EACK,CAAC,EAEHA,EALE,IAMX,CACA,SAASm1K,GAAkBllC,GAAO,QAACgB,EAAO,SAAEokC,GAAWr1K,EAASoE,GAC9D,MAAMjH,EAAS,GACT6qB,EAAUioH,EAAMzqD,aACtB,IAAK,MAAM9rE,KAAUu3H,EAAS,CAC5B,MAAM/xI,EAAKwa,EAAOxa,GACZ2yB,EAAOyjJ,GAAQt1K,EAAQd,GAAKkF,GACrB,OAATytB,GAGJ10B,EAAO0E,KAAK,CACV6X,SACA1Z,QAASu1K,GAAWtlC,EAAMtqI,OAAQ,CAAC+T,SAAQq4H,MAAOsjC,EAASn2K,IAAM2yB,EAAM7J,IAE3E,CACA,OAAO7qB,CACT,CACA,SAASo4K,GAAW5vK,GAAQ,OAAC+T,EAAM,MAAEq4H,GAAQlgH,EAAM7J,GACjD,MAAMlqB,EAAO6H,EAAO6vK,gBAAgB97J,GAC9B6iD,EAAS52D,EAAO4oJ,gBAAgB18H,EAAM/zB,GAI5C,OAHIi0I,GAASr4H,EAAOk5B,UAClB2pB,EAAO16D,KAAK6X,EAAOk5B,UAEdjtC,EAAO6oJ,eAAejyF,EAAQv0C,EAAS,CAAC,IAAK,CAClDsyH,YAAY,EACZC,WAAW,EACXF,SAAS,GAEb,CAEA,SAASo7B,GAAa9sK,EAAM3I,GAC1B,MAAM01K,EAAkB9iI,GAASm9F,SAASpnI,IAAS,CAAC,EAC9CgtK,GAAkB31K,EAAQ+vI,UAAY,CAAC,GAAGpnI,IAAS,CAAC,EAC1D,OAAOgtK,EAAejlC,WAAa1wI,EAAQ0wI,WAAaglC,EAAgBhlC,WAAa,GACvF,CACA,SAASklC,GAA0B12K,EAAIwxI,GACrC,IAAI3hH,EAAO7vB,EAMX,MALW,YAAPA,EACF6vB,EAAO2hH,EACS,YAAPxxI,IACT6vB,EAAqB,MAAd2hH,EAAoB,IAAM,KAE5B3hH,CACT,CACA,SAAS8mJ,GAA0B9mJ,EAAM2hH,GACvC,OAAO3hH,IAAS2hH,EAAY,UAAY,SAC1C,CACA,SAASolC,GAAiBxrI,GACxB,MAAiB,QAAbA,GAAmC,WAAbA,EACjB,IAEQ,SAAbA,GAAoC,UAAbA,EAClB,SADT,CAGF,CACA,SAASyrI,GAAc72K,EAAI82K,GACzB,MAAW,MAAP92K,GAAqB,MAAPA,EACTA,EAEF82K,EAAajnJ,MAAQ+mJ,GAAiBE,EAAa1rI,WAAaprC,EAAG2O,OAAO,GAAGrK,aACtF,CACA,SAASyyK,GAAiBtwK,EAAQ3F,GAChC,MAAMk2K,EAAgBhjJ,GAAUvtB,EAAOgD,OAAS,CAACwoI,OAAQ,CAAC,GACpDglC,EAAen2K,EAAQmxI,QAAU,CAAC,EAClCilC,EAAiBX,GAAa9vK,EAAOgD,KAAM3I,GAC3Cq2K,EAAWh4K,OAAOqnB,OAAO,MACzByrH,EAAS9yI,OAAOqnB,OAAO,MA+B7B,OA9BArnB,OAAOP,KAAKq4K,GAAc/zK,SAAQlD,IAChC,MAAMo3K,EAAYH,EAAaj3K,GAC/B,IAAK8jB,EAASszJ,GACZ,OAAOxyK,QAAQzC,MAAM,0CAA0CnC,KAEjE,GAAIo3K,EAAUt8B,OACZ,OAAOl2I,QAAQC,KAAK,kDAAkD7E,KAExE,MAAM6vB,EAAOgnJ,GAAc72K,EAAIo3K,GACzBC,EAAYV,GAA0B9mJ,EAAMqnJ,GAC5CI,EAAsBN,EAAc/kC,QAAU,CAAC,EACrDklC,EAAStnJ,GAAQsnJ,EAAStnJ,IAAS7vB,EACnCiyI,EAAOjyI,GAAMg5H,EAAQ75H,OAAOqnB,OAAO,MAAO,CAAC,CAACqJ,QAAOunJ,EAAWE,EAAoBznJ,GAAOynJ,EAAoBD,IAAY,IAE3H5wK,EAAOyB,KAAK2oI,SAAS3tI,SAAQsL,IAC3B,MAAM/E,EAAO+E,EAAQ/E,MAAQhD,EAAOgD,KAC9B+nI,EAAYhjI,EAAQgjI,WAAa+kC,GAAa9sK,EAAM3I,GACpD01K,EAAkBxiJ,GAAUvqB,IAAS,CAAC,EACtC6tK,EAAsBd,EAAgBvkC,QAAU,CAAC,EACvD9yI,OAAOP,KAAK04K,GAAqBp0K,SAAQq0K,IACvC,MAAM1nJ,EAAO6mJ,GAA0Ba,EAAW/lC,GAC5CxxI,EAAKwO,EAAQqhB,EAAO,WAAasnJ,EAAStnJ,IAASA,EACzDoiH,EAAOjyI,GAAMiyI,EAAOjyI,IAAOb,OAAOqnB,OAAO,MACzCwyG,EAAQiZ,EAAOjyI,GAAK,CAAC,CAAC6vB,QAAOonJ,EAAaj3K,GAAKs3K,EAAoBC,IAAY,GAC/E,IAEJp4K,OAAOP,KAAKqzI,GAAQ/uI,SAAQ1D,IAC1B,MAAMggD,EAAQyyF,EAAOzyI,GACrBw5H,EAAQx5E,EAAO,CAAC9L,GAASu+F,OAAOzyF,EAAM/1C,MAAOiqC,GAAS8L,OAAO,IAExDyyF,CACT,CACA,SAASulC,GAAY/wK,GACnB,MAAM3F,EAAU2F,EAAO3F,UAAY2F,EAAO3F,QAAU,CAAC,GACrDA,EAAQixI,QAAUpa,EAAe72H,EAAQixI,QAAS,CAAC,GACnDjxI,EAAQmxI,OAAS8kC,GAAiBtwK,EAAQ3F,EAC5C,CACA,SAAS22K,GAASvvK,GAIhB,OAHAA,EAAOA,GAAQ,CAAC,EAChBA,EAAK2oI,SAAW3oI,EAAK2oI,UAAY,GACjC3oI,EAAK0nJ,OAAS1nJ,EAAK0nJ,QAAU,GACtB1nJ,CACT,CACA,SAASwvK,GAAWjxK,GAIlB,OAHAA,EAASA,GAAU,CAAC,EACpBA,EAAOyB,KAAOuvK,GAAShxK,EAAOyB,MAC9BsvK,GAAY/wK,GACLA,CACT,CACA,MAAMkxK,GAAW,IAAI1vK,IACf2vK,GAAa,IAAI/zK,IACvB,SAASg0K,GAAW3pE,EAAUqZ,GAC5B,IAAI3oH,EAAO+4K,GAAS/vK,IAAIsmG,GAMxB,OALKtvG,IACHA,EAAO2oH,IACPowD,GAASxzK,IAAI+pG,EAAUtvG,GACvBg5K,GAAW9yK,IAAIlG,IAEVA,CACT,CACA,MAAMk5K,GAAa,CAAC3zK,EAAKkJ,EAAK7N,KAC5B,MAAMmzB,EAAOwmG,EAAiB9rH,EAAK7N,QACtB4Y,IAATua,GACFxuB,EAAIW,IAAI6tB,EACV,EAEF,MAAMvsB,GACJ,WAAA3H,CAAYgI,GACVhG,KAAKoG,QAAU6wK,GAAWjxK,GAC1BhG,KAAKs3K,YAAc,IAAI9vK,IACvBxH,KAAKu3K,eAAiB,IAAI/vK,GAC5B,CACA,YAAIgrB,GACF,OAAOxyB,KAAKoG,QAAQosB,QACtB,CACA,QAAIxpB,GACF,OAAOhJ,KAAKoG,QAAQ4C,IACtB,CACA,QAAIA,CAAKA,GACPhJ,KAAKoG,QAAQ4C,KAAOA,CACtB,CACA,QAAIvB,GACF,OAAOzH,KAAKoG,QAAQqB,IACtB,CACA,QAAIA,CAAKA,GACPzH,KAAKoG,QAAQqB,KAAOuvK,GAASvvK,EAC/B,CACA,WAAIpH,GACF,OAAOL,KAAKoG,QAAQ/F,OACtB,CACA,WAAIA,CAAQA,GACVL,KAAKoG,QAAQ/F,QAAUA,CACzB,CACA,WAAIixI,GACF,OAAOtxI,KAAKoG,QAAQkrI,OACtB,CACA,MAAA7rG,GACE,MAAMz/B,EAAShG,KAAKoG,QACpBpG,KAAKw3K,aACLT,GAAY/wK,EACd,CACA,UAAAwxK,GACEx3K,KAAKs3K,YAAYt0G,QACjBhjE,KAAKu3K,eAAev0G,OACtB,CACA,gBAAA2rF,CAAiB8oB,GACf,OAAOL,GAAWK,GAChB,IAAM,CAAC,CACL,YAAYA,IACZ,MAEN,CACA,yBAAAxmB,CAA0BwmB,EAAa1tJ,GACrC,OAAOqtJ,GAAW,GAAGK,gBAA0B1tJ,KAC7C,IAAM,CACJ,CACE,YAAY0tJ,iBAA2B1tJ,IACvC,eAAeA,KAEjB,CACE,YAAY0tJ,IACZ,MAGR,CACA,uBAAA5mB,CAAwB4mB,EAAa9mB,GACnC,OAAOymB,GAAW,GAAGK,KAAe9mB,KAClC,IAAM,CAAC,CACL,YAAY8mB,cAAwB9mB,IACpC,YAAY8mB,IACZ,YAAY9mB,IACZ,MAEN,CACA,eAAAklB,CAAgB97J,GACd,MAAMxa,EAAKwa,EAAOxa,GACZyJ,EAAOhJ,KAAKgJ,KAClB,OAAOouK,GAAW,GAAGpuK,YAAezJ,KAClC,IAAM,CAAC,CACL,WAAWA,OACRwa,EAAO29J,wBAA0B,MAE1C,CACA,aAAAC,CAAcC,EAAWC,GACvB,MAAMP,EAAct3K,KAAKs3K,YACzB,IAAI/gI,EAAQ+gI,EAAYnwK,IAAIywK,GAK5B,OAJKrhI,IAASshI,IACZthI,EAAQ,IAAI/uC,IACZ8vK,EAAY5zK,IAAIk0K,EAAWrhI,IAEtBA,CACT,CACA,eAAAq4G,CAAgBgpB,EAAWE,EAAUD,GACnC,MAAM,QAACx3K,EAAO,KAAE2I,GAAQhJ,KAClBu2C,EAAQv2C,KAAK23K,cAAcC,EAAWC,GACtCzqG,EAAS72B,EAAMpvC,IAAI2wK,GACzB,GAAI1qG,EACF,OAAOA,EAET,MAAMxQ,EAAS,IAAIx5D,IACnB00K,EAASr1K,SAAQtE,IACXy5K,IACFh7G,EAAOv4D,IAAIuzK,GACXz5K,EAAKsE,SAAQ1D,GAAOs4K,GAAWz6G,EAAQg7G,EAAW74K,MAEpDZ,EAAKsE,SAAQ1D,GAAOs4K,GAAWz6G,EAAQv8D,EAAStB,KAChDZ,EAAKsE,SAAQ1D,GAAOs4K,GAAWz6G,EAAQrpC,GAAUvqB,IAAS,CAAC,EAAGjK,KAC9DZ,EAAKsE,SAAQ1D,GAAOs4K,GAAWz6G,EAAQ3pB,GAAUl0C,KACjDZ,EAAKsE,SAAQ1D,GAAOs4K,GAAWz6G,EAAQizE,GAAa9wI,IAAK,IAE3D,MAAM8d,EAAQze,MAAMyJ,KAAK+0D,GAOzB,OANqB,IAAjB//C,EAAM5e,QACR4e,EAAM3a,KAAKxD,OAAOqnB,OAAO,OAEvBoxJ,GAAWzvK,IAAIowK,IACjBvhI,EAAM7yC,IAAIo0K,EAAUj7J,GAEfA,CACT,CACA,iBAAAk7J,GACE,MAAM,QAAC13K,EAAO,KAAE2I,GAAQhJ,KACxB,MAAO,CACLK,EACAkzB,GAAUvqB,IAAS,CAAC,EACpBiqC,GAASm9F,SAASpnI,IAAS,CAAC,EAC5B,CAACA,QACDiqC,GACA48F,GAEJ,CACA,mBAAAihB,CAAoBl0F,EAAQkxE,EAAOzlH,EAASy9E,EAAW,CAAC,KACtD,MAAMtoG,EAAS,CAACorJ,SAAS,IACnB,SAAC7gC,EAAQ,YAAEiwD,GAAeC,GAAYj4K,KAAKu3K,eAAgB36G,EAAQkpC,GACzE,IAAIzlG,EAAU0nH,EACd,GAAImwD,GAAYnwD,EAAU+lB,GAAQ,CAChCtwI,EAAOorJ,SAAU,EACjBvgI,EAAUkwC,EAAWlwC,GAAWA,IAAYA,EAC5C,MAAM8vJ,EAAcn4K,KAAK6uJ,eAAejyF,EAAQv0C,EAAS2vJ,GACzD33K,EAAU65I,GAAenyB,EAAU1/F,EAAS8vJ,EAC9C,CACA,IAAK,MAAM7qF,KAAQwgD,EACjBtwI,EAAO8vF,GAAQjtF,EAAQitF,GAEzB,OAAO9vF,CACT,CACA,cAAAqxJ,CAAejyF,EAAQv0C,EAASy9E,EAAW,CAAC,IAAKs0C,GAC/C,MAAM,SAACryB,GAAYkwD,GAAYj4K,KAAKu3K,eAAgB36G,EAAQkpC,GAC5D,OAAOziF,EAASgF,GACZ6xH,GAAenyB,EAAU1/F,OAAS1Q,EAAWyiI,GAC7CryB,CACN,EAEF,SAASkwD,GAAYG,EAAex7G,EAAQkpC,GAC1C,IAAIvvD,EAAQ6hI,EAAcjxK,IAAIy1D,GACzBrmB,IACHA,EAAQ,IAAI/uC,IACZ4wK,EAAc10K,IAAIk5D,EAAQrmB,IAE5B,MAAMk3D,EAAW3H,EAAS9kG,OAC1B,IAAIosE,EAAS72B,EAAMpvC,IAAIsmG,GACvB,IAAKrgC,EAAQ,CACX,MAAM26C,EAAWsxB,GAAgBz8E,EAAQkpC,GACzC14B,EAAS,CACP26C,WACAiwD,YAAalyE,EAAS93F,QAAOnL,IAAMA,EAAEgB,cAAcsH,SAAS,YAE9DorC,EAAM7yC,IAAI+pG,EAAUrgC,EACtB,CACA,OAAOA,CACT,CACA,MAAMirG,GAAct7K,GAASsmB,EAAStmB,IACjC2B,OAAOiI,oBAAoB5J,GAAOm/D,QAAO,CAACsqF,EAAKznJ,IAAQynJ,GAAOjuF,EAAWx7D,EAAMgC,MAAO,GAC3F,SAASm5K,GAAY5yG,EAAOwoE,GAC1B,MAAM,aAACgN,EAAY,YAAEC,GAAe/K,GAAa1qE,GACjD,IAAK,MAAMgoB,KAAQwgD,EAAO,CACxB,MAAM6M,EAAaG,EAAaxtD,GAC1BstD,EAAYG,EAAYztD,GACxBvwF,GAAS69I,GAAaD,IAAer1E,EAAMgoB,GACjD,GAAKqtD,IAAepiF,EAAWx7D,IAAUs7K,GAAYt7K,KAC/C69I,GAAav8I,EAAQtB,GACzB,OAAO,CAEX,CACA,OAAO,CACT,CAEA,IAAIgD,GAAU,QAEd,MAAMu4K,GAAkB,CAAC,MAAO,SAAU,OAAQ,QAAS,aAC3D,SAASC,GAAqB5tI,EAAUvb,GACtC,MAAoB,QAAbub,GAAmC,WAAbA,IAAiE,IAAvC2tI,GAAgBr9J,QAAQ0vB,IAA6B,MAATvb,CACrG,CACA,SAASopJ,GAAcC,EAAInhF,GACzB,OAAO,SAASx5F,EAAGC,GACjB,OAAOD,EAAE26K,KAAQ16K,EAAE06K,GACf36K,EAAEw5F,GAAMv5F,EAAEu5F,GACVx5F,EAAE26K,GAAM16K,EAAE06K,EAChB,CACF,CACA,SAASC,GAAqBrwJ,GAC5B,MAAMioH,EAAQjoH,EAAQioH,MAChB2X,EAAmB3X,EAAMjwI,QAAQ4vI,UACvCK,EAAMy0B,cAAc,eACpBziK,EAAS2lJ,GAAoBA,EAAiB0wB,WAAY,CAACtwJ,GAAUioH,EACvE,CACA,SAASsoC,GAAoBvwJ,GAC3B,MAAMioH,EAAQjoH,EAAQioH,MAChB2X,EAAmB3X,EAAMjwI,QAAQ4vI,UACvC3tI,EAAS2lJ,GAAoBA,EAAiB4wB,WAAY,CAACxwJ,GAAUioH,EACvE,CACA,SAASwoC,GAAUroI,GASjB,OARIiuG,MAAqC,kBAATjuG,EAC9BA,EAAOtvC,SAASC,eAAeqvC,GACtBA,GAAQA,EAAKxyC,SACtBwyC,EAAOA,EAAK,IAEVA,GAAQA,EAAKmjG,SACfnjG,EAAOA,EAAKmjG,QAEPnjG,CACT,CACA,MAAMsoI,GAAY,CAAC,EACbC,GAAYj6K,IAChB,MAAM60I,EAASklC,GAAU/5K,GACzB,OAAOL,OAAOkL,OAAOmvK,IAAW/qK,QAAQlL,GAAMA,EAAE8wI,SAAWA,IAAQxoG,KAAK,EAE1E,SAAS6tI,GAAgBrsK,EAAKkR,EAAOqwB,GACnC,MAAMhwC,EAAOO,OAAOP,KAAKyO,GACzB,IAAK,MAAM7N,KAAOZ,EAAM,CACtB,MAAM+6K,GAAUn6K,EAChB,GAAIm6K,GAAUp7J,EAAO,CACnB,MAAM/gB,EAAQ6P,EAAI7N,UACX6N,EAAI7N,IACPovC,EAAO,GAAK+qI,EAASp7J,KACvBlR,EAAIssK,EAAS/qI,GAAQpxC,EAEzB,CACF,CACF,CACA,SAASo8K,GAAmB77K,EAAG87K,EAAWC,EAAaC,GACrD,OAAKD,GAA0B,aAAX/7K,EAAE0L,KAGlBswK,EACKF,EAEF97K,EALE,IAMX,CACA,MAAMi8K,GACJ,WAAAv7K,CAAYyyC,EAAM+oI,GAChB,MAAMxzK,EAAShG,KAAKgG,OAAS,IAAIL,GAAO6zK,GAClCC,EAAgBX,GAAUroI,GAC1BipI,EAAgBV,GAASS,GAC/B,GAAIC,EACF,MAAM,IAAIp5K,MACR,4CAA+Co5K,EAAcn6K,GAA7D,kDACgDm6K,EAAc9lC,OAAOr0I,GAAK,oBAG9E,MAAMc,EAAU2F,EAAO6oJ,eAAe7oJ,EAAO+xK,oBAAqB/3K,KAAK6lF,cACvE7lF,KAAKwyB,SAAW,IAAKxsB,EAAOwsB,UAAYuiJ,GAAgB0E,IACxDz5K,KAAKwyB,SAAS0/I,aAAalsK,GAC3B,MAAMqiB,EAAUroB,KAAKwyB,SAASu/I,eAAe0H,EAAep5K,EAAQ+/I,aAC9DxM,EAASvrH,GAAWA,EAAQurH,OAC5B9gH,EAAS8gH,GAAUA,EAAO9gH,OAC1BlX,EAAQg4H,GAAUA,EAAOh4H,MAC/B5b,KAAKT,GAAKkJ,IACVzI,KAAKsuE,IAAMjmD,EACXroB,KAAK4zI,OAASA,EACd5zI,KAAK4b,MAAQA,EACb5b,KAAK8yB,OAASA,EACd9yB,KAAK25K,SAAWt5K,EAChBL,KAAK45K,aAAe55K,KAAKogJ,YACzBpgJ,KAAKiqK,QAAU,GACfjqK,KAAK65K,UAAY,GACjB75K,KAAK+qJ,aAAUpzI,EACf3X,KAAKivK,MAAQ,GACbjvK,KAAKyzI,6BAA0B97H,EAC/B3X,KAAKswJ,eAAY34I,EACjB3X,KAAKy8D,QAAU,GACfz8D,KAAK85K,gBAAaniK,EAClB3X,KAAK+5K,WAAa,CAAC,EACnB/5K,KAAKg6K,0BAAuBriK,EAC5B3X,KAAKi6K,gBAAkB,GACvBj6K,KAAKwxI,OAAS,CAAC,EACfxxI,KAAKk6K,SAAW,IAAIjF,GACpBj1K,KAAK40K,SAAW,CAAC,EACjB50K,KAAKm6K,eAAiB,CAAC,EACvBn6K,KAAKsnG,UAAW,EAChBtnG,KAAKqxJ,yBAAsB15I,EAC3B3X,KAAK2sJ,cAAWh1I,EAChB3X,KAAKo6K,UAAY78C,IAASloD,GAAQr1E,KAAKylC,OAAO4vC,IAAOh1E,EAAQg6K,aAAe,GAC5Er6K,KAAKyyJ,aAAe,GACpBsmB,GAAU/4K,KAAKT,IAAMS,KAChBqoB,GAAYurH,GAIjB8S,GAASH,OAAOvmJ,KAAM,WAAY04K,IAClChyB,GAASH,OAAOvmJ,KAAM,WAAY44K,IAClC54K,KAAKs6K,cACDt6K,KAAKsnG,UACPtnG,KAAKylC,UAPLthC,QAAQzC,MAAM,oEASlB,CACA,eAAI0+I,GACF,MAAO//I,SAAS,YAAC+/I,EAAW,oBAAEjP,GAAoB,MAAEv1H,EAAK,OAAEkX,EAAM,aAAE8mJ,GAAgB55K,KACnF,OAAK+2H,EAAcqpB,GAGfjP,GAAuByoC,EAClBA,EAEF9mJ,EAASlX,EAAQkX,EAAS,KALxBstH,CAMX,CACA,QAAI34I,GACF,OAAOzH,KAAKgG,OAAOyB,IACrB,CACA,QAAIA,CAAKA,GACPzH,KAAKgG,OAAOyB,KAAOA,CACrB,CACA,WAAIpH,GACF,OAAOL,KAAK25K,QACd,CACA,WAAIt5K,CAAQA,GACVL,KAAKgG,OAAO3F,QAAUA,CACxB,CACA,WAAAi6K,GASE,OARAt6K,KAAK+kK,cAAc,cACf/kK,KAAKK,QAAQkxI,WACfvxI,KAAKg0B,SAELusH,GAAYvgJ,KAAMA,KAAKK,QAAQgwI,kBAEjCrwI,KAAKu6K,aACLv6K,KAAK+kK,cAAc,aACZ/kK,IACT,CACA,KAAAgjE,GAEE,OADA2wE,GAAY3zI,KAAK4zI,OAAQ5zI,KAAKsuE,KACvBtuE,IACT,CACA,IAAAw7C,GAEE,OADAkrG,GAASlrG,KAAKx7C,MACPA,IACT,CACA,MAAAg0B,CAAOpY,EAAOkX,GACP4zH,GAASn5G,QAAQvtC,MAGpBA,KAAKw6K,kBAAoB,CAAC5+J,QAAOkX,UAFjC9yB,KAAKy6K,QAAQ7+J,EAAOkX,EAIxB,CACA,OAAA2nJ,CAAQ7+J,EAAOkX,GACb,MAAMzyB,EAAUL,KAAKK,QACfuzI,EAAS5zI,KAAK4zI,OACdwM,EAAc//I,EAAQ8wI,qBAAuBnxI,KAAKogJ,YAClD3/F,EAAUzgD,KAAKwyB,SAASytH,eAAerM,EAAQh4H,EAAOkX,EAAQstH,GAC9Ds6B,EAAWr6K,EAAQgwI,kBAAoBrwI,KAAKwyB,SAAS+9G,sBACrDl7D,EAAOr1E,KAAK4b,MAAQ,SAAW,SACrC5b,KAAK4b,MAAQ6kC,EAAQ7kC,MACrB5b,KAAK8yB,OAAS2tB,EAAQ3tB,OACtB9yB,KAAK45K,aAAe55K,KAAKogJ,YACpBG,GAAYvgJ,KAAM06K,GAAU,KAGjC16K,KAAK+kK,cAAc,SAAU,CAACn9J,KAAM64C,IACpCn+C,EAASjC,EAAQ8sC,SAAU,CAACntC,KAAMygD,GAAUzgD,MACxCA,KAAKsnG,UACHtnG,KAAKo6K,UAAU/kG,IACjBr1E,KAAKo/C,SAGX,CACA,mBAAAu7H,GACE,MAAMt6K,EAAUL,KAAKK,QACfu6K,EAAgBv6K,EAAQmxI,QAAU,CAAC,EACzC38H,EAAK+lK,GAAe,CAACC,EAAazQ,KAChCyQ,EAAYt7K,GAAK6qK,CAAM,GAE3B,CACA,mBAAA0Q,GACE,MAAMz6K,EAAUL,KAAKK,QACf06K,EAAY16K,EAAQmxI,OACpBA,EAASxxI,KAAKwxI,OACd33D,EAAUn7E,OAAOP,KAAKqzI,GAAQt1E,QAAO,CAACtvD,EAAKrN,KAC/CqN,EAAIrN,IAAM,EACHqN,IACN,CAAC,GACJ,IAAIgb,EAAQ,GACRmzJ,IACFnzJ,EAAQA,EAAMhZ,OACZlQ,OAAOP,KAAK48K,GAAWx2K,KAAKhF,IAC1B,MAAM82K,EAAe0E,EAAUx7K,GACzB6vB,EAAOgnJ,GAAc72K,EAAI82K,GACzB2E,EAAoB,MAAT5rJ,EACXmI,EAAwB,MAATnI,EACrB,MAAO,CACL/uB,QAASg2K,EACT4E,UAAWD,EAAW,YAAczjJ,EAAe,SAAW,OAC9D2jJ,MAAOF,EAAW,eAAiBzjJ,EAAe,WAAa,SAChE,MAIP1iB,EAAK+S,GAAQ6oB,IACX,MAAM4lI,EAAe5lI,EAAKpwC,QACpBd,EAAK82K,EAAa92K,GAClB6vB,EAAOgnJ,GAAc72K,EAAI82K,GACzB8E,EAAYjkD,EAAem/C,EAAartK,KAAMynC,EAAKyqI,YAC3BvjK,IAA1B0+J,EAAa1rI,UAA0B4tI,GAAqBlC,EAAa1rI,SAAUvb,KAAUmpJ,GAAqB9nI,EAAKwqI,aACzH5E,EAAa1rI,SAAW8F,EAAKwqI,WAE/BphG,EAAQt6E,IAAM,EACd,IAAIw/C,EAAQ,KACZ,GAAIx/C,KAAMiyI,GAAUA,EAAOjyI,GAAIyJ,OAASmyK,EACtCp8H,EAAQyyF,EAAOjyI,OACV,CACL,MAAM67K,EAAa9oG,GAASu5F,SAASsP,GACrCp8H,EAAQ,IAAIq8H,EAAW,CACrB77K,KACAyJ,KAAMmyK,EACN7sG,IAAKtuE,KAAKsuE,IACVgiE,MAAOtwI,OAETwxI,EAAOzyF,EAAMx/C,IAAMw/C,CACrB,CACAA,EAAM/pB,KAAKqhJ,EAAch2K,EAAQ,IAEnCwU,EAAKglE,GAAS,CAACwhG,EAAY97K,KACpB87K,UACI7pC,EAAOjyI,EAChB,IAEFsV,EAAK28H,GAASzyF,IACZswH,GAAQ/mB,UAAUtoJ,KAAM++C,EAAOA,EAAM1+C,SACrCgvK,GAAQkC,OAAOvxK,KAAM++C,EAAM,GAE/B,CACA,eAAAu8H,GACE,MAAMhyB,EAAWtpJ,KAAK65K,UAChB1nB,EAAUnyJ,KAAKyH,KAAK2oI,SAASnyI,OAC7Bi0J,EAAU5I,EAASrrJ,OAEzB,GADAqrJ,EAASj5G,MAAK,CAACvyC,EAAGC,IAAMD,EAAEkd,MAAQjd,EAAEid,QAChCk3I,EAAUC,EAAS,CACrB,IAAK,IAAIj0J,EAAIi0J,EAASj0J,EAAIg0J,IAAWh0J,EACnC8B,KAAKu7K,oBAAoBr9K,GAE3BorJ,EAASh+H,OAAO6mI,EAASD,EAAUC,EACrC,CACAnyJ,KAAKi6K,gBAAkB3wB,EAAS59I,MAAM,GAAG2kC,KAAKmoI,GAAc,QAAS,SACvE,CACA,2BAAAgD,GACE,MAAO3B,UAAWvwB,EAAU7hJ,MAAM,SAAC2oI,IAAapwI,KAC5CspJ,EAASrrJ,OAASmyI,EAASnyI,eACtB+B,KAAK+qJ,QAEdzB,EAAS7mJ,SAAQ,CAACoK,EAAMmO,KACmC,IAArDo1H,EAASpiI,QAAO+yB,GAAKA,IAAMl0B,EAAKquJ,WAAUj9J,QAC5C+B,KAAKu7K,oBAAoBvgK,EAC3B,GAEJ,CACA,wBAAAygK,GACE,MAAMC,EAAiB,GACjBtrC,EAAWpwI,KAAKyH,KAAK2oI,SAC3B,IAAIlyI,EAAGy5H,EAEP,IADA33H,KAAKw7K,8BACAt9K,EAAI,EAAGy5H,EAAOyY,EAASnyI,OAAQC,EAAIy5H,EAAMz5H,IAAK,CACjD,MAAM6P,EAAUqiI,EAASlyI,GACzB,IAAI2O,EAAO7M,KAAK+tJ,eAAe7vJ,GAC/B,MAAM8K,EAAO+E,EAAQ/E,MAAQhJ,KAAKgG,OAAOgD,KAWzC,GAVI6D,EAAK7D,MAAQ6D,EAAK7D,OAASA,IAC7BhJ,KAAKu7K,oBAAoBr9K,GACzB2O,EAAO7M,KAAK+tJ,eAAe7vJ,IAE7B2O,EAAK7D,KAAOA,EACZ6D,EAAKkkI,UAAYhjI,EAAQgjI,WAAa+kC,GAAa9sK,EAAMhJ,KAAKK,SAC9DwM,EAAKiuB,MAAQ/sB,EAAQ+sB,OAAS,EAC9BjuB,EAAKmO,MAAQ9c,EACb2O,EAAKirB,MAAQ,GAAK/pB,EAAQ+pB,MAC1BjrB,EAAKs7I,QAAUnoJ,KAAKi5J,iBAAiB/6J,GACjC2O,EAAKo8C,WACPp8C,EAAKo8C,WAAW+jG,YAAY9uJ,GAC5B2O,EAAKo8C,WAAW6jG,iBACX,CACL,MAAM6uB,EAAkBrpG,GAASq5F,cAAc3iK,IACzC,mBAAColJ,EAAkB,gBAAEsC,GAAmBz9G,GAASm9F,SAASpnI,GAChEtK,OAAO02B,OAAOumJ,EAAgBh9K,UAAW,CACvC+xJ,gBAAiBp+E,GAASpsE,WAAWwqJ,GACrCtC,mBAAoBA,GAAsB97E,GAASpsE,WAAWkoJ,KAEhEvhJ,EAAKo8C,WAAa,IAAI0yH,EAAgB37K,KAAM9B,GAC5Cw9K,EAAex5K,KAAK2K,EAAKo8C,WAC3B,CACF,CAEA,OADAjpD,KAAKs7K,kBACEI,CACT,CACA,cAAAE,GACE/mK,EAAK7U,KAAKyH,KAAK2oI,UAAU,CAACriI,EAAS8pH,KACjC73H,KAAK+tJ,eAAel2B,GAAc5uE,WAAWpkD,OAAO,GACnD7E,KACL,CACA,KAAA6E,GACE7E,KAAK47K,iBACL57K,KAAK+kK,cAAc,QACrB,CACA,MAAAt/H,CAAO4vC,GACL,MAAMrvE,EAAShG,KAAKgG,OACpBA,EAAOy/B,SACP,MAAMplC,EAAUL,KAAK25K,SAAW3zK,EAAO6oJ,eAAe7oJ,EAAO+xK,oBAAqB/3K,KAAK6lF,cACjFg2F,EAAgB77K,KAAKqxJ,qBAAuBhxJ,EAAQ4vI,UAK1D,GAJAjwI,KAAK87K,gBACL97K,KAAK+7K,sBACL/7K,KAAKg8K,uBACLh8K,KAAKk6K,SAAS9E,cACuD,IAAjEp1K,KAAK+kK,cAAc,eAAgB,CAAC1vF,OAAM5oE,YAAY,IACxD,OAEF,MAAMivK,EAAiB17K,KAAKy7K,2BAC5Bz7K,KAAK+kK,cAAc,wBACnB,IAAI2M,EAAa,EACjB,IAAK,IAAIxzK,EAAI,EAAGy5H,EAAO33H,KAAKyH,KAAK2oI,SAASnyI,OAAQC,EAAIy5H,EAAMz5H,IAAK,CAC/D,MAAM,WAAC+qD,GAAcjpD,KAAK+tJ,eAAe7vJ,GACnC2G,GAASg3K,IAAyD,IAAxCH,EAAezgK,QAAQguC,GACvDA,EAAWolG,sBAAsBxpJ,GACjC6sK,EAAazsK,KAAKiW,KAAK+tC,EAAWinG,iBAAkBwhB,EACtD,CACAA,EAAa1xK,KAAKi8K,YAAc57K,EAAQqvK,OAAO4B,YAAcI,EAAa,EAC1E1xK,KAAKk8K,cAAcxK,GACdmK,GACHhnK,EAAK6mK,GAAiBzyH,IACpBA,EAAWpkD,OAAO,IAGtB7E,KAAKm8K,gBAAgB9mG,GACrBr1E,KAAK+kK,cAAc,cAAe,CAAC1vF,SACnCr1E,KAAKiqK,QAAQ55H,KAAKmoI,GAAc,IAAK,SACrC,MAAM,QAAC/7G,EAAO,WAAEq9G,GAAc95K,KAC1B85K,EACF95K,KAAKo8K,cAActC,GAAY,GACtBr9G,EAAQx+D,QACjB+B,KAAKq8K,mBAAmB5/G,EAASA,GAAS,GAE5Cz8D,KAAKo/C,QACP,CACA,aAAA08H,GACEjnK,EAAK7U,KAAKwxI,QAASzyF,IACjBswH,GAAQmC,UAAUxxK,KAAM++C,EAAM,IAEhC/+C,KAAK26K,sBACL36K,KAAK86K,qBACP,CACA,mBAAAiB,GACE,MAAM17K,EAAUL,KAAKK,QACfi8K,EAAiB,IAAIl5K,IAAI1E,OAAOP,KAAK6B,KAAK+5K,aAC1CwC,EAAY,IAAIn5K,IAAI/C,EAAQoJ,QAC7BuvH,EAAUsjD,EAAgBC,MAAgBv8K,KAAKg6K,uBAAyB35K,EAAQkxI,aACnFvxI,KAAKw8K,eACLx8K,KAAKu6K,aAET,CACA,oBAAAyB,GACE,MAAM,eAAC7B,GAAkBn6K,KACnBy8K,EAAUz8K,KAAK08K,0BAA4B,GACjD,IAAK,MAAM,OAAC9mK,EAAM,MAAEkI,EAAK,MAAEinG,KAAU03D,EAAS,CAC5C,MAAMtuI,EAAkB,oBAAXv4B,GAAgCmvG,EAAQA,EACrDk0D,GAAgBkB,EAAgBr8J,EAAOqwB,EACzC,CACF,CACA,sBAAAuuI,GACE,MAAMjqB,EAAezyJ,KAAKyyJ,aAC1B,IAAKA,IAAiBA,EAAax0J,OACjC,OAEF+B,KAAKyyJ,aAAe,GACpB,MAAMkqB,EAAe38K,KAAKyH,KAAK2oI,SAASnyI,OAClC2+K,EAAWvV,GAAQ,IAAIjkK,IAC3BqvJ,EACGzkJ,QAAOlL,GAAKA,EAAE,KAAOukK,IACrB9iK,KAAI,CAACzB,EAAG5E,IAAMA,EAAI,IAAM4E,EAAEwoB,OAAO,GAAGtqB,KAAK,QAExC67K,EAAYD,EAAQ,GAC1B,IAAK,IAAI1+K,EAAI,EAAGA,EAAIy+K,EAAcz+K,IAChC,IAAK86H,EAAU6jD,EAAWD,EAAQ1+K,IAChC,OAGJ,OAAOE,MAAMyJ,KAAKg1K,GACft4K,KAAIzB,GAAKA,EAAEyL,MAAM,OACjBhK,KAAIzG,IAAK,CAAE8X,OAAQ9X,EAAE,GAAIggB,OAAQhgB,EAAE,GAAIinH,OAAQjnH,EAAE,MACtD,CACA,aAAAo+K,CAAcxK,GACZ,IAA+D,IAA3D1xK,KAAK+kK,cAAc,eAAgB,CAACt4J,YAAY,IAClD,OAEF4iK,GAAQ5pI,OAAOzlC,KAAMA,KAAK4b,MAAO5b,KAAK8yB,OAAQ4+I,GAC9C,MAAMt8B,EAAOp1I,KAAKswJ,UACZwsB,EAAS1nC,EAAKx5H,OAAS,GAAKw5H,EAAKtiH,QAAU,EACjD9yB,KAAKiqK,QAAU,GACfp1J,EAAK7U,KAAKivK,OAAQ7iJ,IACZ0wJ,GAA2B,cAAjB1wJ,EAAIue,WAGdve,EAAIk8H,WACNl8H,EAAIk8H,YAENtoJ,KAAKiqK,QAAQ/nK,QAAQkqB,EAAI69I,WAAU,GAClCjqK,MACHA,KAAKiqK,QAAQxnK,SAAQ,CAACguC,EAAMz1B,KAC1By1B,EAAKssI,KAAO/hK,CAAK,IAEnBhb,KAAK+kK,cAAc,cACrB,CACA,eAAAoX,CAAgB9mG,GACd,IAA6E,IAAzEr1E,KAAK+kK,cAAc,uBAAwB,CAAC1vF,OAAM5oE,YAAY,IAAlE,CAGA,IAAK,IAAIvO,EAAI,EAAGy5H,EAAO33H,KAAKyH,KAAK2oI,SAASnyI,OAAQC,EAAIy5H,IAAQz5H,EAC5D8B,KAAK+tJ,eAAe7vJ,GAAG+qD,WAAWq/F,YAEpC,IAAK,IAAIpqJ,EAAI,EAAGy5H,EAAO33H,KAAKyH,KAAK2oI,SAASnyI,OAAQC,EAAIy5H,IAAQz5H,EAC5D8B,KAAKg9K,eAAe9+K,EAAGq6D,EAAW8c,GAAQA,EAAK,CAACwiD,aAAc35H,IAAMm3E,GAEtEr1E,KAAK+kK,cAAc,sBAAuB,CAAC1vF,QAP3C,CAQF,CACA,cAAA2nG,CAAehiK,EAAOq6D,GACpB,MAAMxoE,EAAO7M,KAAK+tJ,eAAe/yI,GAC3BnP,EAAO,CAACgB,OAAMmO,QAAOq6D,OAAM5oE,YAAY,IACW,IAApDzM,KAAK+kK,cAAc,sBAAuBl5J,KAG9CgB,EAAKo8C,WAAW4/C,QAAQxzB,GACxBxpE,EAAKY,YAAa,EAClBzM,KAAK+kK,cAAc,qBAAsBl5J,GAC3C,CACA,MAAAuzC,IACiE,IAA3Dp/C,KAAK+kK,cAAc,eAAgB,CAACt4J,YAAY,MAGhDi6I,GAASh/I,IAAI1H,MACXA,KAAKsnG,WAAao/C,GAASn5G,QAAQvtC,OACrC0mJ,GAAS5oI,MAAM9d,OAGjBA,KAAKkmJ,OACLwyB,GAAqB,CAACpoC,MAAOtwI,QAEjC,CACA,IAAAkmJ,GACE,IAAIhoJ,EACJ,GAAI8B,KAAKw6K,kBAAmB,CAC1B,MAAM,MAAC5+J,EAAK,OAAEkX,GAAU9yB,KAAKw6K,kBAC7Bx6K,KAAKy6K,QAAQ7+J,EAAOkX,GACpB9yB,KAAKw6K,kBAAoB,IAC3B,CAEA,GADAx6K,KAAKgjE,QACDhjE,KAAK4b,OAAS,GAAK5b,KAAK8yB,QAAU,EACpC,OAEF,IAA6D,IAAzD9yB,KAAK+kK,cAAc,aAAc,CAACt4J,YAAY,IAChD,OAEF,MAAMwwK,EAASj9K,KAAKiqK,QACpB,IAAK/rK,EAAI,EAAGA,EAAI++K,EAAOh/K,QAAUg/K,EAAO/+K,GAAG+iC,GAAK,IAAK/iC,EACnD++K,EAAO/+K,GAAGgoJ,KAAKlmJ,KAAKswJ,WAGtB,IADAtwJ,KAAKk9K,gBACEh/K,EAAI++K,EAAOh/K,SAAUC,EAC1B++K,EAAO/+K,GAAGgoJ,KAAKlmJ,KAAKswJ,WAEtBtwJ,KAAK+kK,cAAc,YACrB,CACA,sBAAAxb,CAAuBF,GACrB,MAAMC,EAAWtpJ,KAAKi6K,gBAChBz8K,EAAS,GACf,IAAIU,EAAGy5H,EACP,IAAKz5H,EAAI,EAAGy5H,EAAO2xB,EAASrrJ,OAAQC,EAAIy5H,IAAQz5H,EAAG,CACjD,MAAM2O,EAAOy8I,EAASprJ,GACjBmrJ,IAAiBx8I,EAAKs7I,SACzB3qJ,EAAO0E,KAAK2K,EAEhB,CACA,OAAOrP,CACT,CACA,4BAAA2sK,GACE,OAAOnqK,KAAKupJ,wBAAuB,EACrC,CACA,aAAA2zB,GACE,IAAqE,IAAjEl9K,KAAK+kK,cAAc,qBAAsB,CAACt4J,YAAY,IACxD,OAEF,MAAM68I,EAAWtpJ,KAAKmqK,+BACtB,IAAK,IAAIjsK,EAAIorJ,EAASrrJ,OAAS,EAAGC,GAAK,IAAKA,EAC1C8B,KAAKm9K,aAAa7zB,EAASprJ,IAE7B8B,KAAK+kK,cAAc,oBACrB,CACA,YAAAoY,CAAatwK,GACX,MAAMyhE,EAAMtuE,KAAKsuE,IACXknE,EAAO3oI,EAAKwjJ,MACZ+sB,GAAW5nC,EAAKv8H,SAChBm8H,EAAOp1I,KAAKswJ,UACZzkJ,EAAO,CACXgB,OACAmO,MAAOnO,EAAKmO,MACZvO,YAAY,IAEwC,IAAlDzM,KAAK+kK,cAAc,oBAAqBl5J,KAGxCuxK,GACF7nC,GAASjnE,EAAK,CACZ1hD,MAAoB,IAAd4oH,EAAK5oH,KAAiB,EAAIwoH,EAAKxoH,KAAO4oH,EAAK5oH,KACjDygF,OAAsB,IAAfmoC,EAAKnoC,MAAkBrtG,KAAK4b,MAAQw5H,EAAK/nC,MAAQmoC,EAAKnoC,MAC7D1gF,KAAkB,IAAb6oH,EAAK7oH,IAAgB,EAAIyoH,EAAKzoH,IAAM6oH,EAAK7oH,IAC9C2oH,QAAwB,IAAhBE,EAAKF,OAAmBt1I,KAAK8yB,OAASsiH,EAAKE,OAASE,EAAKF,SAGrEzoI,EAAKo8C,WAAWi9F,OACZk3B,GACF3nC,GAAWnnE,GAEbziE,EAAKY,YAAa,EAClBzM,KAAK+kK,cAAc,mBAAoBl5J,GACzC,CACA,aAAA+hK,CAAc19H,GACZ,OAAOilG,GAAejlG,EAAOlwC,KAAKswJ,UAAWtwJ,KAAKi8K,YACpD,CACA,yBAAAoB,CAA0B//K,EAAG+3E,EAAMh1E,EAAS48J,GAC1C,MAAMrnJ,EAAS64J,GAAYC,MAAMr5F,GACjC,MAAsB,oBAAXz/D,EACFA,EAAO5V,KAAM1C,EAAG+C,EAAS48J,GAE3B,EACT,CACA,cAAAlP,CAAel2B,GACb,MAAM9pH,EAAU/N,KAAKyH,KAAK2oI,SAASvY,GAC7ByxB,EAAWtpJ,KAAK65K,UACtB,IAAIhtK,EAAOy8I,EAASt7I,QAAO+yB,GAAKA,GAAKA,EAAEm6H,WAAantJ,IAASq9B,MAkB7D,OAjBKv+B,IACHA,EAAO,CACL7D,KAAM,KACNvB,KAAM,GACNsG,QAAS,KACTk7C,WAAY,KACZ6iG,OAAQ,KACRsB,QAAS,KACTE,QAAS,KACTxyH,MAAO/sB,GAAWA,EAAQ+sB,OAAS,EACnC9f,MAAO68G,EACPqjC,SAAUntJ,EACVmwH,QAAS,GACTF,SAAS,GAEXsrB,EAASpnJ,KAAK2K,IAETA,CACT,CACA,UAAAg5E,GACE,OAAO7lF,KAAK2sJ,WAAa3sJ,KAAK2sJ,SAAWxT,GAAc,KAAM,CAAC7I,MAAOtwI,KAAMgJ,KAAM,UACnF,CACA,sBAAAgzJ,GACE,OAAOh8J,KAAKmqK,+BAA+BlsK,MAC7C,CACA,gBAAAg7J,CAAiBphC,GACf,MAAM9pH,EAAU/N,KAAKyH,KAAK2oI,SAASvY,GACnC,IAAK9pH,EACH,OAAO,EAET,MAAMlB,EAAO7M,KAAK+tJ,eAAel2B,GACjC,MAA8B,mBAAhBhrH,EAAKi/I,QAAwBj/I,EAAKi/I,QAAU/9I,EAAQ+9I,MACpE,CACA,oBAAAwxB,CAAqBzlD,EAAcswB,GACjC,MAAMt7I,EAAO7M,KAAK+tJ,eAAel2B,GACjChrH,EAAKi/I,QAAU3D,CACjB,CACA,oBAAA0S,CAAqB7/I,GACnBhb,KAAKm6K,eAAen/J,IAAUhb,KAAKm6K,eAAen/J,EACpD,CACA,iBAAAi8I,CAAkBj8I,GAChB,OAAQhb,KAAKm6K,eAAen/J,EAC9B,CACA,iBAAAuiK,CAAkB1lD,EAAcnsG,EAAWy8H,GACzC,MAAM9yE,EAAO8yE,EAAU,OAAS,OAC1Bt7I,EAAO7M,KAAK+tJ,eAAel2B,GAC3B+tB,EAAQ/4I,EAAKo8C,WAAW+nG,wBAAmBr5I,EAAW09D,GACxD0jD,EAAQrtG,IACV7e,EAAKpF,KAAKikB,GAAWogI,QAAU3D,EAC/BnoJ,KAAKylC,WAELzlC,KAAKs9K,qBAAqBzlD,EAAcswB,GACxCvC,EAAMngH,OAAO54B,EAAM,CAACs7I,YACpBnoJ,KAAKylC,QAAQ6oC,GAAQA,EAAIupD,eAAiBA,EAAexiD,OAAO19D,IAEpE,CACA,IAAAlF,CAAKolH,EAAcnsG,GACjB1rB,KAAKu9K,kBAAkB1lD,EAAcnsG,GAAW,EAClD,CACA,IAAAhZ,CAAKmlH,EAAcnsG,GACjB1rB,KAAKu9K,kBAAkB1lD,EAAcnsG,GAAW,EAClD,CACA,mBAAA6vJ,CAAoB1jD,GAClB,MAAMhrH,EAAO7M,KAAK65K,UAAUhiD,GACxBhrH,GAAQA,EAAKo8C,YACfp8C,EAAKo8C,WAAWilG,kBAEXluJ,KAAK65K,UAAUhiD,EACxB,CACA,KAAA2lD,GACE,IAAIt/K,EAAGy5H,EAGP,IAFA33H,KAAKw7C,OACLkrG,GAASrlJ,OAAOrB,MACX9B,EAAI,EAAGy5H,EAAO33H,KAAKyH,KAAK2oI,SAASnyI,OAAQC,EAAIy5H,IAAQz5H,EACxD8B,KAAKu7K,oBAAoBr9K,EAE7B,CACA,OAAAg3B,GACEl1B,KAAK+kK,cAAc,iBACnB,MAAM,OAACnxB,EAAM,IAAEtlE,GAAOtuE,KACtBA,KAAKw9K,QACLx9K,KAAKgG,OAAOwxK,aACR5jC,IACF5zI,KAAKw8K,eACL7oC,GAAYC,EAAQtlE,GACpBtuE,KAAKwyB,SAASw/I,eAAe1jG,GAC7BtuE,KAAK4zI,OAAS,KACd5zI,KAAKsuE,IAAM,MAEbtuE,KAAK+kK,cAAc,kBACZgU,GAAU/4K,KAAKT,IACtBS,KAAK+kK,cAAc,eACrB,CACA,aAAA0Y,IAAiB5xK,GACf,OAAO7L,KAAK4zI,OAAO8pC,aAAa7xK,EAClC,CACA,UAAA0uK,GACEv6K,KAAK29K,iBACD39K,KAAKK,QAAQkxI,WACfvxI,KAAK49K,uBAEL59K,KAAKsnG,UAAW,CAEpB,CACA,cAAAq2E,GACE,MAAM9gD,EAAY78H,KAAK+5K,WACjBvnJ,EAAWxyB,KAAKwyB,SAChBqrJ,EAAO,CAAC70K,EAAMqhB,KAClBmI,EAAS9nB,iBAAiB1K,KAAMgJ,EAAMqhB,GACtCwyG,EAAU7zH,GAAQqhB,CAAQ,EAEtBA,EAAW,CAAC/sB,EAAGyjC,EAAGC,KACtB1jC,EAAE8nD,QAAUrkB,EACZzjC,EAAE+nD,QAAUrkB,EACZhhC,KAAKo8K,cAAc9+K,EAAE,EAEvBuX,EAAK7U,KAAKK,QAAQoJ,QAAST,GAAS60K,EAAK70K,EAAMqhB,IACjD,CACA,oBAAAuzJ,GACO59K,KAAKg6K,uBACRh6K,KAAKg6K,qBAAuB,CAAC,GAE/B,MAAMn9C,EAAY78H,KAAKg6K,qBACjBxnJ,EAAWxyB,KAAKwyB,SAChBqrJ,EAAO,CAAC70K,EAAMqhB,KAClBmI,EAAS9nB,iBAAiB1K,KAAMgJ,EAAMqhB,GACtCwyG,EAAU7zH,GAAQqhB,CAAQ,EAEtByzJ,EAAU,CAAC90K,EAAMqhB,KACjBwyG,EAAU7zH,KACZwpB,EAAS5nB,oBAAoB5K,KAAMgJ,EAAMqhB,UAClCwyG,EAAU7zH,GACnB,EAEIqhB,EAAW,CAACzO,EAAOkX,KACnB9yB,KAAK4zI,QACP5zI,KAAKg0B,OAAOpY,EAAOkX,EACrB,EAEF,IAAI0pC,EACJ,MAAM8qC,EAAW,KACfw2E,EAAQ,SAAUx2E,GAClBtnG,KAAKsnG,UAAW,EAChBtnG,KAAKg0B,SACL6pJ,EAAK,SAAUxzJ,GACfwzJ,EAAK,SAAUrhH,EAAS,EAE1BA,EAAW,KACTx8D,KAAKsnG,UAAW,EAChBw2E,EAAQ,SAAUzzJ,GAClBrqB,KAAKw9K,QACLx9K,KAAKy6K,QAAQ,EAAG,GAChBoD,EAAK,SAAUv2E,EAAS,EAEtB90E,EAASy/I,WAAWjyK,KAAK4zI,QAC3BtsC,IAEA9qC,GAEJ,CACA,YAAAggH,GACE3nK,EAAK7U,KAAK+5K,YAAY,CAAC1vJ,EAAUrhB,KAC/BhJ,KAAKwyB,SAAS5nB,oBAAoB5K,KAAMgJ,EAAMqhB,EAAS,IAEzDrqB,KAAK+5K,WAAa,CAAC,EACnBllK,EAAK7U,KAAKg6K,sBAAsB,CAAC3vJ,EAAUrhB,KACzChJ,KAAKwyB,SAAS5nB,oBAAoB5K,KAAMgJ,EAAMqhB,EAAS,IAEzDrqB,KAAKg6K,0BAAuBriK,CAC9B,CACA,gBAAAomK,CAAiBn2J,EAAOytD,EAAMh9C,GAC5B,MAAMxgB,EAASwgB,EAAU,MAAQ,SACjC,IAAIxrB,EAAM4jC,EAAMvyC,EAAGy5H,EAKnB,IAJa,YAATtiD,IACFxoE,EAAO7M,KAAK+tJ,eAAenmI,EAAM,GAAGiwG,cACpChrH,EAAKo8C,WAAW,IAAMpxC,EAAS,wBAE5B3Z,EAAI,EAAGy5H,EAAO/vG,EAAM3pB,OAAQC,EAAIy5H,IAAQz5H,EAAG,CAC9CuyC,EAAO7oB,EAAM1pB,GACb,MAAM+qD,EAAaxY,GAAQzwC,KAAK+tJ,eAAet9G,EAAKonF,cAAc5uE,WAC9DA,GACFA,EAAWpxC,EAAS,cAAc44B,EAAK1qC,QAAS0qC,EAAKonF,aAAcpnF,EAAKz1B,MAE5E,CACF,CACA,iBAAAgjK,GACE,OAAOh+K,KAAKy8D,SAAW,EACzB,CACA,iBAAAwhH,CAAkBC,GAChB,MAAMC,EAAan+K,KAAKy8D,SAAW,GAC7BI,EAASqhH,EAAe35K,KAAI,EAAEszH,eAAc78G,YAChD,MAAMnO,EAAO7M,KAAK+tJ,eAAel2B,GACjC,IAAKhrH,EACH,MAAM,IAAIvM,MAAM,6BAA+Bu3H,GAEjD,MAAO,CACLA,eACA9xH,QAAS8G,EAAKpF,KAAKuT,GACnBA,QACD,IAEGgkH,GAAWxH,EAAe36D,EAAQshH,GACpCn/C,IACFh/H,KAAKy8D,QAAUI,EACf78D,KAAK85K,WAAa,KAClB95K,KAAKq8K,mBAAmBx/G,EAAQshH,GAEpC,CACA,aAAApZ,CAAc9qF,EAAMpuE,EAAMmC,GACxB,OAAOhO,KAAKk6K,SAASlvH,OAAOhrD,KAAMi6E,EAAMpuE,EAAMmC,EAChD,CACA,kBAAAquK,CAAmBx/G,EAAQshH,EAAYC,GACrC,MAAMC,EAAer+K,KAAKK,QAAQswI,MAC5B7rG,EAAO,CAAChnC,EAAGC,IAAMD,EAAEkQ,QAAO+yB,IAAMhjC,EAAEiyE,MAAKhvC,GAAKD,EAAE82F,eAAiB72F,EAAE62F,cAAgB92F,EAAE/lB,QAAUgmB,EAAEhmB,UAC/F+sE,EAAcjjD,EAAKq5I,EAAYthH,GAC/BirB,EAAYs2F,EAASvhH,EAAS/3B,EAAK+3B,EAAQshH,GAC7Cp2F,EAAY9pF,QACd+B,KAAK+9K,iBAAiBh2F,EAAas2F,EAAahpG,MAAM,GAEpDyS,EAAU7pF,QAAUogL,EAAahpG,MACnCr1E,KAAK+9K,iBAAiBj2F,EAAWu2F,EAAahpG,MAAM,EAExD,CACA,aAAA+mG,CAAc9+K,EAAG8gL,GACf,MAAMvyK,EAAO,CACXnH,MAAOpH,EACP8gL,SACA3xK,YAAY,EACZ4sK,YAAar5K,KAAK4tK,cAActwK,IAE5BghL,EAAevkK,IAAYA,EAAO1Z,QAAQoJ,QAAUzJ,KAAKK,QAAQoJ,QAAQ0B,SAAS7N,EAAEm2K,OAAOzqK,MACjG,IAA6D,IAAzDhJ,KAAK+kK,cAAc,cAAel5J,EAAMyyK,GAC1C,OAEF,MAAMt/C,EAAUh/H,KAAKu+K,aAAajhL,EAAG8gL,EAAQvyK,EAAKwtK,aAMlD,OALAxtK,EAAKY,YAAa,EAClBzM,KAAK+kK,cAAc,aAAcl5J,EAAMyyK,IACnCt/C,GAAWnzH,EAAKmzH,UAClBh/H,KAAKo/C,SAEAp/C,IACT,CACA,YAAAu+K,CAAajhL,EAAG8gL,EAAQ/E,GACtB,MAAO58G,QAAS0hH,EAAa,GAAE,QAAE99K,GAAWL,KACtCi9J,EAAmBmhB,EACnBvhH,EAAS78D,KAAKw+K,mBAAmBlhL,EAAG6gL,EAAY9E,EAAapc,GAC7Dqc,EAAUrgD,EAAc37H,GACxB87K,EAAYD,GAAmB77K,EAAG0C,KAAK85K,WAAYT,EAAaC,GAClED,IACFr5K,KAAK85K,WAAa,KAClBx3K,EAASjC,EAAQ+wI,QAAS,CAAC9zI,EAAGu/D,EAAQ78D,MAAOA,MACzCs5K,GACFh3K,EAASjC,EAAQqtC,QAAS,CAACpwC,EAAGu/D,EAAQ78D,MAAOA,OAGjD,MAAMg/H,GAAWxH,EAAe36D,EAAQshH,GAMxC,OALIn/C,GAAWo/C,KACbp+K,KAAKy8D,QAAUI,EACf78D,KAAKq8K,mBAAmBx/G,EAAQshH,EAAYC,IAE9Cp+K,KAAK85K,WAAaV,EACXp6C,CACT,CACA,kBAAAw/C,CAAmBlhL,EAAG6gL,EAAY9E,EAAapc,GAC7C,GAAe,aAAX3/J,EAAE0L,KACJ,MAAO,GAET,IAAKqwK,EACH,OAAO8E,EAET,MAAME,EAAer+K,KAAKK,QAAQswI,MAClC,OAAO3wI,KAAKq9K,0BAA0B//K,EAAG+gL,EAAahpG,KAAMgpG,EAAcphB,EAC5E,EAEF,MAAMwhB,GAAoB,IAAM5pK,EAAK0kK,GAAMR,WAAYzoC,GAAUA,EAAM4pC,SAAS9E,eAC1EhuJ,IAAa,EA0CnB,SAASs3J,GAAQpwG,EAAKvoE,EAASqyJ,GAC7B,MAAM,WAACD,EAAU,YAAEwmB,EAAW,EAAE59I,EAAC,EAAEC,EAAC,YAAE63H,EAAW,YAAED,GAAe7yJ,EAClE,IAAI64K,EAAcD,EAAc9lB,EAChCvqF,EAAImmE,YACJnmE,EAAIqmE,IAAI5zG,EAAGC,EAAG63H,EAAaV,EAAaymB,EAAaxmB,EAAWwmB,GAC5DhmB,EAAc+lB,GAChBC,EAAcD,EAAc/lB,EAC5BtqF,EAAIqmE,IAAI5zG,EAAGC,EAAG43H,EAAaR,EAAWwmB,EAAazmB,EAAaymB,GAAa,IAE7EtwG,EAAIqmE,IAAI5zG,EAAGC,EAAG29I,EAAavmB,EAAW9+B,EAAS6+B,EAAa7+B,GAE9DhrD,EAAIsmE,YACJtmE,EAAIknE,MACN,CACA,SAASqpC,GAAgB9hL,GACvB,OAAOo7I,GAAkBp7I,EAAO,CAAC,aAAc,WAAY,aAAc,YAC3E,CACA,SAAS+hL,GAAoBnqC,EAAKikB,EAAaC,EAAakmB,GAC1D,MAAM74J,EAAI24J,GAAgBlqC,EAAIt0I,QAAQ2+K,cAChCC,GAAiBpmB,EAAcD,GAAe,EAC9CsmB,EAAaj6K,KAAKkW,IAAI8jK,EAAeF,EAAanmB,EAAc,GAChEumB,EAAqB37I,IACzB,MAAM47I,GAAiBvmB,EAAc5zJ,KAAKkW,IAAI8jK,EAAez7I,IAAQu7I,EAAa,EAClF,OAAOjjD,GAAYt4F,EAAK,EAAGv+B,KAAKkW,IAAI8jK,EAAeG,GAAe,EAEpE,MAAO,CACLC,WAAYF,EAAkBj5J,EAAEm5J,YAChCC,SAAUH,EAAkBj5J,EAAEo5J,UAC9BvgE,WAAY+c,GAAY51G,EAAE64F,WAAY,EAAGmgE,GACzClgE,SAAU8c,GAAY51G,EAAE84F,SAAU,EAAGkgE,GAEzC,CACA,SAASK,GAAWp8K,EAAGq8K,EAAOz+I,EAAGC,GAC/B,MAAO,CACLD,EAAGA,EAAI59B,EAAI8B,KAAKmrD,IAAIovH,GACpBx+I,EAAGA,EAAI79B,EAAI8B,KAAKkrD,IAAIqvH,GAExB,CACA,SAASC,GAAQnxG,EAAKvoE,EAASomB,EAAQgtI,EAASp7I,EAAK2+I,GACnD,MAAM,EAAC37H,EAAC,EAAEC,EAAGm3H,WAAYr6I,EAAK,YAAE6gK,EAAa/lB,YAAa8mB,GAAU35K,EAC9D8yJ,EAAc5zJ,KAAKiW,IAAInV,EAAQ8yJ,YAAcM,EAAUhtI,EAASwyJ,EAAa,GAC7E/lB,EAAc8mB,EAAS,EAAIA,EAASvmB,EAAUhtI,EAASwyJ,EAAc,EAC3E,IAAIgB,EAAgB,EACpB,MAAMz9C,EAAQnkH,EAAMD,EACpB,GAAIq7I,EAAS,CACX,MAAMymB,EAAuBF,EAAS,EAAIA,EAASvmB,EAAU,EACvD0mB,EAAuBhnB,EAAc,EAAIA,EAAcM,EAAU,EACjE2mB,GAAsBF,EAAuBC,GAAwB,EACrEE,EAAuC,IAAvBD,EAA4B59C,EAAQ49C,GAAuBA,EAAqB3mB,GAAWj3B,EACjHy9C,GAAiBz9C,EAAQ69C,GAAiB,CAC5C,CACA,MAAMC,EAAO/6K,KAAKiW,IAAI,KAAOgnH,EAAQ22B,EAAc1sI,EAAS0d,GAAMgvH,EAC5DonB,GAAe/9C,EAAQ89C,GAAQ,EAC/B7nB,EAAar6I,EAAQmiK,EAAcN,EACnCvnB,EAAWr6I,EAAMkiK,EAAcN,GAC/B,WAACN,EAAU,SAAEC,EAAQ,WAAEvgE,EAAU,SAAEC,GAAY8/D,GAAoB/4K,EAAS6yJ,EAAaC,EAAaT,EAAWD,GACjH+nB,EAA2BrnB,EAAcwmB,EACzCc,EAAyBtnB,EAAcymB,EACvCc,EAA0BjoB,EAAaknB,EAAaa,EACpDG,EAAwBjoB,EAAWknB,EAAWa,EAC9CG,EAA2B1nB,EAAc75C,EACzCwhE,EAAyB3nB,EAAc55C,EACvCwhE,EAA0BroB,EAAap5C,EAAauhE,EACpDG,EAAwBroB,EAAWp5C,EAAWuhE,EAEpD,GADAjyG,EAAImmE,YACAioB,EAAU,CAEZ,GADApuF,EAAIqmE,IAAI5zG,EAAGC,EAAG63H,EAAaunB,EAAyBC,GAChDf,EAAW,EAAG,CAChB,MAAMoB,EAAUnB,GAAWY,EAAwBE,EAAuBt/I,EAAGC,GAC7EstC,EAAIqmE,IAAI+rC,EAAQ3/I,EAAG2/I,EAAQ1/I,EAAGs+I,EAAUe,EAAuBjoB,EAAW9+B,EAC5E,CACA,MAAMqnD,EAAKpB,GAAWgB,EAAwBnoB,EAAUr3H,EAAGC,GAE3D,GADAstC,EAAIwmE,OAAO6rC,EAAG5/I,EAAG4/I,EAAG3/I,GAChBg+E,EAAW,EAAG,CAChB,MAAM0hE,EAAUnB,GAAWgB,EAAwBE,EAAuB1/I,EAAGC,GAC7EstC,EAAIqmE,IAAI+rC,EAAQ3/I,EAAG2/I,EAAQ1/I,EAAGg+E,EAAUo5C,EAAW9+B,EAASmnD,EAAwBx7K,KAAK4kC,GAC3F,CAEA,GADAykC,EAAIqmE,IAAI5zG,EAAGC,EAAG43H,EAAaR,EAAYp5C,EAAW45C,EAAcT,EAAcp5C,EAAa65C,GAAc,GACrG75C,EAAa,EAAG,CAClB,MAAM2hE,EAAUnB,GAAWe,EAA0BE,EAAyBz/I,EAAGC,GACjFstC,EAAIqmE,IAAI+rC,EAAQ3/I,EAAG2/I,EAAQ1/I,EAAG+9E,EAAYyhE,EAA0Bv7K,KAAK4kC,GAAIsuH,EAAa7+B,EAC5F,CACA,MAAMsnD,EAAKrB,GAAWW,EAA0B/nB,EAAYp3H,EAAGC,GAE/D,GADAstC,EAAIwmE,OAAO8rC,EAAG7/I,EAAG6/I,EAAG5/I,GAChBq+I,EAAa,EAAG,CAClB,MAAMqB,EAAUnB,GAAWW,EAA0BE,EAAyBr/I,EAAGC,GACjFstC,EAAIqmE,IAAI+rC,EAAQ3/I,EAAG2/I,EAAQ1/I,EAAGq+I,EAAYlnB,EAAa7+B,EAAS8mD,EAClE,CACF,KAAO,CACL9xG,EAAIumE,OAAO9zG,EAAGC,GACd,MAAM6/I,EAAc57K,KAAKmrD,IAAIgwH,GAA2BvnB,EAAc93H,EAChE+/I,EAAc77K,KAAKkrD,IAAIiwH,GAA2BvnB,EAAc73H,EACtEstC,EAAIwmE,OAAO+rC,EAAaC,GACxB,MAAMC,EAAY97K,KAAKmrD,IAAIiwH,GAAyBxnB,EAAc93H,EAC5DigJ,EAAY/7K,KAAKkrD,IAAIkwH,GAAyBxnB,EAAc73H,EAClEstC,EAAIwmE,OAAOisC,EAAWC,EACxB,CACA1yG,EAAIsmE,WACN,CACA,SAASqsC,GAAQ3yG,EAAKvoE,EAASomB,EAAQgtI,EAASuD,GAC9C,MAAM,YAACwkB,EAAW,WAAE/oB,EAAU,cAAEJ,GAAiBhyJ,EACjD,IAAIqyJ,EAAWryJ,EAAQqyJ,SACvB,GAAI8oB,EAAa,CACfzB,GAAQnxG,EAAKvoE,EAASomB,EAAQgtI,EAAShB,EAAaj/B,EAAKwjC,GACzD,IAAK,IAAIx+J,EAAI,EAAGA,EAAIgjL,IAAehjL,EACjCowE,EAAIwK,OAEDphD,MAAMqgI,KACTK,EAAWD,EAAaJ,EAAgB7+B,EACpC6+B,EAAgB7+B,IAAQ,IAC1Bk/B,GAAYl/B,GAGlB,CAGA,OAFAumD,GAAQnxG,EAAKvoE,EAASomB,EAAQgtI,EAASf,EAAUsE,GACjDpuF,EAAIwK,OACGs/E,CACT,CACA,SAAS+oB,GAAsB7yG,EAAKvoE,EAASq7K,GAC3C,MAAM,EAACrgJ,EAAC,EAAEC,EAAC,WAAEm3H,EAAU,YAAEwmB,EAAW,YAAEuC,GAAen7K,EAC/C8yJ,EAAc5zJ,KAAKiW,IAAInV,EAAQ8yJ,YAAc8lB,EAAa,GAC1D/lB,EAAc7yJ,EAAQ6yJ,YAAc+lB,EAC1C,IAAIzgL,EAMJ,IALIkjL,GACF1C,GAAQpwG,EAAKvoE,EAASoyJ,EAAaj/B,GAErC5qD,EAAImmE,YACJnmE,EAAIqmE,IAAI5zG,EAAGC,EAAG43H,EAAaT,EAAaj/B,EAAKi/B,GAAY,GACpDj6J,EAAI,EAAGA,EAAIgjL,IAAehjL,EAC7BowE,EAAI4mE,SAIN,IAFA5mE,EAAImmE,YACJnmE,EAAIqmE,IAAI5zG,EAAGC,EAAG63H,EAAaV,EAAYA,EAAaj/B,GAC/Ch7H,EAAI,EAAGA,EAAIgjL,IAAehjL,EAC7BowE,EAAI4mE,QAER,CACA,SAASuqB,GAAWnxF,EAAKvoE,EAASomB,EAAQgtI,EAASf,EAAUsE,GAC3D,MAAM,QAACr8J,GAAW0F,GACZ,YAACkvI,EAAW,gBAAEoQ,GAAmBhlJ,EACjC+gL,EAAgC,UAAxB/gL,EAAQi6J,YACjBrlB,IAGDmsC,GACF9yG,EAAImoE,UAA0B,EAAdxB,EAChB3mE,EAAI+yG,SAAWh8B,GAAmB,UAElC/2E,EAAImoE,UAAYxB,EAChB3mE,EAAI+yG,SAAWh8B,GAAmB,SAEhCt/I,EAAQm7K,aACVC,GAAsB7yG,EAAKvoE,EAASq7K,GAElCA,GACF1C,GAAQpwG,EAAKvoE,EAASqyJ,GAExBqnB,GAAQnxG,EAAKvoE,EAASomB,EAAQgtI,EAASf,EAAUsE,GACjDpuF,EAAI4mE,SACN,CAxMAx2I,OAAOyzI,iBAAiBonC,GAAO,CAC7BtmI,SAAU,CACR7rB,cACArqB,MAAOk2C,IAET8lI,UAAW,CACT3xJ,cACArqB,MAAOg8K,IAETxlJ,UAAW,CACTnM,cACArqB,MAAOw2B,IAET++C,SAAU,CACRlrD,cACArqB,MAAOu1E,IAETvyE,QAAS,CACPqnB,cACArqB,MAAOgD,IAETi5K,SAAU,CACR5xJ,cACArqB,MAAOi8K,IAETjwF,SAAU,CACR3hE,cACArqB,MAAO,IAAI6qB,KACT0qD,GAASjuE,OAAOujB,GAChB62J,IAAmB,GAGvB5T,WAAY,CACVzjJ,cACArqB,MAAO,IAAI6qB,KACT0qD,GAASjxE,UAAUumB,GACnB62J,IAAmB,KAqKzB,MAAM6C,WAAmBzyK,GACvB,WAAA7Q,CAAYgpJ,GACV/gJ,QACAjG,KAAKK,aAAUsX,EACf3X,KAAK+3J,mBAAgBpgJ,EACrB3X,KAAKm4J,gBAAaxgJ,EAClB3X,KAAKo4J,cAAWzgJ,EAChB3X,KAAK44J,iBAAcjhJ,EACnB3X,KAAK64J,iBAAclhJ,EACnB3X,KAAK2+K,YAAc,EACnB3+K,KAAKkhL,YAAc,EACfl6B,GACFtoJ,OAAO02B,OAAOp1B,KAAMgnJ,EAExB,CACA,OAAA8mB,CAAQyT,EAAQC,EAAQvkB,GACtB,MAAM/sH,EAAQlwC,KAAKk9J,SAAS,CAAC,IAAK,KAAMD,IAClC,MAAC/hC,EAAK,SAAE5vF,GAAYsvF,EAAkB1qF,EAAO,CAACnP,EAAGwgJ,EAAQvgJ,EAAGwgJ,KAC5D,WAACrpB,EAAU,SAAEC,EAAQ,YAAEQ,EAAW,YAAEC,EAAW,cAAEd,GAAiB/3J,KAAKk9J,SAAS,CACpF,aACA,WACA,cACA,cACA,iBACCD,GACGwkB,EAAUzhL,KAAKK,QAAQ84J,QAAU,EACjCW,EAAiB5iC,EAAe6gC,EAAeK,EAAWD,GAC1DupB,EAAgB5nB,GAAkB5gC,GAAOsC,GAAcN,EAAOi9B,EAAYC,GAC1EupB,EAAe3lD,GAAW1wF,EAAUstH,EAAc6oB,EAAS5oB,EAAc4oB,GAC/E,OAAQC,GAAiBC,CAC3B,CACA,cAAAxT,CAAelR,GACb,MAAM,EAACl8H,EAAC,EAAEC,EAAC,WAAEm3H,EAAU,SAAEC,EAAQ,YAAEQ,EAAW,YAAEC,GAAe74J,KAAKk9J,SAAS,CAC3E,IACA,IACA,aACA,WACA,cACA,cACA,iBACCD,IACG,OAAC9wI,EAAM,QAAEgtI,GAAWn5J,KAAKK,QACzBuhL,GAAazpB,EAAaC,GAAY,EACtCypB,GAAcjpB,EAAcC,EAAcM,EAAUhtI,GAAU,EACpE,MAAO,CACL4U,EAAGA,EAAI97B,KAAKmrD,IAAIwxH,GAAaC,EAC7B7gJ,EAAGA,EAAI/7B,KAAKkrD,IAAIyxH,GAAaC,EAEjC,CACA,eAAA7kB,CAAgBC,GACd,OAAOj9J,KAAKmuK,eAAelR,EAC7B,CACA,IAAA/W,CAAK53E,GACH,MAAM,QAACjuE,EAAO,cAAE03J,GAAiB/3J,KAC3BmsB,GAAU9rB,EAAQ8rB,QAAU,GAAK,EACjCgtI,GAAW94J,EAAQ84J,SAAW,GAAK,EACnCuD,EAAWr8J,EAAQq8J,SAGzB,GAFA18J,KAAK2+K,YAAuC,UAAxBt+K,EAAQi6J,YAA2B,IAAO,EAC9Dt6J,KAAKkhL,YAAcnpB,EAAgB7+B,EAAMj0H,KAAK6S,MAAMigJ,EAAgB7+B,GAAO,EACrD,IAAlB6+B,GAAuB/3J,KAAK44J,YAAc,GAAK54J,KAAK64J,YAAc,EACpE,OAEFvqF,EAAI2kE,OACJ,IAAI6uC,EAAe,EACnB,GAAI31J,EAAQ,CACV21J,EAAe31J,EAAS,EACxB,MAAMy1J,GAAa5hL,KAAKm4J,WAAan4J,KAAKo4J,UAAY,EACtD9pF,EAAI3wC,UAAU14B,KAAKmrD,IAAIwxH,GAAaE,EAAc78K,KAAKkrD,IAAIyxH,GAAaE,GACpE9hL,KAAK+3J,eAAiBluH,IACxBi4I,EAAe31J,EAEnB,CACAmiD,EAAIyoE,UAAY12I,EAAQ6vI,gBACxB5hE,EAAIkoE,YAAcn2I,EAAQ8vI,YAC1B,MAAMioB,EAAW6oB,GAAQ3yG,EAAKtuE,KAAM8hL,EAAc3oB,EAASuD,GAC3D+C,GAAWnxF,EAAKtuE,KAAM8hL,EAAc3oB,EAASf,EAAUsE,GACvDpuF,EAAI+kE,SACN,EAkBF,SAAS7tC,GAASl3B,EAAKjuE,EAASiT,EAAQjT,GACtCiuE,EAAIyzG,QAAU7qD,EAAe5jH,EAAM4xI,eAAgB7kJ,EAAQ6kJ,gBAC3D52E,EAAIs7F,YAAY1yC,EAAe5jH,EAAM6xI,WAAY9kJ,EAAQ8kJ,aACzD72E,EAAIu7F,eAAiB3yC,EAAe5jH,EAAM8xI,iBAAkB/kJ,EAAQ+kJ,kBACpE92E,EAAI+yG,SAAWnqD,EAAe5jH,EAAM+xI,gBAAiBhlJ,EAAQglJ,iBAC7D/2E,EAAImoE,UAAYvf,EAAe5jH,EAAM2hI,YAAa50I,EAAQ40I,aAC1D3mE,EAAIkoE,YAActf,EAAe5jH,EAAM68H,YAAa9vI,EAAQ8vI,YAC9D,CACA,SAAS2E,GAAOxmE,EAAKh/D,EAAUjG,GAC7BilE,EAAIwmE,OAAOzrI,EAAO03B,EAAG13B,EAAO23B,EAC9B,CACA,SAASghJ,GAAc3hL,GACrB,OAAIA,EAAQ4hL,QACHvsC,GAELr1I,EAAQo+I,SAA8C,aAAnCp+I,EAAQm+I,uBACtB3I,GAEFf,EACT,CACA,SAASotC,GAASjyI,EAAQ+yG,EAASzgJ,EAAS,CAAC,GAC3C,MAAMwiH,EAAQ90E,EAAOhyC,QACd6f,MAAOqkK,EAAc,EAAGpkK,IAAKqkK,EAAYr9D,EAAQ,GAAKxiH,GACtDub,MAAOukK,EAActkK,IAAKukK,GAAct/B,EACzCllI,EAAQ7Y,KAAKiW,IAAIinK,EAAaE,GAC9BtkK,EAAM9Y,KAAKkW,IAAIinK,EAAWE,GAC1BC,EAAUJ,EAAcE,GAAgBD,EAAYC,GAAgBF,EAAcG,GAAcF,EAAYE,EAClH,MAAO,CACLv9D,QACAjnG,QACAwhB,KAAM0jH,EAAQ1jH,KACdq4F,KAAM55G,EAAMD,IAAUykK,EAAUx9D,EAAQhnG,EAAMD,EAAQC,EAAMD,EAEhE,CACA,SAAS0kK,GAAYl0G,EAAKkjC,EAAMwxC,EAASzgJ,GACvC,MAAM,OAAC0tC,EAAM,QAAE5vC,GAAWmxG,GACpB,MAACuT,EAAK,MAAEjnG,EAAK,KAAEwhB,EAAI,KAAEq4F,GAAQuqD,GAASjyI,EAAQ+yG,EAASzgJ,GACvDkgL,EAAaT,GAAc3hL,GACjC,IACInC,EAAGgyC,EAAO7gC,GADV,KAAC8+B,GAAO,EAAI,QAAEopF,GAAWh1H,GAAU,CAAC,EAExC,IAAKrE,EAAI,EAAGA,GAAKy5H,IAAQz5H,EACvBgyC,EAAQD,GAAQnyB,GAASy5G,EAAUI,EAAOz5H,EAAIA,IAAM6mH,GAChD70E,EAAMjQ,OAECkO,GACTmgC,EAAIumE,OAAO3kG,EAAMnP,EAAGmP,EAAMlP,GAC1BmN,GAAO,GAEPs0I,EAAWn0G,EAAKj/D,EAAM6gC,EAAOqnF,EAASl3H,EAAQ4hL,SAEhD5yK,EAAO6gC,GAMT,OAJI5Q,IACF4Q,EAAQD,GAAQnyB,GAASy5G,EAAUI,EAAO,IAAM5S,GAChD09D,EAAWn0G,EAAKj/D,EAAM6gC,EAAOqnF,EAASl3H,EAAQ4hL,YAEvC3iJ,CACX,CACA,SAASojJ,GAAgBp0G,EAAKkjC,EAAMwxC,EAASzgJ,GAC3C,MAAM0tC,EAASuhE,EAAKvhE,QACd,MAAC80E,EAAK,MAAEjnG,EAAK,KAAE65G,GAAQuqD,GAASjyI,EAAQ+yG,EAASzgJ,IACjD,KAAC4rC,GAAO,EAAI,QAAEopF,GAAWh1H,GAAU,CAAC,EAC1C,IAEIrE,EAAGgyC,EAAOyyI,EAAOx+H,EAAMC,EAAMw+H,EAF7BC,EAAO,EACPC,EAAS,EAEb,MAAMC,EAAc/nK,IAAW8C,GAASy5G,EAAUI,EAAO38G,EAAQA,IAAU+pG,EACrEi+D,EAAQ,KACR7+H,IAASC,IACXkqB,EAAIwmE,OAAO+tC,EAAMz+H,GACjBkqB,EAAIwmE,OAAO+tC,EAAM1+H,GACjBmqB,EAAIwmE,OAAO+tC,EAAMD,GACnB,EAMF,IAJIz0I,IACF+B,EAAQD,EAAO8yI,EAAW,IAC1Bz0G,EAAIumE,OAAO3kG,EAAMnP,EAAGmP,EAAMlP,IAEvB9iC,EAAI,EAAGA,GAAKy5H,IAAQz5H,EAAG,CAE1B,GADAgyC,EAAQD,EAAO8yI,EAAW7kL,IACtBgyC,EAAMjQ,KACR,SAEF,MAAMc,EAAImP,EAAMnP,EACVC,EAAIkP,EAAMlP,EACViiJ,EAAa,EAAJliJ,EACXkiJ,IAAWN,GACT3hJ,EAAImjB,EACNA,EAAOnjB,EACEA,EAAIojB,IACbA,EAAOpjB,GAET6hJ,GAAQC,EAASD,EAAO9hJ,KAAO+hJ,IAE/BE,IACA10G,EAAIwmE,OAAO/zG,EAAGC,GACd2hJ,EAAQM,EACRH,EAAS,EACT3+H,EAAOC,EAAOpjB,GAEhB4hJ,EAAQ5hJ,CACV,CACAgiJ,GACF,CACA,SAASE,GAAkB1xE,GACzB,MAAMt/E,EAAOs/E,EAAKnxG,QACZ8kJ,EAAajzH,EAAKizH,YAAcjzH,EAAKizH,WAAWlnJ,OAChDklL,GAAe3xE,EAAK2pD,aAAe3pD,EAAKyyC,QAAU/xH,EAAKusH,SAA2C,aAAhCvsH,EAAKssH,yBAA0CtsH,EAAK+vJ,UAAY98B,EACxI,OAAOg+B,EAAcT,GAAkBF,EACzC,CACA,SAASY,GAAwB/iL,GAC/B,OAAIA,EAAQ4hL,QACHhhC,GAEL5gJ,EAAQo+I,SAA8C,aAAnCp+I,EAAQm+I,uBACtB0C,GAEFF,EACT,CACA,SAASqiC,GAAoB/0G,EAAKkjC,EAAM1zF,EAAOinG,GAC7C,IAAIz9E,EAAOkqE,EAAK8xE,MACXh8I,IACHA,EAAOkqE,EAAK8xE,MAAQ,IAAIC,OACpB/xE,EAAKlqE,KAAKA,EAAMxpB,EAAOinG,IACzBz9E,EAAKstG,aAGTpvC,GAASl3B,EAAKkjC,EAAKnxG,SACnBiuE,EAAI4mE,OAAO5tG,EACb,CACA,SAASk8I,GAAiBl1G,EAAKkjC,EAAM1zF,EAAOinG,GAC1C,MAAM,SAAC1rC,EAAQ,QAAEh5E,GAAWmxG,EACtBiyE,EAAgBP,GAAkB1xE,GACxC,IAAK,MAAMwxC,KAAW3pE,EACpBmsB,GAASl3B,EAAKjuE,EAAS2iJ,EAAQ1vI,OAC/Bg7D,EAAImmE,YACAgvC,EAAcn1G,EAAKkjC,EAAMwxC,EAAS,CAACllI,QAAOC,IAAKD,EAAQinG,EAAQ,KACjEz2C,EAAIsmE,YAENtmE,EAAI4mE,QAER,CA5JAosC,GAAW/hL,GAAK,MAChB+hL,GAAWruI,SAAW,CACpBqnH,YAAa,SACbnqB,YAAa,OACbkV,qBAAiB1tI,EACjBqnK,aAAc,EACd/pC,YAAa,EACb9oH,OAAQ,EACRgtI,QAAS,EACTj+B,WAAOvjH,EACP+kJ,UAAU,GAEZ4kB,GAAWjkB,cAAgB,CACzBntB,gBAAiB,mBAgJnB,MAAMwzC,GAA8B,oBAAXH,OACzB,SAASr9B,GAAK53E,EAAKkjC,EAAM1zF,EAAOinG,GAC1B2+D,KAAclyE,EAAKnxG,QAAQ2iJ,QAC7BqgC,GAAoB/0G,EAAKkjC,EAAM1zF,EAAOinG,GAEtCy+D,GAAiBl1G,EAAKkjC,EAAM1zF,EAAOinG,EAEvC,CACA,MAAM4+D,WAAoB90K,GACxB,WAAA7Q,CAAYgpJ,GACV/gJ,QACAjG,KAAKo7J,UAAW,EAChBp7J,KAAKK,aAAUsX,EACf3X,KAAKukJ,YAAS5sI,EACd3X,KAAKikJ,WAAQtsI,EACb3X,KAAKokJ,eAAYzsI,EACjB3X,KAAKsjL,WAAQ3rK,EACb3X,KAAK4jL,aAAUjsK,EACf3X,KAAK6jL,eAAYlsK,EACjB3X,KAAKm7J,YAAa,EAClBn7J,KAAK8jL,gBAAiB,EACtB9jL,KAAK0kJ,mBAAgB/sI,EACjBqvI,GACFtoJ,OAAO02B,OAAOp1B,KAAMgnJ,EAExB,CACA,mBAAA2U,CAAoBrL,EAAWvf,GAC7B,MAAM1wI,EAAUL,KAAKK,QACrB,IAAKA,EAAQo+I,SAA8C,aAAnCp+I,EAAQm+I,0BAA2Cn+I,EAAQ4hL,UAAYjiL,KAAK8jL,eAAgB,CAClH,MAAMxkJ,EAAOj/B,EAAQk+I,SAAWv+I,KAAKikJ,MAAQjkJ,KAAKokJ,UAClD/F,GAA2Br+I,KAAK4jL,QAASvjL,EAASiwJ,EAAWhxH,EAAMyxG,GACnE/wI,KAAK8jL,gBAAiB,CACxB,CACF,CACA,UAAI7zI,CAAOA,GACTjwC,KAAK4jL,QAAU3zI,SACRjwC,KAAK6jL,iBACL7jL,KAAKsjL,MACZtjL,KAAK8jL,gBAAiB,CACxB,CACA,UAAI7zI,GACF,OAAOjwC,KAAK4jL,OACd,CACA,YAAIvqG,GACF,OAAOr5E,KAAK6jL,YAAc7jL,KAAK6jL,UAAY9/B,GAAiB/jJ,KAAMA,KAAKK,QAAQ2iJ,SACjF,CACA,KAAAhmC,GACE,MAAM3jC,EAAWr5E,KAAKq5E,SAChBppC,EAASjwC,KAAKiwC,OACpB,OAAOopC,EAASp7E,QAAUgyC,EAAOopC,EAAS,GAAGv7D,MAC/C,CACA,IAAAk/C,GACE,MAAMqc,EAAWr5E,KAAKq5E,SAChBppC,EAASjwC,KAAKiwC,OACd80E,EAAQ1rC,EAASp7E,OACvB,OAAO8mH,GAAS90E,EAAOopC,EAAS0rC,EAAQ,GAAGhnG,IAC7C,CACA,WAAAgrC,CAAY7Y,EAAO17B,GACjB,MAAMnU,EAAUL,KAAKK,QACftD,EAAQmzC,EAAM17B,GACdy7B,EAASjwC,KAAKiwC,OACdopC,EAAWsqE,GAAe3jJ,KAAM,CAACwU,WAAUsJ,MAAO/gB,EAAOghB,IAAKhhB,IACpE,IAAKs8E,EAASp7E,OACZ,OAEF,MAAMT,EAAS,GACTumL,EAAeX,GAAwB/iL,GAC7C,IAAInC,EAAGy5H,EACP,IAAKz5H,EAAI,EAAGy5H,EAAOt+C,EAASp7E,OAAQC,EAAIy5H,IAAQz5H,EAAG,CACjD,MAAM,MAAC4f,EAAK,IAAEC,GAAOs7D,EAASn7E,GACxBilI,EAAKlzF,EAAOnyB,GACZslH,EAAKnzF,EAAOlyB,GAClB,GAAIolH,IAAOC,EAAI,CACb5lI,EAAO0E,KAAKihI,GACZ,QACF,CACA,MAAMv/H,EAAIqB,KAAKyW,KAAK3e,EAAQomI,EAAG3uH,KAAc4uH,EAAG5uH,GAAY2uH,EAAG3uH,KACzDwvK,EAAeD,EAAa5gD,EAAIC,EAAIx/H,EAAGvD,EAAQ4hL,SACrD+B,EAAaxvK,GAAY07B,EAAM17B,GAC/BhX,EAAO0E,KAAK8hL,EACd,CACA,OAAyB,IAAlBxmL,EAAOS,OAAeT,EAAO,GAAKA,CAC3C,CACA,WAAAglL,CAAYl0G,EAAK00E,EAASzgJ,GACxB,MAAMkhL,EAAgBP,GAAkBljL,MACxC,OAAOyjL,EAAcn1G,EAAKtuE,KAAMgjJ,EAASzgJ,EAC3C,CACA,IAAA+kC,CAAKgnC,EAAKxwD,EAAOinG,GACf,MAAM1rC,EAAWr5E,KAAKq5E,SAChBoqG,EAAgBP,GAAkBljL,MACxC,IAAIs/B,EAAOt/B,KAAKikJ,MAChBnmI,EAAQA,GAAS,EACjBinG,EAAQA,GAAU/kH,KAAKiwC,OAAOhyC,OAAS6f,EACvC,IAAK,MAAMklI,KAAW3pE,EACpB/5C,GAAQmkJ,EAAcn1G,EAAKtuE,KAAMgjJ,EAAS,CAACllI,QAAOC,IAAKD,EAAQinG,EAAQ,IAEzE,QAASzlF,CACX,CACA,IAAA4mH,CAAK53E,EAAKgiF,EAAWxyI,EAAOinG,GAC1B,MAAM1kH,EAAUL,KAAKK,SAAW,CAAC,EAC3B4vC,EAASjwC,KAAKiwC,QAAU,GAC1BA,EAAOhyC,QAAUoC,EAAQ40I,cAC3B3mE,EAAI2kE,OACJiT,GAAK53E,EAAKtuE,KAAM8d,EAAOinG,GACvBz2C,EAAI+kE,WAEFrzI,KAAKo7J,WACPp7J,KAAK8jL,gBAAiB,EACtB9jL,KAAKsjL,WAAQ3rK,EAEjB,EAyBF,SAASssK,GAAUt0K,EAAIyvI,EAAKhwH,EAAM6tI,GAChC,MAAM58J,EAAUsP,EAAGtP,SACZ,CAAC+uB,GAAOryB,GAAS4S,EAAGutJ,SAAS,CAAC9tI,GAAO6tI,GAC5C,OAAQh4J,KAAKyW,IAAI0jI,EAAMriJ,GAASsD,EAAQi0I,OAASj0I,EAAQ6jL,SAC3D,CA3BAP,GAAYpkL,GAAK,OACjBokL,GAAY1wI,SAAW,CACrBiyG,eAAgB,OAChBC,WAAY,GACZC,iBAAkB,EAClBC,gBAAiB,QACjBpQ,YAAa,EACbgJ,iBAAiB,EACjBO,uBAAwB,UACxB1lE,MAAM,EACNylE,UAAU,EACV0jC,SAAS,EACTxjC,QAAS,GAEXklC,GAAYtmB,cAAgB,CAC1BntB,gBAAiB,kBACjBC,YAAa,eAEfwzC,GAAY9zC,YAAc,CACxBwC,aAAa,EACbC,WAAaxwI,GAAkB,eAATA,GAAkC,SAATA,GAQjD,MAAMqiL,WAAqBt1K,GACzB,WAAA7Q,CAAYgpJ,GACV/gJ,QACAjG,KAAKK,aAAUsX,EACf3X,KAAKg8I,YAASrkI,EACd3X,KAAKigC,UAAOtoB,EACZ3X,KAAKw7C,UAAO7jC,EACRqvI,GACFtoJ,OAAO02B,OAAOp1B,KAAMgnJ,EAExB,CACA,OAAA8mB,CAAQsW,EAAQC,EAAQpnB,GACtB,MAAM58J,EAAUL,KAAKK,SACf,EAAC0gC,EAAC,EAAEC,GAAKhhC,KAAKk9J,SAAS,CAAC,IAAK,KAAMD,GACzC,OAASh4J,KAAKC,IAAIk/K,EAASrjJ,EAAG,GAAK97B,KAAKC,IAAIm/K,EAASrjJ,EAAG,GAAM/7B,KAAKC,IAAI7E,EAAQ6jL,UAAY7jL,EAAQi0I,OAAQ,EAC7G,CACA,QAAAgwC,CAASF,EAAQnnB,GACf,OAAOgnB,GAAUjkL,KAAMokL,EAAQ,IAAKnnB,EACtC,CACA,QAAAsnB,CAASF,EAAQpnB,GACf,OAAOgnB,GAAUjkL,KAAMqkL,EAAQ,IAAKpnB,EACtC,CACA,cAAAkR,CAAelR,GACb,MAAM,EAACl8H,EAAC,EAAEC,GAAKhhC,KAAKk9J,SAAS,CAAC,IAAK,KAAMD,GACzC,MAAO,CAACl8H,IAAGC,IACb,CACA,IAAAp5B,CAAKvH,GACHA,EAAUA,GAAWL,KAAKK,SAAW,CAAC,EACtC,IAAIi0I,EAASj0I,EAAQi0I,QAAU,EAC/BA,EAASrvI,KAAKiW,IAAIo5H,EAAQA,GAAUj0I,EAAQmkL,aAAe,GAC3D,MAAMvvC,EAAcX,GAAUj0I,EAAQ40I,aAAe,EACrD,OAAgC,GAAxBX,EAASW,EACnB,CACA,IAAAiR,CAAK53E,EAAK8mE,GACR,MAAM/0I,EAAUL,KAAKK,QACjBL,KAAKigC,MAAQ5/B,EAAQi0I,OAAS,KAAQa,GAAen1I,KAAMo1I,EAAMp1I,KAAK4H,KAAKvH,GAAW,KAG1FiuE,EAAIkoE,YAAcn2I,EAAQ8vI,YAC1B7hE,EAAImoE,UAAYp2I,EAAQ40I,YACxB3mE,EAAIyoE,UAAY12I,EAAQ6vI,gBACxB6D,GAAUzlE,EAAKjuE,EAASL,KAAK+gC,EAAG/gC,KAAKghC,GACvC,CACA,QAAAssI,GACE,MAAMjtK,EAAUL,KAAKK,SAAW,CAAC,EACjC,OAAOA,EAAQi0I,OAASj0I,EAAQ6jL,SAClC,EAiBF,SAASO,GAAaC,EAAKznB,GACzB,MAAM,EAACl8H,EAAC,EAAEC,EAAC,KAAEqF,EAAI,MAAEzqB,EAAK,OAAEkX,GAAU4xJ,EAAIxnB,SAAS,CAAC,IAAK,IAAK,OAAQ,QAAS,UAAWD,GACxF,IAAIrwI,EAAMygF,EAAO1gF,EAAK2oH,EAAQqvC,EAc9B,OAbID,EAAIzvB,YACN0vB,EAAO7xJ,EAAS,EAChBlG,EAAO3nB,KAAKkW,IAAI4lB,EAAGsF,GACnBgnE,EAAQpoG,KAAKiW,IAAI6lB,EAAGsF,GACpB1Z,EAAMqU,EAAI2jJ,EACVrvC,EAASt0G,EAAI2jJ,IAEbA,EAAO/oK,EAAQ,EACfgR,EAAOmU,EAAI4jJ,EACXt3E,EAAQtsE,EAAI4jJ,EACZh4J,EAAM1nB,KAAKkW,IAAI6lB,EAAGqF,GAClBivG,EAASrwI,KAAKiW,IAAI8lB,EAAGqF,IAEhB,CAACzZ,OAAMD,MAAK0gF,QAAOioC,SAC5B,CACA,SAASsvC,GAAY3kJ,EAAMljC,EAAOoe,EAAKD,GACrC,OAAO+kB,EAAO,EAAI67F,GAAY/+H,EAAOoe,EAAKD,EAC5C,CACA,SAAS2pK,GAAiBH,EAAKI,EAAMC,GACnC,MAAMhoL,EAAQ2nL,EAAIrkL,QAAQ40I,YACpBh1G,EAAOykJ,EAAItvB,cACXlvI,EAAIoyH,GAAOv7I,GACjB,MAAO,CACL6G,EAAGghL,GAAY3kJ,EAAKtT,IAAKzG,EAAEyG,IAAK,EAAGo4J,GACnC5hL,EAAGyhL,GAAY3kJ,EAAKotE,MAAOnnF,EAAEmnF,MAAO,EAAGy3E,GACvC/mL,EAAG6mL,GAAY3kJ,EAAKq1G,OAAQpvH,EAAEovH,OAAQ,EAAGyvC,GACzChiL,EAAG6hL,GAAY3kJ,EAAKrT,KAAM1G,EAAE0G,KAAM,EAAGk4J,GAEzC,CACA,SAASE,GAAkBN,EAAKI,EAAMC,GACpC,MAAM,mBAAC1vB,GAAsBqvB,EAAIxnB,SAAS,CAAC,uBACrCngK,EAAQ2nL,EAAIrkL,QAAQ2+K,aACpB94J,EAAIqyH,GAAcx7I,GAClBkoL,EAAOhgL,KAAKkW,IAAI2pK,EAAMC,GACtB9kJ,EAAOykJ,EAAItvB,cACX8vB,EAAe7vB,GAAsBhyI,EAAStmB,GACpD,MAAO,CACL66I,QAASgtC,IAAaM,GAAgBjlJ,EAAKtT,KAAOsT,EAAKrT,KAAM1G,EAAE0xH,QAAS,EAAGqtC,GAC3EltC,SAAU6sC,IAAaM,GAAgBjlJ,EAAKtT,KAAOsT,EAAKotE,MAAOnnF,EAAE6xH,SAAU,EAAGktC,GAC9EptC,WAAY+sC,IAAaM,GAAgBjlJ,EAAKq1G,QAAUr1G,EAAKrT,KAAM1G,EAAE2xH,WAAY,EAAGotC,GACpFntC,YAAa8sC,IAAaM,GAAgBjlJ,EAAKq1G,QAAUr1G,EAAKotE,MAAOnnF,EAAE4xH,YAAa,EAAGmtC,GAE3F,CACA,SAASE,GAAcT,GACrB,MAAMzhC,EAASwhC,GAAaC,GACtB9oK,EAAQqnI,EAAO51C,MAAQ41C,EAAOr2H,KAC9BkG,EAASmwH,EAAO3N,OAAS2N,EAAOt2H,IAChC8uI,EAASopB,GAAiBH,EAAK9oK,EAAQ,EAAGkX,EAAS,GACnDwhH,EAAS0wC,GAAkBN,EAAK9oK,EAAQ,EAAGkX,EAAS,GAC1D,MAAO,CACLsyJ,MAAO,CACLrkJ,EAAGkiH,EAAOr2H,KACVoU,EAAGiiH,EAAOt2H,IACV61G,EAAG5mH,EACHjZ,EAAGmwB,EACHwhH,UAEF8sC,MAAO,CACLrgJ,EAAGkiH,EAAOr2H,KAAO6uI,EAAO14J,EACxBi+B,EAAGiiH,EAAOt2H,IAAM8uI,EAAO73J,EACvB4+H,EAAG5mH,EAAQ6/I,EAAO14J,EAAI04J,EAAOt4J,EAC7BR,EAAGmwB,EAAS2oI,EAAO73J,EAAI63J,EAAO19J,EAC9Bu2I,OAAQ,CACNsD,QAAS3yI,KAAKiW,IAAI,EAAGo5H,EAAOsD,QAAU3yI,KAAKiW,IAAIugJ,EAAO73J,EAAG63J,EAAO14J,IAChEg1I,SAAU9yI,KAAKiW,IAAI,EAAGo5H,EAAOyD,SAAW9yI,KAAKiW,IAAIugJ,EAAO73J,EAAG63J,EAAOt4J,IAClE00I,WAAY5yI,KAAKiW,IAAI,EAAGo5H,EAAOuD,WAAa5yI,KAAKiW,IAAIugJ,EAAO19J,EAAG09J,EAAO14J,IACtE+0I,YAAa7yI,KAAKiW,IAAI,EAAGo5H,EAAOwD,YAAc7yI,KAAKiW,IAAIugJ,EAAO19J,EAAG09J,EAAOt4J,MAIhF,CACA,SAAS2qK,GAAQ4W,EAAK3jJ,EAAGC,EAAGi8H,GAC1B,MAAMooB,EAAc,OAANtkJ,EACRukJ,EAAc,OAANtkJ,EACRukJ,EAAWF,GAASC,EACpBriC,EAASyhC,IAAQa,GAAYd,GAAaC,EAAKznB,GACrD,OAAOha,IACHoiC,GAASrpD,GAAWj7F,EAAGkiH,EAAOr2H,KAAMq2H,EAAO51C,UAC3Ci4E,GAAStpD,GAAWh7F,EAAGiiH,EAAOt2H,IAAKs2H,EAAO3N,QAChD,CACA,SAASkwC,GAAUlxC,GACjB,OAAOA,EAAOsD,SAAWtD,EAAOyD,UAAYzD,EAAOuD,YAAcvD,EAAOwD,WAC1E,CACA,SAAS2tC,GAAkBn3G,EAAK0mE,GAC9B1mE,EAAI0mE,KAAKA,EAAKj0G,EAAGi0G,EAAKh0G,EAAGg0G,EAAKxS,EAAGwS,EAAKryI,EACxC,CACA,SAAS+iL,GAAY1wC,EAAMptF,EAAQ+9H,EAAU,CAAC,GAC5C,MAAM5kJ,EAAIi0G,EAAKj0G,IAAM4kJ,EAAQ5kJ,GAAK6mB,EAAS,EACrC5mB,EAAIg0G,EAAKh0G,IAAM2kJ,EAAQ3kJ,GAAK4mB,EAAS,EACrC46E,GAAKwS,EAAKj0G,EAAIi0G,EAAKxS,IAAMmjD,EAAQ5kJ,EAAI4kJ,EAAQnjD,EAAI56E,EAAS,GAAK7mB,EAC/Dp+B,GAAKqyI,EAAKh0G,EAAIg0G,EAAKryI,IAAMgjL,EAAQ3kJ,EAAI2kJ,EAAQhjL,EAAIilD,EAAS,GAAK5mB,EACrE,MAAO,CACLD,EAAGi0G,EAAKj0G,EAAIA,EACZC,EAAGg0G,EAAKh0G,EAAIA,EACZwhG,EAAGwS,EAAKxS,EAAIA,EACZ7/H,EAAGqyI,EAAKryI,EAAIA,EACZ2xI,OAAQU,EAAKV,OAEjB,CApHA6vC,GAAa5kL,GAAK,QAClB4kL,GAAalxI,SAAW,CACtBgiG,YAAa,EACbivC,UAAW,EACX3pB,iBAAkB,EAClBiqB,YAAa,EACbpwC,WAAY,SACZE,OAAQ,EACRD,SAAU,GAEZ8vC,GAAa9mB,cAAgB,CAC3BntB,gBAAiB,kBACjBC,YAAa,eAyGf,MAAMy1C,WAAmB/2K,GACvB,WAAA7Q,CAAYgpJ,GACV/gJ,QACAjG,KAAKK,aAAUsX,EACf3X,KAAKi1J,gBAAat9I,EAClB3X,KAAKqmC,UAAO1uB,EACZ3X,KAAK4b,WAAQjE,EACb3X,KAAK8yB,YAASnb,EACd3X,KAAK41J,mBAAgBj+I,EACjBqvI,GACFtoJ,OAAO02B,OAAOp1B,KAAMgnJ,EAExB,CACA,IAAAd,CAAK53E,GACH,MAAM,cAACsnF,EAAev1J,SAAS,YAAC8vI,EAAW,gBAAED,IAAoBlwI,MAC3D,MAACohL,EAAK,MAAEgE,GAASD,GAAcnlL,MAC/B6lL,EAAcL,GAAUJ,EAAM9wC,QAAUqD,GAAqB8tC,GACnEn3G,EAAI2kE,OACAmyC,EAAM5iD,IAAM4+C,EAAM5+C,GAAK4iD,EAAMziL,IAAMy+K,EAAMz+K,IAC3C2rE,EAAImmE,YACJoxC,EAAYv3G,EAAKo3G,GAAYN,EAAOxvB,EAAewrB,IACnD9yG,EAAIknE,OACJqwC,EAAYv3G,EAAKo3G,GAAYtE,GAAQxrB,EAAewvB,IACpD92G,EAAIyoE,UAAY5G,EAChB7hE,EAAIwK,KAAK,YAEXxK,EAAImmE,YACJoxC,EAAYv3G,EAAKo3G,GAAYtE,EAAOxrB,IACpCtnF,EAAIyoE,UAAY7G,EAChB5hE,EAAIwK,OACJxK,EAAI+kE,SACN,CACA,OAAAy6B,CAAQsW,EAAQC,EAAQpnB,GACtB,OAAO6Q,GAAQ9tK,KAAMokL,EAAQC,EAAQpnB,EACvC,CACA,QAAAqnB,CAASF,EAAQnnB,GACf,OAAO6Q,GAAQ9tK,KAAMokL,EAAQ,KAAMnnB,EACrC,CACA,QAAAsnB,CAASF,EAAQpnB,GACf,OAAO6Q,GAAQ9tK,KAAM,KAAMqkL,EAAQpnB,EACrC,CACA,cAAAkR,CAAelR,GACb,MAAM,EAACl8H,EAAC,EAAEC,EAAC,KAAEqF,EAAI,WAAE4uH,GAAcj1J,KAAKk9J,SAAS,CAAC,IAAK,IAAK,OAAQ,cAAeD,GACjF,MAAO,CACLl8H,EAAGk0H,GAAcl0H,EAAIsF,GAAQ,EAAItF,EACjCC,EAAGi0H,EAAaj0H,GAAKA,EAAIqF,GAAQ,EAErC,CACA,QAAAinI,CAASl+I,GACP,MAAgB,MAATA,EAAepvB,KAAK4b,MAAQ,EAAI5b,KAAK8yB,OAAS,CACvD,EAEF8yJ,GAAWrmL,GAAK,MAChBqmL,GAAW3yI,SAAW,CACpBmiH,cAAe,QACfngB,YAAa,EACb+pC,aAAc,EACdppB,cAAe,OACfxhB,gBAAYz8H,GAEdiuK,GAAWvoB,cAAgB,CACzBntB,gBAAiB,kBACjBC,YAAa,eAGf,IAAI,GAAwBzxI,OAAOqyJ,OAAO,CAC1C/qI,UAAW,KACXs7J,WAAYA,GACZqC,YAAaA,GACbQ,aAAcA,GACdyB,WAAYA,KAGZ,SAASE,GAAer+K,EAAMqW,EAAOinG,EAAO4qD,EAAgBtvK,GAC1D,MAAM0lL,EAAU1lL,EAAQ0lL,SAAWpW,EACnC,GAAIoW,GAAWhhE,EACb,OAAOt9G,EAAKiE,MAAMoS,EAAOA,EAAQinG,GAEnC,MAAMihE,EAAY,GACZC,GAAelhE,EAAQ,IAAMghE,EAAU,GAC7C,IAAIG,EAAe,EACnB,MAAMhsE,EAAWp8F,EAAQinG,EAAQ,EACjC,IACI7mH,EAAGioL,EAAcC,EAAShxC,EAAMixC,EADhCvoL,EAAIggB,EAGR,IADAkoK,EAAUE,KAAkBz+K,EAAK3J,GAC5BI,EAAI,EAAGA,EAAI6nL,EAAU,EAAG7nL,IAAK,CAChC,IAEI4sB,EAFA+3J,EAAO,EACPyD,EAAO,EAEX,MAAMC,EAAgBthL,KAAK6S,OAAO5Z,EAAI,GAAK+nL,GAAe,EAAInoK,EACxD0oK,EAAcvhL,KAAKkW,IAAIlW,KAAK6S,OAAO5Z,EAAI,GAAK+nL,GAAe,EAAGlhE,GAASjnG,EACvE2oK,EAAiBD,EAAcD,EACrC,IAAKz7J,EAAIy7J,EAAez7J,EAAI07J,EAAa17J,IACvC+3J,GAAQp7K,EAAKqjB,GAAGiW,EAChBulJ,GAAQ7+K,EAAKqjB,GAAGkW,EAElB6hJ,GAAQ4D,EACRH,GAAQG,EACR,MAAMC,EAAYzhL,KAAK6S,MAAM5Z,EAAI+nL,GAAe,EAAInoK,EAC9C6oK,EAAU1hL,KAAKkW,IAAIlW,KAAK6S,OAAO5Z,EAAI,GAAK+nL,GAAe,EAAGlhE,GAASjnG,GAClEijB,EAAYC,EAAG4lJ,GAAWn/K,EAAK3J,GAEtC,IADAsoL,EAAUhxC,GAAQ,EACbtqH,EAAI47J,EAAW57J,EAAI67J,EAAS77J,IAC/BsqH,EAAO,GAAMnwI,KAAKyW,KACfmrK,EAAUhE,IAASp7K,EAAKqjB,GAAGkW,EAAI4lJ,IAC/BC,EAAUp/K,EAAKqjB,GAAGiW,IAAMulJ,EAAOM,IAE9BxxC,EAAOgxC,IACTA,EAAUhxC,EACV+wC,EAAe1+K,EAAKqjB,GACpBu7J,EAAQv7J,GAGZk7J,EAAUE,KAAkBC,EAC5BroL,EAAIuoL,CACN,CAEA,OADAL,EAAUE,KAAkBz+K,EAAKyyG,GAC1B8rE,CACT,CACA,SAASc,GAAiBr/K,EAAMqW,EAAOinG,EAAO4qD,GAC5C,IAEIzxK,EAAGgyC,EAAOnP,EAAGC,EAAG2hJ,EAAO76H,EAAUD,EAAUk/H,EAAY5iI,EAAMC,EAF7Dy+H,EAAO,EACPC,EAAS,EAEb,MAAMkD,EAAY,GACZ9rE,EAAWp8F,EAAQinG,EAAQ,EAC3BiiE,EAAOv/K,EAAKqW,GAAOijB,EACnBkmJ,EAAOx/K,EAAKyyG,GAAUn5E,EACtB4pE,EAAKs8E,EAAOD,EAClB,IAAK9oL,EAAI4f,EAAO5f,EAAI4f,EAAQinG,IAAS7mH,EAAG,CACtCgyC,EAAQzoC,EAAKvJ,GACb6iC,GAAKmP,EAAMnP,EAAIimJ,GAAQr8E,EAAKglE,EAC5B3uI,EAAIkP,EAAMlP,EACV,MAAMiiJ,EAAa,EAAJliJ,EACf,GAAIkiJ,IAAWN,EACT3hJ,EAAImjB,GACNA,EAAOnjB,EACP8mB,EAAW5pD,GACF8iC,EAAIojB,IACbA,EAAOpjB,EACP6mB,EAAW3pD,GAEb2kL,GAAQC,EAASD,EAAO3yI,EAAMnP,KAAO+hJ,MAChC,CACL,MAAMnlI,EAAYz/C,EAAI,EACtB,IAAK64H,EAAcjvE,KAAcivE,EAAclvE,GAAW,CACxD,MAAMq/H,EAAqBjiL,KAAKkW,IAAI2sC,EAAUD,GACxCs/H,EAAqBliL,KAAKiW,IAAI4sC,EAAUD,GAC1Cq/H,IAAuBH,GAAcG,IAAuBvpI,GAC9DqoI,EAAU9jL,KAAK,IACVuF,EAAKy/K,GACRnmJ,EAAG8hJ,IAGHsE,IAAuBJ,GAAcI,IAAuBxpI,GAC9DqoI,EAAU9jL,KAAK,IACVuF,EAAK0/K,GACRpmJ,EAAG8hJ,GAGT,CACI3kL,EAAI,GAAKy/C,IAAcopI,GACzBf,EAAU9jL,KAAKuF,EAAKk2C,IAEtBqoI,EAAU9jL,KAAKguC,GACfyyI,EAAQM,EACRH,EAAS,EACT3+H,EAAOC,EAAOpjB,EACd8mB,EAAWD,EAAWk/H,EAAa7oL,CACrC,CACF,CACA,OAAO8nL,CACT,CACA,SAASoB,GAAsBr5K,GAC7B,GAAIA,EAAQotJ,WAAY,CACtB,MAAM1zJ,EAAOsG,EAAQq+I,aACdr+I,EAAQotJ,kBACRptJ,EAAQq+I,MACf1tJ,OAAOqO,eAAegB,EAAS,OAAQ,CAAChR,MAAO0K,GACjD,CACF,CACA,SAAS4/K,GAAmB/2C,GAC1BA,EAAM7oI,KAAK2oI,SAAS3tI,SAASsL,IAC3Bq5K,GAAsBr5K,EAAQ,GAElC,CACA,SAASu5K,GAA0Cz6K,EAAMojC,GACvD,MAAM8tF,EAAa9tF,EAAOhyC,OAC1B,IACI8mH,EADAjnG,EAAQ,EAEZ,MAAM,OAACmgH,GAAUpxH,GACX,IAACsO,EAAG,IAAED,EAAG,WAAEijH,EAAU,WAAEC,GAAcH,EAAOI,gBASlD,OARIF,IACFrgH,EAAQg+G,GAAYS,GAAatsF,EAAQguF,EAAO7uG,KAAMjU,GAAKmhH,GAAI,EAAGyB,EAAa,IAG/EhZ,EADEqZ,EACMtC,GAAYS,GAAatsF,EAAQguF,EAAO7uG,KAAMlU,GAAKmhH,GAAK,EAAGv+G,EAAOigH,GAAcjgH,EAEhFigH,EAAajgH,EAEhB,CAACA,QAAOinG,QACjB,CACA,IAAIwiE,GAAoB,CACtBhoL,GAAI,aACJ0zC,SAAU,CACRu0I,UAAW,UACXnvJ,SAAS,GAEXovJ,qBAAsB,CAACn3C,EAAOzkI,EAAMxL,KAClC,IAAKA,EAAQg4B,QAEX,YADAgvJ,GAAmB/2C,GAGrB,MAAMq/B,EAAiBr/B,EAAM10H,MAC7B00H,EAAM7oI,KAAK2oI,SAAS3tI,SAAQ,CAACsL,EAAS8pH,KACpC,MAAM,MAACu0B,EAAK,UAAErb,GAAahjI,EACrBlB,EAAOyjI,EAAMyd,eAAel2B,GAC5BpwH,EAAO2kJ,GAASr+I,EAAQtG,KAC9B,GAAsD,MAAlDzK,GAAQ,CAAC+zI,EAAWT,EAAMjwI,QAAQ0wI,YACpC,OAEF,IAAKlkI,EAAKo8C,WAAWyjG,mBACnB,OAEF,MAAMg7B,EAAQp3C,EAAMkB,OAAO3kI,EAAKugJ,SAChC,GAAmB,WAAfs6B,EAAM1+K,MAAoC,SAAf0+K,EAAM1+K,KACnC,OAEF,GAAIsnI,EAAMjwI,QAAQgxI,QAChB,OAEF,IAAI,MAACvzH,EAAK,MAAEinG,GAASuiE,GAA0Cz6K,EAAMpF,GACrE,MAAMq8B,EAAYzjC,EAAQyjC,WAAa,EAAI6rI,EAC3C,GAAI5qD,GAASjhF,EAEX,YADAsjJ,GAAsBr5K,GAiBxB,IAAIi4K,EACJ,OAfIjvD,EAAcq1B,KAChBr+I,EAAQq+I,MAAQ3kJ,SACTsG,EAAQtG,KACf/I,OAAOqO,eAAegB,EAAS,OAAQ,CACrCf,cAAc,EACdoa,YAAY,EACZjgB,IAAK,WACH,OAAOnH,KAAKm7J,UACd,EACAz3J,IAAK,SAASR,GACZlD,KAAKosJ,MAAQlpJ,CACf,KAII7C,EAAQmnL,WAChB,IAAK,OACHxB,EAAYF,GAAer+K,EAAMqW,EAAOinG,EAAO4qD,EAAgBtvK,GAC/D,MACF,IAAK,UACH2lL,EAAYc,GAAiBr/K,EAAMqW,EAAOinG,EAAO4qD,GACjD,MACF,QACE,MAAM,IAAIrvK,MAAM,qCAAqCD,EAAQmnL,cAE/Dz5K,EAAQotJ,WAAa6qB,CAAS,GAC9B,EAEJ,OAAA9wJ,CAAQo7G,GACN+2C,GAAmB/2C,EACrB,GAGF,SAASuzC,GAAUryE,EAAMnoG,EAAQmL,GAC/B,MAAM6kE,EAAWm4B,EAAKn4B,SAChBppC,EAASuhE,EAAKvhE,OACd03I,EAAUt+K,EAAO4mC,OACjB4oF,EAAQ,GACd,IAAK,MAAMmqB,KAAW3pE,EAAU,CAC9B,IAAI,MAACv7D,EAAK,IAAEC,GAAOilI,EACnBjlI,EAAM6pK,GAAgB9pK,EAAOC,EAAKkyB,GAClC,MAAMgzG,EAAS4kC,GAAWrzK,EAAUy7B,EAAOnyB,GAAQmyB,EAAOlyB,GAAMilI,EAAQ1jH,MACxE,IAAKj2B,EAAOgwE,SAAU,CACpBw/C,EAAM32H,KAAK,CACT3D,OAAQykJ,EACR35I,OAAQ45I,EACRnlI,MAAOmyB,EAAOnyB,GACdC,IAAKkyB,EAAOlyB,KAEd,QACF,CACA,MAAM+pK,EAAiBnkC,GAAet6I,EAAQ45I,GAC9C,IAAK,MAAM8kC,KAAOD,EAAgB,CAChC,MAAME,EAAYH,GAAWrzK,EAAUmzK,EAAQI,EAAIjqK,OAAQ6pK,EAAQI,EAAIhqK,KAAMgqK,EAAIzoJ,MAC3E2oJ,EAAc7kC,GAAcJ,EAAS/yG,EAAQ+3I,GACnD,IAAK,MAAME,KAAcD,EACvBpvD,EAAM32H,KAAK,CACT3D,OAAQ2pL,EACR7+K,OAAQ0+K,EACRjqK,MAAO,CACL,CAACtJ,GAAW2zK,GAASllC,EAAQ+kC,EAAW,QAAS/iL,KAAKiW,MAExD6C,IAAK,CACH,CAACvJ,GAAW2zK,GAASllC,EAAQ+kC,EAAW,MAAO/iL,KAAKkW,OAI5D,CACF,CACA,OAAO09G,CACT,CACA,SAASgvD,GAAWrzK,EAAUwoG,EAAOhgD,EAAM19B,GACzC,GAAIA,EACF,OAEF,IAAIxhB,EAAQk/F,EAAMxoG,GACduJ,EAAMi/C,EAAKxoD,GAKf,MAJiB,UAAbA,IACFsJ,EAAQy9G,EAAgBz9G,GACxBC,EAAMw9G,EAAgBx9G,IAEjB,CAACvJ,WAAUsJ,QAAOC,MAC3B,CACA,SAASqqK,GAAoBC,EAAU72E,GACrC,MAAM,EAACzwE,EAAI,KAAI,EAAEC,EAAI,MAAQqnJ,GAAY,CAAC,EACpCC,EAAa92E,EAAKvhE,OAClBA,EAAS,GAaf,OAZAuhE,EAAKn4B,SAAS52E,SAAQ,EAAEqb,QAAOC,UAC7BA,EAAM6pK,GAAgB9pK,EAAOC,EAAKuqK,GAClC,MAAMtrE,EAAQsrE,EAAWxqK,GACnBk/C,EAAOsrH,EAAWvqK,GACd,OAANijB,GACFiP,EAAO/tC,KAAK,CAAC6+B,EAAGi8E,EAAMj8E,EAAGC,MACzBiP,EAAO/tC,KAAK,CAAC6+B,EAAGi8B,EAAKj8B,EAAGC,OACT,OAAND,IACTkP,EAAO/tC,KAAK,CAAC6+B,IAAGC,EAAGg8E,EAAMh8E,IACzBiP,EAAO/tC,KAAK,CAAC6+B,IAAGC,EAAGg8B,EAAKh8B,IAC1B,IAEKiP,CACT,CACA,SAAS23I,GAAgB9pK,EAAOC,EAAKkyB,GACnC,KAAMlyB,EAAMD,EAAOC,IAAO,CACxB,MAAMmyB,EAAQD,EAAOlyB,GACrB,IAAK2Z,MAAMwY,EAAMnP,KAAOrJ,MAAMwY,EAAMlP,GAClC,KAEJ,CACA,OAAOjjB,CACT,CACA,SAASoqK,GAASrqL,EAAGC,EAAGuvF,EAAMrrF,GAC5B,OAAInE,GAAKC,EACAkE,EAAGnE,EAAEwvF,GAAOvvF,EAAEuvF,IAEhBxvF,EAAIA,EAAEwvF,GAAQvvF,EAAIA,EAAEuvF,GAAQ,CACrC,CAEA,SAASi7F,GAAoBF,EAAU72E,GACrC,IAAIvhE,EAAS,GACTg0G,GAAQ,EAOZ,OANI5lJ,EAAQgqL,IACVpkC,GAAQ,EACRh0G,EAASo4I,GAETp4I,EAASm4I,GAAoBC,EAAU72E,GAElCvhE,EAAOhyC,OAAS,IAAI0lL,GAAY,CACrC1zI,SACA5vC,QAAS,CAACo+I,QAAS,GACnBwF,QACAG,UAAWH,IACR,IACP,CACA,SAASukC,GAAiBjqL,GACxB,OAAOA,IAA0B,IAAhBA,EAAOu6E,IAC1B,CAEA,SAAS2vG,GAAepwD,EAASr9G,EAAO0tK,GACtC,MAAMnqL,EAAS85H,EAAQr9G,GACvB,IAAI89D,EAAOv6E,EAAOu6E,KAClB,MAAM6vG,EAAU,CAAC3tK,GACjB,IAAI3R,EACJ,IAAKq/K,EACH,OAAO5vG,EAET,OAAgB,IAATA,IAA6C,IAA3B6vG,EAAQ1tK,QAAQ69D,GAAc,CACrD,IAAKk+C,EAAel+C,GAClB,OAAOA,EAGT,GADAzvE,EAASgvH,EAAQv/C,IACZzvE,EACH,OAAO,EAET,GAAIA,EAAO8+I,QACT,OAAOrvE,EAET6vG,EAAQzmL,KAAK42E,GACbA,EAAOzvE,EAAOyvE,IAChB,CACA,OAAO,CACT,CACA,SAAS8vG,GAAYp3E,EAAMx2F,EAAO+pG,GAChC,MAAMjsC,EAAO+vG,GAAgBr3E,GAC7B,GAAInuF,EAASy1D,GACX,OAAOphD,MAAMohD,EAAK/7E,QAAiB+7E,EAErC,IAAIzvE,EAASgP,WAAWygE,GACxB,OAAIk+C,EAAe3tH,IAAWpE,KAAK6S,MAAMzO,KAAYA,EAC5Cy/K,GAAkBhwG,EAAK,GAAI99D,EAAO3R,EAAQ07G,GAE5C,CAAC,SAAU,QAAS,MAAO,QAAS,SAAS9pG,QAAQ69D,IAAS,GAAKA,CAC5E,CACA,SAASgwG,GAAkBC,EAAS/tK,EAAO3R,EAAQ07G,GAIjD,MAHgB,MAAZgkE,GAA+B,MAAZA,IACrB1/K,EAAS2R,EAAQ3R,KAEfA,IAAW2R,GAAS3R,EAAS,GAAKA,GAAU07G,IAGzC17G,CACT,CACA,SAAS2/K,GAAgBlwG,EAAM/5B,GAC7B,IAAIy0F,EAAQ,KAUZ,MATa,UAAT16D,EACF06D,EAAQz0F,EAAMu2F,OACI,QAATx8D,EACT06D,EAAQz0F,EAAMpyB,IACLtJ,EAASy1D,GAClB06D,EAAQz0F,EAAMu/E,iBAAiBxlD,EAAK/7E,OAC3BgiD,EAAMk3G,eACfziB,EAAQz0F,EAAMk3G,gBAETziB,CACT,CACA,SAASy1C,GAAgBnwG,EAAM/5B,EAAOs1G,GACpC,IAAIt3J,EAUJ,OAREA,EADW,UAAT+7E,EACMu7E,EACU,QAATv7E,EACD/5B,EAAM1+C,QAAQk3H,QAAUx4E,EAAM5jC,IAAM4jC,EAAM7jC,IACzCmI,EAASy1D,GACVA,EAAK/7E,MAELgiD,EAAM0oH,eAET1qK,CACT,CACA,SAAS8rL,GAAgBr3E,GACvB,MAAMnxG,EAAUmxG,EAAKnxG,QACf6oL,EAAa7oL,EAAQy4E,KAC3B,IAAIA,EAAOo+C,EAAegyD,GAAcA,EAAW7/K,OAAQ6/K,GAI3D,YAHavxK,IAATmhE,IACFA,IAASz4E,EAAQ6vI,kBAEN,IAATp3D,GAA2B,OAATA,KAGT,IAATA,EACK,SAEFA,EACT,CAEA,SAASqwG,GAAgB5qL,GACvB,MAAM,MAACwgD,EAAK,MAAE/jC,EAAK,KAAEw2F,GAAQjzG,EACvB0xC,EAAS,GACTopC,EAAWm4B,EAAKn4B,SAChB+vG,EAAe53E,EAAKvhE,OACpBo5I,EAAaC,GAAcvqI,EAAO/jC,GACxCquK,EAAWnnL,KAAKqmL,GAAoB,CAACxnJ,EAAG,KAAMC,EAAG+d,EAAMu2F,QAAS9jC,IAChE,IAAK,IAAItzG,EAAI,EAAGA,EAAIm7E,EAASp7E,OAAQC,IAAK,CACxC,MAAM8kJ,EAAU3pE,EAASn7E,GACzB,IAAK,IAAI4sB,EAAIk4H,EAAQllI,MAAOgN,GAAKk4H,EAAQjlI,IAAK+M,IAC5Cy+J,GAAet5I,EAAQm5I,EAAat+J,GAAIu+J,EAE5C,CACA,OAAO,IAAI1F,GAAY,CAAC1zI,SAAQ5vC,QAAS,CAAC,GAC5C,CACA,SAASipL,GAAcvqI,EAAO/jC,GAC5B,MAAMwuK,EAAQ,GACRvmB,EAAQlkH,EAAM6rG,wBAAwB,QAC5C,IAAK,IAAI1sJ,EAAI,EAAGA,EAAI+kK,EAAMhlK,OAAQC,IAAK,CACrC,MAAM2O,EAAOo2J,EAAM/kK,GACnB,GAAI2O,EAAKmO,QAAUA,EACjB,MAEGnO,EAAKi/I,QACR09B,EAAM9+J,QAAQ7d,EAAKkB,QAEvB,CACA,OAAOy7K,CACT,CACA,SAASD,GAAet5I,EAAQw5I,EAAaJ,GAC3C,MAAMK,EAAY,GAClB,IAAK,IAAI5+J,EAAI,EAAGA,EAAIu+J,EAAWprL,OAAQ6sB,IAAK,CAC1C,MAAM0mF,EAAO63E,EAAWv+J,IAClB,MAACkyF,EAAK,KAAEhgD,EAAI,MAAE9sB,GAASy5I,GAAUn4E,EAAMi4E,EAAa,KAC1D,MAAKv5I,GAAU8sE,GAAShgD,GAGxB,GAAIggD,EACF0sE,EAAUh/J,QAAQwlB,QAGlB,GADAD,EAAO/tC,KAAKguC,IACP8sB,EACH,KAGN,CACA/sB,EAAO/tC,QAAQwnL,EACjB,CACA,SAASC,GAAUn4E,EAAMi4E,EAAaj1K,GACpC,MAAM07B,EAAQshE,EAAKzoD,YAAY0gI,EAAaj1K,GAC5C,IAAK07B,EACH,MAAO,CAAC,EAEV,MAAM05I,EAAa15I,EAAM17B,GACnB6kE,EAAWm4B,EAAKn4B,SAChBivG,EAAa92E,EAAKvhE,OACxB,IAAI+sE,GAAQ,EACRhgD,GAAO,EACX,IAAK,IAAI9+D,EAAI,EAAGA,EAAIm7E,EAASp7E,OAAQC,IAAK,CACxC,MAAM8kJ,EAAU3pE,EAASn7E,GACnB2rL,EAAavB,EAAWtlC,EAAQllI,OAAOtJ,GACvCs1K,EAAYxB,EAAWtlC,EAAQjlI,KAAKvJ,GAC1C,GAAIwnH,GAAW4tD,EAAYC,EAAYC,GAAY,CACjD9sE,EAAQ4sE,IAAeC,EACvB7sH,EAAO4sH,IAAeE,EACtB,KACF,CACF,CACA,MAAO,CAAC9sE,QAAOhgD,OAAM9sB,QACvB,CAEA,MAAM65I,GACJ,WAAA/rL,CAAYk0B,GACVlyB,KAAK+gC,EAAI7O,EAAK6O,EACd/gC,KAAKghC,EAAI9O,EAAK8O,EACdhhC,KAAKs0I,OAASpiH,EAAKoiH,MACrB,CACA,WAAAkuC,CAAYl0G,EAAK20E,EAAQ/wH,GACvB,MAAM,EAAC6O,EAAC,EAAEC,EAAC,OAAEszG,GAAUt0I,KAGvB,OAFAijJ,EAASA,GAAU,CAACnlI,MAAO,EAAGC,IAAKm7G,GACnC5qD,EAAIqmE,IAAI5zG,EAAGC,EAAGszG,EAAQ2O,EAAOllI,IAAKklI,EAAOnlI,OAAO,IACxCoU,EAAK+wH,MACf,CACA,WAAAl6F,CAAY7Y,GACV,MAAM,EAACnP,EAAC,EAAEC,EAAC,OAAEszG,GAAUt0I,KACjBk7H,EAAQhrF,EAAMgrF,MACpB,MAAO,CACLn6F,EAAGA,EAAI97B,KAAKmrD,IAAI8qE,GAASoZ,EACzBtzG,EAAGA,EAAI/7B,KAAKkrD,IAAI+qE,GAASoZ,EACzBpZ,QAEJ,EAGF,SAASye,GAAWp7I,GAClB,MAAM,MAAC+xI,EAAK,KAAEx3D,EAAI,KAAE04B,GAAQjzG,EAC5B,GAAIy4H,EAAel+C,GACjB,OAAOkxG,GAAe15C,EAAOx3D,GAE/B,GAAa,UAATA,EACF,OAAOqwG,GAAgB5qL,GAEzB,GAAa,UAATu6E,EACF,OAAO,EAET,MAAMuvG,EAAW4B,GAAgB1rL,GACjC,OAAI8pL,aAAoB0B,GACf1B,EAEFE,GAAoBF,EAAU72E,EACvC,CACA,SAASw4E,GAAe15C,EAAOt1H,GAC7B,MAAMnO,EAAOyjI,EAAMyd,eAAe/yI,GAC5BmtI,EAAUt7I,GAAQyjI,EAAM2oB,iBAAiBj+I,GAC/C,OAAOmtI,EAAUt7I,EAAKkB,QAAU,IAClC,CACA,SAASk8K,GAAgB1rL,GACvB,MAAMwgD,EAAQxgD,EAAOwgD,OAAS,CAAC,EAC/B,OAAIA,EAAMg+G,yBACDmtB,GAAwB3rL,GAE1B4rL,GAAsB5rL,EAC/B,CACA,SAAS4rL,GAAsB5rL,GAC7B,MAAM,MAACwgD,EAAQ,CAAC,EAAC,KAAE+5B,GAAQv6E,EACrBi1I,EAAQw1C,GAAgBlwG,EAAM/5B,GACpC,GAAIi4E,EAAewc,GAAQ,CACzB,MAAMyhB,EAAal2G,EAAMxnB,eACzB,MAAO,CACLwJ,EAAGk0H,EAAazhB,EAAQ,KACxBxyG,EAAGi0H,EAAa,KAAOzhB,EAE3B,CACA,OAAO,IACT,CACA,SAAS02C,GAAwB3rL,GAC/B,MAAM,MAACwgD,EAAK,KAAE+5B,GAAQv6E,EAChB8B,EAAU0+C,EAAM1+C,QAChBpC,EAAS8gD,EAAMqwG,YAAYnxJ,OAC3B6f,EAAQzd,EAAQk3H,QAAUx4E,EAAM7jC,IAAM6jC,EAAM5jC,IAC5Cpe,EAAQksL,GAAgBnwG,EAAM/5B,EAAOjhC,GACrCzU,EAAS,GACf,GAAIhJ,EAAQs3J,KAAK+E,SAAU,CACzB,MAAMzrG,EAASlS,EAAMg+G,yBAAyB,EAAGj/I,GACjD,OAAO,IAAIisK,GAAU,CACnBhpJ,EAAGkwB,EAAOlwB,EACVC,EAAGiwB,EAAOjwB,EACVszG,OAAQv1F,EAAMy9G,8BAA8Bz/J,IAEhD,CACA,IAAK,IAAImB,EAAI,EAAGA,EAAID,IAAUC,EAC5BmL,EAAOnH,KAAK68C,EAAMg+G,yBAAyB7+J,EAAGnB,IAEhD,OAAOsM,CACT,CAEA,SAAS+gL,GAAU97G,EAAK/vE,EAAQ62I,GAC9B,MAAM/rI,EAASswI,GAAWp7I,IACpB,KAACizG,EAAI,MAAEzyD,EAAK,KAAE3vB,GAAQ7wB,EACtB8rL,EAAW74E,EAAKnxG,QAChB6oL,EAAamB,EAASvxG,KACtBg2D,EAAQu7C,EAASn6C,iBACjB,MAACo6C,EAAQx7C,EAAK,MAAE06C,EAAQ16C,GAASo6C,GAAc,CAAC,EAClD7/K,GAAUmoG,EAAKvhE,OAAOhyC,SACxBs3I,GAASjnE,EAAK8mE,GACdm1C,GAAOj8G,EAAK,CAACkjC,OAAMnoG,SAAQihL,QAAOd,QAAOp0C,OAAMr2F,QAAO3vB,SACtDqmH,GAAWnnE,GAEf,CACA,SAASi8G,GAAOj8G,EAAK04E,GACnB,MAAM,KAACx1C,EAAI,OAAEnoG,EAAM,MAAEihL,EAAK,MAAEd,EAAK,KAAEp0C,EAAI,MAAEr2F,GAASioG,EAC5CxyI,EAAWg9F,EAAKyyC,MAAQ,QAAU+C,EAAI53H,KAC5Ck/C,EAAI2kE,OACa,MAAbz+H,GAAoBg1K,IAAUc,IAChCE,GAAal8G,EAAKjlE,EAAQ+rI,EAAKzoH,KAC/BmsD,GAAKxK,EAAK,CAACkjC,OAAMnoG,SAAQylI,MAAOw7C,EAAOvrI,QAAOvqC,aAC9C85D,EAAI+kE,UACJ/kE,EAAI2kE,OACJu3C,GAAal8G,EAAKjlE,EAAQ+rI,EAAKE,SAEjCx8D,GAAKxK,EAAK,CAACkjC,OAAMnoG,SAAQylI,MAAO06C,EAAOzqI,QAAOvqC,aAC9C85D,EAAI+kE,SACN,CACA,SAASm3C,GAAal8G,EAAKjlE,EAAQohL,GACjC,MAAM,SAACpxG,EAAQ,OAAEppC,GAAU5mC,EAC3B,IAAI2zG,GAAQ,EACR0tE,GAAW,EACfp8G,EAAImmE,YACJ,IAAK,MAAMuO,KAAW3pE,EAAU,CAC9B,MAAM,MAACv7D,EAAK,IAAEC,GAAOilI,EACf3G,EAAapsG,EAAOnyB,GACpB49I,EAAYzrH,EAAO23I,GAAgB9pK,EAAOC,EAAKkyB,IACjD+sE,GACF1uC,EAAIumE,OAAOwH,EAAWt7G,EAAGs7G,EAAWr7G,GACpCg8E,GAAQ,IAER1uC,EAAIwmE,OAAOuH,EAAWt7G,EAAG0pJ,GACzBn8G,EAAIwmE,OAAOuH,EAAWt7G,EAAGs7G,EAAWr7G,IAEtC0pJ,IAAarhL,EAAOm5K,YAAYl0G,EAAK00E,EAAS,CAAC70G,KAAMu8I,IACjDA,EACFp8G,EAAIsmE,YAEJtmE,EAAIwmE,OAAO4mB,EAAU36H,EAAG0pJ,EAE5B,CACAn8G,EAAIwmE,OAAOzrI,EAAO2zG,QAAQj8E,EAAG0pJ,GAC7Bn8G,EAAIsmE,YACJtmE,EAAIknE,MACN,CACA,SAAS18D,GAAKxK,EAAK04E,GACjB,MAAM,KAACx1C,EAAI,OAAEnoG,EAAM,SAAEmL,EAAQ,MAAEs6H,EAAK,MAAE/vF,GAASioG,EACzC3tE,EAAWwqG,GAAUryE,EAAMnoG,EAAQmL,GACzC,IAAK,MAAOjW,OAAQuF,EAAKuF,OAAQ0+K,EAAG,MAAEjqK,EAAK,IAAEC,KAAQs7D,EAAU,CAC7D,MAAO/lE,OAAO,gBAAC48H,EAAkBpB,GAAS,CAAC,GAAKhrI,EAC1C6mL,GAAsB,IAAXthL,EACjBilE,EAAI2kE,OACJ3kE,EAAIyoE,UAAY7G,EAChB06C,GAAWt8G,EAAKvvB,EAAO4rI,GAAY9C,GAAWrzK,EAAUsJ,EAAOC,IAC/DuwD,EAAImmE,YACJ,MAAMi2C,IAAal5E,EAAKgxE,YAAYl0G,EAAKxqE,GACzC,IAAIw7B,EACJ,GAAIqrJ,EAAU,CACRD,EACFp8G,EAAIsmE,YAEJi2C,GAAmBv8G,EAAKjlE,EAAQ0U,EAAKvJ,GAEvC,MAAMs2K,IAAezhL,EAAOm5K,YAAYl0G,EAAKy5G,EAAK,CAAC55I,KAAMu8I,EAAUnzD,SAAS,IAC5Ej4F,EAAOorJ,GAAYI,EACdxrJ,GACHurJ,GAAmBv8G,EAAKjlE,EAAQyU,EAAOtJ,EAE3C,CACA85D,EAAIsmE,YACJtmE,EAAIwK,KAAKx5C,EAAO,UAAY,WAC5BgvC,EAAI+kE,SACN,CACF,CACA,SAASu3C,GAAWt8G,EAAKvvB,EAAOkkG,GAC9B,MAAM,IAACt2H,EAAG,OAAE2oH,GAAUv2F,EAAMuxF,MAAMggB,WAC5B,SAAC97I,EAAQ,MAAEsJ,EAAK,IAAEC,GAAOklI,GAAU,CAAC,EACzB,MAAbzuI,IACF85D,EAAImmE,YACJnmE,EAAI0mE,KAAKl3H,EAAO6O,EAAK5O,EAAMD,EAAOw3H,EAAS3oH,GAC3C2hD,EAAIknE,OAER,CACA,SAASq1C,GAAmBv8G,EAAKjlE,EAAQ6mC,EAAO17B,GAC9C,MAAMu2K,EAAoB1hL,EAAO0/C,YAAY7Y,EAAO17B,GAChDu2K,GACFz8G,EAAIwmE,OAAOi2C,EAAkBhqJ,EAAGgqJ,EAAkB/pJ,EAEtD,CAEA,IAAIhmB,GAAQ,CACVzb,GAAI,SACJ,mBAAAyrL,CAAoB16C,EAAO26C,EAAO5qL,GAChC,MAAM0kH,GAASurB,EAAM7oI,KAAK2oI,UAAY,IAAInyI,OACpCo6H,EAAU,GAChB,IAAIxrH,EAAM3O,EAAGszG,EAAMjzG,EACnB,IAAKL,EAAI,EAAGA,EAAI6mH,IAAS7mH,EACvB2O,EAAOyjI,EAAMyd,eAAe7vJ,GAC5BszG,EAAO3kG,EAAKkB,QACZxP,EAAS,KACLizG,GAAQA,EAAKnxG,SAAWmxG,aAAgBmyE,KAC1CplL,EAAS,CACP4pJ,QAAS7X,EAAM2oB,iBAAiB/6J,GAChC8c,MAAO9c,EACP46E,KAAM8vG,GAAYp3E,EAAMtzG,EAAG6mH,GAC3BurB,QACAlhH,KAAMviB,EAAKo8C,WAAW5oD,QAAQ0wI,UAC9BhyF,MAAOlyC,EAAK69I,OACZl5C,SAGJ3kG,EAAKq+K,QAAU3sL,EACf85H,EAAQn2H,KAAK3D,GAEf,IAAKL,EAAI,EAAGA,EAAI6mH,IAAS7mH,EACvBK,EAAS85H,EAAQn6H,GACZK,IAA0B,IAAhBA,EAAOu6E,OAGtBv6E,EAAOu6E,KAAO2vG,GAAepwD,EAASn6H,EAAGmC,EAAQqoL,WAErD,EACA,UAAAyC,CAAW76C,EAAO26C,EAAO5qL,GACvB,MAAM6lJ,EAA4B,eAArB7lJ,EAAQ+qL,SACf9hC,EAAWhZ,EAAM65B,+BACjB/0B,EAAO9E,EAAMggB,UACnB,IAAK,IAAIpyJ,EAAIorJ,EAASrrJ,OAAS,EAAGC,GAAK,IAAKA,EAAG,CAC7C,MAAMK,EAAS+qJ,EAASprJ,GAAGgtL,QACtB3sL,IAGLA,EAAOizG,KAAKmqD,oBAAoBvmB,EAAM72I,EAAO6wB,MACzC82H,GAAQ3nJ,EAAOu6E,MACjBsxG,GAAU95C,EAAMhiE,IAAK/vE,EAAQ62I,GAEjC,CACF,EACA,kBAAAi2C,CAAmB/6C,EAAO26C,EAAO5qL,GAC/B,GAAyB,uBAArBA,EAAQ+qL,SACV,OAEF,MAAM9hC,EAAWhZ,EAAM65B,+BACvB,IAAK,IAAIjsK,EAAIorJ,EAASrrJ,OAAS,EAAGC,GAAK,IAAKA,EAAG,CAC7C,MAAMK,EAAS+qJ,EAASprJ,GAAGgtL,QACvB1C,GAAiBjqL,IACnB6rL,GAAU95C,EAAMhiE,IAAK/vE,EAAQ+xI,EAAMggB,UAEvC,CACF,EACA,iBAAAg7B,CAAkBh7C,EAAOzkI,EAAMxL,GAC7B,MAAM9B,EAASsN,EAAKgB,KAAKq+K,QACpB1C,GAAiBjqL,IAAgC,sBAArB8B,EAAQ+qL,UAGzChB,GAAU95C,EAAMhiE,IAAK/vE,EAAQ+xI,EAAMggB,UACrC,EACAr9G,SAAU,CACRy1I,WAAW,EACX0C,SAAU,sBAId,MAAMG,GAAa,CAACC,EAAWlhB,KAC7B,IAAI,UAACmhB,EAAYnhB,EAAQ,SAAEohB,EAAWphB,GAAYkhB,EAKlD,OAJIA,EAAUG,gBACZF,EAAYxmL,KAAKkW,IAAIswK,EAAWnhB,GAChCohB,EAAWF,EAAUI,iBAAmB3mL,KAAKkW,IAAIuwK,EAAUphB,IAEtD,CACLohB,WACAD,YACAI,WAAY5mL,KAAKiW,IAAIovJ,EAAUmhB,GAChC,EAEGK,GAAa,CAAChuL,EAAGC,IAAY,OAAND,GAAoB,OAANC,GAAcD,EAAE+5H,eAAiB95H,EAAE85H,cAAgB/5H,EAAEkd,QAAUjd,EAAEid,MAC5G,MAAM+wK,WAAel9K,GACnB,WAAA7Q,CAAYgI,GACVC,QACAjG,KAAKgsL,QAAS,EACdhsL,KAAKisL,eAAiB,GACtBjsL,KAAKksL,aAAe,KACpBlsL,KAAKmsL,cAAe,EACpBnsL,KAAKswI,MAAQtqI,EAAOsqI,MACpBtwI,KAAKK,QAAU2F,EAAO3F,QACtBL,KAAKsuE,IAAMtoE,EAAOsoE,IAClBtuE,KAAKosL,iBAAcz0K,EACnB3X,KAAKqsL,iBAAc10K,EACnB3X,KAAKssL,gBAAa30K,EAClB3X,KAAK4/I,eAAYjoI,EACjB3X,KAAK22I,cAAWh/H,EAChB3X,KAAK2sB,SAAMhV,EACX3X,KAAKs1I,YAAS39H,EACd3X,KAAK4sB,UAAOjV,EACZ3X,KAAKqtG,WAAQ11F,EACb3X,KAAK8yB,YAASnb,EACd3X,KAAK4b,WAAQjE,EACb3X,KAAK8hK,cAAWnqJ,EAChB3X,KAAK2qC,cAAWhzB,EAChB3X,KAAK+uI,YAASp3H,EACd3X,KAAK0mK,cAAW/uJ,CAClB,CACA,MAAA8tB,CAAOkxG,EAAUiJ,EAAWS,GAC1BrgJ,KAAK22I,SAAWA,EAChB32I,KAAK4/I,UAAYA,EACjB5/I,KAAK8hK,SAAWzhB,EAChBrgJ,KAAKyjK,gBACLzjK,KAAKusL,cACLvsL,KAAKwkK,KACP,CACA,aAAAf,GACMzjK,KAAKu3B,gBACPv3B,KAAK4b,MAAQ5b,KAAK22I,SAClB32I,KAAK4sB,KAAO5sB,KAAK8hK,SAASl1I,KAC1B5sB,KAAKqtG,MAAQrtG,KAAK4b,QAElB5b,KAAK8yB,OAAS9yB,KAAK4/I,UACnB5/I,KAAK2sB,IAAM3sB,KAAK8hK,SAASn1I,IACzB3sB,KAAKs1I,OAASt1I,KAAK8yB,OAEvB,CACA,WAAAy5J,GACE,MAAMf,EAAYxrL,KAAKK,QAAQ8uJ,QAAU,CAAC,EAC1C,IAAIi9B,EAAc9pL,EAASkpL,EAAU7wB,eAAgB,CAAC36J,KAAKswI,OAAQtwI,OAAS,GACxEwrL,EAAUx9K,SACZo+K,EAAcA,EAAYp+K,QAAQyiC,GAAS+6I,EAAUx9K,OAAOyiC,EAAMzwC,KAAKswI,MAAM7oI,SAE3E+jL,EAAUn7I,OACZ+7I,EAAcA,EAAY/7I,MAAK,CAACvyC,EAAGC,IAAMytL,EAAUn7I,KAAKvyC,EAAGC,EAAGiC,KAAKswI,MAAM7oI,SAEvEzH,KAAKK,QAAQk3H,SACf60D,EAAY70D,UAEdv3H,KAAKosL,YAAcA,CACrB,CACA,GAAA5nB,GACE,MAAM,QAACnkK,EAAO,IAAEiuE,GAAOtuE,KACvB,IAAKK,EAAQkT,QAEX,YADAvT,KAAK4b,MAAQ5b,KAAK8yB,OAAS,GAG7B,MAAM04J,EAAYnrL,EAAQ8uJ,OACpBq9B,EAAY/zC,GAAO+yC,EAAUh7C,MAC7B85B,EAAWkiB,EAAU5kL,KACrBm+J,EAAc/lK,KAAKysL,uBACnB,SAACf,EAAQ,WAAEG,GAAcN,GAAWC,EAAWlhB,GACrD,IAAI1uJ,EAAOkX,EACXw7C,EAAIkiE,KAAOg8C,EAAUrvK,OACjBnd,KAAKu3B,gBACP3b,EAAQ5b,KAAK22I,SACb7jH,EAAS9yB,KAAK0sL,SAAS3mB,EAAauE,EAAUohB,EAAUG,GAAc,KAEtE/4J,EAAS9yB,KAAK4/I,UACdhkI,EAAQ5b,KAAK2sL,SAAS5mB,EAAauE,EAAUohB,EAAUG,GAAc,IAEvE7rL,KAAK4b,MAAQ3W,KAAKkW,IAAIS,EAAOvb,EAAQs2I,UAAY32I,KAAK22I,UACtD32I,KAAK8yB,OAAS7tB,KAAKkW,IAAI2X,EAAQzyB,EAAQu/I,WAAa5/I,KAAK4/I,UAC3D,CACA,QAAA8sC,CAAS3mB,EAAauE,EAAUohB,EAAUG,GACxC,MAAM,IAACv9G,EAAG,SAAEqoE,EAAUt2I,SAAU8uJ,QAAQ,QAAC2Q,KAAa9/J,KAChD4sL,EAAW5sL,KAAKisL,eAAiB,GACjCK,EAAatsL,KAAKssL,WAAa,CAAC,GAChC57C,EAAam7C,EAAa/rB,EAChC,IAAI+sB,EAAc9mB,EAClBz3F,EAAI0oE,UAAY,OAChB1oE,EAAI2oE,aAAe,SACnB,IAAIx8G,GAAO,EACP9N,GAAO+jH,EAYX,OAXA1wI,KAAKosL,YAAY3pL,SAAQ,CAACm4J,EAAY18J,KACpC,MAAMgkJ,EAAYwpC,EAAYphB,EAAW,EAAKh8F,EAAIukE,YAAY+nB,EAAW5tI,MAAMpR,OACrE,IAAN1d,GAAWouL,EAAWA,EAAWruL,OAAS,GAAKikJ,EAAY,EAAI4d,EAAUnpB,KAC3Ek2C,GAAen8C,EACf47C,EAAWA,EAAWruL,QAAUC,EAAI,EAAI,EAAI,IAAM,EAClDyuB,GAAO+jH,EACPj2G,KAEFmyJ,EAAS1uL,GAAK,CAAC0uB,KAAM,EAAGD,MAAK8N,MAAK7e,MAAOsmI,EAAWpvH,OAAQ+4J,GAC5DS,EAAWA,EAAWruL,OAAS,IAAMikJ,EAAY4d,CAAO,IAEnD+sB,CACT,CACA,QAAAF,CAAS5mB,EAAauE,EAAUohB,EAAUG,GACxC,MAAM,IAACv9G,EAAG,UAAEsxE,EAAWv/I,SAAU8uJ,QAAQ,QAAC2Q,KAAa9/J,KACjD4sL,EAAW5sL,KAAKisL,eAAiB,GACjCI,EAAcrsL,KAAKqsL,YAAc,GACjCS,EAAcltC,EAAYmmB,EAChC,IAAIgnB,EAAajtB,EACbktB,EAAkB,EAClBC,EAAmB,EACnBrgK,EAAO,EACPsgK,EAAM,EAgBV,OAfAltL,KAAKosL,YAAY3pL,SAAQ,CAACm4J,EAAY18J,KACpC,MAAMgkJ,EAAYwpC,EAAYphB,EAAW,EAAKh8F,EAAIukE,YAAY+nB,EAAW5tI,MAAMpR,MAC3E1d,EAAI,GAAK+uL,EAAmBpB,EAAa,EAAI/rB,EAAUgtB,IACzDC,GAAcC,EAAkBltB,EAChCusB,EAAYnqL,KAAK,CAAC0Z,MAAOoxK,EAAiBl6J,OAAQm6J,IAClDrgK,GAAQogK,EAAkBltB,EAC1BotB,IACAF,EAAkBC,EAAmB,GAEvCL,EAAS1uL,GAAK,CAAC0uB,OAAMD,IAAKsgK,EAAkBC,MAAKtxK,MAAOsmI,EAAWpvH,OAAQ+4J,GAC3EmB,EAAkB/nL,KAAKiW,IAAI8xK,EAAiB9qC,GAC5C+qC,GAAoBpB,EAAa/rB,CAAO,IAE1CitB,GAAcC,EACdX,EAAYnqL,KAAK,CAAC0Z,MAAOoxK,EAAiBl6J,OAAQm6J,IAC3CF,CACT,CACA,cAAAI,GACE,IAAKntL,KAAKK,QAAQkT,QAChB,OAEF,MAAMwyJ,EAAc/lK,KAAKysL,uBAClBR,eAAgBW,EAAUvsL,SAAS,MAACo9H,EAAO0xB,QAAQ,QAAC2Q,GAAQ,IAAE9nI,IAAQh4B,KACvEotL,EAAY/qC,GAAcrqH,EAAKh4B,KAAK4sB,KAAM5sB,KAAK4b,OACrD,GAAI5b,KAAKu3B,eAAgB,CACvB,IAAIkD,EAAM,EACN7N,EAAO8wG,GAAeD,EAAOz9H,KAAK4sB,KAAOkzI,EAAS9/J,KAAKqtG,MAAQrtG,KAAKssL,WAAW7xJ,IACnF,IAAK,MAAM4yJ,KAAUT,EACfnyJ,IAAQ4yJ,EAAO5yJ,MACjBA,EAAM4yJ,EAAO5yJ,IACb7N,EAAO8wG,GAAeD,EAAOz9H,KAAK4sB,KAAOkzI,EAAS9/J,KAAKqtG,MAAQrtG,KAAKssL,WAAW7xJ,KAEjF4yJ,EAAO1gK,KAAO3sB,KAAK2sB,IAAMo5I,EAAcjG,EACvCutB,EAAOzgK,KAAOwgK,EAAUnrC,WAAWmrC,EAAUrsJ,EAAEnU,GAAOygK,EAAOzxK,OAC7DgR,GAAQygK,EAAOzxK,MAAQkkJ,CAE3B,KAAO,CACL,IAAIotB,EAAM,EACNvgK,EAAM+wG,GAAeD,EAAOz9H,KAAK2sB,IAAMo5I,EAAcjG,EAAS9/J,KAAKs1I,OAASt1I,KAAKqsL,YAAYa,GAAKp6J,QACtG,IAAK,MAAMu6J,KAAUT,EACfS,EAAOH,MAAQA,IACjBA,EAAMG,EAAOH,IACbvgK,EAAM+wG,GAAeD,EAAOz9H,KAAK2sB,IAAMo5I,EAAcjG,EAAS9/J,KAAKs1I,OAASt1I,KAAKqsL,YAAYa,GAAKp6J,SAEpGu6J,EAAO1gK,IAAMA,EACb0gK,EAAOzgK,MAAQ5sB,KAAK4sB,KAAOkzI,EAC3ButB,EAAOzgK,KAAOwgK,EAAUnrC,WAAWmrC,EAAUrsJ,EAAEssJ,EAAOzgK,MAAOygK,EAAOzxK,OACpE+Q,GAAO0gK,EAAOv6J,OAASgtI,CAE3B,CACF,CACA,YAAAvoI,GACE,MAAiC,QAA1Bv3B,KAAKK,QAAQsqC,UAAgD,WAA1B3qC,KAAKK,QAAQsqC,QACzD,CACA,IAAAu7G,GACE,GAAIlmJ,KAAKK,QAAQkT,QAAS,CACxB,MAAM+6D,EAAMtuE,KAAKsuE,IACjBinE,GAASjnE,EAAKtuE,MACdA,KAAKstL,QACL73C,GAAWnnE,EACb,CACF,CACA,KAAAg/G,GACE,MAAOjtL,QAAS6xB,EAAI,YAAEm6J,EAAW,WAAEC,EAAU,IAAEh+G,GAAOtuE,MAChD,MAACy9H,EAAO0xB,OAAQq8B,GAAat5J,EAC7Bq7J,EAAet6I,GAAS67F,MACxBs+C,EAAY/qC,GAAcnwH,EAAK8F,IAAKh4B,KAAK4sB,KAAM5sB,KAAK4b,OACpD4wK,EAAY/zC,GAAO+yC,EAAUh7C,OAC5B1B,MAAO0+C,EAAS,QAAE1tB,GAAW0rB,EAC9BlhB,EAAWkiB,EAAU5kL,KACrB6lL,EAAenjB,EAAW,EAChC,IAAIhlI,EACJtlC,KAAKgqK,YACL17F,EAAI0oE,UAAYo2C,EAAUp2C,UAAU,QACpC1oE,EAAI2oE,aAAe,SACnB3oE,EAAImoE,UAAY,GAChBnoE,EAAIkiE,KAAOg8C,EAAUrvK,OACrB,MAAM,SAACuuK,EAAQ,UAAED,EAAS,WAAEI,GAAcN,GAAWC,EAAWlhB,GAC1DojB,EAAgB,SAAS3sJ,EAAGC,EAAG45H,GACnC,GAAIljI,MAAMg0J,IAAaA,GAAY,GAAKh0J,MAAM+zJ,IAAcA,EAAY,EACtE,OAEFn9G,EAAI2kE,OACJ,MAAMwD,EAAYvf,EAAe0jC,EAAWnkB,UAAW,GAQvD,GAPAnoE,EAAIyoE,UAAY7f,EAAe0jC,EAAW7jB,UAAWw2C,GACrDj/G,EAAIyzG,QAAU7qD,EAAe0jC,EAAWmnB,QAAS,QACjDzzG,EAAIu7F,eAAiB3yC,EAAe0jC,EAAWiP,eAAgB,GAC/Dv7F,EAAI+yG,SAAWnqD,EAAe0jC,EAAWymB,SAAU,SACnD/yG,EAAImoE,UAAYA,EAChBnoE,EAAIkoE,YAActf,EAAe0jC,EAAWpkB,YAAa+2C,GACzDj/G,EAAIs7F,YAAY1yC,EAAe0jC,EAAW+yB,SAAU,KAChDnC,EAAUG,cAAe,CAC3B,MAAMiC,EAAc,CAClBt5C,OAAQm3C,EAAYxmL,KAAK4oL,MAAQ,EACjCz5C,WAAYwmB,EAAWxmB,WACvBC,SAAUumB,EAAWvmB,SACrBY,YAAawB,GAETyjB,EAAUkzB,EAAUprC,MAAMjhH,EAAG2qJ,EAAW,GACxCvxB,EAAUn5H,EAAIysJ,EACpBz5C,GAAgB1lE,EAAKs/G,EAAa1zB,EAASC,EAASqxB,EAAUI,iBAAmBF,EACnF,KAAO,CACL,MAAMoC,EAAU9sJ,EAAI/7B,KAAKiW,KAAKovJ,EAAWmhB,GAAa,EAAG,GACnDsC,EAAWX,EAAUnrC,WAAWlhH,EAAG2qJ,GACnC1M,EAAezmC,GAAcqiB,EAAWokB,cAC9C1wG,EAAImmE,YACA/1I,OAAOkL,OAAOo1K,GAAchvG,MAAKxtE,GAAW,IAANA,IACxCm1I,GAAmBrpE,EAAK,CACtBvtC,EAAGgtJ,EACH/sJ,EAAG8sJ,EACHtrD,EAAGkpD,EACH/oL,EAAG8oL,EACHn3C,OAAQ0qC,IAGV1wG,EAAI0mE,KAAK+4C,EAAUD,EAASpC,EAAUD,GAExCn9G,EAAIwK,OACc,IAAd29D,GACFnoE,EAAI4mE,QAER,CACA5mE,EAAI+kE,SACN,EACMuD,EAAW,SAAS71G,EAAGC,EAAG45H,GAC9BzkB,GAAW7nE,EAAKssF,EAAW5tI,KAAM+T,EAAGC,EAAK6qJ,EAAa,EAAIW,EAAW,CACnEt1C,cAAe0jB,EAAW9O,OAC1B9U,UAAWo2C,EAAUp2C,UAAU4jB,EAAW5jB,YAE9C,EACMz/G,EAAev3B,KAAKu3B,eACpBwuI,EAAc/lK,KAAKysL,sBAEvBnnJ,EADE/N,EACO,CACPwJ,EAAG28F,GAAeD,EAAOz9H,KAAK4sB,KAAOkzI,EAAS9/J,KAAKqtG,MAAQi/E,EAAW,IACtEtrJ,EAAGhhC,KAAK2sB,IAAMmzI,EAAUiG,EACxBv0D,KAAM,GAGC,CACPzwE,EAAG/gC,KAAK4sB,KAAOkzI,EACf9+H,EAAG08F,GAAeD,EAAOz9H,KAAK2sB,IAAMo5I,EAAcjG,EAAS9/J,KAAKs1I,OAAS+2C,EAAY,GAAGv5J,QACxF0+E,KAAM,GAGV8wC,GAAsBtiJ,KAAKsuE,IAAKp8C,EAAK87J,eACrC,MAAMt9C,EAAam7C,EAAa/rB,EAChC9/J,KAAKosL,YAAY3pL,SAAQ,CAACm4J,EAAY18J,KACpCowE,EAAIkoE,YAAcokB,EAAW4yB,WAAaA,EAC1Cl/G,EAAIyoE,UAAY6jB,EAAW4yB,WAAaA,EACxC,MAAM56C,EAAYtkE,EAAIukE,YAAY+nB,EAAW5tI,MAAMpR,MAC7Co7H,EAAYo2C,EAAUp2C,UAAU4jB,EAAW5jB,YAAc4jB,EAAW5jB,UAAYw0C,EAAUx0C,YAC1Fp7H,EAAQ8vK,EAAW+B,EAAe76C,EACxC,IAAI7xG,EAAIuE,EAAOvE,EACXC,EAAIsE,EAAOtE,EACfosJ,EAAUrrC,SAAS/hJ,KAAK4b,OACpB2b,EACEr5B,EAAI,GAAK6iC,EAAInlB,EAAQkkJ,EAAU9/J,KAAKqtG,QACtCrsE,EAAIsE,EAAOtE,GAAK0vG,EAChBprG,EAAOksE,OACPzwE,EAAIuE,EAAOvE,EAAI28F,GAAeD,EAAOz9H,KAAK4sB,KAAOkzI,EAAS9/J,KAAKqtG,MAAQi/E,EAAWhnJ,EAAOksE,QAElFtzG,EAAI,GAAK8iC,EAAI0vG,EAAa1wI,KAAKs1I,SACxCv0G,EAAIuE,EAAOvE,EAAIA,EAAIsrJ,EAAY/mJ,EAAOksE,MAAM51F,MAAQkkJ,EACpDx6H,EAAOksE,OACPxwE,EAAIsE,EAAOtE,EAAI08F,GAAeD,EAAOz9H,KAAK2sB,IAAMo5I,EAAcjG,EAAS9/J,KAAKs1I,OAAS+2C,EAAY/mJ,EAAOksE,MAAM1+E,SAEhH,MAAMm7J,EAAQb,EAAUrsJ,EAAEA,GAC1B2sJ,EAAcO,EAAOjtJ,EAAG45H,GACxB75H,EAAI48F,GAAOqZ,EAAWj2G,EAAI2qJ,EAAW+B,EAAcl2J,EAAewJ,EAAInlB,EAAQ5b,KAAKqtG,MAAOn7E,EAAK8F,KAC/F4+G,EAASw2C,EAAUrsJ,EAAEA,GAAIC,EAAG45H,GACxBrjI,EACF+N,EAAOvE,GAAKnlB,EAAQkkJ,EAEpBx6H,EAAOtE,GAAK0vG,CACd,IAEFgS,GAAqB1iJ,KAAKsuE,IAAKp8C,EAAK87J,cACtC,CACA,SAAAhkB,GACE,MAAM93I,EAAOlyB,KAAKK,QACZwlK,EAAY3zI,EAAKwmI,MACjBw1B,EAAYz1C,GAAOotB,EAAUr1B,MAC7B29C,EAAe31C,GAAUqtB,EAAU/F,SACzC,IAAK+F,EAAUtyJ,QACb,OAEF,MAAM65K,EAAY/qC,GAAcnwH,EAAK8F,IAAKh4B,KAAK4sB,KAAM5sB,KAAK4b,OACpD0yD,EAAMtuE,KAAKsuE,IACX3jC,EAAWk7H,EAAUl7H,SACrB8iJ,EAAeS,EAAUtmL,KAAO,EAChCwmL,EAA6BD,EAAaxhK,IAAM8gK,EACtD,IAAIzsJ,EACApU,EAAO5sB,KAAK4sB,KACZ+pH,EAAW32I,KAAK4b,MACpB,GAAI5b,KAAKu3B,eACPo/G,EAAW1xI,KAAKiW,OAAOlb,KAAKssL,YAC5BtrJ,EAAIhhC,KAAK2sB,IAAMyhK,EACfxhK,EAAO8wG,GAAexrG,EAAKurG,MAAO7wG,EAAM5sB,KAAKqtG,MAAQspC,OAChD,CACL,MAAMiJ,EAAY5/I,KAAKqsL,YAAYnwH,QAAO,CAACsqF,EAAK5+I,IAAS3C,KAAKiW,IAAIsrI,EAAK5+I,EAAKkrB,SAAS,GACrFkO,EAAIotJ,EAA6B1wD,GAAexrG,EAAKurG,MAAOz9H,KAAK2sB,IAAK3sB,KAAKs1I,OAASsK,EAAY1tH,EAAKi9H,OAAO2Q,QAAU9/J,KAAKysL,sBAC7H,CACA,MAAM1rJ,EAAI28F,GAAe/yF,EAAU/d,EAAMA,EAAO+pH,GAChDroE,EAAI0oE,UAAYo2C,EAAUp2C,UAAUxZ,GAAmB7yF,IACvD2jC,EAAI2oE,aAAe,SACnB3oE,EAAIkoE,YAAcqvB,EAAU/2B,MAC5BxgE,EAAIyoE,UAAY8uB,EAAU/2B,MAC1BxgE,EAAIkiE,KAAO09C,EAAU/wK,OACrBg5H,GAAW7nE,EAAKu3F,EAAU74I,KAAM+T,EAAGC,EAAGktJ,EACxC,CACA,mBAAAzB,GACE,MAAM5mB,EAAY7lK,KAAKK,QAAQq4J,MACzBw1B,EAAYz1C,GAAOotB,EAAUr1B,MAC7B29C,EAAe31C,GAAUqtB,EAAU/F,SACzC,OAAO+F,EAAUtyJ,QAAU26K,EAAUx9C,WAAay9C,EAAar7J,OAAS,CAC1E,CACA,gBAAAu7J,CAAiBttJ,EAAGC,GAClB,IAAI9iC,EAAGowL,EAAQC,EACf,GAAIvyD,GAAWj7F,EAAG/gC,KAAK4sB,KAAM5sB,KAAKqtG,QAC7B2uB,GAAWh7F,EAAGhhC,KAAK2sB,IAAK3sB,KAAKs1I,QAEhC,IADAi5C,EAAKvuL,KAAKisL,eACL/tL,EAAI,EAAGA,EAAIqwL,EAAGtwL,SAAUC,EAE3B,GADAowL,EAASC,EAAGrwL,GACR89H,GAAWj7F,EAAGutJ,EAAO1hK,KAAM0hK,EAAO1hK,KAAO0hK,EAAO1yK,QAC/CogH,GAAWh7F,EAAGstJ,EAAO3hK,IAAK2hK,EAAO3hK,IAAM2hK,EAAOx7J,QACjD,OAAO9yB,KAAKosL,YAAYluL,GAI9B,OAAO,IACT,CACA,WAAA2sB,CAAYvtB,GACV,MAAM40B,EAAOlyB,KAAKK,QAClB,IAAKmuL,GAAWlxL,EAAE0L,KAAMkpB,GACtB,OAEF,MAAMu8J,EAAczuL,KAAKquL,iBAAiB/wL,EAAEyjC,EAAGzjC,EAAE0jC,GACjD,GAAe,cAAX1jC,EAAE0L,MAAmC,aAAX1L,EAAE0L,KAAqB,CACnD,MAAMsG,EAAWtP,KAAKksL,aAChBwC,EAAW5C,GAAWx8K,EAAUm/K,GAClCn/K,IAAao/K,GACfpsL,EAAS4vB,EAAKkpD,QAAS,CAAC99E,EAAGgS,EAAUtP,MAAOA,MAE9CA,KAAKksL,aAAeuC,EAChBA,IAAgBC,GAClBpsL,EAAS4vB,EAAKk/G,QAAS,CAAC9zI,EAAGmxL,EAAazuL,MAAOA,KAEnD,MAAWyuL,GACTnsL,EAAS4vB,EAAKwb,QAAS,CAACpwC,EAAGmxL,EAAazuL,MAAOA,KAEnD,EAEF,SAASwuL,GAAWxlL,EAAMkpB,GACxB,QAAc,cAATlpB,GAAiC,aAATA,IAAyBkpB,EAAKk/G,UAAWl/G,EAAKkpD,aAGvElpD,EAAKwb,SAAqB,UAAT1kC,GAA6B,YAATA,EAI3C,CACA,IAAI2lL,GAAgB,CAClBpvL,GAAI,SACJ4G,SAAU4lL,GACV,KAAAjuK,CAAMwyH,EAAO26C,EAAO5qL,GAClB,MAAMq6J,EAASpqB,EAAMoqB,OAAS,IAAIqxB,GAAO,CAACz9G,IAAKgiE,EAAMhiE,IAAKjuE,UAASiwI,UACnE++B,GAAQ/mB,UAAUhY,EAAOoqB,EAAQr6J,GACjCgvK,GAAQkC,OAAOjhC,EAAOoqB,EACxB,EACA,IAAAl/G,CAAK80F,GACH++B,GAAQmC,UAAUlhC,EAAOA,EAAMoqB,eACxBpqB,EAAMoqB,MACf,EACA,YAAA7yE,CAAayoD,EAAO26C,EAAO5qL,GACzB,MAAMq6J,EAASpqB,EAAMoqB,OACrB2U,GAAQ/mB,UAAUhY,EAAOoqB,EAAQr6J,GACjCq6J,EAAOr6J,QAAUA,CACnB,EACA,WAAAqkK,CAAYp0B,GACV,MAAMoqB,EAASpqB,EAAMoqB,OACrBA,EAAO6xB,cACP7xB,EAAOyyB,gBACT,EACA,UAAAyB,CAAWt+C,EAAOzkI,GACXA,EAAKuyK,QACR9tC,EAAMoqB,OAAO7vI,YAAYhf,EAAKnH,MAElC,EACAuuC,SAAU,CACR1/B,SAAS,EACTo3B,SAAU,MACV8yF,MAAO,SACPipC,UAAU,EACVnvC,SAAS,EACTwX,OAAQ,IACR,OAAArhG,CAAQpwC,EAAGs9J,EAAYF,GACrB,MAAM1/I,EAAQ4/I,EAAW/iC,aACnBg3D,EAAKn0B,EAAOpqB,MACdu+C,EAAG51B,iBAAiBj+I,IACtB6zK,EAAGp8K,KAAKuI,GACR4/I,EAAW9O,QAAS,IAEpB+iC,EAAGn8K,KAAKsI,GACR4/I,EAAW9O,QAAS,EAExB,EACA1a,QAAS,KACTh2D,QAAS,KACT+zE,OAAQ,CACNrgB,MAAQxgE,GAAQA,EAAIgiE,MAAMjwI,QAAQyuI,MAClC48C,SAAU,GACV5rB,QAAS,GACT,cAAAnF,CAAerqB,GACb,MAAMF,EAAWE,EAAM7oI,KAAK2oI,UACrB+e,QAAQ,cAACw8B,EAAa,WAAEv3C,EAAU,UAAE4C,EAAS,MAAElI,IAAUwB,EAAMoqB,OAAOr6J,QAC7E,OAAOiwI,EAAMiZ,yBAAyBhlJ,KAAKsI,IACzC,MAAMyG,EAAQzG,EAAKo8C,WAAWg2F,SAAS0sC,EAAgB,OAAIh0K,GACrDs9H,EAAcuD,GAAUllI,EAAM2hI,aACpC,MAAO,CACLjoH,KAAMojH,EAASvjI,EAAKmO,OAAO8c,MAC3Bi/G,UAAWzjI,EAAM48H,gBACjBs9C,UAAW1+C,EACXgd,QAASj/I,EAAKs7I,QACd45B,QAASzuK,EAAM4xI,eACfyoC,SAAUr6K,EAAM6xI,WAChB0kB,eAAgBv2J,EAAM8xI,iBACtBi8B,SAAU/tK,EAAM+xI,gBAChB5O,WAAYxB,EAAYr5H,MAAQq5H,EAAYniH,QAAU,EACtD0jH,YAAaljI,EAAM68H,YACnBiE,WAAYA,GAAc9gI,EAAM8gI,WAChCC,SAAU/gI,EAAM+gI,SAChB2C,UAAWA,GAAa1jI,EAAM0jI,UAC9BgoC,aAAc,EACdnnD,aAAchrH,EAAKmO,MACpB,GACAhb,KACL,GAEF04J,MAAO,CACL5pB,MAAQxgE,GAAQA,EAAIgiE,MAAMjwI,QAAQyuI,MAClCv7H,SAAS,EACTo3B,SAAU,SACV3d,KAAM,KAGV6iH,YAAa,CACXwC,YAAcvwI,IAAUA,EAAK0J,WAAW,MACxC2jJ,OAAQ,CACN9c,YAAcvwI,IAAU,CAAC,iBAAkB,SAAU,QAAQqJ,SAASrJ,MAK5E,MAAMgtL,WAAcjgL,GAClB,WAAA7Q,CAAYgI,GACVC,QACAjG,KAAKswI,MAAQtqI,EAAOsqI,MACpBtwI,KAAKK,QAAU2F,EAAO3F,QACtBL,KAAKsuE,IAAMtoE,EAAOsoE,IAClBtuE,KAAK+uL,cAAWp3K,EAChB3X,KAAK2sB,SAAMhV,EACX3X,KAAKs1I,YAAS39H,EACd3X,KAAK4sB,UAAOjV,EACZ3X,KAAKqtG,WAAQ11F,EACb3X,KAAK4b,WAAQjE,EACb3X,KAAK8yB,YAASnb,EACd3X,KAAK2qC,cAAWhzB,EAChB3X,KAAK+uI,YAASp3H,EACd3X,KAAK0mK,cAAW/uJ,CAClB,CACA,MAAA8tB,CAAOkxG,EAAUiJ,GACf,MAAM1tH,EAAOlyB,KAAKK,QAGlB,GAFAL,KAAK4sB,KAAO,EACZ5sB,KAAK2sB,IAAM,GACNuF,EAAK3e,QAER,YADAvT,KAAK4b,MAAQ5b,KAAK8yB,OAAS9yB,KAAKqtG,MAAQrtG,KAAKs1I,OAAS,GAGxDt1I,KAAK4b,MAAQ5b,KAAKqtG,MAAQspC,EAC1B32I,KAAK8yB,OAAS9yB,KAAKs1I,OAASsK,EAC5B,MAAMopB,EAAY3qK,EAAQ6zB,EAAKlF,MAAQkF,EAAKlF,KAAK/uB,OAAS,EAC1D+B,KAAK+uL,SAAWv2C,GAAUtmH,EAAK4tI,SAC/B,MAAMkvB,EAAWhmB,EAAYvwB,GAAOvmH,EAAKs+G,MAAME,WAAa1wI,KAAK+uL,SAASj8J,OACtE9yB,KAAKu3B,eACPv3B,KAAK8yB,OAASk8J,EAEdhvL,KAAK4b,MAAQozK,CAEjB,CACA,YAAAz3J,GACE,MAAM6nH,EAAMp/I,KAAKK,QAAQsqC,SACzB,MAAe,QAARy0G,GAAyB,WAARA,CAC1B,CACA,SAAA6vC,CAAU9iK,GACR,MAAM,IAACQ,EAAG,KAAEC,EAAI,OAAE0oH,EAAM,MAAEjoC,EAAK,QAAEhtG,GAAWL,KACtCy9H,EAAQp9H,EAAQo9H,MACtB,IACIkZ,EAAU+qB,EAAQC,EADlBttB,EAAW,EAkBf,OAhBIr0I,KAAKu3B,gBACPmqI,EAAShkC,GAAeD,EAAO7wG,EAAMygF,GACrCs0D,EAASh1I,EAAMR,EACfwqH,EAAWtpC,EAAQzgF,IAEM,SAArBvsB,EAAQsqC,UACV+2H,EAAS90I,EAAOT,EAChBw1I,EAASjkC,GAAeD,EAAO6X,EAAQ3oH,GACvC0nH,GAAiB,GAANxqG,IAEX63H,EAASr0D,EAAQlhF,EACjBw1I,EAASjkC,GAAeD,EAAO9wG,EAAK2oH,GACpCjB,EAAgB,GAALxqG,GAEb8sG,EAAWrB,EAAS3oH,GAEf,CAAC+0I,SAAQC,SAAQhrB,WAAUtC,WACpC,CACA,IAAA6R,GACE,MAAM53E,EAAMtuE,KAAKsuE,IACXp8C,EAAOlyB,KAAKK,QAClB,IAAK6xB,EAAK3e,QACR,OAEF,MAAM27K,EAAWz2C,GAAOvmH,EAAKs+G,MACvBE,EAAaw+C,EAASx+C,WACtBvkH,EAASukH,EAAa,EAAI1wI,KAAK+uL,SAASpiK,KACxC,OAAC+0I,EAAM,OAAEC,EAAM,SAAEhrB,EAAQ,SAAEtC,GAAYr0I,KAAKivL,UAAU9iK,GAC5DgqH,GAAW7nE,EAAKp8C,EAAKlF,KAAM,EAAG,EAAGkiK,EAAU,CACzCpgD,MAAO58G,EAAK48G,MACZ6H,WACAtC,WACA2C,UAAWxZ,GAAmBtrG,EAAKurG,OACnCwZ,aAAc,SACdH,YAAa,CAAC4qB,EAAQC,IAE1B,EAEF,SAASwtB,GAAY7+C,EAAOu1B,GAC1B,MAAMnN,EAAQ,IAAIo2B,GAAM,CACtBxgH,IAAKgiE,EAAMhiE,IACXjuE,QAASwlK,EACTv1B,UAEF++B,GAAQ/mB,UAAUhY,EAAOooB,EAAOmN,GAChCwJ,GAAQkC,OAAOjhC,EAAOooB,GACtBpoB,EAAM8+C,WAAa12B,CACrB,CACA,IAAI22B,GAAe,CACjB9vL,GAAI,QACJ4G,SAAU2oL,GACV,KAAAhxK,CAAMwyH,EAAO26C,EAAO5qL,GAClB8uL,GAAY7+C,EAAOjwI,EACrB,EACA,IAAAm7C,CAAK80F,GACH,MAAM8+C,EAAa9+C,EAAM8+C,WACzB/f,GAAQmC,UAAUlhC,EAAO8+C,UAClB9+C,EAAM8+C,UACf,EACA,YAAAvnG,CAAayoD,EAAO26C,EAAO5qL,GACzB,MAAMq4J,EAAQpoB,EAAM8+C,WACpB/f,GAAQ/mB,UAAUhY,EAAOooB,EAAOr4J,GAChCq4J,EAAMr4J,QAAUA,CAClB,EACA4yC,SAAU,CACRwqF,MAAO,SACPlqH,SAAS,EACTi9H,KAAM,CACJzB,OAAQ,QAEV23B,UAAU,EACV5G,QAAS,GACTn1H,SAAU,MACV3d,KAAM,GACN+hH,OAAQ,KAEVsuB,cAAe,CACbvuB,MAAO,SAETe,YAAa,CACXwC,aAAa,EACbC,YAAY,IAIhB,MAAM,GAAM,IAAIxyE,QAChB,IAAIwvH,GAAkB,CACpB/vL,GAAI,WACJ,KAAAue,CAAMwyH,EAAO26C,EAAO5qL,GAClB,MAAMq4J,EAAQ,IAAIo2B,GAAM,CACtBxgH,IAAKgiE,EAAMhiE,IACXjuE,UACAiwI,UAEF++B,GAAQ/mB,UAAUhY,EAAOooB,EAAOr4J,GAChCgvK,GAAQkC,OAAOjhC,EAAOooB,GACtB,GAAIh1J,IAAI4sI,EAAOooB,EACjB,EACA,IAAAl9G,CAAK80F,GACH++B,GAAQmC,UAAUlhC,EAAO,GAAInpI,IAAImpI,IACjC,GAAIxoI,OAAOwoI,EACb,EACA,YAAAzoD,CAAayoD,EAAO26C,EAAO5qL,GACzB,MAAMq4J,EAAQ,GAAIvxJ,IAAImpI,GACtB++B,GAAQ/mB,UAAUhY,EAAOooB,EAAOr4J,GAChCq4J,EAAMr4J,QAAUA,CAClB,EACA4yC,SAAU,CACRwqF,MAAO,SACPlqH,SAAS,EACTi9H,KAAM,CACJzB,OAAQ,UAEV23B,UAAU,EACV5G,QAAS,EACTn1H,SAAU,MACV3d,KAAM,GACN+hH,OAAQ,MAEVsuB,cAAe,CACbvuB,MAAO,SAETe,YAAa,CACXwC,aAAa,EACbC,YAAY,IAIhB,MAAMi9C,GAAc,CAClB,OAAAC,CAAQ5nK,GACN,IAAKA,EAAM3pB,OACT,OAAO,EAET,IAAIC,EAAGuyB,EACHsQ,EAAI,EACJC,EAAI,EACJ+jF,EAAQ,EACZ,IAAK7mH,EAAI,EAAGuyB,EAAM7I,EAAM3pB,OAAQC,EAAIuyB,IAAOvyB,EAAG,CAC5C,MAAMyR,EAAKiY,EAAM1pB,GAAG6H,QACpB,GAAI4J,GAAMA,EAAGwtJ,WAAY,CACvB,MAAM/d,EAAMzvI,EAAGqtJ,kBACfj8H,GAAKq+G,EAAIr+G,EACTC,GAAKo+G,EAAIp+G,IACP+jF,CACJ,CACF,CACA,MAAO,CACLhkF,EAAGA,EAAIgkF,EACP/jF,EAAGA,EAAI+jF,EAEX,EACA,OAAA4pD,CAAQ/mJ,EAAO6nK,GACb,IAAK7nK,EAAM3pB,OACT,OAAO,EAET,IAGIC,EAAGuyB,EAAKi/J,EAHR3uJ,EAAI0uJ,EAAc1uJ,EAClBC,EAAIyuJ,EAAczuJ,EAClBktI,EAAchhK,OAAOksH,kBAEzB,IAAKl7H,EAAI,EAAGuyB,EAAM7I,EAAM3pB,OAAQC,EAAIuyB,IAAOvyB,EAAG,CAC5C,MAAMyR,EAAKiY,EAAM1pB,GAAG6H,QACpB,GAAI4J,GAAMA,EAAGwtJ,WAAY,CACvB,MAAMlsG,EAASthD,EAAGw+J,iBACZjrK,EAAIi4H,EAAsBs0D,EAAex+H,GAC3C/tD,EAAIgrK,IACNA,EAAchrK,EACdwsL,EAAiB//K,EAErB,CACF,CACA,GAAI+/K,EAAgB,CAClB,MAAMC,EAAKD,EAAe1yB,kBAC1Bj8H,EAAI4uJ,EAAG5uJ,EACPC,EAAI2uJ,EAAG3uJ,CACT,CACA,MAAO,CACLD,IACAC,IAEJ,GAEF,SAAS4uJ,GAAavpJ,EAAMwpJ,GAQ1B,OAPIA,IACExxL,EAAQwxL,GACVzxL,MAAMO,UAAUuD,KAAKvE,MAAM0oC,EAAMwpJ,GAEjCxpJ,EAAKnkC,KAAK2tL,IAGPxpJ,CACT,CACA,SAASypJ,GAAc77H,GACrB,OAAoB,kBAARA,GAAoBA,aAAe2H,SAAW3H,EAAIh5C,QAAQ,OAAS,EACtEg5C,EAAI1lD,MAAM,MAEZ0lD,CACT,CACA,SAAS87H,GAAkBz/C,EAAO7/F,GAChC,MAAM,QAAC1qC,EAAO,aAAE8xH,EAAY,MAAE78G,GAASy1B,EACjCwY,EAAaqnF,EAAMyd,eAAel2B,GAAc5uE,YAChD,MAACnxB,EAAK,MAAE/6B,GAASksD,EAAWknG,iBAAiBn1I,GACnD,MAAO,CACLs1H,QACAx4G,QACAkkH,OAAQ/yF,EAAWumG,UAAUx0I,GAC7B0gC,IAAK40F,EAAM7oI,KAAK2oI,SAASvY,GAAcpwH,KAAKuT,GAC5CggJ,eAAgBj+J,EAChBgR,QAASk7C,EAAWgkG,aACpBvhI,UAAW1Q,EACX68G,eACA9xH,UAEJ,CACA,SAASiqL,GAAev3B,EAASp4J,GAC/B,MAAMiuE,EAAMmqF,EAAQnoB,MAAMhiE,KACpB,KAAC17D,EAAI,OAAEq9K,EAAM,MAAEv3B,GAASD,GACxB,SAACizB,EAAQ,UAAED,GAAaprL,EACxB6vL,EAAWz3C,GAAOp4I,EAAQ6vL,UAC1BhC,EAAYz1C,GAAOp4I,EAAQ6tL,WAC3BiC,EAAa13C,GAAOp4I,EAAQ8vL,YAC5BC,EAAiB13B,EAAMz6J,OACvBoyL,EAAkBJ,EAAOhyL,OACzBqyL,EAAoB19K,EAAK3U,OACzB6hK,EAAUtnB,GAAUn4I,EAAQy/J,SAClC,IAAIhtI,EAASgtI,EAAQhtI,OACjBlX,EAAQ,EACR20K,EAAqB39K,EAAKspD,QAAO,CAAC6oD,EAAOyrE,IAAazrE,EAAQyrE,EAAS5vF,OAAO3iG,OAASuyL,EAASp6C,MAAMn4I,OAASuyL,EAASC,MAAMxyL,QAAQ,GAO1I,GANAsyL,GAAsB93B,EAAQi4B,WAAWzyL,OAASw6J,EAAQk4B,UAAU1yL,OAChEmyL,IACFt9J,GAAUs9J,EAAiBlC,EAAUx9C,YACnC0/C,EAAiB,GAAK/vL,EAAQuwL,aAC/BvwL,EAAQwwL,mBAEPN,EAAoB,CACtB,MAAMO,EAAiBzwL,EAAQ0wL,cAAgB9rL,KAAKiW,IAAIuwK,EAAWyE,EAASx/C,YAAcw/C,EAASx/C,WACnG59G,GAAUw9J,EAAoBQ,GAC5BP,EAAqBD,GAAqBJ,EAASx/C,YACnD6/C,EAAqB,GAAKlwL,EAAQ2wL,WACtC,CACIX,IACFv9J,GAAUzyB,EAAQ4wL,gBACjBZ,EAAkBF,EAAWz/C,YAC5B2/C,EAAkB,GAAKhwL,EAAQ6wL,eAEnC,IAAIC,EAAe,EACnB,MAAMC,EAAe,SAAS5/E,GAC5B51F,EAAQ3W,KAAKiW,IAAIU,EAAO0yD,EAAIukE,YAAYrhC,GAAM51F,MAAQu1K,EACxD,EAiBA,OAhBA7iH,EAAI2kE,OACJ3kE,EAAIkiE,KAAO09C,EAAU/wK,OACrBtI,EAAK4jJ,EAAQC,MAAO04B,GACpB9iH,EAAIkiE,KAAO0/C,EAAS/yK,OACpBtI,EAAK4jJ,EAAQi4B,WAAW9hL,OAAO6pJ,EAAQk4B,WAAYS,GACnDD,EAAe9wL,EAAQ0wL,cAAiBrF,EAAW,EAAIrrL,EAAQiwK,WAAc,EAC7Ez7J,EAAKjC,GAAO49K,IACV37K,EAAK27K,EAAS5vF,OAAQwwF,GACtBv8K,EAAK27K,EAASp6C,MAAOg7C,GACrBv8K,EAAK27K,EAASC,MAAOW,EAAa,IAEpCD,EAAe,EACf7iH,EAAIkiE,KAAO2/C,EAAWhzK,OACtBtI,EAAK4jJ,EAAQw3B,OAAQmB,GACrB9iH,EAAI+kE,UACJz3H,GAASkkJ,EAAQlkJ,MACV,CAACA,QAAOkX,SACjB,CACA,SAASu+J,GAAgB/gD,EAAO1oI,GAC9B,MAAM,EAACo5B,EAAC,OAAElO,GAAUlrB,EACpB,OAAIo5B,EAAIlO,EAAS,EACR,MACEkO,EAAKsvG,EAAMx9G,OAASA,EAAS,EAC/B,SAEF,QACT,CACA,SAASw+J,GAAoBC,EAAQjhD,EAAOjwI,EAASuH,GACnD,MAAM,EAACm5B,EAAC,MAAEnlB,GAAShU,EACb4pL,EAAQnxL,EAAQoxL,UAAYpxL,EAAQqxL,aAC1C,MAAe,SAAXH,GAAqBxwJ,EAAInlB,EAAQ41K,EAAQlhD,EAAM10H,QAGpC,UAAX21K,GAAsBxwJ,EAAInlB,EAAQ41K,EAAQ,QAA9C,EAGF,CACA,SAASG,GAAgBrhD,EAAOjwI,EAASuH,EAAMgqL,GAC7C,MAAM,EAAC7wJ,EAAC,MAAEnlB,GAAShU,GACZgU,MAAOi2K,EAAYvhC,WAAW,KAAC1jI,EAAI,MAAEygF,IAAUijC,EACtD,IAAIihD,EAAS,SAWb,MAVe,WAAXK,EACFL,EAASxwJ,IAAMnU,EAAOygF,GAAS,EAAI,OAAS,QACnCtsE,GAAKnlB,EAAQ,EACtB21K,EAAS,OACAxwJ,GAAK8wJ,EAAaj2K,EAAQ,IACnC21K,EAAS,SAEPD,GAAoBC,EAAQjhD,EAAOjwI,EAASuH,KAC9C2pL,EAAS,UAEJA,CACT,CACA,SAASO,GAAmBxhD,EAAOjwI,EAASuH,GAC1C,MAAMgqL,EAAShqL,EAAKgqL,QAAUvxL,EAAQuxL,QAAUP,GAAgB/gD,EAAO1oI,GACvE,MAAO,CACL2pL,OAAQ3pL,EAAK2pL,QAAUlxL,EAAQkxL,QAAUI,GAAgBrhD,EAAOjwI,EAASuH,EAAMgqL,GAC/EA,SAEJ,CACA,SAASG,GAAOnqL,EAAM2pL,GACpB,IAAI,EAACxwJ,EAAC,MAAEnlB,GAAShU,EAMjB,MALe,UAAX2pL,EACFxwJ,GAAKnlB,EACe,WAAX21K,IACTxwJ,GAAMnlB,EAAQ,GAETmlB,CACT,CACA,SAASixJ,GAAOpqL,EAAMgqL,EAAQK,GAC5B,IAAI,EAACjxJ,EAAC,OAAElO,GAAUlrB,EAQlB,MAPe,QAAXgqL,EACF5wJ,GAAKixJ,EAELjxJ,GADoB,WAAX4wJ,EACJ9+J,EAASm/J,EAERn/J,EAAS,EAEVkO,CACT,CACA,SAASkxJ,GAAmB7xL,EAASuH,EAAMuqL,EAAW7hD,GACpD,MAAM,UAACmhD,EAAS,aAAEC,EAAY,aAAEv9C,GAAgB9zI,GAC1C,OAACkxL,EAAM,OAAEK,GAAUO,EACnBF,EAAiBR,EAAYC,GAC7B,QAAC95C,EAAO,SAAEG,EAAQ,WAAEF,EAAU,YAAEC,GAAeS,GAAcpE,GACnE,IAAIpzG,EAAIgxJ,GAAOnqL,EAAM2pL,GACrB,MAAMvwJ,EAAIgxJ,GAAOpqL,EAAMgqL,EAAQK,GAY/B,MAXe,WAAXL,EACa,SAAXL,EACFxwJ,GAAKkxJ,EACe,UAAXV,IACTxwJ,GAAKkxJ,GAEa,SAAXV,EACTxwJ,GAAK97B,KAAKiW,IAAI08H,EAASC,GAAc45C,EACjB,UAAXF,IACTxwJ,GAAK97B,KAAKiW,IAAI68H,EAAUD,GAAe25C,GAElC,CACL1wJ,EAAG+6F,GAAY/6F,EAAG,EAAGuvG,EAAM10H,MAAQhU,EAAKgU,OACxColB,EAAG86F,GAAY96F,EAAG,EAAGsvG,EAAMx9G,OAASlrB,EAAKkrB,QAE7C,CACA,SAASs/J,GAAY35B,EAASh7B,EAAOp9H,GACnC,MAAMy/J,EAAUtnB,GAAUn4I,EAAQy/J,SAClC,MAAiB,WAAVriC,EACHg7B,EAAQ13H,EAAI03H,EAAQ78I,MAAQ,EAClB,UAAV6hH,EACEg7B,EAAQ13H,EAAI03H,EAAQ78I,MAAQkkJ,EAAQzyD,MACpCorD,EAAQ13H,EAAI++H,EAAQlzI,IAC5B,CACA,SAASylK,GAAwB/vL,GAC/B,OAAOstL,GAAa,GAAIE,GAAcxtL,GACxC,CACA,SAASgwL,GAAqBxjK,EAAQ2pI,EAAS85B,GAC7C,OAAOp5C,GAAcrqH,EAAQ,CAC3B2pI,UACA85B,eACAvpL,KAAM,WAEV,CACA,SAASwpL,GAAkBvyL,EAAWooB,GACpC,MAAMupH,EAAWvpH,GAAWA,EAAQta,SAAWsa,EAAQta,QAAQ0qJ,SAAWpwI,EAAQta,QAAQ0qJ,QAAQx4J,UAClG,OAAO2xI,EAAW3xI,EAAU2xI,SAASA,GAAY3xI,CACnD,CACA,MAAMwyL,WAAgB5jL,GACpB,WAAA7Q,CAAYgI,GACVC,QACAjG,KAAK2gD,QAAU,EACf3gD,KAAKy8D,QAAU,GACfz8D,KAAK0yL,oBAAiB/6K,EACtB3X,KAAK2yL,WAAQh7K,EACb3X,KAAK4yL,uBAAoBj7K,EACzB3X,KAAK6yL,cAAgB,GACrB7yL,KAAK8oJ,iBAAcnxI,EACnB3X,KAAK2sJ,cAAWh1I,EAChB3X,KAAKswI,MAAQtqI,EAAOsqI,OAAStqI,EAAOu+I,OACpCvkJ,KAAKukJ,OAASvkJ,KAAKswI,MACnBtwI,KAAKK,QAAU2F,EAAO3F,QACtBL,KAAK8yL,gBAAan7K,EAClB3X,KAAK04J,WAAQ/gJ,EACb3X,KAAK0wL,gBAAa/4K,EAClB3X,KAAK4S,UAAO+E,EACZ3X,KAAK2wL,eAAYh5K,EACjB3X,KAAKiwL,YAASt4K,EACd3X,KAAKuxL,YAAS55K,EACd3X,KAAK4xL,YAASj6K,EACd3X,KAAK+gC,OAAIppB,EACT3X,KAAKghC,OAAIrpB,EACT3X,KAAK8yB,YAASnb,EACd3X,KAAK4b,WAAQjE,EACb3X,KAAK+yL,YAASp7K,EACd3X,KAAKgzL,YAASr7K,EACd3X,KAAKizL,iBAAct7K,EACnB3X,KAAKkzL,sBAAmBv7K,EACxB3X,KAAKmzL,qBAAkBx7K,CACzB,CACA,UAAAk1I,CAAWxsJ,GACTL,KAAKK,QAAUA,EACfL,KAAK4yL,uBAAoBj7K,EACzB3X,KAAK2sJ,cAAWh1I,CAClB,CACA,kBAAAq5I,GACE,MAAM5jF,EAASptE,KAAK4yL,kBACpB,GAAIxlH,EACF,OAAOA,EAET,MAAMkjE,EAAQtwI,KAAKswI,MACbjwI,EAAUL,KAAKK,QAAQm6I,WAAWx6I,KAAK6lF,cACvC3zD,EAAO7xB,EAAQg4B,SAAWi4G,EAAMjwI,QAAQ4vI,WAAa5vI,EAAQ6nJ,WAC7DA,EAAa,IAAIE,GAAWpoJ,KAAKswI,MAAOp+G,GAI9C,OAHIA,EAAK8zC,aACPhmE,KAAK4yL,kBAAoBl0L,OAAOqyJ,OAAO7I,IAElCA,CACT,CACA,UAAAriE,GACE,OAAO7lF,KAAK2sJ,WACZ3sJ,KAAK2sJ,SAAW2lC,GAAqBtyL,KAAKswI,MAAMzqD,aAAc7lF,KAAMA,KAAK6yL,eAC3E,CACA,QAAAO,CAAS/qK,EAAShoB,GAChB,MAAM,UAACJ,GAAaI,EACdgzL,EAAcpzL,EAAUozL,YAAY11L,MAAMqC,KAAM,CAACqoB,IACjDqwI,EAAQz4J,EAAUy4J,MAAM/6J,MAAMqC,KAAM,CAACqoB,IACrCirK,EAAarzL,EAAUqzL,WAAW31L,MAAMqC,KAAM,CAACqoB,IACrD,IAAI+tH,EAAQ,GAIZ,OAHAA,EAAQw5C,GAAax5C,EAAO05C,GAAcuD,IAC1Cj9C,EAAQw5C,GAAax5C,EAAO05C,GAAcp3B,IAC1CtiB,EAAQw5C,GAAax5C,EAAO05C,GAAcwD,IACnCl9C,CACT,CACA,aAAAm9C,CAAchB,EAAclyL,GAC1B,OAAOgyL,GAAwBhyL,EAAQJ,UAAUywL,WAAW/yL,MAAMqC,KAAM,CAACuyL,IAC3E,CACA,OAAAiB,CAAQjB,EAAclyL,GACpB,MAAM,UAACJ,GAAaI,EACdozL,EAAY,GAalB,OAZA5+K,EAAK09K,GAAelqK,IAClB,MAAMmoK,EAAW,CACf5vF,OAAQ,GACRw1C,MAAO,GACPq6C,MAAO,IAEHiD,EAASlB,GAAkBvyL,EAAWooB,GAC5CunK,GAAaY,EAAS5vF,OAAQkvF,GAAc4D,EAAOC,YAAY70L,KAAKkB,KAAMqoB,KAC1EunK,GAAaY,EAASp6C,MAAOs9C,EAAO57J,MAAMh5B,KAAKkB,KAAMqoB,IACrDunK,GAAaY,EAASC,MAAOX,GAAc4D,EAAOE,WAAW90L,KAAKkB,KAAMqoB,KACxEorK,EAAUvxL,KAAKsuL,EAAS,IAEnBiD,CACT,CACA,YAAAI,CAAatB,EAAclyL,GACzB,OAAOgyL,GAAwBhyL,EAAQJ,UAAU0wL,UAAUhzL,MAAMqC,KAAM,CAACuyL,IAC1E,CACA,SAAAuB,CAAUvB,EAAclyL,GACtB,MAAM,UAACJ,GAAaI,EACd0zL,EAAe9zL,EAAU8zL,aAAap2L,MAAMqC,KAAM,CAACuyL,IACnDtC,EAAShwL,EAAUgwL,OAAOtyL,MAAMqC,KAAM,CAACuyL,IACvCyB,EAAc/zL,EAAU+zL,YAAYr2L,MAAMqC,KAAM,CAACuyL,IACvD,IAAIn8C,EAAQ,GAIZ,OAHAA,EAAQw5C,GAAax5C,EAAO05C,GAAciE,IAC1C39C,EAAQw5C,GAAax5C,EAAO05C,GAAcG,IAC1C75C,EAAQw5C,GAAax5C,EAAO05C,GAAckE,IACnC59C,CACT,CACA,YAAA69C,CAAa5zL,GACX,MAAMw8D,EAAS78D,KAAKy8D,QACdh1D,EAAOzH,KAAKswI,MAAM7oI,KAClBwrL,EAAc,GACdC,EAAmB,GACnBC,EAAkB,GACxB,IACIj1L,EAAGuyB,EADH8hK,EAAe,GAEnB,IAAKr0L,EAAI,EAAGuyB,EAAMosC,EAAO5+D,OAAQC,EAAIuyB,IAAOvyB,EAC1Cq0L,EAAarwL,KAAK6tL,GAAkB/vL,KAAKswI,MAAOzzE,EAAO3+D,KAkBzD,OAhBImC,EAAQ2N,SACVukL,EAAeA,EAAavkL,QAAO,CAACjI,EAASiV,EAAO6B,IAAUxc,EAAQ2N,OAAOjI,EAASiV,EAAO6B,EAAOpV,MAElGpH,EAAQ6zL,WACV3B,EAAeA,EAAaliJ,MAAK,CAACvyC,EAAGC,IAAMsC,EAAQ6zL,SAASp2L,EAAGC,EAAG0J,MAEpEoN,EAAK09K,GAAelqK,IAClB,MAAMqrK,EAASlB,GAAkBnyL,EAAQJ,UAAWooB,GACpD4qK,EAAY/wL,KAAKwxL,EAAOS,WAAWr1L,KAAKkB,KAAMqoB,IAC9C6qK,EAAiBhxL,KAAKwxL,EAAOU,gBAAgBt1L,KAAKkB,KAAMqoB,IACxD8qK,EAAgBjxL,KAAKwxL,EAAOW,eAAev1L,KAAKkB,KAAMqoB,GAAS,IAEjEroB,KAAKizL,YAAcA,EACnBjzL,KAAKkzL,iBAAmBA,EACxBlzL,KAAKmzL,gBAAkBA,EACvBnzL,KAAK8yL,WAAaP,EACXA,CACT,CACA,MAAA9sJ,CAAOu5F,EAASo/C,GACd,MAAM/9K,EAAUL,KAAKK,QAAQm6I,WAAWx6I,KAAK6lF,cACvChpB,EAAS78D,KAAKy8D,QACpB,IAAI+1C,EACA+/E,EAAe,GACnB,GAAK11H,EAAO5+D,OAML,CACL,MAAM0sC,EAAW4kJ,GAAYlvL,EAAQsqC,UAAU7rC,KAAKkB,KAAM68D,EAAQ78D,KAAK0yL,gBACvEH,EAAevyL,KAAKi0L,aAAa5zL,GACjCL,KAAK04J,MAAQ14J,KAAKozL,SAASb,EAAclyL,GACzCL,KAAK0wL,WAAa1wL,KAAKuzL,cAAchB,EAAclyL,GACnDL,KAAK4S,KAAO5S,KAAKwzL,QAAQjB,EAAclyL,GACvCL,KAAK2wL,UAAY3wL,KAAK6zL,aAAatB,EAAclyL,GACjDL,KAAKiwL,OAASjwL,KAAK8zL,UAAUvB,EAAclyL,GAC3C,MAAMuH,EAAO5H,KAAK2yL,MAAQ3C,GAAehwL,KAAMK,GACzCi0L,EAAkB51L,OAAO02B,OAAO,CAAC,EAAGuV,EAAU/iC,GAC9CuqL,EAAYL,GAAmB9xL,KAAKswI,MAAOjwI,EAASi0L,GACpDC,EAAkBrC,GAAmB7xL,EAASi0L,EAAiBnC,EAAWnyL,KAAKswI,OACrFtwI,KAAKuxL,OAASY,EAAUZ,OACxBvxL,KAAK4xL,OAASO,EAAUP,OACxBp/E,EAAa,CACX7xD,QAAS,EACT5f,EAAGwzJ,EAAgBxzJ,EACnBC,EAAGuzJ,EAAgBvzJ,EACnBplB,MAAOhU,EAAKgU,MACZkX,OAAQlrB,EAAKkrB,OACbigK,OAAQpoJ,EAAS5J,EACjBiyJ,OAAQroJ,EAAS3J,EAErB,MA5BuB,IAAjBhhC,KAAK2gD,UACP6xD,EAAa,CACX7xD,QAAS,IA2Bf3gD,KAAK6yL,cAAgBN,EACrBvyL,KAAK2sJ,cAAWh1I,EACZ66F,GACFxyG,KAAKgxJ,qBAAqBvrH,OAAOzlC,KAAMwyG,GAErCwsB,GAAW3+H,EAAQm0L,UACrBn0L,EAAQm0L,SAAS11L,KAAKkB,KAAM,CAACswI,MAAOtwI,KAAKswI,MAAOmoB,QAASz4J,KAAMo+K,UAEnE,CACA,SAAAqW,CAAUC,EAAcpmH,EAAK1mE,EAAMvH,GACjC,MAAMs0L,EAAgB30L,KAAK40L,iBAAiBF,EAAc9sL,EAAMvH,GAChEiuE,EAAIwmE,OAAO6/C,EAAcjyI,GAAIiyI,EAAchyI,IAC3C2rB,EAAIwmE,OAAO6/C,EAAc/xI,GAAI+xI,EAAc9xI,IAC3CyrB,EAAIwmE,OAAO6/C,EAAcE,GAAIF,EAAcG,GAC7C,CACA,gBAAAF,CAAiBF,EAAc9sL,EAAMvH,GACnC,MAAM,OAACkxL,EAAM,OAAEK,GAAU5xL,MACnB,UAACyxL,EAAS,aAAEt9C,GAAgB9zI,GAC5B,QAACu3I,EAAO,SAAEG,EAAQ,WAAEF,EAAU,YAAEC,GAAeS,GAAcpE,IAC5DpzG,EAAGg0J,EAAK/zJ,EAAGg0J,GAAON,GACnB,MAAC94K,EAAK,OAAEkX,GAAUlrB,EACxB,IAAI86C,EAAIE,EAAIiyI,EAAIlyI,EAAIE,EAAIiyI,EAoCxB,MAnCe,WAAXlD,GACF/uI,EAAKmyI,EAAOliK,EAAS,EACN,SAAXy+J,GACF7uI,EAAKqyI,EACLnyI,EAAKF,EAAK+uI,EACV9uI,EAAKE,EAAK4uI,EACVqD,EAAKjyI,EAAK4uI,IAEV/uI,EAAKqyI,EAAMn5K,EACXgnC,EAAKF,EAAK+uI,EACV9uI,EAAKE,EAAK4uI,EACVqD,EAAKjyI,EAAK4uI,GAEZoD,EAAKnyI,IAGHE,EADa,SAAX2uI,EACGwD,EAAM9vL,KAAKiW,IAAI08H,EAASC,GAAc,EACvB,UAAX05C,EACJwD,EAAMn5K,EAAQ3W,KAAKiW,IAAI68H,EAAUD,GAAe25C,EAEhDzxL,KAAK+yL,OAEG,QAAXnB,GACFjvI,EAAKqyI,EACLnyI,EAAKF,EAAK8uI,EACV/uI,EAAKE,EAAK6uI,EACVoD,EAAKjyI,EAAK6uI,IAEV9uI,EAAKqyI,EAAMliK,EACX+vB,EAAKF,EAAK8uI,EACV/uI,EAAKE,EAAK6uI,EACVoD,EAAKjyI,EAAK6uI,GAEZqD,EAAKnyI,GAEA,CAACD,KAAIE,KAAIiyI,KAAIlyI,KAAIE,KAAIiyI,KAC9B,CACA,SAAA9qB,CAAUhsB,EAAI1vE,EAAKjuE,GACjB,MAAMq4J,EAAQ14J,KAAK04J,MACbz6J,EAASy6J,EAAMz6J,OACrB,IAAIiwL,EAAW0C,EAAc1yL,EAC7B,GAAID,EAAQ,CACV,MAAMmvL,EAAY/qC,GAAchiJ,EAAQ23B,IAAKh4B,KAAK+gC,EAAG/gC,KAAK4b,OAQ1D,IAPAoiI,EAAGj9G,EAAIqxJ,GAAYpyL,KAAMK,EAAQmhK,WAAYnhK,GAC7CiuE,EAAI0oE,UAAYo2C,EAAUp2C,UAAU32I,EAAQmhK,YAC5ClzF,EAAI2oE,aAAe,SACnBi3C,EAAYz1C,GAAOp4I,EAAQ6tL,WAC3B0C,EAAevwL,EAAQuwL,aACvBtiH,EAAIyoE,UAAY12I,EAAQ40L,WACxB3mH,EAAIkiE,KAAO09C,EAAU/wK,OAChBjf,EAAI,EAAGA,EAAID,IAAUC,EACxBowE,EAAIsoE,SAAS8hB,EAAMx6J,GAAIkvL,EAAUrsJ,EAAEi9G,EAAGj9G,GAAIi9G,EAAGh9G,EAAIktJ,EAAUx9C,WAAa,GACxEsN,EAAGh9G,GAAKktJ,EAAUx9C,WAAakgD,EAC3B1yL,EAAI,IAAMD,IACZ+/I,EAAGh9G,GAAK3gC,EAAQwwL,kBAAoBD,EAG1C,CACF,CACA,aAAAsE,CAAc5mH,EAAK0vE,EAAI9/I,EAAGkvL,EAAW/sL,GACnC,MAAM4yL,EAAcjzL,KAAKizL,YAAY/0L,GAC/Bk2L,EAAkBp0L,KAAKkzL,iBAAiBh1L,IACxC,UAACutL,EAAS,SAAEC,EAAQ,WAAEpb,GAAcjwK,EACpC6vL,EAAWz3C,GAAOp4I,EAAQ6vL,UAC1BiF,EAAS/C,GAAYpyL,KAAM,OAAQK,GACnC+0L,EAAYhI,EAAUrsJ,EAAEo0J,GACxBE,EAAU5J,EAAYyE,EAASx/C,YAAcw/C,EAASx/C,WAAa+6C,GAAa,EAAI,EACpF6J,EAASt3C,EAAGh9G,EAAIq0J,EACtB,GAAIh1L,EAAQsrL,cAAe,CACzB,MAAMiC,EAAc,CAClBt5C,OAAQrvI,KAAKkW,IAAIuwK,EAAUD,GAAa,EACxCr3C,WAAYggD,EAAgBhgD,WAC5BC,SAAU+/C,EAAgB//C,SAC1BY,YAAa,GAETilB,EAAUkzB,EAAUnrC,WAAWmzC,EAAW1J,GAAYA,EAAW,EACjEvxB,EAAUm7B,EAAS7J,EAAY,EACrCn9G,EAAIkoE,YAAcn2I,EAAQk1L,mBAC1BjnH,EAAIyoE,UAAY12I,EAAQk1L,mBACxBxhD,GAAUzlE,EAAKs/G,EAAa1zB,EAASC,GACrC7rF,EAAIkoE,YAAcy8C,EAAY9iD,YAC9B7hE,EAAIyoE,UAAYk8C,EAAY/iD,gBAC5B6D,GAAUzlE,EAAKs/G,EAAa1zB,EAASC,EACvC,KAAO,CACL7rF,EAAImoE,UAAYpzH,EAAS4vK,EAAYh+C,aAAehwI,KAAKiW,OAAOxc,OAAOkL,OAAOqpL,EAAYh+C,cAAiBg+C,EAAYh+C,aAAe,EACtI3mE,EAAIkoE,YAAcy8C,EAAY9iD,YAC9B7hE,EAAIs7F,YAAYqpB,EAAY9tC,YAAc,IAC1C72E,EAAIu7F,eAAiBopB,EAAY7tC,kBAAoB,EACrD,MAAMowC,EAASpI,EAAUnrC,WAAWmzC,EAAW1J,EAAWpb,GACpDmlB,EAASrI,EAAUnrC,WAAWmrC,EAAUprC,MAAMozC,EAAW,GAAI1J,EAAWpb,EAAa,GACrF0O,EAAezmC,GAAc06C,EAAYjU,cAC3CtgL,OAAOkL,OAAOo1K,GAAchvG,MAAKxtE,GAAW,IAANA,KACxC8rE,EAAImmE,YACJnmE,EAAIyoE,UAAY12I,EAAQk1L,mBACxB59C,GAAmBrpE,EAAK,CACtBvtC,EAAGy0J,EACHx0J,EAAGs0J,EACH9yD,EAAGkpD,EACH/oL,EAAG8oL,EACHn3C,OAAQ0qC,IAEV1wG,EAAIwK,OACJxK,EAAI4mE,SACJ5mE,EAAIyoE,UAAYk8C,EAAY/iD,gBAC5B5hE,EAAImmE,YACJkD,GAAmBrpE,EAAK,CACtBvtC,EAAG00J,EACHz0J,EAAGs0J,EAAS,EACZ9yD,EAAGkpD,EAAW,EACd/oL,EAAG8oL,EAAY,EACfn3C,OAAQ0qC,IAEV1wG,EAAIwK,SAEJxK,EAAIyoE,UAAY12I,EAAQk1L,mBACxBjnH,EAAIm7F,SAAS+rB,EAAQF,EAAQ5J,EAAUD,GACvCn9G,EAAIonH,WAAWF,EAAQF,EAAQ5J,EAAUD,GACzCn9G,EAAIyoE,UAAYk8C,EAAY/iD,gBAC5B5hE,EAAIm7F,SAASgsB,EAAQH,EAAS,EAAG5J,EAAW,EAAGD,EAAY,GAE/D,CACAn9G,EAAIyoE,UAAY/2I,KAAKmzL,gBAAgBj1L,EACvC,CACA,QAAAy3L,CAAS33C,EAAI1vE,EAAKjuE,GAChB,MAAM,KAACuS,GAAQ5S,MACT,YAACgxL,EAAW,UAAE4E,EAAS,cAAE7E,EAAa,UAAEtF,EAAS,SAAEC,EAAQ,WAAEpb,GAAcjwK,EAC3E6vL,EAAWz3C,GAAOp4I,EAAQ6vL,UAChC,IAAIY,EAAiBZ,EAASx/C,WAC1BmlD,EAAe,EACnB,MAAMzI,EAAY/qC,GAAchiJ,EAAQ23B,IAAKh4B,KAAK+gC,EAAG/gC,KAAK4b,OACpDk6K,EAAiB,SAAStkF,GAC9BljC,EAAIsoE,SAASplC,EAAM47E,EAAUrsJ,EAAEi9G,EAAGj9G,EAAI80J,GAAe73C,EAAGh9G,EAAI8vJ,EAAiB,GAC7E9yC,EAAGh9G,GAAK8vJ,EAAiBE,CAC3B,EACM+E,EAA0B3I,EAAUp2C,UAAU4+C,GACpD,IAAIpF,EAAUwF,EAAW5/C,EAAOl4I,EAAG4sB,EAAG6sG,EAAMub,EAU5C,IATA5kE,EAAI0oE,UAAY4+C,EAChBtnH,EAAI2oE,aAAe,SACnB3oE,EAAIkiE,KAAO0/C,EAAS/yK,OACpB6gI,EAAGj9G,EAAIqxJ,GAAYpyL,KAAM+1L,EAAyB11L,GAClDiuE,EAAIyoE,UAAY12I,EAAQ41L,UACxBphL,EAAK7U,KAAK0wL,WAAYoF,GACtBD,EAAe9E,GAA6C,UAA5BgF,EACd,WAAdH,EAA0BlK,EAAW,EAAIpb,EAAeob,EAAW,EAAIpb,EACvE,EACCpyK,EAAI,EAAGy5H,EAAO/kH,EAAK3U,OAAQC,EAAIy5H,IAAQz5H,EAAG,CAU7C,IATAsyL,EAAW59K,EAAK1U,GAChB83L,EAAYh2L,KAAKmzL,gBAAgBj1L,GACjCowE,EAAIyoE,UAAYi/C,EAChBnhL,EAAK27K,EAAS5vF,OAAQk1F,GACtB1/C,EAAQo6C,EAASp6C,MACb26C,GAAiB36C,EAAMn4I,SACzB+B,KAAKk1L,cAAc5mH,EAAK0vE,EAAI9/I,EAAGkvL,EAAW/sL,GAC1CywL,EAAiB7rL,KAAKiW,IAAIg1K,EAASx/C,WAAY+6C,IAE5C3gK,EAAI,EAAGooH,EAAOkD,EAAMn4I,OAAQ6sB,EAAIooH,IAAQpoH,EAC3CgrK,EAAe1/C,EAAMtrH,IACrBgmK,EAAiBZ,EAASx/C,WAE5B77H,EAAK27K,EAASC,MAAOqF,EACvB,CACAD,EAAe,EACf/E,EAAiBZ,EAASx/C,WAC1B77H,EAAK7U,KAAK2wL,UAAWmF,GACrB93C,EAAGh9G,GAAKgwJ,CACV,CACA,UAAAkF,CAAWl4C,EAAI1vE,EAAKjuE,GAClB,MAAM4vL,EAASjwL,KAAKiwL,OACdhyL,EAASgyL,EAAOhyL,OACtB,IAAIkyL,EAAYjyL,EAChB,GAAID,EAAQ,CACV,MAAMmvL,EAAY/qC,GAAchiJ,EAAQ23B,IAAKh4B,KAAK+gC,EAAG/gC,KAAK4b,OAQ1D,IAPAoiI,EAAGj9G,EAAIqxJ,GAAYpyL,KAAMK,EAAQ81L,YAAa91L,GAC9C29I,EAAGh9G,GAAK3gC,EAAQ4wL,gBAChB3iH,EAAI0oE,UAAYo2C,EAAUp2C,UAAU32I,EAAQ81L,aAC5C7nH,EAAI2oE,aAAe,SACnBk5C,EAAa13C,GAAOp4I,EAAQ8vL,YAC5B7hH,EAAIyoE,UAAY12I,EAAQ+1L,YACxB9nH,EAAIkiE,KAAO2/C,EAAWhzK,OACjBjf,EAAI,EAAGA,EAAID,IAAUC,EACxBowE,EAAIsoE,SAASq5C,EAAO/xL,GAAIkvL,EAAUrsJ,EAAEi9G,EAAGj9G,GAAIi9G,EAAGh9G,EAAImvJ,EAAWz/C,WAAa,GAC1EsN,EAAGh9G,GAAKmvJ,EAAWz/C,WAAarwI,EAAQ6wL,aAE5C,CACF,CACA,cAAA1nB,CAAexrB,EAAI1vE,EAAK+nH,EAAah2L,GACnC,MAAM,OAACkxL,EAAM,OAAEK,GAAU5xL,MACnB,EAAC+gC,EAAC,EAAEC,GAAKg9G,GACT,MAACpiI,EAAK,OAAEkX,GAAUujK,GAClB,QAACz+C,EAAO,SAAEG,EAAQ,WAAEF,EAAU,YAAEC,GAAeS,GAAcl4I,EAAQ8zI,cAC3E7lE,EAAIyoE,UAAY12I,EAAQ6vI,gBACxB5hE,EAAIkoE,YAAcn2I,EAAQ8vI,YAC1B7hE,EAAImoE,UAAYp2I,EAAQ40I,YACxB3mE,EAAImmE,YACJnmE,EAAIumE,OAAO9zG,EAAI62G,EAAS52G,GACT,QAAX4wJ,GACF5xL,KAAKy0L,UAAUz2C,EAAI1vE,EAAK+nH,EAAah2L,GAEvCiuE,EAAIwmE,OAAO/zG,EAAInlB,EAAQm8H,EAAU/2G,GACjCstC,EAAIgoH,iBAAiBv1J,EAAInlB,EAAOolB,EAAGD,EAAInlB,EAAOolB,EAAI+2G,GACnC,WAAX65C,GAAkC,UAAXL,GACzBvxL,KAAKy0L,UAAUz2C,EAAI1vE,EAAK+nH,EAAah2L,GAEvCiuE,EAAIwmE,OAAO/zG,EAAInlB,EAAOolB,EAAIlO,EAASglH,GACnCxpE,EAAIgoH,iBAAiBv1J,EAAInlB,EAAOolB,EAAIlO,EAAQiO,EAAInlB,EAAQk8H,EAAa92G,EAAIlO,GAC1D,WAAX8+J,GACF5xL,KAAKy0L,UAAUz2C,EAAI1vE,EAAK+nH,EAAah2L,GAEvCiuE,EAAIwmE,OAAO/zG,EAAI82G,EAAY72G,EAAIlO,GAC/Bw7C,EAAIgoH,iBAAiBv1J,EAAGC,EAAIlO,EAAQiO,EAAGC,EAAIlO,EAAS+kH,GACrC,WAAX+5C,GAAkC,SAAXL,GACzBvxL,KAAKy0L,UAAUz2C,EAAI1vE,EAAK+nH,EAAah2L,GAEvCiuE,EAAIwmE,OAAO/zG,EAAGC,EAAI42G,GAClBtpE,EAAIgoH,iBAAiBv1J,EAAGC,EAAGD,EAAI62G,EAAS52G,GACxCstC,EAAIsmE,YACJtmE,EAAIwK,OACAz4E,EAAQ40I,YAAc,GACxB3mE,EAAI4mE,QAER,CACA,sBAAAqhD,CAAuBl2L,GACrB,MAAMiwI,EAAQtwI,KAAKswI,MACbsV,EAAQ5lJ,KAAK8oJ,YACb0tC,EAAQ5wC,GAASA,EAAM7kH,EACvB01J,EAAQ7wC,GAASA,EAAM5kH,EAC7B,GAAIw1J,GAASC,EAAO,CAClB,MAAM9rJ,EAAW4kJ,GAAYlvL,EAAQsqC,UAAU7rC,KAAKkB,KAAMA,KAAKy8D,QAASz8D,KAAK0yL,gBAC7E,IAAK/nJ,EACH,OAEF,MAAM/iC,EAAO5H,KAAK2yL,MAAQ3C,GAAehwL,KAAMK,GACzCi0L,EAAkB51L,OAAO02B,OAAO,CAAC,EAAGuV,EAAU3qC,KAAK2yL,OACnDR,EAAYL,GAAmBxhD,EAAOjwI,EAASi0L,GAC/CpkJ,EAAQgiJ,GAAmB7xL,EAASi0L,EAAiBnC,EAAW7hD,GAClEkmD,EAAMhvC,MAAQt3G,EAAMnP,GAAK01J,EAAMjvC,MAAQt3G,EAAMlP,IAC/ChhC,KAAKuxL,OAASY,EAAUZ,OACxBvxL,KAAK4xL,OAASO,EAAUP,OACxB5xL,KAAK4b,MAAQhU,EAAKgU,MAClB5b,KAAK8yB,OAASlrB,EAAKkrB,OACnB9yB,KAAK+yL,OAASpoJ,EAAS5J,EACvB/gC,KAAKgzL,OAASroJ,EAAS3J,EACvBhhC,KAAKgxJ,qBAAqBvrH,OAAOzlC,KAAMkwC,GAE3C,CACF,CACA,WAAAwmJ,GACE,QAAS12L,KAAK2gD,OAChB,CACA,IAAAulG,CAAK53E,GACH,MAAMjuE,EAAUL,KAAKK,QAAQm6I,WAAWx6I,KAAK6lF,cAC7C,IAAIllC,EAAU3gD,KAAK2gD,QACnB,IAAKA,EACH,OAEF3gD,KAAKu2L,uBAAuBl2L,GAC5B,MAAMg2L,EAAc,CAClBz6K,MAAO5b,KAAK4b,MACZkX,OAAQ9yB,KAAK8yB,QAETkrH,EAAK,CACTj9G,EAAG/gC,KAAK+gC,EACRC,EAAGhhC,KAAKghC,GAEV2f,EAAU17C,KAAKyW,IAAIilC,GAAW,KAAO,EAAIA,EACzC,MAAMm/G,EAAUtnB,GAAUn4I,EAAQy/J,SAC5B62B,EAAoB32L,KAAK04J,MAAMz6J,QAAU+B,KAAK0wL,WAAWzyL,QAAU+B,KAAK4S,KAAK3U,QAAU+B,KAAK2wL,UAAU1yL,QAAU+B,KAAKiwL,OAAOhyL,OAC9HoC,EAAQg4B,SAAWs+J,IACrBroH,EAAI2kE,OACJ3kE,EAAIsoH,YAAcj2I,EAClB3gD,KAAKwpK,eAAexrB,EAAI1vE,EAAK+nH,EAAah2L,GAC1CiiJ,GAAsBh0E,EAAKjuE,EAAQ2tL,eACnChwC,EAAGh9G,GAAK8+H,EAAQnzI,IAChB3sB,KAAKgqK,UAAUhsB,EAAI1vE,EAAKjuE,GACxBL,KAAK21L,SAAS33C,EAAI1vE,EAAKjuE,GACvBL,KAAKk2L,WAAWl4C,EAAI1vE,EAAKjuE,GACzBqiJ,GAAqBp0E,EAAKjuE,EAAQ2tL,eAClC1/G,EAAI+kE,UAER,CACA,iBAAA2qC,GACE,OAAOh+K,KAAKy8D,SAAW,EACzB,CACA,iBAAAwhH,CAAkBC,EAAgBuR,GAChC,MAAMtR,EAAan+K,KAAKy8D,QAClBI,EAASqhH,EAAe35K,KAAI,EAAEszH,eAAc78G,YAChD,MAAMnO,EAAO7M,KAAKswI,MAAMyd,eAAel2B,GACvC,IAAKhrH,EACH,MAAM,IAAIvM,MAAM,kCAAoCu3H,GAEtD,MAAO,CACLA,eACA9xH,QAAS8G,EAAKpF,KAAKuT,GACnBA,QACD,IAEGgkH,GAAWxH,EAAe2mD,EAAYthH,GACtCg6H,EAAkB72L,KAAK82L,iBAAiBj6H,EAAQ4yH,IAClDzwD,GAAW63D,KACb72L,KAAKy8D,QAAUI,EACf78D,KAAK0yL,eAAiBjD,EACtBzvL,KAAK+2L,qBAAsB,EAC3B/2L,KAAKylC,QAAO,GAEhB,CACA,WAAA5a,CAAYvtB,EAAG8gL,EAAQ/E,GAAc,GACnC,GAAI+E,GAAUp+K,KAAK+2L,oBACjB,OAAO,EAET/2L,KAAK+2L,qBAAsB,EAC3B,MAAM12L,EAAUL,KAAKK,QACf89K,EAAan+K,KAAKy8D,SAAW,GAC7BI,EAAS78D,KAAKw+K,mBAAmBlhL,EAAG6gL,EAAYC,EAAQ/E,GACxDwd,EAAkB72L,KAAK82L,iBAAiBj6H,EAAQv/D,GAChD0hI,EAAUo/C,IAAW5mD,EAAe36D,EAAQshH,IAAe0Y,EAWjE,OAVI73D,IACFh/H,KAAKy8D,QAAUI,GACXx8D,EAAQg4B,SAAWh4B,EAAQm0L,YAC7Bx0L,KAAK0yL,eAAiB,CACpB3xJ,EAAGzjC,EAAEyjC,EACLC,EAAG1jC,EAAE0jC,GAEPhhC,KAAKylC,QAAO,EAAM24I,KAGfp/C,CACT,CACA,kBAAAw/C,CAAmBlhL,EAAG6gL,EAAYC,EAAQ/E,GACxC,MAAMh5K,EAAUL,KAAKK,QACrB,GAAe,aAAX/C,EAAE0L,KACJ,MAAO,GAET,IAAKqwK,EACH,OAAO8E,EAET,MAAMthH,EAAS78D,KAAKswI,MAAM+sC,0BAA0B//K,EAAG+C,EAAQg1E,KAAMh1E,EAAS+9K,GAI9E,OAHI/9K,EAAQk3H,SACV16D,EAAO06D,UAEF16D,CACT,CACA,gBAAAi6H,CAAiBj6H,EAAQv/D,GACvB,MAAM,OAACy1L,EAAM,OAAEC,EAAM,QAAE3yL,GAAWL,KAC5B2qC,EAAW4kJ,GAAYlvL,EAAQsqC,UAAU7rC,KAAKkB,KAAM68D,EAAQv/D,GAClE,OAAoB,IAAbqtC,IAAuBooJ,IAAWpoJ,EAAS5J,GAAKiyJ,IAAWroJ,EAAS3J,EAC7E,EAEFyxJ,GAAQlD,YAAcA,GACtB,IAAIyH,GAAiB,CACnBz3L,GAAI,UACJ4G,SAAUssL,GACVlD,eACA,SAAAjjI,CAAUgkF,EAAO26C,EAAO5qL,GAClBA,IACFiwI,EAAMmoB,QAAU,IAAIg6B,GAAQ,CAACniD,QAAOjwI,YAExC,EACA,YAAAwnF,CAAayoD,EAAO26C,EAAO5qL,GACrBiwI,EAAMmoB,SACRnoB,EAAMmoB,QAAQ5L,WAAWxsJ,EAE7B,EACA,KAAAwE,CAAMyrI,EAAO26C,EAAO5qL,GACdiwI,EAAMmoB,SACRnoB,EAAMmoB,QAAQ5L,WAAWxsJ,EAE7B,EACA,SAAA42L,CAAU3mD,GACR,MAAMmoB,EAAUnoB,EAAMmoB,QACtB,GAAIA,GAAWA,EAAQi+B,cAAe,CACpC,MAAM7qL,EAAO,CACX4sJ,WAEF,IAAuD,IAAnDnoB,EAAMy0B,cAAc,oBAAqBl5J,GAC3C,OAEF4sJ,EAAQvS,KAAK5V,EAAMhiE,KACnBgiE,EAAMy0B,cAAc,mBAAoBl5J,EAC1C,CACF,EACA,UAAA+iL,CAAWt+C,EAAOzkI,GAChB,GAAIykI,EAAMmoB,QAAS,CACjB,MAAMwE,EAAmBpxJ,EAAKuyK,OAC1B9tC,EAAMmoB,QAAQ5tI,YAAYhf,EAAKnH,MAAOu4J,EAAkBpxJ,EAAKwtK,eAC/DxtK,EAAKmzH,SAAU,EAEnB,CACF,EACA/rF,SAAU,CACR5a,SAAS,EACTm8J,SAAU,KACV7pJ,SAAU,UACVulG,gBAAiB,kBACjB+kD,WAAY,OACZ/G,UAAW,CACTn/C,OAAQ,QAEV6hD,aAAc,EACdC,kBAAmB,EACnBrvB,WAAY,OACZy0B,UAAW,OACXjF,YAAa,EACbd,SAAU,CACV,EACA0F,UAAW,OACXQ,YAAa,OACblF,cAAe,EACfD,gBAAiB,EACjBd,WAAY,CACVphD,OAAQ,QAEVonD,YAAa,OACbr2B,QAAS,EACT4xB,aAAc,EACdD,UAAW,EACXt9C,aAAc,EACds3C,UAAW,CAACn9G,EAAKp8C,IAASA,EAAKg+J,SAAStoL,KACxC8jL,SAAU,CAACp9G,EAAKp8C,IAASA,EAAKg+J,SAAStoL,KACvC2tL,mBAAoB,OACpBxE,eAAe,EACfzgB,WAAY,EACZngC,YAAa,gBACb8E,YAAa,EACbhF,UAAW,CACTjmH,SAAU,IACVo9H,OAAQ,gBAEVc,WAAY,CACVH,QAAS,CACP/+I,KAAM,SACNwpG,WAAY,CAAC,IAAK,IAAK,QAAS,SAAU,SAAU,WAEtD7xD,QAAS,CACPymG,OAAQ,SACRp9H,SAAU,MAGd/pB,UAAW,CACTozL,YAAa75K,EACb,KAAAk/I,CAAM65B,GACJ,GAAIA,EAAat0L,OAAS,EAAG,CAC3B,MAAMwyC,EAAO8hJ,EAAa,GACpBpjC,EAAS1+G,EAAK6/F,MAAM7oI,KAAK0nJ,OACzB+nC,EAAa/nC,EAASA,EAAOlxJ,OAAS,EAC5C,GAAI+B,MAAQA,KAAKK,SAAiC,YAAtBL,KAAKK,QAAQg1E,KACvC,OAAO5kC,EAAK1iC,QAAQ+pB,OAAS,GACxB,GAAI2Y,EAAK3Y,MACd,OAAO2Y,EAAK3Y,MACP,GAAIo/J,EAAa,GAAKzmJ,EAAK/kB,UAAYwrK,EAC5C,OAAO/nC,EAAO1+G,EAAK/kB,UAEvB,CACA,MAAO,EACT,EACA4nK,WAAY95K,EACZk3K,WAAYl3K,EACZm6K,YAAan6K,EACb,KAAAse,CAAMgjI,GACJ,GAAI96J,MAAQA,KAAKK,SAAiC,YAAtBL,KAAKK,QAAQg1E,KACvC,OAAOylF,EAAYhjI,MAAQ,KAAOgjI,EAAYE,gBAAkBF,EAAYE,eAE9E,IAAIljI,EAAQgjI,EAAY/sJ,QAAQ+pB,OAAS,GACrCA,IACFA,GAAS,MAEX,MAAM/6B,EAAQ+9J,EAAYE,eAI1B,OAHKjkC,EAAch6H,KACjB+6B,GAAS/6B,GAEJ+6B,CACT,EACA,UAAAq8J,CAAWr5B,GACT,MAAMjuJ,EAAOiuJ,EAAYxqB,MAAMyd,eAAe+M,EAAYjjC,cACpDx3H,EAAUwM,EAAKo8C,WAAWg2F,SAAS6b,EAAYpvI,WACrD,MAAO,CACLykH,YAAa9vI,EAAQ8vI,YACrBD,gBAAiB7vI,EAAQ6vI,gBACzB+E,YAAa50I,EAAQ40I,YACrBkQ,WAAY9kJ,EAAQ8kJ,WACpBC,iBAAkB/kJ,EAAQ+kJ,iBAC1B45B,aAAc,EAElB,EACA,cAAAqV,GACE,OAAOr0L,KAAKK,QAAQ41L,SACtB,EACA,eAAA7B,CAAgBt5B,GACd,MAAMjuJ,EAAOiuJ,EAAYxqB,MAAMyd,eAAe+M,EAAYjjC,cACpDx3H,EAAUwM,EAAKo8C,WAAWg2F,SAAS6b,EAAYpvI,WACrD,MAAO,CACL0oH,WAAY/zI,EAAQ+zI,WACpBC,SAAUh0I,EAAQg0I,SAEtB,EACAu/C,WAAYp6K,EACZm3K,UAAWn3K,EACXu6K,aAAcv6K,EACdy2K,OAAQz2K,EACRw6K,YAAax6K,IAGjB6jJ,cAAe,CACb6yB,SAAU,OACVC,WAAY,OACZjC,UAAW,QAEbr+C,YAAa,CACXwC,YAAcvwI,GAAkB,WAATA,GAA8B,aAATA,GAAgC,aAATA,EACnEwwI,YAAY,EACZryI,UAAW,CACToyI,aAAa,EACbC,YAAY,GAEdrC,UAAW,CACTsC,WAAW,GAEb2V,WAAY,CACV3V,UAAW,cAGfmlC,uBAAwB,CAAC,gBAGvBpmC,GAAuB5yI,OAAOqyJ,OAAO,CACzC/qI,UAAW,KACXmxK,WAAY5P,GACZ6P,OAAQp8K,GACR+wK,OAAQ4C,GACR0I,SAAU/H,GACVR,MAAOO,GACPoD,QAASuE,KAGT,MAAMM,GAAc,CAACnoC,EAAQzzG,EAAK1gC,EAAOu8K,KACpB,kBAAR77I,GACT1gC,EAAQm0I,EAAOjtJ,KAAKw5C,GAAO,EAC3B67I,EAAY7sK,QAAQ,CAAC1P,QAAO8c,MAAO4jB,KAC1BhkB,MAAMgkB,KACf1gC,EAAQ,MAEHA,GAET,SAASw8K,GAAeroC,EAAQzzG,EAAK1gC,EAAOu8K,GAC1C,MAAMv6E,EAAQmyC,EAAOl0I,QAAQygC,GAC7B,IAAe,IAAXshE,EACF,OAAOs6E,GAAYnoC,EAAQzzG,EAAK1gC,EAAOu8K,GAEzC,MAAMv6H,EAAOmyF,EAAOsoC,YAAY/7I,GAChC,OAAOshE,IAAUhgD,EAAOhiD,EAAQgiG,CAClC,CACA,MAAMikD,GAAa,CAACjmJ,EAAOE,IAAkB,OAAVF,EAAiB,KAAO8gH,GAAY72H,KAAK6kD,MAAM9uC,GAAQ,EAAGE,GAC7F,MAAMw8K,WAAsB71B,GAC1B,WAAA7jK,CAAYgpJ,GACV/gJ,MAAM+gJ,GACNhnJ,KAAK23L,iBAAchgL,EACnB3X,KAAK43L,YAAc,EACnB53L,KAAK63L,aAAe,EACtB,CACA,IAAA7iK,CAAKqhJ,GACH,MAAMyhB,EAAQ93L,KAAK63L,aACnB,GAAIC,EAAM75L,OAAQ,CAChB,MAAMkxJ,EAASnvJ,KAAKovJ,YACpB,IAAK,MAAM,MAACp0I,EAAK,MAAE8c,KAAUggK,EACvB3oC,EAAOn0I,KAAW8c,GACpBq3H,EAAO7jI,OAAOtQ,EAAO,GAGzBhb,KAAK63L,aAAe,EACtB,CACA5xL,MAAM+uB,KAAKqhJ,EACb,CACA,KAAAlpK,CAAMuuC,EAAK1gC,GACT,GAAI+7G,EAAcr7E,GAChB,OAAO,KAET,MAAMyzG,EAASnvJ,KAAKovJ,YAGpB,OAFAp0I,EAAQqnB,SAASrnB,IAAUm0I,EAAOn0I,KAAW0gC,EAAM1gC,EAC/Cw8K,GAAeroC,EAAQzzG,EAAKw7E,EAAel8G,EAAO0gC,GAAM17C,KAAK63L,cAC1D52B,GAAWjmJ,EAAOm0I,EAAOlxJ,OAAS,EAC3C,CACA,mBAAA2lK,GACE,MAAM,WAACzlC,EAAU,WAAEC,GAAcp+H,KAAKq+H,gBACtC,IAAI,IAACljH,EAAG,IAAED,GAAOlb,KAAK4vJ,WAAU,GACJ,UAAxB5vJ,KAAKK,QAAQ4iJ,SACV9kB,IACHhjH,EAAM,GAEHijH,IACHljH,EAAMlb,KAAKovJ,YAAYnxJ,OAAS,IAGpC+B,KAAKmb,IAAMA,EACXnb,KAAKkb,IAAMA,CACb,CACA,UAAA6oJ,GACE,MAAM5oJ,EAAMnb,KAAKmb,IACXD,EAAMlb,KAAKkb,IACXiR,EAASnsB,KAAKK,QAAQ8rB,OACtBonI,EAAQ,GACd,IAAIpE,EAASnvJ,KAAKovJ,YAClBD,EAAkB,IAARh0I,GAAaD,IAAQi0I,EAAOlxJ,OAAS,EAAKkxJ,EAASA,EAAOzjJ,MAAMyP,EAAKD,EAAM,GACrFlb,KAAK43L,YAAc3yL,KAAKiW,IAAIi0I,EAAOlxJ,QAAUkuB,EAAS,EAAI,GAAI,GAC9DnsB,KAAK23L,YAAc33L,KAAKmb,KAAOgR,EAAS,GAAM,GAC9C,IAAK,IAAIpvB,EAAQoe,EAAKpe,GAASme,EAAKne,IAClCw2J,EAAMrxJ,KAAK,CAACnF,UAEd,OAAOw2J,CACT,CACA,gBAAAnD,CAAiBrzJ,GACf,MAAMoyJ,EAASnvJ,KAAKovJ,YACpB,OAAIryJ,GAAS,GAAKA,EAAQoyJ,EAAOlxJ,OACxBkxJ,EAAOpyJ,GAETA,CACT,CACA,SAAAurJ,GACEriJ,MAAMqiJ,YACDtoJ,KAAKu3B,iBACRv3B,KAAKuiK,gBAAkBviK,KAAKuiK,eAEhC,CACA,gBAAAjkC,CAAiBvhI,GAIf,MAHqB,kBAAVA,IACTA,EAAQiD,KAAKmN,MAAMpQ,IAEJ,OAAVA,EAAiB48D,IAAM35D,KAAKm3J,oBAAoBp6J,EAAQiD,KAAK23L,aAAe33L,KAAK43L,YAC1F,CACA,eAAApkC,CAAgBx4I,GACd,MAAMu4I,EAAQvzJ,KAAKuzJ,MACnB,OAAIv4I,EAAQ,GAAKA,EAAQu4I,EAAMt1J,OAAS,EAC/B,KAEF+B,KAAKs+H,iBAAiBi1B,EAAMv4I,GAAOje,MAC5C,CACA,gBAAAuqK,CAAiB9zB,GACf,OAAOvuI,KAAK6kD,MAAM9pD,KAAK23L,YAAc33L,KAAKwnK,mBAAmBh0B,GAASxzI,KAAK43L,YAC7E,CACA,YAAA3hC,GACE,OAAOj2J,KAAKs1I,MACd,EASF,SAASyiD,GAAgBC,EAAmBC,GAC1C,MAAM1kC,EAAQ,GACR2kC,EAAc,OACd,OAACj1C,EAAM,KAAE7lJ,EAAI,IAAE+d,EAAG,IAAED,EAAG,UAAEi9K,EAAS,MAAEpzE,EAAK,SAAEqzE,EAAQ,UAAEC,EAAS,cAAEC,GAAiBN,EACjFnrB,EAAOzvK,GAAQ,EACfm7L,EAAYH,EAAW,GACtBj9K,IAAKq9K,EAAMt9K,IAAKu9K,GAAQR,EACzB95D,GAAcpH,EAAc57G,GAC5BijH,GAAcrH,EAAc77G,GAC5Bw9K,GAAgB3hE,EAAchS,GAC9B4zE,GAAcF,EAAOD,IAASH,EAAY,GAChD,IACIxxC,EAAQ+xC,EAASC,EAASC,EAD1B3/B,EAAUz/B,GAAS++D,EAAOD,GAAQD,EAAY1rB,GAAQA,EAE1D,GAAI1T,EAAU++B,IAAgB/5D,IAAeC,EAC3C,MAAO,CAAC,CAACrhI,MAAOy7L,GAAO,CAACz7L,MAAO07L,IAEjCK,EAAY7zL,KAAK60B,KAAK2+J,EAAOt/B,GAAWl0J,KAAK6S,MAAM0gL,EAAOr/B,GACtD2/B,EAAYP,IACdp/B,EAAUz/B,EAAQo/D,EAAY3/B,EAAUo/B,EAAY1rB,GAAQA,GAEzD91C,EAAcohE,KACjBtxC,EAAS5hJ,KAAKC,IAAI,GAAIizL,GACtBh/B,EAAUl0J,KAAK60B,KAAKq/H,EAAUtS,GAAUA,GAE3B,UAAX5D,GACF21C,EAAU3zL,KAAK6S,MAAM0gL,EAAOr/B,GAAWA,EACvC0/B,EAAU5zL,KAAK60B,KAAK2+J,EAAOt/B,GAAWA,IAEtCy/B,EAAUJ,EACVK,EAAUJ,GAERt6D,GAAcC,GAAchhI,GAAQg9H,GAAal/G,EAAMC,GAAO/d,EAAM+7J,EAAU,MAChF2/B,EAAY7zL,KAAK6kD,MAAM7kD,KAAKkW,KAAKD,EAAMC,GAAOg+I,EAASi/B,IACvDj/B,GAAWj+I,EAAMC,GAAO29K,EACxBF,EAAUz9K,EACV09K,EAAU39K,GACDw9K,GACTE,EAAUz6D,EAAahjH,EAAMy9K,EAC7BC,EAAUz6D,EAAaljH,EAAM29K,EAC7BC,EAAY/zE,EAAQ,EACpBo0C,GAAW0/B,EAAUD,GAAWE,IAEhCA,GAAaD,EAAUD,GAAWz/B,EAEhC2/B,EADEj/D,EAAai/D,EAAW7zL,KAAK6kD,MAAMgvI,GAAY3/B,EAAU,KAC/Cl0J,KAAK6kD,MAAMgvI,GAEX7zL,KAAK60B,KAAKg/J,IAG1B,MAAMC,EAAgB9zL,KAAKiW,IACzBy/G,EAAew+B,GACfx+B,EAAei+D,IAEjB/xC,EAAS5hJ,KAAKC,IAAI,GAAI6xH,EAAcohE,GAAaY,EAAgBZ,GACjES,EAAU3zL,KAAK6kD,MAAM8uI,EAAU/xC,GAAUA,EACzCgyC,EAAU5zL,KAAK6kD,MAAM+uI,EAAUhyC,GAAUA,EACzC,IAAI/7H,EAAI,EAcR,IAbIqzG,IACEm6D,GAAiBM,IAAYz9K,GAC/Bo4I,EAAMrxJ,KAAK,CAACnF,MAAOoe,IACfy9K,EAAUz9K,GACZ2P,IAEE+uG,EAAa50H,KAAK6kD,OAAO8uI,EAAU9tK,EAAIquI,GAAWtS,GAAUA,EAAQ1rI,EAAK69K,GAAkB79K,EAAKw9K,EAAYX,KAC9GltK,KAEO8tK,EAAUz9K,GACnB2P,KAGGA,EAAIguK,IAAahuK,EACtByoI,EAAMrxJ,KAAK,CAACnF,MAAOkI,KAAK6kD,OAAO8uI,EAAU9tK,EAAIquI,GAAWtS,GAAUA,IAWpE,OATIzoB,GAAck6D,GAAiBO,IAAY39K,EACzCq4I,EAAMt1J,QAAU47H,EAAa05B,EAAMA,EAAMt1J,OAAS,GAAGlB,MAAOme,EAAK89K,GAAkB99K,EAAKy9K,EAAYX,IACtGzkC,EAAMA,EAAMt1J,OAAS,GAAGlB,MAAQme,EAEhCq4I,EAAMrxJ,KAAK,CAACnF,MAAOme,IAEXkjH,GAAcy6D,IAAY39K,GACpCq4I,EAAMrxJ,KAAK,CAACnF,MAAO87L,IAEdtlC,CACT,CACA,SAASylC,GAAkBj8L,EAAO47L,GAAY,WAAC1jC,EAAU,YAAE8K,IACzD,MAAMxrB,EAAMha,EAAUwlC,GAChBpzH,GAASsoH,EAAahwJ,KAAKkrD,IAAIokF,GAAOtvI,KAAKmrD,IAAImkF,KAAS,KACxDt2I,EAAS,IAAO06L,GAAc,GAAK57L,GAAOkB,OAChD,OAAOgH,KAAKkW,IAAIw9K,EAAahsJ,EAAO1uC,EACtC,CAhGAy5L,GAAcn4L,GAAK,WACnBm4L,GAAczkJ,SAAW,CACvBsgH,MAAO,CACLjxJ,SAAUo1L,GAAc/4L,UAAUyxJ,mBA8FtC,MAAM6oC,WAAwBp3B,GAC5B,WAAA7jK,CAAYgpJ,GACV/gJ,MAAM+gJ,GACNhnJ,KAAK8d,WAAQnG,EACb3X,KAAK+d,SAAMpG,EACX3X,KAAK23L,iBAAchgL,EACnB3X,KAAKk5L,eAAYvhL,EACjB3X,KAAK43L,YAAc,CACrB,CACA,KAAAzqL,CAAMuuC,EAAK1gC,GACT,OAAI+7G,EAAcr7E,KAGE,kBAARA,GAAoBA,aAAexuC,UAAYm1B,UAAUqZ,GAF5D,MAKDA,CACV,CACA,sBAAAy9I,GACE,MAAM,YAACngD,GAAeh5I,KAAKK,SACrB,WAAC89H,EAAU,WAAEC,GAAcp+H,KAAKq+H,gBACtC,IAAI,IAACljH,EAAG,IAAED,GAAOlb,KACjB,MAAMo5L,EAAS52L,GAAM2Y,EAAMgjH,EAAahjH,EAAM3Y,EACxC62L,EAAS72L,GAAM0Y,EAAMkjH,EAAaljH,EAAM1Y,EAC9C,GAAIw2I,EAAa,CACf,MAAMsgD,EAAUv+I,EAAK5/B,GACfo+K,EAAUx+I,EAAK7/B,GACjBo+K,EAAU,GAAKC,EAAU,EAC3BF,EAAO,GACEC,EAAU,GAAKC,EAAU,GAClCH,EAAO,EAEX,CACA,GAAIj+K,IAAQD,EAAK,CACf,IAAIiR,EAAS,GACTjR,GAAOhO,OAAOssL,kBAAoBr+K,GAAOjO,OAAOusL,oBAClDttK,EAASlnB,KAAKyW,IAAU,IAANR,IAEpBm+K,EAAOn+K,EAAMiR,GACR6sH,GACHogD,EAAOj+K,EAAMgR,EAEjB,CACAnsB,KAAKmb,IAAMA,EACXnb,KAAKkb,IAAMA,CACb,CACA,YAAAw+K,GACE,MAAMv7B,EAAWn+J,KAAKK,QAAQkzJ,MAC9B,IACI6kC,GADA,cAAC/5B,EAAa,SAAEs7B,GAAYx7B,EAehC,OAbIw7B,GACFvB,EAAWnzL,KAAK60B,KAAK95B,KAAKkb,IAAMy+K,GAAY10L,KAAK6S,MAAM9X,KAAKmb,IAAMw+K,GAAY,EAC1EvB,EAAW,MACbj0L,QAAQC,KAAK,UAAUpE,KAAKT,sBAAsBo6L,mCAA0CvB,8BAC5FA,EAAW,OAGbA,EAAWp4L,KAAK45L,mBAChBv7B,EAAgBA,GAAiB,IAE/BA,IACF+5B,EAAWnzL,KAAKkW,IAAIkjJ,EAAe+5B,IAE9BA,CACT,CACA,gBAAAwB,GACE,OAAO1sL,OAAOksH,iBAChB,CACA,UAAA2qC,GACE,MAAM7xI,EAAOlyB,KAAKK,QACZ89J,EAAWjsI,EAAKqhI,MACtB,IAAI6kC,EAAWp4L,KAAK05L,eACpBtB,EAAWnzL,KAAKiW,IAAI,EAAGk9K,GACvB,MAAMyB,EAA0B,CAC9BzB,WACAn1C,OAAQ/wH,EAAK+wH,OACb9nI,IAAK+W,EAAK/W,IACVD,IAAKgX,EAAKhX,IACVi9K,UAAWh6B,EAASg6B,UACpB/6L,KAAM+gK,EAASw7B,SACf50E,MAAOo5C,EAASp5C,MAChBszE,UAAWr4L,KAAKqqK,aAChBpV,WAAYj1J,KAAKu3B,eACjBwoI,YAAa5B,EAAS4B,aAAe,EACrCu4B,eAA0C,IAA3Bn6B,EAASm6B,eAEpBL,EAAYj4L,KAAKkiK,QAAUliK,KAC3BuzJ,EAAQwkC,GAAgB8B,EAAyB5B,GAYvD,MAXoB,UAAhB/lK,EAAK+wH,QACP3oB,EAAmBi5B,EAAOvzJ,KAAM,SAE9BkyB,EAAKqlG,SACPg8B,EAAMh8B,UACNv3H,KAAK8d,MAAQ9d,KAAKkb,IAClBlb,KAAK+d,IAAM/d,KAAKmb,MAEhBnb,KAAK8d,MAAQ9d,KAAKmb,IAClBnb,KAAK+d,IAAM/d,KAAKkb,KAEXq4I,CACT,CACA,SAAAjL,GACE,MAAMiL,EAAQvzJ,KAAKuzJ,MACnB,IAAIz1I,EAAQ9d,KAAKmb,IACb4C,EAAM/d,KAAKkb,IAEf,GADAjV,MAAMqiJ,YACFtoJ,KAAKK,QAAQ8rB,QAAUonI,EAAMt1J,OAAQ,CACvC,MAAMkuB,GAAUpO,EAAMD,GAAS7Y,KAAKiW,IAAIq4I,EAAMt1J,OAAS,EAAG,GAAK,EAC/D6f,GAASqO,EACTpO,GAAOoO,CACT,CACAnsB,KAAK23L,YAAc75K,EACnB9d,KAAKk5L,UAAYn7K,EACjB/d,KAAK43L,YAAc75K,EAAMD,CAC3B,CACA,gBAAAsyI,CAAiBrzJ,GACf,OAAO4kJ,GAAa5kJ,EAAOiD,KAAKswI,MAAMjwI,QAAQkhJ,OAAQvhJ,KAAKK,QAAQkzJ,MAAM3R,OAC3E,EAGF,MAAMk4C,WAAoBb,GACxB,mBAAAr1B,GACE,MAAM,IAACzoJ,EAAG,IAAED,GAAOlb,KAAK4vJ,WAAU,GAClC5vJ,KAAKmb,IAAM67G,EAAe77G,GAAOA,EAAM,EACvCnb,KAAKkb,IAAM87G,EAAe97G,GAAOA,EAAM,EACvClb,KAAKm5L,wBACP,CACA,gBAAAS,GACE,MAAM3kC,EAAaj1J,KAAKu3B,eAClBt5B,EAASg3J,EAAaj1J,KAAK4b,MAAQ5b,KAAK8yB,OACxCitI,EAAcxlC,EAAUv6H,KAAKK,QAAQkzJ,MAAMwM,aAC3CpzH,GAASsoH,EAAahwJ,KAAKkrD,IAAI4vG,GAAe96J,KAAKmrD,IAAI2vG,KAAiB,KACxE+G,EAAW9mK,KAAKmnK,wBAAwB,GAC9C,OAAOliK,KAAK60B,KAAK77B,EAASgH,KAAKkW,IAAI,GAAI2rJ,EAASp2B,WAAa/jG,GAC/D,CACA,gBAAA2xF,CAAiBvhI,GACf,OAAiB,OAAVA,EAAiB48D,IAAM35D,KAAKm3J,oBAAoBp6J,EAAQiD,KAAK23L,aAAe33L,KAAK43L,YAC1F,CACA,gBAAAtwB,CAAiB9zB,GACf,OAAOxzI,KAAK23L,YAAc33L,KAAKwnK,mBAAmBh0B,GAASxzI,KAAK43L,WAClE,EASF,SAASmC,GAAQC,GACf,MAAMryC,EAASqyC,EAAW/0L,KAAKC,IAAI,GAAID,KAAK6S,MAAM2hH,EAAMugE,KACxD,OAAkB,IAAXryC,CACT,CACA,SAASsyC,GAAcjC,EAAmBC,GACxC,MAAMiC,EAASj1L,KAAK6S,MAAM2hH,EAAMw+D,EAAU/8K,MACpCi/K,EAAiBl1L,KAAK60B,KAAKm+J,EAAU/8K,IAAMjW,KAAKC,IAAI,GAAIg1L,IACxD3mC,EAAQ,GACd,IAAIymC,EAAU/iE,EAAgB+gE,EAAkB78K,IAAKlW,KAAKC,IAAI,GAAID,KAAK6S,MAAM2hH,EAAMw+D,EAAU98K,QACzF8gG,EAAMh3G,KAAK6S,MAAM2hH,EAAMugE,IACvBI,EAAcn1L,KAAK6S,MAAMkiL,EAAU/0L,KAAKC,IAAI,GAAI+2G,IAChDk8E,EAAYl8E,EAAM,EAAIh3G,KAAKC,IAAI,GAAID,KAAKyW,IAAIugG,IAAQ,EACxD,GACEs3C,EAAMrxJ,KAAK,CAACnF,MAAOi9L,EAASx7B,MAAOu7B,GAAQC,OACzCI,EACkB,KAAhBA,IACFA,EAAc,IACZn+E,EACFk8E,EAAYl8E,GAAO,EAAI,EAAIk8E,GAE7B6B,EAAU/0L,KAAK6kD,MAAMswI,EAAcn1L,KAAKC,IAAI,GAAI+2G,GAAOk8E,GAAaA,QAC7Dl8E,EAAMi+E,GAAWj+E,IAAQi+E,GAAUE,EAAcD,GAC1D,MAAME,EAAWpjE,EAAgB+gE,EAAkB98K,IAAK8+K,GAExD,OADAzmC,EAAMrxJ,KAAK,CAACnF,MAAOs9L,EAAU77B,MAAOu7B,GAAQC,KACrCzmC,CACT,CAhCAumC,GAAYv6L,GAAK,SACjBu6L,GAAY7mJ,SAAW,CACrBsgH,MAAO,CACLjxJ,SAAU27J,GAAMX,WAAWC,UA8B/B,MAAM+8B,WAAyBz4B,GAC7B,WAAA7jK,CAAYgpJ,GACV/gJ,MAAM+gJ,GACNhnJ,KAAK8d,WAAQnG,EACb3X,KAAK+d,SAAMpG,EACX3X,KAAK23L,iBAAchgL,EACnB3X,KAAK43L,YAAc,CACrB,CACA,KAAAzqL,CAAMuuC,EAAK1gC,GACT,MAAMje,EAAQk8L,GAAgBt6L,UAAUwO,MAAMxP,MAAMqC,KAAM,CAAC07C,EAAK1gC,IAChE,GAAc,IAAVje,EAIJ,OAAOi6H,EAAej6H,IAAUA,EAAQ,EAAIA,EAAQ,KAHlDiD,KAAKu6L,OAAQ,CAIjB,CACA,mBAAA32B,GACE,MAAM,IAACzoJ,EAAG,IAAED,GAAOlb,KAAK4vJ,WAAU,GAClC5vJ,KAAKmb,IAAM67G,EAAe77G,GAAOlW,KAAKiW,IAAI,EAAGC,GAAO,KACpDnb,KAAKkb,IAAM87G,EAAe97G,GAAOjW,KAAKiW,IAAI,EAAGA,GAAO,KAChDlb,KAAKK,QAAQ24I,cACfh5I,KAAKu6L,OAAQ,GAEfv6L,KAAKm5L,wBACP,CACA,sBAAAA,GACE,MAAM,WAACh7D,EAAU,WAAEC,GAAcp+H,KAAKq+H,gBACtC,IAAIljH,EAAMnb,KAAKmb,IACXD,EAAMlb,KAAKkb,IACf,MAAMk+K,EAAS52L,GAAM2Y,EAAMgjH,EAAahjH,EAAM3Y,EACxC62L,EAAS72L,GAAM0Y,EAAMkjH,EAAaljH,EAAM1Y,EACxCy5G,EAAM,CAACz5G,EAAGS,IAAMgC,KAAKC,IAAI,GAAID,KAAK6S,MAAM2hH,EAAMj3H,IAAMS,GACtDkY,IAAQD,IACNC,GAAO,GACTi+K,EAAO,GACPC,EAAO,MAEPD,EAAOn9E,EAAI9gG,GAAM,IACjBk+K,EAAOp9E,EAAI/gG,EAAK,MAGhBC,GAAO,GACTi+K,EAAOn9E,EAAI/gG,GAAM,IAEfA,GAAO,GACTm+K,EAAOp9E,EAAI9gG,EAAK,IAEdnb,KAAKu6L,OAASv6L,KAAKmb,MAAQnb,KAAK2iK,eAAiBxnJ,IAAQ8gG,EAAIj8G,KAAKmb,IAAK,IACzEi+K,EAAOn9E,EAAI9gG,GAAM,IAEnBnb,KAAKmb,IAAMA,EACXnb,KAAKkb,IAAMA,CACb,CACA,UAAA6oJ,GACE,MAAM7xI,EAAOlyB,KAAKK,QACZ23L,EAAoB,CACxB78K,IAAKnb,KAAKyiK,SACVvnJ,IAAKlb,KAAKwiK,UAENjP,EAAQ0mC,GAAcjC,EAAmBh4L,MAY/C,MAXoB,UAAhBkyB,EAAK+wH,QACP3oB,EAAmBi5B,EAAOvzJ,KAAM,SAE9BkyB,EAAKqlG,SACPg8B,EAAMh8B,UACNv3H,KAAK8d,MAAQ9d,KAAKkb,IAClBlb,KAAK+d,IAAM/d,KAAKmb,MAEhBnb,KAAK8d,MAAQ9d,KAAKmb,IAClBnb,KAAK+d,IAAM/d,KAAKkb,KAEXq4I,CACT,CACA,gBAAAnD,CAAiBrzJ,GACf,YAAiB4a,IAAV5a,EACH,IACA4kJ,GAAa5kJ,EAAOiD,KAAKswI,MAAMjwI,QAAQkhJ,OAAQvhJ,KAAKK,QAAQkzJ,MAAM3R,OACxE,CACA,SAAA0G,GACE,MAAMxqI,EAAQ9d,KAAKmb,IACnBlV,MAAMqiJ,YACNtoJ,KAAK23L,YAAcl+D,EAAM37G,GACzB9d,KAAK43L,YAAcn+D,EAAMz5H,KAAKkb,KAAOu+G,EAAM37G,EAC7C,CACA,gBAAAwgH,CAAiBvhI,GAIf,YAHc4a,IAAV5a,GAAiC,IAAVA,IACzBA,EAAQiD,KAAKmb,KAED,OAAVpe,GAAkB26B,MAAM36B,GACnB48D,IAEF35D,KAAKm3J,mBAAmBp6J,IAAUiD,KAAKmb,IAC1C,GACCs+G,EAAM18H,GAASiD,KAAK23L,aAAe33L,KAAK43L,YAC/C,CACA,gBAAAtwB,CAAiB9zB,GACf,MAAM+zB,EAAUvnK,KAAKwnK,mBAAmBh0B,GACxC,OAAOvuI,KAAKC,IAAI,GAAIlF,KAAK23L,YAAcpwB,EAAUvnK,KAAK43L,YACxD,EAYF,SAAS4C,GAAsBtoK,GAC7B,MAAMisI,EAAWjsI,EAAKqhI,MACtB,GAAI4K,EAAS5qJ,SAAW2e,EAAK3e,QAAS,CACpC,MAAMusJ,EAAUtnB,GAAU2lB,EAASuC,iBACnC,OAAOxpC,EAAeinC,EAAS3tB,MAAQ2tB,EAAS3tB,KAAK5oI,KAAMqrC,GAASu9F,KAAK5oI,MAAQk4J,EAAQhtI,MAC3F,CACA,OAAO,CACT,CACA,SAAS2nK,GAAiBnsH,EAAKkiE,EAAM14G,GAEnC,OADAA,EAAQz5B,EAAQy5B,GAASA,EAAQ,CAACA,GAC3B,CACL0qG,EAAGsQ,GAAaxkE,EAAKkiE,EAAKrzH,OAAQ2a,GAClCn1B,EAAGm1B,EAAM75B,OAASuyI,EAAKE,WAE3B,CACA,SAASgqD,GAAgBx/D,EAAOkkB,EAAKx3I,EAAMuT,EAAKD,GAC9C,OAAIggH,IAAU//G,GAAO+/G,IAAUhgH,EACtB,CACL4C,MAAOshI,EAAOx3I,EAAO,EACrBmW,IAAKqhI,EAAOx3I,EAAO,GAEZszH,EAAQ//G,GAAO+/G,EAAQhgH,EACzB,CACL4C,MAAOshI,EAAMx3I,EACbmW,IAAKqhI,GAGF,CACLthI,MAAOshI,EACPrhI,IAAKqhI,EAAMx3I,EAEf,CACA,SAAS+yL,GAAmB57I,GAC1B,MAAM02G,EAAO,CACX1yJ,EAAGg8C,EAAMnyB,KAAOmyB,EAAMgwI,SAASniK,KAC/BzpB,EAAG47C,EAAMsuD,MAAQtuD,EAAMgwI,SAAS1hF,MAChCzpG,EAAGm7C,EAAMpyB,IAAMoyB,EAAMgwI,SAASpiK,IAC9B5uB,EAAGghD,EAAMu2F,OAASv2F,EAAMgwI,SAASz5C,QAE7BslD,EAASl8L,OAAO02B,OAAO,CAAC,EAAGqgI,GAC3B6P,EAAa,GACbxF,EAAU,GACV+6B,EAAa97I,EAAM+7I,aAAa78L,OAChC88L,EAAiBh8I,EAAM1+C,QAAQs8J,YAC/Bq+B,EAAkBD,EAAeE,kBAAoBpxJ,EAAKgxJ,EAAa,EAC7E,IAAK,IAAI38L,EAAI,EAAGA,EAAI28L,EAAY38L,IAAK,CACnC,MAAMg0B,EAAO6oK,EAAevgD,WAAWz7F,EAAMm8I,qBAAqBh9L,IAClE4hK,EAAQ5hK,GAAKg0B,EAAK4tI,QAClB,MAAMhD,EAAgB/9G,EAAMo8I,iBAAiBj9L,EAAG6gD,EAAMq8I,YAAct7B,EAAQ5hK,GAAI88L,GAC1EK,EAAS5iD,GAAOvmH,EAAKs+G,MACrBw+C,EAAWyL,GAAiB17I,EAAMuvB,IAAK+sH,EAAQt8I,EAAM+7I,aAAa58L,IACxEonK,EAAWpnK,GAAK8wL,EAChB,MAAM/oB,EAAe1qC,EAAgBx8E,EAAMq9G,cAAcl+J,GAAK88L,GACxD9/D,EAAQj2H,KAAK6kD,MAAM2wE,EAAUwrC,IAC7Bq1B,EAAUZ,GAAgBx/D,EAAO4hC,EAAc/7H,EAAGiuJ,EAASxsD,EAAG,EAAG,KACjE+4D,EAAUb,GAAgBx/D,EAAO4hC,EAAc97H,EAAGguJ,EAASrsL,EAAG,GAAI,KACxE64L,GAAaZ,EAAQnlC,EAAMwQ,EAAcq1B,EAASC,EACpD,CACAx8I,EAAM08I,eACJhmC,EAAK1yJ,EAAI63L,EAAO73L,EAChB63L,EAAOz3L,EAAIsyJ,EAAKtyJ,EAChBsyJ,EAAK7xJ,EAAIg3L,EAAOh3L,EAChBg3L,EAAO78L,EAAI03J,EAAK13J,GAElBghD,EAAM28I,iBAAmBC,GAAqB58I,EAAOumH,EAAYxF,EACnE,CACA,SAAS07B,GAAaZ,EAAQnlC,EAAMv6B,EAAOogE,EAASC,GAClD,MAAMprI,EAAMlrD,KAAKyW,IAAIzW,KAAKkrD,IAAI+qE,IACxB9qE,EAAMnrD,KAAKyW,IAAIzW,KAAKmrD,IAAI8qE,IAC9B,IAAIn6F,EAAI,EACJC,EAAI,EACJs6J,EAAQx9K,MAAQ23I,EAAK1yJ,GACvBg+B,GAAK00H,EAAK1yJ,EAAIu4L,EAAQx9K,OAASqyC,EAC/ByqI,EAAO73L,EAAIkC,KAAKkW,IAAIy/K,EAAO73L,EAAG0yJ,EAAK1yJ,EAAIg+B,IAC9Bu6J,EAAQv9K,IAAM03I,EAAKtyJ,IAC5B49B,GAAKu6J,EAAQv9K,IAAM03I,EAAKtyJ,GAAKgtD,EAC7ByqI,EAAOz3L,EAAI8B,KAAKiW,IAAI0/K,EAAOz3L,EAAGsyJ,EAAKtyJ,EAAI49B,IAErCw6J,EAAQz9K,MAAQ23I,EAAK7xJ,GACvBo9B,GAAKy0H,EAAK7xJ,EAAI23L,EAAQz9K,OAASsyC,EAC/BwqI,EAAOh3L,EAAIqB,KAAKkW,IAAIy/K,EAAOh3L,EAAG6xJ,EAAK7xJ,EAAIo9B,IAC9Bu6J,EAAQx9K,IAAM03I,EAAK13J,IAC5BijC,GAAKu6J,EAAQx9K,IAAM03I,EAAK13J,GAAKqyD,EAC7BwqI,EAAO78L,EAAIkH,KAAKiW,IAAI0/K,EAAO78L,EAAG03J,EAAK13J,EAAIijC,GAE3C,CACA,SAAS26J,GAAqB58I,EAAOumH,EAAYxF,GAC/C,MAAMl4I,EAAQ,GACRizK,EAAa97I,EAAM+7I,aAAa78L,OAChCi0B,EAAO6sB,EAAM1+C,QACbu7L,EAAQpB,GAAsBtoK,GAAQ,EACtC2pK,EAAgB98I,EAAMq8I,YACtBJ,EAAkB9oK,EAAKyqI,YAAYs+B,kBAAoBpxJ,EAAKgxJ,EAAa,EAC/E,IAAK,IAAI38L,EAAI,EAAGA,EAAI28L,EAAY38L,IAAK,CACnC,MAAM49L,EAAqB/8I,EAAMo8I,iBAAiBj9L,EAAG29L,EAAgBD,EAAQ97B,EAAQ5hK,GAAI88L,GACnF9/D,EAAQj2H,KAAK6kD,MAAM2wE,EAAUc,EAAgBugE,EAAmB5gE,MAAQ5B,KACxE1xH,EAAO09J,EAAWpnK,GAClB8iC,EAAI+6J,GAAUD,EAAmB96J,EAAGp5B,EAAKjF,EAAGu4H,GAC5C8b,EAAYglD,GAAqB9gE,GACjCtuG,EAAOqvK,GAAiBH,EAAmB/6J,EAAGn5B,EAAK46H,EAAGwU,GAC5DpvH,EAAM1lB,KAAK,CACT6+B,EAAG+6J,EAAmB/6J,EACtBC,IACAg2G,YACApqH,OACAD,IAAKqU,EACLqsE,MAAOzgF,EAAOhlB,EAAK46H,EACnB8S,OAAQt0G,EAAIp5B,EAAKjF,GAErB,CACA,OAAOilB,CACT,CACA,SAASo0K,GAAqB9gE,GAC5B,OAAc,IAAVA,GAAyB,MAAVA,EACV,SACEA,EAAQ,IACV,OAEF,OACT,CACA,SAAS+gE,GAAiBl7J,EAAGyhG,EAAG/E,GAM9B,MALc,UAAVA,EACF18F,GAAKyhG,EACc,WAAV/E,IACT18F,GAAMyhG,EAAI,GAELzhG,CACT,CACA,SAASg7J,GAAU/6J,EAAGr+B,EAAGu4H,GAMvB,OALc,KAAVA,GAA0B,MAAVA,EAClBl6F,GAAMr+B,EAAI,GACDu4H,EAAQ,KAAOA,EAAQ,MAChCl6F,GAAKr+B,GAEAq+B,CACT,CACA,SAASk7J,GAAgBn9I,EAAOm4I,GAC9B,MAAM,IAAC5oH,EAAKjuE,SAAS,YAACs8J,IAAgB59G,EACtC,IAAK,IAAI7gD,EAAIg5L,EAAa,EAAGh5L,GAAK,EAAGA,IAAK,CACxC,MAAMuqK,EAAc9L,EAAYniB,WAAWz7F,EAAMm8I,qBAAqBh9L,IAChEm9L,EAAS5iD,GAAOgwB,EAAYj4B,OAC5B,EAACzvG,EAAC,EAAEC,EAAC,UAAEg2G,EAAS,KAAEpqH,EAAI,IAAED,EAAG,MAAE0gF,EAAK,OAAEioC,GAAUv2F,EAAM28I,iBAAiBx9L,IACrE,cAACuiK,GAAiBgI,EACxB,IAAK1xC,EAAc0pC,GAAgB,CACjC,MAAMue,EAAezmC,GAAckwB,EAAYuW,cACzClf,EAAUtnB,GAAUiwB,EAAY/H,iBACtCpyF,EAAIyoE,UAAY0pB,EAChB,MAAM07B,EAAevvK,EAAOkzI,EAAQlzI,KAC9BwvK,EAAczvK,EAAMmzI,EAAQnzI,IAC5B0vK,EAAgBhvF,EAAQzgF,EAAOkzI,EAAQlkJ,MACvC0gL,EAAiBhnD,EAAS3oH,EAAMmzI,EAAQhtI,OAC1Cp0B,OAAOkL,OAAOo1K,GAAchvG,MAAKxtE,GAAW,IAANA,KACxC8rE,EAAImmE,YACJkD,GAAmBrpE,EAAK,CACtBvtC,EAAGo7J,EACHn7J,EAAGo7J,EACH55D,EAAG65D,EACH15L,EAAG25L,EACHhoD,OAAQ0qC,IAEV1wG,EAAIwK,QAEJxK,EAAIm7F,SAAS0yB,EAAcC,EAAaC,EAAeC,EAE3D,CACAnmD,GACE7nE,EACAvvB,EAAM+7I,aAAa58L,GACnB6iC,EACAC,EAAKq6J,EAAO3qD,WAAa,EACzB2qD,EACA,CACEvsD,MAAO25B,EAAY35B,MACnBkI,UAAWA,EACXC,aAAc,UAGpB,CACF,CACA,SAASslD,GAAex9I,EAAOu1F,EAAQooB,EAAUw6B,GAC/C,MAAM,IAAC5oH,GAAOvvB,EACd,GAAI29G,EACFpuF,EAAIqmE,IAAI51F,EAAMk9G,QAASl9G,EAAMm9G,QAAS5nB,EAAQ,EAAGpb,OAC5C,CACL,IAAI4jC,EAAgB/9G,EAAMo8I,iBAAiB,EAAG7mD,GAC9ChmE,EAAIumE,OAAOioB,EAAc/7H,EAAG+7H,EAAc97H,GAC1C,IAAK,IAAI9iC,EAAI,EAAGA,EAAIg5L,EAAYh5L,IAC9B4+J,EAAgB/9G,EAAMo8I,iBAAiBj9L,EAAGo2I,GAC1ChmE,EAAIwmE,OAAOgoB,EAAc/7H,EAAG+7H,EAAc97H,EAE9C,CACF,CACA,SAASw7J,GAAez9I,EAAO09I,EAAcnoD,EAAQ4iD,GACnD,MAAM5oH,EAAMvvB,EAAMuvB,IACZouF,EAAW+/B,EAAa//B,UACxB,MAAC5tB,EAAK,UAAE2H,GAAagmD,GACrB//B,IAAaw6B,IAAgBpoD,IAAU2H,GAAanC,EAAS,IAGnEhmE,EAAI2kE,OACJ3kE,EAAIkoE,YAAc1H,EAClBxgE,EAAImoE,UAAYA,EAChBnoE,EAAIs7F,YAAY6yB,EAAat3C,YAC7B72E,EAAIu7F,eAAiB4yB,EAAar3C,iBAClC92E,EAAImmE,YACJ8nD,GAAex9I,EAAOu1F,EAAQooB,EAAUw6B,GACxC5oH,EAAIsmE,YACJtmE,EAAI4mE,SACJ5mE,EAAI+kE,UACN,CACA,SAASqpD,GAAwB5tK,EAAQ9T,EAAO8c,GAC9C,OAAOqhH,GAAcrqH,EAAQ,CAC3BgJ,QACA9c,QACAhS,KAAM,cAEV,CAlOAsxL,GAAiB/6L,GAAK,cACtB+6L,GAAiBrnJ,SAAW,CAC1BsgH,MAAO,CACLjxJ,SAAU27J,GAAMX,WAAWU,YAC3BQ,MAAO,CACLnmI,SAAS,KA8Nf,MAAMskK,WAA0B1D,GAC9B,WAAAj7L,CAAYgpJ,GACV/gJ,MAAM+gJ,GACNhnJ,KAAKi8J,aAAUtkJ,EACf3X,KAAKk8J,aAAUvkJ,EACf3X,KAAKo7L,iBAAczjL,EACnB3X,KAAK86L,aAAe,GACpB96L,KAAK07L,iBAAmB,EAC1B,CACA,aAAAj4B,GACE,MAAM3D,EAAU9/J,KAAK+uL,SAAWv2C,GAAUgiD,GAAsBx6L,KAAKK,SAAW,GAC1EmiI,EAAIxiI,KAAK4b,MAAQ5b,KAAK22I,SAAWmpB,EAAQlkJ,MACzCjZ,EAAI3C,KAAK8yB,OAAS9yB,KAAK4/I,UAAYkgB,EAAQhtI,OACjD9yB,KAAKi8J,QAAUh3J,KAAK6S,MAAM9X,KAAK4sB,KAAO41G,EAAI,EAAIs9B,EAAQlzI,MACtD5sB,KAAKk8J,QAAUj3J,KAAK6S,MAAM9X,KAAK2sB,IAAMhqB,EAAI,EAAIm9J,EAAQnzI,KACrD3sB,KAAKo7L,YAAcn2L,KAAK6S,MAAM7S,KAAKkW,IAAIqnH,EAAG7/H,GAAK,EACjD,CACA,mBAAAihK,GACE,MAAM,IAACzoJ,EAAG,IAAED,GAAOlb,KAAK4vJ,WAAU,GAClC5vJ,KAAKmb,IAAM67G,EAAe77G,KAASuc,MAAMvc,GAAOA,EAAM,EACtDnb,KAAKkb,IAAM87G,EAAe97G,KAASwc,MAAMxc,GAAOA,EAAM,EACtDlb,KAAKm5L,wBACP,CACA,gBAAAS,GACE,OAAO30L,KAAK60B,KAAK95B,KAAKo7L,YAAcZ,GAAsBx6L,KAAKK,SACjE,CACA,kBAAA4kK,CAAmB1R,GACjB0lC,GAAgBt6L,UAAUsmK,mBAAmBnmK,KAAKkB,KAAMuzJ,GACxDvzJ,KAAK86L,aAAe96L,KAAKovJ,YACtB7qJ,KAAI,CAACxH,EAAOie,KACX,MAAM8c,EAAQx1B,EAAStC,KAAKK,QAAQs8J,YAAYr6J,SAAU,CAACvF,EAAOie,GAAQhb,MAC1E,OAAO83B,GAAmB,IAAVA,EAAcA,EAAQ,EAAE,IAEzC9pB,QAAO,CAACxL,EAAGtE,IAAM8B,KAAKswI,MAAM2mB,kBAAkB/4J,IACnD,CACA,GAAAsmK,GACE,MAAMtyI,EAAOlyB,KAAKK,QACd6xB,EAAK3e,SAAW2e,EAAKyqI,YAAYppJ,QACnConL,GAAmB36L,MAEnBA,KAAKy7L,eAAe,EAAG,EAAG,EAAG,EAEjC,CACA,cAAAA,CAAemB,EAAcC,EAAeC,EAAaC,GACvD/8L,KAAKi8J,SAAWh3J,KAAK6S,OAAO8kL,EAAeC,GAAiB,GAC5D78L,KAAKk8J,SAAWj3J,KAAK6S,OAAOglL,EAAcC,GAAkB,GAC5D/8L,KAAKo7L,aAAen2L,KAAKkW,IAAInb,KAAKo7L,YAAc,EAAGn2L,KAAKiW,IAAI0hL,EAAcC,EAAeC,EAAaC,GACxG,CACA,aAAA3gC,CAAcphJ,GACZ,MAAMgiL,EAAkB9jE,GAAOl5H,KAAK86L,aAAa78L,QAAU,GACrDk6J,EAAan4J,KAAKK,QAAQ83J,YAAc,EAC9C,OAAO58B,EAAgBvgH,EAAQgiL,EAAkBziE,EAAU49B,GAC7D,CACA,6BAAAqE,CAA8Bz/J,GAC5B,GAAIg6H,EAAch6H,GAChB,OAAO48D,IAET,MAAMsjI,EAAgBj9L,KAAKo7L,aAAep7L,KAAKkb,IAAMlb,KAAKmb,KAC1D,OAAInb,KAAKK,QAAQk3H,SACPv3H,KAAKkb,IAAMne,GAASkgM,GAEtBlgM,EAAQiD,KAAKmb,KAAO8hL,CAC9B,CACA,6BAAAC,CAA8B5xJ,GAC5B,GAAIyrF,EAAczrF,GAChB,OAAOquB,IAET,MAAMwjI,EAAiB7xJ,GAAYtrC,KAAKo7L,aAAep7L,KAAKkb,IAAMlb,KAAKmb,MACvE,OAAOnb,KAAKK,QAAQk3H,QAAUv3H,KAAKkb,IAAMiiL,EAAiBn9L,KAAKmb,IAAMgiL,CACvE,CACA,oBAAAjC,CAAqBlgL,GACnB,MAAM2hJ,EAAc38J,KAAK86L,cAAgB,GACzC,GAAI9/K,GAAS,GAAKA,EAAQ2hJ,EAAY1+J,OAAQ,CAC5C,MAAMm/L,EAAazgC,EAAY3hJ,GAC/B,OAAO0hL,GAAwB18L,KAAK6lF,aAAc7qE,EAAOoiL,EAC3D,CACF,CACA,gBAAAjC,CAAiBngL,EAAOqiL,EAAoBrC,EAAkB,GAC5D,MAAM9/D,EAAQl7H,KAAKo8J,cAAcphJ,GAASs+G,EAAU0hE,EACpD,MAAO,CACLj6J,EAAG97B,KAAKmrD,IAAI8qE,GAASmiE,EAAqBr9L,KAAKi8J,QAC/Cj7H,EAAG/7B,KAAKkrD,IAAI+qE,GAASmiE,EAAqBr9L,KAAKk8J,QAC/ChhC,QAEJ,CACA,wBAAA6hC,CAAyB/hJ,EAAOje,GAC9B,OAAOiD,KAAKm7L,iBAAiBngL,EAAOhb,KAAKw8J,8BAA8Bz/J,GACzE,CACA,eAAAugM,CAAgBtiL,GACd,OAAOhb,KAAK+8J,yBAAyB/hJ,GAAS,EAAGhb,KAAKynK,eACxD,CACA,qBAAA81B,CAAsBviL,GACpB,MAAM,KAAC4R,EAAI,IAAED,EAAG,MAAE0gF,EAAK,OAAEioC,GAAUt1I,KAAK07L,iBAAiB1gL,GACzD,MAAO,CACL4R,OACAD,MACA0gF,QACAioC,SAEJ,CACA,cAAAk0B,GACE,MAAM,gBAACt5B,EAAiBynB,MAAM,SAAC+E,IAAa18J,KAAKK,QACjD,GAAI6vI,EAAiB,CACnB,MAAM5hE,EAAMtuE,KAAKsuE,IACjBA,EAAI2kE,OACJ3kE,EAAImmE,YACJ8nD,GAAev8L,KAAMA,KAAKw8J,8BAA8Bx8J,KAAKk5L,WAAYx8B,EAAU18J,KAAK86L,aAAa78L,QACrGqwE,EAAIsmE,YACJtmE,EAAIyoE,UAAY7G,EAChB5hE,EAAIwK,OACJxK,EAAI+kE,SACN,CACF,CACA,QAAAq2B,GACE,MAAMp7F,EAAMtuE,KAAKsuE,IACXp8C,EAAOlyB,KAAKK,SACZ,WAACo8J,EAAU,KAAE9E,GAAQzlI,EACrBglK,EAAal3L,KAAK86L,aAAa78L,OACrC,IAAIC,EAAGiuB,EAAQwe,EAaf,GAZIzY,EAAKyqI,YAAYppJ,SACnB2oL,GAAgBl8L,KAAMk3L,GAEpBv/B,EAAKpkJ,SACPvT,KAAKuzJ,MAAM9wJ,SAAQ,CAAC2jJ,EAAMprI,KACxB,GAAc,IAAVA,EAAa,CACfmR,EAASnsB,KAAKw8J,8BAA8BpW,EAAKrpJ,OACjD,MAAM0rK,EAAc9Q,EAAKnd,WAAWx6I,KAAK6lF,WAAW7qE,EAAQ,IAC5DwhL,GAAex8L,KAAMyoK,EAAat8I,EAAQ+qK,EAC5C,KAGAz6B,EAAWlpJ,QAAS,CAEtB,IADA+6D,EAAI2kE,OACC/0I,EAAIg5L,EAAa,EAAGh5L,GAAK,EAAGA,IAAK,CACpC,MAAMuqK,EAAchM,EAAWjiB,WAAWx6I,KAAKk7L,qBAAqBh9L,KAC9D,MAAC4wI,EAAK,UAAE2H,GAAagyB,EACtBhyB,GAAc3H,IAGnBxgE,EAAImoE,UAAYA,EAChBnoE,EAAIkoE,YAAc1H,EAClBxgE,EAAIs7F,YAAYnB,EAAYtjB,YAC5B72E,EAAIu7F,eAAiBpB,EAAYrjB,iBACjCj5H,EAASnsB,KAAKw8J,8BAA8BtqI,EAAKqhI,MAAMh8B,QAAUv3H,KAAKmb,IAAMnb,KAAKkb,KACjFyvB,EAAW3qC,KAAKm7L,iBAAiBj9L,EAAGiuB,GACpCmiD,EAAImmE,YACJnmE,EAAIumE,OAAO70I,KAAKi8J,QAASj8J,KAAKk8J,SAC9B5tF,EAAIwmE,OAAOnqG,EAAS5J,EAAG4J,EAAS3J,GAChCstC,EAAI4mE,SACN,CACA5mE,EAAI+kE,SACN,CACF,CACA,UAAAosB,GAAc,CACd,UAAAsK,GACE,MAAMz7F,EAAMtuE,KAAKsuE,IACXp8C,EAAOlyB,KAAKK,QACZ89J,EAAWjsI,EAAKqhI,MACtB,IAAK4K,EAAS5qJ,QACZ,OAEF,MAAM4kJ,EAAan4J,KAAKo8J,cAAc,GACtC,IAAIjwI,EAAQvQ,EACZ0yD,EAAI2kE,OACJ3kE,EAAI3wC,UAAU39B,KAAKi8J,QAASj8J,KAAKk8J,SACjC5tF,EAAI3d,OAAOwnG,GACX7pF,EAAI0oE,UAAY,SAChB1oE,EAAI2oE,aAAe,SACnBj3I,KAAKuzJ,MAAM9wJ,SAAQ,CAAC2jJ,EAAMprI,KACxB,GAAc,IAAVA,IAAgBkX,EAAKqlG,QACvB,OAEF,MAAMkxC,EAActK,EAAS3jB,WAAWx6I,KAAK6lF,WAAW7qE,IAClD8rJ,EAAWruB,GAAOgwB,EAAYj4B,MAEpC,GADArkH,EAASnsB,KAAKw8J,8BAA8Bx8J,KAAKuzJ,MAAMv4I,GAAOje,OAC1D0rK,EAAYjI,kBAAmB,CACjClyF,EAAIkiE,KAAOs2B,EAAS3pJ,OACpBvB,EAAQ0yD,EAAIukE,YAAYuT,EAAKtuH,OAAOlc,MACpC0yD,EAAIyoE,UAAY0xB,EAAYhI,cAC5B,MAAMX,EAAUtnB,GAAUiwB,EAAY/H,iBACtCpyF,EAAIm7F,UACD7tJ,EAAQ,EAAIkkJ,EAAQlzI,MACpBT,EAAS26I,EAASl/J,KAAO,EAAIk4J,EAAQnzI,IACtC/Q,EAAQkkJ,EAAQlkJ,MAChBkrJ,EAASl/J,KAAOk4J,EAAQhtI,OAE5B,CACAqjH,GAAW7nE,EAAK83E,EAAKtuH,MAAO,GAAI3L,EAAQ26I,EAAU,CAChDh4B,MAAO25B,EAAY35B,OACnB,IAEJxgE,EAAI+kE,SACN,CACA,SAAA22B,GAAa,EAEf2yB,GAAkBp9L,GAAK,eACvBo9L,GAAkB1pJ,SAAW,CAC3B1/B,SAAS,EACTiqL,SAAS,EACT7yJ,SAAU,YACV8xH,WAAY,CACVlpJ,SAAS,EACTkjI,UAAW,EACX0O,WAAY,GACZC,iBAAkB,GAEpBuS,KAAM,CACJ+E,UAAU,GAEZvE,WAAY,EACZ5E,MAAO,CACLiN,mBAAmB,EACnBl+J,SAAU27J,GAAMX,WAAWC,SAE7BZ,YAAa,CACX8D,mBAAe9oJ,EACf+oJ,gBAAiB,EACjBntJ,SAAS,EACTi9H,KAAM,CACJ5oI,KAAM,IAER,QAAAtF,CAASw1B,GACP,OAAOA,CACT,EACAgoI,QAAS,EACTm7B,mBAAmB,IAGvB0B,GAAkBt/B,cAAgB,CAChC,mBAAoB,cACpB,oBAAqB,QACrB,cAAe,SAEjBs/B,GAAkB9sD,YAAc,CAC9B4sB,WAAY,CACVlqB,UAAW,SAIf,MAAMkrD,GAAY,CAChBC,YAAa,CAACC,QAAQ,EAAM/1L,KAAM,EAAGg2L,MAAO,KAC5CC,OAAQ,CAACF,QAAQ,EAAM/1L,KAAM,IAAMg2L,MAAO,IAC1CE,OAAQ,CAACH,QAAQ,EAAM/1L,KAAM,IAAOg2L,MAAO,IAC3CG,KAAM,CAACJ,QAAQ,EAAM/1L,KAAM,KAASg2L,MAAO,IAC3CI,IAAK,CAACL,QAAQ,EAAM/1L,KAAM,MAAUg2L,MAAO,IAC3CK,KAAM,CAACN,QAAQ,EAAO/1L,KAAM,OAAWg2L,MAAO,GAC9CM,MAAO,CAACP,QAAQ,EAAM/1L,KAAM,OAASg2L,MAAO,IAC5CO,QAAS,CAACR,QAAQ,EAAO/1L,KAAM,OAASg2L,MAAO,GAC/CQ,KAAM,CAACT,QAAQ,EAAM/1L,KAAM,SAEvBy2L,GAAS3/L,OAAOP,KAAKs/L,IAC3B,SAASa,GAAOxgM,EAAGC,GACjB,OAAOD,EAAIC,CACb,CACA,SAASoP,GAAM4xC,EAAO+V,GACpB,GAAIiiE,EAAcjiE,GAChB,OAAO,KAET,MAAMypI,EAAUx/I,EAAMy/I,UAChB,OAACC,EAAM,MAAE30I,EAAK,WAAE40I,GAAc3/I,EAAM4/I,WAC1C,IAAI5hM,EAAQ+3D,EASZ,MARsB,oBAAX2pI,IACT1hM,EAAQ0hM,EAAO1hM,IAEZi6H,EAAej6H,KAClBA,EAA0B,kBAAX0hM,EACXF,EAAQpxL,MAAMpQ,EAAO0hM,GACrBF,EAAQpxL,MAAMpQ,IAEN,OAAVA,EACK,MAEL+sD,IACF/sD,EAAkB,SAAV+sD,IAAqBowE,EAASwkE,KAA8B,IAAfA,EAEjDH,EAAQzxB,QAAQ/vK,EAAO+sD,GADvBy0I,EAAQzxB,QAAQ/vK,EAAO,UAAW2hM,KAGhC3hM,EACV,CACA,SAAS6hM,GAA0BC,EAAS1jL,EAAKD,EAAK4jL,GACpD,MAAMnnE,EAAO0mE,GAAMpgM,OACnB,IAAK,IAAIC,EAAImgM,GAAMpjL,QAAQ4jL,GAAU3gM,EAAIy5H,EAAO,IAAKz5H,EAAG,CACtD,MAAM6gM,EAAWtB,GAAUY,GAAMngM,IAC3B2oJ,EAASk4C,EAASnB,MAAQmB,EAASnB,MAAQ1wL,OAAOssL,iBACxD,GAAIuF,EAASpB,QAAU14L,KAAK60B,MAAM5e,EAAMC,IAAQ0rI,EAASk4C,EAASn3L,QAAUk3L,EAC1E,OAAOT,GAAMngM,EAEjB,CACA,OAAOmgM,GAAM1mE,EAAO,EACtB,CACA,SAASqnE,GAA2BjgJ,EAAOomH,EAAU05B,EAAS1jL,EAAKD,GACjE,IAAK,IAAIhd,EAAImgM,GAAMpgM,OAAS,EAAGC,GAAKmgM,GAAMpjL,QAAQ4jL,GAAU3gM,IAAK,CAC/D,MAAM2uK,EAAOwxB,GAAMngM,GACnB,GAAIu/L,GAAU5wB,GAAM8wB,QAAU5+I,EAAMy/I,SAAS15J,KAAK5pB,EAAKC,EAAK0xJ,IAAS1H,EAAW,EAC9E,OAAO0H,CAEX,CACA,OAAOwxB,GAAMQ,EAAUR,GAAMpjL,QAAQ4jL,GAAW,EAClD,CACA,SAASI,GAAmBpyB,GAC1B,IAAK,IAAI3uK,EAAImgM,GAAMpjL,QAAQ4xJ,GAAQ,EAAGl1C,EAAO0mE,GAAMpgM,OAAQC,EAAIy5H,IAAQz5H,EACrE,GAAIu/L,GAAUY,GAAMngM,IAAIy/L,OACtB,OAAOU,GAAMngM,EAGnB,CACA,SAASghM,GAAQ3rC,EAAO3oH,EAAMu0J,GAC5B,GAAKA,GAEE,GAAIA,EAAWlhM,OAAQ,CAC5B,MAAM,GAACq+H,EAAE,GAAED,GAAMJ,GAAQkjE,EAAYv0J,GAC/BgiI,EAAYuyB,EAAW7iE,IAAO1xF,EAAOu0J,EAAW7iE,GAAM6iE,EAAW9iE,GACvEk3B,EAAMqZ,IAAa,CACrB,OALErZ,EAAM3oH,IAAQ,CAMlB,CACA,SAASw0J,GAAcrgJ,EAAOw0G,EAAOhvJ,EAAK86L,GACxC,MAAMd,EAAUx/I,EAAMy/I,SAChBxhF,GAASuhF,EAAQzxB,QAAQvZ,EAAM,GAAGx2J,MAAOsiM,GACzCriI,EAAOu2F,EAAMA,EAAMt1J,OAAS,GAAGlB,MACrC,IAAIyhK,EAAOxjJ,EACX,IAAKwjJ,EAAQxhD,EAAOwhD,GAASxhG,EAAMwhG,GAAS+/B,EAAQl6L,IAAIm6J,EAAO,EAAG6gC,GAChErkL,EAAQzW,EAAIi6J,GACRxjJ,GAAS,IACXu4I,EAAMv4I,GAAOwjJ,OAAQ,GAGzB,OAAOjL,CACT,CACA,SAAS+rC,GAAoBvgJ,EAAOn1C,EAAQy1L,GAC1C,MAAM9rC,EAAQ,GACRhvJ,EAAM,CAAC,EACPozH,EAAO/tH,EAAO3L,OACpB,IAAIC,EAAGnB,EACP,IAAKmB,EAAI,EAAGA,EAAIy5H,IAAQz5H,EACtBnB,EAAQ6M,EAAO1L,GACfqG,EAAIxH,GAASmB,EACbq1J,EAAMrxJ,KAAK,CACTnF,QACAyhK,OAAO,IAGX,OAAiB,IAAT7mC,GAAe0nE,EAAqBD,GAAcrgJ,EAAOw0G,EAAOhvJ,EAAK86L,GAAzC9rC,CACtC,CACA,MAAMgsC,WAAkB19B,GACtB,WAAA7jK,CAAY8uB,GACV7mB,MAAM6mB,GACN9sB,KAAKknB,OAAS,CACZzf,KAAM,GACN0nJ,OAAQ,GACR1qJ,IAAK,IAEPzE,KAAKw/L,MAAQ,MACbx/L,KAAKy/L,gBAAa9nL,EAClB3X,KAAK0/L,SAAW,CAAC,EACjB1/L,KAAK2/L,aAAc,EACnB3/L,KAAK2+L,gBAAahnL,CACpB,CACA,IAAAqd,CAAK+lJ,EAAW7oJ,GACd,MAAM0Y,EAAOmwI,EAAUnwI,OAASmwI,EAAUnwI,KAAO,CAAC,GAC5C2zJ,EAAUv+L,KAAKw+L,SAAW,IAAItxB,GAASC,MAAM4N,EAAU7N,SAASrnB,MACtE04C,EAAQvpK,KAAK9C,GACbqmG,EAAQ3tF,EAAKg1J,eAAgBrB,EAAQ5xB,WACrC3sK,KAAK2+L,WAAa,CAChBF,OAAQ7zJ,EAAK6zJ,OACb30I,MAAOlf,EAAKkf,MACZ40I,WAAY9zJ,EAAK8zJ,YAEnBz4L,MAAM+uB,KAAK+lJ,GACX/6K,KAAK2/L,YAAcztK,EAAKgoC,UAC1B,CACA,KAAA/sD,CAAMuuC,EAAK1gC,GACT,YAAYrD,IAAR+jC,EACK,KAEFvuC,GAAMnN,KAAM07C,EACrB,CACA,YAAA4nH,GACEr9J,MAAMq9J,eACNtjK,KAAKknB,OAAS,CACZzf,KAAM,GACN0nJ,OAAQ,GACR1qJ,IAAK,GAET,CACA,mBAAAm/J,GACE,MAAMvjK,EAAUL,KAAKK,QACfk+L,EAAUv+L,KAAKw+L,SACf3xB,EAAOxsK,EAAQuqC,KAAKiiI,MAAQ,MAClC,IAAI,IAAC1xJ,EAAG,IAAED,EAAG,WAAEijH,EAAU,WAAEC,GAAcp+H,KAAKq+H,gBAC9C,SAASwhE,EAAa58C,GACf9kB,GAAezmG,MAAMurH,EAAO9nI,OAC/BA,EAAMlW,KAAKkW,IAAIA,EAAK8nI,EAAO9nI,MAExBijH,GAAe1mG,MAAMurH,EAAO/nI,OAC/BA,EAAMjW,KAAKiW,IAAIA,EAAK+nI,EAAO/nI,KAE/B,CACKijH,GAAeC,IAClByhE,EAAa7/L,KAAK8/L,mBACK,UAAnBz/L,EAAQ4iJ,QAA+C,WAAzB5iJ,EAAQkzJ,MAAMh1J,QAC9CshM,EAAa7/L,KAAK4vJ,WAAU,KAGhCz0I,EAAM67G,EAAe77G,KAASuc,MAAMvc,GAAOA,GAAOojL,EAAQzxB,QAAQznJ,KAAK4J,MAAO49I,GAC9E3xJ,EAAM87G,EAAe97G,KAASwc,MAAMxc,GAAOA,GAAOqjL,EAAQvxB,MAAM3nJ,KAAK4J,MAAO49I,GAAQ,EACpF7sK,KAAKmb,IAAMlW,KAAKkW,IAAIA,EAAKD,EAAM,GAC/Blb,KAAKkb,IAAMjW,KAAKiW,IAAIC,EAAM,EAAGD,EAC/B,CACA,eAAA4kL,GACE,MAAM/3K,EAAM/nB,KAAK+/L,qBACjB,IAAI5kL,EAAMjO,OAAOksH,kBACbl+G,EAAMhO,OAAOi9I,kBAKjB,OAJIpiI,EAAI9pB,SACNkd,EAAM4M,EAAI,GACV7M,EAAM6M,EAAIA,EAAI9pB,OAAS,IAElB,CAACkd,MAAKD,MACf,CACA,UAAA6oJ,GACE,MAAM1jK,EAAUL,KAAKK,QACf2/L,EAAW3/L,EAAQuqC,KACnBuzH,EAAW99J,EAAQkzJ,MACnB4rC,EAAiC,WAApBhhC,EAAS5/J,OAAsByB,KAAK+/L,qBAAuB//L,KAAKigM,YAC5D,UAAnB5/L,EAAQ4iJ,QAAsBk8C,EAAWlhM,SAC3C+B,KAAKmb,IAAMnb,KAAKyiK,UAAY08B,EAAW,GACvCn/L,KAAKkb,IAAMlb,KAAKwiK,UAAY28B,EAAWA,EAAWlhM,OAAS,IAE7D,MAAMkd,EAAMnb,KAAKmb,IACXD,EAAMlb,KAAKkb,IACXq4I,EAAQ92B,GAAe0iE,EAAYhkL,EAAKD,GAU9C,OATAlb,KAAKw/L,MAAQQ,EAASnzB,OAAS1O,EAASD,SACpC0gC,GAA0BoB,EAASnB,QAAS7+L,KAAKmb,IAAKnb,KAAKkb,IAAKlb,KAAKkgM,kBAAkB/kL,IACvF6jL,GAA2Bh/L,KAAMuzJ,EAAMt1J,OAAQ+hM,EAASnB,QAAS7+L,KAAKmb,IAAKnb,KAAKkb,MACpFlb,KAAKy/L,WAActhC,EAASK,MAAMnmI,SAA0B,SAAfr4B,KAAKw/L,MAC9CP,GAAmBj/L,KAAKw/L,YADyC7nL,EAErE3X,KAAKmgM,YAAYhB,GACb9+L,EAAQk3H,SACVg8B,EAAMh8B,UAED+nE,GAAoBt/L,KAAMuzJ,EAAOvzJ,KAAKy/L,WAC/C,CACA,aAAAn7B,GACMtkK,KAAKK,QAAQ+/L,qBACfpgM,KAAKmgM,YAAYngM,KAAKuzJ,MAAMhvJ,KAAI6hJ,IAASA,EAAKrpJ,QAElD,CACA,WAAAojM,CAAYhB,GACV,IAEIniF,EAAOhgD,EAFPl/C,EAAQ,EACRC,EAAM,EAEN/d,KAAKK,QAAQ8rB,QAAUgzK,EAAWlhM,SACpC++G,EAAQh9G,KAAKqgM,mBAAmBlB,EAAW,IAEzCrhL,EADwB,IAAtBqhL,EAAWlhM,OACL,EAAI++G,GAEHh9G,KAAKqgM,mBAAmBlB,EAAW,IAAMniF,GAAS,EAE7DhgD,EAAOh9D,KAAKqgM,mBAAmBlB,EAAWA,EAAWlhM,OAAS,IAE5D8f,EADwB,IAAtBohL,EAAWlhM,OACP++D,GAECA,EAAOh9D,KAAKqgM,mBAAmBlB,EAAWA,EAAWlhM,OAAS,KAAO,GAGhF,MAAMuqK,EAAQ22B,EAAWlhM,OAAS,EAAI,GAAM,IAC5C6f,EAAQg+G,GAAYh+G,EAAO,EAAG0qJ,GAC9BzqJ,EAAM+9G,GAAY/9G,EAAK,EAAGyqJ,GAC1BxoK,KAAK0/L,SAAW,CAAC5hL,QAAOC,MAAK8oI,OAAQ,GAAK/oI,EAAQ,EAAIC,GACxD,CACA,SAAAkiL,GACE,MAAM1B,EAAUv+L,KAAKw+L,SACfrjL,EAAMnb,KAAKmb,IACXD,EAAMlb,KAAKkb,IACX7a,EAAUL,KAAKK,QACf2/L,EAAW3/L,EAAQuqC,KACnB01H,EAAQ0/B,EAASnzB,MAAQ+xB,GAA0BoB,EAASnB,QAAS1jL,EAAKD,EAAKlb,KAAKkgM,kBAAkB/kL,IACtGw+K,EAAWziE,EAAe8oE,EAASrG,SAAU,GAC7C5sB,EAAoB,SAAVzM,GAAmB0/B,EAAStB,WACtC4B,EAAapmE,EAAS6yC,KAAwB,IAAZA,EAClCxZ,EAAQ,CAAC,EACf,IACI3oH,EAAMm6E,EADN/H,EAAQ7hG,EAMZ,GAJImlL,IACFtjF,GAASuhF,EAAQzxB,QAAQ9vD,EAAO,UAAW+vD,IAE7C/vD,GAASuhF,EAAQzxB,QAAQ9vD,EAAOsjF,EAAa,MAAQhgC,GACjDi+B,EAAQz5J,KAAK5pB,EAAKC,EAAKmlJ,GAAS,IAASq5B,EAC3C,MAAM,IAAIr5L,MAAM6a,EAAM,QAAUD,EAAM,uCAAyCy+K,EAAW,IAAMr5B,GAElG,MAAM6+B,EAAsC,SAAzB9+L,EAAQkzJ,MAAMh1J,QAAqByB,KAAKugM,oBAC3D,IAAK31J,EAAOoyE,EAAO+H,EAAQ,EAAGn6E,EAAO1vB,EAAK0vB,GAAQ2zJ,EAAQl6L,IAAIumC,EAAM+uJ,EAAUr5B,GAAQv7C,IACpFm6E,GAAQ3rC,EAAO3oH,EAAMu0J,GAKvB,OAHIv0J,IAAS1vB,GAA0B,UAAnB7a,EAAQ4iJ,QAAgC,IAAVl+B,GAChDm6E,GAAQ3rC,EAAO3oH,EAAMu0J,GAEhBzgM,OAAOP,KAAKo1J,GAAOljH,MAAK,CAACvyC,EAAGC,IAAMD,EAAIC,IAAGwG,KAAIw8B,IAAMA,GAC5D,CACA,gBAAAqvH,CAAiBrzJ,GACf,MAAMwhM,EAAUv+L,KAAKw+L,SACfwB,EAAWhgM,KAAKK,QAAQuqC,KAC9B,OAAIo1J,EAASQ,cACJjC,EAAQ38C,OAAO7kJ,EAAOijM,EAASQ,eAEjCjC,EAAQ38C,OAAO7kJ,EAAOijM,EAASJ,eAAea,SACvD,CACA,mBAAAC,CAAoB91J,EAAM5vB,EAAOu4I,EAAO3R,GACtC,MAAMvhJ,EAAUL,KAAKK,QACfssK,EAAUtsK,EAAQuqC,KAAKg1J,eACvB/yB,EAAO7sK,KAAKw/L,MACZH,EAAYr/L,KAAKy/L,WACjBkB,EAAc9zB,GAAQF,EAAQE,GAC9B+zB,EAAcvB,GAAa1yB,EAAQ0yB,GACnCj5C,EAAOmN,EAAMv4I,GACbwjJ,EAAQ6gC,GAAauB,GAAex6C,GAAQA,EAAKoY,MACjD1mI,EAAQ93B,KAAKw+L,SAAS58C,OAAOh3G,EAAMg3G,IAAW4c,EAAQoiC,EAAcD,IACpEn/C,EAAYnhJ,EAAQkzJ,MAAMjxJ,SAChC,OAAOk/I,EAAYl/I,EAASk/I,EAAW,CAAC1pH,EAAO9c,EAAOu4I,GAAQvzJ,MAAQ83B,CACxE,CACA,kBAAAmtI,CAAmB1R,GACjB,IAAIr1J,EAAGy5H,EAAMyuB,EACb,IAAKloJ,EAAI,EAAGy5H,EAAO47B,EAAMt1J,OAAQC,EAAIy5H,IAAQz5H,EAC3CkoJ,EAAOmN,EAAMr1J,GACbkoJ,EAAKtuH,MAAQ93B,KAAK0gM,oBAAoBt6C,EAAKrpJ,MAAOmB,EAAGq1J,EAEzD,CACA,kBAAA8sC,CAAmBtjM,GACjB,OAAiB,OAAVA,EAAiB48D,KAAO58D,EAAQiD,KAAKmb,MAAQnb,KAAKkb,IAAMlb,KAAKmb,IACtE,CACA,gBAAAmjH,CAAiBvhI,GACf,MAAM8jM,EAAU7gM,KAAK0/L,SACftgD,EAAMp/I,KAAKqgM,mBAAmBtjM,GACpC,OAAOiD,KAAKm3J,oBAAoB0pC,EAAQ/iL,MAAQshI,GAAOyhD,EAAQh6C,OACjE,CACA,gBAAAygB,CAAiB9zB,GACf,MAAMqtD,EAAU7gM,KAAK0/L,SACftgD,EAAMp/I,KAAKwnK,mBAAmBh0B,GAASqtD,EAAQh6C,OAASg6C,EAAQ9iL,IACtE,OAAO/d,KAAKmb,IAAMikI,GAAOp/I,KAAKkb,IAAMlb,KAAKmb,IAC3C,CACA,aAAA2lL,CAAchpK,GACZ,MAAMipK,EAAY/gM,KAAKK,QAAQkzJ,MACzBytC,EAAiBhhM,KAAKsuE,IAAIukE,YAAY/6G,GAAOlc,MAC7Cs/G,EAAQX,EAAUv6H,KAAKu3B,eAAiBwpK,EAAU/gC,YAAc+gC,EAAUhhC,aAC1EkhC,EAAch8L,KAAKmrD,IAAI8qE,GACvBgmE,EAAcj8L,KAAKkrD,IAAI+qE,GACvBimE,EAAenhM,KAAKmnK,wBAAwB,GAAGv/J,KACrD,MAAO,CACL46H,EAAIw+D,EAAiBC,EAAgBE,EAAeD,EACpDv+L,EAAIq+L,EAAiBE,EAAgBC,EAAeF,EAExD,CACA,iBAAAf,CAAkBkB,GAChB,MAAMpB,EAAWhgM,KAAKK,QAAQuqC,KACxBg1J,EAAiBI,EAASJ,eAC1Bh+C,EAASg+C,EAAeI,EAASnzB,OAAS+yB,EAAelC,YACzD2D,EAAerhM,KAAK0gM,oBAAoBU,EAAa,EAAG9B,GAAoBt/L,KAAM,CAACohM,GAAcphM,KAAKy/L,YAAa79C,GACnHh6I,EAAO5H,KAAK8gM,cAAcO,GAC1BvC,EAAW75L,KAAK6S,MAAM9X,KAAKu3B,eAAiBv3B,KAAK4b,MAAQhU,EAAK46H,EAAIxiI,KAAK8yB,OAASlrB,EAAKjF,GAAK,EAChG,OAAOm8L,EAAW,EAAIA,EAAW,CACnC,CACA,iBAAAyB,GACE,IACIriM,EAAGy5H,EADHwnE,EAAan/L,KAAKknB,OAAOzf,MAAQ,GAErC,GAAI03L,EAAWlhM,OACb,OAAOkhM,EAET,MAAMl8B,EAAQjjK,KAAK4qJ,0BACnB,GAAI5qJ,KAAK2/L,aAAe18B,EAAMhlK,OAC5B,OAAQ+B,KAAKknB,OAAOzf,KAAOw7J,EAAM,GAAGh6G,WAAWgnG,mBAAmBjwJ,MAEpE,IAAK9B,EAAI,EAAGy5H,EAAOsrC,EAAMhlK,OAAQC,EAAIy5H,IAAQz5H,EAC3CihM,EAAaA,EAAWvwL,OAAOq0J,EAAM/kK,GAAG+qD,WAAWgnG,mBAAmBjwJ,OAExE,OAAQA,KAAKknB,OAAOzf,KAAOzH,KAAKujC,UAAU47J,EAC5C,CACA,kBAAAY,GACE,MAAMZ,EAAan/L,KAAKknB,OAAOioI,QAAU,GACzC,IAAIjxJ,EAAGy5H,EACP,GAAIwnE,EAAWlhM,OACb,OAAOkhM,EAET,MAAMhwC,EAASnvJ,KAAKovJ,YACpB,IAAKlxJ,EAAI,EAAGy5H,EAAOw3B,EAAOlxJ,OAAQC,EAAIy5H,IAAQz5H,EAC5CihM,EAAWj9L,KAAKiL,GAAMnN,KAAMmvJ,EAAOjxJ,KAErC,OAAQ8B,KAAKknB,OAAOioI,OAASnvJ,KAAK2/L,YAAcR,EAAan/L,KAAKujC,UAAU47J,EAC9E,CACA,SAAA57J,CAAU35B,GACR,OAAOozH,GAAapzH,EAAOymC,KAAKiuJ,IAClC,EAsBF,SAAS,GAAYpiE,EAAO14F,EAAK+zF,GAC/B,IAEI+pE,EAAYhxK,EAAYixK,EAAY5mG,EAFpC2hC,EAAK,EACLD,EAAKH,EAAMj+H,OAAS,EAEpBs5H,GACE/zF,GAAO04F,EAAMI,GAAI8iB,KAAO57G,GAAO04F,EAAMG,GAAI+iB,OACzC9iB,KAAID,MAAME,GAAaL,EAAO,MAAO14F,MAEvC47G,IAAKkiD,EAAY12J,KAAM22J,GAAcrlE,EAAMI,MAC3C8iB,IAAK9uH,EAAYsa,KAAM+vD,GAAcuhC,EAAMG,MAEzC74F,GAAO04F,EAAMI,GAAI1xF,MAAQpH,GAAO04F,EAAMG,GAAIzxF,QAC1C0xF,KAAID,MAAME,GAAaL,EAAO,OAAQ14F,MAExCoH,KAAM02J,EAAYliD,IAAKmiD,GAAcrlE,EAAMI,MAC3C1xF,KAAMta,EAAY8uH,IAAKzkD,GAAcuhC,EAAMG,KAE/C,MAAMmlE,EAAOlxK,EAAagxK,EAC1B,OAAOE,EAAOD,GAAc5mG,EAAa4mG,IAAe/9J,EAAM89J,GAAcE,EAAOD,CACrF,CAvCAhC,GAAUhgM,GAAK,OACfggM,GAAUtsJ,SAAW,CACnBgwG,OAAQ,OACRiqB,SAAU,CAAC,EACXtiI,KAAM,CACJ6zJ,QAAQ,EACR5xB,MAAM,EACN/iH,OAAO,EACP40I,YAAY,EACZG,QAAS,cACTe,eAAgB,CAAC,GAEnBrsC,MAAO,CACLh1J,OAAQ,OACRigK,MAAO,CACLnmI,SAAS,KAyBf,MAAMopK,WAAwBlC,GAC5B,WAAAvhM,CAAY8uB,GACV7mB,MAAM6mB,GACN9sB,KAAK0hM,OAAS,GACd1hM,KAAK2hM,aAAUhqL,EACf3X,KAAK4hM,iBAAcjqL,CACrB,CACA,WAAAwoL,GACE,MAAMhB,EAAan/L,KAAK6hM,yBAClB3lE,EAAQl8H,KAAK0hM,OAAS1hM,KAAK8hM,iBAAiB3C,GAClDn/L,KAAK2hM,QAAU,GAAYzlE,EAAOl8H,KAAKmb,KACvCnb,KAAK4hM,YAAc,GAAY1lE,EAAOl8H,KAAKkb,KAAOlb,KAAK2hM,QACvD17L,MAAMk6L,YAAYhB,EACpB,CACA,gBAAA2C,CAAiB3C,GACf,MAAM,IAAChkL,EAAG,IAAED,GAAOlb,KACb4nB,EAAQ,GACRs0G,EAAQ,GACd,IAAIh+H,EAAGy5H,EAAMtoH,EAAM+jJ,EAAM/1J,EACzB,IAAKa,EAAI,EAAGy5H,EAAOwnE,EAAWlhM,OAAQC,EAAIy5H,IAAQz5H,EAChDk1J,EAAO+rC,EAAWjhM,GACdk1J,GAAQj4I,GAAOi4I,GAAQl4I,GACzB0M,EAAM1lB,KAAKkxJ,GAGf,GAAIxrI,EAAM3pB,OAAS,EACjB,MAAO,CACL,CAAC2sC,KAAMzvB,EAAKikI,IAAK,GACjB,CAACx0G,KAAM1vB,EAAKkkI,IAAK,IAGrB,IAAKlhJ,EAAI,EAAGy5H,EAAO/vG,EAAM3pB,OAAQC,EAAIy5H,IAAQz5H,EAC3Cb,EAAOuqB,EAAM1pB,EAAI,GACjBmR,EAAOuY,EAAM1pB,EAAI,GACjBk1J,EAAOxrI,EAAM1pB,GACT+G,KAAK6kD,OAAOzsD,EAAOgS,GAAQ,KAAO+jJ,GACpCl3B,EAAMh6H,KAAK,CAAC0oC,KAAMwoH,EAAMhU,IAAKlhJ,GAAKy5H,EAAO,KAG7C,OAAOuE,CACT,CACA,sBAAA2lE,GACE,IAAI1C,EAAan/L,KAAKknB,OAAOziB,KAAO,GACpC,GAAI06L,EAAWlhM,OACb,OAAOkhM,EAET,MAAM13L,EAAOzH,KAAKugM,oBACZzoK,EAAQ93B,KAAK+/L,qBAOnB,OALEZ,EADE13L,EAAKxJ,QAAU65B,EAAM75B,OACV+B,KAAKujC,UAAU97B,EAAKmH,OAAOkpB,IAE3BrwB,EAAKxJ,OAASwJ,EAAOqwB,EAEpCqnK,EAAan/L,KAAKknB,OAAOziB,IAAM06L,EACxBA,CACT,CACA,kBAAAkB,CAAmBtjM,GACjB,OAAQ,GAAYiD,KAAK0hM,OAAQ3kM,GAASiD,KAAK2hM,SAAW3hM,KAAK4hM,WACjE,CACA,gBAAAt6B,CAAiB9zB,GACf,MAAMqtD,EAAU7gM,KAAK0/L,SACfn4B,EAAUvnK,KAAKwnK,mBAAmBh0B,GAASqtD,EAAQh6C,OAASg6C,EAAQ9iL,IAC1E,OAAO,GAAY/d,KAAK0hM,OAAQn6B,EAAUvnK,KAAK4hM,YAAc5hM,KAAK2hM,SAAS,EAC7E,EAEFF,GAAgBliM,GAAK,aACrBkiM,GAAgBxuJ,SAAWssJ,GAAUtsJ,SAErC,IAAIu+F,GAAsB9yI,OAAOqyJ,OAAO,CACxC/qI,UAAW,KACX0xK,cAAeA,GACfoC,YAAaA,GACbQ,iBAAkBA,GAClBqC,kBAAmBA,GACnB4C,UAAWA,GACXkC,gBAAiBA,KAGjB,MAAMM,GAAgB,CACpB12B,GACA,GACA/5B,GACAE,G,2qBCr/UF,IAAIwwD,EAAgB,SAAS9+L,EAAGnF,GAI9B,OAHAikM,EAAgBtjM,OAAOynB,gBAClB,CAAEH,UAAW,cAAgB5nB,OAAS,SAAU8E,EAAGnF,GAAKmF,EAAE8iB,UAAYjoB,CAAG,GAC1E,SAAUmF,EAAGnF,GAAK,IAAK,IAAI8E,KAAK9E,EAAOW,OAAOC,UAAUE,eAAeC,KAAKf,EAAG8E,KAAIK,EAAEL,GAAK9E,EAAE8E,GAAI,EAC7Fm/L,EAAc9+L,EAAGnF,EAC1B,EAEO,SAASkkM,EAAU/+L,EAAGnF,GAC3B,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAI+W,UAAU,uBAAyB8mD,OAAO79D,GAAK,iCAE7D,SAASmkM,IAAOliM,KAAKhC,YAAckF,CAAG,CADtC8+L,EAAc9+L,EAAGnF,GAEjBmF,EAAEvE,UAAkB,OAANZ,EAAaW,OAAOqnB,OAAOhoB,IAAMmkM,EAAGvjM,UAAYZ,EAAEY,UAAW,IAAIujM,EACjF,CAEO,IAAIC,EAAW,WAQpB,OAPAA,EAAWzjM,OAAO02B,QAAU,SAAkBxxB,GAC1C,IAAK,IAAI0yD,EAAGp4D,EAAI,EAAGsF,EAAIujB,UAAU9oB,OAAQC,EAAIsF,EAAGtF,IAE5C,IAAK,IAAI2E,KADTyzD,EAAIvvC,UAAU7oB,GACAo4D,EAAO53D,OAAOC,UAAUE,eAAeC,KAAKw3D,EAAGzzD,KAAIe,EAAEf,GAAKyzD,EAAEzzD,IAE9E,OAAOe,CACX,EACOu+L,EAASxkM,MAAMqC,KAAM+mB,UAC9B,EAEO,SAASq7K,EAAO9rI,EAAGh5D,GACxB,IAAIsG,EAAI,CAAC,EACT,IAAK,IAAIf,KAAKyzD,EAAO53D,OAAOC,UAAUE,eAAeC,KAAKw3D,EAAGzzD,IAAMvF,EAAE2d,QAAQpY,GAAK,IAC9Ee,EAAEf,GAAKyzD,EAAEzzD,IACb,GAAS,MAALyzD,GAAqD,oBAAjC53D,OAAO4yG,sBACtB,KAAIpzG,EAAI,EAAb,IAAgB2E,EAAInE,OAAO4yG,sBAAsBh7C,GAAIp4D,EAAI2E,EAAE5E,OAAQC,IAC3DZ,EAAE2d,QAAQpY,EAAE3E,IAAM,GAAKQ,OAAOC,UAAU0jM,qBAAqBvjM,KAAKw3D,EAAGzzD,EAAE3E,MACvE0F,EAAEf,EAAE3E,IAAMo4D,EAAEzzD,EAAE3E,IAF4B,CAItD,OAAO0F,CACT,CAEO,SAAS0+L,EAAWC,EAAYl5L,EAAQtK,EAAK4xB,GAClD,IAA2HztB,EAAvHJ,EAAIikB,UAAU9oB,OAAQkF,EAAIL,EAAI,EAAIuG,EAAkB,OAATsnB,EAAgBA,EAAOjyB,OAAOkyB,yBAAyBvnB,EAAQtK,GAAO4xB,EACrH,GAAuB,kBAAZpK,SAAoD,oBAArBA,QAAQi8K,SAAyBr/L,EAAIojB,QAAQi8K,SAASD,EAAYl5L,EAAQtK,EAAK4xB,QACpH,IAAK,IAAIzyB,EAAIqkM,EAAWtkM,OAAS,EAAGC,GAAK,EAAGA,KAASgF,EAAIq/L,EAAWrkM,MAAIiF,GAAKL,EAAI,EAAII,EAAEC,GAAKL,EAAI,EAAII,EAAEmG,EAAQtK,EAAKoE,GAAKD,EAAEmG,EAAQtK,KAASoE,GAChJ,OAAOL,EAAI,GAAKK,GAAKzE,OAAOqO,eAAe1D,EAAQtK,EAAKoE,GAAIA,CAC9D,CAEO,SAASs/L,EAAQC,EAAYC,GAClC,OAAO,SAAUt5L,EAAQtK,GAAO4jM,EAAUt5L,EAAQtK,EAAK2jM,EAAa,CACtE,CAEO,SAASE,EAAaj1G,EAAMk1G,EAAcN,EAAYO,EAAWC,EAAcC,GACpF,SAASC,EAAO1/L,GAAK,QAAU,IAANA,GAA6B,oBAANA,EAAkB,MAAM,IAAIuR,UAAU,qBAAsB,OAAOvR,CAAG,CAKtH,IAJA,IAGIw4B,EAHAmnK,EAAOJ,EAAUI,KAAMnkM,EAAe,WAATmkM,EAAoB,MAAiB,WAATA,EAAoB,MAAQ,QACrF75L,GAAUw5L,GAAgBl1G,EAAOm1G,EAAU,UAAYn1G,EAAOA,EAAKhvF,UAAY,KAC/EuzC,EAAa2wJ,IAAiBx5L,EAAS3K,OAAOkyB,yBAAyBvnB,EAAQy5L,EAAUhhM,MAAQ,CAAC,GAC/FrE,GAAO,EACLS,EAAIqkM,EAAWtkM,OAAS,EAAGC,GAAK,EAAGA,IAAK,CAC7C,IAAImqB,EAAU,CAAC,EACf,IAAK,IAAIxlB,KAAKigM,EAAWz6K,EAAQxlB,GAAW,WAANA,EAAiB,CAAC,EAAIigM,EAAUjgM,GACtE,IAAK,IAAIA,KAAKigM,EAAUK,OAAQ96K,EAAQ86K,OAAOtgM,GAAKigM,EAAUK,OAAOtgM,GACrEwlB,EAAQ+6K,eAAiB,SAAU7/L,GAAK,GAAI9F,EAAM,MAAM,IAAIqX,UAAU,0DAA2DkuL,EAAkB9gM,KAAK+gM,EAAO1/L,GAAK,MAAQ,EAC5K,IAAI/F,GAAS,EAAI+kM,EAAWrkM,IAAa,aAATglM,EAAsB,CAAE/7L,IAAK+qC,EAAW/qC,IAAKzD,IAAKwuC,EAAWxuC,KAAQwuC,EAAWnzC,GAAMspB,GACtH,GAAa,aAAT66K,EAAqB,CACrB,QAAe,IAAX1lM,EAAmB,SACvB,GAAe,OAAXA,GAAqC,kBAAXA,EAAqB,MAAM,IAAIsX,UAAU,oBACnEinB,EAAIknK,EAAOzlM,EAAO2J,QAAM+qC,EAAW/qC,IAAM40B,IACzCA,EAAIknK,EAAOzlM,EAAOkG,QAAMwuC,EAAWxuC,IAAMq4B,IACzCA,EAAIknK,EAAOzlM,EAAOw3B,QAAO+tK,EAAar4K,QAAQqR,EACtD,MACSA,EAAIknK,EAAOzlM,MACH,UAAT0lM,EAAkBH,EAAar4K,QAAQqR,GACtCmW,EAAWnzC,GAAOg9B,EAE/B,CACI1yB,GAAQ3K,OAAOqO,eAAe1D,EAAQy5L,EAAUhhM,KAAMowC,GAC1Dz0C,GAAO,CACT,CAEO,SAAS4lM,EAAkB3mM,EAASqmM,EAAchmM,GAEvD,IADA,IAAIumM,EAAWv8K,UAAU9oB,OAAS,EACzBC,EAAI,EAAGA,EAAI6kM,EAAa9kM,OAAQC,IACrCnB,EAAQumM,EAAWP,EAAa7kM,GAAGY,KAAKpC,EAASK,GAASgmM,EAAa7kM,GAAGY,KAAKpC,GAEnF,OAAO4mM,EAAWvmM,OAAQ,CAC5B,CAEO,SAASwmM,EAAUxiK,GACxB,MAAoB,kBAANA,EAAiBA,EAAI,GAAGnyB,OAAOmyB,EAC/C,CAEO,SAASyiK,EAAkBjgM,EAAGzB,EAAM+V,GAEzC,MADoB,kBAAT/V,IAAmBA,EAAOA,EAAKuoD,YAAc,IAAIz7C,OAAO9M,EAAKuoD,YAAa,KAAO,IACrF3rD,OAAOqO,eAAexJ,EAAG,OAAQ,CAAEyJ,cAAc,EAAMjQ,MAAO8a,EAAS,GAAGjJ,OAAOiJ,EAAQ,IAAK/V,GAAQA,GAC/G,CAEO,SAAS2hM,EAAWC,EAAaC,GACtC,GAAuB,kBAAZp9K,SAAoD,oBAArBA,QAAQq9K,SAAyB,OAAOr9K,QAAQq9K,SAASF,EAAaC,EAClH,CAEO,SAASlnM,EAAUC,EAASC,EAAYC,EAAGC,GAChD,SAASC,EAAMC,GAAS,OAAOA,aAAiBH,EAAIG,EAAQ,IAAIH,GAAE,SAAUI,GAAWA,EAAQD,EAAQ,GAAI,CAC3G,OAAO,IAAKH,IAAMA,EAAIK,WAAU,SAAUD,EAASE,GAC/C,SAASC,EAAUJ,GAAS,IAAMK,EAAKP,EAAUQ,KAAKN,GAAS,CAAE,MAAOO,GAAKJ,EAAOI,EAAI,CAAE,CAC1F,SAASC,EAASR,GAAS,IAAMK,EAAKP,EAAU,SAASE,GAAS,CAAE,MAAOO,GAAKJ,EAAOI,EAAI,CAAE,CAC7F,SAASF,EAAKI,GAAUA,EAAOC,KAAOT,EAAQQ,EAAOT,OAASD,EAAMU,EAAOT,OAAOW,KAAKP,EAAWI,EAAW,CAC7GH,GAAMP,EAAYA,EAAUc,MAAMjB,EAASC,GAAc,KAAKU,OAClE,GACF,CAEO,SAASwmM,EAAYnnM,EAASkW,GACnC,IAAsGrP,EAAGy9B,EAAGp9B,EAAGlB,EAA3Gq5B,EAAI,CAAEjE,MAAO,EAAGgsK,KAAM,WAAa,GAAW,EAAPlgM,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGmgM,KAAM,GAAIC,IAAK,IAChG,OAAOthM,EAAI,CAAErF,KAAM4mM,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAXnuL,SAA0BpT,EAAEoT,OAAOytD,UAAY,WAAa,OAAOvjE,IAAM,GAAI0C,EACvJ,SAASuhM,EAAKzgM,GAAK,OAAO,SAAUhB,GAAK,OAAOpF,EAAK,CAACoG,EAAGhB,GAAK,CAAG,CACjE,SAASpF,EAAK8mM,GACV,GAAI3gM,EAAG,MAAM,IAAIuR,UAAU,mCAC3B,MAAOpS,IAAMA,EAAI,EAAGwhM,EAAG,KAAOnoK,EAAI,IAAKA,MACnC,GAAIx4B,EAAI,EAAGy9B,IAAMp9B,EAAY,EAARsgM,EAAG,GAASljK,EAAE,UAAYkjK,EAAG,GAAKljK,EAAE,YAAcp9B,EAAIo9B,EAAE,YAAcp9B,EAAE9E,KAAKkiC,GAAI,GAAKA,EAAE3jC,SAAWuG,EAAIA,EAAE9E,KAAKkiC,EAAGkjK,EAAG,KAAKzmM,KAAM,OAAOmG,EAE3J,OADIo9B,EAAI,EAAGp9B,IAAGsgM,EAAK,CAAS,EAARA,EAAG,GAAQtgM,EAAE7G,QACzBmnM,EAAG,IACP,KAAK,EAAG,KAAK,EAAGtgM,EAAIsgM,EAAI,MACxB,KAAK,EAAc,OAAXnoK,EAAEjE,QAAgB,CAAE/6B,MAAOmnM,EAAG,GAAIzmM,MAAM,GAChD,KAAK,EAAGs+B,EAAEjE,QAASkJ,EAAIkjK,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKnoK,EAAEioK,IAAI54J,MAAOrP,EAAEgoK,KAAK34J,MAAO,SACxC,QACI,GAAMxnC,EAAIm4B,EAAEgoK,OAAMngM,EAAIA,EAAE3F,OAAS,GAAK2F,EAAEA,EAAE3F,OAAS,MAAkB,IAAVimM,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEnoK,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVmoK,EAAG,MAActgM,GAAMsgM,EAAG,GAAKtgM,EAAE,IAAMsgM,EAAG,GAAKtgM,EAAE,IAAM,CAAEm4B,EAAEjE,MAAQosK,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYnoK,EAAEjE,MAAQl0B,EAAE,GAAI,CAAEm4B,EAAEjE,MAAQl0B,EAAE,GAAIA,EAAIsgM,EAAI,KAAO,CACpE,GAAItgM,GAAKm4B,EAAEjE,MAAQl0B,EAAE,GAAI,CAAEm4B,EAAEjE,MAAQl0B,EAAE,GAAIm4B,EAAEioK,IAAI9hM,KAAKgiM,GAAK,KAAO,CAC9DtgM,EAAE,IAAIm4B,EAAEioK,IAAI54J,MAChBrP,EAAEgoK,KAAK34J,MAAO,SAEtB84J,EAAKtxL,EAAK9T,KAAKpC,EAASq/B,EAC5B,CAAE,MAAOz+B,GAAK4mM,EAAK,CAAC,EAAG5mM,GAAI0jC,EAAI,CAAG,CAAE,QAAUz9B,EAAIK,EAAI,CAAG,CACzD,GAAY,EAARsgM,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEnnM,MAAOmnM,EAAG,GAAKA,EAAG,QAAK,EAAQzmM,MAAM,EAC9E,CACF,CAEO,IAAI0mM,EAAkBzlM,OAAOqnB,OAAS,SAAUG,EAAGjjB,EAAGL,EAAGwhM,QACnDzsL,IAAPysL,IAAkBA,EAAKxhM,GAC3B,IAAI+tB,EAAOjyB,OAAOkyB,yBAAyB3tB,EAAGL,GACzC+tB,KAAS,QAASA,GAAQ1tB,EAAEo8E,WAAa1uD,EAAKtJ,UAAYsJ,EAAK3jB,gBAChE2jB,EAAO,CAAEvJ,YAAY,EAAMjgB,IAAK,WAAa,OAAOlE,EAAEL,EAAI,IAE9DlE,OAAOqO,eAAemZ,EAAGk+K,EAAIzzK,EAC9B,EAAI,SAAUzK,EAAGjjB,EAAGL,EAAGwhM,QACXzsL,IAAPysL,IAAkBA,EAAKxhM,GAC3BsjB,EAAEk+K,GAAMnhM,EAAEL,EACX,EAEM,SAASyhM,EAAaphM,EAAGijB,GAC9B,IAAK,IAAIrjB,KAAKI,EAAa,YAANJ,GAAoBnE,OAAOC,UAAUE,eAAeC,KAAKonB,EAAGrjB,IAAIshM,EAAgBj+K,EAAGjjB,EAAGJ,EAC7G,CAEO,SAASyhM,EAASp+K,GACvB,IAAIowC,EAAsB,oBAAXxgD,QAAyBA,OAAOytD,SAAUtgE,EAAIqzD,GAAKpwC,EAAEowC,GAAIp4D,EAAI,EAC5E,GAAI+E,EAAG,OAAOA,EAAEnE,KAAKonB,GACrB,GAAIA,GAAyB,kBAAbA,EAAEjoB,OAAqB,MAAO,CAC1CZ,KAAM,WAEF,OADI6oB,GAAKhoB,GAAKgoB,EAAEjoB,SAAQioB,OAAI,GACrB,CAAEnpB,MAAOmpB,GAAKA,EAAEhoB,KAAMT,MAAOyoB,EACxC,GAEJ,MAAM,IAAIpR,UAAUwhD,EAAI,0BAA4B,kCACtD,CAEO,SAASiuI,EAAOr+K,EAAG1iB,GACxB,IAAIP,EAAsB,oBAAX6S,QAAyBoQ,EAAEpQ,OAAOytD,UACjD,IAAKtgE,EAAG,OAAOijB,EACf,IAAmB/iB,EAAY7F,EAA3BY,EAAI+E,EAAEnE,KAAKonB,GAAOs+K,EAAK,GAC3B,IACI,YAAc,IAANhhM,GAAgBA,KAAM,MAAQL,EAAIjF,EAAEb,QAAQI,KAAM+mM,EAAGtiM,KAAKiB,EAAEpG,MACxE,CACA,MAAO2E,GAASpE,EAAI,CAAEoE,MAAOA,EAAS,CACtC,QACI,IACQyB,IAAMA,EAAE1F,OAASwF,EAAI/E,EAAE,YAAY+E,EAAEnE,KAAKZ,EAClD,CACA,QAAU,GAAIZ,EAAG,MAAMA,EAAEoE,KAAO,CACpC,CACA,OAAO8iM,CACT,CAGO,SAASC,IACd,IAAK,IAAID,EAAK,GAAItmM,EAAI,EAAGA,EAAI6oB,UAAU9oB,OAAQC,IAC3CsmM,EAAKA,EAAG51L,OAAO21L,EAAOx9K,UAAU7oB,KACpC,OAAOsmM,CACT,CAGO,SAASE,IACd,IAAK,IAAIpuI,EAAI,EAAGp4D,EAAI,EAAGymM,EAAK59K,UAAU9oB,OAAQC,EAAIymM,EAAIzmM,IAAKo4D,GAAKvvC,UAAU7oB,GAAGD,OACxE,IAAIkF,EAAI/E,MAAMk4D,GAAI1zD,EAAI,EAA3B,IAA8B1E,EAAI,EAAGA,EAAIymM,EAAIzmM,IACzC,IAAK,IAAIJ,EAAIipB,UAAU7oB,GAAI4sB,EAAI,EAAG85K,EAAK9mM,EAAEG,OAAQ6sB,EAAI85K,EAAI95K,IAAKloB,IAC1DO,EAAEP,GAAK9E,EAAEgtB,GACjB,OAAO3nB,CACT,CAEO,SAAS0hM,EAAcz0K,EAAIvoB,EAAMi9L,GACtC,GAAIA,GAA6B,IAArB/9K,UAAU9oB,OAAc,IAAK,IAA4BumM,EAAxBtmM,EAAI,EAAG6E,EAAI8E,EAAK5J,OAAYC,EAAI6E,EAAG7E,KACxEsmM,GAAQtmM,KAAK2J,IACR28L,IAAIA,EAAKpmM,MAAMO,UAAU+M,MAAM5M,KAAK+I,EAAM,EAAG3J,IAClDsmM,EAAGtmM,GAAK2J,EAAK3J,IAGrB,OAAOkyB,EAAGxhB,OAAO41L,GAAMpmM,MAAMO,UAAU+M,MAAM5M,KAAK+I,GACpD,CAEO,SAASk9L,EAAQviM,GACtB,OAAOxC,gBAAgB+kM,GAAW/kM,KAAKwC,EAAIA,EAAGxC,MAAQ,IAAI+kM,EAAQviM,EACpE,CAEO,SAASwiM,EAAiBtoM,EAASC,EAAYE,GACpD,IAAKiZ,OAAOmvL,cAAe,MAAM,IAAInwL,UAAU,wCAC/C,IAAoD5W,EAAhDwE,EAAI7F,EAAUc,MAAMjB,EAASC,GAAc,IAAQqG,EAAI,GAC3D,OAAO9E,EAAI,CAAC,EAAG+lM,EAAK,QAASA,EAAK,SAAUA,EAAK,UAAW/lM,EAAE4X,OAAOmvL,eAAiB,WAAc,OAAOjlM,IAAM,EAAG9B,EACpH,SAAS+lM,EAAKzgM,GAASd,EAAEc,KAAItF,EAAEsF,GAAK,SAAUhB,GAAK,OAAO,IAAIvF,SAAQ,SAAUa,EAAGC,GAAKiF,EAAEd,KAAK,CAACsB,EAAGhB,EAAG1E,EAAGC,IAAM,GAAKg3E,EAAOvxE,EAAGhB,EAAI,GAAI,EAAG,CACzI,SAASuyE,EAAOvxE,EAAGhB,GAAK,IAAMpF,EAAKsF,EAAEc,GAAGhB,GAAK,CAAE,MAAOlF,GAAK4nM,EAAOliM,EAAE,GAAG,GAAI1F,EAAI,CAAE,CACjF,SAASF,EAAK+F,GAAKA,EAAEpG,iBAAiBgoM,EAAU9nM,QAAQD,QAAQmG,EAAEpG,MAAMyF,GAAG9E,KAAKynM,EAASjoM,GAAUgoM,EAAOliM,EAAE,GAAG,GAAIG,EAAI,CACvH,SAASgiM,EAAQpoM,GAASg4E,EAAO,OAAQh4E,EAAQ,CACjD,SAASG,EAAOH,GAASg4E,EAAO,QAASh4E,EAAQ,CACjD,SAASmoM,EAAO3hM,EAAGf,GAASe,EAAEf,GAAIQ,EAAEm4C,QAASn4C,EAAE/E,QAAQ82E,EAAO/xE,EAAE,GAAG,GAAIA,EAAE,GAAG,GAAK,CACnF,CAEO,SAASoiM,EAAiBl/K,GAC/B,IAAIhoB,EAAG2E,EACP,OAAO3E,EAAI,CAAC,EAAG+lM,EAAK,QAASA,EAAK,SAAS,SAAU3mM,GAAK,MAAMA,CAAG,IAAI2mM,EAAK,UAAW/lM,EAAE4X,OAAOytD,UAAY,WAAc,OAAOvjE,IAAM,EAAG9B,EAC1I,SAAS+lM,EAAKzgM,EAAGD,GAAKrF,EAAEsF,GAAK0iB,EAAE1iB,GAAK,SAAUhB,GAAK,OAAQK,GAAKA,GAAK,CAAE9F,MAAOgoM,EAAQ7+K,EAAE1iB,GAAGhB,IAAK/E,MAAM,GAAU8F,EAAIA,EAAEf,GAAKA,CAAG,EAAIe,CAAG,CACvI,CAEO,SAAS8hM,EAAcn/K,GAC5B,IAAKpQ,OAAOmvL,cAAe,MAAM,IAAInwL,UAAU,wCAC/C,IAAiC5W,EAA7B+E,EAAIijB,EAAEpQ,OAAOmvL,eACjB,OAAOhiM,EAAIA,EAAEnE,KAAKonB,IAAMA,EAAwB,oBAAbo+K,EAA0BA,EAASp+K,GAAKA,EAAEpQ,OAAOytD,YAAarlE,EAAI,CAAC,EAAG+lM,EAAK,QAASA,EAAK,SAAUA,EAAK,UAAW/lM,EAAE4X,OAAOmvL,eAAiB,WAAc,OAAOjlM,IAAM,EAAG9B,GAC9M,SAAS+lM,EAAKzgM,GAAKtF,EAAEsF,GAAK0iB,EAAE1iB,IAAM,SAAUhB,GAAK,OAAO,IAAIvF,SAAQ,SAAUD,EAASE,GAAUsF,EAAI0jB,EAAE1iB,GAAGhB,GAAI0iM,EAAOloM,EAASE,EAAQsF,EAAE/E,KAAM+E,EAAEzF,MAAQ,GAAI,CAAG,CAC/J,SAASmoM,EAAOloM,EAASE,EAAQgG,EAAGV,GAAKvF,QAAQD,QAAQwF,GAAG9E,MAAK,SAAS8E,GAAKxF,EAAQ,CAAED,MAAOyF,EAAG/E,KAAMyF,GAAM,GAAGhG,EAAS,CAC7H,CAEO,SAASooM,EAAqBC,EAAQ7pJ,GAE3C,OADIh9C,OAAOqO,eAAkBrO,OAAOqO,eAAew4L,EAAQ,MAAO,CAAExoM,MAAO2+C,IAAiB6pJ,EAAO7pJ,IAAMA,EAClG6pJ,CACT,CAEA,IAAIC,EAAqB9mM,OAAOqnB,OAAS,SAAUG,EAAG1jB,GACpD9D,OAAOqO,eAAemZ,EAAG,UAAW,CAAEkB,YAAY,EAAMrqB,MAAOyF,GAChE,EAAI,SAAS0jB,EAAG1jB,GACf0jB,EAAE,WAAa1jB,CACjB,EAEO,SAASijM,EAAa57F,GAC3B,GAAIA,GAAOA,EAAIxqB,WAAY,OAAOwqB,EAClC,IAAIrsG,EAAS,CAAC,EACd,GAAW,MAAPqsG,EAAa,IAAK,IAAIjnG,KAAKinG,EAAe,YAANjnG,GAAmBlE,OAAOC,UAAUE,eAAeC,KAAK+qG,EAAKjnG,IAAIuhM,EAAgB3mM,EAAQqsG,EAAKjnG,GAEtI,OADA4iM,EAAmBhoM,EAAQqsG,GACpBrsG,CACT,CAEO,SAASkoM,EAAgB77F,GAC9B,OAAQA,GAAOA,EAAIxqB,WAAcwqB,EAAM,CAAEnzB,QAASmzB,EACpD,CAEO,SAAS87F,EAAuB5kI,EAAU1T,EAAO61I,EAAM3/L,GAC5D,GAAa,MAAT2/L,IAAiB3/L,EAAG,MAAM,IAAIuR,UAAU,iDAC5C,GAAqB,oBAAVu4C,EAAuB0T,IAAa1T,IAAU9pD,GAAK8pD,EAAM3lD,IAAIq5D,GAAW,MAAM,IAAIjsD,UAAU,4EACvG,MAAgB,MAATouL,EAAe3/L,EAAa,MAAT2/L,EAAe3/L,EAAEzE,KAAKiiE,GAAYx9D,EAAIA,EAAExG,MAAQswD,EAAMlmD,IAAI45D,EACtF,CAEO,SAAS6kI,EAAuB7kI,EAAU1T,EAAOtwD,EAAOmmM,EAAM3/L,GACnE,GAAa,MAAT2/L,EAAc,MAAM,IAAIpuL,UAAU,kCACtC,GAAa,MAATouL,IAAiB3/L,EAAG,MAAM,IAAIuR,UAAU,iDAC5C,GAAqB,oBAAVu4C,EAAuB0T,IAAa1T,IAAU9pD,GAAK8pD,EAAM3lD,IAAIq5D,GAAW,MAAM,IAAIjsD,UAAU,2EACvG,MAAiB,MAATouL,EAAe3/L,EAAEzE,KAAKiiE,EAAUhkE,GAASwG,EAAIA,EAAExG,MAAQA,EAAQswD,EAAM3pD,IAAIq9D,EAAUhkE,GAASA,CACtG,CAEO,SAAS8oM,EAAsBx4I,EAAO0T,GAC3C,GAAiB,OAAbA,GAA0C,kBAAbA,GAA6C,oBAAbA,EAA0B,MAAM,IAAIjsD,UAAU,0CAC/G,MAAwB,oBAAVu4C,EAAuB0T,IAAa1T,EAAQA,EAAM3lD,IAAIq5D,EACtE,CAEO,SAAS+kI,EAAwBC,EAAKhpM,EAAOipM,GAClD,GAAc,OAAVjpM,QAA4B,IAAVA,EAAkB,CACtC,GAAqB,kBAAVA,GAAuC,oBAAVA,EAAsB,MAAM,IAAI+X,UAAU,oBAClF,IAAIvO,EACJ,GAAIy/L,EAAO,CACP,IAAKlwL,OAAOmwL,aAAc,MAAM,IAAInxL,UAAU,uCAC9CvO,EAAUxJ,EAAM+Y,OAAOmwL,aAC3B,CACA,QAAgB,IAAZ1/L,EAAoB,CACpB,IAAKuP,OAAOvP,QAAS,MAAM,IAAIuO,UAAU,kCACzCvO,EAAUxJ,EAAM+Y,OAAOvP,QAC3B,CACA,GAAuB,oBAAZA,EAAwB,MAAM,IAAIuO,UAAU,0BACvDixL,EAAIx9H,MAAMrmE,KAAK,CAAEnF,MAAOA,EAAOwJ,QAASA,EAASy/L,MAAOA,GAC1D,MACSA,GACPD,EAAIx9H,MAAMrmE,KAAK,CAAE8jM,OAAO,IAE1B,OAAOjpM,CACT,CAEA,IAAImpM,EAA8C,oBAApBC,gBAAiCA,gBAAkB,SAAUzkM,EAAO0kM,EAAY/6I,GAC5G,IAAI/tD,EAAI,IAAIgD,MAAM+qD,GAClB,OAAO/tD,EAAEwE,KAAO,kBAAmBxE,EAAEoE,MAAQA,EAAOpE,EAAE8oM,WAAaA,EAAY9oM,CACjF,EAEO,SAAS+oM,EAAmBN,GACjC,SAASO,EAAKhpM,GACZyoM,EAAIrkM,MAAQqkM,EAAIQ,SAAW,IAAIL,EAAiB5oM,EAAGyoM,EAAIrkM,MAAO,4CAA8CpE,EAC5GyoM,EAAIQ,UAAW,CACjB,CACA,SAASlpM,IACP,MAAO0oM,EAAIx9H,MAAMtqE,OAAQ,CACvB,IAAIuoM,EAAMT,EAAIx9H,MAAMn9B,MACpB,IACE,IAAI5tC,EAASgpM,EAAIjgM,SAAWigM,EAAIjgM,QAAQzH,KAAK0nM,EAAIzpM,OACjD,GAAIypM,EAAIR,MAAO,OAAO/oM,QAAQD,QAAQQ,GAAQE,KAAKL,GAAM,SAASC,GAAc,OAATgpM,EAAKhpM,GAAWD,GAAQ,GACjG,CACA,MAAOC,GACHgpM,EAAKhpM,EACT,CACF,CACA,GAAIyoM,EAAIQ,SAAU,MAAMR,EAAIrkM,KAC9B,CACA,OAAOrE,GACT,CAEA,SACE4kM,YACAE,WACAC,SACAE,aACAG,UACAgB,aACAhnM,YACAonM,cACAM,kBACAE,eACAC,WACAC,SACAE,WACAC,iBACAG,gBACAE,UACAC,mBACAI,mBACAC,gBACAC,uBACAG,eACAC,kBACAC,yBACAC,yBACAC,wBACAC,0BACAO,qB","sources":["webpack://launchpack/./node_modules/@googlemaps/js-api-loader/dist/index.esm.js","webpack://launchpack/./node_modules/bootstrap/js/dist/base-component.js","webpack://launchpack/./node_modules/bootstrap/js/dist/dom/data.js","webpack://launchpack/./node_modules/bootstrap/js/dist/dom/event-handler.js","webpack://launchpack/./node_modules/bootstrap/js/dist/dom/manipulator.js","webpack://launchpack/./node_modules/bootstrap/js/dist/dom/selector-engine.js","webpack://launchpack/./node_modules/bootstrap/js/dist/modal.js","webpack://launchpack/./node_modules/bootstrap/js/dist/util/backdrop.js","webpack://launchpack/./node_modules/bootstrap/js/dist/util/component-functions.js","webpack://launchpack/./node_modules/bootstrap/js/dist/util/config.js","webpack://launchpack/./node_modules/bootstrap/js/dist/util/focustrap.js","webpack://launchpack/./node_modules/bootstrap/js/dist/util/index.js","webpack://launchpack/./node_modules/bootstrap/js/dist/util/scrollbar.js","webpack://launchpack/./node_modules/lodash/_Symbol.js","webpack://launchpack/./node_modules/lodash/_arrayMap.js","webpack://launchpack/./node_modules/lodash/_arrayReduce.js","webpack://launchpack/./node_modules/lodash/_asciiToArray.js","webpack://launchpack/./node_modules/lodash/_asciiWords.js","webpack://launchpack/./node_modules/lodash/_baseGetTag.js","webpack://launchpack/./node_modules/lodash/_basePropertyOf.js","webpack://launchpack/./node_modules/lodash/_baseSlice.js","webpack://launchpack/./node_modules/lodash/_baseToString.js","webpack://launchpack/./node_modules/lodash/_castSlice.js","webpack://launchpack/./node_modules/lodash/_createCaseFirst.js","webpack://launchpack/./node_modules/lodash/_createCompounder.js","webpack://launchpack/./node_modules/lodash/_deburrLetter.js","webpack://launchpack/./node_modules/lodash/_freeGlobal.js","webpack://launchpack/./node_modules/lodash/_getRawTag.js","webpack://launchpack/./node_modules/lodash/_hasUnicode.js","webpack://launchpack/./node_modules/lodash/_hasUnicodeWord.js","webpack://launchpack/./node_modules/lodash/_objectToString.js","webpack://launchpack/./node_modules/lodash/_root.js","webpack://launchpack/./node_modules/lodash/_stringToArray.js","webpack://launchpack/./node_modules/lodash/_unicodeToArray.js","webpack://launchpack/./node_modules/lodash/_unicodeWords.js","webpack://launchpack/./node_modules/lodash/camelCase.js","webpack://launchpack/./node_modules/lodash/capitalize.js","webpack://launchpack/./node_modules/lodash/deburr.js","webpack://launchpack/./node_modules/lodash/isArray.js","webpack://launchpack/./node_modules/lodash/isObjectLike.js","webpack://launchpack/./node_modules/lodash/isSymbol.js","webpack://launchpack/./node_modules/lodash/toString.js","webpack://launchpack/./node_modules/lodash/upperFirst.js","webpack://launchpack/./node_modules/lodash/words.js","webpack://launchpack/./node_modules/ssr-window/ssr-window.esm.js","webpack://launchpack/./node_modules/dom7/dom7.esm.js","webpack://launchpack/./node_modules/swiper/esm/utils/dom.js","webpack://launchpack/./node_modules/swiper/esm/utils/utils.js","webpack://launchpack/./node_modules/swiper/esm/utils/get-support.js","webpack://launchpack/./node_modules/swiper/esm/utils/get-device.js","webpack://launchpack/./node_modules/swiper/esm/utils/get-browser.js","webpack://launchpack/./node_modules/swiper/esm/modules/resize/resize.js","webpack://launchpack/./node_modules/swiper/esm/modules/observer/observer.js","webpack://launchpack/./node_modules/swiper/esm/components/core/modular.js","webpack://launchpack/./node_modules/swiper/esm/components/core/events-emitter.js","webpack://launchpack/./node_modules/swiper/esm/components/core/update/updateSize.js","webpack://launchpack/./node_modules/swiper/esm/components/core/update/updateSlides.js","webpack://launchpack/./node_modules/swiper/esm/components/core/update/updateAutoHeight.js","webpack://launchpack/./node_modules/swiper/esm/components/core/update/updateSlidesOffset.js","webpack://launchpack/./node_modules/swiper/esm/components/core/update/updateSlidesProgress.js","webpack://launchpack/./node_modules/swiper/esm/components/core/update/updateProgress.js","webpack://launchpack/./node_modules/swiper/esm/components/core/update/updateSlidesClasses.js","webpack://launchpack/./node_modules/swiper/esm/components/core/update/updateActiveIndex.js","webpack://launchpack/./node_modules/swiper/esm/components/core/update/updateClickedSlide.js","webpack://launchpack/./node_modules/swiper/esm/components/core/update/index.js","webpack://launchpack/./node_modules/swiper/esm/components/core/translate/getTranslate.js","webpack://launchpack/./node_modules/swiper/esm/components/core/translate/setTranslate.js","webpack://launchpack/./node_modules/swiper/esm/components/core/translate/minTranslate.js","webpack://launchpack/./node_modules/swiper/esm/components/core/translate/maxTranslate.js","webpack://launchpack/./node_modules/swiper/esm/components/core/translate/translateTo.js","webpack://launchpack/./node_modules/swiper/esm/components/core/translate/index.js","webpack://launchpack/./node_modules/swiper/esm/components/core/transition/setTransition.js","webpack://launchpack/./node_modules/swiper/esm/components/core/transition/transitionStart.js","webpack://launchpack/./node_modules/swiper/esm/components/core/transition/transitionEnd.js","webpack://launchpack/./node_modules/swiper/esm/components/core/transition/index.js","webpack://launchpack/./node_modules/swiper/esm/components/core/slide/slideTo.js","webpack://launchpack/./node_modules/swiper/esm/components/core/slide/slideToLoop.js","webpack://launchpack/./node_modules/swiper/esm/components/core/slide/slideNext.js","webpack://launchpack/./node_modules/swiper/esm/components/core/slide/slidePrev.js","webpack://launchpack/./node_modules/swiper/esm/components/core/slide/slideReset.js","webpack://launchpack/./node_modules/swiper/esm/components/core/slide/slideToClosest.js","webpack://launchpack/./node_modules/swiper/esm/components/core/slide/slideToClickedSlide.js","webpack://launchpack/./node_modules/swiper/esm/components/core/slide/index.js","webpack://launchpack/./node_modules/swiper/esm/components/core/loop/loopCreate.js","webpack://launchpack/./node_modules/swiper/esm/components/core/loop/loopFix.js","webpack://launchpack/./node_modules/swiper/esm/components/core/loop/loopDestroy.js","webpack://launchpack/./node_modules/swiper/esm/components/core/loop/index.js","webpack://launchpack/./node_modules/swiper/esm/components/core/grab-cursor/setGrabCursor.js","webpack://launchpack/./node_modules/swiper/esm/components/core/grab-cursor/unsetGrabCursor.js","webpack://launchpack/./node_modules/swiper/esm/components/core/grab-cursor/index.js","webpack://launchpack/./node_modules/swiper/esm/components/core/manipulation/appendSlide.js","webpack://launchpack/./node_modules/swiper/esm/components/core/manipulation/prependSlide.js","webpack://launchpack/./node_modules/swiper/esm/components/core/manipulation/addSlide.js","webpack://launchpack/./node_modules/swiper/esm/components/core/manipulation/removeSlide.js","webpack://launchpack/./node_modules/swiper/esm/components/core/manipulation/removeAllSlides.js","webpack://launchpack/./node_modules/swiper/esm/components/core/manipulation/index.js","webpack://launchpack/./node_modules/swiper/esm/components/core/events/onTouchStart.js","webpack://launchpack/./node_modules/swiper/esm/components/core/events/onTouchMove.js","webpack://launchpack/./node_modules/swiper/esm/components/core/events/onTouchEnd.js","webpack://launchpack/./node_modules/swiper/esm/components/core/events/onResize.js","webpack://launchpack/./node_modules/swiper/esm/components/core/events/onClick.js","webpack://launchpack/./node_modules/swiper/esm/components/core/events/onScroll.js","webpack://launchpack/./node_modules/swiper/esm/components/core/events/index.js","webpack://launchpack/./node_modules/swiper/esm/components/core/breakpoints/setBreakpoint.js","webpack://launchpack/./node_modules/swiper/esm/components/core/breakpoints/getBreakpoint.js","webpack://launchpack/./node_modules/swiper/esm/components/core/breakpoints/index.js","webpack://launchpack/./node_modules/swiper/esm/components/core/classes/addClasses.js","webpack://launchpack/./node_modules/swiper/esm/components/core/classes/removeClasses.js","webpack://launchpack/./node_modules/swiper/esm/components/core/classes/index.js","webpack://launchpack/./node_modules/swiper/esm/components/core/images/loadImage.js","webpack://launchpack/./node_modules/swiper/esm/components/core/images/preloadImages.js","webpack://launchpack/./node_modules/swiper/esm/components/core/images/index.js","webpack://launchpack/./node_modules/swiper/esm/components/core/check-overflow/index.js","webpack://launchpack/./node_modules/swiper/esm/components/core/defaults.js","webpack://launchpack/./node_modules/swiper/esm/components/core/core-class.js","webpack://launchpack/./node_modules/swiper/esm/components/virtual/virtual.js","webpack://launchpack/./node_modules/swiper/esm/components/keyboard/keyboard.js","webpack://launchpack/./node_modules/swiper/esm/components/mousewheel/mousewheel.js","webpack://launchpack/./node_modules/swiper/esm/components/navigation/navigation.js","webpack://launchpack/./node_modules/swiper/esm/components/pagination/pagination.js","webpack://launchpack/./node_modules/swiper/esm/components/scrollbar/scrollbar.js","webpack://launchpack/./node_modules/swiper/esm/components/parallax/parallax.js","webpack://launchpack/./node_modules/swiper/esm/components/zoom/zoom.js","webpack://launchpack/./node_modules/swiper/esm/components/lazy/lazy.js","webpack://launchpack/./node_modules/swiper/esm/components/controller/controller.js","webpack://launchpack/./node_modules/swiper/esm/components/a11y/a11y.js","webpack://launchpack/./node_modules/swiper/esm/components/history/history.js","webpack://launchpack/./node_modules/swiper/esm/components/hash-navigation/hash-navigation.js","webpack://launchpack/./node_modules/swiper/esm/components/autoplay/autoplay.js","webpack://launchpack/./node_modules/swiper/esm/components/effect-fade/effect-fade.js","webpack://launchpack/./node_modules/swiper/esm/components/effect-cube/effect-cube.js","webpack://launchpack/./node_modules/swiper/esm/components/effect-flip/effect-flip.js","webpack://launchpack/./node_modules/swiper/esm/components/effect-coverflow/effect-coverflow.js","webpack://launchpack/./node_modules/swiper/esm/components/thumbs/thumbs.js","webpack://launchpack/./node_modules/uuid/dist/esm-browser/v1.js","webpack://launchpack/./node_modules/uuid/dist/esm-browser/parse.js","webpack://launchpack/./node_modules/uuid/dist/esm-browser/v35.js","webpack://launchpack/./node_modules/uuid/dist/esm-browser/md5.js","webpack://launchpack/./node_modules/uuid/dist/esm-browser/v3.js","webpack://launchpack/./node_modules/uuid/dist/esm-browser/sha1.js","webpack://launchpack/./node_modules/uuid/dist/esm-browser/v5.js","webpack://launchpack/./node_modules/uuid/dist/esm-browser/nil.js","webpack://launchpack/./node_modules/uuid/dist/esm-browser/version.js","webpack://launchpack/./node_modules/uuid/dist/esm-browser/rng.js","webpack://launchpack/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://launchpack/./node_modules/uuid/dist/esm-browser/v4.js","webpack://launchpack/./node_modules/uuid/dist/esm-browser/regex.js","webpack://launchpack/./node_modules/uuid/dist/esm-browser/validate.js","webpack://launchpack/./node_modules/vue-loader/dist/exportHelper.js","webpack://launchpack/./node_modules/@vue/shared/dist/shared.esm-bundler.js","webpack://launchpack/./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","webpack://launchpack/./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","webpack://launchpack/./node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","webpack://launchpack/./node_modules/@vue/compiler-core/dist/compiler-core.esm-bundler.js","webpack://launchpack/./node_modules/@vue/compiler-dom/dist/compiler-dom.esm-bundler.js","webpack://launchpack/./node_modules/vue/dist/vue.esm-bundler.js","webpack://launchpack/./node_modules/chart.js/dist/chunks/helpers.segment.mjs","webpack://launchpack/./node_modules/chart.js/dist/chart.mjs","webpack://launchpack/./node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["/*! *****************************************************************************\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\r\nfunction __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}\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nvar fastDeepEqual = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at.\n *\n * Http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst DEFAULT_ID = \"__googleMapsScriptId\";\n/**\n * The status of the [[Loader]].\n */\nvar LoaderStatus;\n(function (LoaderStatus) {\n LoaderStatus[LoaderStatus[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n LoaderStatus[LoaderStatus[\"LOADING\"] = 1] = \"LOADING\";\n LoaderStatus[LoaderStatus[\"SUCCESS\"] = 2] = \"SUCCESS\";\n LoaderStatus[LoaderStatus[\"FAILURE\"] = 3] = \"FAILURE\";\n})(LoaderStatus || (LoaderStatus = {}));\n/**\n * [[Loader]] makes it easier to add Google Maps JavaScript API to your application\n * dynamically using\n * [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n * It works by dynamically creating and appending a script node to the the\n * document head and wrapping the callback function so as to return a promise.\n *\n * ```\n * const loader = new Loader({\n * apiKey: \"\",\n * version: \"weekly\",\n * libraries: [\"places\"]\n * });\n *\n * loader.load().then((google) => {\n * const map = new google.maps.Map(...)\n * })\n * ```\n */\nclass Loader {\n /**\n * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\n * using this library, instead the defaults are set by the Google Maps\n * JavaScript API server.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\n * ```\n */\n constructor({ apiKey, authReferrerPolicy, channel, client, id = DEFAULT_ID, language, libraries = [], mapIds, nonce, region, retries = 3, url = \"https://maps.googleapis.com/maps/api/js\", version, }) {\n this.callbacks = [];\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.apiKey = apiKey;\n this.authReferrerPolicy = authReferrerPolicy;\n this.channel = channel;\n this.client = client;\n this.id = id || DEFAULT_ID; // Do not allow empty string\n this.language = language;\n this.libraries = libraries;\n this.mapIds = mapIds;\n this.nonce = nonce;\n this.region = region;\n this.retries = retries;\n this.url = url;\n this.version = version;\n if (Loader.instance) {\n if (!fastDeepEqual(this.options, Loader.instance.options)) {\n throw new Error(`Loader must not be called again with different options. ${JSON.stringify(this.options)} !== ${JSON.stringify(Loader.instance.options)}`);\n }\n return Loader.instance;\n }\n Loader.instance = this;\n }\n get options() {\n return {\n version: this.version,\n apiKey: this.apiKey,\n channel: this.channel,\n client: this.client,\n id: this.id,\n libraries: this.libraries,\n language: this.language,\n region: this.region,\n mapIds: this.mapIds,\n nonce: this.nonce,\n url: this.url,\n authReferrerPolicy: this.authReferrerPolicy,\n };\n }\n get status() {\n if (this.errors.length) {\n return LoaderStatus.FAILURE;\n }\n if (this.done) {\n return LoaderStatus.SUCCESS;\n }\n if (this.loading) {\n return LoaderStatus.LOADING;\n }\n return LoaderStatus.INITIALIZED;\n }\n get failed() {\n return this.done && !this.loading && this.errors.length >= this.retries + 1;\n }\n /**\n * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\n *\n * @ignore\n * @deprecated\n */\n createUrl() {\n let url = this.url;\n url += `?callback=__googleMapsCallback`;\n if (this.apiKey) {\n url += `&key=${this.apiKey}`;\n }\n if (this.channel) {\n url += `&channel=${this.channel}`;\n }\n if (this.client) {\n url += `&client=${this.client}`;\n }\n if (this.libraries.length > 0) {\n url += `&libraries=${this.libraries.join(\",\")}`;\n }\n if (this.language) {\n url += `&language=${this.language}`;\n }\n if (this.region) {\n url += `®ion=${this.region}`;\n }\n if (this.version) {\n url += `&v=${this.version}`;\n }\n if (this.mapIds) {\n url += `&map_ids=${this.mapIds.join(\",\")}`;\n }\n if (this.authReferrerPolicy) {\n url += `&auth_referrer_policy=${this.authReferrerPolicy}`;\n }\n return url;\n }\n deleteScript() {\n const script = document.getElementById(this.id);\n if (script) {\n script.remove();\n }\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n * @deprecated, use importLibrary() instead.\n */\n load() {\n return this.loadPromise();\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n *\n * @ignore\n * @deprecated, use importLibrary() instead.\n */\n loadPromise() {\n return new Promise((resolve, reject) => {\n this.loadCallback((err) => {\n if (!err) {\n resolve(window.google);\n }\n else {\n reject(err.error);\n }\n });\n });\n }\n importLibrary(name) {\n this.execute();\n return google.maps.importLibrary(name);\n }\n /**\n * Load the Google Maps JavaScript API script with a callback.\n * @deprecated, use importLibrary() instead.\n */\n loadCallback(fn) {\n this.callbacks.push(fn);\n this.execute();\n }\n /**\n * Set the script on document.\n */\n setScript() {\n var _a, _b;\n if (document.getElementById(this.id)) {\n // TODO wrap onerror callback for cases where the script was loaded elsewhere\n this.callback();\n return;\n }\n const params = {\n key: this.apiKey,\n channel: this.channel,\n client: this.client,\n libraries: this.libraries.length && this.libraries,\n v: this.version,\n mapIds: this.mapIds,\n language: this.language,\n region: this.region,\n authReferrerPolicy: this.authReferrerPolicy,\n };\n // keep the URL minimal:\n Object.keys(params).forEach(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (key) => !params[key] && delete params[key]);\n if (!((_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.maps) === null || _b === void 0 ? void 0 : _b.importLibrary)) {\n // tweaked copy of https://developers.google.com/maps/documentation/javascript/load-maps-js-api#dynamic-library-import\n // which also sets the base url, the id, and the nonce\n /* eslint-disable */\n ((g) => {\n // @ts-ignore\n let h, a, k, p = \"The Google Maps JavaScript API\", c = \"google\", l = \"importLibrary\", q = \"__ib__\", m = document, b = window;\n // @ts-ignore\n b = b[c] || (b[c] = {});\n // @ts-ignore\n const d = b.maps || (b.maps = {}), r = new Set(), e = new URLSearchParams(), u = () => \n // @ts-ignore\n h || (h = new Promise((f, n) => __awaiter(this, void 0, void 0, function* () {\n var _a;\n yield (a = m.createElement(\"script\"));\n a.id = this.id;\n e.set(\"libraries\", [...r] + \"\");\n // @ts-ignore\n for (k in g)\n e.set(k.replace(/[A-Z]/g, (t) => \"_\" + t[0].toLowerCase()), g[k]);\n e.set(\"callback\", c + \".maps.\" + q);\n a.src = this.url + `?` + e;\n d[q] = f;\n a.onerror = () => (h = n(Error(p + \" could not load.\")));\n // @ts-ignore\n a.nonce = this.nonce || ((_a = m.querySelector(\"script[nonce]\")) === null || _a === void 0 ? void 0 : _a.nonce) || \"\";\n m.head.append(a);\n })));\n // @ts-ignore\n d[l] ? console.warn(p + \" only loads once. Ignoring:\", g) : (d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)));\n })(params);\n /* eslint-enable */\n }\n // While most libraries populate the global namespace when loaded via bootstrap params,\n // this is not the case for \"marker\" when used with the inline bootstrap loader\n // (and maybe others in the future). So ensure there is an importLibrary for each:\n const libraryPromises = this.libraries.map((library) => this.importLibrary(library));\n // ensure at least one library, to kick off loading...\n if (!libraryPromises.length) {\n libraryPromises.push(this.importLibrary(\"core\"));\n }\n Promise.all(libraryPromises).then(() => this.callback(), (error) => {\n const event = new ErrorEvent(\"error\", { error }); // for backwards compat\n this.loadErrorCallback(event);\n });\n }\n /**\n * Reset the loader state.\n */\n reset() {\n this.deleteScript();\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.onerrorEvent = null;\n }\n resetIfRetryingFailed() {\n if (this.failed) {\n this.reset();\n }\n }\n loadErrorCallback(e) {\n this.errors.push(e);\n if (this.errors.length <= this.retries) {\n const delay = this.errors.length * Math.pow(2, this.errors.length);\n console.error(`Failed to load Google Maps script, retrying in ${delay} ms.`);\n setTimeout(() => {\n this.deleteScript();\n this.setScript();\n }, delay);\n }\n else {\n this.onerrorEvent = e;\n this.callback();\n }\n }\n callback() {\n this.done = true;\n this.loading = false;\n this.callbacks.forEach((cb) => {\n cb(this.onerrorEvent);\n });\n this.callbacks = [];\n }\n execute() {\n this.resetIfRetryingFailed();\n if (this.done) {\n this.callback();\n }\n else {\n // short circuit and warn if google.maps is already loaded\n if (window.google && window.google.maps && window.google.maps.version) {\n console.warn(\"Google Maps already loaded outside @googlemaps/js-api-loader.\" +\n \"This may result in undesirable behavior as options and script parameters may not match.\");\n this.callback();\n return;\n }\n if (this.loading) ;\n else {\n this.loading = true;\n this.setScript();\n }\n }\n }\n}\n\nexport { DEFAULT_ID, Loader, LoaderStatus };\n//# sourceMappingURL=index.esm.js.map\n","/*!\n * Bootstrap base-component.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./util/config.js'), require('./util/index.js')) :\n typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler', './util/config', './util/index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.BaseComponent = factory(global.Data, global.EventHandler, global.Config, global.Index));\n})(this, (function (Data, EventHandler, Config, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const VERSION = '5.3.2';\n\n /**\n * Class definition\n */\n\n class BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = index_js.getElement(element);\n if (!element) {\n return;\n }\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n _queueCallback(callback, element, isAnimated = true) {\n index_js.executeAfterTransition(callback, element, isAnimated);\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n\n // Static\n static getInstance(element) {\n return Data.get(index_js.getElement(element), this.DATA_KEY);\n }\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n static get VERSION() {\n return VERSION;\n }\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n }\n\n return BaseComponent;\n\n}));\n//# sourceMappingURL=base-component.js.map\n","/*!\n * Bootstrap data.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Data = factory());\n})(this, (function () { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n /**\n * Constants\n */\n\n const elementMap = new Map();\n const data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n const instanceMap = elementMap.get(element);\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n instanceMap.set(key, instance);\n },\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n return null;\n },\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key);\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n };\n\n return data;\n\n}));\n//# sourceMappingURL=data.js.map\n","/*!\n * Bootstrap event-handler.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../util/index.js')) :\n typeof define === 'function' && define.amd ? define(['../util/index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.EventHandler = factory(global.Index));\n})(this, (function (index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\n const stripNameRegex = /\\..*/;\n const stripUidRegex = /::\\d+$/;\n const eventRegistry = {}; // Events storage\n let uidEvent = 1;\n const customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n };\n const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n\n /**\n * Private methods\n */\n\n function makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n }\n function getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n }\n function bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n return fn.apply(element, [event]);\n };\n }\n function bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n hydrateObj(event, {\n delegateTarget: target\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n return fn.apply(target, [event]);\n }\n }\n };\n }\n function findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n }\n function normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n return [isDelegated, callable, typeEvent];\n }\n function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n callable = wrapFunction(callable);\n }\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n }\n function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n if (!fn) {\n return;\n }\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n }\n function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n }\n function getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n }\n const EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n const $ = index_js.getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n const evt = hydrateObj(new Event(event, {\n bubbles,\n cancelable: true\n }), args);\n if (defaultPrevented) {\n evt.preventDefault();\n }\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n return evt;\n }\n };\n function hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n }\n });\n }\n }\n return obj;\n }\n\n return EventHandler;\n\n}));\n//# sourceMappingURL=event-handler.js.map\n","/*!\n * Bootstrap manipulator.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Manipulator = factory());\n})(this, (function () { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n function normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value === Number(value).toString()) {\n return Number(value);\n }\n if (value === '' || value === 'null') {\n return null;\n }\n if (typeof value !== 'string') {\n return value;\n }\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n }\n function normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n }\n const Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n return attributes;\n },\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n };\n\n return Manipulator;\n\n}));\n//# sourceMappingURL=manipulator.js.map\n","/*!\n * Bootstrap selector-engine.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../util/index.js')) :\n typeof define === 'function' && define.amd ? define(['../util/index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.SelectorEngine = factory(global.Index));\n})(this, (function (index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n const getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href');\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n selector = hrefAttribute && hrefAttribute !== '#' ? index_js.parseSelector(hrefAttribute.trim()) : null;\n }\n return selector;\n };\n const SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n return parents;\n },\n prev(element, selector) {\n let previous = element.previousElementSibling;\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n previous = previous.previousElementSibling;\n }\n return [];\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n next = next.nextElementSibling;\n }\n return [];\n },\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !index_js.isDisabled(el) && index_js.isVisible(el));\n },\n getSelectorFromElement(element) {\n const selector = getSelector(element);\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null;\n }\n return null;\n },\n getElementFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.findOne(selector) : null;\n },\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.find(selector) : [];\n }\n };\n\n return SelectorEngine;\n\n}));\n//# sourceMappingURL=selector-engine.js.map\n","/*!\n * Bootstrap modal.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./base-component.js'), require('./dom/event-handler.js'), require('./dom/selector-engine.js'), require('./util/backdrop.js'), require('./util/component-functions.js'), require('./util/focustrap.js'), require('./util/index.js'), require('./util/scrollbar.js')) :\n typeof define === 'function' && define.amd ? define(['./base-component', './dom/event-handler', './dom/selector-engine', './util/backdrop', './util/component-functions', './util/focustrap', './util/index', './util/scrollbar'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Modal = factory(global.BaseComponent, global.EventHandler, global.SelectorEngine, global.Backdrop, global.ComponentFunctions, global.Focustrap, global.Index, global.Scrollbar));\n})(this, (function (BaseComponent, EventHandler, SelectorEngine, Backdrop, componentFunctions_js, FocusTrap, index_js, ScrollBarHelper) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const NAME = 'modal';\n const DATA_KEY = 'bs.modal';\n const EVENT_KEY = `.${DATA_KEY}`;\n const DATA_API_KEY = '.data-api';\n const ESCAPE_KEY = 'Escape';\n const EVENT_HIDE = `hide${EVENT_KEY}`;\n const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`;\n const EVENT_HIDDEN = `hidden${EVENT_KEY}`;\n const EVENT_SHOW = `show${EVENT_KEY}`;\n const EVENT_SHOWN = `shown${EVENT_KEY}`;\n const EVENT_RESIZE = `resize${EVENT_KEY}`;\n const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`;\n const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`;\n const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;\n const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n const CLASS_NAME_OPEN = 'modal-open';\n const CLASS_NAME_FADE = 'fade';\n const CLASS_NAME_SHOW = 'show';\n const CLASS_NAME_STATIC = 'modal-static';\n const OPEN_SELECTOR = '.modal.show';\n const SELECTOR_DIALOG = '.modal-dialog';\n const SELECTOR_MODAL_BODY = '.modal-body';\n const SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]';\n const Default = {\n backdrop: true,\n focus: true,\n keyboard: true\n };\n const DefaultType = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n };\n\n /**\n * Class definition\n */\n\n class Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._isTransitioning = true;\n this._scrollBar.hide();\n document.body.classList.add(CLASS_NAME_OPEN);\n this._adjustDialog();\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._isShown = false;\n this._isTransitioning = true;\n this._focustrap.deactivate();\n this._element.classList.remove(CLASS_NAME_SHOW);\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n dispose() {\n EventHandler.off(window, EVENT_KEY);\n EventHandler.off(this._dialog, EVENT_KEY);\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n handleUpdate() {\n this._adjustDialog();\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n this._element.style.display = 'block';\n this._element.removeAttribute('aria-hidden');\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.scrollTop = 0;\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n index_js.reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW);\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n });\n };\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n return;\n }\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n _hideModal() {\n this._element.style.display = 'none';\n this._element.setAttribute('aria-hidden', true);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n this._isTransitioning = false;\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n this._resetAdjustments();\n this._scrollBar.reset();\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n });\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE);\n }\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n if (hideEvent.defaultPrevented) {\n return;\n }\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY;\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n this._element.classList.add(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n this._element.focus();\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const scrollbarWidth = this._scrollBar.getWidth();\n const isBodyOverflowing = scrollbarWidth > 0;\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = index_js.isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = index_js.isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](relatedTarget);\n });\n }\n }\n\n /**\n * Data API implementation\n */\n\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (index_js.isVisible(this)) {\n this.focus();\n }\n });\n });\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n });\n componentFunctions_js.enableDismissTrigger(Modal);\n\n /**\n * jQuery\n */\n\n index_js.defineJQueryPlugin(Modal);\n\n return Modal;\n\n}));\n//# sourceMappingURL=modal.js.map\n","/*!\n * Bootstrap backdrop.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../dom/event-handler.js'), require('./config.js'), require('./index.js')) :\n typeof define === 'function' && define.amd ? define(['../dom/event-handler', './config', './index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Backdrop = factory(global.EventHandler, global.Config, global.Index));\n})(this, (function (EventHandler, Config, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const NAME = 'backdrop';\n const CLASS_NAME_FADE = 'fade';\n const CLASS_NAME_SHOW = 'show';\n const EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`;\n const Default = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n };\n\n const DefaultType = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n };\n\n /**\n * Class definition\n */\n\n class Backdrop extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n index_js.execute(callback);\n return;\n }\n this._append();\n const element = this._getElement();\n if (this._config.isAnimated) {\n index_js.reflow(element);\n }\n element.classList.add(CLASS_NAME_SHOW);\n this._emulateAnimation(() => {\n index_js.execute(callback);\n });\n }\n hide(callback) {\n if (!this._config.isVisible) {\n index_js.execute(callback);\n return;\n }\n this._getElement().classList.remove(CLASS_NAME_SHOW);\n this._emulateAnimation(() => {\n this.dispose();\n index_js.execute(callback);\n });\n }\n dispose() {\n if (!this._isAppended) {\n return;\n }\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n this._element.remove();\n this._isAppended = false;\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE);\n }\n this._element = backdrop;\n }\n return this._element;\n }\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = index_js.getElement(config.rootElement);\n return config;\n }\n _append() {\n if (this._isAppended) {\n return;\n }\n const element = this._getElement();\n this._config.rootElement.append(element);\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n index_js.execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n _emulateAnimation(callback) {\n index_js.executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n }\n\n return Backdrop;\n\n}));\n//# sourceMappingURL=backdrop.js.map\n","/*!\n * Bootstrap component-functions.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('../dom/event-handler.js'), require('../dom/selector-engine.js'), require('./index.js')) :\n typeof define === 'function' && define.amd ? define(['exports', '../dom/event-handler', '../dom/selector-engine', './index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ComponentFunctions = {}, global.EventHandler, global.SelectorEngine, global.Index));\n})(this, (function (exports, EventHandler, SelectorEngine, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n const enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (index_js.isDisabled(this)) {\n return;\n }\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target);\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]();\n });\n };\n\n exports.enableDismissTrigger = enableDismissTrigger;\n\n Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\n}));\n//# sourceMappingURL=component-functions.js.map\n","/*!\n * Bootstrap config.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../dom/manipulator.js'), require('./index.js')) :\n typeof define === 'function' && define.amd ? define(['../dom/manipulator', './index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Config = factory(global.Manipulator, global.Index));\n})(this, (function (Manipulator, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Class definition\n */\n\n class Config {\n // Getters\n static get Default() {\n return {};\n }\n static get DefaultType() {\n return {};\n }\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n return config;\n }\n _mergeConfigObj(config, element) {\n const jsonConfig = index_js.isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(index_js.isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property];\n const valueType = index_js.isElement(value) ? 'element' : index_js.toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n }\n\n return Config;\n\n}));\n//# sourceMappingURL=config.js.map\n","/*!\n * Bootstrap focustrap.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../dom/event-handler.js'), require('../dom/selector-engine.js'), require('./config.js')) :\n typeof define === 'function' && define.amd ? define(['../dom/event-handler', '../dom/selector-engine', './config'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Focustrap = factory(global.EventHandler, global.SelectorEngine, global.Config));\n})(this, (function (EventHandler, SelectorEngine, Config) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const NAME = 'focustrap';\n const DATA_KEY = 'bs.focustrap';\n const EVENT_KEY = `.${DATA_KEY}`;\n const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\n const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`;\n const TAB_KEY = 'Tab';\n const TAB_NAV_FORWARD = 'forward';\n const TAB_NAV_BACKWARD = 'backward';\n const Default = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n };\n\n const DefaultType = {\n autofocus: 'boolean',\n trapElement: 'element'\n };\n\n /**\n * Class definition\n */\n\n class FocusTrap extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return;\n }\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n EventHandler.off(document, EVENT_KEY); // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n deactivate() {\n if (!this._isActive) {\n return;\n }\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY);\n }\n\n // Private\n _handleFocusin(event) {\n const {\n trapElement\n } = this._config;\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n const elements = SelectorEngine.focusableChildren(trapElement);\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n }\n\n return FocusTrap;\n\n}));\n//# sourceMappingURL=focustrap.js.map\n","/*!\n * Bootstrap index.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Index = {}));\n})(this, (function (exports) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n const MAX_UID = 1000000;\n const MILLISECONDS_MULTIPLIER = 1000;\n const TRANSITION_END = 'transitionend';\n\n /**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\n const parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`);\n }\n return selector;\n };\n\n // Shout-out Angus Croll (https://goo.gl/pxwQGp)\n const toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n };\n\n /**\n * Public Util API\n */\n\n const getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n return prefix;\n };\n const getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n };\n const triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n };\n const isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n return typeof object.nodeType !== 'undefined';\n };\n const getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object));\n }\n return null;\n };\n const isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])');\n if (!closedDetails) {\n return elementIsVisible;\n }\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n if (summary === null) {\n return false;\n }\n }\n return elementIsVisible;\n };\n const isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n if (element.classList.contains('disabled')) {\n return true;\n }\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n };\n const findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) {\n return element;\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null;\n }\n return findShadowRoot(element.parentNode);\n };\n const noop = () => {};\n\n /**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\n const reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n };\n\n const getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n return null;\n };\n const DOMContentLoadedCallbacks = [];\n const onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n };\n const isRTL = () => document.documentElement.dir === 'rtl';\n const defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n };\n const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;\n };\n const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n };\n\n /**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\n const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement);\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n index += shouldGetNext ? 1 : -1;\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n return list[Math.max(0, Math.min(index, listLength - 1))];\n };\n\n exports.defineJQueryPlugin = defineJQueryPlugin;\n exports.execute = execute;\n exports.executeAfterTransition = executeAfterTransition;\n exports.findShadowRoot = findShadowRoot;\n exports.getElement = getElement;\n exports.getNextActiveElement = getNextActiveElement;\n exports.getTransitionDurationFromElement = getTransitionDurationFromElement;\n exports.getUID = getUID;\n exports.getjQuery = getjQuery;\n exports.isDisabled = isDisabled;\n exports.isElement = isElement;\n exports.isRTL = isRTL;\n exports.isVisible = isVisible;\n exports.noop = noop;\n exports.onDOMContentLoaded = onDOMContentLoaded;\n exports.parseSelector = parseSelector;\n exports.reflow = reflow;\n exports.toType = toType;\n exports.triggerTransitionEnd = triggerTransitionEnd;\n\n Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\n}));\n//# sourceMappingURL=index.js.map\n","/*!\n * Bootstrap scrollbar.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../dom/manipulator.js'), require('../dom/selector-engine.js'), require('./index.js')) :\n typeof define === 'function' && define.amd ? define(['../dom/manipulator', '../dom/selector-engine', './index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Scrollbar = factory(global.Manipulator, global.SelectorEngine, global.Index));\n})(this, (function (Manipulator, SelectorEngine, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n const SELECTOR_STICKY_CONTENT = '.sticky-top';\n const PROPERTY_PADDING = 'padding-right';\n const PROPERTY_MARGIN = 'margin-right';\n\n /**\n * Class definition\n */\n\n class ScrollBarHelper {\n constructor() {\n this._element = document.body;\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n hide() {\n const width = this.getWidth();\n this._disableOverFlow();\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);\n }\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n isOverflowing() {\n return this.getWidth() > 0;\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n this._element.style.overflow = 'hidden';\n }\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n this._saveInitialAttribute(element, styleProperty);\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty);\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _applyManipulationCallback(selector, callBack) {\n if (index_js.isElement(selector)) {\n callBack(selector);\n return;\n }\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n }\n\n return ScrollBarHelper;\n\n}));\n//# sourceMappingURL=scrollbar.js.map\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var capitalize = require('./capitalize'),\n createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","/**\n * SSR Window 3.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target, src) {\n if (target === void 0) { target = {}; }\n if (src === void 0) { src = {}; }\n Object.keys(src).forEach(function (key) {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nvar ssrDocument = {\n body: {},\n addEventListener: function () { },\n removeEventListener: function () { },\n activeElement: {\n blur: function () { },\n nodeName: '',\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () { },\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () { },\n getElementsByTagName: function () {\n return [];\n },\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n var doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nvar ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState: function () { },\n pushState: function () { },\n go: function () { },\n back: function () { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () { },\n removeEventListener: function () { },\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n },\n };\n },\n Image: function () { },\n Date: function () { },\n screen: {},\n setTimeout: function () { },\n clearTimeout: function () { },\n matchMedia: function () {\n return {};\n },\n requestAnimationFrame: function (callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame: function (id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n var win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 3.0.0\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n var proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get: function get() {\n return proto;\n },\n set: function set(value) {\n proto.__proto__ = value;\n }\n });\n}\n\nvar Dom7 = /*#__PURE__*/function (_Array) {\n _inheritsLoose(Dom7, _Array);\n\n function Dom7(items) {\n var _this;\n\n _this = _Array.call.apply(_Array, [this].concat(items)) || this;\n makeReactive(_assertThisInitialized(_this));\n return _this;\n }\n\n return Dom7;\n}( /*#__PURE__*/_wrapNativeSuper(Array));\n\nfunction arrayFlat(arr) {\n if (arr === void 0) {\n arr = [];\n }\n\n var res = [];\n arr.forEach(function (el) {\n if (Array.isArray(el)) {\n res.push.apply(res, arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n var uniqueArray = [];\n\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, function (match, group) {\n return group.toUpperCase();\n });\n}\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n var a = [];\n var res = context.querySelectorAll(selector);\n\n for (var i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n var window = getWindow();\n var document = getDocument();\n var arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n var html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf('<li') === 0) toCreate = 'ul';\n if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n if (html.indexOf('<tbody') === 0) toCreate = 'table';\n if (html.indexOf('<option') === 0) toCreate = 'select';\n var tempParent = document.createElement(toCreate);\n tempParent.innerHTML = html;\n\n for (var i = 0; i < tempParent.childNodes.length; i += 1) {\n arr.push(tempParent.childNodes[i]);\n }\n } else {\n arr = qsa(selector.trim(), context || document);\n } // arr = qsa(selector, document);\n\n } else if (selector.nodeType || selector === window || selector === document) {\n arr.push(selector);\n } else if (Array.isArray(selector)) {\n if (selector instanceof Dom7) return selector;\n arr = selector;\n }\n\n return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\nfunction addClass() {\n for (var _len = arguments.length, classes = new Array(_len), _key = 0; _key < _len; _key++) {\n classes[_key] = arguments[_key];\n }\n\n var classNames = arrayFlat(classes.map(function (c) {\n return c.split(' ');\n }));\n this.forEach(function (el) {\n var _el$classList;\n\n (_el$classList = el.classList).add.apply(_el$classList, classNames);\n });\n return this;\n}\n\nfunction removeClass() {\n for (var _len2 = arguments.length, classes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n classes[_key2] = arguments[_key2];\n }\n\n var classNames = arrayFlat(classes.map(function (c) {\n return c.split(' ');\n }));\n this.forEach(function (el) {\n var _el$classList2;\n\n (_el$classList2 = el.classList).remove.apply(_el$classList2, classNames);\n });\n return this;\n}\n\nfunction toggleClass() {\n for (var _len3 = arguments.length, classes = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n classes[_key3] = arguments[_key3];\n }\n\n var classNames = arrayFlat(classes.map(function (c) {\n return c.split(' ');\n }));\n this.forEach(function (el) {\n classNames.forEach(function (className) {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass() {\n for (var _len4 = arguments.length, classes = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n classes[_key4] = arguments[_key4];\n }\n\n var classNames = arrayFlat(classes.map(function (c) {\n return c.split(' ');\n }));\n return arrayFilter(this, function (el) {\n return classNames.filter(function (className) {\n return el.classList.contains(className);\n }).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (var propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n var el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n var dataKey = el.getAttribute(\"data-\" + key);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (var i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n var el = this[0];\n if (!el) return undefined;\n var dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (var dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (var i = 0; i < el.attributes.length; i += 1) {\n var _attr = el.attributes[i];\n\n if (_attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(_attr.name.split('data-')[1])] = _attr.value;\n }\n }\n }\n\n for (var key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n var el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n var values = [];\n\n for (var i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (var _i = 0; _i < this.length; _i += 1) {\n var _el = this[_i];\n\n if (Array.isArray(value) && _el.multiple && _el.nodeName.toLowerCase() === 'select') {\n for (var j = 0; j < _el.options.length; j += 1) {\n _el.options[j].selected = value.indexOf(_el.options[j].value) >= 0;\n }\n } else {\n _el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? duration + \"ms\" : duration;\n }\n\n return this;\n}\n\nfunction on() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) return;\n var eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n var _parents = $(target).parents(); // eslint-disable-line\n\n\n for (var k = 0; k < _parents.length; k += 1) {\n if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n var events = eventType.split(' ');\n var j;\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener: listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n var _event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];\n\n el.dom7LiveListeners[_event].push({\n listener: listener,\n proxyListener: handleLiveEvent\n });\n\n el.addEventListener(_event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n var events = eventType.split(' ');\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = void 0;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (var k = handlers.length - 1; k >= 0; k -= 1) {\n var handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once() {\n var dom = this;\n\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n var eventName = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventName = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n function onceHandler() {\n for (var _len8 = arguments.length, eventArgs = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n eventArgs[_key8] = arguments[_key8];\n }\n\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger() {\n var window = getWindow();\n\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n\n var events = args[0].split(' ');\n var eventData = args[1];\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n\n if (window.CustomEvent) {\n var evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter(function (data, dataIndex) {\n return dataIndex > 0;\n });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n var dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n var dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n var window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles = this.styles();\n\n return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n var window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles2 = this.styles();\n\n return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = document.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === window ? window.scrollY : el.scrollTop;\n var scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n var window = getWindow();\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n var window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n var window = getWindow();\n var i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (var _prop in props) {\n this[i].style[_prop] = props[_prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach(function (el, index) {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n var result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var compareWith;\n var i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n var child = this[0];\n var i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n var length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n var returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append() {\n var newChild;\n var document = getDocument();\n\n for (var k = 0; k < arguments.length; k += 1) {\n newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];\n\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (var j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n var document = getDocument();\n var i;\n var j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n var before = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (var j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n var after = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (var j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n var _next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_next).is(selector)) nextEls.push(_next);\n } else nextEls.push(_next);\n\n el = _next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n var el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n var _prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_prev).is(selector)) prevEls.push(_prev);\n } else prevEls.push(_prev);\n\n el = _prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var _parent = this[i].parentNode; // eslint-disable-line\n\n while (_parent) {\n if (selector) {\n if ($(_parent).is(selector)) parents.push(_parent);\n } else {\n parents.push(_parent);\n }\n\n _parent = _parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n var closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n var foundElements = [];\n\n for (var i = 0; i < this.length; i += 1) {\n var found = this[i].querySelectorAll(selector);\n\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n var children = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this[i].children;\n\n for (var j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add() {\n var dom = this;\n var i;\n var j;\n\n for (var _len10 = arguments.length, els = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n els[_key10] = arguments[_key10];\n }\n\n for (i = 0; i < els.length; i += 1) {\n var toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.nodeType === 1) {\n for (var j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\nfunction scrollTo() {\n var window = getWindow();\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var left = args[0],\n top = args[1],\n duration = args[2],\n easing = args[3],\n callback = args[4];\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n left = args[0];\n top = args[1];\n duration = args[2];\n callback = args[3];\n easing = args[4];\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n var el = this;\n var currentTop;\n var currentLeft;\n var maxTop;\n var maxLeft;\n var newTop;\n var newLeft;\n var scrollTop; // eslint-disable-line\n\n var scrollLeft; // eslint-disable-line\n\n var animateTop = top > 0 || top === 0;\n var animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n var startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time) {\n if (time === void 0) {\n time = new Date().getTime();\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n var easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n var done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var top = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n top = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var left = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n left = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n var window = getWindow();\n var els = this;\n var a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n easingProgress: function easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n stop: function stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done: function done(complete) {\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n var que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate: function animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n var elements = []; // Define & Cache Initials & Units\n\n a.elements.each(function (el, index) {\n var initialFullValue;\n var initialValue;\n var unit;\n var finalValue;\n var finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(function (prop) {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue: initialFullValue,\n initialValue: initialValue,\n unit: unit,\n finalValue: finalValue,\n finalFullValue: finalFullValue,\n currentValue: initialValue\n };\n });\n });\n var startTime = null;\n var time;\n var elementsDone = 0;\n var propsDone = 0;\n var done;\n var began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n var progress;\n var easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(function (element) {\n var el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(function (prop) {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n var _el$prop = el[prop],\n initialValue = _el$prop.initialValue,\n finalValue = _el$prop.finalValue,\n unit = _el$prop.unit;\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n var currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n var animateInstance;\n\n for (var i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n var els = this;\n\n for (var i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nvar noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'undefined') {\n for (var i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on.apply(this, [name].concat(args));\n }\n\n return eventHandler;\n}\n\nvar click = shortcut('click');\nvar blur = shortcut('blur');\nvar focus = shortcut('focus');\nvar focusin = shortcut('focusin');\nvar focusout = shortcut('focusout');\nvar keyup = shortcut('keyup');\nvar keydown = shortcut('keydown');\nvar keypress = shortcut('keypress');\nvar submit = shortcut('submit');\nvar change = shortcut('change');\nvar mousedown = shortcut('mousedown');\nvar mousemove = shortcut('mousemove');\nvar mouseup = shortcut('mouseup');\nvar mouseenter = shortcut('mouseenter');\nvar mouseleave = shortcut('mouseleave');\nvar mouseout = shortcut('mouseout');\nvar mouseover = shortcut('mouseover');\nvar touchstart = shortcut('touchstart');\nvar touchend = shortcut('touchend');\nvar touchmove = shortcut('touchmove');\nvar resize = shortcut('resize');\nvar scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nvar Methods = {\n addClass: addClass,\n removeClass: removeClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n attr: attr,\n removeAttr: removeAttr,\n transform: transform,\n transition: transition,\n on: on,\n off: off,\n trigger: trigger,\n transitionEnd: transitionEnd,\n outerWidth: outerWidth,\n outerHeight: outerHeight,\n styles: styles,\n offset: offset,\n css: css,\n each: each,\n html: html,\n text: text,\n is: is,\n index: index,\n eq: eq,\n append: append,\n prepend: prepend,\n next: next,\n nextAll: nextAll,\n prev: prev,\n prevAll: prevAll,\n parent: parent,\n parents: parents,\n closest: closest,\n find: find,\n children: children,\n filter: filter,\n remove: remove\n};\nObject.keys(Methods).forEach(function (methodName) {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getDocument, getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n var object = obj;\n Object.keys(object).forEach(function (key) {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n var window = getWindow();\n var style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n\n var window = getWindow();\n var matrix;\n var curTransform;\n var transformMatrix;\n var curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function (a) {\n return a.replace(',', '.');\n }).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend() {\n var to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n var noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (var i = 1; i < arguments.length; i += 1) {\n var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n var keysArray = Object.keys(Object(nextSource)).filter(function (key) {\n return noExtend.indexOf(key) < 0;\n });\n\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction bindModuleMethods(instance, obj) {\n Object.keys(obj).forEach(function (key) {\n if (isObject(obj[key])) {\n Object.keys(obj[key]).forEach(function (subKey) {\n if (typeof obj[key][subKey] === 'function') {\n obj[key][subKey] = obj[key][subKey].bind(instance);\n }\n });\n }\n\n instance[key] = obj[key];\n });\n}\n\nfunction classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n\n return \".\" + classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.');\n}\n\nfunction createElementIfNotDefined($container, params, createElements, checkProps) {\n var document = getDocument();\n\n if (createElements) {\n Object.keys(checkProps).forEach(function (key) {\n if (!params[key] && params.auto === true) {\n var element = document.createElement('div');\n element.className = checkProps[key];\n $container.append(element);\n params[key] = element;\n }\n });\n }\n\n return params;\n}\n\nexport { deleteProps, nextTick, now, getTranslate, isObject, extend, bindModuleMethods, getComputedStyle, classesToSelector, createElementIfNotDefined };","import { getWindow, getDocument } from 'ssr-window';\nvar support;\n\nfunction calcSupport() {\n var window = getWindow();\n var document = getDocument();\n return {\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,\n observer: function checkObserver() {\n return 'MutationObserver' in window || 'WebkitMutationObserver' in window;\n }(),\n passiveListener: function checkPassiveListener() {\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support';\nvar device;\n\nfunction calcDevice(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n userAgent = _ref.userAgent;\n\n var support = getSupport();\n var window = getWindow();\n var platform = window.navigator.platform;\n var ua = userAgent || window.navigator.userAgent;\n var device = {\n ios: false,\n android: false\n };\n var screenWidth = window.screen.width;\n var screenHeight = window.screen.height;\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n var windows = platform === 'Win32';\n var macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + \"x\" + screenHeight) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n if (!device) {\n device = calcDevice(overrides);\n }\n\n return device;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nvar browser;\n\nfunction calcBrowser() {\n var window = getWindow();\n\n function isSafari() {\n var ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","import { getWindow } from 'ssr-window';\nimport { extend } from '../../utils/utils';\n\nvar supportsResizeObserver = function supportsResizeObserver() {\n var window = getWindow();\n return typeof window.ResizeObserver !== 'undefined';\n};\n\nexport default {\n name: 'resize',\n create: function create() {\n var swiper = this;\n extend(swiper, {\n resize: {\n observer: null,\n createObserver: function createObserver() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.resize.observer = new ResizeObserver(function (entries) {\n var width = swiper.width,\n height = swiper.height;\n var newWidth = width;\n var newHeight = height;\n entries.forEach(function (_ref) {\n var contentBoxSize = _ref.contentBoxSize,\n contentRect = _ref.contentRect,\n target = _ref.target;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n swiper.resize.resizeHandler();\n }\n });\n swiper.resize.observer.observe(swiper.el);\n },\n removeObserver: function removeObserver() {\n if (swiper.resize.observer && swiper.resize.observer.unobserve && swiper.el) {\n swiper.resize.observer.unobserve(swiper.el);\n swiper.resize.observer = null;\n }\n },\n resizeHandler: function resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler: function orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n }\n }\n });\n },\n on: {\n init: function init(swiper) {\n var window = getWindow();\n\n if (swiper.params.resizeObserver && supportsResizeObserver()) {\n swiper.resize.createObserver();\n return;\n } // Emit resize\n\n\n window.addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange\n\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy: function destroy(swiper) {\n var window = getWindow();\n swiper.resize.removeObserver();\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport { getWindow } from 'ssr-window';\nimport { bindModuleMethods } from '../../utils/utils';\nvar Observer = {\n attach: function attach(target, options) {\n if (options === void 0) {\n options = {};\n }\n\n var window = getWindow();\n var swiper = this;\n var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n var observer = new ObserverFunc(function (mutations) {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n\n var observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n swiper.observer.observers.push(observer);\n },\n init: function init() {\n var swiper = this;\n if (!swiper.support.observer || !swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n var containerParents = swiper.$el.parents();\n\n for (var i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n } // Observe container\n\n\n swiper.observer.attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n swiper.observer.attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.observers.forEach(function (observer) {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n }\n};\nexport default {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n observer: _extends({}, Observer, {\n observers: []\n })\n });\n },\n on: {\n init: function init(swiper) {\n swiper.observer.init();\n },\n destroy: function destroy(swiper) {\n swiper.observer.destroy();\n }\n }\n};","import { extend } from '../../utils/utils';\nexport default {\n useParams: function useParams(instanceParams) {\n var instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName]; // Extend params\n\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n },\n useModules: function useModules(modulesParams) {\n if (modulesParams === void 0) {\n modulesParams = {};\n }\n\n var instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n var moduleParams = modulesParams[moduleName] || {}; // Add event listeners\n\n if (module.on && instance.on) {\n Object.keys(module.on).forEach(function (moduleEventName) {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n } // Module create callback\n\n\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n};","/* eslint-disable no-underscore-dangle */\nexport default {\n on: function on(events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n var method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(function (event) {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once: function once(events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n\n function onceHandler() {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny: function onAny(handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n var method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n offAny: function offAny(handler) {\n var self = this;\n if (!self.eventsAnyListeners) return self;\n var index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n off: function off(events, handler) {\n var self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(function (event) {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(function (eventHandler, index) {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit: function emit() {\n var self = this;\n if (!self.eventsListeners) return self;\n var events;\n var data;\n var context;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n var eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(function (event) {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(function (eventHandler) {\n eventHandler.apply(context, [event].concat(data));\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(function (eventHandler) {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};","import { extend } from '../../../utils/utils';\nexport default function updateSize() {\n var swiper = this;\n var width;\n var height;\n var $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n extend(swiper, {\n width: width,\n height: height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { extend } from '../../../utils/utils';\nexport default function updateSlides() {\n var swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl,\n swiperSize = swiper.size,\n rtl = swiper.rtlTranslate,\n wrongRTL = swiper.wrongRTL;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n var slides = $wrapperEl.children(\".\" + swiper.params.slideClass);\n var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n var snapGrid = [];\n var slidesGrid = [];\n var slidesSizesGrid = [];\n var offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n var offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n var previousSnapGridLength = swiper.snapGrid.length;\n var previousSlidesGridLength = swiper.slidesGrid.length;\n var spaceBetween = params.spaceBetween;\n var slidePosition = -offsetBefore;\n var prevSlideSize = 0;\n var index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n });\n var slidesNumberEvenToRows;\n\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n } // Calc slides\n\n\n var slideSize;\n var slidesPerColumn = params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n\n for (var i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n var slide = slides.eq(i);\n\n if (params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex = void 0;\n var column = void 0;\n var row = void 0;\n\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;\n slide.css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n\n if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {\n row += 1;\n\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n\n slide.css(getDirectionLabel('margin-top'), row !== 0 ? params.spaceBetween && params.spaceBetween + \"px\" : '');\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n var slideStyles = getComputedStyle(slide[0]);\n var currentTransform = slide[0].style.transform;\n var currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n var width = getDirectionPropertyValue(slideStyles, 'width');\n var paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n var paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n var marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n var marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n var boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n var _slide$ = slide[0],\n clientWidth = _slide$.clientWidth,\n offsetWidth = _slide$.offsetWidth;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = slideSize + \"px\";\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n var newSlidesGrid;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: swiper.virtualSize + params.spaceBetween + \"px\"\n });\n }\n\n if (params.setWrapperSize) {\n var _$wrapperEl$css;\n\n $wrapperEl.css((_$wrapperEl$css = {}, _$wrapperEl$css[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + \"px\", _$wrapperEl$css));\n }\n\n if (params.slidesPerColumn > 1) {\n var _$wrapperEl$css2;\n\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n $wrapperEl.css((_$wrapperEl$css2 = {}, _$wrapperEl$css2[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + \"px\", _$wrapperEl$css2));\n\n if (params.centeredSlides) {\n newSlidesGrid = [];\n\n for (var _i = 0; _i < snapGrid.length; _i += 1) {\n var slidesGridItem = snapGrid[_i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n\n snapGrid = newSlidesGrid;\n }\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n\n for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) {\n var _slidesGridItem = snapGrid[_i2];\n if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem);\n\n if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(_slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n var _slides$filter$css;\n\n var key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter(function (_, slideIndex) {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css((_slides$filter$css = {}, _slides$filter$css[key] = spaceBetween + \"px\", _slides$filter$css));\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n var allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n var maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(function (snap) {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n var _allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n _allSlidesSize -= params.spaceBetween;\n\n if (_allSlidesSize < swiperSize) {\n var allSlidesOffset = (swiperSize - _allSlidesSize) / 2;\n snapGrid.forEach(function (snap, snapIndex) {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach(function (snap, snapIndex) {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n extend(swiper, {\n slides: slides,\n snapGrid: snapGrid,\n slidesGrid: slidesGrid,\n slidesSizesGrid: slidesSizesGrid\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}","export default function updateAutoHeight(speed) {\n var swiper = this;\n var activeSlides = [];\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var newHeight = 0;\n var i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n var getSlideByIndex = function getSlideByIndex(index) {\n if (isVirtual) {\n return swiper.slides.filter(function (el) {\n return parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index;\n })[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each(function (slide) {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n var index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n var height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight) swiper.$wrapperEl.css('height', newHeight + \"px\");\n}","export default function updateSlidesOffset() {\n var swiper = this;\n var slides = swiper.slides;\n\n for (var i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../../utils/dom';\nexport default function updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n\n var swiper = this;\n var params = swiper.params;\n var slides = swiper.slides,\n rtl = swiper.rtlTranslate;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n var offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (var i = 0; i < slides.length; i += 1) {\n var slide = slides[i];\n var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n\n if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","import { extend } from '../../../utils/utils';\nexport default function updateProgress(translate) {\n var swiper = this;\n\n if (typeof translate === 'undefined') {\n var multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n var params = swiper.params;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n var progress = swiper.progress,\n isBeginning = swiper.isBeginning,\n isEnd = swiper.isEnd;\n var wasBeginning = isBeginning;\n var wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n extend(swiper, {\n progress: progress,\n isBeginning: isBeginning,\n isEnd: isEnd\n });\n if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n var swiper = this;\n var slides = swiper.slides,\n params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex,\n realIndex = swiper.realIndex;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(params.slideActiveClass + \" \" + params.slideNextClass + \" \" + params.slidePrevClass + \" \" + params.slideDuplicateActiveClass + \" \" + params.slideDuplicateNextClass + \" \" + params.slideDuplicatePrevClass);\n var activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + activeIndex + \"\\\"]\");\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\").addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\").addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n var nextSlide = activeSlide.nextAll(\".\" + params.slideClass).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n var prevSlide = activeSlide.prevAll(\".\" + params.slideClass).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","import { extend } from '../../../utils/utils';\nexport default function updateActiveIndex(newActiveIndex) {\n var swiper = this;\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n var slidesGrid = swiper.slidesGrid,\n snapGrid = swiper.snapGrid,\n params = swiper.params,\n previousIndex = swiper.activeIndex,\n previousRealIndex = swiper.realIndex,\n previousSnapIndex = swiper.snapIndex;\n var activeIndex = newActiveIndex;\n var snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n var skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n extend(swiper, {\n snapIndex: snapIndex,\n realIndex: realIndex,\n previousIndex: previousIndex,\n activeIndex: activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../../utils/dom';\nexport default function updateClickedSlide(e) {\n var swiper = this;\n var params = swiper.params;\n var slide = $(e.target).closest(\".\" + params.slideClass)[0];\n var slideFound = false;\n var slideIndex;\n\n if (slide) {\n for (var i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\nexport default {\n updateSize: updateSize,\n updateSlides: updateSlides,\n updateAutoHeight: updateAutoHeight,\n updateSlidesOffset: updateSlidesOffset,\n updateSlidesProgress: updateSlidesProgress,\n updateProgress: updateProgress,\n updateSlidesClasses: updateSlidesClasses,\n updateActiveIndex: updateActiveIndex,\n updateClickedSlide: updateClickedSlide\n};","import { getTranslate } from '../../../utils/utils';\nexport default function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n\n var swiper = this;\n var params = swiper.params,\n rtl = swiper.rtlTranslate,\n translate = swiper.translate,\n $wrapperEl = swiper.$wrapperEl;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n var currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n var swiper = this;\n var rtl = swiper.rtlTranslate,\n params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n wrapperEl = swiper.wrapperEl,\n progress = swiper.progress;\n var x = 0;\n var y = 0;\n var z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(\"translate3d(\" + x + \"px, \" + y + \"px, \" + z + \"px)\");\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","export default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n wrapperEl = swiper.wrapperEl;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n var minTranslate = swiper.minTranslate();\n var maxTranslate = swiper.maxTranslate();\n var newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n var isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n var _wrapperEl$scrollTo;\n\n wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = -newTranslate, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\nexport default {\n getTranslate: getTranslate,\n setTranslate: setTranslate,\n minTranslate: minTranslate,\n maxTranslate: maxTranslate,\n translateTo: translateTo\n};","export default function setTransition(duration, byController) {\n var swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","export default function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n params = swiper.params,\n previousIndex = swiper.previousIndex;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n var dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n\n swiper.emit('slideChangeTransitionStart');\n\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}","export default function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n previousIndex = swiper.previousIndex,\n params = swiper.params;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n var dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n\n swiper.emit('slideChangeTransitionEnd');\n\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\nexport default {\n setTransition: setTransition,\n transitionStart: transitionStart,\n transitionEnd: transitionEnd\n};","export default function slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\"The 'index' argument cannot have type other than 'number' or 'string'. [\" + typeof index + \"] given.\");\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n var indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n var isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\"The passed-in 'index' (string) couldn't be converted to 'number'. [\" + index + \"] given.\");\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n var swiper = this;\n var slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n var params = swiper.params,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n previousIndex = swiper.previousIndex,\n activeIndex = swiper.activeIndex,\n rtl = swiper.rtlTranslate,\n wrapperEl = swiper.wrapperEl,\n enabled = swiper.enabled;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n var translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n var normalizedTranslate = -Math.floor(translate * 100);\n var normalizedGird = Math.floor(slidesGrid[i] * 100);\n var normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGird) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGird) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n var direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n var isH = swiper.isHorizontal();\n var t = -translate;\n\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n var _wrapperEl$scrollTo;\n\n wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = t, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","export default function slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n animating = swiper.animating,\n enabled = swiper.enabled;\n if (!enabled) return swiper;\n var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n animating = swiper.animating,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n rtlTranslate = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n var translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n var normalizedTranslate = normalize(translate);\n var normalizedSnapGrid = snapGrid.map(function (val) {\n return normalize(val);\n });\n var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach(function (snap) {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n\n var prevIndex;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (threshold === void 0) {\n threshold = 0.5;\n }\n\n var swiper = this;\n var index = swiper.activeIndex;\n var skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n var currentSnap = swiper.snapGrid[snapIndex];\n var nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n var prevSnap = swiper.snapGrid[snapIndex - 1];\n var _currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (_currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../../utils/dom';\nimport { nextTick } from '../../../utils/utils';\nexport default function slideToClickedSlide() {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl;\n var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n var slideToIndex = swiper.clickedIndex;\n var realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\").eq(0).index();\n nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\").eq(0).index();\n nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\nexport default {\n slideTo: slideTo,\n slideToLoop: slideToLoop,\n slideNext: slideNext,\n slidePrev: slidePrev,\n slideReset: slideReset,\n slideToClosest: slideToClosest,\n slideToClickedSlide: slideToClickedSlide\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nexport default function loopCreate() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides\n\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass).remove();\n var slides = $wrapperEl.children(\".\" + params.slideClass);\n\n if (params.loopFillGroupWithBlank) {\n var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (var i = 0; i < blankSlidesNum; i += 1) {\n var blankNode = $(document.createElement('div')).addClass(params.slideClass + \" \" + params.slideBlankClass);\n $wrapperEl.append(blankNode);\n }\n\n slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n var prependSlides = [];\n var appendSlides = [];\n slides.each(function (el, index) {\n var slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (var _i = 0; _i < appendSlides.length; _i += 1) {\n $wrapperEl.append($(appendSlides[_i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1) {\n $wrapperEl.prepend($(prependSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n var swiper = this;\n swiper.emit('beforeLoopFix');\n var activeIndex = swiper.activeIndex,\n slides = swiper.slides,\n loopedSlides = swiper.loopedSlides,\n allowSlidePrev = swiper.allowSlidePrev,\n allowSlideNext = swiper.allowSlideNext,\n snapGrid = swiper.snapGrid,\n rtl = swiper.rtlTranslate;\n var newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n var snapTranslate = -snapGrid[activeIndex];\n var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n var slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n\n var _slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (_slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params,\n slides = swiper.slides;\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \",.\" + params.slideClass + \".\" + params.slideBlankClass).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\nexport default {\n loopCreate: loopCreate,\n loopFix: loopFix,\n loopDestroy: loopDestroy\n};","export default function setGrabCursor(moving) {\n var swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n var el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n var swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper.el.style.cursor = '';\n}","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\nexport default {\n setGrabCursor: setGrabCursor,\n unsetGrabCursor: unsetGrabCursor\n};","export default function appendSlide(slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n}","export default function prependSlide(slides) {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n var newActiveIndex = activeIndex + 1;\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n swiper.slideTo(newActiveIndex, 0, false);\n}","export default function addSlide(index, slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params,\n activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n\n var baseLength = swiper.slides.length;\n\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n\n var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n var slidesBuffer = [];\n\n for (var i = baseLength - 1; i >= index; i -= 1) {\n var currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var _i = 0; _i < slides.length; _i += 1) {\n if (slides[_i]) $wrapperEl.append(slides[_i]);\n }\n\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) {\n $wrapperEl.append(slidesBuffer[_i2]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeSlide(slidesIndexes) {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n\n var newActiveIndex = activeIndexBuffer;\n var indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (var i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeAllSlides() {\n var swiper = this;\n var slidesIndexes = [];\n\n for (var i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n\n swiper.removeSlide(slidesIndexes);\n}","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\nexport default {\n appendSlide: appendSlide,\n prependSlide: prependSlide,\n addSlide: addSlide,\n removeSlide: removeSlide,\n removeAllSlides: removeAllSlides\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n var found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n var swiper = this;\n var document = getDocument();\n var window = getWindow();\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n enabled = swiper.enabled;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n var $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n var swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n var noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : \".\" + params.noSwipingClass;\n var isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n var startX = touches.currentX;\n var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils';\nexport default function onTouchMove(event) {\n var document = getDocument();\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return;\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n\n if (data.isTouched) {\n extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n var diffX = touches.currentX - touches.startX;\n var diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n var touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n var diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n var disableParentSwiper = true;\n var resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../../utils/utils';\nexport default function onTouchEnd(event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate,\n $wrapperEl = swiper.$wrapperEl,\n slidesGrid = swiper.slidesGrid,\n snapGrid = swiper.snapGrid,\n enabled = swiper.enabled;\n if (!enabled) return;\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n var touchEndTime = now();\n var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(function () {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n var currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n var lastMoveEvent = data.velocities.pop();\n var velocityEvent = data.velocities.pop();\n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n } // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n\n\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n data.velocities.length = 0;\n var momentumDuration = 1000 * params.freeModeMomentumRatio;\n var momentumDistance = swiper.velocity * momentumDuration;\n var newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n var needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n var nextSlide;\n\n for (var j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n swiper.once('transitionEnd', function () {\n swiper.loopFix();\n });\n } // Fix duration\n\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(function () {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n swiper.emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n return;\n } // Find current slide\n\n\n var stopIndex = 0;\n var groupSize = swiper.slidesSizesGrid[0];\n\n for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + _increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + _increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + _increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n } // Find current slide size\n\n\n var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n var swiper = this;\n var params = swiper.params,\n el = swiper.el;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n var allowSlideNext = swiper.allowSlideNext,\n allowSlidePrev = swiper.allowSlidePrev,\n snapGrid = swiper.snapGrid; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n var swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n var swiper = this;\n var wrapperEl = swiper.wrapperEl,\n rtlTranslate = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === -0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\nvar dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n touchEvents = swiper.touchEvents,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n device = swiper.device,\n support = swiper.support;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n var capture = !!params.nested; // Touch Events\n\n if (!support.touch && support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n var passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture: capture\n } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n\n if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper.on(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n touchEvents = swiper.touchEvents,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n device = swiper.device,\n support = swiper.support;\n var capture = !!params.nested; // Touch Events\n\n if (!support.touch && support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n var passiveListener = touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n\n if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n } // Resize handler\n\n\n swiper.off(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize);\n}\n\nexport default {\n attachEvents: attachEvents,\n detachEvents: detachEvents\n};","import { extend } from '../../../utils/utils';\nexport default function setBreakpoint() {\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n initialized = swiper.initialized,\n _swiper$loopedSlides = swiper.loopedSlides,\n loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,\n params = swiper.params,\n $el = swiper.$el;\n var breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n var breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {\n var paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n var breakpointParams = breakpointOnlyParams || swiper.originalParams;\n var wasMultiRow = params.slidesPerColumn > 1;\n var isMultiRow = breakpointParams.slidesPerColumn > 1;\n var wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(params.containerModifierClass + \"multirow \" + params.containerModifierClass + \"multirow-column\");\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(params.containerModifierClass + \"multirow\");\n\n if (breakpointParams.slidesPerColumnFill && breakpointParams.slidesPerColumnFill === 'column' || !breakpointParams.slidesPerColumnFill && params.slidesPerColumnFill === 'column') {\n $el.addClass(params.containerModifierClass + \"multirow-column\");\n }\n\n swiper.emitContainerClasses();\n }\n\n var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n var isEnabled = swiper.params.enabled;\n extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n var breakpoint = false;\n var window = getWindow();\n var currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n var points = Object.keys(breakpoints).map(function (point) {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n var minRatio = parseFloat(point.substr(1));\n var value = currentHeight * minRatio;\n return {\n value: value,\n point: point\n };\n }\n\n return {\n value: point,\n point: point\n };\n });\n points.sort(function (a, b) {\n return parseInt(a.value, 10) - parseInt(b.value, 10);\n });\n\n for (var i = 0; i < points.length; i += 1) {\n var _points$i = points[i],\n point = _points$i.point,\n value = _points$i.value;\n\n if (base === 'window') {\n if (window.matchMedia(\"(min-width: \" + value + \"px)\").matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\nexport default {\n setBreakpoint: setBreakpoint,\n getBreakpoint: getBreakpoint\n};","function prepareClasses(entries, prefix) {\n var resultClasses = [];\n entries.forEach(function (item) {\n if (typeof item === 'object') {\n Object.keys(item).forEach(function (classNames) {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n var swiper = this;\n var classNames = swiper.classNames,\n params = swiper.params,\n rtl = swiper.rtl,\n $el = swiper.$el,\n device = swiper.device,\n support = swiper.support; // prettier-ignore\n\n var suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': support.pointerEvents && !support.touch\n }, {\n 'free-mode': params.freeMode\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'multirow': params.slidesPerColumn > 1\n }, {\n 'multirow-column': params.slidesPerColumn > 1 && params.slidesPerColumnFill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }], params.containerModifierClass);\n classNames.push.apply(classNames, suffixes);\n $el.addClass([].concat(classNames).join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n var swiper = this;\n var $el = swiper.$el,\n classNames = swiper.classNames;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\nexport default {\n addClasses: addClasses,\n removeClasses: removeClasses\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../../utils/dom';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n var window = getWindow();\n var image;\n\n function onReady() {\n if (callback) callback();\n }\n\n var isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n var swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\n var imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\nexport default {\n loadImage: loadImage,\n preloadImages: preloadImages\n};","function checkOverflow() {\n var swiper = this;\n var params = swiper.params;\n var wasLocked = swiper.isLocked;\n var lastSlidePosition = swiper.slides.length > 0 && params.slidesOffsetBefore + params.spaceBetween * (swiper.slides.length - 1) + swiper.slides[0].offsetWidth * swiper.slides.length;\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked; // events\n\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n if (swiper.navigation) swiper.navigation.update();\n }\n}\n\nexport default {\n checkOverflow: checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: false,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n // NS\n containerModifierClass: 'swiper-container-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { extend, now, deleteProps } from '../../utils/utils';\nimport { getSupport } from '../../utils/get-support';\nimport { getDevice } from '../../utils/get-device';\nimport { getBrowser } from '../../utils/get-browser';\nimport Resize from '../../modules/resize/resize';\nimport Observer from '../../modules/observer/observer';\nimport modular from './modular';\nimport eventsEmitter from './events-emitter';\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\nimport defaults from './defaults';\nvar prototypes = {\n modular: modular,\n eventsEmitter: eventsEmitter,\n update: update,\n translate: translate,\n transition: transition,\n slide: slide,\n loop: loop,\n grabCursor: grabCursor,\n manipulation: manipulation,\n events: events,\n breakpoints: breakpoints,\n checkOverflow: checkOverflow,\n classes: classes,\n images: images\n};\nvar extendedDefaults = {};\n\nvar Swiper = /*#__PURE__*/function () {\n function Swiper() {\n var el;\n var params;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n el = args[0];\n params = args[1];\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n var swipers = [];\n $(params.el).each(function (containerEl) {\n var newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n var swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n\n Object.keys(swiper.modules).forEach(function (moduleName) {\n var module = swiper.modules[moduleName];\n\n if (module.params) {\n var moduleParamName = Object.keys(module.params)[0];\n var moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n }\n }); // Extend defaults with modules params\n\n var swiperParams = extend({}, defaults);\n swiper.useParams(swiperParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(function (eventName) {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n extend(swiper, {\n enabled: swiper.params.enabled,\n el: el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal: function isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical: function isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n var desktop = ['mousedown', 'mousemove', 'mouseup'];\n\n if (swiper.support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n }); // Install Modules\n\n swiper.useModules();\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n var _proto = Swiper.prototype;\n\n _proto.enable = function enable() {\n var swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n };\n\n _proto.disable = function disable() {\n var swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n };\n\n _proto.setProgress = function setProgress(progress, speed) {\n var swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n var min = swiper.minTranslate();\n var max = swiper.maxTranslate();\n var current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n };\n\n _proto.emitContainerClasses = function emitContainerClasses() {\n var swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n var classes = swiper.el.className.split(' ').filter(function (className) {\n return className.indexOf('swiper-container') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', classes.join(' '));\n };\n\n _proto.getSlideClasses = function getSlideClasses(slideEl) {\n var swiper = this;\n return slideEl.className.split(' ').filter(function (className) {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n };\n\n _proto.emitSlidesClasses = function emitSlidesClasses() {\n var swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n var updates = [];\n swiper.slides.each(function (slideEl) {\n var classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl: slideEl,\n classNames: classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n };\n\n _proto.slidesPerViewDynamic = function slidesPerViewDynamic() {\n var swiper = this;\n var params = swiper.params,\n slides = swiper.slides,\n slidesGrid = swiper.slidesGrid,\n swiperSize = swiper.size,\n activeIndex = swiper.activeIndex;\n var spv = 1;\n\n if (params.centeredSlides) {\n var slideSize = slides[activeIndex].swiperSlideSize;\n var breakLoop;\n\n for (var i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (var _i = activeIndex - 1; _i >= 0; _i -= 1) {\n if (slides[_i] && !breakLoop) {\n slideSize += slides[_i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) {\n if (slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n\n return spv;\n };\n\n _proto.update = function update() {\n var swiper = this;\n if (!swiper || swiper.destroyed) return;\n var snapGrid = swiper.snapGrid,\n params = swiper.params; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n var translated;\n\n if (swiper.params.freeMode) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n };\n\n _proto.changeDirection = function changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n\n var swiper = this;\n var currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(\"\" + swiper.params.containerModifierClass + currentDirection).addClass(\"\" + swiper.params.containerModifierClass + newDirection);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(function (slideEl) {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n };\n\n _proto.mount = function mount(el) {\n var swiper = this;\n if (swiper.mounted) return true; // Find el\n\n var $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n var getWrapperSelector = function getWrapperSelector() {\n return \".\" + (swiper.params.wrapperClass || '').trim().split(' ').join('.');\n };\n\n var getWrapper = function getWrapper() {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n var res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = function (options) {\n return $el.children(options);\n };\n\n return res;\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n var $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n var document = getDocument();\n var wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(\".\" + swiper.params.slideClass).each(function (slideEl) {\n $wrapperEl.append(slideEl);\n });\n }\n\n extend(swiper, {\n $el: $el,\n el: el,\n $wrapperEl: $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n };\n\n _proto.init = function init(el) {\n var swiper = this;\n if (swiper.initialized) return swiper;\n var mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n };\n\n _proto.destroy = function destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n $el = swiper.$el,\n $wrapperEl = swiper.$wrapperEl,\n slides = swiper.slides;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(function (eventName) {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n };\n\n Swiper.extendDefaults = function extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n };\n\n Swiper.installModule = function installModule(module) {\n if (!Swiper.prototype.modules) Swiper.prototype.modules = {};\n var name = module.name || Object.keys(Swiper.prototype.modules).length + \"_\" + now();\n Swiper.prototype.modules[name] = module;\n };\n\n Swiper.use = function use(module) {\n if (Array.isArray(module)) {\n module.forEach(function (m) {\n return Swiper.installModule(m);\n });\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n };\n\n _createClass(Swiper, null, [{\n key: \"extendedDefaults\",\n get: function get() {\n return extendedDefaults;\n }\n }, {\n key: \"defaults\",\n get: function get() {\n return defaults;\n }\n }]);\n\n return Swiper;\n}();\n\nObject.keys(prototypes).forEach(function (prototypeGroup) {\n Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\nvar Virtual = {\n update: function update(force) {\n var swiper = this;\n var _swiper$params = swiper.params,\n slidesPerView = _swiper$params.slidesPerView,\n slidesPerGroup = _swiper$params.slidesPerGroup,\n centeredSlides = _swiper$params.centeredSlides;\n var _swiper$params$virtua = swiper.params.virtual,\n addSlidesBefore = _swiper$params$virtua.addSlidesBefore,\n addSlidesAfter = _swiper$params$virtua.addSlidesAfter;\n var _swiper$virtual = swiper.virtual,\n previousFrom = _swiper$virtual.from,\n previousTo = _swiper$virtual.to,\n slides = _swiper$virtual.slides,\n previousSlidesGrid = _swiper$virtual.slidesGrid,\n renderSlide = _swiper$virtual.renderSlide,\n previousOffset = _swiper$virtual.offset;\n swiper.updateActiveIndex();\n var activeIndex = swiper.activeIndex || 0;\n var offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n var slidesAfter;\n var slidesBefore;\n\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n\n var from = Math.max((activeIndex || 0) - slidesBefore, 0);\n var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n extend(swiper.virtual, {\n from: from,\n to: to,\n offset: offset,\n slidesGrid: swiper.slidesGrid\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, offset + \"px\");\n }\n\n swiper.updateProgress();\n return;\n }\n\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset: offset,\n from: from,\n to: to,\n slides: function getSlides() {\n var slidesToRender = [];\n\n for (var i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n\n return slidesToRender;\n }()\n });\n\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n }\n\n return;\n }\n\n var prependIndexes = [];\n var appendIndexes = [];\n\n if (force) {\n swiper.$wrapperEl.find(\".\" + swiper.params.slideClass).remove();\n } else {\n for (var i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(\".\" + swiper.params.slideClass + \"[data-swiper-slide-index=\\\"\" + i + \"\\\"]\").remove();\n }\n }\n }\n\n for (var _i = 0; _i < slides.length; _i += 1) {\n if (_i >= from && _i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(_i);\n } else {\n if (_i > previousTo) appendIndexes.push(_i);\n if (_i < previousFrom) prependIndexes.push(_i);\n }\n }\n }\n\n appendIndexes.forEach(function (index) {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort(function (a, b) {\n return b - a;\n }).forEach(function (index) {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, offset + \"px\");\n onRendered();\n },\n renderSlide: function renderSlide(slide, index) {\n var swiper = this;\n var params = swiper.params.virtual;\n\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n\n var $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(\"<div class=\\\"\" + swiper.params.slideClass + \"\\\" data-swiper-slide-index=\\\"\" + index + \"\\\">\" + slide + \"</div>\");\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n },\n appendSlide: function appendSlide(slides) {\n var swiper = this;\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n\n swiper.virtual.update(true);\n },\n prependSlide: function prependSlide(slides) {\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var newActiveIndex = activeIndex + 1;\n var numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n\n if (swiper.params.virtual.cache) {\n var cache = swiper.virtual.cache;\n var newCache = {};\n Object.keys(cache).forEach(function (cachedIndex) {\n var $cachedEl = cache[cachedIndex];\n var cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide: function removeSlide(slidesIndexes) {\n var swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n var activeIndex = swiper.activeIndex;\n\n if (Array.isArray(slidesIndexes)) {\n for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides: function removeAllSlides() {\n var swiper = this;\n swiper.virtual.slides = [];\n\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n }\n};\nexport default {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n virtual: _extends({}, Virtual, {\n slides: swiper.params.virtual.slides,\n cache: {}\n })\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"virtual\");\n var overwriteParams = {\n watchSlidesProgress: true\n };\n extend(swiper.params, overwriteParams);\n extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate: function setTranslate(swiper) {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\n/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\nvar Keyboard = {\n handle: function handle(event) {\n var swiper = this;\n if (!swiper.enabled) return;\n var window = getWindow();\n var document = getDocument();\n var rtl = swiper.rtlTranslate;\n var e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n var kc = e.keyCode || e.charCode;\n var pageUpDown = swiper.params.keyboard.pageUpDown;\n var isPageUp = pageUpDown && kc === 33;\n var isPageDown = pageUpDown && kc === 34;\n var isArrowLeft = kc === 37;\n var isArrowRight = kc === 39;\n var isArrowUp = kc === 38;\n var isArrowDown = kc === 40; // Directions locks\n\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n var inView = false; // Check that swiper should be inside of visible area of window\n\n if (swiper.$el.parents(\".\" + swiper.params.slideClass).length > 0 && swiper.$el.parents(\".\" + swiper.params.slideActiveClass).length === 0) {\n return undefined;\n }\n\n var $el = swiper.$el;\n var swiperWidth = $el[0].clientWidth;\n var swiperHeight = $el[0].clientHeight;\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n var swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n\n for (var i = 0; i < swiperCoord.length; i += 1) {\n var point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n if (!inView) return undefined;\n }\n\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable: function enable() {\n var swiper = this;\n var document = getDocument();\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable: function disable() {\n var swiper = this;\n var document = getDocument();\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n }\n};\nexport default {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n keyboard: _extends({\n enabled: false\n }, Keyboard)\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy: function destroy(swiper) {\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n }\n }\n};","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { now, nextTick, bindModuleMethods } from '../../utils/utils';\n\nfunction isEventSupported() {\n var document = getDocument();\n var eventName = 'onwheel';\n var isSupported = (eventName in document);\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && document.implementation && document.implementation.hasFeature && // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nvar Mousewheel = {\n lastScrollTime: now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event: function event() {\n var window = getWindow();\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize: function normalize(e) {\n // Reasonable defaults\n var PIXEL_STEP = 10;\n var LINE_HEIGHT = 40;\n var PAGE_HEIGHT = 800;\n var sX = 0;\n var sY = 0; // spinX, spinY\n\n var pX = 0;\n var pY = 0; // pixelX, pixelY\n // Legacy\n\n if ('detail' in e) {\n sY = e.detail;\n }\n\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n } // side scrolling on FF with DOMMouseScroll\n\n\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n } // Fall-back if spin cannot be determined\n\n\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n },\n handleMouseEnter: function handleMouseEnter() {\n var swiper = this;\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n },\n handleMouseLeave: function handleMouseLeave() {\n var swiper = this;\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n },\n handle: function handle(event) {\n var e = event;\n var disableParentSwiper = true;\n var swiper = this;\n if (!swiper.enabled) return;\n var params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n var target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n var delta = 0;\n var rtlFactor = swiper.rtlTranslate ? -1 : 1;\n var data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n if (params.invert) delta = -delta; // Get the scroll positions\n\n var positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n var newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n }; // Keep the most recent events\n\n var recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n } // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n\n\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n var _newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n var lastEventBeforeSnap = swiper.mousewheel.lastEventBeforeSnap;\n var ignoreWheelEvents = lastEventBeforeSnap && _newEvent.time < lastEventBeforeSnap.time + 500 && _newEvent.delta <= lastEventBeforeSnap.delta && _newEvent.direction === lastEventBeforeSnap.direction;\n\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n\n var position = swiper.getTranslate() + delta * params.sensitivity;\n var wasBeginning = swiper.isBeginning;\n var wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n var _recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n\n if (_recentWheelEvents.length >= 15) {\n _recentWheelEvents.shift(); // only store the last N events\n\n }\n\n var _prevEvent = _recentWheelEvents.length ? _recentWheelEvents[_recentWheelEvents.length - 1] : undefined;\n\n var firstEvent = _recentWheelEvents[0];\n\n _recentWheelEvents.push(_newEvent);\n\n if (_prevEvent && (_newEvent.delta > _prevEvent.delta || _newEvent.direction !== _prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n _recentWheelEvents.splice(0);\n } else if (_recentWheelEvents.length >= 15 && _newEvent.time - firstEvent.time < 500 && firstEvent.delta - _newEvent.delta >= 1 && _newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n var snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = _newEvent;\n\n _recentWheelEvents.splice(0);\n\n swiper.mousewheel.timeout = nextTick(function () {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!swiper.mousewheel.timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n swiper.mousewheel.timeout = nextTick(function () {\n var snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = _newEvent;\n\n _recentWheelEvents.splice(0);\n\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n } // Emit event\n\n\n if (!ignoreWheelEvents) swiper.emit('scroll', e); // Stop autoplay\n\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n },\n animateSlider: function animateSlider(newEvent) {\n var swiper = this;\n var window = getWindow();\n\n if (this.params.mousewheel.thresholdDelta && newEvent.delta < this.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (this.params.mousewheel.thresholdTime && now() - swiper.mousewheel.lastScrollTime < this.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n } // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n\n\n if (newEvent.delta >= 6 && now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n } // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n\n\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n } // If you got here is because an animation has been triggered so store the current time\n\n\n swiper.mousewheel.lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n return false;\n },\n releaseScroll: function releaseScroll(newEvent) {\n var swiper = this;\n var params = swiper.params.mousewheel;\n\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n\n return false;\n },\n enable: function enable() {\n var swiper = this;\n var event = Mousewheel.event();\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n\n if (!event) return false;\n if (swiper.mousewheel.enabled) return false;\n var target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable: function disable() {\n var swiper = this;\n var event = Mousewheel.event();\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n\n if (!event) return false;\n if (!swiper.mousewheel.enabled) return false;\n var target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n }\n};\nexport default {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n mousewheel: {\n enabled: false,\n lastScrollTime: now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n enable: Mousewheel.enable,\n disable: Mousewheel.disable,\n handle: Mousewheel.handle,\n handleMouseEnter: Mousewheel.handleMouseEnter,\n handleMouseLeave: Mousewheel.handleMouseLeave,\n animateSlider: Mousewheel.animateSlider,\n releaseScroll: Mousewheel.releaseScroll\n }\n });\n },\n on: {\n init: function init(swiper) {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy: function destroy(swiper) {\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods, createElementIfNotDefined } from '../../utils/utils';\nvar Navigation = {\n toggleEl: function toggleEl($el, disabled) {\n $el[disabled ? 'addClass' : 'removeClass'](this.params.navigation.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n },\n update: function update() {\n // Update Navigation Buttons\n var swiper = this;\n var params = swiper.params.navigation;\n var toggleEl = swiper.navigation.toggleEl;\n if (swiper.params.loop) return;\n var _swiper$navigation = swiper.navigation,\n $nextEl = _swiper$navigation.$nextEl,\n $prevEl = _swiper$navigation.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n toggleEl($prevEl, true);\n } else {\n toggleEl($prevEl, false);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $prevEl[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n toggleEl($nextEl, true);\n } else {\n toggleEl($nextEl, false);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $nextEl[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n },\n onPrevClick: function onPrevClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick: function onNextClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper.$el, swiper.params.navigation, swiper.params.createElements, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n var $nextEl;\n var $prevEl;\n\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n\n if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n\n if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n extend(swiper.navigation, {\n $nextEl: $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl: $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n var _swiper$navigation2 = swiper.navigation,\n $nextEl = _swiper$navigation2.$nextEl,\n $prevEl = _swiper$navigation2.$prevEl;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n};\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n navigation: _extends({}, Navigation)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge: function toEdge(swiper) {\n swiper.navigation.update();\n },\n fromEdge: function fromEdge(swiper) {\n swiper.navigation.update();\n },\n destroy: function destroy(swiper) {\n swiper.navigation.destroy();\n },\n 'enable disable': function enableDisable(swiper) {\n var _swiper$navigation3 = swiper.navigation,\n $nextEl = _swiper$navigation3.$nextEl,\n $prevEl = _swiper$navigation3.$prevEl;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n },\n click: function click(swiper, e) {\n var _swiper$navigation4 = swiper.navigation,\n $nextEl = _swiper$navigation4.$nextEl,\n $prevEl = _swiper$navigation4.$prevEl;\n var targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n var isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n swiper.emit('navigationShow');\n } else {\n swiper.emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods, classesToSelector, createElementIfNotDefined } from '../../utils/utils';\nvar Pagination = {\n update: function update() {\n // Render || Update Pagination bullets/items\n var swiper = this;\n var rtl = swiper.rtl;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el; // Current/Total\n\n var current;\n var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n var bullets = swiper.pagination.bullets;\n var firstIndex;\n var lastIndex;\n var midIndex;\n\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + \"px\");\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;\n\n if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(params.bulletActiveClass + \" \" + params.bulletActiveClass + \"-next \" + params.bulletActiveClass + \"-next-next \" + params.bulletActiveClass + \"-prev \" + params.bulletActiveClass + \"-prev-prev \" + params.bulletActiveClass + \"-main\");\n\n if ($el.length > 1) {\n bullets.each(function (bullet) {\n var $bullet = $(bullet);\n var bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(params.bulletActiveClass + \"-main\");\n }\n\n if (bulletIndex === firstIndex) {\n $bullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n }\n\n if (bulletIndex === lastIndex) {\n $bullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n }\n });\n } else {\n var $bullet = bullets.eq(current);\n var bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n var $firstDisplayedBullet = bullets.eq(firstIndex);\n var $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (var i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(params.bulletActiveClass + \"-main\");\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (var _i = params.dynamicMainBullets; _i >= 0; _i -= 1) {\n bullets.eq(bullets.length - _i).addClass(params.bulletActiveClass + \"-main\");\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(params.bulletActiveClass + \"-prev\");\n } else {\n $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n } else {\n $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n }\n }\n\n if (params.dynamicBullets) {\n var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize;\n var offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + \"px\");\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n var progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n var scale = (current + 1) / total;\n var scaleX = 1;\n var scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(\"translate3d(0,0,0) scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\").transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', $el[0]);\n } else {\n swiper.emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n render: function render() {\n // Render Container\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el;\n var paginationHTML = '';\n\n if (params.type === 'bullets') {\n var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (var i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += \"<\" + params.bulletElement + \" class=\\\"\" + params.bulletClass + \"\\\"></\" + params.bulletElement + \">\";\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = \"<span class=\\\"\" + params.currentClass + \"\\\"></span>\" + ' / ' + (\"<span class=\\\"\" + params.totalClass + \"\\\"></span>\");\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = \"<span class=\\\"\" + params.progressbarFillClass + \"\\\"></span>\";\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init: function init() {\n var swiper = this;\n swiper.params.pagination = createElementIfNotDefined(swiper.$el, swiper.params.pagination, swiper.params.createElements, {\n el: 'swiper-pagination'\n });\n var params = swiper.params.pagination;\n if (!params.el) return;\n var $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(\"\" + params.modifierClass + params.type + \"-dynamic\");\n swiper.pagination.dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n var index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n extend(swiper.pagination, {\n $el: $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n};\nexport default {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: function formatFractionCurrent(number) {\n return number;\n },\n formatFractionTotal: function formatFractionTotal(number) {\n return number;\n },\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-',\n // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable',\n // NEW\n lockClass: 'swiper-pagination-lock'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n pagination: _extends({\n dynamicBulletIndex: 0\n }, Pagination)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange: function activeIndexChange(swiper) {\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange: function snapIndexChange(swiper) {\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange: function slidesLengthChange(swiper) {\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange: function snapGridLengthChange(swiper) {\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy: function destroy(swiper) {\n swiper.pagination.destroy();\n },\n 'enable disable': function enableDisable(swiper) {\n var $el = swiper.pagination.$el;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n },\n click: function click(swiper, e) {\n var targetEl = e.target;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n swiper.emit('paginationShow');\n } else {\n swiper.emit('paginationHide');\n }\n\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport { getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { extend, nextTick, bindModuleMethods, createElementIfNotDefined } from '../../utils/utils';\nvar Scrollbar = {\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n var scrollbar = swiper.scrollbar,\n rtl = swiper.rtlTranslate,\n progress = swiper.progress;\n var dragSize = scrollbar.dragSize,\n trackSize = scrollbar.trackSize,\n $dragEl = scrollbar.$dragEl,\n $el = scrollbar.$el;\n var params = swiper.params.scrollbar;\n var newSize = dragSize;\n var newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n\n if (swiper.isHorizontal()) {\n $dragEl.transform(\"translate3d(\" + newPos + \"px, 0, 0)\");\n $dragEl[0].style.width = newSize + \"px\";\n } else {\n $dragEl.transform(\"translate3d(0px, \" + newPos + \"px, 0)\");\n $dragEl[0].style.height = newSize + \"px\";\n }\n\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(function () {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize: function updateSize() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n var scrollbar = swiper.scrollbar;\n var $dragEl = scrollbar.$dragEl,\n $el = scrollbar.$el;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n var divider = swiper.size / swiper.virtualSize;\n var moveDivider = divider * (trackSize / swiper.size);\n var dragSize;\n\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = dragSize + \"px\";\n } else {\n $dragEl[0].style.height = dragSize + \"px\";\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n extend(scrollbar, {\n trackSize: trackSize,\n divider: divider,\n moveDivider: moveDivider,\n dragSize: dragSize\n });\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n }\n },\n getPointerPosition: function getPointerPosition(e) {\n var swiper = this;\n\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n },\n setDragPosition: function setDragPosition(e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar,\n rtl = swiper.rtlTranslate;\n var $el = scrollbar.$el,\n dragSize = scrollbar.dragSize,\n trackSize = scrollbar.trackSize,\n dragStartPos = scrollbar.dragStartPos;\n var positionRatio;\n positionRatio = (scrollbar.getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n var position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart: function onDragStart(e) {\n var swiper = this;\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar,\n $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el,\n $dragEl = scrollbar.$dragEl;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n clearTimeout(swiper.scrollbar.dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove: function onDragMove(e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar,\n $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el,\n $dragEl = scrollbar.$dragEl;\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd: function onDragEnd(e) {\n var swiper = this;\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar,\n $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el;\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = nextTick(function () {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n swiper.emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable: function enableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) return;\n var document = getDocument();\n var scrollbar = swiper.scrollbar,\n touchEventsTouch = swiper.touchEventsTouch,\n touchEventsDesktop = swiper.touchEventsDesktop,\n params = swiper.params,\n support = swiper.support;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n var passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n\n if (!support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable: function disableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) return;\n var document = getDocument();\n var scrollbar = swiper.scrollbar,\n touchEventsTouch = swiper.touchEventsTouch,\n touchEventsDesktop = swiper.touchEventsDesktop,\n params = swiper.params,\n support = swiper.support;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n var passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n\n if (!support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init: function init() {\n var swiper = this;\n var scrollbar = swiper.scrollbar,\n $swiperEl = swiper.$el;\n swiper.params.scrollbar = createElementIfNotDefined($swiperEl, swiper.params.scrollbar, swiper.params.createElements, {\n el: 'swiper-scrollbar'\n });\n var params = swiper.params.scrollbar;\n if (!params.el) return;\n var $el = $(params.el);\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n var $dragEl = $el.find(\".\" + swiper.params.scrollbar.dragClass);\n\n if ($dragEl.length === 0) {\n $dragEl = $(\"<div class=\\\"\" + swiper.params.scrollbar.dragClass + \"\\\"></div>\");\n $el.append($dragEl);\n }\n\n extend(scrollbar, {\n $el: $el,\n el: $el[0],\n $dragEl: $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.scrollbar.disableDraggable();\n }\n};\nexport default {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n scrollbar: _extends({\n isTouched: false,\n timeout: null,\n dragTimeout: null\n }, Scrollbar)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update: function update(swiper) {\n swiper.scrollbar.updateSize();\n },\n resize: function resize(swiper) {\n swiper.scrollbar.updateSize();\n },\n observerUpdate: function observerUpdate(swiper) {\n swiper.scrollbar.updateSize();\n },\n setTranslate: function setTranslate(swiper) {\n swiper.scrollbar.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n swiper.scrollbar.setTransition(duration);\n },\n 'enable disable': function enableDisable(swiper) {\n var $el = swiper.scrollbar.$el;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n },\n destroy: function destroy(swiper) {\n swiper.scrollbar.destroy();\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\nvar Parallax = {\n setTransform: function setTransform(el, progress) {\n var swiper = this;\n var rtl = swiper.rtl;\n var $el = $(el);\n var rtlFactor = rtl ? -1 : 1;\n var p = $el.attr('data-swiper-parallax') || '0';\n var x = $el.attr('data-swiper-parallax-x');\n var y = $el.attr('data-swiper-parallax-y');\n var scale = $el.attr('data-swiper-parallax-scale');\n var opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = parseInt(x, 10) * progress * rtlFactor + \"%\";\n } else {\n x = x * progress * rtlFactor + \"px\";\n }\n\n if (y.indexOf('%') >= 0) {\n y = parseInt(y, 10) * progress + \"%\";\n } else {\n y = y * progress + \"px\";\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n var currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(\"translate3d(\" + x + \", \" + y + \", 0px)\");\n } else {\n var currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(\"translate3d(\" + x + \", \" + y + \", 0px) scale(\" + currentScale + \")\");\n }\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el,\n slides = swiper.slides,\n progress = swiper.progress,\n snapGrid = swiper.snapGrid;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each(function (slideEl, slideIndex) {\n var slideProgress = slideEl.progress;\n\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition: function setTransition(duration) {\n if (duration === void 0) {\n duration = this.params.speed;\n }\n\n var swiper = this;\n var $el = swiper.$el;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (parallaxEl) {\n var $parallaxEl = $(parallaxEl);\n var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n }\n};\nexport default {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n parallax: _extends({}, Parallax)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init: function init(swiper) {\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate: function setTranslate(swiper) {\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport { getWindow } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { bindModuleMethods, getTranslate } from '../../utils/utils';\nvar Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n var x1 = e.targetTouches[0].pageX;\n var y1 = e.targetTouches[0].pageY;\n var x2 = e.targetTouches[1].pageX;\n var y2 = e.targetTouches[1].pageY;\n var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\n return distance;\n },\n // Events\n onGestureStart: function onGestureStart(e) {\n var swiper = this;\n var support = swiper.support;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n\n if (!support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(\".\" + swiper.params.slideClass);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n\n swiper.zoom.isScaling = true;\n },\n onGestureChange: function onGestureChange(e) {\n var swiper = this;\n var support = swiper.support;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n\n if (!support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') zoom.onGestureStart(e);\n return;\n }\n\n if (support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = gesture.scaleMove / gesture.scaleStart * zoom.currentScale;\n }\n\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + Math.pow(zoom.scale - gesture.maxRatio + 1, 0.5);\n }\n\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - Math.pow(params.minRatio - zoom.scale + 1, 0.5);\n }\n\n gesture.$imageEl.transform(\"translate3d(0,0,0) scale(\" + zoom.scale + \")\");\n },\n onGestureEnd: function onGestureEnd(e) {\n var swiper = this;\n var device = swiper.device;\n var support = swiper.support;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n\n if (!support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n return;\n }\n\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(\"translate3d(0,0,0) scale(\" + zoom.scale + \")\");\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart: function onTouchStart(e) {\n var swiper = this;\n var device = swiper.device;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture,\n image = zoom.image;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove: function onTouchMove(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture,\n image = zoom.image,\n velocity = zoom.velocity;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n } // Define if we need image drag\n\n\n var scaledWidth = image.width * zoom.scale;\n var scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n\n if (e.cancelable) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - Math.pow(image.minX - image.currentX + 1, 0.8);\n }\n\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + Math.pow(image.currentX - image.maxX + 1, 0.8);\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - Math.pow(image.minY - image.currentY + 1, 0.8);\n }\n\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + Math.pow(image.currentY - image.maxY + 1, 0.8);\n } // Velocity\n\n\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.$imageWrapEl.transform(\"translate3d(\" + image.currentX + \"px, \" + image.currentY + \"px,0)\");\n },\n onTouchEnd: function onTouchEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture,\n image = zoom.image,\n velocity = zoom.velocity;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n\n image.isTouched = false;\n image.isMoved = false;\n var momentumDurationX = 300;\n var momentumDurationY = 300;\n var momentumDistanceX = velocity.x * momentumDurationX;\n var newPositionX = image.currentX + momentumDistanceX;\n var momentumDistanceY = velocity.y * momentumDurationY;\n var newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY; // Define if we need image drag\n\n var scaledWidth = image.width * zoom.scale;\n var scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.$imageWrapEl.transition(momentumDuration).transform(\"translate3d(\" + image.currentX + \"px, \" + image.currentY + \"px,0)\");\n },\n onTransitionEnd: function onTransitionEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle: function toggle(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in: function _in(e) {\n var swiper = this;\n var window = getWindow();\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture,\n image = zoom.image;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(\".\" + swiper.params.slideClass);\n }\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(\".\" + swiper.params.slideActiveClass);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n gesture.$slideEl.addClass(\"\" + params.zoomedSlideClass);\n var touchX;\n var touchY;\n var offsetX;\n var offsetY;\n var diffX;\n var diffY;\n var translateX;\n var translateY;\n var imageWidth;\n var imageHeight;\n var scaledWidth;\n var scaledHeight;\n var translateMinX;\n var translateMinY;\n var translateMaxX;\n var translateMaxY;\n var slideWidth;\n var slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n\n gesture.$imageWrapEl.transition(300).transform(\"translate3d(\" + translateX + \"px, \" + translateY + \"px,0)\");\n gesture.$imageEl.transition(300).transform(\"translate3d(0,0,0) scale(\" + zoom.scale + \")\");\n },\n out: function out() {\n var swiper = this;\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(\".\" + swiper.params.slideActiveClass);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(\"\" + params.zoomedSlideClass);\n gesture.$slideEl = undefined;\n },\n toggleGestures: function toggleGestures(method) {\n var swiper = this;\n var zoom = swiper.zoom;\n var selector = zoom.slideSelector,\n passive = zoom.passiveListener;\n swiper.$wrapperEl[method]('gesturestart', selector, zoom.onGestureStart, passive);\n swiper.$wrapperEl[method]('gesturechange', selector, zoom.onGestureChange, passive);\n swiper.$wrapperEl[method]('gestureend', selector, zoom.onGestureEnd, passive);\n },\n enableGestures: function enableGestures() {\n if (this.zoom.gesturesEnabled) return;\n this.zoom.gesturesEnabled = true;\n this.zoom.toggleGestures('on');\n },\n disableGestures: function disableGestures() {\n if (!this.zoom.gesturesEnabled) return;\n this.zoom.gesturesEnabled = false;\n this.zoom.toggleGestures('off');\n },\n // Attach/Detach Events\n enable: function enable() {\n var swiper = this;\n var support = swiper.support;\n var zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n var activeListenerWithCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n var slideSelector = \".\" + swiper.params.slideClass;\n swiper.zoom.passiveListener = passiveListener;\n swiper.zoom.slideSelector = slideSelector; // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.on(swiper.touchEvents.move, \".\" + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);\n },\n disable: function disable() {\n var swiper = this;\n var zoom = swiper.zoom;\n if (!zoom.enabled) return;\n var support = swiper.support;\n swiper.zoom.enabled = false;\n var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n var activeListenerWithCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n var slideSelector = \".\" + swiper.params.slideClass; // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.off(swiper.touchEvents.move, \".\" + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);\n }\n};\nexport default {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n zoom: _extends({\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n }\n }, Zoom)\n });\n var scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get: function get() {\n return scale;\n },\n set: function set(value) {\n if (scale !== value) {\n var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n\n scale = value;\n }\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy: function destroy(swiper) {\n swiper.zoom.disable();\n },\n touchStart: function touchStart(swiper, e) {\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd: function touchEnd(swiper, e) {\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap: function doubleTap(swiper, e) {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd: function transitionEnd(swiper) {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange: function slideChange(swiper) {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport { getWindow } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\nvar Lazy = {\n loadInSlide: function loadInSlide(index, loadInDuplicate) {\n if (loadInDuplicate === void 0) {\n loadInDuplicate = true;\n }\n\n var swiper = this;\n var params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var $slideEl = isVirtual ? swiper.$wrapperEl.children(\".\" + swiper.params.slideClass + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\") : swiper.slides.eq(index);\n var $images = $slideEl.find(\".\" + params.elementClass + \":not(.\" + params.loadedClass + \"):not(.\" + params.loadingClass + \")\");\n\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images.push($slideEl[0]);\n }\n\n if ($images.length === 0) return;\n $images.each(function (imageEl) {\n var $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n var background = $imageEl.attr('data-background');\n var src = $imageEl.attr('data-src');\n var srcset = $imageEl.attr('data-srcset');\n var sizes = $imageEl.attr('data-sizes');\n var $pictureEl = $imageEl.parent('picture');\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, function () {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n if (background) {\n $imageEl.css('background-image', \"url(\\\"\" + background + \"\\\")\");\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n\n if ($pictureEl.length) {\n $pictureEl.children('source').each(function (sourceEl) {\n var $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(\".\" + params.preloaderClass).remove();\n\n if (swiper.params.loop && loadInDuplicate) {\n var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n var originalSlide = swiper.$wrapperEl.children(\"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]:not(.\" + swiper.params.slideDuplicateClass + \")\");\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n var duplicatedSlide = swiper.$wrapperEl.children(\".\" + swiper.params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]\");\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load: function load() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n swiperParams = swiper.params,\n slides = swiper.slides,\n activeIndex = swiper.activeIndex;\n var isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n var params = swiperParams.lazy;\n var slidesPerView = swiperParams.slidesPerView;\n\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(\".\" + swiperParams.slideClass + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\").length) {\n return true;\n }\n } else if (slides[index]) return true;\n\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(\".\" + swiperParams.slideVisibleClass).each(function (slideEl) {\n var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n var amount = params.loadPrevNextAmount;\n var spv = slidesPerView;\n var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n for (var _i = activeIndex + slidesPerView; _i < maxIndex; _i += 1) {\n if (slideExist(_i)) swiper.lazy.loadInSlide(_i);\n } // Prev Slides\n\n\n for (var _i2 = minIndex; _i2 < activeIndex; _i2 += 1) {\n if (slideExist(_i2)) swiper.lazy.loadInSlide(_i2);\n }\n } else {\n var nextSlide = $wrapperEl.children(\".\" + swiperParams.slideNextClass);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n var prevSlide = $wrapperEl.children(\".\" + swiperParams.slidePrevClass);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n checkInViewOnLoad: function checkInViewOnLoad() {\n var window = getWindow();\n var swiper = this;\n if (!swiper || swiper.destroyed) return;\n var $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n var isWindow = $scrollElement[0] === window;\n var scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n var scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n var swiperOffset = swiper.$el.offset();\n var rtl = swiper.rtlTranslate;\n var inView = false;\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n for (var i = 0; i < swiperCoord.length; i += 1) {\n var point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n var passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\n if (inView) {\n swiper.lazy.load();\n $scrollElement.off('scroll', swiper.lazy.checkInViewOnLoad, passiveListener);\n } else if (!swiper.lazy.scrollHandlerAttached) {\n swiper.lazy.scrollHandlerAttached = true;\n $scrollElement.on('scroll', swiper.lazy.checkInViewOnLoad, passiveListener);\n }\n }\n};\nexport default {\n name: 'lazy',\n params: {\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n lazy: _extends({\n initialImageLoaded: false\n }, Lazy)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init: function init(swiper) {\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n if (swiper.params.lazy.checkInView) {\n swiper.lazy.checkInViewOnLoad();\n } else {\n swiper.lazy.load();\n }\n }\n },\n scroll: function scroll(swiper) {\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n 'scrollbarDragMove resize _freeModeNoMomentumRelease': function lazyLoad(swiper) {\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart: function transitionStart(swiper) {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd: function transitionEnd(swiper) {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange: function slideChange(swiper) {\n var _swiper$params = swiper.params,\n lazy = _swiper$params.lazy,\n cssMode = _swiper$params.cssMode,\n watchSlidesVisibility = _swiper$params.watchSlidesVisibility,\n watchSlidesProgress = _swiper$params.watchSlidesProgress,\n touchReleaseOnEdges = _swiper$params.touchReleaseOnEdges,\n resistanceRatio = _swiper$params.resistanceRatio;\n\n if (lazy.enabled && (cssMode || (watchSlidesVisibility || watchSlidesProgress) && (touchReleaseOnEdges || resistanceRatio === 0))) {\n swiper.lazy.load();\n }\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick, bindModuleMethods } from '../../utils/utils';\nvar Controller = {\n LinearSpline: function LinearSpline(x, y) {\n var binarySearch = function search() {\n var maxIndex;\n var minIndex;\n var guess;\n return function (array, val) {\n minIndex = -1;\n maxIndex = array.length;\n\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n var i1;\n var i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction: function getInterpolateFunction(c) {\n var swiper = this;\n\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate: function setTranslate(_setTranslate, byController) {\n var swiper = this;\n var controlled = swiper.controller.control;\n var multiplier;\n var controlledTranslate;\n var Swiper = swiper.constructor;\n\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n\n if (Array.isArray(controlled)) {\n for (var i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition: function setTransition(duration, byController) {\n var swiper = this;\n var Swiper = swiper.constructor;\n var controlled = swiper.controller.control;\n var i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n nextTick(function () {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(function () {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\n }\n }\n\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n};\nexport default {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n controller: _extends({\n control: swiper.params.controller.control\n }, Controller)\n });\n },\n on: {\n update: function update(swiper) {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize: function resize(swiper) {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate: function observerUpdate(swiper) {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate: function setTranslate(swiper, translate, byController) {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition: function setTransition(swiper, duration, byController) {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { bindModuleMethods, classesToSelector } from '../../utils/utils';\nvar A11y = {\n getRandomNumber: function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n\n var randomChar = function randomChar() {\n return Math.round(16 * Math.random()).toString(16);\n };\n\n return 'x'.repeat(size).replace(/x/g, randomChar);\n },\n makeElFocusable: function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n makeElNotFocusable: function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n return $el;\n },\n addElRole: function addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElRoleDescription: function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n return $el;\n },\n addElControls: function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n return $el;\n },\n addElLabel: function addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n addElId: function addElId($el, id) {\n $el.attr('id', id);\n return $el;\n },\n addElLive: function addElLive($el, live) {\n $el.attr('aria-live', live);\n return $el;\n },\n disableEl: function disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl: function enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterOrSpaceKey: function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n var swiper = this;\n var params = swiper.params.a11y;\n var $targetEl = $(e.target);\n\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n\n if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n $targetEl[0].click();\n }\n },\n notify: function notify(message) {\n var swiper = this;\n var notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation: function updateNavigation() {\n var swiper = this;\n if (swiper.params.loop || !swiper.navigation) return;\n var _swiper$navigation = swiper.navigation,\n $nextEl = _swiper$navigation.$nextEl,\n $prevEl = _swiper$navigation.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n swiper.a11y.makeElNotFocusable($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n swiper.a11y.makeElFocusable($prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n swiper.a11y.makeElNotFocusable($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n swiper.a11y.makeElFocusable($nextEl);\n }\n }\n },\n updatePagination: function updatePagination() {\n var swiper = this;\n var params = swiper.params.a11y;\n\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each(function (bulletEl) {\n var $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n\n if (!swiper.params.pagination.renderBullet) {\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n }\n });\n }\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.a11y;\n swiper.$el.append(swiper.a11y.liveRegion); // Container\n\n var $containerEl = swiper.$el;\n\n if (params.containerRoleDescriptionMessage) {\n swiper.a11y.addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n\n if (params.containerMessage) {\n swiper.a11y.addElLabel($containerEl, params.containerMessage);\n } // Wrapper\n\n\n var $wrapperEl = swiper.$wrapperEl;\n var wrapperId = $wrapperEl.attr('id') || \"swiper-wrapper-\" + swiper.a11y.getRandomNumber(16);\n var live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n swiper.a11y.addElId($wrapperEl, wrapperId);\n swiper.a11y.addElLive($wrapperEl, live); // Slide\n\n if (params.itemRoleDescriptionMessage) {\n swiper.a11y.addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n\n swiper.a11y.addElRole($(swiper.slides), params.slideRole);\n var slidesLength = swiper.params.loop ? swiper.slides.filter(function (el) {\n return !el.classList.contains(swiper.params.slideDuplicateClass);\n }).length : swiper.slides.length;\n swiper.slides.each(function (slideEl, index) {\n var $slideEl = $(slideEl);\n var slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n var ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n swiper.a11y.addElLabel($slideEl, ariaLabelMessage);\n }); // Navigation\n\n var $nextEl;\n var $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n swiper.a11y.makeElFocusable($nextEl);\n\n if ($nextEl[0].tagName !== 'BUTTON') {\n swiper.a11y.addElRole($nextEl, 'button');\n $nextEl.on('keydown', swiper.a11y.onEnterOrSpaceKey);\n }\n\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n swiper.a11y.addElControls($nextEl, wrapperId);\n }\n\n if ($prevEl && $prevEl.length) {\n swiper.a11y.makeElFocusable($prevEl);\n\n if ($prevEl[0].tagName !== 'BUTTON') {\n swiper.a11y.addElRole($prevEl, 'button');\n $prevEl.on('keydown', swiper.a11y.onEnterOrSpaceKey);\n }\n\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n swiper.a11y.addElControls($prevEl, wrapperId);\n } // Pagination\n\n\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), swiper.a11y.onEnterOrSpaceKey);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n var $nextEl;\n var $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterOrSpaceKey);\n }\n\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterOrSpaceKey);\n } // Pagination\n\n\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), swiper.a11y.onEnterOrSpaceKey);\n }\n }\n};\nexport default {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n a11y: _extends({}, A11y, {\n liveRegion: $(\"<span class=\\\"\" + swiper.params.a11y.notificationClass + \"\\\" aria-live=\\\"assertive\\\" aria-atomic=\\\"true\\\"></span>\")\n })\n });\n },\n on: {\n afterInit: function afterInit(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge: function toEdge(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge: function fromEdge(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate: function paginationUpdate(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy: function destroy(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport { getWindow } from 'ssr-window';\nimport { bindModuleMethods } from '../../utils/utils';\nvar History = {\n init: function init() {\n var swiper = this;\n var window = getWindow();\n if (!swiper.params.history) return;\n\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n\n var history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues(swiper.params.url);\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n var window = getWindow();\n\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState: function setHistoryPopState() {\n var swiper = this;\n swiper.history.paths = History.getPathValues(swiper.params.url);\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues: function getPathValues(urlOverride) {\n var window = getWindow();\n var location;\n\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n\n var pathArray = location.pathname.slice(1).split('/').filter(function (part) {\n return part !== '';\n });\n var total = pathArray.length;\n var key = pathArray[total - 2];\n var value = pathArray[total - 1];\n return {\n key: key,\n value: value\n };\n },\n setHistory: function setHistory(key, index) {\n var swiper = this;\n var window = getWindow();\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n var location;\n\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n\n var slide = swiper.slides.eq(index);\n var value = History.slugify(slide.attr('data-history'));\n\n if (swiper.params.history.root.length > 0) {\n var root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = root + \"/\" + key + \"/\" + value;\n } else if (!location.pathname.includes(key)) {\n value = key + \"/\" + value;\n }\n\n var currentState = window.history.state;\n\n if (currentState && currentState.value === value) {\n return;\n }\n\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value: value\n }, null, value);\n } else {\n window.history.pushState({\n value: value\n }, null, value);\n }\n },\n slugify: function slugify(text) {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n },\n scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {\n var swiper = this;\n\n if (value) {\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n var slide = swiper.slides.eq(i);\n var slideHistory = History.slugify(slide.attr('data-history'));\n\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n var index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n }\n};\nexport default {\n name: 'history',\n params: {\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n history: _extends({}, History)\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy: function destroy(swiper) {\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n 'transitionEnd _freeModeNoMomentumRelease': function transitionEnd_freeModeNoMomentumRelease(swiper) {\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n slideChange: function slideChange(swiper) {\n if (swiper.history.initialized && swiper.params.cssMode) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\nvar HashNavigation = {\n onHashChange: function onHashChange() {\n var swiper = this;\n var document = getDocument();\n swiper.emit('hashChange');\n var newHash = document.location.hash.replace('#', '');\n var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\n if (newHash !== activeSlideHash) {\n var newIndex = swiper.$wrapperEl.children(\".\" + swiper.params.slideClass + \"[data-hash=\\\"\" + newHash + \"\\\"]\").index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n },\n setHash: function setHash() {\n var swiper = this;\n var window = getWindow();\n var document = getDocument();\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, \"#\" + swiper.slides.eq(swiper.activeIndex).attr('data-hash') || '');\n swiper.emit('hashSet');\n } else {\n var slide = swiper.slides.eq(swiper.activeIndex);\n var hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n swiper.emit('hashSet');\n }\n },\n init: function init() {\n var swiper = this;\n var document = getDocument();\n var window = getWindow();\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n swiper.hashNavigation.initialized = true;\n var hash = document.location.hash.replace('#', '');\n\n if (hash) {\n var speed = 0;\n\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n var slide = swiper.slides.eq(i);\n var slideHash = slide.attr('data-hash') || slide.attr('data-history');\n\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n var index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', swiper.hashNavigation.onHashChange);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n var window = getWindow();\n\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', swiper.hashNavigation.onHashChange);\n }\n }\n};\nexport default {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n hashNavigation: _extends({\n initialized: false\n }, HashNavigation)\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy: function destroy(swiper) {\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n 'transitionEnd _freeModeNoMomentumRelease': function transitionEnd_freeModeNoMomentumRelease(swiper) {\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n slideChange: function slideChange(swiper) {\n if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n swiper.hashNavigation.setHash();\n }\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\n/* eslint no-underscore-dangle: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick, bindModuleMethods } from '../../utils/utils';\nvar Autoplay = {\n run: function run() {\n var swiper = this;\n var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n var delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = nextTick(function () {\n var autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();else if (autoplayResult === false) {\n swiper.autoplay.run();\n }\n }, delay);\n },\n start: function start() {\n var swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop: function stop() {\n var swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause: function pause(speed) {\n var swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n swiper.$wrapperEl[0].addEventListener(event, swiper.autoplay.onTransitionEnd);\n });\n }\n },\n onVisibilityChange: function onVisibilityChange() {\n var swiper = this;\n var document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd: function onTransitionEnd(e) {\n var swiper = this;\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n swiper.$wrapperEl[0].removeEventListener(event, swiper.autoplay.onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n onMouseEnter: function onMouseEnter() {\n var swiper = this;\n\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n swiper.$wrapperEl[0].removeEventListener(event, swiper.autoplay.onTransitionEnd);\n });\n },\n onMouseLeave: function onMouseLeave() {\n var swiper = this;\n\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n },\n attachMouseEvents: function attachMouseEvents() {\n var swiper = this;\n\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', swiper.autoplay.onMouseEnter);\n swiper.$el.on('mouseleave', swiper.autoplay.onMouseLeave);\n }\n },\n detachMouseEvents: function detachMouseEvents() {\n var swiper = this;\n swiper.$el.off('mouseenter', swiper.autoplay.onMouseEnter);\n swiper.$el.off('mouseleave', swiper.autoplay.onMouseLeave);\n }\n};\nexport default {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n autoplay: _extends({}, Autoplay, {\n running: false,\n paused: false\n })\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n var document = getDocument();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n swiper.autoplay.attachMouseEvents();\n }\n },\n beforeTransitionStart: function beforeTransitionStart(swiper, speed, internal) {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove: function sliderFirstMove(swiper) {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd: function touchEnd(swiper) {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy: function destroy(swiper) {\n swiper.autoplay.detachMouseEvents();\n\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n\n var document = getDocument();\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport { extend, bindModuleMethods } from '../../utils/utils';\nvar Fade = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = swiper.slides.eq(i);\n var offset = $slideEl[0].swiperSlideOffset;\n var tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n var ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n var slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl.css({\n opacity: slideOpacity\n }).transform(\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px)\");\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides,\n $wrapperEl = swiper.$wrapperEl;\n slides.transition(duration);\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n slides.transitionEnd(function () {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n }\n};\nexport default {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n fadeEffect: _extends({}, Fade)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"fade\");\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true\n };\n extend(swiper.params, overwriteParams);\n extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate(swiper) {\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\nvar Cube = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el,\n $wrapperEl = swiper.$wrapperEl,\n slides = swiper.slides,\n swiperWidth = swiper.width,\n swiperHeight = swiper.height,\n rtl = swiper.rtlTranslate,\n swiperSize = swiper.size,\n browser = swiper.browser;\n var params = swiper.params.cubeEffect;\n var isHorizontal = swiper.isHorizontal();\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var wrapperRotate = 0;\n var $cubeShadowEl;\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n $wrapperEl.append($cubeShadowEl);\n }\n\n $cubeShadowEl.css({\n height: swiperWidth + \"px\"\n });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n $el.append($cubeShadowEl);\n }\n }\n }\n\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideIndex = i;\n\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n\n var slideAngle = slideIndex * 90;\n var round = Math.floor(slideAngle / 360);\n\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n\n var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n var tx = 0;\n var ty = 0;\n var tz = 0;\n\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n var transform = \"rotateX(\" + (isHorizontal ? 0 : -slideAngle) + \"deg) rotateY(\" + (isHorizontal ? slideAngle : 0) + \"deg) translate3d(\" + tx + \"px, \" + ty + \"px, \" + tz + \"px)\";\n\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n\n $slideEl.transform(transform);\n\n if (params.slideShadows) {\n // Set shadows\n var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = $(\"<div class=\\\"swiper-slide-shadow-\" + (isHorizontal ? 'left' : 'top') + \"\\\"></div>\");\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = $(\"<div class=\\\"swiper-slide-shadow-\" + (isHorizontal ? 'right' : 'bottom') + \"\\\"></div>\");\n $slideEl.append(shadowAfter);\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n\n $wrapperEl.css({\n '-webkit-transform-origin': \"50% 50% -\" + swiperSize / 2 + \"px\",\n '-moz-transform-origin': \"50% 50% -\" + swiperSize / 2 + \"px\",\n '-ms-transform-origin': \"50% 50% -\" + swiperSize / 2 + \"px\",\n 'transform-origin': \"50% 50% -\" + swiperSize / 2 + \"px\"\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(\"translate3d(0px, \" + (swiperWidth / 2 + params.shadowOffset) + \"px, \" + -swiperWidth / 2 + \"px) rotateX(90deg) rotateZ(0deg) scale(\" + params.shadowScale + \")\");\n } else {\n var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n var scale1 = params.shadowScale;\n var scale2 = params.shadowScale / multiplier;\n var offset = params.shadowOffset;\n $cubeShadowEl.transform(\"scale3d(\" + scale1 + \", 1, \" + scale2 + \") translate3d(0px, \" + (swiperHeight / 2 + offset) + \"px, \" + -swiperHeight / 2 / scale2 + \"px) rotateX(-90deg)\");\n }\n }\n\n var zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(\"translate3d(0px,0,\" + zFactor + \"px) rotateX(\" + (swiper.isHorizontal() ? 0 : wrapperRotate) + \"deg) rotateY(\" + (swiper.isHorizontal() ? -wrapperRotate : 0) + \"deg)\");\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var $el = swiper.$el,\n slides = swiper.slides;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n }\n};\nexport default {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n cubeEffect: _extends({}, Cube)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"cube\");\n swiper.classNames.push(swiper.params.containerModifierClass + \"3d\");\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n };\n extend(swiper.params, overwriteParams);\n extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate(swiper) {\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\nvar Flip = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides,\n rtl = swiper.rtlTranslate;\n\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n\n var offset = $slideEl[0].swiperSlideOffset;\n var rotate = -180 * progress;\n var rotateY = rotate;\n var rotateX = 0;\n var tx = -offset;\n var ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = $(\"<div class=\\\"swiper-slide-shadow-\" + (swiper.isHorizontal() ? 'left' : 'top') + \"\\\"></div>\");\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = $(\"<div class=\\\"swiper-slide-shadow-\" + (swiper.isHorizontal() ? 'right' : 'bottom') + \"\\\"></div>\");\n $slideEl.append(shadowAfter);\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n\n $slideEl.transform(\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg)\");\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides,\n activeIndex = swiper.activeIndex,\n $wrapperEl = swiper.$wrapperEl;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false; // eslint-disable-next-line\n\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return; // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n }\n};\nexport default {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n flipEffect: _extends({}, Flip)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"flip\");\n swiper.classNames.push(swiper.params.containerModifierClass + \"3d\");\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true\n };\n extend(swiper.params, overwriteParams);\n extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate(swiper) {\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\nvar Coverflow = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var swiperWidth = swiper.width,\n swiperHeight = swiper.height,\n slides = swiper.slides,\n slidesSizesGrid = swiper.slidesSizesGrid;\n var params = swiper.params.coverflowEffect;\n var isHorizontal = swiper.isHorizontal();\n var transform = swiper.translate;\n var center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n var rotate = isHorizontal ? params.rotate : -params.rotate;\n var translate = params.depth; // Each slide offset from center\n\n for (var i = 0, length = slides.length; i < length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideSize = slidesSizesGrid[i];\n var slideOffset = $slideEl[0].swiperSlideOffset;\n var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;\n var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n var translateZ = -translate * Math.abs(offsetMultiplier);\n var stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n\n var translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n var translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n var scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n var slideTransform = \"translate3d(\" + translateX + \"px,\" + translateY + \"px,\" + translateZ + \"px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg) scale(\" + scale + \")\";\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(\"<div class=\\\"swiper-slide-shadow-\" + (isHorizontal ? 'left' : 'top') + \"\\\"></div>\");\n $slideEl.append($shadowBeforeEl);\n }\n\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(\"<div class=\\\"swiper-slide-shadow-\" + (isHorizontal ? 'right' : 'bottom') + \"\\\"></div>\");\n $slideEl.append($shadowAfterEl);\n }\n\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n swiper.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n }\n};\nexport default {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n coverflowEffect: _extends({}, Coverflow)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.effect !== 'coverflow') return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"coverflow\");\n swiper.classNames.push(swiper.params.containerModifierClass + \"3d\");\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate: function setTranslate(swiper) {\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n }\n }\n};","function _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport { extend, isObject, bindModuleMethods } from '../../utils/utils';\nimport $ from '../../utils/dom';\nvar Thumbs = {\n init: function init() {\n var swiper = this;\n var thumbsParams = swiper.params.thumbs;\n if (swiper.thumbs.initialized) return false;\n swiper.thumbs.initialized = true;\n var SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false\n }));\n swiper.thumbs.swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n return true;\n },\n onThumbClick: function onThumbClick() {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n var clickedIndex = thumbsSwiper.clickedIndex;\n var clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n var slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n var currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n var prevIndex = swiper.slides.eq(currentIndex).prevAll(\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\").eq(0).index();\n var nextIndex = swiper.slides.eq(currentIndex).nextAll(\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\").eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n },\n update: function update(initial) {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n var autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n var useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n var currentThumbsIndex = thumbsSwiper.activeIndex;\n var newThumbsIndex;\n var direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(\"[data-swiper-slide-index=\\\"\" + swiper.realIndex + \"\\\"]\").eq(0).index();\n var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(\"[data-swiper-slide-index=\\\"\" + swiper.realIndex + \"\\\"]\").eq(0).index();\n\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n } // Activate thumbs\n\n\n var thumbsToActivate = 1;\n var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (var i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex + i) + \"\\\"]\").addClass(thumbActiveClass);\n }\n } else {\n for (var _i = 0; _i < thumbsToActivate; _i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + _i).addClass(thumbActiveClass);\n }\n }\n }\n};\nexport default {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n thumbs: _extends({\n swiper: null,\n initialized: false\n }, Thumbs)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n var thumbs = swiper.params.thumbs;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange: function slideChange(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update: function update(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize: function resize(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate: function observerUpdate(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition: function setTransition(swiper, duration) {\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy: function beforeDestroy(swiper) {\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n }\n }\n};","import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || new Array(16);\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n var v;\n var arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = [];\n\n for (var i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n var bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return stringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (var i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n\n for (var i = 0; i < length32; i += 8) {\n var x = input[i >> 5] >>> i % 32 & 0xff;\n var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n var length8 = input.length * 8;\n var output = new Uint32Array(getOutputLength(length8));\n\n for (var i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nexport default md5;","import v35 from './v35.js';\nimport md5 from './md5.js';\nvar v3 = v35('v3', 0x30, md5);\nexport default v3;","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (var i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var _i = 0; _i < N; ++_i) {\n var arr = new Uint32Array(16);\n\n for (var j = 0; j < 16; ++j) {\n arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3];\n }\n\n M[_i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var _i2 = 0; _i2 < N; ++_i2) {\n var W = new Uint32Array(80);\n\n for (var t = 0; t < 16; ++t) {\n W[t] = M[_i2][t];\n }\n\n for (var _t = 16; _t < 80; ++_t) {\n W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var _t2 = 0; _t2 < 80; ++_t2) {\n var s = Math.floor(_t2 / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nvar v5 = v35('v5', 0x50, sha1);\nexport default v5;","export default '00000000-0000-0000-0000-000000000000';","import validate from './validate.js';\n\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n","function makeMap(str, expectsLowerCase) {\n const set = new Set(str.split(\",\"));\n return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val);\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction((str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n});\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](arg);\n }\n};\nconst def = (obj, key, value) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"HOISTED\": -1,\n \"-1\": \"HOISTED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `HOISTED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = \"\";\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n if (isString(value) || typeof value === \"number\") {\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\nfunction escapeHtmlComment(src) {\n return src.replace(commentStripRE, \"\");\n}\n\nfunction looseCompareArrays(a, b) {\n if (a.length !== b.length)\n return false;\n let equal = true;\n for (let i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i]);\n }\n return equal;\n}\nfunction looseEqual(a, b) {\n if (a === b)\n return true;\n let aValidType = isDate(a);\n let bValidType = isDate(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n }\n aValidType = isSymbol(a);\n bValidType = isSymbol(b);\n if (aValidType || bValidType) {\n return a === b;\n }\n aValidType = isArray(a);\n bValidType = isArray(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n }\n aValidType = isObject(a);\n bValidType = isObject(b);\n if (aValidType || bValidType) {\n if (!aValidType || !bValidType) {\n return false;\n }\n const aKeysCount = Object.keys(a).length;\n const bKeysCount = Object.keys(b).length;\n if (aKeysCount !== bKeysCount) {\n return false;\n }\n for (const key in a) {\n const aHasKey = a.hasOwnProperty(key);\n const bHasKey = b.hasOwnProperty(key);\n if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n return arr.findIndex((item) => looseEqual(item, val));\n}\n\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (val && val.__v_isRef) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v;\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","import { NOOP, extend, isArray, isSymbol, isMap, isIntegerKey, hasOwn, hasChanged, isObject, makeMap, capitalize, toRawType, def, isFunction } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this._active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n this._active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeEffect;\nclass ReactiveEffect {\n constructor(fn, trigger, scheduler, scope) {\n this.fn = fn;\n this.trigger = trigger;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n /**\n * @internal\n */\n this._dirtyLevel = 3;\n /**\n * @internal\n */\n this._trackId = 0;\n /**\n * @internal\n */\n this._runnings = 0;\n /**\n * @internal\n */\n this._queryings = 0;\n /**\n * @internal\n */\n this._depsLength = 0;\n recordEffectScope(this, scope);\n }\n get dirty() {\n if (this._dirtyLevel === 1) {\n this._dirtyLevel = 0;\n this._queryings++;\n pauseTracking();\n for (const dep of this.deps) {\n if (dep.computed) {\n triggerComputed(dep.computed);\n if (this._dirtyLevel >= 2) {\n break;\n }\n }\n }\n resetTracking();\n this._queryings--;\n }\n return this._dirtyLevel >= 2;\n }\n set dirty(v) {\n this._dirtyLevel = v ? 3 : 0;\n }\n run() {\n this._dirtyLevel = 0;\n if (!this.active) {\n return this.fn();\n }\n let lastShouldTrack = shouldTrack;\n let lastEffect = activeEffect;\n try {\n shouldTrack = true;\n activeEffect = this;\n this._runnings++;\n preCleanupEffect(this);\n return this.fn();\n } finally {\n postCleanupEffect(this);\n this._runnings--;\n activeEffect = lastEffect;\n shouldTrack = lastShouldTrack;\n }\n }\n stop() {\n var _a;\n if (this.active) {\n preCleanupEffect(this);\n postCleanupEffect(this);\n (_a = this.onStop) == null ? void 0 : _a.call(this);\n this.active = false;\n }\n }\n}\nfunction triggerComputed(computed) {\n return computed.value;\n}\nfunction preCleanupEffect(effect2) {\n effect2._trackId++;\n effect2._depsLength = 0;\n}\nfunction postCleanupEffect(effect2) {\n if (effect2.deps && effect2.deps.length > effect2._depsLength) {\n for (let i = effect2._depsLength; i < effect2.deps.length; i++) {\n cleanupDepEffect(effect2.deps[i], effect2);\n }\n effect2.deps.length = effect2._depsLength;\n }\n}\nfunction cleanupDepEffect(dep, effect2) {\n const trackId = dep.get(effect2);\n if (trackId !== void 0 && effect2._trackId !== trackId) {\n dep.delete(effect2);\n if (dep.size === 0) {\n dep.cleanup();\n }\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn, NOOP, () => {\n if (_effect.dirty) {\n _effect.run();\n }\n });\n if (options) {\n extend(_effect, options);\n if (options.scope)\n recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nlet pauseScheduleStack = 0;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction pauseScheduling() {\n pauseScheduleStack++;\n}\nfunction resetScheduling() {\n pauseScheduleStack--;\n while (!pauseScheduleStack && queueEffectSchedulers.length) {\n queueEffectSchedulers.shift()();\n }\n}\nfunction trackEffect(effect2, dep, debuggerEventExtraInfo) {\n var _a;\n if (dep.get(effect2) !== effect2._trackId) {\n dep.set(effect2, effect2._trackId);\n const oldDep = effect2.deps[effect2._depsLength];\n if (oldDep !== dep) {\n if (oldDep) {\n cleanupDepEffect(oldDep, effect2);\n }\n effect2.deps[effect2._depsLength++] = dep;\n } else {\n effect2._depsLength++;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n }\n}\nconst queueEffectSchedulers = [];\nfunction triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {\n var _a;\n pauseScheduling();\n for (const effect2 of dep.keys()) {\n if (!effect2.allowRecurse && effect2._runnings) {\n continue;\n }\n if (effect2._dirtyLevel < dirtyLevel && (!effect2._runnings || dirtyLevel !== 2)) {\n const lastDirtyLevel = effect2._dirtyLevel;\n effect2._dirtyLevel = dirtyLevel;\n if (lastDirtyLevel === 0 && (!effect2._queryings || dirtyLevel !== 2)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n effect2.trigger();\n if (effect2.scheduler) {\n queueEffectSchedulers.push(effect2.scheduler);\n }\n }\n }\n }\n resetScheduling();\n}\n\nconst createDep = (cleanup, computed) => {\n const dep = /* @__PURE__ */ new Map();\n dep.cleanup = cleanup;\n dep.computed = computed;\n return dep;\n};\n\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"iterate\" : \"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"Map key iterate\" : \"\");\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = createDep(() => depsMap.delete(key)));\n }\n trackEffect(\n activeEffect,\n dep,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key\n } : void 0\n );\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n return;\n }\n let deps = [];\n if (type === \"clear\") {\n deps = [...depsMap.values()];\n } else if (key === \"length\" && isArray(target)) {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || !isSymbol(key2) && key2 >= newLength) {\n deps.push(dep);\n }\n });\n } else {\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n switch (type) {\n case \"add\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isIntegerKey(key)) {\n deps.push(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n pauseScheduling();\n for (const dep of deps) {\n if (dep) {\n triggerEffects(\n dep,\n 3,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n } : void 0\n );\n }\n }\n resetScheduling();\n}\nfunction getDepFromReactive(object, key) {\n var _a;\n return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key);\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\", i + \"\");\n }\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n return arr[key](...args.map(toRaw));\n } else {\n return res;\n }\n };\n });\n [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n pauseTracking();\n pauseScheduling();\n const res = toRaw(this)[key].apply(this, args);\n resetScheduling();\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction hasOwnProperty(key) {\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _shallow = false) {\n this._isReadonly = _isReadonly;\n this._shallow = _shallow;\n }\n get(target, key, receiver) {\n const isReadonly2 = this._isReadonly, shallow = this._shallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return shallow;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the reciever is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n if (targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (shallow) {\n return res;\n }\n if (isRef(res)) {\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(shallow = false) {\n super(false, shallow);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n if (!this._shallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n return false;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(shallow = false) {\n super(true, shallow);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(\n true\n);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get(target, key, isReadonly = false, isShallow = false) {\n target = target[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has: has2 } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has2.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has2.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n}\nfunction has(key, isReadonly = false) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\"];\n !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n}\nfunction set(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2 ? get2.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\", void 0, void 0, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n console.warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations2 = {\n get(key) {\n return get(this, key);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations2 = {\n get(key) {\n return get(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = [\"keys\", \"values\", \"entries\", Symbol.iterator];\n iteratorMethods.forEach((method) => {\n mutableInstrumentations2[method] = createIterableMethod(\n method,\n false,\n false\n );\n readonlyInstrumentations2[method] = createIterableMethod(\n method,\n true,\n false\n );\n shallowInstrumentations2[method] = createIterableMethod(\n method,\n false,\n true\n );\n shallowReadonlyInstrumentations2[method] = createIterableMethod(\n method,\n true,\n true\n );\n });\n return [\n mutableInstrumentations2,\n readonlyInstrumentations2,\n shallowInstrumentations2,\n shallowReadonlyInstrumentations2\n ];\n}\nconst [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has2, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has2.call(target, rawKey)) {\n const type = toRawType(target);\n console.warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n console.warn(`value cannot be made reactive: ${String(target)}`);\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n def(value, \"__v_skip\", true);\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this._setter = _setter;\n this.dep = void 0;\n this.__v_isRef = true;\n this[\"__v_isReadonly\"] = false;\n this.effect = new ReactiveEffect(\n () => getter(this._value),\n () => triggerRefValue(this, 1)\n );\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\"] = isReadonly;\n }\n get value() {\n const self = toRaw(this);\n trackRefValue(self);\n if (!self._cacheable || self.effect.dirty) {\n if (hasChanged(self._value, self._value = self.effect.run())) {\n triggerRefValue(self, 2);\n }\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x\n get _dirty() {\n return this.effect.dirty;\n }\n set _dirty(v) {\n this.effect.dirty = v;\n }\n // #endregion\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = !!(process.env.NODE_ENV !== \"production\") ? () => {\n console.warn(\"Write operation failed: computed value is readonly\");\n } : NOOP;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nfunction trackRefValue(ref2) {\n if (shouldTrack && activeEffect) {\n ref2 = toRaw(ref2);\n trackEffect(\n activeEffect,\n ref2.dep || (ref2.dep = createDep(\n () => ref2.dep = void 0,\n ref2 instanceof ComputedRefImpl ? ref2 : void 0\n )),\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"get\",\n key: \"value\"\n } : void 0\n );\n }\n}\nfunction triggerRefValue(ref2, dirtyLevel = 3, newVal) {\n ref2 = toRaw(ref2);\n const dep = ref2.dep;\n if (dep) {\n triggerEffects(\n dep,\n dirtyLevel,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: newVal\n } : void 0\n );\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = void 0;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, 3, newVal);\n }\n }\n}\nfunction triggerRef(ref2) {\n triggerRefValue(ref2, 3, !!(process.env.NODE_ENV !== \"production\") ? ref2.value : void 0);\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = void 0;\n this.__v_isRef = true;\n const { get, set } = factory(\n () => trackRefValue(this),\n () => triggerRefValue(this)\n );\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n console.warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(toRaw(this._object), this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this.__v_isRef = true;\n this.__v_isReadonly = true;\n }\n get value() {\n return this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n const val = source[key];\n return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nconst deferredComputed = computed;\n\nconst TrackOpTypes = {\n \"GET\": \"get\",\n \"HAS\": \"has\",\n \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n \"SET\": \"set\",\n \"ADD\": \"add\",\n \"DELETE\": \"delete\",\n \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n \"SKIP\": \"__v_skip\",\n \"IS_REACTIVE\": \"__v_isReactive\",\n \"IS_READONLY\": \"__v_isReadonly\",\n \"IS_SHALLOW\": \"__v_isShallow\",\n \"RAW\": \"__v_raw\"\n};\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseScheduling, pauseTracking, proxyRefs, reactive, readonly, ref, resetScheduling, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, track, trigger, triggerRef, unref };\n","import { pauseTracking, resetTracking, isRef, toRaw, getCurrentScope, isShallow as isShallow$1, isReactive, ReactiveEffect, ref, shallowReadonly, track, customRef, reactive, shallowReactive, trigger, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, looseToNumber, hyphenate, camelize, isObject, isOn, hasOwn, isModelListener, capitalize, toNumber, isSet, isMap, isPlainObject, hasChanged, remove, isBuiltInDirective, invokeArrayFns, isRegExp, isGloballyAllowed, NO, def, isReservedProp, EMPTY_ARR, toRawType, makeMap, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn$1(msg, ...args) {\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n msg + args.join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\nfunction assertNumber(val, type) {\n if (!!!(process.env.NODE_ENV !== \"production\"))\n return;\n if (val === void 0) {\n return;\n } else if (typeof val !== \"number\") {\n warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n } else if (isNaN(val)) {\n warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n }\n}\n\nconst ErrorCodes = {\n \"SETUP_FUNCTION\": 0,\n \"0\": \"SETUP_FUNCTION\",\n \"RENDER_FUNCTION\": 1,\n \"1\": \"RENDER_FUNCTION\",\n \"WATCH_GETTER\": 2,\n \"2\": \"WATCH_GETTER\",\n \"WATCH_CALLBACK\": 3,\n \"3\": \"WATCH_CALLBACK\",\n \"WATCH_CLEANUP\": 4,\n \"4\": \"WATCH_CLEANUP\",\n \"NATIVE_EVENT_HANDLER\": 5,\n \"5\": \"NATIVE_EVENT_HANDLER\",\n \"COMPONENT_EVENT_HANDLER\": 6,\n \"6\": \"COMPONENT_EVENT_HANDLER\",\n \"VNODE_HOOK\": 7,\n \"7\": \"VNODE_HOOK\",\n \"DIRECTIVE_HOOK\": 8,\n \"8\": \"DIRECTIVE_HOOK\",\n \"TRANSITION_HOOK\": 9,\n \"9\": \"TRANSITION_HOOK\",\n \"APP_ERROR_HANDLER\": 10,\n \"10\": \"APP_ERROR_HANDLER\",\n \"APP_WARN_HANDLER\": 11,\n \"11\": \"APP_WARN_HANDLER\",\n \"FUNCTION_REF\": 12,\n \"12\": \"FUNCTION_REF\",\n \"ASYNC_COMPONENT_LOADER\": 13,\n \"13\": \"ASYNC_COMPONENT_LOADER\",\n \"SCHEDULER\": 14,\n \"14\": \"SCHEDULER\"\n};\nconst ErrorTypeStrings$1 = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core .\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n let res;\n try {\n res = args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n return res;\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/errors/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n callWithErrorHandling(\n appErrorHandler,\n null,\n 10,\n [err, exposedInstance, errorInfo]\n );\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings$1[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else {\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.pre) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!queue.length || !queue.includes(\n job,\n isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex\n )) {\n if (job.id == null) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs || !activePostFlushCbs.includes(\n cb,\n cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex\n )) {\n pendingPostFlushCbs.push(cb);\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if (instance && cb.id !== instance.uid) {\n continue;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)];\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre)\n return -1;\n if (b.pre && !a.pre)\n return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n queue.sort(comparator);\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n callWithErrorHandling(job, null, 14);\n }\n }\n } finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n } else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n } else {\n seen.set(fn, count + 1);\n }\n }\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Set();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: /* @__PURE__ */ new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n record.initialDef.render = newRender;\n [...record.instances].forEach((instance) => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n isHmrUpdating = true;\n instance.effect.dirty = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record)\n return;\n newComp = normalizeClassComponent(newComp);\n updateComponentDef(record.initialDef, newComp);\n const instances = [...record.instances];\n for (const instance of instances) {\n const oldComp = normalizeClassComponent(instance.type);\n if (!hmrDirtyComponents.has(oldComp)) {\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n hmrDirtyComponents.add(oldComp);\n }\n instance.appContext.propsCache.delete(instance.type);\n instance.appContext.emitsCache.delete(instance.type);\n instance.appContext.optionsCache.delete(instance.type);\n if (instance.ceReload) {\n hmrDirtyComponents.add(oldComp);\n instance.ceReload(newComp.styles);\n hmrDirtyComponents.delete(oldComp);\n } else if (instance.parent) {\n instance.parent.effect.dirty = true;\n queueJob(instance.parent.update);\n } else if (instance.appContext.reload) {\n instance.appContext.reload();\n } else if (typeof window !== \"undefined\") {\n window.location.reload();\n } else {\n console.warn(\n \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n );\n }\n }\n queuePostFlushCb(() => {\n for (const instance of instances) {\n hmrDirtyComponents.delete(\n normalizeClassComponent(instance.type)\n );\n }\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== \"__file\" && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n } catch (e) {\n console.error(e);\n console.warn(\n `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n );\n }\n };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools$1) {\n devtools$1.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook$1(hook, target) {\n var _a, _b;\n devtools$1 = hook;\n if (devtools$1) {\n devtools$1.enabled = true;\n buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook$1(newHook, target);\n });\n setTimeout(() => {\n if (!devtools$1) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:added\" /* COMPONENT_ADDED */\n);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools$1.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n component.parent ? component.parent.uid : void 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:start\" /* PERFORMANCE_START */\n);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:end\" /* PERFORMANCE_END */\n);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nfunction emit(instance, event, ...rawArgs) {\n if (instance.isUnmounted)\n return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const {\n emitsOptions,\n propsOptions: [propsOptions]\n } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) && true) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn$1(\n `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(event)}\" prop.`\n );\n }\n } else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn$1(\n `Invalid event arguments: event validation failed for event \"${event}\".`\n );\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith(\"update:\");\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === \"modelValue\" ? \"model\" : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n }\n if (number) {\n args = rawArgs.map(looseToNumber);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn$1(\n `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n instance,\n instance.type\n )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(\n event\n )}\" instead of \"${event}\".`\n );\n }\n }\n let handlerName;\n let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n props[handlerName = toHandlerKey(camelize(event))];\n if (!handler && isModelListener) {\n handler = props[handlerName = toHandlerKey(hyphenate(event))];\n }\n if (handler) {\n callWithAsyncErrorHandling(\n handler,\n instance,\n 6,\n args\n );\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n } else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(\n onceHandler,\n instance,\n 6,\n args\n );\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== void 0) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw2) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach((key) => normalized[key] = null);\n } else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, \"\");\n return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\nfunction popScopeId() {\n currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx)\n return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const {\n type: Component,\n vnode,\n proxy,\n withProxy,\n props,\n propsOptions: [propsOptions],\n slots,\n attrs,\n emit,\n render,\n renderCache,\n data,\n setupState,\n ctx,\n inheritAttrs\n } = instance;\n let result;\n let fallthroughAttrs;\n const prev = setCurrentRenderingInstance(instance);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4) {\n const proxyToUse = withProxy || proxy;\n const thisProxy = !!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup ? new Proxy(proxyToUse, {\n get(target, key, receiver) {\n warn$1(\n `Property '${String(\n key\n )}' was accessed via 'this'. Avoid using 'this' in templates.`\n );\n return Reflect.get(target, key, receiver);\n }\n }) : proxyToUse;\n result = normalizeVNode(\n render.call(\n thisProxy,\n proxyToUse,\n renderCache,\n props,\n setupState,\n data,\n ctx\n )\n );\n fallthroughAttrs = attrs;\n } else {\n const render2 = Component;\n if (!!(process.env.NODE_ENV !== \"production\") && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(\n render2.length > 1 ? render2(\n props,\n !!(process.env.NODE_ENV !== \"production\") ? {\n get attrs() {\n markAttrsAccessed();\n return attrs;\n },\n slots,\n emit\n } : { attrs, slots, emit }\n ) : render2(\n props,\n null\n /* we know it doesn't need it */\n )\n );\n fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n }\n } catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1);\n result = createVNode(Comment);\n }\n let root = result;\n let setRoot = void 0;\n if (!!(process.env.NODE_ENV !== \"production\") && result.patchFlag > 0 && result.patchFlag & 2048) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 | 6)) {\n if (propsOptions && keys.some(isModelListener)) {\n fallthroughAttrs = filterModelListeners(\n fallthroughAttrs,\n propsOptions\n );\n }\n root = cloneVNode(root, fallthroughAttrs);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n if (!isModelListener(key)) {\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n } else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn$1(\n `Extraneous non-props attributes (${extraAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`\n );\n }\n if (eventAttrs.length) {\n warn$1(\n `Extraneous non-emits event listeners (${eventAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the \"emits\" option.`\n );\n }\n }\n }\n }\n if (vnode.dirs) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Runtime directive used on component with non-element root node. The directives will not function as intended.`\n );\n }\n root = cloneVNode(root);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n if (vnode.transition) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Component inside <Transition> renders non-element root node that cannot be animated.`\n );\n }\n root.transition = vnode.transition;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && setRoot) {\n setRoot(root);\n } else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren);\n if (!childRoot) {\n return [vnode, void 0];\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n } else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n if (child.type !== Comment || child.children === \"v-if\") {\n if (singleRoot) {\n return;\n } else {\n singleRoot = child;\n }\n }\n } else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === \"class\" || key === \"style\" || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n if (!!(process.env.NODE_ENV !== \"production\") && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024) {\n return true;\n }\n if (patchFlag & 16) {\n if (!prevProps) {\n return !!nextProps;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n } else if (patchFlag & 8) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n } else {\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n if (!el)\n return;\n while (parent) {\n const root = parent.subTree;\n if (root.suspense && root.suspense.activeBranch === vnode) {\n root.el = vnode.el;\n }\n if (root === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n } else {\n break;\n }\n }\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n } else {\n return component || NULL_DYNAMIC_COMPONENT;\n }\n}\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nconst isSuspense = (type) => type.__isSuspense;\nlet suspenseId = 0;\nconst SuspenseImpl = {\n name: \"Suspense\",\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n if (n1 == null) {\n mountSuspense(\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n } else {\n patchSuspense(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n }\n },\n hydrate: hydrateSuspense,\n create: createSuspenseBoundary,\n normalize: normalizeSuspenseChildren\n};\nconst Suspense = SuspenseImpl ;\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n const {\n p: patch,\n o: { createElement }\n } = rendererInternals;\n const hiddenContainer = createElement(\"div\");\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n container,\n hiddenContainer,\n anchor,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n patch(\n null,\n suspense.pendingBranch = vnode.ssContent,\n hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds\n );\n if (suspense.deps > 0) {\n triggerEvent(vnode, \"onPending\");\n triggerEvent(vnode, \"onFallback\");\n patch(\n null,\n vnode.ssFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds\n );\n setActiveBranch(suspense, vnode.ssFallback);\n } else {\n suspense.resolve(false, true);\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = n2.suspense = n1.suspense;\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n patch(\n pendingBranch,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else if (isInFallback) {\n if (!isHydrating) {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n }\n } else {\n suspense.pendingId = suspenseId++;\n if (isHydrating) {\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n } else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n suspense.deps = 0;\n suspense.effects.length = 0;\n suspense.hiddenContainer = createElement(\"div\");\n if (isInFallback) {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n suspense.resolve(true);\n } else {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n } else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newBranch);\n } else {\n triggerEvent(n2, \"onPending\");\n suspense.pendingBranch = newBranch;\n if (newBranch.shapeFlag & 512) {\n suspense.pendingId = newBranch.component.suspenseId;\n } else {\n suspense.pendingId = suspenseId++;\n }\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n } else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n if (!!(process.env.NODE_ENV !== \"production\") && true && !hasWarned) {\n hasWarned = true;\n console[console.info ? \"info\" : \"log\"](\n `<Suspense> is an experimental feature and its API will likely change.`\n );\n }\n const {\n p: patch,\n m: move,\n um: unmount,\n n: next,\n o: { parentNode, remove }\n } = rendererInternals;\n let parentSuspenseId;\n const isSuspensible = isVNodeSuspensible(vnode);\n if (isSuspensible) {\n if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) {\n parentSuspenseId = parentSuspense.pendingId;\n parentSuspense.deps++;\n }\n }\n const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n assertNumber(timeout, `Suspense timeout`);\n }\n const suspense = {\n vnode,\n parent: parentSuspense,\n parentComponent,\n namespace,\n container,\n hiddenContainer,\n anchor,\n deps: 0,\n pendingId: 0,\n timeout: typeof timeout === \"number\" ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: !isHydrating,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false, sync = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(\n `suspense.resolve() is called without a pending branch.`\n );\n }\n if (suspense.isUnmounted) {\n throw new Error(\n `suspense.resolve() is called on an already unmounted suspense boundary.`\n );\n }\n }\n const {\n vnode: vnode2,\n activeBranch,\n pendingBranch,\n pendingId,\n effects,\n parentComponent: parentComponent2,\n container: container2\n } = suspense;\n let delayEnter = false;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n } else if (!resume) {\n delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(\n pendingBranch,\n container2,\n next(activeBranch),\n 0\n );\n queuePostFlushCb(effects);\n }\n };\n }\n let { anchor: anchor2 } = suspense;\n if (activeBranch) {\n anchor2 = next(activeBranch);\n unmount(activeBranch, parentComponent2, suspense, true);\n }\n if (!delayEnter) {\n move(pendingBranch, container2, anchor2, 0);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n if (!hasUnresolvedAncestor && !delayEnter) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n if (isSuspensible) {\n if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0 && !sync) {\n parentSuspense.resolve();\n }\n }\n }\n triggerEvent(vnode2, \"onResolve\");\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense;\n triggerEvent(vnode2, \"onFallback\");\n const anchor2 = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n patch(\n null,\n fallbackVNode,\n container2,\n anchor2,\n parentComponent2,\n null,\n // fallback tree will not have suspense context\n namespace2,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n unmount(\n activeBranch,\n parentComponent2,\n null,\n // no suspense so unmount hooks fire now\n true\n // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container2, anchor2, type) {\n suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);\n suspense.container = container2;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance.asyncDep.catch((err) => {\n handleError(err, instance, 0);\n }).then((asyncSetupResult) => {\n if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n return;\n }\n instance.asyncResolved = true;\n const { vnode: vnode2 } = instance;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(vnode2);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n vnode2.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(\n instance,\n vnode2,\n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el),\n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree),\n suspense,\n namespace,\n optimized\n );\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode2.el);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n }\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense2, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(\n suspense.activeBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n if (suspense.pendingBranch) {\n unmount(\n suspense.pendingBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n node.parentNode,\n // eslint-disable-next-line no-restricted-globals\n document.createElement(\"div\"),\n null,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals,\n true\n );\n const result = hydrateNode(\n node,\n suspense.pendingBranch = vnode.ssContent,\n parentComponent,\n suspense,\n slotScopeIds,\n optimized\n );\n if (suspense.deps === 0) {\n suspense.resolve(false, true);\n }\n return result;\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32;\n vnode.ssContent = normalizeSuspenseSlot(\n isSlotChildren ? children.default : children\n );\n vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if (!!(process.env.NODE_ENV !== \"production\") && !singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) {\n warn$1(`<Suspense> slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter((c) => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n } else {\n suspense.effects.push(fn);\n }\n } else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n const el = vnode.el = branch.el;\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\nfunction isVNodeSuspensible(vnode) {\n var _a;\n return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false;\n}\n\nconst ssrContextKey = Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n );\n }\n return ctx;\n }\n};\n\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n );\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n );\n}\nconst INITIAL_WATCHER_VALUE = {};\nfunction watch(source, cb, options) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n warn$1(\n `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n );\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, {\n immediate,\n deep,\n flush,\n once,\n onTrack,\n onTrigger\n} = EMPTY_OBJ) {\n var _a;\n if (cb && once) {\n const _cb = cb;\n cb = (...args) => {\n _cb(...args);\n unwatch();\n };\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n if (immediate !== void 0) {\n warn$1(\n `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (deep !== void 0) {\n warn$1(\n `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (once !== void 0) {\n warn$1(\n `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n }\n const warnInvalidSource = (s) => {\n warn$1(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const instance = getCurrentScope() === ((_a = currentInstance) == null ? void 0 : _a.scope) ? currentInstance : null;\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow$1(source);\n } else if (isReactive(source)) {\n getter = isShallow$1(source) || deep === false ? () => traverse(source, 1) : () => traverse(source);\n forceTrigger = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow$1(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return traverse(s, isShallow$1(s) || deep === false ? 1 : void 0);\n } else if (isFunction(s)) {\n return callWithErrorHandling(s, instance, 2);\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = () => callWithErrorHandling(source, instance, 2);\n } else {\n getter = () => {\n if (instance && instance.isUnmounted) {\n return;\n }\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(\n source,\n instance,\n 3,\n [onCleanup]\n );\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = (fn) => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4);\n cleanup = effect.onStop = void 0;\n };\n };\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n onCleanup = NOOP;\n if (!cb) {\n getter();\n } else if (immediate) {\n callWithAsyncErrorHandling(cb, instance, 3, [\n getter(),\n isMultiSource ? [] : void 0,\n onCleanup\n ]);\n }\n if (flush === \"sync\") {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n } else {\n return NOOP;\n }\n }\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active || !effect.dirty) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) {\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n } else {\n effect.run();\n }\n };\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === \"sync\") {\n scheduler = job;\n } else if (flush === \"post\") {\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n } else {\n job.pre = true;\n if (instance)\n job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new ReactiveEffect(getter, NOOP, scheduler);\n const unwatch = () => {\n effect.stop();\n if (instance && instance.scope) {\n remove(instance.scope.effects, effect);\n }\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n if (cb) {\n if (immediate) {\n job();\n } else {\n oldValue = effect.run();\n }\n } else if (flush === \"post\") {\n queuePostRenderEffect(\n effect.run.bind(effect),\n instance && instance.suspense\n );\n } else {\n effect.run();\n }\n if (ssrCleanup)\n ssrCleanup.push(unwatch);\n return unwatch;\n}\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n } else {\n cb = value.handler;\n options = value;\n }\n const cur = currentInstance;\n setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n if (cur) {\n setCurrentInstance(cur);\n } else {\n unsetCurrentInstance();\n }\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split(\".\");\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, depth, currentDepth = 0, seen) {\n if (!isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n if (depth && depth > 0) {\n if (currentDepth >= depth) {\n return value;\n }\n currentDepth++;\n }\n seen = seen || /* @__PURE__ */ new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n if (isRef(value)) {\n traverse(value.value, depth, currentDepth, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], depth, currentDepth, seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, depth, currentDepth, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], depth, currentDepth, seen);\n }\n }\n return value;\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n const internalInstance = currentRenderingInstance;\n if (internalInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getExposeProxy(internalInstance) || internalInstance.proxy;\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nconst leaveCbKey = Symbol(\"_leaveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: /* @__PURE__ */ new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n};\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: BaseTransitionPropsValidators,\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevTransitionKey;\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n for (const c of children) {\n if (c.type !== Comment) {\n if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n warn$1(\n \"<transition> can only be used on a single element or component. Use <transition-group> for lists.\"\n );\n break;\n }\n child = c;\n hasFound = true;\n if (!!!(process.env.NODE_ENV !== \"production\"))\n break;\n }\n }\n }\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n warn$1(`invalid <transition> mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n const innerChild = getKeepAliveChild(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n const enterHooks = resolveTransitionHooks(\n innerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(innerChild, enterHooks);\n const oldChild = instance.subTree;\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n let transitionKeyChanged = false;\n const { getTransitionKey } = innerChild.type;\n if (getTransitionKey) {\n const key = getTransitionKey();\n if (prevTransitionKey === void 0) {\n prevTransitionKey = key;\n } else if (key !== prevTransitionKey) {\n prevTransitionKey = key;\n transitionKeyChanged = true;\n }\n }\n if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\n const leavingHooks = resolveTransitionHooks(\n oldInnerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(oldInnerChild, leavingHooks);\n if (mode === \"out-in\") {\n state.isLeaving = true;\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n if (instance.update.active !== false) {\n instance.effect.dirty = true;\n instance.update();\n }\n };\n return emptyPlaceholder(child);\n } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(\n state,\n oldInnerChild\n );\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n el[leaveCbKey] = () => {\n earlyRemove();\n el[leaveCbKey] = void 0;\n delete enterHooks.delayedLeave;\n };\n enterHooks.delayedLeave = delayedLeave;\n };\n }\n }\n return child;\n };\n }\n};\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n const {\n appear,\n mode,\n persisted = false,\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onEnterCancelled,\n onBeforeLeave,\n onLeave,\n onAfterLeave,\n onLeaveCancelled,\n onBeforeAppear,\n onAppear,\n onAfterAppear,\n onAppearCancelled\n } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook && callWithAsyncErrorHandling(\n hook,\n instance,\n 9,\n args\n );\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every((hook2) => hook2.length <= 1))\n done();\n } else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n } else {\n return;\n }\n }\n if (el[leaveCbKey]) {\n el[leaveCbKey](\n true\n /* cancelled */\n );\n }\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n leavingVNode.el[leaveCbKey]();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n } else {\n return;\n }\n }\n let called = false;\n const done = el[enterCbKey] = (cancelled) => {\n if (called)\n return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n } else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el[enterCbKey] = void 0;\n };\n if (hook) {\n callAsyncHook(hook, [el, done]);\n } else {\n done();\n }\n },\n leave(el, remove) {\n const key2 = String(vnode.key);\n if (el[enterCbKey]) {\n el[enterCbKey](\n true\n /* cancelled */\n );\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = el[leaveCbKey] = (cancelled) => {\n if (called)\n return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n } else {\n callHook(onAfterLeave, [el]);\n }\n el[leaveCbKey] = void 0;\n if (leavingVNodesCache[key2] === vnode) {\n delete leavingVNodesCache[key2];\n }\n };\n leavingVNodesCache[key2] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n } else {\n done();\n }\n },\n clone(vnode2) {\n return resolveTransitionHooks(vnode2, props, state, instance);\n }\n };\n return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getKeepAliveChild(vnode) {\n return isKeepAlive(vnode) ? (\n // #7121 ensure get the child component subtree in case\n // it's been replaced during HMR\n !!(process.env.NODE_ENV !== \"production\") && vnode.component ? vnode.component.subTree : vnode.children ? vnode.children[0] : void 0\n ) : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 && vnode.component) {\n setTransitionHooks(vnode.component.subTree, hooks);\n } else if (vnode.shapeFlag & 128) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n } else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n if (child.type === Fragment) {\n if (child.patchFlag & 128)\n keyedFragmentCount++;\n ret = ret.concat(\n getTransitionRawChildren(child.children, keepComment, key)\n );\n } else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2;\n }\n }\n return ret;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8326: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const {\n loader,\n loadingComponent,\n errorComponent,\n delay = 200,\n timeout,\n // undefined = never times out\n suspensible = true,\n onError: userOnError\n } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n } else {\n throw err;\n }\n }).then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n warn$1(\n `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n );\n }\n if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n comp = comp.default;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n }));\n };\n return defineComponent({\n name: \"AsyncComponentWrapper\",\n __asyncLoader: load,\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(\n err,\n instance,\n 13,\n !errorComponent\n );\n };\n if (suspensible && instance.suspense || isInSSRComponentSetup) {\n return load().then((comp) => {\n return () => createInnerComp(comp, instance);\n }).catch((err) => {\n onError(err);\n return () => errorComponent ? createVNode(errorComponent, {\n error: err\n }) : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(\n `Async component timed out after ${timeout}ms.`\n );\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load().then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n instance.parent.effect.dirty = true;\n queueJob(instance.parent.update);\n }\n }).catch((err) => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n } else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n } else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref: ref2, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n vnode.ref = ref2;\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const sharedContext = instance.ctx;\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = /* @__PURE__ */ new Map();\n const keys = /* @__PURE__ */ new Set();\n let current = null;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const {\n renderer: {\n p: patch,\n m: move,\n um: _unmount,\n o: { createElement }\n }\n } = sharedContext;\n const storageContainer = createElement(\"div\");\n sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n const instance2 = vnode.component;\n move(vnode, container, anchor, 0, parentSuspense);\n patch(\n instance2.vnode,\n vnode,\n container,\n anchor,\n instance2,\n parentSuspense,\n namespace,\n vnode.slotScopeIds,\n optimized\n );\n queuePostRenderEffect(() => {\n instance2.isDeactivated = false;\n if (instance2.a) {\n invokeArrayFns(instance2.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance2 = vnode.component;\n move(vnode, storageContainer, null, 1, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance2.da) {\n invokeArrayFns(instance2.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n instance2.isDeactivated = true;\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n function unmount(vnode) {\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(vnode.type);\n if (name && (!filter || !filter(name))) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (!current || !isSameVNodeType(cached, current)) {\n unmount(cached);\n } else if (current) {\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n watch(\n () => [props.include, props.exclude],\n ([include, exclude]) => {\n include && pruneCache((name) => matches(include, name));\n exclude && pruneCache((name) => !matches(exclude, name));\n },\n // prune post-render after `current` has been updated\n { flush: \"post\", deep: true }\n );\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n if (pendingCacheKey != null) {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach((cached) => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type && cached.key === vnode.key) {\n resetShapeFlag(vnode);\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n const comp = vnode.type;\n const name = getComponentName(\n isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n );\n const { include, exclude, max } = props;\n if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128) {\n rawVNode.ssContent = vnode;\n }\n }\n pendingCacheKey = key;\n if (cachedVNode) {\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n setTransitionHooks(vnode, vnode.transition);\n }\n vnode.shapeFlag |= 512;\n keys.delete(key);\n keys.add(key);\n } else {\n keys.add(key);\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n vnode.shapeFlag |= 256;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n } else if (isString(pattern)) {\n return pattern.split(\",\").includes(name);\n } else if (isRegExp(pattern)) {\n return pattern.test(name);\n }\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n const injected = injectHook(\n type,\n hook,\n keepAliveRoot,\n true\n /* prepend */\n );\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n vnode.shapeFlag &= ~256;\n vnode.shapeFlag &= ~512;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n if (target.isUnmounted) {\n return;\n }\n pauseTracking();\n setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n unsetCurrentInstance();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => (\n // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n (!isInSSRComponentSetup || lifecycle === \"sp\") && injectHook(lifecycle, (...args) => hook(...args), target)\n);\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\n \"rtg\"\n);\nconst onRenderTracked = createHook(\n \"rtc\"\n);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = cache && cache[index];\n if (isArray(source) || isString(source)) {\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);\n }\n } else if (typeof source === \"number\") {\n if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n warn$1(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n }\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(\n source,\n (item, i) => renderItem(item, i, void 0, cached && cached[i])\n );\n } else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n } else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n } else if (slot) {\n slots[slot.name] = slot.key ? (...args) => {\n const res = slot.fn(...args);\n if (res)\n res.key = slot.key;\n return res;\n } : slot.fn;\n }\n }\n return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {\n if (name !== \"default\")\n props.name = name;\n return createVNode(\"slot\", props, fallback && fallback());\n }\n let slot = slots[name];\n if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n warn$1(\n `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n );\n slot = () => [];\n }\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const rendered = createBlock(\n Fragment,\n {\n key: props.key || // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n validSlotContent && validSlotContent.key || `_${name}`\n },\n validSlotContent || (fallback ? fallback() : []),\n validSlotContent && slots._ === 1 ? 64 : -2\n );\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some((child) => {\n if (!isVNode(child))\n return true;\n if (child.type === Comment)\n return false;\n if (child.type === Fragment && !ensureValidVNode(child.children))\n return false;\n return true;\n }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i)\n return null;\n if (isStatefulComponent(i))\n return getExposeProxy(i) || i.proxy;\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n $el: (i) => i.vnode.el,\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n i.effect.dirty = true;\n queueJob(i.update);\n }),\n $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n ) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance, \"get\", key);\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate <script setup> binding \"${key}\" from Options API.`);\n return false;\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n data[key] = value;\n return true;\n } else if (hasOwn(instance.props, key)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`Attempting to mutate prop \"${key}\". Props are readonly.`);\n return false;\n }\n if (key[0] === \"$\" && key.slice(1) in instance) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Attempting to mutate public property \"${key}\". Properties starting with $ are reserved and readonly.`\n );\n return false;\n } else {\n if (!!(process.env.NODE_ENV !== \"production\") && key in instance.appContext.config.globalProperties) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n value\n });\n } else {\n ctx[key] = value;\n }\n }\n return true;\n },\n has({\n _: { data, setupState, accessCache, ctx, appContext, propsOptions }\n }, key) {\n let normalizedProps;\n return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key);\n },\n defineProperty(target, key, descriptor) {\n if (descriptor.get != null) {\n target._.accessCache[key] = 0;\n } else if (hasOwn(descriptor, \"value\")) {\n this.set(target, key, descriptor.value, null);\n }\n return Reflect.defineProperty(target, key, descriptor);\n }\n};\nif (!!(process.env.NODE_ENV !== \"production\") && true) {\n PublicInstanceProxyHandlers.ownKeys = (target) => {\n warn$1(\n `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.`\n );\n return Reflect.ownKeys(target);\n };\n}\nconst RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend(\n {},\n PublicInstanceProxyHandlers,\n {\n get(target, key) {\n if (key === Symbol.unscopables) {\n return;\n }\n return PublicInstanceProxyHandlers.get(target, key, target);\n },\n has(_, key) {\n const has = key[0] !== \"_\" && !isGloballyAllowed(key);\n if (!!(process.env.NODE_ENV !== \"production\") && !has && PublicInstanceProxyHandlers.has(_, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} should not start with _ which is a reserved prefix for Vue internals.`\n );\n }\n return has;\n }\n }\n);\nfunction createDevRenderContext(instance) {\n const target = {};\n Object.defineProperty(target, `_`, {\n configurable: true,\n enumerable: false,\n get: () => instance\n });\n Object.keys(publicPropertiesMap).forEach((key) => {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: false,\n get: () => publicPropertiesMap[key](instance),\n // intercepted by the proxy so no need for implementation,\n // but needed to prevent set errors\n set: NOOP\n });\n });\n return target;\n}\nfunction exposePropsOnRenderContext(instance) {\n const {\n ctx,\n propsOptions: [propsOptions]\n } = instance;\n if (propsOptions) {\n Object.keys(propsOptions).forEach((key) => {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => instance.props[key],\n set: NOOP\n });\n });\n }\n}\nfunction exposeSetupStateOnRenderContext(instance) {\n const { ctx, setupState } = instance;\n Object.keys(toRaw(setupState)).forEach((key) => {\n if (!setupState.__isScriptSetup) {\n if (isReservedPrefix(key[0])) {\n warn$1(\n `setup() return property ${JSON.stringify(\n key\n )} should not start with \"$\" or \"_\" which are reserved prefixes for Vue internals.`\n );\n return;\n }\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => setupState[key],\n set: NOOP\n });\n }\n });\n}\n\nconst warnRuntimeUsage = (method) => warn$1(\n `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.`\n);\nfunction defineProps() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineProps`);\n }\n return null;\n}\nfunction defineEmits() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineEmits`);\n }\n return null;\n}\nfunction defineExpose(exposed) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineExpose`);\n }\n}\nfunction defineOptions(options) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineOptions`);\n }\n}\nfunction defineSlots() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineSlots`);\n }\n return null;\n}\nfunction defineModel() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(\"defineModel\");\n }\n}\nfunction withDefaults(props, defaults) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`withDefaults`);\n }\n return null;\n}\nfunction useSlots() {\n return getContext().slots;\n}\nfunction useAttrs() {\n return getContext().attrs;\n}\nfunction useModel(props, name, options = EMPTY_OBJ) {\n const i = getCurrentInstance();\n if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n warn$1(`useModel() called without active instance.`);\n return ref();\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !i.propsOptions[0][name]) {\n warn$1(`useModel() called with prop \"${name}\" which is not declared.`);\n return ref();\n }\n const camelizedName = camelize(name);\n const res = customRef((track, trigger) => {\n let localValue;\n watchSyncEffect(() => {\n const propValue = props[name];\n if (hasChanged(localValue, propValue)) {\n localValue = propValue;\n trigger();\n }\n });\n return {\n get() {\n track();\n return options.get ? options.get(localValue) : localValue;\n },\n set(value) {\n const rawProps = i.vnode.props;\n if (!(rawProps && // check if parent has passed v-model\n (name in rawProps || camelizedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps)) && hasChanged(value, localValue)) {\n localValue = value;\n trigger();\n }\n i.emit(`update:${name}`, options.set ? options.set(value) : value);\n }\n };\n });\n const modifierKey = name === \"modelValue\" ? \"modelModifiers\" : `${name}Modifiers`;\n res[Symbol.iterator] = () => {\n let i2 = 0;\n return {\n next() {\n if (i2 < 2) {\n return { value: i2++ ? props[modifierKey] || {} : res, done: false };\n } else {\n return { done: true };\n }\n }\n };\n };\n return res;\n}\nfunction getContext() {\n const i = getCurrentInstance();\n if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n warn$1(`useContext() called without active instance.`);\n }\n return i.setupContext || (i.setupContext = createSetupContext(i));\n}\nfunction normalizePropsOrEmits(props) {\n return isArray(props) ? props.reduce(\n (normalized, p) => (normalized[p] = null, normalized),\n {}\n ) : props;\n}\nfunction mergeDefaults(raw, defaults) {\n const props = normalizePropsOrEmits(raw);\n for (const key in defaults) {\n if (key.startsWith(\"__skip\"))\n continue;\n let opt = props[key];\n if (opt) {\n if (isArray(opt) || isFunction(opt)) {\n opt = props[key] = { type: opt, default: defaults[key] };\n } else {\n opt.default = defaults[key];\n }\n } else if (opt === null) {\n opt = props[key] = { default: defaults[key] };\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`props default key \"${key}\" has no corresponding declaration.`);\n }\n if (opt && defaults[`__skip_${key}`]) {\n opt.skipFactory = true;\n }\n }\n return props;\n}\nfunction mergeModels(a, b) {\n if (!a || !b)\n return a || b;\n if (isArray(a) && isArray(b))\n return a.concat(b);\n return extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b));\n}\nfunction createPropsRestProxy(props, excludedKeys) {\n const ret = {};\n for (const key in props) {\n if (!excludedKeys.includes(key)) {\n Object.defineProperty(ret, key, {\n enumerable: true,\n get: () => props[key]\n });\n }\n }\n return ret;\n}\nfunction withAsyncContext(getAwaitable) {\n const ctx = getCurrentInstance();\n if (!!(process.env.NODE_ENV !== \"production\") && !ctx) {\n warn$1(\n `withAsyncContext called without active current instance. This is likely a bug.`\n );\n }\n let awaitable = getAwaitable();\n unsetCurrentInstance();\n if (isPromise(awaitable)) {\n awaitable = awaitable.catch((e) => {\n setCurrentInstance(ctx);\n throw e;\n });\n }\n return [awaitable, () => setCurrentInstance(ctx)];\n}\n\nfunction createDuplicateChecker() {\n const cache = /* @__PURE__ */ Object.create(null);\n return (type, key) => {\n if (cache[key]) {\n warn$1(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\n } else {\n cache[key] = type;\n }\n };\n}\nlet shouldCacheAccess = true;\nfunction applyOptions(instance) {\n const options = resolveMergedOptions(instance);\n const publicThis = instance.proxy;\n const ctx = instance.ctx;\n shouldCacheAccess = false;\n if (options.beforeCreate) {\n callHook(options.beforeCreate, instance, \"bc\");\n }\n const {\n // state\n data: dataOptions,\n computed: computedOptions,\n methods,\n watch: watchOptions,\n provide: provideOptions,\n inject: injectOptions,\n // lifecycle\n created,\n beforeMount,\n mounted,\n beforeUpdate,\n updated,\n activated,\n deactivated,\n beforeDestroy,\n beforeUnmount,\n destroyed,\n unmounted,\n render,\n renderTracked,\n renderTriggered,\n errorCaptured,\n serverPrefetch,\n // public API\n expose,\n inheritAttrs,\n // assets\n components,\n directives,\n filters\n } = options;\n const checkDuplicateProperties = !!(process.env.NODE_ENV !== \"production\") ? createDuplicateChecker() : null;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const [propsOptions] = instance.propsOptions;\n if (propsOptions) {\n for (const key in propsOptions) {\n checkDuplicateProperties(\"Props\" /* PROPS */, key);\n }\n }\n }\n if (injectOptions) {\n resolveInjections(injectOptions, ctx, checkDuplicateProperties);\n }\n if (methods) {\n for (const key in methods) {\n const methodHandler = methods[key];\n if (isFunction(methodHandler)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n Object.defineProperty(ctx, key, {\n value: methodHandler.bind(publicThis),\n configurable: true,\n enumerable: true,\n writable: true\n });\n } else {\n ctx[key] = methodHandler.bind(publicThis);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n checkDuplicateProperties(\"Methods\" /* METHODS */, key);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. Did you reference the function correctly?`\n );\n }\n }\n }\n if (dataOptions) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(dataOptions)) {\n warn$1(\n `The data option must be a function. Plain object usage is no longer supported.`\n );\n }\n const data = dataOptions.call(publicThis, publicThis);\n if (!!(process.env.NODE_ENV !== \"production\") && isPromise(data)) {\n warn$1(\n `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.`\n );\n }\n if (!isObject(data)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`data() should return an object.`);\n } else {\n instance.data = reactive(data);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n for (const key in data) {\n checkDuplicateProperties(\"Data\" /* DATA */, key);\n if (!isReservedPrefix(key[0])) {\n Object.defineProperty(ctx, key, {\n configurable: true,\n enumerable: true,\n get: () => data[key],\n set: NOOP\n });\n }\n }\n }\n }\n }\n shouldCacheAccess = true;\n if (computedOptions) {\n for (const key in computedOptions) {\n const opt = computedOptions[key];\n const get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;\n if (!!(process.env.NODE_ENV !== \"production\") && get === NOOP) {\n warn$1(`Computed property \"${key}\" has no getter.`);\n }\n const set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : !!(process.env.NODE_ENV !== \"production\") ? () => {\n warn$1(\n `Write operation failed: computed property \"${key}\" is readonly.`\n );\n } : NOOP;\n const c = computed({\n get,\n set\n });\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => c.value,\n set: (v) => c.value = v\n });\n if (!!(process.env.NODE_ENV !== \"production\")) {\n checkDuplicateProperties(\"Computed\" /* COMPUTED */, key);\n }\n }\n }\n if (watchOptions) {\n for (const key in watchOptions) {\n createWatcher(watchOptions[key], ctx, publicThis, key);\n }\n }\n if (provideOptions) {\n const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions;\n Reflect.ownKeys(provides).forEach((key) => {\n provide(key, provides[key]);\n });\n }\n if (created) {\n callHook(created, instance, \"c\");\n }\n function registerLifecycleHook(register, hook) {\n if (isArray(hook)) {\n hook.forEach((_hook) => register(_hook.bind(publicThis)));\n } else if (hook) {\n register(hook.bind(publicThis));\n }\n }\n registerLifecycleHook(onBeforeMount, beforeMount);\n registerLifecycleHook(onMounted, mounted);\n registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n registerLifecycleHook(onUpdated, updated);\n registerLifecycleHook(onActivated, activated);\n registerLifecycleHook(onDeactivated, deactivated);\n registerLifecycleHook(onErrorCaptured, errorCaptured);\n registerLifecycleHook(onRenderTracked, renderTracked);\n registerLifecycleHook(onRenderTriggered, renderTriggered);\n registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n registerLifecycleHook(onUnmounted, unmounted);\n registerLifecycleHook(onServerPrefetch, serverPrefetch);\n if (isArray(expose)) {\n if (expose.length) {\n const exposed = instance.exposed || (instance.exposed = {});\n expose.forEach((key) => {\n Object.defineProperty(exposed, key, {\n get: () => publicThis[key],\n set: (val) => publicThis[key] = val\n });\n });\n } else if (!instance.exposed) {\n instance.exposed = {};\n }\n }\n if (render && instance.render === NOOP) {\n instance.render = render;\n }\n if (inheritAttrs != null) {\n instance.inheritAttrs = inheritAttrs;\n }\n if (components)\n instance.components = components;\n if (directives)\n instance.directives = directives;\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) {\n if (isArray(injectOptions)) {\n injectOptions = normalizeInject(injectOptions);\n }\n for (const key in injectOptions) {\n const opt = injectOptions[key];\n let injected;\n if (isObject(opt)) {\n if (\"default\" in opt) {\n injected = inject(\n opt.from || key,\n opt.default,\n true\n );\n } else {\n injected = inject(opt.from || key);\n }\n } else {\n injected = inject(opt);\n }\n if (isRef(injected)) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => injected.value,\n set: (v) => injected.value = v\n });\n } else {\n ctx[key] = injected;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n checkDuplicateProperties(\"Inject\" /* INJECT */, key);\n }\n }\n}\nfunction callHook(hook, instance, type) {\n callWithAsyncErrorHandling(\n isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy),\n instance,\n type\n );\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n const getter = key.includes(\".\") ? createPathGetter(publicThis, key) : () => publicThis[key];\n if (isString(raw)) {\n const handler = ctx[raw];\n if (isFunction(handler)) {\n watch(getter, handler);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Invalid watch handler specified by key \"${raw}\"`, handler);\n }\n } else if (isFunction(raw)) {\n watch(getter, raw.bind(publicThis));\n } else if (isObject(raw)) {\n if (isArray(raw)) {\n raw.forEach((r) => createWatcher(r, ctx, publicThis, key));\n } else {\n const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];\n if (isFunction(handler)) {\n watch(getter, handler, raw);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\n }\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Invalid watch option: \"${key}\"`, raw);\n }\n}\nfunction resolveMergedOptions(instance) {\n const base = instance.type;\n const { mixins, extends: extendsOptions } = base;\n const {\n mixins: globalMixins,\n optionsCache: cache,\n config: { optionMergeStrategies }\n } = instance.appContext;\n const cached = cache.get(base);\n let resolved;\n if (cached) {\n resolved = cached;\n } else if (!globalMixins.length && !mixins && !extendsOptions) {\n {\n resolved = base;\n }\n } else {\n resolved = {};\n if (globalMixins.length) {\n globalMixins.forEach(\n (m) => mergeOptions(resolved, m, optionMergeStrategies, true)\n );\n }\n mergeOptions(resolved, base, optionMergeStrategies);\n }\n if (isObject(base)) {\n cache.set(base, resolved);\n }\n return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n const { mixins, extends: extendsOptions } = from;\n if (extendsOptions) {\n mergeOptions(to, extendsOptions, strats, true);\n }\n if (mixins) {\n mixins.forEach(\n (m) => mergeOptions(to, m, strats, true)\n );\n }\n for (const key in from) {\n if (asMixin && key === \"expose\") {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `\"expose\" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.`\n );\n } else {\n const strat = internalOptionMergeStrats[key] || strats && strats[key];\n to[key] = strat ? strat(to[key], from[key]) : from[key];\n }\n }\n return to;\n}\nconst internalOptionMergeStrats = {\n data: mergeDataFn,\n props: mergeEmitsOrPropsOptions,\n emits: mergeEmitsOrPropsOptions,\n // objects\n methods: mergeObjectOptions,\n computed: mergeObjectOptions,\n // lifecycle\n beforeCreate: mergeAsArray,\n created: mergeAsArray,\n beforeMount: mergeAsArray,\n mounted: mergeAsArray,\n beforeUpdate: mergeAsArray,\n updated: mergeAsArray,\n beforeDestroy: mergeAsArray,\n beforeUnmount: mergeAsArray,\n destroyed: mergeAsArray,\n unmounted: mergeAsArray,\n activated: mergeAsArray,\n deactivated: mergeAsArray,\n errorCaptured: mergeAsArray,\n serverPrefetch: mergeAsArray,\n // assets\n components: mergeObjectOptions,\n directives: mergeObjectOptions,\n // watch\n watch: mergeWatchOptions,\n // provide / inject\n provide: mergeDataFn,\n inject: mergeInject\n};\nfunction mergeDataFn(to, from) {\n if (!from) {\n return to;\n }\n if (!to) {\n return from;\n }\n return function mergedDataFn() {\n return (extend)(\n isFunction(to) ? to.call(this, this) : to,\n isFunction(from) ? from.call(this, this) : from\n );\n };\n}\nfunction mergeInject(to, from) {\n return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n if (isArray(raw)) {\n const res = {};\n for (let i = 0; i < raw.length; i++) {\n res[raw[i]] = raw[i];\n }\n return res;\n }\n return raw;\n}\nfunction mergeAsArray(to, from) {\n return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from;\n}\nfunction mergeEmitsOrPropsOptions(to, from) {\n if (to) {\n if (isArray(to) && isArray(from)) {\n return [.../* @__PURE__ */ new Set([...to, ...from])];\n }\n return extend(\n /* @__PURE__ */ Object.create(null),\n normalizePropsOrEmits(to),\n normalizePropsOrEmits(from != null ? from : {})\n );\n } else {\n return from;\n }\n}\nfunction mergeWatchOptions(to, from) {\n if (!to)\n return from;\n if (!from)\n return to;\n const merged = extend(/* @__PURE__ */ Object.create(null), to);\n for (const key in from) {\n merged[key] = mergeAsArray(to[key], from[key]);\n }\n return merged;\n}\n\nfunction createAppContext() {\n return {\n app: null,\n config: {\n isNativeTag: NO,\n performance: false,\n globalProperties: {},\n optionMergeStrategies: {},\n errorHandler: void 0,\n warnHandler: void 0,\n compilerOptions: {}\n },\n mixins: [],\n components: {},\n directives: {},\n provides: /* @__PURE__ */ Object.create(null),\n optionsCache: /* @__PURE__ */ new WeakMap(),\n propsCache: /* @__PURE__ */ new WeakMap(),\n emitsCache: /* @__PURE__ */ new WeakMap()\n };\n}\nlet uid$1 = 0;\nfunction createAppAPI(render, hydrate) {\n return function createApp(rootComponent, rootProps = null) {\n if (!isFunction(rootComponent)) {\n rootComponent = extend({}, rootComponent);\n }\n if (rootProps != null && !isObject(rootProps)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`root props passed to app.mount() must be an object.`);\n rootProps = null;\n }\n const context = createAppContext();\n const installedPlugins = /* @__PURE__ */ new WeakSet();\n let isMounted = false;\n const app = context.app = {\n _uid: uid$1++,\n _component: rootComponent,\n _props: rootProps,\n _container: null,\n _context: context,\n _instance: null,\n version,\n get config() {\n return context.config;\n },\n set config(v) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `app.config cannot be replaced. Modify individual options instead.`\n );\n }\n },\n use(plugin, ...options) {\n if (installedPlugins.has(plugin)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`Plugin has already been applied to target app.`);\n } else if (plugin && isFunction(plugin.install)) {\n installedPlugins.add(plugin);\n plugin.install(app, ...options);\n } else if (isFunction(plugin)) {\n installedPlugins.add(plugin);\n plugin(app, ...options);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `A plugin must either be a function or an object with an \"install\" function.`\n );\n }\n return app;\n },\n mixin(mixin) {\n if (__VUE_OPTIONS_API__) {\n if (!context.mixins.includes(mixin)) {\n context.mixins.push(mixin);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n \"Mixin has already been applied to target app\" + (mixin.name ? `: ${mixin.name}` : \"\")\n );\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Mixins are only available in builds supporting Options API\");\n }\n return app;\n },\n component(name, component) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateComponentName(name, context.config);\n }\n if (!component) {\n return context.components[name];\n }\n if (!!(process.env.NODE_ENV !== \"production\") && context.components[name]) {\n warn$1(`Component \"${name}\" has already been registered in target app.`);\n }\n context.components[name] = component;\n return app;\n },\n directive(name, directive) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateDirectiveName(name);\n }\n if (!directive) {\n return context.directives[name];\n }\n if (!!(process.env.NODE_ENV !== \"production\") && context.directives[name]) {\n warn$1(`Directive \"${name}\" has already been registered in target app.`);\n }\n context.directives[name] = directive;\n return app;\n },\n mount(rootContainer, isHydrate, namespace) {\n if (!isMounted) {\n if (!!(process.env.NODE_ENV !== \"production\") && rootContainer.__vue_app__) {\n warn$1(\n `There is already an app instance mounted on the host container.\n If you want to mount another app on the same host container, you need to unmount the previous app by calling \\`app.unmount()\\` first.`\n );\n }\n const vnode = createVNode(rootComponent, rootProps);\n vnode.appContext = context;\n if (namespace === true) {\n namespace = \"svg\";\n } else if (namespace === false) {\n namespace = void 0;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n context.reload = () => {\n render(\n cloneVNode(vnode),\n rootContainer,\n namespace\n );\n };\n }\n if (isHydrate && hydrate) {\n hydrate(vnode, rootContainer);\n } else {\n render(vnode, rootContainer, namespace);\n }\n isMounted = true;\n app._container = rootContainer;\n rootContainer.__vue_app__ = app;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n app._instance = vnode.component;\n devtoolsInitApp(app, version);\n }\n return getExposeProxy(vnode.component) || vnode.component.proxy;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `App has already been mounted.\nIf you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \\`const createMyApp = () => createApp(App)\\``\n );\n }\n },\n unmount() {\n if (isMounted) {\n render(null, app._container);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n app._instance = null;\n devtoolsUnmountApp(app);\n }\n delete app._container.__vue_app__;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Cannot unmount an app that is not mounted.`);\n }\n },\n provide(key, value) {\n if (!!(process.env.NODE_ENV !== \"production\") && key in context.provides) {\n warn$1(\n `App already provides property with key \"${String(key)}\". It will be overwritten with the new value.`\n );\n }\n context.provides[key] = value;\n return app;\n },\n runWithContext(fn) {\n currentApp = app;\n try {\n return fn();\n } finally {\n currentApp = null;\n }\n }\n };\n return app;\n };\n}\nlet currentApp = null;\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`provide() can only be used inside setup().`);\n }\n } else {\n let provides = currentInstance.provides;\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n provides[key] = value;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n const instance = currentInstance || currentRenderingInstance;\n if (instance || currentApp) {\n const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides;\n if (provides && key in provides) {\n return provides[key];\n } else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`injection \"${String(key)}\" not found.`);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`inject() can only be used inside setup() or functional components.`);\n }\n}\nfunction hasInjectionContext() {\n return !!(currentInstance || currentRenderingInstance || currentApp);\n}\n\nfunction initProps(instance, rawProps, isStateful, isSSR = false) {\n const props = {};\n const attrs = {};\n def(attrs, InternalObjectKey, 1);\n instance.propsDefaults = /* @__PURE__ */ Object.create(null);\n setFullProps(instance, rawProps, props, attrs);\n for (const key in instance.propsOptions[0]) {\n if (!(key in props)) {\n props[key] = void 0;\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateProps(rawProps || {}, props, instance);\n }\n if (isStateful) {\n instance.props = isSSR ? props : shallowReactive(props);\n } else {\n if (!instance.type.props) {\n instance.props = attrs;\n } else {\n instance.props = props;\n }\n }\n instance.attrs = attrs;\n}\nfunction isInHmrContext(instance) {\n while (instance) {\n if (instance.type.__hmrId)\n return true;\n instance = instance.parent;\n }\n}\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\n const {\n props,\n attrs,\n vnode: { patchFlag }\n } = instance;\n const rawCurrentProps = toRaw(props);\n const [options] = instance.propsOptions;\n let hasAttrsChanged = false;\n if (\n // always force full diff in dev\n // - #1942 if hmr is enabled with sfc component\n // - vite#872 non-sfc component used by sfc component\n !(!!(process.env.NODE_ENV !== \"production\") && isInHmrContext(instance)) && (optimized || patchFlag > 0) && !(patchFlag & 16)\n ) {\n if (patchFlag & 8) {\n const propsToUpdate = instance.vnode.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n let key = propsToUpdate[i];\n if (isEmitListener(instance.emitsOptions, key)) {\n continue;\n }\n const value = rawProps[key];\n if (options) {\n if (hasOwn(attrs, key)) {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n } else {\n const camelizedKey = camelize(key);\n props[camelizedKey] = resolvePropValue(\n options,\n rawCurrentProps,\n camelizedKey,\n value,\n instance,\n false\n );\n }\n } else {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n } else {\n if (setFullProps(instance, rawProps, props, attrs)) {\n hasAttrsChanged = true;\n }\n let kebabKey;\n for (const key in rawCurrentProps) {\n if (!rawProps || // for camelCase\n !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case\n // and converted to camelCase (#955)\n ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) {\n if (options) {\n if (rawPrevProps && // for camelCase\n (rawPrevProps[key] !== void 0 || // for kebab-case\n rawPrevProps[kebabKey] !== void 0)) {\n props[key] = resolvePropValue(\n options,\n rawCurrentProps,\n key,\n void 0,\n instance,\n true\n );\n }\n } else {\n delete props[key];\n }\n }\n }\n if (attrs !== rawCurrentProps) {\n for (const key in attrs) {\n if (!rawProps || !hasOwn(rawProps, key) && true) {\n delete attrs[key];\n hasAttrsChanged = true;\n }\n }\n }\n }\n if (hasAttrsChanged) {\n trigger(instance, \"set\", \"$attrs\");\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateProps(rawProps || {}, props, instance);\n }\n}\nfunction setFullProps(instance, rawProps, props, attrs) {\n const [options, needCastKeys] = instance.propsOptions;\n let hasAttrsChanged = false;\n let rawCastValues;\n if (rawProps) {\n for (let key in rawProps) {\n if (isReservedProp(key)) {\n continue;\n }\n const value = rawProps[key];\n let camelKey;\n if (options && hasOwn(options, camelKey = camelize(key))) {\n if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n props[camelKey] = value;\n } else {\n (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n }\n } else if (!isEmitListener(instance.emitsOptions, key)) {\n if (!(key in attrs) || value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n if (needCastKeys) {\n const rawCurrentProps = toRaw(props);\n const castValues = rawCastValues || EMPTY_OBJ;\n for (let i = 0; i < needCastKeys.length; i++) {\n const key = needCastKeys[i];\n props[key] = resolvePropValue(\n options,\n rawCurrentProps,\n key,\n castValues[key],\n instance,\n !hasOwn(castValues, key)\n );\n }\n }\n return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\n const opt = options[key];\n if (opt != null) {\n const hasDefault = hasOwn(opt, \"default\");\n if (hasDefault && value === void 0) {\n const defaultValue = opt.default;\n if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) {\n const { propsDefaults } = instance;\n if (key in propsDefaults) {\n value = propsDefaults[key];\n } else {\n setCurrentInstance(instance);\n value = propsDefaults[key] = defaultValue.call(\n null,\n props\n );\n unsetCurrentInstance();\n }\n } else {\n value = defaultValue;\n }\n }\n if (opt[0 /* shouldCast */]) {\n if (isAbsent && !hasDefault) {\n value = false;\n } else if (opt[1 /* shouldCastTrue */] && (value === \"\" || value === hyphenate(key))) {\n value = true;\n }\n }\n }\n return value;\n}\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.propsCache;\n const cached = cache.get(comp);\n if (cached) {\n return cached;\n }\n const raw = comp.props;\n const normalized = {};\n const needCastKeys = [];\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendProps = (raw2) => {\n hasExtends = true;\n const [props, keys] = normalizePropsOptions(raw2, appContext, true);\n extend(normalized, props);\n if (keys)\n needCastKeys.push(...keys);\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendProps);\n }\n if (comp.extends) {\n extendProps(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendProps);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, EMPTY_ARR);\n }\n return EMPTY_ARR;\n }\n if (isArray(raw)) {\n for (let i = 0; i < raw.length; i++) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isString(raw[i])) {\n warn$1(`props must be strings when using array syntax.`, raw[i]);\n }\n const normalizedKey = camelize(raw[i]);\n if (validatePropName(normalizedKey)) {\n normalized[normalizedKey] = EMPTY_OBJ;\n }\n }\n } else if (raw) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(raw)) {\n warn$1(`invalid props options`, raw);\n }\n for (const key in raw) {\n const normalizedKey = camelize(key);\n if (validatePropName(normalizedKey)) {\n const opt = raw[key];\n const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt);\n if (prop) {\n const booleanIndex = getTypeIndex(Boolean, prop.type);\n const stringIndex = getTypeIndex(String, prop.type);\n prop[0 /* shouldCast */] = booleanIndex > -1;\n prop[1 /* shouldCastTrue */] = stringIndex < 0 || booleanIndex < stringIndex;\n if (booleanIndex > -1 || hasOwn(prop, \"default\")) {\n needCastKeys.push(normalizedKey);\n }\n }\n }\n }\n }\n const res = [normalized, needCastKeys];\n if (isObject(comp)) {\n cache.set(comp, res);\n }\n return res;\n}\nfunction validatePropName(key) {\n if (key[0] !== \"$\") {\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Invalid prop name: \"${key}\" is a reserved property.`);\n }\n return false;\n}\nfunction getType(ctor) {\n const match = ctor && ctor.toString().match(/^\\s*(function|class) (\\w+)/);\n return match ? match[2] : ctor === null ? \"null\" : \"\";\n}\nfunction isSameType(a, b) {\n return getType(a) === getType(b);\n}\nfunction getTypeIndex(type, expectedTypes) {\n if (isArray(expectedTypes)) {\n return expectedTypes.findIndex((t) => isSameType(t, type));\n } else if (isFunction(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1;\n }\n return -1;\n}\nfunction validateProps(rawProps, props, instance) {\n const resolvedValues = toRaw(props);\n const options = instance.propsOptions[0];\n for (const key in options) {\n let opt = options[key];\n if (opt == null)\n continue;\n validateProp(\n key,\n resolvedValues[key],\n opt,\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(resolvedValues) : resolvedValues,\n !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key))\n );\n }\n}\nfunction validateProp(name, value, prop, props, isAbsent) {\n const { type, required, validator, skipCheck } = prop;\n if (required && isAbsent) {\n warn$1('Missing required prop: \"' + name + '\"');\n return;\n }\n if (value == null && !required) {\n return;\n }\n if (type != null && type !== true && !skipCheck) {\n let isValid = false;\n const types = isArray(type) ? type : [type];\n const expectedTypes = [];\n for (let i = 0; i < types.length && !isValid; i++) {\n const { valid, expectedType } = assertType(value, types[i]);\n expectedTypes.push(expectedType || \"\");\n isValid = valid;\n }\n if (!isValid) {\n warn$1(getInvalidTypeMessage(name, value, expectedTypes));\n return;\n }\n }\n if (validator && !validator(value, props)) {\n warn$1('Invalid prop: custom validator check failed for prop \"' + name + '\".');\n }\n}\nconst isSimpleType = /* @__PURE__ */ makeMap(\n \"String,Number,Boolean,Function,Symbol,BigInt\"\n);\nfunction assertType(value, type) {\n let valid;\n const expectedType = getType(type);\n if (isSimpleType(expectedType)) {\n const t = typeof value;\n valid = t === expectedType.toLowerCase();\n if (!valid && t === \"object\") {\n valid = value instanceof type;\n }\n } else if (expectedType === \"Object\") {\n valid = isObject(value);\n } else if (expectedType === \"Array\") {\n valid = isArray(value);\n } else if (expectedType === \"null\") {\n valid = value === null;\n } else {\n valid = value instanceof type;\n }\n return {\n valid,\n expectedType\n };\n}\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n if (expectedTypes.length === 0) {\n return `Prop type [] for prop \"${name}\" won't match anything. Did you mean to use type Array instead?`;\n }\n let message = `Invalid prop: type check failed for prop \"${name}\". Expected ${expectedTypes.map(capitalize).join(\" | \")}`;\n const expectedType = expectedTypes[0];\n const receivedType = toRawType(value);\n const expectedValue = styleValue(value, expectedType);\n const receivedValue = styleValue(value, receivedType);\n if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) {\n message += ` with value ${expectedValue}`;\n }\n message += `, got ${receivedType} `;\n if (isExplicable(receivedType)) {\n message += `with value ${receivedValue}.`;\n }\n return message;\n}\nfunction styleValue(value, type) {\n if (type === \"String\") {\n return `\"${value}\"`;\n } else if (type === \"Number\") {\n return `${Number(value)}`;\n } else {\n return `${value}`;\n }\n}\nfunction isExplicable(type) {\n const explicitTypes = [\"string\", \"number\", \"boolean\"];\n return explicitTypes.some((elem) => type.toLowerCase() === elem);\n}\nfunction isBoolean(...args) {\n return args.some((elem) => elem.toLowerCase() === \"boolean\");\n}\n\nconst isInternalKey = (key) => key[0] === \"_\" || key === \"$stable\";\nconst normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n if (rawSlot._n) {\n return rawSlot;\n }\n const normalized = withCtx((...args) => {\n if (!!(process.env.NODE_ENV !== \"production\") && currentInstance) {\n warn$1(\n `Slot \"${key}\" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`\n );\n }\n return normalizeSlotValue(rawSlot(...args));\n }, ctx);\n normalized._c = false;\n return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\n const ctx = rawSlots._ctx;\n for (const key in rawSlots) {\n if (isInternalKey(key))\n continue;\n const value = rawSlots[key];\n if (isFunction(value)) {\n slots[key] = normalizeSlot(key, value, ctx);\n } else if (value != null) {\n if (!!(process.env.NODE_ENV !== \"production\") && true) {\n warn$1(\n `Non-function value encountered for slot \"${key}\". Prefer function slots for better performance.`\n );\n }\n const normalized = normalizeSlotValue(value);\n slots[key] = () => normalized;\n }\n }\n};\nconst normalizeVNodeSlots = (instance, children) => {\n if (!!(process.env.NODE_ENV !== \"production\") && !isKeepAlive(instance.vnode) && true) {\n warn$1(\n `Non-function value encountered for default slot. Prefer function slots for better performance.`\n );\n }\n const normalized = normalizeSlotValue(children);\n instance.slots.default = () => normalized;\n};\nconst initSlots = (instance, children) => {\n if (instance.vnode.shapeFlag & 32) {\n const type = children._;\n if (type) {\n instance.slots = toRaw(children);\n def(children, \"_\", type);\n } else {\n normalizeObjectSlots(\n children,\n instance.slots = {});\n }\n } else {\n instance.slots = {};\n if (children) {\n normalizeVNodeSlots(instance, children);\n }\n }\n def(instance.slots, InternalObjectKey, 1);\n};\nconst updateSlots = (instance, children, optimized) => {\n const { vnode, slots } = instance;\n let needDeletionCheck = true;\n let deletionComparisonTarget = EMPTY_OBJ;\n if (vnode.shapeFlag & 32) {\n const type = children._;\n if (type) {\n if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n extend(slots, children);\n trigger(instance, \"set\", \"$slots\");\n } else if (optimized && type === 1) {\n needDeletionCheck = false;\n } else {\n extend(slots, children);\n if (!optimized && type === 1) {\n delete slots._;\n }\n }\n } else {\n needDeletionCheck = !children.$stable;\n normalizeObjectSlots(children, slots);\n }\n deletionComparisonTarget = children;\n } else if (children) {\n normalizeVNodeSlots(instance, children);\n deletionComparisonTarget = { default: 1 };\n }\n if (needDeletionCheck) {\n for (const key in slots) {\n if (!isInternalKey(key) && deletionComparisonTarget[key] == null) {\n delete slots[key];\n }\n }\n }\n};\n\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n if (isArray(rawRef)) {\n rawRef.forEach(\n (r, i) => setRef(\n r,\n oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef),\n parentSuspense,\n vnode,\n isUnmount\n )\n );\n return;\n }\n if (isAsyncWrapper(vnode) && !isUnmount) {\n return;\n }\n const refValue = vnode.shapeFlag & 4 ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el;\n const value = isUnmount ? null : refValue;\n const { i: owner, r: ref } = rawRef;\n if (!!(process.env.NODE_ENV !== \"production\") && !owner) {\n warn$1(\n `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.`\n );\n return;\n }\n const oldRef = oldRawRef && oldRawRef.r;\n const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;\n const setupState = owner.setupState;\n if (oldRef != null && oldRef !== ref) {\n if (isString(oldRef)) {\n refs[oldRef] = null;\n if (hasOwn(setupState, oldRef)) {\n setupState[oldRef] = null;\n }\n } else if (isRef(oldRef)) {\n oldRef.value = null;\n }\n }\n if (isFunction(ref)) {\n callWithErrorHandling(ref, owner, 12, [value, refs]);\n } else {\n const _isString = isString(ref);\n const _isRef = isRef(ref);\n if (_isString || _isRef) {\n const doSet = () => {\n if (rawRef.f) {\n const existing = _isString ? hasOwn(setupState, ref) ? setupState[ref] : refs[ref] : ref.value;\n if (isUnmount) {\n isArray(existing) && remove(existing, refValue);\n } else {\n if (!isArray(existing)) {\n if (_isString) {\n refs[ref] = [refValue];\n if (hasOwn(setupState, ref)) {\n setupState[ref] = refs[ref];\n }\n } else {\n ref.value = [refValue];\n if (rawRef.k)\n refs[rawRef.k] = ref.value;\n }\n } else if (!existing.includes(refValue)) {\n existing.push(refValue);\n }\n }\n } else if (_isString) {\n refs[ref] = value;\n if (hasOwn(setupState, ref)) {\n setupState[ref] = value;\n }\n } else if (_isRef) {\n ref.value = value;\n if (rawRef.k)\n refs[rawRef.k] = value;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n }\n };\n if (value) {\n doSet.id = -1;\n queuePostRenderEffect(doSet, parentSuspense);\n } else {\n doSet();\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n }\n }\n}\n\nlet hasMismatch = false;\nconst isSVGContainer = (container) => container.namespaceURI.includes(\"svg\") && container.tagName !== \"foreignObject\";\nconst isMathMLContainer = (container) => container.namespaceURI.includes(\"MathML\");\nconst getContainerType = (container) => {\n if (isSVGContainer(container))\n return \"svg\";\n if (isMathMLContainer(container))\n return \"mathml\";\n return void 0;\n};\nconst isComment = (node) => node.nodeType === 8 /* COMMENT */;\nfunction createHydrationFunctions(rendererInternals) {\n const {\n mt: mountComponent,\n p: patch,\n o: {\n patchProp,\n createText,\n nextSibling,\n parentNode,\n remove,\n insert,\n createComment\n }\n } = rendererInternals;\n const hydrate = (vnode, container) => {\n if (!container.hasChildNodes()) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Attempting to hydrate existing markup but container is empty. Performing full mount instead.`\n );\n patch(null, vnode, container);\n flushPostFlushCbs();\n container._vnode = vnode;\n return;\n }\n hasMismatch = false;\n hydrateNode(container.firstChild, vnode, null, null, null);\n flushPostFlushCbs();\n container._vnode = vnode;\n if (hasMismatch && true) {\n console.error(`Hydration completed but contains mismatches.`);\n }\n };\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n const isFragmentStart = isComment(node) && node.data === \"[\";\n const onMismatch = () => handleMismatch(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n isFragmentStart\n );\n const { type, ref, shapeFlag, patchFlag } = vnode;\n let domType = node.nodeType;\n vnode.el = node;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n if (!(\"__vnode\" in node)) {\n Object.defineProperty(node, \"__vnode\", {\n value: vnode,\n enumerable: false\n });\n }\n if (!(\"__vueParentComponent\" in node)) {\n Object.defineProperty(node, \"__vueParentComponent\", {\n value: parentComponent,\n enumerable: false\n });\n }\n }\n if (patchFlag === -2) {\n optimized = false;\n vnode.dynamicChildren = null;\n }\n let nextNode = null;\n switch (type) {\n case Text:\n if (domType !== 3 /* TEXT */) {\n if (vnode.children === \"\") {\n insert(vnode.el = createText(\"\"), parentNode(node), node);\n nextNode = node;\n } else {\n nextNode = onMismatch();\n }\n } else {\n if (node.data !== vnode.children) {\n hasMismatch = true;\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration text mismatch in`,\n node.parentNode,\n `\n - rendered on server: ${JSON.stringify(\n node.data\n )}\n - expected on client: ${JSON.stringify(vnode.children)}`\n );\n node.data = vnode.children;\n }\n nextNode = nextSibling(node);\n }\n break;\n case Comment:\n if (isTemplateNode(node)) {\n nextNode = nextSibling(node);\n replaceNode(\n vnode.el = node.content.firstChild,\n node,\n parentComponent\n );\n } else if (domType !== 8 /* COMMENT */ || isFragmentStart) {\n nextNode = onMismatch();\n } else {\n nextNode = nextSibling(node);\n }\n break;\n case Static:\n if (isFragmentStart) {\n node = nextSibling(node);\n domType = node.nodeType;\n }\n if (domType === 1 /* ELEMENT */ || domType === 3 /* TEXT */) {\n nextNode = node;\n const needToAdoptContent = !vnode.children.length;\n for (let i = 0; i < vnode.staticCount; i++) {\n if (needToAdoptContent)\n vnode.children += nextNode.nodeType === 1 /* ELEMENT */ ? nextNode.outerHTML : nextNode.data;\n if (i === vnode.staticCount - 1) {\n vnode.anchor = nextNode;\n }\n nextNode = nextSibling(nextNode);\n }\n return isFragmentStart ? nextSibling(nextNode) : nextNode;\n } else {\n onMismatch();\n }\n break;\n case Fragment:\n if (!isFragmentStart) {\n nextNode = onMismatch();\n } else {\n nextNode = hydrateFragment(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n break;\n default:\n if (shapeFlag & 1) {\n if ((domType !== 1 /* ELEMENT */ || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) {\n nextNode = onMismatch();\n } else {\n nextNode = hydrateElement(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n } else if (shapeFlag & 6) {\n vnode.slotScopeIds = slotScopeIds;\n const container = parentNode(node);\n if (isFragmentStart) {\n nextNode = locateClosingAnchor(node);\n } else if (isComment(node) && node.data === \"teleport start\") {\n nextNode = locateClosingAnchor(node, node.data, \"teleport end\");\n } else {\n nextNode = nextSibling(node);\n }\n mountComponent(\n vnode,\n container,\n null,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n optimized\n );\n if (isAsyncWrapper(vnode)) {\n let subTree;\n if (isFragmentStart) {\n subTree = createVNode(Fragment);\n subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;\n } else {\n subTree = node.nodeType === 3 ? createTextVNode(\"\") : createVNode(\"div\");\n }\n subTree.el = node;\n vnode.component.subTree = subTree;\n }\n } else if (shapeFlag & 64) {\n if (domType !== 8 /* COMMENT */) {\n nextNode = onMismatch();\n } else {\n nextNode = vnode.type.hydrate(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized,\n rendererInternals,\n hydrateChildren\n );\n }\n } else if (shapeFlag & 128) {\n nextNode = vnode.type.hydrate(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n getContainerType(parentNode(node)),\n slotScopeIds,\n optimized,\n rendererInternals,\n hydrateNode\n );\n } else if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) {\n warn$1(\"Invalid HostVNode type:\", type, `(${typeof type})`);\n }\n }\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode);\n }\n return nextNode;\n };\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;\n const forcePatch = type === \"input\" || type === \"option\";\n if (!!(process.env.NODE_ENV !== \"production\") || forcePatch || patchFlag !== -1) {\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n }\n let needCallTransitionHooks = false;\n if (isTemplateNode(el)) {\n needCallTransitionHooks = needTransition(parentSuspense, transition) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;\n const content = el.content.firstChild;\n if (needCallTransitionHooks) {\n transition.beforeEnter(content);\n }\n replaceNode(content, el, parentComponent);\n vnode.el = el = content;\n }\n if (shapeFlag & 16 && // skip if element has innerHTML / textContent\n !(props && (props.innerHTML || props.textContent))) {\n let next = hydrateChildren(\n el.firstChild,\n vnode,\n el,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n let hasWarned = false;\n while (next) {\n hasMismatch = true;\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n warn$1(\n `Hydration children mismatch on`,\n el,\n `\nServer rendered element contains more child nodes than client vdom.`\n );\n hasWarned = true;\n }\n const cur = next;\n next = next.nextSibling;\n remove(cur);\n }\n } else if (shapeFlag & 8) {\n if (el.textContent !== vnode.children) {\n hasMismatch = true;\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration text content mismatch on`,\n el,\n `\n - rendered on server: ${el.textContent}\n - expected on client: ${vnode.children}`\n );\n el.textContent = vnode.children;\n }\n }\n if (props) {\n if (!!(process.env.NODE_ENV !== \"production\") || forcePatch || !optimized || patchFlag & (16 | 32)) {\n for (const key in props) {\n if (!!(process.env.NODE_ENV !== \"production\") && propHasMismatch(el, key, props[key])) {\n hasMismatch = true;\n }\n if (forcePatch && (key.endsWith(\"value\") || key === \"indeterminate\") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers\n key[0] === \".\") {\n patchProp(\n el,\n key,\n null,\n props[key],\n void 0,\n void 0,\n parentComponent\n );\n }\n }\n } else if (props.onClick) {\n patchProp(\n el,\n \"onClick\",\n null,\n props.onClick,\n void 0,\n void 0,\n parentComponent\n );\n }\n }\n let vnodeHooks;\n if (vnodeHooks = props && props.onVnodeBeforeMount) {\n invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n }\n if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {\n queueEffectWithSuspense(() => {\n vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n needCallTransitionHooks && transition.enter(el);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n }, parentSuspense);\n }\n }\n return el.nextSibling;\n };\n const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!parentVNode.dynamicChildren;\n const children = parentVNode.children;\n const l = children.length;\n let hasWarned = false;\n for (let i = 0; i < l; i++) {\n const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);\n if (node) {\n node = hydrateNode(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n } else if (vnode.type === Text && !vnode.children) {\n continue;\n } else {\n hasMismatch = true;\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n warn$1(\n `Hydration children mismatch on`,\n container,\n `\nServer rendered element contains fewer child nodes than client vdom.`\n );\n hasWarned = true;\n }\n patch(\n null,\n vnode,\n container,\n null,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n slotScopeIds\n );\n }\n }\n return node;\n };\n const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n }\n const container = parentNode(node);\n const next = hydrateChildren(\n nextSibling(node),\n vnode,\n container,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n if (next && isComment(next) && next.data === \"]\") {\n return nextSibling(vnode.anchor = next);\n } else {\n hasMismatch = true;\n insert(vnode.anchor = createComment(`]`), container, next);\n return next;\n }\n };\n const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n hasMismatch = true;\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration node mismatch:\n- rendered on server:`,\n node,\n node.nodeType === 3 /* TEXT */ ? `(text)` : isComment(node) && node.data === \"[\" ? `(start of fragment)` : ``,\n `\n- expected on client:`,\n vnode.type\n );\n vnode.el = null;\n if (isFragment) {\n const end = locateClosingAnchor(node);\n while (true) {\n const next2 = nextSibling(node);\n if (next2 && next2 !== end) {\n remove(next2);\n } else {\n break;\n }\n }\n }\n const next = nextSibling(node);\n const container = parentNode(node);\n remove(node);\n patch(\n null,\n vnode,\n container,\n next,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n slotScopeIds\n );\n return next;\n };\n const locateClosingAnchor = (node, open = \"[\", close = \"]\") => {\n let match = 0;\n while (node) {\n node = nextSibling(node);\n if (node && isComment(node)) {\n if (node.data === open)\n match++;\n if (node.data === close) {\n if (match === 0) {\n return nextSibling(node);\n } else {\n match--;\n }\n }\n }\n }\n return node;\n };\n const replaceNode = (newNode, oldNode, parentComponent) => {\n const parentNode2 = oldNode.parentNode;\n if (parentNode2) {\n parentNode2.replaceChild(newNode, oldNode);\n }\n let parent = parentComponent;\n while (parent) {\n if (parent.vnode.el === oldNode) {\n parent.vnode.el = parent.subTree.el = newNode;\n }\n parent = parent.parent;\n }\n };\n const isTemplateNode = (node) => {\n return node.nodeType === 1 /* ELEMENT */ && node.tagName.toLowerCase() === \"template\";\n };\n return [hydrate, hydrateNode];\n}\nfunction propHasMismatch(el, key, clientValue) {\n let mismatchType;\n let mismatchKey;\n let actual;\n let expected;\n if (key === \"class\") {\n actual = toClassSet(el.getAttribute(\"class\") || \"\");\n expected = toClassSet(normalizeClass(clientValue));\n if (!isSetEqual(actual, expected)) {\n mismatchType = mismatchKey = `class`;\n }\n } else if (key === \"style\") {\n actual = el.getAttribute(\"style\");\n expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));\n if (actual !== expected) {\n mismatchType = mismatchKey = \"style\";\n }\n } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {\n actual = el.hasAttribute(key) && el.getAttribute(key);\n expected = isBooleanAttr(key) ? includeBooleanAttr(clientValue) ? \"\" : false : clientValue == null ? false : String(clientValue);\n if (actual !== expected) {\n mismatchType = `attribute`;\n mismatchKey = key;\n }\n }\n if (mismatchType) {\n const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}=\"${v}\"`;\n warn$1(\n `Hydration ${mismatchType} mismatch on`,\n el,\n `\n - rendered on server: ${format(actual)}\n - expected on client: ${format(expected)}\n Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.\n You should fix the source of the mismatch.`\n );\n return true;\n }\n return false;\n}\nfunction toClassSet(str) {\n return new Set(str.trim().split(/\\s+/));\n}\nfunction isSetEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const s of a) {\n if (!b.has(s)) {\n return false;\n }\n }\n return true;\n}\n\nlet supported;\nlet perf;\nfunction startMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n perf.mark(`vue-${type}-${instance.uid}`);\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction endMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n const startTag = `vue-${type}-${instance.uid}`;\n const endTag = startTag + `:end`;\n perf.mark(endTag);\n perf.measure(\n `<${formatComponentName(instance, instance.type)}> ${type}`,\n startTag,\n endTag\n );\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction isSupported() {\n if (supported !== void 0) {\n return supported;\n }\n if (typeof window !== \"undefined\" && window.performance) {\n supported = true;\n perf = window.performance;\n } else {\n supported = false;\n }\n return supported;\n}\n\nfunction initFeatureFlags() {\n const needWarn = [];\n if (typeof __VUE_OPTIONS_API__ !== \"boolean\") {\n !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_OPTIONS_API__`);\n getGlobalThis().__VUE_OPTIONS_API__ = true;\n }\n if (typeof __VUE_PROD_DEVTOOLS__ !== \"boolean\") {\n !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_PROD_DEVTOOLS__`);\n getGlobalThis().__VUE_PROD_DEVTOOLS__ = false;\n }\n if (typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ !== \"boolean\") {\n !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_PROD_HYDRATION_MISMATCH_DETAILS__`);\n getGlobalThis().__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ = false;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && needWarn.length) {\n const multi = needWarn.length > 1;\n console.warn(\n `Feature flag${multi ? `s` : ``} ${needWarn.join(\", \")} ${multi ? `are` : `is`} not explicitly defined. You are running the esm-bundler build of Vue, which expects these compile-time feature flags to be globally injected via the bundler config in order to get better tree-shaking in the production bundle.\n\nFor more details, see https://link.vuejs.org/feature-flags.`\n );\n }\n}\n\nconst queuePostRenderEffect = queueEffectWithSuspense ;\nfunction createRenderer(options) {\n return baseCreateRenderer(options);\n}\nfunction createHydrationRenderer(options) {\n return baseCreateRenderer(options, createHydrationFunctions);\n}\nfunction baseCreateRenderer(options, createHydrationFns) {\n {\n initFeatureFlags();\n }\n const target = getGlobalThis();\n target.__VUE__ = true;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n setDevtoolsHook$1(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);\n }\n const {\n insert: hostInsert,\n remove: hostRemove,\n patchProp: hostPatchProp,\n createElement: hostCreateElement,\n createText: hostCreateText,\n createComment: hostCreateComment,\n setText: hostSetText,\n setElementText: hostSetElementText,\n parentNode: hostParentNode,\n nextSibling: hostNextSibling,\n setScopeId: hostSetScopeId = NOOP,\n insertStaticContent: hostInsertStaticContent\n } = options;\n const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!(process.env.NODE_ENV !== \"production\") && isHmrUpdating ? false : !!n2.dynamicChildren) => {\n if (n1 === n2) {\n return;\n }\n if (n1 && !isSameVNodeType(n1, n2)) {\n anchor = getNextHostNode(n1);\n unmount(n1, parentComponent, parentSuspense, true);\n n1 = null;\n }\n if (n2.patchFlag === -2) {\n optimized = false;\n n2.dynamicChildren = null;\n }\n const { type, ref, shapeFlag } = n2;\n switch (type) {\n case Text:\n processText(n1, n2, container, anchor);\n break;\n case Comment:\n processCommentNode(n1, n2, container, anchor);\n break;\n case Static:\n if (n1 == null) {\n mountStaticNode(n2, container, anchor, namespace);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n patchStaticNode(n1, n2, container, namespace);\n }\n break;\n case Fragment:\n processFragment(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n break;\n default:\n if (shapeFlag & 1) {\n processElement(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else if (shapeFlag & 6) {\n processComponent(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else if (shapeFlag & 64) {\n type.process(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n internals\n );\n } else if (shapeFlag & 128) {\n type.process(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n internals\n );\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid VNode type:\", type, `(${typeof type})`);\n }\n }\n if (ref != null && parentComponent) {\n setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n }\n };\n const processText = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert(\n n2.el = hostCreateText(n2.children),\n container,\n anchor\n );\n } else {\n const el = n2.el = n1.el;\n if (n2.children !== n1.children) {\n hostSetText(el, n2.children);\n }\n }\n };\n const processCommentNode = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert(\n n2.el = hostCreateComment(n2.children || \"\"),\n container,\n anchor\n );\n } else {\n n2.el = n1.el;\n }\n };\n const mountStaticNode = (n2, container, anchor, namespace) => {\n [n2.el, n2.anchor] = hostInsertStaticContent(\n n2.children,\n container,\n anchor,\n namespace,\n n2.el,\n n2.anchor\n );\n };\n const patchStaticNode = (n1, n2, container, namespace) => {\n if (n2.children !== n1.children) {\n const anchor = hostNextSibling(n1.anchor);\n removeStaticNode(n1);\n [n2.el, n2.anchor] = hostInsertStaticContent(\n n2.children,\n container,\n anchor,\n namespace\n );\n } else {\n n2.el = n1.el;\n n2.anchor = n1.anchor;\n }\n };\n const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostInsert(el, container, nextSibling);\n el = next;\n }\n hostInsert(anchor, container, nextSibling);\n };\n const removeStaticNode = ({ el, anchor }) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostRemove(el);\n el = next;\n }\n hostRemove(anchor);\n };\n const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n if (n2.type === \"svg\") {\n namespace = \"svg\";\n } else if (n2.type === \"math\") {\n namespace = \"mathml\";\n }\n if (n1 == null) {\n mountElement(\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else {\n patchElement(\n n1,\n n2,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n };\n const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n let el;\n let vnodeHook;\n const { props, shapeFlag, transition, dirs } = vnode;\n el = vnode.el = hostCreateElement(\n vnode.type,\n namespace,\n props && props.is,\n props\n );\n if (shapeFlag & 8) {\n hostSetElementText(el, vnode.children);\n } else if (shapeFlag & 16) {\n mountChildren(\n vnode.children,\n el,\n null,\n parentComponent,\n parentSuspense,\n resolveChildrenNamespace(vnode, namespace),\n slotScopeIds,\n optimized\n );\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n }\n setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n if (props) {\n for (const key in props) {\n if (key !== \"value\" && !isReservedProp(key)) {\n hostPatchProp(\n el,\n key,\n null,\n props[key],\n namespace,\n vnode.children,\n parentComponent,\n parentSuspense,\n unmountChildren\n );\n }\n }\n if (\"value\" in props) {\n hostPatchProp(el, \"value\", null, props.value, namespace);\n }\n if (vnodeHook = props.onVnodeBeforeMount) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n Object.defineProperty(el, \"__vnode\", {\n value: vnode,\n enumerable: false\n });\n Object.defineProperty(el, \"__vueParentComponent\", {\n value: parentComponent,\n enumerable: false\n });\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n }\n const needCallTransitionHooks = needTransition(parentSuspense, transition);\n if (needCallTransitionHooks) {\n transition.beforeEnter(el);\n }\n hostInsert(el, container, anchor);\n if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n needCallTransitionHooks && transition.enter(el);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n }, parentSuspense);\n }\n };\n const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n if (scopeId) {\n hostSetScopeId(el, scopeId);\n }\n if (slotScopeIds) {\n for (let i = 0; i < slotScopeIds.length; i++) {\n hostSetScopeId(el, slotScopeIds[i]);\n }\n }\n if (parentComponent) {\n let subTree = parentComponent.subTree;\n if (!!(process.env.NODE_ENV !== \"production\") && subTree.patchFlag > 0 && subTree.patchFlag & 2048) {\n subTree = filterSingleRoot(subTree.children) || subTree;\n }\n if (vnode === subTree) {\n const parentVNode = parentComponent.vnode;\n setScopeId(\n el,\n parentVNode,\n parentVNode.scopeId,\n parentVNode.slotScopeIds,\n parentComponent.parent\n );\n }\n }\n };\n const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => {\n for (let i = start; i < children.length; i++) {\n const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);\n patch(\n null,\n child,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n };\n const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n const el = n2.el = n1.el;\n let { patchFlag, dynamicChildren, dirs } = n2;\n patchFlag |= n1.patchFlag & 16;\n const oldProps = n1.props || EMPTY_OBJ;\n const newProps = n2.props || EMPTY_OBJ;\n let vnodeHook;\n parentComponent && toggleRecurse(parentComponent, false);\n if (vnodeHook = newProps.onVnodeBeforeUpdate) {\n invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n }\n if (dirs) {\n invokeDirectiveHook(n2, n1, parentComponent, \"beforeUpdate\");\n }\n parentComponent && toggleRecurse(parentComponent, true);\n if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n if (dynamicChildren) {\n patchBlockChildren(\n n1.dynamicChildren,\n dynamicChildren,\n el,\n parentComponent,\n parentSuspense,\n resolveChildrenNamespace(n2, namespace),\n slotScopeIds\n );\n if (!!(process.env.NODE_ENV !== \"production\")) {\n traverseStaticChildren(n1, n2);\n }\n } else if (!optimized) {\n patchChildren(\n n1,\n n2,\n el,\n null,\n parentComponent,\n parentSuspense,\n resolveChildrenNamespace(n2, namespace),\n slotScopeIds,\n false\n );\n }\n if (patchFlag > 0) {\n if (patchFlag & 16) {\n patchProps(\n el,\n n2,\n oldProps,\n newProps,\n parentComponent,\n parentSuspense,\n namespace\n );\n } else {\n if (patchFlag & 2) {\n if (oldProps.class !== newProps.class) {\n hostPatchProp(el, \"class\", null, newProps.class, namespace);\n }\n }\n if (patchFlag & 4) {\n hostPatchProp(el, \"style\", oldProps.style, newProps.style, namespace);\n }\n if (patchFlag & 8) {\n const propsToUpdate = n2.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n const key = propsToUpdate[i];\n const prev = oldProps[key];\n const next = newProps[key];\n if (next !== prev || key === \"value\") {\n hostPatchProp(\n el,\n key,\n prev,\n next,\n namespace,\n n1.children,\n parentComponent,\n parentSuspense,\n unmountChildren\n );\n }\n }\n }\n }\n if (patchFlag & 1) {\n if (n1.children !== n2.children) {\n hostSetElementText(el, n2.children);\n }\n }\n } else if (!optimized && dynamicChildren == null) {\n patchProps(\n el,\n n2,\n oldProps,\n newProps,\n parentComponent,\n parentSuspense,\n namespace\n );\n }\n if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n dirs && invokeDirectiveHook(n2, n1, parentComponent, \"updated\");\n }, parentSuspense);\n }\n };\n const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => {\n for (let i = 0; i < newChildren.length; i++) {\n const oldVNode = oldChildren[i];\n const newVNode = newChildren[i];\n const container = (\n // oldVNode may be an errored async setup() component inside Suspense\n // which will not have a mounted element\n oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent\n // of the Fragment itself so it can move its children.\n (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement\n // which also requires the correct parent container\n !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.\n oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (\n // In other cases, the parent container is not actually used so we\n // just pass the block element here to avoid a DOM parentNode call.\n fallbackContainer\n )\n );\n patch(\n oldVNode,\n newVNode,\n container,\n null,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n true\n );\n }\n };\n const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, namespace) => {\n if (oldProps !== newProps) {\n if (oldProps !== EMPTY_OBJ) {\n for (const key in oldProps) {\n if (!isReservedProp(key) && !(key in newProps)) {\n hostPatchProp(\n el,\n key,\n oldProps[key],\n null,\n namespace,\n vnode.children,\n parentComponent,\n parentSuspense,\n unmountChildren\n );\n }\n }\n }\n for (const key in newProps) {\n if (isReservedProp(key))\n continue;\n const next = newProps[key];\n const prev = oldProps[key];\n if (next !== prev && key !== \"value\") {\n hostPatchProp(\n el,\n key,\n prev,\n next,\n namespace,\n vnode.children,\n parentComponent,\n parentSuspense,\n unmountChildren\n );\n }\n }\n if (\"value\" in newProps) {\n hostPatchProp(el, \"value\", oldProps.value, newProps.value, namespace);\n }\n }\n };\n const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(\"\");\n const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(\"\");\n let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n if (!!(process.env.NODE_ENV !== \"production\") && // #5523 dev root fragment may inherit directives\n (isHmrUpdating || patchFlag & 2048)) {\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n }\n if (n1 == null) {\n hostInsert(fragmentStartAnchor, container, anchor);\n hostInsert(fragmentEndAnchor, container, anchor);\n mountChildren(\n n2.children,\n container,\n fragmentEndAnchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else {\n if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result\n // of renderSlot() with no valid children\n n1.dynamicChildren) {\n patchBlockChildren(\n n1.dynamicChildren,\n dynamicChildren,\n container,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds\n );\n if (!!(process.env.NODE_ENV !== \"production\")) {\n traverseStaticChildren(n1, n2);\n } else if (\n // #2080 if the stable fragment has a key, it's a <template v-for> that may\n // get moved around. Make sure all root level vnodes inherit el.\n // #2134 or if it's a component root, it may also get moved around\n // as the component is being moved.\n n2.key != null || parentComponent && n2 === parentComponent.subTree\n ) {\n traverseStaticChildren(\n n1,\n n2,\n true\n /* shallow */\n );\n }\n } else {\n patchChildren(\n n1,\n n2,\n container,\n fragmentEndAnchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n }\n };\n const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n n2.slotScopeIds = slotScopeIds;\n if (n1 == null) {\n if (n2.shapeFlag & 512) {\n parentComponent.ctx.activate(\n n2,\n container,\n anchor,\n namespace,\n optimized\n );\n } else {\n mountComponent(\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n optimized\n );\n }\n } else {\n updateComponent(n1, n2, optimized);\n }\n };\n const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => {\n const instance = (initialVNode.component = createComponentInstance(\n initialVNode,\n parentComponent,\n parentSuspense\n ));\n if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n registerHMR(instance);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(initialVNode);\n startMeasure(instance, `mount`);\n }\n if (isKeepAlive(initialVNode)) {\n instance.ctx.renderer = internals;\n }\n {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `init`);\n }\n setupComponent(instance);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `init`);\n }\n }\n if (instance.asyncDep) {\n parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);\n if (!initialVNode.el) {\n const placeholder = instance.subTree = createVNode(Comment);\n processCommentNode(null, placeholder, container, anchor);\n }\n } else {\n setupRenderEffect(\n instance,\n initialVNode,\n container,\n anchor,\n parentSuspense,\n namespace,\n optimized\n );\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n endMeasure(instance, `mount`);\n }\n };\n const updateComponent = (n1, n2, optimized) => {\n const instance = n2.component = n1.component;\n if (shouldUpdateComponent(n1, n2, optimized)) {\n if (instance.asyncDep && !instance.asyncResolved) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(n2);\n }\n updateComponentPreRender(instance, n2, optimized);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n }\n return;\n } else {\n instance.next = n2;\n invalidateJob(instance.update);\n instance.effect.dirty = true;\n instance.update();\n }\n } else {\n n2.el = n1.el;\n instance.vnode = n2;\n }\n };\n const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => {\n const componentUpdateFn = () => {\n if (!instance.isMounted) {\n let vnodeHook;\n const { el, props } = initialVNode;\n const { bm, m, parent } = instance;\n const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n toggleRecurse(instance, false);\n if (bm) {\n invokeArrayFns(bm);\n }\n if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHook, parent, initialVNode);\n }\n toggleRecurse(instance, true);\n if (el && hydrateNode) {\n const hydrateSubTree = () => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `render`);\n }\n instance.subTree = renderComponentRoot(instance);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `render`);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `hydrate`);\n }\n hydrateNode(\n el,\n instance.subTree,\n instance,\n parentSuspense,\n null\n );\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `hydrate`);\n }\n };\n if (isAsyncWrapperVNode) {\n initialVNode.type.__asyncLoader().then(\n // note: we are moving the render call into an async callback,\n // which means it won't track dependencies - but it's ok because\n // a server-rendered async wrapper is already in resolved state\n // and it will never need to change.\n () => !instance.isUnmounted && hydrateSubTree()\n );\n } else {\n hydrateSubTree();\n }\n } else {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `render`);\n }\n const subTree = instance.subTree = renderComponentRoot(instance);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `render`);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `patch`);\n }\n patch(\n null,\n subTree,\n container,\n anchor,\n instance,\n parentSuspense,\n namespace\n );\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `patch`);\n }\n initialVNode.el = subTree.el;\n }\n if (m) {\n queuePostRenderEffect(m, parentSuspense);\n }\n if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {\n const scopedInitialVNode = initialVNode;\n queuePostRenderEffect(\n () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode),\n parentSuspense\n );\n }\n if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {\n instance.a && queuePostRenderEffect(instance.a, parentSuspense);\n }\n instance.isMounted = true;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance);\n }\n initialVNode = container = anchor = null;\n } else {\n let { next, bu, u, parent, vnode } = instance;\n {\n const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance);\n if (nonHydratedAsyncRoot) {\n if (next) {\n next.el = vnode.el;\n updateComponentPreRender(instance, next, optimized);\n }\n nonHydratedAsyncRoot.asyncDep.then(() => {\n if (!instance.isUnmounted) {\n componentUpdateFn();\n }\n });\n return;\n }\n }\n let originNext = next;\n let vnodeHook;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(next || instance.vnode);\n }\n toggleRecurse(instance, false);\n if (next) {\n next.el = vnode.el;\n updateComponentPreRender(instance, next, optimized);\n } else {\n next = vnode;\n }\n if (bu) {\n invokeArrayFns(bu);\n }\n if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {\n invokeVNodeHook(vnodeHook, parent, next, vnode);\n }\n toggleRecurse(instance, true);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `render`);\n }\n const nextTree = renderComponentRoot(instance);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `render`);\n }\n const prevTree = instance.subTree;\n instance.subTree = nextTree;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `patch`);\n }\n patch(\n prevTree,\n nextTree,\n // parent may have changed if it's in a teleport\n hostParentNode(prevTree.el),\n // anchor may have changed if it's in a fragment\n getNextHostNode(prevTree),\n instance,\n parentSuspense,\n namespace\n );\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `patch`);\n }\n next.el = nextTree.el;\n if (originNext === null) {\n updateHOCHostEl(instance, nextTree.el);\n }\n if (u) {\n queuePostRenderEffect(u, parentSuspense);\n }\n if (vnodeHook = next.props && next.props.onVnodeUpdated) {\n queuePostRenderEffect(\n () => invokeVNodeHook(vnodeHook, parent, next, vnode),\n parentSuspense\n );\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(instance);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n }\n }\n };\n const effect = instance.effect = new ReactiveEffect(\n componentUpdateFn,\n NOOP,\n () => queueJob(update),\n instance.scope\n // track it in component's effect scope\n );\n const update = instance.update = () => {\n if (effect.dirty) {\n effect.run();\n }\n };\n update.id = instance.uid;\n toggleRecurse(instance, true);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = instance.rtc ? (e) => invokeArrayFns(instance.rtc, e) : void 0;\n effect.onTrigger = instance.rtg ? (e) => invokeArrayFns(instance.rtg, e) : void 0;\n update.ownerInstance = instance;\n }\n update();\n };\n const updateComponentPreRender = (instance, nextVNode, optimized) => {\n nextVNode.component = instance;\n const prevProps = instance.vnode.props;\n instance.vnode = nextVNode;\n instance.next = null;\n updateProps(instance, nextVNode.props, prevProps, optimized);\n updateSlots(instance, nextVNode.children, optimized);\n pauseTracking();\n flushPreFlushCbs(instance);\n resetTracking();\n };\n const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => {\n const c1 = n1 && n1.children;\n const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n const c2 = n2.children;\n const { patchFlag, shapeFlag } = n2;\n if (patchFlag > 0) {\n if (patchFlag & 128) {\n patchKeyedChildren(\n c1,\n c2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n return;\n } else if (patchFlag & 256) {\n patchUnkeyedChildren(\n c1,\n c2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n return;\n }\n }\n if (shapeFlag & 8) {\n if (prevShapeFlag & 16) {\n unmountChildren(c1, parentComponent, parentSuspense);\n }\n if (c2 !== c1) {\n hostSetElementText(container, c2);\n }\n } else {\n if (prevShapeFlag & 16) {\n if (shapeFlag & 16) {\n patchKeyedChildren(\n c1,\n c2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else {\n unmountChildren(c1, parentComponent, parentSuspense, true);\n }\n } else {\n if (prevShapeFlag & 8) {\n hostSetElementText(container, \"\");\n }\n if (shapeFlag & 16) {\n mountChildren(\n c2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n }\n }\n };\n const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n c1 = c1 || EMPTY_ARR;\n c2 = c2 || EMPTY_ARR;\n const oldLength = c1.length;\n const newLength = c2.length;\n const commonLength = Math.min(oldLength, newLength);\n let i;\n for (i = 0; i < commonLength; i++) {\n const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n patch(\n c1[i],\n nextChild,\n container,\n null,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n if (oldLength > newLength) {\n unmountChildren(\n c1,\n parentComponent,\n parentSuspense,\n true,\n false,\n commonLength\n );\n } else {\n mountChildren(\n c2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n commonLength\n );\n }\n };\n const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n let i = 0;\n const l2 = c2.length;\n let e1 = c1.length - 1;\n let e2 = l2 - 1;\n while (i <= e1 && i <= e2) {\n const n1 = c1[i];\n const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n if (isSameVNodeType(n1, n2)) {\n patch(\n n1,\n n2,\n container,\n null,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else {\n break;\n }\n i++;\n }\n while (i <= e1 && i <= e2) {\n const n1 = c1[e1];\n const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);\n if (isSameVNodeType(n1, n2)) {\n patch(\n n1,\n n2,\n container,\n null,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else {\n break;\n }\n e1--;\n e2--;\n }\n if (i > e1) {\n if (i <= e2) {\n const nextPos = e2 + 1;\n const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n while (i <= e2) {\n patch(\n null,\n c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]),\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n i++;\n }\n }\n } else if (i > e2) {\n while (i <= e1) {\n unmount(c1[i], parentComponent, parentSuspense, true);\n i++;\n }\n } else {\n const s1 = i;\n const s2 = i;\n const keyToNewIndexMap = /* @__PURE__ */ new Map();\n for (i = s2; i <= e2; i++) {\n const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n if (nextChild.key != null) {\n if (!!(process.env.NODE_ENV !== \"production\") && keyToNewIndexMap.has(nextChild.key)) {\n warn$1(\n `Duplicate keys found during update:`,\n JSON.stringify(nextChild.key),\n `Make sure keys are unique.`\n );\n }\n keyToNewIndexMap.set(nextChild.key, i);\n }\n }\n let j;\n let patched = 0;\n const toBePatched = e2 - s2 + 1;\n let moved = false;\n let maxNewIndexSoFar = 0;\n const newIndexToOldIndexMap = new Array(toBePatched);\n for (i = 0; i < toBePatched; i++)\n newIndexToOldIndexMap[i] = 0;\n for (i = s1; i <= e1; i++) {\n const prevChild = c1[i];\n if (patched >= toBePatched) {\n unmount(prevChild, parentComponent, parentSuspense, true);\n continue;\n }\n let newIndex;\n if (prevChild.key != null) {\n newIndex = keyToNewIndexMap.get(prevChild.key);\n } else {\n for (j = s2; j <= e2; j++) {\n if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {\n newIndex = j;\n break;\n }\n }\n }\n if (newIndex === void 0) {\n unmount(prevChild, parentComponent, parentSuspense, true);\n } else {\n newIndexToOldIndexMap[newIndex - s2] = i + 1;\n if (newIndex >= maxNewIndexSoFar) {\n maxNewIndexSoFar = newIndex;\n } else {\n moved = true;\n }\n patch(\n prevChild,\n c2[newIndex],\n container,\n null,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n patched++;\n }\n }\n const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;\n j = increasingNewIndexSequence.length - 1;\n for (i = toBePatched - 1; i >= 0; i--) {\n const nextIndex = s2 + i;\n const nextChild = c2[nextIndex];\n const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;\n if (newIndexToOldIndexMap[i] === 0) {\n patch(\n null,\n nextChild,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else if (moved) {\n if (j < 0 || i !== increasingNewIndexSequence[j]) {\n move(nextChild, container, anchor, 2);\n } else {\n j--;\n }\n }\n }\n }\n };\n const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n const { el, type, transition, children, shapeFlag } = vnode;\n if (shapeFlag & 6) {\n move(vnode.component.subTree, container, anchor, moveType);\n return;\n }\n if (shapeFlag & 128) {\n vnode.suspense.move(container, anchor, moveType);\n return;\n }\n if (shapeFlag & 64) {\n type.move(vnode, container, anchor, internals);\n return;\n }\n if (type === Fragment) {\n hostInsert(el, container, anchor);\n for (let i = 0; i < children.length; i++) {\n move(children[i], container, anchor, moveType);\n }\n hostInsert(vnode.anchor, container, anchor);\n return;\n }\n if (type === Static) {\n moveStaticNode(vnode, container, anchor);\n return;\n }\n const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;\n if (needTransition2) {\n if (moveType === 0) {\n transition.beforeEnter(el);\n hostInsert(el, container, anchor);\n queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n } else {\n const { leave, delayLeave, afterLeave } = transition;\n const remove2 = () => hostInsert(el, container, anchor);\n const performLeave = () => {\n leave(el, () => {\n remove2();\n afterLeave && afterLeave();\n });\n };\n if (delayLeave) {\n delayLeave(el, remove2, performLeave);\n } else {\n performLeave();\n }\n }\n } else {\n hostInsert(el, container, anchor);\n }\n };\n const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n const {\n type,\n props,\n ref,\n children,\n dynamicChildren,\n shapeFlag,\n patchFlag,\n dirs\n } = vnode;\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode, true);\n }\n if (shapeFlag & 256) {\n parentComponent.ctx.deactivate(vnode);\n return;\n }\n const shouldInvokeDirs = shapeFlag & 1 && dirs;\n const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n let vnodeHook;\n if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n if (shapeFlag & 6) {\n unmountComponent(vnode.component, parentSuspense, doRemove);\n } else {\n if (shapeFlag & 128) {\n vnode.suspense.unmount(parentSuspense, doRemove);\n return;\n }\n if (shouldInvokeDirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"beforeUnmount\");\n }\n if (shapeFlag & 64) {\n vnode.type.remove(\n vnode,\n parentComponent,\n parentSuspense,\n optimized,\n internals,\n doRemove\n );\n } else if (dynamicChildren && // #1153: fast path should not be taken for non-stable (v-for) fragments\n (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {\n unmountChildren(\n dynamicChildren,\n parentComponent,\n parentSuspense,\n false,\n true\n );\n } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {\n unmountChildren(children, parentComponent, parentSuspense);\n }\n if (doRemove) {\n remove(vnode);\n }\n }\n if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, \"unmounted\");\n }, parentSuspense);\n }\n };\n const remove = (vnode) => {\n const { type, el, anchor, transition } = vnode;\n if (type === Fragment) {\n if (!!(process.env.NODE_ENV !== \"production\") && vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) {\n vnode.children.forEach((child) => {\n if (child.type === Comment) {\n hostRemove(child.el);\n } else {\n remove(child);\n }\n });\n } else {\n removeFragment(el, anchor);\n }\n return;\n }\n if (type === Static) {\n removeStaticNode(vnode);\n return;\n }\n const performRemove = () => {\n hostRemove(el);\n if (transition && !transition.persisted && transition.afterLeave) {\n transition.afterLeave();\n }\n };\n if (vnode.shapeFlag & 1 && transition && !transition.persisted) {\n const { leave, delayLeave } = transition;\n const performLeave = () => leave(el, performRemove);\n if (delayLeave) {\n delayLeave(vnode.el, performRemove, performLeave);\n } else {\n performLeave();\n }\n } else {\n performRemove();\n }\n };\n const removeFragment = (cur, end) => {\n let next;\n while (cur !== end) {\n next = hostNextSibling(cur);\n hostRemove(cur);\n cur = next;\n }\n hostRemove(end);\n };\n const unmountComponent = (instance, parentSuspense, doRemove) => {\n if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n unregisterHMR(instance);\n }\n const { bum, scope, update, subTree, um } = instance;\n if (bum) {\n invokeArrayFns(bum);\n }\n scope.stop();\n if (update) {\n update.active = false;\n unmount(subTree, instance, parentSuspense, doRemove);\n }\n if (um) {\n queuePostRenderEffect(um, parentSuspense);\n }\n queuePostRenderEffect(() => {\n instance.isUnmounted = true;\n }, parentSuspense);\n if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0) {\n parentSuspense.resolve();\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentRemoved(instance);\n }\n };\n const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n for (let i = start; i < children.length; i++) {\n unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n }\n };\n const getNextHostNode = (vnode) => {\n if (vnode.shapeFlag & 6) {\n return getNextHostNode(vnode.component.subTree);\n }\n if (vnode.shapeFlag & 128) {\n return vnode.suspense.next();\n }\n return hostNextSibling(vnode.anchor || vnode.el);\n };\n const render = (vnode, container, namespace) => {\n if (vnode == null) {\n if (container._vnode) {\n unmount(container._vnode, null, null, true);\n }\n } else {\n patch(\n container._vnode || null,\n vnode,\n container,\n null,\n null,\n null,\n namespace\n );\n }\n flushPreFlushCbs();\n flushPostFlushCbs();\n container._vnode = vnode;\n };\n const internals = {\n p: patch,\n um: unmount,\n m: move,\n r: remove,\n mt: mountComponent,\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n n: getNextHostNode,\n o: options\n };\n let hydrate;\n let hydrateNode;\n if (createHydrationFns) {\n [hydrate, hydrateNode] = createHydrationFns(\n internals\n );\n }\n return {\n render,\n hydrate,\n createApp: createAppAPI(render, hydrate)\n };\n}\nfunction resolveChildrenNamespace({ type, props }, currentNamespace) {\n return currentNamespace === \"svg\" && type === \"foreignObject\" || currentNamespace === \"mathml\" && type === \"annotation-xml\" && props && props.encoding && props.encoding.includes(\"html\") ? void 0 : currentNamespace;\n}\nfunction toggleRecurse({ effect, update }, allowed) {\n effect.allowRecurse = update.allowRecurse = allowed;\n}\nfunction needTransition(parentSuspense, transition) {\n return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;\n}\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n const ch1 = n1.children;\n const ch2 = n2.children;\n if (isArray(ch1) && isArray(ch2)) {\n for (let i = 0; i < ch1.length; i++) {\n const c1 = ch1[i];\n let c2 = ch2[i];\n if (c2.shapeFlag & 1 && !c2.dynamicChildren) {\n if (c2.patchFlag <= 0 || c2.patchFlag === 32) {\n c2 = ch2[i] = cloneIfMounted(ch2[i]);\n c2.el = c1.el;\n }\n if (!shallow)\n traverseStaticChildren(c1, c2);\n }\n if (c2.type === Text) {\n c2.el = c1.el;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && c2.type === Comment && !c2.el) {\n c2.el = c1.el;\n }\n }\n }\n}\nfunction getSequence(arr) {\n const p = arr.slice();\n const result = [0];\n let i, j, u, v, c;\n const len = arr.length;\n for (i = 0; i < len; i++) {\n const arrI = arr[i];\n if (arrI !== 0) {\n j = result[result.length - 1];\n if (arr[j] < arrI) {\n p[i] = j;\n result.push(i);\n continue;\n }\n u = 0;\n v = result.length - 1;\n while (u < v) {\n c = u + v >> 1;\n if (arr[result[c]] < arrI) {\n u = c + 1;\n } else {\n v = c;\n }\n }\n if (arrI < arr[result[u]]) {\n if (u > 0) {\n p[i] = result[u - 1];\n }\n result[u] = i;\n }\n }\n }\n u = result.length;\n v = result[u - 1];\n while (u-- > 0) {\n result[u] = v;\n v = p[v];\n }\n return result;\n}\nfunction locateNonHydratedAsyncRoot(instance) {\n const subComponent = instance.subTree.component;\n if (subComponent) {\n if (subComponent.asyncDep && !subComponent.asyncResolved) {\n return subComponent;\n } else {\n return locateNonHydratedAsyncRoot(subComponent);\n }\n }\n}\n\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === \"\");\nconst isTargetSVG = (target) => typeof SVGElement !== \"undefined\" && target instanceof SVGElement;\nconst isTargetMathML = (target) => typeof MathMLElement === \"function\" && target instanceof MathMLElement;\nconst resolveTarget = (props, select) => {\n const targetSelector = props && props.to;\n if (isString(targetSelector)) {\n if (!select) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Current renderer does not support string target for Teleports. (missing querySelector renderer option)`\n );\n return null;\n } else {\n const target = select(targetSelector);\n if (!target) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Failed to locate Teleport target with selector \"${targetSelector}\". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`\n );\n }\n return target;\n }\n } else {\n if (!!(process.env.NODE_ENV !== \"production\") && !targetSelector && !isTeleportDisabled(props)) {\n warn$1(`Invalid Teleport target: ${targetSelector}`);\n }\n return targetSelector;\n }\n};\nconst TeleportImpl = {\n name: \"Teleport\",\n __isTeleport: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {\n const {\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n o: { insert, querySelector, createText, createComment }\n } = internals;\n const disabled = isTeleportDisabled(n2.props);\n let { shapeFlag, children, dynamicChildren } = n2;\n if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n optimized = false;\n dynamicChildren = null;\n }\n if (n1 == null) {\n const placeholder = n2.el = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport start\") : createText(\"\");\n const mainAnchor = n2.anchor = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport end\") : createText(\"\");\n insert(placeholder, container, anchor);\n insert(mainAnchor, container, anchor);\n const target = n2.target = resolveTarget(n2.props, querySelector);\n const targetAnchor = n2.targetAnchor = createText(\"\");\n if (target) {\n insert(targetAnchor, target);\n if (namespace === \"svg\" || isTargetSVG(target)) {\n namespace = \"svg\";\n } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n namespace = \"mathml\";\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && !disabled) {\n warn$1(\"Invalid Teleport target on mount:\", target, `(${typeof target})`);\n }\n const mount = (container2, anchor2) => {\n if (shapeFlag & 16) {\n mountChildren(\n children,\n container2,\n anchor2,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n };\n if (disabled) {\n mount(container, mainAnchor);\n } else if (target) {\n mount(target, targetAnchor);\n }\n } else {\n n2.el = n1.el;\n const mainAnchor = n2.anchor = n1.anchor;\n const target = n2.target = n1.target;\n const targetAnchor = n2.targetAnchor = n1.targetAnchor;\n const wasDisabled = isTeleportDisabled(n1.props);\n const currentContainer = wasDisabled ? container : target;\n const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n if (namespace === \"svg\" || isTargetSVG(target)) {\n namespace = \"svg\";\n } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n namespace = \"mathml\";\n }\n if (dynamicChildren) {\n patchBlockChildren(\n n1.dynamicChildren,\n dynamicChildren,\n currentContainer,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds\n );\n traverseStaticChildren(n1, n2, true);\n } else if (!optimized) {\n patchChildren(\n n1,\n n2,\n currentContainer,\n currentAnchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n false\n );\n }\n if (disabled) {\n if (!wasDisabled) {\n moveTeleport(\n n2,\n container,\n mainAnchor,\n internals,\n 1\n );\n } else {\n if (n2.props && n1.props && n2.props.to !== n1.props.to) {\n n2.props.to = n1.props.to;\n }\n }\n } else {\n if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n const nextTarget = n2.target = resolveTarget(\n n2.props,\n querySelector\n );\n if (nextTarget) {\n moveTeleport(\n n2,\n nextTarget,\n null,\n internals,\n 0\n );\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n \"Invalid Teleport target on update:\",\n target,\n `(${typeof target})`\n );\n }\n } else if (wasDisabled) {\n moveTeleport(\n n2,\n target,\n targetAnchor,\n internals,\n 1\n );\n }\n }\n }\n updateCssVars(n2);\n },\n remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode;\n if (target) {\n hostRemove(targetAnchor);\n }\n doRemove && hostRemove(anchor);\n if (shapeFlag & 16) {\n const shouldRemove = doRemove || !isTeleportDisabled(props);\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n unmount(\n child,\n parentComponent,\n parentSuspense,\n shouldRemove,\n !!child.dynamicChildren\n );\n }\n }\n },\n move: moveTeleport,\n hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {\n if (moveType === 0) {\n insert(vnode.targetAnchor, container, parentAnchor);\n }\n const { el, anchor, shapeFlag, children, props } = vnode;\n const isReorder = moveType === 2;\n if (isReorder) {\n insert(el, container, parentAnchor);\n }\n if (!isReorder || isTeleportDisabled(props)) {\n if (shapeFlag & 16) {\n for (let i = 0; i < children.length; i++) {\n move(\n children[i],\n container,\n parentAnchor,\n 2\n );\n }\n }\n }\n if (isReorder) {\n insert(anchor, container, parentAnchor);\n }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {\n o: { nextSibling, parentNode, querySelector }\n}, hydrateChildren) {\n const target = vnode.target = resolveTarget(\n vnode.props,\n querySelector\n );\n if (target) {\n const targetNode = target._lpa || target.firstChild;\n if (vnode.shapeFlag & 16) {\n if (isTeleportDisabled(vnode.props)) {\n vnode.anchor = hydrateChildren(\n nextSibling(node),\n vnode,\n parentNode(node),\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n vnode.targetAnchor = targetNode;\n } else {\n vnode.anchor = nextSibling(node);\n let targetAnchor = targetNode;\n while (targetAnchor) {\n targetAnchor = nextSibling(targetAnchor);\n if (targetAnchor && targetAnchor.nodeType === 8 && targetAnchor.data === \"teleport anchor\") {\n vnode.targetAnchor = targetAnchor;\n target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n break;\n }\n }\n hydrateChildren(\n targetNode,\n vnode,\n target,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n }\n updateCssVars(vnode);\n }\n return vnode.anchor && nextSibling(vnode.anchor);\n}\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode) {\n const ctx = vnode.ctx;\n if (ctx && ctx.ut) {\n let node = vnode.children[0].el;\n while (node && node !== vnode.targetAnchor) {\n if (node.nodeType === 1)\n node.setAttribute(\"data-v-owner\", ctx.uid);\n node = node.nextSibling;\n }\n ctx.ut();\n }\n}\n\nconst Fragment = Symbol.for(\"v-fgt\");\nconst Text = Symbol.for(\"v-txt\");\nconst Comment = Symbol.for(\"v-cmt\");\nconst Static = Symbol.for(\"v-stc\");\nconst blockStack = [];\nlet currentBlock = null;\nfunction openBlock(disableTracking = false) {\n blockStack.push(currentBlock = disableTracking ? null : []);\n}\nfunction closeBlock() {\n blockStack.pop();\n currentBlock = blockStack[blockStack.length - 1] || null;\n}\nlet isBlockTreeEnabled = 1;\nfunction setBlockTracking(value) {\n isBlockTreeEnabled += value;\n}\nfunction setupBlock(vnode) {\n vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;\n closeBlock();\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n return setupBlock(\n createBaseVNode(\n type,\n props,\n children,\n patchFlag,\n dynamicProps,\n shapeFlag,\n true\n )\n );\n}\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n return setupBlock(\n createVNode(\n type,\n props,\n children,\n patchFlag,\n dynamicProps,\n true\n )\n );\n}\nfunction isVNode(value) {\n return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n if (!!(process.env.NODE_ENV !== \"production\") && n2.shapeFlag & 6 && hmrDirtyComponents.has(n2.type)) {\n n1.shapeFlag &= ~256;\n n2.shapeFlag &= ~512;\n return false;\n }\n return n1.type === n2.type && n1.key === n2.key;\n}\nlet vnodeArgsTransformer;\nfunction transformVNodeArgs(transformer) {\n vnodeArgsTransformer = transformer;\n}\nconst createVNodeWithArgsTransform = (...args) => {\n return _createVNode(\n ...vnodeArgsTransformer ? vnodeArgsTransformer(args, currentRenderingInstance) : args\n );\n};\nconst InternalObjectKey = `__vInternal`;\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({\n ref,\n ref_key,\n ref_for\n}) => {\n if (typeof ref === \"number\") {\n ref = \"\" + ref;\n }\n return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null;\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {\n const vnode = {\n __v_isVNode: true,\n __v_skip: true,\n type,\n props,\n key: props && normalizeKey(props),\n ref: props && normalizeRef(props),\n scopeId: currentScopeId,\n slotScopeIds: null,\n children,\n component: null,\n suspense: null,\n ssContent: null,\n ssFallback: null,\n dirs: null,\n transition: null,\n el: null,\n anchor: null,\n target: null,\n targetAnchor: null,\n staticCount: 0,\n shapeFlag,\n patchFlag,\n dynamicProps,\n dynamicChildren: null,\n appContext: null,\n ctx: currentRenderingInstance\n };\n if (needFullChildrenNormalization) {\n normalizeChildren(vnode, children);\n if (shapeFlag & 128) {\n type.normalize(vnode);\n }\n } else if (children) {\n vnode.shapeFlag |= isString(children) ? 8 : 16;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && vnode.key !== vnode.key) {\n warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\n }\n if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself\n !isBlockNode && // has current parent block\n currentBlock && // presence of a patch flag indicates this node needs patching on updates.\n // component nodes also should always be patched, because even if the\n // component doesn't need to update, it needs to persist the instance on to\n // the next vnode so that it can be properly unmounted later.\n (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the\n // vnode should not be considered dynamic due to handler caching.\n vnode.patchFlag !== 32) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\nconst createVNode = !!(process.env.NODE_ENV !== \"production\") ? createVNodeWithArgsTransform : _createVNode;\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n if (!type || type === NULL_DYNAMIC_COMPONENT) {\n if (!!(process.env.NODE_ENV !== \"production\") && !type) {\n warn$1(`Invalid vnode type when creating vnode: ${type}.`);\n }\n type = Comment;\n }\n if (isVNode(type)) {\n const cloned = cloneVNode(\n type,\n props,\n true\n /* mergeRef: true */\n );\n if (children) {\n normalizeChildren(cloned, children);\n }\n if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n if (cloned.shapeFlag & 6) {\n currentBlock[currentBlock.indexOf(type)] = cloned;\n } else {\n currentBlock.push(cloned);\n }\n }\n cloned.patchFlag |= -2;\n return cloned;\n }\n if (isClassComponent(type)) {\n type = type.__vccOpts;\n }\n if (props) {\n props = guardReactiveProps(props);\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (isObject(style)) {\n if (isProxy(style) && !isArray(style)) {\n style = extend({}, style);\n }\n props.style = normalizeStyle(style);\n }\n }\n const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0;\n if (!!(process.env.NODE_ENV !== \"production\") && shapeFlag & 4 && isProxy(type)) {\n type = toRaw(type);\n warn$1(\n `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \\`markRaw\\` or using \\`shallowRef\\` instead of \\`ref\\`.`,\n `\nComponent that was made reactive: `,\n type\n );\n }\n return createBaseVNode(\n type,\n props,\n children,\n patchFlag,\n dynamicProps,\n shapeFlag,\n isBlockNode,\n true\n );\n}\nfunction guardReactiveProps(props) {\n if (!props)\n return null;\n return isProxy(props) || InternalObjectKey in props ? extend({}, props) : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false) {\n const { props, ref, patchFlag, children } = vnode;\n const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n const cloned = {\n __v_isVNode: true,\n __v_skip: true,\n type: vnode.type,\n props: mergedProps,\n key: mergedProps && normalizeKey(mergedProps),\n ref: extraProps && extraProps.ref ? (\n // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\n // if the vnode itself already has a ref, cloneVNode will need to merge\n // the refs so the single vnode can be set on multiple refs\n mergeRef && ref ? isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps)\n ) : ref,\n scopeId: vnode.scopeId,\n slotScopeIds: vnode.slotScopeIds,\n children: !!(process.env.NODE_ENV !== \"production\") && patchFlag === -1 && isArray(children) ? children.map(deepCloneVNode) : children,\n target: vnode.target,\n targetAnchor: vnode.targetAnchor,\n staticCount: vnode.staticCount,\n shapeFlag: vnode.shapeFlag,\n // if the vnode is cloned with extra props, we can no longer assume its\n // existing patch flag to be reliable and need to add the FULL_PROPS flag.\n // note: preserve flag for fragments since they use the flag for children\n // fast paths only.\n patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,\n dynamicProps: vnode.dynamicProps,\n dynamicChildren: vnode.dynamicChildren,\n appContext: vnode.appContext,\n dirs: vnode.dirs,\n transition: vnode.transition,\n // These should technically only be non-null on mounted VNodes. However,\n // they *should* be copied for kept-alive vnodes. So we just always copy\n // them since them being non-null during a mount doesn't affect the logic as\n // they will simply be overwritten.\n component: vnode.component,\n suspense: vnode.suspense,\n ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n el: vnode.el,\n anchor: vnode.anchor,\n ctx: vnode.ctx,\n ce: vnode.ce\n };\n return cloned;\n}\nfunction deepCloneVNode(vnode) {\n const cloned = cloneVNode(vnode);\n if (isArray(vnode.children)) {\n cloned.children = vnode.children.map(deepCloneVNode);\n }\n return cloned;\n}\nfunction createTextVNode(text = \" \", flag = 0) {\n return createVNode(Text, null, text, flag);\n}\nfunction createStaticVNode(content, numberOfNodes) {\n const vnode = createVNode(Static, null, content);\n vnode.staticCount = numberOfNodes;\n return vnode;\n}\nfunction createCommentVNode(text = \"\", asBlock = false) {\n return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text);\n}\nfunction normalizeVNode(child) {\n if (child == null || typeof child === \"boolean\") {\n return createVNode(Comment);\n } else if (isArray(child)) {\n return createVNode(\n Fragment,\n null,\n // #3666, avoid reference pollution when reusing vnode\n child.slice()\n );\n } else if (typeof child === \"object\") {\n return cloneIfMounted(child);\n } else {\n return createVNode(Text, null, String(child));\n }\n}\nfunction cloneIfMounted(child) {\n return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n let type = 0;\n const { shapeFlag } = vnode;\n if (children == null) {\n children = null;\n } else if (isArray(children)) {\n type = 16;\n } else if (typeof children === \"object\") {\n if (shapeFlag & (1 | 64)) {\n const slot = children.default;\n if (slot) {\n slot._c && (slot._d = false);\n normalizeChildren(vnode, slot());\n slot._c && (slot._d = true);\n }\n return;\n } else {\n type = 32;\n const slotFlag = children._;\n if (!slotFlag && !(InternalObjectKey in children)) {\n children._ctx = currentRenderingInstance;\n } else if (slotFlag === 3 && currentRenderingInstance) {\n if (currentRenderingInstance.slots._ === 1) {\n children._ = 1;\n } else {\n children._ = 2;\n vnode.patchFlag |= 1024;\n }\n }\n }\n } else if (isFunction(children)) {\n children = { default: children, _ctx: currentRenderingInstance };\n type = 32;\n } else {\n children = String(children);\n if (shapeFlag & 64) {\n type = 16;\n children = [createTextVNode(children)];\n } else {\n type = 8;\n }\n }\n vnode.children = children;\n vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n const ret = {};\n for (let i = 0; i < args.length; i++) {\n const toMerge = args[i];\n for (const key in toMerge) {\n if (key === \"class\") {\n if (ret.class !== toMerge.class) {\n ret.class = normalizeClass([ret.class, toMerge.class]);\n }\n } else if (key === \"style\") {\n ret.style = normalizeStyle([ret.style, toMerge.style]);\n } else if (isOn(key)) {\n const existing = ret[key];\n const incoming = toMerge[key];\n if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) {\n ret[key] = existing ? [].concat(existing, incoming) : incoming;\n }\n } else if (key !== \"\") {\n ret[key] = toMerge[key];\n }\n }\n }\n return ret;\n}\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\n callWithAsyncErrorHandling(hook, instance, 7, [\n vnode,\n prevVNode\n ]);\n}\n\nconst emptyAppContext = createAppContext();\nlet uid = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n const type = vnode.type;\n const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n const instance = {\n uid: uid++,\n vnode,\n type,\n parent,\n appContext,\n root: null,\n // to be immediately set\n next: null,\n subTree: null,\n // will be set synchronously right after creation\n effect: null,\n update: null,\n // will be set synchronously right after creation\n scope: new EffectScope(\n true\n /* detached */\n ),\n render: null,\n proxy: null,\n exposed: null,\n exposeProxy: null,\n withProxy: null,\n provides: parent ? parent.provides : Object.create(appContext.provides),\n accessCache: null,\n renderCache: [],\n // local resolved assets\n components: null,\n directives: null,\n // resolved props and emits options\n propsOptions: normalizePropsOptions(type, appContext),\n emitsOptions: normalizeEmitsOptions(type, appContext),\n // emit\n emit: null,\n // to be set immediately\n emitted: null,\n // props default value\n propsDefaults: EMPTY_OBJ,\n // inheritAttrs\n inheritAttrs: type.inheritAttrs,\n // state\n ctx: EMPTY_OBJ,\n data: EMPTY_OBJ,\n props: EMPTY_OBJ,\n attrs: EMPTY_OBJ,\n slots: EMPTY_OBJ,\n refs: EMPTY_OBJ,\n setupState: EMPTY_OBJ,\n setupContext: null,\n attrsProxy: null,\n slotsProxy: null,\n // suspense related\n suspense,\n suspenseId: suspense ? suspense.pendingId : 0,\n asyncDep: null,\n asyncResolved: false,\n // lifecycle hooks\n // not using enums here because it results in computed properties\n isMounted: false,\n isUnmounted: false,\n isDeactivated: false,\n bc: null,\n c: null,\n bm: null,\n m: null,\n bu: null,\n u: null,\n um: null,\n bum: null,\n da: null,\n a: null,\n rtg: null,\n rtc: null,\n ec: null,\n sp: null\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n instance.ctx = createDevRenderContext(instance);\n } else {\n instance.ctx = { _: instance };\n }\n instance.root = parent ? parent.root : instance;\n instance.emit = emit.bind(null, instance);\n if (vnode.ce) {\n vnode.ce(instance);\n }\n return instance;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nlet internalSetCurrentInstance;\nlet setInSSRSetupState;\n{\n const g = getGlobalThis();\n const registerGlobalSetter = (key, setter) => {\n let setters;\n if (!(setters = g[key]))\n setters = g[key] = [];\n setters.push(setter);\n return (v) => {\n if (setters.length > 1)\n setters.forEach((set) => set(v));\n else\n setters[0](v);\n };\n };\n internalSetCurrentInstance = registerGlobalSetter(\n `__VUE_INSTANCE_SETTERS__`,\n (v) => currentInstance = v\n );\n setInSSRSetupState = registerGlobalSetter(\n `__VUE_SSR_SETTERS__`,\n (v) => isInSSRComponentSetup = v\n );\n}\nconst setCurrentInstance = (instance) => {\n internalSetCurrentInstance(instance);\n instance.scope.on();\n};\nconst unsetCurrentInstance = () => {\n currentInstance && currentInstance.scope.off();\n internalSetCurrentInstance(null);\n};\nconst isBuiltInTag = /* @__PURE__ */ makeMap(\"slot,component\");\nfunction validateComponentName(name, config) {\n const appIsNativeTag = config.isNativeTag || NO;\n if (isBuiltInTag(name) || appIsNativeTag(name)) {\n warn$1(\n \"Do not use built-in or reserved HTML elements as component id: \" + name\n );\n }\n}\nfunction isStatefulComponent(instance) {\n return instance.vnode.shapeFlag & 4;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance, isSSR = false) {\n isSSR && setInSSRSetupState(isSSR);\n const { props, children } = instance.vnode;\n const isStateful = isStatefulComponent(instance);\n initProps(instance, props, isStateful, isSSR);\n initSlots(instance, children);\n const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;\n isSSR && setInSSRSetupState(false);\n return setupResult;\n}\nfunction setupStatefulComponent(instance, isSSR) {\n var _a;\n const Component = instance.type;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (Component.name) {\n validateComponentName(Component.name, instance.appContext.config);\n }\n if (Component.components) {\n const names = Object.keys(Component.components);\n for (let i = 0; i < names.length; i++) {\n validateComponentName(names[i], instance.appContext.config);\n }\n }\n if (Component.directives) {\n const names = Object.keys(Component.directives);\n for (let i = 0; i < names.length; i++) {\n validateDirectiveName(names[i]);\n }\n }\n if (Component.compilerOptions && isRuntimeOnly()) {\n warn$1(\n `\"compilerOptions\" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.`\n );\n }\n }\n instance.accessCache = /* @__PURE__ */ Object.create(null);\n instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));\n if (!!(process.env.NODE_ENV !== \"production\")) {\n exposePropsOnRenderContext(instance);\n }\n const { setup } = Component;\n if (setup) {\n const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;\n setCurrentInstance(instance);\n pauseTracking();\n const setupResult = callWithErrorHandling(\n setup,\n instance,\n 0,\n [\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(instance.props) : instance.props,\n setupContext\n ]\n );\n resetTracking();\n unsetCurrentInstance();\n if (isPromise(setupResult)) {\n setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n if (isSSR) {\n return setupResult.then((resolvedResult) => {\n handleSetupResult(instance, resolvedResult, isSSR);\n }).catch((e) => {\n handleError(e, instance, 0);\n });\n } else {\n instance.asyncDep = setupResult;\n if (!!(process.env.NODE_ENV !== \"production\") && !instance.suspense) {\n const name = (_a = Component.name) != null ? _a : \"Anonymous\";\n warn$1(\n `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.`\n );\n }\n }\n } else {\n handleSetupResult(instance, setupResult, isSSR);\n }\n } else {\n finishComponentSetup(instance, isSSR);\n }\n}\nfunction handleSetupResult(instance, setupResult, isSSR) {\n if (isFunction(setupResult)) {\n if (instance.type.__ssrInlineRender) {\n instance.ssrRender = setupResult;\n } else {\n instance.render = setupResult;\n }\n } else if (isObject(setupResult)) {\n if (!!(process.env.NODE_ENV !== \"production\") && isVNode(setupResult)) {\n warn$1(\n `setup() should not return VNodes directly - return a render function instead.`\n );\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.devtoolsRawSetupState = setupResult;\n }\n instance.setupState = proxyRefs(setupResult);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n exposeSetupStateOnRenderContext(instance);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupResult !== void 0) {\n warn$1(\n `setup() should return an object. Received: ${setupResult === null ? \"null\" : typeof setupResult}`\n );\n }\n finishComponentSetup(instance, isSSR);\n}\nlet compile;\nlet installWithProxy;\nfunction registerRuntimeCompiler(_compile) {\n compile = _compile;\n installWithProxy = (i) => {\n if (i.render._rc) {\n i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\n }\n };\n}\nconst isRuntimeOnly = () => !compile;\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\n const Component = instance.type;\n if (!instance.render) {\n if (!isSSR && compile && !Component.render) {\n const template = Component.template || resolveMergedOptions(instance).template;\n if (template) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `compile`);\n }\n const { isCustomElement, compilerOptions } = instance.appContext.config;\n const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n const finalCompilerOptions = extend(\n extend(\n {\n isCustomElement,\n delimiters\n },\n compilerOptions\n ),\n componentCompilerOptions\n );\n Component.render = compile(template, finalCompilerOptions);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `compile`);\n }\n }\n }\n instance.render = Component.render || NOOP;\n if (installWithProxy) {\n installWithProxy(instance);\n }\n }\n if (__VUE_OPTIONS_API__ && true) {\n setCurrentInstance(instance);\n pauseTracking();\n try {\n applyOptions(instance);\n } finally {\n resetTracking();\n unsetCurrentInstance();\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !Component.render && instance.render === NOOP && !isSSR) {\n if (!compile && Component.template) {\n warn$1(\n `Component provided template option but runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".` )\n );\n } else {\n warn$1(`Component is missing template or render function.`);\n }\n }\n}\nfunction getAttrsProxy(instance) {\n return instance.attrsProxy || (instance.attrsProxy = new Proxy(\n instance.attrs,\n !!(process.env.NODE_ENV !== \"production\") ? {\n get(target, key) {\n markAttrsAccessed();\n track(instance, \"get\", \"$attrs\");\n return target[key];\n },\n set() {\n warn$1(`setupContext.attrs is readonly.`);\n return false;\n },\n deleteProperty() {\n warn$1(`setupContext.attrs is readonly.`);\n return false;\n }\n } : {\n get(target, key) {\n track(instance, \"get\", \"$attrs\");\n return target[key];\n }\n }\n ));\n}\nfunction getSlotsProxy(instance) {\n return instance.slotsProxy || (instance.slotsProxy = new Proxy(instance.slots, {\n get(target, key) {\n track(instance, \"get\", \"$slots\");\n return target[key];\n }\n }));\n}\nfunction createSetupContext(instance) {\n const expose = (exposed) => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (instance.exposed) {\n warn$1(`expose() should be called only once per setup().`);\n }\n if (exposed != null) {\n let exposedType = typeof exposed;\n if (exposedType === \"object\") {\n if (isArray(exposed)) {\n exposedType = \"array\";\n } else if (isRef(exposed)) {\n exposedType = \"ref\";\n }\n }\n if (exposedType !== \"object\") {\n warn$1(\n `expose() should be passed a plain object, received ${exposedType}.`\n );\n }\n }\n }\n instance.exposed = exposed || {};\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n return Object.freeze({\n get attrs() {\n return getAttrsProxy(instance);\n },\n get slots() {\n return getSlotsProxy(instance);\n },\n get emit() {\n return (event, ...args) => instance.emit(event, ...args);\n },\n expose\n });\n } else {\n return {\n get attrs() {\n return getAttrsProxy(instance);\n },\n slots: instance.slots,\n emit: instance.emit,\n expose\n };\n }\n}\nfunction getExposeProxy(instance) {\n if (instance.exposed) {\n return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {\n get(target, key) {\n if (key in target) {\n return target[key];\n } else if (key in publicPropertiesMap) {\n return publicPropertiesMap[key](instance);\n }\n },\n has(target, key) {\n return key in target || key in publicPropertiesMap;\n }\n }));\n }\n}\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, \"\");\nfunction getComponentName(Component, includeInferred = true) {\n return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;\n}\nfunction formatComponentName(instance, Component, isRoot = false) {\n let name = getComponentName(Component);\n if (!name && Component.__file) {\n const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\n if (match) {\n name = match[1];\n }\n }\n if (!name && instance && instance.parent) {\n const inferFromRegistry = (registry) => {\n for (const key in registry) {\n if (registry[key] === Component) {\n return key;\n }\n }\n };\n name = inferFromRegistry(\n instance.components || instance.parent.type.components\n ) || inferFromRegistry(instance.appContext.components);\n }\n return name ? classify(name) : isRoot ? `App` : `Anonymous`;\n}\nfunction isClassComponent(value) {\n return isFunction(value) && \"__vccOpts\" in value;\n}\n\nconst computed = (getterOrOptions, debugOptions) => {\n return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n};\n\nfunction h(type, propsOrChildren, children) {\n const l = arguments.length;\n if (l === 2) {\n if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {\n if (isVNode(propsOrChildren)) {\n return createVNode(type, null, [propsOrChildren]);\n }\n return createVNode(type, propsOrChildren);\n } else {\n return createVNode(type, null, propsOrChildren);\n }\n } else {\n if (l > 3) {\n children = Array.prototype.slice.call(arguments, 2);\n } else if (l === 3 && isVNode(children)) {\n children = [children];\n }\n return createVNode(type, propsOrChildren, children);\n }\n}\n\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\n\nfunction initCustomFormatter() {\n if (!!!(process.env.NODE_ENV !== \"production\") || typeof window === \"undefined\") {\n return;\n }\n const vueStyle = { style: \"color:#3ba776\" };\n const numberStyle = { style: \"color:#1677ff\" };\n const stringStyle = { style: \"color:#f5222d\" };\n const keywordStyle = { style: \"color:#eb2f96\" };\n const formatter = {\n header(obj) {\n if (!isObject(obj)) {\n return null;\n }\n if (obj.__isVue) {\n return [\"div\", vueStyle, `VueInstance`];\n } else if (isRef(obj)) {\n return [\n \"div\",\n {},\n [\"span\", vueStyle, genRefFlag(obj)],\n \"<\",\n formatValue(obj.value),\n `>`\n ];\n } else if (isReactive(obj)) {\n return [\n \"div\",\n {},\n [\"span\", vueStyle, isShallow(obj) ? \"ShallowReactive\" : \"Reactive\"],\n \"<\",\n formatValue(obj),\n `>${isReadonly(obj) ? ` (readonly)` : ``}`\n ];\n } else if (isReadonly(obj)) {\n return [\n \"div\",\n {},\n [\"span\", vueStyle, isShallow(obj) ? \"ShallowReadonly\" : \"Readonly\"],\n \"<\",\n formatValue(obj),\n \">\"\n ];\n }\n return null;\n },\n hasBody(obj) {\n return obj && obj.__isVue;\n },\n body(obj) {\n if (obj && obj.__isVue) {\n return [\n \"div\",\n {},\n ...formatInstance(obj.$)\n ];\n }\n }\n };\n function formatInstance(instance) {\n const blocks = [];\n if (instance.type.props && instance.props) {\n blocks.push(createInstanceBlock(\"props\", toRaw(instance.props)));\n }\n if (instance.setupState !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock(\"setup\", instance.setupState));\n }\n if (instance.data !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock(\"data\", toRaw(instance.data)));\n }\n const computed = extractKeys(instance, \"computed\");\n if (computed) {\n blocks.push(createInstanceBlock(\"computed\", computed));\n }\n const injected = extractKeys(instance, \"inject\");\n if (injected) {\n blocks.push(createInstanceBlock(\"injected\", injected));\n }\n blocks.push([\n \"div\",\n {},\n [\n \"span\",\n {\n style: keywordStyle.style + \";opacity:0.66\"\n },\n \"$ (internal): \"\n ],\n [\"object\", { object: instance }]\n ]);\n return blocks;\n }\n function createInstanceBlock(type, target) {\n target = extend({}, target);\n if (!Object.keys(target).length) {\n return [\"span\", {}];\n }\n return [\n \"div\",\n { style: \"line-height:1.25em;margin-bottom:0.6em\" },\n [\n \"div\",\n {\n style: \"color:#476582\"\n },\n type\n ],\n [\n \"div\",\n {\n style: \"padding-left:1.25em\"\n },\n ...Object.keys(target).map((key) => {\n return [\n \"div\",\n {},\n [\"span\", keywordStyle, key + \": \"],\n formatValue(target[key], false)\n ];\n })\n ]\n ];\n }\n function formatValue(v, asRaw = true) {\n if (typeof v === \"number\") {\n return [\"span\", numberStyle, v];\n } else if (typeof v === \"string\") {\n return [\"span\", stringStyle, JSON.stringify(v)];\n } else if (typeof v === \"boolean\") {\n return [\"span\", keywordStyle, v];\n } else if (isObject(v)) {\n return [\"object\", { object: asRaw ? toRaw(v) : v }];\n } else {\n return [\"span\", stringStyle, String(v)];\n }\n }\n function extractKeys(instance, type) {\n const Comp = instance.type;\n if (isFunction(Comp)) {\n return;\n }\n const extracted = {};\n for (const key in instance.ctx) {\n if (isKeyOfType(Comp, key, type)) {\n extracted[key] = instance.ctx[key];\n }\n }\n return extracted;\n }\n function isKeyOfType(Comp, key, type) {\n const opts = Comp[type];\n if (isArray(opts) && opts.includes(key) || isObject(opts) && key in opts) {\n return true;\n }\n if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {\n return true;\n }\n if (Comp.mixins && Comp.mixins.some((m) => isKeyOfType(m, key, type))) {\n return true;\n }\n }\n function genRefFlag(v) {\n if (isShallow(v)) {\n return `ShallowRef`;\n }\n if (v.effect) {\n return `ComputedRef`;\n }\n return `Ref`;\n }\n if (window.devtoolsFormatters) {\n window.devtoolsFormatters.push(formatter);\n } else {\n window.devtoolsFormatters = [formatter];\n }\n}\n\nfunction withMemo(memo, render, cache, index) {\n const cached = cache[index];\n if (cached && isMemoSame(cached, memo)) {\n return cached;\n }\n const ret = render();\n ret.memo = memo.slice();\n return cache[index] = ret;\n}\nfunction isMemoSame(cached, memo) {\n const prev = cached.memo;\n if (prev.length != memo.length) {\n return false;\n }\n for (let i = 0; i < prev.length; i++) {\n if (hasChanged(prev[i], memo[i])) {\n return false;\n }\n }\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(cached);\n }\n return true;\n}\n\nconst version = \"3.4.3\";\nconst warn = !!(process.env.NODE_ENV !== \"production\") ? warn$1 : NOOP;\nconst ErrorTypeStrings = ErrorTypeStrings$1 ;\nconst devtools = !!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__ ? devtools$1 : void 0;\nconst setDevtoolsHook = !!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__ ? setDevtoolsHook$1 : NOOP;\nconst _ssrUtils = {\n createComponentInstance,\n setupComponent,\n renderComponentRoot,\n setCurrentRenderingInstance,\n isVNode: isVNode,\n normalizeVNode\n};\nconst ssrUtils = _ssrUtils ;\nconst resolveFilter = null;\nconst compatUtils = null;\nconst DeprecationTypes = null;\n\nexport { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, Static, Suspense, Teleport, Text, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, compatUtils, computed, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSlots, devtools, getCurrentInstance, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, initCustomFormatter, inject, isMemoSame, isRuntimeOnly, isVNode, mergeDefaults, mergeModels, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useAttrs, useModel, useSSRContext, useSlots, useTransitionState, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId };\n","import { h, BaseTransition, BaseTransitionPropsValidators, assertNumber, getCurrentInstance, warn, watchPostEffect, onMounted, onUnmounted, Fragment, Static, camelize, callWithAsyncErrorHandling, defineComponent, nextTick, createVNode, useTransitionState, onUpdated, toRaw, getTransitionRawChildren, setTransitionHooks, resolveTransitionHooks, isRuntimeOnly, createRenderer, createHydrationRenderer } from '@vue/runtime-core';\nexport * from '@vue/runtime-core';\nimport { extend, isObject, toNumber, isArray, isString, hyphenate, capitalize, isSpecialBooleanAttr, includeBooleanAttr, isOn, isModelListener, isFunction, camelize as camelize$1, EMPTY_OBJ, looseToNumber, looseIndexOf, isSet, looseEqual, invokeArrayFns, isHTMLTag, isSVGTag, isMathMLTag } from '@vue/shared';\n\nconst svgNS = \"http://www.w3.org/2000/svg\";\nconst mathmlNS = \"http://www.w3.org/1998/Math/MathML\";\nconst doc = typeof document !== \"undefined\" ? document : null;\nconst templateContainer = doc && /* @__PURE__ */ doc.createElement(\"template\");\nconst nodeOps = {\n insert: (child, parent, anchor) => {\n parent.insertBefore(child, anchor || null);\n },\n remove: (child) => {\n const parent = child.parentNode;\n if (parent) {\n parent.removeChild(child);\n }\n },\n createElement: (tag, namespace, is, props) => {\n const el = namespace === \"svg\" ? doc.createElementNS(svgNS, tag) : namespace === \"mathml\" ? doc.createElementNS(mathmlNS, tag) : doc.createElement(tag, is ? { is } : void 0);\n if (tag === \"select\" && props && props.multiple != null) {\n el.setAttribute(\"multiple\", props.multiple);\n }\n return el;\n },\n createText: (text) => doc.createTextNode(text),\n createComment: (text) => doc.createComment(text),\n setText: (node, text) => {\n node.nodeValue = text;\n },\n setElementText: (el, text) => {\n el.textContent = text;\n },\n parentNode: (node) => node.parentNode,\n nextSibling: (node) => node.nextSibling,\n querySelector: (selector) => doc.querySelector(selector),\n setScopeId(el, id) {\n el.setAttribute(id, \"\");\n },\n // __UNSAFE__\n // Reason: innerHTML.\n // Static content here can only come from compiled templates.\n // As long as the user only uses trusted templates, this is safe.\n insertStaticContent(content, parent, anchor, namespace, start, end) {\n const before = anchor ? anchor.previousSibling : parent.lastChild;\n if (start && (start === end || start.nextSibling)) {\n while (true) {\n parent.insertBefore(start.cloneNode(true), anchor);\n if (start === end || !(start = start.nextSibling))\n break;\n }\n } else {\n templateContainer.innerHTML = namespace === \"svg\" ? `<svg>${content}</svg>` : namespace === \"mathml\" ? `<math>${content}</math>` : content;\n const template = templateContainer.content;\n if (namespace === \"svg\" || namespace === \"mathml\") {\n const wrapper = template.firstChild;\n while (wrapper.firstChild) {\n template.appendChild(wrapper.firstChild);\n }\n template.removeChild(wrapper);\n }\n parent.insertBefore(template, anchor);\n }\n return [\n // first\n before ? before.nextSibling : parent.firstChild,\n // last\n anchor ? anchor.previousSibling : parent.lastChild\n ];\n }\n};\n\nconst TRANSITION = \"transition\";\nconst ANIMATION = \"animation\";\nconst vtcKey = Symbol(\"_vtc\");\nconst Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);\nTransition.displayName = \"Transition\";\nconst DOMTransitionPropsValidators = {\n name: String,\n type: String,\n css: {\n type: Boolean,\n default: true\n },\n duration: [String, Number, Object],\n enterFromClass: String,\n enterActiveClass: String,\n enterToClass: String,\n appearFromClass: String,\n appearActiveClass: String,\n appearToClass: String,\n leaveFromClass: String,\n leaveActiveClass: String,\n leaveToClass: String\n};\nconst TransitionPropsValidators = Transition.props = /* @__PURE__ */ extend(\n {},\n BaseTransitionPropsValidators,\n DOMTransitionPropsValidators\n);\nconst callHook = (hook, args = []) => {\n if (isArray(hook)) {\n hook.forEach((h2) => h2(...args));\n } else if (hook) {\n hook(...args);\n }\n};\nconst hasExplicitCallback = (hook) => {\n return hook ? isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;\n};\nfunction resolveTransitionProps(rawProps) {\n const baseProps = {};\n for (const key in rawProps) {\n if (!(key in DOMTransitionPropsValidators)) {\n baseProps[key] = rawProps[key];\n }\n }\n if (rawProps.css === false) {\n return baseProps;\n }\n const {\n name = \"v\",\n type,\n duration,\n enterFromClass = `${name}-enter-from`,\n enterActiveClass = `${name}-enter-active`,\n enterToClass = `${name}-enter-to`,\n appearFromClass = enterFromClass,\n appearActiveClass = enterActiveClass,\n appearToClass = enterToClass,\n leaveFromClass = `${name}-leave-from`,\n leaveActiveClass = `${name}-leave-active`,\n leaveToClass = `${name}-leave-to`\n } = rawProps;\n const durations = normalizeDuration(duration);\n const enterDuration = durations && durations[0];\n const leaveDuration = durations && durations[1];\n const {\n onBeforeEnter,\n onEnter,\n onEnterCancelled,\n onLeave,\n onLeaveCancelled,\n onBeforeAppear = onBeforeEnter,\n onAppear = onEnter,\n onAppearCancelled = onEnterCancelled\n } = baseProps;\n const finishEnter = (el, isAppear, done) => {\n removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\n removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\n done && done();\n };\n const finishLeave = (el, done) => {\n el._isLeaving = false;\n removeTransitionClass(el, leaveFromClass);\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n done && done();\n };\n const makeEnterHook = (isAppear) => {\n return (el, done) => {\n const hook = isAppear ? onAppear : onEnter;\n const resolve = () => finishEnter(el, isAppear, done);\n callHook(hook, [el, resolve]);\n nextFrame(() => {\n removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\n addTransitionClass(el, isAppear ? appearToClass : enterToClass);\n if (!hasExplicitCallback(hook)) {\n whenTransitionEnds(el, type, enterDuration, resolve);\n }\n });\n };\n };\n return extend(baseProps, {\n onBeforeEnter(el) {\n callHook(onBeforeEnter, [el]);\n addTransitionClass(el, enterFromClass);\n addTransitionClass(el, enterActiveClass);\n },\n onBeforeAppear(el) {\n callHook(onBeforeAppear, [el]);\n addTransitionClass(el, appearFromClass);\n addTransitionClass(el, appearActiveClass);\n },\n onEnter: makeEnterHook(false),\n onAppear: makeEnterHook(true),\n onLeave(el, done) {\n el._isLeaving = true;\n const resolve = () => finishLeave(el, done);\n addTransitionClass(el, leaveFromClass);\n forceReflow();\n addTransitionClass(el, leaveActiveClass);\n nextFrame(() => {\n if (!el._isLeaving) {\n return;\n }\n removeTransitionClass(el, leaveFromClass);\n addTransitionClass(el, leaveToClass);\n if (!hasExplicitCallback(onLeave)) {\n whenTransitionEnds(el, type, leaveDuration, resolve);\n }\n });\n callHook(onLeave, [el, resolve]);\n },\n onEnterCancelled(el) {\n finishEnter(el, false);\n callHook(onEnterCancelled, [el]);\n },\n onAppearCancelled(el) {\n finishEnter(el, true);\n callHook(onAppearCancelled, [el]);\n },\n onLeaveCancelled(el) {\n finishLeave(el);\n callHook(onLeaveCancelled, [el]);\n }\n });\n}\nfunction normalizeDuration(duration) {\n if (duration == null) {\n return null;\n } else if (isObject(duration)) {\n return [NumberOf(duration.enter), NumberOf(duration.leave)];\n } else {\n const n = NumberOf(duration);\n return [n, n];\n }\n}\nfunction NumberOf(val) {\n const res = toNumber(val);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n assertNumber(res, \"<transition> explicit duration\");\n }\n return res;\n}\nfunction addTransitionClass(el, cls) {\n cls.split(/\\s+/).forEach((c) => c && el.classList.add(c));\n (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls);\n}\nfunction removeTransitionClass(el, cls) {\n cls.split(/\\s+/).forEach((c) => c && el.classList.remove(c));\n const _vtc = el[vtcKey];\n if (_vtc) {\n _vtc.delete(cls);\n if (!_vtc.size) {\n el[vtcKey] = void 0;\n }\n }\n}\nfunction nextFrame(cb) {\n requestAnimationFrame(() => {\n requestAnimationFrame(cb);\n });\n}\nlet endId = 0;\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {\n const id = el._endId = ++endId;\n const resolveIfNotStale = () => {\n if (id === el._endId) {\n resolve();\n }\n };\n if (explicitTimeout) {\n return setTimeout(resolveIfNotStale, explicitTimeout);\n }\n const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\n if (!type) {\n return resolve();\n }\n const endEvent = type + \"end\";\n let ended = 0;\n const end = () => {\n el.removeEventListener(endEvent, onEnd);\n resolveIfNotStale();\n };\n const onEnd = (e) => {\n if (e.target === el && ++ended >= propCount) {\n end();\n }\n };\n setTimeout(() => {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(endEvent, onEnd);\n}\nfunction getTransitionInfo(el, expectedType) {\n const styles = window.getComputedStyle(el);\n const getStyleProperties = (key) => (styles[key] || \"\").split(\", \");\n const transitionDelays = getStyleProperties(`${TRANSITION}Delay`);\n const transitionDurations = getStyleProperties(`${TRANSITION}Duration`);\n const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n const animationDelays = getStyleProperties(`${ANIMATION}Delay`);\n const animationDurations = getStyleProperties(`${ANIMATION}Duration`);\n const animationTimeout = getTimeout(animationDelays, animationDurations);\n let type = null;\n let timeout = 0;\n let propCount = 0;\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null;\n propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0;\n }\n const hasTransform = type === TRANSITION && /\\b(transform|all)(,|$)/.test(\n getStyleProperties(`${TRANSITION}Property`).toString()\n );\n return {\n type,\n timeout,\n propCount,\n hasTransform\n };\n}\nfunction getTimeout(delays, durations) {\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\n}\nfunction toMs(s) {\n if (s === \"auto\")\n return 0;\n return Number(s.slice(0, -1).replace(\",\", \".\")) * 1e3;\n}\nfunction forceReflow() {\n return document.body.offsetHeight;\n}\n\nfunction patchClass(el, value, isSVG) {\n const transitionClasses = el[vtcKey];\n if (transitionClasses) {\n value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(\" \");\n }\n if (value == null) {\n el.removeAttribute(\"class\");\n } else if (isSVG) {\n el.setAttribute(\"class\", value);\n } else {\n el.className = value;\n }\n}\n\nconst vShowOldKey = Symbol(\"_vod\");\nconst vShow = {\n beforeMount(el, { value }, { transition }) {\n el[vShowOldKey] = el.style.display === \"none\" ? \"\" : el.style.display;\n if (transition && value) {\n transition.beforeEnter(el);\n } else {\n setDisplay(el, value);\n }\n },\n mounted(el, { value }, { transition }) {\n if (transition && value) {\n transition.enter(el);\n }\n },\n updated(el, { value, oldValue }, { transition }) {\n if (!value === !oldValue)\n return;\n if (transition) {\n if (value) {\n transition.beforeEnter(el);\n setDisplay(el, true);\n transition.enter(el);\n } else {\n transition.leave(el, () => {\n setDisplay(el, false);\n });\n }\n } else {\n setDisplay(el, value);\n }\n },\n beforeUnmount(el, { value }) {\n setDisplay(el, value);\n }\n};\nfunction setDisplay(el, value) {\n el.style.display = value ? el[vShowOldKey] : \"none\";\n}\nfunction initVShowForSSR() {\n vShow.getSSRProps = ({ value }) => {\n if (!value) {\n return { style: { display: \"none\" } };\n }\n };\n}\n\nconst CSS_VAR_TEXT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"CSS_VAR_TEXT\" : \"\");\nfunction useCssVars(getter) {\n const instance = getCurrentInstance();\n if (!instance) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`useCssVars is called without current active component instance.`);\n return;\n }\n const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => {\n Array.from(\n document.querySelectorAll(`[data-v-owner=\"${instance.uid}\"]`)\n ).forEach((node) => setVarsOnNode(node, vars));\n };\n const setVars = () => {\n const vars = getter(instance.proxy);\n setVarsOnVNode(instance.subTree, vars);\n updateTeleports(vars);\n };\n watchPostEffect(setVars);\n onMounted(() => {\n const ob = new MutationObserver(setVars);\n ob.observe(instance.subTree.el.parentNode, { childList: true });\n onUnmounted(() => ob.disconnect());\n });\n}\nfunction setVarsOnVNode(vnode, vars) {\n if (vnode.shapeFlag & 128) {\n const suspense = vnode.suspense;\n vnode = suspense.activeBranch;\n if (suspense.pendingBranch && !suspense.isHydrating) {\n suspense.effects.push(() => {\n setVarsOnVNode(suspense.activeBranch, vars);\n });\n }\n }\n while (vnode.component) {\n vnode = vnode.component.subTree;\n }\n if (vnode.shapeFlag & 1 && vnode.el) {\n setVarsOnNode(vnode.el, vars);\n } else if (vnode.type === Fragment) {\n vnode.children.forEach((c) => setVarsOnVNode(c, vars));\n } else if (vnode.type === Static) {\n let { el, anchor } = vnode;\n while (el) {\n setVarsOnNode(el, vars);\n if (el === anchor)\n break;\n el = el.nextSibling;\n }\n }\n}\nfunction setVarsOnNode(el, vars) {\n if (el.nodeType === 1) {\n const style = el.style;\n let cssText = \"\";\n for (const key in vars) {\n style.setProperty(`--${key}`, vars[key]);\n cssText += `--${key}: ${vars[key]};`;\n }\n style[CSS_VAR_TEXT] = cssText;\n }\n}\n\nfunction patchStyle(el, prev, next) {\n const style = el.style;\n const isCssString = isString(next);\n if (next && !isCssString) {\n if (prev && !isString(prev)) {\n for (const key in prev) {\n if (next[key] == null) {\n setStyle(style, key, \"\");\n }\n }\n }\n for (const key in next) {\n setStyle(style, key, next[key]);\n }\n } else {\n const currentDisplay = style.display;\n if (isCssString) {\n if (prev !== next) {\n const cssVarText = style[CSS_VAR_TEXT];\n if (cssVarText) {\n next += \";\" + cssVarText;\n }\n style.cssText = next;\n }\n } else if (prev) {\n el.removeAttribute(\"style\");\n }\n if (vShowOldKey in el) {\n style.display = currentDisplay;\n }\n }\n}\nconst semicolonRE = /[^\\\\];\\s*$/;\nconst importantRE = /\\s*!important$/;\nfunction setStyle(style, name, val) {\n if (isArray(val)) {\n val.forEach((v) => setStyle(style, name, v));\n } else {\n if (val == null)\n val = \"\";\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (semicolonRE.test(val)) {\n warn(\n `Unexpected semicolon at the end of '${name}' style value: '${val}'`\n );\n }\n }\n if (name.startsWith(\"--\")) {\n style.setProperty(name, val);\n } else {\n const prefixed = autoPrefix(style, name);\n if (importantRE.test(val)) {\n style.setProperty(\n hyphenate(prefixed),\n val.replace(importantRE, \"\"),\n \"important\"\n );\n } else {\n style[prefixed] = val;\n }\n }\n }\n}\nconst prefixes = [\"Webkit\", \"Moz\", \"ms\"];\nconst prefixCache = {};\nfunction autoPrefix(style, rawName) {\n const cached = prefixCache[rawName];\n if (cached) {\n return cached;\n }\n let name = camelize(rawName);\n if (name !== \"filter\" && name in style) {\n return prefixCache[rawName] = name;\n }\n name = capitalize(name);\n for (let i = 0; i < prefixes.length; i++) {\n const prefixed = prefixes[i] + name;\n if (prefixed in style) {\n return prefixCache[rawName] = prefixed;\n }\n }\n return rawName;\n}\n\nconst xlinkNS = \"http://www.w3.org/1999/xlink\";\nfunction patchAttr(el, key, value, isSVG, instance) {\n if (isSVG && key.startsWith(\"xlink:\")) {\n if (value == null) {\n el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n const isBoolean = isSpecialBooleanAttr(key);\n if (value == null || isBoolean && !includeBooleanAttr(value)) {\n el.removeAttribute(key);\n } else {\n el.setAttribute(key, isBoolean ? \"\" : value);\n }\n }\n}\n\nfunction patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) {\n if (key === \"innerHTML\" || key === \"textContent\") {\n if (prevChildren) {\n unmountChildren(prevChildren, parentComponent, parentSuspense);\n }\n el[key] = value == null ? \"\" : value;\n return;\n }\n const tag = el.tagName;\n if (key === \"value\" && tag !== \"PROGRESS\" && // custom elements may use _value internally\n !tag.includes(\"-\")) {\n el._value = value;\n const oldValue = tag === \"OPTION\" ? el.getAttribute(\"value\") : el.value;\n const newValue = value == null ? \"\" : value;\n if (oldValue !== newValue) {\n el.value = newValue;\n }\n if (value == null) {\n el.removeAttribute(key);\n }\n return;\n }\n let needRemove = false;\n if (value === \"\" || value == null) {\n const type = typeof el[key];\n if (type === \"boolean\") {\n value = includeBooleanAttr(value);\n } else if (value == null && type === \"string\") {\n value = \"\";\n needRemove = true;\n } else if (type === \"number\") {\n value = 0;\n needRemove = true;\n }\n }\n try {\n el[key] = value;\n } catch (e) {\n if (!!(process.env.NODE_ENV !== \"production\") && !needRemove) {\n warn(\n `Failed setting prop \"${key}\" on <${tag.toLowerCase()}>: value ${value} is invalid.`,\n e\n );\n }\n }\n needRemove && el.removeAttribute(key);\n}\n\nfunction addEventListener(el, event, handler, options) {\n el.addEventListener(event, handler, options);\n}\nfunction removeEventListener(el, event, handler, options) {\n el.removeEventListener(event, handler, options);\n}\nconst veiKey = Symbol(\"_vei\");\nfunction patchEvent(el, rawName, prevValue, nextValue, instance = null) {\n const invokers = el[veiKey] || (el[veiKey] = {});\n const existingInvoker = invokers[rawName];\n if (nextValue && existingInvoker) {\n existingInvoker.value = nextValue;\n } else {\n const [name, options] = parseName(rawName);\n if (nextValue) {\n const invoker = invokers[rawName] = createInvoker(nextValue, instance);\n addEventListener(el, name, invoker, options);\n } else if (existingInvoker) {\n removeEventListener(el, name, existingInvoker, options);\n invokers[rawName] = void 0;\n }\n }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseName(name) {\n let options;\n if (optionsModifierRE.test(name)) {\n options = {};\n let m;\n while (m = name.match(optionsModifierRE)) {\n name = name.slice(0, name.length - m[0].length);\n options[m[0].toLowerCase()] = true;\n }\n }\n const event = name[2] === \":\" ? name.slice(3) : hyphenate(name.slice(2));\n return [event, options];\n}\nlet cachedNow = 0;\nconst p = /* @__PURE__ */ Promise.resolve();\nconst getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now());\nfunction createInvoker(initialValue, instance) {\n const invoker = (e) => {\n if (!e._vts) {\n e._vts = Date.now();\n } else if (e._vts <= invoker.attached) {\n return;\n }\n callWithAsyncErrorHandling(\n patchStopImmediatePropagation(e, invoker.value),\n instance,\n 5,\n [e]\n );\n };\n invoker.value = initialValue;\n invoker.attached = getNow();\n return invoker;\n}\nfunction patchStopImmediatePropagation(e, value) {\n if (isArray(value)) {\n const originalStop = e.stopImmediatePropagation;\n e.stopImmediatePropagation = () => {\n originalStop.call(e);\n e._stopped = true;\n };\n return value.map((fn) => (e2) => !e2._stopped && fn && fn(e2));\n } else {\n return value;\n }\n}\n\nconst isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter\nkey.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;\nconst patchProp = (el, key, prevValue, nextValue, namespace, prevChildren, parentComponent, parentSuspense, unmountChildren) => {\n const isSVG = namespace === \"svg\";\n if (key === \"class\") {\n patchClass(el, nextValue, isSVG);\n } else if (key === \"style\") {\n patchStyle(el, prevValue, nextValue);\n } else if (isOn(key)) {\n if (!isModelListener(key)) {\n patchEvent(el, key, prevValue, nextValue, parentComponent);\n }\n } else if (key[0] === \".\" ? (key = key.slice(1), true) : key[0] === \"^\" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {\n patchDOMProp(\n el,\n key,\n nextValue,\n prevChildren,\n parentComponent,\n parentSuspense,\n unmountChildren\n );\n } else {\n if (key === \"true-value\") {\n el._trueValue = nextValue;\n } else if (key === \"false-value\") {\n el._falseValue = nextValue;\n }\n patchAttr(el, key, nextValue, isSVG);\n }\n};\nfunction shouldSetAsProp(el, key, value, isSVG) {\n if (isSVG) {\n if (key === \"innerHTML\" || key === \"textContent\") {\n return true;\n }\n if (key in el && isNativeOn(key) && isFunction(value)) {\n return true;\n }\n return false;\n }\n if (key === \"spellcheck\" || key === \"draggable\" || key === \"translate\") {\n return false;\n }\n if (key === \"form\") {\n return false;\n }\n if (key === \"list\" && el.tagName === \"INPUT\") {\n return false;\n }\n if (key === \"type\" && el.tagName === \"TEXTAREA\") {\n return false;\n }\n if (key === \"width\" || key === \"height\") {\n const tag = el.tagName;\n if (tag === \"IMG\" || tag === \"VIDEO\" || tag === \"CANVAS\" || tag === \"SOURCE\") {\n return false;\n }\n }\n if (isNativeOn(key) && isString(value)) {\n return false;\n }\n return key in el;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineCustomElement(options, hydrate2) {\n const Comp = defineComponent(options);\n class VueCustomElement extends VueElement {\n constructor(initialProps) {\n super(Comp, initialProps, hydrate2);\n }\n }\n VueCustomElement.def = Comp;\n return VueCustomElement;\n}\n/*! #__NO_SIDE_EFFECTS__ */\nconst defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options) => {\n return /* @__PURE__ */ defineCustomElement(options, hydrate);\n};\nconst BaseClass = typeof HTMLElement !== \"undefined\" ? HTMLElement : class {\n};\nclass VueElement extends BaseClass {\n constructor(_def, _props = {}, hydrate2) {\n super();\n this._def = _def;\n this._props = _props;\n /**\n * @internal\n */\n this._instance = null;\n this._connected = false;\n this._resolved = false;\n this._numberProps = null;\n this._ob = null;\n if (this.shadowRoot && hydrate2) {\n hydrate2(this._createVNode(), this.shadowRoot);\n } else {\n if (!!(process.env.NODE_ENV !== \"production\") && this.shadowRoot) {\n warn(\n `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \\`defineSSRCustomElement\\`.`\n );\n }\n this.attachShadow({ mode: \"open\" });\n if (!this._def.__asyncLoader) {\n this._resolveProps(this._def);\n }\n }\n }\n connectedCallback() {\n this._connected = true;\n if (!this._instance) {\n if (this._resolved) {\n this._update();\n } else {\n this._resolveDef();\n }\n }\n }\n disconnectedCallback() {\n this._connected = false;\n if (this._ob) {\n this._ob.disconnect();\n this._ob = null;\n }\n nextTick(() => {\n if (!this._connected) {\n render(null, this.shadowRoot);\n this._instance = null;\n }\n });\n }\n /**\n * resolve inner component definition (handle possible async component)\n */\n _resolveDef() {\n this._resolved = true;\n for (let i = 0; i < this.attributes.length; i++) {\n this._setAttr(this.attributes[i].name);\n }\n this._ob = new MutationObserver((mutations) => {\n for (const m of mutations) {\n this._setAttr(m.attributeName);\n }\n });\n this._ob.observe(this, { attributes: true });\n const resolve = (def, isAsync = false) => {\n const { props, styles } = def;\n let numberProps;\n if (props && !isArray(props)) {\n for (const key in props) {\n const opt = props[key];\n if (opt === Number || opt && opt.type === Number) {\n if (key in this._props) {\n this._props[key] = toNumber(this._props[key]);\n }\n (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize$1(key)] = true;\n }\n }\n }\n this._numberProps = numberProps;\n if (isAsync) {\n this._resolveProps(def);\n }\n this._applyStyles(styles);\n this._update();\n };\n const asyncDef = this._def.__asyncLoader;\n if (asyncDef) {\n asyncDef().then((def) => resolve(def, true));\n } else {\n resolve(this._def);\n }\n }\n _resolveProps(def) {\n const { props } = def;\n const declaredPropKeys = isArray(props) ? props : Object.keys(props || {});\n for (const key of Object.keys(this)) {\n if (key[0] !== \"_\" && declaredPropKeys.includes(key)) {\n this._setProp(key, this[key], true, false);\n }\n }\n for (const key of declaredPropKeys.map(camelize$1)) {\n Object.defineProperty(this, key, {\n get() {\n return this._getProp(key);\n },\n set(val) {\n this._setProp(key, val);\n }\n });\n }\n }\n _setAttr(key) {\n let value = this.getAttribute(key);\n const camelKey = camelize$1(key);\n if (this._numberProps && this._numberProps[camelKey]) {\n value = toNumber(value);\n }\n this._setProp(camelKey, value, false);\n }\n /**\n * @internal\n */\n _getProp(key) {\n return this._props[key];\n }\n /**\n * @internal\n */\n _setProp(key, val, shouldReflect = true, shouldUpdate = true) {\n if (val !== this._props[key]) {\n this._props[key] = val;\n if (shouldUpdate && this._instance) {\n this._update();\n }\n if (shouldReflect) {\n if (val === true) {\n this.setAttribute(hyphenate(key), \"\");\n } else if (typeof val === \"string\" || typeof val === \"number\") {\n this.setAttribute(hyphenate(key), val + \"\");\n } else if (!val) {\n this.removeAttribute(hyphenate(key));\n }\n }\n }\n }\n _update() {\n render(this._createVNode(), this.shadowRoot);\n }\n _createVNode() {\n const vnode = createVNode(this._def, extend({}, this._props));\n if (!this._instance) {\n vnode.ce = (instance) => {\n this._instance = instance;\n instance.isCE = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n instance.ceReload = (newStyles) => {\n if (this._styles) {\n this._styles.forEach((s) => this.shadowRoot.removeChild(s));\n this._styles.length = 0;\n }\n this._applyStyles(newStyles);\n this._instance = null;\n this._update();\n };\n }\n const dispatch = (event, args) => {\n this.dispatchEvent(\n new CustomEvent(event, {\n detail: args\n })\n );\n };\n instance.emit = (event, ...args) => {\n dispatch(event, args);\n if (hyphenate(event) !== event) {\n dispatch(hyphenate(event), args);\n }\n };\n let parent = this;\n while (parent = parent && (parent.parentNode || parent.host)) {\n if (parent instanceof VueElement) {\n instance.parent = parent._instance;\n instance.provides = parent._instance.provides;\n break;\n }\n }\n };\n }\n return vnode;\n }\n _applyStyles(styles) {\n if (styles) {\n styles.forEach((css) => {\n const s = document.createElement(\"style\");\n s.textContent = css;\n this.shadowRoot.appendChild(s);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (this._styles || (this._styles = [])).push(s);\n }\n });\n }\n }\n}\n\nfunction useCssModule(name = \"$style\") {\n {\n const instance = getCurrentInstance();\n if (!instance) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`useCssModule must be called inside setup()`);\n return EMPTY_OBJ;\n }\n const modules = instance.type.__cssModules;\n if (!modules) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS modules injected.`);\n return EMPTY_OBJ;\n }\n const mod = modules[name];\n if (!mod) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS module named \"${name}\".`);\n return EMPTY_OBJ;\n }\n return mod;\n }\n}\n\nconst positionMap = /* @__PURE__ */ new WeakMap();\nconst newPositionMap = /* @__PURE__ */ new WeakMap();\nconst moveCbKey = Symbol(\"_moveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nconst TransitionGroupImpl = {\n name: \"TransitionGroup\",\n props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {\n tag: String,\n moveClass: String\n }),\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevChildren;\n let children;\n onUpdated(() => {\n if (!prevChildren.length) {\n return;\n }\n const moveClass = props.moveClass || `${props.name || \"v\"}-move`;\n if (!hasCSSTransform(\n prevChildren[0].el,\n instance.vnode.el,\n moveClass\n )) {\n return;\n }\n prevChildren.forEach(callPendingCbs);\n prevChildren.forEach(recordPosition);\n const movedChildren = prevChildren.filter(applyTranslation);\n forceReflow();\n movedChildren.forEach((c) => {\n const el = c.el;\n const style = el.style;\n addTransitionClass(el, moveClass);\n style.transform = style.webkitTransform = style.transitionDuration = \"\";\n const cb = el[moveCbKey] = (e) => {\n if (e && e.target !== el) {\n return;\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(\"transitionend\", cb);\n el[moveCbKey] = null;\n removeTransitionClass(el, moveClass);\n }\n };\n el.addEventListener(\"transitionend\", cb);\n });\n });\n return () => {\n const rawProps = toRaw(props);\n const cssTransitionProps = resolveTransitionProps(rawProps);\n let tag = rawProps.tag || Fragment;\n prevChildren = children;\n children = slots.default ? getTransitionRawChildren(slots.default()) : [];\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child.key != null) {\n setTransitionHooks(\n child,\n resolveTransitionHooks(child, cssTransitionProps, state, instance)\n );\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`<TransitionGroup> children must be keyed.`);\n }\n }\n if (prevChildren) {\n for (let i = 0; i < prevChildren.length; i++) {\n const child = prevChildren[i];\n setTransitionHooks(\n child,\n resolveTransitionHooks(child, cssTransitionProps, state, instance)\n );\n positionMap.set(child, child.el.getBoundingClientRect());\n }\n }\n return createVNode(tag, null, children);\n };\n }\n};\nconst removeMode = (props) => delete props.mode;\n/* @__PURE__ */ removeMode(TransitionGroupImpl.props);\nconst TransitionGroup = TransitionGroupImpl;\nfunction callPendingCbs(c) {\n const el = c.el;\n if (el[moveCbKey]) {\n el[moveCbKey]();\n }\n if (el[enterCbKey]) {\n el[enterCbKey]();\n }\n}\nfunction recordPosition(c) {\n newPositionMap.set(c, c.el.getBoundingClientRect());\n}\nfunction applyTranslation(c) {\n const oldPos = positionMap.get(c);\n const newPos = newPositionMap.get(c);\n const dx = oldPos.left - newPos.left;\n const dy = oldPos.top - newPos.top;\n if (dx || dy) {\n const s = c.el.style;\n s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\n s.transitionDuration = \"0s\";\n return c;\n }\n}\nfunction hasCSSTransform(el, root, moveClass) {\n const clone = el.cloneNode();\n const _vtc = el[vtcKey];\n if (_vtc) {\n _vtc.forEach((cls) => {\n cls.split(/\\s+/).forEach((c) => c && clone.classList.remove(c));\n });\n }\n moveClass.split(/\\s+/).forEach((c) => c && clone.classList.add(c));\n clone.style.display = \"none\";\n const container = root.nodeType === 1 ? root : root.parentNode;\n container.appendChild(clone);\n const { hasTransform } = getTransitionInfo(clone);\n container.removeChild(clone);\n return hasTransform;\n}\n\nconst getModelAssigner = (vnode) => {\n const fn = vnode.props[\"onUpdate:modelValue\"] || false;\n return isArray(fn) ? (value) => invokeArrayFns(fn, value) : fn;\n};\nfunction onCompositionStart(e) {\n e.target.composing = true;\n}\nfunction onCompositionEnd(e) {\n const target = e.target;\n if (target.composing) {\n target.composing = false;\n target.dispatchEvent(new Event(\"input\"));\n }\n}\nconst assignKey = Symbol(\"_assign\");\nconst vModelText = {\n created(el, { modifiers: { lazy, trim, number } }, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n const castToNumber = number || vnode.props && vnode.props.type === \"number\";\n addEventListener(el, lazy ? \"change\" : \"input\", (e) => {\n if (e.target.composing)\n return;\n let domValue = el.value;\n if (trim) {\n domValue = domValue.trim();\n }\n if (castToNumber) {\n domValue = looseToNumber(domValue);\n }\n el[assignKey](domValue);\n });\n if (trim) {\n addEventListener(el, \"change\", () => {\n el.value = el.value.trim();\n });\n }\n if (!lazy) {\n addEventListener(el, \"compositionstart\", onCompositionStart);\n addEventListener(el, \"compositionend\", onCompositionEnd);\n addEventListener(el, \"change\", onCompositionEnd);\n }\n },\n // set value on mounted so it's after min/max for type=\"range\"\n mounted(el, { value }) {\n el.value = value == null ? \"\" : value;\n },\n beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n if (el.composing)\n return;\n const elValue = number || el.type === \"number\" ? looseToNumber(el.value) : el.value;\n const newValue = value == null ? \"\" : value;\n if (elValue === newValue) {\n return;\n }\n if (document.activeElement === el && el.type !== \"range\") {\n if (lazy) {\n return;\n }\n if (trim && el.value.trim() === newValue) {\n return;\n }\n }\n el.value = newValue;\n }\n};\nconst vModelCheckbox = {\n // #4096 array checkboxes need to be deep traversed\n deep: true,\n created(el, _, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n addEventListener(el, \"change\", () => {\n const modelValue = el._modelValue;\n const elementValue = getValue(el);\n const checked = el.checked;\n const assign = el[assignKey];\n if (isArray(modelValue)) {\n const index = looseIndexOf(modelValue, elementValue);\n const found = index !== -1;\n if (checked && !found) {\n assign(modelValue.concat(elementValue));\n } else if (!checked && found) {\n const filtered = [...modelValue];\n filtered.splice(index, 1);\n assign(filtered);\n }\n } else if (isSet(modelValue)) {\n const cloned = new Set(modelValue);\n if (checked) {\n cloned.add(elementValue);\n } else {\n cloned.delete(elementValue);\n }\n assign(cloned);\n } else {\n assign(getCheckboxValue(el, checked));\n }\n });\n },\n // set initial checked on mount to wait for true-value/false-value\n mounted: setChecked,\n beforeUpdate(el, binding, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n setChecked(el, binding, vnode);\n }\n};\nfunction setChecked(el, { value, oldValue }, vnode) {\n el._modelValue = value;\n if (isArray(value)) {\n el.checked = looseIndexOf(value, vnode.props.value) > -1;\n } else if (isSet(value)) {\n el.checked = value.has(vnode.props.value);\n } else if (value !== oldValue) {\n el.checked = looseEqual(value, getCheckboxValue(el, true));\n }\n}\nconst vModelRadio = {\n created(el, { value }, vnode) {\n el.checked = looseEqual(value, vnode.props.value);\n el[assignKey] = getModelAssigner(vnode);\n addEventListener(el, \"change\", () => {\n el[assignKey](getValue(el));\n });\n },\n beforeUpdate(el, { value, oldValue }, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n if (value !== oldValue) {\n el.checked = looseEqual(value, vnode.props.value);\n }\n }\n};\nconst vModelSelect = {\n // <select multiple> value need to be deep traversed\n deep: true,\n created(el, { value, modifiers: { number } }, vnode) {\n const isSetModel = isSet(value);\n addEventListener(el, \"change\", () => {\n const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map(\n (o) => number ? looseToNumber(getValue(o)) : getValue(o)\n );\n el[assignKey](\n el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]\n );\n });\n el[assignKey] = getModelAssigner(vnode);\n },\n // set value in mounted & updated because <select> relies on its children\n // <option>s.\n mounted(el, { value }) {\n setSelected(el, value);\n },\n beforeUpdate(el, _binding, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n },\n updated(el, { value }) {\n setSelected(el, value);\n }\n};\nfunction setSelected(el, value) {\n const isMultiple = el.multiple;\n if (isMultiple && !isArray(value) && !isSet(value)) {\n !!(process.env.NODE_ENV !== \"production\") && warn(\n `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.`\n );\n return;\n }\n for (let i = 0, l = el.options.length; i < l; i++) {\n const option = el.options[i];\n const optionValue = getValue(option);\n if (isMultiple) {\n if (isArray(value)) {\n option.selected = looseIndexOf(value, optionValue) > -1;\n } else {\n option.selected = value.has(optionValue);\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i)\n el.selectedIndex = i;\n return;\n }\n }\n }\n if (!isMultiple && el.selectedIndex !== -1) {\n el.selectedIndex = -1;\n }\n}\nfunction getValue(el) {\n return \"_value\" in el ? el._value : el.value;\n}\nfunction getCheckboxValue(el, checked) {\n const key = checked ? \"_trueValue\" : \"_falseValue\";\n return key in el ? el[key] : checked;\n}\nconst vModelDynamic = {\n created(el, binding, vnode) {\n callModelHook(el, binding, vnode, null, \"created\");\n },\n mounted(el, binding, vnode) {\n callModelHook(el, binding, vnode, null, \"mounted\");\n },\n beforeUpdate(el, binding, vnode, prevVNode) {\n callModelHook(el, binding, vnode, prevVNode, \"beforeUpdate\");\n },\n updated(el, binding, vnode, prevVNode) {\n callModelHook(el, binding, vnode, prevVNode, \"updated\");\n }\n};\nfunction resolveDynamicModel(tagName, type) {\n switch (tagName) {\n case \"SELECT\":\n return vModelSelect;\n case \"TEXTAREA\":\n return vModelText;\n default:\n switch (type) {\n case \"checkbox\":\n return vModelCheckbox;\n case \"radio\":\n return vModelRadio;\n default:\n return vModelText;\n }\n }\n}\nfunction callModelHook(el, binding, vnode, prevVNode, hook) {\n const modelToUse = resolveDynamicModel(\n el.tagName,\n vnode.props && vnode.props.type\n );\n const fn = modelToUse[hook];\n fn && fn(el, binding, vnode, prevVNode);\n}\nfunction initVModelForSSR() {\n vModelText.getSSRProps = ({ value }) => ({ value });\n vModelRadio.getSSRProps = ({ value }, vnode) => {\n if (vnode.props && looseEqual(vnode.props.value, value)) {\n return { checked: true };\n }\n };\n vModelCheckbox.getSSRProps = ({ value }, vnode) => {\n if (isArray(value)) {\n if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) {\n return { checked: true };\n }\n } else if (isSet(value)) {\n if (vnode.props && value.has(vnode.props.value)) {\n return { checked: true };\n }\n } else if (value) {\n return { checked: true };\n }\n };\n vModelDynamic.getSSRProps = (binding, vnode) => {\n if (typeof vnode.type !== \"string\") {\n return;\n }\n const modelToUse = resolveDynamicModel(\n // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase\n vnode.type.toUpperCase(),\n vnode.props && vnode.props.type\n );\n if (modelToUse.getSSRProps) {\n return modelToUse.getSSRProps(binding, vnode);\n }\n };\n}\n\nconst systemModifiers = [\"ctrl\", \"shift\", \"alt\", \"meta\"];\nconst modifierGuards = {\n stop: (e) => e.stopPropagation(),\n prevent: (e) => e.preventDefault(),\n self: (e) => e.target !== e.currentTarget,\n ctrl: (e) => !e.ctrlKey,\n shift: (e) => !e.shiftKey,\n alt: (e) => !e.altKey,\n meta: (e) => !e.metaKey,\n left: (e) => \"button\" in e && e.button !== 0,\n middle: (e) => \"button\" in e && e.button !== 1,\n right: (e) => \"button\" in e && e.button !== 2,\n exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))\n};\nconst withModifiers = (fn, modifiers) => {\n const cache = fn._withMods || (fn._withMods = {});\n const cacheKey = modifiers.join(\".\");\n return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => {\n for (let i = 0; i < modifiers.length; i++) {\n const guard = modifierGuards[modifiers[i]];\n if (guard && guard(event, modifiers))\n return;\n }\n return fn(event, ...args);\n });\n};\nconst keyNames = {\n esc: \"escape\",\n space: \" \",\n up: \"arrow-up\",\n left: \"arrow-left\",\n right: \"arrow-right\",\n down: \"arrow-down\",\n delete: \"backspace\"\n};\nconst withKeys = (fn, modifiers) => {\n const cache = fn._withKeys || (fn._withKeys = {});\n const cacheKey = modifiers.join(\".\");\n return cache[cacheKey] || (cache[cacheKey] = (event) => {\n if (!(\"key\" in event)) {\n return;\n }\n const eventKey = hyphenate(event.key);\n if (modifiers.some((k) => k === eventKey || keyNames[k] === eventKey)) {\n return fn(event);\n }\n });\n};\n\nconst rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);\nlet renderer;\nlet enabledHydration = false;\nfunction ensureRenderer() {\n return renderer || (renderer = createRenderer(rendererOptions));\n}\nfunction ensureHydrationRenderer() {\n renderer = enabledHydration ? renderer : createHydrationRenderer(rendererOptions);\n enabledHydration = true;\n return renderer;\n}\nconst render = (...args) => {\n ensureRenderer().render(...args);\n};\nconst hydrate = (...args) => {\n ensureHydrationRenderer().hydrate(...args);\n};\nconst createApp = (...args) => {\n const app = ensureRenderer().createApp(...args);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n injectNativeTagCheck(app);\n injectCompilerOptionsCheck(app);\n }\n const { mount } = app;\n app.mount = (containerOrSelector) => {\n const container = normalizeContainer(containerOrSelector);\n if (!container)\n return;\n const component = app._component;\n if (!isFunction(component) && !component.render && !component.template) {\n component.template = container.innerHTML;\n }\n container.innerHTML = \"\";\n const proxy = mount(container, false, resolveRootNamespace(container));\n if (container instanceof Element) {\n container.removeAttribute(\"v-cloak\");\n container.setAttribute(\"data-v-app\", \"\");\n }\n return proxy;\n };\n return app;\n};\nconst createSSRApp = (...args) => {\n const app = ensureHydrationRenderer().createApp(...args);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n injectNativeTagCheck(app);\n injectCompilerOptionsCheck(app);\n }\n const { mount } = app;\n app.mount = (containerOrSelector) => {\n const container = normalizeContainer(containerOrSelector);\n if (container) {\n return mount(container, true, resolveRootNamespace(container));\n }\n };\n return app;\n};\nfunction resolveRootNamespace(container) {\n if (container instanceof SVGElement) {\n return \"svg\";\n }\n if (typeof MathMLElement === \"function\" && container instanceof MathMLElement) {\n return \"mathml\";\n }\n}\nfunction injectNativeTagCheck(app) {\n Object.defineProperty(app.config, \"isNativeTag\", {\n value: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag),\n writable: false\n });\n}\nfunction injectCompilerOptionsCheck(app) {\n if (isRuntimeOnly()) {\n const isCustomElement = app.config.isCustomElement;\n Object.defineProperty(app.config, \"isCustomElement\", {\n get() {\n return isCustomElement;\n },\n set() {\n warn(\n `The \\`isCustomElement\\` config option is deprecated. Use \\`compilerOptions.isCustomElement\\` instead.`\n );\n }\n });\n const compilerOptions = app.config.compilerOptions;\n const msg = `The \\`compilerOptions\\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka \"full build\"). Since you are using the runtime-only build, \\`compilerOptions\\` must be passed to \\`@vue/compiler-dom\\` in the build setup instead.\n- For vue-loader: pass it via vue-loader's \\`compilerOptions\\` loader option.\n- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\n- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`;\n Object.defineProperty(app.config, \"compilerOptions\", {\n get() {\n warn(msg);\n return compilerOptions;\n },\n set() {\n warn(msg);\n }\n });\n }\n}\nfunction normalizeContainer(container) {\n if (isString(container)) {\n const res = document.querySelector(container);\n if (!!(process.env.NODE_ENV !== \"production\") && !res) {\n warn(\n `Failed to mount app: mount target selector \"${container}\" returned null.`\n );\n }\n return res;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === \"closed\") {\n warn(\n `mounting on a ShadowRoot with \\`{mode: \"closed\"}\\` may lead to unpredictable bugs`\n );\n }\n return container;\n}\nlet ssrDirectiveInitialized = false;\nconst initDirectivesForSSR = () => {\n if (!ssrDirectiveInitialized) {\n ssrDirectiveInitialized = true;\n initVModelForSSR();\n initVShowForSSR();\n }\n} ;\n\nexport { Transition, TransitionGroup, VueElement, createApp, createSSRApp, defineCustomElement, defineSSRCustomElement, hydrate, initDirectivesForSSR, render, useCssModule, useCssVars, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, withKeys, withModifiers };\n","import { isString, NOOP, isObject, NO, extend, isSymbol, isArray, capitalize, camelize, EMPTY_OBJ, PatchFlagNames, slotFlagsText, isOn, isBuiltInDirective, isReservedProp, toHandlerKey } from '@vue/shared';\nexport { generateCodeFrame } from '@vue/shared';\n\nconst FRAGMENT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `Fragment` : ``);\nconst TELEPORT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `Teleport` : ``);\nconst SUSPENSE = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `Suspense` : ``);\nconst KEEP_ALIVE = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `KeepAlive` : ``);\nconst BASE_TRANSITION = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `BaseTransition` : ``);\nconst OPEN_BLOCK = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `openBlock` : ``);\nconst CREATE_BLOCK = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `createBlock` : ``);\nconst CREATE_ELEMENT_BLOCK = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `createElementBlock` : ``);\nconst CREATE_VNODE = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `createVNode` : ``);\nconst CREATE_ELEMENT_VNODE = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `createElementVNode` : ``);\nconst CREATE_COMMENT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `createCommentVNode` : ``);\nconst CREATE_TEXT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `createTextVNode` : ``);\nconst CREATE_STATIC = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `createStaticVNode` : ``);\nconst RESOLVE_COMPONENT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `resolveComponent` : ``);\nconst RESOLVE_DYNAMIC_COMPONENT = Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? `resolveDynamicComponent` : ``\n);\nconst RESOLVE_DIRECTIVE = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `resolveDirective` : ``);\nconst RESOLVE_FILTER = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `resolveFilter` : ``);\nconst WITH_DIRECTIVES = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `withDirectives` : ``);\nconst RENDER_LIST = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `renderList` : ``);\nconst RENDER_SLOT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `renderSlot` : ``);\nconst CREATE_SLOTS = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `createSlots` : ``);\nconst TO_DISPLAY_STRING = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `toDisplayString` : ``);\nconst MERGE_PROPS = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `mergeProps` : ``);\nconst NORMALIZE_CLASS = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `normalizeClass` : ``);\nconst NORMALIZE_STYLE = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `normalizeStyle` : ``);\nconst NORMALIZE_PROPS = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `normalizeProps` : ``);\nconst GUARD_REACTIVE_PROPS = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `guardReactiveProps` : ``);\nconst TO_HANDLERS = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `toHandlers` : ``);\nconst CAMELIZE = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `camelize` : ``);\nconst CAPITALIZE = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `capitalize` : ``);\nconst TO_HANDLER_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `toHandlerKey` : ``);\nconst SET_BLOCK_TRACKING = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `setBlockTracking` : ``);\nconst PUSH_SCOPE_ID = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `pushScopeId` : ``);\nconst POP_SCOPE_ID = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `popScopeId` : ``);\nconst WITH_CTX = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `withCtx` : ``);\nconst UNREF = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `unref` : ``);\nconst IS_REF = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `isRef` : ``);\nconst WITH_MEMO = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `withMemo` : ``);\nconst IS_MEMO_SAME = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `isMemoSame` : ``);\nconst helperNameMap = {\n [FRAGMENT]: `Fragment`,\n [TELEPORT]: `Teleport`,\n [SUSPENSE]: `Suspense`,\n [KEEP_ALIVE]: `KeepAlive`,\n [BASE_TRANSITION]: `BaseTransition`,\n [OPEN_BLOCK]: `openBlock`,\n [CREATE_BLOCK]: `createBlock`,\n [CREATE_ELEMENT_BLOCK]: `createElementBlock`,\n [CREATE_VNODE]: `createVNode`,\n [CREATE_ELEMENT_VNODE]: `createElementVNode`,\n [CREATE_COMMENT]: `createCommentVNode`,\n [CREATE_TEXT]: `createTextVNode`,\n [CREATE_STATIC]: `createStaticVNode`,\n [RESOLVE_COMPONENT]: `resolveComponent`,\n [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`,\n [RESOLVE_DIRECTIVE]: `resolveDirective`,\n [RESOLVE_FILTER]: `resolveFilter`,\n [WITH_DIRECTIVES]: `withDirectives`,\n [RENDER_LIST]: `renderList`,\n [RENDER_SLOT]: `renderSlot`,\n [CREATE_SLOTS]: `createSlots`,\n [TO_DISPLAY_STRING]: `toDisplayString`,\n [MERGE_PROPS]: `mergeProps`,\n [NORMALIZE_CLASS]: `normalizeClass`,\n [NORMALIZE_STYLE]: `normalizeStyle`,\n [NORMALIZE_PROPS]: `normalizeProps`,\n [GUARD_REACTIVE_PROPS]: `guardReactiveProps`,\n [TO_HANDLERS]: `toHandlers`,\n [CAMELIZE]: `camelize`,\n [CAPITALIZE]: `capitalize`,\n [TO_HANDLER_KEY]: `toHandlerKey`,\n [SET_BLOCK_TRACKING]: `setBlockTracking`,\n [PUSH_SCOPE_ID]: `pushScopeId`,\n [POP_SCOPE_ID]: `popScopeId`,\n [WITH_CTX]: `withCtx`,\n [UNREF]: `unref`,\n [IS_REF]: `isRef`,\n [WITH_MEMO]: `withMemo`,\n [IS_MEMO_SAME]: `isMemoSame`\n};\nfunction registerRuntimeHelpers(helpers) {\n Object.getOwnPropertySymbols(helpers).forEach((s) => {\n helperNameMap[s] = helpers[s];\n });\n}\n\nconst Namespaces = {\n \"HTML\": 0,\n \"0\": \"HTML\",\n \"SVG\": 1,\n \"1\": \"SVG\",\n \"MATH_ML\": 2,\n \"2\": \"MATH_ML\"\n};\nconst NodeTypes = {\n \"ROOT\": 0,\n \"0\": \"ROOT\",\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"TEXT\": 2,\n \"2\": \"TEXT\",\n \"COMMENT\": 3,\n \"3\": \"COMMENT\",\n \"SIMPLE_EXPRESSION\": 4,\n \"4\": \"SIMPLE_EXPRESSION\",\n \"INTERPOLATION\": 5,\n \"5\": \"INTERPOLATION\",\n \"ATTRIBUTE\": 6,\n \"6\": \"ATTRIBUTE\",\n \"DIRECTIVE\": 7,\n \"7\": \"DIRECTIVE\",\n \"COMPOUND_EXPRESSION\": 8,\n \"8\": \"COMPOUND_EXPRESSION\",\n \"IF\": 9,\n \"9\": \"IF\",\n \"IF_BRANCH\": 10,\n \"10\": \"IF_BRANCH\",\n \"FOR\": 11,\n \"11\": \"FOR\",\n \"TEXT_CALL\": 12,\n \"12\": \"TEXT_CALL\",\n \"VNODE_CALL\": 13,\n \"13\": \"VNODE_CALL\",\n \"JS_CALL_EXPRESSION\": 14,\n \"14\": \"JS_CALL_EXPRESSION\",\n \"JS_OBJECT_EXPRESSION\": 15,\n \"15\": \"JS_OBJECT_EXPRESSION\",\n \"JS_PROPERTY\": 16,\n \"16\": \"JS_PROPERTY\",\n \"JS_ARRAY_EXPRESSION\": 17,\n \"17\": \"JS_ARRAY_EXPRESSION\",\n \"JS_FUNCTION_EXPRESSION\": 18,\n \"18\": \"JS_FUNCTION_EXPRESSION\",\n \"JS_CONDITIONAL_EXPRESSION\": 19,\n \"19\": \"JS_CONDITIONAL_EXPRESSION\",\n \"JS_CACHE_EXPRESSION\": 20,\n \"20\": \"JS_CACHE_EXPRESSION\",\n \"JS_BLOCK_STATEMENT\": 21,\n \"21\": \"JS_BLOCK_STATEMENT\",\n \"JS_TEMPLATE_LITERAL\": 22,\n \"22\": \"JS_TEMPLATE_LITERAL\",\n \"JS_IF_STATEMENT\": 23,\n \"23\": \"JS_IF_STATEMENT\",\n \"JS_ASSIGNMENT_EXPRESSION\": 24,\n \"24\": \"JS_ASSIGNMENT_EXPRESSION\",\n \"JS_SEQUENCE_EXPRESSION\": 25,\n \"25\": \"JS_SEQUENCE_EXPRESSION\",\n \"JS_RETURN_STATEMENT\": 26,\n \"26\": \"JS_RETURN_STATEMENT\"\n};\nconst ElementTypes = {\n \"ELEMENT\": 0,\n \"0\": \"ELEMENT\",\n \"COMPONENT\": 1,\n \"1\": \"COMPONENT\",\n \"SLOT\": 2,\n \"2\": \"SLOT\",\n \"TEMPLATE\": 3,\n \"3\": \"TEMPLATE\"\n};\nconst ConstantTypes = {\n \"NOT_CONSTANT\": 0,\n \"0\": \"NOT_CONSTANT\",\n \"CAN_SKIP_PATCH\": 1,\n \"1\": \"CAN_SKIP_PATCH\",\n \"CAN_HOIST\": 2,\n \"2\": \"CAN_HOIST\",\n \"CAN_STRINGIFY\": 3,\n \"3\": \"CAN_STRINGIFY\"\n};\nconst locStub = {\n start: { line: 1, column: 1, offset: 0 },\n end: { line: 1, column: 1, offset: 0 },\n source: \"\"\n};\nfunction createRoot(children, source = \"\") {\n return {\n type: 0,\n source,\n children,\n helpers: /* @__PURE__ */ new Set(),\n components: [],\n directives: [],\n hoists: [],\n imports: [],\n cached: 0,\n temps: 0,\n codegenNode: void 0,\n loc: locStub\n };\n}\nfunction createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) {\n if (context) {\n if (isBlock) {\n context.helper(OPEN_BLOCK);\n context.helper(getVNodeBlockHelper(context.inSSR, isComponent));\n } else {\n context.helper(getVNodeHelper(context.inSSR, isComponent));\n }\n if (directives) {\n context.helper(WITH_DIRECTIVES);\n }\n }\n return {\n type: 13,\n tag,\n props,\n children,\n patchFlag,\n dynamicProps,\n directives,\n isBlock,\n disableTracking,\n isComponent,\n loc\n };\n}\nfunction createArrayExpression(elements, loc = locStub) {\n return {\n type: 17,\n loc,\n elements\n };\n}\nfunction createObjectExpression(properties, loc = locStub) {\n return {\n type: 15,\n loc,\n properties\n };\n}\nfunction createObjectProperty(key, value) {\n return {\n type: 16,\n loc: locStub,\n key: isString(key) ? createSimpleExpression(key, true) : key,\n value\n };\n}\nfunction createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) {\n return {\n type: 4,\n loc,\n content,\n isStatic,\n constType: isStatic ? 3 : constType\n };\n}\nfunction createInterpolation(content, loc) {\n return {\n type: 5,\n loc,\n content: isString(content) ? createSimpleExpression(content, false, loc) : content\n };\n}\nfunction createCompoundExpression(children, loc = locStub) {\n return {\n type: 8,\n loc,\n children\n };\n}\nfunction createCallExpression(callee, args = [], loc = locStub) {\n return {\n type: 14,\n loc,\n callee,\n arguments: args\n };\n}\nfunction createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) {\n return {\n type: 18,\n params,\n returns,\n newline,\n isSlot,\n loc\n };\n}\nfunction createConditionalExpression(test, consequent, alternate, newline = true) {\n return {\n type: 19,\n test,\n consequent,\n alternate,\n newline,\n loc: locStub\n };\n}\nfunction createCacheExpression(index, value, isVNode = false) {\n return {\n type: 20,\n index,\n value,\n isVNode,\n loc: locStub\n };\n}\nfunction createBlockStatement(body) {\n return {\n type: 21,\n body,\n loc: locStub\n };\n}\nfunction createTemplateLiteral(elements) {\n return {\n type: 22,\n elements,\n loc: locStub\n };\n}\nfunction createIfStatement(test, consequent, alternate) {\n return {\n type: 23,\n test,\n consequent,\n alternate,\n loc: locStub\n };\n}\nfunction createAssignmentExpression(left, right) {\n return {\n type: 24,\n left,\n right,\n loc: locStub\n };\n}\nfunction createSequenceExpression(expressions) {\n return {\n type: 25,\n expressions,\n loc: locStub\n };\n}\nfunction createReturnStatement(returns) {\n return {\n type: 26,\n returns,\n loc: locStub\n };\n}\nfunction getVNodeHelper(ssr, isComponent) {\n return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE;\n}\nfunction getVNodeBlockHelper(ssr, isComponent) {\n return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK;\n}\nfunction convertToBlock(node, { helper, removeHelper, inSSR }) {\n if (!node.isBlock) {\n node.isBlock = true;\n removeHelper(getVNodeHelper(inSSR, node.isComponent));\n helper(OPEN_BLOCK);\n helper(getVNodeBlockHelper(inSSR, node.isComponent));\n }\n}\n\nconst defaultDelimitersOpen = new Uint8Array([123, 123]);\nconst defaultDelimitersClose = new Uint8Array([125, 125]);\nfunction isTagStartChar(c) {\n return c >= 97 && c <= 122 || c >= 65 && c <= 90;\n}\nfunction isWhitespace(c) {\n return c === 32 || c === 10 || c === 9 || c === 12 || c === 13;\n}\nfunction isEndOfTagSection(c) {\n return c === 47 || c === 62 || isWhitespace(c);\n}\nfunction toCharCodes(str) {\n const ret = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n ret[i] = str.charCodeAt(i);\n }\n return ret;\n}\nconst Sequences = {\n Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]),\n // CDATA[\n CdataEnd: new Uint8Array([93, 93, 62]),\n // ]]>\n CommentEnd: new Uint8Array([45, 45, 62]),\n // `-->`\n ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]),\n // `<\\/script`\n StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]),\n // `</style`\n TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]),\n // `</title`\n TextareaEnd: new Uint8Array([\n 60,\n 47,\n 116,\n 101,\n 120,\n 116,\n 97,\n 114,\n 101,\n 97\n ])\n // `</textarea\n};\nclass Tokenizer {\n constructor(stack, cbs) {\n this.stack = stack;\n this.cbs = cbs;\n /** The current state the tokenizer is in. */\n this.state = 1;\n /** The read buffer. */\n this.buffer = \"\";\n /** The beginning of the section that is currently being read. */\n this.sectionStart = 0;\n /** The index within the buffer that we are currently looking at. */\n this.index = 0;\n /** The start of the last entity. */\n this.entityStart = 0;\n /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */\n this.baseState = 1;\n /** For special parsing behavior inside of script and style tags. */\n this.inRCDATA = false;\n /** For disabling RCDATA tags handling */\n this.inXML = false;\n /** For disabling interpolation parsing in v-pre */\n this.inVPre = false;\n /** Record newline positions for fast line / column calculation */\n this.newlines = [];\n this.mode = 0;\n this.delimiterOpen = defaultDelimitersOpen;\n this.delimiterClose = defaultDelimitersClose;\n this.delimiterIndex = -1;\n this.currentSequence = void 0;\n this.sequenceIndex = 0;\n }\n get inSFCRoot() {\n return this.mode === 2 && this.stack.length === 0;\n }\n reset() {\n this.state = 1;\n this.mode = 0;\n this.buffer = \"\";\n this.sectionStart = 0;\n this.index = 0;\n this.baseState = 1;\n this.inRCDATA = false;\n this.currentSequence = void 0;\n this.newlines.length = 0;\n this.delimiterOpen = defaultDelimitersOpen;\n this.delimiterClose = defaultDelimitersClose;\n }\n /**\n * Generate Position object with line / column information using recorded\n * newline positions. We know the index is always going to be an already\n * processed index, so all the newlines up to this index should have been\n * recorded.\n */\n getPos(index) {\n let line = 1;\n let column = index + 1;\n for (let i = this.newlines.length - 1; i >= 0; i--) {\n const newlineIndex = this.newlines[i];\n if (index > newlineIndex) {\n line = i + 2;\n column = index - newlineIndex;\n break;\n }\n }\n return {\n column,\n line,\n offset: index\n };\n }\n peek() {\n return this.buffer.charCodeAt(this.index + 1);\n }\n stateText(c) {\n if (c === 60) {\n if (this.index > this.sectionStart) {\n this.cbs.ontext(this.sectionStart, this.index);\n }\n this.state = 5;\n this.sectionStart = this.index;\n } else if (!this.inVPre && c === this.delimiterOpen[0]) {\n this.state = 2;\n this.delimiterIndex = 0;\n this.stateInterpolationOpen(c);\n }\n }\n stateInterpolationOpen(c) {\n if (c === this.delimiterOpen[this.delimiterIndex]) {\n if (this.delimiterIndex === this.delimiterOpen.length - 1) {\n const start = this.index + 1 - this.delimiterOpen.length;\n if (start > this.sectionStart) {\n this.cbs.ontext(this.sectionStart, start);\n }\n this.state = 3;\n this.sectionStart = start;\n } else {\n this.delimiterIndex++;\n }\n } else if (this.inRCDATA) {\n this.state = 32;\n this.stateInRCDATA(c);\n } else {\n this.state = 1;\n this.stateText(c);\n }\n }\n stateInterpolation(c) {\n if (c === this.delimiterClose[0]) {\n this.state = 4;\n this.delimiterIndex = 0;\n this.stateInterpolationClose(c);\n }\n }\n stateInterpolationClose(c) {\n if (c === this.delimiterClose[this.delimiterIndex]) {\n if (this.delimiterIndex === this.delimiterClose.length - 1) {\n this.cbs.oninterpolation(this.sectionStart, this.index + 1);\n if (this.inRCDATA) {\n this.state = 32;\n } else {\n this.state = 1;\n }\n this.sectionStart = this.index + 1;\n } else {\n this.delimiterIndex++;\n }\n } else {\n this.state = 3;\n this.stateInterpolation(c);\n }\n }\n stateSpecialStartSequence(c) {\n const isEnd = this.sequenceIndex === this.currentSequence.length;\n const isMatch = isEnd ? (\n // If we are at the end of the sequence, make sure the tag name has ended\n isEndOfTagSection(c)\n ) : (\n // Otherwise, do a case-insensitive comparison\n (c | 32) === this.currentSequence[this.sequenceIndex]\n );\n if (!isMatch) {\n this.inRCDATA = false;\n } else if (!isEnd) {\n this.sequenceIndex++;\n return;\n }\n this.sequenceIndex = 0;\n this.state = 6;\n this.stateInTagName(c);\n }\n /** Look for an end tag. For <title> and <textarea>, also decode entities. */\n stateInRCDATA(c) {\n if (this.sequenceIndex === this.currentSequence.length) {\n if (c === 62 || isWhitespace(c)) {\n const endOfText = this.index - this.currentSequence.length;\n if (this.sectionStart < endOfText) {\n const actualIndex = this.index;\n this.index = endOfText;\n this.cbs.ontext(this.sectionStart, endOfText);\n this.index = actualIndex;\n }\n this.sectionStart = endOfText + 2;\n this.stateInClosingTagName(c);\n this.inRCDATA = false;\n return;\n }\n this.sequenceIndex = 0;\n }\n if ((c | 32) === this.currentSequence[this.sequenceIndex]) {\n this.sequenceIndex += 1;\n } else if (this.sequenceIndex === 0) {\n if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd && !this.inSFCRoot) {\n if (c === this.delimiterOpen[0]) {\n this.state = 2;\n this.delimiterIndex = 0;\n this.stateInterpolationOpen(c);\n }\n } else if (this.fastForwardTo(60)) {\n this.sequenceIndex = 1;\n }\n } else {\n this.sequenceIndex = Number(c === 60);\n }\n }\n stateCDATASequence(c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = 28;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n } else {\n this.sequenceIndex = 0;\n this.state = 23;\n this.stateInDeclaration(c);\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n fastForwardTo(c) {\n while (++this.index < this.buffer.length) {\n const cc = this.buffer.charCodeAt(this.index);\n if (cc === 10) {\n this.newlines.push(this.index);\n }\n if (cc === c) {\n return true;\n }\n }\n this.index = this.buffer.length - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index - 2);\n } else {\n this.cbs.oncomment(this.sectionStart, this.index - 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = 1;\n }\n } else if (this.sequenceIndex === 0) {\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n } else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n this.sequenceIndex = 0;\n }\n }\n startSpecial(sequence, offset) {\n this.enterRCDATA(sequence, offset);\n this.state = 31;\n }\n enterRCDATA(sequence, offset) {\n this.inRCDATA = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n }\n stateBeforeTagName(c) {\n if (c === 33) {\n this.state = 22;\n this.sectionStart = this.index + 1;\n } else if (c === 63) {\n this.state = 24;\n this.sectionStart = this.index + 1;\n } else if (isTagStartChar(c)) {\n this.sectionStart = this.index;\n if (this.mode === 0) {\n this.state = 6;\n } else if (this.inSFCRoot) {\n this.state = 34;\n } else if (!this.inXML) {\n const lower = c | 32;\n if (lower === 116) {\n this.state = 30;\n } else {\n this.state = lower === 115 ? 29 : 6;\n }\n } else {\n this.state = 6;\n }\n } else if (c === 47) {\n this.state = 8;\n } else {\n this.state = 1;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if (isEndOfTagSection(c)) {\n this.handleTagName(c);\n }\n }\n stateInSFCRootTagName(c) {\n if (isEndOfTagSection(c)) {\n const tag = this.buffer.slice(this.sectionStart, this.index);\n if (tag !== \"template\") {\n this.enterRCDATA(toCharCodes(`</` + tag), 0);\n }\n this.handleTagName(c);\n }\n }\n handleTagName(c) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = 11;\n this.stateBeforeAttrName(c);\n }\n stateBeforeClosingTagName(c) {\n if (isWhitespace(c)) ; else if (c === 62) {\n if (!!(process.env.NODE_ENV !== \"production\") || false) {\n this.cbs.onerr(14, this.index);\n }\n this.state = 1;\n this.sectionStart = this.index + 1;\n } else {\n this.state = isTagStartChar(c) ? 9 : 27;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === 62 || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = 10;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n if (c === 62) {\n this.state = 1;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttrName(c) {\n if (c === 62) {\n this.cbs.onopentagend(this.index);\n if (this.inRCDATA) {\n this.state = 32;\n } else {\n this.state = 1;\n }\n this.sectionStart = this.index + 1;\n } else if (c === 47) {\n this.state = 7;\n if ((!!(process.env.NODE_ENV !== \"production\") || false) && this.peek() !== 62) {\n this.cbs.onerr(22, this.index);\n }\n } else if (c === 60 && this.peek() === 47) {\n this.cbs.onopentagend(this.index);\n this.state = 5;\n this.sectionStart = this.index;\n } else if (!isWhitespace(c)) {\n if ((!!(process.env.NODE_ENV !== \"production\") || false) && c === 61) {\n this.cbs.onerr(\n 19,\n this.index\n );\n }\n this.handleAttrStart(c);\n }\n }\n handleAttrStart(c) {\n if (c === 118 && this.peek() === 45) {\n this.state = 13;\n this.sectionStart = this.index;\n } else if (c === 46 || c === 58 || c === 64 || c === 35) {\n this.cbs.ondirname(this.index, this.index + 1);\n this.state = 14;\n this.sectionStart = this.index + 1;\n } else {\n this.state = 12;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === 62) {\n this.cbs.onselfclosingtag(this.index);\n this.state = 1;\n this.sectionStart = this.index + 1;\n this.inRCDATA = false;\n } else if (!isWhitespace(c)) {\n this.state = 11;\n this.stateBeforeAttrName(c);\n }\n }\n stateInAttrName(c) {\n if (c === 61 || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.handleAttrNameEnd(c);\n } else if ((!!(process.env.NODE_ENV !== \"production\") || false) && (c === 34 || c === 39 || c === 60)) {\n this.cbs.onerr(\n 17,\n this.index\n );\n }\n }\n stateInDirName(c) {\n if (c === 61 || isEndOfTagSection(c)) {\n this.cbs.ondirname(this.sectionStart, this.index);\n this.handleAttrNameEnd(c);\n } else if (c === 58) {\n this.cbs.ondirname(this.sectionStart, this.index);\n this.state = 14;\n this.sectionStart = this.index + 1;\n } else if (c === 46) {\n this.cbs.ondirname(this.sectionStart, this.index);\n this.state = 16;\n this.sectionStart = this.index + 1;\n }\n }\n stateInDirArg(c) {\n if (c === 61 || isEndOfTagSection(c)) {\n this.cbs.ondirarg(this.sectionStart, this.index);\n this.handleAttrNameEnd(c);\n } else if (c === 91) {\n this.state = 15;\n } else if (c === 46) {\n this.cbs.ondirarg(this.sectionStart, this.index);\n this.state = 16;\n this.sectionStart = this.index + 1;\n }\n }\n stateInDynamicDirArg(c) {\n if (c === 93) {\n this.state = 14;\n } else if (c === 61 || isEndOfTagSection(c)) {\n this.cbs.ondirarg(this.sectionStart, this.index + 1);\n this.handleAttrNameEnd(c);\n if (!!(process.env.NODE_ENV !== \"production\") || false) {\n this.cbs.onerr(\n 27,\n this.index\n );\n }\n }\n }\n stateInDirModifier(c) {\n if (c === 61 || isEndOfTagSection(c)) {\n this.cbs.ondirmodifier(this.sectionStart, this.index);\n this.handleAttrNameEnd(c);\n } else if (c === 46) {\n this.cbs.ondirmodifier(this.sectionStart, this.index);\n this.sectionStart = this.index + 1;\n }\n }\n handleAttrNameEnd(c) {\n this.sectionStart = this.index;\n this.state = 17;\n this.cbs.onattribnameend(this.index);\n this.stateAfterAttrName(c);\n }\n stateAfterAttrName(c) {\n if (c === 61) {\n this.state = 18;\n } else if (c === 47 || c === 62) {\n this.cbs.onattribend(0, this.sectionStart);\n this.sectionStart = -1;\n this.state = 11;\n this.stateBeforeAttrName(c);\n } else if (!isWhitespace(c)) {\n this.cbs.onattribend(0, this.sectionStart);\n this.handleAttrStart(c);\n }\n }\n stateBeforeAttrValue(c) {\n if (c === 34) {\n this.state = 19;\n this.sectionStart = this.index + 1;\n } else if (c === 39) {\n this.state = 20;\n this.sectionStart = this.index + 1;\n } else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = 21;\n this.stateInAttrValueNoQuotes(c);\n }\n }\n handleInAttrValue(c, quote) {\n if (c === quote || this.fastForwardTo(quote)) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(\n quote === 34 ? 3 : 2,\n this.index + 1\n );\n this.state = 11;\n }\n }\n stateInAttrValueDoubleQuotes(c) {\n this.handleInAttrValue(c, 34);\n }\n stateInAttrValueSingleQuotes(c) {\n this.handleInAttrValue(c, 39);\n }\n stateInAttrValueNoQuotes(c) {\n if (isWhitespace(c) || c === 62) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(1, this.index);\n this.state = 11;\n this.stateBeforeAttrName(c);\n } else if ((!!(process.env.NODE_ENV !== \"production\") || false) && c === 34 || c === 39 || c === 60 || c === 61 || c === 96) {\n this.cbs.onerr(\n 18,\n this.index\n );\n } else ;\n }\n stateBeforeDeclaration(c) {\n if (c === 91) {\n this.state = 26;\n this.sequenceIndex = 0;\n } else {\n this.state = c === 45 ? 25 : 23;\n }\n }\n stateInDeclaration(c) {\n if (c === 62 || this.fastForwardTo(62)) {\n this.state = 1;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === 62 || this.fastForwardTo(62)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = 1;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === 45) {\n this.state = 28;\n this.currentSequence = Sequences.CommentEnd;\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n } else {\n this.state = 23;\n }\n }\n stateInSpecialComment(c) {\n if (c === 62 || this.fastForwardTo(62)) {\n this.cbs.oncomment(this.sectionStart, this.index);\n this.state = 1;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 32;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n } else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n } else {\n this.state = 6;\n this.stateInTagName(c);\n }\n }\n stateBeforeSpecialT(c) {\n const lower = c | 32;\n if (lower === Sequences.TitleEnd[3]) {\n this.startSpecial(Sequences.TitleEnd, 4);\n } else if (lower === Sequences.TextareaEnd[3]) {\n this.startSpecial(Sequences.TextareaEnd, 4);\n } else {\n this.state = 6;\n this.stateInTagName(c);\n }\n }\n startEntity() {\n }\n stateInEntity() {\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n parse(input) {\n this.buffer = input;\n while (this.index < this.buffer.length) {\n const c = this.buffer.charCodeAt(this.index);\n if (c === 10) {\n this.newlines.push(this.index);\n }\n switch (this.state) {\n case 1: {\n this.stateText(c);\n break;\n }\n case 2: {\n this.stateInterpolationOpen(c);\n break;\n }\n case 3: {\n this.stateInterpolation(c);\n break;\n }\n case 4: {\n this.stateInterpolationClose(c);\n break;\n }\n case 31: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case 32: {\n this.stateInRCDATA(c);\n break;\n }\n case 26: {\n this.stateCDATASequence(c);\n break;\n }\n case 19: {\n this.stateInAttrValueDoubleQuotes(c);\n break;\n }\n case 12: {\n this.stateInAttrName(c);\n break;\n }\n case 13: {\n this.stateInDirName(c);\n break;\n }\n case 14: {\n this.stateInDirArg(c);\n break;\n }\n case 15: {\n this.stateInDynamicDirArg(c);\n break;\n }\n case 16: {\n this.stateInDirModifier(c);\n break;\n }\n case 28: {\n this.stateInCommentLike(c);\n break;\n }\n case 27: {\n this.stateInSpecialComment(c);\n break;\n }\n case 11: {\n this.stateBeforeAttrName(c);\n break;\n }\n case 6: {\n this.stateInTagName(c);\n break;\n }\n case 34: {\n this.stateInSFCRootTagName(c);\n break;\n }\n case 9: {\n this.stateInClosingTagName(c);\n break;\n }\n case 5: {\n this.stateBeforeTagName(c);\n break;\n }\n case 17: {\n this.stateAfterAttrName(c);\n break;\n }\n case 20: {\n this.stateInAttrValueSingleQuotes(c);\n break;\n }\n case 18: {\n this.stateBeforeAttrValue(c);\n break;\n }\n case 8: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case 10: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case 29: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case 30: {\n this.stateBeforeSpecialT(c);\n break;\n }\n case 21: {\n this.stateInAttrValueNoQuotes(c);\n break;\n }\n case 7: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case 23: {\n this.stateInDeclaration(c);\n break;\n }\n case 22: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case 25: {\n this.stateBeforeComment(c);\n break;\n }\n case 24: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case 33: {\n this.stateInEntity();\n break;\n }\n }\n this.index++;\n }\n this.cleanup();\n this.finish();\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */\n cleanup() {\n if (this.sectionStart !== this.index) {\n if (this.state === 1 || this.state === 32 && this.sequenceIndex === 0) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n } else if (this.state === 19 || this.state === 20 || this.state === 21) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n finish() {\n this.handleTrailingData();\n this.cbs.onend();\n }\n /** Handle any trailing data. */\n handleTrailingData() {\n const endIndex = this.buffer.length;\n if (this.sectionStart >= endIndex) {\n return;\n }\n if (this.state === 28) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex);\n } else {\n this.cbs.oncomment(this.sectionStart, endIndex);\n }\n } else if (this.state === 6 || this.state === 11 || this.state === 18 || this.state === 17 || this.state === 12 || this.state === 13 || this.state === 14 || this.state === 15 || this.state === 16 || this.state === 20 || this.state === 19 || this.state === 21 || this.state === 9) ; else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n emitCodePoint(cp, consumed) {\n }\n}\n\nconst CompilerDeprecationTypes = {\n \"COMPILER_IS_ON_ELEMENT\": \"COMPILER_IS_ON_ELEMENT\",\n \"COMPILER_V_BIND_SYNC\": \"COMPILER_V_BIND_SYNC\",\n \"COMPILER_V_BIND_OBJECT_ORDER\": \"COMPILER_V_BIND_OBJECT_ORDER\",\n \"COMPILER_V_ON_NATIVE\": \"COMPILER_V_ON_NATIVE\",\n \"COMPILER_V_IF_V_FOR_PRECEDENCE\": \"COMPILER_V_IF_V_FOR_PRECEDENCE\",\n \"COMPILER_NATIVE_TEMPLATE\": \"COMPILER_NATIVE_TEMPLATE\",\n \"COMPILER_INLINE_TEMPLATE\": \"COMPILER_INLINE_TEMPLATE\",\n \"COMPILER_FILTERS\": \"COMPILER_FILTERS\"\n};\nconst deprecationData = {\n [\"COMPILER_IS_ON_ELEMENT\"]: {\n message: `Platform-native elements with \"is\" prop will no longer be treated as components in Vue 3 unless the \"is\" value is explicitly prefixed with \"vue:\".`,\n link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html`\n },\n [\"COMPILER_V_BIND_SYNC\"]: {\n message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \\`v-bind:${key}.sync\\` should be changed to \\`v-model:${key}\\`.`,\n link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`\n },\n [\"COMPILER_V_BIND_OBJECT_ORDER\"]: {\n message: `v-bind=\"obj\" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`,\n link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html`\n },\n [\"COMPILER_V_ON_NATIVE\"]: {\n message: `.native modifier for v-on has been removed as is no longer necessary.`,\n link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html`\n },\n [\"COMPILER_V_IF_V_FOR_PRECEDENCE\"]: {\n message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`,\n link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html`\n },\n [\"COMPILER_NATIVE_TEMPLATE\"]: {\n message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.`\n },\n [\"COMPILER_INLINE_TEMPLATE\"]: {\n message: `\"inline-template\" has been removed in Vue 3.`,\n link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html`\n },\n [\"COMPILER_FILTERS\"]: {\n message: `filters have been removed in Vue 3. The \"|\" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`,\n link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`\n }\n};\nfunction getCompatValue(key, { compatConfig }) {\n const value = compatConfig && compatConfig[key];\n if (key === \"MODE\") {\n return value || 3;\n } else {\n return value;\n }\n}\nfunction isCompatEnabled(key, context) {\n const mode = getCompatValue(\"MODE\", context);\n const value = getCompatValue(key, context);\n return mode === 3 ? value === true : value !== false;\n}\nfunction checkCompatEnabled(key, context, loc, ...args) {\n const enabled = isCompatEnabled(key, context);\n if (!!(process.env.NODE_ENV !== \"production\") && enabled) {\n warnDeprecation(key, context, loc, ...args);\n }\n return enabled;\n}\nfunction warnDeprecation(key, context, loc, ...args) {\n const val = getCompatValue(key, context);\n if (val === \"suppress-warning\") {\n return;\n }\n const { message, link } = deprecationData[key];\n const msg = `(deprecation ${key}) ${typeof message === \"function\" ? message(...args) : message}${link ? `\n Details: ${link}` : ``}`;\n const err = new SyntaxError(msg);\n err.code = key;\n if (loc)\n err.loc = loc;\n context.onWarn(err);\n}\n\nfunction defaultOnError(error) {\n throw error;\n}\nfunction defaultOnWarn(msg) {\n !!(process.env.NODE_ENV !== \"production\") && console.warn(`[Vue warn] ${msg.message}`);\n}\nfunction createCompilerError(code, loc, messages, additionalMessage) {\n const msg = !!(process.env.NODE_ENV !== \"production\") || false ? (messages || errorMessages)[code] + (additionalMessage || ``) : `https://vuejs.org/errors/#compiler-${code}`;\n const error = new SyntaxError(String(msg));\n error.code = code;\n error.loc = loc;\n return error;\n}\nconst ErrorCodes = {\n \"ABRUPT_CLOSING_OF_EMPTY_COMMENT\": 0,\n \"0\": \"ABRUPT_CLOSING_OF_EMPTY_COMMENT\",\n \"CDATA_IN_HTML_CONTENT\": 1,\n \"1\": \"CDATA_IN_HTML_CONTENT\",\n \"DUPLICATE_ATTRIBUTE\": 2,\n \"2\": \"DUPLICATE_ATTRIBUTE\",\n \"END_TAG_WITH_ATTRIBUTES\": 3,\n \"3\": \"END_TAG_WITH_ATTRIBUTES\",\n \"END_TAG_WITH_TRAILING_SOLIDUS\": 4,\n \"4\": \"END_TAG_WITH_TRAILING_SOLIDUS\",\n \"EOF_BEFORE_TAG_NAME\": 5,\n \"5\": \"EOF_BEFORE_TAG_NAME\",\n \"EOF_IN_CDATA\": 6,\n \"6\": \"EOF_IN_CDATA\",\n \"EOF_IN_COMMENT\": 7,\n \"7\": \"EOF_IN_COMMENT\",\n \"EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT\": 8,\n \"8\": \"EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT\",\n \"EOF_IN_TAG\": 9,\n \"9\": \"EOF_IN_TAG\",\n \"INCORRECTLY_CLOSED_COMMENT\": 10,\n \"10\": \"INCORRECTLY_CLOSED_COMMENT\",\n \"INCORRECTLY_OPENED_COMMENT\": 11,\n \"11\": \"INCORRECTLY_OPENED_COMMENT\",\n \"INVALID_FIRST_CHARACTER_OF_TAG_NAME\": 12,\n \"12\": \"INVALID_FIRST_CHARACTER_OF_TAG_NAME\",\n \"MISSING_ATTRIBUTE_VALUE\": 13,\n \"13\": \"MISSING_ATTRIBUTE_VALUE\",\n \"MISSING_END_TAG_NAME\": 14,\n \"14\": \"MISSING_END_TAG_NAME\",\n \"MISSING_WHITESPACE_BETWEEN_ATTRIBUTES\": 15,\n \"15\": \"MISSING_WHITESPACE_BETWEEN_ATTRIBUTES\",\n \"NESTED_COMMENT\": 16,\n \"16\": \"NESTED_COMMENT\",\n \"UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME\": 17,\n \"17\": \"UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME\",\n \"UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE\": 18,\n \"18\": \"UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE\",\n \"UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME\": 19,\n \"19\": \"UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME\",\n \"UNEXPECTED_NULL_CHARACTER\": 20,\n \"20\": \"UNEXPECTED_NULL_CHARACTER\",\n \"UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME\": 21,\n \"21\": \"UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME\",\n \"UNEXPECTED_SOLIDUS_IN_TAG\": 22,\n \"22\": \"UNEXPECTED_SOLIDUS_IN_TAG\",\n \"X_INVALID_END_TAG\": 23,\n \"23\": \"X_INVALID_END_TAG\",\n \"X_MISSING_END_TAG\": 24,\n \"24\": \"X_MISSING_END_TAG\",\n \"X_MISSING_INTERPOLATION_END\": 25,\n \"25\": \"X_MISSING_INTERPOLATION_END\",\n \"X_MISSING_DIRECTIVE_NAME\": 26,\n \"26\": \"X_MISSING_DIRECTIVE_NAME\",\n \"X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END\": 27,\n \"27\": \"X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END\",\n \"X_V_IF_NO_EXPRESSION\": 28,\n \"28\": \"X_V_IF_NO_EXPRESSION\",\n \"X_V_IF_SAME_KEY\": 29,\n \"29\": \"X_V_IF_SAME_KEY\",\n \"X_V_ELSE_NO_ADJACENT_IF\": 30,\n \"30\": \"X_V_ELSE_NO_ADJACENT_IF\",\n \"X_V_FOR_NO_EXPRESSION\": 31,\n \"31\": \"X_V_FOR_NO_EXPRESSION\",\n \"X_V_FOR_MALFORMED_EXPRESSION\": 32,\n \"32\": \"X_V_FOR_MALFORMED_EXPRESSION\",\n \"X_V_FOR_TEMPLATE_KEY_PLACEMENT\": 33,\n \"33\": \"X_V_FOR_TEMPLATE_KEY_PLACEMENT\",\n \"X_V_BIND_NO_EXPRESSION\": 34,\n \"34\": \"X_V_BIND_NO_EXPRESSION\",\n \"X_V_ON_NO_EXPRESSION\": 35,\n \"35\": \"X_V_ON_NO_EXPRESSION\",\n \"X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET\": 36,\n \"36\": \"X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET\",\n \"X_V_SLOT_MIXED_SLOT_USAGE\": 37,\n \"37\": \"X_V_SLOT_MIXED_SLOT_USAGE\",\n \"X_V_SLOT_DUPLICATE_SLOT_NAMES\": 38,\n \"38\": \"X_V_SLOT_DUPLICATE_SLOT_NAMES\",\n \"X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN\": 39,\n \"39\": \"X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN\",\n \"X_V_SLOT_MISPLACED\": 40,\n \"40\": \"X_V_SLOT_MISPLACED\",\n \"X_V_MODEL_NO_EXPRESSION\": 41,\n \"41\": \"X_V_MODEL_NO_EXPRESSION\",\n \"X_V_MODEL_MALFORMED_EXPRESSION\": 42,\n \"42\": \"X_V_MODEL_MALFORMED_EXPRESSION\",\n \"X_V_MODEL_ON_SCOPE_VARIABLE\": 43,\n \"43\": \"X_V_MODEL_ON_SCOPE_VARIABLE\",\n \"X_V_MODEL_ON_PROPS\": 44,\n \"44\": \"X_V_MODEL_ON_PROPS\",\n \"X_INVALID_EXPRESSION\": 45,\n \"45\": \"X_INVALID_EXPRESSION\",\n \"X_KEEP_ALIVE_INVALID_CHILDREN\": 46,\n \"46\": \"X_KEEP_ALIVE_INVALID_CHILDREN\",\n \"X_PREFIX_ID_NOT_SUPPORTED\": 47,\n \"47\": \"X_PREFIX_ID_NOT_SUPPORTED\",\n \"X_MODULE_MODE_NOT_SUPPORTED\": 48,\n \"48\": \"X_MODULE_MODE_NOT_SUPPORTED\",\n \"X_CACHE_HANDLER_NOT_SUPPORTED\": 49,\n \"49\": \"X_CACHE_HANDLER_NOT_SUPPORTED\",\n \"X_SCOPE_ID_NOT_SUPPORTED\": 50,\n \"50\": \"X_SCOPE_ID_NOT_SUPPORTED\",\n \"X_VNODE_HOOKS\": 51,\n \"51\": \"X_VNODE_HOOKS\",\n \"__EXTEND_POINT__\": 52,\n \"52\": \"__EXTEND_POINT__\"\n};\nconst errorMessages = {\n // parse errors\n [0]: \"Illegal comment.\",\n [1]: \"CDATA section is allowed only in XML context.\",\n [2]: \"Duplicate attribute.\",\n [3]: \"End tag cannot have attributes.\",\n [4]: \"Illegal '/' in tags.\",\n [5]: \"Unexpected EOF in tag.\",\n [6]: \"Unexpected EOF in CDATA section.\",\n [7]: \"Unexpected EOF in comment.\",\n [8]: \"Unexpected EOF in script.\",\n [9]: \"Unexpected EOF in tag.\",\n [10]: \"Incorrectly closed comment.\",\n [11]: \"Incorrectly opened comment.\",\n [12]: \"Illegal tag name. Use '<' to print '<'.\",\n [13]: \"Attribute value was expected.\",\n [14]: \"End tag name was expected.\",\n [15]: \"Whitespace was expected.\",\n [16]: \"Unexpected '<!--' in comment.\",\n [17]: `Attribute name cannot contain U+0022 (\"), U+0027 ('), and U+003C (<).`,\n [18]: \"Unquoted attribute value cannot contain U+0022 (\\\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).\",\n [19]: \"Attribute name cannot start with '='.\",\n [21]: \"'<?' is allowed only in XML context.\",\n [20]: `Unexpected null character.`,\n [22]: \"Illegal '/' in tags.\",\n // Vue-specific parse errors\n [23]: \"Invalid end tag.\",\n [24]: \"Element is missing end tag.\",\n [25]: \"Interpolation end sign was not found.\",\n [27]: \"End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.\",\n [26]: \"Legal directive name was expected.\",\n // transform errors\n [28]: `v-if/v-else-if is missing expression.`,\n [29]: `v-if/else branches must use unique keys.`,\n [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`,\n [31]: `v-for is missing expression.`,\n [32]: `v-for has invalid expression.`,\n [33]: `<template v-for> key should be placed on the <template> tag.`,\n [34]: `v-bind is missing expression.`,\n [35]: `v-on is missing expression.`,\n [36]: `Unexpected custom directive on <slot> outlet.`,\n [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`,\n [38]: `Duplicate slot names found. `,\n [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`,\n [40]: `v-slot can only be used on components or <template> tags.`,\n [41]: `v-model is missing expression.`,\n [42]: `v-model value must be a valid JavaScript member expression.`,\n [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,\n [44]: `v-model cannot be used on a prop, because local prop bindings are not writable.\nUse a v-bind binding combined with a v-on listener that emits update:x event instead.`,\n [45]: `Error parsing JavaScript expression: `,\n [46]: `<KeepAlive> expects exactly one child component.`,\n [51]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`,\n // generic errors\n [47]: `\"prefixIdentifiers\" option is not supported in this build of compiler.`,\n [48]: `ES module mode is not supported in this build of compiler.`,\n [49]: `\"cacheHandlers\" option is only supported when the \"prefixIdentifiers\" option is enabled.`,\n [50]: `\"scopeId\" option is only supported in module mode.`,\n // just to fulfill types\n [52]: ``\n};\n\nfunction walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = /* @__PURE__ */ Object.create(null)) {\n {\n return;\n }\n}\nfunction isReferencedIdentifier(id, parent, parentStack) {\n {\n return false;\n }\n}\nfunction isInDestructureAssignment(parent, parentStack) {\n if (parent && (parent.type === \"ObjectProperty\" || parent.type === \"ArrayPattern\")) {\n let i = parentStack.length;\n while (i--) {\n const p = parentStack[i];\n if (p.type === \"AssignmentExpression\") {\n return true;\n } else if (p.type !== \"ObjectProperty\" && !p.type.endsWith(\"Pattern\")) {\n break;\n }\n }\n }\n return false;\n}\nfunction walkFunctionParams(node, onIdent) {\n for (const p of node.params) {\n for (const id of extractIdentifiers(p)) {\n onIdent(id);\n }\n }\n}\nfunction walkBlockDeclarations(block, onIdent) {\n for (const stmt of block.body) {\n if (stmt.type === \"VariableDeclaration\") {\n if (stmt.declare)\n continue;\n for (const decl of stmt.declarations) {\n for (const id of extractIdentifiers(decl.id)) {\n onIdent(id);\n }\n }\n } else if (stmt.type === \"FunctionDeclaration\" || stmt.type === \"ClassDeclaration\") {\n if (stmt.declare || !stmt.id)\n continue;\n onIdent(stmt.id);\n } else if (stmt.type === \"ForOfStatement\" || stmt.type === \"ForInStatement\" || stmt.type === \"ForStatement\") {\n const variable = stmt.type === \"ForStatement\" ? stmt.init : stmt.left;\n if (variable && variable.type === \"VariableDeclaration\") {\n for (const decl of variable.declarations) {\n for (const id of extractIdentifiers(decl.id)) {\n onIdent(id);\n }\n }\n }\n }\n }\n}\nfunction extractIdentifiers(param, nodes = []) {\n switch (param.type) {\n case \"Identifier\":\n nodes.push(param);\n break;\n case \"MemberExpression\":\n let object = param;\n while (object.type === \"MemberExpression\") {\n object = object.object;\n }\n nodes.push(object);\n break;\n case \"ObjectPattern\":\n for (const prop of param.properties) {\n if (prop.type === \"RestElement\") {\n extractIdentifiers(prop.argument, nodes);\n } else {\n extractIdentifiers(prop.value, nodes);\n }\n }\n break;\n case \"ArrayPattern\":\n param.elements.forEach((element) => {\n if (element)\n extractIdentifiers(element, nodes);\n });\n break;\n case \"RestElement\":\n extractIdentifiers(param.argument, nodes);\n break;\n case \"AssignmentPattern\":\n extractIdentifiers(param.left, nodes);\n break;\n }\n return nodes;\n}\nconst isFunctionType = (node) => {\n return /Function(?:Expression|Declaration)$|Method$/.test(node.type);\n};\nconst isStaticProperty = (node) => node && (node.type === \"ObjectProperty\" || node.type === \"ObjectMethod\") && !node.computed;\nconst isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node;\nconst TS_NODE_TYPES = [\n \"TSAsExpression\",\n // foo as number\n \"TSTypeAssertion\",\n // (<number>foo)\n \"TSNonNullExpression\",\n // foo!\n \"TSInstantiationExpression\",\n // foo<string>\n \"TSSatisfiesExpression\"\n // foo satisfies T\n];\nfunction unwrapTSNode(node) {\n if (TS_NODE_TYPES.includes(node.type)) {\n return unwrapTSNode(node.expression);\n } else {\n return node;\n }\n}\n\nconst isStaticExp = (p) => p.type === 4 && p.isStatic;\nfunction isCoreComponent(tag) {\n switch (tag) {\n case \"Teleport\":\n case \"teleport\":\n return TELEPORT;\n case \"Suspense\":\n case \"suspense\":\n return SUSPENSE;\n case \"KeepAlive\":\n case \"keep-alive\":\n return KEEP_ALIVE;\n case \"BaseTransition\":\n case \"base-transition\":\n return BASE_TRANSITION;\n }\n}\nconst nonIdentifierRE = /^\\d|[^\\$\\w]/;\nconst isSimpleIdentifier = (name) => !nonIdentifierRE.test(name);\nconst validFirstIdentCharRE = /[A-Za-z_$\\xA0-\\uFFFF]/;\nconst validIdentCharRE = /[\\.\\?\\w$\\xA0-\\uFFFF]/;\nconst whitespaceRE = /\\s+[.[]\\s*|\\s*[.[]\\s+/g;\nconst isMemberExpressionBrowser = (path) => {\n path = path.trim().replace(whitespaceRE, (s) => s.trim());\n let state = 0 /* inMemberExp */;\n let stateStack = [];\n let currentOpenBracketCount = 0;\n let currentOpenParensCount = 0;\n let currentStringType = null;\n for (let i = 0; i < path.length; i++) {\n const char = path.charAt(i);\n switch (state) {\n case 0 /* inMemberExp */:\n if (char === \"[\") {\n stateStack.push(state);\n state = 1 /* inBrackets */;\n currentOpenBracketCount++;\n } else if (char === \"(\") {\n stateStack.push(state);\n state = 2 /* inParens */;\n currentOpenParensCount++;\n } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) {\n return false;\n }\n break;\n case 1 /* inBrackets */:\n if (char === `'` || char === `\"` || char === \"`\") {\n stateStack.push(state);\n state = 3 /* inString */;\n currentStringType = char;\n } else if (char === `[`) {\n currentOpenBracketCount++;\n } else if (char === `]`) {\n if (!--currentOpenBracketCount) {\n state = stateStack.pop();\n }\n }\n break;\n case 2 /* inParens */:\n if (char === `'` || char === `\"` || char === \"`\") {\n stateStack.push(state);\n state = 3 /* inString */;\n currentStringType = char;\n } else if (char === `(`) {\n currentOpenParensCount++;\n } else if (char === `)`) {\n if (i === path.length - 1) {\n return false;\n }\n if (!--currentOpenParensCount) {\n state = stateStack.pop();\n }\n }\n break;\n case 3 /* inString */:\n if (char === currentStringType) {\n state = stateStack.pop();\n currentStringType = null;\n }\n break;\n }\n }\n return !currentOpenBracketCount && !currentOpenParensCount;\n};\nconst isMemberExpressionNode = NOOP ;\nconst isMemberExpression = isMemberExpressionBrowser ;\nfunction advancePositionWithClone(pos, source, numberOfCharacters = source.length) {\n return advancePositionWithMutation(\n {\n offset: pos.offset,\n line: pos.line,\n column: pos.column\n },\n source,\n numberOfCharacters\n );\n}\nfunction advancePositionWithMutation(pos, source, numberOfCharacters = source.length) {\n let linesCount = 0;\n let lastNewLinePos = -1;\n for (let i = 0; i < numberOfCharacters; i++) {\n if (source.charCodeAt(i) === 10) {\n linesCount++;\n lastNewLinePos = i;\n }\n }\n pos.offset += numberOfCharacters;\n pos.line += linesCount;\n pos.column = lastNewLinePos === -1 ? pos.column + numberOfCharacters : numberOfCharacters - lastNewLinePos;\n return pos;\n}\nfunction assert(condition, msg) {\n if (!condition) {\n throw new Error(msg || `unexpected compiler condition`);\n }\n}\nfunction findDir(node, name, allowEmpty = false) {\n for (let i = 0; i < node.props.length; i++) {\n const p = node.props[i];\n if (p.type === 7 && (allowEmpty || p.exp) && (isString(name) ? p.name === name : name.test(p.name))) {\n return p;\n }\n }\n}\nfunction findProp(node, name, dynamicOnly = false, allowEmpty = false) {\n for (let i = 0; i < node.props.length; i++) {\n const p = node.props[i];\n if (p.type === 6) {\n if (dynamicOnly)\n continue;\n if (p.name === name && (p.value || allowEmpty)) {\n return p;\n }\n } else if (p.name === \"bind\" && (p.exp || allowEmpty) && isStaticArgOf(p.arg, name)) {\n return p;\n }\n }\n}\nfunction isStaticArgOf(arg, name) {\n return !!(arg && isStaticExp(arg) && arg.content === name);\n}\nfunction hasDynamicKeyVBind(node) {\n return node.props.some(\n (p) => p.type === 7 && p.name === \"bind\" && (!p.arg || // v-bind=\"obj\"\n p.arg.type !== 4 || // v-bind:[_ctx.foo]\n !p.arg.isStatic)\n // v-bind:[foo]\n );\n}\nfunction isText$1(node) {\n return node.type === 5 || node.type === 2;\n}\nfunction isVSlot(p) {\n return p.type === 7 && p.name === \"slot\";\n}\nfunction isTemplateNode(node) {\n return node.type === 1 && node.tagType === 3;\n}\nfunction isSlotOutlet(node) {\n return node.type === 1 && node.tagType === 2;\n}\nconst propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]);\nfunction getUnnormalizedProps(props, callPath = []) {\n if (props && !isString(props) && props.type === 14) {\n const callee = props.callee;\n if (!isString(callee) && propsHelperSet.has(callee)) {\n return getUnnormalizedProps(\n props.arguments[0],\n callPath.concat(props)\n );\n }\n }\n return [props, callPath];\n}\nfunction injectProp(node, prop, context) {\n let propsWithInjection;\n let props = node.type === 13 ? node.props : node.arguments[2];\n let callPath = [];\n let parentCall;\n if (props && !isString(props) && props.type === 14) {\n const ret = getUnnormalizedProps(props);\n props = ret[0];\n callPath = ret[1];\n parentCall = callPath[callPath.length - 1];\n }\n if (props == null || isString(props)) {\n propsWithInjection = createObjectExpression([prop]);\n } else if (props.type === 14) {\n const first = props.arguments[0];\n if (!isString(first) && first.type === 15) {\n if (!hasProp(prop, first)) {\n first.properties.unshift(prop);\n }\n } else {\n if (props.callee === TO_HANDLERS) {\n propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [\n createObjectExpression([prop]),\n props\n ]);\n } else {\n props.arguments.unshift(createObjectExpression([prop]));\n }\n }\n !propsWithInjection && (propsWithInjection = props);\n } else if (props.type === 15) {\n if (!hasProp(prop, props)) {\n props.properties.unshift(prop);\n }\n propsWithInjection = props;\n } else {\n propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [\n createObjectExpression([prop]),\n props\n ]);\n if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) {\n parentCall = callPath[callPath.length - 2];\n }\n }\n if (node.type === 13) {\n if (parentCall) {\n parentCall.arguments[0] = propsWithInjection;\n } else {\n node.props = propsWithInjection;\n }\n } else {\n if (parentCall) {\n parentCall.arguments[0] = propsWithInjection;\n } else {\n node.arguments[2] = propsWithInjection;\n }\n }\n}\nfunction hasProp(prop, props) {\n let result = false;\n if (prop.key.type === 4) {\n const propKeyName = prop.key.content;\n result = props.properties.some(\n (p) => p.key.type === 4 && p.key.content === propKeyName\n );\n }\n return result;\n}\nfunction toValidAssetId(name, type) {\n return `_${type}_${name.replace(/[^\\w]/g, (searchValue, replaceValue) => {\n return searchValue === \"-\" ? \"_\" : name.charCodeAt(replaceValue).toString();\n })}`;\n}\nfunction hasScopeRef(node, ids) {\n if (!node || Object.keys(ids).length === 0) {\n return false;\n }\n switch (node.type) {\n case 1:\n for (let i = 0; i < node.props.length; i++) {\n const p = node.props[i];\n if (p.type === 7 && (hasScopeRef(p.arg, ids) || hasScopeRef(p.exp, ids))) {\n return true;\n }\n }\n return node.children.some((c) => hasScopeRef(c, ids));\n case 11:\n if (hasScopeRef(node.source, ids)) {\n return true;\n }\n return node.children.some((c) => hasScopeRef(c, ids));\n case 9:\n return node.branches.some((b) => hasScopeRef(b, ids));\n case 10:\n if (hasScopeRef(node.condition, ids)) {\n return true;\n }\n return node.children.some((c) => hasScopeRef(c, ids));\n case 4:\n return !node.isStatic && isSimpleIdentifier(node.content) && !!ids[node.content];\n case 8:\n return node.children.some((c) => isObject(c) && hasScopeRef(c, ids));\n case 5:\n case 12:\n return hasScopeRef(node.content, ids);\n case 2:\n case 3:\n return false;\n default:\n if (!!(process.env.NODE_ENV !== \"production\")) ;\n return false;\n }\n}\nfunction getMemoedVNodeCall(node) {\n if (node.type === 14 && node.callee === WITH_MEMO) {\n return node.arguments[1].returns;\n } else {\n return node;\n }\n}\nconst forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\n\nconst defaultParserOptions = {\n parseMode: \"base\",\n ns: 0,\n delimiters: [`{{`, `}}`],\n getNamespace: () => 0,\n isVoidTag: NO,\n isPreTag: NO,\n isCustomElement: NO,\n onError: defaultOnError,\n onWarn: defaultOnWarn,\n comments: !!(process.env.NODE_ENV !== \"production\"),\n prefixIdentifiers: false\n};\nlet currentOptions = defaultParserOptions;\nlet currentRoot = null;\nlet currentInput = \"\";\nlet currentOpenTag = null;\nlet currentProp = null;\nlet currentAttrValue = \"\";\nlet currentAttrStartIndex = -1;\nlet currentAttrEndIndex = -1;\nlet inPre = 0;\nlet inVPre = false;\nlet currentVPreBoundary = null;\nconst stack = [];\nconst tokenizer = new Tokenizer(stack, {\n onerr: emitError,\n ontext(start, end) {\n onText(getSlice(start, end), start, end);\n },\n ontextentity(char, start, end) {\n onText(char, start, end);\n },\n oninterpolation(start, end) {\n if (inVPre) {\n return onText(getSlice(start, end), start, end);\n }\n let innerStart = start + tokenizer.delimiterOpen.length;\n let innerEnd = end - tokenizer.delimiterClose.length;\n while (isWhitespace(currentInput.charCodeAt(innerStart))) {\n innerStart++;\n }\n while (isWhitespace(currentInput.charCodeAt(innerEnd - 1))) {\n innerEnd--;\n }\n let exp = getSlice(innerStart, innerEnd);\n if (exp.includes(\"&\")) {\n {\n exp = currentOptions.decodeEntities(exp, false);\n }\n }\n addNode({\n type: 5,\n content: createExp(exp, false, getLoc(innerStart, innerEnd)),\n loc: getLoc(start, end)\n });\n },\n onopentagname(start, end) {\n const name = getSlice(start, end);\n currentOpenTag = {\n type: 1,\n tag: name,\n ns: currentOptions.getNamespace(name, stack[0], currentOptions.ns),\n tagType: 0,\n // will be refined on tag close\n props: [],\n children: [],\n loc: getLoc(start - 1, end),\n codegenNode: void 0\n };\n },\n onopentagend(end) {\n endOpenTag(end);\n },\n onclosetag(start, end) {\n const name = getSlice(start, end);\n if (!currentOptions.isVoidTag(name)) {\n let found = false;\n for (let i = 0; i < stack.length; i++) {\n const e = stack[i];\n if (e.tag.toLowerCase() === name.toLowerCase()) {\n found = true;\n if (i > 0) {\n emitError(24, stack[0].loc.start.offset);\n }\n for (let j = 0; j <= i; j++) {\n const el = stack.shift();\n onCloseTag(el, end, j < i);\n }\n break;\n }\n }\n if (!found) {\n emitError(23, backTrack(start, 60));\n }\n }\n },\n onselfclosingtag(end) {\n var _a;\n const name = currentOpenTag.tag;\n currentOpenTag.isSelfClosing = true;\n endOpenTag(end);\n if (((_a = stack[0]) == null ? void 0 : _a.tag) === name) {\n onCloseTag(stack.shift(), end);\n }\n },\n onattribname(start, end) {\n currentProp = {\n type: 6,\n name: getSlice(start, end),\n nameLoc: getLoc(start, end),\n value: void 0,\n loc: getLoc(start)\n };\n },\n ondirname(start, end) {\n const raw = getSlice(start, end);\n const name = raw === \".\" || raw === \":\" ? \"bind\" : raw === \"@\" ? \"on\" : raw === \"#\" ? \"slot\" : raw.slice(2);\n if (!inVPre && name === \"\") {\n emitError(26, start);\n }\n if (inVPre || name === \"\") {\n currentProp = {\n type: 6,\n name: raw,\n nameLoc: getLoc(start, end),\n value: void 0,\n loc: getLoc(start)\n };\n } else {\n currentProp = {\n type: 7,\n name,\n rawName: raw,\n exp: void 0,\n arg: void 0,\n modifiers: raw === \".\" ? [\"prop\"] : [],\n loc: getLoc(start)\n };\n if (name === \"pre\") {\n inVPre = tokenizer.inVPre = true;\n currentVPreBoundary = currentOpenTag;\n const props = currentOpenTag.props;\n for (let i = 0; i < props.length; i++) {\n if (props[i].type === 7) {\n props[i] = dirToAttr(props[i]);\n }\n }\n }\n }\n },\n ondirarg(start, end) {\n if (start === end)\n return;\n const arg = getSlice(start, end);\n if (inVPre) {\n currentProp.name += arg;\n setLocEnd(currentProp.nameLoc, end);\n } else {\n const isStatic = arg[0] !== `[`;\n currentProp.arg = createExp(\n isStatic ? arg : arg.slice(1, -1),\n isStatic,\n getLoc(start, end),\n isStatic ? 3 : 0\n );\n }\n },\n ondirmodifier(start, end) {\n const mod = getSlice(start, end);\n if (inVPre) {\n currentProp.name += \".\" + mod;\n setLocEnd(currentProp.nameLoc, end);\n } else if (currentProp.name === \"slot\") {\n const arg = currentProp.arg;\n if (arg) {\n arg.content += \".\" + mod;\n setLocEnd(arg.loc, end);\n }\n } else {\n currentProp.modifiers.push(mod);\n }\n },\n onattribdata(start, end) {\n currentAttrValue += getSlice(start, end);\n if (currentAttrStartIndex < 0)\n currentAttrStartIndex = start;\n currentAttrEndIndex = end;\n },\n onattribentity(char, start, end) {\n currentAttrValue += char;\n if (currentAttrStartIndex < 0)\n currentAttrStartIndex = start;\n currentAttrEndIndex = end;\n },\n onattribnameend(end) {\n const start = currentProp.loc.start.offset;\n const name = getSlice(start, end);\n if (currentProp.type === 7) {\n currentProp.rawName = name;\n }\n if (currentOpenTag.props.some(\n (p) => (p.type === 7 ? p.rawName : p.name) === name\n )) {\n emitError(2, start);\n }\n },\n onattribend(quote, end) {\n if (currentOpenTag && currentProp) {\n setLocEnd(currentProp.loc, end);\n if (quote !== 0) {\n if (currentAttrValue.includes(\"&\")) {\n currentAttrValue = currentOptions.decodeEntities(\n currentAttrValue,\n true\n );\n }\n if (currentProp.type === 6) {\n if (currentProp.name === \"class\") {\n currentAttrValue = condense(currentAttrValue).trim();\n }\n if (quote === 1 && !currentAttrValue) {\n emitError(13, end);\n }\n currentProp.value = {\n type: 2,\n content: currentAttrValue,\n loc: quote === 1 ? getLoc(currentAttrStartIndex, currentAttrEndIndex) : getLoc(currentAttrStartIndex - 1, currentAttrEndIndex + 1)\n };\n if (tokenizer.inSFCRoot && currentOpenTag.tag === \"template\" && currentProp.name === \"lang\" && currentAttrValue && currentAttrValue !== \"html\") {\n tokenizer.enterRCDATA(toCharCodes(`</template`), 0);\n }\n } else {\n let expParseMode = 0 /* Normal */;\n currentProp.exp = createExp(\n currentAttrValue,\n false,\n getLoc(currentAttrStartIndex, currentAttrEndIndex),\n 0,\n expParseMode\n );\n if (currentProp.name === \"for\") {\n currentProp.forParseResult = parseForExpression(currentProp.exp);\n }\n let syncIndex = -1;\n if (currentProp.name === \"bind\" && (syncIndex = currentProp.modifiers.indexOf(\"sync\")) > -1 && checkCompatEnabled(\n \"COMPILER_V_BIND_SYNC\",\n currentOptions,\n currentProp.loc,\n currentProp.rawName\n )) {\n currentProp.name = \"model\";\n currentProp.modifiers.splice(syncIndex, 1);\n }\n }\n }\n if (currentProp.type !== 7 || currentProp.name !== \"pre\") {\n currentOpenTag.props.push(currentProp);\n }\n }\n currentAttrValue = \"\";\n currentAttrStartIndex = currentAttrEndIndex = -1;\n },\n oncomment(start, end) {\n if (currentOptions.comments) {\n addNode({\n type: 3,\n content: getSlice(start, end),\n loc: getLoc(start - 4, end + 3)\n });\n }\n },\n onend() {\n const end = currentInput.length;\n if ((!!(process.env.NODE_ENV !== \"production\") || false) && tokenizer.state !== 1) {\n switch (tokenizer.state) {\n case 5:\n case 8:\n emitError(5, end);\n break;\n case 3:\n case 4:\n emitError(\n 25,\n tokenizer.sectionStart\n );\n break;\n case 28:\n if (tokenizer.currentSequence === Sequences.CdataEnd) {\n emitError(6, end);\n } else {\n emitError(7, end);\n }\n break;\n case 6:\n case 7:\n case 9:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n case 16:\n case 17:\n case 18:\n case 19:\n case 20:\n case 21:\n emitError(9, end);\n break;\n }\n }\n for (let index = 0; index < stack.length; index++) {\n onCloseTag(stack[index], end - 1);\n emitError(24, stack[index].loc.start.offset);\n }\n },\n oncdata(start, end) {\n if (stack[0].ns !== 0) {\n onText(getSlice(start, end), start, end);\n } else {\n emitError(1, start - 9);\n }\n },\n onprocessinginstruction(start) {\n if ((stack[0] ? stack[0].ns : currentOptions.ns) === 0) {\n emitError(\n 21,\n start - 1\n );\n }\n }\n});\nconst forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\nconst stripParensRE = /^\\(|\\)$/g;\nfunction parseForExpression(input) {\n const loc = input.loc;\n const exp = input.content;\n const inMatch = exp.match(forAliasRE);\n if (!inMatch)\n return;\n const [, LHS, RHS] = inMatch;\n const createAliasExpression = (content, offset, asParam = false) => {\n const start = loc.start.offset + offset;\n const end = start + content.length;\n return createExp(\n content,\n false,\n getLoc(start, end),\n 0,\n asParam ? 1 /* Params */ : 0 /* Normal */\n );\n };\n const result = {\n source: createAliasExpression(RHS.trim(), exp.indexOf(RHS, LHS.length)),\n value: void 0,\n key: void 0,\n index: void 0,\n finalized: false\n };\n let valueContent = LHS.trim().replace(stripParensRE, \"\").trim();\n const trimmedOffset = LHS.indexOf(valueContent);\n const iteratorMatch = valueContent.match(forIteratorRE);\n if (iteratorMatch) {\n valueContent = valueContent.replace(forIteratorRE, \"\").trim();\n const keyContent = iteratorMatch[1].trim();\n let keyOffset;\n if (keyContent) {\n keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length);\n result.key = createAliasExpression(keyContent, keyOffset, true);\n }\n if (iteratorMatch[2]) {\n const indexContent = iteratorMatch[2].trim();\n if (indexContent) {\n result.index = createAliasExpression(\n indexContent,\n exp.indexOf(\n indexContent,\n result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length\n ),\n true\n );\n }\n }\n }\n if (valueContent) {\n result.value = createAliasExpression(valueContent, trimmedOffset, true);\n }\n return result;\n}\nfunction getSlice(start, end) {\n return currentInput.slice(start, end);\n}\nfunction endOpenTag(end) {\n if (tokenizer.inSFCRoot) {\n currentOpenTag.innerLoc = getLoc(end + 1, end + 1);\n }\n addNode(currentOpenTag);\n const { tag, ns } = currentOpenTag;\n if (ns === 0 && currentOptions.isPreTag(tag)) {\n inPre++;\n }\n if (currentOptions.isVoidTag(tag)) {\n onCloseTag(currentOpenTag, end);\n } else {\n stack.unshift(currentOpenTag);\n if (ns === 1 || ns === 2) {\n tokenizer.inXML = true;\n }\n }\n currentOpenTag = null;\n}\nfunction onText(content, start, end) {\n var _a;\n {\n const tag = (_a = stack[0]) == null ? void 0 : _a.tag;\n if (tag !== \"script\" && tag !== \"style\" && content.includes(\"&\")) {\n content = currentOptions.decodeEntities(content, false);\n }\n }\n const parent = stack[0] || currentRoot;\n const lastNode = parent.children[parent.children.length - 1];\n if ((lastNode == null ? void 0 : lastNode.type) === 2) {\n lastNode.content += content;\n setLocEnd(lastNode.loc, end);\n } else {\n parent.children.push({\n type: 2,\n content,\n loc: getLoc(start, end)\n });\n }\n}\nfunction onCloseTag(el, end, isImplied = false) {\n if (isImplied) {\n setLocEnd(el.loc, backTrack(end, 60));\n } else {\n setLocEnd(el.loc, end + 1);\n }\n if (tokenizer.inSFCRoot) {\n if (el.children.length) {\n el.innerLoc.end = extend({}, el.children[el.children.length - 1].loc.end);\n } else {\n el.innerLoc.end = extend({}, el.innerLoc.start);\n }\n el.innerLoc.source = getSlice(\n el.innerLoc.start.offset,\n el.innerLoc.end.offset\n );\n }\n const { tag, ns } = el;\n if (!inVPre) {\n if (tag === \"slot\") {\n el.tagType = 2;\n } else if (isFragmentTemplate(el)) {\n el.tagType = 3;\n } else if (isComponent(el)) {\n el.tagType = 1;\n }\n }\n if (!tokenizer.inRCDATA) {\n el.children = condenseWhitespace(el.children, el.tag);\n }\n if (ns === 0 && currentOptions.isPreTag(tag)) {\n inPre--;\n }\n if (currentVPreBoundary === el) {\n inVPre = tokenizer.inVPre = false;\n currentVPreBoundary = null;\n }\n if (tokenizer.inXML && (stack[0] ? stack[0].ns : currentOptions.ns) === 0) {\n tokenizer.inXML = false;\n }\n {\n const props = el.props;\n if (!!(process.env.NODE_ENV !== \"production\") && isCompatEnabled(\n \"COMPILER_V_IF_V_FOR_PRECEDENCE\",\n currentOptions\n )) {\n let hasIf = false;\n let hasFor = false;\n for (let i = 0; i < props.length; i++) {\n const p = props[i];\n if (p.type === 7) {\n if (p.name === \"if\") {\n hasIf = true;\n } else if (p.name === \"for\") {\n hasFor = true;\n }\n }\n if (hasIf && hasFor) {\n warnDeprecation(\n \"COMPILER_V_IF_V_FOR_PRECEDENCE\",\n currentOptions,\n el.loc\n );\n break;\n }\n }\n }\n if (isCompatEnabled(\n \"COMPILER_NATIVE_TEMPLATE\",\n currentOptions\n ) && el.tag === \"template\" && !isFragmentTemplate(el)) {\n !!(process.env.NODE_ENV !== \"production\") && warnDeprecation(\n \"COMPILER_NATIVE_TEMPLATE\",\n currentOptions,\n el.loc\n );\n const parent = stack[0] || currentRoot;\n const index = parent.children.indexOf(el);\n parent.children.splice(index, 1, ...el.children);\n }\n const inlineTemplateProp = props.find(\n (p) => p.type === 6 && p.name === \"inline-template\"\n );\n if (inlineTemplateProp && checkCompatEnabled(\n \"COMPILER_INLINE_TEMPLATE\",\n currentOptions,\n inlineTemplateProp.loc\n ) && el.children.length) {\n inlineTemplateProp.value = {\n type: 2,\n content: getSlice(\n el.children[0].loc.start.offset,\n el.children[el.children.length - 1].loc.end.offset\n ),\n loc: inlineTemplateProp.loc\n };\n }\n }\n}\nfunction backTrack(index, c) {\n let i = index;\n while (currentInput.charCodeAt(i) !== c && i >= 0)\n i--;\n return i;\n}\nconst specialTemplateDir = /* @__PURE__ */ new Set([\"if\", \"else\", \"else-if\", \"for\", \"slot\"]);\nfunction isFragmentTemplate({ tag, props }) {\n if (tag === \"template\") {\n for (let i = 0; i < props.length; i++) {\n if (props[i].type === 7 && specialTemplateDir.has(props[i].name)) {\n return true;\n }\n }\n }\n return false;\n}\nfunction isComponent({ tag, props }) {\n var _a;\n if (currentOptions.isCustomElement(tag)) {\n return false;\n }\n if (tag === \"component\" || isUpperCase(tag.charCodeAt(0)) || isCoreComponent(tag) || ((_a = currentOptions.isBuiltInComponent) == null ? void 0 : _a.call(currentOptions, tag)) || currentOptions.isNativeTag && !currentOptions.isNativeTag(tag)) {\n return true;\n }\n for (let i = 0; i < props.length; i++) {\n const p = props[i];\n if (p.type === 6) {\n if (p.name === \"is\" && p.value) {\n if (p.value.content.startsWith(\"vue:\")) {\n return true;\n } else if (checkCompatEnabled(\n \"COMPILER_IS_ON_ELEMENT\",\n currentOptions,\n p.loc\n )) {\n return true;\n }\n }\n } else if (// :is on plain element - only treat as component in compat mode\n p.name === \"bind\" && isStaticArgOf(p.arg, \"is\") && checkCompatEnabled(\n \"COMPILER_IS_ON_ELEMENT\",\n currentOptions,\n p.loc\n )) {\n return true;\n }\n }\n return false;\n}\nfunction isUpperCase(c) {\n return c > 64 && c < 91;\n}\nconst windowsNewlineRE = /\\r\\n/g;\nfunction condenseWhitespace(nodes, tag) {\n var _a, _b;\n const shouldCondense = currentOptions.whitespace !== \"preserve\";\n let removedWhitespace = false;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (node.type === 2) {\n if (!inPre) {\n if (isAllWhitespace(node.content)) {\n const prev = (_a = nodes[i - 1]) == null ? void 0 : _a.type;\n const next = (_b = nodes[i + 1]) == null ? void 0 : _b.type;\n if (!prev || !next || shouldCondense && (prev === 3 && (next === 3 || next === 1) || prev === 1 && (next === 3 || next === 1 && hasNewlineChar(node.content)))) {\n removedWhitespace = true;\n nodes[i] = null;\n } else {\n node.content = \" \";\n }\n } else if (shouldCondense) {\n node.content = condense(node.content);\n }\n } else {\n node.content = node.content.replace(windowsNewlineRE, \"\\n\");\n }\n }\n }\n if (inPre && tag && currentOptions.isPreTag(tag)) {\n const first = nodes[0];\n if (first && first.type === 2) {\n first.content = first.content.replace(/^\\r?\\n/, \"\");\n }\n }\n return removedWhitespace ? nodes.filter(Boolean) : nodes;\n}\nfunction isAllWhitespace(str) {\n for (let i = 0; i < str.length; i++) {\n if (!isWhitespace(str.charCodeAt(i))) {\n return false;\n }\n }\n return true;\n}\nfunction hasNewlineChar(str) {\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c === 10 || c === 13) {\n return true;\n }\n }\n return false;\n}\nfunction condense(str) {\n let ret = \"\";\n let prevCharIsWhitespace = false;\n for (let i = 0; i < str.length; i++) {\n if (isWhitespace(str.charCodeAt(i))) {\n if (!prevCharIsWhitespace) {\n ret += \" \";\n prevCharIsWhitespace = true;\n }\n } else {\n ret += str[i];\n prevCharIsWhitespace = false;\n }\n }\n return ret;\n}\nfunction addNode(node) {\n (stack[0] || currentRoot).children.push(node);\n}\nfunction getLoc(start, end) {\n return {\n start: tokenizer.getPos(start),\n // @ts-expect-error allow late attachment\n end: end == null ? end : tokenizer.getPos(end),\n // @ts-expect-error allow late attachment\n source: end == null ? end : getSlice(start, end)\n };\n}\nfunction setLocEnd(loc, end) {\n loc.end = tokenizer.getPos(end);\n loc.source = getSlice(loc.start.offset, end);\n}\nfunction dirToAttr(dir) {\n const attr = {\n type: 6,\n name: dir.rawName,\n nameLoc: getLoc(\n dir.loc.start.offset,\n dir.loc.start.offset + dir.rawName.length\n ),\n value: void 0,\n loc: dir.loc\n };\n if (dir.exp) {\n const loc = dir.exp.loc;\n if (loc.end.offset < dir.loc.end.offset) {\n loc.start.offset--;\n loc.start.column--;\n loc.end.offset++;\n loc.end.column++;\n }\n attr.value = {\n type: 2,\n content: dir.exp.content,\n loc\n };\n }\n return attr;\n}\nfunction createExp(content, isStatic = false, loc, constType = 0, parseMode = 0 /* Normal */) {\n const exp = createSimpleExpression(content, isStatic, loc, constType);\n return exp;\n}\nfunction emitError(code, index, message) {\n currentOptions.onError(\n createCompilerError(code, getLoc(index, index), void 0, message)\n );\n}\nfunction reset() {\n tokenizer.reset();\n currentOpenTag = null;\n currentProp = null;\n currentAttrValue = \"\";\n currentAttrStartIndex = -1;\n currentAttrEndIndex = -1;\n stack.length = 0;\n}\nfunction baseParse(input, options) {\n reset();\n currentInput = input;\n currentOptions = extend({}, defaultParserOptions);\n if (options) {\n let key;\n for (key in options) {\n if (options[key] != null) {\n currentOptions[key] = options[key];\n }\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!currentOptions.decodeEntities) {\n throw new Error(\n `[@vue/compiler-core] decodeEntities option is required in browser builds.`\n );\n }\n }\n tokenizer.mode = currentOptions.parseMode === \"html\" ? 1 : currentOptions.parseMode === \"sfc\" ? 2 : 0;\n tokenizer.inXML = currentOptions.ns === 1 || currentOptions.ns === 2;\n const delimiters = options == null ? void 0 : options.delimiters;\n if (delimiters) {\n tokenizer.delimiterOpen = toCharCodes(delimiters[0]);\n tokenizer.delimiterClose = toCharCodes(delimiters[1]);\n }\n const root = currentRoot = createRoot([], input);\n tokenizer.parse(currentInput);\n root.loc = getLoc(0, input.length);\n root.children = condenseWhitespace(root.children);\n currentRoot = null;\n return root;\n}\n\nfunction hoistStatic(root, context) {\n walk(\n root,\n context,\n // Root node is unfortunately non-hoistable due to potential parent\n // fallthrough attributes.\n isSingleElementRoot(root, root.children[0])\n );\n}\nfunction isSingleElementRoot(root, child) {\n const { children } = root;\n return children.length === 1 && child.type === 1 && !isSlotOutlet(child);\n}\nfunction walk(node, context, doNotHoistNode = false) {\n const { children } = node;\n const originalCount = children.length;\n let hoistedCount = 0;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child.type === 1 && child.tagType === 0) {\n const constantType = doNotHoistNode ? 0 : getConstantType(child, context);\n if (constantType > 0) {\n if (constantType >= 2) {\n child.codegenNode.patchFlag = -1 + (!!(process.env.NODE_ENV !== \"production\") ? ` /* HOISTED */` : ``);\n child.codegenNode = context.hoist(child.codegenNode);\n hoistedCount++;\n continue;\n }\n } else {\n const codegenNode = child.codegenNode;\n if (codegenNode.type === 13) {\n const flag = getPatchFlag(codegenNode);\n if ((!flag || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) {\n const props = getNodeProps(child);\n if (props) {\n codegenNode.props = context.hoist(props);\n }\n }\n if (codegenNode.dynamicProps) {\n codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps);\n }\n }\n }\n }\n if (child.type === 1) {\n const isComponent = child.tagType === 1;\n if (isComponent) {\n context.scopes.vSlot++;\n }\n walk(child, context);\n if (isComponent) {\n context.scopes.vSlot--;\n }\n } else if (child.type === 11) {\n walk(child, context, child.children.length === 1);\n } else if (child.type === 9) {\n for (let i2 = 0; i2 < child.branches.length; i2++) {\n walk(\n child.branches[i2],\n context,\n child.branches[i2].children.length === 1\n );\n }\n }\n }\n if (hoistedCount && context.transformHoist) {\n context.transformHoist(children, context, node);\n }\n if (hoistedCount && hoistedCount === originalCount && node.type === 1 && node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && isArray(node.codegenNode.children)) {\n const hoisted = context.hoist(\n createArrayExpression(node.codegenNode.children)\n );\n if (context.hmr) {\n hoisted.content = `[...${hoisted.content}]`;\n }\n node.codegenNode.children = hoisted;\n }\n}\nfunction getConstantType(node, context) {\n const { constantCache } = context;\n switch (node.type) {\n case 1:\n if (node.tagType !== 0) {\n return 0;\n }\n const cached = constantCache.get(node);\n if (cached !== void 0) {\n return cached;\n }\n const codegenNode = node.codegenNode;\n if (codegenNode.type !== 13) {\n return 0;\n }\n if (codegenNode.isBlock && node.tag !== \"svg\" && node.tag !== \"foreignObject\") {\n return 0;\n }\n const flag = getPatchFlag(codegenNode);\n if (!flag) {\n let returnType2 = 3;\n const generatedPropsType = getGeneratedPropsConstantType(node, context);\n if (generatedPropsType === 0) {\n constantCache.set(node, 0);\n return 0;\n }\n if (generatedPropsType < returnType2) {\n returnType2 = generatedPropsType;\n }\n for (let i = 0; i < node.children.length; i++) {\n const childType = getConstantType(node.children[i], context);\n if (childType === 0) {\n constantCache.set(node, 0);\n return 0;\n }\n if (childType < returnType2) {\n returnType2 = childType;\n }\n }\n if (returnType2 > 1) {\n for (let i = 0; i < node.props.length; i++) {\n const p = node.props[i];\n if (p.type === 7 && p.name === \"bind\" && p.exp) {\n const expType = getConstantType(p.exp, context);\n if (expType === 0) {\n constantCache.set(node, 0);\n return 0;\n }\n if (expType < returnType2) {\n returnType2 = expType;\n }\n }\n }\n }\n if (codegenNode.isBlock) {\n for (let i = 0; i < node.props.length; i++) {\n const p = node.props[i];\n if (p.type === 7) {\n constantCache.set(node, 0);\n return 0;\n }\n }\n context.removeHelper(OPEN_BLOCK);\n context.removeHelper(\n getVNodeBlockHelper(context.inSSR, codegenNode.isComponent)\n );\n codegenNode.isBlock = false;\n context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent));\n }\n constantCache.set(node, returnType2);\n return returnType2;\n } else {\n constantCache.set(node, 0);\n return 0;\n }\n case 2:\n case 3:\n return 3;\n case 9:\n case 11:\n case 10:\n return 0;\n case 5:\n case 12:\n return getConstantType(node.content, context);\n case 4:\n return node.constType;\n case 8:\n let returnType = 3;\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (isString(child) || isSymbol(child)) {\n continue;\n }\n const childType = getConstantType(child, context);\n if (childType === 0) {\n return 0;\n } else if (childType < returnType) {\n returnType = childType;\n }\n }\n return returnType;\n default:\n if (!!(process.env.NODE_ENV !== \"production\")) ;\n return 0;\n }\n}\nconst allowHoistedHelperSet = /* @__PURE__ */ new Set([\n NORMALIZE_CLASS,\n NORMALIZE_STYLE,\n NORMALIZE_PROPS,\n GUARD_REACTIVE_PROPS\n]);\nfunction getConstantTypeOfHelperCall(value, context) {\n if (value.type === 14 && !isString(value.callee) && allowHoistedHelperSet.has(value.callee)) {\n const arg = value.arguments[0];\n if (arg.type === 4) {\n return getConstantType(arg, context);\n } else if (arg.type === 14) {\n return getConstantTypeOfHelperCall(arg, context);\n }\n }\n return 0;\n}\nfunction getGeneratedPropsConstantType(node, context) {\n let returnType = 3;\n const props = getNodeProps(node);\n if (props && props.type === 15) {\n const { properties } = props;\n for (let i = 0; i < properties.length; i++) {\n const { key, value } = properties[i];\n const keyType = getConstantType(key, context);\n if (keyType === 0) {\n return keyType;\n }\n if (keyType < returnType) {\n returnType = keyType;\n }\n let valueType;\n if (value.type === 4) {\n valueType = getConstantType(value, context);\n } else if (value.type === 14) {\n valueType = getConstantTypeOfHelperCall(value, context);\n } else {\n valueType = 0;\n }\n if (valueType === 0) {\n return valueType;\n }\n if (valueType < returnType) {\n returnType = valueType;\n }\n }\n }\n return returnType;\n}\nfunction getNodeProps(node) {\n const codegenNode = node.codegenNode;\n if (codegenNode.type === 13) {\n return codegenNode.props;\n }\n}\nfunction getPatchFlag(node) {\n const flag = node.patchFlag;\n return flag ? parseInt(flag, 10) : void 0;\n}\n\nfunction createTransformContext(root, {\n filename = \"\",\n prefixIdentifiers = false,\n hoistStatic: hoistStatic2 = false,\n hmr = false,\n cacheHandlers = false,\n nodeTransforms = [],\n directiveTransforms = {},\n transformHoist = null,\n isBuiltInComponent = NOOP,\n isCustomElement = NOOP,\n expressionPlugins = [],\n scopeId = null,\n slotted = true,\n ssr = false,\n inSSR = false,\n ssrCssVars = ``,\n bindingMetadata = EMPTY_OBJ,\n inline = false,\n isTS = false,\n onError = defaultOnError,\n onWarn = defaultOnWarn,\n compatConfig\n}) {\n const nameMatch = filename.replace(/\\?.*$/, \"\").match(/([^/\\\\]+)\\.\\w+$/);\n const context = {\n // options\n filename,\n selfName: nameMatch && capitalize(camelize(nameMatch[1])),\n prefixIdentifiers,\n hoistStatic: hoistStatic2,\n hmr,\n cacheHandlers,\n nodeTransforms,\n directiveTransforms,\n transformHoist,\n isBuiltInComponent,\n isCustomElement,\n expressionPlugins,\n scopeId,\n slotted,\n ssr,\n inSSR,\n ssrCssVars,\n bindingMetadata,\n inline,\n isTS,\n onError,\n onWarn,\n compatConfig,\n // state\n root,\n helpers: /* @__PURE__ */ new Map(),\n components: /* @__PURE__ */ new Set(),\n directives: /* @__PURE__ */ new Set(),\n hoists: [],\n imports: [],\n constantCache: /* @__PURE__ */ new WeakMap(),\n temps: 0,\n cached: 0,\n identifiers: /* @__PURE__ */ Object.create(null),\n scopes: {\n vFor: 0,\n vSlot: 0,\n vPre: 0,\n vOnce: 0\n },\n parent: null,\n currentNode: root,\n childIndex: 0,\n inVOnce: false,\n // methods\n helper(name) {\n const count = context.helpers.get(name) || 0;\n context.helpers.set(name, count + 1);\n return name;\n },\n removeHelper(name) {\n const count = context.helpers.get(name);\n if (count) {\n const currentCount = count - 1;\n if (!currentCount) {\n context.helpers.delete(name);\n } else {\n context.helpers.set(name, currentCount);\n }\n }\n },\n helperString(name) {\n return `_${helperNameMap[context.helper(name)]}`;\n },\n replaceNode(node) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!context.currentNode) {\n throw new Error(`Node being replaced is already removed.`);\n }\n if (!context.parent) {\n throw new Error(`Cannot replace root node.`);\n }\n }\n context.parent.children[context.childIndex] = context.currentNode = node;\n },\n removeNode(node) {\n if (!!(process.env.NODE_ENV !== \"production\") && !context.parent) {\n throw new Error(`Cannot remove root node.`);\n }\n const list = context.parent.children;\n const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1;\n if (!!(process.env.NODE_ENV !== \"production\") && removalIndex < 0) {\n throw new Error(`node being removed is not a child of current parent`);\n }\n if (!node || node === context.currentNode) {\n context.currentNode = null;\n context.onNodeRemoved();\n } else {\n if (context.childIndex > removalIndex) {\n context.childIndex--;\n context.onNodeRemoved();\n }\n }\n context.parent.children.splice(removalIndex, 1);\n },\n onNodeRemoved: () => {\n },\n addIdentifiers(exp) {\n },\n removeIdentifiers(exp) {\n },\n hoist(exp) {\n if (isString(exp))\n exp = createSimpleExpression(exp);\n context.hoists.push(exp);\n const identifier = createSimpleExpression(\n `_hoisted_${context.hoists.length}`,\n false,\n exp.loc,\n 2\n );\n identifier.hoisted = exp;\n return identifier;\n },\n cache(exp, isVNode = false) {\n return createCacheExpression(context.cached++, exp, isVNode);\n }\n };\n {\n context.filters = /* @__PURE__ */ new Set();\n }\n return context;\n}\nfunction transform(root, options) {\n const context = createTransformContext(root, options);\n traverseNode(root, context);\n if (options.hoistStatic) {\n hoistStatic(root, context);\n }\n if (!options.ssr) {\n createRootCodegen(root, context);\n }\n root.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]);\n root.components = [...context.components];\n root.directives = [...context.directives];\n root.imports = context.imports;\n root.hoists = context.hoists;\n root.temps = context.temps;\n root.cached = context.cached;\n root.transformed = true;\n {\n root.filters = [...context.filters];\n }\n}\nfunction createRootCodegen(root, context) {\n const { helper } = context;\n const { children } = root;\n if (children.length === 1) {\n const child = children[0];\n if (isSingleElementRoot(root, child) && child.codegenNode) {\n const codegenNode = child.codegenNode;\n if (codegenNode.type === 13) {\n convertToBlock(codegenNode, context);\n }\n root.codegenNode = codegenNode;\n } else {\n root.codegenNode = child;\n }\n } else if (children.length > 1) {\n let patchFlag = 64;\n let patchFlagText = PatchFlagNames[64];\n if (!!(process.env.NODE_ENV !== \"production\") && children.filter((c) => c.type !== 3).length === 1) {\n patchFlag |= 2048;\n patchFlagText += `, ${PatchFlagNames[2048]}`;\n }\n root.codegenNode = createVNodeCall(\n context,\n helper(FRAGMENT),\n void 0,\n root.children,\n patchFlag + (!!(process.env.NODE_ENV !== \"production\") ? ` /* ${patchFlagText} */` : ``),\n void 0,\n void 0,\n true,\n void 0,\n false\n );\n } else ;\n}\nfunction traverseChildren(parent, context) {\n let i = 0;\n const nodeRemoved = () => {\n i--;\n };\n for (; i < parent.children.length; i++) {\n const child = parent.children[i];\n if (isString(child))\n continue;\n context.parent = parent;\n context.childIndex = i;\n context.onNodeRemoved = nodeRemoved;\n traverseNode(child, context);\n }\n}\nfunction traverseNode(node, context) {\n context.currentNode = node;\n const { nodeTransforms } = context;\n const exitFns = [];\n for (let i2 = 0; i2 < nodeTransforms.length; i2++) {\n const onExit = nodeTransforms[i2](node, context);\n if (onExit) {\n if (isArray(onExit)) {\n exitFns.push(...onExit);\n } else {\n exitFns.push(onExit);\n }\n }\n if (!context.currentNode) {\n return;\n } else {\n node = context.currentNode;\n }\n }\n switch (node.type) {\n case 3:\n if (!context.ssr) {\n context.helper(CREATE_COMMENT);\n }\n break;\n case 5:\n if (!context.ssr) {\n context.helper(TO_DISPLAY_STRING);\n }\n break;\n case 9:\n for (let i2 = 0; i2 < node.branches.length; i2++) {\n traverseNode(node.branches[i2], context);\n }\n break;\n case 10:\n case 11:\n case 1:\n case 0:\n traverseChildren(node, context);\n break;\n }\n context.currentNode = node;\n let i = exitFns.length;\n while (i--) {\n exitFns[i]();\n }\n}\nfunction createStructuralDirectiveTransform(name, fn) {\n const matches = isString(name) ? (n) => n === name : (n) => name.test(n);\n return (node, context) => {\n if (node.type === 1) {\n const { props } = node;\n if (node.tagType === 3 && props.some(isVSlot)) {\n return;\n }\n const exitFns = [];\n for (let i = 0; i < props.length; i++) {\n const prop = props[i];\n if (prop.type === 7 && matches(prop.name)) {\n props.splice(i, 1);\n i--;\n const onExit = fn(node, prop, context);\n if (onExit)\n exitFns.push(onExit);\n }\n }\n return exitFns;\n }\n };\n}\n\nconst PURE_ANNOTATION = `/*#__PURE__*/`;\nconst aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`;\nfunction createCodegenContext(ast, {\n mode = \"function\",\n prefixIdentifiers = mode === \"module\",\n sourceMap = false,\n filename = `template.vue.html`,\n scopeId = null,\n optimizeImports = false,\n runtimeGlobalName = `Vue`,\n runtimeModuleName = `vue`,\n ssrRuntimeModuleName = \"vue/server-renderer\",\n ssr = false,\n isTS = false,\n inSSR = false\n}) {\n const context = {\n mode,\n prefixIdentifiers,\n sourceMap,\n filename,\n scopeId,\n optimizeImports,\n runtimeGlobalName,\n runtimeModuleName,\n ssrRuntimeModuleName,\n ssr,\n isTS,\n inSSR,\n source: ast.source,\n code: ``,\n column: 1,\n line: 1,\n offset: 0,\n indentLevel: 0,\n pure: false,\n map: void 0,\n helper(key) {\n return `_${helperNameMap[key]}`;\n },\n push(code, newlineIndex = -2 /* None */, node) {\n context.code += code;\n },\n indent() {\n newline(++context.indentLevel);\n },\n deindent(withoutNewLine = false) {\n if (withoutNewLine) {\n --context.indentLevel;\n } else {\n newline(--context.indentLevel);\n }\n },\n newline() {\n newline(context.indentLevel);\n }\n };\n function newline(n) {\n context.push(\"\\n\" + ` `.repeat(n), 0 /* Start */);\n }\n return context;\n}\nfunction generate(ast, options = {}) {\n const context = createCodegenContext(ast, options);\n if (options.onContextCreated)\n options.onContextCreated(context);\n const {\n mode,\n push,\n prefixIdentifiers,\n indent,\n deindent,\n newline,\n scopeId,\n ssr\n } = context;\n const helpers = Array.from(ast.helpers);\n const hasHelpers = helpers.length > 0;\n const useWithBlock = !prefixIdentifiers && mode !== \"module\";\n const isSetupInlined = false;\n const preambleContext = isSetupInlined ? createCodegenContext(ast, options) : context;\n {\n genFunctionPreamble(ast, preambleContext);\n }\n const functionName = ssr ? `ssrRender` : `render`;\n const args = ssr ? [\"_ctx\", \"_push\", \"_parent\", \"_attrs\"] : [\"_ctx\", \"_cache\"];\n const signature = args.join(\", \");\n {\n push(`function ${functionName}(${signature}) {`);\n }\n indent();\n if (useWithBlock) {\n push(`with (_ctx) {`);\n indent();\n if (hasHelpers) {\n push(\n `const { ${helpers.map(aliasHelper).join(\", \")} } = _Vue\n`,\n -1 /* End */\n );\n newline();\n }\n }\n if (ast.components.length) {\n genAssets(ast.components, \"component\", context);\n if (ast.directives.length || ast.temps > 0) {\n newline();\n }\n }\n if (ast.directives.length) {\n genAssets(ast.directives, \"directive\", context);\n if (ast.temps > 0) {\n newline();\n }\n }\n if (ast.filters && ast.filters.length) {\n newline();\n genAssets(ast.filters, \"filter\", context);\n newline();\n }\n if (ast.temps > 0) {\n push(`let `);\n for (let i = 0; i < ast.temps; i++) {\n push(`${i > 0 ? `, ` : ``}_temp${i}`);\n }\n }\n if (ast.components.length || ast.directives.length || ast.temps) {\n push(`\n`, 0 /* Start */);\n newline();\n }\n if (!ssr) {\n push(`return `);\n }\n if (ast.codegenNode) {\n genNode(ast.codegenNode, context);\n } else {\n push(`null`);\n }\n if (useWithBlock) {\n deindent();\n push(`}`);\n }\n deindent();\n push(`}`);\n return {\n ast,\n code: context.code,\n preamble: isSetupInlined ? preambleContext.code : ``,\n map: context.map ? context.map.toJSON() : void 0\n };\n}\nfunction genFunctionPreamble(ast, context) {\n const {\n ssr,\n prefixIdentifiers,\n push,\n newline,\n runtimeModuleName,\n runtimeGlobalName,\n ssrRuntimeModuleName\n } = context;\n const VueBinding = runtimeGlobalName;\n const helpers = Array.from(ast.helpers);\n if (helpers.length > 0) {\n {\n push(`const _Vue = ${VueBinding}\n`, -1 /* End */);\n if (ast.hoists.length) {\n const staticHelpers = [\n CREATE_VNODE,\n CREATE_ELEMENT_VNODE,\n CREATE_COMMENT,\n CREATE_TEXT,\n CREATE_STATIC\n ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(\", \");\n push(`const { ${staticHelpers} } = _Vue\n`, -1 /* End */);\n }\n }\n }\n genHoists(ast.hoists, context);\n newline();\n push(`return `);\n}\nfunction genAssets(assets, type, { helper, push, newline, isTS }) {\n const resolver = helper(\n type === \"filter\" ? RESOLVE_FILTER : type === \"component\" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE\n );\n for (let i = 0; i < assets.length; i++) {\n let id = assets[i];\n const maybeSelfReference = id.endsWith(\"__self\");\n if (maybeSelfReference) {\n id = id.slice(0, -6);\n }\n push(\n `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}`\n );\n if (i < assets.length - 1) {\n newline();\n }\n }\n}\nfunction genHoists(hoists, context) {\n if (!hoists.length) {\n return;\n }\n context.pure = true;\n const { push, newline, helper, scopeId, mode } = context;\n newline();\n for (let i = 0; i < hoists.length; i++) {\n const exp = hoists[i];\n if (exp) {\n push(\n `const _hoisted_${i + 1} = ${``}`\n );\n genNode(exp, context);\n newline();\n }\n }\n context.pure = false;\n}\nfunction isText(n) {\n return isString(n) || n.type === 4 || n.type === 2 || n.type === 5 || n.type === 8;\n}\nfunction genNodeListAsArray(nodes, context) {\n const multilines = nodes.length > 3 || !!(process.env.NODE_ENV !== \"production\") && nodes.some((n) => isArray(n) || !isText(n));\n context.push(`[`);\n multilines && context.indent();\n genNodeList(nodes, context, multilines);\n multilines && context.deindent();\n context.push(`]`);\n}\nfunction genNodeList(nodes, context, multilines = false, comma = true) {\n const { push, newline } = context;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (isString(node)) {\n push(node, -3 /* Unknown */);\n } else if (isArray(node)) {\n genNodeListAsArray(node, context);\n } else {\n genNode(node, context);\n }\n if (i < nodes.length - 1) {\n if (multilines) {\n comma && push(\",\");\n newline();\n } else {\n comma && push(\", \");\n }\n }\n }\n}\nfunction genNode(node, context) {\n if (isString(node)) {\n context.push(node, -3 /* Unknown */);\n return;\n }\n if (isSymbol(node)) {\n context.push(context.helper(node));\n return;\n }\n switch (node.type) {\n case 1:\n case 9:\n case 11:\n !!(process.env.NODE_ENV !== \"production\") && assert(\n node.codegenNode != null,\n `Codegen node is missing for element/if/for node. Apply appropriate transforms first.`\n );\n genNode(node.codegenNode, context);\n break;\n case 2:\n genText(node, context);\n break;\n case 4:\n genExpression(node, context);\n break;\n case 5:\n genInterpolation(node, context);\n break;\n case 12:\n genNode(node.codegenNode, context);\n break;\n case 8:\n genCompoundExpression(node, context);\n break;\n case 3:\n genComment(node, context);\n break;\n case 13:\n genVNodeCall(node, context);\n break;\n case 14:\n genCallExpression(node, context);\n break;\n case 15:\n genObjectExpression(node, context);\n break;\n case 17:\n genArrayExpression(node, context);\n break;\n case 18:\n genFunctionExpression(node, context);\n break;\n case 19:\n genConditionalExpression(node, context);\n break;\n case 20:\n genCacheExpression(node, context);\n break;\n case 21:\n genNodeList(node.body, context, true, false);\n break;\n case 22:\n break;\n case 23:\n break;\n case 24:\n break;\n case 25:\n break;\n case 26:\n break;\n case 10:\n break;\n default:\n if (!!(process.env.NODE_ENV !== \"production\")) {\n assert(false, `unhandled codegen node type: ${node.type}`);\n const exhaustiveCheck = node;\n return exhaustiveCheck;\n }\n }\n}\nfunction genText(node, context) {\n context.push(JSON.stringify(node.content), -3 /* Unknown */, node);\n}\nfunction genExpression(node, context) {\n const { content, isStatic } = node;\n context.push(\n isStatic ? JSON.stringify(content) : content,\n -3 /* Unknown */,\n node\n );\n}\nfunction genInterpolation(node, context) {\n const { push, helper, pure } = context;\n if (pure)\n push(PURE_ANNOTATION);\n push(`${helper(TO_DISPLAY_STRING)}(`);\n genNode(node.content, context);\n push(`)`);\n}\nfunction genCompoundExpression(node, context) {\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (isString(child)) {\n context.push(child, -3 /* Unknown */);\n } else {\n genNode(child, context);\n }\n }\n}\nfunction genExpressionAsPropertyKey(node, context) {\n const { push } = context;\n if (node.type === 8) {\n push(`[`);\n genCompoundExpression(node, context);\n push(`]`);\n } else if (node.isStatic) {\n const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content);\n push(text, -2 /* None */, node);\n } else {\n push(`[${node.content}]`, -3 /* Unknown */, node);\n }\n}\nfunction genComment(node, context) {\n const { push, helper, pure } = context;\n if (pure) {\n push(PURE_ANNOTATION);\n }\n push(\n `${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`,\n -3 /* Unknown */,\n node\n );\n}\nfunction genVNodeCall(node, context) {\n const { push, helper, pure } = context;\n const {\n tag,\n props,\n children,\n patchFlag,\n dynamicProps,\n directives,\n isBlock,\n disableTracking,\n isComponent\n } = node;\n if (directives) {\n push(helper(WITH_DIRECTIVES) + `(`);\n }\n if (isBlock) {\n push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `);\n }\n if (pure) {\n push(PURE_ANNOTATION);\n }\n const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent);\n push(helper(callHelper) + `(`, -2 /* None */, node);\n genNodeList(\n genNullableArgs([tag, props, children, patchFlag, dynamicProps]),\n context\n );\n push(`)`);\n if (isBlock) {\n push(`)`);\n }\n if (directives) {\n push(`, `);\n genNode(directives, context);\n push(`)`);\n }\n}\nfunction genNullableArgs(args) {\n let i = args.length;\n while (i--) {\n if (args[i] != null)\n break;\n }\n return args.slice(0, i + 1).map((arg) => arg || `null`);\n}\nfunction genCallExpression(node, context) {\n const { push, helper, pure } = context;\n const callee = isString(node.callee) ? node.callee : helper(node.callee);\n if (pure) {\n push(PURE_ANNOTATION);\n }\n push(callee + `(`, -2 /* None */, node);\n genNodeList(node.arguments, context);\n push(`)`);\n}\nfunction genObjectExpression(node, context) {\n const { push, indent, deindent, newline } = context;\n const { properties } = node;\n if (!properties.length) {\n push(`{}`, -2 /* None */, node);\n return;\n }\n const multilines = properties.length > 1 || !!(process.env.NODE_ENV !== \"production\") && properties.some((p) => p.value.type !== 4);\n push(multilines ? `{` : `{ `);\n multilines && indent();\n for (let i = 0; i < properties.length; i++) {\n const { key, value } = properties[i];\n genExpressionAsPropertyKey(key, context);\n push(`: `);\n genNode(value, context);\n if (i < properties.length - 1) {\n push(`,`);\n newline();\n }\n }\n multilines && deindent();\n push(multilines ? `}` : ` }`);\n}\nfunction genArrayExpression(node, context) {\n genNodeListAsArray(node.elements, context);\n}\nfunction genFunctionExpression(node, context) {\n const { push, indent, deindent } = context;\n const { params, returns, body, newline, isSlot } = node;\n if (isSlot) {\n push(`_${helperNameMap[WITH_CTX]}(`);\n }\n push(`(`, -2 /* None */, node);\n if (isArray(params)) {\n genNodeList(params, context);\n } else if (params) {\n genNode(params, context);\n }\n push(`) => `);\n if (newline || body) {\n push(`{`);\n indent();\n }\n if (returns) {\n if (newline) {\n push(`return `);\n }\n if (isArray(returns)) {\n genNodeListAsArray(returns, context);\n } else {\n genNode(returns, context);\n }\n } else if (body) {\n genNode(body, context);\n }\n if (newline || body) {\n deindent();\n push(`}`);\n }\n if (isSlot) {\n if (node.isNonScopedSlot) {\n push(`, undefined, true`);\n }\n push(`)`);\n }\n}\nfunction genConditionalExpression(node, context) {\n const { test, consequent, alternate, newline: needNewline } = node;\n const { push, indent, deindent, newline } = context;\n if (test.type === 4) {\n const needsParens = !isSimpleIdentifier(test.content);\n needsParens && push(`(`);\n genExpression(test, context);\n needsParens && push(`)`);\n } else {\n push(`(`);\n genNode(test, context);\n push(`)`);\n }\n needNewline && indent();\n context.indentLevel++;\n needNewline || push(` `);\n push(`? `);\n genNode(consequent, context);\n context.indentLevel--;\n needNewline && newline();\n needNewline || push(` `);\n push(`: `);\n const isNested = alternate.type === 19;\n if (!isNested) {\n context.indentLevel++;\n }\n genNode(alternate, context);\n if (!isNested) {\n context.indentLevel--;\n }\n needNewline && deindent(\n true\n /* without newline */\n );\n}\nfunction genCacheExpression(node, context) {\n const { push, helper, indent, deindent, newline } = context;\n push(`_cache[${node.index}] || (`);\n if (node.isVNode) {\n indent();\n push(`${helper(SET_BLOCK_TRACKING)}(-1),`);\n newline();\n }\n push(`_cache[${node.index}] = `);\n genNode(node.value, context);\n if (node.isVNode) {\n push(`,`);\n newline();\n push(`${helper(SET_BLOCK_TRACKING)}(1),`);\n newline();\n push(`_cache[${node.index}]`);\n deindent();\n }\n push(`)`);\n}\n\nconst prohibitedKeywordRE = new RegExp(\n \"\\\\b\" + \"arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield\".split(\",\").join(\"\\\\b|\\\\b\") + \"\\\\b\"\n);\nconst stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\nfunction validateBrowserExpression(node, context, asParams = false, asRawStatements = false) {\n const exp = node.content;\n if (!exp.trim()) {\n return;\n }\n try {\n new Function(\n asRawStatements ? ` ${exp} ` : `return ${asParams ? `(${exp}) => {}` : `(${exp})`}`\n );\n } catch (e) {\n let message = e.message;\n const keywordMatch = exp.replace(stripStringRE, \"\").match(prohibitedKeywordRE);\n if (keywordMatch) {\n message = `avoid using JavaScript keyword as property name: \"${keywordMatch[0]}\"`;\n }\n context.onError(\n createCompilerError(\n 45,\n node.loc,\n void 0,\n message\n )\n );\n }\n}\n\nconst transformExpression = (node, context) => {\n if (node.type === 5) {\n node.content = processExpression(\n node.content,\n context\n );\n } else if (node.type === 1) {\n for (let i = 0; i < node.props.length; i++) {\n const dir = node.props[i];\n if (dir.type === 7 && dir.name !== \"for\") {\n const exp = dir.exp;\n const arg = dir.arg;\n if (exp && exp.type === 4 && !(dir.name === \"on\" && arg)) {\n dir.exp = processExpression(\n exp,\n context,\n // slot args must be processed as function params\n dir.name === \"slot\"\n );\n }\n if (arg && arg.type === 4 && !arg.isStatic) {\n dir.arg = processExpression(arg, context);\n }\n }\n }\n }\n};\nfunction processExpression(node, context, asParams = false, asRawStatements = false, localVars = Object.create(context.identifiers)) {\n {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateBrowserExpression(node, context, asParams, asRawStatements);\n }\n return node;\n }\n}\nfunction stringifyExpression(exp) {\n if (isString(exp)) {\n return exp;\n } else if (exp.type === 4) {\n return exp.content;\n } else {\n return exp.children.map(stringifyExpression).join(\"\");\n }\n}\n\nconst transformIf = createStructuralDirectiveTransform(\n /^(if|else|else-if)$/,\n (node, dir, context) => {\n return processIf(node, dir, context, (ifNode, branch, isRoot) => {\n const siblings = context.parent.children;\n let i = siblings.indexOf(ifNode);\n let key = 0;\n while (i-- >= 0) {\n const sibling = siblings[i];\n if (sibling && sibling.type === 9) {\n key += sibling.branches.length;\n }\n }\n return () => {\n if (isRoot) {\n ifNode.codegenNode = createCodegenNodeForBranch(\n branch,\n key,\n context\n );\n } else {\n const parentCondition = getParentCondition(ifNode.codegenNode);\n parentCondition.alternate = createCodegenNodeForBranch(\n branch,\n key + ifNode.branches.length - 1,\n context\n );\n }\n };\n });\n }\n);\nfunction processIf(node, dir, context, processCodegen) {\n if (dir.name !== \"else\" && (!dir.exp || !dir.exp.content.trim())) {\n const loc = dir.exp ? dir.exp.loc : node.loc;\n context.onError(\n createCompilerError(28, dir.loc)\n );\n dir.exp = createSimpleExpression(`true`, false, loc);\n }\n if (!!(process.env.NODE_ENV !== \"production\") && true && dir.exp) {\n validateBrowserExpression(dir.exp, context);\n }\n if (dir.name === \"if\") {\n const branch = createIfBranch(node, dir);\n const ifNode = {\n type: 9,\n loc: node.loc,\n branches: [branch]\n };\n context.replaceNode(ifNode);\n if (processCodegen) {\n return processCodegen(ifNode, branch, true);\n }\n } else {\n const siblings = context.parent.children;\n const comments = [];\n let i = siblings.indexOf(node);\n while (i-- >= -1) {\n const sibling = siblings[i];\n if (sibling && sibling.type === 3) {\n context.removeNode(sibling);\n !!(process.env.NODE_ENV !== \"production\") && comments.unshift(sibling);\n continue;\n }\n if (sibling && sibling.type === 2 && !sibling.content.trim().length) {\n context.removeNode(sibling);\n continue;\n }\n if (sibling && sibling.type === 9) {\n if (dir.name === \"else-if\" && sibling.branches[sibling.branches.length - 1].condition === void 0) {\n context.onError(\n createCompilerError(30, node.loc)\n );\n }\n context.removeNode();\n const branch = createIfBranch(node, dir);\n if (!!(process.env.NODE_ENV !== \"production\") && comments.length && // #3619 ignore comments if the v-if is direct child of <transition>\n !(context.parent && context.parent.type === 1 && (context.parent.tag === \"transition\" || context.parent.tag === \"Transition\"))) {\n branch.children = [...comments, ...branch.children];\n }\n if (!!(process.env.NODE_ENV !== \"production\") || false) {\n const key = branch.userKey;\n if (key) {\n sibling.branches.forEach(({ userKey }) => {\n if (isSameKey(userKey, key)) {\n context.onError(\n createCompilerError(\n 29,\n branch.userKey.loc\n )\n );\n }\n });\n }\n }\n sibling.branches.push(branch);\n const onExit = processCodegen && processCodegen(sibling, branch, false);\n traverseNode(branch, context);\n if (onExit)\n onExit();\n context.currentNode = null;\n } else {\n context.onError(\n createCompilerError(30, node.loc)\n );\n }\n break;\n }\n }\n}\nfunction createIfBranch(node, dir) {\n const isTemplateIf = node.tagType === 3;\n return {\n type: 10,\n loc: node.loc,\n condition: dir.name === \"else\" ? void 0 : dir.exp,\n children: isTemplateIf && !findDir(node, \"for\") ? node.children : [node],\n userKey: findProp(node, `key`),\n isTemplateIf\n };\n}\nfunction createCodegenNodeForBranch(branch, keyIndex, context) {\n if (branch.condition) {\n return createConditionalExpression(\n branch.condition,\n createChildrenCodegenNode(branch, keyIndex, context),\n // make sure to pass in asBlock: true so that the comment node call\n // closes the current block.\n createCallExpression(context.helper(CREATE_COMMENT), [\n !!(process.env.NODE_ENV !== \"production\") ? '\"v-if\"' : '\"\"',\n \"true\"\n ])\n );\n } else {\n return createChildrenCodegenNode(branch, keyIndex, context);\n }\n}\nfunction createChildrenCodegenNode(branch, keyIndex, context) {\n const { helper } = context;\n const keyProperty = createObjectProperty(\n `key`,\n createSimpleExpression(\n `${keyIndex}`,\n false,\n locStub,\n 2\n )\n );\n const { children } = branch;\n const firstChild = children[0];\n const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1;\n if (needFragmentWrapper) {\n if (children.length === 1 && firstChild.type === 11) {\n const vnodeCall = firstChild.codegenNode;\n injectProp(vnodeCall, keyProperty, context);\n return vnodeCall;\n } else {\n let patchFlag = 64;\n let patchFlagText = PatchFlagNames[64];\n if (!!(process.env.NODE_ENV !== \"production\") && !branch.isTemplateIf && children.filter((c) => c.type !== 3).length === 1) {\n patchFlag |= 2048;\n patchFlagText += `, ${PatchFlagNames[2048]}`;\n }\n return createVNodeCall(\n context,\n helper(FRAGMENT),\n createObjectExpression([keyProperty]),\n children,\n patchFlag + (!!(process.env.NODE_ENV !== \"production\") ? ` /* ${patchFlagText} */` : ``),\n void 0,\n void 0,\n true,\n false,\n false,\n branch.loc\n );\n }\n } else {\n const ret = firstChild.codegenNode;\n const vnodeCall = getMemoedVNodeCall(ret);\n if (vnodeCall.type === 13) {\n convertToBlock(vnodeCall, context);\n }\n injectProp(vnodeCall, keyProperty, context);\n return ret;\n }\n}\nfunction isSameKey(a, b) {\n if (!a || a.type !== b.type) {\n return false;\n }\n if (a.type === 6) {\n if (a.value.content !== b.value.content) {\n return false;\n }\n } else {\n const exp = a.exp;\n const branchExp = b.exp;\n if (exp.type !== branchExp.type) {\n return false;\n }\n if (exp.type !== 4 || exp.isStatic !== branchExp.isStatic || exp.content !== branchExp.content) {\n return false;\n }\n }\n return true;\n}\nfunction getParentCondition(node) {\n while (true) {\n if (node.type === 19) {\n if (node.alternate.type === 19) {\n node = node.alternate;\n } else {\n return node;\n }\n } else if (node.type === 20) {\n node = node.value;\n }\n }\n}\n\nconst transformFor = createStructuralDirectiveTransform(\n \"for\",\n (node, dir, context) => {\n const { helper, removeHelper } = context;\n return processFor(node, dir, context, (forNode) => {\n const renderExp = createCallExpression(helper(RENDER_LIST), [\n forNode.source\n ]);\n const isTemplate = isTemplateNode(node);\n const memo = findDir(node, \"memo\");\n const keyProp = findProp(node, `key`);\n const keyExp = keyProp && (keyProp.type === 6 ? createSimpleExpression(keyProp.value.content, true) : keyProp.exp);\n const keyProperty = keyProp ? createObjectProperty(`key`, keyExp) : null;\n const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0;\n const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256;\n forNode.codegenNode = createVNodeCall(\n context,\n helper(FRAGMENT),\n void 0,\n renderExp,\n fragmentFlag + (!!(process.env.NODE_ENV !== \"production\") ? ` /* ${PatchFlagNames[fragmentFlag]} */` : ``),\n void 0,\n void 0,\n true,\n !isStableFragment,\n false,\n node.loc\n );\n return () => {\n let childBlock;\n const { children } = forNode;\n if ((!!(process.env.NODE_ENV !== \"production\") || false) && isTemplate) {\n node.children.some((c) => {\n if (c.type === 1) {\n const key = findProp(c, \"key\");\n if (key) {\n context.onError(\n createCompilerError(\n 33,\n key.loc\n )\n );\n return true;\n }\n }\n });\n }\n const needFragmentWrapper = children.length !== 1 || children[0].type !== 1;\n const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null;\n if (slotOutlet) {\n childBlock = slotOutlet.codegenNode;\n if (isTemplate && keyProperty) {\n injectProp(childBlock, keyProperty, context);\n }\n } else if (needFragmentWrapper) {\n childBlock = createVNodeCall(\n context,\n helper(FRAGMENT),\n keyProperty ? createObjectExpression([keyProperty]) : void 0,\n node.children,\n 64 + (!!(process.env.NODE_ENV !== \"production\") ? ` /* ${PatchFlagNames[64]} */` : ``),\n void 0,\n void 0,\n true,\n void 0,\n false\n );\n } else {\n childBlock = children[0].codegenNode;\n if (isTemplate && keyProperty) {\n injectProp(childBlock, keyProperty, context);\n }\n if (childBlock.isBlock !== !isStableFragment) {\n if (childBlock.isBlock) {\n removeHelper(OPEN_BLOCK);\n removeHelper(\n getVNodeBlockHelper(context.inSSR, childBlock.isComponent)\n );\n } else {\n removeHelper(\n getVNodeHelper(context.inSSR, childBlock.isComponent)\n );\n }\n }\n childBlock.isBlock = !isStableFragment;\n if (childBlock.isBlock) {\n helper(OPEN_BLOCK);\n helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent));\n } else {\n helper(getVNodeHelper(context.inSSR, childBlock.isComponent));\n }\n }\n if (memo) {\n const loop = createFunctionExpression(\n createForLoopParams(forNode.parseResult, [\n createSimpleExpression(`_cached`)\n ])\n );\n loop.body = createBlockStatement([\n createCompoundExpression([`const _memo = (`, memo.exp, `)`]),\n createCompoundExpression([\n `if (_cached`,\n ...keyExp ? [` && _cached.key === `, keyExp] : [],\n ` && ${context.helperString(\n IS_MEMO_SAME\n )}(_cached, _memo)) return _cached`\n ]),\n createCompoundExpression([`const _item = `, childBlock]),\n createSimpleExpression(`_item.memo = _memo`),\n createSimpleExpression(`return _item`)\n ]);\n renderExp.arguments.push(\n loop,\n createSimpleExpression(`_cache`),\n createSimpleExpression(String(context.cached++))\n );\n } else {\n renderExp.arguments.push(\n createFunctionExpression(\n createForLoopParams(forNode.parseResult),\n childBlock,\n true\n )\n );\n }\n };\n });\n }\n);\nfunction processFor(node, dir, context, processCodegen) {\n if (!dir.exp) {\n context.onError(\n createCompilerError(31, dir.loc)\n );\n return;\n }\n const parseResult = dir.forParseResult;\n if (!parseResult) {\n context.onError(\n createCompilerError(32, dir.loc)\n );\n return;\n }\n finalizeForParseResult(parseResult, context);\n const { addIdentifiers, removeIdentifiers, scopes } = context;\n const { source, value, key, index } = parseResult;\n const forNode = {\n type: 11,\n loc: dir.loc,\n source,\n valueAlias: value,\n keyAlias: key,\n objectIndexAlias: index,\n parseResult,\n children: isTemplateNode(node) ? node.children : [node]\n };\n context.replaceNode(forNode);\n scopes.vFor++;\n const onExit = processCodegen && processCodegen(forNode);\n return () => {\n scopes.vFor--;\n if (onExit)\n onExit();\n };\n}\nfunction finalizeForParseResult(result, context) {\n if (result.finalized)\n return;\n if (!!(process.env.NODE_ENV !== \"production\") && true) {\n validateBrowserExpression(result.source, context);\n if (result.key) {\n validateBrowserExpression(\n result.key,\n context,\n true\n );\n }\n if (result.index) {\n validateBrowserExpression(\n result.index,\n context,\n true\n );\n }\n if (result.value) {\n validateBrowserExpression(\n result.value,\n context,\n true\n );\n }\n }\n result.finalized = true;\n}\nfunction createForLoopParams({ value, key, index }, memoArgs = []) {\n return createParamsList([value, key, index, ...memoArgs]);\n}\nfunction createParamsList(args) {\n let i = args.length;\n while (i--) {\n if (args[i])\n break;\n }\n return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false));\n}\n\nconst defaultFallback = createSimpleExpression(`undefined`, false);\nconst trackSlotScopes = (node, context) => {\n if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) {\n const vSlot = findDir(node, \"slot\");\n if (vSlot) {\n vSlot.exp;\n context.scopes.vSlot++;\n return () => {\n context.scopes.vSlot--;\n };\n }\n }\n};\nconst trackVForSlotScopes = (node, context) => {\n let vFor;\n if (isTemplateNode(node) && node.props.some(isVSlot) && (vFor = findDir(node, \"for\"))) {\n const result = vFor.forParseResult;\n if (result) {\n finalizeForParseResult(result, context);\n const { value, key, index } = result;\n const { addIdentifiers, removeIdentifiers } = context;\n value && addIdentifiers(value);\n key && addIdentifiers(key);\n index && addIdentifiers(index);\n return () => {\n value && removeIdentifiers(value);\n key && removeIdentifiers(key);\n index && removeIdentifiers(index);\n };\n }\n }\n};\nconst buildClientSlotFn = (props, _vForExp, children, loc) => createFunctionExpression(\n props,\n children,\n false,\n true,\n children.length ? children[0].loc : loc\n);\nfunction buildSlots(node, context, buildSlotFn = buildClientSlotFn) {\n context.helper(WITH_CTX);\n const { children, loc } = node;\n const slotsProperties = [];\n const dynamicSlots = [];\n let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0;\n const onComponentSlot = findDir(node, \"slot\", true);\n if (onComponentSlot) {\n const { arg, exp } = onComponentSlot;\n if (arg && !isStaticExp(arg)) {\n hasDynamicSlots = true;\n }\n slotsProperties.push(\n createObjectProperty(\n arg || createSimpleExpression(\"default\", true),\n buildSlotFn(exp, void 0, children, loc)\n )\n );\n }\n let hasTemplateSlots = false;\n let hasNamedDefaultSlot = false;\n const implicitDefaultChildren = [];\n const seenSlotNames = /* @__PURE__ */ new Set();\n let conditionalBranchIndex = 0;\n for (let i = 0; i < children.length; i++) {\n const slotElement = children[i];\n let slotDir;\n if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, \"slot\", true))) {\n if (slotElement.type !== 3) {\n implicitDefaultChildren.push(slotElement);\n }\n continue;\n }\n if (onComponentSlot) {\n context.onError(\n createCompilerError(37, slotDir.loc)\n );\n break;\n }\n hasTemplateSlots = true;\n const { children: slotChildren, loc: slotLoc } = slotElement;\n const {\n arg: slotName = createSimpleExpression(`default`, true),\n exp: slotProps,\n loc: dirLoc\n } = slotDir;\n let staticSlotName;\n if (isStaticExp(slotName)) {\n staticSlotName = slotName ? slotName.content : `default`;\n } else {\n hasDynamicSlots = true;\n }\n const vFor = findDir(slotElement, \"for\");\n const slotFunction = buildSlotFn(slotProps, vFor, slotChildren, slotLoc);\n let vIf;\n let vElse;\n if (vIf = findDir(slotElement, \"if\")) {\n hasDynamicSlots = true;\n dynamicSlots.push(\n createConditionalExpression(\n vIf.exp,\n buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++),\n defaultFallback\n )\n );\n } else if (vElse = findDir(\n slotElement,\n /^else(-if)?$/,\n true\n /* allowEmpty */\n )) {\n let j = i;\n let prev;\n while (j--) {\n prev = children[j];\n if (prev.type !== 3) {\n break;\n }\n }\n if (prev && isTemplateNode(prev) && findDir(prev, \"if\")) {\n children.splice(i, 1);\n i--;\n let conditional = dynamicSlots[dynamicSlots.length - 1];\n while (conditional.alternate.type === 19) {\n conditional = conditional.alternate;\n }\n conditional.alternate = vElse.exp ? createConditionalExpression(\n vElse.exp,\n buildDynamicSlot(\n slotName,\n slotFunction,\n conditionalBranchIndex++\n ),\n defaultFallback\n ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++);\n } else {\n context.onError(\n createCompilerError(30, vElse.loc)\n );\n }\n } else if (vFor) {\n hasDynamicSlots = true;\n const parseResult = vFor.forParseResult;\n if (parseResult) {\n finalizeForParseResult(parseResult, context);\n dynamicSlots.push(\n createCallExpression(context.helper(RENDER_LIST), [\n parseResult.source,\n createFunctionExpression(\n createForLoopParams(parseResult),\n buildDynamicSlot(slotName, slotFunction),\n true\n )\n ])\n );\n } else {\n context.onError(\n createCompilerError(\n 32,\n vFor.loc\n )\n );\n }\n } else {\n if (staticSlotName) {\n if (seenSlotNames.has(staticSlotName)) {\n context.onError(\n createCompilerError(\n 38,\n dirLoc\n )\n );\n continue;\n }\n seenSlotNames.add(staticSlotName);\n if (staticSlotName === \"default\") {\n hasNamedDefaultSlot = true;\n }\n }\n slotsProperties.push(createObjectProperty(slotName, slotFunction));\n }\n }\n if (!onComponentSlot) {\n const buildDefaultSlotProperty = (props, children2) => {\n const fn = buildSlotFn(props, void 0, children2, loc);\n if (context.compatConfig) {\n fn.isNonScopedSlot = true;\n }\n return createObjectProperty(`default`, fn);\n };\n if (!hasTemplateSlots) {\n slotsProperties.push(buildDefaultSlotProperty(void 0, children));\n } else if (implicitDefaultChildren.length && // #3766\n // with whitespace: 'preserve', whitespaces between slots will end up in\n // implicitDefaultChildren. Ignore if all implicit children are whitespaces.\n implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) {\n if (hasNamedDefaultSlot) {\n context.onError(\n createCompilerError(\n 39,\n implicitDefaultChildren[0].loc\n )\n );\n } else {\n slotsProperties.push(\n buildDefaultSlotProperty(void 0, implicitDefaultChildren)\n );\n }\n }\n }\n const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1;\n let slots = createObjectExpression(\n slotsProperties.concat(\n createObjectProperty(\n `_`,\n // 2 = compiled but dynamic = can skip normalization, but must run diff\n // 1 = compiled and static = can skip normalization AND diff as optimized\n createSimpleExpression(\n slotFlag + (!!(process.env.NODE_ENV !== \"production\") ? ` /* ${slotFlagsText[slotFlag]} */` : ``),\n false\n )\n )\n ),\n loc\n );\n if (dynamicSlots.length) {\n slots = createCallExpression(context.helper(CREATE_SLOTS), [\n slots,\n createArrayExpression(dynamicSlots)\n ]);\n }\n return {\n slots,\n hasDynamicSlots\n };\n}\nfunction buildDynamicSlot(name, fn, index) {\n const props = [\n createObjectProperty(`name`, name),\n createObjectProperty(`fn`, fn)\n ];\n if (index != null) {\n props.push(\n createObjectProperty(`key`, createSimpleExpression(String(index), true))\n );\n }\n return createObjectExpression(props);\n}\nfunction hasForwardedSlots(children) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n switch (child.type) {\n case 1:\n if (child.tagType === 2 || hasForwardedSlots(child.children)) {\n return true;\n }\n break;\n case 9:\n if (hasForwardedSlots(child.branches))\n return true;\n break;\n case 10:\n case 11:\n if (hasForwardedSlots(child.children))\n return true;\n break;\n }\n }\n return false;\n}\nfunction isNonWhitespaceContent(node) {\n if (node.type !== 2 && node.type !== 12)\n return true;\n return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content);\n}\n\nconst directiveImportMap = /* @__PURE__ */ new WeakMap();\nconst transformElement = (node, context) => {\n return function postTransformElement() {\n node = context.currentNode;\n if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) {\n return;\n }\n const { tag, props } = node;\n const isComponent = node.tagType === 1;\n let vnodeTag = isComponent ? resolveComponentType(node, context) : `\"${tag}\"`;\n const isDynamicComponent = isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT;\n let vnodeProps;\n let vnodeChildren;\n let vnodePatchFlag;\n let patchFlag = 0;\n let vnodeDynamicProps;\n let dynamicPropNames;\n let vnodeDirectives;\n let shouldUseBlock = (\n // dynamic component may resolve to plain elements\n isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent && // <svg> and <foreignObject> must be forced into blocks so that block\n // updates inside get proper isSVG flag at runtime. (#639, #643)\n // This is technically web-specific, but splitting the logic out of core\n // leads to too much unnecessary complexity.\n (tag === \"svg\" || tag === \"foreignObject\")\n );\n if (props.length > 0) {\n const propsBuildResult = buildProps(\n node,\n context,\n void 0,\n isComponent,\n isDynamicComponent\n );\n vnodeProps = propsBuildResult.props;\n patchFlag = propsBuildResult.patchFlag;\n dynamicPropNames = propsBuildResult.dynamicPropNames;\n const directives = propsBuildResult.directives;\n vnodeDirectives = directives && directives.length ? createArrayExpression(\n directives.map((dir) => buildDirectiveArgs(dir, context))\n ) : void 0;\n if (propsBuildResult.shouldUseBlock) {\n shouldUseBlock = true;\n }\n }\n if (node.children.length > 0) {\n if (vnodeTag === KEEP_ALIVE) {\n shouldUseBlock = true;\n patchFlag |= 1024;\n if (!!(process.env.NODE_ENV !== \"production\") && node.children.length > 1) {\n context.onError(\n createCompilerError(46, {\n start: node.children[0].loc.start,\n end: node.children[node.children.length - 1].loc.end,\n source: \"\"\n })\n );\n }\n }\n const shouldBuildAsSlots = isComponent && // Teleport is not a real component and has dedicated runtime handling\n vnodeTag !== TELEPORT && // explained above.\n vnodeTag !== KEEP_ALIVE;\n if (shouldBuildAsSlots) {\n const { slots, hasDynamicSlots } = buildSlots(node, context);\n vnodeChildren = slots;\n if (hasDynamicSlots) {\n patchFlag |= 1024;\n }\n } else if (node.children.length === 1 && vnodeTag !== TELEPORT) {\n const child = node.children[0];\n const type = child.type;\n const hasDynamicTextChild = type === 5 || type === 8;\n if (hasDynamicTextChild && getConstantType(child, context) === 0) {\n patchFlag |= 1;\n }\n if (hasDynamicTextChild || type === 2) {\n vnodeChildren = child;\n } else {\n vnodeChildren = node.children;\n }\n } else {\n vnodeChildren = node.children;\n }\n }\n if (patchFlag !== 0) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (patchFlag < 0) {\n vnodePatchFlag = patchFlag + ` /* ${PatchFlagNames[patchFlag]} */`;\n } else {\n const flagNames = Object.keys(PatchFlagNames).map(Number).filter((n) => n > 0 && patchFlag & n).map((n) => PatchFlagNames[n]).join(`, `);\n vnodePatchFlag = patchFlag + ` /* ${flagNames} */`;\n }\n } else {\n vnodePatchFlag = String(patchFlag);\n }\n if (dynamicPropNames && dynamicPropNames.length) {\n vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames);\n }\n }\n node.codegenNode = createVNodeCall(\n context,\n vnodeTag,\n vnodeProps,\n vnodeChildren,\n vnodePatchFlag,\n vnodeDynamicProps,\n vnodeDirectives,\n !!shouldUseBlock,\n false,\n isComponent,\n node.loc\n );\n };\n};\nfunction resolveComponentType(node, context, ssr = false) {\n let { tag } = node;\n const isExplicitDynamic = isComponentTag(tag);\n const isProp = findProp(node, \"is\");\n if (isProp) {\n if (isExplicitDynamic || isCompatEnabled(\n \"COMPILER_IS_ON_ELEMENT\",\n context\n )) {\n const exp = isProp.type === 6 ? isProp.value && createSimpleExpression(isProp.value.content, true) : isProp.exp;\n if (exp) {\n return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [\n exp\n ]);\n }\n } else if (isProp.type === 6 && isProp.value.content.startsWith(\"vue:\")) {\n tag = isProp.value.content.slice(4);\n }\n }\n const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag);\n if (builtIn) {\n if (!ssr)\n context.helper(builtIn);\n return builtIn;\n }\n context.helper(RESOLVE_COMPONENT);\n context.components.add(tag);\n return toValidAssetId(tag, `component`);\n}\nfunction buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) {\n const { tag, loc: elementLoc, children } = node;\n let properties = [];\n const mergeArgs = [];\n const runtimeDirectives = [];\n const hasChildren = children.length > 0;\n let shouldUseBlock = false;\n let patchFlag = 0;\n let hasRef = false;\n let hasClassBinding = false;\n let hasStyleBinding = false;\n let hasHydrationEventBinding = false;\n let hasDynamicKeys = false;\n let hasVnodeHook = false;\n const dynamicPropNames = [];\n const pushMergeArg = (arg) => {\n if (properties.length) {\n mergeArgs.push(\n createObjectExpression(dedupeProperties(properties), elementLoc)\n );\n properties = [];\n }\n if (arg)\n mergeArgs.push(arg);\n };\n const analyzePatchFlag = ({ key, value }) => {\n if (isStaticExp(key)) {\n const name = key.content;\n const isEventHandler = isOn(name);\n if (isEventHandler && (!isComponent || isDynamicComponent) && // omit the flag for click handlers because hydration gives click\n // dedicated fast path.\n name.toLowerCase() !== \"onclick\" && // omit v-model handlers\n name !== \"onUpdate:modelValue\" && // omit onVnodeXXX hooks\n !isReservedProp(name)) {\n hasHydrationEventBinding = true;\n }\n if (isEventHandler && isReservedProp(name)) {\n hasVnodeHook = true;\n }\n if (isEventHandler && value.type === 14) {\n value = value.arguments[0];\n }\n if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) {\n return;\n }\n if (name === \"ref\") {\n hasRef = true;\n } else if (name === \"class\") {\n hasClassBinding = true;\n } else if (name === \"style\") {\n hasStyleBinding = true;\n } else if (name !== \"key\" && !dynamicPropNames.includes(name)) {\n dynamicPropNames.push(name);\n }\n if (isComponent && (name === \"class\" || name === \"style\") && !dynamicPropNames.includes(name)) {\n dynamicPropNames.push(name);\n }\n } else {\n hasDynamicKeys = true;\n }\n };\n for (let i = 0; i < props.length; i++) {\n const prop = props[i];\n if (prop.type === 6) {\n const { loc, name, nameLoc, value } = prop;\n let isStatic = true;\n if (name === \"ref\") {\n hasRef = true;\n if (context.scopes.vFor > 0) {\n properties.push(\n createObjectProperty(\n createSimpleExpression(\"ref_for\", true),\n createSimpleExpression(\"true\")\n )\n );\n }\n }\n if (name === \"is\" && (isComponentTag(tag) || value && value.content.startsWith(\"vue:\") || isCompatEnabled(\n \"COMPILER_IS_ON_ELEMENT\",\n context\n ))) {\n continue;\n }\n properties.push(\n createObjectProperty(\n createSimpleExpression(name, true, nameLoc),\n createSimpleExpression(\n value ? value.content : \"\",\n isStatic,\n value ? value.loc : loc\n )\n )\n );\n } else {\n const { name, arg, exp, loc, modifiers } = prop;\n const isVBind = name === \"bind\";\n const isVOn = name === \"on\";\n if (name === \"slot\") {\n if (!isComponent) {\n context.onError(\n createCompilerError(40, loc)\n );\n }\n continue;\n }\n if (name === \"once\" || name === \"memo\") {\n continue;\n }\n if (name === \"is\" || isVBind && isStaticArgOf(arg, \"is\") && (isComponentTag(tag) || isCompatEnabled(\n \"COMPILER_IS_ON_ELEMENT\",\n context\n ))) {\n continue;\n }\n if (isVOn && ssr) {\n continue;\n }\n if (\n // #938: elements with dynamic keys should be forced into blocks\n isVBind && isStaticArgOf(arg, \"key\") || // inline before-update hooks need to force block so that it is invoked\n // before children\n isVOn && hasChildren && isStaticArgOf(arg, \"vue:before-update\")\n ) {\n shouldUseBlock = true;\n }\n if (isVBind && isStaticArgOf(arg, \"ref\") && context.scopes.vFor > 0) {\n properties.push(\n createObjectProperty(\n createSimpleExpression(\"ref_for\", true),\n createSimpleExpression(\"true\")\n )\n );\n }\n if (!arg && (isVBind || isVOn)) {\n hasDynamicKeys = true;\n if (exp) {\n if (isVBind) {\n pushMergeArg();\n {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const hasOverridableKeys = mergeArgs.some((arg2) => {\n if (arg2.type === 15) {\n return arg2.properties.some(({ key }) => {\n if (key.type !== 4 || !key.isStatic) {\n return true;\n }\n return key.content !== \"class\" && key.content !== \"style\" && !isOn(key.content);\n });\n } else {\n return true;\n }\n });\n if (hasOverridableKeys) {\n checkCompatEnabled(\n \"COMPILER_V_BIND_OBJECT_ORDER\",\n context,\n loc\n );\n }\n }\n if (isCompatEnabled(\n \"COMPILER_V_BIND_OBJECT_ORDER\",\n context\n )) {\n mergeArgs.unshift(exp);\n continue;\n }\n }\n mergeArgs.push(exp);\n } else {\n pushMergeArg({\n type: 14,\n loc,\n callee: context.helper(TO_HANDLERS),\n arguments: isComponent ? [exp] : [exp, `true`]\n });\n }\n } else {\n context.onError(\n createCompilerError(\n isVBind ? 34 : 35,\n loc\n )\n );\n }\n continue;\n }\n if (isVBind && modifiers.includes(\"prop\")) {\n patchFlag |= 32;\n }\n const directiveTransform = context.directiveTransforms[name];\n if (directiveTransform) {\n const { props: props2, needRuntime } = directiveTransform(prop, node, context);\n !ssr && props2.forEach(analyzePatchFlag);\n if (isVOn && arg && !isStaticExp(arg)) {\n pushMergeArg(createObjectExpression(props2, elementLoc));\n } else {\n properties.push(...props2);\n }\n if (needRuntime) {\n runtimeDirectives.push(prop);\n if (isSymbol(needRuntime)) {\n directiveImportMap.set(prop, needRuntime);\n }\n }\n } else if (!isBuiltInDirective(name)) {\n runtimeDirectives.push(prop);\n if (hasChildren) {\n shouldUseBlock = true;\n }\n }\n }\n }\n let propsExpression = void 0;\n if (mergeArgs.length) {\n pushMergeArg();\n if (mergeArgs.length > 1) {\n propsExpression = createCallExpression(\n context.helper(MERGE_PROPS),\n mergeArgs,\n elementLoc\n );\n } else {\n propsExpression = mergeArgs[0];\n }\n } else if (properties.length) {\n propsExpression = createObjectExpression(\n dedupeProperties(properties),\n elementLoc\n );\n }\n if (hasDynamicKeys) {\n patchFlag |= 16;\n } else {\n if (hasClassBinding && !isComponent) {\n patchFlag |= 2;\n }\n if (hasStyleBinding && !isComponent) {\n patchFlag |= 4;\n }\n if (dynamicPropNames.length) {\n patchFlag |= 8;\n }\n if (hasHydrationEventBinding) {\n patchFlag |= 32;\n }\n }\n if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) {\n patchFlag |= 512;\n }\n if (!context.inSSR && propsExpression) {\n switch (propsExpression.type) {\n case 15:\n let classKeyIndex = -1;\n let styleKeyIndex = -1;\n let hasDynamicKey = false;\n for (let i = 0; i < propsExpression.properties.length; i++) {\n const key = propsExpression.properties[i].key;\n if (isStaticExp(key)) {\n if (key.content === \"class\") {\n classKeyIndex = i;\n } else if (key.content === \"style\") {\n styleKeyIndex = i;\n }\n } else if (!key.isHandlerKey) {\n hasDynamicKey = true;\n }\n }\n const classProp = propsExpression.properties[classKeyIndex];\n const styleProp = propsExpression.properties[styleKeyIndex];\n if (!hasDynamicKey) {\n if (classProp && !isStaticExp(classProp.value)) {\n classProp.value = createCallExpression(\n context.helper(NORMALIZE_CLASS),\n [classProp.value]\n );\n }\n if (styleProp && // the static style is compiled into an object,\n // so use `hasStyleBinding` to ensure that it is a dynamic style binding\n (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist,\n // v-bind:style with static literal object\n styleProp.value.type === 17)) {\n styleProp.value = createCallExpression(\n context.helper(NORMALIZE_STYLE),\n [styleProp.value]\n );\n }\n } else {\n propsExpression = createCallExpression(\n context.helper(NORMALIZE_PROPS),\n [propsExpression]\n );\n }\n break;\n case 14:\n break;\n default:\n propsExpression = createCallExpression(\n context.helper(NORMALIZE_PROPS),\n [\n createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [\n propsExpression\n ])\n ]\n );\n break;\n }\n }\n return {\n props: propsExpression,\n directives: runtimeDirectives,\n patchFlag,\n dynamicPropNames,\n shouldUseBlock\n };\n}\nfunction dedupeProperties(properties) {\n const knownProps = /* @__PURE__ */ new Map();\n const deduped = [];\n for (let i = 0; i < properties.length; i++) {\n const prop = properties[i];\n if (prop.key.type === 8 || !prop.key.isStatic) {\n deduped.push(prop);\n continue;\n }\n const name = prop.key.content;\n const existing = knownProps.get(name);\n if (existing) {\n if (name === \"style\" || name === \"class\" || isOn(name)) {\n mergeAsArray(existing, prop);\n }\n } else {\n knownProps.set(name, prop);\n deduped.push(prop);\n }\n }\n return deduped;\n}\nfunction mergeAsArray(existing, incoming) {\n if (existing.value.type === 17) {\n existing.value.elements.push(incoming.value);\n } else {\n existing.value = createArrayExpression(\n [existing.value, incoming.value],\n existing.loc\n );\n }\n}\nfunction buildDirectiveArgs(dir, context) {\n const dirArgs = [];\n const runtime = directiveImportMap.get(dir);\n if (runtime) {\n dirArgs.push(context.helperString(runtime));\n } else {\n {\n context.helper(RESOLVE_DIRECTIVE);\n context.directives.add(dir.name);\n dirArgs.push(toValidAssetId(dir.name, `directive`));\n }\n }\n const { loc } = dir;\n if (dir.exp)\n dirArgs.push(dir.exp);\n if (dir.arg) {\n if (!dir.exp) {\n dirArgs.push(`void 0`);\n }\n dirArgs.push(dir.arg);\n }\n if (Object.keys(dir.modifiers).length) {\n if (!dir.arg) {\n if (!dir.exp) {\n dirArgs.push(`void 0`);\n }\n dirArgs.push(`void 0`);\n }\n const trueExpression = createSimpleExpression(`true`, false, loc);\n dirArgs.push(\n createObjectExpression(\n dir.modifiers.map(\n (modifier) => createObjectProperty(modifier, trueExpression)\n ),\n loc\n )\n );\n }\n return createArrayExpression(dirArgs, dir.loc);\n}\nfunction stringifyDynamicPropNames(props) {\n let propsNamesString = `[`;\n for (let i = 0, l = props.length; i < l; i++) {\n propsNamesString += JSON.stringify(props[i]);\n if (i < l - 1)\n propsNamesString += \", \";\n }\n return propsNamesString + `]`;\n}\nfunction isComponentTag(tag) {\n return tag === \"component\" || tag === \"Component\";\n}\n\nconst transformSlotOutlet = (node, context) => {\n if (isSlotOutlet(node)) {\n const { children, loc } = node;\n const { slotName, slotProps } = processSlotOutlet(node, context);\n const slotArgs = [\n context.prefixIdentifiers ? `_ctx.$slots` : `$slots`,\n slotName,\n \"{}\",\n \"undefined\",\n \"true\"\n ];\n let expectedLen = 2;\n if (slotProps) {\n slotArgs[2] = slotProps;\n expectedLen = 3;\n }\n if (children.length) {\n slotArgs[3] = createFunctionExpression([], children, false, false, loc);\n expectedLen = 4;\n }\n if (context.scopeId && !context.slotted) {\n expectedLen = 5;\n }\n slotArgs.splice(expectedLen);\n node.codegenNode = createCallExpression(\n context.helper(RENDER_SLOT),\n slotArgs,\n loc\n );\n }\n};\nfunction processSlotOutlet(node, context) {\n let slotName = `\"default\"`;\n let slotProps = void 0;\n const nonNameProps = [];\n for (let i = 0; i < node.props.length; i++) {\n const p = node.props[i];\n if (p.type === 6) {\n if (p.value) {\n if (p.name === \"name\") {\n slotName = JSON.stringify(p.value.content);\n } else {\n p.name = camelize(p.name);\n nonNameProps.push(p);\n }\n }\n } else {\n if (p.name === \"bind\" && isStaticArgOf(p.arg, \"name\")) {\n if (p.exp)\n slotName = p.exp;\n } else {\n if (p.name === \"bind\" && p.arg && isStaticExp(p.arg)) {\n p.arg.content = camelize(p.arg.content);\n }\n nonNameProps.push(p);\n }\n }\n }\n if (nonNameProps.length > 0) {\n const { props, directives } = buildProps(\n node,\n context,\n nonNameProps,\n false,\n false\n );\n slotProps = props;\n if (directives.length) {\n context.onError(\n createCompilerError(\n 36,\n directives[0].loc\n )\n );\n }\n }\n return {\n slotName,\n slotProps\n };\n}\n\nconst fnExpRE = /^\\s*([\\w$_]+|(async\\s*)?\\([^)]*?\\))\\s*(:[^=]+)?=>|^\\s*(async\\s+)?function(?:\\s+[\\w$]+)?\\s*\\(/;\nconst transformOn = (dir, node, context, augmentor) => {\n const { loc, modifiers, arg } = dir;\n if (!dir.exp && !modifiers.length) {\n context.onError(createCompilerError(35, loc));\n }\n let eventName;\n if (arg.type === 4) {\n if (arg.isStatic) {\n let rawName = arg.content;\n if (!!(process.env.NODE_ENV !== \"production\") && rawName.startsWith(\"vnode\")) {\n context.onError(createCompilerError(51, arg.loc));\n }\n if (rawName.startsWith(\"vue:\")) {\n rawName = `vnode-${rawName.slice(4)}`;\n }\n const eventString = node.tagType !== 0 || rawName.startsWith(\"vnode\") || !/[A-Z]/.test(rawName) ? (\n // for non-element and vnode lifecycle event listeners, auto convert\n // it to camelCase. See issue #2249\n toHandlerKey(camelize(rawName))\n ) : (\n // preserve case for plain element listeners that have uppercase\n // letters, as these may be custom elements' custom events\n `on:${rawName}`\n );\n eventName = createSimpleExpression(eventString, true, arg.loc);\n } else {\n eventName = createCompoundExpression([\n `${context.helperString(TO_HANDLER_KEY)}(`,\n arg,\n `)`\n ]);\n }\n } else {\n eventName = arg;\n eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`);\n eventName.children.push(`)`);\n }\n let exp = dir.exp;\n if (exp && !exp.content.trim()) {\n exp = void 0;\n }\n let shouldCache = context.cacheHandlers && !exp && !context.inVOnce;\n if (exp) {\n const isMemberExp = isMemberExpression(exp.content);\n const isInlineStatement = !(isMemberExp || fnExpRE.test(exp.content));\n const hasMultipleStatements = exp.content.includes(`;`);\n if (!!(process.env.NODE_ENV !== \"production\") && true) {\n validateBrowserExpression(\n exp,\n context,\n false,\n hasMultipleStatements\n );\n }\n if (isInlineStatement || shouldCache && isMemberExp) {\n exp = createCompoundExpression([\n `${isInlineStatement ? `$event` : `${``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`,\n exp,\n hasMultipleStatements ? `}` : `)`\n ]);\n }\n }\n let ret = {\n props: [\n createObjectProperty(\n eventName,\n exp || createSimpleExpression(`() => {}`, false, loc)\n )\n ]\n };\n if (augmentor) {\n ret = augmentor(ret);\n }\n if (shouldCache) {\n ret.props[0].value = context.cache(ret.props[0].value);\n }\n ret.props.forEach((p) => p.key.isHandlerKey = true);\n return ret;\n};\n\nconst transformBind = (dir, _node, context) => {\n const { modifiers, loc } = dir;\n const arg = dir.arg;\n let { exp } = dir;\n if (!exp && arg.type === 4) {\n const propName = camelize(arg.content);\n exp = dir.exp = createSimpleExpression(propName, false, arg.loc);\n }\n if (arg.type !== 4) {\n arg.children.unshift(`(`);\n arg.children.push(`) || \"\"`);\n } else if (!arg.isStatic) {\n arg.content = `${arg.content} || \"\"`;\n }\n if (modifiers.includes(\"camel\")) {\n if (arg.type === 4) {\n if (arg.isStatic) {\n arg.content = camelize(arg.content);\n } else {\n arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`;\n }\n } else {\n arg.children.unshift(`${context.helperString(CAMELIZE)}(`);\n arg.children.push(`)`);\n }\n }\n if (!context.inSSR) {\n if (modifiers.includes(\"prop\")) {\n injectPrefix(arg, \".\");\n }\n if (modifiers.includes(\"attr\")) {\n injectPrefix(arg, \"^\");\n }\n }\n if (!exp || exp.type === 4 && !exp.content.trim()) {\n context.onError(createCompilerError(34, loc));\n return {\n props: [createObjectProperty(arg, createSimpleExpression(\"\", true, loc))]\n };\n }\n return {\n props: [createObjectProperty(arg, exp)]\n };\n};\nconst injectPrefix = (arg, prefix) => {\n if (arg.type === 4) {\n if (arg.isStatic) {\n arg.content = prefix + arg.content;\n } else {\n arg.content = `\\`${prefix}\\${${arg.content}}\\``;\n }\n } else {\n arg.children.unshift(`'${prefix}' + (`);\n arg.children.push(`)`);\n }\n};\n\nconst transformText = (node, context) => {\n if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) {\n return () => {\n const children = node.children;\n let currentContainer = void 0;\n let hasText = false;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isText$1(child)) {\n hasText = true;\n for (let j = i + 1; j < children.length; j++) {\n const next = children[j];\n if (isText$1(next)) {\n if (!currentContainer) {\n currentContainer = children[i] = createCompoundExpression(\n [child],\n child.loc\n );\n }\n currentContainer.children.push(` + `, next);\n children.splice(j, 1);\n j--;\n } else {\n currentContainer = void 0;\n break;\n }\n }\n }\n }\n if (!hasText || // if this is a plain element with a single text child, leave it\n // as-is since the runtime has dedicated fast path for this by directly\n // setting textContent of the element.\n // for component root it's always normalized anyway.\n children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756\n // custom directives can potentially add DOM elements arbitrarily,\n // we need to avoid setting textContent of the element at runtime\n // to avoid accidentally overwriting the DOM elements added\n // by the user through custom directives.\n !node.props.find(\n (p) => p.type === 7 && !context.directiveTransforms[p.name]\n ) && // in compat mode, <template> tags with no special directives\n // will be rendered as a fragment so its children must be\n // converted into vnodes.\n !(node.tag === \"template\"))) {\n return;\n }\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isText$1(child) || child.type === 8) {\n const callArgs = [];\n if (child.type !== 2 || child.content !== \" \") {\n callArgs.push(child);\n }\n if (!context.ssr && getConstantType(child, context) === 0) {\n callArgs.push(\n 1 + (!!(process.env.NODE_ENV !== \"production\") ? ` /* ${PatchFlagNames[1]} */` : ``)\n );\n }\n children[i] = {\n type: 12,\n content: child,\n loc: child.loc,\n codegenNode: createCallExpression(\n context.helper(CREATE_TEXT),\n callArgs\n )\n };\n }\n }\n };\n }\n};\n\nconst seen$1 = /* @__PURE__ */ new WeakSet();\nconst transformOnce = (node, context) => {\n if (node.type === 1 && findDir(node, \"once\", true)) {\n if (seen$1.has(node) || context.inVOnce || context.inSSR) {\n return;\n }\n seen$1.add(node);\n context.inVOnce = true;\n context.helper(SET_BLOCK_TRACKING);\n return () => {\n context.inVOnce = false;\n const cur = context.currentNode;\n if (cur.codegenNode) {\n cur.codegenNode = context.cache(\n cur.codegenNode,\n true\n /* isVNode */\n );\n }\n };\n }\n};\n\nconst transformModel = (dir, node, context) => {\n const { exp, arg } = dir;\n if (!exp) {\n context.onError(\n createCompilerError(41, dir.loc)\n );\n return createTransformProps();\n }\n const rawExp = exp.loc.source;\n const expString = exp.type === 4 ? exp.content : rawExp;\n const bindingType = context.bindingMetadata[rawExp];\n if (bindingType === \"props\" || bindingType === \"props-aliased\") {\n context.onError(createCompilerError(44, exp.loc));\n return createTransformProps();\n }\n const maybeRef = false;\n if (!expString.trim() || !isMemberExpression(expString) && !maybeRef) {\n context.onError(\n createCompilerError(42, exp.loc)\n );\n return createTransformProps();\n }\n const propName = arg ? arg : createSimpleExpression(\"modelValue\", true);\n const eventName = arg ? isStaticExp(arg) ? `onUpdate:${camelize(arg.content)}` : createCompoundExpression(['\"onUpdate:\" + ', arg]) : `onUpdate:modelValue`;\n let assignmentExp;\n const eventArg = context.isTS ? `($event: any)` : `$event`;\n {\n assignmentExp = createCompoundExpression([\n `${eventArg} => ((`,\n exp,\n `) = $event)`\n ]);\n }\n const props = [\n // modelValue: foo\n createObjectProperty(propName, dir.exp),\n // \"onUpdate:modelValue\": $event => (foo = $event)\n createObjectProperty(eventName, assignmentExp)\n ];\n if (dir.modifiers.length && node.tagType === 1) {\n const modifiers = dir.modifiers.map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `);\n const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + \"Modifiers\"']) : `modelModifiers`;\n props.push(\n createObjectProperty(\n modifiersKey,\n createSimpleExpression(\n `{ ${modifiers} }`,\n false,\n dir.loc,\n 2\n )\n )\n );\n }\n return createTransformProps(props);\n};\nfunction createTransformProps(props = []) {\n return { props };\n}\n\nconst validDivisionCharRE = /[\\w).+\\-_$\\]]/;\nconst transformFilter = (node, context) => {\n if (!isCompatEnabled(\"COMPILER_FILTERS\", context)) {\n return;\n }\n if (node.type === 5) {\n rewriteFilter(node.content, context);\n }\n if (node.type === 1) {\n node.props.forEach((prop) => {\n if (prop.type === 7 && prop.name !== \"for\" && prop.exp) {\n rewriteFilter(prop.exp, context);\n }\n });\n }\n};\nfunction rewriteFilter(node, context) {\n if (node.type === 4) {\n parseFilter(node, context);\n } else {\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (typeof child !== \"object\")\n continue;\n if (child.type === 4) {\n parseFilter(child, context);\n } else if (child.type === 8) {\n rewriteFilter(node, context);\n } else if (child.type === 5) {\n rewriteFilter(child.content, context);\n }\n }\n }\n}\nfunction parseFilter(node, context) {\n const exp = node.content;\n let inSingle = false;\n let inDouble = false;\n let inTemplateString = false;\n let inRegex = false;\n let curly = 0;\n let square = 0;\n let paren = 0;\n let lastFilterIndex = 0;\n let c, prev, i, expression, filters = [];\n for (i = 0; i < exp.length; i++) {\n prev = c;\n c = exp.charCodeAt(i);\n if (inSingle) {\n if (c === 39 && prev !== 92)\n inSingle = false;\n } else if (inDouble) {\n if (c === 34 && prev !== 92)\n inDouble = false;\n } else if (inTemplateString) {\n if (c === 96 && prev !== 92)\n inTemplateString = false;\n } else if (inRegex) {\n if (c === 47 && prev !== 92)\n inRegex = false;\n } else if (c === 124 && // pipe\n exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) {\n if (expression === void 0) {\n lastFilterIndex = i + 1;\n expression = exp.slice(0, i).trim();\n } else {\n pushFilter();\n }\n } else {\n switch (c) {\n case 34:\n inDouble = true;\n break;\n case 39:\n inSingle = true;\n break;\n case 96:\n inTemplateString = true;\n break;\n case 40:\n paren++;\n break;\n case 41:\n paren--;\n break;\n case 91:\n square++;\n break;\n case 93:\n square--;\n break;\n case 123:\n curly++;\n break;\n case 125:\n curly--;\n break;\n }\n if (c === 47) {\n let j = i - 1;\n let p;\n for (; j >= 0; j--) {\n p = exp.charAt(j);\n if (p !== \" \")\n break;\n }\n if (!p || !validDivisionCharRE.test(p)) {\n inRegex = true;\n }\n }\n }\n }\n if (expression === void 0) {\n expression = exp.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n function pushFilter() {\n filters.push(exp.slice(lastFilterIndex, i).trim());\n lastFilterIndex = i + 1;\n }\n if (filters.length) {\n !!(process.env.NODE_ENV !== \"production\") && warnDeprecation(\n \"COMPILER_FILTERS\",\n context,\n node.loc\n );\n for (i = 0; i < filters.length; i++) {\n expression = wrapFilter(expression, filters[i], context);\n }\n node.content = expression;\n }\n}\nfunction wrapFilter(exp, filter, context) {\n context.helper(RESOLVE_FILTER);\n const i = filter.indexOf(\"(\");\n if (i < 0) {\n context.filters.add(filter);\n return `${toValidAssetId(filter, \"filter\")}(${exp})`;\n } else {\n const name = filter.slice(0, i);\n const args = filter.slice(i + 1);\n context.filters.add(name);\n return `${toValidAssetId(name, \"filter\")}(${exp}${args !== \")\" ? \",\" + args : args}`;\n }\n}\n\nconst seen = /* @__PURE__ */ new WeakSet();\nconst transformMemo = (node, context) => {\n if (node.type === 1) {\n const dir = findDir(node, \"memo\");\n if (!dir || seen.has(node)) {\n return;\n }\n seen.add(node);\n return () => {\n const codegenNode = node.codegenNode || context.currentNode.codegenNode;\n if (codegenNode && codegenNode.type === 13) {\n if (node.tagType !== 1) {\n convertToBlock(codegenNode, context);\n }\n node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [\n dir.exp,\n createFunctionExpression(void 0, codegenNode),\n `_cache`,\n String(context.cached++)\n ]);\n }\n };\n }\n};\n\nfunction getBaseTransformPreset(prefixIdentifiers) {\n return [\n [\n transformOnce,\n transformIf,\n transformMemo,\n transformFor,\n ...[transformFilter] ,\n ...!!(process.env.NODE_ENV !== \"production\") ? [transformExpression] : [],\n transformSlotOutlet,\n transformElement,\n trackSlotScopes,\n transformText\n ],\n {\n on: transformOn,\n bind: transformBind,\n model: transformModel\n }\n ];\n}\nfunction baseCompile(source, options = {}) {\n const onError = options.onError || defaultOnError;\n const isModuleMode = options.mode === \"module\";\n {\n if (options.prefixIdentifiers === true) {\n onError(createCompilerError(47));\n } else if (isModuleMode) {\n onError(createCompilerError(48));\n }\n }\n const prefixIdentifiers = false;\n if (options.cacheHandlers) {\n onError(createCompilerError(49));\n }\n if (options.scopeId && !isModuleMode) {\n onError(createCompilerError(50));\n }\n const resolvedOptions = extend({}, options, {\n prefixIdentifiers\n });\n const ast = isString(source) ? baseParse(source, resolvedOptions) : source;\n const [nodeTransforms, directiveTransforms] = getBaseTransformPreset();\n transform(\n ast,\n extend({}, resolvedOptions, {\n nodeTransforms: [\n ...nodeTransforms,\n ...options.nodeTransforms || []\n // user transforms\n ],\n directiveTransforms: extend(\n {},\n directiveTransforms,\n options.directiveTransforms || {}\n // user transforms\n )\n })\n );\n return generate(ast, resolvedOptions);\n}\n\nconst BindingTypes = {\n \"DATA\": \"data\",\n \"PROPS\": \"props\",\n \"PROPS_ALIASED\": \"props-aliased\",\n \"SETUP_LET\": \"setup-let\",\n \"SETUP_CONST\": \"setup-const\",\n \"SETUP_REACTIVE_CONST\": \"setup-reactive-const\",\n \"SETUP_MAYBE_REF\": \"setup-maybe-ref\",\n \"SETUP_REF\": \"setup-ref\",\n \"OPTIONS\": \"options\",\n \"LITERAL_CONST\": \"literal-const\"\n};\n\nconst noopDirectiveTransform = () => ({ props: [] });\n\nexport { BASE_TRANSITION, BindingTypes, CAMELIZE, CAPITALIZE, CREATE_BLOCK, CREATE_COMMENT, CREATE_ELEMENT_BLOCK, CREATE_ELEMENT_VNODE, CREATE_SLOTS, CREATE_STATIC, CREATE_TEXT, CREATE_VNODE, CompilerDeprecationTypes, ConstantTypes, ElementTypes, ErrorCodes, FRAGMENT, GUARD_REACTIVE_PROPS, IS_MEMO_SAME, IS_REF, KEEP_ALIVE, MERGE_PROPS, NORMALIZE_CLASS, NORMALIZE_PROPS, NORMALIZE_STYLE, Namespaces, NodeTypes, OPEN_BLOCK, POP_SCOPE_ID, PUSH_SCOPE_ID, RENDER_LIST, RENDER_SLOT, RESOLVE_COMPONENT, RESOLVE_DIRECTIVE, RESOLVE_DYNAMIC_COMPONENT, RESOLVE_FILTER, SET_BLOCK_TRACKING, SUSPENSE, TELEPORT, TO_DISPLAY_STRING, TO_HANDLERS, TO_HANDLER_KEY, TS_NODE_TYPES, UNREF, WITH_CTX, WITH_DIRECTIVES, WITH_MEMO, advancePositionWithClone, advancePositionWithMutation, assert, baseCompile, baseParse, buildDirectiveArgs, buildProps, buildSlots, checkCompatEnabled, convertToBlock, createArrayExpression, createAssignmentExpression, createBlockStatement, createCacheExpression, createCallExpression, createCompilerError, createCompoundExpression, createConditionalExpression, createForLoopParams, createFunctionExpression, createIfStatement, createInterpolation, createObjectExpression, createObjectProperty, createReturnStatement, createRoot, createSequenceExpression, createSimpleExpression, createStructuralDirectiveTransform, createTemplateLiteral, createTransformContext, createVNodeCall, errorMessages, extractIdentifiers, findDir, findProp, forAliasRE, generate, getBaseTransformPreset, getConstantType, getMemoedVNodeCall, getVNodeBlockHelper, getVNodeHelper, hasDynamicKeyVBind, hasScopeRef, helperNameMap, injectProp, isCoreComponent, isFunctionType, isInDestructureAssignment, isMemberExpression, isMemberExpressionBrowser, isMemberExpressionNode, isReferencedIdentifier, isSimpleIdentifier, isSlotOutlet, isStaticArgOf, isStaticExp, isStaticProperty, isStaticPropertyKey, isTemplateNode, isText$1 as isText, isVSlot, locStub, noopDirectiveTransform, processExpression, processFor, processIf, processSlotOutlet, registerRuntimeHelpers, resolveComponentType, stringifyExpression, toValidAssetId, trackSlotScopes, trackVForSlotScopes, transform, transformBind, transformElement, transformExpression, transformModel, transformOn, traverseNode, unwrapTSNode, walkBlockDeclarations, walkFunctionParams, walkIdentifiers, warnDeprecation };\n","import { registerRuntimeHelpers, createSimpleExpression, createCompilerError, createObjectProperty, getConstantType, createCallExpression, TO_DISPLAY_STRING, transformModel as transformModel$1, findProp, hasDynamicKeyVBind, findDir, isStaticArgOf, transformOn as transformOn$1, isStaticExp, createCompoundExpression, checkCompatEnabled, noopDirectiveTransform, baseCompile, baseParse } from '@vue/compiler-core';\nexport * from '@vue/compiler-core';\nimport { isVoidTag, isHTMLTag, isSVGTag, isMathMLTag, parseStringStyle, capitalize, makeMap, extend } from '@vue/shared';\n\nconst V_MODEL_RADIO = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `vModelRadio` : ``);\nconst V_MODEL_CHECKBOX = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `vModelCheckbox` : ``);\nconst V_MODEL_TEXT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `vModelText` : ``);\nconst V_MODEL_SELECT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `vModelSelect` : ``);\nconst V_MODEL_DYNAMIC = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `vModelDynamic` : ``);\nconst V_ON_WITH_MODIFIERS = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `vOnModifiersGuard` : ``);\nconst V_ON_WITH_KEYS = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `vOnKeysGuard` : ``);\nconst V_SHOW = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `vShow` : ``);\nconst TRANSITION = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `Transition` : ``);\nconst TRANSITION_GROUP = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `TransitionGroup` : ``);\nregisterRuntimeHelpers({\n [V_MODEL_RADIO]: `vModelRadio`,\n [V_MODEL_CHECKBOX]: `vModelCheckbox`,\n [V_MODEL_TEXT]: `vModelText`,\n [V_MODEL_SELECT]: `vModelSelect`,\n [V_MODEL_DYNAMIC]: `vModelDynamic`,\n [V_ON_WITH_MODIFIERS]: `withModifiers`,\n [V_ON_WITH_KEYS]: `withKeys`,\n [V_SHOW]: `vShow`,\n [TRANSITION]: `Transition`,\n [TRANSITION_GROUP]: `TransitionGroup`\n});\n\nlet decoder;\nfunction decodeHtmlBrowser(raw, asAttr = false) {\n if (!decoder) {\n decoder = document.createElement(\"div\");\n }\n if (asAttr) {\n decoder.innerHTML = `<div foo=\"${raw.replace(/\"/g, \""\")}\">`;\n return decoder.children[0].getAttribute(\"foo\");\n } else {\n decoder.innerHTML = raw;\n return decoder.textContent;\n }\n}\n\nconst parserOptions = {\n parseMode: \"html\",\n isVoidTag,\n isNativeTag: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag),\n isPreTag: (tag) => tag === \"pre\",\n decodeEntities: decodeHtmlBrowser ,\n isBuiltInComponent: (tag) => {\n if (tag === \"Transition\" || tag === \"transition\") {\n return TRANSITION;\n } else if (tag === \"TransitionGroup\" || tag === \"transition-group\") {\n return TRANSITION_GROUP;\n }\n },\n // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher\n getNamespace(tag, parent, rootNamespace) {\n let ns = parent ? parent.ns : rootNamespace;\n if (parent && ns === 2) {\n if (parent.tag === \"annotation-xml\") {\n if (tag === \"svg\") {\n return 1;\n }\n if (parent.props.some(\n (a) => a.type === 6 && a.name === \"encoding\" && a.value != null && (a.value.content === \"text/html\" || a.value.content === \"application/xhtml+xml\")\n )) {\n ns = 0;\n }\n } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== \"mglyph\" && tag !== \"malignmark\") {\n ns = 0;\n }\n } else if (parent && ns === 1) {\n if (parent.tag === \"foreignObject\" || parent.tag === \"desc\" || parent.tag === \"title\") {\n ns = 0;\n }\n }\n if (ns === 0) {\n if (tag === \"svg\") {\n return 1;\n }\n if (tag === \"math\") {\n return 2;\n }\n }\n return ns;\n }\n};\n\nconst transformStyle = (node) => {\n if (node.type === 1) {\n node.props.forEach((p, i) => {\n if (p.type === 6 && p.name === \"style\" && p.value) {\n node.props[i] = {\n type: 7,\n name: `bind`,\n arg: createSimpleExpression(`style`, true, p.loc),\n exp: parseInlineCSS(p.value.content, p.loc),\n modifiers: [],\n loc: p.loc\n };\n }\n });\n }\n};\nconst parseInlineCSS = (cssText, loc) => {\n const normalized = parseStringStyle(cssText);\n return createSimpleExpression(\n JSON.stringify(normalized),\n false,\n loc,\n 3\n );\n};\n\nfunction createDOMCompilerError(code, loc) {\n return createCompilerError(\n code,\n loc,\n !!(process.env.NODE_ENV !== \"production\") || false ? DOMErrorMessages : void 0\n );\n}\nconst DOMErrorCodes = {\n \"X_V_HTML_NO_EXPRESSION\": 53,\n \"53\": \"X_V_HTML_NO_EXPRESSION\",\n \"X_V_HTML_WITH_CHILDREN\": 54,\n \"54\": \"X_V_HTML_WITH_CHILDREN\",\n \"X_V_TEXT_NO_EXPRESSION\": 55,\n \"55\": \"X_V_TEXT_NO_EXPRESSION\",\n \"X_V_TEXT_WITH_CHILDREN\": 56,\n \"56\": \"X_V_TEXT_WITH_CHILDREN\",\n \"X_V_MODEL_ON_INVALID_ELEMENT\": 57,\n \"57\": \"X_V_MODEL_ON_INVALID_ELEMENT\",\n \"X_V_MODEL_ARG_ON_ELEMENT\": 58,\n \"58\": \"X_V_MODEL_ARG_ON_ELEMENT\",\n \"X_V_MODEL_ON_FILE_INPUT_ELEMENT\": 59,\n \"59\": \"X_V_MODEL_ON_FILE_INPUT_ELEMENT\",\n \"X_V_MODEL_UNNECESSARY_VALUE\": 60,\n \"60\": \"X_V_MODEL_UNNECESSARY_VALUE\",\n \"X_V_SHOW_NO_EXPRESSION\": 61,\n \"61\": \"X_V_SHOW_NO_EXPRESSION\",\n \"X_TRANSITION_INVALID_CHILDREN\": 62,\n \"62\": \"X_TRANSITION_INVALID_CHILDREN\",\n \"X_IGNORED_SIDE_EFFECT_TAG\": 63,\n \"63\": \"X_IGNORED_SIDE_EFFECT_TAG\",\n \"__EXTEND_POINT__\": 64,\n \"64\": \"__EXTEND_POINT__\"\n};\nconst DOMErrorMessages = {\n [53]: `v-html is missing expression.`,\n [54]: `v-html will override element children.`,\n [55]: `v-text is missing expression.`,\n [56]: `v-text will override element children.`,\n [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`,\n [58]: `v-model argument is not supported on plain elements.`,\n [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,\n [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,\n [61]: `v-show is missing expression.`,\n [62]: `<Transition> expects exactly one child element or component.`,\n [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`\n};\n\nconst transformVHtml = (dir, node, context) => {\n const { exp, loc } = dir;\n if (!exp) {\n context.onError(\n createDOMCompilerError(53, loc)\n );\n }\n if (node.children.length) {\n context.onError(\n createDOMCompilerError(54, loc)\n );\n node.children.length = 0;\n }\n return {\n props: [\n createObjectProperty(\n createSimpleExpression(`innerHTML`, true, loc),\n exp || createSimpleExpression(\"\", true)\n )\n ]\n };\n};\n\nconst transformVText = (dir, node, context) => {\n const { exp, loc } = dir;\n if (!exp) {\n context.onError(\n createDOMCompilerError(55, loc)\n );\n }\n if (node.children.length) {\n context.onError(\n createDOMCompilerError(56, loc)\n );\n node.children.length = 0;\n }\n return {\n props: [\n createObjectProperty(\n createSimpleExpression(`textContent`, true),\n exp ? getConstantType(exp, context) > 0 ? exp : createCallExpression(\n context.helperString(TO_DISPLAY_STRING),\n [exp],\n loc\n ) : createSimpleExpression(\"\", true)\n )\n ]\n };\n};\n\nconst transformModel = (dir, node, context) => {\n const baseResult = transformModel$1(dir, node, context);\n if (!baseResult.props.length || node.tagType === 1) {\n return baseResult;\n }\n if (dir.arg) {\n context.onError(\n createDOMCompilerError(\n 58,\n dir.arg.loc\n )\n );\n }\n function checkDuplicatedValue() {\n const value = findDir(node, \"bind\");\n if (value && isStaticArgOf(value.arg, \"value\")) {\n context.onError(\n createDOMCompilerError(\n 60,\n value.loc\n )\n );\n }\n }\n const { tag } = node;\n const isCustomElement = context.isCustomElement(tag);\n if (tag === \"input\" || tag === \"textarea\" || tag === \"select\" || isCustomElement) {\n let directiveToUse = V_MODEL_TEXT;\n let isInvalidType = false;\n if (tag === \"input\" || isCustomElement) {\n const type = findProp(node, `type`);\n if (type) {\n if (type.type === 7) {\n directiveToUse = V_MODEL_DYNAMIC;\n } else if (type.value) {\n switch (type.value.content) {\n case \"radio\":\n directiveToUse = V_MODEL_RADIO;\n break;\n case \"checkbox\":\n directiveToUse = V_MODEL_CHECKBOX;\n break;\n case \"file\":\n isInvalidType = true;\n context.onError(\n createDOMCompilerError(\n 59,\n dir.loc\n )\n );\n break;\n default:\n !!(process.env.NODE_ENV !== \"production\") && checkDuplicatedValue();\n break;\n }\n }\n } else if (hasDynamicKeyVBind(node)) {\n directiveToUse = V_MODEL_DYNAMIC;\n } else {\n !!(process.env.NODE_ENV !== \"production\") && checkDuplicatedValue();\n }\n } else if (tag === \"select\") {\n directiveToUse = V_MODEL_SELECT;\n } else {\n !!(process.env.NODE_ENV !== \"production\") && checkDuplicatedValue();\n }\n if (!isInvalidType) {\n baseResult.needRuntime = context.helper(directiveToUse);\n }\n } else {\n context.onError(\n createDOMCompilerError(\n 57,\n dir.loc\n )\n );\n }\n baseResult.props = baseResult.props.filter(\n (p) => !(p.key.type === 4 && p.key.content === \"modelValue\")\n );\n return baseResult;\n};\n\nconst isEventOptionModifier = /* @__PURE__ */ makeMap(`passive,once,capture`);\nconst isNonKeyModifier = /* @__PURE__ */ makeMap(\n // event propagation management\n `stop,prevent,self,ctrl,shift,alt,meta,exact,middle`\n);\nconst maybeKeyModifier = /* @__PURE__ */ makeMap(\"left,right\");\nconst isKeyboardEvent = /* @__PURE__ */ makeMap(\n `onkeyup,onkeydown,onkeypress`,\n true\n);\nconst resolveModifiers = (key, modifiers, context, loc) => {\n const keyModifiers = [];\n const nonKeyModifiers = [];\n const eventOptionModifiers = [];\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n if (modifier === \"native\" && checkCompatEnabled(\n \"COMPILER_V_ON_NATIVE\",\n context,\n loc\n )) {\n eventOptionModifiers.push(modifier);\n } else if (isEventOptionModifier(modifier)) {\n eventOptionModifiers.push(modifier);\n } else {\n if (maybeKeyModifier(modifier)) {\n if (isStaticExp(key)) {\n if (isKeyboardEvent(key.content)) {\n keyModifiers.push(modifier);\n } else {\n nonKeyModifiers.push(modifier);\n }\n } else {\n keyModifiers.push(modifier);\n nonKeyModifiers.push(modifier);\n }\n } else {\n if (isNonKeyModifier(modifier)) {\n nonKeyModifiers.push(modifier);\n } else {\n keyModifiers.push(modifier);\n }\n }\n }\n }\n return {\n keyModifiers,\n nonKeyModifiers,\n eventOptionModifiers\n };\n};\nconst transformClick = (key, event) => {\n const isStaticClick = isStaticExp(key) && key.content.toLowerCase() === \"onclick\";\n return isStaticClick ? createSimpleExpression(event, true) : key.type !== 4 ? createCompoundExpression([\n `(`,\n key,\n `) === \"onClick\" ? \"${event}\" : (`,\n key,\n `)`\n ]) : key;\n};\nconst transformOn = (dir, node, context) => {\n return transformOn$1(dir, node, context, (baseResult) => {\n const { modifiers } = dir;\n if (!modifiers.length)\n return baseResult;\n let { key, value: handlerExp } = baseResult.props[0];\n const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc);\n if (nonKeyModifiers.includes(\"right\")) {\n key = transformClick(key, `onContextmenu`);\n }\n if (nonKeyModifiers.includes(\"middle\")) {\n key = transformClick(key, `onMouseup`);\n }\n if (nonKeyModifiers.length) {\n handlerExp = createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [\n handlerExp,\n JSON.stringify(nonKeyModifiers)\n ]);\n }\n if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard\n (!isStaticExp(key) || isKeyboardEvent(key.content))) {\n handlerExp = createCallExpression(context.helper(V_ON_WITH_KEYS), [\n handlerExp,\n JSON.stringify(keyModifiers)\n ]);\n }\n if (eventOptionModifiers.length) {\n const modifierPostfix = eventOptionModifiers.map(capitalize).join(\"\");\n key = isStaticExp(key) ? createSimpleExpression(`${key.content}${modifierPostfix}`, true) : createCompoundExpression([`(`, key, `) + \"${modifierPostfix}\"`]);\n }\n return {\n props: [createObjectProperty(key, handlerExp)]\n };\n });\n};\n\nconst transformShow = (dir, node, context) => {\n const { exp, loc } = dir;\n if (!exp) {\n context.onError(\n createDOMCompilerError(61, loc)\n );\n }\n return {\n props: [],\n needRuntime: context.helper(V_SHOW)\n };\n};\n\nconst transformTransition = (node, context) => {\n if (node.type === 1 && node.tagType === 1) {\n const component = context.isBuiltInComponent(node.tag);\n if (component === TRANSITION) {\n return () => {\n if (!node.children.length) {\n return;\n }\n if (hasMultipleChildren(node)) {\n context.onError(\n createDOMCompilerError(\n 62,\n {\n start: node.children[0].loc.start,\n end: node.children[node.children.length - 1].loc.end,\n source: \"\"\n }\n )\n );\n }\n const child = node.children[0];\n if (child.type === 1) {\n for (const p of child.props) {\n if (p.type === 7 && p.name === \"show\") {\n node.props.push({\n type: 6,\n name: \"persisted\",\n nameLoc: node.loc,\n value: void 0,\n loc: node.loc\n });\n }\n }\n }\n };\n }\n }\n};\nfunction hasMultipleChildren(node) {\n const children = node.children = node.children.filter(\n (c) => c.type !== 3 && !(c.type === 2 && !c.content.trim())\n );\n const child = children[0];\n return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(hasMultipleChildren);\n}\n\nconst ignoreSideEffectTags = (node, context) => {\n if (node.type === 1 && node.tagType === 0 && (node.tag === \"script\" || node.tag === \"style\")) {\n !!(process.env.NODE_ENV !== \"production\") && context.onError(\n createDOMCompilerError(\n 63,\n node.loc\n )\n );\n context.removeNode();\n }\n};\n\nconst DOMNodeTransforms = [\n transformStyle,\n ...!!(process.env.NODE_ENV !== \"production\") ? [transformTransition] : []\n];\nconst DOMDirectiveTransforms = {\n cloak: noopDirectiveTransform,\n html: transformVHtml,\n text: transformVText,\n model: transformModel,\n // override compiler-core\n on: transformOn,\n // override compiler-core\n show: transformShow\n};\nfunction compile(src, options = {}) {\n return baseCompile(\n src,\n extend({}, parserOptions, options, {\n nodeTransforms: [\n // ignore <script> and <tag>\n // this is not put inside DOMNodeTransforms because that list is used\n // by compiler-ssr to generate vnode fallback branches\n ignoreSideEffectTags,\n ...DOMNodeTransforms,\n ...options.nodeTransforms || []\n ],\n directiveTransforms: extend(\n {},\n DOMDirectiveTransforms,\n options.directiveTransforms || {}\n ),\n transformHoist: null \n })\n );\n}\nfunction parse(template, options = {}) {\n return baseParse(template, extend({}, parserOptions, options));\n}\n\nexport { DOMDirectiveTransforms, DOMErrorCodes, DOMErrorMessages, DOMNodeTransforms, TRANSITION, TRANSITION_GROUP, V_MODEL_CHECKBOX, V_MODEL_DYNAMIC, V_MODEL_RADIO, V_MODEL_SELECT, V_MODEL_TEXT, V_ON_WITH_KEYS, V_ON_WITH_MODIFIERS, V_SHOW, compile, createDOMCompilerError, parse, parserOptions, transformStyle };\n","import * as runtimeDom from '@vue/runtime-dom';\nimport { initCustomFormatter, registerRuntimeCompiler, warn } from '@vue/runtime-dom';\nexport * from '@vue/runtime-dom';\nimport { compile } from '@vue/compiler-dom';\nimport { isString, NOOP, extend, generateCodeFrame, EMPTY_OBJ } from '@vue/shared';\n\nfunction initDev() {\n {\n initCustomFormatter();\n }\n}\n\nif (!!(process.env.NODE_ENV !== \"production\")) {\n initDev();\n}\nconst compileCache = /* @__PURE__ */ new WeakMap();\nfunction getCache(options) {\n let c = compileCache.get(options != null ? options : EMPTY_OBJ);\n if (!c) {\n c = /* @__PURE__ */ Object.create(null);\n compileCache.set(options != null ? options : EMPTY_OBJ, c);\n }\n return c;\n}\nfunction compileToFunction(template, options) {\n if (!isString(template)) {\n if (template.nodeType) {\n template = template.innerHTML;\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warn(`invalid template option: `, template);\n return NOOP;\n }\n }\n const key = template;\n const cache = getCache(options);\n const cached = cache[key];\n if (cached) {\n return cached;\n }\n if (template[0] === \"#\") {\n const el = document.querySelector(template);\n if (!!(process.env.NODE_ENV !== \"production\") && !el) {\n warn(`Template element not found or is empty: ${template}`);\n }\n template = el ? el.innerHTML : ``;\n }\n const opts = extend(\n {\n hoistStatic: true,\n onError: !!(process.env.NODE_ENV !== \"production\") ? onError : void 0,\n onWarn: !!(process.env.NODE_ENV !== \"production\") ? (e) => onError(e, true) : NOOP\n },\n options\n );\n if (!opts.isCustomElement && typeof customElements !== \"undefined\") {\n opts.isCustomElement = (tag) => !!customElements.get(tag);\n }\n const { code } = compile(template, opts);\n function onError(err, asWarning = false) {\n const message = asWarning ? err.message : `Template compilation error: ${err.message}`;\n const codeFrame = err.loc && generateCodeFrame(\n template,\n err.loc.start.offset,\n err.loc.end.offset\n );\n warn(codeFrame ? `${message}\n${codeFrame}` : message);\n }\n const render = new Function(\"Vue\", code)(runtimeDom);\n render._rc = true;\n return cache[key] = render;\n}\nregisterRuntimeCompiler(compileToFunction);\n\nexport { compileToFunction as compile };\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst keyResolvers = {\n '': v => v,\n x: o => o.x,\n y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value, last) =>\n _lookup(table, value, last\n ? index => table[index][key] <= value\n : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n if ('native' in evt) {\n return evt;\n }\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta) => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndex.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass ScatterController extends DatasetController {\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n const {dataset: line, _dataset} = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const {showLine} = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n init(chartOptions) {}\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {plugins, localIds};\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.9.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\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); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\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);\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); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","fastDeepEqual","equal","a","b","constructor","length","i","keys","Array","isArray","RegExp","source","flags","valueOf","Object","prototype","toString","hasOwnProperty","call","key","DEFAULT_ID","LoaderStatus","Loader","apiKey","authReferrerPolicy","channel","client","id","language","libraries","mapIds","nonce","region","retries","url","version","this","callbacks","loading","errors","instance","options","Error","JSON","stringify","status","FAILURE","SUCCESS","LOADING","INITIALIZED","failed","createUrl","join","deleteScript","script","document","getElementById","remove","load","loadPromise","loadCallback","err","error","window","google","importLibrary","name","execute","maps","fn","push","setScript","_a","_b","callback","params","v","forEach","g","h","k","p","c","l","q","m","d","r","Set","URLSearchParams","u","f","n","createElement","set","replace","t","toLowerCase","src","onerror","querySelector","head","append","console","warn","add","libraryPromises","map","library","all","event","ErrorEvent","loadErrorCallback","reset","onerrorEvent","resetIfRetryingFailed","delay","Math","pow","setTimeout","cb","global","factory","module","exports","Data","EventHandler","Config","index_js","VERSION","BaseComponent","element","config","super","getElement","_element","_config","_getConfig","DATA_KEY","dispose","off","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","executeAfterTransition","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","getInstance","get","getOrCreateInstance","NAME","eventName","elementMap","Map","data","has","instanceMap","size","from","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","makeEventUid","uid","getElementEvents","bootstrapHandler","handler","hydrateObj","delegateTarget","oneOff","type","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","domElement","findHandler","events","callable","delegationSelector","values","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","contains","handlers","previousFunction","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","trigger","args","$","getjQuery","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","Event","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","preventDefault","dispatchEvent","obj","meta","_unused","defineProperty","configurable","normalizeData","Number","parse","decodeURIComponent","normalizeDataKey","chr","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","getSelector","hrefAttribute","split","parseSelector","trim","SelectorEngine","documentElement","concat","Element","findOne","children","child","matches","parents","ancestor","closest","prev","previous","previousElementSibling","nextElementSibling","focusableChildren","focusables","el","isDisabled","isVisible","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","Backdrop","componentFunctions_js","FocusTrap","ScrollBarHelper","DATA_API_KEY","ESCAPE_KEY","EVENT_HIDE","EVENT_HIDE_PREVENTED","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_CLICK_DATA_API","CLASS_NAME_OPEN","CLASS_NAME_FADE","CLASS_NAME_SHOW","CLASS_NAME_STATIC","OPEN_SELECTOR","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_TOGGLE","Default","backdrop","focus","keyboard","DefaultType","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_isShown","_isTransitioning","_scrollBar","_addEventListeners","toggle","hide","show","showEvent","body","classList","_adjustDialog","_showElement","hideEvent","deactivate","_hideModal","_isAnimated","handleUpdate","trapElement","style","display","scrollTop","modalBody","reflow","transitionComplete","activate","_triggerBackdropTransition","event2","_resetAdjustments","isModalOverflowing","scrollHeight","clientHeight","initialOverflowY","overflowY","scrollbarWidth","getWidth","isBodyOverflowing","property","isRTL","paddingLeft","paddingRight","jQueryInterface","each","TypeError","tagName","alreadyOpen","enableDismissTrigger","defineJQueryPlugin","EVENT_MOUSEDOWN","className","clickCallback","rootElement","_isAppended","_append","_getElement","_emulateAnimation","component","method","clickEvent","Symbol","toStringTag","jsonConfig","isElement","configTypes","expectedTypes","valueType","toType","test","toUpperCase","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_KEY","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","autofocus","_isActive","_lastTabNavDirection","_handleFocusin","_handleKeydown","elements","shiftKey","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","CSS","escape","match","object","undefined","getUID","prefix","floor","random","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","triggerTransitionEnd","jquery","nodeType","getClientRects","elementIsVisible","getPropertyValue","closedDetails","summary","Node","ELEMENT_NODE","disabled","hasAttribute","findShadowRoot","attachShadow","getRootNode","root","ShadowRoot","noop","offsetHeight","jQuery","DOMContentLoadedCallbacks","onDOMContentLoaded","readyState","dir","plugin","JQUERY_NO_CONFLICT","Constructor","noConflict","possibleCallback","defaultValue","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","documentWidth","clientWidth","abs","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","_resetElementAttributes","isOverflowing","_saveInitialAttribute","overflow","styleProperty","manipulationCallBack","setProperty","_applyManipulationCallback","actualValue","removeProperty","callBack","sel","arrayMap","array","iteratee","arrayReduce","accumulator","initAccum","asciiToArray","string","reAsciiWord","asciiWords","getRawTag","objectToString","nullTag","undefinedTag","symToStringTag","baseGetTag","basePropertyOf","baseSlice","start","end","isSymbol","INFINITY","symbolProto","symbolToString","baseToString","castSlice","hasUnicode","stringToArray","createCaseFirst","methodName","strSymbols","trailing","deburr","words","rsApos","reApos","createCompounder","deburredLetters","deburrLetter","freeGlobal","objectProto","nativeObjectToString","isOwn","tag","unmasked","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","reHasUnicodeWord","hasUnicodeWord","freeSelf","self","Function","unicodeToArray","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsBreakRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsOrdLower","rsOrdUpper","rsEmoji","reUnicodeWord","unicodeWords","capitalize","camelCase","word","upperFirst","reLatin","reComboMark","isObjectLike","symbolTag","pattern","guard","isObject","extend","ssrDocument","blur","nodeName","createEvent","initEvent","childNodes","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","Image","Date","screen","clearTimeout","matchMedia","requestAnimationFrame","cancelAnimationFrame","win","_inheritsLoose","subClass","superClass","create","__proto__","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","_setPrototypeOf","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","_construct","Parent","Class","bind","arguments","_isNativeFunction","_wrapNativeSuper","_cache","Wrapper","enumerable","writable","_assertThisInitialized","ReferenceError","makeReactive","proto","Dom7","_Array","items","_this","arrayFlat","arr","res","arrayFilter","arrayUnique","uniqueArray","qsa","context","html","toCreate","tempParent","innerHTML","addClass","_len","classes","_key","classNames","_el$classList","removeClass","_len2","_key2","_el$classList2","toggleClass","_len3","_key3","hasClass","_len4","_key4","attr","attrs","attrName","removeAttr","transform","transition","duration","_len5","_key5","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","_parents","handleEvent","j","_event","dom7LiveListeners","proxyListener","dom7Listeners","_len6","_key6","dom7proxy","splice","_len9","_key9","detail","dataIndex","transitionEnd","dom","fireCallBack","includeMargins","_styles","styles","offsetWidth","_styles2","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollY","scrollLeft","scrollX","top","left","css","props","_prop","text","textContent","compareWith","webkitMatchesSelector","msMatchesSelector","previousSibling","eq","returnIndex","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","nextAll","nextEls","_next","prevAll","prevEls","_prev","_parent","foundElements","found","removeChild","noTrigger","shortcut","eventHandler","Methods","outerWidth","outerHeight","parent","deleteProps","nextTick","now","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","isNode","node","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","__swiper__","bindModuleMethods","subKey","classesToSelector","createElementIfNotDefined","$container","createElements","checkProps","auto","support","device","browser","calcSupport","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","observer","passiveListener","supportsPassive","opts","gestures","getSupport","calcDevice","_temp","_ref","platform","ua","ios","android","screenWidth","screenHeight","height","ipad","ipod","iphone","windows","macos","iPadScreens","os","getDevice","overrides","calcBrowser","isSafari","isEdge","isWebView","getBrowser","supportsResizeObserver","ResizeObserver","swiper","resize","createObserver","destroyed","initialized","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","resizeHandler","observe","removeObserver","unobserve","emit","orientationChangeHandler","init","resizeObserver","destroy","_extends","assign","Observer","attach","ObserverFunc","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","childList","characterData","observers","observeParents","containerParents","$el","observeSlideChildren","$wrapperEl","disconnect","useParams","instanceParams","modules","moduleName","useModules","modulesParams","moduleParams","moduleEventName","priority","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventsArray","updateSize","isHorizontal","isVertical","parseInt","isNaN","updateSlides","getDirectionLabel","getDirectionPropertyValue","label","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","slidesPerColumn","ceil","slidesPerView","slidesPerColumnFill","newSlidesGrid","_$wrapperEl$css","_$wrapperEl$css2","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","boxSizing","_slide$","swiperSlideSize","centeredSlides","slidesPerGroupSkip","effect","setWrapperSize","_i","slidesGridItem","_i2","_slidesGridItem","_slides$filter$css","_","slideIndex","cssMode","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","_allSlidesSize","allSlidesOffset","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","setTransition","getSlideByIndex","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","wrapperEl","x","y","z","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","_wrapperEl$scrollTo","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","transitionStart","direction","slideTo","initial","indexAsNumber","isValidNumber","isFinite","initialSlide","normalizedTranslate","normalizedGird","normalizedGridNext","allowSlideNext","allowSlidePrev","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopPreventsSlide","loopFix","_clientLeft","slidePrev","normalize","val","prevIndex","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","threshold","currentSnap","nextSnap","_currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","snapTranslate","diff","slideChanged","_slideChanged","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","appendSlide","update","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","closestElement","base","__closestFrom","assignedSlot","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","time","onTouchEnd","currentPos","touchEndTime","timeDiff","lastClickTime","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","_increment","ratio","longSwipes","longSwipesRatio","shortSwipes","isNavButtonTarget","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","attachEvents","touchEvents","move","passiveListeners","passive","cancel","updateOnWindowResize","detachEvents","_swiper$loopedSlides","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointOnlyParams","param","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","containerModifierClass","emitContainerClasses","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","_points$i","prepareClasses","resultClasses","item","addClasses","suffixes","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","isPicture","complete","onload","preloadImages","imagesLoaded","imagesToLoad","updateOnImagesReady","currentSrc","wasLocked","lastSlidePosition","uniqueNavElements","wrapperClass","_emitClasses","_defineProperties","descriptor","_createClass","protoProps","staticProps","prototypes","modular","eventsEmitter","manipulation","images","extendedDefaults","Swiper","swipers","newParams","moduleParamName","swiperParams","defaults","passedParams","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","_proto","setProgress","current","getSlideClasses","slideEl","updates","spv","breakLoop","translated","translateValue","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","wrapper","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","prototypeGroup","protoMethod","Virtual","force","_swiper$params","_swiper$params$virtua","addSlidesBefore","addSlidesAfter","_swiper$virtual","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","renderExternal","slidesToRender","renderExternalUpdate","prependIndexes","appendIndexes","cache","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","beforeInit","overwriteParams","Keyboard","handle","kc","keyCode","charCode","pageUpDown","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","isEventSupported","isSupported","implementation","hasFeature","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","eventsTarget","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","positions","sensitivity","_newEvent","sign","ignoreWheelEvents","timeout","_recentWheelEvents","shift","_prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","newEvent","raw","prevEvent","animateSlider","releaseScroll","thresholdDelta","thresholdTime","getTime","Navigation","toggleEl","disabledClass","_swiper$navigation","$nextEl","$prevEl","lockClass","onPrevClick","onNextClick","_swiper$navigation2","hideOnClick","hiddenClass","toEdge","fromEdge","_swiper$navigation3","click","_swiper$navigation4","targetEl","pagination","clickable","isHidden","Pagination","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickableClass","modifierClass","progressbarOppositeClass","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","opacity","divider","moveDivider","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","dragStartPos","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragClass","dragEl","draggable","Parallax","setTransform","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","containerClass","maxRatio","isScaling","onGestureChange","scaleMove","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","toggleGestures","slideSelector","enableGestures","gesturesEnabled","disableGestures","activeListenerWithCapture","touchStart","touchEnd","doubleTap","slideChange","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","background","$pictureEl","sourceEl","$source","preloaderClass","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","scrollingElement","isWindow","scrollElementWidth","scrollElementHeight","scrollHandlerAttached","checkInView","loadOnTransitionStart","scroll","Controller","LinearSpline","i1","i3","binarySearch","guess","interpolate","getInterpolateFunction","controller","spline","_setTranslate","controlledTranslate","controlled","control","setControlledTranslate","by","inverse","setControlledTransition","A11y","getRandomNumber","randomChar","round","repeat","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","addElId","addElLive","live","disableEl","enableEl","onEnterOrSpaceKey","a11y","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","message","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","$containerEl","containerRoleDescriptionMessage","containerMessage","wrapperId","itemRoleDescriptionMessage","slideRole","ariaLabelMessage","slideLabelMessage","notificationClass","afterInit","paginationUpdate","History","hashNavigation","paths","getPathValues","scrollToSlide","setHistoryPopState","urlOverride","URL","pathArray","part","setHistory","slugify","currentState","state","slideHistory","HashNavigation","onHashChange","newHash","activeSlideHash","setHash","slideHash","watchState","Autoplay","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","attachMouseEvents","pauseOnMouseEnter","detachMouseEvents","beforeTransitionStart","sliderFirstMove","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","$cubeShadowEl","cubeEffect","wrapperRotate","shadow","slideAngle","tz","slideShadows","shadowBefore","shadowAfter","shadowOffset","shadowScale","shadowAngle","sin","cos","scale1","scale2","zFactor","Flip","flipEffect","limitRotation","rotate","rotateY","rotateX","zIndex","Coverflow","coverflowEffect","center","depth","slideOffset","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","Thumbs","thumbsParams","thumbs","SwiperClass","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","beforeDestroy","_nodeId","_clockseq","_lastMSecs","_lastNSecs","v1","buf","clockseq","seedBytes","rng","msecs","nsecs","dt","tl","tmh","uuid","validate","Uint8Array","stringToBytes","str","unescape","encodeURIComponent","bytes","charCodeAt","DNS","hashfunc","generateUUID","md5","msg","md5ToHexEncodedArray","wordsToMd5","bytesToWords","input","output","length32","hexTab","hex","getOutputLength","inputLength8","olda","oldb","oldc","oldd","md5ff","md5gg","md5hh","md5ii","safeAdd","length8","Uint32Array","lsw","msw","bitRotateLeft","num","cnt","md5cmn","s","v3","v35","ROTL","sha1","K","H","N","M","W","_t","_t2","T","v5","getRandomValues","rnds8","crypto","msCrypto","byteToHex","v4","rnds","sfc","__vccOpts","expectsLowerCase","EMPTY_OBJ","EMPTY_ARR","isOn","isModelListener","isMap","toTypeString","isSet","isDate","isRegExp","isFunction","isPromise","catch","isPlainObject","isIntegerKey","isReservedProp","cacheStringFunction","hit","camelizeRE","camelize","hyphenateRE","toHandlerKey","hasChanged","oldValue","invokeArrayFns","fns","arg","def","looseToNumber","toNumber","NaN","_globalThis","getGlobalThis","globalThis","PatchFlagNames","GLOBALS_ALLOWED","isGloballyAllowed","normalized","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","cssText","ret","tmp","normalizeProps","class","klass","HTML_TAGS","SVG_TAGS","MATH_TAGS","VOID_TAGS","isVoidTag","specialBooleanAttrs","isSpecialBooleanAttr","looseCompareArrays","looseEqual","aValidType","bValidType","aKeysCount","bKeysCount","aHasKey","bHasKey","String","looseIndexOf","findIndex","toDisplayString","replacer","__v_isRef","reduce","val2","stringifySymbol","activeEffectScope","activeEffect","EffectScope","detached","_active","effects","cleanups","scopes","active","currentEffectScope","fromParent","last","effectScope","recordEffectScope","scope","getCurrentScope","onScopeDispose","ReactiveEffect","scheduler","deps","_dirtyLevel","_trackId","_runnings","_queryings","_depsLength","dirty","pauseTracking","dep","computed","triggerComputed","resetTracking","lastShouldTrack","shouldTrack","lastEffect","preCleanupEffect","postCleanupEffect","onStop","effect2","cleanupDepEffect","trackId","cleanup","_effect","runner","pauseScheduleStack","trackStack","pauseScheduling","resetScheduling","queueEffectSchedulers","trackEffect","debuggerEventExtraInfo","oldDep","triggerEffects","dirtyLevel","allowRecurse","lastDirtyLevel","createDep","targetMap","WeakMap","ITERATE_KEY","MAP_KEY_ITERATE_KEY","depsMap","newValue","oldTarget","newLength","key2","getDepFromReactive","isNonTrackableKeys","builtInSymbols","arrayInstrumentations","createArrayInstrumentations","instrumentations","BaseReactiveHandler","_isReadonly","_shallow","receiver","isReadonly2","shallow","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","isRef","readonly","reactive","MutableReactiveHandler","isOldValueReadonly","isReadonly","isShallow","hadKey","deleteProperty","ownKeys","ReadonlyReactiveHandler","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","shallowReadonlyHandlers","toShallow","getProto","rawTarget","rawKey","has2","wrap","toReadonly","toReactive","get2","deleteEntry","clear","hadItems","createForEach","observed","createIterableMethod","targetIsMap","isPair","iterator","isKeyOnly","innerIterator","createReadonlyMethod","createInstrumentations","mutableInstrumentations2","shallowInstrumentations2","readonlyInstrumentations2","shallowReadonlyInstrumentations2","iteratorMethods","mutableInstrumentations","readonlyInstrumentations","shallowInstrumentations","shallowReadonlyInstrumentations","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","shallowReadonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","isExtensible","createReactiveObject","shallowReactive","shallowReadonly","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","isReactive","isProxy","markRaw","ComputedRefImpl","getter","_setter","isSSR","_value","triggerRefValue","_cacheable","trackRefValue","_dirty","getterOrOptions","debugOptions","setter","onlyGetter","cRef","ref2","newVal","ref","createRef","shallowRef","rawValue","RefImpl","__v_isShallow","_rawValue","useDirectValue","triggerRef","unref","toValue","shallowUnwrapHandlers","proxyRefs","objectWithRefs","CustomRefImpl","_get","_set","customRef","toRefs","propertyToRef","ObjectRefImpl","_object","_defaultValue","GetterRefImpl","_getter","__v_isReadonly","toRef","TrackOpTypes","TriggerOpTypes","stack","warn$1","appWarnHandler","appContext","warnHandler","trace","getComponentTrace","callWithErrorHandling","vnode","formatComponentName","warnArgs","formatTrace","currentVNode","normalizedStack","recurseCount","parentInstance","logs","entry","formatTraceEntry","postfix","isRoot","open","close","formatProps","formatProp","assertNumber","ErrorCodes","ErrorTypeStrings$1","handleError","callWithAsyncErrorHandling","throwInDev","contextVNode","cur","exposedInstance","errorInfo","errorCapturedHooks","ec","appErrorHandler","errorHandler","logError","isFlushing","isFlushPending","queue","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","findInsertionIndex","middle","middleJob","middleJobId","getId","pre","queueJob","job","queueFlush","flushJobs","invalidateJob","queuePostFlushCb","flushPreFlushCbs","seen","flushPostFlushCbs","deduped","Infinity","comparator","rawArgs","isUnmounted","modelArg","modifiersKey","handlerName","emitted","normalizeEmitsOptions","comp","asMixin","emitsCache","cached","emits","hasExtends","extendEmits","raw2","normalizedFromExtend","mixins","extends","isEmitListener","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","__scopeId","pushScopeId","popScopeId","withScopeId","_id","withCtx","ctx","isNonScopedSlot","_n","renderFnWithContext","_d","setBlockTracking","prevInstance","_c","renderComponentRoot","Component","withProxy","propsOptions","slots","renderCache","setupState","inheritAttrs","fallthroughAttrs","shapeFlag","proxyToUse","thisProxy","normalizeVNode","render2","getFunctionalFallthrough","blockStack","createVNode","Comment","some","filterModelListeners","cloneVNode","dirs","filterSingleRoot","singleRoot","isVNode","shouldUpdateComponent","prevVNode","nextVNode","optimized","prevProps","prevChildren","nextProps","nextChildren","patchFlag","emitsOptions","$stable","hasPropsChanged","dynamicProps","nextKeys","updateHOCHostEl","subTree","suspense","activeBranch","COMPONENTS","DIRECTIVES","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","for","resolveDynamicComponent","resolveDirective","warnMissing","currentInstance","selfName","getComponentName","registry","isSuspense","__isSuspense","suspenseId","SuspenseImpl","process","n1","n2","container","anchor","parentComponent","parentSuspense","slotScopeIds","rendererInternals","mountSuspense","patchSuspense","hydrate","hydrateSuspense","createSuspenseBoundary","normalizeSuspenseChildren","Suspense","triggerEvent","eventListener","patch","hiddenContainer","pendingBranch","ssContent","ssFallback","setActiveBranch","um","unmount","newBranch","newFallback","isInFallback","isHydrating","isSameVNodeType","pendingId","fallback","parentSuspenseId","isSuspensible","isVNodeSuspensible","resume","sync","vnode2","parentComponent2","container2","delayEnter","mode","afterLeave","anchor2","hasUnresolvedAncestor","fallbackVNode","namespace2","mountFallback","registerDep","setupRenderEffect","isInPendingSuspense","hydratedEl","asyncDep","asyncSetupResult","asyncResolved","handleSetupResult","placeholder","parentSuspense2","doRemove","hydrateNode","isSlotChildren","normalizeSuspenseSlot","default","block","trackBlock","isBlockTreeEnabled","openBlock","currentBlock","closeBlock","singleChild","dynamicChildren","queueEffectWithSuspense","branch","suspensible","ssrContextKey","useSSRContext","inject","watchEffect","doWatch","watchPostEffect","flush","watchSyncEffect","INITIAL_WATCHER_VALUE","watch","immediate","deep","onTrack","onTrigger","_cb","unwatch","forceTrigger","isMultiSource","traverse","onCleanup","baseGetter","ssrCleanup","isInSSRComponentSetup","__watcherHandles","fill","queuePostRenderEffect","instanceWatch","publicThis","createPathGetter","setCurrentInstance","unsetCurrentInstance","segments","currentDepth","withDirectives","directives","internalInstance","getExposeProxy","bindings","modifiers","updated","invokeDirectiveHook","oldBindings","binding","hook","leaveCbKey","enterCbKey","useTransitionState","isMounted","isLeaving","isUnmounting","leavingVNodes","onMounted","onBeforeUnmount","TransitionHookValidator","BaseTransitionPropsValidators","appear","persisted","onBeforeEnter","onEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","BaseTransitionImpl","setup","getCurrentInstance","prevTransitionKey","getTransitionRawChildren","hasFound","rawProps","emptyPlaceholder","innerChild","getKeepAliveChild","enterHooks","resolveTransitionHooks","setTransitionHooks","oldChild","oldInnerChild","transitionKeyChanged","getTransitionKey","leavingHooks","delayLeave","earlyRemove","delayedLeave","leavingVNodesCache","getLeavingNodesForType","BaseTransition","callHook","callAsyncHook","every","hook2","hooks","beforeEnter","leavingVNode","enter","afterHook","cancelHook","cancelled","leave","clone","isKeepAlive","keepComment","parentKey","keyedFragmentCount","Fragment","defineComponent","extraOptions","isAsyncWrapper","__asyncLoader","defineAsyncComponent","loader","loadingComponent","errorComponent","onError","userOnError","resolvedComp","pendingRequest","retry","thisRequest","userRetry","userFail","__esModule","__asyncResolved","createInnerComp","loaded","delayed","ce","__isKeepAlive","KeepAliveImpl","include","exclude","sharedContext","renderer","_unmount","storageContainer","resetShapeFlag","pruneCache","pruneCacheEntry","instance2","isDeactivated","vnodeHook","onVnodeMounted","invokeVNodeHook","da","onVnodeUnmounted","pendingCacheKey","cacheSubtree","getInnerChild","onUpdated","rawVNode","cachedVNode","KeepAlive","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","__wdc","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","__weh","createHook","lifecycle","onBeforeMount","onBeforeUpdate","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","renderList","renderItem","createSlots","dynamicSlots","slot","renderSlot","noSlotted","isCE","validSlotContent","ensureValidVNode","rendered","createBlock","scopeId","vnodes","toHandlers","preserveCaseIfNecessary","getPublicInstance","isStatefulComponent","publicPropertiesMap","$data","$props","$attrs","$slots","$refs","refs","$parent","$root","$emit","$options","resolveMergedOptions","$forceUpdate","$nextTick","$watch","hasSetupBinding","__isScriptSetup","PublicInstanceProxyHandlers","accessCache","normalizedProps","shouldCacheAccess","publicGetter","cssModule","globalProperties","__cssModules","RuntimeCompiledPublicInstanceProxyHandlers","unscopables","defineProps","defineEmits","defineExpose","exposed","defineOptions","defineSlots","defineModel","withDefaults","useSlots","getContext","useAttrs","useModel","camelizedName","track","localValue","propValue","modifierKey","i2","setupContext","createSetupContext","normalizePropsOrEmits","mergeDefaults","opt","skipFactory","mergeModels","createPropsRestProxy","excludedKeys","withAsyncContext","getAwaitable","awaitable","applyOptions","beforeCreate","dataOptions","computedOptions","methods","watchOptions","provide","provideOptions","injectOptions","created","beforeMount","beforeUpdate","activated","deactivated","beforeUnmount","unmounted","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","components","filters","checkDuplicateProperties","resolveInjections","methodHandler","createWatcher","provides","registerLifecycleHook","register","_hook","normalizeInject","extendsOptions","globalMixins","optionsCache","optionMergeStrategies","resolved","mergeOptions","strats","strat","internalOptionMergeStrats","mergeDataFn","mergeEmitsOrPropsOptions","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","createAppContext","app","isNativeTag","performance","compilerOptions","propsCache","uid$1","createAppAPI","rootComponent","rootProps","installedPlugins","WeakSet","_uid","_component","_props","_container","_context","_instance","install","mixin","directive","rootContainer","isHydrate","__vue_app__","runWithContext","currentApp","parentProvides","treatDefaultAsFactory","hasInjectionContext","initProps","isStateful","InternalObjectKey","propsDefaults","setFullProps","updateProps","rawPrevProps","rawCurrentProps","hasAttrsChanged","kebabKey","resolvePropValue","propsToUpdate","camelizedKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","normalizePropsOptions","extendProps","normalizedKey","validatePropName","prop","booleanIndex","getTypeIndex","stringIndex","getType","ctor","isSameType","isInternalKey","normalizeSlotValue","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","_ctx","normalizeVNodeSlots","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","setRef","rawRef","oldRawRef","isUnmount","refValue","owner","oldRef","_isString","_isRef","doSet","existing","hasMismatch","isSVGContainer","namespaceURI","isMathMLContainer","getContainerType","isComment","createHydrationFunctions","mt","mountComponent","patchProp","createText","nextSibling","insert","createComment","hasChildNodes","__VUE_PROD_HYDRATION_MISMATCH_DETAILS__","_vnode","isFragmentStart","onMismatch","handleMismatch","domType","nextNode","Text","isTemplateNode","replaceNode","content","Static","needToAdoptContent","staticCount","outerHTML","hydrateFragment","hydrateElement","locateClosingAnchor","lastChild","createTextVNode","hydrateChildren","forcePatch","vnodeHooks","needCallTransitionHooks","needTransition","hasWarned","endsWith","onVnodeBeforeMount","parentVNode","fragmentSlotScopeIds","isFragment","next2","newNode","oldNode","parentNode2","replaceChild","initFeatureFlags","createRenderer","baseCreateRenderer","createHydrationRenderer","createHydrationFns","__VUE__","hostInsert","hostRemove","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","setText","hostSetText","setElementText","hostSetElementText","hostParentNode","hostNextSibling","setScopeId","hostSetScopeId","insertStaticContent","hostInsertStaticContent","getNextHostNode","processText","processCommentNode","mountStaticNode","processFragment","processElement","processComponent","internals","moveStaticNode","removeStaticNode","mountElement","patchElement","mountChildren","resolveChildrenNamespace","unmountChildren","cloneIfMounted","oldProps","newProps","toggleRecurse","onVnodeBeforeUpdate","patchBlockChildren","patchChildren","patchProps","onVnodeUpdated","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","traverseStaticChildren","updateComponent","initialVNode","createComponentInstance","setupComponent","updateComponentPreRender","componentUpdateFn","bu","nonHydratedAsyncRoot","locateNonHydratedAsyncRoot","originNext","nextTree","prevTree","bm","isAsyncWrapperVNode","hydrateSubTree","scopedInitialVNode","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","oldLength","commonLength","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","increasingNewIndexSequence","getSequence","moveType","needTransition2","remove2","performLeave","shouldInvokeDirs","shouldInvokeVnodeHook","onVnodeBeforeUnmount","unmountComponent","removeFragment","performRemove","bum","mc","pc","pbc","createApp","currentNamespace","encoding","allowed","ch1","ch2","arrI","subComponent","isTeleport","__isTeleport","isTeleportDisabled","isTargetSVG","SVGElement","isTargetMathML","MathMLElement","resolveTarget","select","TeleportImpl","mainAnchor","targetAnchor","wasDisabled","currentContainer","currentAnchor","moveTeleport","nextTarget","updateCssVars","shouldRemove","hydrateTeleport","isReorder","targetNode","_lpa","Teleport","ut","disableTracking","vnodeArgsTransformer","setupBlock","createElementBlock","createBaseVNode","__v_isVNode","transformVNodeArgs","transformer","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","__v_skip","normalizeChildren","_createVNode","cloned","isClassComponent","guardReactiveProps","extraProps","mergeRef","mergedProps","mergeProps","flag","createStaticVNode","numberOfNodes","createCommentVNode","asBlock","memo","slotFlag","toMerge","incoming","emptyAppContext","exposeProxy","attrsProxy","slotsProxy","bc","rtg","rtc","sp","internalSetCurrentInstance","setInSSRSetupState","registerGlobalSetter","setters","compile","installWithProxy","setupResult","setupStatefulComponent","resolvedResult","finishComponentSetup","__ssrInlineRender","ssrRender","registerRuntimeCompiler","_compile","_rc","skipOptions","template","isCustomElement","delimiters","componentCompilerOptions","finalCompilerOptions","getAttrsProxy","classifyRE","classify","includeInferred","displayName","__name","__file","inferFromRegistry","propsOrChildren","withMemo","isMemoSame","ErrorTypeStrings","devtools","setDevtoolsHook","_ssrUtils","ssrUtils","resolveFilter","compatUtils","DeprecationTypes","svgNS","mathmlNS","templateContainer","nodeOps","multiple","createTextNode","nodeValue","before","TRANSITION","ANIMATION","vtcKey","Transition","resolveTransitionProps","DOMTransitionPropsValidators","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","TransitionPropsValidators","h2","hasExplicitCallback","baseProps","durations","normalizeDuration","enterDuration","leaveDuration","finishEnter","isAppear","removeTransitionClass","finishLeave","_isLeaving","makeEnterHook","nextFrame","addTransitionClass","whenTransitionEnds","forceReflow","NumberOf","cls","_vtc","endId","expectedType","explicitTimeout","_endId","resolveIfNotStale","propCount","getTransitionInfo","endEvent","ended","onEnd","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","toMs","patchClass","isSVG","transitionClasses","vShowOldKey","vShow","setDisplay","initVShowForSSR","getSSRProps","CSS_VAR_TEXT","useCssVars","updateTeleports","vars","setVarsOnNode","setVars","setVarsOnVNode","ob","patchStyle","isCssString","setStyle","currentDisplay","cssVarText","importantRE","prefixed","autoPrefix","prefixes","prefixCache","rawName","xlinkNS","patchAttr","removeAttributeNS","setAttributeNS","isBoolean","patchDOMProp","needRemove","veiKey","patchEvent","prevValue","nextValue","invokers","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","cachedNow","getNow","initialValue","_vts","attached","patchStopImmediatePropagation","originalStop","_stopped","isNativeOn","shouldSetAsProp","_trueValue","_falseValue","defineCustomElement","hydrate2","Comp","VueCustomElement","VueElement","initialProps","defineSSRCustomElement","BaseClass","_def","_connected","_resolved","_numberProps","_ob","_resolveProps","connectedCallback","_update","_resolveDef","disconnectedCallback","_setAttr","attributeName","isAsync","numberProps","_applyStyles","asyncDef","declaredPropKeys","_setProp","_getProp","shouldReflect","shouldUpdate","dispatch","useCssModule","mod","positionMap","newPositionMap","moveCbKey","TransitionGroupImpl","moveClass","hasCSSTransform","callPendingCbs","recordPosition","movedChildren","applyTranslation","cssTransitionProps","TransitionGroup","oldPos","dx","dy","getModelAssigner","onCompositionStart","composing","onCompositionEnd","assignKey","vModelText","castToNumber","domValue","elValue","vModelCheckbox","modelValue","_modelValue","elementValue","getValue","checked","filtered","getCheckboxValue","setChecked","vModelRadio","vModelSelect","isSetModel","selectedVal","selected","setSelected","_binding","isMultiple","option","optionValue","selectedIndex","vModelDynamic","callModelHook","resolveDynamicModel","modelToUse","initVModelForSSR","systemModifiers","modifierGuards","prevent","currentTarget","ctrl","alt","right","exact","withModifiers","_withMods","cacheKey","keyNames","esc","space","up","down","withKeys","_withKeys","eventKey","rendererOptions","enabledHydration","ensureRenderer","ensureHydrationRenderer","containerOrSelector","normalizeContainer","resolveRootNamespace","createSSRApp","ssrDirectiveInitialized","initDirectivesForSSR","FRAGMENT","TELEPORT","SUSPENSE","KEEP_ALIVE","BASE_TRANSITION","OPEN_BLOCK","CREATE_BLOCK","CREATE_ELEMENT_BLOCK","CREATE_VNODE","CREATE_ELEMENT_VNODE","CREATE_COMMENT","CREATE_TEXT","CREATE_STATIC","RESOLVE_COMPONENT","RESOLVE_DYNAMIC_COMPONENT","RESOLVE_DIRECTIVE","RESOLVE_FILTER","WITH_DIRECTIVES","RENDER_LIST","RENDER_SLOT","CREATE_SLOTS","TO_DISPLAY_STRING","MERGE_PROPS","NORMALIZE_CLASS","NORMALIZE_STYLE","NORMALIZE_PROPS","GUARD_REACTIVE_PROPS","TO_HANDLERS","CAMELIZE","CAPITALIZE","TO_HANDLER_KEY","SET_BLOCK_TRACKING","PUSH_SCOPE_ID","POP_SCOPE_ID","WITH_CTX","UNREF","IS_REF","WITH_MEMO","IS_MEMO_SAME","helperNameMap","registerRuntimeHelpers","helpers","getOwnPropertySymbols","locStub","line","createRoot","hoists","imports","temps","codegenNode","loc","createVNodeCall","isBlock","isComponent","helper","getVNodeBlockHelper","inSSR","getVNodeHelper","createArrayExpression","createObjectExpression","properties","createObjectProperty","createSimpleExpression","isStatic","constType","createCompoundExpression","createCallExpression","callee","createFunctionExpression","returns","newline","isSlot","createConditionalExpression","consequent","alternate","createCacheExpression","createBlockStatement","ssr","convertToBlock","removeHelper","defaultDelimitersOpen","defaultDelimitersClose","isTagStartChar","isWhitespace","isEndOfTagSection","toCharCodes","Sequences","Cdata","CdataEnd","CommentEnd","ScriptEnd","StyleEnd","TitleEnd","TextareaEnd","Tokenizer","cbs","buffer","sectionStart","entityStart","baseState","inRCDATA","inXML","inVPre","newlines","delimiterOpen","delimiterClose","delimiterIndex","currentSequence","sequenceIndex","inSFCRoot","getPos","newlineIndex","peek","stateText","ontext","stateInterpolationOpen","stateInRCDATA","stateInterpolation","stateInterpolationClose","oninterpolation","stateSpecialStartSequence","isMatch","stateInTagName","endOfText","actualIndex","stateInClosingTagName","fastForwardTo","stateCDATASequence","stateInDeclaration","cc","stateInCommentLike","oncdata","oncomment","startSpecial","sequence","enterRCDATA","stateBeforeTagName","lower","handleTagName","stateInSFCRootTagName","onopentagname","stateBeforeAttrName","stateBeforeClosingTagName","onclosetag","stateAfterClosingTagName","onopentagend","handleAttrStart","ondirname","stateInSelfClosingTag","onselfclosingtag","stateInAttrName","onattribname","handleAttrNameEnd","stateInDirName","stateInDirArg","ondirarg","stateInDynamicDirArg","stateInDirModifier","ondirmodifier","onattribnameend","stateAfterAttrName","onattribend","stateBeforeAttrValue","stateInAttrValueNoQuotes","handleInAttrValue","quote","onattribdata","stateInAttrValueDoubleQuotes","stateInAttrValueSingleQuotes","onerr","stateBeforeDeclaration","stateInProcessingInstruction","onprocessinginstruction","stateBeforeComment","stateInSpecialComment","stateBeforeSpecialS","stateBeforeSpecialT","startEntity","stateInEntity","finish","handleTrailingData","onend","endIndex","emitCodePoint","cp","consumed","getCompatValue","compatConfig","isCompatEnabled","checkCompatEnabled","defaultOnError","defaultOnWarn","createCompilerError","code","messages","additionalMessage","SyntaxError","isStaticExp","isCoreComponent","nonIdentifierRE","isSimpleIdentifier","validFirstIdentCharRE","validIdentCharRE","whitespaceRE","isMemberExpressionBrowser","stateStack","currentOpenBracketCount","currentOpenParensCount","currentStringType","char","isMemberExpression","findDir","allowEmpty","exp","findProp","dynamicOnly","isStaticArgOf","hasDynamicKeyVBind","isText$1","isVSlot","tagType","isSlotOutlet","propsHelperSet","getUnnormalizedProps","callPath","injectProp","propsWithInjection","parentCall","first","hasProp","propKeyName","toValidAssetId","searchValue","replaceValue","getMemoedVNodeCall","forAliasRE","defaultParserOptions","parseMode","ns","getNamespace","isPreTag","onWarn","comments","prefixIdentifiers","currentOptions","currentRoot","currentInput","currentOpenTag","currentProp","currentAttrValue","currentAttrStartIndex","currentAttrEndIndex","inPre","currentVPreBoundary","tokenizer","emitError","onText","getSlice","ontextentity","innerStart","innerEnd","decodeEntities","addNode","createExp","getLoc","endOpenTag","onCloseTag","backTrack","isSelfClosing","nameLoc","dirToAttr","setLocEnd","onattribentity","condense","expParseMode","forParseResult","parseForExpression","syncIndex","forIteratorRE","stripParensRE","inMatch","LHS","RHS","createAliasExpression","asParam","finalized","valueContent","trimmedOffset","iteratorMatch","keyContent","keyOffset","indexContent","innerLoc","lastNode","isImplied","isFragmentTemplate","condenseWhitespace","inlineTemplateProp","specialTemplateDir","isUpperCase","isBuiltInComponent","windowsNewlineRE","nodes","shouldCondense","whitespace","removedWhitespace","isAllWhitespace","hasNewlineChar","prevCharIsWhitespace","hoistStatic","walk","isSingleElementRoot","doNotHoistNode","originalCount","hoistedCount","constantType","getConstantType","hoist","getPatchFlag","getGeneratedPropsConstantType","getNodeProps","vSlot","branches","transformHoist","hoisted","hmr","constantCache","returnType2","generatedPropsType","childType","expType","returnType","allowHoistedHelperSet","getConstantTypeOfHelperCall","keyType","createTransformContext","filename","hoistStatic2","cacheHandlers","nodeTransforms","directiveTransforms","expressionPlugins","slotted","ssrCssVars","bindingMetadata","inline","isTS","nameMatch","identifiers","vFor","vPre","vOnce","currentNode","childIndex","inVOnce","count","currentCount","helperString","removeNode","removalIndex","onNodeRemoved","addIdentifiers","removeIdentifiers","identifier","traverseNode","createRootCodegen","transformed","traverseChildren","nodeRemoved","exitFns","onExit","createStructuralDirectiveTransform","PURE_ANNOTATION","aliasHelper","createCodegenContext","ast","sourceMap","optimizeImports","runtimeGlobalName","runtimeModuleName","ssrRuntimeModuleName","indentLevel","pure","indent","deindent","withoutNewLine","generate","onContextCreated","hasHelpers","useWithBlock","isSetupInlined","preambleContext","genFunctionPreamble","functionName","signature","genAssets","genNode","preamble","toJSON","VueBinding","staticHelpers","genHoists","assets","resolver","genNodeListAsArray","multilines","genNodeList","comma","genText","genExpression","genInterpolation","genCompoundExpression","genComment","genVNodeCall","genCallExpression","genObjectExpression","genArrayExpression","genFunctionExpression","genConditionalExpression","genCacheExpression","genExpressionAsPropertyKey","callHelper","genNullableArgs","needNewline","needsParens","isNested","transformIf","processIf","ifNode","siblings","sibling","createCodegenNodeForBranch","parentCondition","getParentCondition","processCodegen","createIfBranch","condition","isTemplateIf","userKey","keyIndex","createChildrenCodegenNode","keyProperty","needFragmentWrapper","vnodeCall","transformFor","processFor","forNode","renderExp","isTemplate","keyProp","keyExp","isStableFragment","fragmentFlag","childBlock","slotOutlet","createForLoopParams","parseResult","finalizeForParseResult","valueAlias","keyAlias","objectIndexAlias","memoArgs","createParamsList","defaultFallback","trackSlotScopes","buildClientSlotFn","_vForExp","buildSlots","buildSlotFn","slotsProperties","hasDynamicSlots","onComponentSlot","hasTemplateSlots","hasNamedDefaultSlot","implicitDefaultChildren","seenSlotNames","conditionalBranchIndex","slotElement","slotDir","slotChildren","slotLoc","slotName","slotProps","dirLoc","staticSlotName","slotFunction","vIf","vElse","buildDynamicSlot","conditional","buildDefaultSlotProperty","children2","node2","isNonWhitespaceContent","hasForwardedSlots","directiveImportMap","transformElement","vnodeTag","resolveComponentType","isDynamicComponent","vnodeProps","vnodeChildren","vnodePatchFlag","vnodeDynamicProps","dynamicPropNames","vnodeDirectives","shouldUseBlock","propsBuildResult","buildProps","buildDirectiveArgs","shouldBuildAsSlots","hasDynamicTextChild","stringifyDynamicPropNames","isExplicitDynamic","isComponentTag","isProp","builtIn","elementLoc","mergeArgs","runtimeDirectives","hasChildren","hasRef","hasClassBinding","hasStyleBinding","hasHydrationEventBinding","hasDynamicKeys","hasVnodeHook","pushMergeArg","dedupeProperties","analyzePatchFlag","isEventHandler","isVBind","isVOn","directiveTransform","props2","needRuntime","propsExpression","classKeyIndex","styleKeyIndex","hasDynamicKey","isHandlerKey","classProp","styleProp","knownProps","dirArgs","runtime","trueExpression","propsNamesString","transformSlotOutlet","processSlotOutlet","slotArgs","expectedLen","nonNameProps","fnExpRE","transformOn","augmentor","eventString","shouldCache","isMemberExp","isInlineStatement","hasMultipleStatements","transformBind","_node","propName","injectPrefix","transformText","hasText","callArgs","seen$1","transformOnce","transformModel","createTransformProps","rawExp","expString","bindingType","maybeRef","assignmentExp","eventArg","validDivisionCharRE","transformFilter","rewriteFilter","parseFilter","expression","inSingle","inDouble","inTemplateString","inRegex","curly","square","paren","lastFilterIndex","pushFilter","wrapFilter","transformMemo","getBaseTransformPreset","model","baseCompile","isModuleMode","resolvedOptions","noopDirectiveTransform","V_MODEL_RADIO","V_MODEL_CHECKBOX","V_MODEL_TEXT","V_MODEL_SELECT","V_MODEL_DYNAMIC","V_ON_WITH_MODIFIERS","V_ON_WITH_KEYS","V_SHOW","TRANSITION_GROUP","decoder","decodeHtmlBrowser","asAttr","parserOptions","rootNamespace","transformStyle","parseInlineCSS","createDOMCompilerError","transformVHtml","transformVText","baseResult","directiveToUse","isInvalidType","isEventOptionModifier","isNonKeyModifier","maybeKeyModifier","isKeyboardEvent","resolveModifiers","keyModifiers","nonKeyModifiers","eventOptionModifiers","transformClick","isStaticClick","handlerExp","modifierPostfix","transformShow","ignoreSideEffectTags","DOMNodeTransforms","DOMDirectiveTransforms","cloak","compileCache","getCache","compileToFunction","customElements","isNullOrUndef","isNumberFinite","finiteOrDefault","valueOrDefault","toPercentage","dimension","toDimension","loopable","reverse","_elementsEqual","a0","a1","ilen","v0","datasetIndex","clone$1","klen","isValidKey","_merger","tval","sval","merge","sources","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","_getKeyResolver","_splitKey","parts","_capitalize","defined","setsEqual","_isClickEvent","TAU","PITAU","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","niceNum","range","roundedRange","almostEquals","niceRange","fraction","niceFraction","_factorize","isNumber","epsilon","almostWhole","rounded","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","_lookup","table","cmp","mid","hi","lo","_lookupByKey","_rlookupByKey","_filterBetween","arrayEvents","listenArrayEvents","_chartjs","listeners","unlistenArrayEvents","stub","_arrayUnique","requestAnimFrame","throttled","updateFn","updateArgs","ticking","rest","debounce","_toLeftRightCenter","align","_alignStartEnd","_textX","check","_getStartAndCountOfVisiblePoints","animationsDisabled","pointCount","_sorted","iScale","_parsed","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","elasticIn","elasticOut","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","lim","p2b","n2b","b2n","n2p","map$1","A","B","C","D","E","F","h1","isShort","hexParse","alpha","hexString","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","hueValue","rgb2hsl","calln","hsl2rgb","hwb2rgb","hsv2rgb","hue","hueParse","exec","p1","p2","deg","hslString","Z","Y","X","V","U","S","R","Q","O","L","G","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","unpack","unpacked","tkeys","ok","nk","names","nameParse","transparent","RGB_RE","rgbParse","rgbString","rgb1","rgb2","modHSL","fromObject","functionParse","Color","_rgb","_valid","valid","mix","color","weight","w2","w1","clearer","greyscale","opaquer","negate","lighten","darken","saturate","desaturate","index_esm","isPatternOrGradient","getHoverColor","descriptors","getScope$1","Defaults","_descriptors","animation","backgroundColor","borderColor","datasets","devicePixelRatio","chart","getDevicePixelRatio","font","family","lineHeight","hover","hoverBackgroundColor","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","includeInvisible","maintainAspectRatio","onHover","parsing","plugins","responsive","scales","showLine","drawActiveElementsOnTop","describe","override","route","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","local","_scriptable","_indexable","_fallback","toFontString","_measureText","gc","longest","textWidth","measureText","_longestText","arrayOfThings","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","pointStyle","rotation","radius","rad","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","borderWidth","stroke","_isPointInArea","area","margin","bottom","clipArea","clip","unclipArea","_steppedLineTo","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","lines","strokeWidth","strokeColor","setRenderOpts","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","translation","fillStyle","textAlign","textBaseline","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","objProps","read","toTRBL","toTRBLCorners","toPadding","toFont","inputs","info","cacheable","_addGrace","minmax","grace","beginAtZero","change","keepZero","createContext","parentContext","_createResolver","rootScopes","getTarget","_resolve","_scopes","_rootScopes","_getTarget","_keys","_cached","_resolveWithPrefixes","getKeysFromAllScopes","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_subProxy","_stack","setContext","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","isScriptable","isIndexable","readKey","needsSubResolver","_resolveScriptable","_resolveArray","createSubResolver","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","parsed","EPSILON","getPoint","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointAfter","monotoneCompute","valueAxis","pointBefore","iPixel","vPixel","splineCurveMonotone","slopeDelta","capControlPoint","pt","capBezierPoints","inArea","inAreaPrev","inAreaNext","_updateBezierControlPoints","controlPoints","spanGaps","cubicInterpolationMode","tension","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","getStyle","getPositionedStyle","suffix","pos","useOffsetPos","getCanvasPosition","getRelativePosition","borderBox","paddings","borders","getContainerSize","maxHeight","containerStyle","containerBorder","containerPadding","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","containerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","supportsEventListenerOptions","passiveSupported","readUsedSize","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","getNumberFormat","locale","formatter","Intl","NumberFormat","formatNumber","format","getRightToLeftAdapter","rectX","setWidth","xPlus","leftForLtr","itemWidth","getLeftToRightAdapter","_itemWidth","getRtlAdapter","overrideTextDirection","original","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalizeSegment","getSegment","segment","bounds","startBound","endBound","_boundSegment","inside","subStart","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","sub","findStartAndEnd","solidSegments","_computeSegments","segmentOptions","_loop","splitByStyles","completeLoop","_fullLoop","doSplitByStyles","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","p0","p0DataIndex","p1DataIndex","styleChanged","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","Animator","_request","_charts","_running","_lastDate","_notify","anims","date","numSteps","currentStep","_refresh","remaining","draw","_total","tick","_getAnims","charts","listen","acc","_duration","animator","interpolators","boolean","factor","c0","Animation","cfg","currentValue","_fn","_easing","easing","_start","_target","_from","_to","_promises","elapsed","remain","wait","promises","rej","numbers","colors","animationOptions","animations","visible","Animations","_properties","configure","animatedProps","_animateOptions","newOptions","resolveTargetOptions","_createAnimations","$shared","awaitAll","$animations","anim","scaleClip","allowedOverflow","defaultClip","toClip","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","dsIndex","singleMode","otherValue","convertObjectDataToArray","adata","isStacked","stacked","getStackKey","indexScale","valueScale","NEGATIVE_INFINITY","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","_cachedMeta","_stacks","iAxis","vAxis","itemStacks","_top","_bottom","getFirstScaleId","createDatasetContext","createDataContext","clearStacks","isDirectUpdateMode","cloneIfNotShared","shared","createStack","canStack","hidden","_stacked","DatasetController","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","initialize","linkScales","addElements","updateIndex","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","_getOtherScale","_destroy","_dataCheck","datasetElementType","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","getMinMax","otherScale","otherMin","otherMax","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","getLabelForValue","_clip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","_resolveElementOptions","dataElementType","elementType","sharing","datasetElementScopeKeys","resolveNamedOptions","freeze","_resolveAnimations","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","updateElements","removed","_sync","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","getAllScaleValues","$bar","visibleMetas","computeMinSampleSize","curr","_length","updateMinAndPrev","ticks","getPixelForTick","computeFitCategoryTraits","ruler","stackCount","thickness","barThickness","categoryPercentage","barPercentage","chunk","pixels","computeFlexCategoryTraits","percent","parseFloatBar","startValue","endValue","barStart","barEnd","_custom","parseValue","parseArrayOrPrimitive","isFloatBar","custom","barSign","actualBase","borderProps","horizontal","setBorderSkipped","edge","borderSkipped","enableBorderRadius","parseEdge","swap","startEnd","orig","v2","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","bars","getBasePixel","_getRuler","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","_getStacks","grouped","skipNull","_getStackCount","_getStackIndex","_startPixel","_endPixel","baseValue","minBarLength","floating","getDataVisibility","startPixel","getPixelForDecimal","endPixel","halfGrid","getLineWidthForValue","maxBarThickness","stackIndex","rects","_index_","grid","_value_","BubbleController","getRatioAndOffset","circumference","cutout","ratioX","ratioY","startAngle","endAngle","endX","endY","calcMax","calcMin","tooltip","title","DoughnutController","innerRadius","outerRadius","_getRotation","_getCircumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","chartWeight","_getRingWeight","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","LineController","_dataset","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","border","lastPoint","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","pointPosition","getPointPositionForValue","tooltipPosition","useFinalPosition","getProps","hasValue","final","defaultRoutes","formatters","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","autoSkip","tickOpts","ticksLimit","maxTicksLimit","determineMaxTicks","majorIndices","major","getMajorIndices","numMajorIndices","newTicks","skipMajors","calculateSpacing","avgMajorSpacing","tickLength","_tickSize","maxScale","maxChart","_maxLength","evenMajorSpacing","getEvenSpacing","factors","majorStart","majorEnd","drawBorder","drawOnChartArea","drawTicks","tickWidth","tickColor","padding","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","reverseAlign","offsetFromEdge","sample","numItems","getPixelForGridLine","offsetGridLines","validIndex","lineValue","caches","getTickMarkLength","getTitleHeight","createScaleContext","createTickContext","titleAlign","titleArgs","titleX","titleY","positionAxisID","Scale","_margins","paddingTop","paddingBottom","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_reversePixels","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getPadding","getTicks","xLabels","yLabels","beforeLayout","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetRight","isFullSize","fullSize","_computeLabelSizes","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","idx","getValueForPixel","decimal","getDecimalForPixel","getBaseValue","optionTicks","rot","_computeGridLineItems","ticksLength","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","limit","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","_computeLabelItems","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","tickTextAlign","labelPadding","_computeLabelArea","drawBackground","fillRect","drawGrid","drawLine","setLineDash","lineDashOffset","lastLineWidth","drawLabels","drawTitle","_layers","gz","getSortedVisibleDatasetMetas","axisID","_maxDigits","fontSize","TypedRegistry","isForType","isPrototypeOf","parentScope","isIChartComponent","registerDefaults","unregister","itemDefaults","routeDefaults","routes","propertyParts","sourceName","sourceScope","Registry","controllers","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","reg","_getRegistryForType","_exec","itemReg","camelMethod","ScatterController","DateAdapter","chartOptions","formats","timestamp","unit","startOf","weekday","endOf","members","adapters","_date","metaset","lookupMethod","getRange","evaluateInteractionItems","getDistanceMetricForAxis","useX","useY","getIntersectItems","isPointInArea","evaluationFunc","inRange","getNearestRadialItems","getNearestCartesianItems","distanceMetric","minDistance","getCenterPoint","pointInArea","getNearestItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","wrapBoxes","boxes","layoutBoxes","stackWeight","buildStacks","layouts","placed","setLayoutDims","vBoxMaxWidth","hBoxMaxHeight","layout","availableWidth","availableHeight","buildLayoutBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","widthChanged","heightChanged","same","other","handleMaxPadding","updatePos","getMargins","marginForPositions","fitBoxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","autoPadding","addBox","removeBox","layoutItem","minPadding","verticalBoxes","horizontalBoxes","visibleVerticalBoxCount","BasePlatform","acquireContext","releaseContext","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","initCanvas","renderHeight","renderWidth","displayWidth","displayHeight","eventListenerOptions","addListener","removeListener","fromNativeEvent","native","nodeListContains","nodeList","createAttachObserver","addedNodes","removedNodes","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","listenDevicePixelRatioChanges","unlistenDevicePixelRatioChanges","createResizeObserver","releaseObserver","createProxyAndListen","DomPlatform","proxies","$proxies","detach","isConnected","_detectPlatform","OffscreenCanvas","PluginService","_init","_createDescriptors","invalidate","_oldCache","_notifyStateChanges","allPlugins","createDescriptors","previousDescriptors","localIds","getOpts","pluginOpts","pluginScopeKeys","getIndexAxis","datasetDefaults","datasetOptions","getAxisFromDefaultScaleID","getDefaultScaleIDFromAxis","axisFromPosition","determineAxis","scaleOptions","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","defaultScaleOptions","defaultID","initOptions","initData","initConfig","keyCache","keysCached","cachedKeys","addIfFound","_scopeCache","_resolverCache","clearCache","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","needContext","subResolver","resolverCache","hasFunction","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","instances","getChart","moveNumericKeys","intKey","determineLastEvent","lastEvent","inChartArea","isClick","Chart","userConfig","initialCanvas","existingChart","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","_doResize","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newRatio","ensureScalesHaveIDs","scalesOptions","axisOptions","buildOrUpdateScales","scaleOpts","isRadial","dposition","dtype","scaleType","scaleClass","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","replay","hoverOptions","eventFilter","_handleEvent","_getActiveElements","invalidatePlugins","clipArc","pixelMargin","angleMargin","toRadiusCorners","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","noSpacingInnerRadius","noSpacingOuterRadius","avNogSpacingRadius","adjustedAngle","beta","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","outerStartX","outerStartY","outerEndX","outerEndY","drawArc","fullCircles","drawFullCircleBorders","inner","lineJoin","ArcElement","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","lineCap","getLineMethod","stepped","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","useFastPath","_getInterpolationMethod","strokePathWithCache","_path","Path2D","strokePathDirect","segmentMethod","usePath2D","LineElement","_points","_segments","_pointsUpdated","_interpolate","interpolated","inRange$1","hitRadius","PointElement","mouseX","mouseY","inXRange","inYRange","hoverRadius","getBarBounds","bar","half","skipOrLimit","parseBorderWidth","maxW","maxH","parseBorderRadius","maxR","enableBorder","boundingRects","outer","skipX","skipY","skipBoth","hasRadius","addNormalRectPath","inflateRect","refRect","BarElement","addRectPath","lttbDecimation","samples","decimated","bucketWidth","sampledIndex","maxAreaPoint","maxArea","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAy","pointAx","minMaxDecimation","startIndex","xMin","xMax","intermediateIndex1","intermediateIndex2","cleanDecimatedDataset","cleanDecimatedData","getStartAndCountOfVisiblePointsSimplified","plugin_decimation","algorithm","beforeElementsUpdate","xAxis","tpoints","_findSegmentEnd","_getBounds","targetSegments","tgt","subBounds","fillSources","fillSource","_getEdge","_pointsFromSegments","boundary","linePoints","_createBoundaryLine","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","parseFillOption","decodeTargetIndex","firstCh","_getTargetPixel","_getTargetValue","fillOption","_buildStackLine","sourcePoints","linesBelow","getLinesBelow","addPointsBelow","below","sourcePoint","postponed","findPoint","pointValue","firstValue","lastValue","simpleArc","getLineByIndex","computeBoundary","computeCircularBoundary","computeLinearBoundary","_drawfill","lineOpts","above","doFill","clipVertical","clipY","lineLoop","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","afterDatasetsUpdate","_args","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","itemsEqual","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","col","adjustHitBoxes","rtlHelper","hitbox","_draw","defaultColor","fontColor","halfFontSize","drawLegendBox","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","textDirection","realX","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","isListened","hoveredItem","sameItem","plugin_legend","afterEvent","ci","Title","_padding","textSize","_drawArgs","fontOpts","createTitle","titleBlock","plugin_title","plugin_subtitle","positioners","average","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getTooltipSize","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","bodyLineHeight","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineYAlign","doesNotFitWithAlign","xAlign","caret","caretSize","caretPadding","determineXAlign","yAlign","chartWidth","determineAlignment","alignX","alignY","paddingAndSize","getBackgroundPoint","alignment","getAlignedX","getBeforeAfterBodyLines","createTooltipContext","tooltipItems","overrideCallbacks","Tooltip","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","getTitle","beforeTitle","afterTitle","getBeforeBody","getBody","bodyItems","scoped","beforeLabel","afterLabel","getAfterBody","getFooter","beforeFooter","afterFooter","_createItems","itemSort","labelColor","labelPointStyle","labelTextColor","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","bodyColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterDraw","labelCount","Decimation","Filler","SubTitle","addIfString","addedLabels","findOrAddLabel","lastIndexOf","CategoryScale","_startValue","_valueRange","_addedLabels","added","generateTicks$1","generationOptions","dataRange","MIN_SPACING","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","decimalPlaces","relativeLabelSize","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","getTickLimit","stepSize","computeTickLimit","numericGeneratorOptions","LinearScale","isMajor","tickVal","generateTicks","endExp","endSignificand","significand","lastTick","LogarithmicScale","_zero","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","hLimits","vLimits","updateLimits","setCenterPoint","_pointLabelItems","buildPointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","drawPointLabels","backdropLeft","backdropTop","backdropWidth","backdropHeight","pathRadiusLine","drawRadiusLine","gridLineOpts","createPointLabelContext","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","distanceFromCenter","getBasePosition","getPointLabelPosition","animate","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","adapter","_adapter","parser","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","determineUnitForFormatting","determineMajorUnit","addTick","timestamps","setMajorTicks","majorUnit","ticksFromTimestamps","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_getLabelCapacity","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","datetime","_tickFormatFunction","minorFormat","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","prevTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","registerables","extendStatics","__extends","__","__assign","__rest","propertyIsEnumerable","__decorate","decorators","decorate","__param","paramIndex","decorator","__esDecorate","descriptorIn","contextIn","initializers","extraInitializers","accept","kind","access","addInitializer","__runInitializers","useValue","__propKey","__setFunctionName","__metadata","metadataKey","metadataValue","metadata","__generator","sent","trys","ops","verb","op","__createBinding","k2","__exportStar","__values","__read","ar","__spread","__spreadArrays","il","jl","__spreadArray","pack","__await","__asyncGenerator","asyncIterator","settle","fulfill","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","__setModuleDefault","__importStar","__importDefault","__classPrivateFieldGet","__classPrivateFieldSet","__classPrivateFieldIn","__addDisposableResource","env","async","asyncDispose","_SuppressedError","SuppressedError","suppressed","__disposeResources","fail","hasError","rec"],"sourceRoot":""}