{"version":3,"file":"js/708-b1632a27cd0ec9548f2d.js","mappings":"yJAIA,MAAMA,EACFC,YAAYC,EAAaC,EAAWC,GAChCC,KAAKH,YAAcA,EACnBG,KAAKF,UAAYA,EACjBE,KAAKD,aAAeA,EACpBC,KAAKC,kBAAoB,IAAIC,GACjC,CACAC,UACIH,KAAKH,YAAYO,iBAAiBJ,KAAKF,UAAWE,KAAMA,KAAKD,aACjE,CACAM,aACIL,KAAKH,YAAYS,oBAAoBN,KAAKF,UAAWE,KAAMA,KAAKD,aACpE,CACAQ,iBAAiBC,GACbR,KAAKC,kBAAkBQ,IAAID,EAC/B,CACAE,oBAAoBF,GAChBR,KAAKC,kBAAkBU,OAAOH,EAClC,CACAI,YAAYC,GACR,MAAMC,EAoBd,SAAqBD,GACjB,GAAI,gCAAiCA,EACjC,OAAOA,EAEN,CACD,MAAM,yBAAEE,GAA6BF,EACrC,OAAOG,OAAOC,OAAOJ,EAAO,CACxBK,6BAA6B,EAC7BH,2BACIf,KAAKkB,6BAA8B,EACnCH,EAAyBI,KAAKnB,KAClC,GAER,CACJ,CAlC8BoB,CAAYP,GAClC,IAAK,MAAML,KAAWR,KAAKqB,SAAU,CACjC,GAAIP,EAAcI,4BACd,MAGAV,EAAQI,YAAYE,EAE5B,CACJ,CACAQ,cACI,OAAOtB,KAAKC,kBAAkBsB,KAAO,CACzC,CACIF,eACA,OAAOG,MAAMC,KAAKzB,KAAKC,mBAAmByB,MAAK,CAACC,EAAMC,KAClD,MAAMC,EAAYF,EAAKG,MAAOC,EAAaH,EAAME,MACjD,OAAOD,EAAYE,GAAc,EAAIF,EAAYE,EAAa,EAAI,CAAC,GAE3E,EAkBJ,MAAMC,EACFpC,YAAYqC,GACRjC,KAAKiC,YAAcA,EACnBjC,KAAKkC,kBAAoB,IAAIC,IAC7BnC,KAAKoC,SAAU,CACnB,CACAC,QACSrC,KAAKoC,UACNpC,KAAKoC,SAAU,EACfpC,KAAKsC,eAAeC,SAASC,GAAkBA,EAAcrC,YAErE,CACAsC,OACQzC,KAAKoC,UACLpC,KAAKoC,SAAU,EACfpC,KAAKsC,eAAeC,SAASC,GAAkBA,EAAcnC,eAErE,CACIiC,qBACA,OAAOd,MAAMC,KAAKzB,KAAKkC,kBAAkBQ,UAAUC,QAAO,CAACC,EAAWC,IAAQD,EAAUE,OAAOtB,MAAMC,KAAKoB,EAAIH,YAAY,GAC9H,CACAnC,iBAAiBC,GACbR,KAAK+C,6BAA6BvC,GAASD,iBAAiBC,EAChE,CACAE,oBAAoBF,EAASwC,GAAsB,GAC/ChD,KAAK+C,6BAA6BvC,GAASE,oBAAoBF,GAC3DwC,GACAhD,KAAKiD,8BAA8BzC,EAC3C,CACA0C,YAAYC,EAAOC,EAASC,EAAS,CAAC,GAClCrD,KAAKiC,YAAYiB,YAAYC,EAAO,SAASC,IAAWC,EAC5D,CACAJ,8BAA8BzC,GAC1B,MAAMgC,EAAgBxC,KAAK+C,6BAA6BvC,GACnDgC,EAAclB,gBACfkB,EAAcnC,aACdL,KAAKsD,6BAA6B9C,GAE1C,CACA8C,6BAA6B9C,GACzB,MAAM,YAAEX,EAAW,UAAEC,EAAS,aAAEC,GAAiBS,EAC3C+C,EAAmBvD,KAAKwD,oCAAoC3D,GAC5D4D,EAAWzD,KAAKyD,SAAS3D,EAAWC,GAC1CwD,EAAiB5C,OAAO8C,GACK,GAAzBF,EAAiBhC,MACjBvB,KAAKkC,kBAAkBvB,OAAOd,EACtC,CACAkD,6BAA6BvC,GACzB,MAAM,YAAEX,EAAW,UAAEC,EAAS,aAAEC,GAAiBS,EACjD,OAAOR,KAAK0D,mBAAmB7D,EAAaC,EAAWC,EAC3D,CACA2D,mBAAmB7D,EAAaC,EAAWC,GACvC,MAAMwD,EAAmBvD,KAAKwD,oCAAoC3D,GAC5D4D,EAAWzD,KAAKyD,SAAS3D,EAAWC,GAC1C,IAAIyC,EAAgBe,EAAiBI,IAAIF,GAKzC,OAJKjB,IACDA,EAAgBxC,KAAK4D,oBAAoB/D,EAAaC,EAAWC,GACjEwD,EAAiBM,IAAIJ,EAAUjB,IAE5BA,CACX,CACAoB,oBAAoB/D,EAAaC,EAAWC,GACxC,MAAMyC,EAAgB,IAAI7C,EAAcE,EAAaC,EAAWC,GAIhE,OAHIC,KAAKoC,SACLI,EAAcrC,UAEXqC,CACX,CACAgB,oCAAoC3D,GAChC,IAAI0D,EAAmBvD,KAAKkC,kBAAkByB,IAAI9D,GAKlD,OAJK0D,IACDA,EAAmB,IAAIpB,IACvBnC,KAAKkC,kBAAkB2B,IAAIhE,EAAa0D,IAErCA,CACX,CACAE,SAAS3D,EAAWC,GAChB,MAAM+D,EAAQ,CAAChE,GAMf,OALAkB,OAAO+C,KAAKhE,GACP2B,OACAa,SAASyB,IACVF,EAAMG,KAAK,GAAGlE,EAAaiE,GAAO,GAAK,MAAMA,IAAM,IAEhDF,EAAMI,KAAK,IACtB,EAGJ,MAAMC,EAAiC,CACnC1B,KAAI,EAAC,MAAE5B,EAAK,MAAEuD,MACNA,GACAvD,EAAMwD,mBACH,GAEXC,QAAO,EAAC,MAAEzD,EAAK,MAAEuD,MACTA,GACAvD,EAAM0D,kBACH,GAEXC,KAAI,EAAC,MAAE3D,EAAK,MAAEuD,EAAK,QAAEK,MACbL,GACOK,IAAY5D,EAAM6D,QAO/BC,EAAoB,+FAmB1B,SAASC,EAAiBC,GACtB,MAAuB,UAAnBA,EACOC,OAEiB,YAAnBD,EACEE,cADN,CAGT,CAeA,SAASC,EAASZ,GACd,OAAOA,EAAMa,QAAQ,uBAAuB,CAACC,EAAGC,IAASA,EAAKC,eAClE,CACA,SAASC,EAAkBjB,GACvB,OAAOY,EAASZ,EAAMa,QAAQ,MAAO,KAAKA,QAAQ,MAAO,KAC7D,CACA,SAASK,EAAWlB,GAChB,OAAOA,EAAMmB,OAAO,GAAGH,cAAgBhB,EAAMoB,MAAM,EACvD,CACA,SAASC,EAAUrB,GACf,OAAOA,EAAMa,QAAQ,YAAY,CAACC,EAAGC,IAAS,IAAIA,EAAKO,iBAC3D,CAKA,SAASC,EAAYC,GACjB,OAAkB,OAAXA,QAA8BC,IAAXD,CAC9B,CACA,SAASE,EAAYF,EAAQG,GACzB,OAAO/E,OAAOgF,UAAUC,eAAe9E,KAAKyE,EAAQG,EACxD,CAEA,MAAMG,EAAe,CAAC,OAAQ,OAAQ,MAAO,SAuE7C,MAAMC,EAAoB,CACtBC,EAAG,IAAM,QACTC,OAAQ,IAAM,QACdC,KAAM,IAAM,SACZC,QAAS,IAAM,SACfC,MAAQC,GAAiC,UAA1BA,EAAEC,aAAa,QAAsB,QAAU,QAC9DC,OAAQ,IAAM,SACdC,SAAU,IAAM,SAQpB,SAASzD,EAAMC,GACX,MAAM,IAAIyD,MAAMzD,EACpB,CACA,SAAS0D,EAAS1C,GACd,IACI,OAAO2C,KAAKC,MAAM5C,EAItB,CAFA,MAAO6C,GACH,OAAO7C,CACX,CACJ,CAEA,MAAM8C,EACFtH,YAAYuH,EAASC,GACjBpH,KAAKmH,QAAUA,EACfnH,KAAKoH,OAASA,CAClB,CACItF,YACA,OAAO9B,KAAKoH,OAAOtF,KACvB,CACIjC,kBACA,OAAOG,KAAKoH,OAAOvH,WACvB,CACIE,mBACA,OAAOC,KAAKoH,OAAOrH,YACvB,CACIsH,iBACA,OAAOrH,KAAKmH,QAAQE,UACxB,CACAzG,YAAYC,GACR,MAAMyG,EAActH,KAAKuH,mBAAmB1G,GACxCb,KAAKwH,qBAAqB3G,IAAUb,KAAKyH,oBAAoBH,IAC7DtH,KAAK0H,gBAAgBJ,EAE7B,CACIxH,gBACA,OAAOE,KAAKoH,OAAOtH,SACvB,CACI6H,aACA,MAAMA,EAAS3H,KAAK4H,WAAW5H,KAAK6H,YACpC,GAAqB,mBAAVF,EACP,OAAOA,EAEX,MAAM,IAAId,MAAM,WAAW7G,KAAKoH,wCAAwCpH,KAAK6H,cACjF,CACAJ,oBAAoB5G,GAChB,MAAM,QAAE4D,GAAYzE,KAAKoH,QACnB,wBAAEU,GAA4B9H,KAAKmH,QAAQlF,aAC3C,WAAE2F,GAAe5H,KAAKmH,QAC5B,IAAIY,GAAS,EACb,IAAK,MAAOC,EAAM5D,KAAUpD,OAAOiH,QAAQjI,KAAKD,cAC5C,GAAIiI,KAAQF,EAAyB,CACjC,MAAMI,EAASJ,EAAwBE,GACvCD,EAASA,GAAUG,EAAO,CAAEF,OAAM5D,QAAOvD,QAAO4D,UAASmD,cAC7D,CAKJ,OAAOG,CACX,CACAR,mBAAmB1G,GACf,OAAOG,OAAOC,OAAOJ,EAAO,CAAEsH,OAAQnI,KAAKoH,OAAOe,QACtD,CACAT,gBAAgB7G,GACZ,MAAM,OAAE6D,EAAM,cAAE0D,GAAkBvH,EAClC,IACIb,KAAK2H,OAAOxG,KAAKnB,KAAK4H,WAAY/G,GAClCb,KAAKmH,QAAQkB,iBAAiBrI,KAAK6H,WAAY,CAAEhH,QAAO6D,SAAQ0D,gBAAehB,OAAQpH,KAAK6H,YAMhG,CAJA,MAAO1E,GACH,MAAM,WAAEkE,EAAU,WAAEO,EAAU,QAAEnD,EAAO,MAAE3C,GAAU9B,KAC7CqD,EAAS,CAAEgE,aAAYO,aAAYnD,UAAS3C,QAAOjB,SACzDb,KAAKmH,QAAQjE,YAAYC,EAAO,oBAAoBnD,KAAKoH,UAAW/D,EACxE,CACJ,CACAmE,qBAAqB3G,GACjB,MAAMhB,EAAcgB,EAAM6D,OAC1B,QAAI7D,aAAiByH,eAAiBtI,KAAKoH,OAAOmB,0BAA0B1H,QAGxEA,aAAiB2H,YAAcxI,KAAKoH,OAAOqB,uBAAuB5H,MAGlEb,KAAKyE,UAAY5E,IAGZA,aAAuB6I,SAAW1I,KAAKyE,QAAQkE,SAAS9I,GACtDG,KAAK4I,MAAMC,gBAAgBhJ,GAG3BG,KAAK4I,MAAMC,gBAAgB7I,KAAKoH,OAAO3C,WAEtD,CACImD,iBACA,OAAO5H,KAAKmH,QAAQS,UACxB,CACIC,iBACA,OAAO7H,KAAKoH,OAAOS,UACvB,CACIpD,cACA,OAAOzE,KAAK4I,MAAMnE,OACtB,CACImE,YACA,OAAO5I,KAAKmH,QAAQyB,KACxB,EAGJ,MAAME,EACFlJ,YAAY6E,EAASsE,GACjB/I,KAAKgJ,qBAAuB,CAAEC,YAAY,EAAMC,WAAW,EAAMC,SAAS,GAC1EnJ,KAAKyE,QAAUA,EACfzE,KAAKoC,SAAU,EACfpC,KAAK+I,SAAWA,EAChB/I,KAAKoJ,SAAW,IAAIlJ,IACpBF,KAAKqJ,iBAAmB,IAAIC,kBAAkBC,GAAcvJ,KAAKwJ,iBAAiBD,IACtF,CACAlH,QACSrC,KAAKoC,UACNpC,KAAKoC,SAAU,EACfpC,KAAKqJ,iBAAiBI,QAAQzJ,KAAKyE,QAASzE,KAAKgJ,sBACjDhJ,KAAK0J,UAEb,CACAC,MAAMC,GACE5J,KAAKoC,UACLpC,KAAKqJ,iBAAiBhJ,aACtBL,KAAKoC,SAAU,GAEnBwH,IACK5J,KAAKoC,UACNpC,KAAKqJ,iBAAiBI,QAAQzJ,KAAKyE,QAASzE,KAAKgJ,sBACjDhJ,KAAKoC,SAAU,EAEvB,CACAK,OACQzC,KAAKoC,UACLpC,KAAKqJ,iBAAiBQ,cACtB7J,KAAKqJ,iBAAiBhJ,aACtBL,KAAKoC,SAAU,EAEvB,CACAsH,UACI,GAAI1J,KAAKoC,QAAS,CACd,MAAM0H,EAAU,IAAI5J,IAAIF,KAAK+J,uBAC7B,IAAK,MAAMtF,KAAWjD,MAAMC,KAAKzB,KAAKoJ,UAC7BU,EAAQE,IAAIvF,IACbzE,KAAKiK,cAAcxF,GAG3B,IAAK,MAAMA,KAAWjD,MAAMC,KAAKqI,GAC7B9J,KAAKkK,WAAWzF,EAExB,CACJ,CACA+E,iBAAiBD,GACb,GAAIvJ,KAAKoC,QACL,IAAK,MAAM+H,KAAYZ,EACnBvJ,KAAKoK,gBAAgBD,EAGjC,CACAC,gBAAgBD,GACS,cAAjBA,EAASE,KACTrK,KAAKsK,uBAAuBH,EAASzF,OAAQyF,EAASI,eAEhC,aAAjBJ,EAASE,OACdrK,KAAKwK,oBAAoBL,EAASM,cAClCzK,KAAK0K,kBAAkBP,EAASQ,YAExC,CACAL,uBAAuB7F,EAAS8F,GACxBvK,KAAKoJ,SAASY,IAAIvF,GACdzE,KAAK+I,SAAS6B,yBAA2B5K,KAAK6K,aAAapG,GAC3DzE,KAAK+I,SAAS6B,wBAAwBnG,EAAS8F,GAG/CvK,KAAKiK,cAAcxF,GAGlBzE,KAAK6K,aAAapG,IACvBzE,KAAKkK,WAAWzF,EAExB,CACA+F,oBAAoBM,GAChB,IAAK,MAAMC,KAAQvJ,MAAMC,KAAKqJ,GAAQ,CAClC,MAAMrG,EAAUzE,KAAKgL,gBAAgBD,GACjCtG,GACAzE,KAAKiL,YAAYxG,EAASzE,KAAKiK,cAEvC,CACJ,CACAS,kBAAkBI,GACd,IAAK,MAAMC,KAAQvJ,MAAMC,KAAKqJ,GAAQ,CAClC,MAAMrG,EAAUzE,KAAKgL,gBAAgBD,GACjCtG,GAAWzE,KAAKkL,gBAAgBzG,IAChCzE,KAAKiL,YAAYxG,EAASzE,KAAKkK,WAEvC,CACJ,CACAW,aAAapG,GACT,OAAOzE,KAAK+I,SAAS8B,aAAapG,EACtC,CACAsF,oBAAoBoB,EAAOnL,KAAKyE,SAC5B,OAAOzE,KAAK+I,SAASgB,oBAAoBoB,EAC7C,CACAF,YAAYE,EAAMC,GACd,IAAK,MAAM3G,KAAWzE,KAAK+J,oBAAoBoB,GAC3CC,EAAUjK,KAAKnB,KAAMyE,EAE7B,CACAuG,gBAAgBD,GACZ,GAAIA,EAAKM,UAAYC,KAAKC,aACtB,OAAOR,CAEf,CACAG,gBAAgBzG,GACZ,OAAIA,EAAQ+G,aAAexL,KAAKyE,QAAQ+G,aAI7BxL,KAAKyE,QAAQkE,SAASlE,EAErC,CACAyF,WAAWzF,GACFzE,KAAKoJ,SAASY,IAAIvF,IACfzE,KAAKkL,gBAAgBzG,KACrBzE,KAAKoJ,SAAS3I,IAAIgE,GACdzE,KAAK+I,SAAS0C,gBACdzL,KAAK+I,SAAS0C,eAAehH,GAI7C,CACAwF,cAAcxF,GACNzE,KAAKoJ,SAASY,IAAIvF,KAClBzE,KAAKoJ,SAASzI,OAAO8D,GACjBzE,KAAK+I,SAAS2C,kBACd1L,KAAK+I,SAAS2C,iBAAiBjH,GAG3C,EAGJ,MAAMkH,EACF/L,YAAY6E,EAAS8F,EAAexB,GAChC/I,KAAKuK,cAAgBA,EACrBvK,KAAK+I,SAAWA,EAChB/I,KAAK4L,gBAAkB,IAAI9C,EAAgBrE,EAASzE,KACxD,CACIyE,cACA,OAAOzE,KAAK4L,gBAAgBnH,OAChC,CACIoH,eACA,MAAO,IAAI7L,KAAKuK,gBACpB,CACAlI,QACIrC,KAAK4L,gBAAgBvJ,OACzB,CACAsH,MAAMC,GACF5J,KAAK4L,gBAAgBjC,MAAMC,EAC/B,CACAnH,OACIzC,KAAK4L,gBAAgBnJ,MACzB,CACAiH,UACI1J,KAAK4L,gBAAgBlC,SACzB,CACItH,cACA,OAAOpC,KAAK4L,gBAAgBxJ,OAChC,CACAyI,aAAapG,GACT,OAAOA,EAAQqH,aAAa9L,KAAKuK,cACrC,CACAR,oBAAoBoB,GAChB,MAAMY,EAAQ/L,KAAK6K,aAAaM,GAAQ,CAACA,GAAQ,GAC3CrB,EAAUtI,MAAMC,KAAK0J,EAAKa,iBAAiBhM,KAAK6L,WACtD,OAAOE,EAAMjJ,OAAOgH,EACxB,CACA2B,eAAehH,GACPzE,KAAK+I,SAASkD,yBACdjM,KAAK+I,SAASkD,wBAAwBxH,EAASzE,KAAKuK,cAE5D,CACAmB,iBAAiBjH,GACTzE,KAAK+I,SAASmD,2BACdlM,KAAK+I,SAASmD,0BAA0BzH,EAASzE,KAAKuK,cAE9D,CACAK,wBAAwBnG,EAAS8F,GACzBvK,KAAK+I,SAASoD,8BAAgCnM,KAAKuK,eAAiBA,GACpEvK,KAAK+I,SAASoD,6BAA6B1H,EAAS8F,EAE5D,EAGJ,SAAS9J,EAAIoC,EAAKmB,EAAKI,GACnBgI,EAAMvJ,EAAKmB,GAAKvD,IAAI2D,EACxB,CACA,SAASiI,EAAIxJ,EAAKmB,EAAKI,GACnBgI,EAAMvJ,EAAKmB,GAAKrD,OAAOyD,GAW3B,SAAevB,EAAKmB,GAChB,MAAMtB,EAASG,EAAIc,IAAIK,GACT,MAAVtB,GAAiC,GAAfA,EAAOnB,MACzBsB,EAAIlC,OAAOqD,EAEnB,CAfIsI,CAAMzJ,EAAKmB,EACf,CACA,SAASoI,EAAMvJ,EAAKmB,GAChB,IAAItB,EAASG,EAAIc,IAAIK,GAKrB,OAJKtB,IACDA,EAAS,IAAIxC,IACb2C,EAAIgB,IAAIG,EAAKtB,IAEVA,CACX,CAQA,MAAM6J,EACF3M,cACII,KAAKwM,YAAc,IAAIrK,GAC3B,CACI4B,WACA,OAAOvC,MAAMC,KAAKzB,KAAKwM,YAAYzI,OACvC,CACIrB,aAEA,OADalB,MAAMC,KAAKzB,KAAKwM,YAAY9J,UAC7BC,QAAO,CAACD,EAAQmB,IAAQnB,EAAOI,OAAOtB,MAAMC,KAAKoC,KAAO,GACxE,CACItC,WAEA,OADaC,MAAMC,KAAKzB,KAAKwM,YAAY9J,UAC7BC,QAAO,CAACpB,EAAMsC,IAAQtC,EAAOsC,EAAItC,MAAM,EACvD,CACAd,IAAIuD,EAAKI,GACL3D,EAAIT,KAAKwM,YAAaxI,EAAKI,EAC/B,CACAzD,OAAOqD,EAAKI,GACRiI,EAAIrM,KAAKwM,YAAaxI,EAAKI,EAC/B,CACA4F,IAAIhG,EAAKI,GACL,MAAM1B,EAAS1C,KAAKwM,YAAY7I,IAAIK,GACpC,OAAiB,MAAVtB,GAAkBA,EAAOsH,IAAI5F,EACxC,CACAqI,OAAOzI,GACH,OAAOhE,KAAKwM,YAAYxC,IAAIhG,EAChC,CACA0I,SAAStI,GAEL,OADa5C,MAAMC,KAAKzB,KAAKwM,YAAY9J,UAC7BiK,MAAM9I,GAAQA,EAAImG,IAAI5F,IACtC,CACAwI,gBAAgB5I,GACZ,MAAMtB,EAAS1C,KAAKwM,YAAY7I,IAAIK,GACpC,OAAOtB,EAASlB,MAAMC,KAAKiB,GAAU,EACzC,CACAmK,gBAAgBzI,GACZ,OAAO5C,MAAMC,KAAKzB,KAAKwM,aAClBtE,QAAO,EAAE4E,EAAMpK,KAAYA,EAAOsH,IAAI5F,KACtCvB,KAAI,EAAEmB,EAAK+I,KAAa/I,GACjC,EA4BJ,MAAMgJ,EACFpN,YAAY6E,EAASoH,EAAU9C,EAAUxC,GACrCvG,KAAKiN,UAAYpB,EACjB7L,KAAKuG,QAAUA,EACfvG,KAAK4L,gBAAkB,IAAI9C,EAAgBrE,EAASzE,MACpDA,KAAK+I,SAAWA,EAChB/I,KAAKkN,iBAAmB,IAAIX,CAChC,CACInK,cACA,OAAOpC,KAAK4L,gBAAgBxJ,OAChC,CACIyJ,eACA,OAAO7L,KAAKiN,SAChB,CACIpB,aAASA,GACT7L,KAAKiN,UAAYpB,EACjB7L,KAAK0J,SACT,CACArH,QACIrC,KAAK4L,gBAAgBvJ,OACzB,CACAsH,MAAMC,GACF5J,KAAK4L,gBAAgBjC,MAAMC,EAC/B,CACAnH,OACIzC,KAAK4L,gBAAgBnJ,MACzB,CACAiH,UACI1J,KAAK4L,gBAAgBlC,SACzB,CACIjF,cACA,OAAOzE,KAAK4L,gBAAgBnH,OAChC,CACAoG,aAAapG,GACT,MAAM,SAAEoH,GAAa7L,KACrB,GAAI6L,EAAU,CACV,MAAM/B,EAAUrF,EAAQqF,QAAQ+B,GAChC,OAAI7L,KAAK+I,SAASoE,qBACPrD,GAAW9J,KAAK+I,SAASoE,qBAAqB1I,EAASzE,KAAKuG,SAEhEuD,CACX,CAEI,OAAO,CAEf,CACAC,oBAAoBoB,GAChB,MAAM,SAAEU,GAAa7L,KACrB,GAAI6L,EAAU,CACV,MAAME,EAAQ/L,KAAK6K,aAAaM,GAAQ,CAACA,GAAQ,GAC3CrB,EAAUtI,MAAMC,KAAK0J,EAAKa,iBAAiBH,IAAW3D,QAAQ6D,GAAU/L,KAAK6K,aAAakB,KAChG,OAAOA,EAAMjJ,OAAOgH,EACxB,CAEI,MAAO,EAEf,CACA2B,eAAehH,GACX,MAAM,SAAEoH,GAAa7L,KACjB6L,GACA7L,KAAKoN,gBAAgB3I,EAASoH,EAEtC,CACAH,iBAAiBjH,GACb,MAAM4I,EAAYrN,KAAKkN,iBAAiBL,gBAAgBpI,GACxD,IAAK,MAAMoH,KAAYwB,EACnBrN,KAAKsN,kBAAkB7I,EAASoH,EAExC,CACAjB,wBAAwBnG,EAAS8I,GAC7B,MAAM,SAAE1B,GAAa7L,KACrB,GAAI6L,EAAU,CACV,MAAM/B,EAAU9J,KAAK6K,aAAapG,GAC5B+I,EAAgBxN,KAAKkN,iBAAiBlD,IAAI6B,EAAUpH,GACtDqF,IAAY0D,EACZxN,KAAKoN,gBAAgB3I,EAASoH,IAExB/B,GAAW0D,GACjBxN,KAAKsN,kBAAkB7I,EAASoH,EAExC,CACJ,CACAuB,gBAAgB3I,EAASoH,GACrB7L,KAAK+I,SAASqE,gBAAgB3I,EAASoH,EAAU7L,KAAKuG,SACtDvG,KAAKkN,iBAAiBzM,IAAIoL,EAAUpH,EACxC,CACA6I,kBAAkB7I,EAASoH,GACvB7L,KAAK+I,SAASuE,kBAAkB7I,EAASoH,EAAU7L,KAAKuG,SACxDvG,KAAKkN,iBAAiBvM,OAAOkL,EAAUpH,EAC3C,EAGJ,MAAMgJ,EACF7N,YAAY6E,EAASsE,GACjB/I,KAAKyE,QAAUA,EACfzE,KAAK+I,SAAWA,EAChB/I,KAAKoC,SAAU,EACfpC,KAAK0N,UAAY,IAAIvL,IACrBnC,KAAKqJ,iBAAmB,IAAIC,kBAAkBC,GAAcvJ,KAAKwJ,iBAAiBD,IACtF,CACAlH,QACSrC,KAAKoC,UACNpC,KAAKoC,SAAU,EACfpC,KAAKqJ,iBAAiBI,QAAQzJ,KAAKyE,QAAS,CAAEwE,YAAY,EAAM0E,mBAAmB,IACnF3N,KAAK0J,UAEb,CACAjH,OACQzC,KAAKoC,UACLpC,KAAKqJ,iBAAiBQ,cACtB7J,KAAKqJ,iBAAiBhJ,aACtBL,KAAKoC,SAAU,EAEvB,CACAsH,UACI,GAAI1J,KAAKoC,QACL,IAAK,MAAMmI,KAAiBvK,KAAK4N,oBAC7B5N,KAAK6N,iBAAiBtD,EAAe,KAGjD,CACAf,iBAAiBD,GACb,GAAIvJ,KAAKoC,QACL,IAAK,MAAM+H,KAAYZ,EACnBvJ,KAAKoK,gBAAgBD,EAGjC,CACAC,gBAAgBD,GACZ,MAAMI,EAAgBJ,EAASI,cAC3BA,GACAvK,KAAK6N,iBAAiBtD,EAAeJ,EAAS2D,SAEtD,CACAD,iBAAiBtD,EAAeuD,GAC5B,MAAM9J,EAAMhE,KAAK+I,SAASgF,4BAA4BxD,GACtD,GAAW,MAAPvG,EAAa,CACRhE,KAAK0N,UAAU1D,IAAIO,IACpBvK,KAAKgO,kBAAkBhK,EAAKuG,GAEhC,MAAMnG,EAAQpE,KAAKyE,QAAQiC,aAAa6D,GAIxC,GAHIvK,KAAK0N,UAAU/J,IAAI4G,IAAkBnG,GACrCpE,KAAKiO,sBAAsB7J,EAAOJ,EAAK8J,GAE9B,MAAT1J,EAAe,CACf,MAAM0J,EAAW9N,KAAK0N,UAAU/J,IAAI4G,GACpCvK,KAAK0N,UAAU/M,OAAO4J,GAClBuD,GACA9N,KAAKkO,oBAAoBlK,EAAKuG,EAAeuD,EACrD,MAEI9N,KAAK0N,UAAU7J,IAAI0G,EAAenG,EAE1C,CACJ,CACA4J,kBAAkBhK,EAAKuG,GACfvK,KAAK+I,SAASiF,mBACdhO,KAAK+I,SAASiF,kBAAkBhK,EAAKuG,EAE7C,CACA0D,sBAAsB7J,EAAOJ,EAAK8J,GAC1B9N,KAAK+I,SAASkF,uBACdjO,KAAK+I,SAASkF,sBAAsB7J,EAAOJ,EAAK8J,EAExD,CACAI,oBAAoBlK,EAAKuG,EAAeuD,GAChC9N,KAAK+I,SAASmF,qBACdlO,KAAK+I,SAASmF,oBAAoBlK,EAAKuG,EAAeuD,EAE9D,CACIF,0BACA,OAAOpM,MAAMC,KAAK,IAAIvB,IAAIF,KAAKmO,sBAAsBrL,OAAO9C,KAAKoO,yBACrE,CACID,4BACA,OAAO3M,MAAMC,KAAKzB,KAAKyE,QAAQwE,YAAYpG,KAAKwL,GAAcA,EAAUrG,MAC5E,CACIoG,6BACA,OAAO5M,MAAMC,KAAKzB,KAAK0N,UAAU3J,OACrC,EAGJ,MAAMuK,EACF1O,YAAY6E,EAAS8F,EAAexB,GAChC/I,KAAKuO,kBAAoB,IAAI5C,EAAkBlH,EAAS8F,EAAevK,MACvEA,KAAK+I,SAAWA,EAChB/I,KAAKwO,gBAAkB,IAAIjC,CAC/B,CACInK,cACA,OAAOpC,KAAKuO,kBAAkBnM,OAClC,CACAC,QACIrC,KAAKuO,kBAAkBlM,OAC3B,CACAsH,MAAMC,GACF5J,KAAKuO,kBAAkB5E,MAAMC,EACjC,CACAnH,OACIzC,KAAKuO,kBAAkB9L,MAC3B,CACAiH,UACI1J,KAAKuO,kBAAkB7E,SAC3B,CACIjF,cACA,OAAOzE,KAAKuO,kBAAkB9J,OAClC,CACI8F,oBACA,OAAOvK,KAAKuO,kBAAkBhE,aAClC,CACA0B,wBAAwBxH,GACpBzE,KAAKyO,cAAczO,KAAK0O,qBAAqBjK,GACjD,CACA0H,6BAA6B1H,GACzB,MAAOkK,EAAiBC,GAAiB5O,KAAK6O,wBAAwBpK,GACtEzE,KAAK8O,gBAAgBH,GACrB3O,KAAKyO,cAAcG,EACvB,CACA1C,0BAA0BzH,GACtBzE,KAAK8O,gBAAgB9O,KAAKwO,gBAAgB5B,gBAAgBnI,GAC9D,CACAgK,cAAcM,GACVA,EAAOxM,SAASyM,GAAUhP,KAAKiP,aAAaD,IAChD,CACAF,gBAAgBC,GACZA,EAAOxM,SAASyM,GAAUhP,KAAKkP,eAAeF,IAClD,CACAC,aAAaD,GACThP,KAAK+I,SAASkG,aAAaD,GAC3BhP,KAAKwO,gBAAgB/N,IAAIuO,EAAMvK,QAASuK,EAC5C,CACAE,eAAeF,GACXhP,KAAK+I,SAASmG,eAAeF,GAC7BhP,KAAKwO,gBAAgB7N,OAAOqO,EAAMvK,QAASuK,EAC/C,CACAH,wBAAwBpK,GACpB,MAAM0K,EAAiBnP,KAAKwO,gBAAgB5B,gBAAgBnI,GACtD2K,EAAgBpP,KAAK0O,qBAAqBjK,GAC1C4K,EAqBd,SAAa1N,EAAMC,GACf,MAAM0N,EAASC,KAAKC,IAAI7N,EAAK2N,OAAQ1N,EAAM0N,QAC3C,OAAO9N,MAAMC,KAAK,CAAE6N,WAAU,CAACpK,EAAGpD,IAAU,CAACH,EAAKG,GAAQF,EAAME,KACpE,CAxBoC2N,CAAIN,EAAgBC,GAAeM,WAAU,EAAEC,EAAeC,MAAkB,OAyBtFhO,EAzBqHgO,KAyB3HjO,EAzB4GgO,IA0BjH/N,GAASD,EAAKG,OAASF,EAAME,OAASH,EAAKkO,SAAWjO,EAAMiO,SAD/E,IAAwBlO,EAAMC,CAzBkI,IACxJ,OAA4B,GAAxByN,EACO,CAAC,GAAI,IAGL,CAACF,EAAe3J,MAAM6J,GAAsBD,EAAc5J,MAAM6J,GAE/E,CACAX,qBAAqBjK,GACjB,MAAM8F,EAAgBvK,KAAKuK,cAE3B,OAGR,SAA0BuF,EAAarL,EAAS8F,GAC5C,OAAOuF,EACFC,OACAC,MAAM,OACN9H,QAAQ2H,GAAYA,EAAQP,SAC5BzM,KAAI,CAACgN,EAAS/N,KAAU,CAAG2C,UAAS8F,gBAAesF,UAAS/N,WACrE,CATemO,CADaxL,EAAQiC,aAAa6D,IAAkB,GACtB9F,EAAS8F,EAClD,EAiBJ,MAAM2F,EACFtQ,YAAY6E,EAAS8F,EAAexB,GAChC/I,KAAKmQ,kBAAoB,IAAI7B,EAAkB7J,EAAS8F,EAAevK,MACvEA,KAAK+I,SAAWA,EAChB/I,KAAKoQ,oBAAsB,IAAIC,QAC/BrQ,KAAKsQ,uBAAyB,IAAID,OACtC,CACIjO,cACA,OAAOpC,KAAKmQ,kBAAkB/N,OAClC,CACAC,QACIrC,KAAKmQ,kBAAkB9N,OAC3B,CACAI,OACIzC,KAAKmQ,kBAAkB1N,MAC3B,CACAiH,UACI1J,KAAKmQ,kBAAkBzG,SAC3B,CACIjF,cACA,OAAOzE,KAAKmQ,kBAAkB1L,OAClC,CACI8F,oBACA,OAAOvK,KAAKmQ,kBAAkB5F,aAClC,CACA0E,aAAaD,GACT,MAAM,QAAEvK,GAAYuK,GACd,MAAE5K,GAAUpE,KAAKuQ,yBAAyBvB,GAC5C5K,IACApE,KAAKwQ,6BAA6B/L,GAASZ,IAAImL,EAAO5K,GACtDpE,KAAK+I,SAAS0H,oBAAoBhM,EAASL,GAEnD,CACA8K,eAAeF,GACX,MAAM,QAAEvK,GAAYuK,GACd,MAAE5K,GAAUpE,KAAKuQ,yBAAyBvB,GAC5C5K,IACApE,KAAKwQ,6BAA6B/L,GAAS9D,OAAOqO,GAClDhP,KAAK+I,SAAS2H,sBAAsBjM,EAASL,GAErD,CACAmM,yBAAyBvB,GACrB,IAAI2B,EAAc3Q,KAAKoQ,oBAAoBzM,IAAIqL,GAK/C,OAJK2B,IACDA,EAAc3Q,KAAK4Q,WAAW5B,GAC9BhP,KAAKoQ,oBAAoBvM,IAAImL,EAAO2B,IAEjCA,CACX,CACAH,6BAA6B/L,GACzB,IAAIoM,EAAgB7Q,KAAKsQ,uBAAuB3M,IAAIc,GAKpD,OAJKoM,IACDA,EAAgB,IAAI1O,IACpBnC,KAAKsQ,uBAAuBzM,IAAIY,EAASoM,IAEtCA,CACX,CACAD,WAAW5B,GACP,IAEI,MAAO,CAAE5K,MADKpE,KAAK+I,SAAS+H,mBAAmB9B,GAKnD,CAFA,MAAO7L,GACH,MAAO,CAAEA,QACb,CACJ,EAGJ,MAAM4N,EACFnR,YAAYuH,EAAS4B,GACjB/I,KAAKmH,QAAUA,EACfnH,KAAK+I,SAAWA,EAChB/I,KAAKgR,iBAAmB,IAAI7O,GAChC,CACAE,QACSrC,KAAKiR,oBACNjR,KAAKiR,kBAAoB,IAAIf,EAAkBlQ,KAAKyE,QAASzE,KAAKkR,gBAAiBlR,MACnFA,KAAKiR,kBAAkB5O,QAE/B,CACAI,OACQzC,KAAKiR,oBACLjR,KAAKiR,kBAAkBxO,cAChBzC,KAAKiR,kBACZjR,KAAKmR,uBAEb,CACI1M,cACA,OAAOzE,KAAKmH,QAAQ1C,OACxB,CACI4C,iBACA,OAAOrH,KAAKmH,QAAQE,UACxB,CACI6J,sBACA,OAAOlR,KAAKoR,OAAOF,eACvB,CACIE,aACA,OAAOpR,KAAKmH,QAAQiK,MACxB,CACI/P,eACA,OAAOG,MAAMC,KAAKzB,KAAKgR,iBAAiBtO,SAC5C,CACA2O,cAAcjK,GACV,MAAM5G,EAAU,IAAI0G,EAAQlH,KAAKmH,QAASC,GAC1CpH,KAAKgR,iBAAiBnN,IAAIuD,EAAQ5G,GAClCR,KAAK+I,SAASxI,iBAAiBC,EACnC,CACA8Q,iBAAiBlK,GACb,MAAM5G,EAAUR,KAAKgR,iBAAiBrN,IAAIyD,GACtC5G,IACAR,KAAKgR,iBAAiBrQ,OAAOyG,GAC7BpH,KAAK+I,SAASrI,oBAAoBF,GAE1C,CACA2Q,uBACInR,KAAKqB,SAASkB,SAAS/B,GAAYR,KAAK+I,SAASrI,oBAAoBF,GAAS,KAC9ER,KAAKgR,iBAAiBO,OAC1B,CACAT,mBAAmB9B,GACf,MAAM5H,EAv1Bd,MACIxH,YAAY6E,EAAS3C,EAAO0P,EAAYJ,GACpCpR,KAAKyE,QAAUA,EACfzE,KAAK8B,MAAQA,EACb9B,KAAKH,YAAc2R,EAAW3R,aAAe4E,EAC7CzE,KAAKF,UAAY0R,EAAW1R,WA0EpC,SAAuC2E,GACnC,MAAMgN,EAAUhN,EAAQgN,QAAQ/L,cAChC,GAAI+L,KAAWtL,EACX,OAAOA,EAAkBsL,GAAShN,EAE1C,CA/EiDiN,CAA8BjN,IAAYtB,EAAM,sBACzFnD,KAAKD,aAAeyR,EAAWzR,cAAgB,CAAC,EAChDC,KAAKqH,WAAamK,EAAWnK,YAAclE,EAAM,sBACjDnD,KAAK6H,WAAa2J,EAAW3J,YAAc1E,EAAM,uBACjDnD,KAAK2R,UAAYH,EAAWG,WAAa,GACzC3R,KAAKoR,OAASA,CAClB,CACAQ,gBAAgB5C,EAAOoC,GACnB,OAAO,IAAIpR,KAAKgP,EAAMvK,QAASuK,EAAMlN,MA7E7C,SAAqC+P,GACjC,MACM/H,EADS+H,EAAiB9B,OACThE,MAAMpH,IAAsB,GACnD,IAAI7E,EAAYgK,EAAQ,GACpB6H,EAAY7H,EAAQ,GAKxB,OAJI6H,IAAc,CAAC,UAAW,QAAS,YAAYG,SAAShS,KACxDA,GAAa,IAAI6R,IACjBA,EAAY,IAET,CACH9R,YAAa+E,EAAiBkF,EAAQ,IACtChK,YACAC,aAAc+J,EAAQ,IAcH/J,EAd0B+J,EAAQ,GAelD/J,EACFiQ,MAAM,KACNrN,QAAO,CAACoP,EAAS/C,IAAUhO,OAAOC,OAAO8Q,EAAS,CAAE,CAAC/C,EAAM/J,QAAQ,KAAM,MAAO,KAAK+M,KAAKhD,MAAW,CAAC,IAjB5C,CAAC,EAC5D3H,WAAYyC,EAAQ,GACpBjC,WAAYiC,EAAQ,GACpB6H,UAAW7H,EAAQ,IAAM6H,GAWjC,IAA2B5R,CAT3B,CA4DoDkS,CAA4BjD,EAAMa,SAAUuB,EAC5F,CACAc,WACI,MAAMC,EAAcnS,KAAK2R,UAAY,IAAI3R,KAAK2R,YAAc,GACtD9R,EAAcG,KAAK6E,gBAAkB,IAAI7E,KAAK6E,kBAAoB,GACxE,MAAO,GAAG7E,KAAKF,YAAYqS,IAActS,MAAgBG,KAAKqH,cAAcrH,KAAK6H,YACrF,CACAU,0BAA0B1H,GACtB,IAAKb,KAAK2R,UACN,OAAO,EAEX,MAAMS,EAAUpS,KAAK2R,UAAU3B,MAAM,KACrC,GAAIhQ,KAAKqS,sBAAsBxR,EAAOuR,GAClC,OAAO,EAEX,MAAME,EAAiBF,EAAQlK,QAAQlE,IAASkC,EAAa4L,SAAS9N,KAAM,GAC5E,QAAKsO,IAGAxM,EAAY9F,KAAKuS,YAAaD,IAC/BnP,EAAM,gCAAgCnD,KAAK2R,aAExC3R,KAAKuS,YAAYD,GAAgB5M,gBAAkB7E,EAAMmD,IAAI0B,cACxE,CACA+C,uBAAuB5H,GACnB,IAAKb,KAAK2R,UACN,OAAO,EAEX,MAAMS,EAAU,CAACpS,KAAK2R,WACtB,QAAI3R,KAAKqS,sBAAsBxR,EAAOuR,EAI1C,CACIjK,aACA,MAAMA,EAAS,CAAC,EACVqK,EAAU,IAAIC,OAAO,SAASzS,KAAKqH,yBAA0B,KACnE,IAAK,MAAM,KAAEW,EAAI,MAAE5D,KAAW5C,MAAMC,KAAKzB,KAAKyE,QAAQwE,YAAa,CAC/D,MAAM8C,EAAQ/D,EAAK+D,MAAMyG,GACnBxO,EAAM+H,GAASA,EAAM,GACvB/H,IACAmE,EAAOnD,EAAShB,IAAQ8C,EAAS1C,GAEzC,CACA,OAAO+D,CACX,CACItD,sBACA,OA7FsBhF,EA6FMG,KAAKH,cA5FlBiF,OACR,SAEFjF,GAAekF,SACb,gBADN,EAJT,IAA8BlF,CA8F1B,CACI0S,kBACA,OAAOvS,KAAKoR,OAAOmB,WACvB,CACAF,sBAAsBxR,EAAOuR,GACzB,MAAOM,EAAMC,EAAMC,EAAKC,GAAS3M,EAAarD,KAAKiQ,GAAaV,EAAQN,SAASgB,KACjF,OAAOjS,EAAMkS,UAAYL,GAAQ7R,EAAMmS,UAAYL,GAAQ9R,EAAMoS,SAAWL,GAAO/R,EAAMqS,WAAaL,CAC1G,GAmxB0BM,SAASnE,EAAOhP,KAAKoR,QAC3C,GAAIhK,EAAOC,YAAcrH,KAAKqH,WAC1B,OAAOD,CAEf,CACAqJ,oBAAoBhM,EAAS2C,GACzBpH,KAAKqR,cAAcjK,EACvB,CACAsJ,sBAAsBjM,EAAS2C,GAC3BpH,KAAKsR,iBAAiBlK,EAC1B,EAGJ,MAAMgM,EACFxT,YAAYuH,EAASkM,GACjBrT,KAAKmH,QAAUA,EACfnH,KAAKqT,SAAWA,EAChBrT,KAAKsT,kBAAoB,IAAI7F,EAAkBzN,KAAKyE,QAASzE,MAC7DA,KAAKuT,mBAAqBvT,KAAK4H,WAAW2L,kBAC9C,CACAlR,QACIrC,KAAKsT,kBAAkBjR,QACvBrC,KAAKwT,wCACT,CACA/Q,OACIzC,KAAKsT,kBAAkB7Q,MAC3B,CACIgC,cACA,OAAOzE,KAAKmH,QAAQ1C,OACxB,CACImD,iBACA,OAAO5H,KAAKmH,QAAQS,UACxB,CACAmG,4BAA4BxD,GACxB,GAAIA,KAAiBvK,KAAKuT,mBACtB,OAAOvT,KAAKuT,mBAAmBhJ,GAAevC,IAEtD,CACAgG,kBAAkBhK,EAAKuG,GACnB,MAAMiH,EAAaxR,KAAKuT,mBAAmBhJ,GACtCvK,KAAK0M,SAAS1I,IACfhE,KAAKyT,sBAAsBzP,EAAKwN,EAAWkC,OAAO1T,KAAKqT,SAASrP,IAAOwN,EAAWkC,OAAOlC,EAAWmC,cAE5G,CACA1F,sBAAsB7J,EAAO4D,EAAM8F,GAC/B,MAAM0D,EAAaxR,KAAK4T,uBAAuB5L,GACjC,OAAV5D,IAEa,OAAb0J,IACAA,EAAW0D,EAAWkC,OAAOlC,EAAWmC,eAE5C3T,KAAKyT,sBAAsBzL,EAAM5D,EAAO0J,GAC5C,CACAI,oBAAoBlK,EAAKuG,EAAeuD,GACpC,MAAM0D,EAAaxR,KAAK4T,uBAAuB5P,GAC3ChE,KAAK0M,SAAS1I,GACdhE,KAAKyT,sBAAsBzP,EAAKwN,EAAWkC,OAAO1T,KAAKqT,SAASrP,IAAO8J,GAGvE9N,KAAKyT,sBAAsBzP,EAAKwN,EAAWkC,OAAOlC,EAAWmC,cAAe7F,EAEpF,CACA0F,yCACI,IAAK,MAAM,IAAExP,EAAG,KAAEgE,EAAI,aAAE2L,EAAY,OAAED,KAAY1T,KAAK6T,sBAC/BhO,GAAhB8N,GAA8B3T,KAAK4H,WAAWkM,KAAK9J,IAAIhG,IACvDhE,KAAKyT,sBAAsBzL,EAAM0L,EAAOC,QAAe9N,EAGnE,CACA4N,sBAAsBzL,EAAM+L,EAAUC,GAClC,MAAMC,EAAoB,GAAGjM,WACvBkM,EAAgBlU,KAAKqT,SAASY,GACpC,GAA4B,mBAAjBC,EAA6B,CACpC,MAAM1C,EAAaxR,KAAK4T,uBAAuB5L,GAC/C,IACI,MAAM5D,EAAQoN,EAAW2C,OAAOJ,GAChC,IAAIjG,EAAWkG,EACXA,IACAlG,EAAW0D,EAAW2C,OAAOH,IAEjCE,EAAc/S,KAAKnB,KAAKqT,SAAUjP,EAAO0J,EAO7C,CALA,MAAO3K,GAIH,MAHIA,aAAiBiR,YACjBjR,EAAMC,QAAU,mBAAmBpD,KAAKmH,QAAQE,cAAcmK,EAAWxJ,WAAW7E,EAAMC,WAExFD,CACV,CACJ,CACJ,CACI0Q,uBACA,MAAM,mBAAEN,GAAuBvT,KAC/B,OAAOgB,OAAO+C,KAAKwP,GAAoB1Q,KAAKmB,GAAQuP,EAAmBvP,IAC3E,CACI4P,6BACA,MAAMS,EAAc,CAAC,EAKrB,OAJArT,OAAO+C,KAAK/D,KAAKuT,oBAAoBhR,SAASyB,IAC1C,MAAMwN,EAAaxR,KAAKuT,mBAAmBvP,GAC3CqQ,EAAY7C,EAAWxJ,MAAQwJ,CAAU,IAEtC6C,CACX,CACA3H,SAASnC,GACL,MACM+J,EAAgB,MAAMhP,EADTtF,KAAK4T,uBAAuBrJ,GACGvC,QAClD,OAAOhI,KAAKqT,SAASiB,EACzB,EAGJ,MAAMC,EACF3U,YAAYuH,EAAS4B,GACjB/I,KAAKmH,QAAUA,EACfnH,KAAK+I,SAAWA,EAChB/I,KAAKwU,cAAgB,IAAIjI,CAC7B,CACAlK,QACSrC,KAAKmQ,oBACNnQ,KAAKmQ,kBAAoB,IAAI7B,EAAkBtO,KAAKyE,QAASzE,KAAKuK,cAAevK,MACjFA,KAAKmQ,kBAAkB9N,QAE/B,CACAI,OACQzC,KAAKmQ,oBACLnQ,KAAKyU,uBACLzU,KAAKmQ,kBAAkB1N,cAChBzC,KAAKmQ,kBAEpB,CACAlB,cAAa,QAAExK,EAASoL,QAAS7H,IACzBhI,KAAK4I,MAAMC,gBAAgBpE,IAC3BzE,KAAK0U,cAAcjQ,EAASuD,EAEpC,CACAkH,gBAAe,QAAEzK,EAASoL,QAAS7H,IAC/BhI,KAAK2U,iBAAiBlQ,EAASuD,EACnC,CACA0M,cAAcjQ,EAASuD,GACnB,IAAI4M,EACC5U,KAAKwU,cAAcxK,IAAIhC,EAAMvD,KAC9BzE,KAAKwU,cAAc/T,IAAIuH,EAAMvD,GACK,QAAjCmQ,EAAK5U,KAAKmQ,yBAAsC,IAAPyE,GAAyBA,EAAGjL,OAAM,IAAM3J,KAAK+I,SAAS8L,gBAAgBpQ,EAASuD,KAEjI,CACA2M,iBAAiBlQ,EAASuD,GACtB,IAAI4M,EACA5U,KAAKwU,cAAcxK,IAAIhC,EAAMvD,KAC7BzE,KAAKwU,cAAc7T,OAAOqH,EAAMvD,GACE,QAAjCmQ,EAAK5U,KAAKmQ,yBAAsC,IAAPyE,GAAyBA,EAAGjL,OAAM,IAAM3J,KAAK+I,SAAS+L,mBAAmBrQ,EAASuD,KAEpI,CACAyM,uBACI,IAAK,MAAMzM,KAAQhI,KAAKwU,cAAczQ,KAClC,IAAK,MAAMU,KAAWzE,KAAKwU,cAAc5H,gBAAgB5E,GACrDhI,KAAK2U,iBAAiBlQ,EAASuD,EAG3C,CACIuC,oBACA,MAAO,QAAQvK,KAAKmH,QAAQE,mBAChC,CACI5C,cACA,OAAOzE,KAAKmH,QAAQ1C,OACxB,CACImE,YACA,OAAO5I,KAAKmH,QAAQyB,KACxB,EAGJ,SAASmM,EAAiCnV,EAAaoV,GACnD,MAAMC,EAAYC,EAA2BtV,GAC7C,OAAO4B,MAAMC,KAAKwT,EAAUtS,QAAO,CAACD,EAAQ9C,KAoBhD,SAAiCA,EAAaoV,GAC1C,MAAMG,EAAavV,EAAYoV,GAC/B,OAAOxT,MAAM4T,QAAQD,GAAcA,EAAa,EACpD,CAtBQE,CAAwBzV,EAAaoV,GAAczS,SAASyF,GAAStF,EAAOjC,IAAIuH,KACzEtF,IACR,IAAIxC,KACX,CACA,SAASoV,EAAiC1V,EAAaoV,GAEnD,OADkBE,EAA2BtV,GAC5B+C,QAAO,CAAC4S,EAAO3V,KAC5B2V,EAAMtR,QAgBd,SAAiCrE,EAAaoV,GAC1C,MAAMG,EAAavV,EAAYoV,GAC/B,OAAOG,EAAanU,OAAO+C,KAAKoR,GAAYtS,KAAKmB,GAAQ,CAACA,EAAKmR,EAAWnR,MAAS,EACvF,CAnBsBwR,CAAwB5V,EAAaoV,IAC5CO,IACR,GACP,CACA,SAASL,EAA2BtV,GAChC,MAAMqV,EAAY,GAClB,KAAOrV,GACHqV,EAAUhR,KAAKrE,GACfA,EAAcoB,OAAOyU,eAAe7V,GAExC,OAAOqV,EAAUS,SACrB,CAUA,MAAMC,EACF/V,YAAYuH,EAAS4B,GACjB/I,KAAKoC,SAAU,EACfpC,KAAKmH,QAAUA,EACfnH,KAAK+I,SAAWA,EAChB/I,KAAK4V,cAAgB,IAAIrJ,EACzBvM,KAAK6V,qBAAuB,IAAItJ,EAChCvM,KAAK8V,oBAAsB,IAAI3T,IAC/BnC,KAAK+V,qBAAuB,IAAI5T,GACpC,CACAE,QACSrC,KAAKoC,UACNpC,KAAKgW,kBAAkBzT,SAAS0T,IAC5BjW,KAAKkW,+BAA+BD,GACpCjW,KAAKmW,gCAAgCF,EAAW,IAEpDjW,KAAKoC,SAAU,EACfpC,KAAKoW,kBAAkB7T,SAAS4E,GAAYA,EAAQuC,YAE5D,CACAA,UACI1J,KAAK8V,oBAAoBvT,SAAS8T,GAAaA,EAAS3M,YACxD1J,KAAK+V,qBAAqBxT,SAAS8T,GAAaA,EAAS3M,WAC7D,CACAjH,OACQzC,KAAKoC,UACLpC,KAAKoC,SAAU,EACfpC,KAAKsW,uBACLtW,KAAKuW,wBACLvW,KAAKwW,yBAEb,CACAD,wBACQvW,KAAK8V,oBAAoBvU,KAAO,IAChCvB,KAAK8V,oBAAoBvT,SAAS8T,GAAaA,EAAS5T,SACxDzC,KAAK8V,oBAAoBvE,QAEjC,CACAiF,yBACQxW,KAAK+V,qBAAqBxU,KAAO,IACjCvB,KAAK+V,qBAAqBxT,SAAS8T,GAAaA,EAAS5T,SACzDzC,KAAK+V,qBAAqBxE,QAElC,CACAnE,gBAAgB3I,EAASwI,GAAW,WAAEgJ,IAClC,MAAMQ,EAASzW,KAAK0W,UAAUjS,EAASwR,GACnCQ,GACAzW,KAAK2W,cAAcF,EAAQhS,EAASwR,EAE5C,CACA3I,kBAAkB7I,EAASwI,GAAW,WAAEgJ,IACpC,MAAMQ,EAASzW,KAAK4W,iBAAiBnS,EAASwR,GAC1CQ,GACAzW,KAAK6W,iBAAiBJ,EAAQhS,EAASwR,EAE/C,CACA9I,qBAAqB1I,GAAS,WAAEwR,IAC5B,MAAMpK,EAAW7L,KAAK6L,SAASoK,GACzBa,EAAY9W,KAAK8W,UAAUrS,EAASwR,GACpCc,EAAsBtS,EAAQqF,QAAQ,IAAI9J,KAAKoR,OAAO4F,wBAAwBf,MACpF,QAAIpK,IACOiL,GAAaC,GAAuBtS,EAAQqF,QAAQ+B,GAKnE,CACAI,wBAAwBgL,EAAU1M,GAC9B,MAAM0L,EAAajW,KAAKkX,qCAAqC3M,GACzD0L,GACAjW,KAAKmX,gCAAgClB,EAE7C,CACA9J,6BAA6B8K,EAAU1M,GACnC,MAAM0L,EAAajW,KAAKkX,qCAAqC3M,GACzD0L,GACAjW,KAAKmX,gCAAgClB,EAE7C,CACA/J,0BAA0B+K,EAAU1M,GAChC,MAAM0L,EAAajW,KAAKkX,qCAAqC3M,GACzD0L,GACAjW,KAAKmX,gCAAgClB,EAE7C,CACAU,cAAcF,EAAQhS,EAASwR,GAC3B,IAAIrB,EACC5U,KAAK6V,qBAAqB7L,IAAIiM,EAAYxR,KAC3CzE,KAAK4V,cAAcnV,IAAIwV,EAAYQ,GACnCzW,KAAK6V,qBAAqBpV,IAAIwV,EAAYxR,GACU,QAAnDmQ,EAAK5U,KAAK8V,oBAAoBnS,IAAIsS,UAAgC,IAAPrB,GAAyBA,EAAGjL,OAAM,IAAM3J,KAAK+I,SAASqO,gBAAgBX,EAAQhS,EAASwR,KAE3J,CACAY,iBAAiBJ,EAAQhS,EAASwR,GAC9B,IAAIrB,EACA5U,KAAK6V,qBAAqB7L,IAAIiM,EAAYxR,KAC1CzE,KAAK4V,cAAcjV,OAAOsV,EAAYQ,GACtCzW,KAAK6V,qBAAqBlV,OAAOsV,EAAYxR,GAEnB,QADzBmQ,EAAK5U,KAAK8V,oBACNnS,IAAIsS,UAAgC,IAAPrB,GAAyBA,EAAGjL,OAAM,IAAM3J,KAAK+I,SAASsO,mBAAmBZ,EAAQhS,EAASwR,KAEpI,CACAK,uBACI,IAAK,MAAML,KAAcjW,KAAK6V,qBAAqB9R,KAC/C,IAAK,MAAMU,KAAWzE,KAAK6V,qBAAqBjJ,gBAAgBqJ,GAC5D,IAAK,MAAMQ,KAAUzW,KAAK4V,cAAchJ,gBAAgBqJ,GACpDjW,KAAK6W,iBAAiBJ,EAAQhS,EAASwR,EAIvD,CACAkB,gCAAgClB,GAC5B,MAAMI,EAAWrW,KAAK8V,oBAAoBnS,IAAIsS,GAC1CI,IACAA,EAASxK,SAAW7L,KAAK6L,SAASoK,GAE1C,CACAC,+BAA+BD,GAC3B,MAAMpK,EAAW7L,KAAK6L,SAASoK,GACzBqB,EAAmB,IAAItK,EAAiBjI,SAASwS,KAAM1L,EAAU7L,KAAM,CAAEiW,eAC/EjW,KAAK8V,oBAAoBjS,IAAIoS,EAAYqB,GACzCA,EAAiBjV,OACrB,CACA8T,gCAAgCF,GAC5B,MAAM1L,EAAgBvK,KAAKwX,2BAA2BvB,GAChD1H,EAAoB,IAAI5C,EAAkB3L,KAAK4I,MAAMnE,QAAS8F,EAAevK,MACnFA,KAAK+V,qBAAqBlS,IAAIoS,EAAY1H,GAC1CA,EAAkBlM,OACtB,CACAwJ,SAASoK,GACL,OAAOjW,KAAK4I,MAAM6O,QAAQC,yBAAyBzB,EACvD,CACAuB,2BAA2BvB,GACvB,OAAOjW,KAAK4I,MAAMwI,OAAOuG,wBAAwB3X,KAAKqH,WAAY4O,EACtE,CACAiB,qCAAqC3M,GACjC,OAAOvK,KAAKgW,kBAAkB4B,MAAM3B,GAAejW,KAAKwX,2BAA2BvB,KAAgB1L,GACvG,CACIsN,yBACA,MAAMC,EAAe,IAAIvL,EAMzB,OALAvM,KAAK+X,OAAOC,QAAQzV,SAAS0V,IAETlD,EADIkD,EAAO9C,WAAW+C,sBACwB,WACtD3V,SAASkU,GAAWqB,EAAarX,IAAIgW,EAAQwB,EAAO5Q,aAAY,IAErEyQ,CACX,CACI9B,wBACA,OAAOhW,KAAK6X,mBAAmBhL,gBAAgB7M,KAAKqH,WACxD,CACI8Q,qCACA,OAAOnY,KAAK6X,mBAAmBjL,gBAAgB5M,KAAKqH,WACxD,CACI+O,wBACA,MAAMgC,EAAcpY,KAAKmY,+BACzB,OAAOnY,KAAK+X,OAAOM,SAASnQ,QAAQf,GAAYiR,EAAYtG,SAAS3K,EAAQE,aACjF,CACAyP,UAAUrS,EAASwR,GACf,QAASjW,KAAK0W,UAAUjS,EAASwR,MAAiBjW,KAAK4W,iBAAiBnS,EAASwR,EACrF,CACAS,UAAUjS,EAASwR,GACf,OAAOjW,KAAKiC,YAAYqW,qCAAqC7T,EAASwR,EAC1E,CACAW,iBAAiBnS,EAASwR,GACtB,OAAOjW,KAAK4V,cAAchJ,gBAAgBqJ,GAAY2B,MAAMnB,GAAWA,EAAOhS,UAAYA,GAC9F,CACImE,YACA,OAAO5I,KAAKmH,QAAQyB,KACxB,CACIwI,aACA,OAAOpR,KAAKmH,QAAQiK,MACxB,CACI/J,iBACA,OAAOrH,KAAKmH,QAAQE,UACxB,CACIpF,kBACA,OAAOjC,KAAKmH,QAAQlF,WACxB,CACI8V,aACA,OAAO/X,KAAKiC,YAAY8V,MAC5B,EAGJ,MAAMQ,EACF3Y,YAAYqY,EAAQrP,GAChB5I,KAAKqI,iBAAmB,CAACmQ,EAAcnV,EAAS,CAAC,KAC7C,MAAM,WAAEgE,EAAU,WAAEO,EAAU,QAAEnD,GAAYzE,KAC5CqD,EAASrC,OAAOC,OAAO,CAAEoG,aAAYO,aAAYnD,WAAWpB,GAC5DrD,KAAKiC,YAAYoG,iBAAiBrI,KAAKqH,WAAYmR,EAAcnV,EAAO,EAE5ErD,KAAKiY,OAASA,EACdjY,KAAK4I,MAAQA,EACb5I,KAAK4H,WAAa,IAAIqQ,EAAOC,sBAAsBlY,MACnDA,KAAKyY,gBAAkB,IAAI1H,EAAgB/Q,KAAMA,KAAK0Y,YACtD1Y,KAAK2Y,cAAgB,IAAIvF,EAAcpT,KAAMA,KAAK4H,YAClD5H,KAAK4Y,eAAiB,IAAIrE,EAAevU,KAAMA,MAC/CA,KAAK6Y,eAAiB,IAAIlD,EAAe3V,KAAMA,MAC/C,IACIA,KAAK4H,WAAWkR,aAChB9Y,KAAKqI,iBAAiB,aAI1B,CAFA,MAAOlF,GACHnD,KAAKkD,YAAYC,EAAO,0BAC5B,CACJ,CACAhD,UACIH,KAAKyY,gBAAgBpW,QACrBrC,KAAK2Y,cAActW,QACnBrC,KAAK4Y,eAAevW,QACpBrC,KAAK6Y,eAAexW,QACpB,IACIrC,KAAK4H,WAAWzH,UAChBH,KAAKqI,iBAAiB,UAI1B,CAFA,MAAOlF,GACHnD,KAAKkD,YAAYC,EAAO,wBAC5B,CACJ,CACAuG,UACI1J,KAAK6Y,eAAenP,SACxB,CACArJ,aACI,IACIL,KAAK4H,WAAWvH,aAChBL,KAAKqI,iBAAiB,aAI1B,CAFA,MAAOlF,GACHnD,KAAKkD,YAAYC,EAAO,2BAC5B,CACAnD,KAAK6Y,eAAepW,OACpBzC,KAAK4Y,eAAenW,OACpBzC,KAAK2Y,cAAclW,OACnBzC,KAAKyY,gBAAgBhW,MACzB,CACIR,kBACA,OAAOjC,KAAKiY,OAAOhW,WACvB,CACIoF,iBACA,OAAOrH,KAAKiY,OAAO5Q,UACvB,CACI+J,aACA,OAAOpR,KAAKiC,YAAYmP,MAC5B,CACIsH,iBACA,OAAO1Y,KAAKiC,YAAYyW,UAC5B,CACIjU,cACA,OAAOzE,KAAK4I,MAAMnE,OACtB,CACIsU,oBACA,OAAO/Y,KAAKyE,QAAQsU,aACxB,CACA7V,YAAYC,EAAOC,EAASC,EAAS,CAAC,GAClC,MAAM,WAAEgE,EAAU,WAAEO,EAAU,QAAEnD,GAAYzE,KAC5CqD,EAASrC,OAAOC,OAAO,CAAEoG,aAAYO,aAAYnD,WAAWpB,GAC5DrD,KAAKiC,YAAYiB,YAAYC,EAAO,SAASC,IAAWC,EAC5D,CACAwR,gBAAgBpQ,EAASuD,GACrBhI,KAAKgZ,uBAAuB,GAAGhR,mBAAuBvD,EAC1D,CACAqQ,mBAAmBrQ,EAASuD,GACxBhI,KAAKgZ,uBAAuB,GAAGhR,sBAA0BvD,EAC7D,CACA2S,gBAAgBX,EAAQhS,EAASuD,GAC7BhI,KAAKgZ,uBAAuB,GAAG3T,EAAkB2C,oBAAwByO,EAAQhS,EACrF,CACA4S,mBAAmBZ,EAAQhS,EAASuD,GAChChI,KAAKgZ,uBAAuB,GAAG3T,EAAkB2C,uBAA2ByO,EAAQhS,EACxF,CACAuU,uBAAuBnR,KAAeoR,GAClC,MAAMrR,EAAa5H,KAAK4H,WACa,mBAA1BA,EAAWC,IAClBD,EAAWC,MAAeoR,EAElC,EAGJ,SAASC,EAAMtZ,GACX,OAEJ,SAAgBA,EAAauZ,GACzB,MAAMC,EAAoBC,EAAOzZ,GAC3B0Z,EAeV,SAA6BtT,EAAWmT,GACpC,OAAOI,EAAWJ,GAAYxW,QAAO,CAAC2W,EAAkBtV,KACpD,MAAMwN,EAOd,SAA+BxL,EAAWmT,EAAYnV,GAClD,MAAMwV,EAAsBxY,OAAOyY,yBAAyBzT,EAAWhC,GAEvE,IADwBwV,KAAuB,UAAWA,GACpC,CAClB,MAAMhI,EAAaxQ,OAAOyY,yBAAyBN,EAAYnV,GAAKI,MAKpE,OAJIoV,IACAhI,EAAW7N,IAAM6V,EAAoB7V,KAAO6N,EAAW7N,IACvD6N,EAAW3N,IAAM2V,EAAoB3V,KAAO2N,EAAW3N,KAEpD2N,CACX,CACJ,CAlB2BkI,CAAsB1T,EAAWmT,EAAYnV,GAIhE,OAHIwN,GACAxQ,OAAOC,OAAOqY,EAAkB,CAAE,CAACtV,GAAMwN,IAEtC8H,CAAgB,GACxB,CAAC,EACR,CAvB6BK,CAAoB/Z,EAAYoG,UAAWmT,GAEpE,OADAnY,OAAO4Y,iBAAiBR,EAAkBpT,UAAWsT,GAC9CF,CACX,CAPWS,CAAOja,EAQlB,SAA8BA,GAE1B,OADkBmV,EAAiCnV,EAAa,aAC/C+C,QAAO,CAACmX,EAAmBC,KACxC,MAAMZ,EAAaY,EAASna,GAC5B,IAAK,MAAMoE,KAAOmV,EAAY,CAC1B,MAAM3H,EAAasI,EAAkB9V,IAAQ,CAAC,EAC9C8V,EAAkB9V,GAAOhD,OAAOC,OAAOuQ,EAAY2H,EAAWnV,GAClE,CACA,OAAO8V,CAAiB,GACzB,CAAC,EACR,CAlB+BE,CAAqBpa,GACpD,CAuCA,MAAM2Z,EACyC,mBAAhCvY,OAAOiZ,sBACNrU,GAAW,IAAI5E,OAAOkZ,oBAAoBtU,MAAY5E,OAAOiZ,sBAAsBrU,IAGpF5E,OAAOkZ,oBAGhBb,EAAS,MACX,SAASc,EAAkBva,GACvB,SAASwa,IACL,OAAOC,QAAQC,UAAU1a,EAAa2a,qBAC1C,CAKA,OAJAH,EAASpU,UAAYhF,OAAOwZ,OAAO5a,EAAYoG,UAAW,CACtDpG,YAAa,CAAEwE,MAAOgW,KAE1BC,QAAQI,eAAeL,EAAUxa,GAC1Bwa,CACX,CASA,IAEI,OAVJ,WACI,MAGMM,EAAIP,GAHA,WACNna,KAAKoG,EAAEjF,KAAKnB,KAChB,IAEA0a,EAAE1U,UAAUI,EAAI,WAAc,EACvB,IAAIsU,CACf,CAEIC,GACOR,CAKX,CAHA,MAAOhX,GACH,OAAQvD,GAAgB,cAAuBA,GAEnD,CACH,EA3Bc,GAoCf,MAAMgb,EACFhb,YAAYqC,EAAakT,GACrBnV,KAAKiC,YAAcA,EACnBjC,KAAKmV,WAVb,SAAyBA,GACrB,MAAO,CACH9N,WAAY8N,EAAW9N,WACvB6Q,sBAAuBgB,EAAM/D,EAAW+C,uBAEhD,CAK0B2C,CAAgB1F,GAClCnV,KAAK8a,gBAAkB,IAAIzK,QAC3BrQ,KAAK+a,kBAAoB,IAAI7a,GACjC,CACImH,iBACA,OAAOrH,KAAKmV,WAAW9N,UAC3B,CACI6Q,4BACA,OAAOlY,KAAKmV,WAAW+C,qBAC3B,CACIG,eACA,OAAO7W,MAAMC,KAAKzB,KAAK+a,kBAC3B,CACAC,uBAAuBpS,GACnB,MAAMzB,EAAUnH,KAAKib,qBAAqBrS,GAC1C5I,KAAK+a,kBAAkBta,IAAI0G,GAC3BA,EAAQhH,SACZ,CACA+a,0BAA0BtS,GACtB,MAAMzB,EAAUnH,KAAK8a,gBAAgBnX,IAAIiF,GACrCzB,IACAnH,KAAK+a,kBAAkBpa,OAAOwG,GAC9BA,EAAQ9G,aAEhB,CACA4a,qBAAqBrS,GACjB,IAAIzB,EAAUnH,KAAK8a,gBAAgBnX,IAAIiF,GAKvC,OAJKzB,IACDA,EAAU,IAAIoR,EAAQvY,KAAM4I,GAC5B5I,KAAK8a,gBAAgBjX,IAAI+E,EAAOzB,IAE7BA,CACX,EAGJ,MAAMgU,EACFvb,YAAYgJ,GACR5I,KAAK4I,MAAQA,CACjB,CACAoB,IAAIhC,GACA,OAAOhI,KAAK8T,KAAK9J,IAAIhK,KAAKob,WAAWpT,GACzC,CACArE,IAAIqE,GACA,OAAOhI,KAAKqb,OAAOrT,GAAM,EAC7B,CACAqT,OAAOrT,GACH,MAAM8H,EAAc9P,KAAK8T,KAAKnQ,IAAI3D,KAAKob,WAAWpT,KAAU,GAC5D,OAAgB8H,EAr8CP/D,MAAM,YAAc,EAs8CjC,CACAuP,iBAAiBtT,GACb,OAAOhI,KAAK8T,KAAKyH,uBAAuBvb,KAAKob,WAAWpT,GAC5D,CACAoT,WAAWpT,GACP,MAAO,GAAGA,SACd,CACI8L,WACA,OAAO9T,KAAK4I,MAAMkL,IACtB,EAGJ,MAAM0H,EACF5b,YAAYgJ,GACR5I,KAAK4I,MAAQA,CACjB,CACInE,cACA,OAAOzE,KAAK4I,MAAMnE,OACtB,CACI4C,iBACA,OAAOrH,KAAK4I,MAAMvB,UACtB,CACA1D,IAAIK,GACA,MAAMgE,EAAOhI,KAAKub,uBAAuBvX,GACzC,OAAOhE,KAAKyE,QAAQiC,aAAasB,EACrC,CACAnE,IAAIG,EAAKI,GACL,MAAM4D,EAAOhI,KAAKub,uBAAuBvX,GAEzC,OADAhE,KAAKyE,QAAQgX,aAAazT,EAAM5D,GACzBpE,KAAK2D,IAAIK,EACpB,CACAgG,IAAIhG,GACA,MAAMgE,EAAOhI,KAAKub,uBAAuBvX,GACzC,OAAOhE,KAAKyE,QAAQqH,aAAa9D,EACrC,CACArH,OAAOqD,GACH,GAAIhE,KAAKgK,IAAIhG,GAAM,CACf,MAAMgE,EAAOhI,KAAKub,uBAAuBvX,GAEzC,OADAhE,KAAKyE,QAAQiX,gBAAgB1T,IACtB,CACX,CAEI,OAAO,CAEf,CACAuT,uBAAuBvX,GACnB,MAAO,QAAQhE,KAAKqH,cAAc5B,EAAUzB,IAChD,EAGJ,MAAM2X,EACF/b,YAAYgc,GACR5b,KAAK6b,mBAAqB,IAAIxL,QAC9BrQ,KAAK4b,OAASA,CAClB,CACAE,KAAKlW,EAAQ5B,EAAKZ,GACd,IAAI2Y,EAAa/b,KAAK6b,mBAAmBlY,IAAIiC,GACxCmW,IACDA,EAAa,IAAI7b,IACjBF,KAAK6b,mBAAmBhY,IAAI+B,EAAQmW,IAEnCA,EAAW/R,IAAIhG,KAChB+X,EAAWtb,IAAIuD,GACfhE,KAAK4b,OAAOE,KAAK1Y,EAASwC,GAElC,EAGJ,SAASoW,EAA4BzR,EAAeyE,GAChD,MAAO,IAAIzE,OAAmByE,KAClC,CAEA,MAAMiN,EACFrc,YAAYgJ,GACR5I,KAAK4I,MAAQA,CACjB,CACInE,cACA,OAAOzE,KAAK4I,MAAMnE,OACtB,CACI4C,iBACA,OAAOrH,KAAK4I,MAAMvB,UACtB,CACI+J,aACA,OAAOpR,KAAK4I,MAAMwI,MACtB,CACApH,IAAIkS,GACA,OAAgC,MAAzBlc,KAAK4X,KAAKsE,EACrB,CACAtE,QAAQuE,GACJ,OAAOA,EAAYxZ,QAAO,CAAC+B,EAAQwX,IAAexX,GAAU1E,KAAKoc,WAAWF,IAAelc,KAAKqc,iBAAiBH,SAAarW,EAClI,CACAyW,WAAWH,GACP,OAAOA,EAAYxZ,QAAO,CAAC4Z,EAASL,IAAe,IAC5CK,KACAvc,KAAKwc,eAAeN,MACpBlc,KAAKyc,qBAAqBP,KAC9B,GACP,CACAE,WAAWF,GACP,MAAMrQ,EAAW7L,KAAK0c,yBAAyBR,GAC/C,OAAOlc,KAAK4I,MAAM+T,YAAY9Q,EAClC,CACA2Q,eAAeN,GACX,MAAMrQ,EAAW7L,KAAK0c,yBAAyBR,GAC/C,OAAOlc,KAAK4I,MAAMgU,gBAAgB/Q,EACtC,CACA6Q,yBAAyBR,GAErB,OAAOF,EADehc,KAAKoR,OAAOyL,wBAAwB7c,KAAKqH,YACb6U,EACtD,CACAG,iBAAiBH,GACb,MAAMrQ,EAAW7L,KAAK8c,+BAA+BZ,GACrD,OAAOlc,KAAK+c,UAAU/c,KAAK4I,MAAM+T,YAAY9Q,GAAWqQ,EAC5D,CACAO,qBAAqBP,GACjB,MAAMrQ,EAAW7L,KAAK8c,+BAA+BZ,GACrD,OAAOlc,KAAK4I,MAAMgU,gBAAgB/Q,GAAUhJ,KAAK4B,GAAYzE,KAAK+c,UAAUtY,EAASyX,IACzF,CACAY,+BAA+BZ,GAC3B,MAAMc,EAAmB,GAAGhd,KAAKqH,cAAc6U,IAC/C,OAAOF,EAA4Bhc,KAAKoR,OAAO6L,gBAAiBD,EACpE,CACAD,UAAUtY,EAASyX,GACf,GAAIzX,EAAS,CACT,MAAM,WAAE4C,GAAerH,KACjBuK,EAAgBvK,KAAKoR,OAAO6L,gBAC5BC,EAAuBld,KAAKoR,OAAOyL,wBAAwBxV,GACjErH,KAAKmd,MAAMrB,KAAKrX,EAAS,UAAUyX,IAAc,kBAAkB3R,MAAkBlD,KAAc6U,WAAoBgB,MAAyBhB,WACrI3R,iFACf,CACA,OAAO9F,CACX,CACI0Y,YACA,OAAOnd,KAAK4I,MAAMuU,KACtB,EAGJ,MAAMC,EACFxd,YAAYgJ,EAAOyU,GACfrd,KAAK4I,MAAQA,EACb5I,KAAKqd,kBAAoBA,CAC7B,CACI5Y,cACA,OAAOzE,KAAK4I,MAAMnE,OACtB,CACI4C,iBACA,OAAOrH,KAAK4I,MAAMvB,UACtB,CACI+J,aACA,OAAOpR,KAAK4I,MAAMwI,MACtB,CACApH,IAAIiM,GACA,OAAgC,MAAzBjW,KAAK4X,KAAK3B,EACrB,CACA2B,QAAQ0F,GACJ,OAAOA,EAAY3a,QAAO,CAAC8T,EAAQR,IAAeQ,GAAUzW,KAAKud,WAAWtH,SAAapQ,EAC7F,CACAyW,WAAWgB,GACP,OAAOA,EAAY3a,QAAO,CAAC8U,EAASxB,IAAe,IAAIwB,KAAYzX,KAAKwd,eAAevH,KAAc,GACzG,CACAyB,yBAAyBzB,GACrB,MAAM1L,EAAgBvK,KAAKoR,OAAOuG,wBAAwB3X,KAAKqH,WAAY4O,GAC3E,OAAOjW,KAAKqd,kBAAkB3W,aAAa6D,EAC/C,CACAgT,WAAWtH,GACP,MAAMpK,EAAW7L,KAAK0X,yBAAyBzB,GAC/C,GAAIpK,EACA,OAAO7L,KAAK2c,YAAY9Q,EAAUoK,EAC1C,CACAuH,eAAevH,GACX,MAAMpK,EAAW7L,KAAK0X,yBAAyBzB,GAC/C,OAAOpK,EAAW7L,KAAK4c,gBAAgB/Q,EAAUoK,GAAc,EACnE,CACA0G,YAAY9Q,EAAUoK,GAElB,OADiBjW,KAAK4I,MAAM6U,cAAc5R,GAC1B3D,QAAQzD,GAAYzE,KAAK0d,eAAejZ,EAASoH,EAAUoK,KAAa,EAC5F,CACA2G,gBAAgB/Q,EAAUoK,GAEtB,OADiBjW,KAAK4I,MAAM6U,cAAc5R,GAC1B3D,QAAQzD,GAAYzE,KAAK0d,eAAejZ,EAASoH,EAAUoK,IAC/E,CACAyH,eAAejZ,EAASoH,EAAUoK,GAC9B,MAAMe,EAAsBvS,EAAQiC,aAAa1G,KAAK4I,MAAMwI,OAAO4F,sBAAwB,GAC3F,OAAOvS,EAAQqF,QAAQ+B,IAAamL,EAAoBhH,MAAM,KAAK8B,SAASmE,EAChF,EAGJ,MAAM0H,EACF/d,YAAYwR,EAAQ3M,EAAS4C,EAAYuU,GACrC5b,KAAKuc,QAAU,IAAIN,EAAUjc,MAC7BA,KAAK4d,QAAU,IAAIzC,EAASnb,MAC5BA,KAAK8T,KAAO,IAAI0H,EAAQxb,MACxBA,KAAK6I,gBAAmBpE,GACbA,EAAQoZ,QAAQ7d,KAAK8d,sBAAwB9d,KAAKyE,QAE7DzE,KAAKoR,OAASA,EACdpR,KAAKyE,QAAUA,EACfzE,KAAKqH,WAAaA,EAClBrH,KAAKmd,MAAQ,IAAIxB,EAAMC,GACvB5b,KAAKyX,QAAU,IAAI2F,EAAUpd,KAAK+d,cAAetZ,EACrD,CACAkY,YAAY9Q,GACR,OAAO7L,KAAKyE,QAAQqF,QAAQ+B,GAAY7L,KAAKyE,QAAUzE,KAAKyd,cAAc5R,GAAU+L,KAAK5X,KAAK6I,gBAClG,CACA+T,gBAAgB/Q,GACZ,MAAO,IACC7L,KAAKyE,QAAQqF,QAAQ+B,GAAY,CAAC7L,KAAKyE,SAAW,MACnDzE,KAAKyd,cAAc5R,GAAU3D,OAAOlI,KAAK6I,iBAEpD,CACA4U,cAAc5R,GACV,OAAOrK,MAAMC,KAAKzB,KAAKyE,QAAQuH,iBAAiBH,GACpD,CACIiS,yBACA,OAAO9B,EAA4Bhc,KAAKoR,OAAO4F,oBAAqBhX,KAAKqH,WAC7E,CACI2W,sBACA,OAAOhe,KAAKyE,UAAYM,SAASkZ,eACrC,CACIF,oBACA,OAAO/d,KAAKge,gBACNhe,KACA,IAAI2d,EAAM3d,KAAKoR,OAAQrM,SAASkZ,gBAAiBje,KAAKqH,WAAYrH,KAAKmd,MAAMvB,OACvF,EAGJ,MAAMsC,EACFte,YAAY6E,EAAS2M,EAAQrI,GACzB/I,KAAKyE,QAAUA,EACfzE,KAAKoR,OAASA,EACdpR,KAAK+I,SAAWA,EAChB/I,KAAKiR,kBAAoB,IAAIf,EAAkBlQ,KAAKyE,QAASzE,KAAKgX,oBAAqBhX,MACvFA,KAAKme,4BAA8B,IAAI9N,QACvCrQ,KAAKoe,qBAAuB,IAAI/N,OACpC,CACAhO,QACIrC,KAAKiR,kBAAkB5O,OAC3B,CACAI,OACIzC,KAAKiR,kBAAkBxO,MAC3B,CACIuU,0BACA,OAAOhX,KAAKoR,OAAO4F,mBACvB,CACAlG,mBAAmB9B,GACf,MAAM,QAAEvK,EAASoL,QAASxI,GAAe2H,EACzC,OAAOhP,KAAKqe,kCAAkC5Z,EAAS4C,EAC3D,CACAgX,kCAAkC5Z,EAAS4C,GACvC,MAAMiX,EAAqBte,KAAKue,kCAAkC9Z,GAClE,IAAImE,EAAQ0V,EAAmB3a,IAAI0D,GAKnC,OAJKuB,IACDA,EAAQ5I,KAAK+I,SAASyV,mCAAmC/Z,EAAS4C,GAClEiX,EAAmBza,IAAIwD,EAAYuB,IAEhCA,CACX,CACA6H,oBAAoBhM,EAASL,GACzB,MAAMqa,GAAkBze,KAAKoe,qBAAqBza,IAAIS,IAAU,GAAK,EACrEpE,KAAKoe,qBAAqBva,IAAIO,EAAOqa,GACf,GAAlBA,GACAze,KAAK+I,SAAS2V,eAAeta,EAErC,CACAsM,sBAAsBjM,EAASL,GAC3B,MAAMqa,EAAiBze,KAAKoe,qBAAqBza,IAAIS,GACjDqa,IACAze,KAAKoe,qBAAqBva,IAAIO,EAAOqa,EAAiB,GAChC,GAAlBA,GACAze,KAAK+I,SAAS4V,kBAAkBva,GAG5C,CACAma,kCAAkC9Z,GAC9B,IAAI6Z,EAAqBte,KAAKme,4BAA4Bxa,IAAIc,GAK9D,OAJK6Z,IACDA,EAAqB,IAAInc,IACzBnC,KAAKme,4BAA4Bta,IAAIY,EAAS6Z,IAE3CA,CACX,EAGJ,MAAMM,EACFhf,YAAYqC,GACRjC,KAAKiC,YAAcA,EACnBjC,KAAK6e,cAAgB,IAAIX,EAAcle,KAAKyE,QAASzE,KAAKoR,OAAQpR,MAClEA,KAAKse,mBAAqB,IAAI/R,EAC9BvM,KAAK8e,oBAAsB,IAAI3c,GACnC,CACIsC,cACA,OAAOzE,KAAKiC,YAAYwC,OAC5B,CACI2M,aACA,OAAOpR,KAAKiC,YAAYmP,MAC5B,CACIwK,aACA,OAAO5b,KAAKiC,YAAY2Z,MAC5B,CACI5E,0BACA,OAAOhX,KAAKoR,OAAO4F,mBACvB,CACIgB,cACA,OAAOxW,MAAMC,KAAKzB,KAAK8e,oBAAoBpc,SAC/C,CACI2V,eACA,OAAOrY,KAAKgY,QAAQrV,QAAO,CAAC0V,EAAUJ,IAAWI,EAASvV,OAAOmV,EAAOI,WAAW,GACvF,CACAhW,QACIrC,KAAK6e,cAAcxc,OACvB,CACAI,OACIzC,KAAK6e,cAAcpc,MACvB,CACAsc,eAAe5J,GACXnV,KAAKgf,iBAAiB7J,EAAW9N,YACjC,MAAM4Q,EAAS,IAAI2C,EAAO5a,KAAKiC,YAAakT,GAC5CnV,KAAKif,cAAchH,GACnB,MAAMiH,EAAY/J,EAAW+C,sBAAsBgH,UAC/CA,GACAA,EAAU/d,KAAKgU,EAAW+C,sBAAuB/C,EAAW9N,WAAYrH,KAAKiC,YAErF,CACA+c,iBAAiB3X,GACb,MAAM4Q,EAASjY,KAAK8e,oBAAoBnb,IAAI0D,GACxC4Q,GACAjY,KAAKmf,iBAAiBlH,EAE9B,CACAmH,kCAAkC3a,EAAS4C,GACvC,MAAM4Q,EAASjY,KAAK8e,oBAAoBnb,IAAI0D,GAC5C,GAAI4Q,EACA,OAAOA,EAAOI,SAAST,MAAMzQ,GAAYA,EAAQ1C,SAAWA,GAEpE,CACA4a,6CAA6C5a,EAAS4C,GAClD,MAAMuB,EAAQ5I,KAAK6e,cAAcR,kCAAkC5Z,EAAS4C,GACxEuB,EACA5I,KAAK6e,cAAcpO,oBAAoB7H,EAAMnE,QAASmE,GAGtD0W,QAAQnc,MAAM,kDAAkDkE,kBAA4B5C,EAEpG,CACAvB,YAAYC,EAAOC,EAASC,GACxBrD,KAAKiC,YAAYiB,YAAYC,EAAOC,EAASC,EACjD,CACAmb,mCAAmC/Z,EAAS4C,GACxC,OAAO,IAAIsW,EAAM3d,KAAKoR,OAAQ3M,EAAS4C,EAAYrH,KAAK4b,OAC5D,CACA8C,eAAe9V,GACX5I,KAAKse,mBAAmB7d,IAAImI,EAAMvB,WAAYuB,GAC9C,MAAMqP,EAASjY,KAAK8e,oBAAoBnb,IAAIiF,EAAMvB,YAC9C4Q,GACAA,EAAO+C,uBAAuBpS,EAEtC,CACA+V,kBAAkB/V,GACd5I,KAAKse,mBAAmB3d,OAAOiI,EAAMvB,WAAYuB,GACjD,MAAMqP,EAASjY,KAAK8e,oBAAoBnb,IAAIiF,EAAMvB,YAC9C4Q,GACAA,EAAOiD,0BAA0BtS,EAEzC,CACAqW,cAAchH,GACVjY,KAAK8e,oBAAoBjb,IAAIoU,EAAO5Q,WAAY4Q,GACjCjY,KAAKse,mBAAmB1R,gBAAgBqL,EAAO5Q,YACvD9E,SAASqG,GAAUqP,EAAO+C,uBAAuBpS,IAC5D,CACAuW,iBAAiBlH,GACbjY,KAAK8e,oBAAoBne,OAAOsX,EAAO5Q,YACxBrH,KAAKse,mBAAmB1R,gBAAgBqL,EAAO5Q,YACvD9E,SAASqG,GAAUqP,EAAOiD,0BAA0BtS,IAC/D,EAGJ,MAAM2W,EAAgB,CAClBvI,oBAAqB,kBACrB9F,gBAAiB,cACjB+L,gBAAiB,cACjBJ,wBAA0BxV,GAAe,QAAQA,WACjDsQ,wBAAyB,CAACtQ,EAAYoP,IAAW,QAAQpP,KAAcoP,WACvElE,YAAavR,OAAOC,OAAOD,OAAOC,OAAO,CAAEue,MAAO,QAASC,IAAK,MAAOC,IAAK,SAAUC,MAAO,IAAKC,GAAI,UAAWC,KAAM,YAAale,KAAM,YAAaC,MAAO,aAAcke,KAAM,OAAQC,IAAK,MAAOC,QAAS,SAAUC,UAAW,YAAcC,EAAkB,6BAA6BlQ,MAAM,IAAInN,KAAKsd,GAAM,CAACA,EAAGA,OAAOD,EAAkB,aAAalQ,MAAM,IAAInN,KAAKud,GAAM,CAACA,EAAGA,QAE7X,SAASF,EAAkBG,GACvB,OAAOA,EAAM1d,QAAO,CAAC2d,GAAOC,EAAGC,KAAQxf,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGqf,GAAO,CAAE,CAACC,GAAIC,KAAO,CAAC,EACjG,CAEA,MAAMC,EACF7gB,YAAY6E,EAAUM,SAASkZ,gBAAiB7M,EAASmO,GACrDvf,KAAK4b,OAAS0D,QACdtf,KAAK0gB,OAAQ,EACb1gB,KAAKqI,iBAAmB,CAAChB,EAAYmR,EAAcnV,EAAS,CAAC,KACrDrD,KAAK0gB,OACL1gB,KAAK2gB,oBAAoBtZ,EAAYmR,EAAcnV,EACvD,EAEJrD,KAAKyE,QAAUA,EACfzE,KAAKoR,OAASA,EACdpR,KAAK0Y,WAAa,IAAI1W,EAAWhC,MACjCA,KAAK+X,OAAS,IAAI6G,EAAO5e,MACzBA,KAAK8H,wBAA0B9G,OAAOC,OAAO,CAAC,EAAGkD,EACrD,CACAyN,aAAanN,EAAS2M,GAClB,MAAMnP,EAAc,IAAIjC,KAAKyE,EAAS2M,GAEtC,OADAnP,EAAYI,QACLJ,CACX,CACA2e,oBAmDO,IAAIC,SAASC,IACW,WAAvB/b,SAASgc,WACThc,SAAS3E,iBAAiB,oBAAoB,IAAM0gB,MAGpDA,GACJ,IAvDA9gB,KAAKqI,iBAAiB,cAAe,YACrCrI,KAAK0Y,WAAWrW,QAChBrC,KAAK+X,OAAO1V,QACZrC,KAAKqI,iBAAiB,cAAe,QACzC,CACA5F,OACIzC,KAAKqI,iBAAiB,cAAe,YACrCrI,KAAK0Y,WAAWjW,OAChBzC,KAAK+X,OAAOtV,OACZzC,KAAKqI,iBAAiB,cAAe,OACzC,CACA2Y,SAAS3Z,EAAY6Q,GACjBlY,KAAKihB,KAAK,CAAE5Z,aAAY6Q,yBAC5B,CACAgJ,qBAAqBlZ,EAAME,GACvBlI,KAAK8H,wBAAwBE,GAAQE,CACzC,CACA+Y,KAAKE,KAASC,IACU5f,MAAM4T,QAAQ+L,GAAQA,EAAO,CAACA,KAASC,IAC/C7e,SAAS4S,IACbA,EAAW+C,sBAAsBmJ,YACjCrhB,KAAK+X,OAAOgH,eAAe5J,EAC/B,GAER,CACAmM,OAAOH,KAASC,IACQ5f,MAAM4T,QAAQ+L,GAAQA,EAAO,CAACA,KAASC,IAC/C7e,SAAS8E,GAAerH,KAAK+X,OAAOiH,iBAAiB3X,IACrE,CACIka,kBACA,OAAOvhB,KAAK+X,OAAOM,SAASxV,KAAKsE,GAAYA,EAAQS,YACzD,CACA0Q,qCAAqC7T,EAAS4C,GAC1C,MAAMF,EAAUnH,KAAK+X,OAAOqH,kCAAkC3a,EAAS4C,GACvE,OAAOF,EAAUA,EAAQS,WAAa,IAC1C,CACA1E,YAAYC,EAAOC,EAASC,GACxB,IAAIuR,EACJ5U,KAAK4b,OAAOzY,MAAM,iBAAkBC,EAASD,EAAOE,GAC1B,QAAzBuR,EAAK9P,OAAO0c,eAA4B,IAAP5M,GAAyBA,EAAGzT,KAAK2D,OAAQ1B,EAAS,GAAI,EAAG,EAAGD,EAClG,CACAwd,oBAAoBtZ,EAAYmR,EAAcnV,EAAS,CAAC,GACpDA,EAASrC,OAAOC,OAAO,CAAEgB,YAAajC,MAAQqD,GAC9CrD,KAAK4b,OAAO6F,eAAe,GAAGpa,MAAemR,KAC7CxY,KAAK4b,OAAO8F,IAAI,WAAY1gB,OAAOC,OAAO,CAAC,EAAGoC,IAC9CrD,KAAK4b,OAAO+F,UAChB,EAoDJ,SAASC,EAAoBha,EAAYnD,EAAS4C,GAC9C,OAAOO,EAAW3F,YAAYqW,qCAAqC7T,EAAS4C,EAChF,CACA,SAASwa,GAAqCja,EAAYnD,EAASwR,GAC/D,IAAI6L,EAAmBF,EAAoBha,EAAYnD,EAASwR,GAChE,OAAI6L,IAEJla,EAAW3F,YAAY8V,OAAOsH,6CAA6C5a,EAASwR,GACpF6L,EAAmBF,EAAoBha,EAAYnD,EAASwR,GACxD6L,QAAJ,EAEJ,CAyIA,SAASC,IAA0B/S,EAAOgT,GAAiBpa,GACvD,OAmFJ,SAAkDqa,GAC9C,MAAM,MAAEjT,EAAK,eAAEgT,GAAmBC,EAC5Bje,EAAM,GAAGyB,EAAUuJ,WACnB3E,EAhCV,SAAkC4X,GAC9B,MAAM,WAAEra,EAAU,MAAEoH,EAAK,eAAEgT,GAAmBC,EAExCC,EAvBV,SAA8BD,GAC1B,MAAM,WAAEra,EAAU,MAAEoH,EAAK,WAAEmT,GAAeF,EACpCG,EAAUzc,EAAYwc,EAAW9X,MACjCgY,EAAa1c,EAAYwc,EAAWG,SACpCC,EAAaH,GAAWC,EACxBG,EAAWJ,IAAYC,EACvBI,GAAeL,GAAWC,EAC1BH,EAAiBQ,GAAuBP,EAAW9X,MACnDsY,EAAuBC,GAAsBX,EAAQE,WAAWG,SACtE,GAAIE,EACA,OAAON,EACX,GAAIO,EACA,OAAOE,EACX,GAAIT,IAAmBS,EAAsB,CAEzC,MAAM,IAAI9b,MAAM,uDADKe,EAAa,GAAGA,KAAcoH,IAAUA,mCACwDkT,sCAAmDC,EAAWG,wBAAwBK,MAC/M,CACA,GAAIJ,EACA,OAAOL,CACf,CAI2BW,CADJ,CAAEjb,aAAYoH,QAAOmT,WAAYH,IAE9CW,EAAuBC,GAAsBZ,GAC7Cc,EAAmBJ,GAAuBV,GAC1C3X,EAAO6X,GAAkBS,GAAwBG,EACvD,GAAIzY,EACA,OAAOA,EAEX,MAAM,IAAIxD,MAAM,uBADKe,EAAa,GAAGA,KAAcoa,IAAmBhT,WACTA,WACjE,CAqBiB+T,CAAyBd,GACtC,MAAO,CACH5X,OACArG,MACAgE,KAAMhD,EAAShB,GACX2P,mBACA,OA1BZ,SAAmCqO,GAC/B,MAAMgB,EAAWN,GAAuBV,GACxC,GAAIgB,EACA,OAAOC,GAAoBD,GAC/B,MAAMX,EAAavc,EAAYkc,EAAgB,WACzCI,EAAUtc,EAAYkc,EAAgB,QACtCG,EAAaH,EACnB,GAAIK,EACA,OAAOF,EAAWG,QACtB,GAAIF,EAAS,CACT,MAAM,KAAE/X,GAAS8X,EACXe,EAAmBR,GAAuBrY,GAChD,GAAI6Y,EACA,OAAOD,GAAoBC,EACnC,CACA,OAAOlB,CACX,CAUmBmB,CAA0BnB,EACrC,EACIoB,4BACA,YAAiDvd,IAA1C+c,GAAsBZ,EACjC,EACA7N,OAAQkP,GAAQhZ,GAChBqJ,OAAQ4P,GAAQjZ,IAASiZ,GAAQhB,QAEzC,CApGWiB,CAAyC,CAC5C3b,aACAoH,QACAgT,kBAER,CACA,SAASU,GAAuBM,GAC5B,OAAQA,GACJ,KAAKxhB,MACD,MAAO,QACX,KAAKgiB,QACD,MAAO,UACX,KAAKC,OACD,MAAO,SACX,KAAKziB,OACD,MAAO,SACX,KAAK0iB,OACD,MAAO,SAEnB,CACA,SAASd,GAAsBjP,GAC3B,cAAeA,GACX,IAAK,UACD,MAAO,UACX,IAAK,SACD,MAAO,SACX,IAAK,SACD,MAAO,SAEf,OAAInS,MAAM4T,QAAQzB,GACP,QAC0C,oBAAjD3S,OAAOgF,UAAUkM,SAAS/Q,KAAKwS,GACxB,cADX,CAEJ,CAoEA,MAAMsP,GAAsB,CACpB5C,YACA,MAAO,EACX,EACAsD,SAAS,EACTC,OAAQ,EACJhe,aACA,MAAO,CAAC,CACZ,EACAie,OAAQ,IAENR,GAAU,CACZhD,MAAMjc,GACF,MAAMic,EAAQtZ,KAAKC,MAAM5C,GACzB,IAAK5C,MAAM4T,QAAQiL,GACf,MAAM,IAAIjM,UAAU,yDAAyDhQ,eAAmBwe,GAAsBvC,OAE1H,OAAOA,CACX,EACAsD,QAAQvf,KACc,KAATA,GAA+C,SAA/Bsf,OAAOtf,GAAOsB,eAE3Cke,OAAOxf,GACIqf,OAAOrf,EAAMa,QAAQ,KAAM,KAEtCW,OAAOxB,GACH,MAAMwB,EAASmB,KAAKC,MAAM5C,GAC1B,GAAe,OAAXwB,GAAoC,iBAAVA,GAAsBpE,MAAM4T,QAAQxP,GAC9D,MAAM,IAAIwO,UAAU,0DAA0DhQ,eAAmBwe,GAAsBhd,OAE3H,OAAOA,CACX,EACAie,OAAOzf,GACIA,GAGTkf,GAAU,CACZhB,QAOJ,SAAqBle,GACjB,MAAO,GAAGA,GACd,EARIic,MAAOyD,GACPle,OAAQke,IAEZ,SAASA,GAAU1f,GACf,OAAO2C,KAAKgd,UAAU3f,EAC1B,CAKA,MAAM4f,GACFpkB,YAAYuH,GACRnH,KAAKmH,QAAUA,CACnB,CACWka,wBACP,OAAO,CACX,CACAzP,iBAAiBqS,EAAaC,GAE9B,CACIjiB,kBACA,OAAOjC,KAAKmH,QAAQlF,WACxB,CACI2G,YACA,OAAO5I,KAAKmH,QAAQyB,KACxB,CACInE,cACA,OAAOzE,KAAK4I,MAAMnE,OACtB,CACI4C,iBACA,OAAOrH,KAAK4I,MAAMvB,UACtB,CACIkV,cACA,OAAOvc,KAAK4I,MAAM2T,OACtB,CACI9E,cACA,OAAOzX,KAAK4I,MAAM6O,OACtB,CACImG,cACA,OAAO5d,KAAK4I,MAAMgV,OACtB,CACI9J,WACA,OAAO9T,KAAK4I,MAAMkL,IACtB,CACAgF,aACA,CACA3Y,UACA,CACAE,aACA,CACA8jB,SAASrkB,GAAW,OAAE4E,EAAS1E,KAAKyE,QAAO,OAAEpB,EAAS,CAAC,EAAC,OAAE+gB,EAASpkB,KAAKqH,WAAU,QAAEgd,GAAU,EAAI,WAAEC,GAAa,GAAU,CAAC,GACxH,MACMzjB,EAAQ,IAAI0jB,YADLH,EAAS,GAAGA,KAAUtkB,IAAcA,EACb,CAAEuD,SAAQghB,UAASC,eAEvD,OADA5f,EAAO8f,cAAc3jB,GACdA,CACX,EAEJmjB,GAAWS,UAAY,CAhYvB,SAAiC7kB,GAE7B,OADgBmV,EAAiCnV,EAAa,WAC/C+C,QAAO,CAACwW,EAAYuL,KAC/B,OAAO1jB,OAAOC,OAAOkY,EAIlB,CACH,CAAC,GAF6BnV,EAHgC0gB,UAK7C,CACb/gB,MACI,MAAM,QAAEia,GAAY5d,KACpB,GAAI4d,EAAQ5T,IAAIhG,GACZ,OAAO4Z,EAAQja,IAAIK,GAElB,CACD,MAAMqK,EAAYuP,EAAQtC,iBAAiBtX,GAC3C,MAAM,IAAI6C,MAAM,sBAAsBwH,KAC1C,CACJ,GAEJ,CAAC,GAAGrK,YAAe,CACfL,MACI,OAAO3D,KAAK4d,QAAQvC,OAAOrX,EAC/B,GAEJ,CAAC,MAAMsB,EAAWtB,WAAc,CAC5BL,MACI,OAAO3D,KAAK4d,QAAQ5T,IAAIhG,EAC5B,KAtBZ,IAAsCA,CAHiD,GAChF,CAAC,EACR,EAuGA,SAAkCpE,GAE9B,OADgBmV,EAAiCnV,EAAa,WAC/C+C,QAAO,CAACwW,EAAYwL,KAC/B,OAAO3jB,OAAOC,OAAOkY,EAIlB,CACH,CAAC,GAF8BnR,EAHgC2c,WAK5C,CACfhhB,MACI,MAAMe,EAAS1E,KAAKuc,QAAQ3E,KAAK5P,GACjC,GAAItD,EACA,OAAOA,EAGP,MAAM,IAAImC,MAAM,2BAA2BmB,WAAchI,KAAKqH,yBAEtE,GAEJ,CAAC,GAAGW,YAAgB,CAChBrE,MACI,OAAO3D,KAAKuc,QAAQD,QAAQtU,EAChC,GAEJ,CAAC,MAAM1C,EAAW0C,YAAgB,CAC9BrE,MACI,OAAO3D,KAAKuc,QAAQvS,IAAIhC,EAC5B,KArBZ,IAAuCA,CAHkD,GAClF,CAAC,EACR,EA2BA,SAAiCpI,GAC7B,MAAMglB,EAAuBtP,EAAiC1V,EAAa,UACrEilB,EAAwB,CAC1BtR,mBAAoB,CAChB5P,MACI,OAAOihB,EAAqBjiB,QAAO,CAACmiB,EAAQC,KACxC,MAAMC,EAAkBjD,GAAyBgD,EAAqB/kB,KAAKqH,YACrEkD,EAAgBvK,KAAK8T,KAAKyH,uBAAuByJ,EAAgBhhB,KACvE,OAAOhD,OAAOC,OAAO6jB,EAAQ,CAAE,CAACva,GAAgBya,GAAkB,GACnE,CAAC,EACR,IAGR,OAAOJ,EAAqBjiB,QAAO,CAACwW,EAAY4L,IACrC/jB,OAAOC,OAAOkY,EAG7B,SAA0C4L,EAAqBnd,GAC3D,MAAMuN,EAAa4M,GAAyBgD,EAAqBnd,IAC3D,IAAE5D,EAAG,KAAEgE,EAAMmM,OAAQ8Q,EAAMvR,OAAQwR,GAAU/P,EACnD,MAAO,CACH,CAACnN,GAAO,CACJrE,MACI,MAAMS,EAAQpE,KAAK8T,KAAKnQ,IAAIK,GAC5B,OAAc,OAAVI,EACO6gB,EAAK7gB,GAGL+Q,EAAWxB,YAE1B,EACA9P,IAAIO,QACcyB,IAAVzB,EACApE,KAAK8T,KAAKnT,OAAOqD,GAGjBhE,KAAK8T,KAAKjQ,IAAIG,EAAKkhB,EAAM9gB,GAEjC,GAEJ,CAAC,MAAMkB,EAAW0C,MAAU,CACxBrE,MACI,OAAO3D,KAAK8T,KAAK9J,IAAIhG,IAAQmR,EAAWiO,qBAC5C,GAGZ,CAhCyC+B,CAAiCJ,KACnEF,EACP,EA3HA,SAAkCjlB,GAE9B,OADgBmV,EAAiCnV,EAAa,WAC/C+C,QAAO,CAACwW,EAAYiM,IACxBpkB,OAAOC,OAAOkY,EAe7B,SAAuCnR,GACnC,MAAMqd,EAAgBhgB,EAAkB2C,GACxC,MAAO,CACH,CAAC,GAAGqd,WAAwB,CACxB1hB,MACI,MAAM2hB,EAAgBtlB,KAAKyX,QAAQG,KAAK5P,GAClC6D,EAAW7L,KAAKyX,QAAQC,yBAAyB1P,GACvD,GAAIsd,EAAe,CACf,MAAMxD,EAAmBD,GAAqC7hB,KAAMslB,EAAetd,GACnF,GAAI8Z,EACA,OAAOA,EACX,MAAM,IAAIjb,MAAM,gEAAgEmB,oCAAuChI,KAAKqH,cAChI,CACA,MAAM,IAAIR,MAAM,2BAA2BmB,2BAA8BhI,KAAKqH,iFAAiFwE,MACnK,GAEJ,CAAC,GAAGwZ,YAAyB,CACzB1hB,MACI,MAAM8T,EAAUzX,KAAKyX,QAAQ6E,QAAQtU,GACrC,OAAIyP,EAAQnI,OAAS,EACVmI,EACF5U,KAAKyiB,IACN,MAAMxD,EAAmBD,GAAqC7hB,KAAMslB,EAAetd,GACnF,GAAI8Z,EACA,OAAOA,EACXxC,QAAQxD,KAAK,gEAAgE9T,oCAAuChI,KAAKqH,cAAeie,EAAc,IAErJpd,QAAQN,GAAeA,IAEzB,EACX,GAEJ,CAAC,GAAGyd,kBAA+B,CAC/B1hB,MACI,MAAM2hB,EAAgBtlB,KAAKyX,QAAQG,KAAK5P,GAClC6D,EAAW7L,KAAKyX,QAAQC,yBAAyB1P,GACvD,GAAIsd,EACA,OAAOA,EAGP,MAAM,IAAIze,MAAM,2BAA2BmB,2BAA8BhI,KAAKqH,iFAAiFwE,MAEvK,GAEJ,CAAC,GAAGwZ,mBAAgC,CAChC1hB,MACI,OAAO3D,KAAKyX,QAAQ6E,QAAQtU,EAChC,GAEJ,CAAC,MAAM1C,EAAW+f,YAAyB,CACvC1hB,MACI,OAAO3D,KAAKyX,QAAQzN,IAAIhC,EAC5B,GAGZ,CAtEyCud,CAA8BH,KAChE,CAAC,EACR,GAgWApB,GAAWzH,QAAU,GACrByH,GAAWvM,QAAU,GACrBuM,GAAWthB,OAAS,CAAC,C,uBChgFrB,SAMA,YAGE,YACE,WACE1C,KAAKwlB,MAAQ,CACXC,kBAAmB,yGACnBC,oBAAqB,CACnB7Z,SAAU,oEACV8Z,QAAS,eAEXC,oBAAqB,iEACrBC,mBAAoB,8BACpBC,uBAAwB,ySACxBC,oBAAqB,sMACrBC,mBAAoB,4MACpBC,kBAAmB,yCACnBC,oBAAqB,wCACrBC,sBAAuB,4EAG1B,GAAEhlB,KAAKnB,KACT,GAAEmB,KArBWnB,MAuBd,IAAIwlB,EAvBUxlB,KAuBMwlB,OAEpB,YACE,WACE,IAAIY,EAEJA,EAAQ,KAERZ,EAAMa,aAAe,WACnB,IAAIC,EACJ,OAAOF,EAAkE,OAAzDE,EAAMvhB,SAASwhB,cAAc,yBAAmCD,EAAIzW,aAAU,CAChG,EAEA2V,EAAMgB,SAAW,WACf,OAAgB,MAATJ,EAAgBA,EAAQZ,EAAMa,cACvC,CAED,GAAEllB,KAAKnB,MACR,WACE,IAAaymB,EAEbA,EAAI/d,QAAQ1C,UAAU8D,SAAWpB,QAAQ1C,UAAU0gB,iBAAmBhe,QAAQ1C,UAAU2gB,oBAAsBje,QAAQ1C,UAAU4gB,mBAAqBle,QAAQ1C,UAAU6gB,kBAAoBne,QAAQ1C,UAAU8gB,sBAE7MtB,EAAM1b,QAAU,SAASrF,EAASoH,GAChC,OAAwB,MAApBA,EAAS8Z,QACJc,EAAEtlB,KAAKsD,EAASoH,EAASA,YAAc4a,EAAEtlB,KAAKsD,EAASoH,EAAS8Z,SAEhEc,EAAEtlB,KAAKsD,EAASoH,EAE3B,EAIA2Z,EAAMuB,QAAU,SAAStiB,EAAST,GAChC,IAAIsiB,EACJ,OAAmC,OAA3BA,EAAM7hB,EAAe,UAAa6hB,EAAItiB,QAAO,CACvD,EAEAwhB,EAAMwB,QAAU,SAASviB,EAAST,EAAKI,GAIrC,OAHwB,MAApBK,EAAe,WACjBA,EAAe,SAAI,CAAC,GAEfA,EAAe,SAAET,GAAOI,CACjC,EAEAohB,EAAMyB,EAAI,SAASpb,GACjB,OAAOrK,MAAMwE,UAAUR,MAAMrE,KAAK4D,SAASiH,iBAAiBH,GAC9D,CAED,EAAE1K,KAAKnB,MACR,WACE,IAAIinB,EAAGC,EAAWC,EAElBF,EAAIzB,EAAMyB,EAEVE,EAAY3B,EAAM2B,UAAY,WAC5B,IAAIzU,EAEJ,OADAA,EAAO3N,SAASwhB,cAAc,2BACf7T,EAAK7C,OACtB,EAEAqX,EAAY1B,EAAM0B,UAAY,WAC5B,IAAIxU,EAEJ,OADAA,EAAO3N,SAASwhB,cAAc,2BACf7T,EAAK7C,OACtB,EAEA2V,EAAM4B,eAAiB,SAASC,GAC9B,IAAIrY,EAEJ,GAAa,OADbA,EAAQmY,KAEN,OAAOE,EAAIC,iBAAiB,eAAgBtY,EAEhD,EAEAwW,EAAM+B,kBAAoB,WACxB,IAAIC,EAAOxY,EAGX,GAFAA,EAAQmY,IACRK,EAAQN,IACM,MAATlY,GAA4B,MAATwY,EACtB,OAAOP,EAAE,oBAAsBO,EAAQ,MAAMjlB,SAAQ,SAASiE,GAC5D,OAAOA,EAAMpC,MAAQ4K,CACvB,GAEJ,CAED,EAAE7N,KAAKnB,MACR,WACE,IAAIukB,EAAakD,EAAM3d,EAASvF,EAEhCuF,EAAU0b,EAAM1b,QAIW,oBAF3Bya,EAAczf,OAAOyf,gBAGnBA,EAAc,SAAS1jB,EAAOsH,GAC5B,IAAIuf,EAGJ,OAFAA,EAAM3iB,SAAS4iB,YAAY,gBACvBC,gBAAgB/mB,EAAOsH,EAAOkc,QAASlc,EAAOmc,WAAYnc,EAAO9E,QAC9DqkB,CACT,GACY1hB,UAAYlB,OAAO+iB,MAAM7hB,UACrCzB,EAAiBggB,EAAYve,UAAUzB,eACvCggB,EAAYve,UAAUzB,eAAiB,WACrC,IAAIugB,EASJ,OARAA,EAASvgB,EAAepD,KAAKnB,MACzBA,KAAKskB,aAAetkB,KAAK8nB,kBAC3B9mB,OAAO+mB,eAAe/nB,KAAM,mBAAoB,CAC9C2D,IAAK,WACH,OAAO,CACT,IAGGmhB,CACT,GAGF2C,EAAOjC,EAAMiC,KAAO,SAASO,EAAKhgB,EAAM8L,GACtC,IAAIjT,EAOJ,OANAA,EAAQ,IAAI0jB,EAAYvc,EAAM,CAC5Bqc,SAAS,EACTC,YAAY,EACZjhB,OAAQyQ,IAEVkU,EAAIxD,cAAc3jB,IACVA,EAAMinB,gBAChB,EAEAtC,EAAMyC,eAAiB,SAASxhB,GAI9B,OAHAghB,EAAKhhB,EAAE/B,OAAQ,yBACf+B,EAAElC,iBACFkC,EAAEpC,kBACKoC,EAAE1F,0BACX,EAEAykB,EAAMzc,SAAW,SAAStE,EAASoH,EAAUqc,EAAWC,GACtD,OAAO1jB,EAAQrE,iBAAiB8nB,GAAW,SAASzhB,GAClD,IAAI/B,EAEJ,IADAA,EAAS+B,EAAE/B,OACAA,aAAkBgE,UAAYoB,EAAQpF,EAAQmH,IACvDnH,EAASA,EAAO0jB,WAElB,GAAI1jB,aAAkBgE,UAAuC,IAA5Byf,EAAQhnB,KAAKuD,EAAQ+B,GAEpD,OADAA,EAAElC,iBACKkC,EAAEpC,iBAEb,GACF,CAED,EAAElD,KAAKnB,MACR,WACE,IAAIqoB,EAAejB,EAAgBkB,EAAW9B,EAAgB+B,EAAgBC,EAE9EhC,EAAWhB,EAAMgB,SAAUY,EAAiB5B,EAAM4B,eAAuB5B,EAAMiC,KAE/EY,EAAgB,CACd,IAAK,MACLI,KAAM,aACNC,KAAM,YACNC,IAAK,4BACLC,KAAM,oCACNC,OAAQ,6FAGVrD,EAAMsD,KAAO,SAAS/W,GACpB,IAAIsV,EAgBJ,OAfAtV,EAAUwW,EAAexW,GACzBsV,EAAMiB,EAAUvW,GAAS,WACvB,IAAIuU,EAAKyC,EAWT,OAVAA,EAAWP,EAAwC,OAAvBlC,EAAMe,EAAI0B,UAAoBzC,EAAMe,EAAI2B,aAAc3B,EAAI4B,kBAAkB,iBACnE,IAAjC1Z,KAAK2Z,MAAM7B,EAAI8B,OAAS,KACK,oBAApBpX,EAAQqX,SACjBrX,EAAQqX,QAAQL,EAAU1B,EAAIgC,WAAYhC,GAGf,oBAAlBtV,EAAQ5O,OACjB4O,EAAQ5O,MAAM4lB,EAAU1B,EAAIgC,WAAYhC,GAGT,oBAArBtV,EAAQuX,SAA0BvX,EAAQuX,SAASjC,EAAKA,EAAIgC,iBAAc,CAC1F,MAC2B,MAAtBtX,EAAQwX,aAAwBxX,EAAQwX,WAAWlC,EAAKtV,MAGzDsV,EAAItG,aAAeyI,eAAeC,OAC7BpC,EAAIqC,KAAK3X,EAAQ+B,WAD1B,EAGF,EAEAyU,EAAiB,SAASxW,GAiBxB,OAhBAA,EAAQ4X,IAAM5X,EAAQ4X,KAAOC,SAASC,KACtC9X,EAAQ1H,KAAO0H,EAAQ1H,KAAKjF,cACP,QAAjB2M,EAAQ1H,MAAkB0H,EAAQ+B,OAChC/B,EAAQ4X,IAAIG,QAAQ,KAAO,EAC7B/X,EAAQ4X,KAAO,IAAM5X,EAAQ+B,KAE7B/B,EAAQ4X,KAAO,IAAM5X,EAAQ+B,MAGM,MAAnCuU,EAActW,EAAQgY,YACxBhY,EAAQgY,SAAW,KAErBhY,EAAQiY,OAAS3B,EAActW,EAAQgY,UACd,MAArBhY,EAAQgY,WACVhY,EAAQiY,QAAU,iBAEbjY,CACT,EAEAuW,EAAY,SAASvW,EAASkY,GAC5B,IAAI5C,EAiBJ,OAhBAA,EAAM,IAAImC,gBACNU,KAAKnY,EAAQ1H,KAAM0H,EAAQ4X,KAAK,GACpCtC,EAAIC,iBAAiB,SAAUvV,EAAQiY,QACX,kBAAjBjY,EAAQ+B,MACjBuT,EAAIC,iBAAiB,eAAgB,oDAElCvV,EAAQoY,cACX9C,EAAIC,iBAAiB,mBAAoB,kBACzCF,EAAeC,IAEjBA,EAAI+C,kBAAoBrY,EAAQqY,gBAChC/C,EAAIgD,mBAAqB,WACvB,GAAIhD,EAAItG,aAAeyI,eAAec,KACpC,OAAOL,EAAK5C,EAEhB,EACOA,CACT,EAEAmB,EAAkB,SAASO,EAAU1e,GACnC,IAAIkgB,EAAQ1B,EACZ,GAAwB,kBAAbE,GAAyC,kBAAT1e,EACzC,GAAIA,EAAK0B,MAAM,YACb,IACEgd,EAAWhiB,KAAKC,MAAM+hB,EACP,CAAf,MAAO5lB,GAAQ,MACZ,GAAIkH,EAAK0B,MAAM,4BACpB8c,EAAS9jB,SAASylB,cAAc,WACzB/O,aAAa,QAAS+K,KAC7BqC,EAAOJ,KAAOM,EACdhkB,SAASoc,KAAKsJ,YAAY5B,GAAQT,WAAWsC,YAAY7B,QACpD,GAAIxe,EAAK0B,MAAM,sBAAuB,CAC3Cwe,EAAS,IAAII,UACbtgB,EAAOA,EAAKpF,QAAQ,MAAO,IAC3B,IACE8jB,EAAWwB,EAAOK,gBAAgB7B,EAAU1e,EAC7B,CAAf,MAAOlH,GAAQ,CACnB,CAEF,OAAO4lB,CACT,EAEAvD,EAAMqE,KAAO,SAASplB,GACpB,OAAOA,EAAQolB,IACjB,EAEArE,EAAMqF,cAAgB,SAASlB,GAC7B,IAAOmB,EAAcC,GACrBD,EAAe/lB,SAASylB,cAAc,MACzBX,KAAOD,SAASC,KAC7BkB,EAAYhmB,SAASylB,cAAc,KACnC,IAEE,OADAO,EAAUlB,KAAOF,MACLoB,EAAUC,UAAmC,MAAvBD,EAAUC,YAAsBD,EAAUE,MAAUH,EAAaE,SAAW,KAAOF,EAAaG,OAASF,EAAUC,SAAW,KAAOD,EAAUE,KAInL,CAHE,MAAO9nB,GAEP,OADIA,GACG,CACT,CACF,CAED,EAAEhC,KAAKnB,MACR,WACE,IAAI8J,EAASohB,EAEbphB,EAAU0b,EAAM1b,QAEhBohB,EAAU,SAASzkB,GACjB,OAAOjF,MAAMwE,UAAUR,MAAMrE,KAAKsF,EACpC,EAEA+e,EAAM2F,iBAAmB,SAAS1mB,EAAS2mB,GACzC,IAAIC,EAAQljB,EAgCZ,OA/BAkjB,EAAS,CAAC5mB,GACNqF,EAAQrF,EAAS,UACnB4mB,EAASH,EAAQzmB,EAAQ2E,WAE3BjB,EAAS,GACTkjB,EAAO9oB,SAAQ,SAASiE,GACtB,GAAKA,EAAMwB,OAAQxB,EAAM8kB,WAGrBxhB,EAAQtD,EAAO,wBAGnB,OAAIsD,EAAQtD,EAAO,UACV0kB,EAAQ1kB,EAAMuL,SAASxP,SAAQ,SAASgpB,GAC7C,GAAIA,EAAOC,SACT,OAAOrjB,EAAOlE,KAAK,CACjB+D,KAAMxB,EAAMwB,KACZ5D,MAAOmnB,EAAOnnB,OAGpB,IACSoC,EAAMilB,UAAoE,IAAzD,CAAC,QAAS,WAAY,UAAU3B,QAAQtjB,EAAM6D,MACjElC,EAAOlE,KAAK,CACjB+D,KAAMxB,EAAMwB,KACZ5D,MAAOoC,EAAMpC,aAHV,CAMT,IACIgnB,GACFjjB,EAAOlE,KAAKmnB,GAEPjjB,EAAOtF,KAAI,SAAS2kB,GACzB,OAAkB,MAAdA,EAAMxf,KACA0jB,mBAAmBlE,EAAMxf,MAAS,IAAO0jB,mBAAmBlE,EAAMpjB,OAEnEojB,CAEX,IAAGtjB,KAAK,IACV,EAEAshB,EAAMmG,aAAe,SAASrlB,EAAMuF,GAClC,OAAI/B,EAAQxD,EAAM,QACT4kB,EAAQ5kB,EAAK8C,UAAUlB,QAAO,SAAS0jB,GAC5C,OAAO9hB,EAAQ8hB,EAAI/f,EACrB,IAEOqf,EAAQ5kB,EAAK0F,iBAAiBH,GAEzC,CAED,EAAE1K,KAAKnB,MACR,WACE,IAAI6rB,EAAapE,EAAMQ,EAEvBR,EAAOjC,EAAMiC,KAAMQ,EAAiBzC,EAAMyC,eAE1CzC,EAAMsG,cAAgB,SAASrlB,GAC7B,IAAKolB,EAAY7rB,MACf,OAAOioB,EAAexhB,EAE1B,EAEA+e,EAAMuG,QAAU,SAAS3oB,EAASqB,GAChC,OAAOsnB,QAAQ3oB,EACjB,EAEAyoB,EAAc,SAASpnB,GACrB,IAAIunB,EAAQpiB,EAAUxG,EAEtB,KADAA,EAAUqB,EAAQiC,aAAa,iBAE7B,OAAO,EAGT,GADAslB,GAAS,EACLvE,EAAKhjB,EAAS,WAAY,CAC5B,IACEunB,EAASxG,EAAMuG,QAAQ3oB,EAASqB,EACjB,CAAf,MAAOtB,GAAQ,CACjByG,EAAW6d,EAAKhjB,EAAS,mBAAoB,CAACunB,GAChD,CACA,OAAOA,GAAUpiB,CACnB,CAED,EAAEzI,KAAKnB,MACR,WACE,IAAIisB,EAAoBC,EAAqBC,EAAoBC,EAAmBC,EAAoBC,EAAmBX,EAAc5E,EAASwF,EAAeziB,EAASkd,EAASiB,EAEnLne,EAAU0b,EAAM1b,QAASid,EAAUvB,EAAMuB,QAASC,EAAUxB,EAAMwB,QAASiB,EAAiBzC,EAAMyC,eAAgB0D,EAAenG,EAAMmG,aAEvInG,EAAMgH,sBAAwB,SAAS/lB,GAGrC,GADUzG,UACEsrB,SACV,OAAOrD,EAAexhB,EAE1B,EAEA+e,EAAMiH,cAAgB,SAAShmB,GAC7B,IAAIhC,EACJ,GAAIgC,aAAaohB,MAAO,CACtB,GAAI0E,EAAc9lB,GAChB,OAEFhC,EAAUgC,EAAE/B,MACd,MACED,EAAUgC,EAEZ,OAAIqD,EAAQrF,EAAS+gB,EAAMU,qBAClBoG,EAAkB7nB,GAChBqF,EAAQrF,EAAS+gB,EAAMW,wBAA0Brc,EAAQrF,EAAS+gB,EAAMQ,oBAC1EoG,EAAkB3nB,GAChBqF,EAAQrF,EAAS+gB,EAAMK,oBACzBwG,EAAmB5nB,QADrB,CAGT,EAEA+gB,EAAMkH,eAAiB,SAASjmB,GAC9B,IAAIhC,EAEJ,OADAA,EAAUgC,aAAaohB,MAAQphB,EAAE/B,OAAS+B,EACtCqD,EAAQrF,EAAS+gB,EAAMU,qBAClBiG,EAAmB1nB,GACjBqF,EAAQrF,EAAS+gB,EAAMW,wBAA0Brc,EAAQrF,EAAS+gB,EAAMO,qBAC1EkG,EAAmBxnB,GACjBqF,EAAQrF,EAAS+gB,EAAMK,oBACzBqG,EAAoBznB,QADtB,CAGT,EAEA0nB,EAAqB,SAAS1nB,GAC5B,IAAIkoB,EACJ,IAAI5F,EAAQtiB,EAAS,gBASrB,OALmB,OADnBkoB,EAAcloB,EAAQiC,aAAa,wBAEjCsgB,EAAQviB,EAAS,kBAAmBA,EAAQmoB,WAC5CnoB,EAAQmoB,UAAYD,GAEtBloB,EAAQrE,iBAAiB,QAAS6nB,GAC3BjB,EAAQviB,EAAS,gBAAgB,EAC1C,EAEA6nB,EAAoB,SAAS7nB,GAC3B,IAAIooB,EAOJ,OALoB,OADpBA,EAAe9F,EAAQtiB,EAAS,sBAE9BA,EAAQmoB,UAAYC,EACpB7F,EAAQviB,EAAS,kBAAmB,OAEtCA,EAAQnE,oBAAoB,QAAS2nB,GAC9BjB,EAAQviB,EAAS,eAAgB,KAC1C,EAEAynB,EAAsB,SAAS5lB,GAC7B,OAAOqlB,EAAarlB,EAAMkf,EAAMO,qBAAqBxjB,QAAQ0pB,EAC/D,EAEAA,EAAqB,SAASxnB,GAC5B,IAAIkoB,EACJ,IAAI5F,EAAQtiB,EAAS,gBAcrB,OAVmB,OADnBkoB,EAAcloB,EAAQiC,aAAa,wBAE7BoD,EAAQrF,EAAS,WACnBuiB,EAAQviB,EAAS,kBAAmBA,EAAQmoB,WAC5CnoB,EAAQmoB,UAAYD,IAEpB3F,EAAQviB,EAAS,kBAAmBA,EAAQL,OAC5CK,EAAQL,MAAQuoB,IAGpBloB,EAAQ6mB,UAAW,EACZtE,EAAQviB,EAAS,gBAAgB,EAC1C,EAEA4nB,EAAqB,SAAS/lB,GAC5B,OAAOqlB,EAAarlB,EAAMkf,EAAMQ,oBAAoBzjB,QAAQ6pB,EAC9D,EAEAA,EAAoB,SAAS3nB,GAC3B,IAAIooB,EAWJ,OAToB,OADpBA,EAAe9F,EAAQtiB,EAAS,sBAE1BqF,EAAQrF,EAAS,UACnBA,EAAQmoB,UAAYC,EAEpBpoB,EAAQL,MAAQyoB,EAElB7F,EAAQviB,EAAS,kBAAmB,OAEtCA,EAAQ6mB,UAAW,EACZtE,EAAQviB,EAAS,eAAgB,KAC1C,EAEA8nB,EAAgB,SAAS1rB,GACvB,IAAIylB,EAAKe,EAET,OAA2E,OAA5D,OADfA,EAA8B,OAAvBf,EAAMzlB,EAAMwC,QAAkBijB,EAAI,QAAK,GACxBe,EAAI4B,kBAAkB,uBAAoB,EAClE,CAED,EAAE9nB,KAAKnB,MACR,WACE,IAAIioB,EAEJA,EAAiBzC,EAAMyC,eAEvBzC,EAAMsH,aAAe,SAASrmB,GAC5B,IAAIygB,EAAWC,EAAW7gB,EAAMymB,EAAalD,EAAMmD,EAAMrlB,EAGzD,GADAA,GADAqlB,EAAOhtB,MACO0G,aAAa,eAoB3B,OAhBAmjB,EAAOrE,EAAMqE,KAAKmD,GAClB7F,EAAY3B,EAAM2B,YAClBD,EAAY1B,EAAM0B,YAClB5gB,EAAOvB,SAASylB,cAAc,QAC9BuC,EAAc,gCAAkCplB,EAAS,qBACvC,MAAbuf,GAAoC,MAAbC,GAAuB3B,EAAMqF,cAAchB,KACrEkD,GAAe,gBAAkB7F,EAAY,YAAcC,EAAY,sBAEzE4F,GAAe,0BACfzmB,EAAKqB,OAAS,OACdrB,EAAKc,OAASyiB,EACdvjB,EAAK5B,OAASsoB,EAAKtoB,OACnB4B,EAAKsmB,UAAYG,EACjBzmB,EAAK2mB,MAAMC,QAAU,OACrBnoB,SAASwS,KAAKkT,YAAYnkB,GAC1BA,EAAKigB,cAAc,mBAAmB4G,QAC/BlF,EAAexhB,EACxB,CAED,EAAEtF,KAAKnB,MACR,WACE,IAAI8oB,EAAMrB,EAAMV,EAAS8D,EAAeuC,EAAUtjB,EAASqhB,EAAkBnE,EAASiB,EACpFziB,EAAQ,GAAGA,MAEbsE,EAAU0b,EAAM1b,QAASid,EAAUvB,EAAMuB,QAASC,EAAUxB,EAAMwB,QAASS,EAAOjC,EAAMiC,KAAMQ,EAAiBzC,EAAMyC,eAAgBa,EAAOtD,EAAMsD,KAAM+B,EAAgBrF,EAAMqF,cAAeM,EAAmB3F,EAAM2F,iBAEtNiC,EAAW,SAAS3oB,GAClB,IAAIL,EAEJ,OAAiB,OADjBA,EAAQK,EAAQiC,aAAa,iBACO,UAAVtC,CAC5B,EAEAohB,EAAM6H,aAAe,SAAS5mB,GAC5B,IAAIJ,EAAQyN,EAAMiW,EAAUtlB,EAASkD,EAAQgiB,EAAKS,EAElD,OAAKgD,EADL3oB,EAAUzE,QAILynB,EAAKhjB,EAAS,gBAInB2lB,EAAkB3lB,EAAQiC,aAAa,yBACvCqjB,EAAWtlB,EAAQiC,aAAa,cAAgB,SAC5CoD,EAAQrF,EAAS+gB,EAAMK,qBACzBxf,EAAS0gB,EAAQtiB,EAAS,qBAC1BkD,EAASof,EAAQtiB,EAAS,iCAAmCA,EAAQkD,OACrEgiB,EAAM5C,EAAQtiB,EAAS,iCAAmCA,EAAQiC,aAAa,WAAakjB,SAASC,KACxE,QAAzBliB,EAAOvC,gBACTukB,EAAMA,EAAI1kB,QAAQ,QAAS,KAEL,wBAApBR,EAAQ6oB,SACVxZ,EAAO,IAAIyZ,SAAS9oB,GACN,MAAV4B,GACFyN,EAAK0Z,OAAOnnB,EAAO2B,KAAM3B,EAAOjC,QAGlC0P,EAAOqX,EAAiB1mB,EAAS4B,GAEnC2gB,EAAQviB,EAAS,oBAAqB,MACtCuiB,EAAQviB,EAAS,+BAAgC,MACjDuiB,EAAQviB,EAAS,+BAAgC,OACxCqF,EAAQrF,EAAS+gB,EAAME,sBAAwB5b,EAAQrF,EAAS+gB,EAAMI,sBAC/Eje,EAASlD,EAAQiC,aAAa,eAC9BijB,EAAMllB,EAAQiC,aAAa,YAC3BoN,EAAOqX,EAAiB1mB,EAASA,EAAQiC,aAAa,kBAEtDiB,EAASlD,EAAQiC,aAAa,eAC9BijB,EAAMnE,EAAMqE,KAAKplB,GACjBqP,EAAOrP,EAAQiC,aAAa,gBAE9BoiB,EAAK,CACHze,KAAM1C,GAAU,MAChBgiB,IAAKA,EACL7V,KAAMA,EACNiW,SAAUA,EACVR,WAAY,SAASlC,EAAKtV,GACxB,OAAI0V,EAAKhjB,EAAS,kBAAmB,CAAC4iB,EAAKtV,IAClC0V,EAAKhjB,EAAS,YAAa,CAAC4iB,KAEnCI,EAAKhjB,EAAS,iBACP,EAEX,EACA2kB,QAAS,WACP,IAAInQ,EAEJ,OADAA,EAAO,GAAKsB,UAAUjL,OAAS9J,EAAMrE,KAAKoZ,UAAW,GAAK,GACnDkN,EAAKhjB,EAAS,eAAgBwU,EACvC,EACA9V,MAAO,WACL,IAAI8V,EAEJ,OADAA,EAAO,GAAKsB,UAAUjL,OAAS9J,EAAMrE,KAAKoZ,UAAW,GAAK,GACnDkN,EAAKhjB,EAAS,aAAcwU,EACrC,EACAqQ,SAAU,WACR,IAAIrQ,EAEJ,OADAA,EAAO,GAAKsB,UAAUjL,OAAS9J,EAAMrE,KAAKoZ,UAAW,GAAK,GACnDkN,EAAKhjB,EAAS,gBAAiBwU,EACxC,EACAkR,YAAaU,EAAclB,GAC3BS,gBAAqC,MAAnBA,GAAgD,UAApBA,IAEzCnC,EAAexhB,KA/DpBghB,EAAKhjB,EAAS,iBACP,GA+DX,EAEA+gB,EAAMiI,sBAAwB,SAAShnB,GACrC,IAAIJ,EAAQC,EAGZ,GADAA,GADAD,EAASrG,MACKsG,KAYd,OARID,EAAO2B,MACTgf,EAAQ1gB,EAAM,oBAAqB,CACjC0B,KAAM3B,EAAO2B,KACb5D,MAAOiC,EAAOjC,QAGlB4iB,EAAQ1gB,EAAM,4BAA6BD,EAAOqnB,gBAClD1G,EAAQ1gB,EAAM,+BAAgCD,EAAOK,aAAa,eAC3DsgB,EAAQ1gB,EAAM,+BAAgCD,EAAOK,aAAa,cAC3E,EAEA8e,EAAMmI,0BAA4B,SAASlnB,GACzC,IAAIqN,EAAM8Z,EAAyCjmB,EAOnD,GANO3H,KACP2H,GADO3H,KACQ0G,aAAa,gBAAkB,OAAOtB,cACrD0O,EAFO9T,KAEK0G,aAAa,eAEzBknB,GADYnnB,EAAEsM,SAAWtM,EAAEuM,UACsB,QAAXrL,IAAqBmM,EACvB,MAAZrN,EAAEJ,QAAgC,IAAbI,EAAEJ,QACnBunB,EAC1B,OAAOnnB,EAAE1F,0BAEb,CAED,EAAEI,KAAKnB,MACR,WACE,IAAIinB,EAAGG,EAAgBre,EAAU2jB,EAAgBD,EAAehF,EAAMgG,EAAuB1G,EAAS+E,EAAeU,EAAuBM,EAAcO,EAAchH,EAAcsH,EAA2BpG,EAIjN,GAFAE,EAAOjC,EAAMiC,KAAM1e,EAAWyc,EAAMzc,SAAUge,EAAUvB,EAAMuB,QAASE,EAAIzB,EAAMyB,EAAGM,EAAoB/B,EAAM+B,kBAAmBH,EAAiB5B,EAAM4B,eAAgBf,EAAeb,EAAMa,aAAcoG,EAAgBjH,EAAMiH,cAAeC,EAAiBlH,EAAMkH,eAAgBF,EAAwBhH,EAAMgH,sBAAuBV,EAAgBtG,EAAMsG,cAAe6B,EAA4BnI,EAAMmI,0BAA2BN,EAAe7H,EAAM6H,aAAcI,EAAwBjI,EAAMiI,sBAAuBX,EAAetH,EAAMsH,aAEpgB,qBAAXe,QAAqC,OAAXA,QAAoC,MAAfA,OAAO/E,KAAe,CAC/E,GAAI+E,OAAOC,MACT,MAAM,IAAIjnB,MAAM,kEAElBgnB,OAAOC,MAAQtI,EACfqI,OAAOE,eAAc,SAAShc,EAASic,EAAiB3G,GACtD,IAAKtV,EAAQoY,YACX,OAAO/C,EAAeC,EAE1B,GACF,CAEA7B,EAAMnjB,MAAQ,WACZ,GAAIyC,OAAOmpB,cACT,MAAM,IAAIpnB,MAAM,sCAgDlB,OA9CA/B,OAAO1E,iBAAiB,YAAY,WAMlC,OALA6mB,EAAEzB,EAAMQ,oBAAoBzjB,SAAQ,SAASqpB,GAC3C,GAAI7E,EAAQ6E,EAAI,gBACd,OAAOa,EAAcb,EAEzB,IACO3E,EAAEzB,EAAMU,qBAAqB3jB,SAAQ,SAASqpB,GACnD,GAAI7E,EAAQ6E,EAAI,gBACd,OAAOa,EAAcb,EAEzB,GACF,IACA7iB,EAAShE,SAAUygB,EAAMU,oBAAqB,gBAAiBuG,GAC/D1jB,EAAShE,SAAUygB,EAAMU,oBAAqB,eAAgBuG,GAC9D1jB,EAAShE,SAAUygB,EAAMW,sBAAuB,gBAAiBsG,GACjE1jB,EAAShE,SAAUygB,EAAMW,sBAAuB,eAAgBsG,GAChE1jB,EAAShE,SAAUygB,EAAMC,kBAAmB,QAASkI,GACrD5kB,EAAShE,SAAUygB,EAAMC,kBAAmB,QAAS+G,GACrDzjB,EAAShE,SAAUygB,EAAMC,kBAAmB,QAASqG,GACrD/iB,EAAShE,SAAUygB,EAAMC,kBAAmB,QAASiH,GACrD3jB,EAAShE,SAAUygB,EAAMC,kBAAmB,QAAS4H,GACrDtkB,EAAShE,SAAUygB,EAAMC,kBAAmB,QAASqH,GACrD/jB,EAAShE,SAAUygB,EAAME,oBAAqB,QAASiI,GACvD5kB,EAAShE,SAAUygB,EAAME,oBAAqB,QAAS8G,GACvDzjB,EAAShE,SAAUygB,EAAME,oBAAqB,QAASoG,GACvD/iB,EAAShE,SAAUygB,EAAME,oBAAqB,QAASgH,GACvD3jB,EAAShE,SAAUygB,EAAME,oBAAqB,QAAS2H,GACvDtkB,EAAShE,SAAUygB,EAAMI,oBAAqB,SAAU4G,GACxDzjB,EAAShE,SAAUygB,EAAMI,oBAAqB,SAAUkG,GACxD/iB,EAAShE,SAAUygB,EAAMI,oBAAqB,SAAUyH,GACxDtkB,EAAShE,SAAUygB,EAAMK,mBAAoB,SAAU2G,GACvDzjB,EAAShE,SAAUygB,EAAMK,mBAAoB,SAAUiG,GACvD/iB,EAAShE,SAAUygB,EAAMK,mBAAoB,SAAUwH,GACvDtkB,EAAShE,SAAUygB,EAAMK,mBAAoB,UAAU,SAASpf,GAC9D,OAAOynB,YAAW,WAChB,OAAOxB,EAAejmB,EACvB,GAAG,GACN,IACAsC,EAAShE,SAAUygB,EAAMK,mBAAoB,YAAa6G,GAC1D3jB,EAAShE,SAAUygB,EAAMK,mBAAoB,gBAAiB4G,GAC9D1jB,EAAShE,SAAUygB,EAAMM,uBAAwB,QAAS6H,GAC1D5kB,EAAShE,SAAUygB,EAAMM,uBAAwB,QAAS0G,GAC1DzjB,EAAShE,SAAUygB,EAAMM,uBAAwB,QAASgG,GAC1D/iB,EAAShE,SAAUygB,EAAMM,uBAAwB,QAAS2H,GAC1D1oB,SAAS3E,iBAAiB,mBAAoBmnB,GAC9CxiB,SAAS3E,iBAAiB,mBAAoBimB,GACvCvhB,OAAOmpB,eAAgB,CAChC,EAEInpB,OAAO0gB,QAAUA,GAASiC,EAAK1iB,SAAU,yBAC3CygB,EAAMnjB,OAGT,EAAElB,KAAKnB,KACT,GAAEmB,KAAKnB,MAE0BiY,EAAOkW,QACvClW,EAAOkW,QAAU3I,OAEL,2BAAZ,KAAY,iCAEf,GAAErkB,KAAKnB,K","sources":["webpack://app/./node_modules/@hotwired/stimulus/dist/stimulus.js","webpack://app/./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js"],"sourcesContent":["/*\nStimulus 3.2.1\nCopyright © 2023 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n },\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach((eventListener) => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners)\n this.clearEventListenersForBinding(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0)\n this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions)\n .sort()\n .forEach((key) => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst defaultActionDescriptorFilters = {\n stop({ event, value }) {\n if (value)\n event.stopPropagation();\n return true;\n },\n prevent({ event, value }) {\n if (value)\n event.preventDefault();\n return true;\n },\n self({ event, value, element }) {\n if (value) {\n return element === event.target;\n }\n else {\n return true;\n }\n },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[2];\n let keyFilter = matches[3];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter,\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions\n .split(\":\")\n .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = this.keyFilter.split(\"+\");\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = [this.keyFilter];\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n return false;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { name, value } of Array.from(this.element.attributes)) {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n keyFilterDissatisfied(event, filters) {\n const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n select: () => \"change\",\n textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n const actionEvent = this.prepareActionEvent(event);\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const { element } = this.action;\n const { actionDescriptorFilters } = this.context.application;\n const { controller } = this.context;\n let passes = true;\n for (const [name, value] of Object.entries(this.eventOptions)) {\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({ name, value, event, element, controller });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n prepareActionEvent(event) {\n return Object.assign(event, { params: this.action.params });\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some((set) => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([_key, values]) => values.has(value))\n .map(([key, _values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n get selector() {\n return this._selector;\n }\n set selector(selector) {\n this._selector = selector;\n this.refresh();\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const { selector } = this;\n if (selector) {\n const matches = element.matches(selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n else {\n return false;\n }\n }\n matchElementsInTree(tree) {\n const { selector } = this;\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n else {\n return [];\n }\n }\n elementMatched(element) {\n const { selector } = this;\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n elementAttributeChanged(element, _attributeName) {\n const { selector } = this;\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n }\n else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map((attribute) => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach((token) => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach((token) => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString\n .trim()\n .split(/\\s+/)\n .filter((content) => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach((key) => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach((outletName) => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach((context) => context.refresh());\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n this.attributeObserverMap.forEach((observer) => observer.refresh());\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach((observer) => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n selectorMatched(element, _selector, { outletName }) {\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, { outletName }) {\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, { outletName }) {\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n }\n else {\n return false;\n }\n }\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap\n .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach((module) => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get schema() {\n return this.context.schema;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended },\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor),\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName),\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll(...outletNames) {\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector)\n return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...(this.element.matches(selector) ? [this.element] : []),\n ...this.queryElements(selector).filter(this.containsElement),\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope\n ? this\n : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n parseValueForElementAndIdentifier(element, identifier) {\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find((context) => context.element == element);\n }\n }\n proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n }\n else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({ identifier, controllerConstructor });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach((definition) => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map((context) => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise((resolve) => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n },\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n },\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n },\n },\n };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outletElement) => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n return outletElement;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n },\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n },\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n },\n },\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n },\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n },\n },\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n },\n },\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n },\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n },\n },\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition,\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const { controller, token, typeObject } = payload;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType)\n return typeFromObject;\n if (onlyDefault)\n return typeFromDefaultValue;\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n if (fullObject)\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const { controller, token, typeDefinition } = payload;\n const typeObject = { controller, token, typeObject: typeDefinition };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault)\n return typeObject.default;\n if (hasType) {\n const { type } = typeObject;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType)\n return defaultValuesByType[constantFromType];\n }\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const { token, typeDefinition } = payload;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default,\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\",\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n },\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [\n ClassPropertiesBlessing,\n TargetPropertiesBlessing,\n ValuePropertiesBlessing,\n OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n var context = this;\n\n (function() {\n (function() {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n\n }).call(this);\n }).call(context);\n\n var Rails = context.Rails;\n\n (function() {\n (function() {\n var nonce;\n\n nonce = null;\n\n Rails.loadCSPNonce = function() {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n\n Rails.cspNonce = function() {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n\n }).call(this);\n (function() {\n var expando, m;\n\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n Rails.matches = function(element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n\n expando = '_ujsData';\n\n Rails.getData = function(element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n\n Rails.setData = function(element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n\n Rails.$ = function(selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n\n }).call(this);\n (function() {\n var $, csrfParam, csrfToken;\n\n $ = Rails.$;\n\n csrfToken = Rails.csrfToken = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n\n csrfParam = Rails.csrfParam = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n\n Rails.CSRFProtection = function(xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n\n Rails.refreshCSRFTokens = function() {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if ((token != null) && (param != null)) {\n return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n return input.value = token;\n });\n }\n };\n\n }).call(this);\n (function() {\n var CustomEvent, fire, matches, preventDefault;\n\n matches = Rails.matches;\n\n CustomEvent = window.CustomEvent;\n\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function(event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function() {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n }\n return result;\n };\n }\n\n fire = Rails.fire = function(obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n\n Rails.stopEverything = function(e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n\n Rails.delegate = function(element, selector, eventType, handler) {\n return element.addEventListener(eventType, function(e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n\n }).call(this);\n (function() {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n\n Rails.ajax = function(options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function() {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n\n prepareOptions = function(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n\n createXHR = function(options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n\n processResponse = function(response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n\n Rails.href = function(element) {\n return element.href;\n };\n\n Rails.isCrossDomain = function(url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n } catch (error) {\n e = error;\n return true;\n }\n };\n\n }).call(this);\n (function() {\n var matches, toArray;\n\n matches = Rails.matches;\n\n toArray = function(e) {\n return Array.prototype.slice.call(e);\n };\n\n Rails.serializeElement = function(element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function(input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function(option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function(param) {\n if (param.name != null) {\n return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n } else {\n return param;\n }\n }).join('&');\n };\n\n Rails.formElements = function(form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function(el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n\n }).call(this);\n (function() {\n var allowAction, fire, stopEverything;\n\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n Rails.handleConfirm = function(e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n\n Rails.confirm = function(message, element) {\n return confirm(message);\n };\n\n allowAction = function(element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n\n }).call(this);\n (function() {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n Rails.handleDisabledElement = function(e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n\n Rails.enableElement = function(e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n\n Rails.disableElement = function(e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n\n disableLinkElement = function(element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n\n enableLinkElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n\n disableFormElements = function(form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n\n disableFormElement = function(element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n\n enableFormElements = function(form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n\n enableFormElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n\n isXhrRedirect = function(event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n\n }).call(this);\n (function() {\n var stopEverything;\n\n stopEverything = Rails.stopEverything;\n\n Rails.handleMethod = function(e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n\n }).call(this);\n (function() {\n var ajax, fire, getData, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n slice = [].slice;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n isRemote = function(element) {\n var value;\n value = element.getAttribute('data-remote');\n return (value != null) && value !== 'false';\n };\n\n Rails.handleRemote = function(e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function(xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: (withCredentials != null) && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n\n Rails.formSubmitButtonClick = function(e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n\n Rails.preventInsignificantClick = function(e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n\n }).call(this);\n (function() {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n\n Rails.start = function() {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function() {\n $(Rails.formEnableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n return setTimeout((function() {\n return disableElement(e);\n }), 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n\n }).call(this);\n }).call(this);\n\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);\n"],"names":["EventListener","constructor","eventTarget","eventName","eventOptions","this","unorderedBindings","Set","connect","addEventListener","disconnect","removeEventListener","bindingConnected","binding","add","bindingDisconnected","delete","handleEvent","event","extendedEvent","stopImmediatePropagation","Object","assign","immediatePropagationStopped","call","extendEvent","bindings","hasBindings","size","Array","from","sort","left","right","leftIndex","index","rightIndex","Dispatcher","application","eventListenerMaps","Map","started","start","eventListeners","forEach","eventListener","stop","values","reduce","listeners","map","concat","fetchEventListenerForBinding","clearEventListeners","clearEventListenersForBinding","handleError","error","message","detail","removeMappedEventListenerFor","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","fetchEventListener","get","createEventListener","set","parts","keys","key","push","join","defaultActionDescriptorFilters","value","stopPropagation","prevent","preventDefault","self","element","target","descriptorPattern","parseEventTarget","eventTargetName","window","document","camelize","replace","_","char","toUpperCase","namespaceCamelize","capitalize","charAt","slice","dasherize","toLowerCase","isSomething","object","undefined","hasProperty","property","prototype","hasOwnProperty","allModifiers","defaultEventNames","a","button","form","details","input","e","getAttribute","select","textarea","Error","typecast","JSON","parse","o_O","Binding","context","action","identifier","actionEvent","prepareActionEvent","willBeInvokedByEvent","applyEventModifiers","invokeWithEvent","method","controller","methodName","actionDescriptorFilters","passes","name","entries","filter","params","currentTarget","logDebugActivity","KeyboardEvent","shouldIgnoreKeyboardEvent","MouseEvent","shouldIgnoreMouseEvent","Element","contains","scope","containsElement","ElementObserver","delegate","mutationObserverInit","attributes","childList","subtree","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","refresh","pause","callback","takeRecords","matches","matchElementsInTree","has","removeElement","addElement","mutation","processMutation","type","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","elementAttributeChanged","matchElement","nodes","node","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","selector","hasAttribute","match","querySelectorAll","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","fetch","del","prune","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","_key","_values","SelectorObserver","_selector","matchesByElement","selectorMatchElement","selectorMatched","selectors","selectorUnmatched","_attributeName","matchedBefore","StringMapObserver","stringMap","attributeOldValue","knownAttributeNames","refreshAttribute","oldValue","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","attribute","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","unmatchedTokens","matchedTokens","refreshTokensForElement","tokensUnmatched","tokens","token","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","length","Math","max","zip","findIndex","previousToken","currentToken","content","tokenString","trim","split","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","clear","descriptor","tagName","getDefaultEventNameForElement","keyFilter","static","descriptorString","includes","options","test","parseActionDescriptorString","toString","eventFilter","filters","keyFilterDissatisfied","standardFilter","keyMappings","pattern","RegExp","meta","ctrl","alt","shift","modifier","metaKey","ctrlKey","altKey","shiftKey","forToken","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","invokeChangedCallback","writer","defaultValue","valueDescriptorNameMap","valueDescriptors","data","rawValue","rawOldValue","changedMethodName","changedMethod","reader","TypeError","descriptors","hasMethodName","TargetObserver","targetsByName","disconnectAllTargets","connectTarget","disconnectTarget","_a","targetConnected","targetDisconnected","readInheritableStaticArrayValues","propertyName","ancestors","getAncestorsForConstructor","definition","isArray","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","getPrototypeOf","reverse","OutletObserver","outletsByName","outletElementsByName","selectorObserverMap","attributeObserverMap","outletDefinitions","outletName","setupSelectorObserverForOutlet","setupAttributeObserverForOutlet","dependentContexts","observer","disconnectAllOutlets","stopSelectorObservers","stopAttributeObservers","outlet","getOutlet","connectOutlet","getOutletFromMap","disconnectOutlet","hasOutlet","hasOutletController","controllerAttribute","_element","getOutletNameFromOutletAttributeName","updateSelectorObserverForOutlet","outletConnected","outletDisconnected","selectorObserver","body","attributeNameForOutletName","outlets","getSelectorForOutletName","outletAttributeForScope","find","outletDependencies","dependencies","router","modules","module","controllerConstructor","dependentControllerIdentifiers","identifiers","contexts","getControllerForElementAndIdentifier","Context","functionName","bindingObserver","dispatcher","valueObserver","targetObserver","outletObserver","initialize","parentElement","invokeControllerMethod","args","bless","properties","shadowConstructor","extend","shadowProperties","getOwnKeys","shadowingDescriptor","getOwnPropertyDescriptor","getShadowedDescriptor","getShadowProperties","defineProperties","shadow","blessedProperties","blessing","getBlessedProperties","getOwnPropertySymbols","getOwnPropertyNames","extendWithReflect","extended","Reflect","construct","arguments","create","setPrototypeOf","b","testReflectExtension","Module","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","ClassMap","getDataKey","getAll","getAttributeName","getAttributeNameForKey","DataMap","setAttribute","removeAttribute","Guide","logger","warnedKeysByObject","warn","warnedKeys","attributeValueContainsToken","TargetSet","targetName","targetNames","findTarget","findLegacyTarget","findAll","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","targetAttributeForScope","getLegacySelectorForTargetName","deprecate","targetDescriptor","targetAttribute","revisedAttributeName","guide","OutletSet","controllerElement","outletNames","findOutlet","findAllOutlets","queryElements","matchesElement","Scope","classes","closest","controllerSelector","documentScope","isDocumentScope","documentElement","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","parseValueForElementAndIdentifier","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","loadDefinition","unloadIdentifier","connectModule","afterLoad","disconnectModule","getContextForElementAndIdentifier","proposeToConnectScopeForElementAndIdentifier","console","defaultSchema","enter","tab","esc","space","up","down","home","end","page_up","page_down","objectFromEntries","c","n","array","memo","k","v","Application","debug","logFormattedMessage","async","Promise","resolve","readyState","register","load","registerActionOption","head","rest","shouldLoad","unload","controllers","onerror","groupCollapsed","log","groupEnd","getOutletController","getControllerAndEnsureConnectedScope","outletController","parseValueDefinitionPair","typeDefinition","payload","typeFromObject","typeObject","hasType","hasDefault","default","fullObject","onlyType","onlyDefault","parseValueTypeConstant","typeFromDefaultValue","parseValueTypeDefault","parseValueTypeObject","typeFromConstant","parseValueTypeDefinition","constant","defaultValuesByType","constantFromType","defaultValueForDefinition","hasCustomDefaultValue","readers","writers","valueDescriptorForTokenAndTypeDefinition","Boolean","Number","String","boolean","number","string","writeJSON","stringify","Controller","_identifier","_application","dispatch","prefix","bubbles","cancelable","CustomEvent","dispatchEvent","blessings","classDefinition","targetDefinition","valueDefinitionPairs","propertyDescriptorMap","result","valueDefinitionPair","valueDescriptor","read","write","propertiesForValueDefinitionPair","outletDefinition","camelizedName","outletElement","propertiesForOutletDefinition","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","querySelector","cspNonce","m","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","getData","setData","$","csrfParam","csrfToken","CSRFProtection","xhr","setRequestHeader","refreshCSRFTokens","param","fire","evt","createEvent","initCustomEvent","Event","defaultPrevented","defineProperty","obj","stopEverything","eventType","handler","parentNode","AcceptHeaders","createXHR","prepareOptions","processResponse","text","html","xml","json","script","ajax","response","responseText","getResponseHeader","floor","status","success","statusText","complete","beforeSend","XMLHttpRequest","OPENED","send","url","location","href","indexOf","dataType","accept","done","open","crossDomain","withCredentials","onreadystatechange","DONE","parser","createElement","appendChild","removeChild","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","host","toArray","serializeElement","additionalParam","inputs","disabled","option","selected","checked","encodeURIComponent","formElements","el","allowAction","handleConfirm","confirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","innerHTML","originalText","handleMethod","formContent","link","style","display","click","isRemote","handleRemote","enctype","FormData","append","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","jQuery","rails","ajaxPrefilter","originalOptions","_rails_loaded","setTimeout","exports"],"sourceRoot":""}