{"mappings":"A,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,CICO,IMGqC0/C,EAGrCz7C,EGMgBL,EAAOi4C,EAAWwD,EAkBpC/D,EAQAE,EACHC,ERbWz0C,EChBP0T,ECPF2+B,EC8KAE,EAWAC,EAEEC,EA0BAC,EC1MAC,EAaFC,EAkJEC,EACAC,EC7KKh5C,ENeEi5C,EAAgC,CAAG,EACnCC,EAAY,EAAA,CACZC,EACZ,oEClBY/3C,EAAUD,MAAMC,OAAAA,CAStB,SAASiJ,EAAO6O,CAAAA,CAAKhX,CAAAA,EAE3B,IAAK,IAAIlC,KAAKkC,EAAOgX,CAAAA,CAAIlZ,EAAAA,CAAKkC,CAAAA,CAAMlC,EAAAA,CACpC,OAA6BkZ,CAC9B,CAQgB,SAAAkgC,EAAWC,CAAAA,EACtBA,GAAQA,EAAK93C,UAAAA,EAAY83C,EAAK93C,UAAAA,CAAWC,WAAAA,CAAY63C,EAC1D,CEVgB,SAAAC,EAAcr3C,CAAAA,CAAMC,CAAAA,CAAOL,CAAAA,EAC1C,IACCM,EACAC,EACApC,EAHGu5C,EAAkB,CAAA,EAItB,IAAKv5C,KAAKkC,EACA,OAALlC,EAAYmC,EAAMD,CAAAA,CAAMlC,EAAAA,CACd,OAALA,EAAYoC,EAAMF,CAAAA,CAAMlC,EAAAA,CAC5Bu5C,CAAAA,CAAgBv5C,EAAAA,CAAKkC,CAAAA,CAAMlC,EAAAA,CAUjC,GAPI2B,UAAUC,MAAAA,CAAS,GACtB23C,CAAAA,EAAgB13C,QAAAA,CACfF,UAAUC,MAAAA,CAAS,EAAIsE,EAAMpE,IAAAA,CAAKH,UAAW,GAAKE,CAAAA,EAKjC,YAAA,OAARI,GAA2C,MAArBA,EAAKF,YAAAA,CACrC,IAAK/B,KAAKiC,EAAKF,YAAAA,CAAAA,KHlBQ4f,IGmBlB43B,CAAAA,CAAgBv5C,EAAAA,EACnBu5C,CAAAA,CAAAA,CAAgBv5C,EAAAA,CAAKiC,EAAKF,YAAAA,CAAa/B,EAAAA,AAAAA,EAK1C,OAAOw5C,EAAYv3C,EAAMs3C,EAAiBp3C,EAAKC,EAAK,KACrD,CAAA,SAcgBo3C,EAAYv3C,CAAAA,CAAMC,CAAAA,CAAOC,CAAAA,CAAKC,CAAAA,CAAKq3C,CAAAA,EAIlD,IAAM32C,EAAQ,CACbb,KAAAA,EACAC,MAAAA,EACAC,IAAAA,EACAC,IAAAA,EACAC,IAAW,KACXC,GAAS,KACTC,IAAQ,EACRC,IAAM,KACNC,IAAY,KACZC,YAAAA,KHtDuBif,EGuDvBhf,IAAuB,MAAZ82C,EAAAA,EAAqBlB,EAAUkB,EAC1C72C,IAAAA,GACAC,IAAQ,CAAA,EAMT,OAFgB,MAAZ42C,GAAqC,MAAjB7/B,EAAQ9W,KAAAA,EAAe8W,EAAQ9W,KAAAA,CAAMA,GAEtDA,CACR,CAEO,SAAS42C,IACf,MAAO,CAAE12C,QAAS,IAAA,CACnB,CAAA,SAEgB22C,EAASz3C,CAAAA,EACxB,OAAOA,EAAML,QACd,AAAA,CAAA,SC3EgB+3C,EAAc13C,CAAAA,CAAOiB,CAAAA,EACpC02C,IAAAA,CAAK33C,KAAAA,CAAQA,EACb23C,IAAAA,CAAK12C,OAAAA,CAAUA,CAChB,CA0EgB,SAAA22C,EAAch3C,CAAAA,CAAOi3C,CAAAA,EACpC,GAAkB,MAAdA,EAEH,OAAOj3C,EAAKR,EAAAA,CACTw3C,EAAch3C,EAAKR,EAAAA,CAAUQ,EAAKF,GAAAA,CAAU,GAC5C,KAIJ,IADA,IAAIo3C,EACGD,EAAaj3C,EAAKT,GAAAA,CAAWT,MAAAA,CAAQm4C,IAG3C,GAAe,MAFfC,CAAAA,EAAUl3C,EAAKT,GAAAA,CAAW03C,EAAAA,AAAAA,GAEa,MAAhBC,EAAOx3C,GAAAA,CAI7B,OAAOw3C,EAAOx3C,GAAAA,CAShB,MAA4B,YAAA,OAAdM,EAAMb,IAAAA,CAAqB63C,EAAch3C,GAAS,IACjE,CAoFgB,SAAAq3C,EAAcx2C,CAAAA,EAAAA,AAAAA,CAAAA,CAE1BA,EAACL,GAAAA,EACDK,CAAAA,EAACL,GAAAA,CAAAA,CAAU,CAAA,GACZm1C,EAAcl1C,IAAAA,CAAKI,IAAAA,CAClBy2C,EAAO32C,GAAAA,IACTi1C,IAAiB9+B,EAAQlW,iBAAAA,AAAAA,GAAAA,AAEzBg1C,CAAAA,AAAAA,CAAAA,EAAe9+B,EAAQlW,iBAAAA,AAAAA,GACNi1C,CAAAA,EAAOyB,EAE1B,CASA,SAASA,IAAT,IACKz2C,EAME02C,EAzGkBC,EAOjBC,EANHC,EACHC,EACAC,EACAC,EAmGD,IAHAlC,EAAc70C,IAAAA,CAAKg1C,GAGXj1C,EAAI80C,EAAc50C,KAAAA,IACrBF,EAACL,GAAAA,EACA+2C,CAAAA,EAAoB5B,EAAc72C,MAAAA,CAlGjC24C,EAAAA,KAAAA,EALNE,EAAAA,AADGD,CAAAA,EAAAA,AADoBF,CAAAA,EA0GN32C,CAAAA,EAzGMhB,GAAAA,AAAAA,EACNH,GAAAA,CACjBk4C,EAAc,EAAA,CACdC,EAAW,EAAA,CAERL,EAASx2C,GAAAA,EACNy2C,CAAAA,AAAAA,CAAAA,EAAWlwC,EAAO,CAAA,EAAImwC,EAAAA,EACpB73C,GAAAA,CAAa63C,EAAQ73C,GAAAA,CAAa,EACtCiX,EAAQ9W,KAAAA,EAAO8W,EAAQ9W,KAAAA,CAAMy3C,GAEjCK,EACCN,EAASx2C,GAAAA,CACTy2C,EACAC,EACAF,EAASt2C,GAAAA,CACTs2C,EAASx2C,GAAAA,CAAYG,YAAAA,CJzII,GI0IzBu2C,EAAQ33C,GAAAA,CAAyB,CAAC43C,EAAAA,CAAU,KAC5CC,EACU,MAAVD,EAAiBX,EAAcU,GAAYC,EAAAA,CAAAA,CJ5IlB,CAAA,GI6ItBD,EAAQ33C,GAAAA,AAAAA,EACX83C,GAGDJ,EAAQ53C,GAAAA,CAAa63C,EAAQ73C,GAAAA,CAC7B43C,EAAQj4C,EAAAA,CAAAD,GAAAA,CAAmBk4C,EAAQ33C,GAAAA,CAAAA,CAAW23C,EAC9CM,EAAWH,EAAaH,EAAUI,GAE9BJ,EAAQ/3C,GAAAA,EAASi4C,GACpBR,AAQH,SAASA,EAAwBn3C,CAAAA,EAAjC,IAGW9C,EACJk6C,EAHN,GAA+B,MAA1Bp3C,CAAAA,EAAQA,EAAKR,EAAAA,AAAAA,GAAyC,MAApBQ,EAAKL,GAAAA,CAAqB,CAEhE,IADAK,EAAKN,GAAAA,CAAQM,EAAKL,GAAAA,CAAY2B,IAAAA,CAAO,KAC5BpE,EAAI,EAAGA,EAAI8C,EAAKT,GAAAA,CAAWT,MAAAA,CAAQ5B,IAE3C,GAAa,MADTk6C,CAAAA,EAAQp3C,EAAKT,GAAAA,CAAWrC,EAAAA,AAAAA,GACO,MAAdk6C,EAAK13C,GAAAA,CAAe,CACxCM,EAAKN,GAAAA,CAAQM,EAAKL,GAAAA,CAAY2B,IAAAA,CAAO81C,EAAK13C,GAAAA,CAC1C,KACD,CAGD,OAAOy3C,EAAwBn3C,EAChC,CACD,EArB2By3C,EAAAA,EA8EpB9B,EAAc72C,MAAAA,CAASy4C,GAI1B5B,EAAc70C,IAAAA,CAAKg1C,EAAAA,CAItBwB,CAAAA,EAAO32C,GAAAA,CAAkB,CAC1B,CGrMO,SAASq3C,EACfC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAX,CAAAA,CACAD,CAAAA,CACAa,CAAAA,CACAX,CAAAA,EAXM,IAaF36C,EAEHw6C,EAEAe,EAEAC,EAEAC,EAiCI3tC,EA5BD4tC,EAAeR,GAAkBA,EAAc74C,GAAAA,EAAe62C,EAE9DyC,EAAoBX,EAAap5C,MAAAA,CAUrC,IARA64C,EAASmB,AA+EV,SACCX,CAAAA,CACAD,CAAAA,CACAU,CAAAA,CACAjB,CAAAA,CACAkB,CAAAA,EALD,IAQK37C,EAEAu7C,EAEAf,EA8DGuB,EAOAC,EAnEHC,EAAoBP,EAAY95C,MAAAA,CACnCs6C,EAAuBD,EAEpBE,EAAO,EAGX,IADAlB,EAAc54C,GAAAA,CAAa,AAAIlB,MAAMw6C,GAChC37C,EAAI,EAAGA,EAAI27C,EAAmB37C,IAMnB,MAHfu7C,CAAAA,EAAaP,CAAAA,CAAah7C,EAAAA,AAAAA,GAIJ,WAAA,OAAdu7C,GACc,YAAA,OAAdA,EA8CFQ,CAAAA,EAAc/7C,EAAIm8C,EA/BvBZ,AAAAA,CAAAA,EAAaN,EAAc54C,GAAAA,CAAWrC,EAAAA,CANjB,UAAA,OAAdu7C,GACc,UAAA,OAAdA,GAEc,UAAA,OAAdA,GACPA,EAAW74C,WAAAA,EAAeqC,OAEiBy0C,EAC1C,KACA+B,EACA,KACA,KACA,MAESn6C,EAAQm6C,GACyB/B,EAC1CG,EACA,CAAE93C,SAAU05C,CAAAA,EACZ,KACA,KACA,MAAA,KP9LqB55B,IOgMZ45B,EAAW74C,WAAAA,EAA6B64C,EAAUh5C,GAAAA,CAAU,EAK3Bi3C,EAC1C+B,EAAWt5C,IAAAA,CACXs5C,EAAWr5C,KAAAA,CACXq5C,EAAWp5C,GAAAA,CACXo5C,EAAWn5C,GAAAA,CAAMm5C,EAAWn5C,GAAAA,CAAM,KAClCm5C,EAAU54C,GAAAA,EAGgC44C,CAAAA,EAIlCj5C,EAAAA,CAAW24C,EACrBM,EAAUh5C,GAAAA,CAAU04C,EAAc14C,GAAAA,CAAU,EAY5Ci4C,EAAW,KAAA,KAPLwB,CAAAA,EAAiBT,EAAU34C,GAAAA,CAAUw5C,AAsJ7C,SACCb,CAAAA,CACAG,CAAAA,CACAK,CAAAA,CACAG,CAAAA,EAJD,IAmCMpzC,EACAtE,EA9BCrC,EAAMo5C,EAAWp5C,GAAAA,CACjBF,EAAOs5C,EAAWt5C,IAAAA,CACpBu4C,EAAWkB,CAAAA,CAAYK,EAAAA,CAkB3B,GACc,OAAbvB,GACCA,GACAr4C,GAAOq4C,EAASr4C,GAAAA,EAChBF,IAASu4C,EAASv4C,IAAAA,EACa,GPrZX,CAAA,EOqZnBu4C,EAAQ33C,GAAAA,AAAAA,EAEV,OAAOk5C,EAAAA,GAVPG,EACa,CAAA,MAAZ1B,GAAmD,GP9Y/B,CAAA,EO8YCA,EAAQ33C,GAAAA,AAAAA,EAA0B,EAAI,CAAA,EAa5D,IAFIiG,EAAIizC,EAAc,EAClBv3C,EAAIu3C,EAAc,EACfjzC,GAAK,GAAKtE,EAAIk3C,EAAY95C,MAAAA,EAAQ,CACxC,GAAIkH,GAAK,EAAG,CAEX,GAAA,AADA0xC,CAAAA,EAAWkB,CAAAA,CAAY5yC,EAAAA,AAAAA,GAGS,GPhab,CAAA,EOgajB0xC,EAAQ33C,GAAAA,AAAAA,GACTV,GAAOq4C,EAASr4C,GAAAA,EAChBF,IAASu4C,EAASv4C,IAAAA,CAElB,OAAO6G,CAERA,CAAAA,GACD,CAEA,GAAItE,EAAIk3C,EAAY95C,MAAAA,CAAQ,CAE3B,GAAA,AADA44C,CAAAA,EAAWkB,CAAAA,CAAYl3C,EAAAA,AAAAA,GAGS,GP7ab,CAAA,EO6ajBg2C,EAAQ33C,GAAAA,AAAAA,GACTV,GAAOq4C,EAASr4C,GAAAA,EAChBF,IAASu4C,EAASv4C,IAAAA,CAElB,OAAOuC,CAERA,CAAAA,GACD,CACD,CAGD,OAAA,EACD,EAxNG+2C,EACAG,EACAK,EACAG,EAAAA,GAMAA,CAAAA,IAAAA,AADA1B,CAAAA,EAAWkB,CAAAA,CAAYM,EAAAA,AAAAA,GAGtBxB,CAAAA,EAAQ33C,GAAAA,EP5OW,CAAA,CAAA,EOmPU,MAAZ23C,GAA2C,OAAvBA,EAAQ73C,GAAAA,CAAAA,CAAAA,IAG1Cq5C,GACHG,IAI6B,YAAA,OAAnBZ,EAAWt5C,IAAAA,EACrBs5C,CAAAA,EAAU14C,GAAAA,EP9Pc,CAAA,CAAA,EOgQfm5C,GAAiBD,GAiBvBC,CAAAA,GAAiBD,EAAc,EAClCI,IACUH,GAAiBD,EAAc,EACzCI,IAEIH,CAAAA,EAAgBD,EACnBI,IAEAA,IAMDZ,EAAU14C,GAAAA,EP/Rc,CAAA,CAAA,CAAA,EO+KzBo4C,EAAc54C,GAAAA,CAAWrC,EAAAA,CAAK,KAyHhC,GAAIk8C,EACH,IAAKl8C,EAAI,EAAGA,EAAIi8C,EAAmBj8C,IAElB,MADhBw6C,CAAAA,EAAWkB,CAAAA,CAAY17C,EAAAA,AAAAA,GACgC,GPzSnC,CAAA,EOySKw6C,EAAQ33C,GAAAA,AAAAA,GAC5B23C,CAAAA,EAAQh4C,GAAAA,EAASi4C,GACpBA,CAAAA,EAASX,EAAcU,EAAAA,EAGxBt1C,ACkTG,SAASA,EAAQpC,CAAAA,CAAOu5C,CAAAA,CAAaiC,CAAAA,EAArC,IACF58C,EAsBM1B,EAbV,GARI4Z,EAAQ1U,OAAAA,EAAS0U,EAAQ1U,OAAAA,CAAQpC,GAEhCpB,AAAAA,CAAAA,EAAIoB,EAAMV,GAAAA,AAAAA,GACTV,CAAAA,EAAEsB,OAAAA,EAAWtB,EAAEsB,OAAAA,GAAYF,EAAKN,GAAAA,EACpCq5C,EAASn6C,EAAG,KAAM26C,EAAAA,EAIU,MAAzB36C,CAAAA,EAAIoB,EAAKL,GAAAA,AAAAA,EAAsB,CACnC,GAAIf,EAAE0D,oBAAAA,CACL,GAAA,CACC1D,EAAE0D,oBAAAA,EAGH,CAFE,MAAOjG,EAAAA,CACRya,EAAOpX,GAAAA,CAAarD,EAAGk9C,EACxB,CAGD36C,EAAE0C,IAAAA,CAAO1C,EAACoC,GAAAA,CAAc,IACzB,CAEA,GAAKpC,EAAIoB,EAAKT,GAAAA,CACb,IAASrC,EAAI,EAAGA,EAAI0B,EAAEE,MAAAA,CAAQ5B,IACzB0B,CAAAA,CAAE1B,EAAAA,EACLkF,EACCxD,CAAAA,CAAE1B,EAAAA,CACFq8C,EACAiC,GAAmC,YAAA,OAAdx7C,EAAMb,IAAAA,CAM1Bq8C,CAAAA,GACJlF,EAAWt2C,EAAKN,GAAAA,EAGjBM,EAAKL,GAAAA,CAAcK,EAAKR,EAAAA,CAAWQ,EAAKN,GAAAA,CAAAA,KR7nBhBmf,CQ8nBzB,EDzVY64B,EAAUA,EAAAA,EAKrB,OAAOC,CACR,EAnPEQ,EACAD,EACAU,EACAjB,EACAkB,GAGI37C,EAAI,EAAGA,EAAI27C,EAAmB37C,IAEhB,MADlBu7C,CAAAA,EAAaN,EAAc54C,GAAAA,CAAWrC,EAAAA,AAAAA,GAMrCw6C,CAAAA,EAAAA,KADGe,EAAU34C,GAAAA,CACFq2C,EAEAyC,CAAAA,CAAYH,EAAU34C,GAAAA,CAAAA,EAAYq2C,EAI9CsC,EAAU34C,GAAAA,CAAU5C,EAGhB8N,EAAS8sC,EACZG,EACAQ,EACAf,EACAW,EACAC,EACAC,EACAX,EACAD,EACAa,EACAX,GAIDa,EAASD,EAAU/4C,GAAAA,CACf+4C,EAAWn5C,GAAAA,EAAOo4C,EAASp4C,GAAAA,EAAOm5C,EAAWn5C,GAAAA,EAC5Co4C,CAAAA,EAASp4C,GAAAA,EACZy5C,EAASrB,EAASp4C,GAAAA,CAAK,KAAMm5C,GAE9BZ,EAASp3C,IAAAA,CACRg4C,EAAWn5C,GAAAA,CACXm5C,EAAU94C,GAAAA,EAAe+4C,EACzBD,EAAAA,EAImB,MAAjBE,GAAmC,MAAVD,GAC5BC,CAAAA,EAAgBD,CAAAA,EPrHS,EOyHzBD,EAAU14C,GAAAA,EACV23C,EAAQn4C,GAAAA,GAAek5C,EAAUl5C,GAAAA,CAEjCo4C,EAASqB,AAkMZ,SAASA,EAAOO,CAAAA,CAAa5B,CAAAA,CAAQM,CAAAA,EAArC,IAIMl5C,EACK7B,EAFV,GAA+B,YAAA,OAApBq8C,EAAYp6C,IAAAA,CAAoB,CAE1C,IADIJ,EAAWw6C,EAAWh6C,GAAAA,CACjBrC,EAAI,EAAG6B,GAAY7B,EAAI6B,EAASD,MAAAA,CAAQ5B,IAC5C6B,CAAAA,CAAS7B,EAAAA,EAKZ6B,CAAAA,CAAAA,CAAS7B,EAAAA,CAAEsC,EAAAA,CAAW+5C,EACtB5B,EAASqB,EAAOj6C,CAAAA,CAAS7B,EAAAA,CAAIy6C,EAAQM,EAAAA,EAIvC,OAAON,CACR,CAAW4B,EAAW75C,GAAAA,EAASi4C,GAC1BA,CAAAA,GAAU4B,EAAYp6C,IAAAA,EAAAA,CAAS84C,EAAUz1C,QAAAA,CAASm1C,IACrDA,CAAAA,EAASX,EAAcuC,EAAAA,EAExBtB,EAAUx1C,YAAAA,CAAa82C,EAAW75C,GAAAA,CAAOi4C,GAAU,MACnDA,EAAS4B,EAAW75C,GAAAA,AAAAA,EAGrB,GACCi4C,EAASA,GAAUA,EAAOj1C,WAAAA,OACR,MAAVi1C,GAAqC,GAAnBA,EAAOh1C,QAAAA,CAElC,AAAA,OAAOg1C,CACR,EAhOmBc,EAAYd,EAAQM,GACA,YAAA,OAAnBQ,EAAWt5C,IAAAA,EAAAA,KPlHN0f,IOkH4B7T,EAClD2sC,EAAS3sC,EACC0tC,GACVf,CAAAA,EAASe,EAAOh2C,WAAAA,AAAAA,EAIjB+1C,EAAU14C,GAAAA,EAAAA,EAAAA,EAKX,OAFAo4C,EAAcz4C,GAAAA,CAAQi5C,EAEfhB,CACR,CF5IA,SAAS8B,EAASz2C,CAAAA,CAAO3D,CAAAA,CAAKqF,CAAAA,EACf,KAAVrF,CAAAA,CAAI,EAAA,CACP2D,EAAMH,WAAAA,CAAYxD,EAAc,MAATqF,EAAgB,GAAKA,GAE5C1B,CAAAA,CAAM3D,EAAAA,CADa,MAATqF,EACG,GACa,UAAA,OAATA,GAAqB2xC,EAAmBvzC,IAAAA,CAAKzD,GACjDqF,EAEAA,EAAQ,IAEvB,CAAA,SAyBgB7B,EAAY62C,CAAAA,CAAKhzC,CAAAA,CAAMhC,CAAAA,CAAOi1C,CAAAA,CAAUrB,CAAAA,EACvD,IAAIsB,EAEJz8C,EAAG,GAAY,SAARuJ,GACN,GAAoB,UAAA,OAAThC,EACVg1C,EAAI12C,KAAAA,CAAMC,OAAAA,CAAUyB,MACd,CAKN,GAJuB,UAAA,OAAZi1C,GACVD,CAAAA,EAAI12C,KAAAA,CAAMC,OAAAA,CAAU02C,EAAW,EAAA,EAG5BA,EACH,IAAKjzC,KAAQizC,EACNj1C,GAASgC,KAAQhC,GACtB+0C,EAASC,EAAI12C,KAAAA,CAAO0D,EAAM,IAK7B,GAAIhC,EACH,IAAKgC,KAAQhC,EACPi1C,GAAYj1C,CAAAA,CAAMgC,EAAAA,GAAUizC,CAAAA,CAASjzC,EAAAA,EACzC+yC,EAASC,EAAI12C,KAAAA,CAAO0D,EAAMhC,CAAAA,CAAMgC,EAAAA,CAIpC,OAGQA,GAAW,KAAXA,CAAAA,CAAK,EAAA,EAAwB,KAAXA,CAAAA,CAAK,EAAA,CAC/BkzC,EAAalzC,GAASA,CAAAA,EAAOA,EAAKxD,OAAAA,CAAQ6yC,EAAe,KAAA,EAQxDrvC,EAJAA,EAAKvD,WAAAA,KAAiBu2C,GACd,cAARhzC,GACQ,aAARA,EAEOA,EAAKvD,WAAAA,GAAcC,KAAAA,CAAM,GACrBsD,EAAKtD,KAAAA,CAAM,GAElBs2C,EAAG38C,CAAAA,EAAa28C,CAAAA,EAAG38C,CAAAA,CAAc,CAAA,CAAA,EACtC28C,EAAG38C,CAAAA,CAAY2J,EAAOkzC,EAAAA,CAAcl1C,EAEhCA,EACEi1C,EAQJj1C,EAAMm1C,CAAAA,CAAYF,EAASE,CAAAA,CAP3Bn1C,CAAAA,EAAMm1C,CAAAA,CAAY7D,EAClB0D,EAAIr2C,gBAAAA,CACHqD,EACAkzC,EAAa1D,EAAoBD,EACjC2D,EAAAA,EAMFF,EAAIp2C,mBAAAA,CACHoD,EACAkzC,EAAa1D,EAAoBD,EACjC2D,OAGI,CACN,GLzF2B,8BKyFvBtB,EAIH5xC,EAAOA,EAAKxD,OAAAA,CAAQ,cAAe,KAAKA,OAAAA,CAAQ,SAAU,UAE1DwD,GAAQ,SAARA,GACQ,UAARA,GACQ,QAARA,GACQ,QAARA,GACQ,QAARA,GAGQ,YAARA,GACQ,YAARA,GACQ,WAARA,GACQ,WAARA,GACQ,QAARA,GACQ,WAARA,GACAA,KAAQgzC,EAER,GAAA,CACCA,CAAAA,CAAIhzC,EAAAA,CAAiB,MAAThC,EAAgB,GAAKA,EAEjC,MAAMvH,CAAAA,CACL,MAAOd,EAAAA,CAAAA,CAUU,YAAA,OAATqI,GAES,CAAA,MAATA,GAAAA,CAA4B,IAAVA,GAA8B,KAAXgC,CAAAA,CAAK,EAAA,CAGpDgzC,EAAIn2C,eAAAA,CAAgBmD,GAFpBgzC,EAAIl2C,YAAAA,CAAakD,EAAc,WAARA,GAA8B,GAAThC,EAAgB,GAAKA,EAAAA,CAInE,CACD,CAOA,SAASo1C,EAAiBF,CAAAA,EAMzB,OAAO,SAAUv9C,CAAAA,EAChB,GAAI06C,IAAAA,CAAIh6C,CAAAA,CAAa,CACpB,IAAMg9C,EAAehD,IAAAA,CAAIh6C,CAAAA,CAAYV,EAAE8C,IAAAA,CAAOy6C,EAAAA,CAC9C,GAAqB,MAAjBv9C,EAAE29C,CAAAA,CACL39C,EAAE29C,CAAAA,CAAchE,SAKN35C,GAAAA,EAAE29C,CAAAA,CAAcD,EAAaF,CAAAA,CACvC,OAED,OAAOE,EAAajjC,EAAQpT,KAAAA,CAAQoT,EAAQpT,KAAAA,CAAMrH,GAAKA,EACxD,CACD,CACD,CAAA,SG7HgBy7C,EACfG,CAAAA,CACAR,CAAAA,CACAC,CAAAA,CACAW,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAX,CAAAA,CACAD,CAAAA,CACAa,CAAAA,CACAX,CAAAA,EAAAA,IAGIoC,EAkBEp5C,EAAGulC,EAAO8T,EAAUC,EAAUC,EAAUC,EACxCC,EACEC,EAMFC,EACAC,EAyGOv9C,EA4BPw9C,EACHC,EASSz9C,EA6BNg7C,EA4COh7C,EAlPZ09C,EAAUnD,EAASt4C,IAAAA,CAIpB,GAAA,KRjDwB0f,IQiDpB44B,EAAS73C,WAAAA,CAA2B,OAAO,IR9DlB,CAAA,IQiEzB83C,EAAQ33C,GAAAA,EACXy4C,CAAAA,EAAAA,CAAAA,CRpE0B,CAAA,GQoETd,EAAQ33C,GAAAA,AAAAA,EAEzBw4C,EAAoB,CADpBZ,EAASF,EAAQ/3C,GAAAA,CAAQg4C,EAAQh4C,GAAAA,CAAAA,AAAAA,EAAAA,AAI7Bu6C,CAAAA,EAAMnjC,EAAOrX,GAAAA,AAAAA,GAASw6C,EAAIxC,GAE/BoD,EAAO,GAAsB,YAAA,OAAXD,EACjB,GAAA,CAkEC,GAhEIN,EAAW7C,EAASr4C,KAAAA,CAClBm7C,EACL,cAAeK,GAAWA,EAAQr2C,SAAAA,CAAUC,MAAAA,CAKzCg2C,EADJP,AAAAA,CAAAA,EAAMW,EAAQn2C,WAAAA,AAAAA,GACQ4zC,CAAAA,CAAc4B,EAAGt6C,GAAAA,CAAAA,CACnC86C,EAAmBR,EACpBO,EACCA,EAASp7C,KAAAA,CAAMsF,KAAAA,CACfu1C,EAAGz6C,EAAAA,CACJ64C,EAGCX,EAAQ/3C,GAAAA,CAEX06C,EAAAA,AADAx5C,CAAAA,EAAI42C,EAAQ93C,GAAAA,CAAc+3C,EAAQ/3C,GAAAA,AAAAA,EACNH,EAAAA,CAAwBqB,EAAC8D,GAAAA,CAGjD41C,CAAAA,EAEH9C,EAAQ93C,GAAAA,CAAckB,EAAI,IAAI+5C,EAAQN,EAAUG,GAGhDhD,CAAAA,EAAQ93C,GAAAA,CAAckB,EAAI,IAAIi2C,EAC7BwD,EACAG,GAED55C,EAAEjB,WAAAA,CAAcg7C,EAChB/5C,EAAE2D,MAAAA,CAASs2C,CAAAA,EAERN,GAAUA,EAAS31C,GAAAA,CAAIhE,GAE3BA,EAAEzB,KAAAA,CAAQk7C,EACLz5C,EAAEiE,KAAAA,EAAOjE,CAAAA,EAAEiE,KAAAA,CAAQ,CAAA,CAAA,EACxBjE,EAAER,OAAAA,CAAUo6C,EACZ55C,EAACK,GAAAA,CAAkBm3C,EACnBjS,EAAQvlC,EAACL,GAAAA,CAAAA,CAAU,EACnBK,EAACkE,GAAAA,CAAoB,EAAA,CACrBlE,EAACmE,GAAAA,CAAmB,EAAA,AAAA,EAIjBu1C,GAAoC,MAAhB15C,EAACoE,GAAAA,EACxBpE,CAAAA,EAACoE,GAAAA,CAAcpE,EAAEiE,KAAAA,AAAAA,EAGdy1C,GAAwD,MAApCK,EAAQ11C,wBAAAA,EAC3BrE,CAAAA,EAACoE,GAAAA,EAAepE,EAAEiE,KAAAA,EACrBjE,CAAAA,EAACoE,GAAAA,CAAcsC,EAAO,CAAE,EAAE1G,EAACoE,GAAAA,CAAAA,EAG5BsC,EACC1G,EAACoE,GAAAA,CACD21C,EAAQ11C,wBAAAA,CAAyBo1C,EAAUz5C,EAACoE,GAAAA,EAAAA,EAI9Ci1C,EAAWr5C,EAAEzB,KAAAA,CACb+6C,EAAWt5C,EAAEiE,KAAAA,CACbjE,EAAChB,GAAAA,CAAU43C,EAGPrR,EAEFmU,GACoC,MAApCK,EAAQ11C,wBAAAA,EACgB,MAAxBrE,EAAEsE,kBAAAA,EAEFtE,EAAEsE,kBAAAA,GAGCo1C,GAA2C,MAAvB15C,EAAEuE,iBAAAA,EACzBvE,EAACkE,GAAAA,CAAkBtE,IAAAA,CAAKI,EAAEuE,iBAAAA,MAErB,CAUN,GARCm1C,GACoC,MAApCK,EAAQ11C,wBAAAA,EACRo1C,IAAaJ,GACkB,MAA/Br5C,EAAEwE,yBAAAA,EAEFxE,EAAEwE,yBAAAA,CAA0Bi1C,EAAUG,GAAAA,CAIrC55C,EAACnB,GAAAA,EAC2B,CAAA,MAA3BmB,EAAEyE,qBAAAA,EAAAA,CAKG,IAJNzE,EAAEyE,qBAAAA,CACDg1C,EACAz5C,EAACoE,GAAAA,CACDw1C,IAEDhD,EAAQ53C,GAAAA,EAAc63C,EAAQ73C,GAAAA,AAAAA,EAC9B,CAkBD,IAhBI43C,EAAQ53C,GAAAA,EAAc63C,EAAQ73C,GAAAA,EAKjCgB,CAAAA,EAAEzB,KAAAA,CAAQk7C,EACVz5C,EAAEiE,KAAAA,CAAQjE,EAACoE,GAAAA,CACXpE,EAACL,GAAAA,CAAAA,CAAU,CAAA,EAGZi3C,EAAQ/3C,GAAAA,CAAQg4C,EAAQh4C,GAAAA,CACxB+3C,EAAQl4C,GAAAA,CAAam4C,EAAQn4C,GAAAA,CAC7Bk4C,EAAQl4C,GAAAA,CAAWgG,IAAAA,CAAK,SAAAvF,CAAAA,EACnBA,GAAOA,CAAAA,EAAKR,EAAAA,CAAWi4C,CAAAA,CAC5B,GAESv6C,EAAI,EAAGA,EAAI2D,EAACmE,GAAAA,CAAiBlG,MAAAA,CAAQ5B,IAC7C2D,EAACkE,GAAAA,CAAkBtE,IAAAA,CAAKI,EAACmE,GAAAA,CAAiB9H,EAAAA,CAE3C2D,CAAAA,EAACmE,GAAAA,CAAmB,EAAA,CAEhBnE,EAACkE,GAAAA,CAAkBjG,MAAAA,EACtB84C,EAAYn3C,IAAAA,CAAKI,GAGlB,MAAMg6C,CACP,CAE6B,MAAzBh6C,EAAE2E,mBAAAA,EACL3E,EAAE2E,mBAAAA,CAAoB80C,EAAUz5C,EAACoE,GAAAA,CAAaw1C,GAG3CF,GAA4C,MAAxB15C,EAAE4E,kBAAAA,EACzB5E,EAACkE,GAAAA,CAAkBtE,IAAAA,CAAK,WACvBI,EAAE4E,kBAAAA,CAAmBy0C,EAAUC,EAAUC,EAC1C,EAEF,CASA,GAPAv5C,EAAER,OAAAA,CAAUo6C,EACZ55C,EAAEzB,KAAAA,CAAQk7C,EACVz5C,EAACG,GAAAA,CAAci3C,EACfp3C,EAACnB,GAAAA,CAAAA,CAAU,EAEPg7C,EAAa5jC,EAAOnW,GAAAA,CACvBg6C,EAAQ,EACLJ,EAAkB,CAQrB,IAPA15C,EAAEiE,KAAAA,CAAQjE,EAACoE,GAAAA,CACXpE,EAACL,GAAAA,CAAAA,CAAU,EAEPk6C,GAAYA,EAAWjD,GAE3BwC,EAAMp5C,EAAE2D,MAAAA,CAAO3D,EAAEzB,KAAAA,CAAOyB,EAAEiE,KAAAA,CAAOjE,EAAER,OAAAA,EAE1BnD,EAAI,EAAGA,EAAI2D,EAACmE,GAAAA,CAAiBlG,MAAAA,CAAQ5B,IAC7C2D,EAACkE,GAAAA,CAAkBtE,IAAAA,CAAKI,EAACmE,GAAAA,CAAiB9H,EAAAA,CAE3C2D,CAAAA,EAACmE,GAAAA,CAAmB,EACrB,AAAA,MACC,GACCnE,EAACL,GAAAA,CAAAA,CAAU,EACPk6C,GAAYA,EAAWjD,GAE3BwC,EAAMp5C,EAAE2D,MAAAA,CAAO3D,EAAEzB,KAAAA,CAAOyB,EAAEiE,KAAAA,CAAOjE,EAAER,OAAAA,EAGnCQ,EAAEiE,KAAAA,CAAQjE,EAACoE,GAAAA,OACHpE,EAACL,GAAAA,EAAAA,EAAam6C,EAAQ,GAIhC95C,AAAAA,EAAEiE,KAAAA,CAAQjE,EAACoE,GAAAA,CAEc,MAArBpE,EAAE6E,eAAAA,EACL2yC,CAAAA,EAAgB9wC,EAAOA,EAAO,CAAA,EAAI8wC,GAAgBx3C,EAAE6E,eAAAA,GAAAA,EAGjD60C,GAAAA,CAAqBnU,GAAsC,MAA7BvlC,EAAE8E,uBAAAA,EACnCy0C,CAAAA,EAAWv5C,EAAE8E,uBAAAA,CAAwBu0C,EAAUC,EAAAA,EAOhDxC,EAASK,EACRC,EACA35C,EAJG45C,EADI,MAAP+B,GAAeA,EAAI96C,IAAAA,GAAS03C,GAAuB,MAAXoD,EAAI56C,GAAAA,CACL46C,EAAI76C,KAAAA,CAAML,QAAAA,CAAWk7C,GAIpC/B,EAAe,CAACA,EAAAA,CACxCT,EACAC,EACAW,EACAC,EACAC,EACAX,EACAD,EACAa,EACAX,GAGDh3C,EAAES,IAAAA,CAAOm2C,EAAQ/3C,GAAAA,CAGjB+3C,EAAQ13C,GAAAA,EAAAA,KAEJc,EAACkE,GAAAA,CAAkBjG,MAAAA,EACtB84C,EAAYn3C,IAAAA,CAAKI,GAGdw5C,GACHx5C,CAAAA,EAAC8D,GAAAA,CAAiB9D,EAACrB,EAAAA,CAAwB,IAAA,CA2B7C,CAzBE,MAAOnD,EAAAA,CAGR,GAFAo7C,EAAQ53C,GAAAA,CAAa,KAEjB24C,GAAoC,MAArBD,GAClB,GAAIl8C,EAAEuJ,IAAAA,CAAM,CAKX,IAJA6xC,EAAQ13C,GAAAA,EAAWy4C,EAChBuC,IRlSsB,IQqSlBpD,GAA6B,GAAnBA,EAAOh1C,QAAAA,EAAiBg1C,EAAOj1C,WAAAA,EAC/Ci1C,EAASA,EAAOj1C,WAAAA,AAGjB61C,CAAAA,CAAAA,CAAkBA,EAAkB1yC,OAAAA,CAAQ8xC,GAAAA,CAAW,KACvDF,EAAQ/3C,GAAAA,CAAQi4C,CACjB,MACC,IAASz6C,EAAIq7C,EAAkBz5C,MAAAA,CAAQ5B,KACtCo5C,EAAWiC,CAAAA,CAAkBr7C,EAAAA,OAI/Bu6C,EAAQ/3C,GAAAA,CAAQg4C,EAAQh4C,GAAAA,CACxB+3C,EAAQl4C,GAAAA,CAAam4C,EAAQn4C,GAAAA,CAE9BuX,EAAOpX,GAAAA,CAAarD,EAAGo7C,EAAUC,EAClC,MAEqB,MAArBa,GACAd,EAAQ53C,GAAAA,EAAc63C,EAAQ73C,GAAAA,CAE9B43C,CAAAA,EAAQl4C,GAAAA,CAAam4C,EAAQn4C,GAAAA,CAC7Bk4C,EAAQ/3C,GAAAA,CAAQg4C,EAAQh4C,GAAAA,AAAAA,EAExBi4C,EAASF,EAAQ/3C,GAAAA,CAAQs7C,AA4D3B,SACCtB,CAAAA,CACAjC,CAAAA,CACAC,CAAAA,CACAW,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAX,CAAAA,CACAY,CAAAA,CACAX,CAAAA,EATD,IAeK36C,EAEAi+C,EAEAC,EAEAC,EACA32C,EACA42C,EACAxY,EAbAoX,EAAWxC,EAASt4C,KAAAA,CACpBk7C,EAAW7C,EAASr4C,KAAAA,CACpBuD,EAAkC80C,EAASt4C,IAAAA,CAkB/C,GAJgB,OAAZwD,EAAmB21C,ER3YK,6BQ4YP,QAAZ31C,EAAoB21C,ER1YA,qCQ2YnBA,GAAWA,CAAAA,ER5YS,8BAAA,EQ8YL,MAArBC,EACH,CAAA,IAAKr7C,EAAI,EAAGA,EAAIq7C,EAAkBz5C,MAAAA,CAAQ5B,IAMzC,GALAwH,AAAAA,CAAAA,EAAQ6zC,CAAAA,CAAkBr7C,EAAAA,AAAAA,GAOzB,iBAAkBwH,GAAAA,CAAAA,CAAW/B,GAC5BA,CAAAA,EAAW+B,EAAMuB,SAAAA,EAAatD,EAA6B,GAAlB+B,EAAM/B,QAAAA,AAAAA,EAC/C,CACD+2C,EAAMh1C,EACN6zC,CAAAA,CAAkBr7C,EAAAA,CAAK,KACvB,KACD,CAAA,CAIF,GAAW,MAAPw8C,EAAa,CAChB,GAAgB,MAAZ/2C,EACH,OAAOuD,SAASC,cAAAA,CAAem0C,EAGhCZ,CAAAA,EAAMxzC,SAASE,eAAAA,CACdkyC,EACA31C,EACA23C,EAASj0C,EAAAA,EAAMi0C,GAKZ9B,GACC1hC,CAAAA,EAAOxQ,GAAAA,EACVwQ,EAAOxQ,GAAAA,CAAoBmxC,EAAUc,GACtCC,EAAAA,CAAc,CAAA,EAGfD,EAAoB,IACrB,CAEA,GAAiB,OAAb51C,EAECu3C,IAAaI,GAAc9B,GAAekB,EAAInzC,IAAAA,GAAS+zC,GAC1DZ,CAAAA,EAAInzC,IAAAA,CAAO+zC,CAAAA,MAEN,CASN,GAPA/B,EAAoBA,GAAqBn1C,EAAMpE,IAAAA,CAAK06C,EAAIlzC,UAAAA,EAExD0zC,EAAWxC,EAASt4C,KAAAA,EAAS+2C,EAAAA,CAKxBqC,GAAoC,MAArBD,EAEnB,IADA2B,EAAW,CAAA,EACNh9C,EAAI,EAAGA,EAAIw8C,EAAIjzC,UAAAA,CAAW3H,MAAAA,CAAQ5B,IAEtCg9C,CAAAA,CAAAA,AADAx1C,CAAAA,EAAQg1C,EAAIjzC,UAAAA,CAAWvJ,EAAAA,AAAAA,EACRwJ,IAAAA,CAAAA,CAAQhC,EAAMA,KAAAA,CAI/B,IAAKxH,KAAKg9C,EAET,GADAx1C,EAAQw1C,CAAAA,CAASh9C,EAAAA,CACR,YAALA,QACG,GAAS,2BAALA,EACVk+C,EAAU12C,OACA,GAAA,CAAExH,CAAAA,KAAKo9C,CAAAA,EAAW,CAC5B,GACO,SAALp9C,GAAgB,iBAAkBo9C,GAC7B,WAALp9C,GAAkB,mBAAoBo9C,EAEvC,SAEDz3C,EAAY62C,EAAKx8C,EAAG,KAAMwH,EAAO4zC,EAClC,CAKD,IAAKp7C,KAAKo9C,EACT51C,EAAQ41C,CAAAA,CAASp9C,EAAAA,CACR,YAALA,EACHm+C,EAAc32C,EACC,2BAALxH,EACVi+C,EAAUz2C,EACK,SAALxH,EACVo+C,EAAa52C,EACE,WAALxH,EACV4lC,EAAUp+B,EAER8zC,GAA+B,YAAA,OAAT9zC,GACxBw1C,CAAAA,CAASh9C,EAAAA,GAAOwH,GAEhB7B,EAAY62C,EAAKx8C,EAAGwH,EAAOw1C,CAAAA,CAASh9C,EAAAA,CAAIo7C,GAK1C,GAAI6C,EAGD3C,GACC4C,GACAD,CAAAA,EAAOx0C,MAAAA,GAAYy0C,EAAOz0C,MAAAA,EAC1Bw0C,EAAOx0C,MAAAA,GAAY+yC,EAAI9yC,SAAAA,AAAAA,GAEzB8yC,CAAAA,EAAI9yC,SAAAA,CAAYu0C,EAAOx0C,MAAAA,AAAAA,EAGxB8wC,EAAQl4C,GAAAA,CAAa,EAAA,MAqBrB,GAnBI67C,GAAS1B,CAAAA,EAAI9yC,SAAAA,CAAY,EAAA,EAE7BoxC,EACC0B,EACAp7C,EAAQ+8C,GAAeA,EAAc,CAACA,EAAAA,CACtC5D,EACAC,EACAW,EACY,iBAAZ11C,ERvgB2B,+BQugBqB21C,EAChDC,EACAX,EACAW,EACGA,CAAAA,CAAkB,EAAA,CAClBb,EAAQn4C,GAAAA,EAAcy3C,EAAcU,EAAU,GACjDc,EACAX,GAIwB,MAArBU,EACH,IAAKr7C,EAAIq7C,EAAkBz5C,MAAAA,CAAQ5B,KAClCo5C,EAAWiC,CAAAA,CAAkBr7C,EAAAA,CAM3Bs7C,CAAAA,GACJt7C,CAAAA,EAAI,QACY,YAAZyF,GAAwC,MAAd24C,EAC7B5B,EAAIn2C,eAAAA,CAAgB,SAAA,KR1hBCsb,IQ4hBrBy8B,GAKCA,IAAe5B,CAAAA,CAAIx8C,EAAAA,EACN,CAAA,YAAZyF,GAA2B24C,CAAAA,GAIf,CAAA,UAAZ34C,GAAwB24C,IAAepB,CAAAA,CAASh9C,EAAAA,AAAAA,GAElD2F,EAAY62C,EAAKx8C,EAAGo+C,EAAYpB,CAAAA,CAASh9C,EAAAA,CAAIo7C,GAG9Cp7C,EAAI,UAAA,KR3iBkB2hB,IQ4iBlBikB,GAAyBA,IAAY4W,CAAAA,CAAIx8C,EAAAA,EAC5C2F,EAAY62C,EAAKx8C,EAAG4lC,EAASoX,CAAAA,CAASh9C,EAAAA,CAAIo7C,EAAAA,CAG7C,CAEA,OAAOoB,CACR,EAlQGhC,EAAQh4C,GAAAA,CACR+3C,EACAC,EACAW,EACAC,EACAC,EACAX,EACAY,EACAX,GAMF,MAFKoC,AAAAA,CAAAA,EAAMnjC,EAAQjQ,MAAAA,AAAAA,GAASozC,EAAIxC,GR1UH,IQ4UtBA,EAAQ13C,GAAAA,CAAAA,KAA2B8e,EAAY84B,CACvD,CAOO,SAASI,EAAWH,CAAAA,CAAaqD,CAAAA,CAAMpD,CAAAA,EAC7C,IAAK,IAAI36C,EAAI,EAAGA,EAAI26C,EAAS/4C,MAAAA,CAAQ5B,IACpC67C,EAASlB,CAAAA,CAAS36C,EAAAA,CAAI26C,CAAAA,CAAAA,EAAW36C,EAAAA,CAAI26C,CAAAA,CAAAA,EAAW36C,EAAAA,CAG7C4Z,CAAAA,EAAOnX,GAAAA,EAAUmX,EAAOnX,GAAAA,CAASs7C,EAAMrD,GAE3CA,EAAYryC,IAAAA,CAAK,SAAA1E,CAAAA,EAChB,GAAA,CAEC+2C,EAAc/2C,EAACkE,GAAAA,CACflE,EAACkE,GAAAA,CAAoB,EAAA,CACrB6yC,EAAYryC,IAAAA,CAAK,SAAA21C,CAAAA,EAEhBA,EAAGl8C,IAAAA,CAAK6B,EACT,EAGD,CAFE,MAAOxE,EAAAA,CACRya,EAAOpX,GAAAA,CAAarD,EAAGwE,EAAChB,GAAAA,CACzB,CACD,EACD,CAgOO,SAASk5C,EAASz5C,CAAAA,CAAKoF,CAAAA,CAAO1E,CAAAA,EACpC,GAAA,CACC,GAAkB,YAAA,OAAPV,EAAmB,CAC7B,IAAIi8C,EAAuC,YAAA,OAAhBj8C,EAAGS,GAAAA,AAC1Bw7C,CAAAA,GAEHj8C,EAAGS,GAAAA,GAGCw7C,GAA0B,MAAT72C,GAIrBpF,CAAAA,EAAGS,GAAAA,CAAYT,EAAIoF,EAAAA,CAErB,MAAOpF,EAAIY,OAAAA,CAAUwE,CAGtB,CAFE,MAAOrI,EAAAA,CACRya,EAAOpX,GAAAA,CAAarD,EAAG2D,EACxB,CACD,CAmDA,SAAS86C,EAAS17C,CAAAA,CAAO0F,CAAAA,CAAOzE,CAAAA,EAC/B,OAAO02C,IAAAA,CAAKn3C,WAAAA,CAAYR,EAAOiB,EAChC,CPxnBa+C,EAAQgzC,EAAUhzC,KAAAA,CChBzB0T,EAAU,CACfpX,ISHe,SAAYyiB,CAAAA,CAAOniB,CAAAA,CAAO03C,CAAAA,CAAU0E,CAAAA,EAQnD,IANA,IAAI5E,EAEH6E,EAEAC,EAEOt8C,EAAQA,EAAKR,EAAAA,EACpB,GAAKg4C,AAAAA,CAAAA,EAAYx3C,EAAKL,GAAAA,AAAAA,GAAAA,CAAiB63C,EAASh4C,EAAAA,CAC/C,GAAA,CAcC,GAAA,AAbA68C,CAAAA,EAAO7E,EAAU53C,WAAAA,AAAAA,GAE4B,MAAjCy8C,EAAKv1C,wBAAAA,EAChB0wC,CAAAA,EAAUzwC,QAAAA,CAASs1C,EAAKv1C,wBAAAA,CAAyBqb,IACjDm6B,EAAU9E,EAASh3C,GAAAA,AAAAA,EAGe,MAA/Bg3C,EAAUxwC,iBAAAA,EACbwwC,CAAAA,EAAUxwC,iBAAAA,CAAkBmb,EAAOi6B,GAAa,CAAE,GAClDE,EAAU9E,EAASh3C,GAAAA,AAAAA,EAIhB87C,EACH,OAAQ9E,EAAS7yC,GAAAA,CAAiB6yC,CAIpC,CAFE,MAAOn7C,EAAAA,CACR8lB,EAAQ9lB,CACT,CAIF,MAAM8lB,CACP,CAAA,ERvCIszB,EAAU,ECuBdqB,EAAcvyC,SAAAA,CAAUwC,QAAAA,CAAW,SAAUkxB,CAAAA,CAAQe,CAAAA,EAEpD,IAAIx8B,CAEHA,CAAAA,EADsB,MAAnBu6C,IAAAA,CAAI9xC,GAAAA,EAAuB8xC,IAAAA,CAAI9xC,GAAAA,GAAgB8xC,IAAAA,CAAKjyC,KAAAA,CACnDiyC,IAAAA,CAAI9xC,GAAAA,CAEJ8xC,IAAAA,CAAI9xC,GAAAA,CAAcsC,EAAO,CAAE,EAAEwvC,IAAAA,CAAKjyC,KAAAA,EAGlB,YAAA,OAAVmzB,GAGVA,CAAAA,EAASA,EAAO1wB,EAAO,CAAA,EAAI/K,GAAIu6C,IAAAA,CAAK33C,KAAAA,CAAAA,EAGjC64B,GACH1wB,EAAO/K,EAAGy7B,GAIG,MAAVA,GAEA8e,IAAAA,CAAIl3C,GAAAA,EACHm5B,CAAAA,GACH+d,IAAAA,CAAI/xC,GAAAA,CAAiBvE,IAAAA,CAAKu4B,GAE3Bqe,EAAcN,IAAAA,CAAAA,CAEhB,EAQAD,EAAcvyC,SAAAA,CAAU0C,WAAAA,CAAc,SAAU+xB,CAAAA,EAC3C+d,IAAAA,CAAIl3C,GAAAA,EAIPk3C,CAAAA,IAAAA,CAAIr3C,GAAAA,CAAAA,CAAU,EACVs5B,GAAU+d,IAAAA,CAAIhyC,GAAAA,CAAkBtE,IAAAA,CAAKu4B,GACzCqe,EAAcN,IAAAA,CAAAA,CAEhB,EAYAD,EAAcvyC,SAAAA,CAAUC,MAAAA,CAASqyC,EA8F7BlB,EAAgB,EAAA,CAadE,EACa,YAAA,OAAX3uC,QACJA,QAAQ3C,SAAAA,CAAUqB,IAAAA,CAAKuB,IAAAA,CAAKD,QAAQE,OAAAA,IACpCC,WAuBEyuC,EAAY,SAACt0C,CAAAA,CAAGoC,CAAAA,EAAM,OAAApC,EAAC3B,GAAAA,CAAAJ,GAAAA,CAAiBmE,EAAC/D,GAAAA,CAAAJ,GAAc,AAAA,EAuB7D63C,EAAO32C,GAAAA,CAAkB,ECjOnBo1C,EAAgB,8BAalBC,EAAa,EAkJXC,EAAa6D,EAAAA,CAAiB,GAC9B5D,EAAoB4D,EAAAA,CAAiB,GC7KhC58C,EAAI,EMFf,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAE,CAAA,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAE,CAAA,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA,AAAA,EAAG,CAAC,CAAC,EAAE,EAAE,AAAC,CAAA,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,AAAC,CAAA,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA,CAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAG,CAAA,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAG,CAAA,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA,CAAA,EAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,I,E,C,E,E,E,Q,I,I,E,E,S,I,I,E,E,gB,I,I,E,E,U,I,I,E,E,U,I,I,E,E,a,I,I,E,E,mB,I,I,E,E,Q,I,I,E,E,Q,I,I,E,E,sB,I,I,E,E,iB,I,I,E,E,yB,I,I,E,E,O,I,I,E,E,W,I,I,E,E,O,I,I,E,E,O,I,I,E,E,O,I,ICctU,MAAM,EAAS,CAAC,EAAQ,KACtB,IAAK,IAAM,KAAO,EAChB,CAAM,CAAC,EAAI,CAAG,CAAU,CAAC,EAAI,CAE/B,OAAO,CACT,EAgBM,EAAU,UACV,EAAQ,QACR,EAAQ,QACR,EAAe,eACf,EAAe,eACf,EAAS,SACT,EAAQ,QAGR,GAAa,aAqBnB,SAAS,GAAY,CAAC,CAAE,CAAK,CAAE,CAAM,EAqBnC,IAAK,IAAM,KApBP,CAAK,CAAC,EAAQ,GAChB,CAAK,CAAC,EAAa,CAAG,CAAA,EACtB,CAAK,CAAC,EAAa,CAAG,CAAA,GAEpB,CAAK,CAAC,EAAM,GACd,CAAK,CAAC,EAAa,CAAG,CAAA,EACtB,CAAK,CAAC,EAAM,CAAG,CAAA,GAEb,CAAK,CAAC,EAAa,EACrB,CAAA,CAAK,CAAC,EAAa,CAAG,CAAA,CADxB,EAGI,CAAK,CAAC,EAAM,EACd,CAAA,CAAK,CAAC,EAAa,CAAG,CAAA,CADxB,EAGI,CAAK,CAAC,EAAa,EACrB,CAAA,CAAK,CAAC,EAAO,CAAG,CAAA,CADlB,EAGI,CAAK,CAAC,EAAM,EACd,CAAA,CAAK,CAAC,EAAO,CAAG,CAAA,CADlB,EAGgB,EAAO,CACrB,IAAM,GAAsB,KAAG,GAjC/B,CAAA,AAiC+B,CAjCzB,CAiCsB,EAjChB,CAAG,EAAE,AAAF,EAEV,AA+B0B,CA/BpB,CA+BiB,EA/BX,CAgCM,CAAA,EAAnB,EAAM,OAAO,CAAC,IAChB,EAAM,IAAI,CAAC,EAEf,CACF,CAoCA,SAAS,GAAM,EAAQ,IAAI,EAGzB,IAAI,CAAC,CAAC,CAAG,CAAC,EAGV,IAAI,CAAC,EAAE,CAAG,EAAE,CAEZ,IAAI,CAAC,EAAE,CAAG,KAEV,IAAI,CAAC,CAAC,CAAG,CACX,CAMA,GAAM,MAAM,CAAG,CAAC,EAChB,GAAM,SAAS,CAAG,CAChB,UACE,MAAO,CAAC,CAAC,IAAI,CAAC,CAAC,AACjB,EAOA,GAAG,CAAK,EAEN,IAAM,EAAY,AADJ,IAAI,CACM,CAAC,CAAC,EAAM,CAChC,GAAI,EACF,OAAO,EAET,IAAK,IAAI,EAAI,EAAG,EAAI,AALN,IAAI,CAKQ,EAAE,CAAC,MAAM,CAAE,IAAK,CACxC,IAAM,EAAQ,AANF,IAAI,CAMI,EAAE,CAAC,EAAE,CAAC,EAAE,CACtB,EAAY,AAPN,IAAI,CAOQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAChC,GAAI,GAAa,EAAM,IAAI,CAAC,GAC1B,OAAO,CAEX,CAEA,OAAO,AAbO,IAAI,CAaL,EAAE,AACjB,EAQA,IAAI,CAAK,CAAE,EAAY,CAAA,CAAK,EAC1B,OAAO,EAAY,KAAS,IAAI,CAAC,CAAC,CAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EACjD,EASA,GAAG,CAAM,CAAE,CAAI,CAAE,CAAK,CAAE,CAAM,EAC5B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,MAAM,CAAE,IACjC,IAAI,CAAC,EAAE,CAAC,CAAM,CAAC,EAAE,CAAE,EAAM,EAAO,EAEpC,EAUA,GAAG,CAAM,CAAE,CAAI,CAAE,CAAK,CAAE,CAAM,MAExB,EAWJ,OAZA,EAAS,GAAU,GAAM,MAAM,CAE3B,GAAQ,EAAK,CAAC,CAChB,EAAY,GAGZ,EAAY,IAAI,GAAM,GAClB,GAAS,GACX,GAAY,EAAM,EAAO,IAG7B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAQ,EAAU,EACzB,CACT,EAWA,GAAG,CAAK,CAAE,CAAI,CAAE,CAAK,CAAE,CAAM,EAC3B,IAAI,EAAQ,IAAI,CACV,EAAM,EAAM,MAAM,CACxB,GAAI,CAAC,EACH,OAAO,EAET,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,EAAG,IAC3B,EAAQ,EAAM,EAAE,CAAC,CAAK,CAAC,EAAE,EAE3B,OAAO,EAAM,EAAE,CAAC,CAAK,CAAC,EAAM,EAAE,CAAE,EAAM,EAAO,EAC/C,EA2BA,GAAG,CAAK,CAAE,CAAI,CAAE,CAAK,CAAE,CAAM,EAK3B,GAJA,EAAS,GAAU,GAAM,MAAM,CAI3B,GAAQ,EAAK,CAAC,CAEhB,OADA,AAJY,IAAI,CAIV,CAAC,CAAC,EAAM,CAAG,EACV,EAMT,IAAI,EACF,EAAgB,AAZJ,IAAI,CAYM,EAAE,CAAC,GAuB3B,OAtBI,GAEF,EAAO,AADP,CAAA,EAAY,IAAI,EAAhB,EACiB,CAAC,CAAE,EAAc,CAAC,EACnC,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAU,EAAE,CAAE,EAAc,EAAE,EACtD,EAAU,EAAE,CAAG,EAAc,EAAE,CAC/B,EAAU,CAAC,CAAG,EAAc,CAAC,EAE7B,EAAY,IAAI,GAbR,IAiBJ,IACE,EAAU,CAAC,EAAI,AAAuB,UAAvB,OAAO,EAAU,CAAC,CAEnC,GApBI,EAmBa,EAAO,AAlMlC,SAAuB,CAAC,CAAE,CAAM,EAC9B,IAAM,EAAS,CAAC,EAChB,IAAK,IAAM,KAAK,EACV,CAAM,CAAC,EAAE,CAAC,OAAO,CAAC,IAAM,GAC1B,CAAA,CAAM,CAAC,EAAE,CAAG,CAAA,CAFhB,EAKA,OAAO,CACT,EA0LgD,EAAU,CAAC,CAAE,GAAS,GACnC,GAChB,GACT,GAtBI,EAsBW,EAAO,IAG1B,EAAU,CAAC,CAzBH,GA2BV,AAlCc,IAAI,CAkCZ,CAAC,CAAC,EAAM,CAAG,EACV,CACT,CACF,EAWA,MAAM,GAAK,CAAC,EAAO,EAAO,EAAM,EAAO,IAAW,EAAM,EAAE,CAAC,EAAO,EAAM,EAAO,GAUzE,GAAK,CAAC,EAAO,EAAQ,EAAM,EAAO,IAAW,EAAM,EAAE,CAAC,EAAQ,EAAM,EAAO,GAU3E,GAAK,CAAC,EAAO,EAAO,EAAM,EAAO,IAAW,EAAM,EAAE,CAAC,EAAO,EAAM,EAAO,GAUzE,GAAK,CAAC,EAAO,EAAO,EAAM,EAAO,IAAW,EAAM,EAAE,CAAC,EAAO,EAAM,EAAO,GAQzE,GAAO,OACP,GAAQ,QACR,GAAiB,iBACjB,GAAiB,iBAGjB,GAAY,YAMZ,GAAO,OAKP,GAAS,SAKT,GAAe,eAcf,GAAY,YACZ,GAAa,aACb,GAAc,cACd,GAAe,eACf,GAAY,YACZ,GAAa,aACb,GAAmB,mBACnB,GAAoB,oBACpB,GAAqB,qBACrB,GAAsB,sBACtB,GAAoB,oBACpB,GAAqB,qBACrB,GAAyB,yBACzB,GAA0B,0BAC1B,GAAoB,oBACpB,GAAuB,uBAGvB,GAAY,YACZ,GAAa,aACb,GAAW,WAEX,GAAY,YACZ,GAAW,WACX,GAAQ,QACR,GAAQ,QACR,GAAQ,QACR,GAAS,SAET,GAAS,SACT,GAAc,cACd,GAAS,SACT,GAAU,UACV,GAAO,OACP,GAAO,OACP,GAAQ,QACR,GAAQ,QACR,GAAQ,QACR,GAAqB,qBAErB,GAAO,OACP,GAAQ,QACR,GAAQ,QACR,GAAa,aAGb,GAAU,QAKhB,IAAI,GAAkB,OAAO,MAAM,CAAC,CACnC,UAAW,KACX,KAAM,GACN,MAAO,GACP,eAAgB,GAChB,eAAgB,GAChB,UAAW,GACX,IArFW,MAsFX,KAAM,GACN,OAAQ,GACR,aAAc,GACd,IAzEW,MA0EX,GAvEU,KAwEV,GArEU,KAsEV,UAAW,GACX,WAAY,GACZ,YAAa,GACb,aAAc,GACd,UAAW,GACX,WAAY,GACZ,iBAAkB,GAClB,kBAAmB,GACnB,mBAAoB,GACpB,oBAAqB,GACrB,kBAAmB,GACnB,mBAAoB,GACpB,uBAAwB,GACxB,wBAAyB,GACzB,kBAAmB,GACnB,qBAAsB,GACtB,UAAW,GACX,WAAY,GACZ,SAAU,GACV,GA/DU,KAgEV,UAAW,GACX,SAAU,GACV,MAAO,GACP,MAAO,GACP,MAAO,GACP,OAAQ,GACR,IA/DW,MAgEX,OAAQ,GACR,YAAa,GACb,OAAQ,GACR,QAAS,GACT,KAAM,GACN,KAAM,GACN,MAAO,GACP,MAAO,GACP,MAAO,GACP,mBAAoB,GACpB,KAAM,GACN,MAAO,GACP,MAAO,GACP,WAAY,GACZ,MAAO,GACP,IA1DW,KA2DZ,GAGA,MAAM,GAAe,QACf,GAAS,SACT,GAAQ,aAER,GAAQ,KACR,GAAQ,KAEd,IAAI,GAAsB,OAAO,MAAM,CAAC,CACvC,UAAW,KACX,aAAc,GACd,OAAQ,GACR,MAAO,GACP,gBATyB,SAUzB,MAAO,GACP,MAAO,EACR,GAYA,IAAI,GAAO,KACT,GAAQ,KAqOV,SAAS,GAAM,CAAK,CAAE,CAAG,EAKvB,IAAM,EAAW,GAAc,EAAI,OAAO,CAAC,SAAU,AAAA,GAAK,EAAE,WAAW,KACjE,EAAY,EAAS,MAAM,CAC3B,EAAS,EAAE,CAIb,EAAS,EAGT,EAAa,EAGjB,KAAO,EAAa,GAAW,CAC7B,IAAI,EAAQ,EACR,EAAY,KACZ,EAAc,EACd,EAAkB,KAClB,EAAe,GACf,EAAoB,GACxB,KAAO,EAAa,GAAc,CAAA,EAAY,EAAM,EAAE,CAAC,CAAQ,CAAC,EAAW,CAAA,GAIrE,AAHJ,CAAA,EAAQ,CAAR,EAGU,OAAO,IACf,EAAe,EACf,EAAoB,EACpB,EAAkB,GACT,GAAgB,IACzB,GAAgB,CAAQ,CAAC,EAAW,CAAC,MAAM,CAC3C,KAEF,GAAe,CAAQ,CAAC,EAAW,CAAC,MAAM,CAC1C,GAAU,CAAQ,CAAC,EAAW,CAAC,MAAM,CACrC,IAIF,GAAU,EACV,GAAc,EACd,GAAe,EAGf,EAAO,IAAI,CAAC,CACV,EAAG,EAAgB,CAAC,CAEpB,EAAG,EAAI,KAAK,CAAC,EAAS,EAAa,GAEnC,EAAG,EAAS,EAEZ,EAAG,CACL,EACF,CACA,OAAO,CACT,CAaA,SAAS,GAAc,CAAG,EACxB,IAAM,EAAS,EAAE,CACX,EAAM,EAAI,MAAM,CAClB,EAAQ,EACZ,KAAO,EAAQ,GAAK,CAClB,IACI,EADA,EAAQ,EAAI,UAAU,CAAC,GAEvB,EAAO,EAAQ,OAAU,EAAQ,OAAU,EAAQ,IAAM,GAAQ,AAAA,CAAA,EAAS,EAAI,UAAU,CAAC,EAAQ,EAAA,EAAM,OAAU,EAAS,MAAS,CAAG,CAAC,EAAM,CAC/I,EAAI,KAAK,CAAC,EAAO,EAAQ,GAC3B,EAAO,IAAI,CAAC,GACZ,GAAS,EAAK,MAAM,AACtB,CACA,OAAO,CACT,CAWA,SAAS,GAAO,CAAK,CAAE,CAAK,CAAE,CAAC,CAAE,CAAQ,CAAE,CAAE,MACvC,EACJ,IAAM,EAAM,EAAM,MAAM,CACxB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,EAAG,IAAK,CAChC,IAAM,EAAO,CAAK,CAAC,EAAE,AACjB,CAAA,EAAM,CAAC,CAAC,EAAK,CACf,EAAO,EAAM,CAAC,CAAC,EAAK,EAGpB,AADA,CAAA,EAAO,IAAI,GAAM,EAAjB,EACK,EAAE,CAAG,EAAG,KAAK,GAClB,EAAM,CAAC,CAAC,EAAK,CAAG,GAElB,EAAQ,CACV,CAIA,MAFA,AADA,CAAA,EAAO,IAAI,GAAM,EAAjB,EACK,EAAE,CAAG,EAAG,KAAK,GAClB,EAAM,CAAC,CAAC,CAAK,CAAC,EAAM,EAAE,CAAC,CAAG,EACnB,CACT,CAQA,SAAS,GAAW,CAAO,EACzB,IAAM,EAAQ,EAAE,CACV,EAAQ,EAAE,CACZ,EAAI,EAER,KAAO,EAAI,EAAQ,MAAM,EAAE,CACzB,IAAI,EAAgB,EACpB,KAAO,AAHI,aAGG,OAAO,CAAC,CAAO,CAAC,EAAI,EAAc,GAAK,GACnD,IAEF,GAAI,EAAgB,EAAG,CACrB,EAAM,IAAI,CAAC,EAAM,IAAI,CAAC,KACtB,IAAK,IAAI,EAAW,SAAS,EAAQ,SAAS,CAAC,EAAG,EAAI,GAAgB,IAAK,EAAW,EAAG,IACvF,EAAM,GAAG,GAEX,GAAK,CACP,MACE,EAAM,IAAI,CAAC,CAAO,CAAC,EAAE,EACrB,GAEJ,CACA,OAAO,CACT,CAmFA,MAAM,GAAW,CACf,gBAAiB,OACjB,OAAQ,KACR,OAAQ,GACR,WAAY,GACZ,MAAO,CAAA,EACP,QAAS,IACT,OAAQ,KACR,IAAK,KACL,SAAU,CAAA,EACV,SAAU,IACV,UAAW,KACX,WAAY,KACZ,WAAY,EAAE,CACd,OAAQ,IACV,EAYA,SAAS,GAAQ,CAAI,CAAE,EAAgB,IAAI,EACzC,IAAI,EAAI,EAAO,CAAC,EAAG,IACf,GACF,CAAA,EAAI,EAAO,EAAG,aAAgB,GAAU,EAAK,CAAC,CAAG,EADnD,EAKA,IAAM,EAAc,EAAE,UAAU,CAC1B,EAAuB,EAAE,CAC/B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,MAAM,CAAE,IACtC,EAAqB,IAAI,CAAC,CAAW,CAAC,EAAE,CAAC,WAAW,GAGtD,CAAA,IAAI,CAAC,CAAC,CAAG,EACL,GACF,CAAA,IAAI,CAAC,aAAa,CAAG,CADvB,EAGA,IAAI,CAAC,UAAU,CAAG,CACpB,CA+EA,SAAS,GAAK,CAAG,EACf,OAAO,CACT,CAhFA,GAAQ,SAAS,CAAG,CAClB,EAAG,GAIH,WAAY,EAAE,CAKd,cAAA,AAAc,GACL,EAQT,MAAM,CAAK,EACT,OAAO,IAAI,CAAC,GAAG,CAAC,WAAY,EAAM,QAAQ,GAAI,EAChD,EAcA,IAAI,CAAG,CAAE,CAAQ,CAAE,CAAK,EACtB,IAAM,EAAa,AAAY,MAAZ,EACf,EAAS,IAAI,CAAC,CAAC,CAAC,EAAI,QACnB,IAGD,AAAkB,UAAlB,OAAO,EAEa,YAAlB,MADJ,CAAA,EAAS,EAAM,CAAC,IAAI,EAAS,CAAM,CAAC,EAAM,CAAC,CAAC,CAAG,EAAQ,CAAC,EAAI,AAAJ,GACpB,GAClC,CAAA,EAAS,EAAO,EAAU,EAD5B,EAG2B,YAAlB,OAAO,GAAyB,GACzC,CAAA,EAAS,EAAO,EAAU,EAAM,CAAC,CAAE,EADrC,GAPS,CAWX,EAQA,OAAO,CAAG,CAAE,CAAQ,CAAE,CAAK,EACzB,IAAI,EAAM,IAAI,CAAC,CAAC,CAAC,EAAI,CAIrB,MAHmB,YAAf,OAAO,GAAsB,AAAY,MAAZ,GAC/B,CAAA,EAAM,EAAI,EAAU,EAAM,CAAC,CAAE,EAD/B,EAGO,CACT,EAQA,OAAO,CAAK,EACV,IAAM,EAAK,EAAM,MAAM,CAAC,IAAI,EAE5B,MAAO,AADU,CAAA,IAAI,CAAC,GAAG,CAAC,SAAU,KAAM,IAAU,IAAI,CAAC,aAAa,AAAb,EACzC,EAAI,EAAM,CAAC,CAAE,EAC/B,CACF,EAKA,IAAI,GAAuB,OAAO,MAAM,CAAC,CACxC,UAAW,KACX,SAAU,GACV,QAAS,GACT,OAAQ,CACT,GAWA,SAAS,GAAW,CAAK,CAAE,CAAM,EAC/B,IAAI,CAAC,CAAC,CAAG,QACT,IAAI,CAAC,CAAC,CAAG,EACT,IAAI,CAAC,EAAE,CAAG,CACZ,CAuJA,SAAS,GAAiB,CAAI,CAAE,CAAK,EACnC,MAAM,UAAc,GAClB,YAAY,CAAK,CAAE,CAAM,CAAE,CACzB,KAAK,CAAC,EAAO,GACb,IAAI,CAAC,CAAC,CAAG,CACX,CACF,CACA,IAAK,IAAM,KAAK,EACd,EAAM,SAAS,CAAC,EAAE,CAAG,CAAK,CAAC,EAAE,CAG/B,OADA,EAAM,CAAC,CAAG,EACH,CACT,CApJA,GAAW,SAAS,CAAG,CACrB,OAAQ,CAAA,EAKR,WACE,OAAO,IAAI,CAAC,CAAC,AACf,EAOA,OAAO,CAAM,EACX,OAAO,IAAI,CAAC,QAAQ,EACtB,EAKA,kBAAkB,CAAO,EACvB,IAAM,EAAM,IAAI,CAAC,QAAQ,GACnB,EAAW,EAAQ,GAAG,CAAC,WAAY,EAAK,IAAI,EAC5C,EAAY,EAAQ,GAAG,CAAC,SAAU,EAAK,IAAI,EACjD,OAAO,GAAY,EAAU,MAAM,CAAG,EAAW,EAAU,SAAS,CAAC,EAAG,GAAY,IAAM,CAC5F,EAMA,gBAAgB,CAAO,EACrB,OAAO,EAAQ,GAAG,CAAC,aAAc,IAAI,CAAC,MAAM,CAAC,EAAQ,GAAG,CAAC,oBAAqB,IAAI,CACpF,EAKA,aACE,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,AACrB,EAMA,WACE,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAG,EAAE,CAAC,CAAC,AACtC,EAUA,SAAS,EAAW,GAAS,eAAe,EAC1C,MAAO,CACL,KAAM,IAAI,CAAC,CAAC,CACZ,MAAO,IAAI,CAAC,QAAQ,GACpB,OAAQ,IAAI,CAAC,MAAM,CACnB,KAAM,IAAI,CAAC,MAAM,CAAC,GAClB,MAAO,IAAI,CAAC,UAAU,GACtB,IAAK,IAAI,CAAC,QAAQ,EACpB,CACF,EAKA,kBAAkB,CAAO,EACvB,MAAO,CACL,KAAM,IAAI,CAAC,CAAC,CACZ,MAAO,IAAI,CAAC,iBAAiB,CAAC,GAC9B,OAAQ,IAAI,CAAC,MAAM,CACnB,KAAM,IAAI,CAAC,eAAe,CAAC,GAC3B,MAAO,IAAI,CAAC,UAAU,GACtB,IAAK,IAAI,CAAC,QAAQ,EACpB,CACF,EAMA,SAAS,CAAO,EACd,OAAO,EAAQ,GAAG,CAAC,WAAY,IAAI,CAAC,QAAQ,GAAI,IAAI,CACtD,EAKA,OAAO,CAAO,EAEZ,IAAM,EAAO,IAAI,CAAC,MAAM,CAAC,EAAQ,GAAG,CAAC,oBAC/B,EAAgB,EAAQ,GAAG,CAAC,aAAc,EAAM,IAAI,EACpD,EAAU,EAAQ,GAAG,CAAC,UAAW,EAHzB,IAAI,EAIZ,EAAU,IAAI,CAAC,iBAAiB,CAAC,GACjC,EAAa,CAAC,EACd,EAAY,EAAQ,GAAG,CAAC,YAAa,EAN7B,IAAI,EAOZ,EAAS,EAAQ,GAAG,CAAC,SAAU,EAPvB,IAAI,EAQZ,EAAM,EAAQ,GAAG,CAAC,MAAO,EARjB,IAAI,EASZ,EAAQ,EAAQ,MAAM,CAAC,aAAc,EAT7B,IAAI,EAUZ,EAAiB,EAAQ,MAAM,CAAC,SAAU,EAVlC,IAAI,EAwBlB,OAbA,EAAW,IAAI,CAAG,EACd,GACF,CAAA,EAAW,KAAK,CAAG,CADrB,EAGI,GACF,CAAA,EAAW,MAAM,CAAG,CADtB,EAGI,GACF,CAAA,EAAW,GAAG,CAAG,CADnB,EAGI,GACF,EAAO,EAAY,GAEd,CACL,QAAA,EACA,WAAA,EACA,QAAA,EACA,eAAA,CACF,CACF,CACF,EAyBA,MAAM,GAAQ,GAAiB,QAAS,CACtC,OAAQ,CAAA,EACR,SACE,MAAO,UAAY,IAAI,CAAC,QAAQ,EAClC,CACF,GAKM,GAAO,GAAiB,QAMxB,GAAK,GAAiB,MAMtB,GAAM,GAAiB,MAAO,CAClC,OAAQ,CAAA,EAQR,OAAO,EAAS,GAAS,eAAe,EAEtC,OAAO,IAAI,CAAC,WAAW,GAAK,IAAI,CAAC,CAAC,CAAG,CAAA,EAAG,EAAO,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA,CAAE,AAC9D,EAKA,cACE,IAAM,EAAS,IAAI,CAAC,EAAE,CACtB,OAAO,EAAO,MAAM,EAAI,GAAK,CAAM,CAAC,EAAE,CAAC,CAAC,GAAK,IAAa,CAAM,CAAC,EAAE,CAAC,CAAC,GAAK,EAC5E,CACF,GAEA,IAAI,GAAqB,OAAO,MAAM,CAAC,CACtC,UAAW,KACX,WAAY,GACZ,KAAM,GACN,iBAAkB,GAClB,MAAO,GACP,KAAM,GACN,GAAI,GACJ,IAAK,EACN,GAgBA,MAAM,GAAY,AAAA,GAAO,IAAI,GAAM,GA4QnC,SAAS,GAAe,CAAK,CAAE,CAAK,CAAE,CAAM,EAC1C,IAAM,EAAW,CAAM,CAAC,EAAE,CAAC,CAAC,CACtB,EAAS,CAAM,CAAC,EAAO,MAAM,CAAG,EAAE,CAAC,CAAC,CAE1C,OAAO,IAAI,EADG,EAAM,KAAK,CAAC,EAAU,GACZ,EAC1B,CAEA,MAAM,GAAO,AAAmB,aAAnB,OAAO,SAA2B,SAAW,QAAQ,IAAI,EAAK,CAAA,KAAO,CAAA,EAC5E,GAAa,gHAGb,GAAO,CACX,QAAS,KACT,OAAQ,KACR,WAAY,EAAE,CACd,YAAa,EAAE,CACf,cAAe,EAAE,CACjB,YAAa,CAAA,CACf,EA6BA,SAAS,KAQP,OAPA,GAAM,MAAM,CAAG,CAAC,EAChB,GAAK,OAAO,CAAG,KACf,GAAK,MAAM,CAAG,KACd,GAAK,UAAU,CAAG,EAAE,CACpB,GAAK,WAAW,CAAG,EAAE,CACrB,GAAK,aAAa,CAAG,EAAE,CACvB,GAAK,WAAW,CAAG,CAAA,EACZ,EACT,CAUA,SAAS,GAAoB,CAAI,CAAE,CAAM,EACvC,GAAI,AAAkB,YAAlB,OAAO,EACT,MAAM,AAAI,MAAM,CAAC,gCAAgC,EAAE,EAAO,mBAAmB,CAAC,EAEhF,IAAK,IAAI,EAAI,EAAG,EAAI,GAAK,UAAU,CAAC,MAAM,CAAE,IAC1C,GAAI,IAAS,GAAK,UAAU,CAAC,EAAE,CAAC,EAAE,CAAE,CAClC,GAAK,CAAC,yBAAyB,EAAE,EAAK,0CAA0C,CAAC,EACjF,GAAK,UAAU,CAAC,EAAE,CAAG,CAAC,EAAM,EAAO,CACnC,MACF,CAEF,GAAK,UAAU,CAAC,IAAI,CAAC,CAAC,EAAM,EAAO,EAC/B,GAAK,WAAW,EAClB,GAAK,CAAC,iEAAiE,EAAE,EAAK,EAAE,EAAE,GAAA,CAAY,CAElG,CAQA,SAAS,GAAe,CAAI,CAAE,CAAM,EAClC,GAAI,AAAkB,YAAlB,OAAO,EACT,MAAM,AAAI,MAAM,CAAC,0BAA0B,EAAE,EAAO,mBAAmB,CAAC,EAE1E,IAAK,IAAI,EAAI,EAAG,EAAI,GAAK,WAAW,CAAC,MAAM,CAAE,IAC3C,GAAI,IAAS,GAAK,WAAW,CAAC,EAAE,CAAC,EAAE,CAAE,CACnC,GAAK,CAAC,mBAAmB,EAAE,EAAK,0CAA0C,CAAC,EAC3E,GAAK,WAAW,CAAC,EAAE,CAAG,CAAC,EAAM,EAAO,CACpC,MACF,CAEF,GAAK,WAAW,CAAC,IAAI,CAAC,CAAC,EAAM,EAAO,EAChC,GAAK,WAAW,EAClB,GAAK,CAAC,2DAA2D,EAAE,EAAK,EAAE,EAAE,GAAA,CAAY,CAE5F,CASA,SAAS,GAAuB,CAAM,CAAE,EAAqB,CAAA,CAAK,EAIhE,GAHI,GAAK,WAAW,EAClB,GAAK,CAAC,kEAAkE,EAAE,EAAO,EAAE,EAAE,GAAA,CAAY,EAE/F,CAAC,2BAA2B,IAAI,CAAC,GACnC,MAAM,AAAI,MAAM,CAAC;A;A;AAGD,oBAAA,CAAC,EAEnB,GAAK,aAAa,CAAC,IAAI,CAAC,CAAC,EAAQ,EAAmB,CACtD,CAMA,SAAS,KAEP,GAAK,OAAO,CAAG,AAlsCjB,SAAgB,EAAgB,EAAE,EAGhC,IAAM,EAAS,CAAC,CAChB,CAAA,GAAM,MAAM,CAAG,EAEf,IAAM,EAAQ,IAAI,EACN,OAAR,IACF,CAAA,GAAO,GA7iBS,uzJA4iBlB,EAGa,MAAT,IACF,CAAA,GAAQ,GA9iBS,omBA6iBnB,EAKA,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IA/KD,MAgLT,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IA9KA,OA+KV,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,IAAK,IACf,GAAG,EAAO,KAAM,IAChB,GAAG,EAAO,IAAK,IACf,IAAM,EAAM,GAAG,EAAO,GArOZ,MAqOwB,CAChC,CAAC,EAAQ,CAAE,CAAA,CACb,GACA,GAAG,EAAK,GAAO,GACf,IAAM,EAAe,GAAG,EAAK,GAAc,GAAgB,CACzD,CAAC,EAAa,CAAE,CAAA,CAClB,GACM,EAAe,GAAG,EAAK,GAAQ,GAAgB,CACnD,CAAC,EAAa,CAAE,CAAA,CAClB,GAGM,EAAO,GAAG,EAAO,GAAc,GAAM,CACzC,CAAC,EAAM,CAAE,CAAA,CACX,GACA,GAAG,EAAM,GAAO,GAChB,GAAG,EAAM,GAAc,GACvB,GAAG,EAAc,GAAO,GACxB,GAAG,EAAc,GAAc,GAG/B,IAAM,EAAQ,GAAG,EAAO,GAAQ,GAAO,CACrC,CAAC,EAAM,CAAE,CAAA,CACX,GACA,GAAG,EAAO,IACV,GAAG,EAAO,GAAO,GACjB,GAAG,EAAO,GAAQ,GAClB,GAAG,EAAc,GAAO,GACxB,GAAG,EAAc,IACjB,GAAG,EAAc,GAAQ,GAKzB,IAAM,EAAK,GAAG,EAvHL,KA1IA,KAiQoB,CAC3B,CAAC,GAAW,CAAE,CAAA,CAChB,GACM,EAAK,GAAG,EA3HL,KA5IA,KAuQoB,CAC3B,CAAC,GAAW,CAAE,CAAA,CAChB,GACM,EAAK,GAAG,EAAO,GA1QZ,KA0QuB,CAC9B,CAAC,GAAW,CAAE,CAAA,CAChB,GACA,GAAG,EA7HsB,IA6HK,GAC9B,GAAG,EAjIM,KAiIE,GACX,GAAG,EA/HsB,IA+HE,GAC3B,GAAG,EAAI,GAAO,GACd,GAAG,EArIM,MAsIT,GAAG,EArIM,MAsIT,GAAG,EAAI,GAAO,GACd,GAAG,EApIsB,IAoIE,GAI3B,IAAM,EAAQ,GAAG,EAAO,GAAO,GAAS,CACtC,CAAC,EAAM,CAAE,CAAA,CACX,GACA,GAAG,EAAO,KACV,GAAG,EAAO,GAAO,GACjB,GAAG,EA/ImB,IA+IK,GAG3B,IAAM,EAAc,GAAG,EAjJJ,KAkJnB,GAAG,EAAa,KAChB,GAAG,EAAa,GAAO,GAKvB,IAAM,EAAS,CAAC,CAAC,GAAc,EAAK,CAAE,CAAC,GAAO,EAAa,CAAC,CACtD,EAAU,CAAC,CAAC,GAAc,KAAK,CAAE,CAAC,GAAQ,EAAM,CAAE,CAAC,GAAO,EAAa,CAAC,CAC9E,IAAK,IAAI,EAAI,EAAG,EAAI,GAAK,MAAM,CAAE,IAC/B,GAAO,EAAO,EAAI,CAAC,EAAE,CA7Tb,MA6ToB,GAAM,GAEpC,IAAK,IAAI,EAAI,EAAG,EAAI,GAAM,MAAM,CAAE,IAChC,GAAO,EAAO,EAAK,CAAC,EAAE,CAAE,GAAM,GAAO,GAEvC,GAlUU,MAkUO,CACf,IAAK,CAAA,EACL,MAAO,CAAA,CACT,EAAG,GACH,GAAY,GAAM,CAChB,KAAM,CAAA,EACN,MAAO,CAAA,CACT,EAAG,GAKH,GAAO,EAAO,OAAQ,GAAQ,GAAM,GACpC,GAAO,EAAO,SAAU,GAAQ,GAAM,GACtC,GAAO,EAAO,OAAQ,GAAc,GAAM,GAC1C,GAAO,EAAO,QAAS,GAAc,GAAM,GAC3C,GAAO,EAAO,MAAO,GAAc,GAAM,GACzC,GAAO,EAAO,OAAQ,GAAc,GAAM,GAC1C,GAAY,GAAQ,CAClB,OAAQ,CAAA,EACR,MAAO,CAAA,CACT,EAAG,GACH,GAAY,GAAc,CACxB,YAAa,CAAA,EACb,MAAO,CAAA,CACT,EAAG,GAGH,EAAgB,EAAc,IAAI,CAAC,CAAC,EAAG,IAAM,CAAC,CAAC,EAAE,CAAG,CAAC,CAAC,EAAE,CAAG,EAAI,IAC/D,IAAK,IAAI,EAAI,EAAG,EAAI,EAAc,MAAM,CAAE,IAAK,CAC7C,IAAM,EAAM,CAAa,CAAC,EAAE,CAAC,EAAE,CAEzB,EAAQ,AADa,CAAa,CAAC,EAAE,CAAC,EAAE,CACX,CAnqBxB,OAoqBC,CAAA,CACZ,EAAI,CApqBY,YAqqBC,CAAA,CACjB,CACI,CAAA,EAAI,OAAO,CAAC,MAAQ,EACtB,CAAK,CAAC,EAAO,CAAG,CAAA,EACN,GAAa,IAAI,CAAC,GAEnB,GAAM,IAAI,CAAC,GACpB,CAAK,CAAC,EAAa,CAAG,CAAA,EAEtB,CAAK,CAAC,EAAM,CAAG,CAAA,EAJf,CAAK,CAAC,EAAQ,CAAG,CAAA,EAMnB,GAAG,EAAO,EAAK,EAAK,EACtB,CASA,OANA,GAAG,EAAO,YAAa,GAAW,CAChC,MAAO,CAAA,CACT,GAGA,EAAM,EAAE,CAAG,IAAI,GA7SL,OA8SH,CACL,MAAO,EACP,OAAQ,EAAO,CACb,OAAA,CACF,EAAG,GACL,CACF,EA+/BwB,GAAK,aAAa,EACxC,IAAK,IAAI,EAAI,EAAG,EAAI,GAAK,UAAU,CAAC,MAAM,CAAE,IAC1C,GAAK,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,CACpB,QAAS,GAAK,OAAO,AACvB,EAIF,CAAA,GAAK,MAAM,CAAG,AAlZhB,SAAgB,CAAA,OACd,CAAM,CACP,EAEC,IAAM,EAAc,EAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAW,GAz8B5C,KAy8B0D,GAAW,GAAU,GAAO,GAAQ,GAAQ,GAz+BrG,MAy+BkH,GAAS,GAAM,GAAM,GAAO,GA76B9I,MA66B0J,GAAO,GAAW,EAKhL,EAAiB,CAAC,GAAO,GAv8BrB,MAu8BiC,GAAa,GAAS,GAAO,GAAO,GAAM,GAAkB,GAAmB,GAAW,GAAY,GAAc,GAAa,GAAW,GAAY,GAAoB,GAAqB,GAAmB,GAAoB,GAAwB,GAAyB,GAAmB,GAAqB,CAItW,EAAqB,CAAC,GAAW,GAAY,GAAU,GAAW,GAAU,GAAO,GAAQ,GAAQ,GAAQ,GAAW,GAAY,GAAS,GAAM,GAAM,GAAO,GAAO,GAt7BjK,MAs7B6K,GAAO,GAAW,CAMnM,EAAQ,KACR,EAAY,GAAG,EAAO,IAC5B,GAAG,EAAW,EAAoB,GAClC,GAAG,EAAW,EAAO,MAAM,CAAE,GAC7B,IAAM,EAAS,KACb,EAAS,KACT,EAAc,KAChB,GAAG,EAAO,EAAO,MAAM,CAAE,GACzB,GAAG,EAAO,EAAO,MAAM,CAAE,GACzB,GAAG,EAAO,EAAO,WAAW,CAAE,GAE9B,GAAG,EAAQ,EAAoB,GAC/B,GAAG,EAAQ,EAAO,MAAM,CAAE,GAC1B,IAAM,EAAc,GAAG,EAr+Bd,MAu+BT,GAAG,EAv+BM,KAu+BS,GAGlB,GAAG,EA1+BM,KA0+BM,GACf,GAAG,EA3+BM,KA2+BW,GACpB,IAAM,EAAe,GAAG,EAr+Bd,OAs+BV,GAAG,EAAc,EAAoB,GACrC,GAAG,EAAc,EAAO,MAAM,CAAE,GAChC,IAAM,EAAc,KACpB,GAAG,EAAa,EAAO,MAAM,CAAE,GAC/B,GAAG,EAAa,EAAO,MAAM,CAAE,GAC/B,IAAM,EAAiB,GAAG,EA3+BhB,OA4+BV,GAAG,EAAgB,EAAO,MAAM,CAAE,GAClC,IAAM,EAAU,GAAU,IAC1B,GAAG,EAAgB,EAAO,GAAG,CAAE,GAC/B,GAAG,EAAgB,EAAO,IAAI,CAAE,GAChC,GAAG,EAAa,GAAW,GAG3B,IAAM,EAAoB,GAAG,EAAa,IAC1C,GAAG,EAAmB,GAAQ,GAC9B,GAAG,EAAmB,EAAO,MAAM,CAAE,GACrC,GAAG,EAAS,EAAO,MAAM,CAAE,GAC3B,GAAG,EAv/BO,MAu/BO,GACjB,GAAG,EAAS,GAAQ,GAKpB,GAFmB,GAAG,EAAS,IAEhB,EAAO,OAAO,CAAE,IAI/B,IAAM,EAAe,GAAG,EAAQ,IAC1B,EAAY,GAAG,EAlgCX,OAmgCV,GAAG,EAAc,GAAQ,GACzB,GAAG,EAAc,EAAO,MAAM,CAAE,GAChC,GAAG,EAAW,EAAoB,GAClC,GAAG,EAAW,EAAO,MAAM,CAAE,GAC7B,IAAM,EAAe,GAAU,IAC/B,GAAG,EAAW,EAAO,GAAG,CAAE,GAC1B,GAAG,EAAW,EAAO,IAAI,CAAE,GAC3B,GAAG,EAAc,EAAO,MAAM,CAAE,GAChC,GAAG,EAAc,EAAoB,GACrC,GAAG,EA5gCO,MA4gCY,GACtB,GAAG,EAAc,GAAQ,GACzB,GAAG,EArhCM,KAqhCY,GACrB,IAAM,EAAoB,GAAG,EAAc,IACrC,EAAwB,GAAU,IACxC,GAAG,EAAmB,EAAO,OAAO,CAAE,GAGtC,IAAM,EAAQ,GAAU,IAGlB,EAAe,KAGrB,GAAG,EAAO,EAAa,GACvB,GAAG,EAAO,EAAgB,GAC1B,GAAG,EAAc,EAAa,GAC9B,GAAG,EAAc,EAAgB,GAIjC,GAAG,EAAc,GAAO,GACxB,GAAG,EAAuB,GAAO,GAGjC,IAAM,EAAc,GAAG,EAAQ,IACzB,EAAmB,GAAG,EAAa,IACnC,EAAwB,GAAG,EAAkB,IAE7C,EAAY,GAAG,EAAuB,IAG5C,GAAG,EAAQ,EAAO,MAAM,CAAE,GAC1B,GAAG,EA7iCO,MA6iCM,GAChB,GAAG,EAAQ,GAAQ,GACnB,GAAG,EAAa,EAAO,MAAM,CAAE,GAC/B,GAAG,EAhjCO,MAgjCW,GACrB,GAAG,EAAa,GAAQ,GAGxB,GAAG,EAAa,EAAO,MAAM,CAAE,GAC/B,GAAG,EAAa,GAAO,GACvB,GAAG,EAAa,GAAO,GACvB,GAAG,EAAW,EAAO,MAAM,CAAE,GAC7B,GAAG,EAAW,EAAa,GAC3B,GAAG,EAAW,GAAO,GACrB,IAAM,EAAe,CAAC,CAAC,GAAW,GAAW,CAE7C,CAAC,GAAa,GAAa,CAE3B,CAAC,GAAW,GAAW,CAEvB,CAAC,GAAkB,GAAkB,CAErC,CAAC,GAAoB,GAAoB,CAEzC,CAAC,GAAmB,GAAmB,CAEvC,CAAC,GAAwB,GAAwB,CAEjD,CAAC,GAAmB,GAAqB,CACxC,CACD,IAAK,IAAI,EAAI,EAAG,EAAI,EAAa,MAAM,CAAE,IAAK,CAC5C,GAAM,CAAC,EAAM,EAAM,CAAG,CAAY,CAAC,EAAE,CAC/B,EAAU,GAAG,EAAO,GAG1B,GAAG,EAAc,EAAM,GAGvB,GAAG,EAAS,EAAO,GAKnB,IAAM,EAAW,GAAU,IAC3B,GAAG,EAAS,EAAa,GACzB,IAAM,EAAc,KACpB,GAAG,EAAS,GAGZ,GAAG,EAAU,EAAa,GAC1B,GAAG,EAAU,EAAgB,GAC7B,GAAG,EAAa,EAAa,GAC7B,GAAG,EAAa,EAAgB,GAGhC,GAAG,EAAU,EAAO,GACpB,GAAG,EAAa,EAAO,EACzB,CAIA,OAHA,GAAG,EAAO,GAAW,GACrB,GAAG,EAxoCM,KAwoCK,IAEP,CACL,MAAO,EACP,OAAQ,EACV,CACF,EAmOuB,GAAK,OAAO,CAAC,MAAM,EACxC,IAAK,IAAI,EAAI,EAAG,EAAI,GAAK,WAAW,CAAC,MAAM,CAAE,IAC3C,GAAK,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CACrB,QAAS,GAAK,OAAO,CACrB,OAAQ,GAAK,MAAM,AACrB,GAGF,OADA,GAAK,WAAW,CAAG,CAAA,EACZ,EACT,CAOA,SAAS,GAAS,CAAG,EAInB,OAHK,GAAK,WAAW,EACnB,KAEK,AA3OT,SAAa,CAAK,CAAE,CAAK,CAAE,CAAM,EAC/B,IAAI,EAAM,EAAO,MAAM,CACnB,EAAS,EACT,EAAS,EAAE,CACX,EAAa,EAAE,CACnB,KAAO,EAAS,GAAK,CACnB,IAAI,EAAQ,EACR,EAAc,KACd,EAAY,KACZ,EAAc,EACd,EAAkB,KAClB,EAAe,GACnB,KAAO,EAAS,GAAO,CAAE,CAAA,EAAc,EAAM,EAAE,CAAC,CAAM,CAAC,EAAO,CAAC,CAAC,CAAA,GAG9D,EAAW,IAAI,CAAC,CAAM,CAAC,IAAS,EAElC,KAAO,EAAS,GAAQ,CAAA,EAAY,GAAe,EAAM,EAAE,CAAC,CAAM,CAAC,EAAO,CAAC,CAAC,CAAA,GAE1E,EAAc,KAIV,AAHJ,CAAA,EAAQ,CAAR,EAGU,OAAO,IACf,EAAe,EACf,EAAkB,GACT,GAAgB,GACzB,IAEF,IACA,IAEF,GAAI,EAAe,EAIjB,CAAA,GAAU,CAAV,EACa,IACX,EAAW,IAAI,CAAC,CAAM,CAAC,EAAO,EAC9B,SAEG,CAGD,EAAW,MAAM,CAAG,IACtB,EAAO,IAAI,CAAC,GAAe,GAAM,EAAO,IACxC,EAAa,EAAE,EAIjB,GAAU,EACV,GAAe,EAGf,IAAM,EAAQ,EAAgB,CAAC,CACzB,EAAY,EAAO,KAAK,CAAC,EAAS,EAAa,GACrD,EAAO,IAAI,CAAC,GAAe,EAAO,EAAO,GAC3C,CACF,CAMA,OAHI,EAAW,MAAM,CAAG,GACtB,EAAO,IAAI,CAAC,GAAe,GAAM,EAAO,IAEnC,CACT,EA0Ka,GAAK,MAAM,CAAC,KAAK,CAAE,EAAK,GAAM,GAAK,OAAO,CAAC,KAAK,CAAE,GAC/D,CAWA,SAAS,GAAK,CAAG,CAAE,EAAO,IAAI,CAAE,EAAO,IAAI,EACzC,GAAI,GAAQ,AAAgB,UAAhB,OAAO,EAAmB,CACpC,GAAI,EACF,MAAM,MAAM,CAAC,6BAA6B,EAAE,EAAK,kBAAkB,CAAC,EAEtE,EAAO,EACP,EAAO,IACT,CACA,IAAM,EAAU,IAAI,GAAQ,GACtB,EAAS,GAAS,GAClB,EAAW,EAAE,CACnB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,MAAM,CAAE,IAAK,CACtC,IAAM,EAAQ,CAAM,CAAC,EAAE,AACnB,CAAA,EAAM,MAAM,EAAK,CAAA,CAAC,GAAQ,EAAM,CAAC,GAAK,CAAA,GAAS,EAAQ,KAAK,CAAC,IAC/D,EAAS,IAAI,CAAC,EAAM,iBAAiB,CAAC,GAE1C,CACA,OAAO,CACT,CAkBA,SAAS,GAAK,CAAG,CAAE,EAAO,IAAI,EAC5B,IAAM,EAAS,GAAS,GACxB,OAAO,AAAkB,IAAlB,EAAO,MAAM,EAAU,CAAM,CAAC,EAAE,CAAC,MAAM,EAAK,CAAA,CAAC,GAAQ,CAAM,CAAC,EAAE,CAAC,CAAC,GAAK,CAAA,CAC9E,CAjDA,GAAS,IAAI,CAAG,GfpwDT,MAAM,GAAO,AAAA,CAAA,ScJ8U,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,GAAI,CAAA,EAAE,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAA,EAAK,AAAA,CAAA,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,IAAK,CAAA,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,IAAI,GAAI,CAAA,GAAI,CAAA,EAAE,EAAE,OAAO,CAAC,uBAAuB,GAAA,CAAE,EAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,GAAI,CAAA,GAAG,CAAA,EAAI,CAAA,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAA,EAAG,IAAI,GAAG,QAAQ,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAK,CAAA,AAAA,CAAA,GAAG,CAAC,GAAG,IAAI,CAAA,GAAK,CAAA,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAA,EAAG,GAAI,CAAA,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAA,CAAA,EAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAI,CAAA,IAAI,GAAG,IAAI,EAAE,EAAA,EAAI,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAG,CAAA,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA,EAAG,GAAG,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,EAAG,CAAA,EAAE,EAAE,EAAE,EAAA,EAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,EAAG,CAAA,IAAI,EAAE,CAAA,EAAG,GAAI,CAAA,MAAM,EAAG,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAA,EAAI,MAAM,GAAI,CAAA,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,AAAF,EAAK,CAAA,IAAI,IAAI,GAAI,CAAA,EAAE,CAAC,CAAC,EAAC,AAAD,EAAI,EAAE,EAAG,AAAA,CAAA,EAAE,CAAC,CAAC,EAAC,AAAD,EAAI,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAA,EAAG,MAAM,GAAG,MAAO,GAAG,OAAO,GAAG,OAAO,EAAG,CAAA,IAAI,EAAE,CAAA,EAAG,GAAG,CAAA,EAAG,IAAI,GAAG,QAAQ,GAAI,CAAA,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,AAAF,CAAG,CAAC,OAAO,IAAI,CAAC,EAAE,IAAI,CAAA,EAAG,UAAU,EAAE,CAAA,EAAG,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,AAAA,CdIjqC,EAAI,IAAI,CAAC,GkBJvB,GAAW,mED4EJ,GAAuB,CACnC,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,SACL,IAAK,OACN,EAEa,GAAuB,CACnC,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,GACN,EAKM,GAAe,CACpB,IAAK,MACL,IAAK,MACL,KAAM,OACN,KAAM,MACN,KAAM,KACP,EAEM,GAAiB,OAAO,WAAW,CAAC,OAAO,OAAO,CAAC,IAAc,GAAG,CAAC,CAAC,CAAC,EAAM,EAAG,GAAK,CAAC,EAAI,EAAK,GAU9F,SAAS,GAAU,CAAC,EAC1B,IAAI,EAAO,CAAC,EAgBZ,OAfA,EAAE,KAAK,CAAC,KAAK,OAAO,CAAC,AAAC,IACrB,GAAI,CAAC,EACJ,OAED,IAAI,EAAQ,EAAE,KAAK,CAAC,IAAK,GACrB,EAAI,CAAK,CAAC,EAAE,CACZ,EAAI,IACa,CAAA,IAAjB,EAAM,MAAM,EAEX,AADJ,CAAA,EAbK,AAaW,CAAK,CAAC,EAAE,CAbjB,OAAO,CAAC,cAAe,AAAC,GAAQ,EAAc,CAAC,EAAI,CAalC,EAClB,QAAQ,CAAC,OACd,CAAA,EAAI,EAAE,KAAK,CAAC,EAAG,EAAE,MAAM,CAAG,EAD3B,EAID,CAAI,CAAC,EAAE,CAAG,CACX,GACO,CACR,CAEO,SAAS,GAAW,CAAI,EAC9B,IAAI,EAAI,EAAE,CACV,IAAK,IAAI,KAAK,EAAM,CACnB,GAAI,AAAY,KAAA,IAAZ,CAAI,CAAC,EAAE,EAAkB,AAAY,OAAZ,CAAI,CAAC,EAAE,CAAW,CAC9C,EAAE,IAAI,CAAC,GACP,QACD,CACA,IAAI,EAlCE,OAkCY,CAAI,CAAC,EAAE,EAlCT,OAAO,CAAC,cAAe,AAAC,GAAO,EAAY,CAAC,EAAG,EAmC/D,EAAE,IAAI,CAAC,EAAI,IAAM,EAClB,CACA,OAAO,EAAE,IAAI,CAAC,IACf,CAEO,SAAS,GAAY,CAAC,EAC5B,IAAI,EAAO,KACP,EAAI,EAAE,OAAO,CAAC,KACd,EAAI,IACP,EAAO,EAAE,KAAK,CAAC,EAAI,GACnB,EAAI,EAAE,KAAK,CAAC,EAAG,IAGhB,IAAI,EAAO,KAOX,MANA,CAAA,EAAI,EAAE,OAAO,CAAC,IAAd,EACQ,IACP,EAAO,EAAE,KAAK,CAAC,EAAI,GACnB,EAAI,EAAE,KAAK,CAAC,EAAG,IAGT,CAAE,KAAM,EAAG,KAAA,EAAM,KAAA,CAAK,CAC9B,CAaO,SAAS,GAAa,CAAC,EACzB,EAAE,QAAQ,CAAC,SACd,CAAA,EAAI,EAAE,KAAK,CAAC,EAAG,EAAE,MAAM,CAAG,EAD3B,EAIA,IAAI,EAAM,CACT,KAAM,CAAC,EACP,OAAQ,KACR,QAAS,KACT,OAAQ,EAAE,AACX,EAEA,GAAI,EAAE,UAAU,CAAC,KAAM,CACtB,IAAI,EAAI,EAAE,OAAO,CAAC,KAClB,GAAI,EAAI,EACP,MAAM,AAAI,MAAM,8BAEjB,CAAA,EAAI,IAAI,CAAG,GAAU,EAAE,KAAK,CAAC,EAAG,IAChC,EAAI,EAAE,KAAK,CAAC,EAAI,EACjB,CAEA,GAAI,EAAE,UAAU,CAAC,KAAM,CACtB,IAAI,EAAI,EAAE,OAAO,CAAC,KAClB,GAAI,EAAI,EACP,MAAM,AAAI,MAAM,gCAEjB,CAAA,EAAI,MAAM,CAAG,GAAY,EAAE,KAAK,CAAC,EAAG,IACpC,EAAI,EAAE,KAAK,CAAC,EAAI,EACjB,CAEA,IAAI,EAAI,EAAE,OAAO,CAAC,KAClB,GAAI,EAAI,EAEP,OADA,EAAI,OAAO,CAAG,EACP,EAKR,IAHA,EAAI,OAAO,CAAG,EAAE,KAAK,CAAC,EAAG,GACzB,EAAI,EAAE,KAAK,CAAC,EAAI,KAEH,CACZ,GAAI,EAAE,UAAU,CAAC,KAAM,CACtB,EAAI,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IACxB,KACD,CAGA,GAAI,AADJ,CAAA,EAAI,EAAE,OAAO,CAAC,IAAd,EACQ,EAAG,CACV,EAAI,MAAM,CAAC,IAAI,CAAC,GAChB,KACD,CAEA,EAAI,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAG,IAC3B,EAAI,EAAE,KAAK,CAAC,EAAI,EACjB,CAEA,OAAO,CACR,CAEO,SAAS,GAAc,CAAG,EAChC,IAAI,EAAI,GAIR,GAHI,EAAI,IAAI,EAAI,OAAO,IAAI,CAAC,EAAI,IAAI,EAAE,MAAM,CAAG,GAC9C,CAAA,GAAK,IAAM,GAAW,EAAI,IAAI,EAAI,GADnC,EAGI,EAAI,MAAM,CACb,KA1EoB,MACjB,EAyEH,GAAK,KAzEF,EAAI,CADa,EA0EI,EAAI,MAAM,EAzEpB,IAAI,CACf,EAAO,IAAI,EACd,CAAA,GAAK,IAAM,EAAO,IAAI,AAAJ,EAEf,EAAO,IAAI,EACd,CAAA,GAAK,IAAM,EAAO,IAAI,AAAJ,EAEZ,GAkEgC,GADvC,CAIA,GADA,GAAK,EAAI,OAAO,CACZ,EAAI,MAAM,EAAI,EAAI,MAAM,CAAC,MAAM,CAAG,EAAG,CACxC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAI,MAAM,CAAC,MAAM,CAAG,EAAG,IAC1C,GAAK,IAAM,EAAI,MAAM,CAAC,EAAE,CAGzB,IAAI,EAAO,OAAO,EAAI,MAAM,CAAC,EAAI,MAAM,CAAC,MAAM,CAAG,EAAE,CAC/C,AAAgB,CAAA,IAAhB,EAAK,MAAM,EAAU,EAAK,UAAU,CAAC,MAAQ,EAAK,OAAO,CAAC,MAAQ,EACrE,GAAK,KAAO,EAEZ,GAAK,IAAM,CAEb,CACA,OAAO,CACR,CAGO,SAAS,GAAkB,CAAC,CAAE,EArKb,OAqK8C,EACrE,IAAI,EACJ,IAAK,EAAI,EACR,AADW,EAAI,EAAE,MAAM,GACnB,CAAA,AAAgC,EAAhC,EAAgB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAI,EADX,KAM1B,MAAO,CACN,OAAQ,EAAE,KAAK,CAAC,EAAG,GACnB,KAAM,EAAE,KAAK,CAAC,EACf,CACD,CAEA,MAAM,GAAW,AAAC,CAAA,KACjB,GAAI,CACH,OAAO,AAAI,OAAO,eAAgB,IACnC,CAAE,MAAO,EAAI,CACZ,OAAO,AAAI,OAAO,gBAAiB,IACpC,CACD,CAAA,IACM,GAAQ,IAAI,OAAO,QAEzB,SAAS,GAAe,CAAE,EACzB,OAAQ,GACR,IAAK,IACL,IAAK,IACL,IAAK,IACJ,MAAO,CAAA,CACR,SACC,MAAO,CAAC,GAAS,IAAI,CAAC,EACvB,CACD,CAoEO,SAAS,GAAQ,CAAG,EAC1B,GAAI,GAAO,OAAS,GAAO,MAC1B,MAAO,CAAA,EAER,OAAQ,GACR,IArS6B,MAsS7B,IApS2B,MAqS3B,IApS8B,MAqS9B,IApS8B,MAqS9B,IApS8B,MAqS9B,IA9S8B,MAgT9B,IAAK,OADJ,MAAO,CAAA,CAGR,SACC,MAAO,CAAA,CACR,CACD,CAEO,SAAS,GAAW,CAAI,EAE9B,IAAI,EAAO,EAAK,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAG,KACpD,EAAM,AAAA,CAAA,EAAK,WAAW,GAAK,CAAA,EAAG,QAAQ,GAAG,QAAQ,CAAC,EAAG,KACrD,EAAK,EAAK,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAG,KAC9C,EAAK,EAAK,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAG,KAC/C,EAAK,EAAK,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAG,KACjD,EAAK,EAAK,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAG,KACjD,EAAM,EAAK,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAG,KAC3D,MAAO,CAAA,EAAG,EAAK,CAAC,EAAE,EAAG,CAAC,EAAE,EAAG,CAAC,EAAE,EAAG,CAAC,EAAE,EAAG,CAAC,EAAE,EAAG,CAAC,EAAE,EAAI,CAAC,CAAC,AACvD,CAEO,SAAS,GAAU,CAAG,MAcxB,EAbJ,GAAI,AAAgB,YAAhB,EAAI,OAAO,EAAkB,AAAgB,WAAhB,EAAI,OAAO,CAC3C,OAAO,KAGR,IAAI,EAAO,EAAI,MAAM,CAAC,EAAE,CACxB,GAAI,CAAC,EAAK,UAAU,CAAC,QACpB,OAAO,KAGJ,AADJ,CAAA,EAAO,EAAK,KAAK,CAAC,EAAlB,EACS,QAAQ,CAAC,SACjB,CAAA,EAAO,EAAK,KAAK,CAAC,EAAG,GADtB,EAKA,IAAI,EAAI,EAAK,OAAO,CAAC,KAOrB,MADA,CAJC,EADG,GAAK,EACD,CAAE,QAAS,EAAK,KAAK,CAAC,EAAG,GAAI,MAAO,EAAK,KAAK,CAAC,EAAI,EAAG,EAEtD,CAAE,QAAS,EAAM,MAAO,EAAG,GAE9B,OAAO,CAAG,EAAK,OAAO,CAAC,WAAW,GAChC,CACR,CASO,MAAM,GACZ,IAAM,IAAI,GAAM,AAEhB,CAAA,MAAM,CAAM,CAAE,CACb,EAAO,OAAO,CAAC,AAAC,IACf,GAAI,EAAI,UAAU,CAAC,KAAM,CACxB,IAAI,EAAI,EAAI,KAAK,CAAC,GAClB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,WAAW,IAC7B,MACD,CAEA,IAAI,EAAI,EAAI,OAAO,CAAC,KAChB,EAAI,EAAK,EAAI,GACb,GAAK,IACR,EAAI,EAAI,KAAK,CAAC,EAAG,GACjB,EArBI,AAqBsB,EAAI,KAAK,CAAC,EAAI,GArBlC,OAAO,CAAC,mBAAoB,AAAC,GAE9B,OAAO,YAAY,CAAC,SADjB,EAAI,KAAK,CAAC,GACqB,OAsBxC,EAAI,EAAE,WAAW,GAEjB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAG,EACjB,EACD,CAEA,aAAc,CACb,IAAI,EAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,sBACxB,AAAK,EAIL,AADS,GAAY,MAAM,CAAC,KAE3B,QAAQ,KAAK,CAAC,6BAA+B,EAAO,+BAC7C,GAAY,OAAO,EALnB,GAAY,OAAO,AAQ5B,CAEA,SAAU,CACT,GAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WACjB,OAAO,EAER,IAAI,EAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,iBACrB,AAAI,AAAM,KAAN,EACI,IAED,SAAS,EAAG,GACpB,CAEA,MAAO,CACN,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OACrB,CAEA,QAAS,CACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAa,EAClC,CAEA,WAAY,CACX,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAhYA,MAiYrB,CAEA,WAAY,CACX,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YACrB,CAEA,SAAU,CACT,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UACrB,CAEA,aAAc,CACb,GAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,eACjB,OAAO,EAER,IAAI,EAAI,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,eAAgB,WAC9C,AAAI,GAAK,EACD,IAED,CACR,CAEA,cAAe,CACd,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,gBACrB,CAEA,WAAY,CACX,IAAM,EAAe,CAAC,MAAO,IAAK,IAAK,QAAQ,CAC/C,GAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,aACjB,OAAO,EAER,IAAI,EAAY,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,YAChD,AAAI,AAAqB,IAArB,EAAU,MAAM,EACnB,QAAQ,KAAK,CAAC,sBAAuB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAC3C,GAED,CACR,CAEA,KAAM,CACL,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MACrB,CAEA,SAAU,QACT,AAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAGX,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAY,IAFjC,EAGT,CAEA,SAAU,QACT,AAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAGX,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAY,IAFjC,EAGT,CAEA,SAAU,QACT,AAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAGX,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAY,IAFjC,GAGT,CAEA,UAAW,CACV,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,mBACrB,CACD,CAWO,MAAM,GAAc,CAC1B,MAAM,CAAG,EACR,IAAI,EAAM,GACV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAI,MAAM,CAAE,IAAK,CACpC,IAAI,EAAK,CAAG,CAAC,EAAE,AACX,CAAA,KAAO,GAAM,GAAM,KACtB,CAAA,EAAK,EAAG,WAAW,EADpB,EAGA,GAAO,CACR,CACA,OAAO,CACR,EAEA,QAAQ,CAAG,EACV,IAAI,EAAM,GACV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAI,MAAM,CAAE,IAAK,CACpC,IAAI,EAAK,CAAG,CAAC,EAAE,AACX,CAAA,KAAO,GAAM,GAAM,IACtB,EAAK,EAAG,WAAW,GACT,AAAO,MAAP,EACV,EAAK,IACK,AAAO,MAAP,EACV,EAAK,IACK,AAAO,OAAP,EACV,EAAK,IACY,MAAP,GACV,CAAA,EAAK,GADC,EAGP,GAAO,CACR,CACA,OAAO,CACR,EAEA,cAAc,CAAG,EAChB,IAAI,EAAM,GACV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAI,MAAM,CAAE,IAAK,CACpC,IAAI,EAAK,CAAG,CAAC,EAAE,AACX,CAAA,KAAO,GAAM,GAAM,IACtB,EAAK,EAAG,WAAW,GACT,AAAO,MAAP,EACV,EAAK,IACK,AAAO,MAAP,EACV,EAAK,IACY,OAAP,GACV,CAAA,EAAK,GADC,EAGP,GAAO,CACR,CACA,OAAO,CACR,EAEA,OAAO,CAAI,EACV,OAAQ,GACR,IAAK,QACJ,OAAO,GAAY,KAAK,AACzB,KAAK,UACJ,OAAO,GAAY,OAAO,AAC3B,KAAK,iBACJ,OAAO,GAAY,aAAa,AACjC,CACA,OAAO,IACR,CACD,EAUA,SAAS,GAAY,CAAE,CAAE,CAAC,EAPzB,IAAI,EAQJ,MALA,CAHI,EAAK,CAAE,KAQW,KACrB,GAAI,CAAA,MAAE,CAAK,CAAA,KAAE,CAAI,CAAE,CAAG,EAAG,IAAI,UAC7B,AAAI,EACI,CAAE,KAAM,CAAA,CAAK,EAEd,CAAE,MAAO,EAAE,GAAQ,KAAM,CAAA,CAAM,CACvC,CAdgB,EAGd,CAAC,OAAO,QAAQ,CAAC,CAAG,IAAM,EACrB,CAWR,CAEO,MAAM,GACZ,QAAU,IAAK,AACf,CAAA,IAAM,IAAK,AAEX,aAAY,CAAQ,CAAE,CAAE,CAAE,CACzB,GAAI,aAAqB,IAAgB,CAAA,EAAS,OAAO,GAAK,GAAM,CAAC,CAAA,EAEpE,IAAI,CAAC,OAAO,CAAG,EAAS,OAAO,CAC/B,IAAI,CAAC,GAAG,CAAG,IAAI,IAAI,EAAS,GAAG,MACzB,CACN,GAAI,CAAC,EACJ,MAAM,AAAI,MAAM,iDAMjB,GAHA,IAAI,CAAC,OAAO,CAAG,EACf,IAAI,CAAC,GAAG,CAAG,IAAI,IAEX,EACH,IAAK,GAAI,CAAC,EAAK,EAAM,GAAI,EACxB,IAAI,CAAC,GAAG,CAAC,EAAK,EAGjB,CACD,CAEA,IAAI,MAAO,CACV,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,AACrB,CAEA,IAAI,CAAG,CAAE,CACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAClC,CAEA,IAAI,CAAG,CAAE,CACR,IAAI,EAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IACnC,GAAI,EACH,OAAO,EAAG,KAAK,AAGjB,CAEA,IAAI,CAAG,CAAE,CAAK,CAAE,CACf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAM,CAAE,IAAA,EAAK,MAAA,CAAM,EAC9C,CAEA,OAAO,CAAG,CAAE,CACX,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAC9B,CAEA,SAAU,CAET,OAAO,GADE,IAAI,CAAC,GAAG,CAAC,MAAM,GACD,AAAC,GAChB,CAAC,EAAG,GAAG,CAAE,EAAG,KAAK,CAAC,CAE3B,CAEA,MAAO,CAEN,OAAO,GADE,IAAI,CAAC,GAAG,CAAC,MAAM,GACD,AAAC,GAChB,EAAG,GAAG,CAEf,CAEA,QAAS,CAER,OAAO,GADE,IAAI,CAAC,GAAG,CAAC,MAAM,GACD,AAAC,GAChB,EAAG,KAAK,CAEjB,CAEA,CAAC,OAAO,QAAQ,CAAC,EAAG,CACnB,OAAO,IAAI,CAAC,OAAO,EACpB,CACD,CAGO,SAAS,GAAqB,CAAG,EACvC,GAAI,AAAW,MAAX,CAAG,CAAC,EAAE,CACT,MAAM,AAAI,MAAM,iEAGjB,IAAI,EAAM,EAAI,OAAO,CAAC,KACtB,GAAI,EAAM,EACT,MAAM,AAAI,MAAM,iEAGjB,IAAI,EAAI,EAAI,MAAM,CAAG,EAAM,EACvB,EAAc,EAAE,CACpB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,IAAI,EAAO,CAAG,CAAC,EAAI,EAAE,CACjB,EAAS,CAAG,CAAC,EAAM,EAAI,EAAE,CAC7B,EAAY,IAAI,CAAC,CAAE,KAAA,EAAM,OAAA,CAAO,EACjC,CACA,OAAO,CACR,CAEO,SAAS,GAAgB,CAAG,CAAE,CAAI,EACxC,IAAI,EAAQ,EAAI,KAAK,CACrB,KAAO,GAAO,CACb,GAAI,EAAM,IAAI,GAAK,EAClB,OAAO,EAER,EAAQ,EAAM,MAAM,AACrB,CACA,OAAO,IACR,CAqEO,SAAS,GAAqB,CAAQ,CAAE,CAAI,UAC7C,GAAY,IAAa,GAI1B,AAA2B,aAA3B,EAAS,WAAW,IAAqB,AAA2B,YAA3B,EAAS,WAAW,IAAoB,AAA2B,aAA3B,EAAS,WAAW,EAO1G,CAMO,SAAS,GAAS,CAAG,MAOvB,EAuBA,EA7BJ,GAAI,CAAC,EAAI,UAAU,CAAC,WAAa,CAAC,EAAI,UAAU,CAAC,WAChD,OAAO,KAMR,IAAI,EAAI,AAHR,CAAA,EAAM,EAAI,KAAK,CAAC,EAAI,OAAO,CAAC,KAAO,EAAnC,EAGY,OAAO,CAAC,IAChB,CAAA,EAAI,GACP,EAAM,EACN,EAAM,KAEN,EAAM,EAAI,KAAK,CAAC,EAAG,GACnB,EAAM,EAAI,KAAK,CAAC,EAAI,IAGrB,IAAI,EAAO,EAeX,GAdA,CAAA,EAAI,EAAI,OAAO,CAAC,IAAhB,GACS,GACR,CAAA,EAAO,EAAI,KAAK,CAAC,EAAI,EADtB,EAKA,CAAA,EAAI,EAAI,OAAO,CAAC,IAAhB,GACS,GACR,CAAA,EAAM,EAAI,KAAK,CAAC,EAAG,EADpB,EAOI,AADJ,CAAA,EAAI,EAAI,OAAO,CAAC,IAAhB,GACS,EAAG,CACX,IAAI,EAAQ,EAAI,KAAK,CAAC,EAAI,GAAG,KAAK,CAAC,KACnC,EAAM,EAAI,KAAK,CAAC,EAAG,GAEf,EAAM,OAAO,CAAC,WAAa,EAC9B,EAAU,OACA,EAAM,OAAO,CAAC,cAAgB,GACxC,CAAA,EAAU,SADJ,CAKR,CAEA,IAAI,EAAS,mBAAmB,GAMhC,OALK,GAEJ,CAAA,EAAU,EAAO,UAAU,CAAC,KAAO,UAAY,MAA/C,EAGM,CAAE,KAAA,EAAM,QAAA,EAAS,OAAA,CAAO,CAChC,CAEO,SAAS,GAAU,CAAA,KAAE,CAAI,CAAA,QAAE,CAAO,CAAA,OAAE,CAAM,CAAE,CAAG,CAAC,CAAC,EAIvD,IAAI,EAAI,SAHR,CAAA,EAAO,GAAQ,EAAf,EAG0B,IAAM,mBAFhC,EAAS,GAAU,IAMnB,OAHI,GACH,CAAA,GAAK,MAAQ,CADd,EAGO,CACR,CAEO,MAAM,GACZ,UAAY,IAAI,GAAM,AACtB,CAAA,QAAU,IAAI,GAAM,AAEpB,CAAA,aAAa,CAAC,CAAE,CAEf,AADQ,EAAE,KAAK,CAAC,KACd,OAAO,CAAC,AAAC,IACV,IAAI,EAAI,EAAE,OAAO,CAAC,KACd,EAAI,EAAG,EAAI,GACX,GAAK,IACR,EAAI,EAAE,KAAK,CAAC,EAAG,GACf,EAAI,EAAE,KAAK,CAAC,EAAI,IAEjB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW,GAAI,EACrC,EACD,CAEA,MAAM,CAAG,CAAE,CACV,GAAI,AAAgB,QAAhB,EAAI,OAAO,CACd,OAGD,IAAI,EAAS,EAAI,MAAM,CAAC,EAAE,CACtB,EAAO,EAAI,MAAM,CAAC,KAAK,CAAC,GAC5B,OAAQ,GACR,IAAK,KACJ,IAAI,CAAC,YAAY,CAAC,CAAI,CAAC,EAAK,MAAM,CAAG,EAAE,EACvC,KACD,KAAK,MACJ,IAAI,CAAC,YAAY,CAAC,CAAI,CAAC,EAAE,EACzB,KACD,KAAK,MACJ,CAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,AAAC,IAC3B,EAAM,EAAI,WAAW,GACrB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GACtB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EACrB,GACA,KACD,KAAK,MACJ,CAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,AAAC,IAEvB,AADJ,CAAA,EAAM,EAAI,WAAW,EAArB,EACQ,UAAU,CAAC,KAClB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAI,KAAK,CAAC,IAE9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAEnB,EAED,CACD,CAEA,iBAAiB,CAAC,CAAE,QAKnB,AAAI,AAAa,IAAb,AAJJ,CAAA,EAAI,EAAE,MAAM,CAAC,AAAC,GACN,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GACrD,EAEM,MAAM,CACJ,KAED,CAAE,QAAS,MAAO,OAAQ,CAAC,MAAO,EAAE,IAAI,CAAC,KAAK,AAAC,CACvD,CACD,CEv7BA,MAAM,GAAgB,CACrB,iBACA,cACA,QACA,UACA,eACA,gBACA,mBACA,gBACA,mBACA,eACA,eACA,OACA,cACA,UAEA,6BACA,oBACA,yBACA,oBAEA,2BACA,CAaK,GAAc,CACnB,QAAW,IACX,SAAY,IACZ,SAAY,IACZ,OAAU,IACV,KAAQ,IACR,MAAS,IACT,QAAW,IACX,SAAY,GACb,EAEM,GAAyB,CAAE,KAAM,GAAI,EAE3C,IAAI,GAAY,EACZ,GAAgB,CAEpB,OAAM,WAAiB,MACtB,YAAY,CAAG,CAAE,CAQhB,KAAK,CAND,EAAI,MAAM,CAAC,MAAM,CAAG,EAEhB,EAAI,MAAM,CAAC,EAAI,MAAM,CAAC,MAAM,CAAG,EAAE,CAEjC,CAAC,eAAe,EAAE,EAAI,OAAO,CAAC,CAAC,CAAC,EAIxC,IAAI,CAAC,GAAG,CAAG,CACZ,CACD,CAKA,MAAM,GACL,EAAI,CAAE,AAEN,aAAY,CAAI,CAAE,CAAG,CAAE,CACtB,IAAI,CAAC,IAAI,CAAG,EACZ,IAAI,CAAC,GAAG,CAAG,CACZ,CAEA,OAAQ,CACP,IAAI,CAAC,CAAC,CAAG,CACV,CAEA,MAAO,CACN,GAAI,AAAW,IAAX,IAAI,CAAC,CAAC,CAET,OADA,IAAI,CAAC,CAAC,CAAG,EACF,EAGR,IAAI,EAAM,IAAI,CAAC,CAAC,CAAG,IAAI,CAAC,IAAI,CAO5B,OANI,EAAM,IAAI,CAAC,GAAG,CACjB,EAAM,IAAI,CAAC,GAAG,CAEd,IAAI,CAAC,CAAC,EAAI,EAGJ,CACR,CACD,CAEe,MAAA,WAAqB,YACnC,OAAO,OAAS,CACf,aAAc,eACd,WAAY,aACZ,YAAa,cACb,WAAY,YACb,CAAE,AAEF,CAAA,OAAS,GAAO,MAAM,CAAC,YAAY,AAAC,AACpC,CAAA,aAAe,EAAuB,AACtC,CAAA,KAAO,IAAK,AACZ,CAAA,YAAc,CAAA,CAAM,AACpB,CAAA,KAAO,IAAI,EAAkB,AAC7B,CAAA,SAAW,IAAI,EAAe,AAE9B,CAAA,GAAK,IAAK,AACV,CAAA,OAAS,CACR,IAAK,KACL,SAAU,KACV,SAAU,KACV,KAAM,KACN,KAAM,KACN,UAAW,KACX,aAAc,CAAA,EACd,gBAAiB,KACjB,eAAgB,KAChB,KAAM,EACN,cAAe,CAAA,CAChB,CAAE,AACF,CAAA,MAAQ,CAAA,CAAM,AACd,CAAA,QAAU,IAAI,GAAM,AACpB,CAAA,cAAgB,CAAA,CAAK,AACrB,CAAA,mBAAqB,IAAK,AAC1B,CAAA,iBAAmB,IAAI,GA3GS,IACA,IA0GmD,AACnF,CAAA,kBAAoB,IAAI,KAAK,EAAG,AAChC,CAAA,eAAiB,IAAK,AACtB,CAAA,YAAc,CACb,IAAK,QAAQ,OAAO,CAAC,MACrB,YAAa,QAAQ,OAAO,CAAC,KAC9B,CAAE,AACF,CAAA,GAAK,GAAgB,OAAO,AAAC,AAC7B,CAAA,UAAY,IAAI,GAAe,KAAM,GAAgB,OAAO,CAAE,AAC9D,CAAA,aAAe,IAAI,GAAe,KAAM,GAAgB,OAAO,CAAE,AACjE,CAAA,YAAc,IAAI,GAAM,AAExB,aAAY,CAAM,CAAE,CACnB,KAAK,GAEL,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAE/C,IAAI,CAAC,MAAM,CAAG,CAAE,GAAG,IAAI,CAAC,MAAM,CAAE,GAAG,CAAM,AAAC,EAE1C,IAAI,CAAC,SAAS,EACf,CAEA,WAAY,CACX,IAAI,EAAgB,IAAI,CAAC,aAAa,CACtC,IAAI,CAAC,UAAU,GACf,IAAI,CAAC,aAAa,CAAG,EAErB,QAAQ,GAAG,CAAC,iBAAmB,IAAI,CAAC,MAAM,CAAC,GAAG,EAC9C,IAAI,CAAC,SAAS,CAAC,GAAO,MAAM,CAAC,UAAU,EACvC,IAAI,CAAC,iBAAiB,CAAG,IAAI,KAE7B,GAAI,CACH,IAAI,CAAC,EAAE,CAAG,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,GAAG,CACxC,CAAE,MAAO,EAAK,CACb,QAAQ,KAAK,CAAC,+BAAgC,GAC9C,WAAW,KACV,IAAI,CAAC,aAAa,CAAC,AAAI,MAAM,8BAA+B,CAAE,MAAO,CAAI,IACzE,IAAI,CAAC,SAAS,CAAC,GAAO,MAAM,CAAC,YAAY,CAC1C,EAAG,GACH,MACD,CACA,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAE1D,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,UAAW,AAAC,IACpC,GAAI,CACH,IAAI,CAAC,aAAa,CAAC,EACpB,CAAE,MAAO,EAAK,CACb,IAAI,CAAC,aAAa,CAAC,GACnB,IAAI,CAAC,UAAU,EAChB,CACD,GAEA,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAS,AAAC,IAmBlC,GAlBA,QAAQ,GAAG,CAAC,4BAA8B,EAAM,IAAI,CAAG,KA3JnC,MA6JhB,EAAM,IAAI,EAAuB,AA5JrB,OA4JqB,EAAM,IAAI,EAC9C,IAAI,CAAC,aAAa,CAAC,AAAI,MAAM,qBAG9B,IAAI,CAAC,EAAE,CAAG,KACV,IAAI,CAAC,SAAS,CAAC,GAAO,MAAM,CAAC,YAAY,EACzC,IAAI,CAAC,IAAI,CAAG,KACZ,IAAI,CAAC,YAAY,CAAG,GACpB,IAAI,CAAC,IAAI,CAAG,IAAI,GAChB,IAAI,CAAC,OAAO,CAAG,IAAI,IACnB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,AAAC,IACtC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAG,QAAQ,OAAO,CAAC,KACvC,GACA,IAAI,CAAC,QAAQ,CAAG,IAAI,GACpB,IAAI,CAAC,SAAS,CAAG,IAAI,GAAe,KAAM,GAAgB,OAAO,EAE7D,IAAI,CAAC,aAAa,EAGrB,GAFA,OAAO,gBAAgB,CAAC,SAAU,IAAI,CAAC,YAAY,EAE9C,UAAU,MAAM,CAEd,CACN,IAAI,EAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,GACb,IAAI,OAAO,OAAO,GAAK,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAzLlD,KA2L3B,CAAA,EAAQ,KAAK,GAAG,CAAC,EA3LU,IA0L5B,EAGA,QAAQ,IAAI,CAAC,6BAAgC,EAAQ,IAAQ,YAC7D,aAAa,IAAI,CAAC,kBAAkB,EACpC,IAAI,CAAC,kBAAkB,CAAG,WAAW,KACpC,IAAI,CAAC,SAAS,EACf,EAAG,EACJ,MAZC,QAAQ,IAAI,CAAC,yCAchB,EACD,CAEA,YAAa,CACZ,IAAI,CAAC,aAAa,CAAG,CAAA,EAErB,aAAa,IAAI,CAAC,kBAAkB,EACpC,IAAI,CAAC,kBAAkB,CAAG,KAE1B,OAAO,mBAAmB,CAAC,SAAU,IAAI,CAAC,YAAY,EAEtD,IAAI,CAAC,eAAe,CAAC,GAEjB,IAAI,CAAC,EAAE,EACV,IAAI,CAAC,EAAE,CAAC,KAAK,CA7MO,IA+MtB,CAEA,UAAU,CAAM,CAAE,CACb,IAAI,CAAC,MAAM,GAAK,IAGpB,IAAI,CAAC,MAAM,CAAG,EACd,IAAI,CAAC,aAAa,CAAC,IAAI,YAAY,WACpC,CAEA,cAAc,CAAG,CAAE,CAClB,IAAI,CAAC,aAAa,CAAC,IAAI,YAAY,QAAS,CAAE,OAAQ,CAAI,GAC3D,CAEA,cAAe,CACd,OAAO,mBAAmB,CAAC,SAAU,IAAI,CAAC,YAAY,EAClD,IAAI,CAAC,aAAa,EAAI,IAAI,CAAC,MAAM,GAAK,GAAO,MAAM,CAAC,YAAY,EACnE,IAAI,CAAC,SAAS,EAEhB,CAEA,YAAa,CACZ,QAAQ,GAAG,CAAC,qBACZ,IAAI,CAAC,SAAS,CAAC,GAAO,MAAM,CAAC,WAAW,EAExC,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAErC,IAAI,CAAC,IAAI,CAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAE5B,IAAI,CAAC,IAAI,CAAC,CAAE,QAAS,MAAO,OAAQ,CAAC,KAAM,MAAM,AAAC,GAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,EACnB,IAAI,CAAC,IAAI,CAAC,CAAE,QAAS,OAAQ,OAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,AAAC,GAEzD,IAAI,CAAC,IAAI,CAAC,CAAE,QAAS,OAAQ,OAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,AAAC,GACjD,IAAI,CAAC,IAAI,CAAC,CACT,QAAS,OACT,OAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAE,IAAK,IAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,AAC/D,EACD,CAEA,gBAAgB,CAAC,CAAE,CAAG,CAAE,CACvB,IAAI,EAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GACzB,IACJ,EAAI,EAAE,CACN,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAG,IAE1B,EAAE,IAAI,CAAC,EACR,CAEA,eAAe,CAAC,CAAE,CAAG,CAAE,CACtB,EAAI,IAAI,CAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAM,EAAE,CACzC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAC1B,CAEA,cAAc,CAAK,CAAE,CACpB,GAAI,AAAsB,UAAtB,OAAO,EAAM,IAAI,CAAe,CACnC,QAAQ,KAAK,CAAC,kCAAmC,EAAM,IAAI,EAC3D,IAAI,CAAC,EAAE,CAAC,KAAK,CAvQS,MAwQtB,MACD,CAEA,IAAI,EAAM,EAAM,IAAI,AAChB,CAAA,IAAI,CAAC,KAAK,EACb,QAAQ,KAAK,CAAC,YAAa,GAG5B,IAAI,EAAM,GAAiB,EAItB,CAAA,EAAI,MAAM,EACd,CAAA,EAAI,MAAM,CAAG,IAAI,CAAC,YAAY,AAAZ,EAEd,EAAI,IAAI,EACZ,CAAA,EAAI,IAAI,CAAG,CAAC,CAAA,EAGb,IAAI,EAAW,IACX,CAAA,EAAI,IAAI,CAAC,KAAQ,EACpB,CAAA,EAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAI,IAAI,CAAC,KAAQ,CAAA,GAE5C,CAAA,EAAI,KAAK,CAAG,CADb,EAKD,IAAI,EAAc,KAClB,OAAQ,EAAI,OAAO,EACnB,IFrUyB,MEsUxB,GAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAI,CAAC,IAAI,CAAC,WAAW,CAAE,CAC/C,IAAI,CAAC,aAAa,CAAC,AAAI,MAAM,sCAC7B,IAAI,CAAC,UAAU,GACf,MACD,CAEI,EAAI,MAAM,EACb,CAAA,IAAI,CAAC,YAAY,CAAG,EAAI,MAAM,AAAN,EAEzB,IAAI,CAAC,IAAI,CAAG,EAAI,MAAM,CAAC,EAAE,CAEzB,QAAQ,GAAG,CAAC,yBACZ,IAAI,CAAC,SAAS,CAAC,GAAO,MAAM,CAAC,UAAU,EACvC,KACD,KFhV0B,MEiVzB,IAAI,EAAwB,IAAI,CAAC,QAAQ,CAAC,OAAO,GAE7C,EAAS,EAAI,MAAM,CAAC,KAAK,CAAC,EAAG,IACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GACpB,IAAI,CAAC,iBAAiB,GAEtB,IAAI,EAAoB,IAAI,CAAC,QAAQ,CAAC,OAAO,GAC7C,GAAI,AAA0B,IAA1B,GAA+B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAG,GAAK,EAAoB,EAAG,CACpF,IAAI,EAAU,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,KAAK,CAAC,EAAG,GACzD,IAAI,CAAC,IAAI,CAAC,CAAE,QAAS,UAAW,OAAQ,CAAC,IAAK,EAAQ,IAAI,CAAC,KAAK,AAAC,EAClE,CACA,KACD,KFjU2B,MEkU3B,IF5TwB,ME8TlB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,gBAE1B,IAAI,CAAC,iBAAiB,GAEvB,KACD,KAAK,MACJ,IAAI,CAAC,SAAS,CAAC,GACf,KACD,KAAK,eAEJ,IAAI,EAAe,EAAI,MAAM,CAAC,EAAE,AACX,CAAA,MAAjB,IACH,IAAI,CAAC,aAAa,CAAC,AAAI,MAAM,qCAAuC,IACpE,IAAI,CAAC,IAAI,CAAC,CAAE,QAAS,eAAgB,OAAQ,CAAC,IAAI,AAAC,IAEpD,KACD,KFpT0B,MEqTzB,QAAQ,GAAG,CAAC,aACZ,KACD,KFtT2B,MEuT1B,QAAQ,GAAG,CAAC,cACZ,KACD,KFjW0B,MEkWzB,IAAI,CAAC,eAAe,CAAC,SAAW,EAAI,MAAM,CAAC,EAAE,CAAE,GAC/C,KACD,KFlW4B,MEmW3B,IAAI,CAAC,cAAc,CAAC,SAAW,EAAI,MAAM,CAAC,EAAE,CAAE,GAC9C,KACD,KFxX2B,MEyX3B,IFxX6B,MEyX7B,IFxX+B,MEyX/B,IFxX2B,MEyX3B,IFvX+B,MEwX9B,IAAI,CAAC,eAAe,CAAC,SAAW,EAAI,MAAM,CAAC,EAAE,CAAE,GAC/C,KACD,KF3X4B,ME4X3B,IAAI,CAAC,cAAc,CAAC,SAAW,EAAI,MAAM,CAAC,EAAE,CAAE,GAC9C,KACD,KFlX0B,MEmX1B,IFjX2B,MEkX1B,IAAI,CAAC,eAAe,CAAC,MAAO,GAC5B,KACD,KFhY0B,MEiYzB,IAAI,CAAC,cAAc,CAAC,MAAO,GAC3B,KACD,KAAK,OACJ,IAAI,CAAC,IAAI,CAAC,CAAE,QAAS,OAAQ,OAAQ,CAAC,EAAI,MAAM,CAAC,EAAE,CAAC,AAAC,GACrD,KACD,KAAK,OACJ,IAAI,EAAU,EAAI,MAAM,CAAC,EAAE,CACvB,IAAI,CAAC,QAAQ,CAAC,EAAI,MAAM,CAAC,IAAI,GAChC,CAAA,IAAI,CAAC,IAAI,CAAG,CADb,EAGA,KACD,KAAK,QACJ,IAAI,EAAQ,EAAI,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,KACjC,EAAO,EAAI,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAC/B,GAAI,EAAO,CACV,IAAI,EAAQ,CACX,KAAA,EACA,KAAM,EAAI,MAAM,CAAC,EAAE,CACnB,OAAQ,EAAI,MAAM,CAAC,KAAK,CAAC,GACzB,KAAM,EAAI,IAAI,CACd,OAAQ,CACT,EACA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAM,EACxB,MACC,EAAc,EAEf,KACD,KAAK,QACJ,IAAI,CAAC,aAAa,CAAC,IAAI,GAAS,IAChC,IAAI,CAAC,UAAU,GACf,KACD,KFlYgC,MEmYhC,IFxYkC,MEyYlC,IFxY+B,MEyY/B,IFxY+B,MEyY/B,IF/XiC,MEgYjC,IFxY+B,MEyY/B,IFvYkC,MEwYjC,IAAI,CAAC,aAAa,CAAC,IAAI,GAAS,IAC5B,IAAI,CAAC,MAAM,GAAK,GAAO,MAAM,CAAC,UAAU,EAC3C,IAAI,CAAC,UAAU,GAEhB,KACD,KAAK,OACJ,GAAI,IAAI,CAAC,MAAM,GAAK,GAAO,MAAM,CAAC,UAAU,CAC3C,KAEqB,CAAA,YAAlB,EAAI,MAAM,CAAC,EAAE,EAAkB,AAAkB,SAAlB,EAAI,MAAM,CAAC,EAAE,GAC/C,IAAI,CAAC,aAAa,CAAC,AAAI,MAAM,oCAAqC,CACjE,MAAO,IAAI,GAAS,EACrB,IACA,IAAI,CAAC,UAAU,IAEM,qBAAlB,EAAI,MAAM,CAAC,EAAE,GAChB,IAAI,CAAC,aAAa,CAAC,IAAI,GAAS,IAChC,IAAI,CAAC,UAAU,GAGjB,CAEA,IAAI,CAAC,aAAa,CAAC,IAAI,YAAY,UAAW,CAC7C,OAAQ,CAAE,QAAS,EAAK,MAAO,CAAS,CACzC,IAII,GACH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAEtB,CAEA,aAAa,CAAS,CAAE,CAAM,CAAE,KAO3B,EANJ,GAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GACtB,MAAM,AAAI,MAAM,CAAA,EAAG,EAAU,2CAA2C,CAAC,EAM1E,OAJA,QAAQ,GAAG,CAAC,CAAC,cAAc,EAAE,EAAU,eAAe,CAAC,EAI/C,GACR,IAAK,QACJ,EAAc,KAAO,EAAO,QAAQ,CAAG,KAAO,EAAO,QAAQ,CAC7D,KACD,KAAK,WACJ,EAAc,GACd,KACD,KAAK,cACJ,EAAc,sBAAwB,EAAO,KAAK,CAAG,WACrD,KACD,SACC,MAAM,AAAI,MAAM,CAAC,kCAAkC,EAAE,EAAU,CAAC,CAAC,CAClE,CAGA,IAAI,EAAU,IAAI,CAAC,SAAS,CADb,CAAE,QAAS,eAAgB,OAAQ,CAAC,EAAU,AAAC,EACvB,AAAC,IACvC,OAAQ,EAAI,OAAO,EACnB,IF5a4B,ME6a3B,MAAO,CAAA,CACR,KF/a2B,MEgb3B,IF9ayB,ME+azB,IF9a4B,ME+a5B,IF9a4B,ME+a5B,IF9a4B,ME+a3B,MAAM,IAAI,GAAS,EACpB,CACD,GACA,IAAK,IAAI,KAAO,AFmcX,SAAsC,CAAO,EACnD,IAAI,EAAU,ACv7BR,SAAgB,CAAI,EAC1B,GAAI,CAAC,OAAO,WAAW,CACtB,OAAO,KAAK,GAIb,IAAI,EAAQ,AADE,IAAI,cACE,MAAM,CAAC,GAEvB,EAAW,EAAM,MAAM,CAAG,EAC1B,EAAM,GACV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,MAAM,CAAG,EAAU,GAAK,EAAG,CACpD,IAAI,EAAM,AAAC,CAAA,CAAK,CAAC,EAAE,EAAI,EAAA,EAAO,CAAA,CAAK,CAAC,EAAI,EAAE,EAAI,CAAA,EAAK,CAAK,CAAC,EAAI,EAAE,CAC/D,GAAO,EAAQ,CAAE,GAAO,GAAM,GAAK,CACnC,GAAO,EAAQ,CAAE,GAAO,GAAM,GAAK,CACnC,GAAO,EAAQ,CAAE,GAAO,EAAK,GAAK,CAClC,GAAO,EAAQ,CAAC,AAAM,GAAN,EAAW,AAC5B,CAEA,GAAI,AAAa,IAAb,EAAgB,CACnB,IAAI,EAAK,CAAK,CAAC,EAAM,MAAM,CAAG,EAAE,CAChC,GAAO,EAAQ,CAAC,GAAM,EAAE,CACxB,GAAO,EAAQ,CAAE,GAAM,EAAK,GAAK,CACjC,GAAO,IACR,MAAO,GAAI,AAAa,IAAb,EAAgB,CAC1B,IAAI,EAAM,AAAC,CAAA,CAAK,CAAC,EAAM,MAAM,CAAG,EAAE,EAAI,CAAA,EAAK,CAAK,CAAC,EAAM,MAAM,CAAG,EAAE,CAClE,GAAO,EAAQ,CAAC,GAAO,GAAG,CAC1B,GAAO,EAAQ,CAAE,GAAO,EAAK,GAAK,CAClC,GAAO,EAAQ,CAAE,GAAO,EAAK,GAAK,CAClC,GAAO,GACR,CAEA,OAAO,CACR,EDu5B6B,GAIxB,EAAO,EAAE,CACb,IAAK,IAAI,EAAI,EAAG,GAAK,EAAQ,MAAM,CAAE,GARhB,IAQoC,CACxD,IAAI,EAAQ,EAAQ,SAAS,CAAC,EAAG,EATb,KAUpB,EAAK,IAAI,CAAC,CAAE,QAAS,eAAgB,OAAQ,CAAC,GAAS,IAAI,AAAC,EAC7D,CAEA,OAAO,CACR,EE/cmD,GAChD,IAAI,CAAC,IAAI,CAAC,GAEX,OAAO,CACR,CAEA,IAAI,CAAI,CAAE,CAAO,CAAE,CAClB,IAAI,EAAS,CAAC,EAAK,CAEf,EAAS,GAAI,EAAQ,GACrB,GAAW,IAAI,CAAC,QAAQ,CAAC,IAAI,KAGhC,EAAS,IACL,EAAQ,MAAM,EACjB,EAAQ,MAAM,CAAC,OAAO,CAAC,AAAC,IACvB,GAAI,CAAC,EAAW,CAAC,EAAE,CAClB,MAAM,AAAI,MAAM,CAAC,mBAAmB,EAAE,EAAA,CAAG,EAE1C,GAAU,EAAW,CAAC,EAAE,AACzB,GAGD,EAAQ,OAAO,GAAgB,KAC/B,KAEA,EAAO,IAAI,CAAC,IAAY,KAAU,GAAO,EACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAO,IAG7B,IAAI,EAAM,CAAE,QAAS,MAAO,OAAA,CAAO,EAC/B,EAAI,EAAE,CACN,EAAU,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAChC,IAAI,CAAC,SAAS,CAAC,EAAK,AAAC,IAC3B,OAAQ,EAAI,OAAO,EACnB,IFpgBwB,MEqgBvB,EAAI,QAAQ,CAAG,CAAA,EACf,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAC1B,KACD,KFtgByB,MEugBxB,GAAI,EAAI,MAAM,CAAC,MAAM,GAAK,EAAO,MAAM,CAAG,GAAK,EAAI,MAAM,CAAC,EAAE,GAAK,EAChE,KAED,CAAA,EAAI,QAAQ,CAAG,CAAA,EACf,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAC1B,KACD,KFzhBwB,ME0hBvB,GAAI,EAAI,MAAM,CAAC,EAAE,GAAK,EAErB,OADA,EAAI,QAAQ,CAAG,CAAA,EACR,CAGT,CACD,GAAG,OAAO,CAAC,KACV,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EACzB,IAGD,OADA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAG,EAAQ,KAAK,CAAC,KAAO,GACrC,CACR,CAEA,cAAc,CAAG,CAAE,CAClB,OAAQ,EAAI,OAAO,EACnB,IFhiB0B,MEiiBzB,IAAI,EAAO,EAAI,MAAM,CAAC,EAAI,MAAM,CAAC,MAAM,CAAG,EAAE,CAC5C,MAAO,CACN,SAAU,EAAI,MAAM,CAAC,EAAE,CACvB,SAAU,EAAI,MAAM,CAAC,EAAE,CACvB,OAAQ,EAAI,MAAM,CAAC,EAAE,CACrB,KAAM,EAAI,MAAM,CAAC,EAAE,CACnB,MAAO,EAAI,MAAM,CAAC,EAAE,CACpB,SAAU,EAAK,KAAK,CAAC,EAAK,OAAO,CAAC,KAAO,EAC1C,CACD,KFxiB2B,MEyiB1B,IAAI,EAAQ,EAAI,MAAM,CAAC,EAAE,CACrB,EAAS,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAClC,GAAI,CAAC,EACJ,MAAM,AAAI,MAAM,uBAAyB,GAE1C,IAAI,EAAM,CAAC,EACP,EAAI,EAaR,OAZA,OAAO,IAAI,CAAC,IAAa,OAAO,CAAC,AAAC,KAC7B,CAAA,AAAiC,EAAjC,EAAO,OAAO,CAAC,EAAW,CAAC,EAAE,CAAI,IAIrC,CAAG,CAAC,EAAE,CAAG,EAAI,MAAM,CAAC,EAAI,EAAE,CAC1B,IACD,GACoB,MAAhB,EAAI,OAAO,EAEd,CAAA,EAAI,OAAO,CAAG,IAAd,EAEM,CACR,SACC,MAAM,AAAI,MAAM,oBAAsB,EAAI,OAAO,CAClD,CACD,CAEA,MAAM,CAAM,CAAE,CACb,IAAI,EAAW,IAAI,CAAC,EAAE,CAAC,GAEvB,OAAO,IAAI,CAAC,SAAS,CADX,CAAE,QAAS,QAAS,OAAQ,CAAC,EAAO,AAAC,EACpB,AAAC,IAC3B,IAAI,EACJ,OAAQ,EAAI,OAAO,EACnB,IFtlB2B,MEwlB1B,GADA,EAAO,EAAI,MAAM,CAAC,EAAE,CAChB,IAAI,CAAC,EAAE,CAAC,KAAU,EAAU,CAC/B,IAAI,EAAQ,CAAC,EAIb,OAHA,EAAI,IAAI,CAAC,OAAO,CAAC,AAAC,IACjB,CAAK,CAAC,EAAM,OAAO,CAAC,CAAG,CACxB,GACO,CACR,CACA,KACD,KF1kB2B,ME4kB1B,GADA,EAAO,EAAI,MAAM,CAAC,EAAE,CAChB,IAAI,CAAC,EAAE,CAAC,KAAU,EACrB,MAAM,IAAI,GAAS,EAGrB,CACD,EACD,CAEA,aAAa,CAAI,CAAE,CAClB,IAAI,EAAU,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,eACtC,AAAgB,KAAA,IAAZ,GAGG,EAAQ,KAAK,CAAC,KAAK,QAAQ,CAAC,EACpC,CAEA,4BAA4B,CAAC,CAAE,CAC9B,IAAI,EAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,qCAChC,AAAU,KAAA,IAAN,GAGG,EAAE,KAAK,CAAC,KAAK,QAAQ,CAAC,EAC9B,CAEA,aAAc,CACb,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,GACpB,CAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAC9B,EAAS,IAAI,CAAC,mCAEX,IAAI,CAAC,MAAM,CAAC,aAAa,EAC5B,EAAS,IAAI,CAAC,wBAGf,IAAI,EAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GACjC,GACH,IAAI,CAAC,IAAI,CAAC,EAEZ,CAEA,UAAU,CAAG,CAAE,CACd,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAEhB,IAAI,EAAS,EAAI,MAAM,CAAC,EAAE,CACtB,EAAO,EAAI,MAAM,CAAC,KAAK,CAAC,GAC5B,OAAQ,GACR,IAAK,KAEJ,GADA,IAAI,CAAC,WAAW,CAAG,CAAA,EACf,AAAY,MAAZ,CAAI,CAAC,EAAE,CACV,MAOD,GAJA,QAAQ,GAAG,CAAC,yBAA0B,IAAI,CAAC,IAAI,CAAC,SAAS,EAEzD,IAAI,CAAC,WAAW,GAEZ,IAAI,CAAC,MAAM,GAAK,GAAO,MAAM,CAAC,UAAU,CAAE,CAC7C,GAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAS,CACpC,IAAI,CACA,CAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CACxB,EAAU,IAAI,CAAC,YAAY,CAAC,QAAS,IAAI,CAAC,MAAM,CAAC,SAAS,EAChD,IAAI,CAAC,MAAM,CAAC,YAAY,CAClC,EAAU,IAAI,CAAC,YAAY,CAAC,YAClB,IAAI,CAAC,MAAM,CAAC,eAAe,EACrC,CAAA,EAAU,IAAI,CAAC,YAAY,CAAC,cAAe,IAAI,CAAC,MAAM,CAAC,eAAe,CAAA,EAEtE,AAAA,CAAA,GAAW,QAAQ,OAAO,EAAA,EAAI,KAAK,CAAC,AAAC,IACrC,IAAI,CAAC,aAAa,CAAC,GACnB,IAAI,CAAC,UAAU,EAChB,EACD,CAEI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA+B,IAAI,CAAC,MAAM,CAAC,cAAc,EACpF,IAAI,CAAC,IAAI,CAAC,CAAE,QAAS,UAAW,OAAQ,CAAC,OAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,AAAC,GAG9E,IAAI,CAAC,IAAI,CAAC,CAAE,QAAS,MAAO,OAAQ,CAAC,MAAM,AAAC,EAC7C,CACA,KACD,KAAK,MACJ,QAAQ,GAAG,CAAC,+BAAgC,CAAI,CAAC,EAAE,EACnD,IAAI,CAAC,WAAW,GAChB,KACD,KAAK,MACJ,QAAQ,GAAG,CAAC,iCAAkC,CAAI,CAAC,EAAE,EACrD,KACD,KAAK,MACJ,QAAQ,GAAG,CAAC,sBAAuB,CAAI,CAAC,EAAE,EAC1C,KACD,KAAK,MACJ,QAAQ,GAAG,CAAC,sBAAuB,CAAI,CAAC,EAAE,EACtC,IAAI,CAAC,MAAM,GAAK,GAAO,MAAM,CAAC,UAAU,EAC3C,IAAI,CAAC,IAAI,CAAC,CAAE,QAAS,MAAO,OAAQ,CAAC,MAAM,AAAC,EAG9C,CACD,CAEA,KAAK,CAAG,CAAE,CACT,GAAI,CAAC,IAAI,CAAC,EAAE,CACX,MAAM,AAAI,MAAM,8BAAgC,EAAI,OAAO,CAAG,sBAE/D,IAAI,EAAM,GAAkB,GAC5B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GACT,IAAI,CAAC,KAAK,EACb,QAAQ,KAAK,CAAC,QAAS,EAEzB,CAEA,mBAAoB,CACnB,IAAI,CAAC,EAAE,CAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,GACnC,IAAI,CAAC,YAAY,CAAG,IAAI,GAAe,IAAI,CAAC,YAAY,CAAE,IAAI,CAAC,EAAE,EACjE,IAAI,CAAC,SAAS,CAAG,IAAI,GAAe,IAAI,CAAC,SAAS,CAAE,IAAI,CAAC,EAAE,CAC5D,CAEA,SAAS,CAAI,CAAE,CACd,MAAO,AAAS,MAAT,GAAgB,IAAI,CAAC,EAAE,CAAC,KAAU,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CACxE,CAEA,SAAS,CAAI,CAAE,CACd,OAAO,IAAI,CAAC,EAAE,CAAC,KAAU,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAC3C,CAEA,UAAU,CAAI,CAAE,CAEf,OAAO,AADS,IAAI,CAAC,QAAQ,CAAC,SAAS,GACtB,OAAO,CAAC,CAAI,CAAC,EAAE,GAAK,CACtC,CAEA,OAAO,CAAI,CAAE,CAEZ,MAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAS,CAAC,EAAK,UAAU,CAAC,IAC1E,CAEA,gBAAgB,CAAG,CAAE,CACpB,cAAc,IAAI,CAAC,cAAc,EACjC,IAAI,CAAC,cAAc,CAAG,KAElB,GAAO,GAIX,CAAA,IAAI,CAAC,cAAc,CAAG,YAAY,KAC7B,IAAI,CAAC,EAAE,EACV,IAAI,CAAC,IAAI,CAAC,CAAE,QAAS,OAAQ,OAAQ,CAAC,QAAQ,AAAC,EAEjD,EAAG,AAAM,IAAN,EAAH,CACD,CAIA,UAAU,CAAG,CAAE,CAAI,CAAE,CACpB,IAEI,EAFA,EAAM,EAAI,OAAO,CASrB,OANI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,sBAEzB,EAAQ,SAAO,IACf,EAAI,IAAI,CAAG,CAAE,GAAG,EAAI,IAAI,CAAE,MAAA,CAAM,GAG1B,IAAI,QAAQ,CAAC,EAAS,SACxB,EAEJ,IAAI,EAAgB,AAAC,IACpB,IAyBI,EAzBA,EAAM,EAAM,MAAM,CAAC,OAAO,CAE1B,EAAW,AF9CZ,SAAyB,CAAG,EAClC,GAAI,EAAI,IAAI,CAAC,KAAK,CACjB,OAAO,EAAI,IAAI,CAAC,KAAK,CAGtB,IAAI,EAAQ,EAAI,KAAK,CACrB,KAAO,GAAO,CACb,GAAI,EAAM,IAAI,CAAC,KAAK,CACnB,OAAO,EAAM,IAAI,CAAC,KAAK,CAExB,EAAQ,EAAM,MAAM,AACrB,CAEA,OAAO,IACR,EEgCuC,GACnC,GAAI,GAAY,IAAa,EAC5B,OAGD,IAAI,EAAU,CAAA,EACd,OAAQ,EAAI,OAAO,EACnB,IAAK,OACJ,EAAU,EAAI,MAAM,CAAC,EAAE,GAAK,EAC5B,KACD,KF5vB4B,ME6vB5B,IFzvB8B,ME0vB9B,IFrvB8B,MEsvB9B,IF1xBwB,ME2xBvB,EAAU,EAAI,MAAM,CAAC,EAAE,GAAK,CAE7B,CACA,GAAI,EAAS,CACZ,IACA,EAAO,IAAI,GAAS,IACpB,MACD,CAGA,GAAI,CACH,EAAS,EAAK,EACf,CAAE,MAAO,EAAK,CACb,IACA,EAAO,EACR,CACI,IACH,IACA,EAAQ,GAIV,EAEI,EAAe,KACd,IAAI,CAAC,MAAM,GAAK,GAAO,MAAM,CAAC,YAAY,GAC7C,IACA,EAAO,AAAI,MAAM,sBAEnB,EAEA,EAAuB,KACtB,IAAI,CAAC,mBAAmB,CAAC,UAAW,GACpC,IAAI,CAAC,mBAAmB,CAAC,SAAU,EACpC,EAIA,IAAI,CAAC,gBAAgB,CAAC,UAAW,EAAe,CAAE,QAAS,CAAA,CAAK,GAChE,IAAI,CAAC,gBAAgB,CAAC,SAAU,GAChC,IAAI,CAAC,IAAI,CAAC,EACX,EACD,CAEA,KAAK,CAAO,CAAE,CAAQ,CAAE,CACvB,IAAI,EAAS,CAAC,EAAQ,QAClB,GACH,EAAO,IAAI,CAAC,GAMN,IAAI,CAAC,SAAS,CAJX,CACT,QAAS,OACT,OAAA,CACD,EAC2B,AAAC,IAC3B,OAAQ,EAAI,OAAO,EACnB,IFrzB8B,MEszB9B,IFrzBgC,MEszBhC,IFzyB8B,ME0yB9B,IF3yB+B,ME4yB/B,IF9yB8B,ME+yB9B,IF9yB+B,ME+yB9B,GAAI,IAAI,CAAC,EAAE,CAAC,EAAI,MAAM,CAAC,EAAE,IAAM,IAAI,CAAC,EAAE,CAAC,GACtC,MAAM,IAAI,GAAS,GAEpB,KACD,KAAK,OACJ,GAAI,IAAI,CAAC,QAAQ,CAAC,EAAI,MAAM,CAAC,IAAI,GAAK,IAAI,CAAC,EAAE,CAAC,EAAI,MAAM,CAAC,EAAE,IAAM,IAAI,CAAC,EAAE,CAAC,GACxE,MAAO,CAAA,CAGT,CACD,EACD,CAEA,WAAW,CAAG,CAAE,CAAS,CAAE,CAC1B,IAAI,EAAY,KACZ,EAAW,EAAE,CACjB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAK,AAAC,IAC3B,GAAI,EAAW,CACd,IAAI,EAAQ,EAAI,KAAK,CACrB,KAAO,GAAO,CACb,GAAI,EAAM,IAAI,GAAK,EAAW,CAC7B,EAAS,IAAI,CAAC,GACd,KACD,CACA,EAAQ,EAAM,MAAM,AACrB,CACD,CAEA,GAAI,AAAgB,UAAhB,EAAI,OAAO,CACd,OAGD,IAAI,EAAQ,EAAI,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,KACjC,EAAO,EAAI,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAC/B,GAAI,GAAS,EAAI,MAAM,CAAC,EAAE,GAAK,EAAW,CACzC,EAAY,EACZ,MACD,CACA,GAAI,CAAC,GAAS,IAAS,EACtB,MAAO,CAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAK,CAAE,SAAA,CAAS,CAE/C,EACD,CAEA,qBAAqB,CAAM,CAAE,CAG5B,IAAI,EAAU,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAKxC,IAAI,CAAC,UAAU,CAJZ,CACT,QAAS,cACT,OAAA,CACD,EAC4B,eAAe,IAAI,CAAC,AAAC,GAAU,EAAM,QAAQ,GAG1E,OADA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAG,EAAQ,KAAK,CAAC,KAAO,GAC7C,CACR,CAGA,MAAM,mBAAmB,CAAM,CAAE,CAAM,CAAE,CAAK,CAAE,CAC/C,IAAI,EAAM,KAAK,GAAG,CAAC,EAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,IAE/C,EAAW,MAAM,IAAI,CAAC,oBAAoB,CADjC,CAAC,SAAU,EAAQ,aAAe,EAAQ,EAAI,EAE3D,MAAO,CAAE,SAAA,EAAU,KAAM,EAAS,MAAM,EAAI,CAAI,CACjD,CAGA,MAAM,oBAAoB,CAAM,CAAE,CAAK,CAAE,CAAM,CAAE,CAAK,CAAE,CACvD,IAAI,EAAM,KAAK,GAAG,CAAC,EAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,IAC/C,EAAS,CAAC,QAAS,EAAQ,aAAe,EAAM,IAAI,CAAE,EAAI,CAC1D,EAAW,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAE/C,GAAI,AADJ,CAAA,GAAS,EAAS,MAAM,AAAN,GACL,EACZ,MAAM,AAAI,MAAM,2DAEjB,AAAI,EAAS,MAAM,EAAI,GAEtB,EAAQ,CAAE,GAAG,CAAK,CAAE,KAAM,CAAQ,CAAC,EAAS,MAAM,CAAG,EAAE,CAAC,IAAI,CAAC,IAAI,AAAC,EAC3D,MAAM,IAAI,CAAC,mBAAmB,CAAC,EAAQ,EAAO,EAAQ,IAEvD,CAAE,SAAA,CAAS,CACnB,CAEA,MAAM,oBAAoB,CAAE,CAAE,CAAE,CAAE,CAMjC,MAAO,AADK,CAAA,MAAM,IAAI,CAAC,UAAU,CAJvB,CACT,QAAS,cACT,OAAQ,CAAC,UAAW,aAAe,EAAI,aAAe,EAAI,IAAK,AAChE,EACuC,4BAAvC,EACa,QAAQ,CAAC,GAAG,CAAC,AAAC,IAC1B,QAAQ,MAAM,CAAC,AAAgB,gBAAhB,EAAI,OAAO,EAAsB,AAAkB,YAAlB,EAAI,MAAM,CAAC,EAAE,EACtD,CACN,KAAM,EAAI,MAAM,CAAC,EAAE,CACnB,cAAe,EAAI,MAAM,CAAC,EAAE,AAC7B,GAEF,CAEA,MAAM,qBAAsB,CAE3B,IAAI,EAAQ,MAAM,IAAI,CAAC,UAAU,CADvB,CAAE,QAAS,UAAW,OAAQ,CAAC,eAAe,AAAC,EAClB,4BACnC,EAAW,IAAI,IACnB,IAAK,IAAI,KAAO,EAAM,QAAQ,CAAE,CAC/B,QAAQ,MAAM,CAAC,AAAgB,YAAhB,EAAI,OAAO,EAAkB,AAAkB,YAAlB,EAAI,MAAM,CAAC,EAAE,EACzD,IAAI,EAAK,EAAI,MAAM,CAAC,EAAE,CAClB,EAAS,GAAc,EAAI,MAAM,CAAC,EAAE,EACxC,EAAS,GAAG,CAAC,EAAI,EAClB,CACA,OAAO,CACR,CAEA,QAAQ,CAAM,CAAE,EACX,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAIvB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAQ,CAAA,GAGvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAG,EAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,IAInD,IAAI,CAAC,IAAI,CAAC,CAAE,QAAS,UAAW,OAAQ,CAAC,IAAK,EAAO,AAAC,GACvD,CAEA,UAAU,CAAM,CAAE,CACZ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAIxB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAES,GAA3B,IAAI,CAAC,QAAQ,CAAC,OAAO,IAIzB,IAAI,CAAC,IAAI,CAAC,CAAE,QAAS,UAAW,OAAQ,CAAC,IAAK,EAAO,AAAC,GACvD,CAEA,qBAAqB,CAAK,CAAE,CAC3B,IAAI,EAAM,CACT,QAAS,UACT,OAAQ,CAAC,aAAc,GAAe,GAAO,AAC9C,EACA,OAAO,IAAI,CAAC,SAAS,CAAC,EAAK,AAAC,IAC3B,GAAI,AAAgB,YAAhB,EAAI,OAAO,EAAkB,AAAkB,eAAlB,EAAI,MAAM,CAAC,EAAE,CAC7C,OAAO,EAAI,MAAM,CAAC,EAAE,AAEtB,EACD,CAEA,gBAAgB,CAAK,CAAE,CAAQ,CAAE,CAKhC,OAAO,IAAI,CAAC,SAAS,CAJX,CACT,QAAS,WACT,OAAQ,CAAC,IAAK,GAAS,IAAK,EAAS,AACtC,EAC2B,AAAC,IAC3B,GAAI,AAAgB,aAAhB,EAAI,OAAO,CAIf,MAAO,CACN,qBAAsB,AAAW,0BAFrB,EAAI,MAAM,CAAC,EAAE,CAGzB,QAAS,EAAI,MAAM,CAAC,EAAE,CACtB,QAAS,EAAI,MAAM,CAAC,EAAE,AACvB,CACD,EACD,CAEA,cAAc,CAAO,CAAE,CAAI,CAAE,CAK5B,OAAO,IAAI,CAAC,SAAS,CAJX,CACT,QAAS,SACT,OAAQ,CAAC,EAAS,EAAK,AACxB,EAC2B,AAAC,IAC3B,GAAI,AAAgB,WAAhB,EAAI,OAAO,CAGf,MAAO,CAAE,QAAS,EAAI,MAAM,CAAC,EAAE,AAAC,CACjC,EACD,CAEA,oBAAqB,CACpB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAC9B,CAEA,gBAAgB,CAAM,CAAE,CACvB,IAAI,CAAC,IAAI,CAAC,CACT,QAAS,WACT,OAAQ,CAAC,EAAO,AACjB,EACD,CAEA,cAAc,CAAM,CAAE,CAAC,CAAE,CACxB,IAAI,CAAC,IAAI,CAAC,CACT,QAAS,WACT,OAAQ,CAAC,EAAQ,aAAa,EAAE,AACjC,EACD,CACD,CCziCA,SAAS,GAAkB,CAAM,EAChC,IAAI,EAAI,EAAE,CACV,IAAK,IAAI,KAAK,EACb,EAAE,IAAI,CAAC,mBAAmB,GAAK,IAAM,mBAAmB,CAAM,CAAC,EAAE,GAElE,OAAO,EAAE,IAAI,CAAC,IACf,CAEO,eAAe,GAAoB,CAAG,MAExC,EACJ,GAAI,CAEH,GAAI,CAAC,AADL,CAAA,EAAO,MAAM,MAAM,EAAM,0CAAzB,EACU,EAAE,CACX,MAAM,AAAI,MAAM,CAAC,YAAY,EAAE,EAAK,MAAM,CAAC,CAAC,EAAE,EAAK,UAAU,CAAA,CAAE,CAEjE,CAAE,MAAO,EAAK,CAGb,GAFA,QAAQ,IAAI,CAAC,4GAA6G,GAEtH,CAAC,AADL,CAAA,EAAO,MAAM,MAAM,EAAM,oCAAzB,EACU,EAAE,CACX,MAAM,AAAI,MAAM,CAAC,YAAY,EAAE,EAAK,MAAM,CAAC,CAAC,EAAE,EAAK,UAAU,CAAA,CAAE,CAEjE,CAEA,IAAI,EAAO,MAAM,EAAK,IAAI,GAC1B,GAAI,CAAC,EAAK,MAAM,CACf,MAAM,AAAI,MAAM,8BAEjB,GAAI,CAAC,EAAK,sBAAsB,EAG5B,CAAC,EAAK,cAAc,CAFvB,MAAM,AAAI,MAAM,8CAKjB,GAAI,CAAC,EAAK,wBAAwB,CAAC,QAAQ,CAAC,QAC3C,MAAM,AAAI,MAAM,2DAEjB,OAAO,CACR,CAiBA,SAAS,GAAiB,CAAQ,CAAE,CAAY,EAC/C,IAAI,EAAU,CACb,eAAgB,oCAChB,OAAU,kBACX,EAIA,OAHI,GACH,CAAA,EAAQ,aAAgB,CAAG,SAAW,KAAK,mBAAmB,GAAY,IAAM,mBAAmB,GADpG,EAGO,CACR,CAEO,eAAe,GAAa,CAAA,eAAE,CAAc,CAAA,YAAE,CAAW,CAAA,KAAE,CAAI,CAAA,SAAE,CAAQ,CAAA,aAAE,CAAY,CAAE,EAC/F,IAAI,EAAO,CACV,WAAc,qBACd,KAAA,EACA,aAAgB,CACjB,EACK,GACJ,CAAA,EAAK,SAAY,CAAG,CADrB,EAIA,IAAI,EAAO,MAAM,MAAM,EAAe,cAAc,CAAE,CACrD,OAAQ,OACR,QAAS,GAAiB,EAAU,GACpC,KAAM,GAAkB,EACzB,GAEA,GAAI,CAAC,EAAK,EAAE,CACX,MAAM,AAAI,MAAM,CAAC,YAAY,EAAE,EAAK,MAAM,CAAC,CAAC,EAAE,EAAK,UAAU,CAAA,CAAE,EAIhE,GAAI,AAFJ,CAAA,EAAO,MAAM,EAAK,IAAI,EAAtB,EAES,KAAK,CACb,MAAM,AAAI,MAAM,0BAA6B,CAAA,EAAK,iBAAiB,EAAI,EAAK,KAAK,AAAL,GAG7E,OAAO,CACR,CAEO,eAAe,GAAgB,CAAA,eAAE,CAAc,CAAA,MAAE,CAAK,CAAA,SAAE,CAAQ,CAAA,aAAE,CAAY,CAAE,EACtF,IAAI,EAAO,MAAM,MAAM,EAAe,sBAAsB,CAAE,CAC7D,OAAQ,OACR,QAAS,GAAiB,EAAU,GACpC,KAAM,GAAkB,CAAE,MAAA,CAAM,EACjC,GACA,GAAI,CAAC,EAAK,EAAE,CACX,MAAM,AAAI,MAAM,CAAC,YAAY,EAAE,EAAK,MAAM,CAAC,CAAC,EAAE,EAAK,UAAU,CAAA,CAAE,EAEhE,IAAI,EAAO,MAAM,EAAK,IAAI,GAC1B,GAAI,CAAC,EAAK,MAAM,CACf,MAAM,AAAI,MAAM,iBAEjB,OAAO,CACR,CE1GA,AAAA,EAAU,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAG,QAE7C,AAAA,EAAU,sBAAsB,CAAC,OACjC,AAAA,EAAU,sBAAsB,CAAC,QACjC,AAAA,EAAU,sBAAsB,CAAC,MAAO,CAAA,GAExC,MAAM,GAAkB,AAAA,EAAU,gBAAgB,CAAC,aAAc,CAChE,OAAQ,CAAA,EACR,SACC,MAAO,UAAY,IAAI,CAAC,CAAC,AAC1B,CACD,GAsBe,SAAA,GAAiB,CAAI,CAAE,CAAO,EAC5C,IAAI,EAAQ,AAAA,EAAU,IAAI,CAAC,GAEvB,EAAW,EAAE,CACb,EAAO,EACX,EAAM,OAAO,CAAC,AAAC,IACd,GAAI,CAAC,EAAM,MAAM,CAChB,OAGD,IAAM,EAAS,EAAK,SAAS,CAAC,EAAM,EAAM,KAAK,EAC/C,EAAS,IAAI,CAAC,GAEd,EAAS,IAAI,CAAC,AAAA,EAAI,CAAC;;SAEZ,EAAE,EAAM,IAAI,CAAC;;;YAGV,EAAE,EAAQ;IAClB,EAAE,EAAM,KAAK,CAAC;EAChB,CAAC,EAED,EAAO,EAAM,GAAG,AACjB,GAEA,IAAM,EAAS,EAAK,SAAS,CAAC,GAG9B,OAFA,EAAS,IAAI,CAAC,GAEP,CACR,CClDA,SAAS,GAAQ,CAAE,EAClB,OAAO,GAAM,KAAO,GAAM,GAC3B,CAEA,SAAS,GAAW,CAAI,EACvB,GAAI,EAAK,MAAM,CAPS,EAQvB,MAAO,CAAA,EAER,IAAK,IAAI,EAAI,EAAG,EAVQ,EAUc,IAAK,CAC1C,IAAI,EAAK,CAAI,CAAC,EAAE,CAAC,WAAW,GAE5B,GAAI,CADK,CAAA,GAAO,KAAO,GAAM,KAAS,GAAM,KAAO,GAAM,GAAzD,EAEC,MAAO,CAAA,CAET,CACA,MAAO,CAAA,CACR,CAEO,SAAS,GAAM,CAAI,EACzB,IAAI,EAAM,GACV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,MAAM,CAAE,IAAK,CACrC,IAAI,EAAK,CAAI,CAAC,EAAE,CAChB,OAAQ,GACR,IAnCW,OAoCX,IAnCa,OAoCb,IAnCgB,OAoChB,IAnCoB,OAoCpB,IAnCgB,OAoChB,IAjCoB,OAkCpB,IAjCY,OAkCX,KACD,KAtCY,OAuCX,GAAI,CAAC,GAAQ,CAAI,CAAC,EAAI,EAAE,EACvB,MAGG,GAAQ,CAAI,CAAC,EAAA,EAAI,EAAE,GACtB,IAEmB,MAAhB,CAAI,CAAC,EAAI,EAAE,EAAY,GAAQ,CAAI,CAAC,EAAI,EAAE,GAEzC,GAAQ,CAAI,CAAC,AADjB,CAAA,GAAK,CAAA,EACgB,EAAE,GACtB,IAGF,KACD,KApDgB,OAqDf,GAAI,CAAC,GAAW,EAAK,KAAK,CAAC,EAAI,IAC9B,KAGmB,CAAA,MAAhB,CAAI,CAAC,AADT,CAAA,GApDsB,CAoDtB,EACa,EAAE,EAAY,GAAW,EAAK,KAAK,CAAC,EAAI,KACpD,CAAA,GAAK,CADN,EAGA,KACD,SACC,GAAO,CACR,CACD,CACA,OAAO,CACR,CD3DA,AAAA,EAAU,cAAc,CAAC,aAAc,CAAC,CAAA,QAAE,CAAO,CAAA,OAAE,CAAM,CAAE,IAC1D,GAAM,CAAA,MAAE,CAAK,CAAA,WAAE,CAAU,CAAA,IAAE,CAAG,CAAA,OAAE,CAAM,CAAE,CAAG,EAAQ,MAAM,CACnD,CAAA,aAAE,CAAY,CAAE,CAAG,EAAQ,MAAM,CAAC,MAAM,CAExC,EAAS,EAAO,KAAK,CAAC,EAAE,CAAC,GACzB,EAAU,IAAI,AAAA,EAAU,KAAK,CAAC,IAC9B,EAAU,EAAQ,EAAE,CAAC,GAE3B,EAAO,EAAE,CAAC,EAAc,GACxB,EAAO,EAAE,CAAC,EAAO,GACjB,EAAO,EAAE,CAAC,EAAY,GACtB,EAAO,EAAE,CAAC,EAAK,GACf,EAAO,EAAE,CAAC,EAAQ,GAClB,EAAQ,EAAE,CAAC,EAAc,GACzB,EAAQ,EAAE,CAAC,EAAO,GAClB,EAAQ,EAAE,CAAC,EAAY,GACvB,EAAQ,EAAE,CAAC,EAAQ,GACnB,EAAQ,EAAE,CAAC,EAAc,EAC1B,GE3BO,MAAM,GAAa,CACzB,OAAQ,SACR,QAAS,UACT,KAAM,MACP,EAEa,GAAe,AAAA,GAAO,MAAM,CAE5B,GAAS,CACrB,KAAM,GACN,QAAS,UACT,UAAW,YAEX,QAAQ,CAAC,CAAE,CAAC,EACX,IAAM,EAAW,CAChB,CAAC,GAAO,IAAI,CAAC,CAAE,EACf,CAAC,GAAO,OAAO,CAAC,CAAE,EAClB,CAAC,GAAO,SAAS,CAAC,CAAE,CACrB,EACA,OAAO,CAAQ,CAAC,EAAE,CAAG,CAAQ,CAAC,EAAE,AACjC,EACA,MAAA,CAAM,EAAG,IACA,GAAO,OAAO,CAAC,EAAG,GAAK,EAAK,EAAI,CAE1C,EAEa,GAAc,CAC1B,UAAW,YACX,KAAM,MACP,EAEa,GAA0B,CACtC,KAAM,OAEN,KAAM,MACP,EAEa,GhBmBJmD,CAvDFA,EAAU,CACfV,IAHDm8C,EAAY,OAAS5+C,IAIpBsC,GgBkC2C,WhBhC3C60B,SAAAA,SAASj1B,CAAAA,CAAO28C,CAAAA,EAIf,OAAO38C,EAAML,QAAAA,CAASg9C,EACvB,EAEAznB,SAAA,SAASl1B,CAAAA,EAAT,IAGM48C,EACAC,EA8BL,OAjCKlF,IAAAA,CAAKrxC,eAAAA,EAELs2C,CAAAA,EAAO,IAAI32B,IAAAA,AACX42B,CAAAA,EAAM,CAAA,CAAA,CAAA,CACNH,EAAAA,CAAa/E,IAAAA,CAEjBA,IAAAA,CAAKrxC,eAAAA,CAAkB,WAAA,OAAMu2C,CAAG,EAEhClF,IAAAA,CAAKz0C,oBAAAA,CAAuB,WAC3B05C,EAAO,IACR,EAEAjF,IAAAA,CAAKzxC,qBAAAA,CAAwB,SAAU42C,CAAAA,EAClCnF,IAAAA,CAAK33C,KAAAA,CAAMsF,KAAAA,GAAUw3C,EAAOx3C,KAAAA,EAC/Bs3C,EAAKx9B,OAAAA,CAAQ,SAAA3d,CAAAA,EACZA,EAACnB,GAAAA,CAAAA,CAAU,EACX23C,EAAcx2C,EACf,EAEF,EAEAk2C,IAAAA,CAAKlyC,GAAAA,CAAM,SAAAhE,CAAAA,EACVm7C,EAAKt2B,GAAAA,CAAI7kB,GACT,IAAIs7C,EAAMt7C,EAAEyB,oBAAAA,AACZzB,CAAAA,EAAEyB,oBAAAA,CAAuB,WACpB05C,GACHA,EAAKn6B,MAAAA,CAAOhhB,GAETs7C,GAAKA,EAAIn9C,IAAAA,CAAK6B,EACnB,CACD,CAAA,EAGMzB,EAAML,QACd,AAAA,CAAA,GASeu1B,QAAAA,CAAQ90B,EAAAA,CAAea,EAAQg0B,QAAAA,CAAS5vB,WAAAA,CACvDpE,EgBlBK,SAAS,GAAa,CAAG,EAC/B,OAAQ,EAAI,IAAI,EAChB,KAAK,GAAW,MAAM,CACrB,OAAO,IACR,MAAK,GAAW,OAAO,CACtB,OAAO,GAAc,CAAE,OAAQ,EAAI,IAAI,AAAC,EACzC,MAAK,GAAW,IAAI,CACnB,OAAO,GAAc,CAAE,OAAQ,EAAI,IAAI,CAAE,QAAS,MAAO,EAC1D,CACA,MAAM,AAAI,MAAM,wBAA0B,EAAI,IAAI,CACnD,CAEO,SAAS,GAAc,CAAG,CAAE,CAAG,EACrC,IAAI,EAAS,GAAa,UAC1B,AAAI,EAAI,IAAI,CAAC,KAAK,CACV,EAAS,UAAY,mBAAmB,EAAI,IAAI,CAAC,KAAK,EAEtD,EAAS,cAAgB,mBAAmB,EAAI,IAAI,CAAC,IAAI,CAElE,CAEO,SAAS,GAAc,CAAM,CAAE,CAAc,EACnD,IAAI,EAAU,EAAO,IAAI,QAEzB,AAAI,GAAkB,EAAe,IAAI,EAAI,EAAe,IAAI,GAAK,EAAe,IAAI,CAEhF,EAAe,IAAI,CAGvB,IAKA,EACI,EAAe,IAAI,EAAI,EAAe,IAAI,EAAI,SAC3C,EAAO,SAAS,CACnB,UAEA,SAET,CAEO,SAAS,GAAmB,CAAG,EAIrC,GAAI,CAAC,EAAI,IAAI,CAAC,IAAI,CACjB,MAAM,AAAI,MAAM,4BAEjB,MAAO,CAAE,KAAM,EAAI,IAAI,CAAC,IAAI,AAAC,CAC9B,CAEO,SAAS,GAAgB,CAAC,CAAE,CAAC,EACnC,GAAI,CAAC,EACJ,MAAO,CAAA,EAER,GAAI,CAAC,EACJ,MAAO,CAAA,EAER,GAAI,CAAC,EAAE,IAAI,EAAI,CAAC,EAAE,IAAI,CACrB,MAAM,AAAI,MAAM,wBAEjB,OAAO,EAAE,IAAI,EAAI,EAAE,IAAI,AACxB,CAEO,SAAS,GAAuB,CAAG,CAAE,CAAO,EAClD,GAAI,CAAC,EACJ,MAAO,CAAA,EAER,GAAI,CAAC,EAAI,IAAI,CAAC,IAAI,CACjB,MAAM,AAAI,MAAM,4BAEjB,GAAI,CAAC,EAAQ,IAAI,CAChB,MAAM,AAAI,MAAM,wBAEjB,OAAO,EAAI,IAAI,CAAC,IAAI,EAAI,EAAQ,IAAI,AACrC,CAEA,SAAS,GAAY,CAAK,CAAE,CAAO,EAClC,IAAI,EAMJ,GAJC,EADG,AAAmB,YAAnB,OAAO,EACA,EAAQ,EAAO,GAEf,EAEP,IAAU,GAAY,EAG1B,MAAO,CAAE,GAAG,CAAK,CAAE,GAAG,CAAO,AAAC,CAC/B,CAEA,SAAS,GAAe,CAAG,EAC1B,OAAO,EAAI,IAAI,GAAK,GAAW,MAAM,AACtC,CAEA,SAAS,GAAgB,CAAG,EAC3B,OAAO,EAAI,IAAI,GAAK,GAAW,OAAO,AACvC,CAEA,SAAS,GAAmB,CAAC,CAAE,CAAC,EAC/B,IAAI,EAAI,EACR,KACC,AADM,EAAI,EAAE,MAAM,EACd,CAAC,CAAC,EAAE,GAAK,EADO,EAAE,GAKvB,OAAO,EAAE,SAAS,CAAC,EACpB,CAIA,SAAS,GAAe,CAAC,CAAE,CAAC,EAC3B,GAAI,EAAE,MAAM,GAAK,EAAE,MAAM,CACxB,OAAO,EAAE,MAAM,CAAG,EAAE,MAAM,CAAG,EAAI,GAElC,GAAI,GAAe,KAAO,GAAe,GACxC,OAAO,GAAe,GAAK,EAAI,GAGhC,GAAI,GAAgB,IAAM,GAAgB,GAAI,CAC7C,IAAM,EAAY,GAAmB,EAAE,IAAI,CAAE,EAAE,IAAI,CAAC,EAAE,EAChD,EAAY,GAAmB,EAAE,IAAI,CAAE,EAAE,IAAI,CAAC,EAAE,EAChD,EAAM,EAAU,aAAa,CAAC,GAEpC,GAAI,AAAQ,IAAR,EACH,OAAO,CAGT,CAEA,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,CACnC,CA+CA,IAAI,GAAe,EACf,GAAe,EACf,GAAiB,EAEd,MAAM,GAAQ,CACpB,OAAA,IACQ,CAAA,CACN,QAAS,IAAI,IACb,QAAS,IAAI,IACb,aAAc,KACd,gBAAiB,IAAI,IACrB,SAAU,CACT,oBAAqB,CAAA,EACrB,aAAc,GAAwB,IAAI,AAC3C,CACD,CAAA,EAED,aAAa,CAAK,CAAE,CAAE,CAAE,CAAO,EAC9B,IAAI,EAAS,EAAM,OAAO,CAAC,GAAG,CAAC,GAC/B,GAAI,CAAC,EACJ,OAGD,IAAI,EAAU,GAAY,EAAQ,GAClC,GAAI,CAAC,EACJ,OAGD,IAAI,EAAU,IAAI,IAAI,EAAM,OAAO,EAEnC,OADA,EAAQ,GAAG,CAAC,EAAI,GACT,CAAE,QAAA,CAAQ,CAClB,EACA,aAAa,CAAK,CAAE,CAAE,CAAE,CAAO,EAC9B,IAAI,EAAM,GAAM,SAAS,CAAC,EAAO,GACjC,GAAI,CAAC,EACJ,OAGD,IAAI,EAAU,GAAY,EAAK,GAC/B,GAAI,CAAC,EACJ,OAGD,IAAI,EAAU,IAAI,IAAI,EAAM,OAAO,EAEnC,OADA,EAAQ,GAAG,CAAC,EAAI,EAAE,CAAE,GACb,CAAE,QAAA,CAAQ,CAClB,EACA,kBAAkB,CAAK,EACtB,IAAI,EAAM,EAAM,OAAO,CAAC,GAAG,CAAC,EAAM,YAAY,SAC9C,AAAK,EAGE,EAAI,MAAM,CAFT,IAGT,EACA,UAAU,CAAK,CAAE,CAAE,EAClB,OAAQ,OAAO,GACf,IAAK,SACJ,OAAO,EAAM,OAAO,CAAC,GAAG,CAAC,EAC1B,KAAK,SACJ,GAAI,EAAG,EAAE,CACR,OAAO,EAAM,OAAO,CAAC,GAAG,CAAC,EAAG,EAAE,EAG/B,IAAI,EAAW,EAAG,MAAM,CAAE,EAAO,EAAG,IAAI,CACnC,GACJ,CAAA,EAAW,GAAM,iBAAiB,CAAC,EADpC,EAGK,GACJ,CAAA,EAhSyB,GA+R1B,EAIA,IAAI,EAAK,GAAgB,OAAO,CAC5B,EAAS,EAAM,OAAO,CAAC,GAAG,CAAC,GAC3B,GACH,CAAA,EAAK,EAAO,EAAE,AAAF,EAGb,IAAI,EAAS,EAAG,GAChB,IAAK,IAAI,KAAO,EAAM,OAAO,CAAC,MAAM,GACnC,GAAI,EAAI,MAAM,GAAK,GAAY,EAAG,EAAI,IAAI,IAAM,EAC/C,OAAO,EAGT,OAAO,IACR,SACC,MAAM,AAAI,MAAM,2BAA8B,OAAO,EACtD,CACD,EACA,aAAa,CAAK,EAEjB,IAAI,IAAK,GAEL,EAAU,IAAI,IAAI,EAAM,OAAO,EAenC,OAdA,EAAQ,GAAG,CAAC,EAAI,CACf,GAAA,EACA,KAAM,KACN,OAAQ,GAAa,YAAY,CACjC,GAAI,GAAgB,OAAO,CAC3B,MAAO,IAAI,GAAe,KAAM,GAAgB,OAAO,EACvD,QAAS,KACT,kBAAmB,CAAA,EACnB,4BAA6B,CAAA,EAC7B,qBAAsB,CAAA,EACtB,UAAW,KACX,UAAW,CAAA,EACX,aAAc,IACf,GACO,CAAC,EAAI,CAAE,QAAA,CAAQ,EAAE,AACzB,EACA,aAAa,CAAK,CAAE,CAAI,CAAE,CAAQ,CAAE,CAAM,EACzC,IAQI,EARA,EAAM,GAAM,SAAS,CAAC,EAAO,CAAE,OAAQ,EAAU,KAAA,CAAK,GAC1D,GAAI,EACH,MAAO,CAAC,EAAI,EAAE,CAAE,KAAK,CAItB,IAAI,IAAK,GAIR,EADG,AAnVuB,MAmVvB,EACI,GAAW,MAAM,CACd,EAAO,SAAS,CAAC,GACpB,GAAW,OAAO,CAElB,GAAW,IAAI,CAGvB,IAAI,EAAa,MAAM,IAAI,CAAC,EAAM,OAAO,CAAC,MAAM,IAiBhD,OAhBA,EAAW,IAAI,CAAC,CACf,GAAA,EACA,KAAA,EACA,KAAA,EACA,OAAQ,EACR,WAAY,KACZ,OAAQ,CAAA,EACR,MAAO,KACP,cAAe,CAAA,EACf,QAAS,IAAI,GAAe,KAAM,EAAO,EAAE,EAC3C,SAAU,EAAE,CACZ,OAAQ,GAAO,IAAI,CACnB,gBAAiB,IAClB,GAGO,CAAC,EAAI,CAAE,QADA,IAAI,IAAI,AADtB,CAAA,EAAa,EAAW,IAAI,CAAC,GAA7B,EACiC,GAAG,CAAC,AAAC,GAAQ,CAAC,EAAI,EAAE,CAAE,EAAI,EACrC,EAAE,AACzB,EACA,oBAAoB,CAAK,CAAE,CAAE,CAAE,CAAK,EACnC,IAAI,EAAkB,IAAI,IAAI,EAAM,eAAe,EAKnD,OAJA,EAAgB,GAAG,CAAC,EAAI,CACvB,GAAG,EAAgB,GAAG,CAAC,EAAG,CAC1B,GAAG,CAAK,AACT,GACO,CAAE,gBAAA,CAAgB,CAC1B,EACA,qBAAqB,CAAK,CAAE,CAAE,EAC7B,IAAI,EAAkB,IAAI,IAAI,EAAM,eAAe,EAEnD,OADA,EAAgB,MAAM,CAAC,GAChB,CAAE,gBAAA,CAAgB,CAC1B,EACA,cAAc,CAAK,CAAE,CAAG,CAAE,CAAQ,CAAE,CAAM,MAwBrC,EAAQ,EAAyB,EAAK,EAAQ,EAvBlD,SAAS,EAAa,CAAO,EAC5B,OAAO,GAAM,YAAY,CAAC,EAAO,EAAU,EAC5C,CACA,SAAS,EAAa,CAAI,CAAE,CAAO,EAClC,OAAO,GAAM,YAAY,CAAC,EAAO,CAAE,OAAQ,EAAU,KAAA,CAAK,EAAG,EAC9D,CACA,SAAS,EAAW,CAAI,CAAE,CAAO,EAChC,OAAO,EAAa,AAAC,IACpB,IAAI,EAAQ,IAAI,GAAe,EAAO,KAAK,EACvC,EAAU,GAAY,EAAM,GAAG,CAAC,GAAO,GAC3C,GAAK,EAIL,OADA,EAAM,GAAG,CAAC,EAAM,GACT,CAAE,MAAA,CAAM,CAChB,EACD,CAGA,IAAI,GAAoB,EAAK,eAK7B,OAAQ,EAAI,OAAO,EACnB,IPnZwB,MOyZvB,OAAO,EA3ZmB,IA2ZS,CAAE,WAJpB,CAChB,KAAM,EAAI,MAAM,CAAC,EAAE,CACnB,QAAS,EAAI,MAAM,CAAC,EAAE,AACvB,CACgD,EACjD,KPzZ0B,MOkazB,OARA,EAAU,IAAI,IAAI,EAAM,OAAO,EAC/B,EAAM,OAAO,CAAC,OAAO,CAAC,AAAC,IACtB,GAAI,EAAI,MAAM,GAAK,EAClB,OAED,IAAI,EAAU,IAAI,GAAe,EAAI,OAAO,CAAE,EAAO,EAAE,EACvD,EAAQ,GAAG,CAAC,EAAI,EAAE,CAAE,CAAE,GAAG,CAAG,CAAE,QAAA,CAAQ,EACvC,GACO,CACN,QAAA,EACA,GAAG,EAAa,AAAC,GACT,CAAA,CACN,KAAM,EAAO,QAAQ,CAAC,OAAO,GAC7B,GAAI,EAAO,EAAE,CACb,MAAO,IAAI,GAAe,EAAO,KAAK,CAAE,EAAO,EAAE,EACjD,qBAAsB,EAAO,QAAQ,CAAC,OAAO,GAAK,GAAK,EAAO,QAAQ,CAAC,IAAI,GAC3E,UAAW,EAAO,QAAQ,CAAC,SAAS,GACpC,aAAc,EAAO,QAAQ,CAAC,YAAY,EAC3C,CAAA,EACC,AACH,CACD,KAAK,MACJ,OAAO,EAAa,CACnB,kBAAmB,EAAO,YAAY,CAAC,SACvC,4BAA6B,EAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,8BACrD,UAAW,EAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,2BACpC,EACD,KPzX0B,MO0XzB,OAAO,EAAa,CAAE,QAAS,EAAI,MAAM,CAAC,EAAE,AAAC,EAC9C,KP1X2B,MO2X1B,OAAO,EAAa,CAAE,QAAS,IAAK,EACrC,KAAK,WACL,IAAK,SACJ,GAAI,AAAkB,YAAlB,EAAI,MAAM,CAAC,EAAE,CAChB,OAAO,EAAa,CAAE,QAAS,EAAI,MAAM,CAAC,EAAE,AAAC,GAE9C,KACD,KPnbyB,MOqbxB,OAAO,EADP,EAAU,EAAI,MAAM,CAAC,EAAE,CACM,CAAE,MAAO,IAAK,EAC5C,KPrbuB,MOwbtB,OAAO,EAFP,EAAU,EAAI,MAAM,CAAC,EAAE,CAEM,CAAE,MADvB,EAAI,MAAM,CAAC,EAAE,AACgB,EACtC,KPxb8B,MO0b7B,KACD,KPlb4B,MOob3B,OAAO,EADP,EAAU,EAAI,MAAM,CAAC,EAAE,CACM,AAAC,IAC7B,IAAI,EAAU,IAAI,GAAe,KAAM,EAAI,OAAO,CAAC,OAAO,EAQ1D,OAPA,EAAI,IAAI,CAAC,OAAO,CAAC,AAAC,IAEjB,AADkB,EAAS,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAC/B,OAAO,CAAC,AAAC,IACpB,IAAI,EAAS,GAAsB,GACnC,EAAQ,GAAG,CAAC,EAAO,IAAI,CAAE,EAAO,MAAM,CACvC,EACD,GACO,CAAE,QAAA,CAAQ,CAClB,EACD,KP5c0B,MO8czB,GADA,EAAS,EAAI,MAAM,CAAC,EAAE,CAClB,AAAoB,IAApB,EAAI,IAAI,CAAC,MAAM,EAAU,CAAC,EAAO,SAAS,CAAC,IAAW,AAAsB,EAAtB,EAAO,OAAO,CAAC,KAExE,OAAO,EAAW,EAAQ,AAAC,GACnB,CAAA,CAAE,QAAS,CAAA,CAAK,CAAA,GAGxB,OAAO,EAAa,AAAC,IACpB,IAAI,EAAQ,IAAI,GAAe,EAAO,KAAK,EAC3C,IAAK,IAAI,KAAS,EAAI,IAAI,CAAE,CAC3B,IAAI,EAAM,EAAO,aAAa,CAAC,GAE/B,GAAI,AAAc,KAAA,IAAd,EAAI,KAAK,CAAgB,CAC5B,EAAI,IAAI,CAAG,EAAI,KAAK,CAAC,OAAO,CAAC,MAAQ,EACrC,EAAI,QAAQ,CAAG,EAAI,KAAK,CAAC,OAAO,CAAC,MAAQ,EACzC,IAAI,EAAU,EAAO,QAAQ,CAAC,GAAG,GAC7B,GACH,CAAA,EAAI,GAAG,CAAG,EAAI,KAAK,CAAC,OAAO,CAAC,IAAY,CAAA,EAEzC,OAAO,EAAI,KAAK,AACjB,CAEA,EAAI,OAAO,CAAG,CAAA,EAEd,EAAM,GAAG,CAAC,EAAI,IAAI,CAAE,EACrB,CACA,MAAO,CAAE,MAAA,CAAM,CAChB,EAEF,KAAK,OAGJ,GAFA,EAAU,EAAI,MAAM,CAAC,EAAE,CAEnB,EAAO,QAAQ,CAAC,EAAI,MAAM,CAAC,IAAI,EAAG,CACrC,GAAI,CAAC,EAAK,EAAO,CAAG,GAAM,YAAY,CAAC,EAAO,EAAS,EAAU,GACjE,EAAQ,CAAE,GAAG,CAAK,CAAE,GAAG,CAAM,AAAC,CAC/B,CA6BA,OA3BA,EAAS,EAAa,EAAS,AAAC,IAC/B,IAAI,EAAU,IAAI,GAAe,EAAI,OAAO,EAK5C,OAJA,EAAQ,GAAG,CAAC,EAAI,MAAM,CAAC,IAAI,CAAE,IAItB,CAAE,QAAA,EAAS,OAFL,EAAI,MAAM,EAAI,EAAO,QAAQ,CAAC,EAAI,MAAM,CAAC,IAAI,CAEjC,CAC1B,GACA,EAAQ,CAAE,GAAG,CAAK,CAAE,GAAG,CAAM,AAAC,EAE9B,EAAM,CAAE,KAAM,EAAI,MAAM,CAAC,IAAI,CAAE,QAAS,CAAA,CAAM,EAC1C,EAAI,MAAM,CAAC,IAAI,EAClB,CAAA,EAAI,QAAQ,CAAG,EAAI,MAAM,CAAC,IAAI,AAAJ,EAEvB,EAAI,MAAM,CAAC,IAAI,EAClB,CAAA,EAAI,QAAQ,CAAG,EAAI,MAAM,CAAC,IAAI,AAAJ,EAEvB,EAAI,MAAM,CAAC,MAAM,CAAG,IACvB,EAAI,OAAO,CAAG,EAAI,MAAM,CAAC,EAAE,CACP,MAAhB,EAAI,OAAO,EACd,CAAA,EAAI,OAAO,CAAG,IADf,EAGA,EAAI,QAAQ,CAAG,EAAI,MAAM,CAAC,EAAE,EAE7B,EAAS,EAAW,EAAI,MAAM,CAAC,IAAI,CAAE,GACrC,EAAQ,CAAE,GAAG,CAAK,CAAE,GAAG,CAAM,AAAC,CAG/B,KAAK,OAGJ,OAAO,EAFP,EAAU,EAAI,MAAM,CAAC,EAAE,CAEM,AAAC,IAC7B,IAAI,EAAU,IAAI,GAAe,EAAI,OAAO,EAK5C,OAJA,EAAQ,MAAM,CAAC,EAAI,MAAM,CAAC,IAAI,EAIvB,CAAE,QAAA,EAAS,OAFL,EAAI,MAAM,EAAI,CAAC,EAAO,QAAQ,CAAC,EAAI,MAAM,CAAC,IAAI,CAElC,CAC1B,EACD,KAAK,OACJ,EAAU,EAAI,MAAM,CAAC,EAAE,CACvB,IAAI,EAAO,EAAI,MAAM,CAAC,EAAE,CAExB,OAAO,EAAa,EAAS,AAAC,IAC7B,IAAI,EAAU,IAAI,GAAe,EAAI,OAAO,EAK5C,OAJA,EAAQ,MAAM,CAAC,GAIR,CAAE,QAAA,EAAS,OAFL,EAAI,MAAM,EAAI,CAAC,EAAO,QAAQ,CAAC,EAEnB,CAC1B,EACD,KAAK,OAuBJ,OAtBA,EAAU,IAAI,IAAI,EAAM,OAAO,EAC/B,EAAM,OAAO,CAAC,OAAO,CAAC,AAAC,IACtB,GAAI,EAAI,MAAM,GAAK,GAGf,CAAC,EAAI,OAAO,CAAC,GAAG,CAAC,EAAI,MAAM,CAAC,IAAI,EAFnC,OAKD,IAAI,EAAU,IAAI,GAAe,EAAI,OAAO,EAC5C,EAAQ,MAAM,CAAC,EAAI,MAAM,CAAC,IAAI,EAC9B,EAAQ,GAAG,CAAC,EAAI,EAAE,CAAE,CAAE,GAAG,CAAG,CAAE,QAAA,CAAQ,EACvC,GACA,EAAQ,CAAE,GAAG,CAAK,CAAE,QAAA,CAAQ,EAE5B,EAAS,EAAW,EAAI,MAAM,CAAC,IAAI,CAAE,AAAC,IACrC,GAAK,EAGL,MAAO,CAAE,QAAS,CAAA,CAAK,CACxB,GACA,EAAQ,CAAE,GAAG,CAAK,CAAE,GAAG,CAAM,AAAC,CAG/B,KAAK,OACJ,IAAI,EAAU,EAAI,MAAM,CAAC,EAAE,CA6B3B,OA3BA,EAAU,IAAI,IAAI,EAAM,OAAO,EAC/B,EAAM,OAAO,CAAC,OAAO,CAAC,AAAC,IACtB,GAAI,EAAI,MAAM,GAAK,GAGf,CAAC,EAAI,OAAO,CAAC,GAAG,CAAC,EAAI,MAAM,CAAC,IAAI,EAFnC,OAKD,IAAI,EAAU,IAAI,GAAe,EAAI,OAAO,EAC5C,EAAQ,GAAG,CAAC,EAAS,EAAQ,GAAG,CAAC,EAAI,MAAM,CAAC,IAAI,GAChD,EAAQ,MAAM,CAAC,EAAI,MAAM,CAAC,IAAI,EAC9B,EAAQ,GAAG,CAAC,EAAI,EAAE,CAAE,CAAE,GAAG,CAAG,CAAE,QAAA,CAAQ,EACvC,GACA,EAAQ,CAAE,GAAG,CAAK,CAAE,QAAA,CAAQ,EAE5B,EAAS,EAAa,AAAC,IACtB,IAAI,EAAQ,IAAI,GAAe,EAAO,KAAK,EACvC,EAAO,EAAM,GAAG,CAAC,EAAI,MAAM,CAAC,IAAI,EACpC,GAAK,EAKL,OAFA,EAAM,GAAG,CAAC,EAAS,GACnB,EAAM,MAAM,CAAC,EAAI,MAAM,CAAC,IAAI,EACrB,CAAE,MAAA,CAAM,CAChB,GACA,EAAQ,CAAE,GAAG,CAAK,CAAE,GAAG,CAAM,AAAC,CAG/B,KAAK,UACJ,OAAO,EAAW,EAAI,MAAM,CAAC,IAAI,CAAE,CAAE,SAAU,EAAI,MAAM,CAAC,EAAE,AAAC,EAC9D,KAAK,UACJ,OAAO,EAAW,EAAI,MAAM,CAAC,IAAI,CAAE,CAClC,SAAU,EAAI,MAAM,CAAC,EAAE,CACvB,SAAU,EAAI,MAAM,CAAC,EAAE,AACxB,EACD,KAAK,UACJ,IAAI,EAAU,EAAI,MAAM,CAAC,EAAE,CAI3B,MAHgB,MAAZ,GACH,CAAA,EAAU,IADX,EAGO,EAAW,EAAI,MAAM,CAAC,IAAI,CAAE,CAAE,QAAA,CAAQ,EAC9C,KAAK,OACJ,IAAI,EAAc,EAAI,MAAM,CAAC,EAAE,CAC/B,OAAO,EAAW,EAAI,MAAM,CAAC,IAAI,CAAE,CAAE,KAAM,CAAA,CAAQ,CAAa,EACjE,KAAK,QAGJ,OAAO,EAFP,EAAU,EAAI,MAAM,CAAC,EAAE,CAEM,CAAE,MADvB,EAAI,MAAM,CAAC,EAAE,AACgB,EACtC,KAAK,OAGJ,GAFA,EAAS,EAAI,MAAM,CAAC,EAAE,CAElB,CAAC,EAAO,SAAS,CAAC,GACrB,OAID,IAAI,EAAe,IAAI,IAAI,GADd,EAAO,QAAQ,CAAC,MAAM,IACyB,GAAG,CAAC,AAAC,GACzD,CAAC,EAAW,IAAI,CAAE,EAAW,MAAM,CAAC,GAG5C,OAAO,EAAa,EAAQ,AAAC,IAC5B,IAAI,EAAU,IAAI,GAAe,EAAI,OAAO,EAW5C,OATA,APwGG,SAAkC,CAAG,CAAE,CAAQ,CAAE,CAAQ,EAC/D,GAAI,CAAC,EAAG,EAAG,EAAG,EAAE,CAAG,EAAS,SAAS,GACjC,EAAS,EAAS,MAAM,GAExB,EAAa,IAAI,IAOrB,GANA,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,AAAC,GAAS,EAAW,GAAG,CAAC,EAAM,MACrD,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,AAAC,GAAS,EAAW,GAAG,CAAC,EAAM,MACrD,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,AAAC,GAAS,EAAW,GAAG,CAAC,EAAM,MACrD,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,AAAC,GAAS,EAAW,GAAG,CAAC,EAAM,MACrD,GAAqB,GAAQ,OAAO,CAAC,AAAC,GAAe,EAAW,GAAG,CAAC,EAAW,IAAI,CAAE,MAEjF,AAAgB,SAAhB,EAAI,OAAO,CACd,MAAM,AAAI,MAAM,2BAEjB,IAAI,EAAS,EAAI,MAAM,CAAC,EAAE,CACtB,EAAO,EAAI,MAAM,CAAC,KAAK,CAAC,GAExB,EAAY,KACZ,EAAI,EACR,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,MAAM,CAAE,IAAK,CACvC,GAAI,AAAc,MAAd,CAAM,CAAC,EAAE,EAAY,AAAc,MAAd,CAAM,CAAC,EAAE,CAAU,CAC3C,EAAY,CAAM,CAAC,EAAE,CACrB,QACD,CACA,GAAI,CAAC,EACJ,MAAM,AAAI,MAAM,6CAGjB,IAAI,EAAO,CAAM,CAAC,EAAE,CAChB,EAAM,AAAc,MAAd,EAEN,EAAW,EAAW,GAAG,CAAC,GAC9B,GAAI,CAAC,EACJ,SAGD,IAAI,EAAM,KACN,CAAA,AAAa,MAAb,GAAoB,AAAa,MAAb,GAAqB,AAAa,MAAb,GAAoB,CAAA,IAChE,EAAM,CAAI,CAAC,EAAE,CACb,KAGD,EAAS,EAAM,EAAK,EACrB,CACD,EOpJiC,EAAK,EAAO,QAAQ,CAAE,CAAC,EAAM,EAAK,KAC9D,GAAI,EAAa,GAAG,CAAC,GAAO,KA9dP,EAgepB,IA7dD,EA6dK,EAAa,EAAQ,GAAG,CADjB,GAEP,EAAS,EAAa,GAAG,CAAC,GAC9B,EAAQ,GAAG,CAHA,GA/dS,EAkee,EA/dpC,EAAc,IAAI,IAAI,GAFb,AAieoD,EAje7C,QAAQ,CAAC,MAAM,IAEwB,GAAG,CAAC,CAAC,EAAY,IACpE,CAAC,EAAW,MAAM,CAAE,EAAE,GA8d8B,EAzdnD,EADA,EAAW,OAAO,CA0dyB,KAxdlD,GAwdkD,EAvdlD,EAAa,MAAM,IAAI,CAAC,GAAY,IAAI,CAAC,CAAC,EAAG,IACrC,EAAY,GAAG,CAAC,GAAK,EAAY,GAAG,CAAC,IAC1C,IAAI,CAAC,KAGT,EAAa,EAAW,OAAO,CAkdoB,EAldX,IAGlC,GAgdH,CACD,GAEO,CAAE,QAAA,CAAQ,CAClB,EACD,KP9lB2B,MO+lB3B,IP9lB4B,MOimB3B,IAAK,IAAI,KAFC,EAAI,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAEF,CAE3B,IAAI,EAAS,EAAW,AADX,GAAgB,GACE,IAAI,CAAE,CAAE,QAAS,APnmBtB,QOmmBsB,EAAI,OAAO,AAAwB,GACnF,EAAQ,CAAE,GAAG,CAAK,CAAE,GAAG,CAAM,AAAC,CAC/B,CAEA,OAAO,CACR,CACD,EACA,WAAA,CAAW,EAAO,EAAK,KACtB,KACA,EAAI,GAAG,CAAG,GAEH,GAAM,YAAY,CAAC,EAAO,EAAO,AAAC,GAEjC,CAAA,CAAE,SADM,AAnelB,SAAuB,CAAI,CAAE,CAAG,EAC/B,GAAI,AAAgB,IAAhB,EAAK,MAAM,CACd,MAAO,CAAC,EAAI,CACN,GAAI,CAAC,GAAoB,EAAK,gBAAkB,CAAI,CAAC,EAAK,MAAM,CAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAI,EAAI,IAAI,CAAC,IAAI,CACtG,OAAO,EAAK,MAAM,CAAC,GAGpB,IAAI,EAAe,GACnB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,MAAM,CAAE,IAAK,CACrC,IAAI,EAAQ,CAAI,CAAC,EAAE,CACnB,GAAI,EAAI,IAAI,CAAC,IAAI,CAAG,EAAM,IAAI,CAAC,IAAI,CAAE,CACpC,EAAe,EACf,KACD,CACD,CAKA,OAJA,QAAQ,MAAM,CAAC,GAAgB,EAAG,IAGlC,AADA,CAAA,EAAO,IAAK,EAAM,AAAA,EACb,MAAM,CAAC,EAAc,EAAG,GACtB,CACR,EA+cgC,EAAI,QAAQ,CAAE,EACzB,CAAA,GAGrB,CC7qBA,OAAM,GACL,YAAY,CAAC,CAAE,CACd,IAAI,CAAC,CAAC,CAAG,AAJI,SAIK,CACnB,CAEA,MAAO,CACN,IAAI,EAAI,aAAa,OAAO,CAAC,IAAI,CAAC,CAAC,SACnC,AAAK,EAGE,KAAK,KAAK,CAAC,GAFV,IAGT,CAEA,IAAI,CAAC,CAAE,CACF,EACH,aAAa,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,KAAK,SAAS,CAAC,IAE5C,aAAa,UAAU,CAAC,IAAI,CAAC,CAAC,CAEhC,CACD,CAEO,MAAM,GAAc,IAAI,GAAK,eACvB,GAAwB,IAAI,GAAK,yBACjC,GAAW,IAAI,GAAK,WAa1B,OAAM,GACZ,IAAM,IAAI,GAAK,UAAW,AAC1B,CAAA,EAAI,IAAK,AAET,cAAc,CACb,IAfG,EAeC,EAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EACvB,CAAA,IAAI,CAAC,CAAC,CAAG,IAAI,IAAI,OAAO,OAAO,CAAC,GAAO,CAAC,IAExC,IAAI,EAAkB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CACzC,CAAA,IAAI,CAAC,IAAI,EAnBN,EAAU,KACP,CAAC,GAAG,KACV,aAAa,GACb,EAAU,WAAW,KACpB,EAAU,KACV,AAcoB,KAdf,EACN,EAasC,IAZvC,GAcC,SAAS,gBAAgB,CAAC,mBAAoB,KACZ,WAA7B,SAAS,eAAe,EAC3B,GAEF,EACD,CAEA,IAAI,CAAG,CAAE,CAER,OAAO,KAAK,SAAS,CAAC,CACrB,KAAM,EAAI,IAAI,CAAC,WAAW,GAC1B,OAAQ,CACP,eAAgB,EAAI,MAAM,CAAC,cAAc,AAC1C,CACD,EACD,CAEA,MAAO,CACF,IAAI,CAAC,CAAC,CAAC,IAAI,CAAG,EACjB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,GAEtC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAEf,CAEA,IAAI,CAAG,CAAE,CACR,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAC5B,CAEA,IAAI,CAAG,CAAE,CACR,IAAI,EAAM,IAAI,CAAC,GAAG,CAAC,GAEf,EAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GACtB,EAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAQ,CAAC,EAE3B,EAAS,EAAK,MAAM,EAAI,AAAA,GAAO,IAAI,AACpB,MAAA,IAAf,EAAI,MAAM,EAAkB,EAAI,MAAM,GAAK,EAAK,MAAM,GACzD,EAAS,EAAI,MAAM,CACnB,EAAU,CAAA,GAGX,IAAI,EAAW,CAAE,GAAG,EAAK,QAAQ,AAAC,CAC9B,CAAA,EAAI,QAAQ,GACf,OAAO,IAAI,CAAC,EAAI,QAAQ,EAAE,OAAO,CAAC,AAAC,IAG9B,CAAA,CAAC,CAAQ,CAAC,EAAE,EAAI,CAAQ,CAAC,EAAE,CAAC,IAAI,CAAG,EAAI,QAAQ,CAAC,EAAE,CAAC,IAAI,AAAJ,IACtD,CAAQ,CAAC,EAAE,CAAG,EAAI,QAAQ,CAAC,EAAE,CAC7B,EAAU,CAAA,EAEZ,GACI,CAAQ,CAAC,AAAA,GAAY,SAAS,CAAC,CAAG,CAAQ,CAAC,AAAA,GAAY,IAAI,CAAC,GAC/D,CAAQ,CAAC,AAAA,GAAY,SAAS,CAAC,CAAG,CAAQ,CAAC,AAAA,GAAY,IAAI,CAAC,CAC5D,EAAU,CAAA,IAIZ,IAAI,EAAS,EAAK,MAAM,EAAI,CAAA,SAM5B,AALmB,KAAA,IAAf,EAAI,MAAM,EAAkB,EAAI,MAAM,GAAK,EAAK,MAAM,GACzD,EAAS,EAAI,MAAM,CACnB,EAAU,CAAA,KAGN,IAIL,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAM,CACzB,KAAM,EAAI,IAAI,CACd,OAAA,EACA,SAAA,EACA,OAAA,EACA,OAAQ,CACP,eAAgB,EAAI,MAAM,CAAC,cAAc,AAC1C,CACD,GAEA,IAAI,CAAC,IAAI,GACF,CAAA,EACR,CAEA,OAAO,CAAG,CAAE,CACX,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IACvB,IAAI,CAAC,IAAI,EACV,CAEA,KAAK,CAAM,CAAE,CAEZ,IAAI,EAAQ,IAAI,IACZ,EAAU,EAAE,CAChB,IAAK,IAAM,KAAO,IAAI,CAAC,CAAC,CAAC,MAAM,GAC1B,EAAI,MAAM,CAAC,cAAc,GAAK,EAAO,cAAc,GAGnD,EAAM,GAAG,CAAC,EAAI,IAAI,IAGtB,EAAQ,IAAI,CAAC,GACb,EAAM,GAAG,CAAC,EAAI,IAAI,IAEnB,OAAO,CACR,CAEA,MAAM,CAAM,CAAE,CACb,GAAI,EACH,IAAK,IAAM,KAAO,IAAI,CAAC,IAAI,CAAC,GAC3B,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAGxB,IAAI,CAAC,CAAC,CAAG,IAAI,IAEd,IAAI,CAAC,IAAI,EACV,CACD,CClKe,SAAA,GAAoB,CAAK,EACvC,GAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CACpB,OAAO,KAKR,IAAM,EAAO,EAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAI,GAC9D,OAAO,AAAA,EAAI,CAAC;0BACa,EAAE,EAAK,QAAQ,EAAE,EAAK;GAC7C,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;CAErB,CAAC,AACF,CLCA,SAAS,GAAK,CAAK,MAMd,CACA,CAAA,EAAM,IAAI,EAAI,GAAyB,EAAM,IAAI,CAAC,QAAQ,CAAE,EAAM,IAAI,GACzE,CAAA,EAAQ,AAAA,GAAU,EAAM,IAAI,CAAC,QAAQ,CAAA,EAGtC,IAAI,EAAa,AApBlB,SAAc,CAAC,EACd,IAAI,EAAO,KACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAE,MAAM,CAAE,IAE7B,EADQ,CAAA,GAAQ,CAAA,EAAK,EAAO,EAAE,UAAU,CAAC,KACzB,EAEjB,OAAO,CACR,EAauB,EAAM,IAAI,EAAI,GAAK,EACzC,OAAO,AAAA,EAAI,CAAC;;QAEL,EAAE,GAAc,CAAE,OAAQ,EAAM,IAAI,AAAC,GAAG;SACvC,EAAE,EAAM;oBACG,EAAE,EAAW;WACtB,EAhBV,SAAqB,CAAK,EACzB,EAAM,cAAc,GACpB,EAAM,OAAO,EACd,EAawB;GACtB,EAAE,EAAM,IAAI,CAAC;CACf,CAAC,AACF,CAEA,SAAS,GAAW,CAAA,KAAE,CAAI,CAAA,IAAE,CAAG,CAAA,YAAE,CAAW,CAAE,EAC7C,GAAI,CAAC,EAAM,CACV,IAAI,EAAY,QAIhB,OAHI,GACH,CAAA,GAAa,KADd,EAGO,AAAA,EAAI,CAAC,wBAAwB,EAAE,EAAU,OAAO,CAAC,AACzD,CAEA,IAAI,EAAK,EAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAG,KAC5C,EAAK,EAAK,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAG,KAC9C,EAAY,CAAA,EAAG,EAAG,CAAC,EAAE,EAAA,CAAI,CAK7B,OAJI,GAEH,CAAA,GAAa,IADJ,EAAK,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAG,IAClD,EAEM,AAAA,EAAI,CAAC;;QAEL,EAAE,EAAI;;SAEL,EAAE,EAAK,cAAc,GAAG;WACtB,EAAE,AAAC,GAAU,EAAM,cAAc,GAAG;;GAE5C,EAAE,EAAU;;CAEd,CAAC,AACF,CAEA,SAAS,GAAU,CAAK,EACvB,OAAO,AAAA,EAAI,CAAC;GACV,EAAE,AAAA,GAAgB,QAAQ,CAAC;GAC3B,EAAE,AAAC,GAAa,AAAA,EAAI,CAAC;KACnB,EAAE,GAAW,IAAI,EAAE,EAAM,aAAa,EAAE,EAAS,mBAAmB,CAAC;GACvE,CAAC,CAAC;;CAEJ,CAAC,AACF,CAQA,SAAS,GAAe,CAAG,EAC1B,OAAQ,EAAI,OAAO,EACnB,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACJ,MAAO,CAAA,CACR,CACA,MAAO,CAAA,CACR,CAEA,MAAM,WAAgB,EACrB,sBAAsB,CAAS,CAAE,CAChC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAK,EAAU,OAAO,AAChD,CAEA,QAAS,CACR,IA0BI,EACA,EAAS,EAAQ,EA3BjB,EAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CACxB,EAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CACvB,EAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAE1B,EAAc,IAAI,CAAC,KAAK,CAAC,WAAW,CACpC,EAAiB,IAAI,CAAC,KAAK,CAAC,cAAc,CAC1C,EAAgB,IAAI,CAAC,KAAK,CAAC,aAAa,CAE5C,SAAS,EAAW,CAAI,EACvB,OAAO,AAAA,EAAI,CAAC;KACV,EAAE,GAAK;UACF,EAAE,EAAK;UACP,EAAE,EAAO,KAAK,CAAC,GAAG,CAAC,GAAM;aACtB,EAAE,IAAM,EAAY,GAAM;;GAEpC,CAAC,AACF,CASA,IAAI,EAAY,GAGhB,OAAQ,EAAI,OAAO,EACnB,IAAK,SACL,IAAK,UACJ,EAAS,EAAI,MAAM,CAAC,EAAE,CACtB,IAAI,EAAO,EAAI,MAAM,CAAC,EAAE,CAEpB,EAAO,GAAc,GACzB,GAAI,EACC,AAAiB,WAAjB,EAAK,OAAO,EACf,EAAY,UACZ,EAAU,AAAA,EAAI,CAAC,EAAE,EAAE,EAAW,EAAI,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,AAAA,GAAQ,AAAA,GAAU,EAAK,KAAK,EAAG,GAAgB,CAAC,EAElG,EAAU,AAAA,EAAI,CAAC;MACd,EAAE,EAAW,EAAI,MAAM,CAAC,IAAI,EAAE,0BAA0B,EAAE,EAAK,OAAO,CAAC,CAAC,EAAE,EAAK,KAAK,CAAC;KACtF,CAAC,KAEI,CACN,EAAY,OACZ,IAAI,EAAS,IAAK,EAAS,GACP,CAAA,WAAhB,EAAI,OAAO,GACd,GAAa,UACb,EAAS,EAAS,KAEnB,EAAU,AAAA,EAAI,CAAC,yBAAyB,EAAE,EAAO,OAAO,EAAE,EAAW,EAAI,MAAM,CAAC,IAAI,EAAE,yBAAyB,EAAE,EAAO,QAAQ,EAAE,AAAA,GAAQ,AAAA,GAAU,GAAO,GAAgB,CAAC,AAC7K,CAEA,IAAI,EAAkB,EAAO,SAAS,CACtC,GAAI,IAAW,EAAI,IAAI,EAAI,EAAiB,CAC3C,IAAI,EAAQ,GAAsB,EAAQ,EACtC,CAAA,EAAM,IAAI,GAAK,EAAI,IAAI,EAC1B,CAAA,EAAU,CAAC,AAAA,EAAI,CAAC,EAAE,EAAE,GAAW,OAAO,EAAE,EAAM,MAAM,CAAC,GAAG,CAAC,CAAE,IAAK,EAAQ,AAAA,CAE1E,CAEI,EAAI,IAAI,CAAC,yBAAyB,EACrC,CAAA,EAAU,AAAA,EAAI,CAAC,+BAA+B,EAAE,EAAQ,CAAC,AAAD,EAGrD,EAAI,WAAW,EAClB,CAAA,GAAa,YADd,EAGA,KACD,KAAK,OACJ,EAAU,AAAA,EAAI,CAAC;IACd,EAAE,EAAW,EAAI,MAAM,CAAC,IAAI,EAAE;GAC/B,CAAC,CACD,KACD,KAAK,OACJ,EAAU,AAAA,EAAI,CAAC;IACd,EAAE,EAAW,EAAI,MAAM,CAAC,IAAI,EAAE;GAC/B,CAAC,CACD,KACD,KAAK,OACJ,EAAU,AAAA,EAAI,CAAC;IACd,EAAE,EAAW,EAAI,MAAM,CAAC,IAAI,EAAE;GAC/B,CAAC,CACD,KACD,KAAK,OACJ,IAAI,EAAU,EAAI,MAAM,CAAC,EAAE,CAC3B,EAAU,AAAA,EAAI,CAAC;IACd,EAAE,EAAW,EAAI,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAW,GAAS;GACtE,CAAC,CACD,KACD,KAAK,OACJ,EAAU,AAAA,EAAI,CAAC;IACd,EAAE,EAAW,EAAI,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,EAAW,EAAI,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,EAAI,MAAM,CAAC,KAAK,CAAC,GAAG;GAClG,CAAC,CACD,KACD,KAAK,OACJ,EAAS,EAAI,MAAM,CAAC,EAAE,CACtB,IAAI,EAAU,EAAI,MAAM,CAAC,EAAE,CAEvB,EAAO,AAAA,EAAI,CAAC,EAAE,EAAW,EAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAG/C,GAAI,EAAI,IAAI,GAAK,AAAA,GAAW,OAAO,EAAI,AAAmB,IAAnB,EAAQ,MAAM,EAAU,EAAO,EAAE,CAAC,EAAI,IAAI,IAAM,EAAO,EAAE,CAAC,GAAS,CACzG,IAII,EA2CA,EA/CA,EAAY,CAAO,CAAC,EAAE,CACtB,EAAO,CAAO,CAAC,EAAE,CACjB,EAAM,EAAI,MAAM,CAAC,EAAE,CAGvB,OAAQ,GACR,IAAK,IACJ,EAAO,AAAc,MAAd,EAAoB,QAAU,UACrC,EAAU,AAAA,EAAI,CAAC,EAAE,EAAK,KAAK,EAAE,EAAK,UAAU,EAAE,EAAI,CAAC,CACnD,KACD,KAAK,IACJ,EAAO,AAAc,MAAd,EAAoB,QAAU,UACrC,EAAU,AAAA,EAAI,CAAC,EAAE,EAAK,KAAK,EAAE,EAAK,oBAAoB,EAAE,EAAI,CAAC,CAC7D,KACD,KAAK,IAEH,EADG,AAAc,MAAd,EACO,AAAA,EAAI,CAAC,EAAE,EAAK,mCAAmC,EAAE,EAAI,CAAC,CAEtD,AAAA,EAAI,CAAC,EAAE,EAAK,iCAAiC,CAAC,CAEzD,KACD,KAAK,IACJ,EAAO,AAAc,MAAd,EAAoB,SAAU,WACrC,EAAU,AAAA,EAAI,CAAC,EAAE,EAAK,KAAK,EAAE,EAAK,eAAe,CAAC,CAClD,KACD,KAAK,IACJ,EAAO,AAAc,MAAd,EAAoB,SAAU,WACrC,EAAU,AAAA,EAAI,CAAC,EAAE,EAAK,KAAK,EAAE,EAAK,aAAa,CAAC,CAChD,KACD,KAAK,IACJ,EAAO,AAAc,MAAd,EAAoB,SAAU,WACrC,EAAU,AAAA,EAAI,CAAC,EAAE,EAAK,KAAK,EAAE,EAAK,UAAU,CAAC,CAC7C,KACD,KAAK,IACJ,EAAO,AAAc,MAAd,EAAoB,SAAU,WACrC,EAAU,AAAA,EAAI,CAAC,EAAE,EAAK,KAAK,EAAE,EAAK,kBAAkB,CAAC,CACrD,KACD,KAAK,IACJ,EAAO,AAAc,MAAd,EAAoB,UAAW,SACtC,EAAU,AAAA,EAAI,CAAC,EAAE,EAAK,KAAK,EAAE,EAAK,kCAAkC,CAAC,AAEtE,CACA,GAAI,EACH,MAKD,IAAK,IAAI,KAAU,GAClB,GAAI,EAAwB,CAAC,EAAO,GAAK,EAAM,CAC9C,EAAa,EAAwB,CAAC,EAAO,CAC7C,KACD,CAED,GAAI,GAAc,EAAK,CAGtB,EAAU,AAAA,EAAI,CAAC;MACd,EAAE,EAAK,KAAK,EAHF,AAAc,MAAd,EAAoB,UAAY,UAGvB,CAAC,EAAE,EAAW,YAAY,EAF5B,AAAc,MAAd,EAAoB,KAAO,OAEe,CAAC,EAAE,EAAW,GAAK;KAC/E,CAAC,CACD,KACD,CACD,CAEA,EAAU,AAAA,EAAI,CAAC;IACd,EAAE,EAAK,WAAW,EAAE,EAAI,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK;GACnD,CAAC,CACG,EAAO,EAAE,CAAC,EAAI,IAAI,IAAM,EAAO,EAAE,CAAC,IACrC,CAAA,EAAU,AAAA,EAAI,CAAC,EAAE,EAAQ,IAAI,EAAE,EAAO,CAAC,AAAD,EAEvC,KACD,KAAK,QACJ,IAAI,EAAQ,EAAI,MAAM,CAAC,EAAE,CAExB,EADG,EACO,AAAA,EAAI,CAAC;KACd,EAAE,EAAW,EAAI,MAAM,CAAC,IAAI,EAAE,uBAAuB,EAAE,AAAA,GAAQ,AAAA,GAAU,GAAQ,GAAgB;IAClG,CAAC,CAES,AAAA,EAAI,CAAC;KACd,EAAE,EAAW,EAAI,MAAM,CAAC,IAAI,EAAE;IAC/B,CAAC,CAEF,KACD,KAAK,SACJ,EAAU,EAAI,MAAM,CAAC,EAAE,CACvB,IAAI,EAAU,EAAI,MAAM,CAAC,EAAE,AAEvB,CAAA,EAAI,IAAI,GAAK,AAAA,GAAW,MAAM,EACjC,EAAY,OACZ,EAAU,AAAA,EAAI,CAAC;8BACW,EAhLpB,EAAI,CAAC;YACH,EAAE,GAAc,CAAE,OA+KgB,CA/KA,GAAG,SAAS,EAAE,EAAe;KACtE,EA8KyC,EA9K/B;;GAEZ,CAAC,CA4KmD,IAAI,EAAE,EAAW,EAAI,MAAM,CAAC,IAAI,EAAE;IACrF,CAAC,EAED,EAAU,AAAA,EAAI,CAAC;KACd,EAAE,EAAW,EAAI,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,EAAW,GAAS;IAClE,CAAC,CAEF,KACD,KJ3SyB,MI4SxB,IAAI,EAAO,EAAI,MAAM,CAAC,EAAE,CACxB,EAAU,AAAA,EAAI,CAAC,sCAAsC,EAAE,EAAK,CAAC,CAC7D,KACD,KJ5R0B,MI6RzB,EAAU,EAAI,MAAM,CAAC,EAAE,CACvB,EAAU,AAAA,EAAI,CAAC,EAAE,EAAW,GAAS,gCAAgC,CAAC,CACtE,KACD,KJrRsB,MIsRrB,EAAY,OACZ,EAAU,AAAA,GAAQ,AAAA,GAAU,EAAI,MAAM,CAAC,EAAE,EAAG,GAC5C,KACD,KJvP0B,MIwPzB,EAAU,EAAI,MAAM,CAAC,EAAE,CACvB,EAAU,AAAA,EAAI,CAAC,6BAA6B,EAAE,EAAQ,CAAC,CACvD,KACD,KJ1P2B,MI2P1B,EAAU,AAAA,EAAI,CAAC,2BAA2B,CAAC,CAC3C,KACD,KAAK,WACJ,EAAU,EAAI,MAAM,CAAC,EAAE,CACvB,IAAI,EAAS,EAAI,MAAM,CAAC,EAAE,CAO1B,OAAQ,EAAI,MAAM,CAAC,EAAE,EACrB,IAAK,UACJ,EAAU,AAAA,EAAI,CAAC,6DAA6D,EAAE,EAAQ,CAAC,CACvF,KACD,KAAK,wBACJ,EAAU,AAAA,EAAI,CAAC,oEAAoE,EAVpF,SAA2B,CAAK,EAC/B,EAAM,cAAc,GACpB,EAAc,EAAS,EACxB,EAOwG,gBAAgB,EAAE,AAAA,GAAQ,GAAQ,CAAC,AAE3I,CACA,KACD,KAAK,SACJ,EAAU,EAAI,MAAM,CAAC,EAAE,CACvB,EAAU,AAAA,EAAI,CAAC,gEAAgE,EAAE,EAAQ,CAAC,CAC1F,KACD,KJ/UyB,MIgVxB,IAAI,EAAO,EAAI,MAAM,CAAC,EAAE,CAEvB,EADG,EACO,AAAA,EAAI,CAAC,kBAAkB,EAAE,EAAK,CAAC,CAE/B,AAAA,EAAI,CAAC,qBAAqB,CAAC,CAEtC,KACD,KJ7U+B,MI8U9B,EAAU,AAAA,EAAI,CAAC,gBAAgB,EAAE,EAAI,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAChE,KACD,KJzS8B,MI0S7B,IAAI,EAAO,IAAI,KAAK,AAA8B,IAA9B,SAAS,EAAI,MAAM,CAAC,EAAE,CAAE,KAC5C,EAAU,AAAA,EAAI,CAAC,uBAAuB,EAAE,EAAK,cAAc,GAAG,CAAC,CAC/D,KAED,KJ1S2B,MI2S1B,EAAU,AAAA,EAAI,CAAC,EAAE,EAAW,EAAI,IAAI,EAAE,UAAU,CAAC,CACjD,KACD,KJ5S4B,MI6S3B,EAAU,AAAA,EAAI,CAAC,EAAE,EAAW,EAAI,IAAI,EAAE,WAAW,CAAC,CAClD,KACD,SACK,GAAY,EAAI,OAAO,GAAK,AJrUT,QIqUS,EAAI,OAAO,EAC1C,CAAA,EAAY,OADb,EAGA,EAAU,AAAA,EAAI,CAAC,EAAE,EAAI,OAAO,CAAC,CAAC,EAAE,AAAA,GAAQ,EAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,AAChE,QAEA,AAAK,EAIE,AAAA,EAAI,CAAC;uBACS,EAAE,EAAU,WAAW,EAAE,EAAI,GAAG,CAAC;KACnD,EAAE,GAAU,MAAM,EAAE,IAAI,KAAK,EAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,AAAA,GAAc,EAAK,GAAK;IAC5E,EAAE,IAAI;IACN,EAAE,EAAQ;;EAEZ,CAAC,CATO,IAUT,CACD,CAuBA,MAAM,WAAkB,EACvB,sBAAsB,CAAS,CAAE,CAChC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,GAAK,EAAU,QAAQ,CAAC,EAAE,EACtD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAG,EAAE,GAAK,EAAU,QAAQ,CAAC,EAAU,QAAQ,CAAC,MAAM,CAAG,EAAE,AAC3G,CAEA,QAAS,CACR,IAAI,EAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAC1B,EAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CACvB,EAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAE1B,EAAc,IAAI,CAAC,KAAK,CAAC,WAAW,CACxC,SAAS,EAAW,CAAI,EACvB,OAAO,AAAA,EAAI,CAAC;KACV,EAAE,GAAK;UACF,EAAE,EAAK;UACP,EAAE,EAAO,KAAK,CAAC,GAAG,CAAC,GAAM;aACtB,EAAE,IAAM,EAAY,GAAM;;GAEpC,CAAC,AACF,CAEA,IAAI,EAAY,CACf,KAAQ,EAAE,CACV,KAAQ,EAAE,CACV,KAAQ,EAAE,CACV,KAAQ,EAAE,AACX,EACA,EAAK,OAAO,CAAC,AAAC,IACb,CAAS,CAAC,EAAI,OAAO,CAAC,CAAC,IAAI,CAAC,EAC7B,GAEA,IAAI,EAAQ,CAAA,EACR,EAAU,EAAE,CAChB,CAAC,OAAQ,OAAQ,OAAO,CAAC,OAAO,CAAC,AAAC,QAQ7B,EAPJ,GAAI,AAA0B,IAA1B,CAAS,CAAC,EAAI,CAAC,MAAM,CACxB,OAGD,IAAI,EAAQ,IAAI,IAAI,CAAS,CAAC,EAAI,CAAC,GAAG,CAAC,AAAC,GAAQ,EAAI,MAAM,CAAC,IAAI,GAE3D,EAAS,EAAM,IAAI,CAAG,EAE1B,OAAQ,GACR,IAAK,OACJ,EAAS,EAAS,cAAgB,aAClC,KACD,KAAK,OACJ,EAAS,EAAS,YAAc,WAChC,KACD,KAAK,OACJ,EAAS,EAAS,YAAc,UAEjC,CAEI,EACH,EAAQ,CAAA,EAER,EAAQ,IAAI,CAAC,MAGd,EAAQ,IAAI,CAAC,AAlFhB,SAAwB,CAAK,CAAE,CAAU,EACxC,GAAI,AAAiB,IAAjB,EAAM,MAAM,CACf,OAAO,KACD,GAAI,AAAiB,IAAjB,EAAM,MAAM,CACtB,OAAO,EAAW,CAAK,CAAC,EAAE,EAG3B,IAAI,EAAI,EAAM,KAAK,CAAC,EAAG,EAAM,MAAM,CAAG,GAAG,GAAG,CAAC,CAAC,EAAM,IACnD,AAAI,AAAM,IAAN,EACI,EAAW,GAEX,CAAC,KAAM,EAAW,GAAM,EAOjC,OAHA,EAAE,IAAI,CAAC,SACP,EAAE,IAAI,CAAC,EAAW,CAAK,CAAC,EAAM,MAAM,CAAG,EAAE,GAElC,CACR,EA+D+B,IAAI,EAAM,CAAE,IACxC,EAAQ,IAAI,CAAC,IAAM,EACpB,GAEA,EAAU,IAAO,CAAC,OAAO,CAAC,AAAC,IACtB,EACH,EAAQ,CAAA,EAER,EAAQ,IAAI,CAAC,MAGd,IAAI,EAAU,EAAI,MAAM,CAAC,EAAE,CAC3B,EAAQ,IAAI,CAAC,AAAA,EAAI,CAAC;IACjB,EAAE,EAAW,EAAI,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAW,GAAS;GACtE,CAAC,CACF,GAEA,IAAI,EAAU,CAAI,CAAC,EAAK,MAAM,CAAG,EAAE,CAC/B,EAAY,IAAI,KAAK,CAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EACtC,EAAW,IAAI,KAAK,EAAQ,IAAI,CAAC,IAAI,EACrC,EAAY,AAAA,EAAI,CAAC;IACnB,EAAE,GAAU,MAAM,EAAE,EAAU,KAAK,EAAE,AAAA,GAAc,EAAK,CAAI,CAAC,EAAE,EAAE;EACnE,CAAC,CAWD,OAVI,EAAW,EAAY,KAC1B,CAAA,EAAY,CACX,EACA,MACA,AAAA,EAAI,CAAC;MACH,EAAE,GAAU,MAAM,EAAE,EAAS,KAAK,EAAE,AAAA,GAAc,EAAK,GAAS;IAClE,CAAC,CACD,AAAA,EAGK,AAAA,EAAI,CAAC;iCACmB,EAAE,CAAI,CAAC,EAAE,CAAC,GAAG,CAAC;IAC3C,EAAE,EAAU;IACZ,EAAE,IAAI;IACN,EAAE,EAAQ;;EAEZ,CAAC,AACF,CACD,CAGA,IAAI,GAAyB,CAAA,EAC7B,GAAI,OAAO,YAAY,GACtB,GAAyB,CAAA,EACrB,AAA4B,YAA5B,aAAa,UAAU,EAC1B,GAAI,CACH,IAAI,aAAa,GAClB,CAAE,MAAO,EAAK,CACI,cAAb,EAAI,IAAI,EACX,CAAA,GAAyB,CAAA,CAD1B,CAGD,CAIF,MAAM,WAA2B,EAChC,MAAQ,CAAE,IAAK,CAAA,CAAM,CAAE,AAEvB,aAAY,CAAK,CAAE,CAClB,KAAK,CAAC,GAEN,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAE7C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAG,IAAI,CAAC,SAAS,EAChC,CAEA,WAAY,CACX,OAAO,IAA0B,AAA4B,YAA5B,aAAa,UAAU,AACzD,CAEA,YAAY,CAAK,CAAE,CAClB,EAAM,cAAc,GAEpB,aAAa,iBAAiB,CAAC,AAAC,IAC/B,IAAI,CAAC,QAAQ,CAAC,CAAE,IAAK,IAAI,CAAC,SAAS,EAAG,EACvC,EACD,CAEA,QAAS,QACR,AAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAIZ,AAAA,EAAI,CAAC;;KAET,EAAE,GAAU;IACb,EAAE,IAAI;wBACc,EAAE,IAAI,CAAC,WAAW,CAAC;;EAEzC,CAAC,CATO,IAUT,CACD,CAEA,MAAM,WAA8B,EACnC,MAAQ,CAAE,IAAK,CAAA,CAAK,CAAE,AAEtB,aAAY,CAAK,CAAE,CAClB,KAAK,CAAC,GAEN,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAE7C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAG,CAAC,GAA4B,IAAI,EACnD,CAEA,YAAY,CAAK,CAAE,CAClB,EAAM,cAAc,GAEpB,IAAI,EAAM,OAAO,QAAQ,CAAC,MAAM,CAAG,OAAO,QAAQ,CAAC,QAAQ,CAAG,WAC9D,GAAI,CACH,UAAU,uBAAuB,CAAC,MAAO,GACzC,UAAU,uBAAuB,CAAC,OAAQ,EAC3C,CAAE,MAAO,EAAK,CACb,QAAQ,KAAK,CAAC,wCAAyC,EACxD,CAEA,GAA4B,GAAG,CAAC,CAAA,GAChC,IAAI,CAAC,QAAQ,CAAC,CAAE,IAAK,CAAA,CAAM,EAC5B,CAEA,QAAS,CACR,GAAI,CAAC,UAAU,uBAAuB,EAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CACxD,OAAO,KAER,IAAI,EAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAI,eACrC,OAAO,AAAA,EAAI,CAAC;;KAET,EAAE,GAAU;IACb,EAAE,IAAI;wBACc,EAAE,IAAI,CAAC,WAAW,CAAC,0DAA0D,EAAE,EAAK;;EAE1G,CAAC,AACF,CACD,CAEA,SAAS,GAAc,CAAA,OAAE,CAAM,CAAA,YAAE,CAAW,CAAA,gBAAE,CAAe,CAAE,EAC9D,IAAI,EAAU,2BACV,CAAA,EAAO,IAAI,EACd,CAAA,EAAU,KAAO,EAAO,IAAI,CAAG,UADhC,EAaA,IAAI,EAAM,CAAC,AAAA,EAAI,CAAC;;EAEf,EAAE,IAAI;sBACc,EAZrB,SAAyB,CAAK,EAC7B,EAAM,cAAc,GACpB,GACD,EASuC;EACtC,EAAE,IAAI;CACP,CAAC,CAAC,CAQF,OANI,EAAO,2BAA2B,CACrC,EAAI,IAAI,CAAC,AAAA,EAAI,CAAC,uBAAuB,EAbtC,SAA6B,CAAK,EACjC,EAAM,cAAc,GACpB,GACD,EAU4D,cAAc,EAAE,EAAQ,CAAC,EAEpF,EAAI,IAAI,CAAC,AAAA,EAAI,CAAC,YAAY,EAAE,EAAQ,CAAC,EAG/B,AAAA,EAAI,CAAC;;IAET,EAAE,GAAU,GAAG,EAAE,EAAI;;CAExB,CAAC,AACF,CAEA,MAAM,WAAsB,EAC3B,YAAY,CAAK,CAAE,CAClB,KAAK,CAAC,EACP,CAEA,sBAAsB,CAAS,CAAE,CAChC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAO,EAAU,IAAI,CAAC,OAAO,EAC5D,CAEA,QAAS,CAER,IAAI,EAAO,AADA,IAAI,CAAC,KAAK,CAAC,IAAI,CACV,kBAAkB,CAAC,EAAE,CAAE,CAAE,KAAM,UAAW,MAAO,UAAW,IAAK,SAAU,GAC3F,OAAO,AAAA,EAAI,CAAC;;IAEV,EAAE,EAAK;;EAET,CAAC,AACF,CACD,CAEA,SAAS,GAAgB,CAAK,EAC7B,OAAO,AAAA,EAAI,CAAC,0DAA0D,CAAC,AACxE,CAMe,MAAA,WAAqB,EACnC,sBAAsB,CAAS,CAAE,CAChC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAK,EAAU,MAAM,EAC5C,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAK,EAAU,QAAQ,AAC5C,CAEA,QAAS,CACR,IAAI,EAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAC3B,GAAI,CAAC,EACJ,OAAO,KAGR,IAAI,EAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAC1B,EAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAC9B,EAAa,EAAO,IAAI,CAExB,EAAW,EAAE,AACb,CAAA,EAAI,IAAI,GAAK,AAAA,GAAW,MAAM,EACjC,EAAS,IAAI,CAAC,AAAA,EAAI,CAAC,CAAC,EAAE,GAAmB,EAAE,CAAC,EAEzC,EAAI,IAAI,GAAK,AAAA,GAAW,MAAM,EAAI,EAAO,SAAS,EAAI,CAAC,EAAO,YAAY,EAC7E,EAAS,IAAI,CAAC,AAAA,EAAI,CAAC,CAAC,EAAE,GAAsB,aAAa,EAAE,EAAW,EAAE,CAAC,EAEtE,EAAI,IAAI,GAAK,AAAA,GAAW,MAAM,EAAI,EAAO,MAAM,GAAK,AAAA,GAAa,UAAU,EAAI,EAAO,iBAAiB,EAAI,CAAC,EAAO,OAAO,EAC7H,EAAS,IAAI,CAAC,AAAA,EAAI,CAAC;KACjB,EAAE,GAAc;YACT,EAAE,EAAO;iBACJ,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;qBACrB,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;;GAE/C,CAAC,EAGF,IAAI,EAAiB,IAAI,CAAC,KAAK,CAAC,cAAc,CAC1C,EAAc,IAAI,CAAC,KAAK,CAAC,WAAW,CACpC,EAAgB,IAAI,CAAC,KAAK,CAAC,aAAa,CAE5C,SAAS,EAAc,CAAG,EACzB,OAAO,AAAA,EAAI,CAAC;KACV,EAAE,GAAQ;SACN,EAAE,OAAS,EAAI,GAAG,CAAC;aACf,EAAE,EAAI;YACP,EAAE,EAAI;YACN,EAAE,EAAO;oBACD,EAAE,EAAe;iBACpB,EAAE,EAAY;mBACZ,EAAE,EAAc;;GAEhC,CAAC,AACF,CACA,SAAS,EAAgB,CAAI,EAE5B,IAAI,EAAc,IAAI,IAClB,EAAa,EAAE,CACnB,IAAK,IAAI,KAAO,EAAM,CACrB,IAAI,EAAO,CAAA,EACX,OAAQ,EAAI,OAAO,EACnB,IAAK,OACL,IAAK,OACJ,EAAY,MAAM,CAAC,EAAI,MAAM,CAAC,IAAI,EAClC,KACD,KAAK,OACJ,IAAI,EAAO,EAAY,GAAG,CAAC,EAAI,MAAM,CAAC,IAAI,EAC1C,GAAI,CAAC,EAAM,CAEV,EAAM,CAAE,GAAG,CAAG,AAAC,EACf,EAAY,GAAG,CAAC,EAAI,MAAM,CAAC,EAAE,CAAE,GAC/B,KACD,CAEA,EAAK,MAAM,CAAG,EAAI,MAAM,CACxB,EAAY,MAAM,CAAC,EAAI,MAAM,CAAC,IAAI,EAClC,EAAY,GAAG,CAAC,EAAI,MAAM,CAAC,EAAE,CAAE,GAC/B,EAAO,CAAA,CAER,CACI,GACH,EAAW,IAAI,CAAC,EAElB,CACA,EAAO,EAGP,IAAI,EAAc,IAAI,IAClB,EAAO,EAAE,OAiBb,CAhBA,EAAK,OAAO,CAAC,CAAC,EAAK,KACd,CAAA,AAAgB,SAAhB,EAAI,OAAO,EAAe,AAAgB,SAAhB,EAAI,OAAO,AAAK,GAC7C,EAAY,GAAG,CAAC,EAAI,MAAM,CAAC,IAAI,CAAE,GAE9B,AAAgB,SAAhB,EAAI,OAAO,EAAe,EAAY,GAAG,CAAC,EAAI,MAAM,CAAC,IAAI,GAC5D,CAAI,CAAC,EAAY,GAAG,CAAC,EAAI,MAAM,CAAC,IAAI,EAAE,CAAG,CAAA,EACzC,EAAY,MAAM,CAAC,EAAI,MAAM,CAAC,IAAI,EAClC,EAAK,IAAI,CAAC,CAAA,IACA,AAAgB,SAAhB,EAAI,OAAO,EAAe,EAAI,MAAM,CAAC,IAAI,GAAK,EAAI,MAAM,CAAC,EAAE,CACrE,EAAK,IAAI,CAAC,CAAA,GAEV,EAAK,IAAI,CAAC,CAAA,EAEZ,GAGI,AAAgB,IAAhB,AAFJ,CAAA,EAAO,EAAK,MAAM,CAAC,CAAC,EAAK,IAAM,CAAI,CAAC,EAAE,CAAA,EAE7B,MAAM,EACP,KACG,AAAgB,IAAhB,EAAK,MAAM,CACd,EAAc,CAAI,CAAC,EAAE,EAEtB,AAAA,EAAI,CAAC;KACV,EAAE,GAAU;SACR,EAAE,QAAU,CAAI,CAAC,EAAE,CAAC,GAAG,CAAG,IAAM,CAAI,CAAC,EAAK,MAAM,CAAG,EAAE,CAAC,GAAG,CAAC;cACrD,EAAE,EAAK;YACT,EAAE,EAAI;YACN,EAAE,EAAO;iBACJ,EAAE,EAAY;;GAE5B,CAAC,AACF,CAEA,IAAI,EAAqB,CAAA,EACrB,EAAW,IAAI,KACf,EAAe,EAAE,CACjB,EAAc,KAgDlB,OA/CA,EAAI,QAAQ,CAAC,OAAO,CAAC,AAAC,QA7HN,EA8Hf,IAAI,EAAM,EAAE,CAEZ,GAAI,EAAS,YAAY,GAAK,AAAA,GAAwB,IAAI,EAAI,GAAe,GAC5E,OAGD,GAAI,AJ/tBsB,QI+tBtB,EAAI,OAAO,EAA0B,AJ9tBd,QI8tBc,EAAI,OAAO,CAAyB,CAC5E,IAAI,EAAO,CAAC,GAAe,EAAI,OAAO,GAAK,EAE3C,GADA,EAAc,EAAI,OAAO,CACrB,EACH,MAEF,CAEK,GAAsB,EAAI,IAAI,GAAK,AAAA,GAAW,MAAM,EAAK,AAAA,GAAuB,EAAK,EAAI,eAAe,IAC5G,EAAI,IAAI,CAAC,AAAA,EAAI,CAAC,CAAC,EAAE,GAAgB,eAAe,CAAC,EACjD,EAAqB,CAAA,GAGtB,IAAI,EAAO,IAAI,KAAK,EAAI,IAAI,CAAC,IAAI,EAajC,IA7JK,CADU,EAkJD,GAjJN,WAAW,KAAO,AAiJF,EAjJK,WAAW,IAAM,EAAG,QAAQ,KAAO,AAiJxC,EAjJ2C,QAAQ,IAAM,EAAG,OAAO,KAAO,AAiJ1E,EAjJ6E,OAAO,KAkJ3G,EAAI,IAAI,CAAC,AAAA,EAAI,CAAC,CAAC,EAAE,GAAc,KAAK,EAAE,QAAU,EAAK,MAAM,EAAE,EAAK,EAAE,CAAC,EAEtE,EAAW,EAEP,EAAI,MAAM,CAAG,IAChB,EAAS,IAAI,CAAC,EAAgB,IAC9B,EAAS,IAAI,CAAC,GACd,EAAe,EAAE,EAId,EAAS,YAAY,GAAK,AAAA,GAAwB,IAAI,EAAI,GAAe,GAAM,CAClF,EAAa,IAAI,CAAC,GAClB,MACD,CAEI,EAAa,MAAM,CAAG,IACzB,EAAS,IAAI,CAAC,EAAgB,IAC9B,EAAe,EAAE,EAGlB,EAAS,IAAI,CAAC,EAAc,GAC7B,GACA,EAAS,IAAI,CAAC,EAAgB,IAEvB,AAAA,EAAI,CAAC;;IAEV,EAAE,EAAS;;EAEb,CAAC,AACF,CACD,CMr0BA,SAAS,GAAW,CAAK,MAiBpB,EALJ,IAAI,EAAO,EAAM,MAAM,CAAC,IAAI,AACxB,CAAA,EAAM,MAAM,CAAC,IAAI,GAAK,AAAA,GAAW,MAAM,EAC1C,CAAA,EAAO,AAAA,GAAc,EAAM,MAAM,CAAE,EAAM,cAAc,CAAA,EAIxD,IAAI,EAAU,CAAC,QAAU,EAAM,MAAM,CAAC,IAAI,CAAC,CAO3C,OANI,EAAM,MAAM,EACf,EAAQ,IAAI,CAAC,UAEV,EAAM,MAAM,CAAC,MAAM,GAAK,AAAA,GAAO,IAAI,EACtC,EAAQ,IAAI,CAAC,UAAY,EAAM,MAAM,CAAC,MAAM,EAErC,EAAM,MAAM,CAAC,IAAI,EACzB,KAAK,AAAA,GAAW,MAAM,CACrB,IAAI,EAAU,EAAM,MAAM,CAAC,MAAM,GAAK,AAAA,GAAa,YAAY,AAC3D,CAAA,EAAM,cAAc,EAAI,EAAM,cAAc,CAAC,KAAK,EACrD,CAAA,EAAU,CAAA,CADX,EAGI,GACH,EAAQ,IAAI,CAAC,SAEd,KACD,MAAK,AAAA,GAAW,IAAI,CACnB,IAAI,EAAO,EAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAC9B,GAAQ,GAAyB,EAAK,QAAQ,CAAE,IACnD,CAAA,EAAQ,AAAA,GAAU,EAAK,QAAQ,CAAA,CAGjC,CAEA,OAAO,AAAA,EAAI,CAAC;aACA,EAAE,EAAQ,IAAI,CAAC,KAAK;;SAExB,EAAE,AAAA,GAAa,EAAM,MAAM,EAAE;UAC5B,EAAE,EAAM;YACN,EA/CX,SAAqB,CAAK,EACzB,EAAM,cAAc,GACpB,EAAM,OAAO,EACd,EA4CyB;gBACV,EA5Cf,SAAyB,CAAK,EACR,IAAjB,EAAM,MAAM,GACf,EAAM,cAAc,GACpB,EAAM,OAAO,GAEf,EAuCiC;IAC9B,EAAE,EAAK;;CAEV,CAAC,AACF,CAEe,SAAA,GAAoB,CAAK,EACvC,IAAI,EAAQ,MAAM,IAAI,CAAC,EAAM,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,AAAC,IACnD,IAAI,EAAS,EAAM,OAAO,CAAC,GAAG,CAAC,EAAI,MAAM,EAErC,EAAiB,KAKrB,OAJI,EAAO,YAAY,EACtB,CAAA,EAAiB,EAAM,eAAe,CAAC,GAAG,CAAC,EAAO,YAAY,CAAA,EAGxD,AAAA,EAAI,CAAC;IACV,EAAE,GAAW;QACT,EAAE,EAAI,EAAE,CAAC;WACN,EAAE,EAAI;WACN,EAAE,EAAO;mBACD,EAAE,EAAe;YACxB,EAAE,IAAM,EAAM,aAAa,CAAC,GAAK;YACjC,EAAE,IAAM,EAAM,aAAa,CAAC,GAAK;WAClC,EAAE,EAAM,YAAY,GAAK,EAAI,EAAE,CAAC;;EAEzC,CAAC,AACF,GAEA,OAAO,AAAA,EAAI,CAAC,IAAI,EAAE,EAAM,KAAK,CAAC,AAC/B,CC7EA,MAAM,GAAa,CAClB,KAAM,OACN,KAAM,OACN,QAAS,SACV,EAEA,SAAS,GAAW,CAAK,EAMxB,IAAI,EAAO,AALG,CACb,CAAC,GAAW,IAAI,CAAC,CAAE,iBACnB,CAAC,GAAW,IAAI,CAAC,CAAE,eACnB,CAAC,GAAW,OAAO,CAAC,CAAE,iBACvB,CACkB,CAAC,EAAM,MAAM,CAAC,CAChC,OAAO,AAAA,EAAI,CAAC,2BAA2B,EAAE,EAAM,MAAM,CAAC,QAAQ,EAAE,EAAK,SAAS,CAAC,AAChF,CAEe,SAAA,GAAsB,CAAK,EACzC,IAAI,EAAiB,EAAM,MAAM,CAAC,MAAM,GAAK,AAAA,GAAa,UAAU,AAChE,CAAA,EAAM,cAAc,EACvB,CAAA,EAAiB,GAAkB,AAA+B,cAA/B,EAAM,cAAc,CAAC,KAAK,AAD9D,EAIA,IAAI,EAAc,KAAM,EAAU,EAAE,CACpC,OAAQ,EAAM,MAAM,CAAC,IAAI,EACzB,KAAK,AAAA,GAAW,MAAM,CACrB,OAAQ,EAAM,MAAM,CAAC,MAAM,EAC3B,KAAK,AAAA,GAAa,YAAY,CAC7B,EAAc,eACd,KACD,MAAK,AAAA,GAAa,UAAU,CAC3B,EAAc,gBACd,KACD,MAAK,AAAA,GAAa,WAAW,CAC5B,EAAc,gBACd,KACD,MAAK,AAAA,GAAa,UAAU,CAC3B,GAAI,EAAM,cAAc,CACvB,OAAQ,EAAM,cAAc,CAAC,KAAK,EAClC,IAAK,eACJ,EAAc,oCACV,EAAM,cAAc,CAAC,KAAK,EAC7B,CAAA,GAAe,KAAO,EAAM,cAAc,CAAC,KAAK,AAAL,EAE5C,KACD,KAAK,aACJ,EAAc,mCACd,KACD,KAAK,YAEJ,EAAc,CAAC,aAAa,EAAE,EAAM,cAAc,CAAC,IAAI,EAAI,UAAA,CAAW,AAEvE,MACM,GAAI,EAAM,MAAM,CAAC,UAAU,CAAE,CACnC,IAAI,EAAa,EAAM,MAAM,CAAC,UAAU,CACxC,EAAc,CAAC,aAAa,EAAE,EAAW,IAAI,CAAA,CAAE,AAChD,MACC,EAAc,WAGhB,CAEA,IAAI,EAAa,AAAA,EAAI,CAAC;;;YAGZ,EAAE,EAAM,MAAM,CAAC;;EAEzB,CAAC,CACG,EAAkB,AAAA,EAAI,CAAC;;;YAGjB,EAAE,EAAM,WAAW,CAAC;;EAE9B,CAAC,CACG,EAAiB,AAAA,EAAI,CAAC;;;aAGf,EAAE,EAAM,cAAc,CAAC;;EAElC,CAAC,AAEG,CAAA,EAAM,MAAM,CAAC,SAAS,CACrB,EAAM,MAAM,CAAC,YAAY,EACxB,GACH,EAAQ,IAAI,CAAC,GAEV,EAAM,MAAM,CAAC,MAAM,GAAK,AAAA,GAAa,UAAU,EAClD,EAAQ,IAAI,CAAC,AAAA,EAAI,CAAC;;;eAGR,EAAE,EAAM,eAAe,CAAC;;KAElC,CAAC,IAGE,EACH,EAAQ,IAAI,CAAC,AAAA,EAAI,CAAC;;;eAGR,EAAE,EAAM,YAAY,CAAC;;KAE/B,CAAC,EACS,EAAM,MAAM,CAAC,MAAM,GAAK,AAAA,GAAa,YAAY,EAC3D,EAAQ,IAAI,CAAC,GAEd,EAAQ,IAAI,CAAC,KAGV,EACH,EAAQ,IAAI,CAAC,GACH,EAAM,MAAM,CAAC,MAAM,GAAK,AAAA,GAAa,YAAY,EAC3D,EAAQ,IAAI,CAAC,GAEd,EAAQ,IAAI,CAAC,IAEd,KACD,MAAK,AAAA,GAAW,OAAO,CAClB,EAAM,MAAM,CAAC,KAAK,EACrB,CAAA,EAAc,AAAA,GAAQ,AAAA,GAAU,EAAM,MAAM,CAAC,KAAK,EAAG,EAAM,cAAc,CAAA,EAEtE,EAAM,MAAM,CAAC,MAAM,CACtB,EAAQ,IAAI,CAAC,AAAA,EAAI,CAAC;;;;aAIR,EAAE,EAAM,OAAO,CAAC;;GAE1B,CAAC,GAEG,GACH,EAAQ,IAAI,CAAC,AAAA,EAAI,CAAC;;;cAGR,EAAE,EAAM,MAAM,CAAC;;IAEzB,CAAC,EAEF,EAAQ,IAAI,CAAC,AAAA,EAAI,CAAC;;;;aAIR,EAAE,EAAM,OAAO,CAAC;;GAE1B,CAAC,GAEF,KACD,MAAK,AAAA,GAAW,IAAI,CACnB,GAAI,EAAM,IAAI,CAAE,CACf,IAAI,EAAS,GAAW,IAAI,AACxB,CAAA,EAAM,IAAI,CAAC,OAAO,CACrB,EAAS,GAAW,OAAO,CACjB,EAAM,IAAI,CAAC,IAAI,EACzB,CAAA,EAAS,GAAW,IAAI,AAAJ,EAGrB,IAAI,EAAW,EAAM,MAAM,CAAC,IAAI,CAC5B,GAAyB,EAAM,IAAI,CAAC,QAAQ,CAAE,EAAM,MAAM,CAAC,IAAI,GAClE,CAAA,EAAW,AAAA,GAAU,EAAM,IAAI,CAAC,QAAQ,EAAI,GAD7C,EAIA,IAAI,EAAU,EAAE,CAIhB,GAHI,EAAM,IAAI,CAAC,QAAQ,EAAI,EAAM,IAAI,CAAC,QAAQ,EAC7C,EAAQ,IAAI,CAAC,CAAA,EAAG,EAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAM,IAAI,CAAC,QAAQ,CAAA,CAAE,EAEzD,EAAM,IAAI,CAAC,OAAO,CAAE,CACvB,IACI,EADA,EAAO,CAAC,uEAAuE,EAAE,EAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAGzG,EADG,EAAM,IAAI,CAAC,OAAO,GAAK,EAAM,MAAM,CAAC,IAAI,CACpC,gBAEA,CAAC,iBAAiB,EAAE,EAAM,IAAI,CAAC,OAAO,CAAA,CAAE,CAEhD,EAAQ,IAAI,CAAC,AAAA,EAAI,CAAC,YAAY,EAAE,EAAK,CAAC,EAAE,EAAK,OAAO,CAAC,CACtD,MAAW,EAAM,MAAM,CAAC,oBAAoB,EAI3C,EAAQ,IAAI,CAAC,AAAA,EAAI,CAAC,YAAY,EADnB,wDAC0B,uBAAuB,CAAC,CAE1D,CAAA,EAAM,IAAI,CAAC,QAAQ,EAEtB,EAAQ,IAAI,CAAC,AAAA,EAAI,CAAC,YAAY,EADnB,sEAC0B,uBAAuB,CAAC,EAE1D,EAAM,IAAI,CAAC,GAAG,EAEjB,EAAQ,IAAI,CAAC,AAAA,EAAI,CAAC,YAAY,EADnB,iCAC0B,WAAW,CAAC,EAQ9C,AANJ,CAAA,EAAU,EAAQ,GAAG,CAAC,CAAC,EAAM,IAC5B,AAAI,AAAM,IAAN,EACI,EAED,CAAC,KAAM,EAAK,CACpB,EACY,MAAM,CAAG,GACpB,CAAA,EAAU,CAAC,IAAK,EAAS,IAAI,AAAA,EAG9B,EAAc,AAAA,EAAI,CAAC,CAAC,EAAE,GAAW,QAAQ,EAAE,EAAO,GAAG,EAAE,EAAS,CAAC,EAAE,EAAQ,CAAC,AAC7E,CAEA,EAAU,AAAA,EAAI,CAAC;;;;YAIL,EAAE,EAAM,OAAO,CAAC;;EAE1B,CAAC,AAEF,CAEA,IAAI,EAAO,EAAM,MAAM,CAAC,IAAI,CAK5B,OAJI,EAAM,MAAM,CAAC,IAAI,GAAK,AAAA,GAAW,MAAM,EAC1C,CAAA,EAAO,AAAA,GAAc,EAAM,MAAM,CAAE,EAAM,cAAc,CAAA,EAGjD,AAAA,EAAI,CAAC;qBACQ,EAAE,EAAK;EAC1B,EAAE,EAAc,AAAA,EAAI,CAAC,yBAAyB,EAAE,EAAY,MAAM,CAAC,CAAG,KAAK;uBACtD,EAAE,EAAQ;CAChC,CAAC,AACF,CC5NA,MAAM,WAAmB,EACxB,YAAY,CAAK,CAAE,CAClB,KAAK,CAAC,GAEN,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAC9C,CAEA,sBAAsB,CAAS,CAAE,CAChC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAK,EAAU,IAAI,EACrC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAK,EAAU,UAAU,EAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,GAAK,EAAU,IAAI,AACvC,CAEA,YAAY,CAAK,CAAE,CAClB,EAAM,cAAc,GACpB,IAAI,CAAC,KAAK,CAAC,OAAO,EACnB,CAEA,QAAS,KACJ,EACJ,IAAI,EAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CACtB,EAAU,CAAC,OAAO,CACtB,GAAI,EAAM,CACT,IAAI,EAAO,EACP,CAAA,EAAK,QAAQ,EAAI,EAAK,QAAQ,EACjC,CAAA,EAAO,CAAA,EAAG,EAAK,QAAQ,CAAC,CAAC,EAAE,EAAK,QAAQ,CAAA,CAAE,AAAF,EAGrC,GAAyB,EAAK,QAAQ,CAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAC1D,EAAQ,AAAA,GAAU,EAAK,QAAQ,EAC3B,GACH,CAAA,EAAQ,CAAA,EAAG,EAAM,EAAE,EAAE,EAAK,CAAC,CAAC,AAAD,GAG5B,EAAQ,EAGL,EAAK,OAAO,EACf,CAAA,GAAS;AAAC,iBAAmB,EAAE,EAAK,OAAO,CAAA,CAAE,AAAF,EAGxC,EAAK,IAAI,GACZ,EAAQ,IAAI,CAAC,QACb,GAAS,SAEX,CAEA,OAAO,AAAA,EAAI,CAAC;;;UAGJ,EAAE,GAAc,CAAE,OAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAE,QAAS,MAAO,GAAG;WAC7D,EAAE,EAAQ,IAAI,CAAC,KAAK;WACpB,EAAE,EAAM;aACN,EAAE,IAAI,CAAC,WAAW,CAAC;;MAE1B,EAAE,GAAW,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;KAC7C,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;;EAGrB,CAAC,AACF,CACD,CAEA,SAAS,GAAY,CAAC,CAAE,CAAC,EACxB,GAAI,CAAC,EAAO,EAAM,CAAG,EAAG,CAAC,EAAO,EAAM,CAAG,EAEnC,EAAc,CAAC,IAAK,IAAK,IAAK,IAAK,IAAI,CACzC,EAAI,EAAY,OAAO,CAAC,CAAK,CAAC,EAAE,EAAG,EAAI,EAAY,OAAO,CAAC,CAAK,CAAC,EAAE,QAOvE,CANI,EAAI,GACP,CAAA,EAAI,EAAY,MAAM,AAAN,EAEb,EAAI,GACP,CAAA,EAAI,EAAY,MAAM,AAAN,EAEb,IAAM,GACF,EAAI,EAGL,EAAM,aAAa,CAAC,EAC5B,CAEe,MAAA,WAAyB,EACvC,sBAAsB,CAAS,CAAE,CAChC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAK,EAAU,OAAO,EAC3C,IAAI,CAAC,KAAK,CAAC,KAAK,GAAK,EAAU,KAAK,AACzC,CAEA,QAAS,CACR,OAAO,AAAA,EAAI,CAAC;;IAEV,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,IAAa,GAAG,CAAC,CAAC,CAAC,EAAM,EAAW,GAAK,AAAA,EAAI,CAAC;MAClF,EAAE,GAAW;UACT,EAAE,EAAK;WACN,EAAE,EAAK;iBACD,EAAE,EAAW;WACnB,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAM;cAC1B,EAAE,IAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAM;;IAE/C,CAAC,EAAE;;EAEL,CAAC,AACF,CACD,CCxGe,MAAA,WAA0B,EACxC,MAAQ,CACP,IAAK,GACL,KAAM,GACN,KAAM,GACN,SAAU,GACV,WAAY,CAAA,EACZ,SAAU,GACV,SAAU,GACV,SAAU,CAAA,CACX,CAAE,AACF,CAAA,UAAY,AAAA,GAAY,AAExB,aAAY,CAAK,CAAE,CAClB,KAAK,CAAC,GAEN,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAC7C,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAE3C,EAAM,MAAM,EACf,CAAA,IAAI,CAAC,KAAK,CAAG,CACZ,GAAG,IAAI,CAAC,KAAK,CACb,IAAK,EAAM,MAAM,CAAC,GAAG,EAAI,GACzB,KAAM,EAAM,MAAM,CAAC,IAAI,EAAI,GAC3B,WAAY,EAAM,MAAM,CAAC,WAAW,EAAI,CAAA,EACxC,SAAU,EAAM,MAAM,CAAC,QAAQ,EAAI,GACnC,SAAU,EAAM,MAAM,CAAC,QAAQ,EAAI,EACpC,CAAA,CAEF,CAEA,YAAY,CAAK,CAAE,CAClB,IAAI,EAAS,EAAM,MAAM,CACrB,EAAQ,AAAgB,aAAhB,EAAO,IAAI,CAAkB,EAAO,OAAO,CAAG,EAAO,KAAK,CACtE,IAAI,CAAC,QAAQ,CAAC,CAAE,CAAC,EAAO,IAAI,CAAC,CAAE,CAAM,EACtC,CAEA,aAAa,CAAK,CAAE,CAGnB,GAFA,EAAM,cAAc,GAEhB,IAAI,CAAC,KAAK,CAAC,UAAU,CACxB,OAGD,IAAI,EAAS,CACZ,IAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CACnB,KAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CACrB,KAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CACrB,YAAa,IAAI,CAAC,KAAK,CAAC,UAAU,CAClC,SAAU,IAAI,CAAC,KAAK,CAAC,QAAQ,CAC7B,SAAU,IAAI,CAAC,KAAK,CAAC,QAAQ,CAC7B,UAAW,KACX,SAAU,EAAE,AACb,CAEI,CAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACtB,EAAO,SAAS,CAAG,CAClB,SAAU,EAAO,QAAQ,EAAI,EAAO,IAAI,CACxC,SAAU,IAAI,CAAC,KAAK,CAAC,QAAQ,AAC9B,EACU,AAAoB,aAApB,IAAI,CAAC,KAAK,CAAC,IAAI,CACzB,EAAO,YAAY,CAAG,CAAA,EACQ,WAApB,IAAI,CAAC,KAAK,CAAC,IAAI,EACzB,CAAA,EAAO,eAAe,CAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,AAAf,EAGxC,IAAI,CAAC,KAAK,CAAC,QAAQ,EACtB,CAAA,EAAO,QAAQ,CAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAI,EAAE,AAAF,EAGjD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EACrB,CAEA,mBAAoB,CACf,IAAI,CAAC,SAAS,CAAC,OAAO,EACzB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAE9B,CAEA,QAAS,CACR,IAAI,EAAW,IAAI,CAAC,KAAK,CAAC,UAAU,CAEhC,EAAY,IACX,CAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAC/C,CAAA,EAAY,AAAA,EAAI,CAAC;;;;;;YAMR,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;eACd,EAAE,EAAS;;;;;GAKvB,CAAC,AAAD,EAGD,IAAI,EAAS,IACT,CAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CACxB,EAAS,AAAA,EAAI,CAAC;;GAEd,CAAC,CACS,IAAI,CAAC,KAAK,CAAC,KAAK,EAC1B,CAAA,EAAS,AAAA,EAAI,CAAC;0BACS,EAAE,AAAA,GAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;GACnD,CAAC,AAAD,EAGD,IAAI,EAAO,IACa,CAAA,aAApB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAmB,AAAoB,aAApB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAmB,AAAoB,WAApB,IAAI,CAAC,KAAK,CAAC,IAAI,EACtF,CAAA,EAAO,AAAA,EAAI,CAAC;;;;;;YAMH,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;eACnB,EAAE,EAAS;eACX,EAAE,AAAoB,cAApB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAiB;kBAC/B,EAAE,AAAoB,cAApB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,aAAe,GAAG;;;;GAIrE,CAAC,AAAD,EAGD,IAAI,EAAW,KACX,EAAW,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAI,EAAE,CAC/C,GAAI,EAAS,MAAM,CAAG,EAAG,CACxB,IAAI,EAAI,EAAS,MAAM,CAAG,EAAI,IAAM,GACpC,EAAW,AAAA,EAAI,CAAC;;;;;cAKL,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;sBAEd,EAAE,EAAE,SAAS,EAAE,EAAS,IAAI,CAAC,MAAM;;;GAGtD,CAAC,AACF,CAEA,OAAO,AAAA,EAAI,CAAC;iBACG,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;;;;;;;;YAQtD,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;eACf,EAAE,EAAS;UAChB,EAAE,IAAI,CAAC,SAAS,CAAC;;;;;;;IAOvB,EAAE,EAAK;;IAEP,EAAE,EAAS;;;;;;cAMD,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;eACvB,EAAE,EAAS;;;;;;;;;;;KAWrB,EAAE,EAAU;;;;;;;aAOJ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACnB,EAAE,EAAS;;;;;;;;;;;aAWd,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACnB,EAAE,EAAS;;;;;;;;;;;aAWd,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACf,EAAE,EAAS;;;;;;;;qBAQN,EAAE,EAAS;;IAE5B,EAAE,EAAO;;EAEX,CAAC,AACF,CACD,CCtOe,MAAA,WAAuB,EACrC,MAAQ,CACP,QAAS,GACV,CAAE,AAEF,aAAY,CAAK,CAAE,CAClB,KAAK,CAAC,GAEN,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAC7C,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAE3C,EAAM,OAAO,EAChB,CAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAG,EAAM,OAAO,AAAP,CAE7B,CAEA,YAAY,CAAK,CAAE,CAClB,IAAI,EAAS,EAAM,MAAM,CACrB,EAAQ,AAAgB,aAAhB,EAAO,IAAI,CAAkB,EAAO,OAAO,CAAG,EAAO,KAAK,CACtE,IAAI,CAAC,QAAQ,CAAC,CAAE,CAAC,EAAO,IAAI,CAAC,CAAE,CAAM,EACtC,CAEA,aAAa,CAAK,CAAE,CACnB,EAAM,cAAc,GAEpB,IAAI,EAAS,CACZ,QAAS,IAAI,CAAC,KAAK,CAAC,OAAO,AAC5B,EAEA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EACrB,CAEA,QAAS,CACR,OAAO,AAAA,EAAI,CAAC;iBACG,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;;;6CAGrB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;;;;;;EAOhE,CAAC,AACF,CACD,CE9CA,SAAS,GAAiB,CAAO,CAAE,CAAK,CAAE,CAAK,EAC9C,IAAI,EAAU,MAAM,IAAI,CAAC,EAAQ,MAAM,IACnC,EAAI,EAAQ,SAAS,CAAC,AAAC,GAAQ,EAAI,EAAE,GAAK,UAC9C,AAAI,EAAI,EACA,MAER,EAAI,AAAC,CAAA,EAAI,EAAQ,MAAM,CAAG,CAAA,EAAS,EAAQ,MAAM,CAC1C,CAAO,CAAC,EAAE,CAClB,CAEO,MAAM,GAAc,CAC1B,CACC,IAAK,IACL,OAAQ,CAAA,EACR,YAAa,4BACb,QAAS,AAAC,IACT,EAAI,QAAQ,CAAC,AAAC,IACb,IAAI,EAAU,IAAI,IAsBlB,OArBA,EAAM,OAAO,CAAC,OAAO,CAAC,AAAC,IACtB,EAAQ,GAAG,CAAC,EAAI,EAAE,CAAE,CACnB,GAAG,CAAG,CACN,OAAQ,AAAA,GAAO,IAAI,CACnB,gBAAiB,IAClB,GAEA,IAAI,EAAW,CAAC,EAChB,GAAI,EAAI,QAAQ,CAAC,MAAM,CAAG,EAAG,CAC5B,IAAI,EAAU,EAAI,QAAQ,CAAC,EAAI,QAAQ,CAAC,MAAM,CAAG,EAAE,AACnD,CAAA,CAAQ,CAAC,AAAA,GAAY,IAAI,CAAC,CAAG,AAAA,GAAmB,EACjD,CAEA,IAAI,EAAS,EAAI,OAAO,CAAC,GAAG,CAAC,EAAI,MAAM,EACvC,EAAI,WAAW,CAAC,GAAG,CAAC,CACnB,KAAM,EAAI,IAAI,CACd,OAAQ,EAAO,MAAM,CACrB,OAAQ,AAAA,GAAO,IAAI,CACnB,SAAA,CACD,EACD,GACO,CAAE,QAAA,CAAQ,CAClB,EAAG,KACF,EAAI,mBAAmB,EACxB,EACD,CACD,EACA,CACC,IAAK,IACL,OAAQ,CAAA,EACR,YAAa,oCACb,QAAS,AAAC,IAET,IAAI,EAAoB,KACpB,EAAS,KACb,IAAK,IAAI,KAAO,EAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAClC,GAAqB,EAAI,IAAI,GAAK,AAAA,GAAW,MAAM,EACvD,CAAA,EAAoB,CADrB,EAII,EAAI,MAAM,GAAK,AAAA,GAAO,IAAI,EAI1B,CAAA,CAAC,GAAU,AAAA,GAAO,OAAO,CAAC,EAAI,MAAM,CAAE,EAAO,MAAM,EAAI,CAAA,GAC1D,CAAA,EAAS,CADV,EAII,GACJ,CAAA,EAAS,CADV,EAGI,GACH,EAAI,YAAY,CAAC,EAEnB,CACD,EACA,CACC,IAAK,UACL,OAAQ,CAAA,EACR,YAAa,8BACb,QAAS,AAAC,IACT,IAAI,EAAO,GAAiB,EAAI,KAAK,CAAC,OAAO,CAAE,EAAI,KAAK,CAAC,YAAY,CAAE,IACnE,GACH,EAAI,YAAY,CAAC,EAEnB,CACD,EACA,CACC,IAAK,YACL,OAAQ,CAAA,EACR,YAAa,0BACb,QAAS,AAAC,IACT,IAAI,EAAO,GAAiB,EAAI,KAAK,CAAC,OAAO,CAAE,EAAI,KAAK,CAAC,YAAY,CAAE,GACnE,GACH,EAAI,YAAY,CAAC,EAEnB,CACD,EACA,CACC,IAAK,IACL,QAAS,CAAA,EACT,YAAa,qBACb,QAAS,AAAC,IACT,EAAI,UAAU,CAAC,SAChB,CACD,EACA,CCvGD,SAAS,GAAgB,CAAG,EAC3B,IAAI,EAAM,EAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAI,KAAK,CAAC,YAAY,EACtD,GAAI,CAAC,EACJ,MAAM,AAAI,MAAM,2BAEjB,OAAO,EAAI,OAAO,CAAC,GAAG,CAAC,EAAI,MAAM,CAClC,CAUA,SAAS,GAAiB,CAAG,EAC5B,IAAI,EAAe,EAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAI,KAAK,CAAC,YAAY,EAC/D,GAAI,CAAC,GAAgB,EAAa,IAAI,GAAK,AAAA,GAAW,OAAO,CAC5D,MAAM,AAAI,MAAM,oBAEjB,OAAO,EAAa,IAAI,AACzB,CAEA,eAAe,GAAgB,CAAG,CAAE,CAAI,CAAE,CAAI,EAC7C,IAAI,EAAO,CAAI,CAAC,EAAE,CAClB,GAAI,CAAC,EACJ,MAAM,AAAI,MAAM,gBAEjB,IAAI,EAAgB,GAAiB,GACjC,EAAS,GAAgB,GAEvB,EAAO,AADD,CAAA,MAAM,EAAO,KAAK,CAAC,EAA/B,CACkB,CjBxBU,MiBwBS,CAAC,MAAM,CACtC,EAAO,CAAI,CAAC,EAAE,CACd,EAAO,CAAI,CAAC,EAAE,CACpB,EAAO,IAAI,CAAC,CACX,QAAS,OACT,OAAQ,CAAC,EAAe,EAAM,CAAC,EAAE,EAAE,EAAK,CAAC,EAAE,EAAA,CAAM,CAAC,AACnD,EACD,CAEA,SAAS,GAAuB,CAAG,EAClC,IAAI,EAAe,EAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAI,KAAK,CAAC,YAAY,EAC1D,GAAgB,EAAa,IAAI,GAAK,AAAA,GAAW,MAAM,EAG5D,EAAI,cAAc,CAAC,CAAE,OAAQ,EAAa,MAAM,AAAC,EAAG,AAAC,GAC7C,CAAA,CAAE,OAAQ,AAAA,GAAO,KAAK,CAAC,EAAI,MAAM,CAAE,AAAA,GAAO,OAAO,CAAE,CAAA,EAE5D,CAEA,MAAM,GAAO,CACZ,KAAM,OACN,MAAO,oBACP,YAAa,iBACb,QAAS,CAAC,EAAK,KACd,IAAI,EAAU,CAAI,CAAC,EAAE,CACrB,GAAI,CAAC,EACJ,MAAM,AAAI,MAAM,uBAEb,CAAA,EAAK,MAAM,CAAG,EACjB,EAAI,IAAI,CAAC,EAAS,KAAM,CAAI,CAAC,EAAE,EAE/B,EAAI,IAAI,CAAC,EAEX,CACD,EAEM,GAAO,CACZ,KAAM,OACN,MAAO,mBACP,YAAa,iCACb,QAAS,CAAC,EAAK,KACd,IAAI,EAAO,CAAI,CAAC,EAAE,CAEd,EAAS,CADO,GAAiB,GACR,EAAK,AAC9B,CAAA,EAAK,MAAM,CAAG,GACjB,EAAO,IAAI,CAAC,EAAK,KAAK,CAAC,GAAG,IAAI,CAAC,MAEhC,GAAgB,GAAK,IAAI,CAAC,CAAE,QAAS,OAAQ,OAAA,CAAO,EACrD,CACD,EAEM,GAAM,CACX,KAAM,MACN,MAAO,SACP,YAAa,+DACb,QAAS,CAAC,EAAK,KACd,GAAI,AAAgB,IAAhB,EAAK,MAAM,CAOd,OAAO,GAAgB,EAAK,EAAM,KAPZ,EACtB,IAAI,EAAgB,GAAiB,GACrC,GAAgB,GAAK,IAAI,CAAC,CACzB,QAAS,OACT,OAAQ,CAAC,EAAe,KAAK,AAC9B,EACD,CAGD,CACD,EAEA,SAAS,GAAS,CAAG,CAAE,CAAI,CAAE,CAAI,EAEhC,IAAI,EAAO,CAAI,CAAC,EAAE,CAClB,GAAI,CAAC,EACJ,MAAM,AAAI,MAAM,gBAEjB,IAAI,EAAgB,GAAiB,GACrC,GAAgB,GAAK,IAAI,CAAC,CACzB,QAAS,OACT,OAAQ,CAAC,EAAe,EAAM,EAAK,AACpC,EACD,CAqWA,IAAA,GAAe,IAAI,IAAI,AAnWN,CAChB,CACC,KAAM,OACN,MAAO,YACP,YAAa,mBACb,QAAS,CAAC,EAAK,KACd,IAAM,EAAS,EAAE,AACb,CAAA,EAAK,MAAM,EACd,EAAO,IAAI,CAAC,EAAK,IAAI,CAAC,MAEvB,GAAgB,GAAK,IAAI,CAAC,CAAC,QAAS,OAAQ,OAAA,CAAM,EACnD,CACD,EACA,GACA,CACC,KAAM,SACN,MAAO,SACP,YAAa,qBACb,QAAS,CAAC,EAAK,KACd,IAAI,EAAO,CAAI,CAAC,EAAE,CAClB,IAAK,IAAI,KAAO,EAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GACvC,GAAI,EAAI,IAAI,GAAK,EAAM,CACtB,EAAI,YAAY,CAAC,GACjB,MACD,CAED,MAAM,AAAI,MAAM,iBACjB,CACD,EACA,CACC,KAAM,QACN,YAAa,2BACb,QAAS,CAAC,EAAK,KACd,IAAI,EAAe,EAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAI,KAAK,CAAC,YAAY,EAC/D,GAAI,CAAC,GAAgB,EAAa,IAAI,GAAK,AAAA,GAAW,MAAM,CAC3D,MAAM,AAAI,MAAM,mCAEjB,EAAI,KAAK,CAAC,EAAa,EAAE,CAC1B,CACD,EACA,CACC,KAAM,OACN,MAAO,SACP,YAAa,oDACb,QAAS,CAAC,EAAK,IAAS,GAAS,EAAK,EAAM,KAC7C,EACA,CACC,KAAM,UACN,MAAO,SACP,YAAa,kDACb,QAAS,CAAC,EAAK,IAAS,GAAS,EAAK,EAAM,KAC7C,EACA,CACC,KAAM,aACN,YAAa,6BACb,QAAS,CAAC,EAAK,KACd,EAAI,UAAU,EACf,CACD,EACA,CACC,KAAM,OACN,YAAa,iBACb,QAAS,CAAC,EAAK,KACd,EAAI,QAAQ,EACb,CACD,EACA,CACC,KAAM,SACN,MAAO,SACP,YAAa,+BACb,QAAS,CAAC,EAAK,KACd,IAAI,EAAO,CAAI,CAAC,EAAE,CAClB,GAAI,CAAC,EACJ,MAAM,AAAI,MAAM,gBAEjB,IAAI,EAAgB,GAAiB,GACrC,GAAgB,GAAK,IAAI,CAAC,CAAE,QAAS,SAAU,OAAQ,CACtD,EAAM,EACN,AAAA,EACF,CACD,EACA,CAAE,GAAG,EAAI,CAAE,KAAM,GAAI,EACrB,GACA,GACA,CACC,KAAM,UACN,MAAO,WACP,YAAa,+CACb,QAAS,CAAC,EAAK,KACd,GAAK,OAAO,CAAC,EAAK,GAClB,GAAI,OAAO,CAAC,EAAK,EAClB,CACD,EACA,CACC,KAAM,SACN,MAAO,sBACP,YAAa,4CACb,QAAS,CAAC,EAAK,KACd,GAAgB,GAAK,IAAI,CAAC,CAAE,QAAS,SAAU,OAAQ,CAAK,GAC5D,GAAuB,EACxB,CACD,EACA,CACC,KAAM,KACN,MAAO,WACP,YAAa,+CACb,QAAS,CAAC,EAAK,KACd,IAAI,EAAS,EAAK,IAAI,CAAC,KACnB,EAAS,AArNhB,SAAyB,CAAG,EAC3B,IAAI,EAAe,EAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAI,KAAK,CAAC,YAAY,EAC/D,GAAI,CAAC,EACJ,MAAM,AAAI,MAAM,mBAEjB,OAAO,EAAa,IAAI,AACzB,EA+MgC,GACzB,EAAO,CAAC,WAAW,EAAE,EAAO,IAAI,CAAC,CACrC,EAAI,OAAO,CAAC,EAAQ,EACrB,CACD,EACA,CACC,KAAM,OACN,MAAO,kCACP,YAAa,yCACb,QAAS,CAAC,EAAK,KACd,IAAI,EAAS,CAAI,CAAC,EAAE,CAChB,CAAA,CAAC,GAAU,EAAO,UAAU,CAAC,MAAQ,EAAO,UAAU,CAAC,IAAA,GAE1D,CAAA,EAAO,CADa,GAAiB,MACX,EAAK,AAAA,EAEhC,GAAgB,GAAK,IAAI,CAAC,CAAE,QAAS,OAAQ,OAAQ,CAAK,EAC3D,CACD,EACA,CACC,KAAM,OACN,MAAO,WACP,YAAa,6BACb,QAAS,CAAC,EAAK,KACd,GAAgB,GAAK,IAAI,CAAC,CAAE,QAAS,OAAQ,OAAQ,CAAK,GAC1D,GAAuB,EACxB,CACD,EACA,CACC,KAAM,MACN,MAAO,qBACP,YAAa,4CACb,QAAS,CAAC,EAAK,KACd,IAAI,EAAS,CAAI,CAAC,EAAE,CAChB,EAAO,EAAK,KAAK,CAAC,GAAG,IAAI,CAAC,KAC9B,GAAgB,GAAK,IAAI,CAAC,CAAE,QAAS,UAAW,OAAQ,CAAC,EAAQ,EAAK,AAAC,EACxE,CACD,EACA,CACC,KAAM,OACN,MAAO,SACP,YAAa,0BACb,QAAS,CAAC,EAAK,KACd,IAAI,EAAU,CAAI,CAAC,EAAE,CACrB,GAAgB,GAAK,IAAI,CAAC,CAAE,QAAS,OAAQ,OAAQ,CAAC,EAAQ,AAAC,EAChE,CACD,EACA,CACC,KAAM,SACN,MAAO,qBACP,YAAa,2CACb,QAAS,CAAC,EAAK,KACd,IAAI,EAAS,CAAI,CAAC,EAAE,CAChB,EAAO,EAAK,KAAK,CAAC,GAAG,IAAI,CAAC,KAC9B,GAAgB,GAAK,IAAI,CAAC,CAAE,QAAS,SAAU,OAAQ,CAAC,EAAQ,EAAK,AAAC,EACvE,CACD,EACA,CACC,KAAM,KACN,MAAO,SACP,YAAa,8CACb,QAAS,CAAC,EAAK,IAAS,GAAS,EAAK,EAAM,KAC7C,EACA,CACC,KAAM,OACN,MAAO,WACP,YAAa,kBACb,QAAS,CAAC,EAAK,KACd,IAAI,EAAS,EAAK,IAAI,CAAC,KAEnB,EAAS,CADO,GAAiB,GACT,CACxB,GACH,EAAO,IAAI,CAAC,GAEb,GAAgB,GAAK,IAAI,CAAC,CAAE,QAAS,OAAQ,OAAA,CAAO,EACrD,CACD,EACA,CACC,KAAM,QACN,MAAO,mBACP,YAAa,+CACb,QAAS,CAAC,EAAK,KACd,IAAI,EAAO,CAAI,CAAC,EAAE,CAClB,GAAI,CAAC,EACJ,MAAM,AAAI,MAAM,oBAIjB,GAFA,EAAI,IAAI,CAAC,GAEL,EAAK,MAAM,CAAG,EAAG,CACpB,IAAI,EAAO,EAAK,KAAK,CAAC,GAAG,IAAI,CAAC,KAC9B,EAAI,OAAO,CAAC,EAAM,EACnB,CACD,CACD,EACA,CACC,KAAM,QACN,MAAO,SACP,YAAa,iEACb,QAAS,CAAC,EAAK,KACd,GAAI,AAAgB,IAAhB,EAAK,MAAM,CAMd,OAAO,GAAgB,EAAK,EAAM,MALlC,GAAgB,GAAK,IAAI,CAAC,CACzB,QAAS,OACT,OAAQ,CAAC,GAAiB,GAAM,KAAK,AACtC,EAIF,CACD,EACA,CACC,KAAM,OACN,YAAa,OACb,QAAS,CAAC,EAAK,KACd,EAAI,KAAK,CAAC,CAAE,KV5Uc,GU4UM,EACjC,CACD,EACA,CACC,KAAM,QACN,MAAO,YACP,YAAa,uCACb,QAAS,CAAC,EAAK,KACd,IAAI,EACJ,GAAI,CACH,EAAM,GAAiB,EAAK,IAAI,CAAC,KAClC,CAAE,MAAO,EAAK,CACb,MAAM,AAAI,MAAM,gCAAkC,EAAI,OAAO,CAC9D,CACA,GAAgB,GAAK,IAAI,CAAC,EAC3B,CACD,EACA,CACC,KAAM,YACN,YAAa,0BACb,QAAS,CAAC,EAAK,KACd,EAAI,SAAS,EACd,CACD,EACA,CACC,KAAM,UACN,MAAO,aACP,YAAa,0BACb,QAAS,CAAC,EAAK,KACd,IAAI,EAAc,EAAK,IAAI,CAAC,KACxB,EAAS,GAAgB,GAC7B,GAAI,CAAC,EAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAC5B,MAAM,AAAI,MAAM,gDAEjB,EAAO,IAAI,CAAC,CAAE,QAAS,UAAW,OAAQ,CAAC,EAAY,AAAC,EAEzD,CACD,EACA,CACC,KAAM,QACN,MAAO,mBACP,YAAa,4BACb,QAAS,CAAC,EAAK,KACd,IAAI,EAAQ,CAAI,CAAC,EAAE,CACnB,GAAI,CAAC,EACJ,MAAM,AAAI,MAAM,iBAEjB,IAAI,EAAS,CAAC,EAAM,AAChB,CAAA,EAAK,MAAM,CAAG,GACjB,EAAO,IAAI,CAAC,EAAK,KAAK,CAAC,GAAG,IAAI,CAAC,MAEhC,GAAgB,GAAK,IAAI,CAAC,CAAE,QAAS,QAAS,OAAA,CAAO,GACrD,GAAuB,EACxB,CACD,EACA,CACC,KAAM,QACN,MAAO,UACP,YAAa,0CACb,QAAS,CAAC,EAAK,KAEd,IAAI,EAAS,CADO,GAAiB,GACT,AACxB,CAAA,EAAK,MAAM,CAAG,GACjB,EAAO,IAAI,CAAC,EAAK,IAAI,CAAC,MAEvB,GAAgB,GAAK,IAAI,CAAC,CAAE,QAAS,QAAS,OAAA,CAAO,EACtD,CACD,EACA,CACC,KAAM,QACN,MAAO,SACP,YAAa,kCACb,QAAS,CAAC,EAAK,IACP,GAAgB,EAAK,EAAM,KAEpC,EACA,CACC,KAAM,UACN,MAAO,SACP,YAAa,oCACb,QAAS,CAAC,EAAK,IACP,GAAgB,EAAK,EAAM,KAEpC,EACA,CACC,KAAM,QACN,MAAO,SACP,YAAa,4CACb,QAAS,CAAC,EAAK,IAAS,GAAS,EAAK,EAAM,KAC7C,EACA,CACC,KAAM,MACN,MAAO,SACP,YAAa,2BACb,QAAS,CAAC,EAAK,KACd,GAAgB,GAAK,IAAI,CAAC,CAAE,QAAS,MAAO,OAAQ,CAAK,GACzD,GAAuB,EACxB,CACD,EACA,CACC,KAAM,QACN,MAAO,SACP,YAAa,oCACb,QAAS,CAAC,EAAK,KACd,IAAI,EAAO,CAAI,CAAC,EAAE,CAClB,GAAI,CAAC,EACJ,MAAM,AAAI,MAAM,gBAEjB,GAAgB,GAAK,IAAI,CAAC,CAAE,QAAS,QAAS,OAAQ,CAAC,EAAK,AAAC,GAC7D,GAAuB,EACxB,CACD,EACA,CACC,KAAM,SACN,MAAO,iBACP,YAAa,6CACb,QAAS,CAAC,EAAK,KACd,GAAI,EAAK,MAAM,CAAG,EACjB,MAAM,AAAI,MAAM,gBAEjB,GAAgB,GAAK,IAAI,CAAC,CAAE,QAAS,SAAU,OAAQ,CAAK,GAC5D,GAAuB,EACxB,CACD,EACA,CACC,KAAM,OACN,MAAO,WACP,YAAa,6CACb,QAAS,CAAC,EAAK,KACd,GAAgB,GAAK,IAAI,CAAC,CAAE,QAAS,OAAQ,OAAQ,CAAK,GAC1D,GAAuB,EACxB,CACD,EACA,CAE+B,GAAG,CAAC,AAAC,GAAQ,CAAC,EAAI,IAAI,CAAE,EAAI,GFnd5D,SAAS,KACR,IAAI,EAAI,AAAA,GAAY,GAAG,CAAC,AAAC,IACxB,IAAI,EAAO,EAAE,CAgBb,OAfI,EAAQ,OAAO,EAClB,EAAK,IAAI,CAAC,QAEP,EAAQ,MAAM,EACjB,EAAK,IAAI,CAAC,OAEX,EAAK,IAAI,CAAC,EAAQ,GAAG,EAErB,EAAO,EAAK,GAAG,CAAC,CAAC,EAAM,IACf,AAAA,EAAI,CAAC;IACX,EAAE,EAAI,EAAI,IAAM,KAAK;SAChB,EAAE,EAAK;GACb,CAAC,EAGK,AAAA,EAAI,CAAC;OACP,EAAE,EAAK;OACP,EAAE,EAAQ,WAAW,CAAC;EAC3B,CAAC,AACF,GAcA,OAZA,EAAE,IAAI,CAAC,AAAA,EAAI,CAAC;;;CAGZ,CAAC,EAEI,OAAO,UAAU,CAAC,mBAAmB,OAAO,EAChD,EAAE,IAAI,CAAC,AAAA,EAAI,CAAC;;;EAGZ,CAAC,EAGK,AAAA,EAAI,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,AAC3B,CAEA,SAAS,KACR,IAAI,EAAI,IAAI,AAAA,GAAS,IAAI,GAAG,CAAC,GAAG,CAAC,AAAC,IACjC,IAAI,EAAM,AAAA,GAAS,GAAG,CAAC,GAEnB,EAAQ,CAAC,AAAA,EAAI,CAAC,SAAS,EAAE,EAAK,SAAS,CAAC,CAAC,CAK7C,OAJI,EAAI,KAAK,EACZ,EAAM,IAAI,CAAC,IAAM,EAAI,KAAK,EAGpB,AAAA,EAAI,CAAC;aACD,EAAE,EAAM;OACd,EAAE,EAAI,WAAW,CAAC;EACvB,CAAC,AACF,GAEA,OAAO,AAAA,EAAI,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,AAC3B,CAEe,SAAA,KACd,OAAO,AAAA,EAAI,CAAC;;GAEV,EAAE,GAAgB;;;GAGlB,EAAE,GAAa;CACjB,CAAC,AACF,CGnEA,MAAM,GAAgB,CACrB,KAAM,GACN,KAAM,GACN,KAAM,KACN,SAAU,GACV,SAAU,GACV,SAAU,GACV,KAAM,EACP,CAEe,OAAA,WAA0B,EACxC,WAAa,IAAK,AAClB,CAAA,MAAQ,CACP,GAAG,EAAa,CAChB,SAAU,CAAA,CACX,CAAE,AAEF,aAAY,CAAK,CAAE,CAClB,KAAK,CAAC,GAEN,IAAI,CAAC,UAAU,CAAG,CAAE,GAAG,EAAa,AAAC,EAErC,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAC7C,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAE3C,EAAM,MAAM,EACf,OAAO,IAAI,CAAC,IAAe,OAAO,CAAC,AAAC,IACX,KAAA,IAApB,EAAM,MAAM,CAAC,EAAE,GAClB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAG,EAAM,MAAM,CAAC,EAAE,CAC/B,IAAI,CAAC,UAAU,CAAC,EAAE,CAAG,EAAM,MAAM,CAAC,EAAE,CAEtC,EAEF,CAEA,YAAY,CAAK,CAAE,CAClB,IAAI,EAAS,EAAM,MAAM,CACrB,EAAQ,AAAgB,aAAhB,EAAO,IAAI,CAAkB,EAAO,OAAO,CAAG,EAAO,KAAK,CACtE,IAAI,CAAC,QAAQ,CAAC,CAAE,CAAC,EAAO,IAAI,CAAC,CAAE,CAAM,EACtC,CAEA,aAAa,CAAK,CAAE,CACnB,EAAM,cAAc,GAEpB,IAAI,EAAS,CAAC,EACd,OAAO,IAAI,CAAC,IAAe,OAAO,CAAC,AAAC,IAC/B,CAAA,AAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAI,IAAI,CAAC,UAAU,CAAC,EAAE,GAAK,IAAI,CAAC,KAAK,CAAC,EAAE,AAAF,IAGvD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAI,EAAa,CAAC,EAAE,GAAK,IAAI,CAAC,KAAK,CAAC,EAAE,EAG1D,CAAA,CAAM,CAAC,EAAE,CAAG,IAAI,CAAC,KAAK,CAAC,EAAE,AAAF,EACxB,GAEA,IAAI,EAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAG,KAC3D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAQ,EAC7B,CAEA,QAAS,CACR,IAAI,EAAgB,IACf,CAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EACpB,CAAA,EAAgB,AAAA,EAAI,CAAC;iDACyB,EAAE,IAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG;;;GAG5E,CAAC,AAAD,EAGD,IAAI,EAAW,KAef,OAdI,IAAI,CAAC,KAAK,CAAC,QAAQ,EACtB,CAAA,EAAW,AAAA,EAAI,CAAC;;;;;cAKL,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;+BAEL,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;;GAGlD,CAAC,AAAD,EAGM,AAAA,EAAI,CAAC;iBACG,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;;;0CAGxB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;;;IAIxD,EAAE,EAAS;;;;;;;;;6CAS8B,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;;;;;2CAMpB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;;;;;mDAMV,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;;;;;mDAMtB,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;;;;;+CAM1B,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;;;;;+CAMtB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;;;;;IAM7D,EAAE,EAAc;IAChB,EAAE,IAAI;;KAEL,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAG,cAAgB,eAAe;;;EAGvD,CAAC,AACF,CACD,CCjJe,MAAA,WAA0B,EACxC,MAAQ,CACP,SAAU,GACV,SAAU,EACX,CAAE,AAEF,aAAY,CAAK,CAAE,CAClB,KAAK,CAAC,GAEN,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAC7C,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAE3C,EAAM,QAAQ,EACjB,CAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAG,EAAM,QAAQ,AAAR,CAE9B,CAEA,YAAY,CAAK,CAAE,CAClB,IAAI,EAAS,EAAM,MAAM,CACrB,EAAQ,AAAgB,aAAhB,EAAO,IAAI,CAAkB,EAAO,OAAO,CAAG,EAAO,KAAK,CACtE,IAAI,CAAC,QAAQ,CAAC,CAAE,CAAC,EAAO,IAAI,CAAC,CAAE,CAAM,EACtC,CAEA,aAAa,CAAK,CAAE,CACnB,EAAM,cAAc,GAEpB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAC7D,CAEA,QAAS,CACR,OAAO,AAAA,EAAI,CAAC;iBACG,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;;;kDAGhB,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;;;;;kDAMtB,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;;;;;EAMtE,CAAC,AACF,CACD,CChDe,MAAA,WAA2B,EACzC,MAAQ,CACP,MAAO,GACP,SAAU,EACX,CAAE,AAEF,aAAY,CAAK,CAAE,CAClB,KAAK,CAAC,GAEN,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAC7C,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAChD,CAEA,YAAY,CAAK,CAAE,CAClB,IAAI,EAAS,EAAM,MAAM,CACrB,EAAQ,AAAgB,aAAhB,EAAO,IAAI,CAAkB,EAAO,OAAO,CAAG,EAAO,KAAK,CACtE,IAAI,CAAC,QAAQ,CAAC,CAAE,CAAC,EAAO,IAAI,CAAC,CAAE,CAAM,EACtC,CAEA,aAAa,CAAK,CAAE,CACnB,EAAM,cAAc,GAEpB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAC1D,CAEA,QAAS,CACR,OAAO,AAAA,EAAI,CAAC;iBACG,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;;;;;;YAMtD,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;eAChB,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;kBACxB,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAG,KAAO,aAAa;;;;;;;;kDAQjB,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;;;;;EAMtE,CAAC,AACF,CACD,CClDe,MAAA,WAA2B,EACzC,MAAQ,CACP,KAAM,EACP,CAAE,AAEF,aAAY,CAAK,CAAE,CAClB,KAAK,CAAC,GAEN,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAC7C,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAChD,CAEA,YAAY,CAAK,CAAE,CAClB,IAAI,EAAS,EAAM,MAAM,CACrB,EAAQ,AAAgB,aAAhB,EAAO,IAAI,CAAkB,EAAO,OAAO,CAAG,EAAO,KAAK,CACtE,IAAI,CAAC,QAAQ,CAAC,CAAE,CAAC,EAAO,IAAI,CAAC,CAAE,CAAM,EACtC,CAEA,aAAa,CAAK,CAAE,CACnB,EAAM,cAAc,GAEpB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CACpC,CAEA,QAAS,CACR,OAAO,AAAA,EAAI,CAAC;iBACG,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;4BACtC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;OAE1C,EAAE,AAAA,GAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;;;;0CAIK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;;;;;EAM1D,CAAC,AACF,CACD,CC1Ce,MAAA,WAA2B,EACzC,MAAQ,CAAC,CAAE,AAEX,aAAY,CAAK,CAAE,CAClB,KAAK,CAAC,GAEN,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAG,EAAM,QAAQ,CAAC,mBAAmB,CACnE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAG,EAAM,QAAQ,CAAC,YAAY,CAErD,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAC7C,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAChD,CAEA,YAAY,CAAK,CAAE,CAClB,IAAI,EAAS,EAAM,MAAM,CACrB,EAAQ,AAAgB,aAAhB,EAAO,IAAI,CAAkB,EAAO,OAAO,CAAG,EAAO,KAAK,CACtE,IAAI,CAAC,QAAQ,CAAC,CAAE,CAAC,EAAO,IAAI,CAAC,CAAE,CAAM,EAAG,KACvC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAC/B,EACD,CAEA,aAAa,CAAK,CAAE,CACnB,EAAM,cAAc,GACpB,IAAI,CAAC,KAAK,CAAC,OAAO,EACnB,CAEA,kBAAmB,CAClB,IAAI,EAAM,OAAO,QAAQ,CAAC,MAAM,CAAG,OAAO,QAAQ,CAAC,QAAQ,CAAG,WAC9D,GAAI,CACH,UAAU,uBAAuB,CAAC,MAAO,GACzC,UAAU,uBAAuB,CAAC,OAAQ,EAC3C,CAAE,MAAO,EAAK,CACb,QAAQ,KAAK,CAAC,wCAAyC,EACxD,CACD,CAEA,QAAS,CACR,IAAI,EAAkB,KAkBtB,OAjBI,IAAI,CAAC,KAAK,CAAC,mBAAmB,EACjC,CAAA,EAAkB,AAAA,EAAI,CAAC;;;;;;;oCAOU,EAAE,IAAM,IAAI,CAAC,gBAAgB,GAAG;;;;;;GAMjE,CAAC,AAAD,EAGM,AAAA,EAAI,CAAC;iBACG,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;;;;;cAKpD,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;;;;;;;;;;;cAWjC,EAAE,AAA4B,SAA5B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAY;;;;;;;;;;cAUrC,EAAE,AAA4B,WAA5B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAc;;;;;;;;;;cAUvC,EAAE,AAA4B,SAA5B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAY;;;;;;IAM/C,EAAE,EAAgB;;iDAE2B,EAAE,IAAM,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG;;;;;;;EAOjF,CAAC,AACF,CACD,CC3GA,MAAM,WAAqB,EAC1B,YAAY,CAAK,CAAE,CAClB,KAAK,CAAC,GAEN,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAC9C,CAEA,YAAY,CAAK,CAAE,CAClB,EAAM,cAAc,GACpB,IAAI,CAAC,KAAK,CAAC,OAAO,EACnB,CAEA,QAAS,CACR,IAAI,EAAS,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAG,WAAa,GAEhD,OAAO,AAAA,EAAI,CAAC;;;UAGJ,EAAE,AAAA,GAAa,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;WACjC,EAAE,EAAO;aACP,EAAE,IAAI,CAAC,WAAW,CAAC;;;MAG1B,EAAE,AAAA,GAAc,IAAI,CAAC,KAAK,CAAC,MAAM,CAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;;KAE/D,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;;;EAG5B,CAAC,AACF,CACD,CAEA,SAAS,GAAY,CAAC,CAAE,CAAK,EAC5B,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAC,GAAS,EAAI,CAC9C,CAkBe,MAAA,WAA2B,EACzC,MAAQ,CACP,MAAO,GACP,SAAU,CACX,CAAE,AAEF,aAAY,CAAK,CAAE,CAClB,KAAK,CAAC,GAEN,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAC7C,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAC/C,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAC9C,CAEA,gBAAiB,CAChB,IAAI,EAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,GAEpC,EAAI,EAAE,CACN,EAAS,IAAI,IACjB,IAAK,IAAI,KAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAI,CAC5C,GAAI,EAAI,IAAI,GAAK,AAAA,GAAW,MAAM,CACjC,SAED,IAAI,EAAQ,EACZ,GAAI,AAAU,KAAV,EAAc,CACjB,IAAI,EAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAI,MAAM,EAE9C,GAAI,CADJ,CAAA,EAAQ,AA1CZ,SAAqB,CAAG,CAAE,CAAM,CAAE,CAAK,EACtC,IAAI,EAAQ,EAAI,GAAY,EAAI,IAAI,CAAE,GACtC,OAAQ,EAAI,IAAI,EAChB,KAAK,AAAA,GAAW,OAAO,CACtB,GAAS,GAAY,EAAI,KAAK,EAAI,GAAI,GACtC,KACD,MAAK,AAAA,GAAW,IAAI,CACnB,IAAI,EAAO,EAAO,KAAK,CAAC,GAAG,CAAC,EAAI,IAAI,EAChC,GAAQ,EAAK,QAAQ,EAAI,GAAyB,EAAK,QAAQ,CAAE,EAAI,IAAI,GAC5E,CAAA,GAAS,GAAY,EAAK,QAAQ,CAAE,EADrC,CAID,CACA,OAAO,CACR,EA4BwB,EAAK,EAAQ,EAAjC,EAEC,QAEF,CACA,EAAO,GAAG,CAAC,EAAI,EAAE,CAAE,GACnB,EAAE,IAAI,CAAC,EACR,CAMA,OAJA,EAAE,IAAI,CAAC,CAAC,EAAG,IACH,EAAO,GAAG,CAAC,EAAE,EAAE,EAAI,EAAO,GAAG,CAAC,EAAE,EAAE,GAGnC,EAAE,KAAK,CAAC,EAAG,GACnB,CAEA,YAAY,CAAK,CAAE,CAClB,IAAI,EAAS,EAAM,MAAM,CACzB,IAAI,CAAC,QAAQ,CAAC,CAAE,CAAC,EAAO,IAAI,CAAC,CAAE,EAAO,KAAK,AAAC,EAC7C,CAEA,aAAa,CAAK,CAAE,CACnB,EAAM,cAAc,GACpB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC/D,CAEA,YAAY,CAAK,CAAE,CAClB,OAAQ,EAAM,GAAG,EACjB,IAAK,UACJ,EAAM,eAAe,GACrB,IAAI,CAAC,IAAI,CAAC,IACV,KACD,KAAK,YACJ,EAAM,eAAe,GACrB,IAAI,CAAC,IAAI,CAAC,EAEX,CACD,CAEA,KAAK,CAAK,CAAE,CACX,IAAI,EAAiB,IAAI,CAAC,cAAc,GAAG,MAAM,CACjD,IAAI,CAAC,QAAQ,CAAC,AAAC,GACP,CAAA,CACN,SAAW,AAAA,CAAA,EAAM,QAAQ,CAAG,EAAQ,CAAA,EAAkB,CACvD,CAAA,EAEF,CAEA,QAAS,CACR,IAAI,EAAQ,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,EAAK,KAC3C,IAAI,EAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAI,MAAM,EAE1C,EAAiB,KAKrB,OAJI,EAAO,YAAY,EACtB,CAAA,EAAiB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,EAAO,YAAY,CAAA,EAG7D,AAAA,EAAI,CAAC;KACV,EAAE,GAAa;YACR,EAAE,EAAI;YACN,EAAE,EAAO;oBACD,EAAE,EAAe;cACvB,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAK,EAAE;aAC7B,EAAE,IAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAK;;GAE3C,CAAC,AACF,GAEA,OAAO,AAAA,EAAI,CAAC;;YAEF,EAAE,IAAI,CAAC,WAAW,CAAC;aAClB,EAAE,IAAI,CAAC,YAAY,CAAC;YACrB,EAAE,IAAI,CAAC,WAAW,CAAC;;;;;WAKpB,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;;;;;KAMzB,EAAE,EAAM;;;EAGX,CAAC,AACF,CACD,CC7Je,MAAA,WAAuB,EACrC,MAAQ,CACP,KAAM,EACP,CAAE,AACF,CAAA,UAAY,AAAA,GAAY,AACxB,CAAA,iBAAmB,IAAK,AAExB,aAAY,CAAK,CAAE,CAClB,KAAK,CAAC,GAEN,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAC7C,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAC/C,IAAI,CAAC,kBAAkB,CAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAC3D,IAAI,CAAC,gBAAgB,CAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EACvD,IAAI,CAAC,cAAc,CAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EACnD,IAAI,CAAC,UAAU,CAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAC3C,IAAI,CAAC,mBAAmB,CAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAC7D,IAAI,CAAC,iBAAiB,CAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAC1D,CAEA,YAAY,CAAK,CAAE,CAClB,IAAI,CAAC,QAAQ,CAAC,CAAE,CAAC,EAAM,MAAM,CAAC,IAAI,CAAC,CAAE,EAAM,MAAM,CAAC,KAAK,AAAC,GAEpD,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAI,AAAsB,SAAtB,EAAM,MAAM,CAAC,IAAI,EAAe,CAAC,EAAM,MAAM,CAAC,KAAK,EAC7E,EAAM,MAAM,CAAC,IAAI,EAEnB,CAEA,aAAa,CAAK,CAAE,CACnB,EAAM,cAAc,GACpB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EACnC,IAAI,CAAC,QAAQ,CAAC,CAAE,KAAM,EAAG,EAC1B,CAEA,mBAAmB,CAAK,CAAE,CACzB,IAcI,EAdA,EAAQ,EAAM,MAAM,CAExB,GAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAI,AAAc,QAAd,EAAM,GAAG,EAIrC,EAAM,cAAc,GAAK,EAAM,YAAY,CAH9C,OAOD,EAAM,cAAc,GAEpB,IAAI,EAAY,EAAM,cAAc,CAChC,EAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAE1B,GAAI,IAAI,CAAC,gBAAgB,EAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAK,GAAQ,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAK,EACvG,EAAe,IAAI,CAAC,gBAAgB,KAC9B,KAGF,EAQA,EAPJ,IAHA,IAAI,CAAC,gBAAgB,CAAG,KAGnB,EAAY,EAAY,EAC5B,AAD+B,GAAa,GACxC,AAAoB,MAApB,CAAI,CAAC,EAAU,CAD4B,KAQhD,IAHA,IAGK,EAAU,EACd,AADyB,EAAU,EAAK,MAAM,EAC1C,AAAkB,MAAlB,CAAI,CAAC,EAAQ,CAD+B,KAMjD,IAAI,EAAO,EAAK,KAAK,CAAC,EAAW,GACjC,GAAI,CAAC,EACJ,OAGD,IAAI,EAAe,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAC3C,GAAI,AAAwB,IAAxB,EAAa,MAAM,CACtB,OAGD,EAAe,CACd,KAAA,EACA,UAAW,EAAM,cAAc,CAC/B,OAAQ,EAAK,KAAK,CAAC,EAAG,GACtB,OAAQ,EAAK,KAAK,CAAC,GACnB,aAAA,EACA,UAAW,EACZ,CACD,CAEA,IAAI,EAAI,EAAa,YAAY,CAAC,MAAM,AACpC,CAAA,EAAM,QAAQ,CACjB,EAAa,SAAS,GAEtB,EAAa,SAAS,GAEvB,EAAa,SAAS,CAAI,AAAA,CAAA,EAAa,SAAS,CAAG,CAAA,EAAK,EAExD,IAAI,EAAO,EAAa,YAAY,CAAC,EAAa,SAAS,CAAC,AACvD,CAAA,EAAa,MAAM,EAAK,EAAa,MAAM,GAC3C,EAAK,UAAU,CAAC,KACnB,GAAQ,IAER,GAAQ,MAIV,EAAa,IAAI,CAAG,EAAa,MAAM,CAAG,EAAO,EAAa,MAAM,CACpE,EAAa,SAAS,CAAG,EAAa,MAAM,CAAC,MAAM,CAAG,EAAK,MAAM,CAEjE,EAAM,KAAK,CAAG,EAAa,IAAI,CAC/B,EAAM,cAAc,CAAG,EAAa,SAAS,CAC7C,EAAM,YAAY,CAAG,EAAM,cAAc,CAEzC,IAAI,CAAC,gBAAgB,CAAG,EAExB,IAAI,CAAC,QAAQ,CAAC,CAAE,KAAM,EAAa,IAAI,AAAC,EACzC,CAEA,gBAAiB,CAChB,IAAI,EAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAC9B,OAAO,GAAU,EAAO,QAAQ,CAAC,QAAQ,IAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,AACpE,CAEA,MAAM,WAAW,CAAI,CAAE,KAvIU,EAwIhC,IArIG,EAwIC,EAHA,EAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAC1B,EAAW,EAAO,QAAQ,CAAC,QAAQ,GAGvC,GAAI,EAAO,MAAM,CAAC,SAAS,CAAE,CAC5B,IAAI,EAAS,EAAO,MAAM,CAAC,SAAS,CACpC,EAAO,SAAW,KAAK,EAAO,QAAQ,CAAG,IAAM,EAAO,QAAQ,CAC/D,MAAW,EAAO,MAAM,CAAC,eAAe,EACvC,CAAA,EAAO,UAAY,EAAO,MAAM,CAAC,eAAe,CAAC,KAAK,AAAL,EAGlD,IAAI,EAAU,CACb,iBAAkB,EAAK,IAAI,CAC3B,sBAjJF,AAAI,CADA,EAAkB,mBAHW,EAqJiB,EAAK,IAAI,KAjJnC,EAChB,yBAA4B,EAAW,IAEvC,gCAAkC,CA+IzC,CACI,CAAA,EAAK,IAAI,EACZ,CAAA,CAAO,CAAC,eAAe,CAAG,EAAK,IAAI,AAAJ,EAE5B,GACH,CAAA,EAAQ,aAAgB,CAAG,CAD5B,EAMA,IAAI,EAAO,MAAM,MAAM,EAAU,CAChC,OAAQ,OACR,KAAM,EACN,QAAA,EACA,YAAa,SACd,GAEA,GAAI,CAAC,EAAK,EAAE,CACX,MAAM,AAAI,MAAM,CAAC,qBAAqB,EAAE,EAAK,MAAM,CAAC,CAAC,CAAC,EAGvD,IAAI,EAAM,EAAK,OAAO,CAAC,GAAG,CAAC,YAC3B,GAAI,CAAC,EACJ,MAAM,AAAI,MAAM,mDAGjB,OAAO,IAAI,IAAI,EAAK,EACrB,CAEA,MAAM,eAAe,CAAQ,CAAE,CAC9B,IAAI,EAAW,EAAE,CACjB,IAAK,IAAI,KAAQ,EAChB,EAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAG/B,IAAI,EAAO,MAAM,QAAQ,GAAG,CAAC,GAE7B,IAAI,CAAC,QAAQ,CAAC,AAAC,GACd,AAAI,EAAM,IAAI,CACN,CAAE,KAAM,EAAM,IAAI,CAAG,IAAM,EAAK,IAAI,CAAC,IAAK,EAE1C,CAAE,KAAM,EAAK,IAAI,CAAC,IAAK,EAGjC,CAEA,MAAM,iBAAiB,CAAK,CAAE,CACY,IAArC,EAAM,aAAa,CAAC,KAAK,CAAC,MAAM,EAAW,IAAI,CAAC,cAAc,KAIlE,EAAM,cAAc,GACpB,EAAM,wBAAwB,GAE9B,MAAM,IAAI,CAAC,cAAc,CAAC,EAAM,aAAa,CAAC,KAAK,EACpD,CAEA,eAAe,CAAK,CAAE,CACrB,GAAI,AAAoC,IAApC,EAAM,YAAY,CAAC,KAAK,CAAC,MAAM,EAAW,IAAI,CAAC,cAAc,IAIjE,IAAK,IAAI,KAAQ,EAAM,YAAY,CAAC,KAAK,CACxC,GAAI,AAAc,SAAd,EAAK,IAAI,CACZ,OAIF,EAAM,cAAc,GACrB,CAEA,MAAM,WAAW,CAAK,CAAE,CACiB,IAApC,EAAM,YAAY,CAAC,KAAK,CAAC,MAAM,EAAW,IAAI,CAAC,cAAc,KAIjE,EAAM,cAAc,GACpB,EAAM,wBAAwB,GAE9B,MAAM,IAAI,CAAC,cAAc,CAAC,EAAM,YAAY,CAAC,KAAK,EACnD,CAEA,oBAAoB,CAAK,CAAE,CAE1B,GAAI,SAAS,aAAa,EAAI,SAAS,aAAa,GAAK,SAAS,IAAI,CACrE,OAAQ,SAAS,aAAa,CAAC,OAAO,CAAC,WAAW,IAClD,IAAK,UACL,IAAK,IACJ,KACD,SACC,MACD,CAIG,EAAM,MAAM,EAAI,EAAM,OAAO,EAAI,EAAM,OAAO,EAY9C,AAA0B,GAA1B,IAAI,EAAM,GAAG,CAAC,CAAC,MAAM,EAIrB,IAAI,CAAC,KAAK,CAAC,IAAI,EAIf,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAI,AAAc,MAAd,EAAM,GAAG,GAI/D,EAAM,cAAc,GACpB,IAAI,CAAC,QAAQ,CAAC,CAAE,KAAM,EAAM,GAAG,AAAC,EAAG,KAClC,IAAI,CAAC,KAAK,EACX,GACD,CAEA,kBAAkB,CAAK,CAAE,CAExB,GAAI,SAAS,aAAa,GAAK,SAAS,IAAI,EAAI,AAAmC,YAAnC,SAAS,aAAa,CAAC,OAAO,EAI1E,IAAI,CAAC,KAAK,CAAC,QAAQ,EAInB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAP1B,OAWD,GAAI,EAAM,aAAa,CAAC,KAAK,CAAC,MAAM,CAAG,EAAG,CACzC,IAAI,CAAC,gBAAgB,CAAC,GACtB,MACD,CAEA,IAAI,EAAO,EAAM,aAAa,CAAC,OAAO,CAAC,QAEvC,EAAM,cAAc,GACpB,EAAM,wBAAwB,GAE9B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,GAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EAAM,KAAA,EAAW,KAAA,EAAW,OAChE,IAAI,CAAC,QAAQ,CAAC,CAAE,KAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,AAAC,EACpD,CAEA,mBAAoB,CACnB,OAAO,gBAAgB,CAAC,UAAW,IAAI,CAAC,mBAAmB,EAC3D,OAAO,gBAAgB,CAAC,QAAS,IAAI,CAAC,iBAAiB,CACxD,CAEA,sBAAuB,CACtB,OAAO,mBAAmB,CAAC,UAAW,IAAI,CAAC,mBAAmB,EAC9D,OAAO,mBAAmB,CAAC,QAAS,IAAI,CAAC,iBAAiB,CAC3D,CAEA,OAAQ,CACF,IAAI,CAAC,SAAS,CAAC,OAAO,GAG3B,SAAS,aAAa,CAAC,IAAI,GAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,GAC7B,CAEA,QAAS,CACR,IAAI,EAAY,EACZ,CAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAC1C,CAAA,EAAY,WADb,EAIA,IAAI,EAAc,iBAKlB,OAJI,IAAI,CAAC,KAAK,CAAC,WAAW,EACzB,CAAA,EAAc,4BADf,EAIO,AAAA,EAAI,CAAC;;;UAGJ,EAAE,EAAU;YACV,EAAE,IAAI,CAAC,WAAW,CAAC;aAClB,EAAE,IAAI,CAAC,YAAY,CAAC;;;;;SAKxB,EAAE,IAAI,CAAC,SAAS,CAAC;WACf,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;iBAEZ,EAAE,EAAY;;eAEhB,EAAE,IAAI,CAAC,kBAAkB,CAAC;aAC5B,EAAE,IAAI,CAAC,gBAAgB,CAAC;gBACrB,EAAE,IAAI,CAAC,cAAc,CAAC;YAC1B,EAAE,IAAI,CAAC,UAAU,CAAC;eACf,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;;;EAGjC,CAAC,AACF,CACD,CCrWA,IAAI,GAAQ,IAAI,GAED,OAAA,WAA4B,EAC1C,YAAY,CAAK,CAAE,CAClB,KAAK,CAAC,GAEN,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAChD,CAEA,YAAa,CACZ,IAAI,EAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CACtC,OAAO,AAA0E,IAA1E,KAAK,GAAG,CAAC,EAAO,YAAY,CAAG,EAAO,YAAY,CAAG,EAAO,SAAS,CAC7E,CAEA,mBAAmB,CAAS,CAAE,CAC7B,IAAI,EAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAElC,EAAS,EAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EACnD,EAAa,KACjB,GAAI,CAAC,IAAI,CAAC,UAAU,GACnB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,MAAM,CAAE,IAAK,CACvC,IAAI,EAAK,CAAM,CAAC,EAAE,CAClB,GAAI,EAAG,SAAS,EAAI,EAAO,SAAS,CAAG,EAAO,SAAS,CAAE,CACxD,EAAa,EAAG,OAAO,CAAC,GAAG,CAC3B,KACD,CACD,CAGD,GAAM,GAAG,CAAC,EAAW,EACtB,CAEA,uBAAwB,CACvB,IAAI,EAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CACtC,GAAI,CAAC,EAAO,UAAU,CACrB,OAGD,IAAI,EAAa,GAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/C,GAAK,EAEE,CACN,IAAI,EAAU,EAAO,aAAa,CAAC,cAAiB,EAAa,MAC7D,GACH,EAAQ,cAAc,EAExB,MANC,EAAO,UAAU,CAAC,cAAc,CAAC,CAAE,MAAO,KAAM,EAQxB,CAAA,IAArB,EAAO,SAAS,EACnB,IAAI,CAAC,KAAK,CAAC,WAAW,EAExB,CAEA,cAAe,CAC8B,IAAxC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EACtC,IAAI,CAAC,KAAK,CAAC,WAAW,EAExB,CAEA,mBAAoB,CACnB,IAAI,CAAC,qBAAqB,GAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAU,IAAI,CAAC,YAAY,CACvE,CAEA,wBAAwB,CAAS,CAAE,CAC9B,CAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAK,EAAU,SAAS,EAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAK,EAAU,QAAQ,AAAR,GACrF,IAAI,CAAC,kBAAkB,CAAC,EAAU,SAAS,CAE7C,CAEA,mBAAmB,CAAS,CAAE,CACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAG9B,IAAI,CAAC,qBAAqB,EAC3B,CAEA,sBAAuB,CACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,SAAU,IAAI,CAAC,YAAY,EACzE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAC7C,CAEA,QAAS,CACR,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,AAC3B,CACD,CCrFe,MAAA,WAAqB,EACnC,KAAO,AAAA,GAAY,AAEnB,aAAY,CAAK,CAAE,CAClB,KAAK,CAAC,GAEN,IAAI,CAAC,gBAAgB,CAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EACvD,IAAI,CAAC,mBAAmB,CAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAC7D,IAAI,CAAC,aAAa,CAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAClD,CAEA,SAAU,CACT,IAAI,CAAC,KAAK,CAAC,SAAS,EACrB,CAEA,iBAAiB,CAAK,CAAE,CACvB,EAAM,cAAc,GACpB,IAAI,CAAC,OAAO,EACb,CAEA,oBAAoB,CAAK,CAAE,CACK,WAA3B,EAAM,MAAM,CAAC,SAAS,EACzB,IAAI,CAAC,OAAO,EAEd,CAEA,cAAc,CAAK,CAAE,CACF,WAAd,EAAM,GAAG,EACZ,IAAI,CAAC,OAAO,EAEd,CAEA,mBAAoB,CACnB,OAAO,gBAAgB,CAAC,UAAW,IAAI,CAAC,aAAa,EAErD,IAAI,EAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,oBAC5C,GACH,EAAU,KAAK,EAEjB,CAEA,sBAAuB,CACtB,OAAO,mBAAmB,CAAC,UAAW,IAAI,CAAC,aAAa,CACzD,CAEA,QAAS,CACR,OAAO,AAAA,EAAI,CAAC;+BACiB,EAAE,IAAI,CAAC,mBAAmB,CAAC;iCACzB,EAAE,IAAI,CAAC,IAAI,CAAC;;UAEnC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;2CACc,EAAE,IAAI,CAAC,gBAAgB,CAAC;;KAE9D,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;;EAGzB,CAAC,AACF,CACD,C3BlCA,MAAM,GAAa,CAClB,OAAQ,CAAC,CACV,EAEM,GAAgB,MAAM,iBAC1B,IAAI,CAAC,AAAC,GACN,AAAI,EAAK,EAAE,CACH,EAAK,IAAI,IAEG,MAAhB,EAAK,MAAM,EACd,QAAQ,KAAK,CAAC,sCAAuC,EAAK,MAAM,CAAE,EAAK,UAAU,EAE3E,CAAC,IAER,KAAK,CAAC,AAAC,IACP,QAAQ,KAAK,CAAC,0BAA2B,GAClC,CAAC,IAER,IAAI,CAAC,AAAC,GACC,CAAA,CACN,GAAG,EAAU,CACb,GAAG,CAAM,AACV,CAAA,GA0FF,SAAS,GAAW,CAAM,CAAE,CAAI,SAC/B,AAAI,AAAC,GAAW,EAAO,QAAQ,CAGxB,EAAO,QAAQ,CAAC,AAAA,GAAY,IAAI,CAAC,CAFhC,IAGT,CAiBA,IAAI,GAAc,CAEH,OAAA,WAAkB,EAChC,MAAQ,CACP,GAAG,AAAA,GAAM,MAAM,EAAE,CACjB,cAAe,CACd,IAAK,KACL,KAAM,KACN,SAAU,KACV,SAAU,KACV,KAAM,KACN,UAAW,KACX,aAAc,CAAA,EACd,YAAa,CAAA,EACb,SAAU,EAAE,CACZ,KAAM,CACP,EACA,YAAa,CAAA,EACb,QAAS,CAAA,EACT,OAAQ,KACR,WAAY,KACZ,MAAO,KACP,WAAY,CACX,WAAY,CAAA,EACZ,WAAY,CAAA,CACb,CACD,CAAE,AACF,CAAA,MAAQ,CAAC,AAtIV,WAEC,GAAI,CACH,MAAO,CAAA,CACR,CAAE,MAAO,EAAM,CACd,MAAO,CAAA,CACR,CACD,GA+HyB,AACxB,CAAA,OAAS,CAAE,GAAG,EAAU,AAAC,CAAE,AAC3B,CAAA,QAAU,IAAI,GAAM,AACpB,CAAA,aAAe,IAAI,GAAM,AACzB,CAAA,SAAW,IAAI,GAAM,AACrB,CAAA,OAAS,AAAA,GAAY,AACrB,CAAA,SAAW,AAAA,GAAY,AACvB,CAAA,gBAAkB,IAAK,AAKvB,CAAA,YAAc,IAAK,AACnB,CAAA,qBAAuB,IAAI,GAAM,AACjC,CAAA,UAAY,IAAK,AACjB,CAAA,kBAAoB,IAAK,AAEzB,aAAY,CAAK,CAAE,CAClB,KAAK,CAAC,GAEN,IAAI,CAAC,mBAAmB,CAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAC7D,IAAI,CAAC,gBAAgB,CAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EACvD,IAAI,CAAC,qBAAqB,CAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EACjE,IAAI,CAAC,qBAAqB,CAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EACjE,IAAI,CAAC,gBAAgB,CAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EACvD,IAAI,CAAC,gBAAgB,CAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EACvD,IAAI,CAAC,oBAAoB,CAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAC/D,IAAI,CAAC,kBAAkB,CAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAC3D,IAAI,CAAC,eAAe,CAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EACrD,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAC/C,IAAI,CAAC,qBAAqB,CAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EACjE,IAAI,CAAC,aAAa,CAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EACjD,IAAI,CAAC,qBAAqB,CAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EACjE,IAAI,CAAC,mBAAmB,CAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAC7D,IAAI,CAAC,mBAAmB,CAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAC7D,IAAI,CAAC,kBAAkB,CAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAC3D,IAAI,CAAC,gBAAgB,CAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EACvD,IAAI,CAAC,oBAAoB,CAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAC/D,IAAI,CAAC,iBAAiB,CAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EACzD,IAAI,CAAC,kBAAkB,CAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAC3D,IAAI,CAAC,uBAAuB,CAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,EACrE,IAAI,CAAC,oBAAoB,CAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAC/D,IAAI,CAAC,wBAAwB,CAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,EACvE,IAAI,CAAC,kBAAkB,CAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAC3D,IAAI,CAAC,iBAAiB,CAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAEzD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAG,CACrB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CACtB,GAAG,GAAe,IAAI,EAAE,AACzB,EAEA,IAAI,CAAC,WAAW,CAAG,IAAI,GAEvB,GAAc,IAAI,CAAC,AAAC,IACnB,IAAI,CAAC,YAAY,CAAC,GACX,GAET,CAaA,MAAM,aAAa,CAAM,CAAE,CAC1B,IAnMG,EACA,EAkMC,EAAgB,CAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,AAAC,CAEjB,CAAA,UAA7B,OAAO,EAAO,MAAM,CAAC,GAAG,EAC3B,CAAA,EAAc,GAAG,CAAG,EAAO,MAAM,CAAC,GAAG,AAAH,EAE/B,MAAM,OAAO,CAAC,EAAO,MAAM,CAAC,QAAQ,EACvC,EAAc,QAAQ,CAAG,EAAO,MAAM,CAAC,QAAQ,CACH,UAAlC,OAAO,EAAO,MAAM,CAAC,QAAQ,EACvC,CAAA,EAAc,QAAQ,CAAG,CAAC,EAAO,MAAM,CAAC,QAAQ,CAAC,AAAA,EAEhB,UAA9B,OAAO,EAAO,MAAM,CAAC,IAAI,EAC5B,CAAA,EAAc,IAAI,CAAG,EAAO,MAAM,CAAC,IAAI,AAAJ,EAEK,WAArC,OAAO,EAAO,MAAM,CAAC,WAAW,EACnC,CAAA,EAAc,WAAW,CAAG,EAAO,MAAM,CAAC,WAAW,AAAX,EAEhB,aAAvB,EAAO,MAAM,CAAC,IAAI,EACrB,CAAA,EAAc,YAAY,CAAG,CAAA,CAD9B,EAGkC,UAA9B,OAAO,EAAO,MAAM,CAAC,IAAI,EAC5B,CAAA,EAAc,IAAI,CAAG,EAAO,MAAM,CAAC,IAAI,AAAJ,EAGhC,EAAc,WAAW,EAAI,AAAuB,cAAvB,EAAO,MAAM,CAAC,IAAI,GAClD,QAAQ,KAAK,CAAC,4FACd,EAAc,WAAW,CAAG,CAAA,GAEF,WAAvB,EAAO,MAAM,CAAC,IAAI,EAAkB,AAAC,EAAO,MAAM,EAAK,EAAO,MAAM,CAAC,GAAG,EAAK,EAAO,MAAM,CAAC,SAAS,GACvG,QAAQ,KAAK,CAAC,yEACd,EAAO,MAAM,CAAC,IAAI,CAAG,MAGtB,IAAI,EAAc,GAAkB,IAAI,GACpC,GACH,CAAA,EAAgB,CACf,GAAG,CAAa,CAChB,GAAG,CAAW,CACd,YAAa,CAAA,EACb,SAAU,EAAE,AACb,CAAA,EAGD,IAAI,EAAW,EAAE,CAEb,GA/OD,EAAQ,OAAO,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,GACzC,EAAS,CAAC,EACd,EAAM,KAAK,CAAC,KAAK,OAAO,CAAC,AAAC,IACzB,GAAI,CAAC,EACJ,OAED,IAAI,EAAO,EAAE,KAAK,CAAC,IACnB,CAAA,CAAM,CAAC,mBAAmB,CAAI,CAAC,EAAE,EAAE,CAAG,mBAAmB,CAAI,CAAC,EAAE,EAAI,GACrE,GACO,GA0QN,GA/BkC,UAA9B,OAAO,EAAY,MAAM,EAAkB,AAAC,EAAc,GAAG,EAAK,EAAY,MAAK,GACtF,EAAc,GAAG,CAAG,EAAY,MAAM,CAItC,EAAO,MAAM,CAAC,IAAI,CAAG,MAEU,UAA5B,OAAO,EAAY,IAAI,EAC1B,CAAA,EAAc,IAAI,CAAG,EAAY,IAAI,AAAJ,EAEE,UAAhC,OAAO,EAAY,QAAQ,EAC9B,CAAA,EAAW,EAAY,QAAQ,CAAC,KAAK,CAAC,IADvC,EAGgC,UAA5B,OAAO,EAAY,IAAI,EAC1B,CAAA,IAAI,CAAC,WAAW,CAAG,GAAa,EAAY,IAAI,CAAA,EAE7C,AAAsB,MAAtB,EAAY,KAAK,CACpB,IAAI,CAAC,KAAK,CAAG,CAAA,EACmB,MAAtB,EAAY,KAAK,EAC3B,CAAA,IAAI,CAAC,KAAK,CAAG,CAAA,CADP,EAIH,OAAO,QAAQ,CAAC,IAAI,EACvB,CAAA,EAAW,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IADvC,EAIA,IAAI,CAAC,MAAM,CAAG,EAEV,CAAC,EAAc,IAAI,EAAI,EAAc,WAAW,EACnD,CAAA,EAAc,IAAI,CAAG,QADtB,EAGI,EAAc,IAAI,EAAI,EAAc,IAAI,CAAC,QAAQ,CAAC,KAAM,CAC3D,IAAI,EAAc,KAAK,MAAM,GAAG,QAAQ,CAAC,IAAI,MAAM,CAAC,EAAG,EACvD,CAAA,EAAc,IAAI,CAAG,EAAc,IAAI,CAAC,OAAO,CAAC,IAAK,EACtD,CAEA,GAAI,AAAuB,WAAvB,EAAO,MAAM,CAAC,IAAI,EAAiB,CAAC,EAAc,eAAe,CAAE,KAmBlE,EAlBJ,GAAI,EAAY,KAAK,CAAE,CACtB,QAAQ,KAAK,CAAC,mCAAoC,EAAY,KAAK,EACnE,IAAI,CAAC,SAAS,CAAC,0BAA6B,CAAA,EAAY,iBAAiB,EAAI,EAAY,KAAI,AAAJ,GACzF,MACD,CAEA,GAAI,CAAC,EAAY,IAAI,CAAE,CACtB,IAAI,CAAC,uBAAuB,GAC5B,MACD,CAIA,IAAI,EAAM,IAAI,IAAI,OAAO,QAAQ,CAAC,QAAQ,IAC1C,EAAI,YAAY,CAAC,MAAM,CAAC,QACxB,EAAI,YAAY,CAAC,MAAM,CAAC,SACxB,OAAO,OAAO,CAAC,YAAY,CAAC,KAAM,GAAI,EAAI,QAAQ,IAGlD,GAAI,CACH,EAAkB,MAAM,IAAI,CAAC,kBAAkB,CAAC,EAAY,IAAI,CACjE,CAAE,MAAO,EAAK,CACb,IAAI,CAAC,SAAS,CAAC,GACf,MACD,CAEA,EAAc,eAAe,CAAG,EAE5B,EAAgB,QAAQ,EAAI,CAAC,EAAc,IAAI,EAClD,CAAA,EAAc,IAAI,CAAG,EAAgB,QAAQ,AAAR,CAEvC,CAEI,EAAS,MAAM,CAAG,IACjB,EAAc,WAAW,CAG5B,IAAI,CAAC,WAAW,CAAG,CAAE,KAAM,GAAI,OAAQ,CAAQ,CAAC,EAAE,AAAC,EAEnD,EAAc,QAAQ,CAAG,GAI3B,IAAI,CAAC,QAAQ,CAAC,CAAE,QAAS,CAAA,EAAO,cAAA,CAAc,GAE1C,EAAc,WAAW,GAC5B,IAAI,CAAC,QAAQ,CAAC,CAAE,YAAa,CAAA,CAAM,GACnC,IAAI,CAAC,OAAO,CAAC,GAEf,CAEA,MAAM,yBAA0B,CAC/B,IAAI,EACJ,GAAI,CACH,EAAiB,MAAM,GAA2B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CACzE,CAAE,MAAO,EAAK,CACb,QAAQ,KAAK,CAAC,6CAA8C,GAC5D,IAAI,CAAC,SAAS,CAAC,6CACf,MACD,EAEA,AI7WK,SAA2B,CAAA,eAAE,CAAc,CAAA,SAAE,CAAQ,CAAA,YAAE,CAAW,CAAA,MAAE,CAAK,CAAE,EAIjF,IAAI,EAAS,CACZ,cAAiB,OACjB,UAAa,EACb,aAAgB,CACjB,EACI,GACH,CAAA,EAAO,KAAK,CAAG,CADhB,EAGA,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAe,sBAAsB,CAAG,IAAM,GAAkB,GACxF,EJgW2B,CACxB,eAAA,EACA,SAAU,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CACtC,YAAa,OAAO,QAAQ,CAAC,QAAQ,GACrC,MAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,AAChC,EACD,CAEA,MAAM,mBAAmB,CAAI,CAAE,CAC9B,IAAI,EAAiB,MAAM,GAA2B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAExE,EAAc,IAAI,IAAI,OAAO,QAAQ,CAAC,QAAQ,IAClD,EAAY,YAAY,CAAC,MAAM,CAAC,QAChC,EAAY,YAAY,CAAC,MAAM,CAAC,SAWhC,IAAI,EAAQ,AATD,CAAA,MAAM,GAAoB,CACpC,eAAA,EACA,YAAa,EAAY,QAAQ,GACjC,KAAA,EACA,SAAU,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CACtC,aAAc,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,AAC/C,EAAA,EAGiB,YAAY,CAEzB,EAAW,KACf,GAAI,EAAe,sBAAsB,CACxC,GAAI,CAOH,CAAA,EAAW,AANA,CAAA,MAAM,GAAuB,CACvC,eAAA,EACA,MAAA,EACA,SAAU,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CACtC,aAAc,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,AAC/C,EAAA,EACgB,QAAQ,AAAR,GAEf,QAAQ,IAAI,CAAC,+DAEf,CAAE,MAAO,EAAK,CACb,QAAQ,IAAI,CAAC,wCAAyC,EACvD,CAGD,MAAO,CAAE,MAAA,EAAO,SAAA,CAAS,CAC1B,CAEA,UAAU,CAAG,CAAE,KAGV,EACJ,GAHA,QAAQ,KAAK,CAAC,cAAe,GAGzB,aAAe,MAAO,CACzB,IAAI,EAAI,EAAE,CACV,KAAO,GACN,EAAE,IAAI,CAAC,EAAI,OAAO,EAClB,EAAM,EAAI,KAAK,CAEhB,EAAO,EAAE,IAAI,CAAC,KACf,MACC,EAAO,OAAO,GAIf,OAFA,IAAI,CAAC,QAAQ,CAAC,CAAE,MAAO,CAAK,KAErB,EACR,CAEA,aAAa,CAAE,CAAE,CACZ,GAAM,IAAO,IAGjB,IAAI,CAAC,QAAQ,CAAC,CAAE,MAAO,IAAK,EAC7B,CAEA,mBAAmB,CAAK,CAAE,CACzB,EAAM,cAAc,GACpB,IAAI,CAAC,YAAY,EAClB,CAEA,eAAe,CAAE,CAAE,CAAO,CAAE,CAAQ,CAAE,CACrC,IAAI,CAAC,QAAQ,CAAC,AAAC,GACP,AAAA,GAAM,YAAY,CAAC,EAAO,EAAI,GACnC,EACJ,CAEA,eAAe,CAAE,CAAE,CAAO,CAAE,CAAQ,CAAE,CACrC,IAAI,CAAC,QAAQ,CAAC,AAAC,GACP,AAAA,GAAM,YAAY,CAAC,EAAO,EAAI,GACnC,EACJ,CAEA,iBAAiB,CAAQ,CAAE,CAAI,CAAE,CAChC,IAAI,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAE1B,EAAS,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAE,KAAA,EAAM,OAAQ,EAAO,MAAM,AAAC,GAC5D,EAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAwB,GACnD,IAAI,CAAC,cAAc,CAAC,CAAE,OAAQ,EAAU,KAAA,CAAK,EAAG,CAAE,OAAQ,EAAO,MAAM,AAAC,EAAG,KAC1E,IAAI,CAAC,mBAAmB,EACzB,GAGD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CACpB,KAAA,EACA,OAAQ,EAAO,MAAM,CACrB,OAAQ,CAAA,CACT,EACD,CAEA,aAAa,CAAQ,CAAE,CAAI,CAAE,CAC5B,IAAI,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAC1B,EAAK,KACL,EAAQ,CAAA,EAUZ,OATA,IAAI,CAAC,QAAQ,CAAC,AAAC,IACd,IAAI,EAGJ,MAFA,CAAC,EAAI,EAAQ,CAAG,AAAA,GAAM,YAAY,CAAC,EAAO,EAAM,EAAU,GAC1D,EAAQ,CAAA,CAAQ,EACT,CACR,GACI,GACH,IAAI,CAAC,gBAAgB,CAAC,EAAU,GAE1B,CACR,CAEA,gBAAgB,CAAM,CAAE,CAAY,CAAE,CACrC,GAAI,CAAC,EAAO,kBAAkB,GAC7B,OAED,IAAI,EAAc,EAAa,QAAQ,CAAC,AAAA,GAAY,IAAI,CAAC,AAC/B,CAAA,MAAtB,EAAa,IAAI,EAAa,GAGlC,EAAO,aAAa,CAAC,EAAa,IAAI,CAAE,EAAY,IAAI,CACzD,CAEA,aAAa,CAAE,CAAE,CAChB,IAAI,EACJ,IAAI,CAAC,QAAQ,CAAC,AAAC,IAEd,GAAI,CADJ,CAAA,EAAM,AAAA,GAAM,SAAS,CAAC,EAAO,EAA7B,EAEC,OAGD,IAAI,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAI,MAAM,EAEpC,EAAkB,GADT,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAE,KAAM,EAAI,IAAI,CAAE,OAAQ,EAAO,MAAM,AAAC,GACjC,AAAA,GAAY,IAAI,EACrD,EAAS,AAAA,GAAM,YAAY,CAAC,EAAO,EAAI,EAAE,CAAE,CAAE,gBAAA,CAAgB,GAEjE,MAAO,CAAE,aAAc,EAAI,EAAE,CAAE,GAAG,CAAM,AAAC,CAC1C,EAAG,KACF,GAAI,CAAC,EACJ,MAGG,CAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EACtB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,GAG1B,IAAI,EAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAI,MAAM,CAC1C,CAAA,EAAI,IAAI,GAAK,AAAA,GAAW,IAAI,EAAK,EAAO,KAAK,CAAC,GAAG,CAAC,EAAI,IAAI,GAC7D,IAAI,CAAC,aAAa,CAAC,EAAI,IAAI,CAAE,EAAI,MAAM,EAGpC,EAAI,IAAI,GAAK,AAAA,GAAW,OAAO,EAAK,EAAI,aAAa,EACxD,IAAI,CAAC,gBAAgB,CAAC,EAAI,IAAI,CAAE,EAAI,MAAM,EAG3C,IAAI,CAAC,mBAAmB,EACzB,GAGA,IAAI,CAAC,gBAAgB,CAAC,EACvB,CAEA,iBAAiB,CAAE,CAAE,CACpB,IAAI,EACJ,IAAI,CAAC,QAAQ,CAAC,AAAC,IAEd,GADA,EAAM,AAAA,GAAM,SAAS,CAAC,EAAO,GAI7B,OAAO,AAAA,GAAM,YAAY,CAAC,EAAO,EAAI,EAAE,CAAE,CAAE,OAAQ,AAAA,GAAO,IAAI,AAAC,EAChE,EAAG,KACF,GAAI,CAAC,EACJ,OAGD,IAAI,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAI,MAAM,EAExC,IAAK,IAAI,KAAS,IAAI,CAAC,oBAAoB,CACtC,EAAO,EAAE,CAAC,EAAM,IAAI,CAAC,UAAU,IAAM,EAAO,EAAE,CAAC,EAAI,IAAI,GAC1D,EAAM,KAAK,GAIb,GAAI,EAAI,QAAQ,CAAC,MAAM,CAAG,EAAG,CAC5B,IAAI,EAAU,EAAI,QAAQ,CAAC,EAAI,QAAQ,CAAC,MAAM,CAAG,EAAE,CAC/C,EAAS,CACZ,KAAM,EAAI,IAAI,CACd,OAAQ,EAAO,MAAM,CACrB,OAAQ,AAAA,GAAO,IAAI,CACnB,SAAU,CAAE,CAAC,AAAA,GAAY,IAAI,CAAC,CAAE,AAAA,GAAmB,EAAS,CAC7D,EACI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IACxB,IAAI,CAAC,eAAe,CAAC,EAAQ,EAE/B,CAEA,IAAI,CAAC,mBAAmB,EACzB,EACD,CAEA,qBAAsB,CACrB,IACI,EAIA,EALA,EAAM,AAAA,GAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAEzD,GACH,CAAA,EAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAI,MAAM,CAAA,EAGvC,EAAO,YAAY,EACtB,CAAA,EAAiB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,EAAO,YAAY,CAAA,EAGpE,IAAI,EAAY,EAChB,IAAK,IAAI,KAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GACvC,AAAA,GAAO,OAAO,CAAC,EAAO,MAAM,CAAE,AAAA,GAAO,SAAS,GAAK,GACtD,IAIF,IAAI,EAAQ,EAAE,CACV,GAAO,EAAI,IAAI,GAAK,AAAA,GAAW,MAAM,EACxC,EAAM,IAAI,CAAC,EAAI,IAAI,EAEhB,GACH,EAAM,IAAI,CAAC,AAAA,GAAc,EAAQ,IAElC,EAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAEzB,IAAI,EAAQ,GACR,EAAY,GACf,CAAA,EAAQ,CAAC,CAAC,EAAE,EAAU,EAAE,CAAC,AAAD,EAEzB,GAAS,EAAM,IAAI,CAAC,OAEpB,SAAS,KAAK,CAAG,CAClB,CAEA,mBAAmB,CAAQ,CAAE,CAAG,CAAE,CAGjC,GAAI,AAAoB,KAAA,IAApB,EAAI,WAAW,CAAgB,CAClC,IAAI,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAC9B,CAAA,EAAI,WAAW,CAAG,ACrVd,SAAqB,CAAG,CAAE,CAAI,CAAE,CAAE,EACxC,GAAoB,YAAhB,EAAI,OAAO,EAAkB,AAAgB,WAAhB,EAAI,OAAO,GAI5C,EAAO,EAAG,GAEN,EAAI,MAAM,EAAI,EAAG,EAAI,MAAM,CAAC,IAAI,IAAM,GALzC,MAAO,CAAA,EASR,IAAI,EAAO,EAAG,EAAI,MAAM,CAAC,EAAE,EAC3B,OAAa,CACZ,IAAI,EAAI,EAAK,OAAO,CAAC,GACrB,GAAI,EAAI,EACP,MAAO,CAAA,EAIR,IAAI,EAAO,KAAQ,EAAQ,KAO3B,GANI,EAAI,GACP,CAAA,EAAO,CAAI,CAAC,EAAI,EAAE,AAAF,EAEb,EAAI,EAAK,MAAM,CAAG,EAAK,MAAM,EAChC,CAAA,EAAQ,CAAI,CAAC,EAAI,EAAK,MAAM,CAAC,AAAD,EAEzB,GAAe,IAAS,GAAe,IAAU,CAAC,AAnDxD,SAAqB,CAAI,EACxB,IAAK,IAAI,EAAI,EAAK,MAAM,CAAG,EAAG,GAAK,EAAG,IACrC,GAAI,GAAM,IAAI,CAAC,CAAI,CAAC,EAAE,EAAG,CACxB,EAAO,EAAK,KAAK,CAAC,GAClB,KACD,CAGD,IAAI,EAAI,EAAK,OAAO,CAAC,OACrB,GAAI,GAAK,EACR,MAAO,CAAA,EAIR,IAAI,EAAK,CAAI,CAAC,EAAI,EAAE,CACpB,OAAQ,GACR,IAAK,IACL,IAAK,IACL,IAAK,IACJ,MAAO,CAAA,CACR,SACC,OAAO,GAAS,IAAI,CAAC,EACtB,CACD,EA4BoE,EAAK,KAAK,CAAC,EAAG,IAC/E,MAAO,CAAA,EAGR,EAAO,EAAK,KAAK,CAAC,EAAI,EAAK,MAAM,CAClC,CACD,EDqTqC,EAAK,EAAO,IAAI,CAAE,EAAO,EAAE,GClT/D,AAAI,CAAA,AAAgB,YAAhB,ADkTsF,EClTlF,OAAO,EAAkB,AAAgB,WAAhB,ADkTyD,EClTrD,OAAO,AAAK,GAG1C,AD+SmF,EC/S/E,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IDgT/B,CAEK,EAAI,IAAI,EAEZ,CAAA,EAAI,IAAI,CAAG,CAAC,CAAA,EAER,EAAI,IAAI,CAAC,IAAI,EACjB,CAAA,EAAI,IAAI,CAAC,IAAI,CAAG,GAAe,IAAI,KADpC,CAGD,CAEA,eAAe,CAAQ,CAAE,CAAO,CAAE,CAAG,CAAE,CACtC,IAAI,CAAC,kBAAkB,CAAC,EAAU,GAClC,IAAI,EAAQ,CAAE,OAAQ,EAAU,KAAM,CAAQ,EAC9C,IAAI,CAAC,QAAQ,CAAC,AAAC,GAAU,AAAA,GAAM,UAAU,CAAC,EAAO,EAAK,GACvD,CAEA,kBAAkB,CAAQ,CAAE,CAAO,CAAE,CAAG,CAAE,CACzC,IAAI,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAE9B,IAAI,CAAC,kBAAkB,CAAC,EAAU,GAElC,IAAI,EAAS,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAE,KAAM,EAAS,OAAQ,EAAO,MAAM,AAAC,GACrE,EAAkB,GAAW,EAAQ,AAAA,GAAY,SAAS,EAC1D,EAAc,GAAW,EAAQ,AAAA,GAAY,IAAI,EACjD,EAAc,AAAA,GAAuB,EAAK,GAC1C,EAAS,AAAA,GAAuB,EAAK,GAErC,EAAO,QAAQ,CAAC,EAAI,MAAM,CAAC,IAAI,GAClC,CAAA,EAAS,CAAA,CADV,EAIA,IAAI,EAAY,AAAA,GAAO,IAAI,CAC3B,GAAI,AAAC,CAAA,AAAgB,YAAhB,EAAI,OAAO,EAAkB,AAAgB,WAAhB,EAAI,OAAO,AAAK,GAAa,CAAC,EAAQ,CACvE,IAGI,EAHA,EAAS,EAAI,MAAM,CAAC,EAAE,CACtB,EAAO,EAAI,MAAM,CAAC,EAAE,CAaxB,GAVI,EAAI,WAAW,EAClB,EAAY,AAAA,GAAO,SAAS,CAC5B,EAAO,aACG,EAAO,QAAQ,CAAC,IAC1B,EAAY,AAAA,GAAO,SAAS,CAC5B,EAAO,mBAEP,EAAY,AAAA,GAAO,OAAO,CAGvB,IAAc,AAAA,GAAO,SAAS,EAAI,CAAC,GAAe,CAAC,GAAc,GAAM,CAC1E,IAAI,EAAQ,OAAS,EAAO,SAAW,EAAI,MAAM,CAAC,IAAI,CAClD,EAAO,SAAS,CAAC,IACpB,CAAA,GAAS,OAAS,CADnB,EAGA,IAAI,EAAQ,AA5kBhB,SAA0B,CAAK,CAAE,CAAO,EACvC,GAAI,CAAC,OAAO,YAAY,EAAI,AAA4B,YAA5B,aAAa,UAAU,CAClD,OAAO,KAKR,GAAI,CACH,OAAO,IAAI,aAAa,EAAO,EAChC,CAAE,MAAO,EAAK,CAEb,OADA,QAAQ,KAAK,CAAC,gCAAiC,GACxC,IACR,CACD,EA+jBiC,EAAO,CACnC,KAAM,AAAA,GAAU,GAChB,mBAAoB,CAAA,EACpB,IAAK,cAAgB,EAAW,SAAW,EAAI,MAAM,CAAC,IAAI,CAAG,OAAS,EACtE,KAAM,CAAE,WAAY,EAAS,QAAS,CAAI,CAC3C,GACI,IACH,EAAM,gBAAgB,CAAC,QAAS,KAE/B,IAAI,CAAC,YAAY,CAAC,CAAE,OAAQ,EAAU,KAAM,CAAQ,EACrD,GACA,EAAM,gBAAgB,CAAC,QAAS,KAC/B,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAClC,GACA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAEhC,CACD,CACA,GAAI,AAAgB,WAAhB,EAAI,OAAO,EAAiB,EAAO,QAAQ,CAAC,EAAI,MAAM,CAAC,EAAE,EAAG,CAC/D,EAAY,AAAA,GAAO,SAAS,CAE5B,IAAI,EAAU,EAAI,MAAM,CAAC,EAAE,CACvB,EAAQ,IAAI,aAAa,iBAAmB,EAAS,CACxD,KAAM,EAAI,MAAM,CAAC,IAAI,CAAG,uBAAyB,EACjD,mBAAoB,CAAA,EACpB,IAAK,iBAAmB,EAAW,SAAW,EAAI,MAAM,CAAC,IAAI,CAAG,YAAc,EAC9E,QAAS,CAAC,CACT,OAAQ,SACR,MAAO,QACR,EAAE,AACH,GACI,GACH,EAAM,gBAAgB,CAAC,QAAS,AAAC,IAChC,GAAI,AAAiB,WAAjB,EAAM,MAAM,CAAe,CAC9B,IAAI,EAAS,CACZ,KAAM,EACN,OAAQ,EAAO,MAAM,CACrB,SAAU,CAAE,CAAC,AAAA,GAAY,IAAI,CAAC,CAAE,AAAA,GAAmB,EAAK,CACzD,EACI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IACxB,IAAI,CAAC,eAAe,CAAC,EAAQ,GAE9B,IAAI,CAAC,IAAI,CAAC,EAAS,EACpB,MAEC,IAAI,CAAC,YAAY,CAAC,CAAE,OAAQ,EAAU,KAAM,CAAQ,EAEtD,EAEF,CAIK,CAAA,CAAC,EAAO,QAAQ,CAAC,EAAI,MAAM,CAAC,IAAI,GAAK,EAAO,QAAQ,CAAC,EAAA,GAAc,AAAgB,SAAhB,EAAI,OAAO,EAAe,AAAe,SAAf,EAAI,MAAM,EAAe,AC/rBhG,QD+rBgG,EAAI,OAAO,EAA0B,AC9rBpI,QD8rBoI,EAAI,OAAO,EAC1K,IAAI,CAAC,YAAY,CAAC,EAAU,GAG7B,IAAI,EAAQ,CAAE,OAAQ,EAAU,KAAM,CAAQ,EAC9C,IAAI,CAAC,QAAQ,CAAC,AAAC,GAAU,AAAA,GAAM,UAAU,CAAC,EAAO,EAAK,IACtD,IAAI,CAAC,cAAc,CAAC,EAAO,AAAC,IAE3B,IAAI,EAAS,EAAI,MAAM,CACnB,EAAkB,EAAI,eAAe,CACrC,EAAW,CAAE,CAAC,AAAA,GAAY,SAAS,CAAC,CAAE,AAAA,GAAmB,EAAK,CAE9D,CAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAK,EAAI,EAAE,EAAK,SAAS,QAAQ,GAG3D,CAAQ,CAAC,AAAA,GAAY,IAAI,CAAC,CAAG,AAAA,GAAmB,GAFhD,EAAS,AAAA,GAAO,KAAK,CAAC,EAAQ,GAM3B,EAAO,QAAQ,CAAC,EAAI,MAAM,CAAC,IAAI,GAAK,CAAC,AAAA,GAAuB,EAAK,IACpE,CAAA,EAAkB,AAAA,GAAmB,EADtC,EAIA,IAAI,EAAS,CACZ,KAAM,EAAI,IAAI,CACd,OAAQ,EAAO,MAAM,CACrB,OAAA,EACA,SAAA,CACD,EAIA,OAHI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IACxB,IAAI,CAAC,eAAe,CAAC,EAAQ,GAEvB,CAAE,OAAA,EAAQ,gBAAA,CAAgB,CAClC,EAAG,KACE,IAAc,AAAA,GAAO,SAAS,EACjC,IAAI,CAAC,mBAAmB,EAE1B,EACD,CAEA,QAAQ,CAAM,CAAE,KAvsBU,MACtB,EACA,EAIA,EAosBH,EAAS,CACR,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAC3B,GAAG,CAAM,AACV,EAEA,IAAI,EAAW,KACf,IAAI,CAAC,QAAQ,CAAC,AAAC,IACd,IAAI,EAEJ,MADA,CAAC,EAAU,EAAO,CAAG,AAAA,GAAM,YAAY,CAAC,GACjC,CACR,GACA,IAAI,CAAC,QAAQ,CAAC,CAAE,cAAe,CAAO,GAEtC,IAAI,EAAS,IAAI,GAAO,KAvtBC,EAwtBH,EAvtBnB,EAAO,OAAO,QAAQ,CAAC,IAAI,EAAI,iBAC/B,EAAQ,OACqB,WAA7B,OAAO,QAAQ,CAAC,QAAQ,EAC3B,CAAA,EAAQ,KADT,EAGI,EAAO,OAAO,QAAQ,CAAC,QAAQ,EAAI,IAClC,OAAO,QAAQ,CAAC,IAAI,EACxB,CAAA,EAAO,GADR,EAKK,AADL,CAAA,EAAS,CAAE,GAAG,CAAM,AAAC,CAAA,EACT,GAAG,EACd,CAAA,EAAO,GAAG,CAAG,EAAQ,KAAO,EAAO,EAAO,QAD3C,EAGI,EAAO,GAAG,CAAC,UAAU,CAAC,MACzB,CAAA,EAAO,GAAG,CAAG,EAAQ,KAAO,EAAO,EAAO,GAAG,AAAH,EAEX,EAA5B,EAAO,GAAG,CAAC,OAAO,CAAC,QACtB,CAAA,EAAO,GAAG,CAAG,EAAQ,KAAO,EAAO,GAAG,AAAH,EAE/B,EAAO,QAAQ,EACnB,CAAA,EAAO,QAAQ,CAAG,EAAO,IAAI,AAAJ,EAErB,EAAO,QAAQ,EACnB,CAAA,EAAO,QAAQ,CAAG,EAAO,IAAI,AAAJ,EAEnB,EA6rBL,CACA,cAAe,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,GAAK,AAAA,GAAwB,IAAI,AACjF,EACA,CAAA,EAAO,KAAK,CAAG,IAAI,CAAC,KAAK,CAEzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAU,GAC3B,IAAI,CAAC,cAAc,CAAC,EAAU,CAAE,OAAQ,EAAO,MAAM,AAAC,GAEtD,IAAI,EAAU,KAEd,EAAO,gBAAgB,CAAC,SAAU,KAEjC,OADA,IAAI,CAAC,cAAc,CAAC,EAAU,CAAE,OAAQ,EAAO,MAAM,AAAC,GAC9C,EAAO,MAAM,EACrB,KAAK,AAAA,GAAO,MAAM,CAAC,YAAY,CAC9B,IAAI,CAAC,cAAc,CAAC,EAAU,CAAE,QAAS,IAAK,GAC9C,IAAI,CAAC,QAAQ,CAAC,AAAC,IACd,IAAI,EAAU,IAAI,IAAI,EAAM,OAAO,EAOnC,OANA,EAAM,OAAO,CAAC,OAAO,CAAC,AAAC,IAClB,EAAI,MAAM,GAAK,GAGnB,EAAQ,GAAG,CAAC,EAAI,EAAE,CAAE,CAAE,GAAG,CAAG,CAAE,OAAQ,CAAA,CAAM,EAC7C,GACO,CAAE,QAAA,CAAQ,CAClB,GACA,KACD,MAAK,AAAA,GAAO,MAAM,CAAC,UAAU,CAC5B,IAAI,CAAC,QAAQ,CAAC,CAAE,YAAa,CAAA,CAAM,GAC/B,GACH,IAAI,CAAC,YAAY,CAAC,EAGpB,CACD,GAEA,EAAO,gBAAgB,CAAC,UAAW,AAAC,IACnC,IAAI,CAAC,aAAa,CAAC,EAAU,EAAM,MAAM,CAAC,OAAO,CAClD,GAEA,EAAO,gBAAgB,CAAC,QAAS,AAAC,IACjC,EAAU,IAAI,CAAC,SAAS,CAAC,EAAM,MAAM,CACtC,GAEA,IAAI,CAAC,YAAY,CAAC,EQ51BS,KR61BtB,IAAI,CAAC,KAAK,CAAC,YAAY,EAC3B,IAAI,CAAC,YAAY,CAAC,CAAE,OAAQ,EAAU,KQ91BZ,GR81BgC,GAGvD,EAAO,QAAQ,CAAC,MAAM,CAAG,GAC5B,CAAA,IAAI,CAAC,eAAe,CAAG,EAAO,QAAQ,CAAC,EAAE,AAAF,CAEzC,CAEA,WAAW,CAAQ,CAAE,CACf,GACJ,CAAA,EAAW,AAAA,GAAM,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAA,EAG9C,IAAI,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAC1B,IACH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GACpB,EAAO,UAAU,GAEnB,CAEA,UAAU,CAAQ,CAAE,CACd,GACJ,CAAA,EAAW,AAAA,GAAM,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAA,EAG9C,IAAI,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAC1B,GACH,EAAO,SAAS,EAElB,CAEA,yBAAyB,CAAgB,CAAE,CAC1C,IAAK,GAAI,CAAC,EAAI,EAAO,GAAI,IAAI,CAAC,OAAO,CACpC,GAAI,EAAO,MAAM,CAAC,cAAc,GAAK,EACpC,OAAO,EAGT,OAAO,IACR,CAEA,aAAa,CAAQ,CAAE,CAAG,CAAE,CAC3B,IASI,EAAQ,EAAS,EATjB,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAC1B,EAAmB,GAAoB,EAAK,eAIhD,GAAI,EAAI,QAAQ,CACf,MAAO,EAAE,CAIV,OAAQ,EAAI,OAAO,EACnB,IAAK,OAEJ,GADA,EAAS,EAAI,MAAM,CAAC,EAAE,CAClB,EAAO,SAAS,CAAC,GACpB,MAAO,CAAC,EAAO,CAEhB,MAAO,CQv5BmB,IRu5BJ,AACvB,KAAK,SACL,IAAK,UAEJ,GADA,EAAS,EAAI,MAAM,CAAC,EAAE,CAClB,EAAO,QAAQ,CAAC,IACnB,GAAI,EAAO,EAAE,CAAC,EAAI,MAAM,CAAC,IAAI,IAAM,EAAO,EAAE,CAAC,EAAO,YAAY,CAAC,IAAI,EACpE,EQ75BwB,QR85BlB,CACN,IAAI,EAAU,EAAI,IAAI,CAAC,yBAAyB,CAE/C,EADG,GAAW,EAAO,SAAS,CAAC,IAAY,AAAA,GAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAE,CAAE,OAAQ,EAAU,KAAM,CAAQ,GAChG,EAEA,EAAI,MAAM,CAAC,IAAI,AAE1B,EAGD,IAAI,EAAkB,EAAO,QAAQ,CAAC,SAAS,GAC/C,GAAI,EAAiB,CACpB,IAAI,EAAQ,GAAsB,EAAQ,GACtC,EAAO,SAAS,CAAC,EAAM,IAAI,GAC9B,CAAA,EAAS,EAAM,IAAI,AAAJ,CAEjB,CAIA,IAAI,EAAgB,CAAA,EACpB,GAAI,AAAgB,YAAhB,EAAI,OAAO,CACd,EAAgB,CAAA,MACV,CACN,IAAI,EAAO,GAAc,GACrB,GAAQ,AAAiB,WAAjB,EAAK,OAAO,EACvB,CAAA,EAAgB,CAAA,CADjB,CAGD,CAKA,OAJK,GAAkB,AAAA,GAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAE,CAAE,OAAQ,EAAU,KAAM,CAAO,IACnF,CAAA,EQ57ByB,GR47BJ,EAGf,CAAC,EAAO,AAChB,KAAK,OAEJ,GADA,EAAU,EAAI,MAAM,CAAC,EAAE,CACnB,CAAC,EAAO,QAAQ,CAAC,EAAI,MAAM,CAAC,IAAI,EACnC,MAAO,CAAC,EAAQ,CAEjB,MAAO,EAAE,AACV,KAAK,OAGL,IAAK,OAwCL,IAAK,QAzCJ,MAAO,CADP,EAAU,EAAI,MAAM,CAAC,EAAE,CACP,AAIjB,KAAK,OAeJ,OAdA,EAAkB,EAAE,CAChB,EACH,EAAgB,IAAI,CAAC,EAAiB,MAAM,CAAC,EAAE,EAE/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,AAAC,IACvB,EAAI,MAAM,GAAK,GAGd,EAAI,OAAO,CAAC,GAAG,CAAC,EAAI,MAAM,CAAC,IAAI,GAGpC,EAAgB,IAAI,CAAC,EAAI,IAAI,CAC9B,GAEM,CACR,KAAK,OACJ,IAAI,EAAU,EAAI,MAAM,CAAC,EAAE,CAmB3B,OAjBA,EAAkB,EAAE,CAChB,EACH,EAAgB,IAAI,CAAC,EAAiB,MAAM,CAAC,EAAE,GAE/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,AAAC,IACvB,EAAI,MAAM,GAAK,GAGd,EAAI,OAAO,CAAC,GAAG,CAAC,EAAI,MAAM,CAAC,IAAI,GAGpC,EAAgB,IAAI,CAAC,EAAI,IAAI,CAC9B,GACI,EAAO,QAAQ,CAAC,IACnB,EAAgB,IAAI,CQ7+BI,MRg/BnB,CAIR,KAAK,SAIJ,IAAI,EAHJ,EAAU,EAAI,MAAM,CAAC,EAAE,CAQvB,OAJK,AAAA,GAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAE,CAAE,OAAQ,EAAU,KAAM,CAAQ,IAClE,CAAA,EQ1/ByB,GR0/BH,EAGhB,CAAC,EAAQ,AACjB,KCh/B+B,MDi/B/B,IC18B8B,MD28B9B,IC7+B4B,MD8+B5B,IC7+BiC,MD8+BjC,IC7+B4B,MD8+B5B,IC7+BiC,MD8+BjC,ICz+ByB,MD0+BzB,ICz+B8B,MD0+B9B,ICh9B2B,MDi9B3B,ICh9BgC,MDk9B/B,MAAO,CADP,EAAU,EAAI,MAAM,CAAC,EAAE,CACP,AACjB,KCx/B0B,MD0/BzB,MAAO,CADP,EAAU,EAAI,MAAM,CAAC,EAAE,CACP,AACjB,KCp9B2B,MDq9B3B,ICp9B4B,MDq9B3B,IAAI,EAAU,EAAI,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAElC,IAAK,IAAI,KADT,EAAkB,EAAE,CACD,GAAS,CAC3B,IAAI,EAAS,GAAgB,GAC7B,EAAgB,IAAI,CAAC,EAAO,IAAI,CACjC,CACA,OAAO,CACR,KCthC0B,MDuhC1B,ICrhCwB,MDshCxB,ICrhC0B,MDshC1B,IC1/B2B,MD2/B3B,ICr/BwB,MDs/BxB,ICrhCsB,MDshCtB,IC7gCyB,MD8gCzB,IC7gCuB,MD8gCvB,IC7gC8B,MD8gC9B,ICvgC0B,MDwgC1B,ICtgC4B,MDugC5B,IC/9B6B,MDg+B7B,IC9+B6B,MD++B7B,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,MACL,IAAK,eACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,SACL,IAAK,cACL,IAAK,MACL,IAAK,UACL,IAAK,WAEJ,MAAO,EAAE,AACV,SACC,MAAO,CQpjCmB,IRojCJ,AACvB,CACD,CAEA,cAAc,CAAQ,CAAE,CAAG,CAAE,CAC5B,IAUI,EAAQ,EAuJP,EAjKD,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAE9B,GAAI,GAAoB,EAAK,eAC5B,OAGD,IAAI,EAAc,IAAI,CAAC,YAAY,CAAC,EAAU,GAK9C,OAHA,IAAI,CAAC,QAAQ,CAAC,AAAC,GAAU,AAAA,GAAM,aAAa,CAAC,EAAO,EAAK,EAAU,IAG3D,EAAI,OAAO,EACnB,ICtkCyB,MDukCxB,IAAI,CAAC,YAAY,CAAC,GAClB,KACD,KCziC2B,MD0iC3B,ICpiCwB,MDwiCvB,IAAI,EAAO,EAAE,CACb,IAAK,IAAI,KAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAO,MAAM,EAClD,GAAI,AAAa,MAAb,EAAI,IAAI,GAAY,EAAI,MAAM,EAIlC,GAAI,EAAO,SAAS,CAAC,EAAI,IAAI,EAAG,CAC/B,GAAI,EAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,4BAC3B,SAED,EAAK,IAAI,CAAC,EAAI,IAAI,CACnB,MACC,IAAI,CAAC,YAAY,CAAC,EAAU,EAAI,IAAI,EACpC,IAAI,CAAC,aAAa,CAAC,EAAI,IAAI,CAAE,GAM/B,IAAI,EAAe,AADN,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GACV,YAAY,CAClC,EAAiB,KACjB,GACH,CAAA,EAAiB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,EADjD,EAGK,GAAkB,AAAyB,cAAzB,EAAe,KAAK,GAC1C,EAAO,EAAK,MAAM,CAAC,EAAO,MAAM,CAAC,QAAQ,EACzC,EAAO,MAAM,CAAC,QAAQ,CAAG,EAAE,EAGxB,EAAK,MAAM,CAAG,GACjB,EAAO,IAAI,CAAC,CACX,QAAS,OACT,OAAQ,CAAC,EAAK,IAAI,CAAC,KAAK,AACzB,GAGD,IAAI,EAAa,EAAiB,EAAe,IAAI,CAAG,EACpD,CAAA,IAAI,CAAC,WAAW,EAAI,IAAe,IAAI,CAAC,WAAW,CAAC,IAAI,GAC3D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAC7B,IAAI,CAAC,WAAW,CAAG,MAEpB,KACD,KAAK,OACJ,EAAU,EAAI,MAAM,CAAC,EAAE,CAEnB,EAAO,QAAQ,CAAC,EAAI,MAAM,CAAC,IAAI,GAClC,IAAI,CAAC,gBAAgB,CAAC,EAAU,GAE7B,IAAY,IAAI,CAAC,eAAe,GACnC,IAAI,CAAC,YAAY,CAAC,CAAE,OAAQ,EAAU,KAAM,CAAQ,GACpD,IAAI,CAAC,eAAe,CAAG,MAExB,KACD,KAAK,UACJ,GAAsB,YAAlB,EAAI,MAAM,CAAC,EAAE,EAIb,EAAO,QAAQ,CAAC,YAAY,GAH/B,MASD,IAAI,EAAK,EAAI,MAAM,CAAC,EAAE,CAClB,EAAQ,IACU,CAAA,MAAlB,EAAI,MAAM,CAAC,EAAE,EAChB,CAAA,EAAQ,GAAc,EAAI,MAAM,CAAC,EAAE,CAAA,EAGpC,IAAI,EAAQ,CAAA,EACZ,IAAI,CAAC,QAAQ,CAAC,AAAC,GACd,AAAK,GAGJ,EAAQ,CAAC,EAAM,eAAe,CAAC,GAAG,CAAC,GAC5B,AAAA,GAAM,mBAAmB,CAAC,EAAO,EAAI,IAHrC,AAAA,GAAM,oBAAoB,CAAC,EAAO,GAKxC,KACF,GAAK,EAKM,GACV,IAAI,CAAC,OAAO,CAAC,CACZ,GAAG,EAAO,MAAM,CAChB,eAAgB,CACjB,OATW,CACX,IAAI,EAAW,IAAI,CAAC,wBAAwB,CAAC,GACzC,GACH,IAAI,CAAC,KAAK,CAAC,CAAE,OAAQ,EAAU,KQ/pCR,GR+pC4B,EAErD,CAOA,GAAI,GAAS,AAAgB,cAAhB,EAAM,KAAK,CAAkB,CACzC,IAAI,EAAW,IAAI,CAAC,wBAAwB,CAAC,GACzC,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAC1B,GAAU,EAAO,MAAM,GAAK,AAAA,GAAO,MAAM,CAAC,UAAU,EAAI,EAAO,MAAM,CAAC,QAAQ,EAAI,EAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAG,IACrH,EAAO,IAAI,CAAC,CACX,QAAS,OACT,OAAQ,CAAC,EAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,AAC3C,GACA,EAAO,MAAM,CAAC,QAAQ,CAAG,EAAE,CAE7B,CACD,GACA,KACD,KAAK,QACJ,GAAI,CAAC,EAAI,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,KAC7B,MAED,IAAI,EAAO,EAAI,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAC3B,EAAQ,EAAO,OAAO,CAAC,GAAG,CAAC,GAC/B,GAAI,CAAC,GAAS,AAAe,6BAAf,EAAM,IAAI,CACvB,KAMG,CAAA,IAAI,CAAC,WAAW,EAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAClG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAC7B,IAAI,CAAC,WAAW,CAAG,MAEpB,KACD,KAAK,WACJ,EAAS,EAAI,MAAM,CAAC,EAAE,CACtB,IAAI,EAAQ,EAAI,MAAM,CAAC,EAAE,CACzB,GAAI,AAAU,MAAV,GAAiB,CAAC,EAAM,UAAU,CAAC,cACtC,MAED,IAAI,EAAc,CAAE,KAAM,EAAM,OAAO,CAAC,aAAc,GAAI,EAE1D,GAAI,AAAA,GAAgB,EAAa,GADpB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAE,KAAM,EAAQ,OAAQ,EAAO,MAAM,AAAC,GACpB,AAAA,GAAY,IAAI,GACnE,MAED,IAAK,IAAI,KAAS,IAAI,CAAC,oBAAoB,CACtC,EAAO,EAAE,CAAC,EAAM,IAAI,CAAC,UAAU,IAAM,EAAO,EAAE,CAAC,IAG/C,AAAA,GAAuB,EAAM,IAAI,CAAC,OAAO,CAAE,IAC9C,EAAM,KAAK,GAIb,IAAI,EAAS,CAAA,EACb,IAAI,CAAC,cAAc,CAAC,CAAE,OAAQ,EAAU,KAAM,CAAO,EAAG,AAAC,IACxD,EAAS,CAAA,EAGT,EAAS,AAAA,GAAO,IAAI,CACpB,IAAK,IAAI,EAAI,EAAI,QAAQ,CAAC,MAAM,CAAG,EAAG,GAAK,EAAG,IAAK,CAClD,IAAI,EAAM,EAAI,QAAQ,CAAC,EAAE,CACzB,GAAI,AAAgB,YAAhB,EAAI,OAAO,EAAkB,AAAgB,WAAhB,EAAI,OAAO,EAG5C,GAAI,AAAA,GAAuB,EAAK,GAC/B,MAGD,GAAI,EAAI,WAAW,EAAI,EAAO,QAAQ,CAAC,EAAI,IAAI,EAAG,CACjD,EAAS,AAAA,GAAO,SAAS,CACzB,KACD,CAEA,EAAS,AAAA,GAAO,OAAO,CACxB,CAEA,MAAO,CAAE,OAAA,CAAO,CACjB,EAAG,KACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CACpB,KAAM,EACN,OAAQ,EAAO,MAAM,CACrB,OAAA,EACA,OAAA,EACA,SAAU,CAAE,CAAC,AAAA,GAAY,IAAI,CAAC,CAAE,CAAY,CAC7C,GACA,IAAI,CAAC,mBAAmB,EACzB,GACA,KACD,SACC,GAAI,GAAY,EAAI,OAAO,GAAK,AC1tCT,QD0tCS,EAAI,OAAO,CAAqB,CAC/D,IAAI,EAAc,EAAI,MAAM,CAAC,EAAI,MAAM,CAAC,MAAM,CAAG,EAAE,CACnD,IAAI,CAAC,SAAS,CAAC,EAChB,CACD,CAEA,EAAY,OAAO,CAAC,AAAC,IACpB,IAAI,CAAC,iBAAiB,CAAC,EAAU,EAAS,EAC3C,EACD,CAEA,MAAM,aAAa,CAAQ,CAAE,CAC5B,IAAI,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAC9B,GAAI,CAAC,EAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,sBAGzB,EAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA+B,CAAC,EAAO,MAAM,CAAC,cAAc,CAFvF,OAMD,IAAI,EAAc,AAtoCpB,SAA0B,CAAW,CAAE,CAAM,CAAE,CAAI,EAClD,IAAI,EAAU,EAAY,IAAI,CAAC,GAC3B,EAAO,KACX,IAAK,IAAI,KAAO,EAAS,CACxB,GAAI,AAAa,MAAb,EAAI,IAAI,CACX,SAED,IAAI,EAAU,GAAW,EAAK,GAC1B,AAAA,GAAgB,EAAM,IACzB,CAAA,EAAO,CADR,CAGD,CACA,OAAO,CACR,EAynCqC,IAAI,CAAC,WAAW,CAAE,EAAO,MAAM,CAAE,AAAA,GAAY,SAAS,EACzF,GAAI,CAAC,EACJ,OAGD,IAAI,EAAM,GAAe,IAAI,MAE7B,AADc,CAAA,MAAM,EAAO,mBAAmB,CAAC,EAAK,EAAY,IAAI,CAAA,EAC5D,OAAO,CAAC,MAAO,IACtB,IAyBI,EAzBA,EAAO,EAMP,EAAc,GADL,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAE,KAAM,EAAO,IAAI,CAAE,OAAQ,EAAO,MAAM,AAAC,GACxC,AAAA,GAAY,IAAI,EACjD,AAAA,GAAgB,EAAM,IACzB,CAAA,EAAO,CADR,EAMA,IAAI,EAAM,AAAA,GAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAE,CAAE,OAAQ,EAAU,KAAM,EAAO,IAAI,AAAC,GACxE,GAAO,EAAI,QAAQ,CAAC,MAAM,CAAG,GAEhC,CAAA,EAAO,AAAA,GADO,EAAI,QAAQ,CAAC,EAAI,QAAQ,CAAC,MAAM,CAAG,EAAE,CACnD,EAKG,EAAO,kBAAkB,IAAM,EAAO,MAAM,CAAC,EAAO,IAAI,GAC3D,EAAO,eAAe,CAAC,EAAO,IAAI,EAInC,GAAI,CACH,EAAS,MAAM,EAAO,mBAAmB,CAAC,EAAO,IAAI,CAAE,EA1B/C,CAAE,KAAM,CAAI,EA7uCK,IAwwC1B,CAAE,MAAO,EAAK,CACb,QAAQ,KAAK,CAAC,gCAAkC,EAAO,IAAI,CAAG,MAAO,GACrE,IAAI,CAAC,SAAS,CAAC,gCAAkC,EAAO,IAAI,CAAG,KAC/D,MACD,CAEA,IAAK,IAAI,KAAO,EAAO,QAAQ,CAE9B,IAAK,IAAI,KADS,IAAI,CAAC,YAAY,CAAC,EAAU,GAE7C,IAAI,CAAC,iBAAiB,CAAC,EAAU,EAAS,EAG7C,EACD,CAEA,oBAAoB,CAAa,CAAE,CAClC,IAAI,CAAC,YAAY,GAEb,EAAc,WAAW,CAC5B,GAAkB,GAAG,CAAC,GAEtB,GAAkB,GAAG,CAAC,MAIvB,IAAI,EAAe,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAC7D,GACH,IAAI,CAAC,KAAK,CAAC,EAAa,MAAM,EAG/B,IAAI,CAAC,OAAO,CAAC,EACd,CAEA,mBAAmB,CAAK,CAAE,CACX,IAAI,CAAC,OAAO,CAAC,EAAM,MAAM,CAAC,IAAI,GAE3C,EAAM,cAAc,EAEtB,CAEA,uBAAuB,CAAI,CAAE,CAC5B,IAAK,GAAI,CAAC,EAAI,EAAe,GAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAC1D,GAAI,EAAe,IAAI,GAAK,EAC3B,OAAO,EAGT,OAAO,IACR,CAEA,QAAQ,CAAG,CAAE,KAjyCS,MA2yCjB,EA1yCD,EACA,EAGA,EAgyCH,GAHmB,UAAf,OAAO,GACV,CAAA,EAAM,GAAa,EADpB,EAGI,CAAC,EACJ,MAAO,CAAA,EAGR,GAAI,CAAA,KAAE,CAAI,CAAA,KAAE,CAAI,CAAE,EAxyCf,EADkB,EAyyCc,EAAI,IAAI,CAvyCxC,EAAO,MAGP,EAAI,EAAI,WAAW,CAAC,MAChB,GAAK,CAAC,EAAI,QAAQ,CAAC,OAC1B,EAAO,EAAI,KAAK,CAAC,EAAG,GACpB,EAAO,SAAS,EAAI,KAAK,CAAC,EAAI,GAAI,KAG/B,EAAK,UAAU,CAAC,MAAQ,EAAK,QAAQ,CAAC,MACzC,CAAA,EAAO,EAAK,KAAK,CAAC,EAAG,EAAK,MAAM,CAAG,EADpC,EAIO,CAAE,KAAA,EAAM,KAAA,CAAK,GA6xCnB,GAAK,EAAI,IAAI,CAEN,CACN,IAAI,EAAe,IAAI,CAAC,sBAAsB,CAAC,GAC/C,GAAI,CAAC,EAAc,CAElB,IAAI,EAAS,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK,CAC/C,GAAI,CAAC,GAAU,CAAC,EAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,4BACvC,MAAO,CAAA,EAGR,IAAI,EAAS,CAAE,KAAA,CAAK,EAKpB,MAJoB,UAAhB,OAAO,GACV,CAAA,EAAO,IAAI,CAAG,CADf,EAGA,IAAI,CAAC,UAAU,CAAC,UAAW,CAAE,OAAA,EAAQ,SAAU,EAAI,MAAM,AAAC,GACnD,CAAA,CACR,CAEA,IAAK,GAAI,CAAC,EAAI,EAAO,GAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAC1C,GAAI,EAAO,YAAY,GAAK,EAAc,CACzC,EAAW,EACX,KACD,CAEF,MAxBC,EAAW,AAAA,GAAM,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAyB9C,GAAI,CAAC,EACJ,MAAO,CAAA,EAGR,IAAI,EAAM,AAAA,GAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAE,CAAE,OAAQ,EAAU,KAAM,EAAI,MAAM,EQj5C/C,GRi5CiE,GAM5F,OALI,EACH,IAAI,CAAC,YAAY,CAAC,EAAI,EAAE,EAExB,IAAI,CAAC,UAAU,CAAC,OAAQ,CAAE,OAAQ,EAAU,QAAS,EAAI,MAAM,AAAC,GAE1D,CAAA,CACR,CAEA,gBAAgB,CAAI,CAAE,CACrB,IAAI,CAAC,IAAI,CAAC,EACX,CAEA,cAAc,CAAM,CAAE,CAAQ,CAAE,CAC/B,IAAI,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAE9B,EAAO,GAAG,CAAC,EAAQ,CAClB,OAAQ,CAAC,QAAS,WAAY,OAAQ,WAAY,WAAY,UAAU,AACzE,GACA,EAAO,OAAO,CAAC,GAEX,EAAO,kBAAkB,IAC5B,EAAO,eAAe,CAAC,EAEzB,CAEA,MAAM,iBAAiB,CAAM,CAAE,CAAQ,CAAE,CACxC,IAAI,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAG9B,IAAI,CAAC,cAAc,CAAC,CAAE,KAAM,EAAQ,OAAQ,CAAS,EAAG,CAAE,cAAe,CAAA,CAAK,GAE9E,IAAI,EAAgB,CAAA,EACpB,GAAI,CACH,MAAM,EAAO,GAAG,CAAC,EAAQ,CACxB,OAAQ,CAAC,QAAS,WAAY,OAAQ,WAAY,WAAY,UAAU,AACzE,GACA,EAAgB,CAAA,CACjB,QAAU,CACT,IAAI,CAAC,cAAc,CAAC,CAAE,KAAM,EAAQ,OAAQ,CAAS,EAAG,CAAE,cAAA,CAAc,EACzE,CACD,CAEA,KAAK,CAAM,CAAE,CAAQ,CAAE,CAAQ,CAAE,CAC3B,GACJ,CAAA,EAAW,AAAA,GAAM,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAA,EAG9C,IAAI,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAC1B,EAAO,QAAQ,CAAC,GACnB,IAAI,CAAC,YAAY,CAAC,CAAE,OAAQ,CAAS,GAC3B,EAAO,SAAS,CAAC,IAC3B,IAAI,CAAC,eAAe,CAAG,EACvB,EAAO,IAAI,CAAC,EAAQ,GAAU,KAAK,CAAC,AAAC,IACpC,IAAI,CAAC,SAAS,CAAC,EAChB,KAEA,IAAI,CAAC,aAAa,CAAC,EAAQ,GAC3B,IAAI,CAAC,YAAY,CAAC,EAAU,GAC5B,IAAI,CAAC,YAAY,CAAC,CAAE,OAAQ,EAAU,KAAM,CAAO,GAErD,CAEA,MAAM,CAAE,CAAE,CACT,IAAI,EAAM,AAAA,GAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAE,GACtC,GAAI,CAAC,EACJ,OAGD,IAAI,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAI,MAAM,EACxC,OAAQ,EAAI,IAAI,EAChB,KAAK,AAAA,GAAW,MAAM,CACrB,IAAI,CAAC,QAAQ,CAAC,AAAC,IACd,IAAI,EAAU,IAAI,IAAI,EAAM,OAAO,EACnC,IAAK,GAAI,CAAC,EAAI,EAAE,GAAI,EAAM,OAAO,CAC5B,EAAE,MAAM,GAAK,EAAI,MAAM,EAC1B,EAAQ,MAAM,CAAC,GAIjB,IAAI,EAAe,EAAM,YAAY,CASrC,OARI,GAAgB,EAAM,OAAO,CAAC,GAAG,CAAC,GAAc,MAAM,GAAK,EAAI,MAAM,GAEvE,EADG,EAAQ,IAAI,CAAG,EACH,EAAQ,IAAI,GAAG,IAAI,GAAG,KAAK,CAE3B,MAIV,CAAE,QAAA,EAAS,aAAA,CAAa,CAChC,GAEA,IAAI,EAAgB,GAAU,CAAC,EAAO,MAAM,CAAC,cAAc,EAAI,EAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,4BACnF,EAAgB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,GAAK,EAAI,MAAM,CAgBzE,GAdA,IAAI,CAAC,UAAU,CAAC,EAAI,MAAM,EAE1B,IAAI,CAAC,QAAQ,CAAC,AAAC,IACd,IAAI,EAAU,IAAI,IAAI,EAAM,OAAO,EACnC,EAAQ,MAAM,CAAC,EAAI,MAAM,EAEzB,IAAI,EAAc,EAAM,WAAW,CAKnC,OAJqB,IAAjB,EAAQ,IAAI,EACf,CAAA,EAAc,CAAA,CADf,EAIO,CAAE,QAAA,EAAS,YAAA,CAAY,CAC/B,GAEI,EAAe,CAClB,IAAK,IAAI,KAAY,IAAI,CAAC,OAAO,CAAC,IAAI,GACrC,IAAI,CAAC,KAAK,CAAC,CAAE,OAAQ,EAAU,KQhgDP,GRggD2B,GAEpD,IAAI,CAAC,WAAW,CAAC,KAAK,EACvB,MACC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAO,MAAM,EAIjC,GACH,GAAkB,GAAG,CAAC,MAEvB,KACD,MAAK,AAAA,GAAW,OAAO,CAClB,EAAI,MAAM,EACb,EAAO,IAAI,CAAC,CAAE,QAAS,OAAQ,OAAQ,CAAC,EAAI,IAAI,CAAC,AAAC,EAGpD,MAAK,AAAA,GAAW,IAAI,CACf,IAAI,CAAC,KAAK,CAAC,YAAY,GAAK,EAAI,EAAE,EACrC,IAAI,CAAC,YAAY,CAAC,CAAE,KQnhDK,GRmhDe,GAEzC,IAAI,CAAC,QAAQ,CAAC,AAAC,IACd,IAAI,EAAU,IAAI,IAAI,EAAM,OAAO,EAEnC,OADA,EAAQ,MAAM,CAAC,EAAI,EAAE,EACd,CAAE,QAAA,CAAQ,CAClB,GAEA,EAAO,SAAS,CAAC,EAAI,IAAI,EAEzB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CACpB,KAAM,EAAI,IAAI,CACd,OAAQ,EAAO,MAAM,CACrB,OAAQ,CAAA,CACT,EAED,CACD,CAEA,eAAgB,CACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,CAClD,CAEA,eAAe,CAAC,CAAE,CACjB,IAAI,EAAQ,EAAE,KAAK,CAAC,KAChB,EAAO,CAAK,CAAC,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,GACpC,EAAO,EAAM,KAAK,CAAC,GAEnB,EAAM,AAAA,GAAS,GAAG,CAAC,GACvB,GAAI,CAAC,EAAK,CACT,IAAI,CAAC,SAAS,CAAC,CAAC,iBAAiB,EAAE,EAAK,qCAAqC,CAAC,EAC9E,MACD,CAEA,GAAI,CACH,EAAI,OAAO,CAAC,IAAI,CAAE,EACnB,CAAE,MAAO,EAAO,CACf,QAAQ,KAAK,CAAC,CAAC,2BAA2B,EAAE,EAAK,EAAE,CAAC,CAAE,GACtD,IAAI,CAAC,SAAS,CAAC,EAAM,OAAO,CAC7B,CACD,CAEA,QAAQ,CAAM,CAAE,CAAI,CAAE,CACrB,GAAI,AQ9jDuB,MR8jDvB,EAA0B,CAC7B,IAAI,CAAC,SAAS,CAAC,wCACf,MACD,CAEA,IAAI,EAAW,AAAA,GAAM,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAC7C,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAE1B,EAAM,CAAE,QAAS,UAAW,OAAQ,CAAC,EAAQ,EAAK,AAAC,EACvD,EAAO,IAAI,CAAC,GAEP,EAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAC5B,EAAI,MAAM,CAAG,CAAE,KAAM,EAAO,IAAI,AAAC,EACjC,IAAI,CAAC,iBAAiB,CAAC,EAAU,EAAQ,GAE3C,CAEA,qBAAqB,CAAI,CAAE,CAC1B,GAAI,CAAC,EACJ,OAGD,GAAI,EAAK,UAAU,CAAC,MACnB,EAAO,EAAK,KAAK,CAAC,QACZ,GAAI,EAAK,UAAU,CAAC,KAAM,CAChC,IAAI,CAAC,cAAc,CAAC,GACpB,MACD,CAEA,IAAI,EAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EACnD,GAIL,IAAI,CAAC,OAAO,CAAC,EAAI,IAAI,CAAE,EACxB,CAEA,sBAAsB,CAAE,CAAE,CACzB,IAAI,CAAC,YAAY,CAAC,GAClB,IAAI,CAAC,eAAe,EACrB,CAEA,sBAAsB,CAAE,CAAE,CACzB,IAAI,CAAC,KAAK,CAAC,GACX,IAAI,CAAC,eAAe,EACrB,CAEA,kBAAmB,CAClB,IAAI,CAAC,QAAQ,CAAC,AAAC,GAKP,CAAA,CAAE,WAJQ,CAChB,GAAG,EAAM,UAAU,CACnB,WAAY,CAAC,EAAM,UAAU,CAAC,UAAU,AACzC,CACoB,CAAA,EAEtB,CAEA,kBAAmB,CAClB,IAAI,CAAC,QAAQ,CAAC,AAAC,GAKP,CAAA,CAAE,WAJQ,CAChB,GAAG,EAAM,UAAU,CACnB,WAAY,CAAC,EAAM,UAAU,CAAC,UAAU,AACzC,CACoB,CAAA,EAEtB,CAEA,iBAAkB,CACjB,IAAI,CAAC,QAAQ,CAAC,AAAC,GAKP,CAAA,CAAE,WAJQ,CAChB,GAAG,EAAM,UAAU,CACnB,WAAY,CAAA,CACb,CACoB,CAAA,EAEtB,CAEA,iBAAkB,CACjB,IAAI,CAAC,QAAQ,CAAC,AAAC,GAKP,CAAA,CAAE,WAJQ,CAChB,GAAG,EAAM,UAAU,CACnB,WAAY,CAAA,CACb,CACoB,CAAA,EAEtB,CAEA,gBAAgB,CAAG,CAAE,CACpB,OAAQ,EAAI,IAAI,EAChB,KAAK,AAAA,GAAW,MAAM,CACrB,IAAI,CAAC,UAAU,CAAC,OAAQ,CAAE,OAAQ,EAAI,MAAM,AAAC,GAC7C,KACD,MAAK,AAAA,GAAW,OAAO,CAEtB,AADa,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAI,MAAM,EACjC,IAAI,CAAC,CAAE,QAAS,OAAQ,OAAQ,CAAC,EAAI,IAAI,CAAC,AAAC,EAEnD,CACD,CAEA,iBAAiB,CAAI,CAAE,CACtB,IAAI,CAAC,IAAI,CAAC,EAAK,OAAO,CAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EACpD,IAAI,CAAC,aAAa,EACnB,CAEA,aAAa,CAAM,CAAE,CACpB,SAAS,EAAS,CAAC,CAAE,CAAM,EAC1B,EAAS,EAAO,WAAW,GAC3B,IAAI,EAAO,EAAE,CACb,IAAK,IAAI,KAAQ,EACZ,EAAK,WAAW,GAAG,UAAU,CAAC,IACjC,EAAK,IAAI,CAAC,GAGZ,OAAO,CACR,CAEA,GAAI,EAAO,UAAU,CAAC,KAErB,OAAO,AADI,EAAS,IAAI,AAAA,GAAS,IAAI,GAAG,CAAE,EAAO,KAAK,CAAC,IAC3C,GAAG,CAAC,AAAC,GAAQ,IAAM,GAIhC,GAAI,EAAO,UAAU,CAAC,KAAM,CAC3B,IAAI,EAAY,EAAE,CAClB,IAAK,IAAM,KAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GACtC,EAAI,IAAI,CAAC,UAAU,CAAC,MACvB,EAAU,IAAI,CAAC,EAAI,IAAI,EAGzB,OAAO,EAAS,EAAW,EAC5B,CAEA,IAAI,EAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,SACxD,AAAI,AAAC,GAAQ,EAAI,OAAO,CAGjB,EAAS,EAAI,OAAO,CAAC,IAAI,GAAI,GAF5B,EAAE,AAGX,CAEA,UAAW,CACV,IAAI,CAAC,UAAU,CAAC,OACjB,CAEA,MAAM,uBAAwB,CAC7B,IAcI,EAdA,EAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EACxD,GAAI,CAAC,GAAO,EAAI,IAAI,GAAK,AAAA,GAAW,MAAM,CACzC,OAGD,IAAI,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAI,MAAM,EAExC,GAAI,CAAC,GAAU,CAAC,EAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAwB,CAAC,EAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAGrF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAI,EAAE,EAF/B,OAQA,EADG,EAAI,QAAQ,CAAC,MAAM,CAAG,EAChB,EAAI,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,IAAO,CAE5B,GAAe,IAAI,MAI7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAI,EAAE,CAAE,CAAA,GAE9B,IAAI,EAAQ,IACR,EAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,yBAC3B,CAAA,EAAQ,GADT,EAIA,IAAI,EAAS,MAAM,EAAO,kBAAkB,CAAC,EAAI,IAAI,CAAE,EAAQ,GAG/D,GAFA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAI,EAAE,CAAE,CAAC,EAAO,IAAI,EAEtC,EAAO,QAAQ,CAAC,MAAM,CAAG,EAAG,CAC/B,IAAI,EAAM,EAAO,QAAQ,CAAC,EAAO,QAAQ,CAAC,MAAM,CAAG,EAAE,CACjD,EAAW,CAAE,CAAC,AAAA,GAAY,SAAS,CAAC,CAAE,AAAA,GAAmB,EAAK,CAC9D,CAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAK,EAAI,EAAE,EACrC,CAAA,CAAQ,CAAC,AAAA,GAAY,IAAI,CAAC,CAAG,AAAA,GAAmB,EADjD,EAGA,IAAI,EAAS,CACZ,KAAM,EAAI,IAAI,CACd,OAAQ,EAAO,MAAM,CACrB,SAAA,CACD,EACI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IACxB,IAAI,CAAC,eAAe,CAAC,EAAQ,GAE9B,IAAI,CAAC,cAAc,CAAC,EAAK,CAAC,CAAA,gBAAE,CAAe,CAAE,IACvC,AAAA,GAAuB,EAAK,IAChC,CAAA,EAAkB,AAAA,GAAmB,EADtC,EAGO,CAAE,gBAAA,CAAgB,GAE3B,CAEA,IAAK,IAAI,KAAO,EAAO,QAAQ,CAC9B,IAAI,CAAC,cAAc,CAAC,EAAI,MAAM,CAAE,EAAI,IAAI,CAAE,EAE5C,CAEA,WAAW,CAAI,CAAE,CAAI,CAAE,CACtB,IAAI,CAAC,QAAQ,CAAC,CAAE,OAAQ,EAAM,WAAY,CAAK,EAChD,CAEA,eAAgB,CACf,IAAI,CAAC,QAAQ,CAAC,CAAE,OAAQ,KAAM,WAAY,IAAK,EAChD,CAEA,iBAAiB,CAAO,CAAE,CACzB,IAAM,EAAa,AAAC,IACnB,IAAI,CAAC,QAAQ,CAAC,AAAC,GACP,CAAA,CAAE,WAAY,CAAE,GAAG,EAAM,UAAU,CAAE,QAAA,CAAQ,CAAE,CAAA,EAExD,EAEA,EAAW,CAAA,GACX,EAAQ,OAAO,CAAC,IAAM,EAAW,CAAA,GAClC,CAEA,gBAAgB,CAAQ,CAAE,CACzB,IAAI,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAC9B,IAAI,CAAC,UAAU,CAAC,OAAQ,CAAE,SAAU,EAAO,IAAI,AAAC,EACjD,CAEA,iBAAiB,CAAQ,CAAE,CAAQ,CAAE,CACpC,IAAI,EAAW,AAAA,GAAM,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAC7C,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAC1B,EAAU,EAAO,YAAY,CAAC,QAAS,CAAE,SAAA,EAAU,SAAA,CAAS,GAAG,IAAI,CAAC,KAIvE,GAHA,IAAI,CAAC,aAAa,GAGd,IADc,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK,CAEnD,OAGD,IAAI,EAAc,GAAkB,IAAI,GACnC,IAIL,QAAQ,GAAG,CAAC,iCACZ,EAAc,CACb,GAAG,CAAW,CACd,UAAW,CAAE,SAAA,EAAU,SAAA,CAAS,CACjC,EACA,GAAkB,GAAG,CAAC,GACvB,GACA,IAAI,CAAC,gBAAgB,CAAC,EACvB,CAEA,oBAAoB,CAAQ,CAAE,CAE7B,IAAI,EAAgB,AADP,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GACH,2BAA2B,CAAC,kBACvD,IAAI,CAAC,UAAU,CAAC,WAAY,CAAE,cAAA,CAAc,EAC7C,CAEA,qBAAqB,CAAK,CAAE,CAAQ,CAAE,CACrC,IAAI,EAAW,AAAA,GAAM,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAC7C,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAE1B,EAAU,EAAO,eAAe,CAAC,EAAO,GAAU,IAAI,CAAC,AAAC,IAQ3D,GAPA,IAAI,CAAC,aAAa,GAEd,EAAK,oBAAoB,EAC5B,IAAI,CAAC,iBAAiB,CAAC,EAAK,OAAO,CAAE,EAAK,OAAO,EAI9C,IADc,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK,CAEnD,OAGD,IAAI,EAAc,GAAkB,IAAI,GACnC,IAIL,QAAQ,GAAG,CAAC,2CACZ,EAAc,CACb,GAAG,CAAW,CACd,UAAW,CAAE,SAAU,EAAK,OAAO,CAAE,SAAA,CAAS,CAC/C,EACA,GAAkB,GAAG,CAAC,GACvB,GACA,IAAI,CAAC,gBAAgB,CAAC,EACvB,CAEA,kBAAkB,CAAO,CAAE,CAAO,CAAE,CACnC,IAAI,CAAC,UAAU,CAAC,SAAU,CAAE,QAAA,EAAS,QAAA,CAAQ,EAC9C,CAEA,mBAAmB,CAAI,CAAE,CACxB,IAAI,EAAW,AAAA,GAAM,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAG7C,EAAU,AAFD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAET,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAE,GAAM,IAAI,CAAC,KAC5E,IAAI,CAAC,aAAa,EACnB,GACA,IAAI,CAAC,gBAAgB,CAAC,EACvB,CAEA,uBAAwB,CACvB,IAAI,CAAC,UAAU,CAAC,UACjB,CAEA,yBAAyB,CAAQ,CAAE,CAElC,IAAI,EAAe,AADN,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GACV,YAAY,CAClC,EAAiB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,GACpD,IAAI,CAAC,UAAU,CAAC,UAAW,CAC1B,GAAI,EACJ,OAAQ,CACT,EACD,CAEA,MAAM,oBAAoB,CAAK,CAAE,CAAQ,CAAE,CAC1C,IAAI,EAAS,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK,CAI/C,GAFA,IAAI,CAAC,aAAa,GAEd,IAAI,CAAC,KAAK,CAAC,UAAU,EAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAE,CACtD,GAAI,AAA8B,IAA9B,OAAO,IAAI,CAAC,GAAO,MAAM,CAC5B,OAGD,EAAO,IAAI,CAAC,CACX,QAAS,UACT,OAAQ,CAAC,gBAAiB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAE,GAAe,GAAO,AAC3E,EACD,KAAO,CACN,EAAQ,CAAE,GAAG,CAAK,CAAE,IAAK,GAAI,EAC7B,IAAI,EAAK,MAAM,EAAO,oBAAoB,CAAC,GAC3C,GAAI,CAAC,EACJ,OAKD,IAAI,EAAW,IAAI,CAAC,wBAAwB,CAAC,EAE7C,CADgB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GACvB,MAAM,CAAC,QAAQ,CAAG,CAAC,EAAS,CAEtC,IAAI,CAAC,eAAe,CAAG,CACxB,CACD,CAEA,qBAAsB,CAGrB,AAFa,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK,CAExC,IAAI,CAAC,CACX,QAAS,UACT,OAAQ,CAAC,aAAc,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,AACjD,GAEA,IAAI,CAAC,aAAa,EACnB,CAEA,yBAA0B,CACzB,IAAI,EAAsB,CAAA,EAC1B,IAAK,GAAI,CAAC,EAAK,EAAO,GAAI,IAAI,CAAC,OAAO,CACrC,GAAI,EAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA6B,CACxD,EAAsB,CAAA,EACtB,KACD,CAGD,IAAI,CAAC,UAAU,CAAC,WAAY,CAAE,oBAAA,CAAoB,EACnD,CAEA,qBAAqB,CAAQ,CAAE,CAC9B,GAAe,GAAG,CAAC,GACnB,IAAI,CAAC,QAAQ,CAAC,CAAE,SAAA,CAAS,EAC1B,CAEA,0BAA2B,CAC1B,IAAI,CAAC,aAAa,GAClB,IAAI,CAAC,aAAa,EACnB,CAEA,mBAAmB,CAAG,CAAE,CACvB,IAAI,CAAC,aAAa,GACd,GACH,IAAI,CAAC,YAAY,CAAC,EAEpB,CAEA,mBAAoB,CACf,IAAI,CAAC,KAAK,CAAC,YAAY,EAE1B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAM9C,IAAI,EAAM,IAAI,KACd,IAAI,CAAA,IAAI,CAAC,iBAAiB,EAAI,EAAI,OAAO,GAAK,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAK,IAAA,EAKjF,IAAK,IAAI,KAFT,IAAI,CAAC,iBAAiB,CAAG,EAEN,IAAI,CAAC,OAAO,CAAC,MAAM,IACrC,EAAO,IAAI,CAAC,CAAE,QAAS,OAAQ,OAAQ,CAAC,QAAQ,AAAC,EAEnD,CAEA,mBAAoB,KiB/2DC,MACjB,CjB+2DH,CAAA,IAAI,CAAC,SAAS,CAAG,SAAS,KAAK,CiBh3DX,EjBi3DH,IAAI,CiBh3DlB,EAAQ,CAAC,EACb,GAAY,OAAO,CAAC,AAAC,IACf,CAAK,CAAC,EAAQ,GAAG,CAAC,EACtB,CAAA,CAAK,CAAC,EAAQ,GAAG,CAAC,CAAG,EAAE,AAAF,EAEtB,CAAK,CAAC,EAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,EACzB,GAEA,OAAO,gBAAgB,CAAC,UAAW,AAAC,IACnC,IAAI,EAAa,CAAK,CAAC,EAAM,GAAG,CAAC,CAC5B,GAMD,AAAsB,IAAtB,AAHJ,CAAA,EAAa,EAAW,MAAM,CAAC,AAAC,GACxB,CAAA,CAAQ,EAAQ,MAAM,GAAM,EAAM,MAAM,EAAI,CAAA,CAAQ,EAAQ,OAAO,GAAM,EAAM,OAAO,CAC9F,EACe,MAAM,GAGrB,EAAM,cAAc,GACpB,CAAU,CAAC,EAAE,CAAC,OAAO,CAAC,GACvB,GjB41DC,OAAO,gBAAgB,CAAC,QAAS,IAAI,CAAC,iBAAiB,CACxD,CAEA,sBAAuB,CACtB,SAAS,KAAK,CAAG,IAAI,CAAC,SAAS,CAC/B,OAAO,mBAAmB,CAAC,QAAS,IAAI,CAAC,iBAAiB,CAC3D,CAEA,QAAS,KAiGJ,EAoHA,EApNJ,GAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAE,CACvB,IAAI,EAAQ,KAIZ,OAHI,IAAI,CAAC,KAAK,CAAC,KAAK,EACnB,CAAA,EAAQ,AAAA,EAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,AAAD,EAEjE,AAAA,EAAI,CAAC,sBAAsB,EAAE,EAAM,UAAU,CAAC,AACtD,CAEA,IAAI,EAAe,KAAM,EAAe,KAAM,EAAuB,KACrE,GAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAG,CACpD,EAAe,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAG7D,IAAI,EAAe,AAFnB,CAAA,EAAe,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAa,MAAM,CAAA,EAEzB,YAAY,CACxC,GACH,CAAA,EAAuB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,EADvD,CAGD,CAEA,IAAI,EAAe,KAKnB,GAJI,GACH,CAAA,EAAe,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAa,MAAM,CAAA,EAGhD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAE,CAC3B,IAAI,EAAS,EAAe,EAAa,MAAM,CAAG,AAAA,GAAa,YAAY,CACvE,EAAa,IAAW,AAAA,GAAa,UAAU,EAAI,IAAW,AAAA,GAAa,WAAW,CAC1F,OAAO,AAAA,EAAI,CAAC;;MAET,EAAE,GAAY;YACR,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;aAClB,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;WAC7B,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;iBACpB,EAAE,EAAW;eACf,EAAE,IAAI,CAAC,mBAAmB,CAAC;;;GAGvC,CAAC,AACF,CAEA,IAAI,EAAe,KACnB,GAAI,EAAc,CACjB,IAAI,EAAa,IACb,CAAA,EAAa,IAAI,GAAK,AAAA,GAAW,IAAI,EACxC,CAAA,EAAa,EAAa,KAAK,CAAC,GAAG,CAAC,EAAa,IAAI,CAAA,EAGtD,EAAe,AAAA,EAAI,CAAC;;MAEjB,EAAE,GAAa;aACR,EAAE,EAAa;aACf,EAAE,EAAa;WACjB,EAAE,EAAW;qBACH,EAAE,EAAqB;qBACvB,EAAE,IAAI,CAAC,kBAAkB,CAAC;cACjC,EAAE,IAAM,IAAI,CAAC,KAAK,CAAC,GAAc;aAClC,EAAE,IAAM,IAAI,CAAC,eAAe,CAAC,GAAc;kBACtC,EAAE,IAAM,IAAI,CAAC,SAAS,GAAG;mBACxB,EAAE,IAAI,CAAC,qBAAqB,CAAC;sBAC1B,EAAE,IAAM,IAAI,CAAC,wBAAwB,CAAC,EAAa,MAAM,EAAE;qBAC5D,EAAE,IAAI,CAAC,uBAAuB,CAAC;;;GAGjD,CAAC,AACF,CAEA,IAAI,EAAa,KACb,GAAgB,EAAa,IAAI,GAAK,AAAA,GAAW,OAAO,EAC3D,CAAA,EAAa,AAAA,EAAI,CAAC;;;YAGT,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAG,SAAW,GAAG;;;;cAIjD,EAAE,IAAI,CAAC,gBAAgB,CAAC;;;;;;;OAO/B,EAAE,EAAa,OAAO,CAAC,IAAI,CAAC;;OAE5B,EAAE,GAAW;eACL,EAAE,EAAa,OAAO,CAAC;aACzB,EAAE,EAAa,KAAK,CAAC;mBACf,EAAE,IAAI,CAAC,eAAe,CAAC;;;;GAIvC,CAAC,AAAD,EAGD,IAAI,EAAS,KACT,EAAa,IAAI,CAAC,KAAK,CAAC,UAAU,EAAI,CAAC,EAE3C,OAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,IAAK,UACJ,IAAI,EAAQ,CAAC,EAAW,EAAE,CAE1B,EAAS,AAAA,EAAI,CAAC;KACZ,EAAE,GAAO,OAAO,EAFN,EAAQ,cAAgB,eAEV,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;MACvD,EAAE,GAAY;eACL,EAAE,IAAI,CAAC,mBAAmB,CAAC;eAC3B,EAAE,IAAI,CAAC,mBAAmB,CAAC;aAC7B,EAAE,EAAW,MAAM,CAAC;eAClB,EAAE,EAAW,QAAQ,CAAC;YACzB,EAAE,EAAM;;;GAGjB,CAAC,CACD,KACD,KAAK,OACJ,EAAS,AAAA,EAAI,CAAC;KACZ,EAAE,GAAO,wBAAwB,EAAE,IAAI,CAAC,aAAa,CAAC;MACrD,EAAE,GAAK;;GAEV,CAAC,CACD,KACD,KAAK,OACJ,EAAS,AAAA,EAAI,CAAC;KACZ,EAAE,GAAO,gCAAgC,EAAE,IAAI,CAAC,aAAa,CAAC;MAC7D,EAAE,GAAS,SAAS,EAAE,EAAW,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC;;GAE9E,CAAC,CACD,KACD,KAAK,OAEH,EADG,EAAW,OAAO,CACR,AAAA,EAAI,CAAC,kBAAkB,CAAC,CAExB,AAAA,EAAI,CAAC;MAChB,EAAE,GAAS,UAAU,EAAE,EAAW,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC;IAC/E,CAAC,CAEF,EAAS,AAAA,EAAI,CAAC;KACZ,EAAE,GAAO,iBAAiB,EAAE,AAAA,GAAc,EAAc,GAAsB,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC;KAC/G,EAAE,EAAW;;GAEf,CAAC,CACD,KACD,KAAK,WAEH,EADG,EAAW,OAAO,CACR,AAAA,EAAI,CAAC,wBAAwB,CAAC,CAE9B,AAAA,EAAI,CAAC;MAChB,EAAE,GAAa,eAAe,EAAE,EAAW,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC;IACjG,CAAC,CAEF,EAAS,AAAA,EAAI,CAAC;KACZ,EAAE,GAAO,uBAAuB,EAAE,AAAA,GAAc,EAAc,GAAsB,oBAAoB,EAAE,IAAI,CAAC,aAAa,CAAC;KAC7H,EAAE,EAAW;;GAEf,CAAC,CACD,KACD,KAAK,SAEH,EADG,EAAW,OAAO,CACR,AAAA,EAAI,CAAC,yBAAyB,CAAC,CAE/B,AAAA,EAAI,CAAC;MAChB,EAAE,GAAW,SAAS,EAAE,EAAW,OAAO,CAAC,SAAS,EAAE,EAAW,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC;IAC/G,CAAC,CAEF,EAAS,AAAA,EAAI,CAAC;KACZ,EAAE,GAAO,eAAe,EAAE,AAAA,GAAc,EAAc,GAAsB,oBAAoB,EAAE,IAAI,CAAC,aAAa,CAAC;KACrH,EAAE,EAAW;;GAEf,CAAC,CACD,KACD,KAAK,WACJ,EAAS,AAAA,EAAI,CAAC;KACZ,EAAE,GAAO,4BAA4B,EAAE,IAAI,CAAC,aAAa,CAAC;MACzD,EAAE,GAAa;eACN,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;0BACX,EAAE,EAAW,mBAAmB,CAAC;eAC5C,EAAE,IAAI,CAAC,oBAAoB,CAAC;mBACxB,EAAE,IAAI,CAAC,wBAAwB,CAAC;cACrC,EAAE,IAAI,CAAC,aAAa,CAAC;;;GAGhC,CAAC,CACD,KACD,KAAK,SACJ,EAAS,AAAA,EAAI,CAAC;KACZ,EAAE,GAAO,+CAA+C,EAAE,IAAI,CAAC,aAAa,CAAC;MAC5E,EAAE,GAAa;cACP,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;cACrB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;sBACb,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;eACpC,EAAE,IAAI,CAAC,kBAAkB,CAAC;;GAEtC,CAAC,AAEF,CAEA,IAAI,EAAQ,IACR,CAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EACnB,CAAA,EAAQ,AAAA,EAAI,CAAC;;KAEX,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;KACnB,EAAE,IAAI;qBACU,EAAE,IAAI,CAAC,kBAAkB,CAAC;;GAE5C,CAAC,AAAD,EAGD,IAAI,EAAmB,CAAA,EACnB,GAAgB,EAAa,MAAM,GAAK,AAAA,GAAa,UAAU,EAClE,CAAA,EAAmB,CAAA,CADpB,EAIA,IAAI,EAAc,CAAA,EAElB,GAAI,GAAgB,EAAa,IAAI,GAAK,AAAA,GAAW,MAAM,CAC1D,EAAc,CAAA,OACR,GAAI,EAAc,KC5pDM,EAAU,EAAM,ED6pD9C,ICxpDE,EDwpDE,EAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAa,MAAM,EC7pDnB,ED8pDO,EAAO,QAAQ,CC9pDZ,ED8pDc,EAAO,IAAI,CC9pDnB,ED8pDqB,EAAa,IAAI,CCzpDlF,EAAM,GADA,CAAE,OADC,CAAE,KAAM,EAAM,KAFhB,IAAI,MAAM,CAAC,EAAS,OAAO,IAEL,KADtB,IAAI,MAAM,CAAC,EAAS,OAAO,GACA,EAClB,QAAS,UAAW,OAAQ,CAAC,EAAQ,GAAG,AAAC,GAC9B,ODypD7B,ECxpDK,EAAS,OAAO,GAAK,EAAI,MAAM,ADypDrC,CAEA,IAAI,EAAM,AAAA,EAAI,CAAC;;;WAGN,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAG,SAAW,GAAG;;KAEzD,EAAE,GAAW;aACL,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;aACrB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;qBACb,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;kBAChC,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;mBACzB,EAAE,IAAI,CAAC,qBAAqB,CAAC;mBAC7B,EAAE,IAAI,CAAC,qBAAqB,CAAC;;;;aAInC,EAAE,IAAI,CAAC,gBAAgB,CAAC;;;;;;GAMlC,EAAE,EAAa;IACd,EAAE,GAAc;WACT,EAAE,IAAI,CAAC,MAAM,CAAC;;cAEX,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;gBACxB,EAAE,IAAI,CAAC,qBAAqB,CAAC;;6BAEhB,EAAE,IAAI,CAAC,MAAM,CAAC;MACrC,EAAE,GAAO;aACF,EAAE,EAAa;aACf,EAAE,EAAa;eACb,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;qBAChB,EAAE,IAAI,CAAC,kBAAkB,CAAC;kBAC7B,EAAE,IAAI,CAAC,eAAe,CAAC;kBACvB,EAAE,IAAM,IAAI,CAAC,eAAe,CAAC,EAAa,MAAM,EAAE;sBAC9C,EAAE,IAAM,IAAI,CAAC,mBAAmB,CAAC,EAAa,MAAM,EAAE;oBACxD,EAAE,IAAI,CAAC,iBAAiB,CAAC;;;;GAI1C,EAAE,EAAW;IACZ,EAAE,GAAS;QACP,EAAE,IAAI,CAAC,QAAQ,CAAC;WACb,EAAE,EAAa;aACb,EAAE,EAAiB;aACnB,EAAE,IAAI,CAAC,oBAAoB,CAAC;iBACxB,EAAE,IAAI,CAAC,YAAY,CAAC;gBACrB,EAAE,EAAY;WACnB,EAAE,EAAc;;GAExB,EAAE,EAAO;GACT,EAAE,EAAM;EACT,CAAC,CAED,OAAO,AAAA,EAAI,CAAC;IACV,EAAE,AAAA,GAAgB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IACxD,EAAE,EAAI;;EAER,CAAC,AACF,CACD,CLnvEuBL,EZVhB,AAAA,EAAI,CAAC,CAAC,EAAE,GAAI,EAAE,CAAC,CYYjBi4C,CAFyBA,EZVN,SAAS,IAAI,GYYnB/xC,UAChB+xC,CAAAA,EAAY/xC,SAASsvC,eAAAA,AAAAA,EAGlB1+B,EAAOtX,EAAAA,EAAQsX,EAAOtX,EAAAA,CAAOQ,EAAOi4C,GAYpCP,EAAAA,AAEA+D,GAAeA,EAAWl8C,GAAAA,EAAe04C,EAAS14C,GAAAA,CAMlDq4C,EAAc,EAAA,CACjBC,EAAW,EAAA,CACZC,EACCG,EAPDj4C,EAAAA,AAAAA,CAAAA,AAA0By7C,GAAgBxD,CAAAA,EAAS14C,GAAAA,CAClDi3C,EAAcK,EAAU,KAAM,CAAC72C,EAAAA,EAU/B03C,GAAYvB,EACZA,EACA8B,EAAU92C,YAAAA,CAAAA,AACMs6C,EACb,CAACA,EAAAA,CACD/D,EACC,KACAO,EAAUlM,UAAAA,CACT3oC,EAAMpE,IAAAA,CAAKi5C,EAAUzxC,UAAAA,EACrB,KACLoxC,EAAAA,AACgB6D,GAEb/D,CAAAA,EACCA,EAAQh4C,GAAAA,CACRu4C,EAAUlM,UAAAA,AAAAA,EArCyB,CAAA,EAuCvC8L,GAIDE,EAAWH,EAAa53C,EAAO63C","sources":["","main.js","lib/index.js","node_modules/preact/dist/preact.module.js","node_modules/preact/src/constants.js","node_modules/preact/src/util.js","node_modules/preact/src/options.js","node_modules/preact/src/create-element.js","node_modules/preact/src/component.js","node_modules/preact/src/diff/props.js","node_modules/preact/src/create-context.js","node_modules/preact/src/diff/children.js","node_modules/preact/src/diff/index.js","node_modules/preact/src/render.js","node_modules/preact/src/clone-element.js","node_modules/preact/src/diff/catch-error.js","node_modules/htm/dist/htm.module.js","node_modules/linkifyjs/dist/linkify.es.js","components/app.js","lib/irc.js","lib/base64.js","lib/client.js","lib/oauth2.js","components/buffer.js","lib/linkify.js","lib/ansi.js","state.js","store.js","components/membership.js","components/buffer-list.js","components/buffer-header.js","components/member-list.js","components/connect-form.js","components/join-form.js","components/help.js","keybindings.js","commands.js","components/network-form.js","components/auth-form.js","components/register-form.js","components/verify-form.js","components/settings-form.js","components/switcher-form.js","components/composer.js","components/scroll-manager.js","components/dialog.js"],"sourcesContent":["\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $b2a774aae58c7b4e$var$n, $b2a774aae58c7b4e$export$41c562ebe57d11e2, $b2a774aae58c7b4e$var$u, $b2a774aae58c7b4e$export$a8257692ac88316c, $b2a774aae58c7b4e$var$i, $b2a774aae58c7b4e$var$r, $b2a774aae58c7b4e$var$o, $b2a774aae58c7b4e$var$e, $b2a774aae58c7b4e$var$f, $b2a774aae58c7b4e$var$c, $b2a774aae58c7b4e$var$s, $b2a774aae58c7b4e$var$a, $b2a774aae58c7b4e$var$h, $b2a774aae58c7b4e$var$p = {}, $b2a774aae58c7b4e$var$v = [], $b2a774aae58c7b4e$var$y = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i, $b2a774aae58c7b4e$var$d = Array.isArray;\nfunction $b2a774aae58c7b4e$var$w(n, l) {\n for(var u in l)n[u] = l[u];\n return n;\n}\nfunction $b2a774aae58c7b4e$var$_(n) {\n n && n.parentNode && n.parentNode.removeChild(n);\n}\nfunction $b2a774aae58c7b4e$export$c8a8987d4410bf2d(l, u, t) {\n var i, r, o, e = {};\n for(o in u)\"key\" == o ? i = u[o] : \"ref\" == o ? r = u[o] : e[o] = u[o];\n if (arguments.length > 2 && (e.children = arguments.length > 3 ? $b2a774aae58c7b4e$var$n.call(arguments, 2) : t), \"function\" == typeof l && null != l.defaultProps) for(o in l.defaultProps)void 0 === e[o] && (e[o] = l.defaultProps[o]);\n return $b2a774aae58c7b4e$var$m(l, e, i, r, null);\n}\nfunction $b2a774aae58c7b4e$var$m(n, t, i, r, o) {\n var e = {\n type: n,\n props: t,\n key: i,\n ref: r,\n __k: null,\n __: null,\n __b: 0,\n __e: null,\n __c: null,\n constructor: void 0,\n __v: null == o ? ++$b2a774aae58c7b4e$var$u : o,\n __i: -1,\n __u: 0\n };\n return null == o && null != $b2a774aae58c7b4e$export$41c562ebe57d11e2.vnode && $b2a774aae58c7b4e$export$41c562ebe57d11e2.vnode(e), e;\n}\nfunction $b2a774aae58c7b4e$export$7d1e3a5e95ceca43() {\n return {\n current: null\n };\n}\nfunction $b2a774aae58c7b4e$export$ffb0004e005737fa(n) {\n return n.children;\n}\nfunction $b2a774aae58c7b4e$export$16fa2f45be04daa8(n, l) {\n this.props = n, this.context = l;\n}\nfunction $b2a774aae58c7b4e$var$C(n, l) {\n if (null == l) return n.__ ? $b2a774aae58c7b4e$var$C(n.__, n.__i + 1) : null;\n for(var u; l < n.__k.length; l++)if (null != (u = n.__k[l]) && null != u.__e) return u.__e;\n return \"function\" == typeof n.type ? $b2a774aae58c7b4e$var$C(n) : null;\n}\nfunction $b2a774aae58c7b4e$var$S(n) {\n var l, u;\n if (null != (n = n.__) && null != n.__c) {\n for(n.__e = n.__c.base = null, l = 0; l < n.__k.length; l++)if (null != (u = n.__k[l]) && null != u.__e) {\n n.__e = n.__c.base = u.__e;\n break;\n }\n return $b2a774aae58c7b4e$var$S(n);\n }\n}\nfunction $b2a774aae58c7b4e$var$M(n) {\n (!n.__d && (n.__d = !0) && $b2a774aae58c7b4e$var$i.push(n) && !$b2a774aae58c7b4e$var$P.__r++ || $b2a774aae58c7b4e$var$r !== $b2a774aae58c7b4e$export$41c562ebe57d11e2.debounceRendering) && (($b2a774aae58c7b4e$var$r = $b2a774aae58c7b4e$export$41c562ebe57d11e2.debounceRendering) || $b2a774aae58c7b4e$var$o)($b2a774aae58c7b4e$var$P);\n}\nfunction $b2a774aae58c7b4e$var$P() {\n var n, u, t, r, o, f, c, s;\n for($b2a774aae58c7b4e$var$i.sort($b2a774aae58c7b4e$var$e); n = $b2a774aae58c7b4e$var$i.shift();)n.__d && (u = $b2a774aae58c7b4e$var$i.length, r = void 0, f = (o = (t = n).__v).__e, c = [], s = [], t.__P && ((r = $b2a774aae58c7b4e$var$w({}, o)).__v = o.__v + 1, $b2a774aae58c7b4e$export$41c562ebe57d11e2.vnode && $b2a774aae58c7b4e$export$41c562ebe57d11e2.vnode(r), $b2a774aae58c7b4e$var$j(t.__P, r, o, t.__n, t.__P.namespaceURI, 32 & o.__u ? [\n f\n ] : null, c, null == f ? $b2a774aae58c7b4e$var$C(o) : f, !!(32 & o.__u), s), r.__v = o.__v, r.__.__k[r.__i] = r, $b2a774aae58c7b4e$var$z(c, r, s), r.__e != f && $b2a774aae58c7b4e$var$S(r)), $b2a774aae58c7b4e$var$i.length > u && $b2a774aae58c7b4e$var$i.sort($b2a774aae58c7b4e$var$e));\n $b2a774aae58c7b4e$var$P.__r = 0;\n}\nfunction $b2a774aae58c7b4e$var$$(n, l, u, t, i, r, o, e, f, c, s) {\n var a, h, y, d, w, _, g = t && t.__k || $b2a774aae58c7b4e$var$v, m = l.length;\n for(f = $b2a774aae58c7b4e$var$I(u, l, g, f, m), a = 0; a < m; a++)null != (y = u.__k[a]) && (h = -1 === y.__i ? $b2a774aae58c7b4e$var$p : g[y.__i] || $b2a774aae58c7b4e$var$p, y.__i = a, _ = $b2a774aae58c7b4e$var$j(n, y, h, i, r, o, e, f, c, s), d = y.__e, y.ref && h.ref != y.ref && (h.ref && $b2a774aae58c7b4e$var$V(h.ref, null, y), s.push(y.ref, y.__c || d, y)), null == w && null != d && (w = d), 4 & y.__u || h.__k === y.__k ? f = $b2a774aae58c7b4e$var$A(y, f, n) : \"function\" == typeof y.type && void 0 !== _ ? f = _ : d && (f = d.nextSibling), y.__u &= -7);\n return u.__e = w, f;\n}\nfunction $b2a774aae58c7b4e$var$I(n, l, u, t, i) {\n var r, o, e, f, c, s = u.length, a = s, h = 0;\n for(n.__k = new Array(i), r = 0; r < i; r++)null != (o = l[r]) && \"boolean\" != typeof o && \"function\" != typeof o ? (f = r + h, (o = n.__k[r] = \"string\" == typeof o || \"number\" == typeof o || \"bigint\" == typeof o || o.constructor == String ? $b2a774aae58c7b4e$var$m(null, o, null, null, null) : $b2a774aae58c7b4e$var$d(o) ? $b2a774aae58c7b4e$var$m($b2a774aae58c7b4e$export$ffb0004e005737fa, {\n children: o\n }, null, null, null) : void 0 === o.constructor && o.__b > 0 ? $b2a774aae58c7b4e$var$m(o.type, o.props, o.key, o.ref ? o.ref : null, o.__v) : o).__ = n, o.__b = n.__b + 1, e = null, -1 !== (c = o.__i = $b2a774aae58c7b4e$var$L(o, u, f, a)) && (a--, (e = u[c]) && (e.__u |= 2)), null == e || null === e.__v ? (-1 == c && h--, \"function\" != typeof o.type && (o.__u |= 4)) : c != f && (c == f - 1 ? h-- : c == f + 1 ? h++ : (c > f ? h-- : h++, o.__u |= 4))) : n.__k[r] = null;\n if (a) for(r = 0; r < s; r++)null != (e = u[r]) && 0 == (2 & e.__u) && (e.__e == t && (t = $b2a774aae58c7b4e$var$C(e)), $b2a774aae58c7b4e$var$q(e, e));\n return t;\n}\nfunction $b2a774aae58c7b4e$var$A(n, l, u) {\n var t, i;\n if (\"function\" == typeof n.type) {\n for(t = n.__k, i = 0; t && i < t.length; i++)t[i] && (t[i].__ = n, l = $b2a774aae58c7b4e$var$A(t[i], l, u));\n return l;\n }\n n.__e != l && (l && n.type && !u.contains(l) && (l = $b2a774aae58c7b4e$var$C(n)), u.insertBefore(n.__e, l || null), l = n.__e);\n do l = l && l.nextSibling;\n while (null != l && 8 == l.nodeType);\n return l;\n}\nfunction $b2a774aae58c7b4e$export$47e4c5b300681277(n, l) {\n return l = l || [], null == n || \"boolean\" == typeof n || ($b2a774aae58c7b4e$var$d(n) ? n.some(function(n) {\n $b2a774aae58c7b4e$export$47e4c5b300681277(n, l);\n }) : l.push(n)), l;\n}\nfunction $b2a774aae58c7b4e$var$L(n, l, u, t) {\n var i, r, o = n.key, e = n.type, f = l[u];\n if (null === f || f && o == f.key && e === f.type && 0 == (2 & f.__u)) return u;\n if (t > (null != f && 0 == (2 & f.__u) ? 1 : 0)) for(i = u - 1, r = u + 1; i >= 0 || r < l.length;){\n if (i >= 0) {\n if ((f = l[i]) && 0 == (2 & f.__u) && o == f.key && e === f.type) return i;\n i--;\n }\n if (r < l.length) {\n if ((f = l[r]) && 0 == (2 & f.__u) && o == f.key && e === f.type) return r;\n r++;\n }\n }\n return -1;\n}\nfunction $b2a774aae58c7b4e$var$T(n, l, u) {\n \"-\" == l[0] ? n.setProperty(l, null == u ? \"\" : u) : n[l] = null == u ? \"\" : \"number\" != typeof u || $b2a774aae58c7b4e$var$y.test(l) ? u : u + \"px\";\n}\nfunction $b2a774aae58c7b4e$var$F(n, l, u, t, i) {\n var r;\n n: if (\"style\" == l) {\n if (\"string\" == typeof u) n.style.cssText = u;\n else {\n if (\"string\" == typeof t && (n.style.cssText = t = \"\"), t) for(l in t)u && l in u || $b2a774aae58c7b4e$var$T(n.style, l, \"\");\n if (u) for(l in u)t && u[l] === t[l] || $b2a774aae58c7b4e$var$T(n.style, l, u[l]);\n }\n } else if (\"o\" == l[0] && \"n\" == l[1]) r = l != (l = l.replace($b2a774aae58c7b4e$var$f, \"$1\")), l = l.toLowerCase() in n || \"onFocusOut\" == l || \"onFocusIn\" == l ? l.toLowerCase().slice(2) : l.slice(2), n.l || (n.l = {}), n.l[l + r] = u, u ? t ? u.u = t.u : (u.u = $b2a774aae58c7b4e$var$c, n.addEventListener(l, r ? $b2a774aae58c7b4e$var$a : $b2a774aae58c7b4e$var$s, r)) : n.removeEventListener(l, r ? $b2a774aae58c7b4e$var$a : $b2a774aae58c7b4e$var$s, r);\n else {\n if (\"http://www.w3.org/2000/svg\" == i) l = l.replace(/xlink(H|:h)/, \"h\").replace(/sName$/, \"s\");\n else if (\"width\" != l && \"height\" != l && \"href\" != l && \"list\" != l && \"form\" != l && \"tabIndex\" != l && \"download\" != l && \"rowSpan\" != l && \"colSpan\" != l && \"role\" != l && \"popover\" != l && l in n) try {\n n[l] = null == u ? \"\" : u;\n break n;\n } catch (n) {}\n \"function\" == typeof u || (null == u || !1 === u && \"-\" != l[4] ? n.removeAttribute(l) : n.setAttribute(l, \"popover\" == l && 1 == u ? \"\" : u));\n }\n}\nfunction $b2a774aae58c7b4e$var$O(n) {\n return function(u) {\n if (this.l) {\n var t = this.l[u.type + n];\n if (null == u.t) u.t = $b2a774aae58c7b4e$var$c++;\n else if (u.t < t.u) return;\n return t($b2a774aae58c7b4e$export$41c562ebe57d11e2.event ? $b2a774aae58c7b4e$export$41c562ebe57d11e2.event(u) : u);\n }\n };\n}\nfunction $b2a774aae58c7b4e$var$j(n, u, t, i, r, o, e, f, c, s) {\n var a, h, p, v, y, g, m, b, C, S, M, P, I, A, H, L, T, F = u.type;\n if (void 0 !== u.constructor) return null;\n 128 & t.__u && (c = !!(32 & t.__u), o = [\n f = u.__e = t.__e\n ]), (a = $b2a774aae58c7b4e$export$41c562ebe57d11e2.__b) && a(u);\n n: if (\"function\" == typeof F) try {\n if (b = u.props, C = \"prototype\" in F && F.prototype.render, S = (a = F.contextType) && i[a.__c], M = a ? S ? S.props.value : a.__ : i, t.__c ? m = (h = u.__c = t.__c).__ = h.__E : (C ? u.__c = h = new F(b, M) : (u.__c = h = new $b2a774aae58c7b4e$export$16fa2f45be04daa8(b, M), h.constructor = F, h.render = $b2a774aae58c7b4e$var$B), S && S.sub(h), h.props = b, h.state || (h.state = {}), h.context = M, h.__n = i, p = h.__d = !0, h.__h = [], h._sb = []), C && null == h.__s && (h.__s = h.state), C && null != F.getDerivedStateFromProps && (h.__s == h.state && (h.__s = $b2a774aae58c7b4e$var$w({}, h.__s)), $b2a774aae58c7b4e$var$w(h.__s, F.getDerivedStateFromProps(b, h.__s))), v = h.props, y = h.state, h.__v = u, p) C && null == F.getDerivedStateFromProps && null != h.componentWillMount && h.componentWillMount(), C && null != h.componentDidMount && h.__h.push(h.componentDidMount);\n else {\n if (C && null == F.getDerivedStateFromProps && b !== v && null != h.componentWillReceiveProps && h.componentWillReceiveProps(b, M), !h.__e && (null != h.shouldComponentUpdate && !1 === h.shouldComponentUpdate(b, h.__s, M) || u.__v == t.__v)) {\n for(u.__v != t.__v && (h.props = b, h.state = h.__s, h.__d = !1), u.__e = t.__e, u.__k = t.__k, u.__k.some(function(n) {\n n && (n.__ = u);\n }), P = 0; P < h._sb.length; P++)h.__h.push(h._sb[P]);\n h._sb = [], h.__h.length && e.push(h);\n break n;\n }\n null != h.componentWillUpdate && h.componentWillUpdate(b, h.__s, M), C && null != h.componentDidUpdate && h.__h.push(function() {\n h.componentDidUpdate(v, y, g);\n });\n }\n if (h.context = M, h.props = b, h.__P = n, h.__e = !1, I = $b2a774aae58c7b4e$export$41c562ebe57d11e2.__r, A = 0, C) {\n for(h.state = h.__s, h.__d = !1, I && I(u), a = h.render(h.props, h.state, h.context), H = 0; H < h._sb.length; H++)h.__h.push(h._sb[H]);\n h._sb = [];\n } else do h.__d = !1, I && I(u), a = h.render(h.props, h.state, h.context), h.state = h.__s;\n while (h.__d && ++A < 25);\n h.state = h.__s, null != h.getChildContext && (i = $b2a774aae58c7b4e$var$w($b2a774aae58c7b4e$var$w({}, i), h.getChildContext())), C && !p && null != h.getSnapshotBeforeUpdate && (g = h.getSnapshotBeforeUpdate(v, y)), f = $b2a774aae58c7b4e$var$$(n, $b2a774aae58c7b4e$var$d(L = null != a && a.type === $b2a774aae58c7b4e$export$ffb0004e005737fa && null == a.key ? a.props.children : a) ? L : [\n L\n ], u, t, i, r, o, e, f, c, s), h.base = u.__e, u.__u &= -161, h.__h.length && e.push(h), m && (h.__E = h.__ = null);\n } catch (n) {\n if (u.__v = null, c || null != o) {\n if (n.then) {\n for(u.__u |= c ? 160 : 128; f && 8 == f.nodeType && f.nextSibling;)f = f.nextSibling;\n o[o.indexOf(f)] = null, u.__e = f;\n } else for(T = o.length; T--;)$b2a774aae58c7b4e$var$_(o[T]);\n } else u.__e = t.__e, u.__k = t.__k;\n $b2a774aae58c7b4e$export$41c562ebe57d11e2.__e(n, u, t);\n }\n else null == o && u.__v == t.__v ? (u.__k = t.__k, u.__e = t.__e) : f = u.__e = $b2a774aae58c7b4e$var$N(t.__e, u, t, i, r, o, e, c, s);\n return (a = $b2a774aae58c7b4e$export$41c562ebe57d11e2.diffed) && a(u), 128 & u.__u ? void 0 : f;\n}\nfunction $b2a774aae58c7b4e$var$z(n, u, t) {\n for(var i = 0; i < t.length; i++)$b2a774aae58c7b4e$var$V(t[i], t[++i], t[++i]);\n $b2a774aae58c7b4e$export$41c562ebe57d11e2.__c && $b2a774aae58c7b4e$export$41c562ebe57d11e2.__c(u, n), n.some(function(u) {\n try {\n n = u.__h, u.__h = [], n.some(function(n) {\n n.call(u);\n });\n } catch (n) {\n $b2a774aae58c7b4e$export$41c562ebe57d11e2.__e(n, u.__v);\n }\n });\n}\nfunction $b2a774aae58c7b4e$var$N(u, t, i, r, o, e, f, c, s) {\n var a, h, v, y, w, g, m, b = i.props, k = t.props, x = t.type;\n if (\"svg\" == x ? o = \"http://www.w3.org/2000/svg\" : \"math\" == x ? o = \"http://www.w3.org/1998/Math/MathML\" : o || (o = \"http://www.w3.org/1999/xhtml\"), null != e) {\n for(a = 0; a < e.length; a++)if ((w = e[a]) && \"setAttribute\" in w == !!x && (x ? w.localName == x : 3 == w.nodeType)) {\n u = w, e[a] = null;\n break;\n }\n }\n if (null == u) {\n if (null == x) return document.createTextNode(k);\n u = document.createElementNS(o, x, k.is && k), c && ($b2a774aae58c7b4e$export$41c562ebe57d11e2.__m && $b2a774aae58c7b4e$export$41c562ebe57d11e2.__m(t, e), c = !1), e = null;\n }\n if (null === x) b === k || c && u.data === k || (u.data = k);\n else {\n if (e = e && $b2a774aae58c7b4e$var$n.call(u.childNodes), b = i.props || $b2a774aae58c7b4e$var$p, !c && null != e) for(b = {}, a = 0; a < u.attributes.length; a++)b[(w = u.attributes[a]).name] = w.value;\n for(a in b)if (w = b[a], \"children\" == a) ;\n else if (\"dangerouslySetInnerHTML\" == a) v = w;\n else if (!(a in k)) {\n if (\"value\" == a && \"defaultValue\" in k || \"checked\" == a && \"defaultChecked\" in k) continue;\n $b2a774aae58c7b4e$var$F(u, a, null, w, o);\n }\n for(a in k)w = k[a], \"children\" == a ? y = w : \"dangerouslySetInnerHTML\" == a ? h = w : \"value\" == a ? g = w : \"checked\" == a ? m = w : c && \"function\" != typeof w || b[a] === w || $b2a774aae58c7b4e$var$F(u, a, w, b[a], o);\n if (h) c || v && (h.__html === v.__html || h.__html === u.innerHTML) || (u.innerHTML = h.__html), t.__k = [];\n else if (v && (u.innerHTML = \"\"), $b2a774aae58c7b4e$var$$(u, $b2a774aae58c7b4e$var$d(y) ? y : [\n y\n ], t, i, r, \"foreignObject\" == x ? \"http://www.w3.org/1999/xhtml\" : o, e, f, e ? e[0] : i.__k && $b2a774aae58c7b4e$var$C(i, 0), c, s), null != e) for(a = e.length; a--;)$b2a774aae58c7b4e$var$_(e[a]);\n c || (a = \"value\", \"progress\" == x && null == g ? u.removeAttribute(\"value\") : void 0 !== g && (g !== u[a] || \"progress\" == x && !g || \"option\" == x && g !== b[a]) && $b2a774aae58c7b4e$var$F(u, a, g, b[a], o), a = \"checked\", void 0 !== m && m !== u[a] && $b2a774aae58c7b4e$var$F(u, a, m, b[a], o));\n }\n return u;\n}\nfunction $b2a774aae58c7b4e$var$V(n, u, t) {\n try {\n if (\"function\" == typeof n) {\n var i = \"function\" == typeof n.__u;\n i && n.__u(), i && null == u || (n.__u = n(u));\n } else n.current = u;\n } catch (n) {\n $b2a774aae58c7b4e$export$41c562ebe57d11e2.__e(n, t);\n }\n}\nfunction $b2a774aae58c7b4e$var$q(n, u, t) {\n var i, r;\n if ($b2a774aae58c7b4e$export$41c562ebe57d11e2.unmount && $b2a774aae58c7b4e$export$41c562ebe57d11e2.unmount(n), (i = n.ref) && (i.current && i.current !== n.__e || $b2a774aae58c7b4e$var$V(i, null, u)), null != (i = n.__c)) {\n if (i.componentWillUnmount) try {\n i.componentWillUnmount();\n } catch (n) {\n $b2a774aae58c7b4e$export$41c562ebe57d11e2.__e(n, u);\n }\n i.base = i.__P = null;\n }\n if (i = n.__k) for(r = 0; r < i.length; r++)i[r] && $b2a774aae58c7b4e$var$q(i[r], u, t || \"function\" != typeof n.type);\n t || $b2a774aae58c7b4e$var$_(n.__e), n.__c = n.__ = n.__e = void 0;\n}\nfunction $b2a774aae58c7b4e$var$B(n, l, u) {\n return this.constructor(n, u);\n}\nfunction $b2a774aae58c7b4e$export$b3890eb0ae9dca99(u, t, i) {\n var r, o, e, f;\n t == document && (t = document.documentElement), $b2a774aae58c7b4e$export$41c562ebe57d11e2.__ && $b2a774aae58c7b4e$export$41c562ebe57d11e2.__(u, t), o = (r = \"function\" == typeof i) ? null : i && i.__k || t.__k, e = [], f = [], $b2a774aae58c7b4e$var$j(t, u = (!r && i || t).__k = $b2a774aae58c7b4e$export$c8a8987d4410bf2d($b2a774aae58c7b4e$export$ffb0004e005737fa, null, [\n u\n ]), o || $b2a774aae58c7b4e$var$p, $b2a774aae58c7b4e$var$p, t.namespaceURI, !r && i ? [\n i\n ] : o ? null : t.firstChild ? $b2a774aae58c7b4e$var$n.call(t.childNodes) : null, e, !r && i ? i : o ? o.__e : t.firstChild, r, f), $b2a774aae58c7b4e$var$z(e, u, f);\n}\nfunction $b2a774aae58c7b4e$export$fa8d919ba61d84db(n, l) {\n $b2a774aae58c7b4e$export$b3890eb0ae9dca99(n, l, $b2a774aae58c7b4e$export$fa8d919ba61d84db);\n}\nfunction $b2a774aae58c7b4e$export$e530037191fcd5d7(l, u, t) {\n var i, r, o, e, f = $b2a774aae58c7b4e$var$w({}, l.props);\n for(o in l.type && l.type.defaultProps && (e = l.type.defaultProps), u)\"key\" == o ? i = u[o] : \"ref\" == o ? r = u[o] : f[o] = void 0 === u[o] && void 0 !== e ? e[o] : u[o];\n return arguments.length > 2 && (f.children = arguments.length > 3 ? $b2a774aae58c7b4e$var$n.call(arguments, 2) : t), $b2a774aae58c7b4e$var$m(l.type, f, i || l.key, r || l.ref, null);\n}\nfunction $b2a774aae58c7b4e$export$fd42f52fd3ae1109(n, l) {\n var u = {\n __c: l = \"__cC\" + $b2a774aae58c7b4e$var$h++,\n __: n,\n Consumer: function(n, l) {\n return n.children(l);\n },\n Provider: function(n) {\n var u, t;\n return this.getChildContext || (u = new Set, (t = {})[l] = this, this.getChildContext = function() {\n return t;\n }, this.componentWillUnmount = function() {\n u = null;\n }, this.shouldComponentUpdate = function(n) {\n this.props.value !== n.value && u.forEach(function(n) {\n n.__e = !0, $b2a774aae58c7b4e$var$M(n);\n });\n }, this.sub = function(n) {\n u.add(n);\n var l = n.componentWillUnmount;\n n.componentWillUnmount = function() {\n u && u.delete(n), l && l.call(n);\n };\n }), n.children;\n }\n };\n return u.Provider.__ = u.Consumer.contextType = u;\n}\n$b2a774aae58c7b4e$var$n = $b2a774aae58c7b4e$var$v.slice, $b2a774aae58c7b4e$export$41c562ebe57d11e2 = {\n __e: function(n, l, u, t) {\n for(var i, r, o; l = l.__;)if ((i = l.__c) && !i.__) try {\n if ((r = i.constructor) && null != r.getDerivedStateFromError && (i.setState(r.getDerivedStateFromError(n)), o = i.__d), null != i.componentDidCatch && (i.componentDidCatch(n, t || {}), o = i.__d), o) return i.__E = i;\n } catch (l) {\n n = l;\n }\n throw n;\n }\n}, $b2a774aae58c7b4e$var$u = 0, $b2a774aae58c7b4e$export$a8257692ac88316c = function(n) {\n return null != n && null == n.constructor;\n}, $b2a774aae58c7b4e$export$16fa2f45be04daa8.prototype.setState = function(n, l) {\n var u;\n u = null != this.__s && this.__s !== this.state ? this.__s : this.__s = $b2a774aae58c7b4e$var$w({}, this.state), \"function\" == typeof n && (n = n($b2a774aae58c7b4e$var$w({}, u), this.props)), n && $b2a774aae58c7b4e$var$w(u, n), null != n && this.__v && (l && this._sb.push(l), $b2a774aae58c7b4e$var$M(this));\n}, $b2a774aae58c7b4e$export$16fa2f45be04daa8.prototype.forceUpdate = function(n) {\n this.__v && (this.__e = !0, n && this.__h.push(n), $b2a774aae58c7b4e$var$M(this));\n}, $b2a774aae58c7b4e$export$16fa2f45be04daa8.prototype.render = $b2a774aae58c7b4e$export$ffb0004e005737fa, $b2a774aae58c7b4e$var$i = [], $b2a774aae58c7b4e$var$o = \"function\" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, $b2a774aae58c7b4e$var$e = function(n, l) {\n return n.__v.__b - l.__v.__b;\n}, $b2a774aae58c7b4e$var$P.__r = 0, $b2a774aae58c7b4e$var$f = /(PointerCapture)$|Capture$/i, $b2a774aae58c7b4e$var$c = 0, $b2a774aae58c7b4e$var$s = $b2a774aae58c7b4e$var$O(!1), $b2a774aae58c7b4e$var$a = $b2a774aae58c7b4e$var$O(!0), $b2a774aae58c7b4e$var$h = 0;\n\n\nvar $ea6c2efa7087cd4a$var$n = function(t, s, r, e) {\n var u;\n s[0] = 0;\n for(var h = 1; h < s.length; h++){\n var p = s[h++], a = s[h] ? (s[0] |= p ? 1 : 2, r[s[h++]]) : s[++h];\n 3 === p ? e[0] = a : 4 === p ? e[1] = Object.assign(e[1] || {}, a) : 5 === p ? (e[1] = e[1] || {})[s[++h]] = a : 6 === p ? e[1][s[++h]] += a + \"\" : p ? (u = t.apply(a, $ea6c2efa7087cd4a$var$n(t, a, r, [\n \"\",\n null\n ])), e.push(u), a[0] ? s[0] |= 2 : (s[h - 2] = 0, s[h] = u)) : e.push(a);\n }\n return e;\n}, $ea6c2efa7087cd4a$var$t = new Map;\nfunction $ea6c2efa7087cd4a$export$2e2bcd8739ae039(s) {\n var r = $ea6c2efa7087cd4a$var$t.get(this);\n return r || (r = new Map, $ea6c2efa7087cd4a$var$t.set(this, r)), (r = $ea6c2efa7087cd4a$var$n(this, r.get(s) || (r.set(s, r = function(n) {\n for(var t, s, r = 1, e = \"\", u = \"\", h = [\n 0\n ], p = function(n) {\n 1 === r && (n || (e = e.replace(/^\\s*\\n\\s*|\\s*\\n\\s*$/g, \"\"))) ? h.push(0, n, e) : 3 === r && (n || e) ? (h.push(3, n, e), r = 2) : 2 === r && \"...\" === e && n ? h.push(4, n, 0) : 2 === r && e && !n ? h.push(5, 0, !0, e) : r >= 5 && ((e || !n && 5 === r) && (h.push(r, 0, e, s), r = 6), n && (h.push(r, n, 0, s), r = 6)), e = \"\";\n }, a = 0; a < n.length; a++){\n a && (1 === r && p(), p(a));\n for(var l = 0; l < n[a].length; l++)t = n[a][l], 1 === r ? \"<\" === t ? (p(), h = [\n h\n ], r = 3) : e += t : 4 === r ? \"--\" === e && \">\" === t ? (r = 1, e = \"\") : e = t + e[0] : u ? t === u ? u = \"\" : e += t : '\"' === t || \"'\" === t ? u = t : \">\" === t ? (p(), r = 1) : r && (\"=\" === t ? (r = 5, s = e, e = \"\") : \"/\" === t && (r < 5 || \">\" === n[a][l + 1]) ? (p(), 3 === r && (h = h[0]), r = h, (h = h[0]).push(2, 0, r), r = 0) : \" \" === t || \"\\t\" === t || \"\\n\" === t || \"\\r\" === t ? (p(), r = 2) : e += t), 3 === r && \"!--\" === e && (r = 4, h = h[0]);\n }\n return p(), h;\n }(s)), r), arguments, [])).length > 1 ? r : r[0];\n}\n\n\nvar $efca0cb2e3ea1e67$exports = {};\n\n$parcel$export($efca0cb2e3ea1e67$exports, \"State\", () => $efca0cb2e3ea1e67$export$7254cc27399e90bd);\n$parcel$export($efca0cb2e3ea1e67$exports, \"regexp\", () => $efca0cb2e3ea1e67$export$efdc1e5bdb609bb);\n$parcel$export($efca0cb2e3ea1e67$exports, \"stringToArray\", () => $efca0cb2e3ea1e67$export$b9ca061da17f2d30);\n$parcel$export($efca0cb2e3ea1e67$exports, \"Options\", () => $efca0cb2e3ea1e67$export$c019608e5b5bb4cb);\n$parcel$export($efca0cb2e3ea1e67$exports, \"options\", () => $efca0cb2e3ea1e67$export$41c562ebe57d11e2);\n$parcel$export($efca0cb2e3ea1e67$exports, \"MultiToken\", () => $efca0cb2e3ea1e67$export$28075db42e06f164);\n$parcel$export($efca0cb2e3ea1e67$exports, \"createTokenClass\", () => $efca0cb2e3ea1e67$export$21042e7280c1baba);\n$parcel$export($efca0cb2e3ea1e67$exports, \"multi\", () => $efca0cb2e3ea1e67$export$13e2537ceeaf8a3a);\n$parcel$export($efca0cb2e3ea1e67$exports, \"reset\", () => $efca0cb2e3ea1e67$export$aad8462122ac592b);\n$parcel$export($efca0cb2e3ea1e67$exports, \"registerTokenPlugin\", () => $efca0cb2e3ea1e67$export$56d1f1cb1f3c0e96);\n$parcel$export($efca0cb2e3ea1e67$exports, \"registerPlugin\", () => $efca0cb2e3ea1e67$export$7612db19fb8beb1e);\n$parcel$export($efca0cb2e3ea1e67$exports, \"registerCustomProtocol\", () => $efca0cb2e3ea1e67$export$821627edc2d26f5f);\n$parcel$export($efca0cb2e3ea1e67$exports, \"init\", () => $efca0cb2e3ea1e67$export$2cd8252107eb640b);\n$parcel$export($efca0cb2e3ea1e67$exports, \"tokenize\", () => $efca0cb2e3ea1e67$export$660b2ee2d4fb4eff);\n$parcel$export($efca0cb2e3ea1e67$exports, \"find\", () => $efca0cb2e3ea1e67$export$71aa6c912b956294);\n$parcel$export($efca0cb2e3ea1e67$exports, \"test\", () => $efca0cb2e3ea1e67$export$e0969da9b8fb378d);\n$parcel$export($efca0cb2e3ea1e67$exports, \"text\", () => $efca0cb2e3ea1e67$export$13e2537ceeaf8a3a);\n// THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY\n// See update-tlds.js for encoding/decoding format\n// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst $efca0cb2e3ea1e67$var$encodedTlds = \"aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2ntley5rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6logistics9properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3ncaster6d0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2psy3ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0america6xi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5m\\xf6gensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2\";\n// Internationalized domain names containing non-ASCII\nconst $efca0cb2e3ea1e67$var$encodedUtlds = \"\\u03B5\\u03BB1\\u03C52\\u0431\\u04331\\u0435\\u043B3\\u0434\\u0435\\u0442\\u04384\\u0435\\u044E2\\u043A\\u0430\\u0442\\u043E\\u043B\\u0438\\u043A6\\u043E\\u043C3\\u043C\\u043A\\u04342\\u043E\\u043D1\\u0441\\u043A\\u0432\\u04306\\u043E\\u043D\\u043B\\u0430\\u0439\\u043D5\\u0440\\u04333\\u0440\\u0443\\u04412\\u04442\\u0441\\u0430\\u0439\\u04423\\u0440\\u04313\\u0443\\u043A\\u04403\\u049B\\u0430\\u04373\\u0570\\u0561\\u05753\\u05D9\\u05E9\\u05E8\\u05D0\\u05DC5\\u05E7\\u05D5\\u05DD3\\u0627\\u0628\\u0648\\u0638\\u0628\\u064A5\\u0631\\u0627\\u0645\\u0643\\u06485\\u0644\\u0627\\u0631\\u062F\\u06464\\u0628\\u062D\\u0631\\u064A\\u06465\\u062C\\u0632\\u0627\\u0626\\u06315\\u0633\\u0639\\u0648\\u062F\\u064A\\u06296\\u0639\\u0644\\u064A\\u0627\\u06465\\u0645\\u063A\\u0631\\u06285\\u0645\\u0627\\u0631\\u0627\\u062A5\\u06CC\\u0631\\u0627\\u06465\\u0628\\u0627\\u0631\\u062A2\\u0632\\u0627\\u06314\\u064A\\u062A\\u06433\\u06BE\\u0627\\u0631\\u062A5\\u062A\\u0648\\u0646\\u06334\\u0633\\u0648\\u062F\\u0627\\u06463\\u0631\\u064A\\u06295\\u0634\\u0628\\u0643\\u06294\\u0639\\u0631\\u0627\\u06422\\u06282\\u0645\\u0627\\u06464\\u0641\\u0644\\u0633\\u0637\\u064A\\u06466\\u0642\\u0637\\u06313\\u0643\\u0627\\u062B\\u0648\\u0644\\u064A\\u06436\\u0648\\u06453\\u0645\\u0635\\u06312\\u0644\\u064A\\u0633\\u064A\\u06275\\u0648\\u0631\\u064A\\u062A\\u0627\\u0646\\u064A\\u06277\\u0642\\u06394\\u0647\\u0645\\u0631\\u0627\\u06475\\u067E\\u0627\\u06A9\\u0633\\u062A\\u0627\\u06467\\u0680\\u0627\\u0631\\u062A4\\u0915\\u0949\\u092E3\\u0928\\u0947\\u091F3\\u092D\\u093E\\u0930\\u09240\\u092E\\u094D3\\u094B\\u09245\\u0938\\u0902\\u0917\\u0920\\u09285\\u09AC\\u09BE\\u0982\\u09B2\\u09BE5\\u09AD\\u09BE\\u09B0\\u09A42\\u09F0\\u09A44\\u0A2D\\u0A3E\\u0A30\\u0A244\\u0AAD\\u0ABE\\u0AB0\\u0AA44\\u0B2D\\u0B3E\\u0B30\\u0B244\\u0B87\\u0BA8\\u0BCD\\u0BA4\\u0BBF\\u0BAF\\u0BBE6\\u0BB2\\u0B99\\u0BCD\\u0B95\\u0BC86\\u0B9A\\u0BBF\\u0B99\\u0BCD\\u0B95\\u0BAA\\u0BCD\\u0BAA\\u0BC2\\u0BB0\\u0BCD11\\u0C2D\\u0C3E\\u0C30\\u0C24\\u0C4D5\\u0CAD\\u0CBE\\u0CB0\\u0CA44\\u0D2D\\u0D3E\\u0D30\\u0D24\\u0D025\\u0DBD\\u0D82\\u0D9A\\u0DCF4\\u0E04\\u0E2D\\u0E213\\u0E44\\u0E17\\u0E223\\u0EA5\\u0EB2\\u0EA73\\u10D2\\u10D42\\u307F\\u3093\\u306A3\\u30A2\\u30DE\\u30BE\\u30F34\\u30AF\\u30E9\\u30A6\\u30C94\\u30B0\\u30FC\\u30B0\\u30EB4\\u30B3\\u30E02\\u30B9\\u30C8\\u30A23\\u30BB\\u30FC\\u30EB3\\u30D5\\u30A1\\u30C3\\u30B7\\u30E7\\u30F36\\u30DD\\u30A4\\u30F3\\u30C84\\u4E16\\u754C2\\u4E2D\\u4FE11\\u56FD1\\u570B1\\u6587\\u7F513\\u4E9A\\u9A6C\\u900A3\\u4F01\\u4E1A2\\u4F5B\\u5C712\\u4FE1\\u606F2\\u5065\\u5EB72\\u516B\\u53662\\u516C\\u53F81\\u76CA2\\u53F0\\u6E7E1\\u70632\\u5546\\u57CE1\\u5E971\\u68072\\u5609\\u91CC0\\u5927\\u9152\\u5E975\\u5728\\u7EBF2\\u5927\\u62FF2\\u5929\\u4E3B\\u65593\\u5A31\\u4E502\\u5BB6\\u96FB2\\u5E7F\\u4E1C2\\u5FAE\\u535A2\\u6148\\u55842\\u6211\\u7231\\u4F603\\u624B\\u673A2\\u62DB\\u80582\\u653F\\u52A11\\u5E9C2\\u65B0\\u52A0\\u57612\\u95FB2\\u65F6\\u5C1A2\\u66F8\\u7C4D2\\u673A\\u67842\\u6DE1\\u9A6C\\u95213\\u6E38\\u620F2\\u6FB3\\u95802\\u70B9\\u770B2\\u79FB\\u52A82\\u7EC4\\u7EC7\\u673A\\u67844\\u7F51\\u57401\\u5E971\\u7AD91\\u7EDC2\\u8054\\u901A2\\u8C37\\u6B4C2\\u8D2D\\u72692\\u901A\\u8CA92\\u96C6\\u56E22\\u96FB\\u8A0A\\u76C8\\u79D14\\u98DE\\u5229\\u6D663\\u98DF\\u54C12\\u9910\\u53852\\u9999\\u683C\\u91CC\\u62C93\\u6E2F2\\uB2F7\\uB1371\\uCEF42\\uC0BC\\uC1312\\uD55C\\uAD6D2\";\n/**\n * @template A\n * @template B\n * @param {A} target\n * @param {B} properties\n * @return {A & B}\n */ const $efca0cb2e3ea1e67$var$assign = (target, properties)=>{\n for(const key in properties)target[key] = properties[key];\n return target;\n};\n/**\n * Finite State Machine generation utilities\n */ /**\n * @template T\n * @typedef {{ [group: string]: T[] }} Collections\n */ /**\n * @typedef {{ [group: string]: true }} Flags\n */ // Keys in scanner Collections instances\nconst $efca0cb2e3ea1e67$var$numeric = 'numeric';\nconst $efca0cb2e3ea1e67$var$ascii = 'ascii';\nconst $efca0cb2e3ea1e67$var$alpha = 'alpha';\nconst $efca0cb2e3ea1e67$var$asciinumeric = 'asciinumeric';\nconst $efca0cb2e3ea1e67$var$alphanumeric = 'alphanumeric';\nconst $efca0cb2e3ea1e67$var$domain = 'domain';\nconst $efca0cb2e3ea1e67$var$emoji = 'emoji';\nconst $efca0cb2e3ea1e67$var$scheme = 'scheme';\nconst $efca0cb2e3ea1e67$var$slashscheme = 'slashscheme';\nconst $efca0cb2e3ea1e67$var$whitespace = 'whitespace';\n/**\n * @template T\n * @param {string} name\n * @param {Collections} groups to register in\n * @returns {T[]} Current list of tokens in the given collection\n */ function $efca0cb2e3ea1e67$var$registerGroup(name, groups) {\n if (!(name in groups)) groups[name] = [];\n return groups[name];\n}\n/**\n * @template T\n * @param {T} t token to add\n * @param {Collections} groups\n * @param {Flags} flags\n */ function $efca0cb2e3ea1e67$var$addToGroups(t, flags, groups) {\n if (flags[$efca0cb2e3ea1e67$var$numeric]) {\n flags[$efca0cb2e3ea1e67$var$asciinumeric] = true;\n flags[$efca0cb2e3ea1e67$var$alphanumeric] = true;\n }\n if (flags[$efca0cb2e3ea1e67$var$ascii]) {\n flags[$efca0cb2e3ea1e67$var$asciinumeric] = true;\n flags[$efca0cb2e3ea1e67$var$alpha] = true;\n }\n if (flags[$efca0cb2e3ea1e67$var$asciinumeric]) flags[$efca0cb2e3ea1e67$var$alphanumeric] = true;\n if (flags[$efca0cb2e3ea1e67$var$alpha]) flags[$efca0cb2e3ea1e67$var$alphanumeric] = true;\n if (flags[$efca0cb2e3ea1e67$var$alphanumeric]) flags[$efca0cb2e3ea1e67$var$domain] = true;\n if (flags[$efca0cb2e3ea1e67$var$emoji]) flags[$efca0cb2e3ea1e67$var$domain] = true;\n for(const k in flags){\n const group = $efca0cb2e3ea1e67$var$registerGroup(k, groups);\n if (group.indexOf(t) < 0) group.push(t);\n }\n}\n/**\n * @template T\n * @param {T} t token to check\n * @param {Collections} groups\n * @returns {Flags} group flags that contain this token\n */ function $efca0cb2e3ea1e67$var$flagsForToken(t, groups) {\n const result = {};\n for(const c in groups)if (groups[c].indexOf(t) >= 0) result[c] = true;\n return result;\n}\n/**\n * @template T\n * @typedef {null | T } Transition\n */ /**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n *\n * The template type T represents the type of the token this state accepts. This\n * should be a string (such as of the token exports in `text.js`) or a\n * MultiToken subclass (from `multi.js`)\n *\n * @template T\n * @param {T} [token] Token that this state emits\n */ function $efca0cb2e3ea1e67$export$7254cc27399e90bd(token = null) {\n // this.n = null; // DEBUG: State name\n /** @type {{ [input: string]: State }} j */ this.j = {}; // IMPLEMENTATION 1\n // this.j = []; // IMPLEMENTATION 2\n /** @type {[RegExp, State][]} jr */ this.jr = [];\n /** @type {?State} jd */ this.jd = null;\n /** @type {?T} t */ this.t = token;\n}\n/**\n * Scanner token groups\n * @type Collections\n */ $efca0cb2e3ea1e67$export$7254cc27399e90bd.groups = {};\n$efca0cb2e3ea1e67$export$7254cc27399e90bd.prototype = {\n accepts () {\n return !!this.t;\n },\n /**\n * Follow an existing transition from the given input to the next state.\n * Does not mutate.\n * @param {string} input character or token type to transition on\n * @returns {?State} the next state, if any\n */ go (input) {\n const state = this;\n const nextState = state.j[input];\n if (nextState) return nextState;\n for(let i = 0; i < state.jr.length; i++){\n const regex = state.jr[i][0];\n const nextState = state.jr[i][1]; // note: might be empty to prevent default jump\n if (nextState && regex.test(input)) return nextState;\n }\n // Nowhere left to jump! Return default, if any\n return state.jd;\n },\n /**\n * Whether the state has a transition for the given input. Set the second\n * argument to true to only look for an exact match (and not a default or\n * regular-expression-based transition)\n * @param {string} input\n * @param {boolean} exactOnly\n */ has (input, exactOnly = false) {\n return exactOnly ? input in this.j : !!this.go(input);\n },\n /**\n * Short for \"transition all\"; create a transition from the array of items\n * in the given list to the same final resulting state.\n * @param {string | string[]} inputs Group of inputs to transition on\n * @param {Transition | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of token groups\n */ ta (inputs, next, flags, groups) {\n for(let i = 0; i < inputs.length; i++)this.tt(inputs[i], next, flags, groups);\n },\n /**\n * Short for \"take regexp transition\"; defines a transition for this state\n * when it encounters a token which matches the given regular expression\n * @param {RegExp} regexp Regular expression transition (populate first)\n * @param {T | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of token groups\n * @returns {State} taken after the given input\n */ tr (regexp, next, flags, groups) {\n groups = groups || $efca0cb2e3ea1e67$export$7254cc27399e90bd.groups;\n let nextState;\n if (next && next.j) nextState = next;\n else {\n // Token with maybe token groups\n nextState = new $efca0cb2e3ea1e67$export$7254cc27399e90bd(next);\n if (flags && groups) $efca0cb2e3ea1e67$var$addToGroups(next, flags, groups);\n }\n this.jr.push([\n regexp,\n nextState\n ]);\n return nextState;\n },\n /**\n * Short for \"take transitions\", will take as many sequential transitions as\n * the length of the given input and returns the\n * resulting final state.\n * @param {string | string[]} input\n * @param {T | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of token groups\n * @returns {State} taken after the given input\n */ ts (input, next, flags, groups) {\n let state = this;\n const len = input.length;\n if (!len) return state;\n for(let i = 0; i < len - 1; i++)state = state.tt(input[i]);\n return state.tt(input[len - 1], next, flags, groups);\n },\n /**\n * Short for \"take transition\", this is a method for building/working with\n * state machines.\n *\n * If a state already exists for the given input, returns it.\n *\n * If a token is specified, that state will emit that token when reached by\n * the linkify engine.\n *\n * If no state exists, it will be initialized with some default transitions\n * that resemble existing default transitions.\n *\n * If a state is given for the second argument, that state will be\n * transitioned to on the given input regardless of what that input\n * previously did.\n *\n * Specify a token group flags to define groups that this token belongs to.\n * The token will be added to corresponding entires in the given groups\n * object.\n *\n * @param {string} input character, token type to transition on\n * @param {T | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of groups\n * @returns {State} taken after the given input\n */ tt (input, next, flags, groups) {\n groups = groups || $efca0cb2e3ea1e67$export$7254cc27399e90bd.groups;\n const state = this;\n // Check if existing state given, just a basic transition\n if (next && next.j) {\n state.j[input] = next;\n return next;\n }\n const t = next;\n // Take the transition with the usual default mechanisms and use that as\n // a template for creating the next state\n let nextState, templateState = state.go(input);\n if (templateState) {\n nextState = new $efca0cb2e3ea1e67$export$7254cc27399e90bd();\n $efca0cb2e3ea1e67$var$assign(nextState.j, templateState.j);\n nextState.jr.push.apply(nextState.jr, templateState.jr);\n nextState.jd = templateState.jd;\n nextState.t = templateState.t;\n } else nextState = new $efca0cb2e3ea1e67$export$7254cc27399e90bd();\n if (t) {\n // Ensure newly token is in the same groups as the old token\n if (groups) {\n if (nextState.t && typeof nextState.t === 'string') {\n const allFlags = $efca0cb2e3ea1e67$var$assign($efca0cb2e3ea1e67$var$flagsForToken(nextState.t, groups), flags);\n $efca0cb2e3ea1e67$var$addToGroups(t, allFlags, groups);\n } else if (flags) $efca0cb2e3ea1e67$var$addToGroups(t, flags, groups);\n }\n nextState.t = t; // overwrite anything that was previously there\n }\n state.j[input] = nextState;\n return nextState;\n }\n};\n// Helper functions to improve minification (not exported outside linkifyjs module)\n/**\n * @template T\n * @param {State} state\n * @param {string | string[]} input\n * @param {Flags} [flags]\n * @param {Collections} [groups]\n */ const $efca0cb2e3ea1e67$var$ta = (state, input, next, flags, groups)=>state.ta(input, next, flags, groups);\n/**\n * @template T\n * @param {State} state\n * @param {RegExp} regexp\n * @param {T | State} [next]\n * @param {Flags} [flags]\n * @param {Collections} [groups]\n */ const $efca0cb2e3ea1e67$var$tr = (state, regexp, next, flags, groups)=>state.tr(regexp, next, flags, groups);\n/**\n * @template T\n * @param {State} state\n * @param {string | string[]} input\n * @param {T | State} [next]\n * @param {Flags} [flags]\n * @param {Collections} [groups]\n */ const $efca0cb2e3ea1e67$var$ts = (state, input, next, flags, groups)=>state.ts(input, next, flags, groups);\n/**\n * @template T\n * @param {State} state\n * @param {string} input\n * @param {T | State} [next]\n * @param {Collections} [groups]\n * @param {Flags} [flags]\n */ const $efca0cb2e3ea1e67$var$tt = (state, input, next, flags, groups)=>state.tt(input, next, flags, groups);\n/******************************************************************************\nText Tokens\nIdentifiers for token outputs from the regexp scanner\n******************************************************************************/ // A valid web domain token\nconst $efca0cb2e3ea1e67$var$WORD = 'WORD'; // only contains a-z\nconst $efca0cb2e3ea1e67$var$UWORD = 'UWORD'; // contains letters other than a-z, used for IDN\nconst $efca0cb2e3ea1e67$var$ASCIINUMERICAL = 'ASCIINUMERICAL'; // contains a-z, 0-9\nconst $efca0cb2e3ea1e67$var$ALPHANUMERICAL = 'ALPHANUMERICAL'; // contains numbers and letters other than a-z, used for IDN\n// Special case of word\nconst $efca0cb2e3ea1e67$var$LOCALHOST = 'LOCALHOST';\n// Valid top-level domain, special case of WORD (see tlds.js)\nconst $efca0cb2e3ea1e67$var$TLD = 'TLD';\n// Valid IDN TLD, special case of UWORD (see tlds.js)\nconst $efca0cb2e3ea1e67$var$UTLD = 'UTLD';\n// The scheme portion of a web URI protocol. Supported types include: `mailto`,\n// `file`, and user-defined custom protocols. Limited to schemes that contain\n// only letters\nconst $efca0cb2e3ea1e67$var$SCHEME = 'SCHEME';\n// Similar to SCHEME, except makes distinction for schemes that must always be\n// followed by `://`, not just `:`. Supported types include `http`, `https`,\n// `ftp`, `ftps`\nconst $efca0cb2e3ea1e67$var$SLASH_SCHEME = 'SLASH_SCHEME';\n// Any sequence of digits 0-9\nconst $efca0cb2e3ea1e67$var$NUM = 'NUM';\n// Any number of consecutive whitespace characters that are not newline\nconst $efca0cb2e3ea1e67$var$WS = 'WS';\n// New line (unix style)\nconst $efca0cb2e3ea1e67$var$NL = 'NL'; // \\n\n// Opening/closing bracket classes\n// TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names\n// Also rename angle brackes to LESSTHAN and GREATER THAN\nconst $efca0cb2e3ea1e67$var$OPENBRACE = 'OPENBRACE'; // {\nconst $efca0cb2e3ea1e67$var$CLOSEBRACE = 'CLOSEBRACE'; // }\nconst $efca0cb2e3ea1e67$var$OPENBRACKET = 'OPENBRACKET'; // [\nconst $efca0cb2e3ea1e67$var$CLOSEBRACKET = 'CLOSEBRACKET'; // ]\nconst $efca0cb2e3ea1e67$var$OPENPAREN = 'OPENPAREN'; // (\nconst $efca0cb2e3ea1e67$var$CLOSEPAREN = 'CLOSEPAREN'; // )\nconst $efca0cb2e3ea1e67$var$OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // <\nconst $efca0cb2e3ea1e67$var$CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // >\nconst $efca0cb2e3ea1e67$var$FULLWIDTHLEFTPAREN = 'FULLWIDTHLEFTPAREN'; // (\nconst $efca0cb2e3ea1e67$var$FULLWIDTHRIGHTPAREN = 'FULLWIDTHRIGHTPAREN'; // )\nconst $efca0cb2e3ea1e67$var$LEFTCORNERBRACKET = 'LEFTCORNERBRACKET'; // 「\nconst $efca0cb2e3ea1e67$var$RIGHTCORNERBRACKET = 'RIGHTCORNERBRACKET'; // 」\nconst $efca0cb2e3ea1e67$var$LEFTWHITECORNERBRACKET = 'LEFTWHITECORNERBRACKET'; // 『\nconst $efca0cb2e3ea1e67$var$RIGHTWHITECORNERBRACKET = 'RIGHTWHITECORNERBRACKET'; // 』\nconst $efca0cb2e3ea1e67$var$FULLWIDTHLESSTHAN = 'FULLWIDTHLESSTHAN'; // <\nconst $efca0cb2e3ea1e67$var$FULLWIDTHGREATERTHAN = 'FULLWIDTHGREATERTHAN'; // >\n// Various symbols\nconst $efca0cb2e3ea1e67$var$AMPERSAND = 'AMPERSAND'; // &\nconst $efca0cb2e3ea1e67$var$APOSTROPHE = 'APOSTROPHE'; // '\nconst $efca0cb2e3ea1e67$var$ASTERISK = 'ASTERISK'; // *\nconst $efca0cb2e3ea1e67$var$AT = 'AT'; // @\nconst $efca0cb2e3ea1e67$var$BACKSLASH = 'BACKSLASH'; // \\\nconst $efca0cb2e3ea1e67$var$BACKTICK = 'BACKTICK'; // `\nconst $efca0cb2e3ea1e67$var$CARET = 'CARET'; // ^\nconst $efca0cb2e3ea1e67$var$COLON = 'COLON'; // :\nconst $efca0cb2e3ea1e67$var$COMMA = 'COMMA'; // ,\nconst $efca0cb2e3ea1e67$var$DOLLAR = 'DOLLAR'; // $\nconst $efca0cb2e3ea1e67$var$DOT = 'DOT'; // .\nconst $efca0cb2e3ea1e67$var$EQUALS = 'EQUALS'; // =\nconst $efca0cb2e3ea1e67$var$EXCLAMATION = 'EXCLAMATION'; // !\nconst $efca0cb2e3ea1e67$var$HYPHEN = 'HYPHEN'; // -\nconst $efca0cb2e3ea1e67$var$PERCENT = 'PERCENT'; // %\nconst $efca0cb2e3ea1e67$var$PIPE = 'PIPE'; // |\nconst $efca0cb2e3ea1e67$var$PLUS = 'PLUS'; // +\nconst $efca0cb2e3ea1e67$var$POUND = 'POUND'; // #\nconst $efca0cb2e3ea1e67$var$QUERY = 'QUERY'; // ?\nconst $efca0cb2e3ea1e67$var$QUOTE = 'QUOTE'; // \"\nconst $efca0cb2e3ea1e67$var$FULLWIDTHMIDDLEDOT = 'FULLWIDTHMIDDLEDOT'; // ・\nconst $efca0cb2e3ea1e67$var$SEMI = 'SEMI'; // ;\nconst $efca0cb2e3ea1e67$var$SLASH = 'SLASH'; // /\nconst $efca0cb2e3ea1e67$var$TILDE = 'TILDE'; // ~\nconst $efca0cb2e3ea1e67$var$UNDERSCORE = 'UNDERSCORE'; // _\n// Emoji symbol\nconst $efca0cb2e3ea1e67$var$EMOJI$1 = 'EMOJI';\n// Default token - anything that is not one of the above\nconst $efca0cb2e3ea1e67$var$SYM = 'SYM';\nvar $efca0cb2e3ea1e67$var$tk = /*#__PURE__*/ Object.freeze({\n __proto__: null,\n WORD: $efca0cb2e3ea1e67$var$WORD,\n UWORD: $efca0cb2e3ea1e67$var$UWORD,\n ASCIINUMERICAL: $efca0cb2e3ea1e67$var$ASCIINUMERICAL,\n ALPHANUMERICAL: $efca0cb2e3ea1e67$var$ALPHANUMERICAL,\n LOCALHOST: $efca0cb2e3ea1e67$var$LOCALHOST,\n TLD: $efca0cb2e3ea1e67$var$TLD,\n UTLD: $efca0cb2e3ea1e67$var$UTLD,\n SCHEME: $efca0cb2e3ea1e67$var$SCHEME,\n SLASH_SCHEME: $efca0cb2e3ea1e67$var$SLASH_SCHEME,\n NUM: $efca0cb2e3ea1e67$var$NUM,\n WS: $efca0cb2e3ea1e67$var$WS,\n NL: $efca0cb2e3ea1e67$var$NL,\n OPENBRACE: $efca0cb2e3ea1e67$var$OPENBRACE,\n CLOSEBRACE: $efca0cb2e3ea1e67$var$CLOSEBRACE,\n OPENBRACKET: $efca0cb2e3ea1e67$var$OPENBRACKET,\n CLOSEBRACKET: $efca0cb2e3ea1e67$var$CLOSEBRACKET,\n OPENPAREN: $efca0cb2e3ea1e67$var$OPENPAREN,\n CLOSEPAREN: $efca0cb2e3ea1e67$var$CLOSEPAREN,\n OPENANGLEBRACKET: $efca0cb2e3ea1e67$var$OPENANGLEBRACKET,\n CLOSEANGLEBRACKET: $efca0cb2e3ea1e67$var$CLOSEANGLEBRACKET,\n FULLWIDTHLEFTPAREN: $efca0cb2e3ea1e67$var$FULLWIDTHLEFTPAREN,\n FULLWIDTHRIGHTPAREN: $efca0cb2e3ea1e67$var$FULLWIDTHRIGHTPAREN,\n LEFTCORNERBRACKET: $efca0cb2e3ea1e67$var$LEFTCORNERBRACKET,\n RIGHTCORNERBRACKET: $efca0cb2e3ea1e67$var$RIGHTCORNERBRACKET,\n LEFTWHITECORNERBRACKET: $efca0cb2e3ea1e67$var$LEFTWHITECORNERBRACKET,\n RIGHTWHITECORNERBRACKET: $efca0cb2e3ea1e67$var$RIGHTWHITECORNERBRACKET,\n FULLWIDTHLESSTHAN: $efca0cb2e3ea1e67$var$FULLWIDTHLESSTHAN,\n FULLWIDTHGREATERTHAN: $efca0cb2e3ea1e67$var$FULLWIDTHGREATERTHAN,\n AMPERSAND: $efca0cb2e3ea1e67$var$AMPERSAND,\n APOSTROPHE: $efca0cb2e3ea1e67$var$APOSTROPHE,\n ASTERISK: $efca0cb2e3ea1e67$var$ASTERISK,\n AT: $efca0cb2e3ea1e67$var$AT,\n BACKSLASH: $efca0cb2e3ea1e67$var$BACKSLASH,\n BACKTICK: $efca0cb2e3ea1e67$var$BACKTICK,\n CARET: $efca0cb2e3ea1e67$var$CARET,\n COLON: $efca0cb2e3ea1e67$var$COLON,\n COMMA: $efca0cb2e3ea1e67$var$COMMA,\n DOLLAR: $efca0cb2e3ea1e67$var$DOLLAR,\n DOT: $efca0cb2e3ea1e67$var$DOT,\n EQUALS: $efca0cb2e3ea1e67$var$EQUALS,\n EXCLAMATION: $efca0cb2e3ea1e67$var$EXCLAMATION,\n HYPHEN: $efca0cb2e3ea1e67$var$HYPHEN,\n PERCENT: $efca0cb2e3ea1e67$var$PERCENT,\n PIPE: $efca0cb2e3ea1e67$var$PIPE,\n PLUS: $efca0cb2e3ea1e67$var$PLUS,\n POUND: $efca0cb2e3ea1e67$var$POUND,\n QUERY: $efca0cb2e3ea1e67$var$QUERY,\n QUOTE: $efca0cb2e3ea1e67$var$QUOTE,\n FULLWIDTHMIDDLEDOT: $efca0cb2e3ea1e67$var$FULLWIDTHMIDDLEDOT,\n SEMI: $efca0cb2e3ea1e67$var$SEMI,\n SLASH: $efca0cb2e3ea1e67$var$SLASH,\n TILDE: $efca0cb2e3ea1e67$var$TILDE,\n UNDERSCORE: $efca0cb2e3ea1e67$var$UNDERSCORE,\n EMOJI: $efca0cb2e3ea1e67$var$EMOJI$1,\n SYM: $efca0cb2e3ea1e67$var$SYM\n});\n// Note that these two Unicode ones expand into a really big one with Babel\nconst $efca0cb2e3ea1e67$var$ASCII_LETTER = /[a-z]/;\nconst $efca0cb2e3ea1e67$var$LETTER = /\\p{L}/u; // Any Unicode character with letter data type\nconst $efca0cb2e3ea1e67$var$EMOJI = /\\p{Emoji}/u; // Any Unicode emoji character\nconst $efca0cb2e3ea1e67$var$EMOJI_VARIATION$1 = /\\ufe0f/;\nconst $efca0cb2e3ea1e67$var$DIGIT = /\\d/;\nconst $efca0cb2e3ea1e67$var$SPACE = /\\s/;\nvar $efca0cb2e3ea1e67$export$efdc1e5bdb609bb = /*#__PURE__*/ Object.freeze({\n __proto__: null,\n ASCII_LETTER: $efca0cb2e3ea1e67$var$ASCII_LETTER,\n LETTER: $efca0cb2e3ea1e67$var$LETTER,\n EMOJI: $efca0cb2e3ea1e67$var$EMOJI,\n EMOJI_VARIATION: $efca0cb2e3ea1e67$var$EMOJI_VARIATION$1,\n DIGIT: $efca0cb2e3ea1e67$var$DIGIT,\n SPACE: $efca0cb2e3ea1e67$var$SPACE\n});\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n*/ const $efca0cb2e3ea1e67$var$CR = '\\r'; // carriage-return character\nconst $efca0cb2e3ea1e67$var$LF = '\\n'; // line-feed character\nconst $efca0cb2e3ea1e67$var$EMOJI_VARIATION = '\\ufe0f'; // Variation selector, follows heart and others\nconst $efca0cb2e3ea1e67$var$EMOJI_JOINER = '\\u200d'; // zero-width joiner\nconst $efca0cb2e3ea1e67$var$OBJECT_REPLACEMENT = '\\ufffc'; // whitespace placeholder that sometimes appears in rich text editors\nlet $efca0cb2e3ea1e67$var$tlds = null, $efca0cb2e3ea1e67$var$utlds = null; // don't change so only have to be computed once\n/**\n * Scanner output token:\n * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD')\n * - `v` is the value of the token (e.g., '123', '❤️', 'com')\n * - `s` is the start index of the token in the original string\n * - `e` is the end index of the token in the original string\n * @typedef {{t: string, v: string, s: number, e: number}} Token\n */ /**\n * @template T\n * @typedef {{ [collection: string]: T[] }} Collections\n */ /**\n * Initialize the scanner character-based state machine for the given start\n * state\n * @param {[string, boolean][]} customSchemes List of custom schemes, where each\n * item is a length-2 tuple with the first element set to the string scheme, and\n * the second element set to `true` if the `://` after the scheme is optional\n */ function $efca0cb2e3ea1e67$var$init$2(customSchemes = []) {\n // Frequently used states (name argument removed during minification)\n /** @type Collections */ const groups = {}; // of tokens\n $efca0cb2e3ea1e67$export$7254cc27399e90bd.groups = groups;\n /** @type State */ const Start = new $efca0cb2e3ea1e67$export$7254cc27399e90bd();\n if ($efca0cb2e3ea1e67$var$tlds == null) $efca0cb2e3ea1e67$var$tlds = $efca0cb2e3ea1e67$var$decodeTlds($efca0cb2e3ea1e67$var$encodedTlds);\n if ($efca0cb2e3ea1e67$var$utlds == null) $efca0cb2e3ea1e67$var$utlds = $efca0cb2e3ea1e67$var$decodeTlds($efca0cb2e3ea1e67$var$encodedUtlds);\n // States for special URL symbols that accept immediately after start\n $efca0cb2e3ea1e67$var$tt(Start, \"'\", $efca0cb2e3ea1e67$var$APOSTROPHE);\n $efca0cb2e3ea1e67$var$tt(Start, '{', $efca0cb2e3ea1e67$var$OPENBRACE);\n $efca0cb2e3ea1e67$var$tt(Start, '}', $efca0cb2e3ea1e67$var$CLOSEBRACE);\n $efca0cb2e3ea1e67$var$tt(Start, '[', $efca0cb2e3ea1e67$var$OPENBRACKET);\n $efca0cb2e3ea1e67$var$tt(Start, ']', $efca0cb2e3ea1e67$var$CLOSEBRACKET);\n $efca0cb2e3ea1e67$var$tt(Start, '(', $efca0cb2e3ea1e67$var$OPENPAREN);\n $efca0cb2e3ea1e67$var$tt(Start, ')', $efca0cb2e3ea1e67$var$CLOSEPAREN);\n $efca0cb2e3ea1e67$var$tt(Start, '<', $efca0cb2e3ea1e67$var$OPENANGLEBRACKET);\n $efca0cb2e3ea1e67$var$tt(Start, '>', $efca0cb2e3ea1e67$var$CLOSEANGLEBRACKET);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\uFF08\", $efca0cb2e3ea1e67$var$FULLWIDTHLEFTPAREN);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\uFF09\", $efca0cb2e3ea1e67$var$FULLWIDTHRIGHTPAREN);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\u300C\", $efca0cb2e3ea1e67$var$LEFTCORNERBRACKET);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\u300D\", $efca0cb2e3ea1e67$var$RIGHTCORNERBRACKET);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\u300E\", $efca0cb2e3ea1e67$var$LEFTWHITECORNERBRACKET);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\u300F\", $efca0cb2e3ea1e67$var$RIGHTWHITECORNERBRACKET);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\uFF1C\", $efca0cb2e3ea1e67$var$FULLWIDTHLESSTHAN);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\uFF1E\", $efca0cb2e3ea1e67$var$FULLWIDTHGREATERTHAN);\n $efca0cb2e3ea1e67$var$tt(Start, '&', $efca0cb2e3ea1e67$var$AMPERSAND);\n $efca0cb2e3ea1e67$var$tt(Start, '*', $efca0cb2e3ea1e67$var$ASTERISK);\n $efca0cb2e3ea1e67$var$tt(Start, '@', $efca0cb2e3ea1e67$var$AT);\n $efca0cb2e3ea1e67$var$tt(Start, '`', $efca0cb2e3ea1e67$var$BACKTICK);\n $efca0cb2e3ea1e67$var$tt(Start, '^', $efca0cb2e3ea1e67$var$CARET);\n $efca0cb2e3ea1e67$var$tt(Start, ':', $efca0cb2e3ea1e67$var$COLON);\n $efca0cb2e3ea1e67$var$tt(Start, ',', $efca0cb2e3ea1e67$var$COMMA);\n $efca0cb2e3ea1e67$var$tt(Start, '$', $efca0cb2e3ea1e67$var$DOLLAR);\n $efca0cb2e3ea1e67$var$tt(Start, '.', $efca0cb2e3ea1e67$var$DOT);\n $efca0cb2e3ea1e67$var$tt(Start, '=', $efca0cb2e3ea1e67$var$EQUALS);\n $efca0cb2e3ea1e67$var$tt(Start, '!', $efca0cb2e3ea1e67$var$EXCLAMATION);\n $efca0cb2e3ea1e67$var$tt(Start, '-', $efca0cb2e3ea1e67$var$HYPHEN);\n $efca0cb2e3ea1e67$var$tt(Start, '%', $efca0cb2e3ea1e67$var$PERCENT);\n $efca0cb2e3ea1e67$var$tt(Start, '|', $efca0cb2e3ea1e67$var$PIPE);\n $efca0cb2e3ea1e67$var$tt(Start, '+', $efca0cb2e3ea1e67$var$PLUS);\n $efca0cb2e3ea1e67$var$tt(Start, '#', $efca0cb2e3ea1e67$var$POUND);\n $efca0cb2e3ea1e67$var$tt(Start, '?', $efca0cb2e3ea1e67$var$QUERY);\n $efca0cb2e3ea1e67$var$tt(Start, '\"', $efca0cb2e3ea1e67$var$QUOTE);\n $efca0cb2e3ea1e67$var$tt(Start, '/', $efca0cb2e3ea1e67$var$SLASH);\n $efca0cb2e3ea1e67$var$tt(Start, ';', $efca0cb2e3ea1e67$var$SEMI);\n $efca0cb2e3ea1e67$var$tt(Start, '~', $efca0cb2e3ea1e67$var$TILDE);\n $efca0cb2e3ea1e67$var$tt(Start, '_', $efca0cb2e3ea1e67$var$UNDERSCORE);\n $efca0cb2e3ea1e67$var$tt(Start, '\\\\', $efca0cb2e3ea1e67$var$BACKSLASH);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\u30FB\", $efca0cb2e3ea1e67$var$FULLWIDTHMIDDLEDOT);\n const Num = $efca0cb2e3ea1e67$var$tr(Start, $efca0cb2e3ea1e67$var$DIGIT, $efca0cb2e3ea1e67$var$NUM, {\n [$efca0cb2e3ea1e67$var$numeric]: true\n });\n $efca0cb2e3ea1e67$var$tr(Num, $efca0cb2e3ea1e67$var$DIGIT, Num);\n const Asciinumeric = $efca0cb2e3ea1e67$var$tr(Num, $efca0cb2e3ea1e67$var$ASCII_LETTER, $efca0cb2e3ea1e67$var$ASCIINUMERICAL, {\n [$efca0cb2e3ea1e67$var$asciinumeric]: true\n });\n const Alphanumeric = $efca0cb2e3ea1e67$var$tr(Num, $efca0cb2e3ea1e67$var$LETTER, $efca0cb2e3ea1e67$var$ALPHANUMERICAL, {\n [$efca0cb2e3ea1e67$var$alphanumeric]: true\n });\n // State which emits a word token\n const Word = $efca0cb2e3ea1e67$var$tr(Start, $efca0cb2e3ea1e67$var$ASCII_LETTER, $efca0cb2e3ea1e67$var$WORD, {\n [$efca0cb2e3ea1e67$var$ascii]: true\n });\n $efca0cb2e3ea1e67$var$tr(Word, $efca0cb2e3ea1e67$var$DIGIT, Asciinumeric);\n $efca0cb2e3ea1e67$var$tr(Word, $efca0cb2e3ea1e67$var$ASCII_LETTER, Word);\n $efca0cb2e3ea1e67$var$tr(Asciinumeric, $efca0cb2e3ea1e67$var$DIGIT, Asciinumeric);\n $efca0cb2e3ea1e67$var$tr(Asciinumeric, $efca0cb2e3ea1e67$var$ASCII_LETTER, Asciinumeric);\n // Same as previous, but specific to non-fsm.ascii alphabet words\n const UWord = $efca0cb2e3ea1e67$var$tr(Start, $efca0cb2e3ea1e67$var$LETTER, $efca0cb2e3ea1e67$var$UWORD, {\n [$efca0cb2e3ea1e67$var$alpha]: true\n });\n $efca0cb2e3ea1e67$var$tr(UWord, $efca0cb2e3ea1e67$var$ASCII_LETTER); // Non-accepting\n $efca0cb2e3ea1e67$var$tr(UWord, $efca0cb2e3ea1e67$var$DIGIT, Alphanumeric);\n $efca0cb2e3ea1e67$var$tr(UWord, $efca0cb2e3ea1e67$var$LETTER, UWord);\n $efca0cb2e3ea1e67$var$tr(Alphanumeric, $efca0cb2e3ea1e67$var$DIGIT, Alphanumeric);\n $efca0cb2e3ea1e67$var$tr(Alphanumeric, $efca0cb2e3ea1e67$var$ASCII_LETTER); // Non-accepting\n $efca0cb2e3ea1e67$var$tr(Alphanumeric, $efca0cb2e3ea1e67$var$LETTER, Alphanumeric); // Non-accepting\n // Whitespace jumps\n // Tokens of only non-newline whitespace are arbitrarily long\n // If any whitespace except newline, more whitespace!\n const Nl = $efca0cb2e3ea1e67$var$tt(Start, $efca0cb2e3ea1e67$var$LF, $efca0cb2e3ea1e67$var$NL, {\n [$efca0cb2e3ea1e67$var$whitespace]: true\n });\n const Cr = $efca0cb2e3ea1e67$var$tt(Start, $efca0cb2e3ea1e67$var$CR, $efca0cb2e3ea1e67$var$WS, {\n [$efca0cb2e3ea1e67$var$whitespace]: true\n });\n const Ws = $efca0cb2e3ea1e67$var$tr(Start, $efca0cb2e3ea1e67$var$SPACE, $efca0cb2e3ea1e67$var$WS, {\n [$efca0cb2e3ea1e67$var$whitespace]: true\n });\n $efca0cb2e3ea1e67$var$tt(Start, $efca0cb2e3ea1e67$var$OBJECT_REPLACEMENT, Ws);\n $efca0cb2e3ea1e67$var$tt(Cr, $efca0cb2e3ea1e67$var$LF, Nl); // \\r\\n\n $efca0cb2e3ea1e67$var$tt(Cr, $efca0cb2e3ea1e67$var$OBJECT_REPLACEMENT, Ws);\n $efca0cb2e3ea1e67$var$tr(Cr, $efca0cb2e3ea1e67$var$SPACE, Ws);\n $efca0cb2e3ea1e67$var$tt(Ws, $efca0cb2e3ea1e67$var$CR); // non-accepting state to avoid mixing whitespaces\n $efca0cb2e3ea1e67$var$tt(Ws, $efca0cb2e3ea1e67$var$LF); // non-accepting state to avoid mixing whitespaces\n $efca0cb2e3ea1e67$var$tr(Ws, $efca0cb2e3ea1e67$var$SPACE, Ws);\n $efca0cb2e3ea1e67$var$tt(Ws, $efca0cb2e3ea1e67$var$OBJECT_REPLACEMENT, Ws);\n // Emoji tokens. They are not grouped by the scanner except in cases where a\n // zero-width joiner is present\n const Emoji = $efca0cb2e3ea1e67$var$tr(Start, $efca0cb2e3ea1e67$var$EMOJI, $efca0cb2e3ea1e67$var$EMOJI$1, {\n [$efca0cb2e3ea1e67$var$emoji]: true\n });\n $efca0cb2e3ea1e67$var$tt(Emoji, '#'); // no transition, emoji regex seems to match #\n $efca0cb2e3ea1e67$var$tr(Emoji, $efca0cb2e3ea1e67$var$EMOJI, Emoji);\n $efca0cb2e3ea1e67$var$tt(Emoji, $efca0cb2e3ea1e67$var$EMOJI_VARIATION, Emoji);\n // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy\n const EmojiJoiner = $efca0cb2e3ea1e67$var$tt(Emoji, $efca0cb2e3ea1e67$var$EMOJI_JOINER);\n $efca0cb2e3ea1e67$var$tt(EmojiJoiner, '#');\n $efca0cb2e3ea1e67$var$tr(EmojiJoiner, $efca0cb2e3ea1e67$var$EMOJI, Emoji);\n // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy\n // Generates states for top-level domains\n // Note that this is most accurate when tlds are in alphabetical order\n const wordjr = [\n [\n $efca0cb2e3ea1e67$var$ASCII_LETTER,\n Word\n ],\n [\n $efca0cb2e3ea1e67$var$DIGIT,\n Asciinumeric\n ]\n ];\n const uwordjr = [\n [\n $efca0cb2e3ea1e67$var$ASCII_LETTER,\n null\n ],\n [\n $efca0cb2e3ea1e67$var$LETTER,\n UWord\n ],\n [\n $efca0cb2e3ea1e67$var$DIGIT,\n Alphanumeric\n ]\n ];\n for(let i = 0; i < $efca0cb2e3ea1e67$var$tlds.length; i++)$efca0cb2e3ea1e67$var$fastts(Start, $efca0cb2e3ea1e67$var$tlds[i], $efca0cb2e3ea1e67$var$TLD, $efca0cb2e3ea1e67$var$WORD, wordjr);\n for(let i = 0; i < $efca0cb2e3ea1e67$var$utlds.length; i++)$efca0cb2e3ea1e67$var$fastts(Start, $efca0cb2e3ea1e67$var$utlds[i], $efca0cb2e3ea1e67$var$UTLD, $efca0cb2e3ea1e67$var$UWORD, uwordjr);\n $efca0cb2e3ea1e67$var$addToGroups($efca0cb2e3ea1e67$var$TLD, {\n tld: true,\n ascii: true\n }, groups);\n $efca0cb2e3ea1e67$var$addToGroups($efca0cb2e3ea1e67$var$UTLD, {\n utld: true,\n alpha: true\n }, groups);\n // Collect the states generated by different protocols. NOTE: If any new TLDs\n // get added that are also protocols, set the token to be the same as the\n // protocol to ensure parsing works as expected.\n $efca0cb2e3ea1e67$var$fastts(Start, 'file', $efca0cb2e3ea1e67$var$SCHEME, $efca0cb2e3ea1e67$var$WORD, wordjr);\n $efca0cb2e3ea1e67$var$fastts(Start, 'mailto', $efca0cb2e3ea1e67$var$SCHEME, $efca0cb2e3ea1e67$var$WORD, wordjr);\n $efca0cb2e3ea1e67$var$fastts(Start, 'http', $efca0cb2e3ea1e67$var$SLASH_SCHEME, $efca0cb2e3ea1e67$var$WORD, wordjr);\n $efca0cb2e3ea1e67$var$fastts(Start, 'https', $efca0cb2e3ea1e67$var$SLASH_SCHEME, $efca0cb2e3ea1e67$var$WORD, wordjr);\n $efca0cb2e3ea1e67$var$fastts(Start, 'ftp', $efca0cb2e3ea1e67$var$SLASH_SCHEME, $efca0cb2e3ea1e67$var$WORD, wordjr);\n $efca0cb2e3ea1e67$var$fastts(Start, 'ftps', $efca0cb2e3ea1e67$var$SLASH_SCHEME, $efca0cb2e3ea1e67$var$WORD, wordjr);\n $efca0cb2e3ea1e67$var$addToGroups($efca0cb2e3ea1e67$var$SCHEME, {\n scheme: true,\n ascii: true\n }, groups);\n $efca0cb2e3ea1e67$var$addToGroups($efca0cb2e3ea1e67$var$SLASH_SCHEME, {\n slashscheme: true,\n ascii: true\n }, groups);\n // Register custom schemes. Assumes each scheme is asciinumeric with hyphens\n customSchemes = customSchemes.sort((a, b)=>a[0] > b[0] ? 1 : -1);\n for(let i = 0; i < customSchemes.length; i++){\n const sch = customSchemes[i][0];\n const optionalSlashSlash = customSchemes[i][1];\n const flags = optionalSlashSlash ? {\n [$efca0cb2e3ea1e67$var$scheme]: true\n } : {\n [$efca0cb2e3ea1e67$var$slashscheme]: true\n };\n if (sch.indexOf('-') >= 0) flags[$efca0cb2e3ea1e67$var$domain] = true;\n else if (!$efca0cb2e3ea1e67$var$ASCII_LETTER.test(sch)) flags[$efca0cb2e3ea1e67$var$numeric] = true; // numbers only\n else if ($efca0cb2e3ea1e67$var$DIGIT.test(sch)) flags[$efca0cb2e3ea1e67$var$asciinumeric] = true;\n else flags[$efca0cb2e3ea1e67$var$ascii] = true;\n $efca0cb2e3ea1e67$var$ts(Start, sch, sch, flags);\n }\n // Localhost token\n $efca0cb2e3ea1e67$var$ts(Start, 'localhost', $efca0cb2e3ea1e67$var$LOCALHOST, {\n ascii: true\n });\n // Set default transition for start state (some symbol)\n Start.jd = new $efca0cb2e3ea1e67$export$7254cc27399e90bd($efca0cb2e3ea1e67$var$SYM);\n return {\n start: Start,\n tokens: $efca0cb2e3ea1e67$var$assign({\n groups: groups\n }, $efca0cb2e3ea1e67$var$tk)\n };\n}\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {Token[]} list of tokens, each with a type and value\n*/ function $efca0cb2e3ea1e67$var$run$1(start, str) {\n // State machine is not case sensitive, so input is tokenized in lowercased\n // form (still returns regular case). Uses selective `toLowerCase` because\n // lowercasing the entire string causes the length and character position to\n // vary in some non-English strings with V8-based runtimes.\n const iterable = $efca0cb2e3ea1e67$export$b9ca061da17f2d30(str.replace(/[A-Z]/g, (c)=>c.toLowerCase()));\n const charCount = iterable.length; // <= len if there are emojis, etc\n const tokens = []; // return value\n // cursor through the string itself, accounting for characters that have\n // width with length 2 such as emojis\n let cursor = 0;\n // Cursor through the array-representation of the string\n let charCursor = 0;\n // Tokenize the string\n while(charCursor < charCount){\n let state = start;\n let nextState = null;\n let tokenLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n let charsSinceAccepts = -1;\n while(charCursor < charCount && (nextState = state.go(iterable[charCursor]))){\n state = nextState;\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n charsSinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts += iterable[charCursor].length;\n charsSinceAccepts++;\n }\n tokenLength += iterable[charCursor].length;\n cursor += iterable[charCursor].length;\n charCursor++;\n }\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n charCursor -= charsSinceAccepts;\n tokenLength -= sinceAccepts;\n // No more jumps, just make a new token from the last accepting one\n tokens.push({\n t: latestAccepting.t,\n // token type/name\n v: str.slice(cursor - tokenLength, cursor),\n // string value\n s: cursor - tokenLength,\n // start index\n e: cursor // end index (excluding)\n });\n }\n return tokens;\n}\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */ function $efca0cb2e3ea1e67$export$b9ca061da17f2d30(str) {\n const result = [];\n const len = str.length;\n let index = 0;\n while(index < len){\n let first = str.charCodeAt(index);\n let second;\n let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n : str.slice(index, index + 2); // two-index characters\n result.push(char);\n index += char.length;\n }\n return result;\n}\n/**\n * Fast version of ts function for when transition defaults are well known\n * @param {State} state\n * @param {string} input\n * @param {string} t\n * @param {string} defaultt\n * @param {[RegExp, State][]} jr\n * @returns {State}\n */ function $efca0cb2e3ea1e67$var$fastts(state, input, t, defaultt, jr) {\n let next;\n const len = input.length;\n for(let i = 0; i < len - 1; i++){\n const char = input[i];\n if (state.j[char]) next = state.j[char];\n else {\n next = new $efca0cb2e3ea1e67$export$7254cc27399e90bd(defaultt);\n next.jr = jr.slice();\n state.j[char] = next;\n }\n state = next;\n }\n next = new $efca0cb2e3ea1e67$export$7254cc27399e90bd(t);\n next.jr = jr.slice();\n state.j[input[len - 1]] = next;\n return next;\n}\n/**\n * Converts a string of Top-Level Domain names encoded in update-tlds.js back\n * into a list of strings.\n * @param {str} encoded encoded TLDs string\n * @returns {str[]} original TLDs list\n */ function $efca0cb2e3ea1e67$var$decodeTlds(encoded) {\n const words = [];\n const stack = [];\n let i = 0;\n let digits = '0123456789';\n while(i < encoded.length){\n let popDigitCount = 0;\n while(digits.indexOf(encoded[i + popDigitCount]) >= 0)popDigitCount++; // encountered some digits, have to pop to go one level up trie\n if (popDigitCount > 0) {\n words.push(stack.join('')); // whatever preceded the pop digits must be a word\n for(let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--)stack.pop();\n i += popDigitCount;\n } else {\n stack.push(encoded[i]); // drop down a level into the trie\n i++;\n }\n }\n return words;\n}\n/**\n * An object where each key is a valid DOM Event Name such as `click` or `focus`\n * and each value is an event handler function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element#events\n * @typedef {?{ [event: string]: Function }} EventListeners\n */ /**\n * All formatted properties required to render a link, including `tagName`,\n * `attributes`, `content` and `eventListeners`.\n * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string,\n * eventListeners: EventListeners }} IntermediateRepresentation\n */ /**\n * Specify either an object described by the template type `O` or a function.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `O`\n * @template O\n * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj\n */ /**\n * Specify either a function described by template type `F` or an object.\n *\n * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each\n * value should be a function with template type `F` that is called when the\n * corresponding link type is encountered.\n * @template F\n * @typedef {F | { [type: string]: F}} OptFn\n */ /**\n * Specify either a value with template type `V`, a function that returns `V` or\n * an object where each value resolves to `V`.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `V`\n *\n * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).\n * Each value should either have type `V` or a function that returns V. This\n * function similarly takes a string value and a token.\n *\n * Example valid types for `Opt`:\n *\n * ```js\n * 'hello'\n * (value, type, token) => 'world'\n * { url: 'hello', email: (value, token) => 'world'}\n * ```\n * @template V\n * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt\n */ /**\n * See available options: https://linkify.js.org/docs/options.html\n * @typedef {{\n * \tdefaultProtocol?: string,\n * events?: OptObj,\n * \tformat?: Opt,\n * \tformatHref?: Opt,\n * \tnl2br?: boolean,\n * \ttagName?: Opt,\n * \ttarget?: Opt,\n * \trel?: Opt,\n * \tvalidate?: Opt,\n * \ttruncate?: Opt,\n * \tclassName?: Opt,\n * \tattributes?: OptObj<({ [attr: string]: any })>,\n * ignoreTags?: string[],\n * \trender?: OptFn<((ir: IntermediateRepresentation) => any)>\n * }} Opts\n */ /**\n * @type Required\n */ const $efca0cb2e3ea1e67$var$defaults = {\n defaultProtocol: 'http',\n events: null,\n format: $efca0cb2e3ea1e67$var$noop,\n formatHref: $efca0cb2e3ea1e67$var$noop,\n nl2br: false,\n tagName: 'a',\n target: null,\n rel: null,\n validate: true,\n truncate: Infinity,\n className: null,\n attributes: null,\n ignoreTags: [],\n render: null\n};\n/**\n * Utility class for linkify interfaces to apply specified\n * {@link Opts formatting and rendering options}.\n *\n * @param {Opts | Options} [opts] Option value overrides.\n * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For\n * internal use) default render function that determines how to generate an\n * HTML element based on a link token's derived tagName, attributes and HTML.\n * Similar to render option\n */ function $efca0cb2e3ea1e67$export$c019608e5b5bb4cb(opts, defaultRender = null) {\n let o = $efca0cb2e3ea1e67$var$assign({}, $efca0cb2e3ea1e67$var$defaults);\n if (opts) o = $efca0cb2e3ea1e67$var$assign(o, opts instanceof $efca0cb2e3ea1e67$export$c019608e5b5bb4cb ? opts.o : opts);\n // Ensure all ignored tags are uppercase\n const ignoredTags = o.ignoreTags;\n const uppercaseIgnoredTags = [];\n for(let i = 0; i < ignoredTags.length; i++)uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase());\n /** @protected */ this.o = o;\n if (defaultRender) this.defaultRender = defaultRender;\n this.ignoreTags = uppercaseIgnoredTags;\n}\n$efca0cb2e3ea1e67$export$c019608e5b5bb4cb.prototype = {\n o: $efca0cb2e3ea1e67$var$defaults,\n /**\n * @type string[]\n */ ignoreTags: [],\n /**\n * @param {IntermediateRepresentation} ir\n * @returns {any}\n */ defaultRender (ir) {\n return ir;\n },\n /**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options.\n * @param {MultiToken} token\n * @returns {boolean}\n */ check (token) {\n return this.get('validate', token.toString(), token);\n },\n // Private methods\n /**\n * Resolve an option's value based on the value of the option and the given\n * params. If operator and token are specified and the target option is\n * callable, automatically calls the function with the given argument.\n * @template {keyof Opts} K\n * @param {K} key Name of option to use\n * @param {string} [operator] will be passed to the target option if it's a\n * function. If not specified, RAW function value gets returned\n * @param {MultiToken} [token] The token from linkify.tokenize\n * @returns {Opts[K] | any}\n */ get (key, operator, token) {\n const isCallable = operator != null;\n let option = this.o[key];\n if (!option) return option;\n if (typeof option === 'object') {\n option = token.t in option ? option[token.t] : $efca0cb2e3ea1e67$var$defaults[key];\n if (typeof option === 'function' && isCallable) option = option(operator, token);\n } else if (typeof option === 'function' && isCallable) option = option(operator, token.t, token);\n return option;\n },\n /**\n * @template {keyof Opts} L\n * @param {L} key Name of options object to use\n * @param {string} [operator]\n * @param {MultiToken} [token]\n * @returns {Opts[L] | any}\n */ getObj (key, operator, token) {\n let obj = this.o[key];\n if (typeof obj === 'function' && operator != null) obj = obj(operator, token.t, token);\n return obj;\n },\n /**\n * Convert the given token to a rendered element that may be added to the\n * calling-interface's DOM\n * @param {MultiToken} token Token to render to an HTML element\n * @returns {any} Render result; e.g., HTML string, DOM element, React\n * Component, etc.\n */ render (token) {\n const ir = token.render(this); // intermediate representation\n const renderFn = this.get('render', null, token) || this.defaultRender;\n return renderFn(ir, token.t, token);\n }\n};\nfunction $efca0cb2e3ea1e67$var$noop(val) {\n return val;\n}\nvar $efca0cb2e3ea1e67$export$41c562ebe57d11e2 = /*#__PURE__*/ Object.freeze({\n __proto__: null,\n defaults: $efca0cb2e3ea1e67$var$defaults,\n Options: $efca0cb2e3ea1e67$export$c019608e5b5bb4cb,\n assign: $efca0cb2e3ea1e67$var$assign\n});\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/ /**\n * @param {string} value\n * @param {Token[]} tokens\n */ function $efca0cb2e3ea1e67$export$28075db42e06f164(value, tokens) {\n this.t = 'token';\n this.v = value;\n this.tk = tokens;\n}\n/**\n * Abstract class used for manufacturing tokens of text tokens. That is rather\n * than the value for a token being a small string of text, it's value an array\n * of text tokens.\n *\n * Used for grouping together URLs, emails, hashtags, and other potential\n * creations.\n * @class MultiToken\n * @property {string} t\n * @property {string} v\n * @property {Token[]} tk\n * @abstract\n */ $efca0cb2e3ea1e67$export$28075db42e06f164.prototype = {\n isLink: false,\n /**\n * Return the string this token represents.\n * @return {string}\n */ toString () {\n return this.v;\n },\n /**\n * What should the value for this token be in the `href` HTML attribute?\n * Returns the `.toString` value by default.\n * @param {string} [scheme]\n * @return {string}\n */ toHref (scheme) {\n return this.toString();\n },\n /**\n * @param {Options} options Formatting options\n * @returns {string}\n */ toFormattedString (options) {\n const val = this.toString();\n const truncate = options.get('truncate', val, this);\n const formatted = options.get('format', val, this);\n return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + \"\\u2026\" : formatted;\n },\n /**\n *\n * @param {Options} options\n * @returns {string}\n */ toFormattedHref (options) {\n return options.get('formatHref', this.toHref(options.get('defaultProtocol')), this);\n },\n /**\n * The start index of this token in the original input string\n * @returns {number}\n */ startIndex () {\n return this.tk[0].s;\n },\n /**\n * The end index of this token in the original input string (up to this\n * index but not including it)\n * @returns {number}\n */ endIndex () {\n return this.tk[this.tk.length - 1].e;\n },\n /**\n \tReturns an object of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {string} [protocol] `'http'` by default\n */ toObject (protocol = $efca0cb2e3ea1e67$var$defaults.defaultProtocol) {\n return {\n type: this.t,\n value: this.toString(),\n isLink: this.isLink,\n href: this.toHref(protocol),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n *\n * @param {Options} options Formatting option\n */ toFormattedObject (options) {\n return {\n type: this.t,\n value: this.toFormattedString(options),\n isLink: this.isLink,\n href: this.toFormattedHref(options),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n * Whether this token should be rendered as a link according to the given options\n * @param {Options} options\n * @returns {boolean}\n */ validate (options) {\n return options.get('validate', this.toString(), this);\n },\n /**\n * Return an object that represents how this link should be rendered.\n * @param {Options} options Formattinng options\n */ render (options) {\n const token = this;\n const href = this.toHref(options.get('defaultProtocol'));\n const formattedHref = options.get('formatHref', href, this);\n const tagName = options.get('tagName', href, token);\n const content = this.toFormattedString(options);\n const attributes = {};\n const className = options.get('className', href, token);\n const target = options.get('target', href, token);\n const rel = options.get('rel', href, token);\n const attrs = options.getObj('attributes', href, token);\n const eventListeners = options.getObj('events', href, token);\n attributes.href = formattedHref;\n if (className) attributes.class = className;\n if (target) attributes.target = target;\n if (rel) attributes.rel = rel;\n if (attrs) $efca0cb2e3ea1e67$var$assign(attributes, attrs);\n return {\n tagName: tagName,\n attributes: attributes,\n content: content,\n eventListeners: eventListeners\n };\n }\n};\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class\n */ function $efca0cb2e3ea1e67$export$21042e7280c1baba(type, props) {\n class Token extends $efca0cb2e3ea1e67$export$28075db42e06f164 {\n constructor(value, tokens){\n super(value, tokens);\n this.t = type;\n }\n }\n for(const p in props)Token.prototype[p] = props[p];\n Token.t = type;\n return Token;\n}\n/**\n\tRepresents a list of tokens making up a valid email address\n*/ const $efca0cb2e3ea1e67$var$Email = $efca0cb2e3ea1e67$export$21042e7280c1baba('email', {\n isLink: true,\n toHref () {\n return 'mailto:' + this.toString();\n }\n});\n/**\n\tRepresents some plain text\n*/ const $efca0cb2e3ea1e67$var$Text = $efca0cb2e3ea1e67$export$21042e7280c1baba('text');\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n*/ const $efca0cb2e3ea1e67$var$Nl = $efca0cb2e3ea1e67$export$21042e7280c1baba('nl');\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n*/ const $efca0cb2e3ea1e67$var$Url = $efca0cb2e3ea1e67$export$21042e7280c1baba('url', {\n isLink: true,\n /**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@param {string} [scheme] default scheme (e.g., 'https')\n \t@return {string} the full href\n */ toHref (scheme = $efca0cb2e3ea1e67$var$defaults.defaultProtocol) {\n // Check if already has a prefix scheme\n return this.hasProtocol() ? this.v : `${scheme}://${this.v}`;\n },\n /**\n * Check whether this URL token has a protocol\n * @return {boolean}\n */ hasProtocol () {\n const tokens = this.tk;\n return tokens.length >= 2 && tokens[0].t !== $efca0cb2e3ea1e67$var$LOCALHOST && tokens[1].t === $efca0cb2e3ea1e67$var$COLON;\n }\n});\nvar $efca0cb2e3ea1e67$export$13e2537ceeaf8a3a = /*#__PURE__*/ Object.freeze({\n __proto__: null,\n MultiToken: $efca0cb2e3ea1e67$export$28075db42e06f164,\n Base: $efca0cb2e3ea1e67$export$28075db42e06f164,\n createTokenClass: $efca0cb2e3ea1e67$export$21042e7280c1baba,\n Email: $efca0cb2e3ea1e67$var$Email,\n Text: $efca0cb2e3ea1e67$var$Text,\n Nl: $efca0cb2e3ea1e67$var$Nl,\n Url: $efca0cb2e3ea1e67$var$Url\n});\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/ const $efca0cb2e3ea1e67$var$makeState = (arg)=>new $efca0cb2e3ea1e67$export$7254cc27399e90bd(arg);\n/**\n * Generate the parser multi token-based state machine\n * @param {{ groups: Collections }} tokens\n */ function $efca0cb2e3ea1e67$var$init$1({ groups: groups }) {\n // Types of characters the URL can definitely end in\n const qsAccepting = groups.domain.concat([\n $efca0cb2e3ea1e67$var$AMPERSAND,\n $efca0cb2e3ea1e67$var$ASTERISK,\n $efca0cb2e3ea1e67$var$AT,\n $efca0cb2e3ea1e67$var$BACKSLASH,\n $efca0cb2e3ea1e67$var$BACKTICK,\n $efca0cb2e3ea1e67$var$CARET,\n $efca0cb2e3ea1e67$var$DOLLAR,\n $efca0cb2e3ea1e67$var$EQUALS,\n $efca0cb2e3ea1e67$var$HYPHEN,\n $efca0cb2e3ea1e67$var$NUM,\n $efca0cb2e3ea1e67$var$PERCENT,\n $efca0cb2e3ea1e67$var$PIPE,\n $efca0cb2e3ea1e67$var$PLUS,\n $efca0cb2e3ea1e67$var$POUND,\n $efca0cb2e3ea1e67$var$SLASH,\n $efca0cb2e3ea1e67$var$SYM,\n $efca0cb2e3ea1e67$var$TILDE,\n $efca0cb2e3ea1e67$var$UNDERSCORE\n ]);\n // Types of tokens that can follow a URL and be part of the query string\n // but cannot be the very last characters\n // Characters that cannot appear in the URL at all should be excluded\n const qsNonAccepting = [\n $efca0cb2e3ea1e67$var$COLON,\n $efca0cb2e3ea1e67$var$COMMA,\n $efca0cb2e3ea1e67$var$DOT,\n $efca0cb2e3ea1e67$var$EXCLAMATION,\n $efca0cb2e3ea1e67$var$PERCENT,\n $efca0cb2e3ea1e67$var$QUERY,\n $efca0cb2e3ea1e67$var$QUOTE,\n $efca0cb2e3ea1e67$var$SEMI,\n $efca0cb2e3ea1e67$var$OPENANGLEBRACKET,\n $efca0cb2e3ea1e67$var$CLOSEANGLEBRACKET,\n $efca0cb2e3ea1e67$var$OPENBRACE,\n $efca0cb2e3ea1e67$var$CLOSEBRACE,\n $efca0cb2e3ea1e67$var$CLOSEBRACKET,\n $efca0cb2e3ea1e67$var$OPENBRACKET,\n $efca0cb2e3ea1e67$var$OPENPAREN,\n $efca0cb2e3ea1e67$var$CLOSEPAREN,\n $efca0cb2e3ea1e67$var$FULLWIDTHLEFTPAREN,\n $efca0cb2e3ea1e67$var$FULLWIDTHRIGHTPAREN,\n $efca0cb2e3ea1e67$var$LEFTCORNERBRACKET,\n $efca0cb2e3ea1e67$var$RIGHTCORNERBRACKET,\n $efca0cb2e3ea1e67$var$LEFTWHITECORNERBRACKET,\n $efca0cb2e3ea1e67$var$RIGHTWHITECORNERBRACKET,\n $efca0cb2e3ea1e67$var$FULLWIDTHLESSTHAN,\n $efca0cb2e3ea1e67$var$FULLWIDTHGREATERTHAN\n ];\n // For addresses without the mailto prefix\n // Tokens allowed in the localpart of the email\n const localpartAccepting = [\n $efca0cb2e3ea1e67$var$AMPERSAND,\n $efca0cb2e3ea1e67$var$APOSTROPHE,\n $efca0cb2e3ea1e67$var$ASTERISK,\n $efca0cb2e3ea1e67$var$BACKSLASH,\n $efca0cb2e3ea1e67$var$BACKTICK,\n $efca0cb2e3ea1e67$var$CARET,\n $efca0cb2e3ea1e67$var$DOLLAR,\n $efca0cb2e3ea1e67$var$EQUALS,\n $efca0cb2e3ea1e67$var$HYPHEN,\n $efca0cb2e3ea1e67$var$OPENBRACE,\n $efca0cb2e3ea1e67$var$CLOSEBRACE,\n $efca0cb2e3ea1e67$var$PERCENT,\n $efca0cb2e3ea1e67$var$PIPE,\n $efca0cb2e3ea1e67$var$PLUS,\n $efca0cb2e3ea1e67$var$POUND,\n $efca0cb2e3ea1e67$var$QUERY,\n $efca0cb2e3ea1e67$var$SLASH,\n $efca0cb2e3ea1e67$var$SYM,\n $efca0cb2e3ea1e67$var$TILDE,\n $efca0cb2e3ea1e67$var$UNDERSCORE\n ];\n // The universal starting state.\n /**\n * @type State\n */ const Start = $efca0cb2e3ea1e67$var$makeState();\n const Localpart = $efca0cb2e3ea1e67$var$tt(Start, $efca0cb2e3ea1e67$var$TILDE); // Local part of the email address\n $efca0cb2e3ea1e67$var$ta(Localpart, localpartAccepting, Localpart);\n $efca0cb2e3ea1e67$var$ta(Localpart, groups.domain, Localpart);\n const Domain = $efca0cb2e3ea1e67$var$makeState(), Scheme = $efca0cb2e3ea1e67$var$makeState(), SlashScheme = $efca0cb2e3ea1e67$var$makeState();\n $efca0cb2e3ea1e67$var$ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A)\n $efca0cb2e3ea1e67$var$ta(Start, groups.scheme, Scheme); // e.g., 'mailto'\n $efca0cb2e3ea1e67$var$ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http'\n $efca0cb2e3ea1e67$var$ta(Domain, localpartAccepting, Localpart);\n $efca0cb2e3ea1e67$var$ta(Domain, groups.domain, Domain);\n const LocalpartAt = $efca0cb2e3ea1e67$var$tt(Domain, $efca0cb2e3ea1e67$var$AT); // Local part of the email address plus @\n $efca0cb2e3ea1e67$var$tt(Localpart, $efca0cb2e3ea1e67$var$AT, LocalpartAt); // close to an email address now\n // Local part of an email address can be e.g. 'http' or 'mailto'\n $efca0cb2e3ea1e67$var$tt(Scheme, $efca0cb2e3ea1e67$var$AT, LocalpartAt);\n $efca0cb2e3ea1e67$var$tt(SlashScheme, $efca0cb2e3ea1e67$var$AT, LocalpartAt);\n const LocalpartDot = $efca0cb2e3ea1e67$var$tt(Localpart, $efca0cb2e3ea1e67$var$DOT); // Local part of the email address plus '.' (localpart cannot end in .)\n $efca0cb2e3ea1e67$var$ta(LocalpartDot, localpartAccepting, Localpart);\n $efca0cb2e3ea1e67$var$ta(LocalpartDot, groups.domain, Localpart);\n const EmailDomain = $efca0cb2e3ea1e67$var$makeState();\n $efca0cb2e3ea1e67$var$ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name\n $efca0cb2e3ea1e67$var$ta(EmailDomain, groups.domain, EmailDomain);\n const EmailDomainDot = $efca0cb2e3ea1e67$var$tt(EmailDomain, $efca0cb2e3ea1e67$var$DOT); // domain followed by DOT\n $efca0cb2e3ea1e67$var$ta(EmailDomainDot, groups.domain, EmailDomain);\n const Email$1 = $efca0cb2e3ea1e67$var$makeState($efca0cb2e3ea1e67$var$Email); // Possible email address (could have more tlds)\n $efca0cb2e3ea1e67$var$ta(EmailDomainDot, groups.tld, Email$1);\n $efca0cb2e3ea1e67$var$ta(EmailDomainDot, groups.utld, Email$1);\n $efca0cb2e3ea1e67$var$tt(LocalpartAt, $efca0cb2e3ea1e67$var$LOCALHOST, Email$1);\n // Hyphen can jump back to a domain name\n const EmailDomainHyphen = $efca0cb2e3ea1e67$var$tt(EmailDomain, $efca0cb2e3ea1e67$var$HYPHEN); // parsed string starts with local email info + @ with a potential domain name\n $efca0cb2e3ea1e67$var$tt(EmailDomainHyphen, $efca0cb2e3ea1e67$var$HYPHEN, EmailDomainHyphen);\n $efca0cb2e3ea1e67$var$ta(EmailDomainHyphen, groups.domain, EmailDomain);\n $efca0cb2e3ea1e67$var$ta(Email$1, groups.domain, EmailDomain);\n $efca0cb2e3ea1e67$var$tt(Email$1, $efca0cb2e3ea1e67$var$DOT, EmailDomainDot);\n $efca0cb2e3ea1e67$var$tt(Email$1, $efca0cb2e3ea1e67$var$HYPHEN, EmailDomainHyphen);\n // Final possible email states\n const EmailColon = $efca0cb2e3ea1e67$var$tt(Email$1, $efca0cb2e3ea1e67$var$COLON); // URL followed by colon (potential port number here)\n /*const EmailColonPort = */ $efca0cb2e3ea1e67$var$ta(EmailColon, groups.numeric, $efca0cb2e3ea1e67$var$Email); // URL followed by colon and port number\n // Account for dots and hyphens. Hyphens are usually parts of domain names\n // (but not TLDs)\n const DomainHyphen = $efca0cb2e3ea1e67$var$tt(Domain, $efca0cb2e3ea1e67$var$HYPHEN); // domain followed by hyphen\n const DomainDot = $efca0cb2e3ea1e67$var$tt(Domain, $efca0cb2e3ea1e67$var$DOT); // domain followed by DOT\n $efca0cb2e3ea1e67$var$tt(DomainHyphen, $efca0cb2e3ea1e67$var$HYPHEN, DomainHyphen);\n $efca0cb2e3ea1e67$var$ta(DomainHyphen, groups.domain, Domain);\n $efca0cb2e3ea1e67$var$ta(DomainDot, localpartAccepting, Localpart);\n $efca0cb2e3ea1e67$var$ta(DomainDot, groups.domain, Domain);\n const DomainDotTld = $efca0cb2e3ea1e67$var$makeState($efca0cb2e3ea1e67$var$Url); // Simplest possible URL with no query string\n $efca0cb2e3ea1e67$var$ta(DomainDot, groups.tld, DomainDotTld);\n $efca0cb2e3ea1e67$var$ta(DomainDot, groups.utld, DomainDotTld);\n $efca0cb2e3ea1e67$var$ta(DomainDotTld, groups.domain, Domain);\n $efca0cb2e3ea1e67$var$ta(DomainDotTld, localpartAccepting, Localpart);\n $efca0cb2e3ea1e67$var$tt(DomainDotTld, $efca0cb2e3ea1e67$var$DOT, DomainDot);\n $efca0cb2e3ea1e67$var$tt(DomainDotTld, $efca0cb2e3ea1e67$var$HYPHEN, DomainHyphen);\n $efca0cb2e3ea1e67$var$tt(DomainDotTld, $efca0cb2e3ea1e67$var$AT, LocalpartAt);\n const DomainDotTldColon = $efca0cb2e3ea1e67$var$tt(DomainDotTld, $efca0cb2e3ea1e67$var$COLON); // URL followed by colon (potential port number here)\n const DomainDotTldColonPort = $efca0cb2e3ea1e67$var$makeState($efca0cb2e3ea1e67$var$Url); // TLD followed by a port number\n $efca0cb2e3ea1e67$var$ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort);\n // Long URL with optional port and maybe query string\n const Url$1 = $efca0cb2e3ea1e67$var$makeState($efca0cb2e3ea1e67$var$Url);\n // URL with extra symbols at the end, followed by an opening bracket\n const UrlNonaccept = $efca0cb2e3ea1e67$var$makeState(); // URL followed by some symbols (will not be part of the final URL)\n // Query strings\n $efca0cb2e3ea1e67$var$ta(Url$1, qsAccepting, Url$1);\n $efca0cb2e3ea1e67$var$ta(Url$1, qsNonAccepting, UrlNonaccept);\n $efca0cb2e3ea1e67$var$ta(UrlNonaccept, qsAccepting, Url$1);\n $efca0cb2e3ea1e67$var$ta(UrlNonaccept, qsNonAccepting, UrlNonaccept);\n // Become real URLs after `SLASH` or `COLON NUM SLASH`\n // Here works with or without scheme:// prefix\n $efca0cb2e3ea1e67$var$tt(DomainDotTld, $efca0cb2e3ea1e67$var$SLASH, Url$1);\n $efca0cb2e3ea1e67$var$tt(DomainDotTldColonPort, $efca0cb2e3ea1e67$var$SLASH, Url$1);\n // Note that domains that begin with schemes are treated slighly differently\n const SchemeColon = $efca0cb2e3ea1e67$var$tt(Scheme, $efca0cb2e3ea1e67$var$COLON); // e.g., 'mailto:'\n const SlashSchemeColon = $efca0cb2e3ea1e67$var$tt(SlashScheme, $efca0cb2e3ea1e67$var$COLON); // e.g., 'http:'\n const SlashSchemeColonSlash = $efca0cb2e3ea1e67$var$tt(SlashSchemeColon, $efca0cb2e3ea1e67$var$SLASH); // e.g., 'http:/'\n const UriPrefix = $efca0cb2e3ea1e67$var$tt(SlashSchemeColonSlash, $efca0cb2e3ea1e67$var$SLASH); // e.g., 'http://'\n // Scheme states can transition to domain states\n $efca0cb2e3ea1e67$var$ta(Scheme, groups.domain, Domain);\n $efca0cb2e3ea1e67$var$tt(Scheme, $efca0cb2e3ea1e67$var$DOT, DomainDot);\n $efca0cb2e3ea1e67$var$tt(Scheme, $efca0cb2e3ea1e67$var$HYPHEN, DomainHyphen);\n $efca0cb2e3ea1e67$var$ta(SlashScheme, groups.domain, Domain);\n $efca0cb2e3ea1e67$var$tt(SlashScheme, $efca0cb2e3ea1e67$var$DOT, DomainDot);\n $efca0cb2e3ea1e67$var$tt(SlashScheme, $efca0cb2e3ea1e67$var$HYPHEN, DomainHyphen);\n // Force URL with scheme prefix followed by anything sane\n $efca0cb2e3ea1e67$var$ta(SchemeColon, groups.domain, Url$1);\n $efca0cb2e3ea1e67$var$tt(SchemeColon, $efca0cb2e3ea1e67$var$SLASH, Url$1);\n $efca0cb2e3ea1e67$var$tt(SchemeColon, $efca0cb2e3ea1e67$var$QUERY, Url$1);\n $efca0cb2e3ea1e67$var$ta(UriPrefix, groups.domain, Url$1);\n $efca0cb2e3ea1e67$var$ta(UriPrefix, qsAccepting, Url$1);\n $efca0cb2e3ea1e67$var$tt(UriPrefix, $efca0cb2e3ea1e67$var$SLASH, Url$1);\n const bracketPairs = [\n [\n $efca0cb2e3ea1e67$var$OPENBRACE,\n $efca0cb2e3ea1e67$var$CLOSEBRACE\n ],\n // {}\n [\n $efca0cb2e3ea1e67$var$OPENBRACKET,\n $efca0cb2e3ea1e67$var$CLOSEBRACKET\n ],\n // []\n [\n $efca0cb2e3ea1e67$var$OPENPAREN,\n $efca0cb2e3ea1e67$var$CLOSEPAREN\n ],\n // ()\n [\n $efca0cb2e3ea1e67$var$OPENANGLEBRACKET,\n $efca0cb2e3ea1e67$var$CLOSEANGLEBRACKET\n ],\n // <>\n [\n $efca0cb2e3ea1e67$var$FULLWIDTHLEFTPAREN,\n $efca0cb2e3ea1e67$var$FULLWIDTHRIGHTPAREN\n ],\n // ()\n [\n $efca0cb2e3ea1e67$var$LEFTCORNERBRACKET,\n $efca0cb2e3ea1e67$var$RIGHTCORNERBRACKET\n ],\n // 「」\n [\n $efca0cb2e3ea1e67$var$LEFTWHITECORNERBRACKET,\n $efca0cb2e3ea1e67$var$RIGHTWHITECORNERBRACKET\n ],\n // 『』\n [\n $efca0cb2e3ea1e67$var$FULLWIDTHLESSTHAN,\n $efca0cb2e3ea1e67$var$FULLWIDTHGREATERTHAN\n ] // <>\n ];\n for(let i = 0; i < bracketPairs.length; i++){\n const [OPEN, CLOSE] = bracketPairs[i];\n const UrlOpen = $efca0cb2e3ea1e67$var$tt(Url$1, OPEN); // URL followed by open bracket\n // Continue not accepting for open brackets\n $efca0cb2e3ea1e67$var$tt(UrlNonaccept, OPEN, UrlOpen);\n // Closing bracket component. This character WILL be included in the URL\n $efca0cb2e3ea1e67$var$tt(UrlOpen, CLOSE, Url$1);\n // URL that beings with an opening bracket, followed by a symbols.\n // Note that the final state can still be `UrlOpen` (if the URL has a\n // single opening bracket for some reason).\n const UrlOpenQ = $efca0cb2e3ea1e67$var$makeState($efca0cb2e3ea1e67$var$Url);\n $efca0cb2e3ea1e67$var$ta(UrlOpen, qsAccepting, UrlOpenQ);\n const UrlOpenSyms = $efca0cb2e3ea1e67$var$makeState(); // UrlOpen followed by some symbols it cannot end it\n $efca0cb2e3ea1e67$var$ta(UrlOpen, qsNonAccepting);\n // URL that begins with an opening bracket, followed by some symbols\n $efca0cb2e3ea1e67$var$ta(UrlOpenQ, qsAccepting, UrlOpenQ);\n $efca0cb2e3ea1e67$var$ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms);\n $efca0cb2e3ea1e67$var$ta(UrlOpenSyms, qsAccepting, UrlOpenQ);\n $efca0cb2e3ea1e67$var$ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms);\n // Close brace/bracket to become regular URL\n $efca0cb2e3ea1e67$var$tt(UrlOpenQ, CLOSE, Url$1);\n $efca0cb2e3ea1e67$var$tt(UrlOpenSyms, CLOSE, Url$1);\n }\n $efca0cb2e3ea1e67$var$tt(Start, $efca0cb2e3ea1e67$var$LOCALHOST, DomainDotTld); // localhost is a valid URL state\n $efca0cb2e3ea1e67$var$tt(Start, $efca0cb2e3ea1e67$var$NL, $efca0cb2e3ea1e67$var$Nl); // single new line\n return {\n start: Start,\n tokens: $efca0cb2e3ea1e67$var$tk\n };\n}\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {Token[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */ function $efca0cb2e3ea1e67$var$run(start, input, tokens) {\n let len = tokens.length;\n let cursor = 0;\n let multis = [];\n let textTokens = [];\n while(cursor < len){\n let state = start;\n let secondState = null;\n let nextState = null;\n let multiLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n while(cursor < len && !(secondState = state.go(tokens[cursor].t)))// Starting tokens with nowhere to jump to.\n // Consider these to be just plain text\n textTokens.push(tokens[cursor++]);\n while(cursor < len && (nextState = secondState || state.go(tokens[cursor].t))){\n // Get the next state\n secondState = null;\n state = nextState;\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) sinceAccepts++;\n cursor++;\n multiLength++;\n }\n if (sinceAccepts < 0) {\n // No accepting state was found, part of a regular text token add\n // the first text token to the text tokens array and try again from\n // the next\n cursor -= multiLength;\n if (cursor < len) {\n textTokens.push(tokens[cursor]);\n cursor++;\n }\n } else {\n // Accepting state!\n // First close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push($efca0cb2e3ea1e67$var$initMultiToken($efca0cb2e3ea1e67$var$Text, input, textTokens));\n textTokens = [];\n }\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts;\n // Create a new multitoken\n const Multi = latestAccepting.t;\n const subtokens = tokens.slice(cursor - multiLength, cursor);\n multis.push($efca0cb2e3ea1e67$var$initMultiToken(Multi, input, subtokens));\n }\n }\n // Finally close off the textTokens (if available)\n if (textTokens.length > 0) multis.push($efca0cb2e3ea1e67$var$initMultiToken($efca0cb2e3ea1e67$var$Text, input, textTokens));\n return multis;\n}\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate\n * @param {string} input original input string\n * @param {Token[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */ function $efca0cb2e3ea1e67$var$initMultiToken(Multi, input, tokens) {\n const startIdx = tokens[0].s;\n const endIdx = tokens[tokens.length - 1].e;\n const value = input.slice(startIdx, endIdx);\n return new Multi(value, tokens);\n}\nconst $efca0cb2e3ea1e67$var$warn = typeof console !== 'undefined' && console && console.warn || (()=>{});\nconst $efca0cb2e3ea1e67$var$warnAdvice = 'until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.';\n// Side-effect initialization state\nconst $efca0cb2e3ea1e67$var$INIT = {\n scanner: null,\n parser: null,\n tokenQueue: [],\n pluginQueue: [],\n customSchemes: [],\n initialized: false\n};\n/**\n * @typedef {{\n * \tstart: State,\n * \ttokens: { groups: Collections } & typeof tk\n * }} ScannerInit\n */ /**\n * @typedef {{\n * \tstart: State,\n * \ttokens: typeof multi\n * }} ParserInit\n */ /**\n * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin\n */ /**\n * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin\n */ /**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */ function $efca0cb2e3ea1e67$export$aad8462122ac592b() {\n $efca0cb2e3ea1e67$export$7254cc27399e90bd.groups = {};\n $efca0cb2e3ea1e67$var$INIT.scanner = null;\n $efca0cb2e3ea1e67$var$INIT.parser = null;\n $efca0cb2e3ea1e67$var$INIT.tokenQueue = [];\n $efca0cb2e3ea1e67$var$INIT.pluginQueue = [];\n $efca0cb2e3ea1e67$var$INIT.customSchemes = [];\n $efca0cb2e3ea1e67$var$INIT.initialized = false;\n return $efca0cb2e3ea1e67$var$INIT;\n}\n/**\n * Register a token plugin to allow the scanner to recognize additional token\n * types before the parser state machine is constructed from the results.\n * @param {string} name of plugin to register\n * @param {TokenPlugin} plugin function that accepts the scanner state machine\n * and available scanner tokens and collections and extends the state machine to\n * recognize additional tokens or groups.\n */ function $efca0cb2e3ea1e67$export$56d1f1cb1f3c0e96(name, plugin) {\n if (typeof plugin !== 'function') throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`);\n for(let i = 0; i < $efca0cb2e3ea1e67$var$INIT.tokenQueue.length; i++)if (name === $efca0cb2e3ea1e67$var$INIT.tokenQueue[i][0]) {\n $efca0cb2e3ea1e67$var$warn(`linkifyjs: token plugin \"${name}\" already registered - will be overwritten`);\n $efca0cb2e3ea1e67$var$INIT.tokenQueue[i] = [\n name,\n plugin\n ];\n return;\n }\n $efca0cb2e3ea1e67$var$INIT.tokenQueue.push([\n name,\n plugin\n ]);\n if ($efca0cb2e3ea1e67$var$INIT.initialized) $efca0cb2e3ea1e67$var$warn(`linkifyjs: already initialized - will not register token plugin \"${name}\" ${$efca0cb2e3ea1e67$var$warnAdvice}`);\n}\n/**\n * Register a linkify plugin\n * @param {string} name of plugin to register\n * @param {Plugin} plugin function that accepts the parser state machine and\n * extends the parser to recognize additional link types\n */ function $efca0cb2e3ea1e67$export$7612db19fb8beb1e(name, plugin) {\n if (typeof plugin !== 'function') throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`);\n for(let i = 0; i < $efca0cb2e3ea1e67$var$INIT.pluginQueue.length; i++)if (name === $efca0cb2e3ea1e67$var$INIT.pluginQueue[i][0]) {\n $efca0cb2e3ea1e67$var$warn(`linkifyjs: plugin \"${name}\" already registered - will be overwritten`);\n $efca0cb2e3ea1e67$var$INIT.pluginQueue[i] = [\n name,\n plugin\n ];\n return;\n }\n $efca0cb2e3ea1e67$var$INIT.pluginQueue.push([\n name,\n plugin\n ]);\n if ($efca0cb2e3ea1e67$var$INIT.initialized) $efca0cb2e3ea1e67$var$warn(`linkifyjs: already initialized - will not register plugin \"${name}\" ${$efca0cb2e3ea1e67$var$warnAdvice}`);\n}\n/**\n * Detect URLs with the following additional protocol. Anything with format\n * \"protocol://...\" will be considered a link. If `optionalSlashSlash` is set to\n * `true`, anything with format \"protocol:...\" will be considered a link.\n * @param {string} scheme\n * @param {boolean} [optionalSlashSlash]\n */ function $efca0cb2e3ea1e67$export$821627edc2d26f5f(scheme, optionalSlashSlash = false) {\n if ($efca0cb2e3ea1e67$var$INIT.initialized) $efca0cb2e3ea1e67$var$warn(`linkifyjs: already initialized - will not register custom scheme \"${scheme}\" ${$efca0cb2e3ea1e67$var$warnAdvice}`);\n if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) throw new Error(`linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or \"-\"\n2. Cannot start or end with \"-\"\n3. \"-\" cannot repeat`);\n $efca0cb2e3ea1e67$var$INIT.customSchemes.push([\n scheme,\n optionalSlashSlash\n ]);\n}\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */ function $efca0cb2e3ea1e67$export$2cd8252107eb640b() {\n // Initialize scanner state machine and plugins\n $efca0cb2e3ea1e67$var$INIT.scanner = $efca0cb2e3ea1e67$var$init$2($efca0cb2e3ea1e67$var$INIT.customSchemes);\n for(let i = 0; i < $efca0cb2e3ea1e67$var$INIT.tokenQueue.length; i++)$efca0cb2e3ea1e67$var$INIT.tokenQueue[i][1]({\n scanner: $efca0cb2e3ea1e67$var$INIT.scanner\n });\n // Initialize parser state machine and plugins\n $efca0cb2e3ea1e67$var$INIT.parser = $efca0cb2e3ea1e67$var$init$1($efca0cb2e3ea1e67$var$INIT.scanner.tokens);\n for(let i = 0; i < $efca0cb2e3ea1e67$var$INIT.pluginQueue.length; i++)$efca0cb2e3ea1e67$var$INIT.pluginQueue[i][1]({\n scanner: $efca0cb2e3ea1e67$var$INIT.scanner,\n parser: $efca0cb2e3ea1e67$var$INIT.parser\n });\n $efca0cb2e3ea1e67$var$INIT.initialized = true;\n return $efca0cb2e3ea1e67$var$INIT;\n}\n/**\n * Parse a string into tokens that represent linkable and non-linkable sub-components\n * @param {string} str\n * @return {MultiToken[]} tokens\n */ function $efca0cb2e3ea1e67$export$660b2ee2d4fb4eff(str) {\n if (!$efca0cb2e3ea1e67$var$INIT.initialized) $efca0cb2e3ea1e67$export$2cd8252107eb640b();\n return $efca0cb2e3ea1e67$var$run($efca0cb2e3ea1e67$var$INIT.parser.start, str, $efca0cb2e3ea1e67$var$run$1($efca0cb2e3ea1e67$var$INIT.scanner.start, str));\n}\n$efca0cb2e3ea1e67$export$660b2ee2d4fb4eff.scan = $efca0cb2e3ea1e67$var$run$1; // for testing\n/**\n * Find a list of linkable items in the given string.\n * @param {string} str string to find links in\n * @param {string | Opts} [type] either formatting options or specific type of\n * links to find, e.g., 'url' or 'email'\n * @param {Opts} [opts] formatting options for final output. Cannot be specified\n * if opts already provided in `type` argument\n */ function $efca0cb2e3ea1e67$export$71aa6c912b956294(str, type = null, opts = null) {\n if (type && typeof type === 'object') {\n if (opts) throw Error(`linkifyjs: Invalid link type ${type}; must be a string`);\n opts = type;\n type = null;\n }\n const options = new $efca0cb2e3ea1e67$export$c019608e5b5bb4cb(opts);\n const tokens = $efca0cb2e3ea1e67$export$660b2ee2d4fb4eff(str);\n const filtered = [];\n for(let i = 0; i < tokens.length; i++){\n const token = tokens[i];\n if (token.isLink && (!type || token.t === type) && options.check(token)) filtered.push(token.toFormattedObject(options));\n }\n return filtered;\n}\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n * linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */ function $efca0cb2e3ea1e67$export$e0969da9b8fb378d(str, type = null) {\n const tokens = $efca0cb2e3ea1e67$export$660b2ee2d4fb4eff(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\n\nconst $3bbe59931da17a80$export$c0bb0b647f701bb5 = (0, $ea6c2efa7087cd4a$export$2e2bcd8739ae039).bind((0, $b2a774aae58c7b4e$export$c8a8987d4410bf2d));\n\n\nconst $71e07b0506970322$var$alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nfunction $71e07b0506970322$export$c564cdbbe6da493(data) {\n if (!window.TextEncoder) return btoa(data);\n let encoder = new TextEncoder();\n let bytes = encoder.encode(data);\n let trailing = bytes.length % 3;\n let out = \"\";\n for(let i = 0; i < bytes.length - trailing; i += 3){\n let u24 = (bytes[i] << 16) + (bytes[i + 1] << 8) + bytes[i + 2];\n out += $71e07b0506970322$var$alphabet[u24 >> 18 & 0x3F];\n out += $71e07b0506970322$var$alphabet[u24 >> 12 & 0x3F];\n out += $71e07b0506970322$var$alphabet[u24 >> 6 & 0x3F];\n out += $71e07b0506970322$var$alphabet[u24 & 0x3F];\n }\n if (trailing === 1) {\n let u8 = bytes[bytes.length - 1];\n out += $71e07b0506970322$var$alphabet[u8 >> 2];\n out += $71e07b0506970322$var$alphabet[u8 << 4 & 0x3F];\n out += \"==\";\n } else if (trailing === 2) {\n let u16 = (bytes[bytes.length - 2] << 8) + bytes[bytes.length - 1];\n out += $71e07b0506970322$var$alphabet[u16 >> 10];\n out += $71e07b0506970322$var$alphabet[u16 >> 4 & 0x3F];\n out += $71e07b0506970322$var$alphabet[u16 << 2 & 0x3F];\n out += \"=\";\n }\n return out;\n}\n\n\nconst $bd3c59ab25aed5ca$export$cac9ca3596de2b3a = \"001\";\nconst $bd3c59ab25aed5ca$export$533b33f42abb0931 = \"002\";\nconst $bd3c59ab25aed5ca$export$ad367ba3102df7fd = \"003\";\nconst $bd3c59ab25aed5ca$export$31b0bce566d09826 = \"004\";\nconst $bd3c59ab25aed5ca$export$1d0c7ae9b6b17819 = \"005\";\nconst $bd3c59ab25aed5ca$export$6184319b67962807 = \"221\";\nconst $bd3c59ab25aed5ca$export$5075048a1d9ba016 = \"263\";\nconst $bd3c59ab25aed5ca$export$cfb24fa60294f9b1 = \"301\";\nconst $bd3c59ab25aed5ca$export$9514b1191eaefcec = \"311\";\nconst $bd3c59ab25aed5ca$export$5fb4b19390213db9 = \"312\";\nconst $bd3c59ab25aed5ca$export$ed3b11a38dbfed2c = \"313\";\nconst $bd3c59ab25aed5ca$export$322843849bf6282 = \"317\";\nconst $bd3c59ab25aed5ca$export$ec20f8e9d0ad5539 = \"318\";\nconst $bd3c59ab25aed5ca$export$1982ce771bb0f0ea = \"319\";\nconst $bd3c59ab25aed5ca$export$1ea987b9a16ea266 = \"315\";\nconst $bd3c59ab25aed5ca$export$8e826dfe9edc5be1 = \"324\";\nconst $bd3c59ab25aed5ca$export$a675057415015158 = \"331\";\nconst $bd3c59ab25aed5ca$export$c233ee342453910 = \"332\";\nconst $bd3c59ab25aed5ca$export$b1fa6c92095fdab1 = \"333\";\nconst $bd3c59ab25aed5ca$export$6bc24f4e6578b579 = \"341\";\nconst $bd3c59ab25aed5ca$export$cf24d3ab5a850c9f = \"346\";\nconst $bd3c59ab25aed5ca$export$edbdd9cee2ab5be8 = \"347\";\nconst $bd3c59ab25aed5ca$export$a1ba792f52c3a77c = \"348\";\nconst $bd3c59ab25aed5ca$export$385b5d59fd211cdd = \"349\";\nconst $bd3c59ab25aed5ca$export$ea7f3a22477f88c4 = \"352\";\nconst $bd3c59ab25aed5ca$export$18c4a4c5c97dce9b = \"353\";\nconst $bd3c59ab25aed5ca$export$f45306e17f085f4e = \"354\";\nconst $bd3c59ab25aed5ca$export$698923df90b7ea6d = \"366\";\nconst $bd3c59ab25aed5ca$export$15ba3f1b034be103 = \"367\";\nconst $bd3c59ab25aed5ca$export$1766db7a19d745c = \"368\";\nconst $bd3c59ab25aed5ca$export$3db4cc949c7e95b3 = \"372\";\nconst $bd3c59ab25aed5ca$export$dc8b28cc395fae80 = \"375\";\nconst $bd3c59ab25aed5ca$export$cad5f2640c65ad1e = \"376\";\nconst $bd3c59ab25aed5ca$export$f0fc9feb21c3ef1b = \"400\";\nconst $bd3c59ab25aed5ca$export$7ea30511ef6ec211 = \"401\";\nconst $bd3c59ab25aed5ca$export$b889507e4da9d85b = \"403\";\nconst $bd3c59ab25aed5ca$export$d9dd0c5028129ffb = \"405\";\nconst $bd3c59ab25aed5ca$export$da101e59b60ec32a = \"421\";\nconst $bd3c59ab25aed5ca$export$7e8b5ab33a021d11 = \"422\";\nconst $bd3c59ab25aed5ca$export$4743685aa8150ce0 = \"432\";\nconst $bd3c59ab25aed5ca$export$8b9229ff310aa80f = \"433\";\nconst $bd3c59ab25aed5ca$export$7610afb40d396829 = \"436\";\nconst $bd3c59ab25aed5ca$export$e9c321b4bd63421d = \"461\";\nconst $bd3c59ab25aed5ca$export$3ae3da5f6b8010ab = \"463\";\nconst $bd3c59ab25aed5ca$export$9d6a3a6ab4c58e66 = \"464\";\nconst $bd3c59ab25aed5ca$export$1e0e84545800b47a = \"465\";\nconst $bd3c59ab25aed5ca$export$6ce9c178695ddc97 = \"471\";\nconst $bd3c59ab25aed5ca$export$1750cbcab1b05667 = \"473\";\nconst $bd3c59ab25aed5ca$export$30b572b38bbeae93 = \"474\";\nconst $bd3c59ab25aed5ca$export$cc57fea2b719b6fa = \"475\";\nconst $bd3c59ab25aed5ca$export$2b6618e870672e76 = \"437\";\nconst $bd3c59ab25aed5ca$export$7304bc4447b68935 = \"328\";\nconst $bd3c59ab25aed5ca$export$110395ee82c419bd = \"329\";\nconst $bd3c59ab25aed5ca$export$903bdc290bba373b = \"728\";\nconst $bd3c59ab25aed5ca$export$e4ff1ea9594cfaf7 = \"729\";\nconst $bd3c59ab25aed5ca$export$b3c89fff1b2cdce3 = \"730\";\nconst $bd3c59ab25aed5ca$export$69132af27147d725 = \"731\";\nconst $bd3c59ab25aed5ca$export$4cefb1e79b9679ac = \"732\";\nconst $bd3c59ab25aed5ca$export$1a821ef70562463 = \"733\";\nconst $bd3c59ab25aed5ca$export$4263d790dc849b7 = \"734\";\nconst $bd3c59ab25aed5ca$export$97b01f8c0b76e599 = \"900\";\nconst $bd3c59ab25aed5ca$export$3ae55a67359785dc = \"901\";\nconst $bd3c59ab25aed5ca$export$37e8d81e1e359f6e = \"902\";\nconst $bd3c59ab25aed5ca$export$cba31abc2138b15e = \"903\";\nconst $bd3c59ab25aed5ca$export$724018c6aa2adbd0 = \"904\";\nconst $bd3c59ab25aed5ca$export$47bb6ff9e6eba14f = \"905\";\nconst $bd3c59ab25aed5ca$export$aae27a063aae3a16 = \"906\";\nconst $bd3c59ab25aed5ca$export$a74ae703a035d4a0 = \"907\";\nconst $bd3c59ab25aed5ca$export$1829957589a58e7d = {\n \"~\": \"owner\",\n \"&\": \"admin\",\n \"@\": \"operator\",\n \"%\": \"halfop\",\n \"+\": \"voice\"\n};\nconst $bd3c59ab25aed5ca$export$6803455f35a0669 = {\n \"~\": \"q\",\n \"&\": \"a\",\n \"@\": \"o\",\n \"%\": \"h\",\n \"+\": \"v\"\n};\nconst $bd3c59ab25aed5ca$var$STD_MEMBERSHIPS = \"~&@%+\";\nconst $bd3c59ab25aed5ca$var$STD_CHANTYPES = \"#&+!\";\nconst $bd3c59ab25aed5ca$var$tagEscapeMap = {\n \";\": \"\\\\:\",\n \" \": \"\\\\s\",\n \"\\\\\": \"\\\\\\\\\",\n \"\\r\": \"\\\\r\",\n \"\\n\": \"\\\\n\"\n};\nconst $bd3c59ab25aed5ca$var$tagUnescapeMap = Object.fromEntries(Object.entries($bd3c59ab25aed5ca$var$tagEscapeMap).map(([from, to])=>[\n to,\n from\n ]));\nfunction $bd3c59ab25aed5ca$var$escapeTag(s) {\n return String(s).replace(/[; \\\\\\r\\n]/g, (ch)=>$bd3c59ab25aed5ca$var$tagEscapeMap[ch]);\n}\nfunction $bd3c59ab25aed5ca$var$unescapeTag(s) {\n return s.replace(/\\\\[:s\\\\rn]/g, (seq)=>$bd3c59ab25aed5ca$var$tagUnescapeMap[seq]);\n}\nfunction $bd3c59ab25aed5ca$export$ede4b2e0172bbdb1(s) {\n let tags = {};\n s.split(\";\").forEach((s)=>{\n if (!s) return;\n let parts = s.split(\"=\", 2);\n let k = parts[0];\n let v = null;\n if (parts.length === 2) {\n v = $bd3c59ab25aed5ca$var$unescapeTag(parts[1]);\n if (v.endsWith(\"\\\\\")) v = v.slice(0, v.length - 1);\n }\n tags[k] = v;\n });\n return tags;\n}\nfunction $bd3c59ab25aed5ca$export$c27de7dba30c634a(tags) {\n let l = [];\n for(let k in tags){\n if (tags[k] === undefined || tags[k] === null) {\n l.push(k);\n continue;\n }\n let v = $bd3c59ab25aed5ca$var$escapeTag(tags[k]);\n l.push(k + \"=\" + v);\n }\n return l.join(\";\");\n}\nfunction $bd3c59ab25aed5ca$export$3059e96a5fe807c3(s) {\n let host = null;\n let i = s.indexOf(\"@\");\n if (i > 0) {\n host = s.slice(i + 1);\n s = s.slice(0, i);\n }\n let user = null;\n i = s.indexOf(\"!\");\n if (i > 0) {\n user = s.slice(i + 1);\n s = s.slice(0, i);\n }\n return {\n name: s,\n user: user,\n host: host\n };\n}\nfunction $bd3c59ab25aed5ca$var$formatPrefix(prefix) {\n let s = prefix.name;\n if (prefix.user) s += \"!\" + prefix.user;\n if (prefix.host) s += \"@\" + prefix.host;\n return s;\n}\nfunction $bd3c59ab25aed5ca$export$f2f615077a189f21(s) {\n if (s.endsWith(\"\\r\\n\")) s = s.slice(0, s.length - 2);\n let msg = {\n tags: {},\n prefix: null,\n command: null,\n params: []\n };\n if (s.startsWith(\"@\")) {\n let i = s.indexOf(\" \");\n if (i < 0) throw new Error(\"expected a space after tags\");\n msg.tags = $bd3c59ab25aed5ca$export$ede4b2e0172bbdb1(s.slice(1, i));\n s = s.slice(i + 1);\n }\n if (s.startsWith(\":\")) {\n let i = s.indexOf(\" \");\n if (i < 0) throw new Error(\"expected a space after prefix\");\n msg.prefix = $bd3c59ab25aed5ca$export$3059e96a5fe807c3(s.slice(1, i));\n s = s.slice(i + 1);\n }\n let i = s.indexOf(\" \");\n if (i < 0) {\n msg.command = s;\n return msg;\n }\n msg.command = s.slice(0, i);\n s = s.slice(i + 1);\n while(true){\n if (s.startsWith(\":\")) {\n msg.params.push(s.slice(1));\n break;\n }\n i = s.indexOf(\" \");\n if (i < 0) {\n msg.params.push(s);\n break;\n }\n msg.params.push(s.slice(0, i));\n s = s.slice(i + 1);\n }\n return msg;\n}\nfunction $bd3c59ab25aed5ca$export$25868d1e8e76735f(msg) {\n let s = \"\";\n if (msg.tags && Object.keys(msg.tags).length > 0) s += \"@\" + $bd3c59ab25aed5ca$export$c27de7dba30c634a(msg.tags) + \" \";\n if (msg.prefix) s += \":\" + $bd3c59ab25aed5ca$var$formatPrefix(msg.prefix) + \" \";\n s += msg.command;\n if (msg.params && msg.params.length > 0) {\n for(let i = 0; i < msg.params.length - 1; i++)s += \" \" + msg.params[i];\n let last = String(msg.params[msg.params.length - 1]);\n if (last.length === 0 || last.startsWith(\":\") || last.indexOf(\" \") >= 0) s += \" :\" + last;\n else s += \" \" + last;\n }\n return s;\n}\nfunction $bd3c59ab25aed5ca$export$4812b7165edd26af(s, allowedPrefixes = $bd3c59ab25aed5ca$var$STD_MEMBERSHIPS) {\n let i;\n for(i = 0; i < s.length; i++){\n if (allowedPrefixes.indexOf(s[i]) < 0) break;\n }\n return {\n prefix: s.slice(0, i),\n name: s.slice(i)\n };\n}\nconst $bd3c59ab25aed5ca$var$alphaNum = (()=>{\n try {\n return new RegExp(/^[\\p{L}0-9]$/, \"u\");\n } catch (_e) {\n return new RegExp(/^[a-zA-Z0-9]$/, \"u\");\n }\n})();\nconst $bd3c59ab25aed5ca$var$space = new RegExp(/^\\s$/);\nfunction $bd3c59ab25aed5ca$var$isWordBoundary(ch) {\n switch(ch){\n case \"-\":\n case \"_\":\n case \"|\":\n return false;\n default:\n return !$bd3c59ab25aed5ca$var$alphaNum.test(ch);\n }\n}\nfunction $bd3c59ab25aed5ca$var$isURIPrefix(text) {\n for(let i = text.length - 1; i >= 0; i--)if ($bd3c59ab25aed5ca$var$space.test(text[i])) {\n text = text.slice(i);\n break;\n }\n let i = text.indexOf(\"://\");\n if (i <= 0) return false;\n // See RFC 3986 section 3\n let ch = text[i - 1];\n switch(ch){\n case \"+\":\n case \"-\":\n case \".\":\n return true;\n default:\n return $bd3c59ab25aed5ca$var$alphaNum.test(ch);\n }\n}\nfunction $bd3c59ab25aed5ca$export$fdd47ba7a4ecfeff(msg, nick, cm) {\n if (msg.command !== \"PRIVMSG\" && msg.command !== \"NOTICE\") return false;\n nick = cm(nick);\n if (msg.prefix && cm(msg.prefix.name) === nick) return false; // Our own messages aren't highlights\n let text = cm(msg.params[1]);\n while(true){\n let i = text.indexOf(nick);\n if (i < 0) return false;\n // Detect word boundaries\n let left = \"\\x00\", right = \"\\x00\";\n if (i > 0) left = text[i - 1];\n if (i + nick.length < text.length) right = text[i + nick.length];\n if ($bd3c59ab25aed5ca$var$isWordBoundary(left) && $bd3c59ab25aed5ca$var$isWordBoundary(right) && !$bd3c59ab25aed5ca$var$isURIPrefix(text.slice(0, i))) return true;\n text = text.slice(i + nick.length);\n }\n}\nfunction $bd3c59ab25aed5ca$export$8b29011f3cb5e124(msg) {\n if (msg.command !== \"PRIVMSG\" && msg.command !== \"NOTICE\") return false;\n return msg.params[0].startsWith(\"$\");\n}\nfunction $bd3c59ab25aed5ca$export$e6127cc7fe7395c3(cmd) {\n if (cmd >= \"400\" && cmd <= \"568\") return true;\n switch(cmd){\n case $bd3c59ab25aed5ca$export$37e8d81e1e359f6e:\n case $bd3c59ab25aed5ca$export$724018c6aa2adbd0:\n case $bd3c59ab25aed5ca$export$47bb6ff9e6eba14f:\n case $bd3c59ab25aed5ca$export$aae27a063aae3a16:\n case $bd3c59ab25aed5ca$export$a74ae703a035d4a0:\n case $bd3c59ab25aed5ca$export$4263d790dc849b7:\n return true;\n case \"FAIL\":\n return true;\n default:\n return false;\n }\n}\nfunction $bd3c59ab25aed5ca$export$3ae94a2503e890a1(date) {\n // ISO 8601\n let YYYY = date.getUTCFullYear().toString().padStart(4, \"0\");\n let MM = (date.getUTCMonth() + 1).toString().padStart(2, \"0\");\n let DD = date.getUTCDate().toString().padStart(2, \"0\");\n let hh = date.getUTCHours().toString().padStart(2, \"0\");\n let mm = date.getUTCMinutes().toString().padStart(2, \"0\");\n let ss = date.getUTCSeconds().toString().padStart(2, \"0\");\n let sss = date.getUTCMilliseconds().toString().padStart(3, \"0\");\n return `${YYYY}-${MM}-${DD}T${hh}:${mm}:${ss}.${sss}Z`;\n}\nfunction $bd3c59ab25aed5ca$export$60937d95e568734f(msg) {\n if (msg.command !== \"PRIVMSG\" && msg.command !== \"NOTICE\") return null;\n let text = msg.params[1];\n if (!text.startsWith(\"\\x01\")) return null;\n text = text.slice(1);\n if (text.endsWith(\"\\x01\")) text = text.slice(0, -1);\n let ctcp;\n let i = text.indexOf(\" \");\n if (i >= 0) ctcp = {\n command: text.slice(0, i),\n param: text.slice(i + 1)\n };\n else ctcp = {\n command: text,\n param: \"\"\n };\n ctcp.command = ctcp.command.toUpperCase();\n return ctcp;\n}\nfunction $bd3c59ab25aed5ca$var$unescapeISUPPORTValue(s) {\n return s.replace(/\\\\x[0-9A-Z]{2}/gi, (esc)=>{\n let hex = esc.slice(2);\n return String.fromCharCode(parseInt(hex, 16));\n });\n}\nclass $bd3c59ab25aed5ca$export$23c4b2cbd0633e6b {\n raw = new Map();\n parse(tokens) {\n tokens.forEach((tok)=>{\n if (tok.startsWith(\"-\")) {\n let k = tok.slice(1);\n this.raw.delete(k.toUpperCase());\n return;\n }\n let i = tok.indexOf(\"=\");\n let k = tok, v = \"\";\n if (i >= 0) {\n k = tok.slice(0, i);\n v = $bd3c59ab25aed5ca$var$unescapeISUPPORTValue(tok.slice(i + 1));\n }\n k = k.toUpperCase();\n this.raw.set(k, v);\n });\n }\n caseMapping() {\n let name = this.raw.get(\"CASEMAPPING\");\n if (!name) return $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459;\n let cm = $bd3c59ab25aed5ca$export$39aea81548242927.byName(name);\n if (!cm) {\n console.error(\"Unsupported case-mapping '\" + name + \"', falling back to RFC 1459\");\n return $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459;\n }\n return cm;\n }\n monitor() {\n if (!this.raw.has(\"MONITOR\")) return 0;\n let v = this.raw.get(\"MONITOR\");\n if (v === \"\") return Infinity;\n return parseInt(v, 10);\n }\n whox() {\n return this.raw.has(\"WHOX\");\n }\n prefix() {\n return this.raw.get(\"PREFIX\") || \"\";\n }\n chanTypes() {\n return this.raw.get(\"CHANTYPES\") || $bd3c59ab25aed5ca$var$STD_CHANTYPES;\n }\n statusMsg() {\n return this.raw.get(\"STATUSMSG\");\n }\n network() {\n return this.raw.get(\"NETWORK\");\n }\n chatHistory() {\n if (!this.raw.has(\"CHATHISTORY\")) return 0;\n let n = parseInt(this.raw.get(\"CHATHISTORY\"), 10);\n if (n <= 0) return Infinity;\n return n;\n }\n bouncerNetID() {\n return this.raw.get(\"BOUNCER_NETID\");\n }\n chanModes() {\n const stdChanModes = [\n \"beI\",\n \"k\",\n \"l\",\n \"imnst\"\n ];\n if (!this.raw.has(\"CHANMODES\")) return stdChanModes;\n let chanModes = this.raw.get(\"CHANMODES\").split(\",\");\n if (chanModes.length !== 4) {\n console.error(\"Invalid CHANMODES: \", this.raw.get(\"CHANMODES\"));\n return stdChanModes;\n }\n return chanModes;\n }\n bot() {\n return this.raw.get(\"BOT\");\n }\n userLen() {\n if (!this.raw.has(\"USERLEN\")) return 20;\n return parseInt(this.raw.get(\"USERLEN\"), 10);\n }\n hostLen() {\n if (!this.raw.has(\"HOSTLEN\")) return 63;\n return parseInt(this.raw.get(\"HOSTLEN\"), 10);\n }\n lineLen() {\n if (!this.raw.has(\"LINELEN\")) return 512;\n return parseInt(this.raw.get(\"LINELEN\"), 10);\n }\n filehost() {\n return this.raw.get(\"SOJU.IM/FILEHOST\");\n }\n}\nfunction $bd3c59ab25aed5ca$export$feed2f17626e5168(isupport, nick, target) {\n let user = \"_\".repeat(isupport.userLen());\n let host = \"_\".repeat(isupport.hostLen());\n let prefix = {\n name: nick,\n user: user,\n host: host\n };\n let msg = {\n prefix: prefix,\n command: \"PRIVMSG\",\n params: [\n target,\n \"\"\n ]\n };\n let raw = $bd3c59ab25aed5ca$export$25868d1e8e76735f(msg) + \"\\r\\n\";\n return isupport.lineLen() - raw.length;\n}\nconst $bd3c59ab25aed5ca$export$39aea81548242927 = {\n ASCII (str) {\n let out = \"\";\n for(let i = 0; i < str.length; i++){\n let ch = str[i];\n if (\"A\" <= ch && ch <= \"Z\") ch = ch.toLowerCase();\n out += ch;\n }\n return out;\n },\n RFC1459 (str) {\n let out = \"\";\n for(let i = 0; i < str.length; i++){\n let ch = str[i];\n if (\"A\" <= ch && ch <= \"Z\") ch = ch.toLowerCase();\n else if (ch === \"{\") ch = \"[\";\n else if (ch === \"}\") ch = \"]\";\n else if (ch === \"\\\\\") ch = \"|\";\n else if (ch === \"~\") ch = \"^\";\n out += ch;\n }\n return out;\n },\n RFC1459Strict (str) {\n let out = \"\";\n for(let i = 0; i < str.length; i++){\n let ch = str[i];\n if (\"A\" <= ch && ch <= \"Z\") ch = ch.toLowerCase();\n else if (ch === \"{\") ch = \"[\";\n else if (ch === \"}\") ch = \"]\";\n else if (ch === \"\\\\\") ch = \"|\";\n out += ch;\n }\n return out;\n },\n byName (name) {\n switch(name){\n case \"ascii\":\n return $bd3c59ab25aed5ca$export$39aea81548242927.ASCII;\n case \"rfc1459\":\n return $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459;\n case \"rfc1459-strict\":\n return $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459Strict;\n }\n return null;\n }\n};\nfunction $bd3c59ab25aed5ca$var$createIterator(next) {\n let it = {\n next: next\n };\n // Not defining this can lead to surprises when feeding the iterator\n // to e.g. Array.from\n it[Symbol.iterator] = ()=>it;\n return it;\n}\nfunction $bd3c59ab25aed5ca$var$mapIterator(it, f) {\n return $bd3c59ab25aed5ca$var$createIterator(()=>{\n let { value: value, done: done } = it.next();\n if (done) return {\n done: true\n };\n return {\n value: f(value),\n done: false\n };\n });\n}\nclass $bd3c59ab25aed5ca$export$6296a711f00288b1 {\n caseMap = null;\n map = null;\n constructor(iterable, cm){\n if (iterable instanceof $bd3c59ab25aed5ca$export$6296a711f00288b1 && (iterable.caseMap === cm || !cm)) {\n // Fast-path if we're just cloning another CaseMapMap\n this.caseMap = iterable.caseMap;\n this.map = new Map(iterable.map);\n } else {\n if (!cm) throw new Error(\"Missing case-mapping when creating CaseMapMap\");\n this.caseMap = cm;\n this.map = new Map();\n if (iterable) for (let [key, value] of iterable)this.set(key, value);\n }\n }\n get size() {\n return this.map.size;\n }\n has(key) {\n return this.map.has(this.caseMap(key));\n }\n get(key) {\n let kv = this.map.get(this.caseMap(key));\n if (kv) return kv.value;\n return undefined;\n }\n set(key, value) {\n this.map.set(this.caseMap(key), {\n key: key,\n value: value\n });\n }\n delete(key) {\n this.map.delete(this.caseMap(key));\n }\n entries() {\n let it = this.map.values();\n return $bd3c59ab25aed5ca$var$mapIterator(it, (kv)=>{\n return [\n kv.key,\n kv.value\n ];\n });\n }\n keys() {\n let it = this.map.values();\n return $bd3c59ab25aed5ca$var$mapIterator(it, (kv)=>{\n return kv.key;\n });\n }\n values() {\n let it = this.map.values();\n return $bd3c59ab25aed5ca$var$mapIterator(it, (kv)=>{\n return kv.value;\n });\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n}\nfunction $bd3c59ab25aed5ca$export$3b27c9ff97cdb350(str) {\n if (str[0] !== \"(\") throw new Error(\"malformed ISUPPORT PREFIX value: expected opening parenthesis\");\n let sep = str.indexOf(\")\");\n if (sep < 0) throw new Error(\"malformed ISUPPORT PREFIX value: expected closing parenthesis\");\n let n = str.length - sep - 1;\n let memberships = [];\n for(let i = 0; i < n; i++){\n let mode = str[i + 1];\n let prefix = str[sep + i + 1];\n memberships.push({\n mode: mode,\n prefix: prefix\n });\n }\n return memberships;\n}\nfunction $bd3c59ab25aed5ca$export$f4751a564f6d84a3(msg, type) {\n let batch = msg.batch;\n while(batch){\n if (batch.type === type) return batch;\n batch = batch.parent;\n }\n return null;\n}\nfunction $bd3c59ab25aed5ca$export$ec840f96613effe2(msg) {\n if (msg.tags.label) return msg.tags.label;\n let batch = msg.batch;\n while(batch){\n if (batch.tags.label) return batch.tags.label;\n batch = batch.parent;\n }\n return null;\n}\nfunction $bd3c59ab25aed5ca$export$6115b92b9c2241a7(msg, isupport, callback) {\n let [a, b, c, d] = isupport.chanModes();\n let prefix = isupport.prefix();\n let typeByMode = new Map();\n Array.from(a).forEach((mode)=>typeByMode.set(mode, \"A\"));\n Array.from(b).forEach((mode)=>typeByMode.set(mode, \"B\"));\n Array.from(c).forEach((mode)=>typeByMode.set(mode, \"C\"));\n Array.from(d).forEach((mode)=>typeByMode.set(mode, \"D\"));\n $bd3c59ab25aed5ca$export$3b27c9ff97cdb350(prefix).forEach((membership)=>typeByMode.set(membership.mode, \"B\"));\n if (msg.command !== \"MODE\") throw new Error(\"Expected a MODE message\");\n let change = msg.params[1];\n let args = msg.params.slice(2);\n let plusMinus = null;\n let j = 0;\n for(let i = 0; i < change.length; i++){\n if (change[i] === \"+\" || change[i] === \"-\") {\n plusMinus = change[i];\n continue;\n }\n if (!plusMinus) throw new Error(\"malformed mode string: missing plus/minus\");\n let mode = change[i];\n let add = plusMinus === \"+\";\n let modeType = typeByMode.get(mode);\n if (!modeType) continue;\n let arg = null;\n if (modeType === \"A\" || modeType === \"B\" || modeType === \"C\" && add) {\n arg = args[j];\n j++;\n }\n callback(mode, add, arg);\n }\n}\nfunction $bd3c59ab25aed5ca$export$64ec8def5466157c(realname, nick) {\n if (!realname || realname === nick) return false;\n if (realname.toLowerCase() === \"realname\" || realname.toLowerCase() === \"unknown\" || realname.toLowerCase() === \"fullname\") return false;\n // TODO: add more quirks\n return true;\n}\nfunction $bd3c59ab25aed5ca$export$4b3d9a5bae55976(str) {\n if (!str.startsWith(\"irc://\") && !str.startsWith(\"ircs://\")) return null;\n str = str.slice(str.indexOf(\":\") + 3);\n let loc;\n let i = str.indexOf(\"/\");\n if (i < 0) {\n loc = str;\n str = \"\";\n } else {\n loc = str.slice(0, i);\n str = str.slice(i + 1);\n }\n let host = loc;\n i = loc.indexOf(\"@\");\n if (i >= 0) host = loc.slice(i + 1);\n i = str.indexOf(\"?\");\n if (i >= 0) str = str.slice(0, i);\n let enttype;\n i = str.indexOf(\",\");\n if (i >= 0) {\n let flags = str.slice(i + 1).split(\",\");\n str = str.slice(0, i);\n if (flags.indexOf(\"isuser\") >= 0) enttype = \"user\";\n else if (flags.indexOf(\"ischannel\") >= 0) enttype = \"channel\";\n // TODO: parse hosttype\n }\n let entity = decodeURIComponent(str);\n if (!enttype) // TODO: technically we should use the PREFIX ISUPPORT here\n enttype = entity.startsWith(\"#\") ? \"channel\" : \"user\";\n return {\n host: host,\n enttype: enttype,\n entity: entity\n };\n}\nfunction $bd3c59ab25aed5ca$export$b1ef46223b559f9d({ host: host, enttype: enttype, entity: entity } = {}) {\n host = host || \"\";\n entity = entity || \"\";\n let s = \"irc://\" + host + \"/\" + encodeURIComponent(entity);\n if (enttype) s += \",is\" + enttype;\n return s;\n}\nclass $bd3c59ab25aed5ca$export$e3d1e02a8f18f40e {\n available = new Map();\n enabled = new Set();\n addAvailable(s) {\n let l = s.split(\" \");\n l.forEach((s)=>{\n let i = s.indexOf(\"=\");\n let k = s, v = \"\";\n if (i >= 0) {\n k = s.slice(0, i);\n v = s.slice(i + 1);\n }\n this.available.set(k.toLowerCase(), v);\n });\n }\n parse(msg) {\n if (msg.command !== \"CAP\") return;\n let subCmd = msg.params[1];\n let args = msg.params.slice(2);\n switch(subCmd){\n case \"LS\":\n this.addAvailable(args[args.length - 1]);\n break;\n case \"NEW\":\n this.addAvailable(args[0]);\n break;\n case \"DEL\":\n args[0].split(\" \").forEach((cap)=>{\n cap = cap.toLowerCase();\n this.available.delete(cap);\n this.enabled.delete(cap);\n });\n break;\n case \"ACK\":\n args[0].split(\" \").forEach((cap)=>{\n cap = cap.toLowerCase();\n if (cap.startsWith(\"-\")) this.enabled.delete(cap.slice(1));\n else this.enabled.add(cap);\n });\n break;\n }\n }\n requestAvailable(l) {\n l = l.filter((cap)=>{\n return this.available.has(cap) && !this.enabled.has(cap);\n });\n if (l.length === 0) return null;\n return {\n command: \"CAP\",\n params: [\n \"REQ\",\n l.join(\" \")\n ]\n };\n }\n}\nconst $bd3c59ab25aed5ca$var$maxSASLLength = 400;\nfunction $bd3c59ab25aed5ca$export$e648536c94193d05(payload) {\n let encoded = $71e07b0506970322$export$c564cdbbe6da493(payload);\n // <= instead of < because we need to send a final empty response if the\n // last chunk is exactly 400 bytes long\n let msgs = [];\n for(let i = 0; i <= encoded.length; i += $bd3c59ab25aed5ca$var$maxSASLLength){\n let chunk = encoded.substring(i, i + $bd3c59ab25aed5ca$var$maxSASLLength);\n msgs.push({\n command: \"AUTHENTICATE\",\n params: [\n chunk || \"+\"\n ]\n });\n }\n return msgs;\n}\n\n\n\n// Static list of capabilities that are always requested when supported by the\n// server\nconst $6796cfbd59091fe3$var$permanentCaps = [\n \"account-notify\",\n \"away-notify\",\n \"batch\",\n \"chghost\",\n \"echo-message\",\n \"extended-join\",\n \"extended-monitor\",\n \"invite-notify\",\n \"labeled-response\",\n \"message-tags\",\n \"multi-prefix\",\n \"sasl\",\n \"server-time\",\n \"setname\",\n \"draft/account-registration\",\n \"draft/chathistory\",\n \"draft/extended-monitor\",\n \"draft/read-marker\",\n \"soju.im/bouncer-networks\"\n];\nconst $6796cfbd59091fe3$var$RECONNECT_MIN_DELAY_MSEC = 10000; // 10s\nconst $6796cfbd59091fe3$var$RECONNECT_MAX_DELAY_MSEC = 600000; // 10min\n// WebSocket status codes\n// https://www.rfc-editor.org/rfc/rfc6455.html#section-7.4.1\nconst $6796cfbd59091fe3$var$NORMAL_CLOSURE = 1000;\nconst $6796cfbd59091fe3$var$GOING_AWAY = 1001;\nconst $6796cfbd59091fe3$var$UNSUPPORTED_DATA = 1003;\n// See https://github.com/quakenet/snircd/blob/master/doc/readme.who\n// Sorted by order of appearance in RPL_WHOSPCRPL\nconst $6796cfbd59091fe3$var$WHOX_FIELDS = {\n \"channel\": \"c\",\n \"username\": \"u\",\n \"hostname\": \"h\",\n \"server\": \"s\",\n \"nick\": \"n\",\n \"flags\": \"f\",\n \"account\": \"a\",\n \"realname\": \"r\"\n};\nconst $6796cfbd59091fe3$var$FALLBACK_SERVER_PREFIX = {\n name: \"*\"\n};\nlet $6796cfbd59091fe3$var$lastLabel = 0;\nlet $6796cfbd59091fe3$var$lastWhoxToken = 0;\nclass $6796cfbd59091fe3$var$IRCError extends Error {\n constructor(msg){\n let text;\n if (msg.params.length > 0) // IRC errors have a human-readable message as last param\n text = msg.params[msg.params.length - 1];\n else text = `unknown error (${msg.command})`;\n super(text);\n this.msg = msg;\n }\n}\n/**\n * Implements a simple exponential backoff.\n */ class $6796cfbd59091fe3$var$Backoff {\n n = 0;\n constructor(base, max){\n this.base = base;\n this.max = max;\n }\n reset() {\n this.n = 0;\n }\n next() {\n if (this.n === 0) {\n this.n = 1;\n return 0;\n }\n let dur = this.n * this.base;\n if (dur > this.max) dur = this.max;\n else this.n *= 2;\n return dur;\n }\n}\nclass $6796cfbd59091fe3$export$2e2bcd8739ae039 extends EventTarget {\n static Status = {\n DISCONNECTED: \"disconnected\",\n CONNECTING: \"connecting\",\n REGISTERING: \"registering\",\n REGISTERED: \"registered\"\n };\n status = $6796cfbd59091fe3$export$2e2bcd8739ae039.Status.DISCONNECTED;\n serverPrefix = $6796cfbd59091fe3$var$FALLBACK_SERVER_PREFIX;\n nick = null;\n supportsCap = false;\n caps = new $bd3c59ab25aed5ca$export$e3d1e02a8f18f40e();\n isupport = new $bd3c59ab25aed5ca$export$23c4b2cbd0633e6b();\n ws = null;\n params = {\n url: null,\n username: null,\n realname: null,\n nick: null,\n pass: null,\n saslPlain: null,\n saslExternal: false,\n saslOauthBearer: null,\n bouncerNetwork: null,\n ping: 0,\n eventPlayback: true\n };\n debug = false;\n batches = new Map();\n autoReconnect = true;\n reconnectTimeoutID = null;\n reconnectBackoff = new $6796cfbd59091fe3$var$Backoff($6796cfbd59091fe3$var$RECONNECT_MIN_DELAY_MSEC, $6796cfbd59091fe3$var$RECONNECT_MAX_DELAY_MSEC);\n lastReconnectDate = new Date(0);\n pingIntervalID = null;\n pendingCmds = {\n WHO: Promise.resolve(null),\n CHATHISTORY: Promise.resolve(null)\n };\n cm = $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459;\n monitored = new $bd3c59ab25aed5ca$export$6296a711f00288b1(null, $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459);\n pendingLists = new $bd3c59ab25aed5ca$export$6296a711f00288b1(null, $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459);\n whoxQueries = new Map();\n constructor(params){\n super();\n this.handleOnline = this.handleOnline.bind(this);\n this.params = {\n ...this.params,\n ...params\n };\n this.reconnect();\n }\n reconnect() {\n let autoReconnect = this.autoReconnect;\n this.disconnect();\n this.autoReconnect = autoReconnect;\n console.log(\"Connecting to \" + this.params.url);\n this.setStatus($6796cfbd59091fe3$export$2e2bcd8739ae039.Status.CONNECTING);\n this.lastReconnectDate = new Date();\n try {\n this.ws = new WebSocket(this.params.url);\n } catch (err) {\n console.error(\"Failed to create connection:\", err);\n setTimeout(()=>{\n this.dispatchError(new Error(\"Failed to create connection\", {\n cause: err\n }));\n this.setStatus($6796cfbd59091fe3$export$2e2bcd8739ae039.Status.DISCONNECTED);\n }, 0);\n return;\n }\n this.ws.addEventListener(\"open\", this.handleOpen.bind(this));\n this.ws.addEventListener(\"message\", (event)=>{\n try {\n this.handleMessage(event);\n } catch (err) {\n this.dispatchError(err);\n this.disconnect();\n }\n });\n this.ws.addEventListener(\"close\", (event)=>{\n console.log(\"Connection closed (code: \" + event.code + \")\");\n if (event.code !== $6796cfbd59091fe3$var$NORMAL_CLOSURE && event.code !== $6796cfbd59091fe3$var$GOING_AWAY) this.dispatchError(new Error(\"Connection error\"));\n this.ws = null;\n this.setStatus($6796cfbd59091fe3$export$2e2bcd8739ae039.Status.DISCONNECTED);\n this.nick = null;\n this.serverPrefix = $6796cfbd59091fe3$var$FALLBACK_SERVER_PREFIX;\n this.caps = new $bd3c59ab25aed5ca$export$e3d1e02a8f18f40e();\n this.batches = new Map();\n Object.keys(this.pendingCmds).forEach((k)=>{\n this.pendingCmds[k] = Promise.resolve(null);\n });\n this.isupport = new $bd3c59ab25aed5ca$export$23c4b2cbd0633e6b();\n this.monitored = new $bd3c59ab25aed5ca$export$6296a711f00288b1(null, $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459);\n if (this.autoReconnect) {\n window.addEventListener(\"online\", this.handleOnline);\n if (!navigator.onLine) console.info(\"Waiting for network to go back online\");\n else {\n let delay = this.reconnectBackoff.next();\n let sinceLastReconnect = new Date().getTime() - this.lastReconnectDate.getTime();\n if (sinceLastReconnect < $6796cfbd59091fe3$var$RECONNECT_MIN_DELAY_MSEC) delay = Math.max(delay, $6796cfbd59091fe3$var$RECONNECT_MIN_DELAY_MSEC);\n console.info(\"Reconnecting to server in \" + delay / 1000 + \" seconds\");\n clearTimeout(this.reconnectTimeoutID);\n this.reconnectTimeoutID = setTimeout(()=>{\n this.reconnect();\n }, delay);\n }\n }\n });\n }\n disconnect() {\n this.autoReconnect = false;\n clearTimeout(this.reconnectTimeoutID);\n this.reconnectTimeoutID = null;\n window.removeEventListener(\"online\", this.handleOnline);\n this.setPingInterval(0);\n if (this.ws) this.ws.close($6796cfbd59091fe3$var$NORMAL_CLOSURE);\n }\n setStatus(status) {\n if (this.status === status) return;\n this.status = status;\n this.dispatchEvent(new CustomEvent(\"status\"));\n }\n dispatchError(err) {\n this.dispatchEvent(new CustomEvent(\"error\", {\n detail: err\n }));\n }\n handleOnline() {\n window.removeEventListener(\"online\", this.handleOnline);\n if (this.autoReconnect && this.status === $6796cfbd59091fe3$export$2e2bcd8739ae039.Status.DISCONNECTED) this.reconnect();\n }\n handleOpen() {\n console.log(\"Connection opened\");\n this.setStatus($6796cfbd59091fe3$export$2e2bcd8739ae039.Status.REGISTERING);\n this.reconnectBackoff.reset();\n this.setPingInterval(this.params.ping);\n this.nick = this.params.nick;\n this.send({\n command: \"CAP\",\n params: [\n \"LS\",\n \"302\"\n ]\n });\n if (this.params.pass) this.send({\n command: \"PASS\",\n params: [\n this.params.pass\n ]\n });\n this.send({\n command: \"NICK\",\n params: [\n this.nick\n ]\n });\n this.send({\n command: \"USER\",\n params: [\n this.params.username,\n \"0\",\n \"*\",\n this.params.realname\n ]\n });\n }\n pushPendingList(k, msg) {\n let l = this.pendingLists.get(k);\n if (!l) {\n l = [];\n this.pendingLists.set(k, l);\n }\n l.push(msg);\n }\n endPendingList(k, msg) {\n msg.list = this.pendingLists.get(k) || [];\n this.pendingLists.delete(k);\n }\n handleMessage(event) {\n if (typeof event.data !== \"string\") {\n console.error(\"Received unsupported data type:\", event.data);\n this.ws.close($6796cfbd59091fe3$var$UNSUPPORTED_DATA);\n return;\n }\n let raw = event.data;\n if (this.debug) console.debug(\"Received:\", raw);\n let msg = $bd3c59ab25aed5ca$export$f2f615077a189f21(raw);\n // If the prefix is missing, assume it's coming from the server on the\n // other end of the connection\n if (!msg.prefix) msg.prefix = this.serverPrefix;\n if (!msg.tags) msg.tags = {};\n let msgBatch = null;\n if (msg.tags[\"batch\"]) {\n msgBatch = this.batches.get(msg.tags[\"batch\"]);\n if (msgBatch) msg.batch = msgBatch;\n }\n let deleteBatch = null;\n switch(msg.command){\n case $bd3c59ab25aed5ca$export$cac9ca3596de2b3a:\n if (this.params.saslPlain && !this.supportsCap) {\n this.dispatchError(new Error(\"Server doesn't support SASL PLAIN\"));\n this.disconnect();\n return;\n }\n if (msg.prefix) this.serverPrefix = msg.prefix;\n this.nick = msg.params[0];\n console.log(\"Registration complete\");\n this.setStatus($6796cfbd59091fe3$export$2e2bcd8739ae039.Status.REGISTERED);\n break;\n case $bd3c59ab25aed5ca$export$1d0c7ae9b6b17819:\n let prevMaxMonitorTargets = this.isupport.monitor();\n let tokens = msg.params.slice(1, -1);\n this.isupport.parse(tokens);\n this.updateCaseMapping();\n let maxMonitorTargets = this.isupport.monitor();\n if (prevMaxMonitorTargets === 0 && this.monitored.size > 0 && maxMonitorTargets > 0) {\n let targets = Array.from(this.monitored.keys()).slice(0, maxMonitorTargets);\n this.send({\n command: \"MONITOR\",\n params: [\n \"+\",\n targets.join(\",\")\n ]\n });\n }\n break;\n case $bd3c59ab25aed5ca$export$cad5f2640c65ad1e:\n case $bd3c59ab25aed5ca$export$7e8b5ab33a021d11:\n // These messages are used to indicate the end of the ISUPPORT list\n if (!this.isupport.raw.has(\"CASEMAPPING\")) // Server didn't send any CASEMAPPING token, assume RFC 1459\n this.updateCaseMapping();\n break;\n case \"CAP\":\n this.handleCap(msg);\n break;\n case \"AUTHENTICATE\":\n // Both PLAIN and EXTERNAL expect an empty challenge\n let challengeStr = msg.params[0];\n if (challengeStr !== \"+\") {\n this.dispatchError(new Error(\"Expected an empty challenge, got: \" + challengeStr));\n this.send({\n command: \"AUTHENTICATE\",\n params: [\n \"*\"\n ]\n });\n }\n break;\n case $bd3c59ab25aed5ca$export$97b01f8c0b76e599:\n console.log(\"Logged in\");\n break;\n case $bd3c59ab25aed5ca$export$3ae55a67359785dc:\n console.log(\"Logged out\");\n break;\n case $bd3c59ab25aed5ca$export$18c4a4c5c97dce9b:\n this.pushPendingList(\"NAMES \" + msg.params[2], msg);\n break;\n case $bd3c59ab25aed5ca$export$698923df90b7ea6d:\n this.endPendingList(\"NAMES \" + msg.params[1], msg);\n break;\n case $bd3c59ab25aed5ca$export$9514b1191eaefcec:\n case $bd3c59ab25aed5ca$export$5fb4b19390213db9:\n case $bd3c59ab25aed5ca$export$ed3b11a38dbfed2c:\n case $bd3c59ab25aed5ca$export$322843849bf6282:\n case $bd3c59ab25aed5ca$export$1982ce771bb0f0ea:\n this.pushPendingList(\"WHOIS \" + msg.params[1], msg);\n break;\n case $bd3c59ab25aed5ca$export$ec20f8e9d0ad5539:\n this.endPendingList(\"WHOIS \" + msg.params[1], msg);\n break;\n case $bd3c59ab25aed5ca$export$ea7f3a22477f88c4:\n case $bd3c59ab25aed5ca$export$f45306e17f085f4e:\n this.pushPendingList(\"WHO\", msg);\n break;\n case $bd3c59ab25aed5ca$export$1ea987b9a16ea266:\n this.endPendingList(\"WHO\", msg);\n break;\n case \"PING\":\n this.send({\n command: \"PONG\",\n params: [\n msg.params[0]\n ]\n });\n break;\n case \"NICK\":\n let newNick = msg.params[0];\n if (this.isMyNick(msg.prefix.name)) this.nick = newNick;\n break;\n case \"BATCH\":\n let enter = msg.params[0].startsWith(\"+\");\n let name = msg.params[0].slice(1);\n if (enter) {\n let batch = {\n name: name,\n type: msg.params[1],\n params: msg.params.slice(2),\n tags: msg.tags,\n parent: msgBatch\n };\n this.batches.set(name, batch);\n } else deleteBatch = name;\n break;\n case \"ERROR\":\n this.dispatchError(new $6796cfbd59091fe3$var$IRCError(msg));\n this.disconnect();\n break;\n case $bd3c59ab25aed5ca$export$9d6a3a6ab4c58e66:\n case $bd3c59ab25aed5ca$export$4743685aa8150ce0:\n case $bd3c59ab25aed5ca$export$8b9229ff310aa80f:\n case $bd3c59ab25aed5ca$export$7610afb40d396829:\n case $bd3c59ab25aed5ca$export$2b6618e870672e76:\n case $bd3c59ab25aed5ca$export$3ae3da5f6b8010ab:\n case $bd3c59ab25aed5ca$export$1e0e84545800b47a:\n this.dispatchError(new $6796cfbd59091fe3$var$IRCError(msg));\n if (this.status !== $6796cfbd59091fe3$export$2e2bcd8739ae039.Status.REGISTERED) this.disconnect();\n break;\n case \"FAIL\":\n if (this.status === $6796cfbd59091fe3$export$2e2bcd8739ae039.Status.REGISTERED) break;\n if (msg.params[0] === \"BOUNCER\" && msg.params[2] === \"BIND\") {\n this.dispatchError(new Error(\"Failed to bind to bouncer network\", {\n cause: new $6796cfbd59091fe3$var$IRCError(msg)\n }));\n this.disconnect();\n }\n if (msg.params[1] === \"ACCOUNT_REQUIRED\") {\n this.dispatchError(new $6796cfbd59091fe3$var$IRCError(msg));\n this.disconnect();\n }\n break;\n }\n this.dispatchEvent(new CustomEvent(\"message\", {\n detail: {\n message: msg,\n batch: msgBatch\n }\n }));\n // Delete after firing the message event so that handlers can access\n // the batch\n if (deleteBatch) this.batches.delete(deleteBatch);\n }\n authenticate(mechanism, params) {\n if (!this.supportsSASL(mechanism)) throw new Error(`${mechanism} authentication not supported by the server`);\n console.log(`Starting SASL ${mechanism} authentication`);\n // Send the first SASL response immediately to avoid a roundtrip\n let initialResp;\n switch(mechanism){\n case \"PLAIN\":\n initialResp = \"\\0\" + params.username + \"\\0\" + params.password;\n break;\n case \"EXTERNAL\":\n initialResp = \"\";\n break;\n case \"OAUTHBEARER\":\n initialResp = \"n,,\\x01auth=Bearer \" + params.token + \"\\x01\\x01\";\n break;\n default:\n throw new Error(`Unknown authentication mechanism '${mechanism}'`);\n }\n let startMsg = {\n command: \"AUTHENTICATE\",\n params: [\n mechanism\n ]\n };\n let promise = this.roundtrip(startMsg, (msg)=>{\n switch(msg.command){\n case $bd3c59ab25aed5ca$export$cba31abc2138b15e:\n return true;\n case $bd3c59ab25aed5ca$export$37e8d81e1e359f6e:\n case $bd3c59ab25aed5ca$export$724018c6aa2adbd0:\n case $bd3c59ab25aed5ca$export$47bb6ff9e6eba14f:\n case $bd3c59ab25aed5ca$export$aae27a063aae3a16:\n case $bd3c59ab25aed5ca$export$a74ae703a035d4a0:\n throw new $6796cfbd59091fe3$var$IRCError(msg);\n }\n });\n for (let msg of $bd3c59ab25aed5ca$export$e648536c94193d05(initialResp))this.send(msg);\n return promise;\n }\n who(mask, options) {\n let params = [\n mask\n ];\n let fields = \"\", token = \"\";\n if (options && this.isupport.whox()) {\n let match = \"\"; // Matches exact channel or nick\n fields = \"t\"; // Always include token in reply\n if (options.fields) options.fields.forEach((k)=>{\n if (!$6796cfbd59091fe3$var$WHOX_FIELDS[k]) throw new Error(`Unknown WHOX field ${k}`);\n fields += $6796cfbd59091fe3$var$WHOX_FIELDS[k];\n });\n token = String($6796cfbd59091fe3$var$lastWhoxToken % 1000);\n $6796cfbd59091fe3$var$lastWhoxToken++;\n params.push(`${match}%${fields},${token}`);\n this.whoxQueries.set(token, fields);\n }\n let msg = {\n command: \"WHO\",\n params: params\n };\n let l = [];\n let promise = this.pendingCmds.WHO.then(()=>{\n return this.roundtrip(msg, (msg)=>{\n switch(msg.command){\n case $bd3c59ab25aed5ca$export$ea7f3a22477f88c4:\n msg.internal = true;\n l.push(this.parseWhoReply(msg));\n break;\n case $bd3c59ab25aed5ca$export$f45306e17f085f4e:\n if (msg.params.length !== fields.length + 1 || msg.params[1] !== token) break;\n msg.internal = true;\n l.push(this.parseWhoReply(msg));\n break;\n case $bd3c59ab25aed5ca$export$1ea987b9a16ea266:\n if (msg.params[1] === mask) {\n msg.internal = true;\n return l;\n }\n break;\n }\n }).finally(()=>{\n this.whoxQueries.delete(token);\n });\n });\n this.pendingCmds.WHO = promise.catch(()=>{});\n return promise;\n }\n parseWhoReply(msg) {\n switch(msg.command){\n case $bd3c59ab25aed5ca$export$ea7f3a22477f88c4:\n let last = msg.params[msg.params.length - 1];\n return {\n username: msg.params[2],\n hostname: msg.params[3],\n server: msg.params[4],\n nick: msg.params[5],\n flags: msg.params[6],\n realname: last.slice(last.indexOf(\" \") + 1)\n };\n case $bd3c59ab25aed5ca$export$f45306e17f085f4e:\n let token = msg.params[1];\n let fields = this.whoxQueries.get(token);\n if (!fields) throw new Error(\"Unknown WHOX token: \" + token);\n let who = {};\n let i = 0;\n Object.keys($6796cfbd59091fe3$var$WHOX_FIELDS).forEach((k)=>{\n if (fields.indexOf($6796cfbd59091fe3$var$WHOX_FIELDS[k]) < 0) return;\n who[k] = msg.params[2 + i];\n i++;\n });\n if (who.account === \"0\") // WHOX uses \"0\" to mean \"no account\"\n who.account = null;\n return who;\n default:\n throw new Error(\"Not a WHO reply: \" + msg.command);\n }\n }\n whois(target) {\n let targetCM = this.cm(target);\n let msg = {\n command: \"WHOIS\",\n params: [\n target\n ]\n };\n return this.roundtrip(msg, (msg)=>{\n let nick;\n switch(msg.command){\n case $bd3c59ab25aed5ca$export$ec20f8e9d0ad5539:\n nick = msg.params[1];\n if (this.cm(nick) === targetCM) {\n let whois = {};\n msg.list.forEach((reply)=>{\n whois[reply.command] = reply;\n });\n return whois;\n }\n break;\n case $bd3c59ab25aed5ca$export$7ea30511ef6ec211:\n nick = msg.params[1];\n if (this.cm(nick) === targetCM) throw new $6796cfbd59091fe3$var$IRCError(msg);\n break;\n }\n });\n }\n supportsSASL(mech) {\n let saslCap = this.caps.available.get(\"sasl\");\n if (saslCap === undefined) return false;\n return saslCap.split(\",\").includes(mech);\n }\n checkAccountRegistrationCap(k) {\n let v = this.caps.available.get(\"draft/account-registration\");\n if (v === undefined) return false;\n return v.split(\",\").includes(k);\n }\n requestCaps() {\n let wantCaps = [].concat($6796cfbd59091fe3$var$permanentCaps);\n if (!this.params.bouncerNetwork) wantCaps.push(\"soju.im/bouncer-networks-notify\");\n if (this.params.eventPlayback) wantCaps.push(\"draft/event-playback\");\n let msg = this.caps.requestAvailable(wantCaps);\n if (msg) this.send(msg);\n }\n handleCap(msg) {\n this.caps.parse(msg);\n let subCmd = msg.params[1];\n let args = msg.params.slice(2);\n switch(subCmd){\n case \"LS\":\n this.supportsCap = true;\n if (args[0] === \"*\") break;\n console.log(\"Available server caps:\", this.caps.available);\n this.requestCaps();\n if (this.status !== $6796cfbd59091fe3$export$2e2bcd8739ae039.Status.REGISTERED) {\n if (this.caps.available.has(\"sasl\")) {\n let promise;\n if (this.params.saslPlain) promise = this.authenticate(\"PLAIN\", this.params.saslPlain);\n else if (this.params.saslExternal) promise = this.authenticate(\"EXTERNAL\");\n else if (this.params.saslOauthBearer) promise = this.authenticate(\"OAUTHBEARER\", this.params.saslOauthBearer);\n (promise || Promise.resolve()).catch((err)=>{\n this.dispatchError(err);\n this.disconnect();\n });\n }\n if (this.caps.available.has(\"soju.im/bouncer-networks\") && this.params.bouncerNetwork) this.send({\n command: \"BOUNCER\",\n params: [\n \"BIND\",\n this.params.bouncerNetwork\n ]\n });\n this.send({\n command: \"CAP\",\n params: [\n \"END\"\n ]\n });\n }\n break;\n case \"NEW\":\n console.log(\"Server added available caps:\", args[0]);\n this.requestCaps();\n break;\n case \"DEL\":\n console.log(\"Server removed available caps:\", args[0]);\n break;\n case \"ACK\":\n console.log(\"Server ack'ed caps:\", args[0]);\n break;\n case \"NAK\":\n console.log(\"Server nak'ed caps:\", args[0]);\n if (this.status !== $6796cfbd59091fe3$export$2e2bcd8739ae039.Status.REGISTERED) this.send({\n command: \"CAP\",\n params: [\n \"END\"\n ]\n });\n break;\n }\n }\n send(msg) {\n if (!this.ws) throw new Error(\"Failed to send IRC message \" + msg.command + \": socket is closed\");\n let raw = $bd3c59ab25aed5ca$export$25868d1e8e76735f(msg);\n this.ws.send(raw);\n if (this.debug) console.debug(\"Sent:\", raw);\n }\n updateCaseMapping() {\n this.cm = this.isupport.caseMapping();\n this.pendingLists = new $bd3c59ab25aed5ca$export$6296a711f00288b1(this.pendingLists, this.cm);\n this.monitored = new $bd3c59ab25aed5ca$export$6296a711f00288b1(this.monitored, this.cm);\n }\n isServer(name) {\n return name === \"*\" || this.cm(name) === this.cm(this.serverPrefix.name);\n }\n isMyNick(nick) {\n return this.cm(nick) === this.cm(this.nick);\n }\n isChannel(name) {\n let chanTypes = this.isupport.chanTypes();\n return chanTypes.indexOf(name[0]) >= 0;\n }\n isNick(name) {\n // A dollar sign is used for server-wide broadcasts\n return !this.isServer(name) && !this.isChannel(name) && !name.startsWith(\"$\");\n }\n setPingInterval(sec) {\n clearInterval(this.pingIntervalID);\n this.pingIntervalID = null;\n if (sec <= 0) return;\n this.pingIntervalID = setInterval(()=>{\n if (this.ws) this.send({\n command: \"PING\",\n params: [\n \"gamja\"\n ]\n });\n }, sec * 1000);\n }\n /* Execute a command that expects a response. `done` is called with message\n\t * events until it returns a truthy value. */ roundtrip(msg, done) {\n let cmd = msg.command;\n let label;\n if (this.caps.enabled.has(\"labeled-response\")) {\n $6796cfbd59091fe3$var$lastLabel++;\n label = String($6796cfbd59091fe3$var$lastLabel);\n msg.tags = {\n ...msg.tags,\n label: label\n };\n }\n return new Promise((resolve, reject)=>{\n let removeEventListeners;\n let handleMessage = (event)=>{\n let msg = event.detail.message;\n let msgLabel = $bd3c59ab25aed5ca$export$ec840f96613effe2(msg);\n if (msgLabel && msgLabel !== label) return;\n let isError = false;\n switch(msg.command){\n case \"FAIL\":\n isError = msg.params[0] === cmd;\n break;\n case $bd3c59ab25aed5ca$export$f0fc9feb21c3ef1b:\n case $bd3c59ab25aed5ca$export$da101e59b60ec32a:\n case $bd3c59ab25aed5ca$export$e9c321b4bd63421d:\n case $bd3c59ab25aed5ca$export$5075048a1d9ba016:\n isError = msg.params[1] === cmd;\n break;\n }\n if (isError) {\n removeEventListeners();\n reject(new $6796cfbd59091fe3$var$IRCError(msg));\n return;\n }\n let result;\n try {\n result = done(msg);\n } catch (err) {\n removeEventListeners();\n reject(err);\n }\n if (result) {\n removeEventListeners();\n resolve(result);\n }\n // TODO: handle end of labeled response somehow\n };\n let handleStatus = ()=>{\n if (this.status === $6796cfbd59091fe3$export$2e2bcd8739ae039.Status.DISCONNECTED) {\n removeEventListeners();\n reject(new Error(\"Connection closed\"));\n }\n };\n removeEventListeners = ()=>{\n this.removeEventListener(\"message\", handleMessage);\n this.removeEventListener(\"status\", handleStatus);\n };\n // Turn on capture to handle messages before external users and\n // have the opportunity to set the \"internal\" flag\n this.addEventListener(\"message\", handleMessage, {\n capture: true\n });\n this.addEventListener(\"status\", handleStatus);\n this.send(msg);\n });\n }\n join(channel, password) {\n let params = [\n channel\n ];\n if (password) params.push(password);\n let msg = {\n command: \"JOIN\",\n params: params\n };\n return this.roundtrip(msg, (msg)=>{\n switch(msg.command){\n case $bd3c59ab25aed5ca$export$b889507e4da9d85b:\n case $bd3c59ab25aed5ca$export$d9dd0c5028129ffb:\n case $bd3c59ab25aed5ca$export$cc57fea2b719b6fa:\n case $bd3c59ab25aed5ca$export$30b572b38bbeae93:\n case $bd3c59ab25aed5ca$export$6ce9c178695ddc97:\n case $bd3c59ab25aed5ca$export$1750cbcab1b05667:\n if (this.cm(msg.params[1]) === this.cm(channel)) throw new $6796cfbd59091fe3$var$IRCError(msg);\n break;\n case \"JOIN\":\n if (this.isMyNick(msg.prefix.name) && this.cm(msg.params[0]) === this.cm(channel)) return true;\n break;\n }\n });\n }\n fetchBatch(msg, batchType) {\n let batchName = null;\n let messages = [];\n return this.roundtrip(msg, (msg)=>{\n if (batchName) {\n let batch = msg.batch;\n while(batch){\n if (batch.name === batchName) {\n messages.push(msg);\n break;\n }\n batch = batch.parent;\n }\n }\n if (msg.command !== \"BATCH\") return;\n let enter = msg.params[0].startsWith(\"+\");\n let name = msg.params[0].slice(1);\n if (enter && msg.params[1] === batchType) {\n batchName = name;\n return;\n }\n if (!enter && name === batchName) return {\n ...this.batches.get(name),\n messages: messages\n };\n });\n }\n roundtripChatHistory(params) {\n // Don't send multiple CHATHISTORY commands in parallel, we can't\n // properly handle batches and errors.\n let promise = this.pendingCmds.CHATHISTORY.then(()=>{\n let msg = {\n command: \"CHATHISTORY\",\n params: params\n };\n return this.fetchBatch(msg, \"chathistory\").then((batch)=>batch.messages);\n });\n this.pendingCmds.CHATHISTORY = promise.catch(()=>{});\n return promise;\n }\n /* Fetch one page of history before the given date. */ async fetchHistoryBefore(target, before, limit) {\n let max = Math.min(limit, this.isupport.chatHistory());\n let params = [\n \"BEFORE\",\n target,\n \"timestamp=\" + before,\n max\n ];\n let messages = await this.roundtripChatHistory(params);\n return {\n messages: messages,\n more: messages.length >= max\n };\n }\n /* Fetch history in ascending order. */ async fetchHistoryBetween(target, after, before, limit) {\n let max = Math.min(limit, this.isupport.chatHistory());\n let params = [\n \"AFTER\",\n target,\n \"timestamp=\" + after.time,\n max\n ];\n let messages = await this.roundtripChatHistory(params);\n limit -= messages.length;\n if (limit <= 0) throw new Error(\"Cannot fetch all chat history: too many messages\");\n if (messages.length >= max) {\n // There are still more messages to fetch\n after = {\n ...after,\n time: messages[messages.length - 1].tags.time\n };\n return await this.fetchHistoryBetween(target, after, before, limit);\n }\n return {\n messages: messages\n };\n }\n async fetchHistoryTargets(t1, t2) {\n let msg = {\n command: \"CHATHISTORY\",\n params: [\n \"TARGETS\",\n \"timestamp=\" + t1,\n \"timestamp=\" + t2,\n 1000\n ]\n };\n let batch = await this.fetchBatch(msg, \"draft/chathistory-targets\");\n return batch.messages.map((msg)=>{\n console.assert(msg.command === \"CHATHISTORY\" && msg.params[0] === \"TARGETS\");\n return {\n name: msg.params[1],\n latestMessage: msg.params[2]\n };\n });\n }\n async listBouncerNetworks() {\n let req = {\n command: \"BOUNCER\",\n params: [\n \"LISTNETWORKS\"\n ]\n };\n let batch = await this.fetchBatch(req, \"soju.im/bouncer-networks\");\n let networks = new Map();\n for (let msg of batch.messages){\n console.assert(msg.command === \"BOUNCER\" && msg.params[0] === \"NETWORK\");\n let id = msg.params[1];\n let params = $bd3c59ab25aed5ca$export$ede4b2e0172bbdb1(msg.params[2]);\n networks.set(id, params);\n }\n return networks;\n }\n monitor(target) {\n if (this.monitored.has(target)) return;\n this.monitored.set(target, true);\n // TODO: add poll-based fallback when MONITOR is not supported\n if (this.monitored.size + 1 > this.isupport.monitor()) return;\n this.send({\n command: \"MONITOR\",\n params: [\n \"+\",\n target\n ]\n });\n }\n unmonitor(target) {\n if (!this.monitored.has(target)) return;\n this.monitored.delete(target);\n if (this.isupport.monitor() <= 0) return;\n this.send({\n command: \"MONITOR\",\n params: [\n \"-\",\n target\n ]\n });\n }\n createBouncerNetwork(attrs) {\n let msg = {\n command: \"BOUNCER\",\n params: [\n \"ADDNETWORK\",\n $bd3c59ab25aed5ca$export$c27de7dba30c634a(attrs)\n ]\n };\n return this.roundtrip(msg, (msg)=>{\n if (msg.command === \"BOUNCER\" && msg.params[0] === \"ADDNETWORK\") return msg.params[1];\n });\n }\n registerAccount(email, password) {\n let msg = {\n command: \"REGISTER\",\n params: [\n \"*\",\n email || \"*\",\n password\n ]\n };\n return this.roundtrip(msg, (msg)=>{\n if (msg.command !== \"REGISTER\") return;\n let result = msg.params[0];\n return {\n verificationRequired: result === \"VERIFICATION_REQUIRED\",\n account: msg.params[1],\n message: msg.params[2]\n };\n });\n }\n verifyAccount(account, code) {\n let msg = {\n command: \"VERIFY\",\n params: [\n account,\n code\n ]\n };\n return this.roundtrip(msg, (msg)=>{\n if (msg.command !== \"VERIFY\") return;\n return {\n message: msg.params[2]\n };\n });\n }\n supportsReadMarker() {\n return this.caps.enabled.has(\"draft/read-marker\");\n }\n fetchReadMarker(target) {\n this.send({\n command: \"MARKREAD\",\n params: [\n target\n ]\n });\n }\n setReadMarker(target, t) {\n this.send({\n command: \"MARKREAD\",\n params: [\n target,\n \"timestamp=\" + t\n ]\n });\n }\n}\n\n\nfunction $572a887a57d3418e$var$formatQueryString(params) {\n let l = [];\n for(let k in params)l.push(encodeURIComponent(k) + \"=\" + encodeURIComponent(params[k]));\n return l.join(\"&\");\n}\nasync function $572a887a57d3418e$export$9326d7767c1b7bbc(url) {\n // TODO: handle path in config.oauth2.url\n let resp;\n try {\n resp = await fetch(url + \"/.well-known/oauth-authorization-server\");\n if (!resp.ok) throw new Error(`HTTP error: ${resp.status} ${resp.statusText}`);\n } catch (err) {\n console.warn(\"OAuth 2.0 server doesn't support Authorization Server Metadata (retrying with OpenID Connect Discovery): \", err);\n resp = await fetch(url + \"/.well-known/openid-configuration\");\n if (!resp.ok) throw new Error(`HTTP error: ${resp.status} ${resp.statusText}`);\n }\n let data = await resp.json();\n if (!data.issuer) throw new Error(\"Missing issuer in response\");\n if (!data.authorization_endpoint) throw new Error(\"Missing authorization_endpoint in response\");\n if (!data.token_endpoint) throw new Error(\"Missing authorization_endpoint in response\");\n if (!data.response_types_supported.includes(\"code\")) throw new Error(\"Server doesn't support authorization code response type\");\n return data;\n}\nfunction $572a887a57d3418e$export$425e62132119a96f({ serverMetadata: serverMetadata, clientId: clientId, redirectUri: redirectUri, scope: scope }) {\n // TODO: move fragment to query string in redirect_uri\n // TODO: use the state param to prevent cross-site request\n // forgery\n let params = {\n \"response_type\": \"code\",\n \"client_id\": clientId,\n \"redirect_uri\": redirectUri\n };\n if (scope) params.scope = scope;\n window.location.assign(serverMetadata.authorization_endpoint + \"?\" + $572a887a57d3418e$var$formatQueryString(params));\n}\nfunction $572a887a57d3418e$var$buildPostHeaders(clientId, clientSecret) {\n let headers = {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"Accept\": \"application/json\"\n };\n if (clientSecret) headers[\"Authorization\"] = \"Basic \" + btoa(encodeURIComponent(clientId) + \":\" + encodeURIComponent(clientSecret));\n return headers;\n}\nasync function $572a887a57d3418e$export$97e44d582df4b68f({ serverMetadata: serverMetadata, redirectUri: redirectUri, code: code, clientId: clientId, clientSecret: clientSecret }) {\n let data = {\n \"grant_type\": \"authorization_code\",\n code: code,\n \"redirect_uri\": redirectUri\n };\n if (!clientSecret) data[\"client_id\"] = clientId;\n let resp = await fetch(serverMetadata.token_endpoint, {\n method: \"POST\",\n headers: $572a887a57d3418e$var$buildPostHeaders(clientId, clientSecret),\n body: $572a887a57d3418e$var$formatQueryString(data)\n });\n if (!resp.ok) throw new Error(`HTTP error: ${resp.status} ${resp.statusText}`);\n data = await resp.json();\n if (data.error) throw new Error(\"Authentication failed: \" + (data.error_description || data.error));\n return data;\n}\nasync function $572a887a57d3418e$export$e03aeda7cfb66622({ serverMetadata: serverMetadata, token: token, clientId: clientId, clientSecret: clientSecret }) {\n let resp = await fetch(serverMetadata.introspection_endpoint, {\n method: \"POST\",\n headers: $572a887a57d3418e$var$buildPostHeaders(clientId, clientSecret),\n body: $572a887a57d3418e$var$formatQueryString({\n token: token\n })\n });\n if (!resp.ok) throw new Error(`HTTP error: ${resp.status} ${resp.statusText}`);\n let data = await resp.json();\n if (!data.active) throw new Error(\"Expired token\");\n return data;\n}\n\n\n\n\n(0, $efca0cb2e3ea1e67$exports).options.defaults.defaultProtocol = \"https\";\n(0, $efca0cb2e3ea1e67$exports).registerCustomProtocol(\"irc\");\n(0, $efca0cb2e3ea1e67$exports).registerCustomProtocol(\"ircs\");\n(0, $efca0cb2e3ea1e67$exports).registerCustomProtocol(\"geo\", true);\nconst $37d24d778c2f247c$var$IRCChannelToken = (0, $efca0cb2e3ea1e67$exports).createTokenClass(\"ircChannel\", {\n isLink: true,\n toHref () {\n return \"irc:///\" + this.v;\n }\n});\n(0, $efca0cb2e3ea1e67$exports).registerPlugin(\"ircChannel\", ({ scanner: scanner, parser: parser })=>{\n const { POUND: POUND, UNDERSCORE: UNDERSCORE, DOT: DOT, HYPHEN: HYPHEN } = scanner.tokens;\n const { alphanumeric: alphanumeric } = scanner.tokens.groups;\n const Prefix = parser.start.tt(POUND);\n const Channel = new (0, $efca0cb2e3ea1e67$exports).State($37d24d778c2f247c$var$IRCChannelToken);\n const Divider = Channel.tt(DOT);\n Prefix.ta(alphanumeric, Channel);\n Prefix.tt(POUND, Channel);\n Prefix.tt(UNDERSCORE, Channel);\n Prefix.tt(DOT, Divider);\n Prefix.tt(HYPHEN, Channel);\n Channel.ta(alphanumeric, Channel);\n Channel.tt(POUND, Channel);\n Channel.tt(UNDERSCORE, Channel);\n Channel.tt(HYPHEN, Channel);\n Divider.ta(alphanumeric, Channel);\n});\nfunction $37d24d778c2f247c$export$2e2bcd8739ae039(text, onClick) {\n let links = (0, $efca0cb2e3ea1e67$exports).find(text);\n let children = [];\n let last = 0;\n links.forEach((match)=>{\n if (!match.isLink) return;\n const prefix = text.substring(last, match.start);\n children.push(prefix);\n children.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t${match.value}\n\t\t`);\n last = match.end;\n });\n const suffix = text.substring(last);\n children.push(suffix);\n return children;\n}\n\n\n\n// See https://modern.ircdocs.horse/formatting.html\nconst $803ef401580605c5$var$BOLD = \"\\x02\";\nconst $803ef401580605c5$var$ITALIC = \"\\x1D\";\nconst $803ef401580605c5$var$UNDERLINE = \"\\x1F\";\nconst $803ef401580605c5$var$STRIKETHROUGH = \"\\x1E\";\nconst $803ef401580605c5$var$MONOSPACE = \"\\x11\";\nconst $803ef401580605c5$var$COLOR = \"\\x03\";\nconst $803ef401580605c5$var$COLOR_HEX = \"\\x04\";\nconst $803ef401580605c5$var$REVERSE_COLOR = \"\\x16\";\nconst $803ef401580605c5$var$RESET = \"\\x0F\";\nconst $803ef401580605c5$var$HEX_COLOR_LENGTH = 6;\nfunction $803ef401580605c5$var$isDigit(ch) {\n return ch >= \"0\" && ch <= \"9\";\n}\nfunction $803ef401580605c5$var$isHexColor(text) {\n if (text.length < $803ef401580605c5$var$HEX_COLOR_LENGTH) return false;\n for(let i = 0; i < $803ef401580605c5$var$HEX_COLOR_LENGTH; i++){\n let ch = text[i].toUpperCase();\n let ok = ch >= \"0\" && ch <= \"9\" || ch >= \"A\" && ch <= \"F\";\n if (!ok) return false;\n }\n return true;\n}\nfunction $803ef401580605c5$export$6a0f863afc2134d8(text) {\n let out = \"\";\n for(let i = 0; i < text.length; i++){\n let ch = text[i];\n switch(ch){\n case $803ef401580605c5$var$BOLD:\n case $803ef401580605c5$var$ITALIC:\n case $803ef401580605c5$var$UNDERLINE:\n case $803ef401580605c5$var$STRIKETHROUGH:\n case $803ef401580605c5$var$MONOSPACE:\n case $803ef401580605c5$var$REVERSE_COLOR:\n case $803ef401580605c5$var$RESET:\n break; // skip\n case $803ef401580605c5$var$COLOR:\n if (!$803ef401580605c5$var$isDigit(text[i + 1])) break;\n i++;\n if ($803ef401580605c5$var$isDigit(text[i + 1])) i++;\n if (text[i + 1] === \",\" && $803ef401580605c5$var$isDigit(text[i + 2])) {\n i += 2;\n if ($803ef401580605c5$var$isDigit(text[i + 1])) i++;\n }\n break;\n case $803ef401580605c5$var$COLOR_HEX:\n if (!$803ef401580605c5$var$isHexColor(text.slice(i + 1))) break;\n i += $803ef401580605c5$var$HEX_COLOR_LENGTH;\n if (text[i + 1] === \",\" && $803ef401580605c5$var$isHexColor(text.slice(i + 2))) i += 1 + $803ef401580605c5$var$HEX_COLOR_LENGTH;\n break;\n default:\n out += ch;\n }\n }\n return out;\n}\n\n\n\n\n\nconst $fca64bf918d5638f$export$50f2960994553271 = \"*\";\nconst $fca64bf918d5638f$export$a9b603917c4d9863 = {\n SERVER: \"server\",\n CHANNEL: \"channel\",\n NICK: \"nick\"\n};\nconst $fca64bf918d5638f$export$ac0b13ba2bbce4d5 = (0, $6796cfbd59091fe3$export$2e2bcd8739ae039).Status;\nconst $fca64bf918d5638f$export$9be0a2424da959ae = {\n NONE: \"\",\n MESSAGE: \"message\",\n HIGHLIGHT: \"highlight\",\n compare (a, b) {\n const priority = {\n [$fca64bf918d5638f$export$9be0a2424da959ae.NONE]: 0,\n [$fca64bf918d5638f$export$9be0a2424da959ae.MESSAGE]: 1,\n [$fca64bf918d5638f$export$9be0a2424da959ae.HIGHLIGHT]: 2\n };\n return priority[a] - priority[b];\n },\n union (a, b) {\n return $fca64bf918d5638f$export$9be0a2424da959ae.compare(a, b) > 0 ? a : b;\n }\n};\nconst $fca64bf918d5638f$export$c49c54eaac29b59a = {\n DELIVERED: \"delivered\",\n READ: \"read\"\n};\nconst $fca64bf918d5638f$export$3ee12e3d13dfa897 = {\n FOLD: \"fold\",\n EXPAND: \"expand\",\n HIDE: \"hide\"\n};\nconst $fca64bf918d5638f$export$8fa45c82eddfe270 = (0, $b2a774aae58c7b4e$export$fd42f52fd3ae1109)(\"settings\");\nfunction $fca64bf918d5638f$export$64b0f097aebd4e10(buf) {\n switch(buf.type){\n case $fca64bf918d5638f$export$a9b603917c4d9863.SERVER:\n return $bd3c59ab25aed5ca$export$b1ef46223b559f9d();\n case $fca64bf918d5638f$export$a9b603917c4d9863.CHANNEL:\n return $bd3c59ab25aed5ca$export$b1ef46223b559f9d({\n entity: buf.name\n });\n case $fca64bf918d5638f$export$a9b603917c4d9863.NICK:\n return $bd3c59ab25aed5ca$export$b1ef46223b559f9d({\n entity: buf.name,\n enttype: \"user\"\n });\n }\n throw new Error(\"Unknown buffer type: \" + buf.type);\n}\nfunction $fca64bf918d5638f$export$8499bd1ed7c872c2(buf, msg) {\n let bufURL = $fca64bf918d5638f$export$64b0f097aebd4e10(buf);\n if (msg.tags.msgid) return bufURL + \"?msgid=\" + encodeURIComponent(msg.tags.msgid);\n else return bufURL + \"?timestamp=\" + encodeURIComponent(msg.tags.time);\n}\nfunction $fca64bf918d5638f$export$53e73e095c2ac1e2(server, bouncerNetwork) {\n let netName = server.name;\n if (bouncerNetwork && bouncerNetwork.name && bouncerNetwork.name !== bouncerNetwork.host) // User has picked a custom name for the network, use that\n return bouncerNetwork.name;\n if (netName) // Server has specified a name\n return netName;\n if (bouncerNetwork) return bouncerNetwork.name || bouncerNetwork.host || \"server\";\n else if (server.isBouncer) return \"bouncer\";\n else return \"server\";\n}\nfunction $fca64bf918d5638f$export$1274528beb7cd977(msg) {\n // At this point all messages are supposed to have a time tag.\n // App.addMessage ensures this is the case even if the server doesn't\n // support server-time.\n if (!msg.tags.time) throw new Error(\"Missing time message tag\");\n return {\n time: msg.tags.time\n };\n}\nfunction $fca64bf918d5638f$export$4f7e80d679306a83(a, b) {\n if (!b) return false;\n if (!a) return true;\n if (!a.time || !b.time) throw new Error(\"Missing receipt time\");\n return a.time <= b.time;\n}\nfunction $fca64bf918d5638f$export$23261bae4c963bb3(msg, receipt) {\n if (!receipt) return false;\n if (!msg.tags.time) throw new Error(\"Missing time message tag\");\n if (!receipt.time) throw new Error(\"Missing receipt time\");\n return msg.tags.time <= receipt.time;\n}\nfunction $fca64bf918d5638f$var$updateState(state, updater) {\n let updated;\n if (typeof updater === \"function\") updated = updater(state, state);\n else updated = updater;\n if (state === updated || !updated) return;\n return {\n ...state,\n ...updated\n };\n}\nfunction $fca64bf918d5638f$var$isServerBuffer(buf) {\n return buf.type === $fca64bf918d5638f$export$a9b603917c4d9863.SERVER;\n}\nfunction $fca64bf918d5638f$var$isChannelBuffer(buf) {\n return buf.type === $fca64bf918d5638f$export$a9b603917c4d9863.CHANNEL;\n}\nfunction $fca64bf918d5638f$var$trimStartCharacter(s, c) {\n let i = 0;\n for(; i < s.length; ++i){\n if (s[i] !== c) break;\n }\n return s.substring(i);\n}\n/* Returns 1 if a should appear after b, -1 if a should appear before b, or\n * 0 otherwise. */ function $fca64bf918d5638f$var$compareBuffers(a, b) {\n if (a.server !== b.server) return a.server > b.server ? 1 : -1;\n if ($fca64bf918d5638f$var$isServerBuffer(a) !== $fca64bf918d5638f$var$isServerBuffer(b)) return $fca64bf918d5638f$var$isServerBuffer(b) ? 1 : -1;\n if ($fca64bf918d5638f$var$isChannelBuffer(a) && $fca64bf918d5638f$var$isChannelBuffer(b)) {\n const strippedA = $fca64bf918d5638f$var$trimStartCharacter(a.name, a.name[0]);\n const strippedB = $fca64bf918d5638f$var$trimStartCharacter(b.name, b.name[0]);\n const cmp = strippedA.localeCompare(strippedB);\n if (cmp !== 0) return cmp;\n // if they are the same when stripped, fallthough to default logic\n }\n return a.name.localeCompare(b.name);\n}\nfunction $fca64bf918d5638f$var$updateMembership(membership, letter, add, client) {\n let prefix = client.isupport.prefix();\n let prefixPrivs = new Map($bd3c59ab25aed5ca$export$3b27c9ff97cdb350(prefix).map((membership, i)=>{\n return [\n membership.prefix,\n i\n ];\n }));\n if (add) {\n let i = membership.indexOf(letter);\n if (i < 0) {\n membership += letter;\n membership = Array.from(membership).sort((a, b)=>{\n return prefixPrivs.get(a) - prefixPrivs.get(b);\n }).join(\"\");\n }\n } else membership = membership.replace(letter, \"\");\n return membership;\n}\n/* Insert a message in an immutable list of sorted messages. */ function $fca64bf918d5638f$var$insertMessage(list, msg) {\n if (list.length === 0) return [\n msg\n ];\n else if (!$bd3c59ab25aed5ca$export$f4751a564f6d84a3(msg, \"chathistory\") || list[list.length - 1].tags.time <= msg.tags.time) return list.concat(msg);\n let insertBefore = -1;\n for(let i = 0; i < list.length; i++){\n let other = list[i];\n if (msg.tags.time < other.tags.time) {\n insertBefore = i;\n break;\n }\n }\n console.assert(insertBefore >= 0, \"\");\n list = [\n ...list\n ];\n list.splice(insertBefore, 0, msg);\n return list;\n}\nlet $fca64bf918d5638f$var$lastServerID = 0;\nlet $fca64bf918d5638f$var$lastBufferID = 0;\nlet $fca64bf918d5638f$var$lastMessageKey = 0;\nconst $fca64bf918d5638f$export$7254cc27399e90bd = {\n create () {\n return {\n servers: new Map(),\n buffers: new Map(),\n activeBuffer: null,\n bouncerNetworks: new Map(),\n settings: {\n secondsInTimestamps: true,\n bufferEvents: $fca64bf918d5638f$export$3ee12e3d13dfa897.FOLD\n }\n };\n },\n updateServer (state, id, updater) {\n let server = state.servers.get(id);\n if (!server) return;\n let updated = $fca64bf918d5638f$var$updateState(server, updater);\n if (!updated) return;\n let servers = new Map(state.servers);\n servers.set(id, updated);\n return {\n servers: servers\n };\n },\n updateBuffer (state, id, updater) {\n let buf = $fca64bf918d5638f$export$7254cc27399e90bd.getBuffer(state, id);\n if (!buf) return;\n let updated = $fca64bf918d5638f$var$updateState(buf, updater);\n if (!updated) return;\n let buffers = new Map(state.buffers);\n buffers.set(buf.id, updated);\n return {\n buffers: buffers\n };\n },\n getActiveServerID (state) {\n let buf = state.buffers.get(state.activeBuffer);\n if (!buf) return null;\n return buf.server;\n },\n getBuffer (state, id) {\n switch(typeof id){\n case \"number\":\n return state.buffers.get(id);\n case \"object\":\n if (id.id) return state.buffers.get(id.id);\n let serverID = id.server, name = id.name;\n if (!serverID) serverID = $fca64bf918d5638f$export$7254cc27399e90bd.getActiveServerID(state);\n if (!name) name = $fca64bf918d5638f$export$50f2960994553271;\n let cm = $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459;\n let server = state.servers.get(serverID);\n if (server) cm = server.cm;\n let nameCM = cm(name);\n for (let buf of state.buffers.values()){\n if (buf.server === serverID && cm(buf.name) === nameCM) return buf;\n }\n return null;\n default:\n throw new Error(\"Invalid buffer ID type: \" + typeof id);\n }\n },\n createServer (state) {\n $fca64bf918d5638f$var$lastServerID++;\n let id = $fca64bf918d5638f$var$lastServerID;\n let servers = new Map(state.servers);\n servers.set(id, {\n id: id,\n name: null,\n status: $fca64bf918d5638f$export$ac0b13ba2bbce4d5.DISCONNECTED,\n cm: $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459,\n users: new $bd3c59ab25aed5ca$export$6296a711f00288b1(null, $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459),\n account: null,\n supportsSASLPlain: false,\n supportsAccountRegistration: false,\n reliableUserAccounts: false,\n statusMsg: null,\n isBouncer: false,\n bouncerNetID: null\n });\n return [\n id,\n {\n servers: servers\n }\n ];\n },\n createBuffer (state, name, serverID, client) {\n let buf = $fca64bf918d5638f$export$7254cc27399e90bd.getBuffer(state, {\n server: serverID,\n name: name\n });\n if (buf) return [\n buf.id,\n null\n ];\n $fca64bf918d5638f$var$lastBufferID++;\n let id = $fca64bf918d5638f$var$lastBufferID;\n let type;\n if (name === $fca64bf918d5638f$export$50f2960994553271) type = $fca64bf918d5638f$export$a9b603917c4d9863.SERVER;\n else if (client.isChannel(name)) type = $fca64bf918d5638f$export$a9b603917c4d9863.CHANNEL;\n else type = $fca64bf918d5638f$export$a9b603917c4d9863.NICK;\n let bufferList = Array.from(state.buffers.values());\n bufferList.push({\n id: id,\n name: name,\n type: type,\n server: serverID,\n serverInfo: null,\n joined: false,\n topic: null,\n hasInitialWho: false,\n members: new $bd3c59ab25aed5ca$export$6296a711f00288b1(null, client.cm),\n messages: [],\n unread: $fca64bf918d5638f$export$9be0a2424da959ae.NONE,\n prevReadReceipt: null\n });\n bufferList = bufferList.sort($fca64bf918d5638f$var$compareBuffers);\n let buffers = new Map(bufferList.map((buf)=>[\n buf.id,\n buf\n ]));\n return [\n id,\n {\n buffers: buffers\n }\n ];\n },\n storeBouncerNetwork (state, id, attrs) {\n let bouncerNetworks = new Map(state.bouncerNetworks);\n bouncerNetworks.set(id, {\n ...bouncerNetworks.get(id),\n ...attrs\n });\n return {\n bouncerNetworks: bouncerNetworks\n };\n },\n deleteBouncerNetwork (state, id) {\n let bouncerNetworks = new Map(state.bouncerNetworks);\n bouncerNetworks.delete(id);\n return {\n bouncerNetworks: bouncerNetworks\n };\n },\n handleMessage (state, msg, serverID, client) {\n function updateServer(updater) {\n return $fca64bf918d5638f$export$7254cc27399e90bd.updateServer(state, serverID, updater);\n }\n function updateBuffer(name, updater) {\n return $fca64bf918d5638f$export$7254cc27399e90bd.updateBuffer(state, {\n server: serverID,\n name: name\n }, updater);\n }\n function updateUser(name, updater) {\n return updateServer((server)=>{\n let users = new $bd3c59ab25aed5ca$export$6296a711f00288b1(server.users);\n let updated = $fca64bf918d5638f$var$updateState(users.get(name), updater);\n if (!updated) return;\n users.set(name, updated);\n return {\n users: users\n };\n });\n }\n // Don't update our internal state if it's a chat history message\n if ($bd3c59ab25aed5ca$export$f4751a564f6d84a3(msg, \"chathistory\")) return;\n let target, channel, topic, targets, who, update, buffers;\n switch(msg.command){\n case $bd3c59ab25aed5ca$export$31b0bce566d09826:\n // TODO: parse available modes\n let serverInfo = {\n name: msg.params[1],\n version: msg.params[2]\n };\n return updateBuffer($fca64bf918d5638f$export$50f2960994553271, {\n serverInfo: serverInfo\n });\n case $bd3c59ab25aed5ca$export$1d0c7ae9b6b17819:\n buffers = new Map(state.buffers);\n state.buffers.forEach((buf)=>{\n if (buf.server !== serverID) return;\n let members = new $bd3c59ab25aed5ca$export$6296a711f00288b1(buf.members, client.cm);\n buffers.set(buf.id, {\n ...buf,\n members: members\n });\n });\n return {\n buffers: buffers,\n ...updateServer((server)=>{\n return {\n name: client.isupport.network(),\n cm: client.cm,\n users: new $bd3c59ab25aed5ca$export$6296a711f00288b1(server.users, client.cm),\n reliableUserAccounts: client.isupport.monitor() > 0 && client.isupport.whox(),\n statusMsg: client.isupport.statusMsg(),\n bouncerNetID: client.isupport.bouncerNetID()\n };\n })\n };\n case \"CAP\":\n return updateServer({\n supportsSASLPlain: client.supportsSASL(\"PLAIN\"),\n supportsAccountRegistration: client.caps.enabled.has(\"draft/account-registration\"),\n isBouncer: client.caps.enabled.has(\"soju.im/bouncer-networks\")\n });\n case $bd3c59ab25aed5ca$export$97b01f8c0b76e599:\n return updateServer({\n account: msg.params[2]\n });\n case $bd3c59ab25aed5ca$export$3ae55a67359785dc:\n return updateServer({\n account: null\n });\n case \"REGISTER\":\n case \"VERIFY\":\n if (msg.params[0] === \"SUCCESS\") return updateServer({\n account: msg.params[1]\n });\n break;\n case $bd3c59ab25aed5ca$export$a675057415015158:\n channel = msg.params[1];\n return updateBuffer(channel, {\n topic: null\n });\n case $bd3c59ab25aed5ca$export$c233ee342453910:\n channel = msg.params[1];\n topic = msg.params[2];\n return updateBuffer(channel, {\n topic: topic\n });\n case $bd3c59ab25aed5ca$export$b1fa6c92095fdab1:\n break;\n case $bd3c59ab25aed5ca$export$698923df90b7ea6d:\n channel = msg.params[1];\n return updateBuffer(channel, (buf)=>{\n let members = new $bd3c59ab25aed5ca$export$6296a711f00288b1(null, buf.members.caseMap);\n msg.list.forEach((namreply)=>{\n let membersList = namreply.params[3].split(\" \");\n membersList.forEach((s)=>{\n let member = $bd3c59ab25aed5ca$export$4812b7165edd26af(s);\n members.set(member.name, member.prefix);\n });\n });\n return {\n members: members\n };\n });\n case $bd3c59ab25aed5ca$export$1ea987b9a16ea266:\n target = msg.params[1];\n if (msg.list.length === 0 && !client.isChannel(target) && target.indexOf(\"*\") < 0) // Not a channel nor a mask, likely a nick\n return updateUser(target, (user)=>{\n return {\n offline: true\n };\n });\n else return updateServer((server)=>{\n let users = new $bd3c59ab25aed5ca$export$6296a711f00288b1(server.users);\n for (let reply of msg.list){\n let who = client.parseWhoReply(reply);\n if (who.flags !== undefined) {\n who.away = who.flags.indexOf(\"G\") >= 0; // H for here, G for gone\n who.operator = who.flags.indexOf(\"*\") >= 0;\n let botFlag = client.isupport.bot();\n if (botFlag) who.bot = who.flags.indexOf(botFlag) >= 0;\n delete who.flags;\n }\n who.offline = false;\n users.set(who.nick, who);\n }\n return {\n users: users\n };\n });\n case \"JOIN\":\n channel = msg.params[0];\n if (client.isMyNick(msg.prefix.name)) {\n let [_id, update] = $fca64bf918d5638f$export$7254cc27399e90bd.createBuffer(state, channel, serverID, client);\n state = {\n ...state,\n ...update\n };\n }\n update = updateBuffer(channel, (buf)=>{\n let members = new $bd3c59ab25aed5ca$export$6296a711f00288b1(buf.members);\n members.set(msg.prefix.name, \"\");\n let joined = buf.joined || client.isMyNick(msg.prefix.name);\n return {\n members: members,\n joined: joined\n };\n });\n state = {\n ...state,\n ...update\n };\n who = {\n nick: msg.prefix.name,\n offline: false\n };\n if (msg.prefix.user) who.username = msg.prefix.user;\n if (msg.prefix.host) who.hostname = msg.prefix.host;\n if (msg.params.length > 2) {\n who.account = msg.params[1];\n if (who.account === \"*\") who.account = null;\n who.realname = msg.params[2];\n }\n update = updateUser(msg.prefix.name, who);\n state = {\n ...state,\n ...update\n };\n return state;\n case \"PART\":\n channel = msg.params[0];\n return updateBuffer(channel, (buf)=>{\n let members = new $bd3c59ab25aed5ca$export$6296a711f00288b1(buf.members);\n members.delete(msg.prefix.name);\n let joined = buf.joined && !client.isMyNick(msg.prefix.name);\n return {\n members: members,\n joined: joined\n };\n });\n case \"KICK\":\n channel = msg.params[0];\n let nick = msg.params[1];\n return updateBuffer(channel, (buf)=>{\n let members = new $bd3c59ab25aed5ca$export$6296a711f00288b1(buf.members);\n members.delete(nick);\n let joined = buf.joined && !client.isMyNick(nick);\n return {\n members: members,\n joined: joined\n };\n });\n case \"QUIT\":\n buffers = new Map(state.buffers);\n state.buffers.forEach((buf)=>{\n if (buf.server !== serverID) return;\n if (!buf.members.has(msg.prefix.name)) return;\n let members = new $bd3c59ab25aed5ca$export$6296a711f00288b1(buf.members);\n members.delete(msg.prefix.name);\n buffers.set(buf.id, {\n ...buf,\n members: members\n });\n });\n state = {\n ...state,\n buffers: buffers\n };\n update = updateUser(msg.prefix.name, (user)=>{\n if (!user) return;\n return {\n offline: true\n };\n });\n state = {\n ...state,\n ...update\n };\n return state;\n case \"NICK\":\n let newNick = msg.params[0];\n buffers = new Map(state.buffers);\n state.buffers.forEach((buf)=>{\n if (buf.server !== serverID) return;\n if (!buf.members.has(msg.prefix.name)) return;\n let members = new $bd3c59ab25aed5ca$export$6296a711f00288b1(buf.members);\n members.set(newNick, members.get(msg.prefix.name));\n members.delete(msg.prefix.name);\n buffers.set(buf.id, {\n ...buf,\n members: members\n });\n });\n state = {\n ...state,\n buffers: buffers\n };\n update = updateServer((server)=>{\n let users = new $bd3c59ab25aed5ca$export$6296a711f00288b1(server.users);\n let user = users.get(msg.prefix.name);\n if (!user) return;\n users.set(newNick, user);\n users.delete(msg.prefix.name);\n return {\n users: users\n };\n });\n state = {\n ...state,\n ...update\n };\n return state;\n case \"SETNAME\":\n return updateUser(msg.prefix.name, {\n realname: msg.params[0]\n });\n case \"CHGHOST\":\n return updateUser(msg.prefix.name, {\n username: msg.params[0],\n hostname: msg.params[1]\n });\n case \"ACCOUNT\":\n let account = msg.params[0];\n if (account === \"*\") account = null;\n return updateUser(msg.prefix.name, {\n account: account\n });\n case \"AWAY\":\n let awayMessage = msg.params[0];\n return updateUser(msg.prefix.name, {\n away: Boolean(awayMessage)\n });\n case \"TOPIC\":\n channel = msg.params[0];\n topic = msg.params[1];\n return updateBuffer(channel, {\n topic: topic\n });\n case \"MODE\":\n target = msg.params[0];\n if (!client.isChannel(target)) return; // TODO: handle user mode changes too\n let prefix = client.isupport.prefix();\n let prefixByMode = new Map($bd3c59ab25aed5ca$export$3b27c9ff97cdb350(prefix).map((membership)=>{\n return [\n membership.mode,\n membership.prefix\n ];\n }));\n return updateBuffer(target, (buf)=>{\n let members = new $bd3c59ab25aed5ca$export$6296a711f00288b1(buf.members);\n $bd3c59ab25aed5ca$export$6115b92b9c2241a7(msg, client.isupport, (mode, add, arg)=>{\n if (prefixByMode.has(mode)) {\n let nick = arg;\n let membership = members.get(nick);\n let letter = prefixByMode.get(mode);\n members.set(nick, $fca64bf918d5638f$var$updateMembership(membership, letter, add, client));\n }\n });\n return {\n members: members\n };\n });\n case $bd3c59ab25aed5ca$export$b3c89fff1b2cdce3:\n case $bd3c59ab25aed5ca$export$69132af27147d725:\n targets = msg.params[1].split(\",\");\n for (let target of targets){\n let prefix = $bd3c59ab25aed5ca$export$3059e96a5fe807c3(target);\n let update = updateUser(prefix.name, {\n offline: msg.command === $bd3c59ab25aed5ca$export$69132af27147d725\n });\n state = {\n ...state,\n ...update\n };\n }\n return state;\n }\n },\n addMessage (state, msg, bufID) {\n $fca64bf918d5638f$var$lastMessageKey++;\n msg.key = $fca64bf918d5638f$var$lastMessageKey;\n return $fca64bf918d5638f$export$7254cc27399e90bd.updateBuffer(state, bufID, (buf)=>{\n let messages = $fca64bf918d5638f$var$insertMessage(buf.messages, msg);\n return {\n messages: messages\n };\n });\n }\n};\n\n\n\nconst $740325ae3fd2006f$var$PREFIX = \"gamja_\";\nclass $740325ae3fd2006f$var$Item {\n constructor(k){\n this.k = $740325ae3fd2006f$var$PREFIX + k;\n }\n load() {\n let v = localStorage.getItem(this.k);\n if (!v) return null;\n return JSON.parse(v);\n }\n put(v) {\n if (v) localStorage.setItem(this.k, JSON.stringify(v));\n else localStorage.removeItem(this.k);\n }\n}\nconst $740325ae3fd2006f$export$3b637ec8b5dd5146 = new $740325ae3fd2006f$var$Item(\"autoconnect\");\nconst $740325ae3fd2006f$export$a9ec709c82e011a4 = new $740325ae3fd2006f$var$Item(\"naggedProtocolHandler\");\nconst $740325ae3fd2006f$export$a5a6e0b888b2c992 = new $740325ae3fd2006f$var$Item(\"settings\");\nfunction $740325ae3fd2006f$var$debounce(f, delay) {\n let timeout = null;\n return (...args)=>{\n clearTimeout(timeout);\n timeout = setTimeout(()=>{\n timeout = null;\n f(...args);\n }, delay);\n };\n}\nclass $740325ae3fd2006f$export$a143d493d941bafc {\n raw = new $740325ae3fd2006f$var$Item(\"buffers\");\n m = null;\n constructor(){\n let obj = this.raw.load();\n this.m = new Map(Object.entries(obj || {}));\n let saveImmediately = this.save.bind(this);\n this.save = $740325ae3fd2006f$var$debounce(saveImmediately, 500);\n document.addEventListener(\"visibilitychange\", ()=>{\n if (document.visibilityState === \"hidden\") saveImmediately();\n });\n }\n key(buf) {\n // TODO: use case-mapping here somehow\n return JSON.stringify({\n name: buf.name.toLowerCase(),\n server: {\n bouncerNetwork: buf.server.bouncerNetwork\n }\n });\n }\n save() {\n if (this.m.size > 0) this.raw.put(Object.fromEntries(this.m));\n else this.raw.put(null);\n }\n get(buf) {\n return this.m.get(this.key(buf));\n }\n put(buf) {\n let key = this.key(buf);\n let updated = !this.m.has(key);\n let prev = this.m.get(key) || {};\n let unread = prev.unread || (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE;\n if (buf.unread !== undefined && buf.unread !== prev.unread) {\n unread = buf.unread;\n updated = true;\n }\n let receipts = {\n ...prev.receipts\n };\n if (buf.receipts) {\n Object.keys(buf.receipts).forEach((k)=>{\n // Use a not-equals comparison here so that no-op receipt\n // changes are correctly handled\n if (!receipts[k] || receipts[k].time < buf.receipts[k].time) {\n receipts[k] = buf.receipts[k];\n updated = true;\n }\n });\n if (receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).DELIVERED] < receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ]) {\n receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).DELIVERED] = receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ];\n updated = true;\n }\n }\n let closed = prev.closed || false;\n if (buf.closed !== undefined && buf.closed !== prev.closed) {\n closed = buf.closed;\n updated = true;\n }\n if (!updated) return false;\n this.m.set(this.key(buf), {\n name: buf.name,\n unread: unread,\n receipts: receipts,\n closed: closed,\n server: {\n bouncerNetwork: buf.server.bouncerNetwork\n }\n });\n this.save();\n return true;\n }\n delete(buf) {\n this.m.delete(this.key(buf));\n this.save();\n }\n list(server) {\n // Some gamja versions would store the same buffer multiple times\n let names = new Set();\n let buffers = [];\n for (const buf of this.m.values()){\n if (buf.server.bouncerNetwork !== server.bouncerNetwork) continue;\n if (names.has(buf.name)) continue;\n buffers.push(buf);\n names.add(buf.name);\n }\n return buffers;\n }\n clear(server) {\n if (server) for (const buf of this.list(server))this.m.delete(this.key(buf));\n else this.m = new Map();\n this.save();\n }\n}\n\n\n\n\nfunction $0bbd5f20273017a0$export$2e2bcd8739ae039(props) {\n if (!this.props.value) return null;\n // XXX: If we were feeling creative we could generate unique colors for\n // each item in ISUPPORT CHANMODES. But I am not feeling creative.\n const name = $bd3c59ab25aed5ca$export$1829957589a58e7d[this.props.value[0]] || \"\";\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\n\t\t\t${this.props.value}\n\t\t\n\t`;\n}\n\n\nfunction $47db4ea8a56fc107$var$djb2(s) {\n let hash = 5381;\n for(let i = 0; i < s.length; i++){\n hash = (hash << 5) + hash + s.charCodeAt(i);\n hash = hash >>> 0; // convert to uint32\n }\n return hash;\n}\nfunction $47db4ea8a56fc107$var$Nick(props) {\n function handleClick(event) {\n event.preventDefault();\n props.onClick();\n }\n let title;\n if (props.user && $bd3c59ab25aed5ca$export$64ec8def5466157c(props.user.realname, props.nick)) title = (0, $803ef401580605c5$export$6a0f863afc2134d8)(props.user.realname);\n let colorIndex = $47db4ea8a56fc107$var$djb2(props.nick) % 16 + 1;\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t${props.nick}\n\t`;\n}\nfunction $47db4ea8a56fc107$var$_Timestamp({ date: date, url: url, showSeconds: showSeconds }) {\n if (!date) {\n let timestamp = \"--:--\";\n if (showSeconds) timestamp += \":--\";\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${timestamp}`;\n }\n let hh = date.getHours().toString().padStart(2, \"0\");\n let mm = date.getMinutes().toString().padStart(2, \"0\");\n let timestamp = `${hh}:${mm}`;\n if (showSeconds) {\n let ss = date.getSeconds().toString().padStart(2, \"0\");\n timestamp += \":\" + ss;\n }\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\tevent.preventDefault()}\n\t\t>\n\t\t\t${timestamp}\n\t\t\n\t`;\n}\nfunction $47db4ea8a56fc107$var$Timestamp(props) {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t<${(0, $fca64bf918d5638f$export$8fa45c82eddfe270).Consumer}>\n\t\t\t${(settings)=>(0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${$47db4ea8a56fc107$var$_Timestamp} ...${props} showSeconds=${settings.secondsInTimestamps}/>\n\t\t\t`}\n\t\t\n\t`;\n}\n/**\n * Check whether a message can be folded.\n *\n * Unimportant and noisy messages that may clutter the discussion should be\n * folded.\n */ function $47db4ea8a56fc107$var$canFoldMessage(msg) {\n switch(msg.command){\n case \"JOIN\":\n case \"PART\":\n case \"QUIT\":\n case \"NICK\":\n return true;\n }\n return false;\n}\nclass $47db4ea8a56fc107$var$LogLine extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n shouldComponentUpdate(nextProps) {\n return this.props.message !== nextProps.message;\n }\n render() {\n let msg = this.props.message;\n let buf = this.props.buffer;\n let server = this.props.server;\n let onNickClick = this.props.onNickClick;\n let onChannelClick = this.props.onChannelClick;\n let onVerifyClick = this.props.onVerifyClick;\n function createNick(nick) {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${$47db4ea8a56fc107$var$Nick}\n\t\t\t\t\tnick=${nick}\n\t\t\t\t\tuser=${server.users.get(nick)}\n\t\t\t\t\tonClick=${()=>onNickClick(nick)}\n\t\t\t\t/>\n\t\t\t`;\n }\n function createChannel(channel) {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\n\t\t\t\t\t${channel}\n\t\t\t\t\n\t\t\t`;\n }\n let lineClass = \"\";\n let content;\n let invitee, target, account;\n switch(msg.command){\n case \"NOTICE\":\n case \"PRIVMSG\":\n target = msg.params[0];\n let text = msg.params[1];\n let ctcp = $bd3c59ab25aed5ca$export$60937d95e568734f(msg);\n if (ctcp) {\n if (ctcp.command === \"ACTION\") {\n lineClass = \"me-tell\";\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`* ${createNick(msg.prefix.name)} ${(0, $37d24d778c2f247c$export$2e2bcd8739ae039)((0, $803ef401580605c5$export$6a0f863afc2134d8)(ctcp.param), onChannelClick)}`;\n } else content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t\t${createNick(msg.prefix.name)} has sent a CTCP command: ${ctcp.command} ${ctcp.param}\n\t\t\t\t\t`;\n } else {\n lineClass = \"talk\";\n let prefix = \"<\", suffix = \">\";\n if (msg.command === \"NOTICE\") {\n lineClass += \" notice\";\n prefix = suffix = \"-\";\n }\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${prefix}${createNick(msg.prefix.name)}${suffix} ${(0, $37d24d778c2f247c$export$2e2bcd8739ae039)((0, $803ef401580605c5$export$6a0f863afc2134d8)(text), onChannelClick)}`;\n }\n let allowedPrefixes = server.statusMsg;\n if (target !== buf.name && allowedPrefixes) {\n let parts = $bd3c59ab25aed5ca$export$4812b7165edd26af(target, allowedPrefixes);\n if (parts.name === buf.name) content = [\n (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`(<${(0, $0bbd5f20273017a0$export$2e2bcd8739ae039)} value=${parts.prefix}/>)`,\n \" \",\n content\n ];\n }\n if (msg.tags[\"+draft/channel-context\"]) content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`(only visible to you) ${content}`;\n if (msg.isHighlight) lineClass += \" highlight\";\n break;\n case \"JOIN\":\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t${createNick(msg.prefix.name)} has joined\n\t\t\t`;\n break;\n case \"PART\":\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t${createNick(msg.prefix.name)} has left\n\t\t\t`;\n break;\n case \"QUIT\":\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t${createNick(msg.prefix.name)} has quit\n\t\t\t`;\n break;\n case \"NICK\":\n let newNick = msg.params[0];\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t${createNick(msg.prefix.name)} is now known as ${createNick(newNick)}\n\t\t\t`;\n break;\n case \"KICK\":\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t${createNick(msg.params[1])} was kicked by ${createNick(msg.prefix.name)} (${msg.params.slice(2)})\n\t\t\t`;\n break;\n case \"MODE\":\n target = msg.params[0];\n let modeStr = msg.params[1];\n let user = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${createNick(msg.prefix.name)}`;\n // TODO: use irc.forEachChannelModeUpdate()\n if (buf.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).CHANNEL && modeStr.length === 2 && server.cm(buf.name) === server.cm(target)) {\n let plusMinus = modeStr[0];\n let mode = modeStr[1];\n let arg = msg.params[2];\n let verb;\n switch(mode){\n case \"b\":\n verb = plusMinus === \"+\" ? \"added\" : \"removed\";\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${user} has ${verb} a ban on ${arg}`;\n break;\n case \"e\":\n verb = plusMinus === \"+\" ? \"added\" : \"removed\";\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${user} has ${verb} a ban exemption on ${arg}`;\n break;\n case \"l\":\n if (plusMinus === \"+\") content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${user} has set the channel user limit to ${arg}`;\n else content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${user} has unset the channel user limit`;\n break;\n case \"i\":\n verb = plusMinus === \"+\" ? \"marked\" : \"unmarked\";\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${user} has ${verb} as invite-only`;\n break;\n case \"m\":\n verb = plusMinus === \"+\" ? \"marked\" : \"unmarked\";\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${user} has ${verb} as moderated`;\n break;\n case \"s\":\n verb = plusMinus === \"+\" ? \"marked\" : \"unmarked\";\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${user} has ${verb} as secret`;\n break;\n case \"t\":\n verb = plusMinus === \"+\" ? \"locked\" : \"unlocked\";\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${user} has ${verb} the channel topic`;\n break;\n case \"n\":\n verb = plusMinus === \"+\" ? \"allowed\" : \"denied\";\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${user} has ${verb} external messages to this channel`;\n break;\n }\n if (content) break;\n // Channel membership modes\n let membership;\n for(let prefix in $bd3c59ab25aed5ca$export$6803455f35a0669)if ($bd3c59ab25aed5ca$export$6803455f35a0669[prefix] === mode) {\n membership = $bd3c59ab25aed5ca$export$1829957589a58e7d[prefix];\n break;\n }\n if (membership && arg) {\n let verb = plusMinus === \"+\" ? \"granted\" : \"revoked\";\n let preposition = plusMinus === \"+\" ? \"to\" : \"from\";\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t\t${user} has ${verb} ${membership} privileges ${preposition} ${createNick(arg)}\n\t\t\t\t\t`;\n break;\n }\n }\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t${user} sets mode ${msg.params.slice(1).join(\" \")}\n\t\t\t`;\n if (server.cm(buf.name) !== server.cm(target)) content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${content} on ${target}`;\n break;\n case \"TOPIC\":\n let topic = msg.params[1];\n if (topic) content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t${createNick(msg.prefix.name)} changed the topic to: ${(0, $37d24d778c2f247c$export$2e2bcd8739ae039)((0, $803ef401580605c5$export$6a0f863afc2134d8)(topic), onChannelClick)}\n\t\t\t\t`;\n else content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t${createNick(msg.prefix.name)} cleared the topic\n\t\t\t\t`;\n break;\n case \"INVITE\":\n invitee = msg.params[0];\n let channel = msg.params[1];\n // TODO: instead of checking buffer type, check if invitee is our nick\n if (buf.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) {\n lineClass = \"talk\";\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\tYou have been invited to ${createChannel(channel)} by ${createNick(msg.prefix.name)}\n\t\t\t\t`;\n } else content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t${createNick(msg.prefix.name)} has invited ${createNick(invitee)} to the channel\n\t\t\t\t`;\n break;\n case $bd3c59ab25aed5ca$export$cac9ca3596de2b3a:\n let nick = msg.params[0];\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`Connected to server, your nickname is ${nick}`;\n break;\n case $bd3c59ab25aed5ca$export$6bc24f4e6578b579:\n invitee = msg.params[1];\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${createNick(invitee)} has been invited to the channel`;\n break;\n case $bd3c59ab25aed5ca$export$3db4cc949c7e95b3:\n lineClass = \"motd\";\n content = (0, $37d24d778c2f247c$export$2e2bcd8739ae039)((0, $803ef401580605c5$export$6a0f863afc2134d8)(msg.params[1]), onChannelClick);\n break;\n case $bd3c59ab25aed5ca$export$97b01f8c0b76e599:\n account = msg.params[2];\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`You are now authenticated as ${account}`;\n break;\n case $bd3c59ab25aed5ca$export$3ae55a67359785dc:\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`You are now unauthenticated`;\n break;\n case \"REGISTER\":\n account = msg.params[1];\n let reason = msg.params[2];\n function handleVerifyClick(event) {\n event.preventDefault();\n onVerifyClick(account, reason);\n }\n switch(msg.params[0]){\n case \"SUCCESS\":\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`A new account has been created, you are now authenticated as ${account}`;\n break;\n case \"VERIFICATION_REQUIRED\":\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`A new account has been created, but you need to verify it: ${(0, $37d24d778c2f247c$export$2e2bcd8739ae039)(reason)}`;\n break;\n }\n break;\n case \"VERIFY\":\n account = msg.params[1];\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`The new account has been verified, you are now authenticated as ${account}`;\n break;\n case $bd3c59ab25aed5ca$export$6184319b67962807:\n let mode = msg.params[1];\n if (mode) content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`Your user mode is ${mode}`;\n else content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`You have no user mode`;\n break;\n case $bd3c59ab25aed5ca$export$8e826dfe9edc5be1:\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`Channel mode is ${msg.params.slice(2).join(\" \")}`;\n break;\n case $bd3c59ab25aed5ca$export$110395ee82c419bd:\n let date = new Date(parseInt(msg.params[2], 10) * 1000);\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`Channel was created on ${date.toLocaleString()}`;\n break;\n // MONITOR messages are only displayed in user buffers\n case $bd3c59ab25aed5ca$export$b3c89fff1b2cdce3:\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${createNick(buf.name)} is online`;\n break;\n case $bd3c59ab25aed5ca$export$69132af27147d725:\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${createNick(buf.name)} is offline`;\n break;\n default:\n if ($bd3c59ab25aed5ca$export$e6127cc7fe7395c3(msg.command) && msg.command !== $bd3c59ab25aed5ca$export$7e8b5ab33a021d11) lineClass = \"error\";\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${msg.command} ${(0, $37d24d778c2f247c$export$2e2bcd8739ae039)(msg.params.join(\" \"))}`;\n }\n if (!content) return null;\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
\n\t\t\t\t<${$47db4ea8a56fc107$var$Timestamp} date=${new Date(msg.tags.time)} url=${(0, $fca64bf918d5638f$export$8499bd1ed7c872c2)(buf, msg)}/>\n\t\t\t\t${\" \"}\n\t\t\t\t${content}\n\t\t\t
\n\t\t`;\n }\n}\nfunction $47db4ea8a56fc107$var$createNickList(nicks, createNick) {\n if (nicks.length === 0) return null;\n else if (nicks.length === 1) return createNick(nicks[0]);\n let l = nicks.slice(0, nicks.length - 1).map((nick, i)=>{\n if (i === 0) return createNick(nick);\n else return [\n \", \",\n createNick(nick)\n ];\n });\n l.push(\" and \");\n l.push(createNick(nicks[nicks.length - 1]));\n return l;\n}\nclass $47db4ea8a56fc107$var$FoldGroup extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n shouldComponentUpdate(nextProps) {\n return this.props.messages[0] !== nextProps.messages[0] || this.props.messages[this.props.messages.length - 1] !== nextProps.messages[nextProps.messages.length - 1];\n }\n render() {\n let msgs = this.props.messages;\n let buf = this.props.buffer;\n let server = this.props.server;\n let onNickClick = this.props.onNickClick;\n function createNick(nick) {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${$47db4ea8a56fc107$var$Nick}\n\t\t\t\t\tnick=${nick}\n\t\t\t\t\tuser=${server.users.get(nick)}\n\t\t\t\t\tonClick=${()=>onNickClick(nick)}\n\t\t\t\t/>\n\t\t\t`;\n }\n let byCommand = {\n \"JOIN\": [],\n \"PART\": [],\n \"QUIT\": [],\n \"NICK\": []\n };\n msgs.forEach((msg)=>{\n byCommand[msg.command].push(msg);\n });\n let first = true;\n let content = [];\n [\n \"JOIN\",\n \"PART\",\n \"QUIT\"\n ].forEach((cmd)=>{\n if (byCommand[cmd].length === 0) return;\n let nicks = new Set(byCommand[cmd].map((msg)=>msg.prefix.name));\n let plural = nicks.size > 1;\n let action;\n switch(cmd){\n case \"JOIN\":\n action = plural ? \"have joined\" : \"has joined\";\n break;\n case \"PART\":\n action = plural ? \"have left\" : \"has left\";\n break;\n case \"QUIT\":\n action = plural ? \"have quit\" : \"has quit\";\n break;\n }\n if (first) first = false;\n else content.push(\", \");\n content.push($47db4ea8a56fc107$var$createNickList([\n ...nicks\n ], createNick));\n content.push(\" \" + action);\n });\n byCommand[\"NICK\"].forEach((msg)=>{\n if (first) first = false;\n else content.push(\", \");\n let newNick = msg.params[0];\n content.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t${createNick(msg.prefix.name)} is now known as ${createNick(newNick)}\n\t\t\t`);\n });\n let lastMsg = msgs[msgs.length - 1];\n let firstDate = new Date(msgs[0].tags.time);\n let lastDate = new Date(lastMsg.tags.time);\n let timestamp = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t<${$47db4ea8a56fc107$var$Timestamp} date=${firstDate} url=${(0, $fca64bf918d5638f$export$8499bd1ed7c872c2)(buf, msgs[0])}/>\n\t\t`;\n if (lastDate - firstDate > 6000) timestamp = [\n timestamp,\n \" \\u2014 \",\n (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t<${$47db4ea8a56fc107$var$Timestamp} date=${lastDate} url=${(0, $fca64bf918d5638f$export$8499bd1ed7c872c2)(buf, lastMsg)}/>\n\t\t\t\t`\n ];\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
\n\t\t\t\t${timestamp}\n\t\t\t\t${\" \"}\n\t\t\t\t${content}\n\t\t\t
\n\t\t`;\n }\n}\n// Workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=481856\nlet $47db4ea8a56fc107$var$notificationsSupported = false;\nif (window.Notification) {\n $47db4ea8a56fc107$var$notificationsSupported = true;\n if (Notification.permission === \"default\") try {\n new Notification(\"\");\n } catch (err) {\n if (err.name === \"TypeError\") $47db4ea8a56fc107$var$notificationsSupported = false;\n }\n}\nclass $47db4ea8a56fc107$var$NotificationNagger extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n nag: false\n };\n constructor(props){\n super(props);\n this.handleClick = this.handleClick.bind(this);\n this.state.nag = this.shouldNag();\n }\n shouldNag() {\n return $47db4ea8a56fc107$var$notificationsSupported && Notification.permission === \"default\";\n }\n handleClick(event) {\n event.preventDefault();\n Notification.requestPermission((permission)=>{\n this.setState({\n nag: this.shouldNag()\n });\n });\n }\n render() {\n if (!this.state.nag) return null;\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
\n\t\t\t\t<${$47db4ea8a56fc107$var$Timestamp}/>\n\t\t\t\t${\" \"}\n\t\t\t\tTurn on desktop notifications to get notified about new messages\n\t\t\t
\n\t\t`;\n }\n}\nclass $47db4ea8a56fc107$var$ProtocolHandlerNagger extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n nag: true\n };\n constructor(props){\n super(props);\n this.handleClick = this.handleClick.bind(this);\n this.state.nag = !$740325ae3fd2006f$export$a9ec709c82e011a4.load();\n }\n handleClick(event) {\n event.preventDefault();\n let url = window.location.origin + window.location.pathname + \"?open=%s\";\n try {\n navigator.registerProtocolHandler(\"irc\", url);\n navigator.registerProtocolHandler(\"ircs\", url);\n } catch (err) {\n console.error(\"Failed to register protocol handler: \", err);\n }\n $740325ae3fd2006f$export$a9ec709c82e011a4.put(true);\n this.setState({\n nag: false\n });\n }\n render() {\n if (!navigator.registerProtocolHandler || !this.state.nag) return null;\n let name = this.props.bouncerName || \"this bouncer\";\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
\n\t\t\t\t<${$47db4ea8a56fc107$var$Timestamp}/>\n\t\t\t\t${\" \"}\n\t\t\t\tRegister our protocol handler to open IRC links with ${name}\n\t\t\t
\n\t\t`;\n }\n}\nfunction $47db4ea8a56fc107$var$AccountNagger({ server: server, onAuthClick: onAuthClick, onRegisterClick: onRegisterClick }) {\n let accDesc = \"an account on this server\";\n if (server.name) accDesc = \"a \" + server.name + \" account\";\n function handleAuthClick(event) {\n event.preventDefault();\n onAuthClick();\n }\n function handleRegisterClick(event) {\n event.preventDefault();\n onRegisterClick();\n }\n let msg = [\n (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\tYou are unauthenticated on this server,\n\t\t${\" \"}\n\t\tlogin\n\t\t${\" \"}\n\t`\n ];\n if (server.supportsAccountRegistration) msg.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`or register ${accDesc}`);\n else msg.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`if you have ${accDesc}`);\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t
\n\t\t\t<${$47db4ea8a56fc107$var$Timestamp}/> ${msg}\n\t\t
\n\t`;\n}\nclass $47db4ea8a56fc107$var$DateSeparator extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n constructor(props){\n super(props);\n }\n shouldComponentUpdate(nextProps) {\n return this.props.date.getTime() !== nextProps.date.getTime();\n }\n render() {\n let date = this.props.date;\n let text = date.toLocaleDateString([], {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\"\n });\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
\n\t\t\t\t${text}\n\t\t\t
\n\t\t`;\n }\n}\nfunction $47db4ea8a56fc107$var$UnreadSeparator(props) {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`
New messages
`;\n}\nfunction $47db4ea8a56fc107$var$sameDate(d1, d2) {\n return d1.getFullYear() === d2.getFullYear() && d1.getMonth() === d2.getMonth() && d1.getDate() === d2.getDate();\n}\nclass $47db4ea8a56fc107$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n shouldComponentUpdate(nextProps) {\n return this.props.buffer !== nextProps.buffer || this.props.settings !== nextProps.settings;\n }\n render() {\n let buf = this.props.buffer;\n if (!buf) return null;\n let server = this.props.server;\n let settings = this.props.settings;\n let serverName = server.name;\n let children = [];\n if (buf.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) children.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`<${$47db4ea8a56fc107$var$NotificationNagger}/>`);\n if (buf.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER && server.isBouncer && !server.bouncerNetID) children.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`<${$47db4ea8a56fc107$var$ProtocolHandlerNagger} bouncerName=${serverName}/>`);\n if (buf.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER && server.status === (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).REGISTERED && server.supportsSASLPlain && !server.account) children.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${$47db4ea8a56fc107$var$AccountNagger}\n\t\t\t\t\tserver=${server}\n\t\t\t\t\tonAuthClick=${this.props.onAuthClick}\n\t\t\t\t\tonRegisterClick=${this.props.onRegisterClick}\n\t\t\t\t/>\n\t\t\t`);\n let onChannelClick = this.props.onChannelClick;\n let onNickClick = this.props.onNickClick;\n let onVerifyClick = this.props.onVerifyClick;\n function createLogLine(msg) {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${$47db4ea8a56fc107$var$LogLine}\n\t\t\t\t\tkey=${\"msg-\" + msg.key}\n\t\t\t\t\tmessage=${msg}\n\t\t\t\t\tbuffer=${buf}\n\t\t\t\t\tserver=${server}\n\t\t\t\t\tonChannelClick=${onChannelClick}\n\t\t\t\t\tonNickClick=${onNickClick}\n\t\t\t\t\tonVerifyClick=${onVerifyClick}\n\t\t\t\t/>\n\t\t\t`;\n }\n function createFoldGroup(msgs) {\n // Merge NICK change chains\n let nickChanges = new Map();\n let mergedMsgs = [];\n for (let msg of msgs){\n let keep = true;\n switch(msg.command){\n case \"PART\":\n case \"QUIT\":\n nickChanges.delete(msg.prefix.name);\n break;\n case \"NICK\":\n let prev = nickChanges.get(msg.prefix.name);\n if (!prev) {\n // Future NICK messages may mutate this one\n msg = {\n ...msg\n };\n nickChanges.set(msg.params[0], msg);\n break;\n }\n prev.params = msg.params;\n nickChanges.delete(msg.prefix.name);\n nickChanges.set(msg.params[0], prev);\n keep = false;\n break;\n }\n if (keep) mergedMsgs.push(msg);\n }\n msgs = mergedMsgs;\n // Filter out PART → JOIN pairs, as well as no-op NICKs from previous step\n let partIndexes = new Map();\n let keep = [];\n msgs.forEach((msg, i)=>{\n if (msg.command === \"PART\" || msg.command === \"QUIT\") partIndexes.set(msg.prefix.name, i);\n if (msg.command === \"JOIN\" && partIndexes.has(msg.prefix.name)) {\n keep[partIndexes.get(msg.prefix.name)] = false;\n partIndexes.delete(msg.prefix.name);\n keep.push(false);\n } else if (msg.command === \"NICK\" && msg.prefix.name === msg.params[0]) keep.push(false);\n else keep.push(true);\n });\n msgs = msgs.filter((msg, i)=>keep[i]);\n if (msgs.length === 0) return null;\n else if (msgs.length === 1) return createLogLine(msgs[0]);\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${$47db4ea8a56fc107$var$FoldGroup}\n\t\t\t\t\tkey=${\"fold-\" + msgs[0].key + \"-\" + msgs[msgs.length - 1].key}\n\t\t\t\t\tmessages=${msgs}\n\t\t\t\t\tbuffer=${buf}\n\t\t\t\t\tserver=${server}\n\t\t\t\t\tonNickClick=${onNickClick}\n\t\t\t\t/>\n\t\t\t`;\n }\n let hasUnreadSeparator = false;\n let prevDate = new Date();\n let foldMessages = [];\n let lastMonitor = null;\n buf.messages.forEach((msg)=>{\n let sep = [];\n if (settings.bufferEvents === (0, $fca64bf918d5638f$export$3ee12e3d13dfa897).HIDE && $47db4ea8a56fc107$var$canFoldMessage(msg)) return;\n if (msg.command === $bd3c59ab25aed5ca$export$b3c89fff1b2cdce3 || msg.command === $bd3c59ab25aed5ca$export$69132af27147d725) {\n let skip = !lastMonitor || msg.command === lastMonitor;\n lastMonitor = msg.command;\n if (skip) return;\n }\n if (!hasUnreadSeparator && buf.type !== (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER && !(0, $fca64bf918d5638f$export$23261bae4c963bb3)(msg, buf.prevReadReceipt)) {\n sep.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`<${$47db4ea8a56fc107$var$UnreadSeparator} key=\"unread\"/>`);\n hasUnreadSeparator = true;\n }\n let date = new Date(msg.tags.time);\n if (!$47db4ea8a56fc107$var$sameDate(prevDate, date)) sep.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`<${$47db4ea8a56fc107$var$DateSeparator} key=${\"date-\" + date} date=${date}/>`);\n prevDate = date;\n if (sep.length > 0) {\n children.push(createFoldGroup(foldMessages));\n children.push(sep);\n foldMessages = [];\n }\n // TODO: consider checking the time difference too\n if (settings.bufferEvents === (0, $fca64bf918d5638f$export$3ee12e3d13dfa897).FOLD && $47db4ea8a56fc107$var$canFoldMessage(msg)) {\n foldMessages.push(msg);\n return;\n }\n if (foldMessages.length > 0) {\n children.push(createFoldGroup(foldMessages));\n foldMessages = [];\n }\n children.push(createLogLine(msg));\n });\n children.push(createFoldGroup(foldMessages));\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
\n\t\t\t\t${children}\n\t\t\t
\n\t\t`;\n }\n}\n\n\n\n\n\n\nfunction $cd5f528e18548e6d$var$BufferItem(props) {\n function handleClick(event) {\n event.preventDefault();\n props.onClick();\n }\n function handleMouseDown(event) {\n if (event.button === 1) {\n event.preventDefault();\n props.onClose();\n }\n }\n let name = props.buffer.name;\n if (props.buffer.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) name = (0, $fca64bf918d5638f$export$53e73e095c2ac1e2)(props.server, props.bouncerNetwork);\n let title;\n let classes = [\n \"type-\" + props.buffer.type\n ];\n if (props.active) classes.push(\"active\");\n if (props.buffer.unread !== (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE) classes.push(\"unread-\" + props.buffer.unread);\n switch(props.buffer.type){\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER:\n let isError = props.server.status === (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).DISCONNECTED;\n if (props.bouncerNetwork && props.bouncerNetwork.error) isError = true;\n if (isError) classes.push(\"error\");\n break;\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).NICK:\n let user = props.server.users.get(name);\n if (user && $bd3c59ab25aed5ca$export$64ec8def5466157c(user.realname, name)) title = (0, $803ef401580605c5$export$6a0f863afc2134d8)(user.realname);\n break;\n }\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t
  • \n\t\t\t${name}\n\t\t
  • \n\t`;\n}\nfunction $cd5f528e18548e6d$export$2e2bcd8739ae039(props) {\n let items = Array.from(props.buffers.values()).map((buf)=>{\n let server = props.servers.get(buf.server);\n let bouncerNetwork = null;\n if (server.bouncerNetID) bouncerNetwork = props.bouncerNetworks.get(server.bouncerNetID);\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t<${$cd5f528e18548e6d$var$BufferItem}\n\t\t\t\tkey=${buf.id}\n\t\t\t\tbuffer=${buf}\n\t\t\t\tserver=${server}\n\t\t\t\tbouncerNetwork=${bouncerNetwork}\n\t\t\t\tonClick=${()=>props.onBufferClick(buf)}\n\t\t\t\tonClose=${()=>props.onBufferClose(buf)}\n\t\t\t\tactive=${props.activeBuffer === buf.id}\n\t\t\t/>\n\t\t`;\n });\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`
      ${items}
    `;\n}\n\n\n\n\n\n\n\nconst $94cb31469f63b35c$var$UserStatus = {\n HERE: \"here\",\n GONE: \"gone\",\n OFFLINE: \"offline\"\n};\nfunction $94cb31469f63b35c$var$NickStatus(props) {\n let textMap = {\n [$94cb31469f63b35c$var$UserStatus.HERE]: \"User is online\",\n [$94cb31469f63b35c$var$UserStatus.GONE]: \"User is away\",\n [$94cb31469f63b35c$var$UserStatus.OFFLINE]: \"User is offline\"\n };\n let text = textMap[props.status];\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)``;\n}\nfunction $94cb31469f63b35c$export$2e2bcd8739ae039(props) {\n let fullyConnected = props.server.status === (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).REGISTERED;\n if (props.bouncerNetwork) fullyConnected = fullyConnected && props.bouncerNetwork.state === \"connected\";\n let description = null, actions = [];\n switch(props.buffer.type){\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER:\n switch(props.server.status){\n case (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).DISCONNECTED:\n description = \"Disconnected\";\n break;\n case (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).CONNECTING:\n description = \"Connecting...\";\n break;\n case (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).REGISTERING:\n description = \"Logging in...\";\n break;\n case (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).REGISTERED:\n if (props.bouncerNetwork) switch(props.bouncerNetwork.state){\n case \"disconnected\":\n description = \"Bouncer disconnected from network\";\n if (props.bouncerNetwork.error) description += \": \" + props.bouncerNetwork.error;\n break;\n case \"connecting\":\n description = \"Bouncer connecting to network...\";\n break;\n case \"connected\":\n // host can be undefined e.g. when using UNIX domain sockets\n description = `Connected to ${props.bouncerNetwork.host || \"network\"}`;\n break;\n }\n else if (props.buffer.serverInfo) {\n let serverInfo = props.buffer.serverInfo;\n description = `Connected to ${serverInfo.name}`;\n } else description = \"Connected\";\n break;\n }\n let joinButton = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\tJoin channel\n\t\t`;\n let reconnectButton = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\tReconnect\n\t\t`;\n let settingsButton = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\tSettings\n\t\t`;\n if (props.server.isBouncer) {\n if (props.server.bouncerNetID) {\n if (fullyConnected) actions.push(joinButton);\n if (props.server.status === (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).REGISTERED) actions.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t\tManage network\n\t\t\t\t\t`);\n } else {\n if (fullyConnected) actions.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t\tAdd network\n\t\t\t\t\t`);\n else if (props.server.status === (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).DISCONNECTED) actions.push(reconnectButton);\n actions.push(settingsButton);\n }\n } else {\n if (fullyConnected) actions.push(joinButton);\n else if (props.server.status === (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).DISCONNECTED) actions.push(reconnectButton);\n actions.push(settingsButton);\n }\n break;\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).CHANNEL:\n if (props.buffer.topic) description = (0, $37d24d778c2f247c$export$2e2bcd8739ae039)((0, $803ef401580605c5$export$6a0f863afc2134d8)(props.buffer.topic), props.onChannelClick);\n if (props.buffer.joined) actions.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\tLeave\n\t\t\t`);\n else {\n if (fullyConnected) actions.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\tJoin\n\t\t\t\t`);\n actions.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\tClose\n\t\t\t`);\n }\n break;\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).NICK:\n if (props.user) {\n let status = $94cb31469f63b35c$var$UserStatus.HERE;\n if (props.user.offline) status = $94cb31469f63b35c$var$UserStatus.OFFLINE;\n else if (props.user.away) status = $94cb31469f63b35c$var$UserStatus.GONE;\n let realname = props.buffer.name;\n if ($bd3c59ab25aed5ca$export$64ec8def5466157c(props.user.realname, props.buffer.name)) realname = (0, $803ef401580605c5$export$6a0f863afc2134d8)(props.user.realname || \"\");\n let details = [];\n if (props.user.username && props.user.hostname) details.push(`${props.user.username}@${props.user.hostname}`);\n if (props.user.account) {\n let desc = `This user is verified and has logged in to the server with the account ${props.user.account}.`;\n let item;\n if (props.user.account === props.buffer.name) item = \"authenticated\";\n else item = `authenticated as ${props.user.account}`;\n details.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${item}`);\n } else if (props.server.reliableUserAccounts) {\n // If the server supports MONITOR and WHOX, we can faithfully\n // keep user.account up-to-date for user queries\n let desc = \"This user has not been verified and is not logged in.\";\n details.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`unauthenticated`);\n }\n if (props.user.operator) {\n let desc = \"This user is a server operator, they have administrator privileges.\";\n details.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`server operator`);\n }\n if (props.user.bot) {\n let desc = \"This user is an automated bot.\";\n details.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`bot`);\n }\n details = details.map((item, i)=>{\n if (i === 0) return item;\n return [\n \", \",\n item\n ];\n });\n if (details.length > 0) details = [\n \"(\",\n details,\n \")\"\n ];\n description = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`<${$94cb31469f63b35c$var$NickStatus} status=${status}/> ${realname} ${details}`;\n }\n actions = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\tClose\n\t\t`;\n break;\n }\n let name = props.buffer.name;\n if (props.buffer.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) name = (0, $fca64bf918d5638f$export$53e73e095c2ac1e2)(props.server, props.bouncerNetwork);\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t
    ${name}
    \n\t\t${description ? (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`
    ${description}
    ` : null}\n\t\t
    ${actions}
    \n\t`;\n}\n\n\n\n\n\n\nclass $15e0fa56cfe1c276$var$MemberItem extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n constructor(props){\n super(props);\n this.handleClick = this.handleClick.bind(this);\n }\n shouldComponentUpdate(nextProps) {\n return this.props.nick !== nextProps.nick || this.props.membership !== nextProps.membership || this.props.user !== nextProps.user;\n }\n handleClick(event) {\n event.preventDefault();\n this.props.onClick();\n }\n render() {\n let title;\n let user = this.props.user;\n let classes = [\n \"nick\"\n ];\n if (user) {\n let mask = \"\";\n if (user.username && user.hostname) mask = `${user.username}@${user.hostname}`;\n if ($bd3c59ab25aed5ca$export$64ec8def5466157c(user.realname, this.props.nick)) {\n title = (0, $803ef401580605c5$export$6a0f863afc2134d8)(user.realname);\n if (mask) title = `${title} (${mask})`;\n } else title = mask;\n if (user.account) title += `\\nAuthenticated as ${user.account}`;\n if (user.away) {\n classes.push(\"away\");\n title += \"\\nAway\";\n }\n }\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
  • \n\t\t\t\t\n\t\t\t\t\t<${0, $0bbd5f20273017a0$export$2e2bcd8739ae039} value=${this.props.membership}/>\n\t\t\t\t\t${this.props.nick}\n\t\t\t\t\n\t\t\t
  • \n\t\t`;\n }\n}\nfunction $15e0fa56cfe1c276$var$sortMembers(a, b) {\n let [nickA, membA] = a, [nickB, membB] = b;\n const prefixPrivs = [\n \"~\",\n \"&\",\n \"@\",\n \"%\",\n \"+\"\n ]; // TODO: grab it from ISUPPORT PREFIX\n let i = prefixPrivs.indexOf(membA[0]), j = prefixPrivs.indexOf(membB[0]);\n if (i < 0) i = prefixPrivs.length;\n if (j < 0) j = prefixPrivs.length;\n if (i !== j) return i - j;\n return nickA.localeCompare(nickB);\n}\nclass $15e0fa56cfe1c276$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n shouldComponentUpdate(nextProps) {\n return this.props.members !== nextProps.members || this.props.users !== nextProps.users;\n }\n render() {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
      \n\t\t\t\t${Array.from(this.props.members).sort($15e0fa56cfe1c276$var$sortMembers).map(([nick, membership])=>(0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t<${$15e0fa56cfe1c276$var$MemberItem}\n\t\t\t\t\t\tkey=${nick}\n\t\t\t\t\t\tnick=${nick}\n\t\t\t\t\t\tmembership=${membership}\n\t\t\t\t\t\tuser=${this.props.users.get(nick)}\n\t\t\t\t\t\tonClick=${()=>this.props.onNickClick(nick)}\n\t\t\t\t\t/>\n\t\t\t\t`)}\n\t\t\t
    \n\t\t`;\n }\n}\n\n\n\n\nclass $c6f536f0bcf4fccd$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n url: \"\",\n pass: \"\",\n nick: \"\",\n password: \"\",\n rememberMe: false,\n username: \"\",\n realname: \"\",\n autojoin: true\n };\n nickInput = (0, $b2a774aae58c7b4e$export$7d1e3a5e95ceca43)();\n constructor(props){\n super(props);\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n if (props.params) this.state = {\n ...this.state,\n url: props.params.url || \"\",\n nick: props.params.nick || \"\",\n rememberMe: props.params.autoconnect || false,\n username: props.params.username || \"\",\n realname: props.params.realname || \"\"\n };\n }\n handleInput(event) {\n let target = event.target;\n let value = target.type === \"checkbox\" ? target.checked : target.value;\n this.setState({\n [target.name]: value\n });\n }\n handleSubmit(event) {\n event.preventDefault();\n if (this.props.connecting) return;\n let params = {\n url: this.state.url,\n pass: this.state.pass,\n nick: this.state.nick,\n autoconnect: this.state.rememberMe,\n username: this.state.username,\n realname: this.state.realname,\n saslPlain: null,\n autojoin: []\n };\n if (this.state.password) params.saslPlain = {\n username: params.username || params.nick,\n password: this.state.password\n };\n else if (this.props.auth === \"external\") params.saslExternal = true;\n else if (this.props.auth === \"oauth2\") params.saslOauthBearer = this.props.params.saslOauthBearer;\n if (this.state.autojoin) params.autojoin = this.props.params.autojoin || [];\n this.props.onSubmit(params);\n }\n componentDidMount() {\n if (this.nickInput.current) this.nickInput.current.focus();\n }\n render() {\n let disabled = this.props.connecting;\n let serverURL = null;\n if (!this.props.params || !this.props.params.url) serverURL = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\n\t\t\t\t

    \n\t\t\t`;\n let status = null;\n if (this.props.connecting) status = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t

    Connecting...

    \n\t\t\t`;\n else if (this.props.error) status = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t

    ${(0, $37d24d778c2f247c$export$2e2bcd8739ae039)(this.props.error)}

    \n\t\t\t`;\n let auth = null;\n if (this.props.auth !== \"disabled\" && this.props.auth !== \"external\" && this.props.auth !== \"oauth2\") auth = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\n\t\t\t\t

    \n\t\t\t`;\n let autojoin = null;\n let channels = this.props.params.autojoin || [];\n if (channels.length > 0) {\n let s = channels.length > 1 ? \"s\" : \"\";\n autojoin = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\n\t\t\t\t

    \n\t\t\t`;\n }\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    \n\t\t\t\t

    Connect to IRC

    \n\n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t${auth}\n\n\t\t\t\t${autojoin}\n\n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t
    \n\t\t\t\t\tAdvanced options\n\n\t\t\t\t\t
    \n\n\t\t\t\t\t${serverURL}\n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\n\n\t\t\t\t${status}\n\t\t\t
    \n\t\t`;\n }\n}\n\n\n\nclass $b4b4b87f4b38722c$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n channel: \"#\"\n };\n constructor(props){\n super(props);\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n if (props.channel) this.state.channel = props.channel;\n }\n handleInput(event) {\n let target = event.target;\n let value = target.type === \"checkbox\" ? target.checked : target.value;\n this.setState({\n [target.name]: value\n });\n }\n handleSubmit(event) {\n event.preventDefault();\n let params = {\n channel: this.state.channel\n };\n this.props.onSubmit(params);\n }\n render() {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t`;\n }\n}\n\n\n\n\nfunction $f6fdf5978ceb757f$var$getSiblingBuffer(buffers, bufID, delta) {\n let bufList = Array.from(buffers.values());\n let i = bufList.findIndex((buf)=>buf.id === bufID);\n if (i < 0) return null;\n i = (i + bufList.length + delta) % bufList.length;\n return bufList[i];\n}\nconst $f6fdf5978ceb757f$export$63ce3c18bd0f1276 = [\n {\n key: \"h\",\n altKey: true,\n description: \"Mark all messages as read\",\n execute: (app)=>{\n app.setState((state)=>{\n let buffers = new Map();\n state.buffers.forEach((buf)=>{\n buffers.set(buf.id, {\n ...buf,\n unread: (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE,\n prevReadReceipt: null\n });\n let receipts = {};\n if (buf.messages.length > 0) {\n let lastMsg = buf.messages[buf.messages.length - 1];\n receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ] = (0, $fca64bf918d5638f$export$1274528beb7cd977)(lastMsg);\n }\n let client = app.clients.get(buf.server);\n app.bufferStore.put({\n name: buf.name,\n server: client.params,\n unread: (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE,\n receipts: receipts\n });\n });\n return {\n buffers: buffers\n };\n }, ()=>{\n app.updateDocumentTitle();\n });\n }\n },\n {\n key: \"a\",\n altKey: true,\n description: \"Jump to next buffer with activity\",\n execute: (app)=>{\n // TODO: order by age if same priority\n let firstServerBuffer = null;\n let target = null;\n for (let buf of app.state.buffers.values()){\n if (!firstServerBuffer && buf.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) firstServerBuffer = buf;\n if (buf.unread === (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE) continue;\n if (!target || (0, $fca64bf918d5638f$export$9be0a2424da959ae).compare(buf.unread, target.unread) > 0) target = buf;\n }\n if (!target) target = firstServerBuffer;\n if (target) app.switchBuffer(target);\n }\n },\n {\n key: \"ArrowUp\",\n altKey: true,\n description: \"Jump to the previous buffer\",\n execute: (app)=>{\n let prev = $f6fdf5978ceb757f$var$getSiblingBuffer(app.state.buffers, app.state.activeBuffer, -1);\n if (prev) app.switchBuffer(prev);\n }\n },\n {\n key: \"ArrowDown\",\n altKey: true,\n description: \"Jump to the next buffer\",\n execute: (app)=>{\n let next = $f6fdf5978ceb757f$var$getSiblingBuffer(app.state.buffers, app.state.activeBuffer, 1);\n if (next) app.switchBuffer(next);\n }\n },\n {\n key: \"k\",\n ctrlKey: true,\n description: \"Switch to a buffer\",\n execute: (app)=>{\n app.openDialog(\"switch\");\n }\n }\n];\nfunction $f6fdf5978ceb757f$export$de27182ff8187d6c(app) {\n let byKey = {};\n $f6fdf5978ceb757f$export$63ce3c18bd0f1276.forEach((binding)=>{\n if (!byKey[binding.key]) byKey[binding.key] = [];\n byKey[binding.key].push(binding);\n });\n window.addEventListener(\"keydown\", (event)=>{\n let candidates = byKey[event.key];\n if (!candidates) return;\n candidates = candidates.filter((binding)=>{\n return Boolean(binding.altKey) === event.altKey && Boolean(binding.ctrlKey) === event.ctrlKey;\n });\n if (candidates.length !== 1) return;\n event.preventDefault();\n candidates[0].execute(app);\n });\n}\n\n\n\n\nfunction $b5b0ab28313e6465$var$getActiveClient(app) {\n let buf = app.state.buffers.get(app.state.activeBuffer);\n if (!buf) throw new Error(\"Not connected to server\");\n return app.clients.get(buf.server);\n}\nfunction $b5b0ab28313e6465$var$getActiveTarget(app) {\n let activeBuffer = app.state.buffers.get(app.state.activeBuffer);\n if (!activeBuffer) throw new Error(\"Not in a buffer\");\n return activeBuffer.name;\n}\nfunction $b5b0ab28313e6465$var$getActiveChannel(app) {\n let activeBuffer = app.state.buffers.get(app.state.activeBuffer);\n if (!activeBuffer || activeBuffer.type !== (0, $fca64bf918d5638f$export$a9b603917c4d9863).CHANNEL) throw new Error(\"Not in a channel\");\n return activeBuffer.name;\n}\nasync function $b5b0ab28313e6465$var$setUserHostMode(app, args, mode) {\n let nick = args[0];\n if (!nick) throw new Error(\"Missing nick\");\n let activeChannel = $b5b0ab28313e6465$var$getActiveChannel(app);\n let client = $b5b0ab28313e6465$var$getActiveClient(app);\n let whois = await client.whois(nick);\n const info = whois[$bd3c59ab25aed5ca$export$9514b1191eaefcec].params;\n const user = info[2];\n const host = info[3];\n client.send({\n command: \"MODE\",\n params: [\n activeChannel,\n mode,\n `*!${user}@${host}`\n ]\n });\n}\nfunction $b5b0ab28313e6465$var$markServerBufferUnread(app) {\n let activeBuffer = app.state.buffers.get(app.state.activeBuffer);\n if (!activeBuffer || activeBuffer.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) return;\n app.setBufferState({\n server: activeBuffer.server\n }, (buf)=>{\n return {\n unread: (0, $fca64bf918d5638f$export$9be0a2424da959ae).union(buf.unread, (0, $fca64bf918d5638f$export$9be0a2424da959ae).MESSAGE)\n };\n });\n}\nconst $b5b0ab28313e6465$var$join = {\n name: \"join\",\n usage: \" [password]\",\n description: \"Join a channel\",\n execute: (app, args)=>{\n let channel = args[0];\n if (!channel) throw new Error(\"Missing channel name\");\n if (args.length > 1) app.open(channel, null, args[1]);\n else app.open(channel);\n }\n};\nconst $b5b0ab28313e6465$var$kick = {\n name: \"kick\",\n usage: \" [comment]\",\n description: \"Remove a user from the channel\",\n execute: (app, args)=>{\n let nick = args[0];\n let activeChannel = $b5b0ab28313e6465$var$getActiveChannel(app);\n let params = [\n activeChannel,\n nick\n ];\n if (args.length > 1) params.push(args.slice(1).join(\" \"));\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"KICK\",\n params: params\n });\n }\n};\nconst $b5b0ab28313e6465$var$ban = {\n name: \"ban\",\n usage: \"[nick]\",\n description: \"Ban a user from the channel, or display the current ban list\",\n execute: (app, args)=>{\n if (args.length === 0) {\n let activeChannel = $b5b0ab28313e6465$var$getActiveChannel(app);\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"MODE\",\n params: [\n activeChannel,\n \"+b\"\n ]\n });\n } else return $b5b0ab28313e6465$var$setUserHostMode(app, args, \"+b\");\n }\n};\nfunction $b5b0ab28313e6465$var$givemode(app, args, mode) {\n // TODO: Handle several users at once\n let nick = args[0];\n if (!nick) throw new Error(\"Missing nick\");\n let activeChannel = $b5b0ab28313e6465$var$getActiveChannel(app);\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"MODE\",\n params: [\n activeChannel,\n mode,\n nick\n ]\n });\n}\nconst $b5b0ab28313e6465$var$commands = [\n {\n name: \"away\",\n usage: \"[message]\",\n description: \"Set away message\",\n execute: (app, args)=>{\n const params = [];\n if (args.length) params.push(args.join(\" \"));\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"AWAY\",\n params: params\n });\n }\n },\n $b5b0ab28313e6465$var$ban,\n {\n name: \"buffer\",\n usage: \"\",\n description: \"Switch to a buffer\",\n execute: (app, args)=>{\n let name = args[0];\n for (let buf of app.state.buffers.values())if (buf.name === name) {\n app.switchBuffer(buf);\n return;\n }\n throw new Error(\"Unknown buffer\");\n }\n },\n {\n name: \"close\",\n description: \"Close the current buffer\",\n execute: (app, args)=>{\n let activeBuffer = app.state.buffers.get(app.state.activeBuffer);\n if (!activeBuffer || activeBuffer.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) throw new Error(\"Not in a user or channel buffer\");\n app.close(activeBuffer.id);\n }\n },\n {\n name: \"deop\",\n usage: \"\",\n description: \"Remove operator status for a user on this channel\",\n execute: (app, args)=>$b5b0ab28313e6465$var$givemode(app, args, \"-o\")\n },\n {\n name: \"devoice\",\n usage: \"\",\n description: \"Remove voiced status for a user on this channel\",\n execute: (app, args)=>$b5b0ab28313e6465$var$givemode(app, args, \"-v\")\n },\n {\n name: \"disconnect\",\n description: \"Disconnect from the server\",\n execute: (app, args)=>{\n app.disconnect();\n }\n },\n {\n name: \"help\",\n description: \"Show help menu\",\n execute: (app, args)=>{\n app.openHelp();\n }\n },\n {\n name: \"invite\",\n usage: \"\",\n description: \"Invite a user to the channel\",\n execute: (app, args)=>{\n let nick = args[0];\n if (!nick) throw new Error(\"Missing nick\");\n let activeChannel = $b5b0ab28313e6465$var$getActiveChannel(app);\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"INVITE\",\n params: [\n nick,\n activeChannel\n ]\n });\n }\n },\n {\n ...$b5b0ab28313e6465$var$join,\n name: \"j\"\n },\n $b5b0ab28313e6465$var$join,\n $b5b0ab28313e6465$var$kick,\n {\n name: \"kickban\",\n usage: \"\",\n description: \"Ban a user and removes them from the channel\",\n execute: (app, args)=>{\n $b5b0ab28313e6465$var$kick.execute(app, args);\n $b5b0ab28313e6465$var$ban.execute(app, args);\n }\n },\n {\n name: \"lusers\",\n usage: \"[ []]\",\n description: \"Request user statistics about the network\",\n execute: (app, args)=>{\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"LUSERS\",\n params: args\n });\n $b5b0ab28313e6465$var$markServerBufferUnread(app);\n }\n },\n {\n name: \"me\",\n usage: \"\",\n description: \"Send an action message to the current buffer\",\n execute: (app, args)=>{\n let action = args.join(\" \");\n let target = $b5b0ab28313e6465$var$getActiveTarget(app);\n let text = `\\x01ACTION ${action}\\x01`;\n app.privmsg(target, text);\n }\n },\n {\n name: \"mode\",\n usage: \"[target] [modes] [mode args...]\",\n description: \"Query or change a channel or user mode\",\n execute: (app, args)=>{\n let target = args[0];\n if (!target || target.startsWith(\"+\") || target.startsWith(\"-\")) {\n let activeChannel = $b5b0ab28313e6465$var$getActiveChannel(app);\n args = [\n activeChannel,\n ...args\n ];\n }\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"MODE\",\n params: args\n });\n }\n },\n {\n name: \"motd\",\n usage: \"[server]\",\n description: \"Get the Message Of The Day\",\n execute: (app, args)=>{\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"MOTD\",\n params: args\n });\n $b5b0ab28313e6465$var$markServerBufferUnread(app);\n }\n },\n {\n name: \"msg\",\n usage: \" \",\n description: \"Send a message to a nickname or a channel\",\n execute: (app, args)=>{\n let target = args[0];\n let text = args.slice(1).join(\" \");\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"PRIVMSG\",\n params: [\n target,\n text\n ]\n });\n }\n },\n {\n name: \"nick\",\n usage: \"\",\n description: \"Change current nickname\",\n execute: (app, args)=>{\n let newNick = args[0];\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"NICK\",\n params: [\n newNick\n ]\n });\n }\n },\n {\n name: \"notice\",\n usage: \" \",\n description: \"Send a notice to a nickname or a channel\",\n execute: (app, args)=>{\n let target = args[0];\n let text = args.slice(1).join(\" \");\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"NOTICE\",\n params: [\n target,\n text\n ]\n });\n }\n },\n {\n name: \"op\",\n usage: \"\",\n description: \"Give a user operator status on this channel\",\n execute: (app, args)=>$b5b0ab28313e6465$var$givemode(app, args, \"+o\")\n },\n {\n name: \"part\",\n usage: \"[reason]\",\n description: \"Leave a channel\",\n execute: (app, args)=>{\n let reason = args.join(\" \");\n let activeChannel = $b5b0ab28313e6465$var$getActiveChannel(app);\n let params = [\n activeChannel\n ];\n if (reason) params.push(reason);\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"PART\",\n params: params\n });\n }\n },\n {\n name: \"query\",\n usage: \" [message]\",\n description: \"Open a buffer to send messages to a nickname\",\n execute: (app, args)=>{\n let nick = args[0];\n if (!nick) throw new Error(\"Missing nickname\");\n app.open(nick);\n if (args.length > 1) {\n let text = args.slice(1).join(\" \");\n app.privmsg(nick, text);\n }\n }\n },\n {\n name: \"quiet\",\n usage: \"[nick]\",\n description: \"Quiet a user in the channel, or display the current quiet list\",\n execute: (app, args)=>{\n if (args.length === 0) $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"MODE\",\n params: [\n $b5b0ab28313e6465$var$getActiveChannel(app),\n \"+q\"\n ]\n });\n else return $b5b0ab28313e6465$var$setUserHostMode(app, args, \"+q\");\n }\n },\n {\n name: \"quit\",\n description: \"Quit\",\n execute: (app, args)=>{\n app.close({\n name: (0, $fca64bf918d5638f$export$50f2960994553271)\n });\n }\n },\n {\n name: \"quote\",\n usage: \"\",\n description: \"Send a raw IRC command to the server\",\n execute: (app, args)=>{\n let msg;\n try {\n msg = $bd3c59ab25aed5ca$export$f2f615077a189f21(args.join(\" \"));\n } catch (err) {\n throw new Error(\"Failed to parse IRC command: \" + err.message);\n }\n $b5b0ab28313e6465$var$getActiveClient(app).send(msg);\n }\n },\n {\n name: \"reconnect\",\n description: \"Reconnect to the server\",\n execute: (app, args)=>{\n app.reconnect();\n }\n },\n {\n name: \"setname\",\n usage: \"\",\n description: \"Change current realname\",\n execute: (app, args)=>{\n let newRealname = args.join(\" \");\n let client = $b5b0ab28313e6465$var$getActiveClient(app);\n if (!client.caps.enabled.has(\"setname\")) throw new Error(\"Server doesn't support changing the realname\");\n client.send({\n command: \"SETNAME\",\n params: [\n newRealname\n ]\n });\n // TODO: save to local storage\n }\n },\n {\n name: \"stats\",\n usage: \" [server]\",\n description: \"Request server statistics\",\n execute: (app, args)=>{\n let query = args[0];\n if (!query) throw new Error(\"Missing query\");\n let params = [\n query\n ];\n if (args.length > 1) params.push(args.slice(1).join(\" \"));\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"STATS\",\n params: params\n });\n $b5b0ab28313e6465$var$markServerBufferUnread(app);\n }\n },\n {\n name: \"topic\",\n usage: \"\",\n description: \"Change the topic of the current channel\",\n execute: (app, args)=>{\n let activeChannel = $b5b0ab28313e6465$var$getActiveChannel(app);\n let params = [\n activeChannel\n ];\n if (args.length > 0) params.push(args.join(\" \"));\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"TOPIC\",\n params: params\n });\n }\n },\n {\n name: \"unban\",\n usage: \"\",\n description: \"Remove a user from the ban list\",\n execute: (app, args)=>{\n return $b5b0ab28313e6465$var$setUserHostMode(app, args, \"-b\");\n }\n },\n {\n name: \"unquiet\",\n usage: \"\",\n description: \"Remove a user from the quiet list\",\n execute: (app, args)=>{\n return $b5b0ab28313e6465$var$setUserHostMode(app, args, \"-q\");\n }\n },\n {\n name: \"voice\",\n usage: \"\",\n description: \"Give a user voiced status on this channel\",\n execute: (app, args)=>$b5b0ab28313e6465$var$givemode(app, args, \"+v\")\n },\n {\n name: \"who\",\n usage: \"\",\n description: \"Retrieve a list of users\",\n execute: (app, args)=>{\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"WHO\",\n params: args\n });\n $b5b0ab28313e6465$var$markServerBufferUnread(app);\n }\n },\n {\n name: \"whois\",\n usage: \"\",\n description: \"Retrieve information about a user\",\n execute: (app, args)=>{\n let nick = args[0];\n if (!nick) throw new Error(\"Missing nick\");\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"WHOIS\",\n params: [\n nick\n ]\n });\n $b5b0ab28313e6465$var$markServerBufferUnread(app);\n }\n },\n {\n name: \"whowas\",\n usage: \" [count]\",\n description: \"Retrieve information about an offline user\",\n execute: (app, args)=>{\n if (args.length < 1) throw new Error(\"Missing nick\");\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"WHOWAS\",\n params: args\n });\n $b5b0ab28313e6465$var$markServerBufferUnread(app);\n }\n },\n {\n name: \"list\",\n usage: \"[filter]\",\n description: \"Retrieve a list of channels from a network\",\n execute: (app, args)=>{\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"LIST\",\n params: args\n });\n $b5b0ab28313e6465$var$markServerBufferUnread(app);\n }\n }\n];\nvar $b5b0ab28313e6465$export$2e2bcd8739ae039 = new Map($b5b0ab28313e6465$var$commands.map((cmd)=>[\n cmd.name,\n cmd\n ]));\n\n\nfunction $af9ce1e202e3524a$var$KeyBindingsHelp() {\n let l = (0, $f6fdf5978ceb757f$export$63ce3c18bd0f1276).map((binding)=>{\n let keys = [];\n if (binding.ctrlKey) keys.push(\"Ctrl\");\n if (binding.altKey) keys.push(\"Alt\");\n keys.push(binding.key);\n keys = keys.map((name, i)=>{\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t${i > 0 ? \"+\" : null}\n\t\t\t\t${name}\n\t\t\t`;\n });\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    ${keys}
    \n\t\t\t
    ${binding.description}
    \n\t\t`;\n });\n l.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t
    Tab
    \n\t\t
    Automatically complete nickname or channel
    \n\t`);\n if (!window.matchMedia(\"(pointer: none)\").matches) l.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    Middle mouse click
    \n\t\t\t
    Close buffer
    \n\t\t`);\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`
    ${l}
    `;\n}\nfunction $af9ce1e202e3524a$var$CommandsHelp() {\n let l = [\n ...(0, $b5b0ab28313e6465$export$2e2bcd8739ae039).keys()\n ].map((name)=>{\n let cmd = (0, $b5b0ab28313e6465$export$2e2bcd8739ae039).get(name);\n let usage = [\n (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`/${name}`\n ];\n if (cmd.usage) usage.push(\" \" + cmd.usage);\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    ${usage}
    \n\t\t\t
    ${cmd.description}
    \n\t\t`;\n });\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`
    ${l}
    `;\n}\nfunction $af9ce1e202e3524a$export$2e2bcd8739ae039() {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t

    Key bindings

    \n\t\t<${$af9ce1e202e3524a$var$KeyBindingsHelp}/>\n\n\t\t

    Commands

    \n\t\t<${$af9ce1e202e3524a$var$CommandsHelp}/>\n\t`;\n}\n\n\n\nconst $03b5941ba753e1f6$var$defaultParams = {\n name: \"\",\n host: \"\",\n port: 6697,\n nickname: \"\",\n username: \"\",\n realname: \"\",\n pass: \"\"\n};\nclass $03b5941ba753e1f6$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n prevParams = null;\n state = {\n ...$03b5941ba753e1f6$var$defaultParams,\n autojoin: true\n };\n constructor(props){\n super(props);\n this.prevParams = {\n ...$03b5941ba753e1f6$var$defaultParams\n };\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n if (props.params) Object.keys($03b5941ba753e1f6$var$defaultParams).forEach((k)=>{\n if (props.params[k] !== undefined) {\n this.state[k] = props.params[k];\n this.prevParams[k] = props.params[k];\n }\n });\n }\n handleInput(event) {\n let target = event.target;\n let value = target.type === \"checkbox\" ? target.checked : target.value;\n this.setState({\n [target.name]: value\n });\n }\n handleSubmit(event) {\n event.preventDefault();\n let params = {};\n Object.keys($03b5941ba753e1f6$var$defaultParams).forEach((k)=>{\n if (!this.props.isNew && this.prevParams[k] === this.state[k]) return;\n if (this.props.isNew && $03b5941ba753e1f6$var$defaultParams[k] === this.state[k]) return;\n params[k] = this.state[k];\n });\n let autojoin = this.state.autojoin ? this.props.autojoin : null;\n this.props.onSubmit(params, autojoin);\n }\n render() {\n let removeNetwork = null;\n if (!this.props.isNew) removeNetwork = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\n\t\t\t`;\n let autojoin = null;\n if (this.props.autojoin) autojoin = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\n\t\t\t\t

    \n\t\t\t`;\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t${autojoin}\n\n\t\t\t\t
    \n\t\t\t\t\tAdvanced options\n\n\t\t\t\t\t
    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t${removeNetwork}\n\t\t\t\t${\" \"}\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n }\n}\n\n\n\nclass $368ce7ef0e8c1c36$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n username: \"\",\n password: \"\"\n };\n constructor(props){\n super(props);\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n if (props.username) this.state.username = props.username;\n }\n handleInput(event) {\n let target = event.target;\n let value = target.type === \"checkbox\" ? target.checked : target.value;\n this.setState({\n [target.name]: value\n });\n }\n handleSubmit(event) {\n event.preventDefault();\n this.props.onSubmit(this.state.username, this.state.password);\n }\n render() {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n }\n}\n\n\n\nclass $210f1d422ab09f4c$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n email: \"\",\n password: \"\"\n };\n constructor(props){\n super(props);\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n handleInput(event) {\n let target = event.target;\n let value = target.type === \"checkbox\" ? target.checked : target.value;\n this.setState({\n [target.name]: value\n });\n }\n handleSubmit(event) {\n event.preventDefault();\n this.props.onSubmit(this.state.email, this.state.password);\n }\n render() {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n }\n}\n\n\n\n\nclass $5855ce19a38be3e6$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n code: \"\"\n };\n constructor(props){\n super(props);\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n handleInput(event) {\n let target = event.target;\n let value = target.type === \"checkbox\" ? target.checked : target.value;\n this.setState({\n [target.name]: value\n });\n }\n handleSubmit(event) {\n event.preventDefault();\n this.props.onSubmit(this.state.code);\n }\n render() {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    \n\t\t\t\t

    Your account ${this.props.account} has been created, but a verification code is required to complete the registration.

    \n\n\t\t\t\t

    ${(0, $37d24d778c2f247c$export$2e2bcd8739ae039)(this.props.message)}

    \n\n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n }\n}\n\n\n\nclass $9fbbfef00d6a25bf$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {};\n constructor(props){\n super(props);\n this.state.secondsInTimestamps = props.settings.secondsInTimestamps;\n this.state.bufferEvents = props.settings.bufferEvents;\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n handleInput(event) {\n let target = event.target;\n let value = target.type === \"checkbox\" ? target.checked : target.value;\n this.setState({\n [target.name]: value\n }, ()=>{\n this.props.onChange(this.state);\n });\n }\n handleSubmit(event) {\n event.preventDefault();\n this.props.onClose();\n }\n registerProtocol() {\n let url = window.location.origin + window.location.pathname + \"?open=%s\";\n try {\n navigator.registerProtocolHandler(\"irc\", url);\n navigator.registerProtocolHandler(\"ircs\", url);\n } catch (err) {\n console.error(\"Failed to register protocol handler: \", err);\n }\n }\n render() {\n let protocolHandler = null;\n if (this.props.showProtocolHandler) protocolHandler = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\tSet gamja as your default IRC client for this browser.\n\t\t\t\t\t\tIRC links will be automatically opened here.\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t

    \n\t\t\t`;\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t${protocolHandler}\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n }\n}\n\n\n\n\n\nclass $9b625992f92feff7$var$SwitcherItem extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n constructor(props){\n super(props);\n this.handleClick = this.handleClick.bind(this);\n }\n handleClick(event) {\n event.preventDefault();\n this.props.onClick();\n }\n render() {\n let class_ = this.props.selected ? \"selected\" : \"\";\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
  • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t${(0, $fca64bf918d5638f$export$53e73e095c2ac1e2)(this.props.server, this.props.bouncerNetwork)}\n\t\t\t\t\t\n\t\t\t\t\t${this.props.buffer.name}\n\t\t\t\t\n\t\t\t
  • \n\t\t`;\n }\n}\nfunction $9b625992f92feff7$var$matchString(s, query) {\n return s.toLowerCase().includes(query) ? 1 : 0;\n}\nfunction $9b625992f92feff7$var$matchBuffer(buf, server, query) {\n let score = 2 * $9b625992f92feff7$var$matchString(buf.name, query);\n switch(buf.type){\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).CHANNEL:\n score += $9b625992f92feff7$var$matchString(buf.topic || \"\", query);\n break;\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).NICK:\n let user = server.users.get(buf.name);\n if (user && user.realname && $bd3c59ab25aed5ca$export$64ec8def5466157c(user.realname, buf.name)) score += $9b625992f92feff7$var$matchString(user.realname, query);\n break;\n }\n return score;\n}\nclass $9b625992f92feff7$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n query: \"\",\n selected: 0\n };\n constructor(props){\n super(props);\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n }\n getSuggestions() {\n let query = this.state.query.toLowerCase();\n let l = [];\n let scores = new Map();\n for (let buf of this.props.buffers.values()){\n if (buf.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) continue;\n let score = 0;\n if (query !== \"\") {\n let server = this.props.servers.get(buf.server);\n score = $9b625992f92feff7$var$matchBuffer(buf, server, query);\n if (!score) continue;\n }\n scores.set(buf.id, score);\n l.push(buf);\n }\n l.sort((a, b)=>{\n return scores.get(b.id) - scores.get(a.id);\n });\n return l.slice(0, 20);\n }\n handleInput(event) {\n let target = event.target;\n this.setState({\n [target.name]: target.value\n });\n }\n handleSubmit(event) {\n event.preventDefault();\n this.props.onSubmit(this.getSuggestions()[this.state.selected]);\n }\n handleKeyUp(event) {\n switch(event.key){\n case \"ArrowUp\":\n event.stopPropagation();\n this.move(-1);\n break;\n case \"ArrowDown\":\n event.stopPropagation();\n this.move(1);\n break;\n }\n }\n move(delta) {\n let numSuggestions = this.getSuggestions().length;\n this.setState((state)=>{\n return {\n selected: (state.selected + delta + numSuggestions) % numSuggestions\n };\n });\n }\n render() {\n let items = this.getSuggestions().map((buf, i)=>{\n let server = this.props.servers.get(buf.server);\n let bouncerNetwork = null;\n if (server.bouncerNetID) bouncerNetwork = this.props.bouncerNetworks.get(server.bouncerNetID);\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${$9b625992f92feff7$var$SwitcherItem}\n\t\t\t\t\tbuffer=${buf}\n\t\t\t\t\tserver=${server}\n\t\t\t\t\tbouncerNetwork=${bouncerNetwork}\n\t\t\t\t\tselected=${this.state.selected === i}\n\t\t\t\t\tonClick=${()=>this.props.onSubmit(buf)}\n\t\t\t\t/>\n\t\t\t`;\n });\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\n\t\t\t\t\n\t\t\t\t
      \n\t\t\t\t\t${items}\n\t\t\t\t
    \n\t\t\t\n\t\t`;\n }\n}\n\n\n\nfunction $142bbba13add3ea5$var$encodeContentDisposition(filename) {\n // Encode filename according to RFC 5987 if necessary. Note,\n // encodeURIComponent will percent-encode a superset of attr-char.\n let encodedFilename = encodeURIComponent(filename);\n if (encodedFilename === filename) return \"attachment; filename=\\\"\" + filename + \"\\\"\";\n else return \"attachment; filename*=UTF-8''\" + encodedFilename;\n}\nclass $142bbba13add3ea5$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n text: \"\"\n };\n textInput = (0, $b2a774aae58c7b4e$export$7d1e3a5e95ceca43)();\n lastAutocomplete = null;\n constructor(props){\n super(props);\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n this.handleInputPaste = this.handleInputPaste.bind(this);\n this.handleDragOver = this.handleDragOver.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.handleWindowKeyDown = this.handleWindowKeyDown.bind(this);\n this.handleWindowPaste = this.handleWindowPaste.bind(this);\n }\n handleInput(event) {\n this.setState({\n [event.target.name]: event.target.value\n });\n if (this.props.readOnly && event.target.name === \"text\" && !event.target.value) event.target.blur();\n }\n handleSubmit(event) {\n event.preventDefault();\n this.props.onSubmit(this.state.text);\n this.setState({\n text: \"\"\n });\n }\n handleInputKeyDown(event) {\n let input = event.target;\n if (!this.props.autocomplete || event.key !== \"Tab\") return;\n if (input.selectionStart !== input.selectionEnd) return;\n event.preventDefault();\n let carretPos = input.selectionStart;\n let text = this.state.text;\n let autocomplete;\n if (this.lastAutocomplete && this.lastAutocomplete.text === text && this.lastAutocomplete.carretPos === carretPos) autocomplete = this.lastAutocomplete;\n else {\n this.lastAutocomplete = null;\n let wordStart;\n for(wordStart = carretPos - 1; wordStart >= 0; wordStart--){\n if (text[wordStart] === \" \") break;\n }\n wordStart++;\n let wordEnd;\n for(wordEnd = carretPos; wordEnd < text.length; wordEnd++){\n if (text[wordEnd] === \" \") break;\n }\n let word = text.slice(wordStart, wordEnd);\n if (!word) return;\n let replacements = this.props.autocomplete(word);\n if (replacements.length === 0) return;\n autocomplete = {\n text: text,\n carretPos: input.selectionStart,\n prefix: text.slice(0, wordStart),\n suffix: text.slice(wordEnd),\n replacements: replacements,\n replIndex: -1\n };\n }\n let n = autocomplete.replacements.length;\n if (event.shiftKey) autocomplete.replIndex--;\n else autocomplete.replIndex++;\n autocomplete.replIndex = (autocomplete.replIndex + n) % n;\n let repl = autocomplete.replacements[autocomplete.replIndex];\n if (!autocomplete.prefix && !autocomplete.suffix) {\n if (repl.startsWith(\"/\")) repl += \" \";\n else repl += \": \";\n }\n autocomplete.text = autocomplete.prefix + repl + autocomplete.suffix;\n autocomplete.carretPos = autocomplete.prefix.length + repl.length;\n input.value = autocomplete.text;\n input.selectionStart = autocomplete.carretPos;\n input.selectionEnd = input.selectionStart;\n this.lastAutocomplete = autocomplete;\n this.setState({\n text: autocomplete.text\n });\n }\n canUploadFiles() {\n let client = this.props.client;\n return client && client.isupport.filehost() && !this.props.readOnly;\n }\n async uploadFile(file) {\n let client = this.props.client;\n let endpoint = client.isupport.filehost();\n let auth;\n if (client.params.saslPlain) {\n let params = client.params.saslPlain;\n auth = \"Basic \" + btoa(params.username + \":\" + params.password);\n } else if (client.params.saslOauthBearer) auth = \"Bearer \" + client.params.saslOauthBearer.token;\n let headers = {\n \"Content-Length\": file.size,\n \"Content-Disposition\": $142bbba13add3ea5$var$encodeContentDisposition(file.name)\n };\n if (file.type) headers[\"Content-Type\"] = file.type;\n if (auth) headers[\"Authorization\"] = auth;\n // TODO: show a loading UI while uploading\n // TODO: show a cancel button\n let resp = await fetch(endpoint, {\n method: \"POST\",\n body: file,\n headers: headers,\n credentials: \"include\"\n });\n if (!resp.ok) throw new Error(`HTTP request failed (${resp.status})`);\n let loc = resp.headers.get(\"Location\");\n if (!loc) throw new Error(\"filehost response missing Location header field\");\n return new URL(loc, endpoint);\n }\n async uploadFileList(fileList) {\n let promises = [];\n for (let file of fileList)promises.push(this.uploadFile(file));\n let urls = await Promise.all(promises);\n this.setState((state)=>{\n if (state.text) return {\n text: state.text + \" \" + urls.join(\" \")\n };\n else return {\n text: urls.join(\" \")\n };\n });\n }\n async handleInputPaste(event) {\n if (event.clipboardData.files.length === 0 || !this.canUploadFiles()) return;\n event.preventDefault();\n event.stopImmediatePropagation();\n await this.uploadFileList(event.clipboardData.files);\n }\n handleDragOver(event) {\n if (event.dataTransfer.items.length === 0 || !this.canUploadFiles()) return;\n for (let item of event.dataTransfer.items){\n if (item.kind !== \"file\") return;\n }\n event.preventDefault();\n }\n async handleDrop(event) {\n if (event.dataTransfer.files.length === 0 || !this.canUploadFiles()) return;\n event.preventDefault();\n event.stopImmediatePropagation();\n await this.uploadFileList(event.dataTransfer.files);\n }\n handleWindowKeyDown(event) {\n // If an or \n\t\t\t\t\t\n\t\t\t\t\t${this.props.children}\n\t\t\t\t\n\t\t\t\n\t\t`;\n }\n}\n\n\n\n\n\n\n\n\nconst $5c2a91b7f6173cd8$var$baseConfig = {\n server: {}\n};\nconst $5c2a91b7f6173cd8$var$configPromise = fetch(\"./config.json\").then((resp)=>{\n if (resp.ok) return resp.json();\n if (resp.status !== 404) console.error(\"Failed to fetch config: HTTP error:\", resp.status, resp.statusText);\n return {};\n}).catch((err)=>{\n console.error(\"Failed to fetch config:\", err);\n return {};\n}).then((config)=>{\n return {\n ...$5c2a91b7f6173cd8$var$baseConfig,\n ...config\n };\n});\nconst $5c2a91b7f6173cd8$var$CHATHISTORY_MAX_SIZE = 4000;\nfunction $5c2a91b7f6173cd8$var$isProduction() {\n // NODE_ENV is set by the Parcel build system\n try {\n return true;\n } catch (_err) {\n return false;\n }\n}\nfunction $5c2a91b7f6173cd8$var$parseQueryString() {\n let query = window.location.search.substring(1);\n let params = {};\n query.split(\"&\").forEach((s)=>{\n if (!s) return;\n let pair = s.split(\"=\");\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || \"\");\n });\n return params;\n}\nfunction $5c2a91b7f6173cd8$var$splitHostPort(str) {\n let host = str;\n let port = null;\n // Literal IPv6 addresses contain colons and are enclosed in square brackets\n let i = str.lastIndexOf(\":\");\n if (i > 0 && !str.endsWith(\"]\")) {\n host = str.slice(0, i);\n port = parseInt(str.slice(i + 1), 10);\n }\n if (host.startsWith(\"[\") && host.endsWith(\"]\")) host = host.slice(1, host.length - 1);\n return {\n host: host,\n port: port\n };\n}\nfunction $5c2a91b7f6173cd8$var$fillConnectParams(params) {\n let host = window.location.host || \"localhost:8080\";\n let proto = \"wss:\";\n if (window.location.protocol !== \"https:\") proto = \"ws:\";\n let path = window.location.pathname || \"/\";\n if (!window.location.host) path = \"/\";\n params = {\n ...params\n };\n if (!params.url) params.url = proto + \"//\" + host + path + \"socket\";\n if (params.url.startsWith(\"/\")) params.url = proto + \"//\" + host + params.url;\n if (params.url.indexOf(\"://\") < 0) params.url = proto + \"//\" + params.url;\n if (!params.username) params.username = params.nick;\n if (!params.realname) params.realname = params.nick;\n return params;\n}\nfunction $5c2a91b7f6173cd8$var$showNotification(title, options) {\n if (!window.Notification || Notification.permission !== \"granted\") return null;\n // This can still fail due to:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=481856\n try {\n return new Notification(title, options);\n } catch (err) {\n console.error(\"Failed to show notification: \", err);\n return null;\n }\n}\nfunction $5c2a91b7f6173cd8$var$getReceipt(stored, type) {\n if (!stored || !stored.receipts) return null;\n return stored.receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ];\n}\nfunction $5c2a91b7f6173cd8$var$getLatestReceipt(bufferStore, server, type) {\n let buffers = bufferStore.list(server);\n let last = null;\n for (let buf of buffers){\n if (buf.name === \"*\") continue;\n let receipt = $5c2a91b7f6173cd8$var$getReceipt(buf, type);\n if ((0, $fca64bf918d5638f$export$4f7e80d679306a83)(last, receipt)) last = receipt;\n }\n return last;\n}\nlet $5c2a91b7f6173cd8$var$lastErrorID = 0;\nclass $5c2a91b7f6173cd8$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n ...(0, $fca64bf918d5638f$export$7254cc27399e90bd).create(),\n connectParams: {\n url: null,\n pass: null,\n username: null,\n realname: null,\n nick: null,\n saslPlain: null,\n saslExternal: false,\n autoconnect: false,\n autojoin: [],\n ping: 0\n },\n connectForm: true,\n loading: true,\n dialog: null,\n dialogData: null,\n error: null,\n openPanels: {\n bufferList: false,\n memberList: false\n }\n };\n debug = !$5c2a91b7f6173cd8$var$isProduction();\n config = {\n ...$5c2a91b7f6173cd8$var$baseConfig\n };\n clients = new Map();\n endOfHistory = new Map();\n receipts = new Map();\n buffer = (0, $b2a774aae58c7b4e$export$7d1e3a5e95ceca43)();\n composer = (0, $b2a774aae58c7b4e$export$7d1e3a5e95ceca43)();\n switchToChannel = null;\n /**\n\t * Parsed irc:// URL to automatically open. The user will be prompted for\n\t * confirmation for security reasons.\n\t */ autoOpenURL = null;\n messageNotifications = new Set();\n baseTitle = null;\n lastFocusPingDate = null;\n constructor(props){\n super(props);\n this.handleConnectSubmit = this.handleConnectSubmit.bind(this);\n this.handleJoinSubmit = this.handleJoinSubmit.bind(this);\n this.handleBufferListClick = this.handleBufferListClick.bind(this);\n this.handleBufferListClose = this.handleBufferListClose.bind(this);\n this.toggleBufferList = this.toggleBufferList.bind(this);\n this.toggleMemberList = this.toggleMemberList.bind(this);\n this.handleComposerSubmit = this.handleComposerSubmit.bind(this);\n this.handleChannelClick = this.handleChannelClick.bind(this);\n this.handleNickClick = this.handleNickClick.bind(this);\n this.autocomplete = this.autocomplete.bind(this);\n this.handleBufferScrollTop = this.handleBufferScrollTop.bind(this);\n this.dismissDialog = this.dismissDialog.bind(this);\n this.handleAddNetworkClick = this.handleAddNetworkClick.bind(this);\n this.handleNetworkSubmit = this.handleNetworkSubmit.bind(this);\n this.handleNetworkRemove = this.handleNetworkRemove.bind(this);\n this.handleDismissError = this.handleDismissError.bind(this);\n this.handleAuthSubmit = this.handleAuthSubmit.bind(this);\n this.handleRegisterSubmit = this.handleRegisterSubmit.bind(this);\n this.handleVerifyClick = this.handleVerifyClick.bind(this);\n this.handleVerifySubmit = this.handleVerifySubmit.bind(this);\n this.handleOpenSettingsClick = this.handleOpenSettingsClick.bind(this);\n this.handleSettingsChange = this.handleSettingsChange.bind(this);\n this.handleSettingsDisconnect = this.handleSettingsDisconnect.bind(this);\n this.handleSwitchSubmit = this.handleSwitchSubmit.bind(this);\n this.handleWindowFocus = this.handleWindowFocus.bind(this);\n this.state.settings = {\n ...this.state.settings,\n ...$740325ae3fd2006f$export$a5a6e0b888b2c992.load()\n };\n this.bufferStore = new $740325ae3fd2006f$export$a143d493d941bafc();\n $5c2a91b7f6173cd8$var$configPromise.then((config)=>{\n this.handleConfig(config);\n return config;\n });\n }\n /**\n\t * Handle configuration data and populate the connection parameters.\n\t *\n\t * The priority order is:\n\t *\n\t * - URL params\n\t * - Saved parameters in local storage\n\t * - Configuration data (fetched from the config.json file)\n\t * - Default server URL constructed from the current URL location (this is\n\t * done in fillConnectParams)\n\t */ async handleConfig(config) {\n let connectParams = {\n ...this.state.connectParams\n };\n if (typeof config.server.url === \"string\") connectParams.url = config.server.url;\n if (Array.isArray(config.server.autojoin)) connectParams.autojoin = config.server.autojoin;\n else if (typeof config.server.autojoin === \"string\") connectParams.autojoin = [\n config.server.autojoin\n ];\n if (typeof config.server.nick === \"string\") connectParams.nick = config.server.nick;\n if (typeof config.server.autoconnect === \"boolean\") connectParams.autoconnect = config.server.autoconnect;\n if (config.server.auth === \"external\") connectParams.saslExternal = true;\n if (typeof config.server.ping === \"number\") connectParams.ping = config.server.ping;\n if (connectParams.autoconnect && config.server.auth === \"mandatory\") {\n console.error(\"Error in config.json: cannot set server.autoconnect = true and server.auth = \\\"mandatory\\\"\");\n connectParams.autoconnect = false;\n }\n if (config.server.auth === \"oauth2\" && (!config.oauth2 || !config.oauth2.url || !config.oauth2.client_id)) {\n console.error(\"Error in config.json: server.auth = \\\"oauth2\\\" requires oauth2 settings\");\n config.server.auth = null;\n }\n let autoconnect = $740325ae3fd2006f$export$3b637ec8b5dd5146.load();\n if (autoconnect) connectParams = {\n ...connectParams,\n ...autoconnect,\n autoconnect: true,\n autojoin: []\n };\n let autojoin = [];\n let queryParams = $5c2a91b7f6173cd8$var$parseQueryString();\n // Don't allow to silently override the server URL if there's one in\n // config.json, because this has security implications. But still allow\n // setting server to an empty string to reveal the server field in the\n // connect form.\n if (typeof queryParams.server === \"string\" && (!connectParams.url || !queryParams.server)) {\n connectParams.url = queryParams.server;\n // When using a custom server, some configuration options don't\n // make sense anymore.\n config.server.auth = null;\n }\n if (typeof queryParams.nick === \"string\") connectParams.nick = queryParams.nick;\n if (typeof queryParams.channels === \"string\") autojoin = queryParams.channels.split(\",\");\n if (typeof queryParams.open === \"string\") this.autoOpenURL = $bd3c59ab25aed5ca$export$4b3d9a5bae55976(queryParams.open);\n if (queryParams.debug === \"1\") this.debug = true;\n else if (queryParams.debug === \"0\") this.debug = false;\n if (window.location.hash) autojoin = window.location.hash.split(\",\");\n this.config = config;\n if (!connectParams.nick && connectParams.autoconnect) connectParams.nick = \"user-*\";\n if (connectParams.nick && connectParams.nick.includes(\"*\")) {\n let placeholder = Math.random().toString(36).substr(2, 7);\n connectParams.nick = connectParams.nick.replace(\"*\", placeholder);\n }\n if (config.server.auth === \"oauth2\" && !connectParams.saslOauthBearer) {\n if (queryParams.error) {\n console.error(\"OAuth 2.0 authorization failed: \", queryParams.error);\n this.showError(\"Authentication failed: \" + (queryParams.error_description || queryParams.error));\n return;\n }\n if (!queryParams.code) {\n this.redirectOauth2Authorize();\n return;\n }\n // Strip code from query params, to prevent page refreshes from\n // trying to exchange the code again\n let url = new URL(window.location.toString());\n url.searchParams.delete(\"code\");\n url.searchParams.delete(\"state\");\n window.history.replaceState(null, \"\", url.toString());\n let saslOauthBearer;\n try {\n saslOauthBearer = await this.exchangeOauth2Code(queryParams.code);\n } catch (err) {\n this.showError(err);\n return;\n }\n connectParams.saslOauthBearer = saslOauthBearer;\n if (saslOauthBearer.username && !connectParams.nick) connectParams.nick = saslOauthBearer.username;\n }\n if (autojoin.length > 0) {\n if (connectParams.autoconnect) // Ask the user whether they want to join that new channel.\n // TODO: support multiple channels here\n this.autoOpenURL = {\n host: \"\",\n entity: autojoin[0]\n };\n else connectParams.autojoin = autojoin;\n }\n this.setState({\n loading: false,\n connectParams: connectParams\n });\n if (connectParams.autoconnect) {\n this.setState({\n connectForm: false\n });\n this.connect(connectParams);\n }\n }\n async redirectOauth2Authorize() {\n let serverMetadata;\n try {\n serverMetadata = await $572a887a57d3418e$export$9326d7767c1b7bbc(this.config.oauth2.url);\n } catch (err) {\n console.error(\"Failed to fetch OAuth 2.0 server metadata:\", err);\n this.showError(\"Failed to fetch OAuth 2.0 server metadata\");\n return;\n }\n $572a887a57d3418e$export$425e62132119a96f({\n serverMetadata: serverMetadata,\n clientId: this.config.oauth2.client_id,\n redirectUri: window.location.toString(),\n scope: this.config.oauth2.scope\n });\n }\n async exchangeOauth2Code(code) {\n let serverMetadata = await $572a887a57d3418e$export$9326d7767c1b7bbc(this.config.oauth2.url);\n let redirectUri = new URL(window.location.toString());\n redirectUri.searchParams.delete(\"code\");\n redirectUri.searchParams.delete(\"state\");\n let data = await $572a887a57d3418e$export$97e44d582df4b68f({\n serverMetadata: serverMetadata,\n redirectUri: redirectUri.toString(),\n code: code,\n clientId: this.config.oauth2.client_id,\n clientSecret: this.config.oauth2.client_secret\n });\n // TODO: handle expires_in/refresh_token\n let token = data.access_token;\n let username = null;\n if (serverMetadata.introspection_endpoint) try {\n let data = await $572a887a57d3418e$export$e03aeda7cfb66622({\n serverMetadata: serverMetadata,\n token: token,\n clientId: this.config.oauth2.client_id,\n clientSecret: this.config.oauth2.client_secret\n });\n username = data.username;\n if (!username) console.warn(\"Username missing from OAuth 2.0 token introspection response\");\n } catch (err) {\n console.warn(\"Failed to introspect OAuth 2.0 token:\", err);\n }\n return {\n token: token,\n username: username\n };\n }\n showError(err) {\n console.error(\"App error: \", err);\n let text;\n if (err instanceof Error) {\n let l = [];\n while(err){\n l.push(err.message);\n err = err.cause;\n }\n text = l.join(\": \");\n } else text = String(err);\n this.setState({\n error: text\n });\n $5c2a91b7f6173cd8$var$lastErrorID++;\n return $5c2a91b7f6173cd8$var$lastErrorID;\n }\n dismissError(id) {\n if (id && id !== $5c2a91b7f6173cd8$var$lastErrorID) return;\n this.setState({\n error: null\n });\n }\n handleDismissError(event) {\n event.preventDefault();\n this.dismissError();\n }\n setServerState(id, updater, callback) {\n this.setState((state)=>{\n return (0, $fca64bf918d5638f$export$7254cc27399e90bd).updateServer(state, id, updater);\n }, callback);\n }\n setBufferState(id, updater, callback) {\n this.setState((state)=>{\n return (0, $fca64bf918d5638f$export$7254cc27399e90bd).updateBuffer(state, id, updater);\n }, callback);\n }\n syncBufferUnread(serverID, name) {\n let client = this.clients.get(serverID);\n let stored = this.bufferStore.get({\n name: name,\n server: client.params\n });\n if (client.caps.enabled.has(\"draft/chathistory\") && stored) this.setBufferState({\n server: serverID,\n name: name\n }, {\n unread: stored.unread\n }, ()=>{\n this.updateDocumentTitle();\n });\n this.bufferStore.put({\n name: name,\n server: client.params,\n closed: false\n });\n }\n createBuffer(serverID, name) {\n let client = this.clients.get(serverID);\n let id = null;\n let isNew = false;\n this.setState((state)=>{\n let updated;\n [id, updated] = (0, $fca64bf918d5638f$export$7254cc27399e90bd).createBuffer(state, name, serverID, client);\n isNew = Boolean(updated);\n return updated;\n });\n if (isNew) this.syncBufferUnread(serverID, name);\n return id;\n }\n sendReadReceipt(client, storedBuffer) {\n if (!client.supportsReadMarker()) return;\n let readReceipt = storedBuffer.receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ];\n if (storedBuffer.name === \"*\" || !readReceipt) return;\n client.setReadMarker(storedBuffer.name, readReceipt.time);\n }\n switchBuffer(id) {\n let buf;\n this.setState((state)=>{\n buf = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(state, id);\n if (!buf) return;\n let client = this.clients.get(buf.server);\n let stored = this.bufferStore.get({\n name: buf.name,\n server: client.params\n });\n let prevReadReceipt = $5c2a91b7f6173cd8$var$getReceipt(stored, (0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ);\n let update = (0, $fca64bf918d5638f$export$7254cc27399e90bd).updateBuffer(state, buf.id, {\n prevReadReceipt: prevReadReceipt\n });\n return {\n activeBuffer: buf.id,\n ...update\n };\n }, ()=>{\n if (!buf) return;\n if (this.buffer.current) this.buffer.current.focus();\n let server = this.state.servers.get(buf.server);\n if (buf.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).NICK && !server.users.has(buf.name)) this.whoUserBuffer(buf.name, buf.server);\n if (buf.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).CHANNEL && !buf.hasInitialWho) this.whoChannelBuffer(buf.name, buf.server);\n this.updateDocumentTitle();\n });\n // TODO: only mark as read if user scrolled at the bottom\n this.markBufferAsRead(id);\n }\n markBufferAsRead(id) {\n let buf;\n this.setState((state)=>{\n buf = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(state, id);\n if (!buf) return;\n return (0, $fca64bf918d5638f$export$7254cc27399e90bd).updateBuffer(state, buf.id, {\n unread: (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE\n });\n }, ()=>{\n if (!buf) return;\n let client = this.clients.get(buf.server);\n for (let notif of this.messageNotifications)if (client.cm(notif.data.bufferName) === client.cm(buf.name)) notif.close();\n if (buf.messages.length > 0) {\n let lastMsg = buf.messages[buf.messages.length - 1];\n let stored = {\n name: buf.name,\n server: client.params,\n unread: (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE,\n receipts: {\n [(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ]: (0, $fca64bf918d5638f$export$1274528beb7cd977)(lastMsg)\n }\n };\n if (this.bufferStore.put(stored)) this.sendReadReceipt(client, stored);\n }\n this.updateDocumentTitle();\n });\n }\n updateDocumentTitle() {\n let buf = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(this.state, this.state.activeBuffer);\n let server;\n if (buf) server = this.state.servers.get(buf.server);\n let bouncerNetwork;\n if (server.bouncerNetID) bouncerNetwork = this.state.bouncerNetworks.get(server.bouncerNetID);\n let numUnread = 0;\n for (let buffer of this.state.buffers.values())if ((0, $fca64bf918d5638f$export$9be0a2424da959ae).compare(buffer.unread, (0, $fca64bf918d5638f$export$9be0a2424da959ae).HIGHLIGHT) >= 0) numUnread++;\n let parts = [];\n if (buf && buf.type !== (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) parts.push(buf.name);\n if (bouncerNetwork) parts.push((0, $fca64bf918d5638f$export$53e73e095c2ac1e2)(server, bouncerNetwork));\n parts.push(this.baseTitle);\n let title = \"\";\n if (numUnread > 0) title = `(${numUnread}) `;\n title += parts.join(\" \\xb7 \");\n document.title = title;\n }\n prepareChatMessage(serverID, msg) {\n // Treat server-wide broadcasts as highlights. They're sent by server\n // operators and can contain important information.\n if (msg.isHighlight === undefined) {\n let client = this.clients.get(serverID);\n msg.isHighlight = $bd3c59ab25aed5ca$export$fdd47ba7a4ecfeff(msg, client.nick, client.cm) || $bd3c59ab25aed5ca$export$8b29011f3cb5e124(msg);\n }\n if (!msg.tags) // Can happen for outgoing messages for instance\n msg.tags = {};\n if (!msg.tags.time) msg.tags.time = $bd3c59ab25aed5ca$export$3ae94a2503e890a1(new Date());\n }\n addChatMessage(serverID, bufName, msg) {\n this.prepareChatMessage(serverID, msg);\n let bufID = {\n server: serverID,\n name: bufName\n };\n this.setState((state)=>(0, $fca64bf918d5638f$export$7254cc27399e90bd).addMessage(state, msg, bufID));\n }\n handleChatMessage(serverID, bufName, msg) {\n let client = this.clients.get(serverID);\n this.prepareChatMessage(serverID, msg);\n let stored = this.bufferStore.get({\n name: bufName,\n server: client.params\n });\n let deliveryReceipt = $5c2a91b7f6173cd8$var$getReceipt(stored, (0, $fca64bf918d5638f$export$c49c54eaac29b59a).DELIVERED);\n let readReceipt = $5c2a91b7f6173cd8$var$getReceipt(stored, (0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ);\n let isDelivered = (0, $fca64bf918d5638f$export$23261bae4c963bb3)(msg, deliveryReceipt);\n let isRead = (0, $fca64bf918d5638f$export$23261bae4c963bb3)(msg, readReceipt);\n if (client.isMyNick(msg.prefix.name)) isRead = true;\n let msgUnread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE;\n if ((msg.command === \"PRIVMSG\" || msg.command === \"NOTICE\") && !isRead) {\n let target = msg.params[0];\n let text = msg.params[1];\n let kind;\n if (msg.isHighlight) {\n msgUnread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).HIGHLIGHT;\n kind = \"highlight\";\n } else if (client.isMyNick(target)) {\n msgUnread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).HIGHLIGHT;\n kind = \"private message\";\n } else msgUnread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).MESSAGE;\n if (msgUnread === (0, $fca64bf918d5638f$export$9be0a2424da959ae).HIGHLIGHT && !isDelivered && !$bd3c59ab25aed5ca$export$60937d95e568734f(msg)) {\n let title = \"New \" + kind + \" from \" + msg.prefix.name;\n if (client.isChannel(bufName)) title += \" in \" + bufName;\n let notif = $5c2a91b7f6173cd8$var$showNotification(title, {\n body: (0, $803ef401580605c5$export$6a0f863afc2134d8)(text),\n requireInteraction: true,\n tag: \"msg,server=\" + serverID + \",from=\" + msg.prefix.name + \",to=\" + bufName,\n data: {\n bufferName: bufName,\n message: msg\n }\n });\n if (notif) {\n notif.addEventListener(\"click\", ()=>{\n // TODO: scroll to message\n this.switchBuffer({\n server: serverID,\n name: bufName\n });\n });\n notif.addEventListener(\"close\", ()=>{\n this.messageNotifications.delete(notif);\n });\n this.messageNotifications.add(notif);\n }\n }\n }\n if (msg.command === \"INVITE\" && client.isMyNick(msg.params[0])) {\n msgUnread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).HIGHLIGHT;\n let channel = msg.params[1];\n let notif = new Notification(\"Invitation to \" + channel, {\n body: msg.prefix.name + \" has invited you to \" + channel,\n requireInteraction: true,\n tag: \"invite,server=\" + serverID + \",from=\" + msg.prefix.name + \",channel=\" + channel,\n actions: [\n {\n action: \"accept\",\n title: \"Accept\"\n }\n ]\n });\n if (notif) notif.addEventListener(\"click\", (event)=>{\n if (event.action === \"accept\") {\n let stored = {\n name: bufName,\n server: client.params,\n receipts: {\n [(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ]: (0, $fca64bf918d5638f$export$1274528beb7cd977)(msg)\n }\n };\n if (this.bufferStore.put(stored)) this.sendReadReceipt(client, stored);\n this.open(channel, serverID);\n } else // TODO: scroll to message\n this.switchBuffer({\n server: serverID,\n name: bufName\n });\n });\n }\n // Open a new buffer if the message doesn't come from me or is a\n // self-message\n if ((!client.isMyNick(msg.prefix.name) || client.isMyNick(bufName)) && msg.command !== \"PART\" && msg.comand !== \"QUIT\" && msg.command !== $bd3c59ab25aed5ca$export$b3c89fff1b2cdce3 && msg.command !== $bd3c59ab25aed5ca$export$69132af27147d725) this.createBuffer(serverID, bufName);\n let bufID = {\n server: serverID,\n name: bufName\n };\n this.setState((state)=>(0, $fca64bf918d5638f$export$7254cc27399e90bd).addMessage(state, msg, bufID));\n this.setBufferState(bufID, (buf)=>{\n // TODO: set unread if scrolled up\n let unread = buf.unread;\n let prevReadReceipt = buf.prevReadReceipt;\n let receipts = {\n [(0, $fca64bf918d5638f$export$c49c54eaac29b59a).DELIVERED]: (0, $fca64bf918d5638f$export$1274528beb7cd977)(msg)\n };\n if (this.state.activeBuffer !== buf.id || !document.hasFocus()) unread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).union(unread, msgUnread);\n else receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ] = (0, $fca64bf918d5638f$export$1274528beb7cd977)(msg);\n // Don't show unread marker for my own messages\n if (client.isMyNick(msg.prefix.name) && !(0, $fca64bf918d5638f$export$23261bae4c963bb3)(msg, prevReadReceipt)) prevReadReceipt = (0, $fca64bf918d5638f$export$1274528beb7cd977)(msg);\n let stored = {\n name: buf.name,\n server: client.params,\n unread: unread,\n receipts: receipts\n };\n if (this.bufferStore.put(stored)) this.sendReadReceipt(client, stored);\n return {\n unread: unread,\n prevReadReceipt: prevReadReceipt\n };\n }, ()=>{\n if (msgUnread === (0, $fca64bf918d5638f$export$9be0a2424da959ae).HIGHLIGHT) this.updateDocumentTitle();\n });\n }\n connect(params) {\n // Merge our previous connection params so that config options such as\n // the ping interval are applied\n params = {\n ...this.state.connectParams,\n ...params\n };\n let serverID = null;\n this.setState((state)=>{\n let update;\n [serverID, update] = (0, $fca64bf918d5638f$export$7254cc27399e90bd).createServer(state);\n return update;\n });\n this.setState({\n connectParams: params\n });\n let client = new (0, $6796cfbd59091fe3$export$2e2bcd8739ae039)({\n ...$5c2a91b7f6173cd8$var$fillConnectParams(params),\n eventPlayback: this.state.settings.bufferEvents !== (0, $fca64bf918d5638f$export$3ee12e3d13dfa897).HIDE\n });\n client.debug = this.debug;\n this.clients.set(serverID, client);\n this.setServerState(serverID, {\n status: client.status\n });\n let errorID = null;\n client.addEventListener(\"status\", ()=>{\n this.setServerState(serverID, {\n status: client.status\n });\n switch(client.status){\n case (0, $6796cfbd59091fe3$export$2e2bcd8739ae039).Status.DISCONNECTED:\n this.setServerState(serverID, {\n account: null\n });\n this.setState((state)=>{\n let buffers = new Map(state.buffers);\n state.buffers.forEach((buf)=>{\n if (buf.server !== serverID) return;\n buffers.set(buf.id, {\n ...buf,\n joined: false\n });\n });\n return {\n buffers: buffers\n };\n });\n break;\n case (0, $6796cfbd59091fe3$export$2e2bcd8739ae039).Status.REGISTERED:\n this.setState({\n connectForm: false\n });\n if (errorID) this.dismissError(errorID);\n break;\n }\n });\n client.addEventListener(\"message\", (event)=>{\n this.handleMessage(serverID, event.detail.message);\n });\n client.addEventListener(\"error\", (event)=>{\n errorID = this.showError(event.detail);\n });\n this.createBuffer(serverID, (0, $fca64bf918d5638f$export$50f2960994553271));\n if (!this.state.activeBuffer) this.switchBuffer({\n server: serverID,\n name: (0, $fca64bf918d5638f$export$50f2960994553271)\n });\n if (params.autojoin.length > 0) this.switchToChannel = params.autojoin[0];\n }\n disconnect(serverID) {\n if (!serverID) serverID = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getActiveServerID(this.state);\n let client = this.clients.get(serverID);\n if (client) {\n this.clients.delete(serverID);\n client.disconnect();\n }\n }\n reconnect(serverID) {\n if (!serverID) serverID = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getActiveServerID(this.state);\n let client = this.clients.get(serverID);\n if (client) client.reconnect();\n }\n serverFromBouncerNetwork(bouncerNetworkID) {\n for (let [id, client] of this.clients){\n if (client.params.bouncerNetwork === bouncerNetworkID) return id;\n }\n return null;\n }\n routeMessage(serverID, msg) {\n let client = this.clients.get(serverID);\n let chatHistoryBatch = $bd3c59ab25aed5ca$export$f4751a564f6d84a3(msg, \"chathistory\");\n // Reply triggered by some command sent by us, not worth displaying to\n // the user\n if (msg.internal) return [];\n let target, channel, affectedBuffers;\n switch(msg.command){\n case \"MODE\":\n target = msg.params[0];\n if (client.isChannel(target)) return [\n target\n ];\n return [\n (0, $fca64bf918d5638f$export$50f2960994553271)\n ];\n case \"NOTICE\":\n case \"PRIVMSG\":\n target = msg.params[0];\n if (client.isMyNick(target)) {\n if (client.cm(msg.prefix.name) === client.cm(client.serverPrefix.name)) target = (0, $fca64bf918d5638f$export$50f2960994553271);\n else {\n let context = msg.tags[\"+draft/channel-context\"];\n if (context && client.isChannel(context) && (0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(this.state, {\n server: serverID,\n name: context\n })) target = context;\n else target = msg.prefix.name;\n }\n }\n let allowedPrefixes = client.isupport.statusMsg();\n if (allowedPrefixes) {\n let parts = $bd3c59ab25aed5ca$export$4812b7165edd26af(target, allowedPrefixes);\n if (client.isChannel(parts.name)) target = parts.name;\n }\n // Don't open a new buffer if this is just a NOTICE or a garbage\n // CTCP message\n let openNewBuffer = true;\n if (msg.command !== \"PRIVMSG\") openNewBuffer = false;\n else {\n let ctcp = $bd3c59ab25aed5ca$export$60937d95e568734f(msg);\n if (ctcp && ctcp.command !== \"ACTION\") openNewBuffer = false;\n }\n if (!openNewBuffer && !(0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(this.state, {\n server: serverID,\n name: target\n })) target = (0, $fca64bf918d5638f$export$50f2960994553271);\n return [\n target\n ];\n case \"JOIN\":\n channel = msg.params[0];\n if (!client.isMyNick(msg.prefix.name)) return [\n channel\n ];\n return [];\n case \"PART\":\n channel = msg.params[0];\n return [\n channel\n ];\n case \"KICK\":\n channel = msg.params[0];\n return [\n channel\n ];\n case \"QUIT\":\n affectedBuffers = [];\n if (chatHistoryBatch) affectedBuffers.push(chatHistoryBatch.params[0]);\n else this.state.buffers.forEach((buf)=>{\n if (buf.server !== serverID) return;\n if (!buf.members.has(msg.prefix.name)) return;\n affectedBuffers.push(buf.name);\n });\n return affectedBuffers;\n case \"NICK\":\n let newNick = msg.params[0];\n affectedBuffers = [];\n if (chatHistoryBatch) affectedBuffers.push(chatHistoryBatch.params[0]);\n else {\n this.state.buffers.forEach((buf)=>{\n if (buf.server !== serverID) return;\n if (!buf.members.has(msg.prefix.name)) return;\n affectedBuffers.push(buf.name);\n });\n if (client.isMyNick(newNick)) affectedBuffers.push((0, $fca64bf918d5638f$export$50f2960994553271));\n }\n return affectedBuffers;\n case \"TOPIC\":\n channel = msg.params[0];\n return [\n channel\n ];\n case \"INVITE\":\n channel = msg.params[1];\n // TODO: find a more reliable way to do this\n let bufName = channel;\n if (!(0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(this.state, {\n server: serverID,\n name: channel\n })) bufName = (0, $fca64bf918d5638f$export$50f2960994553271);\n return [\n bufName\n ];\n case $bd3c59ab25aed5ca$export$8e826dfe9edc5be1:\n case $bd3c59ab25aed5ca$export$110395ee82c419bd:\n case $bd3c59ab25aed5ca$export$cf24d3ab5a850c9f:\n case $bd3c59ab25aed5ca$export$edbdd9cee2ab5be8:\n case $bd3c59ab25aed5ca$export$a1ba792f52c3a77c:\n case $bd3c59ab25aed5ca$export$385b5d59fd211cdd:\n case $bd3c59ab25aed5ca$export$15ba3f1b034be103:\n case $bd3c59ab25aed5ca$export$1766db7a19d745c:\n case $bd3c59ab25aed5ca$export$903bdc290bba373b:\n case $bd3c59ab25aed5ca$export$e4ff1ea9594cfaf7:\n channel = msg.params[1];\n return [\n channel\n ];\n case $bd3c59ab25aed5ca$export$6bc24f4e6578b579:\n channel = msg.params[2];\n return [\n channel\n ];\n case $bd3c59ab25aed5ca$export$b3c89fff1b2cdce3:\n case $bd3c59ab25aed5ca$export$69132af27147d725:\n let targets = msg.params[1].split(\",\");\n affectedBuffers = [];\n for (let target of targets){\n let prefix = $bd3c59ab25aed5ca$export$3059e96a5fe807c3(target);\n affectedBuffers.push(prefix.name);\n }\n return affectedBuffers;\n case $bd3c59ab25aed5ca$export$533b33f42abb0931:\n case $bd3c59ab25aed5ca$export$31b0bce566d09826:\n case $bd3c59ab25aed5ca$export$1d0c7ae9b6b17819:\n case $bd3c59ab25aed5ca$export$cad5f2640c65ad1e:\n case $bd3c59ab25aed5ca$export$7e8b5ab33a021d11:\n case $bd3c59ab25aed5ca$export$cfb24fa60294f9b1:\n case $bd3c59ab25aed5ca$export$a675057415015158:\n case $bd3c59ab25aed5ca$export$c233ee342453910:\n case $bd3c59ab25aed5ca$export$b1fa6c92095fdab1:\n case $bd3c59ab25aed5ca$export$18c4a4c5c97dce9b:\n case $bd3c59ab25aed5ca$export$698923df90b7ea6d:\n case $bd3c59ab25aed5ca$export$cba31abc2138b15e:\n case $bd3c59ab25aed5ca$export$7304bc4447b68935:\n case \"AWAY\":\n case \"SETNAME\":\n case \"CHGHOST\":\n case \"ACCOUNT\":\n case \"CAP\":\n case \"AUTHENTICATE\":\n case \"PING\":\n case \"PONG\":\n case \"BATCH\":\n case \"TAGMSG\":\n case \"CHATHISTORY\":\n case \"ACK\":\n case \"BOUNCER\":\n case \"MARKREAD\":\n // Ignore these\n return [];\n default:\n return [\n (0, $fca64bf918d5638f$export$50f2960994553271)\n ];\n }\n }\n handleMessage(serverID, msg) {\n let client = this.clients.get(serverID);\n if ($bd3c59ab25aed5ca$export$f4751a564f6d84a3(msg, \"chathistory\")) return; // Handled by the caller\n let destBuffers = this.routeMessage(serverID, msg);\n this.setState((state)=>(0, $fca64bf918d5638f$export$7254cc27399e90bd).handleMessage(state, msg, serverID, client));\n let target, channel;\n switch(msg.command){\n case $bd3c59ab25aed5ca$export$cac9ca3596de2b3a:\n this.fetchBacklog(serverID);\n break;\n case $bd3c59ab25aed5ca$export$cad5f2640c65ad1e:\n case $bd3c59ab25aed5ca$export$7e8b5ab33a021d11:\n // These messages are used to indicate the end of the ISUPPORT list\n // Restore opened channel and user buffers\n let join = [];\n for (let buf of this.bufferStore.list(client.params)){\n if (buf.name === \"*\" || buf.closed) continue;\n if (client.isChannel(buf.name)) {\n if (client.caps.enabled.has(\"soju.im/bouncer-networks\")) continue;\n join.push(buf.name);\n } else {\n this.createBuffer(serverID, buf.name);\n this.whoUserBuffer(buf.name, serverID);\n }\n }\n // Auto-join channels given at connect-time\n let server = this.state.servers.get(serverID);\n let bouncerNetID = server.bouncerNetID;\n let bouncerNetwork = null;\n if (bouncerNetID) bouncerNetwork = this.state.bouncerNetworks.get(bouncerNetID);\n if (!bouncerNetwork || bouncerNetwork.state === \"connected\") {\n join = join.concat(client.params.autojoin);\n client.params.autojoin = [];\n }\n if (join.length > 0) client.send({\n command: \"JOIN\",\n params: [\n join.join(\",\")\n ]\n });\n let serverHost = bouncerNetwork ? bouncerNetwork.host : \"\";\n if (this.autoOpenURL && serverHost === this.autoOpenURL.host) {\n this.openURL(this.autoOpenURL);\n this.autoOpenURL = null;\n }\n break;\n case \"JOIN\":\n channel = msg.params[0];\n if (client.isMyNick(msg.prefix.name)) this.syncBufferUnread(serverID, channel);\n if (channel === this.switchToChannel) {\n this.switchBuffer({\n server: serverID,\n name: channel\n });\n this.switchToChannel = null;\n }\n break;\n case \"BOUNCER\":\n if (msg.params[0] !== \"NETWORK\") break; // We're only interested in network updates\n if (client.isupport.bouncerNetID()) break;\n let id = msg.params[1];\n let attrs = null;\n if (msg.params[2] !== \"*\") attrs = $bd3c59ab25aed5ca$export$ede4b2e0172bbdb1(msg.params[2]);\n let isNew = false;\n this.setState((state)=>{\n if (!attrs) return (0, $fca64bf918d5638f$export$7254cc27399e90bd).deleteBouncerNetwork(state, id);\n else {\n isNew = !state.bouncerNetworks.has(id);\n return (0, $fca64bf918d5638f$export$7254cc27399e90bd).storeBouncerNetwork(state, id, attrs);\n }\n }, ()=>{\n if (!attrs) {\n let serverID = this.serverFromBouncerNetwork(id);\n if (serverID) this.close({\n server: serverID,\n name: (0, $fca64bf918d5638f$export$50f2960994553271)\n });\n } else if (isNew) this.connect({\n ...client.params,\n bouncerNetwork: id\n });\n if (attrs && attrs.state === \"connected\") {\n let serverID = this.serverFromBouncerNetwork(id);\n let client = this.clients.get(serverID);\n if (client && client.status === (0, $6796cfbd59091fe3$export$2e2bcd8739ae039).Status.REGISTERED && client.params.autojoin && client.params.autojoin.length > 0) {\n client.send({\n command: \"JOIN\",\n params: [\n client.params.autojoin.join(\",\")\n ]\n });\n client.params.autojoin = [];\n }\n }\n });\n break;\n case \"BATCH\":\n if (!msg.params[0].startsWith(\"-\")) break;\n let name = msg.params[0].slice(1);\n let batch = client.batches.get(name);\n if (!batch || batch.type !== \"soju.im/bouncer-networks\") break;\n // We've received a BOUNCER NETWORK batch. If we have a URL to\n // auto-open and no existing network matches it, ask the user to\n // create a new network.\n if (this.autoOpenURL && this.autoOpenURL.host && !this.findBouncerNetIDByHost(this.autoOpenURL.host)) {\n this.openURL(this.autoOpenURL);\n this.autoOpenURL = null;\n }\n break;\n case \"MARKREAD\":\n target = msg.params[0];\n let bound = msg.params[1];\n if (bound === \"*\" || !bound.startsWith(\"timestamp=\")) break;\n let readReceipt = {\n time: bound.replace(\"timestamp=\", \"\")\n };\n let stored = this.bufferStore.get({\n name: target,\n server: client.params\n });\n if ((0, $fca64bf918d5638f$export$4f7e80d679306a83)(readReceipt, $5c2a91b7f6173cd8$var$getReceipt(stored, (0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ))) break;\n for (let notif of this.messageNotifications){\n if (client.cm(notif.data.bufferName) !== client.cm(target)) continue;\n if ((0, $fca64bf918d5638f$export$23261bae4c963bb3)(notif.data.message, readReceipt)) notif.close();\n }\n let unread;\n let closed = true;\n this.setBufferState({\n server: serverID,\n name: target\n }, (buf)=>{\n closed = false;\n // Re-compute unread status\n unread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE;\n for(let i = buf.messages.length - 1; i >= 0; i--){\n let msg = buf.messages[i];\n if (msg.command !== \"PRIVMSG\" && msg.command !== \"NOTICE\") continue;\n if ((0, $fca64bf918d5638f$export$23261bae4c963bb3)(msg, readReceipt)) break;\n if (msg.isHighlight || client.isMyNick(buf.name)) {\n unread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).HIGHLIGHT;\n break;\n }\n unread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).MESSAGE;\n }\n return {\n unread: unread\n };\n }, ()=>{\n this.bufferStore.put({\n name: target,\n server: client.params,\n unread: unread,\n closed: closed,\n receipts: {\n [(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ]: readReceipt\n }\n });\n this.updateDocumentTitle();\n });\n break;\n default:\n if ($bd3c59ab25aed5ca$export$e6127cc7fe7395c3(msg.command) && msg.command !== $bd3c59ab25aed5ca$export$7e8b5ab33a021d11) {\n let description = msg.params[msg.params.length - 1];\n this.showError(description);\n }\n }\n destBuffers.forEach((bufName)=>{\n this.handleChatMessage(serverID, bufName, msg);\n });\n }\n async fetchBacklog(serverID) {\n let client = this.clients.get(serverID);\n if (!client.caps.enabled.has(\"draft/chathistory\")) return;\n if (client.caps.enabled.has(\"soju.im/bouncer-networks\") && !client.params.bouncerNetwork) return;\n let lastReceipt = $5c2a91b7f6173cd8$var$getLatestReceipt(this.bufferStore, client.params, (0, $fca64bf918d5638f$export$c49c54eaac29b59a).DELIVERED);\n if (!lastReceipt) return;\n let now = $bd3c59ab25aed5ca$export$3ae94a2503e890a1(new Date());\n let targets = await client.fetchHistoryTargets(now, lastReceipt.time);\n targets.forEach(async (target)=>{\n let from = lastReceipt;\n let to = {\n time: now\n };\n // Maybe we've just received a READ update from the\n // server, avoid over-fetching history\n let stored = this.bufferStore.get({\n name: target.name,\n server: client.params\n });\n let readReceipt = $5c2a91b7f6173cd8$var$getReceipt(stored, (0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ);\n if ((0, $fca64bf918d5638f$export$4f7e80d679306a83)(from, readReceipt)) from = readReceipt;\n // If we already have messages stored for the target,\n // fetch all messages we've missed\n let buf = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(this.state, {\n server: serverID,\n name: target.name\n });\n if (buf && buf.messages.length > 0) {\n let lastMsg = buf.messages[buf.messages.length - 1];\n from = (0, $fca64bf918d5638f$export$1274528beb7cd977)(lastMsg);\n }\n // Query read marker if this is a user (ie, we haven't received\n // the read marker as part of a JOIN burst)\n if (client.supportsReadMarker() && client.isNick(target.name)) client.fetchReadMarker(target.name);\n let result;\n try {\n result = await client.fetchHistoryBetween(target.name, from, to, $5c2a91b7f6173cd8$var$CHATHISTORY_MAX_SIZE);\n } catch (err) {\n console.error(\"Failed to fetch backlog for '\" + target.name + \"': \", err);\n this.showError(\"Failed to fetch backlog for '\" + target.name + \"'\");\n return;\n }\n for (let msg of result.messages){\n let destBuffers = this.routeMessage(serverID, msg);\n for (let bufName of destBuffers)this.handleChatMessage(serverID, bufName, msg);\n }\n });\n }\n handleConnectSubmit(connectParams) {\n this.dismissError();\n if (connectParams.autoconnect) $740325ae3fd2006f$export$3b637ec8b5dd5146.put(connectParams);\n else $740325ae3fd2006f$export$3b637ec8b5dd5146.put(null);\n // Disconnect previous server, if any\n let activeBuffer = this.state.buffers.get(this.state.activeBuffer);\n if (activeBuffer) this.close(activeBuffer.server);\n this.connect(connectParams);\n }\n handleChannelClick(event) {\n let handled = this.openURL(event.target.href);\n if (handled) event.preventDefault();\n }\n findBouncerNetIDByHost(host) {\n for (let [id, bouncerNetwork] of this.state.bouncerNetworks){\n if (bouncerNetwork.host === host) return id;\n }\n return null;\n }\n openURL(url) {\n if (typeof url === \"string\") url = $bd3c59ab25aed5ca$export$4b3d9a5bae55976(url);\n if (!url) return false;\n let { host: host, port: port } = $5c2a91b7f6173cd8$var$splitHostPort(url.host);\n let serverID;\n if (!url.host) serverID = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getActiveServerID(this.state);\n else {\n let bouncerNetID = this.findBouncerNetIDByHost(host);\n if (!bouncerNetID) {\n // Open dialog to create network if bouncer\n let client = this.clients.values().next().value;\n if (!client || !client.caps.enabled.has(\"soju.im/bouncer-networks\")) return false;\n let params = {\n host: host\n };\n if (typeof port === \"number\") params.port = port;\n this.openDialog(\"network\", {\n params: params,\n autojoin: url.entity\n });\n return true;\n }\n for (let [id, server] of this.state.servers)if (server.bouncerNetID === bouncerNetID) {\n serverID = id;\n break;\n }\n }\n if (!serverID) return false;\n let buf = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(this.state, {\n server: serverID,\n name: url.entity || (0, $fca64bf918d5638f$export$50f2960994553271)\n });\n if (buf) this.switchBuffer(buf.id);\n else this.openDialog(\"join\", {\n server: serverID,\n channel: url.entity\n });\n return true;\n }\n handleNickClick(nick) {\n this.open(nick);\n }\n whoUserBuffer(target, serverID) {\n let client = this.clients.get(serverID);\n client.who(target, {\n fields: [\n \"flags\",\n \"hostname\",\n \"nick\",\n \"realname\",\n \"username\",\n \"account\"\n ]\n });\n client.monitor(target);\n if (client.supportsReadMarker()) client.fetchReadMarker(target);\n }\n async whoChannelBuffer(target, serverID) {\n let client = this.clients.get(serverID);\n // Prevent multiple WHO commands for the same channel in parallel\n this.setBufferState({\n name: target,\n server: serverID\n }, {\n hasInitialWho: true\n });\n let hasInitialWho = false;\n try {\n await client.who(target, {\n fields: [\n \"flags\",\n \"hostname\",\n \"nick\",\n \"realname\",\n \"username\",\n \"account\"\n ]\n });\n hasInitialWho = true;\n } finally{\n this.setBufferState({\n name: target,\n server: serverID\n }, {\n hasInitialWho: hasInitialWho\n });\n }\n }\n open(target, serverID, password) {\n if (!serverID) serverID = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getActiveServerID(this.state);\n let client = this.clients.get(serverID);\n if (client.isServer(target)) this.switchBuffer({\n server: serverID\n });\n else if (client.isChannel(target)) {\n this.switchToChannel = target;\n client.join(target, password).catch((err)=>{\n this.showError(err);\n });\n } else {\n this.whoUserBuffer(target, serverID);\n this.createBuffer(serverID, target);\n this.switchBuffer({\n server: serverID,\n name: target\n });\n }\n }\n close(id) {\n let buf = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(this.state, id);\n if (!buf) return;\n let client = this.clients.get(buf.server);\n switch(buf.type){\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER:\n this.setState((state)=>{\n let buffers = new Map(state.buffers);\n for (let [id, b] of state.buffers)if (b.server === buf.server) buffers.delete(id);\n let activeBuffer = state.activeBuffer;\n if (activeBuffer && state.buffers.get(activeBuffer).server === buf.server) {\n if (buffers.size > 0) activeBuffer = buffers.keys().next().value;\n else activeBuffer = null;\n }\n return {\n buffers: buffers,\n activeBuffer: activeBuffer\n };\n });\n let disconnectAll = client && !client.params.bouncerNetwork && client.caps.enabled.has(\"soju.im/bouncer-networks\");\n let isFirstServer = this.state.servers.keys().next().value === buf.server;\n this.disconnect(buf.server);\n this.setState((state)=>{\n let servers = new Map(state.servers);\n servers.delete(buf.server);\n let connectForm = state.connectForm;\n if (servers.size === 0) connectForm = true;\n return {\n servers: servers,\n connectForm: connectForm\n };\n });\n if (disconnectAll) {\n for (let serverID of this.clients.keys())this.close({\n server: serverID,\n name: (0, $fca64bf918d5638f$export$50f2960994553271)\n });\n this.bufferStore.clear();\n } else this.bufferStore.clear(client.params);\n // TODO: only clear autoconnect if this server is stored there\n if (isFirstServer) $740325ae3fd2006f$export$3b637ec8b5dd5146.put(null);\n break;\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).CHANNEL:\n if (buf.joined) client.send({\n command: \"PART\",\n params: [\n buf.name\n ]\n });\n // fallthrough\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).NICK:\n if (this.state.activeBuffer === buf.id) this.switchBuffer({\n name: (0, $fca64bf918d5638f$export$50f2960994553271)\n });\n this.setState((state)=>{\n let buffers = new Map(state.buffers);\n buffers.delete(buf.id);\n return {\n buffers: buffers\n };\n });\n client.unmonitor(buf.name);\n this.bufferStore.put({\n name: buf.name,\n server: client.params,\n closed: true\n });\n break;\n }\n }\n disconnectAll() {\n this.close(this.state.buffers.keys().next().value);\n }\n executeCommand(s) {\n let parts = s.split(\" \");\n let name = parts[0].toLowerCase().slice(1);\n let args = parts.slice(1);\n let cmd = (0, $b5b0ab28313e6465$export$2e2bcd8739ae039).get(name);\n if (!cmd) {\n this.showError(`Unknown command \"${name}\" (run \"/help\" to get a command list)`);\n return;\n }\n try {\n cmd.execute(this, args);\n } catch (error) {\n console.error(`Failed to execute command \"${name}\":`, error);\n this.showError(error.message);\n }\n }\n privmsg(target, text) {\n if (target === (0, $fca64bf918d5638f$export$50f2960994553271)) {\n this.showError(\"Cannot send message in server buffer\");\n return;\n }\n let serverID = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getActiveServerID(this.state);\n let client = this.clients.get(serverID);\n let msg = {\n command: \"PRIVMSG\",\n params: [\n target,\n text\n ]\n };\n client.send(msg);\n if (!client.caps.enabled.has(\"echo-message\")) {\n msg.prefix = {\n name: client.nick\n };\n this.handleChatMessage(serverID, target, msg);\n }\n }\n handleComposerSubmit(text) {\n if (!text) return;\n if (text.startsWith(\"//\")) text = text.slice(1);\n else if (text.startsWith(\"/\")) {\n this.executeCommand(text);\n return;\n }\n let buf = this.state.buffers.get(this.state.activeBuffer);\n if (!buf) return;\n this.privmsg(buf.name, text);\n }\n handleBufferListClick(id) {\n this.switchBuffer(id);\n this.closeBufferList();\n }\n handleBufferListClose(id) {\n this.close(id);\n this.closeBufferList();\n }\n toggleBufferList() {\n this.setState((state)=>{\n let openPanels = {\n ...state.openPanels,\n bufferList: !state.openPanels.bufferList\n };\n return {\n openPanels: openPanels\n };\n });\n }\n toggleMemberList() {\n this.setState((state)=>{\n let openPanels = {\n ...state.openPanels,\n memberList: !state.openPanels.memberList\n };\n return {\n openPanels: openPanels\n };\n });\n }\n closeBufferList() {\n this.setState((state)=>{\n let openPanels = {\n ...state.openPanels,\n bufferList: false\n };\n return {\n openPanels: openPanels\n };\n });\n }\n closeMemberList() {\n this.setState((state)=>{\n let openPanels = {\n ...state.openPanels,\n memberList: false\n };\n return {\n openPanels: openPanels\n };\n });\n }\n handleJoinClick(buf) {\n switch(buf.type){\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER:\n this.openDialog(\"join\", {\n server: buf.server\n });\n break;\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).CHANNEL:\n let client = this.clients.get(buf.server);\n client.send({\n command: \"JOIN\",\n params: [\n buf.name\n ]\n });\n break;\n }\n }\n handleJoinSubmit(data) {\n this.open(data.channel, this.state.dialogData.server);\n this.dismissDialog();\n }\n autocomplete(prefix) {\n function fromList(l, prefix) {\n prefix = prefix.toLowerCase();\n let repl = [];\n for (let item of l)if (item.toLowerCase().startsWith(prefix)) repl.push(item);\n return repl;\n }\n if (prefix.startsWith(\"/\")) {\n let repl = fromList([\n ...(0, $b5b0ab28313e6465$export$2e2bcd8739ae039).keys()\n ], prefix.slice(1));\n return repl.map((cmd)=>\"/\" + cmd);\n }\n // TODO: consider using the CHANTYPES ISUPPORT token here\n if (prefix.startsWith(\"#\")) {\n let chanNames = [];\n for (const buf of this.state.buffers.values())if (buf.name.startsWith(\"#\")) chanNames.push(buf.name);\n return fromList(chanNames, prefix);\n }\n let buf = this.state.buffers.get(this.state.activeBuffer);\n if (!buf || !buf.members) return [];\n return fromList(buf.members.keys(), prefix);\n }\n openHelp() {\n this.openDialog(\"help\");\n }\n async handleBufferScrollTop() {\n let buf = this.state.buffers.get(this.state.activeBuffer);\n if (!buf || buf.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) return;\n let client = this.clients.get(buf.server);\n if (!client || !client.caps.enabled.has(\"draft/chathistory\") || !client.caps.enabled.has(\"server-time\")) return;\n if (this.endOfHistory.get(buf.id)) return;\n let before;\n if (buf.messages.length > 0) before = buf.messages[0].tags[\"time\"];\n else before = $bd3c59ab25aed5ca$export$3ae94a2503e890a1(new Date());\n // Avoids sending multiple CHATHISTORY commands in parallel\n this.endOfHistory.set(buf.id, true);\n let limit = 100;\n if (client.caps.enabled.has(\"draft/event-playback\")) limit = 200;\n let result = await client.fetchHistoryBefore(buf.name, before, limit);\n this.endOfHistory.set(buf.id, !result.more);\n if (result.messages.length > 0) {\n let msg = result.messages[result.messages.length - 1];\n let receipts = {\n [(0, $fca64bf918d5638f$export$c49c54eaac29b59a).DELIVERED]: (0, $fca64bf918d5638f$export$1274528beb7cd977)(msg)\n };\n if (this.state.activeBuffer === buf.id) receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ] = (0, $fca64bf918d5638f$export$1274528beb7cd977)(msg);\n let stored = {\n name: buf.name,\n server: client.params,\n receipts: receipts\n };\n if (this.bufferStore.put(stored)) this.sendReadReceipt(client, stored);\n this.setBufferState(buf, ({ prevReadReceipt: prevReadReceipt })=>{\n if (!(0, $fca64bf918d5638f$export$23261bae4c963bb3)(msg, prevReadReceipt)) prevReadReceipt = (0, $fca64bf918d5638f$export$1274528beb7cd977)(msg);\n return {\n prevReadReceipt: prevReadReceipt\n };\n });\n }\n for (let msg of result.messages)this.addChatMessage(buf.server, buf.name, msg);\n }\n openDialog(name, data) {\n this.setState({\n dialog: name,\n dialogData: data\n });\n }\n dismissDialog() {\n this.setState({\n dialog: null,\n dialogData: null\n });\n }\n setDialogLoading(promise) {\n const setLoading = (loading)=>{\n this.setState((state)=>{\n return {\n dialogData: {\n ...state.dialogData,\n loading: loading\n }\n };\n });\n };\n setLoading(true);\n promise.finally(()=>setLoading(false));\n }\n handleAuthClick(serverID) {\n let client = this.clients.get(serverID);\n this.openDialog(\"auth\", {\n username: client.nick\n });\n }\n handleAuthSubmit(username, password) {\n let serverID = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getActiveServerID(this.state);\n let client = this.clients.get(serverID);\n let promise = client.authenticate(\"PLAIN\", {\n username: username,\n password: password\n }).then(()=>{\n this.dismissDialog();\n let firstClient = this.clients.values().next().value;\n if (client !== firstClient) return;\n let autoconnect = $740325ae3fd2006f$export$3b637ec8b5dd5146.load();\n if (!autoconnect) return;\n console.log(\"Saving SASL PLAIN credentials\");\n autoconnect = {\n ...autoconnect,\n saslPlain: {\n username: username,\n password: password\n }\n };\n $740325ae3fd2006f$export$3b637ec8b5dd5146.put(autoconnect);\n });\n this.setDialogLoading(promise);\n }\n handleRegisterClick(serverID) {\n let client = this.clients.get(serverID);\n let emailRequired = client.checkAccountRegistrationCap(\"email-required\");\n this.openDialog(\"register\", {\n emailRequired: emailRequired\n });\n }\n handleRegisterSubmit(email, password) {\n let serverID = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getActiveServerID(this.state);\n let client = this.clients.get(serverID);\n // TODO: show registration status (pending/error) in dialog\n let promise = client.registerAccount(email, password).then((data)=>{\n this.dismissDialog();\n if (data.verificationRequired) this.handleVerifyClick(data.account, data.message);\n let firstClient = this.clients.values().next().value;\n if (client !== firstClient) return;\n let autoconnect = $740325ae3fd2006f$export$3b637ec8b5dd5146.load();\n if (!autoconnect) return;\n console.log(\"Saving account registration credentials\");\n autoconnect = {\n ...autoconnect,\n saslPlain: {\n username: data.account,\n password: password\n }\n };\n $740325ae3fd2006f$export$3b637ec8b5dd5146.put(autoconnect);\n });\n this.setDialogLoading(promise);\n }\n handleVerifyClick(account, message) {\n this.openDialog(\"verify\", {\n account: account,\n message: message\n });\n }\n handleVerifySubmit(code) {\n let serverID = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getActiveServerID(this.state);\n let client = this.clients.get(serverID);\n // TODO: display verification status (pending/error) in dialog\n let promise = client.verifyAccount(this.state.dialogData.account, code).then(()=>{\n this.dismissDialog();\n });\n this.setDialogLoading(promise);\n }\n handleAddNetworkClick() {\n this.openDialog(\"network\");\n }\n handleManageNetworkClick(serverID) {\n let server = this.state.servers.get(serverID);\n let bouncerNetID = server.bouncerNetID;\n let bouncerNetwork = this.state.bouncerNetworks.get(bouncerNetID);\n this.openDialog(\"network\", {\n id: bouncerNetID,\n params: bouncerNetwork\n });\n }\n async handleNetworkSubmit(attrs, autojoin) {\n let client = this.clients.values().next().value;\n this.dismissDialog();\n if (this.state.dialogData && this.state.dialogData.id) {\n if (Object.keys(attrs).length === 0) return;\n client.send({\n command: \"BOUNCER\",\n params: [\n \"CHANGENETWORK\",\n this.state.dialogData.id,\n $bd3c59ab25aed5ca$export$c27de7dba30c634a(attrs)\n ]\n });\n } else {\n attrs = {\n ...attrs,\n tls: \"1\"\n };\n let id = await client.createBouncerNetwork(attrs);\n if (!autojoin) return;\n // By this point, bouncer-networks-notify should've advertised\n // the new network\n let serverID = this.serverFromBouncerNetwork(id);\n let newClient = this.clients.get(serverID);\n newClient.params.autojoin = [\n autojoin\n ];\n this.switchToChannel = autojoin;\n }\n }\n handleNetworkRemove() {\n let client = this.clients.values().next().value;\n client.send({\n command: \"BOUNCER\",\n params: [\n \"DELNETWORK\",\n this.state.dialogData.id\n ]\n });\n this.dismissDialog();\n }\n handleOpenSettingsClick() {\n let showProtocolHandler = false;\n for (let [_id, client] of this.clients)if (client.caps.enabled.has(\"soju.im/bouncer-networks\")) {\n showProtocolHandler = true;\n break;\n }\n this.openDialog(\"settings\", {\n showProtocolHandler: showProtocolHandler\n });\n }\n handleSettingsChange(settings) {\n $740325ae3fd2006f$export$a5a6e0b888b2c992.put(settings);\n this.setState({\n settings: settings\n });\n }\n handleSettingsDisconnect() {\n this.dismissDialog();\n this.disconnectAll();\n }\n handleSwitchSubmit(buf) {\n this.dismissDialog();\n if (buf) this.switchBuffer(buf);\n }\n handleWindowFocus() {\n if (this.state.activeBuffer) // TODO: only do this if scrolled at the bottom\n this.markBufferAsRead(this.state.activeBuffer);\n // When the user focuses gamja, send a PING to make sure we detect any\n // network errors ASAP\n let now = new Date();\n if (this.lastFocusPingDate && now.getTime() - this.lastFocusPingDate.getTime() < 15000) return;\n this.lastFocusPingDate = now;\n for (let client of this.clients.values())client.send({\n command: \"PING\",\n params: [\n \"gamja\"\n ]\n });\n }\n componentDidMount() {\n this.baseTitle = document.title;\n (0, $f6fdf5978ceb757f$export$de27182ff8187d6c)(this);\n window.addEventListener(\"focus\", this.handleWindowFocus);\n }\n componentWillUnmount() {\n document.title = this.baseTitle;\n window.removeEventListener(\"focus\", this.handleWindowFocus);\n }\n render() {\n if (this.state.loading) {\n let error = null;\n if (this.state.error) error = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`

    ${this.state.error}

    `;\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`
    ${error}
    `;\n }\n let activeBuffer = null, activeServer = null, activeBouncerNetwork = null;\n if (this.state.buffers.get(this.state.activeBuffer)) {\n activeBuffer = this.state.buffers.get(this.state.activeBuffer);\n activeServer = this.state.servers.get(activeBuffer.server);\n let bouncerNetID = activeServer.bouncerNetID;\n if (bouncerNetID) activeBouncerNetwork = this.state.bouncerNetworks.get(bouncerNetID);\n }\n let activeClient = null;\n if (activeBuffer) activeClient = this.clients.get(activeBuffer.server);\n if (this.state.connectForm) {\n let status = activeServer ? activeServer.status : (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).DISCONNECTED;\n let connecting = status === (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).CONNECTING || status === (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).REGISTERING;\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t
    \n\t\t\t\t\t<${0, $c6f536f0bcf4fccd$export$2e2bcd8739ae039}\n\t\t\t\t\t\terror=${this.state.error}\n\t\t\t\t\t\tparams=${this.state.connectParams}\n\t\t\t\t\t\tauth=${this.config.server.auth}\n\t\t\t\t\t\tconnecting=${connecting}\n\t\t\t\t\t\tonSubmit=${this.handleConnectSubmit}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t`;\n }\n let bufferHeader = null;\n if (activeBuffer) {\n let activeUser = null;\n if (activeBuffer.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).NICK) activeUser = activeServer.users.get(activeBuffer.name);\n bufferHeader = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t
    \n\t\t\t\t\t<${0, $94cb31469f63b35c$export$2e2bcd8739ae039}\n\t\t\t\t\t\tbuffer=${activeBuffer}\n\t\t\t\t\t\tserver=${activeServer}\n\t\t\t\t\t\tuser=${activeUser}\n\t\t\t\t\t\tbouncerNetwork=${activeBouncerNetwork}\n\t\t\t\t\t\tonChannelClick=${this.handleChannelClick}\n\t\t\t\t\t\tonClose=${()=>this.close(activeBuffer)}\n\t\t\t\t\t\tonJoin=${()=>this.handleJoinClick(activeBuffer)}\n\t\t\t\t\t\tonReconnect=${()=>this.reconnect()}\n\t\t\t\t\t\tonAddNetwork=${this.handleAddNetworkClick}\n\t\t\t\t\t\tonManageNetwork=${()=>this.handleManageNetworkClick(activeBuffer.server)}\n\t\t\t\t\t\tonOpenSettings=${this.handleOpenSettingsClick}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t`;\n }\n let memberList = null;\n if (activeBuffer && activeBuffer.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).CHANNEL) memberList = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t${activeBuffer.members.size} users\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t<${0, $15e0fa56cfe1c276$export$2e2bcd8739ae039}\n\t\t\t\t\t\t\tmembers=${activeBuffer.members}\n\t\t\t\t\t\t\tusers=${activeServer.users}\n\t\t\t\t\t\t\tonNickClick=${this.handleNickClick}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t`;\n let dialog = null;\n let dialogData = this.state.dialogData || {};\n let dialogBody;\n switch(this.state.dialog){\n case \"network\":\n let isNew = !dialogData.id;\n let title = isNew ? \"Add network\" : \"Edit network\";\n dialog = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${0, $676cb1384c20bf0e$export$2e2bcd8739ae039} title=${title} onDismiss=${this.dismissDialog}>\n\t\t\t\t\t<${0, $03b5941ba753e1f6$export$2e2bcd8739ae039}\n\t\t\t\t\t\tonSubmit=${this.handleNetworkSubmit}\n\t\t\t\t\t\tonRemove=${this.handleNetworkRemove}\n\t\t\t\t\t\tparams=${dialogData.params}\n\t\t\t\t\t\tautojoin=${dialogData.autojoin}\n\t\t\t\t\t\tisNew=${isNew}\n\t\t\t\t\t/>\n\t\t\t\t\n\t\t\t`;\n break;\n case \"help\":\n dialog = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${0, $676cb1384c20bf0e$export$2e2bcd8739ae039} title=\"Help\" onDismiss=${this.dismissDialog}>\n\t\t\t\t\t<${0, $af9ce1e202e3524a$export$2e2bcd8739ae039}/>\n\t\t\t\t\n\t\t\t`;\n break;\n case \"join\":\n dialog = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${0, $676cb1384c20bf0e$export$2e2bcd8739ae039} title=\"Join channel\" onDismiss=${this.dismissDialog}>\n\t\t\t\t\t<${0, $b4b4b87f4b38722c$export$2e2bcd8739ae039} channel=${dialogData.channel} onSubmit=${this.handleJoinSubmit}/>\n\t\t\t\t\n\t\t\t`;\n break;\n case \"auth\":\n if (dialogData.loading) dialogBody = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`

    Logging in…

    `;\n else dialogBody = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t<${0, $368ce7ef0e8c1c36$export$2e2bcd8739ae039} username=${dialogData.username} onSubmit=${this.handleAuthSubmit}/>\n\t\t\t\t`;\n dialog = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${0, $676cb1384c20bf0e$export$2e2bcd8739ae039} title=\"Login to ${(0, $fca64bf918d5638f$export$53e73e095c2ac1e2)(activeServer, activeBouncerNetwork)}\" onDismiss=${this.dismissDialog}>\n\t\t\t\t\t${dialogBody}\n\t\t\t\t\n\t\t\t`;\n break;\n case \"register\":\n if (dialogData.loading) dialogBody = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`

    Creating account…

    `;\n else dialogBody = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t<${0, $210f1d422ab09f4c$export$2e2bcd8739ae039} emailRequired=${dialogData.emailRequired} onSubmit=${this.handleRegisterSubmit}/>\n\t\t\t\t`;\n dialog = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${0, $676cb1384c20bf0e$export$2e2bcd8739ae039} title=\"Register a new ${(0, $fca64bf918d5638f$export$53e73e095c2ac1e2)(activeServer, activeBouncerNetwork)} account\" onDismiss=${this.dismissDialog}>\n\t\t\t\t\t${dialogBody}\n\t\t\t\t\n\t\t\t`;\n break;\n case \"verify\":\n if (dialogData.loading) dialogBody = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`

    Verifying account…

    `;\n else dialogBody = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t<${0, $5855ce19a38be3e6$export$2e2bcd8739ae039} account=${dialogData.account} message=${dialogData.message} onSubmit=${this.handleVerifySubmit}/>\n\t\t\t\t`;\n dialog = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${0, $676cb1384c20bf0e$export$2e2bcd8739ae039} title=\"Verify ${(0, $fca64bf918d5638f$export$53e73e095c2ac1e2)(activeServer, activeBouncerNetwork)} account\" onDismiss=${this.dismissDialog}>\n\t\t\t\t\t${dialogBody}\n\t\t\t\t\n\t\t\t`;\n break;\n case \"settings\":\n dialog = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${0, $676cb1384c20bf0e$export$2e2bcd8739ae039} title=\"Settings\" onDismiss=${this.dismissDialog}>\n\t\t\t\t\t<${0, $9fbbfef00d6a25bf$export$2e2bcd8739ae039}\n\t\t\t\t\t\tsettings=${this.state.settings}\n\t\t\t\t\t\tshowProtocolHandler=${dialogData.showProtocolHandler}\n\t\t\t\t\t\tonChange=${this.handleSettingsChange}\n\t\t\t\t\t\tonDisconnect=${this.handleSettingsDisconnect}\n\t\t\t\t\t\tonClose=${this.dismissDialog}\n\t\t\t\t\t/>\n\t\t\t\t\n\t\t\t`;\n break;\n case \"switch\":\n dialog = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${0, $676cb1384c20bf0e$export$2e2bcd8739ae039} title=\"Switch to a channel or user\" onDismiss=${this.dismissDialog}>\n\t\t\t\t\t<${0, $9b625992f92feff7$export$2e2bcd8739ae039}\n\t\t\t\t\t\tbuffers=${this.state.buffers}\n\t\t\t\t\t\tservers=${this.state.servers}\n\t\t\t\t\t\tbouncerNetworks=${this.state.bouncerNetworks}\n\t\t\t\t\t\tonSubmit=${this.handleSwitchSubmit}/>\n\t\t\t\t\n\t\t\t`;\n break;\n }\n let error = null;\n if (this.state.error) error = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t
    \n\t\t\t\t\t${this.state.error}\n\t\t\t\t\t${\" \"}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t`;\n let composerReadOnly = false;\n if (activeServer && activeServer.status !== (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).REGISTERED) composerReadOnly = true;\n let commandOnly = false;\n let privmsgMaxLen;\n if (activeBuffer && activeBuffer.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) commandOnly = true;\n else if (activeBuffer) {\n let client = this.clients.get(activeBuffer.server);\n privmsgMaxLen = $bd3c59ab25aed5ca$export$feed2f17626e5168(client.isupport, client.nick, activeBuffer.name);\n }\n let app = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\n\t\t\t\t<${(0, $cd5f528e18548e6d$export$2e2bcd8739ae039)}\n\t\t\t\t\tbuffers=${this.state.buffers}\n\t\t\t\t\tservers=${this.state.servers}\n\t\t\t\t\tbouncerNetworks=${this.state.bouncerNetworks}\n\t\t\t\t\tactiveBuffer=${this.state.activeBuffer}\n\t\t\t\t\tonBufferClick=${this.handleBufferListClick}\n\t\t\t\t\tonBufferClose=${this.handleBufferListClose}\n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t${bufferHeader}\n\t\t\t<${(0, $9ead1202cd2221f9$export$2e2bcd8739ae039)}\n\t\t\t\ttarget=${this.buffer}\n\t\t\t\tstickTo=\".logline\"\n\t\t\t\tscrollKey=${this.state.activeBuffer}\n\t\t\t\tonScrollTop=${this.handleBufferScrollTop}\n\t\t\t>\n\t\t\t\t
    \n\t\t\t\t\t<${(0, $47db4ea8a56fc107$export$2e2bcd8739ae039)}\n\t\t\t\t\t\tbuffer=${activeBuffer}\n\t\t\t\t\t\tserver=${activeServer}\n\t\t\t\t\t\tsettings=${this.state.settings}\n\t\t\t\t\t\tonChannelClick=${this.handleChannelClick}\n\t\t\t\t\t\tonNickClick=${this.handleNickClick}\n\t\t\t\t\t\tonAuthClick=${()=>this.handleAuthClick(activeBuffer.server)}\n\t\t\t\t\t\tonRegisterClick=${()=>this.handleRegisterClick(activeBuffer.server)}\n\t\t\t\t\t\tonVerifyClick=${this.handleVerifyClick}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\n\t\t\t${memberList}\n\t\t\t<${(0, $142bbba13add3ea5$export$2e2bcd8739ae039)}\n\t\t\t\tref=${this.composer}\n\t\t\t\tclient=${activeClient}\n\t\t\t\treadOnly=${composerReadOnly}\n\t\t\t\tonSubmit=${this.handleComposerSubmit}\n\t\t\t\tautocomplete=${this.autocomplete}\n\t\t\t\tcommandOnly=${commandOnly}\n\t\t\t\tmaxLen=${privmsgMaxLen}\n\t\t\t/>\n\t\t\t${dialog}\n\t\t\t${error}\n\t\t`;\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t<${(0, $fca64bf918d5638f$export$8fa45c82eddfe270).Provider} value=${this.state.settings}>\n\t\t\t\t${app}\n\t\t\t\n\t\t`;\n }\n}\n\n\n(0, $b2a774aae58c7b4e$export$b3890eb0ae9dca99)((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`<${(0, $5c2a91b7f6173cd8$export$2e2bcd8739ae039)}/>`, document.body);\n\n\n//# sourceMappingURL=index.7fbdf9ee.js.map\n","import { html, render } from \"./lib/index.js\";\nimport App from \"./components/app.js\";\n\nrender(html`<${App}/>`, document.body);\n","export * from \"../node_modules/preact/dist/preact.module.js\";\n\nimport { h } from \"../node_modules/preact/dist/preact.module.js\";\nimport htm from \"../node_modules/htm/dist/htm.module.js\";\nexport const html = htm.bind(h);\n\nimport * as linkifyjs from \"../node_modules/linkifyjs/dist/linkify.es.js\";\nexport { linkifyjs };\n","var n,l,u,t,i,r,o,e,f,c,s,a,h,p={},v=[],y=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,d=Array.isArray;function w(n,l){for(var u in l)n[u]=l[u];return n}function _(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function g(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return m(l,e,i,r,null)}function m(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function b(){return{current:null}}function k(n){return n.children}function x(n,l){this.props=n,this.context=l}function C(n,l){if(null==l)return n.__?C(n.__,n.__i+1):null;for(var u;lu&&i.sort(e));P.__r=0}function $(n,l,u,t,i,r,o,e,f,c,s){var a,h,y,d,w,_,g=t&&t.__k||v,m=l.length;for(f=I(u,l,g,f,m),a=0;a0?m(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):o).__=n,o.__b=n.__b+1,e=null,-1!==(c=o.__i=L(o,u,f,a))&&(a--,(e=u[c])&&(e.__u|=2)),null==e||null===e.__v?(-1==c&&h--,\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(a)for(r=0;r(null!=f&&0==(2&f.__u)?1:0))for(i=u-1,r=u+1;i>=0||r=0){if((f=l[i])&&0==(2&f.__u)&&o==f.key&&e===f.type)return i;i--}if(r2&&(f.children=arguments.length>3?n.call(arguments,2):t),m(l.type,f,i||l.key,r||l.ref,null)}function J(n,l){var u={__c:l=\"__cC\"+h++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.forEach(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=v.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=w({},this.state),\"function\"==typeof n&&(n=n(w({},u),this.props)),n&&w(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},x.prototype.render=k,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},P.__r=0,f=/(PointerCapture)$|Capture$/i,c=0,s=O(!1),a=O(!0),h=0;export{x as Component,k as Fragment,G as cloneElement,J as createContext,g as createElement,b as createRef,g as h,E as hydrate,t as isValidElement,l as options,D as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-expect-error We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {import('./index').ContainerNode} node The node to remove\n */\nexport function removeNode(node) {\n\tif (node && node.parentNode) node.parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { slice } from './util';\nimport options from './options';\nimport { UNDEFINED } from './constants';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor for this\n * virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the\n * virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === UNDEFINED) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\t/** @type {import('./internal').VNode} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_component: null,\n\t\tconstructor: UNDEFINED,\n\t\t_original: original == null ? ++vnodeId : original,\n\t\t_index: -1,\n\t\t_flags: 0\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor == UNDEFINED;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet oldVNode = component._vnode,\n\t\toldDom = oldVNode._dom,\n\t\tcommitQueue = [],\n\t\trefQueue = [];\n\n\tif (component._parentDom) {\n\t\tconst newVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n","import { IS_NON_DIMENSIONAL, SVG_NAMESPACE } from '../constants';\nimport options from '../options';\n\nfunction setStyle(style, key, value) {\n\tif (key[0] == '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\nconst CAPTURE_REGEX = /(PointerCapture)$|Capture$/i;\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name == 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] == 'o' && name[1] == 'n') {\n\t\tuseCapture = name != (name = name.replace(CAPTURE_REGEX, '$1'));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (\n\t\t\tname.toLowerCase() in dom ||\n\t\t\tname == 'onFocusOut' ||\n\t\t\tname == 'onFocusIn'\n\t\t)\n\t\t\tname = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == SVG_NAMESPACE) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] == '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {import('../internal').PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e._dispatched == null) {\n\t\t\t\te._dispatched = eventClock++;\n\n\t\t\t\t// When `e._dispatched` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e._dispatched < eventHandler._attached) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {Set | null} */\n\t\t\t\tlet subs = new Set();\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\t\tsubs = null;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.add(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tif (subs) {\n\t\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport {\n\tEMPTY_OBJ,\n\tEMPTY_ARR,\n\tINSERT_VNODE,\n\tMATCHED,\n\tUNDEFINED\n} from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * @typedef {import('../internal').ComponentChildren} ComponentChildren\n * @typedef {import('../internal').Component} Component\n * @typedef {import('../internal').PreactElement} PreactElement\n * @typedef {import('../internal').VNode} VNode\n */\n\n/**\n * Diff the children of a virtual node\n * @param {PreactElement} parentDom The DOM element whose children are being\n * diffed\n * @param {ComponentChildren[]} renderResult\n * @param {VNode} newParentVNode The new virtual node whose children should be\n * diff'ed against oldParentVNode\n * @param {VNode} oldParentVNode The old virtual node whose children should be\n * diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\t/** @type {VNode} */\n\t\toldVNode,\n\t\t/** @type {VNode} */\n\t\tchildVNode,\n\t\t/** @type {PreactElement} */\n\t\tnewDom,\n\t\t/** @type {PreactElement} */\n\t\tfirstChildDom;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\t/** @type {VNode[]} */\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet newChildrenLength = renderResult.length;\n\n\toldDom = constructNewChildrenArray(\n\t\tnewParentVNode,\n\t\trenderResult,\n\t\toldChildren,\n\t\toldDom,\n\t\tnewChildrenLength\n\t);\n\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = newParentVNode._children[i];\n\t\tif (childVNode == null) continue;\n\n\t\t// At this point, constructNewChildrenArray has assigned _index to be the\n\t\t// matchingIndex for this VNode's oldVNode (or -1 if there is no oldVNode).\n\t\tif (childVNode._index === -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[childVNode._index] || EMPTY_OBJ;\n\t\t}\n\n\t\t// Update childVNode._index to its final index\n\t\tchildVNode._index = i;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tlet result = diff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\t// Adjust DOM nodes\n\t\tnewDom = childVNode._dom;\n\t\tif (childVNode.ref && oldVNode.ref != childVNode.ref) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, null, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(\n\t\t\t\tchildVNode.ref,\n\t\t\t\tchildVNode._component || newDom,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t}\n\n\t\tif (firstChildDom == null && newDom != null) {\n\t\t\tfirstChildDom = newDom;\n\t\t}\n\n\t\tif (\n\t\t\tchildVNode._flags & INSERT_VNODE ||\n\t\t\toldVNode._children === childVNode._children\n\t\t) {\n\t\t\toldDom = insert(childVNode, oldDom, parentDom);\n\t\t} else if (typeof childVNode.type == 'function' && result !== UNDEFINED) {\n\t\t\toldDom = result;\n\t\t} else if (newDom) {\n\t\t\toldDom = newDom.nextSibling;\n\t\t}\n\n\t\t// Unset diffing flags\n\t\tchildVNode._flags &= ~(INSERT_VNODE | MATCHED);\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\treturn oldDom;\n}\n\n/**\n * @param {VNode} newParentVNode\n * @param {ComponentChildren[]} renderResult\n * @param {VNode[]} oldChildren\n */\nfunction constructNewChildrenArray(\n\tnewParentVNode,\n\trenderResult,\n\toldChildren,\n\toldDom,\n\tnewChildrenLength\n) {\n\t/** @type {number} */\n\tlet i;\n\t/** @type {VNode} */\n\tlet childVNode;\n\t/** @type {VNode} */\n\tlet oldVNode;\n\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength;\n\n\tlet skew = 0;\n\n\tnewParentVNode._children = new Array(newChildrenLength);\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\t// @ts-expect-error We are reusing the childVNode variable to hold both the\n\t\t// pre and post normalized childVNode\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tnewParentVNode._children[i] = null;\n\t\t\tcontinue;\n\t\t}\n\t\t// If this newVNode is being reused (e.g.
    {reuse}{reuse}
    ) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint' ||\n\t\t\tchildVNode.constructor == String\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode.constructor === UNDEFINED && childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t// const reuse =
    \n\t\t\t//
    {reuse}{reuse}
    \n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\tconst skewedIndex = i + skew;\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Temporarily store the matchingIndex on the _index property so we can pull\n\t\t// out the oldVNode in diffChildren. We'll override this to the VNode's\n\t\t// final index after using this property to get the oldVNode\n\t\tconst matchingIndex = (childVNode._index = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t));\n\n\t\toldVNode = null;\n\t\tif (matchingIndex !== -1) {\n\t\t\toldVNode = oldChildren[matchingIndex];\n\t\t\tremainingOldChildren--;\n\t\t\tif (oldVNode) {\n\t\t\t\toldVNode._flags |= MATCHED;\n\t\t\t}\n\t\t}\n\n\t\t// Here, we define isMounting for the purposes of the skew diffing\n\t\t// algorithm. Nodes that are unsuspending are considered mounting and we detect\n\t\t// this by checking if oldVNode._original === null\n\t\tconst isMounting = oldVNode == null || oldVNode._original === null;\n\n\t\tif (isMounting) {\n\t\t\tif (matchingIndex == -1) {\n\t\t\t\tskew--;\n\t\t\t}\n\n\t\t\t// If we are mounting a DOM VNode, mark it for insertion\n\t\t\tif (typeof childVNode.type != 'function') {\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t} else if (matchingIndex != skewedIndex) {\n\t\t\t// When we move elements around i.e. [0, 1, 2] --> [1, 0, 2]\n\t\t\t// --> we diff 1, we find it at position 1 while our skewed index is 0 and our skew is 0\n\t\t\t// we set the skew to 1 as we found an offset.\n\t\t\t// --> we diff 0, we find it at position 0 while our skewed index is at 2 and our skew is 1\n\t\t\t// this makes us increase the skew again.\n\t\t\t// --> we diff 2, we find it at position 2 while our skewed index is at 4 and our skew is 2\n\t\t\t//\n\t\t\t// this becomes an optimization question where currently we see a 1 element offset as an insertion\n\t\t\t// or deletion i.e. we optimize for [0, 1, 2] --> [9, 0, 1, 2]\n\t\t\t// while a more than 1 offset we see as a swap.\n\t\t\t// We could probably build heuristics for having an optimized course of action here as well, but\n\t\t\t// might go at the cost of some bytes.\n\t\t\t//\n\t\t\t// If we wanted to optimize for i.e. only swaps we'd just do the last two code-branches and have\n\t\t\t// only the first item be a re-scouting and all the others fall in their skewed counter-part.\n\t\t\t// We could also further optimize for swaps\n\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\tskew--;\n\t\t\t} else if (matchingIndex == skewedIndex + 1) {\n\t\t\t\tskew++;\n\t\t\t} else {\n\t\t\t\tif (matchingIndex > skewedIndex) {\n\t\t\t\t\tskew--;\n\t\t\t\t} else {\n\t\t\t\t\tskew++;\n\t\t\t\t}\n\n\t\t\t\t// Move this VNode's DOM if the original index (matchingIndex) doesn't\n\t\t\t\t// match the new skew index (i + new skew)\n\t\t\t\t// In the former two branches we know that it matches after skewing\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any. Loop forwards so that as we\n\t// unmount DOM from the beginning of the oldChildren, we can adjust oldDom to\n\t// point to the next child, which needs to be the first DOM node that won't be\n\t// unmounted.\n\tif (remainingOldChildren) {\n\t\tfor (i = 0; i < oldChildrenLength; i++) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode != null && (oldVNode._flags & MATCHED) == 0) {\n\t\t\t\tif (oldVNode._dom == oldDom) {\n\t\t\t\t\toldDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * @param {VNode} parentVNode\n * @param {PreactElement} oldDom\n * @param {PreactElement} parentDom\n * @returns {PreactElement}\n */\nfunction insert(parentVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\n\tif (typeof parentVNode.type == 'function') {\n\t\tlet children = parentVNode._children;\n\t\tfor (let i = 0; children && i < children.length; i++) {\n\t\t\tif (children[i]) {\n\t\t\t\t// If we enter this code path on sCU bailout, where we copy\n\t\t\t\t// oldVNode._children to newVNode._children, we need to update the old\n\t\t\t\t// children's _parent pointer to point to the newVNode (parentVNode\n\t\t\t\t// here).\n\t\t\t\tchildren[i]._parent = parentVNode;\n\t\t\t\toldDom = insert(children[i], oldDom, parentDom);\n\t\t\t}\n\t\t}\n\n\t\treturn oldDom;\n\t} else if (parentVNode._dom != oldDom) {\n\t\tif (oldDom && parentVNode.type && !parentDom.contains(oldDom)) {\n\t\t\toldDom = getDomSibling(parentVNode);\n\t\t}\n\t\tparentDom.insertBefore(parentVNode._dom, oldDom || null);\n\t\toldDom = parentVNode._dom;\n\t}\n\n\tdo {\n\t\toldDom = oldDom && oldDom.nextSibling;\n\t} while (oldDom != null && oldDom.nodeType == 8);\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {ComponentChildren} children The unflattened children of a virtual\n * node\n * @returns {VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\n/**\n * @param {VNode} childVNode\n * @param {VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\t// We only need to perform a search if there are more children\n\t// (remainingOldChildren) to search. However, if the oldVNode we just looked\n\t// at skewedIndex was not already used in this diff, then there must be at\n\t// least 1 other (so greater than 1) remainingOldChildren to attempt to match\n\t// against. So the following condition checks that ensuring\n\t// remainingOldChildren > 1 if the oldVNode is not already used/matched. Else\n\t// if the oldVNode was null or matched, then there could needs to be at least\n\t// 1 (aka `remainingOldChildren > 0`) children to find and compare against.\n\t//\n\t// If there is an unkeyed functional VNode, that isn't a built-in like our Fragment,\n\t// we should not search as we risk re-using state of an unrelated VNode. (reverted for now)\n\tlet shouldSearch =\n\t\t// (typeof type != 'function' || type === Fragment || key) &&\n\t\tremainingOldChildren >\n\t\t(oldVNode != null && (oldVNode._flags & MATCHED) == 0 ? 1 : 0);\n\n\tif (\n\t\toldVNode === null ||\n\t\t(oldVNode &&\n\t\t\tkey == oldVNode.key &&\n\t\t\ttype === oldVNode.type &&\n\t\t\t(oldVNode._flags & MATCHED) == 0)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (shouldSearch) {\n\t\tlet x = skewedIndex - 1;\n\t\tlet y = skewedIndex + 1;\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) == 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) == 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n","import {\n\tEMPTY_OBJ,\n\tMATH_NAMESPACE,\n\tMODE_HYDRATE,\n\tMODE_SUSPENDED,\n\tRESET_MODE,\n\tSVG_NAMESPACE,\n\tUNDEFINED,\n\tXHTML_NAMESPACE\n} from '../constants';\nimport { BaseComponent, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * @typedef {import('../internal').ComponentChildren} ComponentChildren\n * @typedef {import('../internal').Component} Component\n * @typedef {import('../internal').PreactElement} PreactElement\n * @typedef {import('../internal').VNode} VNode\n */\n\n/**\n * @template {any} T\n * @typedef {import('../internal').Ref} Ref\n */\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {PreactElement} parentDom The parent of the DOM element\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\t/** @type {any} */\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== UNDEFINED) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._flags & MODE_SUSPENDED) {\n\t\tisHydrating = !!(oldVNode._flags & MODE_HYDRATE);\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\t\t\tconst isClassComponent =\n\t\t\t\t'prototype' in newType && newType.prototype.render;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif (isClassComponent) {\n\t\t\t\t\t// @ts-expect-error The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-expect-error Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new BaseComponent(\n\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (isClassComponent && c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (isClassComponent && newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!c._force &&\n\t\t\t\t\t((c.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t\tnewVNode._original == oldVNode._original)\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original != oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.some(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif (isClassComponent) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (isClassComponent && !isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\toldDom = diffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnamespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._flags &= RESET_MODE;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = null;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\t\tif (e.then) {\n\t\t\t\t\tnewVNode._flags |= isHydrating\n\t\t\t\t\t\t? MODE_HYDRATE | MODE_SUSPENDED\n\t\t\t\t\t\t: MODE_SUSPENDED;\n\n\t\t\t\t\twhile (oldDom && oldDom.nodeType == 8 && oldDom.nextSibling) {\n\t\t\t\t\t\toldDom = oldDom.nextSibling;\n\t\t\t\t\t}\n\n\t\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t\t} else {\n\t\t\t\t\tfor (let i = excessDomChildren.length; i--; ) {\n\t\t\t\t\t\tremoveNode(excessDomChildren[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == null &&\n\t\tnewVNode._original == oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\toldDom = newVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n\n\treturn newVNode._flags & MODE_SUSPENDED ? undefined : oldDom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-expect-error Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-expect-error See above comment on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {PreactElement} dom The DOM element representing the virtual nodes\n * being diffed\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n * @returns {PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = /** @type {string} */ (newVNode.type);\n\t/** @type {any} */\n\tlet i;\n\t/** @type {{ __html?: string }} */\n\tlet newHtml;\n\t/** @type {{ __html?: string }} */\n\tlet oldHtml;\n\t/** @type {ComponentChildren} */\n\tlet newChildren;\n\tlet value;\n\tlet inputValue;\n\tlet checked;\n\n\t// Tracks entering and exiting namespaces when descending through the tree.\n\tif (nodeType == 'svg') namespace = SVG_NAMESPACE;\n\telse if (nodeType == 'math') namespace = MATH_NAMESPACE;\n\telse if (!namespace) namespace = XHTML_NAMESPACE;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tvalue = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tvalue &&\n\t\t\t\t'setAttribute' in value == !!nodeType &&\n\t\t\t\t(nodeType ? value.localName == nodeType : value.nodeType == 3)\n\t\t\t) {\n\t\t\t\tdom = value;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType == null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = document.createElementNS(\n\t\t\tnamespace,\n\t\t\tnodeType,\n\t\t\tnewProps.is && newProps\n\t\t);\n\n\t\t// we are creating a new node, so we can assume this is a new subtree (in\n\t\t// case we are hydrating), this deopts the hydrate\n\t\tif (isHydrating) {\n\t\t\tif (options._hydrationMismatch)\n\t\t\t\toptions._hydrationMismatch(newVNode, excessDomChildren);\n\t\t\tisHydrating = false;\n\t\t}\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\t// If we are in a situation where we are not hydrating but are using\n\t\t// existing DOM (e.g. replaceNode) we should read the existing DOM\n\t\t// attributes to diff them\n\t\tif (!isHydrating && excessDomChildren != null) {\n\t\t\toldProps = {};\n\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\tvalue = dom.attributes[i];\n\t\t\t\toldProps[value.name] = value.value;\n\t\t\t}\n\t\t}\n\n\t\tfor (i in oldProps) {\n\t\t\tvalue = oldProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\toldHtml = value;\n\t\t\t} else if (!(i in newProps)) {\n\t\t\t\tif (\n\t\t\t\t\t(i == 'value' && 'defaultValue' in newProps) ||\n\t\t\t\t\t(i == 'checked' && 'defaultChecked' in newProps)\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tsetProperty(dom, i, null, value, namespace);\n\t\t\t}\n\t\t}\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tfor (i in newProps) {\n\t\t\tvalue = newProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t\tnewChildren = value;\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\tnewHtml = value;\n\t\t\t} else if (i == 'value') {\n\t\t\t\tinputValue = value;\n\t\t\t} else if (i == 'checked') {\n\t\t\t\tchecked = value;\n\t\t\t} else if (\n\t\t\t\t(!isHydrating || typeof value == 'function') &&\n\t\t\t\toldProps[i] !== value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, value, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\tif (\n\t\t\t\t!isHydrating &&\n\t\t\t\t(!oldHtml ||\n\t\t\t\t\t(newHtml.__html !== oldHtml.__html &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML))\n\t\t\t) {\n\t\t\t\tdom.innerHTML = newHtml.__html;\n\t\t\t}\n\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\tif (oldHtml) dom.innerHTML = '';\n\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(newChildren) ? newChildren : [newChildren],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnodeType == 'foreignObject' ? XHTML_NAMESPACE : namespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tremoveNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// As above, don't diff props during hydration\n\t\tif (!isHydrating) {\n\t\t\ti = 'value';\n\t\t\tif (nodeType == 'progress' && inputValue == null) {\n\t\t\t\tdom.removeAttribute('value');\n\t\t\t} else if (\n\t\t\t\tinputValue !== UNDEFINED &&\n\t\t\t\t// #2756 For the -element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(inputValue !== dom[i] ||\n\t\t\t\t\t(nodeType == 'progress' && !inputValue) ||\n\t\t\t\t\t// This is only for IE 11 to fix \n\t\t\t\t\n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\n\t\t`;\n\t}\n}\n","import { html } from \"../lib/index.js\";\nimport { keybindings } from \"../keybindings.js\";\nimport commands from \"../commands.js\";\n\nfunction KeyBindingsHelp() {\n\tlet l = keybindings.map((binding) => {\n\t\tlet keys = [];\n\t\tif (binding.ctrlKey) {\n\t\t\tkeys.push(\"Ctrl\");\n\t\t}\n\t\tif (binding.altKey) {\n\t\t\tkeys.push(\"Alt\");\n\t\t}\n\t\tkeys.push(binding.key);\n\n\t\tkeys = keys.map((name, i) => {\n\t\t\treturn html`\n\t\t\t\t${i > 0 ? \"+\" : null}\n\t\t\t\t${name}\n\t\t\t`;\n\t\t});\n\n\t\treturn html`\n\t\t\t
    ${keys}
    \n\t\t\t
    ${binding.description}
    \n\t\t`;\n\t});\n\n\tl.push(html`\n\t\t
    Tab
    \n\t\t
    Automatically complete nickname or channel
    \n\t`);\n\n\tif (!window.matchMedia(\"(pointer: none)\").matches) {\n\t\tl.push(html`\n\t\t\t
    Middle mouse click
    \n\t\t\t
    Close buffer
    \n\t\t`);\n\t}\n\n\treturn html`
    ${l}
    `;\n}\n\nfunction CommandsHelp() {\n\tlet l = [...commands.keys()].map((name) => {\n\t\tlet cmd = commands.get(name);\n\n\t\tlet usage = [html`/${name}`];\n\t\tif (cmd.usage) {\n\t\t\tusage.push(\" \" + cmd.usage);\n\t\t}\n\n\t\treturn html`\n\t\t\t
    ${usage}
    \n\t\t\t
    ${cmd.description}
    \n\t\t`;\n\t});\n\n\treturn html`
    ${l}
    `;\n}\n\nexport default function Help() {\n\treturn html`\n\t\t

    Key bindings

    \n\t\t<${KeyBindingsHelp}/>\n\n\t\t

    Commands

    \n\t\t<${CommandsHelp}/>\n\t`;\n}\n","import { ReceiptType, Unread, BufferType, receiptFromMessage } from \"./state.js\";\n\nfunction getSiblingBuffer(buffers, bufID, delta) {\n\tlet bufList = Array.from(buffers.values());\n\tlet i = bufList.findIndex((buf) => buf.id === bufID);\n\tif (i < 0) {\n\t\treturn null;\n\t}\n\ti = (i + bufList.length + delta) % bufList.length;\n\treturn bufList[i];\n}\n\nexport const keybindings = [\n\t{\n\t\tkey: \"h\",\n\t\taltKey: true,\n\t\tdescription: \"Mark all messages as read\",\n\t\texecute: (app) => {\n\t\t\tapp.setState((state) => {\n\t\t\t\tlet buffers = new Map();\n\t\t\t\tstate.buffers.forEach((buf) => {\n\t\t\t\t\tbuffers.set(buf.id, {\n\t\t\t\t\t\t...buf,\n\t\t\t\t\t\tunread: Unread.NONE,\n\t\t\t\t\t\tprevReadReceipt: null,\n\t\t\t\t\t});\n\n\t\t\t\t\tlet receipts = {};\n\t\t\t\t\tif (buf.messages.length > 0) {\n\t\t\t\t\t\tlet lastMsg = buf.messages[buf.messages.length - 1];\n\t\t\t\t\t\treceipts[ReceiptType.READ] = receiptFromMessage(lastMsg);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet client = app.clients.get(buf.server);\n\t\t\t\t\tapp.bufferStore.put({\n\t\t\t\t\t\tname: buf.name,\n\t\t\t\t\t\tserver: client.params,\n\t\t\t\t\t\tunread: Unread.NONE,\n\t\t\t\t\t\treceipts,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn { buffers };\n\t\t\t}, () => {\n\t\t\t\tapp.updateDocumentTitle();\n\t\t\t});\n\t\t},\n\t},\n\t{\n\t\tkey: \"a\",\n\t\taltKey: true,\n\t\tdescription: \"Jump to next buffer with activity\",\n\t\texecute: (app) => {\n\t\t\t// TODO: order by age if same priority\n\t\t\tlet firstServerBuffer = null;\n\t\t\tlet target = null;\n\t\t\tfor (let buf of app.state.buffers.values()) {\n\t\t\t\tif (!firstServerBuffer && buf.type === BufferType.SERVER) {\n\t\t\t\t\tfirstServerBuffer = buf;\n\t\t\t\t}\n\n\t\t\t\tif (buf.unread === Unread.NONE) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (!target || Unread.compare(buf.unread, target.unread) > 0) {\n\t\t\t\t\ttarget = buf;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!target) {\n\t\t\t\ttarget = firstServerBuffer;\n\t\t\t}\n\t\t\tif (target) {\n\t\t\t\tapp.switchBuffer(target);\n\t\t\t}\n\t\t},\n\t},\n\t{\n\t\tkey: \"ArrowUp\",\n\t\taltKey: true,\n\t\tdescription: \"Jump to the previous buffer\",\n\t\texecute: (app) => {\n\t\t\tlet prev = getSiblingBuffer(app.state.buffers, app.state.activeBuffer, -1);\n\t\t\tif (prev) {\n\t\t\t\tapp.switchBuffer(prev);\n\t\t\t}\n\t\t},\n\t},\n\t{\n\t\tkey: \"ArrowDown\",\n\t\taltKey: true,\n\t\tdescription: \"Jump to the next buffer\",\n\t\texecute: (app) => {\n\t\t\tlet next = getSiblingBuffer(app.state.buffers, app.state.activeBuffer, 1);\n\t\t\tif (next) {\n\t\t\t\tapp.switchBuffer(next);\n\t\t\t}\n\t\t},\n\t},\n\t{\n\t\tkey: \"k\",\n\t\tctrlKey: true,\n\t\tdescription: \"Switch to a buffer\",\n\t\texecute: (app) => {\n\t\t\tapp.openDialog(\"switch\");\n\t\t},\n\t},\n];\n\nexport function setup(app) {\n\tlet byKey = {};\n\tkeybindings.forEach((binding) => {\n\t\tif (!byKey[binding.key]) {\n\t\t\tbyKey[binding.key] = [];\n\t\t}\n\t\tbyKey[binding.key].push(binding);\n\t});\n\n\twindow.addEventListener(\"keydown\", (event) => {\n\t\tlet candidates = byKey[event.key];\n\t\tif (!candidates) {\n\t\t\treturn;\n\t\t}\n\t\tcandidates = candidates.filter((binding) => {\n\t\t\treturn Boolean(binding.altKey) === event.altKey && Boolean(binding.ctrlKey) === event.ctrlKey;\n\t\t});\n\t\tif (candidates.length !== 1) {\n\t\t\treturn;\n\t\t}\n\t\tevent.preventDefault();\n\t\tcandidates[0].execute(app);\n\t});\n}\n","import * as irc from \"./lib/irc.js\";\nimport { SERVER_BUFFER, BufferType, Unread } from \"./state.js\";\n\nfunction getActiveClient(app) {\n\tlet buf = app.state.buffers.get(app.state.activeBuffer);\n\tif (!buf) {\n\t\tthrow new Error(\"Not connected to server\");\n\t}\n\treturn app.clients.get(buf.server);\n}\n\nfunction getActiveTarget(app) {\n\tlet activeBuffer = app.state.buffers.get(app.state.activeBuffer);\n\tif (!activeBuffer) {\n\t\tthrow new Error(\"Not in a buffer\");\n\t}\n\treturn activeBuffer.name;\n}\n\nfunction getActiveChannel(app) {\n\tlet activeBuffer = app.state.buffers.get(app.state.activeBuffer);\n\tif (!activeBuffer || activeBuffer.type !== BufferType.CHANNEL) {\n\t\tthrow new Error(\"Not in a channel\");\n\t}\n\treturn activeBuffer.name;\n}\n\nasync function setUserHostMode(app, args, mode) {\n\tlet nick = args[0];\n\tif (!nick) {\n\t\tthrow new Error(\"Missing nick\");\n\t}\n\tlet activeChannel = getActiveChannel(app);\n\tlet client = getActiveClient(app);\n\tlet whois = await client.whois(nick);\n\tconst info = whois[irc.RPL_WHOISUSER].params;\n\tconst user = info[2];\n\tconst host = info[3];\n\tclient.send({\n\t\tcommand: \"MODE\",\n\t\tparams: [activeChannel, mode, `*!${user}@${host}`],\n\t});\n}\n\nfunction markServerBufferUnread(app) {\n\tlet activeBuffer = app.state.buffers.get(app.state.activeBuffer);\n\tif (!activeBuffer || activeBuffer.type === BufferType.SERVER) {\n\t\treturn;\n\t}\n\tapp.setBufferState({ server: activeBuffer.server }, (buf) => {\n\t\treturn { unread: Unread.union(buf.unread, Unread.MESSAGE) };\n\t});\n}\n\nconst join = {\n\tname: \"join\",\n\tusage: \" [password]\",\n\tdescription: \"Join a channel\",\n\texecute: (app, args) => {\n\t\tlet channel = args[0];\n\t\tif (!channel) {\n\t\t\tthrow new Error(\"Missing channel name\");\n\t\t}\n\t\tif (args.length > 1) {\n\t\t\tapp.open(channel, null, args[1]);\n\t\t} else {\n\t\t\tapp.open(channel);\n\t\t}\n\t},\n};\n\nconst kick = {\n\tname: \"kick\",\n\tusage: \" [comment]\",\n\tdescription: \"Remove a user from the channel\",\n\texecute: (app, args) => {\n\t\tlet nick = args[0];\n\t\tlet activeChannel = getActiveChannel(app);\n\t\tlet params = [activeChannel, nick];\n\t\tif (args.length > 1) {\n\t\t\tparams.push(args.slice(1).join(\" \"));\n\t\t}\n\t\tgetActiveClient(app).send({ command: \"KICK\", params });\n\t},\n};\n\nconst ban = {\n\tname: \"ban\",\n\tusage: \"[nick]\",\n\tdescription: \"Ban a user from the channel, or display the current ban list\",\n\texecute: (app, args) => {\n\t\tif (args.length === 0) {\n\t\t\tlet activeChannel = getActiveChannel(app);\n\t\t\tgetActiveClient(app).send({\n\t\t\t\tcommand: \"MODE\",\n\t\t\t\tparams: [activeChannel, \"+b\"],\n\t\t\t});\n\t\t} else {\n\t\t\treturn setUserHostMode(app, args, \"+b\");\n\t\t}\n\t},\n};\n\nfunction givemode(app, args, mode) {\n\t// TODO: Handle several users at once\n\tlet nick = args[0];\n\tif (!nick) {\n\t\tthrow new Error(\"Missing nick\");\n\t}\n\tlet activeChannel = getActiveChannel(app);\n\tgetActiveClient(app).send({\n\t\tcommand: \"MODE\",\n\t\tparams: [activeChannel, mode, nick],\n\t});\n}\n\nconst commands = [\n\t{\n\t\tname: \"away\",\n\t\tusage: \"[message]\",\n\t\tdescription: \"Set away message\",\n\t\texecute: (app, args) => {\n\t\t\tconst params = [];\n\t\t\tif (args.length) {\n\t\t\t\tparams.push(args.join(\" \"));\n\t\t\t}\n\t\t\tgetActiveClient(app).send({command: \"AWAY\", params});\n\t\t},\n\t},\n\tban,\n\t{\n\t\tname: \"buffer\",\n\t\tusage: \"\",\n\t\tdescription: \"Switch to a buffer\",\n\t\texecute: (app, args) => {\n\t\t\tlet name = args[0];\n\t\t\tfor (let buf of app.state.buffers.values()) {\n\t\t\t\tif (buf.name === name) {\n\t\t\t\t\tapp.switchBuffer(buf);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new Error(\"Unknown buffer\");\n\t\t},\n\t},\n\t{\n\t\tname: \"close\",\n\t\tdescription: \"Close the current buffer\",\n\t\texecute: (app, args) => {\n\t\t\tlet activeBuffer = app.state.buffers.get(app.state.activeBuffer);\n\t\t\tif (!activeBuffer || activeBuffer.type === BufferType.SERVER) {\n\t\t\t\tthrow new Error(\"Not in a user or channel buffer\");\n\t\t\t}\n\t\t\tapp.close(activeBuffer.id);\n\t\t},\n\t},\n\t{\n\t\tname: \"deop\",\n\t\tusage: \"\",\n\t\tdescription: \"Remove operator status for a user on this channel\",\n\t\texecute: (app, args) => givemode(app, args, \"-o\"),\n\t},\n\t{\n\t\tname: \"devoice\",\n\t\tusage: \"\",\n\t\tdescription: \"Remove voiced status for a user on this channel\",\n\t\texecute: (app, args) => givemode(app, args, \"-v\"),\n\t},\n\t{\n\t\tname: \"disconnect\",\n\t\tdescription: \"Disconnect from the server\",\n\t\texecute: (app, args) => {\n\t\t\tapp.disconnect();\n\t\t},\n\t},\n\t{\n\t\tname: \"help\",\n\t\tdescription: \"Show help menu\",\n\t\texecute: (app, args) => {\n\t\t\tapp.openHelp();\n\t\t},\n\t},\n\t{\n\t\tname: \"invite\",\n\t\tusage: \"\",\n\t\tdescription: \"Invite a user to the channel\",\n\t\texecute: (app, args) => {\n\t\t\tlet nick = args[0];\n\t\t\tif (!nick) {\n\t\t\t\tthrow new Error(\"Missing nick\");\n\t\t\t}\n\t\t\tlet activeChannel = getActiveChannel(app);\n\t\t\tgetActiveClient(app).send({ command: \"INVITE\", params: [\n\t\t\t\tnick, activeChannel,\n\t\t\t]});\n\t\t},\n\t},\n\t{ ...join, name: \"j\" },\n\tjoin,\n\tkick,\n\t{\n\t\tname: \"kickban\",\n\t\tusage: \"\",\n\t\tdescription: \"Ban a user and removes them from the channel\",\n\t\texecute: (app, args) => {\n\t\t\tkick.execute(app, args);\n\t\t\tban.execute(app, args);\n\t\t},\n\t},\n\t{\n\t\tname: \"lusers\",\n\t\tusage: \"[ []]\",\n\t\tdescription: \"Request user statistics about the network\",\n\t\texecute: (app, args) => {\n\t\t\tgetActiveClient(app).send({ command: \"LUSERS\", params: args });\n\t\t\tmarkServerBufferUnread(app);\n\t\t},\n\t},\n\t{\n\t\tname: \"me\",\n\t\tusage: \"\",\n\t\tdescription: \"Send an action message to the current buffer\",\n\t\texecute: (app, args) => {\n\t\t\tlet action = args.join(\" \");\n\t\t\tlet target = getActiveTarget(app);\n\t\t\tlet text = `\\x01ACTION ${action}\\x01`;\n\t\t\tapp.privmsg(target, text);\n\t\t},\n\t},\n\t{\n\t\tname: \"mode\",\n\t\tusage: \"[target] [modes] [mode args...]\",\n\t\tdescription: \"Query or change a channel or user mode\",\n\t\texecute: (app, args) => {\n\t\t\tlet target = args[0];\n\t\t\tif (!target || target.startsWith(\"+\") || target.startsWith(\"-\")) {\n\t\t\t\tlet activeChannel = getActiveChannel(app);\n\t\t\t\targs = [activeChannel, ...args];\n\t\t\t}\n\t\t\tgetActiveClient(app).send({ command: \"MODE\", params: args });\n\t\t},\n\t},\n\t{\n\t\tname: \"motd\",\n\t\tusage: \"[server]\",\n\t\tdescription: \"Get the Message Of The Day\",\n\t\texecute: (app, args) => {\n\t\t\tgetActiveClient(app).send({ command: \"MOTD\", params: args });\n\t\t\tmarkServerBufferUnread(app);\n\t\t},\n\t},\n\t{\n\t\tname: \"msg\",\n\t\tusage: \" \",\n\t\tdescription: \"Send a message to a nickname or a channel\",\n\t\texecute: (app, args) => {\n\t\t\tlet target = args[0];\n\t\t\tlet text = args.slice(1).join(\" \");\n\t\t\tgetActiveClient(app).send({ command: \"PRIVMSG\", params: [target, text] });\n\t\t},\n\t},\n\t{\n\t\tname: \"nick\",\n\t\tusage: \"\",\n\t\tdescription: \"Change current nickname\",\n\t\texecute: (app, args) => {\n\t\t\tlet newNick = args[0];\n\t\t\tgetActiveClient(app).send({ command: \"NICK\", params: [newNick] });\n\t\t},\n\t},\n\t{\n\t\tname: \"notice\",\n\t\tusage: \" \",\n\t\tdescription: \"Send a notice to a nickname or a channel\",\n\t\texecute: (app, args) => {\n\t\t\tlet target = args[0];\n\t\t\tlet text = args.slice(1).join(\" \");\n\t\t\tgetActiveClient(app).send({ command: \"NOTICE\", params: [target, text] });\n\t\t},\n\t},\n\t{\n\t\tname: \"op\",\n\t\tusage: \"\",\n\t\tdescription: \"Give a user operator status on this channel\",\n\t\texecute: (app, args) => givemode(app, args, \"+o\"),\n\t},\n\t{\n\t\tname: \"part\",\n\t\tusage: \"[reason]\",\n\t\tdescription: \"Leave a channel\",\n\t\texecute: (app, args) => {\n\t\t\tlet reason = args.join(\" \");\n\t\t\tlet activeChannel = getActiveChannel(app);\n\t\t\tlet params = [activeChannel];\n\t\t\tif (reason) {\n\t\t\t\tparams.push(reason);\n\t\t\t}\n\t\t\tgetActiveClient(app).send({ command: \"PART\", params });\n\t\t},\n\t},\n\t{\n\t\tname: \"query\",\n\t\tusage: \" [message]\",\n\t\tdescription: \"Open a buffer to send messages to a nickname\",\n\t\texecute: (app, args) => {\n\t\t\tlet nick = args[0];\n\t\t\tif (!nick) {\n\t\t\t\tthrow new Error(\"Missing nickname\");\n\t\t\t}\n\t\t\tapp.open(nick);\n\n\t\t\tif (args.length > 1) {\n\t\t\t\tlet text = args.slice(1).join(\" \");\n\t\t\t\tapp.privmsg(nick, text);\n\t\t\t}\n\t\t},\n\t},\n\t{\n\t\tname: \"quiet\",\n\t\tusage: \"[nick]\",\n\t\tdescription: \"Quiet a user in the channel, or display the current quiet list\",\n\t\texecute: (app, args) => {\n\t\t\tif (args.length === 0) {\n\t\t\t\tgetActiveClient(app).send({\n\t\t\t\t\tcommand: \"MODE\",\n\t\t\t\t\tparams: [getActiveChannel(app), \"+q\"],\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn setUserHostMode(app, args, \"+q\");\n\t\t\t}\n\t\t},\n\t},\n\t{\n\t\tname: \"quit\",\n\t\tdescription: \"Quit\",\n\t\texecute: (app, args) => {\n\t\t\tapp.close({ name: SERVER_BUFFER });\n\t\t},\n\t},\n\t{\n\t\tname: \"quote\",\n\t\tusage: \"\",\n\t\tdescription: \"Send a raw IRC command to the server\",\n\t\texecute: (app, args) => {\n\t\t\tlet msg;\n\t\t\ttry {\n\t\t\t\tmsg = irc.parseMessage(args.join(\" \"));\n\t\t\t} catch (err) {\n\t\t\t\tthrow new Error(\"Failed to parse IRC command: \" + err.message);\n\t\t\t}\n\t\t\tgetActiveClient(app).send(msg);\n\t\t},\n\t},\n\t{\n\t\tname: \"reconnect\",\n\t\tdescription: \"Reconnect to the server\",\n\t\texecute: (app, args) => {\n\t\t\tapp.reconnect();\n\t\t},\n\t},\n\t{\n\t\tname: \"setname\",\n\t\tusage: \"\",\n\t\tdescription: \"Change current realname\",\n\t\texecute: (app, args) => {\n\t\t\tlet newRealname = args.join(\" \");\n\t\t\tlet client = getActiveClient(app);\n\t\t\tif (!client.caps.enabled.has(\"setname\")) {\n\t\t\t\tthrow new Error(\"Server doesn't support changing the realname\");\n\t\t\t}\n\t\t\tclient.send({ command: \"SETNAME\", params: [newRealname] });\n\t\t\t// TODO: save to local storage\n\t\t},\n\t},\n\t{\n\t\tname: \"stats\",\n\t\tusage: \" [server]\",\n\t\tdescription: \"Request server statistics\",\n\t\texecute: (app, args) => {\n\t\t\tlet query = args[0];\n\t\t\tif (!query) {\n\t\t\t\tthrow new Error(\"Missing query\");\n\t\t\t}\n\t\t\tlet params = [query];\n\t\t\tif (args.length > 1) {\n\t\t\t\tparams.push(args.slice(1).join(\" \"));\n\t\t\t}\n\t\t\tgetActiveClient(app).send({ command: \"STATS\", params });\n\t\t\tmarkServerBufferUnread(app);\n\t\t},\n\t},\n\t{\n\t\tname: \"topic\",\n\t\tusage: \"\",\n\t\tdescription: \"Change the topic of the current channel\",\n\t\texecute: (app, args) => {\n\t\t\tlet activeChannel = getActiveChannel(app);\n\t\t\tlet params = [activeChannel];\n\t\t\tif (args.length > 0) {\n\t\t\t\tparams.push(args.join(\" \"));\n\t\t\t}\n\t\t\tgetActiveClient(app).send({ command: \"TOPIC\", params });\n\t\t},\n\t},\n\t{\n\t\tname: \"unban\",\n\t\tusage: \"\",\n\t\tdescription: \"Remove a user from the ban list\",\n\t\texecute: (app, args) => {\n\t\t\treturn setUserHostMode(app, args, \"-b\");\n\t\t},\n\t},\n\t{\n\t\tname: \"unquiet\",\n\t\tusage: \"\",\n\t\tdescription: \"Remove a user from the quiet list\",\n\t\texecute: (app, args) => {\n\t\t\treturn setUserHostMode(app, args, \"-q\");\n\t\t},\n\t},\n\t{\n\t\tname: \"voice\",\n\t\tusage: \"\",\n\t\tdescription: \"Give a user voiced status on this channel\",\n\t\texecute: (app, args) => givemode(app, args, \"+v\"),\n\t},\n\t{\n\t\tname: \"who\",\n\t\tusage: \"\",\n\t\tdescription: \"Retrieve a list of users\",\n\t\texecute: (app, args) => {\n\t\t\tgetActiveClient(app).send({ command: \"WHO\", params: args });\n\t\t\tmarkServerBufferUnread(app);\n\t\t},\n\t},\n\t{\n\t\tname: \"whois\",\n\t\tusage: \"\",\n\t\tdescription: \"Retrieve information about a user\",\n\t\texecute: (app, args) => {\n\t\t\tlet nick = args[0];\n\t\t\tif (!nick) {\n\t\t\t\tthrow new Error(\"Missing nick\");\n\t\t\t}\n\t\t\tgetActiveClient(app).send({ command: \"WHOIS\", params: [nick] });\n\t\t\tmarkServerBufferUnread(app);\n\t\t},\n\t},\n\t{\n\t\tname: \"whowas\",\n\t\tusage: \" [count]\",\n\t\tdescription: \"Retrieve information about an offline user\",\n\t\texecute: (app, args) => {\n\t\t\tif (args.length < 1) {\n\t\t\t\tthrow new Error(\"Missing nick\");\n\t\t\t}\n\t\t\tgetActiveClient(app).send({ command: \"WHOWAS\", params: args });\n\t\t\tmarkServerBufferUnread(app);\n\t\t},\n\t},\n\t{\n\t\tname: \"list\",\n\t\tusage: \"[filter]\",\n\t\tdescription: \"Retrieve a list of channels from a network\",\n\t\texecute: (app, args) => {\n\t\t\tgetActiveClient(app).send({ command: \"LIST\", params: args });\n\t\t\tmarkServerBufferUnread(app);\n\t\t},\n\t},\n];\n\nexport default new Map(commands.map((cmd) => [cmd.name, cmd]));\n","import { html, Component } from \"../lib/index.js\";\n\nconst defaultParams = {\n\tname: \"\",\n\thost: \"\",\n\tport: 6697,\n\tnickname: \"\",\n\tusername: \"\",\n\trealname: \"\",\n\tpass: \"\",\n};\n\nexport default class NetworkForm extends Component {\n\tprevParams = null;\n\tstate = {\n\t\t...defaultParams,\n\t\tautojoin: true,\n\t};\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.prevParams = { ...defaultParams };\n\n\t\tthis.handleInput = this.handleInput.bind(this);\n\t\tthis.handleSubmit = this.handleSubmit.bind(this);\n\n\t\tif (props.params) {\n\t\t\tObject.keys(defaultParams).forEach((k) => {\n\t\t\t\tif (props.params[k] !== undefined) {\n\t\t\t\t\tthis.state[k] = props.params[k];\n\t\t\t\t\tthis.prevParams[k] = props.params[k];\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\thandleInput(event) {\n\t\tlet target = event.target;\n\t\tlet value = target.type === \"checkbox\" ? target.checked : target.value;\n\t\tthis.setState({ [target.name]: value });\n\t}\n\n\thandleSubmit(event) {\n\t\tevent.preventDefault();\n\n\t\tlet params = {};\n\t\tObject.keys(defaultParams).forEach((k) => {\n\t\t\tif (!this.props.isNew && this.prevParams[k] === this.state[k]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.props.isNew && defaultParams[k] === this.state[k]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tparams[k] = this.state[k];\n\t\t});\n\n\t\tlet autojoin = this.state.autojoin ? this.props.autojoin : null;\n\t\tthis.props.onSubmit(params, autojoin);\n\t}\n\n\trender() {\n\t\tlet removeNetwork = null;\n\t\tif (!this.props.isNew) {\n\t\t\tremoveNetwork = html`\n\t\t\t\t\n\t\t\t`;\n\t\t}\n\n\t\tlet autojoin = null;\n\t\tif (this.props.autojoin) {\n\t\t\tautojoin = html`\n\t\t\t\t\n\t\t\t\t

    \n\t\t\t`;\n\t\t}\n\n\t\treturn html`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t${autojoin}\n\n\t\t\t\t
    \n\t\t\t\t\tAdvanced options\n\n\t\t\t\t\t
    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t${removeNetwork}\n\t\t\t\t${\" \"}\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n\t}\n}\n","import { html, Component } from \"../lib/index.js\";\n\nexport default class NetworkForm extends Component {\n\tstate = {\n\t\tusername: \"\",\n\t\tpassword: \"\",\n\t};\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleInput = this.handleInput.bind(this);\n\t\tthis.handleSubmit = this.handleSubmit.bind(this);\n\n\t\tif (props.username) {\n\t\t\tthis.state.username = props.username;\n\t\t}\n\t}\n\n\thandleInput(event) {\n\t\tlet target = event.target;\n\t\tlet value = target.type === \"checkbox\" ? target.checked : target.value;\n\t\tthis.setState({ [target.name]: value });\n\t}\n\n\thandleSubmit(event) {\n\t\tevent.preventDefault();\n\n\t\tthis.props.onSubmit(this.state.username, this.state.password);\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n\t}\n}\n","import { html, Component } from \"../lib/index.js\";\n\nexport default class RegisterForm extends Component {\n\tstate = {\n\t\temail: \"\",\n\t\tpassword: \"\",\n\t};\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleInput = this.handleInput.bind(this);\n\t\tthis.handleSubmit = this.handleSubmit.bind(this);\n\t}\n\n\thandleInput(event) {\n\t\tlet target = event.target;\n\t\tlet value = target.type === \"checkbox\" ? target.checked : target.value;\n\t\tthis.setState({ [target.name]: value });\n\t}\n\n\thandleSubmit(event) {\n\t\tevent.preventDefault();\n\n\t\tthis.props.onSubmit(this.state.email, this.state.password);\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n\t}\n}\n","import { html, Component } from \"../lib/index.js\";\nimport linkify from \"../lib/linkify.js\";\n\nexport default class RegisterForm extends Component {\n\tstate = {\n\t\tcode: \"\",\n\t};\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleInput = this.handleInput.bind(this);\n\t\tthis.handleSubmit = this.handleSubmit.bind(this);\n\t}\n\n\thandleInput(event) {\n\t\tlet target = event.target;\n\t\tlet value = target.type === \"checkbox\" ? target.checked : target.value;\n\t\tthis.setState({ [target.name]: value });\n\t}\n\n\thandleSubmit(event) {\n\t\tevent.preventDefault();\n\n\t\tthis.props.onSubmit(this.state.code);\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t
    \n\t\t\t\t

    Your account ${this.props.account} has been created, but a verification code is required to complete the registration.

    \n\n\t\t\t\t

    ${linkify(this.props.message)}

    \n\n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n\t}\n}\n","import { html, Component } from \"../lib/index.js\";\n\nexport default class SettingsForm extends Component {\n\tstate = {};\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state.secondsInTimestamps = props.settings.secondsInTimestamps;\n\t\tthis.state.bufferEvents = props.settings.bufferEvents;\n\n\t\tthis.handleInput = this.handleInput.bind(this);\n\t\tthis.handleSubmit = this.handleSubmit.bind(this);\n\t}\n\n\thandleInput(event) {\n\t\tlet target = event.target;\n\t\tlet value = target.type === \"checkbox\" ? target.checked : target.value;\n\t\tthis.setState({ [target.name]: value }, () => {\n\t\t\tthis.props.onChange(this.state);\n\t\t});\n\t}\n\n\thandleSubmit(event) {\n\t\tevent.preventDefault();\n\t\tthis.props.onClose();\n\t}\n\n\tregisterProtocol() {\n\t\tlet url = window.location.origin + window.location.pathname + \"?open=%s\";\n\t\ttry {\n\t\t\tnavigator.registerProtocolHandler(\"irc\", url);\n\t\t\tnavigator.registerProtocolHandler(\"ircs\", url);\n\t\t} catch (err) {\n\t\t\tconsole.error(\"Failed to register protocol handler: \", err);\n\t\t}\n\t}\n\n\trender() {\n\t\tlet protocolHandler = null;\n\t\tif (this.props.showProtocolHandler) {\n\t\t\tprotocolHandler = html`\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\tSet gamja as your default IRC client for this browser.\n\t\t\t\t\t\tIRC links will be automatically opened here.\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t

    \n\t\t\t`;\n\t\t}\n\n\t\treturn html`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t${protocolHandler}\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n\t}\n}\n","import { html, Component } from \"../lib/index.js\";\nimport { BufferType, getBufferURL, getServerName } from \"../state.js\";\nimport * as irc from \"../lib/irc.js\";\n\nclass SwitcherItem extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleClick = this.handleClick.bind(this);\n\t}\n\n\thandleClick(event) {\n\t\tevent.preventDefault();\n\t\tthis.props.onClick();\n\t}\n\n\trender() {\n\t\tlet class_ = this.props.selected ? \"selected\" : \"\";\n\n\t\treturn html`\n\t\t\t
  • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t${getServerName(this.props.server, this.props.bouncerNetwork)}\n\t\t\t\t\t\n\t\t\t\t\t${this.props.buffer.name}\n\t\t\t\t\n\t\t\t
  • \n\t\t`;\n\t}\n}\n\nfunction matchString(s, query) {\n\treturn s.toLowerCase().includes(query) ? 1 : 0;\n}\n\nfunction matchBuffer(buf, server, query) {\n\tlet score = 2 * matchString(buf.name, query);\n\tswitch (buf.type) {\n\tcase BufferType.CHANNEL:\n\t\tscore += matchString(buf.topic || \"\", query);\n\t\tbreak;\n\tcase BufferType.NICK:\n\t\tlet user = server.users.get(buf.name);\n\t\tif (user && user.realname && irc.isMeaningfulRealname(user.realname, buf.name)) {\n\t\t\tscore += matchString(user.realname, query);\n\t\t}\n\t\tbreak;\n\t}\n\treturn score;\n}\n\nexport default class SwitcherForm extends Component {\n\tstate = {\n\t\tquery: \"\",\n\t\tselected: 0,\n\t};\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleInput = this.handleInput.bind(this);\n\t\tthis.handleSubmit = this.handleSubmit.bind(this);\n\t\tthis.handleKeyUp = this.handleKeyUp.bind(this);\n\t}\n\n\tgetSuggestions() {\n\t\tlet query = this.state.query.toLowerCase();\n\n\t\tlet l = [];\n\t\tlet scores = new Map();\n\t\tfor (let buf of this.props.buffers.values()) {\n\t\t\tif (buf.type === BufferType.SERVER) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet score = 0;\n\t\t\tif (query !== \"\") {\n\t\t\t\tlet server = this.props.servers.get(buf.server);\n\t\t\t\tscore = matchBuffer(buf, server, query);\n\t\t\t\tif (!score) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tscores.set(buf.id, score);\n\t\t\tl.push(buf);\n\t\t}\n\n\t\tl.sort((a, b) => {\n\t\t\treturn scores.get(b.id) - scores.get(a.id);\n\t\t});\n\n\t\treturn l.slice(0, 20);\n\t}\n\n\thandleInput(event) {\n\t\tlet target = event.target;\n\t\tthis.setState({ [target.name]: target.value });\n\t}\n\n\thandleSubmit(event) {\n\t\tevent.preventDefault();\n\t\tthis.props.onSubmit(this.getSuggestions()[this.state.selected]);\n\t}\n\n\thandleKeyUp(event) {\n\t\tswitch (event.key) {\n\t\tcase \"ArrowUp\":\n\t\t\tevent.stopPropagation();\n\t\t\tthis.move(-1);\n\t\t\tbreak;\n\t\tcase \"ArrowDown\":\n\t\t\tevent.stopPropagation();\n\t\t\tthis.move(1);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tmove(delta) {\n\t\tlet numSuggestions = this.getSuggestions().length;\n\t\tthis.setState((state) => {\n\t\t\treturn {\n\t\t\t\tselected: (state.selected + delta + numSuggestions) % numSuggestions,\n\t\t\t};\n\t\t});\n\t}\n\n\trender() {\n\t\tlet items = this.getSuggestions().map((buf, i) => {\n\t\t\tlet server = this.props.servers.get(buf.server);\n\n\t\t\tlet bouncerNetwork = null;\n\t\t\tif (server.bouncerNetID) {\n\t\t\t\tbouncerNetwork = this.props.bouncerNetworks.get(server.bouncerNetID);\n\t\t\t}\n\n\t\t\treturn html`\n\t\t\t\t<${SwitcherItem}\n\t\t\t\t\tbuffer=${buf}\n\t\t\t\t\tserver=${server}\n\t\t\t\t\tbouncerNetwork=${bouncerNetwork}\n\t\t\t\t\tselected=${this.state.selected === i}\n\t\t\t\t\tonClick=${() => this.props.onSubmit(buf)}\n\t\t\t\t/>\n\t\t\t`;\n\t\t});\n\n\t\treturn html`\n\t\t\t\n\t\t\t\t\n\t\t\t\t
      \n\t\t\t\t\t${items}\n\t\t\t\t
    \n\t\t\t\n\t\t`;\n\t}\n}\n","import { html, Component, createRef } from \"../lib/index.js\";\n\nfunction encodeContentDisposition(filename) {\n\t// Encode filename according to RFC 5987 if necessary. Note,\n\t// encodeURIComponent will percent-encode a superset of attr-char.\n\tlet encodedFilename = encodeURIComponent(filename);\n\tif (encodedFilename === filename) {\n\t\treturn \"attachment; filename=\\\"\" + filename + \"\\\"\";\n\t} else {\n\t\treturn \"attachment; filename*=UTF-8''\" + encodedFilename;\n\t}\n}\n\nexport default class Composer extends Component {\n\tstate = {\n\t\ttext: \"\",\n\t};\n\ttextInput = createRef();\n\tlastAutocomplete = null;\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleInput = this.handleInput.bind(this);\n\t\tthis.handleSubmit = this.handleSubmit.bind(this);\n\t\tthis.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n\t\tthis.handleInputPaste = this.handleInputPaste.bind(this);\n\t\tthis.handleDragOver = this.handleDragOver.bind(this);\n\t\tthis.handleDrop = this.handleDrop.bind(this);\n\t\tthis.handleWindowKeyDown = this.handleWindowKeyDown.bind(this);\n\t\tthis.handleWindowPaste = this.handleWindowPaste.bind(this);\n\t}\n\n\thandleInput(event) {\n\t\tthis.setState({ [event.target.name]: event.target.value });\n\n\t\tif (this.props.readOnly && event.target.name === \"text\" && !event.target.value) {\n\t\t\tevent.target.blur();\n\t\t}\n\t}\n\n\thandleSubmit(event) {\n\t\tevent.preventDefault();\n\t\tthis.props.onSubmit(this.state.text);\n\t\tthis.setState({ text: \"\" });\n\t}\n\n\thandleInputKeyDown(event) {\n\t\tlet input = event.target;\n\n\t\tif (!this.props.autocomplete || event.key !== \"Tab\") {\n\t\t\treturn;\n\t\t}\n\n\t\tif (input.selectionStart !== input.selectionEnd) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tlet carretPos = input.selectionStart;\n\t\tlet text = this.state.text;\n\t\tlet autocomplete;\n\t\tif (this.lastAutocomplete && this.lastAutocomplete.text === text && this.lastAutocomplete.carretPos === carretPos) {\n\t\t\tautocomplete = this.lastAutocomplete;\n\t\t} else {\n\t\t\tthis.lastAutocomplete = null;\n\n\t\t\tlet wordStart;\n\t\t\tfor (wordStart = carretPos - 1; wordStart >= 0; wordStart--) {\n\t\t\t\tif (text[wordStart] === \" \") {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\twordStart++;\n\n\t\t\tlet wordEnd;\n\t\t\tfor (wordEnd = carretPos; wordEnd < text.length; wordEnd++) {\n\t\t\t\tif (text[wordEnd] === \" \") {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet word = text.slice(wordStart, wordEnd);\n\t\t\tif (!word) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet replacements = this.props.autocomplete(word);\n\t\t\tif (replacements.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tautocomplete = {\n\t\t\t\ttext,\n\t\t\t\tcarretPos: input.selectionStart,\n\t\t\t\tprefix: text.slice(0, wordStart),\n\t\t\t\tsuffix: text.slice(wordEnd),\n\t\t\t\treplacements,\n\t\t\t\treplIndex: -1,\n\t\t\t};\n\t\t}\n\n\t\tlet n = autocomplete.replacements.length;\n\t\tif (event.shiftKey) {\n\t\t\tautocomplete.replIndex--;\n\t\t} else {\n\t\t\tautocomplete.replIndex++;\n\t\t}\n\t\tautocomplete.replIndex = (autocomplete.replIndex + n) % n;\n\n\t\tlet repl = autocomplete.replacements[autocomplete.replIndex];\n\t\tif (!autocomplete.prefix && !autocomplete.suffix) {\n\t\t\tif (repl.startsWith(\"/\")) {\n\t\t\t\trepl += \" \";\n\t\t\t} else {\n\t\t\t\trepl += \": \";\n\t\t\t}\n\t\t}\n\n\t\tautocomplete.text = autocomplete.prefix + repl + autocomplete.suffix;\n\t\tautocomplete.carretPos = autocomplete.prefix.length + repl.length;\n\n\t\tinput.value = autocomplete.text;\n\t\tinput.selectionStart = autocomplete.carretPos;\n\t\tinput.selectionEnd = input.selectionStart;\n\n\t\tthis.lastAutocomplete = autocomplete;\n\n\t\tthis.setState({ text: autocomplete.text });\n\t}\n\n\tcanUploadFiles() {\n\t\tlet client = this.props.client;\n\t\treturn client && client.isupport.filehost() && !this.props.readOnly;\n\t}\n\n\tasync uploadFile(file) {\n\t\tlet client = this.props.client;\n\t\tlet endpoint = client.isupport.filehost();\n\n\t\tlet auth;\n\t\tif (client.params.saslPlain) {\n\t\t\tlet params = client.params.saslPlain;\n\t\t\tauth = \"Basic \" + btoa(params.username + \":\" + params.password);\n\t\t} else if (client.params.saslOauthBearer) {\n\t\t\tauth = \"Bearer \" + client.params.saslOauthBearer.token;\n\t\t}\n\n\t\tlet headers = {\n\t\t\t\"Content-Length\": file.size,\n\t\t\t\"Content-Disposition\": encodeContentDisposition(file.name),\n\t\t};\n\t\tif (file.type) {\n\t\t\theaders[\"Content-Type\"] = file.type;\n\t\t}\n\t\tif (auth) {\n\t\t\theaders[\"Authorization\"] = auth;\n\t\t}\n\n\t\t// TODO: show a loading UI while uploading\n\t\t// TODO: show a cancel button\n\t\tlet resp = await fetch(endpoint, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: file,\n\t\t\theaders,\n\t\t\tcredentials: \"include\",\n\t\t});\n\n\t\tif (!resp.ok) {\n\t\t\tthrow new Error(`HTTP request failed (${resp.status})`);\n\t\t}\n\n\t\tlet loc = resp.headers.get(\"Location\");\n\t\tif (!loc) {\n\t\t\tthrow new Error(\"filehost response missing Location header field\");\n\t\t}\n\n\t\treturn new URL(loc, endpoint);\n\t}\n\n\tasync uploadFileList(fileList) {\n\t\tlet promises = [];\n\t\tfor (let file of fileList) {\n\t\t\tpromises.push(this.uploadFile(file));\n\t\t}\n\n\t\tlet urls = await Promise.all(promises);\n\n\t\tthis.setState((state) => {\n\t\t\tif (state.text) {\n\t\t\t\treturn { text: state.text + \" \" + urls.join(\" \") };\n\t\t\t} else {\n\t\t\t\treturn { text: urls.join(\" \") };\n\t\t\t}\n\t\t});\n\t}\n\n\tasync handleInputPaste(event) {\n\t\tif (event.clipboardData.files.length === 0 || !this.canUploadFiles()) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopImmediatePropagation();\n\n\t\tawait this.uploadFileList(event.clipboardData.files);\n\t}\n\n\thandleDragOver(event) {\n\t\tif (event.dataTransfer.items.length === 0 || !this.canUploadFiles()) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let item of event.dataTransfer.items) {\n\t\t\tif (item.kind !== \"file\") {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tevent.preventDefault();\n\t}\n\n\tasync handleDrop(event) {\n\t\tif (event.dataTransfer.files.length === 0 || !this.canUploadFiles()) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopImmediatePropagation();\n\n\t\tawait this.uploadFileList(event.dataTransfer.files);\n\t}\n\n\thandleWindowKeyDown(event) {\n\t\t// If an or \n\t\t\t\t\t
    \n\t\t\t\t\t${this.props.children}\n\t\t\t\t\n\t\t\t\n\t\t`;\n\t}\n}\n"],"names":["$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","l","u","t","i","o","f","$b2a774aae58c7b4e$var$n","$b2a774aae58c7b4e$export$41c562ebe57d11e2","$b2a774aae58c7b4e$var$u","$b2a774aae58c7b4e$var$i","$b2a774aae58c7b4e$var$r","$b2a774aae58c7b4e$var$o","$b2a774aae58c7b4e$var$e","$b2a774aae58c7b4e$var$f","$b2a774aae58c7b4e$var$c","$b2a774aae58c7b4e$var$s","$b2a774aae58c7b4e$var$a","$b2a774aae58c7b4e$var$h","$b2a774aae58c7b4e$var$p","$b2a774aae58c7b4e$var$v","$b2a774aae58c7b4e$var$y","$b2a774aae58c7b4e$var$d","Array","isArray","$b2a774aae58c7b4e$var$w","$b2a774aae58c7b4e$var$_","parentNode","removeChild","$b2a774aae58c7b4e$export$c8a8987d4410bf2d","r","arguments","length","children","call","defaultProps","$b2a774aae58c7b4e$var$m","type","props","key","ref","__k","__","__b","__e","__c","constructor","__v","__i","__u","vnode","$b2a774aae58c7b4e$export$7d1e3a5e95ceca43","current","$b2a774aae58c7b4e$export$ffb0004e005737fa","$b2a774aae58c7b4e$export$16fa2f45be04daa8","context","$b2a774aae58c7b4e$var$C","$b2a774aae58c7b4e$var$M","__d","push","$b2a774aae58c7b4e$var$P","__r","debounceRendering","c","sort","shift","__P","$b2a774aae58c7b4e$var$j","__n","namespaceURI","$b2a774aae58c7b4e$var$z","$b2a774aae58c7b4e$var$S","base","$b2a774aae58c7b4e$var$$","a","h","y","d","w","_","g","m","$b2a774aae58c7b4e$var$I","String","$b2a774aae58c7b4e$var$L","$b2a774aae58c7b4e$var$q","unmount","$b2a774aae58c7b4e$var$V","componentWillUnmount","$b2a774aae58c7b4e$var$A","contains","insertBefore","nextSibling","nodeType","$b2a774aae58c7b4e$var$T","setProperty","test","$b2a774aae58c7b4e$var$F","style","cssText","replace","toLowerCase","slice","addEventListener","removeEventListener","removeAttribute","setAttribute","$b2a774aae58c7b4e$var$O","event","p","b","C","S","M","P","I","A","H","L","T","F","prototype","render","contextType","value","__E","$b2a774aae58c7b4e$var$B","sub","state","__h","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","some","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","then","indexOf","$b2a774aae58c7b4e$var$N","k","x","localName","document","createTextNode","createElementNS","is","__m","data","childNodes","attributes","name","__html","innerHTML","diffed","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","Promise","bind","resolve","setTimeout","$ea6c2efa7087cd4a$var$n","assign","apply","$ea6c2efa7087cd4a$var$t","Map","$efca0cb2e3ea1e67$exports","$efca0cb2e3ea1e67$export$7254cc27399e90bd","$efca0cb2e3ea1e67$export$efdc1e5bdb609bb","$efca0cb2e3ea1e67$export$b9ca061da17f2d30","$efca0cb2e3ea1e67$export$c019608e5b5bb4cb","$efca0cb2e3ea1e67$export$41c562ebe57d11e2","$efca0cb2e3ea1e67$export$28075db42e06f164","$efca0cb2e3ea1e67$export$21042e7280c1baba","$efca0cb2e3ea1e67$export$13e2537ceeaf8a3a","$efca0cb2e3ea1e67$export$aad8462122ac592b","$efca0cb2e3ea1e67$export$56d1f1cb1f3c0e96","$efca0cb2e3ea1e67$export$7612db19fb8beb1e","$efca0cb2e3ea1e67$export$821627edc2d26f5f","$efca0cb2e3ea1e67$export$2cd8252107eb640b","$efca0cb2e3ea1e67$export$660b2ee2d4fb4eff","$efca0cb2e3ea1e67$export$71aa6c912b956294","$efca0cb2e3ea1e67$export$e0969da9b8fb378d","$efca0cb2e3ea1e67$var$assign","target","properties","$efca0cb2e3ea1e67$var$numeric","$efca0cb2e3ea1e67$var$ascii","$efca0cb2e3ea1e67$var$alpha","$efca0cb2e3ea1e67$var$asciinumeric","$efca0cb2e3ea1e67$var$alphanumeric","$efca0cb2e3ea1e67$var$domain","$efca0cb2e3ea1e67$var$emoji","$efca0cb2e3ea1e67$var$whitespace","$efca0cb2e3ea1e67$var$addToGroups","flags","groups","group","token","j","jr","jd","accepts","go","input","nextState","regex","has","exactOnly","ta","inputs","next","tt","tr","regexp","ts","len","templateState","$efca0cb2e3ea1e67$var$flagsForToken","result","$efca0cb2e3ea1e67$var$ta","$efca0cb2e3ea1e67$var$tr","$efca0cb2e3ea1e67$var$ts","$efca0cb2e3ea1e67$var$tt","$efca0cb2e3ea1e67$var$WORD","$efca0cb2e3ea1e67$var$UWORD","$efca0cb2e3ea1e67$var$ASCIINUMERICAL","$efca0cb2e3ea1e67$var$ALPHANUMERICAL","$efca0cb2e3ea1e67$var$LOCALHOST","$efca0cb2e3ea1e67$var$UTLD","$efca0cb2e3ea1e67$var$SCHEME","$efca0cb2e3ea1e67$var$SLASH_SCHEME","$efca0cb2e3ea1e67$var$OPENBRACE","$efca0cb2e3ea1e67$var$CLOSEBRACE","$efca0cb2e3ea1e67$var$OPENBRACKET","$efca0cb2e3ea1e67$var$CLOSEBRACKET","$efca0cb2e3ea1e67$var$OPENPAREN","$efca0cb2e3ea1e67$var$CLOSEPAREN","$efca0cb2e3ea1e67$var$OPENANGLEBRACKET","$efca0cb2e3ea1e67$var$CLOSEANGLEBRACKET","$efca0cb2e3ea1e67$var$FULLWIDTHLEFTPAREN","$efca0cb2e3ea1e67$var$FULLWIDTHRIGHTPAREN","$efca0cb2e3ea1e67$var$LEFTCORNERBRACKET","$efca0cb2e3ea1e67$var$RIGHTCORNERBRACKET","$efca0cb2e3ea1e67$var$LEFTWHITECORNERBRACKET","$efca0cb2e3ea1e67$var$RIGHTWHITECORNERBRACKET","$efca0cb2e3ea1e67$var$FULLWIDTHLESSTHAN","$efca0cb2e3ea1e67$var$FULLWIDTHGREATERTHAN","$efca0cb2e3ea1e67$var$AMPERSAND","$efca0cb2e3ea1e67$var$APOSTROPHE","$efca0cb2e3ea1e67$var$ASTERISK","$efca0cb2e3ea1e67$var$BACKSLASH","$efca0cb2e3ea1e67$var$BACKTICK","$efca0cb2e3ea1e67$var$CARET","$efca0cb2e3ea1e67$var$COLON","$efca0cb2e3ea1e67$var$COMMA","$efca0cb2e3ea1e67$var$DOLLAR","$efca0cb2e3ea1e67$var$EQUALS","$efca0cb2e3ea1e67$var$EXCLAMATION","$efca0cb2e3ea1e67$var$HYPHEN","$efca0cb2e3ea1e67$var$PERCENT","$efca0cb2e3ea1e67$var$PIPE","$efca0cb2e3ea1e67$var$PLUS","$efca0cb2e3ea1e67$var$POUND","$efca0cb2e3ea1e67$var$QUERY","$efca0cb2e3ea1e67$var$QUOTE","$efca0cb2e3ea1e67$var$FULLWIDTHMIDDLEDOT","$efca0cb2e3ea1e67$var$SEMI","$efca0cb2e3ea1e67$var$SLASH","$efca0cb2e3ea1e67$var$TILDE","$efca0cb2e3ea1e67$var$UNDERSCORE","$efca0cb2e3ea1e67$var$EMOJI$1","$efca0cb2e3ea1e67$var$tk","freeze","__proto__","WORD","UWORD","ASCIINUMERICAL","ALPHANUMERICAL","LOCALHOST","TLD","UTLD","SCHEME","SLASH_SCHEME","NUM","WS","NL","OPENBRACE","CLOSEBRACE","OPENBRACKET","CLOSEBRACKET","OPENPAREN","CLOSEPAREN","OPENANGLEBRACKET","CLOSEANGLEBRACKET","FULLWIDTHLEFTPAREN","FULLWIDTHRIGHTPAREN","LEFTCORNERBRACKET","RIGHTCORNERBRACKET","LEFTWHITECORNERBRACKET","RIGHTWHITECORNERBRACKET","FULLWIDTHLESSTHAN","FULLWIDTHGREATERTHAN","AMPERSAND","APOSTROPHE","ASTERISK","AT","BACKSLASH","BACKTICK","CARET","COLON","COMMA","DOLLAR","DOT","EQUALS","EXCLAMATION","HYPHEN","PERCENT","PIPE","PLUS","POUND","QUERY","QUOTE","FULLWIDTHMIDDLEDOT","SEMI","SLASH","TILDE","UNDERSCORE","EMOJI","SYM","$efca0cb2e3ea1e67$var$ASCII_LETTER","$efca0cb2e3ea1e67$var$LETTER","$efca0cb2e3ea1e67$var$EMOJI","$efca0cb2e3ea1e67$var$DIGIT","$efca0cb2e3ea1e67$var$SPACE","ASCII_LETTER","LETTER","EMOJI_VARIATION","DIGIT","SPACE","$efca0cb2e3ea1e67$var$tlds","$efca0cb2e3ea1e67$var$utlds","$efca0cb2e3ea1e67$var$run$1","start","str","iterable","charCount","tokens","cursor","charCursor","tokenLength","latestAccepting","sinceAccepts","charsSinceAccepts","index","second","first","charCodeAt","char","$efca0cb2e3ea1e67$var$fastts","defaultt","$efca0cb2e3ea1e67$var$decodeTlds","encoded","words","stack","popDigitCount","digits","join","popCount","parseInt","substring","pop","$efca0cb2e3ea1e67$var$defaults","defaultProtocol","events","format","$efca0cb2e3ea1e67$var$noop","formatHref","nl2br","tagName","rel","validate","truncate","Infinity","className","ignoreTags","opts","defaultRender","ignoredTags","uppercaseIgnoredTags","toUpperCase","val","ir","check","toString","operator","isCallable","option","getObj","obj","renderFn","defaults","Options","tk","Token","isLink","toHref","scheme","toFormattedString","options","formatted","toFormattedHref","startIndex","endIndex","toObject","protocol","href","end","toFormattedObject","formattedHref","content","attrs","eventListeners","class","$efca0cb2e3ea1e67$var$Email","$efca0cb2e3ea1e67$var$Text","$efca0cb2e3ea1e67$var$Nl","$efca0cb2e3ea1e67$var$Url","hasProtocol","MultiToken","Base","createTokenClass","Email","Text","Nl","Url","$efca0cb2e3ea1e67$var$makeState","arg","$efca0cb2e3ea1e67$var$initMultiToken","Multi","startIdx","endIdx","$efca0cb2e3ea1e67$var$warn","console","warn","$efca0cb2e3ea1e67$var$warnAdvice","$efca0cb2e3ea1e67$var$INIT","scanner","parser","tokenQueue","pluginQueue","customSchemes","initialized","plugin","Error","optionalSlashSlash","$efca0cb2e3ea1e67$var$init$2","Start","Num","Asciinumeric","Alphanumeric","Word","UWord","Cr","Ws","Emoji","EmojiJoiner","wordjr","uwordjr","tld","ascii","utld","alpha","slashscheme","sch","$efca0cb2e3ea1e67$var$init$1","qsAccepting","domain","concat","qsNonAccepting","localpartAccepting","Localpart","Domain","Scheme","SlashScheme","LocalpartAt","LocalpartDot","EmailDomain","EmailDomainDot","Email$1","EmailDomainHyphen","numeric","DomainHyphen","DomainDot","DomainDotTld","DomainDotTldColon","DomainDotTldColonPort","Url$1","UrlNonaccept","SchemeColon","SlashSchemeColon","SlashSchemeColonSlash","UriPrefix","bracketPairs","OPEN","CLOSE","UrlOpen","UrlOpenQ","UrlOpenSyms","$efca0cb2e3ea1e67$var$run","multis","textTokens","secondState","multiLength","subtokens","filtered","scan","$3bbe59931da17a80$export$c0bb0b647f701bb5","$71e07b0506970322$var$alphabet","$bd3c59ab25aed5ca$export$1829957589a58e7d","$bd3c59ab25aed5ca$export$6803455f35a0669","$bd3c59ab25aed5ca$var$tagEscapeMap","$bd3c59ab25aed5ca$var$tagUnescapeMap","fromEntries","entries","map","from","to","$bd3c59ab25aed5ca$export$ede4b2e0172bbdb1","tags","split","forEach","parts","seq","endsWith","$bd3c59ab25aed5ca$export$c27de7dba30c634a","undefined","ch","$bd3c59ab25aed5ca$export$3059e96a5fe807c3","host","user","$bd3c59ab25aed5ca$export$f2f615077a189f21","msg","prefix","command","params","startsWith","$bd3c59ab25aed5ca$export$25868d1e8e76735f","keys","last","$bd3c59ab25aed5ca$export$4812b7165edd26af","allowedPrefixes","$bd3c59ab25aed5ca$var$alphaNum","RegExp","_e","$bd3c59ab25aed5ca$var$space","$bd3c59ab25aed5ca$var$isWordBoundary","$bd3c59ab25aed5ca$export$e6127cc7fe7395c3","cmd","$bd3c59ab25aed5ca$export$3ae94a2503e890a1","date","YYYY","getUTCFullYear","padStart","MM","getUTCMonth","DD","getUTCDate","hh","getUTCHours","mm","getUTCMinutes","ss","getUTCSeconds","sss","getUTCMilliseconds","$bd3c59ab25aed5ca$export$60937d95e568734f","ctcp","text","param","$bd3c59ab25aed5ca$export$23c4b2cbd0633e6b","raw","parse","tok","delete","esc","fromCharCode","caseMapping","$bd3c59ab25aed5ca$export$39aea81548242927","byName","error","RFC1459","monitor","whox","chanTypes","statusMsg","network","chatHistory","bouncerNetID","chanModes","stdChanModes","bot","userLen","hostLen","lineLen","filehost","ASCII","out","RFC1459Strict","$bd3c59ab25aed5ca$var$mapIterator","it","done","Symbol","iterator","$bd3c59ab25aed5ca$export$6296a711f00288b1","caseMap","cm","size","kv","values","$bd3c59ab25aed5ca$export$3b27c9ff97cdb350","sep","memberships","mode","$bd3c59ab25aed5ca$export$f4751a564f6d84a3","batch","parent","$bd3c59ab25aed5ca$export$64ec8def5466157c","realname","nick","$bd3c59ab25aed5ca$export$4b3d9a5bae55976","loc","enttype","entity","decodeURIComponent","$bd3c59ab25aed5ca$export$b1ef46223b559f9d","encodeURIComponent","$bd3c59ab25aed5ca$export$e3d1e02a8f18f40e","available","enabled","Set","addAvailable","subCmd","args","cap","add","requestAvailable","filter","$6796cfbd59091fe3$var$permanentCaps","$6796cfbd59091fe3$var$WHOX_FIELDS","$6796cfbd59091fe3$var$FALLBACK_SERVER_PREFIX","$6796cfbd59091fe3$var$lastLabel","$6796cfbd59091fe3$var$lastWhoxToken","$6796cfbd59091fe3$var$IRCError","$6796cfbd59091fe3$var$Backoff","max","reset","dur","$6796cfbd59091fe3$export$2e2bcd8739ae039","EventTarget","Status","DISCONNECTED","CONNECTING","REGISTERING","REGISTERED","status","serverPrefix","supportsCap","caps","isupport","ws","url","username","pass","saslPlain","saslExternal","saslOauthBearer","bouncerNetwork","ping","eventPlayback","debug","batches","autoReconnect","reconnectTimeoutID","reconnectBackoff","lastReconnectDate","Date","pingIntervalID","pendingCmds","WHO","CHATHISTORY","monitored","pendingLists","whoxQueries","handleOnline","reconnect","disconnect","log","setStatus","WebSocket","err","dispatchError","cause","handleOpen","handleMessage","code","window","navigator","onLine","delay","getTime","Math","info","clearTimeout","setPingInterval","close","dispatchEvent","CustomEvent","detail","send","pushPendingList","endPendingList","list","msgBatch","deleteBatch","prevMaxMonitorTargets","updateCaseMapping","maxMonitorTargets","targets","handleCap","challengeStr","newNick","isMyNick","enter","message","authenticate","mechanism","initialResp","supportsSASL","password","promise","roundtrip","$bd3c59ab25aed5ca$export$e648536c94193d05","payload","$71e07b0506970322$export$c564cdbbe6da493","TextEncoder","btoa","bytes","encoder","encode","trailing","u24","u8","u16","msgs","chunk","who","mask","fields","internal","parseWhoReply","finally","catch","hostname","server","account","whois","targetCM","reply","mech","saslCap","includes","checkAccountRegistrationCap","requestCaps","wantCaps","isServer","isChannel","isNick","sec","clearInterval","setInterval","label","reject","removeEventListeners","msgLabel","$bd3c59ab25aed5ca$export$ec840f96613effe2","isError","handleStatus","capture","channel","fetchBatch","batchType","batchName","messages","roundtripChatHistory","fetchHistoryBefore","before","limit","min","more","fetchHistoryBetween","after","time","fetchHistoryTargets","t1","t2","assert","latestMessage","listBouncerNetworks","networks","id","unmonitor","createBouncerNetwork","registerAccount","email","verificationRequired","verifyAccount","supportsReadMarker","fetchReadMarker","setReadMarker","$572a887a57d3418e$var$formatQueryString","$572a887a57d3418e$export$9326d7767c1b7bbc","resp","fetch","ok","statusText","json","issuer","authorization_endpoint","token_endpoint","response_types_supported","$572a887a57d3418e$var$buildPostHeaders","clientId","clientSecret","headers","$572a887a57d3418e$export$97e44d582df4b68f","serverMetadata","redirectUri","method","body","error_description","$572a887a57d3418e$export$e03aeda7cfb66622","introspection_endpoint","active","registerCustomProtocol","$37d24d778c2f247c$var$IRCChannelToken","$37d24d778c2f247c$export$2e2bcd8739ae039","onClick","links","find","match","suffix","$803ef401580605c5$var$isDigit","$803ef401580605c5$var$isHexColor","$803ef401580605c5$export$6a0f863afc2134d8","registerPlugin","alphanumeric","Prefix","Channel","State","Divider","$fca64bf918d5638f$export$a9b603917c4d9863","SERVER","CHANNEL","NICK","$fca64bf918d5638f$export$ac0b13ba2bbce4d5","$fca64bf918d5638f$export$9be0a2424da959ae","NONE","MESSAGE","HIGHLIGHT","compare","priority","union","$fca64bf918d5638f$export$c49c54eaac29b59a","DELIVERED","READ","$fca64bf918d5638f$export$3ee12e3d13dfa897","FOLD","HIDE","$fca64bf918d5638f$export$8fa45c82eddfe270","Consumer","Provider","$fca64bf918d5638f$export$64b0f097aebd4e10","buf","$fca64bf918d5638f$export$8499bd1ed7c872c2","bufURL","msgid","$fca64bf918d5638f$export$53e73e095c2ac1e2","netName","isBouncer","$fca64bf918d5638f$export$1274528beb7cd977","$fca64bf918d5638f$export$4f7e80d679306a83","$fca64bf918d5638f$export$23261bae4c963bb3","receipt","$fca64bf918d5638f$var$updateState","updater","updated","$fca64bf918d5638f$var$isServerBuffer","$fca64bf918d5638f$var$isChannelBuffer","$fca64bf918d5638f$var$trimStartCharacter","$fca64bf918d5638f$var$compareBuffers","strippedA","strippedB","cmp","localeCompare","$fca64bf918d5638f$var$lastServerID","$fca64bf918d5638f$var$lastBufferID","$fca64bf918d5638f$var$lastMessageKey","$fca64bf918d5638f$export$7254cc27399e90bd","create","servers","buffers","activeBuffer","bouncerNetworks","settings","secondsInTimestamps","bufferEvents","updateServer","updateBuffer","getBuffer","getActiveServerID","serverID","nameCM","createServer","users","supportsSASLPlain","supportsAccountRegistration","reliableUserAccounts","createBuffer","client","bufferList","serverInfo","joined","topic","hasInitialWho","members","unread","prevReadReceipt","storeBouncerNetwork","deleteBouncerNetwork","update","updateUser","version","namreply","membersList","member","offline","away","botFlag","_id","awayMessage","Boolean","prefixByMode","membership","$bd3c59ab25aed5ca$export$6115b92b9c2241a7","callback","typeByMode","change","plusMinus","modeType","prefixPrivs","letter","addMessage","bufID","$fca64bf918d5638f$var$insertMessage","other","splice","$740325ae3fd2006f$var$Item","$740325ae3fd2006f$var$PREFIX","load","localStorage","getItem","JSON","put","setItem","stringify","removeItem","$740325ae3fd2006f$export$3b637ec8b5dd5146","$740325ae3fd2006f$export$a9ec709c82e011a4","$740325ae3fd2006f$export$a5a6e0b888b2c992","$740325ae3fd2006f$export$a143d493d941bafc","timeout","saveImmediately","save","visibilityState","prev","receipts","closed","names","clear","$0bbd5f20273017a0$export$2e2bcd8739ae039","$47db4ea8a56fc107$var$Nick","title","colorIndex","$47db4ea8a56fc107$var$djb2","hash","preventDefault","$47db4ea8a56fc107$var$_Timestamp","showSeconds","timestamp","getHours","getMinutes","getSeconds","toLocaleString","$47db4ea8a56fc107$var$Timestamp","$47db4ea8a56fc107$var$canFoldMessage","$47db4ea8a56fc107$var$LogLine","nextProps","invitee","buffer","onNickClick","onChannelClick","onVerifyClick","createNick","lineClass","isHighlight","modeStr","verb","reason","$47db4ea8a56fc107$var$FoldGroup","byCommand","action","nicks","plural","$47db4ea8a56fc107$var$createNickList","lastMsg","firstDate","lastDate","$47db4ea8a56fc107$var$notificationsSupported","Notification","permission","$47db4ea8a56fc107$var$NotificationNagger","nag","handleClick","shouldNag","requestPermission","$47db4ea8a56fc107$var$ProtocolHandlerNagger","location","origin","pathname","registerProtocolHandler","bouncerName","$47db4ea8a56fc107$var$AccountNagger","onAuthClick","onRegisterClick","accDesc","$47db4ea8a56fc107$var$DateSeparator","toLocaleDateString","year","month","day","$47db4ea8a56fc107$var$UnreadSeparator","$47db4ea8a56fc107$export$2e2bcd8739ae039","serverName","createLogLine","createFoldGroup","nickChanges","mergedMsgs","keep","partIndexes","hasUnreadSeparator","prevDate","foldMessages","lastMonitor","d1","skip","getFullYear","d2","getMonth","getDate","$cd5f528e18548e6d$var$BufferItem","classes","button","onClose","$cd5f528e18548e6d$export$2e2bcd8739ae039","items","onBufferClick","onBufferClose","$94cb31469f63b35c$var$UserStatus","HERE","GONE","OFFLINE","$94cb31469f63b35c$var$NickStatus","textMap","$94cb31469f63b35c$export$2e2bcd8739ae039","fullyConnected","description","actions","joinButton","onJoin","reconnectButton","onReconnect","settingsButton","onOpenSettings","onManageNetwork","onAddNetwork","details","item","desc","$15e0fa56cfe1c276$var$MemberItem","$15e0fa56cfe1c276$var$sortMembers","nickA","membA","nickB","membB","$15e0fa56cfe1c276$export$2e2bcd8739ae039","$c6f536f0bcf4fccd$export$2e2bcd8739ae039","rememberMe","autojoin","nickInput","handleInput","handleSubmit","autoconnect","checked","connecting","auth","onSubmit","focus","disabled","serverURL","channels","$b4b4b87f4b38722c$export$2e2bcd8739ae039","$f6fdf5978ceb757f$var$getSiblingBuffer","delta","bufList","findIndex","$f6fdf5978ceb757f$export$63ce3c18bd0f1276","altKey","execute","app","clients","bufferStore","updateDocumentTitle","firstServerBuffer","switchBuffer","ctrlKey","openDialog","$b5b0ab28313e6465$var$getActiveClient","$b5b0ab28313e6465$var$getActiveChannel","$b5b0ab28313e6465$var$setUserHostMode","activeChannel","$b5b0ab28313e6465$var$markServerBufferUnread","setBufferState","$b5b0ab28313e6465$var$join","usage","open","$b5b0ab28313e6465$var$kick","$b5b0ab28313e6465$var$ban","$b5b0ab28313e6465$var$givemode","$b5b0ab28313e6465$export$2e2bcd8739ae039","$b5b0ab28313e6465$var$commands","openHelp","$b5b0ab28313e6465$var$getActiveTarget","privmsg","newRealname","query","$af9ce1e202e3524a$var$KeyBindingsHelp","binding","matchMedia","matches","$af9ce1e202e3524a$var$CommandsHelp","$af9ce1e202e3524a$export$2e2bcd8739ae039","$03b5941ba753e1f6$var$defaultParams","port","nickname","$03b5941ba753e1f6$export$2e2bcd8739ae039","prevParams","isNew","removeNetwork","onRemove","$368ce7ef0e8c1c36$export$2e2bcd8739ae039","$210f1d422ab09f4c$export$2e2bcd8739ae039","emailRequired","$5855ce19a38be3e6$export$2e2bcd8739ae039","$9fbbfef00d6a25bf$export$2e2bcd8739ae039","onChange","registerProtocol","protocolHandler","showProtocolHandler","onDisconnect","$9b625992f92feff7$var$SwitcherItem","class_","selected","$9b625992f92feff7$var$matchString","$9b625992f92feff7$export$2e2bcd8739ae039","handleKeyUp","getSuggestions","scores","score","$9b625992f92feff7$var$matchBuffer","stopPropagation","move","numSuggestions","$142bbba13add3ea5$export$2e2bcd8739ae039","textInput","lastAutocomplete","handleInputKeyDown","handleInputPaste","handleDragOver","handleDrop","handleWindowKeyDown","handleWindowPaste","readOnly","blur","autocomplete","selectionStart","selectionEnd","carretPos","wordStart","wordEnd","word","replacements","replIndex","shiftKey","repl","canUploadFiles","uploadFile","file","filename","encodedFilename","endpoint","credentials","URL","uploadFileList","fileList","promises","urls","all","clipboardData","files","stopImmediatePropagation","dataTransfer","kind","activeElement","metaKey","commandOnly","getData","setRangeText","placeholder","maxLen","$9ead1202cd2221f9$var$store","$9ead1202cd2221f9$export$2e2bcd8739ae039","handleScroll","isAtBottom","abs","scrollHeight","clientHeight","scrollTop","saveScrollPosition","scrollKey","sticky","querySelectorAll","stickTo","stickToKey","el","offsetTop","dataset","restoreScrollPosition","firstChild","querySelector","scrollIntoView","block","onScrollTop","prevProps","$676cb1384c20bf0e$export$2e2bcd8739ae039","handleCloseClick","handleBackdropClick","handleKeyDown","dismiss","onDismiss","autofocus","$5c2a91b7f6173cd8$var$baseConfig","$5c2a91b7f6173cd8$var$configPromise","config","$5c2a91b7f6173cd8$var$getReceipt","stored","$5c2a91b7f6173cd8$var$lastErrorID","$5c2a91b7f6173cd8$export$2e2bcd8739ae039","connectParams","connectForm","loading","dialog","dialogData","openPanels","memberList","$5c2a91b7f6173cd8$var$isProduction","_err","endOfHistory","composer","switchToChannel","autoOpenURL","messageNotifications","baseTitle","lastFocusPingDate","handleConnectSubmit","handleJoinSubmit","handleBufferListClick","handleBufferListClose","toggleBufferList","toggleMemberList","handleComposerSubmit","handleChannelClick","handleNickClick","handleBufferScrollTop","dismissDialog","handleAddNetworkClick","handleNetworkSubmit","handleNetworkRemove","handleDismissError","handleAuthSubmit","handleRegisterSubmit","handleVerifyClick","handleVerifySubmit","handleOpenSettingsClick","handleSettingsChange","handleSettingsDisconnect","handleSwitchSubmit","handleWindowFocus","handleConfig","oauth2","client_id","queryParams","search","pair","random","substr","showError","redirectOauth2Authorize","searchParams","history","replaceState","exchangeOauth2Code","connect","$572a887a57d3418e$export$425e62132119a96f","scope","client_secret","access_token","dismissError","setServerState","syncBufferUnread","sendReadReceipt","storedBuffer","readReceipt","whoUserBuffer","whoChannelBuffer","markBufferAsRead","notif","bufferName","numUnread","prepareChatMessage","$bd3c59ab25aed5ca$export$fdd47ba7a4ecfeff","left","right","$bd3c59ab25aed5ca$var$isURIPrefix","addChatMessage","bufName","handleChatMessage","deliveryReceipt","isDelivered","isRead","msgUnread","$5c2a91b7f6173cd8$var$showNotification","requireInteraction","tag","comand","hasFocus","proto","path","errorID","serverFromBouncerNetwork","bouncerNetworkID","routeMessage","affectedBuffers","chatHistoryBatch","openNewBuffer","destBuffers","fetchBacklog","serverHost","openURL","findBouncerNetIDByHost","bound","lastReceipt","$5c2a91b7f6173cd8$var$getLatestReceipt","now","lastIndexOf","disconnectAll","isFirstServer","executeCommand","closeBufferList","closeMemberList","handleJoinClick","fromList","chanNames","setDialogLoading","setLoading","handleAuthClick","handleRegisterClick","handleManageNetworkClick","tls","newClient","byKey","candidates","dialogBody","privmsgMaxLen","activeServer","activeBouncerNetwork","activeClient","bufferHeader","activeUser","composerReadOnly","repeat","documentElement","vnodeId","isValidElement","rerenderQueue","prevDebounce","defer","depthSort","CAPTURE_REGEX","eventClock","eventProxy","eventProxyCapture","EMPTY_OBJ","EMPTY_ARR","IS_NON_DIMENSIONAL","removeNode","node","createElement","normalizedProps","createVNode","original","createRef","Fragment","BaseComponent","this","getDomSibling","childIndex","sibling","updateParentDomPointers","child","enqueueRender","process","renderQueueLength","component","newVNode","oldVNode","oldDom","commitQueue","refQueue","diff","commitRoot","diffChildren","parentDom","renderResult","newParentVNode","oldParentVNode","globalContext","namespace","excessDomChildren","isHydrating","childVNode","newDom","firstChildDom","oldChildren","newChildrenLength","constructNewChildrenArray","applyRef","insert","skewedIndex","matchingIndex","oldChildrenLength","remainingOldChildren","skew","findMatchingIndex","parentVNode","toChildArray","setStyle","dom","oldValue","useCapture","_attached","createEventProxy","eventHandler","_dispatched","tmp","oldProps","oldState","snapshot","clearProcessingException","newProps","isClassComponent","provider","componentContext","renderHook","count","newType","outer","doRender","MODE_HYDRATE","diffElementNodes","root","cb","newHtml","oldHtml","newChildren","inputValue","hasRefUnmount","skipRemove","replaceNode","hydrate","cloneElement","createContext","defaultValue","contextId","contextValue","subs","ctx","_props","old","errorInfo","ctor","handled"],"version":3,"file":"index.7fbdf9ee.js.map"}